Version 2.1.0-dev.8.0

Merge commit 'cf0a99a' into dev
diff --git a/.gitattributes b/.gitattributes
index 7501c16..b9cadf0 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -18,36 +18,18 @@
 tests/compiler/dart2js_extra/string_interpolation_test.dart -text
 tests/compiler/dart2js_extra/string_interpolation_dynamic_test.dart -text
 tests/compiler/dart2js_extra/literal_string_juxtaposition_test.dart -text
-tests/language/raw_string_test.dart -text
-tests/language/multiline_strings_test.dart -text
-tests/language/multiline_newline_cr.dart -text
-tests/language/multiline_newline_crlf.dart -text
-tests/language/multiline_newline_lf.dart -text
 tests/language_2/raw_string_test.dart -text
 tests/language_2/multiline_strings_test.dart -text
 tests/language_2/multiline_newline_cr.dart -text
 tests/language_2/multiline_newline_crlf.dart -text
 tests/language_2/multiline_newline_lf.dart -text
-tests/lib/convert/json_pretty_test.dart -text
 tests/lib_2/convert/json_pretty_test.dart -text
-tests/lib/mirrors/method_mirror_source_line_ending_test.dart -text
-tests/lib/mirrors/method_mirror_source_line_ending_cr.dart -text
-tests/lib/mirrors/method_mirror_source_line_ending_crlf.dart -text
-tests/lib/mirrors/method_mirror_source_line_ending_lf.dart -text
-tests/lib/mirrors/method_mirror_source_test.dart -text
-tests/lib/mirrors/method_mirror_source_other.dart -text
-tests/lib_2/mirrors/method_mirror_source_line_ending_test.dart -text
 tests/lib_2/mirrors/method_mirror_source_line_ending_cr.dart -text
 tests/lib_2/mirrors/method_mirror_source_line_ending_crlf.dart -text
 tests/lib_2/mirrors/method_mirror_source_line_ending_lf.dart -text
-tests/lib_2/mirrors/method_mirror_source_test.dart -text
-tests/lib_2/mirrors/method_mirror_source_other.dart -text
 tests/lib_2/mirrors/method_mirror_source_line_ending_test.dart -text
-tests/lib_2/mirrors/method_mirror_source_line_ending_cr.dart -text
-tests/lib_2/mirrors/method_mirror_source_line_ending_crlf.dart -text
-tests/lib_2/mirrors/method_mirror_source_line_ending_lf.dart -text
-tests/lib_2/mirrors/method_mirror_source_test.dart -text
 tests/lib_2/mirrors/method_mirror_source_other.dart -text
+tests/lib_2/mirrors/method_mirror_source_test.dart -text
 
 # Files to leave alone and not diff.
 *.png binary
diff --git a/.packages b/.packages
index 0b9c7ed..f9f0641 100644
--- a/.packages
+++ b/.packages
@@ -32,6 +32,7 @@
 dart_internal:pkg/dart_internal/lib
 dart_style:third_party/pkg_tested/dart_style/lib
 dartdoc:third_party/pkg/dartdoc/lib
+dartfix:pkg/dartfix/lib
 dev_compiler:pkg/dev_compiler/lib
 diagnostic:pkg/diagnostic/lib
 expect:pkg/expect/lib
diff --git a/.vpython b/.vpython
new file mode 100644
index 0000000..4e38fa5
--- /dev/null
+++ b/.vpython
@@ -0,0 +1,36 @@
+# This is a vpython "spec" file.
+#
+# It describes patterns for python wheel dependencies of the python scripts in
+# the chromium repo, particularly for dependencies that have compiled components
+# (since pure-python dependencies can be easily vendored into third_party).
+#
+# When vpython is invoked, it finds this file and builds a python VirtualEnv,
+# containing all of the dependencies described in this file, fetching them from
+# CIPD (the "Chrome Infrastructure Package Deployer" service). Unlike `pip`,
+# this never requires the end-user machine to have a working python extension
+# compilation environment. All of these packages are built using:
+#   https://chromium.googlesource.com/infra/infra/+/master/infra/tools/dockerbuild/
+#
+# All python scripts in the repo share this same spec, to avoid dependency
+# fragmentation.
+#
+# If you have depot_tools installed in your $PATH, you can invoke python scripts
+# in this repo by running them as you normally would run them, except
+# substituting `vpython` instead of `python` on the command line, e.g.:
+#   vpython path/to/script.py some --arguments
+#
+# Read more about `vpython` and how to modify this file here:
+#   https://chromium.googlesource.com/infra/infra/+/master/doc/users/vpython.md
+
+python_version: "2.7"
+
+# Used by:
+#   tools/third_party/gsutil
+wheel: <
+  name: "infra/python/wheels/google_compute_engine-py2_py3"
+  version: "version:2.6.2"
+>
+wheel: <
+  name: "infra/python/wheels/boto-py2_py3"
+  version: "version:2.48.0"
+>
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d3eaa12..5a55218 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,193 @@
+## 2.1.0-dev.8.0
+
+#### `dart:html`
+Fixed Service Workers and any Promise/Future API with a Dictionary parameter.
+
+APIs in dart:html (that take a Dictionary) will receive a Dart Map parameter.
+The Map parameter must be converted to a Dictionary before passing to the
+browser's API.  Before this change, any Promise/Future API with a
+Map/Dictionary parameter never called the Promise and didn't return a Dart
+Future - now it does.
+
+This caused a number of breaks especially in Service Workers (register, etc.).
+Here is a complete list of the fixed APIs:
+
+* BackgroundFetchManager
+  * `Future<BackgroundFetchRegistration> fetch(String id, Object requests, [Map options])`
+
+* CacheStorage
+  * `Future match(/*RequestInfo*/ request, [Map options])`
+
+* CanMakePayment
+  * `Future<List<Client>> matchAll([Map options])`
+
+* CookieStore
+  * `Future getAll([Map options])`
+  * `Future set(String name, String value, [Map options])`
+
+* CredentialsContainer
+  * `Future get([Map options])`
+  * `Future create([Map options])`
+
+* ImageCapture
+  * `Future setOptions(Map photoSettings)`
+
+* MediaCapabilities
+  * `Future<MediaCapabilitiesInfo> decodingInfo(Map configuration)`
+  * `Future<MediaCapabilitiesInfo> encodingInfo(Map configuration)`
+
+* MediaStreamTrack
+  * `Future applyConstraints([Map constraints])`
+
+* Navigator
+  * `Future requestKeyboardLock([List<String> keyCodes])`
+  * `Future requestMidiAccess([Map options])`
+  * `Future share([Map data])`
+
+* OffscreenCanvas
+  * `Future<Blob> convertToBlob([Map options])`
+
+* PaymentInstruments
+  * `Future set(String instrumentKey, Map details)`
+
+* Permissions
+  * `Future<PermissionStatus> query(Map permission)`
+  * `Future<PermissionStatus> request(Map permissions)`
+  * `Future<PermissionStatus> revoke(Map permission)`
+
+* PushManager
+  * `Future permissionState([Map options])`
+  * `Future<PushSubscription> subscribe([Map options])`
+
+* RtcPeerConnection
+  * **CHANGED**
+
+    ```dart
+    Future createAnswer([options_OR_successCallback,
+                         RtcPeerConnectionErrorCallback failureCallback,
+                         Map mediaConstraints])
+    ```
+
+    to
+
+    `Future<RtcSessionDescription> createAnswer([Map options])`
+
+  * **CHANGED**
+
+    ```dart
+    Future createOffer([options_OR_successCallback,
+                        RtcPeerConnectionErrorCallback failureCallback,
+                        Map rtcOfferOptions])
+    ```
+
+    to
+
+    `Future<RtcSessionDescription> createOffer([Map options])`
+
+  * **CHANGED**
+
+    ```dart
+    Future setLocalDescription(Map description, VoidCallback successCallback,
+                               [RtcPeerConnectionErrorCallback failureCallback])
+    ```
+
+    to
+
+    `Future setLocalDescription(Map description)`
+  * **CHANGED**
+
+    ```dart
+    Future setLocalDescription(Map description, VoidCallback successCallback,
+                               [RtcPeerConnectionErrorCallback failureCallback])
+    ```
+
+    to
+
+    `Future setRemoteDescription(Map description)`
+
+* ServiceWorkerContainer
+  * `Future<ServiceWorkerRegistration> register(String url, [Map options])`
+
+* ServiceWorkerRegistration
+  * `Future<List<Notification>> getNotifications([Map filter])`
+  * `Future showNotification(String title, [Map options])`
+
+* VRDevice
+  * `Future requestSession([Map options])`
+  * `Future supportsSession([Map options])`
+
+* VRSession
+  * `Future requestFrameOfReference(String type, [Map options])`
+
+* Window
+  * `Future fetch(/*RequestInfo*/ input, [Map init])`
+
+* WorkerGlobalScope
+  * `Future fetch(/*RequestInfo*/ input, [Map init])`
+
+In addition, exposed Service Worker "self" as a static getter named "instance".
+The instance is exposed on four different Service Worker classes and can throw
+a InstanceTypeError if the instance isn't of the class expected
+(WorkerGlobalScope.instance will always work and not throw):
+
+*   SharedWorkerGlobalScope.instance
+*   DedicatedWorkerGlobalScope.instance
+*   ServiceWorkerGlobalScope.instance
+*   WorkerGlobalScope.instance
+
+### Language
+
+*   Allow integer literals to be used in double contexts.
+    An integer literal used in a place where a double is required is now
+    interpreted as a double value. The numerical value of the literal needs
+    to be precisely representable as a double value.
+
+*   Integer literals compiled to JavaScript are now allowed to have any
+    value that can be exactly represented as a JavaScript `Number`.
+    They were previously limited to such numbers that were also representable
+    as signed 64-bit integers.
+
+### Core library changes
+
+*   Add `HashMap.fromEntries` and `LinkedHashmap.fromEntries` constructors.
+
+### Tool Changes
+
+#### Linter
+
+Bumped the linter to `0.1.70` which includes the following new lints:
+
+* `avoid_returning_null_for_void`
+* `sort_pub_dependencies`
+* `prefer_mixin`
+* `avoid_implementing_value_types`
+* `flutter_style_todos`
+* `avoid_void_async`
+* `prefer_void_to_null`
+
+and improvements:
+
+* fix NPE in `prefer_iterable_whereType`
+* improved message display for `await_only_futures`
+* performance improvements for `null_closures`
+* mixin support
+* update to `sort_constructors_first` to apply to all members
+* update `unnecessary_this` to work on field initializers
+* updated `unawaited_futures` to ignore assignments within cascades
+* improved handling of constant expressions with generic type params
+* NPE fix for `invariant_booleans`
+* improved docs for `unawaited_futures`
+* `unawaited_futures` updated to check cascades
+* relaxed `void_checks` (allowing `T Function()` to be assigned to `void Function()`)
+* fixed false positives in `lines_longer_than_80_chars`
+
+#### dart2js
+
+*   Breaking change: duplicate keys in a const map are not allowed and produce a
+    compile-time error.  Dart2js used to report this as a warning before. Note
+    this is already an error in dartanalyzer and DDC and will be an error in
+    other tools in the future as well.
+
 ## 2.1.0-dev.7.1
 
 * Cherry-pick 6b67cd784bbd13d5b6127cba44281a879fa7275c to dev
@@ -59,6 +249,8 @@
 
 ## 2.1.0-dev.5.0
 
+### Core library changes
+
 #### `dart:core`
 
 *   Exported `Future` and `Stream` from `dart:core`.
diff --git a/DEPS b/DEPS
index 06ad967..d3af193 100644
--- a/DEPS
+++ b/DEPS
@@ -36,8 +36,7 @@
   "chromium_git": "https://chromium.googlesource.com",
   "fuchsia_git": "https://fuchsia.googlesource.com",
 
-  "co19_rev": "9858ee7d79cf09b50d6b5bc13fb950ae5f357954",
-  "co19_2_rev": "9484b81650d8c5bedf72abc541960dd1c90b2329",
+  "co19_2_rev": "77825446f59893bb2b20f2e9517a4567e0371193",
 
   # As Flutter does, we pull buildtools, including the clang toolchain, from
   # Fuchsia. This revision should be kept up to date with the revision pulled
@@ -64,7 +63,7 @@
   "convert_tag": "2.0.2",
   "crypto_tag" : "2.0.6",
   "csslib_tag" : "0.14.4+1",
-  "dart2js_info_tag" : "0.5.6+4",
+  "dart2js_info_tag" : "0.5.13",
 
   # Note: updates to dart_style have to be coordinated carefully with
   # the infrastructure-team so that the internal formatter in
@@ -80,7 +79,7 @@
   # For more details, see https://github.com/dart-lang/sdk/issues/30164
   "dart_style_tag": "1.2.0",  # Please see the note above before updating.
 
-  "dartdoc_tag" : "v0.23.0",
+  "dartdoc_tag" : "v0.24.1",
   "file_rev": "515ed1dd48740ab14b625de1be464cb2bca4fefd",  # 5.0.6
   "fixnum_tag": "0.10.8",
   "func_rev": "25eec48146a58967d75330075ab376b3838b18a8",
@@ -96,7 +95,7 @@
   "intl_tag": "0.15.7",
   "jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
   "json_rpc_2_tag": "2.0.9",
-  "linter_tag": "0.1.68",
+  "linter_tag": "0.1.70",
   "logging_tag": "0.11.3+2",
   "markdown_tag": "2.0.2",
   "matcher_tag": "0.12.3",
@@ -134,7 +133,7 @@
   "test_process_tag": "1.0.3",
   "term_glyph_tag": "1.0.1",
   "test_reflective_loader_tag": "0.1.8",
-  "test_tag": "1.0.0",
+  "test_tag": "1.3.4",
   "tuple_tag": "v1.0.1",
   "typed_data_tag": "1.1.6",
   "unittest_rev": "2b8375bc98bb9dc81c539c91aaea6adce12e1072",
@@ -165,9 +164,15 @@
       ],
       "dep_type": "cipd",
   },
-
-  Var("dart_root") + "/tests/co19/src":
-      Var("dart_git") + "co19.git" + "@" + Var("co19_rev"),
+  Var("dart_root") + "/third_party/d8": {
+      "packages": [
+          {
+              "package": "dart/d8",
+              "version": "version:6.9.427.23+1",
+          },
+      ],
+      "dep_type": "cipd",
+  },
 
   Var("dart_root") + "/tests/co19_2/src":
       Var("chromium_git") + "/external/github.com/dart-lang/co19.git" +
@@ -382,20 +387,6 @@
 # without the runtime being available.
 hooks = [
   {
-    'name': 'd8_testing_binaries',
-    'pattern': '.',
-    'action': [
-      'download_from_google_storage',
-      '--no_auth',
-      '--no_resume',
-      '--bucket',
-      'dart-dependencies',
-      '--recursive',
-      '--directory',
-      Var('dart_root') + '/third_party/d8',
-    ],
-  },
-  {
     "name": "firefox_jsshell",
     "pattern": ".",
     "action": [
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 4d83619..57b7bfa 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -107,78 +107,6 @@
   return []
 
 
-def _CheckNewTests(input_api, output_api):
-  testsDirectories = [
-      #    Dart 1 tests              Dart 2.0 tests
-      # =================       ==========================
-      ("tests/language/",       "tests/language_2/"),
-      ("tests/corelib/",        "tests/corelib_2/"),
-      ("tests/lib/",            "tests/lib_2/"),
-      ("tests/html/",           "tests/lib_2/html/"),
-      ("tests/isolate/",        "tests/lib_2/isolate/")
-  ]
-
-  result = []
-  # Tuples of (new Dart 1 test path, expected Dart 2.0 test path)
-  dart1TestsAdded = []
-  # Tuples of (original Dart test path, expected Dart 2.0 test path)
-  dart2TestsExists = []
-  for f in input_api.AffectedTextFiles():
-    localpath = f.LocalPath()
-    if not(localpath.endswith('.status')):
-      for oldPath, newPath in testsDirectories:
-        if localpath.startswith(oldPath):
-          if f.Action() == 'A':
-            # Compute where the new test should live.
-            dart2TestPath = localpath.replace(oldPath, newPath)
-            dart1TestsAdded.append((localpath, dart2TestPath))
-          elif f.Action() == 'M':
-            # Find all modified tests in Dart 1.0
-            for oldPath, newPath in testsDirectories:
-              if localpath.find(oldPath) == 0:
-                dart2TestFilePathAbs = "%s" % \
-                    f.AbsoluteLocalPath().replace(oldPath, newPath)
-                if os.path.isfile(dart2TestFilePathAbs):
-                  #originalDart1Test.append(localpath)
-                  dart2TestsExists.append((localpath,
-                      localpath.replace(oldPath, newPath)))
-
-  # Does a Dart 2.0 test exist if so it must be changed too.
-  missingDart2TestsChange = []
-  for (dartTest, dart2Test) in dart2TestsExists:
-    foundDart2TestModified = False
-    for f in input_api.AffectedFiles():
-      if f.LocalPath() == dart2Test:
-        # Found corresponding Dart 2 test - great.
-        foundDart2TestModified = True
-        break
-    if not foundDart2TestModified:
-      # Add the tuple (dart 1 test path, Dart 2.0 test path)
-      missingDart2TestsChange.append((dartTest, dart2Test))
-
-  if missingDart2TestsChange:
-    errorList = []
-    for idx, (orginalTest, dart2Test) in enumerate(missingDart2TestsChange):
-      errorList.append(
-          '%s. Dart 1.0 test changed: %s\n%s. Only the Dart 2.0 test can '\
-          'change: %s\n' % (idx + 1, orginalTest, idx + 1, dart2Test))
-    result.append(output_api.PresubmitError(
-        'Error: Changed Dart 1.0 test detected - only 1.0 status files can '\
-        'change. Migrate test to Dart 2.0 tests:\n%s' % ''.join(errorList)))
-
-  if dart1TestsAdded:
-    errorList = []
-    for idx, (oldTestPath, newTestPath) in enumerate(dart1TestsAdded):
-      errorList.append('%s. New Dart 1.0  test: %s\n'
-          '%s. Should be Dart 2.0 test: %s\n' % \
-          (idx + 1, oldTestPath, idx + 1, newTestPath))
-    result.append(output_api.PresubmitError(
-        'Error: New Dart 1.0 test can not be added the test must be added '\
-        'as a Dart 2.0 test:\nFix tests:\n%s' % ''.join(errorList)))
-
-  return result
-
-
 def _CheckStatusFiles(input_api, output_api):
   local_root = input_api.change.RepositoryRoot()
   upstream = input_api.change._upstream
@@ -244,13 +172,11 @@
 def CheckChangeOnCommit(input_api, output_api):
   return (_CheckValidHostsInDEPS(input_api, output_api) +
           _CheckBuildStatus(input_api, output_api) +
-          _CheckNewTests(input_api, output_api) +
           _CheckDartFormat(input_api, output_api) +
           _CheckStatusFiles(input_api, output_api))
 
 
 def CheckChangeOnUpload(input_api, output_api):
   return (_CheckValidHostsInDEPS(input_api, output_api) +
-          _CheckNewTests(input_api, output_api) +
           _CheckDartFormat(input_api, output_api) +
           _CheckStatusFiles(input_api, output_api))
diff --git a/docs/language/dartLangSpec.tex b/docs/language/dartLangSpec.tex
index 3b8f01e..7e381b9 100644
--- a/docs/language/dartLangSpec.tex
+++ b/docs/language/dartLangSpec.tex
@@ -1,4 +1,5 @@
 \documentclass{article}
+\usepackage{xspace}
 \usepackage{epsfig}
 \usepackage{color}
 \usepackage{syntax}
@@ -61,6 +62,7 @@
 %   program such that it takes exports into account.
 % - Eliminate all references to checked and production mode, Dart 2 does
 %   not have modes.
+% - Integrate feature specification on noSuchMethod forwarders.
 %
 % 2.0
 % - Don't allow functions as assert test values.
@@ -604,8 +606,8 @@
 Isolates are created by spawning (\ref{spawningAnIsolate}).
 
 
-\section{Errors}
-\LMLabel{errors}
+\section{Errors and Warnings}
+\LMLabel{errorsAndWarnings}
 
 \LMHash{}
 This specification distinguishes between several kinds of errors.
@@ -647,6 +649,12 @@
 }
 
 \LMHash{}
+{\em Compile-time warnings} are situations that do not preclude execution,
+but which are unlikely to be intended,
+and likely to cause bugs or inconveniences.
+A compile-time warning must be reported by a Dart compiler before the associated code is executed.
+
+\LMHash{}
 When this specification says that a {\em run-time error} occurs,
 it means that a corresponding error object is thrown.
 When it says that a {\em dynamic type error} occurs,
@@ -697,11 +705,11 @@
 with the same type and modifiers.
 
 \LMHash{}
-An initialized variable declaration that contains one or more terms of the form
+An \syntax{<initializedVariableDeclaration>} that contains one or more terms of the form
 \syntax{<initializedIdentifier>}
-(\commentary{a declaration that declares two or more initialized variables})
+(\commentary{that is, a declaration that declares two or more initialized variables})
 is equivalent to multiple variable declarations declaring
-the same set of variable names in the same order,
+the same set of variable names, in the same order,
 with the same initialization, type, and modifiers.
 
 \commentary{
@@ -735,7 +743,8 @@
 }
 
 \LMHash{}
-An {\em initialized variable} is a variable whose declaring identifier is
+An {\em initializing variable declaration}
+is a variable declaration whose declaring identifier is
 immediately followed by `\code{=}' and an {\em initializing expression}.
 
 \LMHash{}
@@ -830,7 +839,8 @@
 A mutable instance variable introduces an instance setter into the immediately enclosing class.
 
 \LMHash{}
-Let $v$ be an initialized variable and let $e$ be the associated initializing expression.
+Let $v$ be variable declared in an initializing variable declaration,
+and let $e$ be the associated initializing expression.
 It is a compile-time error if the static type of $e$ is not assignable to the declared type of $v$.
 It is a compile-time error if a final instance variable whose declaration has an initializer expression
 is also initialized by a constructor, either by an initializing formal or an initializer list entry.
@@ -1497,7 +1507,7 @@
 \LMHash{}
 %% TODO(eernst): We need to use the concept of 'correctly overrides' rather than 'is a subtype of', e.g., to treat `void` correctly.
 It is a compile-time error if an instance method $m_1$ overrides an instance member $m_2$ and the type of $m_1$ is not a subtype of the type of $m_2$.
-It is a compile-time error if an instance method $m_1$ overrides an instance member $m_2$, the signature of $m_2$ explicitly specifies a default value for a formal parameter $p$, and the signature of $m_1$ implies a different default value for $p$.
+It is a compile-time warning if an instance method $m_1$ overrides an instance member $m_2$, the signature of $m_2$ explicitly specifies a default value for a formal parameter $p$, and the signature of $m_1$ implies a different default value for $p$.
 
 \commentary{
 A method declaration may conflict with other declarations
@@ -1603,7 +1613,7 @@
 It is a compile-time error to declare an optional parameter in an operator.
 
 \LMHash{}
-It is a compile-time error if the return type of a user-declared operator
+It is a compile-time warning if the return type of a user-declared operator
 \syntax{`[]='}
 is explicitly declared and not \VOID{}.
 
@@ -1629,6 +1639,298 @@
 }
 
 
+\subsubsection{The Method \code{noSuchMethod}}
+\LMLabel{theMethodNoSuchMethod}
+
+\LMHash{}
+The method \code{noSuchMethod} is invoked implicitly during execution
+in situations where one or more member lookups fail
+(\ref{ordinaryInvocation},
+\ref{getterAccessAndMethodExtraction},
+\ref{assignment}).
+
+\commentary{
+We may think of \code{noSuchMethod} as a backup
+which kicks in when an invocation of a member $m$ is attempted,
+but there is no member named $m$,
+or it exists,
+but the given invocation has an argument list shape
+that does not fit the declaration of $m$
+(passing fewer positional arguments than required or more than supported,
+or passing named arguments with names not declared by $m$).
+% The next sentence covers both function objects and instances of
+% a class with a method named \code{call}, because we would have a
+% compile-time error invoking \code{call} with a wrongly shaped argument
+% list unless the type is \DYNAMIC{} or \FUNCTION.
+This can only occur for an ordinary method invocation
+when the receiver has static type \DYNAMIC,
+or for a function invocation when
+the invoked function has static type \FUNCTION{} or \DYNAMIC.
+%
+The method \code{noSuchMethod} can also be invoked in other ways, e.g.,
+it can be called explicitly like any other method,
+and it can be invoked from a \code{noSuchMethod} forwarder,
+as explained below.
+}
+
+\LMHash{}
+We say that a class $C$ {\em has a non-trivial \code{noSuchMethod}}
+if $C$ has a concrete member named \code{noSuchMethod}
+which is distinct from the one declared in the built-in class \code{Object}.
+
+\commentary{
+Note that it must be a method that accepts one positional argument,
+in order to correctly override \code{noSuchMethod} in \code{Object}.
+For instance, it can have signature
+\code{noSuchMethod(Invocation i)} or
+\code{noSuchMethod(Object i, [String s])},
+but not
+\code{noSuchMethod(Invocation i, String s)}.
+This implies that the situation where \code{noSuchMethod} is invoked
+(explicitly or implicitly)
+with one actual argument cannot fail for the reason that
+``there is no such method'',
+such that we would enter an infinite loop trying to invoke \code{noSuchMethod}.
+It \emph{is} possible, however, to encounter a dynamic error
+during an invocation of \code{noSuchMethod}
+because the actual argument fails to satisfy a type check,
+but that situation will give rise to a dynamic type error
+rather than a repeated attempt to invoke \code{noSuchMethod}
+(\ref{bindingActualsToFormals}).
+Here is an example where a dynamic type error occurs because
+an attempt is made to pass an \code{Invocation}
+where only the null object is accepted:
+}
+
+\begin{dartCode}
+\CLASS{} A \{
+  noSuchMethod(\COVARIANT{} Null n) => n;
+\}
+\\
+\VOID{} main() \{
+  \DYNAMIC{} d = A();
+  d.foo(42); // Dynamic type error when invoking noSuchMethod.
+\}
+\end{dartCode}
+
+\LMHash{}
+Let $C$ be a concrete class and
+let $L$ be the library that contains the declaration of $C$.
+The member $m$ is {\em noSuchMethod forwarded in} $C$ if{}f
+one of the following is true:
+
+\begin{itemize}
+\item $C$ has a non-trivial \code{noSuchMethod},
+  the interface of $C$ contains $m$,
+  and $C$ has no concrete declaration of $m$
+  (\commentary{that is, no member $m$ is declared or inherited by $C$}).
+\item
+  % Inaccessible private methods are not present in the interface of a class,
+  % so we need to find a class that can access $m$.
+  There exists a direct or indirect superinterface
+  $D$ of $C$ which is declared in the library $L_2$,
+  the interface of $D$ contains $m$
+  (\commentary{which implies that $m$ is accessible to $L_2$}),
+  $m$ is inaccessible to $L$,
+  and no superclass of $C$ has
+  a concrete declaration of $m$ accessible to $L_2$.
+\end{itemize}
+
+\LMHash{}
+For a concrete class $C$, a {\em \code{noSuchMethod} forwarder}
+is implicitly induced for each member $m$
+which is \code{noSuchMethod} forwarded.
+This is a concrete member of $C$
+with the signature taken from the interface of $C$ respectively $D$ above,
+and with the same default value for each optional parameter.
+It can be invoked in an ordinary invocation and in a superinvocation,
+and when $m$ is a method it can be closurized
+(\ref{ordinaryMemberClosurization})
+using a property extraction
+(\ref{propertyExtraction}).
+
+\commentary{
+This implies that a \code{noSuchMethod} forwarder has the same
+properties as an explicitly declared concrete member,
+except of course that a \code{noSuchMethod} forwarder
+does not prevent itself from being induced.
+We do not specify the body of a \code{noSuchMethod} forwarder,
+but it will invoke \code{noSuchMethod},
+and we specify the dynamic semantics of executing it below.
+}
+
+\commentary{
+At the beginning of this section we mentioned that implicit invocations
+of \code{noSuchMethod} can only occur
+with a receiver of static type \DYNAMIC{}
+or a function of static type \DYNAMIC{} or \FUNCTION{}.
+With a \code{noSuchMethod} forwarder,
+\code{noSuchMethod} can also be invoked
+on a receiver whose static type is not \DYNAMIC{}.
+No similar situation exists for functions,
+because it is impossible to induce a \code{noSuchMethod} forwarder
+into the class of a function object.
+}
+
+\commentary{
+For a concrete class $C$,
+we may think of a non-trivial \code{noSuchMethod}
+(declared in or inherited by $C$)
+as a request for ``automatic implementation'' of all unimplemented members
+in the interface of $C$ as \code{noSuchMethod} forwarders.
+Similarly, there is an implicit request for
+automatic implementation of all unimplemented
+inaccessible members of any concrete class,
+whether or not there is a non-trivial \code{noSuchMethod}.
+Note that the latter cannot be written explicitly in Dart,
+because their names are inaccessible;
+but the language can still specify that they are induced implicitly,
+because compilers control the treatment of private names.
+}
+
+\LMHash{}
+It is a compile-time error if a concrete class $C$ has
+a \code{noSuchMethod} forwarded method signature $S$
+for a method named $m$,
+and a superclass of $C$ has a concrete declaration of $m$
+which is not a \code{noSuchMethod} forwarder.
+
+\commentary{
+This can only happen if that concrete declaration does not
+correctly override $S$. Consider the following example:
+}
+
+\begin{dartCode}
+\CLASS{} A \{
+  foo(int i) => \NULL;
+\}
+
+\ABSTRACT{} \CLASS{} B \{
+  foo([int i]);
+\}
+
+\CLASS{} C \EXTENDS{} A \IMPLEMENTS{} B \{
+  noSuchMethod(Invocation i) => ...;
+  // Error: Forwarder would override `A.foo`.
+\}
+\end{dartCode}
+
+\commentary{
+In this example,
+an implementation with signature \code{foo(int i)} is inherited by \code{C},
+and the superinterface \code{B} declares
+the signature \code{foo([int i])}.
+This is a compile-time error because \code{C} does not have
+a method implementation with signature \code{foo([int])}.
+We do not wish to implicitly induce
+a \code{noSuchMethod} forwarder with signature \code{foo([int])}
+because it would override \code{A.foo},
+and that is likely to be highly confusing for developers.
+%
+In particular, it would cause an invocation like \code{C().foo(42)}
+to invoke \code{noSuchMethod},
+even though that is an invocation which is correct for
+the declaration of \code{foo} in \code{A}.
+%
+Hence, we require developers to explicitly resolve the conflict
+whenever an implicitly induced \code{noSuchMethod} forwarder
+would override an explicitly declared inherited implementation.
+%
+It is no problem, however,
+to let a \code{noSuchMethod} forwarder override
+another \code{noSuchMethod} forwarder,
+and hence there is no error in that situation.
+}
+
+\LMHash{}
+For the dynamic semantics,
+assume that a class $C$ has an implicitly induced
+\code{noSuchMethod} forwarder named $m$,
+with formal type parameters
+\code{$X_1,\ \ldots,\ X_r$},
+positional formal parameters
+\code{$a1,\ \ldots,\ a_k$}
+(\commentary{some of which may be optional when $m = 0$}),
+and named formal parameters with names
+\code{$x_1,\ \ldots,\ x_m$}
+(\commentary{with default values as mentioned above}).
+
+\commentary{
+For this purpose we need not distinguish between
+a signature that has optional positional parameters and
+a signature that has named parameters,
+because the former is covered by $m = 0$.
+}
+
+\LMHash{}
+The execution of the body of $m$ creates
+an instance $im$ of the predefined class \code{Invocation}
+such that:
+
+\begin{itemize}
+\item \code{$im$.isMethod} evaluates to \code{\TRUE{}} if{}f $m$ is a method.
+\item \code{$im$.isGetter} evaluates to \code{\TRUE{}} if{}f $m$ is a getter.
+\item \code{$im$.isSetter} evaluates to \code{\TRUE{}} if{}f $m$ is a setter.
+\item \code{$im$.memberName} evaluates to the symbol \code{m}.
+\item \code{$im$.positionalArguments} evaluates to an unmodifiable list
+  with the same values as the list resulting from evaluation of
+  \code{<Object>[$a_1, \ldots,\ a_k$]}.
+\item \code{$im$.namedArguments} evaluates to an unmodifiable map
+  with the same keys and values as the map resulting from evaluation of
+
+  \code{<Symbol, Object>\{$\#x_1$: $x_1, \ldots,\ \#x_m$: $x_m$\}}.
+\item \code{$im$.typeArguments} evaluates to an unmodifiable list
+  with the same values as the list resulting from evaluation of
+  \code{<Type>[$X_1, \ldots,\ X_r$]}.
+\end{itemize}
+
+\LMHash{}
+Next, \code{noSuchMethod} is invoked with $i$ as the actual argument,
+and the result obtained from there is returned by the execution of $m$.
+
+\commentary{
+This is an ordinary method invocation of \code{noSuchMethod}
+(\ref{ordinaryInvocation}).
+That is, a \code{noSuchMethod} forwarder in a class $C$ can invoke
+an implementation of \code{noSuchMethod} that is declared in
+a subclass of $C$.
+
+Dynamic type checks on the actual arguments passed to $m$
+are performed in the same way as for an invocation of an
+explicitly declared method.
+In particular, an actual argument passed to a covariant parameter
+will be checked dynamically.
+
+Also, like other ordinary method invocations,
+it is a dynamic type error if the result returned by
+a \code{noSuchMethod} forwarder has a type which is not a subtype
+of the return type of the forwarder.
+
+One special case to be aware of is where a forwarder is torn off
+and then invoked with an actual argument list which does not match
+the formal parameter list.
+In that situation we will get an invocation of
+\code{Object.noSuchMethod}
+rather than the \code{noSuchMethod} in the original receiver,
+because this is an invocation of a function object
+(and they do not override \code{noSuchMethod}):
+}
+
+\begin{dartCode}
+\CLASS{} A \{
+  noSuchMethod(Invocation i) => \NULL;
+  \VOID{} foo();
+\}
+\\
+\VOID{} main() \{
+  A a = A();
+  \FUNCTION{} f = a.foo;
+  // Invokes `Object.noSuchMethod`, which throws.
+  f(42);
+\}
+\end{dartCode}
+
+
 \subsection{Getters}
 \LMLabel{getters}
 
@@ -1699,10 +2001,12 @@
 }
 
 \LMHash{}
-It is a compile-time error if a setter declares a return type other than \VOID{}.
+It is a compile-time warning if a setter declares a return type other than \VOID{}.
 It is a compile-time error if a setter $m_1$ overrides (\ref{inheritanceAndOverriding}) a setter $m_2$
 and the parameter type of $m_1$ is not a supertype of the parameter type of $m_2$.
-It is a compile-time error if a class has a setter named $v=$ with argument type $T$ and a getter named $v$ with return type $S$,
+It is a compile-time warning if a class has
+a setter named $v=$ with argument type $T$ and
+a getter named $v$ with return type $S$,
 and $S$ may not be assigned to $T$.
 
 \commentary{
@@ -1747,7 +2051,11 @@
 }
 
 \LMHash{}
-%% TODO(eernst): Revise this to use the concepts of interfaces, and do not say that an abstract member is inherited by a class.
+%% TODO(eernst): This is semi-redundant: We should define what it means for
+%% a class to be 'fully implemented' and require once and for all that it is
+%% a compile-time error if a concrete class is not fully implemented. That
+%% is very nearly what line 2706++ already says. This will then be commentary,
+%% just focusing on the case where a concrete $C$ _declares_ an abstract $m$.
 It is a compile-time error if an abstract member $m$ is declared or inherited in a concrete class $C$ unless:
 \begin{itemize}
 \item $m$ overrides a concrete member, or
@@ -2060,13 +2368,17 @@
 It is a compile-time error if $k$ includes an initializing formal for a final variable $f$ whose declaration includes an initialization expression.
 
 \LMHash{}
-Each final instance variable $f$ declared in the immediately enclosing class must have an initializer in $k$'s initializer list unless it has already been initialized by one of the following means:
+Let $f$ be a final instance variable declared in
+the immediately enclosing class.
+A compile-time error occurs unless $f$ is initialized
+by one of the following means:
 \begin{itemize}
-\item Initialization at the declaration of $f$.
-\item Initialization by means of an initializing formal of $k$.
+\item $f$ is declared by an initializing variable declaration.
+\item $f$ is initialized by means of an initializing formal of $k$.
+\item $f$ has an initializer in $k$'s initializer list.
 \end{itemize}
 
-or a compile-time error occurs.
+\LMHash{}
 It is a compile-time error if $k$'s initializer list contains an initializer for a variable that is not an instance variable declared in the immediately surrounding class.
 
 \commentary{
@@ -2787,7 +3099,7 @@
 \item Rule \ref{typeSigAssignable} applies to interfaces as well as classes
   (\ref{interfaceInheritanceAndOverriding}).
 \item It is an error if a concrete class does not have an implementation
-  for a method in any of its superinterfaces
+  for a method in its interface
   unless it has a concrete \code{noSuchMethod} method
   (\ref{superinterfaces})
   distinct from the one in class \code{Object}.
@@ -2867,11 +3179,6 @@
 However, if a class does explicitly declare a member that conflicts with its superinterface, this always yields an error.
 }
 
-% TODO(eernst): When integrating nosuchmethod-forwarders.md, delete this and make sure that we mention the
-% case where there is no `noSuchMethod` and we still generate forwarders.
-% Consider: It is a compile-time error if an imported superinterface of a class $C$ declares private members.
-% Should we ignore unimplemented private members?
-
 
 \subsection{Class Member Conflicts}
 \LMLabel{classMemberConflicts}
@@ -3681,6 +3988,13 @@
 \end{itemize}
 
 \commentary{
+It is \emph{not} an error if a super-bounded type occurs
+as an immediate subterm of an \EXTENDS{} clause
+that specifies the bound of a type variable
+(\ref{generics}).
+}
+
+\commentary{
 Types of members from super-bounded class types are computed using the same
 rules as types of members from other types. Types of function applications
 involving super-bounded types are computed using the same rules as types of
@@ -4185,6 +4499,8 @@
 Attempting to instantiate \code{Null} causes a run-time error.
 It is a compile-time error for a class to extend, mix in or implement \code{Null}.
 The \code{Null} class extends the \code{Object} class and declares no methods except those also declared by \code{Object}.
+\commentary{As such, it does not override the \code{==} operator inherited
+from the \code{Object} class.}
 
 \LMHash{}
 The static type of \NULL{} is the \code{Null} type.
@@ -4294,6 +4610,8 @@
 It is a compile-time error for a class to extend, mix in or implement \code{double}.
 It is a compile-time error for any class other than \code{int} and \code{double} to extend, mix in or implement \code{num}.
 
+\LMHash{}
+The instances of \code{int} and \code{double} all override the \code{==} operator inherited from the \code{Object} class.
 
 \subsection{Booleans}
 \LMLabel{booleans}
@@ -4313,6 +4631,10 @@
 It is a compile-time error for a class to extend, mix in or implement \code{bool}.
 
 \LMHash{}
+The \code{bool} class does not override the \code{==} operator inherited from
+the \code{Object} class.
+
+\LMHash{}
 Invoking the getter \code{runtimeType} on a boolean value returns the \code{Type} object that is the value of the expression \code{bool}.
 The static type of a boolean literal is \code{bool}.
 
@@ -4500,6 +4822,8 @@
 \LMHash{}
 All string literals evaluate to instances of the built-in class \code{String}.
 It is a compile-time error for a class to extend, mix in or implement \code{String}.
+The \code{String} class overrides the \code{==} operator inherited from
+the \code{Object} class.
 The static type of a string literal is \code{String}.
 
 
@@ -4587,6 +4911,10 @@
 and no other symbol literals evaluate to that \code{Symbol} instance
 or to a \code{Symbol} instance that is \code{==} to that instance.
 
+\LMHash{}
+The objects created by symbol literals all override
+the \code{==} operator inherited from the \code{Object} class.
+
 \rationale{
 One may well ask what is the motivation for introducing literal symbols? In some languages, symbols are canonicalized whereas strings are not.
 However literal strings are already canonicalized in Dart.
@@ -4679,6 +5007,10 @@
 The result of the evaluation is $a$.
 \end{itemize}
 
+\LMHash{}
+The objects created by list literals do not override
+the \code{==} operator inherited from the \code{Object} class.
+
 \commentary{
 Note that this document does not specify an order in which the elements are set.
 This allows for parallel assignments into the list if an implementation so desires.
@@ -4743,8 +5075,10 @@
 It is a compile-time error if the key of an entry in a constant map literal is an instance of
 a class that has a concrete operator \syntax{`=='} declaration different from the one in \code{Object},
 unless the key is a string or an integer,
-or the key expression is a literal symbol or
-an invocation of a constant constructor of class \code{Symbol}.
+or the key expression evaluates to an instance of the built-in
+class \code{Symbol} which was originally obtained by evaluation of a
+literal symbol or
+a constant invocation of a constructor of the \code{Symbol} class.
 % Needs 'free': `const <int, Function(Function<X>(X))>{}` is OK, but
 % `X` is not free.
 It is a compile-time error if a type argument of a constant map literal
@@ -4793,6 +5127,10 @@
 \end{itemize}
 
 \LMHash{}
+The objects created by map literals do not override
+the \code{==} operator inherited from the \code{Object} class.
+
+\LMHash{}
 A run-time map literal
 \code{\{$k_1:e_1, \ldots, k_n:e_n$\}}
 is evaluated as
@@ -5532,7 +5870,7 @@
 It is possible for a running isolate to exhaust its memory or stack, resulting in a run-time error that cannot be effectively caught, which will force the isolate to be suspended.
 
 \commentary{
-As discussed in section \ref{errors}, the handling of a suspended isolate is the responsibility of the embedder.
+As discussed in section \ref{errorsAndWarnings}, the handling of a suspended isolate is the responsibility of the embedder.
 }
 
 
@@ -6177,6 +6515,8 @@
 and its result is then the result of evaluating $i$.
 
 \commentary{
+The situation where \code{noSuchMethod} is invoked can only arise
+when the static type of $e_f$ is \DYNAMIC{}.
 The run-time semantics ensures that
 a function invocation may amount to an invocation of the instance method \CALL{}.
 However, an interface type with a method named \CALL{} is not itself a subtype of any function type.
@@ -6211,6 +6551,9 @@
 (\ref{actualTypeOfADeclaration})
 corresponding to the signature in the function declaration $f$,
 using the current bindings of type variables, if any.
+If $f$ denotes a static method or top-level function,
+the corresponding class does not override the \code{==} operator
+inherited from the \code{Object} class.
 %
 An invocation of $o$ with a given argument list will bind actuals to formals
 in the same way as an invocation of $f$
@@ -6496,16 +6839,9 @@
 and the result of this invocation is the result of evaluating $i$.
 
 \commentary{
+The situation where \code{noSuchMethod} is invoked can only arise
+when the static type of $e$ is \DYNAMIC{}.
 Notice that the wording avoids re-evaluating the receiver $o$ and the arguments $a_i$.
-Also note that there is no need to specify how to handle an invocation of \code{noSuchMethod}
-that fails because ``there is no such method'':
-It is not possible to override the \code{noSuchMethod} of class \code{Object}
-in such a way that it cannot be invoked with one argument of type \code{Invocation}.
-It can fail with a dynamic type error if the parameter type is overridden with a
-proper subtype of \code{Invocation},
-but that does not give rise to yet another invocation of \code{noSuchMethod}.
-% We might want to mention `noSuchMethod(covariant Null n) => n;`, but
-% `covariant` is not yet specified, and it is not a big problem to omit it.
 }
 
 
@@ -6739,14 +7075,10 @@
 Then the method \code{noSuchMethod()} is looked up in $o$ and invoked with argument $im$,
 and the result of this invocation is the result of evaluating $i$.
 
-% TODO(eernst): We have removed the description of how to invoke noSuchMethod
-% in Object if the overriding noSuchMethod does not accept one argument of
-% type Invocation, because that will be a compile-time error soon. At this
-% point we just keep a commentary ready to say that:
-%
-%% \commentary {
-%% It is a compile-time error to override the \code{noSuchMethod} of class \code{Object} in such a way that it cannot be invoked with one positional argument of type \code{Invocation}.
-%% }
+\commentary {
+The situation where \code{noSuchMethod} is invoked can only arise
+when the static type of $e$ is \DYNAMIC{}.
+}
 
 \LMHash{}
 It is a compile-time error if $m$ is a member of class \code{Object} and $e$ is either a prefix object (\ref{imports}) or a constant type literal.
@@ -6800,32 +7132,11 @@
 The body of $f$ is executed with \THIS{} bound to the current value of \THIS{}.
 The value of $i$ is the result returned by the call to the getter function.
 
-\LMHash{}
-If the getter lookup has failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that:
-\begin{itemize}
-\item \code{$im$.isGetter} evaluates to \code{\TRUE{}}.
-\item \code{$im$.memberName} evaluates to the symbol \code{m}.
-\item \code{$im$.positionalArguments} evaluates to an empty, unmodifiable instance of
-\code{List<Object>}.
-\item \code{$im$.namedArguments} evaluates to an empty, unmodifiable instance of
-
-\code{Map<Symbol, Object>}.
-\item \code{$im$.typeArguments} evaluates to an empty, unmodifiable instance of
-
-\code{List<Type>}.
-\end{itemize}
-
-\LMHash{}
-Then the method \code{noSuchMethod()} is looked up in $S_{dynamic}$ and invoked with argument $im$, and the result of this invocation is the result of evaluating $i$.
-
-% TODO(eernst): We have removed the description of how to invoke noSuchMethod
-% in Object if the overriding noSuchMethod does not accept one argument of
-% type Invocation, because that will be a compile-time error soon. At this
-% point we just keep a commentary ready to say that:
-%
-%% \commentary {
-%% It is a compile-time error to override the \code{noSuchMethod} of class \code{Object} in such a way that it cannot be invoked with one positional argument of type \code{Invocation}.
-%% }
+\commentary{
+The getter lookup will not fail, because it is a compile-time error to have
+a super property extraction of a member $m$ when the superclass $S_{dynamic}$
+does not have a concrete member named $m$.
+}
 
 \LMHash{}
 Let $S_{static}$ be the superclass of the immediately enclosing class.
@@ -7080,6 +7391,11 @@
 
 \LMHash{}
 \Case{\code{$v$ = $e$}}
+%% TODO(eernst): This _only_ works if we assume that `v = e` has already
+%% been expanded to `this.v = e` "when that's the right thing to do".
+%% Otherwise `denotes` below cannot be interpreted as the result of a lookup,
+%% and we have no precise alternative which would work. We might be able
+%% to repair this by giving a definition of `denotes` somewhere.
 Consider an assignment $a$ of the form \code{$v$ = $e$},
 where $v$ is an identifier or an identifier qualified by an import prefix,
 and $v$ denotes a variable (\ref{variables}) or \code{$v$=} denotes a setter
@@ -7109,8 +7425,8 @@
 If no error occurs, the value of the assignment expression is $o$.
 
 \commentary{
-If $v$ is a final variable, a compile-time error has occurred,
-but a type check may cause a dynamic error.
+If $v$ is a final variable, a compile-time error has occurred and execution is unspecified.
+But a program with no compile-time errors may incur a dynamic type error.
 }
 
 % add local functions per bug 23218
@@ -7147,8 +7463,8 @@
 \LMHash{}
 \Case{\code{$e_1$?.$v$ = $e_2$}}
 Consider an assignment $a$ of the form \code{$e_1$?.$v$ = $e_2$}.
-Let $S$ be the static type of the formal parameter of the setter \code{$v$=}.
-It is a compile-time error if the static type of $e_2$ may not be assigned to $S$.
+Exactly the same compile-time errors that would be caused by
+\code{$e_1$.$v$ = $e_2$} are also generated in the case of $a$.
 The static type of $a$ is the static type of $e_2$.
 
 \LMHash{}
@@ -7164,9 +7480,14 @@
 \LMHash{}
 \Case{\code{$e_1$.$v$ = $e_2$}}
 Consider an assignment $a$ of the form \code{$e_1$.$v$ = $e_2$}.
-Let $S$ be the static type of the formal parameter of the setter \code{$v$=}.
-It is a compile-time error if the static type of $e_2$ may not be assigned to $S$.
-The static type of $a$ is the static type of $e_2$.
+Let $T$ be the static type of $e_1$.
+If $T$ is \DYNAMIC{}, no further checks are performed.
+Otherwise, it is a compile-time error unless
+$T$ has an accessible instance setter named \code{$v$=}.
+It is a compile-time error unless the static type of $e_2$
+may be assigned to the declared type of the formal parameter of said setter.
+Whether or not $T$ is \DYNAMIC{},
+the static type of $a$ is the static type of $e_2$.
 
 \LMHash{}
 Evaluation of an assignment of the form \code{$e_1$.$v$ = $e_2$}
@@ -7174,10 +7495,10 @@
 The expression $e_1$ is evaluated to an object $o_1$.
 Then, the expression $e_2$ is evaluated to an object $o_2$.
 Then, the setter \code{$v$=} is looked up (\ref{lookup}) in $o_1$ with respect to the current library.
-%% TODO(eernst): This is metaclass stuff, should be deleted.
-If $o_1$ is an instance of \code{Type} but $e_1$ is not a constant type literal,
-then if \code{$v$=} is a setter that forwards (\ref{functionDeclarations}) to a static setter, setter lookup fails.
-Otherwise, the body of \code{$v$=} is executed with its formal parameter bound to $o_2$ and \THIS{} bound to $o_1$.
+It is a dynamic type error if the dynamic type of $o_2$
+is not a subtype of the actual parameter type of said setter
+(\ref{actualTypeOfADeclaration}).
+Otherwise, the body of the setter is executed with its formal parameter bound to $o_2$ and \THIS{} bound to $o_1$.
 
 \LMHash{}
 If the setter lookup has failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that:
@@ -7197,36 +7518,21 @@
 \LMHash{}
 Then the method \code{noSuchMethod()} is looked up in $o_1$ and invoked with argument $im$.
 
-% TODO(eernst): We have removed the description of how to invoke noSuchMethod
-% in Object if the overriding noSuchMethod does not accept one argument of
-% type Invocation, because that will be a compile-time error soon. At this
-% point we just keep a commentary ready to say that:
-%
-%% \commentary {
-%% It is a compile-time error to override the \code{noSuchMethod} of class \code{Object} in such a way that it cannot be invoked with one positional argument of type \code{Invocation}.
-%% }
+\commentary{
+The situation where \code{noSuchMethod} is invoked can only arise
+when the static type of $e_1$ is \DYNAMIC{}.
+}
 
 \LMHash{}
 The value of the assignment expression is $o_2$ irrespective of whether setter lookup has failed or succeeded.
 
 \LMHash{}
-It is a dynamic type error if $o_2$ is not the null object (\ref{null})
-and the dynamic type of $o_2$ is
-not a subtype of the actual type of $e_1.v$
-(\ref{actualTypeOfADeclaration}).
-
-\LMHash{}
-Let $T$ be the static type of $e_1$.
-It is a compile-time error if $T$ does not have an accessible instance setter named \code{$v$=}
-%% TODO(eernst): This is metaclass stuff, should be deleted.
-unless $T$ is \code{Type}, $e_1$ is a constant type literal and the class corresponding to $e_1$ has a static setter named \code{$v$=}.
-
-\LMHash{}
 \Case{\code{\SUPER.$v$ = $e$}}
 Consider an assignment $a$ of the form \code{\SUPER.$v$ = $e$}.
 Let $S_{static}$ be the superclass of the immediately enclosing class.
-It is a compile-time error if $S_{static}$ does not have an accessible instance setter named \code{$v$=}.
-Otherwise, it is a compile-time error if the static type of $e$ may not be assigned to the static type of the formal parameter of the setter \code{$v$=}.
+It is a compile-time error if $S_{static}$ does not have a concrete accessible instance setter named \code{$v$=}.
+Otherwise, it is a compile-time error if the static type of $e$
+may not be assigned to the static type of the formal parameter of said setter.
 The static type of $a$ is the static type of $e$.
 
 \LMHash{}
@@ -7239,42 +7545,34 @@
 The body of \code{$v$=} is executed with its formal parameter bound to $o$
 and \THIS{} bound to the current value of \THIS{}.
 
-\LMHash{}
-If the setter lookup has failed, then a new instance $im$ of the predefined class \code{Invocation} is created, such that:
-\begin{itemize}
-\item \code{$im$.isSetter} evaluates to \code{\TRUE{}}.
-\item \code{$im$.memberName} evaluates to the symbol \code{v=}.
-\item \code{$im$.positionalArguments} evaluates to an unmodifiable list
-with the same values as \code{<Object>[$o$]}.
-\item \code{$im$.namedArguments} evaluates to an empty unmodifiable instance of
-
-\code{Map<Symbol, Object>}.
-\item \code{$im$.typeArguments} evaluates to an empty, unmodifiable instance of
-
-\code{List<Type>}.
-\end{itemize}
+\commentary{
+The setter lookup will not fail, because it is a compile-time error
+when no concrete setter named \code{$v$=} exists in $S_{static}$.
+}
 
 \LMHash{}
-Then the method \code{noSuchMethod()} is looked up in $S_{dynamic}$ and invoked with argument $im$.
-
-\LMHash{}
-The value of the assignment expression is $o$ irrespective of whether setter lookup has failed or succeeded.
+The value of the assignment expression is $o$.
 
 \LMHash{}
 It is a dynamic type error if $o$ is not the null object (\ref{null})
 and the dynamic type of $o$ is
-not a subtype of the actual type of \code{$S$.$v$}
-(\ref{actualTypeOfADeclaration}).
+not a subtype of the actual type of the formal parameter of \code{$v$=}
+(\ref{actualTypeOfADeclaration}) in $S_{static}$.
 
 \LMHash{}
 \Case{\code{$e_1$[$e_2$] = $e_3$}}
 Consider an assignment $a$ of the form \code{$e_1$[$e_2$] = $e_3$}.
-It is a compile-time error if the static type of $e_1$ does not have a method named \code{[]=}.
-Otherwise, let $S_2$ be the static type of the first formal parameter of the method \code{[]=}
+Let $T$ be the static type of $e_1$.
+If $T$ is \DYNAMIC{}, no further checks are performed.
+Otherwise, it is a compile-time error unless
+$T$ has a method named \code{[]=}.
+Let $S_2$ be the static type of the
+first formal parameter of the method \code{[]=},
 and $S_3$ the static type of the second.
-It is a compile-time error if the static type of $e_2$ may not be assigned to $S_2$,
-and if the static type of $e_3$ may not be assigned to $S_3$.
-The static type of $a$ is the static type of $e_3$.
+It is a compile-time error unless the static type of $e_2$ respectively $e_3$
+may be assigned to $S_2$ respectively $S_3$.
+Whether or not $T$ is \DYNAMIC{},
+the static type of $a$ is the static type of $e_3$.
 
 \LMHash{}
 Evaluation of an assignment $a$ of the form \code{$e_1$[$e_2$] = $e_3$}
@@ -7289,10 +7587,11 @@
 Consider an assignment $a$ of the form \code{\SUPER[$e_1$] = $e_2$}.
 Let $S_{static}$ be the superclass of the immediately enclosing class.
 It is a compile-time error if $S_{static}$ does not have a method \code{[]=}.
-Otherwise, let $S_1$ be the static type of the first formal parameter of the method \code{[]=}
+Otherwise, let $S_1$ be the static type of the
+first formal parameter of the method \code{[]=},
 and $S_2$ the static type of the second.
-It is a compile-time error if the static type of $e_1$ may not be assigned to $S_1$,
-and if the static type of $e_2$ may not be assigned to $S_2$.
+It is a compile-time error if the static type of $e_1$ respectively $e_2$
+may not be assigned to $S_1$ respectively $S_2$.
 The static type of $a$ is the static type of $e_2$.
 
 \LMHash{}
@@ -7521,16 +7820,17 @@
 Otherwise the value of $c$ is the result of evaluating the expression $e_3$.
 
 \LMHash{}
-If all of the following hold:
+If $e_1$ shows that a local variable $v$ has type $T$,
+then the type of $v$ is known to be $T$ in $e_2$,
+unless any of the following are true:
 \begin{itemize}
-\item $e_1$ shows that a local variable $v$ has type $T$.
-\item $v$ is not potentially mutated in $e_2$ or within a function.
-\item If the variable $v$ is accessed by a function in $e_2$ then
-$v$ is not potentially mutated anywhere in the scope of $v$.
+\item $v$ is potentially mutated in $e_2$,
+\item $v$ is potentially mutated within a function other
+than the one where $v$ is declared, or
+\item $v$ is accessed by a function defined in $e_2$ and
+$v$ is potentially mutated anywhere in the scope of $v$.
 \end{itemize}
 
-then the type of $v$ is known to be $T$ in $e_2$.
-
 \LMHash{}
 It is a compile-time error if the static type of $e_1$ may not be assigned to \code{bool}.
 The static type of $c$ is the least upper bound (\ref{leastUpperBounds}) of the static type of $e_2$ and the static type of $e_3$.
@@ -7595,18 +7895,30 @@
 if both of the following conditions hold:
 \begin{itemize}
 \item Either $e_1$ shows that $v$ has type $T$ or $e_2$ shows that $v$ has type $T$.
-\item $v$ is not mutated in $e_2$ or within a function.
+\item $v$ is not mutated in $e_2$ or within a function other than the one where $v$ is declared.
 \end{itemize}
 
 \LMHash{}
-Furthermore, if all of the following hold:
+If $e_1$ shows that a local variable $v$ has type $T$,
+then the type of $v$ is known to be $T$ in $e_2$,
+unless any of the following are true:
 \begin{itemize}
-\item $e_1$ shows that $v$ has type $T$.
-\item $v$ is not mutated in either $e_1$, $e_2$ or within a function.
-\item If $v$ is accessed by a function in $e_2$ then
-$v$ is not potentially mutated anywhere in the scope of $v$.
+%% The first item here is unnecessary for soundness,
+%% and is retained mainly for backwards compatibility.
+%% If $e_1$ shows that $v$ has type $T$, then any assignment
+%% in $e_1$ does not invalidate that.
+%% Removing the line is visible in the semantics, though, because:
+%%  num x;
+%%  (x ??= 42) != null && x is int & x.toRadixString(16) != ""
+%% is allowed without the line, and disallowed with.
+%% At time of writing, the analyzer disallows the code.
+\item $v$ is potentially mutated in $e_1$,
+\item $v$ is potentially mutated in $e_2$,
+\item $v$ is potentially mutated within a function other
+than the one where $v$ is declared, or
+\item $v$ is accessed by a function defined in $e_2$ and
+$v$ is potentially mutated anywhere in the scope of $v$.
 \end{itemize}
-then the type of $v$ is known to be $T$ in $e_2$.
 
 \LMHash{}
 It is a compile-time error if the static type of $e_1$ may not be assigned to \code{bool} or if the static type of $e_2$ may not be assigned to \code{bool}.
@@ -7851,9 +8163,9 @@
 Evaluation of an expression of the form \code{-{}-$e$} is equivalent to \code{$e$\,-=\,1}.
 
 \LMHash{}
-If $e$ is an expression of the form \code{-$l$}
+Let $e$ be an expression of the form \code{-$l$}
 where $l$ is an integer literal (\ref{numbers}) with numeric integer value $i$,
-and with static contex type $T$.
+and with static context type $T$.
 If \code{double} is assignable to $T$ and \code{int} is not assignable to $T$,
 then the static type of $e$ is \code{double};
 otherwise the static type of $e$ is \code{int}.
@@ -7861,12 +8173,16 @@
 \LMHash{}
 If the static type of $e$ is \code{int} then $e$ evaluates to
 to an instance of the \code{int} class representing the numeric value $-i$.
+If $i$ is zero and the \code{int} class can represent a negative zero value,
+then the resulting instance instead represents that negative zero value.
 It is a compile-time error if the integer $-i$ cannot be represented
 exactly by an instance of \code{int}.
 
 \LMHash{}
 If the static type of $e$ is \code{double} then $e$ evaluates to
 to an instance of the \code{double} class representing the numeric value $-i$.
+If $i$ is zero, the resulting instance instead represents the
+\emph{negative} zero double value, \code{-0.0}.
 It is a compile-time error if the integer $-i$ cannot be represented
 exactly by an instance of \code{double}.
 \commentary{
@@ -8540,9 +8856,11 @@
 is \DYNAMIC{}.
 
 \LMHash{}
-Let $v$ be an initialized local variable and let $e$ be the associated initializing expression.
+Let $v$ be a local variable declared by an initializing variable declaration,
+and let $e$ be the associated initializing expression.
 It is a compile-time error if the static type of $e$ is not assignable to the type of $v$.
-It is a compile-time error if a local variable $v$ is final and $v$ is not an initialized variable.
+It is a compile-time error if a local variable $v$ is final,
+and the declaration of $v$ is not an initializing variable declaration.
 
 \commentary{
 It is also a compile-time error to assign to a final local variable
@@ -8761,14 +9079,16 @@
 It is a compile-time error if the type of the expression $b$ may not be assigned to \code{bool}.
 
 \LMHash{}
-If:
+If $b$ shows that a local variable $v$ has type $T$,
+then the type of $v$ is known to be $T$ in $s_2$,
+unless any of the following are true
 \begin{itemize}
-\item $b$ shows that a local variable $v$ has type $T$.
-\item $v$ is not potentially mutated in $s_1$ or within a function.
-\item If $v$ is accessed by a function in $s_1$ then
-$v$ is not potentially mutated anywhere in the scope of $v$.
+\item $v$ is potentially mutated in $s_1$,
+\item $v$ is potentially mutated within a function other
+than the one where $v$ is declared, or
+\item $v$ is accessed by a function defined in $s_1$ and
+$v$ is potentially mutated anywhere in the scope of $v$.
 \end{itemize}
-then the type of $v$ is known to be $T$ in $s_1$.
 
 \LMHash{}
 An if statement of the form \code{\IF{} ($e$) $s$} is equivalent to the if statement \code{\IF{} ($e$) $s$ \ELSE{} \{\}}.
@@ -9089,8 +9409,10 @@
 It is a compile-time error if the class $C$ has an implementation of
 the operator \code{==} other than the one inherited from \code{Object},
 unless the expression evaluates to a string or an integer,
-or the expression is a literal symbol or
-an invocation of a constant constructor of class \code{Symbol}.
+or the expression evaluates to an instance of the built-in
+class \code{Symbol} which was initially obtained by evaluation of a
+literal symbol or
+a constant invocation of a constructor of the \code{Symbol} class.
 
 \rationale{
 The prohibition on user defined equality allows us to implement the switch efficiently for user defined types.
@@ -9216,7 +9538,7 @@
 }
 
 \LMHash{}
-It is a compile-time error if all of the following conditions hold:
+It is a compile-time warning if all of the following conditions hold:
 \begin{itemize}
 \item The switch statement does not have a default clause.
 \item The static type of $e$ is an enumerated type with elements $\id_1, \ldots, \id_n$.
@@ -9224,7 +9546,7 @@
 \end{itemize}
 
 \commentary{
-In other words, an error will be raised if a switch statement over an enum is not exhaustive.
+In other words, a warning will be emitted if a switch statement over an enum is not exhaustive.
 }
 
 
@@ -9459,8 +9781,8 @@
 }
 
 \LMHash{}
-Let $f$ be the function immediately enclosing a return statement of the form \RETURN{};.
-It is a compile-time error if $f$ is neither a generator nor a generative constructor and either:
+Let $f$ be the function immediately enclosing a return statement of the form \code{\RETURN{};}.
+It is a compile-time warning if $f$ is neither a generator nor a generative constructor and either:
 \begin{itemize}
 %% TODO(eernst): Integrating generalized-void.md, "may not be assigned
 %% to void" is useless. Update, also considering invalid_returns.md.
@@ -9470,7 +9792,8 @@
 \end{itemize}
 
 \commentary{
-Hence, a compile-time error will not be raised if $f$ has no declared return type,
+Hence, a compile-time warning will not be raised if $f$ has no declared return type,
+%% TODO(eernst): Update when integrating generalized-void.md!
 since the return type would be \DYNAMIC{} and \DYNAMIC{} may be assigned to \VOID{} and to \code{Future<Null>}.
 However, any synchronous non-generator function that declares a return type must return an expression explicitly.
 }
@@ -10159,7 +10482,7 @@
 }
 
 \LMHash{}
-It is a compile-time error to import two different libraries with the same name unless their name is the empty string.
+It is a compile-time warning to import two different libraries with the same name unless their name is the empty string.
 
 \commentary{
 A widely disseminated library should be given a name that will not conflict with other such libraries.
@@ -10626,6 +10949,8 @@
 
 \LMHash{}
 When types are reified as instances of the built-in class \code{Type},
+those objects override the \code{==} operator
+inherited from the \code{Object} class, so that
 two \code{Type} objects are equal according to operator \syntax{`=='}
 if{}f the corresponding types are subtypes of each other.
 
@@ -11433,7 +11758,7 @@
 Unary postfix & \code{$e$.}, \code{$e$?.}, \code{$e$++}, \code{$e$-{}-}, \code{$e1$[$e2$]},
 \code{$e$()} & None & 16 \\
 \hline
-Unary prefix & \code{-$e$}, \code{!$e$}, \code{\~{}$e$}, \code{++$e$}, \code{-{}-$e$} & None & 15\\
+Unary prefix & \code{-$e$}, \code{!$e$}, \code{\~{}$e$}, \code{++$e$}, \code{-{}-$e$}, \code{\AWAIT{} $e$} & None & 15\\
 \hline
 Multiplicative & \code{*}, \code{/}, \code{\~{}/}, \code{\%} & Left & 14\\
 \hline
diff --git a/docs/language/informal/instantiate-to-bound.md b/docs/language/informal/instantiate-to-bound.md
index 4bed76e..dfe36bc 100644
--- a/docs/language/informal/instantiate-to-bound.md
+++ b/docs/language/informal/instantiate-to-bound.md
@@ -99,9 +99,42 @@
 
 ## Static analysis
 
-Let _G_ be a generic class or parameterized type alias with formal type
-parameter declarations
-_F<sub>1</sub> .. F<sub>k</sub>_ containing formal type parameters
+We will define simple bounds, but at first we need an auxiliary concept.
+Let _T_ be a type of the form `typeName`. A type _S_ then _contains_ _T_
+if one of the following conditions hold:
+
+- _S_ is of the form `typeName`, and _S_ is _T_.
+- _S_ is of the form `typeName typeArguments`, and one of the type
+  arguments contains _T_.
+- _S_ is of the form `typeName typeArguments?` where `typeName` denotes a
+  type alias _F_, and the body of _F_ contains _T_.
+- _S_ is of the form
+  `returnType? 'Function' typeParameters? parameterTypeList` and
+  `returnType?` contains _T_, or a bound in `typeParameters?` contains _T_,
+  or the type of a parameter in `parameterTypeList` contains _T_.
+
+*Multiple cases may be applicable, e.g., when a type alias is applied to a
+list of actual type arguments, and the type alias body as well as some type
+arguments may contain _T_.*
+
+*In the rule about type aliases, _F_ may or may not be parameterized, and
+it may or may not receive type arguments. However, there is no need to
+consider the result of substituting actual type arguments for formal type
+parameters in the body of the type alias, because we only need to inspect
+all types of the form `typeName` contained in its body, and they are not
+affected by such a substitution.*
+
+*It is understood that name capture is avoided, that is, a type _S_ does
+not contain `p.C` even if _S_ contains `F` which denotes a type alias whose
+body contains the syntax `p.C`, say, as a return type, if `p` has different
+meanings in _S_ and in the body of _F_. This could occur because _S_ and
+_F_ are declared in different libraries. Similarly, when a type parameter
+bound _B_ contains a type variable `X` from the enclosing class, it is
+never because `X` is contained in the body of a type alias, it will always
+be as a syntactic subterm of _B_.*
+
+Let _G_ be a generic class or parameterized type alias with _k_ formal type
+parameter declarations containing formal type parameters
 _X<sub>1</sub> .. X<sub>k</sub>_ and bounds
 _B<sub>1</sub> .. B<sub>k</sub>_. We say that the formal type parameter
 _X<sub>j</sub>_ has a _simple bound_ when one of the following requirements
@@ -110,8 +143,8 @@
 1. _B<sub>j</sub>_ is omitted.
 
 2. _B<sub>j</sub>_ is included, but does not contain any of _X<sub>1</sub>
-   .. X<sub>k</sub>_. If _B<sub>j</sub>_ contains a type _T_ on the form
-   `qualified` (*for instance, `C` or `p.D`*) which denotes a generic class
+   .. X<sub>k</sub>_. If _B<sub>j</sub>_ contains a type _T_ of the form
+   `typeName` (*for instance, `C` or `p.D`*) which denotes a generic class
    or parameterized type alias _G<sub>1</sub>_ (*that is, _T_ is a raw type*),
    every type argument of _G<sub>1</sub>_ has a simple bound.
 
@@ -130,7 +163,7 @@
 all bounds because any generic type may be used as a raw type.*
 
 It is a compile-time error if a formal parameter bound _B_ contains a type
-_T_ on the form `qualified` and _T_ denotes a generic class or parameterized
+_T_ on the form `typeName` and _T_ denotes a generic class or parameterized
 type alias _G_ (*that is, _T_ is a raw type*), unless every formal type
 parameter of _G_ has a simple bound.
 
@@ -140,7 +173,7 @@
 parameter `X` that corresponds to the omitted type argument does not have a
 simple bound.*
 
-When a type annotation _T_ on the form `qualified` denotes a generic class
+When a type annotation _T_ on the form `typeName` denotes a generic class
 or parameterized type alias (*so _T_ is raw*), instantiate to bound is used
 to provide the missing type argument list. It is a compile-time error if
 the instantiate to bound process fails.
@@ -157,7 +190,7 @@
 infer the omitted type arguments, e.g., for `List xs = [];`.*
 
 *When type inference is providing actual type arguments for a term _G_ on
-the form `qualified` which denotes a generic class or a parameterized type
+the form `typeName` which denotes a generic class or a parameterized type
 alias, instantiate to bound may be used to provide the value for type
 arguments where no information is available for inferring such an actual
 type argument. This document does not specify how inference interacts with
@@ -166,7 +199,7 @@
 applies to a type argument list which is omitted, such that a value for all
 the actual type arguments must be computed.*
 
-Let _T_ be a `qualified` term which denotes a generic class or
+Let _T_ be a `typeName` term which denotes a generic class or
 parameterized type alias _G_ (*so _T_ is a raw type*), let
 _F<sub>1</sub> .. F<sub>k</sub>_ be the formal type
 parameter declarations in the declaration of _G_, with type parameters
diff --git a/docs/language/informal/interface-conflicts.md b/docs/language/informal/interface-conflicts.md
new file mode 100644
index 0000000..cd1d7f3
--- /dev/null
+++ b/docs/language/informal/interface-conflicts.md
@@ -0,0 +1,275 @@
+# Feature Specification: Interface Conflict Management
+
+**Owner**: eernst@
+
+**Status**: Under discussion.
+
+**Version**: 0.3 (2018-04-24)
+
+
+This document is a Dart 2 feature specification which specifies how to
+handle conflicts among certain program elements associated with the
+interface of a class. In particular, it specifies that multiple occurrences
+of the same generic class in the superinterface hierarchy must receive the
+same type arguments, and that no attempts are made at synthesizing a
+suitable method signature if multiple distinct signatures are provided by
+the superinterfaces, and none of them resolves the conflict.
+
+
+## Motivation
+
+In Dart 1, the management of conflicts during the computation of the
+interface of a class is rather forgiving. On page 42 of
+[ECMA-408](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf),
+we have the following:
+
+> However, if the above rules would cause multiple members
+> _m<sub>1</sub>, ..., m<sub>k</sub>_
+> with the same name _n_ to be inherited (because identically named
+> members existed in several superinterfaces) then at most one member
+> is inherited.
+>
+> ...
+>
+> Then _I_ has a method named _n_, with _r_ required parameters of type
+> `dynamic`, _h_ positional parameters of type `dynamic`, named parameters
+> _s_ of type `dynamic` and return type `dynamic`.
+
+In particular, the resulting class interface may then contain a method
+signature which has been synthesized during static analysis, and which
+differs from all declarations of the given method in the source code.
+In the case where some superintenfaces specify some optional positional
+parameters and others specify some named parameters, any attempt to
+implement the synthesized method signature other than via a user-defined
+`noSuchMethod` would fail (it would be a syntax error to declare both
+kinds of parameters in the same method declaration).
+
+For Dart 2 we modify this approach such that more emphasis is given to
+predictability, and less emphasis is given to convenience: No class
+interface will ever contain a method signature which has been
+synthesized during static analysis, it will always be one of the method
+interfaces that occur in the source code. In case of a conflict, the
+developer must explicitly specify how to resolve the conflict.
+
+To reinforce the same emphasis on predictability, we also specify that
+it is a compile-time error for a class to have two superinterfaces which
+are instantiations of the same generic class with different type arguments.
+
+
+## Syntax
+
+The grammar remains unchanged.
+
+
+## Static Analysis
+
+We introduce a new relation among types, _more interface-specific than_,
+which is similar to the subtype relation, but which treats top types
+differently.
+
+- The built-in class `Object` is more interface-specific than `void`.
+- The built-in type `dynamic` is more interface-specific than `void`.
+- None of `Object` and `dynamic` is more interface-specific than the other.
+- All other subtype rules are also valid rules about being more
+  interface-specific.
+
+This means that we will express the complete rules for being 'more
+interface-specific than' as a slight modification of
+[subtyping.md](https://github.com/dart-lang/sdk/blob/master/docs/language/informal/subtyping.md)
+and in particular, the rule 'Right Top' will need to be split in cases
+such that `Object` and `dynamic` are more interface-specific than `void` and
+mutually unrelated, and all other types are more interface-specific than
+both `Object` and `dynamic`.
+
+*For example, `List<Object>` is more interface-specific than `List<void>`
+and incomparable to `List<dynamic>`; similarly, `int Function(void)` is
+more interface-specific than `void Function(Object)`, but the latter is
+incomparable to `void Function(dynamic)`.*
+
+It is a compile-time error if a class _C_ has two superinterfaces of the
+form _D<T<sub>1</sub> .. T<sub>k</sub>>_ respectively
+_D<S<sub>1</sub> .. S<sub>k</sub>>_ such that there is a _j_ in _1 .. k_
+where _T<sub>j</sub>_ and _S<sub>j</sub>_ denote types that are not
+mutually more interface-specific than each other.
+
+*This means that the (direct and indirect) superinterfaces must agree on
+the type arguments passed to any given generic class. Note that the case
+where the number of type arguments differ is unimportant because at least
+one of them is already a compile-time error for other reasons. Also note
+that it is not sufficient that the type arguments to a given superinterface
+are mutual subtypes (say, if `C` implements both `I<dynamic>` and
+`I<Object>`), because that gives rise to ambiguities which are considered
+to be compile-time errors if they had been created in a different way.*
+
+This compile-time error also arises if the type arguments are not given
+explicitly.
+
+*They might be obtained via
+[instantiate-to-bound](https://github.com/dart-lang/sdk/blob/master/docs/language/informal/instantiate-to-bound.md)
+or, in case such a mechanism is introduced, they might be inferred.*
+
+*The language specification already contains verbiage to this effect, but we
+mention it here for two reasons: First, it is a recent change which has been
+discussed in the language team together with the rest of the topics in this
+document because of their similar nature and motivation. Second, we note
+that this restriction may be lifted in the future. It was a change in the
+specification which did not break many existing programs because `dart2js`
+always enforced that restriction (even though it was not specified in the
+language specification), so in that sense it just made the actual situation
+explicit. However, it may be possible to lift the restriction: Given that an
+instance of a class that has `List<int>` among its superinterfaces can be
+accessed via a variable of type `List<num>`, it seems unlikely that it would
+violate any language invariants to allow the class of that instance to have
+both `List<int>` and `List<num>` among its superinterfaces. We may then
+relax the rule to specify that for each generic class _G_ which occurs among
+superinterfaces, there must be a unique superinterface which is the most
+specific instantiation of _G_.*
+
+During computation of the interface of a class _C_, it may be the case that
+multiple direct superinterfaces have a declaration of a member of the same
+name _n_, and class _C_ does not declare member named _n_.
+Let _D<sub>1</sub> .. D<sub>n</sub>_ denote this set of declarations.
+
+It is a compile-time error if some declarations among
+_D<sub>1</sub> .. D<sub>n</sub>_ are getters and others are non-getters.
+
+Otherwise, if all of _D<sub>1</sub> .. D<sub>n</sub>_ are getter
+declarations, the interface of _C_ inherits one, _D<sub>j</sub>_, whose
+return type is more interface-specific than that of every declaration in
+_D<sub>1</sub> .. D<sub>n</sub>_. It is a compile-time error if no such
+_D<sub>j</sub>_ exists.
+
+*For example, it is an error to have two declarations with the signatures
+`Object get foo` and `dynamic get foo`, and no others, because none of
+these is more interface-specific than the other. This example illustrates
+why it is unsatisfactory to rely on subtyping alone: If we had accepted
+this kind of ambiguity then it would be difficult to justify the treatment
+of `o.foo.bar` during static analysis where `o` has type _C_: If it is
+considered to be a compile-time error then `dynamic get foo` is being
+ignored, and if it is not an error then `Object get foo` is being ignored,
+and each of these behaviors may be surprising and/or error-prone. Hence, we
+require such a conflict to be resolved explicitly, which may be done by
+writing a signature in the class which overrides both method signatures
+from the superinterfaces and explicitly chooses `Object` or `dynamic`.*
+
+Otherwise, (*when all declarations are non-getter declarations*), the
+interface of _C_ inherits one, _D<sub>j</sub>_, where its function type is
+more interface-specific than that of all declarations in
+_D<sub>1</sub> .. D<sub>n</sub>_. It is a compile-time error if no such
+declaration _D<sub>j</sub>_ exists.
+
+*In the case where more than one such declaration exists, it is known that
+their parameter list shapes are identical, and their return types and
+parameter types are pairwise mutually more interface-specific than each
+other (i.e., for any two such declarations _D<sub>i</sub>_ and _D<sub>j</sub>_,
+if _U<sub>i</sub>_ is the return type from _D<sub>i</sub>_ and
+_U<sub>j</sub>_ is the return type from _D<sub>j</sub>_ then
+_U<sub>i</sub>_ is more interface-specific than _U<sub>j</sub>_ and
+vice versa, and similarly for each parameter type). This still allows for
+some differences. We ignore differences in metadata on formal parameters
+(we do not consider method signatures in interfaces to have metadata). But
+we need to consider one more thing:*
+
+In this decision about which declaration among
+_D<sub>1</sub> .. D<sub>n</sub>_
+the interface of the class _C_ will inherit, if we have multiple possible
+choices, let _D<sub>i</sub>_ and _D<sub>j</sub>_ be such a pair of possible
+choices. It is a compile-time error if _D<sub>i</sub>_ and _D<sub>j</sub>_
+declare two optional formal parameters _p<sub>1</sub>_ and _p<sub>2</sub>_
+such that they correspond to each other (*same name if named, or else same
+position*) and they specify different default values.
+
+
+## Discussion
+
+Conflicts among distinct top types may be considered to be spurious in the
+case where said type occurs in a contravariant position in the method
+signature. Consider the following example:
+
+```dart
+abstract class I1 {
+  void foo(dynamic d);
+}
+
+abstract class I2 {
+  void foo(Object o);
+}
+
+abstract class C implements I1, I2 {}
+```
+
+In both situations&mdash;when `foo` accepts an argument of type `dynamic`
+and when it accepts an `Object`&mdash;the acceptable actual arguments are
+exactly the same: _Every_ object can be passed. Moreover, the formal
+parameters `d` and `o` are not in scope anywhere, so there will never be
+an expression like `d.bar` or `o.bar` which is allowed respectively
+rejected because the receiver is or is not `dynamic`. In other words,
+_it does not matter_ for clients of `C` whether that argument type is
+`dynamic` or `Object`.
+
+During inference, the type-from-context for an actual argument to `foo`
+will depend on the choice: It will be `dynamic` respectively `Object`.
+However, this choice will not affect the treatment of the actual
+argument.
+
+One case worth considering is the following:
+
+```dart
+abstract class I1 {
+  void foo(dynamic f());
+}
+
+abstract class I2 {
+  void foo(Object f());
+}
+```
+
+If a function literal is passed in at a call site, it may have its return
+type inferred to `dynamic` respectively `Object`. This will change the
+type-from-context for any returned expressions, but just like the case
+for the actual parameter, that will not change the treatment of such
+expressions. Again, it does not matter for clients calling `foo` whether
+that type is `dynamic` or `Object`.
+
+Conversely, the choice of top type matters when it is placed in a
+contravariant location in the parameter type:
+
+```dart
+abstract class I1 {
+  void foo(int f(dynamic d));
+}
+
+abstract class I2 {
+  void foo(int f(Object o));
+}
+```
+
+In this situation, a function literal used as an actual argument at a call
+site for `foo` would receive an inferred type annotation for its formal
+parameter of `dynamic` respectively `Object`, and the usage of that parameter
+in the body of the function literal would then differ. In other words, the
+developer who declares `foo` may decide whether the code in the body of the
+function literal at the call sites should use strict or relaxed type
+checking&mdash;and it would be highly error-prone if this decision were
+to be made in a way which is unspecified.
+
+All in all, it may be useful to "erase" all top types to `Object` when they
+occur in contravariant positions in method signatures, such that the
+differences that may exist do not create conflicts; in contrast, the top
+types that occur in covariant positions are significant, and hence the fact
+that we require such conflicts to be resolved explicitly is unlikely to be
+relaxed.
+
+## Updates
+
+*   Apr 24th 2018, version 0.3: Renamed 'override-specific' to
+    'interface-specific', to avoid giving the impression that it can be
+    used to determine whether a given signature can override another one
+    (the override check must use different rules, e.g., it must allow
+    `dynamic foo();` to override `Object foo();` _and_ vice versa).
+
+*   Apr 16th 2018, version 0.2: Introduced the relation 'more
+    override-specific than' in order to handle top types more consistently
+    and concisely.
+
+*   Feb 8th 2018, version 0.1: Initial version.
diff --git a/docs/language/informal/nosuchmethod-forwarding.md b/docs/language/informal/nosuchmethod-forwarding.md
index 68d1153..6fca335 100644
--- a/docs/language/informal/nosuchmethod-forwarding.md
+++ b/docs/language/informal/nosuchmethod-forwarding.md
@@ -2,7 +2,7 @@
 
 Author: eernst@
 
-**Status**: Implemented.
+**Status**: Background material, normative language now in dartLangSpec.tex.
 
 **Version**: 0.7 (2018-07-10)
 
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
new file mode 100644
index 0000000..e1e4b90
--- /dev/null
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
@@ -0,0 +1,6214 @@
+// 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.
+
+// This file has been automatically generated. Please do not edit it manually.
+// To regenerate the file, use the script
+// "pkg/analysis_server/tool/lsp_spec/generate_all.dart".
+
+import 'dart:core' hide deprecated;
+import 'dart:core' as core show deprecated;
+import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+
+class ApplyWorkspaceEditParams implements ToJsonable {
+  ApplyWorkspaceEditParams(this.label, this.edit) {
+    if (edit == null) {
+      throw 'edit is required but was not provided';
+    }
+  }
+  factory ApplyWorkspaceEditParams.fromJson(Map<String, dynamic> json) {
+    final label = json['label'];
+    final edit =
+        json['edit'] != null ? new WorkspaceEdit.fromJson(json['edit']) : null;
+    return new ApplyWorkspaceEditParams(label, edit);
+  }
+
+  /// The edits to apply.
+  final WorkspaceEdit edit;
+
+  /// An optional label of the workspace edit. This label is presented in the
+  /// user interface for example on an undo stack to undo the workspace edit.
+  final String label;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (label != null) {
+      __result['label'] = label;
+    }
+    __result['edit'] = edit ?? (throw 'edit is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('edit') &&
+        WorkspaceEdit.canParse(obj['edit']);
+  }
+}
+
+class ApplyWorkspaceEditResponse implements ToJsonable {
+  ApplyWorkspaceEditResponse(this.applied) {
+    if (applied == null) {
+      throw 'applied is required but was not provided';
+    }
+  }
+  factory ApplyWorkspaceEditResponse.fromJson(Map<String, dynamic> json) {
+    final applied = json['applied'];
+    return new ApplyWorkspaceEditResponse(applied);
+  }
+
+  /// Indicates whether the edit was applied or not.
+  final bool applied;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['applied'] =
+        applied ?? (throw 'applied is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('applied') &&
+        obj['applied'] is bool;
+  }
+}
+
+class CancelParams implements ToJsonable {
+  CancelParams(this.id) {
+    if (id == null) {
+      throw 'id is required but was not provided';
+    }
+  }
+  factory CancelParams.fromJson(Map<String, dynamic> json) {
+    final id = json['id'] is num
+        ? new Either2<num, String>.t1(json['id'])
+        : (json['id'] is String
+            ? new Either2<num, String>.t2(json['id'])
+            : (throw '''${json['id']} was not one of (number, string)'''));
+    return new CancelParams(id);
+  }
+
+  /// The request id to cancel.
+  final Either2<num, String> id;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['id'] = id ?? (throw 'id is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('id') &&
+        (obj['id'] is num || obj['id'] is String);
+  }
+}
+
+class ClientCapabilities implements ToJsonable {
+  ClientCapabilities(this.workspace, this.textDocument, this.experimental);
+  factory ClientCapabilities.fromJson(Map<String, dynamic> json) {
+    final workspace = json['workspace'] != null
+        ? new WorkspaceClientCapabilities.fromJson(json['workspace'])
+        : null;
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentClientCapabilities.fromJson(json['textDocument'])
+        : null;
+    final experimental = json['experimental'];
+    return new ClientCapabilities(workspace, textDocument, experimental);
+  }
+
+  /// Experimental client capabilities.
+  final dynamic experimental;
+
+  /// Text document specific client capabilities.
+  final TextDocumentClientCapabilities textDocument;
+
+  /// Workspace specific client capabilities.
+  final WorkspaceClientCapabilities workspace;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (workspace != null) {
+      __result['workspace'] = workspace;
+    }
+    if (textDocument != null) {
+      __result['textDocument'] = textDocument;
+    }
+    if (experimental != null) {
+      __result['experimental'] = experimental;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// A code action represents a change that can be performed in code, e.g. to fix
+/// a problem or to refactor code.
+///
+/// A CodeAction must set either `edit` and/or a `command`. If both are
+/// supplied, the `edit` is applied first, then the `command` is executed.
+class CodeAction implements ToJsonable {
+  CodeAction(this.title, this.kind, this.diagnostics, this.edit, this.command) {
+    if (title == null) {
+      throw 'title is required but was not provided';
+    }
+  }
+  factory CodeAction.fromJson(Map<String, dynamic> json) {
+    final title = json['title'];
+    final kind = json['kind'];
+    final diagnostics = json['diagnostics']
+        ?.map((item) => item != null ? new Diagnostic.fromJson(item) : null)
+        ?.cast<Diagnostic>()
+        ?.toList();
+    final edit =
+        json['edit'] != null ? new WorkspaceEdit.fromJson(json['edit']) : null;
+    final command =
+        json['command'] != null ? new Command.fromJson(json['command']) : null;
+    return new CodeAction(title, kind, diagnostics, edit, command);
+  }
+
+  /// A command this code action executes. If a code action provides an edit and
+  /// a command, first the edit is executed and then the command.
+  final Command command;
+
+  /// The diagnostics that this code action resolves.
+  final List<Diagnostic> diagnostics;
+
+  /// The workspace edit this code action performs.
+  final WorkspaceEdit edit;
+
+  /// The kind of the code action.
+  ///
+  /// Used to filter code actions.
+  final String kind;
+
+  /// A short, human-readable, title for this code action.
+  final String title;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['title'] = title ?? (throw 'title is required but was not set');
+    if (kind != null) {
+      __result['kind'] = kind;
+    }
+    if (diagnostics != null) {
+      __result['diagnostics'] = diagnostics;
+    }
+    if (edit != null) {
+      __result['edit'] = edit;
+    }
+    if (command != null) {
+      __result['command'] = command;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('title') &&
+        obj['title'] is String;
+  }
+}
+
+/// Contains additional diagnostic information about the context in which a code
+/// action is run.
+class CodeActionContext implements ToJsonable {
+  CodeActionContext(this.diagnostics, this.only) {
+    if (diagnostics == null) {
+      throw 'diagnostics is required but was not provided';
+    }
+  }
+  factory CodeActionContext.fromJson(Map<String, dynamic> json) {
+    final diagnostics = json['diagnostics']
+        ?.map((item) => item != null ? new Diagnostic.fromJson(item) : null)
+        ?.cast<Diagnostic>()
+        ?.toList();
+    final only = json['only']?.map((item) => item)?.cast<String>()?.toList();
+    return new CodeActionContext(diagnostics, only);
+  }
+
+  /// An array of diagnostics.
+  final List<Diagnostic> diagnostics;
+
+  /// Requested kind of actions to return.
+  ///
+  /// Actions not of this kind are filtered out by the client before being
+  /// shown. So servers can omit computing them.
+  final List<String> only;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['diagnostics'] =
+        diagnostics ?? (throw 'diagnostics is required but was not set');
+    if (only != null) {
+      __result['only'] = only;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('diagnostics') &&
+        (obj['diagnostics'] is List &&
+            (obj['diagnostics'].length == 0 ||
+                obj['diagnostics'].every((item) => Diagnostic.canParse(item))));
+  }
+}
+
+/// A set of predefined code action kinds
+abstract class CodeActionKind {
+  /// Base kind for quickfix actions: 'quickfix'
+  static const QuickFix = 'quickfix';
+
+  /// Base kind for refactoring actions: 'refactor'
+  static const Refactor = 'refactor';
+
+  /// Base kind for refactoring extraction actions: 'refactor.extract'
+  ///
+  /// Example extract actions:
+  ///
+  /// - Extract method
+  /// - Extract function
+  /// - Extract variable
+  /// - Extract interface from class
+  /// - ...
+  static const RefactorExtract = 'refactor.extract';
+
+  /// Base kind for refactoring inline actions: 'refactor.inline'
+  ///
+  /// Example inline actions:
+  ///
+  /// - Inline function
+  /// - Inline variable
+  /// - Inline constant
+  /// - ...
+  static const RefactorInline = 'refactor.inline';
+
+  /// Base kind for refactoring rewrite actions: 'refactor.rewrite'
+  ///
+  /// Example rewrite actions:
+  ///
+  /// - Convert JavaScript function to class
+  /// - Add or remove parameter
+  /// - Encapsulate field
+  /// - Make method static
+  /// - Move method to base class
+  /// - ...
+  static const RefactorRewrite = 'refactor.rewrite';
+
+  /// Base kind for source actions: `source`
+  ///
+  /// Source code actions apply to the entire file.
+  static const Source = 'source';
+
+  /// Base kind for an organize imports source action: `source.organizeImports`
+  static const SourceOrganizeImports = 'source.organizeImports';
+}
+
+/// Code Action options.
+class CodeActionOptions implements ToJsonable {
+  CodeActionOptions(this.codeActionKinds);
+  factory CodeActionOptions.fromJson(Map<String, dynamic> json) {
+    final codeActionKinds =
+        json['codeActionKinds']?.map((item) => item)?.cast<String>()?.toList();
+    return new CodeActionOptions(codeActionKinds);
+  }
+
+  /// CodeActionKinds that this server may return.
+  ///
+  /// The list of kinds may be generic, such as `CodeActionKind.Refactor`, or
+  /// the server may list out every specific kind they provide.
+  final List<String> codeActionKinds;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (codeActionKinds != null) {
+      __result['codeActionKinds'] = codeActionKinds;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// Params for the CodeActionRequest
+class CodeActionParams implements ToJsonable {
+  CodeActionParams(this.textDocument, this.range, this.context) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+    if (context == null) {
+      throw 'context is required but was not provided';
+    }
+  }
+  factory CodeActionParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final context = json['context'] != null
+        ? new CodeActionContext.fromJson(json['context'])
+        : null;
+    return new CodeActionParams(textDocument, range, context);
+  }
+
+  /// Context carrying additional information.
+  final CodeActionContext context;
+
+  /// The range for which the command was invoked.
+  final Range range;
+
+  /// The document in which the command was invoked.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    __result['context'] =
+        context ?? (throw 'context is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']) &&
+        obj.containsKey('context') &&
+        CodeActionContext.canParse(obj['context']);
+  }
+}
+
+class CodeActionRegistrationOptions
+    implements TextDocumentRegistrationOptions, CodeActionOptions, ToJsonable {
+  CodeActionRegistrationOptions(this.documentSelector, this.codeActionKinds);
+  factory CodeActionRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    final codeActionKinds =
+        json['codeActionKinds']?.map((item) => item)?.cast<String>()?.toList();
+    return new CodeActionRegistrationOptions(documentSelector, codeActionKinds);
+  }
+
+  /// CodeActionKinds that this server may return.
+  ///
+  /// The list of kinds may be generic, such as `CodeActionKind.Refactor`, or
+  /// the server may list out every specific kind they provide.
+  final List<String> codeActionKinds;
+
+  /// A document selector to identify the scope of the registration. If set to
+  /// null the document selector provided on the client side will be used.
+  final List<DocumentFilter> documentSelector;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['documentSelector'] = documentSelector;
+    if (codeActionKinds != null) {
+      __result['codeActionKinds'] = codeActionKinds;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// A code lens represents a command that should be shown along with source
+/// text, like the number of references, a way to run tests, etc.
+///
+/// A code lens is _unresolved_ when no command is associated to it. For
+/// performance reasons the creation of a code lens and resolving should be done
+/// in two stages.
+class CodeLens implements ToJsonable {
+  CodeLens(this.range, this.command, this.data) {
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+  }
+  factory CodeLens.fromJson(Map<String, dynamic> json) {
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final command =
+        json['command'] != null ? new Command.fromJson(json['command']) : null;
+    final data = json['data'];
+    return new CodeLens(range, command, data);
+  }
+
+  /// The command this code lens represents.
+  final Command command;
+
+  /// A data entry field that is preserved on a code lens item between a code
+  /// lens and a code lens resolve request.
+  final dynamic data;
+
+  /// The range in which this code lens is valid. Should only span a single
+  /// line.
+  final Range range;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    if (command != null) {
+      __result['command'] = command;
+    }
+    if (data != null) {
+      __result['data'] = data;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']);
+  }
+}
+
+/// Code Lens options.
+class CodeLensOptions implements ToJsonable {
+  CodeLensOptions(this.resolveProvider);
+  factory CodeLensOptions.fromJson(Map<String, dynamic> json) {
+    final resolveProvider = json['resolveProvider'];
+    return new CodeLensOptions(resolveProvider);
+  }
+
+  /// Code lens has a resolve provider as well.
+  final bool resolveProvider;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (resolveProvider != null) {
+      __result['resolveProvider'] = resolveProvider;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class CodeLensParams implements ToJsonable {
+  CodeLensParams(this.textDocument) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+  }
+  factory CodeLensParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    return new CodeLensParams(textDocument);
+  }
+
+  /// The document to request code lens for.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']);
+  }
+}
+
+class CodeLensRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  CodeLensRegistrationOptions(this.resolveProvider, this.documentSelector);
+  factory CodeLensRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final resolveProvider = json['resolveProvider'];
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new CodeLensRegistrationOptions(resolveProvider, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the registration. If set to
+  /// null the document selector provided on the client side will be used.
+  final List<DocumentFilter> documentSelector;
+
+  /// Code lens has a resolve provider as well.
+  final bool resolveProvider;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (resolveProvider != null) {
+      __result['resolveProvider'] = resolveProvider;
+    }
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// Represents a color in RGBA space.
+class Color implements ToJsonable {
+  Color(this.red, this.green, this.blue, this.alpha) {
+    if (red == null) {
+      throw 'red is required but was not provided';
+    }
+    if (green == null) {
+      throw 'green is required but was not provided';
+    }
+    if (blue == null) {
+      throw 'blue is required but was not provided';
+    }
+    if (alpha == null) {
+      throw 'alpha is required but was not provided';
+    }
+  }
+  factory Color.fromJson(Map<String, dynamic> json) {
+    final red = json['red'];
+    final green = json['green'];
+    final blue = json['blue'];
+    final alpha = json['alpha'];
+    return new Color(red, green, blue, alpha);
+  }
+
+  final num alpha;
+  final num blue;
+  final num green;
+  final num red;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['red'] = red ?? (throw 'red is required but was not set');
+    __result['green'] = green ?? (throw 'green is required but was not set');
+    __result['blue'] = blue ?? (throw 'blue is required but was not set');
+    __result['alpha'] = alpha ?? (throw 'alpha is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('red') &&
+        obj['red'] is num &&
+        obj.containsKey('green') &&
+        obj['green'] is num &&
+        obj.containsKey('blue') &&
+        obj['blue'] is num &&
+        obj.containsKey('alpha') &&
+        obj['alpha'] is num;
+  }
+}
+
+class ColorInformation implements ToJsonable {
+  ColorInformation(this.range, this.color) {
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+    if (color == null) {
+      throw 'color is required but was not provided';
+    }
+  }
+  factory ColorInformation.fromJson(Map<String, dynamic> json) {
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final color =
+        json['color'] != null ? new Color.fromJson(json['color']) : null;
+    return new ColorInformation(range, color);
+  }
+
+  /// The actual color value for this color range.
+  final Color color;
+
+  /// The range in the document where this color appears.
+  final Range range;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    __result['color'] = color ?? (throw 'color is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']) &&
+        obj.containsKey('color') &&
+        Color.canParse(obj['color']);
+  }
+}
+
+class ColorPresentation implements ToJsonable {
+  ColorPresentation(this.label, this.textEdit, this.additionalTextEdits) {
+    if (label == null) {
+      throw 'label is required but was not provided';
+    }
+  }
+  factory ColorPresentation.fromJson(Map<String, dynamic> json) {
+    final label = json['label'];
+    final textEdit = json['textEdit'] != null
+        ? new TextEdit.fromJson(json['textEdit'])
+        : null;
+    final additionalTextEdits = json['additionalTextEdits']
+        ?.map((item) => item != null ? new TextEdit.fromJson(item) : null)
+        ?.cast<TextEdit>()
+        ?.toList();
+    return new ColorPresentation(label, textEdit, additionalTextEdits);
+  }
+
+  /// An optional array of additional text edits ([TextEdit]) that are applied
+  /// when selecting this color presentation. Edits must not overlap with the
+  /// main [edit](#ColorPresentation.textEdit) nor with themselves.
+  final List<TextEdit> additionalTextEdits;
+
+  /// The label of this color presentation. It will be shown on the color picker
+  /// header. By default this is also the text that is inserted when selecting
+  /// this color presentation.
+  final String label;
+
+  /// An edit ([TextEdit]) which is applied to a document when selecting this
+  /// presentation for the color.  When `falsy` the
+  /// [label](#ColorPresentation.label) is used.
+  final TextEdit textEdit;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['label'] = label ?? (throw 'label is required but was not set');
+    if (textEdit != null) {
+      __result['textEdit'] = textEdit;
+    }
+    if (additionalTextEdits != null) {
+      __result['additionalTextEdits'] = additionalTextEdits;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('label') &&
+        obj['label'] is String;
+  }
+}
+
+class ColorPresentationParams implements ToJsonable {
+  ColorPresentationParams(this.textDocument, this.color, this.range) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (color == null) {
+      throw 'color is required but was not provided';
+    }
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+  }
+  factory ColorPresentationParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final color =
+        json['color'] != null ? new Color.fromJson(json['color']) : null;
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    return new ColorPresentationParams(textDocument, color, range);
+  }
+
+  /// The color information to request presentations for.
+  final Color color;
+
+  /// The range where the color would be inserted. Serves as a context.
+  final Range range;
+
+  /// The text document.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['color'] = color ?? (throw 'color is required but was not set');
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('color') &&
+        Color.canParse(obj['color']) &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']);
+  }
+}
+
+/// Color provider options.
+class ColorProviderOptions implements ToJsonable {
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class Command implements ToJsonable {
+  Command(this.title, this.command, this.arguments) {
+    if (title == null) {
+      throw 'title is required but was not provided';
+    }
+    if (command == null) {
+      throw 'command is required but was not provided';
+    }
+  }
+  factory Command.fromJson(Map<String, dynamic> json) {
+    final title = json['title'];
+    final command = json['command'];
+    final arguments =
+        json['arguments']?.map((item) => item)?.cast<dynamic>()?.toList();
+    return new Command(title, command, arguments);
+  }
+
+  /// Arguments that the command handler should be invoked with.
+  final List<dynamic> arguments;
+
+  /// The identifier of the actual command handler.
+  final String command;
+
+  /// Title of the command, like `save`.
+  final String title;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['title'] = title ?? (throw 'title is required but was not set');
+    __result['command'] =
+        command ?? (throw 'command is required but was not set');
+    if (arguments != null) {
+      __result['arguments'] = arguments;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('title') &&
+        obj['title'] is String &&
+        obj.containsKey('command') &&
+        obj['command'] is String;
+  }
+}
+
+/// Contains additional information about the context in which a completion
+/// request is triggered.
+class CompletionContext implements ToJsonable {
+  CompletionContext(this.triggerKind, this.triggerCharacter) {
+    if (triggerKind == null) {
+      throw 'triggerKind is required but was not provided';
+    }
+  }
+  factory CompletionContext.fromJson(Map<String, dynamic> json) {
+    final triggerKind = json['triggerKind'] != null
+        ? new CompletionTriggerKind.fromJson(json['triggerKind'])
+        : null;
+    final triggerCharacter = json['triggerCharacter'];
+    return new CompletionContext(triggerKind, triggerCharacter);
+  }
+
+  /// The trigger character (a single character) that has trigger code complete.
+  /// Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`
+  final String triggerCharacter;
+
+  /// How the completion was triggered.
+  final CompletionTriggerKind triggerKind;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['triggerKind'] =
+        triggerKind ?? (throw 'triggerKind is required but was not set');
+    if (triggerCharacter != null) {
+      __result['triggerCharacter'] = triggerCharacter;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('triggerKind') &&
+        CompletionTriggerKind.canParse(obj['triggerKind']);
+  }
+}
+
+class CompletionItem implements ToJsonable {
+  CompletionItem(
+      this.label,
+      this.kind,
+      this.detail,
+      this.documentation,
+      this.deprecated,
+      this.preselect,
+      this.sortText,
+      this.filterText,
+      this.insertText,
+      this.insertTextFormat,
+      this.textEdit,
+      this.additionalTextEdits,
+      this.commitCharacters,
+      this.command,
+      this.data) {
+    if (label == null) {
+      throw 'label is required but was not provided';
+    }
+  }
+  factory CompletionItem.fromJson(Map<String, dynamic> json) {
+    final label = json['label'];
+    final kind = json['kind'] != null
+        ? new CompletionItemKind.fromJson(json['kind'])
+        : null;
+    final detail = json['detail'];
+    final documentation = json['documentation'] is String
+        ? new Either2<String, MarkupContent>.t1(json['documentation'])
+        : (MarkupContent.canParse(json['documentation'])
+            ? new Either2<String, MarkupContent>.t2(
+                json['documentation'] != null
+                    ? new MarkupContent.fromJson(json['documentation'])
+                    : null)
+            : (throw '''${json['documentation']} was not one of (string, MarkupContent)'''));
+    final deprecated = json['deprecated'];
+    final preselect = json['preselect'];
+    final sortText = json['sortText'];
+    final filterText = json['filterText'];
+    final insertText = json['insertText'];
+    final insertTextFormat = json['insertTextFormat'] != null
+        ? new InsertTextFormat.fromJson(json['insertTextFormat'])
+        : null;
+    final textEdit = json['textEdit'] != null
+        ? new TextEdit.fromJson(json['textEdit'])
+        : null;
+    final additionalTextEdits = json['additionalTextEdits']
+        ?.map((item) => item != null ? new TextEdit.fromJson(item) : null)
+        ?.cast<TextEdit>()
+        ?.toList();
+    final commitCharacters =
+        json['commitCharacters']?.map((item) => item)?.cast<String>()?.toList();
+    final command =
+        json['command'] != null ? new Command.fromJson(json['command']) : null;
+    final data = json['data'];
+    return new CompletionItem(
+        label,
+        kind,
+        detail,
+        documentation,
+        deprecated,
+        preselect,
+        sortText,
+        filterText,
+        insertText,
+        insertTextFormat,
+        textEdit,
+        additionalTextEdits,
+        commitCharacters,
+        command,
+        data);
+  }
+
+  /// An optional array of additional text edits that are applied when selecting
+  /// this completion. Edits must not overlap (including the same insert
+  /// position) with the main edit nor with themselves.
+  ///
+  /// Additional text edits should be used to change text unrelated to the
+  /// current cursor position (for example adding an import statement at the top
+  /// of the file if the completion item will insert an unqualified type).
+  final List<TextEdit> additionalTextEdits;
+
+  /// An optional command that is executed *after* inserting this completion.
+  /// *Note* that additional modifications to the current document should be
+  /// described with the additionalTextEdits-property.
+  final Command command;
+
+  /// An optional set of characters that when pressed while this completion is
+  /// active will accept it first and then type that character. *Note* that all
+  /// commit characters should have `length=1` and that superfluous characters
+  /// will be ignored.
+  final List<String> commitCharacters;
+
+  /// An data entry field that is preserved on a completion item between a
+  /// completion and a completion resolve request.
+  final dynamic data;
+
+  /// Indicates if this item is deprecated.
+  final bool deprecated;
+
+  /// A human-readable string with additional information about this item, like
+  /// type or symbol information.
+  final String detail;
+
+  /// A human-readable string that represents a doc-comment.
+  final Either2<String, MarkupContent> documentation;
+
+  /// A string that should be used when filtering a set of completion items.
+  /// When `falsy` the label is used.
+  final String filterText;
+
+  /// A string that should be inserted into a document when selecting this
+  /// completion. When `falsy` the label is used.
+  ///
+  /// The `insertText` is subject to interpretation by the client side. Some
+  /// tools might not take the string literally. For example VS Code when code
+  /// complete is requested in this example `con<cursor position>` and a
+  /// completion item with an `insertText` of `console` is provided it will only
+  /// insert `sole`. Therefore it is recommended to use `textEdit` instead since
+  /// it avoids additional client side interpretation.
+  ///  @deprecated Use textEdit instead.
+  @core.deprecated
+  final String insertText;
+
+  /// The format of the insert text. The format applies to both the `insertText`
+  /// property and the `newText` property of a provided `textEdit`.
+  final InsertTextFormat insertTextFormat;
+
+  /// The kind of this completion item. Based of the kind an icon is chosen by
+  /// the editor.
+  final CompletionItemKind kind;
+
+  /// The label of this completion item. By default also the text that is
+  /// inserted when selecting this completion.
+  final String label;
+
+  /// Select this item when showing.
+  ///
+  /// *Note* that only one completion item can be selected and that the tool /
+  /// client decides which item that is. The rule is that the *first* item of
+  /// those that match best is selected.
+  final bool preselect;
+
+  /// A string that should be used when comparing this item with other items.
+  /// When `falsy` the label is used.
+  final String sortText;
+
+  /// An edit which is applied to a document when selecting this completion.
+  /// When an edit is provided the value of `insertText` is ignored.
+  ///
+  /// *Note:* The range of the edit must be a single line range and it must
+  /// contain the position at which completion has been requested.
+  final TextEdit textEdit;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['label'] = label ?? (throw 'label is required but was not set');
+    if (kind != null) {
+      __result['kind'] = kind;
+    }
+    if (detail != null) {
+      __result['detail'] = detail;
+    }
+    if (documentation != null) {
+      __result['documentation'] = documentation;
+    }
+    if (deprecated != null) {
+      __result['deprecated'] = deprecated;
+    }
+    if (preselect != null) {
+      __result['preselect'] = preselect;
+    }
+    if (sortText != null) {
+      __result['sortText'] = sortText;
+    }
+    if (filterText != null) {
+      __result['filterText'] = filterText;
+    }
+    // ignore: deprecated_member_use
+    if (insertText != null) {
+      // ignore: deprecated_member_use
+      __result['insertText'] = insertText;
+    }
+    if (insertTextFormat != null) {
+      __result['insertTextFormat'] = insertTextFormat;
+    }
+    if (textEdit != null) {
+      __result['textEdit'] = textEdit;
+    }
+    if (additionalTextEdits != null) {
+      __result['additionalTextEdits'] = additionalTextEdits;
+    }
+    if (commitCharacters != null) {
+      __result['commitCharacters'] = commitCharacters;
+    }
+    if (command != null) {
+      __result['command'] = command;
+    }
+    if (data != null) {
+      __result['data'] = data;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('label') &&
+        obj['label'] is String;
+  }
+}
+
+/// The kind of a completion entry.
+class CompletionItemKind {
+  const CompletionItemKind._(this._value);
+  const CompletionItemKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+      case 4:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 10:
+      case 11:
+      case 12:
+      case 13:
+      case 14:
+      case 15:
+      case 16:
+      case 17:
+      case 18:
+      case 19:
+      case 20:
+      case 21:
+      case 22:
+      case 23:
+      case 24:
+      case 25:
+        return true;
+    }
+    return false;
+  }
+
+  static const Text = const CompletionItemKind._(1);
+  static const Method = const CompletionItemKind._(2);
+  static const Function = const CompletionItemKind._(3);
+  static const Constructor = const CompletionItemKind._(4);
+  static const Field = const CompletionItemKind._(5);
+  static const Variable = const CompletionItemKind._(6);
+  static const Class = const CompletionItemKind._(7);
+  static const Interface = const CompletionItemKind._(8);
+  static const Module = const CompletionItemKind._(9);
+  static const Property = const CompletionItemKind._(10);
+  static const Unit = const CompletionItemKind._(11);
+  static const Value = const CompletionItemKind._(12);
+  static const Enum = const CompletionItemKind._(13);
+  static const Keyword = const CompletionItemKind._(14);
+  static const Snippet = const CompletionItemKind._(15);
+  static const Color = const CompletionItemKind._(16);
+  static const File = const CompletionItemKind._(17);
+  static const Reference = const CompletionItemKind._(18);
+  static const Folder = const CompletionItemKind._(19);
+  static const EnumMember = const CompletionItemKind._(20);
+  static const Constant = const CompletionItemKind._(21);
+  static const Struct = const CompletionItemKind._(22);
+  static const Event = const CompletionItemKind._(23);
+  static const Operator = const CompletionItemKind._(24);
+  static const TypeParameter = const CompletionItemKind._(25);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is CompletionItemKind && o._value == _value;
+}
+
+/// Represents a collection of completion items ([CompletionItem]) to be
+/// presented in the editor.
+class CompletionList implements ToJsonable {
+  CompletionList(this.isIncomplete, this.items) {
+    if (isIncomplete == null) {
+      throw 'isIncomplete is required but was not provided';
+    }
+    if (items == null) {
+      throw 'items is required but was not provided';
+    }
+  }
+  factory CompletionList.fromJson(Map<String, dynamic> json) {
+    final isIncomplete = json['isIncomplete'];
+    final items = json['items']
+        ?.map((item) => item != null ? new CompletionItem.fromJson(item) : null)
+        ?.cast<CompletionItem>()
+        ?.toList();
+    return new CompletionList(isIncomplete, items);
+  }
+
+  /// This list it not complete. Further typing should result in recomputing
+  /// this list.
+  final bool isIncomplete;
+
+  /// The completion items.
+  final List<CompletionItem> items;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['isIncomplete'] =
+        isIncomplete ?? (throw 'isIncomplete is required but was not set');
+    __result['items'] = items ?? (throw 'items is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('isIncomplete') &&
+        obj['isIncomplete'] is bool &&
+        obj.containsKey('items') &&
+        (obj['items'] is List &&
+            (obj['items'].length == 0 ||
+                obj['items'].every((item) => CompletionItem.canParse(item))));
+  }
+}
+
+/// Completion options.
+class CompletionOptions implements ToJsonable {
+  CompletionOptions(this.resolveProvider, this.triggerCharacters);
+  factory CompletionOptions.fromJson(Map<String, dynamic> json) {
+    final resolveProvider = json['resolveProvider'];
+    final triggerCharacters = json['triggerCharacters']
+        ?.map((item) => item)
+        ?.cast<String>()
+        ?.toList();
+    return new CompletionOptions(resolveProvider, triggerCharacters);
+  }
+
+  /// The server provides support to resolve additional information for a
+  /// completion item.
+  final bool resolveProvider;
+
+  /// The characters that trigger completion automatically.
+  final List<String> triggerCharacters;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (resolveProvider != null) {
+      __result['resolveProvider'] = resolveProvider;
+    }
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class CompletionParams implements TextDocumentPositionParams, ToJsonable {
+  CompletionParams(this.context, this.textDocument, this.position) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (position == null) {
+      throw 'position is required but was not provided';
+    }
+  }
+  factory CompletionParams.fromJson(Map<String, dynamic> json) {
+    final context = json['context'] != null
+        ? new CompletionContext.fromJson(json['context'])
+        : null;
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final position = json['position'] != null
+        ? new Position.fromJson(json['position'])
+        : null;
+    return new CompletionParams(context, textDocument, position);
+  }
+
+  /// The completion context. This is only available if the client specifies
+  /// to send this using
+  /// `ClientCapabilities.textDocument.completion.contextSupport === true`
+  final CompletionContext context;
+
+  /// The position inside the text document.
+  final Position position;
+
+  /// The text document.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (context != null) {
+      __result['context'] = context;
+    }
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['position'] =
+        position ?? (throw 'position is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('position') &&
+        Position.canParse(obj['position']);
+  }
+}
+
+class CompletionRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  CompletionRegistrationOptions(
+      this.triggerCharacters, this.resolveProvider, this.documentSelector);
+  factory CompletionRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final triggerCharacters = json['triggerCharacters']
+        ?.map((item) => item)
+        ?.cast<String>()
+        ?.toList();
+    final resolveProvider = json['resolveProvider'];
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new CompletionRegistrationOptions(
+        triggerCharacters, resolveProvider, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the registration. If set to
+  /// null the document selector provided on the client side will be used.
+  final List<DocumentFilter> documentSelector;
+
+  /// The server provides support to resolve additional information for a
+  /// completion item.
+  final bool resolveProvider;
+
+  /// Most tools trigger completion request automatically without explicitly
+  /// requesting it using a keyboard shortcut (e.g. Ctrl+Space). Typically
+  /// they do so when the user starts to type an identifier. For example if
+  /// the user types `c` in a JavaScript file code complete will automatically
+  /// pop up present `console` besides others as a completion item. Characters
+  /// that make up identifiers don't need to be listed here.
+  ///
+  /// If code complete should automatically be trigger on characters not being
+  /// valid inside an identifier (for example `.` in JavaScript) list them in
+  /// `triggerCharacters`.
+  final List<String> triggerCharacters;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
+    }
+    if (resolveProvider != null) {
+      __result['resolveProvider'] = resolveProvider;
+    }
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// How a completion was triggered
+class CompletionTriggerKind {
+  const CompletionTriggerKind._(this._value);
+  const CompletionTriggerKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+        return true;
+    }
+    return false;
+  }
+
+  /// Completion was triggered by typing an identifier (24x7 code complete),
+  /// manual invocation (e.g Ctrl+Space) or via API.
+  static const Invoked = const CompletionTriggerKind._(1);
+
+  /// Completion was triggered by a trigger character specified by the
+  /// `triggerCharacters` properties of the `CompletionRegistrationOptions`.
+  static const TriggerCharacter = const CompletionTriggerKind._(2);
+
+  /// Completion was re-triggered as the current completion list is
+  /// incomplete.
+  static const TriggerForIncompleteCompletions =
+      const CompletionTriggerKind._(3);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is CompletionTriggerKind && o._value == _value;
+}
+
+class ConfigurationItem implements ToJsonable {
+  ConfigurationItem(this.scopeUri, this.section);
+  factory ConfigurationItem.fromJson(Map<String, dynamic> json) {
+    final scopeUri = json['scopeUri'];
+    final section = json['section'];
+    return new ConfigurationItem(scopeUri, section);
+  }
+
+  /// The scope to get the configuration section for.
+  final String scopeUri;
+
+  /// The configuration section asked for.
+  final String section;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (scopeUri != null) {
+      __result['scopeUri'] = scopeUri;
+    }
+    if (section != null) {
+      __result['section'] = section;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class ConfigurationParams implements ToJsonable {
+  ConfigurationParams(this.items) {
+    if (items == null) {
+      throw 'items is required but was not provided';
+    }
+  }
+  factory ConfigurationParams.fromJson(Map<String, dynamic> json) {
+    final items = json['items']
+        ?.map((item) =>
+            item != null ? new ConfigurationItem.fromJson(item) : null)
+        ?.cast<ConfigurationItem>()
+        ?.toList();
+    return new ConfigurationParams(items);
+  }
+
+  final List<ConfigurationItem> items;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['items'] = items ?? (throw 'items is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('items') &&
+        (obj['items'] is List &&
+            (obj['items'].length == 0 ||
+                obj['items']
+                    .every((item) => ConfigurationItem.canParse(item))));
+  }
+}
+
+/// Create file operation
+class CreateFile implements FileOperation, ToJsonable {
+  CreateFile(this.uri, this.options) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+  }
+  factory CreateFile.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    final options = json['options'] != null
+        ? new CreateFileOptions.fromJson(json['options'])
+        : null;
+    return new CreateFile(uri, options);
+  }
+
+  /// Additional options
+  final CreateFileOptions options;
+
+  /// The resource to create.
+  final String uri;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    if (options != null) {
+      __result['options'] = options;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String;
+  }
+}
+
+/// Options to create a file.
+class CreateFileOptions implements ToJsonable {
+  CreateFileOptions(this.overwrite, this.ignoreIfExists);
+  factory CreateFileOptions.fromJson(Map<String, dynamic> json) {
+    final overwrite = json['overwrite'];
+    final ignoreIfExists = json['ignoreIfExists'];
+    return new CreateFileOptions(overwrite, ignoreIfExists);
+  }
+
+  /// Ignore if exists.
+  final bool ignoreIfExists;
+
+  /// Overwrite existing file. Overwrite wins over `ignoreIfExists`
+  final bool overwrite;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (overwrite != null) {
+      __result['overwrite'] = overwrite;
+    }
+    if (ignoreIfExists != null) {
+      __result['ignoreIfExists'] = ignoreIfExists;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// Delete file operation
+class DeleteFile implements FileOperation, ToJsonable {
+  DeleteFile(this.uri, this.options) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+  }
+  factory DeleteFile.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    final options = json['options'] != null
+        ? new DeleteFileOptions.fromJson(json['options'])
+        : null;
+    return new DeleteFile(uri, options);
+  }
+
+  /// Delete options.
+  final DeleteFileOptions options;
+
+  /// The file to delete.
+  final String uri;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    if (options != null) {
+      __result['options'] = options;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String;
+  }
+}
+
+/// Delete file options
+class DeleteFileOptions implements ToJsonable {
+  DeleteFileOptions(this.recursive, this.ignoreIfNotExists);
+  factory DeleteFileOptions.fromJson(Map<String, dynamic> json) {
+    final recursive = json['recursive'];
+    final ignoreIfNotExists = json['ignoreIfNotExists'];
+    return new DeleteFileOptions(recursive, ignoreIfNotExists);
+  }
+
+  /// Ignore the operation if the file doesn't exist.
+  final bool ignoreIfNotExists;
+
+  /// Delete the content recursively if a folder is denoted.
+  final bool recursive;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (recursive != null) {
+      __result['recursive'] = recursive;
+    }
+    if (ignoreIfNotExists != null) {
+      __result['ignoreIfNotExists'] = ignoreIfNotExists;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class Diagnostic implements ToJsonable {
+  Diagnostic(this.range, this.severity, this.code, this.source, this.message,
+      this.relatedInformation) {
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+    if (message == null) {
+      throw 'message is required but was not provided';
+    }
+  }
+  factory Diagnostic.fromJson(Map<String, dynamic> json) {
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final severity = json['severity'] != null
+        ? new DiagnosticSeverity.fromJson(json['severity'])
+        : null;
+    final code = json['code'] is num
+        ? new Either2<num, String>.t1(json['code'])
+        : (json['code'] is String
+            ? new Either2<num, String>.t2(json['code'])
+            : (throw '''${json['code']} was not one of (number, string)'''));
+    final source = json['source'];
+    final message = json['message'];
+    final relatedInformation = json['relatedInformation']
+        ?.map((item) => item != null
+            ? new DiagnosticRelatedInformation.fromJson(item)
+            : null)
+        ?.cast<DiagnosticRelatedInformation>()
+        ?.toList();
+    return new Diagnostic(
+        range, severity, code, source, message, relatedInformation);
+  }
+
+  /// The diagnostic's code, which might appear in the user interface.
+  final Either2<num, String> code;
+
+  /// The diagnostic's message.
+  final String message;
+
+  /// The range at which the message applies.
+  final Range range;
+
+  /// An array of related diagnostic information, e.g. when symbol-names
+  /// within a scope collide all definitions can be marked via this
+  /// property.
+  final List<DiagnosticRelatedInformation> relatedInformation;
+
+  /// The diagnostic's severity. Can be omitted. If omitted it is up to the
+  /// client to interpret diagnostics as error, warning, info or hint.
+  final DiagnosticSeverity severity;
+
+  /// A human-readable string describing the source of this diagnostic, e.g.
+  /// 'typescript' or 'super lint'.
+  final String source;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    if (severity != null) {
+      __result['severity'] = severity;
+    }
+    if (code != null) {
+      __result['code'] = code;
+    }
+    if (source != null) {
+      __result['source'] = source;
+    }
+    __result['message'] =
+        message ?? (throw 'message is required but was not set');
+    if (relatedInformation != null) {
+      __result['relatedInformation'] = relatedInformation;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']) &&
+        obj.containsKey('message') &&
+        obj['message'] is String;
+  }
+}
+
+/// Represents a related message and source code location for a diagnostic.
+/// This should be used to point to code locations that cause or related to
+/// a diagnostics, e.g when duplicating a symbol in a scope.
+class DiagnosticRelatedInformation implements ToJsonable {
+  DiagnosticRelatedInformation(this.location, this.message) {
+    if (location == null) {
+      throw 'location is required but was not provided';
+    }
+    if (message == null) {
+      throw 'message is required but was not provided';
+    }
+  }
+  factory DiagnosticRelatedInformation.fromJson(Map<String, dynamic> json) {
+    final location = json['location'] != null
+        ? new Location.fromJson(json['location'])
+        : null;
+    final message = json['message'];
+    return new DiagnosticRelatedInformation(location, message);
+  }
+
+  /// The location of this related diagnostic information.
+  final Location location;
+
+  /// The message of this related diagnostic information.
+  final String message;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['location'] =
+        location ?? (throw 'location is required but was not set');
+    __result['message'] =
+        message ?? (throw 'message is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('location') &&
+        Location.canParse(obj['location']) &&
+        obj.containsKey('message') &&
+        obj['message'] is String;
+  }
+}
+
+class DiagnosticSeverity {
+  const DiagnosticSeverity._(this._value);
+  const DiagnosticSeverity.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+      case 4:
+        return true;
+    }
+    return false;
+  }
+
+  /// Reports an error.
+  static const Error = const DiagnosticSeverity._(1);
+
+  /// Reports a warning.
+  static const Warning = const DiagnosticSeverity._(2);
+
+  /// Reports an information.
+  static const Information = const DiagnosticSeverity._(3);
+
+  /// Reports a hint.
+  static const Hint = const DiagnosticSeverity._(4);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is DiagnosticSeverity && o._value == _value;
+}
+
+class DidChangeConfigurationParams implements ToJsonable {
+  DidChangeConfigurationParams(this.settings) {
+    if (settings == null) {
+      throw 'settings is required but was not provided';
+    }
+  }
+  factory DidChangeConfigurationParams.fromJson(Map<String, dynamic> json) {
+    final settings = json['settings'];
+    return new DidChangeConfigurationParams(settings);
+  }
+
+  /// The actual changed settings
+  final dynamic settings;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['settings'] =
+        settings ?? (throw 'settings is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> && obj.containsKey('settings') && true;
+  }
+}
+
+class DidChangeTextDocumentParams implements ToJsonable {
+  DidChangeTextDocumentParams(this.textDocument, this.contentChanges) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (contentChanges == null) {
+      throw 'contentChanges is required but was not provided';
+    }
+  }
+  factory DidChangeTextDocumentParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new VersionedTextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final contentChanges = json['contentChanges']
+        ?.map((item) => item != null
+            ? new TextDocumentContentChangeEvent.fromJson(item)
+            : null)
+        ?.cast<TextDocumentContentChangeEvent>()
+        ?.toList();
+    return new DidChangeTextDocumentParams(textDocument, contentChanges);
+  }
+
+  /// The actual content changes. The content changes describe single
+  /// state changes to the document. So if there are two content changes
+  /// c1 and c2 for a document in state S then c1 move the document to S'
+  /// and c2 to S''.
+  final List<TextDocumentContentChangeEvent> contentChanges;
+
+  /// The document that did change. The version number points to the
+  /// version after all provided content changes have been applied.
+  final VersionedTextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['contentChanges'] =
+        contentChanges ?? (throw 'contentChanges is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        VersionedTextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('contentChanges') &&
+        (obj['contentChanges'] is List &&
+            (obj['contentChanges'].length == 0 ||
+                obj['contentChanges'].every(
+                    (item) => TextDocumentContentChangeEvent.canParse(item))));
+  }
+}
+
+class DidChangeWatchedFilesParams implements ToJsonable {
+  DidChangeWatchedFilesParams(this.changes) {
+    if (changes == null) {
+      throw 'changes is required but was not provided';
+    }
+  }
+  factory DidChangeWatchedFilesParams.fromJson(Map<String, dynamic> json) {
+    final changes = json['changes']
+        ?.map((item) => item != null ? new FileEvent.fromJson(item) : null)
+        ?.cast<FileEvent>()
+        ?.toList();
+    return new DidChangeWatchedFilesParams(changes);
+  }
+
+  /// The actual file events.
+  final List<FileEvent> changes;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['changes'] =
+        changes ?? (throw 'changes is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('changes') &&
+        (obj['changes'] is List &&
+            (obj['changes'].length == 0 ||
+                obj['changes'].every((item) => FileEvent.canParse(item))));
+  }
+}
+
+/// Describe options to be used when registering for text document change
+/// events.
+class DidChangeWatchedFilesRegistrationOptions implements ToJsonable {
+  DidChangeWatchedFilesRegistrationOptions(this.watchers) {
+    if (watchers == null) {
+      throw 'watchers is required but was not provided';
+    }
+  }
+  factory DidChangeWatchedFilesRegistrationOptions.fromJson(
+      Map<String, dynamic> json) {
+    final watchers = json['watchers']
+        ?.map((item) =>
+            item != null ? new FileSystemWatcher.fromJson(item) : null)
+        ?.cast<FileSystemWatcher>()
+        ?.toList();
+    return new DidChangeWatchedFilesRegistrationOptions(watchers);
+  }
+
+  /// The watchers to register.
+  final List<FileSystemWatcher> watchers;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['watchers'] =
+        watchers ?? (throw 'watchers is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('watchers') &&
+        (obj['watchers'] is List &&
+            (obj['watchers'].length == 0 ||
+                obj['watchers']
+                    .every((item) => FileSystemWatcher.canParse(item))));
+  }
+}
+
+class DidChangeWorkspaceFoldersParams implements ToJsonable {
+  DidChangeWorkspaceFoldersParams(this.event) {
+    if (event == null) {
+      throw 'event is required but was not provided';
+    }
+  }
+  factory DidChangeWorkspaceFoldersParams.fromJson(Map<String, dynamic> json) {
+    final event = json['event'] != null
+        ? new WorkspaceFoldersChangeEvent.fromJson(json['event'])
+        : null;
+    return new DidChangeWorkspaceFoldersParams(event);
+  }
+
+  /// The actual workspace folder change event.
+  final WorkspaceFoldersChangeEvent event;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['event'] = event ?? (throw 'event is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('event') &&
+        WorkspaceFoldersChangeEvent.canParse(obj['event']);
+  }
+}
+
+class DidCloseTextDocumentParams implements ToJsonable {
+  DidCloseTextDocumentParams(this.textDocument) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+  }
+  factory DidCloseTextDocumentParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    return new DidCloseTextDocumentParams(textDocument);
+  }
+
+  /// The document that was closed.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']);
+  }
+}
+
+class DidOpenTextDocumentParams implements ToJsonable {
+  DidOpenTextDocumentParams(this.textDocument) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+  }
+  factory DidOpenTextDocumentParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentItem.fromJson(json['textDocument'])
+        : null;
+    return new DidOpenTextDocumentParams(textDocument);
+  }
+
+  /// The document that was opened.
+  final TextDocumentItem textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentItem.canParse(obj['textDocument']);
+  }
+}
+
+class DidSaveTextDocumentParams implements ToJsonable {
+  DidSaveTextDocumentParams(this.textDocument, this.text) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+  }
+  factory DidSaveTextDocumentParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final text = json['text'];
+    return new DidSaveTextDocumentParams(textDocument, text);
+  }
+
+  /// Optional the content when saved. Depends on the includeText value
+  /// when the save notification was requested.
+  final String text;
+
+  /// The document that was saved.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    if (text != null) {
+      __result['text'] = text;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']);
+  }
+}
+
+class DocumentFilter implements ToJsonable {
+  DocumentFilter(this.language, this.scheme, this.pattern);
+  factory DocumentFilter.fromJson(Map<String, dynamic> json) {
+    final language = json['language'];
+    final scheme = json['scheme'];
+    final pattern = json['pattern'];
+    return new DocumentFilter(language, scheme, pattern);
+  }
+
+  /// A language id, like `typescript`.
+  final String language;
+
+  /// A glob pattern, like `*.{ts,js}`.
+  final String pattern;
+
+  /// A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
+  final String scheme;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (language != null) {
+      __result['language'] = language;
+    }
+    if (scheme != null) {
+      __result['scheme'] = scheme;
+    }
+    if (pattern != null) {
+      __result['pattern'] = pattern;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class DocumentFormattingParams implements ToJsonable {
+  DocumentFormattingParams(this.textDocument, this.options) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (options == null) {
+      throw 'options is required but was not provided';
+    }
+  }
+  factory DocumentFormattingParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final options = json['options'] != null
+        ? new FormattingOptions.fromJson(json['options'])
+        : null;
+    return new DocumentFormattingParams(textDocument, options);
+  }
+
+  /// The format options.
+  final FormattingOptions options;
+
+  /// The document to format.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['options'] =
+        options ?? (throw 'options is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('options') &&
+        FormattingOptions.canParse(obj['options']);
+  }
+}
+
+/// A document highlight is a range inside a text document which deserves
+/// special attention. Usually a document highlight is visualized by
+/// changing the background color of its range.
+class DocumentHighlight implements ToJsonable {
+  DocumentHighlight(this.range, this.kind) {
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+  }
+  factory DocumentHighlight.fromJson(Map<String, dynamic> json) {
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final kind = json['kind'] != null
+        ? new DocumentHighlightKind.fromJson(json['kind'])
+        : null;
+    return new DocumentHighlight(range, kind);
+  }
+
+  /// The highlight kind, default is DocumentHighlightKind.Text.
+  final DocumentHighlightKind kind;
+
+  /// The range this highlight applies to.
+  final Range range;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    if (kind != null) {
+      __result['kind'] = kind;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']);
+  }
+}
+
+/// A document highlight kind.
+class DocumentHighlightKind {
+  const DocumentHighlightKind._(this._value);
+  const DocumentHighlightKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+        return true;
+    }
+    return false;
+  }
+
+  /// A textual occurrence.
+  static const Text = const DocumentHighlightKind._(1);
+
+  /// Read-access of a symbol, like reading a variable.
+  static const Read = const DocumentHighlightKind._(2);
+
+  /// Write-access of a symbol, like writing to a variable.
+  static const Write = const DocumentHighlightKind._(3);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is DocumentHighlightKind && o._value == _value;
+}
+
+/// A document link is a range in a text document that links to an
+/// internal or external resource, like another text document or a web
+/// site.
+class DocumentLink implements ToJsonable {
+  DocumentLink(this.range, this.target, this.data) {
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+  }
+  factory DocumentLink.fromJson(Map<String, dynamic> json) {
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final target = json['target'];
+    final data = json['data'];
+    return new DocumentLink(range, target, data);
+  }
+
+  /// A data entry field that is preserved on a document link between a
+  /// DocumentLinkRequest and a DocumentLinkResolveRequest.
+  final dynamic data;
+
+  /// The range this link applies to.
+  final Range range;
+
+  /// The uri this link points to. If missing a resolve request is sent
+  /// later.
+  final String target;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    if (target != null) {
+      __result['target'] = target;
+    }
+    if (data != null) {
+      __result['data'] = data;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']);
+  }
+}
+
+/// Document link options.
+class DocumentLinkOptions implements ToJsonable {
+  DocumentLinkOptions(this.resolveProvider);
+  factory DocumentLinkOptions.fromJson(Map<String, dynamic> json) {
+    final resolveProvider = json['resolveProvider'];
+    return new DocumentLinkOptions(resolveProvider);
+  }
+
+  /// Document links have a resolve provider as well.
+  final bool resolveProvider;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (resolveProvider != null) {
+      __result['resolveProvider'] = resolveProvider;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class DocumentLinkParams implements ToJsonable {
+  DocumentLinkParams(this.textDocument) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+  }
+  factory DocumentLinkParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    return new DocumentLinkParams(textDocument);
+  }
+
+  /// The document to provide document links for.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']);
+  }
+}
+
+class DocumentLinkRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  DocumentLinkRegistrationOptions(this.resolveProvider, this.documentSelector);
+  factory DocumentLinkRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final resolveProvider = json['resolveProvider'];
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new DocumentLinkRegistrationOptions(
+        resolveProvider, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the registration. If
+  /// set to null the document selector provided on the client side will
+  /// be used.
+  final List<DocumentFilter> documentSelector;
+
+  /// Document links have a resolve provider as well.
+  final bool resolveProvider;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (resolveProvider != null) {
+      __result['resolveProvider'] = resolveProvider;
+    }
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// Format document on type options.
+class DocumentOnTypeFormattingOptions implements ToJsonable {
+  DocumentOnTypeFormattingOptions(
+      this.firstTriggerCharacter, this.moreTriggerCharacter) {
+    if (firstTriggerCharacter == null) {
+      throw 'firstTriggerCharacter is required but was not provided';
+    }
+  }
+  factory DocumentOnTypeFormattingOptions.fromJson(Map<String, dynamic> json) {
+    final firstTriggerCharacter = json['firstTriggerCharacter'];
+    final moreTriggerCharacter = json['moreTriggerCharacter']
+        ?.map((item) => item)
+        ?.cast<String>()
+        ?.toList();
+    return new DocumentOnTypeFormattingOptions(
+        firstTriggerCharacter, moreTriggerCharacter);
+  }
+
+  /// A character on which formatting should be triggered, like `}`.
+  final String firstTriggerCharacter;
+
+  /// More trigger characters.
+  final List<String> moreTriggerCharacter;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['firstTriggerCharacter'] = firstTriggerCharacter ??
+        (throw 'firstTriggerCharacter is required but was not set');
+    if (moreTriggerCharacter != null) {
+      __result['moreTriggerCharacter'] = moreTriggerCharacter;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('firstTriggerCharacter') &&
+        obj['firstTriggerCharacter'] is String;
+  }
+}
+
+class DocumentOnTypeFormattingParams implements ToJsonable {
+  DocumentOnTypeFormattingParams(
+      this.textDocument, this.position, this.ch, this.options) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (position == null) {
+      throw 'position is required but was not provided';
+    }
+    if (ch == null) {
+      throw 'ch is required but was not provided';
+    }
+    if (options == null) {
+      throw 'options is required but was not provided';
+    }
+  }
+  factory DocumentOnTypeFormattingParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final position = json['position'] != null
+        ? new Position.fromJson(json['position'])
+        : null;
+    final ch = json['ch'];
+    final options = json['options'] != null
+        ? new FormattingOptions.fromJson(json['options'])
+        : null;
+    return new DocumentOnTypeFormattingParams(
+        textDocument, position, ch, options);
+  }
+
+  /// The character that has been typed.
+  final String ch;
+
+  /// The format options.
+  final FormattingOptions options;
+
+  /// The position at which this request was sent.
+  final Position position;
+
+  /// The document to format.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['position'] =
+        position ?? (throw 'position is required but was not set');
+    __result['ch'] = ch ?? (throw 'ch is required but was not set');
+    __result['options'] =
+        options ?? (throw 'options is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('position') &&
+        Position.canParse(obj['position']) &&
+        obj.containsKey('ch') &&
+        obj['ch'] is String &&
+        obj.containsKey('options') &&
+        FormattingOptions.canParse(obj['options']);
+  }
+}
+
+class DocumentOnTypeFormattingRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  DocumentOnTypeFormattingRegistrationOptions(this.firstTriggerCharacter,
+      this.moreTriggerCharacter, this.documentSelector) {
+    if (firstTriggerCharacter == null) {
+      throw 'firstTriggerCharacter is required but was not provided';
+    }
+  }
+  factory DocumentOnTypeFormattingRegistrationOptions.fromJson(
+      Map<String, dynamic> json) {
+    final firstTriggerCharacter = json['firstTriggerCharacter'];
+    final moreTriggerCharacter = json['moreTriggerCharacter']
+        ?.map((item) => item)
+        ?.cast<String>()
+        ?.toList();
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new DocumentOnTypeFormattingRegistrationOptions(
+        firstTriggerCharacter, moreTriggerCharacter, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the registration. If
+  /// set to null the document selector provided on the client side will
+  /// be used.
+  final List<DocumentFilter> documentSelector;
+
+  /// A character on which formatting should be triggered, like `}`.
+  final String firstTriggerCharacter;
+
+  /// More trigger characters.
+  final List<String> moreTriggerCharacter;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['firstTriggerCharacter'] = firstTriggerCharacter ??
+        (throw 'firstTriggerCharacter is required but was not set');
+    if (moreTriggerCharacter != null) {
+      __result['moreTriggerCharacter'] = moreTriggerCharacter;
+    }
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('firstTriggerCharacter') &&
+        obj['firstTriggerCharacter'] is String &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+class DocumentRangeFormattingParams implements ToJsonable {
+  DocumentRangeFormattingParams(this.textDocument, this.range, this.options) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+    if (options == null) {
+      throw 'options is required but was not provided';
+    }
+  }
+  factory DocumentRangeFormattingParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final options = json['options'] != null
+        ? new FormattingOptions.fromJson(json['options'])
+        : null;
+    return new DocumentRangeFormattingParams(textDocument, range, options);
+  }
+
+  /// The format options
+  final FormattingOptions options;
+
+  /// The range to format
+  final Range range;
+
+  /// The document to format.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    __result['options'] =
+        options ?? (throw 'options is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']) &&
+        obj.containsKey('options') &&
+        FormattingOptions.canParse(obj['options']);
+  }
+}
+
+/// Represents programming constructs like variables, classes,
+/// interfaces etc. that appear in a document. Document symbols can be
+/// hierarchical and they have two ranges: one that encloses its
+/// definition and one that points to its most interesting range, e.g.
+/// the range of an identifier.
+class DocumentSymbol implements ToJsonable {
+  DocumentSymbol(this.name, this.detail, this.kind, this.deprecated, this.range,
+      this.selectionRange, this.children) {
+    if (name == null) {
+      throw 'name is required but was not provided';
+    }
+    if (kind == null) {
+      throw 'kind is required but was not provided';
+    }
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+    if (selectionRange == null) {
+      throw 'selectionRange is required but was not provided';
+    }
+  }
+  factory DocumentSymbol.fromJson(Map<String, dynamic> json) {
+    final name = json['name'];
+    final detail = json['detail'];
+    final kind =
+        json['kind'] != null ? new SymbolKind.fromJson(json['kind']) : null;
+    final deprecated = json['deprecated'];
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final selectionRange = json['selectionRange'] != null
+        ? new Range.fromJson(json['selectionRange'])
+        : null;
+    final children = json['children']
+        ?.map((item) => item != null ? new DocumentSymbol.fromJson(item) : null)
+        ?.cast<DocumentSymbol>()
+        ?.toList();
+    return new DocumentSymbol(
+        name, detail, kind, deprecated, range, selectionRange, children);
+  }
+
+  /// Children of this symbol, e.g. properties of a class.
+  final List<DocumentSymbol> children;
+
+  /// Indicates if this symbol is deprecated.
+  final bool deprecated;
+
+  /// More detail for this symbol, e.g the signature of a function.
+  final String detail;
+
+  /// The kind of this symbol.
+  final SymbolKind kind;
+
+  /// The name of this symbol.
+  final String name;
+
+  /// The range enclosing this symbol not including leading/trailing
+  /// whitespace but everything else like comments. This information is
+  /// typically used to determine if the clients cursor is inside the
+  /// symbol to reveal in the symbol in the UI.
+  final Range range;
+
+  /// The range that should be selected and revealed when this symbol is
+  /// being picked, e.g the name of a function. Must be contained by the
+  /// `range`.
+  final Range selectionRange;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['name'] = name ?? (throw 'name is required but was not set');
+    if (detail != null) {
+      __result['detail'] = detail;
+    }
+    __result['kind'] = kind ?? (throw 'kind is required but was not set');
+    if (deprecated != null) {
+      __result['deprecated'] = deprecated;
+    }
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    __result['selectionRange'] =
+        selectionRange ?? (throw 'selectionRange is required but was not set');
+    if (children != null) {
+      __result['children'] = children;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('name') &&
+        obj['name'] is String &&
+        obj.containsKey('kind') &&
+        SymbolKind.canParse(obj['kind']) &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']) &&
+        obj.containsKey('selectionRange') &&
+        Range.canParse(obj['selectionRange']);
+  }
+}
+
+class DocumentSymbolParams implements ToJsonable {
+  DocumentSymbolParams(this.textDocument) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+  }
+  factory DocumentSymbolParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    return new DocumentSymbolParams(textDocument);
+  }
+
+  /// The text document.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']);
+  }
+}
+
+abstract class ErrorCodes {
+  static const InternalError = -32603;
+  static const InvalidParams = -32602;
+  static const InvalidRequest = -32600;
+  static const MethodNotFound = -32601;
+  static const ParseError = -32700;
+  static const RequestCancelled = -32800;
+  static const ServerNotInitialized = -32002;
+  static const UnknownErrorCode = -32001;
+  static const serverErrorEnd = -32000;
+  static const serverErrorStart = -32099;
+}
+
+/// Execute command options.
+class ExecuteCommandOptions implements ToJsonable {
+  ExecuteCommandOptions(this.commands) {
+    if (commands == null) {
+      throw 'commands is required but was not provided';
+    }
+  }
+  factory ExecuteCommandOptions.fromJson(Map<String, dynamic> json) {
+    final commands =
+        json['commands']?.map((item) => item)?.cast<String>()?.toList();
+    return new ExecuteCommandOptions(commands);
+  }
+
+  /// The commands to be executed on the server
+  final List<String> commands;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['commands'] =
+        commands ?? (throw 'commands is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('commands') &&
+        (obj['commands'] is List &&
+            (obj['commands'].length == 0 ||
+                obj['commands'].every((item) => item is String)));
+  }
+}
+
+class ExecuteCommandParams implements ToJsonable {
+  ExecuteCommandParams(this.command, this.arguments) {
+    if (command == null) {
+      throw 'command is required but was not provided';
+    }
+  }
+  factory ExecuteCommandParams.fromJson(Map<String, dynamic> json) {
+    final command = json['command'];
+    final arguments =
+        json['arguments']?.map((item) => item)?.cast<dynamic>()?.toList();
+    return new ExecuteCommandParams(command, arguments);
+  }
+
+  /// Arguments that the command should be invoked with.
+  final List<dynamic> arguments;
+
+  /// The identifier of the actual command handler.
+  final String command;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['command'] =
+        command ?? (throw 'command is required but was not set');
+    if (arguments != null) {
+      __result['arguments'] = arguments;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('command') &&
+        obj['command'] is String;
+  }
+}
+
+/// Execute command registration options.
+class ExecuteCommandRegistrationOptions implements ToJsonable {
+  ExecuteCommandRegistrationOptions(this.commands) {
+    if (commands == null) {
+      throw 'commands is required but was not provided';
+    }
+  }
+  factory ExecuteCommandRegistrationOptions.fromJson(
+      Map<String, dynamic> json) {
+    final commands =
+        json['commands']?.map((item) => item)?.cast<String>()?.toList();
+    return new ExecuteCommandRegistrationOptions(commands);
+  }
+
+  /// The commands to be executed on the server
+  final List<String> commands;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['commands'] =
+        commands ?? (throw 'commands is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('commands') &&
+        (obj['commands'] is List &&
+            (obj['commands'].length == 0 ||
+                obj['commands'].every((item) => item is String)));
+  }
+}
+
+class FailureHandlingKind {
+  const FailureHandlingKind._(this._value);
+  const FailureHandlingKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 'abort':
+      case 'transactional':
+      case 'textOnlyTransactional':
+      case 'undo':
+        return true;
+    }
+    return false;
+  }
+
+  /// Applying the workspace change is simply aborted if one of the
+  /// changes provided fails. All operations executed before the
+  /// failing operation stay executed.
+  static const Abort = const FailureHandlingKind._('abort');
+
+  /// All operations are executed transactional. That means they
+  /// either all succeed or no changes at all are applied to the
+  /// workspace.
+  static const Transactional = const FailureHandlingKind._('transactional');
+
+  /// If the workspace edit contains only textual file changes they
+  /// are executed transactional. If resource changes (create, rename
+  /// or delete file) are part of the change the failure handling
+  /// startegy is abort.
+  static const TextOnlyTransactional =
+      const FailureHandlingKind._('textOnlyTransactional');
+
+  /// The client tries to undo the operations already executed. But
+  /// there is no guaruntee that this is succeeding.
+  static const Undo = const FailureHandlingKind._('undo');
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is FailureHandlingKind && o._value == _value;
+}
+
+/// The file event type.
+class FileChangeType {
+  const FileChangeType._(this._value);
+  const FileChangeType.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+        return true;
+    }
+    return false;
+  }
+
+  /// The file got created.
+  static const Created = const FileChangeType._(1);
+
+  /// The file got changed.
+  static const Changed = const FileChangeType._(2);
+
+  /// The file got deleted.
+  static const Deleted = const FileChangeType._(3);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is FileChangeType && o._value == _value;
+}
+
+/// An event describing a file change.
+class FileEvent implements ToJsonable {
+  FileEvent(this.uri, this.type) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+    if (type == null) {
+      throw 'type is required but was not provided';
+    }
+  }
+  factory FileEvent.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    final type = json['type'];
+    return new FileEvent(uri, type);
+  }
+
+  /// The change type.
+  final num type;
+
+  /// The file's URI.
+  final String uri;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    __result['type'] = type ?? (throw 'type is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String &&
+        obj.containsKey('type') &&
+        obj['type'] is num;
+  }
+}
+
+class FileSystemWatcher implements ToJsonable {
+  FileSystemWatcher(this.globPattern, this.kind) {
+    if (globPattern == null) {
+      throw 'globPattern is required but was not provided';
+    }
+  }
+  factory FileSystemWatcher.fromJson(Map<String, dynamic> json) {
+    final globPattern = json['globPattern'];
+    final kind =
+        json['kind'] != null ? new WatchKind.fromJson(json['kind']) : null;
+    return new FileSystemWatcher(globPattern, kind);
+  }
+
+  /// The  glob pattern to watch
+  final String globPattern;
+
+  /// The kind of events of interest. If omitted it defaults to
+  /// WatchKind.Create | WatchKind.Change | WatchKind.Delete which
+  /// is 7.
+  final WatchKind kind;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['globPattern'] =
+        globPattern ?? (throw 'globPattern is required but was not set');
+    if (kind != null) {
+      __result['kind'] = kind;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('globPattern') &&
+        obj['globPattern'] is String;
+  }
+}
+
+/// Represents a folding range.
+class FoldingRange implements ToJsonable {
+  FoldingRange(this.startLine, this.startCharacter, this.endLine,
+      this.endCharacter, this.kind) {
+    if (startLine == null) {
+      throw 'startLine is required but was not provided';
+    }
+    if (endLine == null) {
+      throw 'endLine is required but was not provided';
+    }
+  }
+  factory FoldingRange.fromJson(Map<String, dynamic> json) {
+    final startLine = json['startLine'];
+    final startCharacter = json['startCharacter'];
+    final endLine = json['endLine'];
+    final endCharacter = json['endCharacter'];
+    final kind = json['kind'] != null
+        ? new FoldingRangeKind.fromJson(json['kind'])
+        : null;
+    return new FoldingRange(
+        startLine, startCharacter, endLine, endCharacter, kind);
+  }
+
+  /// The zero-based character offset before the folded range ends.
+  /// If not defined, defaults to the length of the end line.
+  final num endCharacter;
+
+  /// The zero-based line number where the folded range ends.
+  final num endLine;
+
+  /// Describes the kind of the folding range such as `comment' or
+  /// 'region'. The kind is used to categorize folding ranges and
+  /// used by commands like 'Fold all comments'. See
+  /// [FoldingRangeKind] for an enumeration of standardized kinds.
+  final FoldingRangeKind kind;
+
+  /// The zero-based character offset from where the folded range
+  /// starts. If not defined, defaults to the length of the start
+  /// line.
+  final num startCharacter;
+
+  /// The zero-based line number from where the folded range starts.
+  final num startLine;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['startLine'] =
+        startLine ?? (throw 'startLine is required but was not set');
+    if (startCharacter != null) {
+      __result['startCharacter'] = startCharacter;
+    }
+    __result['endLine'] =
+        endLine ?? (throw 'endLine is required but was not set');
+    if (endCharacter != null) {
+      __result['endCharacter'] = endCharacter;
+    }
+    if (kind != null) {
+      __result['kind'] = kind;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('startLine') &&
+        obj['startLine'] is num &&
+        obj.containsKey('endLine') &&
+        obj['endLine'] is num;
+  }
+}
+
+/// Enum of known range kinds
+class FoldingRangeKind {
+  const FoldingRangeKind._(this._value);
+  const FoldingRangeKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 'comment':
+      case 'imports':
+      case 'region':
+        return true;
+    }
+    return false;
+  }
+
+  /// Folding range for a comment
+  static const Comment = const FoldingRangeKind._('comment');
+
+  /// Folding range for a imports or includes
+  static const Imports = const FoldingRangeKind._('imports');
+
+  /// Folding range for a region (e.g. `#region`)
+  static const Region = const FoldingRangeKind._('region');
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is FoldingRangeKind && o._value == _value;
+}
+
+class FoldingRangeParams implements ToJsonable {
+  FoldingRangeParams(this.textDocument) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+  }
+  factory FoldingRangeParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    return new FoldingRangeParams(textDocument);
+  }
+
+  /// The text document.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']);
+  }
+}
+
+/// Folding range provider options.
+class FoldingRangeProviderOptions implements ToJsonable {
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// Value-object describing what options formatting should use.
+class FormattingOptions implements ToJsonable {
+  FormattingOptions(this.tabSize, this.insertSpaces) {
+    if (tabSize == null) {
+      throw 'tabSize is required but was not provided';
+    }
+    if (insertSpaces == null) {
+      throw 'insertSpaces is required but was not provided';
+    }
+  }
+  factory FormattingOptions.fromJson(Map<String, dynamic> json) {
+    final tabSize = json['tabSize'];
+    final insertSpaces = json['insertSpaces'];
+    return new FormattingOptions(tabSize, insertSpaces);
+  }
+
+  /// Prefer spaces over tabs.
+  final bool insertSpaces;
+
+  /// Size of a tab in spaces.
+  final num tabSize;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['tabSize'] =
+        tabSize ?? (throw 'tabSize is required but was not set');
+    __result['insertSpaces'] =
+        insertSpaces ?? (throw 'insertSpaces is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('tabSize') &&
+        obj['tabSize'] is num &&
+        obj.containsKey('insertSpaces') &&
+        obj['insertSpaces'] is bool;
+  }
+}
+
+/// The result of a hover request.
+class Hover implements ToJsonable {
+  Hover(this.contents, this.range) {
+    if (contents == null) {
+      throw 'contents is required but was not provided';
+    }
+  }
+  factory Hover.fromJson(Map<String, dynamic> json) {
+    final contents = MarkedString.canParse(json['contents'])
+        ? new Either3<MarkedString, List<MarkedString>, MarkupContent>.t1(
+            json['contents'] != null
+                ? new MarkedString.fromJson(json['contents'])
+                : null)
+        : ((json['contents'] is List &&
+                (json['contents'].length == 0 ||
+                    json['contents']
+                        .every((item) => MarkedString.canParse(item))))
+            ? new Either3<MarkedString, List<MarkedString>, MarkupContent>.t2(json['contents']
+                ?.map((item) =>
+                    item != null ? new MarkedString.fromJson(item) : null)
+                ?.cast<MarkedString>()
+                ?.toList())
+            : (MarkupContent.canParse(json['contents'])
+                ? new Either3<MarkedString, List<MarkedString>, MarkupContent>.t3(
+                    json['contents'] != null
+                        ? new MarkupContent.fromJson(json['contents'])
+                        : null)
+                : (throw '''${json['contents']} was not one of (MarkedString, MarkedString[], MarkupContent)''')));
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    return new Hover(contents, range);
+  }
+
+  /// The hover's content
+  final Either3<MarkedString, List<MarkedString>, MarkupContent> contents;
+
+  /// An optional range is a range inside a text document that is
+  /// used to visualize a hover, e.g. by changing the background
+  /// color.
+  final Range range;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['contents'] =
+        contents ?? (throw 'contents is required but was not set');
+    if (range != null) {
+      __result['range'] = range;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('contents') &&
+        (MarkedString.canParse(obj['contents']) ||
+            (obj['contents'] is List &&
+                (obj['contents'].length == 0 ||
+                    obj['contents']
+                        .every((item) => MarkedString.canParse(item)))) ||
+            MarkupContent.canParse(obj['contents']));
+  }
+}
+
+class InitializeParams implements ToJsonable {
+  InitializeParams(this.processId, this.rootPath, this.rootUri,
+      this.initializationOptions, this.capabilities, this.workspaceFolders) {
+    if (capabilities == null) {
+      throw 'capabilities is required but was not provided';
+    }
+  }
+  factory InitializeParams.fromJson(Map<String, dynamic> json) {
+    final processId = json['processId'];
+    final rootPath = json['rootPath'];
+    final rootUri = json['rootUri'];
+    final initializationOptions = json['initializationOptions'];
+    final capabilities = json['capabilities'] != null
+        ? new ClientCapabilities.fromJson(json['capabilities'])
+        : null;
+    final workspaceFolders = json['workspaceFolders']
+        ?.map(
+            (item) => item != null ? new WorkspaceFolder.fromJson(item) : null)
+        ?.cast<WorkspaceFolder>()
+        ?.toList();
+    return new InitializeParams(processId, rootPath, rootUri,
+        initializationOptions, capabilities, workspaceFolders);
+  }
+
+  /// The capabilities provided by the client (editor or tool)
+  final ClientCapabilities capabilities;
+
+  /// User provided initialization options.
+  final dynamic initializationOptions;
+
+  /// The process Id of the parent process that started the
+  /// server. Is null if the process has not been started by
+  /// another process. If the parent process is not alive then the
+  /// server should exit (see exit notification) its process.
+  final num processId;
+
+  /// The rootPath of the workspace. Is null if no folder is open.
+  ///  @deprecated in favour of rootUri.
+  @core.deprecated
+  final String rootPath;
+
+  /// The rootUri of the workspace. Is null if no folder is open.
+  /// If both `rootPath` and `rootUri` are set `rootUri` wins.
+  final String rootUri;
+
+  /// The workspace folders configured in the client when the
+  /// server starts. This property is only available if the client
+  /// supports workspace folders. It can be `null` if the client
+  /// supports workspace folders but none are configured.
+  ///
+  /// Since 3.6.0
+  final List<WorkspaceFolder> workspaceFolders;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['processId'] = processId;
+    // ignore: deprecated_member_use
+    if (rootPath != null) {
+      // ignore: deprecated_member_use
+      __result['rootPath'] = rootPath;
+    }
+    __result['rootUri'] = rootUri;
+    if (initializationOptions != null) {
+      __result['initializationOptions'] = initializationOptions;
+    }
+    __result['capabilities'] =
+        capabilities ?? (throw 'capabilities is required but was not set');
+    if (workspaceFolders != null) {
+      __result['workspaceFolders'] = workspaceFolders;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('processId') &&
+        obj['processId'] is num &&
+        obj.containsKey('rootUri') &&
+        obj['rootUri'] is String &&
+        obj.containsKey('capabilities') &&
+        ClientCapabilities.canParse(obj['capabilities']);
+  }
+}
+
+class InitializeResult implements ToJsonable {
+  InitializeResult(this.capabilities) {
+    if (capabilities == null) {
+      throw 'capabilities is required but was not provided';
+    }
+  }
+  factory InitializeResult.fromJson(Map<String, dynamic> json) {
+    final capabilities = json['capabilities'] != null
+        ? new ServerCapabilities.fromJson(json['capabilities'])
+        : null;
+    return new InitializeResult(capabilities);
+  }
+
+  /// The capabilities the language server provides.
+  final ServerCapabilities capabilities;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['capabilities'] =
+        capabilities ?? (throw 'capabilities is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('capabilities') &&
+        ServerCapabilities.canParse(obj['capabilities']);
+  }
+}
+
+class InitializedParams implements ToJsonable {
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// Defines whether the insert text in a completion item should be
+/// interpreted as plain text or a snippet.
+class InsertTextFormat {
+  const InsertTextFormat._(this._value);
+  const InsertTextFormat.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+        return true;
+    }
+    return false;
+  }
+
+  /// The primary text to be inserted is treated as a plain
+  /// string.
+  static const PlainText = const InsertTextFormat._(1);
+
+  /// The primary text to be inserted is treated as a snippet.
+  ///
+  /// A snippet can define tab stops and placeholders with `$1`,
+  /// `$2` and `${3:foo}`. `$0` defines the final tab stop, it
+  /// defaults to the end of the snippet. Placeholders with
+  /// equal identifiers are linked, that is typing in one will
+  /// update others too.
+  static const Snippet = const InsertTextFormat._(2);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is InsertTextFormat && o._value == _value;
+}
+
+class Location implements ToJsonable {
+  Location(this.uri, this.range) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+  }
+  factory Location.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    return new Location(uri, range);
+  }
+
+  final Range range;
+  final String uri;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']);
+  }
+}
+
+class LogMessageParams implements ToJsonable {
+  LogMessageParams(this.type, this.message) {
+    if (type == null) {
+      throw 'type is required but was not provided';
+    }
+    if (message == null) {
+      throw 'message is required but was not provided';
+    }
+  }
+  factory LogMessageParams.fromJson(Map<String, dynamic> json) {
+    final type =
+        json['type'] != null ? new MessageType.fromJson(json['type']) : null;
+    final message = json['message'];
+    return new LogMessageParams(type, message);
+  }
+
+  /// The actual message
+  final String message;
+
+  /// The message type.
+  final MessageType type;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['type'] = type ?? (throw 'type is required but was not set');
+    __result['message'] =
+        message ?? (throw 'message is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('type') &&
+        MessageType.canParse(obj['type']) &&
+        obj.containsKey('message') &&
+        obj['message'] is String;
+  }
+}
+
+class MarkedString implements ToJsonable {
+  MarkedString(this.language, this.value) {
+    if (language == null) {
+      throw 'language is required but was not provided';
+    }
+    if (value == null) {
+      throw 'value is required but was not provided';
+    }
+  }
+  factory MarkedString.fromJson(Map<String, dynamic> json) {
+    final language = json['language'];
+    final value = json['value'];
+    return new MarkedString(language, value);
+  }
+
+  final String language;
+  final String value;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['language'] =
+        language ?? (throw 'language is required but was not set');
+    __result['value'] = value ?? (throw 'value is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('language') &&
+        obj['language'] is String &&
+        obj.containsKey('value') &&
+        obj['value'] is String;
+  }
+}
+
+/// A `MarkupContent` literal represents a string value which
+/// content is interpreted base on its kind flag. Currently the
+/// protocol supports `plaintext` and `markdown` as markup
+/// kinds.
+///
+/// If the kind is `markdown` then the value can contain fenced
+/// code blocks like in GitHub issues. See
+/// https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting
+///
+/// Here is an example how such a string can be constructed
+/// using JavaScript / TypeScript: ```ts let markdown:
+/// MarkdownContent = {
+///
+/// kind: MarkupKind.Markdown,
+/// 	value: [
+/// 		'# Header',
+/// 		'Some text',
+/// 		'```typescript',
+/// 		'someCode();',
+/// 		'```'
+/// 	].join('\n') }; ```
+///
+/// *Please Note* that clients might sanitize the return
+/// markdown. A client could decide to remove HTML from the
+/// markdown to avoid script execution.
+class MarkupContent implements ToJsonable {
+  MarkupContent(this.kind, this.value) {
+    if (kind == null) {
+      throw 'kind is required but was not provided';
+    }
+    if (value == null) {
+      throw 'value is required but was not provided';
+    }
+  }
+  factory MarkupContent.fromJson(Map<String, dynamic> json) {
+    final kind =
+        json['kind'] != null ? new MarkupKind.fromJson(json['kind']) : null;
+    final value = json['value'];
+    return new MarkupContent(kind, value);
+  }
+
+  /// The type of the Markup
+  final MarkupKind kind;
+
+  /// The content itself
+  final String value;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['kind'] = kind ?? (throw 'kind is required but was not set');
+    __result['value'] = value ?? (throw 'value is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('kind') &&
+        MarkupKind.canParse(obj['kind']) &&
+        obj.containsKey('value') &&
+        obj['value'] is String;
+  }
+}
+
+/// Describes the content type that a client supports in various
+/// result literals like `Hover`, `ParameterInfo` or
+/// `CompletionItem`.
+///
+/// Please note that `MarkupKinds` must not start with a `$`.
+/// This kinds are reserved for internal usage.
+class MarkupKind {
+  const MarkupKind._(this._value);
+  const MarkupKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 'plaintext':
+      case 'markdown':
+        return true;
+    }
+    return false;
+  }
+
+  /// Plain text is supported as a content format
+  static const PlainText = const MarkupKind._('plaintext');
+
+  /// Markdown is supported as a content format
+  static const Markdown = const MarkupKind._('markdown');
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is MarkupKind && o._value == _value;
+}
+
+class Message implements ToJsonable {
+  Message(this.jsonrpc) {
+    if (jsonrpc == null) {
+      throw 'jsonrpc is required but was not provided';
+    }
+  }
+  factory Message.fromJson(Map<String, dynamic> json) {
+    final jsonrpc = json['jsonrpc'];
+    return new Message(jsonrpc);
+  }
+
+  final String jsonrpc;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['jsonrpc'] =
+        jsonrpc ?? (throw 'jsonrpc is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('jsonrpc') &&
+        obj['jsonrpc'] is String;
+  }
+}
+
+class MessageActionItem implements ToJsonable {
+  MessageActionItem(this.title) {
+    if (title == null) {
+      throw 'title is required but was not provided';
+    }
+  }
+  factory MessageActionItem.fromJson(Map<String, dynamic> json) {
+    final title = json['title'];
+    return new MessageActionItem(title);
+  }
+
+  /// A short title like 'Retry', 'Open Log' etc.
+  final String title;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['title'] = title ?? (throw 'title is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('title') &&
+        obj['title'] is String;
+  }
+}
+
+class MessageType {
+  const MessageType._(this._value);
+  const MessageType.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+      case 4:
+        return true;
+    }
+    return false;
+  }
+
+  /// An error message.
+  static const Error = const MessageType._(1);
+
+  /// A warning message.
+  static const Warning = const MessageType._(2);
+
+  /// An information message.
+  static const Info = const MessageType._(3);
+
+  /// A log message.
+  static const Log = const MessageType._(4);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is MessageType && o._value == _value;
+}
+
+class NotificationMessage implements Message, ToJsonable {
+  NotificationMessage(this.method, this.params, this.jsonrpc) {
+    if (method == null) {
+      throw 'method is required but was not provided';
+    }
+    if (jsonrpc == null) {
+      throw 'jsonrpc is required but was not provided';
+    }
+  }
+  factory NotificationMessage.fromJson(Map<String, dynamic> json) {
+    final method = json['method'];
+    final params = (json['params'] is List &&
+            (json['params'].length == 0 ||
+                json['params'].every((item) => true)))
+        ? new Either2<List<dynamic>, dynamic>.t1(
+            json['params']?.map((item) => item)?.cast<dynamic>()?.toList())
+        : (new Either2<List<dynamic>, dynamic>.t2(json['params']));
+    final jsonrpc = json['jsonrpc'];
+    return new NotificationMessage(method, params, jsonrpc);
+  }
+
+  final String jsonrpc;
+
+  /// The method to be invoked.
+  final String method;
+
+  /// The notification's params.
+  final Either2<List<dynamic>, dynamic> params;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['method'] = method ?? (throw 'method is required but was not set');
+    if (params != null) {
+      __result['params'] = params;
+    }
+    __result['jsonrpc'] =
+        jsonrpc ?? (throw 'jsonrpc is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('method') &&
+        obj['method'] is String &&
+        obj.containsKey('jsonrpc') &&
+        obj['jsonrpc'] is String;
+  }
+}
+
+/// Represents a parameter of a callable-signature. A
+/// parameter can have a label and a doc-comment.
+class ParameterInformation implements ToJsonable {
+  ParameterInformation(this.label, this.documentation) {
+    if (label == null) {
+      throw 'label is required but was not provided';
+    }
+  }
+  factory ParameterInformation.fromJson(Map<String, dynamic> json) {
+    final label = json['label'];
+    final documentation = json['documentation'] is String
+        ? new Either2<String, MarkupContent>.t1(json['documentation'])
+        : (MarkupContent.canParse(json['documentation'])
+            ? new Either2<String, MarkupContent>.t2(
+                json['documentation'] != null
+                    ? new MarkupContent.fromJson(json['documentation'])
+                    : null)
+            : (throw '''${json['documentation']} was not one of (string, MarkupContent)'''));
+    return new ParameterInformation(label, documentation);
+  }
+
+  /// The human-readable doc-comment of this parameter. Will
+  /// be shown in the UI but can be omitted.
+  final Either2<String, MarkupContent> documentation;
+
+  /// The label of this parameter. Will be shown in the UI.
+  final String label;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['label'] = label ?? (throw 'label is required but was not set');
+    if (documentation != null) {
+      __result['documentation'] = documentation;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('label') &&
+        obj['label'] is String;
+  }
+}
+
+class Position implements ToJsonable {
+  Position(this.line, this.character) {
+    if (line == null) {
+      throw 'line is required but was not provided';
+    }
+    if (character == null) {
+      throw 'character is required but was not provided';
+    }
+  }
+  factory Position.fromJson(Map<String, dynamic> json) {
+    final line = json['line'];
+    final character = json['character'];
+    return new Position(line, character);
+  }
+
+  /// Character offset on a line in a document (zero-based).
+  /// Assuming that the line is represented as a string, the
+  /// `character` value represents the gap between the
+  /// `character` and `character + 1`.
+  ///
+  /// If the character value is greater than the line length
+  /// it defaults back to the line length.
+  final num character;
+
+  /// Line position in a document (zero-based).
+  final num line;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['line'] = line ?? (throw 'line is required but was not set');
+    __result['character'] =
+        character ?? (throw 'character is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('line') &&
+        obj['line'] is num &&
+        obj.containsKey('character') &&
+        obj['character'] is num;
+  }
+}
+
+class PublishDiagnosticsParams implements ToJsonable {
+  PublishDiagnosticsParams(this.uri, this.diagnostics) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+    if (diagnostics == null) {
+      throw 'diagnostics is required but was not provided';
+    }
+  }
+  factory PublishDiagnosticsParams.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    final diagnostics = json['diagnostics']
+        ?.map((item) => item != null ? new Diagnostic.fromJson(item) : null)
+        ?.cast<Diagnostic>()
+        ?.toList();
+    return new PublishDiagnosticsParams(uri, diagnostics);
+  }
+
+  /// An array of diagnostic information items.
+  final List<Diagnostic> diagnostics;
+
+  /// The URI for which diagnostic information is reported.
+  final String uri;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    __result['diagnostics'] =
+        diagnostics ?? (throw 'diagnostics is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String &&
+        obj.containsKey('diagnostics') &&
+        (obj['diagnostics'] is List &&
+            (obj['diagnostics'].length == 0 ||
+                obj['diagnostics'].every((item) => Diagnostic.canParse(item))));
+  }
+}
+
+class Range implements ToJsonable {
+  Range(this.start, this.end) {
+    if (start == null) {
+      throw 'start is required but was not provided';
+    }
+    if (end == null) {
+      throw 'end is required but was not provided';
+    }
+  }
+  factory Range.fromJson(Map<String, dynamic> json) {
+    final start =
+        json['start'] != null ? new Position.fromJson(json['start']) : null;
+    final end = json['end'] != null ? new Position.fromJson(json['end']) : null;
+    return new Range(start, end);
+  }
+
+  /// The range's end position.
+  final Position end;
+
+  /// The range's start position.
+  final Position start;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['start'] = start ?? (throw 'start is required but was not set');
+    __result['end'] = end ?? (throw 'end is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('start') &&
+        Position.canParse(obj['start']) &&
+        obj.containsKey('end') &&
+        Position.canParse(obj['end']);
+  }
+}
+
+class ReferenceContext implements ToJsonable {
+  ReferenceContext(this.includeDeclaration) {
+    if (includeDeclaration == null) {
+      throw 'includeDeclaration is required but was not provided';
+    }
+  }
+  factory ReferenceContext.fromJson(Map<String, dynamic> json) {
+    final includeDeclaration = json['includeDeclaration'];
+    return new ReferenceContext(includeDeclaration);
+  }
+
+  /// Include the declaration of the current symbol.
+  final bool includeDeclaration;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['includeDeclaration'] = includeDeclaration ??
+        (throw 'includeDeclaration is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('includeDeclaration') &&
+        obj['includeDeclaration'] is bool;
+  }
+}
+
+class ReferenceParams implements TextDocumentPositionParams, ToJsonable {
+  ReferenceParams(this.context, this.textDocument, this.position) {
+    if (context == null) {
+      throw 'context is required but was not provided';
+    }
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (position == null) {
+      throw 'position is required but was not provided';
+    }
+  }
+  factory ReferenceParams.fromJson(Map<String, dynamic> json) {
+    final context = json['context'] != null
+        ? new ReferenceContext.fromJson(json['context'])
+        : null;
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final position = json['position'] != null
+        ? new Position.fromJson(json['position'])
+        : null;
+    return new ReferenceParams(context, textDocument, position);
+  }
+
+  final ReferenceContext context;
+
+  /// The position inside the text document.
+  final Position position;
+
+  /// The text document.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['context'] =
+        context ?? (throw 'context is required but was not set');
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['position'] =
+        position ?? (throw 'position is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('context') &&
+        ReferenceContext.canParse(obj['context']) &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('position') &&
+        Position.canParse(obj['position']);
+  }
+}
+
+/// General parameters to register for a capability.
+class Registration implements ToJsonable {
+  Registration(this.id, this.method, this.registerOptions) {
+    if (id == null) {
+      throw 'id is required but was not provided';
+    }
+    if (method == null) {
+      throw 'method is required but was not provided';
+    }
+  }
+  factory Registration.fromJson(Map<String, dynamic> json) {
+    final id = json['id'];
+    final method = json['method'];
+    final registerOptions = json['registerOptions'];
+    return new Registration(id, method, registerOptions);
+  }
+
+  /// The id used to register the request. The id can be
+  /// used to deregister the request again.
+  final String id;
+
+  /// The method / capability to register for.
+  final String method;
+
+  /// Options necessary for the registration.
+  final dynamic registerOptions;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['id'] = id ?? (throw 'id is required but was not set');
+    __result['method'] = method ?? (throw 'method is required but was not set');
+    if (registerOptions != null) {
+      __result['registerOptions'] = registerOptions;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('id') &&
+        obj['id'] is String &&
+        obj.containsKey('method') &&
+        obj['method'] is String;
+  }
+}
+
+class RegistrationParams implements ToJsonable {
+  RegistrationParams(this.registrations) {
+    if (registrations == null) {
+      throw 'registrations is required but was not provided';
+    }
+  }
+  factory RegistrationParams.fromJson(Map<String, dynamic> json) {
+    final registrations = json['registrations']
+        ?.map((item) => item != null ? new Registration.fromJson(item) : null)
+        ?.cast<Registration>()
+        ?.toList();
+    return new RegistrationParams(registrations);
+  }
+
+  final List<Registration> registrations;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['registrations'] =
+        registrations ?? (throw 'registrations is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('registrations') &&
+        (obj['registrations'] is List &&
+            (obj['registrations'].length == 0 ||
+                obj['registrations']
+                    .every((item) => Registration.canParse(item))));
+  }
+}
+
+/// Rename file operation
+class RenameFile implements FileOperation, ToJsonable {
+  RenameFile(this.oldUri, this.newUri, this.options) {
+    if (oldUri == null) {
+      throw 'oldUri is required but was not provided';
+    }
+    if (newUri == null) {
+      throw 'newUri is required but was not provided';
+    }
+  }
+  factory RenameFile.fromJson(Map<String, dynamic> json) {
+    final oldUri = json['oldUri'];
+    final newUri = json['newUri'];
+    final options = json['options'] != null
+        ? new RenameFileOptions.fromJson(json['options'])
+        : null;
+    return new RenameFile(oldUri, newUri, options);
+  }
+
+  /// The new location.
+  final String newUri;
+
+  /// The old (existing) location.
+  final String oldUri;
+
+  /// Rename options.
+  final RenameFileOptions options;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['oldUri'] = oldUri ?? (throw 'oldUri is required but was not set');
+    __result['newUri'] = newUri ?? (throw 'newUri is required but was not set');
+    if (options != null) {
+      __result['options'] = options;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('oldUri') &&
+        obj['oldUri'] is String &&
+        obj.containsKey('newUri') &&
+        obj['newUri'] is String;
+  }
+}
+
+/// Rename file options
+class RenameFileOptions implements ToJsonable {
+  RenameFileOptions(this.overwrite, this.ignoreIfExists);
+  factory RenameFileOptions.fromJson(Map<String, dynamic> json) {
+    final overwrite = json['overwrite'];
+    final ignoreIfExists = json['ignoreIfExists'];
+    return new RenameFileOptions(overwrite, ignoreIfExists);
+  }
+
+  /// Ignores if target exists.
+  final bool ignoreIfExists;
+
+  /// Overwrite target if existing. Overwrite wins over
+  /// `ignoreIfExists`
+  final bool overwrite;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (overwrite != null) {
+      __result['overwrite'] = overwrite;
+    }
+    if (ignoreIfExists != null) {
+      __result['ignoreIfExists'] = ignoreIfExists;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// Rename options
+class RenameOptions implements ToJsonable {
+  RenameOptions(this.prepareProvider);
+  factory RenameOptions.fromJson(Map<String, dynamic> json) {
+    final prepareProvider = json['prepareProvider'];
+    return new RenameOptions(prepareProvider);
+  }
+
+  /// Renames should be checked and tested before being
+  /// executed.
+  final bool prepareProvider;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (prepareProvider != null) {
+      __result['prepareProvider'] = prepareProvider;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class RenameParams implements ToJsonable {
+  RenameParams(this.textDocument, this.position, this.newName) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (position == null) {
+      throw 'position is required but was not provided';
+    }
+    if (newName == null) {
+      throw 'newName is required but was not provided';
+    }
+  }
+  factory RenameParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final position = json['position'] != null
+        ? new Position.fromJson(json['position'])
+        : null;
+    final newName = json['newName'];
+    return new RenameParams(textDocument, position, newName);
+  }
+
+  /// The new name of the symbol. If the given name is not
+  /// valid the request must return a [ResponseError] with
+  /// an appropriate message set.
+  final String newName;
+
+  /// The position at which this request was sent.
+  final Position position;
+
+  /// The document to rename.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['position'] =
+        position ?? (throw 'position is required but was not set');
+    __result['newName'] =
+        newName ?? (throw 'newName is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('position') &&
+        Position.canParse(obj['position']) &&
+        obj.containsKey('newName') &&
+        obj['newName'] is String;
+  }
+}
+
+class RenameRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  RenameRegistrationOptions(this.prepareProvider, this.documentSelector);
+  factory RenameRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final prepareProvider = json['prepareProvider'];
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new RenameRegistrationOptions(prepareProvider, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the
+  /// registration. If set to null the document selector
+  /// provided on the client side will be used.
+  final List<DocumentFilter> documentSelector;
+
+  /// Renames should be checked and tested for validity
+  /// before being executed.
+  final bool prepareProvider;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (prepareProvider != null) {
+      __result['prepareProvider'] = prepareProvider;
+    }
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+class RequestMessage implements Message, ToJsonable {
+  RequestMessage(this.id, this.method, this.params, this.jsonrpc) {
+    if (id == null) {
+      throw 'id is required but was not provided';
+    }
+    if (method == null) {
+      throw 'method is required but was not provided';
+    }
+    if (jsonrpc == null) {
+      throw 'jsonrpc is required but was not provided';
+    }
+  }
+  factory RequestMessage.fromJson(Map<String, dynamic> json) {
+    final id = json['id'] is num
+        ? new Either2<num, String>.t1(json['id'])
+        : (json['id'] is String
+            ? new Either2<num, String>.t2(json['id'])
+            : (throw '''${json['id']} was not one of (number, string)'''));
+    final method = json['method'];
+    final params = (json['params'] is List &&
+            (json['params'].length == 0 ||
+                json['params'].every((item) => true)))
+        ? new Either2<List<dynamic>, dynamic>.t1(
+            json['params']?.map((item) => item)?.cast<dynamic>()?.toList())
+        : (new Either2<List<dynamic>, dynamic>.t2(json['params']));
+    final jsonrpc = json['jsonrpc'];
+    return new RequestMessage(id, method, params, jsonrpc);
+  }
+
+  /// The request id.
+  final Either2<num, String> id;
+  final String jsonrpc;
+
+  /// The method to be invoked.
+  final String method;
+
+  /// The method's params.
+  final Either2<List<dynamic>, dynamic> params;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['id'] = id ?? (throw 'id is required but was not set');
+    __result['method'] = method ?? (throw 'method is required but was not set');
+    if (params != null) {
+      __result['params'] = params;
+    }
+    __result['jsonrpc'] =
+        jsonrpc ?? (throw 'jsonrpc is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('id') &&
+        (obj['id'] is num || obj['id'] is String) &&
+        obj.containsKey('method') &&
+        obj['method'] is String &&
+        obj.containsKey('jsonrpc') &&
+        obj['jsonrpc'] is String;
+  }
+}
+
+class ResourceOperationKind {
+  const ResourceOperationKind._(this._value);
+  const ResourceOperationKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 'create':
+      case 'rename':
+      case 'delete':
+        return true;
+    }
+    return false;
+  }
+
+  /// Supports creating new files and folders.
+  static const Create = const ResourceOperationKind._('create');
+
+  /// Supports renaming existing files and folders.
+  static const Rename = const ResourceOperationKind._('rename');
+
+  /// Supports deleting existing files and folders.
+  static const Delete = const ResourceOperationKind._('delete');
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is ResourceOperationKind && o._value == _value;
+}
+
+class ResponseError<D> implements ToJsonable {
+  ResponseError(this.code, this.message, this.data) {
+    if (code == null) {
+      throw 'code is required but was not provided';
+    }
+    if (message == null) {
+      throw 'message is required but was not provided';
+    }
+  }
+  factory ResponseError.fromJson(Map<String, dynamic> json) {
+    final code = json['code'];
+    final message = json['message'];
+    final data = json['data'];
+    return new ResponseError<D>(code, message, data);
+  }
+
+  /// A number indicating the error type that occurred.
+  final num code;
+
+  /// A Primitive or Structured value that contains
+  /// additional information about the error. Can be
+  /// omitted.
+  final D data;
+
+  /// A string providing a short description of the error.
+  final String message;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['code'] = code ?? (throw 'code is required but was not set');
+    __result['message'] =
+        message ?? (throw 'message is required but was not set');
+    if (data != null) {
+      __result['data'] = data;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('code') &&
+        obj['code'] is num &&
+        obj.containsKey('message') &&
+        obj['message'] is String;
+  }
+}
+
+class ResponseMessage implements Message, ToJsonable {
+  ResponseMessage(this.id, this.result, this.error, this.jsonrpc) {
+    if (jsonrpc == null) {
+      throw 'jsonrpc is required but was not provided';
+    }
+  }
+  factory ResponseMessage.fromJson(Map<String, dynamic> json) {
+    final id = json['id'] is num
+        ? new Either2<num, String>.t1(json['id'])
+        : (json['id'] is String
+            ? new Either2<num, String>.t2(json['id'])
+            : (throw '''${json['id']} was not one of (number, string)'''));
+    final result = json['result'];
+    final error = json['error'];
+    final jsonrpc = json['jsonrpc'];
+    return new ResponseMessage(id, result, error, jsonrpc);
+  }
+
+  /// The error object in case a request fails.
+  final ResponseError<dynamic> error;
+
+  /// The request id.
+  final Either2<num, String> id;
+  final String jsonrpc;
+
+  /// The result of a request. This can be omitted in the
+  /// case of an error.
+  final dynamic result;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['id'] = id;
+    if (result != null) {
+      __result['result'] = result;
+    }
+    if (error != null) {
+      __result['error'] = error;
+    }
+    __result['jsonrpc'] =
+        jsonrpc ?? (throw 'jsonrpc is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('id') &&
+        (obj['id'] is num || obj['id'] is String) &&
+        obj.containsKey('jsonrpc') &&
+        obj['jsonrpc'] is String;
+  }
+}
+
+/// Save options.
+class SaveOptions implements ToJsonable {
+  SaveOptions(this.includeText);
+  factory SaveOptions.fromJson(Map<String, dynamic> json) {
+    final includeText = json['includeText'];
+    return new SaveOptions(includeText);
+  }
+
+  /// The client is supposed to include the content on
+  /// save.
+  final bool includeText;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (includeText != null) {
+      __result['includeText'] = includeText;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class ServerCapabilities implements ToJsonable {
+  ServerCapabilities(
+      this.textDocumentSync,
+      this.hoverProvider,
+      this.completionProvider,
+      this.signatureHelpProvider,
+      this.definitionProvider,
+      this.referencesProvider,
+      this.documentHighlightProvider,
+      this.documentSymbolProvider,
+      this.workspaceSymbolProvider,
+      this.codeActionProvider,
+      this.codeLensProvider,
+      this.documentFormattingProvider,
+      this.documentRangeFormattingProvider,
+      this.documentOnTypeFormattingProvider,
+      this.renameProvider,
+      this.documentLinkProvider,
+      this.executeCommandProvider,
+      this.supported,
+      this.changeNotifications);
+  factory ServerCapabilities.fromJson(Map<String, dynamic> json) {
+    final textDocumentSync = TextDocumentSyncOptions.canParse(
+            json['textDocumentSync'])
+        ? new Either2<TextDocumentSyncOptions, num>.t1(
+            json['textDocumentSync'] != null
+                ? new TextDocumentSyncOptions.fromJson(json['textDocumentSync'])
+                : null)
+        : (json['textDocumentSync'] is num
+            ? new Either2<TextDocumentSyncOptions, num>.t2(
+                json['textDocumentSync'])
+            : (throw '''${json['textDocumentSync']} was not one of (TextDocumentSyncOptions, number)'''));
+    final hoverProvider = json['hoverProvider'];
+    final completionProvider = json['completionProvider'] != null
+        ? new CompletionOptions.fromJson(json['completionProvider'])
+        : null;
+    final signatureHelpProvider = json['signatureHelpProvider'] != null
+        ? new SignatureHelpOptions.fromJson(json['signatureHelpProvider'])
+        : null;
+    final definitionProvider = json['definitionProvider'];
+    final referencesProvider = json['referencesProvider'];
+    final documentHighlightProvider = json['documentHighlightProvider'];
+    final documentSymbolProvider = json['documentSymbolProvider'];
+    final workspaceSymbolProvider = json['workspaceSymbolProvider'];
+    final codeActionProvider = json['codeActionProvider'] is bool
+        ? new Either2<bool, CodeActionOptions>.t1(json['codeActionProvider'])
+        : (CodeActionOptions.canParse(json['codeActionProvider'])
+            ? new Either2<bool, CodeActionOptions>.t2(
+                json['codeActionProvider'] != null
+                    ? new CodeActionOptions.fromJson(json['codeActionProvider'])
+                    : null)
+            : (throw '''${json['codeActionProvider']} was not one of (boolean, CodeActionOptions)'''));
+    final codeLensProvider = json['codeLensProvider'] != null
+        ? new CodeLensOptions.fromJson(json['codeLensProvider'])
+        : null;
+    final documentFormattingProvider = json['documentFormattingProvider'];
+    final documentRangeFormattingProvider =
+        json['documentRangeFormattingProvider'];
+    final documentOnTypeFormattingProvider =
+        json['documentOnTypeFormattingProvider'] != null
+            ? new DocumentOnTypeFormattingOptions.fromJson(
+                json['documentOnTypeFormattingProvider'])
+            : null;
+    final renameProvider = json['renameProvider'] is bool
+        ? new Either2<bool, RenameOptions>.t1(json['renameProvider'])
+        : (RenameOptions.canParse(json['renameProvider'])
+            ? new Either2<bool, RenameOptions>.t2(json['renameProvider'] != null
+                ? new RenameOptions.fromJson(json['renameProvider'])
+                : null)
+            : (throw '''${json['renameProvider']} was not one of (boolean, RenameOptions)'''));
+    final documentLinkProvider = json['documentLinkProvider'] != null
+        ? new DocumentLinkOptions.fromJson(json['documentLinkProvider'])
+        : null;
+    final executeCommandProvider = json['executeCommandProvider'] != null
+        ? new ExecuteCommandOptions.fromJson(json['executeCommandProvider'])
+        : null;
+    final supported = json['supported'];
+    final changeNotifications = json['changeNotifications'] is String
+        ? new Either2<String, bool>.t1(json['changeNotifications'])
+        : (json['changeNotifications'] is bool
+            ? new Either2<String, bool>.t2(json['changeNotifications'])
+            : (throw '''${json['changeNotifications']} was not one of (string, boolean)'''));
+    return new ServerCapabilities(
+        textDocumentSync,
+        hoverProvider,
+        completionProvider,
+        signatureHelpProvider,
+        definitionProvider,
+        referencesProvider,
+        documentHighlightProvider,
+        documentSymbolProvider,
+        workspaceSymbolProvider,
+        codeActionProvider,
+        codeLensProvider,
+        documentFormattingProvider,
+        documentRangeFormattingProvider,
+        documentOnTypeFormattingProvider,
+        renameProvider,
+        documentLinkProvider,
+        executeCommandProvider,
+        supported,
+        changeNotifications);
+  }
+
+  /// Whether the server wants to receive workspace folder
+  /// change notifications.
+  ///
+  /// If a strings is provided the string is treated as a
+  /// ID under which the notification is registered on the
+  /// client side. The ID can be used to unregister for
+  /// these events using the `client/unregisterCapability`
+  /// request.
+  final Either2<String, bool> changeNotifications;
+
+  /// The server provides code actions. The
+  /// `CodeActionOptions` return type is only valid if the
+  /// client signals code action literal support via the
+  /// property
+  /// `textDocument.codeAction.codeActionLiteralSupport`.
+  final Either2<bool, CodeActionOptions> codeActionProvider;
+
+  /// The server provides code lens.
+  final CodeLensOptions codeLensProvider;
+
+  /// The server provides completion support.
+  final CompletionOptions completionProvider;
+
+  /// The server provides goto definition support.
+  final bool definitionProvider;
+
+  /// The server provides document formatting.
+  final bool documentFormattingProvider;
+
+  /// The server provides document highlight support.
+  final bool documentHighlightProvider;
+
+  /// The server provides document link support.
+  final DocumentLinkOptions documentLinkProvider;
+
+  /// The server provides document formatting on typing.
+  final DocumentOnTypeFormattingOptions documentOnTypeFormattingProvider;
+
+  /// The server provides document range formatting.
+  final bool documentRangeFormattingProvider;
+
+  /// The server provides document symbol support.
+  final bool documentSymbolProvider;
+
+  /// The server provides execute command support.
+  final ExecuteCommandOptions executeCommandProvider;
+
+  /// The server provides hover support.
+  final bool hoverProvider;
+
+  /// The server provides find references support.
+  final bool referencesProvider;
+
+  /// The server provides rename support. RenameOptions
+  /// may only be specified if the client states that it
+  /// supports `prepareSupport` in its initial
+  /// `initialize` request.
+  final Either2<bool, RenameOptions> renameProvider;
+
+  /// The server provides signature help support.
+  final SignatureHelpOptions signatureHelpProvider;
+
+  /// The server has support for workspace folders
+  final bool supported;
+
+  /// Defines how text documents are synced. Is either a
+  /// detailed structure defining each notification or for
+  /// backwards compatibility the TextDocumentSyncKind
+  /// number. If omitted it defaults to
+  /// `TextDocumentSyncKind.None`.
+  final Either2<TextDocumentSyncOptions, num> textDocumentSync;
+
+  /// The server provides workspace symbol support.
+  final bool workspaceSymbolProvider;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (textDocumentSync != null) {
+      __result['textDocumentSync'] = textDocumentSync;
+    }
+    if (hoverProvider != null) {
+      __result['hoverProvider'] = hoverProvider;
+    }
+    if (completionProvider != null) {
+      __result['completionProvider'] = completionProvider;
+    }
+    if (signatureHelpProvider != null) {
+      __result['signatureHelpProvider'] = signatureHelpProvider;
+    }
+    if (definitionProvider != null) {
+      __result['definitionProvider'] = definitionProvider;
+    }
+    if (referencesProvider != null) {
+      __result['referencesProvider'] = referencesProvider;
+    }
+    if (documentHighlightProvider != null) {
+      __result['documentHighlightProvider'] = documentHighlightProvider;
+    }
+    if (documentSymbolProvider != null) {
+      __result['documentSymbolProvider'] = documentSymbolProvider;
+    }
+    if (workspaceSymbolProvider != null) {
+      __result['workspaceSymbolProvider'] = workspaceSymbolProvider;
+    }
+    if (codeActionProvider != null) {
+      __result['codeActionProvider'] = codeActionProvider;
+    }
+    if (codeLensProvider != null) {
+      __result['codeLensProvider'] = codeLensProvider;
+    }
+    if (documentFormattingProvider != null) {
+      __result['documentFormattingProvider'] = documentFormattingProvider;
+    }
+    if (documentRangeFormattingProvider != null) {
+      __result['documentRangeFormattingProvider'] =
+          documentRangeFormattingProvider;
+    }
+    if (documentOnTypeFormattingProvider != null) {
+      __result['documentOnTypeFormattingProvider'] =
+          documentOnTypeFormattingProvider;
+    }
+    if (renameProvider != null) {
+      __result['renameProvider'] = renameProvider;
+    }
+    if (documentLinkProvider != null) {
+      __result['documentLinkProvider'] = documentLinkProvider;
+    }
+    if (executeCommandProvider != null) {
+      __result['executeCommandProvider'] = executeCommandProvider;
+    }
+    if (supported != null) {
+      __result['supported'] = supported;
+    }
+    if (changeNotifications != null) {
+      __result['changeNotifications'] = changeNotifications;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class ShowMessageParams implements ToJsonable {
+  ShowMessageParams(this.type, this.message) {
+    if (type == null) {
+      throw 'type is required but was not provided';
+    }
+    if (message == null) {
+      throw 'message is required but was not provided';
+    }
+  }
+  factory ShowMessageParams.fromJson(Map<String, dynamic> json) {
+    final type =
+        json['type'] != null ? new MessageType.fromJson(json['type']) : null;
+    final message = json['message'];
+    return new ShowMessageParams(type, message);
+  }
+
+  /// The actual message.
+  final String message;
+
+  /// The message type.
+  final MessageType type;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['type'] = type ?? (throw 'type is required but was not set');
+    __result['message'] =
+        message ?? (throw 'message is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('type') &&
+        MessageType.canParse(obj['type']) &&
+        obj.containsKey('message') &&
+        obj['message'] is String;
+  }
+}
+
+class ShowMessageRequestParams implements ToJsonable {
+  ShowMessageRequestParams(this.type, this.message, this.actions) {
+    if (type == null) {
+      throw 'type is required but was not provided';
+    }
+    if (message == null) {
+      throw 'message is required but was not provided';
+    }
+  }
+  factory ShowMessageRequestParams.fromJson(Map<String, dynamic> json) {
+    final type =
+        json['type'] != null ? new MessageType.fromJson(json['type']) : null;
+    final message = json['message'];
+    final actions = json['actions']
+        ?.map((item) =>
+            item != null ? new MessageActionItem.fromJson(item) : null)
+        ?.cast<MessageActionItem>()
+        ?.toList();
+    return new ShowMessageRequestParams(type, message, actions);
+  }
+
+  /// The message action items to present.
+  final List<MessageActionItem> actions;
+
+  /// The actual message
+  final String message;
+
+  /// The message type.
+  final MessageType type;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['type'] = type ?? (throw 'type is required but was not set');
+    __result['message'] =
+        message ?? (throw 'message is required but was not set');
+    if (actions != null) {
+      __result['actions'] = actions;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('type') &&
+        MessageType.canParse(obj['type']) &&
+        obj.containsKey('message') &&
+        obj['message'] is String;
+  }
+}
+
+/// Signature help represents the signature of something
+/// callable. There can be multiple signature but only one
+/// active and only one active parameter.
+class SignatureHelp implements ToJsonable {
+  SignatureHelp(this.signatures, this.activeSignature, this.activeParameter) {
+    if (signatures == null) {
+      throw 'signatures is required but was not provided';
+    }
+  }
+  factory SignatureHelp.fromJson(Map<String, dynamic> json) {
+    final signatures = json['signatures']
+        ?.map((item) =>
+            item != null ? new SignatureInformation.fromJson(item) : null)
+        ?.cast<SignatureInformation>()
+        ?.toList();
+    final activeSignature = json['activeSignature'];
+    final activeParameter = json['activeParameter'];
+    return new SignatureHelp(signatures, activeSignature, activeParameter);
+  }
+
+  /// The active parameter of the active signature. If
+  /// omitted or the value lies outside the range of
+  /// `signatures[activeSignature].parameters` defaults to
+  /// 0 if the active signature has parameters. If the
+  /// active signature has no parameters it is ignored. In
+  /// future version of the protocol this property might
+  /// become mandatory to better express the active
+  /// parameter if the active signature does have any.
+  final num activeParameter;
+
+  /// The active signature. If omitted or the value lies
+  /// outside the range of `signatures` the value defaults
+  /// to zero or is ignored if `signatures.length === 0`.
+  /// Whenever possible implementors should make an active
+  /// decision about the active signature and shouldn't
+  /// rely on a default value. In future version of the
+  /// protocol this property might become mandatory to
+  /// better express this.
+  final num activeSignature;
+
+  /// One or more signatures.
+  final List<SignatureInformation> signatures;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['signatures'] =
+        signatures ?? (throw 'signatures is required but was not set');
+    if (activeSignature != null) {
+      __result['activeSignature'] = activeSignature;
+    }
+    if (activeParameter != null) {
+      __result['activeParameter'] = activeParameter;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('signatures') &&
+        (obj['signatures'] is List &&
+            (obj['signatures'].length == 0 ||
+                obj['signatures']
+                    .every((item) => SignatureInformation.canParse(item))));
+  }
+}
+
+/// Signature help options.
+class SignatureHelpOptions implements ToJsonable {
+  SignatureHelpOptions(this.triggerCharacters);
+  factory SignatureHelpOptions.fromJson(Map<String, dynamic> json) {
+    final triggerCharacters = json['triggerCharacters']
+        ?.map((item) => item)
+        ?.cast<String>()
+        ?.toList();
+    return new SignatureHelpOptions(triggerCharacters);
+  }
+
+  /// The characters that trigger signature help
+  /// automatically.
+  final List<String> triggerCharacters;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class SignatureHelpRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  SignatureHelpRegistrationOptions(
+      this.triggerCharacters, this.documentSelector);
+  factory SignatureHelpRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final triggerCharacters = json['triggerCharacters']
+        ?.map((item) => item)
+        ?.cast<String>()
+        ?.toList();
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new SignatureHelpRegistrationOptions(
+        triggerCharacters, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the
+  /// registration. If set to null the document selector
+  /// provided on the client side will be used.
+  final List<DocumentFilter> documentSelector;
+
+  /// The characters that trigger signature help
+  /// automatically.
+  final List<String> triggerCharacters;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (triggerCharacters != null) {
+      __result['triggerCharacters'] = triggerCharacters;
+    }
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// Represents the signature of something callable. A
+/// signature can have a label, like a function-name, a
+/// doc-comment, and a set of parameters.
+class SignatureInformation implements ToJsonable {
+  SignatureInformation(this.label, this.documentation, this.parameters) {
+    if (label == null) {
+      throw 'label is required but was not provided';
+    }
+  }
+  factory SignatureInformation.fromJson(Map<String, dynamic> json) {
+    final label = json['label'];
+    final documentation = json['documentation'] is String
+        ? new Either2<String, MarkupContent>.t1(json['documentation'])
+        : (MarkupContent.canParse(json['documentation'])
+            ? new Either2<String, MarkupContent>.t2(
+                json['documentation'] != null
+                    ? new MarkupContent.fromJson(json['documentation'])
+                    : null)
+            : (throw '''${json['documentation']} was not one of (string, MarkupContent)'''));
+    final parameters = json['parameters']
+        ?.map((item) =>
+            item != null ? new ParameterInformation.fromJson(item) : null)
+        ?.cast<ParameterInformation>()
+        ?.toList();
+    return new SignatureInformation(label, documentation, parameters);
+  }
+
+  /// The human-readable doc-comment of this signature.
+  /// Will be shown in the UI but can be omitted.
+  final Either2<String, MarkupContent> documentation;
+
+  /// The label of this signature. Will be shown in the
+  /// UI.
+  final String label;
+
+  /// The parameters of this signature.
+  final List<ParameterInformation> parameters;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['label'] = label ?? (throw 'label is required but was not set');
+    if (documentation != null) {
+      __result['documentation'] = documentation;
+    }
+    if (parameters != null) {
+      __result['parameters'] = parameters;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('label') &&
+        obj['label'] is String;
+  }
+}
+
+/// Static registration options to be returned in the
+/// initialize request.
+class StaticRegistrationOptions implements ToJsonable {
+  StaticRegistrationOptions(this.id);
+  factory StaticRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final id = json['id'];
+    return new StaticRegistrationOptions(id);
+  }
+
+  /// The id used to register the request. The id can be
+  /// used to deregister the request again. See also
+  /// Registration#id.
+  final String id;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (id != null) {
+      __result['id'] = id;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// Represents information about programming constructs
+/// like variables, classes, interfaces etc.
+class SymbolInformation implements ToJsonable {
+  SymbolInformation(this.name, this.kind, this.deprecated, this.location,
+      this.containerName) {
+    if (name == null) {
+      throw 'name is required but was not provided';
+    }
+    if (kind == null) {
+      throw 'kind is required but was not provided';
+    }
+    if (location == null) {
+      throw 'location is required but was not provided';
+    }
+  }
+  factory SymbolInformation.fromJson(Map<String, dynamic> json) {
+    final name = json['name'];
+    final kind = json['kind'];
+    final deprecated = json['deprecated'];
+    final location = json['location'] != null
+        ? new Location.fromJson(json['location'])
+        : null;
+    final containerName = json['containerName'];
+    return new SymbolInformation(
+        name, kind, deprecated, location, containerName);
+  }
+
+  /// The name of the symbol containing this symbol. This
+  /// information is for user interface purposes (e.g. to
+  /// render a qualifier in the user interface if
+  /// necessary). It can't be used to re-infer a hierarchy
+  /// for the document symbols.
+  final String containerName;
+
+  /// Indicates if this symbol is deprecated.
+  final bool deprecated;
+
+  /// The kind of this symbol.
+  final num kind;
+
+  /// The location of this symbol. The location's range is
+  /// used by a tool to reveal the location in the editor.
+  /// If the symbol is selected in the tool the range's
+  /// start information is used to position the cursor. So
+  /// the range usually spans more then the actual
+  /// symbol's name and does normally include things like
+  /// visibility modifiers.
+  ///
+  /// The range doesn't have to denote a node range in the
+  /// sense of a abstract syntax tree. It can therefore
+  /// not be used to re-construct a hierarchy of the
+  /// symbols.
+  final Location location;
+
+  /// The name of this symbol.
+  final String name;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['name'] = name ?? (throw 'name is required but was not set');
+    __result['kind'] = kind ?? (throw 'kind is required but was not set');
+    if (deprecated != null) {
+      __result['deprecated'] = deprecated;
+    }
+    __result['location'] =
+        location ?? (throw 'location is required but was not set');
+    if (containerName != null) {
+      __result['containerName'] = containerName;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('name') &&
+        obj['name'] is String &&
+        obj.containsKey('kind') &&
+        obj['kind'] is num &&
+        obj.containsKey('location') &&
+        Location.canParse(obj['location']);
+  }
+}
+
+/// A symbol kind.
+class SymbolKind {
+  const SymbolKind._(this._value);
+  const SymbolKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+      case 4:
+      case 5:
+      case 6:
+      case 7:
+      case 8:
+      case 9:
+      case 10:
+      case 11:
+      case 12:
+      case 13:
+      case 14:
+      case 15:
+      case 16:
+      case 17:
+      case 18:
+      case 19:
+      case 20:
+      case 21:
+      case 22:
+      case 23:
+      case 24:
+      case 25:
+      case 26:
+        return true;
+    }
+    return false;
+  }
+
+  static const File = const SymbolKind._(1);
+  static const Module = const SymbolKind._(2);
+  static const Namespace = const SymbolKind._(3);
+  static const Package = const SymbolKind._(4);
+  static const Class = const SymbolKind._(5);
+  static const Method = const SymbolKind._(6);
+  static const Property = const SymbolKind._(7);
+  static const Field = const SymbolKind._(8);
+  static const Constructor = const SymbolKind._(9);
+  static const Enum = const SymbolKind._(10);
+  static const Interface = const SymbolKind._(11);
+  static const Function = const SymbolKind._(12);
+  static const Variable = const SymbolKind._(13);
+  static const Constant = const SymbolKind._(14);
+  static const Str = const SymbolKind._(15);
+  static const Number = const SymbolKind._(16);
+  static const Boolean = const SymbolKind._(17);
+  static const Array = const SymbolKind._(18);
+  static const Obj = const SymbolKind._(19);
+  static const Key = const SymbolKind._(20);
+  static const Null = const SymbolKind._(21);
+  static const EnumMember = const SymbolKind._(22);
+  static const Struct = const SymbolKind._(23);
+  static const Event = const SymbolKind._(24);
+  static const Operator = const SymbolKind._(25);
+  static const TypeParameter = const SymbolKind._(26);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is SymbolKind && o._value == _value;
+}
+
+/// Describe options to be used when registering for
+/// text document change events.
+class TextDocumentChangeRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  TextDocumentChangeRegistrationOptions(this.syncKind, this.documentSelector) {
+    if (syncKind == null) {
+      throw 'syncKind is required but was not provided';
+    }
+  }
+  factory TextDocumentChangeRegistrationOptions.fromJson(
+      Map<String, dynamic> json) {
+    final syncKind = json['syncKind'];
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new TextDocumentChangeRegistrationOptions(
+        syncKind, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the
+  /// registration. If set to null the document selector
+  /// provided on the client side will be used.
+  final List<DocumentFilter> documentSelector;
+
+  /// How documents are synced to the server. See
+  /// TextDocumentSyncKind.Full and
+  /// TextDocumentSyncKind.Incremental.
+  final num syncKind;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['syncKind'] =
+        syncKind ?? (throw 'syncKind is required but was not set');
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('syncKind') &&
+        obj['syncKind'] is num &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// Text document specific client capabilities.
+class TextDocumentClientCapabilities implements ToJsonable {
+  TextDocumentClientCapabilities(this.dynamicRegistration, this.willSave,
+      this.willSaveWaitUntil, this.didSave);
+  factory TextDocumentClientCapabilities.fromJson(Map<String, dynamic> json) {
+    final dynamicRegistration = json['dynamicRegistration'];
+    final willSave = json['willSave'];
+    final willSaveWaitUntil = json['willSaveWaitUntil'];
+    final didSave = json['didSave'];
+    return new TextDocumentClientCapabilities(
+        dynamicRegistration, willSave, willSaveWaitUntil, didSave);
+  }
+
+  /// The client supports did save notifications.
+  final bool didSave;
+
+  /// Whether text document synchronization supports
+  /// dynamic registration.
+  final bool dynamicRegistration;
+
+  /// The client supports sending will save
+  /// notifications.
+  final bool willSave;
+
+  /// The client supports sending a will save request
+  /// and waits for a response providing text edits
+  /// which will be applied to the document before it is
+  /// saved.
+  final bool willSaveWaitUntil;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (dynamicRegistration != null) {
+      __result['dynamicRegistration'] = dynamicRegistration;
+    }
+    if (willSave != null) {
+      __result['willSave'] = willSave;
+    }
+    if (willSaveWaitUntil != null) {
+      __result['willSaveWaitUntil'] = willSaveWaitUntil;
+    }
+    if (didSave != null) {
+      __result['didSave'] = didSave;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+/// An event describing a change to a text document. If
+/// range and rangeLength are omitted the new text is
+/// considered to be the full content of the document.
+class TextDocumentContentChangeEvent implements ToJsonable {
+  TextDocumentContentChangeEvent(this.range, this.rangeLength, this.text) {
+    if (text == null) {
+      throw 'text is required but was not provided';
+    }
+  }
+  factory TextDocumentContentChangeEvent.fromJson(Map<String, dynamic> json) {
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final rangeLength = json['rangeLength'];
+    final text = json['text'];
+    return new TextDocumentContentChangeEvent(range, rangeLength, text);
+  }
+
+  /// The range of the document that changed.
+  final Range range;
+
+  /// The length of the range that got replaced.
+  final num rangeLength;
+
+  /// The new text of the range/document.
+  final String text;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (range != null) {
+      __result['range'] = range;
+    }
+    if (rangeLength != null) {
+      __result['rangeLength'] = rangeLength;
+    }
+    __result['text'] = text ?? (throw 'text is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('text') &&
+        obj['text'] is String;
+  }
+}
+
+class TextDocumentEdit implements FileOperation, ToJsonable {
+  TextDocumentEdit(this.textDocument, this.edits) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (edits == null) {
+      throw 'edits is required but was not provided';
+    }
+  }
+  factory TextDocumentEdit.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new VersionedTextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final edits = json['edits']
+        ?.map((item) => item != null ? new TextEdit.fromJson(item) : null)
+        ?.cast<TextEdit>()
+        ?.toList();
+    return new TextDocumentEdit(textDocument, edits);
+  }
+
+  /// The edits to be applied.
+  final List<TextEdit> edits;
+
+  /// The text document to change.
+  final VersionedTextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['edits'] = edits ?? (throw 'edits is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        VersionedTextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('edits') &&
+        (obj['edits'] is List &&
+            (obj['edits'].length == 0 ||
+                obj['edits'].every((item) => TextEdit.canParse(item))));
+  }
+}
+
+class TextDocumentIdentifier implements ToJsonable {
+  TextDocumentIdentifier(this.uri) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+  }
+  factory TextDocumentIdentifier.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    return new TextDocumentIdentifier(uri);
+  }
+
+  /// The text document's URI.
+  final String uri;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String;
+  }
+}
+
+class TextDocumentItem implements ToJsonable {
+  TextDocumentItem(this.uri, this.languageId, this.version, this.text) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+    if (languageId == null) {
+      throw 'languageId is required but was not provided';
+    }
+    if (version == null) {
+      throw 'version is required but was not provided';
+    }
+    if (text == null) {
+      throw 'text is required but was not provided';
+    }
+  }
+  factory TextDocumentItem.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    final languageId = json['languageId'];
+    final version = json['version'];
+    final text = json['text'];
+    return new TextDocumentItem(uri, languageId, version, text);
+  }
+
+  /// The text document's language identifier.
+  final String languageId;
+
+  /// The content of the opened text document.
+  final String text;
+
+  /// The text document's URI.
+  final String uri;
+
+  /// The version number of this document (it will
+  /// increase after each change, including undo/redo).
+  final num version;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    __result['languageId'] =
+        languageId ?? (throw 'languageId is required but was not set');
+    __result['version'] =
+        version ?? (throw 'version is required but was not set');
+    __result['text'] = text ?? (throw 'text is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String &&
+        obj.containsKey('languageId') &&
+        obj['languageId'] is String &&
+        obj.containsKey('version') &&
+        obj['version'] is num &&
+        obj.containsKey('text') &&
+        obj['text'] is String;
+  }
+}
+
+class TextDocumentPositionParams implements ToJsonable {
+  TextDocumentPositionParams(this.textDocument, this.position) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (position == null) {
+      throw 'position is required but was not provided';
+    }
+  }
+  factory TextDocumentPositionParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final position = json['position'] != null
+        ? new Position.fromJson(json['position'])
+        : null;
+    return new TextDocumentPositionParams(textDocument, position);
+  }
+
+  /// The position inside the text document.
+  final Position position;
+
+  /// The text document.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['position'] =
+        position ?? (throw 'position is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('position') &&
+        Position.canParse(obj['position']);
+  }
+}
+
+class TextDocumentRegistrationOptions implements ToJsonable {
+  TextDocumentRegistrationOptions(this.documentSelector);
+  factory TextDocumentRegistrationOptions.fromJson(Map<String, dynamic> json) {
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new TextDocumentRegistrationOptions(documentSelector);
+  }
+
+  /// A document selector to identify the scope of the
+  /// registration. If set to null the document selector
+  /// provided on the client side will be used.
+  final List<DocumentFilter> documentSelector;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// Represents reasons why a text document is saved.
+class TextDocumentSaveReason {
+  const TextDocumentSaveReason._(this._value);
+  const TextDocumentSaveReason.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 3:
+        return true;
+    }
+    return false;
+  }
+
+  /// Manually triggered, e.g. by the user pressing
+  /// save, by starting debugging, or by an API call.
+  static const Manual = const TextDocumentSaveReason._(1);
+
+  /// Automatic after a delay.
+  static const AfterDelay = const TextDocumentSaveReason._(2);
+
+  /// When the editor lost focus.
+  static const FocusOut = const TextDocumentSaveReason._(3);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is TextDocumentSaveReason && o._value == _value;
+}
+
+class TextDocumentSaveRegistrationOptions
+    implements TextDocumentRegistrationOptions, ToJsonable {
+  TextDocumentSaveRegistrationOptions(this.includeText, this.documentSelector);
+  factory TextDocumentSaveRegistrationOptions.fromJson(
+      Map<String, dynamic> json) {
+    final includeText = json['includeText'];
+    final documentSelector = json['documentSelector']
+        ?.map((item) => item != null ? new DocumentFilter.fromJson(item) : null)
+        ?.cast<DocumentFilter>()
+        ?.toList();
+    return new TextDocumentSaveRegistrationOptions(
+        includeText, documentSelector);
+  }
+
+  /// A document selector to identify the scope of the
+  /// registration. If set to null the document
+  /// selector provided on the client side will be
+  /// used.
+  final List<DocumentFilter> documentSelector;
+
+  /// The client is supposed to include the content on
+  /// save.
+  final bool includeText;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (includeText != null) {
+      __result['includeText'] = includeText;
+    }
+    __result['documentSelector'] = documentSelector;
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('documentSelector') &&
+        (obj['documentSelector'] is List &&
+            (obj['documentSelector'].length == 0 ||
+                obj['documentSelector']
+                    .every((item) => DocumentFilter.canParse(item))));
+  }
+}
+
+/// Defines how the host (editor) should sync document
+/// changes to the language server.
+class TextDocumentSyncKind {
+  const TextDocumentSyncKind._(this._value);
+  const TextDocumentSyncKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 0:
+      case 1:
+      case 2:
+        return true;
+    }
+    return false;
+  }
+
+  /// Documents should not be synced at all.
+  static const None = const TextDocumentSyncKind._(0);
+
+  /// Documents are synced by always sending the
+  /// full content of the document.
+  static const Full = const TextDocumentSyncKind._(1);
+
+  /// Documents are synced by sending the full
+  /// content on open. After that only incremental
+  /// updates to the document are send.
+  static const Incremental = const TextDocumentSyncKind._(2);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is TextDocumentSyncKind && o._value == _value;
+}
+
+class TextDocumentSyncOptions implements ToJsonable {
+  TextDocumentSyncOptions(this.openClose, this.change, this.willSave,
+      this.willSaveWaitUntil, this.save);
+  factory TextDocumentSyncOptions.fromJson(Map<String, dynamic> json) {
+    final openClose = json['openClose'];
+    final change = json['change'] != null
+        ? new TextDocumentSyncKind.fromJson(json['change'])
+        : null;
+    final willSave = json['willSave'];
+    final willSaveWaitUntil = json['willSaveWaitUntil'];
+    final save =
+        json['save'] != null ? new SaveOptions.fromJson(json['save']) : null;
+    return new TextDocumentSyncOptions(
+        openClose, change, willSave, willSaveWaitUntil, save);
+  }
+
+  /// Change notifications are sent to the server.
+  /// See TextDocumentSyncKind.None,
+  /// TextDocumentSyncKind.Full and
+  /// TextDocumentSyncKind.Incremental. If omitted
+  /// it defaults to TextDocumentSyncKind.None.
+  final TextDocumentSyncKind change;
+
+  /// Open and close notifications are sent to the
+  /// server.
+  final bool openClose;
+
+  /// Save notifications are sent to the server.
+  final SaveOptions save;
+
+  /// Will save notifications are sent to the
+  /// server.
+  final bool willSave;
+
+  /// Will save wait until requests are sent to the
+  /// server.
+  final bool willSaveWaitUntil;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (openClose != null) {
+      __result['openClose'] = openClose;
+    }
+    if (change != null) {
+      __result['change'] = change;
+    }
+    if (willSave != null) {
+      __result['willSave'] = willSave;
+    }
+    if (willSaveWaitUntil != null) {
+      __result['willSaveWaitUntil'] = willSaveWaitUntil;
+    }
+    if (save != null) {
+      __result['save'] = save;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class TextEdit implements ToJsonable {
+  TextEdit(this.range, this.newText) {
+    if (range == null) {
+      throw 'range is required but was not provided';
+    }
+    if (newText == null) {
+      throw 'newText is required but was not provided';
+    }
+  }
+  factory TextEdit.fromJson(Map<String, dynamic> json) {
+    final range =
+        json['range'] != null ? new Range.fromJson(json['range']) : null;
+    final newText = json['newText'];
+    return new TextEdit(range, newText);
+  }
+
+  /// The string to be inserted. For delete
+  /// operations use an empty string.
+  final String newText;
+
+  /// The range of the text document to be
+  /// manipulated. To insert text into a document
+  /// create a range where start === end.
+  final Range range;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['range'] = range ?? (throw 'range is required but was not set');
+    __result['newText'] =
+        newText ?? (throw 'newText is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('range') &&
+        Range.canParse(obj['range']) &&
+        obj.containsKey('newText') &&
+        obj['newText'] is String;
+  }
+}
+
+/// General parameters to unregister a capability.
+class Unregistration implements ToJsonable {
+  Unregistration(this.id, this.method) {
+    if (id == null) {
+      throw 'id is required but was not provided';
+    }
+    if (method == null) {
+      throw 'method is required but was not provided';
+    }
+  }
+  factory Unregistration.fromJson(Map<String, dynamic> json) {
+    final id = json['id'];
+    final method = json['method'];
+    return new Unregistration(id, method);
+  }
+
+  /// The id used to unregister the request or
+  /// notification. Usually an id provided during
+  /// the register request.
+  final String id;
+
+  /// The method / capability to unregister for.
+  final String method;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['id'] = id ?? (throw 'id is required but was not set');
+    __result['method'] = method ?? (throw 'method is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('id') &&
+        obj['id'] is String &&
+        obj.containsKey('method') &&
+        obj['method'] is String;
+  }
+}
+
+class UnregistrationParams implements ToJsonable {
+  UnregistrationParams(this.unregisterations) {
+    if (unregisterations == null) {
+      throw 'unregisterations is required but was not provided';
+    }
+  }
+  factory UnregistrationParams.fromJson(Map<String, dynamic> json) {
+    final unregisterations = json['unregisterations']
+        ?.map((item) => item != null ? new Unregistration.fromJson(item) : null)
+        ?.cast<Unregistration>()
+        ?.toList();
+    return new UnregistrationParams(unregisterations);
+  }
+
+  final List<Unregistration> unregisterations;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['unregisterations'] = unregisterations ??
+        (throw 'unregisterations is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('unregisterations') &&
+        (obj['unregisterations'] is List &&
+            (obj['unregisterations'].length == 0 ||
+                obj['unregisterations']
+                    .every((item) => Unregistration.canParse(item))));
+  }
+}
+
+class VersionedTextDocumentIdentifier
+    implements TextDocumentIdentifier, ToJsonable {
+  VersionedTextDocumentIdentifier(this.version, this.uri) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+  }
+  factory VersionedTextDocumentIdentifier.fromJson(Map<String, dynamic> json) {
+    final version = json['version'];
+    final uri = json['uri'];
+    return new VersionedTextDocumentIdentifier(version, uri);
+  }
+
+  /// The text document's URI.
+  final String uri;
+
+  /// The version number of this document. If a
+  /// versioned text document identifier is sent
+  /// from the server to the client and the file is
+  /// not open in the editor (the server has not
+  /// received an open notification before) the
+  /// server can send `null` to indicate that the
+  /// version is known and the content on disk is
+  /// the truth (as speced with document content
+  /// ownership).
+  ///
+  /// The version number of a document will increase
+  /// after each change, including undo/redo. The
+  /// number doesn't need to be consecutive.
+  final num version;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['version'] = version;
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('version') &&
+        obj['version'] is num &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String;
+  }
+}
+
+class WatchKind {
+  const WatchKind._(this._value);
+  const WatchKind.fromJson(this._value);
+
+  final Object _value;
+
+  static bool canParse(Object obj) {
+    switch (obj) {
+      case 1:
+      case 2:
+      case 4:
+        return true;
+    }
+    return false;
+  }
+
+  /// Interested in create events.
+  static const Create = const WatchKind._(1);
+
+  /// Interested in change events
+  static const Change = const WatchKind._(2);
+
+  /// Interested in delete events
+  static const Delete = const WatchKind._(4);
+
+  Object toJson() => _value;
+
+  @override
+  String toString() => _value.toString();
+
+  @override
+  get hashCode => _value.hashCode;
+
+  bool operator ==(o) => o is WatchKind && o._value == _value;
+}
+
+/// The parameters send in a will save text
+/// document notification.
+class WillSaveTextDocumentParams implements ToJsonable {
+  WillSaveTextDocumentParams(this.textDocument, this.reason) {
+    if (textDocument == null) {
+      throw 'textDocument is required but was not provided';
+    }
+    if (reason == null) {
+      throw 'reason is required but was not provided';
+    }
+  }
+  factory WillSaveTextDocumentParams.fromJson(Map<String, dynamic> json) {
+    final textDocument = json['textDocument'] != null
+        ? new TextDocumentIdentifier.fromJson(json['textDocument'])
+        : null;
+    final reason = json['reason'];
+    return new WillSaveTextDocumentParams(textDocument, reason);
+  }
+
+  /// The 'TextDocumentSaveReason'.
+  final num reason;
+
+  /// The document that will be saved.
+  final TextDocumentIdentifier textDocument;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['textDocument'] =
+        textDocument ?? (throw 'textDocument is required but was not set');
+    __result['reason'] = reason ?? (throw 'reason is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('textDocument') &&
+        TextDocumentIdentifier.canParse(obj['textDocument']) &&
+        obj.containsKey('reason') &&
+        obj['reason'] is num;
+  }
+}
+
+/// Workspace specific client capabilities.
+class WorkspaceClientCapabilities implements ToJsonable {
+  WorkspaceClientCapabilities(this.applyEdit, this.documentChanges,
+      this.resourceOperations, this.failureHandling);
+  factory WorkspaceClientCapabilities.fromJson(Map<String, dynamic> json) {
+    final applyEdit = json['applyEdit'];
+    final documentChanges = json['documentChanges'];
+    final resourceOperations = json['resourceOperations']
+        ?.map((item) =>
+            item != null ? new ResourceOperationKind.fromJson(item) : null)
+        ?.cast<ResourceOperationKind>()
+        ?.toList();
+    final failureHandling = json['failureHandling'] != null
+        ? new FailureHandlingKind.fromJson(json['failureHandling'])
+        : null;
+    return new WorkspaceClientCapabilities(
+        applyEdit, documentChanges, resourceOperations, failureHandling);
+  }
+
+  /// The client supports applying batch edits to
+  /// the workspace by supporting the request
+  /// 'workspace/applyEdit'
+  final bool applyEdit;
+
+  /// The client supports versioned document
+  /// changes in `WorkspaceEdit`s
+  final bool documentChanges;
+
+  /// The failure handling strategy of a client if
+  /// applying the workspace edit failes.
+  final FailureHandlingKind failureHandling;
+
+  /// The resource operations the client supports.
+  /// Clients should at least support 'create',
+  /// 'rename' and 'delete' files and folders.
+  final List<ResourceOperationKind> resourceOperations;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (applyEdit != null) {
+      __result['applyEdit'] = applyEdit;
+    }
+    if (documentChanges != null) {
+      __result['documentChanges'] = documentChanges;
+    }
+    if (resourceOperations != null) {
+      __result['resourceOperations'] = resourceOperations;
+    }
+    if (failureHandling != null) {
+      __result['failureHandling'] = failureHandling;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class WorkspaceEdit implements ToJsonable {
+  WorkspaceEdit(this.changes, this.documentChanges);
+  factory WorkspaceEdit.fromJson(Map<String, dynamic> json) {
+    final changes = json['changes'];
+    final documentChanges = json['documentChanges']
+        ?.map((item) => item)
+        ?.cast<FileOperation>()
+        ?.toList();
+    return new WorkspaceEdit(changes, documentChanges);
+  }
+
+  /// Holds changes to existing resources.
+  final Map<String, List<TextEdit>> changes;
+
+  /// Depending on the client capability
+  /// `workspace.workspaceEdit.resourceOperations`
+  /// document changes are either an array of
+  /// `TextDocumentEdit`s to express changes to n
+  /// different text documents where each text
+  /// document edit addresses a specific version
+  /// of a text document. Or it can contain above
+  /// `TextDocumentEdit`s mixed with create,
+  /// rename and delete file / folder operations.
+  ///
+  /// Whether a client supports versioned document
+  /// edits is expressed via
+  /// `workspace.workspaceEdit.documentChanges`
+  /// client capability.
+  ///
+  /// If a client neither supports
+  /// `documentChanges` nor
+  /// `workspace.workspaceEdit.resourceOperations`
+  /// then only plain `TextEdit`s using the
+  /// `changes` property are supported.
+  final List<FileOperation> documentChanges;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    if (changes != null) {
+      __result['changes'] = changes;
+    }
+    if (documentChanges != null) {
+      __result['documentChanges'] = documentChanges;
+    }
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic>;
+  }
+}
+
+class WorkspaceFolder implements ToJsonable {
+  WorkspaceFolder(this.uri, this.name) {
+    if (uri == null) {
+      throw 'uri is required but was not provided';
+    }
+    if (name == null) {
+      throw 'name is required but was not provided';
+    }
+  }
+  factory WorkspaceFolder.fromJson(Map<String, dynamic> json) {
+    final uri = json['uri'];
+    final name = json['name'];
+    return new WorkspaceFolder(uri, name);
+  }
+
+  /// The name of the workspace folder. Defaults
+  /// to the uri's basename.
+  final String name;
+
+  /// The associated URI for this workspace
+  /// folder.
+  final String uri;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['uri'] = uri ?? (throw 'uri is required but was not set');
+    __result['name'] = name ?? (throw 'name is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('uri') &&
+        obj['uri'] is String &&
+        obj.containsKey('name') &&
+        obj['name'] is String;
+  }
+}
+
+/// The workspace folder change event.
+class WorkspaceFoldersChangeEvent implements ToJsonable {
+  WorkspaceFoldersChangeEvent(this.added, this.removed) {
+    if (added == null) {
+      throw 'added is required but was not provided';
+    }
+    if (removed == null) {
+      throw 'removed is required but was not provided';
+    }
+  }
+  factory WorkspaceFoldersChangeEvent.fromJson(Map<String, dynamic> json) {
+    final added = json['added']
+        ?.map(
+            (item) => item != null ? new WorkspaceFolder.fromJson(item) : null)
+        ?.cast<WorkspaceFolder>()
+        ?.toList();
+    final removed = json['removed']
+        ?.map(
+            (item) => item != null ? new WorkspaceFolder.fromJson(item) : null)
+        ?.cast<WorkspaceFolder>()
+        ?.toList();
+    return new WorkspaceFoldersChangeEvent(added, removed);
+  }
+
+  /// The array of added workspace folders
+  final List<WorkspaceFolder> added;
+
+  /// The array of the removed workspace folders
+  final List<WorkspaceFolder> removed;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['added'] = added ?? (throw 'added is required but was not set');
+    __result['removed'] =
+        removed ?? (throw 'removed is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('added') &&
+        (obj['added'] is List &&
+            (obj['added'].length == 0 ||
+                obj['added']
+                    .every((item) => WorkspaceFolder.canParse(item)))) &&
+        obj.containsKey('removed') &&
+        (obj['removed'] is List &&
+            (obj['removed'].length == 0 ||
+                obj['removed']
+                    .every((item) => WorkspaceFolder.canParse(item))));
+  }
+}
+
+/// The parameters of a Workspace Symbol Request.
+class WorkspaceSymbolParams implements ToJsonable {
+  WorkspaceSymbolParams(this.query) {
+    if (query == null) {
+      throw 'query is required but was not provided';
+    }
+  }
+  factory WorkspaceSymbolParams.fromJson(Map<String, dynamic> json) {
+    final query = json['query'];
+    return new WorkspaceSymbolParams(query);
+  }
+
+  /// A non-empty query string
+  final String query;
+
+  Map<String, dynamic> toJson() {
+    Map<String, dynamic> __result = {};
+    __result['query'] = query ?? (throw 'query is required but was not set');
+    return __result;
+  }
+
+  static bool canParse(Object obj) {
+    return obj is Map<String, dynamic> &&
+        obj.containsKey('query') &&
+        obj['query'] is String;
+  }
+}
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_special.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_special.dart
new file mode 100644
index 0000000..35ae774
--- /dev/null
+++ b/pkg/analysis_server/lib/lsp_protocol/protocol_special.dart
@@ -0,0 +1,152 @@
+// 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.
+
+Object id(Object obj) => obj;
+
+Object specToJson(Object obj) {
+  if (obj is ToJsonable) {
+    return obj.toJson();
+  } else {
+    return obj;
+  }
+}
+
+class Either2<T1, T2> {
+  final int _which;
+  final T1 _t1;
+  final T2 _t2;
+
+  Either2.t1(this._t1)
+      : _t2 = null,
+        _which = 1;
+  Either2.t2(this._t2)
+      : _t1 = null,
+        _which = 2;
+
+  @override
+  get hashCode => map((t) => t.hashCode, (t) => t.hashCode);
+
+  bool operator ==(o) => o is Either2<T1, T2> && o._t1 == _t1 && o._t2 == _t2;
+
+  T map<T>(T Function(T1) f1, T Function(T2) f2) {
+    return _which == 1 ? f1(_t1) : f2(_t2);
+  }
+
+  Object toJson() => map(specToJson, specToJson);
+
+  /// Checks whether the value of the union equals the supplied value.
+  bool valueEquals(o) => map((t) => t == o, (t) => t == o);
+}
+
+class Either3<T1, T2, T3> {
+  final int _which;
+  final T1 _t1;
+  final T2 _t2;
+  final T3 _t3;
+
+  Either3.t1(this._t1)
+      : _t2 = null,
+        _t3 = null,
+        _which = 1;
+  Either3.t2(this._t2)
+      : _t1 = null,
+        _t3 = null,
+        _which = 2;
+  Either3.t3(this._t3)
+      : _t1 = null,
+        _t2 = null,
+        _which = 3;
+
+  @override
+  get hashCode => map((t) => t.hashCode, (t) => t.hashCode, (t) => t.hashCode);
+
+  bool operator ==(o) =>
+      o is Either3<T1, T2, T3> && o._t1 == _t1 && o._t2 == _t2 && o._t3 == _t3;
+
+  T map<T>(T Function(T1) f1, T Function(T2) f2, T Function(T3) f3) {
+    switch (_which) {
+      case 1:
+        return f1(_t1);
+      case 2:
+        return f2(_t2);
+      case 3:
+        return f3(_t3);
+      default:
+        throw 'Invalid state.';
+    }
+  }
+
+  Object toJson() => map(specToJson, specToJson, specToJson);
+
+  /// Checks whether the value of the union equals the supplied value.
+  bool valueEquals(o) => map((t) => t == o, (t) => t == o, (t) => t == o);
+}
+
+class Either4<T1, T2, T3, T4> {
+  final int _which;
+  final T1 _t1;
+  final T2 _t2;
+  final T3 _t3;
+  final T4 _t4;
+
+  Either4.t1(this._t1)
+      : _t2 = null,
+        _t3 = null,
+        _t4 = null,
+        _which = 1;
+  Either4.t2(this._t2)
+      : _t1 = null,
+        _t3 = null,
+        _t4 = null,
+        _which = 2;
+  Either4.t3(this._t3)
+      : _t1 = null,
+        _t2 = null,
+        _t4 = null,
+        _which = 3;
+  Either4.t4(this._t4)
+      : _t1 = null,
+        _t2 = null,
+        _t3 = null,
+        _which = 4;
+
+  @override
+  get hashCode => map((t) => t.hashCode, (t) => t.hashCode, (t) => t.hashCode,
+      (t) => t.hashCode);
+
+  bool operator ==(o) =>
+      o is Either4<T1, T2, T3, T4> &&
+      o._t1 == _t1 &&
+      o._t2 == _t2 &&
+      o._t3 == _t3 &&
+      o._t4 == _t4;
+
+  T map<T>(T Function(T1) f1, T Function(T2) f2, T Function(T3) f3,
+      T Function(T4) f4) {
+    switch (_which) {
+      case 1:
+        return f1(_t1);
+      case 2:
+        return f2(_t2);
+      case 3:
+        return f3(_t3);
+      case 4:
+        return f4(_t4);
+      default:
+        throw 'Invalid state.';
+    }
+  }
+
+  Object toJson() => map(specToJson, specToJson, specToJson, specToJson);
+
+  /// Checks whether the value of the union equals the supplied value.
+  bool valueEquals(o) =>
+      map((t) => t == o, (t) => t == o, (t) => t == o, (t) => t == o);
+}
+
+class FileOperation {}
+
+abstract class ToJsonable {
+  Object toJson();
+}
diff --git a/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart b/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart
index e203b4a..af303ec 100644
--- a/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart
+++ b/pkg/analysis_server/lib/plugin/edit/fix/fix_core.dart
@@ -24,7 +24,9 @@
    */
   static final Comparator<Fix> SORT_BY_RELEVANCE = (Fix a, Fix b) {
     if (a.kind.priority != b.kind.priority) {
-      return a.kind.priority - b.kind.priority;
+      // A higher priority indicates a higher relevance
+      // and should be sorted before a lower priority.
+      return b.kind.priority - a.kind.priority;
     }
     return a.change.message.compareTo(b.change.message);
   };
diff --git a/pkg/analysis_server/lib/protocol/protocol_constants.dart b/pkg/analysis_server/lib/protocol/protocol_constants.dart
index 51eeee6..9d85d08 100644
--- a/pkg/analysis_server/lib/protocol/protocol_constants.dart
+++ b/pkg/analysis_server/lib/protocol/protocol_constants.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
diff --git a/pkg/analysis_server/lib/protocol/protocol_generated.dart b/pkg/analysis_server/lib/protocol/protocol_generated.dart
index 5930a94..cb7d946 100644
--- a/pkg/analysis_server/lib/protocol/protocol_generated.dart
+++ b/pkg/analysis_server/lib/protocol/protocol_generated.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
@@ -2017,8 +2017,8 @@
  *
  * {
  *   "name": String
- *   "dartdoc": optional String
  *   "parameters": List<ParameterInfo>
+ *   "dartdoc": optional String
  * }
  *
  * Clients may not extend, implement or mix-in this class.
@@ -2026,10 +2026,10 @@
 class AnalysisGetSignatureResult implements ResponseResult {
   String _name;
 
-  String _dartdoc;
-
   List<ParameterInfo> _parameters;
 
+  String _dartdoc;
+
   /**
    * The name of the function being invoked at the given offset.
    */
@@ -2044,6 +2044,21 @@
   }
 
   /**
+   * A list of information about each of the parameters of the function being
+   * invoked.
+   */
+  List<ParameterInfo> get parameters => _parameters;
+
+  /**
+   * A list of information about each of the parameters of the function being
+   * invoked.
+   */
+  void set parameters(List<ParameterInfo> value) {
+    assert(value != null);
+    this._parameters = value;
+  }
+
+  /**
    * The dartdoc associated with the function being invoked. Other than the
    * removal of the comment delimiters, including leading asterisks in the case
    * of a block comment, the dartdoc is unprocessed markdown. This data is
@@ -2063,26 +2078,11 @@
     this._dartdoc = value;
   }
 
-  /**
-   * A list of information about each of the parameters of the function being
-   * invoked.
-   */
-  List<ParameterInfo> get parameters => _parameters;
-
-  /**
-   * A list of information about each of the parameters of the function being
-   * invoked.
-   */
-  void set parameters(List<ParameterInfo> value) {
-    assert(value != null);
-    this._parameters = value;
-  }
-
   AnalysisGetSignatureResult(String name, List<ParameterInfo> parameters,
       {String dartdoc}) {
     this.name = name;
-    this.dartdoc = dartdoc;
     this.parameters = parameters;
+    this.dartdoc = dartdoc;
   }
 
   factory AnalysisGetSignatureResult.fromJson(
@@ -2097,11 +2097,6 @@
       } else {
         throw jsonDecoder.mismatch(jsonPath, "name");
       }
-      String dartdoc;
-      if (json.containsKey("dartdoc")) {
-        dartdoc =
-            jsonDecoder.decodeString(jsonPath + ".dartdoc", json["dartdoc"]);
-      }
       List<ParameterInfo> parameters;
       if (json.containsKey("parameters")) {
         parameters = jsonDecoder.decodeList(
@@ -2112,6 +2107,11 @@
       } else {
         throw jsonDecoder.mismatch(jsonPath, "parameters");
       }
+      String dartdoc;
+      if (json.containsKey("dartdoc")) {
+        dartdoc =
+            jsonDecoder.decodeString(jsonPath + ".dartdoc", json["dartdoc"]);
+      }
       return new AnalysisGetSignatureResult(name, parameters, dartdoc: dartdoc);
     } else {
       throw jsonDecoder.mismatch(
@@ -2130,11 +2130,11 @@
   Map<String, dynamic> toJson() {
     Map<String, dynamic> result = {};
     result["name"] = name;
+    result["parameters"] =
+        parameters.map((ParameterInfo value) => value.toJson()).toList();
     if (dartdoc != null) {
       result["dartdoc"] = dartdoc;
     }
-    result["parameters"] =
-        parameters.map((ParameterInfo value) => value.toJson()).toList();
     return result;
   }
 
@@ -2150,9 +2150,9 @@
   bool operator ==(other) {
     if (other is AnalysisGetSignatureResult) {
       return name == other.name &&
-          dartdoc == other.dartdoc &&
           listEqual(parameters, other.parameters,
-              (ParameterInfo a, ParameterInfo b) => a == b);
+              (ParameterInfo a, ParameterInfo b) => a == b) &&
+          dartdoc == other.dartdoc;
     }
     return false;
   }
@@ -2161,8 +2161,8 @@
   int get hashCode {
     int hash = 0;
     hash = JenkinsSmiHash.combine(hash, name.hashCode);
-    hash = JenkinsSmiHash.combine(hash, dartdoc.hashCode);
     hash = JenkinsSmiHash.combine(hash, parameters.hashCode);
+    hash = JenkinsSmiHash.combine(hash, dartdoc.hashCode);
     return JenkinsSmiHash.finish(hash);
   }
 }
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index bdd5194..715570c 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -54,8 +54,12 @@
 import 'package:analyzer/src/context/builder.dart';
 import 'package:analyzer/src/context/context_root.dart';
 import 'package:analyzer/src/dart/analysis/ast_provider_driver.dart';
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart' as nd;
+import 'package:analyzer/src/dart/analysis/file_byte_store.dart'
+    show EvictingFileByteStore;
 import 'package:analyzer/src/dart/analysis/file_state.dart' as nd;
+import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/status.dart' as nd;
 import 'package:analyzer/src/dart/ast/utilities.dart';
 import 'package:analyzer/src/dart/element/ast_provider.dart';
@@ -68,10 +72,6 @@
 import 'package:analyzer/src/util/glob.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart' hide Element;
 import 'package:analyzer_plugin/src/utilities/navigation/navigation.dart';
-import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/file_byte_store.dart'
-    show EvictingFileByteStore;
-import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:telemetry/crash_reporting.dart';
 import 'package:telemetry/telemetry.dart' as telemetry;
 import 'package:watcher/watcher.dart';
@@ -560,7 +560,7 @@
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (!priorityFiles.contains(file)) {
-      var driver = await getAnalysisDriver(file);
+      var driver = getAnalysisDriver(file);
       if (driver == null) {
         return null;
       }
diff --git a/pkg/analysis_server/lib/src/domain_analysis.dart b/pkg/analysis_server/lib/src/domain_analysis.dart
index ae19037..a3e3257 100644
--- a/pkg/analysis_server/lib/src/domain_analysis.dart
+++ b/pkg/analysis_server/lib/src/domain_analysis.dart
@@ -518,11 +518,6 @@
         options.lint = newOptions.generateLints;
       });
     }
-    if (newOptions.enableSuperMixins != null) {
-      updaters.add((engine.AnalysisOptionsImpl options) {
-        options.enableSuperMixins = newOptions.enableSuperMixins;
-      });
-    }
     server.updateOptions(updaters);
     return new AnalysisUpdateOptionsResult().toResponse(request.id);
   }
diff --git a/pkg/analysis_server/lib/src/domain_kythe.dart b/pkg/analysis_server/lib/src/domain_kythe.dart
index 4b7447d..c4fceb6 100644
--- a/pkg/analysis_server/lib/src/domain_kythe.dart
+++ b/pkg/analysis_server/lib/src/domain_kythe.dart
@@ -15,7 +15,8 @@
 import 'package:analysis_server/src/services/kythe/kythe_visitors.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
-import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
+import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
+import 'package:analyzer/src/generated/type_system.dart';
 import 'package:analyzer_plugin/protocol/protocol.dart' as plugin;
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:analyzer_plugin/protocol/protocol_constants.dart' as plugin;
@@ -57,6 +58,7 @@
           <KytheGetKytheEntriesResult>[];
       AnalysisResult result = await server.getAnalysisResult(file);
       CompilationUnit unit = result?.unit;
+      TypeSystem typeSystem = result.libraryElement.context.typeSystem;
       if (unit != null && result.exists) {
         List<KytheEntry> entries = <KytheEntry>[];
         // TODO(brianwilkerson) Figure out how to get the list of files.
@@ -65,7 +67,7 @@
             server.resourceProvider,
             entries,
             file,
-            new InheritanceManager(result.libraryElement),
+            new InheritanceManager2(typeSystem),
             result.content));
         allResults.add(new KytheGetKytheEntriesResult(entries, files));
       }
diff --git a/pkg/analysis_server/lib/src/edit/edit_dartfix.dart b/pkg/analysis_server/lib/src/edit/edit_dartfix.dart
index fc1139a..3a8e344 100644
--- a/pkg/analysis_server/lib/src/edit/edit_dartfix.dart
+++ b/pkg/analysis_server/lib/src/edit/edit_dartfix.dart
@@ -2,25 +2,29 @@
 // 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:analysis_server/plugin/edit/assist/assist_core.dart';
 import 'package:analysis_server/plugin/edit/assist/assist_dart.dart';
+import 'package:analysis_server/plugin/edit/fix/fix_core.dart';
 import 'package:analysis_server/protocol/protocol.dart';
 import 'package:analysis_server/protocol/protocol_generated.dart';
 import 'package:analysis_server/src/analysis_server.dart';
-import 'package:analysis_server/src/services/correction/assist.dart';
-import 'package:analysis_server/src/services/correction/assist_internal.dart';
+import 'package:analysis_server/src/edit/fix/prefer_int_literals_fix.dart';
+import 'package:analysis_server/src/edit/fix/prefer_mixin_fix.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/services/correction/fix_internal.dart';
 import 'package:analyzer/analyzer.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/dart/analysis/ast_provider_driver.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
+import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/lint/linter.dart';
 import 'package:analyzer/src/lint/linter_visitor.dart';
 import 'package:analyzer/src/lint/registry.dart';
 import 'package:analyzer/src/services/lint.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart'
     show SourceChange, SourceEdit, SourceFileEdit;
-import 'package:analyzer/src/generated/source.dart';
+import 'package:front_end/src/fasta/fasta_codes.dart';
 import 'package:front_end/src/scanner/token.dart';
 import 'package:source_span/src/span.dart';
 
@@ -55,15 +59,15 @@
     // Validate each included file and directory.
     final resourceProvider = server.resourceProvider;
     final contextManager = server.contextManager;
-    for (String path in params.included) {
-      if (!server.isValidFilePath(path)) {
-        return new Response.invalidFilePathFormat(request, path);
+    for (String filePath in params.included) {
+      if (!server.isValidFilePath(filePath)) {
+        return new Response.invalidFilePathFormat(request, filePath);
       }
-      Resource res = resourceProvider.getResource(path);
+      Resource res = resourceProvider.getResource(filePath);
       if (!res.exists ||
-          !(contextManager.includedPaths.contains(path) ||
-              contextManager.isInAnalysisRoot(path))) {
-        return new Response.fileNotAnalyzed(request, path);
+          !(contextManager.includedPaths.contains(filePath) ||
+              contextManager.isInAnalysisRoot(filePath))) {
+        return new Response.fileNotAnalyzed(request, filePath);
       }
       if (res is Folder) {
         fixFolders.add(res);
@@ -73,30 +77,36 @@
     }
 
     // Get the desired lints
-    final LintRule preferMixin = Registry.ruleRegistry['prefer_mixin'];
-    if (preferMixin == null) {
-      return new Response.serverError(
-          request, 'Missing prefer_mixin lint', null);
-    }
+    final lintRules = Registry.ruleRegistry;
+
+    final preferMixin = lintRules['prefer_mixin'];
     final preferMixinFix = new PreferMixinFix(this);
     preferMixin.reporter = preferMixinFix;
 
+    final preferIntLiterals = lintRules['prefer_int_literals'];
+    final preferIntLiteralsFix = new PreferIntLiteralsFix(this);
+    preferIntLiterals?.reporter = preferIntLiteralsFix;
+
     // Setup
     final linters = <Linter>[
       preferMixin,
+      preferIntLiterals,
     ];
     final fixes = <LinterFix>[
       preferMixinFix,
+      preferIntLiteralsFix,
     ];
     final visitors = <AstVisitor>[];
     final registry = new NodeLintRegistry(false);
     for (Linter linter in linters) {
-      final visitor = linter.getVisitor();
-      if (visitor != null) {
-        visitors.add(visitor);
-      }
-      if (linter is NodeLintRule) {
-        (linter as NodeLintRule).registerNodeProcessors(registry);
+      if (linter != null) {
+        final visitor = linter.getVisitor();
+        if (visitor != null) {
+          visitors.add(visitor);
+        }
+        if (linter is NodeLintRule) {
+          (linter as NodeLintRule).registerNodeProcessors(registry);
+        }
       }
     }
     final AstVisitor astVisitor = visitors.isNotEmpty
@@ -115,6 +125,9 @@
     for (String rootPath in contextManager.includedPaths) {
       resources.add(resourceProvider.getResource(rootPath));
     }
+    descriptionOfFixes = <String>[];
+    otherRecommendations = <String>[];
+    sourceChange = new SourceChange('dartfix');
     bool hasErrors = false;
     while (resources.isNotEmpty) {
       Resource res = resources.removeLast();
@@ -132,57 +145,125 @@
       if (unit != null) {
         if (!hasErrors) {
           for (AnalysisError error in result.errors) {
-            if (error.errorCode.type == ErrorType.SYNTACTIC_ERROR) {
-              hasErrors = true;
-              break;
+            if (!(await fixError(result, error))) {
+              if (error.errorCode.type == ErrorType.SYNTACTIC_ERROR) {
+                hasErrors = true;
+              }
             }
           }
         }
         Source source = result.sourceFactory.forUri2(result.uri);
         for (Linter linter in linters) {
-          linter.reporter.source = source;
+          if (linter != null) {
+            linter.reporter.source = source;
+          }
         }
         if (astVisitor != null) {
           unit.accept(astVisitor);
         }
         unit.accept(linterVisitor);
+        for (LinterFix fix in fixes) {
+          await fix.applyLocalFixes(result);
+        }
       }
     }
 
     // Cleanup
     for (Linter linter in linters) {
-      linter.reporter = null;
+      if (linter != null) {
+        linter.reporter.source = null;
+        linter.reporter = null;
+      }
     }
 
-    // Reporting
-    descriptionOfFixes = <String>[];
-    otherRecommendations = <String>[];
-    sourceChange = new SourceChange('dartfix');
-    for (LinterFix fix in fixes) {
-      await fix.applyFix();
+    // Apply distributed fixes
+    if (preferIntLiterals == null) {
+      // TODO(danrubel): Remove this once linter rolled into sdk/third_party.
+      addRecommendation('*** Convert double literal not available'
+          ' because prefer_int_literal not found. May need to roll linter');
     }
+    for (LinterFix fix in fixes) {
+      await fix.applyRemainingFixes();
+    }
+
     return new EditDartfixResult(descriptionOfFixes, otherRecommendations,
             hasErrors, sourceChange.edits)
         .toResponse(request.id);
   }
 
+  Future<bool> fixError(AnalysisResult result, AnalysisError error) async {
+    if (error.errorCode ==
+        StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR) {
+      // TODO(danrubel): Rather than comparing the error codes individually,
+      // it would be better if each error code could specify
+      // whether or not it could be fixed automatically.
+
+      // Fall through to calculate and apply the fix
+    } else {
+      // This error cannot be automatically fixed
+      return false;
+    }
+
+    final location = '${locationDescription(result, error.offset)}';
+    final dartContext = new DartFixContextImpl(
+        new FixContextImpl(
+            server.resourceProvider, result.driver, error, result.errors),
+        new AstProviderForDriver(result.driver),
+        result.unit);
+    final processor = new FixProcessor(dartContext);
+    Fix fix = await processor.computeFix();
+    if (fix != null) {
+      addFix('${fix.change.message} in $location', fix.change);
+    } else {
+      // TODO(danrubel): Determine why the fix could not be applied
+      // and report that in the description.
+      addRecommendation('Could not fix "${error.message}" in $location');
+    }
+    return true;
+  }
+
   /// Return `true` if the path in within the set of `included` files
   /// or is within an `included` directory.
-  bool isIncluded(String path) {
-    if (path != null) {
+  bool isIncluded(String filePath) {
+    if (filePath != null) {
       for (File file in fixFiles) {
-        if (file.path == path) {
+        if (file.path == filePath) {
           return true;
         }
       }
       for (Folder folder in fixFolders) {
-        if (folder.contains(path)) {
+        if (folder.contains(filePath)) {
           return true;
         }
       }
     }
     return false;
   }
+
+  /// Return a human readable description of the specified offset and file.
+  String locationDescription(AnalysisResult result, int offset) {
+    // TODO(danrubel): Pass the location back to the client along with the
+    // message indicating what was or was not automatically fixed
+    // rather than interpreting and integrating the location into the message.
+    final description = new StringBuffer();
+    // Determine the relative path
+    for (Folder folder in fixFolders) {
+      if (folder.contains(result.path)) {
+        description.write(server.resourceProvider.pathContext
+            .relative(result.path, from: folder.path));
+        break;
+      }
+    }
+    if (description.isEmpty) {
+      description.write(result.path);
+    }
+    // Determine the line and column number
+    if (offset >= 0) {
+      final loc = result.unit.lineInfo.getLocation(offset);
+      description.write(':${loc.lineNumber}');
+    }
+    return description.toString();
+  }
 }
 
 class EditDartFixAssistContext implements DartAssistContext {
@@ -216,6 +297,12 @@
 
   LinterFix(this.dartFix);
 
+  /// Apply fixes for the current compilation unit.
+  Future<void> applyLocalFixes(AnalysisResult result);
+
+  /// Apply any fixes remaining after analysis is complete.
+  Future<void> applyRemainingFixes();
+
   @override
   void reportError(AnalysisError error) {
     // ignored
@@ -252,63 +339,14 @@
   }
 
   @override
-  void reportTypeErrorForNode(
-      ErrorCode errorCode, AstNode node, List<Object> arguments) {
+  void reportErrorMessage(
+      ErrorCode errorCode, int offset, int length, Message message) {
     // ignored
   }
 
-  void applyFix();
-}
-
-class PreferMixinFix extends LinterFix {
-  final classesToConvert = new Set<Element>();
-
-  PreferMixinFix(EditDartFix dartFix) : super(dartFix);
-
   @override
-  void reportErrorForNode(ErrorCode errorCode, AstNode node,
-      [List<Object> arguments]) {
-    TypeName type = node;
-    Element element = type.name.staticElement;
-    String path = element.source?.fullName;
-    if (path != null && dartFix.isIncluded(path)) {
-      classesToConvert.add(element);
-    }
-  }
-
-  @override
-  void applyFix() async {
-    for (Element elem in classesToConvert) {
-      await convertClassToMixin(elem);
-    }
-  }
-
-  void convertClassToMixin(Element elem) async {
-    String path = elem.source?.fullName;
-    AnalysisResult result = await dartFix.server.getAnalysisResult(path);
-
-    // TODO(danrubel): Verify that class can be converted
-    for (CompilationUnitMember declaration in result.unit.declarations) {
-      if (declaration is ClassOrMixinDeclaration &&
-          declaration.name.name == elem.name) {
-        AssistProcessor processor = new AssistProcessor(
-            new EditDartFixAssistContext(
-                dartFix, elem.source, result.unit, declaration.name));
-        List<Assist> assists = await processor
-            .computeAssist(DartAssistKind.CONVERT_CLASS_TO_MIXIN);
-        if (assists.isNotEmpty) {
-          for (Assist assist in assists) {
-            dartFix.addFix(
-                'Convert class to mixin: ${elem.name}', assist.change);
-          }
-        } else {
-          // TODO(danrubel): If assists is empty, then determine why
-          // assist could not be performed and report that in the description.
-          dartFix.addRecommendation(
-              'Could not automatically convert ${elem.name} to a mixin'
-              ' because the class contains a constructor.');
-        }
-      }
-    }
+  void reportTypeErrorForNode(
+      ErrorCode errorCode, AstNode node, List<Object> arguments) {
+    // ignored
   }
 }
diff --git a/pkg/analysis_server/lib/src/edit/fix/prefer_int_literals_fix.dart b/pkg/analysis_server/lib/src/edit/fix/prefer_int_literals_fix.dart
new file mode 100644
index 0000000..81758f9
--- /dev/null
+++ b/pkg/analysis_server/lib/src/edit/fix/prefer_int_literals_fix.dart
@@ -0,0 +1,56 @@
+// 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:analysis_server/plugin/edit/assist/assist_core.dart';
+import 'package:analysis_server/src/edit/edit_dartfix.dart';
+import 'package:analysis_server/src/services/correction/assist.dart';
+import 'package:analysis_server/src/services/correction/assist_internal.dart';
+import 'package:analyzer/analyzer.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
+
+class PreferIntLiteralsFix extends LinterFix {
+  final literalsToConvert = <DoubleLiteral>[];
+
+  PreferIntLiteralsFix(EditDartFix dartFix) : super(dartFix);
+
+  @override
+  Future<void> applyLocalFixes(AnalysisResult result) async {
+    while (literalsToConvert.isNotEmpty) {
+      DoubleLiteral literal = literalsToConvert.removeLast();
+      AssistProcessor processor = new AssistProcessor(
+          new EditDartFixAssistContext(dartFix, source, result.unit, literal));
+      List<Assist> assists =
+          await processor.computeAssist(DartAssistKind.CONVERT_TO_INT_LITERAL);
+      final location = dartFix.locationDescription(result, literal.offset);
+      if (assists.isNotEmpty) {
+        for (Assist assist in assists) {
+          dartFix.addFix(
+              'Replace a double literal with an int literal in $location',
+              assist.change);
+        }
+      } else {
+        // TODO(danrubel): If assists is empty, then determine why
+        // assist could not be performed and report that in the description.
+        dartFix.addRecommendation('Could not replace'
+            ' a double literal with an int literal in $location');
+      }
+    }
+  }
+
+  @override
+  Future<void> applyRemainingFixes() {
+    // All fixes applied in [applyLocalFixes]
+    return null;
+  }
+
+  @override
+  void reportErrorForNode(ErrorCode errorCode, AstNode node,
+      [List<Object> arguments]) {
+    String filePath = source.fullName;
+    if (filePath != null && dartFix.isIncluded(filePath)) {
+      literalsToConvert.add(node);
+    }
+  }
+}
diff --git a/pkg/analysis_server/lib/src/edit/fix/prefer_mixin_fix.dart b/pkg/analysis_server/lib/src/edit/fix/prefer_mixin_fix.dart
new file mode 100644
index 0000000..5e2aad1
--- /dev/null
+++ b/pkg/analysis_server/lib/src/edit/fix/prefer_mixin_fix.dart
@@ -0,0 +1,72 @@
+// 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:analysis_server/plugin/edit/assist/assist_core.dart';
+import 'package:analysis_server/src/edit/edit_dartfix.dart';
+import 'package:analysis_server/src/services/correction/assist.dart';
+import 'package:analysis_server/src/services/correction/assist_internal.dart';
+import 'package:analyzer/analyzer.dart';
+import 'package:analyzer/dart/ast/ast.dart';
+import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/src/dart/analysis/driver.dart';
+
+class PreferMixinFix extends LinterFix {
+  final classesToConvert = new Set<Element>();
+
+  PreferMixinFix(EditDartFix dartFix) : super(dartFix);
+
+  @override
+  Future<void> applyLocalFixes(AnalysisResult result) {
+    // All fixes applied in [applyRemainingFixes]
+    return null;
+  }
+
+  @override
+  Future<void> applyRemainingFixes() async {
+    for (Element elem in classesToConvert) {
+      await convertClassToMixin(elem);
+    }
+  }
+
+  Future<void> convertClassToMixin(Element elem) async {
+    AnalysisResult result =
+        await dartFix.server.getAnalysisResult(elem.source?.fullName);
+
+    for (CompilationUnitMember declaration in result.unit.declarations) {
+      if (declaration is ClassOrMixinDeclaration &&
+          declaration.name.name == elem.name) {
+        AssistProcessor processor = new AssistProcessor(
+            new EditDartFixAssistContext(
+                dartFix, elem.source, result.unit, declaration.name));
+        List<Assist> assists = await processor
+            .computeAssist(DartAssistKind.CONVERT_CLASS_TO_MIXIN);
+        final location = dartFix.locationDescription(result, elem.nameOffset);
+        if (assists.isNotEmpty) {
+          for (Assist assist in assists) {
+            dartFix.addFix(
+                'Convert ${elem.displayName} to a mixin in $location',
+                assist.change);
+          }
+        } else {
+          // TODO(danrubel): If assists is empty, then determine why
+          // assist could not be performed and report that in the description.
+          dartFix.addRecommendation(
+              'Could not convert ${elem.displayName} to a mixin'
+              ' because the class contains a constructor in $location');
+        }
+      }
+    }
+  }
+
+  @override
+  void reportErrorForNode(ErrorCode errorCode, AstNode node,
+      [List<Object> arguments]) {
+    TypeName type = node;
+    Element element = type.name.staticElement;
+    String filePath = element.source?.fullName;
+    if (filePath != null && dartFix.isIncluded(filePath)) {
+      classesToConvert.add(element);
+    }
+  }
+}
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
index 7c86874..34d1ffb 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/override_contributor.dart
@@ -11,6 +11,7 @@
 import 'package:analysis_server/src/provisional/completion/dart/completion_dart.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
 import 'package:analyzer/src/generated/source.dart';
@@ -49,11 +50,11 @@
     // Build suggestions
     List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
     for (Name name in namesToOverride) {
-      ExecutableElement element = interface[name].element;
+      FunctionType signature = interface[name];
       // Gracefully degrade if the overridden element has not been resolved.
-      if (element.returnType != null) {
+      if (signature.returnType != null) {
         CompletionSuggestion suggestion =
-            await _buildSuggestion(request, targetId, element);
+            await _buildSuggestion(request, targetId, signature);
         if (suggestion != null) {
           suggestions.add(suggestion);
         }
@@ -63,13 +64,13 @@
   }
 
   /**
-   * Return a template for an override of the given [element]. If selected, the
-   * template will replace [targetId].
+   * Return a template for an override of the given [signature]. If selected,
+   * the template will replace [targetId].
    */
   Future<DartChangeBuilder> _buildReplacementText(
       AnalysisResult result,
       SimpleIdentifier targetId,
-      ExecutableElement element,
+      FunctionType signature,
       StringBuffer displayTextBuffer) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -77,8 +78,12 @@
         new DartChangeBuilder(result.driver.currentSession);
     await builder.addFileEdit(result.path, (DartFileEditBuilder builder) {
       builder.addReplacement(range.node(targetId), (DartEditBuilder builder) {
-        builder.writeOverrideOfInheritedMember(element,
-            displayTextBuffer: displayTextBuffer);
+        ExecutableElement element = signature.element;
+        builder.writeOverride(
+          signature,
+          displayTextBuffer: displayTextBuffer,
+          invokeSuper: !element.isAbstract,
+        );
       });
     });
     return builder;
@@ -86,15 +91,15 @@
 
   /**
    * Build a suggestion to replace [targetId] in the given [unit]
-   * with an override of the given [element].
+   * with an override of the given [signature].
    */
   Future<CompletionSuggestion> _buildSuggestion(DartCompletionRequest request,
-      SimpleIdentifier targetId, ExecutableElement element) async {
+      SimpleIdentifier targetId, FunctionType signature) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     StringBuffer displayTextBuffer = new StringBuffer();
     DartChangeBuilder builder = await _buildReplacementText(
-        request.result, targetId, element, displayTextBuffer);
+        request.result, targetId, signature, displayTextBuffer);
     String replacement = builder.sourceChange.edits[0].edits[0].replacement;
     String completion = replacement.trim();
     String overrideAnnotation = '@override';
@@ -119,10 +124,10 @@
         completion,
         selectionRange.offset - offsetDelta,
         selectionRange.length,
-        element.hasDeprecated,
+        signature.element.hasDeprecated,
         false,
         displayText: displayText);
-    suggestion.element = protocol.convertElement(element);
+    suggestion.element = protocol.convertElement(signature.element);
     return suggestion;
   }
 
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
index eda5336..af2d9e3 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
@@ -13,6 +13,12 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer_plugin/src/utilities/completion/optype.dart';
 
+/**
+ * Given some [String] name "foo", return a [CompletionSuggestion] with the
+ * [String].
+ *
+ * If the passed [String] is null or empty, null is returned.
+ */
 CompletionSuggestion _createNameSuggestion(String name) {
   if (name == null || name.isEmpty) {
     return null;
@@ -21,6 +27,9 @@
       DART_RELEVANCE_DEFAULT, name, name.length, 0, false, false);
 }
 
+/**
+ * Convert some [Identifier] to its [String] name.
+ */
 String _getStringName(Identifier id) {
   if (id == null) {
     return null;
@@ -50,6 +59,7 @@
       // Resolution not needed for this completion
 
       AstNode node = request.target.containingNode;
+
       String strName = null;
       if (node is ExpressionStatement) {
         if (node.expression is Identifier) {
@@ -85,6 +95,10 @@
         return const <CompletionSuggestion>[];
       }
 
+      var doIncludePrivateVersion = !optype.inMethodBody &&
+          !optype.inFunctionBody &&
+          !optype.inConstructorBody;
+
       List<String> variableNameSuggestions = getCamelWordCombinations(strName);
       variableNameSuggestions.remove(strName);
       List<CompletionSuggestion> suggestions = <CompletionSuggestion>[];
@@ -93,6 +107,13 @@
         if (suggestion != null) {
           suggestions.add(suggestion);
         }
+        if (doIncludePrivateVersion) {
+          CompletionSuggestion privateSuggestion =
+              _createNameSuggestion('_' + varName);
+          if (privateSuggestion != null) {
+            suggestions.add(privateSuggestion);
+          }
+        }
       }
       return suggestions;
     }
diff --git a/pkg/analysis_server/lib/src/services/correction/assist.dart b/pkg/analysis_server/lib/src/services/correction/assist.dart
index 1b98a13..772299c 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist.dart
@@ -52,6 +52,8 @@
       'dart.assist.convert.toConstructorFieldParameter',
       30,
       "Convert to field formal parameter");
+  static const CONVERT_TO_INT_LITERAL = const AssistKind(
+      'dart.assist.convert.toIntLiteral', 30, "Convert to an int literal");
   static const CONVERT_TO_NORMAL_PARAMETER = const AssistKind(
       'dart.assist.convert.toConstructorNormalParameter',
       30,
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 d0f2695..dffd207 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
@@ -132,6 +132,7 @@
     await _addProposal_convertPartOfToUri();
     await _addProposal_convertToForIndexLoop();
     await _addProposal_convertToGenericFunctionSyntax();
+    await _addProposal_convertToIntLiteral();
     await _addProposal_convertToIsNot_onIs();
     await _addProposal_convertToIsNot_onNot();
     await _addProposal_convertToIsNotEmpty();
@@ -176,6 +177,8 @@
     // Calculate only specific assists for edit.dartFix
     if (assistKind == DartAssistKind.CONVERT_CLASS_TO_MIXIN) {
       await _addProposal_convertClassToMixin();
+    } else if (assistKind == DartAssistKind.CONVERT_TO_INT_LITERAL) {
+      await _addProposal_convertToIntLiteral();
     }
     return assists;
   }
@@ -382,6 +385,33 @@
     }
   }
 
+  Future<void> _addProposal_convertToIntLiteral() async {
+    if (node is! DoubleLiteral) {
+      _coverageMarker();
+      return;
+    }
+    DoubleLiteral literal = node;
+    int intValue;
+    try {
+      intValue = literal.value?.truncate();
+    } catch (e) {
+      // Double cannot be converted to int
+    }
+    if (intValue == null || intValue != literal.value) {
+      _coverageMarker();
+      return;
+    }
+
+    DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
+    await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
+      builder.addReplacement(new SourceRange(literal.offset, literal.length),
+          (DartEditBuilder builder) {
+        builder.write('${intValue}');
+      });
+    });
+    _addAssistFromBuilder(changeBuilder, DartAssistKind.CONVERT_TO_INT_LITERAL);
+  }
+
   Future<void> _addProposal_assignToLocalVariable() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index dca6f25..3f595bf 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -95,17 +95,17 @@
       'ADD_EXPLICIT_CAST', 50, "Add cast",
       appliedTogetherMessage: "Add all casts in file");
   static const ADD_FIELD_FORMAL_PARAMETERS = const FixKind(
-      'ADD_FIELD_FORMAL_PARAMETERS', 30, "Add final field formal parameters");
+      'ADD_FIELD_FORMAL_PARAMETERS', 70, "Add final field formal parameters");
   static const ADD_MISSING_PARAMETER_POSITIONAL = const FixKind(
       'ADD_MISSING_PARAMETER_POSITIONAL',
-      31,
+      69,
       "Add optional positional parameter");
   static const ADD_MISSING_PARAMETER_NAMED = const FixKind(
-      'ADD_MISSING_PARAMETER_NAMED', 30, "Add named parameter '{0}'");
+      'ADD_MISSING_PARAMETER_NAMED', 70, "Add named parameter '{0}'");
   static const ADD_MISSING_PARAMETER_REQUIRED = const FixKind(
-      'ADD_MISSING_PARAMETER_REQUIRED', 30, "Add required parameter");
+      'ADD_MISSING_PARAMETER_REQUIRED', 70, "Add required parameter");
   static const ADD_MISSING_REQUIRED_ARGUMENT = const FixKind(
-      'ADD_MISSING_REQUIRED_ARGUMENT', 30, "Add required argument '{0}'");
+      'ADD_MISSING_REQUIRED_ARGUMENT', 70, "Add required argument '{0}'");
   static const ADD_NE_NULL = const FixKind('ADD_NE_NULL', 50, "Add != null",
       appliedTogetherMessage: "Add != null everywhere in file");
   static const ADD_PACKAGE_DEPENDENCY = const FixKind(
@@ -116,11 +116,11 @@
       'ADD_SUPER_CONSTRUCTOR_INVOCATION',
       50,
       "Add super constructor {0} invocation");
-  static const CHANGE_TO = const FixKind('CHANGE_TO', 49, "Change to '{0}'");
+  static const CHANGE_TO = const FixKind('CHANGE_TO', 51, "Change to '{0}'");
   static const CHANGE_TO_NEAREST_PRECISE_VALUE = const FixKind(
       'CHANGE_TO_NEAREST_PRECISE_VALUE',
       50,
-      'Change to nearest precise int-as-double value: {0}');
+      "Change to nearest precise int-as-double value: {0}");
   static const CHANGE_TO_STATIC_ACCESS = const FixKind(
       'CHANGE_TO_STATIC_ACCESS', 50, "Change access to static using '{0}'");
   static const CHANGE_TYPE_ANNOTATION = const FixKind(
@@ -140,11 +140,11 @@
   static const CREATE_CONSTRUCTOR_SUPER = const FixKind(
       'CREATE_CONSTRUCTOR_SUPER', 50, "Create constructor to call {0}");
   static const CREATE_FIELD =
-      const FixKind('CREATE_FIELD', 51, "Create field '{0}'");
+      const FixKind('CREATE_FIELD', 49, "Create field '{0}'");
   static const CREATE_FILE =
       const FixKind('CREATE_FILE', 50, "Create file '{0}'");
   static const CREATE_FUNCTION =
-      const FixKind('CREATE_FUNCTION', 51, "Create function '{0}'");
+      const FixKind('CREATE_FUNCTION', 49, "Create function '{0}'");
   static const CREATE_GETTER =
       const FixKind('CREATE_GETTER', 50, "Create getter '{0}'");
   static const CREATE_LOCAL_VARIABLE =
@@ -152,25 +152,25 @@
   static const CREATE_METHOD =
       const FixKind('CREATE_METHOD', 50, "Create method '{0}'");
   static const CREATE_MISSING_OVERRIDES = const FixKind(
-      'CREATE_MISSING_OVERRIDES', 49, "Create {0} missing override(s)");
+      'CREATE_MISSING_OVERRIDES', 51, "Create {0} missing override(s)");
   static const CREATE_MIXIN =
       const FixKind('CREATE_MIXIN', 50, "Create mixin '{0}'");
   static const CREATE_NO_SUCH_METHOD = const FixKind(
-      'CREATE_NO_SUCH_METHOD', 51, "Create 'noSuchMethod' method");
+      'CREATE_NO_SUCH_METHOD', 49, "Create 'noSuchMethod' method");
   static const CONVERT_TO_NAMED_ARGUMENTS = const FixKind(
       'CONVERT_TO_NAMED_ARGUMENTS', 50, "Convert to named arguments");
   static const IMPORT_LIBRARY_PREFIX = const FixKind('IMPORT_LIBRARY_PREFIX',
-      51, "Use imported library '{0}' with prefix '{1}'");
+      49, "Use imported library '{0}' with prefix '{1}'");
   static const IMPORT_LIBRARY_PROJECT1 =
-      const FixKind('IMPORT_LIBRARY_PROJECT1', 47, "Import library '{0}'");
+      const FixKind('IMPORT_LIBRARY_PROJECT1', 53, "Import library '{0}'");
   static const IMPORT_LIBRARY_PROJECT2 =
-      const FixKind('IMPORT_LIBRARY_PROJECT2', 48, "Import library '{0}'");
+      const FixKind('IMPORT_LIBRARY_PROJECT2', 52, "Import library '{0}'");
   static const IMPORT_LIBRARY_PROJECT3 =
-      const FixKind('IMPORT_LIBRARY_PROJECT3', 49, "Import library '{0}'");
+      const FixKind('IMPORT_LIBRARY_PROJECT3', 51, "Import library '{0}'");
   static const IMPORT_LIBRARY_SDK =
-      const FixKind('IMPORT_LIBRARY_SDK', 46, "Import library '{0}'");
+      const FixKind('IMPORT_LIBRARY_SDK', 54, "Import library '{0}'");
   static const IMPORT_LIBRARY_SHOW =
-      const FixKind('IMPORT_LIBRARY_SHOW', 45, "Update library '{0}' import");
+      const FixKind('IMPORT_LIBRARY_SHOW', 55, "Update library '{0}' import");
   static const INSERT_SEMICOLON =
       const FixKind('INSERT_SEMICOLON', 50, "Insert ';'");
   static const INVOKE_CONSTRUCTOR_USING_NEW = const FixKind(
@@ -182,9 +182,13 @@
   static const LINT_REMOVE_INTERPOLATION_BRACES = const FixKind(
       'LINT_REMOVE_INTERPOLATION_BRACES',
       50,
-      'Remove unnecessary interpolation braces');
+      "Remove unnecessary interpolation braces");
   static const MAKE_CLASS_ABSTRACT =
       const FixKind('MAKE_CLASS_ABSTRACT', 50, "Make class '{0}' abstract");
+  static const MOVE_TYPE_ARGUMENTS_TO_CLASS = const FixKind(
+      'MOVE_TYPE_ARGUMENTS_TO_CLASS',
+      50,
+      "Move type arguments to after class name");
   static const REMOVE_DEAD_CODE =
       const FixKind('REMOVE_DEAD_CODE', 50, "Remove dead code");
   static const MAKE_FIELD_NOT_FINAL =
@@ -202,7 +206,7 @@
   static const REMOVE_INITIALIZER =
       const FixKind('REMOVE_INITIALIZER', 50, "Remove initializer");
   static const REMOVE_METHOD_DECLARATION = const FixKind(
-      'REMOVE_METHOD_DECLARATION', 50, 'Remove method declaration');
+      'REMOVE_METHOD_DECLARATION', 50, "Remove method declaration");
   static const REMOVE_PARAMETERS_IN_GETTER_DECLARATION = const FixKind(
       'REMOVE_PARAMETERS_IN_GETTER_DECLARATION',
       50,
@@ -213,13 +217,15 @@
       "Remove parentheses in getter invocation");
   static const REMOVE_THIS_EXPRESSION =
       const FixKind('REMOVE_THIS_EXPRESSION', 50, "Remove this expression");
+  static const REMOVE_TYPE_ARGUMENTS =
+      const FixKind('REMOVE_TYPE_ARGUMENTS', 51, "Remove type arguments");
   static const REMOVE_TYPE_NAME =
       const FixKind('REMOVE_TYPE_NAME', 50, "Remove type name");
   static const REMOVE_UNNECESSARY_CAST = const FixKind(
       'REMOVE_UNNECESSARY_CAST', 50, "Remove unnecessary cast",
       appliedTogetherMessage: "Remove all unnecessary casts in file");
-  static const REMOVE_UNUSED_CATCH_CLAUSE =
-      const FixKind('REMOVE_UNUSED_CATCH', 50, "Remove unused 'catch' clause");
+  static const REMOVE_UNUSED_CATCH_CLAUSE = const FixKind(
+      'REMOVE_UNUSED_CATCH_CLAUSE', 50, "Remove unused 'catch' clause");
   static const REMOVE_UNUSED_CATCH_STACK = const FixKind(
       'REMOVE_UNUSED_CATCH_STACK', 50, "Remove unused stack trace variable");
   static const REMOVE_UNUSED_IMPORT = const FixKind(
@@ -241,11 +247,11 @@
   static const REPLACE_WITH_BRACKETS =
       const FixKind('REPLACE_WITH_BRACKETS', 50, "Replace with { }");
   static const REPLACE_WITH_CONDITIONAL_ASSIGNMENT = const FixKind(
-      'REPLACE_WITH_CONDITIONAL_ASSIGNMENT', 50, 'Replace with ??=');
+      'REPLACE_WITH_CONDITIONAL_ASSIGNMENT', 50, "Replace with ??=");
   static const REPLACE_WITH_IDENTIFIER =
       const FixKind('REPLACE_WITH_IDENTIFIER', 50, "Replace with identifier");
   static const REPLACE_WITH_LITERAL =
-      const FixKind('REPLACE_WITH_LITERAL', 50, 'Replace with literal');
+      const FixKind('REPLACE_WITH_LITERAL', 50, "Replace with literal");
   static const REPLACE_WITH_NULL_AWARE = const FixKind(
       'REPLACE_WITH_NULL_AWARE',
       50,
@@ -262,7 +268,7 @@
       appliedTogetherMessage:
           "Use == null instead of 'is Null' everywhere in file");
   static const USE_IS_NOT_EMPTY = const FixKind(
-      'USE_NOT_EMPTY', 50, "Use x.isNotEmpty instead of '!x.isEmpty'");
+      'USE_IS_NOT_EMPTY', 50, "Use x.isNotEmpty instead of '!x.isEmpty'");
   static const USE_NOT_EQ_NULL = const FixKind(
       'USE_NOT_EQ_NULL', 50, "Use != null instead of 'is! Null'",
       appliedTogetherMessage:
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 2fba47c..db40113 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -551,6 +551,11 @@
     if (errorCode == CompileTimeErrorCode.CONST_INSTANCE_FIELD) {
       await _addFix_addStatic();
     }
+    if (errorCode ==
+        StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR) {
+      await _addFix_moveTypeArgumentsToClass();
+      await _addFix_removeTypeArguments();
+    }
     // lints
     if (errorCode is LintCode) {
       String name = errorCode.name;
@@ -628,12 +633,18 @@
     return fixes;
   }
 
+  Future<Fix> computeFix() async {
+    List<Fix> fixes = await compute();
+    fixes.sort(Fix.SORT_BY_RELEVANCE);
+    return fixes.isNotEmpty ? fixes.first : null;
+  }
+
   Future<void> _addFix_addAsync() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     FunctionBody body = node.getAncestor((n) => n is FunctionBody);
     if (body != null && body.keyword == null) {
-      TypeProvider typeProvider = await this.typeProvider;
+      TypeProvider typeProvider = this.typeProvider;
       DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
       await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
         builder.convertFunctionFromSyncToAsync(body, typeProvider);
@@ -1959,20 +1970,20 @@
     ClassDeclaration targetClass = node.parent as ClassDeclaration;
     ClassElement targetClassElement = targetClass.declaredElement;
     utils.targetClassElement = targetClassElement;
-    List<ExecutableElement> elements =
+    List<FunctionType> signatures =
         InheritanceOverrideVerifier.missingOverrides(targetClass).toList();
     // sort by name, getters before setters
-    elements.sort((Element a, Element b) {
-      int names = compareStrings(a.displayName, b.displayName);
+    signatures.sort((FunctionType a, FunctionType b) {
+      int names = compareStrings(a.element.displayName, b.element.displayName);
       if (names != 0) {
         return names;
       }
-      if (a.kind == ElementKind.GETTER) {
+      if (a.element.kind == ElementKind.GETTER) {
         return -1;
       }
       return 1;
     });
-    int numElements = elements.length;
+    int numElements = signatures.length;
 
     ClassMemberLocation location =
         utils.prepareNewClassMemberLocation(targetClass, (_) => true);
@@ -1981,9 +1992,6 @@
     DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
     await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
       builder.addInsertion(location.offset, (DartEditBuilder builder) {
-        // TODO(brianwilkerson) Compare with builder.writeOverrideOfInheritedMember
-        // The builder method doesn't merge getter/setter pairs into fields.
-
         // Separator management.
         int numOfMembersWritten = 0;
         void addSeparatorBetweenDeclarations() {
@@ -1998,14 +2006,15 @@
         }
 
         // merge getter/setter pairs into fields
-        for (int i = 0; i < elements.length; i++) {
-          ExecutableElement element = elements[i];
-          if (element.kind == ElementKind.GETTER && i + 1 < elements.length) {
-            ExecutableElement nextElement = elements[i + 1];
+        for (int i = 0; i < signatures.length; i++) {
+          FunctionType signature = signatures[i];
+          ExecutableElement element = signature.element;
+          if (element.kind == ElementKind.GETTER && i + 1 < signatures.length) {
+            ExecutableElement nextElement = signatures[i + 1].element;
             if (nextElement.kind == ElementKind.SETTER) {
               // remove this and the next elements, adjust iterator
-              elements.removeAt(i + 1);
-              elements.removeAt(i);
+              signatures.removeAt(i + 1);
+              signatures.removeAt(i);
               i--;
               numElements--;
               // separator
@@ -2015,7 +2024,7 @@
               builder.write(eol);
               // add field
               builder.write(prefix);
-              builder.writeType(element.type.returnType, required: true);
+              builder.writeType(signature.returnType, required: true);
               builder.write(' ');
               builder.write(element.name);
               builder.write(';');
@@ -2023,10 +2032,9 @@
           }
         }
         // add elements
-        for (ExecutableElement element in elements) {
+        for (FunctionType signature in signatures) {
           addSeparatorBetweenDeclarations();
-          _addFix_createMissingOverridesForBuilder(
-              builder, targetClass, element);
+          builder.writeOverride(signature);
         }
         builder.write(location.suffix);
       });
@@ -2036,65 +2044,6 @@
         args: [numElements]);
   }
 
-  void _addFix_createMissingOverridesForBuilder(DartEditBuilder builder,
-      ClassDeclaration targetClass, ExecutableElement element) {
-    utils.targetExecutableElement = element;
-    // prepare environment
-    String prefix = utils.getIndent(1);
-    String prefix2 = utils.getIndent(2);
-    // may be property
-    ElementKind elementKind = element.kind;
-    bool isGetter = elementKind == ElementKind.GETTER;
-    bool isSetter = elementKind == ElementKind.SETTER;
-    bool isMethod = elementKind == ElementKind.METHOD;
-    bool isOperator = isMethod && (element as MethodElement).isOperator;
-    if (isGetter) {
-      builder.write('// TODO: implement ${element.displayName}');
-      builder.write(eol);
-      builder.write(prefix);
-    }
-    // @override
-    builder.write('@override');
-    builder.write(eol);
-    builder.write(prefix);
-    // return type
-    if (!isSetter) {
-      if (builder.writeType(element.type.returnType,
-          methodBeingCopied: element)) {
-        builder.write(' ');
-      }
-    }
-    // keyword
-    if (isGetter) {
-      builder.write('get ');
-    } else if (isSetter) {
-      builder.write('set ');
-    } else if (isOperator) {
-      builder.write('operator ');
-    }
-    // name
-    builder.write(element.displayName);
-    builder.writeTypeParameters(element.typeParameters,
-        methodBeingCopied: element);
-    // parameters + body
-    if (isGetter) {
-      builder.write(' => null;');
-    } else {
-      List<ParameterElement> parameters = element.parameters;
-      builder.writeParameters(parameters, methodBeingCopied: element);
-      builder.write(' {');
-      // TO-DO
-      builder.write(eol);
-      builder.write(prefix2);
-      builder.write('// TODO: implement ${element.displayName}');
-      builder.write(eol);
-      // close method
-      builder.write(prefix);
-      builder.write('}');
-    }
-    utils.targetExecutableElement = null;
-  }
-
   Future<void> _addFix_createMixin() async {
     Element prefixElement = null;
     String name = null;
@@ -2562,6 +2511,33 @@
     }
   }
 
+  Future<void> _addFix_moveTypeArgumentsToClass() async {
+    if (coveredNode is TypeArgumentList) {
+      TypeArgumentList typeArguments = coveredNode;
+      if (typeArguments.parent is! InstanceCreationExpression) {
+        return;
+      }
+      InstanceCreationExpression creation = typeArguments.parent;
+      TypeName typeName = creation.constructorName.type;
+      if (typeName.typeArguments != null) {
+        return;
+      }
+      Element element = typeName.type.element;
+      if (element is ClassElement &&
+          element.typeParameters != null &&
+          element.typeParameters.length == typeArguments.arguments.length) {
+        DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
+        await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
+          String argumentText = utils.getNodeText(typeArguments);
+          builder.addSimpleInsertion(typeName.end, argumentText);
+          builder.addDeletion(range.node(typeArguments));
+        });
+        _addFixFromBuilder(
+            changeBuilder, DartFixKind.MOVE_TYPE_ARGUMENTS_TO_CLASS);
+      }
+    }
+  }
+
   Future<void> _addFix_nonBoolCondition_addNotNull() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
@@ -2814,6 +2790,17 @@
     }
   }
 
+  Future<void> _addFix_removeTypeArguments() async {
+    if (coveredNode is TypeArgumentList) {
+      TypeArgumentList typeArguments = coveredNode;
+      DartChangeBuilder changeBuilder = new DartChangeBuilder(session);
+      await changeBuilder.addFileEdit(file, (DartFileEditBuilder builder) {
+        builder.addDeletion(range.node(typeArguments));
+      });
+      _addFixFromBuilder(changeBuilder, DartFixKind.REMOVE_TYPE_ARGUMENTS);
+    }
+  }
+
   Future<void> _addFix_removeUnnecessaryCast() async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
diff --git a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
index cea1e5c..23c804b 100644
--- a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
+++ b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
@@ -13,7 +13,7 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/dart/element/visitor.dart';
 import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
+import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
 import 'package:analyzer/src/generated/bazel.dart';
 import 'package:analyzer/src/generated/gn.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart'
@@ -94,7 +94,7 @@
   final ResourceProvider resourceProvider;
   final List<KytheEntry> entries;
   final String corpus;
-  final InheritanceManager _inheritanceManager;
+  final InheritanceManager2 _inheritanceManager;
   final String _contents;
 
   String _enclosingFilePath = '';
@@ -695,19 +695,19 @@
           returnNode: node.returnType);
 
       // override edges
-      List<ExecutableElement> overriddenList =
-          _inheritanceManager.lookupOverrides(_enclosingClassElement,
-              resolutionMap.elementDeclaredByMethodDeclaration(node).name);
-      for (ExecutableElement overridden in overriddenList) {
-        if (overridden is MultiplyInheritedExecutableElement) {
-          for (ExecutableElement elt in overridden.inheritedElements) {
-            addEdge(methodVName, schema.OVERRIDES_EDGE,
-                _vNameFromElement(elt, schema.FUNCTION_KIND));
-          }
-        } else {
-          addEdge(methodVName, schema.OVERRIDES_EDGE,
-              _vNameFromElement(overridden, schema.FUNCTION_KIND));
-        }
+      var overriddenSignatures = _inheritanceManager.getOverridden(
+        _enclosingClassElement.type,
+        new Name(
+          _enclosingClassElement.library.source.uri,
+          node.declaredElement.name,
+        ),
+      );
+      for (FunctionType signature in overriddenSignatures) {
+        addEdge(
+          methodVName,
+          schema.OVERRIDES_EDGE,
+          _vNameFromElement(signature.element, schema.FUNCTION_KIND),
+        );
       }
 
       // visit children
diff --git a/pkg/analysis_server/lib/src/services/refactoring/move_file.dart b/pkg/analysis_server/lib/src/services/refactoring/move_file.dart
index d5d1853..d2e3c69 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/move_file.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/move_file.dart
@@ -127,19 +127,27 @@
    */
   String _computeNewUri(SourceReference reference) {
     String refDir = pathContext.dirname(reference.file);
-    // try to keep package: URI
-    // if (_isPackageReference(reference)) {
-    //   Source newSource = new NonExistingSource(
-    //       newFile, pathos.toUri(newFile), UriKind.FILE_URI);
-    //   Uri restoredUri = context.sourceFactory.restoreUri(newSource);
-    //   if (restoredUri != null) {
-    //     return restoredUri.toString();
-    //   }
-    // }
-    // if no package: URI, prepare relative
+    // Try to keep package: URI
+    if (_isPackageReference(reference)) {
+      Source newSource = new NonExistingSource(
+          newFile, pathos.toUri(newFile), UriKind.FILE_URI);
+      Uri restoredUri = driver.sourceFactory.restoreUri(newSource);
+      if (restoredUri != null) {
+        return restoredUri.toString();
+      }
+    }
     return _getRelativeUri(newFile, refDir);
   }
 
+  final packagePrefixedStringPattern = new RegExp(r'''^r?['"]+package:''');
+  bool _isPackageReference(SourceReference reference) {
+    final Source source = reference.element.source;
+    final String quotedImportUri = source.contents.data.substring(
+        reference.range.offset,
+        reference.range.offset + reference.range.length);
+    return packagePrefixedStringPattern.hasMatch(quotedImportUri);
+  }
+
   String _getRelativeUri(String path, String from) {
     String uri = pathContext.relative(path, from: from);
     List<String> parts = pathContext.split(uri);
diff --git a/pkg/analysis_server/lib/src/status/diagnostics.dart b/pkg/analysis_server/lib/src/status/diagnostics.dart
index 4628c6f..56423be 100644
--- a/pkg/analysis_server/lib/src/status/diagnostics.dart
+++ b/pkg/analysis_server/lib/src/status/diagnostics.dart
@@ -389,7 +389,6 @@
 
     b.write(
         writeOption('Analyze function bodies', options.analyzeFunctionBodies));
-    b.write(writeOption('Enable super mixins', options.enableSuperMixins));
     b.write(writeOption('Generate dart2js hints', options.dart2jsHint));
     b.write(writeOption(
         'Generate errors in implicit files', options.generateImplicitErrors));
diff --git a/pkg/analysis_server/lib/src/utilities/flutter.dart b/pkg/analysis_server/lib/src/utilities/flutter.dart
index 06c3d3c..f116530 100644
--- a/pkg/analysis_server/lib/src/utilities/flutter.dart
+++ b/pkg/analysis_server/lib/src/utilities/flutter.dart
@@ -229,12 +229,18 @@
 
 /**
  * Attempt to find and return the closest expression that encloses the [node]
- * and is a Flutter `Widget`.  Return `null` if nothing found.
+ * and is an independent Flutter `Widget`.  Return `null` if nothing found.
  */
 Expression identifyWidgetExpression(AstNode node) {
   for (; node != null; node = node.parent) {
     if (isWidgetExpression(node)) {
-      return node;
+      var parent = node.parent;
+      if (parent is ArgumentList ||
+          parent is ListLiteral ||
+          parent is NamedExpression && parent.expression == node ||
+          parent is Statement) {
+        return node;
+      }
     }
     if (node is ArgumentList || node is Statement || node is FunctionBody) {
       return null;
diff --git a/pkg/analysis_server/pubspec.yaml b/pkg/analysis_server/pubspec.yaml
index 2b6249c..f635e39 100644
--- a/pkg/analysis_server/pubspec.yaml
+++ b/pkg/analysis_server/pubspec.yaml
@@ -2,7 +2,7 @@
 publish_to: none
 description: A server that performs analysis of Dart code over character streams using JSON-RPC encoded information.
 dependencies:
-  analyzer: ^0.30.0
+  analyzer: ^0.33.0
   args: '>=0.13.0 <2.0.0'
   dart_style: '^1.0.6'
   intl: ^0.15.0
diff --git a/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart b/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart
index 56b2399..305acd3 100644
--- a/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_analyzedFiles_test.dart
@@ -119,7 +119,7 @@
     expect(analyzedFilesReceived, isTrue);
 
     analyzedFilesReceived = false;
-    modifyTestFile('import "${convertPathForImport('/foo.dart')}";');
+    modifyTestFile('import "${convertAbsolutePathToUri('/foo.dart')}";');
     await prepareAnalyzedFiles();
     assertHasFile(convertPath('/foo.dart'));
   }
diff --git a/pkg/analysis_server/test/context_manager_test.dart b/pkg/analysis_server/test/context_manager_test.dart
index a2911fa..e04d0de 100644
--- a/pkg/analysis_server/test/context_manager_test.dart
+++ b/pkg/analysis_server/test/context_manager_test.dart
@@ -13,8 +13,10 @@
 import 'package:analyzer/source/error_processor.dart';
 import 'package:analyzer/src/context/builder.dart';
 import 'package:analyzer/src/context/context_root.dart';
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/file_state.dart';
+import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/engine.dart' hide AnalysisResult;
 import 'package:analyzer/src/generated/sdk.dart';
@@ -24,8 +26,6 @@
 import 'package:analyzer/src/summary/summary_file_builder.dart';
 import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
 import 'package:analyzer/src/util/glob.dart';
-import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:linter/src/rules.dart';
 import 'package:linter/src/rules/avoid_as.dart';
 import 'package:path/path.dart' as path;
@@ -1807,8 +1807,6 @@
 embedded_libs:
   "dart:foobar": "../sdk_ext/entry.dart"
 analyzer:
-  language:
-    enableSuperMixins: true
   errors:
     unused_local_variable: false
 linter:
@@ -1823,7 +1821,6 @@
     // Verify options were set.
     expect(errorProcessors, hasLength(1));
     expect(lints, hasLength(1));
-    expect(analysisOptions.enableSuperMixins, isTrue);
 
     // Remove options.
     deleteOptionsFile();
@@ -1832,7 +1829,6 @@
     // Verify defaults restored.
     expect(errorProcessors, isEmpty);
     expect(lints, isEmpty);
-    expect(analysisOptions.enableSuperMixins, isFalse);
   }
 
   @failingTest
@@ -1859,8 +1855,6 @@
     // Setup analysis options
     newFile('$projPath/$optionsFileName', content: r'''
 analyzer:
-  language:
-    enableSuperMixins: true
   errors:
     unused_local_variable: false
 linter:
@@ -1873,7 +1867,6 @@
     await pumpEventQueue();
 
     // Verify options were set.
-    expect(analysisOptions.enableSuperMixins, isTrue);
     expect(errorProcessors, hasLength(2));
     expect(lints, hasLength(2));
 
@@ -1882,7 +1875,6 @@
     await pumpEventQueue();
 
     // Verify defaults restored.
-    expect(analysisOptions.enableSuperMixins, isFalse);
     expect(lints, hasLength(1));
     expect(lints.first, const TypeMatcher<AvoidAs>());
     expect(errorProcessors, hasLength(1));
@@ -1903,8 +1895,6 @@
 ''');
     newFile('$projPath/other_options.yaml', content: r'''
 analyzer:
-  language:
-    enableSuperMixins: true
   errors:
     unused_local_variable: false
 linter:
@@ -1915,7 +1905,6 @@
     manager.setRoots(<String>[projPath], <String>[], <String, String>{});
     await pumpEventQueue();
     // Verify options were set.
-    expect(analysisOptions.enableSuperMixins, isTrue);
     expect(errorProcessors, hasLength(1));
     expect(lints, hasLength(1));
     expect(lints[0].name, 'camel_case_types');
@@ -1933,8 +1922,6 @@
     String booLibPosixPath = '/my/pkg/boo/lib';
     newFile('$booLibPosixPath/other_options.yaml', content: r'''
 analyzer:
-  language:
-    enableSuperMixins: true
   errors:
     unused_local_variable: false
 linter:
@@ -1951,7 +1938,6 @@
     manager.setRoots(<String>[projPath], <String>[], <String, String>{});
     await pumpEventQueue();
     // Verify options were set.
-    expect(analysisOptions.enableSuperMixins, isTrue);
     expect(errorProcessors, hasLength(1));
     expect(lints, hasLength(1));
     expect(lints[0].name, 'camel_case_types');
@@ -2009,8 +1995,6 @@
   "dart:foobar": "../sdk_ext/entry.dart"
 analyzer:
   strong-mode: true
-  language:
-    enableSuperMixins: true
   errors:
     missing_return: false
 linter:
@@ -2026,8 +2010,6 @@
 analyzer:
   exclude:
     - 'test/**'
-  language:
-    enableSuperMixins: true
   errors:
     unused_local_variable: false
 linter:
@@ -2046,12 +2028,8 @@
 
     // Verify options.
     // * from `_embedder.yaml`:
-    // TODO(brianwilkerson) Figure out what to use in place of 'strongMode' and
-    // why 'enableSuperMixins' is assumed to come from two different sources.
+    // TODO(brianwilkerson) Figure out what to use in place of 'strongMode'.
 //    expect(analysisOptions.strongMode, isTrue);
-    expect(analysisOptions.enableSuperMixins, isTrue);
-    // * from analysis options:
-    expect(analysisOptions.enableSuperMixins, isTrue);
 
     // * verify tests are excluded
     expect(
diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart
index 5a877b3..0566e1f 100644
--- a/pkg/analysis_server/test/domain_completion_test.dart
+++ b/pkg/analysis_server/test/domain_completion_test.dart
@@ -251,7 +251,7 @@
 
   test_import_uri_with_trailing() {
     final filePath = '/project/bin/testA.dart';
-    final incompleteImportText = convertPathForImport('/project/bin/t');
+    final incompleteImportText = convertAbsolutePathToUri('/project/bin/t');
     newFile(filePath, content: 'library libA;');
     addTestFile('''
     import "$incompleteImportText^.dart";
@@ -261,7 +261,7 @@
           equals(completionOffset - incompleteImportText.length));
       expect(replacementLength, equals(5 + incompleteImportText.length));
       assertHasResult(
-          CompletionSuggestionKind.IMPORT, convertPathForImport(filePath));
+          CompletionSuggestionKind.IMPORT, convertAbsolutePathToUri(filePath));
       assertNoResult('test');
     });
   }
@@ -509,7 +509,7 @@
   foo(bar) => 0;''');
     addTestFile('''
   library libA;
-  part "${convertPathForImport('/testA.dart')}";
+  part "${convertAbsolutePathToUri('/testA.dart')}";
   import "dart:math";
   /// The [^]
   main(aaa, bbb) {}
@@ -734,7 +734,7 @@
   test_partFile() {
     newFile('/project/bin/testA.dart', content: '''
       library libA;
-      part "${convertPathForImport(testFile)}";
+      part "${convertAbsolutePathToUri(testFile)}";
       import 'dart:html';
       class A { }
     ''');
@@ -760,7 +760,7 @@
       class A { }''');
     addTestFile('''
       library libA;
-      part "${convertPathForImport("/testA.dart")}";
+      part "${convertAbsolutePathToUri("/testA.dart")}";
       import 'dart:html';
       main() {^}
     ''');
diff --git a/pkg/analysis_server/test/integration/support/integration_test_methods.dart b/pkg/analysis_server/test/integration/support/integration_test_methods.dart
index b2954eb..3976d6c 100644
--- a/pkg/analysis_server/test/integration/support/integration_test_methods.dart
+++ b/pkg/analysis_server/test/integration/support/integration_test_methods.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
@@ -438,6 +438,11 @@
    *
    *   The name of the function being invoked at the given offset.
    *
+   * parameters: List<ParameterInfo>
+   *
+   *   A list of information about each of the parameters of the function being
+   *   invoked.
+   *
    * dartdoc: String (optional)
    *
    *   The dartdoc associated with the function being invoked. Other than the
@@ -445,11 +450,6 @@
    *   case of a block comment, the dartdoc is unprocessed markdown. This data
    *   is omitted if there is no referenced element, or if the element has no
    *   dartdoc.
-   *
-   * parameters: List<ParameterInfo>
-   *
-   *   A list of information about each of the parameters of the function being
-   *   invoked.
    */
   Future<AnalysisGetSignatureResult> sendAnalysisGetSignature(
       String file, int offset) async {
diff --git a/pkg/analysis_server/test/integration/support/protocol_matchers.dart b/pkg/analysis_server/test/integration/support/protocol_matchers.dart
index f2f732b..db9505f 100644
--- a/pkg/analysis_server/test/integration/support/protocol_matchers.dart
+++ b/pkg/analysis_server/test/integration/support/protocol_matchers.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
@@ -1723,8 +1723,8 @@
  *
  * {
  *   "name": String
- *   "dartdoc": optional String
  *   "parameters": List<ParameterInfo>
+ *   "dartdoc": optional String
  * }
  */
 final Matcher isAnalysisGetSignatureResult = new LazyMatcher(() =>
diff --git a/pkg/analysis_server/test/mock_sdk.dart b/pkg/analysis_server/test/mock_sdk.dart
index 2178be8..07f8f15 100644
--- a/pkg/analysis_server/test/mock_sdk.dart
+++ b/pkg/analysis_server/test/mock_sdk.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 testing.mock_sdk;
-
 import 'package:analyzer/file_system/file_system.dart' as resource;
 import 'package:analyzer/file_system/memory_file_system.dart' as resource;
 import 'package:analyzer/src/context/context.dart';
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 2353870..a75c2e4 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
@@ -145,7 +145,7 @@
     addSource('/libA.dart', '''
 library libA; class A { const A({int one, String two: 'defaultValue'}); }''');
     addTestSource(
-        'import "${convertPathForImport("/libA.dart")}"; @A(^) main() { }');
+        'import "${convertAbsolutePathToUri("/libA.dart")}"; @A(^) main() { }');
     await computeSuggestions();
     assertSuggestArgumentsAndTypes(
         namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
@@ -158,7 +158,7 @@
 }
 ''');
     addTestSource('''
-import "${convertPathForImport("/libA.dart")}" as p;
+import "${convertAbsolutePathToUri("/libA.dart")}" as p;
 @p.A(^)
 main() {}
 ''');
@@ -465,7 +465,7 @@
     // ArgumentList  InstanceCreationExpression  ExpressionStatement
     addSource('/libA.dart', 'library libA; class A{A({int one}); }');
     addTestSource(
-        'import "${convertPathForImport("/libA.dart")}"; main() { new A(^);}');
+        'import "${convertAbsolutePathToUri("/libA.dart")}"; main() { new A(^);}');
     await computeSuggestions();
     assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
   }
@@ -474,7 +474,7 @@
     // ArgumentList  InstanceCreationExpression  ExpressionStatement
     addSource('/libA.dart', 'library libA; class A{A.foo({int one}); }');
     addTestSource(
-        'import "${convertPathForImport("/libA.dart")}"; main() { new A.foo(^);}');
+        'import "${convertAbsolutePathToUri("/libA.dart")}"; main() { new A.foo(^);}');
     await computeSuggestions();
     assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
   }
@@ -484,7 +484,7 @@
     addSource(
         '/libA.dart', 'library libA; class A { A({int i, String s, d}) {} }}');
     addTestSource(
-        'import "${convertPathForImport("/libA.dart")}"; main() { var a = new A(^);}');
+        'import "${convertAbsolutePathToUri("/libA.dart")}"; main() { var a = new A(^);}');
     await computeSuggestions();
     assertSuggestArgumentsAndTypes(
         namedArgumentsWithTypes: {'i': 'int', 's': 'String', 'd': 'dynamic'});
@@ -495,7 +495,7 @@
     addSource(
         '/libA.dart', 'library libA; class A{factory A({int one}) => null;}');
     addTestSource(
-        'import "${convertPathForImport("/libA.dart")}"; main() { new A(^);}');
+        'import "${convertAbsolutePathToUri("/libA.dart")}"; main() { new A(^);}');
     await computeSuggestions();
     assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
   }
@@ -505,7 +505,7 @@
     addSource('/libA.dart',
         'library libA; abstract class A{factory A.foo({int one});}');
     addTestSource(
-        'import "${convertPathForImport("/libA.dart")}"; main() { new A.foo(^);}');
+        'import "${convertAbsolutePathToUri("/libA.dart")}"; main() { new A.foo(^);}');
     await computeSuggestions();
     assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
   }
@@ -515,7 +515,7 @@
     addSource('/libA.dart',
         'library libA; class A {factory A({int i, String s, d}) {} }}');
     addTestSource(
-        'import "${convertPathForImport("/libA.dart")}"; main() { var a = new A(^);}');
+        'import "${convertAbsolutePathToUri("/libA.dart")}"; main() { var a = new A(^);}');
     await computeSuggestions();
     assertSuggestArgumentsAndTypes(
         namedArgumentsWithTypes: {'i': 'int', 's': 'String', 'd': 'dynamic'});
@@ -529,7 +529,7 @@
       expect() { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect(a^)}''');
@@ -545,7 +545,7 @@
       expect(String arg) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect(^)}''');
@@ -561,7 +561,7 @@
       expect(String arg1, int arg2) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect(^)}''');
@@ -577,7 +577,7 @@
       expect(String arg1, int arg2, {bool arg3}) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect(^)}''');
@@ -593,7 +593,7 @@
       expect(String arg1, int arg2, {bool arg3}) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect('hello', ^)}''');
@@ -609,7 +609,7 @@
       expect(String arg1, int arg2, {bool arg3}) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect('hello', ^x)}''');
@@ -625,7 +625,7 @@
       expect(String arg1, int arg2, {bool arg3}) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect('hello', x^)}''');
@@ -641,7 +641,7 @@
       expect(String arg1, int arg2, {bool arg3}) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B { }
       String bar() => true;
       void main() {expect('hello', x ^)}''');
@@ -1030,7 +1030,7 @@
       bool hasLength(int expected) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B {
         expect() { }
         void foo() {expect(^)}}
@@ -1046,7 +1046,7 @@
       bool hasLength(int expected) { }
       void baz() { }''');
     addTestSource('''
-      import '${convertPathForImport('/libA.dart')}'
+      import '${convertAbsolutePathToUri('/libA.dart')}'
       class B {
         expect(arg, int blat) { }
         void foo() {expect(^)}}
diff --git a/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
index ac4c454..66d2115 100644
--- a/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/combinator_contributor_test.dart
@@ -38,7 +38,7 @@
     // SimpleIdentifier  HideCombinator  ImportDirective
     addSource('/testAB.dart', '''
       library libAB;
-      part "${convertPathForImport('/partAB.dart')}";
+      part "${convertAbsolutePathToUri('/partAB.dart')}";
       class A { }
       class B { }''');
     addSource('/partAB.dart', '''
@@ -50,8 +50,8 @@
       class C { }
       class D { }''');
     addTestSource('''
-      import "${convertPathForImport("/testAB.dart")}" hide ^;
-      import "${convertPathForImport("/testCD.dart")}";
+      import "${convertAbsolutePathToUri("/testAB.dart")}" hide ^;
+      import "${convertAbsolutePathToUri("/testCD.dart")}";
       class X {}''');
 
     await computeSuggestions();
@@ -78,7 +78,7 @@
     // SimpleIdentifier  HideCombinator  ImportDirective
     addSource('/testAB.dart', '''
       library libAB;
-      part "${convertPathForImport('/partAB.dart')}";
+      part "${convertAbsolutePathToUri('/partAB.dart')}";
       class A { }
       class B { }
       class _AB''');
@@ -93,8 +93,8 @@
       class C { }
       class D { }''');
     addTestSource('''
-      import "${convertPathForImport("/testAB.dart")}" show ^;
-      import "${convertPathForImport("/testCD.dart")}";
+      import "${convertAbsolutePathToUri("/testAB.dart")}" show ^;
+      import "${convertAbsolutePathToUri("/testCD.dart")}";
       class X {}''');
 
     await computeSuggestions();
@@ -158,7 +158,7 @@
 class B {}
 ''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}" show ^;
+import "${convertAbsolutePathToUri("/testB.dart")}" show ^;
 ''');
     await computeSuggestions();
     assertSuggestClass('A',
diff --git a/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart b/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart
index 0809c6e..c6f9a95 100644
--- a/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/common_usage_sorter_test.dart
@@ -86,7 +86,7 @@
     // SimpleIdentifier  PrefixedIdentifier  ExpressionStatement
     newFile('/project/bin/myLib.dart',
         content:
-            'library L; part "${convertPathForImport(testFile)}"; class A {static int s2;}');
+            'library L; part "${convertAbsolutePathToUri(testFile)}"; class A {static int s2;}');
     addTestFile('part of L; foo() {A.^}');
     await getSuggestionsWith({
       'L.A': ['s2']
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
index b9546e7..263f905 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_manager_test.dart
@@ -41,7 +41,7 @@
     addSource('/libB.dart', '''
 library libB;
 import "/libA.dart" as foo;
-part '${convertPathForImport(testFile)}';
+part '${convertAbsolutePathToUri(testFile)}';
 ''');
     addTestSource('part of libB; main() {^}');
 
diff --git a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
index 556616f..26100ebf 100644
--- a/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/imported_reference_contributor_test.dart
@@ -40,7 +40,7 @@
 ''');
 
     addTestSource('''
-import "${convertPathForImport('/testB.dart')}";
+import "${convertAbsolutePathToUri('/testB.dart')}";
 
 void main() {f^}''');
     await computeSuggestions();
@@ -56,7 +56,7 @@
         bool hasLength(int expected) { }
         void baz() { }''');
     addTestSource('''
-        import '${convertPathForImport('/libA.dart')}';
+        import '${convertAbsolutePathToUri('/libA.dart')}';
         class B { }
         String bar() => true;
         void main() {expect(^)}''');
@@ -83,7 +83,7 @@
         expect(arg) { }
         void baz() { }''');
     addTestSource('''
-        import '${convertPathForImport('/libA.dart')}'
+        import '${convertAbsolutePathToUri('/libA.dart')}'
         class B { }
         String bar() => true;
         void main() {expect(^)}''');
@@ -111,7 +111,7 @@
         void baz() { }''');
     addTestSource('''
         import 'dart:async';
-        import '${convertPathForImport('/libA.dart')}';
+        import '${convertAbsolutePathToUri('/libA.dart')}';
         class B { }
         String bar() => true;
         void main() {new A(^)}''');
@@ -143,7 +143,7 @@
         void baz() { }''');
     addTestSource('''
         import 'dart:async';
-        import '${convertPathForImport('/libA.dart')}';
+        import '${convertAbsolutePathToUri('/libA.dart')}';
         class B { }
         String bar() => true;
         void main() {new A(^)}''');
@@ -172,7 +172,7 @@
         bool hasLength(int expected) { }
         void baz() { }''');
     addTestSource('''
-        import '${convertPathForImport('/libA.dart')}'
+        import '${convertAbsolutePathToUri('/libA.dart')}'
         expect(arg) { }
         class B { }
         String bar() => true;
@@ -199,7 +199,7 @@
         bool hasLength(int expected) { }
         void baz() { }''');
     addTestSource('''
-        import '${convertPathForImport('/libA.dart')}'
+        import '${convertAbsolutePathToUri('/libA.dart')}'
         class B {
           expect(arg) { }
           void foo() {expect(^)}}
@@ -228,7 +228,7 @@
         void baz() { }''');
     addTestSource('''
         import 'dart:async';
-        import '${convertPathForImport('/libA.dart')}';
+        import '${convertAbsolutePathToUri('/libA.dart')}';
         class B { }
         String bar(f()) => true;
         void main() {bar(^);}''');
@@ -259,7 +259,7 @@
         void baz() { }''');
     addTestSource('''
         import 'dart:async';
-        import '${convertPathForImport('/libA.dart')}';
+        import '${convertAbsolutePathToUri('/libA.dart')}';
         class B { String bar(f()) => true; }
         void main() {new B().bar(^);}''');
 
@@ -286,7 +286,7 @@
         library A;
         bool hasLength(int expected) { }''');
     addTestSource('''
-        import '${convertPathForImport('/libA.dart')}'
+        import '${convertAbsolutePathToUri('/libA.dart')}'
         String bar() => true;
         void main() {expect(foo: ^)}''');
 
@@ -325,7 +325,7 @@
           class A {} class B extends A {} class C extends B {}
           class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-          import "${convertPathForImport('/testB.dart')}";
+          import "${convertAbsolutePathToUri('/testB.dart')}";
          main(){A a; if (a as ^)}''');
 
     await computeSuggestions();
@@ -347,7 +347,7 @@
           class A {} class B implements A {} class C implements B {}
           class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-          import "${convertPathForImport('/testB.dart')}";
+          import "${convertAbsolutePathToUri('/testB.dart')}";
           main(){A a; if (a as ^)}''');
 
     await computeSuggestions();
@@ -495,7 +495,7 @@
 Future y() async {return 0;}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   int x;
   foo() async {await ^}
@@ -517,7 +517,7 @@
   Future y() async { return 0; }
 }''');
     addTestSource('''
-import "${convertPathForImport('/testB.dart')}";
+import "${convertAbsolutePathToUri('/testB.dart')}";
 class B extends A {
   foo() async {await ^}
 }
@@ -584,10 +584,10 @@
         int T3;
         var _T4;'''); // not imported
     addTestSource('''
-        import "${convertPathForImport('/testAB.dart')}";
-        import "${convertPathForImport('/testCD.dart')}" hide D;
-        import "${convertPathForImport('/testEEF.dart')}" show EE;
-        import "${convertPathForImport('/testG.dart')}" as g;
+        import "${convertAbsolutePathToUri('/testAB.dart')}";
+        import "${convertAbsolutePathToUri('/testCD.dart')}" hide D;
+        import "${convertAbsolutePathToUri('/testEEF.dart')}" show EE;
+        import "${convertAbsolutePathToUri('/testG.dart')}" as g;
         int T5;
         var _T6;
         String get T7 => 'hello';
@@ -687,10 +687,10 @@
         int T3;
         var _T4;'''); // not imported
     addTestSource('''
-        import "${convertPathForImport('/testAB.dart')}";
-        import "${convertPathForImport('/testCD.dart')}" hide D;
-        import "${convertPathForImport('/testEEF.dart')}" show EE;
-        import "${convertPathForImport('/testG.dart')}" as g;
+        import "${convertAbsolutePathToUri('/testAB.dart')}";
+        import "${convertAbsolutePathToUri('/testCD.dart')}" hide D;
+        import "${convertAbsolutePathToUri('/testEEF.dart')}" show EE;
+        import "${convertAbsolutePathToUri('/testG.dart')}" as g;
         int T5;
         var _T6;
         String get T7 => 'hello';
@@ -800,10 +800,10 @@
         int T3;
         var _T4;'''); // not imported
     addTestSource('''
-        import "${convertPathForImport('/testAB.dart')}";
-        import "${convertPathForImport('/testCD.dart')}" hide D;
-        import "${convertPathForImport('/testEEF.dart')}" show EE;
-        import "${convertPathForImport('/testG.dart')}" as g hide G;
+        import "${convertAbsolutePathToUri('/testAB.dart')}";
+        import "${convertAbsolutePathToUri('/testCD.dart')}" hide D;
+        import "${convertAbsolutePathToUri('/testEEF.dart')}" show EE;
+        import "${convertAbsolutePathToUri('/testG.dart')}" as g hide G;
         int T5;
         var _T6;
         String get T7 => 'hello';
@@ -901,10 +901,10 @@
         int T3;
         var _T4;'''); // not imported
     addTestSource('''
-        import "${convertPathForImport('/testAB.dart')}";
-        import "${convertPathForImport('/testCD.dart')}" hide D;
-        import "${convertPathForImport('/testEEF.dart')}" show EE;
-        import "${convertPathForImport('/testG.dart')}" as g;
+        import "${convertAbsolutePathToUri('/testAB.dart')}";
+        import "${convertAbsolutePathToUri('/testCD.dart')}" hide D;
+        import "${convertAbsolutePathToUri('/testEEF.dart')}" show EE;
+        import "${convertAbsolutePathToUri('/testG.dart')}" as g;
         int T5;
         var _T6;
         String get T7 => 'hello';
@@ -1000,10 +1000,10 @@
         int T3;
         var _T4;'''); // not imported
     addTestSource('''
-        import "${convertPathForImport('/testAB.dart')}";
-        import "${convertPathForImport('/testCD.dart')}" hide D;
-        import "${convertPathForImport('/testEEF.dart')}" show EE;
-        import "${convertPathForImport('/testG.dart')}" as g;
+        import "${convertAbsolutePathToUri('/testAB.dart')}";
+        import "${convertAbsolutePathToUri('/testCD.dart')}" hide D;
+        import "${convertAbsolutePathToUri('/testEEF.dart')}" show EE;
+        import "${convertAbsolutePathToUri('/testG.dart')}" as g;
         int T5;
         var _T6;
         Z D2() {int x;}
@@ -1065,7 +1065,7 @@
         class I { int i1; i2() { } }
         class M { var m1; int m2() { } }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class A extends E implements I with M {a() {^}}''');
 
     await computeSuggestions();
@@ -1131,10 +1131,10 @@
         int T3;
         var _T4;'''); // not imported
     addTestSource('''
-        import "${convertPathForImport('/testAB.dart')}";
-        import "${convertPathForImport('/testCD.dart')}" hide D;
-        import "${convertPathForImport('/testEEF.dart')}" show EE;
-        import "${convertPathForImport('/testG.dart')}" as g;
+        import "${convertAbsolutePathToUri('/testAB.dart')}";
+        import "${convertAbsolutePathToUri('/testCD.dart')}" hide D;
+        import "${convertAbsolutePathToUri('/testEEF.dart')}" show EE;
+        import "${convertAbsolutePathToUri('/testG.dart')}" as g;
         int T5;
         var _T6;
         String get T7 => 'hello';
@@ -1183,10 +1183,10 @@
         int T3;
         var _T4;'''); // not imported
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
-        import "${convertPathForImport('/testCD.dart')}" hide D;
-        import "${convertPathForImport('/testEEF.dart')}" show EE;
-        import "${convertPathForImport('/testG.dart')}" as g;
+        import "${convertAbsolutePathToUri('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testCD.dart')}" hide D;
+        import "${convertAbsolutePathToUri('/testEEF.dart')}" show EE;
+        import "${convertAbsolutePathToUri('/testG.dart')}" as g;
         int T5;
         var _T6;
         Z D2() {int x;}
@@ -1221,7 +1221,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class A {var b; X _c;}
         class X{}
         // looks like a cascade to the parser
@@ -1246,7 +1246,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class A {var b; X _c;}
         class X{}
         main() {A a; a..^z}''');
@@ -1269,7 +1269,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class A {var b; X _c;}
         class X{}
         main() {A a; a..^ return}''');
@@ -1364,7 +1364,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('testB.dart')}" as x;
+        import "${convertAbsolutePathToUri('testB.dart')}" as x;
         @deprecated class A {^}
         class _B {}
         A T;''');
@@ -1389,7 +1389,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('testB.dart')}" as x;
+        import "${convertAbsolutePathToUri('testB.dart')}" as x;
         class A {final ^}
         class _B {}
         A T;''');
@@ -1410,7 +1410,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('testB.dart')}" as x;
+        import "${convertAbsolutePathToUri('testB.dart')}" as x;
         class A {final ^ A(){}}
         class _B {}
         A T;''');
@@ -1431,7 +1431,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('testB.dart')}" as Soo;
+        import "${convertAbsolutePathToUri('testB.dart')}" as Soo;
         class A {final S^ A();}
         class _B {}
         A Sew;''');
@@ -1452,7 +1452,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('testB.dart')}" as x;
+        import "${convertAbsolutePathToUri('testB.dart')}" as x;
         class A {final ^ final foo;}
         class _B {}
         A T;''');
@@ -1473,7 +1473,7 @@
     addSource('/testB.dart', '''
         class B { }''');
     addTestSource('''
-        import "${convertPathForImport('testB.dart')}" as x;
+        import "${convertAbsolutePathToUri('testB.dart')}" as x;
         class A {final ^ var foo;}
         class _B {}
         A T;''');
@@ -1505,8 +1505,8 @@
         class C { }
         class D { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}" hide ^;
-        import "${convertPathForImport('/testCD.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}" hide ^;
+        import "${convertAbsolutePathToUri('/testCD.dart')}";
         class X {}''');
 
     await computeSuggestions();
@@ -1531,8 +1531,8 @@
         class C { }
         class D { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}" show ^;
-        import "${convertPathForImport('/testCD.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}" show ^;
+        import "${convertAbsolutePathToUri('/testCD.dart')}";
         class X {}''');
 
     await computeSuggestions();
@@ -1546,7 +1546,7 @@
         F1() { }
         class A {int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         class B {int x;}
@@ -1566,7 +1566,7 @@
         F1() { }
         class A {int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         class B {int x;}
@@ -1595,7 +1595,7 @@
         F1() { }
         class A {int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         class B {int x;}
@@ -1615,7 +1615,7 @@
         F1() { }
         class A {int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         class B {int x;}
@@ -1644,7 +1644,7 @@
         F1() { }
         class A {int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         class B {int x;}
@@ -1666,7 +1666,7 @@
         F1() { }
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         var m;
         main() {new X.^}''');
 
@@ -1691,7 +1691,7 @@
         F1() { }
         class X {factory X.c(); factory X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         var m;
         main() {new X.^}''');
 
@@ -1794,7 +1794,8 @@
 /// Longer description.
 class A {}
 ''');
-    addTestSource('import "${convertPathForImport('/libA.dart')}"; main() {^}');
+    addTestSource(
+        'import "${convertAbsolutePathToUri('/libA.dart')}"; main() {^}');
 
     await computeSuggestions();
 
@@ -1816,7 +1817,8 @@
 /// Longer description.
 int myFunc() {}
 ''');
-    addTestSource('import "${convertPathForImport('/libA.dart')}"; main() {^}');
+    addTestSource(
+        'import "${convertAbsolutePathToUri('/libA.dart')}"; main() {^}');
 
     await computeSuggestions();
 
@@ -1837,7 +1839,8 @@
  */
 int myFunc() {}
 ''');
-    addTestSource('import "${convertPathForImport('/libA.dart')}"; main() {^}');
+    addTestSource(
+        'import "${convertAbsolutePathToUri('/libA.dart')}"; main() {^}');
 
     await computeSuggestions();
 
@@ -1849,7 +1852,8 @@
 
   test_enum() async {
     addSource('/libA.dart', 'library A; enum E { one, two }');
-    addTestSource('import "${convertPathForImport('/libA.dart')}"; main() {^}');
+    addTestSource(
+        'import "${convertAbsolutePathToUri('/libA.dart')}"; main() {^}');
     await computeSuggestions();
     assertSuggestEnum('E');
     assertNotSuggested('one');
@@ -1858,7 +1862,8 @@
 
   test_enum_deprecated() async {
     addSource('/libA.dart', 'library A; @deprecated enum E { one, two }');
-    addTestSource('import "${convertPathForImport('/libA.dart')}"; main() {^}');
+    addTestSource(
+        'import "${convertAbsolutePathToUri('/libA.dart')}"; main() {^}');
     await computeSuggestions();
     // TODO(danrube) investigate why suggestion/element is not deprecated
     // when AST node has correct @deprecated annotation
@@ -1899,7 +1904,7 @@
         class A {int x;}
         class _B { }''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         typedef int F2(int blat);
         class Clz = Object with Object;
         class C {foo(){^} void bar() {}}''');
@@ -1928,7 +1933,7 @@
         B T1;
         class B{}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         class C {a() {C ^}}''');
 
     await computeSuggestions();
@@ -1940,7 +1945,7 @@
     // FieldDeclaration
     addSource('/testA.dart', 'class A { }');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         class C {A ^}''');
 
     await computeSuggestions();
@@ -1952,7 +1957,7 @@
     // FieldDeclaration
     addSource('/testA.dart', 'class A { }');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         class C {var ^}''');
 
     await computeSuggestions();
@@ -2136,7 +2141,7 @@
 int m(x, {int y}) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -2157,7 +2162,7 @@
 void m(x, [int y]) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -2178,7 +2183,7 @@
 void m({x, int y}) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -2199,7 +2204,7 @@
 void m() {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -2218,7 +2223,7 @@
 void m([x, int y]) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -2239,7 +2244,7 @@
 void m(x, int y) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -2263,7 +2268,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -2293,7 +2298,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -2323,7 +2328,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -2474,7 +2479,7 @@
         F1() { }
         class A {int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         class B {int x;}
@@ -2503,7 +2508,7 @@
         F1() { }
         class A {int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         class B {int x;}
@@ -2522,7 +2527,7 @@
 class B {B(this.x, [String boo]) { } int x;}
 class C {C.bar({boo: 'hoo', int z: 0}) { } }''');
     addTestSource('''
-import "${convertPathForImport('/testA.dart')}";
+import "${convertAbsolutePathToUri('/testA.dart')}";
 import "dart:math" as math;
 main() {new ^ String x = "hello";}''');
 
@@ -2639,7 +2644,7 @@
         F1() { }
         class A {A(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         import "dart:async";
         int T2;
         F2() { }
@@ -2701,7 +2706,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -2736,7 +2741,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -2809,7 +2814,7 @@
         foo() { }
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class Y {Y.c(); Y._d(); z() {}}
         main() {var x; if (x is ^) { }}''');
 
@@ -2879,7 +2884,7 @@
         class A {} class B extends A {} class C extends B {}
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         main(){A a; if (a is ^)}''');
 
     await computeSuggestions();
@@ -2901,7 +2906,7 @@
         class A {} class B implements A {} class C implements B {}
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         main(){A a; if (a is ^)}''');
 
     await computeSuggestions();
@@ -2924,7 +2929,7 @@
         nowIsIt() { }
         class X {factory X.c(); factory X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         String newer() {}
         var m;
         main() {new^ X.c();}''');
@@ -2984,7 +2989,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -3021,7 +3026,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -3048,7 +3053,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -3067,7 +3072,7 @@
 void m(x, {int y}) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3088,7 +3093,7 @@
 void m(x, [int y]) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3109,7 +3114,7 @@
 void m({x, int y}) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3130,7 +3135,7 @@
 void m() {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3149,7 +3154,7 @@
 void m([x, int y]) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3170,7 +3175,7 @@
 void m(x, int y) {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B {
   main() {^}
 }
@@ -3207,7 +3212,7 @@
           static c3() {}
           static var c4;}''');
     addTestSource('''
-        import "${convertPathForImport('/testC.dart')}";
+        import "${convertAbsolutePathToUri('/testC.dart')}";
         class B extends C {
           b1() {}
           var b2;
@@ -3294,7 +3299,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -3323,7 +3328,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -3352,7 +3357,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -3381,7 +3386,7 @@
         typedef D1();
         class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         int T2;
         F2() { }
         typedef D2();
@@ -3448,7 +3453,7 @@
 }
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class C extends B with M1, M2 {
   void f() {
     ^
@@ -3487,8 +3492,8 @@
       class ClassInLocalContext {int x;}''');
     testFile = '/context1/completionTest.dart';
     addTestSource('''
-      import "${convertPathForImport("/context1/libA.dart")}";
-      import "${convertPathForImport("/foo.dart")}";
+      import "${convertAbsolutePathToUri("/context1/libA.dart")}";
+      import "${convertAbsolutePathToUri("/foo.dart")}";
       main() {C^}
       ''');
 
@@ -3518,7 +3523,7 @@
 int x;
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3533,7 +3538,7 @@
 int get x => null;
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3548,7 +3553,7 @@
 set x(int value) {};
 ''');
     addTestSource('''
-import '${convertPathForImport('/libA.dart')}';
+import '${convertAbsolutePathToUri('/libA.dart')}';
 class B extends A {
   main() {^}
 }
@@ -3574,8 +3579,8 @@
         class X {X.c(); X._d(); z() {}}''');
     addSource('/testA.dart', '''
         library libA;
-        import "${convertPathForImport('/testB.dart')}";
-        part "${convertPathForImport(testFile)}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
+        part "${convertAbsolutePathToUri(testFile)}";
         class A { }
         var m;''');
     addTestSource('''
@@ -3613,7 +3618,7 @@
         class B { }''');
     addTestSource('''
         library libA;
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         part "testA.dart";
         class A { A({String boo: 'hoo'}) { } }
         main() {new ^}
@@ -3653,7 +3658,7 @@
           m(X x) {} I _n(X x) {}}
         class X{}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class A extends B {
           static const String scA = 'foo';
           w() { }}
@@ -3697,7 +3702,7 @@
           m(X x) {} I _n(X x) {}}
         class X{}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         main() {A a; a.^}''');
 
     await computeSuggestions();
@@ -3771,7 +3776,7 @@
         class X { }
         class Y { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}" as b;
+        import "${convertAbsolutePathToUri('/testB.dart')}" as b;
         var T2;
         class A { }
         main() {b.^}''');
@@ -3798,7 +3803,7 @@
         class X { }
         class Y { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}" as b;
+        import "${convertAbsolutePathToUri('/testB.dart')}" as b;
         var T2;
         class A { }
         foo(b.^ f) {}''');
@@ -3825,7 +3830,7 @@
         class X { }
         class Y { }''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}" as b;
+        import "${convertAbsolutePathToUri('/testB.dart')}" as b;
         var T2;
         class A { }
         foo(b.^) {}''');
@@ -3852,7 +3857,7 @@
         class X extends _W {}
         class M{}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         foo(X x) {x.^}''');
 
     await computeSuggestions();
@@ -3869,7 +3874,7 @@
         class A {static int bar = 10;}
         _B() {}''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";
+        import "${convertAbsolutePathToUri('/testA.dart')}";
         class X {foo(){A^.bar}}''');
 
     await computeSuggestions();
@@ -4314,7 +4319,7 @@
         F1() => 0;
         typedef String T1(int blat);''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";'
+        import "${convertAbsolutePathToUri('/testA.dart')}";'
         class C2 {int x;}
         F2() => 0;
         typedef int T2(int blat);
@@ -4340,7 +4345,7 @@
         F1() => 0;
         typedef String T1(int blat);''');
     addTestSource('''
-        import "${convertPathForImport('/testA.dart')}";'
+        import "${convertAbsolutePathToUri('/testA.dart')}";'
         class C2 {int x;}
         F2() => 0;
         typedef int T2(int blat);
@@ -4364,7 +4369,7 @@
 class B {}
 ''');
     addTestSource('''
-import '${convertPathForImport('/testB.dart')}';
+import '${convertAbsolutePathToUri('/testB.dart')}';
 List<^> x;
 ''');
     await computeSuggestions();
@@ -4383,7 +4388,7 @@
         class _B { }
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class Y {Y.c(); Y._d(); z() {}}
         main() {var ^}''');
 
@@ -4410,7 +4415,7 @@
         class _B { }
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         class Y {Y.c(); Y._d(); z() {}}
         class C {bar(){var f; {var x;} var e = ^}}''');
 
@@ -4436,7 +4441,7 @@
         class _B { }
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport('/testB.dart')}";
+        import "${convertAbsolutePathToUri('/testB.dart')}";
         foo2() { }
         void bar2() { }
         class Y {Y.c(); Y._d(); z() {}}
diff --git a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
index 3f3f9fc..0bf6a76 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_member_contributor_test.dart
@@ -91,7 +91,7 @@
     addSource(libFile, '''
         library testA;
         import "dart:async" deferred as bar;
-        part "${convertPathForImport(testFile)}";''');
+        part "${convertAbsolutePathToUri(testFile)}";''');
     addTestSource('part of testA; foo() {bar.^}');
     // Assume that libraries containing has been computed for part files
     await computeLibrariesContaining();
@@ -105,11 +105,11 @@
     addSource('/libA.dart', 'library libA; class A { }');
     addSource('/libB.dart', '''
         library libB;
-        export "${convertPathForImport("/libA.dart")}";
+        export "${convertAbsolutePathToUri("/libA.dart")}";
         class B { }
         @deprecated class B1 { }''');
     addTestSource(
-        'import "${convertPathForImport("/libB.dart")}" as foo; main() {foo.^} class C { }');
+        'import "${convertAbsolutePathToUri("/libB.dart")}" as foo; main() {foo.^} class C { }');
     await computeSuggestions();
     assertSuggestClass('B');
     assertSuggestClass('B1', relevance: DART_RELEVANCE_LOW, isDeprecated: true);
@@ -125,7 +125,7 @@
         class X { }
         class Y { }''');
     addTestSource('''
-        import "${convertPathForImport("/testB.dart")}" as b;
+        import "${convertAbsolutePathToUri("/testB.dart")}" as b;
         var T2;
         class A { }
         main() {b.^}''');
@@ -187,8 +187,8 @@
         class Y { }''');
     addSource(libFile, '''
         library testA;
-        import "${convertPathForImport("/testB.dart")}" as b;
-        part "${convertPathForImport(testFile)}";
+        import "${convertAbsolutePathToUri("/testB.dart")}" as b;
+        part "${convertAbsolutePathToUri(testFile)}";
         var T2;
         class A { }''');
     addTestSource('''
@@ -217,7 +217,7 @@
         class X { }
         class Y { }''');
     addTestSource('''
-        import "${convertPathForImport("/testB.dart")}" as b;
+        import "${convertAbsolutePathToUri("/testB.dart")}" as b;
         var T2;
         class A { }
         foo(b.^ f) {}''');
@@ -242,7 +242,7 @@
         class X { }
         class Y { }''');
     addTestSource('''
-        import "${convertPathForImport("/testB.dart")}" as b;
+        import "${convertAbsolutePathToUri("/testB.dart")}" as b;
         var T2;
         class A { }
         foo(b.^) {}''');
@@ -267,7 +267,7 @@
         class X extends _W {}
         class M{}''');
     addTestSource('''
-        import "${convertPathForImport("/testB.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
         foo(X x) {x.^}''');
     await computeSuggestions();
     assertNoSuggestions();
@@ -279,7 +279,7 @@
         class A {static int bar = 10;}
         _B() {}''');
     addTestSource('''
-        import "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testA.dart")}";
         class X {foo(){A^.bar}}''');
     await computeSuggestions();
     assertNoSuggestions();
diff --git a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
index 5fb24d4..052103e 100644
--- a/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/library_prefix_contributor_test.dart
@@ -297,9 +297,9 @@
 class C {C.bar({boo: 'hoo', int z: 0}) { } }''');
     addSource('/testB.dart', '''
 library testB;
-import "${convertPathForImport("/testA.dart")}" as t;
+import "${convertAbsolutePathToUri("/testA.dart")}" as t;
 import "dart:math" as math;
-part "${convertPathForImport(testFile)}"
+part "${convertAbsolutePathToUri(testFile)}"
 main() {new ^ String x = "hello";}''');
     addTestSource('''
 part of testB;
diff --git a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
index e3d07b2..07d9364 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_library_contributor_test.dart
@@ -31,8 +31,8 @@
         class X {X.c(); X._d(); z() {}}''');
     addSource('/testA.dart', '''
         library libA;
-        import "${convertPathForImport("/testB.dart")}";
-        part "${convertPathForImport(testFile)}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
+        part "${convertAbsolutePathToUri(testFile)}";
         class A { }
         var m;''');
     addTestSource('''
@@ -69,8 +69,8 @@
         class B { }''');
     addTestSource('''
         library libA;
-        import "${convertPathForImport("/testB.dart")}";
-        part "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
+        part "${convertAbsolutePathToUri("/testA.dart")}";
         class A { A({String boo: 'hoo'}) { } }
         main() {new ^}
         var m;''');
@@ -105,8 +105,8 @@
         ''');
     addTestSource('''
         library libA;
-        import "${convertPathForImport("/testB.dart")}";
-        part "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
+        part "${convertAbsolutePathToUri("/testA.dart")}";
         class Local { }
         main() {
           A a;
@@ -158,8 +158,8 @@
         ''');
     addTestSource('''
         library libA;
-        import "${convertPathForImport("/testB.dart")}";
-        part "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
+        part "${convertAbsolutePathToUri("/testA.dart")}";
         class Local { }
         main() {
           A a = new ^
@@ -204,8 +204,8 @@
         class X {X.c(); X._d(); z() {}}''');
     addSource('/testA.dart', '''
         library libA;
-        import "${convertPathForImport("/testB.dart")}";
-        part "${convertPathForImport(testFile)}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
+        part "${convertAbsolutePathToUri(testFile)}";
         class A { var a1; a2(){}}
         var m;
         typedef t1(int blue);
@@ -256,8 +256,8 @@
         var n;''');
     addTestSource('''
         library libA;
-        import "${convertPathForImport("/testB.dart")}";
-        part "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
+        part "${convertAbsolutePathToUri("/testA.dart")}";
         class A { A({String boo: 'hoo'}) { } }
         main() {^}
         var m;''');
diff --git a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
index 3987353..e96883c 100644
--- a/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/local_reference_contributor_test.dart
@@ -142,7 +142,7 @@
 bool hasLength(int expected) { }
 void baz() { }''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 class B { }
 String bar() => true;
 void main() {expect(^)}''');
@@ -170,7 +170,7 @@
 expect(arg) { }
 void baz() { }''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}"
+import "${convertAbsolutePathToUri('/libA.dart')}"
 class B { }
 String bar() => true;
 void main() {expect(^)}''');
@@ -199,7 +199,7 @@
 void baz() { }''');
     addTestSource('''
 import 'dart:async';
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 class B { }
 String bar() => true;
 void main() {new A(^)}''');
@@ -231,7 +231,7 @@
 void baz() { }''');
     addTestSource('''
 import 'dart:async';
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 class B { }
 String bar() => true;
 void main() {new A(^)}''');
@@ -260,7 +260,7 @@
 bool hasLength(int expected) { }
 void baz() { }''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}"
+import "${convertAbsolutePathToUri('/libA.dart')}"
 expect(arg) { }
 class B { }
 String bar() => true;
@@ -288,7 +288,7 @@
 bool hasLength(int expected) { }
 void baz() { }''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}"
+import "${convertAbsolutePathToUri('/libA.dart')}"
 class B {
   expect(arg) { }
   void foo() {expect(^)}}
@@ -318,7 +318,7 @@
 void baz() { }''');
     addTestSource('''
 import 'dart:async';
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 class B { }
 String bar(f()) => true;
 void main() {boo(){} bar(^);}''');
@@ -352,7 +352,7 @@
 void baz() { }''');
     addTestSource('''
 import 'dart:async';
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 class B { }
 String bar({inc()}) => true;
 void main() {boo(){} bar(inc: ^);}''');
@@ -388,7 +388,7 @@
 void baz() { }''');
     addTestSource('''
 import 'dart:async';
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 class B { String bar(f()) => true; }
 void main() {new B().bar(^);}''');
     await computeSuggestions();
@@ -416,7 +416,7 @@
 }
 ''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 
 class PageState {
   void _incrementCounter() { }
@@ -442,7 +442,7 @@
 library A;
 bool hasLength(int expected) { }''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}"
+import "${convertAbsolutePathToUri('/libA.dart')}"
 String bar() => true;
 void main() {expect(foo: ^)}''');
     await computeSuggestions();
@@ -501,7 +501,7 @@
 }
 ''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 
 class PageState {
   void _incrementCounter() { }
@@ -529,7 +529,7 @@
 }
 ''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 
 class PageState {
   void _incrementCounter() { }
@@ -557,7 +557,7 @@
 }
 ''');
     addTestSource('''
-import "${convertPathForImport('/libA.dart')}";
+import "${convertAbsolutePathToUri('/libA.dart')}";
 
 class PageState {
   void _incrementCounter() { }
@@ -841,10 +841,10 @@
 int T3;
 var _T4;'''); // not imported
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}";
-import "${convertPathForImport("/testCD.dart")}" hide D;
-import "${convertPathForImport("/testEEF.dart")}" show EE;
-import "${convertPathForImport("/testG.dart")}" as g;
+import "${convertAbsolutePathToUri("/testAB.dart")}";
+import "${convertAbsolutePathToUri("/testCD.dart")}" hide D;
+import "${convertAbsolutePathToUri("/testEEF.dart")}" show EE;
+import "${convertAbsolutePathToUri("/testG.dart")}" as g;
 int T5;
 var _T6;
 String get T7 => 'hello';
@@ -939,10 +939,10 @@
 int T3;
 var _T4;'''); // not imported
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}";
-import "${convertPathForImport("/testCD.dart")}" hide D;
-import "${convertPathForImport("/testEEF.dart")}" show EE;
-import "${convertPathForImport("/testG.dart")}" as g;
+import "${convertAbsolutePathToUri("/testAB.dart")}";
+import "${convertAbsolutePathToUri("/testCD.dart")}" hide D;
+import "${convertAbsolutePathToUri("/testEEF.dart")}" show EE;
+import "${convertAbsolutePathToUri("/testG.dart")}" as g;
 int T5;
 var _T6;
 String get T7 => 'hello';
@@ -1052,10 +1052,10 @@
 int T3;
 var _T4;'''); // not imported
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}";
-import "${convertPathForImport("/testCD.dart")}" hide D;
-import "${convertPathForImport("/testEEF.dart")}" show EE;
-import "${convertPathForImport("/testG.dart")}" as g;
+import "${convertAbsolutePathToUri("/testAB.dart")}";
+import "${convertAbsolutePathToUri("/testCD.dart")}" hide D;
+import "${convertAbsolutePathToUri("/testEEF.dart")}" show EE;
+import "${convertAbsolutePathToUri("/testG.dart")}" as g;
 int T5;
 var _T6;
 String get T7 => 'hello';
@@ -1151,10 +1151,10 @@
 int T3;
 var _T4;'''); // not imported
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}";
-import "${convertPathForImport("/testCD.dart")}" hide D;
-import "${convertPathForImport("/testEEF.dart")}" show EE;
-import "${convertPathForImport("/testG.dart")}" as g;
+import "${convertAbsolutePathToUri("/testAB.dart")}";
+import "${convertAbsolutePathToUri("/testCD.dart")}" hide D;
+import "${convertAbsolutePathToUri("/testEEF.dart")}" show EE;
+import "${convertAbsolutePathToUri("/testG.dart")}" as g;
 int T5;
 var _T6;
 String get T7 => 'hello';
@@ -1250,10 +1250,10 @@
 int T3;
 var _T4;'''); // not imported
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}";
-import "${convertPathForImport("/testCD.dart")}" hide D;
-import "${convertPathForImport("/testEEF.dart")}" show EE;
-import "${convertPathForImport("/testG.dart")}" as g;
+import "${convertAbsolutePathToUri("/testAB.dart")}";
+import "${convertAbsolutePathToUri("/testCD.dart")}" hide D;
+import "${convertAbsolutePathToUri("/testEEF.dart")}" show EE;
+import "${convertAbsolutePathToUri("/testG.dart")}" as g;
 int T5;
 var _T6;
 Z D2() {int x;}
@@ -1317,7 +1317,7 @@
 class I { int i1; i2() { } }
 class M { var m1; int m2() { } }''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class A extends E implements I with M {a() {^}}''');
     await computeSuggestions();
 
@@ -1383,10 +1383,10 @@
 int T3;
 var _T4;'''); // not imported
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}";
-import "${convertPathForImport("/testCD.dart")}" hide D;
-import "${convertPathForImport("/testEEF.dart")}" show EE;
-import "${convertPathForImport("/testG.dart")}" as g;
+import "${convertAbsolutePathToUri("/testAB.dart")}";
+import "${convertAbsolutePathToUri("/testCD.dart")}" hide D;
+import "${convertAbsolutePathToUri("/testEEF.dart")}" show EE;
+import "${convertAbsolutePathToUri("/testG.dart")}" as g;
 int T5;
 var _T6;
 String get T7 => 'hello';
@@ -1435,7 +1435,7 @@
     addSource('/testB.dart', '''
 class B { }''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class A {var b; X _c;}
 class X{}
 // looks like a cascade to the parser
@@ -1460,7 +1460,7 @@
     addSource('/testB.dart', '''
 class B { }''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class A {var b; X _c;}
 class X{}
 main() {A a; a..^z}''');
@@ -1483,7 +1483,7 @@
     addSource('/testB.dart', '''
 class B { }''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class A {var b; X _c;}
 class X{}
 main() {A a; a..^ return}''');
@@ -1724,8 +1724,8 @@
 class C { }
 class D { }''');
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}" hide ^;
-import "${convertPathForImport("/testCD.dart")}";
+import "${convertAbsolutePathToUri("/testAB.dart")}" hide ^;
+import "${convertAbsolutePathToUri("/testCD.dart")}";
 class X {}''');
     await computeSuggestions();
 
@@ -1750,8 +1750,8 @@
 class C { }
 class D { }''');
     addTestSource('''
-import "${convertPathForImport("/testAB.dart")}" show ^;
-import "${convertPathForImport("/testCD.dart")}";
+import "${convertAbsolutePathToUri("/testAB.dart")}" show ^;
+import "${convertAbsolutePathToUri("/testCD.dart")}";
 class X {}''');
     await computeSuggestions();
 
@@ -1765,7 +1765,7 @@
 F1() { }
 class A {int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 class B {int x;}
@@ -1786,7 +1786,7 @@
 F1() { }
 class A {int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 class B {int x;}
@@ -1814,7 +1814,7 @@
 F1() { }
 class A {int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 class B {int x;}
@@ -1835,7 +1835,7 @@
 F1() { }
 class A {int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 class B {int x;}
@@ -1863,7 +1863,7 @@
 F1() { }
 class A {int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 class B {int x;}
@@ -1921,7 +1921,7 @@
 F1() { }
 class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 var m;
 main() {new X.^}''');
     await computeSuggestions();
@@ -1946,7 +1946,7 @@
 F1() { }
 class X {factory X.c(); factory X._d(); z() {}}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 var m;
 main() {new X.^}''');
     await computeSuggestions();
@@ -2276,7 +2276,7 @@
 class A {int x;}
 class _B { }''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 typedef int F2(int blat);
 class Clz = Object with Object;
 class C {foo(){^} void bar() {}}''');
@@ -2304,7 +2304,7 @@
         B T1;
         class B{}''');
     addTestSource('''
-        import "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testA.dart")}";
         class C {a() {C ^}}''');
     await computeSuggestions();
 
@@ -2316,7 +2316,7 @@
     // FieldDeclaration
     addSource('/testA.dart', 'class A { }');
     addTestSource('''
-        import "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testA.dart")}";
         class C {A ^}''');
     await computeSuggestions();
 
@@ -2328,7 +2328,7 @@
     // FieldDeclaration
     addSource('/testA.dart', 'class A { }');
     addTestSource('''
-        import "${convertPathForImport("/testA.dart")}";
+        import "${convertAbsolutePathToUri("/testA.dart")}";
         class C {var ^}''');
     await computeSuggestions();
 
@@ -2643,7 +2643,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -2673,7 +2673,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -2703,7 +2703,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -2866,7 +2866,7 @@
 F1() { }
 class A {int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 class B {int x;}
@@ -2894,7 +2894,7 @@
 F1() { }
 class A {int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 class B {int x;}
@@ -2932,7 +2932,7 @@
 F1() { }
 class A {A(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 import "dart:async";
 int T2;
 F2() { }
@@ -2977,7 +2977,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3008,7 +3008,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3080,7 +3080,7 @@
 foo() { }
 class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class Y {Y.c(); Y._d(); z() {}}
 main() {var x; if (x is ^) { }}''');
     await computeSuggestions();
@@ -3197,7 +3197,7 @@
 nowIsIt() { }
 class X {factory X.c(); factory X._d(); z() {}}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 String newer() {}
 var m;
 main() {new^ X.c();}''');
@@ -3260,7 +3260,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3290,7 +3290,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3313,7 +3313,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3442,7 +3442,7 @@
   static c3() {}
   static var c4;}''');
     addTestSource('''
-import "${convertPathForImport("/testC.dart")}";
+import "${convertAbsolutePathToUri("/testC.dart")}";
 class B extends C {
   b1() {}
   var b2;
@@ -3582,7 +3582,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3611,7 +3611,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3640,7 +3640,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3669,7 +3669,7 @@
 typedef D1();
 class C1 {C1(this.x) { } int x;}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 int T2;
 F2() { }
 typedef D2();
@@ -3854,7 +3854,7 @@
   m(X x) {} I _n(X x) {}}
 class X{}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class A extends B {
   static const String scA = 'foo';
   w() { }}
@@ -3898,7 +3898,7 @@
   m(X x) {} I _n(X x) {}}
 class X{}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 main() {A a; a.^}''');
     await computeSuggestions();
 
@@ -3972,7 +3972,7 @@
 class X { }
 class Y { }''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}" as b;
+import "${convertAbsolutePathToUri("/testB.dart")}" as b;
 var T2;
 class A { }
 main() {b.^}''');
@@ -3999,7 +3999,7 @@
 class X { }
 class Y { }''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}" as b;
+import "${convertAbsolutePathToUri("/testB.dart")}" as b;
 var T2;
 class A { }
 foo(b.^ f) {}''');
@@ -4026,7 +4026,7 @@
 class X { }
 class Y { }''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}" as b;
+import "${convertAbsolutePathToUri("/testB.dart")}" as b;
 var T2;
 class A { }
 foo(b.^) {}''');
@@ -4053,7 +4053,7 @@
 class X extends _W {}
 class M{}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 foo(X x) {x.^}''');
     await computeSuggestions();
 
@@ -4070,7 +4070,7 @@
 class A {static int bar = 10;}
 _B() {}''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";
+import "${convertAbsolutePathToUri("/testA.dart")}";
 class X {foo(){A^.bar}}''');
     await computeSuggestions();
 
@@ -4554,7 +4554,7 @@
 F1() => 0;
 typedef String T1(int blat);''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";'
+import "${convertAbsolutePathToUri("/testA.dart")}";'
 class C2 {int x;}
 F2() => 0;
 typedef int T2(int blat);
@@ -4580,7 +4580,7 @@
 F1() => 0;
 typedef String T1(int blat);''');
     addTestSource('''
-import "${convertPathForImport("/testA.dart")}";'
+import "${convertAbsolutePathToUri("/testA.dart")}";'
 class C2 {int x;}
 F2() => 0;
 typedef int T2(int blat);
@@ -4603,7 +4603,7 @@
 class _B { }
 class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class Y {Y.c(); Y._d(); z() {}}
 main() {var ^}''');
     await computeSuggestions();
@@ -4630,7 +4630,7 @@
 class _B { }
 class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 class Y {Y.c(); Y._d(); z() {}}
 class C {bar(){var f; {var x;} var e = ^}}''');
     await computeSuggestions();
@@ -4656,7 +4656,7 @@
 class _B { }
 class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-import "${convertPathForImport("/testB.dart")}";
+import "${convertAbsolutePathToUri("/testB.dart")}";
 foo2() { }
 void bar2() { }
 class Y {Y.c(); Y._d(); z() {}}
diff --git a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
index 499eb2b..ea0d067 100644
--- a/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/named_constructor_contributor_test.dart
@@ -51,7 +51,7 @@
         F1() { }
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport("/testB.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
         var m;
         main() {new X.^}''');
 
@@ -75,7 +75,7 @@
         F1() { }
         class X {X.c(); X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport("/testB.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
         var m;
         main() {new X.^}''');
     // Assume that imported libraries are NOT resolved
@@ -100,7 +100,7 @@
         F1() { }
         class X {factory X.c(); factory X._d(); z() {}}''');
     addTestSource('''
-        import "${convertPathForImport("/testB.dart")}";
+        import "${convertAbsolutePathToUri("/testB.dart")}";
         var m;
         main() {new X.^}''');
 
diff --git a/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart
index 61a9a87c..8d5a329 100644
--- a/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/override_contributor_test.dart
@@ -95,8 +95,8 @@
   test_fromPart() async {
     addSource('/myLib.dart', '''
 library myLib;
-part '${convertPathForImport(testFile)}'
-part '${convertPathForImport('/otherPart.dart')}'
+part '${convertAbsolutePathToUri(testFile)}'
+part '${convertAbsolutePathToUri('/otherPart.dart')}'
 class A {
   A suggested1(int x) => null;
   B suggested2(String y) => null;
diff --git a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
index a20b367..a39270d 100644
--- a/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/type_member_contributor_test.dart
@@ -3094,7 +3094,7 @@
     addTestSource('''
         library libA;
         import "testB.dart";
-        part "${convertPathForImport('/testA.dart')}";
+        part "${convertAbsolutePathToUri('/testA.dart')}";
         class A { A({String boo: 'hoo'}) { } }
         main() {new ^}
         var m;''');
diff --git a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
index f1f2c23..36c4d2d 100644
--- a/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/variable_name_contributor_test.dart
@@ -54,6 +54,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertNotSuggested('_abstractCrazyNonsenseClassName');
+    assertNotSuggested('_crazyNonsenseClassName');
+    assertNotSuggested('_nonsenseClassName');
+    assertNotSuggested('_className');
+    assertNotSuggested('_name');
   }
 
   test_ExpressionStatement_long_semicolon() async {
@@ -68,6 +74,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertNotSuggested('_abstractCrazyNonsenseClassName');
+    assertNotSuggested('_crazyNonsenseClassName');
+    assertNotSuggested('_nonsenseClassName');
+    assertNotSuggested('_className');
+    assertNotSuggested('_name');
   }
 
   test_ExpressionStatement_prefixed() async {
@@ -82,6 +94,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertNotSuggested('_abstractCrazyNonsenseClassName');
+    assertNotSuggested('_crazyNonsenseClassName');
+    assertNotSuggested('_nonsenseClassName');
+    assertNotSuggested('_className');
+    assertNotSuggested('_name');
   }
 
   test_ExpressionStatement_prefixed_semicolon() async {
@@ -96,6 +114,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertNotSuggested('_abstractCrazyNonsenseClassName');
+    assertNotSuggested('_crazyNonsenseClassName');
+    assertNotSuggested('_nonsenseClassName');
+    assertNotSuggested('_className');
+    assertNotSuggested('_name');
   }
 
   test_ExpressionStatement_short() async {
@@ -106,6 +130,8 @@
     expect(replacementOffset, completionOffset);
     expect(replacementLength, 0);
     assertSuggestName('a');
+    // private version
+    assertNotSuggested('_a');
   }
 
   test_ExpressionStatement_short_semicolon() async {
@@ -116,6 +142,8 @@
     expect(replacementOffset, completionOffset);
     expect(replacementLength, 0);
     assertSuggestName('a');
+    // private version
+    assertNotSuggested('_a');
   }
 
   test_TopLevelVariableDeclaration_dont_suggest_type() async {
@@ -126,6 +154,8 @@
     expect(replacementOffset, completionOffset);
     expect(replacementLength, 0);
     assertNotSuggested('a');
+    // private version
+    assertNotSuggested('_a');
   }
 
   test_TopLevelVariableDeclaration_dont_suggest_type_semicolon() async {
@@ -136,6 +166,8 @@
     expect(replacementOffset, completionOffset);
     expect(replacementLength, 0);
     assertNotSuggested('a');
+    // private version
+    assertNotSuggested('_a');
   }
 
   test_TopLevelVariableDeclaration_long() async {
@@ -150,6 +182,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertSuggestName('_abstractCrazyNonsenseClassName');
+    assertSuggestName('_crazyNonsenseClassName');
+    assertSuggestName('_nonsenseClassName');
+    assertSuggestName('_className');
+    assertSuggestName('_name');
   }
 
   test_TopLevelVariableDeclaration_long_semicolon() async {
@@ -164,6 +202,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertSuggestName('_abstractCrazyNonsenseClassName');
+    assertSuggestName('_crazyNonsenseClassName');
+    assertSuggestName('_nonsenseClassName');
+    assertSuggestName('_className');
+    assertSuggestName('_name');
   }
 
   test_TopLevelVariableDeclaration_partial() async {
@@ -178,6 +222,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertSuggestName('_abstractCrazyNonsenseClassName');
+    assertSuggestName('_crazyNonsenseClassName');
+    assertSuggestName('_nonsenseClassName');
+    assertSuggestName('_className');
+    assertSuggestName('_name');
   }
 
   test_TopLevelVariableDeclaration_partial_semicolon() async {
@@ -192,6 +242,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertSuggestName('_abstractCrazyNonsenseClassName');
+    assertSuggestName('_crazyNonsenseClassName');
+    assertSuggestName('_nonsenseClassName');
+    assertSuggestName('_className');
+    assertSuggestName('_name');
   }
 
   test_TopLevelVariableDeclaration_prefixed() async {
@@ -206,6 +262,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertSuggestName('_abstractCrazyNonsenseClassName');
+    assertSuggestName('_crazyNonsenseClassName');
+    assertSuggestName('_nonsenseClassName');
+    assertSuggestName('_className');
+    assertSuggestName('_name');
   }
 
   test_TopLevelVariableDeclaration_prefixed_semicolon() async {
@@ -220,6 +282,12 @@
     assertSuggestName('nonsenseClassName');
     assertSuggestName('className');
     assertSuggestName('name');
+    // private versions
+    assertSuggestName('_abstractCrazyNonsenseClassName');
+    assertSuggestName('_crazyNonsenseClassName');
+    assertSuggestName('_nonsenseClassName');
+    assertSuggestName('_className');
+    assertSuggestName('_name');
   }
 
   test_TopLevelVariableDeclaration_short() async {
@@ -230,6 +298,8 @@
     expect(replacementOffset, completionOffset);
     expect(replacementLength, 0);
     assertSuggestName('a');
+    // private version
+    assertSuggestName('_a');
   }
 
   test_TopLevelVariableDeclaration_short_semicolon() async {
@@ -240,5 +310,7 @@
     expect(replacementOffset, completionOffset);
     expect(replacementLength, 0);
     assertSuggestName('a');
+    // private version
+    assertSuggestName('_a');
   }
 }
diff --git a/pkg/analysis_server/test/services/correction/assist_test.dart b/pkg/analysis_server/test/services/correction/assist_test.dart
index 2241cfd..b9e542f 100644
--- a/pkg/analysis_server/test/services/correction/assist_test.dart
+++ b/pkg/analysis_server/test/services/correction/assist_test.dart
@@ -2504,6 +2504,38 @@
 ''');
   }
 
+  test_convertToIntLiteral() async {
+    await resolveTestUnit('''
+const double myDouble = 42.0;
+''');
+    await assertHasAssistAt('42.0', DartAssistKind.CONVERT_TO_INT_LITERAL, '''
+const double myDouble = 42;
+''');
+  }
+
+  test_convertToIntLiteral_e() async {
+    await resolveTestUnit('''
+const double myDouble = 4.2e1;
+''');
+    await assertHasAssistAt('4.2e1', DartAssistKind.CONVERT_TO_INT_LITERAL, '''
+const double myDouble = 42;
+''');
+  }
+
+  test_convertToIntLiteral_eBig() async {
+    await resolveTestUnit('''
+const double myDouble = 4.2e99999;
+''');
+    await assertNoAssistAt('4.2e99999', DartAssistKind.CONVERT_TO_INT_LITERAL);
+  }
+
+  test_convertToIntLiteral_notDouble() async {
+    await resolveTestUnit('''
+const double myDouble = 42;
+''');
+    await assertNoAssistAt('42', DartAssistKind.CONVERT_TO_INT_LITERAL);
+  }
+
   test_convertToIsNot_BAD_is_alreadyIsNot() async {
     await resolveTestUnit('''
 main(p) {
@@ -5014,6 +5046,60 @@
     }
   }
 
+  test_flutterWrapWidget_OK_prefixedIdentifier_identifier() async {
+    addFlutterPackage();
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+abstract class Foo extends Widget {
+  Widget bar;
+}
+
+main(Foo foo) {
+  return foo./*caret*/bar;
+}
+''');
+    _setCaretLocation();
+    await assertHasAssist(DartAssistKind.FLUTTER_WRAP_GENERIC, '''
+import 'package:flutter/widgets.dart';
+
+abstract class Foo extends Widget {
+  Widget bar;
+}
+
+main(Foo foo) {
+  return widget(child: foo./*caret*/bar);
+}
+''');
+  }
+
+  test_flutterWrapWidget_OK_prefixedIdentifier_prefix() async {
+    addFlutterPackage();
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+abstract class Foo extends Widget {
+  Widget bar;
+}
+
+main(Foo foo) {
+  return /*caret*/foo.bar;
+}
+''');
+    _setCaretLocation();
+    await assertHasAssist(DartAssistKind.FLUTTER_WRAP_GENERIC, '''
+import 'package:flutter/widgets.dart';
+
+abstract class Foo extends Widget {
+  Widget bar;
+}
+
+main(Foo foo) {
+  return /*caret*/widget(child: foo.bar);
+}
+''');
+  }
+
   test_flutterWrapWidget_OK_singleLine1() async {
     addFlutterPackage();
     await resolveTestUnit('''
diff --git a/pkg/analysis_server/test/services/correction/fix_test.dart b/pkg/analysis_server/test/services/correction/fix_test.dart
index 93b95a7..db6d6b7 100644
--- a/pkg/analysis_server/test/services/correction/fix_test.dart
+++ b/pkg/analysis_server/test/services/correction/fix_test.dart
@@ -3744,7 +3744,7 @@
   test_createMissingOverrides_functionTypedParameter() async {
     await resolveTestUnit('''
 abstract class A {
-  forEach(int f(double p1, String p2));
+  void forEach(int f(double p1, String p2));
 }
 
 class B extends A {
@@ -3752,12 +3752,12 @@
 ''');
     await assertHasFix(DartFixKind.CREATE_MISSING_OVERRIDES, '''
 abstract class A {
-  forEach(int f(double p1, String p2));
+  void forEach(int f(double p1, String p2));
 }
 
 class B extends A {
   @override
-  forEach(int Function(double p1, String p2) f) {
+  void forEach(int Function(double p1, String p2) f) {
     // TODO: implement forEach
   }
 }
@@ -3785,8 +3785,8 @@
 }
 
 class Test extends IterableMixin<int> {
-  // TODO: implement iterator
   @override
+  // TODO: implement iterator
   Iterator<int> get iterator => null;
 }
 ''');
@@ -3810,6 +3810,7 @@
   @override
   List<V> getItems() {
     // TODO: implement getItems
+    return null;
   }
 }
 ''');
@@ -3832,12 +3833,12 @@
 }
 
 class B extends A {
-  // TODO: implement g1
   @override
+  // TODO: implement g1
   get g1 => null;
 
-  // TODO: implement g2
   @override
+  // TODO: implement g2
   int get g2 => null;
 }
 ''');
@@ -3863,6 +3864,7 @@
   @override
   Map<aaa.Future, List<aaa.Future>> g(aaa.Future p) {
     // TODO: implement g
+    return null;
   }
 }
 ''');
@@ -3904,7 +3906,7 @@
   test_createMissingOverrides_method() async {
     await resolveTestUnit('''
 abstract class A {
-  m1();
+  void m1();
   int m2();
   String m3(int p1, double p2, Map<int, List<String>> p3);
   String m4(p1, p2);
@@ -3917,7 +3919,7 @@
 ''');
     String expectedCode = '''
 abstract class A {
-  m1();
+  void m1();
   int m2();
   String m3(int p1, double p2, Map<int, List<String>> p3);
   String m4(p1, p2);
@@ -3927,33 +3929,38 @@
 
 class B extends A {
   @override
-  m1() {
+  void m1() {
     // TODO: implement m1
   }
 
   @override
   int m2() {
     // TODO: implement m2
+    return null;
   }
 
   @override
   String m3(int p1, double p2, Map<int, List<String>> p3) {
     // TODO: implement m3
+    return null;
   }
 
   @override
   String m4(p1, p2) {
     // TODO: implement m4
+    return null;
   }
 
   @override
   String m5(p1, [int p2 = 2, int p3, p4 = 4]) {
     // TODO: implement m5
+    return null;
   }
 
   @override
   String m6(p1, {int p2 = 2, int p3, p4 = 4}) {
     // TODO: implement m6
+    return null;
   }
 }
 ''';
@@ -4020,6 +4027,45 @@
   @override
   E1 foo<E1, E2 extends C<int>>(V<E2> v) {
     // TODO: implement foo
+    return null;
+  }
+}
+''');
+  }
+
+  test_createMissingOverrides_method_genericClass2() async {
+    await resolveTestUnit('''
+class A<R> {
+  R foo(int a) => null;
+}
+
+class B<R> extends A<R> {
+  R bar(double b) => null;
+}
+
+class X implements B<bool> {
+}
+''');
+    await assertHasFix(DartFixKind.CREATE_MISSING_OVERRIDES, '''
+class A<R> {
+  R foo(int a) => null;
+}
+
+class B<R> extends A<R> {
+  R bar(double b) => null;
+}
+
+class X implements B<bool> {
+  @override
+  bool bar(double b) {
+    // TODO: implement bar
+    return null;
+  }
+
+  @override
+  bool foo(int a) {
+    // TODO: implement foo
+    return null;
   }
 }
 ''');
@@ -4044,6 +4090,7 @@
   @override
   List<T> foo<T extends V>(K key) {
     // TODO: implement foo
+    return null;
   }
 }
 ''');
@@ -4095,6 +4142,7 @@
   @override
   int operator [](int index) {
     // TODO: implement []
+    return null;
   }
 
   @override
@@ -4125,17 +4173,17 @@
 
 class B extends A {
   @override
-  set s1(x) {
+  void set s1(x) {
     // TODO: implement s1
   }
 
   @override
-  set s2(int x) {
+  void set s2(int x) {
     // TODO: implement s2
   }
 
   @override
-  set s3(String x) {
+  void set s3(String x) {
     // TODO: implement s3
   }
 }
@@ -5495,6 +5543,106 @@
 ''');
   }
 
+  test_moveTypeArgumentsToClass_explicitConst() async {
+    await resolveTestUnit('''
+main() {
+  const C.named<int>();
+}
+class C<E> {
+  const C.named();
+}
+''');
+    await assertHasFix(DartFixKind.MOVE_TYPE_ARGUMENTS_TO_CLASS, '''
+main() {
+  const C<int>.named();
+}
+class C<E> {
+  const C.named();
+}
+''');
+  }
+
+  test_moveTypeArgumentsToClass_explicitNew() async {
+    await resolveTestUnit('''
+main() {
+  new C.named<int>();
+}
+class C<E> {
+  C.named();
+}
+''');
+    await assertHasFix(DartFixKind.MOVE_TYPE_ARGUMENTS_TO_CLASS, '''
+main() {
+  new C<int>.named();
+}
+class C<E> {
+  C.named();
+}
+''');
+  }
+
+  test_moveTypeArgumentsToClass_explicitNew_BAD_alreadyThere() async {
+    await resolveTestUnit('''
+main() {
+  new C<String>.named<int>();
+}
+class C<E> {
+  C.named();
+}
+''');
+    await assertNoFix(DartFixKind.MOVE_TYPE_ARGUMENTS_TO_CLASS);
+  }
+
+  test_moveTypeArgumentsToClass_explicitNew_BAD_wrongNumber() async {
+    await resolveTestUnit('''
+main() {
+  new C.named<int, String>();
+}
+class C<E> {
+  C.named();
+}
+''');
+    await assertNoFix(DartFixKind.MOVE_TYPE_ARGUMENTS_TO_CLASS);
+  }
+
+  test_moveTypeArgumentsToClass_implicitConst() async {
+    await resolveTestUnit('''
+main() {
+  const C c = C.named<int>();
+}
+class C<E> {
+  const C.named();
+}
+''');
+    await assertHasFix(DartFixKind.MOVE_TYPE_ARGUMENTS_TO_CLASS, '''
+main() {
+  const C c = C<int>.named();
+}
+class C<E> {
+  const C.named();
+}
+''');
+  }
+
+  test_moveTypeArgumentsToClass_implicitNew() async {
+    await resolveTestUnit('''
+main() {
+  C.named<int>();
+}
+class C<E> {
+  C.named();
+}
+''');
+    await assertHasFix(DartFixKind.MOVE_TYPE_ARGUMENTS_TO_CLASS, '''
+main() {
+  C<int>.named();
+}
+class C<E> {
+  C.named();
+}
+''');
+  }
+
   test_noException_1() async {
     await resolveTestUnit('''
 main(p) {
@@ -5629,6 +5777,82 @@
 ''');
   }
 
+  test_removeTypeArguments_explicitConst() async {
+    await resolveTestUnit('''
+main() {
+  const C.named<int>();
+}
+class C<E> {
+  const C.named();
+}
+''');
+    await assertHasFix(DartFixKind.REMOVE_TYPE_ARGUMENTS, '''
+main() {
+  const C.named();
+}
+class C<E> {
+  const C.named();
+}
+''');
+  }
+
+  test_removeTypeArguments_explicitNew() async {
+    await resolveTestUnit('''
+main() {
+  new C.named<int>();
+}
+class C<E> {
+  C.named();
+}
+''');
+    await assertHasFix(DartFixKind.REMOVE_TYPE_ARGUMENTS, '''
+main() {
+  new C.named();
+}
+class C<E> {
+  C.named();
+}
+''');
+  }
+
+  test_removeTypeArguments_implicitConst() async {
+    await resolveTestUnit('''
+main() {
+  const C c = C.named<int>();
+}
+class C<E> {
+  const C.named();
+}
+''');
+    await assertHasFix(DartFixKind.REMOVE_TYPE_ARGUMENTS, '''
+main() {
+  const C c = C.named();
+}
+class C<E> {
+  const C.named();
+}
+''');
+  }
+
+  test_removeTypeArguments_implicitNew() async {
+    await resolveTestUnit('''
+main() {
+  C.named<int>();
+}
+class C<E> {
+  C.named();
+}
+''');
+    await assertHasFix(DartFixKind.REMOVE_TYPE_ARGUMENTS, '''
+main() {
+  C.named();
+}
+class C<E> {
+  C.named();
+}
+''');
+  }
+
   test_removeUnnecessaryCast_assignment() async {
     await resolveTestUnit('''
 main(Object p) {
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 3710f03..2616261 100644
--- a/pkg/analysis_server/test/services/refactoring/move_file_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/move_file_test.dart
@@ -22,13 +22,6 @@
 class MoveFileTest extends RefactoringTest {
   MoveFileRefactoring refactoring;
 
-  @failingTest
-  test_dart_uris_are_unmodified() async {
-    // TODO(dantup): See _computeNewUri implementation which currently only
-    // handles relative + package: urls (package url handling is also incomplete)
-    fail('Not yet implemented/tested');
-  }
-
   test_file_containing_imports_exports_parts() async {
     String pathA = '/project/000/1111/a.dart';
     String pathB = '/project/000/1111/b.dart';
@@ -44,7 +37,7 @@
 import '22/c.dart';
 export '333/d.dart';
 part 'a.dart';
-part '/absolute/uri.dart';
+part '${convertAbsolutePathToUri('/absolute/uri.dart')}';
 ''');
     // perform refactoring
     _createRefactoring('/project/000/1111/22/new_name.dart');
@@ -58,7 +51,7 @@
 import 'c.dart';
 export '../333/d.dart';
 part '../a.dart';
-part '/absolute/uri.dart';
+part '${convertAbsolutePathToUri('/absolute/uri.dart')}';
 ''');
   }
 
@@ -110,6 +103,26 @@
     assertNoFileChange(testFile);
   }
 
+  test_file_imported_with_package_uri() async {
+    // Set up package uri resolution for local package.
+    packageMap['my_package'] = [getFolder('/project/lib')];
+    configureDriver();
+
+    String pathA = '/project/000/1111/a.dart';
+    testFile = '/project/lib/test.dart';
+    addSource(pathA, '''
+  import 'package:my_package/test.dart';
+  ''');
+    addTestSource('');
+    // perform refactoring
+    _createRefactoring('/project/lib/222/new_name.dart');
+    await _assertSuccessfulRefactoring();
+    assertFileChangeResult(pathA, '''
+  import 'package:my_package/222/new_name.dart';
+  ''');
+    assertNoFileChange(testFile);
+  }
+
   @failingTest
   test_file_referenced_by_multiple_libraries() async {
     // This test fails because the search index doesn't support multiple uris for
@@ -172,7 +185,8 @@
     // TODO(dantup): These paths should all use convertPath so they're as expected
     // on Windows.
     await _assertFailedRefactoring(RefactoringProblemSeverity.FATAL,
-        expectedMessage: '/tmp does not belong to an analysis root.');
+        expectedMessage:
+            '${convertPath('/tmp')} does not belong to an analysis root.');
   }
 
   test_nonexistent_file_returns_failure() async {
@@ -194,7 +208,7 @@
     _createRefactoring('/project2', oldName: '/project');
     await _assertFailedRefactoring(RefactoringProblemSeverity.FATAL,
         expectedMessage:
-            'Renaming an analysis root is not supported (/project)');
+            'Renaming an analysis root is not supported (${convertPath('/project')})');
   }
 
   test_renaming_part_that_uses_uri_in_part_of() async {
@@ -235,13 +249,13 @@
     // Allow passing an oldName for when we don't want to rename testSource,
     // but otherwise fall back to that.
     if (oldName != null) {
-      refactoring =
-          new MoveFileRefactoring(resourceProvider, workspace, null, oldName);
+      refactoring = new MoveFileRefactoring(
+          resourceProvider, workspace, null, convertPath(oldName));
     } else {
       refactoring = new MoveFileRefactoring(
           resourceProvider, workspace, testSource, null);
     }
-    refactoring.newFile = newName;
+    refactoring.newFile = convertPath(newName);
   }
 
   Future _assertFailedRefactoring(RefactoringProblemSeverity expectedSeverity,
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 00006c5..a7e9148 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
@@ -722,7 +722,7 @@
 }
 ''');
     await indexTestUnit('''
-import '${convertPathForImport(pkgLib)}';
+import '${convertAbsolutePathToUri(pkgLib)}';
 class A {
   test() {}
 }
@@ -737,7 +737,7 @@
     refactoring.newName = 'newName';
     // validate change
     await assertSuccessfulRefactoring('''
-import '${convertPathForImport('/.pub-cache/lib.dart')}';
+import '${convertAbsolutePathToUri('/.pub-cache/lib.dart')}';
 class A {
   newName() {}
 }
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 1db7113..7ace7de 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
@@ -234,7 +234,7 @@
 class A {}
 ''');
     await indexTestUnit('''
-import "${convertPathForImport('/other/lib.dart')}";
+import "${convertAbsolutePathToUri('/other/lib.dart')}";
 main() {
   A a;
 }
diff --git a/pkg/analysis_server/test/src/utilities/flutter_test.dart b/pkg/analysis_server/test/src/utilities/flutter_test.dart
index b4a0ef0..c148ef0 100644
--- a/pkg/analysis_server/test/src/utilities/flutter_test.dart
+++ b/pkg/analysis_server/test/src/utilities/flutter_test.dart
@@ -90,22 +90,7 @@
     expect(getWidgetPresentationText(w), isNull);
   }
 
-  test_identifyWidgetExpression_identifier() async {
-    await resolveTestUnit('''
-import 'package:flutter/widgets.dart';
-
-main() {
-  var text = new Text('abc');
-  text;
-}
-''');
-    {
-      Expression expression = findNodeAtString("text;");
-      expect(identifyWidgetExpression(expression), expression);
-    }
-  }
-
-  test_identifyWidgetExpression_instanceCreation() async {
+  test_identifyWidgetExpression_node_instanceCreation() async {
     await resolveTestUnit('''
 import 'package:flutter/widgets.dart';
 
@@ -155,7 +140,7 @@
     }
   }
 
-  test_identifyWidgetExpression_invocation() async {
+  test_identifyWidgetExpression_node_invocation() async {
     await resolveTestUnit('''
 import 'package:flutter/widgets.dart';
 
@@ -185,7 +170,7 @@
     }
   }
 
-  test_identifyWidgetExpression_namedExpression() async {
+  test_identifyWidgetExpression_node_namedExpression() async {
     await resolveTestUnit('''
 import 'package:flutter/widgets.dart';
 
@@ -199,6 +184,50 @@
     expect(identifyWidgetExpression(childExpression), isNull);
   }
 
+  test_identifyWidgetExpression_node_prefixedIdentifier_identifier() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+abstract class Foo extends Widget {
+  Widget bar;
+}
+
+main(Foo foo) {
+  foo.bar; // ref
+}
+''');
+    SimpleIdentifier bar = findNodeAtString('bar; // ref');
+    expect(identifyWidgetExpression(bar), bar.parent);
+  }
+
+  test_identifyWidgetExpression_node_prefixedIdentifier_prefix() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+abstract class Foo extends Widget {
+  Widget bar;
+}
+
+main(Foo foo) {
+  foo.bar; // ref
+}
+''');
+    SimpleIdentifier foo = findNodeAtString('foo.bar');
+    expect(identifyWidgetExpression(foo), foo.parent);
+  }
+
+  test_identifyWidgetExpression_node_simpleIdentifier() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+main(Widget widget) {
+  widget; // ref
+}
+''');
+    Expression expression = findNodeAtString('widget; // ref');
+    expect(identifyWidgetExpression(expression), expression);
+  }
+
   test_identifyWidgetExpression_null() async {
     await resolveTestUnit('''
 import 'package:flutter/widgets.dart';
@@ -222,6 +251,72 @@
     }
   }
 
+  test_identifyWidgetExpression_parent_argumentList() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+main() {
+  var text = new Text('abc');
+  useWidget(text); // ref
+}
+
+void useWidget(Widget w) {}
+''');
+    Expression expression = findNodeAtString("text); // ref");
+    expect(identifyWidgetExpression(expression), expression);
+  }
+
+  test_identifyWidgetExpression_parent_expressionStatement() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+main(Widget widget) {
+  widget; // ref
+}
+''');
+    Expression expression = findNodeAtString("widget; // ref");
+    expect(identifyWidgetExpression(expression), expression);
+  }
+
+  test_identifyWidgetExpression_parent_listLiteral() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+main(Widget widget) {
+  return [widget]; // ref
+}
+''');
+    Expression expression = findNodeAtString("widget]; // ref");
+    expect(identifyWidgetExpression(expression), expression);
+  }
+
+  test_identifyWidgetExpression_parent_namedExpression() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+main() {
+  var text = new Text('abc');
+  useWidget(child: text); // ref
+}
+
+void useWidget({Widget child}) {}
+''');
+    Expression expression = findNodeAtString("text); // ref");
+    expect(identifyWidgetExpression(expression), expression);
+  }
+
+  test_identifyWidgetExpression_parent_returnStatement() async {
+    await resolveTestUnit('''
+import 'package:flutter/widgets.dart';
+
+main(Widget widget) {
+  return widget; // ref
+}
+''');
+    Expression expression = findNodeAtString("widget; // ref");
+    expect(identifyWidgetExpression(expression), expression);
+  }
+
   test_isWidget() async {
     await resolveTestUnit('''
 import 'package:flutter/widgets.dart';
diff --git a/pkg/analysis_server/test/tool/lsp_spec/dart_test.dart b/pkg/analysis_server/test/tool/lsp_spec/dart_test.dart
new file mode 100644
index 0000000..068063c
--- /dev/null
+++ b/pkg/analysis_server/test/tool/lsp_spec/dart_test.dart
@@ -0,0 +1,48 @@
+// 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:test/test.dart';
+
+import '../../../tool/lsp_spec/codegen_dart.dart';
+
+main() {
+  group('mapType', () {
+    test('handles basic types', () {
+      expect(mapType(['string']), equals('String'));
+      expect(mapType(['boolean']), equals('bool'));
+      expect(mapType(['any']), equals('dynamic'));
+      expect(mapType(['object']), equals('dynamic'));
+      expect(mapType(['int']), equals('int'));
+      expect(mapType(['num']), equals('num'));
+    });
+
+    test('handles union types', () {
+      expect(mapType(['string', 'int']), equals('Either2<String, int>'));
+      expect(mapType(['string | int']), equals('Either2<String, int>'));
+    });
+
+    test('handles arrays', () {
+      expect(mapType(['string[]']), equals('List<String>'));
+      expect(mapType(['Array<string>']), equals('List<String>'));
+    });
+
+    test('handles types with args', () {
+      expect(mapType(['Class<string[]>']), equals('Class<List<String>>'));
+      expect(mapType(['Array<string | num>']),
+          equals('List<Either2<String, num>>'));
+    });
+
+    test('handles complex nested types', () {
+      expect(
+          mapType([
+            'Array<string>',
+            'any[]',
+            'Response<A>',
+            'Request<Array<string | num>>'
+          ]),
+          equals(
+              'Either4<List<String>, List<dynamic>, Response<A>, Request<List<Either2<String, num>>>>'));
+    });
+  });
+}
diff --git a/pkg/analysis_server/test/tool/lsp_spec/json_test.dart b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
new file mode 100644
index 0000000..e12b850
--- /dev/null
+++ b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
@@ -0,0 +1,145 @@
+// 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:convert';
+
+import 'package:analysis_server/lsp_protocol/protocol_generated.dart';
+import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+import 'package:test/test.dart';
+
+main() {
+  group('toJson', () {
+    test('returns correct JSON for a union', () {
+      final _num = new Either2.t1(1);
+      final _string = new Either2.t2('Test');
+      expect(json.encode(_num.toJson()), equals('1'));
+      expect(json.encode(_string.toJson()), equals('"Test"'));
+    });
+
+    test('returns correct output for union types', () {
+      final message =
+          new RequestMessage(new Either2.t1(1), "test", null, "test");
+      String output = json.encode(message.toJson());
+      expect(output, equals('{"id":1,"method":"test","jsonrpc":"test"}'));
+    });
+
+    test('returns correct output for union types containing interface types',
+        () {
+      final params = new Either2<String, WorkspaceClientCapabilities>.t2(
+          new WorkspaceClientCapabilities(
+        true,
+        null,
+        null,
+        null,
+      ));
+      String output = json.encode(params);
+      expect(output, equals('{"applyEdit":true}'));
+    });
+
+    test('returns correct output for types with lists', () {
+      final start = new Position(1, 1);
+      final end = new Position(2, 2);
+      final range = new Range(start, end);
+      final location = new Location('y-uri', range);
+      final codeAction = new Diagnostic(
+        range,
+        DiagnosticSeverity.Error,
+        new Either2.t2('test_err'),
+        '/tmp/source.dart',
+        'err!!',
+        [new DiagnosticRelatedInformation(location, 'message')],
+      );
+      final output = json.encode(codeAction.toJson());
+      final expected = '''{
+        "range":{
+            "start":{"line":1,"character":1},
+            "end":{"line":2,"character":2}
+        },
+        "severity":1,
+        "code":"test_err",
+        "source":"/tmp/source.dart",
+        "message":"err!!",
+        "relatedInformation":[
+            {
+              "location":{
+                  "uri":"y-uri",
+                  "range":{
+                    "start":{"line":1,"character":1},
+                    "end":{"line":2,"character":2}
+                  }
+              },
+              "message":"message"
+            }
+        ]
+      }'''
+          .replaceAll(new RegExp('[ \n]'), '');
+      expect(output, equals(expected));
+    });
+
+    test('serialises enums to their underlying values', () {
+      final foldingRange =
+          new FoldingRange(1, 2, 3, 4, FoldingRangeKind.Comment);
+      final output = json.encode(foldingRange.toJson());
+      final expected = '''{
+        "startLine":1,
+        "startCharacter":2,
+        "endLine":3,
+        "endCharacter":4,
+        "kind":"comment"
+      }'''
+          .replaceAll(new RegExp('[ \n]'), '');
+      expect(output, equals(expected));
+    });
+  });
+
+  group('fromJson', () {
+    test('parses JSON for types with unions (left side)', () {
+      final input = '{"id":1,"method":"test","jsonrpc":"test"}';
+      final message = new RequestMessage.fromJson(jsonDecode(input));
+      expect(message.id, equals(new Either2<num, String>.t1(1)));
+      expect(message.id.valueEquals(1), isTrue);
+      expect(message.jsonrpc, "test");
+      expect(message.method, "test");
+    });
+
+    test('parses JSON for types with unions (right side)', () {
+      final input = '{"id":"one","method":"test","jsonrpc":"test"}';
+      final message = new RequestMessage.fromJson(jsonDecode(input));
+      expect(message.id, equals(new Either2<num, String>.t2("one")));
+      expect(message.id.valueEquals("one"), isTrue);
+      expect(message.jsonrpc, "test");
+      expect(message.method, "test");
+    });
+  });
+
+  test('objects with lists and enums can round-trip through to json and back',
+      () {
+    final obj = new ClientCapabilities(
+        new WorkspaceClientCapabilities(
+            true,
+            false,
+            [ResourceOperationKind.Create, ResourceOperationKind.Delete],
+            FailureHandlingKind.Undo),
+        new TextDocumentClientCapabilities(true, false, true, false),
+        null);
+    final String json = jsonEncode(obj);
+    final restoredObj = new ClientCapabilities.fromJson(jsonDecode(json));
+
+    expect(restoredObj.workspace.applyEdit, equals(obj.workspace.applyEdit));
+    expect(restoredObj.workspace.documentChanges,
+        equals(obj.workspace.documentChanges));
+    expect(restoredObj.workspace.resourceOperations,
+        equals(obj.workspace.resourceOperations));
+    expect(restoredObj.workspace.failureHandling,
+        equals(obj.workspace.failureHandling));
+    expect(restoredObj.textDocument.didSave, equals(obj.textDocument.didSave));
+    expect(restoredObj.textDocument.dynamicRegistration,
+        equals(obj.textDocument.dynamicRegistration));
+    expect(
+        restoredObj.textDocument.willSave, equals(obj.textDocument.willSave));
+    expect(restoredObj.textDocument.willSaveWaitUntil,
+        equals(obj.textDocument.willSaveWaitUntil));
+    expect(restoredObj.experimental, equals(obj.experimental));
+  });
+}
diff --git a/pkg/analysis_server/test/tool/lsp_spec/markdown_test.dart b/pkg/analysis_server/test/tool/lsp_spec/markdown_test.dart
new file mode 100644
index 0000000..23afaca
--- /dev/null
+++ b/pkg/analysis_server/test/tool/lsp_spec/markdown_test.dart
@@ -0,0 +1,52 @@
+// 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:test/test.dart';
+
+import '../../../tool/lsp_spec/markdown.dart';
+
+main() {
+  group('markdown parser', () {
+    test('extracts a typescript fenced block from Markdown', () {
+      final String input = '''
+```typescript
+CONTENT
+```
+    ''';
+      final List<String> output = extractTypeScriptBlocks(input);
+      expect(output, hasLength(1));
+      expect(output, contains('CONTENT'));
+    });
+
+    test('does not extract unknown code blocks', () {
+      final String input = '''
+```
+CONTENT
+```
+
+```dart
+CONTENT
+```
+    ''';
+      final List<String> output = extractTypeScriptBlocks(input);
+      expect(output, hasLength(0));
+    });
+
+    test('extracts multiple code blocks', () {
+      final String input = '''
+```typescript
+CONTENT1
+```
+
+```typescript
+CONTENT2
+```
+    ''';
+      final List<String> output = extractTypeScriptBlocks(input);
+      expect(output, hasLength(2));
+      expect(output, contains('CONTENT1'));
+      expect(output, contains('CONTENT2'));
+    });
+  });
+}
diff --git a/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart b/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart
new file mode 100644
index 0000000..1fad598
--- /dev/null
+++ b/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart
@@ -0,0 +1,229 @@
+// 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:test/test.dart';
+
+import '../../../tool/lsp_spec/typescript.dart';
+
+main() {
+  group('typescript parser', () {
+    test('parses an interface', () {
+      final String input = '''
+/**
+ * Some options.
+ */
+export interface SomeOptions {
+	/**
+	 * Options used by something.
+	 */
+	options?: OptionKind[];
+}
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      expect(output, hasLength(1));
+      expect(output[0], const TypeMatcher<Interface>());
+      final Interface interface = output[0];
+      expect(interface.name, equals('SomeOptions'));
+      expect(interface.comment, equals('Some options.'));
+      expect(interface.baseTypes, hasLength(0));
+      expect(interface.members, hasLength(1));
+      expect(interface.members[0], const TypeMatcher<Field>());
+      final Field field = interface.members[0];
+      expect(field.name, equals('options'));
+      expect(field.comment, equals('''Options used by something.'''));
+      expect(field.allowsNull, isFalse);
+      expect(field.allowsUndefined, isTrue);
+      expect(field.types, hasLength(1));
+      expect(field.types[0], equals('OptionKind[]'));
+    });
+
+    test('parses an interface with multiple fields', () {
+      final String input = '''
+export interface SomeOptions {
+	/**
+	 * Options0 used by something.
+	 */
+	options0: any;
+	/**
+	 * Options1 used by something.
+	 */
+	options1: any;
+}
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      expect(output, hasLength(1));
+      expect(output[0], const TypeMatcher<Interface>());
+      final Interface interface = output[0];
+      expect(interface.members, hasLength(2));
+      [0, 1].forEach((i) {
+        expect(interface.members[i], const TypeMatcher<Field>());
+        final Field field = interface.members[i];
+        expect(field.name, equals('options$i'));
+        expect(field.comment, equals('''Options$i used by something.'''));
+      });
+    });
+
+    test('parses an interface with type args', () {
+      final String input = '''
+interface ResponseError<D> {
+	data?: D;
+}
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      expect(output, hasLength(1));
+      expect(output[0], const TypeMatcher<Interface>());
+      final Interface interface = output[0];
+      expect(interface.members, hasLength(1));
+      final Field field = interface.members.first;
+      expect(field, const TypeMatcher<Field>());
+      expect(field.name, equals('data'));
+      expect(field.allowsUndefined, true);
+      expect(field.allowsNull, false);
+      expect(field.types, equals(['D']));
+    });
+
+    test('parses an interface with Arrays in Array<T> format', () {
+      final String input = '''
+export interface RequestMessage {
+	/**
+	 * The method's params.
+	 */
+	params?: Array<any> | object;
+}
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      expect(output, hasLength(1));
+      expect(output[0], const TypeMatcher<Interface>());
+      final Interface interface = output[0];
+      expect(interface.members, hasLength(1));
+      final Field field = interface.members.first;
+      expect(field, const TypeMatcher<Field>());
+      expect(field.name, equals('params'));
+      expect(field.comment, equals('''The method's params.'''));
+      expect(field.allowsUndefined, true);
+      expect(field.allowsNull, false);
+      expect(field.types, equals(['Array<any>', 'object']));
+    });
+
+    test('flags nullable undefined values', () {
+      final String input = '''
+export interface A {
+  canBeBoth?: string | null;
+  canBeNeither: string;
+	canBeNull: string | null;
+  canBeUndefined?: string;
+}
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      final Interface interface = output[0];
+      expect(interface.members, hasLength(4));
+      interface.members.forEach((m) => expect(m, const TypeMatcher<Field>()));
+      final Field canBeBoth = interface.members[0],
+          canBeNeither = interface.members[1],
+          canBeNull = interface.members[2],
+          canBeUndefined = interface.members[3];
+      expect(canBeNeither.allowsNull, isFalse);
+      expect(canBeNeither.allowsUndefined, isFalse);
+      expect(canBeNull.allowsNull, isTrue);
+      expect(canBeNull.allowsUndefined, isFalse);
+      expect(canBeUndefined.allowsNull, isFalse);
+      expect(canBeUndefined.allowsUndefined, isTrue);
+      expect(canBeBoth.allowsNull, isTrue);
+      expect(canBeBoth.allowsUndefined, isTrue);
+    });
+
+    test('formats comments correctly', () {
+      final String input = '''
+/**
+ * Describes the what this class in lots of words that wrap onto
+ * multiple lines that will need re-wrapping to format nicely when
+ * converted into Dart.
+ *
+ * Blank lines should remain in-tact, as should:
+ *   - Indented
+ *   - Things
+ * 
+ * Some docs have:
+ * - List items that are not indented
+ * 
+ * Sometimes after a blank line we'll have a note.
+ * 
+ * *Note* that something.
+ */
+export interface A {
+  a: a;
+}
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      final Interface interface = output[0];
+      expect(interface.comment, equals('''
+Describes the what this class in lots of words that wrap onto multiple lines that will need re-wrapping to format nicely when converted into Dart.
+
+Blank lines should remain in-tact, as should:
+  - Indented
+  - Things
+
+Some docs have:
+- List items that are not indented
+
+Sometimes after a blank line we'll have a note.
+
+*Note* that something.'''));
+    });
+
+    test('parses a type alias', () {
+      final String input = '''
+export type DocumentSelector = DocumentFilter[];
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      expect(output, hasLength(1));
+      expect(output[0], const TypeMatcher<TypeAlias>());
+      final TypeAlias typeAlias = output[0];
+      expect(typeAlias.name, equals('DocumentSelector'));
+      expect(typeAlias.baseType, equals('DocumentFilter[]'));
+    });
+
+    test('parses a namespace of constants', () {
+      final String input = '''
+export namespace ResourceOperationKind {
+	/**
+	 * Supports creating new files and folders.
+	 */
+	export const Create: ResourceOperationKind = 'create';
+
+	/**
+	 * Supports deleting existing files and folders.
+	 */
+	export const Delete: ResourceOperationKind = 'delete';
+
+	/**
+	 * Supports renaming existing files and folders.
+	 */
+	export const Rename: ResourceOperationKind = 'rename';
+}
+    ''';
+      final List<ApiItem> output = extractTypes(input);
+      expect(output, hasLength(1));
+      expect(output[0], const TypeMatcher<Namespace>());
+      final Namespace namespace = output[0];
+      expect(namespace.members, hasLength(3));
+      namespace.members.forEach((m) => expect(m, const TypeMatcher<Const>()));
+      final Const create = namespace.members[0],
+          delete = namespace.members[1],
+          rename = namespace.members[2];
+      expect(create.name, equals('Create'));
+      expect(create.type, equals('ResourceOperationKind'));
+      expect(
+          create.comment, equals('Supports creating new files and folders.'));
+      expect(rename.name, equals('Rename'));
+      expect(rename.type, equals('ResourceOperationKind'));
+      expect(rename.comment,
+          equals('Supports renaming existing files and folders.'));
+      expect(delete.name, equals('Delete'));
+      expect(delete.type, equals('ResourceOperationKind'));
+      expect(delete.comment,
+          equals('Supports deleting existing files and folders.'));
+    });
+  });
+}
diff --git a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
new file mode 100644
index 0000000..79b2b63
--- /dev/null
+++ b/pkg/analysis_server/tool/lsp_spec/codegen_dart.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:dart_style/dart_style.dart';
+import 'package:meta/meta.dart';
+
+import 'typescript.dart';
+
+final formatter = new DartFormatter();
+Map<String, Interface> _interfaces = {};
+Map<String, Namespace> _namespaces = {};
+Map<String, TypeAlias> _typeAliases = {};
+
+String generateDartForTypes(List<ApiItem> types) {
+  // Keep maps of items we may need to look up quickly later.
+  types
+      .whereType<TypeAlias>()
+      .forEach((alias) => _typeAliases[alias.name] = alias);
+  types
+      .whereType<Interface>()
+      .forEach((interface) => _interfaces[interface.name] = interface);
+  types
+      .whereType<Namespace>()
+      .forEach((namespace) => _namespaces[namespace.name] = namespace);
+  final buffer = new IndentableStringBuffer();
+  _getSorted(types).forEach((t) => _writeType(buffer, t));
+  final formattedCode = _formatCode(buffer.toString());
+  return formattedCode.trim() + '\n'; // Ensure a single trailing newline.
+}
+
+List<String> _extractTypesFromUnion(String type) {
+  return type.split('|').map((t) => t.trim()).toList();
+}
+
+String _formatCode(String code) {
+  try {
+    code = formatter.format(code);
+  } catch (e) {
+    print('Failed to format code, returning unformatted code.');
+  }
+  return code;
+}
+
+/// Recursively gets all members from superclasses.
+List<Field> _getAllFields(Interface interface) {
+  // Handle missing interfaces (such as special cased interfaces that won't
+  // be included in this model).
+  if (interface == null) {
+    return [];
+  }
+  return interface.members
+      .whereType<Field>()
+      .followedBy(interface.baseTypes
+          .map((name) => _getAllFields(_interfaces[name]))
+          .expand((ts) => ts))
+      .toList();
+}
+
+String _getListType(String type) {
+  return type.substring('List<'.length, type.length - 1);
+}
+
+/// Returns a copy of the list sorted by name.
+List<ApiItem> _getSorted(List<ApiItem> items) {
+  final sortedList = items.toList();
+  sortedList.sort((item1, item2) => item1.name.compareTo(item2.name));
+  return sortedList;
+}
+
+List<String> _getUnionTypes(String type) {
+  return type
+      .substring('EitherX<'.length, type.length - 1)
+      .split(',')
+      .map((s) => s.trim())
+      .toList();
+}
+
+bool _isList(String type) {
+  return type.startsWith('List<') && type.endsWith('>');
+}
+
+bool _isLiteral(String type) {
+  const literals = ['num', 'String', 'bool'];
+  return literals.contains(type);
+}
+
+bool _isSpecType(String type) {
+  return _interfaces.containsKey(type) || _namespaces.containsKey(type);
+}
+
+bool _isUnion(String type) {
+  return type.startsWith('Either') && type.endsWith('>');
+}
+
+/// Maps reserved words and identifiers that cause issues in field names.
+String _makeValidIdentifier(String identifier) {
+  // The SymbolKind class has uses these names which cause issues for code that
+  // uses them as types.
+  const map = {
+    'Object': 'Obj',
+    'String': 'Str',
+  };
+  return map[identifier] ?? identifier;
+}
+
+/// Maps a TypeScript type on to a Dart type, including following TypeAliases.
+@visibleForTesting
+String mapType(List<String> types) {
+  const mapping = <String, String>{
+    'boolean': 'bool',
+    'string': 'String',
+    'number': 'num',
+    'any': 'dynamic',
+    'object': 'dynamic',
+    // Special cases that are hard to parse or anonymous types.
+    '{ [uri: string]: TextEdit[]; }': 'Map<String, List<TextEdit>>',
+    '{ language: string; value: string }': 'MarkedStringWithLanguage'
+  };
+  if (types.length > 4) {
+    throw 'Unions of more than 4 types are not supported.';
+  }
+  if (types.length >= 2) {
+    final typeArgs = types.map((t) => mapType([t])).join(', ');
+    return 'Either${types.length}<$typeArgs>';
+  }
+
+  final type = types.first;
+  if (type.endsWith('[]')) {
+    return 'List<${mapType([type.substring(0, type.length - 2)])}>';
+  } else if (type.startsWith('Array<') && type.endsWith('>')) {
+    return 'List<${mapType([type.substring(6, type.length - 1)])}>';
+  } else if (type.contains('<')) {
+    // For types with type args, we need to map the type and each type arg.
+    final declaredType = _stripTypeArgs(type);
+    final typeArgs = type
+        .substring(declaredType.length + 1, type.length - 1)
+        .split(',')
+        .map((t) => t.trim());
+    return '${mapType([
+      declaredType
+    ])}<${typeArgs.map((t) => mapType([t])).join(', ')}>';
+  } else if (type.contains('|')) {
+    // It's possible we ended up with nested unions that the parsing.
+    // TODO(dantup): This is now partly done during parsing and partly done
+    // here. Maybe consider removing from typescript.dart and just carrying a
+    // String through so the logic is all in one place in this function?
+    return mapType(_extractTypesFromUnion(type));
+  } else if (_typeAliases.containsKey(type)) {
+    return mapType([_typeAliases[type].baseType]);
+  } else if (mapping.containsKey(type)) {
+    return mapType([mapping[type]]);
+  } else {
+    return type;
+  }
+}
+
+String _rewriteCommentReference(String comment) {
+  final commentReferencePattern = new RegExp(r'\[([\w ]+)\]\(#(\w+)\)');
+  return comment.replaceAllMapped(commentReferencePattern, (m) {
+    final description = m.group(1);
+    final reference = m.group(2);
+    if (description == reference) {
+      return '[$reference]';
+    } else {
+      return '$description ([$reference])';
+    }
+  });
+}
+
+String _stripTypeArgs(String typeName) => typeName.contains('<')
+    ? typeName.substring(0, typeName.indexOf('<'))
+    : typeName;
+
+Iterable<String> _wrapLines(List<String> lines, int maxLength) sync* {
+  lines = lines.map((l) => l.trimRight()).toList();
+  for (var line in lines) {
+    while (true) {
+      if (line.length <= maxLength) {
+        yield line;
+        break;
+      } else {
+        int lastSpace = line.lastIndexOf(' ', maxLength);
+        // If there was no valid place to wrap, yield the whole string.
+        if (lastSpace == -1) {
+          yield line;
+          break;
+        } else {
+          yield line.substring(0, lastSpace);
+          line = line.substring(lastSpace + 1);
+        }
+      }
+    }
+  }
+}
+
+void _writeCanParseMethod(IndentableStringBuffer buffer, Interface interface) {
+  buffer
+    ..writeIndentedln('static bool canParse(Object obj) {')
+    ..indent()
+    ..writeIndented('return obj is Map<String, dynamic>');
+  // In order to consider this valid for parsing, all fields that may not be
+  // undefined must be present and also type check for the correct type.
+  final requiredFields =
+      _getAllFields(interface).where((f) => !f.allowsUndefined);
+  for (var field in requiredFields) {
+    buffer.write(" && obj.containsKey('${field.name}') && ");
+    _writeTypeCheckCondition(
+        buffer, "obj['${field.name}']", mapType(field.types));
+  }
+  buffer
+    ..writeln(';')
+    ..outdent()
+    ..writeIndentedln('}');
+}
+
+void _writeConst(IndentableStringBuffer buffer, Const cons) {
+  _writeDocCommentsAndAnnotations(buffer, cons);
+  buffer.writeIndentedln('static const ${cons.name} = ${cons.value};');
+}
+
+void _writeConstructor(IndentableStringBuffer buffer, Interface interface) {
+  final allFields = _getAllFields(interface);
+  if (allFields.isEmpty) {
+    return;
+  }
+  buffer
+    ..writeIndented('${_stripTypeArgs(interface.name)}(')
+    ..write(allFields.map((field) => 'this.${field.name}').join(', '))
+    ..write(')');
+  final fieldsWithValidation =
+      allFields.where((f) => !f.allowsNull && !f.allowsUndefined).toList();
+  if (fieldsWithValidation.isNotEmpty) {
+    buffer
+      ..writeIndentedln(' {')
+      ..indent();
+    for (var field in fieldsWithValidation) {
+      buffer
+        ..writeIndentedln('if (${field.name} == null) {')
+        ..indent()
+        ..writeIndentedln(
+            "throw '${field.name} is required but was not provided';")
+        ..outdent()
+        ..writeIndentedln('}');
+    }
+    buffer
+      ..outdent()
+      ..writeIndentedln('}');
+  } else {
+    buffer.writeln(';');
+  }
+}
+
+void _writeDocCommentsAndAnnotations(
+    IndentableStringBuffer buffer, ApiItem item) {
+  var comment = item.comment?.trim();
+  if (comment == null || comment.length == 0) {
+    return;
+  }
+  comment = _rewriteCommentReference(comment);
+  Iterable<String> lines = comment.split('\n');
+  // Wrap at 80 - 4 ('/// ') - indent characters.
+  lines = _wrapLines(lines, (80 - 4 - buffer.totalIndent).clamp(0, 80));
+  lines.forEach((l) => buffer.writeIndentedln('/// $l'.trim()));
+  if (item.isDeprecated) {
+    buffer.writeIndentedln('@core.deprecated');
+  }
+}
+
+void _writeEnumClass(IndentableStringBuffer buffer, Namespace namespace) {
+  _writeDocCommentsAndAnnotations(buffer, namespace);
+  buffer
+    ..writeln('class ${namespace.name} {')
+    ..indent()
+    ..writeIndentedln('const ${namespace.name}._(this._value);')
+    ..writeIndentedln('const ${namespace.name}.fromJson(this._value);')
+    ..writeln()
+    ..writeIndentedln('final Object _value;')
+    ..writeln()
+    ..writeIndentedln('static bool canParse(Object obj) {')
+    ..indent()
+    ..writeIndentedln('switch (obj) {')
+    ..indent();
+  namespace.members.whereType<Const>().forEach((cons) {
+    buffer..writeIndentedln('case ${cons.value}:');
+  });
+  buffer
+    ..indent()
+    ..writeIndentedln('return true;')
+    ..outdent()
+    ..writeIndentedln('}')
+    ..writeIndentedln('return false;')
+    ..outdent()
+    ..writeIndentedln('}');
+  namespace.members.whereType<Const>().forEach((cons) {
+    _writeDocCommentsAndAnnotations(buffer, cons);
+    buffer
+      ..writeIndentedln(
+          'static const ${_makeValidIdentifier(cons.name)} = const ${namespace.name}._(${cons.value});');
+  });
+  buffer
+    ..writeln()
+    ..writeIndentedln('Object toJson() => _value;')
+    ..writeln()
+    ..writeIndentedln('@override String toString() => _value.toString();')
+    ..writeln()
+    ..writeIndentedln('@override get hashCode => _value.hashCode;')
+    ..writeln()
+    ..writeIndentedln(
+        'bool operator ==(o) => o is ${namespace.name} && o._value == _value;')
+    ..outdent()
+    ..writeln('}')
+    ..writeln();
+}
+
+void _writeField(IndentableStringBuffer buffer, Field field) {
+  _writeDocCommentsAndAnnotations(buffer, field);
+  buffer
+    ..writeIndented('final ')
+    ..write(mapType(field.types))
+    ..writeln(' ${field.name};');
+}
+
+void _writeFromJsonCode(
+    IndentableStringBuffer buffer, List<String> types, String valueCode) {
+  final type = mapType(types);
+  if (_isLiteral(type)) {
+    buffer.write("$valueCode");
+  } else if (_isSpecType(type)) {
+    // Our own types have fromJson() constructors we can call.
+    buffer.write("$valueCode != null ? new $type.fromJson($valueCode) : null");
+  } else if (_isList(type)) {
+    // Lists need to be mapped so we can recursively call (they may need fromJson).
+    buffer.write("$valueCode?.map((item) => ");
+    final listType = _getListType(type);
+    _writeFromJsonCode(buffer, [listType], 'item');
+    buffer.write(')?.cast<$listType>()?.toList()');
+  } else if (_isUnion(type)) {
+    _writeFromJsonCodeForUnion(buffer, types, valueCode);
+  } else {
+    buffer.write("$valueCode");
+  }
+}
+
+void _writeFromJsonCodeForUnion(
+    IndentableStringBuffer buffer, List<String> types, String valueCode) {
+  final unionTypeName = mapType(types);
+  // Write a check against each type, eg.:
+  // x is y ? new Either.tx(x) : (...)
+  var hasIncompleteCondition = false;
+  var unclosedParens = 0;
+  for (var i = 0; i < types.length; i++) {
+    final dartType = mapType([types[i]]);
+
+    // Dynamic matches all type checks, so only emit it if required.
+    if (dartType != 'dynamic') {
+      _writeTypeCheckCondition(buffer, valueCode, dartType);
+      buffer.write(' ? ');
+    }
+
+    // The code to construct a value with this "side" of the union.
+    buffer.write('new $unionTypeName.t${i + 1}(');
+    _writeFromJsonCode(buffer, [dartType], valueCode); // Call recursively!
+    buffer.write(')');
+
+    // If we output the type condition at the top, prepare for the next condition.
+    if (dartType != 'dynamic') {
+      buffer.write(' : (');
+      hasIncompleteCondition = true;
+      unclosedParens++;
+    } else {
+      hasIncompleteCondition = false;
+    }
+  }
+  // Fill the final parens with a throw because if we fell through all of the
+  // cases then the value we had didn't match any of the types in the union.
+  if (hasIncompleteCondition) {
+    buffer.write(
+        "throw '''\${$valueCode} was not one of (${types.join(', ')})'''");
+  }
+  buffer.write(')' * unclosedParens);
+}
+
+void _writeFromJsonConstructor(
+    IndentableStringBuffer buffer, Interface interface) {
+  final allFields = _getAllFields(interface);
+  if (allFields.isEmpty) {
+    return;
+  }
+  buffer
+    ..writeIndentedln(
+        'factory ${_stripTypeArgs(interface.name)}.fromJson(Map<String, dynamic> json) {')
+    ..indent();
+  for (final field in allFields) {
+    buffer.writeIndented('final ${field.name} = ');
+    _writeFromJsonCode(buffer, field.types, "json['${field.name}']");
+    buffer.writeln(';');
+  }
+  buffer
+    ..writeIndented('return new ${interface.name}(')
+    ..write(allFields.map((field) => '${field.name}').join(', '))
+    ..writeln(');')
+    ..outdent()
+    ..writeIndented('}');
+}
+
+void _writeInterface(IndentableStringBuffer buffer, Interface interface) {
+  _writeDocCommentsAndAnnotations(buffer, interface);
+
+  buffer.writeIndented('class ${interface.name} ');
+  var allBaseTypes = interface.baseTypes.followedBy(['ToJsonable']);
+  if (allBaseTypes.isNotEmpty) {
+    buffer.writeIndented('implements ${allBaseTypes.join(', ')} ');
+  }
+  buffer
+    ..writeln('{')
+    ..indent();
+  _writeConstructor(buffer, interface);
+  _writeFromJsonConstructor(buffer, interface);
+  // Handle Consts and Fields separately, since we need to include superclass
+  // Fields.
+  final consts = interface.members.whereType<Const>().toList();
+  final fields = _getAllFields(interface);
+  buffer.writeln();
+  _writeMembers(buffer, consts);
+  buffer.writeln();
+  _writeMembers(buffer, fields);
+  buffer.writeln();
+  _writeToJsonMethod(buffer, interface);
+  _writeCanParseMethod(buffer, interface);
+  buffer
+    ..outdent()
+    ..writeIndentedln('}')
+    ..writeln();
+}
+
+void _writeJsonMapAssignment(
+    IndentableStringBuffer buffer, Field field, String mapName) {
+  // If we are allowed to be undefined (which essentially means required to be
+  // undefined and never explicitly null), we'll only add the value if set.
+  if (field.allowsUndefined) {
+    buffer
+      ..writeIndentedlnIf(
+          field.isDeprecated, '// ignore: deprecated_member_use')
+      ..writeIndentedln('if (${field.name} != null) {')
+      ..indent();
+  }
+  buffer
+    ..writeIndentedlnIf(field.isDeprecated, '// ignore: deprecated_member_use')
+    ..writeIndented('''$mapName['${field.name}'] = ${field.name}''');
+  if (!field.allowsUndefined && !field.allowsNull) {
+    buffer.write(''' ?? (throw '${field.name} is required but was not set')''');
+  }
+  buffer.writeln(';');
+  if (field.allowsUndefined) {
+    buffer
+      ..outdent()
+      ..writeIndentedln('}');
+  }
+}
+
+void _writeMember(IndentableStringBuffer buffer, Member member) {
+  if (member is Field) {
+    _writeField(buffer, member);
+  } else if (member is Const) {
+    _writeConst(buffer, member);
+  } else {
+    throw 'Unknown type';
+  }
+}
+
+void _writeMembers(IndentableStringBuffer buffer, List<Member> members) {
+  _getSorted(members).forEach((m) => _writeMember(buffer, m));
+}
+
+void _writeNamespace(IndentableStringBuffer buffer, Namespace namespace) {
+  // Namespaces are just groups of constants. For some uses we can write these
+  // as enum classes for extra type safety, but not for all - for example
+  // CodeActionKind can be an arbitrary String even though it also defines
+  // constants for common values. We can tell which can have their own values
+  // because they're marked with type aliases, with the exception of ErrorCodes!
+  if (!_typeAliases.containsKey(namespace.name) &&
+      namespace.name != 'ErrorCodes') {
+    _writeEnumClass(buffer, namespace);
+    return;
+  }
+
+  _writeDocCommentsAndAnnotations(buffer, namespace);
+  buffer
+    ..writeln('abstract class ${namespace.name} {')
+    ..indent();
+  _writeMembers(buffer, namespace.members);
+  buffer
+    ..outdent()
+    ..writeln('}')
+    ..writeln();
+}
+
+void _writeToJsonMethod(IndentableStringBuffer buffer, Interface interface) {
+  // It's important the name we use for the map here isn't in use in the object
+  // already. 'result' was, so we prefix it with some underscores.
+  buffer
+    ..writeIndentedln('Map<String, dynamic> toJson() {')
+    ..indent()
+    ..writeIndentedln('Map<String, dynamic> __result = {};');
+  for (var field in _getAllFields(interface)) {
+    _writeJsonMapAssignment(buffer, field, '__result');
+  }
+  buffer
+    ..writeIndentedln('return __result;')
+    ..outdent()
+    ..writeIndentedln('}');
+}
+
+void _writeType(IndentableStringBuffer buffer, ApiItem type) {
+  if (type is Interface) {
+    _writeInterface(buffer, type);
+  } else if (type is Namespace) {
+    _writeNamespace(buffer, type);
+  } else if (type is TypeAlias) {
+    // For now type aliases are not supported, so are collected at the start
+    // of the process in a map, and just replaced with the aliased type during
+    // generation.
+    // _writeTypeAlias(buffer, type);
+  } else {
+    throw 'Unknown type';
+  }
+}
+
+void _writeTypeCheckCondition(
+    IndentableStringBuffer buffer, String valueCode, String dartType) {
+  if (dartType == 'dynamic') {
+    buffer.write('true');
+  } else if (_isLiteral(dartType)) {
+    buffer.write('$valueCode is $dartType');
+  } else if (_isSpecType(dartType)) {
+    buffer.write('$dartType.canParse($valueCode)');
+  } else if (_isList(dartType)) {
+    final listType = _getListType(dartType);
+    buffer.write('($valueCode is List');
+    if (dartType != 'dynamic') {
+      // TODO(dantup): If we're happy to assume we never have two lists in a union
+      // we could skip this bit.
+      buffer
+          .write(' && ($valueCode.length == 0 || $valueCode.every((item) => ');
+      _writeTypeCheckCondition(buffer, 'item', listType);
+      buffer.write('))');
+    }
+    buffer.write(')');
+  } else if (_isUnion(dartType)) {
+    // To type check a union, we just recursively check against each of its types.
+    final unionTypes = _getUnionTypes(dartType);
+    buffer.write('(');
+    for (var i = 0; i < unionTypes.length; i++) {
+      if (i != 0) {
+        buffer.write(' || ');
+      }
+      _writeTypeCheckCondition(buffer, valueCode, mapType([unionTypes[i]]));
+    }
+    buffer.write(')');
+  } else {
+    throw 'Unable to type check $valueCode against $dartType';
+  }
+}
+
+class IndentableStringBuffer extends StringBuffer {
+  int _indentLevel = 0;
+  int _indentSpaces = 2;
+
+  int get totalIndent => _indentLevel * _indentSpaces;
+  String get _indentString => ' ' * totalIndent;
+
+  void indent() => _indentLevel++;
+  void outdent() => _indentLevel--;
+
+  void writeIndented(Object obj) {
+    write(_indentString);
+    write(obj);
+  }
+
+  void writeIndentedln(Object obj) {
+    write(_indentString);
+    writeln(obj);
+  }
+
+  void writeIndentedlnIf(bool condition, Object obj) {
+    if (condition) {
+      writeIndentedln(obj);
+    }
+  }
+}
diff --git a/pkg/analysis_server/tool/lsp_spec/generate_all.dart b/pkg/analysis_server/tool/lsp_spec/generate_all.dart
new file mode 100644
index 0000000..caa6aea
--- /dev/null
+++ b/pkg/analysis_server/tool/lsp_spec/generate_all.dart
@@ -0,0 +1,66 @@
+// 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:async';
+import 'dart:io';
+
+import 'package:http/http.dart' as http;
+import 'package:path/path.dart' as path;
+
+import 'codegen_dart.dart';
+import 'markdown.dart';
+import 'typescript.dart';
+
+main() async {
+  final String script = Platform.script.toFilePath();
+  // 3x parent = file -> lsp_spec -> tool -> analysis_server.
+  final String packageFolder = new File(script).parent.parent.parent.path;
+  final String outFolder = path.join(packageFolder, 'lib', 'lsp_protocol');
+  new Directory(outFolder).createSync();
+
+  final String spec = await fetchSpec();
+  final List<ApiItem> types = extractAllTypes(extractTypeScriptBlocks(spec));
+  types.addAll(_getSpecialCaseTypes());
+  final String output = generateDartForTypes(types);
+
+  new File(path.join(outFolder, 'protocol_generated.dart'))
+      .writeAsStringSync(_generatedFileHeader + output);
+}
+
+const _generatedFileHeader = '''
+// 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.
+
+// This file has been automatically generated. Please do not edit it manually.
+// To regenerate the file, use the script
+// "pkg/analysis_server/tool/lsp_spec/generate_all.dart".
+
+import 'dart:core' hide deprecated;
+import 'dart:core' as core show deprecated;
+import 'package:analysis_server/lsp_protocol/protocol_special.dart';
+
+''';
+
+final Uri specUri = Uri.parse(
+    'https://raw.githubusercontent.com/Microsoft/language-server-protocol/gh-pages/specification.md');
+
+Future<String> fetchSpec() async {
+  final resp = await http.get(specUri);
+  return resp.body;
+}
+
+/// Fabricates types for things that don't parse well from the TS spec,
+/// such as anonymous types:
+///     type MarkedString = string | { language: string; value: string };
+List<ApiItem> _getSpecialCaseTypes() {
+  return [
+    // For MarkedString, we drop the string-only version since we can always
+    // supply a language and it makes the type a little simpler.
+    new Interface('MarkedString', null, [], [
+      new Field('language', null, ['string'], false, false),
+      new Field('value', null, ['string'], false, false)
+    ])
+  ];
+}
diff --git a/pkg/analysis_server/tool/lsp_spec/markdown.dart b/pkg/analysis_server/tool/lsp_spec/markdown.dart
new file mode 100644
index 0000000..ae99df1
--- /dev/null
+++ b/pkg/analysis_server/tool/lsp_spec/markdown.dart
@@ -0,0 +1,15 @@
+// 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.
+
+final _typeScriptBlockPattern =
+    new RegExp(r'\B```typescript([\S\s]*?)\n```', multiLine: true);
+
+/// Extracts fenced code blocks that are explicitly marked as TypeScript from a
+/// markdown document.
+List<String> extractTypeScriptBlocks(String text) {
+  return _typeScriptBlockPattern
+      .allMatches(text)
+      .map((m) => m.group(1).trim())
+      .toList();
+}
diff --git a/pkg/analysis_server/tool/lsp_spec/typescript.dart b/pkg/analysis_server/tool/lsp_spec/typescript.dart
new file mode 100644
index 0000000..017c666
--- /dev/null
+++ b/pkg/analysis_server/tool/lsp_spec/typescript.dart
@@ -0,0 +1,313 @@
+// 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.
+
+// TODO(dantup): Regex seemed like a good choice when parsing the first few...
+// maybe it's not so great now. We should parse this properly if it turns out
+// there are issues with what we have here.
+const String _blockBody = r'\{([\s\S]*?)\s*\n\s*\}';
+const String _comment = r'(?:\/\*\*((?:[\S\s](?!\*\/))+?)\s\*\/)?\s*';
+
+List<ApiItem> extractAllTypes(List<String> code) {
+  return extractTypes(code.join('\n'));
+}
+
+List<ApiItem> extractTypes(String code) {
+  final types = ApiItem.extractFrom(code);
+  _removeUnwantedTypes(types);
+  return types;
+}
+
+String _cleanComment(String comment) {
+  if (comment == null) {
+    return null;
+  }
+  final _commentLinePrefixes = new RegExp(r'\n\s*\* ?');
+  final _nonConcurrentNewlines = new RegExp(r'\n(?![\n\s\-*])');
+  final _newLinesThatRequireReinserting = new RegExp(r'\n (\w)');
+  // Remove any Windows newlines from the source.
+  comment = comment.replaceAll('\r', '');
+  // Remove the * prefixes.
+  comment = comment.replaceAll(_commentLinePrefixes, '\n');
+  // Remove and newlines that look like wrapped text.
+  comment = comment.replaceAll(_nonConcurrentNewlines, ' ');
+  // The above will remove one of the newlines when there are two, so we need
+  // to re-insert newlines for any block that starts immediately after a newline.
+  comment = comment.replaceAllMapped(
+      _newLinesThatRequireReinserting, (m) => '\n\n${m.group(1)}');
+  return comment.trim();
+}
+
+/// Fixes up some enum types that are not as specific as they could be in the
+/// spec. For example, Diagnostic.severity is typed "number" but can be mapped
+/// to the DiagnosticSeverity enum class.
+String _getImprovedType(String interfaceName, String fieldName) {
+  const Map<String, Map<String, String>> _improvedTypeMappings = {
+    "Diagnostic": {
+      "severity": "DiagnosticSeverity",
+    },
+    "TextDocumentSyncOptions": {
+      "change": "TextDocumentSyncKind",
+    },
+    "FileSystemWatcher": {
+      "kind": "WatchKind",
+    },
+    "CompletionItem": {
+      "kind": "CompletionItemKind",
+    },
+    "DocumentHighlight": {
+      "kind": "DocumentHighlightKind",
+    },
+    "FoldingRange": {
+      "kind": "FoldingRangeKind",
+    },
+  };
+
+  final interface = _improvedTypeMappings[interfaceName];
+
+  return interface != null ? interface[fieldName] : null;
+}
+
+List<String> _getSpecialBaseClasses(String name) {
+  const fileOperationTypes = [
+    'TextDocumentEdit',
+    'CreateFile',
+    'RenameFile',
+    'DeleteFile'
+  ];
+  if (fileOperationTypes.contains(name)) {
+    return ['FileOperation'];
+  } else {
+    return [];
+  }
+}
+
+List<String> _parseTypes(String baseTypes, String sep) {
+  // Special case for a single complicated type we can't parse easily...
+  if (baseTypes ==
+      '(TextDocumentEdit[] | (TextDocumentEdit | CreateFile | RenameFile | DeleteFile)[])') {
+    return ['FileOperation[]'];
+  }
+  return baseTypes?.split(sep)?.map((t) => t.trim())?.toList() ?? [];
+}
+
+/// Removes types that are in the spec that we don't want.
+void _removeUnwantedTypes(List<ApiItem> types) {
+  // These types are not used for v3.0 (Feb 2017) and by dropping them we don't
+  // have to handle any cases where both a namespace and interfaces are declared
+  // with the same name.
+  types.removeWhere((item) => item.name == 'InitializeError');
+}
+
+/// Base class for Interface, Field, Constant, etc. parsed from the LSP spec.
+abstract class ApiItem {
+  String name, comment;
+  bool isDeprecated;
+  ApiItem(this.name, String comment)
+      : comment = _cleanComment(comment),
+        isDeprecated = comment?.contains('@deprecated') ?? false;
+
+  static List<ApiItem> extractFrom(String code) {
+    List<ApiItem> types = [];
+    types.addAll(Interface.extractFrom(code));
+    types.addAll(Namespace.extractFrom(code));
+    types.addAll(TypeAlias.extractFrom(code));
+    return types;
+  }
+}
+
+/// A Constant parsed from the LSP spec.
+class Const extends Member {
+  final String type, value;
+  Const(String name, String comment, this.type, this.value)
+      : super(name, comment);
+
+  static List<Const> extractFrom(String code) {
+    final RegExp _constPattern = new RegExp(_comment +
+        r'''(?:export\s+)?const\s+(\w+)(?::\s+([\w\[\]'".-]+?))?\s*=\s*([\w\[\]'".-]+)\s*(?:;|$)''');
+
+    final consts = _constPattern.allMatches(code).map((m) {
+      final String comment = m.group(1);
+      final String name = m.group(2);
+      final String type = m.group(3);
+      final String value = m.group(4);
+      return new Const(name, comment, type, value);
+    }).toList();
+    return consts;
+  }
+
+  static List<Const> extractFromEnumValue(String code) {
+    final RegExp _constPattern =
+        new RegExp(_comment + r'''(\w+)\s*=\s*([\w\[\]'".-]+)\s*(?:,|$)''');
+
+    final consts = _constPattern.allMatches(code).map((m) {
+      final String comment = m.group(1);
+      final String name = m.group(2);
+      final String value = m.group(3);
+      return new Const(name, comment, null, value);
+    }).toList();
+    return consts;
+  }
+}
+
+/// A Field for an Interface parsed from the LSP spec.
+class Field extends Member {
+  final List<String> types;
+  final bool allowsNull, allowsUndefined;
+  Field(String name, String comment, this.types, this.allowsNull,
+      this.allowsUndefined)
+      : super(name, comment);
+
+  static List<Field> extractFrom(String interfaceName, String code) {
+    final RegExp _fieldPattern = new RegExp(_comment +
+        r'([\w\[\]]+\??)\s*:\s*([\w\[\] \|\{\}\(\)<>:;]+)\s*(?:;|$)');
+
+    final fields = _fieldPattern.allMatches(code).where((m) {
+      // Skip over the indexer in FormattingOptions since we don't need this
+      // (for now) and it's complicated to represent.
+      if (m.group(0).contains('[key: string]: boolean | number | string;')) {
+        return false;
+      }
+      return true;
+    }).map((m) {
+      String comment = m.group(1);
+      String name = m.group(2);
+      String typesString = m.group(3).trim();
+      // Our regex may result in semicolons on the end...
+      // TODO(dantup): Fix this, or make a simple parser.
+      if (typesString.endsWith(';')) {
+        typesString = typesString.substring(0, typesString.length - 1);
+      }
+      // Some fields have weird comments like this in the spec:
+      //     {@link MessageType}
+      // These seem to be the correct type of the field, while the field is
+      // marked with number.
+      if (comment != null) {
+        final RegExp _linkTypePattern = new RegExp(r'See \{@link (\w+)\}\.?');
+        final linkTypeMatch = _linkTypePattern.firstMatch(comment);
+        if (linkTypeMatch != null) {
+          typesString = linkTypeMatch.group(1);
+          comment = comment.replaceAll(_linkTypePattern, '');
+        }
+      }
+      List<String> types = _parseTypes(typesString, '|');
+      final bool allowsNull = types.contains('null');
+      if (allowsNull) {
+        types.remove('null');
+      }
+      final bool allowsUndefined = name.endsWith('?');
+      if (allowsUndefined) {
+        name = name.substring(0, name.length - 1);
+      }
+      // Perform simple type improvements for enums values that are typed as
+      // num/string in the spec but are enums.
+      // the spec.
+      if (types.length == 1) {
+        types[0] = _getImprovedType(interfaceName, name) ?? types[0];
+      }
+      return new Field(name, comment, types, allowsNull, allowsUndefined);
+    }).toList();
+    return fields;
+  }
+}
+
+/// An Interface parsed from the LSP spec.
+class Interface extends ApiItem {
+  final List<String> baseTypes;
+  final List<Member> members;
+  Interface(String name, String comment, this.baseTypes, this.members)
+      : super(name, comment);
+
+  static List<Interface> extractFrom(String code) {
+    final RegExp _interfacePattern = new RegExp(_comment +
+        r'(?:export\s+)?(?:interface|class)\s+([\w<>]+)(?:\s+extends\s+([\w, ]+?))?\s*' +
+        _blockBody);
+
+    final interfaces = _interfacePattern.allMatches(code).map((match) {
+      final String comment = match.group(1);
+      final String name = match.group(2);
+      final List<String> baseTypes = _parseTypes(match.group(3), ',');
+      final String body = match.group(4);
+      final List<Member> members = Member.extractFrom(name, body);
+
+      // Add any special base classes we've added to simplify types.
+      baseTypes.addAll(_getSpecialBaseClasses(name));
+
+      return new Interface(name, comment, baseTypes, members);
+    }).toList();
+    return interfaces;
+  }
+}
+
+/// A Field or Constant parsed from the LSP type.
+abstract class Member extends ApiItem {
+  Member(String name, String comment) : super(name, comment);
+
+  static List<Member> extractFrom(String interfaceName, String code) {
+    List<Member> members = [];
+    members.addAll(Field.extractFrom(interfaceName, code));
+    members.addAll(Const.extractFrom(code));
+    return members;
+  }
+}
+
+/// An Enum or Namsepace containing constants parsed from the LSP spec.
+class Namespace extends ApiItem {
+  final List<Member> members;
+  Namespace(String name, String comment, this.members) : super(name, comment);
+
+  static List<Namespace> extractFrom(String code) {
+    final enums = <Namespace>[];
+    enums.addAll(_extractNamespacesFrom(code));
+    enums.addAll(_extractEnumsFrom(code));
+    return enums;
+  }
+
+  static List<Namespace> _extractEnumsFrom(String code) {
+    final RegExp _namespacePattern =
+        new RegExp(_comment + r'(?:export\s+)?enum\s+(\w+)\s*' + _blockBody);
+
+    final namespaces = _namespacePattern.allMatches(code).map((match) {
+      final String comment = match.group(1);
+      final String name = match.group(2);
+      final String body = match.group(3);
+
+      final List<Member> members = Const.extractFromEnumValue(body);
+      return new Namespace(name, comment, members);
+    }).toList();
+    return namespaces;
+  }
+
+  static List<Namespace> _extractNamespacesFrom(String code) {
+    final RegExp _namespacePattern = new RegExp(
+        _comment + r'(?:export\s+)?namespace\s+(\w+)\s*' + _blockBody);
+
+    final namespaces = _namespacePattern.allMatches(code).map((match) {
+      final String comment = match.group(1);
+      final String name = match.group(2);
+      final String body = match.group(3);
+      final List<Member> members = Member.extractFrom(name, body);
+      return new Namespace(name, comment, members);
+    }).toList();
+    return namespaces;
+  }
+}
+
+/// A type alias parsed from the LSP spec.
+class TypeAlias extends ApiItem {
+  final String baseType;
+  TypeAlias(name, comment, this.baseType) : super(name, comment);
+
+  static List<TypeAlias> extractFrom(String code) {
+    final RegExp _typeAliasPattern =
+        new RegExp(_comment + r'type\s+([\w]+)\s+=\s+([\w\[\]]+)\s*;');
+
+    final typeAliases = _typeAliasPattern.allMatches(code).map((match) {
+      final String comment = match.group(1);
+      final String name = match.group(2);
+      final String baseType = match.group(3);
+      return new TypeAlias(name, comment, baseType);
+    }).toList();
+    return typeAliases;
+  }
+}
diff --git a/pkg/analysis_server/tool/spec/codegen_java.dart b/pkg/analysis_server/tool/spec/codegen_java.dart
index 6b29f65..d1e02b4 100644
--- a/pkg/analysis_server/tool/spec/codegen_java.dart
+++ b/pkg/analysis_server/tool/spec/codegen_java.dart
@@ -89,7 +89,7 @@
   bool isDeclaredInSpec(TypeDecl type) {
 //    TypeReference resolvedType = super.resolveTypeReferenceChain(type);
 //    if(resolvedType is TypeObject) {
-//      return truye;
+//      return true;
 //    }
     if (type is TypeReference) {
       return api.types.containsKey(type.typeName) && javaType(type) != 'String';
diff --git a/pkg/analysis_server/tool/spec/generated/java/AnalysisServer.java b/pkg/analysis_server/tool/spec/generated/java/AnalysisServer.java
index 8ef1779..ae85d07 100644
--- a/pkg/analysis_server/tool/spec/generated/java/AnalysisServer.java
+++ b/pkg/analysis_server/tool/spec/generated/java/AnalysisServer.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package com.google.dart.server.generated;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AddContentOverlay.java b/pkg/analysis_server/tool/spec/generated/java/types/AddContentOverlay.java
index f41ac9a..e3fad08 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AddContentOverlay.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AddContentOverlay.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisError.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisError.java
index c65d0c9..d4affbc 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisError.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisError.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorFixes.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorFixes.java
index b6aef1f..78cc51f 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorFixes.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorFixes.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorSeverity.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorSeverity.java
index 79ae62f..96166f9 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorSeverity.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorSeverity.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorType.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorType.java
index eb45bf9..3c4d6d9 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorType.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisErrorType.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisOptions.java
index 1b706fc..8fb0076 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisService.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisService.java
index 275ecc0..3076de6 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisService.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisService.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisStatus.java b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisStatus.java
index 35b8fb6..c1dfdc9 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/AnalysisStatus.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/AnalysisStatus.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ChangeContentOverlay.java b/pkg/analysis_server/tool/spec/generated/java/types/ChangeContentOverlay.java
index 935bc89..86784d9 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ChangeContentOverlay.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ChangeContentOverlay.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ClosingLabel.java b/pkg/analysis_server/tool/spec/generated/java/types/ClosingLabel.java
index 2ac083a..75506c0 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ClosingLabel.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ClosingLabel.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestion.java b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestion.java
index 582d655..073d802 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestion.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestion.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestionKind.java b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestionKind.java
index 84048b8..b94893d 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestionKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/CompletionSuggestionKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ContextData.java b/pkg/analysis_server/tool/spec/generated/java/types/ContextData.java
index b868e49..c094e21 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ContextData.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ContextData.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Element.java b/pkg/analysis_server/tool/spec/generated/java/types/Element.java
index 97dbd1e..d1cfc65 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/Element.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Element.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ElementDeclaration.java b/pkg/analysis_server/tool/spec/generated/java/types/ElementDeclaration.java
index 736531f..47b4534 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ElementDeclaration.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ElementDeclaration.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java b/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java
index 3991c56..17fe527 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExecutableFile.java b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableFile.java
index 21d9c77..00ee0b1 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExecutableFile.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableFile.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExecutableKind.java b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableKind.java
index d81f953..0882e91 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExecutableKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExecutableKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExecutionService.java b/pkg/analysis_server/tool/spec/generated/java/types/ExecutionService.java
index 4e988ac..1a6e868 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExecutionService.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExecutionService.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableFeedback.java
index 3fb0861..6cd016e 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableFeedback.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableFeedback.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableOptions.java
index 9358b99..f7e951c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractLocalVariableOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodFeedback.java
index 0fb1cab..0a0125c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodFeedback.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodFeedback.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodOptions.java
index c2e1673..a6127cfe 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractMethodOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetFeedback.java
index e429a61..720c686 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetFeedback.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetFeedback.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetOptions.java
index 0a4ea99..d526b78 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ExtractWidgetOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FileKind.java b/pkg/analysis_server/tool/spec/generated/java/types/FileKind.java
index 4d944ad..b282ce8 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/FileKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FileKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutline.java b/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutline.java
index 4d186fdf..9bc666b 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutline.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutline.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineAttribute.java b/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineAttribute.java
index b0dd387..b18dbe9 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineAttribute.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineAttribute.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineKind.java b/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineKind.java
index 787dde2..b083a9d 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FlutterOutlineKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FlutterService.java b/pkg/analysis_server/tool/spec/generated/java/types/FlutterService.java
index 1420831..cc71a7c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/FlutterService.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FlutterService.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FoldingKind.java b/pkg/analysis_server/tool/spec/generated/java/types/FoldingKind.java
index 161aa76..d30381c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/FoldingKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FoldingKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/FoldingRegion.java b/pkg/analysis_server/tool/spec/generated/java/types/FoldingRegion.java
index 974a91e..8cce15c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/FoldingRegion.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/FoldingRegion.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/GeneralAnalysisService.java b/pkg/analysis_server/tool/spec/generated/java/types/GeneralAnalysisService.java
index d7574d7..d3ac75e 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/GeneralAnalysisService.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/GeneralAnalysisService.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegion.java b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegion.java
index 5c0148a..8ea3562 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegion.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegion.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegionType.java b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegionType.java
index 283cc1c..4ae12e2 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegionType.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/HighlightRegionType.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/HoverInformation.java b/pkg/analysis_server/tool/spec/generated/java/types/HoverInformation.java
index 005de45..a860fd2 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/HoverInformation.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/HoverInformation.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ImplementedClass.java b/pkg/analysis_server/tool/spec/generated/java/types/ImplementedClass.java
index d94fe3d..54505e1 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ImplementedClass.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ImplementedClass.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ImplementedMember.java b/pkg/analysis_server/tool/spec/generated/java/types/ImplementedMember.java
index 9a6be8a..64fab48 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ImplementedMember.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ImplementedMember.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ImportedElements.java b/pkg/analysis_server/tool/spec/generated/java/types/ImportedElements.java
index 09352e6..afa9e17 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ImportedElements.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ImportedElements.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/InlineLocalVariableFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/InlineLocalVariableFeedback.java
index 58dc75d..13f871c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/InlineLocalVariableFeedback.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/InlineLocalVariableFeedback.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodFeedback.java
index 01a6506..c9cd093 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodFeedback.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodFeedback.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodOptions.java
index 6601e8a..8f1619d 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/InlineMethodOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/KytheEntry.java b/pkg/analysis_server/tool/spec/generated/java/types/KytheEntry.java
index 1665860..76f9a30 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/KytheEntry.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/KytheEntry.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/KytheVName.java b/pkg/analysis_server/tool/spec/generated/java/types/KytheVName.java
index b9180a1..d9e6e62 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/KytheVName.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/KytheVName.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditGroup.java b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditGroup.java
index 736679f..dacc0e1 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditGroup.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditGroup.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestion.java b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestion.java
index 1cad088..fe31f3a 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestion.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestion.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestionKind.java b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestionKind.java
index 32ab8c9..791789a 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestionKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/LinkedEditSuggestionKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Location.java b/pkg/analysis_server/tool/spec/generated/java/types/Location.java
index 96316ce..dce3fb7 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/Location.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Location.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/MoveFileOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/MoveFileOptions.java
index 47dc947..29c172a 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/MoveFileOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/MoveFileOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/NavigationRegion.java b/pkg/analysis_server/tool/spec/generated/java/types/NavigationRegion.java
index 7f8bf03..6b4a202 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/NavigationRegion.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/NavigationRegion.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/NavigationTarget.java b/pkg/analysis_server/tool/spec/generated/java/types/NavigationTarget.java
index 383427e..d2a8fb8 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/NavigationTarget.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/NavigationTarget.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Occurrences.java b/pkg/analysis_server/tool/spec/generated/java/types/Occurrences.java
index b0e4e3d..e971c4c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/Occurrences.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Occurrences.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Outline.java b/pkg/analysis_server/tool/spec/generated/java/types/Outline.java
index 347dd18..658a494 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/Outline.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Outline.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/OverriddenMember.java b/pkg/analysis_server/tool/spec/generated/java/types/OverriddenMember.java
index 73f9a60..052a3e6 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/OverriddenMember.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/OverriddenMember.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/OverrideMember.java b/pkg/analysis_server/tool/spec/generated/java/types/OverrideMember.java
index b4700c8..ca395c6 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/OverrideMember.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/OverrideMember.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ParameterInfo.java b/pkg/analysis_server/tool/spec/generated/java/types/ParameterInfo.java
index 9109efa..7855e12 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ParameterInfo.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ParameterInfo.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ParameterKind.java b/pkg/analysis_server/tool/spec/generated/java/types/ParameterKind.java
index 3440446..4073993 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ParameterKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ParameterKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/Position.java b/pkg/analysis_server/tool/spec/generated/java/types/Position.java
index 8e20368..349ec6a 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/Position.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/Position.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/PostfixTemplateDescriptor.java b/pkg/analysis_server/tool/spec/generated/java/types/PostfixTemplateDescriptor.java
index 2cd8bca..7b85f64 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/PostfixTemplateDescriptor.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/PostfixTemplateDescriptor.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/PubStatus.java b/pkg/analysis_server/tool/spec/generated/java/types/PubStatus.java
index 5eef429..0d28027 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/PubStatus.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/PubStatus.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringFeedback.java
index d826a54..13d2bbd 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringFeedback.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringFeedback.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringKind.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringKind.java
index 65ba515..c2d9a9c 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameter.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameter.java
index 0766bf8..e69bccf 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameter.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameter.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameterKind.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameterKind.java
index 707cb36..d7025cf 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameterKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringMethodParameterKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringOptions.java
index 8a6ab7a..1a352f7 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblem.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblem.java
index efdd0d2..f0ee4b1 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblem.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblem.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblemSeverity.java b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblemSeverity.java
index 8366b6d..684f09f 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblemSeverity.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RefactoringProblemSeverity.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RemoveContentOverlay.java b/pkg/analysis_server/tool/spec/generated/java/types/RemoveContentOverlay.java
index 4930a8c..8b53cbd 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RemoveContentOverlay.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RemoveContentOverlay.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RenameFeedback.java b/pkg/analysis_server/tool/spec/generated/java/types/RenameFeedback.java
index b97a729..72b58a1 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RenameFeedback.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RenameFeedback.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RenameOptions.java b/pkg/analysis_server/tool/spec/generated/java/types/RenameOptions.java
index dbd110e..a9a63a5 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RenameOptions.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RenameOptions.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RequestError.java b/pkg/analysis_server/tool/spec/generated/java/types/RequestError.java
index c25c38a..6d9eb4d 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RequestError.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RequestError.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RequestErrorCode.java b/pkg/analysis_server/tool/spec/generated/java/types/RequestErrorCode.java
index 85f526d..b212bf7 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RequestErrorCode.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RequestErrorCode.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpression.java b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpression.java
index c0cc239..eb6b0f0 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpression.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpression.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionType.java b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionType.java
index c31710a..5645384 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionType.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionType.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionTypeKind.java b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionTypeKind.java
index c544c9f..6f74132 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionTypeKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionExpressionTypeKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionVariable.java b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionVariable.java
index 05e9040..62a0fb5 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionVariable.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/RuntimeCompletionVariable.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SearchResult.java b/pkg/analysis_server/tool/spec/generated/java/types/SearchResult.java
index ac4641f..f741485 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/SearchResult.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SearchResult.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SearchResultKind.java b/pkg/analysis_server/tool/spec/generated/java/types/SearchResultKind.java
index fdb3d41..fe02fb5 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/SearchResultKind.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SearchResultKind.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java b/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
index 5c5a823..7680299 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/ServerService.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SourceChange.java b/pkg/analysis_server/tool/spec/generated/java/types/SourceChange.java
index ff2d906..bddcbc9 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/SourceChange.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SourceChange.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SourceEdit.java b/pkg/analysis_server/tool/spec/generated/java/types/SourceEdit.java
index dd052d2..f5a0f86 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/SourceEdit.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SourceEdit.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/SourceFileEdit.java b/pkg/analysis_server/tool/spec/generated/java/types/SourceFileEdit.java
index 7792fe5..fdc0fbf 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/SourceFileEdit.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/SourceFileEdit.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/generated/java/types/TypeHierarchyItem.java b/pkg/analysis_server/tool/spec/generated/java/types/TypeHierarchyItem.java
index 3a7a821..6ae2f59 100644
--- a/pkg/analysis_server/tool/spec/generated/java/types/TypeHierarchyItem.java
+++ b/pkg/analysis_server/tool/spec/generated/java/types/TypeHierarchyItem.java
@@ -1,9 +1,9 @@
 /*
- * Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+ * 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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */
 package org.dartlang.analysis.server.protocol;
diff --git a/pkg/analysis_server/tool/spec/spec_input.html b/pkg/analysis_server/tool/spec/spec_input.html
index 31d6d51..c8f9864 100644
--- a/pkg/analysis_server/tool/spec/spec_input.html
+++ b/pkg/analysis_server/tool/spec/spec_input.html
@@ -695,6 +695,12 @@
         <ref>String</ref>
         <p>The name of the function being invoked at the given offset.</p>
       </field>
+      <field name="parameters">
+        <list>
+          <ref>ParameterInfo</ref>
+        </list>
+        <p>A list of information about each of the parameters of the function being invoked.</p>
+      </field>
       <field name="dartdoc" optional="true">
         <ref>String</ref>
         <p>
@@ -705,12 +711,6 @@
           referenced element, or if the element has no dartdoc.
         </p>
       </field>
-      <field name="parameters">
-        <list>
-          <ref>ParameterInfo</ref>
-        </list>
-        <p>A list of information about each of the parameters of the function being invoked.</p>
-      </field>
     </result>
   </request>
   <request method="reanalyze">
diff --git a/pkg/analysis_server_client/pubspec.yaml b/pkg/analysis_server_client/pubspec.yaml
index bb7ca3d..51661db 100644
--- a/pkg/analysis_server_client/pubspec.yaml
+++ b/pkg/analysis_server_client/pubspec.yaml
@@ -7,6 +7,6 @@
   facilitates communication to and from the server.
 homepage: http://github.com/dart-lang/sdk/pkg/analysis_server_client
 dev_dependencies:
-  test: ">=0.12.0 <0.13.0"
+  test: ^1.3.4
 environment:
   sdk: ">=1.0.0 < 2.0.0-dev.infinity"
diff --git a/pkg/analyzer/doc/tutorial/analysis.md b/pkg/analyzer/doc/tutorial/analysis.md
new file mode 100644
index 0000000..a44d6a5
--- /dev/null
+++ b/pkg/analyzer/doc/tutorial/analysis.md
@@ -0,0 +1,110 @@
+# Performing Analysis
+
+This document explains how to use the analyzer package to analyze Dart code.
+
+## Configuring the Contexts
+
+If you want to use the analyzer package to analyze one or more files, then you
+need to start by configuring the analysis context(s) in which analysis is to be
+performed. An analysis context tells the analyzer how to perform analysis, and
+includes such information as
+
+- how to resolve `package:` URIs,
+
+- which defined variables are defined, if any, and what their value is, and
+
+- any configuration information included in an analysis options file.
+
+Fortunately, the analyzer package can do most of the work for you. All you need
+to do is create an instance of `AnalysisContextCollection`, giving it the paths
+to all of the files, or directories containing files, that you want to be able
+to analyze.
+
+```dart
+main() {
+  List<String> includedPaths = <String>[/* ... */];
+  AnalysisContextCollection collection =
+      new AnalysisContextCollection(includedPaths);
+  analyzeSomeFiles(collection, includedPaths);
+}
+```
+
+The collection will create one or more analysis contexts that can be used to
+correctly analyze all of the files and directories that were specified.
+
+## Analyzing Individual Files
+
+You might already know the paths to the files that you want to analyze. This
+would be the case, for example, if you're analyzing a single file (and hence
+created a list of length 1 when you created the collection). If that's the case,
+then you can ask the collection for the context associated with each of those
+files. If you have more than one file to analyze, don't assume that all of the
+files will be analyzed by the same context.
+
+For example, if you have defined the collection as above, you could perform
+analysis with the following:
+
+```dart
+analyzeSomeFiles(
+    AnalysisContextCollection collection, List<String> includedPaths) {
+  for (String path in includedPaths) {
+    AnalysisContext context = collection.contextFor(path);
+    analyzeSingleFile(context, path);
+  }
+}
+```
+
+## Analyzing Multiple Files
+
+If you don't know all of the files that need to be analyzed, you can analyze
+all of the files in the included files and directories by using a slightly
+different API:
+
+```dart
+analyzeAllFiles(AnalysisContextCollection collection) {
+  for (AnalysisContext context in collection.contexts) {
+    for (String path in context.contextRoot.analyzedFiles()) {
+      analyzeSingleFile(context, path);
+    }
+  }
+}
+```
+
+The files returned this way will include _all_ of the files in all of the
+directories, including those that are not '.dart' files, except for those files
+that have explicitly been excluded or that are in directories that have been
+explicitly excluded. If you're only interested in analyzing `.dart` files, then
+you would need to manually filter out other files.
+
+## Accessing Analysis Results
+
+Analysis contexts do not provide direct access to analysis results. Instead, you
+need to ask the context for an analysis session and then ask the session to
+perform the analysis.
+
+```dart
+analyzeSingleFile(AnalysisContext context, String path) {
+  AnalysisSession session = context.currentSession;
+  // ...
+}
+```
+
+The session either provides the requested results or throws an exception if the
+results that would have been returned would have been inconsistent with other
+results returned by the same session.
+
+While this might seem odd, the API was designed this way to provide safety when
+performing analysis in an environment in which the state of the files being
+analyzed can change over time.
+
+If you are analyzing multiple files and no exception is thrown, then you know
+that the results are all consistent with each other. If an exception is thrown,
+and consistency is important, then you can request the new current session from
+the context and re-request all of the needed analyses.
+
+Several of the methods on `AnalysisSession` are discussed in the sections that
+describe the results that those methods are used to access, including the
+tutorials on [ASTs][ast] and [elements][element].
+
+[ast]: ast.md
+[element]: element.md
diff --git a/pkg/analyzer/doc/tutorial/ast.md b/pkg/analyzer/doc/tutorial/ast.md
new file mode 100644
index 0000000..843728b
--- /dev/null
+++ b/pkg/analyzer/doc/tutorial/ast.md
@@ -0,0 +1,185 @@
+# The AST
+
+An AST (abstract syntax tree) is a representation of the syntactic (or lexical)
+structure of Dart code. The semantic structure of the code is modeled by the
+[element][element] and [type][type] models.
+
+## The Structure of an AST
+
+An AST is composed of nodes (instances of `AstNode`) arranged as a tree. That
+is, each node can have zero or more children, each of which is also a node, and
+every node other than the root node has exactly one parent.
+
+The root of the tree is typically a `CompilationUnit`. Compilation units have
+children representing language constructs such as import directives and class
+declarations. Class declarations have children representing, among other things,
+each of the members of the class. The structure of the nodes is similar to, but
+not identical to, the Dart language grammar.
+
+As implied above, there are subclasses of `AstNode` for each production in the
+grammar. The subclasses are defined in `package:analyzer/dart/ast/ast.dart`.
+
+Every class of node provides access to its parent and children through getters.
+For example, the class `BinaryExpression` defines the getters `parent`,
+`leftOperand`, and `rightOperand`. It also provides getters for the tokens that
+are a part of the construct (but not part of a child construct). In a binary
+expression, for example, there is a getter to access the `operator`.
+
+Every class of node and every token carries position information. You can ask
+for the character `offset` of the beginning of the entity from the start of the
+containing file, as well as the character `length`. For AST nodes, the offset
+is the offset of this first token in the structure and the length includes the
+end of the last token in the structure. Any whitespace before the first token or
+after the last token is considered to be part of a parent node.
+
+## The States of an AST
+
+An AST can be in either of two states: unresolved or resolved. An unresolved
+AST is one in which none of the nodes has any resolution information associated
+with it. In an unresolved AST, the getters that access resolution information
+will return `null`. A resolved AST is one in which all of the nodes have
+resolution information associated with them.
+
+So what do we mean by "resolution information"? Resolution is the process of
+associating [element][element] and [type][type] information with an AST. These
+topics are discussed in separate sections.
+
+## Getting a Compilation Unit
+
+If you have followed the steps in [Performing Analysis][analysis], and you want
+to get the compilation unit for a file at a known `path`, then you can ask the
+analysis session for an AST.
+
+If you need an unresolved AST, then you can use either a synchronous or
+asynchronous method to access the AST:
+
+```dart
+main() async {
+  ParseResult result = await session.getParsedAst(path);
+  CompilationUnit unit = result.unit;
+}
+```
+
+or
+
+```dart
+main() {
+  ParseResult result = session.getParsedAstSync(path);
+  CompilationUnit unit = result.unit;
+}
+```
+
+If you need a resolved AST, then you need to use the following asynchronous
+method to access it:
+
+```dart
+main() async {
+  ResolveResult result = await session.getResolvedAst(path);
+  CompilationUnit unit = result.unit;
+}
+```
+
+## Traversing the Structure
+
+There are two ways to traverse the structure of an AST: getters and visitors.
+
+### Getters
+
+Every node defines getters for accessing the parent and the children of that
+node. Those getters can be used to traverse the structure, and are often the
+most efficient way of doing so. For example, if you wanted to write a utility to
+print the names of all of the members of each class in a given compilation unit,
+it might look something like this:
+
+```dart
+void printMembers(CompilationUnit unit) {
+  for (CompilationUnitMember unitMember in unit.declarations) {
+    if (unitMember is ClassDeclaration) {
+      print(unitMember.name.name);
+      for (ClassMember classMember in unitMember.members) {
+        if (classMember is MethodDeclaration) {
+          print('  ${classMember.name}');
+        } else if (classMember is FieldDeclaration) {
+          for (VariableDeclaration field in classMember.fields.variables) {
+            print('  ${field.name.name}');
+          }
+        } else if (classMember is ConstructorDeclaration) {
+          if (classMember.name == null) {
+            print('  ${unitMember.name.name}');
+          } else {
+            print('  ${unitMember.name.name}.${classMember.name.name}');
+          }
+        }
+      }
+    }
+  }
+}
+```
+
+### Visitors
+
+Getters work well for cases like the above because compilation units cannot be
+nested inside other compilation units, classes cannot be nested inside other
+classes, etc. But when you're dealing with a structure that can be nested inside
+similar structures (such as expressions, statements, and even functions), then
+nested loops don't work very well. For those cases, the analyzer package
+provides a visitor pattern.
+
+There is a single visitor API, defined by the abstract class `AstVisitor`. It
+defines a separate visit method for each class of AST node. For example, the
+method `visitClassDeclaration` is used to visit a `ClassDeclaration`. If you
+ask an AST node to accept a visitor, it will invoke the corresponding method on
+the visitor interface.
+
+If you want to define a visitor, you'll probably want to subclass one of the
+concrete implementations of `AstVisitor`. The concrete subclasses are defined in
+`package:analyzer/dart/ast/visitor.dart`. A couple of the most useful include
+- `SimpleAstVisitor` which implements every visit method by doing nothing,
+- `RecursiveAstVisitor` which will cause every node in a structure to be
+  visited, and
+- `GeneralizingAstVisitor` which makes it easy to visit general kinds of nodes,
+  such as visiting any statement, or any expression.
+
+The one time you might want to implement `AstVisitor` rather than to extend one
+of the concrete subclasses is if it's critical that you implement _every_ visit
+method. The downside of doing this is that every time the AST structure is
+updated because of an enhancement to the language, your code will need to be
+updated to implement the newly added visit methods.
+
+As an example, let's assume you want to write some code to count the number of
+`if` statements in a given structure. You need to visit every node, because you
+can't know ahead of time where the `if` statements will be located, but there is
+one specific class of node that you need to visit, so you don't need to handle
+the general "groups" of nodes, so you'd want to create a subclass of
+`RecursiveAstVisitor`.
+
+```dart
+class IfCounter extends RecursiveAstVisitor<void> {
+  int ifCount = 0;
+
+  @override
+  void visitIfStatement(IfStatement node) {
+    ifCount++;
+    super.visitIfStatement(node);
+  }
+}
+```
+
+## Differences From the Specification
+
+Earlier we said that the structure of the tree is similar but not identical to
+the grammar of the language. In addition to some minor differences, there is
+one significant difference you should be aware of: the AST can express invalid
+code. This is intentional. It allows the analyzer to recover better in the
+presence of invalid code.
+
+As an example, every function has a (possibly empty) list of parameters
+associated with it. In Dart, parameters can either be positional or named, and
+all of the positional parameters must be listed before the named parameters. But
+in the AST, the parameters are allowed to occur in any order. The consequence of
+this is that any code that traverses function parameters needs to be prepared
+for them to occur in any order.
+
+[analysis]: analysis.md
+[element]: element.md
+[type]: type.md
diff --git a/pkg/analyzer/doc/tutorial/element.md b/pkg/analyzer/doc/tutorial/element.md
new file mode 100644
index 0000000..88db476
--- /dev/null
+++ b/pkg/analyzer/doc/tutorial/element.md
@@ -0,0 +1,153 @@
+# The Element Model
+
+The element model, together with the [type][type] model, describes the semantic
+(as opposed to syntactic) structure of Dart code. The syntactic structure of the
+code is modeled by the [AST][ast].
+
+Generally speaking, an element represents something that is declared in the
+code, such as a class, method, or variable. Elements can be explicitly declared,
+such as the class defined by a class declaration, or implicitly declared, such
+as the default constructor defined for classes that do not have any explicit
+constructor declarations. Elements that are implicitly declared are referred to
+as _synthetic_ elements.
+
+There are a few elements that represent entities that are not declared. For
+example, there is an element representing a compilation unit (`.dart` file) and
+another representing a library.
+
+## The Structure of the Element Model
+
+Elements are organized in a tree structure in which the children of an element
+are the elements that are logically (and often syntactically) part of the
+declaration of the parent. For example, the elements representing the methods
+and fields in a class are children of the element representing the class.
+
+Every complete element structure is rooted by an instance of the class
+`LibraryElement`. A library element represents a single Dart library. Every
+library is defined by one or more compilation units (the library and all of its
+parts). The compilation units are represented by the class
+`CompilationUnitElement` and are children of the library that is defined by
+them. Each compilation unit can contain zero or more top-level declarations,
+such as classes, functions, and variables. Each of these is in turn
+represented as an element that is a child of the compilation unit. Classes
+contain methods and fields, methods can contain local variables, etc.
+
+The element model does not contain everything in the code, only those things
+that are declared by the code. For example, it does not include any
+representation of the statements in a method body, but if one of those
+statements declares a local variable then the local variable will be represented
+by an element.
+
+## Getting a Compilation Unit Element
+
+If you have followed the steps in [Performing Analysis][analysis], and you want
+to get the compilation unit element for a file at a known `path`, then you can
+ask the analysis session for the compilation unit representing that file.
+
+```dart
+analyzeSingleFile(AnalysisSession session, String path) async {
+  UnitElementResult result = await session.getUnitElement(path);
+  CompilationUnitElement element = result.element;
+}
+```
+
+(If you also need the resolved AST for the file, you can ask the session to
+`getResolvedAst`, and the returned result will have the library element for the
+library containing the compilation unit.)
+
+## Traversing the Structure
+
+There are two ways to traverse the structure of an AST: getters and visitors.
+
+### Getters
+
+Every element defines getters for accessing the parent and the children of that
+element. Those getters can be used to traverse the structure, and are often the
+most efficient way of doing so. For example, if you wanted to write a utility to
+print the names of all of the members of each class in a given compilation unit,
+it might look something like this:
+
+```dart
+void printMembers(CompilationUnitElement unitElement) {
+  for (ClassElement classElement in unitElement.types) {
+    print(classElement.name);
+    for (ConstructorElement constructorElement in classElement.constructors) {
+      if (!constructorElement.isSynthetic) {
+        if (constructorElement.name == null) {
+          print('  ${constructorElement.name}');
+        } else {
+          print('  ${classElement.name}.${constructorElement.name}');
+        }
+      }
+    }
+    for (FieldElement fieldElement in classElement.fields) {
+      if (!fieldElement.isSynthetic) {
+        print('  ${fieldElement.name}');
+      }
+    }
+    for (PropertyAccessorElement accessorElement in classElement.accessors) {
+      if (!accessorElement.isSynthetic) {
+        print('  ${accessorElement.name}');
+      }
+    }
+    for (MethodElement methodElement in classElement.methods) {
+      if (!methodElement.isSynthetic) {
+        print('  ${methodElement.name}');
+      }
+    }
+  }
+}
+```
+
+### Visitors
+
+Getters work well for most uses, but there might be times when it is easier to
+use a visitor pattern.
+
+Getters work well for cases like the above because compilation units cannot be
+nested inside other compilation units, classes cannot be nested inside other
+classes, etc. But when you're dealing with a structure that can be nested inside
+similar structures (such as functions), then nested loops don't work as well.
+For those cases, the analyzer package provides a visitor pattern.
+
+There is a single visitor API, defined by the abstract class `ElementVisitor`.
+It defines a separate visit method for each class of element. For example, the
+method `visitClassElement` is used to visit a `ClassElement`. If you ask an
+element to accept a visitor, it will invoke the corresponding method on the
+visitor interface.
+
+If you want to define a visitor, you'll probably want to subclass one of the
+concrete implementations of `ElementVisitor`. The concrete subclasses are
+defined in `package:analyzer/dart/element/visitor.dart`. A couple of the most
+useful include
+- `SimpleElementVisitor` which implements every visit method by doing nothing,
+- `RecursiveElementVisitor` which will cause every element in a structure to be
+  visited, and
+- `GeneralizingElementVisitor` which makes it easy to visit kinds of nodes, such
+  as visiting any executable element (method, function, accessor, or
+  constructor).
+
+As an example, let's assume you want to write some code to compute the largest
+number of parameters defined for any function or method in a given structure.
+You need to visit every element because functions can be nested inside
+functions. But because methods and functions are represented by different
+classes of elements, it would be useful to use a visitor that will generalize
+both to allow you to just visit executable elements (those that have
+parameters). Hence, you'd want to create a subclass of
+`GeneralizingElementVisitor`.
+
+```dart
+class ParameterCounter extends GeneralizingElementVisitor<void> {
+  int maxParameterCount = 0;
+
+  @override
+  void visitExecutableElement(ExecutableElement element) {
+    maxParameterCount = math.max(maxParameterCount, element.parameters.length);
+    super.visitExecutableElement(element);
+  }
+}
+```
+
+[analysis]: analysis.md
+[ast]: ast.md
+[type]: type.md
diff --git a/pkg/analyzer/doc/tutorial/introduction.md b/pkg/analyzer/doc/tutorial/introduction.md
new file mode 100644
index 0000000..3d07efe
--- /dev/null
+++ b/pkg/analyzer/doc/tutorial/introduction.md
@@ -0,0 +1,2 @@
+# Introduction
+
diff --git a/pkg/analyzer/doc/tutorial/tutorial.md b/pkg/analyzer/doc/tutorial/tutorial.md
new file mode 100644
index 0000000..aa9a3b2
--- /dev/null
+++ b/pkg/analyzer/doc/tutorial/tutorial.md
@@ -0,0 +1,29 @@
+# Analyzing Dart
+
+This is the table of contents for a set of tutorials that explain how to use the
+analyzer package to analyze Dart source code.
+
+## Pages
+
+The following is a list of the pages available in this tutorial.
+
+[Introduction][introduction] -
+What capabilities does the analyzer package support?
+
+[Performing Analysis][analysis]
+How to set up the objects used to analyze code.
+
+[The AST][ast]
+What is an AST?
+
+[The Element Model][element]
+What is the element model?
+
+[The Type Model][type]
+What is the type model?
+
+[analysis]: analysis.md
+[ast]: ast.md
+[element]: element.md
+[introduction]: introduction.md
+[type]: type.md
diff --git a/pkg/analyzer/doc/tutorial/type.md b/pkg/analyzer/doc/tutorial/type.md
new file mode 100644
index 0000000..1384082
--- /dev/null
+++ b/pkg/analyzer/doc/tutorial/type.md
@@ -0,0 +1,36 @@
+# The Type Model
+
+The type model represents the type information defined by the language
+specification.
+
+## Kinds of Types
+
+There are four classes of types, all of which are a subtype of the abstract
+class `DartType`.
+
+### Interface Types
+
+### Function Types
+
+### The Void Type
+
+### The Type Dynamic
+
+## Accessing Types
+
+There are two ways to get an instance of `DartType`: from the [AST][ast] and
+from the [element][element] model.
+
+In a resolved AST, every expression has a non-`null` `staticType`.
+
+Every element also has type information associated with it. Elements that define
+a type, such as a `ClassElement`, can return the type that they define. Elements
+that represent a function can return the `returnType` of the function as well as
+the `functionType` of the function. Elements that represent a variable (which
+includes fields and parameters) can return the explicitly or implicitly declared
+type of the variable.
+
+## Operations on Types
+
+[ast]: ast.md
+[element]: element.md
diff --git a/pkg/analyzer/lib/dart/ast/ast.dart b/pkg/analyzer/lib/dart/ast/ast.dart
index 320f97b..e58d973 100644
--- a/pkg/analyzer/lib/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/dart/ast/ast.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
@@ -34,8 +34,6 @@
  * the elements that they refer to and every expression in the AST will have a
  * type associated with it.
  */
-library analyzer.dart.ast.ast;
-
 import 'package:analyzer/dart/ast/syntactic_entity.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analyzer/lib/dart/ast/ast_factory.dart b/pkg/analyzer/lib/dart/ast/ast_factory.dart
index 492e8e3..5d46028 100644
--- a/pkg/analyzer/lib/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/dart/ast/ast_factory.dart
@@ -702,8 +702,9 @@
   /**
    * Returns a newly created instance creation expression.
    */
-  InstanceCreationExpression instanceCreationExpression(Token keyword,
-      ConstructorName constructorName, ArgumentList argumentList);
+  InstanceCreationExpression instanceCreationExpression(
+      Token keyword, ConstructorName constructorName, ArgumentList argumentList,
+      {TypeArgumentList typeArguments});
 
   /**
    * Returns a newly created integer literal.
diff --git a/pkg/analyzer/lib/dart/ast/syntactic_entity.dart b/pkg/analyzer/lib/dart/ast/syntactic_entity.dart
index 8d6d0dc..f32390f 100644
--- a/pkg/analyzer/lib/dart/ast/syntactic_entity.dart
+++ b/pkg/analyzer/lib/dart/ast/syntactic_entity.dart
@@ -1,7 +1,5 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.dart.ast.syntactic_entity;
-
 export 'package:front_end/src/base/syntactic_entity.dart' show SyntacticEntity;
diff --git a/pkg/analyzer/lib/dart/ast/token.dart b/pkg/analyzer/lib/dart/ast/token.dart
index a361c5ab..73e0562 100644
--- a/pkg/analyzer/lib/dart/ast/token.dart
+++ b/pkg/analyzer/lib/dart/ast/token.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
@@ -6,7 +6,5 @@
  * Defines the tokens that are produced by the scanner, used by the parser, and
  * referenced from the [AST structure](ast.dart).
  */
-library analyzer.dart.ast.token;
-
 export 'package:front_end/src/scanner/token.dart'
     show Keyword, Token, TokenType;
diff --git a/pkg/analyzer/lib/dart/ast/visitor.dart b/pkg/analyzer/lib/dart/ast/visitor.dart
index 836054d..6394b8b 100644
--- a/pkg/analyzer/lib/dart/ast/visitor.dart
+++ b/pkg/analyzer/lib/dart/ast/visitor.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
@@ -21,8 +21,6 @@
  * future changes to the AST structure. For example, the [RecursiveAstVisitor]
  * automates the process of visiting all of the descendants of a node.
  */
-library analyzer.dart.ast.visitor;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analyzer/lib/dart/constant/value.dart b/pkg/analyzer/lib/dart/constant/value.dart
index e268345..2d7ddda 100644
--- a/pkg/analyzer/lib/dart/constant/value.dart
+++ b/pkg/analyzer/lib/dart/constant/value.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
@@ -12,8 +12,6 @@
  * Instances of these constant values are accessed through the
  * [element model](../element/element.dart).
  */
-library analyzer.dart.constant.value;
-
 import 'package:analyzer/dart/element/type.dart';
 
 /**
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 7bd2f65..a282eb8 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -1045,6 +1045,9 @@
   @deprecated
   static const List<FieldElement> EMPTY_LIST = const <FieldElement>[];
 
+  /// Return `true` if this field was explicitly marked as being covariant.
+  bool get isCovariant;
+
   /// Return {@code true} if this element is an enum constant.
   bool get isEnumConstant;
 
@@ -1111,6 +1114,10 @@
   @override
   CompilationUnitElement get enclosingElement;
 
+  /// Return the generic function type element representing the generic function
+  /// type on the right side of the equals.
+  GenericFunctionTypeElement get function;
+
   @override
   TypeAlias computeNode();
 
@@ -1154,11 +1161,7 @@
 /// parameter.
 ///
 /// Clients may not extend, implement, or mix-in this class.
-abstract class GenericTypeAliasElement implements FunctionTypeAliasElement {
-  /// Return the generic function type element representing the generic function
-  /// type on the right side of the equals.
-  GenericFunctionTypeElement get function;
-}
+abstract class GenericTypeAliasElement implements FunctionTypeAliasElement {}
 
 /// A combinator that causes some of the names in a namespace to be hidden when
 /// being imported.
@@ -1628,6 +1631,13 @@
 ///
 /// Clients may not extend, implement or mix-in this class.
 abstract class TypeParameterizedElement implements Element {
+  /// If the element defines a type, indicates whether the type may safely
+  /// appear without explicit type parameters as the bounds of a type parameter
+  /// declaration.
+  ///
+  /// If the element does not define a type, returns `true`.
+  bool get isSimplyBounded;
+
   /// The type of this element, which will be a parameterized type.
   ParameterizedType get type;
 
diff --git a/pkg/analyzer/lib/dart/element/visitor.dart b/pkg/analyzer/lib/dart/element/visitor.dart
index dac2d23..fa3fa79 100644
--- a/pkg/analyzer/lib/dart/element/visitor.dart
+++ b/pkg/analyzer/lib/dart/element/visitor.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
@@ -22,8 +22,6 @@
  * [RecursiveElementVisitor] automates the process of visiting all of the
  * descendants of an element.
  */
-library analyzer.dart.element.visitor;
-
 import 'package:analyzer/dart/element/element.dart';
 
 /**
diff --git a/pkg/analyzer/lib/error/error.dart b/pkg/analyzer/lib/error/error.dart
index 39dc3ae..763bd2f 100644
--- a/pkg/analyzer/lib/error/error.dart
+++ b/pkg/analyzer/lib/error/error.dart
@@ -48,11 +48,13 @@
   AnalysisOptionsWarningCode.UNRECOGNIZED_ERROR_CODE,
   AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUE,
   AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUES,
+  AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITHOUT_VALUES,
   AnalysisOptionsWarningCode.UNSUPPORTED_VALUE,
   AnalysisOptionsWarningCode.SPEC_MODE_REMOVED,
   AnalysisOptionsHintCode.DEPRECATED_ANALYSIS_OPTIONS_FILE_NAME,
   AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
   AnalysisOptionsHintCode.STRONG_MODE_SETTING_DEPRECATED,
+  AnalysisOptionsHintCode.SUPER_MIXINS_SETTING_DEPRECATED,
   CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_FIELD_TYPE_MISMATCH,
   CheckedModeCompileTimeErrorCode.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH,
   CheckedModeCompileTimeErrorCode.CONST_EVAL_THROWS_EXCEPTION,
@@ -599,7 +601,6 @@
   StaticWarningCode.MAP_KEY_TYPE_NOT_ASSIGNABLE,
   StaticWarningCode.MAP_VALUE_TYPE_NOT_ASSIGNABLE,
   StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
-  StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE,
   StaticWarningCode.MISSING_ENUM_CONSTANT_IN_SWITCH,
   StaticWarningCode.MIXED_RETURN_TYPES,
   StaticWarningCode.NEW_WITH_ABSTRACT_CLASS,
diff --git a/pkg/analyzer/lib/error/listener.dart b/pkg/analyzer/lib/error/listener.dart
index 823b37d..eeef617 100644
--- a/pkg/analyzer/lib/error/listener.dart
+++ b/pkg/analyzer/lib/error/listener.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.error.listener;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart' show AstNode;
@@ -13,6 +11,7 @@
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:front_end/src/fasta/fasta_codes.dart' show Message;
 import 'package:source_span/source_span.dart';
 
 /**
@@ -163,6 +162,16 @@
   }
 
   /**
+   * Report an error with the given [errorCode] and [message]. The location of
+   * the error is specified by the given [offset] and [length].
+   */
+  void reportErrorMessage(
+      ErrorCode errorCode, int offset, int length, Message message) {
+    _errorListener.onError(new AnalysisError.forValues(
+        _source, offset, length, errorCode, message.message, message.tip));
+  }
+
+  /**
    * Report an error with the given [errorCode] and [arguments]. The [node] is
    * used to compute the location of the error. The arguments are expected to
    * contain two or more types. Convert the types into strings by using the
diff --git a/pkg/analyzer/lib/exception/exception.dart b/pkg/analyzer/lib/exception/exception.dart
index 876d432..e475c04 100644
--- a/pkg/analyzer/lib/exception/exception.dart
+++ b/pkg/analyzer/lib/exception/exception.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.exception.exception;
-
 /**
  * An exception that occurred during the analysis of one or more sources.
  */
diff --git a/pkg/analyzer/lib/file_system/memory_file_system.dart b/pkg/analyzer/lib/file_system/memory_file_system.dart
index 0bf9a34..5059dcd 100644
--- a/pkg/analyzer/lib/file_system/memory_file_system.dart
+++ b/pkg/analyzer/lib/file_system/memory_file_system.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.file_system.memory_file_system;
-
 import 'dart:async';
 import 'dart:collection';
 import 'dart:convert';
diff --git a/pkg/analyzer/lib/file_system/physical_file_system.dart b/pkg/analyzer/lib/file_system/physical_file_system.dart
index 818790b..966a100 100644
--- a/pkg/analyzer/lib/file_system/physical_file_system.dart
+++ b/pkg/analyzer/lib/file_system/physical_file_system.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.file_system.physical_file_system;
-
 import 'dart:async';
 import 'dart:core';
 import 'dart:io' as io;
diff --git a/pkg/analyzer/lib/instrumentation/file_instrumentation.dart b/pkg/analyzer/lib/instrumentation/file_instrumentation.dart
index 1d42dfa..2ac447f 100644
--- a/pkg/analyzer/lib/instrumentation/file_instrumentation.dart
+++ b/pkg/analyzer/lib/instrumentation/file_instrumentation.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.instrumentation.file_instrumentation;
-
 import 'dart:async';
 import 'dart:io';
 
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 43fa83a..53f4a4e 100644
--- a/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
+++ b/pkg/analyzer/lib/src/analysis_options/error/option_codes.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.analysis_options.error.option_codes;
-
 import 'package:analyzer/error/error.dart';
 
 /**
@@ -50,6 +48,60 @@
   ErrorType get type => ErrorType.COMPILE_TIME_ERROR;
 }
 
+class AnalysisOptionsHintCode extends ErrorCode {
+  /**
+   * An error code indicating the analysis options file name is deprecated and
+   * the file should be renamed.
+   *
+   * Parameters:
+   * 0: the uri of the file which should be renamed
+   */
+  static const AnalysisOptionsHintCode DEPRECATED_ANALYSIS_OPTIONS_FILE_NAME =
+      const AnalysisOptionsHintCode(
+          'DEPRECATED_ANALYSIS_OPTIONS_FILE_NAME',
+          "The name of the analysis options file {0} is deprecated;"
+          " 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 =
+      const AnalysisOptionsHintCode('STRONG_MODE_SETTING_DEPRECATED',
+          "The 'strong-mode: true' setting is deprecated.",
+          correction:
+              "It is no longer necessary to explicitly enable strong mode.");
+
+  /**
+   * An error code indicating that the enablePreviewDart2 setting is deprecated.
+   */
+  static const AnalysisOptionsHintCode SUPER_MIXINS_SETTING_DEPRECATED =
+      const AnalysisOptionsHintCode('SUPER_MIXINS_SETTING_DEPRECATED',
+          "The 'enableSuperMixins' setting is deprecated.",
+          correction:
+              "Support has been added to the language for 'mixin' based mixins.");
+
+  /**
+   * Initialize a newly created hint code to have the given [name].
+   */
+  const AnalysisOptionsHintCode(String name, String message,
+      {String correction})
+      : super.temporary(name, message, correction: correction);
+
+  @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
+
+  @override
+  ErrorType get type => ErrorType.HINT;
+}
+
 /**
  * The error codes used for warnings in analysis options files. The convention
  * for this class is for the name of the error code to indicate the problem that
@@ -89,6 +141,26 @@
           "Warning in the included options file {0}({1}..{2}): {3}");
 
   /**
+   * An error code indicating an invalid format for an options file section.
+   *
+   * Parameters:
+   * 0: the section name
+   */
+  static const AnalysisOptionsWarningCode INVALID_SECTION_FORMAT =
+      const AnalysisOptionsWarningCode(
+          'INVALID_SECTION_FORMAT', "Invalid format for the '{0}' section.");
+
+  /**
+   * An error code indicating that strong-mode: false is has been removed.
+   */
+  static const AnalysisOptionsWarningCode SPEC_MODE_REMOVED =
+      const AnalysisOptionsWarningCode('SPEC_MODE_REMOVED',
+          "The option 'strong-mode: false' is no longer supported.",
+          correction:
+              "It's recommended to remove the 'strong-mode:' setting (and make "
+              "your code Dart 2 compliant).");
+
+  /**
    * An error code indicating that an unrecognized error code is being used to
    * specify an error filter.
    *
@@ -129,6 +201,20 @@
           correction: "Try using one of the supported options: {2}.");
 
   /**
+   * An error code indicating that a plugin is being configured with an
+   * unsupported option and legal options are provided.
+   *
+   * Parameters:
+   * 0: the plugin name
+   * 1: the unsupported option key
+   */
+  static const AnalysisOptionsWarningCode UNSUPPORTED_OPTION_WITHOUT_VALUES =
+      const AnalysisOptionsWarningCode(
+    'UNSUPPORTED_OPTION_WITHOUT_VALUES',
+    "The option '{1}' isn't supported by '{0}'.",
+  );
+
+  /**
    * An error code indicating that an option entry is being configured with an
    * unsupported value.
    *
@@ -143,26 +229,6 @@
           correction: "Try using one of the supported options: {2}.");
 
   /**
-   * An error code indicating an invalid format for an options file section.
-   *
-   * Parameters:
-   * 0: the section name
-   */
-  static const AnalysisOptionsWarningCode INVALID_SECTION_FORMAT =
-      const AnalysisOptionsWarningCode(
-          'INVALID_SECTION_FORMAT', "Invalid format for the '{0}' section.");
-
-  /**
-   * An error code indicating that strong-mode: false is has been removed.
-   */
-  static const AnalysisOptionsWarningCode SPEC_MODE_REMOVED =
-      const AnalysisOptionsWarningCode('SPEC_MODE_REMOVED',
-          "The option 'strong-mode: false' is no longer supported.",
-          correction:
-              "It's recommended to remove the 'strong-mode:' setting (and make "
-              "your code Dart 2 compliant).");
-
-  /**
    * Initialize a newly created warning code to have the given [name].
    */
   const AnalysisOptionsWarningCode(String name, String message,
@@ -175,48 +241,3 @@
   @override
   ErrorType get type => ErrorType.STATIC_WARNING;
 }
-
-class AnalysisOptionsHintCode extends ErrorCode {
-  /**
-   * An error code indicating the analysis options file name is deprecated and
-   * the file should be renamed.
-   *
-   * Parameters:
-   * 0: the uri of the file which should be renamed
-   */
-  static const AnalysisOptionsHintCode DEPRECATED_ANALYSIS_OPTIONS_FILE_NAME =
-      const AnalysisOptionsHintCode(
-          'DEPRECATED_ANALYSIS_OPTIONS_FILE_NAME',
-          "The name of the analysis options file {0} is deprecated;"
-          " 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 =
-      const AnalysisOptionsHintCode('STRONG_MODE_SETTING_DEPRECATED',
-          "The 'strong-mode: true' setting is deprecated.",
-          correction:
-              "It is no longer necessary to explicitly enable strong mode.");
-
-  /**
-   * Initialize a newly created hint code to have the given [name].
-   */
-  const AnalysisOptionsHintCode(String name, String message,
-      {String correction})
-      : super.temporary(name, message, correction: correction);
-
-  @override
-  ErrorSeverity get errorSeverity => ErrorSeverity.INFO;
-
-  @override
-  ErrorType get type => ErrorType.HINT;
-}
diff --git a/pkg/analyzer/lib/src/cancelable_future.dart b/pkg/analyzer/lib/src/cancelable_future.dart
index 38beac3..ff0179b 100644
--- a/pkg/analyzer/lib/src/cancelable_future.dart
+++ b/pkg/analyzer/lib/src/cancelable_future.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.cancelable_future;
-
 import 'dart:async';
 
 /**
diff --git a/pkg/analyzer/lib/src/codegen/html.dart b/pkg/analyzer/lib/src/codegen/html.dart
index 72f2e38..f6405af 100644
--- a/pkg/analyzer/lib/src/codegen/html.dart
+++ b/pkg/analyzer/lib/src/codegen/html.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
@@ -6,8 +6,6 @@
  * Tools for manipulating HTML during code generation of analyzer and analysis
  * server.
  */
-library analyzer.src.codegen.html;
-
 import 'package:html/dom.dart' as dom;
 
 /**
diff --git a/pkg/analyzer/lib/src/codegen/text_formatter.dart b/pkg/analyzer/lib/src/codegen/text_formatter.dart
index f97afe0..0ffad91 100644
--- a/pkg/analyzer/lib/src/codegen/text_formatter.dart
+++ b/pkg/analyzer/lib/src/codegen/text_formatter.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
@@ -6,8 +6,6 @@
  * Code for converting HTML into text, for use during code generation of
  * analyzer and analysis server.
  */
-library analyzer.src.codegen.text_formatter;
-
 import 'package:analyzer/src/codegen/tools.dart';
 import 'package:html/dom.dart' as dom;
 
diff --git a/pkg/analyzer/lib/src/codegen/tools.dart b/pkg/analyzer/lib/src/codegen/tools.dart
index 327d173..8cd9293 100644
--- a/pkg/analyzer/lib/src/codegen/tools.dart
+++ b/pkg/analyzer/lib/src/codegen/tools.dart
@@ -1,12 +1,10 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
 /**
  * Tools for generating code in analyzer and analysis server.
  */
-library analyzer.src.codegen.tools;
-
 import 'dart:async';
 import 'dart:io';
 
@@ -148,30 +146,30 @@
     if (codeGeneratorSettings.languageName == 'java') {
       header = '''
 /*
- * Copyright (c) ${year ?? '2018'}, the Dart project authors.  Please see the AUTHORS file
+ * Copyright (c) ${year ?? '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.
  *
- * This file has been automatically generated.  Please do not edit it manually.
+ * This file has been automatically generated. Please do not edit it manually.
  * To regenerate the file, use the script "pkg/analysis_server/tool/spec/generate_files".
  */''';
     } else if (codeGeneratorSettings.languageName == 'python') {
       header = '''
-# Copyright (c) ${year ?? '2014'}, the Dart project authors.  Please see the AUTHORS file
+# Copyright (c) ${year ?? '2014'}, 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.
 #
-# This file has been automatically generated.  Please do not edit it manually.
+# This file has been automatically generated. Please do not edit it manually.
 # To regenerate the file, use the script
 # "pkg/analysis_server/tool/spec/generate_files".
 ''';
     } else {
       header = '''
-// Copyright (c) ${year ?? '2014'}, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) ${year ?? '2014'}, 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 ''';
diff --git a/pkg/analyzer/lib/src/command_line/arguments.dart b/pkg/analyzer/lib/src/command_line/arguments.dart
index 716008f..904684c 100644
--- a/pkg/analyzer/lib/src/command_line/arguments.dart
+++ b/pkg/analyzer/lib/src/command_line/arguments.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.src.command_line.arguments;
-
 import 'dart:collection';
 
 import 'package:analyzer/file_system/file_system.dart';
@@ -20,6 +18,7 @@
 const String declarationCastsFlag = 'declaration-casts';
 const String defineVariableOption = 'D';
 const String enableInitializingFormalAccessFlag = 'initializing-formal-access';
+@deprecated
 const String enableSuperMixinFlag = 'supermixin';
 const String flutterAnalysisOptionsPath =
     'package:flutter/analysis_options_user.yaml';
@@ -44,10 +43,6 @@
     }
   }
 
-  if (args.wasParsed(enableSuperMixinFlag)) {
-    options.enableSuperMixins = args[enableSuperMixinFlag];
-    verbose('$enableSuperMixinFlag = ${options.enableSuperMixins}');
-  }
   if (args.wasParsed(implicitCastsFlag)) {
     options.implicitCasts = args[implicitCastsFlag];
     verbose('$implicitCastsFlag = ${options.implicitCasts}');
@@ -203,11 +198,6 @@
       defaultsTo: false,
       negatable: false,
       hide: hide || ddc);
-  parser.addFlag(enableSuperMixinFlag,
-      help: 'Relax restrictions on mixins (DEP 34).',
-      defaultsTo: false,
-      negatable: false,
-      hide: hide);
   if (!ddc) {
     parser.addFlag(lintsFlag,
         help: 'Show lint results.', defaultsTo: false, negatable: true);
diff --git a/pkg/analyzer/lib/src/context/context.dart b/pkg/analyzer/lib/src/context/context.dart
index 490d6e0..2dc5cfd 100644
--- a/pkg/analyzer/lib/src/context/context.dart
+++ b/pkg/analyzer/lib/src/context/context.dart
@@ -291,7 +291,6 @@
         ((options is AnalysisOptionsImpl)
             ? this._options.implicitDynamic != options.implicitDynamic
             : false) ||
-        this._options.enableSuperMixins != options.enableSuperMixins ||
         !_samePatchPaths(this._options.patchPaths, options.patchPaths);
     this._options.analyzeFunctionBodiesPredicate =
         options.analyzeFunctionBodiesPredicate;
@@ -300,7 +299,6 @@
     this._options.dart2jsHint = options.dart2jsHint;
     this._options.enableLazyAssignmentOperators =
         options.enableLazyAssignmentOperators;
-    this._options.enableSuperMixins = options.enableSuperMixins;
     this._options.enableTiming = options.enableTiming;
     this._options.enabledPluginNames = options.enabledPluginNames;
     this._options.errorProcessors = options.errorProcessors;
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 3872362..dd10465 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -93,7 +93,7 @@
   /**
    * The version of data format, should be incremented on every format change.
    */
-  static const int DATA_VERSION = 72;
+  static const int DATA_VERSION = 73;
 
   /**
    * The number of exception contexts allowed to write. Once this field is
@@ -1111,8 +1111,8 @@
     // Process a unit element signature request for a part.
     if (_unitElementSignatureParts.isNotEmpty) {
       String path = _unitElementSignatureParts.keys.first;
-      var signature = await _computeUnitElementSignature(path,
-          asIsIfPartWithoutLibrary: true);
+      var signature =
+          _computeUnitElementSignature(path, asIsIfPartWithoutLibrary: true);
       _unitElementSignatureParts.remove(path).forEach((completer) {
         completer.complete(signature);
       });
@@ -1282,8 +1282,8 @@
           libraryContext?.dispose();
         }
       } catch (exception, stackTrace) {
-        String contextKey = _storeExceptionContextDuringAnalysis(
-            path, library, exception, stackTrace);
+        String contextKey =
+            _storeExceptionContext(path, library, exception, stackTrace);
         throw new _ExceptionState(exception, stackTrace, contextKey);
       }
     });
@@ -1351,16 +1351,16 @@
   void _createFileTracker() {
     _fillSalt();
     _fsState = new FileSystemState(
-        _logger,
-        _byteStore,
-        _contentOverlay,
-        _resourceProvider,
-        sourceFactory,
-        analysisOptions,
-        _unlinkedSalt,
-        _linkedSalt,
-        externalSummaries: _externalSummaries,
-        parseExceptionHandler: _storeExceptionContextDuringParsing);
+      _logger,
+      _byteStore,
+      _contentOverlay,
+      _resourceProvider,
+      sourceFactory,
+      analysisOptions,
+      _unlinkedSalt,
+      _linkedSalt,
+      externalSummaries: _externalSummaries,
+    );
     _fileTracker = new FileTracker(_logger, _fsState, _changeHook);
   }
 
@@ -1573,9 +1573,27 @@
         .toBuffer();
   }
 
-  String _storeExceptionContext(AnalysisDriverExceptionContextBuilder builder) {
+  String _storeExceptionContext(
+      String path, FileState libraryFile, exception, StackTrace stackTrace) {
+    if (allowedNumberOfContextsToWrite <= 0) {
+      return null;
+    } else {
+      allowedNumberOfContextsToWrite--;
+    }
     try {
-      List<int> bytes = builder.toBuffer();
+      List<AnalysisDriverExceptionFileBuilder> contextFiles = libraryFile
+          .transitiveFiles
+          .map((file) => new AnalysisDriverExceptionFileBuilder(
+              path: file.path, content: file.content))
+          .toList();
+      contextFiles.sort((a, b) => a.path.compareTo(b.path));
+      AnalysisDriverExceptionContextBuilder contextBuilder =
+          new AnalysisDriverExceptionContextBuilder(
+              path: path,
+              exception: exception.toString(),
+              stackTrace: stackTrace.toString(),
+              files: contextFiles);
+      List<int> bytes = contextBuilder.toBuffer();
 
       String _twoDigits(int n) {
         if (n >= 10) return '$n';
@@ -1604,53 +1622,6 @@
     }
   }
 
-  String _storeExceptionContextDuringAnalysis(
-      String path, FileState libraryFile, exception, StackTrace stackTrace) {
-    if (allowedNumberOfContextsToWrite <= 0) {
-      return null;
-    } else {
-      allowedNumberOfContextsToWrite--;
-    }
-    try {
-      List<AnalysisDriverExceptionFileBuilder> contextFiles = libraryFile
-          .transitiveFiles
-          .map((file) => new AnalysisDriverExceptionFileBuilder(
-              path: file.path, content: file.content))
-          .toList();
-      contextFiles.sort((a, b) => a.path.compareTo(b.path));
-      AnalysisDriverExceptionContextBuilder contextBuilder =
-          new AnalysisDriverExceptionContextBuilder(
-              path: path,
-              exception: exception.toString(),
-              stackTrace: stackTrace.toString(),
-              files: contextFiles);
-      return _storeExceptionContext(contextBuilder);
-    } catch (_) {
-      return null;
-    }
-  }
-
-  String _storeExceptionContextDuringParsing(
-      FileState file, exception, StackTrace stackTrace) {
-    if (allowedNumberOfContextsToWrite <= 0) {
-      return null;
-    } else {
-      allowedNumberOfContextsToWrite--;
-    }
-    try {
-      var fileBuilder = new AnalysisDriverExceptionFileBuilder(
-          path: file.path, content: file.content);
-      var contextBuilder = new AnalysisDriverExceptionContextBuilder(
-          path: file.path,
-          exception: exception.toString(),
-          stackTrace: stackTrace.toString(),
-          files: [fileBuilder]);
-      return _storeExceptionContext(contextBuilder);
-    } catch (_) {
-      return null;
-    }
-  }
-
   /**
    * If the driver is used in the read-only mode with infinite cache,
    * we should not allow invocations that change files.
diff --git a/pkg/analyzer/lib/src/dart/analysis/file_state.dart b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
index fe5cec4..c1aad81 100644
--- a/pkg/analyzer/lib/src/dart/analysis/file_state.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/file_state.dart
@@ -10,11 +10,11 @@
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/file_system/file_system.dart';
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/defined_names.dart';
-import 'package:analyzer/src/dart/analysis/one_phase_summaries_selector.dart';
+import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/analysis/referenced_names.dart';
 import 'package:analyzer/src/dart/analysis/top_level_declaration.dart';
-import 'package:analyzer/src/dart/analysis/unlinked_api_signature.dart';
 import 'package:analyzer/src/dart/scanner/reader.dart';
 import 'package:analyzer/src/dart/scanner/scanner.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -22,6 +22,7 @@
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/utilities_dart.dart';
 import 'package:analyzer/src/source/source_resource.dart';
+import 'package:analyzer/src/summary/api_signature.dart';
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/name_filter.dart';
@@ -29,19 +30,10 @@
 import 'package:analyzer/src/summary/summarize_ast.dart';
 import 'package:convert/convert.dart';
 import 'package:crypto/crypto.dart';
-import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/summary/api_signature.dart';
-import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:front_end/src/fasta/scanner/token.dart';
 import 'package:meta/meta.dart';
 
 /**
- * The type of the function that is notified about an error during parsing.
- */
-typedef void FileParseExceptionHandler(
-    FileState file, exception, StackTrace stackTrace);
-
-/**
  * [FileContentOverlay] is used to temporary override content of files.
  */
 class FileContentOverlay {
@@ -121,6 +113,7 @@
   Set<String> _definedClassMemberNames;
   Set<String> _definedTopLevelNames;
   Set<String> _referencedNames;
+  String _unlinkedKey;
   AnalysisDriverUnlinkedUnit _driverUnlinkedUnit;
   UnlinkedUnit _unlinked;
   List<int> _apiSignature;
@@ -378,10 +371,7 @@
       return PerformanceStatistics.parse.makeCurrentWhile(() {
         return _parse(errorListener);
       });
-    } catch (exception, stackTrace) {
-      if (_fsState.parseExceptionHandler != null) {
-        _fsState.parseExceptionHandler(this, exception, stackTrace);
-      }
+    } catch (_) {
       return _createEmptyCompilationUnit();
     }
   }
@@ -406,38 +396,26 @@
       _contentHash = rawFileState.contentHash;
     }
 
-    // Prepare keys of unlinked data.
-    String apiSignatureKey;
-    String unlinkedKey;
+    // Prepare the unlinked bundle key.
     {
       var signature = new ApiSignature();
       signature.addUint32List(_fsState._unlinkedSalt);
       signature.addString(_contentHash);
-
-      var signatureHex = signature.toHex();
-      apiSignatureKey = '$signatureHex.api_signature';
-      unlinkedKey = '$signatureHex.unlinked';
+      _unlinkedKey = '${signature.toHex()}.unlinked';
     }
 
-    // Try to get bytes of unlinked data.
-    var apiSignatureBytes = _fsState._byteStore.get(apiSignatureKey);
-    var unlinkedUnitBytes = _fsState._byteStore.get(unlinkedKey);
-
-    // Compute unlinked data that we are missing.
-    if (apiSignatureBytes == null || unlinkedUnitBytes == null) {
-      CompilationUnit unit = parse(AnalysisErrorListener.NULL_LISTENER);
-      _fsState._logger.run('Create unlinked for $path', () {
-        if (apiSignatureBytes == null) {
-          apiSignatureBytes = computeUnlinkedApiSignature(unit);
-          _fsState._byteStore.put(apiSignatureKey, apiSignatureBytes);
-        }
-        if (unlinkedUnitBytes == null) {
-          var unlinkedUnit = serializeAstUnlinked(unit,
-              serializeInferrableFields: !enableOnePhaseSummaries);
-          var definedNames = computeDefinedNames(unit);
-          var referencedNames = computeReferencedNames(unit).toList();
-          var subtypedNames = computeSubtypedNames(unit).toList();
-          unlinkedUnitBytes = new AnalysisDriverUnlinkedUnitBuilder(
+    // Prepare bytes of the unlinked bundle - existing or new.
+    List<int> bytes;
+    {
+      bytes = _fsState._byteStore.get(_unlinkedKey);
+      if (bytes == null || bytes.isEmpty) {
+        CompilationUnit unit = parse();
+        _fsState._logger.run('Create unlinked for $path', () {
+          UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit);
+          DefinedNames definedNames = computeDefinedNames(unit);
+          List<String> referencedNames = computeReferencedNames(unit).toList();
+          List<String> subtypedNames = computeSubtypedNames(unit).toList();
+          bytes = new AnalysisDriverUnlinkedUnitBuilder(
                   unit: unlinkedUnit,
                   definedTopLevelNames: definedNames.topLevelNames.toList(),
                   definedClassMemberNames:
@@ -445,21 +423,21 @@
                   referencedNames: referencedNames,
                   subtypedNames: subtypedNames)
               .toBuffer();
-          _fsState._byteStore.put(unlinkedKey, unlinkedUnitBytes);
-        }
-      });
+          _fsState._byteStore.put(_unlinkedKey, bytes);
+        });
+      }
     }
 
     // Read the unlinked bundle.
-    _driverUnlinkedUnit =
-        new AnalysisDriverUnlinkedUnit.fromBuffer(unlinkedUnitBytes);
+    _driverUnlinkedUnit = new AnalysisDriverUnlinkedUnit.fromBuffer(bytes);
     _unlinked = _driverUnlinkedUnit.unit;
     _lineInfo = new LineInfo(_unlinked.lineStarts);
 
     // Prepare API signature.
+    List<int> newApiSignature = new Uint8List.fromList(_unlinked.apiSignature);
     bool apiSignatureChanged = _apiSignature != null &&
-        !_equalByteLists(_apiSignature, apiSignatureBytes);
-    _apiSignature = apiSignatureBytes;
+        !_equalByteLists(_apiSignature, newApiSignature);
+    _apiSignature = newApiSignature;
 
     // The API signature changed.
     //   Flush transitive signatures of affected files.
@@ -706,6 +684,8 @@
   final FileState file;
 
   FileStateTestView(this.file);
+
+  String get unlinkedKey => file._unlinkedKey;
 }
 
 /**
@@ -733,15 +713,6 @@
   final SummaryDataStore externalSummaries;
 
   /**
-   * The optional handler for scanning and parsing exceptions.
-   *
-   * We hope that these exceptions never happen, but we might need to get
-   * additional information if there are exception when we are replacing
-   * Analyzer's scanner and parser with implementations from FrontEnd.
-   */
-  final FileParseExceptionHandler parseExceptionHandler;
-
-  /**
    * Mapping from a URI to the corresponding [FileState].
    */
   final Map<Uri, FileState> _uriToFile = {};
@@ -809,10 +780,11 @@
     this._unlinkedSalt,
     this._linkedSalt, {
     this.externalSummaries,
-    this.parseExceptionHandler,
   }) {
-    _fileContentCache =
-        _FileContentCache.getInstance(_resourceProvider, _contentOverlay);
+    _fileContentCache = _FileContentCache.getInstance(
+      _resourceProvider,
+      _contentOverlay,
+    );
     _testView = new FileSystemStateTestView(this);
   }
 
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index bdd8592..c387512 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -51,6 +51,7 @@
   final TypeProvider _typeProvider;
 
   LibraryElement _libraryElement;
+  LibraryScope _libraryScope;
 
   final Map<FileState, LineInfo> _fileToLineInfo = {};
   final Map<FileState, IgnoreInfo> _fileToIgnoreInfo = {};
@@ -100,6 +101,7 @@
     try {
       _libraryElement = _resynthesizer
           .getElement(new ElementLocationImpl.con3([_library.uriStr]));
+      _libraryScope = new LibraryScope(_libraryElement);
 
       _resolveDirectives(units);
 
@@ -218,9 +220,10 @@
         typeSystem: _context.typeSystem));
 
     unit.accept(new OverrideVerifier(
-        errorReporter,
-        new InheritanceManager(_libraryElement,
-            includeAbstractFromSuperclasses: true)));
+      _inheritance,
+      _libraryElement,
+      errorReporter,
+    ));
 
     new ToDoFinder(errorReporter).findIn(unit);
 
@@ -329,12 +332,7 @@
     // Use the ErrorVerifier to compute errors.
     //
     ErrorVerifier errorVerifier = new ErrorVerifier(
-        errorReporter,
-        _libraryElement,
-        _typeProvider,
-        new InheritanceManager(_libraryElement),
-        _inheritance,
-        _analysisOptions.enableSuperMixins);
+        errorReporter, _libraryElement, _typeProvider, _inheritance, false);
     unit.accept(errorVerifier);
   }
 
@@ -575,10 +573,9 @@
 
     new DeclarationResolver().resolve(unit, unitElement);
 
-    LibraryScope libraryScope = new LibraryScope(_libraryElement);
     unit.accept(new AstRewriteVisitor(_context.typeSystem, _libraryElement,
         source, _typeProvider, errorListener,
-        nameScope: libraryScope));
+        nameScope: _libraryScope));
 
     // TODO(scheglov) remove EnumMemberBuilder class
 
@@ -591,7 +588,7 @@
 
     unit.accept(new VariableResolverVisitor(
         _libraryElement, source, _typeProvider, errorListener,
-        nameScope: libraryScope));
+        nameScope: _libraryScope));
 
     unit.accept(new PartialResolverVisitor(_inheritance, _libraryElement,
         source, _typeProvider, AnalysisErrorListener.NULL_LISTENER));
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_context.dart b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
index 643c870..3a36e2b 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_context.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_context.dart
@@ -3,13 +3,13 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/analysis/declared_variables.dart';
-import 'package:analyzer/dart/ast/ast.dart' show CompilationUnit;
 import 'package:analyzer/dart/element/element.dart'
     show CompilationUnitElement, LibraryElement;
 import 'package:analyzer/src/context/context.dart';
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/file_state.dart';
-import 'package:analyzer/src/dart/analysis/one_phase_summaries_selector.dart';
+import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/handle.dart';
 import 'package:analyzer/src/generated/engine.dart'
@@ -18,11 +18,7 @@
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/link.dart';
-import 'package:analyzer/src/summary/one_phase.dart';
 import 'package:analyzer/src/summary/package_bundle_reader.dart';
-import 'package:analyzer/src/summary/summarize_elements.dart';
-import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 
 /**
  * Context information necessary to analyze one or more libraries within an
@@ -118,47 +114,16 @@
       });
 
       Map<String, LinkedLibraryBuilder> linkedLibraries = {};
-      if (enableOnePhaseSummaries) {
-        var uriToUnit = <String, CompilationUnit>{};
-        logger.run('Parse files', () {
-          for (var library in libraryFilesToLink) {
-            for (var file in library.libraryFiles) {
-              uriToUnit[file.uriStr] = file.parse();
-            }
-          }
-          logger.writeln('Parsed ${uriToUnit.length} files.');
-        });
-
-        logger.run('Link libraries', () {
-          var assembler = new PackageBundleAssembler();
-          summarize(uriToUnit, store, assembler, (_) => null, true);
-
-          var bundle = assembler.assemble();
-          for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
-            var uri = bundle.linkedLibraryUris[i];
-
-            // TODO(scheglov) At the moment we might get parts here.
-            if (!libraries.containsKey(uri)) {
-              continue;
-            }
-
-            linkedLibraries[uri] = bundle.linkedLibraries[i];
-          }
-
-          logger.writeln('Linked ${linkedLibraries.length} libraries.');
-        });
-      } else {
-        logger.run('Link libraries', () {
-          linkedLibraries = link(libraryUrisToLink, (String uri) {
-            LinkedLibrary linkedLibrary = store.linkedMap[uri];
-            return linkedLibrary;
-          }, (String uri) {
-            UnlinkedUnit unlinkedUnit = store.unlinkedMap[uri];
-            return unlinkedUnit;
-          }, (_) => null);
-          logger.writeln('Linked ${linkedLibraries.length} libraries.');
-        });
-      }
+      logger.run('Link libraries', () {
+        linkedLibraries = link(libraryUrisToLink, (String uri) {
+          LinkedLibrary linkedLibrary = store.linkedMap[uri];
+          return linkedLibrary;
+        }, (String uri) {
+          UnlinkedUnit unlinkedUnit = store.unlinkedMap[uri];
+          return unlinkedUnit;
+        }, (_) => null);
+        logger.writeln('Linked ${linkedLibraries.length} libraries.');
+      });
 
       for (String uri in linkedLibraries.keys) {
         LinkedLibraryBuilder linkedBuilder = linkedLibraries[uri];
diff --git a/pkg/analyzer/lib/src/dart/analysis/one_phase_summaries_selector.dart b/pkg/analyzer/lib/src/dart/analysis/one_phase_summaries_selector.dart
deleted file mode 100644
index c172ea1..0000000
--- a/pkg/analyzer/lib/src/dart/analysis/one_phase_summaries_selector.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// 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.
-
-/// A flag indicating whether analysis driver should work using one-phase,
-/// unresolved AST based summaries, or using old unlinked / link process.
-const bool enableOnePhaseSummaries =
-    const bool.fromEnvironment('enableOnePhaseSummaries', defaultValue: false);
diff --git a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart b/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
deleted file mode 100644
index 95fea50..0000000
--- a/pkg/analyzer/lib/src/dart/analysis/unlinked_api_signature.dart
+++ /dev/null
@@ -1,124 +0,0 @@
-// 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';
-import 'package:analyzer/dart/ast/token.dart';
-import 'package:analyzer/src/dart/ast/token.dart';
-import 'package:analyzer/src/summary/api_signature.dart';
-
-/// Return the bytes of the unlinked API signature of the given [unit].
-///
-/// If API signatures of two units are different, they may have different APIs.
-List<int> computeUnlinkedApiSignature(CompilationUnit unit) {
-  var computer = new _UnitApiSignatureComputer();
-  computer.compute(unit);
-  return computer.signature.toByteList();
-}
-
-class _UnitApiSignatureComputer {
-  final signature = new ApiSignature();
-
-  void addClassOrMixin(ClassOrMixinDeclaration node) {
-    addTokens(node.beginToken, node.leftBracket);
-
-    bool hasConstConstructor = node.members
-        .any((m) => m is ConstructorDeclaration && m.constKeyword != null);
-
-    signature.addInt(node.members.length);
-    for (var member in node.members) {
-      if (member is ConstructorDeclaration) {
-        var lastInitializer = member.constKeyword != null &&
-                member.initializers != null &&
-                member.initializers.isNotEmpty
-            ? member.initializers.last
-            : null;
-        addTokens(
-          member.beginToken,
-          (lastInitializer ?? member.parameters ?? member.name).endToken,
-        );
-      } else if (member is FieldDeclaration) {
-        var variableList = member.fields;
-        addVariables(
-          member,
-          variableList,
-          !member.isStatic && variableList.isFinal && hasConstConstructor,
-        );
-      } else if (member is MethodDeclaration) {
-        addTokens(
-          member.beginToken,
-          (member.parameters ?? member.name).endToken,
-        );
-      } else {
-        addNode(member);
-      }
-    }
-
-    addToken(node.rightBracket);
-  }
-
-  void addNode(AstNode node) {
-    addTokens(node.beginToken, node.endToken);
-  }
-
-  void addToken(Token token) {
-    signature.addString(token.lexeme);
-  }
-
-  /// Appends tokens from [begin] (including), to [end] (also including).
-  void addTokens(Token begin, Token end) {
-    if (begin is CommentToken) {
-      begin = (begin as CommentToken).parent;
-    }
-    Token token = begin;
-    while (token != null) {
-      addToken(token);
-      if (token == end) {
-        break;
-      }
-      token = token.next;
-    }
-  }
-
-  void addVariables(
-    AstNode node,
-    VariableDeclarationList variableList,
-    bool includeInitializers,
-  ) {
-    if (variableList.type == null ||
-        variableList.isConst ||
-        includeInitializers) {
-      addTokens(node.beginToken, node.endToken);
-    } else {
-      addTokens(node.beginToken, variableList.type.endToken);
-
-      signature.addInt(variableList.variables.length);
-      for (var variable in variableList.variables) {
-        addTokens(variable.beginToken, variable.name.endToken);
-        addToken(variable.endToken.next); // `,` or `;`
-      }
-    }
-  }
-
-  void compute(CompilationUnit unit) {
-    signature.addInt(unit.directives.length);
-    unit.directives.forEach(addNode);
-
-    signature.addInt(unit.declarations.length);
-    for (var declaration in unit.declarations) {
-      if (declaration is ClassOrMixinDeclaration) {
-        addClassOrMixin(declaration);
-      } else if (declaration is FunctionDeclaration) {
-        var parameters = declaration.functionExpression.parameters;
-        addTokens(
-          declaration.beginToken,
-          (parameters ?? declaration.name).endToken,
-        );
-      } else if (declaration is TopLevelVariableDeclaration) {
-        addVariables(declaration, declaration.variables, false);
-      } else {
-        addNode(declaration);
-      }
-    }
-  }
-}
diff --git a/pkg/analyzer/lib/src/dart/ast/ast.dart b/pkg/analyzer/lib/src/dart/ast/ast.dart
index 6ab7b93..9a0dcb9 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast.dart
@@ -6394,6 +6394,10 @@
  */
 class InstanceCreationExpressionImpl extends ExpressionImpl
     implements InstanceCreationExpression {
+  // TODO(brianwilkerson) Consider making InstanceCreationExpressionImpl extend
+  // InvocationExpressionImpl. This would probably be a breaking change, but is
+  // also probably worth it.
+
   /**
    * The 'new' or 'const' keyword used to indicate how an object should be
    * created, or `null` if the keyword is implicit.
@@ -6407,6 +6411,14 @@
   ConstructorNameImpl _constructorName;
 
   /**
+   * The type arguments associated with the constructor, rather than with the
+   * class in which the constructor is defined. It is always an error if there
+   * are type arguments because Dart doesn't currently support generic
+   * constructors, but we capture them in the AST in order to recover better.
+   */
+  TypeArgumentListImpl _typeArguments;
+
+  /**
    * The list of arguments to the constructor.
    */
   ArgumentListImpl _argumentList;
@@ -6423,8 +6435,10 @@
    * Initialize a newly created instance creation expression.
    */
   InstanceCreationExpressionImpl(this.keyword,
-      ConstructorNameImpl constructorName, ArgumentListImpl argumentList) {
+      ConstructorNameImpl constructorName, ArgumentListImpl argumentList,
+      {TypeArgumentListImpl typeArguments}) {
     _constructorName = _becomeParentOf(constructorName);
+    _typeArguments = _becomeParentOf(typeArguments);
     _argumentList = _becomeParentOf(argumentList);
   }
 
@@ -6443,6 +6457,7 @@
   Iterable<SyntacticEntity> get childEntities => new ChildEntities()
     ..add(keyword)
     ..add(_constructorName)
+    ..add(_typeArguments)
     ..add(_argumentList);
 
   @override
@@ -6475,6 +6490,24 @@
   @override
   int get precedence => 16;
 
+  /**
+   * Return the type arguments associated with the constructor, rather than with
+   * the class in which the constructor is defined. It is always an error if
+   * there are type arguments because Dart doesn't currently support generic
+   * constructors, but we capture them in the AST in order to recover better.
+   */
+  TypeArgumentList get typeArguments => _typeArguments;
+
+  /**
+   * Return the type arguments associated with the constructor, rather than with
+   * the class in which the constructor is defined. It is always an error if
+   * there are type arguments because Dart doesn't currently support generic
+   * constructors, but we capture them in the AST in order to recover better.
+   */
+  void set typeArguments(TypeArgumentList typeArguments) {
+    _typeArguments = _becomeParentOf(typeArguments as TypeArgumentListImpl);
+  }
+
   @override
   E accept<E>(AstVisitor<E> visitor) =>
       visitor.visitInstanceCreationExpression(this);
@@ -6562,6 +6595,7 @@
   @override
   void visitChildren(AstVisitor visitor) {
     _constructorName?.accept(visitor);
+    _typeArguments?.accept(visitor);
     _argumentList?.accept(visitor);
   }
 }
@@ -7316,7 +7350,7 @@
       new Set<VariableElement>();
 
   /**
-   * The set of local variables and parameters that are potentiall mutated
+   * The set of local variables and parameters that are potentially mutated
    * within the scope of their declarations.
    */
   final Set<VariableElement> potentiallyMutatedInScope =
diff --git a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
index cb337f7..6a3c3b5 100644
--- a/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
+++ b/pkg/analyzer/lib/src/dart/ast/ast_factory.dart
@@ -623,9 +623,10 @@
 
   @override
   InstanceCreationExpression instanceCreationExpression(Token keyword,
-          ConstructorName constructorName, ArgumentList argumentList) =>
-      new InstanceCreationExpressionImpl(
-          keyword, constructorName, argumentList);
+          ConstructorName constructorName, ArgumentList argumentList,
+          {TypeArgumentList typeArguments}) =>
+      new InstanceCreationExpressionImpl(keyword, constructorName, argumentList,
+          typeArguments: typeArguments);
 
   @override
   IntegerLiteral integerLiteral(Token literal, int value) =>
diff --git a/pkg/analyzer/lib/src/dart/ast/token.dart b/pkg/analyzer/lib/src/dart/ast/token.dart
index 4b0b503..0556cfc 100644
--- a/pkg/analyzer/lib/src/dart/ast/token.dart
+++ b/pkg/analyzer/lib/src/dart/ast/token.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.ast.token;
-
 export 'package:front_end/src/scanner/token.dart'
     show
         BeginToken,
diff --git a/pkg/analyzer/lib/src/dart/constant/value.dart b/pkg/analyzer/lib/src/dart/constant/value.dart
index 3e444e6..cca4d22 100644
--- a/pkg/analyzer/lib/src/dart/constant/value.dart
+++ b/pkg/analyzer/lib/src/dart/constant/value.dart
@@ -1,12 +1,10 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 implementation of the class [DartObject].
  */
-library analyzer.src.dart.constant.value;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/constant/value.dart';
diff --git a/pkg/analyzer/lib/src/dart/element/builder.dart b/pkg/analyzer/lib/src/dart/element/builder.dart
index 64722d9..2e518e3 100644
--- a/pkg/analyzer/lib/src/dart/element/builder.dart
+++ b/pkg/analyzer/lib/src/dart/element/builder.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.element.builder;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 39a3964..62f46eb 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -28,10 +28,8 @@
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/task/dart.dart';
 
-/**
- * Assert that the given [object] is null, which in the places where this
- * function is called means that the element is not resynthesized.
- */
+/// Assert that the given [object] is null, which in the places where this
+/// function is called means that the element is not resynthesized.
 void _assertNotResynthesized(Object object) {
   // TODO(scheglov) I comment this check for now.
   // When we make a decision about switch to the new analysis driver,
@@ -40,41 +38,27 @@
 //  assert(object == null);
 }
 
-/**
- * A concrete implementation of a [ClassElement].
- */
+/// A concrete implementation of a [ClassElement].
 abstract class AbstractClassElementImpl extends ElementImpl
     implements ClassElement {
-  /**
-   * A list containing all of the accessors (getters and setters) contained in
-   * this class.
-   */
+  /// A list containing all of the accessors (getters and setters) contained in
+  /// this class.
   List<PropertyAccessorElement> _accessors;
 
-  /**
-   * A list containing all of the fields contained in this class.
-   */
+  /// A list containing all of the fields contained in this class.
   List<FieldElement> _fields;
 
-  /**
-   * A list containing all of the methods contained in this class.
-   */
+  /// A list containing all of the methods contained in this class.
   List<MethodElement> _methods;
 
-  /**
-   * Initialize a newly created class element to have the given [name] at the
-   * given [offset] in the file that contains the declaration of this element.
-   */
+  /// Initialize a newly created class element to have the given [name] at the
+  /// given [offset] in the file that contains the declaration of this element.
   AbstractClassElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created class element to have the given [name].
-   */
+  /// Initialize a newly created class element to have the given [name].
   AbstractClassElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   AbstractClassElementImpl.forSerialized(
       CompilationUnitElementImpl enclosingUnit)
       : super.forSerialized(enclosingUnit);
@@ -84,9 +68,7 @@
     return _accessors ?? const <PropertyAccessorElement>[];
   }
 
-  /**
-   * Set the accessors contained in this class to the given [accessors].
-   */
+  /// Set the accessors contained in this class to the given [accessors].
   void set accessors(List<PropertyAccessorElement> accessors) {
     for (PropertyAccessorElement accessor in accessors) {
       (accessor as PropertyAccessorElementImpl).enclosingElement = this;
@@ -100,9 +82,7 @@
   @override
   List<FieldElement> get fields => _fields ?? const <FieldElement>[];
 
-  /**
-   * Set the fields contained in this class to the given [fields].
-   */
+  /// Set the fields contained in this class to the given [fields].
   void set fields(List<FieldElement> fields) {
     for (FieldElement field in fields) {
       (field as FieldElementImpl).enclosingElement = this;
@@ -271,19 +251,17 @@
     safelyVisitChildren(fields, visitor);
   }
 
-  /**
-   * Return an iterable containing all of the implementations of a getter with
-   * the given [getterName] that are defined in this class any any superclass of
-   * this class (but not in interfaces).
-   *
-   * The getters that are returned are not filtered in any way. In particular,
-   * they can include getters that are not visible in some context. Clients must
-   * perform any necessary filtering.
-   *
-   * The getters are returned based on the depth of their defining class; if
-   * this class contains a definition of the getter it will occur first, if
-   * Object contains a definition of the getter it will occur last.
-   */
+  /// Return an iterable containing all of the implementations of a getter with
+  /// the given [getterName] that are defined in this class any any superclass
+  /// of this class (but not in interfaces).
+  ///
+  /// The getters that are returned are not filtered in any way. In particular,
+  /// they can include getters that are not visible in some context. Clients
+  /// must perform any necessary filtering.
+  ///
+  /// The getters are returned based on the depth of their defining class; if
+  /// this class contains a definition of the getter it will occur first, if
+  /// Object contains a definition of the getter it will occur last.
   Iterable<PropertyAccessorElement> _implementationsOfGetter(
       String getterName) sync* {
     ClassElement classElement = this;
@@ -303,19 +281,17 @@
     }
   }
 
-  /**
-   * Return an iterable containing all of the implementations of a setter with
-   * the given [setterName] that are defined in this class any any superclass of
-   * this class (but not in interfaces).
-   *
-   * The setters that are returned are not filtered in any way. In particular,
-   * they can include setters that are not visible in some context. Clients must
-   * perform any necessary filtering.
-   *
-   * The setters are returned based on the depth of their defining class; if
-   * this class contains a definition of the setter it will occur first, if
-   * Object contains a definition of the setter it will occur last.
-   */
+  /// Return an iterable containing all of the implementations of a setter with
+  /// the given [setterName] that are defined in this class any any superclass
+  /// of this class (but not in interfaces).
+  ///
+  /// The setters that are returned are not filtered in any way. In particular,
+  /// they can include setters that are not visible in some context. Clients
+  /// must perform any necessary filtering.
+  ///
+  /// The setters are returned based on the depth of their defining class; if
+  /// this class contains a definition of the setter it will occur first, if
+  /// Object contains a definition of the setter it will occur last.
   Iterable<PropertyAccessorElement> _implementationsOfSetter(
       String setterName) sync* {
     ClassElement classElement = this;
@@ -335,11 +311,9 @@
     }
   }
 
-  /**
-   * Return the [AbstractClassElementImpl] of the given [classElement].  May
-   * throw an exception if the [AbstractClassElementImpl] cannot be provided
-   * (should not happen though).
-   */
+  /// Return the [AbstractClassElementImpl] of the given [classElement].  May
+  /// throw an exception if the [AbstractClassElementImpl] cannot be provided
+  /// (should not happen though).
   static AbstractClassElementImpl getImpl(ClassElement classElement) {
     if (classElement is ClassElementHandle) {
       return getImpl(classElement.actualElement);
@@ -347,19 +321,17 @@
     return classElement as AbstractClassElementImpl;
   }
 
-  /**
-   * Return an iterable containing all of the implementations of a method with
-   * the given [methodName] that are defined in this class any any superclass of
-   * this class (but not in interfaces).
-   *
-   * The methods that are returned are not filtered in any way. In particular,
-   * they can include methods that are not visible in some context. Clients must
-   * perform any necessary filtering.
-   *
-   * The methods are returned based on the depth of their defining class; if
-   * this class contains a definition of the method it will occur first, if
-   * Object contains a definition of the method it will occur last.
-   */
+  /// Return an iterable containing all of the implementations of a method with
+  /// the given [methodName] that are defined in this class any any superclass
+  /// of this class (but not in interfaces).
+  ///
+  /// The methods that are returned are not filtered in any way. In particular,
+  /// they can include methods that are not visible in some context. Clients
+  /// must perform any necessary filtering.
+  ///
+  /// The methods are returned based on the depth of their defining class; if
+  /// this class contains a definition of the method it will occur first, if
+  /// Object contains a definition of the method it will occur last.
   static Iterable<MethodElement> getImplementationsOfMethod(
       ClassElement classElement, String methodName) sync* {
     HashSet<ClassElement> visitedClasses = new HashSet<ClassElement>();
@@ -400,10 +372,8 @@
         .where((MethodElement method) => method.isAccessibleIn(library)));
   }
 
-  /**
-   * Return the first element from the given [iterable], or `null` if the
-   * iterable is empty.
-   */
+  /// Return the first element from the given [iterable], or `null` if the
+  /// iterable is empty.
   static E _first<E>(Iterable<E> iterable) {
     if (iterable.isEmpty) {
       return null;
@@ -412,119 +382,84 @@
   }
 }
 
-/**
- * For AST nodes that could be in both the getter and setter contexts
- * ([IndexExpression]s and [SimpleIdentifier]s), the additional resolved
- * elements are stored in the AST node, in an [AuxiliaryElements]. Because
- * resolved elements are either statically resolved or resolved using propagated
- * type information, this class is a wrapper for a pair of [ExecutableElement]s,
- * not just a single [ExecutableElement].
- */
+/// For AST nodes that could be in both the getter and setter contexts
+/// ([IndexExpression]s and [SimpleIdentifier]s), the additional resolved
+/// elements are stored in the AST node, in an [AuxiliaryElements]. Because
+/// resolved elements are either statically resolved or resolved using
+/// propagated type information, this class is a wrapper for a pair of
+/// [ExecutableElement]s, not just a single [ExecutableElement].
 class AuxiliaryElements {
-  /**
-   * The element based on static type information, or `null` if the AST
-   * structure has not been resolved or if the node could not be resolved.
-   */
+  /// The element based on static type information, or `null` if the AST
+  /// structure has not been resolved or if the node could not be resolved.
   final ExecutableElement staticElement;
 
-  /**
-   * Initialize a newly created pair to have both the [staticElement] and
-   * `null`.
-   */
+  /// Initialize a newly created pair to have both the [staticElement] and
+  /// `null`.
   AuxiliaryElements(this.staticElement, ExecutableElement propagatedElement);
 
-  /**
-   * The element based on propagated type information, or `null` if the AST
-   * structure has not been resolved or if the node could not be resolved.
-   */
+  /// The element based on propagated type information, or `null` if the AST
+  /// structure has not been resolved or if the node could not be resolved.
   ExecutableElement get propagatedElement => null;
 }
 
-/**
- * An [AbstractClassElementImpl] which is a class.
- */
+/// An [AbstractClassElementImpl] which is a class.
 class ClassElementImpl extends AbstractClassElementImpl
-    with TypeParameterizedElementMixin {
-  /**
-   * The unlinked representation of the class in the summary.
-   */
+    with TypeParameterizedElementMixin, SimplyBoundableMixin {
+  /// The unlinked representation of the class in the summary.
   final UnlinkedClass _unlinkedClass;
 
-  /**
-   * If this class is resynthesized, whether it has a constant constructor.
-   */
+  /// If this class is resynthesized, whether it has a constant constructor.
   bool _hasConstConstructorCached;
 
-  /**
-   * The superclass of the class, or `null` for [Object].
-   */
+  /// The superclass of the class, or `null` for [Object].
   InterfaceType _supertype;
 
-  /**
-   * The type defined by the class.
-   */
+  /// The type defined by the class.
   InterfaceType _type;
 
-  /**
-   * A list containing all of the mixins that are applied to the class being
-   * extended in order to derive the superclass of this class.
-   */
+  /// A list containing all of the mixins that are applied to the class being
+  /// extended in order to derive the superclass of this class.
   List<InterfaceType> _mixins;
 
-  /**
-   * A list containing all of the interfaces that are implemented by this class.
-   */
+  /// A list containing all of the interfaces that are implemented by this
+  /// class.
   List<InterfaceType> _interfaces;
 
-  /**
-   * For classes which are not mixin applications, a list containing all of the
-   * constructors contained in this class, or `null` if the list of
-   * constructors has not yet been built.
-   *
-   * For classes which are mixin applications, the list of constructors is
-   * computed on the fly by the [constructors] getter, and this field is
-   * `null`.
-   */
+  /// For classes which are not mixin applications, a list containing all of the
+  /// constructors contained in this class, or `null` if the list of
+  /// constructors has not yet been built.
+  ///
+  /// For classes which are mixin applications, the list of constructors is
+  /// computed on the fly by the [constructors] getter, and this field is
+  /// `null`.
   List<ConstructorElement> _constructors;
 
-  /**
-   * A flag indicating whether the types associated with the instance members of
-   * this class have been inferred.
-   */
+  /// A flag indicating whether the types associated with the instance members
+  /// of this class have been inferred.
   bool _hasBeenInferred = false;
 
-  /**
-   * The version of this element. The version is changed when the element is
-   * incrementally updated, so that its lists of constructors, accessors and
-   * methods might be different.
-   */
+  /// The version of this element. The version is changed when the element is
+  /// incrementally updated, so that its lists of constructors, accessors and
+  /// methods might be different.
   int version = 0;
 
-  /**
-   * Initialize a newly created class element to have the given [name] at the
-   * given [offset] in the file that contains the declaration of this element.
-   */
+  /// Initialize a newly created class element to have the given [name] at the
+  /// given [offset] in the file that contains the declaration of this element.
   ClassElementImpl(String name, int offset)
       : _unlinkedClass = null,
         super(name, offset);
 
-  /**
-   * Initialize a newly created class element to have the given [name].
-   */
+  /// Initialize a newly created class element to have the given [name].
   ClassElementImpl.forNode(Identifier name)
       : _unlinkedClass = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ClassElementImpl.forSerialized(
       this._unlinkedClass, CompilationUnitElementImpl enclosingUnit)
       : super.forSerialized(enclosingUnit);
 
-  /**
-   * Set whether this class is abstract.
-   */
+  /// Set whether this class is abstract.
   void set abstract(bool isAbstract) {
     _assertNotResynthesized(_unlinkedClass);
     setModifier(Modifier.ABSTRACT, isAbstract);
@@ -591,11 +526,9 @@
     return _constructors ?? const <ConstructorElement>[];
   }
 
-  /**
-   * Set the constructors contained in this class to the given [constructors].
-   *
-   * Should only be used for class elements that are not mixin applications.
-   */
+  /// Set the constructors contained in this class to the given [constructors].
+  ///
+  /// Should only be used for class elements that are not mixin applications.
   void set constructors(List<ConstructorElement> constructors) {
     _assertNotResynthesized(_unlinkedClass);
     assert(!isMixinApplication);
@@ -677,11 +610,9 @@
     return false;
   }
 
-  /**
-   * Return `true` if the class has a concrete `noSuchMethod()` method distinct
-   * from the one declared in class `Object`, as per the Dart Language
-   * Specification (section 10.4).
-   */
+  /// Return `true` if the class has a concrete `noSuchMethod()` method distinct
+  /// from the one declared in class `Object`, as per the Dart Language
+  /// Specification (section 10.4).
   bool get hasNoSuchMethod {
     MethodElement method = lookUpConcreteMethod(
         FunctionElement.NO_SUCH_METHOD_METHOD_NAME, library);
@@ -692,9 +623,7 @@
   @override
   bool get hasReferenceToSuper => hasModifier(Modifier.REFERENCES_SUPER);
 
-  /**
-   * Set whether this class references 'super'.
-   */
+  /// Set whether this class references 'super'.
   void set hasReferenceToSuper(bool isReferencedSuper) {
     setModifier(Modifier.REFERENCES_SUPER, isReferencedSuper);
   }
@@ -766,13 +695,11 @@
 
   @override
   bool get isValidMixin {
-    if (!context.analysisOptions.enableSuperMixins) {
-      if (hasReferenceToSuper) {
-        return false;
-      }
-      if (!supertype.isObject) {
-        return false;
-      }
+    if (hasReferenceToSuper) {
+      return false;
+    }
+    if (!supertype.isObject) {
+      return false;
     }
     for (ConstructorElement constructor in constructors) {
       if (!constructor.isSynthetic && !constructor.isFactory) {
@@ -802,9 +729,7 @@
     return _methods ?? const <MethodElement>[];
   }
 
-  /**
-   * Set the methods contained in this class to the given [methods].
-   */
+  /// Set the methods contained in this class to the given [methods].
   void set methods(List<MethodElement> methods) {
     _assertNotResynthesized(_unlinkedClass);
     for (MethodElement method in methods) {
@@ -813,9 +738,7 @@
     _methods = methods;
   }
 
-  /**
-   * Set whether this class is a mixin application.
-   */
+  /// Set whether this class is a mixin application.
   void set mixinApplication(bool isMixinApplication) {
     _assertNotResynthesized(_unlinkedClass);
     setModifier(Modifier.MIXIN_APPLICATION, isMixinApplication);
@@ -863,11 +786,9 @@
     return offset;
   }
 
-  /**
-   * Names of methods, getters, setters, and operators that this mixin
-   * declaration super-invokes.  For setters this includes the trailing "=".
-   * The list will be empty if this class is not a mixin declaration.
-   */
+  /// Names of methods, getters, setters, and operators that this mixin
+  /// declaration super-invokes.  For setters this includes the trailing "=".
+  /// The list will be empty if this class is not a mixin declaration.
   List<String> get superInvokedNames => const <String>[];
 
   @override
@@ -907,10 +828,8 @@
     return _type;
   }
 
-  /**
-   * Set the type parameters defined for this class to the given
-   * [typeParameters].
-   */
+  /// Set the type parameters defined for this class to the given
+  /// [typeParameters].
   void set typeParameters(List<TypeParameterElement> typeParameters) {
     _assertNotResynthesized(_unlinkedClass);
     for (TypeParameterElement typeParameter in typeParameters) {
@@ -934,9 +853,7 @@
     return null;
   }
 
-  /**
-   * Return whether the class is resynthesized and has a constant constructor.
-   */
+  /// Return whether the class is resynthesized and has a constant constructor.
   bool get _hasConstConstructor {
     if (_hasConstConstructorCached == null) {
       _hasConstConstructorCached = false;
@@ -949,6 +866,9 @@
   }
 
   @override
+  int get _notSimplyBoundedSlot => _unlinkedClass?.notSimplyBoundedSlot;
+
+  @override
   void appendTo(StringBuffer buffer) {
     if (isAbstract) {
       buffer.write('abstract ');
@@ -1029,12 +949,10 @@
     safelyVisitChildren(typeParameters, visitor);
   }
 
-  /**
-   * Compute a list of constructors for this class, which is a mixin
-   * application.  If specified, [visitedClasses] is a list of the other mixin
-   * application classes which have been visited on the way to reaching this
-   * one (this is used to detect circularities).
-   */
+  /// Compute a list of constructors for this class, which is a mixin
+  /// application.  If specified, [visitedClasses] is a list of the other mixin
+  /// application classes which have been visited on the way to reaching this
+  /// one (this is used to detect circularities).
   List<ConstructorElement> _computeMixinAppConstructors(
       [List<ClassElementImpl> visitedClasses = null]) {
     // First get the list of constructors of the superclass which need to be
@@ -1127,10 +1045,8 @@
     }).toList(growable: false);
   }
 
-  /**
-   * Return `true` if the given [type] is an [InterfaceType] that can be used
-   * as a class.
-   */
+  /// Return `true` if the given [type] is an [InterfaceType] that can be used
+  /// as a class.
   bool _isInterfaceTypeClass(DartType type) {
     if (type is InterfaceType) {
       var element = type.element;
@@ -1139,18 +1055,14 @@
     return false;
   }
 
-  /**
-   * Return `true` if the given [type] is an [InterfaceType] that can be used
-   * as an interface or a mixin.
-   */
+  /// Return `true` if the given [type] is an [InterfaceType] that can be used
+  /// as an interface or a mixin.
   bool _isInterfaceTypeInterface(DartType type) {
     return type is InterfaceType && !type.element.isEnum;
   }
 
-  /**
-   * Resynthesize explicit fields and property accessors and fill [_fields] and
-   * [_accessors] with explicit and implicit elements.
-   */
+  /// Resynthesize explicit fields and property accessors and fill [_fields] and
+  /// [_accessors] with explicit and implicit elements.
   void _resynthesizeFieldsAndPropertyAccessors() {
     assert(_fields == null);
     assert(_accessors == null);
@@ -1279,121 +1191,83 @@
   }
 }
 
-/**
- * A concrete implementation of a [CompilationUnitElement].
- */
+/// A concrete implementation of a [CompilationUnitElement].
 class CompilationUnitElementImpl extends UriReferencedElementImpl
     implements CompilationUnitElement {
-  /**
-   * The context in which this unit is resynthesized, or `null` if the
-   * element is not resynthesized a summary.
-   */
+  /// The context in which this unit is resynthesized, or `null` if the
+  /// element is not resynthesized a summary.
   final ResynthesizerContext resynthesizerContext;
 
-  /**
-   * The unlinked representation of the unit in the summary.
-   */
+  /// The unlinked representation of the unit in the summary.
   final UnlinkedUnit _unlinkedUnit;
 
-  /**
-   * The unlinked representation of the part in the summary.
-   */
+  /// The unlinked representation of the part in the summary.
   final UnlinkedPart _unlinkedPart;
 
-  /**
-   * The source that corresponds to this compilation unit.
-   */
+  /// The source that corresponds to this compilation unit.
   @override
   Source source;
 
   @override
   LineInfo lineInfo;
 
-  /**
-   * The source of the library containing this compilation unit.
-   *
-   * This is the same as the source of the containing [LibraryElement],
-   * except that it does not require the containing [LibraryElement] to be
-   * computed.
-   */
+  /// The source of the library containing this compilation unit.
+  ///
+  /// This is the same as the source of the containing [LibraryElement],
+  /// except that it does not require the containing [LibraryElement] to be
+  /// computed.
   Source librarySource;
 
-  /**
-   * A table mapping the offset of a directive to the annotations associated
-   * with that directive, or `null` if none of the annotations in the
-   * compilation unit have annotations.
-   */
+  /// A table mapping the offset of a directive to the annotations associated
+  /// with that directive, or `null` if none of the annotations in the
+  /// compilation unit have annotations.
   Map<int, List<ElementAnnotation>> annotationMap = null;
 
-  /**
-   * A list containing all of the top-level accessors (getters and setters)
-   * contained in this compilation unit.
-   */
+  /// A list containing all of the top-level accessors (getters and setters)
+  /// contained in this compilation unit.
   List<PropertyAccessorElement> _accessors;
 
-  /**
-   * A list containing all of the enums contained in this compilation unit.
-   */
+  /// A list containing all of the enums contained in this compilation unit.
   List<ClassElement> _enums;
 
-  /**
-   * A list containing all of the top-level functions contained in this
-   * compilation unit.
-   */
+  /// A list containing all of the top-level functions contained in this
+  /// compilation unit.
   List<FunctionElement> _functions;
 
-  /**
-   * A list containing all of the mixins contained in this compilation unit.
-   */
+  /// A list containing all of the mixins contained in this compilation unit.
   List<ClassElement> _mixins;
 
-  /**
-   * A list containing all of the function type aliases contained in this
-   * compilation unit.
-   */
+  /// A list containing all of the function type aliases contained in this
+  /// compilation unit.
   List<FunctionTypeAliasElement> _typeAliases;
 
-  /**
-   * A list containing all of the classes contained in this compilation unit.
-   */
+  /// A list containing all of the classes contained in this compilation unit.
   List<ClassElement> _types;
 
-  /**
-   * A list containing all of the variables contained in this compilation unit.
-   */
+  /// A list containing all of the variables contained in this compilation unit.
   List<TopLevelVariableElement> _variables;
 
-  /**
-   * Resynthesized explicit top-level property accessors.
-   */
+  /// Resynthesized explicit top-level property accessors.
   UnitExplicitTopLevelAccessors _explicitTopLevelAccessors;
 
-  /**
-   * Resynthesized explicit top-level variables.
-   */
+  /// Resynthesized explicit top-level variables.
   UnitExplicitTopLevelVariables _explicitTopLevelVariables;
 
-  /**
-   * Description of top-level variable replacements that should be applied
-   * to implicit top-level variables because of re-linking top-level property
-   * accessors between different unit of the same library.
-   */
+  /// Description of top-level variable replacements that should be applied
+  /// to implicit top-level variables because of re-linking top-level property
+  /// accessors between different unit of the same library.
   Map<TopLevelVariableElement, TopLevelVariableElement>
       _topLevelVariableReplaceMap;
 
-  /**
-   * Initialize a newly created compilation unit element to have the given
-   * [name].
-   */
+  /// Initialize a newly created compilation unit element to have the given
+  /// [name].
   CompilationUnitElementImpl()
       : resynthesizerContext = null,
         _unlinkedUnit = null,
         _unlinkedPart = null,
         super(null, -1);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   CompilationUnitElementImpl.forSerialized(LibraryElementImpl enclosingLibrary,
       this.resynthesizerContext, this._unlinkedUnit, this._unlinkedPart)
       : super.forSerialized(null) {
@@ -1419,10 +1293,8 @@
     return _accessors ?? const <PropertyAccessorElement>[];
   }
 
-  /**
-   * Set the top-level accessors (getters and setters) contained in this
-   * compilation unit to the given [accessors].
-   */
+  /// Set the top-level accessors (getters and setters) contained in this
+  /// compilation unit to the given [accessors].
   void set accessors(List<PropertyAccessorElement> accessors) {
     for (PropertyAccessorElement accessor in accessors) {
       (accessor as PropertyAccessorElementImpl).enclosingElement = this;
@@ -1465,9 +1337,7 @@
     return _enums ?? const <ClassElement>[];
   }
 
-  /**
-   * Set the enums contained in this compilation unit to the given [enums].
-   */
+  /// Set the enums contained in this compilation unit to the given [enums].
   void set enums(List<ClassElement> enums) {
     _assertNotResynthesized(_unlinkedUnit);
     for (ClassElement enumDeclaration in enums) {
@@ -1487,10 +1357,8 @@
     return _functions ?? const <FunctionElement>[];
   }
 
-  /**
-   * Set the top-level functions contained in this compilation unit to the given
-   * [functions].
-   */
+  /// Set the top-level functions contained in this compilation unit to the
+  ///  given[functions].
   void set functions(List<FunctionElement> functions) {
     for (FunctionElement function in functions) {
       (function as FunctionElementImpl).enclosingElement = this;
@@ -1550,9 +1418,7 @@
     return _mixins ?? const <ClassElement>[];
   }
 
-  /**
-   * Set the mixins contained in this compilation unit to the given [mixins].
-   */
+  /// Set the mixins contained in this compilation unit to the given [mixins].
   void set mixins(List<ClassElement> mixins) {
     _assertNotResynthesized(_unlinkedUnit);
     for (MixinElementImpl type in mixins) {
@@ -1592,10 +1458,8 @@
     return _variables ?? const <TopLevelVariableElement>[];
   }
 
-  /**
-   * Set the top-level variables contained in this compilation unit to the given
-   * [variables].
-   */
+  /// Set the top-level variables contained in this compilation unit to the
+  ///  given[variables].
   void set topLevelVariables(List<TopLevelVariableElement> variables) {
     assert(!isResynthesized);
     for (TopLevelVariableElement field in variables) {
@@ -1604,10 +1468,8 @@
     this._variables = variables;
   }
 
-  /**
-   * Set the function type aliases contained in this compilation unit to the
-   * given [typeAliases].
-   */
+  /// Set the function type aliases contained in this compilation unit to the
+  /// given [typeAliases].
   void set typeAliases(List<FunctionTypeAliasElement> typeAliases) {
     _assertNotResynthesized(_unlinkedUnit);
     for (FunctionTypeAliasElement typeAlias in typeAliases) {
@@ -1629,9 +1491,7 @@
     return _types ?? const <ClassElement>[];
   }
 
-  /**
-   * Set the types contained in this compilation unit to the given [types].
-   */
+  /// Set the types contained in this compilation unit to the given [types].
   void set types(List<ClassElement> types) {
     _assertNotResynthesized(_unlinkedUnit);
     for (ClassElement type in types) {
@@ -1666,11 +1526,9 @@
   @override
   CompilationUnit computeNode() => unit;
 
-  /**
-   * Return the annotations associated with the directive at the given [offset],
-   * or an empty list if the directive has no annotations or if there is no
-   * directive at the given offset.
-   */
+  /// Return the annotations associated with the directive at the given
+  /// [offset], or an empty list if the directive has no annotations or if
+  /// there is no directive at the given offset.
   List<ElementAnnotation> getAnnotations(int offset) {
     if (annotationMap == null) {
       return const <ElementAnnotation>[];
@@ -1738,9 +1596,8 @@
     return getTypeFromTypes(className, types);
   }
 
-  /**
-   * Replace the given [from] top-level variable with [to] in this compilation unit.
-   */
+  /// Replace the given [from] top-level variable with [to] in this compilation
+  /// unit.
   void replaceTopLevelVariable(
       TopLevelVariableElement from, TopLevelVariableElement to) {
     if (_unlinkedUnit != null) {
@@ -1756,10 +1613,8 @@
     }
   }
 
-  /**
-   * Set the annotations associated with the directive at the given [offset] to
-   * the given list of [annotations].
-   */
+  /// Set the annotations associated with the directive at the given [offset] to
+  /// the given list of [annotations].
   void setAnnotations(int offset, List<ElementAnnotation> annotations) {
     annotationMap ??= new HashMap<int, List<ElementAnnotation>>();
     annotationMap[offset] = annotations;
@@ -1788,39 +1643,29 @@
   }
 }
 
-/**
- * A [FieldElement] for a 'const' or 'final' field that has an initializer.
- *
- * TODO(paulberry): we should rename this class to reflect the fact that it's
- * used for both const and final fields.  However, we shouldn't do so until
- * we've created an API for reading the values of constants; until that API is
- * available, clients are likely to read constant values by casting to
- * ConstFieldElementImpl, so it would be a breaking change to rename this
- * class.
- */
+/// A [FieldElement] for a 'const' or 'final' field that has an initializer.
+///
+/// TODO(paulberry): we should rename this class to reflect the fact that it's
+/// used for both const and final fields.  However, we shouldn't do so until
+/// we've created an API for reading the values of constants; until that API is
+/// available, clients are likely to read constant values by casting to
+/// ConstFieldElementImpl, so it would be a breaking change to rename this
+/// class.
 class ConstFieldElementImpl extends FieldElementImpl with ConstVariableElement {
-  /**
-   * Initialize a newly created synthetic field element to have the given
-   * [name] and [offset].
-   */
+  /// Initialize a newly created synthetic field element to have the given
+  /// [name] and [offset].
   ConstFieldElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created field element to have the given [name].
-   */
+  /// Initialize a newly created field element to have the given [name].
   ConstFieldElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ConstFieldElementImpl.forSerialized(
       UnlinkedVariable unlinkedVariable, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedVariable, enclosingElement);
 }
 
-/**
- * A field element representing an enum constant.
- */
+/// A field element representing an enum constant.
 class ConstFieldElementImpl_EnumValue extends ConstFieldElementImpl_ofEnum {
   final UnlinkedEnumValue _unlinkedEnumValue;
   final int _index;
@@ -1881,9 +1726,7 @@
   InterfaceType get type => _enum.type;
 }
 
-/**
- * The synthetic `values` field of an enum.
- */
+/// The synthetic `values` field of an enum.
 class ConstFieldElementImpl_EnumValues extends ConstFieldElementImpl_ofEnum {
   ConstFieldElementImpl_EnumValues(EnumElementImpl enumElement)
       : super(enumElement) {
@@ -1918,9 +1761,7 @@
   }
 }
 
-/**
- * An abstract constant field of an enum.
- */
+/// An abstract constant field of an enum.
 abstract class ConstFieldElementImpl_ofEnum extends ConstFieldElementImpl {
   final EnumElementImpl _enum;
 
@@ -1959,80 +1800,55 @@
   }
 }
 
-/**
- * A [LocalVariableElement] for a local 'const' variable that has an
- * initializer.
- */
+/// A [LocalVariableElement] for a local 'const' variable that has an
+/// initializer.
 class ConstLocalVariableElementImpl extends LocalVariableElementImpl
     with ConstVariableElement {
-  /**
-   * Initialize a newly created local variable element to have the given [name]
-   * and [offset].
-   */
+  /// Initialize a newly created local variable element to have the given [name]
+  /// and [offset].
   ConstLocalVariableElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created local variable element to have the given [name].
-   */
+  /// Initialize a newly created local variable element to have the given
+  /// [name].
   ConstLocalVariableElementImpl.forNode(Identifier name) : super.forNode(name);
 }
 
-/**
- * A concrete implementation of a [ConstructorElement].
- */
+/// A concrete implementation of a [ConstructorElement].
 class ConstructorElementImpl extends ExecutableElementImpl
     implements ConstructorElement {
-  /**
-   * The constructor to which this constructor is redirecting.
-   */
+  /// The constructor to which this constructor is redirecting.
   ConstructorElement _redirectedConstructor;
 
-  /**
-   * The initializers for this constructor (used for evaluating constant
-   * instance creation expressions).
-   */
+  /// The initializers for this constructor (used for evaluating constant
+  /// instance creation expressions).
   List<ConstructorInitializer> _constantInitializers;
 
-  /**
-   * The offset of the `.` before this constructor name or `null` if not named.
-   */
+  /// The offset of the `.` before this constructor name or `null` if not named.
   int _periodOffset;
 
-  /**
-   * Return the offset of the character immediately following the last character
-   * of this constructor's name, or `null` if not named.
-   */
+  /// Return the offset of the character immediately following the last
+  /// character of this constructor's name, or `null` if not named.
   int _nameEnd;
 
-  /**
-   * For every constructor we initially set this flag to `true`, and then
-   * set it to `false` during computing constant values if we detect that it
-   * is a part of a cycle.
-   */
+  /// For every constructor we initially set this flag to `true`, and then
+  /// set it to `false` during computing constant values if we detect that it
+  /// is a part of a cycle.
   bool _isCycleFree = true;
 
-  /**
-   * Initialize a newly created constructor element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created constructor element to have the given [name
+  /// ] and[offset].
   ConstructorElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created constructor element to have the given [name].
-   */
+  /// Initialize a newly created constructor element to have the given [name].
   ConstructorElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ConstructorElementImpl.forSerialized(
       UnlinkedExecutable serializedExecutable, ClassElementImpl enclosingClass)
       : super.forSerialized(serializedExecutable, enclosingClass);
 
-  /**
-   * Return the constant initializers for this element, which will be empty if
-   * there are no initializers, or `null` if there was an error in the source.
-   */
+  /// Return the constant initializers for this element, which will be empty if
+  /// there are no initializers, or `null` if there was an error in the source.
   List<ConstructorInitializer> get constantInitializers {
     if (_constantInitializers == null) {
       if (serializedExecutable != null) {
@@ -2058,9 +1874,7 @@
   TypeParameterizedElementMixin get enclosingTypeParameterContext =>
       super.enclosingElement as ClassElementImpl;
 
-  /**
-   * Set whether this constructor represents a factory method.
-   */
+  /// Set whether this constructor represents a factory method.
   void set factory(bool isFactory) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.FACTORY, isFactory);
@@ -2074,9 +1888,7 @@
     return hasModifier(Modifier.CONST);
   }
 
-  /**
-   * Set whether this constructor represents a 'const' constructor.
-   */
+  /// Set whether this constructor represents a 'const' constructor.
   void set isConst(bool isConst) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.CONST, isConst);
@@ -2234,9 +2046,7 @@
   ConstructorDeclaration computeNode() =>
       getNodeMatching((node) => node is ConstructorDeclaration);
 
-  /**
-   * Resynthesize the AST for the given serialized constructor initializer.
-   */
+  /// Resynthesize the AST for the given serialized constructor initializer.
   ConstructorInitializer _buildConstructorInitializer(
       UnlinkedConstructorInitializer serialized) {
     UnlinkedConstructorInitializerKind kind = serialized.kind;
@@ -2295,56 +2105,44 @@
   }
 }
 
-/**
- * A [TopLevelVariableElement] for a top-level 'const' variable that has an
- * initializer.
- */
+/// A [TopLevelVariableElement] for a top-level 'const' variable that has an
+/// initializer.
 class ConstTopLevelVariableElementImpl extends TopLevelVariableElementImpl
     with ConstVariableElement {
-  /**
-   * Initialize a newly created synthetic top-level variable element to have the
-   * given [name] and [offset].
-   */
+  /// Initialize a newly created synthetic top-level variable element to have
+  /// the given [name] and [offset].
   ConstTopLevelVariableElementImpl(String name, int offset)
       : super(name, offset);
 
-  /**
-   * Initialize a newly created top-level variable element to have the given
-   * [name].
-   */
+  /// Initialize a newly created top-level variable element to have the given
+  /// [name].
   ConstTopLevelVariableElementImpl.forNode(Identifier name)
       : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ConstTopLevelVariableElementImpl.forSerialized(
       UnlinkedVariable unlinkedVariable, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedVariable, enclosingElement);
 }
 
-/**
- * Mixin used by elements that represent constant variables and have
- * initializers.
- *
- * Note that in correct Dart code, all constant variables must have
- * initializers.  However, analyzer also needs to handle incorrect Dart code,
- * in which case there might be some constant variables that lack initializers.
- * This interface is only used for constant variables that have initializers.
- *
- * This class is not intended to be part of the public API for analyzer.
- */
+/// Mixin used by elements that represent constant variables and have
+/// initializers.
+///
+/// Note that in correct Dart code, all constant variables must have
+/// initializers.  However, analyzer also needs to handle incorrect Dart code,
+/// in which case there might be some constant variables that lack initializers.
+/// This interface is only used for constant variables that have initializers.
+///
+/// This class is not intended to be part of the public API for analyzer.
 abstract class ConstVariableElement
     implements ElementImpl, ConstantEvaluationTarget {
-  /**
-   * If this element represents a constant variable, and it has an initializer,
-   * a copy of the initializer for the constant.  Otherwise `null`.
-   *
-   * Note that in correct Dart code, all constant variables must have
-   * initializers.  However, analyzer also needs to handle incorrect Dart code,
-   * in which case there might be some constant variables that lack
-   * initializers.
-   */
+  /// If this element represents a constant variable, and it has an initializer,
+  /// a copy of the initializer for the constant.  Otherwise `null`.
+  ///
+  /// Note that in correct Dart code, all constant variables must have
+  /// initializers.  However, analyzer also needs to handle incorrect Dart code,
+  /// in which case there might be some constant variables that lack
+  /// initializers.
   Expression _constantInitializer;
 
   EvaluationResultImpl _evaluationResult;
@@ -2370,18 +2168,14 @@
     _evaluationResult = evaluationResult;
   }
 
-  /**
-   * If this element is resynthesized from the summary, return the unlinked
-   * initializer, otherwise return `null`.
-   */
+  /// If this element is resynthesized from the summary, return the unlinked
+  /// initializer, otherwise return `null`.
   UnlinkedExpr get _unlinkedConst;
 
-  /**
-   * Return a representation of the value of this variable, forcing the value
-   * to be computed if it had not previously been computed, or `null` if either
-   * this variable was not declared with the 'const' modifier or if the value of
-   * this variable could not be computed because of errors.
-   */
+  /// Return a representation of the value of this variable, forcing the value
+  /// to be computed if it had not previously been computed, or `null` if either
+  /// this variable was not declared with the 'const' modifier or if the value
+  /// of this variable could not be computed because of errors.
   DartObject computeConstantValue() {
     if (evaluationResult == null) {
       context?.computeResult(this, CONSTANT_VALUE);
@@ -2390,52 +2184,36 @@
   }
 }
 
-/**
- * A [FieldFormalParameterElementImpl] for parameters that have an initializer.
- */
+/// A [FieldFormalParameterElementImpl] for parameters that have an initializer.
 class DefaultFieldFormalParameterElementImpl
     extends FieldFormalParameterElementImpl with ConstVariableElement {
-  /**
-   * Initialize a newly created parameter element to have the given [name] and
-   * [nameOffset].
-   */
+  /// Initialize a newly created parameter element to have the given [name] and
+  /// [nameOffset].
   DefaultFieldFormalParameterElementImpl(String name, int nameOffset)
       : super(name, nameOffset);
 
-  /**
-   * Initialize a newly created parameter element to have the given [name].
-   */
+  /// Initialize a newly created parameter element to have the given [name].
   DefaultFieldFormalParameterElementImpl.forNode(Identifier name)
       : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   DefaultFieldFormalParameterElementImpl.forSerialized(
       UnlinkedParam unlinkedParam, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedParam, enclosingElement);
 }
 
-/**
- * A [ParameterElement] for parameters that have an initializer.
- */
+/// A [ParameterElement] for parameters that have an initializer.
 class DefaultParameterElementImpl extends ParameterElementImpl
     with ConstVariableElement {
-  /**
-   * Initialize a newly created parameter element to have the given [name] and
-   * [nameOffset].
-   */
+  /// Initialize a newly created parameter element to have the given [name] and
+  /// [nameOffset].
   DefaultParameterElementImpl(String name, int nameOffset)
       : super(name, nameOffset);
 
-  /**
-   * Initialize a newly created parameter element to have the given [name].
-   */
+  /// Initialize a newly created parameter element to have the given [name].
   DefaultParameterElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   DefaultParameterElementImpl.forSerialized(
       UnlinkedParam unlinkedParam, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedParam, enclosingElement);
@@ -2445,27 +2223,19 @@
       getNodeMatching((node) => node is DefaultFormalParameter);
 }
 
-/**
- * The synthetic element representing the declaration of the type `dynamic`.
- */
+/// The synthetic element representing the declaration of the type `dynamic`.
 class DynamicElementImpl extends ElementImpl implements TypeDefiningElement {
-  /**
-   * Return the unique instance of this class.
-   */
+  /// Return the unique instance of this class.
   static DynamicElementImpl get instance =>
       DynamicTypeImpl.instance.element as DynamicElementImpl;
 
   @override
   DynamicTypeImpl type;
 
-  LibraryElement _library;
-
-  /**
-   * Initialize a newly created instance of this class. Instances of this class
-   * should <b>not</b> be created except as part of creating the type associated
-   * with this element. The single instance of this class should be accessed
-   * through the method [instance].
-   */
+  /// Initialize a newly created instance of this class. Instances of this class
+  /// should <b>not</b> be created except as part of creating the type
+  /// associated with this element. The single instance of this class should be
+  /// accessed through the method [instance].
   DynamicElementImpl() : super(Keyword.DYNAMIC.lexeme, -1) {
     setModifier(Modifier.SYNTHETIC, true);
   }
@@ -2474,127 +2244,79 @@
   ElementKind get kind => ElementKind.DYNAMIC;
 
   @override
-  LibraryElement get library => _library;
-
-  set library(LibraryElement library) {
-    assert(library.name == 'dart.core');
-    _library = library;
-  }
-
-  @override
   T accept<T>(ElementVisitor<T> visitor) => null;
 }
 
-/**
- * A concrete implementation of an [ElementAnnotation].
- */
+/// A concrete implementation of an [ElementAnnotation].
 class ElementAnnotationImpl implements ElementAnnotation {
-  /**
-   * The name of the top-level variable used to mark that a function always
-   * throws, for dead code purposes.
-   */
+  /// The name of the top-level variable used to mark that a function always
+  /// throws, for dead code purposes.
   static String _ALWAYS_THROWS_VARIABLE_NAME = "alwaysThrows";
 
-  /**
-   * The name of the top-level variable used to mark a method parameter as
-   * covariant.
-   */
+  /// The name of the top-level variable used to mark a method parameter as
+  /// covariant.
   static String _COVARIANT_VARIABLE_NAME = "checked";
 
-  /**
-   * The name of the class used to mark an element as being deprecated.
-   */
+  /// The name of the class used to mark an element as being deprecated.
   static String _DEPRECATED_CLASS_NAME = "Deprecated";
 
-  /**
-   * The name of the top-level variable used to mark an element as being
-   * deprecated.
-   */
+  /// The name of the top-level variable used to mark an element as being
+  /// deprecated.
   static String _DEPRECATED_VARIABLE_NAME = "deprecated";
 
-  /**
-   * The name of the top-level variable used to mark a method as being a
-   * factory.
-   */
+  /// The name of the top-level variable used to mark a method as being a
+  /// factory.
   static String _FACTORY_VARIABLE_NAME = "factory";
 
-  /**
-   * The name of the top-level variable used to mark a class and its subclasses
-   * as being immutable.
-   */
+  /// The name of the top-level variable used to mark a class and its subclasses
+  /// as being immutable.
   static String _IMMUTABLE_VARIABLE_NAME = "immutable";
 
-  /**
-   * The name of the top-level variable used to mark a function as running
-   * a single test.
-   */
+  /// The name of the top-level variable used to mark a function as running
+  /// a single test.
   static String _IS_TEST_VARIABLE_NAME = "isTest";
 
-  /**
-   * The name of the top-level variable used to mark a function as running
-   * a test group.
-   */
+  /// The name of the top-level variable used to mark a function as running
+  /// a test group.
   static String _IS_TEST_GROUP_VARIABLE_NAME = "isTestGroup";
 
-  /**
-   * The name of the class used to JS annotate an element.
-   */
+  /// The name of the class used to JS annotate an element.
   static String _JS_CLASS_NAME = "JS";
 
-  /**
-   * The name of `js` library, used to define JS annotations.
-   */
+  /// The name of `js` library, used to define JS annotations.
   static String _JS_LIB_NAME = "js";
 
-  /**
-   * The name of `meta` library, used to define analysis annotations.
-   */
+  /// The name of `meta` library, used to define analysis annotations.
   static String _META_LIB_NAME = "meta";
 
-  /**
-   * The name of the top-level variable used to mark a method as requiring
-   * overriders to call super.
-   */
+  /// The name of the top-level variable used to mark a method as requiring
+  /// overriders to call super.
   static String _MUST_CALL_SUPER_VARIABLE_NAME = "mustCallSuper";
 
-  /**
-   * The name of `angular.meta` library, used to define angular analysis
-   * annotations.
-   */
+  /// 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.
-   */
+  /// The name of the top-level variable used to mark a method as being expected
+  /// to override an inherited method.
   static String _OVERRIDE_VARIABLE_NAME = "override";
 
-  /**
-   * The name of the top-level variable used to mark a method as being
-   * protected.
-   */
+  /// The name of the top-level variable used to mark a method as being
+  /// protected.
   static String _PROTECTED_VARIABLE_NAME = "protected";
 
-  /**
-   * The name of the top-level variable used to mark a class as implementing a
-   * proxy object.
-   */
+  /// The name of the top-level variable used to mark a class as implementing a
+  /// proxy object.
   static String PROXY_VARIABLE_NAME = "proxy";
 
-  /**
-   * The name of the class used to mark a parameter as being required.
-   */
+  /// The name of the class used to mark a parameter as being required.
   static String _REQUIRED_CLASS_NAME = "Required";
 
-  /**
-   * The name of the top-level variable used to mark a parameter as being
-   * required.
-   */
+  /// The name of the top-level variable used to mark a parameter as being
+  /// required.
   static String _REQUIRED_VARIABLE_NAME = "required";
 
-  /**
-   * The name of the top-level variable used to mark a class as being sealed.
-   */
+  /// The name of the top-level variable used to mark a class as being sealed.
   static String _SEALED_VARIABLE_NAME = "sealed";
 
   /// The name of the top-level variable used to mark a method as being
@@ -2605,34 +2327,24 @@
   /// visible for testing.
   static String _VISIBLE_FOR_TESTING_VARIABLE_NAME = "visibleForTesting";
 
-  /**
-   * The element representing the field, variable, or constructor being used as
-   * an annotation.
-   */
+  /// The element representing the field, variable, or constructor being used as
+  /// an annotation.
   Element element;
 
-  /**
-   * The compilation unit in which this annotation appears.
-   */
+  /// The compilation unit in which this annotation appears.
   CompilationUnitElementImpl compilationUnit;
 
-  /**
-   * The AST of the annotation itself, cloned from the resolved AST for the
-   * source code.
-   */
+  /// The AST of the annotation itself, cloned from the resolved AST for the
+  /// source code.
   Annotation annotationAst;
 
-  /**
-   * The result of evaluating this annotation as a compile-time constant
-   * expression, or `null` if the compilation unit containing the variable has
-   * not been resolved.
-   */
+  /// The result of evaluating this annotation as a compile-time constant
+  /// expression, or `null` if the compilation unit containing the variable has
+  /// not been resolved.
   EvaluationResultImpl evaluationResult;
 
-  /**
-   * Initialize a newly created annotation. The given [compilationUnit] is the
-   * compilation unit in which the annotation appears.
-   */
+  /// Initialize a newly created annotation. The given [compilationUnit] is the
+  /// compilation unit in which the annotation appears.
   ElementAnnotationImpl(this.compilationUnit);
 
   @override
@@ -2647,10 +2359,8 @@
       element.name == _ALWAYS_THROWS_VARIABLE_NAME &&
       element.library?.name == _META_LIB_NAME;
 
-  /**
-   * Return `true` if this annotation marks the associated parameter as being
-   * covariant, meaning it is allowed to have a narrower type in an override.
-   */
+  /// Return `true` if this annotation marks the associated parameter as being
+  /// covariant, meaning it is allowed to have a narrower type in an override.
   bool get isCovariant =>
       element is PropertyAccessorElement &&
       element.name == _COVARIANT_VARIABLE_NAME &&
@@ -2749,9 +2459,7 @@
       element.name == _VISIBLE_FOR_TESTING_VARIABLE_NAME &&
       element.library?.name == _META_LIB_NAME;
 
-  /**
-   * Get the library containing this annotation.
-   */
+  /// Get the library containing this annotation.
   Source get librarySource => compilationUnit.librarySource;
 
   @override
@@ -2772,100 +2480,66 @@
   String toString() => '@$element';
 }
 
-/**
- * A base class for concrete implementations of an [Element].
- */
+/// A base class for concrete implementations of an [Element].
 abstract class ElementImpl implements Element {
-  /**
-   * An Unicode right arrow.
-   */
+  /// An Unicode right arrow.
   static final String RIGHT_ARROW = " \u2192 ";
 
   static int _NEXT_ID = 0;
 
   final int id = _NEXT_ID++;
 
-  /**
-   * The enclosing element of this element, or `null` if this element is at the
-   * root of the element structure.
-   */
+  /// The enclosing element of this element, or `null` if this element is at the
+  /// root of the element structure.
   ElementImpl _enclosingElement;
 
-  /**
-   * The name of this element.
-   */
+  /// The name of this element.
   String _name;
 
-  /**
-   * The offset of the name of this element in the file that contains the
-   * declaration of this element.
-   */
+  /// The offset of the name of this element in the file that contains the
+  /// declaration of this element.
   int _nameOffset = 0;
 
-  /**
-   * A bit-encoded form of the modifiers associated with this element.
-   */
+  /// A bit-encoded form of the modifiers associated with this element.
   int _modifiers = 0;
 
-  /**
-   * A list containing all of the metadata associated with this element.
-   */
+  /// A list containing all of the metadata associated with this element.
   List<ElementAnnotation> _metadata;
 
-  /**
-   * A cached copy of the calculated hashCode for this element.
-   */
+  /// A cached copy of the calculated hashCode for this element.
   int _cachedHashCode;
 
-  /**
-   * A cached copy of the calculated location for this element.
-   */
+  /// A cached copy of the calculated location for this element.
   ElementLocation _cachedLocation;
 
-  /**
-   * The documentation comment for this element.
-   */
+  /// The documentation comment for this element.
   String _docComment;
 
-  /**
-   * The offset of the beginning of the element's code in the file that contains
-   * the element, or `null` if the element is synthetic.
-   */
+  /// The offset of the beginning of the element's code in the file that
+  /// contains the element, or `null` if the element is synthetic.
   int _codeOffset;
 
-  /**
-   * The length of the element's code, or `null` if the element is synthetic.
-   */
+  /// The length of the element's code, or `null` if the element is synthetic.
   int _codeLength;
 
-  /**
-   * Initialize a newly created element to have the given [name] at the given
-   * [_nameOffset].
-   */
+  /// Initialize a newly created element to have the given [name] at the given
+  /// [_nameOffset].
   ElementImpl(String name, this._nameOffset) {
     this._name = StringUtilities.intern(name);
   }
 
-  /**
-   * Initialize a newly created element to have the given [name].
-   */
+  /// Initialize a newly created element to have the given [name].
   ElementImpl.forNode(Identifier name)
       : this(name == null ? "" : name.name, name == null ? -1 : name.offset);
 
-  /**
-   * Initialize from serialized information.
-   */
+  /// Initialize from serialized information.
   ElementImpl.forSerialized(this._enclosingElement);
 
-  /**
-   * The length of the element's code, or `null` if the element is synthetic.
-   */
+  /// The length of the element's code, or `null` if the element is synthetic.
   int get codeLength => _codeLength;
 
-  /**
-   * The offset of the beginning of the element's code in the file that contains
-   * the element, or `null` if the element is synthetic.
-   */
+  /// The offset of the beginning of the element's code in the file that
+  /// contains the element, or `null` if the element is synthetic.
   int get codeOffset => _codeOffset;
 
   @override
@@ -2882,9 +2556,7 @@
   @override
   String get documentationComment => _docComment;
 
-  /**
-   * The documentation comment source for this element.
-   */
+  /// The documentation comment source for this element.
   void set documentationComment(String doc) {
     assert(!isResynthesized);
     _docComment = doc?.replaceAll('\r\n', '\n');
@@ -2893,32 +2565,52 @@
   @override
   Element get enclosingElement => _enclosingElement;
 
-  /**
-   * Set the enclosing element of this element to the given [element].
-   */
+  /// Set the enclosing element of this element to the given [element].
   void set enclosingElement(Element element) {
     _enclosingElement = element as ElementImpl;
   }
 
-  /**
-   * Return the enclosing unit element (which might be the same as `this`), or
-   * `null` if this element is not contained in any compilation unit.
-   */
+  /// Return the enclosing unit element (which might be the same as `this`), or
+  /// `null` if this element is not contained in any compilation unit.
   CompilationUnitElementImpl get enclosingUnit {
     return _enclosingElement?.enclosingUnit;
   }
 
   @override
-  bool get hasAlwaysThrows =>
-      metadata.any((ElementAnnotation annotation) => annotation.isAlwaysThrows);
+  bool get hasAlwaysThrows {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isAlwaysThrows) {
+        return true;
+      }
+    }
+    return false;
+  }
 
   @override
-  bool get hasDeprecated =>
-      metadata.any((ElementAnnotation annotation) => annotation.isDeprecated);
+  bool get hasDeprecated {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isDeprecated) {
+        return true;
+      }
+    }
+    return false;
+  }
 
   @override
-  bool get hasFactory =>
-      metadata.any((ElementAnnotation annotation) => annotation.isFactory);
+  bool get hasFactory {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isFactory) {
+        return true;
+      }
+    }
+    return false;
+  }
 
   @override
   int get hashCode {
@@ -2931,55 +2623,11 @@
   }
 
   @override
-  bool get hasIsTest =>
-      metadata.any((ElementAnnotation annotation) => annotation.isIsTest);
-
-  @override
-  bool get hasIsTestGroup =>
-      metadata.any((ElementAnnotation annotation) => annotation.isIsTestGroup);
-
-  @override
-  bool get hasJS =>
-      metadata.any((ElementAnnotation annotation) => annotation.isJS);
-
-  @override
-  bool get hasOverride =>
-      metadata.any((ElementAnnotation annotation) => annotation.isOverride);
-
-  @override
-  bool get hasProtected =>
-      metadata.any((ElementAnnotation annotation) => annotation.isProtected);
-
-  @override
-  bool get hasRequired =>
-      metadata.any((ElementAnnotation annotation) => annotation.isRequired);
-
-  @override
-  bool get hasSealed =>
-      metadata.any((ElementAnnotation annotation) => annotation.isSealed);
-
-  @override
-  bool get hasVisibleForTemplate => metadata
-      .any((ElementAnnotation annotation) => annotation.isVisibleForTemplate);
-
-  @override
-  bool get hasVisibleForTesting => metadata
-      .any((ElementAnnotation annotation) => annotation.isVisibleForTesting);
-
-  /**
-   * Return an identifier that uniquely identifies this element among the
-   * children of this element's parent.
-   */
-  String get identifier => name;
-
-  @override
-  bool get isAlwaysThrows =>
-      metadata.any((ElementAnnotation annotation) => annotation.isAlwaysThrows);
-
-  @override
-  bool get isDeprecated {
-    for (ElementAnnotation annotation in metadata) {
-      if (annotation.isDeprecated) {
+  bool get hasIsTest {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isIsTest) {
         return true;
       }
     }
@@ -2987,9 +2635,11 @@
   }
 
   @override
-  bool get isFactory {
-    for (ElementAnnotation annotation in metadata) {
-      if (annotation.isFactory) {
+  bool get hasIsTestGroup {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isIsTestGroup) {
         return true;
       }
     }
@@ -2997,8 +2647,10 @@
   }
 
   @override
-  bool get isJS {
-    for (ElementAnnotation annotation in metadata) {
+  bool get hasJS {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
       if (annotation.isJS) {
         return true;
       }
@@ -3007,8 +2659,10 @@
   }
 
   @override
-  bool get isOverride {
-    for (ElementAnnotation annotation in metadata) {
+  bool get hasOverride {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
       if (annotation.isOverride) {
         return true;
       }
@@ -3017,6 +2671,85 @@
   }
 
   @override
+  bool get hasProtected {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isProtected) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  bool get hasRequired {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isRequired) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  bool get hasSealed {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isSealed) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  bool get hasVisibleForTemplate {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isVisibleForTemplate) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  @override
+  bool get hasVisibleForTesting {
+    var metadata = this.metadata;
+    for (var i = 0; i < metadata.length; i++) {
+      var annotation = metadata[i];
+      if (annotation.isVisibleForTesting) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /// Return an identifier that uniquely identifies this element among the
+  /// children of this element's parent.
+  String get identifier => name;
+
+  @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 {
     String name = displayName;
     if (name == null) {
@@ -3026,49 +2759,27 @@
   }
 
   @override
-  bool get isProtected {
-    for (ElementAnnotation annotation in metadata) {
-      if (annotation.isProtected) {
-        return true;
-      }
-    }
-    return false;
-  }
+  bool get isProtected => hasProtected;
 
   @override
   bool get isPublic => !isPrivate;
 
   @override
-  bool get isRequired {
-    for (ElementAnnotation annotation in metadata) {
-      if (annotation.isRequired) {
-        return true;
-      }
-    }
-    return false;
-  }
+  bool get isRequired => hasRequired;
 
-  /**
-   * Return `true` if this element is resynthesized from a summary.
-   */
+  /// Return `true` if this element is resynthesized from a summary.
   bool get isResynthesized => enclosingUnit?.resynthesizerContext != null;
 
   @override
   bool get isSynthetic => hasModifier(Modifier.SYNTHETIC);
 
-  /**
-   * Set whether this element is synthetic.
-   */
+  /// Set whether this element is synthetic.
   void set isSynthetic(bool isSynthetic) {
     setModifier(Modifier.SYNTHETIC, isSynthetic);
   }
 
-  bool get isVisibleForTemplate => metadata
-      .any((ElementAnnotation annotation) => annotation.isVisibleForTemplate);
-
   @override
-  bool get isVisibleForTesting => metadata
-      .any((ElementAnnotation annotation) => annotation.isVisibleForTesting);
+  bool get isVisibleForTesting => hasVisibleForTesting;
 
   @override
   LibraryElement get library =>
@@ -3100,9 +2811,7 @@
   @override
   String get name => _name;
 
-  /**
-   * Changes the name of this element.
-   */
+  /// Changes the name of this element.
   void set name(String name) {
     this._name = name;
   }
@@ -3113,10 +2822,8 @@
   @override
   int get nameOffset => _nameOffset;
 
-  /**
-   * Sets the offset of the name of this element in the file that contains the
-   * declaration of this element.
-   */
+  /// Sets the offset of the name of this element in the file that contains the
+  /// declaration of this element.
   void set nameOffset(int offset) {
     _nameOffset = offset;
   }
@@ -3129,11 +2836,9 @@
     return _enclosingElement.source;
   }
 
-  /**
-   * Return the context to resolve type parameters in, or `null` if neither this
-   * element nor any of its ancestors is of a kind that can declare type
-   * parameters.
-   */
+  /// Return the context to resolve type parameters in, or `null` if neither
+  /// this element nor any of its ancestors is of a kind that can declare type
+  /// parameters.
   TypeParameterizedElementMixin get typeParameterContext {
     return _enclosingElement?.typeParameterContext;
   }
@@ -3151,10 +2856,8 @@
         object.location == location;
   }
 
-  /**
-   * Append to the given [buffer] a comma-separated list of the names of the
-   * types of this element and every enclosing element.
-   */
+  /// Append to the given [buffer] a comma-separated list of the names of the
+  /// types of this element and every enclosing element.
   void appendPathTo(StringBuffer buffer) {
     Element element = this;
     while (element != null) {
@@ -3172,9 +2875,7 @@
     }
   }
 
-  /**
-   * Append a textual representation of this element to the given [buffer].
-   */
+  /// Append a textual representation of this element to the given [buffer].
   void appendTo(StringBuffer buffer) {
     if (_name == null) {
       buffer.write("<unnamed ");
@@ -3191,16 +2892,12 @@
   @override
   AstNode computeNode() => getNodeMatching((node) => node is AstNode);
 
-  /**
-   * Set this element as the enclosing element for given [element].
-   */
+  /// Set this element as the enclosing element for given [element].
   void encloseElement(ElementImpl element) {
     element.enclosingElement = this;
   }
 
-  /**
-   * Set this element as the enclosing element for given [elements].
-   */
+  /// Set this element as the enclosing element for given [elements].
   void encloseElements(List<Element> elements) {
     for (Element element in elements) {
       (element as ElementImpl)._enclosingElement = this;
@@ -3212,10 +2909,8 @@
     return getAncestorStatic<E>(_enclosingElement, predicate);
   }
 
-  /**
-   * Return the child of this element that is uniquely identified by the given
-   * [identifier], or `null` if there is no such child.
-   */
+  /// Return the child of this element that is uniquely identified by the given
+  /// [identifier], or `null` if there is no such child.
   ElementImpl getChild(String identifier) => null;
 
   @override
@@ -3230,9 +2925,7 @@
     return shortName;
   }
 
-  /**
-   * Return the resolved [AstNode] of the given type enclosing [getNameOffset].
-   */
+  /// Return the resolved [AstNode] of the given type enclosing [getNameOffset].
   AstNode getNodeMatching(Predicate<AstNode> predicate) {
     CompilationUnit unit = this.unit;
     if (unit == null) {
@@ -3246,9 +2939,7 @@
     return node.getAncestor(predicate);
   }
 
-  /**
-   * Return `true` if this element has the given [modifier] associated with it.
-   */
+  /// Return `true` if this element has the given [modifier] associated with it.
   bool hasModifier(Modifier modifier) =>
       BooleanArray.get(_modifiers, modifier.ordinal);
 
@@ -3260,9 +2951,7 @@
     return true;
   }
 
-  /**
-   * Use the given [visitor] to visit all of the [children] in the given array.
-   */
+  /// Use the given [visitor] to visit all of the [children] in the given array.
   void safelyVisitChildren(List<Element> children, ElementVisitor visitor) {
     if (children != null) {
       for (Element child in children) {
@@ -3271,19 +2960,15 @@
     }
   }
 
-  /**
-   * Set the code range for this element.
-   */
+  /// Set the code range for this element.
   void setCodeRange(int offset, int length) {
     assert(!isResynthesized);
     _codeOffset = offset;
     _codeLength = length;
   }
 
-  /**
-   * Set whether the given [modifier] is associated with this element to
-   * correspond to the given [value].
-   */
+  /// Set whether the given [modifier] is associated with this element to
+  /// correspond to the given [value].
   void setModifier(Modifier modifier, bool value) {
     _modifiers = BooleanArray.set(_modifiers, modifier.ordinal, value);
   }
@@ -3300,9 +2985,7 @@
     // There are no children to visit
   }
 
-  /**
-   * Return annotations for the given [unlinkedConsts] in the [unit].
-   */
+  /// Return annotations for the given [unlinkedConsts] in the [unit].
   List<ElementAnnotation> _buildAnnotations(
       CompilationUnitElementImpl unit, List<UnlinkedExpr> unlinkedConsts) {
     int length = unlinkedConsts.length;
@@ -3318,11 +3001,9 @@
     }
   }
 
-  /**
-   * If the element associated with the given [type] is a generic function type
-   * element, then make it a child of this element. Return the [type] as a
-   * convenience.
-   */
+  /// If the element associated with the given [type] is a generic function type
+  /// element, then make it a child of this element. Return the [type] as a
+  /// convenience.
   DartType _checkElementOfType(DartType type) {
     Element element = type?.element;
     if (element is GenericFunctionTypeElementImpl &&
@@ -3332,11 +3013,9 @@
     return type;
   }
 
-  /**
-   * If the given [type] is a generic function type, then the element associated
-   * with the type is implicitly a child of this element and should be visted by
-   * the given [visitor].
-   */
+  /// If the given [type] is a generic function type, then the element
+  /// associated with the type is implicitly a child of this element and should
+  /// be visited by the given [visitor].
   void _safelyVisitPossibleChild(DartType type, ElementVisitor visitor) {
     Element element = type?.element;
     if (element is GenericFunctionTypeElementImpl &&
@@ -3365,38 +3044,24 @@
   }
 }
 
-/**
- * A concrete implementation of an [ElementLocation].
- */
+/// A concrete implementation of an [ElementLocation].
 class ElementLocationImpl implements ElementLocation {
-  /**
-   * The character used to separate components in the encoded form.
-   */
+  /// The character used to separate components in the encoded form.
   static int _SEPARATOR_CHAR = 0x3B;
 
-  /**
-   * The path to the element whose location is represented by this object.
-   */
+  /// The path to the element whose location is represented by this object.
   List<String> _components;
 
-  /**
-   * The object managing [indexKeyId] and [indexLocationId].
-   */
+  /// The object managing [indexKeyId] and [indexLocationId].
   Object indexOwner;
 
-  /**
-   * A cached id of this location in index.
-   */
+  /// A cached id of this location in index.
   int indexKeyId;
 
-  /**
-   * A cached id of this location in index.
-   */
+  /// A cached id of this location in index.
   int indexLocationId;
 
-  /**
-   * Initialize a newly created location to represent the given [element].
-   */
+  /// Initialize a newly created location to represent the given [element].
   ElementLocationImpl.con1(Element element) {
     List<String> components = new List<String>();
     Element ancestor = element;
@@ -3407,16 +3072,12 @@
     this._components = components;
   }
 
-  /**
-   * Initialize a newly created location from the given [encoding].
-   */
+  /// Initialize a newly created location from the given [encoding].
   ElementLocationImpl.con2(String encoding) {
     this._components = _decode(encoding);
   }
 
-  /**
-   * Initialize a newly created location from the given [components].
-   */
+  /// Initialize a newly created location from the given [components].
   ElementLocationImpl.con3(List<String> components) {
     this._components = components;
   }
@@ -3471,10 +3132,8 @@
   @override
   String toString() => encoding;
 
-  /**
-   * Decode the [encoding] of a location into a list of components and return
-   * the components.
-   */
+  /// Decode the [encoding] of a location into a list of components and return
+  /// the components.
   List<String> _decode(String encoding) {
     List<String> components = new List<String>();
     StringBuffer buffer = new StringBuffer();
@@ -3501,9 +3160,7 @@
     return components;
   }
 
-  /**
-   * Append an encoded form of the given [component] to the given [buffer].
-   */
+  /// Append an encoded form of the given [component] to the given [buffer].
   void _encode(StringBuffer buffer, String component) {
     int length = component.length;
     for (int i = 0; i < length; i++) {
@@ -3516,45 +3173,31 @@
   }
 }
 
-/**
- * An [AbstractClassElementImpl] which is an enum.
- */
+/// An [AbstractClassElementImpl] which is an enum.
 class EnumElementImpl extends AbstractClassElementImpl {
-  /**
-   * The unlinked representation of the enum in the summary.
-   */
+  /// The unlinked representation of the enum in the summary.
   final UnlinkedEnum _unlinkedEnum;
 
-  /**
-   * The type defined by the enum.
-   */
+  /// The type defined by the enum.
   InterfaceType _type;
 
-  /**
-   * Initialize a newly created class element to have the given [name] at the
-   * given [offset] in the file that contains the declaration of this element.
-   */
+  /// Initialize a newly created class element to have the given [name] at the
+  /// given [offset] in the file that contains the declaration of this element.
   EnumElementImpl(String name, int offset)
       : _unlinkedEnum = null,
         super(name, offset);
 
-  /**
-   * Initialize a newly created class element to have the given [name].
-   */
+  /// Initialize a newly created class element to have the given [name].
   EnumElementImpl.forNode(Identifier name)
       : _unlinkedEnum = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   EnumElementImpl.forSerialized(
       this._unlinkedEnum, CompilationUnitElementImpl enclosingUnit)
       : super.forSerialized(enclosingUnit);
 
-  /**
-   * Set whether this class is abstract.
-   */
+  /// Set whether this class is abstract.
   void set abstract(bool isAbstract) {
     _assertNotResynthesized(_unlinkedEnum);
   }
@@ -3655,6 +3298,9 @@
   bool get isProxy => false;
 
   @override
+  bool get isSimplyBounded => true;
+
+  @override
   bool get isValidMixin => false;
 
   @override
@@ -3727,9 +3373,7 @@
     }
   }
 
-  /**
-   * Create the only method enums have - `toString()`.
-   */
+  /// Create the only method enums have - `toString()`.
   void createToStringMethodElement() {
     var method = new MethodElementImpl('toString', -1);
     if (_unlinkedEnum != null) {
@@ -3773,62 +3417,43 @@
   }
 }
 
-/**
- * A base class for concrete implementations of an [ExecutableElement].
- */
+/// A base class for concrete implementations of an [ExecutableElement].
 abstract class ExecutableElementImpl extends ElementImpl
     with TypeParameterizedElementMixin
     implements ExecutableElement {
-  /**
-   * The unlinked representation of the executable in the summary.
-   */
+  /// The unlinked representation of the executable in the summary.
   final UnlinkedExecutable serializedExecutable;
 
-  /**
-   * A list containing all of the parameters defined by this executable element.
-   */
+  /// A list containing all of the parameters defined by this executable
+  /// element.
   List<ParameterElement> _parameters;
 
-  /**
-   * The declared return type of this executable element.
-   */
+  /// The declared return type of this executable element.
   DartType _declaredReturnType;
 
-  /**
-   * The inferred return type of this executable element.
-   */
+  /// The inferred return type of this executable element.
   DartType _returnType;
 
-  /**
-   * The type of function defined by this executable element.
-   */
+  /// The type of function defined by this executable element.
   FunctionType _type;
 
-  /**
-   * Initialize a newly created executable element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created executable element to have the given [name] and
+  /// [offset].
   ExecutableElementImpl(String name, int offset)
       : serializedExecutable = null,
         super(name, offset);
 
-  /**
-   * Initialize a newly created executable element to have the given [name].
-   */
+  /// Initialize a newly created executable element to have the given [name].
   ExecutableElementImpl.forNode(Identifier name)
       : serializedExecutable = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ExecutableElementImpl.forSerialized(
       this.serializedExecutable, ElementImpl enclosingElement)
       : super.forSerialized(enclosingElement);
 
-  /**
-   * Set whether this executable element's body is asynchronous.
-   */
+  /// Set whether this executable element's body is asynchronous.
   void set asynchronous(bool isAsynchronous) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.ASYNCHRONOUS, isAsynchronous);
@@ -3871,17 +3496,13 @@
     return super.documentationComment;
   }
 
-  /**
-   * Set whether this executable element is external.
-   */
+  /// Set whether this executable element is external.
   void set external(bool isExternal) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.EXTERNAL, isExternal);
   }
 
-  /**
-   * Set whether this method's body is a generator.
-   */
+  /// Set whether this method's body is a generator.
   void set generator(bool isGenerator) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.GENERATOR, isGenerator);
@@ -3896,9 +3517,7 @@
     return hasModifier(Modifier.IMPLICIT_TYPE);
   }
 
-  /**
-   * Set whether this executable element has an implicit return type.
-   */
+  /// Set whether this executable element has an implicit return type.
   void set hasImplicitReturnType(bool hasImplicitReturnType) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.IMPLICIT_TYPE, hasImplicitReturnType);
@@ -3979,10 +3598,8 @@
     return _parameters ?? const <ParameterElement>[];
   }
 
-  /**
-   * Set the parameters defined by this executable element to the given
-   * [parameters].
-   */
+  /// Set the parameters defined by this executable element to the given
+  /// [parameters].
   void set parameters(List<ParameterElement> parameters) {
     _assertNotResynthesized(serializedExecutable);
     for (ParameterElement parameter in parameters) {
@@ -4025,10 +3642,8 @@
     _type = type;
   }
 
-  /**
-   * Set the type parameters defined by this executable element to the given
-   * [typeParameters].
-   */
+  /// Set the type parameters defined by this executable element to the given
+  /// [typeParameters].
   void set typeParameters(List<TypeParameterElement> typeParameters) {
     _assertNotResynthesized(serializedExecutable);
     for (TypeParameterElement parameter in typeParameters) {
@@ -4114,48 +3729,32 @@
   }
 }
 
-/**
- * A concrete implementation of an [ExportElement].
- */
+/// A concrete implementation of an [ExportElement].
 class ExportElementImpl extends UriReferencedElementImpl
     implements ExportElement {
-  /**
-   * The unlinked representation of the export in the summary.
-   */
+  /// The unlinked representation of the export in the summary.
   final UnlinkedExportPublic _unlinkedExportPublic;
 
-  /**
-   * The unlinked representation of the export in the summary.
-   */
+  /// The unlinked representation of the export in the summary.
   final UnlinkedExportNonPublic _unlinkedExportNonPublic;
 
-  /**
-   * The library that is exported from this library by this export directive.
-   */
+  /// The library that is exported from this library by this export directive.
   LibraryElement _exportedLibrary;
 
-  /**
-   * The combinators that were specified as part of the export directive in the
-   * order in which they were specified.
-   */
+  /// The combinators that were specified as part of the export directive in the
+  /// order in which they were specified.
   List<NamespaceCombinator> _combinators;
 
-  /**
-   * The URI that was selected based on the [context] declared variables.
-   */
+  /// The URI that was selected based on the [context] declared variables.
   String _selectedUri;
 
-  /**
-   * Initialize a newly created export element at the given [offset].
-   */
+  /// Initialize a newly created export element at the given [offset].
   ExportElementImpl(int offset)
       : _unlinkedExportPublic = null,
         _unlinkedExportNonPublic = null,
         super(null, offset);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ExportElementImpl.forSerialized(this._unlinkedExportPublic,
       this._unlinkedExportNonPublic, LibraryElementImpl enclosingLibrary)
       : super.forSerialized(enclosingLibrary);
@@ -4277,32 +3876,22 @@
   }
 }
 
-/**
- * A concrete implementation of a [FieldElement].
- */
+/// A concrete implementation of a [FieldElement].
 class FieldElementImpl extends PropertyInducingElementImpl
     implements FieldElement {
-  /**
-   * Initialize a newly created synthetic field element to have the given [name]
-   * at the given [offset].
-   */
+  /// Initialize a newly created synthetic field element to have the given
+  /// [name] at the given [offset].
   FieldElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created field element to have the given [name].
-   */
+  /// Initialize a newly created field element to have the given [name].
   FieldElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   FieldElementImpl.forSerialized(
       UnlinkedVariable unlinkedVariable, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedVariable, enclosingElement);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   factory FieldElementImpl.forSerializedFactory(
       UnlinkedVariable unlinkedVariable, ClassElementImpl enclosingClass) {
     if (unlinkedVariable.initializer?.bodyExpr != null &&
@@ -4321,9 +3910,7 @@
   @override
   ClassElement get enclosingElement => super.enclosingElement as ClassElement;
 
-  /**
-   * Return `true` if this field was explicitly marked as being covariant.
-   */
+  @override
   bool get isCovariant {
     if (_unlinkedVariable != null) {
       return _unlinkedVariable.isCovariant;
@@ -4331,9 +3918,7 @@
     return hasModifier(Modifier.COVARIANT);
   }
 
-  /**
-   * Set whether this field is explicitly marked as being covariant.
-   */
+  /// Set whether this field is explicitly marked as being covariant.
   void set isCovariant(bool isCovariant) {
     _assertNotResynthesized(_unlinkedVariable);
     setModifier(Modifier.COVARIANT, isCovariant);
@@ -4351,9 +3936,7 @@
     return hasModifier(Modifier.STATIC);
   }
 
-  /**
-   * Set whether this field is static.
-   */
+  /// Set whether this field is static.
   void set isStatic(bool isStatic) {
     _assertNotResynthesized(_unlinkedVariable);
     setModifier(Modifier.STATIC, isStatic);
@@ -4379,33 +3962,23 @@
   }
 }
 
-/**
- * A [ParameterElementImpl] that has the additional information of the
- * [FieldElement] associated with the parameter.
- */
+/// A [ParameterElementImpl] that has the additional information of the
+/// [FieldElement] associated with the parameter.
 class FieldFormalParameterElementImpl extends ParameterElementImpl
     implements FieldFormalParameterElement {
-  /**
-   * The field associated with this field formal parameter.
-   */
+  /// The field associated with this field formal parameter.
   FieldElement _field;
 
-  /**
-   * Initialize a newly created parameter element to have the given [name] and
-   * [nameOffset].
-   */
+  /// Initialize a newly created parameter element to have the given [name] and
+  /// [nameOffset].
   FieldFormalParameterElementImpl(String name, int nameOffset)
       : super(name, nameOffset);
 
-  /**
-   * Initialize a newly created parameter element to have the given [name].
-   */
+  /// Initialize a newly created parameter element to have the given [name].
   FieldFormalParameterElementImpl.forNode(Identifier name)
       : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   FieldFormalParameterElementImpl.forSerialized(
       UnlinkedParam unlinkedParam, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedParam, enclosingElement);
@@ -4460,50 +4033,34 @@
       visitor.visitFieldFormalParameterElement(this);
 }
 
-/**
- * A concrete implementation of a [FunctionElement].
- */
+/// A concrete implementation of a [FunctionElement].
 class FunctionElementImpl extends ExecutableElementImpl
     implements FunctionElement, FunctionTypedElementImpl {
-  /**
-   * The offset to the beginning of the visible range for this element.
-   */
+  /// The offset to the beginning of the visible range for this element.
   int _visibleRangeOffset = 0;
 
-  /**
-   * The length of the visible range for this element, or `-1` if this element
-   * does not have a visible range.
-   */
+  /// The length of the visible range for this element, or `-1` if this element
+  /// does not have a visible range.
   int _visibleRangeLength = -1;
 
-  /**
-   * Initialize a newly created function element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created function element to have the given [name] and
+  /// [offset].
   FunctionElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created function element to have the given [name].
-   */
+  /// Initialize a newly created function element to have the given [name].
   FunctionElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize a newly created function element to have no name and the given
-   * [nameOffset]. This is used for function expressions, that have no name.
-   */
+  /// Initialize a newly created function element to have no name and the given
+  /// [nameOffset]. This is used for function expressions, that have no name.
   FunctionElementImpl.forOffset(int nameOffset) : super("", nameOffset);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   FunctionElementImpl.forSerialized(
       UnlinkedExecutable serializedExecutable, ElementImpl enclosingElement)
       : super.forSerialized(serializedExecutable, enclosingElement);
 
-  /**
-   * Synthesize an unnamed function element that takes [parameters] and returns
-   * [returnType].
-   */
+  /// Synthesize an unnamed function element that takes [parameters] and returns
+  /// [returnType].
   FunctionElementImpl.synthetic(
       List<ParameterElement> parameters, DartType returnType)
       : super("", -1) {
@@ -4571,38 +4128,30 @@
   FunctionDeclaration computeNode() =>
       getNodeMatching((node) => node is FunctionDeclaration);
 
-  /**
-   * Set the visible range for this element to the range starting at the given
-   * [offset] with the given [length].
-   */
+  /// Set the visible range for this element to the range starting at the given
+  /// [offset] with the given [length].
   void setVisibleRange(int offset, int length) {
     _assertNotResynthesized(serializedExecutable);
     _visibleRangeOffset = offset;
     _visibleRangeLength = length;
   }
 
-  /**
-   * Set the parameters defined by this type alias to the given [parameters]
-   * without becoming the parent of the parameters. This should only be used by
-   * the [TypeResolverVisitor] when creating a synthetic type alias.
-   */
+  /// Set the parameters defined by this type alias to the given [parameters]
+  /// without becoming the parent of the parameters. This should only be used by
+  /// the [TypeResolverVisitor] when creating a synthetic type alias.
   void shareParameters(List<ParameterElement> parameters) {
     this._parameters = parameters;
   }
 
-  /**
-   * Set the type parameters defined by this type alias to the given
-   * [parameters] without becoming the parent of the parameters. This should
-   * only be used by the [TypeResolverVisitor] when creating a synthetic type
-   * alias.
-   */
+  /// Set the type parameters defined by this type alias to the given
+  /// [parameters] without becoming the parent of the parameters. This should
+  /// only be used by the [TypeResolverVisitor] when creating a synthetic type
+  /// alias.
   void shareTypeParameters(List<TypeParameterElement> typeParameters) {
     this._typeParameterElements = typeParameters;
   }
 
-  /**
-   * Create and return [FunctionElement]s for the given [unlinkedFunctions].
-   */
+  /// Create and return [FunctionElement]s for the given [unlinkedFunctions].
   static List<FunctionElement> resynthesizeList(
       ExecutableElementImpl executableElement,
       List<UnlinkedExecutable> unlinkedFunctions) {
@@ -4620,17 +4169,13 @@
   }
 }
 
-/**
- * Implementation of [FunctionElementImpl] for a function typed parameter.
- */
+/// Implementation of [FunctionElementImpl] for a function typed parameter.
 class FunctionElementImpl_forFunctionTypedParameter
     extends FunctionElementImpl {
   @override
   final CompilationUnitElementImpl enclosingUnit;
 
-  /**
-   * The enclosing function typed [ParameterElementImpl].
-   */
+  /// The enclosing function typed [ParameterElementImpl].
   final ParameterElementImpl _parameter;
 
   FunctionElementImpl_forFunctionTypedParameter(
@@ -4645,10 +4190,8 @@
   bool get isSynthetic => true;
 }
 
-/**
- * Implementation of [FunctionElementImpl] for a synthetic function element
- * that was synthesized by a LUB computation.
- */
+/// Implementation of [FunctionElementImpl] for a synthetic function element
+/// that was synthesized by a LUB computation.
 class FunctionElementImpl_forLUB extends FunctionElementImpl {
   final EntityRef _entityRef;
 
@@ -4695,54 +4238,38 @@
   List<UnlinkedTypeParam> get unlinkedTypeParams => _entityRef.typeParameters;
 }
 
-/**
- * Common internal interface shared by elements whose type is a function type.
- *
- * Clients may not extend, implement or mix-in this class.
- */
+/// Common internal interface shared by elements whose type is a function type.
+///
+/// Clients may not extend, implement or mix-in this class.
 abstract class FunctionTypedElementImpl
     implements ElementImpl, FunctionTypedElement {
   void set returnType(DartType returnType);
 }
 
-/**
- * The element used for a generic function type.
- *
- * Clients may not extend, implement or mix-in this class.
- */
+/// The element used for a generic function type.
+///
+/// Clients may not extend, implement or mix-in this class.
 class GenericFunctionTypeElementImpl extends ElementImpl
     with TypeParameterizedElementMixin
     implements GenericFunctionTypeElement, FunctionTypedElementImpl {
-  /**
-   * The unlinked representation of the generic function type in the summary.
-   */
+  /// The unlinked representation of the generic function type in the summary.
   EntityRef _entityRef;
 
-  /**
-   * The declared return type of the function.
-   */
+  /// The declared return type of the function.
   DartType _returnType;
 
-  /**
-   * The elements representing the parameters of the function.
-   */
+  /// The elements representing the parameters of the function.
   List<ParameterElement> _parameters;
 
-  /**
-   * The type defined by this element.
-   */
+  /// The type defined by this element.
   FunctionType _type;
 
-  /**
-   * Initialize a newly created function element to have no name and the given
-   * [nameOffset]. This is used for function expressions, that have no name.
-   */
+  /// Initialize a newly created function element to have no name and the given
+  /// [nameOffset]. This is used for function expressions, that have no name.
   GenericFunctionTypeElementImpl.forOffset(int nameOffset)
       : super("", nameOffset);
 
-  /**
-   * Initialize from serialized information.
-   */
+  /// Initialize from serialized information.
   GenericFunctionTypeElementImpl.forSerialized(
       ElementImpl enclosingElement, this._entityRef)
       : super.forSerialized(enclosingElement);
@@ -4769,10 +4296,8 @@
     return _parameters ?? const <ParameterElement>[];
   }
 
-  /**
-   * Set the parameters defined by this function type element to the given
-   * [parameters].
-   */
+  /// Set the parameters defined by this function type element to the given
+  /// [parameters].
   void set parameters(List<ParameterElement> parameters) {
     _assertNotResynthesized(_entityRef);
     for (ParameterElement parameter in parameters) {
@@ -4793,10 +4318,8 @@
     return _returnType;
   }
 
-  /**
-   * Set the return type defined by this function type element to the given
-   * [returnType].
-   */
+  /// Set the return type defined by this function type element to the given
+  /// [returnType].
   void set returnType(DartType returnType) {
     _assertNotResynthesized(_entityRef);
     _returnType = _checkElementOfType(returnType);
@@ -4808,19 +4331,15 @@
     return _type;
   }
 
-  /**
-   * Set the function type defined by this function type element to the given
-   * [type].
-   */
+  /// Set the function type defined by this function type element to the given
+  /// [type].
   void set type(FunctionType type) {
     _assertNotResynthesized(_entityRef);
     _type = type;
   }
 
-  /**
-   * Set the type parameters defined by this function type element to the given
-   * [typeParameters].
-   */
+  /// Set the type parameters defined by this function type element to the given
+  /// [typeParameters].
   void set typeParameters(List<TypeParameterElement> typeParameters) {
     _assertNotResynthesized(_entityRef);
     for (TypeParameterElement parameter in typeParameters) {
@@ -4878,47 +4397,33 @@
   }
 }
 
-/**
- * A function type alias of the form
- *     `typedef` identifier typeParameters = genericFunctionType;
- *
- * Clients may not extend, implement or mix-in this class.
- */
+/// A function type alias of the form
+///     `typedef` identifier typeParameters = genericFunctionType;
+///
+/// Clients may not extend, implement or mix-in this class.
 class GenericTypeAliasElementImpl extends ElementImpl
-    with TypeParameterizedElementMixin
+    with TypeParameterizedElementMixin, SimplyBoundableMixin
     implements GenericTypeAliasElement {
-  /**
-   * The unlinked representation of the type in the summary.
-   */
+  /// The unlinked representation of the type in the summary.
   final UnlinkedTypedef _unlinkedTypedef;
 
-  /**
-   * The element representing the generic function type.
-   */
+  /// The element representing the generic function type.
   GenericFunctionTypeElementImpl _function;
 
-  /**
-   * The type of function defined by this type alias.
-   */
+  /// The type of function defined by this type alias.
   FunctionType _type;
 
-  /**
-   * Initialize a newly created type alias element to have the given [name].
-   */
+  /// Initialize a newly created type alias element to have the given [name].
   GenericTypeAliasElementImpl(String name, int offset)
       : _unlinkedTypedef = null,
         super(name, offset);
 
-  /**
-   * Initialize a newly created type alias element to have the given [name].
-   */
+  /// Initialize a newly created type alias element to have the given [name].
   GenericTypeAliasElementImpl.forNode(Identifier name)
       : _unlinkedTypedef = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   GenericTypeAliasElementImpl.forSerialized(
       this._unlinkedTypedef, CompilationUnitElementImpl enclosingUnit)
       : super.forSerialized(enclosingUnit);
@@ -4991,10 +4496,8 @@
     return _function;
   }
 
-  /**
-   * Set the function element representing the generic function type on the
-   * right side of the equals to the given [function].
-   */
+  /// Set the function element representing the generic function type on the
+  /// right side of the equals to the given [function].
   void set function(GenericFunctionTypeElementImpl function) {
     _assertNotResynthesized(_unlinkedTypedef);
     if (function != null) {
@@ -5050,10 +4553,8 @@
     _type = type;
   }
 
-  /**
-   * Set the type parameters defined for this type to the given
-   * [typeParameters].
-   */
+  /// Set the type parameters defined for this type to the given
+  /// [typeParameters].
   void set typeParameters(List<TypeParameterElement> typeParameters) {
     _assertNotResynthesized(_unlinkedTypedef);
     for (TypeParameterElement typeParameter in typeParameters) {
@@ -5067,6 +4568,9 @@
       _unlinkedTypedef?.typeParameters;
 
   @override
+  int get _notSimplyBoundedSlot => _unlinkedTypedef?.notSimplyBoundedSlot;
+
+  @override
   T accept<T>(ElementVisitor<T> visitor) =>
       visitor.visitFunctionTypeAliasElement(this);
 
@@ -5109,27 +4613,38 @@
 
   @override
   FunctionType instantiate(List<DartType> argumentTypes) {
-    if (argumentTypes.length != typeParameters.length) {
-      throw new ArgumentError('Wrong number of type arguments supplied');
-    }
-    if (typeParameters.isEmpty) return function.type;
-    return typeAfterSubstitution(argumentTypes);
+    return doInstantiate(this, argumentTypes);
   }
 
-  /**
-   * Return the type of the function defined by this typedef after substituting
-   * the given [typeArguments] for the type parameters defined for this typedef
-   * (but not the type parameters defined by the function). If the number of
-   * [typeArguments] does not match the number of type parameters, then
-   * `dynamic` will be used in place of each of the type arguments.
-   */
-  FunctionType typeAfterSubstitution(List<DartType> typeArguments) {
-    GenericFunctionTypeElement function = this.function;
+  @override
+  void visitChildren(ElementVisitor visitor) {
+    super.visitChildren(visitor);
+    safelyVisitChildren(typeParameters, visitor);
+    function?.accept(visitor);
+  }
+
+  static FunctionType doInstantiate(
+      FunctionTypeAliasElement element, List<DartType> argumentTypes) {
+    if (argumentTypes.length != element.typeParameters.length) {
+      throw new ArgumentError('Wrong number of type arguments supplied');
+    }
+    if (element.typeParameters.isEmpty) return element.function.type;
+    return typeAfterSubstitution(element, argumentTypes);
+  }
+
+  /// Return the type of the function defined by this typedef after substituting
+  /// the given [typeArguments] for the type parameters defined for this typedef
+  /// (but not the type parameters defined by the function). If the number of
+  /// [typeArguments] does not match the number of type parameters, then
+  /// `dynamic` will be used in place of each of the type arguments.
+  static FunctionType typeAfterSubstitution(
+      FunctionTypeAliasElement element, List<DartType> typeArguments) {
+    GenericFunctionTypeElement function = element.function;
     if (function == null) {
       return null;
     }
     FunctionType functionType = function.type;
-    List<TypeParameterElement> parameterElements = typeParameters;
+    List<TypeParameterElement> parameterElements = element.typeParameters;
     List<DartType> parameterTypes =
         TypeParameterTypeImpl.getTypes(parameterElements);
     int parameterCount = parameterTypes.length;
@@ -5140,35 +4655,20 @@
     }
     return functionType.substitute2(typeArguments, parameterTypes);
   }
-
-  @override
-  void visitChildren(ElementVisitor visitor) {
-    super.visitChildren(visitor);
-    safelyVisitChildren(typeParameters, visitor);
-    function?.accept(visitor);
-  }
 }
 
-/**
- * A concrete implementation of a [HideElementCombinator].
- */
+/// A concrete implementation of a [HideElementCombinator].
 class HideElementCombinatorImpl implements HideElementCombinator {
-  /**
-   * The unlinked representation of the combinator in the summary.
-   */
+  /// The unlinked representation of the combinator in the summary.
   final UnlinkedCombinator _unlinkedCombinator;
 
-  /**
-   * The names that are not to be made visible in the importing library even if
-   * they are defined in the imported library.
-   */
+  /// The names that are not to be made visible in the importing library even if
+  /// they are defined in the imported library.
   List<String> _hiddenNames;
 
   HideElementCombinatorImpl() : _unlinkedCombinator = null;
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   HideElementCombinatorImpl.forSerialized(this._unlinkedCombinator);
 
   @override
@@ -5199,66 +4699,44 @@
   }
 }
 
-/**
- * A concrete implementation of an [ImportElement].
- */
+/// A concrete implementation of an [ImportElement].
 class ImportElementImpl extends UriReferencedElementImpl
     implements ImportElement {
-  /**
-   * The unlinked representation of the import in the summary.
-   */
+  /// The unlinked representation of the import in the summary.
   final UnlinkedImport _unlinkedImport;
 
-  /**
-   * The index of the dependency in the `imports` list.
-   */
+  /// The index of the dependency in the `imports` list.
   final int _linkedDependency;
 
-  /**
-   * The offset of the prefix of this import in the file that contains the this
-   * import directive, or `-1` if this import is synthetic.
-   */
+  /// The offset of the prefix of this import in the file that contains the this
+  /// import directive, or `-1` if this import is synthetic.
   int _prefixOffset = 0;
 
-  /**
-   * The library that is imported into this library by this import directive.
-   */
+  /// The library that is imported into this library by this import directive.
   LibraryElement _importedLibrary;
 
-  /**
-   * The combinators that were specified as part of the import directive in the
-   * order in which they were specified.
-   */
+  /// The combinators that were specified as part of the import directive in the
+  /// order in which they were specified.
   List<NamespaceCombinator> _combinators;
 
-  /**
-   * The prefix that was specified as part of the import directive, or `null` if
-   * there was no prefix specified.
-   */
+  /// The prefix that was specified as part of the import directive, or `null
+  ///` if there was no prefix specified.
   PrefixElement _prefix;
 
-  /**
-   * The URI that was selected based on the [context] declared variables.
-   */
+  /// The URI that was selected based on the [context] declared variables.
   String _selectedUri;
 
-  /**
-   * The cached value of [namespace].
-   */
+  /// The cached value of [namespace].
   Namespace _namespace;
 
-  /**
-   * Initialize a newly created import element at the given [offset].
-   * The offset may be `-1` if the import is synthetic.
-   */
+  /// Initialize a newly created import element at the given [offset].
+  /// The offset may be `-1` if the import is synthetic.
   ImportElementImpl(int offset)
       : _unlinkedImport = null,
         _linkedDependency = null,
         super(null, offset);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ImportElementImpl.forSerialized(this._unlinkedImport, this._linkedDependency,
       LibraryElementImpl enclosingLibrary)
       : super.forSerialized(enclosingLibrary);
@@ -5278,9 +4756,7 @@
     _combinators = combinators;
   }
 
-  /**
-   * Set whether this import is for a deferred library.
-   */
+  /// Set whether this import is for a deferred library.
   void set deferred(bool isDeferred) {
     _assertNotResynthesized(_unlinkedImport);
     setModifier(Modifier.DEFERRED, isDeferred);
@@ -5477,40 +4953,30 @@
   }
 }
 
-/**
- * A concrete implementation of a [LabelElement].
- */
+/// A concrete implementation of a [LabelElement].
 class LabelElementImpl extends ElementImpl implements LabelElement {
-  /**
-   * A flag indicating whether this label is associated with a `switch`
-   * statement.
-   */
+  /// A flag indicating whether this label is associated with a `switch`
+  /// statement.
   // TODO(brianwilkerson) Make this a modifier.
   final bool _onSwitchStatement;
 
-  /**
-   * A flag indicating whether this label is associated with a `switch` member
-   * (`case` or `default`).
-   */
+  /// A flag indicating whether this label is associated with a `switch` member
+  /// (`case` or `default`).
   // TODO(brianwilkerson) Make this a modifier.
   final bool _onSwitchMember;
 
-  /**
-   * Initialize a newly created label element to have the given [name].
-   * [onSwitchStatement] should be `true` if this label is associated with a
-   * `switch` statement and [onSwitchMember] should be `true` if this label is
-   * associated with a `switch` member.
-   */
+  /// Initialize a newly created label element to have the given [name].
+  /// [onSwitchStatement] should be `true` if this label is associated with a
+  /// `switch` statement and [onSwitchMember] should be `true` if this label is
+  /// associated with a `switch` member.
   LabelElementImpl(String name, int nameOffset, this._onSwitchStatement,
       this._onSwitchMember)
       : super(name, nameOffset);
 
-  /**
-   * Initialize a newly created label element to have the given [name].
-   * [_onSwitchStatement] should be `true` if this label is associated with a
-   * `switch` statement and [_onSwitchMember] should be `true` if this label is
-   * associated with a `switch` member.
-   */
+  /// Initialize a newly created label element to have the given [name].
+  /// [_onSwitchStatement] should be `true` if this label is associated with a
+  /// `switch` statement and [_onSwitchMember] should be `true` if this label is
+  /// associated with a `switch` member.
   LabelElementImpl.forNode(
       Identifier name, this._onSwitchStatement, this._onSwitchMember)
       : super.forNode(name);
@@ -5522,15 +4988,11 @@
   ExecutableElement get enclosingElement =>
       super.enclosingElement as ExecutableElement;
 
-  /**
-   * Return `true` if this label is associated with a `switch` member (`case` or
-   * `default`).
-   */
+  /// Return `true` if this label is associated with a `switch` member (`case
+  /// ` or`default`).
   bool get isOnSwitchMember => _onSwitchMember;
 
-  /**
-   * Return `true` if this label is associated with a `switch` statement.
-   */
+  /// Return `true` if this label is associated with a `switch` statement.
   bool get isOnSwitchStatement => _onSwitchStatement;
 
   @override
@@ -5540,110 +5002,79 @@
   T accept<T>(ElementVisitor<T> visitor) => visitor.visitLabelElement(this);
 }
 
-/**
- * A concrete implementation of a [LibraryElement].
- */
+/// A concrete implementation of a [LibraryElement].
 class LibraryElementImpl extends ElementImpl implements LibraryElement {
-  /**
-   * The analysis context in which this library is defined.
-   */
+  /// The analysis context in which this library is defined.
   final AnalysisContext context;
 
   final LibraryResynthesizerContext resynthesizerContext;
 
   final UnlinkedUnit unlinkedDefiningUnit;
 
-  /**
-   * The compilation unit that defines this library.
-   */
+  /// The compilation unit that defines this library.
   CompilationUnitElement _definingCompilationUnit;
 
-  /**
-   * The entry point for this library, or `null` if this library does not have
-   * an entry point.
-   */
+  /// The entry point for this library, or `null` if this library does not have
+  /// an entry point.
   FunctionElement _entryPoint;
 
-  /**
-   * A list containing specifications of all of the imports defined in this
-   * library.
-   */
+  /// A list containing specifications of all of the imports defined in this
+  /// library.
   List<ImportElement> _imports;
 
-  /**
-   * A list containing specifications of all of the exports defined in this
-   * library.
-   */
+  /// A list containing specifications of all of the exports defined in this
+  /// library.
   List<ExportElement> _exports;
 
-  /**
-   * A list containing the strongly connected component in the import/export
-   * graph in which the current library resides.  Computed on demand, null
-   * if not present.  If _libraryCycle is set, then the _libraryCycle field
-   * for all libraries reachable from this library in the import/export graph
-   * is also set.
-   */
+  /// A list containing the strongly connected component in the import/export
+  /// graph in which the current library resides.  Computed on demand, null
+  /// if not present.  If _libraryCycle is set, then the _libraryCycle field
+  /// for all libraries reachable from this library in the import/export graph
+  /// is also set.
   List<LibraryElement> _libraryCycle = null;
 
-  /**
-   * A list containing all of the compilation units that are included in this
-   * library using a `part` directive.
-   */
+  /// A list containing all of the compilation units that are included in this
+  /// library using a `part` directive.
   List<CompilationUnitElement> _parts = const <CompilationUnitElement>[];
 
-  /**
-   * The element representing the synthetic function `loadLibrary` that is
-   * defined for this library, or `null` if the element has not yet been created.
-   */
+  /// The element representing the synthetic function `loadLibrary` that is
+  /// defined for this library, or `null` if the element has not yet been
+  /// created.
   FunctionElement _loadLibraryFunction;
 
   @override
   final int nameLength;
 
-  /**
-   * The export [Namespace] of this library, `null` if it has not been
-   * computed yet.
-   */
+  /// The export [Namespace] of this library, `null` if it has not been
+  /// computed yet.
   Namespace _exportNamespace;
 
-  /**
-   * The public [Namespace] of this library, `null` if it has not been
-   * computed yet.
-   */
+  /// The public [Namespace] of this library, `null` if it has not been
+  /// computed yet.
   Namespace _publicNamespace;
 
-  /**
-   * A bit-encoded form of the capabilities associated with this library.
-   */
+  /// A bit-encoded form of the capabilities associated with this library.
   int _resolutionCapabilities = 0;
 
-  /**
-   * The cached list of prefixes.
-   */
+  /// The cached list of prefixes.
   List<PrefixElement> _prefixes;
 
-  /**
-   * Initialize a newly created library element in the given [context] to have
-   * the given [name] and [offset].
-   */
+  /// Initialize a newly created library element in the given [context] to have
+  /// the given [name] and [offset].
   LibraryElementImpl(this.context, String name, int offset, this.nameLength)
       : resynthesizerContext = null,
         unlinkedDefiningUnit = null,
         super(name, offset);
 
-  /**
-   * Initialize a newly created library element in the given [context] to have
-   * the given [name].
-   */
+  /// Initialize a newly created library element in the given [context] to have
+  /// the given [name].
   LibraryElementImpl.forNode(this.context, LibraryIdentifier name)
       : nameLength = name != null ? name.length : 0,
         resynthesizerContext = null,
         unlinkedDefiningUnit = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   LibraryElementImpl.forSerialized(this.context, String name, int offset,
       this.nameLength, this.resynthesizerContext, this.unlinkedDefiningUnit)
       : super.forSerialized(null) {
@@ -5677,10 +5108,8 @@
   CompilationUnitElement get definingCompilationUnit =>
       _definingCompilationUnit;
 
-  /**
-   * Set the compilation unit that defines this library to the given compilation
-   * [unit].
-   */
+  /// Set the compilation unit that defines this library to the given
+  ///  compilation[unit].
   void set definingCompilationUnit(CompilationUnitElement unit) {
     assert((unit as CompilationUnitElementImpl).librarySource == unit.source);
     (unit as CompilationUnitElementImpl).enclosingElement = this;
@@ -5762,10 +5191,8 @@
     return _exports ?? const <ExportElement>[];
   }
 
-  /**
-   * Set the specifications of all of the exports defined in this library to the
-   * given list of [exports].
-   */
+  /// Set the specifications of all of the exports defined in this library to
+  /// the given list of [exports].
   void set exports(List<ExportElement> exports) {
     _assertNotResynthesized(unlinkedDefiningUnit);
     for (ExportElement exportElement in exports) {
@@ -5788,9 +5215,7 @@
     return hasModifier(Modifier.HAS_EXT_URI);
   }
 
-  /**
-   * Set whether this library has an import of a "dart-ext" URI.
-   */
+  /// Set whether this library has an import of a "dart-ext" URI.
   void set hasExtUri(bool hasExtUri) {
     setModifier(Modifier.HAS_EXT_URI, hasExtUri);
   }
@@ -5834,10 +5259,8 @@
     return _imports ?? const <ImportElement>[];
   }
 
-  /**
-   * Set the specifications of all of the imports defined in this library to the
-   * given list of [imports].
-   */
+  /// Set the specifications of all of the imports defined in this library to
+  /// the given list of [imports].
   void set imports(List<ImportElement> imports) {
     _assertNotResynthesized(unlinkedDefiningUnit);
     for (ImportElement importElement in imports) {
@@ -5870,10 +5293,8 @@
     return false;
   }
 
-  /**
-   * Return `true` if the receiver directly or indirectly imports the
-   * 'dart:html' libraries.
-   */
+  /// Return `true` if the receiver directly or indirectly imports the
+  /// 'dart:html' libraries.
   bool get isOrImportsBrowserLibrary {
     List<LibraryElement> visited = new List<LibraryElement>();
     Source htmlLibSource = context.sourceFactory.forUri(DartSdk.DART_HTML);
@@ -6011,10 +5432,8 @@
   @override
   List<CompilationUnitElement> get parts => _parts;
 
-  /**
-   * Set the compilation units that are included in this library using a `part`
-   * directive to the given list of [parts].
-   */
+  /// Set the compilation units that are included in this library using a `part`
+  /// directive to the given list of [parts].
   void set parts(List<CompilationUnitElement> parts) {
     for (CompilationUnitElement compilationUnit in parts) {
       assert((compilationUnit as CompilationUnitElementImpl).librarySource ==
@@ -6059,10 +5478,8 @@
   @override
   T accept<T>(ElementVisitor<T> visitor) => visitor.visitLibraryElement(this);
 
-  /**
-   * Create the [FunctionElement] to be returned by [loadLibraryFunction],
-   * using types provided by [typeProvider].
-   */
+  /// Create the [FunctionElement] to be returned by [loadLibraryFunction],
+  /// using types provided by [typeProvider].
   void createLoadLibraryFunction(TypeProvider typeProvider) {
     _loadLibraryFunction =
         createLoadLibraryFunctionForLibrary(typeProvider, this);
@@ -6119,10 +5536,10 @@
     return getTypeFromParts(className, _definingCompilationUnit, _parts);
   }
 
-  /** Given an update to this library which may have added or deleted edges
-   * in the import/export graph originating from this node only, remove any
-   * cached library cycles in the element model which may have been invalidated.
-   */
+  /// Given an update to this library which may have added or deleted edges
+  /// in the import/export graph originating from this node only, remove any
+  /// cached library cycles in the element model which may have been
+  /// invalidated.
   void invalidateLibraryCycles() {
     // If we have pre-computed library cycle information, then we must
     // invalidate the information both on this element, and on certain
@@ -6163,10 +5580,8 @@
     invalidate(this);
   }
 
-  /**
-   * Set whether the library has the given [capability] to
-   * correspond to the given [value].
-   */
+  /// Set whether the library has the given [capability] to
+  /// correspond to the given [value].
   void setResolutionCapability(
       LibraryResolutionCapability capability, bool value) {
     _resolutionCapabilities =
@@ -6222,9 +5637,7 @@
     return function;
   }
 
-  /**
-   * Return the [LibraryElementImpl] of the given [element].
-   */
+  /// Return the [LibraryElementImpl] of the given [element].
   static LibraryElementImpl getImpl(LibraryElement element) {
     if (element is LibraryElementHandle) {
       return getImpl(element.actualElement);
@@ -6261,9 +5674,7 @@
     return null;
   }
 
-  /**
-   * Return `true` if the [library] has the given [capability].
-   */
+  /// Return `true` if the [library] has the given [capability].
   static bool hasResolutionCapability(
       LibraryElement library, LibraryResolutionCapability capability) {
     return library is LibraryElementImpl &&
@@ -6271,90 +5682,59 @@
   }
 }
 
-/**
- * Enum of possible resolution capabilities that a [LibraryElementImpl] has.
- */
+/// Enum of possible resolution capabilities that a [LibraryElementImpl] has.
 enum LibraryResolutionCapability {
-  /**
-   * All elements have their types resolved.
-   */
+  /// All elements have their types resolved.
   resolvedTypeNames,
 
-  /**
-   * All (potentially) constants expressions are set into corresponding
-   * elements.
-   */
+  /// All (potentially) constants expressions are set into corresponding
+  /// elements.
   constantExpressions,
 }
 
-/**
- * The context in which the library is resynthesized.
- */
+/// The context in which the library is resynthesized.
 abstract class LibraryResynthesizerContext {
-  /**
-   * Return the [LinkedLibrary] that corresponds to the library being
-   * resynthesized.
-   */
+  /// Return the [LinkedLibrary] that corresponds to the library being
+  /// resynthesized.
   LinkedLibrary get linkedLibrary;
 
-  /**
-   * Return the exported [LibraryElement] for with the given [relativeUri].
-   */
+  /// Return the exported [LibraryElement] for with the given [relativeUri].
   LibraryElement buildExportedLibrary(String relativeUri);
 
-  /**
-   * Return the export namespace of the library.
-   */
+  /// Return the export namespace of the library.
   Namespace buildExportNamespace();
 
-  /**
-   * Return the imported [LibraryElement] for the given dependency in the
-   * linked library.
-   */
+  /// Return the imported [LibraryElement] for the given dependency in the
+  /// linked library.
   LibraryElement buildImportedLibrary(int dependency);
 
-  /**
-   * Return the public namespace of the library.
-   */
+  /// Return the public namespace of the library.
   Namespace buildPublicNamespace();
 
-  /**
-   * Find the entry point of the library.
-   */
+  /// Find the entry point of the library.
   FunctionElement findEntryPoint();
 
-  /**
-   * Ensure that getters and setters in different units use the same
-   * top-level variables.
-   */
+  /// Ensure that getters and setters in different units use the same
+  /// top-level variables.
   void patchTopLevelAccessors();
 }
 
-/**
- * A concrete implementation of a [LocalVariableElement].
- */
+/// A concrete implementation of a [LocalVariableElement].
 class LocalVariableElementImpl extends NonParameterVariableElementImpl
     implements LocalVariableElement {
-  /**
-   * The offset to the beginning of the visible range for this element.
-   */
+  /// The offset to the beginning of the visible range for this element.
   int _visibleRangeOffset = 0;
 
-  /**
-   * The length of the visible range for this element, or `-1` if this element
-   * does not have a visible range.
-   */
+  /// The length of the visible range for this element, or `-1` if this element
+  /// does not have a visible range.
   int _visibleRangeLength = -1;
 
-  /**
-   * Initialize a newly created method element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created method element to have the given [name] and
+  /// [offset].
   LocalVariableElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created local variable element to have the given [name].
-   */
+  /// Initialize a newly created local variable element to have the given
+  /// [name].
   LocalVariableElementImpl.forNode(Identifier name) : super.forNode(name);
 
   @override
@@ -6394,41 +5774,29 @@
   Declaration computeNode() => getNodeMatching(
       (node) => node is DeclaredIdentifier || node is VariableDeclaration);
 
-  /**
-   * Set the visible range for this element to the range starting at the given
-   * [offset] with the given [length].
-   */
+  /// Set the visible range for this element to the range starting at the given
+  /// [offset] with the given [length].
   void setVisibleRange(int offset, int length) {
     _visibleRangeOffset = offset;
     _visibleRangeLength = length;
   }
 }
 
-/**
- * A concrete implementation of a [MethodElement].
- */
+/// A concrete implementation of a [MethodElement].
 class MethodElementImpl extends ExecutableElementImpl implements MethodElement {
-  /**
-   * Initialize a newly created method element to have the given [name] at the
-   * given [offset].
-   */
+  /// Initialize a newly created method element to have the given [name] at the
+  /// given [offset].
   MethodElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created method element to have the given [name].
-   */
+  /// Initialize a newly created method element to have the given [name].
   MethodElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   MethodElementImpl.forSerialized(
       UnlinkedExecutable serializedExecutable, ClassElementImpl enclosingClass)
       : super.forSerialized(serializedExecutable, enclosingClass);
 
-  /**
-   * Set whether this method is abstract.
-   */
+  /// Set whether this method is abstract.
   void set abstract(bool isAbstract) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.ABSTRACT, isAbstract);
@@ -6471,9 +5839,7 @@
     return hasModifier(Modifier.STATIC);
   }
 
-  /**
-   * Set whether this method is static.
-   */
+  /// Set whether this method is static.
   void set isStatic(bool isStatic) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.STATIC, isStatic);
@@ -6537,41 +5903,29 @@
   }
 }
 
-/**
- * A [ClassElementImpl] representing a mixin declaration.
- */
+/// A [ClassElementImpl] representing a mixin declaration.
 class MixinElementImpl extends ClassElementImpl {
   // TODO(brianwilkerson) Consider creating an abstract superclass of
   // ClassElementImpl that contains the portions of the API that this class
   // needs, and make this class extend the new class.
 
-  /**
-   * A list containing all of the superclass constraints that are defined for
-   * the mixin.
-   */
+  /// A list containing all of the superclass constraints that are defined for
+  /// the mixin.
   List<InterfaceType> _superclassConstraints;
 
-  /**
-   * Names of methods, getters, setters, and operators that this mixin
-   * declaration super-invokes.  For setters this includes the trailing "=".
-   * The list will be empty if this class is not a mixin declaration.
-   */
+  /// Names of methods, getters, setters, and operators that this mixin
+  /// declaration super-invokes.  For setters this includes the trailing "=".
+  /// The list will be empty if this class is not a mixin declaration.
   List<String> _superInvokedNames;
 
-  /**
-   * Initialize a newly created class element to have the given [name] at the
-   * given [offset] in the file that contains the declaration of this element.
-   */
+  /// Initialize a newly created class element to have the given [name] at the
+  /// given [offset] in the file that contains the declaration of this element.
   MixinElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created class element to have the given [name].
-   */
+  /// Initialize a newly created class element to have the given [name].
   MixinElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   MixinElementImpl.forSerialized(
       UnlinkedClass unlinkedClass, CompilationUnitElementImpl enclosingUnit)
       : super.forSerialized(unlinkedClass, enclosingUnit);
@@ -6671,112 +6025,74 @@
   }
 }
 
-/**
- * The constants for all of the modifiers defined by the Dart language and for a
- * few additional flags that are useful.
- *
- * Clients may not extend, implement or mix-in this class.
- */
+/// The constants for all of the modifiers defined by the Dart language and for
+/// a few additional flags that are useful.
+///
+/// Clients may not extend, implement or mix-in this class.
 class Modifier implements Comparable<Modifier> {
-  /**
-   * Indicates that the modifier 'abstract' was applied to the element.
-   */
+  /// Indicates that the modifier 'abstract' was applied to the element.
   static const Modifier ABSTRACT = const Modifier('ABSTRACT', 0);
 
-  /**
-   * Indicates that an executable element has a body marked as being
-   * asynchronous.
-   */
+  /// Indicates that an executable element has a body marked as being
+  /// asynchronous.
   static const Modifier ASYNCHRONOUS = const Modifier('ASYNCHRONOUS', 1);
 
-  /**
-   * Indicates that the modifier 'const' was applied to the element.
-   */
+  /// Indicates that the modifier 'const' was applied to the element.
   static const Modifier CONST = const Modifier('CONST', 2);
 
-  /**
-   * Indicates that the modifier 'covariant' was applied to the element.
-   */
+  /// Indicates that the modifier 'covariant' was applied to the element.
   static const Modifier COVARIANT = const Modifier('COVARIANT', 3);
 
-  /**
-   * Indicates that the import element represents a deferred library.
-   */
+  /// Indicates that the import element represents a deferred library.
   static const Modifier DEFERRED = const Modifier('DEFERRED', 4);
 
-  /**
-   * Indicates that a class element was defined by an enum declaration.
-   */
+  /// Indicates that a class element was defined by an enum declaration.
   static const Modifier ENUM = const Modifier('ENUM', 5);
 
-  /**
-   * Indicates that a class element was defined by an enum declaration.
-   */
+  /// Indicates that a class element was defined by an enum declaration.
   static const Modifier EXTERNAL = const Modifier('EXTERNAL', 6);
 
-  /**
-   * Indicates that the modifier 'factory' was applied to the element.
-   */
+  /// Indicates that the modifier 'factory' was applied to the element.
   static const Modifier FACTORY = const Modifier('FACTORY', 7);
 
-  /**
-   * Indicates that the modifier 'final' was applied to the element.
-   */
+  /// Indicates that the modifier 'final' was applied to the element.
   static const Modifier FINAL = const Modifier('FINAL', 8);
 
-  /**
-   * Indicates that an executable element has a body marked as being a
-   * generator.
-   */
+  /// Indicates that an executable element has a body marked as being a
+  /// generator.
   static const Modifier GENERATOR = const Modifier('GENERATOR', 9);
 
-  /**
-   * Indicates that the pseudo-modifier 'get' was applied to the element.
-   */
+  /// Indicates that the pseudo-modifier 'get' was applied to the element.
   static const Modifier GETTER = const Modifier('GETTER', 10);
 
-  /**
-   * A flag used for libraries indicating that the defining compilation unit
-   * contains at least one import directive whose URI uses the "dart-ext"
-   * scheme.
-   */
+  /// A flag used for libraries indicating that the defining compilation unit
+  /// contains at least one import directive whose URI uses the "dart-ext"
+  /// scheme.
   static const Modifier HAS_EXT_URI = const Modifier('HAS_EXT_URI', 11);
 
-  /**
-   * Indicates that the associated element did not have an explicit type
-   * associated with it. If the element is an [ExecutableElement], then the
-   * type being referred to is the return type.
-   */
+  /// Indicates that the associated element did not have an explicit type
+  /// associated with it. If the element is an [ExecutableElement], then the
+  /// type being referred to is the return type.
   static const Modifier IMPLICIT_TYPE = const Modifier('IMPLICIT_TYPE', 12);
 
-  /**
-   * Indicates that a class is a mixin application.
-   */
+  /// Indicates that a class is a mixin application.
   static const Modifier MIXIN_APPLICATION =
       const Modifier('MIXIN_APPLICATION', 13);
 
-  /**
-   * Indicates that a class contains an explicit reference to 'super'.
-   */
+  /// Indicates that a class contains an explicit reference to 'super'.
   static const Modifier REFERENCES_SUPER =
       const Modifier('REFERENCES_SUPER', 14);
 
-  /**
-   * Indicates that the pseudo-modifier 'set' was applied to the element.
-   */
+  /// Indicates that the pseudo-modifier 'set' was applied to the element.
   static const Modifier SETTER = const Modifier('SETTER', 15);
 
-  /**
-   * Indicates that the modifier 'static' was applied to the element.
-   */
+  /// Indicates that the modifier 'static' was applied to the element.
   static const Modifier STATIC = const Modifier('STATIC', 16);
 
-  /**
-   * Indicates that the element does not appear in the source code but was
-   * implicitly created. For example, if a class does not define any
-   * constructors, an implicit zero-argument constructor will be created and it
-   * will be marked as being synthetic.
-   */
+  /// Indicates that the element does not appear in the source code but was
+  /// implicitly created. For example, if a class does not define any
+  /// constructors, an implicit zero-argument constructor will be created and it
+  /// will be marked as being synthetic.
   static const Modifier SYNTHETIC = const Modifier('SYNTHETIC', 17);
 
   static const List<Modifier> values = const [
@@ -6800,14 +6116,10 @@
     SYNTHETIC
   ];
 
-  /**
-   * The name of this modifier.
-   */
+  /// The name of this modifier.
   final String name;
 
-  /**
-   * The ordinal value of the modifier.
-   */
+  /// The ordinal value of the modifier.
   final int ordinal;
 
   const Modifier(this.name, this.ordinal);
@@ -6822,34 +6134,24 @@
   String toString() => name;
 }
 
-/**
- * A concrete implementation of a [MultiplyDefinedElement].
- */
+/// A concrete implementation of a [MultiplyDefinedElement].
 class MultiplyDefinedElementImpl implements MultiplyDefinedElement {
-  /**
-   * The unique integer identifier of this element.
-   */
+  /// The unique integer identifier of this element.
   final int id = ElementImpl._NEXT_ID++;
 
-  /**
-   * The analysis context in which the multiply defined elements are defined.
-   */
+  /// The analysis context in which the multiply defined elements are defined.
   @override
   final AnalysisContext context;
 
-  /**
-   * The name of the conflicting elements.
-   */
+  /// The name of the conflicting elements.
   @override
   final String name;
 
   @override
   final List<Element> conflictingElements;
 
-  /**
-   * Initialize a newly created element in the given [context] to represent
-   * the given non-empty [conflictingElements].
-   */
+  /// Initialize a newly created element in the given [context] to represent
+  /// the given non-empty [conflictingElements].
   MultiplyDefinedElementImpl(this.context, this.name, this.conflictingElements);
 
   @override
@@ -7030,16 +6332,12 @@
   }
 }
 
-/**
- * A [MethodElementImpl], with the additional information of a list of
- * [ExecutableElement]s from which this element was composed.
- */
+/// A [MethodElementImpl], with the additional information of a list of
+/// [ExecutableElement]s from which this element was composed.
 class MultiplyInheritedMethodElementImpl extends MethodElementImpl
     implements MultiplyInheritedExecutableElement {
-  /**
-   * A list the array of executable elements that were used to compose this
-   * element.
-   */
+  /// A list the array of executable elements that were used to compose this
+  /// element.
   List<ExecutableElement> _elements = const <MethodElement>[];
 
   MultiplyInheritedMethodElementImpl(Identifier name) : super.forNode(name) {
@@ -7054,17 +6352,13 @@
   }
 }
 
-/**
- * A [PropertyAccessorElementImpl], with the additional information of a list of
- * [ExecutableElement]s from which this element was composed.
- */
+/// A [PropertyAccessorElementImpl], with the additional information of a list
+///  of[ExecutableElement]s from which this element was composed.
 class MultiplyInheritedPropertyAccessorElementImpl
     extends PropertyAccessorElementImpl
     implements MultiplyInheritedExecutableElement {
-  /**
-   * A list the array of executable elements that were used to compose this
-   * element.
-   */
+  /// A list the array of executable elements that were used to compose this
+  /// element.
   List<ExecutableElement> _elements = const <PropertyAccessorElement>[];
 
   MultiplyInheritedPropertyAccessorElementImpl(Identifier name)
@@ -7083,33 +6377,23 @@
   }
 }
 
-/**
- * A [VariableElementImpl], which is not a parameter.
- */
+/// A [VariableElementImpl], which is not a parameter.
 abstract class NonParameterVariableElementImpl extends VariableElementImpl {
-  /**
-   * The unlinked representation of the variable in the summary.
-   */
+  /// The unlinked representation of the variable in the summary.
   final UnlinkedVariable _unlinkedVariable;
 
-  /**
-   * Initialize a newly created variable element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created variable element to have the given [name] and
+  /// [offset].
   NonParameterVariableElementImpl(String name, int offset)
       : _unlinkedVariable = null,
         super(name, offset);
 
-  /**
-   * Initialize a newly created variable element to have the given [name].
-   */
+  /// Initialize a newly created variable element to have the given [name].
   NonParameterVariableElementImpl.forNode(Identifier name)
       : _unlinkedVariable = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   NonParameterVariableElementImpl.forSerialized(
       this._unlinkedVariable, ElementImpl enclosingElement)
       : super.forSerialized(enclosingElement);
@@ -7169,10 +6453,8 @@
     return super.initializer;
   }
 
-  /**
-   * Set the function representing this variable's initializer to the given
-   * [function].
-   */
+  /// Set the function representing this variable's initializer to the given
+  /// [function].
   void set initializer(FunctionElement function) {
     _assertNotResynthesized(_unlinkedVariable);
     super.initializer = function;
@@ -7261,71 +6543,49 @@
     return null;
   }
 
-  /**
-   * Subclasses need this getter, see [ConstVariableElement._unlinkedConst].
-   */
+  /// Subclasses need this getter, see [ConstVariableElement._unlinkedConst].
   UnlinkedExpr get _unlinkedConst => _unlinkedVariable?.initializer?.bodyExpr;
 }
 
-/**
- * A concrete implementation of a [ParameterElement].
- */
+/// A concrete implementation of a [ParameterElement].
 class ParameterElementImpl extends VariableElementImpl
     with ParameterElementMixin
     implements ParameterElement {
-  /**
-   * The unlinked representation of the parameter in the summary.
-   */
+  /// The unlinked representation of the parameter in the summary.
   final UnlinkedParam unlinkedParam;
 
-  /**
-   * The kind of this parameter.
-   */
+  /// The kind of this parameter.
   ParameterKind _parameterKind;
 
-  /**
-   * The Dart code of the default value.
-   */
+  /// The Dart code of the default value.
   String _defaultValueCode;
 
-  /**
-   * The offset to the beginning of the visible range for this element.
-   */
+  /// The offset to the beginning of the visible range for this element.
   int _visibleRangeOffset = 0;
 
-  /**
-   * The length of the visible range for this element, or `-1` if this element
-   * does not have a visible range.
-   */
+  /// The length of the visible range for this element, or `-1` if this element
+  /// does not have a visible range.
   int _visibleRangeLength = -1;
 
   bool _inheritsCovariant = false;
 
-  /**
-   * Initialize a newly created parameter element to have the given [name] and
-   * [nameOffset].
-   */
+  /// Initialize a newly created parameter element to have the given [name] and
+  /// [nameOffset].
   ParameterElementImpl(String name, int nameOffset)
       : unlinkedParam = null,
         super(name, nameOffset);
 
-  /**
-   * Initialize a newly created parameter element to have the given [name].
-   */
+  /// Initialize a newly created parameter element to have the given [name].
   ParameterElementImpl.forNode(Identifier name)
       : unlinkedParam = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ParameterElementImpl.forSerialized(
       this.unlinkedParam, ElementImpl enclosingElement)
       : super.forSerialized(enclosingElement);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   factory ParameterElementImpl.forSerializedFactory(
       UnlinkedParam unlinkedParameter, ElementImpl enclosingElement,
       {bool synthetic: false}) {
@@ -7351,9 +6611,7 @@
     return element;
   }
 
-  /**
-   * Creates a synthetic parameter with [name], [type] and [kind].
-   */
+  /// Creates a synthetic parameter with [name], [type] and [kind].
   factory ParameterElementImpl.synthetic(
       String name, DartType type, ParameterKind kind) {
     ParameterElementImpl element = new ParameterElementImpl(name, -1);
@@ -7390,9 +6648,7 @@
     return _defaultValueCode;
   }
 
-  /**
-   * Set Dart code of the default value.
-   */
+  /// Set Dart code of the default value.
   void set defaultValueCode(String defaultValueCode) {
     _assertNotResynthesized(unlinkedParam);
     this._defaultValueCode = StringUtilities.intern(defaultValueCode);
@@ -7412,11 +6668,9 @@
     super.hasImplicitType = hasImplicitType;
   }
 
-  /**
-   * True if this parameter inherits from a covariant parameter. This happens
-   * when it overrides a method in a supertype that has a corresponding
-   * covariant parameter.
-   */
+  /// True if this parameter inherits from a covariant parameter. This happens
+  /// when it overrides a method in a supertype that has a corresponding
+  /// covariant parameter.
   bool get inheritsCovariant {
     if (unlinkedParam != null) {
       return enclosingUnit.resynthesizerContext
@@ -7426,9 +6680,7 @@
     }
   }
 
-  /**
-   * Record whether or not this parameter inherits from a covariant parameter.
-   */
+  /// Record whether or not this parameter inherits from a covariant parameter.
   void set inheritsCovariant(bool value) {
     _assertNotResynthesized(unlinkedParam);
     _inheritsCovariant = value;
@@ -7451,10 +6703,8 @@
     return super.initializer;
   }
 
-  /**
-   * Set the function representing this variable's initializer to the given
-   * [function].
-   */
+  /// Set the function representing this variable's initializer to the given
+  /// [function].
   void set initializer(FunctionElement function) {
     _assertNotResynthesized(unlinkedParam);
     super.initializer = function;
@@ -7487,9 +6737,7 @@
     return false;
   }
 
-  /**
-   * Return true if this parameter is explicitly marked as being covariant.
-   */
+  /// Return true if this parameter is explicitly marked as being covariant.
   bool get isExplicitlyCovariant {
     if (unlinkedParam != null) {
       return unlinkedParam.isExplicitlyCovariant;
@@ -7497,9 +6745,8 @@
     return hasModifier(Modifier.COVARIANT);
   }
 
-  /**
-   * Set whether this variable parameter is explicitly marked as being covariant.
-   */
+  /// Set whether this variable parameter is explicitly marked as being
+  /// covariant.
   void set isExplicitlyCovariant(bool isCovariant) {
     _assertNotResynthesized(unlinkedParam);
     setModifier(Modifier.COVARIANT, isCovariant);
@@ -7629,9 +6876,7 @@
     return new SourceRange(_visibleRangeOffset, _visibleRangeLength);
   }
 
-  /**
-   * Subclasses need this getter, see [ConstVariableElement._unlinkedConst].
-   */
+  /// Subclasses need this getter, see [ConstVariableElement._unlinkedConst].
   UnlinkedExpr get _unlinkedConst => unlinkedParam?.initializer?.bodyExpr;
 
   @override
@@ -7660,10 +6905,8 @@
   FormalParameter computeNode() =>
       getNodeMatching((node) => node is FormalParameter);
 
-  /**
-   * Set the visible range for this element to the range starting at the given
-   * [offset] with the given [length].
-   */
+  /// Set the visible range for this element to the range starting at the given
+  /// [offset] with the given [length].
   void setVisibleRange(int offset, int length) {
     _assertNotResynthesized(unlinkedParam);
     _visibleRangeOffset = offset;
@@ -7676,10 +6919,8 @@
     safelyVisitChildren(parameters, visitor);
   }
 
-  /**
-   * If this element is resynthesized, and its type and parameters have not
-   * been build yet, build them and remember in the corresponding fields.
-   */
+  /// If this element is resynthesized, and its type and parameters have not
+  /// been build yet, build them and remember in the corresponding fields.
   void _resynthesizeTypeAndParameters() {
     if (unlinkedParam != null && _declaredType == null && _type == null) {
       if (unlinkedParam.isFunctionTyped) {
@@ -7708,9 +6949,7 @@
     }
   }
 
-  /**
-   * Create and return [ParameterElement]s for the given [unlinkedParameters].
-   */
+  /// Create and return [ParameterElement]s for the given [unlinkedParameters].
   static List<ParameterElement> resynthesizeList(
       List<UnlinkedParam> unlinkedParameters, ElementImpl enclosingElement,
       {bool synthetic: false}) {
@@ -7729,9 +6968,7 @@
   }
 }
 
-/**
- * The parameter of an implicit setter.
- */
+/// The parameter of an implicit setter.
 class ParameterElementImpl_ofImplicitSetter extends ParameterElementImpl {
   final PropertyAccessorElementImpl_ImplicitSetter setter;
 
@@ -7785,10 +7022,8 @@
   }
 }
 
-/**
- * A mixin that provides a common implementation for methods defined in
- * [ParameterElement].
- */
+/// A mixin that provides a common implementation for methods defined in
+/// [ParameterElement].
 abstract class ParameterElementMixin implements ParameterElement {
   @override
   bool get isNamed => parameterKind == ParameterKind.NAMED;
@@ -7830,33 +7065,23 @@
   }
 }
 
-/**
- * A concrete implementation of a [PrefixElement].
- */
+/// A concrete implementation of a [PrefixElement].
 class PrefixElementImpl extends ElementImpl implements PrefixElement {
-  /**
-   * The unlinked representation of the import in the summary.
-   */
+  /// The unlinked representation of the import in the summary.
   final UnlinkedImport _unlinkedImport;
 
-  /**
-   * Initialize a newly created method element to have the given [name] and
-   * [nameOffset].
-   */
+  /// Initialize a newly created method element to have the given [name] and
+  /// [nameOffset].
   PrefixElementImpl(String name, int nameOffset)
       : _unlinkedImport = null,
         super(name, nameOffset);
 
-  /**
-   * Initialize a newly created prefix element to have the given [name].
-   */
+  /// Initialize a newly created prefix element to have the given [name].
   PrefixElementImpl.forNode(Identifier name)
       : _unlinkedImport = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   PrefixElementImpl.forSerialized(
       this._unlinkedImport, LibraryElementImpl enclosingLibrary)
       : super.forSerialized(enclosingLibrary);
@@ -7908,39 +7133,27 @@
   }
 }
 
-/**
- * A concrete implementation of a [PropertyAccessorElement].
- */
+/// A concrete implementation of a [PropertyAccessorElement].
 class PropertyAccessorElementImpl extends ExecutableElementImpl
     implements PropertyAccessorElement {
-  /**
-   * The variable associated with this accessor.
-   */
+  /// The variable associated with this accessor.
   PropertyInducingElement variable;
 
-  /**
-   * Initialize a newly created property accessor element to have the given
-   * [name] and [offset].
-   */
+  /// Initialize a newly created property accessor element to have the given
+  /// [name] and [offset].
   PropertyAccessorElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created property accessor element to have the given
-   * [name].
-   */
+  /// Initialize a newly created property accessor element to have the given
+  /// [name].
   PropertyAccessorElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   PropertyAccessorElementImpl.forSerialized(
       UnlinkedExecutable serializedExecutable, ElementImpl enclosingElement)
       : super.forSerialized(serializedExecutable, enclosingElement);
 
-  /**
-   * Initialize a newly created synthetic property accessor element to be
-   * associated with the given [variable].
-   */
+  /// Initialize a newly created synthetic property accessor element to be
+  /// associated with the given [variable].
   PropertyAccessorElementImpl.forVariable(PropertyInducingElementImpl variable)
       : super(variable.name, variable.nameOffset) {
     this.variable = variable;
@@ -7948,9 +7161,7 @@
     isSynthetic = true;
   }
 
-  /**
-   * Set whether this accessor is abstract.
-   */
+  /// Set whether this accessor is abstract.
   void set abstract(bool isAbstract) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.ABSTRACT, isAbstract);
@@ -7987,9 +7198,7 @@
     return (enclosingElement as ElementImpl).typeParameterContext;
   }
 
-  /**
-   * Set whether this accessor is a getter.
-   */
+  /// Set whether this accessor is a getter.
   void set getter(bool isGetter) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.GETTER, isGetter);
@@ -8027,9 +7236,7 @@
     return hasModifier(Modifier.STATIC);
   }
 
-  /**
-   * Set whether this accessor is static.
-   */
+  /// Set whether this accessor is static.
   void set isStatic(bool isStatic) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.STATIC, isStatic);
@@ -8054,9 +7261,7 @@
     return super.name;
   }
 
-  /**
-   * Set whether this accessor is a setter.
-   */
+  /// Set whether this accessor is a setter.
   void set setter(bool isSetter) {
     _assertNotResynthesized(serializedExecutable);
     setModifier(Modifier.SETTER, isSetter);
@@ -8087,14 +7292,10 @@
   }
 }
 
-/**
- * Implicit getter for a [PropertyInducingElementImpl].
- */
+/// Implicit getter for a [PropertyInducingElementImpl].
 class PropertyAccessorElementImpl_ImplicitGetter
     extends PropertyAccessorElementImpl {
-  /**
-   * Create the implicit getter and bind it to the [property].
-   */
+  /// Create the implicit getter and bind it to the [property].
   PropertyAccessorElementImpl_ImplicitGetter(
       PropertyInducingElementImpl property)
       : super.forVariable(property) {
@@ -8127,14 +7328,10 @@
   }
 }
 
-/**
- * Implicit setter for a [PropertyInducingElementImpl].
- */
+/// Implicit setter for a [PropertyInducingElementImpl].
 class PropertyAccessorElementImpl_ImplicitSetter
     extends PropertyAccessorElementImpl {
-  /**
-   * Create the implicit setter and bind it to the [property].
-   */
+  /// Create the implicit setter and bind it to the [property].
   PropertyAccessorElementImpl_ImplicitSetter(
       PropertyInducingElementImpl property)
       : super.forVariable(property) {
@@ -8171,37 +7368,25 @@
   }
 }
 
-/**
- * A concrete implementation of a [PropertyInducingElement].
- */
+/// A concrete implementation of a [PropertyInducingElement].
 abstract class PropertyInducingElementImpl
     extends NonParameterVariableElementImpl implements PropertyInducingElement {
-  /**
-   * The getter associated with this element.
-   */
+  /// The getter associated with this element.
   PropertyAccessorElement getter;
 
-  /**
-   * The setter associated with this element, or `null` if the element is
-   * effectively `final` and therefore does not have a setter associated with
-   * it.
-   */
+  /// The setter associated with this element, or `null` if the element is
+  /// effectively `final` and therefore does not have a setter associated with
+  /// it.
   PropertyAccessorElement setter;
 
-  /**
-   * Initialize a newly created synthetic element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created synthetic element to have the given [name] and
+  /// [offset].
   PropertyInducingElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created element to have the given [name].
-   */
+  /// Initialize a newly created element to have the given [name].
   PropertyInducingElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   PropertyInducingElementImpl.forSerialized(
       UnlinkedVariable unlinkedVariable, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedVariable, enclosingElement);
@@ -8231,106 +7416,75 @@
   }
 }
 
-/**
- * The context in which elements are resynthesized.
- */
+/// The context in which elements are resynthesized.
 abstract class ResynthesizerContext {
   @deprecated
   bool get isStrongMode;
 
-  /**
-   * Build [ElementAnnotationImpl] for the given [UnlinkedExpr].
-   */
+  /// Build [ElementAnnotationImpl] for the given [UnlinkedExpr].
   ElementAnnotationImpl buildAnnotation(ElementImpl context, UnlinkedExpr uc);
 
-  /**
-   * Build [Expression] for the given [UnlinkedExpr].
-   */
+  /// Build [Expression] for the given [UnlinkedExpr].
   Expression buildExpression(ElementImpl context, UnlinkedExpr uc);
 
-  /**
-   * Build explicit top-level property accessors.
-   */
+  /// Build explicit top-level property accessors.
   UnitExplicitTopLevelAccessors buildTopLevelAccessors();
 
-  /**
-   * Build explicit top-level variables.
-   */
+  /// Build explicit top-level variables.
   UnitExplicitTopLevelVariables buildTopLevelVariables();
 
-  /**
-   * Return the error reported during type inference for the given [slot],
-   * or `null` if there was no error.
-   */
+  /// Return the error reported during type inference for the given [slot],
+  /// or `null` if there was no error.
   TopLevelInferenceError getTypeInferenceError(int slot);
 
-  /**
-   * Return `true` if the given parameter [slot] inherits `@covariant` behavior.
-   */
+  /// Return `true` if the given parameter [slot] inherits `@covariant`
+  /// behavior.
   bool inheritsCovariant(int slot);
 
-  /**
-   * Return `true` if the given const constructor [slot] is a part of a cycle.
-   */
+  /// Return `true` if the given const constructor [slot] is a part of a cycle.
   bool isInConstCycle(int slot);
 
-  /**
-   * Resolve an [EntityRef] into a constructor.  If the reference is
-   * unresolved, return `null`.
-   */
+  bool isSimplyBounded(int notSimplyBoundedSlot);
+
+  /// Resolve an [EntityRef] into a constructor.  If the reference is
+  /// unresolved, return `null`.
   ConstructorElement resolveConstructorRef(
       ElementImpl context, EntityRef entry);
 
-  /**
-   * Build the appropriate [DartType] object corresponding to a slot id in the
-   * [LinkedUnit.types] table.
-   */
+  /// Build the appropriate [DartType] object corresponding to a slot id in the
+  /// [LinkedUnit.types] table.
   DartType resolveLinkedType(ElementImpl context, int slot);
 
-  /**
-   * Resolve an [EntityRef] into a type.  If the reference is
-   * unresolved, return [DynamicTypeImpl.instance].
-   *
-   * TODO(paulberry): or should we have a class representing an
-   * unresolved type, for consistency with the full element model?
-   */
+  /// Resolve an [EntityRef] into a type.  If the reference is
+  /// unresolved, return [DynamicTypeImpl.instance].
+  ///
+  /// TODO(paulberry): or should we have a class representing an
+  /// unresolved type, for consistency with the full element model?
   DartType resolveTypeRef(ElementImpl context, EntityRef type,
       {bool defaultVoid: false,
       bool instantiateToBoundsAllowed: true,
       bool declaredType: false});
 }
 
-/**
- * A concrete implementation of a [ShowElementCombinator].
- */
+/// A concrete implementation of a [ShowElementCombinator].
 class ShowElementCombinatorImpl implements ShowElementCombinator {
-  /**
-   * The unlinked representation of the combinator in the summary.
-   */
+  /// The unlinked representation of the combinator in the summary.
   final UnlinkedCombinator _unlinkedCombinator;
 
-  /**
-   * The names that are to be made visible in the importing library if they are
-   * defined in the imported library.
-   */
+  /// The names that are to be made visible in the importing library if they are
+  /// defined in the imported library.
   List<String> _shownNames;
 
-  /**
-   * The offset of the character immediately following the last character of
-   * this node.
-   */
+  /// The offset of the character immediately following the last character of
+  /// this node.
   int _end = -1;
 
-  /**
-   * The offset of the 'show' keyword of this element.
-   */
+  /// The offset of the 'show' keyword of this element.
   int _offset = 0;
 
   ShowElementCombinatorImpl() : _unlinkedCombinator = null;
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   ShowElementCombinatorImpl.forSerialized(this._unlinkedCombinator);
 
   @override
@@ -8387,26 +7541,41 @@
   }
 }
 
-/**
- * A concrete implementation of a [TopLevelVariableElement].
- */
+/// Mixin providing the implementation of
+/// [TypeParameterizedElement.isSimplyBounded] for elements that define a type.
+abstract class SimplyBoundableMixin implements TypeParameterizedElement {
+  CompilationUnitElementImpl get enclosingUnit;
+
+  @override
+  bool get isSimplyBounded {
+    var notSimplyBoundedSlot = _notSimplyBoundedSlot;
+    if (notSimplyBoundedSlot == null) {
+      // No summary is in use; we must be on the old task model.  Not supported.
+      // TODO(paulberry): remove this check when the old task model is gone.
+      return true;
+    }
+    if (notSimplyBoundedSlot == 0) {
+      return true;
+    }
+    return enclosingUnit.resynthesizerContext
+        .isSimplyBounded(_notSimplyBoundedSlot);
+  }
+
+  int get _notSimplyBoundedSlot;
+}
+
+/// A concrete implementation of a [TopLevelVariableElement].
 class TopLevelVariableElementImpl extends PropertyInducingElementImpl
     implements TopLevelVariableElement {
-  /**
-   * Initialize a newly created synthetic top-level variable element to have the
-   * given [name] and [offset].
-   */
+  /// Initialize a newly created synthetic top-level variable element to have
+  /// the given [name] and [offset].
   TopLevelVariableElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created top-level variable element to have the given
-   * [name].
-   */
+  /// Initialize a newly created top-level variable element to have the given
+  /// [name].
   TopLevelVariableElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   TopLevelVariableElementImpl.forSerialized(
       UnlinkedVariable unlinkedVariable, ElementImpl enclosingElement)
       : super.forSerialized(unlinkedVariable, enclosingElement);
@@ -8428,53 +7597,38 @@
       getNodeMatching((node) => node is VariableDeclaration);
 }
 
-/**
- * A concrete implementation of a [TypeParameterElement].
- */
+/// A concrete implementation of a [TypeParameterElement].
 class TypeParameterElementImpl extends ElementImpl
     implements TypeParameterElement {
-  /**
-   * The unlinked representation of the type parameter in the summary.
-   */
+  /// The unlinked representation of the type parameter in the summary.
   final UnlinkedTypeParam _unlinkedTypeParam;
 
-  /**
-   * The type defined by this type parameter.
-   */
+  /// The type defined by this type parameter.
   TypeParameterType _type;
 
-  /**
-   * The type representing the bound associated with this parameter, or `null`
-   * if this parameter does not have an explicit bound.
-   */
+  /// The type representing the bound associated with this parameter, or `null`
+  /// if this parameter does not have an explicit bound.
   DartType _bound;
 
-  /**
-   * Initialize a newly created method element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created method element to have the given [name] and
+  /// [offset].
   TypeParameterElementImpl(String name, int offset)
       : _unlinkedTypeParam = null,
         super(name, offset);
 
-  /**
-   * Initialize a newly created type parameter element to have the given [name].
-   */
+  /// Initialize a newly created type parameter element to have the given
+  /// [name].
   TypeParameterElementImpl.forNode(Identifier name)
       : _unlinkedTypeParam = null,
         super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   TypeParameterElementImpl.forSerialized(
       this._unlinkedTypeParam, TypeParameterizedElementMixin enclosingElement)
       : super.forSerialized(enclosingElement);
 
-  /**
-   * Initialize a newly created synthetic type parameter element to have the
-   * given [name], and with [synthetic] set to true.
-   */
+  /// Initialize a newly created synthetic type parameter element to have the
+  /// given [name], and with [synthetic] set to true.
   TypeParameterElementImpl.synthetic(String name)
       : _unlinkedTypeParam = null,
         super(name, -1) {
@@ -8573,33 +7727,26 @@
   }
 }
 
-/**
- * Mixin representing an element which can have type parameters.
- */
+/// Mixin representing an element which can have type parameters.
 abstract class TypeParameterizedElementMixin
-    implements TypeParameterizedElement, ElementImpl {
-  /**
-   * A cached list containing the type parameters declared by this element
-   * directly, or `null` if the elements have not been created yet. This does
-   * not include type parameters that are declared by any enclosing elements.
-   */
+    implements
+        TypeParameterizedElement,
+        ElementImpl,
+        TypeParameterSerializationContext {
+  /// A cached list containing the type parameters declared by this element
+  /// directly, or `null` if the elements have not been created yet. This does
+  /// not include type parameters that are declared by any enclosing elements.
   List<TypeParameterElement> _typeParameterElements;
 
-  /**
-   * A cached list containing the type parameter types declared by this element
-   * directly, or `null` if the list has not been computed yet.
-   */
+  /// A cached list containing the type parameter types declared by this element
+  /// directly, or `null` if the list has not been computed yet.
   List<TypeParameterType> _typeParameterTypes;
 
-  /**
-   * Get the type parameter context enclosing this one, if any.
-   */
+  /// Get the type parameter context enclosing this one, if any.
   TypeParameterizedElementMixin get enclosingTypeParameterContext;
 
-  /**
-   * The unit in which this element is resynthesized.
-   */
-  CompilationUnitElementImpl get enclosingUnit;
+  @override
+  bool get isSimplyBounded => true;
 
   @override
   TypeParameterizedElementMixin get typeParameterContext => this;
@@ -8622,30 +7769,21 @@
     return _typeParameterElements ?? const <TypeParameterElement>[];
   }
 
-  /**
-   * Get a list of [TypeParameterType] objects corresponding to the
-   * element's type parameters.
-   */
+  /// Get a list of [TypeParameterType] objects corresponding to the
+  /// element's type parameters.
   List<TypeParameterType> get typeParameterTypes {
     return _typeParameterTypes ??= typeParameters
         .map((TypeParameterElement e) => e.type)
         .toList(growable: false);
   }
 
-  /**
-   * Get the [UnlinkedTypeParam]s representing the type parameters declared by
-   * this element, or `null` if this element isn't from a summary.
-   *
-   * TODO(scheglov) make private after switching linker to Impl
-   */
+  /// Get the [UnlinkedTypeParam]s representing the type parameters declared by
+  /// this element, or `null` if this element isn't from a summary.
+  ///
+  /// TODO(scheglov) make private after switching linker to Impl
   List<UnlinkedTypeParam> get unlinkedTypeParams;
 
-  /**
-   * Return the given [typeParameter]'s de Bruijn index in this context, or
-   * `null` if it's not in scope.
-   *
-   * If an [offset] is provided, then it is added to the computed index.
-   */
+  @override
   int computeDeBruijnIndex(TypeParameterElement typeParameter,
       {int offset = 0}) {
     if (typeParameter.enclosingElement == this) {
@@ -8660,9 +7798,7 @@
     }
   }
 
-  /**
-   * Convert the given [index] into a type parameter type.
-   */
+  /// Convert the given [index] into a type parameter type.
   TypeParameterType getTypeParameterType(int index) {
     List<TypeParameterType> types = typeParameterTypes;
     if (index <= types.length) {
@@ -8671,17 +7807,25 @@
       return enclosingTypeParameterContext
           .getTypeParameterType(index - types.length);
     } else {
-      // If we get here, it means that a summary contained a type parameter index
-      // that was out of range.
+      // If we get here, it means that a summary contained a type parameter
+      // index that was out of range.
       throw new RangeError('Invalid type parameter index');
     }
   }
 }
 
-/**
- * Container with information about explicit top-level property accessors and
- * corresponding implicit top-level variables.
- */
+/// Interface used by linker serialization methods to convert type parameter
+/// references into De Bruijn indices.
+abstract class TypeParameterSerializationContext {
+  /// Return the given [typeParameter]'s de Bruijn index in this context, or
+  /// `null` if it's not in scope.
+  ///
+  /// If an [offset] is provided, then it is added to the computed index.
+  int computeDeBruijnIndex(TypeParameterElement typeParameter, {int offset: 0});
+}
+
+/// Container with information about explicit top-level property accessors and
+/// corresponding implicit top-level variables.
 class UnitExplicitTopLevelAccessors {
   final List<PropertyAccessorElementImpl> accessors =
       <PropertyAccessorElementImpl>[];
@@ -8689,10 +7833,8 @@
       <TopLevelVariableElementImpl>[];
 }
 
-/**
- * Container with information about explicit top-level variables and
- * corresponding implicit top-level property accessors.
- */
+/// Container with information about explicit top-level variables and
+/// corresponding implicit top-level property accessors.
 class UnitExplicitTopLevelVariables {
   final List<TopLevelVariableElementImpl> variables;
   final List<PropertyAccessorElementImpl> implicitAccessors =
@@ -8704,73 +7846,50 @@
             : const <TopLevelVariableElementImpl>[];
 }
 
-/**
- * A concrete implementation of a [UriReferencedElement].
- */
+/// A concrete implementation of a [UriReferencedElement].
 abstract class UriReferencedElementImpl extends ElementImpl
     implements UriReferencedElement {
-  /**
-   * The offset of the URI in the file, or `-1` if this node is synthetic.
-   */
+  /// The offset of the URI in the file, or `-1` if this node is synthetic.
   int _uriOffset = -1;
 
-  /**
-   * The offset of the character immediately following the last character of
-   * this node's URI, or `-1` if this node is synthetic.
-   */
+  /// The offset of the character immediately following the last character of
+  /// this node's URI, or `-1` if this node is synthetic.
   int _uriEnd = -1;
 
-  /**
-   * The URI that is specified by this directive.
-   */
+  /// The URI that is specified by this directive.
   String _uri;
 
-  /**
-   * Initialize a newly created import element to have the given [name] and
-   * [offset]. The offset may be `-1` if the element is synthetic.
-   */
+  /// Initialize a newly created import element to have the given [name] and
+  /// [offset]. The offset may be `-1` if the element is synthetic.
   UriReferencedElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   UriReferencedElementImpl.forSerialized(ElementImpl enclosingElement)
       : super.forSerialized(enclosingElement);
 
-  /**
-   * Return the URI that is specified by this directive.
-   */
+  /// Return the URI that is specified by this directive.
   String get uri => _uri;
 
-  /**
-   * Set the URI that is specified by this directive to be the given [uri].
-   */
+  /// Set the URI that is specified by this directive to be the given [uri].
   void set uri(String uri) {
     _uri = uri;
   }
 
-  /**
-   * Return the offset of the character immediately following the last character
-   * of this node's URI, or `-1` if this node is synthetic.
-   */
+  /// Return the offset of the character immediately following the last
+  /// character of this node's URI, or `-1` if this node is synthetic.
   int get uriEnd => _uriEnd;
 
-  /**
-   * Set the offset of the character immediately following the last character of
-   * this node's URI to the given [offset].
-   */
+  /// Set the offset of the character immediately following the last character
+  /// of this node's URI to the given [offset].
   void set uriEnd(int offset) {
     _uriEnd = offset;
   }
 
-  /**
-   * Return the offset of the URI in the file, or `-1` if this node is synthetic.
-   */
+  /// Return the offset of the URI in the file, or `-1` if this node is
+  /// synthetic.
   int get uriOffset => _uriOffset;
 
-  /**
-   * Set the offset of the URI in the file to the given [offset].
-   */
+  /// Set the offset of the URI in the file to the given [offset].
   void set uriOffset(int offset) {
     _uriOffset = offset;
   }
@@ -8787,53 +7906,37 @@
   }
 }
 
-/**
- * A concrete implementation of a [VariableElement].
- */
+/// A concrete implementation of a [VariableElement].
 abstract class VariableElementImpl extends ElementImpl
     implements VariableElement {
-  /**
-   * The declared type of this variable.
-   */
+  /// The declared type of this variable.
   DartType _declaredType;
 
-  /**
-   * The inferred type of this variable.
-   */
+  /// The inferred type of this variable.
   DartType _type;
 
-  /**
-   * A synthetic function representing this variable's initializer, or `null` if
-   * this variable does not have an initializer.
-   */
+  /// A synthetic function representing this variable's initializer, or `null
+  ///` if this variable does not have an initializer.
   FunctionElement _initializer;
 
-  /**
-   * Initialize a newly created variable element to have the given [name] and
-   * [offset].
-   */
+  /// Initialize a newly created variable element to have the given [name] and
+  /// [offset].
   VariableElementImpl(String name, int offset) : super(name, offset);
 
-  /**
-   * Initialize a newly created variable element to have the given [name].
-   */
+  /// Initialize a newly created variable element to have the given [name].
   VariableElementImpl.forNode(Identifier name) : super.forNode(name);
 
-  /**
-   * Initialize using the given serialized information.
-   */
+  /// Initialize using the given serialized information.
   VariableElementImpl.forSerialized(ElementImpl enclosingElement)
       : super.forSerialized(enclosingElement);
 
-  /**
-   * If this element represents a constant variable, and it has an initializer,
-   * a copy of the initializer for the constant.  Otherwise `null`.
-   *
-   * Note that in correct Dart code, all constant variables must have
-   * initializers.  However, analyzer also needs to handle incorrect Dart code,
-   * in which case there might be some constant variables that lack
-   * initializers.
-   */
+  /// If this element represents a constant variable, and it has an initializer,
+  /// a copy of the initializer for the constant.  Otherwise `null`.
+  ///
+  /// Note that in correct Dart code, all constant variables must have
+  /// initializers.  However, analyzer also needs to handle incorrect Dart code,
+  /// in which case there might be some constant variables that lack
+  /// initializers.
   Expression get constantInitializer => null;
 
   @override
@@ -8846,18 +7949,14 @@
   @override
   String get displayName => name;
 
-  /**
-   * Return the result of evaluating this variable's initializer as a
-   * compile-time constant expression, or `null` if this variable is not a
-   * 'const' variable, if it does not have an initializer, or if the compilation
-   * unit containing the variable has not been resolved.
-   */
+  /// Return the result of evaluating this variable's initializer as a
+  /// compile-time constant expression, or `null` if this variable is not a
+  /// 'const' variable, if it does not have an initializer, or if the
+  /// compilation unit containing the variable has not been resolved.
   EvaluationResultImpl get evaluationResult => null;
 
-  /**
-   * Set the result of evaluating this variable's initializer as a compile-time
-   * constant expression to the given [result].
-   */
+  /// Set the result of evaluating this variable's initializer as a compile-time
+  /// constant expression to the given [result].
   void set evaluationResult(EvaluationResultImpl result) {
     throw new StateError(
         "Invalid attempt to set a compile-time constant result");
@@ -8868,9 +7967,7 @@
     return hasModifier(Modifier.IMPLICIT_TYPE);
   }
 
-  /**
-   * Set whether this variable element has an implicit type.
-   */
+  /// Set whether this variable element has an implicit type.
   void set hasImplicitType(bool hasImplicitType) {
     setModifier(Modifier.IMPLICIT_TYPE, hasImplicitType);
   }
@@ -8878,10 +7975,8 @@
   @override
   FunctionElement get initializer => _initializer;
 
-  /**
-   * Set the function representing this variable's initializer to the given
-   * [function].
-   */
+  /// Set the function representing this variable's initializer to the given
+  /// [function].
   void set initializer(FunctionElement function) {
     if (function != null) {
       (function as FunctionElementImpl).enclosingElement = this;
@@ -8894,9 +7989,7 @@
     return hasModifier(Modifier.CONST);
   }
 
-  /**
-   * Set whether this variable is const.
-   */
+  /// Set whether this variable is const.
   void set isConst(bool isConst) {
     setModifier(Modifier.CONST, isConst);
   }
@@ -8906,9 +7999,7 @@
     return hasModifier(Modifier.FINAL);
   }
 
-  /**
-   * Set whether this variable is final.
-   */
+  /// Set whether this variable is final.
   void set isFinal(bool isFinal) {
     setModifier(Modifier.FINAL, isFinal);
   }
@@ -8929,11 +8020,9 @@
     _type = _checkElementOfType(type);
   }
 
-  /**
-   * Return the error reported during type inference for this variable, or
-   * `null` if this variable is not a subject of type inference, or there was
-   * no error.
-   */
+  /// Return the error reported during type inference for this variable, or
+  /// `null` if this variable is not a subject of type inference, or there was
+  /// no error.
   TopLevelInferenceError get typeInferenceError {
     return null;
   }
diff --git a/pkg/analyzer/lib/src/dart/element/handle.dart b/pkg/analyzer/lib/src/dart/element/handle.dart
index 4c34687..95ac102 100644
--- a/pkg/analyzer/lib/src/dart/element/handle.dart
+++ b/pkg/analyzer/lib/src/dart/element/handle.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.element_handle;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/constant/value.dart';
 import 'package:analyzer/dart/element/element.dart';
@@ -89,6 +87,9 @@
   bool get isRequired => actualElement.hasRequired;
 
   @override
+  bool get isSimplyBounded => actualElement.isSimplyBounded;
+
+  @override
   bool get isValidMixin => actualElement.isValidMixin;
 
   @override
@@ -553,6 +554,9 @@
   bool get isOperator => actualElement.isOperator;
 
   @override
+  bool get isSimplyBounded => actualElement.isSimplyBounded;
+
+  @override
   bool get isStatic => actualElement.isStatic;
 
   @override
@@ -627,6 +631,9 @@
   ClassElement get enclosingElement => actualElement.enclosingElement;
 
   @override
+  bool get isCovariant => actualElement.isCovariant;
+
+  @override
   bool get isEnumConstant => actualElement.isEnumConstant;
 
   @deprecated
@@ -693,6 +700,12 @@
       super.enclosingElement as CompilationUnitElement;
 
   @override
+  GenericFunctionTypeElement get function => actualElement.function;
+
+  @override
+  bool get isSimplyBounded => actualElement.isSimplyBounded;
+
+  @override
   ElementKind get kind => ElementKind.FUNCTION_TYPE_ALIAS;
 
   @override
@@ -736,6 +749,9 @@
   GenericFunctionTypeElement get function => actualElement.function;
 
   @override
+  bool get isSimplyBounded => actualElement.isSimplyBounded;
+
+  @override
   ElementKind get kind => ElementKind.FUNCTION_TYPE_ALIAS;
 
   @override
diff --git a/pkg/analyzer/lib/src/dart/element/inheritance_manager2.dart b/pkg/analyzer/lib/src/dart/element/inheritance_manager2.dart
index 37e183d..860bcb9 100644
--- a/pkg/analyzer/lib/src/dart/element/inheritance_manager2.dart
+++ b/pkg/analyzer/lib/src/dart/element/inheritance_manager2.dart
@@ -30,7 +30,7 @@
 
 /// Manages knowledge about interface types and their members.
 class InheritanceManager2 {
-  final StrongTypeSystemImpl _typeSystem;
+  final TypeSystem _typeSystem;
 
   /// Cached instance interfaces for [InterfaceType].
   final Map<InterfaceType, Interface> _interfaces = {};
@@ -43,11 +43,17 @@
 
   InheritanceManager2(this._typeSystem);
 
+  /// Return the member with the given [name] that the [type] inherits from the
+  /// mixins, superclasses, or interfaces; or `null` if no member is inherited.
+  FunctionType getInherited(InterfaceType type, Name name) {
+    return getOverridden(type, name)?.last;
+  }
+
   /// Return the interface of the given [type].  It might include private
   /// members, not necessary accessible in all libraries.
   Interface getInterface(InterfaceType type) {
     if (type == null) {
-      return const Interface._(const {}, const [{}], const []);
+      return const Interface._(const {}, const {}, const [{}], const []);
     }
 
     var result = _interfaces[type];
@@ -55,9 +61,14 @@
       return result;
     }
 
-    _interfaces[type] = const Interface._(const {}, const [{}], const []);
+    _interfaces[type] = const Interface._(
+      const {},
+      const {},
+      const [{}],
+      const [],
+    );
     Map<Name, FunctionType> map = {};
-    List<Map<Name, FunctionType>> supers = [];
+    List<Map<Name, FunctionType>> superImplemented = [];
     List<Conflict> conflicts = null;
 
     // If a class declaration has a member declaration, the signature of that
@@ -65,6 +76,11 @@
     _addTypeMembers(map, type);
 
     Map<Name, List<FunctionType>> namedCandidates = {};
+
+    for (var interface in type.interfaces) {
+      _addCandidates(namedCandidates, interface);
+    }
+
     if (type.element.isMixin) {
       for (var constraint in type.superclassConstraints) {
         _addCandidates(namedCandidates, constraint);
@@ -74,7 +90,7 @@
       // from its superclass constraints, whether it is abstract or concrete.
       Map<Name, FunctionType> mixinSuperClass = {};
       _findMostSpecificFromNamedCandidates(mixinSuperClass, namedCandidates);
-      supers.add(mixinSuperClass);
+      superImplemented.add(mixinSuperClass);
     } else {
       Map<Name, FunctionType> implemented;
 
@@ -82,7 +98,7 @@
         _addCandidates(namedCandidates, type.superclass);
 
         implemented = _getImplemented(type.superclass);
-        supers.add(implemented);
+        superImplemented.add(implemented);
       }
 
       for (var mixin in type.mixins) {
@@ -92,14 +108,10 @@
         implemented = <Name, FunctionType>{}
           ..addAll(implemented)
           ..addAll(implementedInMixin);
-        supers.add(implemented);
+        superImplemented.add(implemented);
       }
     }
 
-    for (var interface in type.interfaces) {
-      _addCandidates(namedCandidates, interface);
-    }
-
     // If a class declaration does not have a member declaration with a
     // particular name, but some super-interfaces do have a member with that
     // name, it's a compile-time error if there is no signature among the
@@ -108,7 +120,12 @@
     // signature becomes the signature of the class's interface.
     conflicts = _findMostSpecificFromNamedCandidates(map, namedCandidates);
 
-    var interface = new Interface._(map, supers, conflicts ?? const []);
+    var interface = new Interface._(
+      map,
+      namedCandidates,
+      superImplemented,
+      conflicts ?? const [],
+    );
     _interfaces[type] = interface;
     return interface;
   }
@@ -132,11 +149,11 @@
     bool forSuper: false,
   }) {
     if (forSuper) {
-      var supers = getInterface(type)._supers;
+      var superImplemented = getInterface(type)._superImplemented;
       if (forMixinIndex >= 0) {
-        return supers[forMixinIndex][name];
+        return superImplemented[forMixinIndex][name];
       }
-      return supers.last[name];
+      return superImplemented.last[name];
     }
     if (concrete) {
       return _getImplemented(type)[name];
@@ -144,6 +161,14 @@
     return getInterface(type).map[name];
   }
 
+  /// Return all members of mixins, superclasses, and interfaces that a member
+  /// with the given [name], defined in the [type], would override; or `null`
+  /// if no members would be overridden.
+  List<FunctionType> getOverridden(InterfaceType type, Name name) {
+    var interface = getInterface(type);
+    return interface._overridden[name];
+  }
+
   void _addCandidate(Map<Name, List<FunctionType>> namedCandidates, Name name,
       FunctionType candidate) {
     var candidates = namedCandidates[name];
@@ -157,9 +182,11 @@
 
   void _addCandidates(
       Map<Name, List<FunctionType>> namedCandidates, InterfaceType type) {
-    getInterface(type).map.forEach((name, candidate) {
+    var map = getInterface(type).map;
+    for (var name in map.keys) {
+      var candidate = map[name];
       _addCandidate(namedCandidates, name, candidate);
-    });
+    }
   }
 
   void _addTypeMembers(Map<Name, FunctionType> map, InterfaceType type) {
@@ -247,8 +274,13 @@
         conflicts.add(conflict);
       }
 
+      // Candidates are recorded in forward order, so
+      // `class X extends S with M1, M2 implements I1, I2 {}` will record
+      // candidates from [I1, I2, S, M1, M2]. But during method lookup
+      // candidates should be considered in backward order, i.e. from `M2`,
+      // then from `M1`, then from `S`.
       FunctionType validOverride;
-      for (var i = 0; i < candidates.length; i++) {
+      for (var i = candidates.length - 1; i >= 0; i--) {
         validOverride = candidates[i];
         for (var j = 0; j < candidates.length; j++) {
           var candidate = candidates[j];
@@ -356,18 +388,27 @@
   /// The map of names to their signature in the interface.
   final Map<Name, FunctionType> map;
 
+  /// The map of names to their signatures from the mixins, superclasses,
+  /// or interfaces.
+  final Map<Name, List<FunctionType>> _overridden;
+
   /// Each item of this list maps names to their concrete implementations.
   /// The first item of the list is the nominal superclass, next the nominal
   /// superclass plus the first mixin, etc. So, for the class like
   /// `class C extends S with M1, M2`, we get `[S, S&M1, S&M1&M2]`.
-  final List<Map<Name, FunctionType>> _supers;
+  final List<Map<Name, FunctionType>> _superImplemented;
 
   /// The list of conflicts between superinterfaces - the nominal superclass,
   /// mixins, and interfaces.  Does not include conflicts with the declared
   /// members of the class.
   final List<Conflict> conflicts;
 
-  const Interface._(this.map, this._supers, this.conflicts);
+  const Interface._(
+    this.map,
+    this._overridden,
+    this._superImplemented,
+    this.conflicts,
+  );
 }
 
 /// A public name, or a private name qualified by a library URI.
diff --git a/pkg/analyzer/lib/src/dart/element/member.dart b/pkg/analyzer/lib/src/dart/element/member.dart
index 68d6c62..b1df8d9 100644
--- a/pkg/analyzer/lib/src/dart/element/member.dart
+++ b/pkg/analyzer/lib/src/dart/element/member.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.element.member;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/constant/value.dart';
 import 'package:analyzer/dart/element/element.dart';
@@ -158,6 +156,9 @@
   bool get isOperator => baseElement.isOperator;
 
   @override
+  bool get isSimplyBounded => baseElement.isSimplyBounded;
+
+  @override
   bool get isStatic => baseElement.isStatic;
 
   @override
@@ -244,6 +245,9 @@
       PropertyAccessorMember.from(baseElement.getter, definingType);
 
   @override
+  bool get isCovariant => baseElement.isCovariant;
+
+  @override
   bool get isEnumConstant => baseElement.isEnumConstant;
 
   @deprecated
diff --git a/pkg/analyzer/lib/src/dart/element/type.dart b/pkg/analyzer/lib/src/dart/element/type.dart
index 08a3048..b566cbb 100644
--- a/pkg/analyzer/lib/src/dart/element/type.dart
+++ b/pkg/analyzer/lib/src/dart/element/type.dart
@@ -401,15 +401,12 @@
    * Initialize a newly created function type to be declared by the given
    * [element].
    *
-   * If [typeArguments] are provided, they are used to instantiate the typedef.
-   *
    * Note: this constructor mishandles generics.
    * See https://github.com/dart-lang/sdk/issues/34657.
    */
-  factory FunctionTypeImpl.forTypedef(FunctionTypeAliasElement element,
-      {List<DartType> typeArguments}) {
-    return new _FunctionTypeImplLazy._(element, element?.name, null,
-        typeArguments, null, null, typeArguments != null);
+  factory FunctionTypeImpl.forTypedef(FunctionTypeAliasElement element) {
+    return new _FunctionTypeImplLazy._(
+        element, element?.name, null, null, null, null, false);
   }
 
   /**
@@ -793,8 +790,7 @@
         this,
         type,
         (DartType t, DartType s) =>
-            (t as TypeImpl).isMoreSpecificThan(s, withDynamic),
-        new StrongTypeSystemImpl(null).instantiateToBounds);
+            (t as TypeImpl).isMoreSpecificThan(s, withDynamic));
   }
 
   @override
@@ -803,8 +799,7 @@
     return FunctionTypeImpl.relate(
         typeSystem.instantiateToBounds(this),
         typeSystem.instantiateToBounds(type),
-        (DartType t, DartType s) => t.isAssignableTo(s),
-        typeSystem.instantiateToBounds);
+        (DartType t, DartType s) => t.isAssignableTo(s));
   }
 
   @override
@@ -938,11 +933,8 @@
    * If [boundsRelation] is omitted, uses [returnRelation]. This is for
    * backwards compatibility, and convenience for Dart 1 type system methods.
    */
-  static bool relate(
-      FunctionType t,
-      DartType other,
+  static bool relate(FunctionType t, DartType other,
       bool returnRelation(DartType t, DartType s),
-      DartType instantiateToBounds(DartType t),
       {bool parameterRelation(ParameterElement t, ParameterElement s),
       bool boundsRelation(DartType bound2, DartType bound1,
           TypeParameterElement formal2, TypeParameterElement formal1)}) {
@@ -1446,7 +1438,6 @@
       try {
         _typeArguments = _typeArgumentsComputer();
       } on RecursiveInstantiateToBounds {
-        _hasTypeParameterReferenceInBound = true;
         _typeArguments = new List<DartType>.filled(
             element.typeParameters.length,
             element.context.typeProvider.dynamicType);
@@ -1865,16 +1856,6 @@
         }
       }
 
-      if (forSuperInvocation) {
-        bool inOldStyleSuperMixin = inMixin &&
-            type.superclass != null &&
-            !type.superclass.isObject &&
-            element.context.analysisOptions.enableSuperMixins;
-        if (inOldStyleSuperMixin) {
-          acceptAbstract = true;
-        }
-      }
-
       if (!inMixin || acceptAbstract) {
         var mixins = type.mixins;
         startMixinIndex ??= mixins.length;
@@ -2540,11 +2521,6 @@
   final String name;
 
   /**
-   * The cached value for [hasTypeParameterReferenceInBound].
-   */
-  bool _hasTypeParameterReferenceInBound;
-
-  /**
    * Initialize a newly created type to be declared by the given [element] and
    * to have the given [name].
    */
@@ -2556,46 +2532,6 @@
   @override
   Element get element => _element;
 
-  /**
-   * Return `true` if the type is parameterized and has a type parameter with
-   * the bound that references a type parameter.
-   */
-  bool get hasTypeParameterReferenceInBound {
-    if (_hasTypeParameterReferenceInBound == null) {
-      bool hasTypeParameterReference(DartType type) {
-        if (type == this) {
-          // Cycle detection -- and cycles should be considered unboundable.
-          return true;
-        } else if (type is TypeImpl &&
-            type._hasTypeParameterReferenceInBound == true) {
-          return true;
-        } else if (type is TypeParameterType) {
-          return true;
-        } else if (type is FunctionType) {
-          return (type as TypeImpl).hasTypeParameterReferenceInBound;
-        } else if (type is ParameterizedType) {
-          return type.typeArguments.any(hasTypeParameterReference);
-        } else {
-          return false;
-        }
-      }
-
-      Element element = this.element;
-      if (element is FunctionTypedElement) {
-        _hasTypeParameterReferenceInBound = element.parameters.any(
-                (parameter) => hasTypeParameterReference(parameter.type)) ||
-            (element.returnType != null &&
-                hasTypeParameterReference(element.returnType));
-      } else if (element is TypeParameterizedElement) {
-        _hasTypeParameterReferenceInBound = element.typeParameters
-            .any((parameter) => hasTypeParameterReference(parameter.bound));
-      } else {
-        _hasTypeParameterReferenceInBound = false;
-      }
-    }
-    return _hasTypeParameterReferenceInBound;
-  }
-
   @override
   bool get isBottom => false;
 
diff --git a/pkg/analyzer/lib/src/dart/error/hint_codes.dart b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
index 7de60e2..de302ca8 100644
--- a/pkg/analyzer/lib/src/dart/error/hint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/hint_codes.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.error.hint_codes;
-
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 
diff --git a/pkg/analyzer/lib/src/dart/error/lint_codes.dart b/pkg/analyzer/lib/src/dart/error/lint_codes.dart
index 11da461e0..d83e4a9 100644
--- a/pkg/analyzer/lib/src/dart/error/lint_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/lint_codes.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.error.lint_codes;
-
 import 'package:analyzer/error/error.dart';
 
 /**
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
index adbc8d3..e689cd1 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.dart
@@ -1,12 +1,10 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 errors produced during syntactic analysis (scanning and parsing).
  */
-library analyzer.src.dart.error.syntactic_errors;
-
 import 'package:analyzer/error/error.dart';
 
 export 'package:front_end/src/scanner/errors.dart' show ScannerErrorCode;
@@ -87,16 +85,9 @@
       'CONST_ENUM', "Enums can't be declared to be 'const'.",
       correction: "Try removing the 'const' keyword.");
 
-  static const ParserErrorCode CONST_FACTORY = const ParserErrorCode(
-      'CONST_FACTORY',
-      "Only redirecting factory constructors can be declared to be 'const'.",
-      correction: "Try removing the 'const' keyword, or "
-          "replacing the body with '=' followed by a valid target.");
+  static const ParserErrorCode CONST_FACTORY = _CONST_FACTORY;
 
-  static const ParserErrorCode CONST_METHOD = const ParserErrorCode(
-      'CONST_METHOD',
-      "Getters, setters and methods can't be declared to be 'const'.",
-      correction: "Try removing the 'const' keyword.");
+  static const ParserErrorCode CONST_METHOD = _CONST_METHOD;
 
   static const ParserErrorCode CONST_TYPEDEF = const ParserErrorCode(
       'CONST_TYPEDEF', "Type aliases can't be declared to be 'const'.",
@@ -108,28 +99,16 @@
   static const ParserErrorCode CONTINUE_OUTSIDE_OF_LOOP =
       _CONTINUE_OUTSIDE_OF_LOOP;
 
-  static const ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE = const ParserErrorCode(
-      'CONTINUE_WITHOUT_LABEL_IN_CASE',
-      "A continue statement in a switch statement must have a label as a target.",
-      correction:
-          "Try adding a label associated with one of the case clauses to the continue statement.");
+  static const ParserErrorCode CONTINUE_WITHOUT_LABEL_IN_CASE =
+      _CONTINUE_WITHOUT_LABEL_IN_CASE;
 
-  static const ParserErrorCode COVARIANT_AFTER_FINAL = const ParserErrorCode(
-      'COVARIANT_AFTER_FINAL',
-      "The modifier 'covariant' should be before the modifier 'final'.",
-      correction: "Try re-ordering the modifiers.");
+  static const ParserErrorCode COVARIANT_AFTER_FINAL = _COVARIANT_AFTER_FINAL;
 
   static const ParserErrorCode COVARIANT_AFTER_VAR = _COVARIANT_AFTER_VAR;
 
-  static const ParserErrorCode COVARIANT_AND_STATIC = const ParserErrorCode(
-      'COVARIANT_AND_STATIC',
-      "Members can't be declared to be both 'covariant' and 'static'.",
-      correction: "Try removing either the 'covariant' or 'static' keyword.");
+  static const ParserErrorCode COVARIANT_AND_STATIC = _COVARIANT_AND_STATIC;
 
-  static const ParserErrorCode COVARIANT_MEMBER = const ParserErrorCode(
-      'COVARIANT_MEMBER',
-      "Getters, setters and methods can't be declared to be 'covariant'.",
-      correction: "Try removing the 'covariant' keyword.");
+  static const ParserErrorCode COVARIANT_MEMBER = _COVARIANT_MEMBER;
 
   static const ParserErrorCode COVARIANT_TOP_LEVEL_DECLARATION =
       const ParserErrorCode('COVARIANT_TOP_LEVEL_DECLARATION',
@@ -141,11 +120,7 @@
       "A constructor can't be declared to be 'covariant'.",
       correction: "Try removing the keyword 'covariant'.");
 
-  static const ParserErrorCode DEFERRED_AFTER_PREFIX = const ParserErrorCode(
-      'DEFERRED_AFTER_PREFIX',
-      "The deferred keyword should come"
-      " immediately before the prefix ('as' clause).",
-      correction: "Try moving the deferred keyword before the prefix.");
+  static const ParserErrorCode DEFERRED_AFTER_PREFIX = _DEFERRED_AFTER_PREFIX;
 
   static const ParserErrorCode DEFAULT_VALUE_IN_FUNCTION_TYPE =
       const ParserErrorCode('DEFAULT_VALUE_IN_FUNCTION_TYPE',
@@ -153,44 +128,30 @@
           correction: "Try removing the default value.");
 
   static const ParserErrorCode DIRECTIVE_AFTER_DECLARATION =
-      const ParserErrorCode('DIRECTIVE_AFTER_DECLARATION',
-          "Directives must appear before any declarations.",
-          correction: "Try moving the directive before any declarations.");
+      _DIRECTIVE_AFTER_DECLARATION;
 
   /**
    * Parameters:
    * 0: the label that was duplicated
    */
   static const ParserErrorCode DUPLICATE_LABEL_IN_SWITCH_STATEMENT =
-      const ParserErrorCode('DUPLICATE_LABEL_IN_SWITCH_STATEMENT',
-          "The label '{0}' was already used in this switch statement.",
-          correction: "Try choosing a different name for this label.");
+      _DUPLICATE_LABEL_IN_SWITCH_STATEMENT;
 
-  static const ParserErrorCode DUPLICATE_DEFERRED = const ParserErrorCode(
-      'DUPLICATE_DEFERRED',
-      "An import directive can only have one 'deferred' keyword.",
-      correction: "Try removing all but one 'deferred' keyword.");
+  static const ParserErrorCode DUPLICATE_DEFERRED = _DUPLICATE_DEFERRED;
 
   /**
    * Parameters:
    * 0: the modifier that was duplicated
    */
-  static const ParserErrorCode DUPLICATED_MODIFIER = const ParserErrorCode(
-      'DUPLICATED_MODIFIER', "The modifier '{0}' was already specified.",
-      correction: "Try removing all but one occurance of the modifier.");
+  static const ParserErrorCode DUPLICATED_MODIFIER = _DUPLICATED_MODIFIER;
 
-  static const ParserErrorCode DUPLICATE_PREFIX = const ParserErrorCode(
-      'DUPLICATE_PREFIX',
-      "An import directive can only have one prefix ('as' clause).",
-      correction: "Try removing all but one prefix.");
+  static const ParserErrorCode DUPLICATE_PREFIX = _DUPLICATE_PREFIX;
 
   static const ParserErrorCode EMPTY_ENUM_BODY = const ParserErrorCode(
       'EMPTY_ENUM_BODY', "An enum must declare at least one constant name.",
       correction: "Try declaring a constant.");
 
-  static const ParserErrorCode ENUM_IN_CLASS = const ParserErrorCode(
-      'ENUM_IN_CLASS', "Enums can't be declared inside classes.",
-      correction: "Try moving the enum to the top-level.");
+  static const ParserErrorCode ENUM_IN_CLASS = _ENUM_IN_CLASS;
 
   static const ParserErrorCode EQUALITY_CANNOT_BE_EQUALITY_OPERAND =
       _EQUALITY_CANNOT_BE_EQUALITY_OPERAND;
@@ -230,10 +191,7 @@
       const ParserErrorCode('EXPECTED_TYPE_NAME', "Expected a type name.");
 
   static const ParserErrorCode EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE =
-      const ParserErrorCode('EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE',
-          "Export directives must preceed part directives.",
-          correction:
-              "Try moving the export directives before the part directives.");
+      _EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE;
 
   static const ParserErrorCode EXTERNAL_AFTER_CONST = _EXTERNAL_AFTER_CONST;
 
@@ -274,18 +232,12 @@
           correction: "Try removing the body of the setter, or "
               "removing the keyword 'external'.");
 
-  static const ParserErrorCode EXTERNAL_TYPEDEF = const ParserErrorCode(
-      'EXTERNAL_TYPEDEF', "Typedefs can't be declared to be 'external'.",
-      correction: "Try removing the keyword 'external'.");
+  static const ParserErrorCode EXTERNAL_TYPEDEF = _EXTERNAL_TYPEDEF;
 
-  static const ParserErrorCode EXTRANEOUS_MODIFIER = const ParserErrorCode(
-      'EXTRANEOUS_MODIFIER', "Can't have modifier '{0}' here.",
-      correction: "Try removing '{0}'.");
+  static const ParserErrorCode EXTRANEOUS_MODIFIER = _EXTRANEOUS_MODIFIER;
 
   static const ParserErrorCode FACTORY_TOP_LEVEL_DECLARATION =
-      const ParserErrorCode('FACTORY_TOP_LEVEL_DECLARATION',
-          "Top-level declarations can't be declared to be 'factory'.",
-          correction: "Try removing the keyword 'factory'.");
+      _FACTORY_TOP_LEVEL_DECLARATION;
 
   static const ParserErrorCode FACTORY_WITH_INITIALIZERS = const ParserErrorCode(
       'FACTORY_WITH_INITIALIZERS',
@@ -300,15 +252,9 @@
       correction: "Try adding a body to the constructor.");
 
   static const ParserErrorCode FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR =
-      const ParserErrorCode('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR',
-          "Field formal parameters can only be used in a constructor.",
-          correction:
-              "Try replacing the field formal parameter with a normal parameter.");
+      _FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR;
 
-  static const ParserErrorCode FINAL_AND_COVARIANT = const ParserErrorCode(
-      'FINAL_AND_COVARIANT',
-      "Members can't be declared to be both 'final' and 'covariant'.",
-      correction: "Try removing either the 'final' or 'covariant' keyword.");
+  static const ParserErrorCode FINAL_AND_COVARIANT = _FINAL_AND_COVARIANT;
 
   static const ParserErrorCode FINAL_AND_VAR = const ParserErrorCode(
       'FINAL_AND_VAR',
diff --git a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
index 15b00e7..b523e42 100644
--- a/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
+++ b/pkg/analyzer/lib/src/dart/error/syntactic_errors.g.dart
@@ -69,6 +69,25 @@
   _CONST_AND_VAR,
   _CONST_CLASS,
   _VAR_AS_TYPE_NAME,
+  _CONST_FACTORY,
+  _CONST_METHOD,
+  _CONTINUE_WITHOUT_LABEL_IN_CASE,
+  _COVARIANT_AFTER_FINAL,
+  _COVARIANT_AND_STATIC,
+  _COVARIANT_MEMBER,
+  _DEFERRED_AFTER_PREFIX,
+  _DIRECTIVE_AFTER_DECLARATION,
+  _DUPLICATED_MODIFIER,
+  _DUPLICATE_DEFERRED,
+  _DUPLICATE_LABEL_IN_SWITCH_STATEMENT,
+  _DUPLICATE_PREFIX,
+  _ENUM_IN_CLASS,
+  _EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
+  _EXTERNAL_TYPEDEF,
+  _EXTRANEOUS_MODIFIER,
+  _FACTORY_TOP_LEVEL_DECLARATION,
+  _FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR,
+  _FINAL_AND_COVARIANT,
 ];
 
 const ParserErrorCode _ABSTRACT_CLASS_MEMBER = const ParserErrorCode(
@@ -118,16 +137,79 @@
     correction:
         "Try removing the 'const' keyword. If you're trying to indicate that instances of the class can be constants, place the 'const' keyword on  the class' constructor(s).");
 
+const ParserErrorCode _CONST_FACTORY = const ParserErrorCode('CONST_FACTORY',
+    r"Only redirecting factory constructors can be declared to be 'const'.",
+    correction:
+        "Try removing the 'const' keyword, or replacing the body with '=' followed by a valid target.");
+
+const ParserErrorCode _CONST_METHOD = const ParserErrorCode('CONST_METHOD',
+    r"Getters, setters and methods can't be declared to be 'const'.",
+    correction: "Try removing the 'const' keyword.");
+
 const ParserErrorCode _CONTINUE_OUTSIDE_OF_LOOP = const ParserErrorCode(
     'CONTINUE_OUTSIDE_OF_LOOP',
     r"A continue statement can't be used outside of a loop or switch statement.",
     correction: "Try removing the continue statement.");
 
+const ParserErrorCode _CONTINUE_WITHOUT_LABEL_IN_CASE = const ParserErrorCode(
+    'CONTINUE_WITHOUT_LABEL_IN_CASE',
+    r"A continue statement in a switch statement must have a label as a target.",
+    correction:
+        "Try adding a label associated with one of the case clauses to the continue statement.");
+
+const ParserErrorCode _COVARIANT_AFTER_FINAL = const ParserErrorCode(
+    'COVARIANT_AFTER_FINAL',
+    r"The modifier 'covariant' should be before the modifier 'final'.",
+    correction: "Try re-ordering the modifiers.");
+
 const ParserErrorCode _COVARIANT_AFTER_VAR = const ParserErrorCode(
     'COVARIANT_AFTER_VAR',
     r"The modifier 'covariant' should be before the modifier 'var'.",
     correction: "Try re-ordering the modifiers.");
 
+const ParserErrorCode _COVARIANT_AND_STATIC = const ParserErrorCode(
+    'COVARIANT_AND_STATIC',
+    r"Members can't be declared to be both 'covariant' and 'static'.",
+    correction: "Try removing either the 'covariant' or 'static' keyword.");
+
+const ParserErrorCode _COVARIANT_MEMBER = const ParserErrorCode(
+    'COVARIANT_MEMBER',
+    r"Getters, setters and methods can't be declared to be 'covariant'.",
+    correction: "Try removing the 'covariant' keyword.");
+
+const ParserErrorCode _DEFERRED_AFTER_PREFIX = const ParserErrorCode(
+    'DEFERRED_AFTER_PREFIX',
+    r"The deferred keyword should come immediately before the prefix ('as' clause).",
+    correction: "Try moving the deferred keyword before the prefix.");
+
+const ParserErrorCode _DIRECTIVE_AFTER_DECLARATION = const ParserErrorCode(
+    'DIRECTIVE_AFTER_DECLARATION',
+    r"Directives must appear before any declarations.",
+    correction: "Try moving the directive before any declarations.");
+
+const ParserErrorCode _DUPLICATED_MODIFIER = const ParserErrorCode(
+    'DUPLICATED_MODIFIER', r"The modifier '#lexeme' was already specified.",
+    correction: "Try removing all but one occurance of the modifier.");
+
+const ParserErrorCode _DUPLICATE_DEFERRED = const ParserErrorCode(
+    'DUPLICATE_DEFERRED',
+    r"An import directive can only have one 'deferred' keyword.",
+    correction: "Try removing all but one 'deferred' keyword.");
+
+const ParserErrorCode _DUPLICATE_LABEL_IN_SWITCH_STATEMENT =
+    const ParserErrorCode('DUPLICATE_LABEL_IN_SWITCH_STATEMENT',
+        r"The label '#name' was already used in this switch statement.",
+        correction: "Try choosing a different name for this label.");
+
+const ParserErrorCode _DUPLICATE_PREFIX = const ParserErrorCode(
+    'DUPLICATE_PREFIX',
+    r"An import directive can only have one prefix ('as' clause).",
+    correction: "Try removing all but one prefix.");
+
+const ParserErrorCode _ENUM_IN_CLASS = const ParserErrorCode(
+    'ENUM_IN_CLASS', r"Enums can't be declared inside classes.",
+    correction: "Try moving the enum to the top-level.");
+
 const ParserErrorCode _EQUALITY_CANNOT_BE_EQUALITY_OPERAND = const ParserErrorCode(
     'EQUALITY_CANNOT_BE_EQUALITY_OPERAND',
     r"An equality expression can't be an operand of another equality expression.",
@@ -136,6 +218,12 @@
 const ParserErrorCode _EXPECTED_INSTEAD = const ParserErrorCode(
     'EXPECTED_INSTEAD', r"Expected '#string' instead of this.");
 
+const ParserErrorCode _EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE =
+    const ParserErrorCode('EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE',
+        r"Export directives must preceed part directives.",
+        correction:
+            "Try moving the export directives before the part directives.");
+
 const ParserErrorCode _EXTERNAL_AFTER_CONST = const ParserErrorCode(
     'EXTERNAL_AFTER_CONST',
     r"The modifier 'external' should be before the modifier 'const'.",
@@ -167,6 +255,29 @@
     'EXTERNAL_METHOD_WITH_BODY',
     r"An external or native method can't have a body.");
 
+const ParserErrorCode _EXTERNAL_TYPEDEF = const ParserErrorCode(
+    'EXTERNAL_TYPEDEF', r"Typedefs can't be declared to be 'external'.",
+    correction: "Try removing the keyword 'external'.");
+
+const ParserErrorCode _EXTRANEOUS_MODIFIER = const ParserErrorCode(
+    'EXTRANEOUS_MODIFIER', r"Can't have modifier '#lexeme' here.",
+    correction: "Try removing '#lexeme'.");
+
+const ParserErrorCode _FACTORY_TOP_LEVEL_DECLARATION = const ParserErrorCode(
+    'FACTORY_TOP_LEVEL_DECLARATION',
+    r"Top-level declarations can't be declared to be 'factory'.",
+    correction: "Try removing the keyword 'factory'.");
+
+const ParserErrorCode _FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR =
+    const ParserErrorCode('FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR',
+        r"Field formal parameters can only be used in a constructor.",
+        correction: "Try removing 'this.'.");
+
+const ParserErrorCode _FINAL_AND_COVARIANT = const ParserErrorCode(
+    'FINAL_AND_COVARIANT',
+    r"Members can't be declared to be both 'final' and 'covariant'.",
+    correction: "Try removing either the 'final' or 'covariant' keyword.");
+
 const ParserErrorCode _ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE =
     const ParserErrorCode('ILLEGAL_ASSIGNMENT_TO_NON_ASSIGNABLE',
         r"Illegal assignment to non-assignable expression.");
diff --git a/pkg/analyzer/lib/src/dart/error/todo_codes.dart b/pkg/analyzer/lib/src/dart/error/todo_codes.dart
index e214e9d..b671114 100644
--- a/pkg/analyzer/lib/src/dart/error/todo_codes.dart
+++ b/pkg/analyzer/lib/src/dart/error/todo_codes.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.error.todo_codes;
-
 import 'package:analyzer/error/error.dart';
 
 /**
diff --git a/pkg/analyzer/lib/src/dart/resolver/inheritance_manager.dart b/pkg/analyzer/lib/src/dart/resolver/inheritance_manager.dart
index da60a97..846de52 100644
--- a/pkg/analyzer/lib/src/dart/resolver/inheritance_manager.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/inheritance_manager.dart
@@ -125,6 +125,7 @@
    * @return the inherited executable element with the member name, or `null` if no such
    *         member exists
    */
+  @deprecated
   ExecutableElement lookupInheritance(
       ClassElement classElt, String memberName) {
     if (memberName == null || memberName.isEmpty) {
@@ -149,6 +150,7 @@
    * @return the inherited executable element with the member name, or `null` if no such
    *         member exists
    */
+  @deprecated
   ExecutableElement lookupMember(ClassElement classElt, String memberName) {
     ExecutableElement element = _lookupMemberInClass(classElt, memberName);
     if (element != null) {
@@ -167,6 +169,7 @@
    * @param memberName the name of the class member to query
    * @return a list of overridden methods
    */
+  @deprecated
   List<ExecutableElement> lookupOverrides(
       ClassElement classElt, String memberName) {
     List<ExecutableElement> result = new List<ExecutableElement>();
@@ -194,47 +197,6 @@
   }
 
   /**
-   * This method takes some inherited [FunctionType], and resolves all the parameterized types
-   * in the function type, dependent on the class in which it is being overridden.
-   *
-   * @param baseFunctionType the function type that is being overridden
-   * @param memberName the name of the member, this is used to lookup the inheritance path of the
-   *          override
-   * @param definingType the type that is overriding the member
-   * @return the passed function type with any parameterized types substituted
-   */
-  // TODO(jmesserly): investigate why this is needed in ErrorVerifier's override
-  // checking. There seems to be some rare cases where we get partially
-  // substituted type arguments, and the function types don't compare equally.
-  FunctionType substituteTypeArgumentsInMemberFromInheritance(
-      FunctionType baseFunctionType,
-      String memberName,
-      InterfaceType definingType) {
-    // if the baseFunctionType is null, or does not have any parameters,
-    // return it.
-    if (baseFunctionType == null || baseFunctionType.typeArguments.isEmpty) {
-      return baseFunctionType;
-    }
-    // First, generate the path from the defining type to the overridden member
-    Queue<InterfaceType> inheritancePath = new Queue<InterfaceType>();
-    _computeInheritancePath(inheritancePath, definingType, memberName);
-    if (inheritancePath == null || inheritancePath.isEmpty) {
-      // TODO(jwren) log analysis engine error
-      return baseFunctionType;
-    }
-    FunctionType functionTypeToReturn = baseFunctionType;
-    // loop backward through the list substituting as we go:
-    while (!inheritancePath.isEmpty) {
-      InterfaceType lastType = inheritancePath.removeLast();
-      List<DartType> parameterTypes = lastType.element.type.typeArguments;
-      List<DartType> argumentTypes = lastType.typeArguments;
-      functionTypeToReturn =
-          functionTypeToReturn.substitute2(argumentTypes, parameterTypes);
-    }
-    return functionTypeToReturn;
-  }
-
-  /**
    * Compute and return a mapping between the set of all string names of the members inherited from
    * the passed [ClassElement] superclass hierarchy, and the associated
    * [ExecutableElement].
@@ -337,78 +299,6 @@
   }
 
   /**
-   * Compute and return the inheritance path given the context of a type and a member that is
-   * overridden in the inheritance path (for which the type is in the path).
-   *
-   * @param chain the inheritance path that is built up as this method calls itself recursively,
-   *          when this method is called an empty [Queue] should be provided
-   * @param currentType the current type in the inheritance path
-   * @param memberName the name of the member that is being looked up the inheritance path
-   */
-  void _computeInheritancePath(Queue<InterfaceType> chain,
-      InterfaceType currentType, String memberName) {
-    // TODO (jwren) create a public version of this method which doesn't require
-    // the initial chain to be provided, then provided tests for this
-    // functionality in InheritanceManagerTest
-    chain.add(currentType);
-    ClassElement classElt = currentType.element;
-    // Base case- reached Object
-    if (currentType.isObject) {
-      // Looked up the chain all the way to Object, return null.
-      // This should never happen.
-      return;
-    }
-    // If we are done, return the chain
-    // We are not done if this is the first recursive call on this method.
-    if (chain.length != 1) {
-      // We are done however if the member is in this classElt
-      if (_lookupMemberInClass(classElt, memberName) != null) {
-        return;
-      }
-    }
-    // Mixins- note that mixins call lookupMemberInClass, not lookupMember
-    List<InterfaceType> mixins = classElt.mixins;
-    for (int i = mixins.length - 1; i >= 0; i--) {
-      ClassElement mixinElement = mixins[i].element;
-      if (mixinElement != null) {
-        ExecutableElement elt = _lookupMemberInClass(mixinElement, memberName);
-        if (elt != null) {
-          // this is equivalent (but faster than) calling this method
-          // recursively
-          // (return computeInheritancePath(chain, mixins[i], memberName);)
-          chain.add(mixins[i]);
-          return;
-        }
-      }
-    }
-    // Superclass
-    InterfaceType supertype = classElt.supertype;
-    if (supertype != null &&
-        lookupMember(supertype.element, memberName) != null) {
-      _computeInheritancePath(chain, supertype, memberName);
-      return;
-    }
-    // Superclass constraints
-    for (InterfaceType interfaceType in classElt.superclassConstraints) {
-      ClassElement interfaceElement = interfaceType.element;
-      if (interfaceElement != null &&
-          lookupMember(interfaceElement, memberName) != null) {
-        _computeInheritancePath(chain, interfaceType, memberName);
-        return;
-      }
-    }
-    // Interfaces
-    for (InterfaceType interfaceType in classElt.interfaces) {
-      ClassElement interfaceElement = interfaceType.element;
-      if (interfaceElement != null &&
-          lookupMember(interfaceElement, memberName) != null) {
-        _computeInheritancePath(chain, interfaceType, memberName);
-        return;
-      }
-    }
-  }
-
-  /**
    * Compute and return a mapping between the set of all string names of the members inherited from
    * the passed [ClassElement] interface hierarchy, and the associated
    * [ExecutableElement].
diff --git a/pkg/analyzer/lib/src/dart/resolver/scope.dart b/pkg/analyzer/lib/src/dart/resolver/scope.dart
index 62b2517..4d71222 100644
--- a/pkg/analyzer/lib/src/dart/resolver/scope.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/scope.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.resolver.scope;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
@@ -723,7 +721,6 @@
     // true of, for instance, `Object`, because `Object` has a source definition
     // which is not possible for `dynamic`.
     if (library.isDartCore) {
-      DynamicElementImpl.instance.library = library;
       definedNames['dynamic'] = DynamicElementImpl.instance;
     }
 
diff --git a/pkg/analyzer/lib/src/dart/scanner/reader.dart b/pkg/analyzer/lib/src/dart/scanner/reader.dart
index 2b49cd7..041f1c6 100644
--- a/pkg/analyzer/lib/src/dart/scanner/reader.dart
+++ b/pkg/analyzer/lib/src/dart/scanner/reader.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.scanner.reader;
-
 import 'package:front_end/src/scanner/reader.dart';
 
 export 'package:front_end/src/scanner/reader.dart'
diff --git a/pkg/analyzer/lib/src/dart/scanner/scanner.dart b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
index 66066c9..25af788e 100644
--- a/pkg/analyzer/lib/src/dart/scanner/scanner.dart
+++ b/pkg/analyzer/lib/src/dart/scanner/scanner.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.dart.scanner.scanner;
-
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/src/dart/error/syntactic_errors.dart';
diff --git a/pkg/analyzer/lib/src/dart/sdk/sdk.dart b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
index f645f41..6a4fef1 100644
--- a/pkg/analyzer/lib/src/dart/sdk/sdk.dart
+++ b/pkg/analyzer/lib/src/dart/sdk/sdk.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.src.generated.sdk2;
-
 import 'dart:collection';
 import 'dart:convert';
 import 'dart:io' as io;
diff --git a/pkg/analyzer/lib/src/error.dart b/pkg/analyzer/lib/src/error.dart
index 2d2e03d..1892b81 100644
--- a/pkg/analyzer/lib/src/error.dart
+++ b/pkg/analyzer/lib/src/error.dart
@@ -1,7 +1,6 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2013, 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 analyzer.src.error;
 
 import 'dart:collection';
 
diff --git a/pkg/analyzer/lib/src/error/codes.dart b/pkg/analyzer/lib/src/error/codes.dart
index 3bfa270..d966ee8 100644
--- a/pkg/analyzer/lib/src/error/codes.dart
+++ b/pkg/analyzer/lib/src/error/codes.dart
@@ -3324,8 +3324,7 @@
       WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR = const StaticTypeWarningCode(
           'WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR',
           "The constructor '{0}.{1}' does not have type parameters.",
-          correction: "Try moving type arguments to after the type name.",
-          errorSeverity: ErrorSeverity.WARNING);
+          correction: "Try moving type arguments to after the type name.");
 
   /**
    * It will be a static type warning if <i>m</i> is not a generic method with
@@ -3395,9 +3394,6 @@
           "The type '{0}' used in the 'for' loop must implement {1} with a "
           "type argument that can be assigned to '{2}'.");
 
-  @override
-  final ErrorSeverity errorSeverity;
-
   /**
    * Initialize a newly created error code to have the given [name]. The message
    * associated with the error will be created from the given [message]
@@ -3405,14 +3401,15 @@
    * given [correction] template.
    */
   const StaticTypeWarningCode(String name, String message,
-      {String correction,
-      this.errorSeverity: ErrorSeverity.ERROR,
-      bool isUnresolvedIdentifier: false})
+      {String correction, bool isUnresolvedIdentifier: false})
       : super.temporary(name, message,
             correction: correction,
             isUnresolvedIdentifier: isUnresolvedIdentifier);
 
   @override
+  ErrorSeverity get errorSeverity => ErrorSeverity.ERROR;
+
+  @override
   ErrorType get type => ErrorType.STATIC_TYPE_WARNING;
 }
 
@@ -3978,28 +3975,21 @@
           "The element type '{0}' can't be assigned to the map value type '{1}'.");
 
   /**
-   * 7.3 Setters: It is a static warning if a class has a setter named <i>v=</i>
-   * with argument type <i>T</i> and a getter named <i>v</i> with return type
-   * <i>S</i>, and <i>T</i> may not be assigned to <i>S</i>.
+   * 10.3 Setters: It is a compile-time error if a class has a setter named
+   * `v=` with argument type `T` and a getter named `v` with return type `S`,
+   * and `S` may not be assigned to `T`.
+   *
+   * Parameters:
+   * 0: the name of the getter
+   * 1: the type of the getter
+   * 2: the type of the setter
+   * 3: the name of the setter
    */
   static const StaticWarningCode MISMATCHED_GETTER_AND_SETTER_TYPES =
       const StaticWarningCode(
           'MISMATCHED_GETTER_AND_SETTER_TYPES',
-          "The parameter type for setter '{0}' is '{1}' which isn't assignable "
-          "to its getter (of type '{2}').",
-          correction: "Try changing the types so that they are compatible.");
-
-  /**
-   * 7.3 Setters: It is a static warning if a class has a setter named <i>v=</i>
-   * with argument type <i>T</i> and a getter named <i>v</i> with return type
-   * <i>S</i>, and <i>T</i> may not be assigned to <i>S</i>.
-   */
-  static const StaticWarningCode
-      MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE =
-      const StaticWarningCode(
-          'MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE',
-          "The parameter type for setter '{0}' is '{1}' which isn't assignable "
-          "to its getter (of type '{2}'), from superclass '{3}'.",
+          "The return type of getter '{0}' is '{1}' which isn't assignable "
+          "to the type '{2}' of its setter '{3}'.",
           correction: "Try changing the types so that they are compatible.");
 
   /**
diff --git a/pkg/analyzer/lib/src/error/inheritance_override.dart b/pkg/analyzer/lib/src/error/inheritance_override.dart
index 638416d..b74f141 100644
--- a/pkg/analyzer/lib/src/error/inheritance_override.dart
+++ b/pkg/analyzer/lib/src/error/inheritance_override.dart
@@ -70,9 +70,9 @@
     }
   }
 
-  /// Returns [ExecutableElement]s that are in the interface of the given
-  /// class, but don't have concrete implementations.
-  static List<ExecutableElement> missingOverrides(ClassDeclaration node) {
+  /// Returns [FunctionType]s of members that are in the interface of the
+  /// given class, but don't have concrete implementations.
+  static List<FunctionType> missingOverrides(ClassDeclaration node) {
     return node.name.getProperty(_missingOverridesKey) ?? const [];
   }
 }
@@ -84,6 +84,7 @@
   final ErrorReporter reporter;
 
   final LibraryElement library;
+  final Uri libraryUri;
   final ClassElementImpl classElement;
 
   final SimpleIdentifier classNameNode;
@@ -108,7 +109,8 @@
     this.onClause,
     this.superclass,
     this.withClause,
-  }) : classElement =
+  })  : libraryUri = library.source.uri,
+        classElement =
             AbstractClassElementImpl.getImpl(classNameNode.staticElement);
 
   void verify() {
@@ -147,7 +149,6 @@
 
     // Check the members if the class itself, against all the previously
     // collected superinterfaces of the supertype, mixins, and interfaces.
-    var libraryUri = library.source.uri;
     for (var member in members) {
       if (member is FieldDeclaration) {
         var fieldList = member.fields;
@@ -169,8 +170,10 @@
       _reportInconsistentInheritance(classNameNode, conflict);
     }
 
+    _checkForMismatchedAccessorTypes(interfaceMembers);
+
     if (!classElement.isAbstract) {
-      List<ExecutableElement> inheritedAbstractMembers = null;
+      List<FunctionType> inheritedAbstract = null;
 
       for (var name in interfaceMembers.map.keys) {
         if (!name.isAccessibleFor(libraryUri)) {
@@ -184,8 +187,8 @@
         if (concreteType == null) {
           if (!classElement.hasNoSuchMethod) {
             if (!_reportConcreteClassWithAbstractMember(name.name)) {
-              inheritedAbstractMembers ??= [];
-              inheritedAbstractMembers.add(interfaceType.element);
+              inheritedAbstract ??= [];
+              inheritedAbstract.add(interfaceType);
             }
           }
           continue;
@@ -219,7 +222,7 @@
         }
       }
 
-      _reportInheritedAbstractMembers(inheritedAbstractMembers);
+      _reportInheritedAbstractMembers(inheritedAbstract);
     }
   }
 
@@ -341,6 +344,52 @@
     return hasError;
   }
 
+  void _checkForMismatchedAccessorTypes(Interface interface) {
+    for (var name in interface.map.keys) {
+      if (!name.isAccessibleFor(libraryUri)) continue;
+
+      var getter = interface.map[name];
+      if (getter.element.kind == ElementKind.GETTER) {
+        // TODO(scheglov) We should separate getters and setters.
+        var setter = interface.map[new Name(libraryUri, '${name.name}=')];
+        if (setter != null) {
+          var getterType = getter.returnType;
+          var setterType = setter.parameters[0].type;
+          if (!typeSystem.isAssignableTo(getterType, setterType)) {
+            var getterElement = getter.element;
+            var setterElement = setter.element;
+
+            Element errorElement;
+            if (getterElement.enclosingElement == classElement) {
+              errorElement = getterElement;
+            } else if (setterElement.enclosingElement == classElement) {
+              errorElement = setterElement;
+            } else {
+              errorElement = classElement;
+            }
+
+            String getterName = getterElement.displayName;
+            if (getterElement.enclosingElement != classElement) {
+              var getterClassName = getterElement.enclosingElement.displayName;
+              getterName = '$getterClassName.$getterName';
+            }
+
+            String setterName = setterElement.displayName;
+            if (setterElement.enclosingElement != classElement) {
+              var setterClassName = setterElement.enclosingElement.displayName;
+              setterName = '$setterClassName.$setterName';
+            }
+
+            reporter.reportErrorForElement(
+                StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
+                errorElement,
+                [getterName, getterType, setterType, setterName]);
+          }
+        }
+      }
+    }
+  }
+
   /// We identified that the current non-abstract class does not have the
   /// concrete implementation of a method with the given [name].  If this is
   /// because the class itself defines an abstract method with this [name],
@@ -391,18 +440,20 @@
     }
   }
 
-  void _reportInheritedAbstractMembers(List<ExecutableElement> elements) {
-    if (elements == null) {
+  void _reportInheritedAbstractMembers(List<FunctionType> types) {
+    if (types == null) {
       return;
     }
 
     classNameNode.setProperty(
       InheritanceOverrideVerifier._missingOverridesKey,
-      elements,
+      types,
     );
 
     var descriptions = <String>[];
-    for (ExecutableElement element in elements) {
+    for (FunctionType type in types) {
+      ExecutableElement element = type.element;
+
       String prefix = '';
       if (element is PropertyAccessorElement) {
         if (element.isGetter) {
@@ -416,7 +467,7 @@
       var elementName = element.displayName;
       var enclosingElement = element.enclosingElement;
       if (enclosingElement != null) {
-        var enclosingName = element.enclosingElement.displayName;
+        var enclosingName = enclosingElement.displayName;
         description = "$prefix$enclosingName.$elementName";
       } else {
         description = "$prefix$elementName";
diff --git a/pkg/analyzer/lib/src/error/pending_error.dart b/pkg/analyzer/lib/src/error/pending_error.dart
index d0c9211..8d65815 100644
--- a/pkg/analyzer/lib/src/error/pending_error.dart
+++ b/pkg/analyzer/lib/src/error/pending_error.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.src.error.pending_error;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/error/error.dart';
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart
index 0408313..382bfd6 100644
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart
@@ -152,9 +152,18 @@
 
   void _handleInstanceCreation(Token token) {
     MethodInvocation arguments = pop();
-    ConstructorName constructorName = pop();
+    ConstructorName constructorName;
+    TypeArgumentList typeArguments;
+    var object = pop();
+    if (object is _ConstructorNameWithInvalidTypeArgs) {
+      constructorName = object.name;
+      typeArguments = object.invalidTypeArgs;
+    } else {
+      constructorName = object;
+    }
     push(ast.instanceCreationExpression(
-        token, constructorName, arguments.argumentList));
+        token, constructorName, arguments.argumentList,
+        typeArguments: typeArguments));
   }
 
   @override
@@ -2566,6 +2575,17 @@
   }
 
   @override
+  void handleInvalidTypeArguments(Token token) {
+    TypeArgumentList invalidTypeArgs = pop();
+    var node = pop();
+    if (node is ConstructorName) {
+      push(new _ConstructorNameWithInvalidTypeArgs(node, invalidTypeArgs));
+    } else {
+      throw new UnimplementedError();
+    }
+  }
+
+  @override
   void endFields(Token staticToken, Token covariantToken, Token varFinalOrConst,
       int count, Token beginToken, Token semicolon) {
     assert(optional(';', semicolon));
@@ -2929,3 +2949,10 @@
         : null;
   }
 }
+
+class _ConstructorNameWithInvalidTypeArgs {
+  final ConstructorName name;
+  final TypeArgumentList invalidTypeArgs;
+
+  _ConstructorNameWithInvalidTypeArgs(this.name, this.invalidTypeArgs);
+}
diff --git a/pkg/analyzer/lib/src/fasta/error_converter.dart b/pkg/analyzer/lib/src/fasta/error_converter.dart
index 11189b1..e6b36f3 100644
--- a/pkg/analyzer/lib/src/fasta/error_converter.dart
+++ b/pkg/analyzer/lib/src/fasta/error_converter.dart
@@ -59,42 +59,15 @@
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.CONST_CONSTRUCTOR_WITH_BODY, offset, length);
         return;
-      case "CONST_FACTORY":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.CONST_FACTORY, offset, length);
-        return;
-      case "CONST_METHOD":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.CONST_METHOD, offset, length);
-        return;
       case "CONST_NOT_INITIALIZED":
         String name = arguments['name'];
         errorReporter?.reportErrorForOffset(
             CompileTimeErrorCode.CONST_NOT_INITIALIZED, offset, length, [name]);
         return;
-      case "CONTINUE_WITHOUT_LABEL_IN_CASE":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE, offset, length);
-        return;
-      case "COVARIANT_AFTER_FINAL":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.COVARIANT_AFTER_FINAL, offset, length);
-        return;
-      case "COVARIANT_AND_STATIC":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.COVARIANT_AND_STATIC, offset, length);
-        return;
       case "DEFAULT_VALUE_IN_FUNCTION_TYPE":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.DEFAULT_VALUE_IN_FUNCTION_TYPE, offset, length);
         return;
-      case "DUPLICATE_LABEL_IN_SWITCH_STATEMENT":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT,
-            offset,
-            length,
-            [arguments['name']]);
-        return;
       case "LABEL_UNDEFINED":
         errorReporter?.reportErrorForOffset(
             CompileTimeErrorCode.LABEL_UNDEFINED,
@@ -102,38 +75,10 @@
             length,
             [arguments['name']]);
         return;
-      case "COVARIANT_MEMBER":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.COVARIANT_MEMBER, offset, length);
-        return;
-      case "DEFERRED_AFTER_PREFIX":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.DEFERRED_AFTER_PREFIX, offset, length);
-        return;
-      case "DIRECTIVE_AFTER_DECLARATION":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.DIRECTIVE_AFTER_DECLARATION, offset, length);
-        return;
-      case "DUPLICATE_DEFERRED":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.DUPLICATE_DEFERRED, offset, length);
-        return;
-      case "DUPLICATED_MODIFIER":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.DUPLICATED_MODIFIER, offset, length, [lexeme()]);
-        return;
-      case "DUPLICATE_PREFIX":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.DUPLICATE_PREFIX, offset, length);
-        return;
       case "EMPTY_ENUM_BODY":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.EMPTY_ENUM_BODY, offset, length);
         return;
-      case "ENUM_IN_CLASS":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.ENUM_IN_CLASS, offset, length);
-        return;
       case "EXPECTED_CLASS_MEMBER":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.EXPECTED_CLASS_MEMBER, offset, length);
@@ -154,44 +99,16 @@
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.EXPECTED_TYPE_NAME, offset, length);
         return;
-      case "EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE,
-            offset,
-            length);
-        return;
       case "EXTERNAL_CONSTRUCTOR_WITH_BODY":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.EXTERNAL_CONSTRUCTOR_WITH_BODY, offset, length);
         return;
-      case "EXTERNAL_TYPEDEF":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.EXTERNAL_TYPEDEF, offset, length);
-        return;
-      case "EXTRANEOUS_MODIFIER":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.EXTRANEOUS_MODIFIER, offset, length, [lexeme()]);
-        return;
-      case "FACTORY_TOP_LEVEL_DECLARATION":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION, offset, length);
-        return;
-      case "FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR,
-            offset,
-            length);
-        return;
       case "FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR":
         errorReporter?.reportErrorForOffset(
             CompileTimeErrorCode.FIELD_INITIALIZER_REDIRECTING_CONSTRUCTOR,
             offset,
             length);
         return;
-      case "FINAL_AND_COVARIANT":
-        errorReporter?.reportErrorForOffset(
-            ParserErrorCode.FINAL_AND_COVARIANT, offset, length);
-        return;
       case "FINAL_AND_VAR":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.FINAL_AND_VAR, offset, length);
@@ -435,6 +352,13 @@
             offset,
             length);
         return;
+      case "WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR":
+        errorReporter?.reportErrorMessage(
+            StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
+            offset,
+            length,
+            message);
+        return;
       case "WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER":
         errorReporter?.reportErrorForOffset(
             ParserErrorCode.WRONG_SEPARATOR_FOR_POSITIONAL_PARAMETER,
diff --git a/pkg/analyzer/lib/src/fasta/mock_type.dart b/pkg/analyzer/lib/src/fasta/mock_type.dart
index 59cba2d..b8b357d 100644
--- a/pkg/analyzer/lib/src/fasta/mock_type.dart
+++ b/pkg/analyzer/lib/src/fasta/mock_type.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 fasta.analyzer.mock_type;
-
 import 'package:analyzer/dart/element/element.dart';
 
 import 'package:analyzer/dart/element/type.dart';
diff --git a/pkg/analyzer/lib/src/fasta/token_utils.dart b/pkg/analyzer/lib/src/fasta/token_utils.dart
index 52f4388..2037396 100644
--- a/pkg/analyzer/lib/src/fasta/token_utils.dart
+++ b/pkg/analyzer/lib/src/fasta/token_utils.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 fasta.analyzer.token_utils;
-
 import 'package:front_end/src/scanner/token.dart' show CommentToken, Token;
 
 import 'package:front_end/src/fasta/scanner/token_constants.dart';
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
index 422c80d..0f0d19b 100644
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.src.generated.declaration_resolver;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
 import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 5c1d7ec..91e3739 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -21,10 +21,12 @@
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/source.dart';
+import 'package:analyzer/src/generated/timestamped_data.dart';
 import 'package:analyzer/src/generated/utilities_general.dart';
 import 'package:analyzer/src/plugin/engine_plugin.dart';
 import 'package:analyzer/src/plugin/resolver_provider.dart';
 import 'package:analyzer/src/services/lint.dart';
+import 'package:analyzer/src/summary/api_signature.dart';
 import 'package:analyzer/src/task/api/dart.dart';
 import 'package:analyzer/src/task/api/model.dart';
 import 'package:analyzer/src/task/dart.dart';
@@ -33,8 +35,6 @@
 import 'package:analyzer/src/task/manager.dart';
 import 'package:analyzer/src/task/options.dart';
 import 'package:analyzer/src/task/yaml.dart';
-import 'package:analyzer/src/summary/api_signature.dart';
-import 'package:analyzer/src/generated/timestamped_data.dart';
 import 'package:front_end/src/fasta/scanner/token.dart';
 import 'package:html/dom.dart' show Document;
 import 'package:path/path.dart' as pathos;
@@ -105,8 +105,7 @@
 
   /**
    * Return the set of analysis options controlling the behavior of this
-   * context. Clients should not modify the returned set of options. The options
-   * should only be set by invoking the method [setAnalysisOptions].
+   * context. Clients should not modify the returned set of options.
    */
   AnalysisOptions get analysisOptions;
 
@@ -1226,6 +1225,7 @@
    * Return `true` if mixins are allowed to inherit from types other than
    * Object, and are allowed to reference `super`.
    */
+  @deprecated
   bool get enableSuperMixins;
 
   /**
@@ -1416,9 +1416,6 @@
   bool enableLazyAssignmentOperators = false;
 
   @override
-  bool enableSuperMixins = false;
-
-  @override
   bool enableTiming = false;
 
   /**
@@ -1472,7 +1469,6 @@
   @override
   bool disableCacheFlushing = false;
 
-  // A no-op setter.
   /**
    * A flag indicating whether implicit casts are allowed in [strongMode]
    * (they are always allowed in Dart 1.0 mode).
@@ -1493,6 +1489,7 @@
    */
   bool implicitDynamic = true;
 
+  // A no-op setter.
   /**
    * Return `true` to enable mixin declarations.
    * https://github.com/dart-lang/language/issues/12
@@ -1514,7 +1511,6 @@
     dart2jsHint = options.dart2jsHint;
     enabledPluginNames = options.enabledPluginNames;
     enableLazyAssignmentOperators = options.enableLazyAssignmentOperators;
-    enableSuperMixins = options.enableSuperMixins;
     enableTiming = options.enableTiming;
     errorProcessors = options.errorProcessors;
     excludePatterns = options.excludePatterns;
@@ -1610,6 +1606,15 @@
   @deprecated
   void set enableInitializingFormalAccess(bool enable) {}
 
+  @override
+  @deprecated
+  bool get enableSuperMixins => false;
+
+  @deprecated
+  void set enableSuperMixins(bool enable) {
+    // Ignored.
+  }
+
   @deprecated
   @override
   bool get enableUriInPartOf => true;
@@ -1664,7 +1669,6 @@
       // Append boolean flags.
       buffer.addBool(declarationCasts);
       buffer.addBool(enableLazyAssignmentOperators);
-      buffer.addBool(enableSuperMixins);
       buffer.addBool(implicitCasts);
       buffer.addBool(implicitDynamic);
       buffer.addBool(strongModeHints);
@@ -1731,7 +1735,6 @@
     disableCacheFlushing = false;
     enabledPluginNames = const <String>[];
     enableLazyAssignmentOperators = false;
-    enableSuperMixins = false;
     enableTiming = false;
     _errorProcessors = null;
     _excludePatterns = null;
@@ -1752,7 +1755,6 @@
   @override
   void setCrossContextOptionsFrom(AnalysisOptions options) {
     enableLazyAssignmentOperators = options.enableLazyAssignmentOperators;
-    enableSuperMixins = options.enableSuperMixins;
     if (options is AnalysisOptionsImpl) {
       strongModeHints = options.strongModeHints;
     }
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 6849b9a..9f5eef9 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -19,7 +19,6 @@
 import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
 import 'package:analyzer/src/dart/element/member.dart';
 import 'package:analyzer/src/dart/element/type.dart';
-import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/error/pending_error.dart';
 import 'package:analyzer/src/generated/element_resolver.dart';
@@ -74,12 +73,7 @@
   /**
    * The manager for the inheritance mappings.
    */
-  final InheritanceManager _inheritanceManager;
-
-  /**
-   * The manager for the inheritance mappings.
-   */
-  final InheritanceManager2 _inheritanceManager2;
+  final InheritanceManager2 _inheritanceManager;
 
   /**
    * A flag indicating whether the visitor is currently within a constructor
@@ -273,12 +267,6 @@
    */
   List<InterfaceType> _DISALLOWED_TYPES_TO_EXTEND_OR_IMPLEMENT;
 
-  /**
-   * If `true`, mixins are allowed to inherit from types other than Object, and
-   * are allowed to reference `super`.
-   */
-  final bool enableSuperMixins;
-
   final _UninstantiatedBoundChecker _uninstantiatedBoundChecker;
 
   /// Setting this flag to `true` disables the check for conflicting generics.
@@ -292,13 +280,8 @@
   /**
    * Initialize a newly created error verifier.
    */
-  ErrorVerifier(
-      ErrorReporter errorReporter,
-      this._currentLibrary,
-      this._typeProvider,
-      this._inheritanceManager,
-      this._inheritanceManager2,
-      this.enableSuperMixins,
+  ErrorVerifier(ErrorReporter errorReporter, this._currentLibrary,
+      this._typeProvider, this._inheritanceManager, bool enableSuperMixins,
       {this.disableConflictingGenericsCheck: false})
       : _errorReporter = errorReporter,
         _uninstantiatedBoundChecker =
@@ -319,6 +302,13 @@
     _options = _currentLibrary.context.analysisOptions;
   }
 
+  /**
+   * If `true`, mixins are allowed to inherit from types other than Object, and
+   * are allowed to reference `super`.
+   */
+  @deprecated
+  bool get enableSuperMixins => false;
+
   ClassElement get enclosingClass => _enclosingClass;
 
   /**
@@ -976,15 +966,7 @@
     try {
       _isInStaticMethod = node.isStatic;
       _enclosingFunction = node.declaredElement;
-      SimpleIdentifier identifier = node.name;
-      String methodName = "";
-      if (identifier != null) {
-        methodName = identifier.name;
-      }
       TypeAnnotation returnType = node.returnType;
-      if (node.isSetter || node.isGetter) {
-        _checkForMismatchedAccessorTypes(node, methodName);
-      }
       if (node.isSetter) {
         _checkForInvalidModifierOnBody(
             node.body, CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER);
@@ -1939,8 +1921,7 @@
                 mixinName, mixinElement)) {
               problemReported = true;
             }
-            if (!enableSuperMixins &&
-                _checkForMixinInheritsNotFromObject(mixinName, mixinElement)) {
+            if (_checkForMixinInheritsNotFromObject(mixinName, mixinElement)) {
               problemReported = true;
             }
             if (_checkForMixinReferencesSuper(mixinName, mixinElement)) {
@@ -2449,16 +2430,20 @@
     if (_enclosingClass == null) {
       return;
     }
+    InterfaceType enclosingType = _enclosingClass.type;
+    Uri libraryUri = _currentLibrary.source.uri;
 
     // method declared in the enclosing class vs. inherited getter/setter
     for (MethodElement method in _enclosingClass.methods) {
       String name = method.name;
 
       // find inherited property accessor
-      ExecutableElement inherited =
-          _inheritanceManager.lookupInheritance(_enclosingClass, name);
-      inherited ??=
-          _inheritanceManager.lookupInheritance(_enclosingClass, '$name=');
+      ExecutableElement inherited = _inheritanceManager
+          .getInherited(enclosingType, new Name(libraryUri, name))
+          ?.element;
+      inherited ??= _inheritanceManager
+          .getInherited(enclosingType, new Name(libraryUri, '$name='))
+          ?.element;
 
       if (method.isStatic && inherited != null) {
         _errorReporter.reportErrorForElement(
@@ -2482,10 +2467,12 @@
       String name = accessor.displayName;
 
       // find inherited method or property accessor
-      ExecutableElement inherited =
-          _inheritanceManager.lookupInheritance(_enclosingClass, name);
-      inherited ??=
-          _inheritanceManager.lookupInheritance(_enclosingClass, '$name=');
+      ExecutableElement inherited = _inheritanceManager
+          .getInherited(enclosingType, new Name(libraryUri, name))
+          ?.element;
+      inherited ??= _inheritanceManager
+          .getInherited(enclosingType, new Name(libraryUri, '$name='))
+          ?.element;
 
       if (accessor.isStatic && inherited != null) {
         _errorReporter.reportErrorForElement(
@@ -3920,8 +3907,7 @@
    * Check to make sure that all similarly typed accessors are of the same type
    * (including inherited accessors).
    *
-   * See [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES], and
-   * [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE].
+   * See [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES].
    */
   void _checkForMismatchedAccessorTypes(
       Declaration accessorDeclaration, String accessorTextName) {
@@ -3929,7 +3915,6 @@
         accessorDeclaration.declaredElement as ExecutableElement;
     if (accessorElement is PropertyAccessorElement) {
       PropertyAccessorElement counterpartAccessor = null;
-      ClassElement enclosingClassForCounterpart = null;
       if (accessorElement.isGetter) {
         counterpartAccessor = accessorElement.correspondingSetter;
       } else {
@@ -3943,31 +3928,7 @@
         }
       }
       if (counterpartAccessor == null) {
-        // If the accessor is declared in a class, check the superclasses.
-        if (_enclosingClass != null) {
-          // Figure out the correct identifier to lookup in the inheritance graph,
-          // if 'x', then 'x=', or if 'x=', then 'x'.
-          String lookupIdentifier = accessorElement.name;
-          if (StringUtilities.endsWithChar(lookupIdentifier, 0x3D)) {
-            lookupIdentifier =
-                lookupIdentifier.substring(0, lookupIdentifier.length - 1);
-          } else {
-            lookupIdentifier += "=";
-          }
-          // lookup with the identifier.
-          ExecutableElement elementFromInheritance = _inheritanceManager
-              .lookupInheritance(_enclosingClass, lookupIdentifier);
-          // Verify that we found something, and that it is an accessor
-          if (elementFromInheritance != null &&
-              elementFromInheritance is PropertyAccessorElement) {
-            enclosingClassForCounterpart =
-                elementFromInheritance.enclosingElement as ClassElement;
-            counterpartAccessor = elementFromInheritance;
-          }
-        }
-        if (counterpartAccessor == null) {
-          return;
-        }
+        return;
       }
       // Default of null == no accessor or no type (dynamic)
       DartType getterType = null;
@@ -3985,23 +3946,10 @@
       if (setterType != null &&
           getterType != null &&
           !_typeSystem.isAssignableTo(getterType, setterType)) {
-        if (enclosingClassForCounterpart == null) {
-          _errorReporter.reportTypeErrorForNode(
-              StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
-              accessorDeclaration,
-              [accessorTextName, setterType, getterType]);
-        } else {
-          _errorReporter.reportTypeErrorForNode(
-              StaticWarningCode
-                  .MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE,
-              accessorDeclaration,
-              [
-                accessorTextName,
-                setterType,
-                getterType,
-                enclosingClassForCounterpart.displayName
-              ]);
-        }
+        _errorReporter.reportTypeErrorForNode(
+            StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
+            accessorDeclaration,
+            [accessorTextName, getterType, setterType, accessorTextName]);
       }
     }
   }
@@ -4154,7 +4102,7 @@
    */
   bool _checkForMixinReferencesSuper(
       TypeName mixinName, ClassElement mixinElement) {
-    if (!enableSuperMixins && mixinElement.hasReferenceToSuper) {
+    if (mixinElement.hasReferenceToSuper) {
       _errorReporter.reportErrorForNode(
           CompileTimeErrorCode.MIXIN_REFERENCES_SUPER,
           mixinName,
@@ -4204,7 +4152,7 @@
     for (var name in mixinElementImpl.superInvokedNames) {
       var nameObject = new Name(mixinLibraryUri, name);
 
-      var superMemberType = _inheritanceManager2.getMember(
+      var superMemberType = _inheritanceManager.getMember(
           enclosingType, nameObject,
           forMixinIndex: mixinIndex, forSuper: true);
 
@@ -4218,7 +4166,7 @@
       }
 
       FunctionType mixinMemberType =
-          _inheritanceManager2.getMember(mixinType, nameObject);
+          _inheritanceManager.getMember(mixinType, nameObject, forSuper: true);
 
       if (mixinMemberType != null &&
           !_typeSystem.isOverrideSubtypeOf(superMemberType, mixinMemberType)) {
@@ -5103,7 +5051,7 @@
     Element element = name.staticElement;
     if (element is ExecutableElement) {
       // OK, static
-      if (element.isStatic) {
+      if (element.isStatic || element is ConstructorElement) {
         return;
       }
       _errorReporter.reportErrorForNode(
@@ -6500,10 +6448,10 @@
       return;
     }
 
-    final type = node.type;
-    if (type is TypeImpl && type.hasTypeParameterReferenceInBound) {
-      _errorReporter.reportErrorForNode(
-          StrongModeCode.NOT_INSTANTIATED_BOUND, node, [type]);
+    var element = node.name.staticElement;
+    if (element is TypeParameterizedElement && !element.isSimplyBounded) {
+      _errorReporter
+          .reportErrorForNode(StrongModeCode.NOT_INSTANTIATED_BOUND, node, []);
     }
   }
 }
diff --git a/pkg/analyzer/lib/src/generated/gn.dart b/pkg/analyzer/lib/src/generated/gn.dart
index d703c1c..abbed00 100644
--- a/pkg/analyzer/lib/src/generated/gn.dart
+++ b/pkg/analyzer/lib/src/generated/gn.dart
@@ -157,7 +157,9 @@
   /**
    * Find the GN workspace that contains the given [path].
    *
-   * Return `null` if a workspace could not be found.
+   * Return `null` if a workspace could not be found. For a workspace to be
+   * found, both a `.jiri_root` file must be found, and at least one "packages"
+   * file must be found in [path]'s output directory.
    */
   static GnWorkspace find(ResourceProvider provider, String path) {
     Context context = provider.pathContext;
@@ -182,10 +184,10 @@
         if (packagesFiles.isEmpty) {
           return null;
         }
-        return new GnWorkspace._(provider, path, packagesFiles);
+        return new GnWorkspace._(provider, root, packagesFiles);
       }
 
-      // Go up the folder.
+      // Go up one folder.
       folder = parent;
     }
   }
diff --git a/pkg/analyzer/lib/src/generated/incremental_resolver.dart b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
index e66fe8f..b1ac17b 100644
--- a/pkg/analyzer/lib/src/generated/incremental_resolver.dart
+++ b/pkg/analyzer/lib/src/generated/incremental_resolver.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.incremental_resolver;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/exception/exception.dart';
diff --git a/pkg/analyzer/lib/src/generated/interner.dart b/pkg/analyzer/lib/src/generated/interner.dart
index 7bb6e5b..652537f 100644
--- a/pkg/analyzer/lib/src/generated/interner.dart
+++ b/pkg/analyzer/lib/src/generated/interner.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.interner;
-
 import 'dart:collection';
 
 import 'package:front_end/src/scanner/interner.dart';
diff --git a/pkg/analyzer/lib/src/generated/java_core.dart b/pkg/analyzer/lib/src/generated/java_core.dart
index b180724..8fc7fc2 100644
--- a/pkg/analyzer/lib/src/generated/java_core.dart
+++ b/pkg/analyzer/lib/src/generated/java_core.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.java_core;
-
 /**
  * Inserts the given arguments into [pattern].
  *
diff --git a/pkg/analyzer/lib/src/generated/java_engine.dart b/pkg/analyzer/lib/src/generated/java_engine.dart
index 784fcb1..901b3de 100644
--- a/pkg/analyzer/lib/src/generated/java_engine.dart
+++ b/pkg/analyzer/lib/src/generated/java_engine.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.java_engine;
-
 import 'package:analyzer/src/generated/interner.dart';
 import 'package:analyzer/src/generated/java_core.dart';
 
diff --git a/pkg/analyzer/lib/src/generated/java_engine_io.dart b/pkg/analyzer/lib/src/generated/java_engine_io.dart
index aa7023d..365a0fd 100644
--- a/pkg/analyzer/lib/src/generated/java_engine_io.dart
+++ b/pkg/analyzer/lib/src/generated/java_engine_io.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.java_engine_io;
-
 import "dart:io";
 
 import "package:analyzer/src/generated/java_io.dart";
diff --git a/pkg/analyzer/lib/src/generated/java_io.dart b/pkg/analyzer/lib/src/generated/java_io.dart
index beec877..b6517da 100644
--- a/pkg/analyzer/lib/src/generated/java_io.dart
+++ b/pkg/analyzer/lib/src/generated/java_io.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.java_io;
-
 import "dart:io";
 
 import 'package:path/path.dart' as path;
diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart
index 6b40f10..61fc2a4 100644
--- a/pkg/analyzer/lib/src/generated/resolver.dart
+++ b/pkg/analyzer/lib/src/generated/resolver.dart
@@ -22,7 +22,6 @@
 import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
 import 'package:analyzer/src/dart/element/member.dart' show ConstructorMember;
 import 'package:analyzer/src/dart/element/type.dart';
-import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
 import 'package:analyzer/src/dart/resolver/scope.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/constant.dart';
@@ -112,17 +111,18 @@
             errorReporter.reportErrorForNode(
                 StaticTypeWarningCode
                     .WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
-                node,
+                typeArguments,
                 [element.name, constructorElement.name]);
           }
           AstFactory astFactory = new AstFactoryImpl();
-          TypeName typeName = astFactory.typeName(target, typeArguments);
+          TypeName typeName = astFactory.typeName(target, null);
           ConstructorName constructorName =
               astFactory.constructorName(typeName, node.operator, methodName);
           InstanceCreationExpression instanceCreationExpression =
               astFactory.instanceCreationExpression(
-                  _getKeyword(node), constructorName, node.argumentList);
-          InterfaceType type = getType(typeSystem, element, typeArguments);
+                  _getKeyword(node), constructorName, node.argumentList,
+                  typeArguments: typeArguments);
+          InterfaceType type = getType(typeSystem, element, null);
           constructorElement =
               type.lookUpConstructor(methodName.name, definingLibrary);
           methodName.staticElement = element;
@@ -179,7 +179,7 @@
               errorReporter.reportErrorForNode(
                   StaticTypeWarningCode
                       .WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
-                  node,
+                  typeArguments,
                   [element.name, constructorElement.name]);
             }
             AstFactory astFactory = new AstFactoryImpl();
@@ -247,19 +247,13 @@
 
   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}';
-
   /// The class containing the AST nodes being visited, or `null` if we are not
   /// in the scope of a class.
   ClassElementImpl _enclosingClass;
 
   /// A flag indicating whether a surrounding member (compilation unit or class)
   /// is deprecated.
-  bool inDeprecatedMember;
+  bool _inDeprecatedMember;
 
   /// The error reporter by which errors will be reported.
   final ErrorReporter _errorReporter;
@@ -272,10 +266,12 @@
   final InterfaceType _futureNullType;
 
   /// The type system primitives
-  TypeSystem _typeSystem;
+  final TypeSystem _typeSystem;
 
   /// The current library
-  LibraryElement _currentLibrary;
+  final LibraryElement _currentLibrary;
+
+  final _InvalidAccessVerifier _invalidAccessVerifier;
 
   /// Create a new instance of the [BestPracticesVerifier].
   ///
@@ -285,8 +281,10 @@
       {TypeSystem typeSystem})
       : _nullType = typeProvider.nullType,
         _futureNullType = typeProvider.futureNullType,
-        _typeSystem = typeSystem ?? new StrongTypeSystemImpl(typeProvider) {
-    inDeprecatedMember = _currentLibrary.hasDeprecated;
+        _typeSystem = typeSystem ?? new StrongTypeSystemImpl(typeProvider),
+        _invalidAccessVerifier =
+            new _InvalidAccessVerifier(_errorReporter, _currentLibrary) {
+    _inDeprecatedMember = _currentLibrary.hasDeprecated;
   }
 
   @override
@@ -348,22 +346,24 @@
 
   @override
   Object visitClassDeclaration(ClassDeclaration node) {
-    ClassElementImpl outerClass = _enclosingClass;
-    bool wasInDeprecatedMember = inDeprecatedMember;
-    ClassElement element =
-        AbstractClassElementImpl.getImpl(node.declaredElement);
+    var element = AbstractClassElementImpl.getImpl(node.declaredElement);
+    _enclosingClass = element;
+    _invalidAccessVerifier._enclosingClass = element;
+
+    bool wasInDeprecatedMember = _inDeprecatedMember;
     if (element != null && element.hasDeprecated) {
-      inDeprecatedMember = true;
+      _inDeprecatedMember = true;
     }
+
     try {
-      _enclosingClass = element;
       // Commented out until we decide that we want this hint in the analyzer
       //    checkForOverrideEqualsButNotHashCode(node);
       _checkForImmutable(node);
       return super.visitClassDeclaration(node);
     } finally {
-      _enclosingClass = outerClass;
-      inDeprecatedMember = wasInDeprecatedMember;
+      _enclosingClass = null;
+      _invalidAccessVerifier._enclosingClass = null;
+      _inDeprecatedMember = wasInDeprecatedMember;
     }
   }
 
@@ -395,17 +395,17 @@
 
   @override
   Object visitFunctionDeclaration(FunctionDeclaration node) {
-    bool wasInDeprecatedMember = inDeprecatedMember;
+    bool wasInDeprecatedMember = _inDeprecatedMember;
     ExecutableElement element = node.declaredElement;
     if (element != null && element.hasDeprecated) {
-      inDeprecatedMember = true;
+      _inDeprecatedMember = true;
     }
     try {
       _checkForMissingReturn(
           node.returnType, node.functionExpression.body, element, node);
       return super.visitFunctionDeclaration(node);
     } finally {
-      inDeprecatedMember = wasInDeprecatedMember;
+      _inDeprecatedMember = wasInDeprecatedMember;
     }
   }
 
@@ -439,10 +439,10 @@
 
   @override
   Object visitMethodDeclaration(MethodDeclaration node) {
-    bool wasInDeprecatedMember = inDeprecatedMember;
+    bool wasInDeprecatedMember = _inDeprecatedMember;
     ExecutableElement element = node.declaredElement;
     if (element != null && element.hasDeprecated) {
-      inDeprecatedMember = true;
+      _inDeprecatedMember = true;
     }
     try {
       // This was determined to not be a good hint, see: dartbug.com/16029
@@ -451,7 +451,7 @@
       _checkForUnnecessaryNoSuchMethod(node);
       return super.visitMethodDeclaration(node);
     } finally {
-      inDeprecatedMember = wasInDeprecatedMember;
+      _inDeprecatedMember = wasInDeprecatedMember;
     }
   }
 
@@ -468,6 +468,18 @@
   }
 
   @override
+  Object visitMixinDeclaration(MixinDeclaration node) {
+    _enclosingClass = node.declaredElement;
+    _invalidAccessVerifier._enclosingClass = _enclosingClass;
+    try {
+      return super.visitMixinDeclaration(node);
+    } finally {
+      _enclosingClass = null;
+      _invalidAccessVerifier._enclosingClass = null;
+    }
+  }
+
+  @override
   Object visitPostfixExpression(PostfixExpression node) {
     _checkForDeprecatedMemberUse(node.staticElement, node);
     return super.visitPostfixExpression(node);
@@ -495,7 +507,7 @@
   @override
   Object visitSimpleIdentifier(SimpleIdentifier node) {
     _checkForDeprecatedMemberUseAtIdentifier(node);
-    _checkForInvalidAccess(node);
+    _invalidAccessVerifier.verify(node);
     return super.visitSimpleIdentifier(node);
   }
 
@@ -615,7 +627,7 @@
       return false;
     }
 
-    if (!inDeprecatedMember &&
+    if (!_inDeprecatedMember &&
         element != null &&
         isDeprecated(element) &&
         !isLocalParameter(element, node)) {
@@ -783,155 +795,6 @@
     }
   }
 
-  /// Produces a hint if [identifier] is accessed from an invalid location. In
-  /// particular:
-  ///
-  /// * if the given identifier is a protected closure, field or
-  ///   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 a directory named 'test' or 'testing' in its path.
-  void _checkForInvalidAccess(SimpleIdentifier identifier) {
-    if (identifier.inDeclarationContext()) {
-      return;
-    }
-
-    bool isProtected(Element element) {
-      if (element is PropertyAccessorElement &&
-          element.enclosingElement is ClassElement &&
-          (element.hasProtected || element.variable.hasProtected)) {
-        return true;
-      }
-      if (element is MethodElement &&
-          element.enclosingElement is ClassElement &&
-          element.hasProtected) {
-        return true;
-      }
-      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;
-      }
-      if (element.hasVisibleForTesting) {
-        return true;
-      }
-      if (element is PropertyAccessorElement &&
-          element.enclosingElement is ClassElement &&
-          element.variable.hasVisibleForTesting) {
-        return true;
-      }
-      return false;
-    }
-
-    bool inCommentReference(SimpleIdentifier identifier) =>
-        identifier.getAncestor((AstNode node) => node is CommentReference) !=
-        null;
-
-    bool inCurrentLibrary(Element element) =>
-        element.library == _currentLibrary;
-
-    bool inExportDirective(SimpleIdentifier identifier) =>
-        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) &&
-        !isVisibleForTemplate(element) &&
-        !isVisibleForTesting(element)) {
-      // Without any of these annotations, the access is valid.
-      return;
-    }
-
-    if (isProtected(element)) {
-      if (inCurrentLibrary(element) || inCommentReference(identifier)) {
-        // The access is valid; even if [element] is also marked
-        // `visibleForTesting`, the "visibilities" are unioned.
-        return;
-      }
-      ClassElement definingClass = element.enclosingElement;
-      ClassOrMixinDeclaration accessingClass = identifier
-          .getAncestor((AstNode node) => node is ClassOrMixinDeclaration);
-      if (_hasTypeOrSuperType(
-          accessingClass?.declaredElement, definingClass.type)) {
-        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.
-        return;
-      }
-    }
-
-    // At this point, [identifier] was not cleared as protected access, nor
-    // cleared as access for templates or testing. Report the appropriate
-    // violation(s).
-    Element definingClass = element.enclosingElement;
-    if (isProtected(element)) {
-      _errorReporter.reportErrorForNode(
-          HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
-          identifier,
-          [identifier.name.toString(), definingClass.source.uri]);
-    }
-    if (isVisibleForTemplate(element)) {
-      _errorReporter.reportErrorForNode(
-          HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER,
-          identifier,
-          [identifier.name.toString(), definingClass.source.uri]);
-    }
-    if (isVisibleForTesting(element)) {
-      _errorReporter.reportErrorForNode(
-          HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
-          identifier,
-          [identifier.name.toString(), definingClass.source.uri]);
-    }
-  }
-
   /// This verifies that the passed left hand side and right hand side represent
   /// a valid assignment.
   ///
@@ -1315,16 +1178,6 @@
 //    return false;
 //  }
 
-  bool _hasTypeOrSuperType(ClassElement element, InterfaceType type) {
-    if (element == null) {
-      return false;
-    }
-    ClassElement typeElement = type.element;
-    return element == typeElement ||
-        element.allSupertypes
-            .any((InterfaceType t) => t.element == typeElement);
-  }
-
   /// Return `true` if the given [type] represents `Future<void>`.
   bool _isFutureVoid(DartType type) {
     if (type.isDartAsyncFuture) {
@@ -3897,31 +3750,44 @@
 /// compilation unit to verify that if they have an override annotation it is
 /// being used correctly.
 class OverrideVerifier extends RecursiveAstVisitor {
+  /// The inheritance manager used to find overridden methods.
+  final InheritanceManager2 _inheritance;
+
+  /// The URI of the library being verified.
+  final Uri _libraryUri;
+
   /// The error reporter used to report errors.
   final ErrorReporter _errorReporter;
 
-  /// The inheritance manager used to find overridden methods.
-  final InheritanceManager _manager;
+  /// The current class or mixin.
+  InterfaceType _currentType;
 
-  /// Initialize a newly created verifier to look for inappropriate uses of the
-  /// override annotation.
-  ///
-  /// @param errorReporter the error reporter used to report errors
-  /// @param manager the inheritance manager used to find overridden methods
-  OverrideVerifier(this._errorReporter, this._manager);
+  OverrideVerifier(
+      this._inheritance, LibraryElement library, this._errorReporter)
+      : _libraryUri = library.source.uri;
+
+  @override
+  visitClassDeclaration(ClassDeclaration node) {
+    _currentType = node.declaredElement.type;
+    super.visitClassDeclaration(node);
+    _currentType = null;
+  }
 
   @override
   visitFieldDeclaration(FieldDeclaration node) {
     for (VariableDeclaration field in node.fields.variables) {
-      VariableElement fieldElement = field.declaredElement;
-      if (fieldElement is FieldElement && _isOverride(fieldElement)) {
+      FieldElement fieldElement = field.declaredElement;
+      if (fieldElement.hasOverride) {
         PropertyAccessorElement getter = fieldElement.getter;
+        if (getter != null && _isOverride(getter)) continue;
+
         PropertyAccessorElement setter = fieldElement.setter;
-        if (!(getter != null && _getOverriddenMember(getter) != null ||
-            setter != null && _getOverriddenMember(setter) != null)) {
-          _errorReporter.reportErrorForNode(
-              HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD, field.name);
-        }
+        if (setter != null && _isOverride(setter)) continue;
+
+        _errorReporter.reportErrorForNode(
+          HintCode.OVERRIDE_ON_NON_OVERRIDING_FIELD,
+          field.name,
+        );
       }
     }
   }
@@ -3929,48 +3795,40 @@
   @override
   visitMethodDeclaration(MethodDeclaration node) {
     ExecutableElement element = node.declaredElement;
-    if (_isOverride(element)) {
-      if (_getOverriddenMember(element) == null) {
-        if (element is MethodElement) {
+    if (element.hasOverride && !_isOverride(element)) {
+      if (element is MethodElement) {
+        _errorReporter.reportErrorForNode(
+          HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD,
+          node.name,
+        );
+      } else if (element is PropertyAccessorElement) {
+        if (element.isGetter) {
           _errorReporter.reportErrorForNode(
-              HintCode.OVERRIDE_ON_NON_OVERRIDING_METHOD, node.name);
-        } else if (element is PropertyAccessorElement) {
-          if (element.isGetter) {
-            _errorReporter.reportErrorForNode(
-                HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER, node.name);
-          } else {
-            _errorReporter.reportErrorForNode(
-                HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER, node.name);
-          }
+            HintCode.OVERRIDE_ON_NON_OVERRIDING_GETTER,
+            node.name,
+          );
+        } else {
+          _errorReporter.reportErrorForNode(
+            HintCode.OVERRIDE_ON_NON_OVERRIDING_SETTER,
+            node.name,
+          );
         }
       }
     }
   }
 
-  /// Return the member that overrides the given member.
-  ///
-  /// @param member the member that overrides the returned member
-  /// @return the member that overrides the given member
-  ExecutableElement _getOverriddenMember(ExecutableElement member) {
-    LibraryElement library = member.library;
-    if (library == null) {
-      return null;
-    }
-    ClassElement classElement =
-        member.getAncestor((element) => element is ClassElement);
-    if (classElement == null) {
-      return null;
-    }
-    return _manager.lookupInheritance(classElement, member.name);
+  @override
+  visitMixinDeclaration(MixinDeclaration node) {
+    _currentType = node.declaredElement.type;
+    super.visitMixinDeclaration(node);
+    _currentType = null;
   }
 
-  /// Return `true` if the given element has an override annotation associated
-  /// with it.
-  ///
-  /// @param element the element being tested
-  /// @return `true` if the element has an override annotation associated with
-  ///         it
-  bool _isOverride(Element element) => element != null && element.hasOverride;
+  /// Return `true` if the [member] overrides a member from a superinterface.
+  bool _isOverride(ExecutableElement member) {
+    var name = new Name(_libraryUri, member.name);
+    return _inheritance.getOverridden(_currentType, name) != null;
+  }
 }
 
 /// An AST visitor that is used to resolve the some of the nodes within a single
@@ -3993,11 +3851,7 @@
   /// resolution. The [nameScope] is the scope used to resolve identifiers in
   /// the node that will first be visited.  If `null` or unspecified, a new
   /// [LibraryScope] will be created based on [definingLibrary] and
-  /// [typeProvider]. The [inheritanceManager] is used to perform inheritance
-  /// lookups.  If `null` or unspecified, a new [InheritanceManager] will be
-  /// created based on [definingLibrary]. The [typeAnalyzerFactory] is used to
-  /// create the type analyzer.  If `null` or unspecified, a type analyzer of
-  /// type [StaticTypeAnalyzer] will be created.
+  /// [typeProvider].
   PartialResolverVisitor(
       InheritanceManager2 inheritance,
       LibraryElement definingLibrary,
@@ -4223,11 +4077,7 @@
   /// resolution. The [nameScope] is the scope used to resolve identifiers in
   /// the node that will first be visited.  If `null` or unspecified, a new
   /// [LibraryScope] will be created based on [definingLibrary] and
-  /// [typeProvider]. The [inheritanceManager] is used to perform inheritance
-  /// lookups.  If `null` or unspecified, a new [InheritanceManager] will be
-  /// created based on [definingLibrary]. The [typeAnalyzerFactory] is used to
-  /// create the type analyzer.  If `null` or unspecified, a type analyzer of
-  /// type [StaticTypeAnalyzer] will be created.
+  /// [typeProvider].
   ResolverVisitor(
       this.inheritance,
       LibraryElement definingLibrary,
@@ -7112,30 +6962,25 @@
     // check element
     bool elementValid = element is! MultiplyDefinedElement;
     if (elementValid &&
+        element != null &&
         element is! ClassElement &&
         _isTypeNameInInstanceCreationExpression(node)) {
       SimpleIdentifier typeNameSimple = _getTypeSimpleIdentifier(typeName);
       InstanceCreationExpression creation =
           node.parent.parent as InstanceCreationExpression;
       if (creation.isConst) {
-        if (element == null) {
-          reportErrorForNode(
-              CompileTimeErrorCode.UNDEFINED_CLASS, typeNameSimple, [typeName]);
-        } else {
-          reportErrorForNode(CompileTimeErrorCode.CONST_WITH_NON_TYPE,
-              typeNameSimple, [typeName]);
-        }
+        reportErrorForNode(CompileTimeErrorCode.CONST_WITH_NON_TYPE,
+            typeNameSimple, [typeName]);
         elementValid = false;
       } else {
-        if (element != null) {
-          reportErrorForNode(
-              StaticWarningCode.NEW_WITH_NON_TYPE, typeNameSimple, [typeName]);
-          elementValid = false;
-        }
+        reportErrorForNode(
+            StaticWarningCode.NEW_WITH_NON_TYPE, typeNameSimple, [typeName]);
+        elementValid = false;
       }
     }
     if (elementValid && element == null) {
       // We couldn't resolve the type name.
+      elementValid = false;
       // TODO(jwren) Consider moving the check for
       // CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE from the
       // ErrorVerifier, so that we don't have two errors on a built in
@@ -7169,11 +7014,59 @@
       } else if (_isTypeNameInTypeArgumentList(node)) {
         reportErrorForNode(StaticTypeWarningCode.NON_TYPE_AS_TYPE_ARGUMENT,
             typeName, [typeName.name]);
+      } else if (typeName is PrefixedIdentifier &&
+          node.parent is ConstructorName &&
+          argumentList != null) {
+        SimpleIdentifier prefix = (typeName as PrefixedIdentifier).prefix;
+        SimpleIdentifier identifier =
+            (typeName as PrefixedIdentifier).identifier;
+        Element prefixElement = nameScope.lookup(prefix, definingLibrary);
+        ConstructorElement constructorElement;
+        if (prefixElement is ClassElement) {
+          constructorElement =
+              prefixElement.getNamedConstructor(identifier.name);
+        }
+        if (constructorElement != null) {
+          reportErrorForNode(
+              StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
+              argumentList,
+              [prefix.name, identifier.name]);
+          prefix.staticElement = prefixElement;
+          prefix.staticType = (prefixElement as ClassElement).type;
+          identifier.staticElement = constructorElement;
+          identifier.staticType = constructorElement.type;
+          typeName.staticType = constructorElement.enclosingElement.type;
+          AstNode grandParent = node.parent.parent;
+          if (grandParent is InstanceCreationExpressionImpl) {
+            grandParent.staticElement = constructorElement;
+            grandParent.staticType = typeName.staticType;
+            //
+            // Re-write the AST to reflect the resolution.
+            //
+            AstFactory astFactory = new AstFactoryImpl();
+            TypeName newTypeName = astFactory.typeName(prefix, null);
+            ConstructorName newConstructorName = astFactory.constructorName(
+                newTypeName,
+                (typeName as PrefixedIdentifier).period,
+                identifier);
+            newConstructorName.staticElement = constructorElement;
+            NodeReplacer.replace(node.parent, newConstructorName);
+            grandParent.typeArguments = node.typeArguments;
+            // Re-assign local variables that have effectively changed.
+            node = newTypeName;
+            typeName = prefix;
+            element = prefixElement;
+            argumentList = null;
+            elementValid = true;
+          }
+        } else {
+          reportErrorForNode(
+              StaticWarningCode.UNDEFINED_CLASS, typeName, [typeName.name]);
+        }
       } else {
         reportErrorForNode(
             StaticWarningCode.UNDEFINED_CLASS, typeName, [typeName.name]);
       }
-      elementValid = false;
     }
     if (!elementValid) {
       if (element is MultiplyDefinedElement) {
@@ -7264,7 +7157,9 @@
         }
       }
       if (element is GenericTypeAliasElementImpl) {
-        type = element.typeAfterSubstitution(typeArguments) ?? dynamicType;
+        type = GenericTypeAliasElementImpl.typeAfterSubstitution(
+                element, typeArguments) ??
+            dynamicType;
       } else {
         type = typeSystem.instantiateType(type, typeArguments);
       }
@@ -7272,7 +7167,9 @@
       if (element is GenericTypeAliasElementImpl) {
         List<DartType> typeArguments =
             typeSystem.instantiateTypeFormalsToBounds(element.typeParameters);
-        type = element.typeAfterSubstitution(typeArguments) ?? dynamicType;
+        type = GenericTypeAliasElementImpl.typeAfterSubstitution(
+                element, typeArguments) ??
+            dynamicType;
       } else {
         DartType redirectedType =
             _inferTypeArgumentsForRedirectedConstructor(node, type);
@@ -7416,7 +7313,7 @@
         enclosingConstructor.redirectedConstructor == constructorName &&
         type is InterfaceType &&
         ts is StrongTypeSystemImpl) {
-      ClassDeclaration enclosingClassNode = enclosingConstructor.parent;
+      ClassOrMixinDeclaration enclosingClassNode = enclosingConstructor.parent;
       ClassElement enclosingClassElement = enclosingClassNode.declaredElement;
       if (enclosingClassElement == type.element) {
         return type;
@@ -9464,6 +9361,169 @@
   }
 }
 
+class _InvalidAccessVerifier {
+  static final _templateExtension = '.template';
+  static final _testDir = '${path.separator}test${path.separator}';
+  static final _testingDir = '${path.separator}testing${path.separator}';
+
+  final ErrorReporter _errorReporter;
+  final LibraryElement _library;
+
+  bool _inTemplateSource;
+  bool _inTestDirectory;
+
+  ClassElement _enclosingClass;
+
+  _InvalidAccessVerifier(this._errorReporter, this._library) {
+    var path = _library.source.fullName;
+    _inTemplateSource = path.contains(_templateExtension);
+    _inTestDirectory = path.contains(_testDir) || path.contains(_testingDir);
+  }
+
+  /// Produces a hint if [identifier] is accessed from an invalid location. In
+  /// particular:
+  ///
+  /// * if the given identifier is a protected closure, field or
+  ///   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 a directory named 'test' or 'testing' in its path.
+  void verify(SimpleIdentifier identifier) {
+    if (identifier.inDeclarationContext() || _inCommentReference(identifier)) {
+      return;
+    }
+
+    Element element = identifier.staticElement;
+    if (element == null || _inCurrentLibrary(element)) {
+      return;
+    }
+
+    bool hasProtected = _hasProtected(element);
+    if (hasProtected) {
+      ClassElement definingClass = element.enclosingElement;
+      if (_hasTypeOrSuperType(_enclosingClass, definingClass)) {
+        return;
+      }
+    }
+
+    bool hasVisibleForTemplate = _hasVisibleForTemplate(element);
+    if (hasVisibleForTemplate) {
+      if (_inTemplateSource || _inExportDirective(identifier)) {
+        return;
+      }
+    }
+
+    bool hasVisibleForTesting = _hasVisibleForTesting(element);
+    if (hasVisibleForTesting) {
+      if (_inTestDirectory || _inExportDirective(identifier)) {
+        return;
+      }
+    }
+
+    // At this point, [identifier] was not cleared as protected access, nor
+    // cleared as access for templates or testing. Report the appropriate
+    // violation(s).
+    Element definingClass = element.enclosingElement;
+    if (hasProtected) {
+      _errorReporter.reportErrorForNode(
+          HintCode.INVALID_USE_OF_PROTECTED_MEMBER,
+          identifier,
+          [identifier.name, definingClass.source.uri]);
+    }
+    if (hasVisibleForTemplate) {
+      _errorReporter.reportErrorForNode(
+          HintCode.INVALID_USE_OF_VISIBLE_FOR_TEMPLATE_MEMBER,
+          identifier,
+          [identifier.name, definingClass.source.uri]);
+    }
+    if (hasVisibleForTesting) {
+      _errorReporter.reportErrorForNode(
+          HintCode.INVALID_USE_OF_VISIBLE_FOR_TESTING_MEMBER,
+          identifier,
+          [identifier.name, definingClass.source.uri]);
+    }
+  }
+
+  bool _hasProtected(Element element) {
+    if (element is PropertyAccessorElement &&
+        element.enclosingElement is ClassElement &&
+        (element.hasProtected || element.variable.hasProtected)) {
+      return true;
+    }
+    if (element is MethodElement &&
+        element.enclosingElement is ClassElement &&
+        element.hasProtected) {
+      return true;
+    }
+    return false;
+  }
+
+  bool _hasTypeOrSuperType(ClassElement element, ClassElement superElement) {
+    if (element == null) {
+      return false;
+    }
+    if (element == superElement) {
+      return true;
+    }
+    // TODO(scheglov) `allSupertypes` is very expensive
+    var allSupertypes = element.allSupertypes;
+    for (var i = 0; i < allSupertypes.length; i++) {
+      var supertype = allSupertypes[i];
+      if (supertype.element == superElement) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  bool _hasVisibleForTemplate(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 _hasVisibleForTesting(Element element) {
+    if (element == null) {
+      return false;
+    }
+    if (element.hasVisibleForTesting) {
+      return true;
+    }
+    if (element is PropertyAccessorElement &&
+        element.enclosingElement is ClassElement &&
+        element.variable.hasVisibleForTesting) {
+      return true;
+    }
+    return false;
+  }
+
+  bool _inCommentReference(SimpleIdentifier identifier) {
+    var parent = identifier.parent;
+    return parent is CommentReference || parent?.parent is CommentReference;
+  }
+
+  bool _inCurrentLibrary(Element element) => element.library == _library;
+
+  bool _inExportDirective(SimpleIdentifier identifier) =>
+      identifier.parent is Combinator &&
+      identifier.parent.parent is ExportDirective;
+}
+
 /// An object used to track the usage of labels within a single label scope.
 class _LabelTracker {
   /// The tracker for the outer label scope.
diff --git a/pkg/analyzer/lib/src/generated/sdk.dart b/pkg/analyzer/lib/src/generated/sdk.dart
index eb7b7b1..d024db1 100644
--- a/pkg/analyzer/lib/src/generated/sdk.dart
+++ b/pkg/analyzer/lib/src/generated/sdk.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.sdk;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analyzer/lib/src/generated/source.dart b/pkg/analyzer/lib/src/generated/source.dart
index dc13e5f..0de7ff4 100644
--- a/pkg/analyzer/lib/src/generated/source.dart
+++ b/pkg/analyzer/lib/src/generated/source.dart
@@ -372,6 +372,7 @@
   /**
    * An empty list of sources.
    */
+  @deprecated
   static const List<Source> EMPTY_LIST = const <Source>[];
 
   /**
diff --git a/pkg/analyzer/lib/src/generated/source_io.dart b/pkg/analyzer/lib/src/generated/source_io.dart
index 8dd7310..c9f344e 100644
--- a/pkg/analyzer/lib/src/generated/source_io.dart
+++ b/pkg/analyzer/lib/src/generated/source_io.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.source_io;
-
 import 'dart:collection';
 
 import 'package:analyzer/exception/exception.dart';
diff --git a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
index b0c28c6..8dcf359 100644
--- a/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/ast_test_factory.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.testing.ast_test_factory;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
 import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analyzer/lib/src/generated/testing/element_factory.dart b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
index bf58278..27a7460 100644
--- a/pkg/analyzer/lib/src/generated/testing/element_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/element_factory.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.testing.element_factory;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analyzer/lib/src/generated/testing/token_factory.dart b/pkg/analyzer/lib/src/generated/testing/token_factory.dart
index 918b9a1..afea98e 100644
--- a/pkg/analyzer/lib/src/generated/testing/token_factory.dart
+++ b/pkg/analyzer/lib/src/generated/testing/token_factory.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.testing.token_factory;
-
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/src/dart/ast/token.dart';
 
diff --git a/pkg/analyzer/lib/src/generated/type_system.dart b/pkg/analyzer/lib/src/generated/type_system.dart
index 90e46f0..beb1160 100644
--- a/pkg/analyzer/lib/src/generated/type_system.dart
+++ b/pkg/analyzer/lib/src/generated/type_system.dart
@@ -508,13 +508,17 @@
     //
     // We don't need undo logic here because if the classes don't match, nothing
     // is added to the constraint set.
-    if (guardedInterfaceSubtype(i1.superclass)) return true;
+    var superclass = i1.superclass;
+    if (superclass != null && guardedInterfaceSubtype(superclass)) return true;
     for (final parent in i1.interfaces) {
       if (guardedInterfaceSubtype(parent)) return true;
     }
     for (final parent in i1.mixins) {
       if (guardedInterfaceSubtype(parent)) return true;
     }
+    for (final parent in i1.superclassConstraints) {
+      if (guardedInterfaceSubtype(parent)) return true;
+    }
     return false;
   }
 
@@ -658,8 +662,7 @@
     }
 
     if (t1 is FunctionType && t2 is FunctionType) {
-      return FunctionTypeImpl.relate(
-          t1, t2, matchSubtype, _typeSystem.instantiateToBounds,
+      return FunctionTypeImpl.relate(t1, t2, matchSubtype,
           parameterRelation: (p1, p2) {
             return _matchSubtypeOf(p2.type, p1.type, null, origin,
                 covariant: !covariant);
@@ -1134,7 +1137,7 @@
 
   @override
   bool isOverrideSubtypeOf(FunctionType f1, FunctionType f2) {
-    return FunctionTypeImpl.relate(f1, f2, isSubtypeOf, instantiateToBounds,
+    return FunctionTypeImpl.relate(f1, f2, isSubtypeOf,
         parameterRelation: isOverrideSubtypeOfParameter,
         // Type parameter bounds are invariant.
         boundsRelation: (t1, t2, p1, p2) =>
@@ -1471,7 +1474,7 @@
 
   /// Check that [f1] is a subtype of [f2].
   bool _isFunctionSubtypeOf(FunctionType f1, FunctionType f2) {
-    return FunctionTypeImpl.relate(f1, f2, isSubtypeOf, instantiateToBounds,
+    return FunctionTypeImpl.relate(f1, f2, isSubtypeOf,
         parameterRelation: (p1, p2) => isSubtypeOf(p2.type, p1.type),
         // Type parameter bounds are invariant.
         boundsRelation: (t1, t2, p1, p2) =>
@@ -2098,89 +2101,6 @@
   }
 }
 
-/**
- * Implementation of [TypeSystem] using the rules in the Dart specification.
- */
-@deprecated
-class TypeSystemImpl extends TypeSystem {
-  // TODO(brianwilkerson) Remove this class and update references to it to use
-  // StrongTypeSystemImpl.
-  final TypeProvider typeProvider;
-
-  TypeSystemImpl(this.typeProvider);
-
-  @override
-  bool get isStrong => false;
-
-  /**
-   * Instantiate a parameterized type using `dynamic` for all generic
-   * parameters.  Returns the type unchanged if there are no parameters.
-   */
-  DartType instantiateToBounds(DartType type, {List<bool> hasError}) {
-    List<DartType> typeFormals = typeFormalsAsTypes(type);
-    int count = typeFormals.length;
-    if (count > 0) {
-      List<DartType> typeArguments =
-          new List<DartType>.filled(count, DynamicTypeImpl.instance);
-      return instantiateType(type, typeArguments);
-    }
-    return type;
-  }
-
-  @override
-  List<DartType> instantiateTypeFormalsToBounds(
-      List<TypeParameterElement> typeFormals,
-      {List<bool> hasError}) {
-    return null;
-  }
-
-  @override
-  bool isAssignableTo(DartType leftType, DartType rightType,
-      {bool isDeclarationCast = false}) {
-    return leftType.isAssignableTo(rightType);
-  }
-
-  @override
-  bool isMoreSpecificThan(DartType t1, DartType t2) =>
-      t1.isMoreSpecificThan(t2);
-
-  @override
-  bool isOverrideSubtypeOf(FunctionType leftType, FunctionType rightType) {
-    return isSubtypeOf(leftType, rightType);
-  }
-
-  @override
-  bool isSubtypeOf(DartType leftType, DartType rightType) {
-    return leftType.isSubtypeOf(rightType);
-  }
-
-  @override
-  DartType tryPromoteToType(DartType to, DartType from) {
-    // Declared type should not be "dynamic".
-    // Promoted type should not be "dynamic".
-    // Promoted type should be more specific than declared.
-    if (!from.isDynamic && !to.isDynamic && to.isMoreSpecificThan(from)) {
-      return to;
-    } else {
-      return null;
-    }
-  }
-
-  @override
-  DartType _interfaceLeastUpperBound(InterfaceType type1, InterfaceType type2) {
-    InterfaceType result =
-        InterfaceTypeImpl.computeLeastUpperBound(type1, type2);
-    return result ?? typeProvider.dynamicType;
-  }
-
-  @override
-  DartType _typeParameterLeastUpperBound(DartType type1, DartType type2) {
-    type1 = type1.resolveToBound(typeProvider.objectType);
-    type2 = type2.resolveToBound(typeProvider.objectType);
-    return getLeastUpperBound(type1, type2);
-  }
-}
-
 /// A type that is being inferred but is not currently known.
 ///
 /// This type will only appear in a downward inference context for type
diff --git a/pkg/analyzer/lib/src/generated/utilities_collection.dart b/pkg/analyzer/lib/src/generated/utilities_collection.dart
index aad32b8..a43d31c 100644
--- a/pkg/analyzer/lib/src/generated/utilities_collection.dart
+++ b/pkg/analyzer/lib/src/generated/utilities_collection.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.utilities_collection;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analyzer/lib/src/generated/utilities_dart.dart b/pkg/analyzer/lib/src/generated/utilities_dart.dart
index 3bdb6e9..d1904a0 100644
--- a/pkg/analyzer/lib/src/generated/utilities_dart.dart
+++ b/pkg/analyzer/lib/src/generated/utilities_dart.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.generated.utilities_dart;
-
 import 'package:analyzer/dart/ast/ast.dart' show AnnotatedNode, Comment;
 import 'package:analyzer/dart/ast/token.dart' show Token;
 import 'package:analyzer/src/dart/element/element.dart' show ElementImpl;
diff --git a/pkg/analyzer/lib/src/generated/workspace.dart b/pkg/analyzer/lib/src/generated/workspace.dart
index 90595ed..c122845 100644
--- a/pkg/analyzer/lib/src/generated/workspace.dart
+++ b/pkg/analyzer/lib/src/generated/workspace.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
-library analyzer.src.generated.workspace;
-
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
diff --git a/pkg/analyzer/lib/src/html/error/html_codes.dart b/pkg/analyzer/lib/src/html/error/html_codes.dart
index f62a756..59a67b4 100644
--- a/pkg/analyzer/lib/src/html/error/html_codes.dart
+++ b/pkg/analyzer/lib/src/html/error/html_codes.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.html.error.lint_codes;
-
 import 'package:analyzer/error/error.dart';
 
 /**
diff --git a/pkg/analyzer/lib/src/services/lint.dart b/pkg/analyzer/lib/src/services/lint.dart
index af6a3ee..48c84cf 100644
--- a/pkg/analyzer/lib/src/services/lint.dart
+++ b/pkg/analyzer/lib/src/services/lint.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.src.services.lint;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analyzer/lib/src/source/source_resource.dart b/pkg/analyzer/lib/src/source/source_resource.dart
index 63b906c..b722c9c 100644
--- a/pkg/analyzer/lib/src/source/source_resource.dart
+++ b/pkg/analyzer/lib/src/source/source_resource.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.src.source.source_resource;
-
 import 'dart:collection';
 
 import 'package:analyzer/file_system/file_system.dart';
diff --git a/pkg/analyzer/lib/src/string_source.dart b/pkg/analyzer/lib/src/string_source.dart
index ce0c087..c2f5f1f 100644
--- a/pkg/analyzer/lib/src/string_source.dart
+++ b/pkg/analyzer/lib/src/string_source.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2013, 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 analyzer.src.string_source;
-
 import 'package:analyzer/src/generated/engine.dart' show TimestampedData;
 import 'package:analyzer/src/generated/source.dart';
 
diff --git a/pkg/analyzer/lib/src/summary/format.dart b/pkg/analyzer/lib/src/summary/format.dart
index 476923c..0a66bae 100644
--- a/pkg/analyzer/lib/src/summary/format.dart
+++ b/pkg/analyzer/lib/src/summary/format.dart
@@ -3502,6 +3502,7 @@
     with _LinkedUnitMixin
     implements idl.LinkedUnit {
   List<int> _constCycles;
+  List<int> _notSimplyBounded;
   List<int> _parametersInheritingCovariant;
   List<LinkedReferenceBuilder> _references;
   List<TopLevelInferenceErrorBuilder> _topLevelInferenceErrors;
@@ -3518,6 +3519,17 @@
   }
 
   @override
+  List<int> get notSimplyBounded => _notSimplyBounded ??= <int>[];
+
+  /// List of slot ids (referring to [UnlinkedClass.notSimplyBoundedSlot] or
+  /// [UnlinkedTypedef.notSimplyBoundedSlot]) corresponding to classes and
+  /// typedefs that are not simply bounded.
+  void set notSimplyBounded(List<int> value) {
+    assert(value == null || value.every((e) => e >= 0));
+    this._notSimplyBounded = value;
+  }
+
+  @override
   List<int> get parametersInheritingCovariant =>
       _parametersInheritingCovariant ??= <int>[];
 
@@ -3563,11 +3575,13 @@
 
   LinkedUnitBuilder(
       {List<int> constCycles,
+      List<int> notSimplyBounded,
       List<int> parametersInheritingCovariant,
       List<LinkedReferenceBuilder> references,
       List<TopLevelInferenceErrorBuilder> topLevelInferenceErrors,
       List<EntityRefBuilder> types})
       : _constCycles = constCycles,
+        _notSimplyBounded = notSimplyBounded,
         _parametersInheritingCovariant = parametersInheritingCovariant,
         _references = references,
         _topLevelInferenceErrors = topLevelInferenceErrors,
@@ -3626,10 +3640,19 @@
         x?.collectApiSignature(signature);
       }
     }
+    if (this._notSimplyBounded == null) {
+      signature.addInt(0);
+    } else {
+      signature.addInt(this._notSimplyBounded.length);
+      for (var x in this._notSimplyBounded) {
+        signature.addInt(x);
+      }
+    }
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
     fb.Offset offset_constCycles;
+    fb.Offset offset_notSimplyBounded;
     fb.Offset offset_parametersInheritingCovariant;
     fb.Offset offset_references;
     fb.Offset offset_topLevelInferenceErrors;
@@ -3637,6 +3660,9 @@
     if (!(_constCycles == null || _constCycles.isEmpty)) {
       offset_constCycles = fbBuilder.writeListUint32(_constCycles);
     }
+    if (!(_notSimplyBounded == null || _notSimplyBounded.isEmpty)) {
+      offset_notSimplyBounded = fbBuilder.writeListUint32(_notSimplyBounded);
+    }
     if (!(_parametersInheritingCovariant == null ||
         _parametersInheritingCovariant.isEmpty)) {
       offset_parametersInheritingCovariant =
@@ -3659,6 +3685,9 @@
     if (offset_constCycles != null) {
       fbBuilder.addOffset(2, offset_constCycles);
     }
+    if (offset_notSimplyBounded != null) {
+      fbBuilder.addOffset(5, offset_notSimplyBounded);
+    }
     if (offset_parametersInheritingCovariant != null) {
       fbBuilder.addOffset(3, offset_parametersInheritingCovariant);
     }
@@ -3692,6 +3721,7 @@
   _LinkedUnitImpl(this._bc, this._bcOffset);
 
   List<int> _constCycles;
+  List<int> _notSimplyBounded;
   List<int> _parametersInheritingCovariant;
   List<idl.LinkedReference> _references;
   List<idl.TopLevelInferenceError> _topLevelInferenceErrors;
@@ -3705,6 +3735,13 @@
   }
 
   @override
+  List<int> get notSimplyBounded {
+    _notSimplyBounded ??=
+        const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 5, const <int>[]);
+    return _notSimplyBounded;
+  }
+
+  @override
   List<int> get parametersInheritingCovariant {
     _parametersInheritingCovariant ??=
         const fb.Uint32ListReader().vTableGet(_bc, _bcOffset, 3, const <int>[]);
@@ -3741,6 +3778,8 @@
   Map<String, Object> toJson() {
     Map<String, Object> _result = <String, Object>{};
     if (constCycles.isNotEmpty) _result["constCycles"] = constCycles;
+    if (notSimplyBounded.isNotEmpty)
+      _result["notSimplyBounded"] = notSimplyBounded;
     if (parametersInheritingCovariant.isNotEmpty)
       _result["parametersInheritingCovariant"] = parametersInheritingCovariant;
     if (references.isNotEmpty)
@@ -3757,6 +3796,7 @@
   @override
   Map<String, Object> toMap() => {
         "constCycles": constCycles,
+        "notSimplyBounded": notSimplyBounded,
         "parametersInheritingCovariant": parametersInheritingCovariant,
         "references": references,
         "topLevelInferenceErrors": topLevelInferenceErrors,
@@ -5238,6 +5278,7 @@
   List<EntityRefBuilder> _mixins;
   String _name;
   int _nameOffset;
+  int _notSimplyBoundedSlot;
   List<EntityRefBuilder> _superclassConstraints;
   List<String> _superInvokedNames;
   EntityRefBuilder _supertype;
@@ -5347,6 +5388,21 @@
   }
 
   @override
+  int get notSimplyBoundedSlot => _notSimplyBoundedSlot ??= 0;
+
+  /// If the class might not be simply bounded, a nonzero slot id which is unique
+  /// within this compilation unit.  If this id is found in
+  /// [LinkedUnit.notSimplyBounded], then at least one of this class's type
+  /// parameters is not simply bounded, hence this class can't be used as a raw
+  /// type when specifying the bound of a type parameter.
+  ///
+  /// Otherwise, zero.
+  void set notSimplyBoundedSlot(int value) {
+    assert(value == null || value >= 0);
+    this._notSimplyBoundedSlot = value;
+  }
+
+  @override
   List<EntityRefBuilder> get superclassConstraints =>
       _superclassConstraints ??= <EntityRefBuilder>[];
 
@@ -5399,6 +5455,7 @@
       List<EntityRefBuilder> mixins,
       String name,
       int nameOffset,
+      int notSimplyBoundedSlot,
       List<EntityRefBuilder> superclassConstraints,
       List<String> superInvokedNames,
       EntityRefBuilder supertype,
@@ -5415,6 +5472,7 @@
         _mixins = mixins,
         _name = name,
         _nameOffset = nameOffset,
+        _notSimplyBoundedSlot = notSimplyBoundedSlot,
         _superclassConstraints = superclassConstraints,
         _superInvokedNames = superInvokedNames,
         _supertype = supertype,
@@ -5511,6 +5569,7 @@
         signature.addString(x);
       }
     }
+    signature.addInt(this._notSimplyBoundedSlot ?? 0);
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
@@ -5607,6 +5666,9 @@
     if (_nameOffset != null && _nameOffset != 0) {
       fbBuilder.addUint32(1, _nameOffset);
     }
+    if (_notSimplyBoundedSlot != null && _notSimplyBoundedSlot != 0) {
+      fbBuilder.addUint32(16, _notSimplyBoundedSlot);
+    }
     if (offset_superclassConstraints != null) {
       fbBuilder.addOffset(14, offset_superclassConstraints);
     }
@@ -5651,6 +5713,7 @@
   List<idl.EntityRef> _mixins;
   String _name;
   int _nameOffset;
+  int _notSimplyBoundedSlot;
   List<idl.EntityRef> _superclassConstraints;
   List<String> _superInvokedNames;
   idl.EntityRef _supertype;
@@ -5740,6 +5803,13 @@
   }
 
   @override
+  int get notSimplyBoundedSlot {
+    _notSimplyBoundedSlot ??=
+        const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 16, 0);
+    return _notSimplyBoundedSlot;
+  }
+
+  @override
   List<idl.EntityRef> get superclassConstraints {
     _superclassConstraints ??=
         const fb.ListReader<idl.EntityRef>(const _EntityRefReader())
@@ -5795,6 +5865,8 @@
       _result["mixins"] = mixins.map((_value) => _value.toJson()).toList();
     if (name != '') _result["name"] = name;
     if (nameOffset != 0) _result["nameOffset"] = nameOffset;
+    if (notSimplyBoundedSlot != 0)
+      _result["notSimplyBoundedSlot"] = notSimplyBoundedSlot;
     if (superclassConstraints.isNotEmpty)
       _result["superclassConstraints"] =
           superclassConstraints.map((_value) => _value.toJson()).toList();
@@ -5821,6 +5893,7 @@
         "mixins": mixins,
         "name": name,
         "nameOffset": nameOffset,
+        "notSimplyBoundedSlot": notSimplyBoundedSlot,
         "superclassConstraints": superclassConstraints,
         "superInvokedNames": superInvokedNames,
         "supertype": supertype,
@@ -10145,6 +10218,7 @@
   UnlinkedDocumentationCommentBuilder _documentationComment;
   String _name;
   int _nameOffset;
+  int _notSimplyBoundedSlot;
   List<UnlinkedParamBuilder> _parameters;
   EntityRefBuilder _returnType;
   idl.TypedefStyle _style;
@@ -10195,6 +10269,21 @@
   }
 
   @override
+  int get notSimplyBoundedSlot => _notSimplyBoundedSlot ??= 0;
+
+  /// If the typedef might not be simply bounded, a nonzero slot id which is
+  /// unique within this compilation unit.  If this id is found in
+  /// [LinkedUnit.notSimplyBounded], then at least one of this typedef's type
+  /// parameters is not simply bounded, hence this typedef can't be used as a
+  /// raw type when specifying the bound of a type parameter.
+  ///
+  /// Otherwise, zero.
+  void set notSimplyBoundedSlot(int value) {
+    assert(value == null || value >= 0);
+    this._notSimplyBoundedSlot = value;
+  }
+
+  @override
   List<UnlinkedParamBuilder> get parameters =>
       _parameters ??= <UnlinkedParamBuilder>[];
 
@@ -10236,6 +10325,7 @@
       UnlinkedDocumentationCommentBuilder documentationComment,
       String name,
       int nameOffset,
+      int notSimplyBoundedSlot,
       List<UnlinkedParamBuilder> parameters,
       EntityRefBuilder returnType,
       idl.TypedefStyle style,
@@ -10245,6 +10335,7 @@
         _documentationComment = documentationComment,
         _name = name,
         _nameOffset = nameOffset,
+        _notSimplyBoundedSlot = notSimplyBoundedSlot,
         _parameters = parameters,
         _returnType = returnType,
         _style = style,
@@ -10295,6 +10386,7 @@
       }
     }
     signature.addInt(this._style == null ? 0 : this._style.index);
+    signature.addInt(this._notSimplyBoundedSlot ?? 0);
   }
 
   fb.Offset finish(fb.Builder fbBuilder) {
@@ -10345,6 +10437,9 @@
     if (_nameOffset != null && _nameOffset != 0) {
       fbBuilder.addUint32(1, _nameOffset);
     }
+    if (_notSimplyBoundedSlot != null && _notSimplyBoundedSlot != 0) {
+      fbBuilder.addUint32(9, _notSimplyBoundedSlot);
+    }
     if (offset_parameters != null) {
       fbBuilder.addOffset(3, offset_parameters);
     }
@@ -10382,6 +10477,7 @@
   idl.UnlinkedDocumentationComment _documentationComment;
   String _name;
   int _nameOffset;
+  int _notSimplyBoundedSlot;
   List<idl.UnlinkedParam> _parameters;
   idl.EntityRef _returnType;
   idl.TypedefStyle _style;
@@ -10421,6 +10517,13 @@
   }
 
   @override
+  int get notSimplyBoundedSlot {
+    _notSimplyBoundedSlot ??=
+        const fb.Uint32Reader().vTableGet(_bc, _bcOffset, 9, 0);
+    return _notSimplyBoundedSlot;
+  }
+
+  @override
   List<idl.UnlinkedParam> get parameters {
     _parameters ??=
         const fb.ListReader<idl.UnlinkedParam>(const _UnlinkedParamReader())
@@ -10462,6 +10565,8 @@
       _result["documentationComment"] = documentationComment.toJson();
     if (name != '') _result["name"] = name;
     if (nameOffset != 0) _result["nameOffset"] = nameOffset;
+    if (notSimplyBoundedSlot != 0)
+      _result["notSimplyBoundedSlot"] = notSimplyBoundedSlot;
     if (parameters.isNotEmpty)
       _result["parameters"] =
           parameters.map((_value) => _value.toJson()).toList();
@@ -10481,6 +10586,7 @@
         "documentationComment": documentationComment,
         "name": name,
         "nameOffset": nameOffset,
+        "notSimplyBoundedSlot": notSimplyBoundedSlot,
         "parameters": parameters,
         "returnType": returnType,
         "style": style,
diff --git a/pkg/analyzer/lib/src/summary/format.fbs b/pkg/analyzer/lib/src/summary/format.fbs
index 6d76a1c..4289b7f 100644
--- a/pkg/analyzer/lib/src/summary/format.fbs
+++ b/pkg/analyzer/lib/src/summary/format.fbs
@@ -1072,6 +1072,11 @@
   /// corresponding to const constructors that are part of cycles.
   constCycles:[uint] (id: 2);
 
+  /// List of slot ids (referring to [UnlinkedClass.notSimplyBoundedSlot] or
+  /// [UnlinkedTypedef.notSimplyBoundedSlot]) corresponding to classes and
+  /// typedefs that are not simply bounded.
+  notSimplyBounded:[uint] (id: 5);
+
   /// List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
   /// [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
   /// that inherit `@covariant` behavior from a base class.
@@ -1317,6 +1322,15 @@
   /// Offset of the class name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 
+  /// If the class might not be simply bounded, a nonzero slot id which is unique
+  /// within this compilation unit.  If this id is found in
+  /// [LinkedUnit.notSimplyBounded], then at least one of this class's type
+  /// parameters is not simply bounded, hence this class can't be used as a raw
+  /// type when specifying the bound of a type parameter.
+  ///
+  /// Otherwise, zero.
+  notSimplyBoundedSlot:uint (id: 16);
+
   /// Superclass constraints for this mixin declaration. The list will be empty
   /// if this class is not a mixin declaration, or if the declaration does not
   /// have an `on` clause (in which case the type `Object` is implied).
@@ -1862,6 +1876,15 @@
   /// Offset of the typedef name relative to the beginning of the file.
   nameOffset:uint (id: 1);
 
+  /// If the typedef might not be simply bounded, a nonzero slot id which is
+  /// unique within this compilation unit.  If this id is found in
+  /// [LinkedUnit.notSimplyBounded], then at least one of this typedef's type
+  /// parameters is not simply bounded, hence this typedef can't be used as a
+  /// raw type when specifying the bound of a type parameter.
+  ///
+  /// Otherwise, zero.
+  notSimplyBoundedSlot:uint (id: 9);
+
   /// Parameters of the executable, if any.
   parameters:[UnlinkedParam] (id: 3);
 
diff --git a/pkg/analyzer/lib/src/summary/idl.dart b/pkg/analyzer/lib/src/summary/idl.dart
index 01c2a7c..8a85d55 100644
--- a/pkg/analyzer/lib/src/summary/idl.dart
+++ b/pkg/analyzer/lib/src/summary/idl.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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.
 
@@ -37,8 +37,6 @@
 ///
 /// Except as otherwise noted, synthetic elements are not stored in the summary;
 /// they are re-synthesized at the time the summary is read.
-library analyzer.tool.summary.idl;
-
 import 'package:analyzer/dart/element/element.dart';
 
 import 'base.dart' as base;
@@ -671,6 +669,12 @@
   @Id(2)
   List<int> get constCycles;
 
+  /// List of slot ids (referring to [UnlinkedClass.notSimplyBoundedSlot] or
+  /// [UnlinkedTypedef.notSimplyBoundedSlot]) corresponding to classes and
+  /// typedefs that are not simply bounded.
+  @Id(5)
+  List<int> get notSimplyBounded;
+
   /// List of slot ids (referring to [UnlinkedParam.inheritsCovariantSlot] or
   /// [UnlinkedVariable.inheritsCovariantSlot]) corresponding to parameters
   /// that inherit `@covariant` behavior from a base class.
@@ -1062,6 +1066,16 @@
   @Id(1)
   int get nameOffset;
 
+  /// If the class might not be simply bounded, a nonzero slot id which is unique
+  /// within this compilation unit.  If this id is found in
+  /// [LinkedUnit.notSimplyBounded], then at least one of this class's type
+  /// parameters is not simply bounded, hence this class can't be used as a raw
+  /// type when specifying the bound of a type parameter.
+  ///
+  /// Otherwise, zero.
+  @Id(16)
+  int get notSimplyBoundedSlot;
+
   /// Superclass constraints for this mixin declaration. The list will be empty
   /// if this class is not a mixin declaration, or if the declaration does not
   /// have an `on` clause (in which case the type `Object` is implied).
@@ -2232,6 +2246,16 @@
   @Id(1)
   int get nameOffset;
 
+  /// If the typedef might not be simply bounded, a nonzero slot id which is
+  /// unique within this compilation unit.  If this id is found in
+  /// [LinkedUnit.notSimplyBounded], then at least one of this typedef's type
+  /// parameters is not simply bounded, hence this typedef can't be used as a
+  /// raw type when specifying the bound of a type parameter.
+  ///
+  /// Otherwise, zero.
+  @Id(9)
+  int get notSimplyBoundedSlot;
+
   /// Parameters of the executable, if any.
   @Id(3)
   List<UnlinkedParam> get parameters;
diff --git a/pkg/analyzer/lib/src/summary/link.dart b/pkg/analyzer/lib/src/summary/link.dart
index c8f621c..7feaae8 100644
--- a/pkg/analyzer/lib/src/summary/link.dart
+++ b/pkg/analyzer/lib/src/summary/link.dart
@@ -66,7 +66,6 @@
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
 import 'package:analyzer/src/dart/element/type.dart';
-import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/java_engine.dart';
 import 'package:analyzer/src/generated/resolver.dart';
@@ -144,6 +143,36 @@
   return linkedLibraries;
 }
 
+/// Collects all the type references appearing on the "right hand side" of a
+/// typedef.
+///
+/// The "right hand side" of a typedef is the type appearing after the "=" in a
+/// new style typedef declaration, or for an old style typedef declaration, the
+/// type that *would* appear after the "=" if it were converted to a new style
+/// typedef declaration.  This means that type parameter declarations and their
+/// bounds are not included.
+List<EntityRef> _collectTypedefRhsTypes(UnlinkedTypedef unlinkedTypedef) {
+  var types = <EntityRef>[];
+  void visitParams(List<UnlinkedParam> params) {
+    for (var param in params) {
+      var type = param.type;
+      if (type != null) {
+        types.add(type);
+      }
+      if (param.isFunctionTyped) {
+        visitParams(param.parameters);
+      }
+    }
+  }
+
+  var returnType = unlinkedTypedef.returnType;
+  if (returnType != null) {
+    types.add(returnType);
+  }
+  visitParams(unlinkedTypedef.parameters);
+  return types;
+}
+
 /// Create an [EntityRefBuilder] representing the given [type], in a form
 /// suitable for inclusion in [LinkedUnit.types].  [compilationUnit] is the
 /// compilation unit in which the type will be used.  If [slot] is provided, it
@@ -151,7 +180,7 @@
 EntityRefBuilder _createLinkedType(
     DartType type,
     CompilationUnitElementInBuildUnit compilationUnit,
-    TypeParameterizedElementMixin typeParameterContext,
+    TypeParameterSerializationContext typeParameterContext,
     {int slot}) {
   EntityRefBuilder result = new EntityRefBuilder(slot: slot);
   if (type is InterfaceType) {
@@ -176,7 +205,7 @@
       result.paramReference = deBruijnIndex;
     } else {
       throw new StateError('The type parameter $type (in ${element?.location}) '
-          'is out of scope on ${typeParameterContext?.location}.');
+          'is out of scope.');
     }
     return result;
   } else if (type is FunctionType) {
@@ -217,7 +246,8 @@
     }
     if (element is GenericFunctionTypeElementImpl) {
       // Function types are their own type parameter context
-      typeParameterContext = element;
+      typeParameterContext =
+          new InlineFunctionTypeParameterContext(element, typeParameterContext);
       result.entityKind = EntityRefKind.genericFunctionType;
       result.syntheticReturnType = _createLinkedType(
           type.returnType, compilationUnit, typeParameterContext);
@@ -279,7 +309,7 @@
 UnlinkedParamBuilder _serializeSyntheticParam(
     ParameterElement parameter,
     CompilationUnitElementInBuildUnit compilationUnit,
-    TypeParameterizedElementMixin typeParameterContext) {
+    TypeParameterSerializationContext typeParameterContext) {
   UnlinkedParamBuilder b = new UnlinkedParamBuilder();
   b.name = parameter.name;
   if (parameter.isNotOptional) {
@@ -313,7 +343,7 @@
 UnlinkedTypeParamBuilder _serializeSyntheticTypeParameter(
     TypeParameterElement typeParameter,
     CompilationUnitElementInBuildUnit compilationUnit,
-    TypeParameterizedElementMixin typeParameterContext) {
+    TypeParameterSerializationContext typeParameterContext) {
   TypeParameterElementImpl impl = typeParameter as TypeParameterElementImpl;
   EntityRefBuilder boundBuilder = typeParameter.bound != null
       ? _createLinkedType(
@@ -357,7 +387,7 @@
     List<DartType> typeArguments,
     EntityRefBuilder encodedType,
     CompilationUnitElementInBuildUnit compilationUnit,
-    TypeParameterizedElementMixin typeParameterContext) {
+    TypeParameterSerializationContext typeParameterContext) {
   int count = typeArguments.length;
   List<EntityRefBuilder> encodedTypeArguments =
       new List<EntityRefBuilder>(count);
@@ -443,7 +473,7 @@
   List<ConstructorElementForLink> get constructors;
 
   @override
-  CompilationUnitElementImpl get enclosingUnit => enclosingElement;
+  CompilationUnitElementForLink get enclosingUnit => enclosingElement;
 
   @override
   List<FieldElementForLink> get fields;
@@ -535,7 +565,7 @@
 /// Element representing a class resynthesized from a summary during
 /// linking.
 class ClassElementForLink_Class extends ClassElementForLink
-    with TypeParameterizedElementMixin
+    with TypeParameterizedElementMixin, SimplyBoundableForLinkMixin
     implements ClassElementImpl {
   /// The unlinked representation of the class in the summary.
   final UnlinkedClass _unlinkedClass;
@@ -561,7 +591,9 @@
 
   ClassElementForLink_Class(CompilationUnitElementForLink enclosingElement,
       this._unlinkedClass, this.isMixin, this._astForInference)
-      : super(enclosingElement);
+      : super(enclosingElement) {
+    _initSimplyBoundable();
+  }
 
   @override
   List<PropertyAccessorElementForLink> get accessors {
@@ -768,8 +800,23 @@
   String get name => _unlinkedClass.name;
 
   @override
-  List<InterfaceType> get superclassConstraints => _superclassConstraints ??=
-      _unlinkedClass.superclassConstraints.map(_computeInterfaceType).toList();
+  List<InterfaceType> get superclassConstraints {
+    if (_superclassConstraints == null) {
+      if (isMixin) {
+        _superclassConstraints = _unlinkedClass.superclassConstraints
+            .map(_computeInterfaceType)
+            .toList();
+        if (_superclassConstraints.isEmpty) {
+          _superclassConstraints = [
+            enclosingElement.enclosingElement._linker.typeProvider.objectType
+          ];
+        }
+      } else {
+        _superclassConstraints = const <InterfaceType>[];
+      }
+    }
+    return _superclassConstraints;
+  }
 
   @override
   InterfaceType get supertype {
@@ -805,6 +852,17 @@
   int get version => 0;
 
   @override
+  int get _notSimplyBoundedSlot => _unlinkedClass.notSimplyBoundedSlot;
+
+  @override
+  List<EntityRef> get _rhsTypesForSimplyBoundable => const [];
+
+  @override
+  List<UnlinkedTypeParam> get _typeParametersForSimplyBoundable {
+    return _unlinkedClass.typeParameters;
+  }
+
+  @override
   DartType buildType(
       DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
     int numTypeParameters = _unlinkedClass.typeParameters.length;
@@ -837,6 +895,8 @@
     // mixin inference results as a side effect.
     this.mixins;
 
+    _linkSimplyBoundable();
+
     for (ConstructorElementForLink constructorElement in constructors) {
       constructorElement.link(compilationUnit);
     }
@@ -1357,7 +1417,13 @@
       return context.typeParameterContext
           .getTypeParameterType(entity.paramReference);
     } else if (entity.entityKind == EntityRefKind.genericFunctionType) {
-      return new GenericFunctionTypeElementForLink(this, context, entity).type;
+      return new GenericFunctionTypeElementForLink(
+              this,
+              context,
+              entity.typeParameters,
+              entity.syntheticReturnType,
+              entity.syntheticParams)
+          .type;
     } else if (entity.syntheticReturnType != null) {
       FunctionElementImpl element =
           new FunctionElementForLink_Synthetic(this, context, entity);
@@ -1551,10 +1617,9 @@
   /// compilation unit.
   void link() {
     new InstanceMemberInferrer(
-            enclosingElement._linker.typeProvider,
-            (clazz) =>
-                (clazz.library as LibraryElementInBuildUnit).inheritanceManager)
-        .inferCompilationUnit(this);
+      library._linker.typeProvider,
+      library._linker.inheritanceManager,
+    ).inferCompilationUnit(this);
     for (TopLevelVariableElementForLink variable in topLevelVariables) {
       variable.link(this);
     }
@@ -1564,6 +1629,9 @@
     for (ClassElementForLink classElement in mixins) {
       classElement.link(this);
     }
+    for (var functionTypeAlias in functionTypeAliases) {
+      functionTypeAlias.link(this);
+    }
   }
 
   /// Throw away any information stored in the summary by a previous call to
@@ -1573,6 +1641,7 @@
     _linkedUnit.parametersInheritingCovariant.clear();
     _linkedUnit.references.length = _unlinkedUnit.references.length;
     _linkedUnit.types.clear();
+    _linkedUnit.notSimplyBounded.clear();
   }
 
   /// Store the fact that the given [slot] represents a constant constructor
@@ -1590,7 +1659,7 @@
   /// Store the given [linkedType] in the given [slot] of the this compilation
   /// unit's linked type list.
   void _storeLinkedType(int slot, DartType linkedType,
-      TypeParameterizedElementMixin typeParameterContext) {
+      TypeParameterSerializationContext typeParameterContext) {
     if (slot != 0) {
       if (linkedType != null && !linkedType.isDynamic) {
         _linkedUnit.types.add(_createLinkedType(
@@ -3021,7 +3090,8 @@
     with
         TypeParameterizedElementMixin,
         ParameterParentElementForLink,
-        ReferenceableElementForLink
+        ReferenceableElementForLink,
+        SimplyBoundableForLinkMixin
     implements FunctionTypeAliasElement, ElementImpl {
   @override
   final CompilationUnitElementForLink enclosingElement;
@@ -3031,8 +3101,12 @@
 
   FunctionTypeImpl _type;
   DartType _returnType;
+  GenericFunctionTypeElementForLink _function;
 
-  FunctionTypeAliasElementForLink(this.enclosingElement, this._unlinkedTypedef);
+  FunctionTypeAliasElementForLink(
+      this.enclosingElement, this._unlinkedTypedef) {
+    _initSimplyBoundable();
+  }
 
   @override
   DartType get asStaticType {
@@ -3046,7 +3120,12 @@
   TypeParameterizedElementMixin get enclosingTypeParameterContext => null;
 
   @override
-  CompilationUnitElementImpl get enclosingUnit => enclosingElement;
+  CompilationUnitElementForLink get enclosingUnit => enclosingElement;
+
+  @override
+  GenericFunctionTypeElementImpl get function =>
+      _function ??= new GenericFunctionTypeElementForLink(enclosingUnit, this,
+          const [], _unlinkedTypedef.returnType, _unlinkedTypedef.parameters);
 
   @override
   String get identifier => _unlinkedTypedef.name;
@@ -3078,6 +3157,17 @@
       _unlinkedTypedef.typeParameters;
 
   @override
+  int get _notSimplyBoundedSlot => _unlinkedTypedef.notSimplyBoundedSlot;
+
+  @override
+  List<EntityRef> get _rhsTypesForSimplyBoundable =>
+      _collectTypedefRhsTypes(_unlinkedTypedef);
+
+  @override
+  List<UnlinkedTypeParam> get _typeParametersForSimplyBoundable =>
+      _unlinkedTypedef.typeParameters;
+
+  @override
   DartType buildType(
       DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
     int numTypeParameters = _unlinkedTypedef.typeParameters.length;
@@ -3088,14 +3178,17 @@
         return context.typeSystem
             .instantiateToBounds(new FunctionTypeImpl.forTypedef(this));
       } else {
-        return new FunctionTypeImpl.forTypedef(this,
-            typeArguments: typeArguments);
+        return GenericTypeAliasElementImpl.doInstantiate(this, typeArguments);
       }
     } else {
       return _type ??= new FunctionTypeImpl.forTypedef(this);
     }
   }
 
+  void link(CompilationUnitElementInBuildUnit compilationUnit) {
+    _linkSimplyBoundable();
+  }
+
   @override
   noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
 
@@ -3117,14 +3210,24 @@
   @override
   final ElementImpl enclosingElement;
 
-  /// The linked representation of the generic function in the summary.
-  final EntityRef _entity;
+  @override
+  final List<UnlinkedTypeParam> unlinkedTypeParams;
+
+  /// The representation of the generic function's return type in the summary.
+  final EntityRef _unlinkedReturnType;
+
+  @override
+  final List<UnlinkedParam> unlinkedParameters;
 
   DartType _returnType;
   FunctionTypeImpl _type;
 
   GenericFunctionTypeElementForLink(
-      this.enclosingUnit, this.enclosingElement, this._entity);
+      this.enclosingUnit,
+      this.enclosingElement,
+      this.unlinkedTypeParams,
+      this._unlinkedReturnType,
+      this.unlinkedParameters);
 
   @override
   DartType get asStaticType {
@@ -3155,8 +3258,8 @@
   String get name => '-';
 
   @override
-  DartType get returnType => _returnType ??=
-      enclosingUnit.resolveTypeRef(this, _entity.syntheticReturnType);
+  DartType get returnType =>
+      _returnType ??= enclosingUnit.resolveTypeRef(this, _unlinkedReturnType);
 
   @override
   FunctionType get type {
@@ -3167,12 +3270,6 @@
   TypeParameterizedElementMixin get typeParameterContext => this;
 
   @override
-  List<UnlinkedParam> get unlinkedParameters => _entity.syntheticParams;
-
-  @override
-  List<UnlinkedTypeParam> get unlinkedTypeParams => _entity.typeParameters;
-
-  @override
   noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
 
   @override
@@ -3185,15 +3282,20 @@
     with
         TypeParameterizedElementMixin,
         ParameterParentElementForLink,
-        ReferenceableElementForLink
-    implements FunctionTypeAliasElementForLink, ElementImpl {
+        ReferenceableElementForLink,
+        SimplyBoundableForLinkMixin
+    implements FunctionTypeAliasElementForLink, GenericTypeAliasElementImpl {
   @override
   final CompilationUnitElementForLink enclosingElement;
 
   /// The unlinked representation of the typedef in the summary.
   final UnlinkedTypedef _unlinkedTypedef;
 
-  GenericTypeAliasElementForLink(this.enclosingElement, this._unlinkedTypedef);
+  GenericFunctionTypeElementForLink _function;
+
+  GenericTypeAliasElementForLink(this.enclosingElement, this._unlinkedTypedef) {
+    _initSimplyBoundable();
+  }
 
   @override
   DartType get asStaticType {
@@ -3207,7 +3309,18 @@
   TypeParameterizedElementMixin get enclosingTypeParameterContext => null;
 
   @override
-  CompilationUnitElementImpl get enclosingUnit => enclosingElement;
+  CompilationUnitElementForLink get enclosingUnit => enclosingElement;
+
+  @override
+  GenericFunctionTypeElementImpl get function {
+    var unlinkedType = _unlinkedTypedef.returnType;
+    return _function ??= new GenericFunctionTypeElementForLink(
+        enclosingUnit,
+        this,
+        unlinkedType.typeParameters,
+        unlinkedType.syntheticReturnType,
+        unlinkedType.syntheticParams);
+  }
 
   @override
   String get identifier => _unlinkedTypedef.name;
@@ -3243,6 +3356,17 @@
   }
 
   @override
+  int get _notSimplyBoundedSlot => _unlinkedTypedef.notSimplyBoundedSlot;
+
+  @override
+  List<EntityRef> get _rhsTypesForSimplyBoundable =>
+      _collectTypedefRhsTypes(_unlinkedTypedef);
+
+  @override
+  List<UnlinkedTypeParam> get _typeParametersForSimplyBoundable =>
+      _unlinkedTypedef.typeParameters;
+
+  @override
   DartType buildType(
       DartType getTypeArgument(int i), List<int> implicitFunctionTypeIndices) {
     int numTypeParameters = _unlinkedTypedef.typeParameters.length;
@@ -3253,14 +3377,17 @@
         return context.typeSystem
             .instantiateToBounds(new FunctionTypeImpl.forTypedef(this));
       } else {
-        return new FunctionTypeImpl.forTypedef(this,
-            typeArguments: typeArguments);
+        return GenericTypeAliasElementImpl.doInstantiate(this, typeArguments);
       }
     } else {
       return new FunctionTypeImpl.forTypedef(this);
     }
   }
 
+  void link(CompilationUnitElementInBuildUnit compilationUnit) {
+    _linkSimplyBoundable();
+  }
+
   @override
   noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
 
@@ -3268,6 +3395,30 @@
   String toString() => '$enclosingElement.$name';
 }
 
+/// Context for serializing a possibly generic function type that is used in
+/// another context.
+class InlineFunctionTypeParameterContext
+    implements TypeParameterSerializationContext {
+  final GenericFunctionTypeElementImpl _functionTypeElement;
+
+  final TypeParameterSerializationContext _usageContext;
+
+  InlineFunctionTypeParameterContext(
+      this._functionTypeElement, this._usageContext);
+
+  @override
+  int computeDeBruijnIndex(TypeParameterElement typeParameter,
+      {int offset: 0}) {
+    var typeFormals = _functionTypeElement.typeParameters;
+    var numTypeFormals = typeFormals.length;
+    for (int i = 0; i < numTypeFormals; i++) {
+      if (typeFormals[i] == typeParameter) return i + offset + 1;
+    }
+    return _usageContext.computeDeBruijnIndex(typeParameter,
+        offset: offset + numTypeFormals);
+  }
+}
+
 /// Specialization of [DependencyWalker] for linking library cycles.
 class LibraryCycleDependencyWalker extends DependencyWalker<LibraryCycleNode> {
   @override
@@ -3574,8 +3725,6 @@
   /// graph.
   LibraryNode _libraryNode;
 
-  InheritanceManager _inheritanceManager;
-
   List<ImportElement> _imports;
 
   List<PrefixElement> _prefixes;
@@ -3590,10 +3739,6 @@
       _imports ??= LibraryElementImpl.buildImportsFromSummary(this,
           _unlinkedDefiningUnit.imports, _linkedLibrary.importDependencies);
 
-  /// Get the inheritance manager for this library (creating it if necessary).
-  InheritanceManager get inheritanceManager =>
-      _inheritanceManager ??= new InheritanceManager(this);
-
   @override
   LibraryCycleForLink get libraryCycleForLink {
     if (!_libraryNode.isEvaluated) {
@@ -3763,8 +3908,10 @@
   SpecialTypeElementForLink _voidElement;
   SpecialTypeElementForLink _dynamicElement;
   SpecialTypeElementForLink _bottomElement;
+  InheritanceManager2 _inheritanceManager;
   ContextForLink _context;
   AnalysisOptionsForLink _analysisOptions;
+
   Linker(Map<String, LinkedLibraryBuilder> linkedLibraries, this.getDependency,
       this.getUnit, this.getAst) {
     // Create elements for the libraries to be linked.  The rest of
@@ -3801,6 +3948,10 @@
   SpecialTypeElementForLink get dynamicElement => _dynamicElement ??=
       new SpecialTypeElementForLink(this, DynamicTypeImpl.instance);
 
+  /// Get an instance of [InheritanceManager2] for use during linking.
+  InheritanceManager2 get inheritanceManager =>
+      _inheritanceManager ??= new InheritanceManager2(typeSystem);
+
   /// Indicates whether type inference should use strong mode rules.
   @deprecated
   bool get strongMode => true;
@@ -4582,9 +4733,22 @@
   /// Otherwise return `null`.
   TypeInferenceNode get asTypeInferenceNode => null;
 
+  /// See [TypeParameterElement.isSimplyBounded].
+  bool get isSimplyBounded => true;
+
   @override
   ElementLocation get location => new ElementLocationImpl.con1(this);
 
+  /// If non-null, the [SimplyBoundedNode] for determining whether this element
+  /// is simply bounded.
+  ///
+  /// If null, this element is known to be simply bounded based on its unlinked
+  /// representation alone (for example, it is a class declaration with no type
+  /// parameters, or it is a class declaration whose type parameters all lack
+  /// explicit bounds).  Or it is an element for which simple boundedness is
+  /// not relevant.
+  SimplyBoundedNode get _simplyBoundedNode => null;
+
   /// Return the type indicated by this element when it is used in a
   /// type instantiation context.  If this element can't legally be
   /// instantiated as a type, return the dynamic type.
@@ -4612,6 +4776,218 @@
   FunctionElementForLink_Local getLocalFunction(int index) => null;
 }
 
+/// Mixin providing the implementation of
+/// [ReferenceableElementForLink.isSimplyBounded] for elements representing a
+/// type.
+abstract class SimplyBoundableForLinkMixin
+    implements ReferenceableElementForLink {
+  @override
+  SimplyBoundedNode _simplyBoundedNode;
+
+  CompilationUnitElementForLink get enclosingUnit;
+
+  @override
+  bool get isSimplyBounded {
+    var slot = _notSimplyBoundedSlot;
+    if (slot == 0) return true;
+    if (enclosingUnit.isInBuildUnit) {
+      assert(_simplyBoundedNode.isEvaluated);
+      return _simplyBoundedNode.isSimplyBounded;
+    } else {
+      return !enclosingUnit._linkedUnit.notSimplyBounded.contains(slot);
+    }
+  }
+
+  int get _notSimplyBoundedSlot;
+
+  List<EntityRef> get _rhsTypesForSimplyBoundable;
+
+  List<UnlinkedTypeParam> get _typeParametersForSimplyBoundable;
+
+  void _initSimplyBoundable() {
+    if (enclosingUnit.isInBuildUnit && _notSimplyBoundedSlot != 0) {
+      _simplyBoundedNode = SimplyBoundedNode(enclosingUnit,
+          _typeParametersForSimplyBoundable, _rhsTypesForSimplyBoundable);
+    }
+  }
+
+  void _linkSimplyBoundable() {
+    if (_simplyBoundedNode != null) {
+      if (!_simplyBoundedNode.isEvaluated) {
+        new SimplyBoundedDependencyWalker().walk(_simplyBoundedNode);
+      }
+      if (!_simplyBoundedNode.isSimplyBounded) {
+        enclosingUnit._linkedUnit.notSimplyBounded.add(_notSimplyBoundedSlot);
+      }
+    }
+  }
+}
+
+/// Specialization of [DependencyWalker] for evaluating whether types are simply
+/// bounded.
+class SimplyBoundedDependencyWalker
+    extends DependencyWalker<SimplyBoundedNode> {
+  @override
+  void evaluate(SimplyBoundedNode v) {
+    v._evaluate();
+  }
+
+  @override
+  void evaluateScc(List<SimplyBoundedNode> scc) {
+    for (var node in scc) {
+      node._markCircular();
+    }
+  }
+}
+
+/// Specialization of [Node] used to construct the dependency graph for
+/// evaluating whether types are simply bounded.
+class SimplyBoundedNode extends Node<SimplyBoundedNode> {
+  /// The compilation unit enclosing the type whose simple-boundedness we need
+  /// to check
+  final CompilationUnitElementForLink _unit;
+
+  /// The type parameters of the type whose simple-boundedness we need to check
+  final List<UnlinkedTypeParam> _typeParameters;
+
+  /// If the type whose simple-boundedness we need to check is a typedef, the
+  /// types appering in its "right hand side"
+  final List<EntityRef> _rhsTypes;
+
+  @override
+  bool isEvaluated = false;
+
+  /// After execution of [_evaluate], indicates whether the type is
+  /// simply bounded.
+  ///
+  /// Prior to execution of [computeDependencies], `true`.
+  ///
+  /// Between execution of [computeDependencies] and [_evaluate], `true`
+  /// indicates that the type is simply bounded only if all of its dependencies
+  /// are simply bounded; `false` indicates that the type is not simply bounded.
+  bool isSimplyBounded = true;
+
+  SimplyBoundedNode(this._unit, this._typeParameters, this._rhsTypes);
+
+  @override
+  List<SimplyBoundedNode> computeDependencies() {
+    var dependencies = <SimplyBoundedNode>[];
+    for (var typeParameter in _typeParameters) {
+      var bound = typeParameter.bound;
+      if (bound != null) {
+        if (!_visitType(dependencies, bound, true)) {
+          // Note: we might consider setting isEvaluated=true here to prevent an
+          // unnecessary call to SimplyBoundedDependencyWalker.evaluate.
+          // However, we'd have to be careful to make sure this doesn't violate
+          // an invariant of the DependencyWalker algorithm, since normally it
+          // only expects isEvaluated to change during a call to .evaluate or
+          // .evaluateScc.
+          isSimplyBounded = false;
+          return const [];
+        }
+      }
+    }
+    for (var type in _rhsTypes) {
+      if (!_visitType(dependencies, type, false)) {
+        // Note: we might consider setting isEvaluated=true here to prevent an
+        // unnecessary call to SimplyBoundedDependencyWalker.evaluate.
+        // However, we'd have to be careful to make sure this doesn't violate
+        // an invariant of the DependencyWalker algorithm, since normally it
+        // only expects isEvaluated to change during a call to .evaluate or
+        // .evaluateScc.
+        isSimplyBounded = false;
+        return const [];
+      }
+    }
+    return dependencies;
+  }
+
+  void _evaluate() {
+    for (var dependency in _dependencies) {
+      if (!dependency.isSimplyBounded) {
+        isSimplyBounded = false;
+        break;
+      }
+    }
+    isEvaluated = true;
+  }
+
+  void _markCircular() {
+    isSimplyBounded = false;
+    isEvaluated = true;
+  }
+
+  /// Visits the parameters in [params], storing the [SimplyBoundedNode] for any
+  /// types they reference in [dependencies].
+  ///
+  /// If a type is found that is already known to be not simply bounded (because
+  /// it is in another build unit), or [disallowTypeParamReferences] is `true`
+  /// and a reference to a type parameter is found, `false` is returned and
+  /// further visiting is short-circuited.  Otherwise `true` is returned.
+  bool _visitParams(List<SimplyBoundedNode> dependencies,
+      List<UnlinkedParam> params, bool disallowTypeParamReferences) {
+    for (var param in params) {
+      if (!_visitType(dependencies, param.type, disallowTypeParamReferences)) {
+        return false;
+      }
+      if (isSimplyBounded && param.isFunctionTyped) {
+        if (!_visitParams(
+            dependencies, param.parameters, disallowTypeParamReferences)) {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+
+  /// Visits the type specified by [type], storing the [SimplyBoundedNode] for
+  /// any types it references in [dependencies].
+  ///
+  /// If a type is found that is already known to be not simply bounded (because
+  /// it is in another build unit), or [disallowTypeParamReferences] is `true`
+  /// and a reference to a type parameter is found, `false` is returned and
+  //  /// further visiting is short-circuited.  Otherwise `true` is returned.
+  bool _visitType(List<SimplyBoundedNode> dependencies, EntityRef type,
+      bool disallowTypeParamReferences) {
+    if (type != null) {
+      if (type.paramReference != 0) {
+        if (disallowTypeParamReferences) {
+          return false;
+        }
+      } else if (type.entityKind == EntityRefKind.genericFunctionType) {
+        if (!_visitParams(
+            dependencies, type.syntheticParams, disallowTypeParamReferences)) {
+          return false;
+        }
+        if (!_visitType(dependencies, type.syntheticReturnType,
+            disallowTypeParamReferences)) {
+          return false;
+        }
+      } else {
+        if (type.typeArguments.isEmpty) {
+          var ref = _unit.resolveRef(type.reference);
+          var dep = ref._simplyBoundedNode;
+          if (dep == null) {
+            if (!ref.isSimplyBounded) {
+              return false;
+            }
+          } else {
+            dependencies.add(dep);
+          }
+        } else {
+          for (var typeArgument in type.typeArguments) {
+            if (!_visitType(
+                dependencies, typeArgument, disallowTypeParamReferences)) {
+              return false;
+            }
+          }
+        }
+      }
+    }
+    return true;
+  }
+}
+
 /// Element used for references to special types such as `void`.
 class SpecialTypeElementForLink extends Object
     with ReferenceableElementForLink {
diff --git a/pkg/analyzer/lib/src/summary/one_phase.dart b/pkg/analyzer/lib/src/summary/one_phase.dart
deleted file mode 100644
index 3ce0c90..0000000
--- a/pkg/analyzer/lib/src/summary/one_phase.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// 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';
-import 'package:analyzer/src/summary/format.dart';
-import 'package:analyzer/src/summary/idl.dart';
-import 'package:analyzer/src/summary/link.dart';
-import 'package:analyzer/src/summary/package_bundle_reader.dart';
-import 'package:analyzer/src/summary/prelink.dart';
-import 'package:analyzer/src/summary/summarize_ast.dart';
-import 'package:analyzer/src/summary/summarize_elements.dart';
-
-/// Builds the summary for a build unit based on unresolved ASTs of its
-/// compilation units.
-///
-/// The compilation units in [uriToUnit] are summarized, and the results are
-/// stored in [assembler].  References to other compilation units are resolved
-/// using the summaries stored in [dependencies].
-///
-/// [getDeclaredVariable] is used to resolve configurable imports.  If
-/// [allowMissingFiles] is `false`, then failure to resolve an import will
-/// result in an exception being thrown; otherwise unresolved imports will be
-/// silently recovered from.
-void summarize(
-    Map<String, CompilationUnit> uriToUnit,
-    SummaryDataStore dependencies,
-    PackageBundleAssembler assembler,
-    GetDeclaredVariable getDeclaredVariable,
-    bool allowMissingFiles) {
-  var uriToUnlinked = <String, UnlinkedUnitBuilder>{};
-  uriToUnit.forEach((uri, compilationUnit) {
-    var unlinkedUnit =
-        serializeAstUnlinked(compilationUnit, serializeInferrableFields: false);
-    uriToUnlinked[uri] = unlinkedUnit;
-    assembler.addUnlinkedUnitViaUri(uri, unlinkedUnit);
-  });
-
-  LinkedLibrary getDependency(String absoluteUri) {
-    var dependency = dependencies.linkedMap[absoluteUri];
-    if (dependency == null && !allowMissingFiles) {
-      throw new StateError('Missing dependency $absoluteUri');
-    }
-    return dependency;
-  }
-
-  UnlinkedUnit getUnit(String absoluteUri) {
-    if (absoluteUri == null) {
-      return null;
-    }
-    var unlinkedUnit =
-        uriToUnlinked[absoluteUri] ?? dependencies.unlinkedMap[absoluteUri];
-    if (unlinkedUnit == null && !allowMissingFiles) {
-      throw new StateError('Missing unit $absoluteUri');
-    }
-    return unlinkedUnit;
-  }
-
-  CompilationUnit getAst(String absoluteUri) {
-    if (absoluteUri == null) {
-      return null;
-    }
-    var compilationUnit = uriToUnit[absoluteUri];
-    if (compilationUnit == null && !allowMissingFiles) {
-      throw new StateError('Missing unit $absoluteUri');
-    }
-    return compilationUnit;
-  }
-
-  // TODO(paulberry): is this bad?  Are we passing parts to link that we
-  // shouldn't?
-  var linkedLibraries = link(uriToUnlinked.keys.toSet(), getDependency, getUnit,
-      getDeclaredVariable, getAst);
-
-  linkedLibraries.forEach(assembler.addLinkedLibrary);
-}
diff --git a/pkg/analyzer/lib/src/summary/public_namespace_computer.dart b/pkg/analyzer/lib/src/summary/public_namespace_computer.dart
index 76e34f8..4d78177 100644
--- a/pkg/analyzer/lib/src/summary/public_namespace_computer.dart
+++ b/pkg/analyzer/lib/src/summary/public_namespace_computer.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.src.summary.public_namespace_visitor;
-
 import 'package:analyzer/analyzer.dart';
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
diff --git a/pkg/analyzer/lib/src/summary/resynthesize.dart b/pkg/analyzer/lib/src/summary/resynthesize.dart
index db40e7a..7fea9c5 100644
--- a/pkg/analyzer/lib/src/summary/resynthesize.dart
+++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 summary_resynthesizer;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
@@ -444,6 +442,12 @@
   }
 
   @override
+  bool isSimplyBounded(int notSimplyBoundedSlot) {
+    return !unitResynthesizer.linkedUnit.notSimplyBounded
+        .contains(notSimplyBoundedSlot);
+  }
+
+  @override
   ConstructorElement resolveConstructorRef(
       ElementImpl context, EntityRef entry) {
     return unitResynthesizer._getConstructorForEntry(context, entry);
@@ -1050,7 +1054,8 @@
       } else {
         typeArguments = _dynamicTypeArguments;
       }
-      return actualElement.typeAfterSubstitution(typeArguments);
+      return GenericTypeAliasElementImpl.typeAfterSubstitution(
+          actualElement, typeArguments);
     } else if (element is FunctionTypedElement) {
       if (element is FunctionTypeAliasElementHandle) {
         List<DartType> typeArguments;
@@ -1080,8 +1085,7 @@
         } else {
           typeArguments = _dynamicTypeArguments;
         }
-        return new FunctionTypeImpl.forTypedef(element,
-            typeArguments: typeArguments);
+        return element.instantiate(typeArguments);
       } else {
         FunctionTypedElementComputer computer;
         if (implicitFunctionTypeIndices.isNotEmpty) {
diff --git a/pkg/analyzer/lib/src/summary/summarize_ast.dart b/pkg/analyzer/lib/src/summary/summarize_ast.dart
index 189ae80..ae126f3 100644
--- a/pkg/analyzer/lib/src/summary/summarize_ast.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_ast.dart
@@ -1,18 +1,16 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 serialization.summarize_ast;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/token.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/src/dart/ast/mixin_super_invoked_names.dart';
+import 'package:analyzer/src/summary/api_signature.dart';
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/public_namespace_computer.dart';
 import 'package:analyzer/src/summary/summarize_const_expr.dart';
-import 'package:analyzer/src/summary/api_signature.dart';
 
 /// Serialize all the declarations in [compilationUnit] to an unlinked summary.
 ///
@@ -392,6 +390,9 @@
     b.isMixinApplication = isMixinApplication;
     b.typeParameters =
         serializeTypeParameters(typeParameters, typeParameterScope);
+    if (_shouldAssignNotSimplyBoundedSlot(typeParameters)) {
+      b.notSimplyBoundedSlot = assignSlot();
+    }
     if (superclass != null) {
       b.supertype = serializeType(superclass);
     } else {
@@ -1217,6 +1218,7 @@
     b.nameOffset = node.name.offset;
     b.typeParameters =
         serializeTypeParameters(node.typeParameters, typeParameterScope);
+    b.notSimplyBoundedSlot = assignSlot();
     EntityRefBuilder serializedReturnType = serializeType(node.returnType);
     if (serializedReturnType != null) {
       b.returnType = serializedReturnType;
@@ -1253,6 +1255,7 @@
     b.nameOffset = node.name.offset;
     b.typeParameters =
         serializeTypeParameters(node.typeParameters, typeParameterScope);
+    b.notSimplyBoundedSlot = assignSlot();
     GenericFunctionType functionType = node.functionType;
     EntityRefBuilder serializedType = functionType == null
         ? null
@@ -1382,6 +1385,16 @@
     // TODO(scheglov) Remove when we stop serializing local functions.
   }
 
+  /// Determines whether a class declaration with the given [typeParameters]
+  /// needs to be assigned a slot to indicate whether it is simply bounded.
+  bool _shouldAssignNotSimplyBoundedSlot(TypeParameterList typeParameters) {
+    if (typeParameters == null) return false;
+    for (var typeParameter in typeParameters.typeParameters) {
+      if (typeParameter.bound != null) return true;
+    }
+    return false;
+  }
+
   /// Compute the API signature of the unit and record it.
   static void _computeApiSignature(UnlinkedUnitBuilder b) {
     ApiSignature apiSignature = new ApiSignature();
diff --git a/pkg/analyzer/lib/src/summary/summarize_elements.dart b/pkg/analyzer/lib/src/summary/summarize_elements.dart
index 30964d4..9964703 100644
--- a/pkg/analyzer/lib/src/summary/summarize_elements.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 serialization.elements;
-
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
diff --git a/pkg/analyzer/lib/src/summary/summary_file_builder.dart b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
index 3ef4a6d..9d7b6ad 100644
--- a/pkg/analyzer/lib/src/summary/summary_file_builder.dart
+++ b/pkg/analyzer/lib/src/summary/summary_file_builder.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.src.summary.summary_file_builder;
-
 import 'dart:collection';
 
 import 'package:analyzer/dart/ast/ast.dart';
diff --git a/pkg/analyzer/lib/src/summary/summary_sdk.dart b/pkg/analyzer/lib/src/summary/summary_sdk.dart
index 601b925..9fc486b 100644
--- a/pkg/analyzer/lib/src/summary/summary_sdk.dart
+++ b/pkg/analyzer/lib/src/summary/summary_sdk.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.src.summary.summary_sdk;
-
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/file_system/file_system.dart' show ResourceProvider;
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart
index 139a257..875a093 100644
--- a/pkg/analyzer/lib/src/task/dart.dart
+++ b/pkg/analyzer/lib/src/task/dart.dart
@@ -22,7 +22,6 @@
 import 'package:analyzer/src/dart/element/builder.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
-import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
 import 'package:analyzer/src/dart/scanner/reader.dart';
 import 'package:analyzer/src/dart/scanner/scanner.dart';
 import 'package:analyzer/src/dart/sdk/patch.dart';
@@ -2855,15 +2854,17 @@
       unit.accept(new Dart2JSVerifier(errorReporter));
     }
     // Dart best practices.
-    InheritanceManager inheritanceManager = new InheritanceManager(
-        libraryElement,
-        includeAbstractFromSuperclasses: true);
+    var inheritanceManager2 = new InheritanceManager2(context.typeSystem);
     TypeProvider typeProvider = getRequiredInput(TYPE_PROVIDER_INPUT);
 
     unit.accept(new BestPracticesVerifier(
         errorReporter, typeProvider, libraryElement,
         typeSystem: typeSystem));
-    unit.accept(new OverrideVerifier(errorReporter, inheritanceManager));
+    unit.accept(new OverrideVerifier(
+      inheritanceManager2,
+      libraryElement,
+      errorReporter,
+    ));
     // Find to-do comments.
     new ToDoFinder(errorReporter).findIn(unit);
     //
@@ -3151,11 +3152,9 @@
     //
     // Infer instance members.
     //
-    var inheritanceManager = new InheritanceManager(
-        resolutionMap.elementDeclaredByCompilationUnit(unit).library);
-    InstanceMemberInferrer inferrer = new InstanceMemberInferrer(
-        typeProvider, (_) => inheritanceManager,
-        typeSystem: context.typeSystem);
+    var inheritance = new InheritanceManager2(context.typeSystem);
+    InstanceMemberInferrer inferrer =
+        new InstanceMemberInferrer(typeProvider, inheritance);
     inferrer.inferCompilationUnit(unit.declaredElement);
     //
     // Record outputs.
@@ -5569,21 +5568,16 @@
     // Compute inheritance and override errors.
     //
     var typeSystem = libraryElement.context.typeSystem;
-    var inheritanceManager2 = new InheritanceManager2(typeSystem);
+    var inheritanceManager = new InheritanceManager2(typeSystem);
     var inheritanceOverrideVerifier = new InheritanceOverrideVerifier(
-        typeSystem, inheritanceManager2, errorReporter);
+        typeSystem, inheritanceManager, errorReporter);
     inheritanceOverrideVerifier.verifyUnit(unit);
 
     //
     // Use the ErrorVerifier to compute errors.
     //
     ErrorVerifier errorVerifier = new ErrorVerifier(
-        errorReporter,
-        libraryElement,
-        typeProvider,
-        new InheritanceManager(libraryElement),
-        inheritanceManager2,
-        context.analysisOptions.enableSuperMixins,
+        errorReporter, libraryElement, typeProvider, inheritanceManager, false,
         disableConflictingGenericsCheck: true);
     unit.accept(errorVerifier);
     //
diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/task/options.dart
index 9a3b62f..c1c96b6 100644
--- a/pkg/analyzer/lib/src/task/options.dart
+++ b/pkg/analyzer/lib/src/task/options.dart
@@ -73,20 +73,18 @@
     exclude,
     language,
     plugins,
-    strong_mode
+    strong_mode,
   ];
 
   /// Supported `analyzer` strong-mode options.
   static const List<String> strongModeOptions = const [
     declarationCasts, // deprecated
     implicitCasts,
-    implicitDynamic
+    implicitDynamic,
   ];
 
   /// Supported `analyzer` language options.
-  static const List<String> languageOptions = const [
-    enableSuperMixins,
-  ];
+  static const List<String> languageOptions = const [];
 }
 
 /// Validates `analyzer` options.
@@ -118,16 +116,21 @@
 
   /// Create a builder for the given [supportedOptions].
   ErrorBuilder(List<String> supportedOptions) {
-    assert(supportedOptions != null && !supportedOptions.isEmpty);
-    if (supportedOptions.length > 1) {
-      proposal = StringUtilities.printListOfQuotedNames(supportedOptions);
-      code = pluralProposalCode;
-    } else {
+    assert(supportedOptions != null);
+    if (supportedOptions.isEmpty) {
+      code = noProposalCode;
+    } else if (supportedOptions.length == 1) {
       proposal = "'${supportedOptions.join()}'";
       code = singularProposalCode;
+    } else {
+      proposal = StringUtilities.printListOfQuotedNames(supportedOptions);
+      code = pluralProposalCode;
     }
   }
 
+  AnalysisOptionsWarningCode get noProposalCode =>
+      AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITHOUT_VALUES;
+
   AnalysisOptionsWarningCode get pluralProposalCode =>
       AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUES;
 
@@ -136,8 +139,12 @@
 
   /// Report an unsupported [node] value, defined in the given [scopeName].
   void reportError(ErrorReporter reporter, String scopeName, YamlNode node) {
-    reporter
-        .reportErrorForSpan(code, node.span, [scopeName, node.value, proposal]);
+    if (proposal != null) {
+      reporter.reportErrorForSpan(
+          code, node.span, [scopeName, node.value, proposal]);
+    } else {
+      reporter.reportErrorForSpan(code, node.span, [scopeName, node.value]);
+    }
   }
 }
 
@@ -381,6 +388,10 @@
               reporter.reportErrorForSpan(
                   AnalysisOptionsHintCode.PREVIEW_DART_2_SETTING_DEPRECATED,
                   k.span);
+            } else if (AnalyzerOptions.enableSuperMixins == key) {
+              reporter.reportErrorForSpan(
+                  AnalysisOptionsHintCode.SUPER_MIXINS_SETTING_DEPRECATED,
+                  k.span);
             } else if (!AnalyzerOptions.languageOptions.contains(key)) {
               builder.reportError(reporter, AnalyzerOptions.language, k);
             } else {
@@ -626,9 +637,7 @@
       AnalysisOptionsImpl options, Object feature, Object value) {
     bool boolValue = toBool(value);
     if (boolValue != null) {
-      if (feature == AnalyzerOptions.enableSuperMixins) {
-        options.enableSuperMixins = boolValue;
-      }
+      // Currently no supported language options.
     }
   }
 
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index 2c7a72d..a830600 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -1,11 +1,9 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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.
 
 // TODO(jmesserly): this was ported from package:dev_compiler, and needs to be
 // refactored to fit into analyzer.
-library analyzer.src.task.strong.checker;
-
 import 'dart:collection';
 
 import 'package:analyzer/analyzer.dart';
@@ -1234,7 +1232,7 @@
   /// Finds implicit casts that we need on parameters and type formals to
   /// ensure soundness of covariant generics, and records them on the [node].
   ///
-  /// The parameter checks can be retrived using [getClassCovariantParameters]
+  /// The parameter checks can be retrieved using [getClassCovariantParameters]
   /// and [getSuperclassCovariantParameters].
   ///
   /// For each member of this class and non-overridden inherited member, we
@@ -1404,7 +1402,7 @@
   ///     }
   ///
   /// We've already found `C<Object>` is a potentially unsafe covariant generic
-  /// supertpe, and we call this method to see if any members need a check
+  /// supertype, and we call this method to see if any members need a check
   /// because of `C<Object>`.
   ///
   /// In this example, we will call this method with:
@@ -1418,7 +1416,7 @@
   /// - get the type of `C<Object>.m`: `(Object) -> *`
   /// - get the type of `C<T>.m`:      `(T) -> *`
   /// - perform a subtype check `(T) -> * <: (Object) -> *`,
-  ///   and record any parameters/type formals that violate soundess.
+  ///   and record any parameters/type formals that violate soundness.
   /// - that checks `Object <: T`, which is false, thus we need a check on
   ///   parameter `t` of `C<T>.m`
   ///
@@ -1427,7 +1425,7 @@
   /// - get the type of `D.g`:         `<R extends num>() -> *`
   /// - perform a subtype check
   ///   `<S extends Object>() -> * <: <R extends num>() -> *`,
-  ///   and record any parameters/type formals that violate soundess.
+  ///   and record any parameters/type formals that violate soundness.
   /// - that checks the type formal bound of `S` and `R` asserting
   ///   `Object <: num`, which is false, thus we need a check on type formal `R`
   ///   of `D.g`.
diff --git a/pkg/analyzer/lib/src/task/strong_mode.dart b/pkg/analyzer/lib/src/task/strong_mode.dart
index a0b6100..fdbc6d4 100644
--- a/pkg/analyzer/lib/src/task/strong_mode.dart
+++ b/pkg/analyzer/lib/src/task/strong_mode.dart
@@ -9,11 +9,9 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/element.dart';
+import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
 import 'package:analyzer/src/dart/element/type.dart';
-import 'package:analyzer/src/dart/resolver/inheritance_manager.dart';
-import 'package:analyzer/src/generated/resolver.dart'
-    show TypeProvider, InheritanceManager;
-import 'package:analyzer/src/generated/type_system.dart';
+import 'package:analyzer/src/generated/resolver.dart' show TypeProvider;
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/link.dart'
@@ -28,11 +26,6 @@
 }
 
 /**
- * A function that return the [InheritanceManager] for the class [element].
- */
-typedef InheritanceManager InheritanceManagerProvider(ClassElement element);
-
-/**
  * A function that returns `true` if the given [element] passes the filter.
  */
 typedef bool VariableFilter(VariableElement element);
@@ -42,36 +35,16 @@
  * instance methods within a single compilation unit.
  */
 class InstanceMemberInferrer {
-  /**
-   * The type provider used to look up types.
-   */
   final TypeProvider typeProvider;
+  final InheritanceManager2 inheritance;
+  final Set<ClassElement> elementsBeingInferred = new HashSet<ClassElement>();
 
-  /**
-   * The type system used to compute the least upper bound of types.
-   */
-  TypeSystem typeSystem;
-
-  /**
-   * The provider for inheritance managers used to find overridden method.
-   */
-  final InheritanceManagerProvider inheritanceManagerProvider;
-
-  /**
-   * The classes that have been visited while attempting to infer the types of
-   * instance members of some base class.
-   */
-  HashSet<ClassElementImpl> elementsBeingInferred =
-      new HashSet<ClassElementImpl>();
+  InterfaceType interfaceType;
 
   /**
    * Initialize a newly create inferrer.
    */
-  InstanceMemberInferrer(
-      TypeProvider typeProvider, this.inheritanceManagerProvider,
-      {TypeSystem typeSystem})
-      : typeSystem = typeSystem ?? new StrongTypeSystemImpl(typeProvider),
-        this.typeProvider = typeProvider;
+  InstanceMemberInferrer(this.typeProvider, this.inheritance);
 
   /**
    * Infer type information for all of the instance members in the given
@@ -83,11 +56,18 @@
   }
 
   /**
-   * Return `true` if the list of [elements] contains only methods.
+   * Return `true` if the elements corresponding to the [types] have the same
+   * kind as the [element].
    */
   bool _allSameElementKind(
-      ExecutableElement element, List<ExecutableElement> elements) {
-    return elements.every((e) => e.kind == element.kind);
+      ExecutableElement element, List<FunctionType> types) {
+    var elementKind = element.kind;
+    for (int i = 0; i < types.length; i++) {
+      if (types[i].element.kind != elementKind) {
+        return false;
+      }
+    }
+    return true;
   }
 
   /**
@@ -95,31 +75,48 @@
    * value is never `null`, but might be an error, and/or have the `null` type.
    */
   _FieldOverrideInferenceResult _computeFieldOverrideType(
-      InheritanceManager inheritanceManager, PropertyAccessorElement accessor) {
+      PropertyAccessorElement accessor) {
     String name = accessor.displayName;
 
-    var overriddenElements = <ExecutableElement>[];
-    overriddenElements.addAll(
-        inheritanceManager.lookupOverrides(accessor.enclosingElement, name));
-    if (overriddenElements.isEmpty || !accessor.variable.isFinal) {
-      List<ExecutableElement> overriddenSetters = inheritanceManager
-          .lookupOverrides(accessor.enclosingElement, '$name=');
-      overriddenElements.addAll(overriddenSetters);
+    var overriddenGetters = inheritance.getOverridden(
+      interfaceType,
+      new Name(accessor.library.source.uri, name),
+    );
+
+    List<FunctionType> overriddenSetters;
+    if (overriddenGetters == null || !accessor.variable.isFinal) {
+      overriddenSetters = inheritance.getOverridden(
+        interfaceType,
+        new Name(accessor.library.source.uri, '$name='),
+      );
+    }
+
+    // Choose overridden types from getters or/and setters.
+    List<FunctionType> overriddenTypes = <FunctionType>[];
+    if (overriddenGetters == null && overriddenSetters == null) {
+      overriddenTypes = const <FunctionType>[];
+    } else if (overriddenGetters == null && overriddenSetters != null) {
+      overriddenTypes = overriddenSetters;
+    } else if (overriddenGetters != null && overriddenSetters == null) {
+      overriddenTypes = overriddenGetters;
+    } else {
+      overriddenTypes = <FunctionType>[]
+        ..addAll(overriddenGetters)
+        ..addAll(overriddenSetters);
     }
 
     bool isCovariant = false;
     DartType impliedType;
-    for (ExecutableElement overriddenElement in overriddenElements) {
-      FunctionType overriddenType =
-          _toOverriddenFunctionType(accessor, overriddenElement);
+    for (FunctionType overriddenType in overriddenTypes) {
+      var overriddenElementKind = overriddenType.element.kind;
       if (overriddenType == null) {
         return new _FieldOverrideInferenceResult(false, null, true);
       }
 
       DartType type;
-      if (overriddenElement.kind == ElementKind.GETTER) {
+      if (overriddenElementKind == ElementKind.GETTER) {
         type = overriddenType.returnType;
-      } else if (overriddenElement.kind == ElementKind.SETTER) {
+      } else if (overriddenElementKind == ElementKind.SETTER) {
         if (overriddenType.parameters.length == 1) {
           ParameterElement parameter = overriddenType.parameters[0];
           type = parameter.type;
@@ -242,8 +239,7 @@
    * If the given [element] represents a non-synthetic instance property
    * accessor for which no type was provided, infer its types.
    */
-  void _inferAccessor(
-      InheritanceManager inheritanceManager, PropertyAccessorElement element) {
+  void _inferAccessor(PropertyAccessorElement element) {
     if (element.isSynthetic || element.isStatic) {
       return;
     }
@@ -253,7 +249,7 @@
     }
 
     _FieldOverrideInferenceResult typeResult =
-        _computeFieldOverrideType(inheritanceManager, element);
+        _computeFieldOverrideType(element);
     if (typeResult.isError == null || typeResult.type == null) {
       return;
     }
@@ -291,8 +287,6 @@
         throw new _CycleException();
       }
       try {
-        InheritanceManager inheritanceManager =
-            inheritanceManagerProvider(classElement);
         //
         // Ensure that all of instance members in the supertypes have had types
         // inferred for them.
@@ -304,14 +298,15 @@
         //
         // Then infer the types for the members.
         //
+        this.interfaceType = classElement.type;
         for (FieldElement field in classElement.fields) {
-          _inferField(inheritanceManager, field);
+          _inferField(field);
         }
         for (PropertyAccessorElement accessor in classElement.accessors) {
-          _inferAccessor(inheritanceManager, accessor);
+          _inferAccessor(accessor);
         }
         for (MethodElement method in classElement.methods) {
-          _inferExecutable(inheritanceManager, method);
+          _inferExecutable(method);
         }
         //
         // Infer initializing formal parameter types. This must happen after
@@ -353,20 +348,22 @@
    * getter or setter, infer the return type and any parameter type(s) where
    * they were not provided.
    */
-  void _inferExecutable(
-      InheritanceManager inheritanceManager, ExecutableElement element) {
+  void _inferExecutable(ExecutableElement element) {
     if (element.isSynthetic || element.isStatic) {
       return;
     }
-    List<ExecutableElement> overriddenElements = inheritanceManager
-        .lookupOverrides(element.enclosingElement, element.displayName);
-    if (overriddenElements.isEmpty ||
-        !_allSameElementKind(element, overriddenElements)) {
+
+    // TODO(scheglov) If no implicit types, don't ask inherited.
+
+    List<FunctionType> overriddenTypes = inheritance.getOverridden(
+      interfaceType,
+      new Name(element.library.source.uri, element.name),
+    );
+    if (overriddenTypes == null ||
+        !_allSameElementKind(element, overriddenTypes)) {
       return;
     }
-
-    List<FunctionType> overriddenTypes =
-        _toOverriddenFunctionTypes(element, overriddenElements);
+    overriddenTypes = _toOverriddenFunctionTypes(element, overriddenTypes);
     if (overriddenTypes.isEmpty) {
       return;
     }
@@ -405,13 +402,13 @@
    * If the given [field] represents a non-synthetic instance field for
    * which no type was provided, infer the type of the field.
    */
-  void _inferField(InheritanceManager inheritanceManager, FieldElement field) {
+  void _inferField(FieldElement field) {
     if (field.isSynthetic || field.isStatic) {
       return;
     }
 
     _FieldOverrideInferenceResult typeResult =
-        _computeFieldOverrideType(inheritanceManager, field.getter);
+        _computeFieldOverrideType(field.getter);
     if (typeResult.isError) {
       if (field is FieldElementForLink_ClassField) {
         field.setInferenceError(new TopLevelInferenceErrorBuilder(
@@ -464,8 +461,11 @@
   }
 
   /**
-   * Return the [FunctionType] of the [overriddenElement] that [element]
-   * overrides. Return `null`, in case of type parameters inconsistency.
+   * If the [element] has formal type parameters, then the [overriddenType]
+   * must have it as well, but they are different.  Replace type parameters
+   * of the [overriddenType] with type formals of the [element].
+   *
+   * Return `null`, in case of type parameters inconsistency.
    *
    * The overridden element must have the same number of generic type
    * parameters as the target element, or none.
@@ -476,17 +476,9 @@
    * should infer this as `m<T>(T t)`.
    */
   FunctionType _toOverriddenFunctionType(
-      ExecutableElement element, ExecutableElement overriddenElement) {
+      ExecutableElement element, FunctionType overriddenType) {
     List<DartType> typeFormals =
         TypeParameterTypeImpl.getTypes(element.type.typeFormals);
-
-    FunctionType overriddenType = overriddenElement.type;
-    if (overriddenType == null) {
-      // TODO(brianwilkerson) I think the overridden method should always have
-      // a type, but there appears to be a bug that causes it to sometimes be
-      // null, we guard against that case by not performing inference.
-      return null;
-    }
     if (overriddenType.typeFormals.isNotEmpty) {
       if (overriddenType.typeFormals.length != typeFormals.length) {
         return null;
@@ -497,21 +489,20 @@
   }
 
   /**
-   * Return [FunctionType]s of [overriddenElements] that override [element].
+   * Return [overriddenTypes] that override [element].
    * Return the empty list, in case of type parameters inconsistency.
    */
   List<FunctionType> _toOverriddenFunctionTypes(
-      ExecutableElement element, List<ExecutableElement> overriddenElements) {
-    var overriddenTypes = <FunctionType>[];
-    for (ExecutableElement overriddenElement in overriddenElements) {
-      FunctionType overriddenType =
-          _toOverriddenFunctionType(element, overriddenElement);
+      ExecutableElement element, List<FunctionType> overriddenTypes) {
+    var result = <FunctionType>[];
+    for (var overriddenType in overriddenTypes) {
+      overriddenType = _toOverriddenFunctionType(element, overriddenType);
       if (overriddenType == null) {
         return const <FunctionType>[];
       }
-      overriddenTypes.add(overriddenType);
+      result.add(overriddenType);
     }
-    return overriddenTypes;
+    return result;
   }
 
   /**
diff --git a/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart b/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart
index bee56b9..a24767d 100644
--- a/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart
+++ b/pkg/analyzer/lib/src/test_utilities/resource_provider_mixin.dart
@@ -19,7 +19,9 @@
   String convertPath(String path) => resourceProvider.convertPath(path);
 
   /// Convert the given [path] to be a valid import uri for this provider's path context.
-  String convertPathForImport(String path) {
+  /// The URI will use forward slashes on all platforms and absolute paths on Windows
+  /// will be formatted as /X:/path/file.dart
+  String convertAbsolutePathToUri(String path) {
     path = resourceProvider.convertPath(path);
 
     // On Windows, absolute import paths are not quite the same as a normal fs path.
@@ -31,7 +33,9 @@
       path = new Uri.file(path).path;
     }
 
-    return path;
+    // Since this returns a URI for imports, it should always be forward slashes
+    // even for relative paths on Windows.
+    return path.replaceAll(r'\', '/');
   }
 
   void deleteFile(String path) {
diff --git a/pkg/analyzer/lib/src/util/asserts.dart b/pkg/analyzer/lib/src/util/asserts.dart
index 402f3bc..f297109 100644
--- a/pkg/analyzer/lib/src/util/asserts.dart
+++ b/pkg/analyzer/lib/src/util/asserts.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.src.util.asserts;
-
 /**
  * Ensures that the given [value] is not null.
  * Otherwise throws an [ArgumentError].
diff --git a/pkg/analyzer/lib/src/util/glob.dart b/pkg/analyzer/lib/src/util/glob.dart
index ab86b4f..97c122f 100644
--- a/pkg/analyzer/lib/src/util/glob.dart
+++ b/pkg/analyzer/lib/src/util/glob.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.src.util.glob;
-
 /**
  * A pattern that matches against filesystem path-like strings with wildcards.
  *
diff --git a/pkg/analyzer/lib/src/util/lru_map.dart b/pkg/analyzer/lib/src/util/lru_map.dart
index 46d61d5..faa11fa 100644
--- a/pkg/analyzer/lib/src/util/lru_map.dart
+++ b/pkg/analyzer/lib/src/util/lru_map.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.src.util.lru_cache;
-
 import 'dart:collection';
 
 /**
diff --git a/pkg/analyzer/lib/src/util/utilities_timing.dart b/pkg/analyzer/lib/src/util/utilities_timing.dart
index ebc42b7..0ade452 100644
--- a/pkg/analyzer/lib/src/util/utilities_timing.dart
+++ b/pkg/analyzer/lib/src/util/utilities_timing.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.src.util.utilities_timing;
-
 /**
  * A `CountedStopwatch` is a [Stopwatch] that counts the number of times the
  * stop method has been invoked.
diff --git a/pkg/analyzer/test/cancelable_future_test.dart b/pkg/analyzer/test/cancelable_future_test.dart
index 1fec016..4f840aa 100644
--- a/pkg/analyzer/test/cancelable_future_test.dart
+++ b/pkg/analyzer/test/cancelable_future_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.cancelable_future_test;
-
 import 'dart:async';
 
 import 'package:analyzer/src/cancelable_future.dart';
diff --git a/pkg/analyzer/test/dart/ast/ast_test.dart b/pkg/analyzer/test/dart/ast/ast_test.dart
index 9ba443a..a6b658a 100644
--- a/pkg/analyzer/test/dart/ast/ast_test.dart
+++ b/pkg/analyzer/test/dart/ast/ast_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.dart.ast.ast_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
 import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analyzer/test/dart/ast/test_all.dart b/pkg/analyzer/test/dart/ast/test_all.dart
index 4babcdf..606e397 100644
--- a/pkg/analyzer/test/dart/ast/test_all.dart
+++ b/pkg/analyzer/test/dart/ast/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.dart.ast.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'ast_test.dart' as ast;
diff --git a/pkg/analyzer/test/dart/ast/visitor_test.dart b/pkg/analyzer/test/dart/ast/visitor_test.dart
index 0753c10..f246a06 100644
--- a/pkg/analyzer/test/dart/ast/visitor_test.dart
+++ b/pkg/analyzer/test/dart/ast/visitor_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.dart.ast.visitor_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analyzer/test/dart/element/builder_test.dart b/pkg/analyzer/test/dart/element/builder_test.dart
index af30af8..f460cfc 100644
--- a/pkg/analyzer/test/dart/element/builder_test.dart
+++ b/pkg/analyzer/test/dart/element/builder_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.dart.element.builder_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
 import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analyzer/test/dart/element/element_test.dart b/pkg/analyzer/test/dart/element/element_test.dart
index c4490fc..bfab82b 100644
--- a/pkg/analyzer/test/dart/element/element_test.dart
+++ b/pkg/analyzer/test/dart/element/element_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.dart.element.element_test;
-
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/generated/testing/element_factory.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analyzer/test/dart/element/test_all.dart b/pkg/analyzer/test/dart/element/test_all.dart
index d0e4cea..92caf27 100644
--- a/pkg/analyzer/test/dart/element/test_all.dart
+++ b/pkg/analyzer/test/dart/element/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.dart.element.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'builder_test.dart' as builder;
diff --git a/pkg/analyzer/test/embedder_tests.dart b/pkg/analyzer/test/embedder_tests.dart
index b9b0366..058f4b1 100644
--- a/pkg/analyzer/test/embedder_tests.dart
+++ b/pkg/analyzer/test/embedder_tests.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.embedder_tests;
-
 import 'dart:core';
 
 import 'package:analyzer/file_system/file_system.dart';
diff --git a/pkg/analyzer/test/file_system/memory_file_system_test.dart b/pkg/analyzer/test/file_system/memory_file_system_test.dart
index 5daa3ad..1c58e09 100644
--- a/pkg/analyzer/test/file_system/memory_file_system_test.dart
+++ b/pkg/analyzer/test/file_system/memory_file_system_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.file_system.memory_file_system_test;
-
 import 'dart:async';
 import 'dart:core';
 
diff --git a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart
index 1d53be6..32623b2 100644
--- a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.generated.checked_mode_compile_time_error_code_test;
-
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source_io.dart';
diff --git a/pkg/analyzer/test/generated/compile_time_error_code_driver_test.dart b/pkg/analyzer/test/generated/compile_time_error_code_driver_test.dart
index 248b5db..e2ad9cf 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_driver_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_driver_test.dart
@@ -55,12 +55,6 @@
 
   @override
   @failingTest
-  test_mixinInference_noMatchingClass_typeParametersSupplied() {
-    return super.test_mixinInference_noMatchingClass_typeParametersSupplied();
-  }
-
-  @override
-  @failingTest
   test_mixinOfNonClass() {
     return super.test_mixinOfNonClass();
   }
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 e4e4784..a04cda9 100644
--- a/pkg/analyzer/test/generated/compile_time_error_code_test.dart
+++ b/pkg/analyzer/test/generated/compile_time_error_code_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.compile_time_error_code_test;
-
 import 'dart:async';
 
 import 'package:analyzer/dart/analysis/declared_variables.dart';
@@ -63,18 +61,6 @@
   }
 
   @override
-  @failingTest
-  test_mixinInference_noMatchingClass_typeParametersSupplied() {
-    return super.test_mixinInference_noMatchingClass_typeParametersSupplied();
-  }
-
-  @override
-  @failingTest // Does not work with old task model
-  test_mixinInference_recursiveSubtypeCheck() {
-    return super.test_mixinInference_recursiveSubtypeCheck();
-  }
-
-  @override
   @failingTest // Does not work with old task model
   test_mixinInference_recursiveSubtypeCheck_new_syntax() {
     return super.test_mixinInference_recursiveSubtypeCheck_new_syntax();
@@ -100,6 +86,13 @@
 
   @override
   @failingTest
+  test_typedef_infiniteParameterBoundCycle() {
+    // Does not work with the task model.
+    return super.test_typedef_infiniteParameterBoundCycle();
+  }
+
+  @override
+  @failingTest
   test_yieldEachInNonGenerator_async() {
     return super.test_yieldEachInNonGenerator_async();
   }
@@ -3882,35 +3875,6 @@
     ]);
   }
 
-  test_mixinInference_matchingClass() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-class B {}
-class M<T> extends A<T> {}
-class C extends A<int> with M {}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-  }
-
-  test_mixinInference_matchingClass_inPreviousMixin() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-class B {}
-class M1 implements A<B> {}
-class M2<T> extends A<T> {}
-class C extends Object with M1, M2 {}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-  }
-
   test_mixinInference_matchingClass_inPreviousMixin_new_syntax() async {
     Source source = addSource('''
 abstract class A<T> {}
@@ -3934,36 +3898,6 @@
     assertNoErrors(source);
   }
 
-  test_mixinInference_noMatchingClass() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-class B {}
-class M<T> extends A<T> {}
-class C extends Object with M {}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [CompileTimeErrorCode.MIXIN_INFERENCE_NO_MATCHING_CLASS]);
-  }
-
-  test_mixinInference_noMatchingClass_namedMixinApplication() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-class B {}
-class M<T> extends A<T> {}
-class C = Object with M;
-''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [CompileTimeErrorCode.MIXIN_INFERENCE_NO_MATCHING_CLASS]);
-  }
-
   test_mixinInference_noMatchingClass_namedMixinApplication_new_syntax() async {
     Source source = addSource('''
 abstract class A<T> {}
@@ -3988,20 +3922,6 @@
         [CompileTimeErrorCode.MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE]);
   }
 
-  test_mixinInference_noMatchingClass_noSuperclassConstraint() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-class B {}
-class M<T> {}
-class C extends Object with M {}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-  }
-
   test_mixinInference_noMatchingClass_noSuperclassConstraint_new_syntax() async {
     Source source = addSource('''
 abstract class A<T> {}
@@ -4013,21 +3933,6 @@
     assertNoErrors(source);
   }
 
-  test_mixinInference_noMatchingClass_typeParametersSupplied() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-class B {}
-class M<T> extends A<T> {}
-class C extends Object with M<int> {}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source,
-        [CompileTimeErrorCode.MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE]);
-  }
-
   test_mixinInference_noMatchingClass_typeParametersSupplied_new_syntax() async {
     Source source = addSource('''
 abstract class A<T> {}
@@ -4040,44 +3945,6 @@
         [CompileTimeErrorCode.MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE]);
   }
 
-  test_mixinInference_recursiveSubtypeCheck() async {
-    // See dartbug.com/32353 for a detailed explanation.
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-class ioDirectory implements ioFileSystemEntity {}
-
-class ioFileSystemEntity {}
-
-abstract class _LocalDirectory
-    extends _LocalFileSystemEntity<_LocalDirectory, ioDirectory>
-    with ForwardingDirectory, DirectoryAddOnsMixin {}
-
-abstract class _LocalFileSystemEntity<T extends FileSystemEntity,
-  D extends ioFileSystemEntity> extends ForwardingFileSystemEntity<T, D> {}
-
-abstract class FileSystemEntity implements ioFileSystemEntity {}
-
-abstract class ForwardingFileSystemEntity<T extends FileSystemEntity,
-  D extends ioFileSystemEntity> implements FileSystemEntity {}
-
-
-abstract class ForwardingDirectory<T extends Directory>
-    extends ForwardingFileSystemEntity<T, ioDirectory>
-    implements Directory {}
-
-abstract class Directory implements FileSystemEntity, ioDirectory {}
-
-abstract class DirectoryAddOnsMixin implements Directory {}
-''');
-    var analysisResult = await computeAnalysisResult(source);
-    assertNoErrors(source);
-    var mixins =
-        analysisResult.unit.declaredElement.getType('_LocalDirectory').mixins;
-    expect(mixins[0].toString(), 'ForwardingDirectory<_LocalDirectory>');
-  }
-
   test_mixinInference_recursiveSubtypeCheck_new_syntax() async {
     // See dartbug.com/32353 for a detailed explanation.
     Source source = addSource('''
@@ -6391,7 +6258,7 @@
   return const A();
 }''');
     await computeAnalysisResult(source);
-    assertErrors(source, [CompileTimeErrorCode.UNDEFINED_CLASS]);
+    assertErrors(source, [StaticWarningCode.UNDEFINED_CLASS]);
     verify([source]);
   }
 
diff --git a/pkg/analyzer/test/generated/engine_test.dart b/pkg/analyzer/test/generated/engine_test.dart
index f1d150d..8f80f48 100644
--- a/pkg/analyzer/test/generated/engine_test.dart
+++ b/pkg/analyzer/test/generated/engine_test.dart
@@ -40,7 +40,6 @@
     modifiedOptions.disableCacheFlushing = true;
     modifiedOptions.enabledPluginNames = ['somePackage'];
     modifiedOptions.enableLazyAssignmentOperators = true;
-    modifiedOptions.enableSuperMixins = true;
     modifiedOptions.enableTiming = true;
     modifiedOptions.errorProcessors = [null];
     modifiedOptions.excludePatterns = ['a'];
@@ -63,7 +62,6 @@
     expect(modifiedOptions.enabledPluginNames, isEmpty);
     expect(modifiedOptions.enableLazyAssignmentOperators,
         defaultOptions.enableLazyAssignmentOperators);
-    expect(modifiedOptions.enableSuperMixins, defaultOptions.enableSuperMixins);
     expect(modifiedOptions.enableTiming, defaultOptions.enableTiming);
     expect(modifiedOptions.errorProcessors, defaultOptions.errorProcessors);
     expect(modifiedOptions.excludePatterns, defaultOptions.excludePatterns);
diff --git a/pkg/analyzer/test/generated/gn_test.dart b/pkg/analyzer/test/generated/gn_test.dart
index 5655b69..46ff4ea 100644
--- a/pkg/analyzer/test/generated/gn_test.dart
+++ b/pkg/analyzer/test/generated/gn_test.dart
@@ -22,6 +22,14 @@
     expect(workspace, isNull);
   }
 
+  void test_find_noPackagesFiles() {
+    newFolder('/workspace/.jiri_root');
+    newFolder('/workspace/some/code');
+    GnWorkspace workspace =
+        GnWorkspace.find(resourceProvider, convertPath('/workspace'));
+    expect(workspace, isNull);
+  }
+
   void test_find_notAbsolute() {
     expect(
         () => GnWorkspace.find(resourceProvider, convertPath('not_absolute')),
@@ -39,7 +47,7 @@
     GnWorkspace workspace =
         GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
     expect(workspace, isNotNull);
-    expect(workspace.root, convertPath('/workspace/some/code'));
+    expect(workspace.root, convertPath('/workspace'));
   }
 
   void test_packages() {
@@ -56,7 +64,7 @@
     GnWorkspace workspace =
         GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
     expect(workspace, isNotNull);
-    expect(workspace.root, convertPath('/workspace/some/code'));
+    expect(workspace.root, convertPath('/workspace'));
     expect(workspace.packageMap.length, 1);
     expect(workspace.packageMap['flutter'][0].path, packageLocation);
   }
@@ -75,7 +83,7 @@
     GnWorkspace workspace =
         GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
     expect(workspace, isNotNull);
-    expect(workspace.root, convertPath('/workspace/some/code'));
+    expect(workspace.root, convertPath('/workspace'));
     expect(workspace.packageMap.length, 1);
     expect(workspace.packageMap['flutter'][0].path, packageLocation);
   }
@@ -91,7 +99,24 @@
     GnWorkspace workspace =
         GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
     expect(workspace, isNotNull);
-    expect(workspace.root, convertPath('/workspace/some/code'));
+    expect(workspace.root, convertPath('/workspace'));
+    expect(workspace.packageMap.length, 1);
+    expect(workspace.packageMap['flutter'][0].path, packageLocation);
+  }
+
+  void test_packages_fallbackBuildDirWithUselessConfig() {
+    newFolder('/workspace/.jiri_root');
+    newFolder('/workspace/some/code');
+    newFile('/workspace/some/code/pubspec.yaml');
+    newFile('/workspace/.config', content: 'FOO=foo\n' + 'BAR=bar\n');
+    String packageLocation = convertPath('/workspace/this/is/the/package');
+    Uri packageUri = resourceProvider.pathContext.toUri(packageLocation);
+    newFile('/workspace/out/debug-x87_128/dartlang/gen/some/code/foo.packages',
+        content: 'flutter:$packageUri');
+    GnWorkspace workspace =
+        GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
+    expect(workspace, isNotNull);
+    expect(workspace.root, convertPath('/workspace'));
     expect(workspace.packageMap.length, 1);
     expect(workspace.packageMap['flutter'][0].path, packageLocation);
   }
@@ -116,7 +141,7 @@
     GnWorkspace workspace =
         GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
     expect(workspace, isNotNull);
-    expect(workspace.root, convertPath('/workspace/some/code'));
+    expect(workspace.root, convertPath('/workspace'));
     expect(workspace.packageMap.length, 1);
     expect(workspace.packageMap['rettulf'][0].path, otherPackageLocation);
   }
@@ -141,7 +166,7 @@
     GnWorkspace workspace =
         GnWorkspace.find(resourceProvider, convertPath('/workspace/some/code'));
     expect(workspace, isNotNull);
-    expect(workspace.root, convertPath('/workspace/some/code'));
+    expect(workspace.root, convertPath('/workspace'));
     expect(workspace.packageMap.length, 2);
     expect(workspace.packageMap['flutter'][0].path, packageOneLocation);
     expect(workspace.packageMap['rettulf'][0].path, packageTwoLocation);
diff --git a/pkg/analyzer/test/generated/hint_code_test.dart b/pkg/analyzer/test/generated/hint_code_test.dart
index e4d808c..bcf3bad 100644
--- a/pkg/analyzer/test/generated/hint_code_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_test.dart
@@ -1770,17 +1770,22 @@
   }
 
   test_invalidUseOfProtectedMember_in_docs_OK() async {
-    Source source = addSource(r'''
+    addNamedSource('/a.dart', r'''
 import 'package:meta/meta.dart';
 
 class A {
   @protected
-  int a() => c;
+  int c = 0;
+
   @protected
-  int get b => a();
+  int get b => 0;
+
   @protected
-  int c = 42;
+  int a() => 0;
 }
+''');
+    Source source = addSource(r'''
+import 'a.dart';
 
 /// OK: [A.a], [A.b], [A.c].
 f() {}
diff --git a/pkg/analyzer/test/generated/inheritance_manager_test.dart b/pkg/analyzer/test/generated/inheritance_manager_test.dart
index 369b90b..fa5b0d4 100644
--- a/pkg/analyzer/test/generated/inheritance_manager_test.dart
+++ b/pkg/analyzer/test/generated/inheritance_manager_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.generated.inheritance_manager_test;
-
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/element.dart';
@@ -759,6 +757,7 @@
     expect(mapC, hasLength(_numOfMembersInObject));
   }
 
+  @deprecated
   void test_lookupInheritance_interface_getter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
@@ -771,6 +770,7 @@
         same(getterG));
   }
 
+  @deprecated
   void test_lookupInheritance_interface_method() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -783,6 +783,7 @@
         same(methodM));
   }
 
+  @deprecated
   void test_lookupInheritance_interface_setter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
@@ -795,6 +796,7 @@
         same(setterS));
   }
 
+  @deprecated
   void test_lookupInheritance_interface_staticMember() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -807,12 +809,14 @@
     expect(_inheritanceManager.lookupInheritance(classB, methodName), isNull);
   }
 
+  @deprecated
   void test_lookupInheritance_interfaces_infiniteLoop() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.interfaces = <InterfaceType>[classA.type];
     expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
   }
 
+  @deprecated
   void test_lookupInheritance_interfaces_infiniteLoop2() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     ClassElementImpl classB = ElementFactory.classElement2("B");
@@ -821,6 +825,7 @@
     expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
   }
 
+  @deprecated
   void test_lookupInheritance_interfaces_union2() {
     ClassElementImpl classI1 = ElementFactory.classElement2("I1");
     String methodName1 = "m1";
@@ -841,6 +846,7 @@
         same(methodM2));
   }
 
+  @deprecated
   void test_lookupInheritance_mixin_getter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
@@ -853,6 +859,7 @@
         same(getterG));
   }
 
+  @deprecated
   void test_lookupInheritance_mixin_method() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -865,6 +872,7 @@
         same(methodM));
   }
 
+  @deprecated
   void test_lookupInheritance_mixin_setter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
@@ -877,6 +885,7 @@
         same(setterS));
   }
 
+  @deprecated
   void test_lookupInheritance_mixin_staticMember() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -889,11 +898,13 @@
     expect(_inheritanceManager.lookupInheritance(classB, methodName), isNull);
   }
 
+  @deprecated
   void test_lookupInheritance_noMember() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     expect(_inheritanceManager.lookupInheritance(classA, "a"), isNull);
   }
 
+  @deprecated
   void test_lookupInheritance_superclass_getter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
@@ -905,12 +916,14 @@
         same(getterG));
   }
 
+  @deprecated
   void test_lookupInheritance_superclass_infiniteLoop() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     classA.supertype = classA.type;
     expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
   }
 
+  @deprecated
   void test_lookupInheritance_superclass_infiniteLoop2() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     ClassElementImpl classB = ElementFactory.classElement2("B");
@@ -919,6 +932,7 @@
     expect(_inheritanceManager.lookupInheritance(classA, "name"), isNull);
   }
 
+  @deprecated
   void test_lookupInheritance_superclass_method() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -930,6 +944,7 @@
         same(methodM));
   }
 
+  @deprecated
   void test_lookupInheritance_superclass_setter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
@@ -941,6 +956,7 @@
         same(setterS));
   }
 
+  @deprecated
   void test_lookupInheritance_superclass_staticMember() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -952,6 +968,7 @@
     expect(_inheritanceManager.lookupInheritance(classB, methodName), isNull);
   }
 
+  @deprecated
   void test_lookupMember_getter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
@@ -961,6 +978,7 @@
     expect(_inheritanceManager.lookupMember(classA, getterName), same(getterG));
   }
 
+  @deprecated
   void test_lookupMember_getter_static() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String getterName = "g";
@@ -970,6 +988,7 @@
     expect(_inheritanceManager.lookupMember(classA, getterName), isNull);
   }
 
+  @deprecated
   void test_lookupMember_method() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -979,6 +998,7 @@
     expect(_inheritanceManager.lookupMember(classA, methodName), same(methodM));
   }
 
+  @deprecated
   void test_lookupMember_method_static() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -989,11 +1009,13 @@
     expect(_inheritanceManager.lookupMember(classA, methodName), isNull);
   }
 
+  @deprecated
   void test_lookupMember_noMember() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     expect(_inheritanceManager.lookupMember(classA, "a"), isNull);
   }
 
+  @deprecated
   void test_lookupMember_setter() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
@@ -1004,6 +1026,7 @@
         same(setterS));
   }
 
+  @deprecated
   void test_lookupMember_setter_static() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String setterName = "s";
@@ -1013,6 +1036,7 @@
     expect(_inheritanceManager.lookupMember(classA, setterName), isNull);
   }
 
+  @deprecated
   void test_lookupOverrides_noParentClasses() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -1023,6 +1047,7 @@
         _inheritanceManager.lookupOverrides(classA, methodName), hasLength(0));
   }
 
+  @deprecated
   void test_lookupOverrides_overrideBaseClass() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -1038,6 +1063,7 @@
     expect(overrides, unorderedEquals([methodMinA]));
   }
 
+  @deprecated
   void test_lookupOverrides_overrideInterface() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
@@ -1054,6 +1080,7 @@
     expect(overrides, unorderedEquals([methodMinA]));
   }
 
+  @deprecated
   void test_lookupOverrides_overrideTwoInterfaces() {
     ClassElementImpl classA = ElementFactory.classElement2("A");
     String methodName = "m";
diff --git a/pkg/analyzer/test/generated/java_core_test.dart b/pkg/analyzer/test/generated/java_core_test.dart
index 9571c87..9d8ccfe 100644
--- a/pkg/analyzer/test/generated/java_core_test.dart
+++ b/pkg/analyzer/test/generated/java_core_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.java_core_test;
-
 import 'package:analyzer/src/generated/java_core.dart';
 import 'package:test/test.dart';
 
diff --git a/pkg/analyzer/test/generated/java_io_test.dart b/pkg/analyzer/test/generated/java_io_test.dart
index c844cda..54a93ca 100644
--- a/pkg/analyzer/test/generated/java_io_test.dart
+++ b/pkg/analyzer/test/generated/java_io_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.java_io_test;
-
 import 'package:analyzer/src/generated/java_io.dart';
 import 'package:path/path.dart' as path;
 import 'package:test/test.dart';
diff --git a/pkg/analyzer/test/generated/non_error_resolver_test.dart b/pkg/analyzer/test/generated/non_error_resolver_test.dart
index d224d7f..be2fa81 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_test.dart
@@ -34,35 +34,11 @@
 
   @override
   @failingTest // Does not work with old task model
-  test_infer_mixin() {
-    return super.test_infer_mixin();
-  }
-
-  @override
-  @failingTest // Does not work with old task model
-  test_infer_mixin_multiplyConstrained() {
-    return super.test_infer_mixin_multiplyConstrained();
-  }
-
-  @override
-  @failingTest // Does not work with old task model
   test_infer_mixin_new_syntax() {
     return super.test_infer_mixin_new_syntax();
   }
 
   @override
-  @failingTest // Does not work with old task model
-  test_infer_mixin_with_substitution() {
-    return super.test_infer_mixin_with_substitution();
-  }
-
-  @override
-  @failingTest // Does not work with old task model
-  test_infer_mixin_with_substitution_functionType() {
-    return super.test_infer_mixin_with_substitution_functionType();
-  }
-
-  @override
   @failingTest
   test_infer_mixin_with_substitution_functionType_new_syntax() {
     return super.test_infer_mixin_with_substitution_functionType_new_syntax();
@@ -99,12 +75,6 @@
   }
 
   @override
-  @failingTest // Does not work with old task model
-  test_mixinInference_with_actual_mixins_supermixins_enabled() {
-    return super.test_mixinInference_with_actual_mixins_supermixins_enabled();
-  }
-
-  @override
   @failingTest
   test_null_callMethod() {
     return super.test_null_callMethod();
@@ -1321,19 +1291,6 @@
     verify([source]);
   }
 
-  test_constConstructorWithMixinWithField_withSuperMixins() async {
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    Source source = addSource(r'''
-class M {
-}
-class A extends Object with M {
-  const A();
-}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_constConstructorWithMixinWithField_withSuperMixins_new_syntax() async {
     Source source = addSource(r'''
 mixin M {
@@ -2678,58 +2635,6 @@
     verify([source]);
   }
 
-  test_infer_mixin() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-
-class B {}
-
-class M<T> extends A<T> {}
-
-class C extends A<B> with M {}
-''');
-    TestAnalysisResult analysisResult = await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-    CompilationUnit unit = analysisResult.unit;
-    ClassElement classC =
-        resolutionMap.elementDeclaredByCompilationUnit(unit).getType('C');
-    expect(classC.mixins, hasLength(1));
-    expect(classC.mixins[0].toString(), 'M<B>');
-  }
-
-  test_infer_mixin_multiplyConstrained() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-
-abstract class B<U> {}
-
-class C {}
-
-class D {}
-
-class M<T, U> extends A<T> with B<U> {}
-
-class E extends A<C> implements B<D> {}
-
-class F extends E with M {}
-''');
-    TestAnalysisResult analysisResult = await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-    CompilationUnit unit = analysisResult.unit;
-    ClassElement classF =
-        resolutionMap.elementDeclaredByCompilationUnit(unit).getType('F');
-    expect(classF.mixins, hasLength(1));
-    expect(classF.mixins[0].toString(), 'M<C, D>');
-  }
-
   test_infer_mixin_new_syntax() async {
     Source source = addSource('''
 abstract class A<T> {}
@@ -2750,51 +2655,6 @@
     expect(classC.mixins[0].toString(), 'M<B>');
   }
 
-  test_infer_mixin_with_substitution() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-
-class B {}
-
-class M<T> extends A<List<T>> {}
-
-class C extends A<List<B>> with M {}
-''');
-    TestAnalysisResult analysisResult = await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-    CompilationUnit unit = analysisResult.unit;
-    ClassElement classC =
-        resolutionMap.elementDeclaredByCompilationUnit(unit).getType('C');
-    expect(classC.mixins, hasLength(1));
-    expect(classC.mixins[0].toString(), 'M<B>');
-  }
-
-  test_infer_mixin_with_substitution_functionType() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-abstract class A<T> {}
-
-class B {}
-
-class M<T, U> extends A<T Function(U)> {}
-
-class C extends A<int Function(String)> with M {}
-''');
-    TestAnalysisResult analysisResult = await computeAnalysisResult(source);
-    assertNoErrors(source);
-    CompilationUnit unit = analysisResult.unit;
-    ClassElement classC =
-        resolutionMap.elementDeclaredByCompilationUnit(unit).getType('C');
-    expect(classC.mixins, hasLength(1));
-    expect(classC.mixins[0].toString(), 'M<int, String>');
-  }
-
   test_infer_mixin_with_substitution_functionType_new_syntax() async {
     Source source = addSource('''
 abstract class A<T> {}
@@ -3795,6 +3655,29 @@
     verify([source]);
   }
 
+  test_methodCallTypeInference_mixinType() async {
+    Source source = addSource('''
+main() {
+  C<int> c = f();
+}
+
+class C<T> {}
+
+mixin M<T> on C<T> {}
+
+M<T> f<T>() => null;
+''');
+    var result = await computeAnalysisResult(source);
+    assertNoErrors(source);
+    verify([source]);
+    var main = result.unit.declarations[0] as FunctionDeclaration;
+    var body = main.functionExpression.body as BlockFunctionBody;
+    var cDeclaration = body.block.statements[0] as VariableDeclarationStatement;
+    var fInvocation =
+        cDeclaration.variables.variables[0].initializer as MethodInvocation;
+    expect(fInvocation.staticInvokeType.toString(), '() → M<int>');
+  }
+
   test_methodDeclaration_scope_signature() async {
     Source source = addSource(r'''
 const app = 0;
@@ -4039,48 +3922,6 @@
     expect(xElem.type.toString(), 'int');
   }
 
-  test_mixinInference_with_actual_mixins_supermixins_enabled() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource('''
-class I<X> {}
-
-mixin M0<T> on I<T> {}
-
-mixin M1<T> on I<T> {
-  T foo() => null;
-}
-
-class A = I<int> with M0, M1;
-
-void main () {
-  var x = new A().foo();
-}
-''');
-    var result = await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-    var main = result.unit.declarations.last as FunctionDeclaration;
-    var mainBody = main.functionExpression.body as BlockFunctionBody;
-    var xDecl = mainBody.block.statements[0] as VariableDeclarationStatement;
-    var xElem = xDecl.variables.variables[0].declaredElement;
-    expect(xElem.type.toString(), 'int');
-  }
-
-  test_mixinInheritsFromNotObject_classDeclaration_extends() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource(r'''
-class A {}
-class B extends A {}
-class C extends A with B {}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_mixinInheritsFromNotObject_classDeclaration_extends_new_syntax() async {
     Source source = addSource(r'''
 class A {}
@@ -4101,32 +3942,6 @@
     verify([source]);
   }
 
-  test_mixinInheritsFromNotObject_classDeclaration_with() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource(r'''
-class A {}
-class B extends Object with A {}
-class C extends Object with B {}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
-  test_mixinInheritsFromNotObject_typeAlias_extends() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource(r'''
-class A {}
-class B extends A {}
-class C = A with B;''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_mixinInheritsFromNotObject_typeAlias_extends_new_syntax() async {
     Source source = addSource(r'''
 class A {}
@@ -4137,19 +3952,6 @@
     verify([source]);
   }
 
-  test_mixinInheritsFromNotObject_typeAlias_with() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource(r'''
-class A {}
-class B extends Object with A {}
-class C = Object with B;''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_mixinInheritsFromNotObject_typedef_mixTypeAlias() async {
     Source source = addSource(r'''
 class A {}
@@ -4160,20 +3962,6 @@
     verify([source]);
   }
 
-  test_mixinReferencesSuper() async {
-    AnalysisOptionsImpl options = new AnalysisOptionsImpl();
-    options.enableSuperMixins = true;
-    resetWith(options: options);
-    Source source = addSource(r'''
-class A {
-  toString() => super.toString();
-}
-class B extends Object with A {}''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_mixinReferencesSuper_new_syntax() async {
     Source source = addSource(r'''
 mixin A {
diff --git a/pkg/analyzer/test/generated/non_hint_code_test.dart b/pkg/analyzer/test/generated/non_hint_code_test.dart
index 24cbf3d..2900675e 100644
--- a/pkg/analyzer/test/generated/non_hint_code_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.generated.non_hint_code_test;
-
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/source_io.dart';
@@ -723,29 +721,6 @@
     verify([source]);
   }
 
-  @FailingTest(
-      reason: 'We should not use types here. '
-          'There is a member in a superinterface, so we override something.')
-  test_overrideOnNonOverridingMethod_dontUseInterface() async {
-    Source source = addSource(r'''
-abstract class A {
-  void foo(int _);
-}
-
-abstract class B {
-  void foo(double _);
-}
-
-abstract class X implements A, B {
-  @override
-  void foo(Object _) {}
-}
-''');
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_overrideOnNonOverridingMethod_inInterface() async {
     Source source = addSource(r'''
 class A {
@@ -760,6 +735,26 @@
     verify([source]);
   }
 
+  test_overrideOnNonOverridingMethod_inInterfaces() async {
+    Source source = addSource(r'''
+abstract class I {
+  void foo(int _);
+}
+
+abstract class J {
+  void foo(String _);
+}
+
+class C implements I, J {
+  @override
+  void foo(Object _) {}
+}
+''');
+    await computeAnalysisResult(source);
+    assertNoErrors(source);
+    verify([source]);
+  }
+
   test_overrideOnNonOverridingMethod_inSuperclass() async {
     Source source = addSource(r'''
 class A {
diff --git a/pkg/analyzer/test/generated/package_test.dart b/pkg/analyzer/test/generated/package_test.dart
index 5f62679..1921f63 100644
--- a/pkg/analyzer/test/generated/package_test.dart
+++ b/pkg/analyzer/test/generated/package_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.generated.package_test;
-
 import 'package:analyzer/exception/exception.dart';
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/generated/engine.dart';
diff --git a/pkg/analyzer/test/generated/parser_fasta_test.dart b/pkg/analyzer/test/generated/parser_fasta_test.dart
index 1b44cb5..dce0e04 100644
--- a/pkg/analyzer/test/generated/parser_fasta_test.dart
+++ b/pkg/analyzer/test/generated/parser_fasta_test.dart
@@ -927,7 +927,56 @@
  */
 @reflectiveTest
 class StatementParserTest_Fasta extends FastaParserTestCase
-    with StatementParserTestMixin {}
+    with StatementParserTestMixin {
+  void test_invalid_typeArg_34850() {
+    var unit = parseCompilationUnit('foo Future<List<int>> bar() {}', errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 11, 4),
+      expectedError(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, 4, 6),
+      expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 22, 3),
+    ]);
+    // Validate that recovery has properly updated the token stream.
+    analyzer.Token token = unit.beginToken;
+    while (!token.isEof) {
+      expect(token.type, isNot(TokenType.GT_GT));
+      analyzer.Token next = token.next;
+      expect(next.previous, token);
+      token = next;
+    }
+  }
+
+  void test_partial_typeArg1_34850() {
+    var unit = parseCompilationUnit('<bar<', errors: [
+      expectedError(ParserErrorCode.EXPECTED_EXECUTABLE, 0, 1),
+      expectedError(ParserErrorCode.MISSING_IDENTIFIER, 5, 0),
+      expectedError(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, 1, 3),
+      expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 5, 0),
+    ]);
+    // Validate that recovery has properly updated the token stream.
+    analyzer.Token token = unit.beginToken;
+    while (!token.isEof) {
+      expect(token.type, isNot(TokenType.GT_GT));
+      analyzer.Token next = token.next;
+      expect(next.previous, token);
+      token = next;
+    }
+  }
+
+  void test_partial_typeArg2_34850() {
+    var unit = parseCompilationUnit('foo <bar<', errors: [
+      expectedError(ParserErrorCode.EXPECTED_TOKEN, 5, 3),
+      expectedError(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, 0, 3),
+      expectedError(ParserErrorCode.MISSING_FUNCTION_BODY, 9, 0),
+    ]);
+    // Validate that recovery has properly updated the token stream.
+    analyzer.Token token = unit.beginToken;
+    while (!token.isEof) {
+      expect(token.type, isNot(TokenType.GT_GT));
+      analyzer.Token next = token.next;
+      expect(next.previous, token);
+      token = next;
+    }
+  }
+}
 
 /**
  * Tests of the fasta parser based on [TopLevelParserTestMixin].
diff --git a/pkg/analyzer/test/generated/parser_test.dart b/pkg/analyzer/test/generated/parser_test.dart
index 29dabbb..b46d1b7 100644
--- a/pkg/analyzer/test/generated/parser_test.dart
+++ b/pkg/analyzer/test/generated/parser_test.dart
@@ -8,6 +8,8 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/error/listener.dart';
+import 'package:analyzer/src/dart/ast/ast.dart'
+    show InstanceCreationExpressionImpl;
 import 'package:analyzer/src/dart/ast/token.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/parser.dart';
@@ -4213,15 +4215,11 @@
   }
 
   void test_method_invalidTypeParameters() {
-    // TODO(jmesserly): ideally we'd be better at parser recovery here.
-    // It doesn't try to advance past the invalid token `!` to find the
-    // valid `>`. If it did we'd get less cascading errors, at least for this
-    // particular example.
     createParser('void m<E, hello!>() {}');
     ClassMember member = parser.parseClassMember('C');
     expectNotNullIfNoErrors(member);
     listener.assertErrors(usingFastaParser
-        ? [expectedError(ParserErrorCode.UNEXPECTED_TOKEN, 15, 1)]
+        ? [expectedError(ParserErrorCode.EXPECTED_TOKEN, 10, 5)]
         : [
             expectedError(ParserErrorCode.EXPECTED_TOKEN, 0, 0) /*>*/,
             expectedError(ParserErrorCode.MISSING_IDENTIFIER, 0, 0),
@@ -6574,7 +6572,7 @@
   void test_parseFunctionExpression_functionInPlaceOfTypeName() {
     Expression expression = parseExpression('<test(' ', (){});>[0, 1, 2]',
         codes: usingFastaParser
-            ? [ParserErrorCode.UNEXPECTED_TOKEN]
+            ? [ParserErrorCode.EXPECTED_TOKEN]
             : [
                 ParserErrorCode.EXPECTED_TOKEN,
                 ParserErrorCode.MISSING_IDENTIFIER,
@@ -6702,7 +6700,7 @@
 
   void test_parseInstanceCreationExpression_type_named_typeArguments() {
     Token token = TokenFactory.tokenFromKeyword(Keyword.NEW);
-    InstanceCreationExpression expression =
+    InstanceCreationExpressionImpl expression =
         parseInstanceCreationExpression('A<B>.c()', token);
     expect(expression, isNotNull);
     assertNoErrors();
@@ -6715,6 +6713,31 @@
     expect(name.period, isNotNull);
     expect(name.name, isNotNull);
     expect(expression.argumentList, isNotNull);
+    expect(expression.typeArguments, isNull);
+  }
+
+  void test_parseInstanceCreationExpression_type_named_typeArguments_34403() {
+    if (!usingFastaParser) {
+      return;
+    }
+    InstanceCreationExpressionImpl expression =
+        parseExpression('new a.b.c<C>()', errors: [
+      expectedError(
+          StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
+          8,
+          1)
+    ]);
+    expect(expression, isNotNull);
+    expect(expression.keyword.keyword, Keyword.NEW);
+    ConstructorName name = expression.constructorName;
+    expect(name, isNotNull);
+    TypeName type = name.type;
+    expect(type, isNotNull);
+    expect(type.typeArguments, isNull);
+    expect(name.period, isNotNull);
+    expect(name.name, isNotNull);
+    expect(expression.argumentList, isNotNull);
+    expect(expression.typeArguments.arguments, hasLength(1));
   }
 
   void test_parseInstanceCreationExpression_type_typeArguments() {
@@ -10605,7 +10628,10 @@
     result[new Symbol(name)] = value;
   });
   return result;
-}''', errors: [expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 24)]);
+}''', errors: [
+        expectedError(ParserErrorCode.EXPECTED_TOKEN, 12, 24),
+        expectedError(ParserErrorCode.MISSING_FUNCTION_PARAMETERS, 0, 3)
+      ]);
     }
   }
 
@@ -13734,13 +13760,35 @@
     FunctionDeclaration f = unit.declarations[0];
     ExpressionFunctionBody body = f.functionExpression.body;
     expect(body.expression, new TypeMatcher<InstanceCreationExpression>());
-    InstanceCreationExpression creation = body.expression;
+    InstanceCreationExpressionImpl creation = body.expression;
     expect(creation.keyword, isNull);
     ConstructorName constructorName = creation.constructorName;
     expect(constructorName.type.toSource(), 'C<E>');
     expect(constructorName.period, isNotNull);
     expect(constructorName.name, isNotNull);
     expect(creation.argumentList, isNotNull);
+    expect(creation.typeArguments, isNull);
+  }
+
+  void test_parseInstanceCreation_noKeyword_noPrefix_34403() {
+    if (!usingFastaParser) {
+      return;
+    }
+    enableOptionalNewAndConst = true;
+    createParser('f() => C<E>.n<B>();');
+    CompilationUnit unit = parser.parseCompilationUnit2();
+    expect(unit, isNotNull);
+    FunctionDeclaration f = unit.declarations[0];
+    ExpressionFunctionBody body = f.functionExpression.body;
+    expect(body.expression, new TypeMatcher<InstanceCreationExpression>());
+    InstanceCreationExpressionImpl creation = body.expression;
+    expect(creation.keyword, isNull);
+    ConstructorName constructorName = creation.constructorName;
+    expect(constructorName.type.toSource(), 'C<E>');
+    expect(constructorName.period, isNotNull);
+    expect(constructorName.name, isNotNull);
+    expect(creation.argumentList, isNotNull);
+    expect(creation.typeArguments.arguments, hasLength(1));
   }
 
   void test_parseInstanceCreation_noKeyword_prefix() {
@@ -14901,6 +14949,16 @@
     expect(statement.expression, isNotNull);
   }
 
+  void test_parseNonLabeledStatement_const_object_named_typeParameters_34403() {
+    if (!usingFastaParser) {
+      return;
+    }
+    var statement = parseStatement('const A<B>.c<C>();') as ExpressionStatement;
+    assertErrorsWithCodes(
+        [StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR]);
+    expect(statement.expression, isNotNull);
+  }
+
   void test_parseNonLabeledStatement_constructorInvocation() {
     var statement = parseStatement('new C().m();') as ExpressionStatement;
     assertNoErrors();
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 613c0b9..2c0bdfd 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.resolver_test;
-
 import 'dart:async';
 import 'dart:collection';
 
diff --git a/pkg/analyzer/test/generated/sdk_test.dart b/pkg/analyzer/test/generated/sdk_test.dart
index 0d2d841..f311ea9 100644
--- a/pkg/analyzer/test/generated/sdk_test.dart
+++ b/pkg/analyzer/test/generated/sdk_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.sdk_test;
-
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:test/test.dart';
diff --git a/pkg/analyzer/test/generated/simple_resolver_test.dart b/pkg/analyzer/test/generated/simple_resolver_test.dart
index f38ced1..3d64b48 100644
--- a/pkg/analyzer/test/generated/simple_resolver_test.dart
+++ b/pkg/analyzer/test/generated/simple_resolver_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.generated.simple_resolver_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
@@ -11,7 +9,6 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/exception/exception.dart';
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source_io.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -1040,23 +1037,6 @@
     verify([source]);
   }
 
-  test_isValidMixin_badSuperclass_withSuperMixins() async {
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    Source source = addSource(r'''
-class A extends B {}
-class B {}
-class C = Object with A;''');
-    LibraryElement library = resolve2(source);
-    expect(library, isNotNull);
-    CompilationUnitElement unit = library.definingCompilationUnit;
-    expect(unit, isNotNull);
-    ClassElement a = unit.getType('A');
-    expect(a.isValidMixin, isTrue);
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_isValidMixin_constructor() async {
     Source source = addSource(r'''
 class A {
@@ -1077,27 +1057,6 @@
     verify([source]);
   }
 
-  test_isValidMixin_constructor_withSuperMixins() async {
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    Source source = addSource(r'''
-class A {
-  A() {}
-}
-class C = Object with A;''');
-    LibraryElement library = resolve2(source);
-    expect(library, isNotNull);
-    CompilationUnitElement unit = library.definingCompilationUnit;
-    expect(unit, isNotNull);
-    ClassElement a = unit.getType('A');
-    expect(a.isValidMixin, isFalse);
-    await computeAnalysisResult(source);
-    assertErrors(
-      source,
-      [CompileTimeErrorCode.MIXIN_CLASS_DECLARES_CONSTRUCTOR],
-    );
-    verify([source]);
-  }
-
   test_isValidMixin_factoryConstructor() async {
     Source source = addSource(r'''
 class A {
@@ -1115,24 +1074,6 @@
     verify([source]);
   }
 
-  test_isValidMixin_factoryConstructor_withSuperMixins() async {
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    Source source = addSource(r'''
-class A {
-  factory A() => null;
-}
-class C = Object with A;''');
-    LibraryElement library = resolve2(source);
-    expect(library, isNotNull);
-    CompilationUnitElement unit = library.definingCompilationUnit;
-    expect(unit, isNotNull);
-    ClassElement a = unit.getType('A');
-    expect(a.isValidMixin, isTrue);
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_isValidMixin_super() async {
     Source source = addSource(r'''
 class A {
@@ -1152,26 +1093,6 @@
     verify([source]);
   }
 
-  test_isValidMixin_super_withSuperMixins() async {
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    Source source = addSource(r'''
-class A {
-  toString() {
-    return super.toString();
-  }
-}
-class C = Object with A;''');
-    LibraryElement library = resolve2(source);
-    expect(library, isNotNull);
-    CompilationUnitElement unit = library.definingCompilationUnit;
-    expect(unit, isNotNull);
-    ClassElement a = unit.getType('A');
-    expect(a.isValidMixin, isTrue);
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_isValidMixin_valid() async {
     Source source = addSource('''
 class A {}
@@ -1187,22 +1108,6 @@
     verify([source]);
   }
 
-  test_isValidMixin_valid_withSuperMixins() async {
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    Source source = addSource('''
-class A {}
-class C = Object with A;''');
-    LibraryElement library = resolve2(source);
-    expect(library, isNotNull);
-    CompilationUnitElement unit = library.definingCompilationUnit;
-    expect(unit, isNotNull);
-    ClassElement a = unit.getType('A');
-    expect(a.isValidMixin, isTrue);
-    await computeAnalysisResult(source);
-    assertNoErrors(source);
-    verify([source]);
-  }
-
   test_labels_switch() async {
     Source source = addSource(r'''
 void doSwitch(int target) {
diff --git a/pkg/analyzer/test/generated/static_type_warning_code_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
index 81d1c82..e4f9e69 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.static_type_warning_code_test;
-
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -23,71 +21,6 @@
 
 @reflectiveTest
 class StaticTypeWarningCodeTest extends ResolverTestCase {
-  fail_method_lookup_mixin_of_extends() async {
-    // See dartbug.com/25605
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    await assertErrorsInUnverifiedCode('''
-class A { a() => null; }
-class B {}
-abstract class M extends A {}
-class T = B with M; // Warning: B does not extend A
-main() {
-  new T().a(); // Warning: The method 'a' is not defined for the class 'T'
-}
-''', [
-      // TODO(paulberry): when dartbug.com/25614 is fixed, add static warning
-      // code for "B does not extend A".
-      StaticTypeWarningCode.UNDEFINED_METHOD
-    ]);
-  }
-
-  fail_method_lookup_mixin_of_implements() async {
-    // See dartbug.com/25605
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    await assertErrorsInUnverifiedCode('''
-class A { a() => null; }
-class B {}
-abstract class M implements A {}
-class T = B with M; // Warning: Missing concrete implementation of 'A.a'
-main() {
-  new T().a(); // Warning: The method 'a' is not defined for the class 'T'
-}
-''', [
-      StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE,
-      StaticTypeWarningCode.UNDEFINED_METHOD
-    ]);
-  }
-
-  fail_method_lookup_mixin_of_mixin() async {
-    // See dartbug.com/25605
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    await assertErrorsInUnverifiedCode('''
-class A {}
-class B { b() => null; }
-class C {}
-class M extends A with B {}
-class T = C with M;
-main() {
-  new T().b();
-}
-''', [StaticTypeWarningCode.UNDEFINED_METHOD]);
-  }
-
-  fail_method_lookup_mixin_of_mixin_application() async {
-    // See dartbug.com/25605
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    await assertErrorsInUnverifiedCode('''
-class A { a() => null; }
-class B {}
-class C {}
-class M = A with B;
-class T = C with M;
-main() {
-  new T().a();
-}
-''', [StaticTypeWarningCode.UNDEFINED_METHOD]);
-  }
-
   fail_undefinedEnumConstant() async {
     // We need a way to set the parseEnum flag in the parser to true.
     await assertErrorsInCode(r'''
diff --git a/pkg/analyzer/test/generated/static_warning_code_test.dart b/pkg/analyzer/test/generated/static_warning_code_test.dart
index c2074ea..4b7068e 100644
--- a/pkg/analyzer/test/generated/static_warning_code_test.dart
+++ b/pkg/analyzer/test/generated/static_warning_code_test.dart
@@ -1,13 +1,10 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.static_warning_code_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/src/error/codes.dart';
-import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source_io.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -1313,6 +1310,28 @@
     verify([source]);
   }
 
+  test_generalizedVoid_andVoidLhsError() async {
+    Source source = addSource(r'''
+void main() {
+  void x;
+  x && true;
+}
+''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
+  }
+
+  test_generalizedVoid_andVoidRhsError() async {
+    Source source = addSource(r'''
+void main() {
+  void x;
+  true && x;
+}
+''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
+  }
+
   test_generalizedVoid_assignmentToVoidParameterOk() async {
     // Note: the spec may decide to disallow this, but at this point that seems
     // highly unlikely.
@@ -1344,6 +1363,17 @@
     }
   }
 
+  test_generalizedVoid_interpolateVoidValueError() async {
+    Source source = addSource(r'''
+void main() {
+  void x;
+  "$x";
+}
+''');
+    await computeAnalysisResult(source);
+    assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
+  }
+
   test_generalizedVoid_invocationOfVoidFieldError() async {
     Source source = addSource(r'''
 class Container<T>{
@@ -1400,28 +1430,6 @@
     assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
   }
 
-  test_generalizedVoid_throwVoidValueError() async {
-    Source source = addSource(r'''
-void main() {
-  void x;
-  throw x;
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
-  }
-
-  test_generalizedVoid_interpolateVoidValueError() async {
-    Source source = addSource(r'''
-void main() {
-  void x;
-  "$x";
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
-  }
-
   test_generalizedVoid_orVoidLhsError() async {
     Source source = addSource(r'''
 void main() {
@@ -1444,22 +1452,11 @@
     assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
   }
 
-  test_generalizedVoid_andVoidLhsError() async {
+  test_generalizedVoid_throwVoidValueError() async {
     Source source = addSource(r'''
 void main() {
   void x;
-  x && true;
-}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source, [StaticWarningCode.USE_OF_VOID_RESULT]);
-  }
-
-  test_generalizedVoid_andVoidRhsError() async {
-    Source source = addSource(r'''
-void main() {
-  void x;
-  true && x;
+  throw x;
 }
 ''');
     await computeAnalysisResult(source);
@@ -2615,46 +2612,6 @@
     verify([source]);
   }
 
-  test_mismatchedAccessorTypes_class() async {
-    Source source = addSource(r'''
-class A {
-  int get g { return 0; }
-  set g(String v) {}
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(
-        source, [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES]);
-    verify([source]);
-  }
-
-  test_mismatchedAccessorTypes_getterAndSuperSetter() async {
-    Source source = addSource(r'''
-class A {
-  int get g { return 0; }
-}
-class B extends A {
-  set g(String v) {}
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source,
-        [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]);
-    verify([source]);
-  }
-
-  test_mismatchedAccessorTypes_setterAndSuperGetter() async {
-    Source source = addSource(r'''
-class A {
-  set g(int v) {}
-}
-class B extends A {
-  String get g { return ''; }
-}''');
-    await computeAnalysisResult(source);
-    assertErrors(source,
-        [StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE]);
-    verify([source]);
-  }
-
   test_mismatchedAccessorTypes_topLevel() async {
     Source source = addSource(r'''
 int get g { return 0; }
@@ -3245,22 +3202,6 @@
     verify([source]);
   }
 
-  test_nonAbstractClassInheritsAbstractMemberTwo_variable_fromMixin_missingBoth() async {
-    // 26411
-    resetWith(options: new AnalysisOptionsImpl()..enableSuperMixins = true);
-    Source source = addSource(r'''
-class A {
-  int f;
-}
-class B extends A {}
-class C extends Object with B {}
-''');
-    await computeAnalysisResult(source);
-    assertErrors(source,
-        [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_TWO]);
-    verify([source]);
-  }
-
   test_nonTypeInCatchClause_noElement() async {
     Source source = addSource(r'''
 f() {
diff --git a/pkg/analyzer/test/generated/strong_mode_test.dart b/pkg/analyzer/test/generated/strong_mode_test.dart
index 2c0ada5..70a60b6 100644
--- a/pkg/analyzer/test/generated/strong_mode_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_test.dart
@@ -28,9 +28,7 @@
   });
 }
 
-/**
- * Strong mode static analyzer local type inference tests
- */
+/// Strong mode static analyzer local type inference tests
 @reflectiveTest
 class StrongModeLocalInferenceTest extends ResolverTestCase {
   TypeAssertions _assertions;
@@ -2792,9 +2790,7 @@
   }
 }
 
-/**
- * Strong mode static analyzer end to end tests
- */
+/// Strong mode static analyzer end to end tests
 @reflectiveTest
 class StrongModeStaticTypeAnalyzer2Test extends StaticTypeAnalyzer2TestShared
     with StrongModeStaticTypeAnalyzer2TestCases {
@@ -2847,6 +2843,69 @@
   test_notInstantiatedBound_class_error_recursion_less_direct() {
     return super.test_notInstantiatedBound_class_error_recursion_less_direct();
   }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_class_error_recursion_typedef() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_class_error_recursion_typedef();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_class_argument() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_class_argument();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_class_argument2() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_class_argument2();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_class_direct() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_class_direct();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_class_indirect() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_class_indirect();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_functionType() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_functionType();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_typedef_argument() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_typedef_argument();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_typedef_argument2() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_typedef_argument2();
+  }
+
+  @override
+  @failingTest
+  test_notInstantiatedBound_error_typedef_direct() {
+    // Does not work with the task model
+    return super.test_notInstantiatedBound_error_typedef_direct();
+  }
 }
 
 /// Test cases for [StrongModeStaticTypeAnalyzer2Test]
diff --git a/pkg/analyzer/test/generated/utilities_dart_test.dart b/pkg/analyzer/test/generated/utilities_dart_test.dart
index f616027..988ffda 100644
--- a/pkg/analyzer/test/generated/utilities_dart_test.dart
+++ b/pkg/analyzer/test/generated/utilities_dart_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.generated.utilities_dart_test;
-
 import 'package:analyzer/src/generated/utilities_dart.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analyzer/test/instrumentation/instrumentation_test.dart b/pkg/analyzer/test/instrumentation/instrumentation_test.dart
index c99b399..302a916 100644
--- a/pkg/analyzer/test/instrumentation/instrumentation_test.dart
+++ b/pkg/analyzer/test/instrumentation/instrumentation_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.instrumentation.instrumentation_test;
-
 import 'dart:async';
 
 import 'package:analyzer/instrumentation/instrumentation.dart';
diff --git a/pkg/analyzer/test/instrumentation/test_all.dart b/pkg/analyzer/test/instrumentation/test_all.dart
index 8ef3a56..187ebb6 100644
--- a/pkg/analyzer/test/instrumentation/test_all.dart
+++ b/pkg/analyzer/test/instrumentation/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.instrumentation.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'instrumentation_test.dart' as instrumentation_test;
diff --git a/pkg/analyzer/test/parse_compilation_unit_test.dart b/pkg/analyzer/test/parse_compilation_unit_test.dart
index b7179ab..a916d00 100644
--- a/pkg/analyzer/test/parse_compilation_unit_test.dart
+++ b/pkg/analyzer/test/parse_compilation_unit_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2013, 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 analyzer.test.parse_compilation_unit_test;
-
 import 'package:analyzer/analyzer.dart';
 import 'package:test/test.dart';
 
diff --git a/pkg/analyzer/test/resource_utils.dart b/pkg/analyzer/test/resource_utils.dart
index 10aed70..8bc0583 100644
--- a/pkg/analyzer/test/resource_utils.dart
+++ b/pkg/analyzer/test/resource_utils.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.resource_utils;
-
 import 'dart:async';
 import 'dart:core';
 
diff --git a/pkg/analyzer/test/source/test_all.dart b/pkg/analyzer/test/source/test_all.dart
index 0046df1..643b514 100644
--- a/pkg/analyzer/test/source/test_all.dart
+++ b/pkg/analyzer/test/source/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.source.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'analysis_options_provider_test.dart' as analysis_options_provider_test;
diff --git a/pkg/analyzer/test/src/abstract_single_unit.dart b/pkg/analyzer/test/src/abstract_single_unit.dart
index b40ca7b..f8fbb79 100644
--- a/pkg/analyzer/test/src/abstract_single_unit.dart
+++ b/pkg/analyzer/test/src/abstract_single_unit.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 test.services.src.index.abstract_single_file;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/error/error.dart';
diff --git a/pkg/analyzer/test/src/command_line/arguments_test.dart b/pkg/analyzer/test/src/command_line/arguments_test.dart
index 1634449..c612c12 100644
--- a/pkg/analyzer/test/src/command_line/arguments_test.dart
+++ b/pkg/analyzer/test/src/command_line/arguments_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.src.command_line.arguments_test;
-
 import 'package:analyzer/file_system/memory_file_system.dart';
 import 'package:analyzer/src/command_line/arguments.dart';
 import 'package:analyzer/src/context/builder.dart';
@@ -40,7 +38,6 @@
       '--options=$defaultAnalysisOptionsFilePath',
       '--packages=$defaultPackageFilePath',
       '--package-root=$defaultPackagesDirectoryPath',
-      '--supermixin',
     ];
     ArgResults result = parse(provider, parser, args);
     ContextBuilderOptions options = createContextBuilderOptions(result);
@@ -153,7 +150,7 @@
   void test_defineAnalysisArguments() {
     ArgParser parser = new ArgParser();
     defineAnalysisArguments(parser);
-    expect(parser.options, hasLength(13));
+    expect(parser.options, hasLength(12));
   }
 
   void test_extractDefinedVariables() {
diff --git a/pkg/analyzer/test/src/command_line/test_all.dart b/pkg/analyzer/test/src/command_line/test_all.dart
index c3239f9..a4c4e71 100644
--- a/pkg/analyzer/test/src/command_line/test_all.dart
+++ b/pkg/analyzer/test/src/command_line/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.command_line.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'arguments_test.dart' as arguments_test;
diff --git a/pkg/analyzer/test/src/context/builder_test.dart b/pkg/analyzer/test/src/context/builder_test.dart
index 8dc66ad..45d21f0 100644
--- a/pkg/analyzer/test/src/context/builder_test.dart
+++ b/pkg/analyzer/test/src/context/builder_test.dart
@@ -241,28 +241,29 @@
     _expectEqualOptions(options, expected);
   }
 
+  @failingTest
   void test_cmdline_options_override_options_file() {
-    ArgParser argParser = new ArgParser();
-    defineAnalysisArguments(argParser);
-    ArgResults argResults = argParser.parse(['--$enableSuperMixinFlag']);
-    var builder = new ContextBuilder(resourceProvider, sdkManager, contentCache,
-        options: createContextBuilderOptions(argResults));
-
-    AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
-    expected.enableSuperMixins = true;
-    expected.previewDart2 = true;
-
-    String path = resourceProvider.convertPath('/some/directory/path');
-    String filePath =
-        pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
-    resourceProvider.newFile(filePath, '''
-analyzer:
-  language:
-    enablePreviewDart2: true
-''');
-
-    AnalysisOptions options = builder.getAnalysisOptions(path);
-    _expectEqualOptions(options, expected);
+    fail('No clear choice of option to override.');
+//    ArgParser argParser = new ArgParser();
+//    defineAnalysisArguments(argParser);
+//    ArgResults argResults = argParser.parse(['--$enableSuperMixinFlag']);
+//    var builder = new ContextBuilder(resourceProvider, sdkManager, contentCache,
+//        options: createContextBuilderOptions(argResults));
+//
+//    AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
+//    expected.previewDart2 = true;
+//
+//    String path = resourceProvider.convertPath('/some/directory/path');
+//    String filePath =
+//        pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
+//    resourceProvider.newFile(filePath, '''
+//analyzer:
+//  language:
+//    enablePreviewDart2: true
+//''');
+//
+//    AnalysisOptions options = builder.getAnalysisOptions(path);
+//    _expectEqualOptions(options, expected);
   }
 
   void test_convertPackagesToMap_noPackages() {
@@ -298,7 +299,6 @@
     defaultOptions.dart2jsHint = !defaultOptions.dart2jsHint;
     defaultOptions.enableLazyAssignmentOperators =
         !defaultOptions.enableLazyAssignmentOperators;
-    defaultOptions.enableSuperMixins = !defaultOptions.enableSuperMixins;
     builderOptions.defaultOptions = defaultOptions;
     AnalysisOptions options = builder.createDefaultOptions();
     _expectEqualOptions(options, defaultOptions);
@@ -712,19 +712,17 @@
 
   void test_getAnalysisOptions_default_overrides() {
     AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl();
-    defaultOptions.enableSuperMixins = false;
-    defaultOptions.enableLazyAssignmentOperators = true;
+    defaultOptions.implicitDynamic = true;
     builderOptions.defaultOptions = defaultOptions;
     AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
-    expected.enableSuperMixins = true;
-    expected.enableLazyAssignmentOperators = true;
+    expected.implicitDynamic = false;
     String path = resourceProvider.convertPath('/some/directory/path');
     String filePath =
         pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
     resourceProvider.newFile(filePath, '''
 analyzer:
-  language:
-    enableSuperMixins : true
+  strong-mode:
+    implicit-dynamic: false
 ''');
 
     AnalysisOptions options = builder.getAnalysisOptions(path);
@@ -753,10 +751,8 @@
   void test_getAnalysisOptions_includes() {
     _defineMockLintRules();
     AnalysisOptionsImpl defaultOptions = new AnalysisOptionsImpl();
-    defaultOptions.enableSuperMixins = false;
     builderOptions.defaultOptions = defaultOptions;
     AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
-    expected.enableSuperMixins = true;
     expected.lint = true;
     expected.lintRules = <Linter>[
       _mockLintRule,
@@ -775,9 +771,6 @@
 ''');
     resourceProvider.newFile(pathContext.join(path, 'bar.yaml'), '''
 include: package:somepkg/here.yaml
-analyzer:
-  language:
-    enableSuperMixins : true
 linter:
   rules:
     - mock_lint_rule2
@@ -821,14 +814,14 @@
 
   void test_getAnalysisOptions_noDefault_overrides() {
     AnalysisOptionsImpl expected = new AnalysisOptionsImpl();
-    expected.enableSuperMixins = true;
+    expected.implicitDynamic = false;
     String path = resourceProvider.convertPath('/some/directory/path');
     String filePath =
         pathContext.join(path, AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE);
     resourceProvider.newFile(filePath, '''
 analyzer:
-  language:
-    enableSuperMixins : true
+  strong-mode:
+    implicit-dynamic: false
 ''');
 
     AnalysisOptions options = builder.getAnalysisOptions(path);
@@ -926,7 +919,6 @@
     expect(actual.dart2jsHint, expected.dart2jsHint);
     expect(actual.enableLazyAssignmentOperators,
         expected.enableLazyAssignmentOperators);
-    expect(actual.enableSuperMixins, expected.enableSuperMixins);
     expect(actual.enableTiming, expected.enableTiming);
     expect(actual.generateImplicitErrors, expected.generateImplicitErrors);
     expect(actual.generateSdkErrors, expected.generateSdkErrors);
diff --git a/pkg/analyzer/test/src/context/test_all.dart b/pkg/analyzer/test/src/context/test_all.dart
index 886098f..26c449b 100644
--- a/pkg/analyzer/test/src/context/test_all.dart
+++ b/pkg/analyzer/test/src/context/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.context.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'builder_test.dart' as builder_test;
diff --git a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
index 1bbdb6d..091ec5c 100644
--- a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart
@@ -698,6 +698,22 @@
     expect(file.apiSignature, signature);
   }
 
+  test_store_zeroLengthUnlinked() {
+    String path = _p('/test.dart');
+    provider.newFile(path, 'class A {}');
+
+    // Get the file, prepare unlinked.
+    FileState file = fileSystemState.getFileForPath(path);
+    expect(file.unlinked, isNotNull);
+
+    // Make the unlinked unit in the byte store zero-length, damaged.
+    byteStore.put(file.test.unlinkedKey, <int>[]);
+
+    // Refresh should not fail, zero bytes in the store are ignored.
+    file.refresh();
+    expect(file.unlinked, isNotNull);
+  }
+
   test_subtypedNames() {
     String path = _p('/test.dart');
     provider.newFile(path, r'''
diff --git a/pkg/analyzer/test/src/dart/analysis/search_test.dart b/pkg/analyzer/test/src/dart/analysis/search_test.dart
index cbadbb3..ad2bc6e 100644
--- a/pkg/analyzer/test/src/dart/analysis/search_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/search_test.dart
@@ -949,8 +949,8 @@
 Random bar() => null;
 ''');
     ImportElement element = testLibraryElement.imports[0];
-    Element mainElement = await _findElement('main');
-    Element barElement = await _findElement('bar');
+    Element mainElement = _findElement('main');
+    Element barElement = _findElement('bar');
     var kind = SearchResultKind.REFERENCE;
     var expected = [
       _expectId(mainElement, kind, 'PI);', length: 0),
@@ -974,8 +974,8 @@
 Random bar() => null;
 ''', addToDriver: false);
     ImportElement element = testLibraryElement.imports[0];
-    Element mainElement = await _findElement('main');
-    Element barElement = await _findElement('bar');
+    Element mainElement = _findElement('main');
+    Element barElement = _findElement('bar');
     var kind = SearchResultKind.REFERENCE;
     var expected = [
       _expectId(mainElement, kind, 'PI;', length: 0),
@@ -998,8 +998,8 @@
 math.Random bar() => null;
 ''');
     ImportElement element = testLibraryElement.imports[0];
-    Element mainElement = await _findElement('main');
-    Element barElement = await _findElement('bar');
+    Element mainElement = _findElement('main');
+    Element barElement = _findElement('bar');
     var kind = SearchResultKind.REFERENCE;
     var length = 'math.'.length;
     var expected = [
@@ -1020,7 +1020,7 @@
   p.Future;
 }
 ''');
-    Element mainElement = await _findElement('main');
+    Element mainElement = _findElement('main');
     var kind = SearchResultKind.REFERENCE;
     var length = 'p.'.length;
     {
diff --git a/pkg/analyzer/test/src/dart/analysis/test_all.dart b/pkg/analyzer/test/src/dart/analysis/test_all.dart
index ac21ffc..a8e0105 100644
--- a/pkg/analyzer/test/src/dart/analysis/test_all.dart
+++ b/pkg/analyzer/test/src/dart/analysis/test_all.dart
@@ -24,7 +24,6 @@
 import 'search_test.dart' as search;
 import 'session_helper_test.dart' as session_helper;
 import 'session_test.dart' as session;
-import 'unlinked_api_signature_test.dart' as unlinked_api_signature;
 import 'uri_converter_test.dart' as uri_converter;
 
 main() {
@@ -49,7 +48,6 @@
     search.main();
     session.main();
     session_helper.main();
-    unlinked_api_signature.main();
     uri_converter.main();
   }, name: 'analysis');
 }
diff --git a/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart b/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
deleted file mode 100644
index 2ef0d59..0000000
--- a/pkg/analyzer/test/src/dart/analysis/unlinked_api_signature_test.dart
+++ /dev/null
@@ -1,876 +0,0 @@
-// 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:async';
-import 'dart:typed_data';
-
-import 'package:analyzer/file_system/file_system.dart';
-import 'package:analyzer/src/dart/analysis/file_state.dart';
-import 'package:analyzer/src/file_system/file_system.dart';
-import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
-import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/source/package_map_resolver.dart';
-import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
-import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/performance_logger.dart';
-import 'package:test/test.dart';
-import 'package:test_reflective_loader/test_reflective_loader.dart';
-
-import '../../context/mock_sdk.dart';
-
-main() {
-  defineReflectiveSuite(() {
-    defineReflectiveTests(UnitApiSignatureTest);
-  });
-}
-
-@reflectiveTest
-class UnitApiSignatureTest extends Object with ResourceProviderMixin {
-  FileSystemState fileSystemState;
-
-  Future<Null> assertNotSameSignature(String oldCode, String newCode) async {
-    assertSignature(oldCode, newCode, same: false);
-  }
-
-  Future<Null> assertSameSignature(String oldCode, String newCode) async {
-    assertSignature(oldCode, newCode, same: true);
-  }
-
-  Future<Null> assertSignature(String oldCode, String newCode,
-      {bool same}) async {
-    var path = convertPath('/test.dart');
-
-    newFile(path, content: oldCode);
-    var file = fileSystemState.getFileForPath(path);
-    var lastSignature = file.apiSignature;
-
-    newFile(path, content: newCode);
-    await file.refresh();
-
-    var newSignature = file.apiSignature;
-    if (same) {
-      expect(newSignature, lastSignature);
-    } else {
-      expect(newSignature, isNot(lastSignature));
-    }
-  }
-
-  void setUp() {
-    var sdk = new MockSdk(resourceProvider: resourceProvider);
-    var sourceFactory = new SourceFactory([
-      new DartUriResolver(sdk),
-      new PackageMapUriResolver(resourceProvider, <String, List<Folder>>{
-        'aaa': [getFolder('/aaa/lib')],
-        'bbb': [getFolder('/bbb/lib')],
-      }),
-      new ResourceUriResolver(resourceProvider)
-    ], null, resourceProvider);
-    fileSystemState = new FileSystemState(
-        new PerformanceLog(new StringBuffer()),
-        new MemoryByteStore(),
-        new FileContentOverlay(),
-        resourceProvider,
-        sourceFactory,
-        new AnalysisOptionsImpl(),
-        new Uint32List(0),
-        new Uint32List(0));
-  }
-
-  test_class_annotation() async {
-    await assertNotSameSignature(r'''
-const a = 0;
-
-class C {}
-''', r'''
-const a = 0;
-
-@a
-class C {}
-''');
-  }
-
-  test_class_constructor_block_to_empty() async {
-    await assertSameSignature(r'''
-class C {
-  C() {
-    var v = 1;
-  }
-}
-''', r'''
-class C {
-  C();
-}
-''');
-  }
-
-  test_class_constructor_body() async {
-    await assertSameSignature(r'''
-class C {
-  C() {
-    var v = 1;
-  }
-}
-''', r'''
-class C {
-  C() {
-    var v = 2;
-  }
-}
-''');
-  }
-
-  test_class_constructor_empty_to_block() async {
-    await assertSameSignature(r'''
-class C {
-  C();
-}
-''', r'''
-class C {
-  C() {
-    var v = 1;
-  }
-}
-''');
-  }
-
-  test_class_constructor_initializer_const() async {
-    await assertNotSameSignature(r'''
-class C {
-  final int f;
-  const C() : f = 1;
-}
-''', r'''
-class C {
-  final int f;
-  const C() : f = 2;
-}
-''');
-  }
-
-  test_class_constructor_initializer_empty() async {
-    await assertSameSignature(r'''
-class C {
-  C.foo() : ;
-}
-''', r'''
-class C {
-  C.foo() : f;
-}
-''');
-  }
-
-  test_class_constructor_initializer_notConst() async {
-    await assertSameSignature(r'''
-class C {
-  final int f;
-  C.foo() : f = 1;
-  const C.bar();
-}
-''', r'''
-class C {
-  final int f;
-  C.foo() : f = 2;
-  const C.bar();
-}
-''');
-  }
-
-  test_class_constructor_parameters_add() async {
-    await assertNotSameSignature(r'''
-class C {
-  C(int a);
-}
-''', r'''
-class C {
-  C(int a, int b);
-}
-''');
-  }
-
-  test_class_constructor_parameters_remove() async {
-    await assertNotSameSignature(r'''
-class C {
-  C(int a, int b);
-}
-''', r'''
-class C {
-  C(int a);
-}
-''');
-  }
-
-  test_class_constructor_parameters_rename() async {
-    await assertNotSameSignature(r'''
-class C {
-  C(int a);
-}
-''', r'''
-class C {
-  C(int b);
-}
-''');
-  }
-
-  test_class_constructor_parameters_type() async {
-    await assertNotSameSignature(r'''
-class C {
-  C(int p);
-}
-''', r'''
-class C {
-  C(double p);
-}
-''');
-  }
-
-  test_class_extends() async {
-    await assertNotSameSignature(r'''
-class A {}
-class B {}
-''', r'''
-class A {}
-class B extends A {}
-''');
-  }
-
-  test_class_field_withoutType() async {
-    await assertNotSameSignature(r'''
-class C {
-  var a = 1;
-}
-''', r'''
-class C {
-  var a = 2;
-}
-''');
-  }
-
-  test_class_field_withoutType2() async {
-    await assertNotSameSignature(r'''
-class C {
-  var a = 1, b = 2, c, d = 4;
-}
-''', r'''
-class C {
-  var a = 1, b, c = 3, d = 4;
-}
-''');
-  }
-
-  test_class_field_withType() async {
-    await assertSameSignature(r'''
-class C {
-  int a = 1, b, c = 3;
-}
-''', r'''
-class C {
-  int a = 0, b = 2, c;
-}
-''');
-  }
-
-  test_class_field_withType_const() async {
-    await assertNotSameSignature(r'''
-class C {
-  static const int a = 1;
-}
-''', r'''
-class C {
-  static const int a = 2;
-}
-''');
-  }
-
-  test_class_field_withType_final_hasConstConstructor() async {
-    await assertNotSameSignature(r'''
-class C {
-  final int a = 1;
-  const C();
-}
-''', r'''
-class C {
-  final int a = 2;
-  const C();
-}
-''');
-  }
-
-  test_class_field_withType_final_noConstConstructor() async {
-    await assertSameSignature(r'''
-class C {
-  final int a = 1;
-}
-''', r'''
-class C {
-  final int a = 2;
-}
-''');
-  }
-
-  test_class_field_withType_hasConstConstructor() async {
-    await assertSameSignature(r'''
-class C {
-  int a = 1;
-  const C();
-}
-''', r'''
-class C {
-  int a = 2;
-  const C();
-}
-''');
-  }
-
-  test_class_field_withType_static_final_hasConstConstructor() async {
-    await assertSameSignature(r'''
-class C {
-  static final int a = 1;
-  const C();
-}
-''', r'''
-class C {
-  static final int a = 2;
-  const C();
-}
-''');
-  }
-
-  test_class_field_withType_static_hasConstConstructor() async {
-    await assertSameSignature(r'''
-class C {
-  static int a = 1;
-  const C();
-}
-''', r'''
-class C {
-  static int a = 2;
-  const C();
-}
-''');
-  }
-
-  test_class_implements() async {
-    await assertNotSameSignature(r'''
-class A {}
-class B {}
-''', r'''
-class A {}
-class B implements A {}
-''');
-  }
-
-  test_class_method_annotation() async {
-    await assertNotSameSignature(r'''
-const a = 0;
-
-class C {
-  void foo() {}
-}
-''', r'''
-const a = 0;
-
-class C {
-  @a
-  void foo() {}
-}
-''');
-  }
-
-  test_class_method_body_async_to_sync() async {
-    await assertSameSignature(r'''
-class C {
-  Future foo() async {}
-}
-''', r'''
-class C {
-  Future foo() {}
-}
-''');
-  }
-
-  test_class_method_body_block() async {
-    await assertSameSignature(r'''
-class C {
-  int foo() {
-    return 1;
-  }
-}
-''', r'''
-class C {
-  int foo() {
-    return 2;
-  }
-}
-''');
-  }
-
-  test_class_method_body_block_to_expression() async {
-    await assertSameSignature(r'''
-class C {
-  int foo() {
-    return 1;
-  }
-}
-''', r'''
-class C {
-  int foo() => 2;
-}
-''');
-  }
-
-  test_class_method_body_empty_to_block() async {
-    await assertSameSignature(r'''
-class C {
-  int foo();
-}
-''', r'''
-class C {
-  int foo() {
-    var v = 0;
-  }
-}
-''');
-  }
-
-  test_class_method_body_expression() async {
-    await assertSameSignature(r'''
-class C {
-  int foo() => 1;
-}
-''', r'''
-class C {
-  int foo() => 2;
-}
-''');
-  }
-
-  test_class_method_body_sync_to_async() async {
-    await assertSameSignature(r'''
-class C {
-  Future foo() {}
-}
-''', r'''
-class C {
-  Future foo() async {}
-}
-''');
-  }
-
-  test_class_method_getter_body_block_to_expression() async {
-    await assertSameSignature(r'''
-class C {
-  int get foo {
-    return 1;
-  }
-}
-''', r'''
-class C {
-  int get foo => 2;
-}
-''');
-  }
-
-  test_class_method_getter_body_empty_to_expression() async {
-    await assertSameSignature(r'''
-class C {
-  int get foo;
-}
-''', r'''
-class C {
-  int get foo => 2;
-}
-''');
-  }
-
-  test_class_method_parameters_add() async {
-    await assertNotSameSignature(r'''
-class C {
-  foo(int a) {}
-}
-''', r'''
-class C {
-  foo(int a, int b) {}
-}
-''');
-  }
-
-  test_class_method_parameters_remove() async {
-    await assertNotSameSignature(r'''
-class C {
-  foo(int a, int b) {}
-}
-''', r'''
-class C {
-  foo(int a) {}
-}
-''');
-  }
-
-  test_class_method_parameters_rename() async {
-    await assertNotSameSignature(r'''
-class C {
-  void foo(int a) {}
-}
-''', r'''
-class C {
-  void foo(int b) {}
-}
-''');
-  }
-
-  test_class_method_parameters_type() async {
-    await assertNotSameSignature(r'''
-class C {
-  void foo(int p) {}
-}
-''', r'''
-class C {
-  void foo(double p) {}
-}
-''');
-  }
-
-  test_class_method_returnType() async {
-    await assertNotSameSignature(r'''
-class C {
-  int foo() => 0;
-}
-''', r'''
-class C {
-  num foo() => 0;
-}
-''');
-  }
-
-  test_class_method_typeParameters_add() async {
-    await assertNotSameSignature(r'''
-class C {
-  void foo() {}
-}
-''', r'''
-class C {
-  void foo<T>() {}
-}
-''');
-  }
-
-  test_class_method_typeParameters_remove() async {
-    await assertNotSameSignature(r'''
-class C {
-  void foo<T>() {}
-}
-''', r'''
-class C {
-  void foo() {}
-}
-''');
-  }
-
-  test_class_method_typeParameters_rename() async {
-    await assertNotSameSignature(r'''
-class C {
-  void foo<T>() {}
-}
-''', r'''
-class C {
-  void foo<U>() {}
-}
-''');
-  }
-
-  test_class_modifier() async {
-    await assertNotSameSignature(r'''
-class C {}
-''', r'''
-abstract class C {}
-''');
-  }
-
-  test_class_with() async {
-    await assertNotSameSignature(r'''
-class A {}
-class B {}
-class C extends A {}
-''', r'''
-class A {}
-class B {}
-class C extends A with B {}
-''');
-  }
-
-  test_commentAdd() async {
-    await assertSameSignature(r'''
-var a = 1;
-var b = 2;
-var c = 3;
-''', r'''
-var a = 1; // comment
-
-/// comment 1
-/// comment 2
-var b = 2;
-
-/**
- *  Comment
- */
-var c = 3;
-''');
-  }
-
-  test_commentRemove() async {
-    await assertSameSignature(r'''
-var a = 1; // comment
-
-/// comment 1
-/// comment 2
-var b = 2;
-
-/**
- *  Comment
- */
-var c = 3;
-''', r'''
-var a = 1;
-var b = 2;
-var c = 3;
-''');
-  }
-
-  test_function_annotation() async {
-    await assertNotSameSignature(r'''
-const a = 0;
-
-void foo() {}
-''', r'''
-const a = 0;
-
-@a
-void foo() {}
-''');
-  }
-
-  test_function_body_async_to_sync() async {
-    await assertSameSignature(r'''
-Future foo() async {}
-''', r'''
-Future foo() {}
-''');
-  }
-
-  test_function_body_block() async {
-    await assertSameSignature(r'''
-int foo() {
-  return 1;
-}
-''', r'''
-int foo() {
-  return 2;
-}
-''');
-  }
-
-  test_function_body_block_to_expression() async {
-    await assertSameSignature(r'''
-int foo() {
-  return 1;
-}
-''', r'''
-int foo() => 2;
-''');
-  }
-
-  test_function_body_expression() async {
-    await assertSameSignature(r'''
-int foo() => 1;
-''', r'''
-int foo() => 2;
-''');
-  }
-
-  test_function_body_sync_to_async() async {
-    await assertSameSignature(r'''
-Future foo() {}
-''', r'''
-Future foo() async {}
-''');
-  }
-
-  test_function_getter_block_to_expression() async {
-    await assertSameSignature(r'''
-int get foo {
-  return 1;
-}
-''', r'''
-int get foo => 2;
-''');
-  }
-
-  test_function_parameters_rename() async {
-    await assertNotSameSignature(r'''
-void foo(int a) {}
-''', r'''
-void foo(int b) {}
-''');
-  }
-
-  test_function_parameters_type() async {
-    await assertNotSameSignature(r'''
-void foo(int p) {}
-''', r'''
-void foo(double p) {}
-''');
-  }
-
-  test_function_returnType() async {
-    await assertNotSameSignature(r'''
-int foo() => 0;
-''', r'''
-num foo() => 0;
-''');
-  }
-
-  test_function_typeParameters_add() async {
-    await assertNotSameSignature(r'''
-void foo() {}
-''', r'''
-void foo<T>() {}
-''');
-  }
-
-  test_function_typeParameters_remove() async {
-    await assertNotSameSignature(r'''
-void foo<T>() {}
-''', r'''
-void foo() {}
-''');
-  }
-
-  test_function_typeParameters_rename() async {
-    await assertNotSameSignature(r'''
-void foo<T>() {}
-''', r'''
-void foo<U>() {}
-''');
-  }
-
-  test_mixin_field_withoutType() async {
-    await assertNotSameSignature(r'''
-mixin M {
-  var a = 1;
-}
-''', r'''
-mixin M {
-  var a = 2;
-}
-''');
-  }
-
-  test_mixin_field_withType() async {
-    await assertSameSignature(r'''
-mixin M {
-  int a = 1, b, c = 3;
-}
-''', r'''
-mixin M {
-  int a = 0, b = 2, c;
-}
-''');
-  }
-
-  test_mixin_implements() async {
-    await assertNotSameSignature(r'''
-class A {}
-mixin M {}
-''', r'''
-class A {}
-mixin M implements A {}
-''');
-  }
-
-  test_mixin_method_body_block() async {
-    await assertSameSignature(r'''
-mixin M {
-  int foo() {
-    return 1;
-  }
-}
-''', r'''
-mixin M {
-  int foo() {
-    return 2;
-  }
-}
-''');
-  }
-
-  test_mixin_method_body_expression() async {
-    await assertSameSignature(r'''
-mixin M {
-  int foo() => 1;
-}
-''', r'''
-mixin M {
-  int foo() => 2;
-}
-''');
-  }
-
-  test_mixin_on() async {
-    await assertNotSameSignature(r'''
-class A {}
-mixin M {}
-''', r'''
-class A {}
-mixin M on A {}
-''');
-  }
-
-  test_topLevelVariable_withoutType() async {
-    await assertNotSameSignature(r'''
-var a = 1;
-''', r'''
-var a = 2;
-''');
-  }
-
-  test_topLevelVariable_withoutType2() async {
-    await assertNotSameSignature(r'''
-var a = 1, b = 2, c, d = 4;;
-''', r'''
-var a = 1, b, c = 3, d = 4;;
-''');
-  }
-
-  test_topLevelVariable_withType() async {
-    await assertSameSignature(r'''
-int a = 1, b, c = 3;
-''', r'''
-int a = 0, b = 2, c;
-''');
-  }
-
-  test_topLevelVariable_withType_const() async {
-    await assertNotSameSignature(r'''
-const int a = 1;
-''', r'''
-const int a = 2;
-''');
-  }
-
-  test_topLevelVariable_withType_final() async {
-    await assertSameSignature(r'''
-final int a = 1;
-''', r'''
-final int a = 2;
-''');
-  }
-
-  test_typedef_generic_parameters_type() async {
-    await assertNotSameSignature(r'''
-typedef F = void Function(int);
-''', r'''
-typedef F = void Function(double);
-''');
-  }
-}
diff --git a/pkg/analyzer/test/src/dart/ast/utilities_test.dart b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
index 715eccf..de28384 100644
--- a/pkg/analyzer/test/src/dart/ast/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/utilities_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.src.dart.ast.utilities_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
 import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analyzer/test/src/dart/constant/test_all.dart b/pkg/analyzer/test/src/dart/constant/test_all.dart
index 6eea24d..022da95 100644
--- a/pkg/analyzer/test/src/dart/constant/test_all.dart
+++ b/pkg/analyzer/test/src/dart/constant/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.src.dart.constant.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'evaluation_test.dart' as evaluation;
diff --git a/pkg/analyzer/test/src/dart/constant/utilities_test.dart b/pkg/analyzer/test/src/dart/constant/utilities_test.dart
index 96a3968..05e7d25 100644
--- a/pkg/analyzer/test/src/dart/constant/utilities_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/utilities_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.src.dart.constant.utilities_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_ast_factory.dart';
 import 'package:analyzer/dart/ast/token.dart';
diff --git a/pkg/analyzer/test/src/dart/constant/value_test.dart b/pkg/analyzer/test/src/dart/constant/value_test.dart
index c0eab74..1883704 100644
--- a/pkg/analyzer/test/src/dart/constant/value_test.dart
+++ b/pkg/analyzer/test/src/dart/constant/value_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.src.dart.constant.value_test;
-
 import 'package:analyzer/src/generated/constant.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/testing/test_type_provider.dart';
diff --git a/pkg/analyzer/test/src/dart/element/element_test.dart b/pkg/analyzer/test/src/dart/element/element_test.dart
index 15e8e7b..3a0bc36 100644
--- a/pkg/analyzer/test/src/dart/element/element_test.dart
+++ b/pkg/analyzer/test/src/dart/element/element_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.src.dart.element.element_test;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/constant/value.dart';
 import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analyzer/test/src/dart/element/function_type_test.dart b/pkg/analyzer/test/src/dart/element/function_type_test.dart
index b4978ae..16b9189 100644
--- a/pkg/analyzer/test/src/dart/element/function_type_test.dart
+++ b/pkg/analyzer/test/src/dart/element/function_type_test.dart
@@ -86,27 +86,6 @@
   DartType mapOf(DartType keyType, DartType valueType) =>
       mapType.instantiate([keyType, valueType]);
 
-  test_forInstantiatedTypedef_bothTypeParameters() {
-    // typedef F<T> = Map<T, U> Function<U>();
-    var t = new MockTypeParameterElement('T');
-    var u = new MockTypeParameterElement('U');
-    var e = new MockGenericTypeAliasElement('F',
-        typeParameters: [t],
-        innerTypeParameters: [u],
-        returnType: mapOf(t.type, u.type));
-    FunctionType f =
-        new FunctionTypeImpl.forTypedef(e, typeArguments: [objectType]);
-    // Note: forTypedef returns the type `() -> Map<Object, U>`.
-    // See https://github.com/dart-lang/sdk/issues/34657.
-    basicChecks(f,
-        element: same(e),
-        displayName: 'F<Object>',
-        name: 'F',
-        typeArguments: [same(objectType)],
-        typeParameters: [same(t)],
-        returnType: mapOf(objectType, u.type));
-  }
-
   test_forInstantiatedTypedef_bothTypeParameters_noTypeArgs() {
     // typedef F<T> = Map<T, U> Function<U>();
     var t = new MockTypeParameterElement('T');
@@ -126,21 +105,6 @@
         returnType: mapOf(t.type, u.type));
   }
 
-  test_forInstantiatedTypedef_innerTypeParameter() {
-    // typedef F = T F<T>();
-    var t = new MockTypeParameterElement('T');
-    var e = new MockGenericTypeAliasElement('F',
-        innerTypeParameters: [t], returnType: t.type);
-    FunctionType f = new FunctionTypeImpl.forTypedef(e, typeArguments: []);
-    // Note: forTypedef returns the type `() -> T`.
-    // See https://github.com/dart-lang/sdk/issues/34657.
-    basicChecks(f,
-        element: same(e),
-        displayName: 'F',
-        name: 'F',
-        returnType: same(t.type));
-  }
-
   test_forInstantiatedTypedef_innerTypeParameter_noTypeArgs() {
     // typedef F = T F<T>();
     var t = new MockTypeParameterElement('T');
@@ -156,14 +120,6 @@
         returnType: same(t.type));
   }
 
-  test_forInstantiatedTypedef_noTypeParameters() {
-    // typedef F = void Function();
-    var e = new MockGenericTypeAliasElement('F');
-    FunctionType f = new FunctionTypeImpl.forTypedef(e, typeArguments: []);
-    // Note: forTypedef returns the type `() -> void`.
-    basicChecks(f, element: same(e), displayName: 'F', name: 'F');
-  }
-
   test_forInstantiatedTypedef_noTypeParameters_noTypeArgs() {
     // typedef F = void Function();
     var e = new MockGenericTypeAliasElement('F');
@@ -172,23 +128,6 @@
     basicChecks(f, element: same(e), displayName: 'F', name: 'F');
   }
 
-  test_forInstantiatedTypedef_outerTypeParameters() {
-    // typedef F<T> = T Function();
-    var t = new MockTypeParameterElement('T');
-    var e = new MockGenericTypeAliasElement('F',
-        typeParameters: [t], returnType: t.type);
-    FunctionType f =
-        new FunctionTypeImpl.forTypedef(e, typeArguments: [objectType]);
-    // Note: forTypedef returns the type `() -> Object`.
-    basicChecks(f,
-        element: same(e),
-        displayName: 'F<Object>',
-        name: 'F',
-        typeArguments: [same(objectType)],
-        typeParameters: [same(t)],
-        returnType: same(objectType));
-  }
-
   test_forInstantiatedTypedef_outerTypeParameters_noTypeArgs() {
     // typedef F<T> = T Function();
     var t = new MockTypeParameterElement('T');
diff --git a/pkg/analyzer/test/src/dart/element/inheritance_manager2_test.dart b/pkg/analyzer/test/src/dart/element/inheritance_manager2_test.dart
index ee760b5..4dddf19 100644
--- a/pkg/analyzer/test/src/dart/element/inheritance_manager2_test.dart
+++ b/pkg/analyzer/test/src/dart/element/inheritance_manager2_test.dart
@@ -3,15 +3,11 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/dart/element/type.dart';
-import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
-import 'package:analyzer/src/generated/resolver.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
-import '../analysis/base.dart';
-import '../resolution/find_element.dart';
+import '../resolution/driver_resolution.dart';
 
 main() {
   defineReflectiveSuite(() {
@@ -20,38 +16,205 @@
 }
 
 @reflectiveTest
-class InheritanceManager2Test extends BaseAnalysisDriverTest {
-  AnalysisResult result;
-  FindElement findElement;
+class InheritanceManager2Test extends DriverResolutionTest {
   InheritanceManager2 manager;
 
-  TypeProvider get typeProvider =>
-      result.unit.declaredElement.context.typeProvider;
-
-  Future resolveTestFile() async {
-    result = await driver.getResult(testFile);
-    findElement = new FindElement(result.unit);
-    manager =
-        new InheritanceManager2(result.unit.declaredElement.context.typeSystem);
+  @override
+  Future<void> resolveTestFile() async {
+    await super.resolveTestFile();
+    manager = new InheritanceManager2(
+      result.unit.declaredElement.context.typeSystem,
+    );
   }
 
-  void test_computeNode_ClassDeclaration() async {
+  test_getInherited_closestSuper() async {
+    addTestFile('''
+class A {
+  void foo() {}
+}
+
+class B extends A {
+  void foo() {}
+}
+
+class X extends B {
+  void foo() {}
+}
+''');
+    await resolveTestFile();
+
+    expect(
+      _getInherited('X', 'foo'),
+      same(findElement.method('foo', of: 'B')),
+    );
+  }
+
+  test_getInherited_interfaces() async {
+    addTestFile('''
+abstract class I {
+  void foo();
+}
+
+abstrac class J {
+  void foo();
+}
+
+class X implements I, J {
+  void foo() {}
+}
+''');
+    await resolveTestFile();
+
+    expect(
+      _getInherited('X', 'foo'),
+      same(findElement.method('foo', of: 'J')),
+    );
+  }
+
+  test_getInherited_mixin() async {
+    addTestFile('''
+class A {
+  void foo() {}
+}
+
+mixin M {
+  void foo() {}
+}
+
+class X extends A with M {
+  void foo() {}
+}
+''');
+    await resolveTestFile();
+
+    expect(
+      _getInherited('X', 'foo'),
+      same(findElement.method('foo', of: 'M')),
+    );
+  }
+
+  test_getInherited_preferImplemented() async {
+    addTestFile('''
+class A {
+  void foo() {}
+}
+
+class I {
+  void foo() {}
+}
+
+class X extends A implements I {
+  void foo() {}
+}
+''');
+    await resolveTestFile();
+
+    expect(
+      _getInherited('X', 'foo'),
+      same(findElement.method('foo', of: 'A')),
+    );
+  }
+
+  void test_getMember_() async {
     addTestFile('''
 abstract class I1 {
   void f(int i);
 }
+
 abstract class I2 {
   void f(Object o);
 }
+
 abstract class C implements I1, I2 {}
 ''');
     await resolveTestFile();
-    ClassElement c = findElement.class_('C');
-    FunctionType memberType =
-        manager.getMember(c.type, new Name(c.library.source.uri, 'f'));
-    expect(memberType, isNotNull);
-    expect(memberType.parameters, hasLength(1));
-    DartType parameterType = memberType.parameters[0].type;
-    expect(parameterType.name, 'Object');
+
+    var memberType = manager.getMember(
+      findElement.class_('C').type,
+      new Name(null, 'f'),
+    );
+    assertElementTypeString(memberType, '(Object) → void');
+  }
+
+  test_preferLatest_mixin() async {
+    addTestFile('''
+class A {
+  void foo() {}
+}
+
+mixin M1 {
+  void foo() {}
+}
+
+mixin M2 {
+  void foo() {}
+}
+
+abstract class I {
+  void foo();
+}
+
+class X extends A with M1, M2 implements I {}
+''');
+    await resolveTestFile();
+
+    var member = manager.getMember(
+      findElement.class_('X').type,
+      new Name(null, 'foo'),
+    );
+    expect(member.element, findElement.method('foo', of: 'M2'));
+  }
+
+  test_preferLatest_superclass() async {
+    addTestFile('''
+class A {
+  void foo() {}
+}
+
+class B extends A {
+  void foo() {}
+}
+
+abstract class I {
+  void foo();
+}
+
+class X extends B implements I {}
+''');
+    await resolveTestFile();
+
+    var member = manager.getMember(
+      findElement.class_('X').type,
+      new Name(null, 'foo'),
+    );
+    expect(member.element, findElement.method('foo', of: 'B'));
+  }
+
+  test_preferLatest_this() async {
+    addTestFile('''
+class A {
+  void foo() {}
+}
+
+abstract class I {
+  void foo();
+}
+
+class X extends A implements I {
+  void foo() {}
+}
+''');
+    await resolveTestFile();
+
+    var member = manager.getMember(
+      findElement.class_('X').type,
+      new Name(null, 'foo'),
+    );
+    expect(member.element, findElement.method('foo', of: 'X'));
+  }
+
+  ExecutableElement _getInherited(String className, String name) {
+    var type = findElement.class_(className).type;
+    return manager.getInherited(type, new Name(null, name)).element;
   }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/class_test.dart b/pkg/analyzer/test/src/dart/resolution/class_test.dart
index a0cc4ee..f825033 100644
--- a/pkg/analyzer/test/src/dart/resolution/class_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/class_test.dart
@@ -96,33 +96,6 @@
     assertElement(findNode.simple('foo; // ref'), findElement.method('foo'));
   }
 
-  test_abstractSuperMemberReference_noSuchMethod() async {
-    setAnalysisOptions(enableSuperMixins: true);
-    addTestFile('''
-class A {
-  void foo();
-  noSuchMethod(im) {}
-}
-
-abstract class B {
-  void foo();
-  noSuchMethod(im) {}
-}
-
-class C extends A with B {
-  void bar() {
-    super.foo(); // ref
-  }
-}
-''');
-    await resolveTestFile();
-    assertTestErrors([CompileTimeErrorCode.ABSTRACT_SUPER_MEMBER_REFERENCE]);
-    assertElement(
-      findNode.simple('foo(); // ref'),
-      findElement.method('foo', of: 'B'),
-    );
-  }
-
   test_abstractSuperMemberReference_OK_mixinHasConcrete2_method() async {
     addTestFile('''
 class A {
@@ -1291,6 +1264,145 @@
     expect(method.isStatic, isTrue);
   }
 
+  test_error_mismatchedGetterAndSetterTypes_class() async {
+    addTestFile(r'''
+class C {
+  int get foo => 0;
+  set foo(String _) {}
+}
+''');
+    await resolveTestFile();
+    assertTestErrors([
+      StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
+    ]);
+  }
+
+  test_error_mismatchedGetterAndSetterTypes_interfaces() async {
+    addTestFile(r'''
+class A {
+  int get foo {
+    return 0;
+  }
+}
+
+class B {
+  set foo(String _) {}
+}
+
+abstract class X implements A, B {}
+''');
+    await resolveTestFile();
+    assertTestErrors([
+      StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
+    ]);
+  }
+
+  test_error_mismatchedGetterAndSetterTypes_OK_private_getter() async {
+    newFile('/test/lib/a.dart', content: r'''
+class A {
+  int get _foo => 0;
+}
+''');
+    addTestFile(r'''
+import 'a.dart';
+
+class B extends A {
+  set _foo(String _) {}
+}
+''');
+    await resolveTestFile();
+    assertNoTestErrors();
+  }
+
+  test_error_mismatchedGetterAndSetterTypes_OK_private_interfaces() async {
+    newFile('/test/lib/a.dart', content: r'''
+class A {
+  int get _foo => 0;
+}
+''');
+    newFile('/test/lib/b.dart', content: r'''
+class B {
+  set _foo(String _) {}
+}
+''');
+    addTestFile(r'''
+import 'a.dart';
+import 'b.dart';
+
+class X implements A, B {}
+''');
+    await resolveTestFile();
+    assertNoTestErrors();
+  }
+
+  test_error_mismatchedGetterAndSetterTypes_OK_private_interfaces2() async {
+    newFile('/test/lib/a.dart', content: r'''
+class A {
+  int get _foo => 0;
+}
+
+class B {
+  set _foo(String _) {}
+}
+''');
+    addTestFile(r'''
+import 'a.dart';
+
+class X implements A, B {}
+''');
+    await resolveTestFile();
+    assertNoTestErrors();
+  }
+
+  test_error_mismatchedGetterAndSetterTypes_OK_private_setter() async {
+    newFile('/test/lib/a.dart', content: r'''
+class A {
+  set _foo(String _) {}
+}
+''');
+    addTestFile(r'''
+import 'a.dart';
+
+class B extends A {
+  int get _foo => 0;
+}
+''');
+    await resolveTestFile();
+    assertNoTestErrors();
+  }
+
+  test_error_mismatchedGetterAndSetterTypes_superGetter() async {
+    addTestFile(r'''
+class A {
+  int get foo => 0;
+}
+
+class B extends A {
+  set foo(String _) {}
+}
+''');
+    await resolveTestFile();
+    assertTestErrors([
+      StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
+    ]);
+  }
+
+  test_error_mismatchedGetterAndSetterTypes_superSetter() async {
+    addTestFile(r'''
+class A {
+  set foo(String _) {}
+}
+
+class B extends A {
+  int get foo => 0;
+}
+''');
+    await resolveTestFile();
+    assertTestErrors([
+      StaticWarningCode.MISMATCHED_GETTER_AND_SETTER_TYPES,
+    ]);
+  }
+
   test_inconsistentInheritance_parameterType() async {
     addTestFile(r'''
 abstract class A {
@@ -1371,62 +1483,6 @@
     ]);
   }
 
-  test_mixinInference_conflictingSubstitution() async {
-    setAnalysisOptions(enableSuperMixins: true);
-    addTestFile('''
-abstract class A<T> {}
-class M<T> extends A<Map<T, T>> {}
-class C extends A<Map<int, String>> with M {}
-''');
-    await resolveTestFile();
-    assertTestErrors([
-      CompileTimeErrorCode.MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION,
-      CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES
-    ]);
-  }
-
-  test_mixinInference_doNotIgnorePreviousExplicitMixins() async {
-    setAnalysisOptions(enableSuperMixins: true);
-    addTestFile('''
-class A extends Object with B<String>, C {}
-class B<T> {}
-class C<T> extends B<T> {}
-''');
-    await resolveTestFile();
-    assertNoTestErrors();
-    var mixins = result.unit.declaredElement.getType('A').mixins;
-    expect(mixins[1].toString(), 'C<String>');
-  }
-
-  test_mixinInference_impossibleSubstitution() async {
-    setAnalysisOptions(enableSuperMixins: true);
-    addTestFile('''
-abstract class A<T> {}
-class M<T> extends A<Map<T, T>> {}
-class C extends A<List<int>> with M {}
-''');
-    await resolveTestFile();
-    assertTestErrors([
-      CompileTimeErrorCode.MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION,
-      CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES
-    ]);
-  }
-
-  test_mixinInference_noMatchingClass_constraintSatisfiedByImplementsClause() async {
-    setAnalysisOptions(enableSuperMixins: true);
-    addTestFile('''
-abstract class A<T> {}
-class B {}
-class M<T> extends A<T> {}
-class C extends Object with M implements A<B> {}
-''');
-    await resolveTestFile();
-    assertTestErrors([
-      CompileTimeErrorCode.MIXIN_INFERENCE_NO_MATCHING_CLASS,
-      CompileTimeErrorCode.CONFLICTING_GENERIC_INTERFACES,
-    ]);
-  }
-
   test_recursiveInterfaceInheritance_extends() async {
     addTestFile(r'''
 class A extends B {}
@@ -1666,25 +1722,4 @@
   test_conflictingGenericInterfaces_viaMixin() {
     return super.test_conflictingGenericInterfaces_viaMixin();
   }
-
-  @failingTest
-  test_mixinInference_conflictingSubstitution() {
-    return super.test_mixinInference_conflictingSubstitution();
-  }
-
-  @failingTest
-  test_mixinInference_doNotIgnorePreviousExplicitMixins() {
-    return super.test_mixinInference_doNotIgnorePreviousExplicitMixins();
-  }
-
-  @failingTest
-  test_mixinInference_impossibleSubstitution() {
-    return super.test_mixinInference_impossibleSubstitution();
-  }
-
-  @failingTest
-  test_mixinInference_noMatchingClass_constraintSatisfiedByImplementsClause() {
-    return super
-        .test_mixinInference_noMatchingClass_constraintSatisfiedByImplementsClause();
-  }
 }
diff --git a/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart b/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart
index 1ad3cfa..fb034da 100644
--- a/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/driver_resolution.dart
@@ -41,15 +41,6 @@
     );
   }
 
-  @override
-  void setAnalysisOptions({bool enableSuperMixins}) {
-    var analysisOptions = new AnalysisOptionsImpl();
-    if (enableSuperMixins != null) {
-      analysisOptions.enableSuperMixins = enableSuperMixins;
-    }
-    driver.configure(analysisOptions: analysisOptions);
-  }
-
   void setUp() {
     sdk = new MockSdk(resourceProvider: resourceProvider);
     logger = new PerformanceLog(logBuffer);
diff --git a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
index a9896de..9594336 100644
--- a/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/instance_creation_test.dart
@@ -21,6 +21,63 @@
     with InstanceCreationResolutionMixin {}
 
 abstract class InstanceCreationResolutionMixin implements ResolutionTest {
+  test_error_wrongNumberOfTypeArgumentsConstructor_explicitNew() async {
+    addTestFile(r'''
+class Foo<X> {
+  Foo.bar();
+}
+
+main() {
+  new Foo.bar<int>();
+}
+''');
+    await resolveTestFile();
+    assertTestErrors([
+      StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
+    ]);
+
+    // TODO(brianwilkerson) Test this more carefully after we can re-write the
+    // AST to reflect the expected structure.
+//    var creation = findNode.instanceCreation('Foo.bar<int>');
+//    assertInstanceCreation(
+//      creation,
+//      findElement.class_('Foo'),
+//      'Foo',
+//      constructorName: 'bar',
+//    );
+  }
+
+  test_error_wrongNumberOfTypeArgumentsConstructor_explicitNew_prefix() async {
+    newFile('/test/lib/a.dart', content: '''
+class Foo<X> {
+  Foo.bar();
+}
+''');
+    addTestFile('''
+import 'a.dart' as p;
+
+main() {
+  new p.Foo.bar<int>();
+}
+''');
+    await resolveTestFile();
+    assertTestErrors([
+      StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR,
+    ]);
+
+    // TODO(brianwilkerson) Test this more carefully after we can re-write the
+    // AST to reflect the expected structure.
+//    var creation = findNode.instanceCreation('Foo.bar<int>');
+//    var import = findElement.import('package:test/a.dart');
+//    assertInstanceCreation(
+//      creation,
+//      import.importedLibrary.getType('Foo'),
+//      'Foo',
+//      constructorName: 'bar',
+//      expectedPrefix: import.prefix,
+//    );
+  }
+
   test_error_wrongNumberOfTypeArgumentsConstructor_implicitNew() async {
     addTestFile(r'''
 class Foo<X> {
@@ -40,7 +97,7 @@
     assertInstanceCreation(
       creation,
       findElement.class_('Foo'),
-      'Foo<int>',
+      'Foo<dynamic>',
       constructorName: 'bar',
       expectedConstructorMember: true,
     );
diff --git a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
index df7494a..ca8630a 100644
--- a/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
+++ b/pkg/analyzer/test/src/dart/resolution/mixin_test.dart
@@ -902,6 +902,24 @@
     ]);
   }
 
+  test_error_mixinApplicationConcreteSuperInvokedMemberType_OK_method_overriddenInMixin() async {
+    addTestFile(r'''
+class A<T> {
+  void remove(T x) {}
+}
+
+mixin M<U> on A<U> {
+  void remove(Object x) {
+    super.remove(x as U);
+  }
+}
+
+class X<T> = A<T> with M<T>;
+''');
+    await resolveTestFile();
+    assertNoTestErrors();
+  }
+
   test_error_mixinApplicationNoConcreteSuperInvokedMember_getter() async {
     addTestFile(r'''
 abstract class A {
diff --git a/pkg/analyzer/test/src/dart/resolution/resolution.dart b/pkg/analyzer/test/src/dart/resolution/resolution.dart
index 5f220e8..f6fdc6f 100644
--- a/pkg/analyzer/test/src/dart/resolution/resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/resolution.dart
@@ -61,6 +61,16 @@
     newFile('/test/lib/test.dart', content: content);
   }
 
+  void assertConstructorElement(
+      ConstructorElement expected, ConstructorElement actual) {
+    if (expected is ConstructorMember && actual is ConstructorMember) {
+      expect(expected.baseElement, same(actual.baseElement));
+      // TODO(brianwilkerson) Compare the type arguments of the two members.
+    } else {
+      expect(expected, same(actual));
+    }
+  }
+
   void assertConstructors(ClassElement class_, List<String> expected) {
     expect(
       class_.constructors.map((c) => c.toString()).toList(),
@@ -182,9 +192,12 @@
 
     var actualConstructorElement = getNodeElement(creation);
     if (creation.constructorName.name != null) {
-      expect(
+      // TODO(brianwilkerson) This used to enforce that the two elements were
+      // the same object, but the changes to the AstRewriteVisitor broke that.
+      // We should explore re-establishing this restriction for performance.
+      assertConstructorElement(
         creation.constructorName.name.staticElement,
-        same(actualConstructorElement),
+        actualConstructorElement,
       );
     }
 
@@ -313,8 +326,6 @@
     findElement = new FindElement(result.unit);
   }
 
-  void setAnalysisOptions({bool enableSuperMixins});
-
   Element _unwrapHandle(Element element) {
     if (element is ElementHandle && element is! Member) {
       return element.actualElement;
diff --git a/pkg/analyzer/test/src/dart/resolution/task_resolution.dart b/pkg/analyzer/test/src/dart/resolution/task_resolution.dart
index 3bfd858..7e02ab4 100644
--- a/pkg/analyzer/test/src/dart/resolution/task_resolution.dart
+++ b/pkg/analyzer/test/src/dart/resolution/task_resolution.dart
@@ -39,15 +39,6 @@
     return new TestAnalysisResult(path, content, unit, errors);
   }
 
-  @override
-  void setAnalysisOptions({bool enableSuperMixins}) {
-    var analysisOptions = new AnalysisOptionsImpl();
-    if (enableSuperMixins != null) {
-      analysisOptions.enableSuperMixins = enableSuperMixins;
-    }
-    analysisContext.analysisOptions = analysisOptions;
-  }
-
   void setUp() {
     sdk = new MockSdk(resourceProvider: resourceProvider);
 
diff --git a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
index f0e1f65..cfc0540 100644
--- a/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
+++ b/pkg/analyzer/test/src/dart/sdk/sdk_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.generated.sdk_test;
-
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/context/builder.dart' show EmbedderYamlLocator;
 import 'package:analyzer/src/dart/sdk/sdk.dart';
diff --git a/pkg/analyzer/test/src/dart/sdk/test_all.dart b/pkg/analyzer/test/src/dart/sdk/test_all.dart
index cb044fd..eda411d 100644
--- a/pkg/analyzer/test/src/dart/sdk/test_all.dart
+++ b/pkg/analyzer/test/src/dart/sdk/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.src.dart.sdk.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'patch_test.dart' as patch_test;
diff --git a/pkg/analyzer/test/src/dart/test_all.dart b/pkg/analyzer/test/src/dart/test_all.dart
index 7855e3e..6d03856 100644
--- a/pkg/analyzer/test/src/dart/test_all.dart
+++ b/pkg/analyzer/test/src/dart/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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 analyzer.test.src.dart.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'analysis/test_all.dart' as analysis;
diff --git a/pkg/analyzer/test/src/fasta/recovery/invalid_code_test.dart b/pkg/analyzer/test/src/fasta/recovery/invalid_code_test.dart
index 107fd21..b53afa1 100644
--- a/pkg/analyzer/test/src/fasta/recovery/invalid_code_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/invalid_code_test.dart
@@ -40,7 +40,7 @@
 f() {
   return <g('')>[0, 1, 2];
 }
-''', [ParserErrorCode.UNEXPECTED_TOKEN], '''
+''', [ParserErrorCode.EXPECTED_TOKEN], '''
 f() {
   return <g>[0, 1, 2];
 }
@@ -53,7 +53,7 @@
 f() {
   return <test('', (){})>[0, 1, 2];
 }
-''', [ParserErrorCode.UNEXPECTED_TOKEN], '''
+''', [ParserErrorCode.EXPECTED_TOKEN], '''
 f() {
   return <test>[0, 1, 2];
 }
diff --git a/pkg/analyzer/test/src/fasta/recovery/paired_tokens_test.dart b/pkg/analyzer/test/src/fasta/recovery/paired_tokens_test.dart
index edc6d29..50e04a7 100644
--- a/pkg/analyzer/test/src/fasta/recovery/paired_tokens_test.dart
+++ b/pkg/analyzer/test/src/fasta/recovery/paired_tokens_test.dart
@@ -41,7 +41,10 @@
   void test_typeParameters_funct() {
     testRecovery('''
 f<T extends Function()() => null;
-''', [ParserErrorCode.EXPECTED_TOKEN], '''
+''', [
+      ParserErrorCode.EXPECTED_TOKEN,
+      ParserErrorCode.MISSING_FUNCTION_PARAMETERS
+    ], '''
 f<T extends Function()>() => null;
 ''');
   }
@@ -49,7 +52,10 @@
   void test_typeParameters_funct2() {
     testRecovery('''
 f<T extends Function<X>()() => null;
-''', [ParserErrorCode.EXPECTED_TOKEN], '''
+''', [
+      ParserErrorCode.EXPECTED_TOKEN,
+      ParserErrorCode.MISSING_FUNCTION_PARAMETERS
+    ], '''
 f<T extends Function<X>()>() => null;
 ''');
   }
@@ -133,7 +139,10 @@
   void test_typeParameters_last() {
     testRecovery('''
 f<T() => null;
-''', [ParserErrorCode.EXPECTED_TOKEN], '''
+''', [
+      ParserErrorCode.EXPECTED_TOKEN,
+      ParserErrorCode.MISSING_FUNCTION_PARAMETERS
+    ], '''
 f<T>() => null;
 ''');
   }
@@ -141,7 +150,10 @@
   void test_typeParameters_outer_last() {
     testRecovery('''
 f<T extends List<int>() => null;
-''', [ParserErrorCode.EXPECTED_TOKEN], '''
+''', [
+      ParserErrorCode.EXPECTED_TOKEN,
+      ParserErrorCode.MISSING_FUNCTION_PARAMETERS
+    ], '''
 f<T extends List<int>>() => null;
 ''');
   }
diff --git a/pkg/analyzer/test/src/source/test_all.dart b/pkg/analyzer/test/src/source/test_all.dart
index 5b7a464..26ea133 100644
--- a/pkg/analyzer/test/src/source/test_all.dart
+++ b/pkg/analyzer/test/src/source/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.src.source.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'source_resource_test.dart' as source_resource_test;
diff --git a/pkg/analyzer/test/src/summary/element_text.dart b/pkg/analyzer/test/src/summary/element_text.dart
index d913441..2870078 100644
--- a/pkg/analyzer/test/src/summary/element_text.dart
+++ b/pkg/analyzer/test/src/summary/element_text.dart
@@ -170,6 +170,7 @@
     writeMetadata(e, '', '\n');
 
     writeIf(e.isAbstract && !e.isMixin, 'abstract ');
+    writeIf(!e.isSimplyBounded, 'notSimplyBounded ');
 
     if (e.isEnum) {
       buffer.write('enum ');
@@ -507,6 +508,7 @@
   void writeFunctionTypeAliasElement(FunctionTypeAliasElement e) {
     writeDocumentation(e);
     writeMetadata(e, '', '\n');
+    writeIf(!e.isSimplyBounded, 'notSimplyBounded ');
 
     if (e is GenericTypeAliasElement) {
       buffer.write('typedef ');
diff --git a/pkg/analyzer/test/src/summary/in_summary_source_test.dart b/pkg/analyzer/test/src/summary/in_summary_source_test.dart
index 486887e..c6d5879 100644
--- a/pkg/analyzer/test/src/summary/in_summary_source_test.dart
+++ b/pkg/analyzer/test/src/summary/in_summary_source_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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 analyzer.test.src.summary.in_summary_source_test;
-
 import 'package:analyzer/file_system/physical_file_system.dart';
 import 'package:analyzer/src/generated/source_io.dart';
 import 'package:analyzer/src/summary/format.dart';
diff --git a/pkg/analyzer/test/src/summary/linker_test.dart b/pkg/analyzer/test/src/summary/linker_test.dart
index 3622597..4a6136f 100644
--- a/pkg/analyzer/test/src/summary/linker_test.dart
+++ b/pkg/analyzer/test/src/summary/linker_test.dart
@@ -443,7 +443,6 @@
     expect(fType.parameters[0].type.toString(), 'int');
   }
 
-  @failingTest
   void test_inferredType_parameter_genericFunctionType_asTypeArgument() {
     var bundle = createPackageBundle('''
 class A<T> {
@@ -719,6 +718,63 @@
     expect(type2.returnType.toString(), 'num');
   }
 
+  void test_isSimplyBounded_class_in_other_bundle() {
+    var bundle = createPackageBundle('''
+class C<T extends C> {} // Not simply bounded
+class D<T extends D<Null>> {} // Simply bounded
+''', path: '/a.dart');
+    addBundle('/a.ds', bundle);
+
+    createLinker('''
+import 'a.dart';
+class A<T extends C> {} // Not simply bounded
+class B<T extends D> {} // Simply bounded
+''');
+    LibraryElementForLink library = linker.getLibrary(testDartUri);
+    library.libraryCycleForLink.ensureLinked();
+
+    expect(library.getContainedName('A').isSimplyBounded, false);
+    expect(library.getContainedName('B').isSimplyBounded, true);
+  }
+
+  void test_isSimplyBounded_new_typedef_in_other_bundle() {
+    var bundle = createPackageBundle('''
+typedef C<T extends C> = void Function(T x); // Not simply bounded
+typedef D<T extends D<Null>> = void Function(T x); // Simply bounded
+''', path: '/a.dart');
+    addBundle('/a.ds', bundle);
+
+    createLinker('''
+import 'a.dart';
+class A<T extends C> {} // Not simply bounded
+class B<T extends D> {} // Simply bounded
+''');
+    LibraryElementForLink library = linker.getLibrary(testDartUri);
+    library.libraryCycleForLink.ensureLinked();
+
+    expect(library.getContainedName('A').isSimplyBounded, false);
+    expect(library.getContainedName('B').isSimplyBounded, true);
+  }
+
+  void test_isSimplyBounded_old_typedef_in_other_bundle() {
+    var bundle = createPackageBundle('''
+typedef void C<T extends C>(T x); // Not simply bounded
+typedef void D<T extends D<Null>>(T x); // Simply bounded
+''', path: '/a.dart');
+    addBundle('/a.ds', bundle);
+
+    createLinker('''
+import 'a.dart';
+class A<T extends C> {} // Not simply bounded
+class B<T extends D> {} // Simply bounded
+''');
+    LibraryElementForLink library = linker.getLibrary(testDartUri);
+    library.libraryCycleForLink.ensureLinked();
+
+    expect(library.getContainedName('A').isSimplyBounded, false);
+    expect(library.getContainedName('B').isSimplyBounded, true);
+  }
+
   void test_leastUpperBound_functionAndClass() {
     createLinker('''
 class C {}
diff --git a/pkg/analyzer/test/src/summary/resynthesize_common.dart b/pkg/analyzer/test/src/summary/resynthesize_common.dart
index e8ce239..adbbdba 100644
--- a/pkg/analyzer/test/src/summary/resynthesize_common.dart
+++ b/pkg/analyzer/test/src/summary/resynthesize_common.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 test.src.serialization.elements_test;
-
 import 'dart:async';
 
 import 'package:analyzer/dart/analysis/declared_variables.dart';
@@ -1227,7 +1225,7 @@
   test_class_type_parameters_f_bound_complex() async {
     var library = await checkLibrary('class C<T extends List<U>, U> {}');
     checkElementText(library, r'''
-class C<T extends List<U>, U> {
+notSimplyBounded class C<T extends List<U>, U> {
 }
 ''');
   }
@@ -1235,7 +1233,7 @@
   test_class_type_parameters_f_bound_simple() async {
     var library = await checkLibrary('class C<T extends U, U> {}');
     checkElementText(library, r'''
-class C<T extends U, U> {
+notSimplyBounded class C<T extends U, U> {
 }
 ''');
   }
@@ -5799,7 +5797,7 @@
 C c;
 ''');
     checkElementText(library, r'''
-class C<S extends num, T extends C<S, T>> {
+notSimplyBounded class C<S extends num, T extends C<S, T>> {
 }
 C<num, C<num, dynamic>> c;
 ''');
@@ -5815,7 +5813,7 @@
 }
 ''');
     checkElementText(library, r'''
-class C<T extends C<T>> {
+notSimplyBounded class C<T extends C<T>> {
 }
 class B {
   C<C<dynamic>> c3;
@@ -5831,7 +5829,7 @@
 C c;
 ''');
     checkElementText(library, r'''
-class C<T extends C<T, U>, U extends num> {
+notSimplyBounded class C<T extends C<T, U>, U extends num> {
 }
 C<C<dynamic, num>, num> c;
 ''');
@@ -8246,7 +8244,7 @@
     var library = await checkLibrary('typedef void F<T extends F>();');
     // Typedefs cannot reference themselves.
     checkElementText(library, r'''
-typedef F<T extends () → void> = void Function();
+notSimplyBounded typedef F<T extends () → void> = void Function();
 ''');
   }
 
@@ -8255,21 +8253,29 @@
     var library = await checkLibrary('typedef void F<T extends List<F>>();');
     // Typedefs cannot reference themselves.
     checkElementText(library, r'''
-typedef F<T extends List<() → void>> = void Function();
+notSimplyBounded typedef F<T extends List<() → void>> = void Function();
 ''');
   }
 
   test_typedef_type_parameters_f_bound_complex() async {
     var library = await checkLibrary('typedef U F<T extends List<U>, U>(T t);');
     checkElementText(library, r'''
-typedef F<T extends List<U>, U> = U Function(T t);
+notSimplyBounded typedef F<T extends List<U>, U> = U Function(T t);
 ''');
   }
 
   test_typedef_type_parameters_f_bound_simple() async {
     var library = await checkLibrary('typedef U F<T extends U, U>(T t);');
     checkElementText(library, r'''
-typedef F<T extends U, U> = U Function(T t);
+notSimplyBounded typedef F<T extends U, U> = U Function(T t);
+''');
+  }
+
+  test_typedef_type_parameters_f_bound_simple_new_syntax() async {
+    var library =
+        await checkLibrary('typedef F<T extends U, U> = U Function(T t);');
+    checkElementText(library, r'''
+notSimplyBounded typedef F<T extends U, U> = U Function(T t);
 ''');
   }
 
diff --git a/pkg/analyzer/test/src/summary/summarize_ast_one_phase_test.dart b/pkg/analyzer/test/src/summary/summarize_ast_one_phase_test.dart
deleted file mode 100644
index 7aa8ea8..0000000
--- a/pkg/analyzer/test/src/summary/summarize_ast_one_phase_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// 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:test_reflective_loader/test_reflective_loader.dart';
-
-import 'summary_common.dart';
-import 'test_strategies.dart';
-
-main() {
-  defineReflectiveSuite(() {
-    defineReflectiveTests(SummarizeAstOnePhaseTest);
-  });
-}
-
-@reflectiveTest
-class SummarizeAstOnePhaseTest extends SummaryBlackBoxTestStrategyOnePhase
-    with SummaryTestCases {
-  @override
-  @failingTest
-  test_closure_executable_with_bottom_return_type() {
-    super.test_closure_executable_with_bottom_return_type();
-  }
-
-  @override
-  @failingTest
-  test_closure_executable_with_imported_return_type() {
-    super.test_closure_executable_with_imported_return_type();
-  }
-
-  @override
-  @failingTest
-  test_closure_executable_with_return_type_from_closure() {
-    super.test_closure_executable_with_return_type_from_closure();
-  }
-
-  @override
-  @failingTest
-  test_closure_executable_with_unimported_return_type() {
-    super.test_closure_executable_with_unimported_return_type();
-  }
-
-  @override
-  @failingTest
-  test_initializer_executable_with_bottom_return_type() {
-    super.test_initializer_executable_with_bottom_return_type();
-  }
-
-  @override
-  @failingTest
-  test_initializer_executable_with_imported_return_type() {
-    super.test_initializer_executable_with_imported_return_type();
-  }
-
-  @override
-  @failingTest
-  test_initializer_executable_with_return_type_from_closure() {
-    super.test_initializer_executable_with_return_type_from_closure();
-  }
-
-  @override
-  @failingTest
-  test_initializer_executable_with_return_type_from_closure_field() {
-    super.test_initializer_executable_with_return_type_from_closure_field();
-  }
-
-  @override
-  @failingTest
-  test_initializer_executable_with_unimported_return_type() {
-    super.test_initializer_executable_with_unimported_return_type();
-  }
-
-  @override
-  @failingTest
-  test_syntheticFunctionType_genericClosure() {
-    super.test_syntheticFunctionType_genericClosure();
-  }
-
-  @override
-  @failingTest
-  test_syntheticFunctionType_inGenericClass() {
-    super.test_syntheticFunctionType_inGenericClass();
-  }
-}
diff --git a/pkg/analyzer/test/src/summary/summary_common.dart b/pkg/analyzer/test/src/summary/summary_common.dart
index bd6427c..3f1e604 100644
--- a/pkg/analyzer/test/src/summary/summary_common.dart
+++ b/pkg/analyzer/test/src/summary/summary_common.dart
@@ -1120,6 +1120,31 @@
     expect(cls.executables, isEmpty);
   }
 
+  test_class_alias_notSimplyBoundedSlot() {
+    var cls = serializeClassText(
+        'class C<T extends C> = D with E; class D {} class E {}');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_alias_notSimplyBoundedSlot_simple_because_non_generic() {
+    // If no type parameters are specified, then the class is simply bounded, so
+    // there is no reason to assign it a slot.
+    var cls = serializeClassText('class C = D with E; class D {} class E {}');
+    expect(cls.notSimplyBoundedSlot, 0);
+  }
+
+  test_class_alias_notSimplyBoundedSlot_simple_by_syntax() {
+    // If no bounds are specified, then the class is simply bounded by sintax
+    // alone, so there is no reason to assign it a slot.
+    var cls =
+        serializeClassText('class C<T> = D with E; class D {} class E {}');
+    expect(cls.notSimplyBoundedSlot, 0);
+  }
+
   test_class_alias_private() {
     serializeClassText('class _C = _D with _E; class _D {} class _E {}',
         className: '_C');
@@ -1361,6 +1386,137 @@
     expect(cls.isMixinApplication, false);
   }
 
+  test_class_notSimplyBounded_circularity_via_typedef() {
+    // C's type parameter T is not simply bounded because its bound, F, expands
+    // to `dynamic F(C)`, which refers to C.
+    UnlinkedClass cls =
+        serializeClassText('class C<T extends F> {} typedef F(C value);');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_notSimplyBounded_circularity_with_type_params() {
+    // C's type parameter T is simply bounded because even though it refers to
+    // C, it specifies a bound.
+    UnlinkedClass cls = serializeClassText('class C<T extends C<dynamic>> {}');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(cls.notSimplyBoundedSlot)));
+    }
+  }
+
+  test_class_notSimplyBounded_dependency_with_type_params() {
+    // C's type parameter T is simply bounded because even though it refers to
+    // non-simply-bounded type D, it specifies a bound.
+    UnlinkedClass cls = serializeClassText(
+        'class C<T extends D<dynamic>> {} class D<T extends D<T>> {}');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(cls.notSimplyBoundedSlot)));
+    }
+  }
+
+  test_class_notSimplyBounded_function_typed_bound_complex_via_parameter_type() {
+    UnlinkedClass cls =
+        serializeClassText('class C<T extends void Function(T)> {}');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_notSimplyBounded_function_typed_bound_complex_via_return_type() {
+    UnlinkedClass cls =
+        serializeClassText('class C<T extends T Function()> {}');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_notSimplyBounded_function_typed_bound_simple() {
+    UnlinkedClass cls =
+        serializeClassText('class C<T extends void Function()> {}');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(cls.notSimplyBoundedSlot)));
+    }
+  }
+
+  test_class_notSimplyBounded_refers_to_circular_typedef() {
+    // C's type parameter T has a bound of F, which is a circular typedef.  This
+    // is illegal in Dart, but we need to make sure it doesn't lead to a crash
+    // or infinite loop.
+    UnlinkedClass cls = serializeClassText(
+        'class C<T extends F> {} typedef F(G value); typedef G(F value);');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+  }
+
+  test_class_notSimplyBoundedSlot() {
+    var cls = serializeClassText('class C<T extends C> {}');
+    expect(cls.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_notSimplyBoundedSlot_complex_by_cycle() {
+    var cls =
+        serializeClassText('class C<T extends D> {} class D<T extends C> {}');
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_notSimplyBoundedSlot_complex_by_reference_to_cycle() {
+    var cls =
+        serializeClassText('class C<T extends D> {} class D<T extends D> {}');
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_notSimplyBoundedSlot_complex_by_use_of_parameter() {
+    var cls = serializeClassText('class C<T extends D<T>> {} class D<T> {}');
+    if (!skipFullyLinkedData) {
+      expect(
+          linked.units[0].notSimplyBounded, contains(cls.notSimplyBoundedSlot));
+    }
+  }
+
+  test_class_notSimplyBoundedSlot_simple_because_non_generic() {
+    // If no type parameters are specified, then the class is simply bounded, so
+    // there is no reason to assign it a slot.
+    var cls = serializeClassText('class C {}');
+    expect(cls.notSimplyBoundedSlot, 0);
+  }
+
+  test_class_notSimplyBoundedSlot_simple_by_lack_of_cycles() {
+    var cls = serializeClassText('class C<T extends D> {} class D<T> {}');
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(cls.notSimplyBoundedSlot)));
+    }
+  }
+
+  test_class_notSimplyBoundedSlot_simple_by_syntax() {
+    // If no bounds are specified, then the class is simply bounded by syntax
+    // alone, so there is no reason to assign it a slot.
+    var cls = serializeClassText('class C<T> {}');
+    expect(cls.notSimplyBoundedSlot, 0);
+  }
+
   test_class_private() {
     serializeClassText('class _C {}', className: '_C');
     expect(unlinkedUnits[0].publicNamespace.names, isEmpty);
@@ -9065,6 +9221,69 @@
     checkParamTypeRef(findParameter(parameters, 'y').type, 1);
   }
 
+  test_new_typedef_notSimplyBoundedSlot() {
+    var typedef =
+        serializeTypedefText('typedef F<T extends F> = void Function();');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          contains(typedef.notSimplyBoundedSlot));
+    }
+  }
+
+  test_new_typedef_notSimplyBoundedSlot_simple_no_bounds() {
+    // If no bounds are specified, then the typedef is simply bounded, however
+    // it still gets a slot because all typedefs are assigned a slot.
+    var typedef = serializeTypedefText('typedef F<T> = void Function();');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(typedef.notSimplyBoundedSlot)));
+    }
+  }
+
+  test_new_typedef_notSimplyBoundedSlot_simple_non_generic() {
+    // If no type parameters are specified, then the typedef is simply bounded,
+    // however it still gets a slot because all typedefs are assigned a slot.
+    var typedef = serializeTypedefText('typedef F = void Function();');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(typedef.notSimplyBoundedSlot)));
+    }
+  }
+
+  test_old_typedef_notSimplyBoundedSlot() {
+    var typedef = serializeTypedefText('typedef void F<T extends F>();');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          contains(typedef.notSimplyBoundedSlot));
+    }
+  }
+
+  test_old_typedef_notSimplyBoundedSlot_simple_because_non_generic() {
+    // If no type parameters are specified, then the typedef is simply bounded,
+    // however it still gets a slot because all typedefs are assigned a slot.
+    var typedef = serializeTypedefText('typedef void F();');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(typedef.notSimplyBoundedSlot)));
+    }
+  }
+
+  test_old_typedef_notSimplyBoundedSlot_simple_no_bounds() {
+    // If no bounds are specified, then the typedef is simply bounded, however
+    // it still gets a slot because all typedefs are assigned a slot.
+    var typedef = serializeTypedefText('typedef void F<T>();');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          isNot(contains(typedef.notSimplyBoundedSlot)));
+    }
+  }
+
   test_parameter_visibleRange_abstractMethod() {
     UnlinkedExecutable m = findExecutable('m',
         executables:
@@ -9759,6 +9978,66 @@
     expect(unlinkedUnits[0].publicNamespace.names[0].numTypeParameters, 0);
   }
 
+  test_typedef_notSimplyBounded_dependency_via_param_type_new_style_name_included() {
+    // F is considered "not simply bounded" because it expands to a type that
+    // refers to C, which is not simply bounded.
+    UnlinkedTypedef typedef = serializeTypedefText(
+        'typedef F = void Function(C c); class C<T extends C<T>> {}');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          contains(typedef.notSimplyBoundedSlot));
+    }
+  }
+
+  test_typedef_notSimplyBounded_dependency_via_param_type_new_style_name_omitted() {
+    // F is considered "not simply bounded" because it expands to a type that
+    // refers to C, which is not simply bounded.
+    UnlinkedTypedef typedef = serializeTypedefText(
+        'typedef F = void Function(C); class C<T extends C<T>> {}');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          contains(typedef.notSimplyBoundedSlot));
+    }
+  }
+
+  test_typedef_notSimplyBounded_dependency_via_param_type_old_style() {
+    // F is considered "not simply bounded" because it expands to a type that
+    // refers to C, which is not simply bounded.
+    UnlinkedTypedef typedef =
+        serializeTypedefText('typedef void F(C c); class C<T extends C<T>> {}');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          contains(typedef.notSimplyBoundedSlot));
+    }
+  }
+
+  test_typedef_notSimplyBounded_dependency_via_return_type_new_style() {
+    // F is considered "not simply bounded" because it expands to a type that
+    // refers to C, which is not simply bounded.
+    UnlinkedTypedef typedef = serializeTypedefText(
+        'typedef F = C Function(); class C<T extends C<T>> {}');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          contains(typedef.notSimplyBoundedSlot));
+    }
+  }
+
+  test_typedef_notSimplyBounded_dependency_via_return_type_old_style() {
+    // F is considered "not simply bounded" because it expands to a type that
+    // refers to C, which is not simply bounded.
+    UnlinkedTypedef typedef =
+        serializeTypedefText('typedef C F(); class C<T extends C<T>> {}');
+    expect(typedef.notSimplyBoundedSlot, isNot(0));
+    if (!skipFullyLinkedData) {
+      expect(linked.units[0].notSimplyBounded,
+          contains(typedef.notSimplyBoundedSlot));
+    }
+  }
+
   test_typedef_param_none() {
     UnlinkedTypedef type = serializeTypedefText('typedef F();');
     expect(type.parameters, isEmpty);
diff --git a/pkg/analyzer/test/src/summary/test_all.dart b/pkg/analyzer/test/src/summary/test_all.dart
index fd2f7a4..1ffc606 100644
--- a/pkg/analyzer/test/src/summary/test_all.dart
+++ b/pkg/analyzer/test/src/summary/test_all.dart
@@ -11,7 +11,6 @@
 import 'package_bundle_reader_test.dart' as package_bundle_reader_test;
 import 'prelinker_test.dart' as prelinker_test;
 import 'resynthesize_ast_test.dart' as resynthesize_ast_test;
-import 'summarize_ast_one_phase_test.dart' as summarize_ast_one_phase_test;
 import 'summarize_ast_strong_test.dart' as summarize_ast_strong_test;
 import 'top_level_inference_test.dart' as top_level_inference_test;
 
@@ -24,7 +23,6 @@
     package_bundle_reader_test.main();
     prelinker_test.main();
     resynthesize_ast_test.main();
-    summarize_ast_one_phase_test.main();
     summarize_ast_strong_test.main();
     top_level_inference_test.main();
   }, name: 'summary');
diff --git a/pkg/analyzer/test/src/summary/test_strategies.dart b/pkg/analyzer/test/src/summary/test_strategies.dart
index 8a5da25..03c020d 100644
--- a/pkg/analyzer/test/src/summary/test_strategies.dart
+++ b/pkg/analyzer/test/src/summary/test_strategies.dart
@@ -17,7 +17,6 @@
 import 'package:analyzer/src/summary/format.dart';
 import 'package:analyzer/src/summary/idl.dart';
 import 'package:analyzer/src/summary/link.dart';
-import 'package:analyzer/src/summary/one_phase.dart';
 import 'package:analyzer/src/summary/package_bundle_reader.dart';
 import 'package:analyzer/src/summary/prelink.dart';
 import 'package:analyzer/src/summary/summarize_ast.dart';
@@ -281,9 +280,20 @@
 /// The tests themselves can then be provided via mixin, allowing summaries to
 /// be tested in a variety of ways.
 abstract class SummaryBaseTestStrategy {
+  /// Add the given package bundle as a dependency so that it may be referenced
+  /// by the files under test.
+  void addBundle(String path, PackageBundle bundle);
+
   /// Add the given source file so that it may be referenced by the file under
   /// test.
   void addNamedSource(String filePath, String contents);
+
+  /// Link together the given file, along with any other files passed to
+  /// [addNamedSource], to form a package bundle.  Reset the state of the
+  /// buffers accumulated by [addNamedSource] and [addBundle] so that further
+  /// bundles can be created.
+  PackageBundleBuilder createPackageBundle(String text,
+      {String path: '/test.dart', String uri});
 }
 
 /// Abstract base class for black-box tests of summaries.
@@ -321,99 +331,6 @@
 }
 
 /// Implementation of [SummaryBlackBoxTestStrategy] that drives summary
-/// generation using the new one-phase API.
-class SummaryBlackBoxTestStrategyOnePhase
-    implements SummaryBlackBoxTestStrategy {
-  /// Information about the files to be summarized.
-  final _filesToSummarize = _FilesToLink<CompilationUnit>();
-
-  final _testUriString = absUri('/test.dart');
-
-  bool _allowMissingFiles = false;
-
-  @override
-  LinkedLibrary linked;
-
-  @override
-  List<UnlinkedUnit> unlinkedUnits;
-
-  SummaryBlackBoxTestStrategyOnePhase() {
-    // TODO(paulberry): cache the bundle?
-    _filesToSummarize.summaryDataStore
-        .addBundle(null, new MockSdk().getLinkedBundle());
-  }
-
-  @override
-  void set allowMissingFiles(bool value) {
-    _allowMissingFiles = value;
-  }
-
-  @override
-  bool get containsNonConstExprs => false;
-
-  @override
-  bool get skipFullyLinkedData => false;
-
-  @override
-  void addNamedSource(String filePath, String contents) {
-    _filesToSummarize.uriToUnit[absUri(filePath)] = _parseText(contents);
-  }
-
-  @override
-  void serializeLibraryText(String text, {bool allowErrors = false}) {
-    addNamedSource('/test.dart', text);
-    var assembler = PackageBundleAssembler();
-    summarize(_filesToSummarize.uriToUnit, _filesToSummarize.summaryDataStore,
-        assembler, (name) => null, _allowMissingFiles);
-    var result = assembler.assemble();
-    linked = _findLinkedLibrary(result, _testUriString);
-    unlinkedUnits =
-        _findUnlinkedUnits(result, _testUriString, _allowMissingFiles);
-  }
-
-  static LinkedLibrary _findLinkedLibrary(
-      PackageBundle bundle, String uriString) {
-    for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
-      if (bundle.linkedLibraryUris[i] == uriString) {
-        return bundle.linkedLibraries[i];
-      }
-    }
-    throw new StateError('LinkedLibrary $uriString not found in bundle');
-  }
-
-  static List<UnlinkedUnit> _findUnlinkedUnits(
-      PackageBundle bundle, String uriString, bool allowMissingFiles) {
-    var uriToUnlinkedUnit = <String, UnlinkedUnit>{};
-    for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
-      uriToUnlinkedUnit[bundle.unlinkedUnitUris[i]] = bundle.unlinkedUnits[i];
-    }
-    var unlinkedDefiningUnit = uriToUnlinkedUnit[uriString];
-    var unlinkedUnits = <UnlinkedUnit>[unlinkedDefiningUnit];
-    var definingUnitUri = Uri.parse(uriString);
-    for (String relativeUriStr in unlinkedDefiningUnit.publicNamespace.parts) {
-      Uri relativeUri;
-      try {
-        relativeUri = Uri.parse(relativeUriStr);
-      } on FormatException {
-        unlinkedUnits.add(new UnlinkedUnitBuilder());
-        continue;
-      }
-
-      UnlinkedUnit unit = uriToUnlinkedUnit[
-          resolveRelativeUri(definingUnitUri, relativeUri).toString()];
-      if (unit == null) {
-        if (!allowMissingFiles) {
-          fail('Test referred to unknown unit $relativeUriStr');
-        }
-      } else {
-        unlinkedUnits.add(unit);
-      }
-    }
-    return unlinkedUnits;
-  }
-}
-
-/// Implementation of [SummaryBlackBoxTestStrategy] that drives summary
 /// generation using the old two-phase API, and exercises the pre-linker only.
 class SummaryBlackBoxTestStrategyPrelink
     extends _SummaryBlackBoxTestStrategyTwoPhase
@@ -469,18 +386,7 @@
 
   LibraryElementInBuildUnit get testLibrary;
 
-  /// Add the given package bundle as a dependency so that it may be referenced
-  /// by the files under test.
-  void addBundle(String path, PackageBundle bundle);
-
   void createLinker(String text, {String path: '/test.dart'});
-
-  /// Link together the given file, along with any other files passed to
-  /// [addNamedSource], to form a package bundle.  Reset the state of the
-  /// buffers accumulated by [addNamedSource] and [addBundle] so that further
-  /// bundles can be created.
-  PackageBundleBuilder createPackageBundle(String text,
-      {String path: '/test.dart', String uri});
 }
 
 /// Implementation of [SummaryLinkerTestStrategy] that drives summary generation
@@ -504,11 +410,6 @@
   bool get _allowMissingFiles => false;
 
   @override
-  void addBundle(String path, PackageBundle bundle) {
-    _filesToLink.summaryDataStore.addBundle(path, bundle);
-  }
-
-  @override
   void createLinker(String text, {String path: '/test.dart'}) {
     _linkerInputs = _createLinkerInputs(text, path: path);
     Map<String, LinkedLibraryBuilder> linkedLibraries = setupForLink(
@@ -518,24 +419,6 @@
     linker = new Linker(linkedLibraries, _linkerInputs.getDependency,
         _linkerInputs.getUnit, null);
   }
-
-  @override
-  PackageBundleBuilder createPackageBundle(String text,
-      {String path: '/test.dart', String uri}) {
-    PackageBundleAssembler assembler = new PackageBundleAssembler();
-    _LinkerInputs linkerInputs =
-        _createLinkerInputs(text, path: path, uri: uri);
-    Map<String, LinkedLibraryBuilder> linkedLibraries = link(
-        linkerInputs.linkedLibraries,
-        linkerInputs.getDependency,
-        linkerInputs.getUnit,
-        linkerInputs.getDeclaredVariable);
-    linkedLibraries.forEach(assembler.addLinkedLibrary);
-    linkerInputs._uriToUnit.forEach((String uri, UnlinkedUnit unit) {
-      assembler.addUnlinkedUnitViaUri(uri, unit);
-    });
-    return assembler.assemble();
-  }
 }
 
 /// [_FilesToLink] stores information about a set of files to be linked
@@ -619,12 +502,35 @@
   bool get _allowMissingFiles;
 
   @override
+  void addBundle(String path, PackageBundle bundle) {
+    _filesToLink.summaryDataStore.addBundle(path, bundle);
+  }
+
+  @override
   void addNamedSource(String filePath, String contents) {
     CompilationUnit unit = _parseText(contents);
     UnlinkedUnitBuilder unlinkedUnit = serializeAstUnlinked(unit);
     _filesToLink.uriToUnit[absUri(filePath)] = unlinkedUnit;
   }
 
+  @override
+  PackageBundleBuilder createPackageBundle(String text,
+      {String path: '/test.dart', String uri}) {
+    PackageBundleAssembler assembler = new PackageBundleAssembler();
+    _LinkerInputs linkerInputs =
+        _createLinkerInputs(text, path: path, uri: uri);
+    Map<String, LinkedLibraryBuilder> linkedLibraries = link(
+        linkerInputs.linkedLibraries,
+        linkerInputs.getDependency,
+        linkerInputs.getUnit,
+        linkerInputs.getDeclaredVariable);
+    linkedLibraries.forEach(assembler.addLinkedLibrary);
+    linkerInputs._uriToUnit.forEach((String uri, UnlinkedUnit unit) {
+      assembler.addUnlinkedUnitViaUri(uri, unit);
+    });
+    return assembler.assemble();
+  }
+
   UnlinkedUnitBuilder createUnlinkedSummary(Uri uri, String text) =>
       serializeAstUnlinked(_parseText(text));
 
diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/task/options_test.dart
index e00db4f..befc23b 100644
--- a/pkg/analyzer/test/src/task/options_test.dart
+++ b/pkg/analyzer/test/src/task/options_test.dart
@@ -51,33 +51,6 @@
   YamlMap parseOptions(String source) =>
       optionsProvider.getOptionsFromString(source);
 
-  test_configure_bad_options_contents() {
-    configureContext('''
-analyzer:
-  language:
-    enableSuperMixins true; # misformatted
-''');
-    expect(analysisOptions.enableSuperMixins, false);
-  }
-
-  test_configure_enableSuperMixins() {
-    configureContext('''
-analyzer:
-  language:
-    enableSuperMixins: true
-''');
-    expect(analysisOptions.enableSuperMixins, true);
-  }
-
-  test_configure_enableSuperMixins_badValue() {
-    configureContext('''
-analyzer:
-  language:
-    enableSuperMixins: true;
-''');
-    expect(analysisOptions.enableSuperMixins, false);
-  }
-
   test_configure_error_processors() {
     configureContext('''
 analyzer:
@@ -555,14 +528,6 @@
 ''', [AnalysisOptionsWarningCode.INVALID_SECTION_FORMAT]);
   }
 
-  test_analyzer_language_supported() {
-    validate('''
-analyzer:
-  language:
-    enableSuperMixins: true
-''', []);
-  }
-
   test_analyzer_language_supports_empty() {
     validate('''
 analyzer:
@@ -575,14 +540,14 @@
 analyzer:
   language:
     unsupported: true
-''', [AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITH_LEGAL_VALUE]);
+''', [AnalysisOptionsWarningCode.UNSUPPORTED_OPTION_WITHOUT_VALUES]);
   }
 
   test_analyzer_language_unsupported_value() {
     validate('''
 analyzer:
-  language:
-    enableSuperMixins: foo
+  strong-mode:
+    implicit-dynamic: foo
 ''', [AnalysisOptionsWarningCode.UNSUPPORTED_VALUE]);
   }
 
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 9265133f..5e74843 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.task.strong.checker_test;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'strong_test_helper.dart';
@@ -2644,17 +2642,17 @@
 }
 
 class T1 extends Base {
-  /*error:MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE,error:INVALID_OVERRIDE*/B get f => null;
+  /*error:INVALID_OVERRIDE*/B get /*error:MISMATCHED_GETTER_AND_SETTER_TYPES*/f => null;
 }
 
 class T2 extends Base {
-  /*error:MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE,error:INVALID_OVERRIDE*/set f(
+  /*error:INVALID_OVERRIDE*/set /*error:MISMATCHED_GETTER_AND_SETTER_TYPES*/f(
       B b) => null;
 }
 
 class T3 extends Base {
   /*error:INVALID_OVERRIDE*/final B
-      /*error:FINAL_NOT_INITIALIZED*/f;
+      /*error:FINAL_NOT_INITIALIZED, error:MISMATCHED_GETTER_AND_SETTER_TYPES*/f;
 }
 class T4 extends Base {
   // two: one for the getter one for the setter.
@@ -2662,15 +2660,15 @@
 }
 
 class /*error:NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE*/T5 implements Base {
-  /*error:MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE, error:INVALID_OVERRIDE*/B get f => null;
+  /*error:INVALID_OVERRIDE*/B get /*error:MISMATCHED_GETTER_AND_SETTER_TYPES*/f => null;
 }
 
 class /*error:NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE*/T6 implements Base {
-  /*error:MISMATCHED_GETTER_AND_SETTER_TYPES_FROM_SUPERTYPE, error:INVALID_OVERRIDE*/set f(B b) => null;
+  /*error:INVALID_OVERRIDE*/set /*error:MISMATCHED_GETTER_AND_SETTER_TYPES*/f(B b) => null;
 }
 
 class /*error:NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE*/T7 implements Base {
-  /*error:INVALID_OVERRIDE*/final B f = null;
+  /*error:INVALID_OVERRIDE*/final B /*error:MISMATCHED_GETTER_AND_SETTER_TYPES*/f = null;
 }
 class T8 implements Base {
   // two: one for the getter one for the setter.
@@ -3851,52 +3849,6 @@
 ''');
   }
 
-  @failingTest
-  test_superMixin_invalidApplication() {
-    // Failing: https://github.com/dart-lang/sdk/issues/30283
-    return checkFile(r'''
-    class A {
-  int get foo => 3;
-}
-
-// This expects a super class which satisfies the contract of A
-class B extends A {}
-
-class C {
-  num get foo => null;
-}
-
-// This mixin application doesn't provide a valid superclass for B
-class D extends C with /*error:INCONSISTENT_INHERITANCE*/B {}
-}
-    ''', superMixins: true);
-  }
-
-  test_superMixinsMakeSuperclassMethodsAbstract() {
-    return checkFile(r'''
-  abstract class A {}
-
-abstract class B extends A {}
-
-abstract class ProvidesConcreteAGetter {
-  A get constraints => null;
-}
-
-abstract class ProvidesConcreteBGetter extends ProvidesConcreteAGetter {
-  @override
-  B get constraints => null;
-}
-
-abstract class ProvidesAbstractBGetter implements ProvidesConcreteBGetter {}
-
-abstract class ProvidesAbstractAGetterMixin extends ProvidesConcreteAGetter {}
-
-abstract class HasConcreteBGetterButMixesinAbstractAGetter
-    extends ProvidesConcreteBGetter
-    with ProvidesAbstractAGetterMixin, ProvidesAbstractBGetter {}
-    ''', superMixins: true);
-  }
-
   test_tearOffTreatedConsistentlyAsStrictArrow() async {
     await checkFile(r'''
 void foo(void f(String x)) {}
diff --git a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
index ac628df..ccef7a7 100644
--- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
+++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
@@ -41,8 +41,7 @@
   Future<CompilationUnit> checkFile(String content,
       {bool declarationCasts: true,
       bool implicitCasts: true,
-      bool implicitDynamic: true,
-      bool superMixins: false});
+      bool implicitDynamic: true});
 
   /**
    * Add the file, process it (resolve, validate, etc) and return the resolved
@@ -383,7 +382,6 @@
     expect(v.initializer.type.toString(), '() → () → Null');
   }
 
-  @failingTest
   test_circularReference_viaClosures() async {
     var mainUnit = await checkFileElement('''
 var x = /*info:INFERRED_TYPE_CLOSURE*/() => /*error:TOP_LEVEL_CYCLE*/y;
@@ -397,7 +395,6 @@
     expect(y.type.toString(), 'dynamic');
   }
 
-  @failingTest
   test_circularReference_viaClosures_initializerTypes() async {
     var mainUnit = await checkFileElement('''
 var x = /*info:INFERRED_TYPE_CLOSURE*/() => /*error:TOP_LEVEL_CYCLE*/y;
@@ -3555,9 +3552,9 @@
 B v = null;
 ''');
     checkElementText(unit.library, r'''
-class A<T1 extends int, T2 extends T1> {
+notSimplyBounded class A<T1 extends int, T2 extends T1> {
 }
-class B<T extends A<int, int>> {
+notSimplyBounded class B<T extends A<int, int>> {
 }
 B<A<int, int>> v;
 ''');
@@ -3570,9 +3567,9 @@
 B v = null;
 ''');
     checkElementText(unit.library, r'''
-class A<T1 extends T2, T2 extends int> {
+notSimplyBounded class A<T1 extends T2, T2 extends int> {
 }
-class B<T extends A<int, int>> {
+notSimplyBounded class B<T extends A<int, int>> {
 }
 B<A<int, int>> v;
 ''');
@@ -3585,15 +3582,14 @@
 B v = null;
 ''');
     checkElementText(unit.library, r'''
-class A<T1 extends int, T2 extends List<T1>> {
+notSimplyBounded class A<T1 extends int, T2 extends List<T1>> {
 }
-class B<T extends A<int, List<int>>> {
+notSimplyBounded class B<T extends A<int, List<int>>> {
 }
 B<A<int, List<int>>> v;
 ''');
   }
 
-  @failingTest
   test_instantiateToBounds_typeName_OK_hasBound_definedAfter() async {
     var unit = await checkFileElement(r'''
 class B<T extends A> {}
@@ -4138,7 +4134,6 @@
     expect(v.type.toString(), 'List<dynamic>');
   }
 
-  @failingTest
   test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1() async {
     // Note: (f<dynamic>) is not properly resulting in an instantiated
     // function type due to dartbug.com/25824.
@@ -4171,7 +4166,6 @@
     expect(v.type.toString(), 'List<int>');
   }
 
-  @failingTest
   test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1() async {
     // TODO(paulberry): for some reason (f<int>) is not properly resulting
     // in an instantiated function type.
@@ -4408,10 +4402,64 @@
     CompilationUnit unit = await checkFile(content);
     return unit.declaredElement;
   }
+
+  @override
+  @failingTest
+  test_circularReference_viaClosures() {
+    return super.test_circularReference_viaClosures();
+  }
+
+  @override
+  @failingTest
+  test_circularReference_viaClosures_initializerTypes() {
+    return super.test_circularReference_viaClosures_initializerTypes();
+  }
+
+  @override
+  @failingTest
+  test_instantiateToBounds_typeName_error1() {
+    // Test doesn't work with the old task model
+    return super.test_instantiateToBounds_typeName_error1();
+  }
+
+  @override
+  @failingTest
+  test_instantiateToBounds_typeName_error2() {
+    // Test doesn't work with the old task model
+    return super.test_instantiateToBounds_typeName_error2();
+  }
+
+  @override
+  @failingTest
+  test_instantiateToBounds_typeName_error3() {
+    // Test doesn't work with the old task model
+    return super.test_instantiateToBounds_typeName_error3();
+  }
+
+  @override
+  @failingTest
+  test_instantiateToBounds_typeName_OK_hasBound_definedAfter() {
+    return super.test_instantiateToBounds_typeName_OK_hasBound_definedAfter();
+  }
+
+  @override
+  @failingTest
+  test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1() {
+    return super
+        .test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1();
+  }
+
+  @failingTest
+  @override
+  test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1() {
+    return super
+        .test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1();
+  }
 }
 
 @reflectiveTest
-class InferredTypeTest_Driver extends InferredTypeTest {
+class InferredTypeTest_Driver extends AbstractStrongTest
+    with InferredTypeMixin {
   @override
   bool get enableNewAnalysisDriver => true;
 
@@ -4419,36 +4467,19 @@
   bool get hasExtraTaskModelPass => false;
 
   @override
-  test_circularReference_viaClosures() async {
-    await super.test_circularReference_viaClosures();
+  bool get mayCheckTypesOfLocals => true;
+
+  @override
+  Future<CompilationUnitElement> checkFileElement(String content) async {
+    CompilationUnit unit = await checkFile(content);
+    return unit.declaredElement;
   }
 
+  @failingTest
   @override
-  test_circularReference_viaClosures_initializerTypes() async {
-    await super.test_circularReference_viaClosures_initializerTypes();
-  }
-
-  @override
-  test_instantiateToBounds_typeName_OK_hasBound_definedAfter() async {
-    await super.test_instantiateToBounds_typeName_OK_hasBound_definedAfter();
-  }
-
-  @override
-  test_listLiteralsCanInferNull_topLevel() =>
-      super.test_listLiteralsCanInferNull_topLevel();
-
-  @override
-  test_mapLiteralsCanInferNull_topLevel() =>
-      super.test_mapLiteralsCanInferNull_topLevel();
-
-  @override
-  test_nullCoalescingOperator() async {
-    await super.test_nullCoalescingOperator();
-  }
-
-  @override
-  test_unsafeBlockClosureInference_closureCall() async {
-    await super.test_unsafeBlockClosureInference_closureCall();
+  test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1() {
+    return super
+        .test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1();
   }
 
   @failingTest
@@ -4460,6 +4491,13 @@
 
   @failingTest
   @override
+  test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1() {
+    return super
+        .test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1();
+  }
+
+  @failingTest
+  @override
   test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2() async {
     await super
         .test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2();
diff --git a/pkg/analyzer/test/src/task/strong/strong_test_helper.dart b/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
index 86eadb4..d9e4081 100644
--- a/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
+++ b/pkg/analyzer/test/src/task/strong/strong_test_helper.dart
@@ -16,15 +16,15 @@
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/memory_file_system.dart';
 import 'package:analyzer/source/error_processor.dart';
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/file_state.dart';
+import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/ast/token.dart';
 import 'package:analyzer/src/error/codes.dart';
 import 'package:analyzer/src/file_system/file_system.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:source_span/source_span.dart';
 import 'package:test/test.dart';
 
@@ -279,8 +279,7 @@
   Future<CompilationUnit> check(
       {bool declarationCasts: true,
       bool implicitCasts: true,
-      bool implicitDynamic: true,
-      bool superMixins: false}) async {
+      bool implicitDynamic: true}) async {
     _checkCalled = true;
 
     File mainFile =
@@ -292,7 +291,6 @@
     analysisOptions.declarationCasts = declarationCasts;
     analysisOptions.implicitCasts = implicitCasts;
     analysisOptions.implicitDynamic = implicitDynamic;
-    analysisOptions.enableSuperMixins = superMixins;
 
     var mockSdk = new MockSdk(resourceProvider: _resourceProvider);
     mockSdk.context.analysisOptions = analysisOptions;
@@ -371,14 +369,12 @@
   Future<CompilationUnit> checkFile(String content,
       {bool declarationCasts: true,
       bool implicitCasts: true,
-      bool implicitDynamic: true,
-      bool superMixins: false}) async {
+      bool implicitDynamic: true}) async {
     addFile(content);
     return await check(
         declarationCasts: declarationCasts,
         implicitCasts: implicitCasts,
-        implicitDynamic: implicitDynamic,
-        superMixins: superMixins);
+        implicitDynamic: implicitDynamic);
   }
 
   void setUp() {
diff --git a/pkg/analyzer/test/src/task/test_all.dart b/pkg/analyzer/test/src/task/test_all.dart
index 8d02ae5..7353891 100644
--- a/pkg/analyzer/test/src/task/test_all.dart
+++ b/pkg/analyzer/test/src/task/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.task.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'dart_test.dart' as dart_test;
diff --git a/pkg/analyzer/test/src/util/asserts_test.dart b/pkg/analyzer/test/src/util/asserts_test.dart
index fdea26a..37a0d9d 100644
--- a/pkg/analyzer/test/src/util/asserts_test.dart
+++ b/pkg/analyzer/test/src/util/asserts_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.util.asserts_test;
-
 import 'package:analyzer/src/util/asserts.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analyzer/test/src/util/glob_test.dart b/pkg/analyzer/test/src/util/glob_test.dart
index 8fffbf7..1bff610 100644
--- a/pkg/analyzer/test/src/util/glob_test.dart
+++ b/pkg/analyzer/test/src/util/glob_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.util.glob_test;
-
 import 'package:analyzer/src/util/glob.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analyzer/test/src/util/lru_map_test.dart b/pkg/analyzer/test/src/util/lru_map_test.dart
index 369906a..7be3e13 100644
--- a/pkg/analyzer/test/src/util/lru_map_test.dart
+++ b/pkg/analyzer/test/src/util/lru_map_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.util.lru_map_test;
-
 import 'package:analyzer/src/util/lru_map.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
diff --git a/pkg/analyzer/test/src/util/test_all.dart b/pkg/analyzer/test/src/util/test_all.dart
index d9cd7bd..4e0f8dd 100644
--- a/pkg/analyzer/test/src/util/test_all.dart
+++ b/pkg/analyzer/test/src/util/test_all.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.test.src.util.test_all;
-
 import 'package:test_reflective_loader/test_reflective_loader.dart';
 
 import 'asserts_test.dart' as asserts_test;
diff --git a/pkg/analyzer/test/utils.dart b/pkg/analyzer/test/utils.dart
index 03dfee7..07190a4 100644
--- a/pkg/analyzer/test/utils.dart
+++ b/pkg/analyzer/test/utils.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2013, 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 analyzer.test.utils;
-
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
 import 'package:analyzer/dart/element/element.dart';
diff --git a/pkg/analyzer/tool/messages/generate.dart b/pkg/analyzer/tool/messages/generate.dart
index 8083810..dc7e1cb 100644
--- a/pkg/analyzer/tool/messages/generate.dart
+++ b/pkg/analyzer/tool/messages/generate.dart
@@ -15,8 +15,8 @@
 import 'dart:io';
 
 import 'package:analyzer/error/error.dart';
-import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:analyzer/src/codegen/tools.dart';
+import 'package:analyzer/src/dart/error/syntactic_errors.dart';
 import 'package:front_end/src/testing/package_root.dart' as pkgRoot;
 import 'package:path/path.dart';
 import 'package:yaml/yaml.dart' show loadYaml;
@@ -26,12 +26,11 @@
   String frontEndPkgPath = normalize(join(pkgRoot.packageRoot, 'front_end'));
 
   Map<dynamic, dynamic> messagesYaml = loadYaml(
-      await new File(join(frontEndPkgPath, 'messages.yaml'))
-          .readAsStringSync());
-  String errorConverterSource = await new File(join(analyzerPkgPath,
+      new File(join(frontEndPkgPath, 'messages.yaml')).readAsStringSync());
+  String errorConverterSource = new File(join(analyzerPkgPath,
           joinAll(posix.split('lib/src/fasta/error_converter.dart'))))
       .readAsStringSync();
-  String syntacticErrorsSource = await new File(join(analyzerPkgPath,
+  String syntacticErrorsSource = new File(join(analyzerPkgPath,
           joinAll(posix.split('lib/src/dart/error/syntactic_errors.dart'))))
       .readAsStringSync();
 
@@ -51,6 +50,37 @@
     ..printSummary();
 }
 
+const invalidAnalyzerCode = """
+Error: Expected the text in the 'analyzerCode:' field to contain
+       the name of the class containing the error
+       and the name of the error separated by a `.`
+       (e.g. ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND).
+""";
+
+const shouldRunFastaGenerateMessagesFirst = """
+Error: After modifying message.yaml, run this first:
+       pkg/front_end/tool/fasta generate-messages
+""";
+
+/// Return an entry containing 2 strings,
+/// the name of the class containing the error and the name of the error,
+/// or throw an exception if 'analyzerCode:' field is invalid.
+List<String> nameForEntry(Map entry) {
+  final analyzerCode = entry['analyzerCode'];
+  if (analyzerCode is String) {
+    // TODO(danrubel): Revise to handle others such as ScannerErrorCode.
+    if (!analyzerCode.startsWith('ParserErrorCode.')) {
+      throw invalidAnalyzerCode;
+    }
+    List<String> name = analyzerCode.split('.');
+    if (name.length != 2 || name[1].isEmpty) {
+      throw invalidAnalyzerCode;
+    }
+    return name;
+  }
+  throw invalidAnalyzerCode;
+}
+
 class _SyntacticErrorGenerator {
   final Map messagesYaml;
   final String errorConverterSource;
@@ -69,68 +99,6 @@
   _SyntacticErrorGenerator(
       this.messagesYaml, this.errorConverterSource, this.syntacticErrorsSource);
 
-  void generateFormatCode() {
-    messagesYaml.forEach((name, entry) {
-      if (entry is Map) {
-        if (entry['index'] is int && entry['analyzerCode'] is String) {
-          translatedEntries.add(entry);
-        }
-      }
-    });
-    generateFastaAnalyzerErrorCodeList();
-    generateErrorCodes();
-  }
-
-  void generateFastaAnalyzerErrorCodeList() {
-    final sorted = new List<Map>(translatedEntries.length);
-    for (var entry in translatedEntries) {
-      var index = entry['index'];
-      if (index is int && index >= 1 && index <= sorted.length) {
-        if (sorted[index - 1] == null) {
-          sorted[index - 1] = entry;
-          continue;
-        }
-      }
-      throw shouldRunFastaGenerateMessagesFirst;
-    }
-    out.writeln('final fastaAnalyzerErrorCodes = <ErrorCode>[null,');
-    for (var entry in sorted) {
-      List<String> name = nameForEntry(entry);
-      out.writeln('_${name[1]},');
-    }
-    out.writeln('];');
-  }
-
-  void generateErrorCodes() {
-    final sortedErrorCodes = <String>[];
-    final entryMap = <String, Map>{};
-    for (var entry in translatedEntries) {
-      final name = nameForEntry(entry);
-      final errorCode = name[1];
-      sortedErrorCodes.add(errorCode);
-      if (entryMap[errorCode] == null) {
-        entryMap[errorCode] = entry;
-      } else {
-        throw 'Error: Duplicate error code $errorCode';
-      }
-    }
-    sortedErrorCodes.sort();
-    for (var errorCode in sortedErrorCodes) {
-      final entry = entryMap[errorCode];
-      final className = nameForEntry(entry)[0];
-      out.writeln();
-      out.writeln('const $className _$errorCode =');
-      out.writeln('const $className(');
-      out.writeln("'$errorCode',");
-      out.writeln('r"${entry['template']}"');
-      final tip = entry['tip'];
-      if (tip is String) {
-        out.writeln(',correction: "$tip"');
-      }
-      out.writeln(');');
-    }
-  }
-
   void checkForManualChanges() {
     // Check for ParserErrorCodes that could be removed from
     // error_converter.dart now that those ParserErrorCodes are auto generated.
@@ -178,6 +146,68 @@
     }
   }
 
+  void generateErrorCodes() {
+    final sortedErrorCodes = <String>[];
+    final entryMap = <String, Map>{};
+    for (var entry in translatedEntries) {
+      final name = nameForEntry(entry);
+      final errorCode = name[1];
+      sortedErrorCodes.add(errorCode);
+      if (entryMap[errorCode] == null) {
+        entryMap[errorCode] = entry;
+      } else {
+        throw 'Error: Duplicate error code $errorCode';
+      }
+    }
+    sortedErrorCodes.sort();
+    for (var errorCode in sortedErrorCodes) {
+      final entry = entryMap[errorCode];
+      final className = nameForEntry(entry)[0];
+      out.writeln();
+      out.writeln('const $className _$errorCode =');
+      out.writeln('const $className(');
+      out.writeln("'$errorCode',");
+      out.writeln('r"${entry['template']}"');
+      final tip = entry['tip'];
+      if (tip is String) {
+        out.writeln(',correction: "$tip"');
+      }
+      out.writeln(');');
+    }
+  }
+
+  void generateFastaAnalyzerErrorCodeList() {
+    final sorted = new List<Map>(translatedEntries.length);
+    for (var entry in translatedEntries) {
+      var index = entry['index'];
+      if (index is int && index >= 1 && index <= sorted.length) {
+        if (sorted[index - 1] == null) {
+          sorted[index - 1] = entry;
+          continue;
+        }
+      }
+      throw shouldRunFastaGenerateMessagesFirst;
+    }
+    out.writeln('final fastaAnalyzerErrorCodes = <ErrorCode>[null,');
+    for (var entry in sorted) {
+      List<String> name = nameForEntry(entry);
+      out.writeln('_${name[1]},');
+    }
+    out.writeln('];');
+  }
+
+  void generateFormatCode() {
+    messagesYaml.forEach((name, entry) {
+      if (entry is Map) {
+        if (entry['index'] is int && entry['analyzerCode'] is String) {
+          translatedEntries.add(entry);
+        }
+      }
+    });
+    generateFastaAnalyzerErrorCodeList();
+    generateErrorCodes();
+  }
+
   void printSummary() {
     // Build a map of error message to ParserErrorCode
     final messageToName = <String, String>{};
@@ -234,34 +264,3 @@
     }
   }
 }
-
-/// Return an entry containing 2 strings,
-/// the name of the class containing the error and the name of the error,
-/// or throw an exception if 'analyzerCode:' field is invalid.
-List<String> nameForEntry(Map entry) {
-  final analyzerCode = entry['analyzerCode'];
-  if (analyzerCode is String) {
-    // TODO(danrubel): Revise to handle others such as ScannerErrorCode.
-    if (!analyzerCode.startsWith('ParserErrorCode.')) {
-      throw invalidAnalyzerCode;
-    }
-    List<String> name = analyzerCode.split('.');
-    if (name.length != 2 || name[1].isEmpty) {
-      throw invalidAnalyzerCode;
-    }
-    return name;
-  }
-  throw invalidAnalyzerCode;
-}
-
-const invalidAnalyzerCode = """
-Error: Expected the text in the 'analyzerCode:' field to contain
-       the name of the class containing the error
-       and the name of the error separated by a `.`
-       (e.g. ParserErrorCode.EQUALITY_CANNOT_BE_EQUALITY_OPERAND).
-""";
-
-const shouldRunFastaGenerateMessagesFirst = """
-Error: After modifying message.yaml, run this first:
-       pkg/front_end/tool/fasta generate-messages
-""";
diff --git a/pkg/analyzer/tool/summary/check_test.dart b/pkg/analyzer/tool/summary/check_test.dart
index 5b5ff5f..c7ddf9e 100644
--- a/pkg/analyzer/tool/summary/check_test.dart
+++ b/pkg/analyzer/tool/summary/check_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.tool.summary.check_test;
-
 import 'package:analyzer/src/codegen/tools.dart';
 import 'package:front_end/src/testing/package_root.dart' as package_root;
 import 'package:path/path.dart';
diff --git a/pkg/analyzer/tool/summary/generate.dart b/pkg/analyzer/tool/summary/generate.dart
index 04b8fef..23b6c43 100644
--- a/pkg/analyzer/tool/summary/generate.dart
+++ b/pkg/analyzer/tool/summary/generate.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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.
 
@@ -17,8 +17,6 @@
  * the entity being built into the given FlatBuffer and returns the `Offset`
  * reference to it.
  */
-library analyzer.tool.summary.generate;
-
 import 'dart:convert';
 import 'dart:io';
 
diff --git a/pkg/analyzer/tool/summary/idl_model.dart b/pkg/analyzer/tool/summary/idl_model.dart
index 79bae0e..31252e2 100644
--- a/pkg/analyzer/tool/summary/idl_model.dart
+++ b/pkg/analyzer/tool/summary/idl_model.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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.
 
@@ -7,8 +7,6 @@
  * semantic model of the IDL used to code generate summary serialization and
  * deserialization code.
  */
-library analyzer.tool.summary.idl_model;
-
 /**
  * Information about a single class defined in the IDL.
  */
diff --git a/pkg/analyzer/tool/summary/mini_ast.dart b/pkg/analyzer/tool/summary/mini_ast.dart
index 2e9ce1b..2559cb9 100644
--- a/pkg/analyzer/tool/summary/mini_ast.dart
+++ b/pkg/analyzer/tool/summary/mini_ast.dart
@@ -403,6 +403,12 @@
   }
 
   @override
+  void handleInvalidTypeArguments(Token token) {
+    debugEvent("InvalidTypeArguments");
+    pop(NullValue.TypeArguments);
+  }
+
+  @override
   void handleAsyncModifier(Token asyncToken, Token starToken) {
     debugEvent("AsyncModifier");
   }
diff --git a/pkg/analyzer/tool/summary/stats.dart b/pkg/analyzer/tool/summary/stats.dart
index b8f5dd7..018f9b1 100644
--- a/pkg/analyzer/tool/summary/stats.dart
+++ b/pkg/analyzer/tool/summary/stats.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -6,8 +6,6 @@
  * This file contains code for collecting statistics about the use of fields in
  * a summary file.
  */
-library analyzer.tool.summary.stats;
-
 import 'dart:io';
 import 'dart:mirrors';
 
diff --git a/pkg/analyzer/tool/task_dependency_graph/check_test.dart b/pkg/analyzer/tool/task_dependency_graph/check_test.dart
index dc34c96..3452f40 100644
--- a/pkg/analyzer/tool/task_dependency_graph/check_test.dart
+++ b/pkg/analyzer/tool/task_dependency_graph/check_test.dart
@@ -1,9 +1,7 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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 analyzer.tool.task_dependency_graph.check_test;
-
 import 'package:analyzer/src/codegen/tools.dart';
 import 'package:front_end/src/testing/package_root.dart' as package_root;
 import 'package:path/path.dart';
diff --git a/pkg/analyzer_cli/bin/analyzer.dart b/pkg/analyzer_cli/bin/analyzer.dart
index 36c9056..8e2bbd2 100644
--- a/pkg/analyzer_cli/bin/analyzer.dart
+++ b/pkg/analyzer_cli/bin/analyzer.dart
@@ -4,11 +4,15 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer_cli/starter.dart';
+import 'dart:isolate';
 
 /// The entry point for the command-line analyzer.
-main(List<String> args) async {
+///
+/// [sendPort] may be passed in when started in an isolate. If provided, it is
+/// used for bazel worker communication instead of stdin/stdout.
+main(List<String> args, [SendPort sendPort]) async {
   CommandLineStarter starter = new CommandLineStarter();
 
   // Wait for the starter to complete.
-  await starter.start(args);
+  await starter.start(args, sendPort: sendPort);
 }
diff --git a/pkg/analyzer_cli/bin/fix.dart b/pkg/analyzer_cli/bin/fix.dart
deleted file mode 100644
index 2ef38e4..0000000
--- a/pkg/analyzer_cli/bin/fix.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env dart
-// 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_cli/src/fix/driver.dart';
-
-/// The entry point for dartfix.
-main(List<String> args) async {
-  Driver starter = new Driver();
-
-  // Wait for the starter to complete.
-  await starter.start(args);
-}
diff --git a/pkg/analyzer_cli/lib/src/build_mode.dart b/pkg/analyzer_cli/lib/src/build_mode.dart
index 95b79f2..206341a 100644
--- a/pkg/analyzer_cli/lib/src/build_mode.dart
+++ b/pkg/analyzer_cli/lib/src/build_mode.dart
@@ -6,6 +6,7 @@
 
 import 'dart:async';
 import 'dart:io' as io;
+import 'dart:isolate';
 
 import 'package:analyzer/dart/analysis/declared_variables.dart';
 import 'package:analyzer/error/error.dart';
@@ -65,6 +66,15 @@
         dartSdkPath: dartSdkPath);
   }
 
+  factory AnalyzerWorkerLoop.sendPort(
+      ResourceProvider resourceProvider, SendPort sendPort,
+      {String dartSdkPath}) {
+    AsyncWorkerConnection connection =
+        new SendPortAsyncWorkerConnection(sendPort);
+    return new AnalyzerWorkerLoop(resourceProvider, connection,
+        dartSdkPath: dartSdkPath);
+  }
+
   /**
    * Performs analysis with given [options].
    */
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart
index cb36d12..63ed79f 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -4,14 +4,17 @@
 
 import 'dart:async';
 import 'dart:io' as io;
+import 'dart:isolate';
 
 import 'package:analyzer/error/error.dart';
 import 'package:analyzer/file_system/file_system.dart' as file_system;
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/file_system/physical_file_system.dart';
 import 'package:analyzer/src/context/builder.dart';
+import 'package:analyzer/src/dart/analysis/byte_store.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
 import 'package:analyzer/src/dart/analysis/file_state.dart';
+import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:analyzer/src/dart/sdk/sdk.dart';
 import 'package:analyzer/src/file_system/file_system.dart';
 import 'package:analyzer/src/generated/engine.dart';
@@ -43,8 +46,6 @@
 import 'package:analyzer_cli/src/options.dart';
 import 'package:analyzer_cli/src/perf_report.dart';
 import 'package:analyzer_cli/starter.dart' show CommandLineStarter;
-import 'package:analyzer/src/dart/analysis/byte_store.dart';
-import 'package:analyzer/src/dart/analysis/performance_logger.dart';
 import 'package:linter/src/rules.dart' as linter;
 import 'package:meta/meta.dart';
 import 'package:package_config/discovery.dart' as pkg_discovery;
@@ -165,7 +166,7 @@
   }
 
   @override
-  Future<Null> start(List<String> args) async {
+  Future<Null> start(List<String> args, {SendPort sendPort}) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     if (analysisDriver != null) {
@@ -191,7 +192,7 @@
 
     // Do analysis.
     if (options.buildMode) {
-      ErrorSeverity severity = await _buildModeAnalyze(options);
+      ErrorSeverity severity = await _buildModeAnalyze(options, sendPort);
       // Propagate issues to the exit code.
       if (_shouldBeFatal(severity, options)) {
         io.exitCode = severity.ordinal;
@@ -436,15 +437,22 @@
   }
 
   /// Perform analysis in build mode according to the given [options].
-  Future<ErrorSeverity> _buildModeAnalyze(CommandLineOptions options) async {
+  ///
+  /// If [sendPort] is provided it is used for bazel worker communication
+  /// instead of stdin/stdout.
+  Future<ErrorSeverity> _buildModeAnalyze(
+      CommandLineOptions options, SendPort sendPort) async {
     // TODO(brianwilkerson) Determine whether this await is necessary.
     await null;
     PerformanceTag previous = _analyzeAllTag.makeCurrent();
     try {
       if (options.buildModePersistentWorker) {
-        await new AnalyzerWorkerLoop.std(resourceProvider,
+        var workerLoop = sendPort == null
+            ? new AnalyzerWorkerLoop.std(resourceProvider,
                 dartSdkPath: options.dartSdkPath)
-            .run();
+            : new AnalyzerWorkerLoop.sendPort(resourceProvider, sendPort,
+                dartSdkPath: options.dartSdkPath);
+        await workerLoop.run();
         return ErrorSeverity.NONE;
       } else {
         return await new BuildMode(resourceProvider, options, stats,
@@ -826,9 +834,6 @@
     if (newOptions.strongMode != previous.strongMode) {
       return false;
     }
-    if (newOptions.enableSuperMixins != previous.enableSuperMixins) {
-      return false;
-    }
     if (!_equalLists(
         newOptions.buildSummaryInputs, previous.buildSummaryInputs)) {
       return false;
diff --git a/pkg/analyzer_cli/lib/src/fix/driver.dart b/pkg/analyzer_cli/lib/src/fix/driver.dart
deleted file mode 100644
index 2285273..0000000
--- a/pkg/analyzer_cli/lib/src/fix/driver.dart
+++ /dev/null
@@ -1,341 +0,0 @@
-// 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:async';
-import 'dart:convert';
-import 'dart:io' show File;
-
-import 'package:analysis_server/protocol/protocol_constants.dart';
-import 'package:analyzer_cli/src/fix/options.dart';
-import 'package:analyzer_cli/src/fix/server.dart';
-import 'package:analysis_server/src/protocol/protocol_internal.dart';
-import 'package:analysis_server/protocol/protocol_generated.dart';
-import 'package:analyzer_plugin/protocol/protocol_common.dart';
-
-// For development
-const runAnalysisServerFromSource = false;
-
-class Driver {
-  final Server server = new Server();
-
-  Completer serverConnected;
-  Completer analysisComplete;
-  bool dryRun;
-  bool verbose;
-  static const progressThreshold = 10;
-  int progressCount = progressThreshold;
-
-  Future start(List<String> args) async {
-    final options = Options.parse(args);
-
-    /// Only happens in testing.
-    if (options == null) {
-      return null;
-    }
-    dryRun = options.dryRun;
-    verbose = options.verbose;
-
-    EditDartfixResult result;
-    await startServer(options);
-    bool normalShutdown = false;
-    try {
-      await setupAnalysis(options);
-      result = await requestFixes(options);
-      normalShutdown = true;
-    } finally {
-      try {
-        await stopServer(server);
-      } catch (_) {
-        if (normalShutdown) {
-          rethrow;
-        }
-      }
-    }
-    if (result != null) {
-      applyFixes(result);
-    }
-  }
-
-  Future startServer(Options options) async {
-    const connectTimeout = const Duration(seconds: 15);
-    serverConnected = new Completer();
-    if (options.verbose) {
-      server.debugStdio();
-    }
-    verboseOut('Starting...');
-    await server.start(
-        sdkPath: options.sdkPath, useSnapshot: !runAnalysisServerFromSource);
-    server.listenToOutput(dispatchNotification);
-    return serverConnected.future.timeout(connectTimeout, onTimeout: () {
-      printAndFail('Failed to connect to server');
-    });
-  }
-
-  Future setupAnalysis(Options options) async {
-    verboseOut('Setup analysis');
-    await server.send(SERVER_REQUEST_SET_SUBSCRIPTIONS,
-        new ServerSetSubscriptionsParams([ServerService.STATUS]).toJson());
-    await server.send(
-        ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS,
-        new AnalysisSetAnalysisRootsParams(
-          options.analysisRoots,
-          const [],
-        ).toJson());
-  }
-
-  Future<EditDartfixResult> requestFixes(Options options) async {
-    outSink.write('Calculating fixes...');
-    verboseOut('');
-    analysisComplete = new Completer();
-    Map<String, dynamic> json = await server.send(EDIT_REQUEST_DARTFIX,
-        new EditDartfixParams(options.analysisRoots).toJson());
-    await analysisComplete.future;
-    analysisComplete = null;
-    resetProgress();
-    ResponseDecoder decoder = new ResponseDecoder(null);
-    return EditDartfixResult.fromJson(decoder, 'result', json);
-  }
-
-  Future stopServer(Server server) async {
-    verboseOut('Stopping...');
-    const timeout = const Duration(seconds: 5);
-    await server.send(SERVER_REQUEST_SHUTDOWN, null).timeout(timeout,
-        onTimeout: () {
-      // fall through to wait for exit.
-    });
-    await server.exitCode.timeout(timeout, onTimeout: () {
-      return server.kill('server failed to exit');
-    });
-  }
-
-  Future applyFixes(EditDartfixResult result) async {
-    showDescriptions(result.descriptionOfFixes, 'Recommended changes');
-    showDescriptions(result.otherRecommendations,
-        'Recommended changes that cannot not be automatically applied');
-    if (result.descriptionOfFixes.isEmpty) {
-      outSink.writeln('');
-      outSink.writeln(result.otherRecommendations.isNotEmpty
-          ? 'No recommended changes that cannot be automatically applied.'
-          : 'No recommended changes.');
-      return;
-    }
-    outSink.writeln('');
-    outSink.writeln('Files to be changed:');
-    for (SourceFileEdit fileEdit in result.fixes) {
-      outSink.writeln(fileEdit.file);
-    }
-    if (dryRun || !(await confirmApplyChanges(result))) {
-      return;
-    }
-    for (SourceFileEdit fileEdit in result.fixes) {
-      final file = new File(fileEdit.file);
-      String code = await file.readAsString();
-      for (SourceEdit edit in fileEdit.edits) {
-        code = edit.apply(code);
-      }
-      await file.writeAsString(code);
-    }
-    outSink.writeln('Changes applied.');
-  }
-
-  void showDescriptions(List<String> descriptions, String title) {
-    if (descriptions.isNotEmpty) {
-      outSink.writeln('');
-      outSink.writeln('$title:');
-      List<String> sorted = new List.from(descriptions)..sort();
-      for (String line in sorted) {
-        outSink.writeln(line);
-      }
-    }
-  }
-
-  Future<bool> confirmApplyChanges(EditDartfixResult result) async {
-    outSink.writeln();
-    if (result.hasErrors) {
-      outSink.writeln('WARNING: The analyzed source contains errors'
-          ' that may affect the accuracy of these changes.');
-    }
-    const prompt = 'Would you like to apply these changes (y/n)? ';
-    outSink.write(prompt);
-    final response = new Completer<bool>();
-    final subscription = inputStream
-        .transform(utf8.decoder)
-        .transform(new LineSplitter())
-        .listen((String line) {
-      line = line.trim().toLowerCase();
-      if (line == 'y' || line == 'yes') {
-        response.complete(true);
-      } else if (line == 'n' || line == 'no') {
-        response.complete(false);
-      } else {
-        outSink.writeln('  Unrecognized response. Please type "yes" or "no".');
-        outSink.write(prompt);
-      }
-    });
-    bool applyChanges = await response.future;
-    await subscription.cancel();
-    return applyChanges;
-  }
-
-  /// Dispatch the notification named [event], and containing parameters
-  /// [params], to the appropriate stream.
-  void dispatchNotification(String event, params) {
-    ResponseDecoder decoder = new ResponseDecoder(null);
-    switch (event) {
-      case SERVER_NOTIFICATION_CONNECTED:
-        onServerConnected(
-            new ServerConnectedParams.fromJson(decoder, 'params', params));
-        break;
-      case SERVER_NOTIFICATION_ERROR:
-        onServerError(
-            new ServerErrorParams.fromJson(decoder, 'params', params));
-        break;
-      case SERVER_NOTIFICATION_STATUS:
-        onServerStatus(
-            new ServerStatusParams.fromJson(decoder, 'params', params));
-        break;
-//      case ANALYSIS_NOTIFICATION_ANALYZED_FILES:
-//        outOfTestExpect(params, isAnalysisAnalyzedFilesParams);
-//        _onAnalysisAnalyzedFiles.add(new AnalysisAnalyzedFilesParams.fromJson(
-//            decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_CLOSING_LABELS:
-//        outOfTestExpect(params, isAnalysisClosingLabelsParams);
-//        _onAnalysisClosingLabels.add(new AnalysisClosingLabelsParams.fromJson(
-//            decoder, 'params', params));
-//        break;
-      case ANALYSIS_NOTIFICATION_ERRORS:
-        onAnalysisErrors(
-            new AnalysisErrorsParams.fromJson(decoder, 'params', params));
-        break;
-//      case ANALYSIS_NOTIFICATION_FLUSH_RESULTS:
-//        outOfTestExpect(params, isAnalysisFlushResultsParams);
-//        _onAnalysisFlushResults.add(
-//            new AnalysisFlushResultsParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_FOLDING:
-//        outOfTestExpect(params, isAnalysisFoldingParams);
-//        _onAnalysisFolding
-//            .add(new AnalysisFoldingParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_HIGHLIGHTS:
-//        outOfTestExpect(params, isAnalysisHighlightsParams);
-//        _onAnalysisHighlights.add(
-//            new AnalysisHighlightsParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_IMPLEMENTED:
-//        outOfTestExpect(params, isAnalysisImplementedParams);
-//        _onAnalysisImplemented.add(
-//            new AnalysisImplementedParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_INVALIDATE:
-//        outOfTestExpect(params, isAnalysisInvalidateParams);
-//        _onAnalysisInvalidate.add(
-//            new AnalysisInvalidateParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_NAVIGATION:
-//        outOfTestExpect(params, isAnalysisNavigationParams);
-//        _onAnalysisNavigation.add(
-//            new AnalysisNavigationParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_OCCURRENCES:
-//        outOfTestExpect(params, isAnalysisOccurrencesParams);
-//        _onAnalysisOccurrences.add(
-//            new AnalysisOccurrencesParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_OUTLINE:
-//        outOfTestExpect(params, isAnalysisOutlineParams);
-//        _onAnalysisOutline
-//            .add(new AnalysisOutlineParams.fromJson(decoder, 'params', params));
-//        break;
-//      case ANALYSIS_NOTIFICATION_OVERRIDES:
-//        outOfTestExpect(params, isAnalysisOverridesParams);
-//        _onAnalysisOverrides.add(
-//            new AnalysisOverridesParams.fromJson(decoder, 'params', params));
-//        break;
-//      case COMPLETION_NOTIFICATION_RESULTS:
-//        outOfTestExpect(params, isCompletionResultsParams);
-//        _onCompletionResults.add(
-//            new CompletionResultsParams.fromJson(decoder, 'params', params));
-//        break;
-//      case SEARCH_NOTIFICATION_RESULTS:
-//        outOfTestExpect(params, isSearchResultsParams);
-//        _onSearchResults
-//            .add(new SearchResultsParams.fromJson(decoder, 'params', params));
-//        break;
-//      case EXECUTION_NOTIFICATION_LAUNCH_DATA:
-//        outOfTestExpect(params, isExecutionLaunchDataParams);
-//        _onExecutionLaunchData.add(
-//            new ExecutionLaunchDataParams.fromJson(decoder, 'params', params));
-//        break;
-//      case FLUTTER_NOTIFICATION_OUTLINE:
-//        outOfTestExpect(params, isFlutterOutlineParams);
-//        _onFlutterOutline
-//            .add(new FlutterOutlineParams.fromJson(decoder, 'params', params));
-//        break;
-//      default:
-//        printAndFail('Unexpected notification: $event');
-//        break;
-    }
-  }
-
-  void onAnalysisErrors(AnalysisErrorsParams params) {
-    List<AnalysisError> errors = params.errors;
-    if (errors.isNotEmpty) {
-      resetProgress();
-      outSink.writeln(params.file);
-      for (AnalysisError error in errors) {
-        Location loc = error.location;
-        outSink.writeln('  ${error.message}'
-            ' at ${loc.startLine}:${loc.startColumn}');
-      }
-    } else {
-      showProgress();
-    }
-  }
-
-  void onServerConnected(ServerConnectedParams params) {
-    verboseOut('Connected to server');
-    serverConnected.complete();
-  }
-
-  void onServerError(ServerErrorParams params) async {
-    try {
-      await stopServer(server);
-    } catch (e) {
-      // ignored
-    }
-    final message = new StringBuffer('Server Error: ')..writeln(params.message);
-    if (params.stackTrace != null) {
-      message.writeln(params.stackTrace);
-    }
-    printAndFail(message.toString());
-  }
-
-  void onServerStatus(ServerStatusParams params) {
-    if (params.analysis != null && !params.analysis.isAnalyzing) {
-      verboseOut('Analysis complete');
-      analysisComplete?.complete();
-    }
-  }
-
-  void resetProgress() {
-    if (!verbose && progressCount >= progressThreshold) {
-      outSink.writeln();
-    }
-    progressCount = 0;
-  }
-
-  void showProgress() {
-    if (!verbose && progressCount % progressThreshold == 0) {
-      outSink.write('.');
-    }
-    ++progressCount;
-  }
-
-  void verboseOut(String message) {
-    if (verbose) {
-      outSink.writeln(message);
-    }
-  }
-}
diff --git a/pkg/analyzer_cli/lib/src/fix/options.dart b/pkg/analyzer_cli/lib/src/fix/options.dart
deleted file mode 100644
index 0dc9cd2..0000000
--- a/pkg/analyzer_cli/lib/src/fix/options.dart
+++ /dev/null
@@ -1,122 +0,0 @@
-// 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:analyzer/src/util/sdk.dart';
-import 'package:args/args.dart';
-import 'package:meta/meta.dart';
-
-@visibleForTesting
-StringSink errorSink = stderr;
-
-@visibleForTesting
-StringSink outSink = stdout;
-
-@visibleForTesting
-Stream<List<int>> inputStream = stdin;
-
-@visibleForTesting
-ExitHandler exitHandler = exit;
-
-@visibleForTesting
-typedef void ExitHandler(int code);
-
-/// Command line options for `dartfix`.
-class Options {
-  List<String> analysisRoots;
-  bool dryRun;
-  String sdkPath;
-  bool verbose;
-
-  static Options parse(List<String> args,
-      {printAndFail(String msg) = printAndFail}) {
-    final parser = new ArgParser(allowTrailingOptions: true);
-
-    parser
-      ..addOption(_sdkPathOption, help: 'The path to the Dart SDK.')
-      ..addFlag(_dryRunOption,
-          abbr: 'n',
-          help: 'Calculate and display the recommended changes,'
-              ' but exit before applying them',
-          defaultsTo: false,
-          negatable: false)
-      ..addFlag(_helpOption,
-          abbr: 'h',
-          help:
-              'Display this help message. Add --verbose to show hidden options.',
-          defaultsTo: false,
-          negatable: false)
-      ..addFlag(_verboseOption,
-          abbr: 'v',
-          defaultsTo: false,
-          help: 'Verbose output.',
-          negatable: false);
-
-    ArgResults results;
-    try {
-      results = parser.parse(args);
-    } on FormatException catch (e) {
-      errorSink.writeln(e.message);
-      _showUsage(parser);
-      exitHandler(15);
-      return null; // Only reachable in testing.
-    }
-
-    if (results[_helpOption] as bool) {
-      _showUsage(parser);
-      exitHandler(0);
-      return null; // Only reachable in testing.
-    }
-
-    Options options = new Options._fromArgs(results);
-
-    // Check Dart SDK, and infer if unspecified.
-    options.sdkPath ??= getSdkPath(args);
-    String sdkPath = options.sdkPath;
-    if (sdkPath == null) {
-      errorSink.writeln('No Dart SDK found.');
-      _showUsage(parser);
-      return null; // Only reachable in testing.
-    }
-    if (!(new Directory(sdkPath)).existsSync()) {
-      printAndFail('Invalid Dart SDK path: $sdkPath');
-      return null; // Only reachable in testing.
-    }
-
-    // Check for files and/or directories to analyze.
-    if (options.analysisRoots == null || options.analysisRoots.isEmpty) {
-      errorSink.writeln('Expected at least one file or directory to analyze.');
-      _showUsage(parser);
-      exitHandler(15);
-      return null; // Only reachable in testing.
-    }
-
-    return options;
-  }
-
-  Options._fromArgs(ArgResults results)
-      : analysisRoots = results.rest,
-        dryRun = results[_dryRunOption] as bool,
-        sdkPath = results[_sdkPathOption] as String,
-        verbose = results[_verboseOption] as bool;
-
-  static _showUsage(ArgParser parser) {
-    errorSink.writeln(
-        'Usage: $_binaryName [options...] <directory or list of files>');
-    errorSink.writeln('');
-    errorSink.writeln(parser.usage);
-  }
-}
-
-const _binaryName = 'dartfix';
-const _dryRunOption = 'dry-run';
-const _helpOption = 'help';
-const _sdkPathOption = 'dart-sdk';
-const _verboseOption = 'verbose';
-
-/// Print the given [message] to stderr and exit with the given [exitCode].
-void printAndFail(String message, {int exitCode: 15}) {
-  errorSink.writeln(message);
-  exitHandler(exitCode);
-}
diff --git a/pkg/analyzer_cli/lib/src/fix/server.dart b/pkg/analyzer_cli/lib/src/fix/server.dart
deleted file mode 100644
index bfaee1a..0000000
--- a/pkg/analyzer_cli/lib/src/fix/server.dart
+++ /dev/null
@@ -1,351 +0,0 @@
-// 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:async';
-import 'dart:convert';
-import 'dart:io';
-
-import 'package:path/path.dart';
-
-/**
- * Type of callbacks used to process notifications.
- */
-typedef void NotificationProcessor(String event, params);
-
-/**
- * Instances of the class [Server] manage a connection to a server process, and
- * facilitate communication to and from the server.
- */
-class Server {
-  /**
-   * Server process object, or null if server hasn't been started yet.
-   */
-  Process _process;
-
-  /**
-   * Commands that have been sent to the server but not yet acknowledged, and
-   * the [Completer] objects which should be completed when acknowledgement is
-   * received.
-   */
-  final Map<String, Completer<Map<String, dynamic>>> _pendingCommands =
-      <String, Completer<Map<String, dynamic>>>{};
-
-  /**
-   * Number which should be used to compute the 'id' to send in the next command
-   * sent to the server.
-   */
-  int _nextId = 0;
-
-  /**
-   * Messages which have been exchanged with the server; we buffer these
-   * up until the test finishes, so that they can be examined in the debugger
-   * or printed out in response to a call to [debugStdio].
-   */
-  final List<String> _recordedStdio = <String>[];
-
-  /**
-   * True if we are currently printing out messages exchanged with the server.
-   */
-  bool _debuggingStdio = false;
-
-  /**
-   * True if we've received bad data from the server, and we are aborting the
-   * test.
-   */
-  bool _receivedBadDataFromServer = false;
-
-  /**
-   * Stopwatch that we use to generate timing information for debug output.
-   */
-  Stopwatch _time = new Stopwatch();
-
-  /**
-   * The [currentElapseTime] at which the last communication was received from the server
-   * or `null` if no communication has been received.
-   */
-  double lastCommunicationTime;
-
-  /**
-   * The current elapse time (seconds) since the server was started.
-   */
-  double get currentElapseTime => _time.elapsedTicks / _time.frequency;
-
-  /**
-   * Future that completes when the server process exits.
-   */
-  Future<int> get exitCode => _process.exitCode;
-
-  /**
-   * Print out any messages exchanged with the server.  If some messages have
-   * already been exchanged with the server, they are printed out immediately.
-   */
-  void debugStdio() {
-    if (_debuggingStdio) {
-      return;
-    }
-    _debuggingStdio = true;
-    for (String line in _recordedStdio) {
-      print(line);
-    }
-  }
-
-  /**
-   * Find the root directory of the analysis_server package by proceeding
-   * upward to the 'test' dir, and then going up one more directory.
-   */
-  String findRoot(String pathname) {
-    while (true) {
-      String parent = dirname(pathname);
-      if (parent.length >= pathname.length) {
-        throw new Exception("Can't find root directory");
-      }
-      String name = basename(pathname);
-      if (['benchmark', 'test'].contains(name)) {
-        return parent;
-      }
-      if (name == 'pkg') {
-        return join(pathname, 'analysis_server');
-      }
-      pathname = parent;
-    }
-  }
-
-  /**
-   * Return a future that will complete when all commands that have been sent
-   * to the server so far have been flushed to the OS buffer.
-   */
-  Future flushCommands() {
-    return _process.stdin.flush();
-  }
-
-  /**
-   * Stop the server.
-   */
-  Future<int> kill(String reason) {
-    debugStdio();
-    _recordStdio('FORCIBLY TERMINATING PROCESS: $reason');
-    _process.kill();
-    return _process.exitCode;
-  }
-
-  /**
-   * Start listening to output from the server, and deliver notifications to
-   * [notificationProcessor].
-   */
-  void listenToOutput(NotificationProcessor notificationProcessor) {
-    _process.stdout
-        .transform(utf8.decoder)
-        .transform(new LineSplitter())
-        .listen((String line) {
-      lastCommunicationTime = currentElapseTime;
-      String trimmedLine = line.trim();
-
-      // Guard against lines like:
-      //   {"event":"server.connected","params":{...}}Observatory listening on ...
-      final String observatoryMessage = 'Observatory listening on ';
-      if (trimmedLine.contains(observatoryMessage)) {
-        trimmedLine = trimmedLine
-            .substring(0, trimmedLine.indexOf(observatoryMessage))
-            .trim();
-      }
-      if (trimmedLine.isEmpty) {
-        return;
-      }
-
-      _recordStdio('<== $trimmedLine');
-      var message;
-      try {
-        message = json.decoder.convert(trimmedLine);
-      } catch (exception) {
-        _badDataFromServer('JSON decode failure: $exception');
-        return;
-      }
-      Map messageAsMap = message;
-      if (messageAsMap.containsKey('id')) {
-        String id = message['id'];
-        Completer<Map<String, dynamic>> completer = _pendingCommands[id];
-        if (completer == null) {
-          throw 'Unexpected response from server: id=$id';
-        } else {
-          _pendingCommands.remove(id);
-        }
-        if (messageAsMap.containsKey('error')) {
-          completer.completeError(new ServerErrorMessage(messageAsMap));
-        } else {
-          Map<String, dynamic> result = messageAsMap['result'];
-          completer.complete(result);
-        }
-      } else {
-        String event = messageAsMap['event'];
-        notificationProcessor(event, messageAsMap['params']);
-      }
-    });
-    _process.stderr
-        .transform((new Utf8Codec()).decoder)
-        .transform(new LineSplitter())
-        .listen((String line) {
-      String trimmedLine = line.trim();
-      _recordStdio('ERR:  $trimmedLine');
-      _badDataFromServer('Message received on stderr', silent: true);
-    });
-  }
-
-  /**
-   * Send a command to the server.  An 'id' will be automatically assigned.
-   * The returned [Future] will be completed when the server acknowledges the
-   * command with a response.  If the server acknowledges the command with a
-   * normal (non-error) response, the future will be completed with the 'result'
-   * field from the response.  If the server acknowledges the command with an
-   * error response, the future will be completed with an error.
-   */
-  Future<Map<String, dynamic>> send(
-      String method, Map<String, dynamic> params) {
-    String id = '${_nextId++}';
-    Map<String, dynamic> command = <String, dynamic>{
-      'id': id,
-      'method': method
-    };
-    if (params != null) {
-      command['params'] = params;
-    }
-    Completer<Map<String, dynamic>> completer =
-        new Completer<Map<String, dynamic>>();
-    _pendingCommands[id] = completer;
-    String line = json.encode(command);
-    _recordStdio('==> $line');
-    _process.stdin.add(utf8.encoder.convert("$line\n"));
-    return completer.future;
-  }
-
-  /**
-   * Start the server. If [profileServer] is `true`, the server will be started
-   * with "--observe" and "--pause-isolates-on-exit", allowing the observatory
-   * to be used.
-   */
-  Future start({
-    int diagnosticPort,
-    String instrumentationLogFile,
-    bool profileServer: false,
-    String sdkPath,
-    int servicesPort,
-    bool useAnalysisHighlight2: false,
-    bool useSnapshot: true,
-  }) async {
-    if (_process != null) {
-      throw new Exception('Process already started');
-    }
-    _time.start();
-    String dartBinary = Platform.executable;
-
-    String serverPath;
-
-    // The integration tests run 3x faster when run from snapshots (you need to
-    // run test.py with --use-sdk).
-    if (useSnapshot) {
-      // Look for snapshots/analysis_server.dart.snapshot.
-      serverPath = normalize(join(dirname(Platform.resolvedExecutable),
-          'snapshots', 'analysis_server.dart.snapshot'));
-
-      if (!FileSystemEntity.isFileSync(serverPath)) {
-        // Look for dart-sdk/bin/snapshots/analysis_server.dart.snapshot.
-        serverPath = normalize(join(dirname(Platform.resolvedExecutable),
-            'dart-sdk', 'bin', 'snapshots', 'analysis_server.dart.snapshot'));
-      }
-    } else {
-      String rootDir =
-          findRoot(Platform.script.toFilePath(windows: Platform.isWindows));
-      serverPath = normalize(join(rootDir, 'bin', 'server.dart'));
-    }
-
-    List<String> arguments = [];
-    //
-    // Add VM arguments.
-    //
-    if (profileServer) {
-      if (servicesPort == null) {
-        arguments.add('--observe');
-      } else {
-        arguments.add('--observe=$servicesPort');
-      }
-      arguments.add('--pause-isolates-on-exit');
-    } else if (servicesPort != null) {
-      arguments.add('--enable-vm-service=$servicesPort');
-    }
-    if (Platform.packageConfig != null) {
-      arguments.add('--packages=${Platform.packageConfig}');
-    }
-    //
-    // Add the server executable.
-    //
-    arguments.add(serverPath);
-    //
-    // Add server arguments.
-    //
-    arguments.add('--suppress-analytics');
-    if (diagnosticPort != null) {
-      arguments.add('--port');
-      arguments.add(diagnosticPort.toString());
-    }
-    if (instrumentationLogFile != null) {
-      arguments.add('--instrumentation-log-file=$instrumentationLogFile');
-    }
-    if (sdkPath != null) {
-      arguments.add('--sdk=$sdkPath');
-    }
-    if (useAnalysisHighlight2) {
-      arguments.add('--useAnalysisHighlight2');
-    }
-    _process = await Process.start(dartBinary, arguments);
-    _process.exitCode.then((int code) {
-      if (code != 0) {
-        _badDataFromServer('server terminated with exit code $code');
-      }
-    });
-  }
-
-  /**
-   * Deal with bad data received from the server.
-   */
-  void _badDataFromServer(String details, {bool silent: false}) {
-    if (!silent) {
-      _recordStdio('BAD DATA FROM SERVER: $details');
-    }
-    if (_receivedBadDataFromServer) {
-      // We're already dealing with it.
-      return;
-    }
-    _receivedBadDataFromServer = true;
-    debugStdio();
-    // Give the server 1 second to continue outputting bad data
-    // such as outputting a stacktrace.
-    new Future.delayed(new Duration(seconds: 1), () {
-      throw 'Bad data received from server: $details';
-    });
-  }
-
-  /**
-   * Record a message that was exchanged with the server, and print it out if
-   * [debugStdio] has been called.
-   */
-  void _recordStdio(String line) {
-    double elapsedTime = currentElapseTime;
-    line = "$elapsedTime: $line";
-    if (_debuggingStdio) {
-      print(line);
-    }
-    _recordedStdio.add(line);
-  }
-}
-
-/**
- * An error result from a server request.
- */
-class ServerErrorMessage {
-  final Map message;
-
-  ServerErrorMessage(this.message);
-
-  dynamic get error => message['error'];
-
-  String toString() => message.toString();
-}
diff --git a/pkg/analyzer_cli/lib/src/options.dart b/pkg/analyzer_cli/lib/src/options.dart
index 3c1fb51..640fd1a 100644
--- a/pkg/analyzer_cli/lib/src/options.dart
+++ b/pkg/analyzer_cli/lib/src/options.dart
@@ -20,6 +20,8 @@
 /// *Visible for testing.*
 ExitHandler exitHandler = exit;
 
+T cast<T>(dynamic value) => value as T;
+
 /// Print the given [message] to stderr and exit with the given [exitCode].
 void printAndFail(String message, {int exitCode: 15}) {
   errorSink.writeln(message);
@@ -110,11 +112,6 @@
   /// Whether to enable parsing via the Fasta parser.
   final bool useFastaParser;
 
-  /// Whether to enable the Dart 2.0 Preview.
-  ///
-  /// This flag is deprecated and hard-coded to `true`.
-  bool get previewDart2 => true;
-
   /// Batch mode (for unit testing)
   final bool batchMode;
 
@@ -147,10 +144,10 @@
   /// Whether implicit dynamic is enabled (mainly for strong mode users)
   final bool implicitDynamic;
 
-  // TODO(devoncarew): Deprecate and remove this flag.
   /// Whether to treat lints as fatal
   final bool lintsAreFatal;
 
+  // TODO(devoncarew): Deprecate and remove this flag.
   /// Emit output in a verbose mode.
   final bool verbose;
 
@@ -215,10 +212,6 @@
   Map<String, String> get definedVariables =>
       contextBuilderOptions.declaredVariables;
 
-  /// Whether to relax restrictions on mixins (DEP 34).
-  bool get enableSuperMixins =>
-      contextBuilderOptions.defaultOptions.enableSuperMixins;
-
   /// The path to a `.packages` configuration file
   String get packageConfigPath => contextBuilderOptions.defaultPackageFilePath;
 
@@ -226,6 +219,11 @@
   String get packageRootPath =>
       contextBuilderOptions.defaultPackagesDirectoryPath;
 
+  /// Whether to enable the Dart 2.0 Preview.
+  ///
+  /// This flag is deprecated and hard-coded to `true`.
+  bool get previewDart2 => true;
+
   /// The source files to analyze
   List<String> get sourceFiles => _sourceFiles;
 
@@ -645,5 +643,3 @@
 For more information, see https://www.dartlang.org/tools/analyzer.\n''');
   }
 }
-
-T cast<T>(dynamic value) => value as T;
diff --git a/pkg/analyzer_cli/lib/starter.dart b/pkg/analyzer_cli/lib/starter.dart
index 40d480c..4caa91f 100644
--- a/pkg/analyzer_cli/lib/starter.dart
+++ b/pkg/analyzer_cli/lib/starter.dart
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'dart:async';
+import 'dart:isolate';
 
 import 'package:analyzer/src/plugin/resolver_provider.dart';
 import 'package:analyzer_cli/src/driver.dart';
@@ -35,6 +36,9 @@
 
   /**
    * Use the given command-line [arguments] to start this analyzer.
+   *
+   * If [sendPort] is provided it is used for bazel worker communication
+   * instead of stdin/stdout.
    */
-  Future<Null> start(List<String> arguments);
+  Future<Null> start(List<String> arguments, {SendPort sendPort});
 }
diff --git a/pkg/analyzer_cli/test/all.dart b/pkg/analyzer_cli/test/all.dart
index 82706ab..b5015f7 100644
--- a/pkg/analyzer_cli/test/all.dart
+++ b/pkg/analyzer_cli/test/all.dart
@@ -14,7 +14,6 @@
 import 'perf_report_test.dart' as perf_report_test;
 import 'reporter_test.dart' as reporter_test;
 import 'sdk_ext_test.dart' as sdk_ext_test;
-import 'super_mixin_test.dart' as super_mixin_test;
 import 'strong_mode_test.dart' as strong_mode_test;
 
 main() {
@@ -30,6 +29,5 @@
   perf_report_test.main();
   reporter_test.main();
   sdk_ext_test.main();
-  super_mixin_test.main();
   strong_mode_test.main();
 }
diff --git a/pkg/analyzer_cli/test/driver_test.dart b/pkg/analyzer_cli/test/driver_test.dart
index 706f3cb..cb85943 100644
--- a/pkg/analyzer_cli/test/driver_test.dart
+++ b/pkg/analyzer_cli/test/driver_test.dart
@@ -905,11 +905,6 @@
     expect(outSink.toString(), contains("1 error and 1 warning found."));
   }
 
-  test_basic_language() async {
-    await _driveBasic();
-    expect(analysisOptions.enableSuperMixins, isTrue);
-  }
-
   test_includeDirective() async {
     String testDir = path.join(
         testDirectory, 'data', 'options_include_directive_tests_project');
diff --git a/pkg/analyzer_cli/test/options_test.dart b/pkg/analyzer_cli/test/options_test.dart
index 32c08eb..b0c8a8c 100644
--- a/pkg/analyzer_cli/test/options_test.dart
+++ b/pkg/analyzer_cli/test/options_test.dart
@@ -60,7 +60,6 @@
         expect(options.disableHints, isFalse);
         expect(options.lints, isFalse);
         expect(options.displayVersion, isFalse);
-        expect(options.enableSuperMixins, isFalse);
         expect(options.infosAreFatal, isFalse);
         expect(options.ignoreUnrecognizedFlags, isFalse);
         expect(options.log, isFalse);
@@ -96,12 +95,6 @@
         expect(options.disableCacheFlushing, isTrue);
       });
 
-      test('enable super mixins', () {
-        CommandLineOptions options = CommandLineOptions.parse(
-            ['--dart-sdk', '.', '--supermixin', 'foo.dart']);
-        expect(options.enableSuperMixins, isTrue);
-      });
-
       test('hintsAreFatal', () {
         CommandLineOptions options = CommandLineOptions.parse(
             ['--dart-sdk', '.', '--fatal-hints', 'foo.dart']);
diff --git a/pkg/analyzer_cli/test/super_mixin_test.dart b/pkg/analyzer_cli/test/super_mixin_test.dart
deleted file mode 100644
index 56903f0..0000000
--- a/pkg/analyzer_cli/test/super_mixin_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2015, 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 analyzer_cli.test.super_mixin;
-
-import 'dart:io';
-
-import 'package:analyzer_cli/src/ansi.dart' as ansi;
-import 'package:analyzer_cli/src/driver.dart' show Driver, errorSink, outSink;
-import 'package:path/path.dart' as path;
-import 'package:test/test.dart';
-
-import 'utils.dart';
-
-/// End-to-end test for --supermixins.
-///
-/// Most super mixin tests are in Analyzer, but this verifies the option is
-/// working and producing extra errors as expected.
-///
-/// Generally we don't want a lot of cases here as it requires spinning up a
-/// full analysis context.
-void main() {
-  group('--supermixins', () {
-    StringSink savedOutSink, savedErrorSink;
-    int savedExitCode;
-
-    setUp(() {
-      ansi.runningTests = true;
-      savedOutSink = outSink;
-      savedErrorSink = errorSink;
-      savedExitCode = exitCode;
-      outSink = new StringBuffer();
-      errorSink = new StringBuffer();
-    });
-
-    tearDown(() {
-      outSink = savedOutSink;
-      errorSink = savedErrorSink;
-      exitCode = savedExitCode;
-      ansi.runningTests = false;
-    });
-
-    test('produces errors when option absent', () async {
-      var testPath = path.join(testDirectory, 'data/super_mixin_example.dart');
-      await new Driver(isTesting: true).start([testPath]);
-
-      expect(exitCode, 3);
-      var stdout = outSink.toString();
-      expect(
-          stdout,
-          contains(
-              "error • The class 'C' can't be used as a mixin because it extends a class other than Object"));
-      expect(
-          stdout,
-          contains(
-              "error • The class 'C' can't be used as a mixin because it references 'super'"));
-      expect(stdout, contains('2 errors found.'));
-      expect(errorSink.toString(), '');
-    });
-
-    test('produces no errors when option present', () async {
-      var testPath = path.join(testDirectory, 'data/super_mixin_example.dart');
-      await new Driver(isTesting: true).start(['--supermixin', testPath]);
-
-      expect(exitCode, 0);
-      var stdout = outSink.toString();
-      expect(stdout, contains('No issues found'));
-    });
-  });
-}
diff --git a/pkg/analyzer_fe_comparison/lib/comparison.dart b/pkg/analyzer_fe_comparison/lib/comparison.dart
index 8508f492..a8dcf37 100644
--- a/pkg/analyzer_fe_comparison/lib/comparison.dart
+++ b/pkg/analyzer_fe_comparison/lib/comparison.dart
@@ -20,7 +20,7 @@
   var platformUri = Uri.file(platformPath);
   ComparisonNode kernelNode =
       await kernel.analyzePackage(inputs, packagesFileUri, platformUri);
-  print(ComparisonNode.diff(kernelNode, analyzerNode));
+  print(ComparisonNode.diff(kernelNode, analyzerNode, 'CFE', 'analyzer'));
 }
 
 /// Compares the analyzer and kernel representations of a test file, and prints
@@ -64,6 +64,6 @@
     print('No differences found!');
   } else {
     print('Differences found:');
-    print(ComparisonNode.diff(kernelNode, analyzerNode));
+    print(ComparisonNode.diff(kernelNode, analyzerNode, 'CFE', 'analyzer'));
   }
 }
diff --git a/pkg/analyzer_fe_comparison/lib/src/analyzer.dart b/pkg/analyzer_fe_comparison/lib/src/analyzer.dart
index dc75769..c1a9ad6 100644
--- a/pkg/analyzer_fe_comparison/lib/src/analyzer.dart
+++ b/pkg/analyzer_fe_comparison/lib/src/analyzer.dart
@@ -206,7 +206,7 @@
     visitor._handleClassOrClassTypeAlias(node.declaredElement);
     visitor._visitList(node.members);
     _resultNodes
-        .add(ComparisonNode.sorted('Class ${node.name.name}', children));
+        .add(ComparisonNode.sorted('Mixin ${node.name.name}', children));
   }
 
   @override
@@ -233,31 +233,18 @@
 
   void _handleClassOrClassTypeAlias(ClassElement element) {
     _visitTypeParameters(element.typeParameters);
-    InterfaceType supertype;
-    List<InterfaceType> mixins;
     if (element.isMixin) {
-      // Kernel represents:
-      // - `mixin M` as `class M extends Object`
-      // - `mixin M on A` as `class M extends A`
-      // - `mixin M on A, B` as `class M extends A with B`
-      // - `mixin M on A, B, C` as `class M extends A with B, C`.
-      var superclassConstraints = element.superclassConstraints;
-      if (superclassConstraints.isEmpty) {
-        supertype = _typeProvider.objectType;
-        mixins = [];
-      } else {
-        supertype = superclassConstraints[0];
-        mixins = superclassConstraints.skip(1).toList();
+      for (int i = 0; i < element.superclassConstraints.length; i++) {
+        _resultNodes
+            .add(_translateType('On $i: ', element.superclassConstraints[i]));
       }
     } else {
-      supertype = element.supertype;
-      mixins = element.mixins;
-    }
-    if (supertype != null) {
-      _resultNodes.add(_translateType('Extends: ', supertype));
-    }
-    for (int i = 0; i < mixins.length; i++) {
-      _resultNodes.add(_translateType('Mixin $i: ', mixins[i]));
+      if (element.supertype != null) {
+        _resultNodes.add(_translateType('Extends: ', element.supertype));
+      }
+      for (int i = 0; i < element.mixins.length; i++) {
+        _resultNodes.add(_translateType('Mixin $i: ', element.mixins[i]));
+      }
     }
     for (int i = 0; i < element.interfaces.length; i++) {
       _resultNodes
diff --git a/pkg/analyzer_fe_comparison/lib/src/comparison_node.dart b/pkg/analyzer_fe_comparison/lib/src/comparison_node.dart
index 50e1441c..44ea835 100644
--- a/pkg/analyzer_fe_comparison/lib/src/comparison_node.dart
+++ b/pkg/analyzer_fe_comparison/lib/src/comparison_node.dart
@@ -41,18 +41,19 @@
     return lines.join(indentedNewline);
   }
 
-  static ComparisonNode diff(ComparisonNode a, ComparisonNode b) {
-    String diffText;
+  static ComparisonNode diff(
+      ComparisonNode a, ComparisonNode b, String aName, String bName) {
     if (a.text == b.text) {
-      diffText = '= ${a.text}';
+      return ComparisonNode(
+          a.text, diffLists(a.children, b.children, aName, bName));
     } else {
-      diffText = 'x ${a.text} -> ${b.text}';
+      return ComparisonNode('Root nodes differ',
+          [_prefix('In $aName: ', a), _prefix('In $bName: ', b)]);
     }
-    return ComparisonNode(diffText, diffLists(a.children, b.children));
   }
 
-  static List<ComparisonNode> diffLists(
-      List<ComparisonNode> a, List<ComparisonNode> b) {
+  static List<ComparisonNode> diffLists(List<ComparisonNode> a,
+      List<ComparisonNode> b, String aName, String bName) {
     // Note: this is an O(n) "poor man's" diff algorithm; it produces optimal
     // results if the incoming results are sorted by text or if there is just
     // one contiguous hunk of differences.  Otherwise it may not find the
@@ -93,28 +94,28 @@
       if (comparisonResult < 0) {
         // a[aIndex].text sorts before b[bIndex].text.  Assume that this means
         // a[aIndex] was removed.
-        result.add(diff(a[aIndex++], ComparisonNode('(removed)')));
+        result.add(_prefix('Only in $aName: ', a[aIndex++]));
       } else if (comparisonResult > 0) {
         // b[bIndex].text sorts before a[aIndex].text.  Assume that this means
         // b[bIndex] was added.
-        result.add(diff(ComparisonNode('(added)'), b[bIndex++]));
+        result.add(_prefix('Only in $bName: ', b[bIndex++]));
       } else {
-        // a[aIndex].text matches b[bIndex].text, so diff the nodes.
-        var difference = diff(a[aIndex++], b[bIndex++]);
-        if (difference.text.startsWith('=') && difference.children.isEmpty) {
-          // Nodes are identical, so don't add anything
-        } else {
-          result.add(difference);
+        // a[aIndex].text matches b[bIndex].text, so diff the nodes if
+        // necessary.
+        var aNode = a[aIndex++];
+        var bNode = b[bIndex++];
+        if (aNode != bNode) {
+          result.add(diff(aNode, bNode, aName, bName));
         }
       }
     }
 
     // Deal with any nodes left over.
     while (aIndex < aEnd) {
-      result.add(diff(a[aIndex++], ComparisonNode('(removed)')));
+      result.add(_prefix('Only in $aName: ', a[aIndex++]));
     }
     while (bIndex < bEnd) {
-      result.add(diff(ComparisonNode('(added)'), b[bIndex++]));
+      result.add(_prefix('Only in $bName: ', b[bIndex++]));
     }
 
     // If we get here and we haven't added any nodes, something has gone wrong.
@@ -130,4 +131,8 @@
     result.sort((a, b) => a.text.compareTo(b.text));
     return result;
   }
+
+  static ComparisonNode _prefix(String prefixString, ComparisonNode node) {
+    return ComparisonNode(prefixString + node.text, node.children);
+  }
 }
diff --git a/pkg/analyzer_fe_comparison/lib/src/kernel.dart b/pkg/analyzer_fe_comparison/lib/src/kernel.dart
index d9d4cbb..bb87e0b 100644
--- a/pkg/analyzer_fe_comparison/lib/src/kernel.dart
+++ b/pkg/analyzer_fe_comparison/lib/src/kernel.dart
@@ -8,10 +8,9 @@
 import 'package:front_end/src/api_prototype/compiler_options.dart'
     show CompilerOptions;
 import 'package:front_end/src/api_prototype/diagnostic_message.dart'
-    show DiagnosticMessage, DiagnosticMessageHandler;
+    show DiagnosticMessage, DiagnosticMessageHandler, getMessageHeaderText;
 import 'package:front_end/src/api_prototype/kernel_generator.dart';
 import 'package:front_end/src/api_prototype/standard_file_system.dart';
-import 'package:front_end/src/fasta/messages.dart' show FormattedMessage;
 import 'package:kernel/ast.dart';
 import 'package:kernel/target/targets.dart';
 
@@ -60,15 +59,12 @@
 }
 
 ComparisonNode _diagnosticMessageToNode(DiagnosticMessage message) {
-  // TODO(ahe): Temporarily using FormattedMessage until DiagnosticMessage
-  // is extended to support this use case.
-  FormattedMessage formatted = message;
-  return ComparisonNode(formatted.message);
+  return ComparisonNode(getMessageHeaderText(message));
 }
 
 CompilerOptions _makeCompilerOptions(Uri packagesFileUri, Uri platformUri,
     DiagnosticMessageHandler onDiagnostic) {
-  var targetFlags = TargetFlags(strongMode: true, syncAsync: true);
+  var targetFlags = TargetFlags(syncAsync: true);
   var target = NoneTarget(targetFlags);
   var fileSystem = StandardFileSystem.instance;
 
@@ -76,7 +72,6 @@
     ..fileSystem = fileSystem
     ..packagesFileUri = packagesFileUri
     ..sdkSummary = platformUri
-    ..strongMode = true
     ..target = target
     ..throwOnErrorsForDebugging = false
     ..embedSourceText = false
@@ -102,7 +97,9 @@
     if (class_.isAnonymousMixin) return null;
     var kind = class_.isEnum
         ? 'Enum'
-        : class_.isMixinApplication ? 'MixinApplication' : 'Class';
+        : class_.isMixinApplication
+            ? 'MixinApplication'
+            : class_.isMixinDeclaration ? 'Mixin' : 'Class';
     var children = <ComparisonNode>[];
     var visitor = _KernelVisitor(children);
     if (class_.isEnum) {
@@ -116,22 +113,48 @@
       visitor._visitTypeParameters(class_.typeParameters);
       if (class_.supertype != null) {
         var declaredSupertype = class_.supertype.asInterfaceType;
-        var mixedInTypes = <DartType>[];
-        if (class_.isMixinApplication) {
-          mixedInTypes.add(class_.mixedInType.asInterfaceType);
-        }
-        while (declaredSupertype.classNode.isAnonymousMixin) {
-          // Since we're walking from the class to its declared supertype, we
-          // encounter the mixins in the reverse order that they were declared,
-          // so we have to use [List.insert] to add them to [mixedInTypes].
-          mixedInTypes.insert(
-              0, declaredSupertype.classNode.mixedInType.asInterfaceType);
-          declaredSupertype =
-              declaredSupertype.classNode.supertype.asInterfaceType;
-        }
-        children.add(_TypeVisitor.translate('Extends: ', declaredSupertype));
-        for (int i = 0; i < mixedInTypes.length; i++) {
-          children.add(_TypeVisitor.translate('Mixin $i: ', mixedInTypes[i]));
+        if (class_.isMixinDeclaration) {
+          var constraints = <DartType>[];
+          // Kernel represents a mixin declaration such as:
+          //   mixin M on S0, S1, S2 {...}
+          // By desugaring it to:
+          //   abstract class _M&S0&S1 implements S0, S1 {}
+          //   abstract class _M&S0&S1&S2 implements _M&S0&S1 {}
+          //   abstract class M extends M&S0&S1&S2 {...}
+          // (See dartbug.com/34783)
+          while (declaredSupertype.classNode.isAnonymousMixin) {
+            // Since we're walking up the class hierarchy, we encounter the
+            // mixins in the reverse order that they were declared, so we have
+            // to use [List.insert] to add them to [constraints].
+            constraints.insert(
+                0,
+                declaredSupertype
+                    .classNode.implementedTypes[1].asInterfaceType);
+            declaredSupertype =
+                declaredSupertype.classNode.implementedTypes[0].asInterfaceType;
+          }
+          constraints.insert(0, declaredSupertype);
+          for (int i = 0; i < constraints.length; i++) {
+            children.add(_TypeVisitor.translate('On $i: ', constraints[i]));
+          }
+        } else {
+          var mixedInTypes = <DartType>[];
+          if (class_.isMixinApplication) {
+            mixedInTypes.add(class_.mixedInType.asInterfaceType);
+          }
+          while (declaredSupertype.classNode.isAnonymousMixin) {
+            // Since we're walking from the class to its declared supertype, we
+            // encounter the mixins in the reverse order that they were declared,
+            // so we have to use [List.insert] to add them to [mixedInTypes].
+            mixedInTypes.insert(
+                0, declaredSupertype.classNode.mixedInType.asInterfaceType);
+            declaredSupertype =
+                declaredSupertype.classNode.supertype.asInterfaceType;
+          }
+          children.add(_TypeVisitor.translate('Extends: ', declaredSupertype));
+          for (int i = 0; i < mixedInTypes.length; i++) {
+            children.add(_TypeVisitor.translate('Mixin $i: ', mixedInTypes[i]));
+          }
         }
       }
       for (int i = 0; i < class_.implementedTypes.length; i++) {
diff --git a/pkg/analyzer_plugin/doc/tutorial/creating_edits.md b/pkg/analyzer_plugin/doc/tutorial/creating_edits.md
index 9fc6908..223786e 100644
--- a/pkg/analyzer_plugin/doc/tutorial/creating_edits.md
+++ b/pkg/analyzer_plugin/doc/tutorial/creating_edits.md
@@ -97,8 +97,8 @@
 fileEditBuilder.addReplacement(range, (DartEditBuilder editBuilder) {
   editBuilder.writeClassDeclaration(className, memberWriter: () {
     editBuilder.writeConstructorDeclaration(className);
-    editBuilder.writeOverrideOfInheritedMember(
-        typeProvider.objectType.getMethod('toString'));
+    editBuilder.writeOverride(
+        typeProvider.objectType.getMethod('toString').type);
   });
 });
 ```
diff --git a/pkg/analyzer_plugin/lib/channel/channel.dart b/pkg/analyzer_plugin/lib/channel/channel.dart
index 92283b6..9126c94 100644
--- a/pkg/analyzer_plugin/lib/channel/channel.dart
+++ b/pkg/analyzer_plugin/lib/channel/channel.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart b/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart
index 20eea1d..9eb8286 100644
--- a/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/assist_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -45,7 +45,7 @@
     AssistGenerator generator =
         new AssistGenerator(getAssistContributors(path));
     GeneratorResult<EditGetAssistsResult> result =
-        await generator.generateAssistsResponse(request);
+        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 21bfe52..72de7ce 100644
--- a/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/completion_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart b/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart
index 11731c1..917dc3e 100644
--- a/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/fix_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -77,7 +77,7 @@
     FixesRequest request = await getFixesRequest(parameters);
     FixGenerator generator = new FixGenerator(getFixContributors(path));
     GeneratorResult<EditGetFixesResult> result =
-        await generator.generateFixesResponse(request);
+        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 02d96d7..3c8d88c 100644
--- a/pkg/analyzer_plugin/lib/plugin/folding_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/folding_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -63,7 +63,7 @@
       FoldingGenerator generator =
           new FoldingGenerator(getFoldingContributors(path));
       GeneratorResult generatorResult =
-          await generator.generateFoldingNotification(request);
+          generator.generateFoldingNotification(request);
       generatorResult.sendNotifications(channel);
     } on RequestFailure {
       // If we couldn't analyze the file, then don't send a notification.
diff --git a/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart b/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart
index 49a1e58..a401db8 100644
--- a/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -63,7 +63,7 @@
       HighlightsGenerator generator =
           new HighlightsGenerator(getHighlightsContributors(path));
       GeneratorResult generatorResult =
-          await generator.generateHighlightsNotification(request);
+          generator.generateHighlightsNotification(request);
       generatorResult.sendNotifications(channel);
     } on RequestFailure {
       // If we couldn't analyze the file, then don't send a notification.
diff --git a/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart b/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart
index 1e59cb7..999ba57 100644
--- a/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/kythe_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -66,7 +66,7 @@
     EntryRequest request = await getEntryRequest(parameters);
     EntryGenerator generator = new EntryGenerator(getEntryContributors(path));
     GeneratorResult<KytheGetKytheEntriesResult> result =
-        await generator.generateGetEntriesResponse(request);
+        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 b81b3b6..e1e6e28 100644
--- a/pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/navigation_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -75,7 +75,7 @@
     NavigationGenerator generator =
         new NavigationGenerator(getNavigationContributors(path));
     GeneratorResult<AnalysisGetNavigationResult> result =
-        await generator.generateNavigationResponse(request);
+        generator.generateNavigationResponse(request);
     result.sendNotifications(channel);
     return result.result;
   }
@@ -94,7 +94,7 @@
       NavigationGenerator generator =
           new NavigationGenerator(getNavigationContributors(path));
       GeneratorResult generatorResult =
-          await generator.generateNavigationNotification(request);
+          generator.generateNavigationNotification(request);
       generatorResult.sendNotifications(channel);
     } on RequestFailure {
       // If we couldn't analyze the file, then don't send a notification.
diff --git a/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart b/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart
index fb4eda6..5766d9b 100644
--- a/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -63,7 +63,7 @@
       OccurrencesGenerator generator =
           new OccurrencesGenerator(getOccurrencesContributors(path));
       GeneratorResult generatorResult =
-          await generator.generateOccurrencesNotification(request);
+          generator.generateOccurrencesNotification(request);
       generatorResult.sendNotifications(channel);
     } on RequestFailure {
       // If we couldn't analyze the file, then don't send a notification.
diff --git a/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart b/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart
index e9e7c16..96bbdc4 100644
--- a/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/outline_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -63,7 +63,7 @@
       OutlineGenerator generator =
           new OutlineGenerator(getOutlineContributors(path));
       GeneratorResult generatorResult =
-          await generator.generateOutlineNotification(request);
+          generator.generateOutlineNotification(request);
       generatorResult.sendNotifications(channel);
     } on RequestFailure {
       // If we couldn't analyze the file, then don't send a notification.
diff --git a/pkg/analyzer_plugin/lib/plugin/plugin.dart b/pkg/analyzer_plugin/lib/plugin/plugin.dart
index 5773045..5fb6296 100644
--- a/pkg/analyzer_plugin/lib/plugin/plugin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/plugin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol.dart b/pkg/analyzer_plugin/lib/protocol/protocol.dart
index ffb622b..98c667a 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol_common.dart b/pkg/analyzer_plugin/lib/protocol/protocol_common.dart
index 6d8ea9c..596aa9e 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol_common.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol_common.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol_constants.dart b/pkg/analyzer_plugin/lib/protocol/protocol_constants.dart
index cb38cbf..fe304d5 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol_constants.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol_constants.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
diff --git a/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart b/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart
index d0c1816..eee9d22e 100644
--- a/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart
+++ b/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
diff --git a/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart b/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart
index bcbc4d3..8d7b094 100644
--- a/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart
+++ b/pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/driver.dart b/pkg/analyzer_plugin/lib/src/driver.dart
index 3005d0f..a4415d8 100644
--- a/pkg/analyzer_plugin/lib/src/driver.dart
+++ b/pkg/analyzer_plugin/lib/src/driver.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart b/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart
index 993b86f..f1f2afb 100644
--- a/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart
+++ b/pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/assist/assist.dart b/pkg/analyzer_plugin/lib/src/utilities/assist/assist.dart
index ab45780..dcbe5eb 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/assist/assist.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/assist/assist.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 fc2cc88..2b61d17 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 682aac9..7618568 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -23,7 +23,6 @@
 import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
 import 'package:analyzer_plugin/utilities/range_factory.dart';
 import 'package:charcode/ascii.dart';
-import 'package:meta/meta.dart';
 
 /**
  * A [ChangeBuilder] used to build changes in Dart files.
@@ -388,8 +387,12 @@
   }
 
   @override
-  void writeOverrideOfInheritedMember(ExecutableElement member,
-      {StringBuffer displayTextBuffer, String returnTypeGroupName}) {
+  void writeOverride(
+    FunctionType signature, {
+    StringBuffer displayTextBuffer,
+    String returnTypeGroupName,
+    bool invokeSuper: false,
+  }) {
     void withCarbonCopyBuffer(f()) {
       this._carbonCopyBuffer = displayTextBuffer;
       try {
@@ -399,32 +402,30 @@
       }
     }
 
+    ExecutableElement element = signature.element;
     String prefix = getIndent(1);
     String prefix2 = getIndent(2);
-    ElementKind elementKind = member.kind;
-    // TODO(brianwilkerson) Look for a non-abstract inherited member farther up
-    // in the superclass chain that we could invoke.
-    bool isAbstract = member.isAbstract;
+    ElementKind elementKind = element.kind;
+
     bool isGetter = elementKind == ElementKind.GETTER;
     bool isSetter = elementKind == ElementKind.SETTER;
     bool isMethod = elementKind == ElementKind.METHOD;
-    bool isOperator = isMethod && (member as MethodElement).isOperator;
-    String memberName = member.displayName;
-    write(prefix);
+    bool isOperator = isMethod && (element as MethodElement).isOperator;
+    String memberName = element.displayName;
 
     // @override
     writeln('@override');
     write(prefix);
 
     if (isGetter) {
-      writeln('// TODO: implement ${member.displayName}');
+      writeln('// TODO: implement ${element.displayName}');
       write(prefix);
     }
 
     // return type
-    DartType returnType = member.type.returnType;
+    DartType returnType = signature.returnType;
     bool typeWritten = writeType(returnType,
-        groupName: returnTypeGroupName, methodBeingCopied: member);
+        groupName: returnTypeGroupName, methodBeingCopied: element);
     if (typeWritten) {
       write(' ');
     }
@@ -446,26 +447,26 @@
 
     // parameters + body
     if (isGetter) {
-      if (isAbstract) {
-        write(' => ');
-        selectAll(() {
-          write('null');
-        });
-        writeln(';');
-      } else {
+      if (invokeSuper) {
         write(' => ');
         selectAll(() {
           write('super.');
           write(memberName);
         });
         writeln(';');
+      } else {
+        write(' => ');
+        selectAll(() {
+          write('null');
+        });
+        write(';');
       }
       displayTextBuffer?.write(' => …');
     } else {
-      List<ParameterElement> parameters = member.parameters;
+      List<ParameterElement> parameters = signature.parameters;
       withCarbonCopyBuffer(() {
-        writeTypeParameters(member.typeParameters, methodBeingCopied: member);
-        writeParameters(parameters, methodBeingCopied: member);
+        writeTypeParameters(signature.typeFormals, methodBeingCopied: element);
+        writeParameters(parameters, methodBeingCopied: element);
       });
       writeln(' {');
 
@@ -474,7 +475,7 @@
       writeln('// TODO: implement $memberName');
 
       if (isSetter) {
-        if (!isAbstract) {
+        if (invokeSuper) {
           write(prefix2);
           selectAll(() {
             write('super.');
@@ -486,7 +487,7 @@
           writeln();
         }
       } else if (returnType.isVoid) {
-        if (!isAbstract) {
+        if (invokeSuper) {
           write(prefix2);
           selectAll(() {
             write('super.');
@@ -504,11 +505,7 @@
         }
       } else {
         write(prefix2);
-        if (isAbstract) {
-          selectAll(() {
-            write('return null;');
-          });
-        } else {
+        if (invokeSuper) {
           selectAll(() {
             write('return super.');
             write(memberName);
@@ -521,12 +518,16 @@
             }
             write(');');
           });
+        } else {
+          selectAll(() {
+            write('return null;');
+          });
         }
         writeln();
       }
       // close method
       write(prefix);
-      writeln('}');
+      write('}');
       displayTextBuffer?.write(' { … }');
     }
   }
@@ -930,47 +931,21 @@
    */
   DartType _getVisibleType(DartType type,
       {ExecutableElement methodBeingCopied}) {
+    Element element = type.element;
     if (type is TypeParameterType) {
       _initializeEnclosingElements();
-      TypeParameterElement parameterElement = type.element;
-      Element parameterParent = parameterElement.enclosingElement;
-      while (parameterParent is GenericFunctionTypeElement ||
-          parameterParent is ParameterElement) {
-        parameterParent = parameterParent.enclosingElement;
+      Element enclosing = element.enclosingElement;
+      while (enclosing is GenericFunctionTypeElement ||
+          enclosing is ParameterElement) {
+        enclosing = enclosing.enclosingElement;
       }
-      // TODO(brianwilkerson) This needs to compare the parameterParent with
-      // each of the parents of the _enclosingExecutable. (That means that we
-      // only need the most closely enclosing element.)
-      if (parameterParent == _enclosingExecutable ||
-          parameterParent == _enclosingClass ||
-          parameterParent == methodBeingCopied) {
+      if (enclosing == _enclosingExecutable ||
+          enclosing == _enclosingClass ||
+          enclosing == methodBeingCopied) {
         return type;
       }
-      if (_enclosingClass != null &&
-          methodBeingCopied != null &&
-          parameterParent is ClassElement &&
-          parameterParent == methodBeingCopied.enclosingElement) {
-        // The parameter is from the class enclosing the methodBeingCopied. That
-        // means that somewhere along the inheritance chain there must be a type
-        // argument corresponding to the type parameter (either a concrete type
-        // or a type parameter of the _enclosingClass). That's the visible type
-        // that needs to be returned.
-        _InheritanceChain chain = new _InheritanceChain(
-            subtype: _enclosingClass, supertype: parameterParent);
-        while (chain != null) {
-          DartType mappedType = chain.mapParameter(parameterElement);
-          if (mappedType is TypeParameterType) {
-            parameterElement = mappedType.element;
-            chain = chain.next;
-          } else {
-            return mappedType;
-          }
-        }
-        return parameterElement.type;
-      }
       return null;
     }
-    Element element = type.element;
     if (element == null) {
       return type;
     }
@@ -1536,91 +1511,6 @@
   }
 }
 
-class _InheritanceChain {
-  final _InheritanceChain next;
-
-  final InterfaceType supertype;
-
-  /**
-   * Return the shortest inheritance chain from a [subtype] to a [supertype], or
-   * `null` if [subtype] does not inherit from [supertype].
-   */
-  factory _InheritanceChain(
-      {@required ClassElement subtype, @required ClassElement supertype}) {
-    List<_InheritanceChain> allChainsFrom(
-        _InheritanceChain next, ClassElement subtype) {
-      List<_InheritanceChain> chains = <_InheritanceChain>[];
-      InterfaceType supertypeType = subtype.supertype;
-      ClassElement supertypeElement = supertypeType.element;
-      if (supertypeElement == supertype) {
-        chains.add(new _InheritanceChain._(next, supertypeType));
-      } else if (supertypeType.isObject) {
-        // Don't add this chain and don't recurse.
-      } else {
-        chains.addAll(allChainsFrom(
-            new _InheritanceChain._(next, supertypeType), supertypeElement));
-      }
-      for (InterfaceType mixinType in subtype.mixins) {
-        ClassElement mixinElement = mixinType.element;
-        if (mixinElement == supertype) {
-          chains.add(new _InheritanceChain._(next, mixinType));
-        }
-      }
-      for (InterfaceType interfaceType in subtype.interfaces) {
-        ClassElement interfaceElement = interfaceType.element;
-        if (interfaceElement == supertype) {
-          chains.add(new _InheritanceChain._(next, interfaceType));
-        } else if (supertypeType.isObject) {
-          // Don't add this chain and don't recurse.
-        } else {
-          chains.addAll(allChainsFrom(
-              new _InheritanceChain._(next, interfaceType), interfaceElement));
-        }
-      }
-      return chains;
-    }
-
-    List<_InheritanceChain> chains = allChainsFrom(null, subtype);
-    if (chains.isEmpty) {
-      return null;
-    }
-    _InheritanceChain shortestChain = chains.removeAt(0);
-    int shortestLength = shortestChain.length;
-    for (_InheritanceChain chain in chains) {
-      int length = chain.length;
-      if (length < shortestLength) {
-        shortestChain = chain;
-        shortestLength = length;
-      }
-    }
-    return shortestChain;
-  }
-
-  /**
-   * Initialize a newly created link in an inheritance chain.
-   */
-  _InheritanceChain._(this.next, this.supertype);
-
-  /**
-   * Return the number of links in the chain starting with this link.
-   */
-  int get length {
-    if (next == null) {
-      return 1;
-    }
-    return next.length + 1;
-  }
-
-  DartType mapParameter(TypeParameterElement typeParameter) {
-    Element parameterParent = typeParameter.enclosingElement;
-    if (parameterParent is ClassElement) {
-      int index = parameterParent.typeParameters.indexOf(typeParameter);
-      return supertype.typeArguments[index];
-    }
-    return null;
-  }
-}
-
 /**
  * Information about a new library to import.
  */
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_core.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_core.dart
index b8019c1..209e451 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_core.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_core.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
index 6c41a97..03fcb97 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart
index b5206c3..546f664 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
index f59b1d8..a77fe18 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -87,6 +87,21 @@
   bool inStaticMethodBody = false;
 
   /**
+   * Indicates whether the completion location is in the body of a method.
+   */
+  bool inMethodBody = false;
+
+  /**
+   * Indicates whether the completion location is in the body of a function.
+   */
+  bool inFunctionBody = false;
+
+  /**
+   * Indicates whether the completion location is in the body of a constructor.
+   */
+  bool inConstructorBody = false;
+
+  /**
    * Indicates whether the completion target is prefixed.
    */
   bool isPrefixed = false;
@@ -116,10 +131,19 @@
 
     target.containingNode
         .accept(new _OpTypeAstVisitor(optype, target.entity, offset));
-    var mthDecl =
-        target.containingNode.getAncestor((p) => p is MethodDeclaration);
+    var methodDeclaration =
+        target.containingNode.getAncestor((node) => node is MethodDeclaration);
+    optype.inMethodBody = methodDeclaration != null;
     optype.inStaticMethodBody =
-        mthDecl is MethodDeclaration && mthDecl.isStatic;
+        methodDeclaration is MethodDeclaration && methodDeclaration.isStatic;
+
+    var functionDeclaration = target.containingNode
+        .getAncestor((node) => node is FunctionDeclaration);
+    optype.inFunctionBody = functionDeclaration != null;
+
+    var constructorDeclaration = target.containingNode
+        .getAncestor((node) => node is ConstructorDeclaration);
+    optype.inConstructorBody = constructorDeclaration != null;
 
     // If a value should be suggested, suggest also constructors.
     if (optype.includeReturnValueSuggestions) {
@@ -464,7 +488,7 @@
     if (identical(entity, node.name)) {
       TypeName type = node.type;
       if (type != null) {
-        SimpleIdentifier prefix = type.name;
+        Identifier prefix = type.name;
         if (prefix != null) {
           optype.includeConstructorSuggestions = true;
           optype.isPrefixed = true;
@@ -784,9 +808,9 @@
           List<ParameterElement> parameters = element.parameters;
           ParameterElement parameterElement = parameters.firstWhere((e) {
             if (e is DefaultFieldFormalParameterElementImpl) {
-              return e.field?.name == node.name.label.name;
+              return e.field?.name == node.name.label?.name;
             }
-            return e.isNamed && e.name == node.name.label.name;
+            return e.isNamed && e.name == node.name.label?.name;
           }, orElse: () => null);
           // Suggest tear-offs.
           if (parameterElement?.type is FunctionType) {
diff --git a/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart b/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart
index f0fe61c..d0fbadc 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/completion/suggestion_builder.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/documentation.dart b/pkg/analyzer_plugin/lib/src/utilities/documentation.dart
index 55e67f1..3373832 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/documentation.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/documentation.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2015, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2015, 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/fixes/fixes.dart b/pkg/analyzer_plugin/lib/src/utilities/fixes/fixes.dart
index 9fe9db4..54d9b45 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/fixes/fixes.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/fixes/fixes.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/folding/folding.dart b/pkg/analyzer_plugin/lib/src/utilities/folding/folding.dart
index 22e8b33..1e7eb67f 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/folding/folding.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/folding/folding.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/highlights/highlights.dart b/pkg/analyzer_plugin/lib/src/utilities/highlights/highlights.dart
index 9935e95..bb24bcb 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/highlights/highlights.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/highlights/highlights.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/kythe/entries.dart b/pkg/analyzer_plugin/lib/src/utilities/kythe/entries.dart
index 66dfed7..72256df 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/kythe/entries.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/kythe/entries.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation.dart b/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation.dart
index 1062970..f8b4b11 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/navigation/navigation.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/null_string_sink.dart b/pkg/analyzer_plugin/lib/src/utilities/null_string_sink.dart
index 7a3c940..28d910a 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/null_string_sink.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/null_string_sink.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/occurrences/occurrences.dart b/pkg/analyzer_plugin/lib/src/utilities/occurrences/occurrences.dart
index b88aa78..42b95c2 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/occurrences/occurrences.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/occurrences/occurrences.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/outline/outline.dart b/pkg/analyzer_plugin/lib/src/utilities/outline/outline.dart
index fd0a457..f87c5fc 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/outline/outline.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/outline/outline.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/string_utilities.dart b/pkg/analyzer_plugin/lib/src/utilities/string_utilities.dart
index 5c92f43..c74fd8a 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/string_utilities.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/string_utilities.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart b/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
index c3ee9cd..ec525ca 100644
--- a/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
+++ b/pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/starter.dart b/pkg/analyzer_plugin/lib/starter.dart
index fbd2bca..a72926c 100644
--- a/pkg/analyzer_plugin/lib/starter.dart
+++ b/pkg/analyzer_plugin/lib/starter.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart b/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
index 66b0ed6..5fd4f25 100644
--- a/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
+++ b/pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/assist/assist.dart b/pkg/analyzer_plugin/lib/utilities/assist/assist.dart
index 7f4a8c4..72c3e0d 100644
--- a/pkg/analyzer_plugin/lib/utilities/assist/assist.dart
+++ b/pkg/analyzer_plugin/lib/utilities/assist/assist.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/assist/assist_contributor_mixin.dart b/pkg/analyzer_plugin/lib/utilities/assist/assist_contributor_mixin.dart
index 7f91a4c..e6c1b3f 100644
--- a/pkg/analyzer_plugin/lib/utilities/assist/assist_contributor_mixin.dart
+++ b/pkg/analyzer_plugin/lib/utilities/assist/assist_contributor_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 1cf0a40..df5b278 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 25b5c44..90b4794 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -203,12 +203,17 @@
       Iterable<DartType> superclassConstraints});
 
   /**
-   * Append a placeholder for an override of the specified inherited [member].
-   * If provided, write a string value suitable for display (e.g., in a
-   * completion popup) in the given [displayTextBuffer].
+   * Append a placeholder for an override of the specified inherited
+   * [signature]. If provided, write a string value suitable for display
+   * (e.g., in a completion popup) in the given [displayTextBuffer].
+   * If [invokeSuper] is `true`, then the corresponding `super.name()` will be
+   * added in the body.
    */
-  void writeOverrideOfInheritedMember(ExecutableElement member,
-      {StringBuffer displayTextBuffer});
+  void writeOverride(
+    FunctionType signature, {
+    StringBuffer displayTextBuffer,
+    bool invokeSuper: true,
+  });
 
   /**
    * Write the code for a single parameter with the given [name].
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart b/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart
index 0d3b55d..c037112 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/completion_core.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 46da042a..c3af0db 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/inherited_reference_contributor.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/inherited_reference_contributor.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
index d2d37f0..e306286 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/relevance.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/completion/suggestion_builder.dart b/pkg/analyzer_plugin/lib/utilities/completion/suggestion_builder.dart
index f5c7f56..8ce11fa 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/suggestion_builder.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/suggestion_builder.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 7abeec9..28ab1f9 100644
--- a/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
+++ b/pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/fixes/fix_contributor_mixin.dart b/pkg/analyzer_plugin/lib/utilities/fixes/fix_contributor_mixin.dart
index 4357c38..add68df 100644
--- a/pkg/analyzer_plugin/lib/utilities/fixes/fix_contributor_mixin.dart
+++ b/pkg/analyzer_plugin/lib/utilities/fixes/fix_contributor_mixin.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart b/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart
index a25963c..3b0ab66 100644
--- a/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart
+++ b/pkg/analyzer_plugin/lib/utilities/fixes/fixes.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -127,7 +127,8 @@
   final String name;
 
   /**
-   * The priority of this kind of fix for the kind of error being addressed.
+   * The priority of this kind of fix for the kind of error being addressed
+   * where a higher integer value indicates a higher priority and relevance.
    */
   final int priority;
 
diff --git a/pkg/analyzer_plugin/lib/utilities/folding/folding.dart b/pkg/analyzer_plugin/lib/utilities/folding/folding.dart
index cc82396..7eab6ad 100644
--- a/pkg/analyzer_plugin/lib/utilities/folding/folding.dart
+++ b/pkg/analyzer_plugin/lib/utilities/folding/folding.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/generator.dart b/pkg/analyzer_plugin/lib/utilities/generator.dart
index 7b7989a..aa61835 100644
--- a/pkg/analyzer_plugin/lib/utilities/generator.dart
+++ b/pkg/analyzer_plugin/lib/utilities/generator.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/highlights/highlights.dart b/pkg/analyzer_plugin/lib/utilities/highlights/highlights.dart
index 0940fae..59acbe4 100644
--- a/pkg/analyzer_plugin/lib/utilities/highlights/highlights.dart
+++ b/pkg/analyzer_plugin/lib/utilities/highlights/highlights.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart b/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart
index f4eddab..b89cab9 100644
--- a/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart
+++ b/pkg/analyzer_plugin/lib/utilities/kythe/entries.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart b/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart
index 6662ade..d3233bc 100644
--- a/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart
+++ b/pkg/analyzer_plugin/lib/utilities/navigation/navigation.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/occurrences/occurrences.dart b/pkg/analyzer_plugin/lib/utilities/occurrences/occurrences.dart
index ca335d7..820f38e 100644
--- a/pkg/analyzer_plugin/lib/utilities/occurrences/occurrences.dart
+++ b/pkg/analyzer_plugin/lib/utilities/occurrences/occurrences.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/outline/outline.dart b/pkg/analyzer_plugin/lib/utilities/outline/outline.dart
index 8d2cddc..f675976 100644
--- a/pkg/analyzer_plugin/lib/utilities/outline/outline.dart
+++ b/pkg/analyzer_plugin/lib/utilities/outline/outline.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/pair.dart b/pkg/analyzer_plugin/lib/utilities/pair.dart
index 4886db7..6461906b 100644
--- a/pkg/analyzer_plugin/lib/utilities/pair.dart
+++ b/pkg/analyzer_plugin/lib/utilities/pair.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/range_factory.dart b/pkg/analyzer_plugin/lib/utilities/range_factory.dart
index 22c9e39..f41003d 100644
--- a/pkg/analyzer_plugin/lib/utilities/range_factory.dart
+++ b/pkg/analyzer_plugin/lib/utilities/range_factory.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/lib/utilities/subscriptions/subscription_manager.dart b/pkg/analyzer_plugin/lib/utilities/subscriptions/subscription_manager.dart
index f200681..e8a5dde 100644
--- a/pkg/analyzer_plugin/lib/utilities/subscriptions/subscription_manager.dart
+++ b/pkg/analyzer_plugin/lib/utilities/subscriptions/subscription_manager.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/pubspec.yaml b/pkg/analyzer_plugin/pubspec.yaml
index d310999..a174edc 100644
--- a/pkg/analyzer_plugin/pubspec.yaml
+++ b/pkg/analyzer_plugin/pubspec.yaml
@@ -1,6 +1,6 @@
 name: analyzer_plugin
 description: A framework for building plugins for the analysis server.
-version: 0.0.1-alpha.4
+version: 0.0.1-alpha.5
 author: Dart Team <misc@dartlang.org>
 homepage: https://github.com/dart-lang/sdk/tree/master/pkg/analyzer_plugin
 
@@ -8,7 +8,7 @@
   sdk: '>=1.8.0 <3.0.0'
 
 dependencies:
-  analyzer: '^0.32.5'
+  analyzer: '^0.33.0'
   charcode: '^1.1.0'
   html: '^0.13.1'
   meta: ^1.0.2
diff --git a/pkg/analyzer_plugin/test/integration/support/integration_test_methods.dart b/pkg/analyzer_plugin/test/integration/support/integration_test_methods.dart
index 58bf8dd..3c40ad4 100644
--- a/pkg/analyzer_plugin/test/integration/support/integration_test_methods.dart
+++ b/pkg/analyzer_plugin/test/integration/support/integration_test_methods.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
diff --git a/pkg/analyzer_plugin/test/integration/support/integration_tests.dart b/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
index d672f7b..4a58401 100644
--- a/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
+++ b/pkg/analyzer_plugin/test/integration/support/integration_tests.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/integration/support/protocol_matchers.dart b/pkg/analyzer_plugin/test/integration/support/protocol_matchers.dart
index e28e408..820f31e 100644
--- a/pkg/analyzer_plugin/test/integration/support/protocol_matchers.dart
+++ b/pkg/analyzer_plugin/test/integration/support/protocol_matchers.dart
@@ -1,8 +1,8 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 //
-// This file has been automatically generated.  Please do not edit it manually.
+// This file has been automatically generated. Please do not edit it manually.
 // To regenerate the file, use the script
 // "pkg/analysis_server/tool/spec/generate_files".
 
diff --git a/pkg/analyzer_plugin/test/plugin/assist_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/assist_mixin_test.dart
index 41d20c1..51e9802 100644
--- a/pkg/analyzer_plugin/test/plugin/assist_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/assist_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart
index 99641a7..0dcc99e 100644
--- a/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/completion_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/fix_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/fix_mixin_test.dart
index a30418e..1d785dd 100644
--- a/pkg/analyzer_plugin/test/plugin/fix_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/fix_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart
index 862eccb..5123b40 100644
--- a/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/folding_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart
index 30afb9e..c0b4543 100644
--- a/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/highlights_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/kythe_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/kythe_mixin_test.dart
index 94f8b4c..0ce5e0a 100644
--- a/pkg/analyzer_plugin/test/plugin/kythe_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/kythe_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/mocks.dart b/pkg/analyzer_plugin/test/plugin/mocks.dart
index a8478b7..3e7d651 100644
--- a/pkg/analyzer_plugin/test/plugin/mocks.dart
+++ b/pkg/analyzer_plugin/test/plugin/mocks.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart
index 4443939..7996888 100644
--- a/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/navigation_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart
index 14b1663..6555427 100644
--- a/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/occurrences_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart b/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart
index d9eaba3..2ac58ad 100644
--- a/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/outline_mixin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/plugin_test.dart b/pkg/analyzer_plugin/test/plugin/plugin_test.dart
index 16cf21e..0356e77 100644
--- a/pkg/analyzer_plugin/test/plugin/plugin_test.dart
+++ b/pkg/analyzer_plugin/test/plugin/plugin_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/plugin/test_all.dart b/pkg/analyzer_plugin/test/plugin/test_all.dart
index f1852d5..80af37d 100644
--- a/pkg/analyzer_plugin/test/plugin/test_all.dart
+++ b/pkg/analyzer_plugin/test/plugin/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 d462304..da7b2de 100644
--- a/pkg/analyzer_plugin/test/src/channel/isolate_channel_test.dart
+++ b/pkg/analyzer_plugin/test/src/channel/isolate_channel_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/channel/test_all.dart b/pkg/analyzer_plugin/test/src/channel/test_all.dart
index 45836df..cfeb586 100644
--- a/pkg/analyzer_plugin/test/src/channel/test_all.dart
+++ b/pkg/analyzer_plugin/test/src/channel/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/test_all.dart b/pkg/analyzer_plugin/test/src/test_all.dart
index 1c8868d..a0f35df 100644
--- a/pkg/analyzer_plugin/test/src/test_all.dart
+++ b/pkg/analyzer_plugin/test/src/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_core_test.dart b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_core_test.dart
index 50df19d..5665f8d 100644
--- a/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_core_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_core_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 7f0f6e9..0f8e505 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -10,6 +10,7 @@
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/src/context/source.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
+import 'package:analyzer/src/dart/element/inheritance_manager2.dart';
 import 'package:analyzer/src/generated/engine.dart';
 import 'package:analyzer/src/generated/resolver.dart';
 import 'package:analyzer/src/generated/source.dart';
@@ -1178,187 +1179,247 @@
     expect(edit.replacement, equalsIgnoringWhitespace('mixin M on A { }'));
   }
 
-  test_writeOverrideOfInheritedMember_getter_abstract() async {
-    await _assertWriteOverrideOfInheritedAccessor('''
+  test_writeOverride_getter_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   int get zero;
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'zero',
+      expected: '''
   @override
   // TODO: implement zero
   int get zero => null;
-''', displayText: 'zero => …', selection: new SourceRange(113, 4));
+''',
+      displayText: 'zero => …',
+      selection: new SourceRange(111, 4),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_getter_concrete() async {
-    await _assertWriteOverrideOfInheritedAccessor('''
+  test_writeOverride_getter_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   int get zero => 0;
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'zero',
+      expected: '''
   @override
   // TODO: implement zero
   int get zero => super.zero;
-''', displayText: 'zero => …', selection: new SourceRange(109, 10));
+''',
+      displayText: 'zero => …',
+      selection: new SourceRange(107, 10),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   A add(A a);
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'add',
+      expected: '''
   @override
   A add(A a) {
     // TODO: implement add
     return null;
   }
-''', displayText: 'add(A a) { … }', selection: new SourceRange(113, 12));
+''',
+      displayText: 'add(A a) { … }',
+      selection: new SourceRange(111, 12),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   A add(A a) => null;
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'add',
+      expected: '''
   @override
   A add(A a) {
     // TODO: implement add
     return super.add(a);
   }
-''', displayText: 'add(A a) { … }', selection: new SourceRange(112, 20));
+''',
+      displayText: 'add(A a) { … }',
+      selection: new SourceRange(110, 20),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_functionTypeAlias_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_functionTypeAlias_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 typedef int F(int left, int right);
 abstract class A {
   void perform(F f);
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'perform',
+      expected: '''
   @override
   void perform(F f) {
     // TODO: implement perform
   }
-''', displayText: 'perform(F f) { … }', selection: null);
+''',
+      displayText: 'perform(F f) { … }',
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_functionTypeAlias_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_functionTypeAlias_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 typedef int F(int left, int right);
 class A {
   void perform(F f) {}
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'perform',
+      expected: '''
   @override
   void perform(F f) {
     // TODO: implement perform
     super.perform(f);
   }
-''', displayText: 'perform(F f) { … }', selection: new SourceRange(160, 17));
+''',
+      displayText: 'perform(F f) { … }',
+      selection: new SourceRange(158, 17),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_functionTypedParameter_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_functionTypedParameter_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   forEach(int f(double p1, String p2));
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'forEach',
+      expected: '''
   @override
   forEach(int Function(double p1, String p2) f) {
     // TODO: implement forEach
     return null;
   }
 ''',
-        displayText: 'forEach(int Function(double p1, String p2) f) { … }',
-        selection: new SourceRange(178, 12));
+      displayText: 'forEach(int Function(double p1, String p2) f) { … }',
+      selection: new SourceRange(176, 12),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_functionTypedParameter_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_functionTypedParameter_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   forEach(int f(double p1, String p2)) {}
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'forEach',
+      expected: '''
   @override
   forEach(int Function(double p1, String p2) f) {
     // TODO: implement forEach
     return super.forEach(f);
   }
 ''',
-        displayText: 'forEach(int Function(double p1, String p2) f) { … }',
-        selection: new SourceRange(171, 24));
+      displayText: 'forEach(int Function(double p1, String p2) f) { … }',
+      selection: new SourceRange(169, 24),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_generic_noBounds_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_generic_noBounds_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   List<T> get<T>(T key);
 }
 class B implements A {
 }
-''', '''
+''',
+      nameToOverride: 'get',
+      expected: '''
   @override
   List<T> get<T>(T key) {
     // TODO: implement get
     return null;
   }
-''', displayText: 'get<T>(T key) { … }', selection: new SourceRange(138, 12));
+''',
+      displayText: 'get<T>(T key) { … }',
+      selection: new SourceRange(136, 12),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_generic_noBounds_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_generic_noBounds_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   List<T> get<T>(T key) {}
 }
 class B implements A {
 }
-''', '''
+''',
+      nameToOverride: 'get',
+      expected: '''
   @override
   List<T> get<T>(T key) {
     // TODO: implement get
     return super.get(key);
   }
-''', displayText: 'get<T>(T key) { … }', selection: new SourceRange(131, 22));
+''',
+      displayText: 'get<T>(T key) { … }',
+      selection: new SourceRange(129, 22),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_generic_withBounds_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_generic_withBounds_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A<K1, V1> {
   List<T> get<T extends V1>(K1 key);
 }
 class B<K2, V2> implements A<K2, V2> {
 }
-''', '''
+''',
+      nameToOverride: 'get',
+      expected: '''
   @override
   List<T> get<T extends V2>(K2 key) {
     // TODO: implement get
     return null;
   }
 ''',
-        displayText: 'get<T extends V2>(K2 key) { … }',
-        selection: new SourceRange(186, 12));
+      displayText: 'get<T extends V2>(K2 key) { … }',
+      selection: new SourceRange(184, 12),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_generic_withBounds_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_generic_withBounds_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A<K1, V1> {
   List<T> get<T extends V1>(K1 key) {
     return null;
@@ -1366,148 +1427,192 @@
 }
 class B<K2, V2> implements A<K2, V2> {
 }
-''', '''
+''',
+      nameToOverride: 'get',
+      expected: '''
   @override
   List<T> get<T extends V2>(K2 key) {
     // TODO: implement get
     return super.get(key);
   }
 ''',
-        displayText: 'get<T extends V2>(K2 key) { … }',
-        selection: new SourceRange(199, 22));
+      displayText: 'get<T extends V2>(K2 key) { … }',
+      selection: new SourceRange(197, 22),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_genericFunctionTypedParameter_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_genericFunctionTypedParameter_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   int foo(T Function<T>() fn);
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'foo',
+      expected: '''
   @override
   int foo(T Function<T>() fn) {
     // TODO: implement foo
     return null;
  }
 ''',
-        displayText: 'foo(T Function<T>() fn) { … }',
-        selection: new SourceRange(147, 12));
+      displayText: 'foo(T Function<T>() fn) { … }',
+      selection: new SourceRange(145, 12),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_genericFunctionTypedParameter_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_genericFunctionTypedParameter_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   int foo(T Function<T>() fn) => 0;
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'foo',
+      expected: '''
   @override
   int foo(T Function<T>() fn) {
     // TODO: implement foo
     return super.foo(fn);
  }
 ''',
-        displayText: 'foo(T Function<T>() fn) { … }',
-        selection: new SourceRange(143, 21));
+      displayText: 'foo(T Function<T>() fn) { … }',
+      selection: new SourceRange(141, 21),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_nullAsTypeArgument_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_nullAsTypeArgument_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   List<Null> foo();
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'foo',
+      expected: '''
   @override
   List<Null> foo() {
     // TODO: implement foo
     return null;
  }
-''', displayText: 'foo() { … }', selection: new SourceRange(125, 12));
+''',
+      displayText: 'foo() { … }',
+      selection: new SourceRange(123, 12),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_nullAsTypeArgument_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_nullAsTypeArgument_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   List<Null> foo() => null
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'foo',
+      expected: '''
   @override
   List<Null> foo() {
     // TODO: implement foo
     return super.foo();
  }
-''', displayText: 'foo() { … }', selection: new SourceRange(123, 19));
+''',
+      displayText: 'foo() { … }',
+      selection: new SourceRange(121, 19),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_voidAsTypeArgument_abstract() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_voidAsTypeArgument_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   List<void> foo();
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'foo',
+      expected: '''
   @override
   List<void> foo() {
     // TODO: implement foo
     return null;
   }
-''', displayText: 'foo() { … }', selection: new SourceRange(125, 12));
+''',
+      displayText: 'foo() { … }',
+      selection: new SourceRange(123, 12),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_method_voidAsTypeArgument_concrete() async {
-    await _assertWriteOverrideOfInheritedMethod('''
+  test_writeOverride_method_voidAsTypeArgument_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   List<void> foo() => null;
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'foo',
+      expected: '''
   @override
   List<void> foo() {
     // TODO: implement foo
     return super.foo();
   }
-''', displayText: 'foo() { … }', selection: new SourceRange(124, 19));
+''',
+      displayText: 'foo() { … }',
+      selection: new SourceRange(122, 19),
+    );
   }
 
-  test_writeOverrideOfInheritedMember_setter_abstract() async {
-    await _assertWriteOverrideOfInheritedAccessor('''
+  test_writeOverride_setter_abstract() async {
+    await _assertWriteOverride(
+      content: '''
 abstract class A {
   set value(int value);
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'value=',
+      expected: '''
   @override
   void set value(int value) {
     // TODO: implement value
   }
-''', displayText: 'value(int value) { … }', selection: null);
+''',
+      displayText: 'value(int value) { … }',
+    );
   }
 
-  test_writeOverrideOfInheritedMember_setter_concrete() async {
-    await _assertWriteOverrideOfInheritedAccessor('''
+  test_writeOverride_setter_concrete() async {
+    await _assertWriteOverride(
+      content: '''
 class A {
   set value(int value) {}
 }
 class B extends A {
 }
-''', '''
+''',
+      nameToOverride: 'value=',
+      expected: '''
   @override
   void set value(int value) {
     // TODO: implement value
     super.value = value;
   }
 ''',
-        displayText: 'value(int value) { … }',
-        selection: new SourceRange(133, 20));
+      displayText: 'value(int value) { … }',
+      selection: new SourceRange(131, 20),
+    );
   }
 
   test_writeParameter() async {
@@ -2146,19 +2251,30 @@
   }
 
   /**
-   * Assuming that the [content] being edited defines a class named 'A' whose
-   * first accessor is the member to be overridden and ends with a class to
-   * which an inherited method is to be added, assert that the text of the
-   * overridden member matches the [expected] text (modulo white space). Assert
-   * that the generated display text matches the given [displayText]. If a
-   * [selection] is provided, assert that the generated selection range matches
-   * it.
+   * Assuming that the [content] being edited defines a class named `A` whose
+   * member with the given [nameToOverride] to be overridden and has
+   * `class B extends A {...}` to which an inherited method is to be added,
+   * assert that the text of the overridden member matches the [expected] text
+   * (modulo white space). Assert that the generated display text matches the
+   * given [displayText]. If a [selection] is provided, assert that the
+   * generated selection range matches it.
    */
-  _assertWriteOverrideOfInheritedAccessor(String content, String expected,
-      {String displayText, SourceRange selection}) async {
+  _assertWriteOverride({
+    String content,
+    String nameToOverride,
+    String expected,
+    String displayText,
+    SourceRange selection,
+  }) async {
     String path = provider.convertPath('/test.dart');
     addSource(path, content);
-    ClassElement classA = await _getClassElement(path, 'A');
+
+    TypeSystem typeSystem = await session.typeSystem;
+    var b = await _getClassElement(path, 'B');
+    var inherited = new InheritanceManager2(typeSystem).getInherited(
+      b.type,
+      new Name(null, nameToOverride),
+    );
 
     StringBuffer displayBuffer =
         displayText != null ? new StringBuffer() : null;
@@ -2166,42 +2282,12 @@
     DartChangeBuilderImpl builder = new DartChangeBuilder(session);
     await builder.addFileEdit(path, (FileEditBuilder builder) {
       builder.addInsertion(content.length - 2, (EditBuilder builder) {
-        (builder as DartEditBuilder).writeOverrideOfInheritedMember(
-            classA.accessors[0],
-            displayTextBuffer: displayBuffer);
-      });
-    });
-    SourceEdit edit = getEdit(builder);
-    expect(edit.replacement, equalsIgnoringWhitespace(expected));
-    expect(displayBuffer?.toString(), displayText);
-    if (selection != null) {
-      expect(builder.selectionRange, selection);
-    }
-  }
-
-  /**
-   * Assuming that the [content] being edited defines a class named 'A' whose
-   * first method is the member to be overridden and ends with a class to which
-   * an inherited method is to be added, assert that the text of the overridden
-   * member matches the [expected] text (modulo white space). Assert that the
-   * generated display text matches the given [displayText]. If a [selection] is
-   * provided, assert that the generated selection range matches it.
-   */
-  _assertWriteOverrideOfInheritedMethod(String content, String expected,
-      {String displayText, SourceRange selection}) async {
-    String path = provider.convertPath('/test.dart');
-    addSource(path, content);
-    ClassElement classA = await _getClassElement(path, 'A');
-
-    StringBuffer displayBuffer =
-        displayText != null ? new StringBuffer() : null;
-
-    DartChangeBuilderImpl builder = new DartChangeBuilder(session);
-    await builder.addFileEdit(path, (FileEditBuilder builder) {
-      builder.addInsertion(content.length - 2, (EditBuilder builder) {
-        (builder as DartEditBuilder).writeOverrideOfInheritedMember(
-            classA.methods[0],
-            displayTextBuffer: displayBuffer);
+        ExecutableElement element = inherited.element;
+        (builder as DartEditBuilder).writeOverride(
+          inherited,
+          displayTextBuffer: displayBuffer,
+          invokeSuper: !element.isAbstract,
+        );
       });
     });
     SourceEdit edit = getEdit(builder);
diff --git a/pkg/analyzer_plugin/test/src/utilities/change_builder/test_all.dart b/pkg/analyzer_plugin/test/src/utilities/change_builder/test_all.dart
index 113f84b..2c50f7e 100644
--- a/pkg/analyzer_plugin/test/src/utilities/change_builder/test_all.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/change_builder/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
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 d50c9f3..45c0388 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 1b49426..f85cb6f 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
@@ -50,27 +50,40 @@
         constructors: true,
         namedArgs: true,
         returnValue: true,
-        typeNames: true);
+        typeNames: true,
+        functionBody: true);
   }
 
   test_ArgumentList_namedParam() async {
     // SimpleIdentifier  NamedExpression  ArgumentList  MethodInvocation
     // ExpressionStatement
     addTestSource('void main() {expect(foo: ^)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_ArgumentList_prefixedIdentifier() async {
     // SimpleIdentifier  PrefixedIdentifier  ArgumentList
     addTestSource('void main() {expect(aa.^)}');
     await assertOpType(
-        constructors: true, returnValue: true, typeNames: true, prefixed: true);
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        prefixed: true,
+        functionBody: true);
   }
 
   test_ArgumentList_resolved() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('void main() {int.parse(^)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AsIdentifier() async {
@@ -79,24 +92,37 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_Assert() async {
     addTestSource('main() {assert(^)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AssertInitializer() async {
     addTestSource('class C { C() : assert(^); }');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        constructorBody: true);
   }
 
   test_AssignmentExpression_RHS() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement  Block
     addTestSource('class A {} main() {int a; int b = ^}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AssignmentExpression_type() async {
@@ -115,7 +141,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_AssignmentExpression_type_newline() async {
@@ -133,7 +160,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_AssignmentExpression_type_partial() async {
@@ -152,7 +180,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_AssignmentExpression_type_partial_newline() async {
@@ -170,63 +199,104 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_AwaitExpression() async {
     // SimpleIdentifier  AwaitExpression  ExpressionStatement
     addTestSource('main() async {A a; await ^}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AwaitExpression2() async {
     addTestSource('main() async {A a; await c^ await}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AwaitExpression3() async {
     addTestSource('main() async {A a; await ^ await foo;}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AwaitExpression4() async {
     addTestSource('main() async {A a; await ^ await bar();}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AwaitExpression_assignment() async {
     addTestSource('main() async {A a; int x = await ^}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AwaitExpression_assignment2() async {
     addTestSource('main() async {A a; int x = await ^ await foo;}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_AwaitExpression_assignment3() async {
     addTestSource('main() async {A a; int x = await v^ int y = await foo;}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_BinaryExpression_LHS() async {
     // SimpleIdentifier  BinaryExpression  VariableDeclaration
     // VariableDeclarationList  VariableDeclarationStatement
     addTestSource('main() {int a = 1, b = ^ + 2;}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_BinaryExpression_RHS() async {
     // SimpleIdentifier  BinaryExpression  VariableDeclaration
     // VariableDeclarationList  VariableDeclarationStatement
     addTestSource('main() {int a = 1, b = 2 + ^;}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_BinaryExpression_RHS2() async {
     // SimpleIdentifier  BinaryExpression
     addTestSource('main() {if (c < ^)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_Block() async {
@@ -244,7 +314,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_Block_catch_2a() async {
@@ -254,7 +325,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_catch_2b() async {
@@ -264,7 +336,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_catch_2c() async {
@@ -274,7 +347,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_catch_2d() async {
@@ -284,7 +358,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_catch_3a() async {
@@ -294,7 +369,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_catch_3b() async {
@@ -304,7 +380,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_catch_3c() async {
@@ -314,7 +391,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_catch_3d() async {
@@ -324,7 +402,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_empty() async {
@@ -334,7 +413,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_Block_identifier_partial() async {
@@ -343,7 +423,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_Block_keyword() async {
@@ -353,7 +434,8 @@
         prefixed: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_Block_static() async {
@@ -363,6 +445,37 @@
         returnValue: true,
         typeNames: true,
         staticMethodBody: true,
+        methodBody: true,
+        voidReturn: true);
+  }
+
+  test_Block_in_function() async {
+    addTestSource('foo() {^}');
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true,
+        voidReturn: true);
+  }
+
+  test_Block_in_method() async {
+    addTestSource('class A {foo() {^}}');
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true,
+        voidReturn: true);
+  }
+
+  test_Block_in_constructor() async {
+    addTestSource('class A {A() {^}}');
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        constructorBody: true,
         voidReturn: true);
   }
 
@@ -377,7 +490,8 @@
         returnValue: true,
         typeNames: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        functionBody: true);
   }
 
   test_CascadeExpression_selector2() async {
@@ -387,7 +501,8 @@
         constructors: true,
         returnValue: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        functionBody: true);
   }
 
   test_CascadeExpression_selector2_withTrailingReturn() async {
@@ -397,7 +512,8 @@
         constructors: true,
         returnValue: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        functionBody: true);
   }
 
   test_CascadeExpression_target() async {
@@ -407,7 +523,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_CatchClause_typed() async {
@@ -417,7 +534,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_CatchClause_untyped() async {
@@ -427,7 +545,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_CommentReference() async {
@@ -438,55 +557,88 @@
         returnValue: true,
         typeNames: true,
         voidReturn: true,
+        methodBody: true,
         kind: CompletionSuggestionKind.IDENTIFIER);
   }
 
   test_ConditionalExpression_elseExpression() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T1 : T^}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_ConditionalExpression_elseExpression_empty() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T1 : ^}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_ConditionalExpression_partial_thenExpression() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T^}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_ConditionalExpression_partial_thenExpression_empty() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? ^}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_ConditionalExpression_thenExpression() async {
     // SimpleIdentifier  ConditionalExpression  ReturnStatement
     addTestSource('class C {foo(){var f; {var x;} return a ? T^ : c}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_DefaultFormalParameter_named_expression() async {
     // DefaultFormalParameter FormalParameterList MethodDeclaration
     addTestSource('class A {a(blat: ^) { }}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_DoStatement() async {
     // SimpleIdentifier  DoStatement  Block
     addTestSource('main() {do{} while(^x);}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_ExpressionFunctionBody() async {
     // SimpleIdentifier  ExpressionFunctionBody  FunctionExpression
     addTestSource('m(){[1].forEach((x)=>^x);}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_ExpressionStatement() async {
@@ -496,13 +648,18 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_ForEachStatement() async {
     // SimpleIdentifier  ForEachStatement  Block
     addTestSource('main() {for(z in ^zs) {}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_ForEachStatement_body_typed() async {
@@ -512,7 +669,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_ForEachStatement_body_untyped() async {
@@ -522,40 +680,61 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_ForEachStatement_iterable() async {
     // SimpleIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (int foo in ^) {}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_FormalParameter_partialType() async {
     // FormalParameterList MethodDeclaration
     addTestSource('class A {a(b.^ f) { }}');
     await assertOpType(
-        constructors: true, returnValue: true, typeNames: true, prefixed: true);
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        prefixed: true,
+        methodBody: true);
   }
 
   test_FormalParameter_partialType2() async {
     // FormalParameterList MethodDeclaration
     addTestSource('class A {a(b.z^ f) { }}');
     await assertOpType(
-        constructors: true, returnValue: true, typeNames: true, prefixed: true);
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        prefixed: true,
+        methodBody: true);
   }
 
   test_FormalParameter_partialType3() async {
     // FormalParameterList MethodDeclaration
     addTestSource('class A {a(b.^) { }}');
     await assertOpType(
-        constructors: true, returnValue: true, typeNames: true, prefixed: true);
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        prefixed: true,
+        methodBody: true);
   }
 
   test_ForStatement_condition() async {
     // SimpleIdentifier  ForStatement
     addTestSource('main() {for (int index = 0; i^)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_ForStatement_updaters() async {
@@ -566,13 +745,18 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_ForStatement_updaters_prefix_expression() async {
     // SimpleIdentifier  PrefixExpression  ForStatement
     addTestSource('main() {for (int index = 0; index < 10; ++i^)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_IfStatement() async {
@@ -582,36 +766,57 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_IfStatement_condition() async {
     // SimpleIdentifier  IfStatement  Block  BlockFunctionBody
     addTestSource('main(){var a; if (^)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_IfStatement_empty() async {
     // SimpleIdentifier  PrefixIdentifier  IfStatement
     addTestSource('class A {foo() {A a; if (^) something}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_IfStatement_invocation() async {
     // SimpleIdentifier  PrefixIdentifier  IfStatement
     addTestSource('main() {var a; if (a.^) something}');
     await assertOpType(
-        constructors: true, returnValue: true, typeNames: true, prefixed: true);
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        prefixed: true,
+        functionBody: true);
   }
 
   test_IndexExpression() async {
     addTestSource('class C {foo(){var f; {var x;} f[^]}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_IndexExpression2() async {
     addTestSource('class C {foo(){var f; {var x;} f[T^]}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_InstanceCreationExpression_keyword() async {
@@ -621,7 +826,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_InstanceCreationExpression_keyword2() async {
@@ -631,50 +837,76 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_InterpolationExpression() async {
     // SimpleIdentifier  InterpolationExpression  StringInterpolation
     addTestSource('main() {String name; print("hello \$^");}');
-    await assertOpType(constructors: true, returnValue: true);
+    await assertOpType(
+        constructors: true, returnValue: true, functionBody: true);
   }
 
   test_InterpolationExpression_block() async {
     // SimpleIdentifier  InterpolationExpression  StringInterpolation
     addTestSource('main() {String name; print("hello \${n^}");}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_InterpolationExpression_prefix_selector() async {
     // SimpleIdentifier  PrefixedIdentifier  InterpolationExpression
     addTestSource('main() {String name; print("hello \${name.^}");}');
     await assertOpType(
-        constructors: true, returnValue: true, typeNames: true, prefixed: true);
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        prefixed: true,
+        functionBody: true);
   }
 
   test_InterpolationExpression_prefix_target() async {
     // SimpleIdentifier  PrefixedIdentifier  InterpolationExpression
     addTestSource('main() {String name; print("hello \${nam^e.length}");}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_IsExpression_target() async {
     // IfStatement  Block  BlockFunctionBody
     addTestSource('main(){var a; if (^ is A)}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_Literal_list() async {
     // ']'  ListLiteral  ArgumentList  MethodInvocation
     addTestSource('main() {var Some; print([^]);}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_Literal_list2() async {
     // SimpleIdentifier ListLiteral  ArgumentList  MethodInvocation
     addTestSource('main() {var Some; print([S^]);}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_MapLiteralEntry() async {
@@ -707,13 +939,18 @@
         returnValue: true,
         typeNames: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        methodBody: true);
   }
 
   test_PostfixExpression() async {
     // SimpleIdentifier  PostfixExpression  ForStatement
     addTestSource('int x = 0; main() {ax+^+;}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_PrefixedIdentifier_class_const() async {
@@ -724,7 +961,8 @@
         returnValue: true,
         typeNames: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        functionBody: true);
   }
 
   test_PrefixedIdentifier_class_imported() async {
@@ -735,7 +973,8 @@
         returnValue: true,
         typeNames: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        functionBody: true);
   }
 
   test_PrefixedIdentifier_prefix() async {
@@ -745,7 +984,8 @@
         constructors: true,
         typeNames: true,
         returnValue: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_PropertyAccess_expression() async {
@@ -756,7 +996,8 @@
         returnValue: true,
         typeNames: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        methodBody: true);
   }
 
   test_PropertyAccess_selector() async {
@@ -767,13 +1008,18 @@
         returnValue: true,
         typeNames: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        methodBody: true);
   }
 
   test_ReturnStatement() async {
     // ReturnStatement  Block
     addTestSource('f() { var vvv = 42; return ^ }');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_SwitchCase_between() async {
@@ -783,19 +1029,28 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_SwitchCase_expression1() async {
     // SimpleIdentifier  SwitchCase  SwitchStatement
     addTestSource('''m() {switch (x) {case ^D: return;}}''');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_SwitchCase_expression2() async {
     // SimpleIdentifier  SwitchCase  SwitchStatement
     addTestSource('''m() {switch (x) {case ^}}''');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_SwitchDefault_between() async {
@@ -805,7 +1060,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_SwitchStatement_body_end() async {
@@ -815,7 +1071,8 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_SwitchStatement_body_end2() async {
@@ -824,25 +1081,39 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        functionBody: true);
   }
 
   test_SwitchStatement_expression1() async {
     // SimpleIdentifier  SwitchStatement  Block
     addTestSource('main() {switch(^k) {case 1:{}}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_SwitchStatement_expression2() async {
     // SimpleIdentifier  SwitchStatement  Block
     addTestSource('main() {switch(k^) {case 1:{}}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
+//
   test_SwitchStatement_expression_empty() async {
     // SimpleIdentifier  SwitchStatement  Block
     addTestSource('main() {switch(^) {case 1:{}}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_ThisExpression_block() async {
@@ -857,7 +1128,8 @@
         constructors: true,
         returnValue: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        methodBody: true);
   }
 
   test_ThisExpression_constructor() async {
@@ -870,13 +1142,18 @@
         constructors: true,
         returnValue: true,
         voidReturn: true,
-        prefixed: true);
+        prefixed: true,
+        constructorBody: true);
   }
 
   test_ThrowExpression() async {
     // SimpleIdentifier  ThrowExpression  ExpressionStatement
     addTestSource('main() {throw ^;}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   test_VariableDeclarationStatement_afterSemicolon() async {
@@ -886,27 +1163,40 @@
         constructors: true,
         returnValue: true,
         typeNames: true,
-        voidReturn: true);
+        voidReturn: true,
+        methodBody: true);
   }
 
   test_VariableDeclarationStatement_RHS() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement
     addTestSource('class C {bar(){var f; {var x;} var e = ^}}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: 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: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        methodBody: true);
   }
 
   test_WhileStatement() async {
     // SimpleIdentifier  WhileStatement  Block
     addTestSource('mth() { while (b^) {} }}');
-    await assertOpType(constructors: true, returnValue: true, typeNames: true);
+    await assertOpType(
+        constructors: true,
+        returnValue: true,
+        typeNames: true,
+        functionBody: true);
   }
 
   @failingTest
@@ -925,7 +1215,7 @@
       'main() { new A.b(^); }'
           'class A{ A.b({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_constructor_named_resolved_1_1() async {
@@ -934,7 +1224,7 @@
       'main() { new A.b(o^); }'
           'class A { A.b({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_constructor_resolved_1_0() async {
@@ -943,7 +1233,7 @@
       'main() { new A(^); }'
           'class A{ A({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_constructor_resolved_1_1() async {
@@ -952,7 +1242,7 @@
       'main() { new A(o^); }'
           'class A { A({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_factory_named_resolved_1_0() async {
@@ -961,7 +1251,7 @@
       'main() { new A.b(^); }'
           'class A{ factory A.b({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_factory_named_resolved_1_1() async {
@@ -970,7 +1260,7 @@
       'main() { new A.b(o^); }'
           'class A { factory A.b({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_factory_resolved_1_0() async {
@@ -979,7 +1269,7 @@
       'main() { new A(^); }'
           'class A{ factory A({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_factory_resolved_1_1() async {
@@ -988,163 +1278,163 @@
       'main() { new A(o^); }'
           'class A { factory A({one, two}) {} }',
     );
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_method_resolved_1_0() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('main() { foo(^);} foo({one, two}) {}');
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_method_resolved_1_1() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('main() { foo(o^);} foo({one, two}) {}');
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_ArgumentList_resolved_2_0() async {
     // ArgumentList  MethodInvocation  ExpressionStatement  Block
     addTestSource('void main() {int.parse("16", ^)}');
-    await assertOpType(namedArgs: true);
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_AsExpression() async {
     // SimpleIdentifier  TypeName  AsExpression
     addTestSource('class A {var b; X _c; foo() {var a; (a as ^).foo();}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
   }
 
   test_AsIdentifier2() async {
     addTestSource('class A {var asdf; foo() {A as^}');
-    await assertOpType();
+    await assertOpType(methodBody: true);
   }
 
   test_AssignmentExpression_name() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement  Block
     addTestSource('class A {} main() {int a; int ^b = 1;}');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, functionBody: true);
   }
 
   test_Block_catch_1a() async {
     // '}'  Block  BlockFunctionBody  FunctionExpression
     addTestSource('main() {try {} ^}');
     // Only return 'on', 'catch', and 'finally' keywords
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_Block_catch_1b() async {
     // [ExpressionStatement 'c']  Block  BlockFunctionBody
     addTestSource('main() {try {} c^}');
     // Only return 'on', 'catch', and 'finally' keywords
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_Block_catch_1c() async {
     // [EmptyStatement]  Block  BlockFunctionBody  FunctionExpression
     addTestSource('main() {try {} ^;}');
     // Only return 'on', 'catch', and 'finally' keywords
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_Block_catch_1d() async {
     // [VariableDeclarationStatement 'Foo foo']  Block  BlockFunctionBody
     addTestSource('main() {try {} ^ Foo foo;}');
     // Only return 'on', 'catch', and 'finally' keywords
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_Block_final() async {
     addTestSource('main() {final ^}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_Block_final2() async {
     addTestSource('main() {final S^ v;}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_Block_final3() async {
     addTestSource('main() {final ^ v;}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_Block_final_final() async {
     addTestSource('main() {final ^ final S x;}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_Block_final_final2() async {
     addTestSource('main() {final S^ final S x;}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_Break_after_label() async {
     addTestSource('main() { foo: while (true) { break foo ^ ; } }');
-    await assertOpType(/* No valid completions */);
+    await assertOpType(/* No valid completions */ functionBody: true);
   }
 
   test_Break_before_label() async {
     addTestSource('main() { foo: while (true) { break ^ foo; } }');
-    await assertOpType(statementLabel: true);
+    await assertOpType(statementLabel: true, functionBody: true);
   }
 
   test_Break_no_label() async {
     addTestSource('main() { foo: while (true) { break ^; } }');
-    await assertOpType(statementLabel: true);
+    await assertOpType(statementLabel: true, functionBody: true);
   }
 
   test_catch_4a1() async {
     addTestSource('main() {try {} ^ on SomeException {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_catch_4a2() async {
     addTestSource('main() {try {} c^ on SomeException {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_catch_4b1() async {
     addTestSource('main() {try {} ^ catch (e) {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_catch_4b2() async {
     addTestSource('main() {try {} c^ catch (e) {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_catch_4c1() async {
     addTestSource('main() {try {} ^ finally {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_catch_4c2() async {
     addTestSource('main() {try {} c^ finally {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_catch_5a() async {
     addTestSource('main() {try {} on ^ finally {}}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_catch_5b() async {
     addTestSource('main() {try {} on E^ finally {}}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_CatchClause_onType() async {
     // TypeName  CatchClause  TryStatement
     addTestSource('class A {a() {try{var x;} on ^ {}}}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
   }
 
   test_CatchClause_onType_noBrackets() async {
     // TypeName  CatchClause  TryStatement
     addTestSource('class A {a() {try{var x;} on ^}}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
   }
 
   test_ClassDeclaration_body() async {
@@ -1180,72 +1470,85 @@
     // SimpleIdentifier  PrefixedIdentifier  TypeName  ConstructorName
     // InstanceCreationExpression
     addTestSource('main() {new X.^}');
-    await assertOpType(constructors: true, prefixed: true);
+    await assertOpType(constructors: true, prefixed: true, functionBody: true);
   }
 
   test_ConstructorName_name_resolved() async {
     // SimpleIdentifier  PrefixedIdentifier  TypeName  ConstructorName
     // InstanceCreationExpression
     addTestSource('main() {new Str^ing.fromCharCodes([]);}');
-    await assertOpType(constructors: true);
+    await assertOpType(constructors: true, functionBody: true);
+  }
+
+  test_ConstructorName_nameAndPrefix_resolved() async {
+    // SimpleIdentifier  PrefixedIdentifier  TypeName  ConstructorName
+    // InstanceCreationExpression
+    addTestSource('''
+import 'dart:core' as core;
+main() {new core.String.from^CharCodes([]);}
+''');
+    await assertOpType(constructors: true, prefixed: true, functionBody: true);
   }
 
   test_ConstructorName_resolved() async {
     // SimpleIdentifier  PrefixedIdentifier  TypeName  ConstructorName
     // InstanceCreationExpression
     addTestSource('main() {new String.fr^omCharCodes([]);}');
-    await assertOpType(constructors: true, prefixed: true);
+    await assertOpType(constructors: true, prefixed: true, functionBody: true);
   }
 
   test_ConstructorName_unresolved() async {
     // SimpleIdentifier  PrefixedIdentifier  TypeName  ConstructorName
     // InstanceCreationExpression
     addTestSource('main() {new String.fr^omCharCodes([]);}');
-    await assertOpType(constructors: true, prefixed: true);
+    await assertOpType(constructors: true, prefixed: true, functionBody: true);
   }
 
   test_Continue_after_label() async {
     addTestSource('main() { foo: while (true) { continue foo ^ ; } }');
-    await assertOpType(/* No valid completions */);
+    await assertOpType(/* No valid completions */ functionBody: true);
   }
 
   test_Continue_before_label() async {
     addTestSource('main() { foo: while (true) { continue ^ foo; } }');
-    await assertOpType(statementLabel: true, caseLabel: true);
+    await assertOpType(
+        statementLabel: true, caseLabel: true, functionBody: true);
   }
 
   test_Continue_no_label() async {
     addTestSource('main() { foo: while (true) { continue ^; } }');
-    await assertOpType(statementLabel: true, caseLabel: true);
+    await assertOpType(
+        statementLabel: true, caseLabel: true, functionBody: true);
   }
 
   test_DoubleLiteral() async {
     addTestSource('main() { print(1.2^); }');
-    await assertOpType();
+    // TODO expected functionBody: true
+    await assertOpType(functionBody: false);
   }
 
   test_ExpressionStatement_name() async {
     // ExpressionStatement  Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class C {a() {C ^}}');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, methodBody: true);
   }
 
   test_ExpressionStatement_name_semicolon() async {
     // ExpressionStatement  Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class C {a() {C ^;}}');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, methodBody: true);
   }
 
   test_ExpressionStatement_prefixed_name() async {
     // ExpressionStatement  Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class C {a() {x.Y ^}}');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, methodBody: true);
   }
 
   test_ExpressionStatement_prefixed_name_semicolon() async {
     // ExpressionStatement  Block  BlockFunctionBody  MethodDeclaration
     addTestSource('class C {a() {x.Y ^;}}');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, methodBody: true);
   }
 
   test_ExtendsClause() async {
@@ -1271,59 +1574,59 @@
   test_ForEachStatement_loopVariable() async {
     // SimpleIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (^ in args) {}}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_ForEachStatement_loopVariable_name() async {
     // DeclaredIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (String ^ in args) {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_ForEachStatement_loopVariable_name2() async {
     // DeclaredIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (String f^ in args) {}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_ForEachStatement_loopVariable_type() async {
     // SimpleIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (^ foo in args) {}}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_ForEachStatement_loopVariable_type2() async {
     // DeclaredIdentifier  ForEachStatement  Block
     addTestSource('main(args) {for (S^ foo in args) {}}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_FormalParameterList() async {
     // FormalParameterList MethodDeclaration
     addTestSource('class A {a(^) { }}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
   }
 
   test_ForStatement_initializer() async {
     // SimpleIdentifier  ForStatement
     addTestSource('main() {List a; for (^)}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_ForStatement_initializer_inKeyword() async {
     addTestSource('main() { for (var v i^) }');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_ForStatement_initializer_type() async {
     // SimpleIdentifier  ForStatement
     addTestSource('main() {List a; for (i^ v = 0;)}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_ForStatement_initializer_variableNameEmpty_afterType() async {
     addTestSource('main() { for (String ^) }');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, functionBody: true);
   }
 
   test_FunctionDeclaration1() async {
@@ -1377,7 +1680,7 @@
     addTestSource('''
       /// some dartdoc ^
       zoo(z) { } String name;''');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_FunctionDeclaration_inLineDocComment2() async {
@@ -1385,7 +1688,7 @@
     addTestSource('''
       /// some ^dartdoc
       zoo(z) { } String name;''');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_FunctionDeclaration_inStarComment() async {
@@ -1403,13 +1706,13 @@
   test_FunctionDeclaration_inStarDocComment() async {
     // Comment  FunctionDeclaration  CompilationUnit
     addTestSource('/** ^ */ zoo(z) { } String name; ');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_FunctionDeclaration_inStarDocComment2() async {
     // Comment  FunctionDeclaration  CompilationUnit
     addTestSource('/**  *^/ zoo(z) { } String name;');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_FunctionDeclaration_returnType() async {
@@ -1440,7 +1743,7 @@
     addTestSource('''
       /// some dartdoc
       ^ zoo(z) { } String name;''');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_FunctionDeclaration_returnType_afterLineDocComment2() async {
@@ -1448,7 +1751,7 @@
     addTestSource('''
 /// some dartdoc
 ^ zoo(z) { } String name;''');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_FunctionDeclaration_returnType_afterStarComment() async {
@@ -1466,25 +1769,25 @@
   test_FunctionDeclaration_returnType_afterStarDocComment() async {
     // FunctionDeclaration  CompilationUnit
     addTestSource('/** */ ^ zoo(z) { } String name;');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_FunctionDeclaration_returnType_afterStarDocComment2() async {
     // FunctionDeclaration  CompilationUnit
     addTestSource('/** */^ zoo(z) { } String name;');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_FunctionExpression() async {
     // BlockFunctionBody  FunctionExpression  FunctionDeclaration
     addTestSource('main()^ { int b = 2; b++; b. }');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_FunctionExpressionInvocation() async {
     // ArgumentList  FunctionExpressionInvocation  ExpressionStatement
     addTestSource('main() { ((x) => x + 7)^(2) }');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_FunctionTypeAlias() async {
@@ -1510,41 +1813,43 @@
   test_InstanceCreationExpression() async {
     // SimpleIdentifier  TypeName  ConstructorName  InstanceCreationExpression
     addTestSource('class C {foo(){var f; {var x;} new ^}}');
-    await assertOpType(constructors: true);
+    await assertOpType(constructors: true, methodBody: true);
   }
 
   test_InstanceCreationExpression_trailingStmt() async {
     // SimpleIdentifier  TypeName  ConstructorName  InstanceCreationExpression
     addTestSource('class C {foo(){var f; {var x;} new ^ int x = 7;}}');
-    await assertOpType(constructors: true);
+    await assertOpType(constructors: true, methodBody: true);
   }
 
   test_IntegerLiteral_inArgumentList() async {
+    // TODO expected functionBody: true
     addTestSource('main() { print(1^); }');
-    await assertOpType();
+    await assertOpType(functionBody: false);
   }
 
   test_IntegerLiteral_inListLiteral() async {
+    // TODO expected functionBody: true
     addTestSource('main() { var items = [1^]; }');
-    await assertOpType();
+    await assertOpType(functionBody: false);
   }
 
   test_IsExpression() async {
     // SimpleIdentifier  TypeName  IsExpression  IfStatement
     addTestSource('main() {var x; if (x is ^) { }}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_IsExpression_type_partial() async {
     // SimpleIdentifier  TypeName  IsExpression  IfStatement
     addTestSource('main(){var a; if (a is Obj^)}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_Literal_string() async {
     // SimpleStringLiteral  ExpressionStatement  Block
     addTestSource('class A {a() {"hel^lo"}}');
-    await assertOpType();
+    await assertOpType(methodBody: true);
   }
 
   test_MethodDeclaration1() async {
@@ -1587,23 +1892,13 @@
     await assertOpType();
   }
 
-  test_MethodDeclaration_inLineComment4() async {
-    // Comment  ClassDeclaration  CompilationUnit
-    addTestSource('''
-      class C2 {
-        // normal comment
-        // normal comment 2^
-        zoo(z) { } String name; }''');
-    await assertOpType();
-  }
-
   test_MethodDeclaration_inLineDocComment() async {
     // Comment  MethodDeclaration  ClassDeclaration  CompilationUnit
     addTestSource('''
       class C2 {
         /// some dartdoc ^
         zoo(z) { } String name; }''');
-    await assertOpType();
+    await assertOpType(methodBody: true);
   }
 
   test_MethodDeclaration_inLineDocComment2() async {
@@ -1612,7 +1907,7 @@
       class C2 {
         /// some ^dartdoc
         zoo(z) { } String name; }''');
-    await assertOpType();
+    await assertOpType(methodBody: true);
   }
 
   test_MethodDeclaration_inStarComment() async {
@@ -1630,13 +1925,13 @@
   test_MethodDeclaration_inStarDocComment() async {
     // Comment  MethodDeclaration  ClassDeclaration  CompilationUnit
     addTestSource('class C2 {/** ^ */ zoo(z) { } String name; }');
-    await assertOpType();
+    await assertOpType(methodBody: true);
   }
 
   test_MethodDeclaration_inStarDocComment2() async {
     // Comment  MethodDeclaration  ClassDeclaration  CompilationUnit
     addTestSource('class C2 {/**  *^/ zoo(z) { } String name; }');
-    await assertOpType();
+    await assertOpType(methodBody: true);
   }
 
   test_MethodDeclaration_returnType() async {
@@ -1670,7 +1965,7 @@
       class C2 {
         /// some dartdoc
         ^ zoo(z) { } String name; }''');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
   }
 
   test_MethodDeclaration_returnType_afterLineDocComment2() async {
@@ -1679,7 +1974,7 @@
 class C2 {
   /// some dartdoc
 ^ zoo(z) { } String name; }''');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
   }
 
   test_MethodDeclaration_returnType_afterStarComment() async {
@@ -1697,13 +1992,21 @@
   test_MethodDeclaration_returnType_afterStarDocComment() async {
     // MethodDeclaration  ClassDeclaration  CompilationUnit
     addTestSource('class C2 {/** */ ^ zoo(z) { } String name; }');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
   }
 
   test_MethodDeclaration_returnType_afterStarDocComment2() async {
     // MethodDeclaration  ClassDeclaration  CompilationUnit
     addTestSource('class C2 {/** */^ zoo(z) { } String name; }');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, methodBody: true);
+  }
+
+  test_NamedExpression() async {
+    addTestSource('''
+main() { f(3, ^); }
+void f(int a, {int b}) {}
+''');
+    await assertOpType(namedArgs: true, functionBody: true);
   }
 
   test_OnClause() async {
@@ -1715,91 +2018,92 @@
   test_PropertyAccess_noTarget() async {
     // SimpleIdentifier  PropertyAccess  ExpressionStatement
     addTestSource('main() {.^}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_PropertyAccess_noTarget2() async {
     // SimpleIdentifier  PropertyAccess  CascadeExpressions
     addTestSource('main() {.^.}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_PropertyAccess_noTarget3() async {
     // SimpleIdentifier  PropertyAccess  CascadeExpressions
     addTestSource('main() {..^}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
+//
   test_SimpleFormalParameter_closure() async {
     // SimpleIdentifier  SimpleFormalParameter  FormalParameterList
     addTestSource('mth() { PNGS.sort((String a, Str^) => a.compareTo(b)); }');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_SimpleFormalParameter_name1() async {
     // SimpleIdentifier  SimpleFormalParameter  FormalParameterList
     addTestSource('m(String na^) {}');
-    await assertOpType(typeNames: false);
+    await assertOpType(typeNames: false, functionBody: true);
   }
 
   test_SimpleFormalParameter_name2() async {
     // SimpleIdentifier  SimpleFormalParameter  FormalParameterList
     addTestSource('m(int first, String na^) {}');
-    await assertOpType(typeNames: false);
+    await assertOpType(typeNames: false, functionBody: true);
   }
 
   test_SimpleFormalParameter_type_optionalNamed() async {
     // SimpleIdentifier  DefaultFormalParameter  FormalParameterList
     addTestSource('m({Str^}) {}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_SimpleFormalParameter_type_optionalPositional() async {
     // SimpleIdentifier  DefaultFormalParameter  FormalParameterList
     addTestSource('m([Str^]) {}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_SimpleFormalParameter_type_withName() async {
     // SimpleIdentifier  SimpleFormalParameter  FormalParameterList
     addTestSource('m(Str^ name) {}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_SimpleFormalParameter_type_withoutName1() async {
     // SimpleIdentifier  SimpleFormalParameter  FormalParameterList
     addTestSource('m(Str^) {}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_SimpleFormalParameter_type_withoutName2() async {
     // FormalParameterList
     addTestSource('m(^) {}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_SimpleFormalParameter_type_withoutName3() async {
     // SimpleIdentifier  SimpleFormalParameter  FormalParameterList
     addTestSource('m(int first, Str^) {}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_SwitchCase_before() async {
     // SwitchCase  SwitchStatement  Block
     addTestSource('main() {switch(k) {^case 1:}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_SwitchDefault_before() async {
     // SwitchDefault  SwitchStatement  Block
     addTestSource('main() {switch(k) { ^ default: return;}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_SwitchStatement_body_empty() async {
     // Token('}')  SwitchStatement  Block
     addTestSource('main() {switch(k) {^}}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_ThisExpression_constructor_param() async {
@@ -1808,7 +2112,7 @@
       class A implements I {
         A(this.^) {}
       }''');
-    await assertOpType(prefixed: true);
+    await assertOpType(prefixed: true, constructorBody: true);
   }
 
   test_ThisExpression_constructor_param2() async {
@@ -1817,7 +2121,7 @@
       class A implements I {
         A(this.f^) {}
       }''');
-    await assertOpType(prefixed: true);
+    await assertOpType(prefixed: true, constructorBody: true);
   }
 
   test_ThisExpression_constructor_param3() async {
@@ -1826,7 +2130,7 @@
       class A implements I {
         A(this.^f) {}
       }''');
-    await assertOpType(prefixed: true);
+    await assertOpType(prefixed: true, constructorBody: true);
   }
 
   test_ThisExpression_constructor_param4() async {
@@ -1835,7 +2139,7 @@
       class A implements I {
         A(Str^ this.foo) {}
       }''');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, constructorBody: true);
   }
 
   test_TopLevelVariableDeclaration_typed_name() async {
@@ -1866,13 +2170,13 @@
   test_TypeArgumentList() async {
     // SimpleIdentifier  BinaryExpression  ExpressionStatement
     addTestSource('main() { C<^> c; }');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_TypeArgumentList2() async {
     // TypeName  TypeArgumentList  TypeName
     addTestSource('main() { C<C^> c; }');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 
   test_TypeParameter() async {
@@ -1891,27 +2195,27 @@
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement  Block
     addTestSource('main() {var ^}');
-    await assertOpType();
+    await assertOpType(functionBody: true);
   }
 
   test_VariableDeclaration_name_hasSome_parameterizedType() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement  Block
     addTestSource('main() {List<int> m^}');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, functionBody: true);
   }
 
   test_VariableDeclaration_name_hasSome_simpleType() async {
     // SimpleIdentifier  VariableDeclaration  VariableDeclarationList
     // VariableDeclarationStatement  Block
     addTestSource('main() {String m^}');
-    await assertOpType(varNames: true);
+    await assertOpType(varNames: true, functionBody: true);
   }
 
   test_VariableDeclarationList_final() async {
     // VariableDeclarationList  VariableDeclarationStatement  Block
     addTestSource('main() {final ^}');
-    await assertOpType(typeNames: true);
+    await assertOpType(typeNames: true, functionBody: true);
   }
 }
 
@@ -1939,6 +2243,9 @@
       bool returnValue: false,
       bool statementLabel: false,
       bool staticMethodBody: false,
+      bool methodBody: false,
+      bool functionBody: false,
+      bool constructorBody: false,
       bool typeNames: false,
       bool varNames: false,
       bool voidReturn: false,
@@ -1965,6 +2272,10 @@
         reason: 'voidReturn');
     expect(visitor.inStaticMethodBody, staticMethodBody,
         reason: 'staticMethodBody');
+    expect(visitor.inMethodBody, methodBody, reason: 'methodBody');
+    expect(visitor.inFunctionBody, functionBody, reason: 'functionBody');
+    expect(visitor.inConstructorBody, constructorBody,
+        reason: 'constructorBody');
     expect(visitor.isPrefixed, prefixed, reason: 'prefixed');
     expect(visitor.suggestKind, kind, reason: 'suggestion kind');
   }
diff --git a/pkg/analyzer_plugin/test/src/utilities/completion/test_all.dart b/pkg/analyzer_plugin/test/src/utilities/completion/test_all.dart
index 3ec7ec6..6935d56 100644
--- a/pkg/analyzer_plugin/test/src/utilities/completion/test_all.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/completion/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/navigation/navigation_test.dart b/pkg/analyzer_plugin/test/src/utilities/navigation/navigation_test.dart
index 203f31f..8ec645b 100644
--- a/pkg/analyzer_plugin/test/src/utilities/navigation/navigation_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/navigation/navigation_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/navigation/test_all.dart b/pkg/analyzer_plugin/test/src/utilities/navigation/test_all.dart
index 0cb6e32..c48c1b6 100644
--- a/pkg/analyzer_plugin/test/src/utilities/navigation/test_all.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/navigation/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/string_utilities_test.dart b/pkg/analyzer_plugin/test/src/utilities/string_utilities_test.dart
index 6bc5350..456906e 100644
--- a/pkg/analyzer_plugin/test/src/utilities/string_utilities_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/string_utilities_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/test_all.dart b/pkg/analyzer_plugin/test/src/utilities/test_all.dart
index 01e8aa7..f7a8e3c 100644
--- a/pkg/analyzer_plugin/test/src/utilities/test_all.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart b/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart
index 8307500..3811ea4 100644
--- a/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/visitors/local_declaration_visitor_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/src/utilities/visitors/test_all.dart b/pkg/analyzer_plugin/test/src/utilities/visitors/test_all.dart
index e0b36d3..4dad061 100644
--- a/pkg/analyzer_plugin/test/src/utilities/visitors/test_all.dart
+++ b/pkg/analyzer_plugin/test/src/utilities/visitors/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/support/abstract_context.dart b/pkg/analyzer_plugin/test/support/abstract_context.dart
index 0af1e8d..8c7cdaf 100644
--- a/pkg/analyzer_plugin/test/support/abstract_context.dart
+++ b/pkg/analyzer_plugin/test/support/abstract_context.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
index 30ebe72..7a3b6bc 100644
--- a/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
+++ b/pkg/analyzer_plugin/test/support/abstract_single_unit.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/support/mock_sdk.dart b/pkg/analyzer_plugin/test/support/mock_sdk.dart
index 0a4c58a..f76516c4 100644
--- a/pkg/analyzer_plugin/test/support/mock_sdk.dart
+++ b/pkg/analyzer_plugin/test/support/mock_sdk.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/test_all.dart b/pkg/analyzer_plugin/test/test_all.dart
index cea3850..155cc47 100644
--- a/pkg/analyzer_plugin/test/test_all.dart
+++ b/pkg/analyzer_plugin/test/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart b/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
index a755f2b..3d17d82 100644
--- a/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 ec85ce6..b8a4aef 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/completion/completion_target_test.dart b/pkg/analyzer_plugin/test/utilities/completion/completion_target_test.dart
index f35574a..8e1674e 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/completion_target_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/completion_target_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/completion/flutter_util.dart b/pkg/analyzer_plugin/test/utilities/completion/flutter_util.dart
index 9888006..1f8b7aa 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/flutter_util.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/flutter_util.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/completion/inherited_reference_contributor_test.dart b/pkg/analyzer_plugin/test/utilities/completion/inherited_reference_contributor_test.dart
index 5143341..9ac962d 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/inherited_reference_contributor_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/inherited_reference_contributor_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/completion/test_all.dart b/pkg/analyzer_plugin/test/utilities/completion/test_all.dart
index cdc642d..ebca199 100644
--- a/pkg/analyzer_plugin/test/utilities/completion/test_all.dart
+++ b/pkg/analyzer_plugin/test/utilities/completion/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
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 5fb3de5..8b3178c 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
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/navigation_test.dart b/pkg/analyzer_plugin/test/utilities/navigation_test.dart
index e97fcfd..fdafcd3 100644
--- a/pkg/analyzer_plugin/test/utilities/navigation_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/navigation_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
index e2e91318..af79bc1 100644
--- a/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/range_factory_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/subscriptions/subscription_manager_test.dart b/pkg/analyzer_plugin/test/utilities/subscriptions/subscription_manager_test.dart
index 49cdae3..d1f1130 100644
--- a/pkg/analyzer_plugin/test/utilities/subscriptions/subscription_manager_test.dart
+++ b/pkg/analyzer_plugin/test/utilities/subscriptions/subscription_manager_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/subscriptions/test_all.dart b/pkg/analyzer_plugin/test/utilities/subscriptions/test_all.dart
index a72d98e..dd3a398 100644
--- a/pkg/analyzer_plugin/test/utilities/subscriptions/test_all.dart
+++ b/pkg/analyzer_plugin/test/utilities/subscriptions/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/test/utilities/test_all.dart b/pkg/analyzer_plugin/test/utilities/test_all.dart
index 7cc0dd2..398c9db 100644
--- a/pkg/analyzer_plugin/test/utilities/test_all.dart
+++ b/pkg/analyzer_plugin/test/utilities/test_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/api.dart b/pkg/analyzer_plugin/tool/spec/api.dart
index 1fd0c67..6e98267 100644
--- a/pkg/analyzer_plugin/tool/spec/api.dart
+++ b/pkg/analyzer_plugin/tool/spec/api.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/check_all_test.dart b/pkg/analyzer_plugin/tool/spec/check_all_test.dart
index b553b31..33f1cca 100644
--- a/pkg/analyzer_plugin/tool/spec/check_all_test.dart
+++ b/pkg/analyzer_plugin/tool/spec/check_all_test.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/codegen_dart.dart b/pkg/analyzer_plugin/tool/spec/codegen_dart.dart
index 8b736bb..f6d1533 100644
--- a/pkg/analyzer_plugin/tool/spec/codegen_dart.dart
+++ b/pkg/analyzer_plugin/tool/spec/codegen_dart.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart b/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart
index ade4b69..0669bef 100644
--- a/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart
+++ b/pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/codegen_inttest_methods.dart b/pkg/analyzer_plugin/tool/spec/codegen_inttest_methods.dart
index 88870a7a..8fec4fa 100644
--- a/pkg/analyzer_plugin/tool/spec/codegen_inttest_methods.dart
+++ b/pkg/analyzer_plugin/tool/spec/codegen_inttest_methods.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/codegen_matchers.dart b/pkg/analyzer_plugin/tool/spec/codegen_matchers.dart
index 480e46f..226c707 100644
--- a/pkg/analyzer_plugin/tool/spec/codegen_matchers.dart
+++ b/pkg/analyzer_plugin/tool/spec/codegen_matchers.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/codegen_protocol_common.dart b/pkg/analyzer_plugin/tool/spec/codegen_protocol_common.dart
index a636b5b..4f81c83 100644
--- a/pkg/analyzer_plugin/tool/spec/codegen_protocol_common.dart
+++ b/pkg/analyzer_plugin/tool/spec/codegen_protocol_common.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/codegen_protocol_constants.dart b/pkg/analyzer_plugin/tool/spec/codegen_protocol_constants.dart
index d224c46..755f586 100644
--- a/pkg/analyzer_plugin/tool/spec/codegen_protocol_constants.dart
+++ b/pkg/analyzer_plugin/tool/spec/codegen_protocol_constants.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/from_html.dart b/pkg/analyzer_plugin/tool/spec/from_html.dart
index 87b41c2..34f8a62 100644
--- a/pkg/analyzer_plugin/tool/spec/from_html.dart
+++ b/pkg/analyzer_plugin/tool/spec/from_html.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/generate_all.dart b/pkg/analyzer_plugin/tool/spec/generate_all.dart
index 7014e3f..f60d83a 100644
--- a/pkg/analyzer_plugin/tool/spec/generate_all.dart
+++ b/pkg/analyzer_plugin/tool/spec/generate_all.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/generate_files b/pkg/analyzer_plugin/tool/spec/generate_files
index 0651cb2..da36490 100755
--- a/pkg/analyzer_plugin/tool/spec/generate_files
+++ b/pkg/analyzer_plugin/tool/spec/generate_files
@@ -1,5 +1,5 @@
 #!/usr/bin/env bash
-# Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+# Copyright (c) 2014, 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.
 #
diff --git a/pkg/analyzer_plugin/tool/spec/implied_types.dart b/pkg/analyzer_plugin/tool/spec/implied_types.dart
index 49531b7..856b2a4 100644
--- a/pkg/analyzer_plugin/tool/spec/implied_types.dart
+++ b/pkg/analyzer_plugin/tool/spec/implied_types.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
+// Copyright (c) 2014, 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.
 
diff --git a/pkg/analyzer_plugin/tool/spec/to_html.dart b/pkg/analyzer_plugin/tool/spec/to_html.dart
index 64c8135..0956e6f 100644
--- a/pkg/analyzer_plugin/tool/spec/to_html.dart
+++ b/pkg/analyzer_plugin/tool/spec/to_html.dart
@@ -1,4 +1,4 @@
-// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
+// 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.
 
diff --git a/pkg/compiler/lib/src/backend_strategy.dart b/pkg/compiler/lib/src/backend_strategy.dart
index d7d5d0d..c3aefb1 100644
--- a/pkg/compiler/lib/src/backend_strategy.dart
+++ b/pkg/compiler/lib/src/backend_strategy.dart
@@ -4,7 +4,6 @@
 
 library dart2js.backend_strategy;
 
-import 'closure.dart' show ClosureConversionTask;
 import 'common.dart';
 import 'common/tasks.dart';
 import 'deferred_load.dart' show OutputUnitData;
@@ -14,7 +13,6 @@
 import 'js_backend/inferred_data.dart';
 import 'js_backend/js_backend.dart';
 import 'js_backend/native_data.dart';
-import 'js_emitter/sorter.dart';
 import 'ssa/ssa.dart';
 import 'types/types.dart';
 import 'universe/world_builder.dart';
@@ -24,17 +22,14 @@
 /// and code generation.
 abstract class BackendStrategy {
   /// Create the [JClosedWorld] from [closedWorld].
-  JClosedWorld createJClosedWorld(KClosedWorld closedWorld);
+  JClosedWorld createJClosedWorld(
+      KClosedWorld closedWorld, OutputUnitData outputUnitData);
 
-  /// Converts [data] to use backend entities instead of frontend entities.
-  OutputUnitData convertOutputUnitData(OutputUnitData data);
-
-  /// Create the task that analyzes the code to see what closures need to be
-  /// rewritten.
-  ClosureConversionTask get closureDataLookup;
-
-  /// The [Sorter] used for sorting elements in the generated code.
-  Sorter get sorter;
+  /// Registers [closedWorld] as the current closed world used by this backend
+  /// strategy.
+  ///
+  /// This is used to support serialization after type inference.
+  void registerJClosedWorld(JClosedWorld closedWorld);
 
   /// Creates the [CodegenWorldBuilder] used by the codegen enqueuer.
   CodegenWorldBuilder createCodegenWorldBuilder(
diff --git a/pkg/compiler/lib/src/closure.dart b/pkg/compiler/lib/src/closure.dart
index 3247c80..22b3fc7 100644
--- a/pkg/compiler/lib/src/closure.dart
+++ b/pkg/compiler/lib/src/closure.dart
@@ -7,11 +7,11 @@
 import 'common.dart';
 import 'elements/entities.dart';
 import 'elements/types.dart';
+import 'js_model/closure.dart';
+import 'js_model/element_map.dart';
+import 'serialization/serialization.dart';
 
-// TODO(johnniwinther,efortuna): Split [ClosureConversionTask] from
-// [ClosureDataLookup].
-abstract class ClosureConversionTask extends CompilerTask
-    implements ClosureDataLookup {
+abstract class ClosureConversionTask extends CompilerTask {
   ClosureConversionTask(Measurer measurer) : super(measurer);
 }
 
@@ -19,7 +19,15 @@
 /// to preserve Dart semantics when compiled to JavaScript. Given a particular
 /// node to look up, it returns a information about the internal representation
 /// of how closure conversion is implemented. T is an ir.Node or Node.
-abstract class ClosureDataLookup {
+abstract class ClosureData {
+  /// Deserializes a [ClosureData] object from [source].
+  factory ClosureData.readFromDataSource(
+          JsToElementMap elementMap, DataSource source) =
+      ClosureDataImpl.readFromDataSource;
+
+  /// Serializes this [ClosureData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Look up information about the variables that have been mutated and are
   /// used inside the scope of [node].
   ScopeInfo getScopeInfo(MemberEntity member);
@@ -35,6 +43,14 @@
   CapturedScope getCapturedScope(MemberEntity entity);
 }
 
+/// Enum used for identifying [ScopeInfo] subclasses in serialization.
+enum ScopeInfoKind {
+  scopeInfo,
+  capturedScope,
+  capturedLoopScope,
+  closureRepresentationInfo,
+}
+
 /// Class that represents one level of scoping information, whether this scope
 /// is a closure or not. This is specifically used to store information
 /// about the usage of variables in try or sync blocks, because they need to be
@@ -47,6 +63,27 @@
 class ScopeInfo {
   const ScopeInfo();
 
+  /// Deserializes a [ScopeInfo] object from [source].
+  factory ScopeInfo.readFromDataSource(DataSource source) {
+    ScopeInfoKind kind = source.readEnum(ScopeInfoKind.values);
+    switch (kind) {
+      case ScopeInfoKind.scopeInfo:
+        return new JsScopeInfo.readFromDataSource(source);
+      case ScopeInfoKind.capturedScope:
+        return new JsCapturedScope.readFromDataSource(source);
+      case ScopeInfoKind.capturedLoopScope:
+        return new JsCapturedLoopScope.readFromDataSource(source);
+      case ScopeInfoKind.closureRepresentationInfo:
+        return new KernelClosureClassInfo.readFromDataSource(source);
+    }
+    throw new UnsupportedError('Unexpected ScopeInfoKind $kind');
+  }
+
+  /// Serializes this [ScopeInfo] to [sink].
+  void writeToDataSink(DataSink sink) {
+    throw new UnsupportedError('${runtimeType}.writeToDataSink');
+  }
+
   /// Convenience reference pointer to the element representing `this`.
   /// If this scope is not in an instance member, it will be null.
   Local get thisLocal => null;
@@ -84,6 +121,21 @@
 class CapturedScope extends ScopeInfo {
   const CapturedScope();
 
+  /// Deserializes a [CapturedScope] object from [source].
+  factory CapturedScope.readFromDataSource(DataSource source) {
+    ScopeInfoKind kind = source.readEnum(ScopeInfoKind.values);
+    switch (kind) {
+      case ScopeInfoKind.scopeInfo:
+      case ScopeInfoKind.closureRepresentationInfo:
+        throw new UnsupportedError('Unexpected CapturedScope kind $kind');
+      case ScopeInfoKind.capturedScope:
+        return new JsCapturedScope.readFromDataSource(source);
+      case ScopeInfoKind.capturedLoopScope:
+        return new JsCapturedLoopScope.readFromDataSource(source);
+    }
+    throw new UnsupportedError('Unexpected ScopeInfoKind $kind');
+  }
+
   /// If true, this closure accesses a variable that was defined in an outside
   /// scope and this variable gets modified at some point (sometimes we say that
   /// variable has been "captured"). In this situation, access to this variable
@@ -116,6 +168,20 @@
 class CapturedLoopScope extends CapturedScope {
   const CapturedLoopScope();
 
+  /// Deserializes a [CapturedLoopScope] object from [source].
+  factory CapturedLoopScope.readFromDataSource(DataSource source) {
+    ScopeInfoKind kind = source.readEnum(ScopeInfoKind.values);
+    switch (kind) {
+      case ScopeInfoKind.scopeInfo:
+      case ScopeInfoKind.closureRepresentationInfo:
+      case ScopeInfoKind.capturedScope:
+        throw new UnsupportedError('Unexpected CapturedLoopScope kind $kind');
+      case ScopeInfoKind.capturedLoopScope:
+        return new JsCapturedLoopScope.readFromDataSource(source);
+    }
+    throw new UnsupportedError('Unexpected ScopeInfoKind $kind');
+  }
+
   /// True if this loop scope declares in the first part of the loop
   /// `for (<here>;...;...)` any variables that need to be boxed.
   bool get hasBoxedLoopVariables => false;
@@ -169,6 +235,21 @@
 class ClosureRepresentationInfo extends ScopeInfo {
   const ClosureRepresentationInfo();
 
+  /// Deserializes a [ClosureRepresentationInfo] object from [source].
+  factory ClosureRepresentationInfo.readFromDataSource(DataSource source) {
+    ScopeInfoKind kind = source.readEnum(ScopeInfoKind.values);
+    switch (kind) {
+      case ScopeInfoKind.scopeInfo:
+      case ScopeInfoKind.capturedScope:
+      case ScopeInfoKind.capturedLoopScope:
+        throw new UnsupportedError(
+            'Unexpected ClosureRepresentationInfo kind $kind');
+      case ScopeInfoKind.closureRepresentationInfo:
+        return new KernelClosureClassInfo.readFromDataSource(source);
+    }
+    throw new UnsupportedError('Unexpected ScopeInfoKind $kind');
+  }
+
   /// The original local function before any translation.
   ///
   /// Will be null for methods.
@@ -231,12 +312,17 @@
 /// A local variable that contains the box object holding the [BoxFieldElement]
 /// fields.
 class BoxLocal extends Local {
-  final String name;
+  final ClassEntity container;
 
-  final int hashCode = _nextHashCode = (_nextHashCode + 10007).toUnsigned(30);
-  static int _nextHashCode = 0;
+  BoxLocal(this.container);
 
-  BoxLocal(this.name);
+  String get name => container.name;
+
+  bool operator ==(other) {
+    return other is BoxLocal && other.container == container;
+  }
+
+  int get hashCode => container.hashCode;
 
   String toString() => 'BoxLocal($name)';
 }
@@ -245,7 +331,7 @@
 class ThisLocal extends Local {
   final ClassEntity enclosingClass;
 
-  ThisLocal(MemberEntity member) : enclosingClass = member.enclosingClass;
+  ThisLocal(this.enclosingClass);
 
   String get name => 'this';
 
@@ -284,7 +370,7 @@
 /// Move the below classes to a JS model eventually.
 ///
 abstract class JSEntity implements MemberEntity {
-  Local get declaredEntity;
+  String get declaredName;
 }
 
 abstract class PrivatelyNamedJSEntity implements JSEntity {
diff --git a/pkg/compiler/lib/src/compiler.dart b/pkg/compiler/lib/src/compiler.dart
index 1650e96..9140c04 100644
--- a/pkg/compiler/lib/src/compiler.dart
+++ b/pkg/compiler/lib/src/compiler.dart
@@ -360,6 +360,7 @@
   void generateJavaScriptCode(
       GlobalTypeInferenceResults globalInferenceResults) {
     JClosedWorld closedWorld = globalInferenceResults.closedWorld;
+    backendStrategy.registerJClosedWorld(closedWorld);
     FunctionEntity mainFunction = closedWorld.elementEnvironment.mainFunction;
     reporter.log('Compiling...');
     phase = PHASE_COMPILING;
@@ -402,7 +403,7 @@
         enqueuer.createCodegenEnqueuer(closedWorld, globalInferenceResults);
     _codegenWorldBuilder = codegenEnqueuer.worldBuilder;
     codegenEnqueuer.applyImpact(backend.onCodegenStart(
-        closedWorld, _codegenWorldBuilder, backendStrategy.sorter));
+        closedWorld, _codegenWorldBuilder, closedWorld.sorter));
     return codegenEnqueuer;
   }
 
@@ -410,14 +411,11 @@
   JClosedWorld closeResolution(FunctionEntity mainFunction) {
     phase = PHASE_DONE_RESOLVING;
 
-    KClosedWorld closedWorld = resolutionWorldBuilder.closeWorld(reporter);
-    OutputUnitData result = deferredLoadTask.run(mainFunction, closedWorld);
-    JClosedWorld closedWorldRefiner =
-        backendStrategy.createJClosedWorld(closedWorld);
-
-    backend.onDeferredLoadComplete(result);
-
-    return closedWorldRefiner;
+    KClosedWorld kClosedWorld = resolutionWorldBuilder.closeWorld(reporter);
+    OutputUnitData result = deferredLoadTask.run(mainFunction, kClosedWorld);
+    JClosedWorld jClosedWorld =
+        backendStrategy.createJClosedWorld(kClosedWorld, result);
+    return jClosedWorld;
   }
 
   /**
diff --git a/pkg/compiler/lib/src/constants/expressions.dart b/pkg/compiler/lib/src/constants/expressions.dart
index 38a4e71..79419e8 100644
--- a/pkg/compiler/lib/src/constants/expressions.dart
+++ b/pkg/compiler/lib/src/constants/expressions.dart
@@ -481,7 +481,7 @@
         return new NonConstantValue();
       }
       if (map.containsKey(key)) {
-        environment.reportWarning(keys[i], MessageKind.EQUAL_MAP_ENTRY_KEY, {});
+        environment.reportError(keys[i], MessageKind.EQUAL_MAP_ENTRY_KEY, {});
       }
       map[key] = value;
     }
diff --git a/pkg/compiler/lib/src/dart2js.dart b/pkg/compiler/lib/src/dart2js.dart
index 5555b38..c1db5c4 100644
--- a/pkg/compiler/lib/src/dart2js.dart
+++ b/pkg/compiler/lib/src/dart2js.dart
@@ -7,6 +7,7 @@
 import 'dart:async' show Future;
 import 'dart:convert' show utf8, LineSplitter;
 import 'dart:io' show exit, File, FileMode, Platform, stdin, stderr;
+import 'dart:isolate' show Isolate;
 
 import 'package:front_end/src/api_unstable/dart2js.dart' as fe;
 import 'package:package_config/discovery.dart' show findPackages;
@@ -20,7 +21,7 @@
 import 'util/uri_extras.dart';
 import 'util/util.dart' show stackTraceFilePrefix;
 
-const String LIBRARY_ROOT = '../../../../../sdk';
+const String LIBRARY_ROOT = '../../../../sdk';
 const String OUTPUT_LANGUAGE_DART = 'Dart';
 
 /**
@@ -561,9 +562,13 @@
 }
 
 Future<api.CompilationResult> compilerMain(List<String> arguments,
-    {fe.InitializedCompilerState kernelInitializedCompilerState}) {
-  var root = uriPathToNative("/$LIBRARY_ROOT");
-  arguments = <String>['--library-root=${Platform.script.toFilePath()}$root']
+    {fe.InitializedCompilerState kernelInitializedCompilerState}) async {
+  Uri script = Platform.script;
+  if (script.isScheme("package")) {
+    script = await Isolate.resolvePackageUri(script);
+  }
+  Uri libraryRoot = script.resolve(LIBRARY_ROOT);
+  arguments = <String>['--library-root=${libraryRoot.toFilePath()}']
     ..addAll(arguments);
   return compile(arguments,
       kernelInitializedCompilerState: kernelInitializedCompilerState);
diff --git a/pkg/compiler/lib/src/deferred_load.dart b/pkg/compiler/lib/src/deferred_load.dart
index 1856372..7243452 100644
--- a/pkg/compiler/lib/src/deferred_load.dart
+++ b/pkg/compiler/lib/src/deferred_load.dart
@@ -22,6 +22,7 @@
 import 'elements/entities.dart';
 import 'kernel/kelements.dart' show KLocalFunction;
 import 'library_loader.dart';
+import 'serialization/serialization.dart';
 import 'universe/use.dart';
 import 'universe/world_impact.dart'
     show ImpactUseCase, WorldImpact, WorldImpactVisitorImpl;
@@ -87,11 +88,11 @@
   String get name => 'Deferred Loading';
 
   /// The OutputUnit that will be loaded when the program starts.
-  OutputUnit mainOutputUnit;
+  OutputUnit _mainOutputUnit;
 
   /// A set containing (eventually) all output units that will result from the
   /// program.
-  final List<OutputUnit> allOutputUnits = new List<OutputUnit>();
+  final List<OutputUnit> _allOutputUnits = new List<OutputUnit>();
 
   /// Will be `true` if the program contains deferred libraries.
   bool isProgramSplit = false;
@@ -142,9 +143,9 @@
   bool get disableProgramSplit => compiler.options.disableProgramSplit;
 
   DeferredLoadTask(this.compiler) : super(compiler.measurer) {
-    mainOutputUnit = new OutputUnit(true, 'main', new Set<ImportEntity>());
-    importSets.mainSet.unit = mainOutputUnit;
-    allOutputUnits.add(mainOutputUnit);
+    _mainOutputUnit = new OutputUnit(true, 'main', new Set<ImportEntity>());
+    importSets.mainSet.unit = _mainOutputUnit;
+    _allOutputUnits.add(_mainOutputUnit);
   }
 
   KElementEnvironment get elementEnvironment =>
@@ -603,7 +604,7 @@
           importSet._imports.map((i) => i.declaration).toSet());
       counter++;
       importSet.unit = unit;
-      allOutputUnits.add(unit);
+      _allOutputUnits.add(unit);
     }
 
     // Generate an output unit for all import sets that are associated with an
@@ -614,7 +615,7 @@
     _constantToSet.values.forEach(addUnit);
 
     // Sort output units to make the output of the compiler more stable.
-    allOutputUnits.sort();
+    _allOutputUnits.sort();
   }
 
   void _setupHunksToLoad() {
@@ -641,7 +642,7 @@
     // shared by S2 such that S2 not a superset of S1. Let lib_s be a library in
     // S1 not in S2. lib_s must depend on C, and then in turn on D. Therefore D
     // is not in the right output unit.
-    List sortedOutputUnits = allOutputUnits.reversed.toList();
+    List<OutputUnit> sortedOutputUnits = _allOutputUnits.reversed.toList();
 
     // For each deferred import we find out which outputUnits to load.
     for (ImportEntity import in allDeferredImports) {
@@ -650,7 +651,7 @@
       // list.
       hunksToLoad[_importDeferName[import]] = new List<OutputUnit>();
       for (OutputUnit outputUnit in sortedOutputUnits) {
-        if (outputUnit == mainOutputUnit) continue;
+        if (outputUnit == _mainOutputUnit) continue;
         if (outputUnit._imports.contains(import)) {
           hunksToLoad[_importDeferName[import]].add(outputUnit);
         }
@@ -811,12 +812,12 @@
     cleanup();
     return new OutputUnitData(
         this.isProgramSplit && !disableProgramSplit,
-        this.mainOutputUnit,
+        this._mainOutputUnit,
         classMap,
         memberMap,
         localFunctionMap,
         constantMap,
-        importSets);
+        _allOutputUnits);
   }
 
   /// Frees up strategy-specific temporary data.
@@ -944,14 +945,14 @@
     });
 
     Map<OutputUnit, String> text = {};
-    for (OutputUnit outputUnit in allOutputUnits) {
+    for (OutputUnit outputUnit in _allOutputUnits) {
       StringBuffer unitText = new StringBuffer();
       if (outputUnit.isMainOutput) {
         unitText.write(' <MAIN UNIT>');
       } else {
         unitText.write(' imports:');
         var imports = outputUnit._imports
-            .map((i) => '${i.enclosingLibrary.canonicalUri.resolveUri(i.uri)}')
+            .map((i) => '${i.enclosingLibraryUri.resolveUri(i.uri)}')
             .toList();
         for (var i in imports..sort()) {
           unitText.write('\n   $i:');
@@ -975,7 +976,7 @@
     }
 
     StringBuffer sb = new StringBuffer();
-    for (OutputUnit outputUnit in allOutputUnits.toList()
+    for (OutputUnit outputUnit in _allOutputUnits.toList()
       ..sort((a, b) => text[a].compareTo(text[b]))) {
       sb.write('\n\n-------------------------------\n');
       sb.write('Output unit: ${outputUnit.name}');
@@ -1271,13 +1272,17 @@
 // TODO(sigmund): consider moving here every piece of data used as a result of
 // deferred loading (including hunksToLoad, etc).
 class OutputUnitData {
+  /// Tag used for identifying serialized [OutputUnitData] objects in a
+  /// debugging data stream.
+  static const String tag = 'output-unit-data';
+
   final bool isProgramSplit;
   final OutputUnit mainOutputUnit;
   final Map<ClassEntity, OutputUnit> _classToUnit;
   final Map<MemberEntity, OutputUnit> _memberToUnit;
   final Map<Local, OutputUnit> _localFunctionToUnit;
   final Map<ConstantValue, OutputUnit> _constantToUnit;
-  final ImportSetLattice _importSets;
+  final Iterable<OutputUnit> outputUnits;
 
   OutputUnitData(
       this.isProgramSplit,
@@ -1286,8 +1291,9 @@
       this._memberToUnit,
       this._localFunctionToUnit,
       this._constantToUnit,
-      this._importSets);
+      this.outputUnits);
 
+  // Creates J-world data from the K-world data.
   OutputUnitData.from(
       OutputUnitData other,
       Map<ClassEntity, OutputUnit> Function(
@@ -1300,13 +1306,94 @@
           convertConstantMap)
       : isProgramSplit = other.isProgramSplit,
         mainOutputUnit = other.mainOutputUnit,
+        this.outputUnits = other.outputUnits,
         _memberToUnit =
             convertMemberMap(other._memberToUnit, other._localFunctionToUnit),
         _classToUnit =
             convertClassMap(other._classToUnit, other._localFunctionToUnit),
+        // Local functions only make sense in the K-world model.
         _localFunctionToUnit = const <Local, OutputUnit>{},
-        _constantToUnit = convertConstantMap(other._constantToUnit),
-        _importSets = other._importSets;
+        _constantToUnit = convertConstantMap(other._constantToUnit);
+
+  /// Deserializes an [OutputUnitData] object from [source].
+  factory OutputUnitData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    bool isProgramSplit = source.readBool();
+    List<ImportEntity> imports = source.readList(() {
+      String name = source.readString();
+      Uri uri = source.readUri();
+      Uri enclosingLibraryUri = source.readUri();
+      bool isDeferred = source.readBool();
+      return new ImportEntity(isDeferred, name, uri, enclosingLibraryUri);
+    });
+    List<OutputUnit> outputUnits = source.readList(() {
+      bool isMainOutput = source.readBool();
+      String name = source.readString();
+      Set<ImportEntity> importSet = source.readList(() {
+        return imports[source.readInt()];
+      }).toSet();
+      return new OutputUnit(isMainOutput, name, importSet);
+    });
+    OutputUnit mainOutputUnit = outputUnits[source.readInt()];
+
+    Map<ClassEntity, OutputUnit> classToUnit = source.readClassMap(() {
+      return outputUnits[source.readInt()];
+    });
+    Map<MemberEntity, OutputUnit> memberToUnit = source.readMemberMap(() {
+      return outputUnits[source.readInt()];
+    });
+    Map<ConstantValue, OutputUnit> constantToUnit = source.readConstantMap(() {
+      return outputUnits[source.readInt()];
+    });
+    source.end(tag);
+    return new OutputUnitData(
+        isProgramSplit,
+        mainOutputUnit,
+        classToUnit,
+        memberToUnit,
+        // Local functions only make sense in the K-world model.
+        const <Local, OutputUnit>{},
+        constantToUnit,
+        outputUnits);
+  }
+
+  /// Serializes this [OutputUnitData] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeBool(isProgramSplit);
+    Map<ImportEntity, int> importIndex = {};
+    for (OutputUnit outputUnit in outputUnits) {
+      for (ImportEntity import in outputUnit._imports) {
+        importIndex[import] ??= importIndex.length;
+      }
+    }
+    sink.writeList(importIndex.keys, (ImportEntity import) {
+      sink.writeString(import.name);
+      sink.writeUri(import.uri);
+      sink.writeUri(import.enclosingLibraryUri);
+      sink.writeBool(import.isDeferred);
+    });
+    Map<OutputUnit, int> outputUnitIndices = {};
+    sink.writeList(outputUnits, (OutputUnit outputUnit) {
+      outputUnitIndices[outputUnit] = outputUnitIndices.length;
+      sink.writeBool(outputUnit.isMainOutput);
+      sink.writeString(outputUnit.name);
+      sink.writeList(outputUnit._imports, (ImportEntity import) {
+        sink.writeInt(importIndex[import]);
+      });
+    });
+    sink.writeInt(outputUnitIndices[mainOutputUnit]);
+    sink.writeClassMap(_classToUnit, (OutputUnit outputUnit) {
+      sink.writeInt(outputUnitIndices[outputUnit]);
+    });
+    sink.writeMemberMap(_memberToUnit, (OutputUnit outputUnit) {
+      sink.writeInt(outputUnitIndices[outputUnit]);
+    });
+    sink.writeConstantMap(_constantToUnit, (OutputUnit outputUnit) {
+      sink.writeInt(outputUnitIndices[outputUnit]);
+    });
+    sink.end(tag);
+  }
 
   /// Returns the [OutputUnit] where [cls] belongs.
   OutputUnit outputUnitForClass(ClassEntity cls) {
diff --git a/pkg/compiler/lib/src/diagnostics/messages.dart b/pkg/compiler/lib/src/diagnostics/messages.dart
index 13666dd..31c1687 100644
--- a/pkg/compiler/lib/src/diagnostics/messages.dart
+++ b/pkg/compiler/lib/src/diagnostics/messages.dart
@@ -112,6 +112,11 @@
   WRONG_ARGUMENT_FOR_JS_FIRST,
   WRONG_ARGUMENT_FOR_JS_SECOND,
   WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT,
+  // TODO(32557): Remove these when issue 32557 is fixed.
+  SWITCH_CASE_FORBIDDEN,
+  SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
+  SWITCH_CASE_TYPES_NOT_EQUAL,
+  SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
 }
 
 /// A message template for an error, warning, hint or info message generated
@@ -669,6 +674,20 @@
           howToFix:
               "Try removing 'external' keyword or annotating the function "
               "as a js-interop function."),
+
+      // TODO(32557): Remove these when issue 32557 is fixed.
+      MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS: const MessageTemplate(
+          MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
+          "'case' expression type '#{type}' overrides 'operator =='."),
+      MessageKind.SWITCH_CASE_FORBIDDEN: const MessageTemplate(
+          MessageKind.SWITCH_CASE_FORBIDDEN,
+          "'case' expression may not be of type '#{type}'."),
+      MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL: const MessageTemplate(
+          MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL,
+          "'case' expressions do not all have type '#{type}'."),
+      MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE: const MessageTemplate(
+          MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
+          "'case' expression of type '#{type}'."),
     }); // End of TEMPLATES.
 
   String toString() => template;
diff --git a/pkg/compiler/lib/src/dump_info.dart b/pkg/compiler/lib/src/dump_info.dart
index fc1c3c2..f05939b 100644
--- a/pkg/compiler/lib/src/dump_info.dart
+++ b/pkg/compiler/lib/src/dump_info.dart
@@ -361,17 +361,17 @@
 
   OutputUnitInfo _unitInfoForMember(MemberEntity entity) {
     return _infoFromOutputUnit(
-        compiler.backend.outputUnitData.outputUnitForMember(entity));
+        closedWorld.outputUnitData.outputUnitForMember(entity));
   }
 
   OutputUnitInfo _unitInfoForClass(ClassEntity entity) {
     return _infoFromOutputUnit(
-        compiler.backend.outputUnitData.outputUnitForClass(entity));
+        closedWorld.outputUnitData.outputUnitForClass(entity));
   }
 
   OutputUnitInfo _unitInfoForConstant(ConstantValue constant) {
     OutputUnit outputUnit =
-        compiler.backend.outputUnitData.outputUnitForConstant(constant);
+        closedWorld.outputUnitData.outputUnitForConstant(constant);
     if (outputUnit == null) {
       assert(constant is InterceptorConstantValue);
       return null;
diff --git a/pkg/compiler/lib/src/elements/entities.dart b/pkg/compiler/lib/src/elements/entities.dart
index 7acd088..0adff08 100644
--- a/pkg/compiler/lib/src/elements/entities.dart
+++ b/pkg/compiler/lib/src/elements/entities.dart
@@ -7,6 +7,7 @@
 import 'package:front_end/src/api_unstable/dart2js.dart' show AsyncModifier;
 
 import '../common.dart';
+import '../serialization/serialization.dart';
 import '../universe/call_structure.dart' show CallStructure;
 import '../util/util.dart';
 import 'names.dart';
@@ -37,15 +38,22 @@
 /// Stripped down super interface for import entities.
 ///
 /// The [name] property corresponds to the prefix name, if any.
-abstract class ImportEntity extends Entity {
-  /// The library where this import occurs (where the import is declared).
-  LibraryEntity get enclosingLibrary;
+class ImportEntity {
+  final String name;
+
+  /// The canonical URI of the library where this import occurs
+  /// (where the import is declared).
+  final Uri enclosingLibraryUri;
 
   /// Whether the import is a deferred import.
-  bool get isDeferred;
+  final bool isDeferred;
 
   /// The target import URI.
-  Uri get uri;
+  final Uri uri;
+
+  ImportEntity(this.isDeferred, this.name, this.uri, this.enclosingLibraryUri);
+
+  String toString() => 'import($name:${isDeferred ? ' deferred' : ''})';
 }
 
 /// Stripped down super interface for class like entities.
@@ -251,6 +259,10 @@
 
 /// The structure of function parameters.
 class ParameterStructure {
+  /// Tag used for identifying serialized [ParameterStructure] objects in a
+  /// debugging data stream.
+  static const String tag = 'parameter-structure';
+
   /// The number of required (positional) parameters.
   final int requiredParameters;
 
@@ -278,6 +290,28 @@
         type.typeVariables.length);
   }
 
+  /// Deserializes a [ParameterStructure] object from [source].
+  factory ParameterStructure.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    int requiredParameters = source.readInt();
+    int positionalParameters = source.readInt();
+    List<String> namedParameters = source.readStrings();
+    int typeParameters = source.readInt();
+    source.end(tag);
+    return new ParameterStructure(requiredParameters, positionalParameters,
+        namedParameters, typeParameters);
+  }
+
+  /// Serializes this [ParameterStructure] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeInt(requiredParameters);
+    sink.writeInt(positionalParameters);
+    sink.writeStrings(namedParameters);
+    sink.writeInt(typeParameters);
+    sink.end(tag);
+  }
+
   /// The number of optional parameters (positional or named).
   int get optionalParameters =>
       positionalParameters - requiredParameters + namedParameters.length;
diff --git a/pkg/compiler/lib/src/elements/indexed.dart b/pkg/compiler/lib/src/elements/indexed.dart
index f20a4ffab..56defb0 100644
--- a/pkg/compiler/lib/src/elements/indexed.dart
+++ b/pkg/compiler/lib/src/elements/indexed.dart
@@ -53,12 +53,16 @@
 
 /// Base implementation for an index based map of entities of type [E].
 abstract class EntityMapBase<E extends _Indexed> {
+  int _size = 0;
   List<E> _list = <E>[];
 
   /// Returns the [index]th entity in the map.
   E getEntity(int index) => _list[index];
 
-  /// Returns the number entities in the map.
+  /// Returns the number of non-null entities in the map.
+  int get size => _size;
+
+  /// Returns the number (null and non-null) entities in the map.
   int get length => _list.length;
 }
 
@@ -73,8 +77,26 @@
     assert(entity._index == null);
     entity._index = _list.length;
     _list.add(entity);
+    _size++;
     return entity;
   }
+
+  /// Registers a new [entity] by the given [index].
+  E0 registerByIndex<E0 extends E>(int index, E0 entity) {
+    assert(index >= _list.length);
+    _list.length = index;
+    return register(entity);
+  }
+
+  /// Calls [f] for each non-null entity.
+  void forEach<E0 extends E>(void f(E0 entity)) {
+    for (int index = 0; index < _list.length; index++) {
+      E entity = _list[index];
+      if (entity != null) {
+        f(entity);
+      }
+    }
+  }
 }
 
 /// Base implementation of an index based map of entities of type [E] with a
@@ -86,7 +108,7 @@
   /// Returns the data object stored for the [index]th entity.
   D getData(E entity) {
     int index = entity._index;
-    if (index < length && index >= _data.length) {
+    if (index < _list.length && index >= _data.length) {
       throw new StateError(
           'Data is in the process of being created for ${_list[index]}.');
     }
@@ -111,12 +133,39 @@
   E0 register<E0 extends E, D0 extends D>(E0 entity, D0 data) {
     assert(entity != null);
     assert(entity._index == null);
+    assert(
+        _list.length == _data.length,
+        'Data list length ${_data.length} inconsistent '
+        'with entity list length ${_list.length}.');
     entity._index = _list.length;
     _list.add(entity);
+    _size++;
     assert(data != null);
     _data.add(data);
     return entity;
   }
+
+  /// Registers a new [entity] with an associated [data] object by the given
+  /// [index].
+  E0 registerByIndex<E0 extends E, D0 extends D>(
+      int index, E0 entity, D0 data) {
+    assert(index >= _list.length);
+    _list.length = _data.length = index;
+    return register(entity, data);
+  }
+
+  /// Calls [f] for each non-null entity with its corresponding data object.
+  void forEach<E0 extends E, D0 extends D>(void f(E0 entity, D0 data)) {
+    if (_list.length != _data.length) {
+      throw new StateError('Data is in the process of being created.');
+    }
+    for (int index = 0; index < _list.length; index++) {
+      E entity = _list[index];
+      if (entity != null) {
+        f(entity, _data[index]);
+      }
+    }
+  }
 }
 
 /// Base implementation for an index based of entities of type [E] with a
@@ -128,7 +177,7 @@
   /// Returns the environment object stored for the [index]th entity.
   V getEnv(E entity) {
     int index = entity._index;
-    if (index < length && index >= _env.length) {
+    if (index < _list.length && index >= _env.length) {
       throw new StateError(
           'Env is in the process of being created for ${_list[index]}.');
     }
@@ -149,12 +198,48 @@
       E0 entity, D0 data, V0 env) {
     assert(entity != null);
     assert(entity._index == null);
+    assert(
+        _list.length == _data.length,
+        'Data list length ${_data.length} inconsistent '
+        'with entity list length ${_list.length}.');
+    assert(
+        _list.length == _env.length,
+        'Env list length ${_env.length} inconsistent '
+        'with entity list length ${_list.length}.');
     entity._index = _list.length;
     _list.add(entity);
+    _size++;
     assert(data != null);
     _data.add(data);
     assert(env != null);
     _env.add(env);
     return entity;
   }
+
+  /// Registers a new [entity] with an associated [data] object and environment
+  /// [env] by the given [index].
+  E0 registerByIndex<E0 extends E, D0 extends D, V0 extends V>(
+      int index, E0 entity, D0 data, V0 env) {
+    assert(index >= _list.length);
+    _list.length = _data.length = _env.length = index;
+    return register(entity, data, env);
+  }
+
+  /// Calls [f] for each non-null entity with its corresponding data object and
+  /// environment.
+  void forEach<E0 extends E, D0 extends D, V0 extends V>(
+      void f(E0 entity, D0 data, V0 env)) {
+    if (_list.length != _data.length) {
+      throw new StateError('Data is in the process of being created.');
+    }
+    if (_list.length != _env.length) {
+      throw new StateError('Env is in the process of being created.');
+    }
+    for (int index = 0; index < _list.length; index++) {
+      E entity = _list[index];
+      if (entity != null) {
+        f(entity, _data[index], _env[index]);
+      }
+    }
+  }
 }
diff --git a/pkg/compiler/lib/src/inferrer/builder_kernel.dart b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
index 2a6c146..c494d4d 100644
--- a/pkg/compiler/lib/src/inferrer/builder_kernel.dart
+++ b/pkg/compiler/lib/src/inferrer/builder_kernel.dart
@@ -15,13 +15,13 @@
 import '../js_backend/backend.dart';
 import '../js_model/element_map.dart';
 import '../js_model/locals.dart' show JumpVisitor;
+import '../js_model/js_strategy.dart';
 import '../native/behavior.dart';
 import '../options.dart';
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
 import '../universe/selector.dart';
 import '../universe/side_effects.dart';
-import '../world.dart';
 import 'inferrer_engine.dart';
 import 'locals_handler.dart';
 import 'type_graph_nodes.dart';
@@ -39,13 +39,11 @@
 /// is doing.
 class KernelTypeGraphBuilder extends ir.Visitor<TypeInformation> {
   final CompilerOptions _options;
-  final JClosedWorld _closedWorld;
-  final ClosureDataLookup _closureDataLookup;
+  final JsClosedWorld _closedWorld;
   final InferrerEngine _inferrer;
   final TypeSystem _types;
   final MemberEntity _analyzedMember;
   final ir.Node _analyzedNode;
-  final JsToElementMap _elementMap;
   final KernelToLocalsMap _localsMap;
   final GlobalTypeInferenceElementData _memberData;
   final bool _inGenerativeConstructor;
@@ -69,15 +67,8 @@
   /// The [IsCheck]s that show us what types locals currently are _not_.
   List<IsCheck> _negativeIsChecks;
 
-  KernelTypeGraphBuilder(
-      this._options,
-      this._closedWorld,
-      this._closureDataLookup,
-      this._inferrer,
-      this._analyzedMember,
-      this._analyzedNode,
-      this._elementMap,
-      this._localsMap,
+  KernelTypeGraphBuilder(this._options, this._closedWorld, this._inferrer,
+      this._analyzedMember, this._analyzedNode, this._localsMap,
       [this._locals])
       : this._types = _inferrer.types,
         this._memberData = _inferrer.dataOfMember(_analyzedMember),
@@ -96,6 +87,10 @@
         _inferrer, _types, _options, _analyzedNode, fieldScope);
   }
 
+  JsToElementMap get _elementMap => _closedWorld.elementMap;
+
+  ClosureData get _closureDataLookup => _closedWorld.closureDataLookup;
+
   int _loopLevel = 0;
 
   bool get inLoop => _loopLevel > 0;
@@ -1524,11 +1519,9 @@
     KernelTypeGraphBuilder visitor = new KernelTypeGraphBuilder(
         _options,
         _closedWorld,
-        _closureDataLookup,
         _inferrer,
         info.callMethod,
         functionNode,
-        _elementMap,
         _localsMap,
         closureLocals);
     visitor.run();
diff --git a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
index 3c2f370..5ce0f07 100644
--- a/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
+++ b/pkg/compiler/lib/src/inferrer/inferrer_engine.dart
@@ -16,11 +16,12 @@
 import '../elements/types.dart';
 import '../js_backend/inferred_data.dart';
 import '../js_backend/no_such_method_registry.dart';
-import '../js_emitter/sorter.dart';
 import '../js_model/element_map.dart';
+import '../js_model/js_strategy.dart';
 import '../js_model/locals.dart';
 import '../native/behavior.dart' as native;
 import '../options.dart';
+import '../serialization/serialization.dart';
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
 import '../universe/call_structure.dart';
@@ -270,7 +271,7 @@
   final CompilerOutput _compilerOutput;
 
   /// The [JClosedWorld] on which inference reasoning is based.
-  final JClosedWorld closedWorld;
+  final JsClosedWorld closedWorld;
   final InferredDataBuilder inferredDataBuilder;
 
   final TypeSystem types;
@@ -287,30 +288,19 @@
 
   final NoSuchMethodRegistry noSuchMethodRegistry;
 
-  final Sorter sorter;
-  final JsToElementMap _elementMap;
-  final GlobalLocalsMap _globalLocalsMap;
-  final ClosureDataLookup _closureDataLookup;
-
   InferrerEngineImpl(
       this.options,
       this.progress,
       this.reporter,
       this._compilerOutput,
-      this._elementMap,
-      this._globalLocalsMap,
-      this._closureDataLookup,
       this.closedWorld,
       this.noSuchMethodRegistry,
       this.mainElement,
-      this.sorter,
       this.inferredDataBuilder)
       : this.types = new TypeSystem(
-            closedWorld,
-            new KernelTypeSystemStrategy(
-                _elementMap, _globalLocalsMap, _closureDataLookup));
+            closedWorld, new KernelTypeSystemStrategy(closedWorld));
 
-  ElementEnvironment get _elementEnvironment => _elementMap.elementEnvironment;
+  ElementEnvironment get _elementEnvironment => closedWorld.elementEnvironment;
 
   void forEachElementMatching(
       Selector selector, AbstractValue mask, bool f(MemberEntity element)) {
@@ -670,12 +660,13 @@
 
   /// Returns the body node for [member].
   ir.Node computeMemberBody(MemberEntity member) {
-    MemberDefinition definition = _elementMap.getMemberDefinition(member);
+    MemberDefinition definition =
+        closedWorld.elementMap.getMemberDefinition(member);
     switch (definition.kind) {
       case MemberKind.regular:
         ir.Member node = definition.node;
         if (node is ir.Field) {
-          return getFieldInitializer(_elementMap, member);
+          return getFieldInitializer(closedWorld.elementMap, member);
         } else if (node is ir.Procedure) {
           return node.function;
         }
@@ -790,12 +781,10 @@
     KernelTypeGraphBuilder visitor = new KernelTypeGraphBuilder(
         options,
         closedWorld,
-        _closureDataLookup,
         this,
         member,
         body,
-        _elementMap,
-        _globalLocalsMap.getLocalsMap(member));
+        closedWorld.globalLocalsMap.getLocalsMap(member));
     return visitor.run();
   }
 
@@ -824,13 +813,13 @@
   /// Returns the [ConstantValue] for the initial value of [field], or
   /// `null` if the initializer is not a constant value.
   ConstantValue getFieldConstant(FieldEntity field) {
-    return _elementMap.getFieldConstantValue(field);
+    return closedWorld.elementMap.getFieldConstantValue(field);
   }
 
   /// Returns `true` if [cls] has a 'call' method.
   bool hasCallType(ClassEntity cls) {
-    return _elementMap.types
-            .getCallType(_elementMap.elementEnvironment.getThisType(cls)) !=
+    return closedWorld.elementMap.types
+            .getCallType(closedWorld.elementEnvironment.getThisType(cls)) !=
         null;
   }
 
@@ -1270,14 +1259,12 @@
 }
 
 class KernelTypeSystemStrategy implements TypeSystemStrategy {
-  JsToElementMap _elementMap;
-  GlobalLocalsMap _globalLocalsMap;
-  ClosureDataLookup _closureDataLookup;
+  final JsClosedWorld _closedWorld;
 
-  KernelTypeSystemStrategy(
-      this._elementMap, this._globalLocalsMap, this._closureDataLookup);
+  KernelTypeSystemStrategy(this._closedWorld);
 
-  JElementEnvironment get _elementEnvironment => _elementMap.elementEnvironment;
+  JElementEnvironment get _elementEnvironment =>
+      _closedWorld.elementEnvironment;
 
   @override
   bool checkClassEntity(ClassEntity cls) => true;
@@ -1296,7 +1283,8 @@
 
   @override
   void forEachParameter(FunctionEntity function, void f(Local parameter)) {
-    forEachOrderedParameter(_globalLocalsMap, _elementMap, function, f);
+    forEachOrderedParameter(
+        _closedWorld.globalLocalsMap, _closedWorld.elementMap, function, f);
   }
 
   @override
@@ -1305,18 +1293,19 @@
       covariant JLocal parameter,
       TypeSystem types) {
     MemberEntity context = parameter.memberContext;
-    KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(context);
+    KernelToLocalsMap localsMap =
+        _closedWorld.globalLocalsMap.getLocalsMap(context);
     ir.FunctionNode functionNode =
         localsMap.getFunctionNodeForParameter(parameter);
-    DartType type = localsMap.getLocalType(_elementMap, parameter);
+    DartType type = localsMap.getLocalType(_closedWorld.elementMap, parameter);
     MemberEntity member;
     bool isClosure = false;
     if (functionNode.parent is ir.Member) {
-      member = _elementMap.getMember(functionNode.parent);
+      member = _closedWorld.elementMap.getMember(functionNode.parent);
     } else if (functionNode.parent is ir.FunctionExpression ||
         functionNode.parent is ir.FunctionDeclaration) {
       ClosureRepresentationInfo info =
-          _closureDataLookup.getClosureInfo(functionNode.parent);
+          _closedWorld.closureDataLookup.getClosureInfo(functionNode.parent);
       member = info.callMethod;
       isClosure = true;
     }
@@ -1372,16 +1361,100 @@
 }
 
 class KernelGlobalTypeInferenceElementData
-    extends GlobalTypeInferenceElementData {
+    implements GlobalTypeInferenceElementData {
+  /// Tag used for identifying serialized [GlobalTypeInferenceElementData]
+  /// objects in a debugging data stream.
+  static const String tag = 'global-type-inference-element-data';
+
   // TODO(johnniwinther): Rename this together with [typeOfSend].
-  Map<ir.Node, AbstractValue> _sendMap;
+  Map<ir.TreeNode, AbstractValue> _sendMap;
 
   Map<ir.ForInStatement, AbstractValue> _iteratorMap;
   Map<ir.ForInStatement, AbstractValue> _currentMap;
   Map<ir.ForInStatement, AbstractValue> _moveNextMap;
 
+  KernelGlobalTypeInferenceElementData();
+
+  KernelGlobalTypeInferenceElementData.internal(
+      this._sendMap, this._iteratorMap, this._currentMap, this._moveNextMap);
+
+  /// Deserializes a [GlobalTypeInferenceElementData] object from [source].
+  factory KernelGlobalTypeInferenceElementData.readFromDataSource(
+      DataSource source, AbstractValueDomain abstractValueDomain) {
+    source.begin(tag);
+    Map<ir.TreeNode, AbstractValue> sendMap = source.readTreeNodeMap(
+        () => abstractValueDomain.readAbstractValueFromDataSource(source),
+        emptyAsNull: true);
+    Map<ir.ForInStatement, AbstractValue> iteratorMap = source.readTreeNodeMap(
+        () => abstractValueDomain.readAbstractValueFromDataSource(source),
+        emptyAsNull: true);
+    Map<ir.ForInStatement, AbstractValue> currentMap = source.readTreeNodeMap(
+        () => abstractValueDomain.readAbstractValueFromDataSource(source),
+        emptyAsNull: true);
+    Map<ir.ForInStatement, AbstractValue> moveNextMap = source.readTreeNodeMap(
+        () => abstractValueDomain.readAbstractValueFromDataSource(source),
+        emptyAsNull: true);
+    source.end(tag);
+    return new KernelGlobalTypeInferenceElementData.internal(
+        sendMap, iteratorMap, currentMap, moveNextMap);
+  }
+
+  /// Serializes this [GlobalTypeInferenceElementData] to [sink].
+  void writeToDataSink(DataSink sink, AbstractValueDomain abstractValueDomain) {
+    sink.begin(tag);
+    sink.writeTreeNodeMap(
+        _sendMap,
+        (AbstractValue value) =>
+            abstractValueDomain.writeAbstractValueToDataSink(sink, value),
+        allowNull: true);
+    sink.writeTreeNodeMap(
+        _iteratorMap,
+        (AbstractValue value) =>
+            abstractValueDomain.writeAbstractValueToDataSink(sink, value),
+        allowNull: true);
+    sink.writeTreeNodeMap(
+        _currentMap,
+        (AbstractValue value) =>
+            abstractValueDomain.writeAbstractValueToDataSink(sink, value),
+        allowNull: true);
+    sink.writeTreeNodeMap(
+        _moveNextMap,
+        (AbstractValue value) =>
+            abstractValueDomain.writeAbstractValueToDataSink(sink, value),
+        allowNull: true);
+    sink.end(tag);
+  }
+
   @override
-  AbstractValue typeOfSend(ir.Node node) {
+  void compress() {
+    if (_sendMap != null) {
+      _sendMap.removeWhere(_mapsToNull);
+      if (_sendMap.isEmpty) {
+        _sendMap = null;
+      }
+    }
+    if (_iteratorMap != null) {
+      _iteratorMap.removeWhere(_mapsToNull);
+      if (_iteratorMap.isEmpty) {
+        _iteratorMap = null;
+      }
+    }
+    if (_currentMap != null) {
+      _currentMap.removeWhere(_mapsToNull);
+      if (_currentMap.isEmpty) {
+        _currentMap = null;
+      }
+    }
+    if (_moveNextMap != null) {
+      _moveNextMap.removeWhere(_mapsToNull);
+      if (_moveNextMap.isEmpty) {
+        _moveNextMap = null;
+      }
+    }
+  }
+
+  @override
+  AbstractValue typeOfSend(ir.TreeNode node) {
     if (_sendMap == null) return null;
     return _sendMap[node];
   }
@@ -1426,14 +1499,16 @@
   }
 
   @override
-  void setTypeMask(ir.Node node, AbstractValue mask) {
-    _sendMap ??= <ir.Node, AbstractValue>{};
+  void setTypeMask(ir.TreeNode node, AbstractValue mask) {
+    _sendMap ??= <ir.TreeNode, AbstractValue>{};
     _sendMap[node] = mask;
   }
 
   @override
-  AbstractValue typeOfGetter(ir.Node node) {
+  AbstractValue typeOfGetter(ir.TreeNode node) {
     if (_sendMap == null) return null;
     return _sendMap[node];
   }
 }
+
+bool _mapsToNull(ir.TreeNode node, AbstractValue value) => value == null;
diff --git a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
index c8a0219..c8c20c2 100644
--- a/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
+++ b/pkg/compiler/lib/src/inferrer/type_graph_inferrer.dart
@@ -12,8 +12,6 @@
 import '../elements/entities.dart';
 import '../js_backend/inferred_data.dart';
 import '../js_model/elements.dart' show JClosureCallMethod;
-import '../js_model/element_map.dart';
-import '../js_model/locals.dart';
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
 import '../world.dart';
@@ -56,13 +54,10 @@
   final JClosedWorld closedWorld;
 
   final Compiler _compiler;
-  final JsToElementMap _elementMap;
-  final GlobalLocalsMap _globalLocalsMap;
-  final ClosureDataLookup _closureDataLookup;
   final InferredDataBuilder _inferredDataBuilder;
 
-  TypeGraphInferrer(this._compiler, this._elementMap, this._globalLocalsMap,
-      this._closureDataLookup, this.closedWorld, this._inferredDataBuilder);
+  TypeGraphInferrer(
+      this._compiler, this.closedWorld, this._inferredDataBuilder);
 
   String get name => 'Graph inferrer';
 
@@ -81,13 +76,9 @@
         _compiler.progress,
         _compiler.reporter,
         _compiler.outputProvider,
-        _elementMap,
-        _globalLocalsMap,
-        _closureDataLookup,
         closedWorld,
         _compiler.backend.noSuchMethodRegistry,
         main,
-        _compiler.backendStrategy.sorter,
         _inferredDataBuilder);
   }
 
@@ -98,10 +89,11 @@
   GlobalTypeInferenceResults buildResults() {
     inferrer.close();
 
-    Map<ir.Node, AbstractValue> allocatedLists = <ir.Node, AbstractValue>{};
-    Set<ir.Node> checkedForGrowableLists = new Set<ir.Node>();
+    Map<ir.TreeNode, AbstractValue> allocatedLists =
+        <ir.TreeNode, AbstractValue>{};
+    Set<ir.TreeNode> checkedForGrowableLists = new Set<ir.TreeNode>();
     inferrer.types.allocatedLists
-        .forEach((ir.Node node, ListTypeInformation typeInformation) {
+        .forEach((ir.TreeNode node, ListTypeInformation typeInformation) {
       ListTypeInformation info = inferrer.types.allocatedLists[node];
       if (info.checksGrowable) {
         checkedForGrowableLists.add(node);
@@ -116,6 +108,7 @@
     void createMemberResults(
         MemberEntity member, MemberTypeInformation typeInformation) {
       GlobalTypeInferenceElementData data = inferrer.dataOfMember(member);
+      data.compress();
       bool isJsInterop = closedWorld.nativeData.isJsInteropMember(member);
 
       AbstractValue returnType;
@@ -149,7 +142,7 @@
       createMemberResults(member, typeInformation);
       if (member is JClosureCallMethod) {
         ClosureRepresentationInfo info =
-            _closureDataLookup.getScopeInfo(member);
+            closedWorld.closureDataLookup.getScopeInfo(member);
         info.forEachFreeVariable((Local from, FieldEntity to) {
           freeVariables.add(to);
         });
diff --git a/pkg/compiler/lib/src/inferrer/type_system.dart b/pkg/compiler/lib/src/inferrer/type_system.dart
index 2fb026d..e2c5335 100644
--- a/pkg/compiler/lib/src/inferrer/type_system.dart
+++ b/pkg/compiler/lib/src/inferrer/type_system.dart
@@ -63,12 +63,12 @@
       new Map<MemberEntity, MemberTypeInformation>();
 
   /// [ListTypeInformation] for allocated lists.
-  final Map<ir.Node, ListTypeInformation> allocatedLists =
-      new Map<ir.Node, ListTypeInformation>();
+  final Map<ir.TreeNode, ListTypeInformation> allocatedLists =
+      new Map<ir.TreeNode, ListTypeInformation>();
 
   /// [MapTypeInformation] for allocated Maps.
-  final Map<ir.Node, TypeInformation> allocatedMaps =
-      new Map<ir.Node, TypeInformation>();
+  final Map<ir.TreeNode, TypeInformation> allocatedMaps =
+      new Map<ir.TreeNode, TypeInformation>();
 
   /// Closures found during the analysis.
   final Set<TypeInformation> allocatedClosures = new Set<TypeInformation>();
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
index 9e35791..4b27265 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart
@@ -7,11 +7,15 @@
 /// A [ContainerTypeMask] is a [TypeMask] for a specific allocation
 /// site of a container (currently only List) that will get specialized
 /// once the [TypeGraphInferrer] phase finds an element type for it.
-class ContainerTypeMask<T> extends AllocationTypeMask<T> {
+class ContainerTypeMask extends AllocationTypeMask {
+  /// Tag used for identifying serialized [ContainerTypeMask] objects in a
+  /// debugging data stream.
+  static const String tag = 'container-type-mask';
+
   final TypeMask forwardTo;
 
   // The [Node] where this type mask was created.
-  final T allocationNode;
+  final ir.TreeNode allocationNode;
 
   // The [Entity] where this type mask was created.
   final MemberEntity allocationElement;
@@ -25,16 +29,42 @@
   ContainerTypeMask(this.forwardTo, this.allocationNode, this.allocationElement,
       this.elementType, this.length);
 
+  /// Deserializes a [ContainerTypeMask] object from [source].
+  factory ContainerTypeMask.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    source.begin(tag);
+    TypeMask forwardTo = new TypeMask.readFromDataSource(source, closedWorld);
+    ir.TreeNode allocationNode = source.readTreeNodeOrNull();
+    MemberEntity allocationElement = source.readMemberOrNull();
+    TypeMask elementType = new TypeMask.readFromDataSource(source, closedWorld);
+    int length = source.readIntOrNull();
+    source.end(tag);
+    return new ContainerTypeMask(
+        forwardTo, allocationNode, allocationElement, elementType, length);
+  }
+
+  /// Serializes this [ContainerTypeMask] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(TypeMaskKind.container);
+    sink.begin(tag);
+    forwardTo.writeToDataSink(sink);
+    sink.writeTreeNodeOrNull(allocationNode);
+    sink.writeMemberOrNull(allocationElement);
+    elementType.writeToDataSink(sink);
+    sink.writeIntOrNull(length);
+    sink.end(tag);
+  }
+
   TypeMask nullable() {
     return isNullable
         ? this
-        : new ContainerTypeMask<T>(forwardTo.nullable(), allocationNode,
+        : new ContainerTypeMask(forwardTo.nullable(), allocationNode,
             allocationElement, elementType, length);
   }
 
   TypeMask nonNullable() {
     return isNullable
-        ? new ContainerTypeMask<T>(forwardTo.nonNullable(), allocationNode,
+        ? new ContainerTypeMask(forwardTo.nonNullable(), allocationNode,
             allocationElement, elementType, length)
         : this;
   }
@@ -70,7 +100,7 @@
           elementType.union(other.elementType, closedWorld);
       int newLength = (length == other.length) ? length : null;
       TypeMask newForwardTo = forwardTo.union(other.forwardTo, closedWorld);
-      return new ContainerTypeMask<T>(
+      return new ContainerTypeMask(
           newForwardTo,
           allocationNode == other.allocationNode ? allocationNode : null,
           allocationElement == other.allocationElement
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
index d04e18a..9a64845 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart
@@ -12,29 +12,65 @@
  * [TypeGraphInferrer] has successfully identified such a usage. Otherwise,
  * the more general [MapTypeMask] is used.
  */
-class DictionaryTypeMask<T> extends MapTypeMask<T> {
+class DictionaryTypeMask extends MapTypeMask {
+  /// Tag used for identifying serialized [DictionaryTypeMask] objects in a
+  /// debugging data stream.
+  static const String tag = 'dictionary-type-mask';
+
   // The underlying key/value map of this dictionary.
   final Map<String, AbstractValue> _typeMap;
 
   DictionaryTypeMask(
       TypeMask forwardTo,
-      T allocationNode,
+      ir.TreeNode allocationNode,
       MemberEntity allocationElement,
       TypeMask keyType,
       TypeMask valueType,
       this._typeMap)
       : super(forwardTo, allocationNode, allocationElement, keyType, valueType);
 
+  /// Deserializes a [DictionaryTypeMask] object from [source].
+  factory DictionaryTypeMask.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    source.begin(tag);
+    TypeMask forwardTo = new TypeMask.readFromDataSource(source, closedWorld);
+    ir.TreeNode allocationNode = source.readTreeNode();
+    MemberEntity allocationElement = source.readMember();
+    TypeMask keyType = new TypeMask.readFromDataSource(source, closedWorld);
+    TypeMask valueType = new TypeMask.readFromDataSource(source, closedWorld);
+    Map<String, AbstractValue> typeMap = source.readStringMap(
+        () => new TypeMask.readFromDataSource(source, closedWorld));
+    source.end(tag);
+    return new DictionaryTypeMask(forwardTo, allocationNode, allocationElement,
+        keyType, valueType, typeMap);
+  }
+
+  /// Serializes this [DictionaryTypeMask] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(TypeMaskKind.dictionary);
+    sink.begin(tag);
+    forwardTo.writeToDataSink(sink);
+    sink.writeTreeNode(allocationNode);
+    sink.writeMember(allocationElement);
+    valueType.writeToDataSink(sink);
+    keyType.writeToDataSink(sink);
+    sink.writeStringMap(_typeMap, (AbstractValue value) {
+      TypeMask typeMask = value;
+      typeMask.writeToDataSink(sink);
+    });
+    sink.end(tag);
+  }
+
   TypeMask nullable() {
     return isNullable
         ? this
-        : new DictionaryTypeMask<T>(forwardTo.nullable(), allocationNode,
+        : new DictionaryTypeMask(forwardTo.nullable(), allocationNode,
             allocationElement, keyType, valueType, _typeMap);
   }
 
   TypeMask nonNullable() {
     return isNullable
-        ? new DictionaryTypeMask<T>(forwardTo.nonNullable(), allocationNode,
+        ? new DictionaryTypeMask(forwardTo.nonNullable(), allocationNode,
             allocationElement, keyType, valueType, _typeMap)
         : this;
   }
@@ -86,7 +122,7 @@
           mappings[k] = v.nullable();
         }
       });
-      return new DictionaryTypeMask<T>(
+      return new DictionaryTypeMask(
           newForwardTo, null, null, newKeyType, newValueType, mappings);
     } else if (other.isMap &&
         (other.keyType != null) &&
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
index 20150d5..c74600a 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart
@@ -9,6 +9,10 @@
  * base type.
  */
 class FlatTypeMask implements TypeMask {
+  /// Tag used for identifying serialized [FlatTypeMask] objects in a
+  /// debugging data stream.
+  static const String tag = 'flat-type-mask';
+
   static const int EMPTY = 0;
   static const int EXACT = 1;
   static const int SUBCLASS = 2;
@@ -39,10 +43,6 @@
   FlatTypeMask.nonNullSubtype(ClassEntity base)
       : this.internal(base, SUBTYPE << 1);
 
-  ClassQuery get _classQuery => isExact
-      ? ClassQuery.EXACT
-      : (isSubclass ? ClassQuery.SUBCLASS : ClassQuery.SUBTYPE);
-
   FlatTypeMask.internal(this.base, this.flags);
 
   /**
@@ -69,6 +69,31 @@
         base, flags, () => new FlatTypeMask.internal(base, flags));
   }
 
+  /// Deserializes a [FlatTypeMask] object from [source].
+  factory FlatTypeMask.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    source.begin(tag);
+    ClassEntity base = source.readClassOrNull();
+    int flags = source.readInt();
+    source.end(tag);
+    CommonMasks commonMasks = closedWorld.abstractValueDomain;
+    return commonMasks.getCachedMask(
+        base, flags, () => new FlatTypeMask.internal(base, flags));
+  }
+
+  /// Serializes this [FlatTypeMask] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(TypeMaskKind.flat);
+    sink.begin(tag);
+    sink.writeClassOrNull(base);
+    sink.writeInt(flags);
+    sink.end(tag);
+  }
+
+  ClassQuery get _classQuery => isExact
+      ? ClassQuery.EXACT
+      : (isSubclass ? ClassQuery.SUBCLASS : ClassQuery.SUBTYPE);
+
   bool get isEmpty => isEmptyOrNull && !isNullable;
   bool get isNull => isEmptyOrNull && isNullable;
   bool get isEmptyOrNull => (flags >> 1) == EMPTY;
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
index 9841e46..82b6bd0 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart
@@ -123,9 +123,9 @@
   int get hashCode => throw "Subclass should implement hashCode getter";
 }
 
-abstract class AllocationTypeMask<T> extends ForwardingTypeMask {
-  // The [Node] where this type mask was created.
-  T get allocationNode;
+abstract class AllocationTypeMask extends ForwardingTypeMask {
+  // The [ir.TreeNode] where this type mask was created.
+  ir.TreeNode get allocationNode;
 
   // The [Entity] where this type mask was created.
   MemberEntity get allocationElement;
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
index 7feedff..5e6e2fb 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart
@@ -9,11 +9,15 @@
  * site of a map (currently only internal Map class) that will get specialized
  * once the [TypeGraphInferrer] phase finds a key and/or value type for it.
  */
-class MapTypeMask<T> extends AllocationTypeMask<T> {
+class MapTypeMask extends AllocationTypeMask {
+  /// Tag used for identifying serialized [MapTypeMask] objects in a
+  /// debugging data stream.
+  static const String tag = 'map-type-mask';
+
   final TypeMask forwardTo;
 
   // The [Node] where this type mask was created.
-  final T allocationNode;
+  final ir.TreeNode allocationNode;
 
   // The [MemberEntity] where this type mask was created.
   final MemberEntity allocationElement;
@@ -27,6 +31,32 @@
   MapTypeMask(this.forwardTo, this.allocationNode, this.allocationElement,
       this.keyType, this.valueType);
 
+  /// Deserializes a [MapTypeMask] object from [source].
+  factory MapTypeMask.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    source.begin(tag);
+    TypeMask forwardTo = new TypeMask.readFromDataSource(source, closedWorld);
+    ir.TreeNode allocationNode = source.readTreeNode();
+    MemberEntity allocationElement = source.readMember();
+    TypeMask keyType = new TypeMask.readFromDataSource(source, closedWorld);
+    TypeMask valueType = new TypeMask.readFromDataSource(source, closedWorld);
+    source.end(tag);
+    return new MapTypeMask(
+        forwardTo, allocationNode, allocationElement, keyType, valueType);
+  }
+
+  /// Serializes this [MapTypeMask] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(TypeMaskKind.map);
+    sink.begin(tag);
+    forwardTo.writeToDataSink(sink);
+    sink.writeTreeNode(allocationNode);
+    sink.writeMember(allocationElement);
+    valueType.writeToDataSink(sink);
+    keyType.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
   TypeMask nullable() {
     return isNullable
         ? this
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
index df920fc..6987117 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/masks.dart
@@ -4,10 +4,13 @@
 
 library masks;
 
+import 'package:kernel/ast.dart' as ir;
+
 import '../../common.dart';
 import '../../common_elements.dart' show CommonElements;
-import '../../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
+import '../../constants/values.dart';
 import '../../elements/entities.dart';
+import '../../serialization/serialization.dart';
 import '../../types/abstract_value_domain.dart';
 import '../../universe/class_hierarchy.dart';
 import '../../universe/selector.dart' show Selector;
@@ -716,6 +719,16 @@
   String getCompactText(AbstractValue value) {
     return formatType(value);
   }
+
+  @override
+  TypeMask readAbstractValueFromDataSource(DataSource source) {
+    return new TypeMask.readFromDataSource(source, _closedWorld);
+  }
+
+  @override
+  void writeAbstractValueToDataSink(DataSink sink, covariant TypeMask value) {
+    value.writeToDataSink(sink);
+  }
 }
 
 /// Convert the given TypeMask to a compact string format.
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
index 225f21c..a08d320 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart
@@ -91,6 +91,16 @@
   }
 }
 
+/// Enum used for identifying [TypeMask] subclasses in serialization.
+enum TypeMaskKind {
+  flat,
+  union,
+  container,
+  map,
+  dictionary,
+  value,
+}
+
 /**
  * A type mask represents a set of contained classes, but the
  * operations on it are not guaranteed to be precise and they may
@@ -209,6 +219,30 @@
     return UnionTypeMask.unionOf(masks, closedWorld);
   }
 
+  /// Deserializes a [TypeMask] object from [source].
+  factory TypeMask.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    TypeMaskKind kind = source.readEnum(TypeMaskKind.values);
+    switch (kind) {
+      case TypeMaskKind.flat:
+        return new FlatTypeMask.readFromDataSource(source, closedWorld);
+      case TypeMaskKind.union:
+        return new UnionTypeMask.readFromDataSource(source, closedWorld);
+      case TypeMaskKind.container:
+        return new ContainerTypeMask.readFromDataSource(source, closedWorld);
+      case TypeMaskKind.map:
+        return new MapTypeMask.readFromDataSource(source, closedWorld);
+      case TypeMaskKind.dictionary:
+        return new DictionaryTypeMask.readFromDataSource(source, closedWorld);
+      case TypeMaskKind.value:
+        return new ValueTypeMask.readFromDataSource(source, closedWorld);
+    }
+    throw new UnsupportedError("Unexpected TypeMaskKind $kind.");
+  }
+
+  /// Serializes this [TypeMask] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /**
    * If [mask] is forwarding, returns the first non-forwarding [TypeMask] in
    * [mask]'s forwarding chain.
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
index 0da519c..aba7ea6 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart
@@ -5,7 +5,9 @@
 part of masks;
 
 class UnionTypeMask implements TypeMask {
-  final Iterable<FlatTypeMask> disjointMasks;
+  /// Tag used for identifying serialized [UnionTypeMask] objects in a
+  /// debugging data stream.
+  static const String tag = 'union-type-mask';
 
   static const int MAX_UNION_LENGTH = 4;
 
@@ -14,11 +16,32 @@
   // helpful in debugging.
   static const bool PERFORM_EXTRA_CONTAINS_CHECK = false;
 
+  final Iterable<FlatTypeMask> disjointMasks;
+
   UnionTypeMask._internal(this.disjointMasks) {
     assert(disjointMasks.length > 1);
     assert(disjointMasks.every((TypeMask mask) => !mask.isUnion));
   }
 
+  /// Deserializes a [UnionTypeMask] object from [source].
+  factory UnionTypeMask.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    source.begin(tag);
+    List<FlatTypeMask> disjointMasks = source
+        .readList(() => new TypeMask.readFromDataSource(source, closedWorld));
+    source.end(tag);
+    return new UnionTypeMask._internal(disjointMasks);
+  }
+
+  /// Serializes this [UnionTypeMask] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(TypeMaskKind.union);
+    sink.begin(tag);
+    sink.writeList(
+        disjointMasks, (FlatTypeMask mask) => mask.writeToDataSink(sink));
+    sink.end(tag);
+  }
+
   static TypeMask unionOf(Iterable<TypeMask> masks, JClosedWorld closedWorld) {
     assert(
         masks.every((mask) => TypeMask.assertIsNormalized(mask, closedWorld)));
diff --git a/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart b/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
index ebeda52..45c1300 100644
--- a/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
+++ b/pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart
@@ -5,11 +5,34 @@
 part of masks;
 
 class ValueTypeMask extends ForwardingTypeMask {
+  /// Tag used for identifying serialized [ValueTypeMask] objects in a
+  /// debugging data stream.
+  static const String tag = 'value-type-mask';
+
   final TypeMask forwardTo;
   final PrimitiveConstantValue value;
 
   ValueTypeMask(this.forwardTo, this.value);
 
+  /// Deserializes a [ValueTypeMask] object from [source].
+  factory ValueTypeMask.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    source.begin(tag);
+    TypeMask forwardTo = new TypeMask.readFromDataSource(source, closedWorld);
+    ConstantValue constant = source.readConstant();
+    source.end(tag);
+    return new ValueTypeMask(forwardTo, constant);
+  }
+
+  /// Serializes this [ValueTypeMask] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(TypeMaskKind.value);
+    sink.begin(tag);
+    forwardTo.writeToDataSink(sink);
+    sink.writeConstant(value);
+    sink.end(tag);
+  }
+
   TypeMask nullable() {
     return isNullable ? this : new ValueTypeMask(forwardTo.nullable(), value);
   }
diff --git a/pkg/compiler/lib/src/ir/types.dart b/pkg/compiler/lib/src/ir/types.dart
index 590a295..9d65dd7 100644
--- a/pkg/compiler/lib/src/ir/types.dart
+++ b/pkg/compiler/lib/src/ir/types.dart
@@ -101,10 +101,6 @@
       : super(cls, elementMap.commonElements.objectType,
             reporter: elementMap.reporter);
 
-  // TODO(sigmund): delete once Issue #31118 is fixed.
-  @override
-  bool get reportMultiInheritanceIssue => false;
-
   InterfaceType getThisType(ClassEntity cls) {
     return elementMap.getThisType(cls);
   }
diff --git a/pkg/compiler/lib/src/js_backend/allocator_analysis.dart b/pkg/compiler/lib/src/js_backend/allocator_analysis.dart
index 7415322..6e15c77 100644
--- a/pkg/compiler/lib/src/js_backend/allocator_analysis.dart
+++ b/pkg/compiler/lib/src/js_backend/allocator_analysis.dart
@@ -10,6 +10,7 @@
 import '../kernel/kernel_strategy.dart';
 import '../kernel/kelements.dart' show KClass, KField;
 import '../options.dart';
+import '../serialization/serialization.dart';
 
 abstract class AllocatorAnalysis {}
 
@@ -70,6 +71,10 @@
 }
 
 class JAllocatorAnalysis implements AllocatorAnalysis {
+  /// Tag used for identifying serialized [JAllocatorAnalysis] objects in a
+  /// debugging data stream.
+  static const String tag = 'allocator-analysis';
+
   // --csp and --fast-startup have different constraints to the generated code.
   final CompilerOptions _options;
   final Map<JField, ConstantValue> _fixedInitializers =
@@ -77,6 +82,34 @@
 
   JAllocatorAnalysis._(this._options);
 
+  /// Deserializes a [JAllocatorAnalysis] object from [source].
+  factory JAllocatorAnalysis.readFromDataSource(
+      DataSource source, CompilerOptions options) {
+    source.begin(tag);
+    JAllocatorAnalysis analysis = new JAllocatorAnalysis._(options);
+    int fieldCount = source.readInt();
+    for (int i = 0; i < fieldCount; i++) {
+      JField field = source.readMember();
+      // TODO(sra): Deserialize constant, when non-null is supported.
+      ConstantValue value = const NullConstantValue();
+      analysis._fixedInitializers[field] = value;
+    }
+    source.end(tag);
+    return analysis;
+  }
+
+  /// Serializes this [JAllocatorAnalysis] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeInt(_fixedInitializers.length);
+    _fixedInitializers.forEach((JField field, ConstantValue value) {
+      sink.writeMember(field);
+      // TODO(sra): Serialize constant, when non-null is supported.
+      assert(value.isNull);
+    });
+    sink.end(tag);
+  }
+
   static JAllocatorAnalysis from(KAllocatorAnalysis kAnalysis,
       JsToFrontendMap map, CompilerOptions options) {
     var result = new JAllocatorAnalysis._(options);
diff --git a/pkg/compiler/lib/src/js_backend/annotations.dart b/pkg/compiler/lib/src/js_backend/annotations.dart
index 5f66d8f..025f6d8 100644
--- a/pkg/compiler/lib/src/js_backend/annotations.dart
+++ b/pkg/compiler/lib/src/js_backend/annotations.dart
@@ -10,6 +10,7 @@
 import '../diagnostics/messages.dart';
 import '../elements/entities.dart';
 import '../native/native.dart' as native;
+import '../serialization/serialization.dart';
 
 /// Returns `true` if parameter and returns types should be trusted for
 /// [element].
@@ -179,6 +180,13 @@
 }
 
 abstract class AnnotationsData {
+  /// Deserializes a [AnnotationsData] object from [source].
+  factory AnnotationsData.readFromDataSource(DataSource source) =
+      AnnotationsDataImpl.readFromDataSource;
+
+  /// Serializes this [AnnotationsData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Functions with a `@NoInline()` or `@noInline` annotation.
   Iterable<FunctionEntity> get nonInlinableFunctions;
 
@@ -199,6 +207,10 @@
 }
 
 class AnnotationsDataImpl implements AnnotationsData {
+  /// Tag used for identifying serialized [AnnotationsData] objects in a
+  /// debugging data stream.
+  static const String tag = 'annotations-data';
+
   final Iterable<FunctionEntity> nonInlinableFunctions;
   final Iterable<FunctionEntity> tryInlineFunctions;
   final Iterable<FunctionEntity> cannotThrowFunctions;
@@ -213,6 +225,35 @@
       this.sideEffectFreeFunctions,
       this.trustTypeAnnotationsMembers,
       this.assumeDynamicMembers);
+
+  factory AnnotationsDataImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Iterable<FunctionEntity> nonInlinableFunctions = source.readMembers();
+    Iterable<FunctionEntity> tryInlineFunctions = source.readMembers();
+    Iterable<FunctionEntity> cannotThrowFunctions = source.readMembers();
+    Iterable<FunctionEntity> sideEffectFreeFunctions = source.readMembers();
+    Iterable<MemberEntity> trustTypeAnnotationsMembers = source.readMembers();
+    Iterable<MemberEntity> assumeDynamicMembers = source.readMembers();
+    source.end(tag);
+    return new AnnotationsDataImpl(
+        nonInlinableFunctions,
+        tryInlineFunctions,
+        cannotThrowFunctions,
+        sideEffectFreeFunctions,
+        trustTypeAnnotationsMembers,
+        assumeDynamicMembers);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeMembers(nonInlinableFunctions);
+    sink.writeMembers(tryInlineFunctions);
+    sink.writeMembers(cannotThrowFunctions);
+    sink.writeMembers(sideEffectFreeFunctions);
+    sink.writeMembers(trustTypeAnnotationsMembers);
+    sink.writeMembers(assumeDynamicMembers);
+    sink.end(tag);
+  }
 }
 
 class AnnotationsDataBuilder implements AnnotationsData {
@@ -255,4 +296,8 @@
   Iterable<MemberEntity> get trustTypeAnnotationsMembers =>
       _trustTypeAnnotationsMembers;
   Iterable<MemberEntity> get assumeDynamicMembers => _assumeDynamicMembers;
+
+  void writeToDataSink(DataSink sink) {
+    throw new UnsupportedError('AnnotationsDataBuilder.writeToDataSink');
+  }
 }
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index 8da1293..c65153b 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -12,7 +12,7 @@
 import '../common_elements.dart' show CommonElements, ElementEnvironment;
 import '../compiler.dart' show Compiler;
 import '../constants/constant_system.dart';
-import '../deferred_load.dart' show DeferredLoadTask, OutputUnitData;
+import '../deferred_load.dart' show DeferredLoadTask;
 import '../dump_info.dart' show DumpInfoTask;
 import '../elements/entities.dart';
 import '../elements/types.dart';
@@ -386,7 +386,6 @@
   NativeDataBuilder get nativeDataBuilder => _nativeDataBuilder;
   OneShotInterceptorData _oneShotInterceptorData;
   BackendUsageBuilder _backendUsageBuilder;
-  OutputUnitData _outputUnitData;
 
   CheckedModeHelpers _checkedModeHelpers;
 
@@ -447,8 +446,6 @@
     return _customElementsCodegenAnalysis;
   }
 
-  OutputUnitData get outputUnitData => _outputUnitData;
-
   OneShotInterceptorData get oneShotInterceptorData {
     assert(
         _oneShotInterceptorData != null,
@@ -547,10 +544,6 @@
         frontendStrategy.nativeBasicData, nativeDataBuilder);
   }
 
-  void onDeferredLoadComplete(OutputUnitData data) {
-    _outputUnitData = compiler.backendStrategy.convertOutputUnitData(data);
-  }
-
   ResolutionEnqueuer createResolutionEnqueuer(
       CompilerTask task, Compiler compiler) {
     ElementEnvironment elementEnvironment =
diff --git a/pkg/compiler/lib/src/js_backend/backend_impact.dart b/pkg/compiler/lib/src/js_backend/backend_impact.dart
index fb7290e..704ac1a 100644
--- a/pkg/compiler/lib/src/js_backend/backend_impact.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_impact.dart
@@ -515,7 +515,7 @@
 
   BackendImpact get nativeTypeCheck {
     return _nativeTypeCheck ??= new BackendImpact(staticUses: [
-      // We will neeed to add the "$is" and "$as" properties on the
+      // We will need to add the "$is" and "$as" properties on the
       // JavaScript object prototype, so we make sure
       // [:defineProperty:] is compiled.
       _commonElements.defineProperty
diff --git a/pkg/compiler/lib/src/js_backend/backend_usage.dart b/pkg/compiler/lib/src/js_backend/backend_usage.dart
index b3e02ac..efe00d9 100644
--- a/pkg/compiler/lib/src/js_backend/backend_usage.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_usage.dart
@@ -7,11 +7,19 @@
 import '../elements/entities.dart';
 import '../elements/types.dart';
 import '../frontend_strategy.dart';
+import '../serialization/serialization.dart';
 import '../universe/feature.dart';
 import '../util/util.dart' show Setlet;
 import 'backend_impact.dart';
 
 abstract class BackendUsage {
+  /// Deserializes a [BackendUsage] object from [source].
+  factory BackendUsage.readFromDataSource(DataSource source) =
+      BackendUsageImpl.readFromDataSource;
+
+  /// Serializes this [BackendUsage] to [sink].
+  void writeToDataSink(DataSink sink);
+
   bool needToInitializeIsolateAffinityTag;
   bool needToInitializeDispatchProperty;
 
@@ -262,6 +270,10 @@
 }
 
 class BackendUsageImpl implements BackendUsage {
+  /// Tag used for identifying serialized [BackendUsage] objects in a
+  /// debugging data stream.
+  static const String tag = 'backend-usage';
+
   // TODO(johnniwinther): Remove the need for these.
   final Set<FunctionEntity> _globalFunctionDependencies;
   final Set<ClassEntity> _globalClassDependencies;
@@ -307,6 +319,61 @@
         this._helperClassesUsed = helperClassesUsed,
         this._runtimeTypeUses = runtimeTypeUses;
 
+  factory BackendUsageImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Set<FunctionEntity> globalFunctionDependencies =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<ClassEntity> globalClassDependencies = source.readClasses().toSet();
+    Set<FunctionEntity> helperFunctionsUsed =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<ClassEntity> helperClassesUsed = source.readClasses().toSet();
+    Set<RuntimeTypeUse> runtimeTypeUses = source.readList(() {
+      RuntimeTypeUseKind kind = source.readEnum(RuntimeTypeUseKind.values);
+      DartType receiverType = source.readDartType();
+      DartType argumentType = source.readDartType(allowNull: true);
+      return new RuntimeTypeUse(kind, receiverType, argumentType);
+    }).toSet();
+    bool needToInitializeIsolateAffinityTag = source.readBool();
+    bool needToInitializeDispatchProperty = source.readBool();
+    bool requiresPreamble = source.readBool();
+    bool isFunctionApplyUsed = source.readBool();
+    bool isMirrorsUsed = source.readBool();
+    bool isNoSuchMethodUsed = source.readBool();
+    source.end(tag);
+    return new BackendUsageImpl(
+        globalFunctionDependencies: globalFunctionDependencies,
+        globalClassDependencies: globalClassDependencies,
+        helperFunctionsUsed: helperFunctionsUsed,
+        helperClassesUsed: helperClassesUsed,
+        runtimeTypeUses: runtimeTypeUses,
+        needToInitializeIsolateAffinityTag: needToInitializeIsolateAffinityTag,
+        needToInitializeDispatchProperty: needToInitializeDispatchProperty,
+        requiresPreamble: requiresPreamble,
+        isFunctionApplyUsed: isFunctionApplyUsed,
+        isMirrorsUsed: isMirrorsUsed,
+        isNoSuchMethodUsed: isNoSuchMethodUsed);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeMembers(_globalFunctionDependencies);
+    sink.writeClasses(_globalClassDependencies);
+    sink.writeMembers(_helperFunctionsUsed);
+    sink.writeClasses(_helperClassesUsed);
+    sink.writeList(runtimeTypeUses, (RuntimeTypeUse runtimeTypeUse) {
+      sink.writeEnum(runtimeTypeUse.kind);
+      sink.writeDartType(runtimeTypeUse.receiverType);
+      sink.writeDartType(runtimeTypeUse.argumentType, allowNull: true);
+    });
+    sink.writeBool(needToInitializeIsolateAffinityTag);
+    sink.writeBool(needToInitializeDispatchProperty);
+    sink.writeBool(requiresPreamble);
+    sink.writeBool(isFunctionApplyUsed);
+    sink.writeBool(isMirrorsUsed);
+    sink.writeBool(isNoSuchMethodUsed);
+    sink.end(tag);
+  }
+
   @override
   bool isFunctionUsedByBackend(FunctionEntity element) {
     return _helperFunctionsUsed.contains(element);
diff --git a/pkg/compiler/lib/src/js_backend/inferred_data.dart b/pkg/compiler/lib/src/js_backend/inferred_data.dart
index 1f1f272..73bb493 100644
--- a/pkg/compiler/lib/src/js_backend/inferred_data.dart
+++ b/pkg/compiler/lib/src/js_backend/inferred_data.dart
@@ -6,6 +6,7 @@
 
 import '../common.dart';
 import '../elements/entities.dart';
+import '../serialization/serialization.dart';
 import '../types/abstract_value_domain.dart';
 import '../universe/selector.dart';
 import '../universe/side_effects.dart';
@@ -13,6 +14,20 @@
 import 'annotations.dart';
 
 abstract class InferredData {
+  /// Deserializes a [InferredData] object from [source].
+  factory InferredData.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    bool isTrivial = source.readBool();
+    if (isTrivial) {
+      return new TrivialInferredData();
+    } else {
+      return new InferredDataImpl.readFromDataSource(source, closedWorld);
+    }
+  }
+
+  /// Serializes this [InferredData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Returns the side effects of executing [element].
   SideEffects getSideEffectsOfElement(FunctionEntity element);
 
@@ -62,6 +77,10 @@
 }
 
 class InferredDataImpl implements InferredData {
+  /// Tag used for identifying serialized [InferredData] objects in a
+  /// debugging data stream.
+  static const String tag = 'inferred-data';
+
   final JClosedWorld _closedWorld;
   final Set<MemberEntity> _functionsCalledInLoop;
   final Map<FunctionEntity, SideEffects> _sideEffects;
@@ -80,6 +99,40 @@
       this._elementsThatCannotThrow,
       this._functionsThatMightBePassedToApply);
 
+  factory InferredDataImpl.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld) {
+    source.begin(tag);
+    Set<MemberEntity> functionsCalledInLoop = source.readMembers().toSet();
+    Map<FunctionEntity, SideEffects> sideEffects =
+        source.readMemberMap(() => new SideEffects.readFromDataSource(source));
+    Set<FunctionEntity> sideEffectsFreeElements =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<FunctionEntity> elementsThatCannotThrow =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<FunctionEntity> functionsThatMightBePassedToApply =
+        source.readMembers<FunctionEntity>().toSet();
+    source.end(tag);
+    return new InferredDataImpl(
+        closedWorld,
+        functionsCalledInLoop,
+        sideEffects,
+        sideEffectsFreeElements,
+        elementsThatCannotThrow,
+        functionsThatMightBePassedToApply);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeBool(false); // Is _not_ trivial.
+    sink.begin(tag);
+    sink.writeMembers(_functionsCalledInLoop);
+    sink.writeMemberMap(_sideEffects,
+        (SideEffects sideEffects) => sideEffects.writeToDataSink(sink));
+    sink.writeMembers(_sideEffectsFreeElements);
+    sink.writeMembers(_elementsThatCannotThrow);
+    sink.writeMembers(_functionsThatMightBePassedToApply);
+    sink.end(tag);
+  }
+
   @override
   SideEffects getSideEffectsOfSelector(
       Selector selector, AbstractValue receiver) {
@@ -251,6 +304,11 @@
   final SideEffects _allSideEffects = new SideEffects();
 
   @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeBool(true); // Is trivial.
+  }
+
+  @override
   SideEffects getSideEffectsOfElement(FunctionEntity element) {
     return _allSideEffects;
   }
diff --git a/pkg/compiler/lib/src/js_backend/interceptor_data.dart b/pkg/compiler/lib/src/js_backend/interceptor_data.dart
index f4db4d7..833c7c7 100644
--- a/pkg/compiler/lib/src/js_backend/interceptor_data.dart
+++ b/pkg/compiler/lib/src/js_backend/interceptor_data.dart
@@ -10,6 +10,7 @@
 import '../elements/entities.dart';
 import '../elements/types.dart';
 import '../js/js.dart' as jsAst;
+import '../serialization/serialization.dart';
 import '../types/abstract_value_domain.dart';
 import '../universe/selector.dart';
 import '../world.dart' show JClosedWorld;
@@ -17,6 +18,15 @@
 import 'native_data.dart';
 
 abstract class InterceptorData {
+  /// Deserializes a [InterceptorData] object from [source].
+  factory InterceptorData.readFromDataSource(
+      DataSource source,
+      NativeData nativeData,
+      CommonElements commonElements) = InterceptorDataImpl.readFromDataSource;
+
+  /// Serializes this [InterceptorData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Returns `true` if [cls] is an intercepted class.
   bool isInterceptedClass(ClassEntity element);
 
@@ -49,6 +59,10 @@
 }
 
 class InterceptorDataImpl implements InterceptorData {
+  /// Tag used for identifying serialized [InterceptorData] objects in a
+  /// debugging data stream.
+  static const String tag = 'interceptor-data';
+
   final NativeBasicData _nativeData;
   final CommonElements _commonElements;
 
@@ -89,6 +103,40 @@
       this.interceptedClasses,
       this.classesMixedIntoInterceptedClasses);
 
+  factory InterceptorDataImpl.readFromDataSource(
+      DataSource source, NativeData nativeData, CommonElements commonElements) {
+    source.begin(tag);
+    int interceptedMembersCount = source.readInt();
+    Map<String, Set<MemberEntity>> interceptedMembers = {};
+    for (int i = 0; i < interceptedMembersCount; i++) {
+      String name = source.readString();
+      Set<MemberEntity> members = source.readMembers().toSet();
+      interceptedMembers[name] = members;
+    }
+    Set<ClassEntity> interceptedClasses = source.readClasses().toSet();
+    Set<ClassEntity> classesMixedIntoInterceptedClasses =
+        source.readClasses().toSet();
+    source.end(tag);
+    return new InterceptorDataImpl(
+        nativeData,
+        commonElements,
+        interceptedMembers,
+        interceptedClasses,
+        classesMixedIntoInterceptedClasses);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeInt(interceptedMembers.length);
+    interceptedMembers.forEach((String name, Set<MemberEntity> members) {
+      sink.writeString(name);
+      sink.writeMembers(members);
+    });
+    sink.writeClasses(interceptedClasses);
+    sink.writeClasses(classesMixedIntoInterceptedClasses);
+    sink.end(tag);
+  }
+
   bool isInterceptedMethod(MemberEntity element) {
     if (!element.isInstanceMember) return false;
     // TODO(johnniwinther): Avoid this hack.
diff --git a/pkg/compiler/lib/src/js_backend/namer.dart b/pkg/compiler/lib/src/js_backend/namer.dart
index b5c79d9..a6674a7 100644
--- a/pkg/compiler/lib/src/js_backend/namer.dart
+++ b/pkg/compiler/lib/src/js_backend/namer.dart
@@ -1012,7 +1012,7 @@
     // apply. So we can directly grab a name.
     if (element is JSEntity) {
       return _disambiguateInternalMember(
-          element, () => (element as JSEntity).declaredEntity.name);
+          element, () => (element as JSEntity).declaredName);
     }
 
     // If the name of the field might clash with another field,
diff --git a/pkg/compiler/lib/src/js_backend/native_data.dart b/pkg/compiler/lib/src/js_backend/native_data.dart
index 40c3d28..e41e541 100644
--- a/pkg/compiler/lib/src/js_backend/native_data.dart
+++ b/pkg/compiler/lib/src/js_backend/native_data.dart
@@ -8,12 +8,21 @@
 import '../common_elements.dart' show ElementEnvironment;
 import '../elements/entities.dart';
 import '../native/behavior.dart' show NativeBehavior;
+import '../serialization/serialization.dart';
 import '../util/util.dart';
 
 /// Basic information for native classes and js-interop libraries and classes.
 ///
 /// This information is computed during loading using [NativeBasicDataBuilder].
 abstract class NativeBasicData {
+  /// Deserializes a [NativeBasicData] object from [source].
+  factory NativeBasicData.readFromDataSource(
+          DataSource source, ElementEnvironment elementEnvironment) =
+      NativeBasicDataImpl.readFromDataSource;
+
+  /// Serializes this [NativeBasicData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Returns `true` if [cls] corresponds to a native JavaScript class.
   ///
   /// A class is marked as native either through the `@Native(...)` annotation
@@ -48,6 +57,14 @@
 ///
 /// This information is computed during resolution using [NativeDataBuilder].
 abstract class NativeData extends NativeBasicData {
+  /// Deserializes a [NativeData] object from [source].
+  factory NativeData.readFromDataSource(
+          DataSource source, ElementEnvironment elementEnvironment) =
+      NativeDataImpl.readFromDataSource;
+
+  /// Serializes this [NativeData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Returns `true` if [element] corresponds to a native JavaScript member.
   ///
   /// A member is marked as native either through the native mechanism
@@ -267,6 +284,10 @@
 }
 
 class NativeBasicDataImpl implements NativeBasicData {
+  /// Tag used for identifying serialized [NativeBasicData] objects in a
+  /// debugging data stream.
+  static const String tag = 'native-basic-data';
+
   final ElementEnvironment _env;
 
   /// Tag info for native JavaScript classes names. See
@@ -293,6 +314,45 @@
       this.anonymousJsInteropClasses,
       this.jsInteropMembers);
 
+  factory NativeBasicDataImpl.readFromDataSource(
+      DataSource source, ElementEnvironment elementEnvironment) {
+    source.begin(tag);
+    Map<ClassEntity, NativeClassTag> nativeClassTagInfo =
+        source.readClassMap(() {
+      List<String> names = source.readStrings();
+      bool isNonLeaf = source.readBool();
+      return new NativeClassTag.internal(names, isNonLeaf);
+    });
+    Map<LibraryEntity, String> jsInteropLibraries =
+        source.readLibraryMap(source.readString);
+    Map<ClassEntity, String> jsInteropClasses =
+        source.readLibraryMap(source.readString);
+    Set<ClassEntity> anonymousJsInteropClasses = source.readClasses().toSet();
+    Map<MemberEntity, String> jsInteropMembers =
+        source.readLibraryMap(source.readString);
+    source.end(tag);
+    return new NativeBasicDataImpl(
+        elementEnvironment,
+        nativeClassTagInfo,
+        jsInteropLibraries,
+        jsInteropClasses,
+        anonymousJsInteropClasses,
+        jsInteropMembers);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeClassMap(nativeClassTagInfo, (NativeClassTag tag) {
+      sink.writeStrings(tag.names);
+      sink.writeBool(tag.isNonLeaf);
+    });
+    sink.writeLibraryMap(jsInteropLibraries, sink.writeString);
+    sink.writeClassMap(jsInteropClasses, sink.writeString);
+    sink.writeClasses(anonymousJsInteropClasses);
+    sink.writeMemberMap(jsInteropMembers, sink.writeString);
+    sink.end(tag);
+  }
+
   @override
   bool isNativeClass(ClassEntity element) {
     if (isJsInteropClass(element)) return true;
@@ -480,7 +540,13 @@
       jsInteropMembers);
 }
 
+// TODO(johnniwinther): Remove fields that overlap with [NativeBasicData], like
+// [anonymousJsInteropClasses].
 class NativeDataImpl implements NativeData, NativeBasicDataImpl {
+  /// Tag used for identifying serialized [NativeData] objects in a
+  /// debugging data stream.
+  static const String tag = 'native-data';
+
   /// Prefix used to escape JS names that are not valid Dart names
   /// when using JSInterop.
   static const String _jsInteropEscapePrefix = r'JS$';
@@ -525,6 +591,63 @@
       this.jsInteropClasses,
       this.jsInteropMembers);
 
+  factory NativeDataImpl.readFromDataSource(
+      DataSource source, ElementEnvironment elementEnvironment) {
+    source.begin(tag);
+    NativeBasicData nativeBasicData =
+        new NativeBasicData.readFromDataSource(source, elementEnvironment);
+    Map<MemberEntity, String> nativeMemberName =
+        source.readMemberMap(source.readString);
+    Map<FunctionEntity, NativeBehavior> nativeMethodBehavior = source
+        .readMemberMap(() => new NativeBehavior.readFromDataSource(source));
+    Map<MemberEntity, NativeBehavior> nativeFieldLoadBehavior = source
+        .readMemberMap(() => new NativeBehavior.readFromDataSource(source));
+    Map<MemberEntity, NativeBehavior> nativeFieldStoreBehavior = source
+        .readMemberMap(() => new NativeBehavior.readFromDataSource(source));
+    Map<LibraryEntity, String> jsInteropLibraries =
+        source.readLibraryMap(source.readString);
+    Set<ClassEntity> anonymousJsInteropClasses = source.readClasses().toSet();
+    Map<ClassEntity, String> jsInteropClasses =
+        source.readClassMap(source.readString);
+    Map<MemberEntity, String> jsInteropMembers =
+        source.readMemberMap(source.readString);
+    source.end(tag);
+    return new NativeDataImpl(
+        nativeBasicData,
+        nativeMemberName,
+        nativeMethodBehavior,
+        nativeFieldLoadBehavior,
+        nativeFieldStoreBehavior,
+        jsInteropLibraries,
+        anonymousJsInteropClasses,
+        jsInteropClasses,
+        jsInteropMembers);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    _nativeBasicData.writeToDataSink(sink);
+
+    sink.writeMemberMap(nativeMemberName, sink.writeString);
+
+    sink.writeMemberMap(nativeMethodBehavior, (NativeBehavior behavior) {
+      behavior.writeToDataSink(sink);
+    });
+
+    sink.writeMemberMap(nativeFieldLoadBehavior, (NativeBehavior behavior) {
+      behavior.writeToDataSink(sink);
+    });
+    sink.writeMemberMap(nativeFieldStoreBehavior, (NativeBehavior behavior) {
+      behavior.writeToDataSink(sink);
+    });
+
+    sink.writeLibraryMap(jsInteropLibraries, sink.writeString);
+    sink.writeClasses(anonymousJsInteropClasses);
+    sink.writeClassMap(jsInteropClasses, sink.writeString);
+    sink.writeMemberMap(jsInteropMembers, sink.writeString);
+    sink.end(tag);
+  }
+
   @override
   bool isAnonymousJsInteropClass(ClassEntity element) {
     return anonymousJsInteropClasses.contains(element);
diff --git a/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart b/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart
index 4c47390..e997b3e 100644
--- a/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart
+++ b/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart
@@ -6,6 +6,7 @@
 import '../common_elements.dart' show CommonElements;
 import '../common/names.dart' show Identifiers, Selectors;
 import '../elements/entities.dart';
+import '../serialization/serialization.dart';
 import '../types/types.dart';
 
 /// [NoSuchMethodRegistry] and [NoSuchMethodData] categorizes `noSuchMethod`
@@ -171,6 +172,13 @@
 /// Post inference collected category `D` methods are into subcategories `D1`
 /// and `D2`.
 abstract class NoSuchMethodData {
+  /// Deserializes a [NoSuchMethodData] object from [source].
+  factory NoSuchMethodData.readFromDataSource(DataSource source) =
+      NoSuchMethodDataImpl.readFromDataSource;
+
+  /// Serializes this [NoSuchMethodData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Returns [true] if the given element is a complex [noSuchMethod]
   /// implementation. An implementation is complex if it falls into
   /// category D, as described above.
@@ -186,6 +194,10 @@
 }
 
 class NoSuchMethodDataImpl implements NoSuchMethodData {
+  /// Tag used for identifying serialized [NoSuchMethodData] objects in a
+  /// debugging data stream.
+  static const String tag = 'no-such-method-data';
+
   /// The implementations that fall into category B, described above.
   final Set<FunctionEntity> throwingImpls;
 
@@ -203,6 +215,35 @@
   NoSuchMethodDataImpl(
       this.throwingImpls, this.otherImpls, this.forwardingSyntaxImpls);
 
+  factory NoSuchMethodDataImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Set<FunctionEntity> throwingImpls =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<FunctionEntity> otherImpls =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<FunctionEntity> forwardingSyntaxImpls =
+        source.readMembers<FunctionEntity>().toSet();
+    List<FunctionEntity> complexNoReturnImpls =
+        source.readMembers<FunctionEntity>();
+    List<FunctionEntity> complexReturningImpls =
+        source.readMembers<FunctionEntity>();
+    source.end(tag);
+    return new NoSuchMethodDataImpl(
+        throwingImpls, otherImpls, forwardingSyntaxImpls)
+      ..complexNoReturnImpls.addAll(complexNoReturnImpls)
+      ..complexReturningImpls.addAll(complexReturningImpls);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeMembers(throwingImpls);
+    sink.writeMembers(otherImpls);
+    sink.writeMembers(forwardingSyntaxImpls);
+    sink.writeMembers(complexNoReturnImpls);
+    sink.writeMembers(complexReturningImpls);
+    sink.end(tag);
+  }
+
   /// Now that type inference is complete, split category D into two
   /// subcategories: D1, those that have no return type, and D2, those
   /// that have a return type.
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types.dart b/pkg/compiler/lib/src/js_backend/runtime_types.dart
index daa1915..3329424 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types.dart
@@ -19,6 +19,7 @@
 import '../js/js.dart' show js;
 import '../js_emitter/js_emitter.dart' show Emitter;
 import '../options.dart';
+import '../serialization/serialization.dart';
 import '../universe/class_hierarchy.dart';
 import '../universe/feature.dart';
 import '../universe/selector.dart';
@@ -42,6 +43,20 @@
 
 /// Interface for the classes and methods that need runtime types.
 abstract class RuntimeTypesNeed {
+  /// Deserializes a [RuntimeTypesNeed] object from [source].
+  factory RuntimeTypesNeed.readFromDataSource(
+      DataSource source, ElementEnvironment elementEnvironment) {
+    bool isTrivial = source.readBool();
+    if (isTrivial) {
+      return const TrivialRuntimeTypesNeed();
+    }
+    return new RuntimeTypesNeedImpl.readFromDataSource(
+        source, elementEnvironment);
+  }
+
+  /// Serializes this [RuntimeTypesNeed] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Returns `true` if [cls] needs type arguments at runtime type.
   ///
   /// This is for instance the case for generic classes used in a type test:
@@ -106,6 +121,10 @@
 class TrivialRuntimeTypesNeed implements RuntimeTypesNeed {
   const TrivialRuntimeTypesNeed();
 
+  void writeToDataSink(DataSink sink) {
+    sink.writeBool(true); // Is trivial.
+  }
+
   @override
   bool classNeedsTypeArguments(ClassEntity cls) => true;
 
@@ -718,6 +737,10 @@
 }
 
 class RuntimeTypesNeedImpl implements RuntimeTypesNeed {
+  /// Tag used for identifying serialized [RuntimeTypesNeed] objects in a
+  /// debugging data stream.
+  static const String tag = 'runtime-types-need';
+
   final ElementEnvironment _elementEnvironment;
   final Set<ClassEntity> classesNeedingTypeArguments;
   final Set<FunctionEntity> methodsNeedingSignature;
@@ -737,6 +760,45 @@
       this.selectorsNeedingTypeArguments,
       this.instantiationsNeedingTypeArguments);
 
+  factory RuntimeTypesNeedImpl.readFromDataSource(
+      DataSource source, ElementEnvironment elementEnvironment) {
+    source.begin(tag);
+    Set<ClassEntity> classesNeedingTypeArguments =
+        source.readClasses<ClassEntity>().toSet();
+    Set<FunctionEntity> methodsNeedingSignature =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<FunctionEntity> methodsNeedingTypeArguments =
+        source.readMembers<FunctionEntity>().toSet();
+    Set<Selector> selectorsNeedingTypeArguments =
+        source.readList(() => new Selector.readFromDataSource(source)).toSet();
+    Set<int> instantiationsNeedingTypeArguments =
+        source.readList(source.readInt).toSet();
+    source.end(tag);
+    return new RuntimeTypesNeedImpl(
+        elementEnvironment,
+        classesNeedingTypeArguments,
+        methodsNeedingSignature,
+        methodsNeedingTypeArguments,
+        null,
+        null,
+        selectorsNeedingTypeArguments,
+        instantiationsNeedingTypeArguments);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeBool(false); // Is _not_ trivial.
+    sink.begin(tag);
+    sink.writeClasses(classesNeedingTypeArguments);
+    sink.writeMembers(methodsNeedingSignature);
+    sink.writeMembers(methodsNeedingTypeArguments);
+    assert(localFunctionsNeedingSignature == null);
+    assert(localFunctionsNeedingTypeArguments == null);
+    sink.writeList(selectorsNeedingTypeArguments,
+        (Selector selector) => selector.writeToDataSink(sink));
+    sink.writeList(instantiationsNeedingTypeArguments, sink.writeInt);
+    sink.end(tag);
+  }
+
   bool checkClass(covariant ClassEntity cls) => true;
 
   bool classNeedsTypeArguments(ClassEntity cls) {
diff --git a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
index b816f95..ea23cbd 100644
--- a/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/class_stub_generator.dart
@@ -273,16 +273,16 @@
   return isIntercepted
       ? new Function("funcs", "applyTrampolineIndex", "reflectionInfo", "name",
                      #tearOffGlobalObjectString, "c",
-          "return function tearOff_" + name + (functionCounter++) + "(x) {" +
+          "return function tearOff_" + name + (functionCounter++) + "(receiver) {" +
             "if (c === null) c = " + #tearOffAccessText + "(" +
-                "this, funcs, applyTrampolineIndex, reflectionInfo, false, [x], name);" +
-                "return new c(this, funcs[0], x, name);" +
+                "this, funcs, applyTrampolineIndex, reflectionInfo, false, true, name);" +
+                "return new c(this, funcs[0], receiver, name);" +
            "}")(funcs, applyTrampolineIndex, reflectionInfo, name, #tearOffGlobalObject, null)
       : new Function("funcs", "applyTrampolineIndex", "reflectionInfo", "name",
                      #tearOffGlobalObjectString, "c",
           "return function tearOff_" + name + (functionCounter++)+ "() {" +
             "if (c === null) c = " + #tearOffAccessText + "(" +
-                "this, funcs, applyTrampolineIndex, reflectionInfo, false, [], name);" +
+                "this, funcs, applyTrampolineIndex, reflectionInfo, false, false, name);" +
                 "return new c(this, funcs[0], null, name);" +
              "}")(funcs, applyTrampolineIndex, reflectionInfo, name, #tearOffGlobalObject, null);
 }''', {
@@ -292,17 +292,17 @@
     });
   } else {
     tearOffGetter = js.statement('''
-        function tearOffGetter(funcs, applyTrampolineIndex, reflectionInfo, name, isIntercepted) {
+      function tearOffGetter(funcs, applyTrampolineIndex, reflectionInfo, name, isIntercepted) {
         var cache = null;
         return isIntercepted
-            ? function(x) {
+            ? function(receiver) {
                 if (cache === null) cache = #(
-                    this, funcs, applyTrampolineIndex, reflectionInfo, false, [x], name);
-                return new cache(this, funcs[0], x, name);
+                    this, funcs, applyTrampolineIndex, reflectionInfo, false, true, name);
+                return new cache(this, funcs[0], receiver, name);
               }
             : function() {
                 if (cache === null) cache = #(
-                    this, funcs, applyTrampolineIndex, reflectionInfo, false, [], name);
+                    this, funcs, applyTrampolineIndex, reflectionInfo, false, false, name);
                 return new cache(this, funcs[0], null, name);
               };
       }''', [tearOffAccessExpression, tearOffAccessExpression]);
@@ -311,12 +311,12 @@
   jsAst.Statement tearOff = js.statement('''
       function tearOff(funcs, applyTrampolineIndex,
           reflectionInfo, isStatic, name, isIntercepted) {
-      var cache;
+      var cache = null;
       return isStatic
           ? function() {
-              if (cache === void 0) cache = #tearOff(
+              if (cache === null) cache = #tearOff(
                   this, funcs, applyTrampolineIndex,
-                  reflectionInfo, true, [], name).prototype;
+                  reflectionInfo, true, false, name).prototype;
               return cache;
             }
           : tearOffGetter(funcs, applyTrampolineIndex,
diff --git a/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart b/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
index 8a5364e3..063d03f 100644
--- a/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
+++ b/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
@@ -180,7 +180,7 @@
           closedWorld.elementEnvironment,
           closedWorld.commonElements,
           compiler.deferredLoadTask,
-          backend.outputUnitData,
+          closedWorld.outputUnitData,
           compiler.codegenWorldBuilder,
           backend.nativeCodegenEnqueuer,
           closedWorld.backendUsage,
@@ -201,7 +201,7 @@
           closedWorld.allocatorAnalysis,
           inferredData,
           backend.sourceInformationStrategy,
-          compiler.backendStrategy.sorter,
+          closedWorld.sorter,
           typeTestRegistry.rtiNeededClasses,
           closedWorld.elementEnvironment.mainFunction);
       int size = emitter.emitProgram(programBuilder);
diff --git a/pkg/compiler/lib/src/js_emitter/constant_ordering.dart b/pkg/compiler/lib/src/js_emitter/constant_ordering.dart
index da2cc06..a38df23 100644
--- a/pkg/compiler/lib/src/js_emitter/constant_ordering.dart
+++ b/pkg/compiler/lib/src/js_emitter/constant_ordering.dart
@@ -6,7 +6,8 @@
 
 import '../constants/values.dart';
 import '../elements/entities.dart'
-    show ClassEntity, FieldEntity, LibraryEntity, MemberEntity, TypedefEntity;
+    show ClassEntity, FieldEntity, MemberEntity, TypedefEntity;
+import '../elements/entity_utils.dart' as utils;
 import '../elements/types.dart';
 import '../js_backend/js_backend.dart' show SyntheticConstantKind;
 import 'sorter.dart' show Sorter;
@@ -53,10 +54,6 @@
     return 0;
   }
 
-  int compareLibraries(LibraryEntity a, LibraryEntity b) {
-    return _sorter.compareLibrariesByLocation(a, b);
-  }
-
   int compareClasses(ClassEntity a, ClassEntity b) {
     int r = a.name.compareTo(b.name);
     if (r != 0) return r;
@@ -185,8 +182,8 @@
     if (r != 0) return r;
     r = a.import.name.compareTo(b.import.name);
     if (r != 0) return r;
-    return compareLibraries(
-        a.import.enclosingLibrary, b.import.enclosingLibrary);
+    return utils.compareLibrariesUris(
+        a.import.enclosingLibraryUri, b.import.enclosingLibraryUri);
   }
 
   int visitDeferredGlobal(
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
index e7c3cfc..61df0af 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/class_emitter.dart
@@ -92,7 +92,7 @@
 
     jsAst.Name constructorName = namer.className(classElement);
     OutputUnit outputUnit =
-        compiler.backend.outputUnitData.outputUnitForClass(classElement);
+        closedWorld.outputUnitData.outputUnitForClass(classElement);
     emitter.assemblePrecompiledConstructor(
         outputUnit, constructorName, constructorAst, fieldNames);
   }
@@ -319,7 +319,7 @@
     ClassEntity cls = member.enclosingClass;
     jsAst.Name className = namer.className(cls);
     OutputUnit outputUnit =
-        compiler.backend.outputUnitData.outputUnitForMember(member);
+        closedWorld.outputUnitData.outputUnitForMember(member);
     emitter
         .cspPrecompiledFunctionFor(outputUnit)
         .add(js('#.prototype.# = #', [className, getterName, function]));
@@ -334,7 +334,7 @@
     ClassEntity cls = member.enclosingClass;
     jsAst.Name className = namer.className(cls);
     OutputUnit outputUnit =
-        compiler.backend.outputUnitData.outputUnitForMember(member);
+        closedWorld.outputUnitData.outputUnitForMember(member);
     emitter
         .cspPrecompiledFunctionFor(outputUnit)
         .add(js('#.prototype.# = #', [className, setterName, function]));
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
index 572b1b8..0836206 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
@@ -9,6 +9,7 @@
 import '../../elements/names.dart';
 import '../../js/js.dart' as jsAst;
 import '../../js/js.dart' show js;
+import '../../world.dart';
 import '../js_emitter.dart' hide Emitter, EmitterFactory;
 import '../model.dart';
 import 'emitter.dart';
@@ -18,11 +19,14 @@
 /// Initially, it is just a placeholder for code that is moved from
 /// [CodeEmitterTask].
 class ContainerBuilder extends CodeEmitterHelper {
-  ContainerBuilder();
+  JClosedWorld _closedWorld;
+
+  ContainerBuilder(this._closedWorld);
 
   void addMemberMethod(DartMethod method, ClassBuilder builder) {
     FunctionEntity member = method.element;
-    OutputUnit outputUnit = backend.outputUnitData.outputUnitForMember(member);
+    OutputUnit outputUnit =
+        _closedWorld.outputUnitData.outputUnitForMember(member);
     jsAst.Name name = method.name;
     ParameterStructure parameters = member.parameterStructure;
     jsAst.Expression code = method.code;
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 40169f1..d009d79 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart
@@ -107,7 +107,7 @@
   CommonElements get commonElements => _closedWorld.commonElements;
   ElementEnvironment get _elementEnvironment => _closedWorld.elementEnvironment;
   CodegenWorldBuilder get _worldBuilder => compiler.codegenWorldBuilder;
-  OutputUnitData get _outputUnitData => compiler.backend.outputUnitData;
+  OutputUnitData get _outputUnitData => _closedWorld.outputUnitData;
 
   // The full code that is written to each hunk part-file.
   Map<OutputUnit, CodeOutput> outputBuffers = new Map<OutputUnit, CodeOutput>();
@@ -158,7 +158,7 @@
         interceptorEmitter = new InterceptorEmitter(_closedWorld),
         nsmEmitter = new NsmEmitter(_closedWorld),
         _sorter = sorter,
-        containerBuilder = new ContainerBuilder(),
+        containerBuilder = new ContainerBuilder(_closedWorld),
         _constantOrdering = new ConstantOrdering(sorter) {
     constantEmitter = new ConstantEmitter(
         compiler.options,
diff --git a/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart b/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart
index 2804e12..f8dabcf 100644
--- a/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart
+++ b/pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart
@@ -176,20 +176,22 @@
     // For every call-selector generate a stub to the corresponding selector
     // with filled-in type arguments.
 
-    Set<ParameterStructure> parameterStructures;
-    for (Selector selector in callSelectors.keys) {
-      CallStructure callStructure = selector.callStructure;
-      if (callStructure.typeArgumentCount != 0) continue;
-      CallStructure genericCallStructure =
-          callStructure.withTypeArgumentCount(typeArgumentCount);
-      parameterStructures ??= computeLiveParameterStructures();
-      for (ParameterStructure parameterStructure in parameterStructures) {
-        if (genericCallStructure.signatureApplies(parameterStructure)) {
-          Selector genericSelector =
-              new Selector.call(selector.memberName, genericCallStructure);
-          stubs.add(_generateStub(
-              instantiationClass, functionField, selector, genericSelector));
-          break;
+    if (callSelectors != null) {
+      Set<ParameterStructure> parameterStructures;
+      for (Selector selector in callSelectors.keys) {
+        CallStructure callStructure = selector.callStructure;
+        if (callStructure.typeArgumentCount != 0) continue;
+        CallStructure genericCallStructure =
+            callStructure.withTypeArgumentCount(typeArgumentCount);
+        parameterStructures ??= computeLiveParameterStructures();
+        for (ParameterStructure parameterStructure in parameterStructures) {
+          if (genericCallStructure.signatureApplies(parameterStructure)) {
+            Selector genericSelector =
+                new Selector.call(selector.memberName, genericCallStructure);
+            stubs.add(_generateStub(
+                instantiationClass, functionField, selector, genericSelector));
+            break;
+          }
         }
       }
     }
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
index 519a395..4780f74 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart
@@ -182,7 +182,8 @@
     // Note: In rare cases (mostly tests) output units can be empty. This
     // happens when the deferred code is dead-code eliminated but we still need
     // to check that the library has been loaded.
-    _deferredLoadTask.allOutputUnits.forEach(_registry.registerOutputUnit);
+    _closedWorld.outputUnitData.outputUnits
+        .forEach(_registry.registerOutputUnit);
     collector.outputClassLists.forEach(_registry.registerClasses);
     collector.outputStaticLists.forEach(_registry.registerMembers);
     collector.outputConstantLists.forEach(_registerConstants);
@@ -648,8 +649,8 @@
         _rtiEncoder,
         _jsInteropAnalysis);
 
-    void visitMember(MemberEntity member) {
-      if (member.isInstanceMember && !member.isAbstract && !member.isField) {
+    void visitInstanceMember(MemberEntity member) {
+      if (!member.isAbstract && !member.isField) {
         if (member is! JSignatureMethod) {
           Method method = _buildMethod(member);
           if (method != null) methods.add(method);
@@ -668,6 +669,12 @@
       }
     }
 
+    void visitMember(MemberEntity member) {
+      if (member.isInstanceMember) {
+        visitInstanceMember(member);
+      }
+    }
+
     List<StubMethod> noSuchMethodStubs = <StubMethod>[];
 
     if (_backendUsage.isNoSuchMethodUsed &&
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
index 38bd64e..e13bf8f 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
@@ -113,6 +113,13 @@
   }
 }
 
+// Batched version of [inherit] for multiple classes from one superclass.
+function inheritMany(sup, classes) {
+  for (var i = 0; i < classes.length; i++) {
+    inherit(classes[i], sup);
+  }
+}
+
 // Mixes in the properties of [mixin] into [cls].
 function mixin(cls, mixin) {
   copyProperties(mixin.prototype, cls.prototype);
@@ -176,6 +183,12 @@
   return properties;
 }
 
+function convertAllToFastObject(arrayOfObjects) {
+  for (var i = 0; i < arrayOfObjects.length; ++i) {
+    convertToFastObject(arrayOfObjects[i]);
+  }
+}
+
 // This variable is used by the tearOffCode to guarantee unique functions per
 // tear-offs.
 var functionCounter = 0;
@@ -286,7 +299,7 @@
   typesOffset = #embeddedTypes.length;
 
   // TODO(floitsch): extend natives.
-  hunk(inherit, mixin, lazy, makeConstList, convertToFastObject, installTearOff,
+  hunk(inherit, inheritMany, mixin, lazy, makeConstList, convertToFastObject, installTearOff,
        setFunctionNamesIfNecessary, updateHolder, updateTypes,
        setOrUpdateInterceptorsByTag, setOrUpdateLeafTags,
        #embeddedGlobalsObject, holders, #staticState);
@@ -311,7 +324,8 @@
   function softDef(o) {
     softDef = function(o) {};  // Replace ourselves.
     #deferredGlobal[#softId](
-        holders, #embeddedGlobalsObject, #staticState, inherit, mixin,
+        holders, #embeddedGlobalsObject, #staticState,
+        inherit, inheritMany, mixin,
         installTearOff);
     if (o != null) {
       // TODO(29574): should we do something different for Firefox?
@@ -362,6 +376,9 @@
 // Sets up the js-interop support.
 #jsInteropSupport;
 
+// Ensure holders are in fast mode, now we have finished adding things.
+convertAllToFastObject(holders);
+
 // Invokes main (making sure that it records the 'current-script' value).
 #invokeMain;
 })()
@@ -407,7 +424,7 @@
 ///
 /// This template is used for Dart 2.
 const String deferredBoilerplateDart2 = '''
-function(inherit, mixin, lazy, makeConstList, convertToFastObject,
+function(inherit, inheritMany, mixin, lazy, makeConstList, convertToFastObject,
          installTearOff, setFunctionNamesIfNecessary, updateHolder, updateTypes,
          setOrUpdateInterceptorsByTag, setOrUpdateLeafTags,
          #embeddedGlobalsObject, holdersList, #staticState) {
@@ -457,8 +474,9 @@
 /// hierarchy, and add methods the prototypes.
 const String softDeferredBoilerplate = '''
 #deferredGlobal[#softId] =
-    function(holdersList, #embeddedGlobalsObject, #staticState, inherit, mixin,
-    installTearOff) {
+  function(holdersList, #embeddedGlobalsObject, #staticState,
+           inherit, inheritMany, mixin,
+           installTearOff) {
 
 // Installs the holders as local variables.
 #installHoldersAsLocals;
@@ -1058,15 +1076,17 @@
   js.Statement emitInheritance(Fragment fragment, {bool softDeferred = false}) {
     List<js.Statement> inheritCalls = [];
     List<js.Statement> mixinCalls = [];
+    // local caches of functions to allow minifaction of function name in call.
+    Map<String, js.Expression> locals = {};
 
-    Set<Class> classesInFragment = new Set<Class>();
+    Set<Class> classesInFragment = Set();
     for (Library library in fragment.libraries) {
       classesInFragment.addAll(library.classes
           .where(((Class cls) => cls.isSoftDeferred == softDeferred)));
     }
 
-    Map<Class, List<Class>> subclasses = <Class, List<Class>>{};
-    Set<Class> seen = new Set<Class>();
+    Map<Class, List<Class>> subclasses = {};
+    Set<Class> seen = Set();
 
     void collect(cls) {
       if (cls == null || seen.contains(cls)) return;
@@ -1087,41 +1107,43 @@
         collect(cls);
 
         if (cls.mixinClass != null) {
-          mixinCalls.add(js.js.statement('mixin(#, #)',
+          locals['_mixin'] ??= js.js('mixin');
+          mixinCalls.add(js.js.statement('_mixin(#, #)',
               [classReference(cls), classReference(cls.mixinClass)]));
         }
       }
     }
 
-    js.Expression temp = null;
     for (Class superclass in subclasses.keys) {
       List<Class> list = subclasses[superclass];
       js.Expression superclassReference = (superclass == null)
           ? new js.LiteralNull()
           : classReference(superclass);
       if (list.length == 1) {
-        inheritCalls.add(js.js.statement('inherit(#, #)',
+        locals['_inherit'] ??= js.js('inherit');
+        inheritCalls.add(js.js.statement('_inherit(#, #)',
             [classReference(list.single), superclassReference]));
       } else {
-        // Hold common superclass in temporary for sequence of calls.
-        if (temp == null) {
-          String tempName = '_';
-          temp = new js.VariableUse(tempName);
-          var declaration = new js.VariableDeclaration(tempName);
-          inheritCalls.add(
-              js.js.statement('var # = #', [declaration, superclassReference]));
-        } else {
-          inheritCalls
-              .add(js.js.statement('# = #', [temp, superclassReference]));
-        }
-        for (Class cls in list) {
-          inheritCalls.add(
-              js.js.statement('inherit(#, #)', [classReference(cls), temp]));
-        }
+        locals['_inheritMany'] ??= js.js('inheritMany');
+        var listElements = list.map(classReference).toList();
+        inheritCalls.add(js.js.statement('_inheritMany(#, #)',
+            [superclassReference, js.ArrayInitializer(listElements)]));
       }
     }
 
-    return wrapPhase('inheritance', inheritCalls.toList()..addAll(mixinCalls));
+    List<js.Statement> statements = [];
+    if (locals.isNotEmpty) {
+      List<js.VariableInitialization> initializations = [];
+      locals.forEach((local, value) {
+        initializations.add(
+            js.VariableInitialization(js.VariableDeclaration(local), value));
+      });
+      statements.add(
+          js.ExpressionStatement(js.VariableDeclarationList(initializations)));
+    }
+    statements.addAll(inheritCalls);
+    statements.addAll(mixinCalls);
+    return wrapPhase('inheritance', statements);
   }
 
   /// Emits the setup of method aliases.
diff --git a/pkg/compiler/lib/src/js_model/closure.dart b/pkg/compiler/lib/src/js_model/closure.dart
index 240672a..a500d9d 100644
--- a/pkg/compiler/lib/src/js_model/closure.dart
+++ b/pkg/compiler/lib/src/js_model/closure.dart
@@ -18,6 +18,7 @@
 import '../js_model/env.dart';
 import '../ordered_typeset.dart';
 import '../options.dart';
+import '../serialization/serialization.dart';
 import '../ssa/type_builder.dart';
 import '../universe/selector.dart';
 import 'elements.dart';
@@ -61,6 +62,119 @@
   }
 }
 
+class KernelClosureConversionTask extends ClosureConversionTask {
+  KernelClosureConversionTask(Measurer measurer) : super(measurer);
+}
+
+class ClosureDataImpl implements ClosureData {
+  /// Tag used for identifying serialized [ClosureData] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-data';
+
+  final JsToElementMap _elementMap;
+
+  /// Map of the scoping information that corresponds to a particular entity.
+  final Map<MemberEntity, ScopeInfo> _scopeMap;
+  final Map<ir.TreeNode, CapturedScope> _capturedScopesMap;
+  // Indicates the type variables (if any) that are captured in a given
+  // Signature function.
+  final Map<MemberEntity, CapturedScope> _capturedScopeForSignatureMap;
+
+  // The key is either a [ir.FunctionDeclaration] or [ir.FunctionExpression].
+  final Map<ir.TreeNode, ClosureRepresentationInfo>
+      _localClosureRepresentationMap;
+
+  ClosureDataImpl(this._elementMap, this._scopeMap, this._capturedScopesMap,
+      this._capturedScopeForSignatureMap, this._localClosureRepresentationMap);
+
+  /// Deserializes a [ClosureData] object from [source].
+  factory ClosureDataImpl.readFromDataSource(
+      JsToElementMap elementMap, DataSource source) {
+    source.begin(tag);
+    // TODO(johnniwinther): Support shared [ScopeInfo].
+    Map<MemberEntity, ScopeInfo> scopeMap =
+        source.readMemberMap(() => new ScopeInfo.readFromDataSource(source));
+    Map<ir.TreeNode, CapturedScope> capturedScopesMap = source
+        .readTreeNodeMap(() => new CapturedScope.readFromDataSource(source));
+    Map<MemberEntity, CapturedScope> capturedScopeForSignatureMap = source
+        .readMemberMap(() => new CapturedScope.readFromDataSource(source));
+    Map<ir.TreeNode, ClosureRepresentationInfo> localClosureRepresentationMap =
+        source.readTreeNodeMap(
+            () => new ClosureRepresentationInfo.readFromDataSource(source));
+    source.end(tag);
+    return new ClosureDataImpl(elementMap, scopeMap, capturedScopesMap,
+        capturedScopeForSignatureMap, localClosureRepresentationMap);
+  }
+
+  /// Serializes this [ClosureData] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeMemberMap(
+        _scopeMap, (ScopeInfo info) => info.writeToDataSink(sink));
+    sink.writeTreeNodeMap(_capturedScopesMap, (CapturedScope scope) {
+      scope.writeToDataSink(sink);
+    });
+    sink.writeMemberMap(_capturedScopeForSignatureMap,
+        (CapturedScope scope) => scope.writeToDataSink(sink));
+    sink.writeTreeNodeMap(_localClosureRepresentationMap,
+        (ClosureRepresentationInfo info) {
+      info.writeToDataSink(sink);
+    });
+    sink.end(tag);
+  }
+
+  @override
+  ScopeInfo getScopeInfo(MemberEntity entity) {
+    // TODO(johnniwinther): Remove this check when constructor bodies a created
+    // eagerly with the J-model; a constructor body should have it's own
+    // [ClosureRepresentationInfo].
+    if (entity is ConstructorBodyEntity) {
+      ConstructorBodyEntity constructorBody = entity;
+      entity = constructorBody.constructor;
+    }
+
+    ScopeInfo scopeInfo = _scopeMap[entity];
+    assert(
+        scopeInfo != null, failedAt(entity, "Missing scope info for $entity."));
+    return scopeInfo;
+  }
+
+  // TODO(efortuna): Eventually capturedScopesMap[node] should always
+  // be non-null, and we should just test that with an assert.
+  @override
+  CapturedScope getCapturedScope(MemberEntity entity) {
+    MemberDefinition definition = _elementMap.getMemberDefinition(entity);
+    switch (definition.kind) {
+      case MemberKind.regular:
+      case MemberKind.constructor:
+      case MemberKind.constructorBody:
+      case MemberKind.closureCall:
+        return _capturedScopesMap[definition.node] ?? const CapturedScope();
+      case MemberKind.signature:
+        return _capturedScopeForSignatureMap[entity] ?? const CapturedScope();
+      default:
+        throw failedAt(entity, "Unexpected member definition $definition");
+    }
+  }
+
+  @override
+  // TODO(efortuna): Eventually capturedScopesMap[node] should always
+  // be non-null, and we should just test that with an assert.
+  CapturedLoopScope getCapturedLoopScope(ir.Node loopNode) =>
+      _capturedScopesMap[loopNode] ?? const CapturedLoopScope();
+
+  @override
+  ClosureRepresentationInfo getClosureInfo(ir.Node node) {
+    assert(node is ir.FunctionExpression || node is ir.FunctionDeclaration);
+    var closure = _localClosureRepresentationMap[node];
+    assert(
+        closure != null,
+        "Corresponding closure class not found for $node. "
+        "Closures found for ${_localClosureRepresentationMap.keys}");
+    return closure;
+  }
+}
+
 /// Closure conversion code using our new Entity model. Closure conversion is
 /// necessary because the semantics of closures are slightly different in Dart
 /// than JavaScript. Closure conversion is separated out into two phases:
@@ -73,32 +187,24 @@
 /// check out:
 /// http://siek.blogspot.com/2012/07/essence-of-closure-conversion.html or
 /// http://matt.might.net/articles/closure-conversion/.
-// TODO(efortuna): Change inheritance hierarchy so that the
-// ClosureConversionTask doesn't inherit from ClosureTask because it's just a
-// glorified timer.
-class KernelClosureConversionTask extends ClosureConversionTask {
+
+class ClosureDataBuilder {
   final JsToElementMap _elementMap;
   final GlobalLocalsMap _globalLocalsMap;
   final CompilerOptions _options;
 
   /// Map of the scoping information that corresponds to a particular entity.
-  Map<MemberEntity, ScopeInfo> _scopeMap = <MemberEntity, ScopeInfo>{};
-  Map<ir.Node, CapturedScope> _capturedScopesMap = <ir.Node, CapturedScope>{};
+  Map<MemberEntity, ScopeInfo> _scopeMap = {};
+  Map<ir.TreeNode, CapturedScope> _capturedScopesMap = {};
   // Indicates the type variables (if any) that are captured in a given
   // Signature function.
-  Map<MemberEntity, CapturedScope> _capturedScopeForSignatureMap =
-      <MemberEntity, CapturedScope>{};
-
-  Map<MemberEntity, ClosureRepresentationInfo> _memberClosureRepresentationMap =
-      <MemberEntity, ClosureRepresentationInfo>{};
+  Map<MemberEntity, CapturedScope> _capturedScopeForSignatureMap = {};
 
   // The key is either a [ir.FunctionDeclaration] or [ir.FunctionExpression].
   Map<ir.TreeNode, ClosureRepresentationInfo> _localClosureRepresentationMap =
-      <ir.TreeNode, ClosureRepresentationInfo>{};
+      {};
 
-  KernelClosureConversionTask(
-      Measurer measurer, this._elementMap, this._globalLocalsMap, this._options)
-      : super(measurer);
+  ClosureDataBuilder(this._elementMap, this._globalLocalsMap, this._options);
 
   void _updateScopeBasedOnRtiNeed(KernelScopeInfo scope, ClosureRtiNeed rtiNeed,
       MemberEntity outermostEntity) {
@@ -224,11 +330,11 @@
     });
   }
 
-  Iterable<FunctionEntity> createClosureEntities(
+  ClosureData createClosureEntities(
       JsClosedWorldBuilder closedWorldBuilder,
       Map<MemberEntity, ScopeModel> closureModels,
-      ClosureRtiNeed rtiNeed) {
-    List<FunctionEntity> callMethods = <FunctionEntity>[];
+      ClosureRtiNeed rtiNeed,
+      List<FunctionEntity> callMethods) {
     closureModels.forEach((MemberEntity member, ScopeModel model) {
       KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(member);
       Map<Local, JRecordField> allBoxedVariables =
@@ -274,27 +380,30 @@
                 rtiNeed.localFunctionNeedsSignature(functionNode.parent));
         // Add also for the call method.
         _scopeMap[closureClassInfo.callMethod] = closureClassInfo;
-        _scopeMap[closureClassInfo.signatureMethod] = closureClassInfo;
+        if (closureClassInfo.signatureMethod != null) {
+          _scopeMap[closureClassInfo.signatureMethod] = closureClassInfo;
 
-        // Set up capturedScope for signature method. This is distinct from
-        // _capturedScopesMap because there is no corresponding ir.Node for the
-        // signature.
-        if (rtiNeed.localFunctionNeedsSignature(functionNode.parent) &&
-            model.capturedScopesMap[functionNode] != null) {
-          KernelCapturedScope capturedScope =
-              model.capturedScopesMap[functionNode];
-          assert(capturedScope is! KernelCapturedLoopScope);
-          KernelCapturedScope signatureCapturedScope =
-              new KernelCapturedScope.forSignature(capturedScope);
-          _updateScopeBasedOnRtiNeed(signatureCapturedScope, rtiNeed, member);
-          _capturedScopeForSignatureMap[closureClassInfo.signatureMethod] =
-              new JsCapturedScope.from(
-                  {}, signatureCapturedScope, localsMap, _elementMap);
+          // Set up capturedScope for signature method. This is distinct from
+          // _capturedScopesMap because there is no corresponding ir.Node for
+          // the signature.
+          if (rtiNeed.localFunctionNeedsSignature(functionNode.parent) &&
+              model.capturedScopesMap[functionNode] != null) {
+            KernelCapturedScope capturedScope =
+                model.capturedScopesMap[functionNode];
+            assert(capturedScope is! KernelCapturedLoopScope);
+            KernelCapturedScope signatureCapturedScope =
+                new KernelCapturedScope.forSignature(capturedScope);
+            _updateScopeBasedOnRtiNeed(signatureCapturedScope, rtiNeed, member);
+            _capturedScopeForSignatureMap[closureClassInfo.signatureMethod] =
+                new JsCapturedScope.from(
+                    {}, signatureCapturedScope, localsMap, _elementMap);
+          }
         }
         callMethods.add(closureClassInfo.callMethod);
       }
     });
-    return callMethods;
+    return new ClosureDataImpl(_elementMap, _scopeMap, _capturedScopesMap,
+        _capturedScopeForSignatureMap, _localClosureRepresentationMap);
   }
 
   /// Given what variables are captured at each point, construct closure classes
@@ -320,18 +429,13 @@
 
     // We want the original declaration where that function is used to point
     // to the correct closure class.
-    _memberClosureRepresentationMap[closureClassInfo.callMethod] =
-        closureClassInfo;
-    _memberClosureRepresentationMap[closureClassInfo.signatureMethod] =
-        closureClassInfo;
     _globalLocalsMap.setLocalsMap(closureClassInfo.callMethod, localsMap);
-    if (createSignatureMethod) {
+    if (closureClassInfo.signatureMethod != null) {
       _globalLocalsMap.setLocalsMap(
           closureClassInfo.signatureMethod, localsMap);
     }
     if (node.parent is ir.Member) {
       assert(_elementMap.getMember(node.parent) == member);
-      _memberClosureRepresentationMap[member] = closureClassInfo;
     } else {
       assert(node.parent is ir.FunctionExpression ||
           node.parent is ir.FunctionDeclaration);
@@ -339,57 +443,6 @@
     }
     return closureClassInfo;
   }
-
-  @override
-  ScopeInfo getScopeInfo(MemberEntity entity) {
-    // TODO(johnniwinther): Remove this check when constructor bodies a created
-    // eagerly with the J-model; a constructor body should have it's own
-    // [ClosureRepresentationInfo].
-    if (entity is ConstructorBodyEntity) {
-      ConstructorBodyEntity constructorBody = entity;
-      entity = constructorBody.constructor;
-    }
-
-    ScopeInfo scopeInfo = _scopeMap[entity];
-    assert(
-        scopeInfo != null, failedAt(entity, "Missing scope info for $entity."));
-    return scopeInfo;
-  }
-
-  // TODO(efortuna): Eventually capturedScopesMap[node] should always
-  // be non-null, and we should just test that with an assert.
-  @override
-  CapturedScope getCapturedScope(MemberEntity entity) {
-    MemberDefinition definition = _elementMap.getMemberDefinition(entity);
-    switch (definition.kind) {
-      case MemberKind.regular:
-      case MemberKind.constructor:
-      case MemberKind.constructorBody:
-      case MemberKind.closureCall:
-        return _capturedScopesMap[definition.node] ?? const CapturedScope();
-      case MemberKind.signature:
-        return _capturedScopeForSignatureMap[entity] ?? const CapturedScope();
-      default:
-        throw failedAt(entity, "Unexpected member definition $definition");
-    }
-  }
-
-  @override
-  // TODO(efortuna): Eventually capturedScopesMap[node] should always
-  // be non-null, and we should just test that with an assert.
-  CapturedLoopScope getCapturedLoopScope(ir.Node loopNode) =>
-      _capturedScopesMap[loopNode] ?? const CapturedLoopScope();
-
-  @override
-  ClosureRepresentationInfo getClosureInfo(ir.Node node) {
-    assert(node is ir.FunctionExpression || node is ir.FunctionDeclaration);
-    var closure = _localClosureRepresentationMap[node];
-    assert(
-        closure != null,
-        "Corresponding closure class not found for $node. "
-        "Closures found for ${_localClosureRepresentationMap.keys}");
-    return closure;
-  }
 }
 
 enum VariableUseKind {
@@ -645,7 +698,11 @@
 }
 
 class JsScopeInfo extends ScopeInfo {
-  final Set<Local> localsUsedInTryOrSync;
+  /// Tag used for identifying serialized [JsScopeInfo] objects in a
+  /// debugging data stream.
+  static const String tag = 'scope-info';
+
+  final Iterable<Local> localsUsedInTryOrSync;
   final Local thisLocal;
   final Map<Local, JRecordField> boxedVariables;
 
@@ -653,10 +710,14 @@
   /// this scope.
   final Set<Local> freeVariables;
 
+  JsScopeInfo.internal(this.localsUsedInTryOrSync, this.thisLocal,
+      this.boxedVariables, this.freeVariables);
+
   JsScopeInfo.from(this.boxedVariables, KernelScopeInfo info,
       KernelToLocalsMap localsMap, JsToElementMap elementMap)
-      : this.thisLocal =
-            info.hasThisLocal ? new ThisLocal(localsMap.currentMember) : null,
+      : this.thisLocal = info.hasThisLocal
+            ? new ThisLocal(localsMap.currentMember.enclosingClass)
+            : null,
         this.localsUsedInTryOrSync =
             info.localsUsedInTryOrSync.map(localsMap.getLocalVariable).toSet(),
         this.freeVariables = info.freeVariables
@@ -684,6 +745,29 @@
   }
 
   bool isBoxed(Local variable) => boxedVariables.containsKey(variable);
+
+  factory JsScopeInfo.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Iterable<Local> localsUsedInTryOrSync = source.readLocals();
+    Local thisLocal = source.readLocalOrNull();
+    Map<Local, JRecordField> boxedVariables =
+        source.readLocalMap<Local, JRecordField>(() => source.readMember());
+    Set<Local> freeVariables = source.readLocals().toSet();
+    source.end(tag);
+    return new JsScopeInfo.internal(
+        localsUsedInTryOrSync, thisLocal, boxedVariables, freeVariables);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(ScopeInfoKind.scopeInfo);
+    sink.begin(tag);
+    sink.writeLocals(localsUsedInTryOrSync);
+    sink.writeLocalOrNull(thisLocal);
+    sink.writeLocalMap(boxedVariables, sink.writeMember);
+    sink.writeLocals(freeVariables);
+    sink.end(tag);
+  }
 }
 
 class KernelCapturedScope extends KernelScopeInfo {
@@ -728,8 +812,21 @@
 }
 
 class JsCapturedScope extends JsScopeInfo implements CapturedScope {
+  /// Tag used for identifying serialized [JsCapturedScope] objects in a
+  /// debugging data stream.
+  static const String tag = 'captured-scope';
+
   final Local context;
 
+  JsCapturedScope.internal(
+      Iterable<Local> localsUsedInTryOrSync,
+      Local thisLocal,
+      Map<Local, JRecordField> boxedVariables,
+      Set<Local> freeVariables,
+      this.context)
+      : super.internal(
+            localsUsedInTryOrSync, thisLocal, boxedVariables, freeVariables);
+
   JsCapturedScope.from(
       Map<Local, JRecordField> boxedVariables,
       KernelCapturedScope capturedScope,
@@ -740,6 +837,31 @@
         super.from(boxedVariables, capturedScope, localsMap, elementMap);
 
   bool get requiresContextBox => boxedVariables.isNotEmpty;
+
+  factory JsCapturedScope.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Iterable<Local> localsUsedInTryOrSync = source.readLocals();
+    Local thisLocal = source.readLocalOrNull();
+    Map<Local, JRecordField> boxedVariables =
+        source.readLocalMap<Local, JRecordField>(() => source.readMember());
+    Set<Local> freeVariables = source.readLocals().toSet();
+    Local context = source.readLocalOrNull();
+    source.end(tag);
+    return new JsCapturedScope.internal(localsUsedInTryOrSync, thisLocal,
+        boxedVariables, freeVariables, context);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(ScopeInfoKind.capturedScope);
+    sink.begin(tag);
+    sink.writeLocals(localsUsedInTryOrSync);
+    sink.writeLocalOrNull(thisLocal);
+    sink.writeLocalMap(boxedVariables, sink.writeMember);
+    sink.writeLocals(freeVariables);
+    sink.writeLocalOrNull(context);
+    sink.end(tag);
+  }
 }
 
 class KernelCapturedLoopScope extends KernelCapturedScope {
@@ -770,8 +892,22 @@
 }
 
 class JsCapturedLoopScope extends JsCapturedScope implements CapturedLoopScope {
+  /// Tag used for identifying serialized [JsCapturedLoopScope] objects in a
+  /// debugging data stream.
+  static const String tag = 'captured-loop-scope';
+
   final List<Local> boxedLoopVariables;
 
+  JsCapturedLoopScope.internal(
+      Iterable<Local> localsUsedInTryOrSync,
+      Local thisLocal,
+      Map<Local, JRecordField> boxedVariables,
+      Set<Local> freeVariables,
+      Local context,
+      this.boxedLoopVariables)
+      : super.internal(localsUsedInTryOrSync, thisLocal, boxedVariables,
+            freeVariables, context);
+
   JsCapturedLoopScope.from(
       Map<Local, JRecordField> boxedVariables,
       KernelCapturedLoopScope capturedScope,
@@ -783,18 +919,63 @@
         super.from(boxedVariables, capturedScope, localsMap, elementMap);
 
   bool get hasBoxedLoopVariables => boxedLoopVariables.isNotEmpty;
+
+  factory JsCapturedLoopScope.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Iterable<Local> localsUsedInTryOrSync = source.readLocals();
+    Local thisLocal = source.readLocalOrNull();
+    Map<Local, JRecordField> boxedVariables =
+        source.readLocalMap<Local, JRecordField>(() => source.readMember());
+    Set<Local> freeVariables = source.readLocals().toSet();
+    Local context = source.readLocalOrNull();
+    List<Local> boxedLoopVariables = source.readLocals();
+    source.end(tag);
+    return new JsCapturedLoopScope.internal(localsUsedInTryOrSync, thisLocal,
+        boxedVariables, freeVariables, context, boxedLoopVariables);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(ScopeInfoKind.capturedLoopScope);
+    sink.begin(tag);
+    sink.writeLocals(localsUsedInTryOrSync);
+    sink.writeLocalOrNull(thisLocal);
+    sink.writeLocalMap(boxedVariables, sink.writeMember);
+    sink.writeLocals(freeVariables);
+    sink.writeLocalOrNull(context);
+    sink.writeLocals(boxedLoopVariables);
+    sink.end(tag);
+  }
 }
 
+// TODO(johnniwinther): Rename this class.
 // TODO(johnniwinther): Add unittest for the computed [ClosureClass].
 class KernelClosureClassInfo extends JsScopeInfo
     implements ClosureRepresentationInfo {
+  /// Tag used for identifying serialized [KernelClosureClassInfo] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-representation-info';
+
   JFunction callMethod;
   JSignatureMethod signatureMethod;
   final Local closureEntity;
   final Local thisLocal;
   final JClass closureClassEntity;
 
-  final Map<Local, JField> localToFieldMap = new Map<Local, JField>();
+  final Map<Local, JField> localToFieldMap;
+
+  KernelClosureClassInfo.internal(
+      Iterable<Local> localsUsedInTryOrSync,
+      this.thisLocal,
+      Map<Local, JRecordField> boxedVariables,
+      Set<Local> freeVariables,
+      this.callMethod,
+      this.signatureMethod,
+      this.closureEntity,
+      this.closureClassEntity,
+      this.localToFieldMap)
+      : super.internal(
+            localsUsedInTryOrSync, thisLocal, boxedVariables, freeVariables);
 
   KernelClosureClassInfo.fromScopeInfo(
       this.closureClassEntity,
@@ -805,7 +986,49 @@
       this.closureEntity,
       this.thisLocal,
       JsToElementMap elementMap)
-      : super.from(boxedVariables, info, localsMap, elementMap);
+      : localToFieldMap = new Map<Local, JField>(),
+        super.from(boxedVariables, info, localsMap, elementMap);
+
+  factory KernelClosureClassInfo.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Iterable<Local> localsUsedInTryOrSync = source.readLocals();
+    Local thisLocal = source.readLocalOrNull();
+    Map<Local, JRecordField> boxedVariables =
+        source.readLocalMap<Local, JRecordField>(() => source.readMember());
+    Set<Local> freeVariables = source.readLocals().toSet();
+    JFunction callMethod = source.readMember();
+    JSignatureMethod signatureMethod = source.readMemberOrNull();
+    Local closureEntity = source.readLocalOrNull();
+    JClass closureClassEntity = source.readClass();
+    Map<Local, JField> localToFieldMap =
+        source.readLocalMap(() => source.readMember());
+    source.end(tag);
+    return new KernelClosureClassInfo.internal(
+        localsUsedInTryOrSync,
+        thisLocal,
+        boxedVariables,
+        freeVariables,
+        callMethod,
+        signatureMethod,
+        closureEntity,
+        closureClassEntity,
+        localToFieldMap);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(ScopeInfoKind.closureRepresentationInfo);
+    sink.begin(tag);
+    sink.writeLocals(localsUsedInTryOrSync);
+    sink.writeLocalOrNull(thisLocal);
+    sink.writeLocalMap(boxedVariables, sink.writeMember);
+    sink.writeLocals(freeVariables);
+    sink.writeMember(callMethod);
+    sink.writeMemberOrNull(signatureMethod);
+    sink.writeLocalOrNull(closureEntity);
+    sink.writeClass(closureClassEntity);
+    sink.writeLocalMap(localToFieldMap, sink.writeMember);
+    sink.end(tag);
+  }
 
   List<Local> get createdFieldEntities => localToFieldMap.keys.toList();
 
@@ -848,35 +1071,111 @@
 }
 
 class JClosureClass extends JClass {
+  /// Tag used for identifying serialized [JClosureClass] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-class';
+
   JClosureClass(JLibrary library, String name)
       : super(library, name, isAbstract: false);
 
+  factory JClosureClass.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JLibrary library = source.readLibrary();
+    String name = source.readString();
+    source.end(tag);
+    return new JClosureClass(library, name);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassKind.closure);
+    sink.begin(tag);
+    sink.writeLibrary(library);
+    sink.writeString(name);
+    sink.end(tag);
+  }
+
   @override
   bool get isClosure => true;
 
   String toString() => '${jsElementPrefix}closure_class($name)';
 }
 
+class AnonymousClosureLocal implements Local {
+  final JClosureClass closureClass;
+
+  AnonymousClosureLocal(this.closureClass);
+
+  String get name => '';
+
+  int get hashCode => closureClass.hashCode * 13;
+
+  bool operator ==(other) {
+    if (identical(this, other)) return true;
+    if (other is! AnonymousClosureLocal) return false;
+    return closureClass == other.closureClass;
+  }
+
+  String toString() =>
+      '${jsElementPrefix}anonymous_closure_local(${closureClass.name})';
+}
+
 class JClosureField extends JField implements PrivatelyNamedJSEntity {
-  final Local _declaredEntity;
-  JClosureField(String name, KernelClosureClassInfo containingClass,
-      bool isConst, bool isAssignable, this._declaredEntity)
-      : super(
+  /// Tag used for identifying serialized [JClosureClass] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-field';
+
+  final String declaredName;
+
+  JClosureField(
+      String name, KernelClosureClassInfo containingClass, String declaredName,
+      {bool isConst, bool isAssignable})
+      : this.internal(
             containingClass.closureClassEntity.library,
             containingClass.closureClassEntity,
             new Name(name, containingClass.closureClassEntity.library),
+            declaredName,
             isAssignable: isAssignable,
-            isConst: isConst,
-            isStatic: false);
+            isConst: isConst);
+
+  JClosureField.internal(JLibrary library, JClosureClass enclosingClass,
+      Name memberName, this.declaredName, {bool isConst, bool isAssignable})
+      : super(library, enclosingClass, memberName,
+            isAssignable: isAssignable, isConst: isConst, isStatic: false);
+
+  factory JClosureField.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JClass cls = source.readClass();
+    String name = source.readString();
+    String declaredName = source.readString();
+    bool isConst = source.readBool();
+    bool isAssignable = source.readBool();
+    source.end(tag);
+    return new JClosureField.internal(
+        cls.library, cls, new Name(name, cls.library), declaredName,
+        isAssignable: isAssignable, isConst: isConst);
+  }
 
   @override
-  Local get declaredEntity => _declaredEntity;
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.closureField);
+    sink.begin(tag);
+    sink.writeClass(enclosingClass);
+    sink.writeString(name);
+    sink.writeString(declaredName);
+    sink.writeBool(isConst);
+    sink.writeBool(isAssignable);
+    sink.end(tag);
+  }
 
   @override
   Entity get rootOfScope => enclosingClass;
 }
 
 class RecordClassData implements JClassData {
+  /// Tag used for identifying serialized [RecordClassData] objects in a
+  /// debugging data stream.
+  static const String tag = 'record-class-data';
+
   @override
   final ClassDefinition definition;
 
@@ -892,6 +1191,28 @@
   RecordClassData(
       this.definition, this.thisType, this.supertype, this.orderedTypeSet);
 
+  factory RecordClassData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ClassDefinition definition = new ClassDefinition.readFromDataSource(source);
+    InterfaceType thisType = source.readDartType();
+    InterfaceType supertype = source.readDartType();
+    OrderedTypeSet orderedTypeSet =
+        new OrderedTypeSet.readFromDataSource(source);
+    source.end(tag);
+    return new RecordClassData(definition, thisType, supertype, orderedTypeSet);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassDataKind.record);
+    sink.begin(tag);
+    definition.writeToDataSink(sink);
+    sink.writeDartType(thisType);
+    sink.writeDartType(supertype);
+    orderedTypeSet.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
   @override
   bool get isMixinApplication => false;
 
@@ -913,12 +1234,32 @@
 
 /// A container for variables declared in a particular scope that are accessed
 /// elsewhere.
-// TODO(efortuna, johnniwinther): Don't implement JClass. This isn't actually a
+// TODO(johnniwinther): Don't implement JClass. This isn't actually a
 // class.
 class JRecord extends JClass {
+  /// Tag used for identifying serialized [JRecord] objects in a
+  /// debugging data stream.
+  static const String tag = 'record';
+
   JRecord(LibraryEntity library, String name)
       : super(library, name, isAbstract: false);
 
+  factory JRecord.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JLibrary library = source.readLibrary();
+    String name = source.readString();
+    source.end(tag);
+    return new JRecord(library, name);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassKind.record);
+    sink.begin(tag);
+    sink.writeLibrary(library);
+    sink.writeString(name);
+    sink.end(tag);
+  }
+
   bool get isClosure => false;
 
   String toString() => '${jsElementPrefix}record_container($name)';
@@ -930,38 +1271,109 @@
 /// This corresponds to BoxFieldElement; we reuse BoxLocal from the original
 /// algorithm to correspond to the actual name of the variable.
 class JRecordField extends JField {
+  /// Tag used for identifying serialized [JRecordField] objects in a
+  /// debugging data stream.
+  static const String tag = 'record-field';
+
   final BoxLocal box;
-  JRecordField(String name, this.box, JClass containingClass, bool isConst)
-      : super(containingClass.library, containingClass,
-            new Name(name, containingClass.library),
+
+  JRecordField(String name, this.box, {bool isConst})
+      : super(box.container.library, box.container,
+            new Name(name, box.container.library),
             isStatic: false, isAssignable: true, isConst: isConst);
 
+  factory JRecordField.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    String name = source.readString();
+    JClass enclosingClass = source.readClass();
+    bool isConst = source.readBool();
+    source.end(tag);
+    return new JRecordField(name, new BoxLocal(enclosingClass),
+        isConst: isConst);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.recordField);
+    sink.begin(tag);
+    sink.writeString(name);
+    sink.writeClass(enclosingClass);
+    sink.writeBool(isConst);
+    sink.end(tag);
+  }
+
   @override
   bool get isInstanceMember => false;
 }
 
 class ClosureClassData extends RecordClassData {
+  /// Tag used for identifying serialized [ClosureClassData] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-class-data';
+
   @override
   FunctionType callType;
 
   ClosureClassData(ClassDefinition definition, InterfaceType thisType,
       InterfaceType supertype, OrderedTypeSet orderedTypeSet)
       : super(definition, thisType, supertype, orderedTypeSet);
+
+  factory ClosureClassData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ClassDefinition definition = new ClassDefinition.readFromDataSource(source);
+    InterfaceType thisType = source.readDartType();
+    InterfaceType supertype = source.readDartType();
+    OrderedTypeSet orderedTypeSet =
+        new OrderedTypeSet.readFromDataSource(source);
+    FunctionType callType = source.readDartType();
+    source.end(tag);
+    return new ClosureClassData(definition, thisType, supertype, orderedTypeSet)
+      ..callType = callType;
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassDataKind.closure);
+    sink.begin(tag);
+    definition.writeToDataSink(sink);
+    sink.writeDartType(thisType);
+    sink.writeDartType(supertype);
+    orderedTypeSet.writeToDataSink(sink);
+    sink.writeDartType(callType);
+    sink.end(tag);
+  }
 }
 
 class ClosureClassDefinition implements ClassDefinition {
-  final ClassEntity cls;
+  /// Tag used for identifying serialized [ClosureClassDefinition] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-class-definition';
+
   final SourceSpan location;
 
-  ClosureClassDefinition(this.cls, this.location);
+  ClosureClassDefinition(this.location);
+
+  factory ClosureClassDefinition.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    SourceSpan location = source.readSourceSpan();
+    source.end(tag);
+    return new ClosureClassDefinition(location);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(ClassKind.closure);
+    sink.begin(tag);
+    sink.writeSourceSpan(location);
+    sink.end(tag);
+  }
 
   ClassKind get kind => ClassKind.closure;
 
   ir.Node get node =>
-      throw new UnsupportedError('ClosureClassDefinition.node for $cls');
+      throw new UnsupportedError('ClosureClassDefinition.node for $location');
 
-  String toString() =>
-      'ClosureClassDefinition(kind:$kind,cls:$cls,location:$location)';
+  String toString() => 'ClosureClassDefinition(kind:$kind,location:$location)';
 }
 
 abstract class ClosureMemberData implements JMemberData {
@@ -979,6 +1391,10 @@
 class ClosureFunctionData extends ClosureMemberData
     with FunctionDataMixin
     implements FunctionData {
+  /// Tag used for identifying serialized [ClosureFunctionData] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-function-data';
+
   final FunctionType functionType;
   final ir.FunctionNode functionNode;
   final ClassTypeVariableAccess classTypeVariableAccess;
@@ -991,6 +1407,31 @@
       this.classTypeVariableAccess)
       : super(definition, memberThisType);
 
+  factory ClosureFunctionData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ClosureMemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    InterfaceType memberThisType = source.readDartType(allowNull: true);
+    FunctionType functionType = source.readDartType();
+    ir.FunctionNode functionNode = source.readTreeNode();
+    ClassTypeVariableAccess classTypeVariableAccess =
+        source.readEnum(ClassTypeVariableAccess.values);
+    source.end(tag);
+    return new ClosureFunctionData(definition, memberThisType, functionType,
+        functionNode, classTypeVariableAccess);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.closureFunction);
+    sink.begin(tag);
+    definition.writeToDataSink(sink);
+    sink.writeDartType(memberThisType, allowNull: true);
+    sink.writeDartType(functionType);
+    sink.writeTreeNode(functionNode);
+    sink.writeEnum(classTypeVariableAccess);
+    sink.end(tag);
+  }
+
   void forEachParameter(JsToElementMap elementMap,
       void f(DartType type, String name, ConstantValue defaultValue)) {
     void handleParameter(ir.VariableDeclaration node, {bool isOptional: true}) {
@@ -1023,10 +1464,32 @@
 }
 
 class ClosureFieldData extends ClosureMemberData implements JFieldData {
+  /// Tag used for identifying serialized [ClosureFieldData] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-field-data';
+
   DartType _type;
+
   ClosureFieldData(MemberDefinition definition, InterfaceType memberThisType)
       : super(definition, memberThisType);
 
+  factory ClosureFieldData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    MemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    InterfaceType memberThisType = source.readDartType(allowNull: true);
+    source.end(tag);
+    return new ClosureFieldData(definition, memberThisType);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.closureField);
+    sink.begin(tag);
+    definition.writeToDataSink(sink);
+    sink.writeDartType(memberThisType, allowNull: true);
+    sink.end(tag);
+  }
+
   @override
   DartType getFieldType(IrToElementMap elementMap) {
     if (_type != null) return _type;
@@ -1046,7 +1509,7 @@
       type = sourceNode.bound;
     } else {
       failedAt(
-          definition.member,
+          definition.location,
           'Unexpected node type ${sourceNode} in '
           'ClosureFieldData.getFieldType');
     }
@@ -1056,8 +1519,8 @@
   @override
   ConstantExpression getFieldConstantExpression(IrToElementMap elementMap) {
     failedAt(
-        definition.member,
-        "Unexpected field ${definition.member} in "
+        definition.location,
+        "Unexpected field ${definition} in "
         "ClosureFieldData.getFieldConstantExpression");
     return null;
   }
@@ -1065,8 +1528,8 @@
   @override
   ConstantValue getConstantFieldInitializer(IrToElementMap elementMap) {
     failedAt(
-        definition.member,
-        "Unexpected field ${definition.member} in "
+        definition.location,
+        "Unexpected field ${definition} in "
         "ClosureFieldData.getConstantFieldInitializer");
     return null;
   }
@@ -1087,30 +1550,69 @@
 }
 
 class ClosureMemberDefinition implements MemberDefinition {
-  final MemberEntity member;
+  /// Tag used for identifying serialized [ClosureMemberDefinition] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-member-definition';
+
   final SourceSpan location;
   final MemberKind kind;
-  final ir.Node node;
+  final ir.TreeNode node;
 
-  ClosureMemberDefinition(this.member, this.location, this.kind, this.node);
+  ClosureMemberDefinition(this.location, this.kind, this.node)
+      : assert(
+            kind == MemberKind.closureCall || kind == MemberKind.closureField);
 
-  String toString() =>
-      'ClosureMemberDefinition(kind:$kind,member:$member,location:$location)';
+  factory ClosureMemberDefinition.readFromDataSource(
+      DataSource source, MemberKind kind) {
+    source.begin(tag);
+    SourceSpan location = source.readSourceSpan();
+    ir.TreeNode node = source.readTreeNode();
+    source.end(tag);
+    return new ClosureMemberDefinition(location, kind, node);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(kind);
+    sink.begin(tag);
+    sink.writeSourceSpan(location);
+    sink.writeTreeNode(node);
+    sink.end(tag);
+  }
+
+  String toString() => 'ClosureMemberDefinition(kind:$kind,location:$location)';
 }
 
 class RecordContainerDefinition implements ClassDefinition {
-  final ClassEntity cls;
+  /// Tag used for identifying serialized [RecordContainerDefinition] objects in
+  /// a debugging data stream.
+  static const String tag = 'record-definition';
+
   final SourceSpan location;
 
-  RecordContainerDefinition(this.cls, this.location);
+  RecordContainerDefinition(this.location);
+
+  factory RecordContainerDefinition.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    SourceSpan location = source.readSourceSpan();
+    source.end(tag);
+    return new RecordContainerDefinition(location);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(ClassKind.record);
+    sink.begin(tag);
+    sink.writeSourceSpan(location);
+    sink.end(tag);
+  }
 
   ClassKind get kind => ClassKind.record;
 
-  ir.Node get node =>
-      throw new UnsupportedError('RecordContainerDefinition.node for $cls');
+  ir.Node get node => throw new UnsupportedError(
+      'RecordContainerDefinition.node for $location');
 
   String toString() =>
-      'RecordContainerDefinition(kind:$kind,cls:$cls,location:$location)';
+      'RecordContainerDefinition(kind:$kind,location:$location)';
 }
 
 /// Collection of scope data collected for a single member.
diff --git a/pkg/compiler/lib/src/js_model/closure_visitors.dart b/pkg/compiler/lib/src/js_model/closure_visitors.dart
index 9c67a77..7987280 100644
--- a/pkg/compiler/lib/src/js_model/closure_visitors.dart
+++ b/pkg/compiler/lib/src/js_model/closure_visitors.dart
@@ -16,7 +16,7 @@
   /// A map of each visited call node with the associated information about what
   /// variables are captured/used. Each ir.Node key corresponds to a scope that
   /// was encountered while visiting a closure (initially called through
-  /// [translateLazyIntializer] or [translateConstructorOrProcedure]).
+  /// [translateLazyInitializer] or [translateConstructorOrProcedure]).
   Map<ir.Node, KernelCapturedScope> get _scopesCapturedInClosureMap =>
       _model.capturedScopesMap;
 
diff --git a/pkg/compiler/lib/src/js_model/element_map.dart b/pkg/compiler/lib/src/js_model/element_map.dart
index 940d001..22a306b 100644
--- a/pkg/compiler/lib/src/js_model/element_map.dart
+++ b/pkg/compiler/lib/src/js_model/element_map.dart
@@ -18,11 +18,13 @@
 import '../js_model/closure.dart' show JRecordField, KernelScopeInfo;
 import '../js_model/elements.dart' show JGeneratorBody;
 import '../native/native.dart' as native;
+import '../serialization/serialization.dart';
 import '../ssa/type_builder.dart';
 import '../types/abstract_value_domain.dart';
 import '../universe/call_structure.dart';
 import '../universe/selector.dart';
 import '../world.dart';
+import 'closure.dart';
 
 /// Interface that translates between Kernel IR nodes and entities used for
 /// global type inference and building the SSA graph for members.
@@ -273,6 +275,9 @@
   /// Returns the [JumpTarget] defined by the while statement [node] or `null`
   /// if [node] is not a jump target.
   JumpTarget getJumpTargetForWhile(ir.WhileStatement node);
+
+  /// Serializes this [KernelToLocalsMap] to [sink].
+  void writeToDataSink(DataSink sink);
 }
 
 /// Returns the [ir.FunctionNode] that defines [member] or `null` if [member]
@@ -334,9 +339,6 @@
 
 /// Definition information for a [MemberEntity].
 abstract class MemberDefinition {
-  /// The defined member.
-  MemberEntity get member;
-
   /// The kind of the defined member. This determines the semantics of [node].
   MemberKind get kind;
 
@@ -349,6 +351,27 @@
   /// The canonical location of [member]. This is used for sorting the members
   /// in the emitted code.
   SourceSpan get location;
+
+  /// Deserializes a [MemberDefinition] object from [source].
+  factory MemberDefinition.readFromDataSource(DataSource source) {
+    MemberKind kind = source.readEnum(MemberKind.values);
+    switch (kind) {
+      case MemberKind.regular:
+        return new RegularMemberDefinition.readFromDataSource(source);
+      case MemberKind.constructor:
+      case MemberKind.constructorBody:
+      case MemberKind.signature:
+      case MemberKind.generatorBody:
+        return new SpecialMemberDefinition.readFromDataSource(source, kind);
+      case MemberKind.closureCall:
+      case MemberKind.closureField:
+        return new ClosureMemberDefinition.readFromDataSource(source, kind);
+    }
+    throw new UnsupportedError("Unexpected MemberKind $kind");
+  }
+
+  /// Serializes this [MemberDefinition] to [sink].
+  void writeToDataSink(DataSink sink);
 }
 
 enum ClassKind {
@@ -361,38 +384,72 @@
 
 /// A member directly defined by its [ir.Member] node.
 class RegularMemberDefinition implements MemberDefinition {
-  final MemberEntity member;
+  /// Tag used for identifying serialized [RegularMemberDefinition] objects in a
+  /// debugging data stream.
+  static const String tag = 'regular-member-definition';
+
   final ir.Member node;
 
-  RegularMemberDefinition(this.member, this.node);
+  RegularMemberDefinition(this.node);
+
+  factory RegularMemberDefinition.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Member node = source.readMemberNode();
+    source.end(tag);
+    return new RegularMemberDefinition(node);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(MemberKind.regular);
+    sink.begin(tag);
+    sink.writeMemberNode(node);
+    sink.end(tag);
+  }
 
   SourceSpan get location => computeSourceSpanFromTreeNode(node);
 
   MemberKind get kind => MemberKind.regular;
 
-  String toString() => 'RegularMemberDefinition(kind:$kind,member:$member,'
+  String toString() => 'RegularMemberDefinition(kind:$kind,'
       'node:$node,location:$location)';
 }
 
 /// The definition of a special kind of member
 class SpecialMemberDefinition implements MemberDefinition {
-  final MemberEntity member;
+  /// Tag used for identifying serialized [SpecialMemberDefinition] objects in a
+  /// debugging data stream.
+  static const String tag = 'special-member-definition';
+
   final ir.TreeNode node;
   final MemberKind kind;
 
-  SpecialMemberDefinition(this.member, this.node, this.kind);
+  SpecialMemberDefinition(this.node, this.kind);
+
+  factory SpecialMemberDefinition.readFromDataSource(
+      DataSource source, MemberKind kind) {
+    source.begin(tag);
+    ir.TreeNode node = source.readTreeNode();
+    source.end(tag);
+    return new SpecialMemberDefinition(node, kind);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(kind);
+    sink.begin(tag);
+    sink.writeTreeNode(node);
+    sink.end(tag);
+  }
 
   SourceSpan get location => computeSourceSpanFromTreeNode(node);
 
-  String toString() => 'SpecialMemberDefinition(kind:$kind,member:$member,'
+  String toString() => 'SpecialMemberDefinition(kind:$kind,'
       'node:$node,location:$location)';
 }
 
 /// Definition information for a [ClassEntity].
 abstract class ClassDefinition {
-  /// The defined class.
-  ClassEntity get cls;
-
   /// The kind of the defined class. This determines the semantics of [node].
   ClassKind get kind;
 
@@ -402,20 +459,54 @@
   /// The canonical location of [cls]. This is used for sorting the classes
   /// in the emitted code.
   SourceSpan get location;
+
+  /// Deserializes a [ClassDefinition] object from [source].
+  factory ClassDefinition.readFromDataSource(DataSource source) {
+    ClassKind kind = source.readEnum(ClassKind.values);
+    switch (kind) {
+      case ClassKind.regular:
+        return new RegularClassDefinition.readFromDataSource(source);
+      case ClassKind.closure:
+        return new ClosureClassDefinition.readFromDataSource(source);
+      case ClassKind.record:
+        return new RecordContainerDefinition.readFromDataSource(source);
+    }
+    throw new UnsupportedError("Unexpected ClassKind $kind");
+  }
+
+  /// Serializes this [ClassDefinition] to [sink].
+  void writeToDataSink(DataSink sink);
 }
 
 /// A class directly defined by its [ir.Class] node.
 class RegularClassDefinition implements ClassDefinition {
-  final ClassEntity cls;
+  /// Tag used for identifying serialized [RegularClassDefinition] objects in a
+  /// debugging data stream.
+  static const String tag = 'regular-class-definition';
+
   final ir.Class node;
 
-  RegularClassDefinition(this.cls, this.node);
+  RegularClassDefinition(this.node);
+
+  factory RegularClassDefinition.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Class node = source.readClassNode();
+    source.end(tag);
+    return new RegularClassDefinition(node);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(kind);
+    sink.begin(tag);
+    sink.writeClassNode(node);
+    sink.end(tag);
+  }
 
   SourceSpan get location => computeSourceSpanFromTreeNode(node);
 
   ClassKind get kind => ClassKind.regular;
 
-  String toString() => 'RegularClassDefinition(kind:$kind,cls:$cls,'
+  String toString() => 'RegularClassDefinition(kind:$kind,'
       'node:$node,location:$location)';
 }
 
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index 34433cd..dccda12 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -43,6 +43,7 @@
 import '../native/native.dart' as native;
 import '../options.dart';
 import '../ordered_typeset.dart';
+import '../serialization/serialization.dart';
 import '../ssa/type_builder.dart';
 import '../universe/call_structure.dart';
 import '../universe/selector.dart';
@@ -79,7 +80,7 @@
   ir.TypeEnvironment _typeEnvironment;
 
   /// Library environment. Used for fast lookup.
-  JProgramEnv env;
+  JProgramEnv programEnv;
 
   final EntityDataEnvMap<IndexedLibrary, JLibraryData, JLibraryEnv> libraries =
       new EntityDataEnvMap<IndexedLibrary, JLibraryData, JLibraryEnv>();
@@ -113,12 +114,14 @@
   NativeBasicData get nativeBasicData;
 
   FunctionEntity get _mainFunction {
-    return env.mainMethod != null ? getMethodInternal(env.mainMethod) : null;
+    return programEnv.mainMethod != null
+        ? getMethodInternal(programEnv.mainMethod)
+        : null;
   }
 
   LibraryEntity get _mainLibrary {
-    return env.mainMethod != null
-        ? getLibraryInternal(env.mainMethod.enclosingLibrary)
+    return programEnv.mainMethod != null
+        ? getLibraryInternal(programEnv.mainMethod.enclosingLibrary)
         : null;
   }
 
@@ -152,7 +155,7 @@
   }
 
   LibraryEntity lookupLibrary(Uri uri) {
-    JLibraryEnv libraryEnv = env.lookupLibrary(uri);
+    JLibraryEnv libraryEnv = programEnv.lookupLibrary(uri);
     if (libraryEnv == null) return null;
     return getLibraryInternal(libraryEnv.library, libraryEnv);
   }
@@ -716,8 +719,8 @@
   ir.TypeEnvironment get typeEnvironment {
     if (_typeEnvironment == null) {
       _typeEnvironment ??= new ir.TypeEnvironment(
-          new ir.CoreTypes(env.mainComponent),
-          new ir.ClassHierarchy(env.mainComponent));
+          new ir.CoreTypes(programEnv.mainComponent),
+          new ir.ClassHierarchy(programEnv.mainComponent));
     }
     return _typeEnvironment;
   }
@@ -1440,6 +1443,23 @@
 class JsKernelToElementMap extends JsToElementMapBase
     with JsElementCreatorMixin
     implements JsToWorldBuilder, JsToElementMap {
+  /// Tag used for identifying serialized [JsKernelToElementMap] objects in a
+  /// debugging data stream.
+  static const String tag = 'js-kernel-to-element-map';
+
+  /// Tags used for identifying serialized subsections of a
+  /// [JsKernelToElementMap] object in a debugging data stream.
+  static const String libraryTag = 'libraries';
+  static const String classTag = 'classes';
+  static const String typedefTag = 'typedefs';
+  static const String memberTag = 'members';
+  static const String typeVariableTag = 'type-variables';
+  static const String libraryDataTag = 'library-data';
+  static const String classDataTag = 'class-data';
+  static const String typedefDataTag = 'typedef-data';
+  static const String memberDataTag = 'member-data';
+  static const String typeVariableDataTag = 'type-variable-data';
+
   final Map<ir.Library, IndexedLibrary> libraryMap = {};
   final Map<ir.Class, IndexedClass> classMap = {};
   final Map<ir.Typedef, IndexedTypedef> typedefMap = {};
@@ -1458,20 +1478,19 @@
   final Map<ir.TreeNode, Local> localFunctionMap = {};
 
   /// Map from members to the call methods created for their nested closures.
-  Map<MemberEntity, List<FunctionEntity>> _nestedClosureMap =
-      <MemberEntity, List<FunctionEntity>>{};
+  Map<IndexedMember, List<IndexedFunction>> _nestedClosureMap = {};
 
   @override
   NativeBasicData nativeBasicData;
 
-  Map<FunctionEntity, JGeneratorBody> _generatorBodies = {};
+  Map<IndexedFunction, JGeneratorBody> _generatorBodies = {};
 
-  Map<ClassEntity, List<MemberEntity>> _injectedClassMembers = {};
+  Map<IndexedClass, List<IndexedMember>> _injectedClassMembers = {};
 
   JsKernelToElementMap(DiagnosticReporter reporter, Environment environment,
       KernelToElementMapImpl _elementMap, Iterable<MemberEntity> liveMembers)
       : super(_elementMap.options, reporter, environment) {
-    env = _elementMap.env.convert();
+    programEnv = _elementMap.env.convert();
     for (int libraryIndex = 0;
         libraryIndex < _elementMap.libraries.length;
         libraryIndex++) {
@@ -1484,7 +1503,7 @@
           libraries.register<IndexedLibrary, JLibraryData, JLibraryEnv>(
               newLibrary, data.convert(), newEnv);
       assert(newLibrary.libraryIndex == oldLibrary.libraryIndex);
-      env.registerLibrary(newEnv);
+      programEnv.registerLibrary(newEnv);
     }
     // TODO(johnniwinther): Filter unused classes.
     for (int classIndex = 0;
@@ -1497,8 +1516,7 @@
       LibraryEntity newLibrary = libraries.getEntity(oldLibrary.libraryIndex);
       IndexedClass newClass = convertClass(newLibrary, oldClass);
       JClassEnv newEnv = env.convert(_elementMap, liveMembers);
-      classMap[env.cls] =
-          classes.register(newClass, data.convert(newClass), newEnv);
+      classMap[env.cls] = classes.register(newClass, data.convert(), newEnv);
       assert(newClass.classIndex == oldClass.classIndex);
       libraries.getEnv(newClass.library).registerClass(newClass.name, newEnv);
     }
@@ -1512,13 +1530,11 @@
       IndexedTypedef newTypedef = convertTypedef(newLibrary, oldTypedef);
       typedefMap[data.node] = typedefs.register(
           newTypedef,
-          new JTypedefData(
+          new JTypedefData(new TypedefType(
               newTypedef,
-              new TypedefType(
-                  newTypedef,
-                  new List<DartType>.filled(
-                      data.node.typeParameters.length, const DynamicType()),
-                  getDartType(data.node.type))));
+              new List<DartType>.filled(
+                  data.node.typeParameters.length, const DynamicType()),
+              getDartType(data.node.type))));
       assert(newTypedef.typedefIndex == oldTypedef.typedefIndex);
     }
     for (int memberIndex = 0;
@@ -1536,7 +1552,7 @@
       ClassEntity newClass =
           oldClass != null ? classes.getEntity(oldClass.classIndex) : null;
       IndexedMember newMember = convertMember(newLibrary, newClass, oldMember);
-      members.register(newMember, data.convert(newMember));
+      members.register(newMember, data.convert());
       assert(newMember.memberIndex == oldMember.memberIndex);
       if (newMember.isField) {
         fieldMap[data.node] = newMember;
@@ -1557,9 +1573,14 @@
       if (oldTypeVariable.typeDeclaration is ClassEntity) {
         IndexedClass cls = oldTypeVariable.typeDeclaration;
         newTypeDeclaration = classes.getEntity(cls.classIndex);
+        // TODO(johnniwinther): Skip type variables of unused classes.
       } else if (oldTypeVariable.typeDeclaration is MemberEntity) {
         IndexedMember member = oldTypeVariable.typeDeclaration;
         newTypeDeclaration = members.getEntity(member.memberIndex);
+        if (newTypeDeclaration == null) {
+          typeVariables.skipIndex(typeVariableIndex);
+          continue;
+        }
       } else {
         assert(oldTypeVariable.typeDeclaration is Local);
       }
@@ -1571,7 +1592,6 @@
       assert(newTypeVariable.typeVariableIndex ==
           oldTypeVariable.typeVariableIndex);
     }
-    //typeVariableMap.keys.forEach((n) => print(n.parent));
     // TODO(johnniwinther): We should close the environment in the beginning of
     // this constructor but currently we need the [MemberEntity] to query if the
     // member is live, thus potentially creating the [MemberEntity] in the
@@ -1579,6 +1599,207 @@
     _elementMap.envIsClosed = true;
   }
 
+  JsKernelToElementMap.readFromDataSource(
+      CompilerOptions options,
+      DiagnosticReporter reporter,
+      Environment environment,
+      ir.Component component,
+      DataSource source)
+      : super(options, reporter, environment) {
+    source.registerComponentLookup(new ComponentLookup(component));
+    _EntityLookup entityLookup = new _EntityLookup();
+    source.registerEntityLookup(entityLookup);
+
+    source.begin(tag);
+    source.begin(libraryTag);
+    int libraryCount = source.readInt();
+    for (int i = 0; i < libraryCount; i++) {
+      int index = source.readInt();
+      JLibrary library = new JLibrary.readFromDataSource(source);
+      entityLookup.registerLibrary(index, library);
+    }
+    source.end(libraryTag);
+
+    source.begin(classTag);
+    int classCount = source.readInt();
+    for (int i = 0; i < classCount; i++) {
+      int index = source.readInt();
+      JClass cls = new JClass.readFromDataSource(source);
+      entityLookup.registerClass(index, cls);
+    }
+    source.end(classTag);
+
+    source.begin(typedefTag);
+    int typedefCount = source.readInt();
+    for (int i = 0; i < typedefCount; i++) {
+      int index = source.readInt();
+      JTypedef typedef = new JTypedef.readFromDataSource(source);
+      entityLookup.registerTypedef(index, typedef);
+    }
+    source.end(typedefTag);
+
+    source.begin(memberTag);
+    int memberCount = source.readInt();
+    for (int i = 0; i < memberCount; i++) {
+      int index = source.readInt();
+      JMember member = new JMember.readFromDataSource(source);
+      entityLookup.registerMember(index, member);
+    }
+    source.end(memberTag);
+
+    source.begin(typeVariableTag);
+    int typeVariableCount = source.readInt();
+    for (int i = 0; i < typeVariableCount; i++) {
+      int index = source.readInt();
+      JTypeVariable typeVariable = new JTypeVariable.readFromDataSource(source);
+      entityLookup.registerTypeVariable(index, typeVariable);
+    }
+    source.end(typeVariableTag);
+
+    programEnv = new JProgramEnv([component]);
+    source.begin(libraryDataTag);
+    entityLookup.forEachLibrary((int index, JLibrary library) {
+      JLibraryEnv env = new JLibraryEnv.readFromDataSource(source);
+      JLibraryData data = new JLibraryData.readFromDataSource(source);
+      libraryMap[env.library] =
+          libraries.registerByIndex(index, library, data, env);
+      programEnv.registerLibrary(env);
+      assert(index == library.libraryIndex);
+    });
+    source.end(libraryDataTag);
+
+    source.begin(classDataTag);
+    entityLookup.forEachClass((int index, JClass cls) {
+      JClassEnv env = new JClassEnv.readFromDataSource(source);
+      JClassData data = new JClassData.readFromDataSource(source);
+      classMap[env.cls] = classes.registerByIndex(index, cls, data, env);
+      libraries.getEnv(cls.library).registerClass(cls.name, env);
+      assert(index == cls.classIndex);
+    });
+    source.end(classDataTag);
+
+    source.begin(typedefDataTag);
+    entityLookup.forEachTypedef((int index, JTypedef typedef) {
+      JTypedefData data = new JTypedefData.readFromDataSource(source);
+      typedefs.registerByIndex(index, typedef, data);
+      assert(index == typedef.typedefIndex);
+    });
+    source.end(typedefDataTag);
+
+    source.begin(memberDataTag);
+    entityLookup.forEachMember((int index, IndexedMember member) {
+      JMemberData data = new JMemberData.readFromDataSource(source);
+      members.registerByIndex(index, member, data);
+      switch (data.definition.kind) {
+        case MemberKind.regular:
+        case MemberKind.constructor:
+          ir.Member node = data.definition.node;
+          if (member.isField) {
+            fieldMap[node] = member;
+          } else if (member.isConstructor) {
+            constructorMap[node] = member;
+          } else {
+            methodMap[node] = member;
+          }
+          break;
+        default:
+      }
+      assert(index == member.memberIndex);
+    });
+    source.end(memberDataTag);
+
+    source.begin(typeVariableDataTag);
+    entityLookup.forEachTypeVariable((int index, JTypeVariable typeVariable) {
+      JTypeVariableData data = new JTypeVariableData.readFromDataSource(source);
+      typeVariableMap[data.node] =
+          typeVariables.registerByIndex(index, typeVariable, data);
+      assert(index == typeVariable.typeVariableIndex);
+    });
+    source.end(typeVariableDataTag);
+    source.end(tag);
+  }
+
+  /// Serializes this [JsToElementMap] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+
+    // Serialize the entities before serializing the data.
+    sink.begin(libraryTag);
+    sink.writeInt(libraries.size);
+    libraries.forEach((JLibrary library, _, __) {
+      sink.writeInt(library.libraryIndex);
+      library.writeToDataSink(sink);
+    });
+    sink.end(libraryTag);
+
+    sink.begin(classTag);
+    sink.writeInt(classes.size);
+    classes.forEach((JClass cls, _, __) {
+      sink.writeInt(cls.classIndex);
+      cls.writeToDataSink(sink);
+    });
+    sink.end(classTag);
+
+    sink.begin(typedefTag);
+    sink.writeInt(typedefs.size);
+    typedefs.forEach((JTypedef typedef, _) {
+      sink.writeInt(typedef.typedefIndex);
+      typedef.writeToDataSink(sink);
+    });
+    sink.end(typedefTag);
+
+    sink.begin(memberTag);
+    sink.writeInt(members.size);
+    members.forEach((JMember member, _) {
+      sink.writeInt(member.memberIndex);
+      member.writeToDataSink(sink);
+    });
+    sink.end(memberTag);
+
+    sink.begin(typeVariableTag);
+    sink.writeInt(typeVariables.size);
+    typeVariables.forEach((JTypeVariable typeVariable, _) {
+      sink.writeInt(typeVariable.typeVariableIndex);
+      typeVariable.writeToDataSink(sink);
+    });
+    sink.end(typeVariableTag);
+
+    // Serialize the entity data after having serialized the entities.
+    sink.begin(libraryDataTag);
+    libraries.forEach((_, JLibraryData data, JLibraryEnv env) {
+      env.writeToDataSink(sink);
+      data.writeToDataSink(sink);
+    });
+    sink.end(libraryDataTag);
+
+    sink.begin(classDataTag);
+    classes.forEach((_, JClassData data, JClassEnv env) {
+      env.writeToDataSink(sink);
+      data.writeToDataSink(sink);
+    });
+    sink.end(classDataTag);
+
+    sink.begin(typedefDataTag);
+    typedefs.forEach((_, JTypedefData data) {
+      data.writeToDataSink(sink);
+    });
+    sink.end(typedefDataTag);
+
+    sink.begin(memberDataTag);
+    members.forEach((_, JMemberData data) {
+      data.writeToDataSink(sink);
+    });
+    sink.end(memberDataTag);
+
+    sink.begin(typeVariableDataTag);
+    typeVariables.forEach((_, JTypeVariableData data) {
+      data.writeToDataSink(sink);
+    });
+    sink.end(typeVariableDataTag);
+
+    sink.end(tag);
+  }
+
   @override
   void forEachNestedClosure(
       MemberEntity member, void f(FunctionEntity closure)) {
@@ -1705,11 +1926,8 @@
       JConstructorBody constructorBody = createConstructorBody(constructor);
       members.register<IndexedFunction, FunctionData>(
           constructorBody,
-          new ConstructorBodyDataImpl(
-              node,
-              node.function,
-              new SpecialMemberDefinition(
-                  constructorBody, node, MemberKind.constructorBody)));
+          new ConstructorBodyDataImpl(node, node.function,
+              new SpecialMemberDefinition(node, MemberKind.constructorBody)));
       IndexedClass cls = constructor.enclosingClass;
       JClassEnvImpl classEnv = classes.getEnv(cls);
       // TODO(johnniwinther): Avoid this by only including live members in the
@@ -1776,20 +1994,16 @@
       InterfaceType memberThisType,
       ir.VariableDeclaration variable,
       BoxLocal boxLocal,
-      JClass container,
       Map<String, MemberEntity> memberMap,
       KernelToLocalsMap localsMap) {
     Local local = localsMap.getLocalVariable(variable);
     JRecordField boxedField =
-        new JRecordField(local.name, boxLocal, container, variable.isConst);
+        new JRecordField(local.name, boxLocal, isConst: variable.isConst);
     members.register(
         boxedField,
         new ClosureFieldData(
-            new ClosureMemberDefinition(
-                boxedField,
-                computeSourceSpanFromTreeNode(variable),
-                MemberKind.closureField,
-                variable),
+            new ClosureMemberDefinition(computeSourceSpanFromTreeNode(variable),
+                MemberKind.closureField, variable),
             memberThisType));
     memberMap[boxedField.name] = boxedField;
 
@@ -1806,26 +2020,25 @@
     if (info.boxedVariables.isNotEmpty) {
       NodeBox box = info.capturedVariablesAccessor;
 
-      Map<String, MemberEntity> memberMap = <String, MemberEntity>{};
+      Map<String, IndexedMember> memberMap = <String, IndexedMember>{};
       JRecord container = new JRecord(member.library, box.name);
+      BoxLocal boxLocal = new BoxLocal(container);
       InterfaceType thisType = new InterfaceType(container, const <DartType>[]);
       InterfaceType supertype = commonElements.objectType;
       JClassData containerData = new RecordClassData(
-          new ClosureClassDefinition(container,
-              computeSourceSpanFromTreeNode(getMemberDefinition(member).node)),
+          new RecordContainerDefinition(getMemberDefinition(member).location),
           thisType,
           supertype,
           getOrderedTypeSet(supertype.element).extendClass(thisType));
       classes.register(container, containerData, new RecordEnv(memberMap));
 
-      BoxLocal boxLocal = new BoxLocal(box.name);
       InterfaceType memberThisType = member.enclosingClass != null
           ? elementEnvironment.getThisType(member.enclosingClass)
           : null;
       for (ir.VariableDeclaration variable in info.boxedVariables) {
         boxedFields[localsMap.getLocalVariable(variable)] =
-            _constructRecordFieldEntry(memberThisType, variable, boxLocal,
-                container, memberMap, localsMap);
+            _constructRecordFieldEntry(
+                memberThisType, variable, boxLocal, memberMap, localsMap);
       }
     }
     return boxedFields;
@@ -1857,14 +2070,14 @@
     }
     String name = _computeClosureName(node);
     SourceSpan location = computeSourceSpanFromTreeNode(node);
-    Map<String, MemberEntity> memberMap = <String, MemberEntity>{};
+    Map<String, IndexedMember> memberMap = <String, IndexedMember>{};
 
     JClass classEntity = new JClosureClass(enclosingLibrary, name);
     // Create a classData and set up the interfaces and subclass
     // relationships that _ensureSupertypes and _ensureThisAndRawType are doing
     InterfaceType thisType = new InterfaceType(classEntity, const <DartType>[]);
     ClosureClassData closureData = new ClosureClassData(
-        new ClosureClassDefinition(classEntity, location),
+        new ClosureClassDefinition(location),
         thisType,
         supertype,
         getOrderedTypeSet(supertype.element).extendClass(thisType));
@@ -1875,13 +2088,13 @@
       ir.FunctionDeclaration parent = node.parent;
       closureEntity = localsMap.getLocalVariable(parent.variable);
     } else if (node.parent is ir.FunctionExpression) {
-      closureEntity = new JLocal('', localsMap.currentMember);
+      closureEntity = new AnonymousClosureLocal(classEntity);
     }
 
-    FunctionEntity callMethod = new JClosureCallMethod(
+    IndexedFunction callMethod = new JClosureCallMethod(
         classEntity, getParameterStructure(node), getAsyncMarker(node));
     _nestedClosureMap
-        .putIfAbsent(member, () => <FunctionEntity>[])
+        .putIfAbsent(member, () => <IndexedFunction>[])
         .add(callMethod);
     // We need create the type variable here - before we try to make local
     // variables from them (in `JsScopeInfo.from` called through
@@ -1902,7 +2115,9 @@
             info,
             localsMap,
             closureEntity,
-            info.hasThisLocal ? new ThisLocal(localsMap.currentMember) : null,
+            info.hasThisLocal
+                ? new ThisLocal(localsMap.currentMember.enclosingClass)
+                : null,
             this);
     _buildClosureClassFields(closureClassInfo, member, memberThisType, info,
         localsMap, recordFieldsVisibleInScope, memberMap);
@@ -1918,7 +2133,7 @@
         callMethod,
         new ClosureFunctionData(
             new ClosureMemberDefinition(
-                callMethod, location, MemberKind.closureCall, node.parent),
+                location, MemberKind.closureCall, node.parent),
             memberThisType,
             closureData.callType,
             node,
@@ -2035,13 +2250,13 @@
     }
 
     FieldEntity closureField = new JClosureField(
-        '_box_$fieldNumber', closureClassInfo, true, false, recordField.box);
+        '_box_$fieldNumber', closureClassInfo, recordField.box.name,
+        isConst: true, isAssignable: false);
 
     members.register<IndexedField, JFieldData>(
         closureField,
         new ClosureFieldData(
             new ClosureMemberDefinition(
-                closureClassInfo.localToFieldMap[capturedLocal],
                 computeSourceSpanFromTreeNode(sourceNode),
                 MemberKind.closureField,
                 sourceNode),
@@ -2059,19 +2274,14 @@
       InterfaceType memberThisType,
       SourceSpan location,
       ClassTypeVariableAccess typeVariableAccess) {
-    FunctionEntity signatureMethod = new JSignatureMethod(
-        closureClassInfo.closureClassEntity.library,
-        closureClassInfo.closureClassEntity,
-        // SignatureMethod takes no arguments.
-        const ParameterStructure(0, 0, const [], 0),
-        AsyncMarker.SYNC);
+    FunctionEntity signatureMethod =
+        new JSignatureMethod(closureClassInfo.closureClassEntity);
     members.register<IndexedFunction, FunctionData>(
         signatureMethod,
         new SignatureFunctionData(
-            new SpecialMemberDefinition(signatureMethod,
+            new SpecialMemberDefinition(
                 closureSourceNode.parent, MemberKind.signature),
             memberThisType,
-            null,
             closureSourceNode.typeParameters,
             typeVariableAccess));
     memberMap[signatureMethod.name] =
@@ -2090,15 +2300,14 @@
     FieldEntity closureField = new JClosureField(
         _getClosureVariableName(capturedLocal.name, fieldNumber),
         closureClassInfo,
-        isConst,
-        isAssignable,
-        capturedLocal);
+        capturedLocal.name,
+        isConst: isConst,
+        isAssignable: isAssignable);
 
     members.register<IndexedField, JFieldData>(
         closureField,
         new ClosureFieldData(
             new ClosureMemberDefinition(
-                closureClassInfo.localToFieldMap[capturedLocal],
                 computeSourceSpanFromTreeNode(sourceNode),
                 MemberKind.closureField,
                 sourceNode),
@@ -2174,14 +2383,12 @@
       generatorBody = createGeneratorBody(function, elementType);
       members.register<IndexedFunction, FunctionData>(
           generatorBody,
-          new GeneratorBodyFunctionData(
-              functionData,
-              new SpecialMemberDefinition(
-                  generatorBody, node, MemberKind.generatorBody)));
+          new GeneratorBodyFunctionData(functionData,
+              new SpecialMemberDefinition(node, MemberKind.generatorBody)));
 
       if (function.enclosingClass != null) {
         // TODO(sra): Integrate this with ClassEnvImpl.addConstructorBody ?
-        (_injectedClassMembers[function.enclosingClass] ??= <MemberEntity>[])
+        (_injectedClassMembers[function.enclosingClass] ??= <IndexedMember>[])
             .add(generatorBody);
       }
     }
@@ -2234,3 +2441,101 @@
         .getEntity(indexedTypeVariable.typeVariableIndex);
   }
 }
+
+/// [EntityLookup] implementation used to deserialize [JsKernelToElementMap].
+///
+/// Since data objects and environments are registered together with their
+/// entity we need to have a separate lookup-by-index mechanism to allow for
+/// index-based reference within data objects and environments.
+class _EntityLookup implements EntityLookup {
+  final Map<int, JLibrary> _libraries = {};
+  final Map<int, JClass> _classes = {};
+  final Map<int, JTypedef> _typedefs = {};
+  final Map<int, JMember> _members = {};
+  final Map<int, JTypeVariable> _typeVariables = {};
+
+  void registerLibrary(int index, JLibrary library) {
+    assert(!_libraries.containsKey(index),
+        "Library for index $index has already been defined.");
+    _libraries[index] = library;
+  }
+
+  void registerClass(int index, JClass cls) {
+    assert(!_classes.containsKey(index),
+        "Class for index $index has already been defined.");
+    _classes[index] = cls;
+  }
+
+  void registerTypedef(int index, JTypedef typedef) {
+    assert(!_typedefs.containsKey(index),
+        "Typedef for index $index has already been defined.");
+    _typedefs[index] = typedef;
+  }
+
+  void registerMember(int index, JMember member) {
+    assert(!_members.containsKey(index),
+        "Member for index $index has already been defined.");
+    _members[index] = member;
+  }
+
+  void registerTypeVariable(int index, JTypeVariable typeVariable) {
+    assert(!_typeVariables.containsKey(index),
+        "Type variable for index $index has already been defined.");
+    _typeVariables[index] = typeVariable;
+  }
+
+  void forEachLibrary(void f(int index, JLibrary library)) {
+    _libraries.forEach(f);
+  }
+
+  void forEachClass(void f(int index, JClass cls)) {
+    _classes.forEach(f);
+  }
+
+  void forEachTypedef(void f(int index, JTypedef typedef)) {
+    _typedefs.forEach(f);
+  }
+
+  void forEachMember(void f(int index, JMember member)) {
+    _members.forEach(f);
+  }
+
+  void forEachTypeVariable(void f(int index, JTypeVariable typeVariable)) {
+    _typeVariables.forEach(f);
+  }
+
+  @override
+  IndexedLibrary getLibraryByIndex(int index) {
+    IndexedLibrary library = _libraries[index];
+    assert(library != null, "No library found for index $index");
+    return library;
+  }
+
+  @override
+  IndexedClass getClassByIndex(int index) {
+    IndexedClass cls = _classes[index];
+    assert(cls != null, "No class found for index $index");
+    return cls;
+  }
+
+  @override
+  IndexedTypedef getTypedefByIndex(int index) {
+    IndexedTypedef typedef = _typedefs[index];
+    assert(typedef != null, "No typedef found for index $index");
+    return typedef;
+  }
+
+  @override
+  IndexedMember getMemberByIndex(int index) {
+    IndexedMember member = _members[index];
+    assert(member != null, "No member found for index $index");
+    return member;
+  }
+
+  @override
+  IndexedTypeVariable getTypeVariableByIndex(int index) {
+    IndexedTypeVariable typeVariable = _typeVariables[index];
+    assert(typeVariable != null, "No type variable found for index $index");
+    return typeVariable;
+  }
+}
diff --git a/pkg/compiler/lib/src/js_model/elements.dart b/pkg/compiler/lib/src/js_model/elements.dart
index 95193d0..f964ef9 100644
--- a/pkg/compiler/lib/src/js_model/elements.dart
+++ b/pkg/compiler/lib/src/js_model/elements.dart
@@ -9,7 +9,9 @@
 import '../elements/indexed.dart';
 import '../elements/names.dart';
 import '../elements/types.dart';
+import '../serialization/serialization.dart';
 import '../universe/class_set.dart' show ClassHierarchyNodesMapKey;
+import 'closure.dart';
 
 /// Map from 'frontend' to 'backend' elements.
 ///
@@ -318,15 +320,43 @@
 const String jsElementPrefix = 'j:';
 
 class JLibrary extends IndexedLibrary {
+  /// Tag used for identifying serialized [JLibrary] objects in a
+  /// debugging data stream.
+  static const String tag = 'library';
+
   final String name;
   final Uri canonicalUri;
 
   JLibrary(this.name, this.canonicalUri);
 
+  /// Deserializes a [JLibrary] object from [source].
+  factory JLibrary.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    String name = source.readString();
+    Uri canonicalUri = source.readUri();
+    source.end(tag);
+    return new JLibrary(name, canonicalUri);
+  }
+
+  /// Serializes this [JLibrary] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeString(name);
+    sink.writeUri(canonicalUri);
+    sink.end(tag);
+  }
+
   String toString() => '${jsElementPrefix}library($name)';
 }
 
+/// Enum used for identifying [JClass] subclasses in serialization.
+enum JClassKind { node, closure, record }
+
 class JClass extends IndexedClass with ClassHierarchyNodesMapKey {
+  /// Tag used for identifying serialized [JClass] objects in a
+  /// debugging data stream.
+  static const String tag = 'class';
+
   final JLibrary library;
 
   final String name;
@@ -334,6 +364,35 @@
 
   JClass(this.library, this.name, {this.isAbstract});
 
+  /// Deserializes a [JClass] object from [source].
+  factory JClass.readFromDataSource(DataSource source) {
+    JClassKind kind = source.readEnum(JClassKind.values);
+    switch (kind) {
+      case JClassKind.node:
+        source.begin(tag);
+        JLibrary library = source.readLibrary();
+        String name = source.readString();
+        bool isAbstract = source.readBool();
+        source.end(tag);
+        return new JClass(library, name, isAbstract: isAbstract);
+      case JClassKind.closure:
+        return new JClosureClass.readFromDataSource(source);
+      case JClassKind.record:
+        return new JRecord.readFromDataSource(source);
+    }
+    throw new UnsupportedError("Unexpected ClassKind $kind");
+  }
+
+  /// Serializes this [JClass] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassKind.node);
+    sink.begin(tag);
+    sink.writeLibrary(library);
+    sink.writeString(name);
+    sink.writeBool(isAbstract);
+    sink.end(tag);
+  }
+
   @override
   bool get isClosure => false;
 
@@ -341,15 +400,52 @@
 }
 
 class JTypedef extends IndexedTypedef {
+  /// Tag used for identifying serialized [JTypedef] objects in a
+  /// debugging data stream.
+  static const String tag = 'typedef';
+
   final JLibrary library;
 
   final String name;
 
   JTypedef(this.library, this.name);
 
+  /// Deserializes a [JTypedef] object from [source].
+  factory JTypedef.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JLibrary library = source.readLibrary();
+    String name = source.readString();
+    source.end(tag);
+    return new JTypedef(library, name);
+  }
+
+  /// Serializes this [JTypedef] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeLibrary(library);
+    sink.writeString(name);
+    sink.end(tag);
+  }
+
   String toString() => '${jsElementPrefix}typedef($name)';
 }
 
+/// Enum used for identifying [JMember] subclasses in serialization.
+enum JMemberKind {
+  generativeConstructor,
+  factoryConstructor,
+  constructorBody,
+  field,
+  getter,
+  setter,
+  method,
+  closureField,
+  closureCallMethod,
+  generatorBody,
+  signatureMethod,
+  recordField,
+}
+
 abstract class JMember extends IndexedMember {
   final JLibrary library;
   final JClass enclosingClass;
@@ -359,6 +455,41 @@
   JMember(this.library, this.enclosingClass, this._name, {bool isStatic: false})
       : _isStatic = isStatic;
 
+  /// Deserializes a [JMember] object from [source].
+  factory JMember.readFromDataSource(DataSource source) {
+    JMemberKind kind = source.readEnum(JMemberKind.values);
+    switch (kind) {
+      case JMemberKind.generativeConstructor:
+        return new JGenerativeConstructor.readFromDataSource(source);
+      case JMemberKind.factoryConstructor:
+        return new JFactoryConstructor.readFromDataSource(source);
+      case JMemberKind.constructorBody:
+        return new JConstructorBody.readFromDataSource(source);
+      case JMemberKind.field:
+        return new JField.readFromDataSource(source);
+      case JMemberKind.getter:
+        return new JGetter.readFromDataSource(source);
+      case JMemberKind.setter:
+        return new JSetter.readFromDataSource(source);
+      case JMemberKind.method:
+        return new JMethod.readFromDataSource(source);
+      case JMemberKind.closureField:
+        return new JClosureField.readFromDataSource(source);
+      case JMemberKind.closureCallMethod:
+        return new JClosureCallMethod.readFromDataSource(source);
+      case JMemberKind.generatorBody:
+        return new JGeneratorBody.readFromDataSource(source);
+      case JMemberKind.signatureMethod:
+        return new JSignatureMethod.readFromDataSource(source);
+      case JMemberKind.recordField:
+        return new JRecordField.readFromDataSource(source);
+    }
+    throw new UnsupportedError("Unexpected JMemberKind $kind");
+  }
+
+  /// Serializes this [JMember] to [sink].
+  void writeToDataSink(DataSink sink);
+
   String get name => _name.text;
 
   Name get memberName => _name;
@@ -444,12 +575,42 @@
 }
 
 class JGenerativeConstructor extends JConstructor {
+  /// Tag used for identifying serialized [JGenerativeConstructor] objects in a
+  /// debugging data stream.
+  static const String tag = 'generative-constructor';
+
   JGenerativeConstructor(
       JClass enclosingClass, Name name, ParameterStructure parameterStructure,
       {bool isExternal, bool isConst})
       : super(enclosingClass, name, parameterStructure,
             isExternal: isExternal, isConst: isConst);
 
+  factory JGenerativeConstructor.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JClass enclosingClass = source.readClass();
+    String name = source.readString();
+    ParameterStructure parameterStructure =
+        new ParameterStructure.readFromDataSource(source);
+    bool isExternal = source.readBool();
+    bool isConst = source.readBool();
+    source.end(tag);
+    return new JGenerativeConstructor(enclosingClass,
+        new Name(name, enclosingClass.library), parameterStructure,
+        isExternal: isExternal, isConst: isConst);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.generativeConstructor);
+    sink.begin(tag);
+    sink.writeClass(enclosingClass);
+    sink.writeString(name);
+    parameterStructure.writeToDataSink(sink);
+    sink.writeBool(isExternal);
+    sink.writeBool(isConst);
+    sink.end(tag);
+  }
+
   @override
   bool get isFactoryConstructor => false;
 
@@ -458,6 +619,10 @@
 }
 
 class JFactoryConstructor extends JConstructor {
+  /// Tag used for identifying serialized [JFactoryConstructor] objects in a
+  /// debugging data stream.
+  static const String tag = 'factory-constructor';
+
   @override
   final bool isFromEnvironmentConstructor;
 
@@ -467,6 +632,36 @@
       : super(enclosingClass, name, parameterStructure,
             isExternal: isExternal, isConst: isConst);
 
+  factory JFactoryConstructor.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JClass enclosingClass = source.readClass();
+    String name = source.readString();
+    ParameterStructure parameterStructure =
+        new ParameterStructure.readFromDataSource(source);
+    bool isExternal = source.readBool();
+    bool isConst = source.readBool();
+    bool isFromEnvironmentConstructor = source.readBool();
+    source.end(tag);
+    return new JFactoryConstructor(enclosingClass,
+        new Name(name, enclosingClass.library), parameterStructure,
+        isExternal: isExternal,
+        isConst: isConst,
+        isFromEnvironmentConstructor: isFromEnvironmentConstructor);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.factoryConstructor);
+    sink.begin(tag);
+    sink.writeClass(enclosingClass);
+    sink.writeString(name);
+    parameterStructure.writeToDataSink(sink);
+    sink.writeBool(isExternal);
+    sink.writeBool(isConst);
+    sink.writeBool(isFromEnvironmentConstructor);
+    sink.end(tag);
+  }
+
   @override
   bool get isFactoryConstructor => true;
 
@@ -475,7 +670,11 @@
 }
 
 class JConstructorBody extends JFunction implements ConstructorBodyEntity {
-  final ConstructorEntity constructor;
+  /// Tag used for identifying serialized [JConstructorBody] objects in a
+  /// debugging data stream.
+  static const String tag = 'constructor-body';
+
+  final JConstructor constructor;
 
   JConstructorBody(this.constructor)
       : super(
@@ -487,10 +686,29 @@
             isStatic: false,
             isExternal: false);
 
+  factory JConstructorBody.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JConstructor constructor = source.readMember();
+    source.end(tag);
+    return new JConstructorBody(constructor);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.constructorBody);
+    sink.begin(tag);
+    sink.writeMember(constructor);
+    sink.end(tag);
+  }
+
   String get _kind => 'constructor_body';
 }
 
 class JMethod extends JFunction {
+  /// Tag used for identifying serialized [JMethod] objects in a
+  /// debugging data stream.
+  static const String tag = 'method';
+
   final bool isAbstract;
 
   JMethod(JLibrary library, JClass enclosingClass, Name name,
@@ -499,6 +717,53 @@
       : super(library, enclosingClass, name, parameterStructure, asyncMarker,
             isStatic: isStatic, isExternal: isExternal);
 
+  factory JMethod.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    MemberContextKind kind = source.readEnum(MemberContextKind.values);
+    JLibrary library;
+    JClass enclosingClass;
+    switch (kind) {
+      case MemberContextKind.library:
+        library = source.readLibrary();
+        break;
+      case MemberContextKind.cls:
+        enclosingClass = source.readClass();
+        library = enclosingClass.library;
+        break;
+    }
+    String name = source.readString();
+    ParameterStructure parameterStructure =
+        new ParameterStructure.readFromDataSource(source);
+    AsyncMarker asyncMarker = source.readEnum(AsyncMarker.values);
+    bool isStatic = source.readBool();
+    bool isExternal = source.readBool();
+    bool isAbstract = source.readBool();
+    source.end(tag);
+    return new JMethod(library, enclosingClass, new Name(name, library),
+        parameterStructure, asyncMarker,
+        isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.method);
+    sink.begin(tag);
+    if (enclosingClass != null) {
+      sink.writeEnum(MemberContextKind.cls);
+      sink.writeClass(enclosingClass);
+    } else {
+      sink.writeEnum(MemberContextKind.library);
+      sink.writeLibrary(library);
+    }
+    sink.writeString(name);
+    parameterStructure.writeToDataSink(sink);
+    sink.writeEnum(asyncMarker);
+    sink.writeBool(isStatic);
+    sink.writeBool(isExternal);
+    sink.writeBool(isAbstract);
+    sink.end(tag);
+  }
+
   @override
   bool get isFunction => true;
 
@@ -506,7 +771,11 @@
 }
 
 class JGeneratorBody extends JFunction {
-  final FunctionEntity function;
+  /// Tag used for identifying serialized [JGeneratorBody] objects in a
+  /// debugging data stream.
+  static const String tag = 'generator-body';
+
+  final JFunction function;
   final DartType elementType;
   final int hashCode;
 
@@ -516,10 +785,31 @@
             function.parameterStructure, function.asyncMarker,
             isStatic: function.isStatic, isExternal: false);
 
+  factory JGeneratorBody.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JFunction function = source.readMember();
+    DartType elementType = source.readDartType();
+    source.end(tag);
+    return new JGeneratorBody(function, elementType);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.generatorBody);
+    sink.begin(tag);
+    sink.writeMember(function);
+    sink.writeDartType(elementType);
+    sink.end(tag);
+  }
+
   String get _kind => 'generator_body';
 }
 
 class JGetter extends JFunction {
+  /// Tag used for identifying serialized [JGetter] objects in a
+  /// debugging data stream.
+  static const String tag = 'getter';
+
   final bool isAbstract;
 
   JGetter(JLibrary library, JClass enclosingClass, Name name,
@@ -529,6 +819,50 @@
             asyncMarker,
             isStatic: isStatic, isExternal: isExternal);
 
+  factory JGetter.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    MemberContextKind kind = source.readEnum(MemberContextKind.values);
+    JLibrary library;
+    JClass enclosingClass;
+    switch (kind) {
+      case MemberContextKind.library:
+        library = source.readLibrary();
+        break;
+      case MemberContextKind.cls:
+        enclosingClass = source.readClass();
+        library = enclosingClass.library;
+        break;
+    }
+    String name = source.readString();
+    AsyncMarker asyncMarker = source.readEnum(AsyncMarker.values);
+    bool isStatic = source.readBool();
+    bool isExternal = source.readBool();
+    bool isAbstract = source.readBool();
+    source.end(tag);
+    return new JGetter(
+        library, enclosingClass, new Name(name, library), asyncMarker,
+        isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.getter);
+    sink.begin(tag);
+    if (enclosingClass != null) {
+      sink.writeEnum(MemberContextKind.cls);
+      sink.writeClass(enclosingClass);
+    } else {
+      sink.writeEnum(MemberContextKind.library);
+      sink.writeLibrary(library);
+    }
+    sink.writeString(name);
+    sink.writeEnum(asyncMarker);
+    sink.writeBool(isStatic);
+    sink.writeBool(isExternal);
+    sink.writeBool(isAbstract);
+    sink.end(tag);
+  }
+
   @override
   bool get isGetter => true;
 
@@ -536,6 +870,10 @@
 }
 
 class JSetter extends JFunction {
+  /// Tag used for identifying serialized [JSetter] objects in a
+  /// debugging data stream.
+  static const String tag = 'setter';
+
   final bool isAbstract;
 
   JSetter(JLibrary library, JClass enclosingClass, Name name,
@@ -544,6 +882,47 @@
             AsyncMarker.SYNC,
             isStatic: isStatic, isExternal: isExternal);
 
+  factory JSetter.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    MemberContextKind kind = source.readEnum(MemberContextKind.values);
+    JLibrary library;
+    JClass enclosingClass;
+    switch (kind) {
+      case MemberContextKind.library:
+        library = source.readLibrary();
+        break;
+      case MemberContextKind.cls:
+        enclosingClass = source.readClass();
+        library = enclosingClass.library;
+        break;
+    }
+    String name = source.readString();
+    bool isStatic = source.readBool();
+    bool isExternal = source.readBool();
+    bool isAbstract = source.readBool();
+    source.end(tag);
+    return new JSetter(library, enclosingClass, new Name(name, library),
+        isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.setter);
+    sink.begin(tag);
+    if (enclosingClass != null) {
+      sink.writeEnum(MemberContextKind.cls);
+      sink.writeClass(enclosingClass);
+    } else {
+      sink.writeEnum(MemberContextKind.library);
+      sink.writeLibrary(library);
+    }
+    sink.writeString(name);
+    sink.writeBool(isStatic);
+    sink.writeBool(isExternal);
+    sink.writeBool(isAbstract);
+    sink.end(tag);
+  }
+
   @override
   bool get isAssignable => true;
 
@@ -554,6 +933,10 @@
 }
 
 class JField extends JMember implements FieldEntity, IndexedField {
+  /// Tag used for identifying serialized [JField] objects in a
+  /// debugging data stream.
+  static const String tag = 'field';
+
   final bool isAssignable;
   final bool isConst;
 
@@ -561,6 +944,47 @@
       {bool isStatic, this.isAssignable, this.isConst})
       : super(library, enclosingClass, name, isStatic: isStatic);
 
+  factory JField.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    MemberContextKind kind = source.readEnum(MemberContextKind.values);
+    JLibrary library;
+    JClass enclosingClass;
+    switch (kind) {
+      case MemberContextKind.library:
+        library = source.readLibrary();
+        break;
+      case MemberContextKind.cls:
+        enclosingClass = source.readClass();
+        library = enclosingClass.library;
+        break;
+    }
+    String name = source.readString();
+    bool isStatic = source.readBool();
+    bool isAssignable = source.readBool();
+    bool isConst = source.readBool();
+    source.end(tag);
+    return new JField(library, enclosingClass, new Name(name, library),
+        isStatic: isStatic, isAssignable: isAssignable, isConst: isConst);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.field);
+    sink.begin(tag);
+    if (enclosingClass != null) {
+      sink.writeEnum(MemberContextKind.cls);
+      sink.writeClass(enclosingClass);
+    } else {
+      sink.writeEnum(MemberContextKind.library);
+      sink.writeLibrary(library);
+    }
+    sink.writeString(name);
+    sink.writeBool(isStatic);
+    sink.writeBool(isAssignable);
+    sink.writeBool(isConst);
+    sink.end(tag);
+  }
+
   @override
   bool get isField => true;
 
@@ -568,34 +992,137 @@
 }
 
 class JClosureCallMethod extends JMethod {
+  /// Tag used for identifying serialized [JClosureCallMethod] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-call-method';
+
   JClosureCallMethod(ClassEntity enclosingClass,
       ParameterStructure parameterStructure, AsyncMarker asyncMarker)
       : super(enclosingClass.library, enclosingClass, Names.call,
             parameterStructure, asyncMarker,
             isStatic: false, isExternal: false, isAbstract: false);
 
+  factory JClosureCallMethod.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JClass enclosingClass = source.readClass();
+    ParameterStructure parameterStructure =
+        new ParameterStructure.readFromDataSource(source);
+    AsyncMarker asyncMarker = source.readEnum(AsyncMarker.values);
+    source.end(tag);
+    return new JClosureCallMethod(
+        enclosingClass, parameterStructure, asyncMarker);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.closureCallMethod);
+    sink.begin(tag);
+    sink.writeClass(enclosingClass);
+    parameterStructure.writeToDataSink(sink);
+    sink.writeEnum(asyncMarker);
+    sink.end(tag);
+  }
+
   String get _kind => 'closure_call';
 }
 
 /// A method that returns the signature of the Dart closure/tearoff that this
 /// method's parent class is representing.
 class JSignatureMethod extends JMethod {
-  JSignatureMethod(LibraryEntity enclosingLibrary, ClassEntity enclosingClass,
-      ParameterStructure parameterStructure, AsyncMarker asyncMarker)
-      : super(enclosingLibrary, enclosingClass, Names.signature,
-            parameterStructure, asyncMarker,
+  /// Tag used for identifying serialized [JSignatureMethod] objects in a
+  /// debugging data stream.
+  static const String tag = 'signature-method';
+
+  JSignatureMethod(ClassEntity enclosingClass)
+      : super(enclosingClass.library, enclosingClass, Names.signature,
+            const ParameterStructure(0, 0, const [], 0), AsyncMarker.SYNC,
             isStatic: false, isExternal: false, isAbstract: false);
 
+  factory JSignatureMethod.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JClass cls = source.readClass();
+    source.end(tag);
+    return new JSignatureMethod(cls);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberKind.signatureMethod);
+    sink.begin(tag);
+    sink.writeClass(enclosingClass);
+    sink.end(tag);
+  }
+
   String get _kind => 'signature';
 }
 
+/// Enum used for identifying [JTypeVariable] variants in serialization.
+enum JTypeVariableKind { cls, member, typedef, local }
+
 class JTypeVariable extends IndexedTypeVariable {
+  /// Tag used for identifying serialized [JTypeVariable] objects in a
+  /// debugging data stream.
+  static const String tag = 'type-variable';
+
   final Entity typeDeclaration;
   final String name;
   final int index;
 
   JTypeVariable(this.typeDeclaration, this.name, this.index);
 
+  /// Deserializes a [JTypeVariable] object from [source].
+  factory JTypeVariable.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    JTypeVariableKind kind = source.readEnum(JTypeVariableKind.values);
+    Entity typeDeclaration;
+    switch (kind) {
+      case JTypeVariableKind.cls:
+        typeDeclaration = source.readClass();
+        break;
+      case JTypeVariableKind.member:
+        typeDeclaration = source.readMember();
+        break;
+      case JTypeVariableKind.typedef:
+        typeDeclaration = source.readTypedef();
+        break;
+      case JTypeVariableKind.local:
+        // Type variables declared by local functions don't point to their
+        // declaration, since the corresponding closure call methods is created
+        // after the type variable.
+        // TODO(johnniwinther): Fix this.
+        break;
+    }
+    String name = source.readString();
+    int index = source.readInt();
+    source.end(tag);
+    return new JTypeVariable(typeDeclaration, name, index);
+  }
+
+  /// Serializes this [JTypeVariable] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    if (typeDeclaration is IndexedClass) {
+      IndexedClass cls = typeDeclaration;
+      sink.writeEnum(JTypeVariableKind.cls);
+      sink.writeClass(cls);
+    } else if (typeDeclaration is IndexedMember) {
+      IndexedMember member = typeDeclaration;
+      sink.writeEnum(JTypeVariableKind.member);
+      sink.writeMember(member);
+    } else if (typeDeclaration is IndexedTypedef) {
+      IndexedTypedef typedef = typeDeclaration;
+      sink.writeEnum(JTypeVariableKind.typedef);
+      sink.writeTypedef(typedef);
+    } else if (typeDeclaration == null) {
+      sink.writeEnum(JTypeVariableKind.local);
+    } else {
+      throw new UnsupportedError(
+          "Unexpected type variable declarer $typeDeclaration.");
+    }
+    sink.writeString(name);
+    sink.writeInt(index);
+    sink.end(tag);
+  }
+
   String toString() =>
       '${jsElementPrefix}type_variable(${typeDeclaration.name}.$name)';
 }
diff --git a/pkg/compiler/lib/src/js_model/env.dart b/pkg/compiler/lib/src/js_model/env.dart
index 69ff3ca..876106a 100644
--- a/pkg/compiler/lib/src/js_model/env.dart
+++ b/pkg/compiler/lib/src/js_model/env.dart
@@ -11,19 +11,23 @@
 import '../constants/expressions.dart';
 import '../constants/values.dart';
 import '../elements/entities.dart';
+import '../elements/indexed.dart';
 import '../elements/types.dart';
 import '../ir/element_map.dart';
 import '../ir/visitors.dart';
 import '../ir/util.dart';
 import '../js_model/element_map.dart';
 import '../ordered_typeset.dart';
+import '../serialization/serialization.dart';
 import '../ssa/type_builder.dart';
+import 'closure.dart';
 import 'element_map.dart';
 import 'element_map_impl.dart';
+import 'elements.dart';
 
 /// Environment for fast lookup of component libraries.
 class JProgramEnv {
-  final Set<ir.Component> _components;
+  final Iterable<ir.Component> _components;
   final Map<Uri, JLibraryEnv> _libraryMap = {};
 
   JProgramEnv(this._components);
@@ -55,6 +59,10 @@
 
 /// Environment for fast lookup of library classes and members.
 class JLibraryEnv {
+  /// Tag used for identifying serialized [JLibraryEnv] objects in a
+  /// debugging data stream.
+  static const String tag = 'library-env';
+
   final ir.Library library;
   final Map<String, JClassEnv> _classMap = {};
   final Map<String, ir.Member> _memberMap;
@@ -62,6 +70,27 @@
 
   JLibraryEnv(this.library, this._memberMap, this._setterMap);
 
+  /// Deserializes a [JLibraryEnv] object from [source].
+  factory JLibraryEnv.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Library library = source.readLibraryNode();
+    Map<String, ir.Member> memberMap =
+        source.readStringMap(source.readMemberNode);
+    Map<String, ir.Member> setterMap =
+        source.readStringMap(source.readMemberNode);
+    source.end(tag);
+    return new JLibraryEnv(library, memberMap, setterMap);
+  }
+
+  /// Serializes this [JLibraryEnv] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeLibraryNode(library);
+    sink.writeStringMap(_memberMap, sink.writeMemberNode);
+    sink.writeStringMap(_setterMap, sink.writeMemberNode);
+    sink.end(tag);
+  }
+
   void registerClass(String name, JClassEnv classEnv) {
     _classMap[name] = classEnv;
   }
@@ -94,16 +123,64 @@
 }
 
 class JLibraryData {
+  /// Tag used for identifying serialized [JLibraryData] objects in a
+  /// debugging data stream.
+  static const String tag = 'library-data';
+
   final ir.Library library;
   // TODO(johnniwinther): Avoid direct access to [imports]. It might be null if
   // it hasn't been computed for the corresponding [KLibraryData].
   final Map<ir.LibraryDependency, ImportEntity> imports;
 
   JLibraryData(this.library, this.imports);
+
+  factory JLibraryData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Library library = source.readLibraryNode();
+    int importCount = source.readInt();
+    Map<ir.LibraryDependency, ImportEntity> imports;
+    if (importCount > 0) {
+      // TODO(johnniwinther): Deserialize imports.
+    }
+    source.end(tag);
+    return new JLibraryData(library, imports);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeLibraryNode(library);
+    if (imports == null) {
+      sink.writeInt(0);
+    } else {
+      sink.writeInt(imports.length);
+      // TODO(johnniwinther): Serialize imports.
+    }
+    sink.end(tag);
+  }
 }
 
+/// Enum used for identifying [JClassEnv] subclasses in serialization.
+enum JClassEnvKind { node, closure, record }
+
 /// Member data for a class.
 abstract class JClassEnv {
+  /// Deserializes a [JClassEnv] object from [source].
+  factory JClassEnv.readFromDataSource(DataSource source) {
+    JClassEnvKind kind = source.readEnum(JClassEnvKind.values);
+    switch (kind) {
+      case JClassEnvKind.node:
+        return new JClassEnvImpl.readFromDataSource(source);
+      case JClassEnvKind.closure:
+        return new ClosureClassEnv.readFromDataSource(source);
+      case JClassEnvKind.record:
+        return new RecordEnv.readFromDataSource(source);
+    }
+    throw new UnsupportedError("Unsupported JClassEnvKind $kind");
+  }
+
+  /// Serializes this [JClassEnv] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// The [ir.Class] that defined the class, if any.
   ir.Class get cls;
 
@@ -137,26 +214,54 @@
 
 /// Environment for fast lookup of class members.
 class JClassEnvImpl implements JClassEnv {
+  /// Tag used for identifying serialized [JClassEnv] objects in a
+  /// debugging data stream.
+  static const String tag = 'class-env';
+
   final ir.Class cls;
   final Map<String, ir.Member> _constructorMap;
   final Map<String, ir.Member> _memberMap;
   final Map<String, ir.Member> _setterMap;
   final List<ir.Member> _members; // in declaration order.
-  final bool _isSuperMixinApplication;
+  final bool isSuperMixinApplication;
 
   /// Constructor bodies created for this class.
   List<ConstructorBodyEntity> _constructorBodyList;
 
   JClassEnvImpl(this.cls, this._constructorMap, this._memberMap,
-      this._setterMap, this._members, this._isSuperMixinApplication);
+      this._setterMap, this._members, this.isSuperMixinApplication);
+
+  factory JClassEnvImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Class cls = source.readClassNode();
+    Map<String, ir.Member> constructorMap =
+        source.readStringMap(source.readMemberNode);
+    Map<String, ir.Member> memberMap =
+        source.readStringMap(source.readMemberNode);
+    Map<String, ir.Member> setterMap =
+        source.readStringMap(source.readMemberNode);
+    List<ir.Member> members = source.readMemberNodes();
+    bool isSuperMixinApplication = source.readBool();
+    source.end(tag);
+    return new JClassEnvImpl(cls, constructorMap, memberMap, setterMap, members,
+        isSuperMixinApplication);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassEnvKind.node);
+    sink.begin(tag);
+    sink.writeClassNode(cls);
+    sink.writeStringMap(_constructorMap, sink.writeMemberNode);
+    sink.writeStringMap(_memberMap, sink.writeMemberNode);
+    sink.writeStringMap(_setterMap, sink.writeMemberNode);
+    sink.writeMemberNodes(_members);
+    sink.writeBool(isSuperMixinApplication);
+    sink.end(tag);
+  }
 
   bool get isUnnamedMixinApplication => cls.isAnonymousMixin;
 
-  bool get isSuperMixinApplication {
-    assert(_isSuperMixinApplication != null);
-    return _isSuperMixinApplication;
-  }
-
   /// Return the [MemberEntity] for the member [name] in [cls]. If [setter] is
   /// `true`, the setter or assignable field corresponding to [name] is
   /// returned.
@@ -198,10 +303,31 @@
 }
 
 class RecordEnv implements JClassEnv {
-  final Map<String, MemberEntity> _memberMap;
+  /// Tag used for identifying serialized [RecordEnv] objects in a
+  /// debugging data stream.
+  static const String tag = 'record-env';
+
+  final Map<String, IndexedMember> _memberMap;
 
   RecordEnv(this._memberMap);
 
+  factory RecordEnv.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Map<String, IndexedMember> _memberMap =
+        source.readStringMap(() => source.readMember());
+    source.end(tag);
+    return new RecordEnv(_memberMap);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassEnvKind.record);
+    sink.begin(tag);
+    sink.writeStringMap(
+        _memberMap, (IndexedMember member) => sink.writeMember(member));
+    sink.end(tag);
+  }
+
   @override
   void forEachConstructorBody(void f(ConstructorBodyEntity constructor)) {
     // We do not create constructor bodies for containers.
@@ -241,8 +367,29 @@
 }
 
 class ClosureClassEnv extends RecordEnv {
+  /// Tag used for identifying serialized [ClosureClassEnv] objects in a
+  /// debugging data stream.
+  static const String tag = 'closure-class-env';
+
   ClosureClassEnv(Map<String, MemberEntity> memberMap) : super(memberMap);
 
+  factory ClosureClassEnv.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Map<String, IndexedMember> _memberMap =
+        source.readStringMap(() => source.readMember());
+    source.end(tag);
+    return new ClosureClassEnv(_memberMap);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassEnvKind.closure);
+    sink.begin(tag);
+    sink.writeStringMap(
+        _memberMap, (IndexedMember member) => sink.writeMember(member));
+    sink.end(tag);
+  }
+
   @override
   MemberEntity lookupMember(IrToElementMap elementMap, String name,
       {bool setter: false}) {
@@ -254,7 +401,27 @@
   }
 }
 
+/// Enum used for identifying [JClassData] subclasses in serialization.
+enum JClassDataKind { node, closure, record }
+
 abstract class JClassData {
+  /// Deserializes a [JClassData] object from [source].
+  factory JClassData.readFromDataSource(DataSource source) {
+    JClassDataKind kind = source.readEnum(JClassDataKind.values);
+    switch (kind) {
+      case JClassDataKind.node:
+        return new JClassDataImpl.readFromDataSource(source);
+      case JClassDataKind.closure:
+        return new ClosureClassData.readFromDataSource(source);
+      case JClassDataKind.record:
+        return new RecordClassData.readFromDataSource(source);
+    }
+    throw new UnsupportedError("Unexpected JClassDataKind $kind");
+  }
+
+  /// Serializes this [JClassData] to [sink].
+  void writeToDataSink(DataSink sink);
+
   ClassDefinition get definition;
 
   InterfaceType get thisType;
@@ -270,6 +437,10 @@
 }
 
 class JClassDataImpl implements JClassData {
+  /// Tag used for identifying serialized [JClassDataImpl] objects in a
+  /// debugging data stream.
+  static const String tag = 'class-data';
+
   final ir.Class cls;
   final ClassDefinition definition;
   bool isMixinApplication;
@@ -284,17 +455,75 @@
 
   JClassDataImpl(this.cls, this.definition);
 
+  factory JClassDataImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Class cls = source.readClassNode();
+    ClassDefinition definition = new ClassDefinition.readFromDataSource(source);
+    source.end(tag);
+    return new JClassDataImpl(cls, definition);
+  }
+
+  @override
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JClassDataKind.node);
+    sink.begin(tag);
+    sink.writeClassNode(cls);
+    definition.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
   bool get isEnumClass => cls != null && cls.isEnum;
 
   DartType get callType => null;
 }
 
+/// Enum used for identifying [JMemberData] subclasses in serialization.
+enum JMemberDataKind {
+  function,
+  field,
+  constructor,
+  constructorBody,
+  signature,
+  generatorBody,
+  closureFunction,
+  closureField,
+}
+
 abstract class JMemberData {
   MemberDefinition get definition;
 
   InterfaceType getMemberThisType(JsToElementMap elementMap);
 
   ClassTypeVariableAccess get classTypeVariableAccess;
+
+  JMemberData();
+
+  /// Deserializes a [JMemberData] object from [source].
+  factory JMemberData.readFromDataSource(DataSource source) {
+    JMemberDataKind kind = source.readEnum(JMemberDataKind.values);
+    switch (kind) {
+      case JMemberDataKind.function:
+        return new FunctionDataImpl.readFromDataSource(source);
+      case JMemberDataKind.field:
+        return new JFieldDataImpl.readFromDataSource(source);
+      case JMemberDataKind.constructor:
+        return new JConstructorDataImpl.readFromDataSource(source);
+      case JMemberDataKind.constructorBody:
+        return new ConstructorBodyDataImpl.readFromDataSource(source);
+      case JMemberDataKind.signature:
+        return new SignatureFunctionData.readFromDataSource(source);
+      case JMemberDataKind.generatorBody:
+        return new GeneratorBodyFunctionData.readFromDataSource(source);
+      case JMemberDataKind.closureFunction:
+        return new ClosureFunctionData.readFromDataSource(source);
+      case JMemberDataKind.closureField:
+        return new ClosureFieldData.readFromDataSource(source);
+    }
+    throw new UnsupportedError("Unexpected JMemberDataKind $kind");
+  }
+
+  /// Serializes this [JMemberData] to [sink].
+  void writeToDataSink(DataSink sink);
 }
 
 abstract class JMemberDataImpl implements JMemberData {
@@ -354,6 +583,10 @@
 class FunctionDataImpl extends JMemberDataImpl
     with FunctionDataMixin
     implements FunctionData {
+  /// Tag used for identifying serialized [FunctionDataImpl] objects in a
+  /// debugging data stream.
+  static const String tag = 'function-data';
+
   final ir.FunctionNode functionNode;
   FunctionType _type;
 
@@ -361,6 +594,32 @@
       ir.Member node, this.functionNode, MemberDefinition definition)
       : super(node, definition);
 
+  factory FunctionDataImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Member node = source.readMemberNode();
+    ir.FunctionNode functionNode;
+    if (node is ir.Procedure) {
+      functionNode = node.function;
+    } else if (node is ir.Constructor) {
+      functionNode = node.function;
+    } else {
+      throw new UnsupportedError(
+          "Unexpected member node $node (${node.runtimeType}).");
+    }
+    MemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    source.end(tag);
+    return new FunctionDataImpl(node, functionNode, definition);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.function);
+    sink.begin(tag);
+    sink.writeMemberNode(node);
+    definition.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
   FunctionType getFunctionType(covariant JsToElementMapBase elementMap) {
     return _type ??= elementMap.getFunctionType(functionNode);
   }
@@ -398,17 +657,43 @@
 }
 
 class SignatureFunctionData implements FunctionData {
-  final FunctionType functionType;
+  /// Tag used for identifying serialized [SignatureFunctionData] objects in a
+  /// debugging data stream.
+  static const String tag = 'signature-function-data';
+
   final MemberDefinition definition;
   final InterfaceType memberThisType;
   final ClassTypeVariableAccess classTypeVariableAccess;
   final List<ir.TypeParameter> typeParameters;
 
-  SignatureFunctionData(this.definition, this.memberThisType, this.functionType,
+  SignatureFunctionData(this.definition, this.memberThisType,
       this.typeParameters, this.classTypeVariableAccess);
 
+  factory SignatureFunctionData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    MemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    InterfaceType memberThisType = source.readDartType(allowNull: true);
+    List<ir.TypeParameter> typeParameters = source.readTypeParameterNodes();
+    ClassTypeVariableAccess classTypeVariableAccess =
+        source.readEnum(ClassTypeVariableAccess.values);
+    source.end(tag);
+    return new SignatureFunctionData(
+        definition, memberThisType, typeParameters, classTypeVariableAccess);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.signature);
+    sink.begin(tag);
+    definition.writeToDataSink(sink);
+    sink.writeDartType(memberThisType, allowNull: true);
+    sink.writeTypeParameterNodes(typeParameters);
+    sink.writeEnum(classTypeVariableAccess);
+    sink.end(tag);
+  }
+
   FunctionType getFunctionType(covariant JsToElementMapBase elementMap) {
-    return functionType;
+    throw new UnsupportedError("SignatureFunctionData.getFunctionType");
   }
 
   List<TypeVariableType> getFunctionTypeVariables(IrToElementMap elementMap) {
@@ -455,9 +740,32 @@
 }
 
 class GeneratorBodyFunctionData extends DelegatedFunctionData {
+  /// Tag used for identifying serialized [GeneratorBodyFunctionData] objects in
+  /// a debugging data stream.
+  static const String tag = 'generator-body-data';
+
   final MemberDefinition definition;
+
   GeneratorBodyFunctionData(FunctionData baseData, this.definition)
       : super(baseData);
+
+  factory GeneratorBodyFunctionData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    // TODO(johnniwinther): Share the original base data on deserialization.
+    FunctionData baseData = new JMemberData.readFromDataSource(source);
+    MemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    source.end(tag);
+    return new GeneratorBodyFunctionData(baseData, definition);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.generatorBody);
+    sink.begin(tag);
+    baseData.writeToDataSink(sink);
+    definition.writeToDataSink(sink);
+    sink.end(tag);
+  }
 }
 
 abstract class JConstructorData extends FunctionData {
@@ -467,13 +775,44 @@
 
 class JConstructorDataImpl extends FunctionDataImpl
     implements JConstructorData {
+  /// Tag used for identifying serialized [JConstructorDataImpl] objects in a
+  /// debugging data stream.
+  static const String tag = 'constructor-data';
+
   ConstantConstructor _constantConstructor;
-  ConstructorBodyEntity constructorBody;
+  JConstructorBody constructorBody;
 
   JConstructorDataImpl(
       ir.Member node, ir.FunctionNode functionNode, MemberDefinition definition)
       : super(node, functionNode, definition);
 
+  factory JConstructorDataImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Member node = source.readMemberNode();
+    ir.FunctionNode functionNode;
+    if (node is ir.Procedure) {
+      functionNode = node.function;
+    } else if (node is ir.Constructor) {
+      functionNode = node.function;
+    } else {
+      throw new UnsupportedError(
+          "Unexpected member node $node (${node.runtimeType}).");
+    }
+    MemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    source.end(tag);
+    return new JConstructorDataImpl(node, functionNode, definition);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.constructor);
+    sink.begin(tag);
+    sink.writeMemberNode(node);
+    definition.writeToDataSink(sink);
+    assert(constructorBody == null);
+    sink.end(tag);
+  }
+
   ConstantConstructor getConstructorConstant(
       JsToElementMapBase elementMap, ConstructorEntity constructor) {
     if (_constantConstructor == null) {
@@ -496,10 +835,40 @@
 }
 
 class ConstructorBodyDataImpl extends FunctionDataImpl {
+  /// Tag used for identifying serialized [ConstructorBodyDataImpl] objects in
+  /// a debugging data stream.
+  static const String tag = 'constructor-body-data';
+
   ConstructorBodyDataImpl(
       ir.Member node, ir.FunctionNode functionNode, MemberDefinition definition)
       : super(node, functionNode, definition);
 
+  factory ConstructorBodyDataImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Member node = source.readMemberNode();
+    ir.FunctionNode functionNode;
+    if (node is ir.Procedure) {
+      functionNode = node.function;
+    } else if (node is ir.Constructor) {
+      functionNode = node.function;
+    } else {
+      throw new UnsupportedError(
+          "Unexpected member node $node (${node.runtimeType}).");
+    }
+    MemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    source.end(tag);
+    return new ConstructorBodyDataImpl(node, functionNode, definition);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.constructorBody);
+    sink.begin(tag);
+    sink.writeMemberNode(node);
+    definition.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
   // TODO(johnniwinther,sra): Constructor bodies should access type variables
   // through `this`.
   @override
@@ -522,6 +891,10 @@
 }
 
 class JFieldDataImpl extends JMemberDataImpl implements JFieldData {
+  /// Tag used for identifying serialized [JFieldDataImpl] objects in
+  /// a debugging data stream.
+  static const String tag = 'field-data';
+
   DartType _type;
   bool _isConstantComputed = false;
   ConstantValue _constantValue;
@@ -530,6 +903,23 @@
   JFieldDataImpl(ir.Field node, MemberDefinition definition)
       : super(node, definition);
 
+  factory JFieldDataImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.Member node = source.readMemberNode();
+    MemberDefinition definition =
+        new MemberDefinition.readFromDataSource(source);
+    source.end(tag);
+    return new JFieldDataImpl(node, definition);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeEnum(JMemberDataKind.field);
+    sink.begin(tag);
+    sink.writeMemberNode(node);
+    definition.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
   ir.Field get node => super.node;
 
   DartType getFieldType(covariant JsToElementMapBase elementMap) {
@@ -543,8 +933,8 @@
             new Constantifier(elementMap).visit(node.initializer);
       } else {
         failedAt(
-            definition.member,
-            "Unexpected field ${definition.member} in "
+            definition.location,
+            "Unexpected field ${definition} in "
             "FieldDataImpl.getFieldConstant");
       }
     }
@@ -572,8 +962,8 @@
     assert(
         value != null,
         failedAt(
-            definition.member,
-            "Field ${definition.member} doesn't have a "
+            definition.location,
+            "Field ${definition} doesn't have a "
             "constant initial value."));
     return value;
   }
@@ -586,19 +976,52 @@
 }
 
 class JTypedefData {
-  final TypedefEntity element;
+  /// Tag used for identifying serialized [JTypedefData] objects in
+  /// a debugging data stream.
+  static const String tag = 'typedef-data';
+
   final TypedefType rawType;
 
-  JTypedefData(this.element, this.rawType);
+  JTypedefData(this.rawType);
+
+  factory JTypedefData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    TypedefType rawType = source.readDartType();
+    source.end(tag);
+    return new JTypedefData(rawType);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeDartType(rawType);
+    sink.end(tag);
+  }
 }
 
 class JTypeVariableData {
+  /// Tag used for identifying serialized [JTypeVariableData] objects in
+  /// a debugging data stream.
+  static const String tag = 'type-variable-data';
+
   final ir.TypeParameter node;
   DartType _bound;
   DartType _defaultType;
 
   JTypeVariableData(this.node);
 
+  factory JTypeVariableData.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    ir.TypeParameter node = source.readTypeParameterNode();
+    source.end(tag);
+    return new JTypeVariableData(node);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeTypeParameterNode(node);
+    sink.end(tag);
+  }
+
   DartType getBound(IrToElementMap elementMap) {
     return _bound ??= elementMap.getDartType(node.bound);
   }
diff --git a/pkg/compiler/lib/src/js_model/js_strategy.dart b/pkg/compiler/lib/src/js_model/js_strategy.dart
index 0f32e6b..3421f91 100644
--- a/pkg/compiler/lib/src/js_model/js_strategy.dart
+++ b/pkg/compiler/lib/src/js_model/js_strategy.dart
@@ -7,7 +7,7 @@
 import 'package:kernel/ast.dart' as ir;
 
 import '../backend_strategy.dart';
-import '../closure.dart' show ClosureConversionTask;
+import '../closure.dart';
 import '../common.dart';
 import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem;
 import '../common/tasks.dart';
@@ -16,10 +16,12 @@
 import '../constants/constant_system.dart';
 import '../constants/values.dart';
 import '../deferred_load.dart';
+import '../diagnostics/diagnostic_listener.dart';
 import '../elements/entities.dart';
 import '../elements/names.dart';
 import '../elements/types.dart';
 import '../elements/entity_utils.dart' as utils;
+import '../environment.dart';
 import '../enqueue.dart';
 import '../io/kernel_source_information.dart'
     show KernelSourceInformationStrategy;
@@ -42,12 +44,14 @@
 import '../native/behavior.dart';
 import '../ordered_typeset.dart';
 import '../options.dart';
+import '../serialization/serialization.dart';
 import '../ssa/builder_kernel.dart';
 import '../ssa/nodes.dart';
 import '../ssa/ssa.dart';
 import '../ssa/types.dart';
 import '../types/abstract_value_domain.dart';
 import '../types/types.dart';
+import '../universe/class_hierarchy.dart';
 import '../universe/class_set.dart';
 import '../universe/feature.dart';
 import '../universe/selector.dart';
@@ -62,131 +66,48 @@
 
 class JsBackendStrategy implements BackendStrategy {
   final Compiler _compiler;
-  ElementEnvironment _elementEnvironment;
-  CommonElements _commonElements;
   JsKernelToElementMap _elementMap;
-  KernelClosureConversionTask _closureDataLookup;
-  final GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap();
-  Sorter _sorter;
 
   JsBackendStrategy(this._compiler);
 
+  @deprecated
   JsToElementMap get elementMap {
     assert(_elementMap != null,
         "JsBackendStrategy.elementMap has not been created yet.");
     return _elementMap;
   }
 
-  GlobalLocalsMap get globalLocalsMapForTesting => _globalLocalsMap;
+  ElementEnvironment get _elementEnvironment => _elementMap.elementEnvironment;
+  CommonElements get _commonElements => _elementMap.commonElements;
 
   @override
-  JClosedWorld createJClosedWorld(KClosedWorld closedWorld) {
+  JClosedWorld createJClosedWorld(
+      KClosedWorld closedWorld, OutputUnitData outputUnitData) {
     KernelFrontEndStrategy strategy = _compiler.frontendStrategy;
     _elementMap = new JsKernelToElementMap(
         _compiler.reporter,
         _compiler.environment,
         strategy.elementMap,
         closedWorld.processedMembers);
-    _elementEnvironment = _elementMap.elementEnvironment;
-    _commonElements = _elementMap.commonElements;
-    _closureDataLookup = new KernelClosureConversionTask(
-        _compiler.measurer, _elementMap, _globalLocalsMap, _compiler.options);
+    GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap();
+    ClosureDataBuilder closureDataBuilder = new ClosureDataBuilder(
+        _elementMap, _globalLocalsMap, _compiler.options);
     JsClosedWorldBuilder closedWorldBuilder = new JsClosedWorldBuilder(
         _elementMap,
-        _closureDataLookup,
+        _globalLocalsMap,
+        closureDataBuilder,
         _compiler.options,
         _compiler.abstractValueStrategy);
     return closedWorldBuilder._convertClosedWorld(
-        closedWorld, strategy.closureModels);
+        closedWorld, strategy.closureModels, outputUnitData);
   }
 
   @override
-  OutputUnitData convertOutputUnitData(OutputUnitData data) {
-    JsToFrontendMapImpl map = new JsToFrontendMapImpl(_elementMap);
-
-    Entity toBackendEntity(Entity entity) {
-      if (entity is ClassEntity) return map.toBackendClass(entity);
-      if (entity is MemberEntity) return map.toBackendMember(entity);
-      if (entity is TypedefEntity) return map.toBackendTypedef(entity);
-      if (entity is TypeVariableEntity) {
-        return map.toBackendTypeVariable(entity);
-      }
-      assert(
-          entity is LibraryEntity, 'unexpected entity ${entity.runtimeType}');
-      return map.toBackendLibrary(entity);
-    }
-
-    // Convert front-end maps containing K-class and K-local function keys to a
-    // backend map using J-classes as keys.
-    Map<ClassEntity, OutputUnit> convertClassMap(
-        Map<ClassEntity, OutputUnit> classMap,
-        Map<Local, OutputUnit> localFunctionMap) {
-      var result = <ClassEntity, OutputUnit>{};
-      classMap.forEach((ClassEntity entity, OutputUnit unit) {
-        ClassEntity backendEntity = toBackendEntity(entity);
-        if (backendEntity != null) {
-          // If [entity] isn't used it doesn't have a corresponding backend
-          // entity.
-          result[backendEntity] = unit;
-        }
-      });
-      localFunctionMap.forEach((Local entity, OutputUnit unit) {
-        // Ensure closure classes are included in the output unit corresponding
-        // to the local function.
-        if (entity is KLocalFunction) {
-          var closureInfo = _closureDataLookup.getClosureInfo(entity.node);
-          result[closureInfo.closureClassEntity] = unit;
-        }
-      });
-      return result;
-    }
-
-    // Convert front-end maps containing K-member and K-local function keys to
-    // a backend map using J-members as keys.
-    Map<MemberEntity, OutputUnit> convertMemberMap(
-        Map<MemberEntity, OutputUnit> memberMap,
-        Map<Local, OutputUnit> localFunctionMap) {
-      var result = <MemberEntity, OutputUnit>{};
-      memberMap.forEach((MemberEntity entity, OutputUnit unit) {
-        MemberEntity backendEntity = toBackendEntity(entity);
-        if (backendEntity != null) {
-          // If [entity] isn't used it doesn't have a corresponding backend
-          // entity.
-          result[backendEntity] = unit;
-        }
-      });
-      localFunctionMap.forEach((Local entity, OutputUnit unit) {
-        // Ensure closure call-methods are included in the output unit
-        // corresponding to the local function.
-        if (entity is KLocalFunction) {
-          var closureInfo = _closureDataLookup.getClosureInfo(entity.node);
-          result[closureInfo.callMethod] = unit;
-        }
-      });
-      return result;
-    }
-
-    ConstantValue toBackendConstant(ConstantValue constant) {
-      return constant.accept(new ConstantConverter(toBackendEntity), null);
-    }
-
-    return new OutputUnitData.from(
-        data,
-        convertClassMap,
-        convertMemberMap,
-        (m) => convertMap<ConstantValue, OutputUnit>(
-            m, toBackendConstant, (v) => v));
+  void registerJClosedWorld(covariant JsClosedWorld closedWorld) {
+    _elementMap = closedWorld.elementMap;
   }
 
   @override
-  Sorter get sorter {
-    return _sorter ??= new KernelSorter(elementMap);
-  }
-
-  @override
-  ClosureConversionTask get closureDataLookup => _closureDataLookup;
-
-  @override
   SourceInformationStrategy get sourceInformationStrategy {
     if (!_compiler.options.generateSourceMap) {
       return const JavaScriptSourceInformationStrategy();
@@ -197,8 +118,7 @@
   @override
   SsaBuilder createSsaBuilder(CompilerTask task, JavaScriptBackend backend,
       SourceInformationStrategy sourceInformationStrategy) {
-    return new KernelSsaBuilder(
-        task, backend.compiler, elementMap, _globalLocalsMap);
+    return new KernelSsaBuilder(task, backend.compiler, elementMap);
   }
 
   @override
@@ -211,15 +131,10 @@
   @override
   CodegenWorldBuilder createCodegenWorldBuilder(
       NativeBasicData nativeBasicData,
-      JClosedWorld closedWorld,
+      covariant JsClosedWorld closedWorld,
       SelectorConstraintsStrategy selectorConstraintsStrategy) {
     return new CodegenWorldBuilderImpl(
-        elementMap,
-        _globalLocalsMap,
-        closedWorld.elementEnvironment,
-        nativeBasicData,
-        closedWorld,
-        selectorConstraintsStrategy);
+        closedWorld.elementMap, closedWorld, selectorConstraintsStrategy);
   }
 
   @override
@@ -230,8 +145,7 @@
   @override
   TypesInferrer createTypesInferrer(
       JClosedWorld closedWorld, InferredDataBuilder inferredDataBuilder) {
-    return new TypeGraphInferrer(_compiler, _elementMap, _globalLocalsMap,
-        _closureDataLookup, closedWorld, inferredDataBuilder);
+    return new TypeGraphInferrer(_compiler, closedWorld, inferredDataBuilder);
   }
 }
 
@@ -240,18 +154,21 @@
   final Map<ClassEntity, ClassHierarchyNode> _classHierarchyNodes =
       new ClassHierarchyNodesMap();
   final Map<ClassEntity, ClassSet> _classSets = <ClassEntity, ClassSet>{};
-  final KernelClosureConversionTask _closureConversionTask;
+  final GlobalLocalsMap _globalLocalsMap;
+  final ClosureDataBuilder _closureDataBuilder;
   final CompilerOptions _options;
   final AbstractValueStrategy _abstractValueStrategy;
 
-  JsClosedWorldBuilder(this._elementMap, this._closureConversionTask,
-      this._options, this._abstractValueStrategy);
+  JsClosedWorldBuilder(this._elementMap, this._globalLocalsMap,
+      this._closureDataBuilder, this._options, this._abstractValueStrategy);
 
   ElementEnvironment get _elementEnvironment => _elementMap.elementEnvironment;
   CommonElements get _commonElements => _elementMap.commonElements;
 
   JsClosedWorld _convertClosedWorld(
-      KClosedWorld closedWorld, Map<MemberEntity, ScopeModel> closureModels) {
+      KClosedWorld closedWorld,
+      Map<MemberEntity, ScopeModel> closureModels,
+      OutputUnitData kOutputUnitData) {
     JsToFrontendMap map = new JsToFrontendMapImpl(_elementMap);
 
     BackendUsage backendUsage =
@@ -323,15 +240,16 @@
         map.toBackendMemberSet(closedWorld.processedMembers);
 
     RuntimeTypesNeed rtiNeed;
-    // ignore: unused_local_variable
-    Iterable<FunctionEntity> callMethods;
 
+    List<FunctionEntity> callMethods = <FunctionEntity>[];
+    ClosureData closureData;
     if (_options.disableRtiOptimization) {
       rtiNeed = new TrivialRuntimeTypesNeed();
-      callMethods = _closureConversionTask.createClosureEntities(
+      closureData = _closureDataBuilder.createClosureEntities(
           this,
           map.toBackendMemberMap(closureModels, identity),
-          const TrivialClosureRtiNeed());
+          const TrivialClosureRtiNeed(),
+          callMethods);
     } else {
       RuntimeTypesNeedImpl kernelRtiNeed = closedWorld.rtiNeed;
       Set<ir.Node> localFunctionsNodesNeedingSignature = new Set<ir.Node>();
@@ -353,23 +271,24 @@
 
       RuntimeTypesNeedImpl jRtiNeed =
           _convertRuntimeTypesNeed(map, backendUsage, kernelRtiNeed);
-      callMethods = _closureConversionTask.createClosureEntities(
+      closureData = _closureDataBuilder.createClosureEntities(
           this,
           map.toBackendMemberMap(closureModels, identity),
           new JsClosureRtiNeed(
               jRtiNeed,
               localFunctionsNodesNeedingTypeArguments,
-              localFunctionsNodesNeedingSignature));
+              localFunctionsNodesNeedingSignature),
+          callMethods);
 
       List<FunctionEntity> callMethodsNeedingSignature = <FunctionEntity>[];
       for (ir.Node node in localFunctionsNodesNeedingSignature) {
         callMethodsNeedingSignature
-            .add(_closureConversionTask.getClosureInfo(node).callMethod);
+            .add(closureData.getClosureInfo(node).callMethod);
       }
       List<FunctionEntity> callMethodsNeedingTypeArguments = <FunctionEntity>[];
       for (ir.Node node in localFunctionsNodesNeedingTypeArguments) {
         callMethodsNeedingTypeArguments
-            .add(_closureConversionTask.getClosureInfo(node).callMethod);
+            .add(closureData.getClosureInfo(node).callMethod);
       }
       jRtiNeed.methodsNeedingSignature.addAll(callMethodsNeedingSignature);
       jRtiNeed.methodsNeedingTypeArguments
@@ -401,18 +320,17 @@
         map.toBackendMemberSet(
             closedWorld.annotationsData.assumeDynamicMembers));
 
+    OutputUnitData outputUnitData =
+        _convertOutputUnitData(map, kOutputUnitData, closureData);
+
     return new JsClosedWorld(_elementMap,
-        elementEnvironment: _elementEnvironment,
-        dartTypes: _elementMap.types,
-        commonElements: _commonElements,
-        constantSystem: JavaScriptConstantSystem.only,
         backendUsage: backendUsage,
         noSuchMethodData: noSuchMethodData,
         nativeData: nativeData,
         interceptorData: interceptorData,
         rtiNeed: rtiNeed,
-        classHierarchyNodes: _classHierarchyNodes,
-        classSets: _classSets,
+        classHierarchy: new ClassHierarchyImpl(
+            _elementMap.commonElements, _classHierarchyNodes, _classSets),
         implementedClasses: implementedClasses,
         liveNativeClasses: liveNativeClasses,
         // TODO(johnniwinther): Include the call method when we can also
@@ -425,7 +343,10 @@
         typesImplementedBySubclasses: typesImplementedBySubclasses,
         abstractValueStrategy: _abstractValueStrategy,
         allocatorAnalysis: allocatorAnalysis,
-        annotationsData: annotationsData);
+        annotationsData: annotationsData,
+        globalLocalsMap: _globalLocalsMap,
+        closureDataLookup: closureData,
+        outputUnitData: outputUnitData);
   }
 
   BackendUsage _convertBackendUsage(
@@ -636,42 +557,123 @@
 
     return closureClassInfo;
   }
+
+  OutputUnitData _convertOutputUnitData(JsToFrontendMapImpl map,
+      OutputUnitData data, ClosureData closureDataLookup) {
+    Entity toBackendEntity(Entity entity) {
+      if (entity is ClassEntity) return map.toBackendClass(entity);
+      if (entity is MemberEntity) return map.toBackendMember(entity);
+      if (entity is TypedefEntity) return map.toBackendTypedef(entity);
+      if (entity is TypeVariableEntity) {
+        return map.toBackendTypeVariable(entity);
+      }
+      assert(
+          entity is LibraryEntity, 'unexpected entity ${entity.runtimeType}');
+      return map.toBackendLibrary(entity);
+    }
+
+    // Convert front-end maps containing K-class and K-local function keys to a
+    // backend map using J-classes as keys.
+    Map<ClassEntity, OutputUnit> convertClassMap(
+        Map<ClassEntity, OutputUnit> classMap,
+        Map<Local, OutputUnit> localFunctionMap) {
+      var result = <ClassEntity, OutputUnit>{};
+      classMap.forEach((ClassEntity entity, OutputUnit unit) {
+        ClassEntity backendEntity = toBackendEntity(entity);
+        if (backendEntity != null) {
+          // If [entity] isn't used it doesn't have a corresponding backend
+          // entity.
+          result[backendEntity] = unit;
+        }
+      });
+      localFunctionMap.forEach((Local entity, OutputUnit unit) {
+        // Ensure closure classes are included in the output unit corresponding
+        // to the local function.
+        if (entity is KLocalFunction) {
+          var closureInfo = closureDataLookup.getClosureInfo(entity.node);
+          result[closureInfo.closureClassEntity] = unit;
+        }
+      });
+      return result;
+    }
+
+    // Convert front-end maps containing K-member and K-local function keys to
+    // a backend map using J-members as keys.
+    Map<MemberEntity, OutputUnit> convertMemberMap(
+        Map<MemberEntity, OutputUnit> memberMap,
+        Map<Local, OutputUnit> localFunctionMap) {
+      var result = <MemberEntity, OutputUnit>{};
+      memberMap.forEach((MemberEntity entity, OutputUnit unit) {
+        MemberEntity backendEntity = toBackendEntity(entity);
+        if (backendEntity != null) {
+          // If [entity] isn't used it doesn't have a corresponding backend
+          // entity.
+          result[backendEntity] = unit;
+        }
+      });
+      localFunctionMap.forEach((Local entity, OutputUnit unit) {
+        // Ensure closure call-methods are included in the output unit
+        // corresponding to the local function.
+        if (entity is KLocalFunction) {
+          var closureInfo = closureDataLookup.getClosureInfo(entity.node);
+          result[closureInfo.callMethod] = unit;
+        }
+      });
+      return result;
+    }
+
+    ConstantValue toBackendConstant(ConstantValue constant) {
+      return constant.accept(new ConstantConverter(toBackendEntity), null);
+    }
+
+    return new OutputUnitData.from(
+        data,
+        convertClassMap,
+        convertMemberMap,
+        (m) => convertMap<ConstantValue, OutputUnit>(
+            m, toBackendConstant, (v) => v));
+  }
 }
 
 class JsClosedWorld extends ClosedWorldBase {
+  static const String tag = 'closed-world';
+
   final JsKernelToElementMap elementMap;
   final RuntimeTypesNeed rtiNeed;
   AbstractValueDomain _abstractValueDomain;
   final JAllocatorAnalysis allocatorAnalysis;
   final AnnotationsData annotationsData;
+  final GlobalLocalsMap globalLocalsMap;
+  final ClosureData closureDataLookup;
+  final OutputUnitData outputUnitData;
+  Sorter _sorter;
 
   JsClosedWorld(this.elementMap,
-      {ElementEnvironment elementEnvironment,
-      DartTypes dartTypes,
-      CommonElements commonElements,
-      ConstantSystem constantSystem,
+      {ConstantSystem constantSystem,
       NativeData nativeData,
       InterceptorData interceptorData,
       BackendUsage backendUsage,
       this.rtiNeed,
       this.allocatorAnalysis,
       NoSuchMethodData noSuchMethodData,
-      Set<ClassEntity> implementedClasses,
+      Iterable<ClassEntity> implementedClasses,
       Iterable<ClassEntity> liveNativeClasses,
       Iterable<MemberEntity> liveInstanceMembers,
       Iterable<MemberEntity> assignedInstanceMembers,
       Iterable<MemberEntity> processedMembers,
       Map<ClassEntity, Set<ClassEntity>> mixinUses,
       Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses,
-      Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
-      Map<ClassEntity, ClassSet> classSets,
+      ClassHierarchy classHierarchy,
       AbstractValueStrategy abstractValueStrategy,
-      this.annotationsData})
+      this.annotationsData,
+      this.globalLocalsMap,
+      this.closureDataLookup,
+      this.outputUnitData})
       : super(
-            elementEnvironment,
-            dartTypes,
-            commonElements,
-            constantSystem,
+            elementMap.elementEnvironment,
+            elementMap.types,
+            elementMap.commonElements,
+            JavaScriptConstantSystem.only,
             nativeData,
             interceptorData,
             backendUsage,
@@ -683,12 +685,117 @@
             processedMembers,
             mixinUses,
             typesImplementedBySubclasses,
-            classHierarchyNodes,
-            classSets,
-            abstractValueStrategy) {
+            classHierarchy) {
     _abstractValueDomain = abstractValueStrategy.createDomain(this);
   }
 
+  /// Deserializes a [JsClosedWorld] object from [source].
+  factory JsClosedWorld.readFromDataSource(
+      CompilerOptions options,
+      DiagnosticReporter reporter,
+      Environment environment,
+      AbstractValueStrategy abstractValueStrategy,
+      ir.Component component,
+      DataSource source) {
+    source.begin(tag);
+
+    JsKernelToElementMap elementMap =
+        new JsKernelToElementMap.readFromDataSource(
+            options, reporter, environment, component, source);
+    GlobalLocalsMap globalLocalsMap =
+        new GlobalLocalsMap.readFromDataSource(source);
+    source.registerLocalLookup(new LocalLookupImpl(globalLocalsMap));
+    ClassHierarchy classHierarchy = new ClassHierarchy.readFromDataSource(
+        source, elementMap.commonElements);
+    NativeData nativeData = new NativeData.readFromDataSource(
+        source, elementMap.elementEnvironment);
+    elementMap.nativeBasicData = nativeData;
+    InterceptorData interceptorData = new InterceptorData.readFromDataSource(
+        source, nativeData, elementMap.commonElements);
+    BackendUsage backendUsage = new BackendUsage.readFromDataSource(source);
+    RuntimeTypesNeed rtiNeed = new RuntimeTypesNeed.readFromDataSource(
+        source, elementMap.elementEnvironment);
+    JAllocatorAnalysis allocatorAnalysis =
+        new JAllocatorAnalysis.readFromDataSource(source, options);
+    NoSuchMethodData noSuchMethodData =
+        new NoSuchMethodData.readFromDataSource(source);
+
+    Set<ClassEntity> implementedClasses = source.readClasses().toSet();
+    Iterable<ClassEntity> liveNativeClasses = source.readClasses();
+    Iterable<MemberEntity> liveInstanceMembers = source.readMembers();
+    Iterable<MemberEntity> assignedInstanceMembers = source.readMembers();
+    Iterable<MemberEntity> processedMembers = source.readMembers();
+    Map<ClassEntity, Set<ClassEntity>> mixinUses =
+        source.readClassMap(() => source.readClasses().toSet());
+    Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses =
+        source.readClassMap(() => source.readClasses().toSet());
+
+    AnnotationsData annotationsData =
+        new AnnotationsData.readFromDataSource(source);
+
+    ClosureData closureData =
+        new ClosureData.readFromDataSource(elementMap, source);
+
+    OutputUnitData outputUnitData =
+        new OutputUnitData.readFromDataSource(source);
+
+    source.end(tag);
+
+    return new JsClosedWorld(elementMap,
+        nativeData: nativeData,
+        interceptorData: interceptorData,
+        backendUsage: backendUsage,
+        rtiNeed: rtiNeed,
+        allocatorAnalysis: allocatorAnalysis,
+        noSuchMethodData: noSuchMethodData,
+        implementedClasses: implementedClasses,
+        liveNativeClasses: liveNativeClasses,
+        liveInstanceMembers: liveInstanceMembers,
+        assignedInstanceMembers: assignedInstanceMembers,
+        processedMembers: processedMembers,
+        mixinUses: mixinUses,
+        typesImplementedBySubclasses: typesImplementedBySubclasses,
+        classHierarchy: classHierarchy,
+        abstractValueStrategy: abstractValueStrategy,
+        annotationsData: annotationsData,
+        globalLocalsMap: globalLocalsMap,
+        closureDataLookup: closureData,
+        outputUnitData: outputUnitData);
+  }
+
+  /// Serializes this [JsClosedWorld] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    elementMap.writeToDataSink(sink);
+    globalLocalsMap.writeToDataSink(sink);
+
+    classHierarchy.writeToDataSink(sink);
+    nativeData.writeToDataSink(sink);
+    interceptorData.writeToDataSink(sink);
+    backendUsage.writeToDataSink(sink);
+    rtiNeed.writeToDataSink(sink);
+    allocatorAnalysis.writeToDataSink(sink);
+    noSuchMethodData.writeToDataSink(sink);
+    sink.writeClasses(implementedClasses);
+    sink.writeClasses(liveNativeClasses);
+    sink.writeMembers(liveInstanceMembers);
+    sink.writeMembers(assignedInstanceMembers);
+    sink.writeMembers(processedMembers);
+    sink.writeClassMap(
+        mixinUses, (Set<ClassEntity> set) => sink.writeClasses(set));
+    sink.writeClassMap(typesImplementedBySubclasses,
+        (Set<ClassEntity> set) => sink.writeClasses(set));
+    annotationsData.writeToDataSink(sink);
+    closureDataLookup.writeToDataSink(sink);
+    outputUnitData.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
+  @override
+  Sorter get sorter {
+    return _sorter ??= new KernelSorter(elementMap);
+  }
+
   @override
   AbstractValueDomain get abstractValueDomain {
     return _abstractValueDomain;
@@ -1037,11 +1144,9 @@
   final CompilerTask task;
   final Compiler _compiler;
   final JsToElementMap _elementMap;
-  final GlobalLocalsMap _globalLocalsMap;
   FunctionInlineCache _inlineCache;
 
-  KernelSsaBuilder(
-      this.task, this._compiler, this._elementMap, this._globalLocalsMap);
+  KernelSsaBuilder(this.task, this._compiler, this._elementMap);
 
   @override
   HGraph build(CodegenWorkItem work, JClosedWorld closedWorld,
@@ -1054,11 +1159,9 @@
           _compiler,
           _elementMap,
           results,
-          _globalLocalsMap,
           closedWorld,
           _compiler.codegenWorldBuilder,
           work.registry,
-          _compiler.backendStrategy.closureDataLookup,
           _compiler.backend.emitter.nativeEmitter,
           _compiler.backend.sourceInformationStrategy,
           _inlineCache);
@@ -1245,3 +1348,16 @@
         a, definition1.location, b, definition2.location);
   }
 }
+
+/// [LocalLookup] implementation used to deserialize [JsClosedWorld].
+class LocalLookupImpl implements LocalLookup {
+  final GlobalLocalsMap _globalLocalsMap;
+
+  LocalLookupImpl(this._globalLocalsMap);
+
+  @override
+  Local getLocalByIndex(MemberEntity memberContext, int index) {
+    KernelToLocalsMapImpl map = _globalLocalsMap.getLocalsMap(memberContext);
+    return map.getLocalByIndex(index);
+  }
+}
diff --git a/pkg/compiler/lib/src/js_model/locals.dart b/pkg/compiler/lib/src/js_model/locals.dart
index 2d29821..6f66920 100644
--- a/pkg/compiler/lib/src/js_model/locals.dart
+++ b/pkg/compiler/lib/src/js_model/locals.dart
@@ -13,13 +13,59 @@
 import '../elements/jumps.dart';
 import '../elements/types.dart';
 import '../ir/util.dart';
+import '../serialization/serialization.dart';
 
 import 'element_map.dart';
 import 'elements.dart' show JGeneratorBody;
 
 class GlobalLocalsMap {
-  Map<MemberEntity, KernelToLocalsMap> _localsMaps =
-      <MemberEntity, KernelToLocalsMap>{};
+  /// Tag used for identifying serialized [GlobalLocalsMap] objects in a
+  /// debugging data stream.
+  static const String tag = 'global-locals-map';
+
+  final Map<MemberEntity, KernelToLocalsMap> _localsMaps;
+
+  GlobalLocalsMap() : _localsMaps = {};
+
+  GlobalLocalsMap.internal(this._localsMaps);
+
+  /// Deserializes a [GlobalLocalsMap] object from [source].
+  factory GlobalLocalsMap.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    Map<MemberEntity, KernelToLocalsMap> _localsMaps = {};
+    int mapCount = source.readInt();
+    for (int i = 0; i < mapCount; i++) {
+      KernelToLocalsMap localsMap =
+          new KernelToLocalsMapImpl.readFromDataSource(source);
+      List<MemberEntity> members = source.readMembers();
+      for (MemberEntity member in members) {
+        _localsMaps[member] = localsMap;
+      }
+    }
+    source.end(tag);
+    return new GlobalLocalsMap.internal(_localsMaps);
+  }
+
+  /// Serializes this [GlobalLocalsMap] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    // [KernelToLocalsMap]s are shared between members and their nested
+    // closures, so we reverse [_localsMaps] to ensure that [KernelToLocalsMap]s
+    // are shared upon deserialization. The sharing is needed for correctness
+    // since captured variables will otherwise have distinct locals for their
+    // non-captured and captured uses.
+    Map<KernelToLocalsMap, List<MemberEntity>> reverseMap = {};
+    _localsMaps.forEach((MemberEntity member, KernelToLocalsMap localsMap) {
+      reverseMap.putIfAbsent(localsMap, () => []).add(member);
+    });
+    sink.writeInt(reverseMap.length);
+    reverseMap
+        .forEach((KernelToLocalsMap localsMap, List<MemberEntity> members) {
+      localsMap.writeToDataSink(sink);
+      sink.writeMembers(members);
+    });
+    sink.end(tag);
+  }
 
   /// Returns the [KernelToLocalsMap] for [member].
   KernelToLocalsMap getLocalsMap(MemberEntity member) {
@@ -47,12 +93,84 @@
 }
 
 class KernelToLocalsMapImpl implements KernelToLocalsMap {
-  final MemberEntity currentMember;
+  /// Tag used for identifying serialized [KernelToLocalsMapImpl] objects in a
+  /// debugging data stream.
+  static const String tag = 'locals-map';
+
+  MemberEntity _currentMember;
   final EntityDataMap<JLocal, LocalData> _locals =
       new EntityDataMap<JLocal, LocalData>();
-  Map<ir.VariableDeclaration, JLocal> _map = <ir.VariableDeclaration, JLocal>{};
+  Map<ir.VariableDeclaration, JLocal> _variableMap =
+      <ir.VariableDeclaration, JLocal>{};
   Map<ir.TreeNode, JJumpTarget> _jumpTargetMap;
-  Set<ir.BreakStatement> _breaksAsContinue;
+  Iterable<ir.BreakStatement> _breaksAsContinue;
+
+  KernelToLocalsMapImpl(this._currentMember);
+
+  /// Deserializes a [KernelToLocalsMapImpl] object from [source].
+  KernelToLocalsMapImpl.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    _currentMember = source.readMember();
+    int localsCount = source.readInt();
+    for (int i = 0; i < localsCount; i++) {
+      int index = source.readInt();
+      String name = source.readStringOrNull();
+      bool isRegularParameter = source.readBool();
+      ir.VariableDeclaration node = source.readTreeNode();
+      JLocal local = new JLocal(name, currentMember,
+          isRegularParameter: isRegularParameter);
+      LocalData data = new LocalData(node);
+      _locals.registerByIndex(index, local, data);
+      _variableMap[node] = local;
+    }
+    int jumpCount = source.readInt();
+    if (jumpCount > 0) {
+      _jumpTargetMap = {};
+      for (int i = 0; i < jumpCount; i++) {
+        JJumpTarget target = new JJumpTarget.readFromDataSource(source);
+        List<ir.TreeNode> nodes = source.readTreeNodes();
+        for (ir.TreeNode node in nodes) {
+          _jumpTargetMap[node] = target;
+        }
+      }
+    }
+    _breaksAsContinue = source.readTreeNodes();
+    source.end(tag);
+  }
+
+  /// Serializes this [KernelToLocalsMapImpl] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeMember(currentMember);
+    sink.writeInt(_locals.size);
+    _locals.forEach((JLocal local, LocalData data) {
+      assert(local.memberContext == currentMember);
+      sink.writeInt(local.localIndex);
+      sink.writeStringOrNull(local.name);
+      sink.writeBool(local.isRegularParameter);
+      sink.writeTreeNode(data.node);
+    });
+    if (_jumpTargetMap != null) {
+      // [JJumpTarget]s are shared between nodes, so we reverse
+      // [_jumpTargetMap] to ensure that [JJumpTarget]s are shared upon
+      // deserialization. This sharing is needed for correctness since for
+      // instance a label statement containing a for loop both constitutes the
+      // same jump target and the SSA graph builder dependents on this property.
+      Map<JJumpTarget, List<ir.TreeNode>> reversedMap = {};
+      _jumpTargetMap.forEach((ir.TreeNode node, JJumpTarget target) {
+        reversedMap.putIfAbsent(target, () => []).add(node);
+      });
+      sink.writeInt(reversedMap.length);
+      reversedMap.forEach((JJumpTarget target, List<ir.TreeNode> nodes) {
+        target.writeToDataSink(sink);
+        sink.writeTreeNodes(nodes);
+      });
+    } else {
+      sink.writeInt(0);
+    }
+    sink.writeTreeNodes(_breaksAsContinue, allowNull: true);
+    sink.end(tag);
+  }
 
   // TODO(johnniwinther): Compute this eagerly from the root of the member.
   void _ensureJumpMap(ir.TreeNode node) {
@@ -70,7 +188,11 @@
     }
   }
 
-  KernelToLocalsMapImpl(this.currentMember);
+  MemberEntity get currentMember => _currentMember;
+
+  Local getLocalByIndex(int index) {
+    return _locals.getEntity(index);
+  }
 
   @override
   JumpTarget getJumpTargetForBreak(ir.BreakStatement node) {
@@ -137,7 +259,7 @@
 
   @override
   Local getLocalVariable(ir.VariableDeclaration node) {
-    return _map.putIfAbsent(node, () {
+    return _variableMap.putIfAbsent(node, () {
       JLocal local = new JLocal(node.name, currentMember,
           isRegularParameter: node.parent is ir.FunctionNode);
       _locals.register<JLocal, LocalData>(local, new LocalData(node));
@@ -325,6 +447,10 @@
 }
 
 class JJumpTarget extends JumpTarget {
+  /// Tag used for identifying serialized [JJumpTarget] objects in a
+  /// debugging data stream.
+  static const String tag = 'jump-target';
+
   final MemberEntity memberContext;
   final int nestingLevel;
   List<LabelDefinition> _labels;
@@ -334,6 +460,47 @@
   JJumpTarget(this.memberContext, this.nestingLevel,
       {this.isSwitch: false, this.isSwitchCase: false});
 
+  /// Deserializes a [JJumpTarget] object from [source].
+  factory JJumpTarget.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    MemberEntity memberContext = source.readMember();
+    int nestingLevel = source.readInt();
+    bool isSwitch = source.readBool();
+    bool isSwitchCase = source.readBool();
+    JJumpTarget target = new JJumpTarget(memberContext, nestingLevel,
+        isSwitch: isSwitch, isSwitchCase: isSwitchCase);
+    int labelCount = source.readInt();
+    for (int i = 0; i < labelCount; i++) {
+      String labelName = source.readString();
+      bool isBreakTarget = source.readBool();
+      bool isContinueTarget = source.readBool();
+      target.addLabel(labelName,
+          isBreakTarget: isBreakTarget, isContinueTarget: isContinueTarget);
+    }
+    source.end(tag);
+    return target;
+  }
+
+  /// Serializes this [JJumpTarget] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeMember(memberContext);
+    sink.writeInt(nestingLevel);
+    sink.writeBool(isSwitch);
+    sink.writeBool(isSwitchCase);
+    if (_labels != null) {
+      sink.writeInt(_labels.length);
+      for (LabelDefinition definition in _labels) {
+        sink.writeString(definition.name);
+        sink.writeBool(definition.isBreakTarget);
+        sink.writeBool(definition.isContinueTarget);
+      }
+    } else {
+      sink.writeInt(0);
+    }
+    sink.end(tag);
+  }
+
   bool isBreakTarget = false;
   bool isContinueTarget = false;
 
diff --git a/pkg/compiler/lib/src/kernel/dart2js_target.dart b/pkg/compiler/lib/src/kernel/dart2js_target.dart
index e6d05b3..2187722 100644
--- a/pkg/compiler/lib/src/kernel/dart2js_target.dart
+++ b/pkg/compiler/lib/src/kernel/dart2js_target.dart
@@ -19,9 +19,9 @@
 
   Dart2jsTarget(this.name, this.flags);
 
-  bool get strongMode => flags.strongMode;
+  bool get legacyMode => flags.legacyMode;
 
-  bool get enableNoSuchMethodForwarders => flags.strongMode;
+  bool get enableNoSuchMethodForwarders => !flags.legacyMode;
 
   List<String> get extraRequiredLibraries => _requiredLibraries[name];
 
diff --git a/pkg/compiler/lib/src/kernel/env.dart b/pkg/compiler/lib/src/kernel/env.dart
index 382bea2..e82ef91 100644
--- a/pkg/compiler/lib/src/kernel/env.dart
+++ b/pkg/compiler/lib/src/kernel/env.dart
@@ -26,7 +26,6 @@
 import '../ordered_typeset.dart';
 import '../ssa/type_builder.dart';
 import 'element_map_impl.dart';
-import 'kelements.dart' show KImport;
 
 /// Environment for fast lookup of component libraries.
 class KProgramEnv {
@@ -214,11 +213,11 @@
         imports = <ir.LibraryDependency, ImportEntity>{};
         dependencies.forEach((ir.LibraryDependency node) {
           if (node.isExport) return;
-          imports[node] = new KImport(
+          imports[node] = new ImportEntity(
               node.isDeferred,
               node.name,
               node.targetLibrary.importUri,
-              elementMap.getLibrary(node.enclosingLibrary));
+              elementMap.getLibrary(node.enclosingLibrary).canonicalUri);
         });
       }
     }
@@ -400,7 +399,7 @@
       }
       if (!includeStatic && member.isStatic) return;
       if (member.isNoSuchMethodForwarder) {
-        // TODO(sigmund): remove once #33665 is fixed.
+        // TODO(sigmund): remove once #33732 is fixed.
         if (!includeNoSuchMethodForwarders ||
             member.name.isPrivate &&
                 member.name.libraryName != member.enclosingLibrary.reference) {
@@ -596,7 +595,7 @@
       });
     }
     return new JClassEnvImpl(cls, constructorMap, memberMap, setterMap, members,
-        _isSuperMixinApplication);
+        _isSuperMixinApplication ?? false);
   }
 }
 
@@ -617,7 +616,7 @@
   Iterable<ConstantValue> getMetadata(IrToElementMap elementMap);
 
   /// Convert this [KClassData] to the corresponding [JClassData].
-  JClassData convert(ClassEntity cls);
+  JClassData convert();
 }
 
 class KClassDataImpl implements KClassData {
@@ -645,8 +644,8 @@
     return _metadata ??= elementMap.getMetadata(node.annotations);
   }
 
-  JClassData convert(ClassEntity cls) {
-    return new JClassDataImpl(node, new RegularClassDefinition(cls, node));
+  JClassData convert() {
+    return new JClassDataImpl(node, new RegularClassDefinition(node));
   }
 }
 
@@ -660,7 +659,7 @@
   ClassTypeVariableAccess get classTypeVariableAccess;
 
   /// Convert this [KMemberData] to the corresponding [JMemberData].
-  JMemberData convert(MemberEntity member);
+  JMemberData convert();
 }
 
 abstract class KMemberDataImpl implements KMemberData {
@@ -760,9 +759,9 @@
   }
 
   @override
-  FunctionData convert(covariant FunctionEntity function) {
+  FunctionData convert() {
     return new FunctionDataImpl(
-        node, functionNode, new RegularMemberDefinition(function, node));
+        node, functionNode, new RegularMemberDefinition(node));
   }
 
   @override
@@ -802,13 +801,12 @@
   }
 
   @override
-  JConstructorData convert(covariant ConstructorEntity constructor) {
+  JConstructorData convert() {
     MemberDefinition definition;
     if (node is ir.Constructor) {
-      definition = new SpecialMemberDefinition(
-          constructor, node, MemberKind.constructor);
+      definition = new SpecialMemberDefinition(node, MemberKind.constructor);
     } else {
-      definition = new RegularMemberDefinition(constructor, node);
+      definition = new RegularMemberDefinition(node);
     }
     return new JConstructorDataImpl(node, functionNode, definition);
   }
@@ -897,8 +895,8 @@
   }
 
   @override
-  JFieldData convert(covariant FieldEntity field) {
-    return new JFieldDataImpl(node, new RegularMemberDefinition(field, node));
+  JFieldData convert() {
+    return new JFieldDataImpl(node, new RegularMemberDefinition(node));
   }
 }
 
@@ -922,7 +920,10 @@
   }
 
   DartType getDefaultType(IrToElementMap elementMap) {
-    return _defaultType ??= elementMap.getDartType(node.defaultType);
+    // TODO(34522): Remove `?? const ir.DynamicType()` when issue 34522 is
+    // fixed.
+    return _defaultType ??=
+        elementMap.getDartType(node.defaultType ?? const ir.DynamicType());
   }
 
   JTypeVariableData copy() {
diff --git a/pkg/compiler/lib/src/kernel/kelements.dart b/pkg/compiler/lib/src/kernel/kelements.dart
index de67244..ce9a04a 100644
--- a/pkg/compiler/lib/src/kernel/kelements.dart
+++ b/pkg/compiler/lib/src/kernel/kelements.dart
@@ -21,18 +21,6 @@
   String toString() => '${kElementPrefix}library($name)';
 }
 
-class KImport implements ImportEntity {
-  final bool isDeferred;
-  final String name;
-  final Uri uri;
-  final LibraryEntity enclosingLibrary;
-
-  KImport(this.isDeferred, this.name, this.uri, this.enclosingLibrary);
-
-  String toString() =>
-      '${kElementPrefix}import($name:${isDeferred ? ' deferred' : ''})';
-}
-
 class KClass extends IndexedClass {
   final KLibrary library;
 
diff --git a/pkg/compiler/lib/src/kernel/kernel_impact.dart b/pkg/compiler/lib/src/kernel/kernel_impact.dart
index fa881c1..7aa7324 100644
--- a/pkg/compiler/lib/src/kernel/kernel_impact.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_impact.dart
@@ -910,6 +910,80 @@
   Null visitSwitchStatement(ir.SwitchStatement node) {
     visitNode(node.expression);
     visitNodes(node.cases);
+
+    // TODO(32557): Remove this when issue 32557 is fixed.
+    ir.TreeNode firstCase;
+    DartType firstCaseType;
+    DiagnosticMessage error;
+    List<DiagnosticMessage> infos = <DiagnosticMessage>[];
+
+    bool overridesEquals(InterfaceType type) {
+      if (type == commonElements.symbolImplementationType) {
+        // Treat symbol constants as if Symbol doesn't override `==`.
+        return false;
+      }
+      ClassEntity cls = type.element;
+      while (cls != null) {
+        MemberEntity member =
+            elementMap.elementEnvironment.lookupClassMember(cls, '==');
+        if (member.isAbstract) {
+          cls = elementMap.elementEnvironment.getSuperClass(cls);
+        } else {
+          return member.enclosingClass != commonElements.objectClass;
+        }
+      }
+      return false;
+    }
+
+    for (ir.SwitchCase switchCase in node.cases) {
+      for (ir.Expression expression in switchCase.expressions) {
+        ConstantValue value = elementMap.getConstantValue(expression);
+        DartType type = value.getType(elementMap.commonElements);
+        if (firstCaseType == null) {
+          firstCase = expression;
+          firstCaseType = type;
+
+          // We only report the bad type on the first class element. All others
+          // get a "type differs" error.
+          if (type == commonElements.doubleType) {
+            reporter.reportErrorMessage(
+                computeSourceSpanFromTreeNode(expression),
+                MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
+                {'type': "double"});
+          } else if (type == commonElements.functionType) {
+            reporter.reportErrorMessage(computeSourceSpanFromTreeNode(node),
+                MessageKind.SWITCH_CASE_FORBIDDEN, {'type': "Function"});
+          } else if (value.isObject &&
+              type != commonElements.typeLiteralType &&
+              overridesEquals(type)) {
+            reporter.reportErrorMessage(
+                computeSourceSpanFromTreeNode(firstCase),
+                MessageKind.SWITCH_CASE_VALUE_OVERRIDES_EQUALS,
+                {'type': type});
+          }
+        } else {
+          if (type != firstCaseType) {
+            if (error == null) {
+              error = reporter.createMessage(
+                  computeSourceSpanFromTreeNode(node),
+                  MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL,
+                  {'type': firstCaseType});
+              infos.add(reporter.createMessage(
+                  computeSourceSpanFromTreeNode(firstCase),
+                  MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
+                  {'type': firstCaseType}));
+            }
+            infos.add(reporter.createMessage(
+                computeSourceSpanFromTreeNode(expression),
+                MessageKind.SWITCH_CASE_TYPES_NOT_EQUAL_CASE,
+                {'type': type}));
+          }
+        }
+      }
+    }
+    if (error != null) {
+      reporter.reportError(error, infos);
+    }
   }
 
   @override
diff --git a/pkg/compiler/lib/src/library_loader.dart b/pkg/compiler/lib/src/library_loader.dart
index e4295e8..b7ab8cc 100644
--- a/pkg/compiler/lib/src/library_loader.dart
+++ b/pkg/compiler/lib/src/library_loader.dart
@@ -59,7 +59,7 @@
         String platform = '${targetName}_platform.dill';
         initializedCompilerState = fe.initializeCompiler(
             initializedCompilerState,
-            new Dart2jsTarget(targetName, new TargetFlags(strongMode: true)),
+            new Dart2jsTarget(targetName, new TargetFlags()),
             _options.librariesSpecificationUri,
             _options.platformBinaries.resolve(platform),
             _options.packageConfig);
diff --git a/pkg/compiler/lib/src/native/behavior.dart b/pkg/compiler/lib/src/native/behavior.dart
index 5de83bd..a437151 100644
--- a/pkg/compiler/lib/src/native/behavior.dart
+++ b/pkg/compiler/lib/src/native/behavior.dart
@@ -9,6 +9,7 @@
 import '../elements/types.dart';
 import '../js/js.dart' as js;
 import '../js_backend/native_data.dart' show NativeBasicData;
+import '../serialization/serialization.dart';
 import '../universe/side_effects.dart' show SideEffects;
 import 'js.dart';
 
@@ -124,6 +125,10 @@
  * `null` may be returned.
  */
 class NativeBehavior {
+  /// Tag used for identifying serialized [NativeBehavior] objects in a
+  /// debugging data stream.
+  static const String tag = 'native-behavior';
+
   /// [DartType]s or [SpecialType]s returned or yielded by the native
   /// element.
   final List typesReturned = [];
@@ -156,6 +161,88 @@
 
   NativeBehavior.internal(this.sideEffects);
 
+  /// Deserializes a [NativeBehavior] object from [source].
+  factory NativeBehavior.readFromDataSource(DataSource source) {
+    source.begin(tag);
+
+    List readTypes() {
+      List types = [];
+      types.addAll(source.readDartTypes());
+      int specialCount = source.readInt();
+      for (int i = 0; i < specialCount; i++) {
+        String name = source.readString();
+        types.add(SpecialType.fromName(name));
+      }
+      return types;
+    }
+
+    List typesReturned = readTypes();
+    List typesInstantiated = readTypes();
+    String codeTemplateText = source.readStringOrNull();
+    SideEffects sideEffects = new SideEffects.readFromDataSource(source);
+    int throwBehavior = source.readInt();
+    bool isAllocation = source.readBool();
+    bool useGvn = source.readBool();
+    source.end(tag);
+
+    NativeBehavior behavior = new NativeBehavior.internal(sideEffects);
+    behavior.typesReturned.addAll(typesReturned);
+    behavior.typesInstantiated.addAll(typesInstantiated);
+    if (codeTemplateText != null) {
+      behavior.codeTemplateText = codeTemplateText;
+      behavior.codeTemplate = js.js.parseForeignJS(codeTemplateText);
+    }
+    switch (throwBehavior) {
+      case 0:
+        behavior.throwBehavior = NativeThrowBehavior.NEVER;
+        break;
+      case 1:
+        behavior.throwBehavior =
+            NativeThrowBehavior.MAY_THROW_ONLY_ON_FIRST_ARGUMENT_ACCESS;
+        break;
+      case 2:
+        behavior.throwBehavior = NativeThrowBehavior.MAY;
+        break;
+      case 3:
+        behavior.throwBehavior = NativeThrowBehavior.MUST;
+        break;
+    }
+    behavior.isAllocation = isAllocation;
+    behavior.useGvn = useGvn;
+    return behavior;
+  }
+
+  /// Serializes this [NativeBehavior] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+
+    void writeTypes(List types) {
+      List<DartType> dartTypes = [];
+      List<SpecialType> specialTypes = [];
+      for (var type in types) {
+        if (type is DartType) {
+          dartTypes.add(type);
+        } else {
+          specialTypes.add(type);
+        }
+      }
+      sink.writeDartTypes(dartTypes);
+      sink.writeInt(specialTypes.length);
+      for (SpecialType type in specialTypes) {
+        sink.writeString(type.name);
+      }
+    }
+
+    writeTypes(typesReturned);
+    writeTypes(typesInstantiated);
+    sink.writeStringOrNull(codeTemplateText);
+    sideEffects.writeToDataSink(sink);
+    sink.writeInt(throwBehavior._bits);
+    sink.writeBool(isAllocation);
+    sink.writeBool(useGvn);
+    sink.end(tag);
+  }
+
   String toString() {
     return 'NativeBehavior('
         'returns: ${typesReturned}'
diff --git a/pkg/compiler/lib/src/ordered_typeset.dart b/pkg/compiler/lib/src/ordered_typeset.dart
index 4b587b6..57ed4cb 100644
--- a/pkg/compiler/lib/src/ordered_typeset.dart
+++ b/pkg/compiler/lib/src/ordered_typeset.dart
@@ -11,6 +11,7 @@
 import 'diagnostics/diagnostic_listener.dart' show DiagnosticReporter;
 import 'elements/entities.dart';
 import 'elements/types.dart';
+import 'serialization/serialization.dart';
 
 /**
  * An ordered set of the supertypes of a class. The supertypes of a class are
@@ -30,12 +31,80 @@
  *     C: [C, B, A, Object]
  */
 class OrderedTypeSet {
+  /// Tag used for identifying serialized [OrderedTypeSet] objects in a
+  /// debugging data stream.
+  static const String tag = 'ordered-type-set';
+
   final List<Link<InterfaceType>> _levels;
   final Link<InterfaceType> types;
   final Link<InterfaceType> _supertypes;
 
   OrderedTypeSet.internal(this._levels, this.types, this._supertypes);
 
+  /// Deserializes a [OrderedTypeSet] object from [source].
+  factory OrderedTypeSet.readFromDataSource(DataSource source) {
+    // TODO(johnniwinther): Make the deserialized type sets share their
+    // internal links like the original type sets do?
+    source.begin(tag);
+    int typesCount = source.readInt();
+    LinkBuilder<InterfaceType> typeLinkBuilder =
+        new LinkBuilder<InterfaceType>();
+    List<Link<InterfaceType>> links = [];
+    for (int i = 0; i < typesCount; i++) {
+      links.add(typeLinkBuilder.addLast(source.readDartType()));
+    }
+    Link<InterfaceType> types =
+        typeLinkBuilder.toLink(const Link<InterfaceType>());
+    links.add(const Link<InterfaceType>());
+
+    int supertypesCount = source.readInt();
+    LinkBuilder<InterfaceType> supertypeLinkBuilder =
+        new LinkBuilder<InterfaceType>();
+    for (int i = 0; i < supertypesCount; i++) {
+      supertypeLinkBuilder.addLast(source.readDartType());
+    }
+    Link<InterfaceType> supertypes =
+        supertypeLinkBuilder.toLink(const Link<InterfaceType>());
+
+    int levelCount = source.readInt();
+    List<Link<InterfaceType>> levels =
+        new List<Link<InterfaceType>>(levelCount);
+    for (int i = 0; i < levelCount; i++) {
+      levels[i] = links[source.readInt()];
+    }
+    source.end(tag);
+    return new OrderedTypeSet.internal(levels, types, supertypes);
+  }
+
+  /// Serializes this [OrderedTypeSet] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    List<InterfaceType> typeList = types.toList();
+    sink.writeInt(typeList.length);
+    for (InterfaceType type in typeList) {
+      sink.writeDartType(type);
+    }
+    List<InterfaceType> supertypeList = _supertypes.toList();
+    sink.writeInt(supertypeList.length);
+    for (InterfaceType supertype in supertypeList) {
+      sink.writeDartType(supertype);
+    }
+    List<int> levelList = [];
+    Link<InterfaceType> link = types;
+    while (link != null) {
+      int index = _levels.indexOf(link);
+      if (index != -1) {
+        levelList.add(index);
+      }
+      link = link.tail;
+    }
+    sink.writeInt(levelList.length);
+    for (int level in levelList) {
+      sink.writeInt(level);
+    }
+    sink.end(tag);
+  }
+
   factory OrderedTypeSet.singleton(InterfaceType type) {
     Link<InterfaceType> types =
         new LinkEntry<InterfaceType>(type, const Link<InterfaceType>());
diff --git a/pkg/compiler/lib/src/serialization/abstract_sink.dart b/pkg/compiler/lib/src/serialization/abstract_sink.dart
new file mode 100644
index 0000000..b63b9a2
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/abstract_sink.dart
@@ -0,0 +1,332 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// Base implementation of [DataSink] using [DataSinkMixin] to implement
+/// convenience methods.
+abstract class AbstractDataSink extends DataSinkMixin implements DataSink {
+  /// If `true`, serialization of every data kind is preceded by a [DataKind]
+  /// value.
+  ///
+  /// This is used for debugging data inconsistencies between serialization
+  /// and deserialization.
+  final bool useDataKinds;
+
+  /// Visitor used for serializing [DartType]s.
+  DartTypeWriter _dartTypeWriter;
+
+  /// Stack of tags used when [useDataKinds] is `true` to help debugging section
+  /// inconsistencies between serialization and deserialization.
+  List<String> _tags;
+
+  /// Map of [_MemberData] object for serialized kernel member nodes.
+  Map<ir.Member, _MemberData> _memberData = {};
+
+  AbstractDataSink({this.useDataKinds: false}) {
+    _dartTypeWriter = new DartTypeWriter(this);
+  }
+
+  void begin(String tag) {
+    if (useDataKinds) {
+      _tags ??= <String>[];
+      _tags.add(tag);
+      _begin(tag);
+    }
+  }
+
+  void end(Object tag) {
+    if (useDataKinds) {
+      _end(tag);
+
+      String existingTag = _tags.removeLast();
+      assert(existingTag == tag,
+          "Unexpected tag end. Expected $existingTag, found $tag.");
+    }
+  }
+
+  @override
+  void writeSourceSpan(SourceSpan value) {
+    _writeDataKind(DataKind.sourceSpan);
+    _writeUri(value.uri);
+    _writeInt(value.begin);
+    _writeInt(value.end);
+  }
+
+  @override
+  void writeDartType(DartType value, {bool allowNull: false}) {
+    _writeDataKind(DataKind.dartType);
+    _writeDartType(value, [], allowNull: allowNull);
+  }
+
+  void _writeDartType(
+      DartType value, List<FunctionTypeVariable> functionTypeVariables,
+      {bool allowNull: false}) {
+    if (value == null) {
+      if (!allowNull) {
+        throw new UnsupportedError("Missing DartType is not allowed.");
+      }
+      writeEnum(DartTypeKind.none);
+    } else {
+      _dartTypeWriter.visit(value, functionTypeVariables);
+    }
+  }
+
+  @override
+  void writeMemberNode(ir.Member value) {
+    _writeDataKind(DataKind.memberNode);
+    _writeMemberNode(value);
+  }
+
+  void _writeMemberNode(ir.Member value) {
+    ir.Class cls = value.enclosingClass;
+    if (cls != null) {
+      _writeEnum(MemberContextKind.cls);
+      _writeClassNode(cls);
+      _writeString(_computeMemberName(value));
+    } else {
+      _writeEnum(MemberContextKind.library);
+      _writeLibraryNode(value.enclosingLibrary);
+      _writeString(_computeMemberName(value));
+    }
+  }
+
+  @override
+  void writeClassNode(ir.Class value) {
+    _writeDataKind(DataKind.classNode);
+    _writeClassNode(value);
+  }
+
+  void _writeClassNode(ir.Class value) {
+    _writeLibraryNode(value.enclosingLibrary);
+    _writeString(value.name);
+  }
+
+  @override
+  void writeLibraryNode(ir.Library value) {
+    _writeDataKind(DataKind.libraryNode);
+    _writeLibraryNode(value);
+  }
+
+  void _writeLibraryNode(ir.Library value) {
+    _writeUri(value.importUri);
+  }
+
+  @override
+  void writeEnum(dynamic value) {
+    _writeDataKind(DataKind.enumValue);
+    _writeEnum(value);
+  }
+
+  @override
+  void writeBool(bool value) {
+    assert(value != null);
+    _writeDataKind(DataKind.bool);
+    _writeInt(value ? 1 : 0);
+  }
+
+  @override
+  void writeUri(Uri value) {
+    assert(value != null);
+    _writeDataKind(DataKind.uri);
+    _writeUri(value);
+  }
+
+  @override
+  void writeString(String value) {
+    assert(value != null);
+    _writeDataKind(DataKind.string);
+    _writeString(value);
+  }
+
+  @override
+  void writeInt(int value) {
+    assert(value != null);
+    assert(value >= 0 && value >> 30 == 0);
+    _writeDataKind(DataKind.int);
+    _writeInt(value);
+  }
+
+  void writeTreeNode(ir.TreeNode value) {
+    _writeDataKind(DataKind.treeNode);
+    _writeTreeNode(value);
+  }
+
+  void _writeTreeNode(ir.TreeNode value) {
+    if (value is ir.Class) {
+      _writeEnum(_TreeNodeKind.cls);
+      _writeClassNode(value);
+    } else if (value is ir.Member) {
+      _writeEnum(_TreeNodeKind.member);
+      _writeMemberNode(value);
+    } else if (value is ir.VariableDeclaration &&
+        value.parent is ir.FunctionDeclaration) {
+      _writeEnum(_TreeNodeKind.functionDeclarationVariable);
+      _writeTreeNode(value.parent);
+    } else if (value is ir.FunctionNode) {
+      _writeEnum(_TreeNodeKind.functionNode);
+      _writeFunctionNode(value);
+    } else if (value is ir.TypeParameter) {
+      _writeEnum(_TreeNodeKind.typeParameter);
+      _writeTypeParameter(value);
+    } else {
+      _writeEnum(_TreeNodeKind.node);
+      ir.TreeNode member = value;
+      while (member is! ir.Member) {
+        if (member == null) {
+          throw new UnsupportedError("No enclosing member of TreeNode "
+              "$value (${value.runtimeType})");
+        }
+        member = member.parent;
+      }
+      _writeMemberNode(member);
+      _MemberData memberData = _memberData[member] ??= new _MemberData(member);
+      int index = memberData.getIndexByTreeNode(value);
+      assert(index != null, "No index found for ${value.runtimeType}.");
+      _writeInt(index);
+    }
+  }
+
+  void _writeFunctionNode(ir.FunctionNode value) {
+    ir.TreeNode parent = value.parent;
+    if (parent is ir.Procedure) {
+      _writeEnum(_FunctionNodeKind.procedure);
+      _writeMemberNode(parent);
+    } else if (parent is ir.Constructor) {
+      _writeEnum(_FunctionNodeKind.constructor);
+      _writeMemberNode(parent);
+    } else if (parent is ir.FunctionExpression) {
+      _writeEnum(_FunctionNodeKind.functionExpression);
+      _writeTreeNode(parent);
+    } else if (parent is ir.FunctionDeclaration) {
+      _writeEnum(_FunctionNodeKind.functionDeclaration);
+      _writeTreeNode(parent);
+    } else {
+      throw new UnsupportedError(
+          "Unsupported FunctionNode parent ${parent.runtimeType}");
+    }
+  }
+
+  @override
+  void writeTypeParameterNode(ir.TypeParameter value) {
+    _writeDataKind(DataKind.typeParameterNode);
+    _writeTypeParameter(value);
+  }
+
+  void _writeTypeParameter(ir.TypeParameter value) {
+    ir.TreeNode parent = value.parent;
+    if (parent is ir.Class) {
+      _writeEnum(_TypeParameterKind.cls);
+      _writeClassNode(parent);
+      _writeInt(parent.typeParameters.indexOf(value));
+    } else if (parent is ir.FunctionNode) {
+      _writeEnum(_TypeParameterKind.functionNode);
+      _writeFunctionNode(parent);
+      _writeInt(parent.typeParameters.indexOf(value));
+    } else {
+      throw new UnsupportedError(
+          "Unsupported TypeParameter parent ${parent.runtimeType}");
+    }
+  }
+
+  void _writeDataKind(DataKind kind) {
+    if (useDataKinds) _writeEnum(kind);
+  }
+
+  void writeLibrary(IndexedLibrary value) {
+    writeInt(value.libraryIndex);
+  }
+
+  void writeClass(IndexedClass value) {
+    writeInt(value.classIndex);
+  }
+
+  void writeTypedef(IndexedTypedef value) {
+    writeInt(value.typedefIndex);
+  }
+
+  void writeMember(IndexedMember value) {
+    writeInt(value.memberIndex);
+  }
+
+  void writeLocal(Local local) {
+    if (local is JLocal) {
+      writeEnum(LocalKind.jLocal);
+      writeMember(local.memberContext);
+      writeInt(local.localIndex);
+    } else if (local is ThisLocal) {
+      writeEnum(LocalKind.thisLocal);
+      writeClass(local.enclosingClass);
+    } else if (local is BoxLocal) {
+      writeEnum(LocalKind.boxLocal);
+      writeClass(local.container);
+    } else if (local is AnonymousClosureLocal) {
+      writeEnum(LocalKind.anonymousClosureLocal);
+      writeClass(local.closureClass);
+    } else if (local is TypeVariableLocal) {
+      writeEnum(LocalKind.typeVariableLocal);
+      writeDartType(local.typeVariable);
+    } else {
+      throw new UnsupportedError("Unsupported local ${local.runtimeType}");
+    }
+  }
+
+  @override
+  void writeConstant(ConstantValue value) {
+    _writeDataKind(DataKind.constant);
+    _writeConstant(value);
+  }
+
+  void _writeConstant(ConstantValue value) {
+    _writeEnum(value.kind);
+    switch (value.kind) {
+      case ConstantValueKind.BOOL:
+        BoolConstantValue constant = value;
+        writeBool(constant.boolValue);
+        break;
+      case ConstantValueKind.INT:
+        IntConstantValue constant = value;
+        writeString(constant.intValue.toString());
+        break;
+      case ConstantValueKind.DOUBLE:
+        DoubleConstantValue constant = value;
+        ByteData data = new ByteData(8);
+        data.setFloat64(0, constant.doubleValue);
+        writeInt(data.getUint16(0));
+        writeInt(data.getUint16(2));
+        writeInt(data.getUint16(4));
+        writeInt(data.getUint16(6));
+        break;
+      case ConstantValueKind.STRING:
+        StringConstantValue constant = value;
+        writeString(constant.stringValue);
+        break;
+      case ConstantValueKind.NULL:
+        break;
+      default:
+        // TODO(johnniwinther): Support remaining constant values.
+        throw new UnsupportedError(
+            "Unexpected constant value kind ${value.kind}.");
+    }
+  }
+
+  /// Actual serialization of a section begin tag, implemented by subclasses.
+  void _begin(String tag);
+
+  /// Actual serialization of a section end tag, implemented by subclasses.
+  void _end(String tag);
+
+  /// Actual serialization of a URI value, implemented by subclasses.
+  void _writeUri(Uri value);
+
+  /// Actual serialization of a String value, implemented by subclasses.
+  void _writeString(String value);
+
+  /// Actual serialization of a non-negative integer value, implemented by
+  /// subclasses.
+  void _writeInt(int value);
+
+  /// Actual serialization of an enum value, implemented by subclasses.
+  void _writeEnum(dynamic value);
+}
diff --git a/pkg/compiler/lib/src/serialization/abstract_source.dart b/pkg/compiler/lib/src/serialization/abstract_source.dart
new file mode 100644
index 0000000..f258917
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/abstract_source.dart
@@ -0,0 +1,418 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// Base implementation of [DataSource] using [DataSourceMixin] to implement
+/// convenience methods.
+abstract class AbstractDataSource extends DataSourceMixin
+    implements DataSource {
+  final bool useDataKinds;
+  ComponentLookup _componentLookup;
+  EntityLookup _entityLookup;
+  LocalLookup _localLookup;
+
+  AbstractDataSource({this.useDataKinds: false});
+
+  void begin(String tag) {
+    if (useDataKinds) _begin(tag);
+  }
+
+  void end(String tag) {
+    if (useDataKinds) _end(tag);
+  }
+
+  void registerComponentLookup(ComponentLookup componentLookup) {
+    assert(_componentLookup == null);
+    _componentLookup = componentLookup;
+  }
+
+  ComponentLookup get componentLookup {
+    assert(_componentLookup != null);
+    return _componentLookup;
+  }
+
+  void registerEntityLookup(EntityLookup entityLookup) {
+    assert(_entityLookup == null);
+    _entityLookup = entityLookup;
+  }
+
+  EntityLookup get entityLookup {
+    assert(_entityLookup != null);
+    return _entityLookup;
+  }
+
+  void registerLocalLookup(LocalLookup localLookup) {
+    assert(_localLookup == null);
+    _localLookup = localLookup;
+  }
+
+  LocalLookup get localLookup {
+    assert(_localLookup != null);
+    return _localLookup;
+  }
+
+  IndexedLibrary readLibrary() {
+    return getIndexedLibrary(readInt());
+  }
+
+  IndexedClass readClass() {
+    return getIndexedClass(readInt());
+  }
+
+  IndexedTypedef readTypedef() {
+    return getIndexedTypedef(readInt());
+  }
+
+  IndexedMember readMember() {
+    return getIndexedMember(readInt());
+  }
+
+  IndexedLibrary getIndexedLibrary(int libraryIndex) =>
+      entityLookup.getLibraryByIndex(libraryIndex);
+
+  IndexedClass getIndexedClass(int classIndex) =>
+      entityLookup.getClassByIndex(classIndex);
+
+  IndexedTypedef getIndexedTypedef(int typedefIndex) =>
+      entityLookup.getTypedefByIndex(typedefIndex);
+
+  IndexedMember getIndexedMember(int memberIndex) =>
+      entityLookup.getMemberByIndex(memberIndex);
+
+  IndexedTypeVariable getIndexedTypeVariable(int typeVariableIndex) =>
+      entityLookup.getTypeVariableByIndex(typeVariableIndex);
+
+  List<DartType> _readDartTypes(
+      List<FunctionTypeVariable> functionTypeVariables) {
+    int count = readInt();
+    List<DartType> types = new List<DartType>(count);
+    for (int index = 0; index < count; index++) {
+      types[index] = _readDartType(functionTypeVariables);
+    }
+    return types;
+  }
+
+  @override
+  SourceSpan readSourceSpan() {
+    _checkDataKind(DataKind.sourceSpan);
+    Uri uri = _readUri();
+    int begin = _readInt();
+    int end = _readInt();
+    return new SourceSpan(uri, begin, end);
+  }
+
+  @override
+  DartType readDartType({bool allowNull: false}) {
+    _checkDataKind(DataKind.dartType);
+    DartType type = _readDartType([]);
+    assert(type != null || allowNull);
+    return type;
+  }
+
+  DartType _readDartType(List<FunctionTypeVariable> functionTypeVariables) {
+    DartTypeKind kind = readEnum(DartTypeKind.values);
+    switch (kind) {
+      case DartTypeKind.none:
+        return null;
+      case DartTypeKind.voidType:
+        return const VoidType();
+      case DartTypeKind.typeVariable:
+        return new TypeVariableType(getIndexedTypeVariable(readInt()));
+      case DartTypeKind.functionTypeVariable:
+        int index = readInt();
+        assert(0 <= index && index < functionTypeVariables.length);
+        return functionTypeVariables[index];
+      case DartTypeKind.functionType:
+        int typeVariableCount = readInt();
+        List<FunctionTypeVariable> typeVariables =
+            new List<FunctionTypeVariable>.generate(typeVariableCount,
+                (int index) => new FunctionTypeVariable(index));
+        functionTypeVariables =
+            new List<FunctionTypeVariable>.from(functionTypeVariables)
+              ..addAll(typeVariables);
+        for (int index = 0; index < typeVariableCount; index++) {
+          typeVariables[index].bound = _readDartType(functionTypeVariables);
+        }
+        DartType returnType = _readDartType(functionTypeVariables);
+        List<DartType> parameterTypes = _readDartTypes(functionTypeVariables);
+        List<DartType> optionalParameterTypes =
+            _readDartTypes(functionTypeVariables);
+        List<DartType> namedParameterTypes =
+            _readDartTypes(functionTypeVariables);
+        List<String> namedParameters =
+            new List<String>(namedParameterTypes.length);
+        for (int i = 0; i < namedParameters.length; i++) {
+          namedParameters[i] = readString();
+        }
+        return new FunctionType(
+            returnType,
+            parameterTypes,
+            optionalParameterTypes,
+            namedParameters,
+            namedParameterTypes,
+            typeVariables);
+
+      case DartTypeKind.interfaceType:
+        IndexedClass cls = getIndexedClass(readInt());
+        List<DartType> typeArguments = _readDartTypes(functionTypeVariables);
+        return new InterfaceType(cls, typeArguments);
+      case DartTypeKind.typedef:
+        IndexedTypedef typedef = getIndexedTypedef(readInt());
+        List<DartType> typeArguments = _readDartTypes(functionTypeVariables);
+        DartType unaliased = _readDartType(functionTypeVariables);
+        return new TypedefType(typedef, typeArguments, unaliased);
+      case DartTypeKind.dynamicType:
+        return const DynamicType();
+      case DartTypeKind.futureOr:
+        DartType typeArgument = _readDartType(functionTypeVariables);
+        return new FutureOrType(typeArgument);
+    }
+    throw new UnsupportedError("Unexpected DartTypeKind $kind");
+  }
+
+  _MemberData _readMemberData() {
+    MemberContextKind kind = _readEnum(MemberContextKind.values);
+    switch (kind) {
+      case MemberContextKind.cls:
+        _ClassData cls = _readClassData();
+        String name = _readString();
+        return cls.lookupMember(name);
+      case MemberContextKind.library:
+        _LibraryData library = _readLibraryData();
+        String name = _readString();
+        return library.lookupMember(name);
+    }
+    throw new UnsupportedError("Unsupported _MemberKind $kind");
+  }
+
+  @override
+  ir.Member readMemberNode() {
+    _checkDataKind(DataKind.memberNode);
+    return _readMemberData().node;
+  }
+
+  _ClassData _readClassData() {
+    _LibraryData library = _readLibraryData();
+    String name = _readString();
+    return library.lookupClass(name);
+  }
+
+  @override
+  ir.Class readClassNode() {
+    _checkDataKind(DataKind.classNode);
+    return _readClassData().node;
+  }
+
+  _LibraryData _readLibraryData() {
+    Uri canonicalUri = _readUri();
+    return componentLookup.getLibraryDataByUri(canonicalUri);
+  }
+
+  @override
+  ir.Library readLibraryNode() {
+    _checkDataKind(DataKind.libraryNode);
+    return _readLibraryData().node;
+  }
+
+  @override
+  E readEnum<E>(List<E> values) {
+    _checkDataKind(DataKind.enumValue);
+    return _readEnum(values);
+  }
+
+  @override
+  Uri readUri() {
+    _checkDataKind(DataKind.uri);
+    return _readUri();
+  }
+
+  @override
+  bool readBool() {
+    _checkDataKind(DataKind.bool);
+    int value = _readInt();
+    assert(value == 0 || value == 1);
+    return value == 1;
+  }
+
+  @override
+  String readString() {
+    _checkDataKind(DataKind.string);
+    return _readString();
+  }
+
+  @override
+  int readInt() {
+    _checkDataKind(DataKind.int);
+    return _readInt();
+  }
+
+  @override
+  ir.TreeNode readTreeNode() {
+    _checkDataKind(DataKind.treeNode);
+    return _readTreeNode();
+  }
+
+  @override
+  ConstantValue readConstant() {
+    _checkDataKind(DataKind.constant);
+    return _readConstant();
+  }
+
+  ConstantValue _readConstant() {
+    ConstantValueKind kind = _readEnum(ConstantValueKind.values);
+    ConstantValue constant;
+    switch (kind) {
+      case ConstantValueKind.BOOL:
+        bool value = readBool();
+        constant = new BoolConstantValue(value);
+        break;
+      case ConstantValueKind.INT:
+        BigInt value = BigInt.parse(readString());
+        constant = new IntConstantValue(value);
+        break;
+      case ConstantValueKind.DOUBLE:
+        ByteData data = new ByteData(8);
+        data.setUint16(0, readInt());
+        data.setUint16(2, readInt());
+        data.setUint16(4, readInt());
+        data.setUint16(6, readInt());
+        double value = data.getFloat64(0);
+        constant = new DoubleConstantValue(value);
+        break;
+      case ConstantValueKind.STRING:
+        String value = readString();
+        constant = new StringConstantValue(value);
+        break;
+      case ConstantValueKind.NULL:
+        constant = const NullConstantValue();
+        break;
+      default:
+        // TODO(johnniwinther): Support remaining constant values.
+        throw new UnsupportedError("Unexpected constant value kind ${kind}.");
+    }
+    return constant;
+  }
+
+  ir.TreeNode _readTreeNode() {
+    _TreeNodeKind kind = _readEnum(_TreeNodeKind.values);
+    switch (kind) {
+      case _TreeNodeKind.cls:
+        return _readClassData().node;
+      case _TreeNodeKind.member:
+        return _readMemberData().node;
+      case _TreeNodeKind.functionDeclarationVariable:
+        ir.FunctionDeclaration functionDeclaration = _readTreeNode();
+        return functionDeclaration.variable;
+      case _TreeNodeKind.functionNode:
+        return _readFunctionNode();
+      case _TreeNodeKind.typeParameter:
+        return _readTypeParameter();
+      case _TreeNodeKind.node:
+        _MemberData data = _readMemberData();
+        int index = _readInt();
+        ir.TreeNode treeNode = data.getTreeNodeByIndex(index);
+        assert(treeNode != null,
+            "No TreeNode found for index $index in ${data.node}.$_errorContext");
+        return treeNode;
+    }
+    throw new UnsupportedError("Unexpected _TreeNodeKind $kind");
+  }
+
+  ir.FunctionNode _readFunctionNode() {
+    _FunctionNodeKind kind = _readEnum(_FunctionNodeKind.values);
+    switch (kind) {
+      case _FunctionNodeKind.procedure:
+        ir.Procedure procedure = _readMemberData().node;
+        return procedure.function;
+      case _FunctionNodeKind.constructor:
+        ir.Constructor constructor = _readMemberData().node;
+        return constructor.function;
+      case _FunctionNodeKind.functionExpression:
+        ir.FunctionExpression functionExpression = _readTreeNode();
+        return functionExpression.function;
+      case _FunctionNodeKind.functionDeclaration:
+        ir.FunctionDeclaration functionDeclaration = _readTreeNode();
+        return functionDeclaration.function;
+    }
+    throw new UnsupportedError("Unexpected _FunctionNodeKind $kind");
+  }
+
+  @override
+  ir.TypeParameter readTypeParameterNode() {
+    _checkDataKind(DataKind.typeParameterNode);
+    return _readTypeParameter();
+  }
+
+  ir.TypeParameter _readTypeParameter() {
+    _TypeParameterKind kind = _readEnum(_TypeParameterKind.values);
+    switch (kind) {
+      case _TypeParameterKind.cls:
+        ir.Class cls = _readClassData().node;
+        return cls.typeParameters[_readInt()];
+      case _TypeParameterKind.functionNode:
+        ir.FunctionNode functionNode = _readFunctionNode();
+        return functionNode.typeParameters[_readInt()];
+    }
+    throw new UnsupportedError("Unexpected _TypeParameterKind kind $kind");
+  }
+
+  void _checkDataKind(DataKind expectedKind) {
+    if (!useDataKinds) return;
+    DataKind actualKind = _readEnum(DataKind.values);
+    assert(
+        actualKind == expectedKind,
+        "Invalid data kind. "
+        "Expected $expectedKind, found $actualKind.$_errorContext");
+  }
+
+  @override
+  Local readLocal() {
+    LocalKind kind = readEnum(LocalKind.values);
+    switch (kind) {
+      case LocalKind.jLocal:
+        MemberEntity memberContext = readMember();
+        int localIndex = readInt();
+        return localLookup.getLocalByIndex(memberContext, localIndex);
+      case LocalKind.thisLocal:
+        ClassEntity cls = readClass();
+        return new ThisLocal(cls);
+      case LocalKind.boxLocal:
+        ClassEntity cls = readClass();
+        return new BoxLocal(cls);
+      case LocalKind.anonymousClosureLocal:
+        ClassEntity cls = readClass();
+        return new AnonymousClosureLocal(cls);
+      case LocalKind.typeVariableLocal:
+        TypeVariableType typeVariable = readDartType();
+        return new TypeVariableLocal(typeVariable);
+    }
+    throw new UnsupportedError("Unexpected local kind $kind");
+  }
+
+  /// Actual deserialization of a section begin tag, implemented by subclasses.
+  void _begin(String tag);
+
+  /// Actual deserialization of a section end tag, implemented by subclasses.
+  void _end(String tag);
+
+  /// Actual deserialization of a string value, implemented by subclasses.
+  String _readString();
+
+  /// Actual deserialization of a non-negative integer value, implemented by
+  /// subclasses.
+  int _readInt();
+
+  /// Actual deserialization of a URI value, implemented by subclasses.
+  Uri _readUri();
+
+  /// Actual deserialization of an enum value in [values], implemented by
+  /// subclasses.
+  E _readEnum<E>(List<E> values);
+
+  /// Returns a string representation of the current state of the data source
+  /// useful for debugging in consistencies between serialization and
+  /// deserialization.
+  String get _errorContext;
+}
diff --git a/pkg/compiler/lib/src/serialization/binary_sink.dart b/pkg/compiler/lib/src/serialization/binary_sink.dart
new file mode 100644
index 0000000..e7c2114
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/binary_sink.dart
@@ -0,0 +1,60 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// [DataSink] that writes data as a sequence of bytes.
+///
+/// This data sink works together with [BinarySource].
+class BinarySink extends AbstractDataSink {
+  final Sink<List<int>> sink;
+  BufferedSink _bufferedSink;
+
+  BinarySink(this.sink, {bool useDataKinds: false})
+      : _bufferedSink = new BufferedSink(sink),
+        super(useDataKinds: useDataKinds);
+
+  void _begin(String tag) {
+    // TODO(johnniwinther): Support tags in binary serialization?
+  }
+  void _end(String tag) {
+    // TODO(johnniwinther): Support tags in binary serialization?
+  }
+
+  @override
+  void _writeUri(Uri value) {
+    _writeString(value.toString());
+  }
+
+  @override
+  void _writeString(String value) {
+    List<int> bytes = utf8.encode(value);
+    _writeInt(bytes.length);
+    _bufferedSink.addBytes(bytes);
+  }
+
+  @override
+  void _writeInt(int value) {
+    assert(value >= 0 && value >> 30 == 0);
+    if (value < 0x80) {
+      _bufferedSink.addByte(value);
+    } else if (value < 0x4000) {
+      _bufferedSink.addByte2((value >> 8) | 0x80, value & 0xFF);
+    } else {
+      _bufferedSink.addByte4((value >> 24) | 0xC0, (value >> 16) & 0xFF,
+          (value >> 8) & 0xFF, value & 0xFF);
+    }
+  }
+
+  @override
+  void _writeEnum(dynamic value) {
+    _writeInt(value.index);
+  }
+
+  void close() {
+    _bufferedSink.flushAndDestroy();
+    _bufferedSink = null;
+    sink.close();
+  }
+}
diff --git a/pkg/compiler/lib/src/serialization/binary_source.dart b/pkg/compiler/lib/src/serialization/binary_source.dart
new file mode 100644
index 0000000..0836209
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/binary_source.dart
@@ -0,0 +1,67 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// [DataSource] that reads data from a sequence of bytes.
+///
+/// This data source works together with [BinarySink].
+class BinarySourceImpl extends AbstractDataSource {
+  int _byteOffset = 0;
+  final List<int> _bytes;
+
+  BinarySourceImpl(this._bytes, {bool useDataKinds: false})
+      : super(useDataKinds: useDataKinds);
+
+  void _begin(String tag) {}
+  void _end(String tag) {}
+
+  int _readByte() => _bytes[_byteOffset++];
+
+  @override
+  String _readString() {
+    int length = _readInt();
+    List<int> bytes = new Uint8List(length);
+    bytes.setRange(0, bytes.length, _bytes, _byteOffset);
+    _byteOffset += bytes.length;
+    return utf8.decode(bytes);
+  }
+
+  @override
+  int _readInt() {
+    var byte = _readByte();
+    if (byte & 0x80 == 0) {
+      // 0xxxxxxx
+      return byte;
+    } else if (byte & 0x40 == 0) {
+      // 10xxxxxx
+      return ((byte & 0x3F) << 8) | _readByte();
+    } else {
+      // 11xxxxxx
+      return ((byte & 0x3F) << 24) |
+          (_readByte() << 16) |
+          (_readByte() << 8) |
+          _readByte();
+    }
+  }
+
+  @override
+  Uri _readUri() {
+    String text = _readString();
+    return Uri.parse(text);
+  }
+
+  @override
+  E _readEnum<E>(List<E> values) {
+    int index = _readInt();
+    assert(
+        0 <= index && index < values.length,
+        "Invalid data kind index. "
+        "Expected one of $values, found index $index.");
+    return values[index];
+  }
+
+  @override
+  String get _errorContext => ' Offset $_byteOffset in ${_bytes.length}.';
+}
diff --git a/pkg/compiler/lib/src/serialization/helpers.dart b/pkg/compiler/lib/src/serialization/helpers.dart
new file mode 100644
index 0000000..14446a1
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/helpers.dart
@@ -0,0 +1,176 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// Enum values used for identifying different kinds of serialized data.
+///
+/// This is used to for debugging data inconsistencies between serialization
+/// and deserialization.
+enum DataKind {
+  bool,
+  int,
+  string,
+  enumValue,
+  uri,
+  libraryNode,
+  classNode,
+  memberNode,
+  treeNode,
+  typeParameterNode,
+  dartType,
+  sourceSpan,
+  constant,
+}
+
+/// Enum used for identifying the enclosing entity of a member in serialization.
+enum MemberContextKind { library, cls }
+
+/// Enum used for identifying [Local] subclasses in serialization.
+enum LocalKind {
+  jLocal,
+  thisLocal,
+  boxLocal,
+  anonymousClosureLocal,
+  typeVariableLocal,
+}
+
+/// Enum used for identifying [ir.TreeNode] subclasses in serialization.
+enum _TreeNodeKind {
+  cls,
+  member,
+  node,
+  functionNode,
+  typeParameter,
+  functionDeclarationVariable
+}
+
+/// Enum used for identifying [ir.FunctionNode] context in serialization.
+enum _FunctionNodeKind {
+  procedure,
+  constructor,
+  functionExpression,
+  functionDeclaration,
+}
+
+/// Enum used for identifying [ir.TypeParameter] context in serialization.
+enum _TypeParameterKind {
+  cls,
+  functionNode,
+}
+
+/// Class used for encoding tags in [ObjectSink] and [ObjectSource].
+class Tag {
+  final String value;
+
+  Tag(this.value);
+
+  int get hashCode => value.hashCode * 13;
+
+  bool operator ==(other) {
+    if (identical(this, other)) return true;
+    if (other is! Tag) return false;
+    return value == other.value;
+  }
+
+  String toString() => 'Tag($value)';
+}
+
+/// Enum used for identifying [DartType] subclasses in serialization.
+enum DartTypeKind {
+  none,
+  voidType,
+  typeVariable,
+  functionTypeVariable,
+  functionType,
+  interfaceType,
+  typedef,
+  dynamicType,
+  futureOr
+}
+
+/// Visitor that serializes [DartType] object together with [AbstractDataSink].
+class DartTypeWriter
+    implements DartTypeVisitor<void, List<FunctionTypeVariable>> {
+  final AbstractDataSink _sink;
+
+  DartTypeWriter(this._sink);
+
+  void visit(covariant DartType type,
+          List<FunctionTypeVariable> functionTypeVariables) =>
+      type.accept(this, functionTypeVariables);
+
+  void visitTypes(
+      List<DartType> types, List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeInt(types.length);
+    for (DartType type in types) {
+      _sink._writeDartType(type, functionTypeVariables);
+    }
+  }
+
+  void visitVoidType(covariant VoidType type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.voidType);
+  }
+
+  void visitTypeVariableType(covariant TypeVariableType type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.typeVariable);
+    IndexedTypeVariable typeVariable = type.element;
+    _sink.writeInt(typeVariable.typeVariableIndex);
+  }
+
+  void visitFunctionTypeVariable(covariant FunctionTypeVariable type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.functionTypeVariable);
+    int index = functionTypeVariables.indexOf(type);
+    assert(index != -1);
+    _sink.writeInt(index);
+  }
+
+  void visitFunctionType(covariant FunctionType type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.functionType);
+    functionTypeVariables =
+        new List<FunctionTypeVariable>.from(functionTypeVariables)
+          ..addAll(type.typeVariables);
+    _sink.writeInt(type.typeVariables.length);
+    for (FunctionTypeVariable variable in type.typeVariables) {
+      _sink._writeDartType(variable.bound, functionTypeVariables);
+    }
+    _sink._writeDartType(type.returnType, functionTypeVariables);
+    visitTypes(type.parameterTypes, functionTypeVariables);
+    visitTypes(type.optionalParameterTypes, functionTypeVariables);
+    visitTypes(type.namedParameterTypes, functionTypeVariables);
+    for (String namedParameter in type.namedParameters) {
+      _sink.writeString(namedParameter);
+    }
+  }
+
+  void visitInterfaceType(covariant InterfaceType type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.interfaceType);
+    _sink.writeClass(type.element);
+    visitTypes(type.typeArguments, functionTypeVariables);
+  }
+
+  void visitTypedefType(covariant TypedefType type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.typedef);
+    _sink.writeTypedef(type.element);
+    visitTypes(type.typeArguments, functionTypeVariables);
+    _sink._writeDartType(type.unaliased, functionTypeVariables);
+  }
+
+  void visitDynamicType(covariant DynamicType type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.dynamicType);
+  }
+
+  void visitFutureOrType(covariant FutureOrType type,
+      List<FunctionTypeVariable> functionTypeVariables) {
+    _sink.writeEnum(DartTypeKind.futureOr);
+    _sink._writeDartType(type.typeArgument, functionTypeVariables);
+  }
+}
diff --git a/pkg/compiler/lib/src/serialization/member_data.dart b/pkg/compiler/lib/src/serialization/member_data.dart
new file mode 100644
index 0000000..08fa9a3
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/member_data.dart
@@ -0,0 +1,159 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// Helper for looking up object library data from an [ir.Component] node.
+class ComponentLookup {
+  final ir.Component _component;
+
+  /// Cache of [_LibraryData] for libraries in [_component].
+  Map<Uri, _LibraryData> _libraryMap;
+
+  ComponentLookup(this._component);
+
+  /// Returns the [_LibraryData] object for the library with the [canonicalUri].
+  _LibraryData getLibraryDataByUri(Uri canonicalUri) {
+    if (_libraryMap == null) {
+      _libraryMap = {};
+      for (ir.Library library in _component.libraries) {
+        _libraryMap[library.importUri] = new _LibraryData(library);
+      }
+    }
+    return _libraryMap[canonicalUri];
+  }
+}
+
+/// Returns a name uniquely identifying a member within its enclosing library
+/// or class.
+String _computeMemberName(ir.Member member) {
+  if (member.name.isPrivate &&
+      member.name.libraryName != member.enclosingLibrary.reference) {
+    // TODO(33732): Handle noSuchMethod forwarders for private members from
+    // other libraries.
+    return null;
+  }
+  String name = member.name.name;
+  if (member is ir.Procedure && member.kind == ir.ProcedureKind.Setter) {
+    name += "=";
+  }
+  return name;
+}
+
+/// Helper for looking up classes and members from an [ir.Library] node.
+class _LibraryData {
+  /// The [ir.Library] that defines the library.
+  final ir.Library node;
+
+  /// Cache of [_ClassData] for classes in this library.
+  Map<String, _ClassData> _classes;
+
+  /// Cache of [_MemberData] for members in this library.
+  Map<String, _MemberData> _members;
+
+  _LibraryData(this.node);
+
+  /// Returns the [_ClassData] for the class [name] in this library.
+  _ClassData lookupClass(String name) {
+    if (_classes == null) {
+      _classes = {};
+      for (ir.Class cls in node.classes) {
+        assert(!_classes.containsKey(cls.name),
+            "Duplicate class '${cls.name}' in $_classes trying to add $cls.");
+        _classes[cls.name] = new _ClassData(cls);
+      }
+    }
+    return _classes[name];
+  }
+
+  /// Returns the [_MemberData] for the member uniquely identified by [name] in
+  /// this library.
+  _MemberData lookupMember(String name) {
+    if (_members == null) {
+      _members = {};
+      for (ir.Member member in node.members) {
+        String name = _computeMemberName(member);
+        if (name == null) continue;
+        assert(!_members.containsKey(name),
+            "Duplicate member '$name' in $_members trying to add $member.");
+        _members[name] = new _MemberData(member);
+      }
+    }
+    return _members[name];
+  }
+
+  String toString() => '_LibraryData($node(${identityHashCode(node)}))';
+}
+
+/// Helper for looking up members from an [ir.Class] node.
+class _ClassData {
+  /// The [ir.Class] that defines the class.
+  final ir.Class node;
+
+  /// Cache of [_MemberData] for members in this class.
+  Map<String, _MemberData> _members;
+
+  _ClassData(this.node);
+
+  /// Returns the [_MemberData] for the member uniquely identified by [name] in
+  /// this class.
+  _MemberData lookupMember(String name) {
+    if (_members == null) {
+      _members = {};
+      for (ir.Member member in node.members) {
+        String name = _computeMemberName(member);
+        if (name == null) continue;
+        assert(!_members.containsKey(name),
+            "Duplicate member '$name' in $_members trying to add $member.");
+        _members[name] = new _MemberData(member);
+      }
+    }
+    return _members[name];
+  }
+
+  String toString() => '_ClassData($node(${identityHashCode(node)}))';
+}
+
+/// Helper for looking up child [ir.TreeNode]s of a [ir.Member] node.
+class _MemberData {
+  /// The [ir.Member] that defines the member.
+  final ir.Member node;
+
+  /// Cached index to [ir.TreeNode] map used for deserialization of
+  /// [ir.TreeNode]s.
+  Map<int, ir.TreeNode> _indexToNodeMap;
+
+  /// Cached [ir.TreeNode] to index map used for serialization of
+  /// [ir.TreeNode]s.
+  Map<ir.TreeNode, int> _nodeToIndexMap;
+
+  _MemberData(this.node);
+
+  void _ensureMaps() {
+    if (_indexToNodeMap == null) {
+      _indexToNodeMap = {};
+      _nodeToIndexMap = {};
+      node.accept(
+          new _TreeNodeIndexerVisitor(_indexToNodeMap, _nodeToIndexMap));
+    }
+  }
+
+  /// Returns the [ir.TreeNode] corresponding to [index] in this member.
+  ir.TreeNode getTreeNodeByIndex(int index) {
+    _ensureMaps();
+    ir.TreeNode treeNode = _indexToNodeMap[index];
+    assert(treeNode != null, "No TreeNode found for index $index in $node.");
+    return treeNode;
+  }
+
+  /// Returns the index corresponding to [ir.TreeNode] in this member.
+  int getIndexByTreeNode(ir.TreeNode node) {
+    _ensureMaps();
+    int index = _nodeToIndexMap[node];
+    assert(index != null, "No index found for ${node.runtimeType}.");
+    return index;
+  }
+
+  String toString() => '_MemberData($node(${identityHashCode(node)}))';
+}
diff --git a/pkg/compiler/lib/src/serialization/mixins.dart b/pkg/compiler/lib/src/serialization/mixins.dart
new file mode 100644
index 0000000..e5b009f
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/mixins.dart
@@ -0,0 +1,569 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// Mixin that implements all convenience methods of [DataSource].
+abstract class DataSourceMixin implements DataSource {
+  @override
+  E readValueOrNull<E>(E f()) {
+    bool hasValue = readBool();
+    if (hasValue) {
+      return f();
+    }
+    return null;
+  }
+
+  @override
+  List<E> readList<E>(E f(), {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<E> list = new List<E>(count);
+    for (int i = 0; i < count; i++) {
+      list[i] = f();
+    }
+    return list;
+  }
+
+  @override
+  int readIntOrNull() {
+    bool hasValue = readBool();
+    if (hasValue) {
+      return readInt();
+    }
+    return null;
+  }
+
+  @override
+  String readStringOrNull() {
+    bool hasValue = readBool();
+    if (hasValue) {
+      return readString();
+    }
+    return null;
+  }
+
+  @override
+  List<String> readStrings({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<String> list = new List<String>(count);
+    for (int i = 0; i < count; i++) {
+      list[i] = readString();
+    }
+    return list;
+  }
+
+  @override
+  List<DartType> readDartTypes({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<DartType> list = new List<DartType>(count);
+    for (int i = 0; i < count; i++) {
+      list[i] = readDartType();
+    }
+    return list;
+  }
+
+  @override
+  List<ir.TypeParameter> readTypeParameterNodes({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<ir.TypeParameter> list = new List<ir.TypeParameter>(count);
+    for (int i = 0; i < count; i++) {
+      list[i] = readTypeParameterNode();
+    }
+    return list;
+  }
+
+  @override
+  List<E> readMembers<E extends MemberEntity>({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<E> list = new List<E>(count);
+    for (int i = 0; i < count; i++) {
+      MemberEntity member = readMember();
+      list[i] = member;
+    }
+    return list;
+  }
+
+  @override
+  List<E> readMemberNodes<E extends ir.Member>({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<E> list = new List<E>(count);
+    for (int i = 0; i < count; i++) {
+      ir.Member value = readMemberNode();
+      list[i] = value;
+    }
+    return list;
+  }
+
+  @override
+  List<E> readClasses<E extends ClassEntity>({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<E> list = new List<E>(count);
+    for (int i = 0; i < count; i++) {
+      ClassEntity cls = readClass();
+      list[i] = cls;
+    }
+    return list;
+  }
+
+  @override
+  Map<K, V> readLibraryMap<K extends LibraryEntity, V>(V f(),
+      {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    Map<K, V> map = {};
+    for (int i = 0; i < count; i++) {
+      LibraryEntity library = readLibrary();
+      V value = f();
+      map[library] = value;
+    }
+    return map;
+  }
+
+  @override
+  Map<K, V> readClassMap<K extends ClassEntity, V>(V f(),
+      {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    Map<K, V> map = {};
+    for (int i = 0; i < count; i++) {
+      ClassEntity cls = readClass();
+      V value = f();
+      map[cls] = value;
+    }
+    return map;
+  }
+
+  @override
+  Map<K, V> readMemberMap<K extends MemberEntity, V>(V f(),
+      {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    Map<K, V> map = {};
+    for (int i = 0; i < count; i++) {
+      MemberEntity member = readMember();
+      V value = f();
+      map[member] = value;
+    }
+    return map;
+  }
+
+  @override
+  Map<K, V> readTreeNodeMap<K extends ir.TreeNode, V>(V f(),
+      {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    Map<K, V> map = {};
+    for (int i = 0; i < count; i++) {
+      ir.TreeNode node = readTreeNode();
+      V value = f();
+      map[node] = value;
+    }
+    return map;
+  }
+
+  @override
+  List<E> readLocals<E extends Local>({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<E> list = new List<E>(count);
+    for (int i = 0; i < count; i++) {
+      Local local = readLocal();
+      list[i] = local;
+    }
+    return list;
+  }
+
+  @override
+  Map<K, V> readLocalMap<K extends Local, V>(V f(), {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    Map<K, V> map = {};
+    for (int i = 0; i < count; i++) {
+      Local local = readLocal();
+      V value = f();
+      map[local] = value;
+    }
+    return map;
+  }
+
+  @override
+  List<E> readTreeNodes<E extends ir.TreeNode>({bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    List<E> list = new List<E>(count);
+    for (int i = 0; i < count; i++) {
+      ir.TreeNode node = readTreeNode();
+      list[i] = node;
+    }
+    return list;
+  }
+
+  @override
+  Map<String, V> readStringMap<V>(V f(), {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    Map<String, V> map = {};
+    for (int i = 0; i < count; i++) {
+      String key = readString();
+      V value = f();
+      map[key] = value;
+    }
+    return map;
+  }
+
+  @override
+  IndexedClass readClassOrNull() {
+    bool hasClass = readBool();
+    if (hasClass) {
+      return readClass();
+    }
+    return null;
+  }
+
+  @override
+  ir.TreeNode readTreeNodeOrNull() {
+    bool hasValue = readBool();
+    if (hasValue) {
+      return readTreeNode();
+    }
+    return null;
+  }
+
+  @override
+  IndexedMember readMemberOrNull() {
+    bool hasValue = readBool();
+    if (hasValue) {
+      return readMember();
+    }
+    return null;
+  }
+
+  @override
+  Local readLocalOrNull() {
+    bool hasValue = readBool();
+    if (hasValue) {
+      return readLocal();
+    }
+    return null;
+  }
+
+  @override
+  Map<K, V> readConstantMap<K extends ConstantValue, V>(V f(),
+      {bool emptyAsNull: false}) {
+    int count = readInt();
+    if (count == 0 && emptyAsNull) return null;
+    Map<K, V> map = {};
+    for (int i = 0; i < count; i++) {
+      ConstantValue key = readConstant();
+      V value = f();
+      map[key] = value;
+    }
+    return map;
+  }
+
+  @override
+  IndexedLibrary readLibraryOrNull() {
+    bool hasValue = readBool();
+    if (hasValue) {
+      return readLibrary();
+    }
+    return null;
+  }
+}
+
+/// Mixin that implements all convenience methods of [DataSink].
+abstract class DataSinkMixin implements DataSink {
+  @override
+  void writeIntOrNull(int value) {
+    writeBool(value != null);
+    if (value != null) {
+      writeInt(value);
+    }
+  }
+
+  @override
+  void writeStringOrNull(String value) {
+    writeBool(value != null);
+    if (value != null) {
+      writeString(value);
+    }
+  }
+
+  @override
+  void writeClassOrNull(IndexedClass value) {
+    writeBool(value != null);
+    if (value != null) {
+      writeClass(value);
+    }
+  }
+
+  @override
+  void writeLocalOrNull(Local value) {
+    writeBool(value != null);
+    if (value != null) {
+      writeLocal(value);
+    }
+  }
+
+  @override
+  void writeClasses(Iterable<ClassEntity> values, {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (IndexedClass value in values) {
+        writeClass(value);
+      }
+    }
+  }
+
+  @override
+  void writeTreeNodes(Iterable<ir.TreeNode> values, {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (ir.TreeNode value in values) {
+        writeTreeNode(value);
+      }
+    }
+  }
+
+  @override
+  void writeStrings(Iterable<String> values, {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (String value in values) {
+        writeString(value);
+      }
+    }
+  }
+
+  @override
+  void writeMemberNodes(Iterable<ir.Member> values, {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (ir.Member value in values) {
+        writeMemberNode(value);
+      }
+    }
+  }
+
+  @override
+  void writeDartTypes(Iterable<DartType> values, {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (DartType value in values) {
+        writeDartType(value);
+      }
+    }
+  }
+
+  @override
+  void writeLibraryMap<V>(Map<LibraryEntity, V> map, void f(V value),
+      {bool allowNull: false}) {
+    if (map == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(map.length);
+      map.forEach((LibraryEntity library, V value) {
+        writeLibrary(library);
+        f(value);
+      });
+    }
+  }
+
+  @override
+  void writeClassMap<V>(Map<ClassEntity, V> map, void f(V value),
+      {bool allowNull: false}) {
+    if (map == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(map.length);
+      map.forEach((ClassEntity cls, V value) {
+        writeClass(cls);
+        f(value);
+      });
+    }
+  }
+
+  @override
+  void writeMemberMap<V>(Map<MemberEntity, V> map, void f(V value),
+      {bool allowNull: false}) {
+    if (map == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(map.length);
+      map.forEach((MemberEntity member, V value) {
+        writeMember(member);
+        f(value);
+      });
+    }
+  }
+
+  @override
+  void writeStringMap<V>(Map<String, V> map, void f(V value),
+      {bool allowNull: false}) {
+    if (map == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(map.length);
+      map.forEach((String key, V value) {
+        writeString(key);
+        f(value);
+      });
+    }
+  }
+
+  @override
+  void writeLocals(Iterable<Local> values, {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (Local value in values) {
+        writeLocal(value);
+      }
+    }
+  }
+
+  @override
+  void writeLocalMap<V>(Map<Local, V> map, void f(V value),
+      {bool allowNull: false}) {
+    if (map == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(map.length);
+      map.forEach((Local key, V value) {
+        writeLocal(key);
+        f(value);
+      });
+    }
+  }
+
+  @override
+  void writeTreeNodeMap<V>(Map<ir.TreeNode, V> map, void f(V value),
+      {bool allowNull: false}) {
+    if (map == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(map.length);
+      map.forEach((ir.TreeNode key, V value) {
+        writeTreeNode(key);
+        f(value);
+      });
+    }
+  }
+
+  @override
+  void writeList<E>(Iterable<E> values, void f(E value),
+      {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      values.forEach(f);
+    }
+  }
+
+  @override
+  void writeTreeNodeOrNull(ir.TreeNode value) {
+    writeBool(value != null);
+    if (value != null) {
+      writeTreeNode(value);
+    }
+  }
+
+  @override
+  void writeValueOrNull<E>(E value, void f(E value)) {
+    writeBool(value != null);
+    if (value != null) {
+      f(value);
+    }
+  }
+
+  @override
+  void writeMemberOrNull(IndexedMember value) {
+    writeBool(value != null);
+    if (value != null) {
+      writeMember(value);
+    }
+  }
+
+  @override
+  void writeMembers(Iterable<MemberEntity> values, {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (IndexedMember value in values) {
+        writeMember(value);
+      }
+    }
+  }
+
+  @override
+  void writeTypeParameterNodes(Iterable<ir.TypeParameter> values,
+      {bool allowNull: false}) {
+    if (values == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(values.length);
+      for (ir.TypeParameter value in values) {
+        writeTypeParameterNode(value);
+      }
+    }
+  }
+
+  @override
+  void writeConstantMap<V>(Map<ConstantValue, V> map, void f(V value),
+      {bool allowNull: false}) {
+    if (map == null) {
+      assert(allowNull);
+      writeInt(0);
+    } else {
+      writeInt(map.length);
+      map.forEach((ConstantValue key, V value) {
+        writeConstant(key);
+        f(value);
+      });
+    }
+  }
+
+  @override
+  void writeLibraryOrNull(IndexedLibrary value) {
+    writeBool(value != null);
+    if (value != null) {
+      writeLibrary(value);
+    }
+  }
+}
diff --git a/pkg/compiler/lib/src/serialization/node_indexer.dart b/pkg/compiler/lib/src/serialization/node_indexer.dart
new file mode 100644
index 0000000..c9370f1
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/node_indexer.dart
@@ -0,0 +1,142 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// Visitor that ascribes an index to all [ir.TreeNode]s that potentially
+/// needed for serialization and deserialization.
+class _TreeNodeIndexerVisitor extends ir.Visitor<void> {
+  int _currentIndex = 0;
+  final Map<int, ir.TreeNode> _indexToNodeMap;
+  final Map<ir.TreeNode, int> _nodeToIndexMap;
+
+  _TreeNodeIndexerVisitor(this._indexToNodeMap, this._nodeToIndexMap);
+
+  void registerNode(ir.TreeNode node) {
+    _indexToNodeMap[_currentIndex] = node;
+    _nodeToIndexMap[node] = _currentIndex;
+    _currentIndex++;
+  }
+
+  @override
+  void defaultTreeNode(ir.TreeNode node) {
+    node.visitChildren(this);
+  }
+
+  @override
+  void visitFunctionExpression(ir.FunctionExpression node) {
+    registerNode(node);
+    super.visitFunctionExpression(node);
+  }
+
+  @override
+  void visitFunctionDeclaration(ir.FunctionDeclaration node) {
+    registerNode(node);
+    super.visitFunctionDeclaration(node);
+  }
+
+  @override
+  void visitBlock(ir.Block node) {
+    registerNode(node);
+    super.visitBlock(node);
+  }
+
+  @override
+  void visitVariableDeclaration(ir.VariableDeclaration node) {
+    if (node.parent is! ir.FunctionDeclaration) {
+      registerNode(node);
+    }
+    super.visitVariableDeclaration(node);
+  }
+
+  @override
+  void visitSwitchStatement(ir.SwitchStatement node) {
+    registerNode(node);
+    super.visitSwitchStatement(node);
+  }
+
+  @override
+  void visitForStatement(ir.ForStatement node) {
+    registerNode(node);
+    super.visitForStatement(node);
+  }
+
+  @override
+  void visitForInStatement(ir.ForInStatement node) {
+    registerNode(node);
+    super.visitForInStatement(node);
+  }
+
+  @override
+  void visitWhileStatement(ir.WhileStatement node) {
+    registerNode(node);
+    super.visitWhileStatement(node);
+  }
+
+  @override
+  void visitDoStatement(ir.DoStatement node) {
+    registerNode(node);
+    super.visitDoStatement(node);
+  }
+
+  @override
+  void visitBreakStatement(ir.BreakStatement node) {
+    registerNode(node);
+    super.visitBreakStatement(node);
+  }
+
+  @override
+  void visitListLiteral(ir.ListLiteral node) {
+    registerNode(node);
+    super.visitListLiteral(node);
+  }
+
+  @override
+  void visitMapLiteral(ir.MapLiteral node) {
+    registerNode(node);
+    super.visitMapLiteral(node);
+  }
+
+  @override
+  void visitPropertyGet(ir.PropertyGet node) {
+    registerNode(node);
+    super.visitPropertyGet(node);
+  }
+
+  @override
+  void visitPropertySet(ir.PropertySet node) {
+    registerNode(node);
+    super.visitPropertySet(node);
+  }
+
+  @override
+  void visitMethodInvocation(ir.MethodInvocation node) {
+    registerNode(node);
+    super.visitMethodInvocation(node);
+  }
+
+  @override
+  void visitDirectPropertyGet(ir.DirectPropertyGet node) {
+    registerNode(node);
+    super.visitDirectPropertyGet(node);
+  }
+
+  @override
+  void visitDirectPropertySet(ir.DirectPropertySet node) {
+    registerNode(node);
+    super.visitDirectPropertySet(node);
+  }
+
+  @override
+  void visitDirectMethodInvocation(ir.DirectMethodInvocation node) {
+    registerNode(node);
+    super.visitDirectMethodInvocation(node);
+  }
+
+  @override
+  void visitStaticInvocation(ir.StaticInvocation node) {
+    registerNode(node);
+    super.visitStaticInvocation(node);
+  }
+}
diff --git a/pkg/compiler/lib/src/serialization/object_sink.dart b/pkg/compiler/lib/src/serialization/object_sink.dart
new file mode 100644
index 0000000..195db2a
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/object_sink.dart
@@ -0,0 +1,53 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// [DataSink] that writes to a list of objects, useful for debugging
+/// inconsistencies between serialization and deserialization.
+///
+/// This data sink works together with [ObjectSource].
+class ObjectSink extends AbstractDataSink {
+  List<dynamic> _data;
+
+  ObjectSink(this._data, {bool useDataKinds})
+      : super(useDataKinds: useDataKinds);
+
+  void _begin(String tag) {
+    _data.add(new Tag('begin:$tag'));
+  }
+
+  void _end(String tag) {
+    _data.add(new Tag('end:$tag'));
+  }
+
+  @override
+  void _writeEnum(dynamic value) {
+    assert(value != null);
+    _data.add(value);
+  }
+
+  @override
+  void _writeInt(int value) {
+    assert(value != null);
+    _data.add(value);
+  }
+
+  @override
+  void _writeString(String value) {
+    assert(value != null);
+    _data.add(value);
+  }
+
+  @override
+  void _writeUri(Uri value) {
+    assert(value != null);
+    _data.add(value);
+  }
+
+  @override
+  void close() {
+    _data = null;
+  }
+}
diff --git a/pkg/compiler/lib/src/serialization/object_source.dart b/pkg/compiler/lib/src/serialization/object_source.dart
new file mode 100644
index 0000000..cae965b
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/object_source.dart
@@ -0,0 +1,71 @@
+// 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.
+
+part of 'serialization.dart';
+
+/// [DataSource] that read from a list of objects, useful for debugging
+/// inconsistencies between serialization and deserialization.
+///
+/// This data source works together with [ObjectSink].
+class ObjectSource extends AbstractDataSource {
+  int _index = 0;
+  final List<dynamic> _data;
+
+  ObjectSource(this._data, {bool useDataKinds})
+      : super(useDataKinds: useDataKinds);
+
+  T _read<T>() {
+    dynamic value = _data[_index++];
+    assert(value is T, "Expected $T value, found $value.$_errorContext");
+    return value;
+  }
+
+  void _begin(String tag) {
+    Tag expectedTag = new Tag('begin:$tag');
+    Tag actualTag = _read();
+    assert(
+        expectedTag == actualTag,
+        "Unexpected begin tag. "
+        "Expected $expectedTag, found $actualTag.$_errorContext");
+  }
+
+  void _end(String tag) {
+    Tag expectedTag = new Tag('end:$tag');
+    Tag actualTag = _read();
+    assert(
+        expectedTag == actualTag,
+        "Unexpected end tag. "
+        "Expected $expectedTag, found $actualTag.$_errorContext");
+  }
+
+  @override
+  String _readString() => _read();
+
+  @override
+  E _readEnum<E>(List<E> values) => _read();
+
+  @override
+  Uri _readUri() => _read();
+
+  @override
+  int _readInt() => _read();
+
+  @override
+  String get _errorContext {
+    StringBuffer sb = new StringBuffer();
+    for (int i = _index - 50; i < _index + 10; i++) {
+      if (i >= 0 && i < _data.length) {
+        if (i == _index - 1) {
+          sb.write('\n> ');
+        } else {
+          sb.write('\n  ');
+        }
+        sb.write(i);
+        sb.write(' ');
+        sb.write(_data[i]);
+      }
+    }
+    return sb.toString();
+  }
+}
diff --git a/pkg/compiler/lib/src/serialization/serialization.dart b/pkg/compiler/lib/src/serialization/serialization.dart
new file mode 100644
index 0000000..a5b738a
--- /dev/null
+++ b/pkg/compiler/lib/src/serialization/serialization.dart
@@ -0,0 +1,560 @@
+// 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:convert';
+import 'dart:typed_data';
+import 'package:kernel/ast.dart' as ir;
+import 'package:kernel/binary/ast_to_binary.dart';
+import '../closure.dart';
+import '../constants/values.dart';
+import '../diagnostics/source_span.dart';
+import '../elements/entities.dart';
+import '../elements/indexed.dart';
+import '../elements/types.dart';
+import '../js_model/closure.dart';
+import '../js_model/locals.dart';
+
+part 'abstract_sink.dart';
+part 'abstract_source.dart';
+part 'binary_sink.dart';
+part 'binary_source.dart';
+part 'helpers.dart';
+part 'member_data.dart';
+part 'mixins.dart';
+part 'node_indexer.dart';
+part 'object_sink.dart';
+part 'object_source.dart';
+
+/// Interface for serialization.
+abstract class DataSink {
+  /// Flushes any pending data and closes this data sink.
+  ///
+  /// The data sink can no longer be written to after closing.
+  void close();
+
+  /// Registers that the section [tag] starts.
+  ///
+  /// This is used for debugging to verify that sections are correctly aligned
+  /// between serialization and deserialization.
+  void begin(String tag);
+
+  /// Registers that the section [tag] ends.
+  ///
+  /// This is used for debugging to verify that sections are correctly aligned
+  /// between serialization and deserialization.
+  void end(String tag);
+
+  /// Writes the potentially `null` [value] to this data sink. If [value] is
+  /// non-null [f] is called to write the non-null value to the data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readValueOrNull].
+  void writeValueOrNull<E>(E value, void f(E value));
+
+  /// Writes the [values] to this data sink calling [f] to write each value to
+  /// the data sink. If [allowNull] is `true`, [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readList].
+  void writeList<E>(Iterable<E> values, void f(E value),
+      {bool allowNull: false});
+
+  /// Writes the boolean [value] to this data sink.
+  void writeBool(bool value);
+
+  /// Writes the non-negative integer [value] to this data sink.
+  void writeInt(int value);
+
+  /// Writes the potentially `null` non-negative [value] to this data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readIntOrNull].
+  void writeIntOrNull(int value);
+
+  /// Writes the string [value] to this data sink.
+  void writeString(String value);
+
+  /// Writes the potentially `null` string [value] to this data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readStringOrNull].
+  void writeStringOrNull(String value);
+
+  /// Writes the string [values] to this data sink. If [allowNull] is `true`,
+  /// [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readStrings].
+  void writeStrings(Iterable<String> values, {bool allowNull: false});
+
+  /// Writes the [map] from string to [V] values to this data sink, calling [f]
+  /// to write each value to the data sink. If [allowNull] is `true`, [map] is
+  /// allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readStringMap].
+  void writeStringMap<V>(Map<String, V> map, void f(V value),
+      {bool allowNull: false});
+
+  /// Writes the enum value [value] to this data sink.
+  // TODO(johnniwinther): Change the signature to
+  // `void writeEnum<E extends Enum<E>>(E value);` when an interface for enums
+  // is added to the language.
+  void writeEnum(dynamic value);
+
+  /// Writes the URI [value] to this data sink.
+  void writeUri(Uri value);
+
+  /// Writes a reference to the kernel library node [value] to this data sink.
+  void writeLibraryNode(ir.Library value);
+
+  /// Writes a reference to the kernel class node [value] to this data sink.
+  void writeClassNode(ir.Class value);
+
+  /// Writes a reference to the kernel member node [value] to this data sink.
+  void writeMemberNode(ir.Member value);
+
+  /// Writes references to the kernel member node [values] to this data sink.
+  /// If [allowNull] is `true`, [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readMemberNodes].
+  void writeMemberNodes(Iterable<ir.Member> values, {bool allowNull: false});
+
+  /// Writes a reference to the kernel tree node [value] to this data sink.
+  void writeTreeNode(ir.TreeNode value);
+
+  /// Writes a reference to the potentially `null` kernel tree node [value]
+  /// to this data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readTreeNodeOrNull].
+  void writeTreeNodeOrNull(ir.TreeNode value);
+
+  /// Writes references to the kernel tree node [values] to this data sink.
+  /// If [allowNull] is `true`, [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readTreeNodes].
+  void writeTreeNodes(Iterable<ir.TreeNode> values, {bool allowNull: false});
+
+  /// Writes the [map] from references to kernel tree nodes to [V] values to
+  /// this data sink, calling [f] to write each value to the data sink. If
+  /// [allowNull] is `true`, [map] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readTreeNodeMap].
+  void writeTreeNodeMap<V>(Map<ir.TreeNode, V> map, void f(V value),
+      {bool allowNull: false});
+
+  /// Writes a reference to the kernel type parameter node [value] to this data
+  /// sink.
+  void writeTypeParameterNode(ir.TypeParameter value);
+
+  /// Writes references to the kernel type parameter node [values] to this data
+  /// sink.
+  /// If [allowNull] is `true`, [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readTypeParameterNodes].
+  void writeTypeParameterNodes(Iterable<ir.TypeParameter> values,
+      {bool allowNull: false});
+
+  /// Writes the type [value] to this data sink. If [allowNull] is `true`,
+  /// [value] is allowed to be `null`.
+  void writeDartType(DartType value, {bool allowNull: false});
+
+  /// Writes the type [values] to this data sink. If [allowNull] is `true`,
+  /// [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readDartTypes].
+  void writeDartTypes(Iterable<DartType> values, {bool allowNull: false});
+
+  /// Writes the source span [value] to this data sink.
+  void writeSourceSpan(SourceSpan value);
+
+  /// Writes a reference to the indexed library [value] to this data sink.
+  void writeLibrary(IndexedLibrary value);
+
+  /// Writes a reference to the potentially `null` indexed library [value]
+  /// to this data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readLibraryOrNull].
+  void writeLibraryOrNull(IndexedLibrary value);
+
+  /// Writes the [map] from references to indexed libraries to [V] values to
+  /// this data sink, calling [f] to write each value to the data sink. If
+  /// [allowNull] is `true`, [map] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readLibraryMap].
+  void writeLibraryMap<V>(Map<LibraryEntity, V> map, void f(V value),
+      {bool allowNull: false});
+
+  /// Writes a reference to the indexed class [value] to this data sink.
+  void writeClass(IndexedClass value);
+
+  /// Writes a reference to the potentially `null` indexed class [value]
+  /// to this data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readClassOrNull].
+  void writeClassOrNull(IndexedClass value);
+
+  /// Writes references to the indexed class [values] to this data sink. If
+  /// [allowNull] is `true`, [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readClasses].
+  void writeClasses(Iterable<ClassEntity> values, {bool allowNull: false});
+
+  /// Writes the [map] from references to indexed classes to [V] values to this
+  /// data sink, calling [f] to write each value to the data sink. If
+  /// [allowNull] is `true`, [map] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readClassMap].
+  void writeClassMap<V>(Map<ClassEntity, V> map, void f(V value),
+      {bool allowNull: false});
+
+  /// Writes a reference to the indexed typedef [value] to this data sink.
+  void writeTypedef(IndexedTypedef value);
+
+  /// Writes a reference to the indexed member [value] to this data sink.
+  void writeMember(IndexedMember value);
+
+  /// Writes a reference to the potentially `null` indexed member [value]
+  /// to this data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readMemberOrNull].
+  void writeMemberOrNull(IndexedMember value);
+
+  /// Writes references to the indexed member [values] to this data sink. If
+  /// [allowNull] is `true`, [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readMembers].
+  void writeMembers(Iterable<MemberEntity> values, {bool allowNull: false});
+
+  /// Writes the [map] from references to indexed members to [V] values to this
+  /// data sink, calling [f] to write each value to the data sink. If
+  /// [allowNull] is `true`, [map] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readMemberMap].
+  void writeMemberMap<V>(Map<MemberEntity, V> map, void f(V value),
+      {bool allowNull: false});
+
+  /// Writes a reference to the local [value] to this data sink.
+  void writeLocal(Local local);
+
+  /// Writes a reference to the potentially `null` local [value]
+  /// to this data sink.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readLocalOrNull].
+  void writeLocalOrNull(Local local);
+
+  /// Writes references to the local [values] to this data sink. If [allowNull]
+  /// is `true`, [values] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readLocals].
+  void writeLocals(Iterable<Local> locals, {bool allowNull: false});
+
+  /// Writes the [map] from references to locals to [V] values to this data
+  /// sink, calling [f] to write each value to the data sink. If [allowNull] is
+  /// `true`, [map] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readLocalMap].
+  void writeLocalMap<V>(Map<Local, V> map, void f(V value),
+      {bool allowNull: false});
+
+  /// Writes the constant [value] to this data sink.
+  void writeConstant(ConstantValue value);
+
+  /// Writes the [map] from constant values to [V] values to this data sink,
+  /// calling [f] to write each value to the data sink. If [allowNull] is
+  /// `true`, [map] is allowed to be `null`.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSource.readConstantMap].
+  void writeConstantMap<V>(Map<ConstantValue, V> map, void f(V value),
+      {bool allowNull: false});
+}
+
+/// Interface for deserialization.
+abstract class DataSource {
+  /// Registers that the section [tag] starts.
+  ///
+  /// This is used for debugging to verify that sections are correctly aligned
+  /// between serialization and deserialization.
+  void begin(String tag);
+
+  /// Registers that the section [tag] ends.
+  ///
+  /// This is used for debugging to verify that sections are correctly aligned
+  /// between serialization and deserialization.
+  void end(String tag);
+
+  /// Registers a [ComponentLookup] object with this data source to support
+  /// deserialization of references to kernel nodes.
+  void registerComponentLookup(ComponentLookup componentLookup);
+
+  /// Registers an [EntityLookup] object with this data source to support
+  /// deserialization of references to indexed entities.
+  void registerEntityLookup(EntityLookup entityLookup);
+
+  /// Registers a [LocalLookup] object with this data source to support
+  /// deserialization of references to locals.
+  void registerLocalLookup(LocalLookup localLookup);
+
+  /// Reads a potentially `null` [E] value from this data source, calling [f] to
+  /// read the non-null value from the data source.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeValueOrNull].
+  E readValueOrNull<E>(E f());
+
+  /// Reads a list of [E] values from this data source. If [emptyAsNull] is
+  /// `true`, `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeList].
+  List<E> readList<E>(E f(), {bool emptyAsNull: false});
+
+  /// Reads a boolean value from this data source.
+  bool readBool();
+
+  /// Reads a non-negative integer value from this data source.
+  int readInt();
+
+  /// Reads a potentially `null` non-negative integer value from this data
+  /// source.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeIntOrNull].
+  int readIntOrNull();
+
+  /// Reads a string value from this data source.
+  String readString();
+
+  /// Reads a potentially `null` string value from this data source.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeStringOrNull].
+  String readStringOrNull();
+
+  /// Reads a list of string values from this data source. If [emptyAsNull] is
+  /// `true`, `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeStrings].
+  List<String> readStrings({bool emptyAsNull: false});
+
+  /// Reads a map from string values to [V] values from this data source,
+  /// calling [f] to read each value from the data source. If [emptyAsNull] is
+  /// `true`, `null` is returned instead of an empty map.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeStringMap].
+  Map<String, V> readStringMap<V>(V f(), {bool emptyAsNull: false});
+
+  /// Reads an enum value from the list of enum [values] from this data source.
+  ///
+  /// The [values] argument is intended to be the static `.values` field on
+  /// enum classes, for instance:
+  ///
+  ///    enum Foo { bar, baz }
+  ///    ...
+  ///    Foo foo = source.readEnum(Foo.values);
+  ///
+  E readEnum<E>(List<E> values);
+
+  /// Reads a URI value from this data source.
+  Uri readUri();
+
+  /// Reads a reference to a kernel library node from this data source.
+  ir.Library readLibraryNode();
+
+  /// Reads a reference to a kernel class node from this data source.
+  ir.Class readClassNode();
+
+  /// Reads a reference to a kernel member node from this data source.
+  ir.Member readMemberNode();
+
+  /// Reads a list of references to kernel member nodes from this data source.
+  /// If [emptyAsNull] is `true`, `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeMemberNodes].
+  List<ir.Member> readMemberNodes<E extends ir.Member>(
+      {bool emptyAsNull: false});
+
+  /// Reads a reference to a kernel tree node from this data source.
+  ir.TreeNode readTreeNode();
+
+  /// Reads a reference to a potentially `null` kernel tree node from this data
+  /// source.
+  ir.TreeNode readTreeNodeOrNull();
+
+  /// Reads a list of references to kernel tree nodes from this data source.
+  /// If [emptyAsNull] is `true`, `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeTreeNodes].
+  List<E> readTreeNodes<E extends ir.TreeNode>({bool emptyAsNull: false});
+
+  /// Reads a map from kernel tree nodes to [V] values from this data source,
+  /// calling [f] to read each value from the data source. If [emptyAsNull] is
+  /// `true`, `null` is returned instead of an empty map.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeTreeNodeMap].
+  Map<K, V> readTreeNodeMap<K extends ir.TreeNode, V>(V f(),
+      {bool emptyAsNull: false});
+
+  /// Reads a reference to a kernel type parameter node from this data source.
+  ir.TypeParameter readTypeParameterNode();
+
+  /// Reads a list of references to kernel type parameter nodes from this data
+  /// source. If [emptyAsNull] is `true`, `null` is returned instead of an empty
+  /// list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeTypeParameterNodes].
+  List<ir.TypeParameter> readTypeParameterNodes({bool emptyAsNull: false});
+
+  /// Reads a type from this data source. If [allowNull], the returned type is
+  /// allowed to be `null`.
+  DartType readDartType({bool allowNull: false});
+
+  /// Reads a list of types from this data source. If [emptyAsNull] is `true`,
+  /// `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeDartTypes].
+  List<DartType> readDartTypes({bool emptyAsNull: false});
+
+  /// Reads a source span from this data source.
+  SourceSpan readSourceSpan();
+
+  /// Reads a reference to an indexed library from this data source.
+  IndexedLibrary readLibrary();
+
+  /// Reads a reference to a potentially `null` indexed library from this data
+  /// source.
+  IndexedLibrary readLibraryOrNull();
+  Map<K, V> readLibraryMap<K extends LibraryEntity, V>(V f(),
+      {bool emptyAsNull: false});
+
+  /// Reads a reference to an indexed class from this data source.
+  IndexedClass readClass();
+
+  /// Reads a reference to a potentially `null` indexed class from this data
+  /// source.
+  IndexedClass readClassOrNull();
+
+  /// Reads a list of references to indexed classes from this data source.
+  /// If [emptyAsNull] is `true`, `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeClasses].
+  List<E> readClasses<E extends ClassEntity>({bool emptyAsNull: false});
+
+  /// Reads a map from indexed classes to [V] values from this data source,
+  /// calling [f] to read each value from the data source. If [emptyAsNull] is
+  /// `true`, `null` is returned instead of an empty map.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeClassMap].
+  Map<K, V> readClassMap<K extends ClassEntity, V>(V f(),
+      {bool emptyAsNull: false});
+
+  /// Reads a reference to an indexed typedef from this data source.
+  IndexedTypedef readTypedef();
+
+  /// Reads a reference to an indexed member from this data source.
+  IndexedMember readMember();
+
+  /// Reads a reference to a potentially `null` indexed member from this data
+  /// source.
+  IndexedMember readMemberOrNull();
+
+  /// Reads a list of references to indexed members from this data source.
+  /// If [emptyAsNull] is `true`, `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeMembers].
+  List<E> readMembers<E extends MemberEntity>({bool emptyAsNull: false});
+
+  /// Reads a map from indexed members to [V] values from this data source,
+  /// calling [f] to read each value from the data source. If [emptyAsNull] is
+  /// `true`, `null` is returned instead of an empty map.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeMemberMap].
+  Map<K, V> readMemberMap<K extends MemberEntity, V>(V f(),
+      {bool emptyAsNull: false});
+
+  /// Reads a reference to a local from this data source.
+  Local readLocal();
+
+  /// Reads a reference to a potentially `null` local from this data source.
+  Local readLocalOrNull();
+
+  /// Reads a list of references to locals from this data source. If
+  /// [emptyAsNull] is `true`, `null` is returned instead of an empty list.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeLocals].
+  List<E> readLocals<E extends Local>({bool emptyAsNull: false});
+
+  /// Reads a map from locals to [V] values from this data source, calling [f]
+  /// to read each value from the data source. If [emptyAsNull] is `true`,
+  /// `null` is returned instead of an empty map.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeLocalMap].
+  Map<K, V> readLocalMap<K extends Local, V>(V f(), {bool emptyAsNull: false});
+
+  /// Reads a constant value from this data source.
+  ConstantValue readConstant();
+
+  /// Reads a map from constant values to [V] values from this data source,
+  /// calling [f] to read each value from the data source. If [emptyAsNull] is
+  /// `true`, `null` is returned instead of an empty map.
+  ///
+  /// This is a convenience method to be used together with
+  /// [DataSink.writeConstantMap].
+  Map<K, V> readConstantMap<K extends ConstantValue, V>(V f(),
+      {bool emptyAsNull: false});
+}
+
+/// Interface used for looking up entities by index during deserialization.
+abstract class EntityLookup {
+  /// Returns the indexed library corresponding to [index].
+  IndexedLibrary getLibraryByIndex(int index);
+
+  /// Returns the indexed class corresponding to [index].
+  IndexedClass getClassByIndex(int index);
+
+  /// Returns the indexed typedef corresponding to [index].
+  IndexedTypedef getTypedefByIndex(int index);
+
+  /// Returns the indexed member corresponding to [index].
+  IndexedMember getMemberByIndex(int index);
+
+  /// Returns the indexed type variable corresponding to [index].
+  IndexedTypeVariable getTypeVariableByIndex(int index);
+}
+
+/// Interface used for looking up locals by index during deserialization.
+abstract class LocalLookup {
+  Local getLocalByIndex(MemberEntity memberContext, int index);
+}
diff --git a/pkg/compiler/lib/src/ssa/builder_kernel.dart b/pkg/compiler/lib/src/ssa/builder_kernel.dart
index 61ed394..262a7ea 100644
--- a/pkg/compiler/lib/src/ssa/builder_kernel.dart
+++ b/pkg/compiler/lib/src/ssa/builder_kernel.dart
@@ -28,8 +28,7 @@
 import '../js_backend/backend.dart' show FunctionInlineCache, JavaScriptBackend;
 import '../js_backend/runtime_types.dart' show RuntimeTypesSubstitutions;
 import '../js_emitter/js_emitter.dart' show NativeEmitter;
-import '../js_model/locals.dart'
-    show forEachOrderedParameter, GlobalLocalsMap, JumpVisitor;
+import '../js_model/locals.dart' show forEachOrderedParameter, JumpVisitor;
 import '../js_model/elements.dart' show JGeneratorBody;
 import '../js_model/element_map.dart';
 import '../js_model/js_strategy.dart';
@@ -76,7 +75,7 @@
   final JClosedWorld closedWorld;
   final CodegenWorldBuilder _worldBuilder;
   final CodegenRegistry registry;
-  final ClosureDataLookup closureDataLookup;
+  final ClosureData closureDataLookup;
   JAllocatorAnalysis _allocatorAnalysis;
 
   /// A stack of [InterfaceType]s that have been seen during inlining of
@@ -101,7 +100,6 @@
   final SourceInformationStrategy _sourceInformationStrategy;
   final JsToElementMap _elementMap;
   final GlobalTypeInferenceResults globalInferenceResults;
-  final GlobalLocalsMap _globalLocalsMap;
   LoopHandler loopHandler;
   TypeBuilder typeBuilder;
 
@@ -130,20 +128,19 @@
       this.compiler,
       this._elementMap,
       this.globalInferenceResults,
-      this._globalLocalsMap,
       this.closedWorld,
       this._worldBuilder,
       this.registry,
-      this.closureDataLookup,
       this.nativeEmitter,
       this._sourceInformationStrategy,
       this.inlineCache)
       : this.targetElement = _effectiveTargetElementFor(initialTargetElement),
         _infoReporter = compiler.dumpInfoTask,
-        _allocatorAnalysis = closedWorld.allocatorAnalysis {
+        _allocatorAnalysis = closedWorld.allocatorAnalysis,
+        this.closureDataLookup = closedWorld.closureDataLookup {
     _enterFrame(targetElement, null);
     this.loopHandler = new KernelLoopHandler(this);
-    typeBuilder = new KernelTypeBuilder(this, _elementMap, _globalLocalsMap);
+    typeBuilder = new KernelTypeBuilder(this, _elementMap);
     graph.element = targetElement;
     graph.sourceInformation =
         _sourceInformationBuilder.buildVariableDeclaration();
@@ -177,7 +174,7 @@
         _currentFrame,
         member,
         asyncMarker,
-        _globalLocalsMap.getLocalsMap(member),
+        closedWorld.globalLocalsMap.getLocalsMap(member),
         new KernelToTypeInferenceMapImpl(member, globalInferenceResults),
         _currentFrame != null
             ? _currentFrame.sourceInformationBuilder
@@ -266,7 +263,7 @@
       assert(graph.isValid());
 
       if (backend.tracer.isEnabled) {
-        MemberEntity member = definition.member;
+        MemberEntity member = initialTargetElement;
         String name = member.name;
         if (member.isInstanceMember ||
             member.isConstructor ||
@@ -1096,7 +1093,7 @@
     }
 
     JGeneratorBody body = _elementMap.getGeneratorBody(function);
-    backend.outputUnitData.registerColocatedMembers(function, body);
+    closedWorld.outputUnitData.registerColocatedMembers(function, body);
     push(new HInvokeGeneratorBody(
         body,
         inputs,
@@ -2889,12 +2886,12 @@
       ConstantValue value = _elementMap.getFieldConstantValue(field);
       if (value != null) {
         if (!field.isAssignable) {
-          var unit = compiler.backend.outputUnitData.outputUnitForMember(field);
+          var unit = closedWorld.outputUnitData.outputUnitForMember(field);
           // TODO(sigmund): this is not equivalent to what the old FE does: if
           // there is no prefix the old FE wouldn't treat this in any special
           // way. Also, if the prefix points to a constant in the main output
           // unit, the old FE would still generate a deferred wrapper here.
-          if (!compiler.backend.outputUnitData
+          if (!closedWorld.outputUnitData
               .hasOnlyNonDeferredImportPaths(targetElement, field)) {
             stack.add(graph.addDeferredConstant(
                 value, unit, sourceInformation, compiler, closedWorld));
@@ -5016,7 +5013,7 @@
 
       // Don't inline across deferred import to prevent leaking code. The only
       // exception is an empty function (which does not contain code).
-      bool hasOnlyNonDeferredImportPaths = backend.outputUnitData
+      bool hasOnlyNonDeferredImportPaths = closedWorld.outputUnitData
           .hasOnlyNonDeferredImportPaths(compiler.currentElement, function);
 
       if (!hasOnlyNonDeferredImportPaths) {
@@ -5326,7 +5323,7 @@
     }
 
     bool hasBox = false;
-    forEachOrderedParameter(_globalLocalsMap, _elementMap, function,
+    forEachOrderedParameter(closedWorld.globalLocalsMap, _elementMap, function,
         (Local parameter) {
       if (forGenerativeConstructorBody && scopeData.isBoxed(parameter)) {
         // The parameter will be a field in the box passed as the last
@@ -5486,8 +5483,9 @@
       checkTypeVariableBounds(function);
     }
 
-    KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(function);
-    forEachOrderedParameter(_globalLocalsMap, _elementMap, function,
+    KernelToLocalsMap localsMap =
+        closedWorld.globalLocalsMap.getLocalsMap(function);
+    forEachOrderedParameter(closedWorld.globalLocalsMap, _elementMap, function,
         (Local parameter) {
       HInstruction argument = localsHandler.readLocal(parameter);
       DartType type = localsMap.getLocalType(_elementMap, parameter);
@@ -6346,10 +6344,8 @@
 
 class KernelTypeBuilder extends TypeBuilder {
   JsToElementMap _elementMap;
-  GlobalLocalsMap _globalLocalsMap;
 
-  KernelTypeBuilder(
-      KernelSsaGraphBuilder builder, this._elementMap, this._globalLocalsMap)
+  KernelTypeBuilder(KernelSsaGraphBuilder builder, this._elementMap)
       : super(builder);
 
   KernelSsaGraphBuilder get builder => super.builder;
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index 52cd6c9..83d7920 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -1822,7 +1822,7 @@
           !node.isInterceptedCall) {
         // A direct (i.e. non-interceptor) native call is the result of
         // optimization.  The optimization ensures any type checks or
-        // conversions have been satisified.
+        // conversions have been satisfied.
         methodName = _nativeData.getFixedBackendName(target);
       }
     }
diff --git a/pkg/compiler/lib/src/ssa/codegen_helpers.dart b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
index 1a9ab2f..8c86276 100644
--- a/pkg/compiler/lib/src/ssa/codegen_helpers.dart
+++ b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
@@ -140,7 +140,7 @@
     //
     // where the interceptor calling convention is used come from recognizing
     // that 'a' is a 'self-interceptor'.  If the selector matches only methods
-    // that ignore the explicit receiver parameter, replace occurences of the
+    // that ignore the explicit receiver parameter, replace occurrences of the
     // receiver argument with a dummy receiver '0':
     //
     //     a.foo$1(a, x)   --->   a.foo$1(0, x)
@@ -861,7 +861,7 @@
     }
   }
 
-  // Not all occurences should be replaced with a local variable cache, so we
+  // Not all occurrences should be replaced with a local variable cache, so we
   // filter the uses.
   int _countCacheableUses(
       HInstruction node, bool Function(HInstruction) cacheable) {
@@ -943,7 +943,7 @@
       // JavaScript `x == null` is more efficient than `x == _null`.
       if (instruction is HIdentity) return false;
 
-      // TODO(sra): Deterimine if other uses result in faster JavaScript code.
+      // TODO(sra): Determine if other uses result in faster JavaScript code.
       return false;
     }
 
@@ -971,7 +971,7 @@
       // Foreign code templates may use literals in ways that are beneficial.
       if (instruction is HForeignCode) return false;
 
-      // TODO(sra): Deterimine if other uses result in faster JavaScript code.
+      // TODO(sra): Determine if other uses result in faster JavaScript code.
       return false;
     }
 
@@ -1001,7 +1001,7 @@
       // TODO(sra): Check if a.x="s" can avoid or specialize a write barrier.
       if (instruction is HFieldSet) return true;
 
-      // TODO(sra): Deterimine if other uses result in faster JavaScript code.
+      // TODO(sra): Determine if other uses result in faster JavaScript code.
       return false;
     }
 
diff --git a/pkg/compiler/lib/src/ssa/graph_builder.dart b/pkg/compiler/lib/src/ssa/graph_builder.dart
index 5c53a0b..8bafdc8 100644
--- a/pkg/compiler/lib/src/ssa/graph_builder.dart
+++ b/pkg/compiler/lib/src/ssa/graph_builder.dart
@@ -2,7 +2,6 @@
 // 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 '../closure.dart' show ClosureDataLookup;
 import '../constants/constant_system.dart';
 import '../common/codegen.dart' show CodegenRegistry;
 import '../common_elements.dart';
@@ -69,9 +68,6 @@
 
   GlobalTypeInferenceResults get globalInferenceResults;
 
-  ClosureDataLookup get closureDataLookup =>
-      compiler.backendStrategy.closureDataLookup;
-
   NativeData get nativeData => closedWorld.nativeData;
 
   InterceptorData get interceptorData => closedWorld.interceptorData;
diff --git a/pkg/compiler/lib/src/ssa/nodes.dart b/pkg/compiler/lib/src/ssa/nodes.dart
index f815b64..b3c93c2 100644
--- a/pkg/compiler/lib/src/ssa/nodes.dart
+++ b/pkg/compiler/lib/src/ssa/nodes.dart
@@ -292,7 +292,7 @@
       Compiler compiler,
       JClosedWorld closedWorld) {
     ConstantValue wrapper = new DeferredGlobalConstantValue(constant, unit);
-    compiler.backend.outputUnitData.registerConstantDeferredUse(wrapper, unit);
+    closedWorld.outputUnitData.registerConstantDeferredUse(wrapper, unit);
     return addConstant(wrapper, closedWorld,
         sourceInformation: sourceInformation);
   }
diff --git a/pkg/compiler/lib/src/types/abstract_value_domain.dart b/pkg/compiler/lib/src/types/abstract_value_domain.dart
index 37ff14d..d6cd5d0 100644
--- a/pkg/compiler/lib/src/types/abstract_value_domain.dart
+++ b/pkg/compiler/lib/src/types/abstract_value_domain.dart
@@ -6,6 +6,7 @@
 
 import '../constants/values.dart' show ConstantValue, PrimitiveConstantValue;
 import '../elements/entities.dart';
+import '../serialization/serialization.dart';
 import '../universe/selector.dart';
 import '../universe/world_builder.dart';
 import '../world.dart';
@@ -456,4 +457,10 @@
 
   /// Returns compact a textual representation for [value] used for debugging.
   String getCompactText(AbstractValue value);
+
+  /// Deserializes an [AbstractValue] for this domain from [source].
+  AbstractValue readAbstractValueFromDataSource(DataSource source);
+
+  /// Serializes this [value] for this domain to [sink].
+  void writeAbstractValueToDataSink(DataSink sink, AbstractValue value);
 }
diff --git a/pkg/compiler/lib/src/types/types.dart b/pkg/compiler/lib/src/types/types.dart
index 497aa27..03ed29e5 100644
--- a/pkg/compiler/lib/src/types/types.dart
+++ b/pkg/compiler/lib/src/types/types.dart
@@ -12,9 +12,11 @@
 import '../elements/entities.dart';
 import '../js_backend/inferred_data.dart';
 import '../inferrer/type_graph_inferrer.dart' show TypeGraphInferrer;
+import '../serialization/serialization.dart';
 import '../universe/selector.dart' show Selector;
 import '../world.dart' show JClosedWorld;
 import 'abstract_value_domain.dart';
+import '../inferrer/inferrer_engine.dart';
 
 /// Results about a single element (e.g. a method, parameter, or field)
 /// produced by the global type-inference algorithm.
@@ -26,14 +28,18 @@
 /// implementation would return false on all boolean properties (giving no
 /// guarantees) and the `subclass of Object or null` type mask for the type
 /// based queries (the runtime value could be anything).
-abstract class GlobalTypeInferenceElementResult {
-  /// The inferred type when this result belongs to a parameter or field
-  /// element, null otherwise.
-  AbstractValue get type;
-}
+abstract class GlobalTypeInferenceMemberResult {
+  /// Deserializes a [GlobalTypeInferenceMemberResult] object from [source].
+  factory GlobalTypeInferenceMemberResult.readFromDataSource(
+          DataSource source, AbstractValueDomain abstractValueDomain) =
+      GlobalTypeInferenceMemberResultImpl.readFromDataSource;
 
-abstract class GlobalTypeInferenceMemberResult
-    extends GlobalTypeInferenceElementResult {
+  /// Serializes this [GlobalTypeInferenceMemberResult] to [sink].
+  void writeToDataSink(DataSink sink, AbstractValueDomain abstractValueDomain);
+
+  /// The inferred type when this result belongs to a field, null otherwise.
+  AbstractValue get type;
+
   /// Whether the member associated with this result is only called once in one
   /// location in the entire program.
   bool get isCalledOnce;
@@ -71,23 +77,35 @@
 /// Internal data used during type-inference to store intermediate results about
 /// a single element.
 abstract class GlobalTypeInferenceElementData {
+  /// Deserializes a [GlobalTypeInferenceElementData] object from [source].
+  factory GlobalTypeInferenceElementData.readFromDataSource(
+          DataSource source, AbstractValueDomain abstractValueDomain) =
+      KernelGlobalTypeInferenceElementData.readFromDataSource;
+
+  /// Serializes this [GlobalTypeInferenceElementData] to [sink].
+  void writeToDataSink(DataSink sink, AbstractValueDomain abstractValueDomain);
+
+  /// Compresses the inner representation by removing [AbstractValue] mappings
+  /// to `null`.
+  void compress();
+
   // TODO(johnniwinther): Remove this. Maybe split by access/invoke.
-  AbstractValue typeOfSend(ir.Node node);
-  AbstractValue typeOfGetter(ir.Node node);
+  AbstractValue typeOfSend(ir.TreeNode node);
+  AbstractValue typeOfGetter(ir.TreeNode node);
 
-  void setTypeMask(ir.Node node, AbstractValue mask);
+  void setTypeMask(ir.TreeNode node, AbstractValue mask);
 
-  AbstractValue typeOfIterator(ir.Node node);
+  AbstractValue typeOfIterator(ir.TreeNode node);
 
-  AbstractValue typeOfIteratorMoveNext(ir.Node node);
+  AbstractValue typeOfIteratorMoveNext(ir.TreeNode node);
 
-  AbstractValue typeOfIteratorCurrent(ir.Node node);
+  AbstractValue typeOfIteratorCurrent(ir.TreeNode node);
 
-  void setIteratorTypeMask(ir.Node node, AbstractValue mask);
+  void setIteratorTypeMask(ir.TreeNode node, AbstractValue mask);
 
-  void setMoveNextTypeMask(ir.Node node, AbstractValue mask);
+  void setMoveNextTypeMask(ir.TreeNode node, AbstractValue mask);
 
-  void setCurrentTypeMask(ir.Node node, AbstractValue mask);
+  void setCurrentTypeMask(ir.TreeNode node, AbstractValue mask);
 }
 
 /// API to interact with the global type-inference engine.
@@ -102,6 +120,20 @@
 /// return was inferred to be a "guaranteed type", that means, it is a type that
 /// we can prove to be correct for all executions of the program.
 abstract class GlobalTypeInferenceResults {
+  /// Deserializes a [GlobalTypeInferenceResults] object from [source].
+  factory GlobalTypeInferenceResults.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld, InferredData inferredData) {
+    bool isTrivial = source.readBool();
+    if (isTrivial) {
+      return new TrivialGlobalTypeInferenceResults(closedWorld);
+    }
+    return new GlobalTypeInferenceResultsImpl.readFromDataSource(
+        source, closedWorld, inferredData);
+  }
+
+  /// Serializes this [GlobalTypeInferenceResults] to [sink].
+  void writeToDataSink(DataSink sink);
+
   JClosedWorld get closedWorld;
 
   InferredData get inferredData;
@@ -158,6 +190,10 @@
 }
 
 class GlobalTypeInferenceResultsImpl implements GlobalTypeInferenceResults {
+  /// Tag used for identifying serialized [GlobalTypeInferenceResults] objects
+  /// in a debugging data stream.
+  static const String tag = 'global-type-inference-results';
+
   final JClosedWorld closedWorld;
   final InferredData inferredData;
   final GlobalTypeInferenceMemberResult _deadFieldResult;
@@ -166,7 +202,7 @@
 
   final Map<MemberEntity, GlobalTypeInferenceMemberResult> memberResults;
   final Map<Local, AbstractValue> parameterResults;
-  final Set<ir.Node> checkedForGrowableLists;
+  final Set<ir.TreeNode> checkedForGrowableLists;
   final Set<Selector> returnsListElementTypeSet;
 
   GlobalTypeInferenceResultsImpl(
@@ -182,6 +218,46 @@
             closedWorld.abstractValueDomain),
         _trivialParameterResult = closedWorld.abstractValueDomain.dynamicType;
 
+  factory GlobalTypeInferenceResultsImpl.readFromDataSource(
+      DataSource source, JClosedWorld closedWorld, InferredData inferredData) {
+    source.begin(tag);
+    Map<MemberEntity, GlobalTypeInferenceMemberResult> memberResults =
+        source.readMemberMap(() =>
+            new GlobalTypeInferenceMemberResult.readFromDataSource(
+                source, closedWorld.abstractValueDomain));
+    Map<Local, AbstractValue> parameterResults = source.readLocalMap(() =>
+        closedWorld.abstractValueDomain
+            .readAbstractValueFromDataSource(source));
+    Set<ir.TreeNode> checkedForGrowableLists = source.readTreeNodes().toSet();
+    Set<Selector> returnsListElementTypeSet =
+        source.readList(() => new Selector.readFromDataSource(source)).toSet();
+    source.end(tag);
+    return new GlobalTypeInferenceResultsImpl(
+        closedWorld,
+        inferredData,
+        memberResults,
+        parameterResults,
+        checkedForGrowableLists,
+        returnsListElementTypeSet);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.writeBool(false); // Is _not_ trivial.
+    sink.begin(tag);
+    sink.writeMemberMap(
+        memberResults,
+        (GlobalTypeInferenceMemberResult result) =>
+            result.writeToDataSink(sink, closedWorld.abstractValueDomain));
+    sink.writeLocalMap(
+        parameterResults,
+        (AbstractValue value) => closedWorld.abstractValueDomain
+            .writeAbstractValueToDataSink(sink, value));
+    sink.writeTreeNodes(checkedForGrowableLists);
+    sink.writeList(returnsListElementTypeSet,
+        (Selector selector) => selector.writeToDataSink(sink));
+    sink.end(tag);
+  }
+
   @override
   GlobalTypeInferenceMemberResult resultOfMember(MemberEntity member) {
     assert(
@@ -289,8 +365,12 @@
 
 class GlobalTypeInferenceMemberResultImpl
     implements GlobalTypeInferenceMemberResult {
+  /// Tag used for identifying serialized [GlobalTypeInferenceMemberResult]
+  /// objects in a debugging data stream.
+  static const String tag = 'global-type-inference-mebmer-result';
+
   final GlobalTypeInferenceElementData _data;
-  final Map<ir.Node, AbstractValue> _allocatedLists;
+  final Map<ir.TreeNode, AbstractValue> _allocatedLists;
   final AbstractValue returnType;
   final AbstractValue type;
   final bool throwsAlways;
@@ -300,6 +380,43 @@
       this._data, this._allocatedLists, this.returnType, this.type,
       {this.throwsAlways, this.isCalledOnce});
 
+  factory GlobalTypeInferenceMemberResultImpl.readFromDataSource(
+      DataSource source, AbstractValueDomain abstractValueDomain) {
+    source.begin(tag);
+    GlobalTypeInferenceElementData data = source.readValueOrNull(() {
+      return new GlobalTypeInferenceElementData.readFromDataSource(
+          source, abstractValueDomain);
+    });
+    Map<ir.TreeNode, AbstractValue> allocatedLists = source.readTreeNodeMap(
+        () => abstractValueDomain.readAbstractValueFromDataSource(source));
+    AbstractValue returnType =
+        abstractValueDomain.readAbstractValueFromDataSource(source);
+    AbstractValue type =
+        abstractValueDomain.readAbstractValueFromDataSource(source);
+    bool throwsAlways = source.readBool();
+    bool isCalledOnce = source.readBool();
+    source.end(tag);
+    return new GlobalTypeInferenceMemberResultImpl(
+        data, allocatedLists, returnType, type,
+        throwsAlways: throwsAlways, isCalledOnce: isCalledOnce);
+  }
+
+  void writeToDataSink(DataSink sink, AbstractValueDomain abstractValueDomain) {
+    sink.begin(tag);
+    sink.writeValueOrNull(_data, (GlobalTypeInferenceElementData data) {
+      data.writeToDataSink(sink, abstractValueDomain);
+    });
+    sink.writeTreeNodeMap(
+        _allocatedLists,
+        (AbstractValue value) =>
+            abstractValueDomain.writeAbstractValueToDataSink(sink, value));
+    abstractValueDomain.writeAbstractValueToDataSink(sink, returnType);
+    abstractValueDomain.writeAbstractValueToDataSink(sink, type);
+    sink.writeBool(throwsAlways);
+    sink.writeBool(isCalledOnce);
+    sink.end(tag);
+  }
+
   AbstractValue typeOfSend(ir.Node node) => _data?.typeOfSend(node);
   AbstractValue typeOfGetter(ir.Node node) => _data?.typeOfGetter(node);
   AbstractValue typeOfIterator(ir.Node node) => _data?.typeOfIterator(node);
@@ -324,6 +441,10 @@
             closedWorld.abstractValueDomain.dynamicType),
         _trivialParameterResult = closedWorld.abstractValueDomain.dynamicType;
 
+  void writeToDataSink(DataSink sink) {
+    sink.writeBool(true); // Is trivial.
+  }
+
   @override
   bool isFixedArrayCheckedForGrowable(ir.Node node) => false;
 
@@ -381,6 +502,11 @@
 
   @override
   bool get isCalledOnce => false;
+
+  void writeToDataSink(DataSink sink, AbstractValueDomain abstractValueDomain) {
+    throw new UnsupportedError(
+        "TrivialGlobalTypeInferenceMemberResult.writeToDataSink");
+  }
 }
 
 class DeadFieldGlobalTypeInferenceResult
@@ -424,6 +550,11 @@
 
   @override
   bool get isCalledOnce => false;
+
+  void writeToDataSink(DataSink sink, AbstractValueDomain abstractValueDomain) {
+    throw new UnsupportedError(
+        "DeadFieldGlobalTypeInferenceResult.writeToDataSink");
+  }
 }
 
 class DeadMethodGlobalTypeInferenceResult
@@ -467,4 +598,9 @@
 
   @override
   bool get isCalledOnce => false;
+
+  void writeToDataSink(DataSink sink, AbstractValueDomain abstractValueDomain) {
+    throw new UnsupportedError(
+        "DeadFieldGlobalTypeInferenceResult.writeToDataSink");
+  }
 }
diff --git a/pkg/compiler/lib/src/universe/call_structure.dart b/pkg/compiler/lib/src/universe/call_structure.dart
index 0ca8c4d..c574ac8 100644
--- a/pkg/compiler/lib/src/universe/call_structure.dart
+++ b/pkg/compiler/lib/src/universe/call_structure.dart
@@ -6,6 +6,7 @@
 
 import '../common/names.dart' show Names;
 import '../elements/entities.dart' show ParameterStructure;
+import '../serialization/serialization.dart';
 import '../util/util.dart';
 import 'selector.dart' show Selector;
 
@@ -14,6 +15,10 @@
 // TODO(johnniwinther): Should isGetter/isSetter be part of the call structure
 // instead of the selector?
 class CallStructure {
+  /// Tag used for identifying serialized [CallStructure] objects in a debugging
+  /// data stream.
+  static const String tag = 'call-structure';
+
   static const CallStructure NO_ARGS = const CallStructure.unnamed(0);
   static const CallStructure ONE_ARG = const CallStructure.unnamed(1);
   static const CallStructure TWO_ARGS = const CallStructure.unnamed(2);
@@ -43,6 +48,25 @@
         argumentCount, namedArguments, typeArgumentCount);
   }
 
+  /// Deserializes a [CallStructure] object from [source].
+  factory CallStructure.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    int argumentCount = source.readInt();
+    List<String> namedArguments = source.readStrings();
+    int typeArgumentCount = source.readInt();
+    source.end(tag);
+    return new CallStructure(argumentCount, namedArguments, typeArgumentCount);
+  }
+
+  /// Serializes this [CallStructure] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeInt(argumentCount);
+    sink.writeStrings(namedArguments);
+    sink.writeInt(typeArgumentCount);
+    sink.end(tag);
+  }
+
   CallStructure withTypeArgumentCount(int typeArgumentCount) =>
       new CallStructure(argumentCount, namedArguments, typeArgumentCount);
 
diff --git a/pkg/compiler/lib/src/universe/class_hierarchy.dart b/pkg/compiler/lib/src/universe/class_hierarchy.dart
index c351f1e..7032550 100644
--- a/pkg/compiler/lib/src/universe/class_hierarchy.dart
+++ b/pkg/compiler/lib/src/universe/class_hierarchy.dart
@@ -6,11 +6,20 @@
 import '../common_elements.dart';
 import '../elements/entities.dart';
 import '../elements/types.dart' show InterfaceType;
+import '../serialization/serialization.dart';
 import 'class_set.dart';
 
 // TODO(johnniwinther): Move more methods from `JClosedWorld` to
 // `ClassHierarchy`.
 abstract class ClassHierarchy {
+  /// Deserializes a [ClassHierarchy] object from [source].
+  factory ClassHierarchy.readFromDataSource(
+          DataSource source, CommonElements commonElements) =
+      ClassHierarchyImpl.readFromDataSource;
+
+  /// Serializes this [ClassHierarchy] to [sink].
+  void writeToDataSink(DataSink sink);
+
   /// Returns `true` if [cls] is either directly or indirectly instantiated.
   bool isInstantiated(ClassEntity cls);
 
@@ -141,6 +150,10 @@
 }
 
 class ClassHierarchyImpl implements ClassHierarchy {
+  /// Tag used for identifying serialized [ClassHierarchy] objects in a debugging
+  /// data stream.
+  static const String tag = 'class-hierarchy';
+
   final CommonElements _commonElements;
   final Map<ClassEntity, ClassHierarchyNode> _classHierarchyNodes;
   final Map<ClassEntity, ClassSet> _classSets;
@@ -148,6 +161,44 @@
   ClassHierarchyImpl(
       this._commonElements, this._classHierarchyNodes, this._classSets);
 
+  factory ClassHierarchyImpl.readFromDataSource(
+      DataSource source, CommonElements commonElements) {
+    source.begin(tag);
+    Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes =
+        new ClassHierarchyNodesMap();
+    int classCount = source.readInt();
+    for (int i = 0; i < classCount; i++) {
+      ClassHierarchyNode node = new ClassHierarchyNode.readFromDataSource(
+          source, classHierarchyNodes);
+      classHierarchyNodes[node.cls] = node;
+    }
+    Map<ClassEntity, ClassSet> classSets = {};
+    for (int i = 0; i < classCount; i++) {
+      ClassSet classSet =
+          new ClassSet.readFromDataSource(source, classHierarchyNodes);
+      classSets[classSet.cls] = classSet;
+    }
+
+    source.end(tag);
+    return new ClassHierarchyImpl(
+        commonElements, classHierarchyNodes, classSets);
+  }
+
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeInt(_classSets.length);
+    ClassHierarchyNode node =
+        getClassHierarchyNode(_commonElements.objectClass);
+    node.forEachSubclass((ClassEntity cls) {
+      getClassHierarchyNode(cls).writeToDataSink(sink);
+    }, ClassHierarchyNode.ALL);
+    ClassSet set = getClassSet(_commonElements.objectClass);
+    set.forEachSubclass((ClassEntity cls) {
+      getClassSet(cls).writeToDataSink(sink);
+    }, ClassHierarchyNode.ALL);
+    sink.end(tag);
+  }
+
   @override
   bool isInstantiated(ClassEntity cls) {
     ClassHierarchyNode node = _classHierarchyNodes[cls];
diff --git a/pkg/compiler/lib/src/universe/class_set.dart b/pkg/compiler/lib/src/universe/class_set.dart
index cddb446..6431ab6 100644
--- a/pkg/compiler/lib/src/universe/class_set.dart
+++ b/pkg/compiler/lib/src/universe/class_set.dart
@@ -9,6 +9,8 @@
 import 'package:front_end/src/api_unstable/dart2js.dart' show Link;
 
 import '../elements/entities.dart' show ClassEntity;
+import '../elements/indexed.dart' show IndexedClass;
+import '../serialization/serialization.dart';
 import '../util/enumset.dart' show EnumSet;
 
 /// Enum for the different kinds of instantiation of a class.
@@ -45,6 +47,10 @@
 ///       E
 ///
 class ClassHierarchyNode {
+  /// Tag used for identifying serialized [ClassHierarchyNode] objects in a
+  /// debugging data stream.
+  static const String tag = 'class-hierarchy-node';
+
   /// Enum set for selecting instantiated classes in
   /// [ClassHierarchyNode.subclassesByMask],
   /// [ClassHierarchyNode.subclassesByMask] and [ClassSet.subtypesByMask].
@@ -95,9 +101,9 @@
   }
 
   final ClassHierarchyNode parentNode;
-  final ClassEntity cls;
   final EnumSet<Instantiation> _mask = new EnumSet<Instantiation>.fromValues(
       const <Instantiation>[Instantiation.UNINSTANTIATED]);
+  final IndexedClass cls;
 
   final int hierarchyDepth;
 
@@ -208,6 +214,38 @@
     }
   }
 
+  /// Deserializes a [ClassHierarchyNode] object from [source].
+  factory ClassHierarchyNode.readFromDataSource(
+      DataSource source, Map<ClassEntity, ClassHierarchyNode> nodeMap) {
+    source.begin(tag);
+    IndexedClass cls = source.readClass();
+    ClassHierarchyNode parentNode;
+    IndexedClass superclass = source.readClassOrNull();
+    if (superclass != null) {
+      parentNode = nodeMap[superclass];
+      assert(parentNode != null,
+          "No ClassHierarchyNode for superclass $superclass.");
+    }
+    int maskValue = source.readInt();
+    int hierarchyDepth = source.readInt();
+    int instantiatedSubclassCount = source.readInt();
+    source.end(tag);
+    return new ClassHierarchyNode(parentNode, cls, hierarchyDepth)
+      .._instantiatedSubclassCount = instantiatedSubclassCount
+      .._mask.value = maskValue;
+  }
+
+  /// Serializes this [ClassHierarchyNode] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeClass(cls);
+    sink.writeClassOrNull(parentNode?.cls);
+    sink.writeInt(_mask.value);
+    sink.writeInt(hierarchyDepth);
+    sink.writeInt(_instantiatedSubclassCount);
+    sink.end(tag);
+  }
+
   /// Adds [subclass] as a direct subclass of [cls].
   void addDirectSubclass(ClassHierarchyNode subclass) {
     assert(!_directSubclasses.contains(subclass));
@@ -454,7 +492,7 @@
 ///      A  ->  [C, D, F]
 ///
 /// The subtypes `B` and `E` are not directly modeled because they are implied
-/// by their subclass relation to `A` and `D`, repectively. This can be seen
+/// by their subclass relation to `A` and `D`, respectively. This can be seen
 /// if we expand the subclass subtrees:
 ///
 ///      A  ->  [C, D, F]
@@ -462,6 +500,10 @@
 ///      B          E
 ///
 class ClassSet {
+  /// Tag used for identifying serialized [ClassSet] objects in a debugging
+  /// data stream.
+  static const String tag = 'class-set';
+
   final ClassHierarchyNode node;
   ClassEntity _leastUpperInstantiatedSubtype;
 
@@ -501,6 +543,36 @@
 
   ClassSet(this.node);
 
+  /// Deserializes a [ClassSet] object from [source].
+  factory ClassSet.readFromDataSource(
+      DataSource source, Map<ClassEntity, ClassHierarchyNode> nodeMap) {
+    source.begin(tag);
+    ClassHierarchyNode node = nodeMap[source.readClass()];
+    List<ClassHierarchyNode> subtypes = source.readList(() {
+      return nodeMap[source.readClass()];
+    }, emptyAsNull: true);
+    List<ClassHierarchyNode> mixinApplications = source.readList(() {
+      return nodeMap[source.readClass()];
+    }, emptyAsNull: true);
+    source.end(tag);
+    return new ClassSet(node)
+      .._subtypes = subtypes
+      .._mixinApplications = mixinApplications;
+  }
+
+  /// Serializes this [ClassSet] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeClass(node.cls);
+    sink.writeList(_subtypes, (ClassHierarchyNode node) {
+      sink.writeClass(node.cls);
+    }, allowNull: true);
+    sink.writeList(_mixinApplications, (ClassHierarchyNode node) {
+      sink.writeClass(node.cls);
+    }, allowNull: true);
+    sink.end(tag);
+  }
+
   ClassEntity get cls => node.cls;
 
   /// Returns `true` if `other.cls` is a subclass of [cls].
@@ -968,7 +1040,7 @@
 /// Singleton map implemented as a field on the key.
 class ClassHierarchyNodesMap extends MapBase<ClassEntity, ClassHierarchyNode> {
   ClassHierarchyNode operator [](Object cls) {
-    // TOOD(sra): Change the key type to `covariant ClassHierarchyNodesMapKey`.
+    // TODO(sra): Change the key type to `covariant ClassHierarchyNodesMapKey`.
     if (cls is ClassHierarchyNodesMapKey) {
       return cls._classHierarchyNode;
     }
@@ -976,7 +1048,7 @@
   }
 
   operator []=(Object cls, ClassHierarchyNode node) {
-    // TOOD(sra): Change the key type to `covariant ClassHierarchyNodesMapKey`.
+    // TODO(sra): Change the key type to `covariant ClassHierarchyNodesMapKey`.
     if (cls is ClassHierarchyNodesMapKey) {
       cls._classHierarchyNode = node;
       return;
diff --git a/pkg/compiler/lib/src/universe/codegen_world_builder.dart b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
index 10de2ff..5869501 100644
--- a/pkg/compiler/lib/src/universe/codegen_world_builder.dart
+++ b/pkg/compiler/lib/src/universe/codegen_world_builder.dart
@@ -90,8 +90,6 @@
 
 class CodegenWorldBuilderImpl extends WorldBuilderBase
     implements CodegenWorldBuilder {
-  final ElementEnvironment _elementEnvironment;
-  final NativeBasicData _nativeBasicData;
   final JClosedWorld _world;
 
   /// The set of all directly instantiated classes, that is, classes with a
@@ -169,18 +167,18 @@
   final Set<ConstantValue> _constantValues = new Set<ConstantValue>();
 
   final JsToWorldBuilder _elementMap;
-  final GlobalLocalsMap _globalLocalsMap;
 
   final Set<DartType> _constTypeLiterals = new Set<DartType>();
   final Set<DartType> _liveTypeArguments = new Set<DartType>();
 
   CodegenWorldBuilderImpl(
-      this._elementMap,
-      this._globalLocalsMap,
-      this._elementEnvironment,
-      this._nativeBasicData,
-      this._world,
-      this.selectorConstraintsStrategy);
+      this._elementMap, this._world, this.selectorConstraintsStrategy);
+
+  ElementEnvironment get _elementEnvironment => _world.elementEnvironment;
+
+  NativeBasicData get _nativeBasicData => _world.nativeData;
+
+  GlobalLocalsMap get _globalLocalsMap => _world.globalLocalsMap;
 
   Iterable<ClassEntity> get instantiatedClasses => _processedClasses.keys
       .where((cls) => _processedClasses[cls].isInstantiated);
diff --git a/pkg/compiler/lib/src/universe/selector.dart b/pkg/compiler/lib/src/universe/selector.dart
index 34aaf06..acc7100 100644
--- a/pkg/compiler/lib/src/universe/selector.dart
+++ b/pkg/compiler/lib/src/universe/selector.dart
@@ -10,6 +10,7 @@
 import '../elements/entity_utils.dart' as utils;
 import '../elements/names.dart';
 import '../elements/operators.dart';
+import '../serialization/serialization.dart';
 import '../util/util.dart' show Hashing;
 import 'call_structure.dart' show CallStructure;
 
@@ -40,6 +41,10 @@
 }
 
 class Selector {
+  /// Tag used for identifying serialized [Selector] objects in a debugging
+  /// data stream.
+  static const String tag = 'selector';
+
   final SelectorKind kind;
   final Name memberName;
   final CallStructure callStructure;
@@ -192,6 +197,30 @@
       Names.genericInstantiation,
       new CallStructure(0, null, typeArguments));
 
+  /// Deserializes a [Selector] object from [source].
+  factory Selector.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    SelectorKind kind = source.readEnum(SelectorKind.values);
+    bool isSetter = source.readBool();
+    LibraryEntity library = source.readLibraryOrNull();
+    String text = source.readString();
+    CallStructure callStructure = new CallStructure.readFromDataSource(source);
+    source.end(tag);
+    return new Selector(
+        kind, new Name(text, library, isSetter: isSetter), callStructure);
+  }
+
+  /// Serializes this [Selector] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeEnum(kind);
+    sink.writeBool(memberName.isSetter);
+    sink.writeLibraryOrNull(memberName.library);
+    sink.writeString(memberName.text);
+    callStructure.writeToDataSink(sink);
+    sink.end(tag);
+  }
+
   bool get isGetter => kind == SelectorKind.GETTER;
   bool get isSetter => kind == SelectorKind.SETTER;
   bool get isCall => kind == SelectorKind.CALL;
diff --git a/pkg/compiler/lib/src/universe/side_effects.dart b/pkg/compiler/lib/src/universe/side_effects.dart
index 81d513f..aac589a 100644
--- a/pkg/compiler/lib/src/universe/side_effects.dart
+++ b/pkg/compiler/lib/src/universe/side_effects.dart
@@ -5,8 +5,13 @@
 library universe.side_effects;
 
 import '../elements/entities.dart';
+import '../serialization/serialization.dart';
 
 class SideEffects {
+  /// Tag used for identifying serialized [SideEffects] objects in a debugging
+  /// data stream.
+  static const String tag = 'side-effects';
+
   // Changes flags.
   static const int FLAG_CHANGES_INDEX = 0;
   static const int FLAG_CHANGES_INSTANCE_PROPERTY = FLAG_CHANGES_INDEX + 1;
@@ -37,6 +42,21 @@
 
   SideEffects.fromFlags(this._flags);
 
+  /// Deserializes a [SideEffects] object from [source].
+  factory SideEffects.readFromDataSource(DataSource source) {
+    source.begin(tag);
+    int flags = source.readInt();
+    source.end(tag);
+    return new SideEffects.fromFlags(flags);
+  }
+
+  /// Serializes this [SideEffects] to [sink].
+  void writeToDataSink(DataSink sink) {
+    sink.begin(tag);
+    sink.writeInt(_flags);
+    sink.end(tag);
+  }
+
   bool operator ==(other) => _flags == other._flags;
 
   int get hashCode => throw new UnsupportedError('SideEffects.hashCode');
diff --git a/pkg/compiler/lib/src/util/enumset.dart b/pkg/compiler/lib/src/util/enumset.dart
index 31fef3c..97df1a4 100644
--- a/pkg/compiler/lib/src/util/enumset.dart
+++ b/pkg/compiler/lib/src/util/enumset.dart
@@ -32,6 +32,10 @@
   /// The bit mask of the shifted indices for the enum values in this set.
   int get value;
 
+  /// Sets the enum values in this set through a bit mask of the shifted enum
+  /// value indices.
+  void set value(int mask);
+
   /// Adds [enumValue] to this set.
   void add(E enumValue);
 
@@ -128,6 +132,11 @@
   int get value => _value;
 
   @override
+  void set value(int mask) {
+    _value = mask;
+  }
+
+  @override
   void add(E enumValue) {
     _value |= 1 << (enumValue as dynamic).index;
   }
@@ -173,6 +182,10 @@
     return new _ConstEnumSet(value);
   }
 
+  void set value(int mask) {
+    throw new UnsupportedError('EnumSet.value=');
+  }
+
   @override
   void add(E enumValue) {
     throw new UnsupportedError('EnumSet.add');
diff --git a/pkg/compiler/lib/src/world.dart b/pkg/compiler/lib/src/world.dart
index 391e227..cb83743 100644
--- a/pkg/compiler/lib/src/world.dart
+++ b/pkg/compiler/lib/src/world.dart
@@ -6,6 +6,7 @@
 
 import 'package:front_end/src/api_unstable/dart2js.dart' show Link;
 
+import 'closure.dart';
 import 'common.dart';
 import 'common/names.dart';
 import 'common_elements.dart'
@@ -15,6 +16,7 @@
         KCommonElements,
         KElementEnvironment;
 import 'constants/constant_system.dart';
+import 'deferred_load.dart';
 import 'diagnostics/diagnostic_listener.dart';
 import 'elements/entities.dart';
 import 'elements/types.dart';
@@ -27,8 +29,10 @@
 import 'js_backend/no_such_method_registry.dart' show NoSuchMethodData;
 import 'js_backend/runtime_types.dart'
     show RuntimeTypesNeed, RuntimeTypesNeedBuilder;
+import 'js_model/locals.dart';
 import 'ordered_typeset.dart';
 import 'options.dart';
+import 'js_emitter/sorter.dart';
 import 'types/abstract_value_domain.dart';
 import 'universe/class_hierarchy.dart';
 import 'universe/class_set.dart';
@@ -80,6 +84,14 @@
 
   AnnotationsData get annotationsData;
 
+  GlobalLocalsMap get globalLocalsMap;
+  ClosureData get closureDataLookup;
+
+  OutputUnitData get outputUnitData;
+
+  /// The [Sorter] used for sorting elements in the generated code.
+  Sorter get sorter;
+
   /// Returns `true` if [cls] is implemented by an instantiated class.
   bool isImplemented(ClassEntity cls);
 
@@ -242,9 +254,6 @@
 
   final Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses;
 
-  final Map<ClassEntity, ClassHierarchyNode> _classHierarchyNodes;
-  final Map<ClassEntity, ClassSet> _classSets;
-
   final Map<ClassEntity, Map<ClassEntity, bool>> _subtypeCoveredByCache =
       <ClassEntity, Map<ClassEntity, bool>>{};
 
@@ -253,7 +262,7 @@
   final JCommonElements commonElements;
 
   // TODO(johnniwinther): Can this be derived from [ClassSet]s?
-  final Set<ClassEntity> _implementedClasses;
+  final Set<ClassEntity> implementedClasses;
 
   final Iterable<MemberEntity> liveInstanceMembers;
 
@@ -275,21 +284,14 @@
       this.interceptorData,
       this.backendUsage,
       this.noSuchMethodData,
-      Set<ClassEntity> implementedClasses,
+      this.implementedClasses,
       this.liveNativeClasses,
       this.liveInstanceMembers,
       this.assignedInstanceMembers,
       this.processedMembers,
       this.mixinUses,
       this.typesImplementedBySubclasses,
-      Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
-      Map<ClassEntity, ClassSet> classSets,
-      AbstractValueStrategy abstractValueStrategy)
-      : this._implementedClasses = implementedClasses,
-        this._classHierarchyNodes = classHierarchyNodes,
-        this._classSets = classSets,
-        classHierarchy = new ClassHierarchyImpl(
-            commonElements, classHierarchyNodes, classSets) {}
+      this.classHierarchy);
 
   OrderedTypeSet getOrderedTypeSet(covariant ClassEntity cls);
 
@@ -305,7 +307,7 @@
 
   /// Returns `true` if [cls] is implemented by an instantiated class.
   bool isImplemented(ClassEntity cls) {
-    return _implementedClasses.contains(cls);
+    return implementedClasses.contains(cls);
   }
 
   @override
@@ -313,7 +315,7 @@
     if (nativeData.isJsInteropClass(cls)) {
       return commonElements.jsJavaScriptObjectClass;
     }
-    ClassHierarchyNode hierarchy = _classHierarchyNodes[cls];
+    ClassHierarchyNode hierarchy = classHierarchy.getClassHierarchyNode(cls);
     return hierarchy != null
         ? hierarchy.getLubOfInstantiatedSubclasses()
         : null;
@@ -324,7 +326,7 @@
     if (nativeData.isJsInteropClass(cls)) {
       return commonElements.jsJavaScriptObjectClass;
     }
-    ClassSet classSet = _classSets[cls];
+    ClassSet classSet = classHierarchy.getClassSet(cls);
     return classSet != null ? classSet.getLubOfInstantiatedSubtypes() : null;
   }
 
@@ -396,7 +398,7 @@
       return result == IterationStep.STOP;
     }
 
-    ClassSet classSet = getClassSet(base);
+    ClassSet classSet = classHierarchy.getClassSet(base);
     assert(classSet != null, failedAt(base, "No class set for $base."));
     ClassHierarchyNode node = classSet.node;
     if (query == ClassQuery.EXACT) {
@@ -500,24 +502,6 @@
     return false;
   }
 
-  /// Returns [ClassHierarchyNode] for [cls] used to model the class hierarchies
-  /// of known classes.
-  ///
-  /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [JClosedWorld].
-  ClassHierarchyNode getClassHierarchyNode(ClassEntity cls) {
-    return _classHierarchyNodes[cls];
-  }
-
-  /// Returns [ClassSet] for [cls] used to model the extends and implements
-  /// relations of known classes.
-  ///
-  /// This method is only provided for testing. For queries on classes, use the
-  /// methods defined in [JClosedWorld].
-  ClassSet getClassSet(ClassEntity cls) {
-    return _classSets[cls];
-  }
-
   void _ensureFunctionSet() {
     if (_allFunctions == null) {
       // [FunctionSet] is created lazily because it is not used when we switch
@@ -592,16 +576,6 @@
     }
     return false;
   }
-
-  /// Should only be called by subclasses.
-  void addClassHierarchyNode(ClassEntity cls, ClassHierarchyNode node) {
-    _classHierarchyNodes[cls] = node;
-  }
-
-  /// Should only be called by subclasses.
-  void addClassSet(ClassEntity cls, ClassSet classSet) {
-    _classSets[cls] = classSet;
-  }
 }
 
 abstract class ClosedWorldRtiNeedMixin implements KClosedWorld {
diff --git a/pkg/compiler/tool/generate_kernel.dart b/pkg/compiler/tool/generate_kernel.dart
index 38ca58a..f610317 100644
--- a/pkg/compiler/tool/generate_kernel.dart
+++ b/pkg/compiler/tool/generate_kernel.dart
@@ -25,7 +25,7 @@
 main(List<String> args) async {
   ArgResults flags = _argParser.parse(args);
   var options = new CompilerOptions()
-    ..target = new Dart2jsTarget("dart2js", new TargetFlags())
+    ..target = new Dart2jsTarget("dart2js", new TargetFlags(legacyMode: true))
     ..packagesFileUri = Uri.base.resolve('.packages')
     ..setExitCodeOnProblem = true
     ..linkedDependencies = [
diff --git a/pkg/compiler/tool/status_files/update_all.dart b/pkg/compiler/tool/status_files/update_all.dart
index 09310ab..cc05227 100644
--- a/pkg/compiler/tool/status_files/update_all.dart
+++ b/pkg/compiler/tool/status_files/update_all.dart
@@ -17,9 +17,6 @@
 const List<String> nonStrongSuites = const <String>[
   'dart2js_native',
   'dart2js_extra',
-  'language',
-  'corelib',
-  'html',
 ];
 
 main(List<String> args) {
diff --git a/pkg/compiler/tool/status_files/update_from_log.dart b/pkg/compiler/tool/status_files/update_from_log.dart
index 8f816d5..26a6dd0 100644
--- a/pkg/compiler/tool/status_files/update_from_log.dart
+++ b/pkg/compiler/tool/status_files/update_from_log.dart
@@ -45,15 +45,12 @@
 };
 
 final dart2jsStatusFiles = {
-  'language': 'tests/language/language_dart2js.status',
-  'corelib': 'tests/corelib/corelib.status',
   'language_2': 'tests/language_2/language_2_dart2js.status',
   // TODO(sigmund,rnystrom): update when corelib_2 gets split into multiple
   // status files.
   'corelib_2': 'tests/corelib_2/corelib_2.status',
   'dart2js_extra': 'tests/compiler/dart2js_extra/dart2js_extra.status',
   'dart2js_native': 'tests/compiler/dart2js_native/dart2js_native.status',
-  'html': 'tests/html/html.status',
 };
 
 main(args) {
diff --git a/pkg/dart_internal/pubspec.yaml b/pkg/dart_internal/pubspec.yaml
index 945aaa1..f44d167 100644
--- a/pkg/dart_internal/pubspec.yaml
+++ b/pkg/dart_internal/pubspec.yaml
@@ -1,5 +1,5 @@
 name: dart_internal
-version: 0.1.1
+version: 0.1.2
 author: "Dart Team <misc@dartlang.org>"
 homepage: http://www.dartlang.org
 description: >
@@ -16,4 +16,4 @@
 environment:
   # Restrict the upper bound so that we can remove support for this in a later
   # version of the SDK without it being a breaking change.
-  sdk: ">=2.0.0-dev.12.0 <2.1.0"
+  sdk: ">=2.0.0-dev.12.0 <2.2.0"
diff --git a/pkg/dartfix/.gitignore b/pkg/dartfix/.gitignore
new file mode 100644
index 0000000..113d783
--- /dev/null
+++ b/pkg/dartfix/.gitignore
@@ -0,0 +1,4 @@
+*.iml
+.dart_tool
+.packages
+pubspec.lock
diff --git a/pkg/dartfix/analysis_options.yaml b/pkg/dartfix/analysis_options.yaml
new file mode 100644
index 0000000..e36185e
--- /dev/null
+++ b/pkg/dartfix/analysis_options.yaml
@@ -0,0 +1,6 @@
+linter:
+  rules:
+    - empty_constructor_bodies
+    - empty_statements
+    - unnecessary_brace_in_string_interps
+    - valid_regexps
diff --git a/pkg/dartfix/bin/fix.dart b/pkg/dartfix/bin/fix.dart
new file mode 100644
index 0000000..da176a1
--- /dev/null
+++ b/pkg/dartfix/bin/fix.dart
@@ -0,0 +1,14 @@
+#!/usr/bin/env dart
+// 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:dartfix/src/driver.dart';
+
+/// The entry point for dartfix.
+main(List<String> args) async {
+  Driver starter = new Driver();
+
+  // Wait for the starter to complete.
+  await starter.start(args);
+}
diff --git a/pkg/dartfix/lib/src/context.dart b/pkg/dartfix/lib/src/context.dart
new file mode 100644
index 0000000..0869830
--- /dev/null
+++ b/pkg/dartfix/lib/src/context.dart
@@ -0,0 +1,22 @@
+// 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' as io;
+
+/// The context for dartfix.
+class Context {
+  String get workingDir => io.Directory.current.path;
+
+  bool exists(String filePath) =>
+      io.FileSystemEntity.typeSync(filePath) !=
+      io.FileSystemEntityType.notFound;
+
+  void exit(int code) {
+    io.exit(code);
+  }
+
+  bool isDirectory(String filePath) =>
+      io.FileSystemEntity.typeSync(filePath) ==
+      io.FileSystemEntityType.directory;
+}
diff --git a/pkg/dartfix/lib/src/driver.dart b/pkg/dartfix/lib/src/driver.dart
new file mode 100644
index 0000000..8e0706e
--- /dev/null
+++ b/pkg/dartfix/lib/src/driver.dart
@@ -0,0 +1,367 @@
+// 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:async';
+import 'dart:io' show File, Directory;
+
+import 'package:analysis_server/protocol/protocol_constants.dart';
+import 'package:analysis_server/protocol/protocol_generated.dart';
+import 'package:analysis_server/src/protocol/protocol_internal.dart';
+import 'package:analyzer_plugin/protocol/protocol_common.dart';
+import 'package:cli_util/cli_logging.dart';
+import 'package:dartfix/src/context.dart';
+import 'package:dartfix/src/options.dart';
+import 'package:dartfix/src/server.dart';
+import 'package:path/path.dart' as path;
+
+class Driver {
+  Context context;
+  Logger logger;
+  Server server;
+
+  Completer serverConnected;
+  Completer analysisComplete;
+  bool force;
+  bool overwrite;
+  List<String> targets;
+
+  Ansi get ansi => logger.ansi;
+
+  bool get runAnalysisServerFromSource {
+    // Automatically run analysis server from source
+    // if this command line tool is being run from source
+    // within the source tree.
+    return Server.findRoot() != null;
+  }
+
+  Future start(List<String> args) async {
+    final Options options = Options.parse(args);
+
+    force = options.force;
+    overwrite = options.overwrite;
+    targets = options.targets;
+
+    context = options.context;
+    logger = options.logger;
+
+    EditDartfixResult result;
+
+    await startServer(options);
+
+    bool normalShutdown = false;
+    try {
+      final progress = await setupAnalysis(options);
+      result = await requestFixes(options, progress);
+      normalShutdown = true;
+    } finally {
+      try {
+        await stopServer(server);
+      } catch (_) {
+        if (normalShutdown) {
+          rethrow;
+        }
+      }
+    }
+    if (result != null) {
+      applyFixes(result);
+    }
+  }
+
+  Future startServer(Options options) async {
+    server = new Server(logger);
+    const connectTimeout = const Duration(seconds: 15);
+    serverConnected = new Completer();
+    if (options.verbose) {
+      server.debugStdio();
+    }
+    logger.trace('Starting...');
+    await server.start(
+        sdkPath: options.sdkPath, useSnapshot: !runAnalysisServerFromSource);
+    server.listenToOutput(dispatchNotification);
+    return serverConnected.future.timeout(connectTimeout, onTimeout: () {
+      logger.stderr('Failed to connect to server');
+      context.exit(15);
+    });
+  }
+
+  Future<Progress> setupAnalysis(Options options) async {
+    final progress = logger.progress('${ansi.emphasized('Calculating fixes')}');
+    logger.trace('');
+    logger.trace('Setup analysis');
+    await server.send(SERVER_REQUEST_SET_SUBSCRIPTIONS,
+        new ServerSetSubscriptionsParams([ServerService.STATUS]).toJson());
+    await server.send(
+        ANALYSIS_REQUEST_SET_ANALYSIS_ROOTS,
+        new AnalysisSetAnalysisRootsParams(
+          options.targets,
+          const [],
+        ).toJson());
+    return progress;
+  }
+
+  Future<EditDartfixResult> requestFixes(
+      Options options, Progress progress) async {
+    logger.trace('Requesting fixes');
+    analysisComplete = new Completer();
+    Map<String, dynamic> json = await server.send(
+        EDIT_REQUEST_DARTFIX, new EditDartfixParams(options.targets).toJson());
+    await analysisComplete?.future;
+    progress.finish(showTiming: true);
+    ResponseDecoder decoder = new ResponseDecoder(null);
+    return EditDartfixResult.fromJson(decoder, 'result', json);
+  }
+
+  Future stopServer(Server server) async {
+    logger.trace('Stopping...');
+    const timeout = const Duration(seconds: 5);
+    await server.send(SERVER_REQUEST_SHUTDOWN, null).timeout(timeout,
+        onTimeout: () {
+      // fall through to wait for exit.
+    });
+    await server.exitCode.timeout(timeout, onTimeout: () {
+      return server.kill('server failed to exit');
+    });
+  }
+
+  Future applyFixes(EditDartfixResult result) async {
+    showDescriptions('Recommended changes', result.descriptionOfFixes);
+    showDescriptions(
+      'Recommended changes that cannot not be automatically applied',
+      result.otherRecommendations,
+    );
+    if (result.descriptionOfFixes.isEmpty) {
+      logger.stdout('');
+      logger.stdout(result.otherRecommendations.isNotEmpty
+          ? 'No recommended changes that cannot be automatically applied.'
+          : 'No recommended changes.');
+      return;
+    }
+    logger.stdout('');
+    logger.stdout(ansi.emphasized('Files to be changed:'));
+    for (SourceFileEdit fileEdit in result.fixes) {
+      logger.stdout('  ${_relativePath(fileEdit.file)}');
+    }
+    if (shouldApplyChanges(result)) {
+      for (SourceFileEdit fileEdit in result.fixes) {
+        final file = new File(fileEdit.file);
+        String code = await file.readAsString();
+        for (SourceEdit edit in fileEdit.edits) {
+          code = edit.apply(code);
+        }
+        await file.writeAsString(code);
+      }
+      logger.stdout('Changes applied.');
+    }
+  }
+
+  void showDescriptions(String title, List<String> descriptions) {
+    if (descriptions.isNotEmpty) {
+      logger.stdout('');
+      logger.stdout(ansi.emphasized('$title:'));
+      List<String> sorted = new List.from(descriptions)..sort();
+      for (String line in sorted) {
+        logger.stdout('  $line');
+      }
+    }
+  }
+
+  bool shouldApplyChanges(EditDartfixResult result) {
+    logger.stdout('');
+    if (result.hasErrors) {
+      logger.stdout('WARNING: The analyzed source contains errors'
+          ' that may affect the accuracy of these changes.');
+      logger.stdout('');
+      if (!force) {
+        logger.stdout('Rerun with --$forceOption to apply these changes.');
+        return false;
+      }
+    } else if (!overwrite && !force) {
+      logger.stdout('Rerun with --$overwriteOption to apply these changes.');
+      return false;
+    }
+    return true;
+  }
+
+  /// Dispatch the notification named [event], and containing parameters
+  /// [params], to the appropriate stream.
+  void dispatchNotification(String event, params) {
+    ResponseDecoder decoder = new ResponseDecoder(null);
+    switch (event) {
+      case SERVER_NOTIFICATION_CONNECTED:
+        onServerConnected(
+            new ServerConnectedParams.fromJson(decoder, 'params', params));
+        break;
+      case SERVER_NOTIFICATION_ERROR:
+        onServerError(
+            new ServerErrorParams.fromJson(decoder, 'params', params));
+        break;
+      case SERVER_NOTIFICATION_STATUS:
+        onServerStatus(
+            new ServerStatusParams.fromJson(decoder, 'params', params));
+        break;
+//      case ANALYSIS_NOTIFICATION_ANALYZED_FILES:
+//        outOfTestExpect(params, isAnalysisAnalyzedFilesParams);
+//        _onAnalysisAnalyzedFiles.add(new AnalysisAnalyzedFilesParams.fromJson(
+//            decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_CLOSING_LABELS:
+//        outOfTestExpect(params, isAnalysisClosingLabelsParams);
+//        _onAnalysisClosingLabels.add(new AnalysisClosingLabelsParams.fromJson(
+//            decoder, 'params', params));
+//        break;
+      case ANALYSIS_NOTIFICATION_ERRORS:
+        onAnalysisErrors(
+            new AnalysisErrorsParams.fromJson(decoder, 'params', params));
+        break;
+//      case ANALYSIS_NOTIFICATION_FLUSH_RESULTS:
+//        outOfTestExpect(params, isAnalysisFlushResultsParams);
+//        _onAnalysisFlushResults.add(
+//            new AnalysisFlushResultsParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_FOLDING:
+//        outOfTestExpect(params, isAnalysisFoldingParams);
+//        _onAnalysisFolding
+//            .add(new AnalysisFoldingParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_HIGHLIGHTS:
+//        outOfTestExpect(params, isAnalysisHighlightsParams);
+//        _onAnalysisHighlights.add(
+//            new AnalysisHighlightsParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_IMPLEMENTED:
+//        outOfTestExpect(params, isAnalysisImplementedParams);
+//        _onAnalysisImplemented.add(
+//            new AnalysisImplementedParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_INVALIDATE:
+//        outOfTestExpect(params, isAnalysisInvalidateParams);
+//        _onAnalysisInvalidate.add(
+//            new AnalysisInvalidateParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_NAVIGATION:
+//        outOfTestExpect(params, isAnalysisNavigationParams);
+//        _onAnalysisNavigation.add(
+//            new AnalysisNavigationParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_OCCURRENCES:
+//        outOfTestExpect(params, isAnalysisOccurrencesParams);
+//        _onAnalysisOccurrences.add(
+//            new AnalysisOccurrencesParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_OUTLINE:
+//        outOfTestExpect(params, isAnalysisOutlineParams);
+//        _onAnalysisOutline
+//            .add(new AnalysisOutlineParams.fromJson(decoder, 'params', params));
+//        break;
+//      case ANALYSIS_NOTIFICATION_OVERRIDES:
+//        outOfTestExpect(params, isAnalysisOverridesParams);
+//        _onAnalysisOverrides.add(
+//            new AnalysisOverridesParams.fromJson(decoder, 'params', params));
+//        break;
+//      case COMPLETION_NOTIFICATION_RESULTS:
+//        outOfTestExpect(params, isCompletionResultsParams);
+//        _onCompletionResults.add(
+//            new CompletionResultsParams.fromJson(decoder, 'params', params));
+//        break;
+//      case SEARCH_NOTIFICATION_RESULTS:
+//        outOfTestExpect(params, isSearchResultsParams);
+//        _onSearchResults
+//            .add(new SearchResultsParams.fromJson(decoder, 'params', params));
+//        break;
+//      case EXECUTION_NOTIFICATION_LAUNCH_DATA:
+//        outOfTestExpect(params, isExecutionLaunchDataParams);
+//        _onExecutionLaunchData.add(
+//            new ExecutionLaunchDataParams.fromJson(decoder, 'params', params));
+//        break;
+//      case FLUTTER_NOTIFICATION_OUTLINE:
+//        outOfTestExpect(params, isFlutterOutlineParams);
+//        _onFlutterOutline
+//            .add(new FlutterOutlineParams.fromJson(decoder, 'params', params));
+//        break;
+//      default:
+//        printAndFail('Unexpected notification: $event');
+//        break;
+    }
+  }
+
+  void onAnalysisErrors(AnalysisErrorsParams params) {
+    List<AnalysisError> errors = params.errors;
+    bool foundAtLeastOneError = false;
+    if (errors.isNotEmpty && isTarget(params.file)) {
+      for (AnalysisError error in errors) {
+        if (!shouldFilterError(error)) {
+          if (!foundAtLeastOneError) {
+            foundAtLeastOneError = true;
+            logger.stdout('${_relativePath(params.file)}:');
+          }
+          Location loc = error.location;
+          logger.stdout('  ${_toSentenceFragment(error.message)}'
+              ' • ${loc.startLine}:${loc.startColumn}');
+        }
+      }
+    }
+  }
+
+  void onServerConnected(ServerConnectedParams params) {
+    logger.trace('Connected to server');
+    serverConnected.complete();
+  }
+
+  void onServerError(ServerErrorParams params) async {
+    try {
+      await stopServer(server);
+    } catch (e) {
+      // ignored
+    }
+    final message = new StringBuffer('Server Error: ')..writeln(params.message);
+    if (params.stackTrace != null) {
+      message.writeln(params.stackTrace);
+    }
+    logger.stderr(message.toString());
+    context.exit(15);
+  }
+
+  void onServerStatus(ServerStatusParams params) {
+    if (params.analysis != null && !params.analysis.isAnalyzing) {
+      logger.trace('Analysis complete');
+      analysisComplete?.complete();
+      analysisComplete = null;
+    }
+  }
+
+  bool shouldFilterError(AnalysisError error) {
+    // Do not show TODOs or errors that will be automatically fixed.
+
+    // TODO(danrubel): Rather than checking the error.code with
+    // specific strings, add something to the error indicating that
+    // it will be automatically fixed by edit.dartfix.
+    return error.type.name == 'TODO' ||
+        error.code == 'wrong_number_of_type_arguments_constructor';
+  }
+
+  bool isTarget(String filePath) {
+    for (String target in targets) {
+      if (filePath == target || path.isWithin(target, filePath)) {
+        return true;
+      }
+    }
+    return false;
+  }
+}
+
+String _relativePath(String filePath) {
+  final String currentPath = Directory.current.absolute.path;
+
+  if (filePath.startsWith(currentPath)) {
+    return filePath.substring(currentPath.length + 1);
+  } else {
+    return filePath;
+  }
+}
+
+String _toSentenceFragment(String message) {
+  return message.endsWith('.')
+      ? message.substring(0, message.length - 1)
+      : message;
+}
diff --git a/pkg/dartfix/lib/src/options.dart b/pkg/dartfix/lib/src/options.dart
new file mode 100644
index 0000000..70af515
--- /dev/null
+++ b/pkg/dartfix/lib/src/options.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 'package:analyzer/src/util/sdk.dart';
+import 'package:dartfix/src/context.dart';
+import 'package:args/args.dart';
+import 'package:cli_util/cli_logging.dart';
+import 'package:path/path.dart' as path;
+
+/// Command line options for `dartfix`.
+class Options {
+  final Context context;
+  Logger logger;
+
+  List<String> targets;
+  String sdkPath;
+  final bool force;
+  final bool overwrite;
+  final bool verbose;
+  final bool useColor;
+
+  static Options parse(List<String> args, {Context context, Logger logger}) {
+    final parser = new ArgParser(allowTrailingOptions: true)
+      ..addFlag(overwriteOption,
+          abbr: 'w',
+          help: 'Overwrite files with the recommended changes.',
+          defaultsTo: false,
+          negatable: false)
+      ..addFlag(forceOption,
+          abbr: 'f',
+          help: 'Apply the recommended changes even if there are errors.',
+          defaultsTo: false,
+          negatable: false)
+      ..addFlag(_helpOption,
+          abbr: 'h',
+          help: 'Display this help message.',
+          defaultsTo: false,
+          negatable: false)
+      ..addFlag(_verboseOption,
+          abbr: 'v',
+          defaultsTo: false,
+          help: 'Verbose output.',
+          negatable: false)
+      ..addFlag('color',
+          help: 'Use ansi colors when printing messages.',
+          defaultsTo: Ansi.terminalSupportsAnsi);
+
+    context ??= new Context();
+
+    ArgResults results;
+    try {
+      results = parser.parse(args);
+    } on FormatException catch (e) {
+      logger ??= new Logger.standard(ansi: new Ansi(Ansi.terminalSupportsAnsi));
+      logger.stderr(e.message);
+      _showUsage(parser, logger);
+      context.exit(15);
+    }
+
+    Options options = new Options._fromArgs(context, results);
+
+    if (logger == null) {
+      if (options.verbose) {
+        logger = new Logger.verbose();
+      } else {
+        logger = new Logger.standard(
+            ansi: new Ansi(
+          options.useColor != null
+              ? options.useColor
+              : Ansi.terminalSupportsAnsi,
+        ));
+      }
+    }
+    options.logger = logger;
+
+    if (results[_helpOption] as bool) {
+      _showUsage(parser, logger);
+      context.exit(1);
+    }
+
+    // Infer the Dart SDK location
+    options.sdkPath = getSdkPath(args);
+    String sdkPath = options.sdkPath;
+    if (sdkPath == null) {
+      logger.stderr('No Dart SDK found.');
+      _showUsage(parser, logger);
+    }
+    if (!context.exists(sdkPath)) {
+      logger.stderr('Invalid Dart SDK path: $sdkPath');
+      context.exit(15);
+    }
+
+    // Check for files and/or directories to analyze.
+    if (options.targets == null || options.targets.isEmpty) {
+      logger.stderr('Expected at least one file or directory to analyze.');
+      _showUsage(parser, logger);
+      context.exit(15);
+    }
+
+    // Normalize and verify paths
+    options.targets =
+        options.targets.map<String>(options.makeAbsoluteAndNormalize).toList();
+    for (String target in options.targets) {
+      if (!context.isDirectory(target)) {
+        if (!context.exists(target)) {
+          logger.stderr('Target does not exist: $target');
+        } else {
+          logger.stderr('Expected directory, but found: $target');
+        }
+        _showUsage(parser, logger);
+        context.exit(15);
+      }
+    }
+
+    if (options.verbose) {
+      logger.trace('Targets:');
+      for (String target in options.targets) {
+        logger.trace('  $target');
+      }
+    }
+
+    return options;
+  }
+
+  Options._fromArgs(this.context, ArgResults results)
+      : targets = results.rest,
+        force = results[forceOption] as bool,
+        overwrite = results[overwriteOption] as bool,
+        verbose = results[_verboseOption] as bool,
+        useColor = results.wasParsed('color') ? results['color'] as bool : null;
+
+  String makeAbsoluteAndNormalize(String target) {
+    if (!path.isAbsolute(target)) {
+      target = path.join(context.workingDir, target);
+    }
+    return path.normalize(target);
+  }
+
+  static _showUsage(ArgParser parser, Logger logger) {
+    logger.stderr('Usage: $_binaryName [options...] <directory paths>');
+    logger.stderr('');
+    logger.stderr(parser.usage);
+  }
+}
+
+const _binaryName = 'dartfix';
+const forceOption = 'force';
+const _helpOption = 'help';
+const overwriteOption = 'overwrite';
+const _verboseOption = 'verbose';
diff --git a/pkg/dartfix/lib/src/server.dart b/pkg/dartfix/lib/src/server.dart
new file mode 100644
index 0000000..525610e
--- /dev/null
+++ b/pkg/dartfix/lib/src/server.dart
@@ -0,0 +1,360 @@
+// 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:async';
+import 'dart:convert';
+import 'dart:io';
+
+import 'package:cli_util/cli_logging.dart';
+import 'package:path/path.dart';
+
+/**
+ * Type of callbacks used to process notifications.
+ */
+typedef void NotificationProcessor(String event, params);
+
+/**
+ * Instances of the class [Server] manage a connection to a server process, and
+ * facilitate communication to and from the server.
+ */
+class Server {
+  /**
+   * Server process object, or null if server hasn't been started yet.
+   */
+  Process _process;
+
+  /**
+   * Commands that have been sent to the server but not yet acknowledged, and
+   * the [Completer] objects which should be completed when acknowledgement is
+   * received.
+   */
+  final Map<String, Completer<Map<String, dynamic>>> _pendingCommands =
+      <String, Completer<Map<String, dynamic>>>{};
+
+  /**
+   * Number which should be used to compute the 'id' to send in the next command
+   * sent to the server.
+   */
+  int _nextId = 0;
+
+  /**
+   * Messages which have been exchanged with the server; we buffer these
+   * up until the test finishes, so that they can be examined in the debugger
+   * or printed out in response to a call to [debugStdio].
+   */
+  final List<String> _recordedStdio = <String>[];
+
+  /**
+   * True if we are currently printing out messages exchanged with the server.
+   */
+  bool _debuggingStdio = false;
+
+  /**
+   * True if we've received bad data from the server, and we are aborting the
+   * test.
+   */
+  bool _receivedBadDataFromServer = false;
+
+  /**
+   * Stopwatch that we use to generate timing information for debug output.
+   */
+  Stopwatch _time = new Stopwatch();
+
+  /**
+   * The [currentElapseTime] at which the last communication was received from the server
+   * or `null` if no communication has been received.
+   */
+  double lastCommunicationTime;
+
+  /**
+   * The current elapse time (seconds) since the server was started.
+   */
+  double get currentElapseTime => _time.elapsedTicks / _time.frequency;
+
+  /**
+   * Future that completes when the server process exits.
+   */
+  Future<int> get exitCode => _process.exitCode;
+
+  final Logger logger;
+
+  Server(this.logger);
+
+  /**
+   * Print out any messages exchanged with the server.  If some messages have
+   * already been exchanged with the server, they are printed out immediately.
+   */
+  void debugStdio() {
+    if (_debuggingStdio) {
+      return;
+    }
+    _debuggingStdio = true;
+    for (String line in _recordedStdio) {
+      logger.trace(line);
+    }
+  }
+
+  /**
+   * Find the root directory of the analysis_server package by proceeding
+   * upward until finding the Dart SDK repository root then returning
+   * the analysis_server package root within the repository.
+   * Return `null` if it cannot be found.
+   */
+  static String findRoot([String pathname]) {
+    pathname ??= Platform.script.toFilePath(windows: Platform.isWindows);
+    while (true) {
+      String parent = dirname(pathname);
+      if (parent.length >= pathname.length) {
+        return null;
+      }
+      String root = normalize(join(parent, 'pkg', 'analysis_server'));
+      String server = join(root, 'bin', 'server.dart');
+      if (new File(server).existsSync()) {
+        return root;
+      }
+      pathname = parent;
+    }
+  }
+
+  /**
+   * Return a future that will complete when all commands that have been sent
+   * to the server so far have been flushed to the OS buffer.
+   */
+  Future flushCommands() {
+    return _process.stdin.flush();
+  }
+
+  /**
+   * Stop the server.
+   */
+  Future<int> kill(String reason) {
+    debugStdio();
+    _recordStdio('FORCIBLY TERMINATING PROCESS: $reason');
+    _process.kill();
+    return _process.exitCode;
+  }
+
+  /**
+   * Start listening to output from the server, and deliver notifications to
+   * [notificationProcessor].
+   */
+  void listenToOutput(NotificationProcessor notificationProcessor) {
+    _process.stdout
+        .transform(utf8.decoder)
+        .transform(new LineSplitter())
+        .listen((String line) {
+      lastCommunicationTime = currentElapseTime;
+      String trimmedLine = line.trim();
+
+      // Guard against lines like:
+      //   {"event":"server.connected","params":{...}}Observatory listening on ...
+      final String observatoryMessage = 'Observatory listening on ';
+      if (trimmedLine.contains(observatoryMessage)) {
+        trimmedLine = trimmedLine
+            .substring(0, trimmedLine.indexOf(observatoryMessage))
+            .trim();
+      }
+      if (trimmedLine.isEmpty) {
+        return;
+      }
+
+      _recordStdio('<== $trimmedLine');
+      var message;
+      try {
+        message = json.decoder.convert(trimmedLine);
+      } catch (exception) {
+        _badDataFromServer('JSON decode failure: $exception');
+        return;
+      }
+      Map messageAsMap = message;
+      if (messageAsMap.containsKey('id')) {
+        String id = message['id'];
+        Completer<Map<String, dynamic>> completer = _pendingCommands[id];
+        if (completer == null) {
+          throw 'Unexpected response from server: id=$id';
+        } else {
+          _pendingCommands.remove(id);
+        }
+        if (messageAsMap.containsKey('error')) {
+          completer.completeError(new ServerErrorMessage(messageAsMap));
+        } else {
+          Map<String, dynamic> result = messageAsMap['result'];
+          completer.complete(result);
+        }
+      } else {
+        String event = messageAsMap['event'];
+        notificationProcessor(event, messageAsMap['params']);
+      }
+    });
+    _process.stderr
+        .transform((new Utf8Codec()).decoder)
+        .transform(new LineSplitter())
+        .listen((String line) {
+      String trimmedLine = line.trim();
+      _recordStdio('ERR:  $trimmedLine');
+      _badDataFromServer('Message received on stderr', silent: true);
+    });
+  }
+
+  /**
+   * Send a command to the server.  An 'id' will be automatically assigned.
+   * The returned [Future] will be completed when the server acknowledges the
+   * command with a response.  If the server acknowledges the command with a
+   * normal (non-error) response, the future will be completed with the 'result'
+   * field from the response.  If the server acknowledges the command with an
+   * error response, the future will be completed with an error.
+   */
+  Future<Map<String, dynamic>> send(
+      String method, Map<String, dynamic> params) {
+    String id = '${_nextId++}';
+    Map<String, dynamic> command = <String, dynamic>{
+      'id': id,
+      'method': method
+    };
+    if (params != null) {
+      command['params'] = params;
+    }
+    Completer<Map<String, dynamic>> completer =
+        new Completer<Map<String, dynamic>>();
+    _pendingCommands[id] = completer;
+    String line = json.encode(command);
+    _recordStdio('==> $line');
+    _process.stdin.add(utf8.encoder.convert("$line\n"));
+    return completer.future;
+  }
+
+  /**
+   * Start the server. If [profileServer] is `true`, the server will be started
+   * with "--observe" and "--pause-isolates-on-exit", allowing the observatory
+   * to be used.
+   */
+  Future start({
+    int diagnosticPort,
+    String instrumentationLogFile,
+    bool profileServer: false,
+    String sdkPath,
+    int servicesPort,
+    bool useAnalysisHighlight2: false,
+    bool useSnapshot: true,
+  }) async {
+    if (_process != null) {
+      throw new Exception('Process already started');
+    }
+    _time.start();
+    String dartBinary = Platform.executable;
+
+    String serverPath;
+
+    // The integration tests run 3x faster when run from snapshots (you need to
+    // run test.py with --use-sdk).
+    if (useSnapshot) {
+      // Look for snapshots/analysis_server.dart.snapshot.
+      serverPath = normalize(join(dirname(Platform.resolvedExecutable),
+          'snapshots', 'analysis_server.dart.snapshot'));
+
+      if (!FileSystemEntity.isFileSync(serverPath)) {
+        // Look for dart-sdk/bin/snapshots/analysis_server.dart.snapshot.
+        serverPath = normalize(join(dirname(Platform.resolvedExecutable),
+            'dart-sdk', 'bin', 'snapshots', 'analysis_server.dart.snapshot'));
+      }
+    } else {
+      String rootDir = Server.findRoot();
+      if (rootDir == null) {
+        throw new Exception("Can't find analysis server root directory");
+      }
+      serverPath = normalize(join(rootDir, 'bin', 'server.dart'));
+    }
+
+    List<String> arguments = [];
+    //
+    // Add VM arguments.
+    //
+    if (profileServer) {
+      if (servicesPort == null) {
+        arguments.add('--observe');
+      } else {
+        arguments.add('--observe=$servicesPort');
+      }
+      arguments.add('--pause-isolates-on-exit');
+    } else if (servicesPort != null) {
+      arguments.add('--enable-vm-service=$servicesPort');
+    }
+    if (Platform.packageConfig != null) {
+      arguments.add('--packages=${Platform.packageConfig}');
+    }
+    //
+    // Add the server executable.
+    //
+    arguments.add(serverPath);
+    //
+    // Add server arguments.
+    //
+    arguments.add('--suppress-analytics');
+    if (diagnosticPort != null) {
+      arguments.add('--port');
+      arguments.add(diagnosticPort.toString());
+    }
+    if (instrumentationLogFile != null) {
+      arguments.add('--instrumentation-log-file=$instrumentationLogFile');
+    }
+    if (sdkPath != null) {
+      arguments.add('--sdk=$sdkPath');
+    }
+    if (useAnalysisHighlight2) {
+      arguments.add('--useAnalysisHighlight2');
+    }
+    _process = await Process.start(dartBinary, arguments);
+    _process.exitCode.then((int code) {
+      if (code != 0) {
+        _badDataFromServer('server terminated with exit code $code');
+      }
+    });
+  }
+
+  /**
+   * Deal with bad data received from the server.
+   */
+  void _badDataFromServer(String details, {bool silent: false}) {
+    if (!silent) {
+      _recordStdio('BAD DATA FROM SERVER: $details');
+    }
+    if (_receivedBadDataFromServer) {
+      // We're already dealing with it.
+      return;
+    }
+    _receivedBadDataFromServer = true;
+    debugStdio();
+    // Give the server 1 second to continue outputting bad data
+    // such as outputting a stacktrace.
+    new Future.delayed(new Duration(seconds: 1), () {
+      throw 'Bad data received from server: $details';
+    });
+  }
+
+  /**
+   * Record a message that was exchanged with the server, and print it out if
+   * [debugStdio] has been called.
+   */
+  void _recordStdio(String line) {
+    double elapsedTime = currentElapseTime;
+    line = "$elapsedTime: $line";
+    if (_debuggingStdio) {
+      logger.trace(line);
+    }
+    _recordedStdio.add(line);
+  }
+}
+
+/**
+ * An error result from a server request.
+ */
+class ServerErrorMessage {
+  final Map message;
+
+  ServerErrorMessage(this.message);
+
+  dynamic get error => message['error'];
+
+  String toString() => message.toString();
+}
diff --git a/pkg/dartfix/pubspec.yaml b/pkg/dartfix/pubspec.yaml
new file mode 100644
index 0000000..e14ae2f
--- /dev/null
+++ b/pkg/dartfix/pubspec.yaml
@@ -0,0 +1,19 @@
+name: dartfix
+version: 0.1.0
+author: Dart Team <misc@dartlang.org>
+description:
+  A tool for migrating Dart source to newer versions of the Dart SDK,
+  and fixing common issues.
+environment:
+  sdk: '>=2.0.0 <3.0.0'
+dependencies:
+  #TODO(danrubel) depend upon analysis_server_client rather than analysis_server
+  # once analysis_server_client has been updated.
+  analysis_server: any
+  analyzer: ^0.33.0
+  analyzer_plugin: any
+  args: any
+  cli_util: any
+  path: any
+dev_dependencies:
+  test: ^1.3.0
diff --git a/pkg/dartfix/test/all.dart b/pkg/dartfix/test/all.dart
new file mode 100644
index 0000000..c27aa48
--- /dev/null
+++ b/pkg/dartfix/test/all.dart
@@ -0,0 +1,9 @@
+// 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 'src/options_test.dart' as options_test;
+
+main() {
+  options_test.main();
+}
diff --git a/pkg/dartfix/test/src/options_test.dart b/pkg/dartfix/test/src/options_test.dart
new file mode 100644
index 0000000..269ebff
--- /dev/null
+++ b/pkg/dartfix/test/src/options_test.dart
@@ -0,0 +1,125 @@
+// 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:dartfix/src/options.dart';
+import 'package:path/path.dart' as path;
+import 'package:test/test.dart';
+
+import 'test_context.dart';
+
+main() {
+  group('Options', () {
+    TestContext context;
+    TestLogger logger;
+
+    setUp(() {
+      context = new TestContext();
+      logger = new TestLogger();
+    });
+
+    String p(String filePath) => context.convertPath(filePath);
+
+    Options parse(
+      List<String> args, {
+      String errorOut,
+      int exitCode,
+      bool force = false,
+      String normalOut,
+      bool overwrite = false,
+      List<String> targetSuffixes,
+      bool verbose = false,
+    }) {
+      Options options;
+      int actualExitCode;
+      try {
+        options = Options.parse(args, context: context, logger: logger);
+      } on TestExit catch (e) {
+        actualExitCode = e.code;
+      }
+      expect(logger.stderrBuffer.toString(),
+          errorOut != null ? contains(errorOut) : isEmpty);
+      expect(logger.stdoutBuffer.toString(),
+          normalOut != null ? contains(normalOut) : isEmpty);
+      if (exitCode != null) {
+        expect(actualExitCode, exitCode, reason: 'exit code');
+        return null;
+      } else {
+        expect(actualExitCode, isNull, reason: 'exit code');
+      }
+      expect(options.force, force);
+      expect(options.overwrite, overwrite);
+      expect(options.verbose, verbose);
+      expect(path.isAbsolute(options.sdkPath), isTrue, reason: options.sdkPath);
+      for (String target in options.targets) {
+        expect(target, isNotNull);
+        expect(path.isAbsolute(target), isTrue, reason: '$target');
+      }
+      if (targetSuffixes != null) {
+        for (String suffix in targetSuffixes) {
+          expectContains(options.targets, suffix);
+        }
+      }
+      return options;
+    }
+
+    test('force', () {
+      parse(['--force', 'foo'], force: true, targetSuffixes: ['foo']);
+    });
+
+    test('help', () {
+      parse(['--help'], errorOut: 'Display this help message', exitCode: 1);
+    });
+
+    test('invalid option', () {
+      parse(['--foo'],
+          errorOut: 'Could not find an option named "foo"', exitCode: 15);
+    });
+
+    test('invalid option no logger', () {
+      try {
+        Options.parse(['--foo'], context: context);
+        fail('Expected exception');
+      } on TestExit catch (e) {
+        expect(e.code, 15, reason: 'exit code');
+      }
+    });
+
+    test('invalid target', () {
+      parse(['foo.dart'],
+          errorOut: 'Expected directory, but found', exitCode: 15);
+    });
+
+    test('overwrite', () {
+      parse(['--overwrite', 'foo'], overwrite: true, targetSuffixes: ['foo']);
+    });
+
+    test('simple', () {
+      parse(['foo'], targetSuffixes: ['foo']);
+    });
+
+    test('two targets', () {
+      parse([p('one/foo'), p('two/bar')],
+          targetSuffixes: [p('one/foo'), p('two/bar')]);
+    });
+
+    test('verbose', () {
+      parse(['--verbose', 'foo'], verbose: true);
+    });
+  });
+}
+
+void expectOneFileTarget(Options options, String fileName) {
+  expect(options.targets, hasLength(1));
+  final target = options.targets[0];
+  expect(target.endsWith(fileName), isTrue);
+}
+
+void expectContains(Iterable<String> collection, String suffix) {
+  for (String elem in collection) {
+    if (elem.endsWith(suffix)) {
+      return;
+    }
+  }
+  fail('Expected one of $collection\n  to end with "$suffix"');
+}
diff --git a/pkg/dartfix/test/src/test_context.dart b/pkg/dartfix/test/src/test_context.dart
new file mode 100644
index 0000000..1298b9a
--- /dev/null
+++ b/pkg/dartfix/test/src/test_context.dart
@@ -0,0 +1,61 @@
+// 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/src/test_utilities/resource_provider_mixin.dart';
+import 'package:cli_util/cli_logging.dart';
+import 'package:dartfix/src/context.dart';
+
+class TestContext with ResourceProviderMixin implements Context {
+  @override
+  String get workingDir => convertPath('/usr/some/non/existing/directory');
+
+  @override
+  bool exists(String filePath) => true;
+
+  @override
+  void exit(int code) {
+    throw TestExit(code);
+  }
+
+  @override
+  bool isDirectory(String filePath) => !filePath.endsWith('.dart');
+}
+
+class TestExit {
+  final int code;
+
+  TestExit(this.code);
+}
+
+class TestLogger implements Logger {
+  final Ansi ansi;
+  final stdoutBuffer = new StringBuffer();
+  final stderrBuffer = new StringBuffer();
+
+  TestLogger() : this.ansi = new Ansi(false);
+
+  @override
+  void flush() {}
+
+  @override
+  bool get isVerbose => false;
+
+  @override
+  Progress progress(String message) {
+    return new SimpleProgress(this, message);
+  }
+
+  @override
+  void stderr(String message) {
+    stderrBuffer.writeln(message);
+  }
+
+  @override
+  void stdout(String message) {
+    stdoutBuffer.writeln(message);
+  }
+
+  @override
+  void trace(String message) {}
+}
diff --git a/pkg/dev_compiler/bin/dartdevc.dart b/pkg/dev_compiler/bin/dartdevc.dart
index 5e8b8b6..2e7ec1e 100755
--- a/pkg/dev_compiler/bin/dartdevc.dart
+++ b/pkg/dev_compiler/bin/dartdevc.dart
@@ -9,15 +9,23 @@
 import 'dart:async';
 import 'dart:convert';
 import 'dart:io';
+import 'dart:isolate';
 import 'package:bazel_worker/bazel_worker.dart';
 import 'package:dev_compiler/src/compiler/shared_command.dart';
 
-Future main(List<String> args) async {
+/// The entry point for the Dart Dev Compiler.
+///
+/// [sendPort] may be passed in when started in an isolate. If provided, it is
+/// used for bazel worker communication instead of stdin/stdout.
+Future main(List<String> args, [SendPort sendPort]) async {
   // Always returns a new modifiable list.
   var parsedArgs = ParsedArguments.from(args);
 
   if (parsedArgs.isWorker) {
-    await _CompilerWorker(parsedArgs).run();
+    var workerConnection = sendPort == null
+        ? new StdAsyncWorkerConnection()
+        : new SendPortAsyncWorkerConnection(sendPort);
+    await _CompilerWorker(parsedArgs, workerConnection).run();
   } else if (parsedArgs.isBatch) {
     await runBatch(parsedArgs);
   } else {
@@ -32,7 +40,8 @@
   final ParsedArguments _startupArgs;
   InitializedCompilerState _compilerState;
 
-  _CompilerWorker(this._startupArgs) : super();
+  _CompilerWorker(this._startupArgs, AsyncWorkerConnection workerConnection)
+      : super(connection: workerConnection);
 
   /// Performs each individual work request.
   Future<WorkResponse> performRequest(WorkRequest request) async {
diff --git a/pkg/dev_compiler/lib/js/legacy/dart_library.js b/pkg/dev_compiler/lib/js/legacy/dart_library.js
index 1902d38..8fb0fab 100644
--- a/pkg/dev_compiler/lib/js/legacy/dart_library.js
+++ b/pkg/dev_compiler/lib/js/legacy/dart_library.js
@@ -2,22 +2,23 @@
 // 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.
 
-/* This file defines the module loader for the dart runtime.
-*/
+// This file defines the module loader for the dart runtime.
 var dart_library;
 if (!dart_library) {
-dart_library =
-  typeof module != "undefined" && module.exports || {};
+  dart_library = typeof module != "undefined" && module.exports || {};
 
 (function (dart_library) {
   'use strict';
 
-  /** Note that we cannot use dart_utils.throwInternalError from here. */
+  // Throws an error related to module loading.
+  //
+  // This does not throw a Dart error because the Dart SDK may not have loaded
+  // yet, and module loading errors cannot be caught by Dart code.
   function throwLibraryError(message) {
     // Dispatch event to allow others to react to the load error without
     // capturing the exception.
-    var errorEvent = new CustomEvent('dartLoadException', { detail: message });
-    window.dispatchEvent(errorEvent);
+    window.dispatchEvent(
+      new CustomEvent('dartLoadException', { detail: message }));
     throw Error(message);
   }
 
@@ -31,12 +32,12 @@
   // Returns a proxy that delegates to the underlying loader.
   // This defers loading of a module until a library is actually used.
   const loadedModule = Symbol('loadedModule');
-  dart_library.defer = function(module, name, patch) {
+  dart_library.defer = function (module, name, patch) {
     let done = false;
     function loadDeferred() {
       done = true;
-      var mod = module[loadedModule];
-      var lib = mod[name];
+      let mod = module[loadedModule];
+      let lib = mod[name];
       // Install unproxied module and library in caller's context.
       patch(mod, lib);
     }
@@ -44,11 +45,11 @@
     // library object should be get (to read a top-level variable, method, or
     // Class) or set (to write a top-level variable).
     return new Proxy({}, {
-      get: function(o, p) {
+      get: function (o, p) {
         if (!done) loadDeferred();
         return module[name][p];
       },
-      set: function(o, p, value) {
+      set: function (o, p, value) {
         if (!done) loadDeferred();
         module[name][p] = value;
         return true;
@@ -60,8 +61,8 @@
   class LibraryLoader {
 
     constructor(name, defaultValue, imports, loader) {
-      imports.forEach(function(i) {
-        var deps = _reverseImports.get(i);
+      imports.forEach(function (i) {
+        let deps = _reverseImports.get(i);
         if (!deps) {
           deps = new Set();
           _reverseImports.set(i, deps);
@@ -88,8 +89,7 @@
     load() {
       // Check for cycles
       if (this._state == LibraryLoader.LOADING) {
-        throwLibraryError('Circular dependence on library: '
-                              + this._name);
+        throwLibraryError('Circular dependence on library: ' + this._name);
       } else if (this._state >= LibraryLoader.READY) {
         return this._library;
       }
@@ -113,7 +113,7 @@
         // Load / parse other modules on demand.
         let done = false;
         this._library = new Proxy(library, {
-          get: function(o, name) {
+          get: function (o, name) {
             if (!done) {
               done = true;
               loader._loader.apply(null, args);
@@ -137,9 +137,9 @@
 
   // Map from name to LibraryLoader
   let _libraries = new Map();
-  dart_library.libraries = function() { return _libraries.keys(); };
-  dart_library.debuggerLibraries = function() {
-    var debuggerLibraries = [];
+  dart_library.libraries = function () { return _libraries.keys(); };
+  dart_library.debuggerLibraries = function () {
+    let debuggerLibraries = [];
     _libraries.forEach(function (value, key, map) {
       debuggerLibraries.push(value.load());
     });
@@ -194,37 +194,83 @@
   }
   dart_library.import = import_;
 
-  var _currentIsolate = false;
+  let _debuggerInitialized = false;
 
-  function _restart() {
-    start(_lastModuleName, _lastLibraryName, true);
-  }
+  // Called to initiate a hot restart of the application.
+  //
+  // "Hot restart" means all application state is cleared, the newly compiled
+  // modules are loaded, and `main()` is called.
+  //
+  // Note: `onReloadEnd()` can be provided, and if so will be used instead of
+  // `main()` for hot restart.
+  //
+  // This happens in the following sequence:
+  //
+  // 1. Look for `onReloadStart()` in the same library that has `main()`, and
+  //    call it if present. This function is implemented by the application to
+  //    ensure any global browser/DOM state is cleared, so the application can
+  //    restart.
+  // 2. Wait for `onReloadStart()` to complete (either synchronously, or async
+  //    if it returned a `Future`).
+  // 3. Call dart:_runtime's `hotRestart()` function to clear any state that
+  //    `dartdevc` is tracking, such as initialized static fields and type
+  //    caches.
+  // 4. Call `window.$dartWarmReload()` (provided by the HTML page) to reload
+  //    the relevant JS modules, passing a callback that will invoke `main()`.
+  // 5. `$dartWarmReload` calls the callback to rerun main.
+  //
+  function reload(clearState) {
+    // TODO(jmesserly): once we've rolled out `clearState` make it the default,
+    // and eventually remove the parameter.
+    if (clearState == null) clearState = false;
 
-  function reload() {
+
+    // TODO(jmesserly): we may want to change these APIs to use the
+    // "hot restart" terminology for consistency with Flutter. In Flutter,
+    // "hot reload" refers to keeping the application state and attempting to
+    // patch the code for the application while it is executing
+    // (https://flutter.io/hot-reload/), whereas "hot restart" refers to what
+    // dartdevc supports: tear down the app, update the code, and rerun the app.
     if (!window || !window.$dartWarmReload) {
-      console.warn('Warm reload not supported in this environment.');
+      console.warn('Hot restart not supported in this environment.');
       return;
     }
-    var result;
+
+    // Call the application's `onReloadStart()` function, if provided.
+    let result;
     if (_lastLibrary && _lastLibrary.onReloadStart) {
       result = _lastLibrary.onReloadStart();
     }
-    if (result && result.then) {
-      let sdk = _libraries.get("dart_sdk");
-      result.then(sdk._library.dart.Dynamic)(function() {
-        window.$dartWarmReload(_restart);
+
+    let sdk = _libraries.get("dart_sdk");
+
+    /// Once the `onReloadStart()` completes, this finishes the restart.
+    function finishHotRestart() {
+      if (clearState) {
+        // This resets all initialized fields and clears type caches and other
+        // temporary data structures used by the compiler/SDK.
+        sdk.dart.hotRestart();
+      }
+      // Call the module loader to reload the necessary modules.
+      window.$dartWarmReload(() => {
+        // Once the modules are loaded, rerun `main()`.
+        start(_lastModuleName, _lastLibraryName, true);
       });
+    }
+
+    if (result && result.then) {
+      result.then(sdk._library.dart.Dynamic)(finishHotRestart);
     } else {
-      window.$dartWarmReload(_restart);
+      finishHotRestart();
     }
   }
   dart_library.reload = reload;
 
 
-  var _lastModuleName;
-  var _lastLibraryName;
-  var _lastLibrary;
-  var _originalBody;
+  let _lastModuleName;
+  let _lastLibraryName;
+  let _lastLibrary;
+  let _originalBody;
 
   function start(moduleName, libraryName, isReload) {
     if (libraryName == null) libraryName = moduleName;
@@ -234,14 +280,13 @@
     _lastLibrary = library;
     let dart_sdk = import_('dart_sdk');
 
-    if (!_currentIsolate) {
+    if (!_debuggerInitialized) {
       // This import is only needed for chrome debugging. We should provide an
       // option to compile without it.
       dart_sdk._debugger.registerDevtoolsFormatter();
 
       // Create isolate.
-      _currentIsolate = true;
-      dart_sdk._isolate_helper.startRootIsolate(() => {}, []);
+      _debuggerInitialized = true;
     }
     if (isReload) {
       if (library.onReloadEnd) {
diff --git a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
index 6fc4b68..fda58dd 100644
--- a/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/code_generator.dart
@@ -48,7 +48,7 @@
 import 'extension_types.dart' show ExtensionTypeSet;
 import 'js_interop.dart';
 import 'js_typerep.dart';
-import 'module_compiler.dart' show BuildUnit, CompilerOptions, JSModuleFile;
+import 'module_compiler.dart' show CompilerOptions, JSModuleFile;
 import 'nullable_type_inference.dart' show NullableTypeInference;
 import 'property_model.dart';
 import 'reify_coercions.dart' show CoercionReifier;
@@ -179,8 +179,6 @@
 
   final _deferredProperties = HashMap<PropertyAccessorElement, JS.Method>();
 
-  BuildUnit _buildUnit;
-
   String _libraryRoot;
 
   bool _superAllowed = true;
@@ -250,29 +248,29 @@
   ///
   /// Takes the metadata for the build unit, as well as resolved trees and
   /// errors, and computes the output module code and optionally the source map.
-  JSModuleFile compile(BuildUnit unit, List<CompilationUnit> compilationUnits) {
-    _buildUnit = unit;
-    _libraryRoot = _buildUnit.libraryRoot;
+  JSModuleFile compile(List<CompilationUnit> compilationUnits) {
+    _libraryRoot = options.libraryRoot;
     if (!_libraryRoot.endsWith(path.separator)) {
       _libraryRoot += path.separator;
     }
 
+    var name = options.moduleName;
     invalidModule() =>
-        JSModuleFile.invalid(unit.name, formatErrors(context, errors), options);
+        JSModuleFile.invalid(name, formatErrors(context, errors), options);
 
     if (!options.unsafeForceCompile && errors.any(_isFatalError)) {
       return invalidModule();
     }
 
     try {
-      var module = _emitModule(compilationUnits, unit.name);
+      var module = _emitModule(compilationUnits, name);
       if (!options.unsafeForceCompile && errors.any(_isFatalError)) {
         return invalidModule();
       }
 
       var dartApiSummary = _summarizeModule(compilationUnits);
-      return JSModuleFile(unit.name, formatErrors(context, errors), options,
-          module, dartApiSummary);
+      return JSModuleFile(
+          name, formatErrors(context, errors), options, module, dartApiSummary);
     } catch (e) {
       if (errors.any(_isFatalError)) {
         // Force compilation failed.  Suppress the exception and report
@@ -443,7 +441,7 @@
     _copyAndFlattenBlocks(items, moduleItems);
 
     // Build the module.
-    return JS.Program(items, name: _buildUnit.name);
+    return JS.Program(items, name: options.moduleName);
   }
 
   void _emitDebuggerExtensionInfo(String name) {
@@ -2880,7 +2878,7 @@
       FunctionBody body, ExecutableElement element) {
     var block = body.accept(this) as JS.Block;
     if (element.parameters.isNotEmpty) {
-      // Handle shadowing of parameters by local varaibles, which is allowed in
+      // Handle shadowing of parameters by local variables, which is allowed in
       // Dart but not in JS.
       //
       // We need this for all function types, including generator-based ones
@@ -5105,7 +5103,7 @@
   ///
   /// For example, `expr1[expr2]++` can be transformed to this:
   ///
-  ///     // psuedocode mix of Scheme and JS:
+  ///     // pseudocode mix of Scheme and JS:
   ///     (let* (x1=expr1, x2=expr2, t=expr1[expr2]) { x1[x2] = t + 1; t })
   ///
   /// The [JS.MetaLet] nodes automatically simplify themselves if they can.
@@ -5500,13 +5498,19 @@
 
     var init = _visitExpression(node.identifier);
     var iterable = _visitExpression(node.iterable);
+
     var body = _visitScope(node.body);
     if (init == null) {
-      var id = node.loopVariable.identifier;
-      init = js.call('let #', _emitVariableDef(id));
+      var id = _emitVariableDef(node.loopVariable.identifier);
+      init = js.call('let #', id);
       if (_annotatedNullCheck(node.loopVariable.declaredElement)) {
         body = JS.Block([_nullParameterCheck(JS.Identifier(id.name)), body]);
       }
+      if (variableIsReferenced(id.name, iterable)) {
+        var temp = JS.TemporaryId('iter');
+        return JS.Block(
+            [iterable.toVariableDeclaration(temp), JS.ForOf(init, temp, body)]);
+      }
     }
     return JS.ForOf(init, iterable, body);
   }
@@ -5514,10 +5518,10 @@
   JS.Statement _emitAwaitFor(ForEachStatement node) {
     // Emits `await for (var value in stream) ...`, which desugars as:
     //
-    // var iter = new StreamIterator(stream);
+    // let iter = new StreamIterator(stream);
     // try {
     //   while (await iter.moveNext()) {
-    //     var value = iter.current;
+    //     let value = iter.current;
     //     ...
     //   }
     // } finally {
@@ -6326,19 +6330,19 @@
   @override
   visitConfiguration(node) => _unreachable(node);
 
-  /// Unusued, see [_emitConstructor].
+  /// Unused, see [_emitConstructor].
   @override
   visitConstructorDeclaration(node) => _unreachable(node);
 
-  /// Unusued, see [_emitFieldInitializers].
+  /// Unused, see [_emitFieldInitializers].
   @override
   visitConstructorFieldInitializer(node) => _unreachable(node);
 
-  /// Unusued, see [_emitRedirectingConstructor].
+  /// Unused, see [_emitRedirectingConstructor].
   @override
   visitRedirectingConstructorInvocation(node) => _unreachable(node);
 
-  /// Unusued. Handled in [visitForEachStatement].
+  /// Unused. Handled in [visitForEachStatement].
   @override
   visitDeclaredIdentifier(node) => _unreachable(node);
 
diff --git a/pkg/dev_compiler/lib/src/analyzer/command.dart b/pkg/dev_compiler/lib/src/analyzer/command.dart
index 025d4d6..300ab8b 100644
--- a/pkg/dev_compiler/lib/src/analyzer/command.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/command.dart
@@ -12,7 +12,7 @@
 import 'package:path/path.dart' as path;
 
 import 'context.dart' show AnalyzerOptions;
-import 'module_compiler.dart' show BuildUnit, CompilerOptions, ModuleCompiler;
+import 'module_compiler.dart' show CompilerOptions, ModuleCompiler;
 
 const _binaryName = 'dartdevc';
 
@@ -103,12 +103,7 @@
         help: 'Ignore unrecognized command line flags.',
         defaultsTo: false,
         hide: hide)
-    ..addMultiOption('out', abbr: 'o', help: 'Output file (required).')
-    ..addOption('module-name',
-        help: 'The output module name, used in some JS module formats.\n'
-            'Defaults to the output file name (without .js).')
-    ..addOption('library-root',
-        help: 'Root of source files. Library names are relative to this root.');
+    ..addMultiOption('out', abbr: 'o', help: 'Output file (required).');
   CompilerOptions.addArguments(argParser, hide: hide);
   defineAnalysisArguments(argParser, hide: hide, ddc: true);
   AnalyzerOptions.addArguments(argParser, hide: hide);
@@ -143,32 +138,7 @@
         '');
   }
 
-  // TODO(jmesserly): for now the first one is special. This will go away once
-  // we've removed the "root" and "module name" variables.
-  var firstOutPath = outPaths[0];
-
-  var libraryRoot = argResults['library-root'] as String;
-  if (libraryRoot != null) {
-    libraryRoot = path.absolute(libraryRoot);
-  } else {
-    libraryRoot = Directory.current.path;
-  }
-  var moduleName = argResults['module-name'] as String;
-  if (moduleName == null) {
-    var moduleRoot = compilerOpts.moduleRoot;
-    if (moduleRoot != null) {
-      // TODO(jmesserly): remove this legacy support after a deprecation period.
-      // (Mainly this is to give time for migrating build rules.)
-      moduleName =
-          path.withoutExtension(path.relative(firstOutPath, from: moduleRoot));
-    } else {
-      moduleName = path.basenameWithoutExtension(firstOutPath);
-    }
-  }
-
-  var unit = BuildUnit(moduleName, libraryRoot, argResults.rest);
-
-  var module = compiler.compile(unit, compilerOpts);
+  var module = compiler.compile(argResults.rest, compilerOpts);
   module.errors.forEach(printFn);
 
   if (!module.isValid) {
diff --git a/pkg/dev_compiler/lib/src/analyzer/module_compiler.dart b/pkg/dev_compiler/lib/src/analyzer/module_compiler.dart
index 819be91..f0bd87c 100644
--- a/pkg/dev_compiler/lib/src/analyzer/module_compiler.dart
+++ b/pkg/dev_compiler/lib/src/analyzer/module_compiler.dart
@@ -44,18 +44,23 @@
 
 /// Compiles a set of Dart files into a single JavaScript module.
 ///
-/// For a single [BuildUnit] definition, this will produce a [JSModuleFile].
-/// Those objects are record types that record the data consumed and produced
-/// for a single compile.
+/// For a single build unit, this will produce a [JSModuleFile].
+///
+/// A build unit is a collection of Dart sources that is sufficient to be
+/// compiled together. This can be as small as a single Dart library file, but
+/// if the library has parts, or if the library has cyclic dependencies on other
+/// libraries, those must be included as well. A common build unit is the lib
+/// directory of a Dart package.
 ///
 /// This class exists to cache global state associated with a single in-memory
-/// AnalysisContext, such as information about extension types in the Dart SDK.
-/// It can be used once to produce a single module, or reused to save warm-up
-/// time. (Currently there is no warm up, but there may be in the future.)
+/// [AnalysisContext], such as information about extension types in the Dart
+/// SDK. It can be used once to produce a single module, or reused to save
+/// warm-up time. (Currently there is no warm up, but there may be in the
+/// future.)
 ///
 /// The SDK source code is assumed to be immutable for the life of this class.
 ///
-/// For all other files, it is up to the [AnalysisContext] to decide whether or
+/// For all other files, it is up to the analysis context to decide whether or
 /// not any caching is performed. By default an analysis context will assume
 /// sources are immutable for the life of the context, and cache information
 /// about them.
@@ -133,14 +138,14 @@
   /// *Warning* - this may require resolving the entire world.
   /// If that is not desired, the analysis context must be pre-configured using
   /// summaries before calling this method.
-  JSModuleFile compile(BuildUnit unit, CompilerOptions options) {
+  JSModuleFile compile(List<String> sourcePaths, CompilerOptions options) {
     var trees = <CompilationUnit>[];
     var errors = <AnalysisError>[];
 
     var librariesToCompile = Queue<LibraryElement>();
 
     var compilingSdk = false;
-    for (var sourcePath in unit.sources) {
+    for (var sourcePath in sourcePaths) {
       var sourceUri = sourcePathToUri(sourcePath);
       if (sourceUri.scheme == "dart") {
         compilingSdk = true;
@@ -201,9 +206,9 @@
       }
     }
 
-    var codeGenerator =
+    var compiler =
         CodeGenerator(context, summaryData, options, _extensionTypes, errors);
-    return codeGenerator.compile(unit, trees);
+    return compiler.compile(trees);
   }
 
   Iterable<AnalysisError> _filterJsErrors(
@@ -256,6 +261,10 @@
   /// [summaryModules].
   final String moduleRoot;
 
+  /// *deprecated* If specified, `dartdevc` will synthesize library names that
+  /// are relative to this path for all libraries in the JS module.
+  final String libraryRoot;
+
   CompilerOptions(
       {bool sourceMap = true,
       this.sourceMapComment = true,
@@ -269,7 +278,8 @@
       Map<String, String> bazelMapping = const {},
       this.summaryOutPath,
       Map<String, String> summaryModules = const {},
-      this.moduleRoot})
+      this.moduleRoot,
+      this.libraryRoot})
       : super(
             sourceMap: sourceMap,
             summarizeApi: summarizeApi,
@@ -286,6 +296,7 @@
         unsafeForceCompile = args['unsafe-force-compile'] as bool,
         summaryOutPath = args['summary-out'] as String,
         moduleRoot = args['module-root'] as String,
+        libraryRoot = _getLibraryRoot(args),
         super.fromArguments(args, args['module-root'] as String,
             args['summary-extension'] as String);
 
@@ -312,27 +323,15 @@
       ..addOption('module-root',
           help: '(deprecated) used to determine the default module name and\n'
               'summary import name if those are not provided.',
-          hide: hide);
+          hide: hide)
+      ..addOption('library-root',
+          help: '(deprecated) used to name libraries inside the module.');
   }
-}
 
-/// A unit of Dart code that can be built into a single JavaScript module.
-class BuildUnit {
-  /// The name of this module.
-  final String name;
-
-  /// All library names are relative to this path/prefix.
-  final String libraryRoot;
-
-  /// The list of sources in this module.
-  ///
-  /// The set of Dart files can be arbitrarily large, but it must contain
-  /// complete libraries including all of their parts, as well as all libraries
-  /// that are part of a library cycle.
-  final List<String> sources;
-
-  BuildUnit(String modulePath, this.libraryRoot, this.sources)
-      : name = '${path.toUri(modulePath)}';
+  static String _getLibraryRoot(ArgResults args) {
+    var root = args['library-root'] as String;
+    return root != null ? path.absolute(root) : path.current;
+  }
 }
 
 /// The output of Dart->JS compilation.
diff --git a/pkg/dev_compiler/lib/src/compiler/module_builder.dart b/pkg/dev_compiler/lib/src/compiler/module_builder.dart
index df3dfa4..f3db4fa 100644
--- a/pkg/dev_compiler/lib/src/compiler/module_builder.dart
+++ b/pkg/dev_compiler/lib/src/compiler/module_builder.dart
@@ -41,14 +41,11 @@
     }[s];
 
 /// Parse the module format option added by [addModuleFormatOptions].
-List<ModuleFormat> parseModuleFormatOption(ArgResults argResults) {
-  var format = argResults['modules'];
-  if (format is String) {
-    return [parseModuleFormat(format)];
-  }
-  var formats = (format as List<String>).map(parseModuleFormat).toList();
+List<ModuleFormat> parseModuleFormatOption(ArgResults args) {
+  var formats =
+      (args['modules'] as List<String>).map(parseModuleFormat).toList();
 
-  if (argResults['single-out-file'] as bool) {
+  if (args['single-out-file'] as bool) {
     for (int i = 0; i < formats.length; i++) {
       var format = formats[i];
       switch (formats[i]) {
@@ -72,8 +69,7 @@
 /// Adds an option to the [argParser] for choosing the module format, optionally
 /// [allowMultiple] formats to be specified, with each emitted into a separate
 /// file.
-void addModuleFormatOptions(ArgParser argParser,
-    {bool allowMultiple = false, bool hide = true}) {
+void addModuleFormatOptions(ArgParser argParser, {bool hide = true}) {
   argParser.addMultiOption('modules', help: 'module pattern to emit', allowed: [
     'es6',
     'common',
diff --git a/pkg/dev_compiler/lib/src/compiler/shared_command.dart b/pkg/dev_compiler/lib/src/compiler/shared_command.dart
index 4ba56d8..459af25 100644
--- a/pkg/dev_compiler/lib/src/compiler/shared_command.dart
+++ b/pkg/dev_compiler/lib/src/compiler/shared_command.dart
@@ -83,6 +83,13 @@
 
   final List<ModuleFormat> moduleFormats;
 
+  /// The name of the module.
+  ///
+  /// This used when to support file concatenation. The JS module will contain
+  /// its module name inside itself, allowing it to declare the module name
+  /// independently of the file.
+  String moduleName;
+
   SharedCompilerOptions(
       {this.sourceMap = true,
       this.summarizeApi = true,
@@ -91,7 +98,8 @@
       this.replCompile = false,
       this.bazelMapping = const {},
       this.summaryModules = const {},
-      this.moduleFormats = const []});
+      this.moduleFormats = const [],
+      this.moduleName});
 
   SharedCompilerOptions.fromArguments(ArgResults args,
       [String moduleRoot, String summaryExtension])
@@ -104,10 +112,11 @@
                 _parseBazelMappings(args['bazel-mapping'] as List<String>),
             summaryModules: _parseCustomSummaryModules(
                 args['summary'] as List<String>, moduleRoot, summaryExtension),
-            moduleFormats: parseModuleFormatOption(args));
+            moduleFormats: parseModuleFormatOption(args),
+            moduleName: _getModuleName(args, moduleRoot));
 
   static void addArguments(ArgParser parser, {bool hide = true}) {
-    addModuleFormatOptions(parser, allowMultiple: true, hide: hide);
+    addModuleFormatOptions(parser, hide: hide);
 
     parser
       ..addMultiOption('summary',
@@ -122,6 +131,9 @@
           help: 'emit metadata annotations queriable via mirrors', hide: hide)
       ..addFlag('enable-asserts',
           help: 'enable assertions', defaultsTo: true, hide: hide)
+      ..addOption('module-name',
+          help: 'The output module name, used in some JS module formats.\n'
+              'Defaults to the output file name (without .js).')
       // TODO(jmesserly): rename this, it has nothing to do with bazel.
       ..addMultiOption('bazel-mapping',
           help: '--bazel-mapping=gen/to/library.dart,to/library.dart\n'
@@ -129,6 +141,32 @@
           splitCommas: false,
           hide: hide);
   }
+
+  static String _getModuleName(ArgResults args, String moduleRoot) {
+    var moduleName = args['module-name'] as String;
+    if (moduleName == null) {
+      var outPaths = args['out'];
+      var outPath = outPaths is String
+          ? outPaths
+          : (outPaths as List<String>)
+              .firstWhere((_) => true, orElse: () => null);
+
+      if (moduleRoot != null) {
+        // TODO(jmesserly): remove this legacy support after a deprecation period.
+        // (Mainly this is to give time for migrating build rules.)
+        moduleName =
+            path.withoutExtension(path.relative(outPath, from: moduleRoot));
+      } else {
+        moduleName = path.basenameWithoutExtension(outPath);
+      }
+    }
+    // TODO(jmesserly): this should probably use sourcePathToUri.
+    //
+    // Also we should not need this logic if the user passed in the module name
+    // explicitly. It is here for backwards compatibility until we can confirm
+    // that build systems do not depend on passing windows-style paths here.
+    return path.toUri(moduleName).toString();
+  }
 }
 
 /// Finds explicit module names of the form `path=name` in [summaryPaths],
diff --git a/pkg/dev_compiler/lib/src/compiler/shared_compiler.dart b/pkg/dev_compiler/lib/src/compiler/shared_compiler.dart
index adc08b7..f9b5c0c 100644
--- a/pkg/dev_compiler/lib/src/compiler/shared_compiler.dart
+++ b/pkg/dev_compiler/lib/src/compiler/shared_compiler.dart
@@ -157,3 +157,27 @@
     return js.call('#.# = #', args);
   }
 }
+
+/// Whether a variable with [name] is referenced in the [node].
+bool variableIsReferenced(String name, JS.Node node) {
+  var finder = _IdentifierFinder.instance;
+  finder.nameToFind = name;
+  finder.found = false;
+  node.accept(finder);
+  return finder.found;
+}
+
+class _IdentifierFinder extends JS.BaseVisitor<void> {
+  String nameToFind;
+  bool found = false;
+
+  static final instance = _IdentifierFinder();
+
+  visitIdentifier(node) {
+    if (node.name == nameToFind) found = true;
+  }
+
+  visitNode(node) {
+    if (!found) super.visitNode(node);
+  }
+}
diff --git a/pkg/dev_compiler/lib/src/js_ast/builder.dart b/pkg/dev_compiler/lib/src/js_ast/builder.dart
index 6640da0..6520afc 100644
--- a/pkg/dev_compiler/lib/src/js_ast/builder.dart
+++ b/pkg/dev_compiler/lib/src/js_ast/builder.dart
@@ -19,7 +19,7 @@
 
 /**
 
-[js] is a singleton instace of JsBuilder.  JsBuilder is a set of conveniences
+[js] is a singleton instance of JsBuilder.  JsBuilder is a set of conveniences
 for constructing JavaScript ASTs.
 
 [string] and [number] are used to create leaf AST nodes:
@@ -60,7 +60,7 @@
       return 123;
 
 If the placeholder is not followed by a semicolon, it is part of an expression.
-Here the paceholder is in the position of the function in a function call:
+Here the placeholder is in the position of the function in a function call:
 
     var vFoo = new Identifier('foo');
     js.statement('if (happy) #("Happy!")', vFoo)
@@ -71,7 +71,7 @@
 Generally, a placeholder in an expression position requires an Expression AST as
 an argument and a placeholder in a statement position requires a Statement AST.
 An expression will be converted to a Statement if needed by creating an
-ExpessionStatement.  A String argument will be converted into a Identifier and
+ExpressionStatement.  A String argument will be converted into a Identifier and
 requires that the string is a JavaScript identifier.
 
     js('# + 1', vFoo)       -->  foo + 1
@@ -146,7 +146,7 @@
     js.statement('if (#) return;', eTrue)  -->  if (true) return;
 
 Combined with block splicing, if-statement condition context placeholders allows
-the creation of tenplates that select code depending on variables.
+the creation of templates that select code depending on variables.
 
     js.statement('{ 1; if (#) 2; else { 3; 4; } 5;}', true)
     --> { 1; 2; 5; }
@@ -168,10 +168,10 @@
     js('a.#', 'x')    -->  a.x        (i.e. a["x"])
 
 (Question - should `.#` be restricted to permit only String arguments? The
-template should probably be writted with `[]` if non-strings are accepted.)
+template should probably be written with `[]` if non-strings are accepted.)
 
 
-Object initialiers allow placeholders in the key property name position:
+Object initializers allow placeholders in the key property name position:
 
     js('{#:1, #:2}',  [s, 'bye'])    -->  {hello: 1, bye: 2}
 
diff --git a/pkg/dev_compiler/lib/src/js_ast/nodes.dart b/pkg/dev_compiler/lib/src/js_ast/nodes.dart
index 810bedf..6b78736 100644
--- a/pkg/dev_compiler/lib/src/js_ast/nodes.dart
+++ b/pkg/dev_compiler/lib/src/js_ast/nodes.dart
@@ -1192,16 +1192,18 @@
   void visitChildren(NodeVisitor visitor) {}
 
   static bool foundIn(Node node) {
-    _thisFinder.found = false;
-    node.accept(_thisFinder);
-    return _thisFinder.found;
+    var finder = _ThisFinder._instance;
+    finder.found = false;
+    node.accept(finder);
+    return finder.found;
   }
 }
 
-final _thisFinder = _ThisFinder();
-
-class _ThisFinder extends BaseVisitor {
+class _ThisFinder extends BaseVisitor<void> {
   bool found = false;
+
+  static final _instance = _ThisFinder();
+
   visitThis(This node) {
     found = true;
   }
diff --git a/pkg/dev_compiler/lib/src/kernel/analyzer_to_kernel.dart b/pkg/dev_compiler/lib/src/kernel/analyzer_to_kernel.dart
index 426bce2..e004f89 100644
--- a/pkg/dev_compiler/lib/src/kernel/analyzer_to_kernel.dart
+++ b/pkg/dev_compiler/lib/src/kernel/analyzer_to_kernel.dart
@@ -21,7 +21,8 @@
 import 'package:analyzer/src/summary/summary_sdk.dart' as a;
 import 'package:analyzer/src/generated/resolver.dart' as a
     show NamespaceBuilder, TypeProvider;
-import 'package:front_end/src/fasta/kernel/redirecting_factory_body.dart';
+import 'package:front_end/src/api_unstable/ddc.dart'
+    show RedirectingFactoryBody;
 import 'package:kernel/kernel.dart';
 import 'package:kernel/type_algebra.dart';
 
@@ -320,7 +321,7 @@
       // Compute the superclass to use for the next iteration of this loop.
       //
       // Any type arguments are in terms of the original class type parameters.
-      // This allows us to perform consistent subsititions and have the correct
+      // This allows us to perform consistent substitutions and have the correct
       // type arguments for the final supertype (that we return).
       supertype = Supertype(
           c,
@@ -349,9 +350,9 @@
       // TODO(jmesserly): CFE does not respect the synthetic bit on constructors
       // so we set a bogus offset. This causes CFE to treat it as not synthetic.
       //
-      // (The bug is in DillMemberBuilder.isSythetic. Sythetic constructors have
-      // different semantics/optimizations in some cases, so it is important
-      // that the constructor is correctly marked.)
+      // (The bug is in DillMemberBuilder.isSynthetic. Synthetic constructors
+      // have different semantics/optimizations in some cases, so it is
+      // important that the constructor is correctly marked.)
       result.fileOffset = 1;
     }
     _visitAnnotations(e.metadata, result.addAnnotation);
diff --git a/pkg/dev_compiler/lib/src/kernel/command.dart b/pkg/dev_compiler/lib/src/kernel/command.dart
index b1876cb..6f27353 100644
--- a/pkg/dev_compiler/lib/src/kernel/command.dart
+++ b/pkg/dev_compiler/lib/src/kernel/command.dart
@@ -9,7 +9,6 @@
 import 'package:args/args.dart';
 import 'package:build_integration/file_system/multi_root.dart';
 import 'package:cli_util/cli_util.dart' show getSdkPath;
-import 'package:front_end/src/api_prototype/standard_file_system.dart';
 import 'package:front_end/src/api_unstable/ddc.dart' as fe;
 import 'package:kernel/kernel.dart';
 import 'package:kernel/text/ast_to_text.dart' as kernel show Printer;
@@ -104,7 +103,7 @@
       (argResults['multi-root'] as Iterable<String>)
           .map(Uri.base.resolve)
           .toList(),
-      StandardFileSystem.instance);
+      fe.StandardFileSystem.instance);
 
   Uri toCustomUri(Uri uri) {
     if (uri.scheme == '') {
@@ -221,6 +220,11 @@
   var jsModule =
       compiler.emitModule(component, result.inputSummaries, summaryModules);
 
+  // TODO(jmesserly): support for multiple output formats?
+  //
+  // Also the old Analyzer backend had some code to make debugging better when
+  // --single-out-file is used, but that option does not appear to be used by
+  // any of our build systems.
   var jsCode = jsProgramToCode(jsModule, options.moduleFormats.first,
       buildSourceMap: argResults['source-map'] as bool,
       jsUrl: path.toUri(output).toString(),
diff --git a/pkg/dev_compiler/lib/src/kernel/compiler.dart b/pkg/dev_compiler/lib/src/kernel/compiler.dart
index 3f2f995..5f5d60d 100644
--- a/pkg/dev_compiler/lib/src/kernel/compiler.dart
+++ b/pkg/dev_compiler/lib/src/kernel/compiler.dart
@@ -5,7 +5,7 @@
 import 'dart:collection';
 import 'dart:math' show max, min;
 
-import 'package:front_end/src/fasta/type_inference/type_schema_environment.dart';
+import 'package:front_end/src/api_unstable/ddc.dart' show TypeSchemaEnvironment;
 import 'package:kernel/class_hierarchy.dart';
 import 'package:kernel/core_types.dart';
 import 'package:kernel/kernel.dart';
@@ -234,12 +234,12 @@
 
   bool get emitMetadata => options.emitMetadata;
 
-  JS.Program emitModule(Component buildUnit, List<Component> summaries,
+  JS.Program emitModule(Component component, List<Component> summaries,
       Map<Uri, String> summaryModules) {
     if (moduleItems.isNotEmpty) {
       throw StateError('Can only call emitModule once.');
     }
-    _component = buildUnit;
+    _component = component;
 
     var moduleImports = summaryModules.values.toList();
     for (var i = 0; i < summaries.length; i++) {
@@ -252,7 +252,7 @@
       }
     }
 
-    var libraries = buildUnit.libraries.where((l) => !l.isExternal);
+    var libraries = component.libraries.where((l) => !l.isExternal);
     var ddcRuntime =
         libraries.firstWhere(isSdkInternalRuntime, orElse: () => null);
     if (ddcRuntime != null) {
@@ -335,7 +335,7 @@
     _copyAndFlattenBlocks(items, moduleItems);
 
     // Build the module.
-    return JS.Program(items, name: buildUnit.root.name);
+    return JS.Program(items, name: options.moduleName);
   }
 
   /// Flattens blocks in [items] to a single list.
@@ -3342,6 +3342,11 @@
             [_nullParameterCheck(_emitVariableRef(node.variable)), body]);
       }
 
+      if (variableIsReferenced(node.variable.name, iterable)) {
+        var temp = JS.TemporaryId('iter');
+        return JS.Block(
+            [iterable.toVariableDeclaration(temp), JS.ForOf(init, temp, body)]);
+      }
       return JS.ForOf(init, iterable, body);
     });
   }
diff --git a/pkg/dev_compiler/lib/src/kernel/constants.dart b/pkg/dev_compiler/lib/src/kernel/constants.dart
index b8b52f5..4fc8891 100644
--- a/pkg/dev_compiler/lib/src/kernel/constants.dart
+++ b/pkg/dev_compiler/lib/src/kernel/constants.dart
@@ -182,8 +182,9 @@
   _ConstantEvaluator(TypeEnvironment types, this.declaredVariables,
       {bool enableAsserts})
       : unavailableConstant = InstanceConstant(null, [], {}),
-        super(_ConstantsBackend(types.coreTypes), types, types.coreTypes, true,
-            enableAsserts, const _ErrorReporter()) {
+        super(_ConstantsBackend(types.coreTypes), types, types.coreTypes,
+            enableAsserts,
+            errorReporter: const _ErrorReporter()) {
     env = EvaluationEnvironment();
   }
 
@@ -294,9 +295,10 @@
             .firstWhere((f) => f.name.name == '_name');
 
   @override
-  buildConstantForNative(
-          nativeName, typeArguments, positionalArguments, namedArguments) =>
-      throw StateError('unreachable'); // DDC does not use VM native syntax
+  buildConstantForNative(nativeName, typeArguments, positionalArguments,
+      namedArguments, context, node, errorReporter, abortEvaluation) {
+    throw StateError('unreachable'); // DDC does not use VM native syntax
+  }
 
   @override
   lowerMapConstant(constant) => constant;
diff --git a/pkg/dev_compiler/lib/src/kernel/target.dart b/pkg/dev_compiler/lib/src/kernel/target.dart
index 6258cc0..f215ae7 100644
--- a/pkg/dev_compiler/lib/src/kernel/target.dart
+++ b/pkg/dev_compiler/lib/src/kernel/target.dart
@@ -12,7 +12,7 @@
 class DevCompilerTarget extends Target {
   ClassHierarchy hierarchy;
 
-  bool get strongMode => true; // the only correct answer
+  bool get legacyMode => false;
 
   bool get enableSuperMixins => true;
 
diff --git a/pkg/dev_compiler/test/nullable_inference_test.dart b/pkg/dev_compiler/test/nullable_inference_test.dart
index 651ab0a..f096c90 100644
--- a/pkg/dev_compiler/test/nullable_inference_test.dart
+++ b/pkg/dev_compiler/test/nullable_inference_test.dart
@@ -4,9 +4,7 @@
 
 import 'dart:async';
 import 'dart:io';
-import 'package:front_end/src/api_prototype/memory_file_system.dart';
 import 'package:front_end/src/api_unstable/ddc.dart' as fe;
-import 'package:front_end/src/fasta/type_inference/type_schema_environment.dart';
 import 'package:kernel/core_types.dart';
 import 'package:kernel/kernel.dart';
 import 'package:kernel/class_hierarchy.dart';
@@ -490,7 +488,7 @@
   @override
   visitComponent(Component node) {
     inference ??= NullableInference(JSTypeRep(
-      TypeSchemaEnvironment(CoreTypes(node), ClassHierarchy(node), true),
+      fe.TypeSchemaEnvironment(CoreTypes(node), ClassHierarchy(node), true),
     ));
 
     if (useAnnotations) {
@@ -542,7 +540,7 @@
 }
 
 fe.InitializedCompilerState _compilerState;
-final _fileSystem = MemoryFileSystem(Uri.file('/memory/'));
+final _fileSystem = fe.MemoryFileSystem(Uri.file('/memory/'));
 
 Future<Component> kernelCompile(String code) async {
   var succeeded = true;
diff --git a/pkg/dev_compiler/test/sourcemap/ddc_common.dart b/pkg/dev_compiler/test/sourcemap/ddc_common.dart
index afb62f9..7dbf654 100644
--- a/pkg/dev_compiler/test/sourcemap/ddc_common.dart
+++ b/pkg/dev_compiler/test/sourcemap/ddc_common.dart
@@ -147,10 +147,8 @@
 void createHtmlWrapper(File sdkJsFile, Uri outputFile, String jsContent,
     String outputFilename, Uri outDir) {
   // For debugging via HTML, Chrome and ./tools/testing/dart/http_server.dart.
-  Directory sdkPath = sdkRoot;
-  String jsRootDart =
-      "/root_dart/${new File(path.relative(sdkJsFile.path, from: sdkPath.path))
-      .uri}";
+  var sdkFile = File(path.relative(sdkJsFile.path, from: sdkRoot.path));
+  String jsRootDart = "/root_dart/${sdkFile.uri}";
   File.fromUri(outputFile.resolve("$outputFilename.html.js")).writeAsStringSync(
       jsContent.replaceFirst("from 'dart_sdk'", "from '$jsRootDart'"));
   File.fromUri(outputFile.resolve("$outputFilename.html.html"))
@@ -177,7 +175,6 @@
     import { test } from '$outFileRootBuild';
     let main = test.main;
     dart.ignoreWhitelistedErrors(false);
-    _isolate_helper.startRootIsolate(() => {}, []);
     main();
     </script>
   </head>
diff --git a/pkg/dev_compiler/tool/ddb b/pkg/dev_compiler/tool/ddb
index 60f32c8..52fe107 100755
--- a/pkg/dev_compiler/tool/ddb
+++ b/pkg/dev_compiler/tool/ddb
@@ -166,7 +166,6 @@
     'use strict';
     sdk._debugger.registerDevtoolsFormatter();
     sdk.dart.ignoreWhitelistedErrors($ignoreWhitelistedErrors);
-    sdk._isolate_helper.startRootIsolate(() => {}, []);
     app.$basename.main();
   });
 </script>
diff --git a/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart b/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart
index b05a024..1d3c216 100644
--- a/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart
+++ b/pkg/dev_compiler/tool/input_sdk/patch/io_patch.dart
@@ -530,7 +530,7 @@
 class RawDatagramSocket {
   @patch
   static Future<RawDatagramSocket> bind(host, int port,
-      {bool reuseAddress = true}) {
+      {bool reuseAddress = true, bool reusePort = false, int ttl = 1}) {
     throw UnsupportedError("RawDatagramSocket.bind");
   }
 }
diff --git a/pkg/dev_compiler/tool/input_sdk/private/annotations.dart b/pkg/dev_compiler/tool/input_sdk/private/annotations.dart
index d7409da..1693256 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/annotations.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/annotations.dart
@@ -30,7 +30,7 @@
   const NoReifyGeneric();
 }
 
-/// Enables/disables reificiation of functions within the body of this function.
+/// Enables/disables reification of functions within the body of this function.
 /// ****CAUTION******
 /// This is currently unchecked, and hence should be used very carefully for
 /// internal SDK APIs only.
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart
index c8b2e39..3f848d6 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/classes.dart
@@ -127,6 +127,7 @@
     $throwInternalError('must have at least one generic type argument');
   }
   let resultMap = new Map();
+  $_cacheMaps.push(resultMap);
   function makeGenericType(...args) {
     if (args.length != length && args.length != 0) {
       $throwInternalError('requires ' + length + ' or 0 type arguments');
@@ -446,7 +447,7 @@
 /// Link the extension to the type it's extending as a base class.
 setBaseClass(derived, base) {
   JS('', '#.prototype.__proto__ = #.prototype', derived, base);
-  // We use __proto__ to track the superclass hierarchy (see isSubtype).
+  // We use __proto__ to track the superclass hierarchy (see isSubtypeOf).
   JS('', '#.__proto__ = #', derived, base);
 }
 
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/operations.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/operations.dart
index 09cf403..46eb700 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/operations.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/operations.dart
@@ -390,73 +390,73 @@
 dsetindex(obj, index, value) =>
     callMethod(obj, '_set', null, [index, value], null, '[]=');
 
-/// TODO(leafp): This duplicates code in types.dart.
-/// I haven't found a way to factor it out that makes the
-/// code generator happy though.
-_ignoreMemo(f) => JS('', '''(() => {
-  let memo = new Map();
-  return (t1, t2) => {
-    let map = memo.get(t1);
-    let result;
-    if (map) {
-      result = map.get(t2);
-      if (result !== void 0) return result;
-    } else {
-      memo.set(t1, map = new Map());
-    }
-    result = $f(t1, t2);
-    map.set(t2, result);
-    return result;
-  };
-})()''');
+final _ignoreSubtypeCache = JS('', 'new Map()');
 
-final Object _ignoreTypeFailure = JS('', '''(() => {
-  return $_ignoreMemo((actual, type) => {
-      // TODO(vsm): Remove this hack ...
-      // This is primarily due to the lack of generic methods,
-      // but we need to triage all the types.
-    if ($_isFutureOr(type)) {
-      // Ignore if we would ignore either side of union.
-      let typeArg = $getGenericArgs(type)[0];
-      let typeFuture = ${getGenericClass(Future)}(typeArg);
-      return $_ignoreTypeFailure(actual, typeFuture) ||
-        $_ignoreTypeFailure(actual, typeArg);
-    }
+/// Whether [t1] <: [t2], or if [isImplicit] is set and we should ignore the
+/// cast failure from t1 to t2.
+///
+/// See [_isSubtypeOrLegacySubtype] and [ignoreWhitelistedErrors].
+@notNull
+bool _isSubtypeOrIgnorableCastFailure(
+    Object t1, Object t2, @notNull bool isImplicit) {
+  var result = _isSubtypeOrLegacySubtype(t1, t2);
+  return result == true ||
+      result == null &&
+          isImplicit &&
+          JS<bool>('!', 'dart.__ignoreWhitelistedErrors') &&
+          _ignoreTypeFailure(t1, t2);
+}
 
-    if (!!$isSubtype(type, $Iterable) && !!$isSubtype(actual, $Iterable) ||
-        !!$isSubtype(type, $Future) && !!$isSubtype(actual, $Future)) {
-      console.warn('Ignoring cast fail from ' + $typeName(actual) +
-                   ' to ' + $typeName(type));
-      return true;
+@notNull
+bool _ignoreTypeFailure(Object t1, Object t2) {
+  var map = JS('', '#.get(#)', _ignoreSubtypeCache, t1);
+  if (map != null) {
+    bool result = JS('', '#.get(#)', map, t2);
+    if (JS('!', '# !== void 0', result)) return result;
+  } else {
+    map = JS('', 'new Map()');
+    JS('', '#.set(#, #)', _ignoreSubtypeCache, t1, map);
+  }
+
+  // TODO(vsm): Remove this hack ...
+  // This is primarily due to the lack of generic methods,
+  // but we need to triage all the types.
+  @notNull
+  bool result;
+  if (_isFutureOr(t2)) {
+    // Ignore if we would ignore either side of union.
+    var typeArg = getGenericArgs(t2)[0];
+    var typeFuture = JS('', '#(#)', getGenericClass(Future), typeArg);
+    result =
+        _ignoreTypeFailure(t1, typeFuture) || _ignoreTypeFailure(t1, typeArg);
+  } else {
+    result = t1 is FunctionType && t2 is FunctionType ||
+        isSubtypeOf(t2, unwrapType(Iterable)) &&
+            isSubtypeOf(t1, unwrapType(Iterable)) ||
+        isSubtypeOf(t2, unwrapType(Future)) &&
+            isSubtypeOf(t1, unwrapType(Future));
+    if (result) {
+      _warn('Ignoring cast fail from ${typeName(t1)} to ${typeName(t2)}');
     }
-    return false;
-  });
-})()''');
+  }
+  JS('', '#.set(#, #)', map, t2, result);
+  return result;
+}
 
 @notNull
 @JSExportName('is')
 bool instanceOf(obj, type) {
   if (obj == null) {
-    return JS('!', '# == # || #', type, Null, _isTop(type));
+    return identical(type, unwrapType(Null)) || _isTop(type);
   }
-  return JS('!', '!!#', isSubtype(getReifiedType(obj), type));
+  return isSubtypeOf(getReifiedType(obj), type);
 }
 
 @JSExportName('as')
 cast(obj, type, @notNull bool isImplicit) {
   if (obj == null) return obj;
   var actual = getReifiedType(obj);
-  var result = isSubtype(actual, type);
-  if (JS(
-      '!',
-      '# === true || # === null && # && '
-      'dart.__ignoreWhitelistedErrors && #(#, #)',
-      result,
-      result,
-      isImplicit,
-      _ignoreTypeFailure,
-      actual,
-      type)) {
+  if (_isSubtypeOrIgnorableCastFailure(actual, type, isImplicit)) {
     return obj;
   }
   return castError(obj, type, isImplicit);
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/rtti.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/rtti.dart
index 3797606..ef023d2 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/rtti.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/rtti.dart
@@ -114,17 +114,17 @@
 }
 
 /// Return the module name for a raw library object.
-getModuleName(value) => JS('', '#[#]', value, _moduleName);
+String getModuleName(Object module) => JS('', '#[#]', module, _moduleName);
 
-var _loadedModules = JS('', 'new Map()');
-var _loadedSourceMaps = JS('', 'new Map()');
+final _loadedModules = JS('', 'new Map()');
+final _loadedSourceMaps = JS('', 'new Map()');
 
-List getModuleNames() {
-  return JS('', 'Array.from(#.keys())', _loadedModules);
+List<String> getModuleNames() {
+  return JSArray<String>.of(JS('', 'Array.from(#.keys())', _loadedModules));
 }
 
-String getSourceMap(module) {
-  return JS<String>('!', '#.get(#)', _loadedSourceMaps, module);
+String getSourceMap(String moduleName) {
+  return JS('!', '#.get(#)', _loadedSourceMaps, moduleName);
 }
 
 /// Return all library objects in the specified module.
@@ -136,7 +136,7 @@
 }
 
 /// Track all libraries
-void trackLibraries(String moduleName, libraries, sourceMap) {
+void trackLibraries(String moduleName, Object libraries, String sourceMap) {
   JS('', '#.set(#, #)', _loadedSourceMaps, moduleName, sourceMap);
   JS('', '#.set(#, #)', _loadedModules, moduleName, libraries);
 }
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart
index 39e38c1..82289ddd 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/runtime.dart
@@ -154,3 +154,31 @@
 void setStartAsyncSynchronously([bool value = true]) {
   startAsyncSynchronously = value;
 }
+
+/// A list of all JS Maps used for caching results, such as by [isSubtypeOf] and
+/// [generic].
+///
+/// This is used by [hotRestart] to ensure we don't leak types from previous
+/// libraries.
+@notNull
+final List<Object> _cacheMaps = JS('!', '[]');
+
+/// A list of functions to reset static fields back to their uninitialized
+/// state.
+///
+/// This is populated by [defineLazyField].
+@notNull
+final List<void Function()> _resetFields = JS('', '[]');
+
+/// Clears out runtime state in `dartdevc` so we can hot-restart.
+///
+/// This should be called when the user requests a hot-restart, when the UI is
+/// handling that user action.
+void hotRestart() {
+  for (var f in _resetFields) f();
+  _resetFields.clear();
+  for (var m in _cacheMaps) JS('', '#.clear()', m);
+  _cacheMaps.clear();
+  JS('', '#.clear()', constantMaps);
+  JS('', '#.clear()', _ignoreSubtypeCache);
+}
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
index c7ab6d8..4602bc2 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/types.dart
@@ -242,7 +242,7 @@
 final _typeObject = JS('', 'Symbol("typeObject")');
 
 /// Given a WrappedType, return the internal runtime type object.
-Object unwrapType(_Type obj) => obj._type;
+Object unwrapType(Type obj) => JS<_Type>('', '#', obj)._type;
 
 // Marker class for generic functions, typedefs, and non-generic functions.
 abstract class AbstractFunctionType extends DartType {}
@@ -465,18 +465,11 @@
       var actual = JS('', '#[#]', obj, _runtimeType);
       // If there's no actual type, it's a JS function.
       // Allow them to subtype all Dart function types.
-      return JS('!', '# == null || !!#', actual, isSubtype(actual, this));
+      return actual == null || isSubtypeOf(actual, this);
     }
     return false;
   }
 
-  static final void Function(Object, Object) _logIgnoredCast =
-      JS('', '''(() => $_ignoreMemo((actual, expected) => {
-        console.warn('Ignoring cast fail from ' + $typeName(actual) +
-                     ' to ' + $typeName(expected));
-        return null;
-        }))()''');
-
   @JSExportName('as')
   as_T(obj, [@notNull bool isImplicit = false]) {
     if (obj == null) return obj;
@@ -484,13 +477,8 @@
       var actual = JS('', '#[#]', obj, _runtimeType);
       // If there's no actual type, it's a JS function.
       // Allow them to subtype all Dart function types.
-      if (actual == null) return obj;
-      var result = isSubtype(actual, this);
-      if (result == true) return obj;
-      if (result == null &&
-          isImplicit &&
-          JS<bool>('!', 'dart.__ignoreWhitelistedErrors')) {
-        _logIgnoredCast(actual, this);
+      if (actual == null ||
+          _isSubtypeOrIgnorableCastFailure(actual, this, isImplicit)) {
         return obj;
       }
     }
@@ -535,7 +523,7 @@
     var bounds = instantiateTypeBounds(typeArgs);
     var typeFormals = this.typeFormals;
     for (var i = 0; i < typeArgs.length; i++) {
-      checkTypeBound(typeArgs[i], bounds[i], typeFormals[i]);
+      checkTypeBound(typeArgs[i], bounds[i], typeFormals[i].name);
     }
   }
 
@@ -658,7 +646,7 @@
   bool is_T(obj) {
     if (JS('!', 'typeof # == "function"', obj)) {
       var actual = JS('', '#[#]', obj, _runtimeType);
-      return JS('!', '# != null && !!#', actual, isSubtype(actual, this));
+      return actual != null && isSubtypeOf(actual, this);
     }
     return false;
   }
@@ -732,12 +720,11 @@
 @notNull
 bool isType(obj) => JS('', '#[#] === #', obj, _runtimeType, Type);
 
-void checkTypeBound(type, bound, name) {
-  // TODO(jmesserly): we've optimized `is`/`as`/implicit type checks, it would
-  // be nice to have similar optimizations for the subtype relation.
-  if (JS('!', '#', isSubtype(type, bound))) return;
-
-  throwTypeError('type `$type` does not extend `$bound` of `$name`.');
+void checkTypeBound(
+    @notNull Object type, @notNull Object bound, @notNull String name) {
+  if (!isSubtypeOf(type, bound)) {
+    throwTypeError('type `$type` does not extend `$bound` of `$name`.');
+  }
 }
 
 @notNull
@@ -793,7 +780,7 @@
 
   for (let i = 0; i < args1.length; ++i) {
     if (!$_isSubtype(args2[i], args1[i], !$isCovariant)) {
-      // Even if isSubtype returns false, assignability
+      // Even if isSubtypeOf returns false, assignability
       // means that we can't be definitive
       return null;
     }
@@ -845,25 +832,29 @@
   return true;
 })()''');
 
+/// Whether [t1] <: [t2].
+@notNull
+bool isSubtypeOf(Object t1, Object t2) {
+  // TODO(jmesserly): we've optimized `is`/`as`/implicit type checks, so they're
+  // dispatched on the type. Can we optimize the subtype relation too?
+  return JS('!', '!!#', _isSubtypeOrLegacySubtype(t1, t2));
+}
+
 /// Returns true if [t1] <: [t2].
-/// Returns false if [t1] </: [t2] in both spec and strong mode
-/// Returns undefined if [t1] </: [t2] in strong mode, but spec
-///  mode may differ
-bool isSubtype(t1, t2) {
-  // TODO(leafp): This duplicates code in operations.dart.
-  // I haven't found a way to factor it out that makes the
-  // code generator happy though.
-  var map;
-  bool result;
+/// Returns false if [t1] </: [t2] and we should not ignore this cast failure.
+/// Returns null if [t1] </: [t2] and we should ignore this cast failure when
+/// the appropriate flags are set.
+bool _isSubtypeOrLegacySubtype(Object t1, Object t2) {
+  Object map;
   if (JS('!', '!#.hasOwnProperty(#)', t1, _subtypeCache)) {
     JS('', '#[#] = # = new Map()', t1, _subtypeCache, map);
+    _cacheMaps.add(map);
   } else {
     map = JS('', '#[#]', t1, _subtypeCache);
-    result = JS('bool|Null', '#.get(#)', map, t2);
+    bool result = JS('', '#.get(#)', map, t2);
     if (JS('!', '# !== void 0', result)) return result;
   }
-  result =
-      JS('bool|Null', '# === # || #(#, #, true)', t1, t2, _isSubtype, t1, t2);
+  var result = _isSubtype(t1, t2, true);
   JS('', '#.set(#, #)', map, t2, result);
   return result;
 }
@@ -882,6 +873,7 @@
       type, void_);
 }
 
+@notNull
 bool _isFutureOr(type) =>
     identical(getGenericClass(type), getGenericClass(FutureOr));
 
@@ -1399,11 +1391,11 @@
 
   void _constrainLower(Object type) {
     if (lower != null) {
-      if (isSubtype(lower, type)) {
+      if (isSubtypeOf(lower, type)) {
         // nothing to do, existing lower bound is lower than the new one.
         return;
       }
-      if (!isSubtype(type, lower)) {
+      if (!isSubtypeOf(type, lower)) {
         // Neither bound is lower and we don't have GLB, so use bottom type.
         type = unwrapType(Null);
       }
@@ -1413,11 +1405,11 @@
 
   void _constrainUpper(Object type) {
     if (upper != null) {
-      if (isSubtype(type, upper)) {
+      if (isSubtypeOf(type, upper)) {
         // nothing to do, existing upper bound is higher than the new one.
         return;
       }
-      if (!isSubtype(upper, type)) {
+      if (!isSubtypeOf(upper, type)) {
         // Neither bound is higher and we don't have LUB, so use top type.
         type = unwrapType(Object);
       }
diff --git a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/utils.dart b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/utils.dart
index 3ee1721..dcaf067 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/utils.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/ddc_runtime/utils.dart
@@ -68,7 +68,8 @@
 // TODO(jmesserly): reusing descriptor objects has been shown to improve
 // performance in other projects (e.g. webcomponents.js ShadowDOM polyfill).
 defineLazyField(to, name, desc) => JS('', '''(() => {
-  let init = $desc.get;
+  const initializer = $desc.get;
+  let init = initializer;
   let value = null;
   $desc.get = function() {
     if (init == null) return value;
@@ -92,6 +93,10 @@
       value = x;
     };
   }
+  $_resetFields.push(() => {
+    init = initializer;
+    value = null;
+  });
   return ${defineProperty(to, name, desc)};
 })()''');
 
diff --git a/pkg/dev_compiler/tool/input_sdk/private/debugger.dart b/pkg/dev_compiler/tool/input_sdk/private/debugger.dart
index 86592dc..6ee554b 100644
--- a/pkg/dev_compiler/tool/input_sdk/private/debugger.dart
+++ b/pkg/dev_compiler/tool/input_sdk/private/debugger.dart
@@ -967,14 +967,14 @@
   JS('', '#.devtoolsFormatters = [#]', dart.global_, _devtoolsFormatter);
 }
 
-// Expose these methods here to facilitate writing debugger tests.
-// If export worked for private SDK libraries we could just export
-// these methods from dart:_runtime.
-
-getModuleNames() {
-  return dart.getModuleNames();
-}
-
-getModuleLibraries(String name) {
-  return dart.getModuleLibraries(name);
-}
+// These methods are exposed here for debugger tests.
+//
+// TODO(jmesserly): these are not exports because there is existing code that
+// calls into them from JS. Currently `dartdevc` always resolves exports at
+// compile time, so there is no need to make exports available at runtime by
+// copying properties. For that reason we cannot use re-export.
+//
+// If these methods are only for tests, we should move them here, or change the
+// tests to call the methods directly on dart:_runtime.
+List<String> getModuleNames() => dart.getModuleNames();
+getModuleLibraries(String name) => dart.getModuleLibraries(name);
diff --git a/pkg/dev_compiler/tool/kernel_sdk.dart b/pkg/dev_compiler/tool/kernel_sdk.dart
index 6e8e5d3..bd401c2 100755
--- a/pkg/dev_compiler/tool/kernel_sdk.dart
+++ b/pkg/dev_compiler/tool/kernel_sdk.dart
@@ -13,38 +13,36 @@
 import 'package:dev_compiler/src/kernel/target.dart';
 import 'package:dev_compiler/src/kernel/command.dart';
 import 'package:dev_compiler/src/kernel/compiler.dart';
-import 'package:front_end/src/api_prototype/compiler_options.dart';
-import 'package:front_end/src/api_prototype/kernel_generator.dart';
+import 'package:front_end/src/api_unstable/ddc.dart'
+    show CompilerOptions, kernelForComponent;
 import 'package:kernel/kernel.dart';
 import 'package:path/path.dart' as path;
 
 Future main(List<String> args) async {
-  // Parse flags.
-  var parser = ArgParser();
-  var parserOptions = parser.parse(args);
-  var rest = parserOptions.rest;
-
   var ddcPath = path.dirname(path.dirname(path.fromUri(Platform.script)));
-  Directory.current = ddcPath;
 
-  String outputPath;
-  if (rest.isNotEmpty) {
-    outputPath = path.absolute(rest[0]);
-  } else {
+  // Parse flags.
+  var parser = ArgParser()
+    ..addOption('output')
+    ..addOption('libraries',
+        defaultsTo: path.join(ddcPath, '../../sdk/lib/libraries.json'));
+  var parserOptions = parser.parse(args);
+
+  var outputPath = parserOptions['output'] as String;
+  if (outputPath == null) {
     var sdkRoot = path.absolute(path.dirname(path.dirname(ddcPath)));
     var buildDir = path.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out');
     var genDir = path.join(buildDir, 'ReleaseX64', 'gen', 'utils', 'dartdevc');
     outputPath = path.join(genDir, 'kernel', 'ddc_sdk.dill');
   }
 
-  var inputPath = path.absolute('tool/input_sdk');
   var target = DevCompilerTarget();
   var options = CompilerOptions()
     ..compileSdk = true
-    ..packagesFileUri = path.toUri(path.absolute('../../.packages'))
-    ..sdkRoot = path.toUri(inputPath)
+    // TODO(sigmund): remove this unnecessary option when possible.
+    ..sdkRoot = Uri.base
     ..librariesSpecificationUri =
-        Uri.base.resolve('../../sdk/lib/libraries.json')
+        Uri.base.resolveUri(Uri.file(parserOptions['libraries']))
     ..target = target;
 
   var inputs = target.extraRequiredLibraries.map(Uri.parse).toList();
@@ -54,9 +52,11 @@
   await Directory(outputDir).create(recursive: true);
   await writeComponentToBinary(component, outputPath);
 
-  var jsModule =
-      ProgramCompiler(component, target.hierarchy, SharedCompilerOptions(), {})
-          .emitModule(component, [], {});
+  var jsModule = ProgramCompiler(
+      component,
+      target.hierarchy,
+      SharedCompilerOptions(moduleName: 'dart_sdk'),
+      {}).emitModule(component, [], {});
   var moduleFormats = {
     'amd': ModuleFormat.amd,
     'common': ModuleFormat.common,
diff --git a/pkg/dev_compiler/web/web_command.dart b/pkg/dev_compiler/web/web_command.dart
index fc55a53..22e0228 100644
--- a/pkg/dev_compiler/web/web_command.dart
+++ b/pkg/dev_compiler/web/web_command.dart
@@ -29,7 +29,7 @@
 
 import 'package:dev_compiler/src/analyzer/context.dart' show AnalyzerOptions;
 import 'package:dev_compiler/src/analyzer/module_compiler.dart'
-    show BuildUnit, CompilerOptions, JSModuleFile, ModuleCompiler;
+    show CompilerOptions, JSModuleFile, ModuleCompiler;
 
 import 'package:dev_compiler/src/compiler/module_builder.dart';
 import 'package:js/js.dart';
@@ -293,15 +293,14 @@
       }
       resources.newFile(fileName, sourceCode);
 
-      var unit = BuildUnit(libraryName, "", [fileName]);
-
-      JSModuleFile module = compiler.compile(unit, compilerOptions);
+      compilerOptions.moduleName = path.toUri(libraryName).toString();
+      JSModuleFile module = compiler.compile([fileName], compilerOptions);
 
       var moduleCode = '';
       if (module.isValid) {
-        moduleCode = module
-            .getCode(ModuleFormat.legacyConcat, unit.name, unit.name + '.map')
-            .code;
+        var name = compilerOptions.moduleName;
+        moduleCode =
+            module.getCode(ModuleFormat.legacyConcat, name, name + '.map').code;
       }
 
       return CompileResult(
diff --git a/pkg/expect/lib/async_minitest.dart b/pkg/expect/lib/async_minitest.dart
index 4457db9..6d135bc 100644
--- a/pkg/expect/lib/async_minitest.dart
+++ b/pkg/expect/lib/async_minitest.dart
@@ -96,7 +96,7 @@
 }
 
 Function expectAsync(Function f, {int count = 1}) {
-  var f2 = f; // Avoid type-promoting f, we want dynamic invoations.
+  var f2 = f; // Avoid type-promoting f, we want dynamic invocations.
   var test = _currentTest;
   if (f2 is Function(Null, Null, Null, Null, Null)) {
     test.asyncWait(count);
diff --git a/pkg/front_end/lib/src/api_prototype/compilation_message.dart b/pkg/front_end/lib/src/api_prototype/compilation_message.dart
deleted file mode 100644
index 0b4f6fe..0000000
--- a/pkg/front_end/lib/src/api_prototype/compilation_message.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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.
-
-/// Defines the API for the front end to communicate information about
-/// compilation messages to clients.
-library front_end.compilation_message;
-
-import 'package:source_span/source_span.dart' show SourceSpan;
-
-import '../fasta/severity.dart' show Severity;
-export '../fasta/severity.dart' show Severity;
-
-/// A single message, typically an error, reported during compilation, and
-/// information about where it occurred and suggestions on how to fix it.
-///
-/// Not intended to be implemented or extended by clients.
-abstract class CompilationMessage {
-  /// A text description of the problem.
-  String get message;
-
-  /// A suggestion for how to fix the problem. May be `null`.
-  String get tip;
-
-  /// The source span where the error occurred.
-  SourceSpan get span;
-
-  /// The severity level of the error.
-  Severity get severity;
-
-  /// Front-end error code name.
-  String get code;
-
-  /// The corresponding analyzer error code, or null if there is no
-  /// corresponding message in analyzer.
-  String get analyzerCode;
-}
diff --git a/pkg/front_end/lib/src/api_prototype/compiler_options.dart b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
index 076ec72..fcc9865 100644
--- a/pkg/front_end/lib/src/api_prototype/compiler_options.dart
+++ b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
@@ -6,30 +6,14 @@
 
 import 'package:kernel/target/targets.dart' show Target;
 
-import '../fasta/fasta_codes.dart' show FormattedMessage;
-
-import '../fasta/severity.dart' show Severity;
-
-import 'compilation_message.dart' show CompilationMessage;
-
 import 'diagnostic_message.dart' show DiagnosticMessageHandler;
 
 import 'file_system.dart' show FileSystem;
 
 import 'standard_file_system.dart' show StandardFileSystem;
 
-export '../fasta/fasta_codes.dart' show FormattedMessage;
-
-export '../fasta/severity.dart' show Severity;
-
 export 'diagnostic_message.dart' show DiagnosticMessage;
 
-/// Callback used to report errors encountered during compilation.
-typedef void ErrorHandler(CompilationMessage error);
-
-typedef void ProblemHandler(FormattedMessage problem, Severity severity,
-    List<FormattedMessage> context);
-
 /// Front-end options relevant to compiler back ends.
 ///
 /// Not intended to be implemented or extended by clients.
@@ -52,28 +36,8 @@
   /// `lib/libraries.json`.
   Uri librariesSpecificationUri;
 
-  /// Callback to which compilation errors should be delivered.
-  ///
-  /// By default, when no callback is provided, the compiler will report
-  /// messages on the console and will throw when fatal errors are discovered.
-  ErrorHandler onError;
-
-  ProblemHandler onProblem;
-
   DiagnosticMessageHandler onDiagnostic;
 
-  /// Whether messages should be reported using the compiler's internal
-  /// reporting mechanism.
-  ///
-  /// If no [onError] handler is provided, the default is true. If an [onError]
-  /// handler is provided, the default is false. Setting this to true will
-  /// ensure that error messages are printed in the console and that fatal
-  /// errors cause an exception.
-  // TODO(sigmund): add also an API for formatting errors and provide a default
-  // formatter. This way user can configure error style in the console and in
-  // generated code that contains error messages.
-  bool reportMessages;
-
   /// URI of the ".packages" file (typically a "file:" URI).
   ///
   /// If `null`, the ".packages" file will be found via the standard
@@ -137,8 +101,8 @@
   @deprecated
   bool chaseDependencies;
 
-  /// Whether to interpret Dart sources in strong-mode.
-  bool strongMode = true;
+  /// True if enabling legacy mode (Dart 1 compatibility).
+  bool legacyMode = false;
 
   /// Patch files to apply on the core libraries for a specific target platform.
   ///
@@ -181,8 +145,7 @@
   /// Whether to run extra verification steps to validate that compiled
   /// components are well formed.
   ///
-  /// Errors are reported via the [onError] callback.
-  // TODO(sigmund): ensure we don't print errors to stdout (Issue #30056)
+  /// Errors are reported via the [onDiagnostic] callback.
   bool verify = false;
 
   /// Whether to dump generated components in a text format (also mainly for
diff --git a/pkg/front_end/lib/src/api_prototype/diagnostic_message.dart b/pkg/front_end/lib/src/api_prototype/diagnostic_message.dart
index b4497d0..e34b709 100644
--- a/pkg/front_end/lib/src/api_prototype/diagnostic_message.dart
+++ b/pkg/front_end/lib/src/api_prototype/diagnostic_message.dart
@@ -4,6 +4,8 @@
 
 library front_end.diagnostic_message;
 
+import '../fasta/fasta_codes.dart' show Code, FormattedMessage;
+
 import '../fasta/severity.dart' show Severity;
 
 /// The type of a diagnostic message callback. For example:
@@ -32,7 +34,29 @@
   Iterable<String> get plainTextFormatted;
 
   Severity get severity;
+}
 
-  // TODO(ahe): Rename this, it's actually an error code.
-  int get index;
+/// This method is subject to change.
+Uri getMessageUri(DiagnosticMessage message) {
+  return message is FormattedMessage ? message.uri : null;
+}
+
+/// This method is subject to change.
+Code getMessageCodeObject(DiagnosticMessage message) {
+  return message is FormattedMessage ? message.code : null;
+}
+
+/// This method is subject to change.
+String getMessageHeaderText(DiagnosticMessage message) {
+  return message is FormattedMessage ? message.message : null;
+}
+
+/// This method is subject to change.
+int getMessageCode(DiagnosticMessage message) {
+  return message is FormattedMessage ? message.code.index : -1;
+}
+
+/// This method is subject to change.
+Map<String, dynamic> getMessageArguments(DiagnosticMessage message) {
+  return message is FormattedMessage ? message.arguments : null;
 }
diff --git a/pkg/front_end/lib/src/api_prototype/front_end.dart b/pkg/front_end/lib/src/api_prototype/front_end.dart
index 60867d9..3830dbe 100644
--- a/pkg/front_end/lib/src/api_prototype/front_end.dart
+++ b/pkg/front_end/lib/src/api_prototype/front_end.dart
@@ -8,7 +8,6 @@
 library front_end.front_end;
 
 export 'compiler_options.dart';
-export 'compilation_message.dart';
 export 'kernel_generator.dart';
 export 'summary_generator.dart';
 export 'file_system.dart';
diff --git a/pkg/front_end/lib/src/api_prototype/terminal_color_support.dart b/pkg/front_end/lib/src/api_prototype/terminal_color_support.dart
index 382cdb1..4d866f3 100644
--- a/pkg/front_end/lib/src/api_prototype/terminal_color_support.dart
+++ b/pkg/front_end/lib/src/api_prototype/terminal_color_support.dart
@@ -10,11 +10,22 @@
 
 import '../fasta/colors.dart' show ALL_CODES, TERMINAL_CAPABILITIES;
 
+import 'diagnostic_message.dart' show DiagnosticMessage;
+
 /// True if we should enable colors in output.
 ///
 /// We enable colors only when both [stdout] and [stderr] support ANSI escapes.
 final bool enableTerminalColors = _computeEnableColors();
 
+void printDiagnosticMessage(
+    DiagnosticMessage message, void Function(String) println) {
+  if (enableTerminalColors) {
+    message.ansiFormatted.forEach(println);
+  } else {
+    message.plainTextFormatted.forEach(println);
+  }
+}
+
 /// On Windows, colors are enabled if both stdout and stderr supports ANSI
 /// escapes.  On other platforms, we rely on the external programs `tty` and
 /// `tput` to compute if ANSI colors are supported.
diff --git a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
index 969bd01..6196ba7 100644
--- a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
+++ b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
@@ -9,19 +9,30 @@
 
 import 'package:kernel/target/targets.dart' show Target;
 
-import '../api_prototype/file_system.dart';
-import '../base/processed_options.dart';
-import '../kernel_generator_impl.dart';
+import '../api_prototype/compiler_options.dart' show CompilerOptions;
 
-import '../api_prototype/compiler_options.dart';
-import 'compiler_state.dart';
+import '../api_prototype/diagnostic_message.dart' show DiagnosticMessageHandler;
 
-export 'compiler_state.dart';
+import '../api_prototype/file_system.dart' show FileSystem;
+
+import '../base/processed_options.dart' show ProcessedOptions;
+
+import '../fasta/kernel/utils.dart' show serializeComponent;
+
+import '../kernel_generator_impl.dart' show generateKernel;
+
+import 'compiler_state.dart' show InitializedCompilerState;
+
+export '../api_prototype/diagnostic_message.dart' show DiagnosticMessage;
 
 export '../api_prototype/standard_file_system.dart' show StandardFileSystem;
-export '../fasta/fasta_codes.dart' show FormattedMessage;
+
+export '../api_prototype/terminal_color_support.dart'
+    show printDiagnosticMessage;
+
 export '../fasta/severity.dart' show Severity;
-import '../fasta/kernel/utils.dart' show serializeComponent;
+
+export 'compiler_state.dart' show InitializedCompilerState;
 
 Future<InitializedCompilerState> initializeCompiler(
     InitializedCompilerState oldState,
@@ -50,11 +61,11 @@
 }
 
 Future<List<int>> compile(InitializedCompilerState compilerState,
-    List<Uri> inputs, ProblemHandler problemHandler,
+    List<Uri> inputs, DiagnosticMessageHandler diagnosticMessageHandler,
     {bool summaryOnly}) async {
   summaryOnly ??= true;
   CompilerOptions options = compilerState.options;
-  options..onProblem = problemHandler;
+  options..onDiagnostic = diagnosticMessageHandler;
 
   ProcessedOptions processedOpts = compilerState.processedOpts;
   processedOpts.inputs.clear();
@@ -69,7 +80,7 @@
       if (!inputs.contains(lib.importUri)) {
         // Excluding the library also means that their canonical names will not
         // be computed as part of serialization, so we need to do that
-        // preemtively here to avoid errors when serializing references to
+        // preemptively here to avoid errors when serializing references to
         // elements of these libraries.
         component.root.getChildFromUri(lib.importUri).bindTo(lib.reference);
         lib.computeCanonicalNames();
diff --git a/pkg/front_end/lib/src/api_unstable/dart2js.dart b/pkg/front_end/lib/src/api_unstable/dart2js.dart
index f6a3ce0..5f2036e 100644
--- a/pkg/front_end/lib/src/api_unstable/dart2js.dart
+++ b/pkg/front_end/lib/src/api_unstable/dart2js.dart
@@ -106,7 +106,7 @@
 
   CompilerOptions options = new CompilerOptions()
     ..target = target
-    ..strongMode = target.strongMode
+    ..legacyMode = target.legacyMode
     ..linkedDependencies = [sdkPlatformUri]
     ..librariesSpecificationUri = librariesSpecificationUri
     ..packagesFileUri = packagesFileUri;
diff --git a/pkg/front_end/lib/src/api_unstable/ddc.dart b/pkg/front_end/lib/src/api_unstable/ddc.dart
index a0615a3..dcc4c43 100644
--- a/pkg/front_end/lib/src/api_unstable/ddc.dart
+++ b/pkg/front_end/lib/src/api_unstable/ddc.dart
@@ -22,13 +22,28 @@
 
 import 'compiler_state.dart' show InitializedCompilerState;
 
+export '../api_prototype/compiler_options.dart' show CompilerOptions;
+
 export '../api_prototype/diagnostic_message.dart' show DiagnosticMessage;
 
+export '../api_prototype/kernel_generator.dart' show kernelForComponent;
+
+export '../api_prototype/memory_file_system.dart' show MemoryFileSystem;
+
+export '../api_prototype/standard_file_system.dart' show StandardFileSystem;
+
+export '../api_prototype/terminal_color_support.dart'
+    show printDiagnosticMessage;
+
+export '../fasta/kernel/redirecting_factory_body.dart'
+    show RedirectingFactoryBody;
+
 export '../fasta/severity.dart' show Severity;
 
-export 'compiler_state.dart' show InitializedCompilerState;
+export '../fasta/type_inference/type_schema_environment.dart'
+    show TypeSchemaEnvironment;
 
-export 'vm.dart' show printDiagnosticMessage;
+export 'compiler_state.dart' show InitializedCompilerState;
 
 class DdcResult {
   final Component component;
diff --git a/pkg/front_end/lib/src/api_unstable/vm.dart b/pkg/front_end/lib/src/api_unstable/vm.dart
index a07b57c..710b58a 100644
--- a/pkg/front_end/lib/src/api_unstable/vm.dart
+++ b/pkg/front_end/lib/src/api_unstable/vm.dart
@@ -2,17 +2,10 @@
 // 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 '../api_prototype/diagnostic_message.dart' show DiagnosticMessage;
-
-import '../api_prototype/terminal_color_support.dart' show enableTerminalColors;
-
-import '../fasta/fasta_codes.dart' show FormattedMessage;
-
-export '../api_prototype/compiler_options.dart'
-    show CompilerOptions, ProblemHandler;
+export '../api_prototype/compiler_options.dart' show CompilerOptions;
 
 export '../api_prototype/diagnostic_message.dart'
-    show DiagnosticMessage, DiagnosticMessageHandler;
+    show DiagnosticMessage, DiagnosticMessageHandler, getMessageUri;
 
 export '../api_prototype/file_system.dart'
     show FileSystem, FileSystemEntity, FileSystemException;
@@ -27,6 +20,9 @@
 
 export '../api_prototype/standard_file_system.dart' show StandardFileSystem;
 
+export '../api_prototype/terminal_color_support.dart'
+    show printDiagnosticMessage;
+
 export '../base/processed_options.dart' show ProcessedOptions;
 
 export '../compute_platform_binaries_location.dart'
@@ -59,14 +55,3 @@
 export '../fasta/kernel/utils.dart' show serializeComponent, serializeProcedure;
 
 export '../fasta/severity.dart' show Severity;
-
-Uri getMessageUri(FormattedMessage message) => message.uri;
-
-void printDiagnosticMessage(
-    DiagnosticMessage message, void Function(String) println) {
-  if (enableTerminalColors) {
-    message.ansiFormatted.forEach(println);
-  } else {
-    message.plainTextFormatted.forEach(println);
-  }
-}
diff --git a/pkg/front_end/lib/src/base/processed_options.dart b/pkg/front_end/lib/src/base/processed_options.dart
index d930494..9858ea16 100644
--- a/pkg/front_end/lib/src/base/processed_options.dart
+++ b/pkg/front_end/lib/src/base/processed_options.dart
@@ -2,6 +2,8 @@
 // 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' show exitCode;
+
 import 'dart:async' show Future;
 
 import 'dart:typed_data' show Uint8List;
@@ -19,17 +21,19 @@
 
 import 'package:package_config/src/packages_impl.dart' show MapPackages;
 
-import 'package:source_span/source_span.dart' show SourceSpan, SourceLocation;
-
-import '../api_prototype/compilation_message.dart' show CompilationMessage;
-
-import '../api_prototype/compiler_options.dart' show CompilerOptions;
+import '../api_prototype/compiler_options.dart'
+    show CompilerOptions, DiagnosticMessage;
 
 import '../api_prototype/file_system.dart'
     show FileSystem, FileSystemEntity, FileSystemException;
 
+import '../api_prototype/terminal_color_support.dart'
+    show printDiagnosticMessage;
+
 import '../fasta/command_line_reporting.dart' as command_line_reporting;
 
+import '../fasta/compiler_context.dart' show CompilerContext;
+
 import '../fasta/fasta_codes.dart'
     show
         FormattedMessage,
@@ -59,8 +63,6 @@
 
 import '../fasta/uri_translator.dart' show UriTranslator;
 
-import '../fasta/uri_translator_impl.dart' show UriTranslatorImpl;
-
 import 'libraries_specification.dart'
     show
         LibrariesSpecification,
@@ -95,7 +97,7 @@
 
   /// The object that knows how to resolve "package:" and "dart:" URIs,
   /// or `null` if it has not been computed yet.
-  UriTranslatorImpl _uriTranslator;
+  UriTranslator _uriTranslator;
 
   /// The SDK summary, or `null` if it has not been read yet.
   ///
@@ -179,11 +181,6 @@
         // collecting time since the start of the VM.
         this.ticker = new Ticker(isVerbose: options?.verbose ?? false);
 
-  bool get _reportMessages {
-    return _raw.onProblem == null &&
-        (_raw.reportMessages ?? (_raw.onError == null));
-  }
-
   FormattedMessage format(
       LocatedMessage message, Severity severity, List<LocatedMessage> context) {
     int offset = message.charOffset;
@@ -204,38 +201,23 @@
 
   void report(LocatedMessage message, Severity severity,
       {List<LocatedMessage> context}) {
-    context ??= const <LocatedMessage>[];
-    if (_raw.onDiagnostic != null) {
-      _raw.onDiagnostic(format(message, severity, context));
-      return;
-    } else if (_raw.onProblem != null) {
-      List<FormattedMessage> formattedContext =
-          new List<FormattedMessage>(context.length);
-      for (int i = 0; i < context.length; i++) {
-        formattedContext[i] = format(context[i], Severity.context, null);
-      }
-      _raw.onProblem(
-          format(message, severity, null), severity, formattedContext);
-      if (command_line_reporting.shouldThrowOn(severity)) {
-        throw new DebugAbort(
-            message.uri, message.charOffset, severity, StackTrace.current);
-      }
-      return;
+    if (command_line_reporting.isHidden(severity)) return;
+    if (command_line_reporting.isCompileTimeError(severity)) {
+      CompilerContext.current.logError(message, severity);
     }
+    if (CompilerContext.current.options.setExitCodeOnProblem) {
+      exitCode = 1;
+    }
+    (_raw.onDiagnostic ??
+        _defaultDiagnosticMessageHandler)(format(message, severity, context));
+    if (command_line_reporting.shouldThrowOn(severity)) {
+      throw new DebugAbort(
+          message.uri, message.charOffset, severity, StackTrace.current);
+    }
+  }
 
-    // Deprecated reporting mechanisms
-    if (_raw.onError != null) {
-      _raw.onError(new _CompilationMessage(message, severity));
-      for (LocatedMessage message in context) {
-        _raw.onError(new _CompilationMessage(message, Severity.context));
-      }
-    }
-    if (_reportMessages) {
-      command_line_reporting.report(message, severity);
-      for (LocatedMessage message in context) {
-        command_line_reporting.report(message, Severity.context);
-      }
-    }
+  void _defaultDiagnosticMessageHandler(DiagnosticMessage message) {
+    printDiagnosticMessage(message, print);
   }
 
   // TODO(askesc): Remove this and direct callers directly to report.
@@ -300,15 +282,14 @@
   /// effect.
   void clearFileSystemCache() => _fileSystem = null;
 
-  /// Whether to interpret Dart sources in strong-mode.
-  bool get strongMode => _raw.strongMode;
+  bool get legacyMode => _raw.legacyMode;
 
   /// Whether to generate bytecode.
   bool get bytecode => _raw.bytecode;
 
   Target _target;
   Target get target => _target ??=
-      _raw.target ?? new NoneTarget(new TargetFlags(strongMode: strongMode));
+      _raw.target ?? new NoneTarget(new TargetFlags(legacyMode: legacyMode));
 
   /// Get an outline component that summarizes the SDK, if any.
   // TODO(sigmund): move, this doesn't feel like an "option".
@@ -383,7 +364,7 @@
   ///
   /// This is an asynchronous method since file system operations may be
   /// required to locate/read the packages file as well as SDK metadata.
-  Future<UriTranslatorImpl> getUriTranslator({bool bypassCache: false}) async {
+  Future<UriTranslator> getUriTranslator({bool bypassCache: false}) async {
     if (bypassCache) {
       _uriTranslator = null;
       _packages = null;
@@ -394,7 +375,7 @@
       ticker.logMs("Read libraries file");
       var packages = await _getPackages();
       ticker.logMs("Read packages file");
-      _uriTranslator = new UriTranslatorImpl(libraries, packages);
+      _uriTranslator = new UriTranslator(libraries, packages);
     }
     return _uriTranslator;
   }
@@ -606,8 +587,8 @@
     sb.writeln('Inputs: ${inputs}');
     sb.writeln('Output: ${output}');
 
-    sb.writeln('Was error handler provided: '
-        '${_raw.onError == null ? "no" : "yes"}');
+    sb.writeln('Was diagnostic message handler provided: '
+        '${_raw.onDiagnostic == null ? "no" : "yes"}');
 
     sb.writeln('FileSystem: ${_fileSystem.runtimeType} '
         '(provided: ${_raw.fileSystem.runtimeType})');
@@ -624,7 +605,7 @@
         '(provided: ${_raw.librariesSpecificationUri})');
     sb.writeln('SDK summary: ${_sdkSummary} (provided: ${_raw.sdkSummary})');
 
-    sb.writeln('Strong: ${strongMode}');
+    sb.writeln('Legacy mode: ${legacyMode}');
     sb.writeln('Target: ${_target?.name} (provided: ${_raw.target?.name})');
 
     sb.writeln('throwOnErrorsForDebugging: ${throwOnErrorsForDebugging}');
@@ -676,30 +657,3 @@
   @override
   String toString() => message;
 }
-
-/// Wraps a [LocatedMessage] to implement the public [CompilationMessage] API.
-class _CompilationMessage implements CompilationMessage {
-  final LocatedMessage _original;
-  final Severity severity;
-
-  String get message => _original.message;
-
-  String get tip => _original.tip;
-
-  String get code => _original.code.name;
-
-  String get analyzerCode => _original.code.analyzerCodes?.first;
-
-  SourceSpan get span {
-    if (_original.charOffset == -1) {
-      if (_original.uri == null) return null;
-      return new SourceLocation(0, sourceUrl: _original.uri).pointSpan();
-    }
-    return new SourceLocation(_original.charOffset, sourceUrl: _original.uri)
-        .pointSpan();
-  }
-
-  _CompilationMessage(this._original, this.severity);
-
-  String toString() => message;
-}
diff --git a/pkg/front_end/lib/src/compute_platform_binaries_location.dart b/pkg/front_end/lib/src/compute_platform_binaries_location.dart
index 9825dc6..a1d1cdb 100644
--- a/pkg/front_end/lib/src/compute_platform_binaries_location.dart
+++ b/pkg/front_end/lib/src/compute_platform_binaries_location.dart
@@ -7,7 +7,7 @@
 /// Computes the location of platform binaries, that is, compiled `.dill` files
 /// of the platform libraries that are used to avoid recompiling those
 /// libraries.
-Uri computePlatformBinariesLocation() {
+Uri computePlatformBinariesLocation({bool forceBuildDir: false}) {
   // The directory of the Dart VM executable.
   Uri vmDirectory = Uri.base
       .resolveUri(new Uri.file(Platform.resolvedExecutable))
@@ -15,7 +15,7 @@
   if (vmDirectory.path.endsWith("/bin/")) {
     // Looks like the VM is in a `/bin/` directory, so this is running from a
     // built SDK.
-    return vmDirectory.resolve("../lib/_internal/");
+    return vmDirectory.resolve(forceBuildDir ? "../../" : "../lib/_internal/");
   } else {
     // We assume this is running from a build directory (for example,
     // `out/ReleaseX64` or `xcodebuild/ReleaseX64`).
diff --git a/pkg/front_end/lib/src/fasta/builder/class_builder.dart b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
index 6c2bb49..8414d55 100644
--- a/pkg/front_end/lib/src/fasta/builder/class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/class_builder.dart
@@ -13,8 +13,6 @@
         LibraryBuilder,
         MemberBuilder,
         MetadataBuilder,
-        MixinApplicationBuilder,
-        NamedTypeBuilder,
         Scope,
         ScopeBuilder,
         TypeBuilder,
@@ -22,11 +20,7 @@
         TypeVariableBuilder;
 
 import '../fasta_codes.dart'
-    show
-        LocatedMessage,
-        Message,
-        templateInternalProblemNotFoundIn,
-        templateInternalProblemSuperclassNotFound;
+    show LocatedMessage, Message, templateInternalProblemNotFoundIn;
 
 abstract class ClassBuilder<T extends TypeBuilder, R>
     extends TypeDeclarationBuilder<T, R> {
@@ -129,94 +123,6 @@
     return constructors.lookup(name, charOffset, uri);
   }
 
-  /// Returns a map which maps the type variables of [superclass] to their
-  /// respective values as defined by the superclass clause of this class (and
-  /// its superclasses).
-  ///
-  /// It's assumed that [superclass] is a superclass of this class.
-  ///
-  /// For example, given:
-  ///
-  ///     class Box<T> {}
-  ///     class BeatBox extends Box<Beat> {}
-  ///     class Beat {}
-  ///
-  /// We have:
-  ///
-  ///     [[BeatBox]].getSubstitutionMap([[Box]]) -> {[[Box::T]]: Beat]]}.
-  ///
-  /// This method returns null if the map is empty, and it's an error if
-  /// [superclass] isn't a superclass.
-  Map<TypeVariableBuilder, TypeBuilder> getSubstitutionMap(
-      ClassBuilder superclass,
-      Uri fileUri,
-      int charOffset,
-      TypeBuilder dynamicType) {
-    TypeBuilder supertype = this.supertype;
-    Map<TypeVariableBuilder, TypeBuilder> substitutionMap;
-    List arguments;
-    List variables;
-    Declaration declaration;
-
-    /// If [application] is mixing in [superclass] directly or via other named
-    /// mixin applications, return it.
-    NamedTypeBuilder findSuperclass(MixinApplicationBuilder application) {
-      for (TypeBuilder t in application.mixins) {
-        if (t is NamedTypeBuilder) {
-          if (t.declaration == superclass) return t;
-        } else if (t is MixinApplicationBuilder) {
-          NamedTypeBuilder s = findSuperclass(t);
-          if (s != null) return s;
-        }
-      }
-      return null;
-    }
-
-    void handleNamedTypeBuilder(NamedTypeBuilder t) {
-      declaration = t.declaration;
-      arguments = t.arguments ?? const [];
-      if (declaration is ClassBuilder) {
-        ClassBuilder cls = declaration;
-        variables = cls.typeVariables;
-        supertype = cls.supertype;
-      }
-    }
-
-    while (declaration != superclass) {
-      variables = null;
-      if (supertype is NamedTypeBuilder) {
-        handleNamedTypeBuilder(supertype);
-      } else if (supertype is MixinApplicationBuilder) {
-        MixinApplicationBuilder t = supertype;
-        NamedTypeBuilder s = findSuperclass(t);
-        if (s != null) {
-          handleNamedTypeBuilder(s);
-        }
-        supertype = t.supertype;
-      } else {
-        internalProblem(
-            templateInternalProblemSuperclassNotFound
-                .withArguments(superclass.fullNameForErrors),
-            charOffset,
-            fileUri);
-      }
-      if (variables != null) {
-        Map<TypeVariableBuilder, TypeBuilder> directSubstitutionMap =
-            <TypeVariableBuilder, TypeBuilder>{};
-        for (int i = 0; i < variables.length; i++) {
-          TypeBuilder argument =
-              i < arguments.length ? arguments[i] : dynamicType;
-          if (substitutionMap != null) {
-            argument = argument.subst(substitutionMap);
-          }
-          directSubstitutionMap[variables[i]] = argument;
-        }
-        substitutionMap = directSubstitutionMap;
-      }
-    }
-    return substitutionMap;
-  }
-
   void forEach(void f(String name, MemberBuilder builder)) {
     scope.forEach(f);
   }
diff --git a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
index 1a263f0..8baf2e1 100644
--- a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
@@ -6,10 +6,15 @@
 
 import '../fasta_codes.dart'
     show
-        LocatedMessage,
+        Message,
+        Template,
         noLength,
         templateMissingExplicitTypeArguments,
+        messageNotATypeContext,
+        LocatedMessage,
+        templateNotAType,
         templateTypeArgumentMismatch,
+        templateTypeArgumentsOnTypeVariable,
         templateTypeNotFound;
 
 import '../problems.dart' show unhandled;
@@ -25,6 +30,7 @@
         Scope,
         TypeBuilder,
         TypeDeclarationBuilder,
+        TypeVariableBuilder,
         flattenName;
 
 abstract class NamedTypeBuilder<T extends TypeBuilder, R> extends TypeBuilder {
@@ -37,7 +43,8 @@
   NamedTypeBuilder(this.name, this.arguments);
 
   @override
-  InvalidTypeBuilder<T, R> buildInvalidType(LocatedMessage message);
+  InvalidTypeBuilder<T, R> buildInvalidType(LocatedMessage message,
+      {List<LocatedMessage> context});
 
   @override
   void bind(TypeDeclarationBuilder declaration) {
@@ -62,7 +69,24 @@
     } else {
       unhandled("${name.runtimeType}", "resolveIn", charOffset, fileUri);
     }
-    if (member is TypeDeclarationBuilder) {
+    if (member is TypeVariableBuilder) {
+      declaration = member.origin;
+      if (arguments != null) {
+        String typeName;
+        int typeNameOffset;
+        if (name is Identifier) {
+          typeName = name.name;
+          typeNameOffset = name.charOffset;
+        } else {
+          typeName = name;
+          typeNameOffset = charOffset;
+        }
+        declaration = buildInvalidType(templateTypeArgumentsOnTypeVariable
+            .withArguments(typeName)
+            .withLocation(fileUri, typeNameOffset, typeName.length));
+      }
+      return;
+    } else if (member is TypeDeclarationBuilder) {
       declaration = member.origin;
       if (arguments == null && declaration.typeVariablesCount != 0) {
         String typeName;
@@ -83,9 +107,23 @@
       }
       return;
     }
-    declaration = buildInvalidType(templateTypeNotFound
-        .withArguments(flattenName(name, charOffset, fileUri))
-        .withLocation(fileUri, charOffset, noLength));
+    Template<Message Function(String name)> template =
+        member == null ? templateTypeNotFound : templateNotAType;
+    String flatName = flattenName(name, charOffset, fileUri);
+    List<LocatedMessage> context;
+    if (member != null) {
+      context = <LocatedMessage>[
+        messageNotATypeContext.withLocation(member.fileUri, member.charOffset,
+            name is Identifier ? name.name.length : "$name".length)
+      ];
+    }
+    int length =
+        name is Identifier ? name.endCharOffset - charOffset : flatName.length;
+    declaration = buildInvalidType(
+        template
+            .withArguments(flatName)
+            .withLocation(fileUri, charOffset, length),
+        context: context);
   }
 
   @override
diff --git a/pkg/front_end/lib/src/fasta/builder/type_builder.dart b/pkg/front_end/lib/src/fasta/builder/type_builder.dart
index 6f3fad2..ceb7a59 100644
--- a/pkg/front_end/lib/src/fasta/builder/type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/type_builder.dart
@@ -42,7 +42,7 @@
 
   build(LibraryBuilder library);
 
-  buildInvalidType(LocatedMessage message);
+  buildInvalidType(LocatedMessage message, {List<LocatedMessage> context});
 
   String get fullNameForErrors => "${printOn(new StringBuffer())}";
 }
diff --git a/pkg/front_end/lib/src/fasta/command_line_reporting.dart b/pkg/front_end/lib/src/fasta/command_line_reporting.dart
index e54dad5..c191dbb 100644
--- a/pkg/front_end/lib/src/fasta/command_line_reporting.dart
+++ b/pkg/front_end/lib/src/fasta/command_line_reporting.dart
@@ -8,8 +8,6 @@
 /// [CompilerContext].
 library fasta.command_line_reporting;
 
-import 'dart:io' show exitCode;
-
 import 'dart:math' show min;
 
 import 'dart:typed_data' show Uint8List;
@@ -26,7 +24,7 @@
 
 import 'messages.dart' show getLocation, getSourceLine;
 
-import 'problems.dart' show DebugAbort, unhandled;
+import 'problems.dart' show unhandled;
 
 import 'severity.dart' show Severity, severityPrefixes;
 
@@ -161,26 +159,6 @@
   }
 }
 
-/// Print a formatted message and throw when errors are treated as fatal.
-/// Also set [exitCode] depending on the value of
-/// `CompilerContext.current.options.setExitCodeOnProblem`.
-void _printAndThrowIfDebugging(
-    String text, Severity severity, Uri uri, int charOffset) {
-  // I believe we should only set it if we are reporting something, if we are
-  // formatting to embed the error in the program, then we probably don't want
-  // to do it in format.
-  // Note: I also want to limit dependencies to dart:io for when we use the FE
-  // outside of the VM. This default reporting is likely not going to be used in
-  // that context, but the default formatter is.
-  if (CompilerContext.current.options.setExitCodeOnProblem) {
-    exitCode = 1;
-  }
-  print(text);
-  if (shouldThrowOn(severity)) {
-    throw new DebugAbort(uri, charOffset, severity, StackTrace.current);
-  }
-}
-
 bool isCompileTimeError(Severity severity) {
   switch (severity) {
     case Severity.error:
@@ -188,7 +166,7 @@
       return true;
 
     case Severity.errorLegacyWarning:
-      return CompilerContext.current.options.strongMode;
+      return !CompilerContext.current.options.legacyMode;
 
     case Severity.warning:
     case Severity.context:
@@ -199,17 +177,3 @@
   }
   return unhandled("$severity", "isCompileTimeError", -1, null);
 }
-
-/// Report [message] unless [severity] is suppressed (see [isHidden]). Throws
-/// an exception if [severity] is fatal (see [isFatal]).
-///
-/// This method isn't intended to be called directly. Use
-/// [CompilerContext.report] instead.
-void report(LocatedMessage message, Severity severity) {
-  if (isHidden(severity)) return;
-  if (isCompileTimeError(severity)) {
-    CompilerContext.current.logError(message, severity);
-  }
-  _printAndThrowIfDebugging(
-      format(message, severity), severity, message.uri, message.charOffset);
-}
diff --git a/pkg/front_end/lib/src/fasta/compiler_context.dart b/pkg/front_end/lib/src/fasta/compiler_context.dart
index ff507b3..acb6637 100644
--- a/pkg/front_end/lib/src/fasta/compiler_context.dart
+++ b/pkg/front_end/lib/src/fasta/compiler_context.dart
@@ -45,6 +45,7 @@
   /// programs.
   final Map<Uri, Source> uriToSource = <Uri, Source>{};
 
+  // TODO(ahe): Remove this.
   final List<Object> errors = <Object>[];
 
   final List<Uri> dependencies = <Uri>[];
@@ -82,6 +83,7 @@
     return command_line_reporting.format(message.withoutLocation(), severity);
   }
 
+  // TODO(ahe): Remove this.
   void logError(Object message, Severity severity) {
     errors.add(message);
     errors.add(severity);
diff --git a/pkg/front_end/lib/src/fasta/crash.dart b/pkg/front_end/lib/src/fasta/crash.dart
index b587fbc..f4745d5 100644
--- a/pkg/front_end/lib/src/fasta/crash.dart
+++ b/pkg/front_end/lib/src/fasta/crash.dart
@@ -11,7 +11,7 @@
 import 'dart:io'
     show ContentType, HttpClient, HttpClientRequest, SocketException, stderr;
 
-export 'deprecated_problems.dart' show withCrashReporting;
+import 'problems.dart' show DebugAbort;
 
 const String defaultServerAddress = "http://127.0.0.1:59410/";
 
@@ -114,3 +114,17 @@
     return "Error when converting ${object.runtimeType} to string.";
   }
 }
+
+Future<T> withCrashReporting<T>(
+    Future<T> Function() action, Uri Function() currentUri) async {
+  resetCrashReporting();
+  try {
+    return await action();
+  } on Crash {
+    rethrow;
+  } on DebugAbort {
+    rethrow;
+  } catch (e, s) {
+    return reportCrash(e, s, currentUri());
+  }
+}
diff --git a/pkg/front_end/lib/src/fasta/deprecated_problems.dart b/pkg/front_end/lib/src/fasta/deprecated_problems.dart
deleted file mode 100644
index 86067fb7..0000000
--- a/pkg/front_end/lib/src/fasta/deprecated_problems.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// 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 fasta.errors;
-
-import 'dart:async' show Future;
-
-import 'command_line_reporting.dart' show shouldThrowOn;
-
-import 'crash.dart' show safeToString;
-
-import 'messages.dart'
-    show
-        LocatedMessage,
-        isVerbose,
-        noLength,
-        templateInternalProblemDebugAbort,
-        templateUnspecified;
-
-import 'severity.dart' show Severity, severityTexts;
-
-import 'crash.dart' show Crash, reportCrash, resetCrashReporting;
-
-/// Used to report an error in input.
-///
-/// Avoid using this for reporting compile-time errors, instead use
-/// `LibraryBuilder.addProblem` for those.
-///
-/// An input error is any error that isn't an internal error. We use the term
-/// "input error" in favor of "user error". This way, if an input error isn't
-/// handled correctly, the user will never see a stack trace that says "user
-/// error".
-dynamic deprecated_inputError(Uri uri, int charOffset, Object error) {
-  return deprecated_inputErrorFromMessage(templateUnspecified
-      .withArguments(safeToString(error))
-      .withLocation(uri, charOffset, noLength));
-}
-
-dynamic deprecated_inputErrorFromMessage(LocatedMessage message) {
-  if (shouldThrowOn(Severity.error) && isVerbose) {
-    print(StackTrace.current);
-  }
-  throw new deprecated_InputError(message);
-}
-
-class deprecated_InputError {
-  final LocatedMessage message;
-
-  deprecated_InputError(this.message);
-
-  toString() => "deprecated_InputError: ${message.message}";
-}
-
-class DebugAbort extends deprecated_InputError {
-  DebugAbort(Uri uri, int charOffset, Severity severity, StackTrace trace)
-      : super(templateInternalProblemDebugAbort
-            .withArguments(severityTexts[severity], "$trace")
-            .withLocation(uri, charOffset, noLength));
-}
-
-// TODO(ahe): Move this method to crash.dart when it's no longer using
-// [deprecated_InputError].
-Future<T> withCrashReporting<T>(
-    Future<T> Function() action, Uri Function() currentUri,
-    {T Function(LocatedMessage) onInputError}) async {
-  resetCrashReporting();
-  try {
-    return await action();
-  } on Crash {
-    rethrow;
-  } on DebugAbort {
-    rethrow;
-  } on deprecated_InputError catch (e, s) {
-    if (onInputError != null) {
-      return onInputError(e.message);
-    } else {
-      return reportCrash(e, s, currentUri());
-    }
-  } catch (e, s) {
-    return reportCrash(e, s, currentUri());
-  }
-}
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_target.dart b/pkg/front_end/lib/src/fasta/dill/dill_target.dart
index 405f1f8..bae16f6 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_target.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_target.dart
@@ -38,11 +38,6 @@
   }
 
   @override
-  void read(Uri uri) {
-    unsupported("read", -1, null);
-  }
-
-  @override
   Future<Null> buildComponent() {
     return new Future<Null>.sync(() => unsupported("buildComponent", -1, null));
   }
diff --git a/pkg/front_end/lib/src/fasta/dill/dill_typedef_builder.dart b/pkg/front_end/lib/src/fasta/dill/dill_typedef_builder.dart
index a395dca..63616f8 100644
--- a/pkg/front_end/lib/src/fasta/dill/dill_typedef_builder.dart
+++ b/pkg/front_end/lib/src/fasta/dill/dill_typedef_builder.dart
@@ -4,7 +4,7 @@
 
 library fasta.dill_typedef_builder;
 
-import 'package:kernel/ast.dart' show DartType, Typedef;
+import 'package:kernel/ast.dart' show DartType, FunctionType, Typedef;
 
 import '../kernel/kernel_builder.dart'
     show
@@ -36,7 +36,17 @@
   }
 
   @override
-  DartType buildThisType(LibraryBuilder library) => thisType ??= target.type;
+  DartType buildThisType(LibraryBuilder library) {
+    if (thisType != null) return thisType;
+
+    DartType targetType = target.type;
+    if (targetType is FunctionType) {
+      // TODO(34655):  The line below is a workaround.  Find the place where the
+      // reference is lost and fix it.
+      targetType.typedefReference = target.reference;
+    }
+    return thisType = targetType;
+  }
 
   @override
   List<DartType> buildTypeArguments(
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes.dart b/pkg/front_end/lib/src/fasta/fasta_codes.dart
index 5f09a07..a3dcb56 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes.dart
@@ -181,9 +181,6 @@
     // TODO(ahe): Implement this correctly.
     return ansiFormatted;
   }
-
-  @override
-  int get index => code.index;
 }
 
 String relativizeUri(Uri uri) {
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 b2f3d1e..6769e5c 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -675,41 +675,6 @@
     tip: r"""It should be safe to remove the '?' as a prefix is never null.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Template<Message Function(DartType _type)>
-    templateCantUseSuperBoundedTypeForInstanceCreation =
-    const Template<Message Function(DartType _type)>(
-        messageTemplate:
-            r"""Can't use a super-bounded type for instance creation. Got '#type'.""",
-        tipTemplate:
-            r"""Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.""",
-        withArguments:
-            _withArgumentsCantUseSuperBoundedTypeForInstanceCreation);
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Message Function(DartType _type)>
-    codeCantUseSuperBoundedTypeForInstanceCreation =
-    const Code<Message Function(DartType _type)>(
-  "CantUseSuperBoundedTypeForInstanceCreation",
-  templateCantUseSuperBoundedTypeForInstanceCreation,
-);
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-Message _withArgumentsCantUseSuperBoundedTypeForInstanceCreation(
-    DartType _type) {
-  NameSystem nameSystem = new NameSystem();
-  StringBuffer buffer;
-  buffer = new StringBuffer();
-  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
-  String type = '$buffer';
-
-  return new Message(codeCantUseSuperBoundedTypeForInstanceCreation,
-      message:
-          """Can't use a super-bounded type for instance creation. Got '${type}'.""",
-      tip: """Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.""",
-      arguments: {'type': _type});
-}
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeCatchSyntax = messageCatchSyntax;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -1438,7 +1403,7 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageConstFactory = const MessageCode("ConstFactory",
-    analyzerCodes: <String>["CONST_FACTORY"],
+    index: 62,
     message:
         r"""Only redirecting factory constructors can be declared to be 'const'.""",
     tip:
@@ -1501,7 +1466,7 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageConstMethod = const MessageCode("ConstMethod",
-    analyzerCodes: <String>["CONST_METHOD"],
+    index: 63,
     message:
         r"""Getters, setters and methods can't be declared to be 'const'.""",
     tip: r"""Try removing the 'const' keyword.""");
@@ -1567,7 +1532,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageConstructorWithTypeArguments = const MessageCode(
     "ConstructorWithTypeArguments",
-    analyzerCodes: <String>["UNDEFINED_CLASS"],
+    analyzerCodes: <String>["WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR"],
     message:
         r"""A constructor invocation can't have type arguments on the constructor name.""",
     tip: r"""Try to place the type arguments on the class name.""");
@@ -1664,7 +1629,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageContinueWithoutLabelInCase = const MessageCode(
     "ContinueWithoutLabelInCase",
-    analyzerCodes: <String>["CONTINUE_WITHOUT_LABEL_IN_CASE"],
+    index: 64,
     message:
         r"""A continue statement in a switch statement must have a label as a target.""",
     tip:
@@ -1700,7 +1665,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageCovariantAfterFinal = const MessageCode(
     "CovariantAfterFinal",
-    analyzerCodes: <String>["COVARIANT_AFTER_FINAL"],
+    index: 65,
     message:
         r"""The modifier 'covariant' should be before the modifier 'final'.""",
     tip: r"""Try re-ordering the modifiers.""");
@@ -1722,7 +1687,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageCovariantAndStatic = const MessageCode(
     "CovariantAndStatic",
-    analyzerCodes: <String>["COVARIANT_AND_STATIC"],
+    index: 66,
     message:
         r"""Members can't be declared to be both 'covariant' and 'static'.""",
     tip: r"""Try removing either the 'covariant' or 'static' keyword.""");
@@ -1732,7 +1697,7 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageCovariantMember = const MessageCode("CovariantMember",
-    analyzerCodes: <String>["COVARIANT_MEMBER"],
+    index: 67,
     message:
         r"""Getters, setters and methods can't be declared to be 'covariant'.""",
     tip: r"""Try removing the 'covariant' keyword.""");
@@ -1845,7 +1810,6 @@
 const MessageCode messageDeclaredMemberConflictsWithInheritedMember =
     const MessageCode("DeclaredMemberConflictsWithInheritedMember",
         analyzerCodes: <String>["DECLARED_MEMBER_CONFLICTS_WITH_INHERITED"],
-        severity: Severity.errorLegacyWarning,
         message:
             r"""Can't declare a member that conflicts with an inherited one.""");
 
@@ -1896,7 +1860,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageDeferredAfterPrefix = const MessageCode(
     "DeferredAfterPrefix",
-    analyzerCodes: <String>["DEFERRED_AFTER_PREFIX"],
+    index: 68,
     message:
         r"""The deferred keyword should come immediately before the prefix ('as' clause).""",
     tip: r"""Try moving the deferred keyword before the prefix.""");
@@ -2090,7 +2054,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageDirectiveAfterDeclaration = const MessageCode(
     "DirectiveAfterDeclaration",
-    analyzerCodes: <String>["DIRECTIVE_AFTER_DECLARATION"],
+    index: 69,
     message: r"""Directives must appear before any declarations.""",
     tip: r"""Try moving the directive before any declarations.""");
 
@@ -2100,7 +2064,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageDuplicateDeferred = const MessageCode(
     "DuplicateDeferred",
-    analyzerCodes: <String>["DUPLICATE_DEFERRED"],
+    index: 71,
     message: r"""An import directive can only have one 'deferred' keyword.""",
     tip: r"""Try removing all but one 'deferred' keyword.""");
 
@@ -2117,7 +2081,7 @@
 const Code<Message Function(String name)> codeDuplicateLabelInSwitchStatement =
     const Code<Message Function(String name)>("DuplicateLabelInSwitchStatement",
         templateDuplicateLabelInSwitchStatement,
-        analyzerCodes: <String>["DUPLICATE_LABEL_IN_SWITCH_STATEMENT"]);
+        index: 72);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 Message _withArgumentsDuplicateLabelInSwitchStatement(String name) {
@@ -2135,7 +2099,7 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageDuplicatePrefix = const MessageCode("DuplicatePrefix",
-    analyzerCodes: <String>["DUPLICATE_PREFIX"],
+    index: 73,
     message: r"""An import directive can only have one prefix ('as' clause).""",
     tip: r"""Try removing all but one prefix.""");
 
@@ -2438,7 +2402,7 @@
 const Code<Message Function(Token token)> codeDuplicatedModifier =
     const Code<Message Function(Token token)>(
         "DuplicatedModifier", templateDuplicatedModifier,
-        analyzerCodes: <String>["DUPLICATED_MODIFIER"]);
+        index: 70);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 Message _withArgumentsDuplicatedModifier(Token token) {
@@ -2630,7 +2594,7 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageEnumInClass = const MessageCode("EnumInClass",
-    analyzerCodes: <String>["ENUM_IN_CLASS"],
+    index: 74,
     message: r"""Enums can't be declared inside classes.""",
     tip: r"""Try moving the enum to the top-level.""");
 
@@ -3013,7 +2977,7 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageExportAfterPart = const MessageCode("ExportAfterPart",
-    analyzerCodes: <String>["EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE"],
+    index: 75,
     message: r"""Export directives must preceed part directives.""",
     tip: r"""Try moving the export directives before the part directives.""");
 
@@ -3218,7 +3182,7 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageExternalTypedef = const MessageCode("ExternalTypedef",
-    analyzerCodes: <String>["EXTERNAL_TYPEDEF"],
+    index: 76,
     message: r"""Typedefs can't be declared to be 'external'.""",
     tip: r"""Try removing the keyword 'external'.""");
 
@@ -3233,7 +3197,7 @@
 const Code<Message Function(Token token)> codeExtraneousModifier =
     const Code<Message Function(Token token)>(
         "ExtraneousModifier", templateExtraneousModifier,
-        analyzerCodes: <String>["EXTRANEOUS_MODIFIER"]);
+        index: 77);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 Message _withArgumentsExtraneousModifier(Token token) {
@@ -3333,7 +3297,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageFactoryTopLevelDeclaration = const MessageCode(
     "FactoryTopLevelDeclaration",
-    analyzerCodes: <String>["FACTORY_TOP_LEVEL_DECLARATION"],
+    index: 78,
     message: r"""Top-level declarations can't be declared to be 'factory'.""",
     tip: r"""Try removing the keyword 'factory'.""");
 
@@ -3375,6 +3339,10 @@
   -v, --verbose
     Display verbose information.
 
+  -Dname
+  -Dname=value
+    Ignored for now.
+
   --
     Stop option parsing, the rest of the command line is assumed to be
     file names or arguments to the Dart program.
@@ -3411,6 +3379,20 @@
     Location of the SDK sources for use when compiling additional platform
     libraries.
 
+  --supermixin
+    Ignored for now.
+
+  --single-root-scheme=String
+  --single-root-base=<dir>
+    Specify a custom URI scheme and a location on disk where such URIs are
+    mapped to.
+
+    When specified, the compiler can be invoked with inputs using the custom
+    URI scheme. The compiler can ignore the exact location of files on disk
+    and as a result to produce output that is independendent of the absolute
+    location of files on disk. This is mostly useful for integrating with
+    build systems.
+
   --fatal=errors
   --fatal=warnings
     Makes messages of the given kinds fatal, that is, immediately stop the
@@ -3435,7 +3417,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageFieldInitializerOutsideConstructor = const MessageCode(
     "FieldInitializerOutsideConstructor",
-    analyzerCodes: <String>["FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR"],
+    index: 79,
     message: r"""Field formal parameters can only be used in a constructor.""",
     tip: r"""Try removing 'this.'.""");
 
@@ -3445,7 +3427,7 @@
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const MessageCode messageFinalAndCovariant = const MessageCode(
     "FinalAndCovariant",
-    analyzerCodes: <String>["FINAL_AND_COVARIANT"],
+    index: 80,
     message:
         r"""Members can't be declared to be both 'final' and 'covariant'.""",
     tip: r"""Try removing either the 'final' or 'covariant' keyword.""");
@@ -3748,6 +3730,53 @@
         r"""Type variables can't have generic function types in their bounds.""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(DartType _type)>
+    templateGenericFunctionTypeInferredAsActualTypeArgument =
+    const Template<Message Function(DartType _type)>(
+        messageTemplate:
+            r"""Unexpected generic function type '#type' inferred as a type argument.""",
+        tipTemplate:
+            r"""Try providing a non-generic function type explicitly.""",
+        withArguments:
+            _withArgumentsGenericFunctionTypeInferredAsActualTypeArgument);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(DartType _type)>
+    codeGenericFunctionTypeInferredAsActualTypeArgument =
+    const Code<Message Function(DartType _type)>(
+        "GenericFunctionTypeInferredAsActualTypeArgument",
+        templateGenericFunctionTypeInferredAsActualTypeArgument,
+        analyzerCodes: <String>["GENERIC_FUNCTION_CANNOT_BE_TYPE_ARGUMENT"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsGenericFunctionTypeInferredAsActualTypeArgument(
+    DartType _type) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  return new Message(codeGenericFunctionTypeInferredAsActualTypeArgument,
+      message:
+          """Unexpected generic function type '${type}' inferred as a type argument.""",
+      tip: """Try providing a non-generic function type explicitly.""",
+      arguments: {'type': _type});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeGenericFunctionTypeUsedAsActualTypeArgument =
+    messageGenericFunctionTypeUsedAsActualTypeArgument;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageGenericFunctionTypeUsedAsActualTypeArgument =
+    const MessageCode("GenericFunctionTypeUsedAsActualTypeArgument",
+        analyzerCodes: <String>["GENERIC_FUNCTION_CANNOT_BE_TYPE_ARGUMENT"],
+        message:
+            r"""Unexpected generic function type found in a type argument.""",
+        tip: r"""Try using a non-generic function type.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<Message Function(String name)> templateGetterNotFound =
     const Template<Message Function(String name)>(
         messageTemplate: r"""Getter not found: '#name'.""",
@@ -4100,6 +4129,249 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        DartType _type,
+        String
+            name)> templateIncorrectTypeArgument = const Template<
+        Message Function(DartType _type, String name)>(
+    messageTemplate:
+        r"""Type argument '#type' violates the corresponding type variable bound of '#name'.""",
+    tipTemplate:
+        r"""Try changing type arguments so that they conform to the bounds.""",
+    withArguments: _withArgumentsIncorrectTypeArgument);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(DartType _type, String name)>
+    codeIncorrectTypeArgument =
+    const Code<Message Function(DartType _type, String name)>(
+        "IncorrectTypeArgument", templateIncorrectTypeArgument,
+        analyzerCodes: <String>["TYPE_ARGUMENT_NOT_MATCHING_BOUNDS"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsIncorrectTypeArgument(DartType _type, String name) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeIncorrectTypeArgument,
+      message:
+          """Type argument '${type}' violates the corresponding type variable bound of '${name}'.""",
+      tip: """Try changing type arguments so that they conform to the bounds.""",
+      arguments: {'type': _type, 'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        DartType _type,
+        String
+            name)> templateIncorrectTypeArgumentInReturnType = const Template<
+        Message Function(DartType _type, String name)>(
+    messageTemplate:
+        r"""Type argument '#type' violates the corresponding type variable bound of '#name' in the return type.""",
+    tipTemplate:
+        r"""Try changing type arguments so that they conform to the bounds.""",
+    withArguments: _withArgumentsIncorrectTypeArgumentInReturnType);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(DartType _type, String name)>
+    codeIncorrectTypeArgumentInReturnType =
+    const Code<Message Function(DartType _type, String name)>(
+        "IncorrectTypeArgumentInReturnType",
+        templateIncorrectTypeArgumentInReturnType,
+        analyzerCodes: <String>["TYPE_ARGUMENT_NOT_MATCHING_BOUNDS"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsIncorrectTypeArgumentInReturnType(
+    DartType _type, String name) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeIncorrectTypeArgumentInReturnType,
+      message:
+          """Type argument '${type}' violates the corresponding type variable bound of '${name}' in the return type.""",
+      tip: """Try changing type arguments so that they conform to the bounds.""",
+      arguments: {'type': _type, 'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        DartType _type,
+        String name,
+        String name2,
+        String
+            name3)> templateIncorrectTypeArgumentInSupertype = const Template<
+        Message Function(
+            DartType _type, String name, String name2, String name3)>(
+    messageTemplate:
+        r"""Type argument '#type' violates the corresponding type variable bound of '#name' in the supertype '#name2' of class '#name3'.""",
+    tipTemplate:
+        r"""Try changing type arguments so that they conform to the bounds.""",
+    withArguments: _withArgumentsIncorrectTypeArgumentInSupertype);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<
+        Message Function(
+            DartType _type, String name, String name2, String name3)>
+    codeIncorrectTypeArgumentInSupertype = const Code<
+            Message Function(
+                DartType _type, String name, String name2, String name3)>(
+        "IncorrectTypeArgumentInSupertype",
+        templateIncorrectTypeArgumentInSupertype,
+        analyzerCodes: <String>["TYPE_ARGUMENT_NOT_MATCHING_BOUNDS"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsIncorrectTypeArgumentInSupertype(
+    DartType _type, String name, String name2, String name3) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  if (name2.isEmpty) throw 'No name provided';
+  name2 = demangleMixinApplicationName(name2);
+  if (name3.isEmpty) throw 'No name provided';
+  name3 = demangleMixinApplicationName(name3);
+  return new Message(codeIncorrectTypeArgumentInSupertype,
+      message:
+          """Type argument '${type}' violates the corresponding type variable bound of '${name}' in the supertype '${name2}' of class '${name3}'.""",
+      tip: """Try changing type arguments so that they conform to the bounds.""",
+      arguments: {'type': _type, 'name': name, 'name2': name2, 'name3': name3});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        DartType _type,
+        String name,
+        String name2,
+        String
+            name3)> templateIncorrectTypeArgumentInSupertypeInferred = const Template<
+        Message Function(DartType _type, String name, String name2,
+            String name3)>(
+    messageTemplate:
+        r"""Inferred type argument '#type' violates the corresponding type variable bound of '#name' in the supertype '#name2' of class '#name3'.""",
+    tipTemplate:
+        r"""Try specifying type arguments explicitly so that they conform to the bounds.""",
+    withArguments: _withArgumentsIncorrectTypeArgumentInSupertypeInferred);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<
+        Message Function(
+            DartType _type, String name, String name2, String name3)>
+    codeIncorrectTypeArgumentInSupertypeInferred = const Code<
+            Message Function(
+                DartType _type, String name, String name2, String name3)>(
+        "IncorrectTypeArgumentInSupertypeInferred",
+        templateIncorrectTypeArgumentInSupertypeInferred,
+        analyzerCodes: <String>["TYPE_ARGUMENT_NOT_MATCHING_BOUNDS"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsIncorrectTypeArgumentInSupertypeInferred(
+    DartType _type, String name, String name2, String name3) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  if (name2.isEmpty) throw 'No name provided';
+  name2 = demangleMixinApplicationName(name2);
+  if (name3.isEmpty) throw 'No name provided';
+  name3 = demangleMixinApplicationName(name3);
+  return new Message(codeIncorrectTypeArgumentInSupertypeInferred,
+      message:
+          """Inferred type argument '${type}' violates the corresponding type variable bound of '${name}' in the supertype '${name2}' of class '${name3}'.""",
+      tip: """Try specifying type arguments explicitly so that they conform to the bounds.""",
+      arguments: {'type': _type, 'name': name, 'name2': name2, 'name3': name3});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
+    Message Function(
+        DartType _type,
+        String
+            name)> templateIncorrectTypeArgumentInferred = const Template<
+        Message Function(DartType _type,
+            String name)>(
+    messageTemplate:
+        r"""Inferred type argument '#type' violates the corresponding type variable bound of '#name'.""",
+    tipTemplate:
+        r"""Try specifying type arguments explicitly so that they conform to the bounds.""",
+    withArguments: _withArgumentsIncorrectTypeArgumentInferred);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(DartType _type, String name)>
+    codeIncorrectTypeArgumentInferred =
+    const Code<Message Function(DartType _type, String name)>(
+        "IncorrectTypeArgumentInferred", templateIncorrectTypeArgumentInferred,
+        analyzerCodes: <String>["TYPE_ARGUMENT_NOT_MATCHING_BOUNDS"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsIncorrectTypeArgumentInferred(
+    DartType _type, String name) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeIncorrectTypeArgumentInferred,
+      message:
+          """Inferred type argument '${type}' violates the corresponding type variable bound of '${name}'.""",
+      tip: """Try specifying type arguments explicitly so that they conform to the bounds.""",
+      arguments: {'type': _type, 'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeIncorrectTypeArgumentVariable =
+    messageIncorrectTypeArgumentVariable;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageIncorrectTypeArgumentVariable = const MessageCode(
+    "IncorrectTypeArgumentVariable",
+    severity: Severity.context,
+    message: r"""Bound of this variable is violated.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(Uri uri_)> templateInferredPackageUri =
+    const Template<Message Function(Uri uri_)>(
+        messageTemplate: r"""Interpreting this as package URI, '#uri'.""",
+        withArguments: _withArgumentsInferredPackageUri);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(Uri uri_)> codeInferredPackageUri =
+    const Code<Message Function(Uri uri_)>(
+        "InferredPackageUri", templateInferredPackageUri,
+        severity: Severity.warning);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsInferredPackageUri(Uri uri_) {
+  String uri = relativizeUri(uri_);
+  return new Message(codeInferredPackageUri,
+      message: """Interpreting this as package URI, '${uri}'.""",
+      arguments: {'uri': uri_});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeInheritedMembersConflict = messageInheritedMembersConflict;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -4492,6 +4764,30 @@
         r"""Are calls to the compiler wrapped in CompilerContext.runInContext?""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<Message Function(String name)>
+    templateInternalProblemNoInferredTypeStored =
+    const Template<Message Function(String name)>(
+        messageTemplate: r"""There's no inferred type for '#name'.""",
+        withArguments: _withArgumentsInternalProblemNoInferredTypeStored);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(String name)>
+    codeInternalProblemNoInferredTypeStored =
+    const Code<Message Function(String name)>(
+        "InternalProblemNoInferredTypeStored",
+        templateInternalProblemNoInferredTypeStored,
+        severity: Severity.internalProblem);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsInternalProblemNoInferredTypeStored(String name) {
+  if (name.isEmpty) throw 'No name provided';
+  name = demangleMixinApplicationName(name);
+  return new Message(codeInternalProblemNoInferredTypeStored,
+      message: """There's no inferred type for '${name}'.""",
+      arguments: {'name': name});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<Message Function(String name)> templateInternalProblemNotFound =
     const Template<Message Function(String name)>(
         messageTemplate: r"""Couldn't find '#name'.""",
@@ -4606,27 +4902,36 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Template<Message Function(String name)>
-    templateInternalProblemSuperclassNotFound =
-    const Template<Message Function(String name)>(
-        messageTemplate: r"""Superclass not found '#name'.""",
-        withArguments: _withArgumentsInternalProblemSuperclassNotFound);
+const Template<Message Function(DartType _type, String name)>
+    templateInternalProblemStoringMultipleInferredTypes =
+    const Template<Message Function(DartType _type, String name)>(
+        messageTemplate:
+            r"""There's already an inferred type (#type) for '#name'.""",
+        withArguments:
+            _withArgumentsInternalProblemStoringMultipleInferredTypes);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Message Function(String name)>
-    codeInternalProblemSuperclassNotFound =
-    const Code<Message Function(String name)>(
-        "InternalProblemSuperclassNotFound",
-        templateInternalProblemSuperclassNotFound,
+const Code<Message Function(DartType _type, String name)>
+    codeInternalProblemStoringMultipleInferredTypes =
+    const Code<Message Function(DartType _type, String name)>(
+        "InternalProblemStoringMultipleInferredTypes",
+        templateInternalProblemStoringMultipleInferredTypes,
         severity: Severity.internalProblem);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-Message _withArgumentsInternalProblemSuperclassNotFound(String name) {
+Message _withArgumentsInternalProblemStoringMultipleInferredTypes(
+    DartType _type, String name) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
   if (name.isEmpty) throw 'No name provided';
   name = demangleMixinApplicationName(name);
-  return new Message(codeInternalProblemSuperclassNotFound,
-      message: """Superclass not found '${name}'.""",
-      arguments: {'name': name});
+  return new Message(codeInternalProblemStoringMultipleInferredTypes,
+      message: """There's already an inferred type (${type}) for '${name}'.""",
+      arguments: {'type': _type, 'name': name});
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
@@ -5727,6 +6032,46 @@
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Template<
+        Message Function(DartType _type, DartType _type2, DartType _type3)>
+    templateMixinApplicationIncompatibleSupertype = const Template<
+            Message Function(DartType _type, DartType _type2, DartType _type3)>(
+        messageTemplate:
+            r"""'#type' doesn't implement '#type2' so it can't be used with '#type3'.""",
+        withArguments: _withArgumentsMixinApplicationIncompatibleSupertype);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Message Function(DartType _type, DartType _type2, DartType _type3)>
+    codeMixinApplicationIncompatibleSupertype = const Code<
+            Message Function(DartType _type, DartType _type2, DartType _type3)>(
+        "MixinApplicationIncompatibleSupertype",
+        templateMixinApplicationIncompatibleSupertype,
+        analyzerCodes: <String>["MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE"]);
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+Message _withArgumentsMixinApplicationIncompatibleSupertype(
+    DartType _type, DartType _type2, DartType _type3) {
+  NameSystem nameSystem = new NameSystem();
+  StringBuffer buffer;
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
+  String type = '$buffer';
+
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type2);
+  String type2 = '$buffer';
+
+  buffer = new StringBuffer();
+  new Printer(buffer, syntheticNames: nameSystem).writeNode(_type3);
+  String type3 = '$buffer';
+
+  return new Message(codeMixinApplicationIncompatibleSupertype,
+      message:
+          """'${type}' doesn't implement '${type2}' so it can't be used with '${type3}'.""",
+      arguments: {'type': _type, 'type2': _type2, 'type3': _type3});
+}
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Template<
     Message Function(
         String name,
         String name2,
@@ -6138,6 +6483,13 @@
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const Code<Null> codeNotATypeContext = messageNotATypeContext;
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
+const MessageCode messageNotATypeContext = const MessageCode("NotATypeContext",
+    severity: Severity.context, message: r"""This isn't a type.""");
+
+// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
 const Code<Null> codeNotAnLvalue = messageNotAnLvalue;
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
diff --git a/pkg/front_end/lib/src/fasta/get_dependencies.dart b/pkg/front_end/lib/src/fasta/get_dependencies.dart
index 8903d3f..e4aacb2 100644
--- a/pkg/front_end/lib/src/fasta/get_dependencies.dart
+++ b/pkg/front_end/lib/src/fasta/get_dependencies.dart
@@ -53,7 +53,7 @@
         fileSystem, false, dillTarget, uriTranslator,
         uriToSource: c.uriToSource);
 
-    kernelTarget.read(script);
+    kernelTarget.setEntryPoints(<Uri>[script]);
     await dillTarget.buildOutlines();
     await kernelTarget.loader.buildOutlines();
     return new List<Uri>.from(c.dependencies);
diff --git a/pkg/front_end/lib/src/fasta/identifiers.dart b/pkg/front_end/lib/src/fasta/identifiers.dart
index 1be006a..bc18ef4 100644
--- a/pkg/front_end/lib/src/fasta/identifiers.dart
+++ b/pkg/front_end/lib/src/fasta/identifiers.dart
@@ -26,6 +26,8 @@
 
   Expression get initializer => null;
 
+  int get endCharOffset => charOffset + name.length;
+
   QualifiedName withQualifier(Object qualifier) {
     return new QualifiedName._(qualifier, name, charOffset);
   }
@@ -49,6 +51,9 @@
   Expression get initializer => null;
 
   @override
+  int get endCharOffset => charOffset + name.length;
+
+  @override
   QualifiedName withQualifier(Object qualifier) {
     return new _TokenQualifiedName(qualifier, token);
   }
diff --git a/pkg/front_end/lib/src/fasta/incremental_compiler.dart b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
index ab61403..2565d7e 100644
--- a/pkg/front_end/lib/src/fasta/incremental_compiler.dart
+++ b/pkg/front_end/lib/src/fasta/incremental_compiler.dart
@@ -59,13 +59,12 @@
 
 import 'hybrid_file_system.dart' show HybridFileSystem;
 
-import 'kernel/kernel_incremental_target.dart'
-    show KernelIncrementalTarget, KernelIncrementalTargetErroneousComponent;
-
 import 'kernel/kernel_library_builder.dart' show KernelLibraryBuilder;
 
 import 'kernel/kernel_shadow_ast.dart' show VariableDeclarationJudgment;
 
+import 'kernel/kernel_target.dart' show KernelTarget;
+
 import 'library_graph.dart' show LibraryGraph;
 
 import 'source/source_library_builder.dart' show SourceLibraryBuilder;
@@ -90,7 +89,7 @@
   bool initializedFromDill = false;
   bool hasToCheckPackageUris = false;
 
-  KernelIncrementalTarget userCode;
+  KernelTarget userCode;
 
   IncrementalCompiler.fromComponent(
       this.context, Component this.componentToInitializeFrom)
@@ -227,8 +226,8 @@
 
       reusedLibraries.addAll(platformBuilders);
 
-      KernelIncrementalTarget userCodeOld = userCode;
-      userCode = new KernelIncrementalTarget(
+      KernelTarget userCodeOld = userCode;
+      userCode = new KernelTarget(
           new HybridFileSystem(
               new MemoryFileSystem(
                   new Uri(scheme: "org-dartlang-debug", path: "/")),
@@ -249,28 +248,13 @@
         }
       }
 
-      Component componentWithDill;
-      try {
-        userCode.read(entryPoint);
-        await userCode.buildOutlines();
+      userCode.setEntryPoints(<Uri>[entryPoint]);
+      await userCode.buildOutlines();
 
-        // This is not the full component. It is the component including all
-        // libraries loaded from .dill files.
-        componentWithDill =
-            await userCode.buildComponent(verify: c.options.verify);
-      } on KernelIncrementalTargetErroneousComponent {
-        List<Library> librariesWithSdk = userCode.component.libraries;
-        List<Library> compiledLibraries = <Library>[];
-        for (Library lib in librariesWithSdk) {
-          if (lib.importUri.scheme == "dart") continue;
-          compiledLibraries.add(lib);
-          break;
-        }
-        userCode.loader.builders.clear();
-        userCode = userCodeOld;
-        return context.options.target.configureComponent(new Component(
-            libraries: compiledLibraries, uriToSource: <Uri, Source>{}));
-      }
+      // This is not the full component. It is the component including all
+      // libraries loaded from .dill files.
+      Component componentWithDill =
+          await userCode.buildComponent(verify: c.options.verify);
       if (componentWithDill != null) {
         this.invalidatedUris.clear();
         hasToCheckPackageUris = false;
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 b9f0605..a3d119d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -126,6 +126,7 @@
 
   final ClassHierarchy hierarchy;
 
+  @override
   final CoreTypes coreTypes;
 
   final bool isInstanceMember;
@@ -267,6 +268,8 @@
     return isInstanceMember || member is KernelConstructorBuilder;
   }
 
+  TypeEnvironment get typeEnvironment => _typeInferrer?.typeSchemaEnvironment;
+
   @override
   void push(Object node) {
     if (node is DartType) {
@@ -657,7 +660,7 @@
           false, node.target, node.arguments, token.charOffset);
     } else {
       Expression value = toValue(node);
-      if (node is! Throw) {
+      if (!forest.isThrow(node)) {
         value =
             wrapInProblem(value, fasta.messageExpectedAnInitializer, noLength);
       }
@@ -717,9 +720,9 @@
     // 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.
+    // 2) the member [typeEnvironment] 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;
@@ -733,8 +736,7 @@
       switch (asyncModifier) {
         case AsyncMarker.Async:
           DartType futureBottomType = library.loader.futureOfBottom;
-          if (!_typeInferrer.typeSchemaEnvironment
-              .isSubtypeOf(futureBottomType, returnType)) {
+          if (!typeEnvironment.isSubtypeOf(futureBottomType, returnType)) {
             problem = fasta.messageIllegalAsyncReturnType;
           }
           break;
@@ -743,8 +745,8 @@
           DartType streamBottomType = library.loader.streamOfBottom;
           if (returnType is VoidType) {
             problem = fasta.messageIllegalAsyncGeneratorVoidReturnType;
-          } else if (!_typeInferrer.typeSchemaEnvironment
-              .isSubtypeOf(streamBottomType, returnType)) {
+          } else if (!typeEnvironment.isSubtypeOf(
+              streamBottomType, returnType)) {
             problem = fasta.messageIllegalAsyncGeneratorReturnType;
           }
           break;
@@ -753,8 +755,8 @@
           DartType iterableBottomType = library.loader.iterableOfBottom;
           if (returnType is VoidType) {
             problem = fasta.messageIllegalSyncGeneratorVoidReturnType;
-          } else if (!_typeInferrer.typeSchemaEnvironment
-              .isSubtypeOf(iterableBottomType, returnType)) {
+          } else if (!typeEnvironment.isSubtypeOf(
+              iterableBottomType, returnType)) {
             problem = fasta.messageIllegalSyncGeneratorReturnType;
           }
           break;
@@ -775,12 +777,6 @@
       }
     }
 
-    // We finished the invalid body inference, desugar it into its error.
-    if (body is InvalidStatementJudgment) {
-      InvalidStatementJudgment judgment = body;
-      body = new ExpressionStatement(judgment.desugaredError);
-    }
-
     if (builder.kind == ProcedureKind.Setter) {
       if (formals?.parameters == null ||
           formals.parameters.length != 1 ||
@@ -806,7 +802,7 @@
       }
     }
     // No-such-method forwarders get their bodies injected during outline
-    // buliding, so we should skip them here.
+    // building, so we should skip them here.
     bool isNoSuchMethodForwarder = (builder.function.parent is Procedure &&
         (builder.function.parent as Procedure).isNoSuchMethodForwarder);
     if (!builder.isExternal && !isNoSuchMethodForwarder) {
@@ -1145,7 +1141,7 @@
       // treat -n differently from -(n).  If the expression occurs in a double
       // context, -n is a double literal and -(n) is an application of unary- to
       // an integer literal.  And in any other context, '-' is part of the
-      // syntax of -n, i.e., -9223372036854775808 is OK and it is the minimun
+      // syntax of -n, i.e., -9223372036854775808 is OK and it is the minimum
       // 64-bit integer, and '-' is an application of unary- in -(n), i.e.,
       // -(9223372036854775808) is an error because the literal does not fit in
       // 64-bits.
@@ -1396,13 +1392,18 @@
         constantContext == ConstantContext.none) {
       addProblem(message.messageObject, message.charOffset, message.length,
           wasHandled: true, context: context);
-      return new Throw(library.loader.instantiateNoSuchMethodError(
-          receiver, name, forest.castArguments(arguments), charOffset,
-          isMethod: !isGetter && !isSetter,
-          isGetter: isGetter,
-          isSetter: isSetter,
-          isStatic: isStatic,
-          isTopLevel: !isStatic && !isSuper));
+      return new SyntheticExpressionJudgment(
+          forest.throwExpression(
+              null,
+              library.loader.instantiateNoSuchMethodError(
+                  receiver, name, forest.castArguments(arguments), charOffset,
+                  isMethod: !isGetter && !isSetter,
+                  isGetter: isGetter,
+                  isSetter: isSetter,
+                  isStatic: isStatic,
+                  isTopLevel: !isStatic && !isSuper))
+            ..fileOffset = charOffset)
+        ..fileOffset = charOffset;
     }
     return buildProblem(
             message.messageObject, message.charOffset, message.length,
@@ -1954,14 +1955,17 @@
     bool isConst = (currentLocalVariableModifiers & constMask) != 0;
     bool isFinal = (currentLocalVariableModifiers & finalMask) != 0;
     assert(isConst == (constantContext == ConstantContext.inferred));
-    push(new VariableDeclarationJudgment(identifier.name, functionNestingLevel,
+    VariableDeclaration variable = new VariableDeclarationJudgment(
+        identifier.name, functionNestingLevel,
         forSyntheticToken: deprecated_extractToken(identifier).isSynthetic,
         initializer: initializer,
         type: buildDartType(currentLocalVariableType),
         isFinal: isFinal,
         isConst: isConst)
       ..fileOffset = identifier.charOffset
-      ..fileEqualsOffset = offsetForToken(equalsToken));
+      ..fileEqualsOffset = offsetForToken(equalsToken);
+    library.checkBoundsInVariableDeclaration(variable, typeEnvironment);
+    push(variable);
   }
 
   @override
@@ -2134,11 +2138,11 @@
     return null;
   }
 
-  List<ExpressionJudgment> buildForInitExpressions(variableOrExpression) {
-    if (variableOrExpression is ExpressionJudgment) {
-      return <ExpressionJudgment>[variableOrExpression];
+  List<Expression> buildForInitExpressions(variableOrExpression) {
+    if (variableOrExpression is Expression) {
+      return <Expression>[variableOrExpression];
     } else if (variableOrExpression is ExpressionStatementJudgment) {
-      return <ExpressionJudgment>[variableOrExpression.expression];
+      return <Expression>[variableOrExpression.expression];
     }
     return null;
   }
@@ -2155,7 +2159,7 @@
     variableOrExpression = variableOrExpression is Generator
         ? variableOrExpression.buildForEffect()
         : variableOrExpression;
-    List<ExpressionJudgment> initializers =
+    List<Expression> initializers =
         buildForInitExpressions(variableOrExpression);
     List<VariableDeclaration> variableList = initializers == null
         ? buildForInitVariableDeclarations(variableOrExpression)
@@ -2231,14 +2235,16 @@
         }
       }
     }
-    push(forest.literalList(
+    Expression node = forest.literalList(
         constKeyword,
         constKeyword != null || constantContext == ConstantContext.inferred,
         typeArgument,
         typeArguments,
         leftBracket,
         expressions,
-        rightBracket));
+        rightBracket);
+    library.checkBoundsInListLiteral(node, typeEnvironment);
+    push(node);
   }
 
   @override
@@ -2285,8 +2291,7 @@
         }
       }
     }
-
-    push(forest.literalMap(
+    Expression node = forest.literalMap(
         constKeyword,
         constKeyword != null || constantContext == ConstantContext.inferred,
         keyType,
@@ -2294,7 +2299,9 @@
         typeArguments,
         leftBrace,
         entries,
-        rightBrace));
+        rightBrace);
+    library.checkBoundsInMapLiteral(node, typeEnvironment);
+    push(node);
   }
 
   @override
@@ -2448,7 +2455,8 @@
   @override
   void handleAsOperator(Token operator) {
     debugEvent("AsOperator");
-    UnresolvedType<KernelTypeBuilder> type = pop();
+    DartType type = buildDartType(pop());
+    library.checkBoundsInType(type, typeEnvironment, operator.charOffset);
     Expression expression = popForValue();
     if (constantContext != ConstantContext.none) {
       push(buildProblem(
@@ -2458,7 +2466,8 @@
               operator.length)
           .desugared);
     } else {
-      push(forest.asExpression(expression, buildDartType(type), operator));
+      Expression node = forest.asExpression(expression, type, operator);
+      push(node);
     }
   }
 
@@ -2470,6 +2479,7 @@
     bool isInverted = not != null;
     Expression isExpression =
         forest.isExpression(operand, isOperator, not, type);
+    library.checkBoundsInType(type, typeEnvironment, isOperator.charOffset);
     if (operand is VariableGet) {
       typePromoter.handleIsCheck(isExpression, isInverted, operand.variable,
           type, functionNestingLevel);
@@ -2517,18 +2527,14 @@
   void handleThrowExpression(Token throwToken, Token endToken) {
     debugEvent("ThrowExpression");
     Expression expression = popForValue();
-
-    Expression error;
     if (constantContext != ConstantContext.none) {
-      error = buildProblem(
-              fasta.templateNotConstantExpression.withArguments('Throw'),
-              throwToken.offset,
-              throwToken.length)
-          .desugared;
+      push(buildProblem(
+          fasta.templateNotConstantExpression.withArguments('Throw'),
+          throwToken.offset,
+          throwToken.length));
+    } else {
+      push(forest.throwExpression(throwToken, expression));
     }
-
-    push(new ThrowJudgment(expression, desugaredError: error)
-      ..fileOffset = offsetForToken(throwToken));
   }
 
   @override
@@ -2910,7 +2916,7 @@
     pushQualifiedReference(start, periodBeforeName);
   }
 
-  /// A qualfied reference is something that matches one of:
+  /// A qualified reference is something that matches one of:
   ///
   ///     identifier
   ///     identifier typeArguments? '.' identifier
@@ -2955,6 +2961,7 @@
       if (qualifier is TypeUseGenerator) {
         type = qualifier;
         if (typeArguments != null) {
+          // TODO(ahe): Point to the type arguments instead.
           addProblem(fasta.messageConstructorWithTypeArguments,
               identifier.charOffset, identifier.name.length);
         }
@@ -2986,8 +2993,7 @@
   Expression buildStaticInvocation(Member target, Arguments arguments,
       {Constness constness: Constness.implicit,
       int charOffset: -1,
-      int charLength: noLength,
-      Expression error}) {
+      int charLength: noLength}) {
     // The argument checks for the initial target of redirecting factories
     // invocations are skipped in Dart 1.
     if (library.loader.target.strongMode || !isRedirectingFactory(target)) {
@@ -2999,23 +3005,13 @@
       LocatedMessage argMessage = checkArgumentsForFunction(
           target.function, arguments, charOffset, typeParameters);
       if (argMessage != null) {
-        Expression error = throwNoSuchMethodError(
+        return throwNoSuchMethodError(
             forest.literalNull(null)..fileOffset = charOffset,
             target.name.name,
             arguments,
             charOffset,
             candidate: target,
             message: argMessage);
-        if (target is Constructor) {
-          return new InvalidConstructorInvocationJudgment(
-              error, target, arguments)
-            ..fileOffset = charOffset;
-        } else {
-          return new StaticInvocationJudgment(
-              target, forest.castArguments(arguments),
-              desugaredError: error)
-            ..fileOffset = charOffset;
-        }
       }
     }
 
@@ -3032,10 +3028,12 @@
             target,
             arguments);
       }
-      return new ConstructorInvocationJudgment(
+      ConstructorInvocation node = new ConstructorInvocation(
           target, forest.castArguments(arguments),
           isConst: isConst)
         ..fileOffset = charOffset;
+      library.checkBoundsInConstructorInvocation(node, typeEnvironment);
+      return node;
     } else {
       Procedure procedure = target;
       if (procedure.isFactory) {
@@ -3049,15 +3047,19 @@
               target,
               arguments);
         }
-        return new FactoryConstructorInvocationJudgment(
+        StaticInvocation node = FactoryConstructorInvocationJudgment(
             target, forest.castArguments(arguments),
             isConst: isConst)
           ..fileOffset = charOffset;
+        library.checkBoundsInFactoryInvocation(node, typeEnvironment);
+        return node;
       } else {
-        return new StaticInvocationJudgment(
+        StaticInvocation node = new StaticInvocation(
             target, forest.castArguments(arguments),
-            desugaredError: error, isConst: isConst)
+            isConst: isConst)
           ..fileOffset = charOffset;
+        library.checkBoundsInStaticInvocation(node, typeEnvironment);
+        return node;
       }
     }
   }
@@ -3095,10 +3097,13 @@
     List<DartType> types = forest.argumentsTypeArguments(arguments);
     if (typeParameters.length != types.length) {
       if (types.length == 0) {
-        // Expected `typeParameters.length` type arguments, but none given,
-        // so we fill in dynamic.
-        for (int i = 0; i < typeParameters.length; i++) {
-          types.add(const DynamicType());
+        // Expected `typeParameters.length` type arguments, but none given, so
+        // we fill in dynamic in legacy mode, and use type inference in strong
+        // mode.
+        if (!library.loader.target.strongMode) {
+          for (int i = 0; i < typeParameters.length; i++) {
+            types.add(const DynamicType());
+          }
         }
       } else {
         // A wrong (non-zero) amount of type arguments given. That's an error.
@@ -3251,6 +3256,11 @@
       return buildProblem(fasta.messageMissingArgumentList,
           nameToken.charOffset, nameToken.length);
     }
+    if (name.isNotEmpty && arguments.types.isNotEmpty) {
+      // TODO(ahe): Point to the type arguments instead.
+      addProblem(fasta.messageConstructorWithTypeArguments,
+          nameToken.charOffset, nameToken.length);
+    }
 
     if (typeArguments != null) {
       assert(forest.argumentsTypeArguments(arguments).isEmpty);
@@ -3353,6 +3363,12 @@
   }
 
   @override
+  void handleInvalidTypeArguments(Token token) {
+    debugEvent("InvalidTypeArguments");
+    pop(NullValue.TypeArguments);
+  }
+
+  @override
   void handleThisExpression(Token token, IdentifierContext context) {
     debugEvent("ThisExpression");
     if (context.isScopeReference && isInstanceContext) {
@@ -3384,7 +3400,7 @@
     debugEvent("NamedArgument");
     Expression value = popForValue();
     Identifier identifier = pop();
-    push(new NamedExpressionJudgment(identifier.name, value)
+    push(new NamedExpression(identifier.name, value)
       ..fileOffset = identifier.charOffset);
   }
 
@@ -3485,7 +3501,7 @@
       variable.type = function.functionType;
       if (isFunctionExpression) {
         Expression oldInitializer = variable.initializer;
-        variable.initializer = new FunctionExpressionJudgment(function)
+        variable.initializer = new FunctionExpression(function)
           ..parent = variable
           ..fileOffset = formals.charOffset;
         exitLocalScope();
@@ -3556,7 +3572,7 @@
       push(buildProblem(fasta.messageNotAConstantExpression, formals.charOffset,
           formals.length));
     } else {
-      push(new FunctionExpressionJudgment(function)
+      push(new FunctionExpression(function)
         ..fileOffset = offsetForToken(beginToken));
     }
   }
@@ -3708,12 +3724,15 @@
   @override
   void endRethrowStatement(Token rethrowToken, Token endToken) {
     debugEvent("RethrowStatement");
-    push(new ExpressionStatementJudgment(new RethrowJudgment(inCatchBlock
-        ? null
-        : buildProblem(fasta.messageRethrowNotCatch,
-                offsetForToken(rethrowToken), lengthForToken(rethrowToken))
-            .desugared)
-      ..fileOffset = offsetForToken(rethrowToken)));
+    if (inCatchBlock) {
+      push(forest.rethrowStatement(rethrowToken, endToken));
+    } else {
+      push(new ExpressionStatementJudgment(buildProblem(
+          fasta.messageRethrowNotCatch,
+          offsetForToken(rethrowToken),
+          lengthForToken(rethrowToken)))
+        ..fileOffset = offsetForToken(rethrowToken));
+    }
   }
 
   @override
@@ -3923,7 +3942,7 @@
           lastNode is! ContinueSwitchStatement &&
           lastNode is! Rethrow &&
           lastNode is! ReturnStatement &&
-          lastNode is! Throw) {
+          !forest.isThrow(lastNode)) {
         block.addStatement(
             new ExpressionStatement(buildFallThroughError(current.fileOffset)));
       }
@@ -4142,9 +4161,8 @@
   @override
   void handleInvalidStatement(Token token, Message message) {
     Statement statement = pop();
-    push(new InvalidStatementJudgment(
-        buildProblem(message, statement.fileOffset, noLength).desugared,
-        statement));
+    push(new ExpressionStatement(
+        buildProblem(message, statement.fileOffset, noLength).desugared));
   }
 
   @override
@@ -4183,18 +4201,19 @@
       {List<LocatedMessage> context}) {
     // TODO(askesc): Produce explicit error expression wrapping the original.
     // See [issue 29717](https://github.com/dart-lang/sdk/issues/29717)
-    return new SyntheticExpressionJudgment(new Let(
-        new VariableDeclaration.forValue(buildProblem(
-            message.messageObject, message.charOffset, message.length,
-            context: context))
-          ..fileOffset = forest.readOffset(expression),
-        new Let(
-            new VariableDeclaration.forValue(expression)
-              ..fileOffset = forest.readOffset(expression),
-            forest.literalNull(null)
-              ..fileOffset = forest.readOffset(expression))
-          ..fileOffset = forest.readOffset(expression))
-      ..fileOffset = forest.readOffset(expression));
+    int offset = forest.readOffset(expression);
+    if (offset == -1) {
+      offset = message.charOffset;
+    }
+    return new Let(
+        new VariableDeclaration.forValue(
+            buildProblem(
+                    message.messageObject, message.charOffset, message.length,
+                    context: context)
+                .desugared,
+            type: const BottomType())
+          ..fileOffset = offset,
+        expression);
   }
 
   Expression buildFallThroughError(int charOffset) {
@@ -4206,14 +4225,18 @@
     // TODO(ahe): Compute a LocatedMessage above instead?
     Location location = messages.getLocationFromUri(uri, charOffset);
 
-    return new Throw(buildStaticInvocation(
-        library.loader.coreTypes.fallThroughErrorUrlAndLineConstructor,
-        forest.arguments(<Expression>[
-          forest.literalString("${location?.file ?? uri}", null)
-            ..fileOffset = charOffset,
-          forest.literalInt(location?.line ?? 0, null)..fileOffset = charOffset,
-        ], noLocation),
-        charOffset: charOffset));
+    return forest.throwExpression(
+        null,
+        buildStaticInvocation(
+            library.loader.coreTypes.fallThroughErrorUrlAndLineConstructor,
+            forest.arguments(<Expression>[
+              forest.literalString("${location?.file ?? uri}", null)
+                ..fileOffset = charOffset,
+              forest.literalInt(location?.line ?? 0, null)
+                ..fileOffset = charOffset,
+            ], noLocation),
+            charOffset: charOffset))
+      ..fileOffset = charOffset;
   }
 
   Expression buildAbstractClassInstantiationError(
@@ -4223,11 +4246,16 @@
     // TODO(ahe): The following doesn't make sense to Analyzer AST.
     Declaration constructor =
         library.loader.getAbstractClassInstantiationError();
-    return new Throw(buildStaticInvocation(
-        constructor.target,
-        forest.arguments(<Expression>[
-          forest.literalString(className, null)..fileOffset = charOffset
-        ], noLocation)));
+    return forest.throwExpression(
+        null,
+        buildStaticInvocation(
+            constructor.target,
+            forest.arguments(<Expression>[
+              forest.literalString(className, null)..fileOffset = charOffset
+            ], noLocation)
+              ..fileOffset = charOffset,
+            charOffset: charOffset))
+      ..fileOffset = charOffset;
   }
 
   Statement buildProblemStatement(Message message, int charOffset,
@@ -4316,18 +4344,21 @@
         return new ShadowInvalidFieldInitializer(
             builder.field,
             expression,
-            new VariableDeclaration.forValue(new Throw(buildStaticInvocation(
-                constructor.target,
-                forest.arguments(<Expression>[
-                  forest.literalString(name, null)..fileOffset = offset
-                ], noLocation),
-                charOffset: offset))))
+            new VariableDeclaration.forValue(forest.throwExpression(
+                null,
+                buildStaticInvocation(
+                    constructor.target,
+                    forest.arguments(<Expression>[
+                      forest.literalString(name, null)..fileOffset = offset
+                    ], noLocation)
+                      ..fileOffset = offset,
+                    charOffset: offset))
+              ..fileOffset = offset))
           ..fileOffset = offset;
       } else {
         if (library.loader.target.strongMode &&
             formalType != null &&
-            !_typeInferrer.typeSchemaEnvironment
-                .isSubtypeOf(formalType, builder.field.type)) {
+            !typeEnvironment.isSubtypeOf(formalType, builder.field.type)) {
           library.addProblem(
               fasta.templateInitializingFormalTypeMismatch
                   .withArguments(name, formalType, builder.field.type),
@@ -4453,8 +4484,8 @@
       }
       return new UnresolvedType<KernelTypeBuilder>(
           new KernelNamedTypeBuilder(typeParameter.name, null)
-            ..bind(new KernelInvalidTypeBuilder(
-                typeParameter.name, message, suppressMessage)),
+            ..bind(new KernelInvalidTypeBuilder(typeParameter.name, message,
+                suppressMessage: suppressMessage)),
           unresolved.charOffset,
           unresolved.fileUri);
     }
@@ -4472,7 +4503,8 @@
     }
     for (Expression argument in expressions.reversed) {
       expression = new Let(
-          new VariableDeclaration.forValue(argument, isFinal: true),
+          new VariableDeclaration.forValue(argument,
+              isFinal: true, type: coreTypes.objectClass.rawType),
           expression);
     }
     return expression;
@@ -4484,19 +4516,17 @@
   @override
   Expression buildMethodInvocation(
       Expression receiver, Name name, Arguments arguments, int offset,
-      {Expression error,
-      bool isConstantExpression: false,
+      {bool isConstantExpression: false,
       bool isNullAware: false,
       bool isImplicitCall: false,
       bool isSuper: false,
       Member interfaceTarget}) {
     if (constantContext != ConstantContext.none && !isConstantExpression) {
-      error = buildProblem(
-              fasta.templateNotConstantExpression
-                  .withArguments('Method invocation'),
-              offset,
-              name.name.length)
-          .desugared;
+      return buildProblem(
+          fasta.templateNotConstantExpression
+              .withArguments('Method invocation'),
+          offset,
+          name.name.length);
     }
     if (isSuper) {
       // We can ignore [isNullAware] on super sends.
@@ -4516,17 +4546,17 @@
         }
         return new SuperMethodInvocationJudgment(
             name, forest.castArguments(arguments),
-            interfaceTarget: target, desugaredError: error)
+            interfaceTarget: target)
           ..fileOffset = offset;
       }
 
-      receiver = new SuperPropertyGetJudgment(name,
-          interfaceTarget: target, desugaredError: error)
+      receiver = new SuperPropertyGetJudgment(name, interfaceTarget: target)
         ..fileOffset = offset;
-      return new MethodInvocationJudgment(
+      MethodInvocation node = new MethodInvocationJudgment(
           receiver, callName, forest.castArguments(arguments),
-          isImplicitCall: true, desugaredError: error)
+          isImplicitCall: true)
         ..fileOffset = forest.readOffset(arguments);
+      return node;
     }
 
     if (isNullAware) {
@@ -4541,16 +4571,14 @@
               new MethodInvocation(new VariableGet(variable), name,
                   forest.castArguments(arguments), interfaceTarget)
                 ..fileOffset = offset)
-            ..fileOffset = offset,
-          desugaredError: error)
+            ..fileOffset = offset)
         ..fileOffset = offset;
     } else {
-      return new MethodInvocationJudgment(
+      MethodInvocation node = new MethodInvocationJudgment(
           receiver, name, forest.castArguments(arguments),
-          isImplicitCall: isImplicitCall,
-          interfaceTarget: interfaceTarget,
-          desugaredError: error)
+          isImplicitCall: isImplicitCall, interfaceTarget: interfaceTarget)
         ..fileOffset = offset;
+      return node;
     }
   }
 
@@ -4600,8 +4628,7 @@
 
   @override
   StaticGet makeStaticGet(Member readTarget, Token token) {
-    return new StaticGetJudgment(readTarget)
-      ..fileOffset = offsetForToken(token);
+    return new StaticGet(readTarget)..fileOffset = offsetForToken(token);
   }
 
   @override
@@ -4896,7 +4923,8 @@
     statement.parent = body;
     return body;
   } else {
-    return new Block(<Statement>[statement, body]);
+    return new Block(<Statement>[statement, body])
+      ..fileOffset = statement.fileOffset;
   }
 }
 
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 c7c2b56..3621504 100644
--- a/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/expression_generator.dart
@@ -71,7 +71,6 @@
         Member,
         Name,
         Procedure,
-        StaticInvocationJudgment,
         SyntheticExpressionJudgment,
         UnresolvedTargetInvocationJudgment,
         VariableDeclaration;
@@ -1063,13 +1062,10 @@
   @override
   /* Expression | Generator | Initializer */ doInvocation(
       int offset, Arguments arguments) {
-    return new StaticInvocationJudgment(null, forest.castArguments(arguments),
-        desugaredError: helper.wrapInLocatedProblem(
-            helper.evaluateArgumentsBefore(
-                arguments, forest.literalNull(token)),
-            messageCantUsePrefixAsExpression.withLocation(
-                helper.uri, offsetForToken(token), lengthForToken(token))))
-      ..fileOffset = offset;
+    return helper.wrapInLocatedProblem(
+        helper.evaluateArgumentsBefore(arguments, forest.literalNull(token)),
+        messageCantUsePrefixAsExpression.withLocation(
+            helper.uri, offsetForToken(token), lengthForToken(token)));
   }
 
   @override
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 ea26ede..095ae58 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
@@ -49,8 +49,6 @@
 abstract class ExpressionGeneratorHelper implements InferenceHelper {
   LibraryBuilder get library;
 
-  Uri get uri;
-
   TypePromoter get typePromoter;
 
   int get functionNestingLevel;
@@ -85,7 +83,7 @@
       [int charOffset = -1]);
 
   Expression buildStaticInvocation(Procedure target, Arguments arguments,
-      {Constness constness, int charOffset, Expression error});
+      {Constness constness, int charOffset});
 
   Expression throwNoSuchMethodError(
       Expression receiver, String name, Arguments arguments, int offset,
@@ -108,8 +106,7 @@
 
   Expression buildMethodInvocation(
       Expression receiver, Name name, Arguments arguments, int offset,
-      {Expression error,
-      bool isConstantExpression,
+      {bool isConstantExpression,
       bool isNullAware,
       bool isImplicitCall,
       bool isSuper,
diff --git a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
index a4e9c2f..dc3d66a 100644
--- a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
@@ -9,23 +9,36 @@
 import 'package:kernel/ast.dart'
     show
         Arguments,
+        AsExpression,
         AssertInitializer,
+        AwaitExpression,
         Block,
+        BoolLiteral,
         Catch,
+        CheckLibraryIsLoaded,
+        ConditionalExpression,
         DartType,
         EmptyStatement,
         Expression,
         ExpressionStatement,
         InvalidExpression,
+        IsExpression,
         Let,
         LibraryDependency,
+        LogicalExpression,
         MapEntry,
         Member,
         Name,
         NamedExpression,
+        Not,
+        NullLiteral,
         Procedure,
+        Rethrow,
         Statement,
+        StringConcatenation,
+        StringLiteral,
         ThisExpression,
+        Throw,
         TreeNode,
         VariableDeclaration,
         setParents;
@@ -64,16 +77,11 @@
 import 'kernel_shadow_ast.dart'
     show
         ArgumentsJudgment,
-        AsJudgment,
         AssertInitializerJudgment,
         AssertStatementJudgment,
-        AwaitJudgment,
         BlockJudgment,
-        BoolJudgment,
         BreakJudgment,
         CatchJudgment,
-        CheckLibraryIsLoadedJudgment,
-        ConditionalJudgment,
         ContinueJudgment,
         DoJudgment,
         DoubleJudgment,
@@ -82,25 +90,15 @@
         ForJudgment,
         IfJudgment,
         IntJudgment,
-        IsJudgment,
-        IsNotJudgment,
         LabeledStatementJudgment,
         ListLiteralJudgment,
         LoadLibraryJudgment,
-        LogicalJudgment,
         MapEntryJudgment,
         MapLiteralJudgment,
-        NotJudgment,
-        NullJudgment,
-        RethrowJudgment,
         ReturnJudgment,
         ShadowLargeIntLiteral,
-        StringConcatenationJudgment,
-        StringLiteralJudgment,
         SymbolLiteralJudgment,
         SyntheticExpressionJudgment,
-        ThisJudgment,
-        ThrowJudgment,
         TryCatchJudgment,
         TryFinallyJudgment,
         TypeLiteralJudgment,
@@ -156,11 +154,11 @@
   }
 
   @override
-  StringLiteralJudgment asLiteralString(Expression value) => value;
+  StringLiteral asLiteralString(Expression value) => value;
 
   @override
-  BoolJudgment literalBool(bool value, Token token) {
-    return new BoolJudgment(value)..fileOffset = offsetForToken(token);
+  BoolLiteral literalBool(bool value, Token token) {
+    return new BoolLiteral(value)..fileOffset = offsetForToken(token);
   }
 
   @override
@@ -213,13 +211,13 @@
   }
 
   @override
-  NullJudgment literalNull(Token token) {
-    return new NullJudgment()..fileOffset = offsetForToken(token);
+  NullLiteral literalNull(Token token) {
+    return new NullLiteral()..fileOffset = offsetForToken(token);
   }
 
   @override
-  StringLiteralJudgment literalString(String value, Token token) {
-    return new StringLiteralJudgment(value)..fileOffset = offsetForToken(token);
+  StringLiteral literalString(String value, Token token) {
+    return new StringLiteral(value)..fileOffset = offsetForToken(token);
   }
 
   @override
@@ -252,12 +250,13 @@
 
   @override
   Expression checkLibraryIsLoaded(LibraryDependency dependency) {
-    return new CheckLibraryIsLoadedJudgment(dependency);
+    return new CheckLibraryIsLoaded(dependency);
   }
 
   @override
   Expression asExpression(Expression expression, DartType type, Token token) {
-    return new AsJudgment(expression, type)..fileOffset = offsetForToken(token);
+    return new AsExpression(expression, type)
+      ..fileOffset = offsetForToken(token);
   }
 
   @override
@@ -315,7 +314,7 @@
 
   @override
   Expression awaitExpression(Expression operand, Token token) {
-    return new AwaitJudgment(operand)..fileOffset = offsetForToken(token);
+    return new AwaitExpression(operand)..fileOffset = offsetForToken(token);
   }
 
   @override
@@ -357,7 +356,8 @@
   @override
   Expression conditionalExpression(Expression condition, Token question,
       Expression thenExpression, Token colon, Expression elseExpression) {
-    return new ConditionalJudgment(condition, thenExpression, elseExpression)
+    return new ConditionalExpression(
+        condition, thenExpression, elseExpression, null)
       ..fileOffset = offsetForToken(question);
   }
 
@@ -408,12 +408,13 @@
 
   @override
   Expression isExpression(
-      Expression operand, isOperator, Token notOperator, DartType type) {
-    int offset = offsetForToken(isOperator);
+      Expression operand, Token isOperator, Token notOperator, DartType type) {
+    Expression result = new IsExpression(operand, type)
+      ..fileOffset = offsetForToken(isOperator);
     if (notOperator != null) {
-      return new IsNotJudgment(operand, type, offset)..fileOffset = offset;
+      result = notExpression(result, notOperator, false);
     }
-    return new IsJudgment(operand, type)..fileOffset = offset;
+    return result;
   }
 
   @override
@@ -423,14 +424,14 @@
   @override
   Expression logicalExpression(
       Expression leftOperand, Token operator, Expression rightOperand) {
-    return new LogicalJudgment(leftOperand, operator.stringValue, rightOperand)
+    return new LogicalExpression(
+        leftOperand, operator.stringValue, rightOperand)
       ..fileOffset = offsetForToken(operator);
   }
 
   @override
   Expression notExpression(Expression operand, Token token, bool isSynthetic) {
-    return new NotJudgment(isSynthetic, operand)
-      ..fileOffset = offsetForToken(token);
+    return new Not(operand)..fileOffset = offsetForToken(token);
   }
 
   @override
@@ -442,7 +443,7 @@
   @override
   Statement rethrowStatement(Token rethrowKeyword, Token semicolon) {
     return new ExpressionStatementJudgment(
-        new RethrowJudgment(null)..fileOffset = offsetForToken(rethrowKeyword));
+        new Rethrow()..fileOffset = offsetForToken(rethrowKeyword));
   }
 
   @override
@@ -455,7 +456,7 @@
   @override
   Expression stringConcatenationExpression(
       List<Expression> expressions, Token token) {
-    return new StringConcatenationJudgment(expressions)
+    return new StringConcatenation(expressions)
       ..fileOffset = offsetForToken(token);
   }
 
@@ -466,16 +467,18 @@
 
   @override
   Expression thisExpression(Token token) {
-    return new ThisJudgment()..fileOffset = offsetForToken(token);
+    return new ThisExpression()..fileOffset = offsetForToken(token);
   }
 
   @override
   Expression throwExpression(Token throwKeyword, Expression expression) {
-    return new ThrowJudgment(expression)
-      ..fileOffset = offsetForToken(throwKeyword);
+    return new Throw(expression)..fileOffset = offsetForToken(throwKeyword);
   }
 
   @override
+  bool isThrow(Object o) => o is Throw;
+
+  @override
   Statement tryStatement(Token tryKeyword, Statement body,
       List<Catch> catchClauses, Token finallyKeyword, Statement finallyBlock) {
     if (finallyBlock != null) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/forest.dart b/pkg/front_end/lib/src/fasta/kernel/forest.dart
index e51a8e6..a7ab83b 100644
--- a/pkg/front_end/lib/src/fasta/kernel/forest.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/forest.dart
@@ -285,6 +285,8 @@
   /// [throwKeyword].
   Expression throwExpression(Token throwKeyword, Expression expression);
 
+  bool isThrow(Object o);
+
   /// Return a representation of a try statement. The statement is introduced by
   /// the [tryKeyword] and the given [body]. If catch clauses were included,
   /// then the [catchClauses] will represent them, otherwise it will be `null`.
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
new file mode 100644
index 0000000..7aaef01
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -0,0 +1,1418 @@
+// 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.
+
+part of "kernel_shadow_ast.dart";
+
+class InferenceVistor extends BodyVisitor1<void, DartType> {
+  final ShadowTypeInferrer inferrer;
+
+  InferenceVistor(this.inferrer);
+
+  @override
+  void defaultExpression(Expression node, DartType typeContext) {
+    unhandled("${node.runtimeType}", "InferenceVistor", node.fileOffset,
+        inferrer.helper.uri);
+  }
+
+  @override
+  void defaultStatement(Statement node, DartType _) {
+    unhandled("${node.runtimeType}", "InferenceVistor", node.fileOffset,
+        inferrer.helper.uri);
+  }
+
+  @override
+  void visitInvalidExpression(InvalidExpression node, DartType typeContext) {}
+
+  @override
+  void visitIntLiteral(IntLiteral node, DartType typeContext) {}
+
+  @override
+  void visitDoubleLiteral(DoubleLiteral node, DartType typeContext) {}
+
+  @override
+  void visitAsExpression(AsExpression node, DartType typeContext) {
+    inferrer.inferExpression(
+        node.operand, const UnknownType(), !inferrer.isTopLevel,
+        isVoidAllowed: true);
+  }
+
+  void visitAssertInitializerJudgment(AssertInitializerJudgment node) {
+    inferrer.inferStatement(node.judgment);
+  }
+
+  void visitAssertStatementJudgment(AssertStatementJudgment node) {
+    var conditionJudgment = node.conditionJudgment;
+    var messageJudgment = node.messageJudgment;
+    var expectedType = inferrer.coreTypes.boolClass.rawType;
+    inferrer.inferExpression(
+        conditionJudgment, expectedType, !inferrer.isTopLevel);
+    inferrer.ensureAssignable(
+        expectedType,
+        getInferredType(conditionJudgment, inferrer),
+        conditionJudgment,
+        conditionJudgment.fileOffset);
+    if (messageJudgment != null) {
+      inferrer.inferExpression(
+          messageJudgment, const UnknownType(), !inferrer.isTopLevel);
+    }
+  }
+
+  @override
+  void visitAwaitExpression(AwaitExpression node, DartType typeContext) {
+    if (!inferrer.typeSchemaEnvironment.isEmptyContext(typeContext)) {
+      typeContext = inferrer.wrapFutureOrType(typeContext);
+    }
+    var operand = node.operand;
+    inferrer.inferExpression(operand, typeContext, true, isVoidAllowed: true);
+    inferrer.storeInferredType(
+        node,
+        inferrer.typeSchemaEnvironment
+            .unfutureType(getInferredType(operand, inferrer)));
+  }
+
+  void visitBlockJudgment(BlockJudgment node) {
+    for (var judgment in node.judgments) {
+      inferrer.inferStatement(judgment);
+    }
+  }
+
+  @override
+  void visitBoolLiteral(BoolLiteral node, DartType typeContext) {}
+
+  void visitBreakJudgment(BreakJudgment node) {
+    // No inference needs to be done.
+  }
+
+  void visitContinueJudgment(ContinueJudgment node) {
+    // No inference needs to be done.
+  }
+
+  void visitCascadeJudgment(CascadeJudgment node, DartType typeContext) {
+    node.inferredType =
+        inferrer.inferExpression(node.targetJudgment, typeContext, true);
+    if (inferrer.strongMode) {
+      node.variable.type = getInferredType(node, inferrer);
+    }
+    for (var judgment in node.cascadeJudgments) {
+      inferrer.inferExpression(
+          judgment, const UnknownType(), !inferrer.isTopLevel,
+          isVoidAllowed: true);
+    }
+    return null;
+  }
+
+  @override
+  void visitConditionalExpression(
+      ConditionalExpression node, DartType typeContext) {
+    var condition = node.condition;
+    var then = node.then;
+    var otherwise = node.otherwise;
+    var expectedType = inferrer.coreTypes.boolClass.rawType;
+    inferrer.inferExpression(condition, expectedType, !inferrer.isTopLevel);
+    inferrer.ensureAssignable(
+        expectedType,
+        getInferredType(condition, inferrer),
+        node.condition,
+        node.condition.fileOffset);
+    inferrer.inferExpression(then, typeContext, true, isVoidAllowed: true);
+    inferrer.inferExpression(otherwise, typeContext, true, isVoidAllowed: true);
+    DartType inferredType = inferrer.typeSchemaEnvironment
+        .getStandardUpperBound(getInferredType(then, inferrer),
+            getInferredType(otherwise, inferrer));
+    if (inferrer.strongMode) {
+      node.staticType = inferredType;
+    }
+  }
+
+  @override
+  void visitConstructorInvocation(
+      ConstructorInvocation node, DartType typeContext) {
+    var library = inferrer.engine.beingInferred[node.target];
+    if (library != null) {
+      // There is a cyclic dependency where inferring the types of the
+      // initializing formals of a constructor required us to infer the
+      // corresponding field type which required us to know the type of the
+      // constructor.
+      String name = node.target.enclosingClass.name;
+      if (node.target.name.name.isNotEmpty) {
+        // TODO(ahe): Use `inferrer.helper.constructorNameForDiagnostics`
+        // instead. However, `inferrer.helper` may be null.
+        name += ".${node.target.name.name}";
+      }
+      library.addProblem(
+          templateCantInferTypeDueToCircularity.withArguments(name),
+          node.target.fileOffset,
+          name.length,
+          node.target.fileUri);
+      for (var declaration in node.target.function.positionalParameters) {
+        declaration.type ??= const DynamicType();
+      }
+      for (var declaration in node.target.function.namedParameters) {
+        declaration.type ??= const DynamicType();
+      }
+    } else if ((library = inferrer.engine.toBeInferred[node.target]) != null) {
+      inferrer.engine.toBeInferred.remove(node.target);
+      inferrer.engine.beingInferred[node.target] = library;
+      for (var declaration in node.target.function.positionalParameters) {
+        inferrer.engine.inferInitializingFormal(declaration, node.target);
+      }
+      for (var declaration in node.target.function.namedParameters) {
+        inferrer.engine.inferInitializingFormal(declaration, node.target);
+      }
+      inferrer.engine.beingInferred.remove(node.target);
+    }
+    bool hasExplicitTypeArguments =
+        getExplicitTypeArguments(node.arguments) != null;
+    var inferenceResult = inferrer.inferInvocation(
+        typeContext,
+        node.fileOffset,
+        node.target.function.functionType,
+        computeConstructorReturnType(node.target),
+        node.arguments,
+        isConst: node.isConst);
+    inferrer.storeInferredType(node, inferenceResult.type);
+    KernelLibraryBuilder inferrerLibrary = inferrer.library;
+    if (!hasExplicitTypeArguments && inferrerLibrary is KernelLibraryBuilder) {
+      inferrerLibrary.checkBoundsInConstructorInvocation(
+          node, inferrer.typeSchemaEnvironment,
+          inferred: true);
+    }
+  }
+
+  void visitContinueSwitchJudgment(ContinueSwitchJudgment node) {
+    // No inference needs to be done.
+  }
+  void visitDeferredCheckJudgment(
+      DeferredCheckJudgment node, DartType typeContext) {
+    // Since the variable is not used in the body we don't need to type infer
+    // it.  We can just type infer the body.
+    var judgment = node.judgment;
+    inferrer.inferExpression(judgment, typeContext, true, isVoidAllowed: true);
+    node.inferredType = getInferredType(judgment, inferrer);
+    return null;
+  }
+
+  void visitDoJudgment(DoJudgment node) {
+    var conditionJudgment = node.conditionJudgment;
+    inferrer.inferStatement(node.bodyJudgment);
+    var boolType = inferrer.coreTypes.boolClass.rawType;
+    inferrer.inferExpression(conditionJudgment, boolType, !inferrer.isTopLevel);
+    inferrer.ensureAssignable(
+        boolType,
+        getInferredType(conditionJudgment, inferrer),
+        node.condition,
+        node.condition.fileOffset);
+  }
+
+  void visitDoubleJudgment(DoubleJudgment node, DartType typeContext) {
+    node.inferredType = inferrer.coreTypes.doubleClass.rawType;
+    return null;
+  }
+
+  void visitEmptyStatementJudgment(EmptyStatementJudgment node) {
+    // No inference needs to be done.
+  }
+  void visitExpressionStatementJudgment(ExpressionStatementJudgment node) {
+    inferrer.inferExpression(
+        node.judgment, const UnknownType(), !inferrer.isTopLevel,
+        isVoidAllowed: true);
+  }
+
+  void visitFactoryConstructorInvocationJudgment(
+      FactoryConstructorInvocationJudgment node, DartType typeContext) {
+    bool hadExplicitTypeArguments =
+        getExplicitTypeArguments(node.arguments) != null;
+    var inferenceResult = inferrer.inferInvocation(
+        typeContext,
+        node.fileOffset,
+        node.target.function.functionType,
+        computeConstructorReturnType(node.target),
+        node.argumentJudgments,
+        isConst: node.isConst);
+    node.inferredType = inferenceResult.type;
+    KernelLibraryBuilder inferrerLibrary = inferrer.library;
+    if (!hadExplicitTypeArguments && inferrerLibrary is KernelLibraryBuilder) {
+      inferrerLibrary.checkBoundsInFactoryInvocation(
+          node, inferrer.typeSchemaEnvironment,
+          inferred: true);
+    }
+    return null;
+  }
+
+  void visitShadowFieldInitializer(ShadowFieldInitializer node) {
+    var initializerType =
+        inferrer.inferExpression(node.value, node.field.type, true);
+    inferrer.ensureAssignable(
+        node.field.type, initializerType, node.value, node.fileOffset);
+  }
+
+  void visitForInJudgment(ForInJudgment node) {
+    var iterableClass = node.isAsync
+        ? inferrer.coreTypes.streamClass
+        : inferrer.coreTypes.iterableClass;
+    DartType context;
+    bool typeNeeded = false;
+    bool typeChecksNeeded = !inferrer.isTopLevel;
+    VariableDeclarationJudgment variable;
+    var syntheticAssignment = node._syntheticAssignment;
+    DartType syntheticWriteType;
+    if (node._declaresVariable) {
+      variable = node.variableJudgment;
+      if (inferrer.strongMode && variable._implicitlyTyped) {
+        typeNeeded = true;
+        context = const UnknownType();
+      } else {
+        context = variable.type;
+      }
+    } else if (syntheticAssignment is ComplexAssignmentJudgment) {
+      syntheticWriteType =
+          context = syntheticAssignment._getWriteType(inferrer);
+    } else {
+      context = const UnknownType();
+    }
+    context = inferrer.wrapType(context, iterableClass);
+
+    var iterableJudgment = node.iterableJudgment;
+    inferrer.inferExpression(
+        iterableJudgment, context, typeNeeded || typeChecksNeeded);
+    var inferredExpressionType = inferrer
+        .resolveTypeParameter(getInferredType(iterableJudgment, inferrer));
+    inferrer.ensureAssignable(
+        inferrer.wrapType(const DynamicType(), iterableClass),
+        inferredExpressionType,
+        node.iterable,
+        node.iterable.fileOffset,
+        template: templateForInLoopTypeNotIterable);
+
+    DartType inferredType;
+    if (typeNeeded || typeChecksNeeded) {
+      inferredType = const DynamicType();
+      if (inferredExpressionType is InterfaceType) {
+        InterfaceType supertype = inferrer.classHierarchy
+            .getTypeAsInstanceOf(inferredExpressionType, iterableClass);
+        if (supertype != null) {
+          inferredType = supertype.typeArguments[0];
+        }
+      }
+      if (typeNeeded) {
+        inferrer.instrumentation?.record(inferrer.uri, variable.fileOffset,
+            'type', new InstrumentationValueForType(inferredType));
+        variable.type = inferredType;
+      }
+      if (!node._declaresVariable) {
+        node.variable.type = inferredType;
+      }
+    }
+
+    inferrer.inferStatement(node.bodyJudgment);
+    if (syntheticAssignment != null) {
+      var syntheticStatement = new ExpressionStatement(syntheticAssignment);
+      node.body = combineStatements(syntheticStatement, node.body)
+        ..parent = node;
+    }
+    if (node._declaresVariable) {
+      inferrer.inferMetadataKeepingHelper(variable.annotations);
+      var tempVar =
+          new VariableDeclaration(null, type: inferredType, isFinal: true);
+      var variableGet = new VariableGet(tempVar)
+        ..fileOffset = node.variable.fileOffset;
+      var implicitDowncast = inferrer.ensureAssignable(
+          variable.type, inferredType, variableGet, node.fileOffset,
+          template: templateForInLoopElementTypeNotAssignable);
+      if (implicitDowncast != null) {
+        node.variable = tempVar..parent = node;
+        variable.initializer = implicitDowncast..parent = variable;
+        node.body = combineStatements(variable, node.body)..parent = node;
+      }
+    } else if (syntheticAssignment is SyntheticExpressionJudgment) {
+      if (syntheticAssignment is ComplexAssignmentJudgment) {
+        inferrer.ensureAssignable(
+            greatestClosure(inferrer.coreTypes, syntheticWriteType),
+            node.variable.type,
+            syntheticAssignment.rhs,
+            syntheticAssignment.rhs.fileOffset,
+            template: templateForInLoopElementTypeNotAssignable,
+            isVoidAllowed: true);
+        if (syntheticAssignment is PropertyAssignmentJudgment) {
+          syntheticAssignment._handleWriteContravariance(
+              inferrer, inferrer.thisType);
+        }
+      }
+      syntheticAssignment._replaceWithDesugared();
+    }
+  }
+
+  void visitForJudgment(ForJudgment node) {
+    var initializers = node.initializers;
+    var conditionJudgment = node.conditionJudgment;
+    if (initializers != null) {
+      for (var initializer in initializers) {
+        node.variables
+            .add(new VariableDeclaration.forValue(initializer)..parent = node);
+        inferrer.inferExpression(
+            initializer, const UnknownType(), !inferrer.isTopLevel,
+            isVoidAllowed: true);
+      }
+    } else {
+      for (var variable in node.variableJudgments) {
+        inferrer.inferStatement(variable);
+      }
+    }
+    if (conditionJudgment != null) {
+      var expectedType = inferrer.coreTypes.boolClass.rawType;
+      inferrer.inferExpression(
+          conditionJudgment, expectedType, !inferrer.isTopLevel);
+      inferrer.ensureAssignable(
+          expectedType,
+          getInferredType(conditionJudgment, inferrer),
+          node.condition,
+          node.condition.fileOffset);
+    }
+    for (var update in node.updateJudgments) {
+      inferrer.inferExpression(
+          update, const UnknownType(), !inferrer.isTopLevel,
+          isVoidAllowed: true);
+    }
+    inferrer.inferStatement(node.bodyJudgment);
+  }
+
+  ExpressionInferenceResult visitFunctionNodeJudgment(
+      FunctionNodeJudgment node,
+      DartType typeContext,
+      DartType returnContext,
+      int returnTypeInstrumentationOffset) {
+    return inferrer.inferLocalFunction(
+        node, typeContext, returnTypeInstrumentationOffset, returnContext);
+  }
+
+  void visitFunctionDeclarationJudgment(FunctionDeclarationJudgment node) {
+    inferrer.inferMetadataKeepingHelper(node.variable.annotations);
+    DartType returnContext = node._hasImplicitReturnType
+        ? (inferrer.strongMode ? null : const DynamicType())
+        : node.function.returnType;
+    var inferenceResult = visitFunctionNodeJudgment(
+        node.functionJudgment, null, returnContext, node.fileOffset);
+    node.variable.type = inferenceResult.type;
+  }
+
+  @override
+  void visitFunctionExpression(FunctionExpression node, DartType typeContext) {
+    var inferenceResult = visitFunctionNodeJudgment(
+        node.function, typeContext, null, node.fileOffset);
+    inferrer.storeInferredType(node, inferenceResult.type);
+  }
+
+  void visitInvalidSuperInitializerJudgment(
+      InvalidSuperInitializerJudgment node) {
+    var substitution = Substitution.fromSupertype(inferrer.classHierarchy
+        .getClassAsInstanceOf(
+            inferrer.thisType.classNode, node.target.enclosingClass));
+    inferrer.inferInvocation(
+        null,
+        node.fileOffset,
+        substitution.substituteType(
+            node.target.function.functionType.withoutTypeParameters),
+        inferrer.thisType,
+        node.argumentsJudgment,
+        skipTypeArgumentInference: true);
+  }
+
+  void visitIfNullJudgment(IfNullJudgment node, DartType typeContext) {
+    var leftJudgment = node.leftJudgment;
+    var rightJudgment = node.rightJudgment;
+    // To infer `e0 ?? e1` in context K:
+    // - Infer e0 in context K to get T0
+    inferrer.inferExpression(leftJudgment, typeContext, true);
+    var lhsType = getInferredType(leftJudgment, inferrer);
+    if (inferrer.strongMode) {
+      node.variable.type = lhsType;
+    }
+    // - Let J = T0 if K is `?` else K.
+    // - Infer e1 in context J to get T1
+    if (typeContext is UnknownType) {
+      inferrer.inferExpression(rightJudgment, lhsType, true,
+          isVoidAllowed: true);
+    } else {
+      inferrer.inferExpression(rightJudgment, typeContext, true,
+          isVoidAllowed: true);
+    }
+    var rhsType = getInferredType(rightJudgment, inferrer);
+    // - Let T = greatest closure of K with respect to `?` if K is not `_`, else
+    //   UP(t0, t1)
+    // - Then the inferred type is T.
+    node.inferredType =
+        inferrer.typeSchemaEnvironment.getStandardUpperBound(lhsType, rhsType);
+    if (inferrer.strongMode) {
+      node.body.staticType = getInferredType(node, inferrer);
+    }
+    return null;
+  }
+
+  void visitIfJudgment(IfJudgment node) {
+    var conditionJudgment = node.conditionJudgment;
+    var expectedType = inferrer.coreTypes.boolClass.rawType;
+    inferrer.inferExpression(
+        conditionJudgment, expectedType, !inferrer.isTopLevel);
+    inferrer.ensureAssignable(
+        expectedType,
+        getInferredType(conditionJudgment, inferrer),
+        node.condition,
+        node.condition.fileOffset);
+    inferrer.inferStatement(node.thenJudgment);
+    if (node.otherwiseJudgment != null) {
+      inferrer.inferStatement(node.otherwiseJudgment);
+    }
+  }
+
+  void visitIllegalAssignmentJudgment(
+      IllegalAssignmentJudgment node, DartType typeContext) {
+    if (node.write != null) {
+      inferrer.inferExpression(
+          node.write, const UnknownType(), !inferrer.isTopLevel);
+    }
+    inferrer.inferExpression(
+        node.rhs, const UnknownType(), !inferrer.isTopLevel);
+    node._replaceWithDesugared();
+    node.inferredType = const DynamicType();
+    return null;
+  }
+
+  void visitIndexAssignmentJudgment(
+      IndexAssignmentJudgment node, DartType typeContext) {
+    var receiverType = node._inferReceiver(inferrer);
+    var writeMember =
+        inferrer.findMethodInvocationMember(receiverType, node.write);
+    // To replicate analyzer behavior, we base type inference on the write
+    // member.  TODO(paulberry): would it be better to use the read member
+    // when doing compound assignment?
+    var calleeType = inferrer.getCalleeFunctionType(
+        inferrer.getCalleeType(writeMember, receiverType), false);
+    DartType expectedIndexTypeForWrite;
+    DartType indexContext = const UnknownType();
+    DartType writeContext = const UnknownType();
+    if (calleeType.positionalParameters.length >= 2) {
+      // TODO(paulberry): we ought to get a context for the index expression
+      // from the index formal parameter, but analyzer doesn't so for now we
+      // replicate its behavior.
+      expectedIndexTypeForWrite = calleeType.positionalParameters[0];
+      writeContext = calleeType.positionalParameters[1];
+    }
+    inferrer.inferExpression(node.index, indexContext, true);
+    var indexType = getInferredType(node.index, inferrer);
+    node._storeLetType(inferrer, node.index, indexType);
+    if (writeContext is! UnknownType) {
+      inferrer.ensureAssignable(
+          expectedIndexTypeForWrite,
+          indexType,
+          node._getInvocationArguments(inferrer, node.write).positional[0],
+          node.write.fileOffset);
+    }
+    InvocationExpression read = node.read;
+    DartType readType;
+    if (read != null) {
+      var readMember = inferrer.findMethodInvocationMember(receiverType, read,
+          instrumented: false);
+      var calleeFunctionType = inferrer.getCalleeFunctionType(
+          inferrer.getCalleeType(readMember, receiverType), false);
+      inferrer.ensureAssignable(
+          getPositionalParameterType(calleeFunctionType, 0),
+          indexType,
+          node._getInvocationArguments(inferrer, read).positional[0],
+          read.fileOffset);
+      readType = calleeFunctionType.returnType;
+      var desugaredInvocation = read is MethodInvocation ? read : null;
+      var checkKind = inferrer.preCheckInvocationContravariance(node.receiver,
+          receiverType, readMember, desugaredInvocation, read.arguments, read);
+      var replacedRead = inferrer.handleInvocationContravariance(
+          checkKind,
+          desugaredInvocation,
+          read.arguments,
+          read,
+          readType,
+          calleeFunctionType,
+          read.fileOffset);
+      node._storeLetType(inferrer, replacedRead, readType);
+    }
+    node._inferRhs(inferrer, readType, writeContext);
+    node._replaceWithDesugared();
+    return null;
+  }
+
+  void visitIntJudgment(IntJudgment node, DartType typeContext) {
+    if (inferrer.isDoubleContext(typeContext)) {
+      double doubleValue = node.asDouble();
+      if (doubleValue != null) {
+        node.parent.replaceChild(
+            node, DoubleLiteral(doubleValue)..fileOffset = node.fileOffset);
+        node.inferredType = inferrer.coreTypes.doubleClass.rawType;
+        return null;
+      }
+    }
+    Expression error = checkWebIntLiteralsErrorIfUnexact(
+        inferrer, node.value, node.literal, node.fileOffset);
+    if (error != null) {
+      node.parent.replaceChild(node, error);
+      node.inferredType = const BottomType();
+      return null;
+    }
+    node.inferredType = inferrer.coreTypes.intClass.rawType;
+    return null;
+  }
+
+  void visitShadowLargeIntLiteral(
+      ShadowLargeIntLiteral node, DartType typeContext) {
+    if (inferrer.isDoubleContext(typeContext)) {
+      double doubleValue = node.asDouble();
+      if (doubleValue != null) {
+        node.parent.replaceChild(
+            node, DoubleLiteral(doubleValue)..fileOffset = node.fileOffset);
+        node.inferredType = inferrer.coreTypes.doubleClass.rawType;
+        return null;
+      }
+    }
+
+    int intValue = node.asInt64();
+    if (intValue == null) {
+      Expression replacement = inferrer.helper
+          .buildProblem(
+              templateIntegerLiteralIsOutOfRange.withArguments(node.literal),
+              node.fileOffset,
+              node.literal.length)
+          .desugared;
+      node.parent.replaceChild(node, replacement);
+      node.inferredType = const BottomType();
+      return null;
+    }
+    Expression error = checkWebIntLiteralsErrorIfUnexact(
+        inferrer, intValue, node.literal, node.fileOffset);
+    if (error != null) {
+      node.parent.replaceChild(node, error);
+      node.inferredType = const BottomType();
+      return null;
+    }
+    node.parent
+        .replaceChild(node, IntLiteral(intValue)..fileOffset = node.fileOffset);
+    node.inferredType = inferrer.coreTypes.intClass.rawType;
+    return null;
+  }
+
+  void visitShadowInvalidInitializer(ShadowInvalidInitializer node) {
+    inferrer.inferExpression(
+        node.variable.initializer, const UnknownType(), !inferrer.isTopLevel);
+  }
+
+  void visitShadowInvalidFieldInitializer(ShadowInvalidFieldInitializer node) {
+    inferrer.inferExpression(node.value, node.field.type, !inferrer.isTopLevel);
+  }
+
+  @override
+  void visitIsExpression(IsExpression node, DartType typeContext) {
+    inferrer.inferExpression(
+        node.operand, const UnknownType(), !inferrer.isTopLevel);
+  }
+
+  void visitLabeledStatementJudgment(LabeledStatementJudgment node) {
+    inferrer.inferStatement(node.judgment);
+  }
+
+  void visitListLiteralJudgment(
+      ListLiteralJudgment node, DartType typeContext) {
+    var listClass = inferrer.coreTypes.listClass;
+    var listType = listClass.thisType;
+    List<DartType> inferredTypes;
+    DartType inferredTypeArgument;
+    List<DartType> formalTypes;
+    List<DartType> actualTypes;
+    bool inferenceNeeded =
+        node._declaredTypeArgument == null && inferrer.strongMode;
+    bool typeChecksNeeded = !inferrer.isTopLevel;
+    if (inferenceNeeded || typeChecksNeeded) {
+      formalTypes = [];
+      actualTypes = [];
+    }
+    if (inferenceNeeded) {
+      inferredTypes = [const UnknownType()];
+      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(listType,
+          listClass.typeParameters, null, null, typeContext, inferredTypes,
+          isConst: node.isConst);
+      inferredTypeArgument = inferredTypes[0];
+    } else {
+      inferredTypeArgument = node._declaredTypeArgument ?? const DynamicType();
+    }
+    if (inferenceNeeded || typeChecksNeeded) {
+      for (int i = 0; i < node.judgments.length; ++i) {
+        Expression judgment = node.judgments[i];
+        inferrer.inferExpression(
+            judgment, inferredTypeArgument, inferenceNeeded || typeChecksNeeded,
+            isVoidAllowed: true);
+        if (inferenceNeeded) {
+          formalTypes.add(listType.typeArguments[0]);
+        }
+        actualTypes.add(getInferredType(judgment, inferrer));
+      }
+    }
+    if (inferenceNeeded) {
+      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(
+          listType,
+          listClass.typeParameters,
+          formalTypes,
+          actualTypes,
+          typeContext,
+          inferredTypes);
+      inferredTypeArgument = inferredTypes[0];
+      inferrer.instrumentation?.record(
+          inferrer.uri,
+          node.fileOffset,
+          'typeArgs',
+          new InstrumentationValueForTypeArgs([inferredTypeArgument]));
+      node.typeArgument = inferredTypeArgument;
+    }
+    if (typeChecksNeeded) {
+      for (int i = 0; i < node.judgments.length; i++) {
+        inferrer.ensureAssignable(node.typeArgument, actualTypes[i],
+            node.judgments[i], node.judgments[i].fileOffset,
+            isVoidAllowed: node.typeArgument is VoidType);
+      }
+    }
+    node.inferredType = new InterfaceType(listClass, [inferredTypeArgument]);
+    KernelLibraryBuilder inferrerLibrary = inferrer.library;
+    if (node._declaredTypeArgument == null &&
+        inferrerLibrary is KernelLibraryBuilder) {
+      inferrerLibrary.checkBoundsInListLiteral(
+          node, inferrer.typeSchemaEnvironment,
+          inferred: true);
+    }
+    return null;
+  }
+
+  @override
+  void visitLogicalExpression(LogicalExpression node, DartType typeContext) {
+    var boolType = inferrer.coreTypes.boolClass.rawType;
+    var left = node.left;
+    var right = node.right;
+    inferrer.inferExpression(left, boolType, !inferrer.isTopLevel);
+    inferrer.inferExpression(right, boolType, !inferrer.isTopLevel);
+    inferrer.ensureAssignable(boolType, getInferredType(left, inferrer),
+        node.left, node.left.fileOffset);
+    inferrer.ensureAssignable(boolType, getInferredType(right, inferrer),
+        node.right, node.right.fileOffset);
+    return null;
+  }
+
+  void visitMapEntryJudgment(MapEntryJudgment node, DartType keyTypeContext,
+      DartType valueTypeContext) {
+    Expression keyJudgment = node.keyJudgment;
+    inferrer.inferExpression(keyJudgment, keyTypeContext, true,
+        isVoidAllowed: true);
+    node.inferredKeyType = getInferredType(keyJudgment, inferrer);
+
+    Expression valueJudgment = node.valueJudgment;
+    inferrer.inferExpression(valueJudgment, valueTypeContext, true,
+        isVoidAllowed: true);
+    node.inferredValueType = getInferredType(valueJudgment, inferrer);
+
+    return null;
+  }
+
+  void visitMapLiteralJudgment(MapLiteralJudgment node, DartType typeContext) {
+    var mapClass = inferrer.coreTypes.mapClass;
+    var mapType = mapClass.thisType;
+    List<DartType> inferredTypes;
+    DartType inferredKeyType;
+    DartType inferredValueType;
+    List<DartType> formalTypes;
+    List<DartType> actualTypes;
+    assert(
+        (node._declaredKeyType == null) == (node._declaredValueType == null));
+    bool inferenceNeeded = node._declaredKeyType == null && inferrer.strongMode;
+    bool typeChecksNeeded = !inferrer.isTopLevel;
+    if (inferenceNeeded || typeChecksNeeded) {
+      formalTypes = [];
+      actualTypes = [];
+    }
+    if (inferenceNeeded) {
+      inferredTypes = [const UnknownType(), const UnknownType()];
+      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(mapType,
+          mapClass.typeParameters, null, null, typeContext, inferredTypes,
+          isConst: node.isConst);
+      inferredKeyType = inferredTypes[0];
+      inferredValueType = inferredTypes[1];
+    } else {
+      inferredKeyType = node._declaredKeyType ?? const DynamicType();
+      inferredValueType = node._declaredValueType ?? const DynamicType();
+    }
+    List<Expression> cachedKeyJudgments =
+        node.judgments.map((j) => (j as MapEntryJudgment).keyJudgment).toList();
+    List<Expression> cachedValueJudgments = node.judgments
+        .map((j) => (j as MapEntryJudgment).valueJudgment)
+        .toList();
+    if (inferenceNeeded || typeChecksNeeded) {
+      for (MapEntryJudgment judgment in node.judgments) {
+        visitMapEntryJudgment(judgment, inferredKeyType, inferredValueType);
+        if (inferenceNeeded) {
+          formalTypes.addAll(mapType.typeArguments);
+        }
+        actualTypes.add(judgment.inferredKeyType);
+        actualTypes.add(judgment.inferredValueType);
+      }
+    }
+    if (inferenceNeeded) {
+      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(
+          mapType,
+          mapClass.typeParameters,
+          formalTypes,
+          actualTypes,
+          typeContext,
+          inferredTypes);
+      inferredKeyType = inferredTypes[0];
+      inferredValueType = inferredTypes[1];
+      inferrer.instrumentation?.record(
+          inferrer.uri,
+          node.fileOffset,
+          'typeArgs',
+          new InstrumentationValueForTypeArgs(
+              [inferredKeyType, inferredValueType]));
+      node.keyType = inferredKeyType;
+      node.valueType = inferredValueType;
+    }
+    if (typeChecksNeeded) {
+      for (int i = 0; i < node.judgments.length; ++i) {
+        Expression keyJudgment = cachedKeyJudgments[i];
+        inferrer.ensureAssignable(node.keyType, actualTypes[2 * i], keyJudgment,
+            keyJudgment.fileOffset,
+            isVoidAllowed: node.keyType is VoidType);
+
+        Expression valueJudgment = cachedValueJudgments[i];
+        inferrer.ensureAssignable(node.valueType, actualTypes[2 * i + 1],
+            valueJudgment, valueJudgment.fileOffset,
+            isVoidAllowed: node.valueType is VoidType);
+      }
+    }
+    node.inferredType =
+        new InterfaceType(mapClass, [inferredKeyType, inferredValueType]);
+    KernelLibraryBuilder inferrerLibrary = inferrer.library;
+    // Either both [_declaredKeyType] and [_declaredValueType] are omitted or
+    // none of them, so we may just check one.
+    if (node._declaredKeyType == null &&
+        inferrerLibrary is KernelLibraryBuilder) {
+      inferrerLibrary.checkBoundsInMapLiteral(
+          node, inferrer.typeSchemaEnvironment,
+          inferred: true);
+    }
+    return null;
+  }
+
+  void visitMethodInvocationJudgment(
+      MethodInvocationJudgment node, DartType typeContext) {
+    if (node.name.name == 'unary-' &&
+        node.arguments.types.isEmpty &&
+        node.arguments.positional.isEmpty &&
+        node.arguments.named.isEmpty) {
+      // Replace integer literals in a double context with the corresponding
+      // double literal if it's exact.  For double literals, the negation is
+      // folded away.  In any non-double context, or if there is no exact
+      // double value, then the corresponding integer literal is left.  The
+      // negation is not folded away so that platforms with web literals can
+      // distinguish between (non-negated) 0x8000000000000000 represented as
+      // integer literal -9223372036854775808 which should be a positive number,
+      // and negated 9223372036854775808 represented as
+      // -9223372036854775808.unary-() which should be a negative number.
+      if (node.receiver is IntJudgment) {
+        IntJudgment receiver = node.receiver;
+        if (inferrer.isDoubleContext(typeContext)) {
+          double doubleValue = receiver.asDouble(negated: true);
+          if (doubleValue != null) {
+            node.parent.replaceChild(
+                node, DoubleLiteral(doubleValue)..fileOffset = node.fileOffset);
+            node.inferredType = inferrer.coreTypes.doubleClass.rawType;
+            return null;
+          }
+        }
+        Expression error = checkWebIntLiteralsErrorIfUnexact(
+            inferrer, receiver.value, receiver.literal, receiver.fileOffset);
+        if (error != null) {
+          node.parent.replaceChild(node, error);
+          node.inferredType = const BottomType();
+          return null;
+        }
+      } else if (node.receiver is ShadowLargeIntLiteral) {
+        ShadowLargeIntLiteral receiver = node.receiver;
+        if (!receiver.isParenthesized) {
+          if (inferrer.isDoubleContext(typeContext)) {
+            double doubleValue = receiver.asDouble(negated: true);
+            if (doubleValue != null) {
+              node.parent.replaceChild(node,
+                  DoubleLiteral(doubleValue)..fileOffset = node.fileOffset);
+              node.inferredType = inferrer.coreTypes.doubleClass.rawType;
+              return null;
+            }
+          }
+          int intValue = receiver.asInt64(negated: true);
+          if (intValue == null) {
+            Expression error = inferrer.helper
+                .buildProblem(
+                    templateIntegerLiteralIsOutOfRange
+                        .withArguments(receiver.literal),
+                    receiver.fileOffset,
+                    receiver.literal.length)
+                .desugared;
+            node.parent.replaceChild(node, error);
+            node.inferredType = const BottomType();
+            return null;
+          }
+          if (intValue != null) {
+            Expression error = checkWebIntLiteralsErrorIfUnexact(
+                inferrer, intValue, receiver.literal, receiver.fileOffset);
+            if (error != null) {
+              node.parent.replaceChild(node, error);
+              node.inferredType = const BottomType();
+              return null;
+            }
+            node.receiver = IntLiteral(-intValue)
+              ..fileOffset = node.receiver.fileOffset
+              ..parent = node;
+          }
+        }
+      }
+    }
+    var inferenceResult = inferrer.inferMethodInvocation(
+        node, node.receiver, node.fileOffset, node._isImplicitCall, typeContext,
+        desugaredInvocation: node);
+    node.inferredType = inferenceResult.type;
+  }
+
+  void visitNamedFunctionExpressionJudgment(
+      NamedFunctionExpressionJudgment node, DartType typeContext) {
+    Expression initializer = node.variableJudgment.initializer;
+    inferrer.inferExpression(initializer, typeContext, true);
+    node.inferredType = getInferredType(initializer, inferrer);
+    if (inferrer.strongMode) node.variable.type = node.inferredType;
+    return null;
+  }
+
+  @override
+  void visitNot(Not node, DartType typeContext) {
+    var operand = node.operand;
+    var boolType = inferrer.coreTypes.boolClass.rawType;
+    inferrer.inferExpression(operand, boolType, !inferrer.isTopLevel);
+    inferrer.ensureAssignable(boolType, getInferredType(operand, inferrer),
+        node.operand, node.fileOffset);
+  }
+
+  void visitNullAwareMethodInvocationJudgment(
+      NullAwareMethodInvocationJudgment node, DartType typeContext) {
+    var inferenceResult = inferrer.inferMethodInvocation(
+        node, node.variable.initializer, node.fileOffset, false, typeContext,
+        receiverVariable: node.variable,
+        desugaredInvocation: node._desugaredInvocation);
+    node.inferredType = inferenceResult.type;
+    if (inferrer.strongMode) {
+      node.body.staticType = node.inferredType;
+    }
+    return null;
+  }
+
+  void visitNullAwarePropertyGetJudgment(
+      NullAwarePropertyGetJudgment node, DartType typeContext) {
+    inferrer.inferPropertyGet(
+        node, node.receiverJudgment, node.fileOffset, typeContext,
+        receiverVariable: node.variable, desugaredGet: node._desugaredGet);
+    if (inferrer.strongMode) {
+      node.body.staticType = node.inferredType;
+    }
+    return null;
+  }
+
+  @override
+  void visitNullLiteral(NullLiteral node, DartType typeContext) {}
+
+  @override
+  void visitLet(Let node, DartType typeContext) {
+    DartType variableType = node.variable.type;
+    if (variableType == const DynamicType()) {
+      return defaultExpression(node, typeContext);
+    }
+    Expression initializer = node.variable.initializer;
+    inferrer.inferExpression(initializer, variableType, true,
+        isVoidAllowed: true);
+    Expression body = node.body;
+    inferrer.inferExpression(body, typeContext, true, isVoidAllowed: true);
+    // TODO(ahe): This shouldn't be needed. See InferredTypeVisitor.visitLet.
+    inferrer.storeInferredType(node, getInferredType(body, inferrer));
+  }
+
+  void visitPropertyAssignmentJudgment(
+      PropertyAssignmentJudgment node, DartType typeContext) {
+    var receiverType = node._inferReceiver(inferrer);
+
+    DartType readType;
+    if (node.read != null) {
+      var readMember = inferrer.findPropertyGetMember(receiverType, node.read,
+          instrumented: false);
+      readType = inferrer.getCalleeType(readMember, receiverType);
+      inferrer.handlePropertyGetContravariance(
+          node.receiver,
+          readMember,
+          node.read is PropertyGet ? node.read : null,
+          node.read,
+          readType,
+          node.read.fileOffset);
+      node._storeLetType(inferrer, node.read, readType);
+    }
+    Member writeMember;
+    if (node.write != null) {
+      writeMember = node._handleWriteContravariance(inferrer, receiverType);
+    }
+    // To replicate analyzer behavior, we base type inference on the write
+    // member.  TODO(paulberry): would it be better to use the read member when
+    // doing compound assignment?
+    var writeContext = inferrer.getSetterType(writeMember, receiverType);
+    node._inferRhs(inferrer, readType, writeContext);
+    if (inferrer.strongMode)
+      node.nullAwareGuard?.staticType = node.inferredType;
+    node._replaceWithDesugared();
+    return null;
+  }
+
+  @override
+  void visitPropertyGet(PropertyGet node, DartType typeContext) {
+    inferrer.inferPropertyGet(node, node.receiver, node.fileOffset, typeContext,
+        desugaredGet: node);
+  }
+
+  void visitRedirectingInitializerJudgment(
+      RedirectingInitializerJudgment node) {
+    List<TypeParameter> classTypeParameters =
+        node.target.enclosingClass.typeParameters;
+    List<DartType> typeArguments =
+        new List<DartType>(classTypeParameters.length);
+    for (int i = 0; i < typeArguments.length; i++) {
+      typeArguments[i] = new TypeParameterType(classTypeParameters[i]);
+    }
+    ArgumentsJudgment.setNonInferrableArgumentTypes(
+        node.arguments, typeArguments);
+    inferrer.inferInvocation(
+        null,
+        node.fileOffset,
+        node.target.function.functionType,
+        node.target.enclosingClass.thisType,
+        node.argumentJudgments,
+        skipTypeArgumentInference: true);
+    ArgumentsJudgment.removeNonInferrableArgumentTypes(node.arguments);
+  }
+
+  @override
+  void visitRethrow(Rethrow node, DartType typeContext) {}
+
+  void visitReturnJudgment(ReturnJudgment node) {
+    var judgment = node.judgment;
+    var closureContext = inferrer.closureContext;
+    DartType typeContext = !closureContext.isGenerator
+        ? closureContext.returnOrYieldContext
+        : const UnknownType();
+    DartType inferredType;
+    if (node.expression != null) {
+      inferrer.inferExpression(judgment, typeContext, true,
+          isVoidAllowed: true);
+      inferredType = getInferredType(judgment, inferrer);
+    } else {
+      inferredType = inferrer.coreTypes.nullClass.rawType;
+    }
+    closureContext.handleReturn(inferrer, node, inferredType,
+        !identical(node.returnKeywordLexeme, "return"));
+  }
+
+  void visitStaticAssignmentJudgment(
+      StaticAssignmentJudgment node, DartType typeContext) {
+    DartType readType = const DynamicType(); // Only used in error recovery
+    var read = node.read;
+    if (read is StaticGet) {
+      readType = read.target.getterType;
+      node._storeLetType(inferrer, read, readType);
+    }
+    Member writeMember;
+    DartType writeContext = const UnknownType();
+    var write = node.write;
+    if (write is StaticSet) {
+      writeContext = write.target.setterType;
+      writeMember = write.target;
+      if (writeMember is ShadowField && writeMember.inferenceNode != null) {
+        writeMember.inferenceNode.resolve();
+        writeMember.inferenceNode = null;
+      }
+    }
+    node._inferRhs(inferrer, readType, writeContext);
+    node._replaceWithDesugared();
+    return null;
+  }
+
+  @override
+  void visitStaticGet(StaticGet node, DartType typeContext) {
+    var target = node.target;
+    if (target is ShadowField && target.inferenceNode != null) {
+      target.inferenceNode.resolve();
+      target.inferenceNode = null;
+    }
+    var type = target.getterType;
+    if (target is Procedure && target.kind == ProcedureKind.Method) {
+      type = inferrer.instantiateTearOff(type, typeContext, node);
+    }
+    inferrer.storeInferredType(node, type);
+  }
+
+  @override
+  void visitStaticInvocation(StaticInvocation node, DartType typeContext) {
+    FunctionType calleeType = node.target != null
+        ? node.target.function.functionType
+        : new FunctionType([], const DynamicType());
+    bool hadExplicitTypeArguments =
+        getExplicitTypeArguments(node.arguments) != null;
+    var inferenceResult = inferrer.inferInvocation(typeContext, node.fileOffset,
+        calleeType, calleeType.returnType, node.arguments);
+    inferrer.storeInferredType(node, inferenceResult.type);
+    if (!hadExplicitTypeArguments && node.target != null) {
+      inferrer.library?.checkBoundsInStaticInvocation(
+          node, inferrer.typeSchemaEnvironment,
+          inferred: true);
+    }
+  }
+
+  @override
+  void visitStringConcatenation(
+      StringConcatenation node, DartType typeContext) {
+    if (!inferrer.isTopLevel) {
+      for (var expression in node.expressions) {
+        inferrer.inferExpression(
+            expression, const UnknownType(), !inferrer.isTopLevel);
+      }
+    }
+  }
+
+  @override
+  void visitStringLiteral(StringLiteral node, DartType typeContext) {}
+
+  void visitSuperInitializerJudgment(SuperInitializerJudgment node) {
+    var substitution = Substitution.fromSupertype(inferrer.classHierarchy
+        .getClassAsInstanceOf(
+            inferrer.thisType.classNode, node.target.enclosingClass));
+    inferrer.inferInvocation(
+        null,
+        node.fileOffset,
+        substitution.substituteType(
+            node.target.function.functionType.withoutTypeParameters),
+        inferrer.thisType,
+        node.argumentJudgments,
+        skipTypeArgumentInference: true);
+  }
+
+  void visitSuperMethodInvocationJudgment(
+      SuperMethodInvocationJudgment node, DartType typeContext) {
+    if (node.interfaceTarget != null) {
+      inferrer.instrumentation?.record(inferrer.uri, node.fileOffset, 'target',
+          new InstrumentationValueForMember(node.interfaceTarget));
+    }
+    var inferenceResult = inferrer.inferMethodInvocation(
+        node, null, node.fileOffset, false, typeContext,
+        interfaceMember: node.interfaceTarget,
+        methodName: node.name,
+        arguments: node.arguments);
+    node.inferredType = inferenceResult.type;
+  }
+
+  void visitSuperPropertyGetJudgment(
+      SuperPropertyGetJudgment node, DartType typeContext) {
+    if (node.interfaceTarget != null) {
+      inferrer.instrumentation?.record(inferrer.uri, node.fileOffset, 'target',
+          new InstrumentationValueForMember(node.interfaceTarget));
+    }
+    inferrer.inferPropertyGet(node, null, node.fileOffset, typeContext,
+        interfaceMember: node.interfaceTarget, propertyName: node.name);
+  }
+
+  void visitSwitchStatementJudgment(SwitchStatementJudgment node) {
+    var expressionJudgment = node.expressionJudgment;
+    inferrer.inferExpression(expressionJudgment, const UnknownType(), true);
+    var expressionType = getInferredType(expressionJudgment, inferrer);
+
+    for (var switchCase in node.caseJudgments) {
+      for (var caseExpression in switchCase.expressionJudgments) {
+        DartType caseExpressionType =
+            inferrer.inferExpression(caseExpression, expressionType, true);
+
+        // Check whether the expression type is assignable to the case expression type.
+        if (!inferrer.isAssignable(expressionType, caseExpressionType)) {
+          inferrer.helper.addProblem(
+              templateSwitchExpressionNotAssignable.withArguments(
+                  expressionType, caseExpressionType),
+              caseExpression.fileOffset,
+              noLength,
+              context: [
+                messageSwitchExpressionNotAssignableCause.withLocation(
+                    inferrer.uri, expressionJudgment.fileOffset, noLength)
+              ]);
+        }
+      }
+      inferrer.inferStatement(switchCase.bodyJudgment);
+    }
+  }
+
+  void visitSymbolLiteralJudgment(
+      SymbolLiteralJudgment node, DartType typeContext) {
+    node.inferredType = inferrer.coreTypes.symbolClass.rawType;
+    return null;
+  }
+
+  void visitInvalidConstructorInvocationJudgment(
+      InvalidConstructorInvocationJudgment node, DartType typeContext) {
+    FunctionType calleeType;
+    DartType returnType;
+    if (node.constructor != null) {
+      calleeType = node.constructor.function.functionType;
+      returnType = computeConstructorReturnType(node.constructor);
+    } else {
+      calleeType = new FunctionType([], const DynamicType());
+      returnType = const DynamicType();
+    }
+    ExpressionInferenceResult inferenceResult = inferrer.inferInvocation(
+        typeContext,
+        node.fileOffset,
+        calleeType,
+        returnType,
+        node.argumentJudgments);
+    node.inferredType = inferenceResult.type;
+    return visitSyntheticExpressionJudgment(node, typeContext);
+  }
+
+  void visitInvalidWriteJudgment(
+      InvalidWriteJudgment node, DartType typeContext) {
+    // When a compound assignment, the expression is already wrapping in
+    // VariableDeclaration in _makeRead(). Otherwise, temporary associate
+    // the expression with this node.
+    node.expression.parent ??= node;
+
+    inferrer.inferExpression(
+        node.expression, const UnknownType(), !inferrer.isTopLevel);
+    return visitSyntheticExpressionJudgment(node, typeContext);
+  }
+
+  void visitSyntheticExpressionJudgment(
+      SyntheticExpressionJudgment node, DartType typeContext) {
+    node._replaceWithDesugared();
+    node.inferredType = const DynamicType();
+    return null;
+  }
+
+  void visitThisExpression(ThisExpression node, DartType typeContext) {}
+
+  @override
+  void visitThrow(Throw node, DartType typeContext) {
+    inferrer.inferExpression(
+        node.expression, const UnknownType(), !inferrer.isTopLevel);
+  }
+
+  void visitCatchJudgment(CatchJudgment node) {
+    inferrer.inferStatement(node.bodyJudgment);
+  }
+
+  void visitTryCatchJudgment(TryCatchJudgment node) {
+    inferrer.inferStatement(node.bodyJudgment);
+    for (var catch_ in node.catchJudgments) {
+      visitCatchJudgment(catch_);
+    }
+  }
+
+  void visitTryFinallyJudgment(TryFinallyJudgment node) {
+    inferrer.inferStatement(node.body);
+    if (node.catchJudgments != null) {
+      for (var catch_ in node.catchJudgments) {
+        visitCatchJudgment(catch_);
+      }
+      node.body = new TryCatch(node.body, node.catches)..parent = node;
+    }
+    inferrer.inferStatement(node.finalizerJudgment);
+  }
+
+  void visitTypeLiteralJudgment(
+      TypeLiteralJudgment node, DartType typeContext) {
+    node.inferredType = inferrer.coreTypes.typeClass.rawType;
+    return null;
+  }
+
+  void visitVariableAssignmentJudgment(
+      VariableAssignmentJudgment node, DartType typeContext) {
+    DartType readType;
+    var read = node.read;
+    if (read is VariableGet) {
+      readType = read.promotedType ?? read.variable.type;
+    }
+    DartType writeContext = const UnknownType();
+    var write = node.write;
+    if (write is VariableSet) {
+      writeContext = write.variable.type;
+      if (read != null) {
+        node._storeLetType(inferrer, read, writeContext);
+      }
+    }
+    node._inferRhs(inferrer, readType, writeContext);
+    node._replaceWithDesugared();
+    return null;
+  }
+
+  void visitVariableDeclarationJudgment(VariableDeclarationJudgment node) {
+    if (node.annotationJudgments.isNotEmpty) {
+      if (node.infersAnnotations) {
+        inferrer.inferMetadataKeepingHelper(node.annotationJudgments);
+      }
+
+      // After the inference was done on the annotations, we may clone them for
+      // this instance of VariableDeclaration in order to avoid having the same
+      // annotation node for two VariableDeclaration nodes in a situation like
+      // the following:
+      //
+      //     class Foo { const Foo(List<String> list); }
+      //
+      //     @Foo(const [])
+      //     var x, y;
+      CloneVisitor cloner = new CloneVisitor();
+      for (int i = 0; i < node.annotations.length; ++i) {
+        kernel.Expression annotation = node.annotations[i];
+        if (annotation.parent != node) {
+          node.annotations[i] = cloner.clone(annotation);
+          node.annotations[i].parent = node;
+        }
+      }
+    }
+
+    var initializerJudgment = node.initializerJudgment;
+    var declaredType = node._implicitlyTyped ? const UnknownType() : node.type;
+    DartType inferredType;
+    DartType initializerType;
+    if (initializerJudgment != null) {
+      inferrer.inferExpression(initializerJudgment, declaredType,
+          !inferrer.isTopLevel || node._implicitlyTyped,
+          isVoidAllowed: true);
+      initializerType = getInferredType(initializerJudgment, inferrer);
+      inferredType = inferrer.inferDeclarationType(initializerType);
+    } else {
+      inferredType = const DynamicType();
+    }
+    if (inferrer.strongMode && node._implicitlyTyped) {
+      inferrer.instrumentation?.record(inferrer.uri, node.fileOffset, 'type',
+          new InstrumentationValueForType(inferredType));
+      node.type = inferredType;
+    }
+    if (node.initializer != null) {
+      var replacedInitializer = inferrer.ensureAssignable(
+          node.type, initializerType, node.initializer, node.fileOffset,
+          isVoidAllowed: node.type is VoidType);
+      if (replacedInitializer != null) {
+        node.initializer = replacedInitializer;
+      }
+    }
+    KernelLibraryBuilder inferrerLibrary = inferrer.library;
+    if (node._implicitlyTyped && inferrerLibrary is KernelLibraryBuilder) {
+      inferrerLibrary.checkBoundsInVariableDeclaration(
+          node, inferrer.typeSchemaEnvironment,
+          inferred: true);
+    }
+  }
+
+  void visitUnresolvedTargetInvocationJudgment(
+      UnresolvedTargetInvocationJudgment node, DartType typeContext) {
+    var result = visitSyntheticExpressionJudgment(node, typeContext);
+    inferrer.inferInvocation(
+        typeContext,
+        node.fileOffset,
+        TypeInferrerImpl.unknownFunction,
+        const DynamicType(),
+        node.argumentsJudgment);
+    return result;
+  }
+
+  void visitUnresolvedVariableAssignmentJudgment(
+      UnresolvedVariableAssignmentJudgment node, DartType typeContext) {
+    inferrer.inferExpression(node.rhs, const UnknownType(), true);
+    node.inferredType = node.isCompound
+        ? const DynamicType()
+        : getInferredType(node.rhs, inferrer);
+    return visitSyntheticExpressionJudgment(node, typeContext);
+  }
+
+  void visitVariableGetJudgment(
+      VariableGetJudgment node, DartType typeContext) {
+    VariableDeclarationJudgment variable = node.variable;
+    bool mutatedInClosure = variable._mutatedInClosure;
+    DartType declaredOrInferredType = variable.type;
+
+    DartType promotedType = inferrer.typePromoter
+        .computePromotedType(node._fact, node._scope, mutatedInClosure);
+    if (promotedType != null) {
+      inferrer.instrumentation?.record(inferrer.uri, node.fileOffset,
+          'promotedType', new InstrumentationValueForType(promotedType));
+    }
+    node.promotedType = promotedType;
+    var type = promotedType ?? declaredOrInferredType;
+    if (variable._isLocalFunction) {
+      type = inferrer.instantiateTearOff(type, typeContext, node);
+    }
+    node.inferredType = type;
+    return null;
+  }
+
+  void visitWhileJudgment(WhileJudgment node) {
+    var conditionJudgment = node.conditionJudgment;
+    var expectedType = inferrer.coreTypes.boolClass.rawType;
+    inferrer.inferExpression(
+        conditionJudgment, expectedType, !inferrer.isTopLevel);
+    inferrer.ensureAssignable(
+        expectedType,
+        getInferredType(conditionJudgment, inferrer),
+        node.condition,
+        node.condition.fileOffset);
+    inferrer.inferStatement(node.bodyJudgment);
+  }
+
+  void visitYieldJudgment(YieldJudgment node) {
+    var judgment = node.judgment;
+    var closureContext = inferrer.closureContext;
+    if (closureContext.isGenerator) {
+      var typeContext = closureContext.returnOrYieldContext;
+      if (node.isYieldStar && typeContext != null) {
+        typeContext = inferrer.wrapType(
+            typeContext,
+            closureContext.isAsync
+                ? inferrer.coreTypes.streamClass
+                : inferrer.coreTypes.iterableClass);
+      }
+      inferrer.inferExpression(judgment, typeContext, true);
+    } else {
+      inferrer.inferExpression(judgment, const UnknownType(), true);
+    }
+    closureContext.handleYield(inferrer, node.isYieldStar,
+        getInferredType(judgment, inferrer), node.expression, node.fileOffset);
+  }
+
+  void visitLoadLibraryJudgment(
+      LoadLibraryJudgment node, DartType typeContext) {
+    node.inferredType =
+        inferrer.typeSchemaEnvironment.futureType(const DynamicType());
+    if (node.arguments != null) {
+      var calleeType = new FunctionType([], node.inferredType);
+      inferrer.inferInvocation(typeContext, node.fileOffset, calleeType,
+          calleeType.returnType, node.argumentJudgments);
+    }
+    return null;
+  }
+
+  void visitLoadLibraryTearOffJudgment(
+      LoadLibraryTearOffJudgment node, DartType typeContext) {
+    node.inferredType = new FunctionType(
+        [], inferrer.typeSchemaEnvironment.futureType(const DynamicType()));
+    return null;
+  }
+
+  @override
+  void visitCheckLibraryIsLoaded(
+      CheckLibraryIsLoaded node, DartType typeContext) {}
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/inferred_type_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inferred_type_visitor.dart
new file mode 100644
index 0000000..2c23370
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/kernel/inferred_type_visitor.dart
@@ -0,0 +1,162 @@
+// 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.
+
+part of "kernel_shadow_ast.dart";
+
+DartType getInferredType(Expression expression, TypeInferrerImpl inferrer) {
+  if (expression is ExpressionJudgment) {
+    return expression.inferredType;
+  } else {
+    return expression.accept1(const InferredTypeVisitor(), inferrer);
+  }
+}
+
+DartType invalidToBottom(DartType type) {
+  // TODO(ahe): This should really return [BottomType], but that requires more
+  // work to the Kernel type system and implementation.
+  return (type == null || type is InvalidType) ? const DynamicType() : type;
+}
+
+DartType invalidToTop(DartType type) {
+  return (type == null || type is InvalidType) ? const DynamicType() : type;
+}
+
+class InferredTypeVisitor
+    extends ExpressionVisitor1<DartType, TypeInferrerImpl> {
+  const InferredTypeVisitor();
+
+  @override
+  DartType defaultExpression(Expression node, TypeInferrerImpl inferrer) {
+    unhandled("${node.runtimeType}", "getInferredType", node.fileOffset,
+        inferrer.uri);
+    return const InvalidType();
+  }
+
+  @override
+  DartType visitIntLiteral(IntLiteral node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.intClass.rawType;
+  }
+
+  @override
+  DartType visitDoubleLiteral(DoubleLiteral node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.doubleClass.rawType;
+  }
+
+  @override
+  DartType visitInvalidExpression(
+      InvalidExpression node, TypeInferrerImpl inferrer) {
+    return const BottomType();
+  }
+
+  @override
+  DartType visitAsExpression(AsExpression node, TypeInferrerImpl inferrer) {
+    return invalidToBottom(node.type);
+  }
+
+  @override
+  DartType visitAwaitExpression(
+      AwaitExpression node, TypeInferrerImpl inferrer) {
+    return inferrer.readInferredType(node);
+  }
+
+  @override
+  DartType visitThisExpression(ThisExpression node, TypeInferrerImpl inferrer) {
+    return invalidToBottom(inferrer.thisType);
+  }
+
+  @override
+  DartType visitBoolLiteral(BoolLiteral node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.boolClass.rawType;
+  }
+
+  @override
+  DartType visitConditionalExpression(
+      ConditionalExpression node, TypeInferrerImpl inferrer) {
+    return inferrer.strongMode ? node.staticType : const DynamicType();
+  }
+
+  @override
+  DartType visitConstructorInvocation(
+      ConstructorInvocation node, TypeInferrerImpl inferrer) {
+    return inferrer.readInferredType(node);
+  }
+
+  @override
+  DartType visitIsExpression(IsExpression node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.boolClass.rawType;
+  }
+
+  @override
+  DartType visitFunctionExpression(
+      FunctionExpression node, TypeInferrerImpl inferrer) {
+    return inferrer.readInferredType(node);
+  }
+
+  @override
+  DartType visitLogicalExpression(
+      LogicalExpression node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.boolClass.rawType;
+  }
+
+  @override
+  DartType visitNot(Not node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.boolClass.rawType;
+  }
+
+  @override
+  DartType visitNullLiteral(NullLiteral node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.nullClass.rawType;
+  }
+
+  @override
+  DartType visitPropertyGet(PropertyGet node, TypeInferrerImpl inferrer) {
+    return inferrer.readInferredType(node);
+  }
+
+  @override
+  DartType visitRethrow(Rethrow node, TypeInferrerImpl inferrer) {
+    return const BottomType();
+  }
+
+  @override
+  DartType visitStringConcatenation(
+      StringConcatenation node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.stringClass.rawType;
+  }
+
+  @override
+  DartType visitStringLiteral(StringLiteral node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.stringClass.rawType;
+  }
+
+  @override
+  DartType visitLet(Let node, TypeInferrerImpl inferrer) {
+    // TODO(ahe): We should be able to return the inferred type of
+    // node.body. However, that type may be lost, for example, in
+    // VariableAssignmentJudgment._replaceWithDesugared.
+    return inferrer.readInferredType(node);
+  }
+
+  @override
+  DartType visitStaticGet(StaticGet node, TypeInferrerImpl inferrer) {
+    return inferrer.readInferredType(node);
+  }
+
+  @override
+  DartType visitStaticInvocation(
+      StaticInvocation node, TypeInferrerImpl inferrer) {
+    return inferrer.readInferredType(node);
+  }
+
+  @override
+  DartType visitThrow(Throw node, TypeInferrerImpl inferrer) {
+    return const BottomType();
+  }
+
+  @override
+  DartType visitCheckLibraryIsLoaded(
+      CheckLibraryIsLoaded node, TypeInferrerImpl inferrer) {
+    return inferrer.coreTypes.objectClass.rawType;
+  }
+}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart
index 0152695..fd26c01 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_api.dart
@@ -6,7 +6,7 @@
 library fasta.kernel_api;
 
 export 'package:kernel/type_algebra.dart'
-    show instantiateToBounds, Substitution;
+    show Substitution, instantiateToBounds, substitute;
 
 export 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
 
@@ -18,6 +18,8 @@
 
 export 'package:kernel/text/ast_to_text.dart' show NameSystem;
 
+export 'package:kernel/type_environment.dart' show TypeEnvironment;
+
 import 'package:kernel/text/ast_to_text.dart' show NameSystem, Printer;
 
 import 'package:kernel/ast.dart' show Class, Member, Node;
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 a7e9319..c66a5e6 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
@@ -9,6 +9,7 @@
 export 'package:kernel/ast.dart'
     show
         Arguments,
+        AsExpression,
         AssertStatement,
         AsyncMarker,
         Block,
@@ -27,12 +28,14 @@
         ExpressionStatement,
         Field,
         FunctionDeclaration,
+        FunctionExpression,
         FunctionNode,
         FunctionType,
         Initializer,
         InterfaceType,
         InvalidExpression,
         InvalidType,
+        IsExpression,
         LabeledStatement,
         Let,
         Library,
@@ -41,6 +44,7 @@
         ListLiteral,
         Location,
         MapEntry,
+        MapLiteral,
         Member,
         MethodInvocation,
         Name,
@@ -49,6 +53,7 @@
         Node,
         Procedure,
         ProcedureKind,
+        PropertyGet,
         PropertySet,
         Rethrow,
         ReturnStatement,
@@ -61,11 +66,12 @@
         SuperMethodInvocation,
         SuperPropertySet,
         SwitchCase,
-        Throw,
+        ThisExpression,
         TreeNode,
         TypeParameter,
         TypeParameterType,
         Typedef,
+        TypedefType,
         VariableDeclaration,
         VariableGet,
         VariableSet,
@@ -80,54 +86,43 @@
         BreakJudgment,
         CascadeJudgment,
         ComplexAssignmentJudgment,
-        ConstructorInvocationJudgment,
         ContinueSwitchJudgment,
         DeferredCheckJudgment,
-        ExpressionJudgment,
         ExpressionStatementJudgment,
         FactoryConstructorInvocationJudgment,
         ShadowFieldInitializer,
         ForInJudgment,
         FunctionDeclarationJudgment,
-        FunctionExpressionJudgment,
         FunctionNodeJudgment,
         IfNullJudgment,
         IfJudgment,
         IllegalAssignmentJudgment,
         IndexAssignmentJudgment,
         InvalidConstructorInvocationJudgment,
-        InvalidStatementJudgment,
         InvalidSuperInitializerJudgment,
         InvalidWriteJudgment,
         ShadowInvalidFieldInitializer,
         ShadowInvalidInitializer,
         LabeledStatementJudgment,
         LoadLibraryTearOffJudgment,
-        LogicalJudgment,
         MethodInvocationJudgment,
         NamedFunctionExpressionJudgment,
         NullAwareMethodInvocationJudgment,
         NullAwarePropertyGetJudgment,
         PropertyAssignmentJudgment,
-        PropertyGetJudgment,
         RedirectingInitializerJudgment,
-        RethrowJudgment,
         ReturnJudgment,
         ShadowLargeIntLiteral,
         StaticAssignmentJudgment,
-        StaticGetJudgment,
-        StaticInvocationJudgment,
         SuperInitializerJudgment,
         SuperMethodInvocationJudgment,
         SuperPropertyGetJudgment,
         SwitchCaseJudgment,
         SwitchStatementJudgment,
         SyntheticExpressionJudgment,
-        ThrowJudgment,
         UnresolvedTargetInvocationJudgment,
         UnresolvedVariableAssignmentJudgment,
         VariableAssignmentJudgment,
         VariableDeclarationJudgment,
         VariableGetJudgment,
-        YieldJudgment,
-        NamedExpressionJudgment;
+        YieldJudgment;
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
index 35adb8a..56bc3b2 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
@@ -20,6 +20,7 @@
         Member,
         Name,
         Procedure,
+        RedirectingFactoryConstructor,
         ReturnStatement,
         VoidType,
         MethodInvocation,
@@ -40,7 +41,10 @@
 
 import 'package:kernel/core_types.dart' show CoreTypes;
 
-import 'package:kernel/type_algebra.dart' show Substitution, getSubstitutionMap;
+import 'package:kernel/type_algebra.dart' show Substitution, substitute;
+
+import 'package:kernel/type_algebra.dart' as type_algebra
+    show getSubstitutionMap;
 
 import 'package:kernel/type_environment.dart' show TypeEnvironment;
 
@@ -50,6 +54,7 @@
     show
         LocatedMessage,
         Message,
+        messageGenericFunctionTypeUsedAsActualTypeArgument,
         messageImplementsFutureOr,
         messagePatchClassOrigin,
         messagePatchClassTypeVariablesMismatch,
@@ -58,12 +63,19 @@
         noLength,
         templateFactoryRedirecteeHasTooFewPositionalParameters,
         templateFactoryRedirecteeInvalidReturnType,
+        templateGenericFunctionTypeInferredAsActualTypeArgument,
+        templateIllegalMixinDueToConstructors,
+        templateIllegalMixinDueToConstructorsCause,
         templateImplementsRepeated,
         templateImplementsSuperClass,
         templateImplicitMixinOverrideContext,
+        templateIncorrectTypeArgument,
+        templateIncorrectTypeArgumentInSupertype,
+        templateIncorrectTypeArgumentInSupertypeInferred,
         templateInterfaceCheckContext,
         templateMissingImplementationCause,
         templateMissingImplementationNotAbstract,
+        templateMixinApplicationIncompatibleSupertype,
         templateNamedMixinOverrideContext,
         templateOverriddenMethodCause,
         templateOverrideFewerNamedArguments,
@@ -92,11 +104,11 @@
         ClassBuilder,
         ConstructorReferenceBuilder,
         Declaration,
-        KernelLibraryBuilder,
         KernelFunctionBuilder,
+        KernelLibraryBuilder,
+        KernelNamedTypeBuilder,
         KernelProcedureBuilder,
         KernelRedirectingFactoryBuilder,
-        KernelNamedTypeBuilder,
         KernelTypeBuilder,
         KernelTypeVariableBuilder,
         LibraryBuilder,
@@ -160,6 +172,9 @@
       for (int i = 0; i < result.length; ++i) {
         result[i] = typeVariables[i].defaultType.build(library);
       }
+      if (library is KernelLibraryBuilder) {
+        library.inferredTypes.addAll(result);
+      }
       return result;
     }
 
@@ -269,6 +284,122 @@
     }
   }
 
+  void checkBoundsInSupertype(
+      Supertype supertype, TypeEnvironment typeEnvironment) {
+    KernelLibraryBuilder library = this.library;
+
+    List<Object> boundViolations = typeEnvironment.findBoundViolations(
+        new InterfaceType(supertype.classNode, supertype.typeArguments),
+        allowSuperBounded: false,
+        typedefInstantiations: library.typedefInstantiations);
+    if (boundViolations != null) {
+      for (int i = 0; i < boundViolations.length; i += 3) {
+        DartType argument = boundViolations[i];
+        TypeParameter variable = boundViolations[i + 1];
+        DartType enclosingType = boundViolations[i + 2];
+
+        Message message;
+        bool inferred = library.inferredTypes.contains(argument);
+        if (argument is FunctionType && argument.typeParameters.length > 0) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message =
+                templateIncorrectTypeArgumentInSupertypeInferred.withArguments(
+                    argument,
+                    typeEnvironment.getGenericTypeName(enclosingType),
+                    supertype.classNode.name,
+                    name);
+          } else {
+            message = templateIncorrectTypeArgumentInSupertype.withArguments(
+                argument,
+                typeEnvironment.getGenericTypeName(enclosingType),
+                supertype.classNode.name,
+                name);
+          }
+        }
+
+        library.reportBoundViolation(message, charOffset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInOutline(TypeEnvironment typeEnvironment) {
+    KernelLibraryBuilder library = this.library;
+
+    // Check in bounds of own type variables.
+    for (TypeParameter parameter in cls.typeParameters) {
+      List<Object> violations = typeEnvironment.findBoundViolations(
+          parameter.bound,
+          allowSuperBounded: false,
+          typedefInstantiations: library.typedefInstantiations);
+      if (violations != null) {
+        for (int i = 0; i < violations.length; i += 3) {
+          DartType argument = violations[i];
+          TypeParameter variable = violations[i + 1];
+          DartType enclosingType = violations[i + 2];
+          if (library.inferredTypes.contains(argument)) {
+            // Inference in type expressions in the supertypes boils down to
+            // instantiate-to-bound which shouldn't produce anything that breaks
+            // the bounds after the non-simplicity checks are done.  So, any
+            // violation here is the result of non-simple bounds, and the error
+            // is reported elsewhere.
+            continue;
+          }
+
+          Message message;
+          if (argument is FunctionType && argument.typeParameters.length > 0) {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+            variable = null;
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          }
+
+          library.reportBoundViolation(message, parameter.fileOffset, variable);
+        }
+      }
+    }
+
+    // Check in supers.
+    if (cls.supertype != null) {
+      checkBoundsInSupertype(cls.supertype, typeEnvironment);
+    }
+    if (cls.mixedInType != null) {
+      checkBoundsInSupertype(cls.mixedInType, typeEnvironment);
+    }
+    if (cls.implementedTypes != null) {
+      for (Supertype supertype in cls.implementedTypes) {
+        checkBoundsInSupertype(supertype, typeEnvironment);
+      }
+    }
+
+    // Check in members.
+    for (Field field in cls.fields) {
+      library.checkBoundsInField(field, typeEnvironment);
+    }
+    for (Procedure procedure in cls.procedures) {
+      library.checkBoundsInFunctionNode(procedure.function, typeEnvironment);
+    }
+    for (Constructor constructor in cls.constructors) {
+      library.checkBoundsInFunctionNode(constructor.function, typeEnvironment);
+    }
+    for (RedirectingFactoryConstructor redirecting
+        in cls.redirectingFactoryConstructors) {
+      library.checkBoundsInFunctionNodeParts(
+          typeEnvironment, redirecting.fileOffset,
+          typeParameters: redirecting.typeParameters,
+          positionalParameters: redirecting.positionalParameters,
+          namedParameters: redirecting.namedParameters);
+    }
+  }
+
   @override
   int resolveConstructors(LibraryBuilder library) {
     int count = super.resolveConstructors(library);
@@ -595,7 +726,7 @@
   void addNoSuchMethodForwarderForProcedure(Member noSuchMethod,
       KernelTarget target, Procedure procedure, ClassHierarchy hierarchy) {
     CloneWithoutBody cloner = new CloneWithoutBody(
-        typeSubstitution: getSubstitutionMap(
+        typeSubstitution: type_algebra.getSubstitutionMap(
             hierarchy.getClassAsInstanceOf(cls, procedure.enclosingClass)),
         cloneAnnotations: false);
     Procedure cloned = cloner.clone(procedure)..isExternal = false;
@@ -655,10 +786,7 @@
   /// class was modified.
   bool addNoSuchMethodForwarders(
       KernelTarget target, ClassHierarchy hierarchy) {
-    if (cls.isAbstract ||
-        !hasUserDefinedNoSuchMethod(cls, hierarchy, target.objectClass)) {
-      return false;
-    }
+    if (cls.isAbstract) return false;
 
     Set<Name> existingForwardersNames = new Set<Name>();
     Set<Name> existingSetterForwardersNames = new Set<Name>();
@@ -667,14 +795,19 @@
         leastConcreteSuperclass != null && leastConcreteSuperclass.isAbstract) {
       leastConcreteSuperclass = leastConcreteSuperclass.superclass;
     }
-    if (leastConcreteSuperclass != null &&
-        hasUserDefinedNoSuchMethod(
-            leastConcreteSuperclass, hierarchy, target.objectClass)) {
+    if (leastConcreteSuperclass != null) {
+      bool superHasUserDefinedNoSuchMethod = hasUserDefinedNoSuchMethod(
+          leastConcreteSuperclass, hierarchy, target.objectClass);
       List<Member> concrete =
           hierarchy.getDispatchTargets(leastConcreteSuperclass);
       for (Member member
           in hierarchy.getInterfaceMembers(leastConcreteSuperclass)) {
-        if (ClassHierarchy.findMemberByName(concrete, member.name) == null) {
+        if ((superHasUserDefinedNoSuchMethod ||
+                leastConcreteSuperclass.enclosingLibrary.compareTo(
+                            member.enclosingClass.enclosingLibrary) !=
+                        0 &&
+                    member.name.isPrivate) &&
+            ClassHierarchy.findMemberByName(concrete, member.name) == null) {
           existingForwardersNames.add(member.name);
         }
       }
@@ -696,9 +829,23 @@
     List<Member> concrete = hierarchy.getDispatchTargets(cls);
     List<Member> declared = hierarchy.getDeclaredMembers(cls);
 
+    bool clsHasUserDefinedNoSuchMethod =
+        hasUserDefinedNoSuchMethod(cls, hierarchy, target.objectClass);
     bool changed = false;
     for (Member member in hierarchy.getInterfaceMembers(cls)) {
+      // We generate a noSuchMethod forwarder for [member] in [cls] if the
+      // following three conditions are satisfied simultaneously:
+      // 1) There is a user-defined noSuchMethod in [cls] or [member] is private
+      //    and the enclosing library of [member] is different from that of
+      //    [cls].
+      // 2) There is no implementation of [member] in [cls].
+      // 3) The superclass of [cls] has no forwarder for [member].
       if (member is Procedure &&
+          (clsHasUserDefinedNoSuchMethod ||
+              cls.enclosingLibrary
+                          .compareTo(member.enclosingClass.enclosingLibrary) !=
+                      0 &&
+                  member.name.isPrivate) &&
           ClassHierarchy.findMemberByName(concrete, member.name) == null &&
           !existingForwardersNames.contains(member.name)) {
         if (ClassHierarchy.findMemberByName(declared, member.name) != null) {
@@ -710,7 +857,9 @@
         }
         existingForwardersNames.add(member.name);
         changed = true;
+        continue;
       }
+
       if (member is Field &&
           ClassHierarchy.findMemberByName(concrete, member.name) == null &&
           !existingForwardersNames.contains(member.name)) {
@@ -793,7 +942,7 @@
                         interfaceMember.fileOffset, noLength)
               ] +
               inheritedContext(isInterfaceCheck, declaredMember));
-    } else if (library.loader.target.backendTarget.strongMode &&
+    } else if (!library.loader.target.backendTarget.legacyMode &&
         declaredFunction?.typeParameters != null) {
       Map<TypeParameter, DartType> substitutionMap =
           <TypeParameter, DartType>{};
@@ -861,7 +1010,7 @@
       VariableDeclaration declaredParameter,
       bool isInterfaceCheck,
       {bool asIfDeclaredParameter = false}) {
-    if (!library.loader.target.backendTarget.strongMode) return false;
+    if (library.loader.target.backendTarget.legacyMode) return false;
 
     if (interfaceSubstitution != null) {
       interfaceType = interfaceSubstitution.substituteType(interfaceType);
@@ -1195,6 +1344,46 @@
         : name;
   }
 
+  void checkMixinDeclaration() {
+    assert(cls.isMixinDeclaration);
+    for (Declaration constructory in constructors.local.values) {
+      if (!constructory.isSynthetic &&
+          (constructory.isFactory || constructory.isConstructor)) {
+        addProblem(
+            templateIllegalMixinDueToConstructors
+                .withArguments(fullNameForErrors),
+            charOffset,
+            noLength,
+            context: [
+              templateIllegalMixinDueToConstructorsCause
+                  .withArguments(fullNameForErrors)
+                  .withLocation(
+                      constructory.fileUri, constructory.charOffset, noLength)
+            ]);
+      }
+    }
+  }
+
+  void checkMixinApplication(ClassHierarchy hierarchy) {
+    // A mixin declaration can only be applied to a class that implements all
+    // the declaration's superclass constraints.
+    InterfaceType supertype = cls.supertype.asInterfaceType;
+    Substitution substitution = Substitution.fromSupertype(cls.mixedInType);
+    for (Supertype constraint in cls.mixedInClass.superclassConstraints()) {
+      InterfaceType interface =
+          substitution.substituteSupertype(constraint).asInterfaceType;
+      if (hierarchy.getTypeAsInstanceOf(supertype, interface.classNode) !=
+          interface) {
+        library.addProblem(
+            templateMixinApplicationIncompatibleSupertype.withArguments(
+                supertype, interface, cls.mixedInType.asInterfaceType),
+            cls.fileOffset,
+            noLength,
+            cls.fileUri);
+      }
+    }
+  }
+
   @override
   void applyPatch(Declaration patch) {
     if (patch is KernelClassBuilder) {
@@ -1530,4 +1719,54 @@
       }
     }
   }
+
+  /// Returns a map which maps the type variables of [superclass] to their
+  /// respective values as defined by the superclass clause of this class (and
+  /// its superclasses).
+  ///
+  /// It's assumed that [superclass] is a superclass of this class.
+  ///
+  /// For example, given:
+  ///
+  ///     class Box<T> {}
+  ///     class BeatBox extends Box<Beat> {}
+  ///     class Beat {}
+  ///
+  /// We have:
+  ///
+  ///     [[BeatBox]].getSubstitutionMap([[Box]]) -> {[[Box::T]]: Beat]]}.
+  ///
+  /// It's an error if [superclass] isn't a superclass.
+  Map<TypeParameter, DartType> getSubstitutionMap(Class superclass) {
+    Supertype supertype = target.supertype;
+    Map<TypeParameter, DartType> substitutionMap = <TypeParameter, DartType>{};
+    List<DartType> arguments;
+    List<TypeParameter> variables;
+    Class classNode;
+
+    while (classNode != superclass) {
+      classNode = supertype.classNode;
+      arguments = supertype.typeArguments;
+      variables = classNode.typeParameters;
+      supertype = classNode.supertype;
+      if (variables.isNotEmpty) {
+        Map<TypeParameter, DartType> directSubstitutionMap =
+            <TypeParameter, DartType>{};
+        for (int i = 0; i < variables.length; i++) {
+          DartType argument =
+              i < arguments.length ? arguments[i] : const DynamicType();
+          if (substitutionMap != null) {
+            // TODO(ahe): Investigate if requiring the caller to use
+            // `substituteDeep` from `package:kernel/type_algebra.dart` instead
+            // of `substitute` is faster. If so, we can simply this code.
+            argument = substitute(argument, substitutionMap);
+          }
+          directSubstitutionMap[variables[i]] = argument;
+        }
+        substitutionMap = directSubstitutionMap;
+      }
+    }
+
+    return substitutionMap;
+  }
 }
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 ebcc398..5aec155 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
@@ -98,7 +98,7 @@
         NullAwarePropertyGetJudgment,
         Procedure,
         PropertyAssignmentJudgment,
-        PropertyGetJudgment,
+        PropertyGet,
         PropertySet,
         StaticAssignmentJudgment,
         StaticSet,
@@ -107,7 +107,6 @@
         SuperPropertyGetJudgment,
         SuperPropertySet,
         SyntheticExpressionJudgment,
-        Throw,
         TreeNode,
         TypeParameter,
         UnresolvedVariableAssignmentJudgment,
@@ -403,9 +402,10 @@
   }
 
   @override
-  Expression _makeSimpleRead() => new PropertyGetJudgment(receiver, name,
-      interfaceTarget: getter, forSyntheticToken: token.isSynthetic)
-    ..fileOffset = offsetForToken(token);
+  Expression _makeSimpleRead() {
+    return new PropertyGet(receiver, name, getter)
+      ..fileOffset = offsetForToken(token);
+  }
 
   @override
   Expression _makeSimpleWrite(Expression value, bool voidContext,
@@ -418,9 +418,8 @@
 
   @override
   Expression _makeRead(ComplexAssignmentJudgment complexAssignment) {
-    var read =
-        new PropertyGetJudgment(receiverAccess(), name, interfaceTarget: getter)
-          ..fileOffset = offsetForToken(token);
+    var read = new PropertyGet(receiverAccess(), name, getter)
+      ..fileOffset = offsetForToken(token);
     complexAssignment?.read = read;
     return read;
   }
@@ -461,8 +460,7 @@
     if (getter == null) {
       helper.warnUnresolvedGet(name, offsetForToken(token));
     }
-    var read = new PropertyGetJudgment(forest.thisExpression(token), name,
-        interfaceTarget: getter, forSyntheticToken: token.isSynthetic)
+    var read = new PropertyGet(forest.thisExpression(token), name, getter)
       ..fileOffset = offsetForToken(token);
     complexAssignment?.read = read;
     return read;
@@ -545,9 +543,8 @@
 
   @override
   Expression _makeRead(ComplexAssignmentJudgment complexAssignment) {
-    var read =
-        new PropertyGetJudgment(receiverAccess(), name, interfaceTarget: getter)
-          ..fileOffset = offsetForToken(token);
+    var read = new PropertyGet(receiverAccess(), name, getter)
+      ..fileOffset = offsetForToken(token);
     complexAssignment?.read = read;
     return read;
   }
@@ -1131,27 +1128,23 @@
 
   @override
   Expression doInvocation(int offset, Arguments arguments) {
-    Expression error;
     if (helper.constantContext != ConstantContext.none &&
         !helper.isIdentical(readTarget)) {
-      error = helper
-          .buildProblem(
-              templateNotConstantExpression.withArguments('Method invocation'),
-              offset,
-              readTarget?.name?.name?.length ?? 0)
-          .desugared;
+      return helper.buildProblem(
+          templateNotConstantExpression.withArguments('Method invocation'),
+          offset,
+          readTarget?.name?.name?.length ?? 0);
     }
     if (readTarget == null || isFieldOrGetter(readTarget)) {
       return helper.buildMethodInvocation(buildSimpleRead(), callName,
           arguments, offset + (readTarget?.name?.name?.length ?? 0),
-          error: error,
           // This isn't a constant expression, but we have checked if a
           // constant expression error should be emitted already.
           isConstantExpression: true,
           isImplicitCall: true);
     } else {
       return helper.buildStaticInvocation(readTarget, arguments,
-          charOffset: offset, error: error);
+          charOffset: offset);
     }
   }
 
@@ -1262,7 +1255,8 @@
         helper.addProblemErrorIfConst(
             declaration.message.messageObject, offset, token.length);
         super.expression = new SyntheticExpressionJudgment(
-            new Throw(forest.literalString(declaration.message.message, token))
+            forest.throwExpression(
+                null, forest.literalString(declaration.message.message, token))
               ..fileOffset = offset);
       } else {
         super.expression = forest.literalType(
@@ -1467,8 +1461,7 @@
 
   @override
   Expression buildSimpleRead() {
-    return new PropertyGetJudgment(receiver, name)
-      ..fileOffset = offsetForToken(token);
+    return new PropertyGet(receiver, name)..fileOffset = offsetForToken(token);
   }
 
   @override
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 d38346f..009288ffe 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
@@ -92,10 +92,20 @@
           helper.lookupInstanceMember(name, isSuper: isSuper, isSetter: true);
       if (isSuper) {
         return new SuperPropertyAccessGenerator(
-            helper, send.token, name, getter, setter);
+            helper,
+            // TODO(ahe): This is not the 'super' token.
+            send.token,
+            name,
+            getter,
+            setter);
       } else {
         return new ThisPropertyAccessGenerator(
-            helper, send.token, name, getter, setter);
+            helper,
+            // TODO(ahe): This is not the 'this' token.
+            send.token,
+            name,
+            getter,
+            setter);
       }
     }
   }
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart
index ee9bac4..18a8aee 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_field_builder.dart
@@ -88,7 +88,8 @@
   void prepareTopLevelInference() {
     if (!isEligibleForInference) return;
     var typeInferrer = library.loader.typeInferenceEngine
-        .createTopLevelTypeInferrer(field.enclosingClass?.thisType, field);
+        .createTopLevelTypeInferrer(
+            field.enclosingClass?.thisType, field, null);
     if (hasInitializer) {
       initializer = new KernelBodyBuilder.forField(this, typeInferrer)
           .parseFieldInitializer(initializerTokenForInference);
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
index 1242eff..de60d54 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
@@ -27,6 +27,7 @@
         FunctionTypeAliasBuilder,
         KernelFormalParameterBuilder,
         KernelFunctionTypeBuilder,
+        KernelLibraryBuilder,
         KernelTypeBuilder,
         KernelTypeVariableBuilder,
         LibraryBuilder,
@@ -120,7 +121,11 @@
     for (int i = 0; i < target.typeParameters.length; i++) {
       substitution[target.typeParameters[i]] = arguments[i];
     }
-    return substitute(result, substitution);
+    result = substitute(result, substitution);
+    if (library is KernelLibraryBuilder) {
+      library.typedefInstantiations[result] = arguments;
+    }
+    return result;
   }
 
   List<DartType> buildTypeArguments(
@@ -135,6 +140,9 @@
       for (int i = 0; i < result.length; ++i) {
         result[i] = typeVariables[i].defaultType.build(library);
       }
+      if (library is KernelLibraryBuilder) {
+        library.inferredTypes.addAll(result);
+      }
       return result;
     }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_builder.dart
index b6ad44c..5b67a52 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_builder.dart
@@ -84,7 +84,7 @@
   }
 
   @override
-  buildInvalidType(LocatedMessage message) {
+  buildInvalidType(LocatedMessage message, {List<LocatedMessage> context}) {
     return unsupported("buildInvalidType", message.charOffset, message.uri);
   }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_incremental_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_incremental_target.dart
deleted file mode 100644
index d83c9ae..0000000
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_incremental_target.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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 fasta.kernel_incremental_target;
-
-import 'package:kernel/ast.dart' show Component, Source;
-
-import '../../api_prototype/file_system.dart' show FileSystem;
-
-import '../dill/dill_target.dart' show DillTarget;
-
-import '../uri_translator.dart' show UriTranslator;
-
-import 'kernel_target.dart' show KernelTarget;
-
-class KernelIncrementalTarget extends KernelTarget {
-  Component component;
-
-  KernelIncrementalTarget(FileSystem fileSystem, bool includeComments,
-      DillTarget dillTarget, UriTranslator uriTranslator,
-      {Map<Uri, Source> uriToSource})
-      : super(fileSystem, includeComments, dillTarget, uriTranslator,
-            uriToSource: uriToSource);
-
-  @override
-  Component erroneousComponent(bool isFullComponent) {
-    component = super.erroneousComponent(isFullComponent);
-    throw const KernelIncrementalTargetErroneousComponent();
-  }
-}
-
-class KernelIncrementalTargetErroneousComponent {
-  const KernelIncrementalTargetErroneousComponent();
-}
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_invalid_type_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_invalid_type_builder.dart
index a515299..60fba36 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_invalid_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_invalid_type_builder.dart
@@ -16,10 +16,12 @@
   @override
   final LocatedMessage message;
 
+  final List<LocatedMessage> context;
+
   final bool suppressMessage;
 
   KernelInvalidTypeBuilder(String name, this.message,
-      [this.suppressMessage = false])
+      {this.context, this.suppressMessage: false})
       : super(name, message.charOffset, message.uri);
 
   @override
@@ -35,7 +37,8 @@
       LibraryBuilder library, List<DartType> arguments) {
     if (!suppressMessage) {
       library.addProblem(message.messageObject, message.charOffset,
-          message.length, message.uri);
+          message.length, message.uri,
+          context: context);
     }
     return const InvalidType();
   }
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 c742c32..982bed4 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
@@ -10,14 +10,20 @@
     show
         Arguments,
         Class,
+        Constructor,
         ConstructorInvocation,
         DartType,
         DynamicType,
         Expression,
         Field,
+        FunctionNode,
+        FunctionType,
+        InterfaceType,
         Library,
         LibraryDependency,
         LibraryPart,
+        ListLiteral,
+        MapLiteral,
         Member,
         Name,
         Procedure,
@@ -26,11 +32,17 @@
         StringLiteral,
         TreeNode,
         Typedef,
+        TypeParameter,
+        TypeParameterType,
         VariableDeclaration,
         VoidType;
 
 import 'package:kernel/clone.dart' show CloneVisitor;
 
+import 'package:kernel/type_algebra.dart' show substitute;
+
+import 'package:kernel/type_environment.dart' show TypeEnvironment;
+
 import '../../scanner/token.dart' show Token;
 
 import '../export.dart' show Export;
@@ -41,6 +53,8 @@
         Message,
         messageConflictsWithTypeVariableCause,
         messageGenericFunctionTypeInBound,
+        messageGenericFunctionTypeUsedAsActualTypeArgument,
+        messageIncorrectTypeArgumentVariable,
         messageTypeVariableDuplicatedName,
         messageTypeVariableSameNameAsEnclosing,
         noLength,
@@ -50,7 +64,11 @@
         templateDuplicatedImport,
         templateDuplicatedImportInType,
         templateExportHidesExport,
+        templateGenericFunctionTypeInferredAsActualTypeArgument,
         templateImportHidesImport,
+        templateIncorrectTypeArgument,
+        templateIncorrectTypeArgumentInReturnType,
+        templateIncorrectTypeArgumentInferred,
         templateLoadLibraryHidesMember,
         templateLocalDefinitionHidesExport,
         templateLocalDefinitionHidesImport,
@@ -75,6 +93,8 @@
 import '../source/source_library_builder.dart'
     show DeclarationBuilder, SourceLibraryBuilder;
 
+import '../type_inference/type_inferrer.dart' show TypeInferrerImpl;
+
 import 'kernel_builder.dart'
     show
         AccessErrorBuilder,
@@ -143,6 +163,17 @@
   // built.
   final List<Procedure> forwardersOrigins = <Procedure>[];
 
+  // List of types inferred in the outline.  Errors in these should be reported
+  // differently than for specified types.
+  // TODO(dmitryas):  Find a way to mark inferred types.
+  final Set<DartType> inferredTypes = new Set<DartType>.identity();
+
+  // List of typedef instantiations built for this library.  They are needed to
+  // perform type argument checks.
+  // TODO(dmitryas):  Find a way to keep type arguments of typedefs around.
+  final Map<FunctionType, List<DartType>> typedefInstantiations =
+      new Map<FunctionType, List<DartType>>.identity();
+
   /// Exports that can't be serialized.
   ///
   /// The key is the name of the exported member.
@@ -386,32 +417,20 @@
         }
       }
 
-      /// The type variables used in [supertype] and the current mixin.
-      Map<String, TypeVariableBuilder> usedTypeVariables;
-
-      /// Helper function that updates [usedTypeVariables]. It needs to be
-      /// called twice per iteration: once on supertype and once on the current
-      /// mixin.
-      void computeUsedTypeVariables(KernelNamedTypeBuilder type) {
+      /// Helper function that returns `true` if a type variable with a name
+      /// from [typeVariableNames] is referenced in [type].
+      bool usesTypeVariables(KernelNamedTypeBuilder type) {
         List<KernelTypeBuilder> typeArguments = type.arguments;
         if (typeArguments != null && typeVariables != null) {
           for (KernelTypeBuilder argument in typeArguments) {
             if (typeVariableNames.contains(argument.name)) {
-              usedTypeVariables ??= <String, TypeVariableBuilder>{};
-              KernelTypeVariableBuilder freshTypeVariable =
-                  (usedTypeVariables[argument.name] ??=
-                      addTypeVariable(argument.name, null, charOffset));
-              // Notice that [argument] may have been created below as part of
-              // [applicationTypeArguments] and have to be rebound now
-              // (otherwise it would refer to a type variable in the subclass).
-              argument.bind(freshTypeVariable);
-            } else {
-              if (argument is KernelNamedTypeBuilder) {
-                computeUsedTypeVariables(argument);
-              }
+              return true;
+            } else if (argument is KernelNamedTypeBuilder) {
+              if (usesTypeVariables(argument)) return true;
             }
           }
         }
+        return false;
       }
 
       /// Iterate over the mixins from left to right. At the end of each
@@ -420,14 +439,14 @@
       for (int i = 0; i < type.mixins.length; i++) {
         KernelTypeBuilder mixin = type.mixins[i];
         isNamedMixinApplication = name != null && mixin == type.mixins.last;
-        usedTypeVariables = null;
+        bool isGeneric = false;
         if (!isNamedMixinApplication) {
           if (supertype is KernelNamedTypeBuilder) {
-            computeUsedTypeVariables(supertype);
+            isGeneric = isGeneric || usesTypeVariables(supertype);
           }
           if (mixin is KernelNamedTypeBuilder) {
             runningName += "&${extractName(mixin.name)}";
-            computeUsedTypeVariables(mixin);
+            isGeneric = isGeneric || usesTypeVariables(mixin);
           }
         }
         String fullname =
@@ -441,20 +460,42 @@
         } else {
           // Otherwise, we pass the fresh type variables to the mixin
           // application in the same order as they're declared on the subclass.
-          if (usedTypeVariables != null) {
-            applicationTypeVariables = <TypeVariableBuilder>[];
+          if (isGeneric) {
+            this.beginNestedDeclaration("mixin application");
+
+            applicationTypeVariables =
+                copyTypeVariables(typeVariables, currentDeclaration);
+
+            List<TypeBuilder> newTypes = <TypeBuilder>[];
+            if (supertype is KernelNamedTypeBuilder &&
+                supertype.arguments != null) {
+              for (int i = 0; i < supertype.arguments.length; ++i) {
+                supertype.arguments[i] = supertype.arguments[i].clone(newTypes);
+              }
+            }
+            if (mixin is KernelNamedTypeBuilder && mixin.arguments != null) {
+              for (int i = 0; i < mixin.arguments.length; ++i) {
+                mixin.arguments[i] = mixin.arguments[i].clone(newTypes);
+              }
+            }
+            for (TypeBuilder newType in newTypes) {
+              currentDeclaration.addType(
+                  new UnresolvedType<KernelTypeBuilder>(newType, -1, null));
+            }
+
+            DeclarationBuilder mixinDeclaration =
+                this.endNestedDeclaration("mixin application");
+            mixinDeclaration.resolveTypes(applicationTypeVariables, this);
+
             applicationTypeArguments = <KernelTypeBuilder>[];
             for (TypeVariableBuilder typeVariable in typeVariables) {
-              TypeVariableBuilder freshTypeVariable =
-                  usedTypeVariables[typeVariable.name];
-              if (freshTypeVariable != null) {
-                applicationTypeVariables.add(freshTypeVariable);
-                applicationTypeArguments.add(
-                    addNamedType(typeVariable.name, null, charOffset)..bind(
-                        // This may be rebound in the next iteration when
-                        // calling [computeUsedTypeVariables].
-                        typeVariable));
-              }
+              applicationTypeArguments
+                  .add(addNamedType(typeVariable.name, null, charOffset)..bind(
+                      // The type variable types passed as arguments to the
+                      // generic class representing the anonymous mixin
+                      // application should refer back to the type variables of
+                      // the class that extend the anonymous mixin application.
+                      typeVariable));
             }
           }
         }
@@ -1316,6 +1357,567 @@
         (!member.isSetter && scope.local[name] == null));
     addToExportScope(name, member);
   }
+
+  void reportBoundViolation(
+      Message message, int fileOffset, TypeParameter violated) {
+    List<LocatedMessage> context;
+    if (violated != null && violated.fileOffset != -1) {
+      // It looks like when parameters come from patch files, they don't
+      // have a reportable location.
+      context = <LocatedMessage>[
+        messageIncorrectTypeArgumentVariable.withLocation(
+            violated.location.file, violated.fileOffset, noLength)
+      ];
+    }
+    addProblem(message, fileOffset, noLength, fileUri, context: context);
+  }
+
+  void checkBoundsInField(Field field, TypeEnvironment typeEnvironment) {
+    if (!loader.target.strongMode) return;
+    List<Object> boundViolations = typeEnvironment.findBoundViolations(
+        field.type,
+        allowSuperBounded: true,
+        typedefInstantiations: typedefInstantiations);
+    if (boundViolations != null) {
+      for (int i = 0; i < boundViolations.length; i += 3) {
+        DartType argument = boundViolations[i];
+        TypeParameter variable = boundViolations[i + 1];
+        DartType enclosingType = boundViolations[i + 2];
+
+        Message message;
+        bool inferred = inferredTypes.contains(argument);
+        if (argument is FunctionType && argument.typeParameters.length > 0) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message = templateIncorrectTypeArgumentInferred.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          }
+        }
+
+        reportBoundViolation(message, field.fileOffset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInFunctionNodeParts(
+      TypeEnvironment typeEnvironment, int fileOffset,
+      {List<TypeParameter> typeParameters,
+      List<VariableDeclaration> positionalParameters,
+      List<VariableDeclaration> namedParameters,
+      DartType returnType}) {
+    if (!loader.target.strongMode) return;
+    if (typeParameters != null) {
+      for (TypeParameter parameter in typeParameters) {
+        List<Object> violations = typeEnvironment.findBoundViolations(
+            parameter.bound,
+            allowSuperBounded: false,
+            typedefInstantiations: typedefInstantiations);
+        if (violations != null) {
+          int offset = parameter.fileOffset;
+          for (int i = 0; i < violations.length; i += 3) {
+            DartType argument = violations[i];
+            TypeParameter variable = violations[i + 1];
+            DartType enclosingType = violations[i + 2];
+
+            Message message;
+            bool inferred = inferredTypes.contains(argument);
+            if (argument is FunctionType &&
+                argument.typeParameters.length > 0) {
+              if (inferred) {
+                message =
+                    templateGenericFunctionTypeInferredAsActualTypeArgument
+                        .withArguments(argument);
+              } else {
+                message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+              }
+              variable = null;
+            } else {
+              if (inferred) {
+                message = templateIncorrectTypeArgumentInferred.withArguments(
+                    argument,
+                    typeEnvironment.getGenericTypeName(enclosingType));
+              } else {
+                message = templateIncorrectTypeArgument.withArguments(argument,
+                    typeEnvironment.getGenericTypeName(enclosingType));
+              }
+            }
+
+            reportBoundViolation(message, offset, variable);
+          }
+        }
+      }
+    }
+    if (positionalParameters != null) {
+      for (VariableDeclaration formal in positionalParameters) {
+        List<Object> violations = typeEnvironment.findBoundViolations(
+            formal.type,
+            allowSuperBounded: true,
+            typedefInstantiations: typedefInstantiations);
+        if (violations != null) {
+          int offset = formal.fileOffset;
+          for (int i = 0; i < violations.length; i += 3) {
+            DartType argument = violations[i];
+            TypeParameter variable = violations[i + 1];
+            DartType enclosingType = violations[i + 2];
+
+            Message message;
+            bool inferred = inferredTypes.contains(argument);
+            if (argument is FunctionType &&
+                argument.typeParameters.length > 0) {
+              if (inferred) {
+                message =
+                    templateGenericFunctionTypeInferredAsActualTypeArgument
+                        .withArguments(argument);
+              } else {
+                message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+              }
+              variable = null;
+            } else {
+              if (inferred) {
+                message = templateIncorrectTypeArgumentInferred.withArguments(
+                    argument,
+                    typeEnvironment.getGenericTypeName(enclosingType));
+              } else {
+                message = templateIncorrectTypeArgument.withArguments(argument,
+                    typeEnvironment.getGenericTypeName(enclosingType));
+              }
+            }
+
+            reportBoundViolation(message, offset, variable);
+          }
+        }
+      }
+    }
+    if (namedParameters != null) {
+      for (VariableDeclaration named in namedParameters) {
+        List<Object> violations = typeEnvironment.findBoundViolations(
+            named.type,
+            allowSuperBounded: true,
+            typedefInstantiations: typedefInstantiations);
+        if (violations != null) {
+          int offset = named.fileOffset;
+          for (int i = 0; i < violations.length; i += 3) {
+            DartType argument = violations[i];
+            TypeParameter variable = violations[i + 1];
+            DartType enclosingType = violations[i + 2];
+
+            Message message;
+            bool inferred = inferredTypes.contains(argument);
+            if (argument is FunctionType &&
+                argument.typeParameters.length > 0) {
+              if (inferred) {
+                message =
+                    templateGenericFunctionTypeInferredAsActualTypeArgument
+                        .withArguments(argument);
+              } else {
+                message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+              }
+              variable = null;
+            } else {
+              if (inferred) {
+                message = templateIncorrectTypeArgumentInferred.withArguments(
+                    argument,
+                    typeEnvironment.getGenericTypeName(enclosingType));
+              } else {
+                message = templateIncorrectTypeArgument.withArguments(argument,
+                    typeEnvironment.getGenericTypeName(enclosingType));
+              }
+            }
+
+            reportBoundViolation(message, offset, variable);
+          }
+        }
+      }
+    }
+    if (returnType != null) {
+      List<Object> violations = typeEnvironment.findBoundViolations(returnType,
+          allowSuperBounded: true,
+          typedefInstantiations: typedefInstantiations);
+      if (violations != null) {
+        int offset = fileOffset;
+        for (int i = 0; i < violations.length; i += 3) {
+          DartType argument = violations[i];
+          TypeParameter variable = violations[i + 1];
+          DartType enclosingType = violations[i + 2];
+
+          // We don't need to check if [argument] was inferred or specified
+          // here, because inference in return types boils down to instantiate-
+          // -to-bound, and it can't provide a type that violates the bound.
+          Message message;
+          if (argument is FunctionType && argument.typeParameters.length > 0) {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+            variable = null;
+          } else {
+            message = templateIncorrectTypeArgumentInReturnType.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          }
+
+          reportBoundViolation(message, offset, variable);
+        }
+      }
+    }
+  }
+
+  void checkBoundsInFunctionNode(
+      FunctionNode function, TypeEnvironment typeEnvironment) {
+    if (!loader.target.strongMode) return;
+    checkBoundsInFunctionNodeParts(typeEnvironment, function.fileOffset,
+        typeParameters: function.typeParameters,
+        positionalParameters: function.positionalParameters,
+        namedParameters: function.namedParameters,
+        returnType: function.returnType);
+  }
+
+  void checkBoundsInListLiteral(
+      ListLiteral node, TypeEnvironment typeEnvironment,
+      {bool inferred = false}) {
+    if (!loader.target.strongMode) return;
+    checkBoundsInType(node.typeArgument, typeEnvironment, node.fileOffset,
+        inferred: inferred, allowSuperBounded: true);
+  }
+
+  void checkBoundsInMapLiteral(MapLiteral node, TypeEnvironment typeEnvironment,
+      {bool inferred = false}) {
+    if (!loader.target.strongMode) return;
+    checkBoundsInType(node.keyType, typeEnvironment, node.fileOffset,
+        inferred: inferred, allowSuperBounded: true);
+    checkBoundsInType(node.valueType, typeEnvironment, node.fileOffset,
+        inferred: inferred, allowSuperBounded: true);
+  }
+
+  void checkBoundsInType(
+      DartType type, TypeEnvironment typeEnvironment, int offset,
+      {bool inferred = false, bool allowSuperBounded = true}) {
+    if (!loader.target.strongMode) return;
+    List<Object> violations = typeEnvironment.findBoundViolations(type,
+        allowSuperBounded: allowSuperBounded,
+        typedefInstantiations: typedefInstantiations);
+    if (violations != null) {
+      for (int i = 0; i < violations.length; i += 3) {
+        DartType argument = violations[i];
+        TypeParameter variable = violations[i + 1];
+        DartType enclosingType = violations[i + 2];
+
+        Message message;
+        if (argument is FunctionType && argument.typeParameters.length > 0) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message = templateIncorrectTypeArgumentInferred.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          }
+        }
+
+        reportBoundViolation(message, offset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInVariableDeclaration(
+      VariableDeclaration node, TypeEnvironment typeEnvironment,
+      {bool inferred = false}) {
+    if (!loader.target.strongMode) return;
+    if (node.type == null) return;
+    List<Object> violations = typeEnvironment.findBoundViolations(node.type,
+        allowSuperBounded: true, typedefInstantiations: typedefInstantiations);
+    if (violations != null) {
+      for (int i = 0; i < violations.length; i += 3) {
+        DartType argument = violations[i];
+        TypeParameter variable = violations[i + 1];
+        DartType enclosingType = violations[i + 2];
+
+        Message message;
+        if (argument is FunctionType && argument.typeParameters.length > 0) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message = templateIncorrectTypeArgumentInferred.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, typeEnvironment.getGenericTypeName(enclosingType));
+          }
+        }
+
+        reportBoundViolation(message, node.fileOffset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInConstructorInvocation(
+      ConstructorInvocation node, TypeEnvironment typeEnvironment,
+      {bool inferred = false}) {
+    if (!loader.target.strongMode) return;
+    if (node.arguments.types.isEmpty) return;
+    Constructor constructor = node.target;
+    Class klass = constructor.enclosingClass;
+    DartType constructedType = new InterfaceType(klass, node.arguments.types);
+    List<Object> violations = typeEnvironment.findBoundViolations(
+        constructedType,
+        allowSuperBounded: false,
+        typedefInstantiations: typedefInstantiations);
+    if (violations != null) {
+      String constructedTypeName = "${klass.name}::${constructor.name.name}";
+      for (int i = 0; i < violations.length; i += 3) {
+        DartType argument = violations[i];
+        TypeParameter variable = violations[i + 1];
+        DartType enclosingType = violations[i + 2];
+        String enclosingName = enclosingType == constructedType
+            ? constructedTypeName
+            : typeEnvironment.getGenericTypeName(enclosingType);
+
+        Message message;
+        if (argument is FunctionType && argument.typeParameters.length > 0) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message = templateIncorrectTypeArgumentInferred.withArguments(
+                argument, enclosingName);
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, enclosingName);
+          }
+        }
+
+        reportBoundViolation(message, node.fileOffset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInFactoryInvocation(
+      StaticInvocation node, TypeEnvironment typeEnvironment,
+      {bool inferred = false}) {
+    if (!loader.target.strongMode) return;
+    if (node.arguments.types.isEmpty) return;
+    Procedure factory = node.target;
+    assert(factory.isFactory);
+    Class klass = factory.enclosingClass;
+    DartType constructedType = new InterfaceType(klass, node.arguments.types);
+    List<Object> violations = typeEnvironment.findBoundViolations(
+        constructedType,
+        allowSuperBounded: false,
+        typedefInstantiations: typedefInstantiations);
+    if (violations != null) {
+      String constructedTypeName = "${klass.name}::${factory.name.name}";
+      for (int i = 0; i < violations.length; i += 3) {
+        DartType argument = violations[i];
+        TypeParameter variable = violations[i + 1];
+        DartType enclosingType = violations[i + 2];
+        String enclosingName = enclosingType == constructedType
+            ? constructedTypeName
+            : typeEnvironment.getGenericTypeName(enclosingType);
+
+        Message message;
+        if (argument is FunctionType && argument.typeParameters.length > 0) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message = templateIncorrectTypeArgumentInferred.withArguments(
+                argument, enclosingName);
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, enclosingName);
+          }
+        }
+
+        reportBoundViolation(message, node.fileOffset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInStaticInvocation(
+      StaticInvocation node, TypeEnvironment typeEnvironment,
+      {bool inferred = false}) {
+    if (!loader.target.strongMode) return;
+    if (node.arguments.types.isEmpty) return;
+    Class klass = node.target.enclosingClass;
+    List<TypeParameter> parameters = node.target.function.typeParameters;
+    List<DartType> arguments = node.arguments.types;
+    // The following error is to be reported elsewhere.
+    if (parameters.length != arguments.length) return;
+    List<Object> violations = typeEnvironment.findBoundViolationsElementwise(
+        parameters, arguments,
+        typedefInstantiations: typedefInstantiations);
+    if (violations != null) {
+      String targetName;
+      if (klass == null) {
+        targetName = "${node.target.name.name}";
+      } else {
+        targetName = "${klass.name}::${node.target.name.name}";
+      }
+      for (int i = 0; i < violations.length; i += 3) {
+        DartType argument = violations[i];
+        TypeParameter variable = violations[i + 1];
+        DartType enclosingType = violations[i + 2];
+        String enclosingName = enclosingType == null
+            ? targetName
+            : typeEnvironment.getGenericTypeName(enclosingType);
+
+        Message message;
+        if (argument is FunctionType) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message = templateIncorrectTypeArgumentInferred.withArguments(
+                argument, enclosingName);
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, enclosingName);
+          }
+        }
+
+        reportBoundViolation(message, node.fileOffset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInMethodInvocation(
+      DartType receiverType,
+      TypeEnvironment typeEnvironment,
+      TypeInferrerImpl typeInferrer,
+      Name name,
+      Member interfaceTarget,
+      Arguments arguments,
+      int offset,
+      {bool inferred = false}) {
+    if (!loader.target.strongMode) return;
+    if (arguments.types.isEmpty) return;
+    Class klass;
+    List<DartType> klassArguments;
+    if (receiverType is InterfaceType) {
+      klass = receiverType.classNode;
+      klassArguments = receiverType.typeArguments;
+    } else {
+      return;
+    }
+    Map<TypeParameter, DartType> substitutionMap = <TypeParameter, DartType>{};
+    for (int i = 0; i < klassArguments.length; ++i) {
+      substitutionMap[klass.typeParameters[i]] = klassArguments[i];
+    }
+    // TODO(dmitryas): Find a better way than relying on [interfaceTarget].
+    Member method = typeEnvironment.hierarchy.getDispatchTarget(klass, name) ??
+        interfaceTarget;
+    if (method == null || method is! Procedure) {
+      return;
+    }
+    List<TypeParameter> methodParameters = method.function.typeParameters;
+    // The error is to be reported elsewhere.
+    if (methodParameters.length != arguments.types.length) return;
+    List<TypeParameter> instantiatedMethodParameters =
+        new List<TypeParameter>.filled(methodParameters.length, null);
+    for (int i = 0; i < instantiatedMethodParameters.length; ++i) {
+      instantiatedMethodParameters[i] =
+          new TypeParameter(methodParameters[i].name);
+      substitutionMap[methodParameters[i]] =
+          new TypeParameterType(instantiatedMethodParameters[i]);
+    }
+    for (int i = 0; i < instantiatedMethodParameters.length; ++i) {
+      instantiatedMethodParameters[i].bound =
+          substitute(methodParameters[i].bound, substitutionMap);
+    }
+    List<Object> violations = typeEnvironment.findBoundViolationsElementwise(
+        instantiatedMethodParameters, arguments.types,
+        typedefInstantiations: typedefInstantiations);
+    if (violations != null) {
+      String targetName = "${klass.name}";
+      if (klassArguments.length > 0) {
+        targetName += "<${klassArguments[0]}";
+        for (int i = 1; i < klassArguments.length; ++i) {
+          targetName += ", ${klassArguments[i]}";
+        }
+        targetName += ">";
+      }
+      targetName += "::${name.name}";
+      for (int i = 0; i < violations.length; i += 3) {
+        DartType argument = violations[i];
+        TypeParameter variable = violations[i + 1];
+        DartType enclosingType = violations[i + 2];
+        String enclosingName = enclosingType == null
+            ? targetName
+            : typeEnvironment.getGenericTypeName(enclosingType);
+
+        Message message;
+        if (argument is FunctionType && argument.typeParameters.length > 0) {
+          if (inferred) {
+            message = templateGenericFunctionTypeInferredAsActualTypeArgument
+                .withArguments(argument);
+          } else {
+            message = messageGenericFunctionTypeUsedAsActualTypeArgument;
+          }
+          variable = null;
+        } else {
+          if (inferred) {
+            message = templateIncorrectTypeArgumentInferred.withArguments(
+                argument, enclosingName);
+          } else {
+            message = templateIncorrectTypeArgument.withArguments(
+                argument, enclosingName);
+          }
+        }
+
+        reportBoundViolation(message, offset, variable);
+      }
+    }
+  }
+
+  void checkBoundsInOutline(TypeEnvironment typeEnvironment) {
+    if (!loader.target.strongMode) return;
+    forEach((String name, Declaration declaration) {
+      if (declaration is KernelFieldBuilder) {
+        checkBoundsInField(declaration.target, typeEnvironment);
+      } else if (declaration is KernelProcedureBuilder) {
+        checkBoundsInFunctionNode(declaration.target.function, typeEnvironment);
+      } else if (declaration is KernelClassBuilder) {
+        declaration.checkBoundsInOutline(typeEnvironment);
+      }
+    });
+
+    typedefInstantiations.clear();
+    inferredTypes.clear();
+  }
 }
 
 Uri computeLibraryUri(Declaration declaration) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart
index 5356ee7..c0ab216 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_mixin_application_builder.dart
@@ -50,7 +50,7 @@
   }
 
   @override
-  buildInvalidType(LocatedMessage message) {
+  buildInvalidType(LocatedMessage message, {List<LocatedMessage> context}) {
     return unsupported("buildInvalidType", message.charOffset, message.uri);
   }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart
index 8c361e6..b548eec 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_named_type_builder.dart
@@ -31,11 +31,13 @@
   KernelNamedTypeBuilder(Object name, List<KernelTypeBuilder> arguments)
       : super(name, arguments);
 
-  KernelInvalidTypeBuilder buildInvalidType(LocatedMessage message) {
+  KernelInvalidTypeBuilder buildInvalidType(LocatedMessage message,
+      {List<LocatedMessage> context}) {
     // TODO(ahe): Consider if it makes sense to pass a QualifiedName to
     // KernelInvalidTypeBuilder?
     return new KernelInvalidTypeBuilder(
-        flattenName(name, message.charOffset, message.uri), message);
+        flattenName(name, message.charOffset, message.uri), message,
+        context: context);
   }
 
   Supertype handleInvalidSupertype(
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 c7a11ce..80afd41 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
@@ -22,7 +22,7 @@
 
 import 'package:kernel/ast.dart' as kernel show Expression, Initializer;
 
-import 'package:kernel/ast.dart' hide InvalidExpression, InvalidInitializer;
+import 'package:kernel/ast.dart';
 
 import 'package:kernel/clone.dart' show CloneVisitor;
 
@@ -41,7 +41,6 @@
         messageVoidExpression,
         noLength,
         templateCantInferTypeDueToCircularity,
-        templateCantUseSuperBoundedTypeForInstanceCreation,
         templateForInLoopElementTypeNotAssignable,
         templateForInLoopTypeNotIterable,
         templateIntegerLiteralIsOutOfRange,
@@ -52,8 +51,6 @@
 
 import '../source/source_class_builder.dart' show SourceClassBuilder;
 
-import '../source/source_library_builder.dart' show SourceLibraryBuilder;
-
 import '../type_inference/inference_helper.dart' show InferenceHelper;
 
 import '../type_inference/interface_resolver.dart' show InterfaceResolver;
@@ -84,18 +81,12 @@
 
 import 'body_builder.dart' show combineStatements;
 
+import 'kernel_builder.dart' show KernelLibraryBuilder;
+
 import 'kernel_expression_generator.dart' show makeLet;
 
-/// Indicates whether type inference involving conditional expressions should
-/// always use least upper bound.
-///
-/// A value of `true` matches the behavior of analyzer.  A value of `false`
-/// matches the informal specification in
-/// https://github.com/dart-lang/sdk/pull/29371.
-///
-/// TODO(paulberry): once compatibility with analyzer is no longer needed,
-/// change this to `false`.
-const bool _forceLub = true;
+part "inference_visitor.dart";
+part "inferred_type_visitor.dart";
 
 /// Computes the return type of a (possibly factory) constructor.
 InterfaceType computeConstructorReturnType(Member constructor) {
@@ -139,9 +130,7 @@
 class ArgumentsJudgment extends Arguments {
   bool _hasExplicitTypeArguments;
 
-  List<ExpressionJudgment> get positionalJudgments => positional.cast();
-
-  List<NamedExpressionJudgment> get namedJudgments => named.cast();
+  List<Expression> get positionalJudgments => positional.cast();
 
   ArgumentsJudgment(List<Expression> positional,
       {List<DartType> types, List<NamedExpression> named})
@@ -161,23 +150,6 @@
   }
 }
 
-/// Shadow object for [AsExpression].
-class AsJudgment extends AsExpression implements ExpressionJudgment {
-  DartType inferredType;
-
-  AsJudgment(Expression operand, DartType type) : super(operand, type);
-
-  ExpressionJudgment get judgment => operand;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferrer.inferExpression(judgment, const UnknownType(), false,
-        isVoidAllowed: true);
-    inferredType = type;
-    return null;
-  }
-}
-
 /// Concrete shadow object representing an assert initializer in kernel form.
 class AssertInitializerJudgment extends AssertInitializer
     implements InitializerJudgment {
@@ -186,8 +158,8 @@
   AssertStatementJudgment get judgment => statement;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferStatement(judgment);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitAssertInitializerJudgment(this);
   }
 }
 
@@ -201,43 +173,13 @@
             conditionStartOffset: conditionStartOffset,
             conditionEndOffset: conditionEndOffset);
 
-  ExpressionJudgment get conditionJudgment => condition;
+  Expression get conditionJudgment => condition;
 
-  ExpressionJudgment get messageJudgment => message;
+  Expression get messageJudgment => message;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var conditionJudgment = this.conditionJudgment;
-    var messageJudgment = this.messageJudgment;
-    var expectedType = inferrer.coreTypes.boolClass.rawType;
-    inferrer.inferExpression(
-        conditionJudgment, expectedType, !inferrer.isTopLevel);
-    inferrer.ensureAssignable(expectedType, conditionJudgment.inferredType,
-        conditionJudgment, conditionJudgment.fileOffset);
-    if (messageJudgment != null) {
-      inferrer.inferExpression(messageJudgment, const UnknownType(), false);
-    }
-  }
-}
-
-/// Shadow object for [AwaitExpression].
-class AwaitJudgment extends AwaitExpression implements ExpressionJudgment {
-  DartType inferredType;
-
-  AwaitJudgment(Expression operand) : super(operand);
-
-  ExpressionJudgment get judgment => operand;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (!inferrer.typeSchemaEnvironment.isEmptyContext(typeContext)) {
-      typeContext = inferrer.wrapFutureOrType(typeContext);
-    }
-    var judgment = this.judgment;
-    inferrer.inferExpression(judgment, typeContext, true, isVoidAllowed: true);
-    inferredType =
-        inferrer.typeSchemaEnvironment.unfutureType(judgment.inferredType);
-    return null;
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitAssertStatementJudgment(this);
   }
 }
 
@@ -248,23 +190,8 @@
   List<Statement> get judgments => statements;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    for (var judgment in judgments) {
-      inferrer.inferStatement(judgment);
-    }
-  }
-}
-
-/// Concrete shadow object representing a boolean literal in kernel form.
-class BoolJudgment extends BoolLiteral implements ExpressionJudgment {
-  DartType inferredType;
-
-  BoolJudgment(bool value) : super(value);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.coreTypes.boolClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitBlockJudgment(this);
   }
 }
 
@@ -275,8 +202,8 @@
   LabeledStatementJudgment get targetJudgment => target;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    // No inference needs to be done.
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitBreakJudgment(this);
   }
 }
 
@@ -287,8 +214,8 @@
   LabeledStatementJudgment get targetJudgment => target;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    // No inference needs to be done.
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitContinueJudgment(this);
   }
 }
 
@@ -328,9 +255,9 @@
     nextCascade = body;
   }
 
-  ExpressionJudgment get targetJudgment => variable.initializer;
+  Expression get targetJudgment => variable.initializer;
 
-  Iterable<ExpressionJudgment> get cascadeJudgments sync* {
+  Iterable<Expression> get cascadeJudgments sync* {
     Let section = body;
     while (true) {
       yield section.variable.initializer;
@@ -359,16 +286,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.inferExpression(targetJudgment, typeContext, true);
-    if (inferrer.strongMode) {
-      variable.type = inferredType;
-    }
-    for (var judgment in cascadeJudgments) {
-      inferrer.inferExpression(judgment, const UnknownType(), false,
-          isVoidAllowed: true);
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitCascadeJudgment(this, typeContext);
   }
 }
 
@@ -439,7 +358,7 @@
   Expression read;
 
   /// The expression appearing on the RHS of the assignment.
-  final ExpressionJudgment rhs;
+  final Expression rhs;
 
   /// The expression that performs the write (e.g. `a.[]=(b, a.[](b) + 1)` in
   /// `++a[b]`).
@@ -506,8 +425,8 @@
     DartType combinedType;
     if (combiner != null) {
       bool isOverloadedArithmeticOperator = false;
-      combinerMember =
-          inferrer.findMethodInvocationMember(readType, combiner, silent: true);
+      combinerMember = inferrer.findMethodInvocationMember(readType, combiner,
+          instrumented: false);
       if (combinerMember is Procedure) {
         isOverloadedArithmeticOperator = inferrer.typeSchemaEnvironment
             .isOverloadedArithmeticOperatorAndType(combinerMember, readType);
@@ -525,7 +444,7 @@
         // Analyzer uses a null context for the RHS here.
         // TODO(paulberry): improve on this.
         inferrer.inferExpression(rhs, const UnknownType(), true);
-        rhsType = rhs.inferredType;
+        rhsType = getInferredType(rhs, inferrer);
         // Do not use rhs after this point because it may be a Shadow node
         // that has been replaced in the tree with its desugaring.
         var expectedType = getPositionalParameterType(combinerType, 0);
@@ -557,7 +476,7 @@
     } else {
       inferrer.inferExpression(rhs, writeContext ?? const UnknownType(), true,
           isVoidAllowed: true);
-      var rhsType = rhs.inferredType;
+      var rhsType = getInferredType(rhs, inferrer);
       var replacedRhs = inferrer.ensureAssignable(
           writeContext, rhsType, rhs, writeOffset,
           isVoidAllowed: writeContext is VoidType);
@@ -566,7 +485,7 @@
         MethodInvocation equalsInvocation = nullAwareCombiner.condition;
         inferrer.findMethodInvocationMember(
             greatestClosure(inferrer.coreTypes, writeContext), equalsInvocation,
-            silent: true);
+            instrumented: false);
         // Note: the case of readType=null only happens for erroneous code.
         combinedType = readType == null
             ? rhsType
@@ -595,13 +514,13 @@
 abstract class ComplexAssignmentJudgmentWithReceiver
     extends ComplexAssignmentJudgment {
   /// The receiver of the assignment target (e.g. `a` in `a[b] = c`).
-  final ExpressionJudgment receiver;
+  final Expression receiver;
 
   /// Indicates whether this assignment uses `super`.
   final bool isSuper;
 
   ComplexAssignmentJudgmentWithReceiver(
-      this.receiver, ExpressionJudgment rhs, this.isSuper)
+      this.receiver, Expression rhs, this.isSuper)
       : super(rhs);
 
   @override
@@ -615,7 +534,7 @@
   DartType _inferReceiver(ShadowTypeInferrer inferrer) {
     if (receiver != null) {
       inferrer.inferExpression(receiver, const UnknownType(), true);
-      var receiverType = receiver.inferredType;
+      var receiverType = getInferredType(receiver, inferrer);
       _storeLetType(inferrer, receiver, receiverType);
       return receiverType;
     } else if (isSuper) {
@@ -627,117 +546,6 @@
   }
 }
 
-/// Concrete shadow object representing a conditional expression in kernel form.
-/// Shadow object for [ConditionalExpression].
-class ConditionalJudgment extends ConditionalExpression
-    implements ExpressionJudgment {
-  DartType inferredType;
-
-  ExpressionJudgment get conditionJudgment => condition;
-
-  ExpressionJudgment get thenJudgment => then;
-
-  ExpressionJudgment get otherwiseJudgment => otherwise;
-
-  ConditionalJudgment(
-      Expression condition, Expression then, Expression otherwise)
-      : super(condition, then, otherwise, null);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var conditionJudgment = this.conditionJudgment;
-    var thenJudgment = this.thenJudgment;
-    var otherwiseJudgment = this.otherwiseJudgment;
-    var expectedType = inferrer.coreTypes.boolClass.rawType;
-    inferrer.inferExpression(
-        conditionJudgment, expectedType, !inferrer.isTopLevel);
-    inferrer.ensureAssignable(expectedType, conditionJudgment.inferredType,
-        condition, condition.fileOffset);
-    inferrer.inferExpression(thenJudgment, typeContext, true,
-        isVoidAllowed: true);
-    bool useLub = _forceLub || typeContext == null;
-    inferrer.inferExpression(otherwiseJudgment, typeContext, useLub,
-        isVoidAllowed: true);
-    inferredType = useLub
-        ? inferrer.typeSchemaEnvironment.getStandardUpperBound(
-            thenJudgment.inferredType, otherwiseJudgment.inferredType)
-        : greatestClosure(inferrer.coreTypes, typeContext);
-    if (inferrer.strongMode) {
-      staticType = inferredType;
-    }
-    return null;
-  }
-}
-
-/// Shadow object for [ConstructorInvocation].
-class ConstructorInvocationJudgment extends ConstructorInvocation
-    implements ExpressionJudgment {
-  DartType inferredType;
-
-  ConstructorInvocationJudgment(Constructor target, ArgumentsJudgment arguments,
-      {bool isConst: false})
-      : super(target, arguments, isConst: isConst);
-
-  ArgumentsJudgment get argumentJudgments => arguments;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var library = inferrer.engine.beingInferred[target];
-    if (library != null) {
-      // There is a cyclic dependency where inferring the types of the
-      // initializing formals of a constructor required us to infer the
-      // corresponding field type which required us to know the type of the
-      // constructor.
-      String name = target.enclosingClass.name;
-      if (target.name.name.isNotEmpty) {
-        // TODO(ahe): Use `inferrer.helper.constructorNameForDiagnostics`
-        // instead. However, `inferrer.helper` may be null.
-        name += ".${target.name.name}";
-      }
-      library.addProblem(
-          templateCantInferTypeDueToCircularity.withArguments(name),
-          target.fileOffset,
-          name.length,
-          target.fileUri);
-      for (var declaration in target.function.positionalParameters) {
-        declaration.type ??= const DynamicType();
-      }
-      for (var declaration in target.function.namedParameters) {
-        declaration.type ??= const DynamicType();
-      }
-    } else if ((library = inferrer.engine.toBeInferred[target]) != null) {
-      inferrer.engine.toBeInferred.remove(target);
-      inferrer.engine.beingInferred[target] = library;
-      for (var declaration in target.function.positionalParameters) {
-        inferrer.engine.inferInitializingFormal(declaration, target);
-      }
-      for (var declaration in target.function.namedParameters) {
-        inferrer.engine.inferInitializingFormal(declaration, target);
-      }
-      inferrer.engine.beingInferred.remove(target);
-    }
-    var inferenceResult = inferrer.inferInvocation(
-        typeContext,
-        fileOffset,
-        target.function.functionType,
-        computeConstructorReturnType(target),
-        argumentJudgments,
-        isConst: isConst);
-    var inferredType = inferenceResult.type;
-    this.inferredType = inferredType;
-    if (inferrer.strongMode &&
-        !inferrer.isTopLevel &&
-        inferrer.typeSchemaEnvironment.isSuperBounded(inferredType)) {
-      inferrer.helper.addProblem(
-          templateCantUseSuperBoundedTypeForInstanceCreation
-              .withArguments(inferredType),
-          fileOffset,
-          noLength);
-    }
-    return null;
-  }
-}
-
 /// Concrete shadow object representing a continue statement from a switch
 /// statement, in kernel form.
 class ContinueSwitchJudgment extends ContinueSwitchStatement
@@ -747,8 +555,8 @@
   SwitchCaseJudgment get targetJudgment => target;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    // No inference needs to be done.
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitContinueSwitchJudgment(this);
   }
 }
 
@@ -759,16 +567,11 @@
   DeferredCheckJudgment(VariableDeclaration variable, Expression body)
       : super(variable, body);
 
-  ExpressionJudgment get judgment => body;
+  Expression get judgment => body;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    // Since the variable is not used in the body we don't need to type infer
-    // it.  We can just type infer the body.
-    var judgment = this.judgment;
-    inferrer.inferExpression(judgment, typeContext, true, isVoidAllowed: true);
-    inferredType = judgment.inferredType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitDeferredCheckJudgment(this, typeContext);
   }
 }
 
@@ -778,16 +581,11 @@
 
   StatementJudgment get bodyJudgment => body;
 
-  ExpressionJudgment get conditionJudgment => condition;
+  Expression get conditionJudgment => condition;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var conditionJudgment = this.conditionJudgment;
-    inferrer.inferStatement(bodyJudgment);
-    var boolType = inferrer.coreTypes.boolClass.rawType;
-    inferrer.inferExpression(conditionJudgment, boolType, !inferrer.isTopLevel);
-    inferrer.ensureAssignable(boolType, conditionJudgment.inferredType,
-        condition, condition.fileOffset);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitDoJudgment(this);
   }
 }
 
@@ -798,9 +596,8 @@
   DoubleJudgment(double value) : super(value);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.coreTypes.doubleClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitDoubleJudgment(this, typeContext);
   }
 }
 
@@ -810,8 +607,8 @@
   DartType inferredType;
 
   /// Calls back to [inferrer] to perform type inference for whatever concrete
-  /// type of [ExpressionJudgment] this is.
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext);
+  /// type of [Expression] this is.
+  void acceptInference(InferenceVistor visitor, DartType typeContext);
 }
 
 /// Concrete shadow object representing an empty statement in kernel form.
@@ -820,8 +617,8 @@
   EmptyStatementJudgment();
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    // No inference needs to be done.
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitEmptyStatementJudgment(this);
   }
 }
 
@@ -833,9 +630,8 @@
   Expression get judgment => expression;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferExpression(judgment, const UnknownType(), false,
-        isVoidAllowed: true);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitExpressionStatementJudgment(this);
   }
 }
 
@@ -853,16 +649,8 @@
   ArgumentsJudgment get argumentJudgments => arguments;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var inferenceResult = inferrer.inferInvocation(
-        typeContext,
-        fileOffset,
-        target.function.functionType,
-        computeConstructorReturnType(target),
-        argumentJudgments,
-        isConst: isConst);
-    inferredType = inferenceResult.type;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitFactoryConstructorInvocationJudgment(this, typeContext);
   }
 }
 
@@ -901,9 +689,8 @@
   ShadowFieldInitializer(Field field, Expression value) : super(field, value);
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var initializerType = inferrer.inferExpression(value, field.type, true);
-    inferrer.ensureAssignable(field.type, initializerType, value, fileOffset);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitShadowFieldInitializer(this);
   }
 }
 
@@ -920,151 +707,35 @@
 
   VariableDeclarationJudgment get variableJudgment => variable;
 
-  ExpressionJudgment get iterableJudgment => iterable;
+  Expression get iterableJudgment => iterable;
 
   StatementJudgment get bodyJudgment => body;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var iterableClass = isAsync
-        ? inferrer.coreTypes.streamClass
-        : inferrer.coreTypes.iterableClass;
-    DartType context;
-    bool typeNeeded = false;
-    bool typeChecksNeeded = !inferrer.isTopLevel;
-    VariableDeclarationJudgment variable;
-    var syntheticAssignment = _syntheticAssignment;
-    DartType syntheticWriteType;
-    if (_declaresVariable) {
-      variable = this.variableJudgment;
-      if (inferrer.strongMode && variable._implicitlyTyped) {
-        typeNeeded = true;
-        context = const UnknownType();
-      } else {
-        context = variable.type;
-      }
-    } else if (syntheticAssignment is ComplexAssignmentJudgment) {
-      syntheticWriteType =
-          context = syntheticAssignment._getWriteType(inferrer);
-    } else {
-      context = const UnknownType();
-    }
-    context = inferrer.wrapType(context, iterableClass);
-
-    var iterableJudgment = this.iterableJudgment;
-    inferrer.inferExpression(
-        iterableJudgment, context, typeNeeded || typeChecksNeeded);
-    var inferredExpressionType =
-        inferrer.resolveTypeParameter(iterableJudgment.inferredType);
-    inferrer.ensureAssignable(
-        inferrer.wrapType(const DynamicType(), iterableClass),
-        inferredExpressionType,
-        iterable,
-        iterable.fileOffset,
-        template: templateForInLoopTypeNotIterable);
-
-    DartType inferredType;
-    if (typeNeeded || typeChecksNeeded) {
-      inferredType = const DynamicType();
-      if (inferredExpressionType is InterfaceType) {
-        InterfaceType supertype = inferrer.classHierarchy
-            .getTypeAsInstanceOf(inferredExpressionType, iterableClass);
-        if (supertype != null) {
-          inferredType = supertype.typeArguments[0];
-        }
-      }
-      if (typeNeeded) {
-        inferrer.instrumentation?.record(inferrer.uri, variable.fileOffset,
-            'type', new InstrumentationValueForType(inferredType));
-        variable.type = inferredType;
-      }
-      if (!_declaresVariable) {
-        this.variable.type = inferredType;
-      }
-    }
-
-    inferrer.inferStatement(bodyJudgment);
-    if (syntheticAssignment != null) {
-      var syntheticStatement = new ExpressionStatement(syntheticAssignment);
-      body = combineStatements(syntheticStatement, body)..parent = this;
-    }
-    if (_declaresVariable) {
-      inferrer.inferMetadataKeepingHelper(variable.annotations);
-      var tempVar =
-          new VariableDeclaration(null, type: inferredType, isFinal: true);
-      var variableGet = new VariableGet(tempVar)
-        ..fileOffset = this.variable.fileOffset;
-      var implicitDowncast = inferrer.ensureAssignable(
-          variable.type, inferredType, variableGet, fileOffset,
-          template: templateForInLoopElementTypeNotAssignable);
-      if (implicitDowncast != null) {
-        this.variable = tempVar..parent = this;
-        variable.initializer = implicitDowncast..parent = variable;
-        body = combineStatements(variable, body)..parent = this;
-      }
-    } else if (syntheticAssignment is SyntheticExpressionJudgment) {
-      if (syntheticAssignment is ComplexAssignmentJudgment) {
-        inferrer.ensureAssignable(
-            greatestClosure(inferrer.coreTypes, syntheticWriteType),
-            this.variable.type,
-            syntheticAssignment.rhs,
-            syntheticAssignment.rhs.fileOffset,
-            template: templateForInLoopElementTypeNotAssignable,
-            isVoidAllowed: true);
-        if (syntheticAssignment is PropertyAssignmentJudgment) {
-          syntheticAssignment._handleWriteContravariance(
-              inferrer, inferrer.thisType);
-        }
-      }
-      syntheticAssignment._replaceWithDesugared();
-    }
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitForInJudgment(this);
   }
 }
 
 /// Concrete shadow object representing a classic for loop in kernel form.
 class ForJudgment extends ForStatement implements StatementJudgment {
-  final List<ExpressionJudgment> initializers;
+  final List<Expression> initializers;
 
   ForJudgment(List<VariableDeclaration> variables, this.initializers,
-      ExpressionJudgment condition, List<Expression> updates, Statement body)
+      Expression condition, List<Expression> updates, Statement body)
       : super(variables ?? [], condition, updates, body);
 
   List<VariableDeclarationJudgment> get variableJudgments => variables.cast();
 
-  ExpressionJudgment get conditionJudgment => condition;
+  Expression get conditionJudgment => condition;
 
-  List<ExpressionJudgment> get updateJudgments => updates.cast();
+  List<Expression> get updateJudgments => updates.cast();
 
   StatementJudgment get bodyJudgment => body;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var initializers = this.initializers;
-    var conditionJudgment = this.conditionJudgment;
-    if (initializers != null) {
-      for (var initializer in initializers) {
-        variables
-            .add(new VariableDeclaration.forValue(initializer)..parent = this);
-        inferrer.inferExpression(initializer, const UnknownType(), false,
-            isVoidAllowed: true);
-      }
-    } else {
-      for (var variable in variableJudgments) {
-        inferrer.inferStatement(variable);
-      }
-    }
-    if (conditionJudgment != null) {
-      var expectedType = inferrer.coreTypes.boolClass.rawType;
-      inferrer.inferExpression(
-          conditionJudgment, expectedType, !inferrer.isTopLevel);
-      inferrer.ensureAssignable(expectedType, conditionJudgment.inferredType,
-          condition, condition.fileOffset);
-    }
-    for (var update in updateJudgments) {
-      inferrer.inferExpression(update, const UnknownType(), false,
-          isVoidAllowed: true);
-    }
-    inferrer.inferStatement(bodyJudgment);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitForJudgment(this);
   }
 }
 
@@ -1086,15 +757,6 @@
             returnType: returnType,
             asyncMarker: asyncMarker,
             dartAsyncMarker: dartAsyncMarker);
-
-  ExpressionInferenceResult infer(
-      ShadowTypeInferrer inferrer,
-      DartType typeContext,
-      DartType returnContext,
-      int returnTypeInstrumentationOffset) {
-    return inferrer.inferLocalFunction(
-        this, typeContext, returnTypeInstrumentationOffset, returnContext);
-  }
 }
 
 /// Concrete shadow object representing a local function declaration in kernel
@@ -1112,14 +774,8 @@
   FunctionNodeJudgment get functionJudgment => function;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferMetadataKeepingHelper(variable.annotations);
-    DartType returnContext = _hasImplicitReturnType
-        ? (inferrer.strongMode ? null : const DynamicType())
-        : function.returnType;
-    var inferenceResult =
-        functionJudgment.infer(inferrer, null, returnContext, fileOffset);
-    variable.type = inferenceResult.type;
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitFunctionDeclarationJudgment(this);
   }
 
   static void setHasImplicitReturnType(
@@ -1128,25 +784,6 @@
   }
 }
 
-/// Concrete shadow object representing a function expression in kernel form.
-class FunctionExpressionJudgment extends FunctionExpression
-    implements ExpressionJudgment {
-  DartType inferredType;
-
-  FunctionExpressionJudgment(FunctionNodeJudgment function) : super(function);
-
-  FunctionNodeJudgment get judgment => function;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var judgment = this.judgment;
-    var inferenceResult =
-        judgment.infer(inferrer, typeContext, null, fileOffset);
-    inferredType = inferenceResult.type;
-    return null;
-  }
-}
-
 /// Concrete shadow object representing a super initializer in kernel form.
 class InvalidSuperInitializerJudgment extends LocalInitializer
     implements InitializerJudgment {
@@ -1158,18 +795,8 @@
       : super(variable);
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var substitution = Substitution.fromSupertype(inferrer.classHierarchy
-        .getClassAsInstanceOf(
-            inferrer.thisType.classNode, target.enclosingClass));
-    inferrer.inferInvocation(
-        null,
-        fileOffset,
-        substitution
-            .substituteType(target.function.functionType.withoutTypeParameters),
-        inferrer.thisType,
-        argumentsJudgment,
-        skipTypeArgumentInference: true);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitInvalidSuperInitializerJudgment(this);
   }
 }
 
@@ -1189,43 +816,14 @@
   ConditionalExpression get body => super.body;
 
   /// Returns the expression to the left of `??`.
-  ExpressionJudgment get leftJudgment => variable.initializer;
+  Expression get leftJudgment => variable.initializer;
 
   /// Returns the expression to the right of `??`.
-  ExpressionJudgment get rightJudgment => body.then;
+  Expression get rightJudgment => body.then;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var leftJudgment = this.leftJudgment;
-    var rightJudgment = this.rightJudgment;
-    // To infer `e0 ?? e1` in context K:
-    // - Infer e0 in context K to get T0
-    inferrer.inferExpression(leftJudgment, typeContext, true);
-    var lhsType = leftJudgment.inferredType;
-    if (inferrer.strongMode) {
-      variable.type = lhsType;
-    }
-    // - Let J = T0 if K is `?` else K.
-    // - Infer e1 in context J to get T1
-    bool useLub = _forceLub || typeContext is UnknownType;
-    if (typeContext is UnknownType) {
-      inferrer.inferExpression(rightJudgment, lhsType, true,
-          isVoidAllowed: true);
-    } else {
-      inferrer.inferExpression(rightJudgment, typeContext, _forceLub,
-          isVoidAllowed: true);
-    }
-    var rhsType = rightJudgment.inferredType;
-    // - Let T = greatest closure of K with respect to `?` if K is not `_`, else
-    //   UP(t0, t1)
-    // - Then the inferred type is T.
-    inferredType = useLub
-        ? inferrer.typeSchemaEnvironment.getStandardUpperBound(lhsType, rhsType)
-        : greatestClosure(inferrer.coreTypes, typeContext);
-    if (inferrer.strongMode) {
-      body.staticType = inferredType;
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitIfNullJudgment(this, typeContext);
   }
 }
 
@@ -1234,24 +832,15 @@
   IfJudgment(Expression condition, Statement then, Statement otherwise)
       : super(condition, then, otherwise);
 
-  ExpressionJudgment get conditionJudgment => condition;
+  Expression get conditionJudgment => condition;
 
   StatementJudgment get thenJudgment => then;
 
   StatementJudgment get otherwiseJudgment => otherwise;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var conditionJudgment = this.conditionJudgment;
-    var expectedType = inferrer.coreTypes.boolClass.rawType;
-    inferrer.inferExpression(
-        conditionJudgment, expectedType, !inferrer.isTopLevel);
-    inferrer.ensureAssignable(expectedType, conditionJudgment.inferredType,
-        condition, condition.fileOffset);
-    inferrer.inferStatement(thenJudgment);
-    if (otherwiseJudgment != null) {
-      inferrer.inferStatement(otherwiseJudgment);
-    }
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitIfJudgment(this);
   }
 }
 
@@ -1262,7 +851,7 @@
   /// If `-1`, then there is no separate location for invalid assignment.
   final int assignmentOffset;
 
-  IllegalAssignmentJudgment(ExpressionJudgment rhs, {this.assignmentOffset: -1})
+  IllegalAssignmentJudgment(Expression rhs, {this.assignmentOffset: -1})
       : super(rhs) {
     rhs.parent = this;
   }
@@ -1273,14 +862,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (write != null) {
-      inferrer.inferExpression(write, const UnknownType(), false);
-    }
-    inferrer.inferExpression(rhs, const UnknownType(), false);
-    _replaceWithDesugared();
-    inferredType = const DynamicType();
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitIllegalAssignmentJudgment(this, typeContext);
   }
 }
 
@@ -1288,10 +871,9 @@
 /// `a[b]`.
 class IndexAssignmentJudgment extends ComplexAssignmentJudgmentWithReceiver {
   /// In an assignment to an index expression, the index expression.
-  final ExpressionJudgment index;
+  final Expression index;
 
-  IndexAssignmentJudgment(
-      ExpressionJudgment receiver, this.index, ExpressionJudgment rhs,
+  IndexAssignmentJudgment(Expression receiver, this.index, Expression rhs,
       {bool isSuper: false})
       : super(receiver, rhs, isSuper);
 
@@ -1315,63 +897,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var receiverType = _inferReceiver(inferrer);
-    var writeMember = inferrer.findMethodInvocationMember(receiverType, write);
-    // To replicate analyzer behavior, we base type inference on the write
-    // member.  TODO(paulberry): would it be better to use the read member
-    // when doing compound assignment?
-    var calleeType = inferrer.getCalleeFunctionType(
-        inferrer.getCalleeType(writeMember, receiverType), false);
-    DartType expectedIndexTypeForWrite;
-    DartType indexContext = const UnknownType();
-    DartType writeContext = const UnknownType();
-    if (calleeType.positionalParameters.length >= 2) {
-      // TODO(paulberry): we ought to get a context for the index expression
-      // from the index formal parameter, but analyzer doesn't so for now we
-      // replicate its behavior.
-      expectedIndexTypeForWrite = calleeType.positionalParameters[0];
-      writeContext = calleeType.positionalParameters[1];
-    }
-    inferrer.inferExpression(index, indexContext, true);
-    var indexType = index.inferredType;
-    _storeLetType(inferrer, index, indexType);
-    if (writeContext is! UnknownType) {
-      inferrer.ensureAssignable(
-          expectedIndexTypeForWrite,
-          indexType,
-          _getInvocationArguments(inferrer, write).positional[0],
-          write.fileOffset);
-    }
-    InvocationExpression read = this.read;
-    DartType readType;
-    if (read != null) {
-      var readMember =
-          inferrer.findMethodInvocationMember(receiverType, read, silent: true);
-      var calleeFunctionType = inferrer.getCalleeFunctionType(
-          inferrer.getCalleeType(readMember, receiverType), false);
-      inferrer.ensureAssignable(
-          getPositionalParameterType(calleeFunctionType, 0),
-          indexType,
-          _getInvocationArguments(inferrer, read).positional[0],
-          read.fileOffset);
-      readType = calleeFunctionType.returnType;
-      var desugaredInvocation = read is MethodInvocation ? read : null;
-      var checkKind = inferrer.preCheckInvocationContravariance(receiver,
-          receiverType, readMember, desugaredInvocation, read.arguments, read);
-      var replacedRead = inferrer.handleInvocationContravariance(
-          checkKind,
-          desugaredInvocation,
-          read.arguments,
-          read,
-          readType,
-          calleeFunctionType,
-          read.fileOffset);
-      _storeLetType(inferrer, replacedRead, readType);
-    }
-    _inferRhs(inferrer, readType, writeContext);
-    _replaceWithDesugared();
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitIndexAssignmentJudgment(this, typeContext);
   }
 }
 
@@ -1380,7 +907,7 @@
 abstract class InitializerJudgment implements Initializer {
   /// Performs type inference for whatever concrete type of [InitializerJudgment]
   /// this is.
-  void infer(ShadowTypeInferrer inferrer);
+  void acceptInference(InferenceVistor visitor);
 }
 
 Expression checkWebIntLiteralsErrorIfUnexact(
@@ -1421,25 +948,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (inferrer.isDoubleContext(typeContext)) {
-      double doubleValue = asDouble();
-      if (doubleValue != null) {
-        parent.replaceChild(
-            this, DoubleLiteral(doubleValue)..fileOffset = fileOffset);
-        inferredType = inferrer.coreTypes.doubleClass.rawType;
-        return null;
-      }
-    }
-    Expression error =
-        checkWebIntLiteralsErrorIfUnexact(inferrer, value, literal, fileOffset);
-    if (error != null) {
-      parent.replaceChild(this, error);
-      inferredType = const BottomType();
-      return null;
-    }
-    inferredType = inferrer.coreTypes.intClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitIntJudgment(this, typeContext);
   }
 }
 
@@ -1468,37 +978,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (inferrer.isDoubleContext(typeContext)) {
-      double doubleValue = asDouble();
-      if (doubleValue != null) {
-        parent.replaceChild(
-            this, DoubleLiteral(doubleValue)..fileOffset = fileOffset);
-        inferredType = inferrer.coreTypes.doubleClass.rawType;
-        return null;
-      }
-    }
-
-    int intValue = asInt64();
-    if (intValue == null) {
-      Expression replacement = inferrer.helper.buildProblem(
-          templateIntegerLiteralIsOutOfRange.withArguments(literal),
-          fileOffset,
-          literal.length);
-      parent.replaceChild(this, replacement);
-      inferredType = const BottomType();
-      return null;
-    }
-    Expression error = checkWebIntLiteralsErrorIfUnexact(
-        inferrer, intValue, literal, fileOffset);
-    if (error != null) {
-      parent.replaceChild(this, error);
-      inferredType = const BottomType();
-      return null;
-    }
-    parent.replaceChild(this, IntLiteral(intValue)..fileOffset = fileOffset);
-    inferredType = inferrer.coreTypes.intClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitShadowLargeIntLiteral(this, typeContext);
   }
 }
 
@@ -1508,8 +989,8 @@
   ShadowInvalidInitializer(VariableDeclaration variable) : super(variable);
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferExpression(variable.initializer, const UnknownType(), false);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitShadowInvalidInitializer(this);
   }
 }
 
@@ -1525,47 +1006,11 @@
     value?.parent = this;
   }
 
-  ExpressionJudgment get judgment => value;
+  Expression get judgment => value;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferExpression(value, field.type, false);
-  }
-}
-
-/// Concrete shadow object representing a non-inverted "is" test in kernel form.
-class IsJudgment extends IsExpression implements ExpressionJudgment {
-  DartType inferredType;
-
-  ExpressionJudgment get judgment => operand;
-
-  IsJudgment(Expression operand, DartType type) : super(operand, type);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferrer.inferExpression(judgment, const UnknownType(), false);
-    inferredType = inferrer.coreTypes.boolClass.rawType;
-    return null;
-  }
-}
-
-/// Concrete shadow object representing an inverted "is" test in kernel form.
-class IsNotJudgment extends Not implements ExpressionJudgment {
-  DartType inferredType;
-
-  @override
-  IsExpression get operand => super.operand;
-
-  ExpressionJudgment get judgment => operand.operand;
-
-  IsNotJudgment(Expression operand, DartType type, int charOffset)
-      : super(new IsExpression(operand, type)..fileOffset = charOffset);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferrer.inferExpression(judgment, const UnknownType(), false);
-    inferredType = inferrer.coreTypes.boolClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitShadowInvalidFieldInitializer(this);
   }
 }
 
@@ -1577,8 +1022,8 @@
   StatementJudgment get judgment => body;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferStatement(judgment);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitLabeledStatementJudgment(this);
   }
 }
 
@@ -1598,89 +1043,8 @@
             isConst: isConst);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var listClass = inferrer.coreTypes.listClass;
-    var listType = listClass.thisType;
-    List<DartType> inferredTypes;
-    DartType inferredTypeArgument;
-    List<DartType> formalTypes;
-    List<DartType> actualTypes;
-    bool inferenceNeeded = _declaredTypeArgument == null && inferrer.strongMode;
-    bool typeChecksNeeded = !inferrer.isTopLevel;
-    if (inferenceNeeded || typeChecksNeeded) {
-      formalTypes = [];
-      actualTypes = [];
-    }
-    if (inferenceNeeded) {
-      inferredTypes = [const UnknownType()];
-      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(listType,
-          listClass.typeParameters, null, null, typeContext, inferredTypes,
-          isConst: isConst);
-      inferredTypeArgument = inferredTypes[0];
-    } else {
-      inferredTypeArgument = _declaredTypeArgument ?? const DynamicType();
-    }
-    if (inferenceNeeded || typeChecksNeeded) {
-      for (int i = 0; i < judgments.length; ++i) {
-        ExpressionJudgment judgment = judgments[i];
-        inferrer.inferExpression(
-            judgment, inferredTypeArgument, inferenceNeeded || typeChecksNeeded,
-            isVoidAllowed: true);
-        if (inferenceNeeded) {
-          formalTypes.add(listType.typeArguments[0]);
-        }
-        actualTypes.add(judgment.inferredType);
-      }
-    }
-    if (inferenceNeeded) {
-      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(
-          listType,
-          listClass.typeParameters,
-          formalTypes,
-          actualTypes,
-          typeContext,
-          inferredTypes);
-      inferredTypeArgument = inferredTypes[0];
-      inferrer.instrumentation?.record(inferrer.uri, fileOffset, 'typeArgs',
-          new InstrumentationValueForTypeArgs([inferredTypeArgument]));
-      typeArgument = inferredTypeArgument;
-    }
-    if (typeChecksNeeded) {
-      for (int i = 0; i < judgments.length; i++) {
-        inferrer.ensureAssignable(
-            typeArgument, actualTypes[i], judgments[i], judgments[i].fileOffset,
-            isVoidAllowed: typeArgument is VoidType);
-      }
-    }
-    inferredType = new InterfaceType(listClass, [inferredTypeArgument]);
-    return null;
-  }
-}
-
-/// Shadow object for [LogicalExpression].
-class LogicalJudgment extends LogicalExpression implements ExpressionJudgment {
-  DartType inferredType;
-
-  LogicalJudgment(Expression left, String operator, Expression right)
-      : super(left, operator, right);
-
-  ExpressionJudgment get leftJudgment => left;
-
-  ExpressionJudgment get rightJudgment => right;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var boolType = inferrer.coreTypes.boolClass.rawType;
-    var leftJudgment = this.leftJudgment;
-    var rightJudgment = this.rightJudgment;
-    inferrer.inferExpression(leftJudgment, boolType, !inferrer.isTopLevel);
-    inferrer.inferExpression(rightJudgment, boolType, !inferrer.isTopLevel);
-    inferrer.ensureAssignable(
-        boolType, leftJudgment.inferredType, left, left.fileOffset);
-    inferrer.ensureAssignable(
-        boolType, rightJudgment.inferredType, right, right.fileOffset);
-    inferredType = boolType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitListLiteralJudgment(this, typeContext);
   }
 }
 
@@ -1691,26 +1055,11 @@
   DartType inferredKeyType;
   DartType inferredValueType;
 
-  ExpressionJudgment get keyJudgment => key;
+  Expression get keyJudgment => key;
 
-  ExpressionJudgment get valueJudgment => value;
+  Expression get valueJudgment => value;
 
   MapEntryJudgment(Expression key, Expression value) : super(key, value);
-
-  MapEntry infer(ShadowTypeInferrer inferrer, DartType keyTypeContext,
-      DartType valueTypeContext) {
-    ExpressionJudgment keyJudgment = this.keyJudgment;
-    inferrer.inferExpression(keyJudgment, keyTypeContext, true,
-        isVoidAllowed: true);
-    inferredKeyType = keyJudgment.inferredType;
-
-    ExpressionJudgment valueJudgment = this.valueJudgment;
-    inferrer.inferExpression(valueJudgment, valueTypeContext, true,
-        isVoidAllowed: true);
-    inferredValueType = valueJudgment.inferredType;
-
-    return null;
-  }
 }
 
 /// Type inference derivation for [MapLiteral].
@@ -1732,81 +1081,8 @@
             isConst: isConst);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var mapClass = inferrer.coreTypes.mapClass;
-    var mapType = mapClass.thisType;
-    List<DartType> inferredTypes;
-    DartType inferredKeyType;
-    DartType inferredValueType;
-    List<DartType> formalTypes;
-    List<DartType> actualTypes;
-    assert((_declaredKeyType == null) == (_declaredValueType == null));
-    bool inferenceNeeded = _declaredKeyType == null && inferrer.strongMode;
-    bool typeChecksNeeded = !inferrer.isTopLevel;
-    if (inferenceNeeded || typeChecksNeeded) {
-      formalTypes = [];
-      actualTypes = [];
-    }
-    if (inferenceNeeded) {
-      inferredTypes = [const UnknownType(), const UnknownType()];
-      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(mapType,
-          mapClass.typeParameters, null, null, typeContext, inferredTypes,
-          isConst: isConst);
-      inferredKeyType = inferredTypes[0];
-      inferredValueType = inferredTypes[1];
-    } else {
-      inferredKeyType = _declaredKeyType ?? const DynamicType();
-      inferredValueType = _declaredValueType ?? const DynamicType();
-    }
-    List<ExpressionJudgment> cachedKeyJudgments =
-        judgments.map((j) => (j as MapEntryJudgment).keyJudgment).toList();
-    List<ExpressionJudgment> cachedValueJudgments =
-        judgments.map((j) => (j as MapEntryJudgment).valueJudgment).toList();
-    if (inferenceNeeded || typeChecksNeeded) {
-      for (MapEntryJudgment judgment in judgments) {
-        judgment.infer(inferrer, inferredKeyType, inferredValueType);
-        if (inferenceNeeded) {
-          formalTypes.addAll(mapType.typeArguments);
-        }
-        actualTypes.add(judgment.inferredKeyType);
-        actualTypes.add(judgment.inferredValueType);
-      }
-    }
-    if (inferenceNeeded) {
-      inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(
-          mapType,
-          mapClass.typeParameters,
-          formalTypes,
-          actualTypes,
-          typeContext,
-          inferredTypes);
-      inferredKeyType = inferredTypes[0];
-      inferredValueType = inferredTypes[1];
-      inferrer.instrumentation?.record(
-          inferrer.uri,
-          fileOffset,
-          'typeArgs',
-          new InstrumentationValueForTypeArgs(
-              [inferredKeyType, inferredValueType]));
-      keyType = inferredKeyType;
-      valueType = inferredValueType;
-    }
-    if (typeChecksNeeded) {
-      for (int i = 0; i < judgments.length; ++i) {
-        ExpressionJudgment keyJudgment = cachedKeyJudgments[i];
-        inferrer.ensureAssignable(
-            keyType, actualTypes[2 * i], keyJudgment, keyJudgment.fileOffset,
-            isVoidAllowed: keyType is VoidType);
-
-        ExpressionJudgment valueJudgment = cachedValueJudgments[i];
-        inferrer.ensureAssignable(valueType, actualTypes[2 * i + 1],
-            valueJudgment, valueJudgment.fileOffset,
-            isVoidAllowed: valueType is VoidType);
-      }
-    }
-    inferredType =
-        new InterfaceType(mapClass, [inferredKeyType, inferredValueType]);
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitMapLiteralJudgment(this, typeContext);
   }
 }
 
@@ -1834,7 +1110,6 @@
 /// Shadow object for [MethodInvocation].
 class MethodInvocationJudgment extends MethodInvocation
     implements ExpressionJudgment {
-  final kernel.Expression desugaredError;
   DartType inferredType;
 
   /// Indicates whether this method invocation is a call to a `call` method
@@ -1843,92 +1118,15 @@
 
   MethodInvocationJudgment(
       Expression receiver, Name name, ArgumentsJudgment arguments,
-      {this.desugaredError, bool isImplicitCall: false, Member interfaceTarget})
+      {bool isImplicitCall: false, Member interfaceTarget})
       : _isImplicitCall = isImplicitCall,
         super(receiver, name, arguments, interfaceTarget);
 
   ArgumentsJudgment get argumentJudgments => arguments;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (name.name == 'unary-' &&
-        arguments.types.isEmpty &&
-        arguments.positional.isEmpty &&
-        arguments.named.isEmpty) {
-      // Replace integer literals in a double context with the corresponding
-      // double literal if it's exact.  For double literals, the negation is
-      // folded away.  In any non-double context, or if there is no exact
-      // double value, then the corresponding integer literal is left.  The
-      // negation is not folded away so that platforms with web literals can
-      // distinguish between (non-negated) 0x8000000000000000 represented as
-      // integer literal -9223372036854775808 which should be a positive number,
-      // and negated 9223372036854775808 represented as
-      // -9223372036854775808.unary-() which should be a negative number.
-      if (receiver is IntJudgment) {
-        IntJudgment receiver = this.receiver;
-        if (inferrer.isDoubleContext(typeContext)) {
-          double doubleValue = receiver.asDouble(negated: true);
-          if (doubleValue != null) {
-            parent.replaceChild(
-                this, DoubleLiteral(doubleValue)..fileOffset = fileOffset);
-            inferredType = inferrer.coreTypes.doubleClass.rawType;
-            return null;
-          }
-        }
-        Expression error = checkWebIntLiteralsErrorIfUnexact(
-            inferrer, receiver.value, receiver.literal, receiver.fileOffset);
-        if (error != null) {
-          parent.replaceChild(this, error);
-          inferredType = const BottomType();
-          return null;
-        }
-      } else if (receiver is ShadowLargeIntLiteral) {
-        ShadowLargeIntLiteral receiver = this.receiver;
-        if (!receiver.isParenthesized) {
-          if (inferrer.isDoubleContext(typeContext)) {
-            double doubleValue = receiver.asDouble(negated: true);
-            if (doubleValue != null) {
-              parent.replaceChild(
-                  this, DoubleLiteral(doubleValue)..fileOffset = fileOffset);
-              inferredType = inferrer.coreTypes.doubleClass.rawType;
-              return null;
-            }
-          }
-          int intValue = receiver.asInt64(negated: true);
-          if (intValue == null) {
-            Expression error = inferrer.helper.buildProblem(
-                templateIntegerLiteralIsOutOfRange
-                    .withArguments(receiver.literal),
-                receiver.fileOffset,
-                receiver.literal.length);
-            parent.replaceChild(this, error);
-            inferredType = const BottomType();
-            return null;
-          }
-          if (intValue != null) {
-            Expression error = checkWebIntLiteralsErrorIfUnexact(
-                inferrer, intValue, receiver.literal, receiver.fileOffset);
-            if (error != null) {
-              parent.replaceChild(this, error);
-              inferredType = const BottomType();
-              return null;
-            }
-            this.receiver = IntLiteral(-intValue)
-              ..fileOffset = this.receiver.fileOffset
-              ..parent = this;
-          }
-        }
-      }
-    }
-    var inferenceResult = inferrer.inferMethodInvocation(
-        this, receiver, fileOffset, _isImplicitCall, typeContext,
-        desugaredInvocation: this);
-    inferredType = inferenceResult.type;
-    if (desugaredError != null) {
-      parent.replaceChild(this, desugaredError);
-      parent = null;
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitMethodInvocationJudgment(this, typeContext);
   }
 }
 
@@ -1951,35 +1149,8 @@
   VariableDeclarationJudgment get variableJudgment => variable;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    ExpressionJudgment initializer = variableJudgment.initializer;
-    inferrer.inferExpression(initializer, typeContext, true);
-    inferredType = initializer.inferredType;
-    if (inferrer.strongMode) variable.type = inferredType;
-    return null;
-  }
-}
-
-/// Shadow object for [Not].
-class NotJudgment extends Not implements ExpressionJudgment {
-  final bool isSynthetic;
-
-  DartType inferredType;
-
-  NotJudgment(this.isSynthetic, ExpressionJudgment operand) : super(operand);
-
-  ExpressionJudgment get judgment => operand;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var judgment = this.judgment;
-    // First infer the receiver so we can look up the method that was invoked.
-    var boolType = inferrer.coreTypes.boolClass.rawType;
-    inferrer.inferExpression(judgment, boolType, !inferrer.isTopLevel);
-    inferrer.ensureAssignable(
-        boolType, judgment.inferredType, operand, fileOffset);
-    inferredType = boolType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitNamedFunctionExpressionJudgment(this, typeContext);
   }
 }
 
@@ -1991,12 +1162,10 @@
 ///     let v = a in v == null ? null : v.b(...)
 class NullAwareMethodInvocationJudgment extends Let
     implements ExpressionJudgment {
-  final kernel.Expression desugaredError;
   DartType inferredType;
 
   NullAwareMethodInvocationJudgment(
-      VariableDeclaration variable, Expression body,
-      {this.desugaredError})
+      VariableDeclaration variable, Expression body)
       : super(variable, body);
 
   @override
@@ -2005,15 +1174,8 @@
   MethodInvocation get _desugaredInvocation => body.otherwise;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var inferenceResult = inferrer.inferMethodInvocation(
-        this, variable.initializer, fileOffset, false, typeContext,
-        receiverVariable: variable, desugaredInvocation: _desugaredInvocation);
-    inferredType = inferenceResult.type;
-    if (inferrer.strongMode) {
-      body.staticType = inferredType;
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitNullAwareMethodInvocationJudgment(this, typeContext);
   }
 }
 
@@ -2035,30 +1197,11 @@
 
   PropertyGet get _desugaredGet => body.otherwise;
 
-  ExpressionJudgment get receiverJudgment => variable.initializer;
+  Expression get receiverJudgment => variable.initializer;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferrer.inferPropertyGet(
-        this, receiverJudgment, fileOffset, false, typeContext,
-        receiverVariable: variable, desugaredGet: _desugaredGet);
-    if (inferrer.strongMode) {
-      body.staticType = inferredType;
-    }
-    return null;
-  }
-}
-
-/// Concrete shadow object representing a null literal in kernel form.
-class NullJudgment extends NullLiteral implements ExpressionJudgment {
-  DartType inferredType;
-
-  NullJudgment();
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.coreTypes.nullClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitNullAwarePropertyGetJudgment(this, typeContext);
   }
 }
 
@@ -2099,8 +1242,7 @@
   /// expression that guards the access; otherwise `null`.
   ConditionalExpression nullAwareGuard;
 
-  PropertyAssignmentJudgment(
-      ExpressionJudgment receiver, ExpressionJudgment rhs,
+  PropertyAssignmentJudgment(Expression receiver, Expression rhs,
       {bool isSuper: false})
       : super(receiver, rhs, isSuper);
 
@@ -2125,56 +1267,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var receiverType = _inferReceiver(inferrer);
-
-    DartType readType;
-    if (read != null) {
-      var readMember =
-          inferrer.findPropertyGetMember(receiverType, read, silent: true);
-      readType = inferrer.getCalleeType(readMember, receiverType);
-      inferrer.handlePropertyGetContravariance(receiver, readMember,
-          read is PropertyGet ? read : null, read, readType, read.fileOffset);
-      _storeLetType(inferrer, read, readType);
-    }
-    Member writeMember;
-    if (write != null) {
-      writeMember = _handleWriteContravariance(inferrer, receiverType);
-    }
-    // To replicate analyzer behavior, we base type inference on the write
-    // member.  TODO(paulberry): would it be better to use the read member when
-    // doing compound assignment?
-    var writeContext = inferrer.getSetterType(writeMember, receiverType);
-    _inferRhs(inferrer, readType, writeContext);
-    if (inferrer.strongMode) nullAwareGuard?.staticType = inferredType;
-    _replaceWithDesugared();
-    return null;
-  }
-}
-
-/// Shadow object for [PropertyGet].
-class PropertyGetJudgment extends PropertyGet implements ExpressionJudgment {
-  DartType inferredType;
-
-  final bool forSyntheticToken;
-
-  PropertyGetJudgment(Expression receiver, Name name,
-      {Member interfaceTarget, this.forSyntheticToken = false})
-      : super(receiver, name, interfaceTarget);
-
-  PropertyGetJudgment.byReference(
-      Expression receiver, Name name, Reference interfaceTargetReference)
-      : forSyntheticToken = false,
-        super.byReference(receiver, name, interfaceTargetReference);
-
-  ExpressionJudgment get receiverJudgment => receiver;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferrer.inferPropertyGet(
-        this, receiverJudgment, fileOffset, forSyntheticToken, typeContext,
-        desugaredGet: this);
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitPropertyAssignmentJudgment(this, typeContext);
   }
 }
 
@@ -2189,38 +1283,8 @@
   ArgumentsJudgment get argumentJudgments => arguments;
 
   @override
-  infer(ShadowTypeInferrer inferrer) {
-    List<TypeParameter> classTypeParameters =
-        target.enclosingClass.typeParameters;
-    List<DartType> typeArguments =
-        new List<DartType>(classTypeParameters.length);
-    for (int i = 0; i < typeArguments.length; i++) {
-      typeArguments[i] = new TypeParameterType(classTypeParameters[i]);
-    }
-    ArgumentsJudgment.setNonInferrableArgumentTypes(arguments, typeArguments);
-    inferrer.inferInvocation(null, fileOffset, target.function.functionType,
-        target.enclosingClass.thisType, argumentJudgments,
-        skipTypeArgumentInference: true);
-    ArgumentsJudgment.removeNonInferrableArgumentTypes(arguments);
-  }
-}
-
-/// Shadow object for [Rethrow].
-class RethrowJudgment extends Rethrow implements ExpressionJudgment {
-  final kernel.Expression desugaredError;
-
-  DartType inferredType;
-
-  RethrowJudgment(this.desugaredError);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = const BottomType();
-    if (desugaredError != null) {
-      parent.replaceChild(this, desugaredError);
-      parent = null;
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitRedirectingInitializerJudgment(this);
   }
 }
 
@@ -2231,25 +1295,11 @@
   ReturnJudgment(this.returnKeywordLexeme, [Expression expression])
       : super(expression);
 
-  ExpressionJudgment get judgment => expression;
+  Expression get judgment => expression;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var judgment = this.judgment;
-    var closureContext = inferrer.closureContext;
-    DartType typeContext = !closureContext.isGenerator
-        ? closureContext.returnOrYieldContext
-        : const UnknownType();
-    DartType inferredType;
-    if (expression != null) {
-      inferrer.inferExpression(judgment, typeContext, true,
-          isVoidAllowed: true);
-      inferredType = judgment.inferredType;
-    } else {
-      inferredType = inferrer.coreTypes.nullClass.rawType;
-    }
-    closureContext.handleReturn(inferrer, this, inferredType,
-        !identical(returnKeywordLexeme, "return"));
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitReturnJudgment(this);
   }
 }
 
@@ -2258,12 +1308,12 @@
 abstract class StatementJudgment extends Statement {
   /// Calls back to [inferrer] to perform type inference for whatever concrete
   /// type of [StatementJudgment] this is.
-  void infer(ShadowTypeInferrer inferrer);
+  void acceptInference(InferenceVistor visitor);
 }
 
 /// Concrete shadow object representing an assignment to a static variable.
 class StaticAssignmentJudgment extends ComplexAssignmentJudgment {
-  StaticAssignmentJudgment(ExpressionJudgment rhs) : super(rhs);
+  StaticAssignmentJudgment(Expression rhs) : super(rhs);
 
   @override
   DartType _getWriteType(ShadowTypeInferrer inferrer) {
@@ -2272,112 +1322,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    DartType readType = const DynamicType(); // Only used in error recovery
-    var read = this.read;
-    if (read is StaticGet) {
-      readType = read.target.getterType;
-      _storeLetType(inferrer, read, readType);
-    }
-    Member writeMember;
-    DartType writeContext = const UnknownType();
-    var write = this.write;
-    if (write is StaticSet) {
-      writeContext = write.target.setterType;
-      writeMember = write.target;
-      if (writeMember is ShadowField && writeMember.inferenceNode != null) {
-        writeMember.inferenceNode.resolve();
-        writeMember.inferenceNode = null;
-      }
-    }
-    _inferRhs(inferrer, readType, writeContext);
-    _replaceWithDesugared();
-    return null;
-  }
-}
-
-/// Concrete shadow object representing a read of a static variable in kernel
-/// form.
-class StaticGetJudgment extends StaticGet implements ExpressionJudgment {
-  DartType inferredType;
-
-  StaticGetJudgment(Member target) : super(target);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var target = this.target;
-    if (target is ShadowField && target.inferenceNode != null) {
-      target.inferenceNode.resolve();
-      target.inferenceNode = null;
-    }
-    var type = target.getterType;
-    if (target is Procedure && target.kind == ProcedureKind.Method) {
-      type = inferrer.instantiateTearOff(type, typeContext, this);
-    }
-    inferredType = type;
-    return null;
-  }
-}
-
-/// Shadow object for [StaticInvocation].
-class StaticInvocationJudgment extends StaticInvocation
-    implements ExpressionJudgment {
-  final kernel.Expression desugaredError;
-  DartType inferredType;
-
-  StaticInvocationJudgment(Procedure target, ArgumentsJudgment arguments,
-      {this.desugaredError, bool isConst: false})
-      : super(target, arguments, isConst: isConst);
-
-  ArgumentsJudgment get argumentJudgments => arguments;
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    FunctionType calleeType = target != null
-        ? target.function.functionType
-        : new FunctionType([], const DynamicType());
-    var inferenceResult = inferrer.inferInvocation(typeContext, fileOffset,
-        calleeType, calleeType.returnType, argumentJudgments);
-    inferredType = inferenceResult.type;
-    if (desugaredError != null) {
-      parent.replaceChild(this, desugaredError);
-      parent = null;
-    }
-    return null;
-  }
-}
-
-/// Concrete shadow object representing a string concatenation in kernel form.
-class StringConcatenationJudgment extends StringConcatenation
-    implements ExpressionJudgment {
-  DartType inferredType;
-
-  StringConcatenationJudgment(List<Expression> expressions)
-      : super(expressions);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (!inferrer.isTopLevel) {
-      for (var expression in expressions) {
-        inferrer.inferExpression(expression, const UnknownType(), false);
-      }
-    }
-    inferredType = inferrer.coreTypes.stringClass.rawType;
-    return null;
-  }
-}
-
-/// Type inference derivation for [StringLiteral].
-class StringLiteralJudgment extends StringLiteral
-    implements ExpressionJudgment {
-  DartType inferredType;
-
-  StringLiteralJudgment(String value) : super(value);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.coreTypes.stringClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitStaticAssignmentJudgment(this, typeContext);
   }
 }
 
@@ -2390,76 +1336,39 @@
   ArgumentsJudgment get argumentJudgments => arguments;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var substitution = Substitution.fromSupertype(inferrer.classHierarchy
-        .getClassAsInstanceOf(
-            inferrer.thisType.classNode, target.enclosingClass));
-    inferrer.inferInvocation(
-        null,
-        fileOffset,
-        substitution
-            .substituteType(target.function.functionType.withoutTypeParameters),
-        inferrer.thisType,
-        argumentJudgments,
-        skipTypeArgumentInference: true);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitSuperInitializerJudgment(this);
   }
 }
 
 /// Shadow object for [SuperMethodInvocation].
 class SuperMethodInvocationJudgment extends SuperMethodInvocation
     implements ExpressionJudgment {
-  final kernel.Expression desugaredError;
   DartType inferredType;
 
   SuperMethodInvocationJudgment(Name name, ArgumentsJudgment arguments,
-      {this.desugaredError, Procedure interfaceTarget})
+      {Procedure interfaceTarget})
       : super(name, arguments, interfaceTarget);
 
   ArgumentsJudgment get argumentJudgments => arguments;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (interfaceTarget != null) {
-      inferrer.instrumentation?.record(inferrer.uri, fileOffset, 'target',
-          new InstrumentationValueForMember(interfaceTarget));
-    }
-    var inferenceResult = inferrer.inferMethodInvocation(
-        this, null, fileOffset, false, typeContext,
-        interfaceMember: interfaceTarget,
-        methodName: name,
-        arguments: arguments);
-    inferredType = inferenceResult.type;
-    if (desugaredError != null) {
-      parent.replaceChild(this, desugaredError);
-      parent = null;
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitSuperMethodInvocationJudgment(this, typeContext);
   }
 }
 
 /// Shadow object for [SuperPropertyGet].
 class SuperPropertyGetJudgment extends SuperPropertyGet
     implements ExpressionJudgment {
-  final kernel.Expression desugaredError;
   DartType inferredType;
 
-  SuperPropertyGetJudgment(Name name,
-      {this.desugaredError, Member interfaceTarget})
+  SuperPropertyGetJudgment(Name name, {Member interfaceTarget})
       : super(name, interfaceTarget);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    if (interfaceTarget != null) {
-      inferrer.instrumentation?.record(inferrer.uri, fileOffset, 'target',
-          new InstrumentationValueForMember(interfaceTarget));
-    }
-    inferrer.inferPropertyGet(this, null, fileOffset, false, typeContext,
-        interfaceMember: interfaceTarget, propertyName: name);
-    if (desugaredError != null) {
-      parent.replaceChild(this, desugaredError);
-      parent = null;
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitSuperPropertyGetJudgment(this, typeContext);
   }
 }
 
@@ -2474,7 +1383,7 @@
 
   SwitchCaseJudgment.empty() : super.empty();
 
-  List<ExpressionJudgment> get expressionJudgments => expressions.cast();
+  List<Expression> get expressionJudgments => expressions.cast();
 
   StatementJudgment get bodyJudgment => body;
 }
@@ -2485,36 +1394,13 @@
   SwitchStatementJudgment(Expression expression, List<SwitchCase> cases)
       : super(expression, cases);
 
-  ExpressionJudgment get expressionJudgment => expression;
+  Expression get expressionJudgment => expression;
 
   List<SwitchCaseJudgment> get caseJudgments => cases.cast();
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var expressionJudgment = this.expressionJudgment;
-    inferrer.inferExpression(expressionJudgment, const UnknownType(), true);
-    var expressionType = expressionJudgment.inferredType;
-
-    for (var switchCase in caseJudgments) {
-      for (var caseExpression in switchCase.expressionJudgments) {
-        DartType caseExpressionType =
-            inferrer.inferExpression(caseExpression, expressionType, true);
-
-        // Check whether the expression type is assignable to the case expression type.
-        if (!inferrer.isAssignable(expressionType, caseExpressionType)) {
-          inferrer.helper.addProblem(
-              templateSwitchExpressionNotAssignable.withArguments(
-                  expressionType, caseExpressionType),
-              caseExpression.fileOffset,
-              noLength,
-              context: [
-                messageSwitchExpressionNotAssignableCause.withLocation(
-                    inferrer.uri, expressionJudgment.fileOffset, noLength)
-              ]);
-        }
-      }
-      inferrer.inferStatement(switchCase.bodyJudgment);
-    }
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitSwitchStatementJudgment(this);
   }
 }
 
@@ -2526,9 +1412,8 @@
   SymbolLiteralJudgment(String value) : super(value);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.coreTypes.symbolClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitSymbolLiteralJudgment(this, typeContext);
   }
 }
 
@@ -2547,40 +1432,22 @@
   ArgumentsJudgment get argumentJudgments => arguments;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    FunctionType calleeType;
-    DartType returnType;
-    if (constructor != null) {
-      calleeType = constructor.function.functionType;
-      returnType = computeConstructorReturnType(constructor);
-    } else {
-      calleeType = new FunctionType([], const DynamicType());
-      returnType = const DynamicType();
-    }
-    ExpressionInferenceResult inferenceResult = inferrer.inferInvocation(
-        typeContext, fileOffset, calleeType, returnType, argumentJudgments);
-    this.inferredType = inferenceResult.type;
-    return super.infer(inferrer, typeContext);
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitInvalidConstructorInvocationJudgment(this, typeContext);
   }
 }
 
 /// Synthetic judgment class representing an attempt to assign to the
 /// [expression] which is not assignable.
 class InvalidWriteJudgment extends SyntheticExpressionJudgment {
-  final ExpressionJudgment expression;
+  final Expression expression;
 
   InvalidWriteJudgment(kernel.Expression desugared, this.expression)
       : super(desugared);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    // When a compound assignment, the expression is already wrapping in
-    // VariableDeclaration in _makeRead(). Otherwise, temporary associate
-    // the expression with this node.
-    expression.parent ??= this;
-
-    inferrer.inferExpression(expression, const UnknownType(), false);
-    return super.infer(inferrer, typeContext);
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitInvalidWriteJudgment(this, typeContext);
   }
 }
 
@@ -2605,10 +1472,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    _replaceWithDesugared();
-    inferredType = const DynamicType();
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitSyntheticExpressionJudgment(this, typeContext);
   }
 
   /// Removes this expression from the expression tree, replacing it with
@@ -2650,63 +1515,6 @@
   }
 }
 
-class ThisJudgment extends ThisExpression implements ExpressionJudgment {
-  DartType inferredType;
-
-  ThisJudgment();
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.thisType ?? const DynamicType();
-    return null;
-  }
-}
-
-class ThrowJudgment extends Throw implements ExpressionJudgment {
-  final kernel.Expression desugaredError;
-
-  DartType inferredType;
-
-  ExpressionJudgment get judgment => expression;
-
-  ThrowJudgment(Expression expression, {this.desugaredError})
-      : super(expression);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferrer.inferExpression(judgment, const UnknownType(), false);
-    inferredType = const BottomType();
-    if (desugaredError != null) {
-      parent.replaceChild(this, desugaredError);
-      parent = null;
-    }
-    return null;
-  }
-}
-
-/// Synthetic judgment class representing a statement that is not allowed at
-/// the location it was found, and should be replaced with an error.
-class InvalidStatementJudgment extends ExpressionStatement
-    implements StatementJudgment {
-  final kernel.Expression desugaredError;
-  final StatementJudgment statement;
-
-  InvalidStatementJudgment(this.desugaredError, this.statement)
-      : super(new NullLiteral());
-
-  @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferStatement(statement);
-
-    // If this judgment is a part of a Block, replace it there.
-    // Otherwise, the parent would be a FunctionNode, but not yet.
-    if (parent is Block) {
-      parent.replaceChild(this, new ExpressionStatement(desugaredError));
-      parent = null;
-    }
-  }
-}
-
 /// Concrete shadow object representing a catch clause.
 class CatchJudgment extends Catch {
   CatchJudgment(VariableDeclaration exception, Statement body,
@@ -2718,10 +1526,6 @@
   VariableDeclarationJudgment get stackTraceJudgment => stackTrace;
 
   StatementJudgment get bodyJudgment => body;
-
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferStatement(bodyJudgment);
-  }
 }
 
 /// Concrete shadow object representing a try-catch block in kernel form.
@@ -2733,11 +1537,8 @@
   List<CatchJudgment> get catchJudgments => catches.cast();
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferStatement(bodyJudgment);
-    for (var catch_ in catchJudgments) {
-      catch_.infer(inferrer);
-    }
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitTryCatchJudgment(this);
   }
 }
 
@@ -2753,15 +1554,8 @@
   StatementJudgment get finalizerJudgment => finalizer;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    inferrer.inferStatement(body);
-    if (catchJudgments != null) {
-      for (var catch_ in catchJudgments) {
-        catch_.infer(inferrer);
-      }
-      body = new TryCatch(body, catches)..parent = this;
-    }
-    inferrer.inferStatement(finalizerJudgment);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitTryFinallyJudgment(this);
   }
 }
 
@@ -2777,15 +1571,15 @@
 
   @override
   ShadowTypeInferrer createLocalTypeInferrer(
-      Uri uri, InterfaceType thisType, SourceLibraryBuilder library) {
+      Uri uri, InterfaceType thisType, KernelLibraryBuilder library) {
     return new ShadowTypeInferrer._(this, uri, false, thisType, library);
   }
 
   @override
   ShadowTypeInferrer createTopLevelTypeInferrer(
-      InterfaceType thisType, ShadowField field) {
+      InterfaceType thisType, ShadowField field, KernelLibraryBuilder library) {
     return field._typeInferrer =
-        new ShadowTypeInferrer._(this, field.fileUri, true, thisType, null);
+        new ShadowTypeInferrer._(this, field.fileUri, true, thisType, library);
   }
 
   @override
@@ -2801,7 +1595,7 @@
   final typePromoter;
 
   ShadowTypeInferrer._(ShadowTypeInferenceEngine engine, Uri uri, bool topLevel,
-      InterfaceType thisType, SourceLibraryBuilder library)
+      InterfaceType thisType, KernelLibraryBuilder library)
       : typePromoter = new ShadowTypePromoter(engine.typeSchemaEnvironment),
         super(engine, uri, topLevel, thisType, library);
 
@@ -2830,40 +1624,28 @@
     // When doing top level inference, we skip subexpressions whose type isn't
     // needed so that we don't induce bogus dependencies on fields mentioned in
     // those subexpressions.
-    if (!typeNeeded && isTopLevel) return null;
+    if (!typeNeeded) return null;
 
+    InferenceVistor visitor = new InferenceVistor(this);
     if (expression is ExpressionJudgment) {
-      // Use polymorphic dispatch on [KernelExpression] to perform whatever kind
-      // of type inference is correct for this kind of statement.
-      // TODO(paulberry): experiment to see if dynamic dispatch would be better,
-      // so that the type hierarchy will be simpler (which may speed up "is"
-      // checks).
-      expression.infer(this, typeContext);
-      DartType inferredType = expression.inferredType;
-      if (inferredType is VoidType && !isVoidAllowed) {
-        if (expression.parent is! ArgumentsJudgment) {
-          helper?.addProblem(
-              messageVoidExpression, expression.fileOffset, noLength);
-        }
-      }
-      return inferredType;
-    } else if (expression is IntLiteral) {
-      return coreTypes.intClass.rawType;
-    } else if (expression is DoubleLiteral) {
-      return coreTypes.doubleClass.rawType;
+      expression.acceptInference(visitor, typeContext);
     } else {
-      // Encountered an expression type for which type inference is not yet
-      // implemented, so just infer dynamic for now.
-      // TODO(paulberry): once the BodyBuilder uses shadow classes for
-      // everything, this case should no longer be needed.
-      return typeNeeded ? const DynamicType() : null;
+      expression.accept1(visitor, typeContext);
     }
+    DartType inferredType = getInferredType(expression, this);
+    if (inferredType is VoidType && !isVoidAllowed) {
+      if (expression.parent is! ArgumentsJudgment) {
+        helper?.addProblem(
+            messageVoidExpression, expression.fileOffset, noLength);
+      }
+    }
+    return inferredType;
   }
 
   @override
-  DartType inferFieldTopLevel(ShadowField field, bool typeNeeded) {
+  DartType inferFieldTopLevel(ShadowField field) {
     if (field.initializer == null) return const DynamicType();
-    return inferExpression(field.initializer, const UnknownType(), typeNeeded,
+    return inferExpression(field.initializer, const UnknownType(), true,
         isVoidAllowed: true);
   }
 
@@ -2878,7 +1660,7 @@
     // so that the type hierarchy will be simpler (which may speed up "is"
     // checks).
     InitializerJudgment kernelInitializer = initializer;
-    kernelInitializer.infer(this);
+    kernelInitializer.acceptInference(new InferenceVistor(this));
     this.helper = null;
   }
 
@@ -2894,7 +1676,7 @@
       // TODO(paulberry): experiment to see if dynamic dispatch would be better,
       // so that the type hierarchy will be simpler (which may speed up "is"
       // checks).
-      return statement.infer(this);
+      return statement.acceptInference(new InferenceVistor(this));
     } else {
       // Encountered a statement type for which type inference is not yet
       // implemented, so just skip it for now.
@@ -2910,9 +1692,8 @@
   TypeLiteralJudgment(DartType type) : super(type);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.coreTypes.typeClass.rawType;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitTypeLiteralJudgment(this, typeContext);
   }
 }
 
@@ -2986,7 +1767,7 @@
 }
 
 class VariableAssignmentJudgment extends ComplexAssignmentJudgment {
-  VariableAssignmentJudgment(ExpressionJudgment rhs) : super(rhs);
+  VariableAssignmentJudgment(Expression rhs) : super(rhs);
 
   @override
   DartType _getWriteType(ShadowTypeInferrer inferrer) {
@@ -2995,23 +1776,8 @@
   }
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    DartType readType;
-    var read = this.read;
-    if (read is VariableGet) {
-      readType = read.promotedType ?? read.variable.type;
-    }
-    DartType writeContext = const UnknownType();
-    var write = this.write;
-    if (write is VariableSet) {
-      writeContext = write.variable.type;
-      if (read != null) {
-        _storeLetType(inferrer, read, writeContext);
-      }
-    }
-    _inferRhs(inferrer, readType, writeContext);
-    _replaceWithDesugared();
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitVariableAssignmentJudgment(this, typeContext);
   }
 }
 
@@ -3079,60 +1845,11 @@
 
   List<Expression> get annotationJudgments => annotations;
 
-  ExpressionJudgment get initializerJudgment => initializer;
+  Expression get initializerJudgment => initializer;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    if (annotationJudgments.isNotEmpty) {
-      if (infersAnnotations) {
-        inferrer.inferMetadataKeepingHelper(annotationJudgments);
-      }
-
-      // After the inference was done on the annotations, we may clone them for
-      // this instance of VariableDeclaration in order to avoid having the same
-      // annotation node for two VariableDeclaration nodes in a situation like
-      // the following:
-      //
-      //     class Foo { const Foo(List<String> list); }
-      //
-      //     @Foo(const [])
-      //     var x, y;
-      CloneVisitor cloner = new CloneVisitor();
-      for (int i = 0; i < annotations.length; ++i) {
-        kernel.Expression annotation = annotations[i];
-        if (annotation.parent != this) {
-          annotations[i] = cloner.clone(annotation);
-          annotations[i].parent = this;
-        }
-      }
-    }
-
-    var initializerJudgment = this.initializerJudgment;
-    var declaredType = _implicitlyTyped ? const UnknownType() : type;
-    DartType inferredType;
-    DartType initializerType;
-    if (initializerJudgment != null) {
-      inferrer.inferExpression(initializerJudgment, declaredType,
-          !inferrer.isTopLevel || _implicitlyTyped,
-          isVoidAllowed: true);
-      initializerType = initializerJudgment.inferredType;
-      inferredType = inferrer.inferDeclarationType(initializerType);
-    } else {
-      inferredType = const DynamicType();
-    }
-    if (inferrer.strongMode && _implicitlyTyped) {
-      inferrer.instrumentation?.record(inferrer.uri, fileOffset, 'type',
-          new InstrumentationValueForType(inferredType));
-      type = inferredType;
-    }
-    if (initializer != null) {
-      var replacedInitializer = inferrer.ensureAssignable(
-          type, initializerType, initializer, fileOffset,
-          isVoidAllowed: type is VoidType);
-      if (replacedInitializer != null) {
-        initializer = replacedInitializer;
-      }
-    }
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitVariableDeclarationJudgment(this);
   }
 
   /// Determine whether the given [VariableDeclarationJudgment] had an implicit
@@ -3162,15 +1879,8 @@
       : super(desugared);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    var result = super.infer(inferrer, typeContext);
-    inferrer.inferInvocation(
-        typeContext,
-        fileOffset,
-        TypeInferrerImpl.unknownFunction,
-        const DynamicType(),
-        argumentsJudgment);
-    return result;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitUnresolvedTargetInvocationJudgment(this, typeContext);
   }
 }
 
@@ -3178,17 +1888,15 @@
 /// variable.
 class UnresolvedVariableAssignmentJudgment extends SyntheticExpressionJudgment {
   final bool isCompound;
-  final ExpressionJudgment rhs;
+  final Expression rhs;
 
   UnresolvedVariableAssignmentJudgment(
       kernel.Expression desugared, this.isCompound, this.rhs)
       : super(desugared);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferrer.inferExpression(rhs, const UnknownType(), true);
-    inferredType = isCompound ? const DynamicType() : rhs.inferredType;
-    return super.infer(inferrer, typeContext);
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitUnresolvedVariableAssignmentJudgment(this, typeContext);
   }
 }
 
@@ -3204,24 +1912,8 @@
       : super(variable);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    VariableDeclarationJudgment variable = this.variable;
-    bool mutatedInClosure = variable._mutatedInClosure;
-    DartType declaredOrInferredType = variable.type;
-
-    DartType promotedType = inferrer.typePromoter
-        .computePromotedType(_fact, _scope, mutatedInClosure);
-    if (promotedType != null) {
-      inferrer.instrumentation?.record(inferrer.uri, fileOffset, 'promotedType',
-          new InstrumentationValueForType(promotedType));
-    }
-    this.promotedType = promotedType;
-    var type = promotedType ?? declaredOrInferredType;
-    if (variable._isLocalFunction) {
-      type = inferrer.instantiateTearOff(type, typeContext, this);
-    }
-    inferredType = type;
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitVariableGetJudgment(this, typeContext);
   }
 }
 
@@ -3229,19 +1921,13 @@
 class WhileJudgment extends WhileStatement implements StatementJudgment {
   WhileJudgment(Expression condition, Statement body) : super(condition, body);
 
-  ExpressionJudgment get conditionJudgment => condition;
+  Expression get conditionJudgment => condition;
 
   StatementJudgment get bodyJudgment => body;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var conditionJudgment = this.conditionJudgment;
-    var expectedType = inferrer.coreTypes.boolClass.rawType;
-    inferrer.inferExpression(
-        conditionJudgment, expectedType, !inferrer.isTopLevel);
-    inferrer.ensureAssignable(expectedType, conditionJudgment.inferredType,
-        condition, condition.fileOffset);
-    inferrer.inferStatement(bodyJudgment);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitWhileJudgment(this);
   }
 }
 
@@ -3250,27 +1936,11 @@
   YieldJudgment(bool isYieldStar, Expression expression)
       : super(expression, isYieldStar: isYieldStar);
 
-  ExpressionJudgment get judgment => expression;
+  Expression get judgment => expression;
 
   @override
-  void infer(ShadowTypeInferrer inferrer) {
-    var judgment = this.judgment;
-    var closureContext = inferrer.closureContext;
-    if (closureContext.isGenerator) {
-      var typeContext = closureContext.returnOrYieldContext;
-      if (isYieldStar && typeContext != null) {
-        typeContext = inferrer.wrapType(
-            typeContext,
-            closureContext.isAsync
-                ? inferrer.coreTypes.streamClass
-                : inferrer.coreTypes.iterableClass);
-      }
-      inferrer.inferExpression(judgment, typeContext, true);
-    } else {
-      inferrer.inferExpression(judgment, const UnknownType(), true);
-    }
-    closureContext.handleYield(
-        inferrer, isYieldStar, judgment.inferredType, expression, fileOffset);
+  void acceptInference(InferenceVistor visitor) {
+    return visitor.visitYieldJudgment(this);
   }
 }
 
@@ -3285,15 +1955,8 @@
   ArgumentsJudgment get argumentJudgments => arguments;
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType =
-        inferrer.typeSchemaEnvironment.futureType(const DynamicType());
-    if (arguments != null) {
-      var calleeType = new FunctionType([], inferredType);
-      inferrer.inferInvocation(typeContext, fileOffset, calleeType,
-          calleeType.returnType, argumentJudgments);
-    }
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitLoadLibraryJudgment(this, typeContext);
   }
 }
 
@@ -3307,35 +1970,11 @@
   LoadLibraryTearOffJudgment(this.import, Procedure target) : super(target);
 
   @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = new FunctionType(
-        [], inferrer.typeSchemaEnvironment.futureType(const DynamicType()));
-    return null;
+  void acceptInference(InferenceVistor visitor, DartType typeContext) {
+    return visitor.visitLoadLibraryTearOffJudgment(this, typeContext);
   }
 }
 
-/// Concrete shadow object representing a deferred library-is-loaded check.
-class CheckLibraryIsLoadedJudgment extends CheckLibraryIsLoaded
-    implements ExpressionJudgment {
-  DartType inferredType;
-
-  CheckLibraryIsLoadedJudgment(LibraryDependency import) : super(import);
-
-  @override
-  Expression infer(ShadowTypeInferrer inferrer, DartType typeContext) {
-    inferredType = inferrer.typeSchemaEnvironment.objectType;
-    return null;
-  }
-}
-
-/// Concrete shadow object representing a named expression.
-class NamedExpressionJudgment extends NamedExpression {
-  NamedExpressionJudgment(String nameLexeme, Expression value)
-      : super(nameLexeme, value);
-
-  ExpressionJudgment get judgment => value;
-}
-
 /// The result of inference for a RHS of an assignment.
 class _ComplexAssignmentInferenceResult {
   /// The resolved combiner [Procedure], e.g. `operator+` for `a += 2`, or
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index 772b960..8354ddb 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -9,7 +9,6 @@
 import 'package:kernel/ast.dart'
     show
         Arguments,
-        Block,
         CanonicalName,
         Class,
         Component,
@@ -17,7 +16,6 @@
         DartType,
         EmptyStatement,
         Expression,
-        ExpressionStatement,
         Field,
         FieldInitializer,
         FunctionNode,
@@ -30,18 +28,17 @@
         NamedExpression,
         NullLiteral,
         Procedure,
-        ProcedureKind,
         RedirectingInitializer,
         Source,
-        Statement,
         StringLiteral,
         SuperInitializer,
-        Throw,
         TypeParameter,
         TypeParameterType,
         VariableDeclaration,
         VariableGet;
 
+import 'package:kernel/clone.dart' show CloneVisitor;
+
 import 'package:kernel/type_algebra.dart' show substitute;
 
 import '../../api_prototype/file_system.dart' show FileSystem;
@@ -63,6 +60,7 @@
         noLength,
         templateFinalFieldNotInitialized,
         templateFinalFieldNotInitializedByConstructor,
+        templateInferredPackageUri,
         templateMissingImplementationCause,
         templateSuperclassHasNoDefaultConstructor;
 
@@ -93,8 +91,7 @@
         LibraryBuilder,
         NamedTypeBuilder,
         TypeBuilder,
-        TypeDeclarationBuilder,
-        TypeVariableBuilder;
+        TypeDeclarationBuilder;
 
 import 'metadata_collector.dart' show MetadataCollector;
 
@@ -119,8 +116,6 @@
 
   Component component;
 
-  final List<LocatedMessage> errors = <LocatedMessage>[];
-
   final TypeBuilder dynamicType = new KernelNamedTypeBuilder("dynamic", null);
 
   final NamedTypeBuilder objectType =
@@ -128,12 +123,14 @@
 
   final TypeBuilder bottomType = new KernelNamedTypeBuilder("Null", null);
 
-  bool get strongMode => backendTarget.strongMode;
+  bool get strongMode => !backendTarget.legacyMode;
 
   bool get disableTypeInference => backendTarget.disableTypeInference;
 
   final bool excludeSource = !CompilerContext.current.options.embedSourceText;
 
+  final List<Object> clonedFormals = <Object>[];
+
   KernelTarget(this.fileSystem, this.includeComments, DillTarget dillTarget,
       UriTranslator uriTranslator,
       {Map<Uri, Source> uriToSource, MetadataCollector metadataCollector})
@@ -152,8 +149,40 @@
     uriToSource[uri] = new Source(lineStarts, sourceCode);
   }
 
-  void read(Uri uri) {
-    loader.read(uri, -1, accessor: loader.first);
+  void setEntryPoints(List<Uri> entryPoints) {
+    Map<String, Uri> packagesMap;
+    for (Uri entryPoint in entryPoints) {
+      String scheme = entryPoint.scheme;
+      Uri fileUri;
+      switch (scheme) {
+        case "package":
+        case "dart":
+        case "data":
+          break;
+        default:
+          // Attempt to reverse-lookup [entryPoint] in package config.
+          String asString = "$entryPoint";
+          packagesMap ??= uriTranslator.packages.asMap();
+          for (String packageName in packagesMap.keys) {
+            String prefix = "${packagesMap[packageName]}";
+            if (asString.startsWith(prefix)) {
+              Uri reversed = Uri.parse(
+                  "package:$packageName/${asString.substring(prefix.length)}");
+              if (entryPoint == uriTranslator.translate(reversed)) {
+                loader.addProblem(
+                    templateInferredPackageUri.withArguments(reversed),
+                    -1,
+                    1,
+                    entryPoint);
+                fileUri = entryPoint;
+                entryPoint = reversed;
+                break;
+              }
+            }
+          }
+      }
+      loader.read(entryPoint, -1, accessor: loader.first, fileUri: fileUri);
+    }
   }
 
   @override
@@ -225,55 +254,41 @@
     builder.mixedInType = null;
   }
 
-  void handleInputError(LocatedMessage message, {bool isFullComponent}) {
-    if (message != null) {
-      context.report(message, Severity.error);
-      errors.add(message);
-    }
-    component = erroneousComponent(isFullComponent);
-  }
-
   @override
   Future<Component> buildOutlines({CanonicalName nameRoot}) async {
     if (loader.first == null) return null;
-    return withCrashReporting<Component>(
-        () async {
-          loader.createTypeInferenceEngine();
-          await loader.buildOutlines();
-          loader.coreLibrary.becomeCoreLibrary();
-          dynamicType.bind(loader.coreLibrary["dynamic"]);
-          loader.resolveParts();
-          loader.computeLibraryScopes();
-          objectType.bind(loader.coreLibrary["Object"]);
-          bottomType.bind(loader.coreLibrary["Null"]);
-          loader.resolveTypes();
-          loader.computeDefaultTypes(
-              dynamicType, bottomType, objectClassBuilder);
-          List<SourceClassBuilder> myClasses = collectMyClasses();
-          loader.checkSemantics(myClasses);
-          loader.finishTypeVariables(objectClassBuilder, dynamicType);
-          loader.buildComponent();
-          installDefaultSupertypes();
-          installDefaultConstructors(myClasses);
-          loader.resolveConstructors();
-          component = link(new List<Library>.from(loader.libraries),
-              nameRoot: nameRoot);
-          computeCoreTypes();
-          loader.computeHierarchy();
-          loader.performTopLevelInference(myClasses);
-          loader.checkSupertypes(myClasses);
-          loader.checkOverrides(myClasses);
-          loader.checkAbstractMembers(myClasses);
-          loader.checkRedirectingFactories(myClasses);
-          loader.addNoSuchMethodForwarders(myClasses);
-          return component;
-        },
-        () => loader?.currentUriForCrashReporting,
-        onInputError: (LocatedMessage message) {
-          ticker.logMs("Got unrecoverable error");
-          handleInputError(message, isFullComponent: false);
-          return component;
-        });
+    return withCrashReporting<Component>(() async {
+      loader.createTypeInferenceEngine();
+      await loader.buildOutlines();
+      loader.coreLibrary.becomeCoreLibrary();
+      dynamicType.bind(loader.coreLibrary["dynamic"]);
+      loader.resolveParts();
+      loader.computeLibraryScopes();
+      objectType.bind(loader.coreLibrary["Object"]);
+      bottomType.bind(loader.coreLibrary["Null"]);
+      loader.resolveTypes();
+      loader.computeDefaultTypes(dynamicType, bottomType, objectClassBuilder);
+      List<SourceClassBuilder> myClasses = collectMyClasses();
+      loader.checkSemantics(myClasses);
+      loader.finishTypeVariables(objectClassBuilder, dynamicType);
+      loader.buildComponent();
+      installDefaultSupertypes();
+      installSyntheticConstructors(myClasses);
+      loader.resolveConstructors();
+      component =
+          link(new List<Library>.from(loader.libraries), nameRoot: nameRoot);
+      computeCoreTypes();
+      loader.computeHierarchy();
+      loader.performTopLevelInference(myClasses);
+      loader.checkSupertypes(myClasses);
+      loader.checkBounds();
+      loader.checkOverrides(myClasses);
+      loader.checkAbstractMembers(myClasses);
+      loader.checkRedirectingFactories(myClasses);
+      loader.addNoSuchMethodForwarders(myClasses);
+      loader.checkMixins(myClasses);
+      return component;
+    }, () => loader?.currentUriForCrashReporting);
   }
 
   /// Build the kernel representation of the component loaded by this
@@ -287,55 +302,34 @@
   @override
   Future<Component> buildComponent({bool verify: false}) async {
     if (loader.first == null) return null;
-    if (errors.isNotEmpty) {
-      handleInputError(null, isFullComponent: true);
+    return withCrashReporting<Component>(() async {
+      ticker.logMs("Building component");
+      await loader.buildBodies();
+      finishClonedParameters();
+      loader.finishDeferredLoadTearoffs();
+      loader.finishNoSuchMethodForwarders();
+      List<SourceClassBuilder> myClasses = collectMyClasses();
+      loader.finishNativeMethods();
+      loader.finishPatchMethods();
+      finishAllConstructors(myClasses);
+      runBuildTransformations();
+
+      if (verify) this.verify();
+      handleRecoverableErrors(loader.unhandledErrors);
       return component;
-    }
-
-    return withCrashReporting<Component>(
-        () async {
-          ticker.logMs("Building component");
-          await loader.buildBodies();
-          loader.finishDeferredLoadTearoffs();
-          loader.finishNoSuchMethodForwarders();
-          List<SourceClassBuilder> myClasses = collectMyClasses();
-          loader.finishNativeMethods();
-          loader.finishPatchMethods();
-          finishAllConstructors(myClasses);
-          runBuildTransformations();
-
-          if (verify) this.verify();
-          if (errors.isNotEmpty) {
-            handleInputError(null, isFullComponent: true);
-          }
-          handleRecoverableErrors(loader.unhandledErrors);
-          return component;
-        },
-        () => loader?.currentUriForCrashReporting,
-        onInputError: (LocatedMessage message) {
-          ticker.logMs("Got unrecoverable error");
-          handleInputError(message, isFullComponent: true);
-          return component;
-        });
+    }, () => loader?.currentUriForCrashReporting);
   }
 
   /// Adds a synthetic field named `#errors` to the main library that contains
   /// [recoverableErrors] formatted.
   ///
   /// If [recoverableErrors] is empty, this method does nothing.
-  ///
-  /// If there's no main library, this method uses [erroneousComponent] to
-  /// replace [component].
   void handleRecoverableErrors(List<LocatedMessage> recoverableErrors) {
     if (recoverableErrors.isEmpty) return;
     KernelLibraryBuilder mainLibrary = loader.first;
-    if (mainLibrary == null) {
-      component = erroneousComponent(true);
-      return;
-    }
+    if (mainLibrary == null) return;
     List<Expression> expressions = <Expression>[];
     for (LocatedMessage error in recoverableErrors) {
-      errors.add(error);
       expressions.add(new StringLiteral(context.format(error, Severity.error)));
     }
     mainLibrary.library.addMember(new Field(new Name("#errors"),
@@ -344,47 +338,6 @@
         isStatic: true));
   }
 
-  Component erroneousComponent(bool isFullComponent) {
-    Uri uri = loader.first?.uri ?? Uri.parse("error:error");
-    Uri fileUri = loader.first?.fileUri ?? uri;
-    KernelLibraryBuilder library =
-        new KernelLibraryBuilder(uri, fileUri, loader, null);
-    loader.first = library;
-    if (isFullComponent) {
-      // If this is an outline, we shouldn't add an executable main
-      // method. Similarly considerations apply to separate compilation. It
-      // could also make sense to add a way to mark .dill files as having
-      // compile-time errors.
-      KernelProcedureBuilder mainBuilder = new KernelProcedureBuilder(
-          null,
-          0,
-          null,
-          "#main",
-          null,
-          null,
-          ProcedureKind.Method,
-          library,
-          -1,
-          -1,
-          -1,
-          -1);
-      library.addBuilder(mainBuilder.name, mainBuilder, -1);
-      mainBuilder.body = new Block(new List<Statement>.from(errors.map(
-          (LocatedMessage message) => new ExpressionStatement(new Throw(
-              new StringLiteral(context.format(message, Severity.error)))))));
-    }
-
-    // Clear libraries to avoid having 'the same' library added in both outline
-    // and body building. As loader.libraries is used in the incremental
-    // compiler that will causes problems (i.e. it cannot serialize because 2
-    // libraries has the same URI).
-    loader.libraries.clear();
-
-    loader.libraries.add(library.library);
-    library.build(loader.coreLibrary);
-    return link(<Library>[library.library]);
-  }
-
   /// Creates a component by combining [libraries] with the libraries of
   /// `dillTarget.loader.component`.
   Component link(List<Library> libraries, {CanonicalName nameRoot}) {
@@ -456,14 +409,19 @@
     ticker.logMs("Installed Object as implicit superclass");
   }
 
-  void installDefaultConstructors(List<SourceClassBuilder> builders) {
+  void installSyntheticConstructors(List<SourceClassBuilder> builders) {
     Class objectClass = this.objectClass;
     for (SourceClassBuilder builder in builders) {
       if (builder.target != objectClass) {
-        installDefaultConstructor(builder);
+        if (builder.isPatch) continue;
+        if (builder.isMixinApplication) {
+          installForwardingConstructors(builder);
+        } else {
+          installDefaultConstructor(builder);
+        }
       }
     }
-    ticker.logMs("Installed default constructors");
+    ticker.logMs("Installed synthetic constructors");
   }
 
   KernelClassBuilder get objectClassBuilder => objectType.declaration;
@@ -472,81 +430,69 @@
 
   /// If [builder] doesn't have a constructors, install the defaults.
   void installDefaultConstructor(SourceClassBuilder builder) {
-    if (builder.isMixinApplication && !builder.isNamedMixinApplication) return;
+    assert(!builder.isMixinApplication);
     // TODO(askesc): Make this check light-weight in the absence of patches.
     if (builder.target.constructors.isNotEmpty) return;
     if (builder.target.redirectingFactoryConstructors.isNotEmpty) return;
     for (Procedure proc in builder.target.procedures) {
       if (proc.isFactory) return;
     }
-    if (builder.isPatch) return;
 
-    /// Quotes below are from [Dart Programming Language Specification, 4th
-    /// Edition](
+    /// From [Dart Programming Language Specification, 4th Edition](
     /// https://ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf):
-    if (builder.isNamedMixinApplication) {
-      /// >A mixin application of the form S with M; defines a class C with
-      /// >superclass S.
-      /// >...
-
-      /// >Let LM be the library in which M is declared. For each generative
-      /// >constructor named qi(Ti1 ai1, . . . , Tiki aiki), i in 1..n of S
-      /// >that is accessible to LM , C has an implicitly declared constructor
-      /// >named q'i = [C/S]qi of the form q'i(ai1,...,aiki) :
-      /// >super(ai1,...,aiki);.
-      TypeDeclarationBuilder supertype = builder;
-      while (supertype.isMixinApplication) {
-        SourceClassBuilder named = supertype;
-        TypeBuilder type = named.supertype;
-        if (type is NamedTypeBuilder) {
-          supertype = type.declaration;
-        } else {
-          unhandled("${type.runtimeType}", "installDefaultConstructor",
-              builder.charOffset, builder.fileUri);
-        }
-      }
-      if (supertype is KernelClassBuilder) {
-        Map<TypeParameter, DartType> substitutionMap =
-            computeKernelSubstitutionMap(
-                builder.getSubstitutionMap(supertype, builder.fileUri,
-                    builder.charOffset, dynamicType),
-                builder.parent);
-        if (supertype.cls.constructors.isEmpty) {
-          builder
-              .addSyntheticConstructor(makeDefaultConstructor(builder.target));
-        } else {
-          for (Constructor constructor in supertype.cls.constructors) {
-            builder.addSyntheticConstructor(makeMixinApplicationConstructor(
-                builder.target,
-                builder.cls.mixin,
-                constructor,
-                substitutionMap));
-          }
-        }
-      } else if (supertype is InvalidTypeBuilder) {
-        builder.addSyntheticConstructor(makeDefaultConstructor(builder.target));
-      } else {
-        unhandled("${supertype.runtimeType}", "installDefaultConstructor",
-            builder.charOffset, builder.fileUri);
-      }
-    } else {
-      /// >Iff no constructor is specified for a class C, it implicitly has a
-      /// >default constructor C() : super() {}, unless C is class Object.
-      // The superinitializer is installed below in [finishConstructors].
-      builder.addSyntheticConstructor(makeDefaultConstructor(builder.target));
-    }
+    /// >Iff no constructor is specified for a class C, it implicitly has a
+    /// >default constructor C() : super() {}, unless C is class Object.
+    // The superinitializer is installed below in [finishConstructors].
+    builder.addSyntheticConstructor(makeDefaultConstructor(builder.target));
   }
 
-  Map<TypeParameter, DartType> computeKernelSubstitutionMap(
-      Map<TypeVariableBuilder, TypeBuilder> substitutionMap,
-      LibraryBuilder library) {
-    if (substitutionMap == null) return const <TypeParameter, DartType>{};
-    Map<TypeParameter, DartType> result = <TypeParameter, DartType>{};
-    substitutionMap
-        .forEach((TypeVariableBuilder variable, TypeBuilder argument) {
-      result[variable.target] = argument.build(library);
-    });
-    return result;
+  void installForwardingConstructors(SourceClassBuilder builder) {
+    assert(builder.isMixinApplication);
+    if (builder.library.loader != loader) return;
+    if (builder.target.constructors.isNotEmpty) {
+      // These were installed by a subclass in the recursive call below.
+      return;
+    }
+
+    /// From [Dart Programming Language Specification, 4th Edition](
+    /// https://ecma-international.org/publications/files/ECMA-ST/ECMA-408.pdf):
+    /// >A mixin application of the form S with M; defines a class C with
+    /// >superclass S.
+    /// >...
+
+    /// >Let LM be the library in which M is declared. For each generative
+    /// >constructor named qi(Ti1 ai1, . . . , Tiki aiki), i in 1..n of S
+    /// >that is accessible to LM , C has an implicitly declared constructor
+    /// >named q'i = [C/S]qi of the form q'i(ai1,...,aiki) :
+    /// >super(ai1,...,aiki);.
+    TypeBuilder type = builder.supertype;
+    TypeDeclarationBuilder supertype;
+    if (type is NamedTypeBuilder) {
+      supertype = type.declaration;
+    } else {
+      unhandled("${type.runtimeType}", "installForwardingConstructors",
+          builder.charOffset, builder.fileUri);
+    }
+    if (supertype.isMixinApplication) {
+      installForwardingConstructors(supertype);
+    }
+    if (supertype is KernelClassBuilder) {
+      if (supertype.cls.constructors.isEmpty) {
+        builder.addSyntheticConstructor(makeDefaultConstructor(builder.target));
+      } else {
+        Map<TypeParameter, DartType> substitutionMap =
+            builder.getSubstitutionMap(supertype.target);
+        for (Constructor constructor in supertype.cls.constructors) {
+          builder.addSyntheticConstructor(makeMixinApplicationConstructor(
+              builder.target, builder.cls.mixin, constructor, substitutionMap));
+        }
+      }
+    } else if (supertype is InvalidTypeBuilder) {
+      builder.addSyntheticConstructor(makeDefaultConstructor(builder.target));
+    } else {
+      unhandled("${supertype.runtimeType}", "installForwardingConstructors",
+          builder.charOffset, builder.fileUri);
+    }
   }
 
   Constructor makeMixinApplicationConstructor(Class cls, Class mixin,
@@ -571,7 +517,9 @@
       positional.add(new VariableGet(positionalParameters.last));
     }
     for (VariableDeclaration formal in constructor.function.namedParameters) {
-      namedParameters.add(copyFormal(formal));
+      VariableDeclaration clone = copyFormal(formal);
+      clonedFormals..add(formal)..add(clone)..add(substitutionMap);
+      namedParameters.add(clone);
       named.add(new NamedExpression(
           formal.name, new VariableGet(namedParameters.last)));
     }
@@ -588,6 +536,27 @@
         isSynthetic: true);
   }
 
+  void finishClonedParameters() {
+    for (int i = 0; i < clonedFormals.length; i += 3) {
+      // Note that [original] may itself be clone. If so, it was added to
+      // [clonedFormals] before [clone], so it's initializers are already in
+      // place.
+      VariableDeclaration original = clonedFormals[i];
+      VariableDeclaration clone = clonedFormals[i + 1];
+      if (original.initializer != null) {
+        // TODO(ahe): It is unclear if it is legal to use type variables in
+        // default values, but Fasta is currently allowing it, and the VM
+        // accepts it. If it isn't legal, the we can speed this up by using a
+        // single cloner without substitution.
+        CloneVisitor cloner =
+            new CloneVisitor(typeSubstitution: clonedFormals[i + 2]);
+        clone.initializer = cloner.clone(original.initializer)..parent = clone;
+      }
+    }
+    clonedFormals.clear();
+    ticker.logMs("Cloned default values of formals");
+  }
+
   Constructor makeDefaultConstructor(Class enclosingClass) {
     return new Constructor(
         new FunctionNode(new EmptyStatement(),
@@ -813,7 +782,8 @@
   }
 
   void verify() {
-    errors.addAll(verifyComponent(component));
+    // TODO(ahe): How to handle errors.
+    verifyComponent(component);
     ticker.logMs("Verified component");
   }
 
diff --git a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
index 026ee98..704126d 100644
--- a/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/type_algorithms.dart
@@ -2,7 +2,20 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE.md file.
 
-import 'package:kernel/ast.dart' show TypeParameter;
+import 'package:kernel/ast.dart'
+    show
+        BottomType,
+        DartType,
+        DartTypeVisitor,
+        DynamicType,
+        FunctionType,
+        InterfaceType,
+        InvalidType,
+        NamedType,
+        TypeParameter,
+        TypeParameterType,
+        TypedefType,
+        VoidType;
 
 import 'package:kernel/type_algebra.dart' show containsTypeVariable;
 
@@ -773,3 +786,55 @@
     }
   }
 }
+
+/// Returns true if [type] contains any type variables whatsoever. This should
+/// only be used for working around transitional issues.
+// TODO(ahe): Remove this method.
+bool hasAnyTypeVariables(DartType type) {
+  return type.accept(const TypeVariableSearch());
+}
+
+/// Don't use this directly, use [hasAnyTypeVariables] instead. But don't use
+/// that either.
+// TODO(ahe): Remove this class.
+class TypeVariableSearch implements DartTypeVisitor<bool> {
+  const TypeVariableSearch();
+
+  bool defaultDartType(DartType node) => throw "unsupported";
+
+  bool anyTypeVariables(List<DartType> types) {
+    for (DartType type in types) {
+      if (type.accept(this)) return true;
+    }
+    return false;
+  }
+
+  bool visitInvalidType(InvalidType node) => false;
+
+  bool visitDynamicType(DynamicType node) => false;
+
+  bool visitVoidType(VoidType node) => false;
+
+  bool visitBottomType(BottomType node) => false;
+
+  bool visitInterfaceType(InterfaceType node) {
+    return anyTypeVariables(node.typeArguments);
+  }
+
+  bool visitFunctionType(FunctionType node) {
+    if (anyTypeVariables(node.positionalParameters)) return true;
+    for (TypeParameter variable in node.typeParameters) {
+      if (variable.bound.accept(this)) return true;
+    }
+    for (NamedType type in node.namedParameters) {
+      if (type.type.accept(this)) return true;
+    }
+    return false;
+  }
+
+  bool visitTypeParameterType(TypeParameterType node) => true;
+
+  bool visitTypedefType(TypedefType node) {
+    return anyTypeVariables(node.typeArguments);
+  }
+}
diff --git a/pkg/front_end/lib/src/fasta/loader.dart b/pkg/front_end/lib/src/fasta/loader.dart
index 91253b4..3da7e4f 100644
--- a/pkg/front_end/lib/src/fasta/loader.dart
+++ b/pkg/front_end/lib/src/fasta/loader.dart
@@ -223,7 +223,7 @@
     severity ??= message.code.severity;
     if (severity == Severity.errorLegacyWarning) {
       severity =
-          target.backendTarget.strongMode ? Severity.error : Severity.warning;
+          target.backendTarget.legacyMode ? Severity.warning : Severity.error;
     }
     addMessage(message, charOffset, length, fileUri, severity,
         wasHandled: wasHandled, context: context);
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 8ed626c..8c3478e 100644
--- a/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
+++ b/pkg/front_end/lib/src/fasta/parser/forwarding_listener.dart
@@ -1067,6 +1067,11 @@
   }
 
   @override
+  void handleInvalidTypeArguments(Token token) {
+    listener?.handleInvalidTypeArguments(token);
+  }
+
+  @override
   void handleInvalidTypeReference(Token token) {
     listener?.handleInvalidTypeReference(token);
   }
diff --git a/pkg/front_end/lib/src/fasta/parser/listener.dart b/pkg/front_end/lib/src/fasta/parser/listener.dart
index f0c1b8a..bbdfe7f 100644
--- a/pkg/front_end/lib/src/fasta/parser/listener.dart
+++ b/pkg/front_end/lib/src/fasta/parser/listener.dart
@@ -943,6 +943,12 @@
     logEvent("TypeArguments");
   }
 
+  /// After endTypeArguments has been called,
+  /// this event is called if those type arguments are invalid.
+  void handleInvalidTypeArguments(Token token) {
+    logEvent("NoTypeArguments");
+  }
+
   void handleNoTypeArguments(Token token) {
     logEvent("NoTypeArguments");
   }
diff --git a/pkg/front_end/lib/src/fasta/parser/parser.dart b/pkg/front_end/lib/src/fasta/parser/parser.dart
index 2b0748d..7cb645c 100644
--- a/pkg/front_end/lib/src/fasta/parser/parser.dart
+++ b/pkg/front_end/lib/src/fasta/parser/parser.dart
@@ -4350,6 +4350,29 @@
     return token;
   }
 
+  Token parseConstructorInvocationArguments(Token token) {
+    Token next = token.next;
+    if (!optional('(', next)) {
+      // Recovery: Check for invalid type parameters
+      TypeParamOrArgInfo typeArg = computeTypeParamOrArg(token);
+      if (typeArg == noTypeParamOrArg) {
+        reportRecoverableError(
+            token, fasta.templateExpectedButGot.withArguments('('));
+      } else {
+        reportRecoverableError(
+            token, fasta.messageConstructorWithTypeArguments);
+        token = typeArg.parseArguments(token, this);
+        listener.handleInvalidTypeArguments(token);
+        next = token.next;
+      }
+      if (!optional('(', next)) {
+        rewriter.insertParens(token, false);
+      }
+    }
+    token = parseArguments(token);
+    return token;
+  }
+
   /// ```
   /// newExpression:
   ///   'new' type ('.' identifier)? arguments
@@ -4360,7 +4383,7 @@
     assert(optional('new', newKeyword));
     listener.beginNewExpression(newKeyword);
     token = parseConstructorReference(newKeyword);
-    token = parseRequiredArguments(token);
+    token = parseConstructorInvocationArguments(token);
     listener.endNewExpression(newKeyword);
     return token;
   }
@@ -4370,7 +4393,7 @@
     Token begin = token;
     listener.beginImplicitCreationExpression(token);
     token = parseConstructorReference(token, typeArg);
-    token = parseRequiredArguments(token);
+    token = parseConstructorInvocationArguments(token);
     listener.endImplicitCreationExpression(begin);
     return token;
   }
@@ -4418,7 +4441,7 @@
     }
     listener.beginConstExpression(constKeyword);
     token = parseConstructorReference(token);
-    token = parseRequiredArguments(token);
+    token = parseConstructorInvocationArguments(token);
     listener.endConstExpression(constKeyword);
     return token;
   }
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 e19d8e3..e76bcff 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
@@ -12,6 +12,8 @@
 
 import '../util/link.dart' show Link;
 
+import 'forwarding_listener.dart' show ForwardingListener;
+
 import 'identifier_context.dart' show IdentifierContext;
 
 import 'member_kind.dart' show MemberKind;
@@ -662,9 +664,11 @@
   /// given unbalanced `<` `>` and invalid parameters or arguments.
   final bool inDeclaration;
 
-  /// The token before the end group token (e.g. `>`, `>>`, `>=`, or `>>=`)
-  /// or after which a synthetic end group token should be inserted.
-  Token beforeEnd;
+  /// The `>` token which ends the type parameter or argument.
+  /// This closer may be synthetic, points to the next token in the stream,
+  /// is only used when skipping over the type parameters or arguments,
+  /// and may not be part of the token stream.
+  Token skipEnd;
 
   ComplexTypeParamOrArgInfo(Token token, this.inDeclaration)
       : assert(optional('<', token.next)),
@@ -704,8 +708,8 @@
         next = token.next;
       }
       if (!optional(',', next)) {
-        if (isCloser(next)) {
-          beforeEnd = token;
+        skipEnd = splitCloser(next);
+        if (skipEnd != null) {
           return this;
         }
         if (!inDeclaration) {
@@ -722,18 +726,18 @@
     }
 
     // Recovery
-    beforeEnd = token;
-    if (!isCloser(next)) {
+    skipEnd = splitCloser(next);
+    if (skipEnd == null) {
       if (optional('(', next)) {
         token = next.endGroup;
         next = token.next;
       }
-      if (!isCloser(next)) {
-        token = next;
-        next = token.next;
+      skipEnd = splitCloser(next);
+      if (skipEnd == null) {
+        skipEnd = splitCloser(next.next);
       }
-      if (isCloser(next)) {
-        beforeEnd = token;
+      if (skipEnd == null) {
+        skipEnd = syntheticGt(next);
       }
     }
     return this;
@@ -762,20 +766,19 @@
       ++count;
       if (!optional(',', next)) {
         if (parseCloser(token)) {
-          beforeEnd = token;
           break;
         }
 
         // Recovery
         if (!looksLikeTypeParamOrArg(inDeclaration, next)) {
-          parseUnexpectedEnd(token, parser);
+          token = parseUnexpectedEnd(token, true, parser);
           break;
         }
         // Missing comma. Report error, insert comma, and continue looping.
         next = parseMissingComma(token, parser);
       }
     }
-    Token endGroup = beforeEnd.next;
+    Token endGroup = token.next;
     parser.listener.endTypeArguments(count, start, endGroup);
     return endGroup;
   }
@@ -795,9 +798,6 @@
       token = parser.parseMetadataStar(next);
       next = parser.ensureIdentifier(
           token, IdentifierContext.typeVariableDeclaration);
-      if (beforeEnd == token) {
-        beforeEnd = next;
-      }
       token = next;
       listener.beginTypeVariable(token);
       typeStarts = typeStarts.prepend(token);
@@ -857,12 +857,10 @@
       superTypeInfos = superTypeInfos.tail;
     }
 
-    if (parseCloser(token)) {
-      beforeEnd = token;
-    } else {
-      parseUnexpectedEnd(token, parser);
+    if (!parseCloser(token)) {
+      token = parseUnexpectedEnd(token, false, parser);
     }
-    Token endGroup = beforeEnd.next;
+    Token endGroup = token.next;
     listener.endTypeVariables(start, endGroup);
     return endGroup;
   }
@@ -875,43 +873,109 @@
         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) {
+  Token parseUnexpectedEnd(Token token, bool isArguments, Parser parser) {
+    Token next = token.next;
+    bool errorReported = token.isSynthetic || (next.isSynthetic && !next.isEof);
+
+    bool typeFollowsExtends = false;
+    if (optional('extends', next)) {
+      if (!errorReported) {
         parser.reportRecoverableError(
             token, fasta.templateExpectedAfterButGot.withArguments('>'));
+        errorReported = true;
       }
-      Token next = beforeEnd.next;
-      Token endGroup = syntheticGt(next);
-      endGroup.setNext(next);
-      beforeEnd.setNext(endGroup);
+      token = next;
+      next = token.next;
+      typeFollowsExtends = isValidTypeReference(next);
+
+      if (parseCloser(token)) {
+        return token;
+      }
     }
+
+    if (typeFollowsExtends ||
+        optional('dynamic', next) ||
+        optional('void', next) ||
+        optional('Function', next)) {
+      TypeInfo invalidType = computeType(token, true);
+      if (invalidType != noType) {
+        if (!errorReported) {
+          parser.reportRecoverableError(
+              token, fasta.templateExpectedAfterButGot.withArguments('>'));
+          errorReported = true;
+        }
+
+        // Parse the type so that the token stream is properly modified,
+        // but ensure that parser events are ignored by replacing the listener.
+        final originalListener = parser.listener;
+        parser.listener = new ForwardingListener();
+        token = invalidType.parseType(token, parser);
+        next = token.next;
+        parser.listener = originalListener;
+
+        if (parseCloser(token)) {
+          return token;
+        }
+      }
+    }
+
+    TypeParamOrArgInfo invalidTypeVar =
+        computeTypeParamOrArg(token, inDeclaration);
+    if (invalidTypeVar != noTypeParamOrArg) {
+      if (!errorReported) {
+        parser.reportRecoverableError(
+            token, fasta.templateExpectedAfterButGot.withArguments('>'));
+        errorReported = true;
+      }
+
+      // Parse the type so that the token stream is properly modified,
+      // but ensure that parser events are ignored by replacing the listener.
+      final originalListener = parser.listener;
+      parser.listener = new ForwardingListener();
+      token = isArguments
+          ? invalidTypeVar.parseArguments(token, parser)
+          : invalidTypeVar.parseVariables(token, parser);
+      next = token.next;
+      parser.listener = originalListener;
+
+      if (parseCloser(token)) {
+        return token;
+      }
+    }
+
+    if (optional('(', next) && next.endGroup != null) {
+      if (!errorReported) {
+        // Only report an error if one has not already been reported.
+        parser.reportRecoverableError(
+            token, fasta.templateExpectedAfterButGot.withArguments('>'));
+        errorReported = true;
+      }
+      token = next.endGroup;
+      next = token.next;
+
+      if (parseCloser(token)) {
+        return token;
+      }
+    }
+
+    if (!errorReported) {
+      // Only report an error if one has not already been reported.
+      parser.reportRecoverableError(
+          token, fasta.templateExpectedAfterButGot.withArguments('>'));
+    }
+    if (parseCloser(next)) {
+      return next;
+    }
+    Token endGroup = syntheticGt(next);
+    endGroup.setNext(next);
+    token.setNext(endGroup);
+    return token;
   }
 
   @override
   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);
+    assert(skipEnd != null);
+    return skipEnd;
   }
 }
 
@@ -924,25 +988,35 @@
       identical(value, '>>=');
 }
 
-/// If [token] is one of `>`, `>>`, `>=', or `>>=`,
+/// If [beforeCloser].next 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, '>')) {
+  Token unsplit = beforeCloser.next;
+  Token split = splitCloser(unsplit);
+  if (split == unsplit) {
     return true;
-  }
-  Token split;
-  if (identical(value, '>>')) {
-    split = splitGtGt(closer);
-  } else if (identical(value, '>=')) {
-    split = splitGtEq(closer);
-  } else if (identical(value, '>>=')) {
-    split = splitGtFromGtGtEq(closer);
-  } else {
+  } else if (split == null) {
     return false;
   }
-  split.next.setNext(closer.next);
+  split.next.setNext(unsplit.next);
   beforeCloser.setNext(split);
   return true;
 }
+
+/// If [closer] is `>` then return it.
+/// If [closer] is one of `>>`, `>=', or `>>=` then split then token
+/// and return the leading `>` without updating the token stream.
+/// If [closer] is none of the above, then return null;
+Token splitCloser(Token closer) {
+  String value = closer.stringValue;
+  if (identical(value, '>')) {
+    return closer;
+  } else if (identical(value, '>>')) {
+    return splitGtGt(closer);
+  } else if (identical(value, '>=')) {
+    return splitGtEq(closer);
+  } else if (identical(value, '>>=')) {
+    return splitGtFromGtGtEq(closer);
+  }
+  return null;
+}
diff --git a/pkg/front_end/lib/src/fasta/problems.dart b/pkg/front_end/lib/src/fasta/problems.dart
index d0c8cc8..bf17812 100644
--- a/pkg/front_end/lib/src/fasta/problems.dart
+++ b/pkg/front_end/lib/src/fasta/problems.dart
@@ -8,16 +8,27 @@
 
 import 'messages.dart'
     show
+        LocatedMessage,
         Message,
         noLength,
+        templateInternalProblemDebugAbort,
         templateInternalProblemUnexpected,
         templateInternalProblemUnhandled,
         templateInternalProblemUnimplemented,
         templateInternalProblemUnsupported;
 
-import 'severity.dart' show Severity;
+import 'severity.dart' show Severity, severityTexts;
 
-export 'deprecated_problems.dart' show DebugAbort;
+class DebugAbort {
+  final LocatedMessage message;
+
+  DebugAbort(Uri uri, int charOffset, Severity severity, StackTrace trace)
+      : message = templateInternalProblemDebugAbort
+            .withArguments(severityTexts[severity], "$trace")
+            .withLocation(uri, charOffset, noLength);
+
+  toString() => "DebugAbort: ${message.message}";
+}
 
 /// Used to report an internal error.
 ///
diff --git a/pkg/front_end/lib/src/fasta/rewrite_severity.dart b/pkg/front_end/lib/src/fasta/rewrite_severity.dart
index bd79cf0..f2dc2fe 100644
--- a/pkg/front_end/lib/src/fasta/rewrite_severity.dart
+++ b/pkg/front_end/lib/src/fasta/rewrite_severity.dart
@@ -43,10 +43,7 @@
     // sites.
     switch (path.substring(fastaPath.length + index)) {
       case "command_line.dart":
-      case "deprecated_problems.dart":
-      case "entry_points.dart":
       case "kernel/body_builder.dart":
-      case "source/diet_listener.dart":
         return severity;
     }
   } else if (code == msg.codeMissingExplicitTypeArguments) {
diff --git a/pkg/front_end/lib/src/fasta/scanner.dart b/pkg/front_end/lib/src/fasta/scanner.dart
index 3229f4a..8e24f03 100644
--- a/pkg/front_end/lib/src/fasta/scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner.dart
@@ -6,6 +6,8 @@
 
 import 'dart:convert' show unicodeReplacementCharacterRune, utf8;
 
+import 'fasta_codes.dart' show LocatedMessage;
+
 import '../scanner/token.dart' show Token;
 
 import 'scanner/string_scanner.dart' show StringScanner;
@@ -39,6 +41,14 @@
 typedef Token Recover(List<int> bytes, Token tokens, List<int> lineStarts);
 
 abstract class Scanner {
+  /// A list of errors that occured during [tokenize] or `null` if none.
+  List<LocatedMessage> errors;
+
+  /// Set true if errors should be reported via the [errors] list.
+  // TODO(danrubel): Remove this once all scanner clients can process
+  // errors reported via the [errors] list.
+  bool reportErrors;
+
   /// Returns true if an error occured during [tokenize].
   bool get hasErrors;
 
@@ -52,7 +62,10 @@
   final List<int> lineStarts;
   final bool hasErrors;
 
-  ScannerResult(this.tokens, this.lineStarts, this.hasErrors);
+  /// Returns a list of errors that occured during [tokenize] or `null` if none.
+  final List<LocatedMessage> errors;
+
+  ScannerResult(this.tokens, this.lineStarts, this.hasErrors, this.errors);
 }
 
 /// Scan/tokenize the given UTF8 [bytes].
@@ -87,5 +100,6 @@
     recover ??= defaultRecoveryStrategy;
     tokens = recover(bytes, tokens, scanner.lineStarts);
   }
-  return new ScannerResult(tokens, scanner.lineStarts, scanner.hasErrors);
+  return new ScannerResult(
+      tokens, scanner.lineStarts, scanner.hasErrors, scanner.errors);
 }
diff --git a/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart b/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart
index b680943..55266e8 100644
--- a/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/abstract_scanner.dart
@@ -16,7 +16,8 @@
         messageExpectedHexDigit,
         messageMissingExponent,
         messageUnexpectedDollarInString,
-        messageUnterminatedComment;
+        messageUnterminatedComment,
+        templateUnterminatedString;
 
 import '../scanner.dart'
     show ErrorToken, Keyword, Scanner, buildUnexpectedCharacterToken;
@@ -119,7 +120,7 @@
   int currentAsUnicode(int next);
 
   /**
-   * Returns the character at the next poisition. Like in [advance], the
+   * Returns the character at the next position. Like in [advance], the
    * [Utf8BytesScanner] returns a UTF-8 byte, while the [StringScanner] returns
    * a UTF-16 code unit.
    */
@@ -906,7 +907,7 @@
       commentsTail = null;
     } else {
       // It is the responsibility of the caller to construct the token
-      // being appended with preceeding comments if any
+      // being appended with preceding comments if any
       assert(comments == null || token.isSynthetic || token is ErrorToken);
     }
   }
@@ -1017,7 +1018,7 @@
 
   /**
    * [next] is the first character after the quote.
-   * [start] is the scanOffset of the quote.
+   * [quoteStart] is the scanOffset of the quote.
    *
    * The token contains a substring of the source file, including the
    * string quotes, backslashes for escaping. For interpolated strings,
@@ -1027,7 +1028,8 @@
    *
    * gives StringToken("a $), StringToken(b) and StringToken( c").
    */
-  int tokenizeSingleLineString(int next, int quoteChar, int start) {
+  int tokenizeSingleLineString(int next, int quoteChar, int quoteStart) {
+    int start = quoteStart;
     bool asciiOnly = true;
     while (!identical(next, quoteChar)) {
       if (identical(next, $BACKSLASH)) {
@@ -1044,7 +1046,7 @@
               identical(next, $CR) ||
               identical(next, $EOF))) {
         if (!asciiOnly) handleUnicode(start);
-        unterminatedString(quoteChar, start,
+        unterminatedString(quoteChar, quoteStart, start,
             asciiOnly: asciiOnly, isMultiLine: false, isRaw: false);
         return next;
       }
@@ -1103,17 +1105,17 @@
     return next;
   }
 
-  int tokenizeSingleLineRawString(int next, int quoteChar, int start) {
+  int tokenizeSingleLineRawString(int next, int quoteChar, int quoteStart) {
     bool asciiOnly = true;
     while (next != $EOF) {
       if (identical(next, quoteChar)) {
-        if (!asciiOnly) handleUnicode(start);
+        if (!asciiOnly) handleUnicode(quoteStart);
         next = advance();
-        appendSubstringToken(TokenType.STRING, start, asciiOnly);
+        appendSubstringToken(TokenType.STRING, quoteStart, asciiOnly);
         return next;
       } else if (identical(next, $LF) || identical(next, $CR)) {
-        if (!asciiOnly) handleUnicode(start);
-        unterminatedString(quoteChar, start,
+        if (!asciiOnly) handleUnicode(quoteStart);
+        unterminatedString(quoteChar, quoteStart, quoteStart,
             asciiOnly: asciiOnly, isMultiLine: false, isRaw: true);
         return next;
       } else if (next > 127) {
@@ -1121,16 +1123,16 @@
       }
       next = advance();
     }
-    if (!asciiOnly) handleUnicode(start);
-    unterminatedString(quoteChar, start,
+    if (!asciiOnly) handleUnicode(quoteStart);
+    unterminatedString(quoteChar, quoteStart, quoteStart,
         asciiOnly: asciiOnly, isMultiLine: false, isRaw: true);
     return next;
   }
 
-  int tokenizeMultiLineRawString(int quoteChar, int start) {
+  int tokenizeMultiLineRawString(int quoteChar, int quoteStart) {
     bool asciiOnlyString = true;
     bool asciiOnlyLine = true;
-    int unicodeStart = start;
+    int unicodeStart = quoteStart;
     int next = advance(); // Advance past the (last) quote (of three).
     outer:
     while (!identical(next, $EOF)) {
@@ -1156,19 +1158,20 @@
         if (identical(next, quoteChar)) {
           if (!asciiOnlyLine) handleUnicode(unicodeStart);
           next = advance();
-          appendSubstringToken(TokenType.STRING, start, asciiOnlyString);
+          appendSubstringToken(TokenType.STRING, quoteStart, asciiOnlyString);
           return next;
         }
       }
     }
     if (!asciiOnlyLine) handleUnicode(unicodeStart);
-    unterminatedString(quoteChar, start,
+    unterminatedString(quoteChar, quoteStart, quoteStart,
         asciiOnly: asciiOnlyLine, isMultiLine: true, isRaw: true);
     return next;
   }
 
-  int tokenizeMultiLineString(int quoteChar, int start, bool raw) {
-    if (raw) return tokenizeMultiLineRawString(quoteChar, start);
+  int tokenizeMultiLineString(int quoteChar, int quoteStart, bool raw) {
+    if (raw) return tokenizeMultiLineRawString(quoteChar, quoteStart);
+    int start = quoteStart;
     bool asciiOnlyString = true;
     bool asciiOnlyLine = true;
     int unicodeStart = start;
@@ -1215,7 +1218,7 @@
       next = advance();
     }
     if (!asciiOnlyLine) handleUnicode(unicodeStart);
-    unterminatedString(quoteChar, start,
+    unterminatedString(quoteChar, quoteStart, start,
         asciiOnly: asciiOnlyString, isMultiLine: true, isRaw: false);
     return next;
   }
@@ -1230,16 +1233,26 @@
     return advanceAfterError(shouldAdvance);
   }
 
-  void unterminatedString(int quoteChar, int start,
+  void unterminatedString(int quoteChar, int quoteStart, int start,
       {bool asciiOnly, bool isMultiLine, bool isRaw}) {
     String suffix = new String.fromCharCodes(
         isMultiLine ? [quoteChar, quoteChar, quoteChar] : [quoteChar]);
     String prefix = isRaw ? 'r$suffix' : suffix;
 
     appendSyntheticSubstringToken(TokenType.STRING, start, asciiOnly, suffix);
-    appendErrorToken(new UnterminatedString(prefix, tokenStart, stringOffset));
+    // Ensure that the error is reported on a visible token
+    int errorStart = tokenStart < stringOffset ? tokenStart : quoteStart;
+    if (reportErrors) {
+      addError(errorStart, stringOffset - errorStart,
+          templateUnterminatedString.withArguments(prefix, suffix));
+    } else {
+      appendErrorToken(
+          new UnterminatedString(prefix, errorStart, stringOffset));
+    }
   }
 
+  void addError(int charOffset, int length, Message message);
+
   int advanceAfterError(bool shouldAdvance) {
     if (atEndOfFile()) return $EOF;
     if (shouldAdvance) {
diff --git a/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart b/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart
index b6e0f09..39fba7f 100644
--- a/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/array_based_scanner.dart
@@ -6,6 +6,8 @@
 
 import 'error_token.dart' show ErrorToken, UnmatchedToken;
 
+import '../fasta_codes.dart' show LocatedMessage, Message;
+
 import '../../scanner/token.dart'
     show BeginToken, Keyword, KeywordToken, SyntheticToken, Token, TokenType;
 
@@ -25,6 +27,8 @@
 import '../util/link.dart' show Link;
 
 abstract class ArrayBasedScanner extends AbstractScanner {
+  List<LocatedMessage> errors;
+  bool reportErrors = false;
   bool hasErrors = false;
 
   ArrayBasedScanner(bool includeComments, {int numberOfBytesHint})
@@ -363,4 +367,10 @@
     begin.endGroup = tail;
     appendErrorToken(new UnmatchedToken(begin));
   }
+
+  void addError(int charOffset, int length, Message message) {
+    hasErrors = true;
+    (errors ??= <LocatedMessage>[])
+        .add(new LocatedMessage(null, charOffset, length, message));
+  }
 }
diff --git a/pkg/front_end/lib/src/fasta/scanner/error_token.dart b/pkg/front_end/lib/src/fasta/scanner/error_token.dart
index e848c70..40c54b6 100644
--- a/pkg/front_end/lib/src/fasta/scanner/error_token.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/error_token.dart
@@ -164,6 +164,8 @@
 
   int get charCount => endOffset - charOffset;
 
+  int get length => charCount;
+
   Message get assertionMessage =>
       templateUnterminatedString.withArguments(start, closeQuoteFor(start));
 }
diff --git a/pkg/front_end/lib/src/fasta/scanner/recover.dart b/pkg/front_end/lib/src/fasta/scanner/recover.dart
index d969362..588e658 100644
--- a/pkg/front_end/lib/src/fasta/scanner/recover.dart
+++ b/pkg/front_end/lib/src/fasta/scanner/recover.dart
@@ -209,6 +209,10 @@
     goodTail = current;
   }
 
+  if (error == null) {
+    // All of the errors are in the scanner's error list.
+    return tokens;
+  }
   new Token.eof(-1).setNext(error);
   Token tail;
   if (good != null) {
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 5b05fe8..7d3c35b 100644
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart
@@ -27,8 +27,6 @@
 
 import '../crash.dart' show Crash;
 
-import '../deprecated_problems.dart' show deprecated_InputError;
-
 import '../fasta_codes.dart'
     show
         Code,
@@ -181,6 +179,11 @@
   }
 
   @override
+  void handleInvalidTypeArguments(Token token) {
+    debugEvent("InvalidTypeArguments");
+  }
+
+  @override
   void endFieldInitializer(Token assignmentOperator, Token token) {
     debugEvent("FieldInitializer");
   }
@@ -634,8 +637,6 @@
       listener.checkEmpty(token.next.charOffset);
     } on DebugAbort {
       rethrow;
-    } on deprecated_InputError {
-      rethrow;
     } catch (e, s) {
       throw new Crash(uri, token.charOffset, e, s);
     }
@@ -829,8 +830,6 @@
           metadataConstants, formals, asyncModifier, body);
     } on DebugAbort {
       rethrow;
-    } on deprecated_InputError {
-      rethrow;
     } catch (e, s) {
       throw new Crash(uri, token.charOffset, e, s);
     }
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 4874302..5b1f67f 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -475,6 +475,16 @@
   }
 
   @override
+  void beginClassOrMixinBody(Token token) {
+    debugEvent("beginClassOrMixinBody");
+    // Resolve unresolved types from the class header (i.e., superclass, mixins,
+    // and implemented types) before adding members from the class body which
+    // should not shadow these unresolved types.
+    library.currentDeclaration
+        .resolveTypes(library.currentDeclaration.typeVariables, library);
+  }
+
+  @override
   void beginNamedMixinApplication(
       Token begin, Token abstractToken, Token name) {
     debugEvent("beginNamedMixinApplication");
@@ -940,6 +950,12 @@
   }
 
   @override
+  void handleInvalidTypeArguments(Token token) {
+    debugEvent("InvalidTypeArguments");
+    pop(NullValue.TypeArguments);
+  }
+
+  @override
   void handleScript(Token token) {
     debugEvent("Script");
   }
diff --git a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
index 16ee2a6..b8e875c 100644
--- a/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_class_builder.dart
@@ -19,7 +19,8 @@
         templateConflictsWithMember,
         templateConflictsWithMemberWarning,
         templateConflictsWithSetter,
-        templateConflictsWithSetterWarning;
+        templateConflictsWithSetterWarning,
+        templateSupertypeIsIllegal;
 
 import '../kernel/kernel_builder.dart'
     show
@@ -147,6 +148,20 @@
     constructors.forEach(buildBuilders);
     actualCls.supertype =
         supertype?.buildSupertype(library, charOffset, fileUri);
+    if (!isMixinDeclaration &&
+        actualCls.supertype != null &&
+        actualCls.superclass.isMixinDeclaration) {
+      // Declared mixins have interfaces that can be implemented, but they
+      // cannot be extended.  However, a mixin declaration with a single
+      // superclass constraint is encoded with the constraint as the supertype,
+      // and that is allowed to be a mixin's interface.
+      library.addProblem(
+          templateSupertypeIsIllegal.withArguments(actualCls.superclass.name),
+          charOffset,
+          noLength,
+          fileUri);
+      actualCls.supertype = null;
+    }
     actualCls.mixedInType =
         mixedInType?.buildMixedInType(library, charOffset, fileUri);
     actualCls.isMixinDeclaration = isMixinDeclaration;
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 0baa13b..16a1b45 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
@@ -842,6 +842,8 @@
       accessProblem = message;
     }
   }
+
+  void checkBoundsInOutline(covariant typeEnvironment);
 }
 
 /// Unlike [Scope], this scope is used during construction of builders to
@@ -891,45 +893,46 @@
   /// Resolves type variables in [types] and propagate other types to [parent].
   void resolveTypes(
       List<TypeVariableBuilder> typeVariables, SourceLibraryBuilder library) {
-    // TODO(ahe): The input to this method, [typeVariables], shouldn't be just
-    // type variables. It should be everything that's in scope, for example,
-    // members (of a class) or formal parameters (of a method).
-    // Also, this doesn't work well with patching.
-    if (typeVariables == null) {
-      // If there are no type variables in the scope, propagate our types to be
-      // resolved in the parent declaration.
-      parent.types.addAll(types);
-    } else {
-      Map<String, TypeVariableBuilder> map = <String, TypeVariableBuilder>{};
+    Map<String, TypeVariableBuilder> map;
+    if (typeVariables != null) {
+      map = <String, TypeVariableBuilder>{};
       for (TypeVariableBuilder builder in typeVariables) {
         map[builder.name] = builder;
       }
-      for (UnresolvedType<T> type in types) {
-        Object nameOrQualified = type.builder.name;
-        String name = nameOrQualified is QualifiedName
-            ? nameOrQualified.qualifier
-            : nameOrQualified;
-        TypeVariableBuilder builder;
-        if (name != null) {
-          builder = map[name];
+    }
+    Scope scope;
+    for (UnresolvedType<T> type in types) {
+      Object nameOrQualified = type.builder.name;
+      String name = nameOrQualified is QualifiedName
+          ? nameOrQualified.qualifier
+          : nameOrQualified;
+      Declaration declaration;
+      if (name != null) {
+        if (members != null) {
+          declaration = members[name];
         }
-        if (builder == null) {
-          // Since name didn't resolve in this scope, propagate it to the
-          // parent declaration.
-          parent.addType(type);
-        } else if (nameOrQualified is QualifiedName) {
-          // Attempt to use type variable as prefix.
-          type.builder.bind(type.builder.buildInvalidType(
-              templateNotAPrefixInTypeAnnotation
-                  .withArguments(
-                      flattenName(nameOrQualified.qualifier, type.charOffset,
-                          type.fileUri),
-                      nameOrQualified.name)
-                  .withLocation(type.fileUri, type.charOffset, noLength)));
-        } else {
-          type.builder.bind(builder);
+        if (declaration == null && map != null) {
+          declaration = map[name];
         }
       }
+      if (declaration == null) {
+        // Since name didn't resolve in this scope, propagate it to the
+        // parent declaration.
+        parent.addType(type);
+      } else if (nameOrQualified is QualifiedName) {
+        // Attempt to use a member or type variable as a prefix.
+        type.builder.bind(type.builder.buildInvalidType(
+            templateNotAPrefixInTypeAnnotation
+                .withArguments(
+                    flattenName(nameOrQualified.qualifier, type.charOffset,
+                        type.fileUri),
+                    nameOrQualified.name)
+                .withLocation(type.fileUri, type.charOffset,
+                    nameOrQualified.endCharOffset - type.charOffset)));
+      } else {
+        scope ??= toScope(null).withTypeVariables(typeVariables);
+        type.resolveIn(scope, library);
+      }
     }
     types.clear();
   }
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 b7a0016..f1f468a 100644
--- a/pkg/front_end/lib/src/fasta/source/source_loader.dart
+++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart
@@ -831,6 +831,17 @@
     ticker.logMs("Checked overrides");
   }
 
+  void checkBounds() {
+    if (!target.strongMode) return;
+
+    builders.forEach((Uri uri, LibraryBuilder library) {
+      if (library is SourceLibraryBuilder) {
+        library.checkBoundsInOutline(typeInferenceEngine.typeSchemaEnvironment);
+      }
+    });
+    ticker.logMs("Checked type arguments of supers against the bounds");
+  }
+
   void checkOverrides(List<SourceClassBuilder> sourceClasses) {
     assert(hierarchy != null);
     for (SourceClassBuilder builder in sourceClasses) {
@@ -880,6 +891,22 @@
     ticker.logMs("Added noSuchMethod forwarders");
   }
 
+  void checkMixins(List<SourceClassBuilder> sourceClasses) {
+    for (SourceClassBuilder builder in sourceClasses) {
+      if (builder.library.loader == this) {
+        if (builder.isMixinDeclaration) {
+          builder.checkMixinDeclaration();
+        }
+
+        Class mixedInClass = builder.cls.mixedInClass;
+        if (mixedInClass != null && mixedInClass.isMixinDeclaration) {
+          builder.checkMixinApplication(hierarchy);
+        }
+      }
+    }
+    ticker.logMs("Checked mixin declaration applications");
+  }
+
   void createTypeInferenceEngine() {
     typeInferenceEngine =
         new ShadowTypeInferenceEngine(instrumentation, target.strongMode);
diff --git a/pkg/front_end/lib/src/fasta/target.dart b/pkg/front_end/lib/src/fasta/target.dart
index f2b0740..641d55a 100644
--- a/pkg/front_end/lib/src/fasta/target.dart
+++ b/pkg/front_end/lib/src/fasta/target.dart
@@ -20,9 +20,6 @@
 
   Target(this.ticker);
 
-  /// Instructs this target to include [uri] in its result.
-  void read(Uri uri);
-
   /// Build and return outlines for all libraries.
   Future<Component> buildOutlines();
 
diff --git a/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart b/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart
index 433632f..608b2bc 100644
--- a/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart
+++ b/pkg/front_end/lib/src/fasta/testing/kernel_chain.dart
@@ -23,23 +23,16 @@
 
 import 'package:kernel/naive_type_checker.dart' show StrongModeTypeChecker;
 
-import 'package:kernel/target/targets.dart' show Target;
-
 import 'package:kernel/text/ast_to_text.dart' show Printer;
 
 import 'package:testing/testing.dart'
-    show ChainContext, Result, StdioProcess, Step, TestDescription;
+    show ChainContext, Result, StdioProcess, Step;
 
 import '../../api_prototype/compiler_options.dart'
-    show CompilerOptions, FormattedMessage, Severity;
-
-import '../../api_prototype/kernel_generator.dart' show kernelForProgram;
+    show CompilerOptions, DiagnosticMessage;
 
 import '../../base/processed_options.dart' show ProcessedOptions;
 
-import '../../compute_platform_binaries_location.dart'
-    show computePlatformBinariesLocation;
-
 import '../compiler_context.dart' show CompilerContext;
 
 import '../kernel/verifier.dart' show verifyComponent;
@@ -74,25 +67,24 @@
 
   Future<Result<Component>> run(
       Component component, ChainContext context) async {
-    StringBuffer problems = new StringBuffer();
+    StringBuffer messages = new StringBuffer();
     ProcessedOptions options = new ProcessedOptions(
         options: new CompilerOptions()
-          ..onProblem = (FormattedMessage problem, Severity severity,
-              List<FormattedMessage> context) {
-            if (problems.isNotEmpty) {
-              problems.write("\n");
+          ..onDiagnostic = (DiagnosticMessage message) {
+            if (messages.isNotEmpty) {
+              messages.write("\n");
             }
-            problems.write(problem.formatted);
+            messages.writeAll(message.plainTextFormatted, "\n");
           });
     return await CompilerContext.runWithOptions(options, (_) async {
       List<LocatedMessage> verificationErrors = verifyComponent(component,
           isOutline: !fullCompile, skipPlatform: true);
-      assert(verificationErrors.isEmpty || problems.isNotEmpty);
-      if (problems.isEmpty) {
+      assert(verificationErrors.isEmpty || messages.isNotEmpty);
+      if (messages.isEmpty) {
         return pass(component);
       } else {
         return new Result<Component>(null,
-            context.expectationSet["VerificationError"], "$problems", null);
+            context.expectationSet["VerificationError"], "$messages", null);
       }
     }, errorOnMissingInput: false);
   }
@@ -135,20 +127,20 @@
   String get name => "match expectations";
 
   Future<Result<Component>> run(Component component, dynamic context) async {
-    StringBuffer problems = context.componentToProblems[component];
+    StringBuffer messages = context.componentToDiagnostics[component];
     Library library = component.libraries
         .firstWhere((Library library) => library.importUri.scheme != "dart");
     Uri uri = library.importUri;
     Uri base = uri.resolve(".");
     Uri dartBase = Uri.base;
     StringBuffer buffer = new StringBuffer();
-    if (problems.isNotEmpty) {
+    if (messages.isNotEmpty) {
       buffer.write("// Formatted problems:\n//");
-      for (String line in "${problems}".split("\n")) {
+      for (String line in "${messages}".split("\n")) {
         buffer.write("\n// $line".trimRight());
       }
       buffer.write("\n\n");
-      problems.clear();
+      messages.clear();
     }
     for (Field field in library.fields) {
       if (field.name.name != "#errors") continue;
@@ -247,49 +239,6 @@
   }
 }
 
-/// A `package:testing` step that runs the `package:front_end` compiler to
-/// generate a kernel component for an individual file.
-///
-/// Most options are hard-coded, but if necessary they could be moved to the
-/// [CompileContext] object in the future.
-class Compile extends Step<TestDescription, Component, CompileContext> {
-  const Compile();
-
-  String get name => "fasta compilation";
-
-  Future<Result<Component>> run(
-      TestDescription description, CompileContext context) async {
-    Result<Component> result;
-    Uri sdk = Uri.base.resolve("sdk/");
-    var options = new CompilerOptions()
-      ..sdkRoot = sdk
-      ..compileSdk = true
-      ..packagesFileUri = Uri.base.resolve('.packages')
-      ..strongMode = context.strongMode
-      ..onProblem = (FormattedMessage problem, Severity severity,
-          List<FormattedMessage> context) {
-        result ??= fail(null, problem.formatted);
-      };
-    if (context.target != null) {
-      options.target = context.target;
-      // Do not link platform.dill, but recompile the platform libraries. This
-      // ensures that if target defines extra libraries that those get included
-      // too.
-    } else {
-      options.linkedDependencies = [
-        computePlatformBinariesLocation().resolve("vm_platform.dill"),
-      ];
-    }
-    Component p = await kernelForProgram(description.uri, options);
-    return result ??= pass(p);
-  }
-}
-
-abstract class CompileContext implements ChainContext {
-  bool get strongMode;
-  Target get target;
-}
-
 class BytesCollector implements Sink<List<int>> {
   final List<List<int>> lists = <List<int>>[];
 
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 5a7e58b..3c704fe 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
@@ -4,11 +4,17 @@
 
 import 'package:kernel/ast.dart' show Arguments, Expression, FunctionType;
 
+import 'package:kernel/core_types.dart' show CoreTypes;
+
 import '../fasta_codes.dart' show LocatedMessage, Message;
 
 import '../kernel/kernel_shadow_ast.dart' show SyntheticExpressionJudgment;
 
 abstract class InferenceHelper {
+  CoreTypes get coreTypes;
+
+  Uri get uri;
+
   SyntheticExpressionJudgment buildProblem(
       Message message, int charOffset, int length,
       {List<LocatedMessage> context, bool suppressMessage});
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
index 2829d66..c5ebbb1 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inference_engine.dart
@@ -16,23 +16,22 @@
         TypedefType,
         VariableDeclaration;
 
-import 'package:kernel/class_hierarchy.dart';
+import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
 
-import 'package:kernel/core_types.dart';
+import 'package:kernel/core_types.dart' show CoreTypes;
 
-import '../../base/instrumentation.dart';
+import '../../base/instrumentation.dart' show Instrumentation;
 
-import '../builder/library_builder.dart';
+import '../kernel/kernel_builder.dart'
+    show LibraryBuilder, KernelLibraryBuilder;
 
-import '../kernel/kernel_shadow_ast.dart';
+import '../kernel/kernel_shadow_ast.dart' show ShadowField;
 
 import '../messages.dart' show noLength, templateCantInferTypeDueToCircularity;
 
-import '../source/source_library_builder.dart';
+import 'type_inferrer.dart' show TypeInferrer, TypeInferrerImpl;
 
-import 'type_inferrer.dart';
-
-import 'type_schema_environment.dart';
+import 'type_schema_environment.dart' show TypeSchemaEnvironment;
 
 /// Concrete class derived from [InferenceNode] to represent type inference of a
 /// field based on its initializer.
@@ -56,7 +55,7 @@
       // this field.
       if (typeInferrer != null) {
         var inferredType = typeInferrer
-            .inferDeclarationType(typeInferrer.inferFieldTopLevel(field, true));
+            .inferDeclarationType(typeInferrer.inferFieldTopLevel(field));
         if (isCircular) {
           // Report the appropriate error.
           _library.addProblem(
@@ -239,12 +238,12 @@
   /// Creates a type inferrer for use inside of a method body declared in a file
   /// with the given [uri].
   TypeInferrer createLocalTypeInferrer(
-      Uri uri, InterfaceType thisType, SourceLibraryBuilder library);
+      Uri uri, InterfaceType thisType, KernelLibraryBuilder library);
 
   /// Creates a [TypeInferrer] object which is ready to perform type inference
   /// on the given [field].
   TypeInferrer createTopLevelTypeInferrer(
-      InterfaceType thisType, ShadowField field);
+      InterfaceType thisType, ShadowField field, KernelLibraryBuilder library);
 
   /// Retrieve the [TypeInferrer] for the given [field], which was created by
   /// a previous call to [createTopLevelTypeInferrer].
diff --git a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
index 2ad0724..6c4a2c6 100644
--- a/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
+++ b/pkg/front_end/lib/src/fasta/type_inference/type_inferrer.dart
@@ -75,6 +75,8 @@
         templateArgumentTypeNotAssignable,
         templateDuplicatedNamedArgument,
         templateImplicitCallOfNonMethod,
+        templateInternalProblemNoInferredTypeStored,
+        templateInternalProblemStoringMultipleInferredTypes,
         templateInvalidAssignment,
         templateInvalidCastFunctionExpr,
         templateInvalidCastLiteralList,
@@ -89,27 +91,28 @@
         templateUndefinedMethod,
         templateUndefinedSetter;
 
+import '../kernel/kernel_builder.dart' show KernelLibraryBuilder;
+
 import '../kernel/kernel_expression_generator.dart' show buildIsNull;
 
 import '../kernel/kernel_shadow_ast.dart'
     show
-        ArgumentsJudgment,
         ExpressionJudgment,
-        NullJudgment,
         ShadowClass,
         ShadowField,
         ShadowMember,
         VariableDeclarationJudgment,
-        getExplicitTypeArguments;
+        getExplicitTypeArguments,
+        getInferredType;
 
-import '../names.dart' show callName;
+import '../names.dart' show callName, unaryMinusName;
 
-import '../problems.dart' show unexpected, unhandled;
-
-import '../source/source_library_builder.dart' show SourceLibraryBuilder;
+import '../problems.dart' show internalProblem, unexpected, unhandled;
 
 import '../source/source_loader.dart' show SourceLoader;
 
+import '../kernel/type_algorithms.dart' show hasAnyTypeVariables;
+
 import 'inference_helper.dart' show InferenceHelper;
 
 import 'interface_resolver.dart' show ForwardingNode, SyntheticAccessor;
@@ -439,6 +442,12 @@
 /// This class describes the interface for use by clients of type inference
 /// (e.g. BodyBuilder).  Derived classes should derive from [TypeInferrerImpl].
 abstract class TypeInferrer {
+  final CoreTypes coreTypes;
+
+  TypeInferrer(this.coreTypes);
+
+  KernelLibraryBuilder get library;
+
   /// Gets the [TypePromoter] that can be used to perform type promotion within
   /// this method body or initializer.
   TypePromoter get typePromoter;
@@ -486,7 +495,10 @@
   @override
   final TypeSchemaEnvironment typeSchemaEnvironment;
 
-  TypeInferrerDisabled(this.typeSchemaEnvironment);
+  TypeInferrerDisabled(this.typeSchemaEnvironment) : super(null);
+
+  @override
+  KernelLibraryBuilder get library => null;
 
   @override
   Uri get uri => null;
@@ -536,8 +548,6 @@
   /// should apply.
   final bool isTopLevel;
 
-  final CoreTypes coreTypes;
-
   final bool strongMode;
 
   final ClassHierarchy classHierarchy;
@@ -548,7 +558,10 @@
 
   final InterfaceType thisType;
 
-  final SourceLibraryBuilder library;
+  @override
+  final KernelLibraryBuilder library;
+
+  final Map<TreeNode, DartType> inferredTypesMap = <TreeNode, DartType>{};
 
   InferenceHelper helper;
 
@@ -566,12 +579,38 @@
 
   TypeInferrerImpl(
       this.engine, this.uri, bool topLevel, this.thisType, this.library)
-      : coreTypes = engine.coreTypes,
-        strongMode = engine.strongMode,
+      : strongMode = engine.strongMode,
         classHierarchy = engine.classHierarchy,
         instrumentation = topLevel ? null : engine.instrumentation,
         typeSchemaEnvironment = engine.typeSchemaEnvironment,
-        isTopLevel = topLevel;
+        isTopLevel = topLevel,
+        super(engine.coreTypes);
+
+  DartType storeInferredType(TreeNode node, DartType type) {
+    if (node is ExpressionJudgment) {
+      return node.inferredType = type;
+    } else {
+      if (inferredTypesMap.containsKey(node)) {
+        internalProblem(
+            templateInternalProblemStoringMultipleInferredTypes.withArguments(
+                inferredTypesMap[node], "${node.runtimeType}"),
+            node.fileOffset,
+            uri);
+      }
+      return inferredTypesMap[node] = type;
+    }
+  }
+
+  DartType readInferredType(TreeNode node) {
+    if (!inferredTypesMap.containsKey(node) && !isTopLevel) {
+      internalProblem(
+          templateInternalProblemNoInferredTypeStored
+              .withArguments("${node.runtimeType}"),
+          node.fileOffset,
+          uri);
+    }
+    return inferredTypesMap[node];
+  }
 
   /// Gets the type promoter that should be used to promote types during
   /// inference.
@@ -677,7 +716,17 @@
       // Error: not assignable.  Perform error recovery.
       var parent = expression.parent;
       var errorNode = helper.wrapInProblem(
-          expression,
+          new AsExpression(
+              expression,
+              // TODO(ahe): The outline phase doesn't correctly remove invalid
+              // uses of type variables, for example, on static members. Once
+              // that has been fixed, we should always be able to use
+              // [expectedType] directly here.
+              hasAnyTypeVariables(expectedType)
+                  ? const BottomType()
+                  : expectedType)
+            ..isTypeError = true
+            ..fileOffset = expression.fileOffset,
           (template ?? templateInvalidAssignment)
               .withArguments(actualType, expectedType),
           noLength);
@@ -725,7 +774,7 @@
       Expression expression,
       Expression receiver,
       bool setter: false,
-      bool silent: false}) {
+      bool instrumented: true}) {
     assert(receiverType != null && isKnown(receiverType));
 
     // Our non-strong golden files currently don't include interface
@@ -743,7 +792,7 @@
         ? receiverType.classNode
         : coreTypes.objectClass;
     Member interfaceMember = _getInterfaceMember(classNode, name, setter);
-    if (!silent &&
+    if (instrumented &&
         receiverType != const DynamicType() &&
         interfaceMember != null) {
       instrumentation?.record(uri, fileOffset, 'target',
@@ -756,15 +805,22 @@
         !(receiverType == coreTypes.functionClass.rawType &&
             name.name == 'call') &&
         errorTemplate != null) {
+      int length = name.name.length;
+      if (identical(name.name, callName.name) ||
+          identical(name.name, unaryMinusName.name)) {
+        length = 1;
+      }
       expression.parent.replaceChild(
           expression,
           new Let(
               new VariableDeclaration.forValue(receiver)
                 ..fileOffset = receiver.fileOffset,
-              helper.buildProblem(
-                  errorTemplate.withArguments(name.name, receiverType),
-                  fileOffset,
-                  noLength))
+              helper
+                  .buildProblem(
+                      errorTemplate.withArguments(name.name, receiverType),
+                      fileOffset,
+                      length)
+                  .desugared)
             ..fileOffset = fileOffset);
     }
     return interfaceMember;
@@ -774,7 +830,7 @@
   /// [methodInvocation].
   Object findMethodInvocationMember(
       DartType receiverType, InvocationExpression methodInvocation,
-      {bool silent: false}) {
+      {bool instrumented: true}) {
     // TODO(paulberry): could we add getters to InvocationExpression to make
     // these is-checks unnecessary?
     if (methodInvocation is MethodInvocation) {
@@ -783,7 +839,7 @@
           errorTemplate: templateUndefinedMethod,
           expression: methodInvocation,
           receiver: methodInvocation.receiver,
-          silent: silent);
+          instrumented: instrumented);
       if (receiverType == const DynamicType() && interfaceMember is Procedure) {
         var arguments = methodInvocation.arguments;
         var signature = interfaceMember.function;
@@ -798,7 +854,7 @@
             return null;
           }
         }
-        if (instrumentation != null && !silent) {
+        if (instrumented && instrumentation != null) {
           instrumentation.record(uri, methodInvocation.fileOffset, 'target',
               new InstrumentationValueForMember(interfaceMember));
         }
@@ -811,7 +867,7 @@
       assert(receiverType != const DynamicType());
       var interfaceMember = findInterfaceMember(
           receiverType, methodInvocation.name, methodInvocation.fileOffset,
-          silent: silent);
+          instrumented: instrumented);
       if (strongMode && interfaceMember is Member) {
         methodInvocation.interfaceTarget = interfaceMember;
       }
@@ -825,7 +881,7 @@
   /// Finds a member of [receiverType] called [name], and if it is found,
   /// reports it through instrumentation and records it in [propertyGet].
   Object findPropertyGetMember(DartType receiverType, Expression propertyGet,
-      {bool silent: false}) {
+      {bool instrumented: true}) {
     // TODO(paulberry): could we add a common base class to PropertyGet and
     // SuperPropertyGet to make these is-checks unnecessary?
     if (propertyGet is PropertyGet) {
@@ -834,10 +890,10 @@
           errorTemplate: templateUndefinedGetter,
           expression: propertyGet,
           receiver: propertyGet.receiver,
-          silent: silent);
+          instrumented: instrumented);
       if (strongMode && interfaceMember is Member) {
-        if (instrumentation != null &&
-            !silent &&
+        if (instrumented &&
+            instrumentation != null &&
             receiverType == const DynamicType()) {
           instrumentation.record(uri, propertyGet.fileOffset, 'target',
               new InstrumentationValueForMember(interfaceMember));
@@ -849,7 +905,7 @@
       assert(receiverType != const DynamicType());
       var interfaceMember = findInterfaceMember(
           receiverType, propertyGet.name, propertyGet.fileOffset,
-          silent: silent);
+          instrumented: instrumented);
       if (strongMode && interfaceMember is Member) {
         propertyGet.interfaceTarget = interfaceMember;
       }
@@ -863,7 +919,7 @@
   /// Finds a member of [receiverType] called [name], and if it is found,
   /// reports it through instrumentation and records it in [propertySet].
   Object findPropertySetMember(DartType receiverType, Expression propertySet,
-      {bool silent: false}) {
+      {bool instrumented: true}) {
     if (propertySet is PropertySet) {
       var interfaceMember = findInterfaceMember(
           receiverType, propertySet.name, propertySet.fileOffset,
@@ -871,10 +927,10 @@
           expression: propertySet,
           receiver: propertySet.receiver,
           setter: true,
-          silent: silent);
+          instrumented: instrumented);
       if (strongMode && interfaceMember is Member) {
-        if (instrumentation != null &&
-            !silent &&
+        if (instrumented &&
+            instrumentation != null &&
             receiverType == const DynamicType()) {
           instrumentation.record(uri, propertySet.fileOffset, 'target',
               new InstrumentationValueForMember(interfaceMember));
@@ -886,7 +942,7 @@
       assert(receiverType != const DynamicType());
       var interfaceMember = findInterfaceMember(
           receiverType, propertySet.name, propertySet.fileOffset,
-          setter: true, silent: silent);
+          setter: true, instrumented: instrumented);
       if (strongMode && interfaceMember is Member) {
         propertySet.interfaceTarget = interfaceMember;
       }
@@ -1140,7 +1196,9 @@
     assert(closureContext == null);
     this.helper = helper;
     var actualType = inferExpression(
-        initializer, declaredType ?? const UnknownType(), declaredType != null,
+        initializer,
+        declaredType ?? const UnknownType(),
+        !isTopLevel || declaredType != null,
         isVoidAllowed: true);
     if (declaredType != null) {
       ensureAssignable(
@@ -1154,7 +1212,7 @@
   ///
   /// Derived classes should provide an implementation that calls
   /// [inferExpression] for the given [field]'s initializer expression.
-  DartType inferFieldTopLevel(ShadowField field, bool typeNeeded);
+  DartType inferFieldTopLevel(ShadowField field);
 
   @override
   void inferFunctionBody(InferenceHelper helper, DartType returnType,
@@ -1170,14 +1228,14 @@
   /// Performs the type inference steps that are shared by all kinds of
   /// invocations (constructors, instance methods, and static methods).
   ExpressionInferenceResult inferInvocation(DartType typeContext, int offset,
-      FunctionType calleeType, DartType returnType, ArgumentsJudgment arguments,
+      FunctionType calleeType, DartType returnType, Arguments arguments,
       {bool isOverloadedArithmeticOperator: false,
       DartType receiverType,
       bool skipTypeArgumentInference: false,
       bool isConst: false}) {
     lastInferredSubstitution = null;
     lastCalleeType = null;
-    var calleeTypeParameters = calleeType.typeParameters;
+    List<TypeParameter> calleeTypeParameters = calleeType.typeParameters;
     if (calleeTypeParameters.isNotEmpty) {
       // It's possible that one of the callee type parameters might match a type
       // that already exists as part of inference (e.g. the type of an
@@ -1358,18 +1416,18 @@
         inferMetadataKeepingHelper(parameter.annotations);
         if (i >= function.requiredParameterCount &&
             parameter.initializer == null) {
-          parameter.initializer = new NullJudgment()..parent = parameter;
+          parameter.initializer = new NullLiteral()..parent = parameter;
         }
         if (parameter.initializer != null) {
-          inferExpression(parameter.initializer, parameter.type, false);
+          inferExpression(parameter.initializer, parameter.type, !isTopLevel);
         }
       }
       for (var parameter in function.namedParameters) {
         inferMetadataKeepingHelper(parameter.annotations);
         if (parameter.initializer == null) {
-          parameter.initializer = new NullJudgment()..parent = parameter;
+          parameter.initializer = new NullLiteral()..parent = parameter;
         }
-        inferExpression(parameter.initializer, parameter.type, false);
+        inferExpression(parameter.initializer, parameter.type, !isTopLevel);
       }
     }
 
@@ -1506,7 +1564,7 @@
       var parents = annotations.map((e) => e.parent).toList();
       new ListLiteral(annotations);
       for (var annotation in annotations) {
-        inferExpression(annotation, const UnknownType(), false);
+        inferExpression(annotation, const UnknownType(), !isTopLevel);
       }
       for (int i = 0; i < annotations.length; ++i) {
         annotations[i].parent = parents[i];
@@ -1534,19 +1592,18 @@
     if (strongMode) {
       receiverVariable?.type = receiverType;
     }
-    bool isOverloadedArithmeticOperator = false;
     if (desugaredInvocation != null) {
       interfaceMember =
           findMethodInvocationMember(receiverType, desugaredInvocation);
       methodName = desugaredInvocation.name;
       arguments = desugaredInvocation.arguments;
     }
-    if (interfaceMember is Procedure) {
-      isOverloadedArithmeticOperator = typeSchemaEnvironment
-          .isOverloadedArithmeticOperatorAndType(interfaceMember, receiverType);
-    }
+    bool isOverloadedArithmeticOperator = interfaceMember is Procedure &&
+        typeSchemaEnvironment.isOverloadedArithmeticOperatorAndType(
+            interfaceMember, receiverType);
     var calleeType = getCalleeType(interfaceMember, receiverType);
     var functionType = getCalleeFunctionType(calleeType, !isImplicitCall);
+
     if (interfaceMember != null &&
         calleeType is! DynamicType &&
         calleeType != coreTypes.functionClass.rawType &&
@@ -1585,6 +1642,39 @@
         parent?.replaceChild(expression, errorNode);
       }
     }
+
+    // If [arguments] were inferred, check them.
+    // TODO(dmitryas): Figure out why [library] is sometimes null.
+    if (library != null) {
+      // [actualReceiverType], [interfaceTarget], and [actualMethodName] below
+      // are for a workaround for the cases like the following:
+      //
+      //     class C1 { var f = new C2(); }
+      //     class C2 { int call<X extends num>(X x) => 42; }
+      //     main() { C1 c = new C1(); c.f("foobar"); }
+      DartType actualReceiverType;
+      Member interfaceTarget;
+      Name actualMethodName;
+      if (calleeType is InterfaceType) {
+        actualReceiverType = calleeType;
+        interfaceTarget = null;
+        actualMethodName = callName;
+      } else {
+        actualReceiverType = receiverType;
+        interfaceTarget = interfaceMember is Member ? interfaceMember : null;
+        actualMethodName = methodName;
+      }
+      library.checkBoundsInMethodInvocation(
+          actualReceiverType,
+          typeSchemaEnvironment,
+          this,
+          actualMethodName,
+          interfaceTarget,
+          arguments,
+          fileOffset,
+          inferred: getExplicitTypeArguments(arguments) == null);
+    }
+
     return new ExpressionInferenceResult(null, inferredType);
   }
 
@@ -1602,12 +1692,8 @@
 
   /// Performs the core type inference algorithm for property gets (this handles
   /// both null-aware and non-null-aware property gets).
-  void inferPropertyGet(
-      ExpressionJudgment expression,
-      ExpressionJudgment receiver,
-      int fileOffset,
-      bool forSyntheticToken,
-      DartType typeContext,
+  void inferPropertyGet(Expression expression, Expression receiver,
+      int fileOffset, DartType typeContext,
       {VariableDeclaration receiverVariable,
       PropertyGet desugaredGet,
       Object interfaceMember,
@@ -1618,7 +1704,7 @@
       receiverType = thisType;
     } else {
       inferExpression(receiver, const UnknownType(), true);
-      receiverType = receiver.inferredType;
+      receiverType = getInferredType(receiver, this);
     }
     if (strongMode) {
       receiverVariable?.type = receiverType;
@@ -1646,7 +1732,7 @@
       inferredType =
           instantiateTearOff(inferredType, typeContext, replacedExpression);
     }
-    expression.inferredType = inferredType;
+    storeInferredType(expression, inferredType);
   }
 
   /// Modifies a type as appropriate when inferring a closure return type.
diff --git a/pkg/front_end/lib/src/fasta/uri_translator.dart b/pkg/front_end/lib/src/fasta/uri_translator.dart
index 4c98305..6a3b3a9 100644
--- a/pkg/front_end/lib/src/fasta/uri_translator.dart
+++ b/pkg/front_end/lib/src/fasta/uri_translator.dart
@@ -4,29 +4,81 @@
 
 library fasta.uri_translator;
 
-/// Instances of [UriTranslator] translate absolute URIs into corresponding
-/// file URIs in a [FileSystem]. Translated URIs are typically `file:` URIs,
-/// but may use a different scheme depending on the used custom file system.
-abstract class UriTranslator {
-  /// Return the URIs of patches that should be applied to the platform library
-  /// with the given [libraryName], or `null` if there are no patches to apply.
-  List<Uri> getDartPatches(String libraryName);
+import 'package:package_config/packages.dart' show Packages;
 
-  /// Returns `true` if [uri] is private to the platform libraries (and thus
-  /// not accessible from user code).
-  bool isPlatformImplementation(Uri uri);
+import '../base/libraries_specification.dart' show TargetLibrariesSpecification;
+import 'compiler_context.dart' show CompilerContext;
+import 'fasta_codes.dart';
+import 'severity.dart' show Severity;
 
-  /// Return the corresponding file URI for the given absolute [uri], or `null`
-  /// if there is no corresponding file URI, or the given [uri] is already a
-  /// file URI.
-  ///
-  /// Note: this only translates the URI, there is no guarantee that the
-  /// corresponding file exists in the file system.
-  ///
-  /// If [reportMessage] is true a message will be reported via
-  /// [CompilerContext.current].
-  Uri translate(Uri uri, [bool reportMessage = true]);
+class UriTranslator {
+  final TargetLibrariesSpecification dartLibraries;
 
-  /// Whether the given [libraryName] is supported by the underlying target.
-  bool isLibrarySupported(String libraryName);
+  final Packages packages;
+
+  UriTranslator(this.dartLibraries, this.packages);
+
+  List<Uri> getDartPatches(String libraryName) =>
+      dartLibraries.libraryInfoFor(libraryName)?.patches;
+
+  bool isPlatformImplementation(Uri uri) {
+    if (uri.scheme != "dart") return false;
+    String path = uri.path;
+    return dartLibraries.libraryInfoFor(path) == null || path.startsWith("_");
+  }
+
+  // TODO(sigmund, ahe): consider expanding this API to include an error
+  // callback, so we can provide an error location when one is available. For
+  // example, if the error occurs in an `import`.
+  Uri translate(Uri uri, [bool reportMessage = true]) {
+    if (uri.scheme == "dart") return _translateDartUri(uri);
+    if (uri.scheme == "package") {
+      return _translatePackageUri(uri, reportMessage);
+    }
+    return null;
+  }
+
+  bool isLibrarySupported(String libraryName) {
+    // TODO(sigmund): change this to `?? false` when all backends provide the
+    // `libraries.json` file by default (Issue #32657).
+    return dartLibraries.libraryInfoFor(libraryName)?.isSupported ?? true;
+  }
+
+  Uri _translateDartUri(Uri uri) {
+    if (!uri.isScheme('dart')) return null;
+    return dartLibraries.libraryInfoFor(uri.path)?.uri;
+  }
+
+  Uri _translatePackageUri(Uri uri, bool reportMessage) {
+    try {
+      // TODO(sigmund): once we remove the `parse` API, we can ensure that
+      // packages will never be null and get rid of `?` below.
+      return packages?.resolve(uri,
+          notFound: reportMessage
+              ? _packageUriNotFound
+              : _packageUriNotFoundNoReport);
+    } on ArgumentError catch (e) {
+      // TODO(sigmund): catch a more precise error when
+      // https://github.com/dart-lang/package_config/issues/40 is fixed.
+      if (reportMessage) {
+        CompilerContext.current.reportWithoutLocation(
+            templateInvalidPackageUri.withArguments(uri, '$e'), Severity.error);
+      }
+      return null;
+    }
+  }
+
+  static Uri _packageUriNotFound(Uri uri) {
+    String name = uri.pathSegments.first;
+    CompilerContext.current.reportWithoutLocation(
+        templatePackageNotFound.withArguments(name, uri), Severity.error);
+    // TODO(sigmund, ahe): ensure we only report an error once,
+    // this null result will likely cause another error further down in the
+    // compiler.
+    return null;
+  }
+
+  static Uri _packageUriNotFoundNoReport(Uri uri) {
+    return null;
+  }
 }
diff --git a/pkg/front_end/lib/src/fasta/uri_translator_impl.dart b/pkg/front_end/lib/src/fasta/uri_translator_impl.dart
deleted file mode 100644
index f2393d4..0000000
--- a/pkg/front_end/lib/src/fasta/uri_translator_impl.dart
+++ /dev/null
@@ -1,97 +0,0 @@
-// 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 fasta.uri_translator_impl;
-
-import 'package:package_config/packages.dart' show Packages;
-
-import '../base/libraries_specification.dart' show TargetLibrariesSpecification;
-import 'compiler_context.dart' show CompilerContext;
-import 'fasta_codes.dart';
-import 'severity.dart' show Severity;
-import 'uri_translator.dart';
-
-/// Implementation of [UriTranslator] for absolute `dart` and `package` URIs.
-class UriTranslatorImpl implements UriTranslator {
-  /// Library information for platform libraries.
-  final TargetLibrariesSpecification dartLibraries;
-
-  /// Mapping from package names (e.g. `angular`) to the file URIs.
-  final Packages packages;
-
-  UriTranslatorImpl(this.dartLibraries, this.packages);
-
-  @override
-  List<Uri> getDartPatches(String libraryName) =>
-      dartLibraries.libraryInfoFor(libraryName)?.patches;
-
-  @override
-  bool isPlatformImplementation(Uri uri) {
-    if (uri.scheme != "dart") return false;
-    String path = uri.path;
-    return dartLibraries.libraryInfoFor(path) == null || path.startsWith("_");
-  }
-
-  @override
-  // TODO(sigmund, ahe): consider expanding this API to include an error
-  // callback, so we can provide an error location when one is available. For
-  // example, if the error occurs in an `import`.
-  Uri translate(Uri uri, [bool reportMessage = true]) {
-    if (uri.scheme == "dart") return _translateDartUri(uri);
-    if (uri.scheme == "package") {
-      return _translatePackageUri(uri, reportMessage);
-    }
-    return null;
-  }
-
-  @override
-  bool isLibrarySupported(String libraryName) {
-    // TODO(sigmund): change this to `?? false` when all backends provide the
-    // `libraries.json` file by default (Issue #32657).
-    return dartLibraries.libraryInfoFor(libraryName)?.isSupported ?? true;
-  }
-
-  /// Return the file URI that corresponds to the given `dart` URI, or `null`
-  /// if there is no corresponding Dart library registered.
-  Uri _translateDartUri(Uri uri) {
-    if (!uri.isScheme('dart')) return null;
-    return dartLibraries.libraryInfoFor(uri.path)?.uri;
-  }
-
-  /// Return the file URI that corresponds to the given `package` URI, or
-  /// `null` if the `package` [uri] format is invalid, or there is no
-  /// corresponding package registered.
-  Uri _translatePackageUri(Uri uri, bool reportMessage) {
-    try {
-      // TODO(sigmund): once we remove the `parse` API, we can ensure that
-      // packages will never be null and get rid of `?` below.
-      return packages?.resolve(uri,
-          notFound: reportMessage
-              ? _packageUriNotFound
-              : _packageUriNotFoundNoReport);
-    } on ArgumentError catch (e) {
-      // TODO(sigmund): catch a more precise error when
-      // https://github.com/dart-lang/package_config/issues/40 is fixed.
-      if (reportMessage) {
-        CompilerContext.current.reportWithoutLocation(
-            templateInvalidPackageUri.withArguments(uri, '$e'), Severity.error);
-      }
-      return null;
-    }
-  }
-
-  static Uri _packageUriNotFound(Uri uri) {
-    String name = uri.pathSegments.first;
-    CompilerContext.current.reportWithoutLocation(
-        templatePackageNotFound.withArguments(name, uri), Severity.error);
-    // TODO(sigmund, ahe): ensure we only report an error once,
-    // this null result will likely cause another error further down in the
-    // compiler.
-    return null;
-  }
-
-  static Uri _packageUriNotFoundNoReport(Uri uri) {
-    return null;
-  }
-}
diff --git a/pkg/front_end/lib/src/kernel_generator_impl.dart b/pkg/front_end/lib/src/kernel_generator_impl.dart
index 25b0ede..61d49fb 100644
--- a/pkg/front_end/lib/src/kernel_generator_impl.dart
+++ b/pkg/front_end/lib/src/kernel_generator_impl.dart
@@ -17,8 +17,6 @@
 
 import 'fasta/dill/dill_target.dart' show DillTarget;
 
-import 'fasta/fasta_codes.dart' show LocatedMessage;
-
 import 'fasta/kernel/kernel_target.dart' show KernelTarget;
 
 import 'fasta/kernel/utils.dart' show printComponentText, serializeComponent;
@@ -54,117 +52,109 @@
   var fs = options.fileSystem;
 
   Loader sourceLoader;
-  return withCrashReporting<CompilerResult>(
-      () async {
-        UriTranslator uriTranslator = await options.getUriTranslator();
+  return withCrashReporting<CompilerResult>(() async {
+    UriTranslator uriTranslator = await options.getUriTranslator();
 
-        var dillTarget =
-            new DillTarget(options.ticker, uriTranslator, options.target);
+    var dillTarget =
+        new DillTarget(options.ticker, uriTranslator, options.target);
 
-        Set<Uri> externalLibs(Component component) {
-          return component.libraries
-              .where((lib) => lib.isExternal)
-              .map((lib) => lib.importUri)
-              .toSet();
+    Set<Uri> externalLibs(Component component) {
+      return component.libraries
+          .where((lib) => lib.isExternal)
+          .map((lib) => lib.importUri)
+          .toSet();
+    }
+
+    var sdkSummary = await options.loadSdkSummary(null);
+    // By using the nameRoot of the the summary, we enable sharing the
+    // sdkSummary between multiple invocations.
+    CanonicalName nameRoot = sdkSummary?.root ?? new CanonicalName.root();
+    if (sdkSummary != null) {
+      var excluded = externalLibs(sdkSummary);
+      dillTarget.loader.appendLibraries(sdkSummary,
+          filter: (uri) => !excluded.contains(uri));
+    }
+
+    // TODO(sigmund): provide better error reporting if input summaries or
+    // linked dependencies were listed out of order (or provide mechanism to
+    // sort them).
+    for (var inputSummary in await options.loadInputSummaries(nameRoot)) {
+      var excluded = externalLibs(inputSummary);
+      dillTarget.loader.appendLibraries(inputSummary,
+          filter: (uri) => !excluded.contains(uri));
+    }
+
+    // All summaries are considered external and shouldn't include source-info.
+    dillTarget.loader.libraries.forEach((lib) {
+      // TODO(ahe): Don't do this, and remove [external_state_snapshot.dart].
+      lib.isExternal = true;
+    });
+
+    // Linked dependencies are meant to be part of the component so they are not
+    // marked external.
+    for (var dependency in await options.loadLinkDependencies(nameRoot)) {
+      var excluded = externalLibs(dependency);
+      dillTarget.loader.appendLibraries(dependency,
+          filter: (uri) => !excluded.contains(uri));
+    }
+
+    await dillTarget.buildOutlines();
+
+    var kernelTarget = new KernelTarget(fs, false, dillTarget, uriTranslator);
+    sourceLoader = kernelTarget.loader;
+    kernelTarget.setEntryPoints(options.inputs);
+    Component summaryComponent =
+        await kernelTarget.buildOutlines(nameRoot: nameRoot);
+    List<int> summary = null;
+    if (buildSummary) {
+      if (options.verify) {
+        for (var error in verifyComponent(summaryComponent)) {
+          options.report(error, Severity.error);
         }
+      }
+      if (options.debugDump) {
+        printComponentText(summaryComponent,
+            libraryFilter: kernelTarget.isSourceLibrary);
+      }
 
-        var sdkSummary = await options.loadSdkSummary(null);
-        // By using the nameRoot of the the summary, we enable sharing the
-        // sdkSummary between multiple invocations.
-        CanonicalName nameRoot = sdkSummary?.root ?? new CanonicalName.root();
-        if (sdkSummary != null) {
-          var excluded = externalLibs(sdkSummary);
-          dillTarget.loader.appendLibraries(sdkSummary,
-              filter: (uri) => !excluded.contains(uri));
-        }
+      // Copy the component to exclude the uriToSource map from the summary.
+      //
+      // Note: we don't pass the library argument to the constructor to
+      // preserve the the libraries parent pointer (it should continue to point
+      // to the component within KernelTarget).
+      var trimmedSummaryComponent =
+          new Component(nameRoot: summaryComponent.root)
+            ..libraries.addAll(truncateSummary
+                ? kernelTarget.loader.libraries
+                : summaryComponent.libraries);
+      trimmedSummaryComponent.metadata.addAll(summaryComponent.metadata);
 
-        // TODO(sigmund): provide better error reporting if input summaries or
-        // linked dependencies were listed out of order (or provide mechanism to
-        // sort them).
-        for (var inputSummary in await options.loadInputSummaries(nameRoot)) {
-          var excluded = externalLibs(inputSummary);
-          dillTarget.loader.appendLibraries(inputSummary,
-              filter: (uri) => !excluded.contains(uri));
-        }
+      // As documented, we only run outline transformations when we are building
+      // summaries without building a full component (at this time, that's
+      // the only need we have for these transformations).
+      if (!buildComponent) {
+        options.target.performOutlineTransformations(trimmedSummaryComponent);
+        options.ticker.logMs("Transformed outline");
+      }
+      summary = serializeComponent(trimmedSummaryComponent);
+      options.ticker.logMs("Generated outline");
+    }
 
-        // All summaries are considered external and shouldn't include source-info.
-        dillTarget.loader.libraries.forEach((lib) {
-          // TODO(ahe): Don't do this, and remove [external_state_snapshot.dart].
-          lib.isExternal = true;
-        });
+    Component component;
+    if (buildComponent) {
+      component = await kernelTarget.buildComponent(verify: options.verify);
+      if (options.debugDump) {
+        printComponentText(component,
+            libraryFilter: kernelTarget.isSourceLibrary);
+      }
+      options.ticker.logMs("Generated component");
+    }
 
-        // Linked dependencies are meant to be part of the component so they are not
-        // marked external.
-        for (var dependency in await options.loadLinkDependencies(nameRoot)) {
-          var excluded = externalLibs(dependency);
-          dillTarget.loader.appendLibraries(dependency,
-              filter: (uri) => !excluded.contains(uri));
-        }
-
-        await dillTarget.buildOutlines();
-
-        var kernelTarget =
-            new KernelTarget(fs, false, dillTarget, uriTranslator);
-        sourceLoader = kernelTarget.loader;
-        options.inputs.forEach(kernelTarget.read);
-        Component summaryComponent =
-            await kernelTarget.buildOutlines(nameRoot: nameRoot);
-        List<int> summary = null;
-        if (buildSummary) {
-          if (options.verify) {
-            for (var error in verifyComponent(summaryComponent)) {
-              options.report(error, Severity.error);
-            }
-          }
-          if (options.debugDump) {
-            printComponentText(summaryComponent,
-                libraryFilter: kernelTarget.isSourceLibrary);
-          }
-
-          // Copy the component to exclude the uriToSource map from the summary.
-          //
-          // Note: we don't pass the library argument to the constructor to
-          // preserve the the libraries parent pointer (it should continue to point
-          // to the component within KernelTarget).
-          var trimmedSummaryComponent =
-              new Component(nameRoot: summaryComponent.root)
-                ..libraries.addAll(truncateSummary
-                    ? kernelTarget.loader.libraries
-                    : summaryComponent.libraries);
-          trimmedSummaryComponent.metadata.addAll(summaryComponent.metadata);
-
-          // As documented, we only run outline transformations when we are building
-          // summaries without building a full component (at this time, that's
-          // the only need we have for these transformations).
-          if (!buildComponent) {
-            options.target
-                .performOutlineTransformations(trimmedSummaryComponent);
-            options.ticker.logMs("Transformed outline");
-          }
-          summary = serializeComponent(trimmedSummaryComponent);
-          options.ticker.logMs("Generated outline");
-        }
-
-        Component component;
-        if (buildComponent && kernelTarget.errors.isEmpty) {
-          component = await kernelTarget.buildComponent(verify: options.verify);
-          if (options.debugDump) {
-            printComponentText(component,
-                libraryFilter: kernelTarget.isSourceLibrary);
-          }
-          options.ticker.logMs("Generated component");
-        }
-
-        return new CompilerResult(
-            summary: summary,
-            component: component,
-            deps: new List<Uri>.from(CompilerContext.current.dependencies));
-      },
-      () => sourceLoader?.currentUriForCrashReporting ?? options.inputs.first,
-      onInputError: (LocatedMessage message) {
-        options.report(message, Severity.error);
-        return null;
-      });
+    return new CompilerResult(
+        summary: summary,
+        component: component,
+        deps: new List<Uri>.from(CompilerContext.current.dependencies));
+  }, () => sourceLoader?.currentUriForCrashReporting ?? options.inputs.first);
 }
 
 /// Result object of [generateKernel].
diff --git a/pkg/front_end/lib/src/scanner/errors.dart b/pkg/front_end/lib/src/scanner/errors.dart
index 8822805..9e54680 100644
--- a/pkg/front_end/lib/src/scanner/errors.dart
+++ b/pkg/front_end/lib/src/scanner/errors.dart
@@ -118,8 +118,11 @@
     case "UNTERMINATED_STRING_LITERAL":
       // TODO(paulberry,ahe): Fasta reports the error location as the entire
       // string; analyzer expects the end of the string.
-      charOffset = endOffset - 1;
-      return _makeError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL, null);
+      // TODO(danrubel): Remove this once all analyzer clients
+      // can process errors via the scanner's errors list.
+      reportError(
+          ScannerErrorCode.UNTERMINATED_STRING_LITERAL, endOffset - 1, null);
+      return;
 
     case "UNTERMINATED_MULTI_LINE_COMMENT":
       // TODO(paulberry,ahe): Fasta reports the error location as the entire
@@ -171,6 +174,22 @@
   }
 }
 
+void translateScanError(
+    Code errorCode, int charOffset, int length, ReportError reportError) {
+  switch (errorCode.analyzerCodes?.first) {
+    case "UNTERMINATED_STRING_LITERAL":
+      // TODO(paulberry,ahe): Fasta reports the error location as the entire
+      // string; analyzer expects the end of the string.
+      reportError(ScannerErrorCode.UNTERMINATED_STRING_LITERAL,
+          charOffset + length - 1, null);
+      break;
+
+    default:
+      throw new UnimplementedError(
+          '$errorCode "${errorCode.analyzerCodes?.first}"');
+  }
+}
+
 /**
  * Determines whether the given [charOffset], which came from the non-EOF token
  * [token], represents the end of the input.
diff --git a/pkg/front_end/lib/src/testing/compiler_common.dart b/pkg/front_end/lib/src/testing/compiler_common.dart
index d09c4c6..b050725 100644
--- a/pkg/front_end/lib/src/testing/compiler_common.dart
+++ b/pkg/front_end/lib/src/testing/compiler_common.dart
@@ -104,7 +104,7 @@
     ..packagesFileUri = toTestUri('.packages');
 
   if (options.sdkSummary == null) {
-    options.sdkRoot = computePlatformBinariesLocation();
+    options.sdkRoot = computePlatformBinariesLocation(forceBuildDir: true);
   }
 }
 
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 971f4b2..60bb455 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -464,9 +464,10 @@
     - "class C { class B {} }"
 
 EnumInClass:
+  index: 74
   template: "Enums can't be declared inside classes."
   tip: "Try moving the enum to the top-level."
-  analyzerCode: ENUM_IN_CLASS
+  analyzerCode: ParserErrorCode.ENUM_IN_CLASS
   script:
     - "class Foo { enum Bar { Bar1, Bar2, Bar3 } }"
 
@@ -479,9 +480,10 @@
     - "abstract class C { typedef int F(int x); }"
 
 CovariantMember:
+  index: 67
   template: "Getters, setters and methods can't be declared to be 'covariant'."
   tip: "Try removing the 'covariant' keyword."
-  analyzerCode: COVARIANT_MEMBER
+  analyzerCode: ParserErrorCode.COVARIANT_MEMBER
   script:
     - "static covariant get x => 0;"
     - "covariant int m() => 0;"
@@ -532,9 +534,10 @@
     - "class C { var const x; }"
 
 ConstFactory:
+  index: 62
   template: "Only redirecting factory constructors can be declared to be 'const'."
   tip: "Try removing the 'const' keyword, or replacing the body with '=' followed by a valid target."
-  analyzerCode: CONST_FACTORY
+  analyzerCode: ParserErrorCode.CONST_FACTORY
   script:
     - "class C { const factory C() {} }"
 
@@ -575,16 +578,18 @@
     - "class C { const C() {} }"
 
 ConstMethod:
+  index: 63
   template: "Getters, setters and methods can't be declared to be 'const'."
   tip: "Try removing the 'const' keyword."
-  analyzerCode: CONST_METHOD
+  analyzerCode: ParserErrorCode.CONST_METHOD
   script:
     - "class C { const m() {} }"
 
 CovariantAfterFinal:
+  index: 65
   template: "The modifier 'covariant' should be before the modifier 'final'."
   tip: "Try re-ordering the modifiers."
-  analyzerCode: COVARIANT_AFTER_FINAL
+  analyzerCode: ParserErrorCode.COVARIANT_AFTER_FINAL
   script:
     - "final covariant f;"
 
@@ -597,17 +602,19 @@
     - "var covariant f;"
 
 CovariantAndStatic:
+  index: 66
   template: "Members can't be declared to be both 'covariant' and 'static'."
   tip: "Try removing either the 'covariant' or 'static' keyword."
-  analyzerCode: COVARIANT_AND_STATIC
+  analyzerCode: ParserErrorCode.COVARIANT_AND_STATIC
   script:
     - "class C { covariant static A f; }"
     - "class C { static covariant A f; }"
 
 DuplicatedModifier:
+  index: 70
   template: "The modifier '#lexeme' was already specified."
   tip: "Try removing all but one occurance of the modifier."
-  analyzerCode: DUPLICATED_MODIFIER
+  analyzerCode: ParserErrorCode.DUPLICATED_MODIFIER
   script:
     - "class C { const const m; }"
     - "class C { external external f(); }"
@@ -701,9 +708,10 @@
   analyzerCode: CONST_CONSTRUCTOR_WITH_NON_CONST_SUPER
 
 ExtraneousModifier:
+  index: 77
   template: "Can't have modifier '#lexeme' here."
   tip: "Try removing '#lexeme'."
-  analyzerCode: EXTRANEOUS_MODIFIER
+  analyzerCode: ParserErrorCode.EXTRANEOUS_MODIFIER
   script:
     - "var String foo; main(){}"
     - "var set foo; main(){}"
@@ -733,9 +741,10 @@
     - "static typedef foo();"
 
 FinalAndCovariant:
+  index: 80
   template: "Members can't be declared to be both 'final' and 'covariant'."
   tip: "Try removing either the 'final' or 'covariant' keyword."
-  analyzerCode: FINAL_AND_COVARIANT
+  analyzerCode: ParserErrorCode.FINAL_AND_COVARIANT
   script:
     - "class C { covariant final f = 5; }"
     - "class C { final covariant f = 5; }"
@@ -860,16 +869,18 @@
   analyzerCode: LABEL_UNDEFINED
 
 ContinueWithoutLabelInCase:
+  index: 64
   template: "A continue statement in a switch statement must have a label as a target."
   tip: "Try adding a label associated with one of the case clauses to the continue statement."
-  analyzerCode: CONTINUE_WITHOUT_LABEL_IN_CASE
+  analyzerCode: ParserErrorCode.CONTINUE_WITHOUT_LABEL_IN_CASE
   script:
     - "main() { switch (x) {case 1: continue;} }"
 
 DuplicateLabelInSwitchStatement:
+  index: 72
   template: "The label '#name' was already used in this switch statement."
   tip: "Try choosing a different name for this label."
-  analyzerCode: DUPLICATE_LABEL_IN_SWITCH_STATEMENT
+  analyzerCode: ParserErrorCode.DUPLICATE_LABEL_IN_SWITCH_STATEMENT
   statement:
     - "switch (0) {l1: case 0: break; l1: case 1: break;}"
 
@@ -1258,9 +1269,10 @@
 ConstructorWithTypeArguments:
   template: "A constructor invocation can't have type arguments on the constructor name."
   tip: "Try to place the type arguments on the class name."
-  analyzerCode: UNDEFINED_CLASS
+  analyzerCode: WRONG_NUMBER_OF_TYPE_ARGUMENTS_CONSTRUCTOR
   script:
     - "class C<X> { C.foo(); } bar() { new C.foo<int>(); }"
+    - "class C<X> { C.foo(); } bar() { C.foo<int>(); }"
 
 ConstructorWithWrongName:
   template: "The name of a constructor must match the name of the enclosing class."
@@ -1282,9 +1294,10 @@
     - "class C { C.foo() : this.bar(); C.bar() : this.foo(); }"
 
 FieldInitializerOutsideConstructor:
+  index: 79
   template: "Field formal parameters can only be used in a constructor."
   tip: "Try removing 'this.'."
-  analyzerCode: FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR
+  analyzerCode: ParserErrorCode.FIELD_INITIALIZER_OUTSIDE_CONSTRUCTOR
   script:
     - "class C { void m(this.x); }"
 
@@ -1424,6 +1437,10 @@
   severity: ERROR_LEGACY_WARNING
   analyzerCode: NOT_A_TYPE
 
+NotATypeContext:
+  template: "This isn't a type."
+  severity: CONTEXT
+
 NotAPrefixInTypeAnnotation:
   template: "'#name.#name2' can't be used as a type because '#name' doesn't refer to an import prefix."
   severity: ERROR_LEGACY_WARNING
@@ -1465,6 +1482,10 @@
       -v, --verbose
         Display verbose information.
 
+      -Dname
+      -Dname=value
+        Ignored for now.
+
       --
         Stop option parsing, the rest of the command line is assumed to be
         file names or arguments to the Dart program.
@@ -1501,6 +1522,20 @@
         Location of the SDK sources for use when compiling additional platform
         libraries.
 
+      --supermixin
+        Ignored for now.
+
+      --single-root-scheme=String
+      --single-root-base=<dir>
+        Specify a custom URI scheme and a location on disk where such URIs are
+        mapped to.
+
+        When specified, the compiler can be invoked with inputs using the custom
+        URI scheme. The compiler can ignore the exact location of files on disk
+        and as a result to produce output that is independendent of the absolute
+        location of files on disk. This is mostly useful for integrating with
+        build systems.
+
       --fatal=errors
       --fatal=warnings
         Makes messages of the given kinds fatal, that is, immediately stop the
@@ -1541,10 +1576,6 @@
   template: "Unsupported operation: '#name'."
   severity: INTERNAL_PROBLEM
 
-InternalProblemSuperclassNotFound:
-  template: "Superclass not found '#name'."
-  severity: INTERNAL_PROBLEM
-
 InternalProblemNotFound:
   template: "Couldn't find '#name'."
   severity: INTERNAL_PROBLEM
@@ -1608,6 +1639,14 @@
   template: "Compilation aborted due to fatal '#name' at:\n#string"
   severity: INTERNAL_PROBLEM
 
+InternalProblemNoInferredTypeStored:
+  template: "There's no inferred type for '#name'."
+  severity: INTERNAL_PROBLEM
+
+InternalProblemStoringMultipleInferredTypes:
+  template: "There's already an inferred type (#type) for '#name'."
+  severity: INTERNAL_PROBLEM
+
 LocalDefinitionHidesExport:
   template: "Local definition of '#name' hides export from '#uri'."
   severity: IGNORED
@@ -1631,14 +1670,16 @@
   analyzerCode: ParserErrorCode.MISSING_PREFIX_IN_DEFERRED_IMPORT
 
 DeferredAfterPrefix:
+  index: 68
   template: "The deferred keyword should come immediately before the prefix ('as' clause)."
   tip: "Try moving the deferred keyword before the prefix."
-  analyzerCode: DEFERRED_AFTER_PREFIX
+  analyzerCode: ParserErrorCode.DEFERRED_AFTER_PREFIX
 
 DuplicateDeferred:
+  index: 71
   template: "An import directive can only have one 'deferred' keyword."
   tip: "Try removing all but one 'deferred' keyword."
-  analyzerCode: DUPLICATE_DEFERRED
+  analyzerCode: ParserErrorCode.DUPLICATE_DEFERRED
 
 DeferredTypeAnnotation:
   template: "The type '#type' is deferred loaded via prefix '#name' and can't be used as a type annotation."
@@ -1647,9 +1688,10 @@
   analyzerCode: TYPE_ANNOTATION_DEFERRED_CLASS
 
 DuplicatePrefix:
+  index: 73
   template: "An import directive can only have one prefix ('as' clause)."
   tip: "Try removing all but one prefix."
-  analyzerCode: DUPLICATE_PREFIX
+  analyzerCode: ParserErrorCode.DUPLICATE_PREFIX
 
 PrefixAfterCombinator:
   index: 6
@@ -1821,7 +1863,6 @@
 
 DeclaredMemberConflictsWithInheritedMember:
   template: "Can't declare a member that conflicts with an inherited one."
-  severity: ERROR_LEGACY_WARNING
   analyzerCode: DECLARED_MEMBER_CONFLICTS_WITH_INHERITED
   script:
     - >-
@@ -1996,9 +2037,10 @@
     - "class C {foo() native 'bar' {}}"
 
 ExternalTypedef:
+  index: 76
   template: "Typedefs can't be declared to be 'external'."
   tip: "Try removing the keyword 'external'."
-  analyzerCode: EXTERNAL_TYPEDEF
+  analyzerCode: ParserErrorCode.EXTERNAL_TYPEDEF
   script:
     - "external typedef F();"
 
@@ -2032,16 +2074,18 @@
     - "part 'foo.dart'; import 'bar.dart';"
 
 ExportAfterPart:
+  index: 75
   template: "Export directives must preceed part directives."
   tip: "Try moving the export directives before the part directives."
-  analyzerCode: EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE
+  analyzerCode: ParserErrorCode.EXPORT_DIRECTIVE_AFTER_PART_DIRECTIVE
   script:
     - "part 'foo.dart'; export 'bar.dart';"
 
 DirectiveAfterDeclaration:
+  index: 69
   template: "Directives must appear before any declarations."
   tip: "Try moving the directive before any declarations."
-  analyzerCode: DIRECTIVE_AFTER_DECLARATION
+  analyzerCode: ParserErrorCode.DIRECTIVE_AFTER_DECLARATION
   script:
     - "class foo { } import 'bar.dart';"
     - "class foo { } export 'bar.dart';"
@@ -2099,9 +2143,10 @@
   severity: CONTEXT
 
 FactoryTopLevelDeclaration:
+  index: 78
   template: "Top-level declarations can't be declared to be 'factory'."
   tip: "Try removing the keyword 'factory'."
-  analyzerCode: FACTORY_TOP_LEVEL_DECLARATION
+  analyzerCode: ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION
   script:
     - "factory class C {}"
 
@@ -2833,10 +2878,6 @@
   template: "'#name' can't implement both '#type' and '#type2'"
   analyzerCode: AMBIGUOUS_SUPERTYPES
 
-CantUseSuperBoundedTypeForInstanceCreation:
-  template: "Can't use a super-bounded type for instance creation. Got '#type'."
-  tip: "Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference."
-
 MixinInferenceNoMatchingClass:
   template: "Type parameters could not be inferred for the mixin '#name' because '#name2' does not implement the mixin's supertype constraint '#type'."
   analyzerCode: MIXIN_INFERENCE_NO_POSSIBLE_SUBSTITUTION
@@ -3166,3 +3207,90 @@
 SyntheticToken:
   template: "This couldn't be parsed."
   frontendInternal: true
+
+IncorrectTypeArgument:
+  template: "Type argument '#type' violates the corresponding type variable bound of '#name'."
+  tip: "Try changing type arguments so that they conform to the bounds."
+  analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+  script: >
+    class C<T extends num> {}
+    main() { new C<String>(); }
+
+IncorrectTypeArgumentInSupertype:
+  template: "Type argument '#type' violates the corresponding type variable bound of '#name' in the supertype '#name2' of class '#name3'."
+  tip: "Try changing type arguments so that they conform to the bounds."
+  analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+  script: >
+    class A<T extends num> {}
+    class B extends A<String> {}
+
+IncorrectTypeArgumentInReturnType:
+  template: "Type argument '#type' violates the corresponding type variable bound of '#name' in the return type."
+  tip: "Try changing type arguments so that they conform to the bounds."
+  analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+  script: >
+    class A<T extends num> {}
+    A<String> foo() => null;
+
+IncorrectTypeArgumentInferred:
+  template: "Inferred type argument '#type' violates the corresponding type variable bound of '#name'."
+  tip: "Try specifying type arguments explicitly so that they conform to the bounds."
+  analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+  script: >
+    void foo<T extends num>(T t) {}
+    main() { foo("bar"); }
+
+IncorrectTypeArgumentInSupertypeInferred:
+  template: "Inferred type argument '#type' violates the corresponding type variable bound of '#name' in the supertype '#name2' of class '#name3'."
+  tip: "Try specifying type arguments explicitly so that they conform to the bounds."
+  analyzerCode: TYPE_ARGUMENT_NOT_MATCHING_BOUNDS
+  script: >
+    class A<T extends A<T>> {}
+    class B extends A {}
+
+IncorrectTypeArgumentVariable:
+  template: "Bound of this variable is violated."
+  severity: CONTEXT
+
+InferredPackageUri:
+  template: "Interpreting this as package URI, '#uri'."
+  severity: WARNING
+  frontendInternal: true
+  script:
+    "main.dart": |
+      main() {}
+    ".packages": |
+      example:./
+
+MixinApplicationIncompatibleSupertype:
+  template: "'#type' doesn't implement '#type2' so it can't be used with '#type3'."
+  analyzerCode: MIXIN_APPLICATION_NOT_IMPLEMENTED_INTERFACE
+  script: >-
+    class I {}
+    mixin M on I {}
+    class C = Object with M;
+
+GenericFunctionTypeUsedAsActualTypeArgument:
+  template: Unexpected generic function type found in a type argument.
+  tip: Try using a non-generic function type.
+  analyzerCode: GENERIC_FUNCTION_CANNOT_BE_TYPE_ARGUMENT
+  script:
+    - >-
+      typedef F = List<T> Function<T>(T);
+      main() {
+        List<F> list1;
+      }
+    - >-
+      typedef F = List<T> Function<T>(T);
+      main() {
+        new List<F>();
+      }
+
+GenericFunctionTypeInferredAsActualTypeArgument:
+  template: Unexpected generic function type '#type' inferred as a type argument.
+  tip: Try providing a non-generic function type explicitly.
+  analyzerCode: GENERIC_FUNCTION_CANNOT_BE_TYPE_ARGUMENT
+  script:
+    foo<X>(X x) => null;
+    bar<Y>(Y y) => null;
+    main() { foo(bar); }
diff --git a/pkg/front_end/pubspec.yaml b/pkg/front_end/pubspec.yaml
index 0fdbbb9..478a4d8 100644
--- a/pkg/front_end/pubspec.yaml
+++ b/pkg/front_end/pubspec.yaml
@@ -26,6 +26,6 @@
   json_rpc_2: ^2.0.9
   mockito: ^2.0.2
   stream_channel: ^1.6.1
-  test: ^0.12.0
+  test: ^1.3.4
   test_reflective_loader: ^0.1.0
   web_socket_channel: ^1.0.4
diff --git a/pkg/front_end/test/fasta/assert_locations_test.dart b/pkg/front_end/test/fasta/assert_locations_test.dart
index e282b79..16606d1 100644
--- a/pkg/front_end/test/fasta/assert_locations_test.dart
+++ b/pkg/front_end/test/fasta/assert_locations_test.dart
@@ -12,14 +12,10 @@
     show Component, RecursiveVisitor, Procedure, AssertStatement;
 
 import "package:front_end/src/api_prototype/compiler_options.dart"
-    show CompilerOptions;
+    show CompilerOptions, DiagnosticMessage;
 
 import 'package:front_end/src/testing/compiler_common.dart' show compileScript;
 
-import 'package:front_end/src/fasta/fasta_codes.dart' show FormattedMessage;
-
-import 'package:front_end/src/fasta/severity.dart' show Severity;
-
 /// Span of the condition expression in the assert statement.
 class ConditionSpan {
   final startOffset;
@@ -137,11 +133,10 @@
   asyncTest(() async {
     Test test = generateTest();
     CompilerOptions options = new CompilerOptions()
-      ..onProblem = (FormattedMessage message, Severity severity,
-          List<FormattedMessage> context) {
-        Expect.fail("Unexpected error: ${message.formatted}");
-      }
-      ..strongMode = true;
+      ..onDiagnostic = (DiagnosticMessage message) {
+        Expect.fail(
+            "Unexpected message: ${message.plainTextFormatted.join('\n')}");
+      };
     Component p = await compileScript(test.source,
         options: options, fileName: 'synthetic-test.dart');
     Expect.isNotNull(p);
diff --git a/pkg/front_end/test/fasta/bootstrap_test.dart b/pkg/front_end/test/fasta/bootstrap_test.dart
index 13ee2f3..f4755f4 100644
--- a/pkg/front_end/test/fasta/bootstrap_test.dart
+++ b/pkg/front_end/test/fasta/bootstrap_test.dart
@@ -53,7 +53,6 @@
         "--compile-sdk=sdk/",
         "--output=${output.toFilePath()}",
         "--verify",
-        "--strong",
         input.toFilePath(),
       ],
       suppressOutput: false);
diff --git a/pkg/front_end/test/fasta/expression_test.dart b/pkg/front_end/test/fasta/expression_test.dart
index 086eeab..0a895c8 100644
--- a/pkg/front_end/test/fasta/expression_test.dart
+++ b/pkg/front_end/test/fasta/expression_test.dart
@@ -16,14 +16,19 @@
 import "package:testing/testing.dart"
     show Chain, ChainContext, Result, Step, TestDescription, runMe;
 
+import "package:testing/src/log.dart" show splitLines;
+
 import "package:yaml/yaml.dart" show YamlMap, YamlList, loadYamlNode;
 
-import "package:front_end/src/api_prototype/front_end.dart"
-    show CompilationMessage, CompilerOptions;
+import "package:front_end/src/api_prototype/compiler_options.dart"
+    show CompilerOptions, DiagnosticMessage;
 
 import "package:front_end/src/api_prototype/memory_file_system.dart"
     show MemoryFileSystem;
 
+import "package:front_end/src/api_prototype/terminal_color_support.dart"
+    show printDiagnosticMessage;
+
 import 'package:front_end/src/compute_platform_binaries_location.dart'
     show computePlatformBinariesLocation;
 
@@ -54,7 +59,7 @@
 class Context extends ChainContext {
   final CompilerContext compilerContext;
   final ExternalStateSnapshot snapshot;
-  final List<CompilationMessage> errors;
+  final List<DiagnosticMessage> errors;
 
   final List<Step> steps;
 
@@ -80,8 +85,8 @@
     snapshot.restore();
   }
 
-  List<CompilationMessage> takeErrors() {
-    List<CompilationMessage> result = new List<CompilationMessage>.from(errors);
+  List<DiagnosticMessage> takeErrors() {
+    List<DiagnosticMessage> result = new List<DiagnosticMessage>.from(errors);
     errors.clear();
     return result;
   }
@@ -89,16 +94,20 @@
 
 class CompilationResult {
   Procedure compiledProcedure;
-  List<CompilationMessage> errors;
+  List<DiagnosticMessage> errors;
   CompilationResult(this.compiledProcedure, this.errors);
 
   String printResult(Uri entryPoint, Context context) {
     StringBuffer buffer = new StringBuffer();
     buffer.write("Errors: {\n");
     for (var error in errors) {
-      buffer.write("  ");
-      buffer.write("${error.message} (@${error.span.start.offset})");
-      buffer.write("\n");
+      for (String message in error.plainTextFormatted) {
+        for (String line in splitLines(message)) {
+          buffer.write("  ");
+          buffer.write(line);
+        }
+        buffer.write("\n");
+      }
     }
     buffer.write("}\n");
     if (compiledProcedure == null) {
@@ -306,7 +315,7 @@
         test.library,
         test.className,
         test.isStaticMethod);
-    List<CompilationMessage> errors = context.takeErrors();
+    List<DiagnosticMessage> errors = context.takeErrors();
     test.results.add(new CompilationResult(compiledProcedure, errors));
     if (compiledProcedure != null) {
       // Confirm we can serialize generated procedure.
@@ -367,7 +376,8 @@
 
   /// The actual location of the dill file.
   final Uri sdkSummaryFile =
-      computePlatformBinariesLocation().resolve("vm_platform.dill");
+      computePlatformBinariesLocation(forceBuildDir: true)
+          .resolve("vm_platform.dill");
 
   final MemoryFileSystem fs = new MemoryFileSystem(base);
 
@@ -375,16 +385,15 @@
       .entityForUri(sdkSummary)
       .writeAsBytesSync(await new File.fromUri(sdkSummaryFile).readAsBytes());
 
-  final List<CompilationMessage> errors = <CompilationMessage>[];
+  final List<DiagnosticMessage> errors = <DiagnosticMessage>[];
 
   final CompilerOptions optionBuilder = new CompilerOptions()
-    ..strongMode = true
-    ..target = new VmTarget(new TargetFlags(strongMode: true))
-    ..reportMessages = true
+    ..target = new VmTarget(new TargetFlags())
     ..verbose = true
     ..fileSystem = fs
     ..sdkSummary = sdkSummary
-    ..onError = (CompilationMessage message) {
+    ..onDiagnostic = (DiagnosticMessage message) {
+      printDiagnosticMessage(message, print);
       errors.add(message);
     };
 
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 ac0cf99..7580c2a 100644
--- a/pkg/front_end/test/fasta/generator_to_string_test.dart
+++ b/pkg/front_end/test/fasta/generator_to_string_test.dart
@@ -100,7 +100,8 @@
         new KernelTarget(
                 null,
                 false,
-                new DillTarget(null, null, new NoneTarget(new TargetFlags())),
+                new DillTarget(null, null,
+                    new NoneTarget(new TargetFlags(legacyMode: true))),
                 null)
             .loader,
         null,
diff --git a/pkg/front_end/test/fasta/incremental_hello_test.dart b/pkg/front_end/test/fasta/incremental_hello_test.dart
index ff7c678..1ac768d 100644
--- a/pkg/front_end/test/fasta/incremental_hello_test.dart
+++ b/pkg/front_end/test/fasta/incremental_hello_test.dart
@@ -15,7 +15,7 @@
 import 'package:vm/target/vm.dart' show VmTarget;
 
 import "package:front_end/src/api_prototype/compiler_options.dart"
-    show CompilerOptions;
+    show CompilerOptions, DiagnosticMessage;
 
 import 'package:front_end/src/base/processed_options.dart'
     show ProcessedOptions;
@@ -25,31 +25,27 @@
 
 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
 
-import 'package:front_end/src/fasta/fasta_codes.dart' show FormattedMessage;
-
 import 'package:front_end/src/fasta/incremental_compiler.dart'
     show IncrementalCompiler;
 
-import 'package:front_end/src/fasta/severity.dart' show Severity;
-
-void problemHandler(FormattedMessage message, Severity severity,
-    List<FormattedMessage> context) {
-  throw "Unexpected message: ${message.formatted}";
+void diagnosticMessageHandler(DiagnosticMessage message) {
+  throw "Unexpected message: ${message.plainTextFormatted.join('\n')}";
 }
 
 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;
+    ..target = new VmTarget(new TargetFlags(legacyMode: true))
+    ..legacyMode = true
+    ..onDiagnostic = diagnosticMessageHandler;
 
   if (sdkFromSource) {
     optionBuilder.librariesSpecificationUri =
         Uri.base.resolve("sdk/lib/libraries.json");
   } else {
     optionBuilder.sdkSummary =
-        computePlatformBinariesLocation().resolve("vm_platform.dill");
+        computePlatformBinariesLocation(forceBuildDir: true)
+            .resolve("vm_platform.dill");
   }
 
   final Uri helloDart = Uri.base.resolve("pkg/front_end/testcases/hello.dart");
diff --git a/pkg/front_end/test/fasta/incremental_test.dart b/pkg/front_end/test/fasta/incremental_test.dart
index 34f0a73..3a6bc70 100644
--- a/pkg/front_end/test/fasta/incremental_test.dart
+++ b/pkg/front_end/test/fasta/incremental_test.dart
@@ -17,8 +17,8 @@
 
 import "package:yaml/yaml.dart" show YamlMap, loadYamlNode;
 
-import "package:front_end/src/api_prototype/front_end.dart"
-    show CompilationMessage, CompilerOptions, Severity;
+import "package:front_end/src/api_prototype/compiler_options.dart"
+    show CompilerOptions, DiagnosticMessage;
 
 import "package:front_end/src/api_prototype/incremental_kernel_generator.dart"
     show IncrementalKernelGenerator;
@@ -26,6 +26,9 @@
 import "package:front_end/src/api_prototype/memory_file_system.dart"
     show MemoryFileSystem;
 
+import "package:front_end/src/api_prototype/terminal_color_support.dart"
+    show printDiagnosticMessage;
+
 import 'package:front_end/src/compute_platform_binaries_location.dart'
     show computePlatformBinariesLocation;
 
@@ -40,6 +43,8 @@
 import 'package:front_end/src/fasta/incremental_compiler.dart'
     show IncrementalCompiler;
 
+import 'package:front_end/src/fasta/severity.dart' show Severity;
+
 import "incremental_expectations.dart"
     show IncrementalExpectation, extractJsonExpectations;
 
@@ -54,7 +59,7 @@
 class Context extends ChainContext {
   final CompilerContext compilerContext;
   final ExternalStateSnapshot snapshot;
-  final List<CompilationMessage> errors;
+  final List<DiagnosticMessage> errors;
 
   final List<Step> steps = const <Step>[
     const ReadTest(),
@@ -79,8 +84,8 @@
     snapshot.restore();
   }
 
-  List<CompilationMessage> takeErrors() {
-    List<CompilationMessage> result = new List<CompilationMessage>.from(errors);
+  List<DiagnosticMessage> takeErrors() {
+    List<DiagnosticMessage> result = new List<DiagnosticMessage>.from(errors);
     errors.clear();
     return result;
   }
@@ -147,7 +152,7 @@
       }
       var compiler = context.compiler;
       Component component = await compiler.computeDelta(entryPoint: entryPoint);
-      List<CompilationMessage> errors = context.takeErrors();
+      List<DiagnosticMessage> errors = context.takeErrors();
       if (test.expectations[edits].hasCompileTimeError) {
         if (errors.isEmpty) {
           return fail(test, "Compile-time error expected, but none reported");
@@ -203,7 +208,8 @@
 
   /// The actual location of the dill file.
   final Uri sdkSummaryFile =
-      computePlatformBinariesLocation().resolve("vm_platform.dill");
+      computePlatformBinariesLocation(forceBuildDir: true)
+          .resolve("vm_platform.dill");
 
   final MemoryFileSystem fs = new MemoryFileSystem(base);
 
@@ -211,16 +217,16 @@
       .entityForUri(sdkSummary)
       .writeAsBytesSync(await new File.fromUri(sdkSummaryFile).readAsBytes());
 
-  final List<CompilationMessage> errors = <CompilationMessage>[];
+  final List<DiagnosticMessage> errors = <DiagnosticMessage>[];
 
   final CompilerOptions optionBuilder = new CompilerOptions()
-    ..strongMode = false
-    ..reportMessages = true
+    ..legacyMode = true
     ..verbose = true
     ..fileSystem = fs
     ..sdkSummary = sdkSummary
-    ..onError = (CompilationMessage message) {
-      if (message.severity != Severity.warning) {
+    ..onDiagnostic = (DiagnosticMessage message) {
+      printDiagnosticMessage(message, print);
+      if (message.severity == Severity.error) {
         errors.add(message);
       }
     };
diff --git a/pkg/front_end/test/fasta/messages_test.dart b/pkg/front_end/test/fasta/messages_test.dart
index afa390e..de25e18 100644
--- a/pkg/front_end/test/fasta/messages_test.dart
+++ b/pkg/front_end/test/fasta/messages_test.dart
@@ -22,14 +22,15 @@
 import 'package:front_end/src/api_prototype/compiler_options.dart'
     show CompilerOptions;
 
+import 'package:front_end/src/api_prototype/diagnostic_message.dart'
+    show DiagnosticMessage, getMessageCodeObject;
+
 import 'package:front_end/src/api_prototype/memory_file_system.dart'
     show MemoryFileSystem;
 
 import 'package:front_end/src/compute_platform_binaries_location.dart'
     show computePlatformBinariesLocation;
 
-import 'package:front_end/src/fasta/fasta_codes.dart' show FormattedMessage;
-
 import 'package:front_end/src/fasta/severity.dart'
     show Severity, severityEnumValues;
 
@@ -275,7 +276,8 @@
     }
   }
 
-  String formatProblems(String message, Example example, List<List> problems) {
+  String formatProblems(
+      String message, Example example, List<DiagnosticMessage> messages) {
     var span = example.node.span;
     StringBuffer buffer = new StringBuffer();
     buffer
@@ -287,12 +289,11 @@
       ..write(": error: ")
       ..write(message);
     buffer.write("\n${span.text}");
-    for (List problem in problems) {
-      FormattedMessage message = problem[0];
-      String formatted = message.formatted;
-      buffer.write("\nCode: ${message.code.name}");
+    for (DiagnosticMessage message in messages) {
+      buffer.write("\nCode: ${getMessageCodeObject(message).name}");
       buffer.write("\n  > ");
-      buffer.write(formatted.replaceAll("\n", "\n  > "));
+      buffer.write(
+          message.plainTextFormatted.join("\n").replaceAll("\n", "\n  > "));
     }
 
     return "$buffer";
@@ -400,7 +401,7 @@
     if (script is! String && script is! Map) {
       throw suite.formatProblems(
           "A script must be either a String or a Map in $code:",
-          this, <List>[]);
+          this, <DiagnosticMessage>[]);
     }
   }
 
@@ -454,51 +455,46 @@
         suite.fileSystem.currentDirectory.resolve("$dir/main.dart.dill");
 
     print("Compiling $main");
-    List<List> problems = <List>[];
+    List<DiagnosticMessage> messages = <DiagnosticMessage>[];
 
     await suite.compiler.batchCompile(
         new CompilerOptions()
-          ..sdkSummary = computePlatformBinariesLocation()
+          ..sdkSummary = computePlatformBinariesLocation(forceBuildDir: true)
               .resolve("vm_platform_strong.dill")
-          ..target = new VmTarget(new TargetFlags(strongMode: true))
+          ..target = new VmTarget(new TargetFlags())
           ..fileSystem = new HybridFileSystem(suite.fileSystem)
-          ..onProblem = (FormattedMessage problem, Severity severity,
-              List<FormattedMessage> context) {
-            problems.add([problem, severity]);
-          }
-          ..strongMode = true,
+          ..onDiagnostic = messages.add,
         main,
         output);
 
-    List<List> unexpectedProblems = <List>[];
-    for (List problem in problems) {
-      FormattedMessage message = problem[0];
-      if (message.code.name != example.expectedCode) {
-        unexpectedProblems.add(problem);
+    List<DiagnosticMessage> unexpectedMessages = <DiagnosticMessage>[];
+    for (DiagnosticMessage message in messages) {
+      if (getMessageCodeObject(message).name != example.expectedCode) {
+        unexpectedMessages.add(message);
       }
     }
-    if (unexpectedProblems.isEmpty) {
-      switch (problems.length) {
+    if (unexpectedMessages.isEmpty) {
+      switch (messages.length) {
         case 0:
           return fail(
               null,
-              suite.formatProblems("No problem reported in ${example.name}:",
-                  example, problems));
+              suite.formatProblems("No message reported in ${example.name}:",
+                  example, messages));
         case 1:
           return pass(null);
         default:
           return fail(
               null,
               suite.formatProblems(
-                  "Problem reported multiple times in ${example.name}:",
+                  "Message reported multiple times in ${example.name}:",
                   example,
-                  problems));
+                  messages));
       }
     }
     return fail(
         null,
-        suite.formatProblems("Too many problems reported in ${example.name}:",
-            example, problems));
+        suite.formatProblems("Too many messages reported in ${example.name}:",
+            example, messages));
   }
 }
 
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 90db70b..d50b840 100644
--- a/pkg/front_end/test/fasta/parser/type_info_test.dart
+++ b/pkg/front_end/test/fasta/parser/type_info_test.dart
@@ -1281,7 +1281,7 @@
 
   void test_computeTypeArg_complex_recovery() {
     expectComplexTypeArg('<S extends T>', expectedErrors: [
-      error(codeUnexpectedToken, 3, 7)
+      error(codeExpectedAfterButGot, 1, 1)
     ], expectedCalls: [
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
@@ -1290,7 +1290,7 @@
       'endTypeArguments 1 < >',
     ]);
     expectComplexTypeArg('<S extends List<T>>', expectedErrors: [
-      error(codeUnexpectedToken, 3, 7)
+      error(codeExpectedAfterButGot, 1, 1)
     ], expectedCalls: [
       'beginTypeArguments <',
       'handleIdentifier S typeReference',
@@ -1524,7 +1524,7 @@
 
   void test_computeTypeParam_complex_recovery() {
     expectComplexTypeParam('<S Function()>', expectedErrors: [
-      error(codeUnexpectedToken, 3, 8),
+      error(codeExpectedAfterButGot, 1, 1),
     ], expectedCalls: [
       'beginTypeVariables <',
       'beginMetadataStar S',
@@ -1538,7 +1538,6 @@
     ]);
     expectComplexTypeParam('<void Function()>', expectedErrors: [
       error(codeExpectedIdentifier, 1, 4),
-      error(codeUnexpectedToken, 1, 4),
     ], expectedCalls: [
       'beginTypeVariables <',
       'beginMetadataStar void',
@@ -1551,7 +1550,7 @@
       'endTypeVariables < >',
     ]);
     expectComplexTypeParam('<S<T>>', expectedErrors: [
-      error(codeUnexpectedToken, 2, 1),
+      error(codeExpectedAfterButGot, 1, 1),
     ], expectedCalls: [
       'beginTypeVariables <',
       'beginMetadataStar S',
@@ -1687,6 +1686,39 @@
       'endTypeVariables < >'
     ]);
   }
+
+  void test_computeTypeParam_34850() {
+    expectComplexTypeParam('<S<T>> A', expectedAfter: 'A', expectedErrors: [
+      error(codeExpectedAfterButGot, 1, 1),
+    ], expectedCalls: [
+      'beginTypeVariables <',
+      'beginMetadataStar S',
+      'endMetadataStar 0',
+      'handleIdentifier S typeVariableDeclaration',
+      'beginTypeVariable S',
+      'handleTypeVariablesDefined S 1',
+      'handleNoType S',
+      'endTypeVariable < 0 null',
+      'endTypeVariables < >',
+    ]);
+    expectComplexTypeParam('<S();> A',
+        inDeclaration: true,
+        expectedAfter: 'A',
+        expectedErrors: [
+          error(codeExpectedAfterButGot, 1, 1),
+        ],
+        expectedCalls: [
+          'beginTypeVariables <',
+          'beginMetadataStar S',
+          'endMetadataStar 0',
+          'handleIdentifier S typeVariableDeclaration',
+          'beginTypeVariable S',
+          'handleTypeVariablesDefined S 1',
+          'handleNoType S',
+          'endTypeVariable ( 0 null',
+          'endTypeVariables < >',
+        ]);
+  }
 }
 
 void expectInfo(expectedInfo, String source, {bool required}) {
@@ -1816,7 +1848,8 @@
       reason: 'TypeParamOrArgInfo.skipType'
           ' should not modify the token stream');
 
-  TypeInfoListener listener = new TypeInfoListener(metadataAllowed: true);
+  TypeInfoListener listener =
+      new TypeInfoListener(firstToken: start, metadataAllowed: true);
   Parser parser = new Parser(listener);
   Token actualEnd = typeVarInfo.parseVariables(start, parser);
   validateTokens(start);
@@ -1851,7 +1884,9 @@
 void expectEnd(String tokenAfter, Token end) {
   if (tokenAfter == null) {
     expect(end.isEof, isFalse);
-    expect(end.next.isEof, isTrue);
+    if (!end.next.isEof) {
+      fail('Expected EOF after $end but found ${end.next}');
+    }
   } else {
     expect(end.next.lexeme, tokenAfter);
   }
@@ -1885,7 +1920,7 @@
   while (!token.isEof) {
     Token next = token.next;
     expect(token.charOffset, lessThanOrEqualTo(next.charOffset));
-    expect(next.previous, token);
+    expect(next.previous, token, reason: next.type.toString());
     if (next is SyntheticToken) {
       expect(next.beforeSynthetic, token);
     }
@@ -1899,8 +1934,13 @@
   final bool metadataAllowed;
   List<String> calls = <String>[];
   List<ExpectedError> errors;
+  Token firstToken;
 
-  TypeInfoListener({this.metadataAllowed: false});
+  TypeInfoListener({this.firstToken, this.metadataAllowed: false}) {
+    if (firstToken != null && firstToken.isEof) {
+      firstToken = firstToken.next;
+    }
+  }
 
   @override
   void beginArguments(Token token) {
@@ -2000,16 +2040,22 @@
   @override
   void endTypeArguments(int count, Token beginToken, Token endToken) {
     calls.add('endTypeArguments $count $beginToken $endToken');
+    assertTokenInStream(beginToken);
+    assertTokenInStream(endToken);
   }
 
   @override
   void endTypeVariable(Token token, int index, Token extendsOrSuper) {
     calls.add('endTypeVariable $token $index $extendsOrSuper');
+    assertTokenInStream(token);
+    assertTokenInStream(extendsOrSuper);
   }
 
   @override
   void endTypeVariables(Token beginToken, Token endToken) {
     calls.add('endTypeVariables $beginToken $endToken');
+    assertTokenInStream(beginToken);
+    assertTokenInStream(endToken);
   }
 
   @override
@@ -2082,6 +2128,25 @@
   noSuchMethod(Invocation invocation) {
     throw '${invocation.memberName} should not be called.';
   }
+
+  assertTokenInStream(Token match) {
+    if (firstToken != null && match != null && !match.isEof) {
+      Token token = firstToken;
+      while (!token.isEof) {
+        if (identical(token, match)) {
+          return;
+        }
+        token = token.next;
+      }
+      final msg = new StringBuffer();
+      msg.writeln('Expected $match in token stream, but found');
+      while (!token.isEof) {
+        msg.write(' $token');
+        token = token.next;
+      }
+      fail(msg.toString());
+    }
+  }
 }
 
 ExpectedError error(Code code, int start, int length) =>
diff --git a/pkg/front_end/test/fasta/reexport_test.dart b/pkg/front_end/test/fasta/reexport_test.dart
index 98a1ae7..62112e0 100644
--- a/pkg/front_end/test/fasta/reexport_test.dart
+++ b/pkg/front_end/test/fasta/reexport_test.dart
@@ -30,6 +30,6 @@
     };
     await compileUnit(sources.keys.toList(), sources,
         options: new CompilerOptions()
-          ..onError = (e) => throw "${e.severity}: ${e.message}");
+          ..onDiagnostic = (m) => throw m.plainTextFormatted.join("\n"));
   });
 }
diff --git a/pkg/front_end/test/fasta/super_mixins_test.dart b/pkg/front_end/test/fasta/super_mixins_test.dart
index 17a4f92..03f30af 100644
--- a/pkg/front_end/test/fasta/super_mixins_test.dart
+++ b/pkg/front_end/test/fasta/super_mixins_test.dart
@@ -11,12 +11,19 @@
 import 'package:kernel/target/targets.dart' show NoneTarget, TargetFlags;
 
 import "package:front_end/src/api_prototype/compiler_options.dart"
-    show CompilerOptions, ProblemHandler;
+    show CompilerOptions;
+
+import "package:front_end/src/api_prototype/diagnostic_message.dart"
+    show
+        DiagnosticMessage,
+        DiagnosticMessageHandler,
+        getMessageCodeObject,
+        getMessageArguments;
 
 import 'package:front_end/src/testing/compiler_common.dart' show compileScript;
 
 import 'package:front_end/src/fasta/fasta_codes.dart'
-    show FormattedMessage, codeSuperclassHasNoMethod;
+    show codeSuperclassHasNoMethod;
 
 import 'package:front_end/src/fasta/severity.dart' show Severity;
 
@@ -69,13 +76,12 @@
 }
 ''';
 
-ProblemHandler _makeProblemHandler(Set<String> names) {
-  return (FormattedMessage message, Severity severity,
-      List<FormattedMessage> context) {
-    Expect.equals(Severity.error, severity);
-    Expect.equals(codeSuperclassHasNoMethod, message.code);
-    Expect.isTrue(context.isEmpty);
-    names.add(message.arguments['name']);
+DiagnosticMessageHandler _makeDiagnosticMessageHandler(Set<String> names) {
+  return (DiagnosticMessage message) {
+    Expect.equals(Severity.error, message.severity);
+    Expect.identical(codeSuperclassHasNoMethod, getMessageCodeObject(message));
+    Expect.isTrue(message.plainTextFormatted.length == 1);
+    names.add(getMessageArguments(message)['name']);
   };
 }
 
@@ -85,8 +91,7 @@
 testDisabledSuperMixins() async {
   var missingSuperMethodNames = new Set<String>();
   var options = new CompilerOptions()
-    ..onProblem = _makeProblemHandler(missingSuperMethodNames)
-    ..strongMode = true;
+    ..onDiagnostic = _makeDiagnosticMessageHandler(missingSuperMethodNames);
   await compileScript(testSource, options: options);
   Expect.setEquals(
       const <String>['bar', 'baz', 'foo', 'quux'], missingSuperMethodNames);
@@ -99,12 +104,11 @@
 testEnabledSuperMixins() async {
   var missingSuperMethodNames = new Set<String>();
   var options = new CompilerOptions()
-    ..onProblem = _makeProblemHandler(missingSuperMethodNames)
-    ..strongMode = true
-    ..target = new NoneTargetWithSuperMixins(new TargetFlags(strongMode: true));
+    ..onDiagnostic = _makeDiagnosticMessageHandler(missingSuperMethodNames)
+    ..target = new NoneTargetWithSuperMixins(new TargetFlags());
   await compileScript(testSource, options: options);
-  Expect
-      .setEquals(const <String>['baz', 'foo', 'quux'], missingSuperMethodNames);
+  Expect.setEquals(
+      const <String>['baz', 'foo', 'quux'], missingSuperMethodNames);
 }
 
 void main() {
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index 7b1c206..659fb1b 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -34,7 +34,7 @@
 import 'package:vm/target/vm.dart' show VmTarget;
 
 import 'package:front_end/src/api_prototype/compiler_options.dart'
-    show CompilerOptions, FormattedMessage, Severity;
+    show CompilerOptions, DiagnosticMessage;
 
 import 'package:front_end/src/api_prototype/standard_file_system.dart'
     show StandardFileSystem;
@@ -50,9 +50,6 @@
 
 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
 
-import 'package:front_end/src/fasta/deprecated_problems.dart'
-    show deprecated_InputError;
-
 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget;
 
 import 'package:front_end/src/fasta/kernel/kernel_target.dart'
@@ -68,9 +65,6 @@
 
 import 'package:front_end/src/fasta/uri_translator.dart' show UriTranslator;
 
-import 'package:front_end/src/fasta/uri_translator_impl.dart'
-    show UriTranslatorImpl;
-
 export 'package:testing/testing.dart' show Chain, runMe;
 
 const String STRONG_MODE = " strong mode ";
@@ -95,14 +89,14 @@
 }
 
 class FastaContext extends ChainContext {
-  final UriTranslatorImpl uriTranslator;
+  final UriTranslator uriTranslator;
   final List<Step> steps;
   final Uri vm;
   final bool strongMode;
   final bool onlyCrashes;
   final Map<Component, KernelTarget> componentToTarget =
       <Component, KernelTarget>{};
-  final Map<Component, StringBuffer> componentToProblems =
+  final Map<Component, StringBuffer> componentToDiagnostics =
       <Component, StringBuffer>{};
   final Uri platformBinaries;
   Uri platformUri;
@@ -191,9 +185,8 @@
     Uri packages = Uri.base.resolve(".packages");
     var options = new ProcessedOptions(
         options: new CompilerOptions()
-          ..onProblem = (FormattedMessage problem, Severity severity,
-              List<FormattedMessage> context) {
-            throw problem.formatted;
+          ..onDiagnostic = (DiagnosticMessage message) {
+            throw message.plainTextFormatted.join("\n");
           }
           ..sdkRoot = sdk
           ..packagesFileUri = packages);
@@ -212,7 +205,7 @@
         vm,
         strongMode,
         platformBinaries == null
-            ? computePlatformBinariesLocation()
+            ? computePlatformBinariesLocation(forceBuildDir: true)
             : Uri.base.resolve(platformBinaries),
         onlyCrashes,
         ignoreExpectations,
@@ -242,7 +235,9 @@
     try {
       var args = <String>[];
       if (context.strongMode) {
+        // TODO(ahe): This argument is probably ignored by the VM.
         args.add('--strong');
+        // TODO(ahe): This argument is probably ignored by the VM.
         args.add('--reify-generic-functions');
       }
       args.add(generated.path);
@@ -276,16 +271,12 @@
     StringBuffer errors = new StringBuffer();
     ProcessedOptions options = new ProcessedOptions(
         options: new CompilerOptions()
-          ..onProblem = (FormattedMessage problem, Severity severity,
-              List<FormattedMessage> context) {
+          ..legacyMode = !strongMode
+          ..onDiagnostic = (DiagnosticMessage message) {
             if (errors.isNotEmpty) {
               errors.write("\n\n");
             }
-            errors.write(problem.formatted);
-            for (FormattedMessage c in context) {
-              errors.write("\n");
-              errors.write(c.formatted);
-            }
+            errors.writeAll(message.plainTextFormatted, "\n");
           },
         inputs: <Uri>[description.uri]);
     return await CompilerContext.runWithOptions(options, (_) async {
@@ -295,45 +286,40 @@
       Component platform = await context.loadPlatform();
       Ticker ticker = new Ticker();
       DillTarget dillTarget = new DillTarget(ticker, context.uriTranslator,
-          new TestVmTarget(new TargetFlags(strongMode: strongMode)));
+          new TestVmTarget(new TargetFlags(legacyMode: !strongMode)));
       dillTarget.loader.appendLibraries(platform);
       // We create a new URI translator to avoid reading platform libraries from
       // file system.
-      UriTranslatorImpl uriTranslator = new UriTranslatorImpl(
+      UriTranslator uriTranslator = new UriTranslator(
           const TargetLibrariesSpecification('vm'),
           context.uriTranslator.packages);
       KernelTarget sourceTarget = new KernelTarget(
           StandardFileSystem.instance, false, dillTarget, uriTranslator);
 
-      Component p;
-      try {
-        sourceTarget.read(description.uri);
-        await dillTarget.buildOutlines();
-        ValidatingInstrumentation instrumentation;
-        if (strongMode) {
-          instrumentation = new ValidatingInstrumentation();
-          await instrumentation.loadExpectations(description.uri);
-          sourceTarget.loader.instrumentation = instrumentation;
-        }
-        p = await sourceTarget.buildOutlines();
-        if (fullCompile) {
-          p = await sourceTarget.buildComponent();
-          instrumentation?.finish();
-          if (instrumentation != null && instrumentation.hasProblems) {
-            if (updateComments) {
-              await instrumentation.fixSource(description.uri, false);
-            } else {
-              return fail(null, instrumentation.problemsAsString);
-            }
+      sourceTarget.setEntryPoints(<Uri>[description.uri]);
+      await dillTarget.buildOutlines();
+      ValidatingInstrumentation instrumentation;
+      if (strongMode) {
+        instrumentation = new ValidatingInstrumentation();
+        await instrumentation.loadExpectations(description.uri);
+        sourceTarget.loader.instrumentation = instrumentation;
+      }
+      Component p = await sourceTarget.buildOutlines();
+      if (fullCompile) {
+        p = await sourceTarget.buildComponent();
+        instrumentation?.finish();
+        if (instrumentation != null && instrumentation.hasProblems) {
+          if (updateComments) {
+            await instrumentation.fixSource(description.uri, false);
+          } else {
+            return fail(null, instrumentation.problemsAsString);
           }
         }
-      } on deprecated_InputError catch (e, s) {
-        return fail(null, e.message.message, s);
       }
       context.componentToTarget.clear();
       context.componentToTarget[p] = sourceTarget;
-      context.componentToProblems.clear();
-      context.componentToProblems[p] = errors;
+      context.componentToDiagnostics.clear();
+      context.componentToDiagnostics[p] = errors;
       return pass(p);
     });
   }
@@ -387,7 +373,7 @@
 
   Future<Result<Component>> run(
       Component component, FastaContext context) async {
-    StringBuffer buffer = context.componentToProblems[component];
+    StringBuffer buffer = context.componentToDiagnostics[component];
     return buffer.isEmpty
         ? pass(component)
         : fail(component, """Unexpected errors:\n$buffer""");
diff --git a/pkg/front_end/test/fasta/unlinked_scope_test.dart b/pkg/front_end/test/fasta/unlinked_scope_test.dart
index b7820d0..e58294c 100644
--- a/pkg/front_end/test/fasta/unlinked_scope_test.dart
+++ b/pkg/front_end/test/fasta/unlinked_scope_test.dart
@@ -9,7 +9,10 @@
 import 'package:kernel/target/targets.dart' show NoneTarget, TargetFlags;
 
 import 'package:front_end/src/api_prototype/compiler_options.dart'
-    show CompilerOptions, FormattedMessage, ProblemHandler;
+    show CompilerOptions;
+
+import 'package:front_end/src/api_prototype/diagnostic_message.dart'
+    show DiagnosticMessage, DiagnosticMessageHandler;
 
 import 'package:front_end/src/base/processed_options.dart'
     show ProcessedOptions;
@@ -36,9 +39,7 @@
 
 import 'package:front_end/src/fasta/scope.dart' show Scope;
 
-import 'package:front_end/src/fasta/severity.dart' show Severity;
-
-ProblemHandler handler;
+DiagnosticMessageHandler handler;
 
 class MockLibraryBuilder extends KernelLibraryBuilder {
   MockLibraryBuilder(Uri uri)
@@ -48,8 +49,8 @@
             new KernelTarget(
                     null,
                     false,
-                    new DillTarget(
-                        null, null, new NoneTarget(new TargetFlags())),
+                    new DillTarget(null, null,
+                        new NoneTarget(new TargetFlags(legacyMode: true))),
                     null)
                 .loader,
             null,
@@ -77,9 +78,8 @@
       "<test>",
       new UnlinkedScope());
 
-  handler = (FormattedMessage problem, Severity severity,
-      List<FormattedMessage> context) {
-    throw problem.formatted;
+  handler = (DiagnosticMessage message) {
+    throw message.plainTextFormatted.join("\n");
   };
 
   Token token = scanString(source).tokens;
@@ -101,9 +101,8 @@
 main() {
   CompilerContext context = new CompilerContext(new ProcessedOptions(
       options: new CompilerOptions()
-        ..onProblem = (FormattedMessage problem, Severity severity,
-            List<FormattedMessage> context) {
-          handler(problem, severity, context);
+        ..onDiagnostic = (DiagnosticMessage message) {
+          handler(message);
         }));
   context.runInContext((_) {
     testExpression("unresolved");
diff --git a/pkg/front_end/test/fasta/uri_translator_test.dart b/pkg/front_end/test/fasta/uri_translator_test.dart
index 455d771..8ca2490 100644
--- a/pkg/front_end/test/fasta/uri_translator_test.dart
+++ b/pkg/front_end/test/fasta/uri_translator_test.dart
@@ -3,7 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:front_end/src/base/libraries_specification.dart';
-import 'package:front_end/src/fasta/uri_translator_impl.dart';
+import 'package:front_end/src/fasta/uri_translator.dart';
 import 'package:package_config/packages.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -16,7 +16,7 @@
 
 @reflectiveTest
 class UriTranslatorImplTest {
-  UriTranslatorImpl translator = new UriTranslatorImpl(
+  UriTranslator translator = new UriTranslator(
       new TargetLibrariesSpecification('vm', {
         'core': new LibraryInfo('core',
             Uri.parse('org-dartlang-test:///sdk/core/core.dart'), const []),
diff --git a/pkg/front_end/test/hot_reload_e2e_test.dart b/pkg/front_end/test/hot_reload_e2e_test.dart
index f31e7c3..7b50c3c 100644
--- a/pkg/front_end/test/hot_reload_e2e_test.dart
+++ b/pkg/front_end/test/hot_reload_e2e_test.dart
@@ -291,7 +291,7 @@
   });
 }
 
-final Uri sdkRoot = computePlatformBinariesLocation();
+final Uri sdkRoot = computePlatformBinariesLocation(forceBuildDir: true);
 
 IncrementalKernelGenerator createIncrementalCompiler(
     String entry, FileSystem fs) {
@@ -299,7 +299,7 @@
   var options = new CompilerOptions()
     ..sdkRoot = sdkRoot
     ..librariesSpecificationUri = Uri.base.resolve("sdk/lib/libraries.json")
-    ..strongMode = false
+    ..legacyMode = true
     ..fileSystem = fs;
   return new IncrementalKernelGenerator(options, entryUri);
 }
diff --git a/pkg/front_end/test/incremental_bulk_compiler_full.dart b/pkg/front_end/test/incremental_bulk_compiler_full.dart
index c0f5a87..a52ac90 100644
--- a/pkg/front_end/test/incremental_bulk_compiler_full.dart
+++ b/pkg/front_end/test/incremental_bulk_compiler_full.dart
@@ -7,7 +7,7 @@
 import 'package:expect/expect.dart' show Expect;
 
 import 'package:front_end/src/api_prototype/compiler_options.dart'
-    show CompilerOptions;
+    show CompilerOptions, DiagnosticMessage;
 
 import 'package:front_end/src/api_prototype/incremental_kernel_generator.dart'
     show IncrementalKernelGenerator;
@@ -15,13 +15,9 @@
 import 'package:front_end/src/compute_platform_binaries_location.dart'
     show computePlatformBinariesLocation;
 
-import 'package:front_end/src/fasta/fasta_codes.dart' show FormattedMessage;
-
 import 'package:front_end/src/fasta/incremental_compiler.dart'
     show IncrementalCompiler;
 
-import 'package:front_end/src/fasta/severity.dart' show Severity;
-
 import 'package:kernel/kernel.dart' show Component;
 
 import 'package:kernel/text/ast_to_text.dart'
@@ -56,21 +52,18 @@
 }
 
 CompilerOptions getOptions(bool strong) {
-  final Uri sdkRoot = computePlatformBinariesLocation();
+  final Uri sdkRoot = computePlatformBinariesLocation(forceBuildDir: true);
   var options = new CompilerOptions()
     ..sdkRoot = sdkRoot
     ..librariesSpecificationUri = Uri.base.resolve("sdk/lib/libraries.json")
-    ..onProblem = (FormattedMessage problem, Severity severity,
-        List<FormattedMessage> context) {
-      // ignore
+    ..onDiagnostic = (DiagnosticMessage message) {
+      // Ignored.
     }
-    ..strongMode = strong;
+    ..legacyMode = !strong;
   if (strong) {
-    options.sdkSummary =
-        computePlatformBinariesLocation().resolve("vm_platform_strong.dill");
+    options.sdkSummary = sdkRoot.resolve("vm_platform_strong.dill");
   } else {
-    options.sdkSummary =
-        computePlatformBinariesLocation().resolve("vm_platform.dill");
+    options.sdkSummary = sdkRoot.resolve("vm_platform.dill");
   }
   return options;
 }
@@ -155,7 +148,7 @@
     }
     for (int i = 0; i < length; ++i) {
       if (a[i] != b[i]) {
-        Expect.fail("Data differs at byte ${i+1}.");
+        Expect.fail("Data differs at byte ${i + 1}.");
       }
     }
     Expect.equals(a.length, b.length);
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 027eb10..8a1495d4 100644
--- a/pkg/front_end/test/incremental_load_from_dill_test.dart
+++ b/pkg/front_end/test/incremental_load_from_dill_test.dart
@@ -14,7 +14,7 @@
 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
 
 import 'package:front_end/src/api_prototype/compiler_options.dart'
-    show CompilerOptions;
+    show CompilerOptions, DiagnosticMessage;
 
 import "package:front_end/src/api_prototype/memory_file_system.dart"
     show MemoryFileSystem;
@@ -22,8 +22,6 @@
 import 'package:front_end/src/compute_platform_binaries_location.dart'
     show computePlatformBinariesLocation;
 
-import 'package:front_end/src/fasta/fasta_codes.dart' show FormattedMessage;
-
 import 'package:front_end/src/fasta/incremental_compiler.dart'
     show IncrementalCompiler;
 
@@ -181,7 +179,7 @@
 }
 
 Future<Null> newWorldTest(bool strong, List worlds) async {
-  final Uri sdkRoot = computePlatformBinariesLocation();
+  final Uri sdkRoot = computePlatformBinariesLocation(forceBuildDir: true);
   final Uri base = Uri.parse("org-dartlang-test:///");
   final Uri sdkSummary = base.resolve("vm_platform.dill");
   final Uri initializeFrom = base.resolve("initializeFrom.dill");
@@ -246,14 +244,13 @@
     bool gotWarning = false;
     final List<String> formattedWarnings = <String>[];
 
-    options.onProblem = (FormattedMessage problem, Severity severity,
-        List<FormattedMessage> context) {
-      if (severity == Severity.error) {
+    options.onDiagnostic = (DiagnosticMessage message) {
+      if (message.severity == Severity.error) {
         gotError = true;
-        formattedErrors.add(problem.formatted);
-      } else if (severity == Severity.warning) {
+        formattedErrors.addAll(message.plainTextFormatted);
+      } else if (message.severity == Severity.warning) {
         gotWarning = true;
-        formattedWarnings.add(problem.formatted);
+        formattedWarnings.addAll(message.plainTextFormatted);
       }
     };
 
@@ -356,18 +353,19 @@
 }
 
 CompilerOptions getOptions(bool strong) {
-  final Uri sdkRoot = computePlatformBinariesLocation();
+  final Uri sdkRoot = computePlatformBinariesLocation(forceBuildDir: true);
   CompilerOptions options = new CompilerOptions()
     ..sdkRoot = sdkRoot
-    ..target = new VmTarget(new TargetFlags(strongMode: strong))
+    ..target = new VmTarget(new TargetFlags(legacyMode: !strong))
     ..librariesSpecificationUri = Uri.base.resolve("sdk/lib/libraries.json")
-    ..onProblem = (FormattedMessage problem, Severity severity,
-        List<FormattedMessage> context) {
-      if (severity == Severity.error || severity == Severity.warning) {
-        Expect.fail("Unexpected error: ${problem.formatted}");
+    ..onDiagnostic = (DiagnosticMessage message) {
+      if (message.severity == Severity.error ||
+          message.severity == Severity.warning) {
+        Expect.fail(
+            "Unexpected error: ${message.plainTextFormatted.join('\n')}");
       }
     }
-    ..strongMode = strong;
+    ..legacyMode = !strong;
   if (strong) {
     options.sdkSummary = sdkRoot.resolve("vm_platform_strong.dill");
   } else {
diff --git a/pkg/front_end/test/incremental_load_from_invalid_dill_test.dart b/pkg/front_end/test/incremental_load_from_invalid_dill_test.dart
index 2903688..8167690 100644
--- a/pkg/front_end/test/incremental_load_from_invalid_dill_test.dart
+++ b/pkg/front_end/test/incremental_load_from_invalid_dill_test.dart
@@ -14,6 +14,9 @@
 import "package:front_end/src/api_prototype/memory_file_system.dart"
     show MemoryFileSystem;
 
+import 'package:front_end/src/api_prototype/diagnostic_message.dart'
+    show DiagnosticMessage, getMessageCodeObject;
+
 import 'package:front_end/src/base/processed_options.dart'
     show ProcessedOptions;
 
@@ -24,12 +27,9 @@
 
 import 'package:front_end/src/fasta/fasta_codes.dart'
     show
-        Template,
-        templateInitializeFromDillNotSelfContained,
-        templateInitializeFromDillUnknownProblem,
-        FormattedMessage;
-
-import 'package:front_end/src/fasta/fasta_codes.dart' show FormattedMessage;
+        Code,
+        codeInitializeFromDillNotSelfContained,
+        codeInitializeFromDillUnknownProblem;
 
 import 'package:front_end/src/fasta/incremental_compiler.dart'
     show IncrementalCompiler;
@@ -57,15 +57,15 @@
   Uri entryPoint;
   Uri platformUri;
   List<int> sdkSummaryData;
-  List<FormattedMessage> formattedErrors;
-  List<FormattedMessage> formattedWarnings;
+  List<DiagnosticMessage> errorMessages;
+  List<DiagnosticMessage> warningMessages;
   MemoryFileSystem fs;
   CompilerOptions options;
 
   compileExpectInitializeFailAndSpecificWarning(
-      Template expectedWarningTemplate) async {
-    formattedErrors.clear();
-    formattedWarnings.clear();
+      Code expectedWarningCode) async {
+    errorMessages.clear();
+    warningMessages.clear();
     IncrementalCompiler compiler = new IncrementalCompiler(
         new CompilerContext(
             new ProcessedOptions(options: options, inputs: [entryPoint])),
@@ -74,21 +74,21 @@
     if (compiler.initializedFromDill) {
       Expect.fail("Expected to not be able to initialized from dill, but did.");
     }
-    if (formattedErrors.isNotEmpty) {
-      Expect.fail("Got unexpected errors: $formattedErrors");
+    if (errorMessages.isNotEmpty) {
+      Expect.fail("Got unexpected errors: " + joinMessages(errorMessages));
     }
-    if (formattedWarnings.length != 1) {
-      Expect.fail(
-          "Got unexpected errors: Expected one, got this: $formattedWarnings");
+    if (warningMessages.length != 1) {
+      Expect.fail("Got unexpected errors: Expected one, got this: " +
+          joinMessages(warningMessages));
     }
-    if (formattedWarnings[0].code.template != expectedWarningTemplate) {
-      Expect.fail("Expected $expectedWarningTemplate "
-          "but got $formattedWarnings");
+    if (getMessageCodeObject(warningMessages[0]) != expectedWarningCode) {
+      Expect.fail("Expected ${expectedWarningCode.name} but got " +
+          joinMessages(warningMessages));
     }
   }
 
   initialize() async {
-    sdkRoot = computePlatformBinariesLocation();
+    sdkRoot = computePlatformBinariesLocation(forceBuildDir: true);
     base = Uri.parse("org-dartlang-test:///");
     sdkSummary = base.resolve("vm_platform.dill");
     initializeFrom = base.resolve("initializeFrom.dill");
@@ -96,20 +96,19 @@
     entryPoint = base.resolve("small.dart");
     platformUri = sdkRoot.resolve("vm_platform_strong.dill");
     sdkSummaryData = await new File.fromUri(platformUri).readAsBytes();
-    formattedErrors = <FormattedMessage>[];
-    formattedWarnings = <FormattedMessage>[];
+    errorMessages = <DiagnosticMessage>[];
+    warningMessages = <DiagnosticMessage>[];
     fs = new MemoryFileSystem(base);
     options = getOptions(true);
 
     options.fileSystem = fs;
     options.sdkRoot = null;
     options.sdkSummary = sdkSummary;
-    options.onProblem = (FormattedMessage problem, Severity severity,
-        List<FormattedMessage> context) {
-      if (severity == Severity.error) {
-        formattedErrors.add(problem);
-      } else if (severity == Severity.warning) {
-        formattedWarnings.add(problem);
+    options.onDiagnostic = (DiagnosticMessage message) {
+      if (message.severity == Severity.error) {
+        errorMessages.add(message);
+      } else if (message.severity == Severity.warning) {
+        warningMessages.add(message);
       }
     };
 
@@ -148,11 +147,11 @@
       Expect.fail(
           "Expected to have sucessfully initialized from dill, but didn't.");
     }
-    if (formattedErrors.isNotEmpty) {
-      Expect.fail("Got unexpected errors: $formattedErrors");
+    if (errorMessages.isNotEmpty) {
+      Expect.fail("Got unexpected errors: " + joinMessages(errorMessages));
     }
-    if (formattedWarnings.isNotEmpty) {
-      Expect.fail("Got unexpected errors: $formattedWarnings");
+    if (warningMessages.isNotEmpty) {
+      Expect.fail("Got unexpected warnings: " + joinMessages(warningMessages));
     }
 
     // Create a partial dill file.
@@ -167,12 +166,16 @@
 
     // Initializing from partial dill should not be ok.
     await compileExpectInitializeFailAndSpecificWarning(
-        templateInitializeFromDillNotSelfContained);
+        codeInitializeFromDillNotSelfContained);
 
     // Create a invalid dill file to load from: Should not be ok.
     data = new List<int>.filled(42, 42);
     fs.entityForUri(initializeFrom).writeAsBytesSync(data);
     await compileExpectInitializeFailAndSpecificWarning(
-        templateInitializeFromDillUnknownProblem);
+        codeInitializeFromDillUnknownProblem);
   }
 }
+
+String joinMessages(List<DiagnosticMessage> messages) {
+  return messages.map((m) => m.plainTextFormatted.join("\n")).join("\n");
+}
diff --git a/pkg/front_end/test/issue_34856_test.dart b/pkg/front_end/test/issue_34856_test.dart
new file mode 100644
index 0000000..c3f6693
--- /dev/null
+++ b/pkg/front_end/test/issue_34856_test.dart
@@ -0,0 +1,108 @@
+// 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' show File;
+
+import 'package:async_helper/async_helper.dart' show asyncTest;
+
+import 'package:front_end/src/api_prototype/compiler_options.dart'
+    show CompilerOptions;
+
+import 'package:front_end/src/api_prototype/kernel_generator.dart'
+    show kernelForComponent;
+
+import 'package:front_end/src/api_prototype/memory_file_system.dart'
+    show MemoryFileSystem;
+
+import 'package:front_end/src/base/processed_options.dart'
+    show ProcessedOptions;
+
+import 'package:front_end/src/compute_platform_binaries_location.dart'
+    show computePlatformBinariesLocation;
+
+import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
+
+import 'package:front_end/src/fasta/kernel/utils.dart' show serializeComponent;
+
+import 'package:front_end/src/fasta/kernel/verifier.dart' show verifyComponent;
+
+import 'package:kernel/ast.dart' show Component;
+
+const Map<String, String> files = const <String, String>{
+  "repro.dart": """
+
+import 'lib.dart';
+
+abstract class M<M_K, M_V> implements Map<M_K, Set<M_V>> {}
+
+abstract class C<C_K, C_V> extends UnmodifiableMapView<C_K, Set<C_V>>
+    with M<C_K, C_V> {
+  C._() : super(null);
+}
+""",
+  "lib.dart": """abstract class MapView<K, V> {
+  const MapView(Map<K, V> map);
+}
+
+abstract class _UnmodifiableMapMixin<K, V> {}
+
+abstract class UnmodifiableMapView<K, V> extends MapView<K, V>
+    with _UnmodifiableMapMixin<K, V> {
+  UnmodifiableMapView(Map<K, V> map) : super(map);
+}""",
+};
+
+Future<void> test() async {
+  final String platformBaseName = "vm_platform_strong.dill";
+  final Uri base = Uri.parse("org-dartlang-test:///");
+  final Uri platformDill = base.resolve(platformBaseName);
+  final List<int> platformDillBytes = await new File.fromUri(
+          computePlatformBinariesLocation(forceBuildDir: true)
+              .resolve(platformBaseName))
+      .readAsBytes();
+  MemoryFileSystem fs = new MemoryFileSystem(base);
+  fs.entityForUri(platformDill).writeAsBytesSync(platformDillBytes);
+  fs
+      .entityForUri(base.resolve("lib.dart"))
+      .writeAsStringSync(files["lib.dart"]);
+  CompilerOptions options = new CompilerOptions()
+    ..fileSystem = fs
+    ..sdkSummary = platformDill;
+
+  Component component =
+      await kernelForComponent(<Uri>[base.resolve("lib.dart")], options);
+
+  fs = new MemoryFileSystem(base);
+  fs.entityForUri(platformDill).writeAsBytesSync(platformDillBytes);
+  fs
+      .entityForUri(base.resolve("lib.dart.dill"))
+      .writeAsBytesSync(serializeComponent(component));
+  fs
+      .entityForUri(base.resolve("repro.dart"))
+      .writeAsStringSync(files["repro.dart"]);
+
+  options = new CompilerOptions()
+    ..fileSystem = fs
+    ..linkedDependencies = <Uri>[base.resolve("lib.dart.dill")]
+    ..sdkSummary = platformDill;
+
+  List<Uri> inputs = <Uri>[base.resolve("repro.dart")];
+
+  component = await kernelForComponent(inputs, options);
+
+  List<Object> errors = await CompilerContext.runWithOptions(
+      new ProcessedOptions(options: options, inputs: inputs),
+      (_) => new Future<List<Object>>.value(
+          verifyComponent(component, skipPlatform: true)));
+
+  serializeComponent(component);
+
+  if (errors.isNotEmpty) {
+    throw "Verification failed";
+  }
+}
+
+main() {
+  asyncTest(test);
+}
diff --git a/pkg/front_end/test/kernel_generator_test.dart b/pkg/front_end/test/kernel_generator_test.dart
index 083c293..b386663 100644
--- a/pkg/front_end/test/kernel_generator_test.dart
+++ b/pkg/front_end/test/kernel_generator_test.dart
@@ -14,7 +14,6 @@
         isFalse,
         isNotEmpty,
         isNotNull,
-        isNull,
         isTrue,
         same,
         test;
@@ -42,11 +41,11 @@
         ..librariesSpecificationUri = invalidCoreLibsSpecUri
         ..sdkSummary = null
         ..compileSdk = true // To prevent FE from loading an sdk-summary.
-        ..onError = (e) => errors.add(e);
+        ..onDiagnostic = errors.add;
 
       var component =
           await compileScript('main() => print("hi");', options: options);
-      expect(component, isNull);
+      expect(component, isNotNull);
       expect(errors, isNotEmpty);
     });
 
@@ -55,11 +54,11 @@
       var options = new CompilerOptions()
         ..sdkSummary =
             Uri.parse('org-dartlang-test:///not_existing_summary_file')
-        ..onError = (e) => errors.add(e);
+        ..onDiagnostic = errors.add;
 
       var component =
           await compileScript('main() => print("hi");', options: options);
-      expect(component, isNull);
+      expect(component, isNotNull);
       expect(errors, isNotEmpty);
     });
 
@@ -82,7 +81,7 @@
 
     test('compiler requires a main method', () async {
       var errors = [];
-      var options = new CompilerOptions()..onError = (e) => errors.add(e);
+      var options = new CompilerOptions()..onDiagnostic = errors.add;
       await compileScript('a() => print("hi");', options: options);
       expect(errors.first.message, messageMissingMain.message);
     });
@@ -151,7 +150,7 @@
   group('kernelForComponent', () {
     test('compiler does not require a main method', () async {
       var errors = [];
-      var options = new CompilerOptions()..onError = (e) => errors.add(e);
+      var options = new CompilerOptions()..onDiagnostic = errors.add;
       await compileUnit(['a.dart'], {'a.dart': 'a() => print("hi");'},
           options: options);
       expect(errors, isEmpty);
@@ -159,7 +158,7 @@
 
     test('compiler is not hermetic by default', () async {
       var errors = [];
-      var options = new CompilerOptions()..onError = (e) => errors.add(e);
+      var options = new CompilerOptions()..onDiagnostic = errors.add;
       await compileUnit([
         'a.dart'
       ], {
diff --git a/pkg/front_end/test/mixin_export_test.dart b/pkg/front_end/test/mixin_export_test.dart
index 04107f5..bf97cc2 100644
--- a/pkg/front_end/test/mixin_export_test.dart
+++ b/pkg/front_end/test/mixin_export_test.dart
@@ -16,6 +16,6 @@
     };
     await compileUnit(sources.keys.toList(), sources,
         options: new CompilerOptions()
-          ..onError = (e) => throw '${e.severity}: ${e.message}');
+          ..onDiagnostic = (m) => throw m.plainTextFormatted.join("\n"));
   });
 }
diff --git a/pkg/front_end/test/packages_format_error_test.dart b/pkg/front_end/test/packages_format_error_test.dart
index e776b71..0962a74 100644
--- a/pkg/front_end/test/packages_format_error_test.dart
+++ b/pkg/front_end/test/packages_format_error_test.dart
@@ -7,7 +7,10 @@
 import 'package:expect/expect.dart' show Expect;
 
 import 'package:front_end/src/api_prototype/compiler_options.dart'
-    show CompilerOptions, FormattedMessage;
+    show CompilerOptions;
+
+import 'package:front_end/src/api_prototype/diagnostic_message.dart'
+    show DiagnosticMessage, getMessageCodeObject;
 
 import 'package:front_end/src/api_prototype/memory_file_system.dart'
     show MemoryFileSystem;
@@ -17,27 +20,31 @@
 
 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
 
+import 'package:front_end/src/fasta/messages.dart'
+    show codeCantReadFile, codePackagesFileFormat;
+
 main() {
   Uri root = Uri.parse("org-dartlang-test:///");
   MemoryFileSystem fs = new MemoryFileSystem(root);
   Uri packages = root.resolve(".packages");
   fs.entityForUri(packages).writeAsStringSync("bad\n");
-  List<FormattedMessage> messages = <FormattedMessage>[];
+  List<DiagnosticMessage> messages = <DiagnosticMessage>[];
   CompilerContext c = new CompilerContext(new ProcessedOptions(
       options: new CompilerOptions()
         ..fileSystem = fs
-        ..onProblem = (message, severity, context) {
+        ..onDiagnostic = (message) {
           messages.add(message);
         }));
   asyncTest(() async {
     await c
         .runInContext<void>((_) => c.options.createPackagesFromFile(packages));
-    Expect.stringEquals("PackagesFileFormat", messages.single.code.name);
+    Expect.identical(
+        codePackagesFileFormat, getMessageCodeObject(messages.single));
     messages.clear();
 
     await c.runInContext<void>(
         (_) => c.options.createPackagesFromFile(root.resolve("missing-file")));
-    Expect.stringEquals("CantReadFile", messages.single.code.name);
+    Expect.identical(codeCantReadFile, getMessageCodeObject(messages.single));
     messages.clear();
   });
 }
diff --git a/pkg/front_end/test/scanner_fasta_test.dart b/pkg/front_end/test/scanner_fasta_test.dart
index fa5c628..4b68911 100644
--- a/pkg/front_end/test/scanner_fasta_test.dart
+++ b/pkg/front_end/test/scanner_fasta_test.dart
@@ -6,6 +6,7 @@
 import 'package:analyzer/src/fasta/token_utils.dart';
 import 'package:front_end/src/fasta/fasta_codes.dart';
 import 'package:front_end/src/fasta/scanner.dart' as usedForFuzzTesting;
+import 'package:front_end/src/fasta/scanner.dart';
 import 'package:front_end/src/fasta/scanner/error_token.dart' as fasta;
 import 'package:front_end/src/fasta/scanner/string_scanner.dart' as fasta;
 import 'package:front_end/src/fasta/scanner/token.dart' as fasta;
@@ -103,6 +104,14 @@
       {bool lazyAssignmentOperators: false}) {
     var scanner = createScanner(source);
     var token = scanner.tokenize();
+    if (scanner.errors != null) {
+      for (LocatedMessage error in scanner.errors) {
+        translateScanError(error.code, error.charOffset, error.length,
+            (ScannerErrorCode errorCode, int offset, List<Object> arguments) {
+          listener.errors.add(new TestError(offset, errorCode, arguments));
+        });
+      }
+    }
     return new ToAnalyzerTokenStreamConverter_WithListener(listener)
         .convertTokens(token);
   }
@@ -338,7 +347,28 @@
 
 /// Base class for scanner tests that examine the token stream in Fasta format.
 abstract class ScannerTest_Fasta_Base {
-  Token scan(String source);
+  List<LocatedMessage> scanErrors;
+
+  Token scan(String source, {int errorCount});
+
+  expectError(Code code, int charOffset, int length) {
+    if (scanErrors == null) {
+      fail('Expected $code but found no errors');
+    }
+    for (LocatedMessage e in scanErrors) {
+      if (e.code == code && e.charOffset == charOffset && e.length == length) {
+        return;
+      }
+    }
+    final msg = new StringBuffer();
+    msg.writeln('Expected:');
+    msg.writeln('  $code at $charOffset, $length');
+    msg.writeln('but found:');
+    for (LocatedMessage e in scanErrors) {
+      msg.writeln('  ${e.code} at ${e.charOffset}, ${e.length}');
+    }
+    fail(msg.toString());
+  }
 
   expectToken(Token token, TokenType type, int offset, int length,
       {bool isSynthetic: false, String lexeme}) {
@@ -381,7 +411,8 @@
   }
 
   void test_string_simple_unterminated_interpolation_block() {
-    Token token = scan(r'"foo ${bar');
+    Token token = scan(r'"foo ${bar', errorCount: 1);
+    expectError(codeUnterminatedString, 0, 10);
     expectToken(token, TokenType.STRING, 0, 5, lexeme: '"foo ');
 
     token = token.next;
@@ -405,12 +436,12 @@
     expectToken(token, TokenType.STRING, 10, 0, isSynthetic: true, lexeme: '"');
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, '"');
+    expect(token.isEof, isTrue);
   }
 
   void test_string_simple_unterminated_interpolation_block2() {
-    Token token = scan(r'"foo ${bar(baz[');
+    Token token = scan(r'"foo ${bar(baz[', errorCount: 1);
+    expectError(codeUnterminatedString, 0, 15);
     expectToken(token, TokenType.STRING, 0, 5, lexeme: '"foo ');
 
     token = token.next;
@@ -462,12 +493,12 @@
     expectToken(token, TokenType.STRING, 15, 0, isSynthetic: true, lexeme: '"');
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, '"');
+    expect(token.isEof, isTrue);
   }
 
   void test_string_simple_missing_interpolation_identifier() {
-    Token token = scan(r'"foo $');
+    Token token = scan(r'"foo $', errorCount: 1);
+    expectError(codeUnterminatedString, 0, 6);
     expectToken(token, TokenType.STRING, 0, 5, lexeme: '"foo ');
 
     token = token.next;
@@ -485,68 +516,68 @@
     expectToken(token, TokenType.STRING, 6, 0, isSynthetic: true, lexeme: '"');
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, '"');
+    expect(token.isEof, isTrue);
   }
 
   void test_string_multi_unterminated() {
-    Token token = scan("'''string");
+    Token token = scan("'''string", errorCount: 1);
+    expectError(codeUnterminatedString, 0, 9);
     expectToken(token, TokenType.STRING, 0, 9,
         lexeme: "'''string'''", isSynthetic: true);
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, "'''");
+    expect(token.isEof, isTrue);
   }
 
   void test_string_raw_multi_unterminated() {
-    Token token = scan("r'''string");
+    Token token = scan("r'''string", errorCount: 1);
+    expectError(codeUnterminatedString, 0, 10);
     expectToken(token, TokenType.STRING, 0, 10,
         lexeme: "r'''string'''", isSynthetic: true);
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, "r'''");
+    expect(token.isEof, isTrue);
   }
 
   void test_string_raw_simple_unterminated_eof() {
-    Token token = scan("r'string");
+    Token token = scan("r'string", errorCount: 1);
+    expectError(codeUnterminatedString, 0, 8);
     expectToken(token, TokenType.STRING, 0, 8,
         lexeme: "r'string'", isSynthetic: true);
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, "r'");
+    expect(token.isEof, isTrue);
   }
 
   void test_string_raw_simple_unterminated_eol() {
-    Token token = scan("r'string\n");
+    Token token = scan("r'string\n", errorCount: 1);
+    expectError(codeUnterminatedString, 0, 8);
     expectToken(token, TokenType.STRING, 0, 8,
         lexeme: "r'string'", isSynthetic: true);
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, "r'");
+    expect(token.isEof, isTrue);
   }
 
   void test_string_simple_unterminated_eof() {
-    Token token = scan("'string");
+    Token token = scan("'string", errorCount: 1);
+    expectError(codeUnterminatedString, 0, 7);
     expectToken(token, TokenType.STRING, 0, 7,
         lexeme: "'string'", isSynthetic: true);
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, "'");
+    expect(token.isEof, isTrue);
   }
 
   void test_string_simple_unterminated_eol() {
-    Token token = scan("'string\n");
+    Token token = scan("'string\n", errorCount: 1);
+    expectError(codeUnterminatedString, 0, 7);
+
     expectToken(token, TokenType.STRING, 0, 7,
         lexeme: "'string'", isSynthetic: true);
 
     token = token.next;
-    expect((token as fasta.ErrorToken).errorCode, same(codeUnterminatedString));
-    expect((token as fasta.UnterminatedString).start, "'");
+    expect(token.isEof, isTrue);
   }
 
   void test_match_angle_brackets() {
@@ -720,8 +751,10 @@
       new fasta.StringScanner(source, includeComments: includeComments);
 
   @override
-  Token scan(String source) {
-    final Token first = createScanner(source, includeComments: true).tokenize();
+  Token scan(String source, {int errorCount}) {
+    Scanner scanner = createScanner(source, includeComments: true);
+    scanner.reportErrors = true;
+    final Token first = scanner.tokenize();
     Token token = first;
     while (!token.isEof) {
       Token next = token.next;
@@ -732,6 +765,8 @@
       }
       token = next;
     }
+    scanErrors = scanner.errors;
+    expect(scanErrors, errorCount == null ? isNull : hasLength(errorCount));
     return first;
   }
 
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 ec9cf42..605b5ac 100644
--- a/pkg/front_end/test/src/base/processed_options_test.dart
+++ b/pkg/front_end/test/src/base/processed_options_test.dart
@@ -301,7 +301,7 @@
     // .packages file should be ignored.
     var raw = new CompilerOptions()
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var processed = new ProcessedOptions(
         options: raw,
         inputs: [Uri.parse('org-dartlang-test:///base/location/script.dart')]);
@@ -319,7 +319,7 @@
     var raw = new CompilerOptions()
       ..fileSystem = fileSystem
       ..packagesFileUri = new Uri()
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var processed = new ProcessedOptions(options: raw);
     var uriTranslator = await processed.getUriTranslator();
     expect(uriTranslator.packages.asMap(), isEmpty);
@@ -334,7 +334,7 @@
     var errors = [];
     var raw = new CompilerOptions()
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options = new ProcessedOptions(options: raw);
     var result = await options.validateOptions();
     expect(errors.single.message, messageMissingInput.message);
@@ -345,7 +345,7 @@
     var errors = [];
     var raw = new CompilerOptions()
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options =
         new ProcessedOptions(options: raw, inputs: [Uri.parse('foo.dart')]);
     var result = await options.validateOptions();
@@ -371,7 +371,7 @@
     var raw = new CompilerOptions()
       ..sdkRoot = sdkRoot
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options =
         new ProcessedOptions(options: raw, inputs: [Uri.parse('foo.dart')]);
     var result = await options.validateOptions();
@@ -389,7 +389,7 @@
     var raw = new CompilerOptions()
       ..sdkRoot = sdkRoot
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options =
         new ProcessedOptions(options: raw, inputs: [Uri.parse('foo.dart')]);
     expect(await options.validateOptions(), isFalse);
@@ -408,7 +408,7 @@
     var raw = new CompilerOptions()
       ..sdkSummary = sdkSummary
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options =
         new ProcessedOptions(options: raw, inputs: [Uri.parse('foo.dart')]);
     var result = await options.validateOptions();
@@ -425,7 +425,7 @@
     var raw = new CompilerOptions()
       ..sdkSummary = sdkSummary
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options =
         new ProcessedOptions(options: raw, inputs: [Uri.parse('foo.dart')]);
     expect(await options.validateOptions(), isFalse);
@@ -447,7 +447,7 @@
     var raw = new CompilerOptions()
       ..sdkRoot = sdkRoot
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options =
         new ProcessedOptions(options: raw, inputs: [Uri.parse('foo.dart')]);
     var result = await options.validateOptions();
@@ -466,7 +466,7 @@
     var raw = new CompilerOptions()
       ..sdkSummary = sdkSummary
       ..fileSystem = fileSystem
-      ..onError = (e) => errors.add(e);
+      ..onDiagnostic = errors.add;
     var options =
         new ProcessedOptions(options: raw, inputs: [Uri.parse('foo.dart')]);
     expect(await options.validateOptions(), isFalse);
diff --git a/pkg/front_end/test/summary_generator_test.dart b/pkg/front_end/test/summary_generator_test.dart
index a74d5e2..5c30538 100644
--- a/pkg/front_end/test/summary_generator_test.dart
+++ b/pkg/front_end/test/summary_generator_test.dart
@@ -123,7 +123,7 @@
 
   test('summarization by default is not hermetic', () async {
     var errors = [];
-    var options = new CompilerOptions()..onError = (e) => errors.add(e);
+    var options = new CompilerOptions()..onDiagnostic = errors.add;
     await summarize(['b.dart'], allSources, options: options);
     expect(errors, isEmpty);
   });
diff --git a/pkg/front_end/test/whole_program_test.dart b/pkg/front_end/test/whole_program_test.dart
index 9c63521..717e20c 100644
--- a/pkg/front_end/test/whole_program_test.dart
+++ b/pkg/front_end/test/whole_program_test.dart
@@ -51,8 +51,8 @@
 }
 
 Future runCompiler(Uri input, Uri output) async {
-  final Uri platformDill =
-      computePlatformBinariesLocation().resolve("vm_platform.dill");
+  final Uri platformDill = computePlatformBinariesLocation(forceBuildDir: true)
+      .resolve("vm_platform.dill");
 
   final List<String> arguments = <String>[
     '--packages=${packagesFile.toFilePath()}',
diff --git a/pkg/front_end/testcases/accessors.dart.direct.expect b/pkg/front_end/testcases/accessors.dart.direct.expect
index 9d3bdd4..a9452ce 100644
--- a/pkg/front_end/testcases/accessors.dart.direct.expect
+++ b/pkg/front_end/testcases/accessors.dart.direct.expect
@@ -53,7 +53,7 @@
 }
 static method main() → dynamic {
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#onlySetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#onlySetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "No error thrown";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/accessors.dart.direct.transformed.expect b/pkg/front_end/testcases/accessors.dart.direct.transformed.expect
index c6c025f..762a85e 100644
--- a/pkg/front_end/testcases/accessors.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/accessors.dart.direct.transformed.expect
@@ -39,7 +39,7 @@
 }
 static method main() → dynamic {
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#onlySetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#onlySetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "No error thrown";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/argument_mismatch.dart.direct.expect b/pkg/front_end/testcases/argument_mismatch.dart.direct.expect
index 9f5b485..3716c84 100644
--- a/pkg/front_end/testcases/argument_mismatch.dart.direct.expect
+++ b/pkg/front_end/testcases/argument_mismatch.dart.direct.expect
@@ -7,11 +7,6 @@
 // pkg/front_end/testcases/argument_mismatch.dart:7:29: Context: Found this candidate, but the arguments don't match.
 // /*@context=CandidateFound*/ foo() {}
 //                             ^^^
-//
-// pkg/front_end/testcases/argument_mismatch.dart:10:34: Warning: Too many positional arguments: 0 allowed, but 1 found.
-// Try removing the extra positional arguments.
-//   /*@warning=MethodNotFound*/ foo(null);
-//                                  ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/bounds_check_depends_on_inference.dart b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart
new file mode 100644
index 0000000..a5163bb
--- /dev/null
+++ b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart
@@ -0,0 +1,21 @@
+// 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.
+
+// This testcase checks an implementation detail in the bounds checking
+// mechanism.  Here String passed into bar should be checked against the bound
+// that depends on the result of type inference for expression `B.foo()`.
+
+class A<X> {
+  bar<Y extends X>() => null;
+}
+
+class B {
+  static A<Y> foo<Y extends Object>() => null;
+}
+
+baz() {
+  B.foo().bar<String>();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.direct.expect b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.direct.expect
new file mode 100644
index 0000000..92d0def
--- /dev/null
+++ b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.direct.expect
@@ -0,0 +1,22 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    : super core::Object::•()
+    ;
+  method bar<Y extends self::A::X = dynamic>() → dynamic
+    return null;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+  static method foo<Y extends core::Object = dynamic>() → self::A<self::B::foo::Y>
+    return null;
+}
+static method baz() → dynamic {
+  self::B::foo<dynamic>().bar<core::String>();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.direct.transformed.expect b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.direct.transformed.expect
new file mode 100644
index 0000000..92d0def
--- /dev/null
+++ b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.direct.transformed.expect
@@ -0,0 +1,22 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    : super core::Object::•()
+    ;
+  method bar<Y extends self::A::X = dynamic>() → dynamic
+    return null;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+  static method foo<Y extends core::Object = dynamic>() → self::A<self::B::foo::Y>
+    return null;
+}
+static method baz() → dynamic {
+  self::B::foo<dynamic>().bar<core::String>();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.outline.expect b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.outline.expect
new file mode 100644
index 0000000..ec400af
--- /dev/null
+++ b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.outline.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    ;
+  method bar<Y extends self::A::X = dynamic>() → dynamic
+    ;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    ;
+  static method foo<Y extends core::Object = dynamic>() → self::A<self::B::foo::Y>
+    ;
+}
+static method baz() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.strong.expect b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.strong.expect
new file mode 100644
index 0000000..36e4cdc
--- /dev/null
+++ b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.strong.expect
@@ -0,0 +1,22 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    : super core::Object::•()
+    ;
+  method bar<generic-covariant-impl Y extends self::A::X = self::A::X>() → dynamic
+    return null;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+  static method foo<Y extends core::Object = core::Object>() → self::A<self::B::foo::Y>
+    return null;
+}
+static method baz() → dynamic {
+  self::B::foo<core::Object>().{self::A::bar}<core::String>();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.strong.transformed.expect
new file mode 100644
index 0000000..36e4cdc
--- /dev/null
+++ b/pkg/front_end/testcases/bounds_check_depends_on_inference.dart.strong.transformed.expect
@@ -0,0 +1,22 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A<X extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::A<self::A::X>
+    : super core::Object::•()
+    ;
+  method bar<generic-covariant-impl Y extends self::A::X = self::A::X>() → dynamic
+    return null;
+}
+class B extends core::Object {
+  synthetic constructor •() → self::B
+    : super core::Object::•()
+    ;
+  static method foo<Y extends core::Object = core::Object>() → self::A<self::B::foo::Y>
+    return null;
+}
+static method baz() → dynamic {
+  self::B::foo<core::Object>().{self::A::bar}<core::String>();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/bug21938.dart.strong.expect b/pkg/front_end/testcases/bug21938.dart.strong.expect
index 4417d30..08cc80d 100644
--- a/pkg/front_end/testcases/bug21938.dart.strong.expect
+++ b/pkg/front_end/testcases/bug21938.dart.strong.expect
@@ -13,7 +13,7 @@
 // pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'dart.core::Object'.
 // Try correcting the name to the name of an existing method, or defining a method named 'call'.
 //   x. /*@error=UndefinedMethod*/ call();
-//                                 ^
+//                                 ^^^^
 
 library;
 import self as self;
@@ -22,19 +22,19 @@
 static method test() → dynamic {
   core::Object x;
   core::Function f;
-  let final dynamic #t1 = x in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/bug21938.dart:10:4: Error: The method 'call' isn't defined for the class 'dart.core::Object'.
+  let final dynamic #t1 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:10:4: Error: The method 'call' isn't defined for the class 'dart.core::Object'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x /*@error=UndefinedMethod*/ ();
    ^";
-  let final dynamic #t2 = x in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/bug21938.dart:11:4: Error: The method 'call' isn't defined for the class 'dart.core::Object'.
+  let final dynamic #t2 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:11:4: Error: The method 'call' isn't defined for the class 'dart.core::Object'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x /*@error=UndefinedMethod*/ (3);
    ^";
   f.call(5, 2);
-  let final dynamic #t3 = x in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'dart.core::Object'.
+  let final dynamic #t3 = x in invalid-expression "pkg/front_end/testcases/bug21938.dart:13:33: Error: The method 'call' isn't defined for the class 'dart.core::Object'.
 Try correcting the name to the name of an existing method, or defining a method named 'call'.
   x. /*@error=UndefinedMethod*/ call();
-                                ^";
+                                ^^^^";
   f.call;
   f.call(5, 2);
 }
diff --git a/pkg/front_end/testcases/bug30695.dart.direct.expect b/pkg/front_end/testcases/bug30695.dart.direct.expect
index 5967a02..63df473 100644
--- a/pkg/front_end/testcases/bug30695.dart.direct.expect
+++ b/pkg/front_end/testcases/bug30695.dart.direct.expect
@@ -1,12 +1,18 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/bug30695.dart:11:3: Warning: Can't declare a member that conflicts with an inherited one.
+// pkg/front_end/testcases/bug30695.dart:11:3: Error: Can't declare a member that conflicts with an inherited one.
 //   foo() => 42;
 //   ^
 // pkg/front_end/testcases/bug30695.dart:6:7: Context: This is the inherited member.
 //   var foo = 42;
 //       ^
 
+// Unhandled errors:
+//
+// pkg/front_end/testcases/bug30695.dart:11:3: Error: Can't declare a member that conflicts with an inherited one.
+//   foo() => 42;
+//   ^
+
 library;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/bug30695.dart.direct.transformed.expect b/pkg/front_end/testcases/bug30695.dart.direct.transformed.expect
index 72bc890..8836357 100644
--- a/pkg/front_end/testcases/bug30695.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/bug30695.dart.direct.transformed.expect
@@ -1,3 +1,9 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/bug30695.dart:11:3: Error: Can't declare a member that conflicts with an inherited one.
+//   foo() => 42;
+//   ^
+
 library;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/bug30695.dart.outline.expect b/pkg/front_end/testcases/bug30695.dart.outline.expect
index cf6badd..e65b195 100644
--- a/pkg/front_end/testcases/bug30695.dart.outline.expect
+++ b/pkg/front_end/testcases/bug30695.dart.outline.expect
@@ -1,6 +1,6 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/bug30695.dart:11:3: Warning: Can't declare a member that conflicts with an inherited one.
+// pkg/front_end/testcases/bug30695.dart:11:3: Error: Can't declare a member that conflicts with an inherited one.
 //   foo() => 42;
 //   ^
 // pkg/front_end/testcases/bug30695.dart:6:7: Context: This is the inherited member.
diff --git a/pkg/front_end/testcases/bug32414a.dart.strong.expect b/pkg/front_end/testcases/bug32414a.dart.strong.expect
index bef880c..8e0e0b72 100644
--- a/pkg/front_end/testcases/bug32414a.dart.strong.expect
+++ b/pkg/front_end/testcases/bug32414a.dart.strong.expect
@@ -12,9 +12,9 @@
 static method test() → void {
   dynamic a = 5;
   core::String b = a.{core::Object::toString}();
-  b = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/bug32414a.dart:10:7: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  b = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/bug32414a.dart:10:7: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   b = 42;
-      ^" in let final dynamic #t2 = 42 in null;
+      ^" in 42 as{TypeError} core::String;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/bug32414a.dart.strong.transformed.expect b/pkg/front_end/testcases/bug32414a.dart.strong.transformed.expect
index 079972f..3fdd972 100644
--- a/pkg/front_end/testcases/bug32414a.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/bug32414a.dart.strong.transformed.expect
@@ -5,9 +5,9 @@
 static method test() → void {
   dynamic a = 5;
   core::String b = a.{core::Object::toString}();
-  b = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/bug32414a.dart:10:7: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  b = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/bug32414a.dart:10:7: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   b = 42;
-      ^" in let final core::int #t2 = 42 in null;
+      ^" in 42 as{TypeError} core::String;
 }
 static method main() → void {}
diff --git a/pkg/front_end/testcases/bug33099.dart.outline.expect b/pkg/front_end/testcases/bug33099.dart.outline.expect
index 9e86057..176f728 100644
--- a/pkg/front_end/testcases/bug33099.dart.outline.expect
+++ b/pkg/front_end/testcases/bug33099.dart.outline.expect
@@ -14,6 +14,9 @@
     ;
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest {
+  synthetic constructor •() → self::_MyTest2&Object&MyTest
+    : super core::Object::•()
+    ;
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
   synthetic constructor •() → self::MyTest2
diff --git a/pkg/front_end/testcases/bug33099.dart.strong.expect b/pkg/front_end/testcases/bug33099.dart.strong.expect
index 1231cff..4293417 100644
--- a/pkg/front_end/testcases/bug33099.dart.strong.expect
+++ b/pkg/front_end/testcases/bug33099.dart.strong.expect
@@ -16,6 +16,9 @@
   method foo() → void {}
 }
 abstract class _MyTest2&Object&MyTest = core::Object with self::MyTest {
+  synthetic constructor •() → self::_MyTest2&Object&MyTest
+    : super core::Object::•()
+    ;
 }
 class MyTest2 extends self::_MyTest2&Object&MyTest {
   synthetic constructor •() → self::MyTest2
diff --git a/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect b/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
index cee5445..a8c371a 100644
--- a/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/bug33099.dart.strong.transformed.expect
@@ -16,7 +16,7 @@
   method foo() → void {}
 }
 abstract class _MyTest2&Object&MyTest extends core::Object implements self::MyTest {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_MyTest2&Object&MyTest
     : super core::Object::•()
     ;
   @self::failingTest
diff --git a/pkg/front_end/testcases/bug33298.dart.strong.expect b/pkg/front_end/testcases/bug33298.dart.strong.expect
index 7e67d70..6e3697a 100644
--- a/pkg/front_end/testcases/bug33298.dart.strong.expect
+++ b/pkg/front_end/testcases/bug33298.dart.strong.expect
@@ -39,9 +39,9 @@
   core::List<core::String> list4 = <core::String>["a", "b", "c"].{core::Iterable::map}<core::String>(let final self::B<core::String> #t2 = b in #t2.==(null) ?{(core::String) → core::String} null : #t2.{self::B::call}).{core::Iterable::toList}();
   self::C c = new self::C::•();
   core::List<core::String> list5 = <core::String>["a", "b", "c"].{core::Iterable::map}<core::String>(c.{self::C::call}<core::String>).{core::Iterable::toList}();
-  core::List<core::String> list6 = <core::String>["a", "b", "c"].{core::Iterable::map}<dynamic>(let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/bug33298.dart:28:44: Error: The argument type '<T extends dart.core::Object = dynamic>(#lib1::C::call::T) \u8594 #lib1::C::call::T' can't be assigned to the parameter type '(dart.core::String) \u8594 dynamic'.
+  core::List<core::String> list6 = <core::String>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/bug33298.dart:28:44: Error: The argument type '<T extends dart.core::Object = dynamic>(#lib1::C::call::T) \u8594 #lib1::C::call::T' can't be assigned to the parameter type '(dart.core::String) \u8594 dynamic'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::String) \u8594 dynamic'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in let final dynamic #t4 = let final self::C #t5 = c in #t5.==(null) ?{<T extends core::Object = dynamic>(self::C::call::T) → self::C::call::T} null : #t5.{self::C::call} in null).{core::Iterable::toList}() as{TypeError} core::List<core::String>;
+                                           ^" in (let final self::C #t4 = c in #t4.==(null) ?{<T extends core::Object = dynamic>(self::C::call::T) → self::C::call::T} null : #t4.{self::C::call}) as{TypeError} (core::String) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/bug33298.dart.strong.transformed.expect b/pkg/front_end/testcases/bug33298.dart.strong.transformed.expect
index d874875..03d367a 100644
--- a/pkg/front_end/testcases/bug33298.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/bug33298.dart.strong.transformed.expect
@@ -32,9 +32,9 @@
   core::List<core::String> list4 = <core::String>["a", "b", "c"].{core::Iterable::map}<core::String>(let final self::B<core::String> #t2 = b in #t2.==(null) ?{(core::String) → core::String} null : #t2.{self::B::call}).{core::Iterable::toList}();
   self::C c = new self::C::•();
   core::List<core::String> list5 = <core::String>["a", "b", "c"].{core::Iterable::map}<core::String>(c.{self::C::call}<core::String>).{core::Iterable::toList}();
-  core::List<core::String> list6 = <core::String>["a", "b", "c"].{core::Iterable::map}<dynamic>(let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/bug33298.dart:28:44: Error: The argument type '<T extends dart.core::Object = dynamic>(#lib1::C::call::T) \u8594 #lib1::C::call::T' can't be assigned to the parameter type '(dart.core::String) \u8594 dynamic'.
+  core::List<core::String> list6 = <core::String>["a", "b", "c"].{core::Iterable::map}<dynamic>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/bug33298.dart:28:44: Error: The argument type '<T extends dart.core::Object = dynamic>(#lib1::C::call::T) \u8594 #lib1::C::call::T' can't be assigned to the parameter type '(dart.core::String) \u8594 dynamic'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::String) \u8594 dynamic'.
   List<String> list6 = ['a', 'b', 'c'].map(c).toList();
-                                           ^" in let final <T extends core::Object = dynamic>(self::C::call::T) → self::C::call::T #t4 = let final self::C #t5 = c in #t5.==(null) ?{<T extends core::Object = dynamic>(self::C::call::T) → self::C::call::T} null : #t5.{self::C::call} in null).{core::Iterable::toList}() as{TypeError} core::List<core::String>;
+                                           ^" in (let final self::C #t4 = c in #t4.==(null) ?{<T extends core::Object = dynamic>(self::C::call::T) → self::C::call::T} null : #t4.{self::C::call}) as{TypeError} (core::String) → dynamic).{core::Iterable::toList}() as{TypeError} core::List<core::String>;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/check_deferred_before_args2.dart b/pkg/front_end/testcases/check_deferred_before_args2.dart
index d885bb9..ddfdf12 100644
--- a/pkg/front_end/testcases/check_deferred_before_args2.dart
+++ b/pkg/front_end/testcases/check_deferred_before_args2.dart
@@ -7,7 +7,7 @@
 main() {}
 
 test() async {
-  // The current evaluation order will triger the check of lib.m before the
+  // The current evaluation order will trigger the check of lib.m before the
   // loadLibrary call.
   lib.m(await lib.loadLibrary());
 }
diff --git a/pkg/front_end/testcases/circularity-via-initializing-formal.dart b/pkg/front_end/testcases/circularity-via-initializing-formal.dart
index 939cb91..abd1615 100644
--- a/pkg/front_end/testcases/circularity-via-initializing-formal.dart
+++ b/pkg/front_end/testcases/circularity-via-initializing-formal.dart
@@ -7,7 +7,7 @@
 // when inferring the type of the constructor.
 //
 // The compiler should generate an error message and it should be properly
-// formatted including offset and lenght of the constructor.
+// formatted including offset and length of the constructor.
 var x = new C._circular(null);
 
 class C {
diff --git a/pkg/front_end/testcases/compile.status b/pkg/front_end/testcases/compile.status
index 1ab4754..5fef26a 100644
--- a/pkg/front_end/testcases/compile.status
+++ b/pkg/front_end/testcases/compile.status
@@ -79,7 +79,7 @@
 rasta/mixin_library: Fail
 rasta/native_is_illegal: Fail
 rasta/parser_error: Fail
-rasta/super: Fail
+rasta/super: RuntimeError
 rasta/super_initializer: Fail
 rasta/super_operator: Fail
 rasta/try_label: Fail
@@ -101,6 +101,7 @@
 regress/issue_29976: RuntimeError # Tests runtime behavior of error recovery.
 regress/issue_29982: RuntimeError # Tests runtime behavior of error recovery.
 regress/issue_30836: RuntimeError # Issue 30836.
+regress/issue_32200: RuntimeError # Invalid type.
 regress/issue_32972: RuntimeError
 regress/issue_33452: RuntimeError # Test has an intentional error
 regress/issue_34225: RuntimeError
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart b/pkg/front_end/testcases/continue_inference_after_error.dart
new file mode 100644
index 0000000..edcb626
--- /dev/null
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart
@@ -0,0 +1,13 @@
+// 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 "continue_inference_after_error_lib.dart" as lib;
+
+class C {}
+
+test() {
+  lib(new C().missing());
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart.direct.expect b/pkg/front_end/testcases/continue_inference_after_error.dart.direct.expect
new file mode 100644
index 0000000..f613c96
--- /dev/null
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart.direct.expect
@@ -0,0 +1,21 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
+//   lib(new C().missing());
+//   ^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
+  lib(new C().missing());
+  ^^^" in let final core::Object #t2 = new self::C::•().missing() in null;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart.direct.transformed.expect b/pkg/front_end/testcases/continue_inference_after_error.dart.direct.transformed.expect
new file mode 100644
index 0000000..fab5a56
--- /dev/null
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart.direct.transformed.expect
@@ -0,0 +1,15 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
+  lib(new C().missing());
+  ^^^" in let final core::Object #t2 = new self::C::•().missing() in null;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart.outline.expect b/pkg/front_end/testcases/continue_inference_after_error.dart.outline.expect
new file mode 100644
index 0000000..e2e68b1
--- /dev/null
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart.outline.expect
@@ -0,0 +1,12 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    ;
+}
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart.strong.expect b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.expect
new file mode 100644
index 0000000..b8eb6f4
--- /dev/null
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.expect
@@ -0,0 +1,29 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
+//   lib(new C().missing());
+//   ^^^
+//
+// pkg/front_end/testcases/continue_inference_after_error.dart:10:15: Error: The method 'missing' isn't defined for the class '#lib1::C'.
+// Try correcting the name to the name of an existing method, or defining a method named 'missing'.
+//   lib(new C().missing());
+//               ^^^^^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
+  lib(new C().missing());
+  ^^^" in let final core::Object #t2 = let final dynamic #t3 = new self::C::•() in invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:15: Error: The method 'missing' isn't defined for the class '#lib1::C'.
+Try correcting the name to the name of an existing method, or defining a method named 'missing'.
+  lib(new C().missing());
+              ^^^^^^^" in null;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/continue_inference_after_error.dart.strong.transformed.expect b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.transformed.expect
new file mode 100644
index 0000000..5a51aa3
--- /dev/null
+++ b/pkg/front_end/testcases/continue_inference_after_error.dart.strong.transformed.expect
@@ -0,0 +1,18 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+}
+static method test() → dynamic {
+  let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:3: Error: A prefix can't be used as an expression.
+  lib(new C().missing());
+  ^^^" in let final core::Object #t2 = let final self::C #t3 = new self::C::•() in invalid-expression "pkg/front_end/testcases/continue_inference_after_error.dart:10:15: Error: The method 'missing' isn't defined for the class '#lib1::C'.
+Try correcting the name to the name of an existing method, or defining a method named 'missing'.
+  lib(new C().missing());
+              ^^^^^^^" in null;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/continue_inference_after_error_lib.dart b/pkg/front_end/testcases/continue_inference_after_error_lib.dart
new file mode 100644
index 0000000..87869b0
--- /dev/null
+++ b/pkg/front_end/testcases/continue_inference_after_error_lib.dart
@@ -0,0 +1,3 @@
+// 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.
diff --git a/pkg/front_end/testcases/duplicated_bad_prefix.dart.direct.expect b/pkg/front_end/testcases/duplicated_bad_prefix.dart.direct.expect
index d719c00..157828e 100644
--- a/pkg/front_end/testcases/duplicated_bad_prefix.dart.direct.expect
+++ b/pkg/front_end/testcases/duplicated_bad_prefix.dart.direct.expect
@@ -9,7 +9,7 @@
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:13:3: Warning: Type 'Dupe.a' not found.
 //   Dupe.a b;
-//   ^
+//   ^^^^^^
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:6:1: Warning: 'C' is imported from both 'pkg/front_end/testcases/duplicated_bad_prefix_lib1.dart' and 'pkg/front_end/testcases/duplicated_bad_prefix_lib2.dart'.
 // import 'duplicated_bad_prefix_lib2.dart' as dupe;
diff --git a/pkg/front_end/testcases/duplicated_bad_prefix.dart.outline.expect b/pkg/front_end/testcases/duplicated_bad_prefix.dart.outline.expect
index 008c2df..4917a59 100644
--- a/pkg/front_end/testcases/duplicated_bad_prefix.dart.outline.expect
+++ b/pkg/front_end/testcases/duplicated_bad_prefix.dart.outline.expect
@@ -9,7 +9,7 @@
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:13:3: Warning: Type 'Dupe.a' not found.
 //   Dupe.a b;
-//   ^
+//   ^^^^^^
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:6:1: Warning: 'C' is imported from both 'pkg/front_end/testcases/duplicated_bad_prefix_lib1.dart' and 'pkg/front_end/testcases/duplicated_bad_prefix_lib2.dart'.
 // import 'duplicated_bad_prefix_lib2.dart' as dupe;
diff --git a/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.expect b/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.expect
index 997fe58..9da6855 100644
--- a/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.expect
+++ b/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.expect
@@ -9,7 +9,7 @@
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:13:3: Error: Type 'Dupe.a' not found.
 //   Dupe.a b;
-//   ^
+//   ^^^^^^
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:6:1: Error: 'C' is imported from both 'pkg/front_end/testcases/duplicated_bad_prefix_lib1.dart' and 'pkg/front_end/testcases/duplicated_bad_prefix_lib2.dart'.
 // import 'duplicated_bad_prefix_lib2.dart' as dupe;
@@ -27,7 +27,7 @@
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:13:3: Error: Type 'Dupe.a' not found.
 //   Dupe.a b;
-//   ^
+//   ^^^^^^
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:6:1: Error: 'C' is imported from both 'pkg/front_end/testcases/duplicated_bad_prefix_lib1.dart' and 'pkg/front_end/testcases/duplicated_bad_prefix_lib2.dart'.
 // import 'duplicated_bad_prefix_lib2.dart' as dupe;
diff --git a/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.transformed.expect b/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.transformed.expect
index 9238d49..b6f3b03 100644
--- a/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/duplicated_bad_prefix.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:13:3: Error: Type 'Dupe.a' not found.
 //   Dupe.a b;
-//   ^
+//   ^^^^^^
 //
 // pkg/front_end/testcases/duplicated_bad_prefix.dart:6:1: Error: 'C' is imported from both 'pkg/front_end/testcases/duplicated_bad_prefix_lib1.dart' and 'pkg/front_end/testcases/duplicated_bad_prefix_lib2.dart'.
 // import 'duplicated_bad_prefix_lib2.dart' as dupe;
diff --git a/pkg/front_end/testcases/duplicated_declarations.dart.direct.expect b/pkg/front_end/testcases/duplicated_declarations.dart.direct.expect
index b9314b1..bdfb562 100644
--- a/pkg/front_end/testcases/duplicated_declarations.dart.direct.expect
+++ b/pkg/front_end/testcases/duplicated_declarations.dart.direct.expect
@@ -109,7 +109,7 @@
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: Type 'C' not found.
+// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
 //
@@ -220,7 +220,7 @@
 //   values,
 //   ^^^^^^
 //
-// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: Type 'C' not found.
+// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
 
@@ -253,7 +253,7 @@
 }
 class Sub extends core::Object {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Object, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t1 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Object, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   method m() → dynamic
     return super.m();
diff --git a/pkg/front_end/testcases/duplicated_declarations.dart.direct.transformed.expect b/pkg/front_end/testcases/duplicated_declarations.dart.direct.transformed.expect
index 34e2e71..9782b0f 100644
--- a/pkg/front_end/testcases/duplicated_declarations.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/duplicated_declarations.dart.direct.transformed.expect
@@ -64,7 +64,7 @@
 //   values,
 //   ^^^^^^
 //
-// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: Type 'C' not found.
+// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
 
@@ -97,7 +97,7 @@
 }
 class Sub extends core::Object {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Object, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t1 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Object, 0, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[null]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   method m() → dynamic
     return super.m();
diff --git a/pkg/front_end/testcases/duplicated_declarations.dart.outline.expect b/pkg/front_end/testcases/duplicated_declarations.dart.outline.expect
index 0920552..b143219 100644
--- a/pkg/front_end/testcases/duplicated_declarations.dart.outline.expect
+++ b/pkg/front_end/testcases/duplicated_declarations.dart.outline.expect
@@ -109,7 +109,7 @@
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: Type 'C' not found.
+// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
 
diff --git a/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect b/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect
index 210b653..0efb977 100644
--- a/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect
+++ b/pkg/front_end/testcases/duplicated_declarations.dart.strong.expect
@@ -109,7 +109,7 @@
 // enum AnotherEnum {
 //      ^^^^^^^^^^^
 //
-// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: Type 'C' not found.
+// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
 //
@@ -220,7 +220,7 @@
 //   values,
 //   ^^^^^^
 //
-// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: Type 'C' not found.
+// pkg/front_end/testcases/duplicated_declarations.dart:57:19: Error: 'C' isn't a type.
 // class Sub extends C {
 //                   ^
 //
diff --git a/pkg/front_end/testcases/dynamic_and_void.dart.direct.expect b/pkg/front_end/testcases/dynamic_and_void.dart.direct.expect
index aad29f6..81f6e95 100644
--- a/pkg/front_end/testcases/dynamic_and_void.dart.direct.expect
+++ b/pkg/front_end/testcases/dynamic_and_void.dart.direct.expect
@@ -2,7 +2,7 @@
 //
 // pkg/front_end/testcases/dynamic_and_void.dart:12:27: Warning: Type 'dynamic' not found.
 // /*@warning=TypeNotFound*/ dynamic testDynamic() => 0;
-//                           ^
+//                           ^^^^^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/dynamic_and_void.dart.outline.expect b/pkg/front_end/testcases/dynamic_and_void.dart.outline.expect
index 3b6e18a..593529d 100644
--- a/pkg/front_end/testcases/dynamic_and_void.dart.outline.expect
+++ b/pkg/front_end/testcases/dynamic_and_void.dart.outline.expect
@@ -2,7 +2,7 @@
 //
 // pkg/front_end/testcases/dynamic_and_void.dart:12:27: Warning: Type 'dynamic' not found.
 // /*@warning=TypeNotFound*/ dynamic testDynamic() => 0;
-//                           ^
+//                           ^^^^^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/expression/class_invalid_static.expression.yaml.expect b/pkg/front_end/testcases/expression/class_invalid_static.expression.yaml.expect
index 87c35ef..f4342e6 100644
--- a/pkg/front_end/testcases/expression/class_invalid_static.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_invalid_static.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  Method not found: 'doit_with_this'. (@0)
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Method not found: 'doit_with_this'.
+  doit_with_this(3)
+  ^^^^^^^^^^^^^^
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: Method not found: 'doit_with_this'.\ndoit_with_this(3)\n^^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect b/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
index e99f6e5..eb8b256 100644
--- a/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_invalid_static_capture.expression.yaml.expect
@@ -1,6 +1,10 @@
 Errors: {
-  Getter not found: 'y'. (@16)
-  Getter not found: 'x'. (@12)
+  org-dartlang-debug:synthetic_debug_expression:1:17: Error: Getter not found: 'y'.
+  () { return x + y; }
+                  ^
+  org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'x'.
+  () { return x + y; }
+              ^
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return () → dynamic {
diff --git a/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect b/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect
index d6cebf1..76636ce 100644
--- a/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_invalid_static_getter.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  Getter not found: 'z'. (@0)
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Getter not found: 'z'.
+  z
+  ^
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: Getter not found: 'z'.\nz\n^";
diff --git a/pkg/front_end/testcases/expression/class_invalid_static_setter.expression.yaml.expect b/pkg/front_end/testcases/expression/class_invalid_static_setter.expression.yaml.expect
index ed90dcd..be17bf6 100644
--- a/pkg/front_end/testcases/expression/class_invalid_static_setter.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_invalid_static_setter.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  Setter not found: 'z'. (@0)
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Setter not found: 'z'.
+  z = 2
+  ^
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: Setter not found: 'z'.\nz = 2\n^";
diff --git a/pkg/front_end/testcases/expression/class_static2.expression.yaml.expect b/pkg/front_end/testcases/expression/class_static2.expression.yaml.expect
index 66f7f4b..5d1ebcf 100644
--- a/pkg/front_end/testcases/expression/class_static2.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_static2.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  Method not found: 'doit_with_this'. (@0)
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Method not found: 'doit_with_this'.
+  doit_with_this(2)
+  ^^^^^^^^^^^^^^
 }
 static method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: Method not found: 'doit_with_this'.\ndoit_with_this(2)\n^^^^^^^^^^^^^^";
diff --git a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
index c3a224a..cbc3e0f 100644
--- a/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_static3.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  Getter not found: 'staticVar'. (@12)
+  org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.
+  globalVar + staticVar + 5
+              ^^^^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return #lib1::globalVar.{dart.core::num::+}(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:13: Error: Getter not found: 'staticVar'.\nglobalVar + staticVar + 5\n            ^^^^^^^^^" as{TypeError} dart.core::num).{dart.core::num::+}(5);
diff --git a/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect b/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect
index 99f4ec9..83986a9 100644
--- a/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/class_type_param_bound_illegal.expression.yaml.expect
@@ -1,4 +1,11 @@
 Errors: {
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Type argument 'main::A::T' violates the corresponding type variable bound of 'hasBound'.
+  Try changing type arguments so that they conform to the bounds.
+  hasBound<T>()
+  ^
+  pkg/front_end/testcases/expression/main.dart:36:15: Context: Bound of this variable is violated.
+  void hasBound<T extends Bound>() {}
+                ^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr(dynamic x) → dynamic
   return main::hasBound<main::A::T>();
diff --git a/pkg/front_end/testcases/expression/invalid.expression.yaml.expect b/pkg/front_end/testcases/expression/invalid.expression.yaml.expect
index 9be599f..0bf9a2f 100644
--- a/pkg/front_end/testcases/expression/invalid.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/invalid.expression.yaml.expect
@@ -1,7 +1,13 @@
 Errors: {
-  Can't find ')' to match '('. (@4)
-  Expected an identifier, but got '*'. (@0)
-  Method not found: 'foo'. (@1)
+  org-dartlang-debug:synthetic_debug_expression:1:5: Error: Can't find ')' to match '('.
+  *foo(3,
+      ^
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Expected an identifier, but got '*'.
+  *foo(3,
+  ^
+  org-dartlang-debug:synthetic_debug_expression:1:2: Error: Method not found: 'foo'.
+  *foo(3,
+   ^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: This couldn't be parsed.\n*foo(3,\n^".*(invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:2: Error: Method not found: 'foo'.\n*foo(3,\n ^^^");
diff --git a/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect
index a9ca37b..c2d537a 100644
--- a/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_external_ctor.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  The class 'Process' is abstract and can't be instantiated. (@9)
+  org-dartlang-debug:synthetic_debug_expression:1:10: Error: The class 'Process' is abstract and can't be instantiated.
+  () { new Process(); new File.fromUri(Uri.parse("file://test.dart")); }
+           ^^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return () → dart.core::Null {
diff --git a/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect
index 70b6f04..aa22db0 100644
--- a/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_nonctor.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  Method not found: 'Random'. (@4)
+  org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Random'.
+  new Random()
+      ^^^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Random'.\nnew Random()\n    ^^^^^^";
diff --git a/pkg/front_end/testcases/expression/lib_nonreference.expression.yaml.expect b/pkg/front_end/testcases/expression/lib_nonreference.expression.yaml.expect
index b7f2398..ca32714 100644
--- a/pkg/front_end/testcases/expression/lib_nonreference.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/lib_nonreference.expression.yaml.expect
@@ -1,5 +1,7 @@
 Errors: {
-  Method not found: 'acos'. (@0)
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Method not found: 'acos'.
+  acos(1.0)
+  ^^^^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:1: Error: Method not found: 'acos'.\nacos(1.0)\n^^^^";
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 4c65195..b7af5e3 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,11 @@
 Errors: {
-  Method not found: 'Directory'. (@4)
-  Too many positional arguments: 0 allowed, but 1 found. (@13)
+  org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Directory'.
+  new Directory("test")
+      ^^^^^^^^^
+  org-dartlang-debug:synthetic_debug_expression:1:14: Error: Too many positional arguments: 0 allowed, but 1 found.
+  Try removing the extra positional arguments.
+  new Directory("test")
+               ^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr() → dynamic
   return invalid-expression "org-dartlang-debug:synthetic_debug_expression:1:5: Error: Method not found: 'Directory'.\nnew Directory(\"test\")\n    ^^^^^^^^^";
diff --git a/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect
index b18dd26..e2e460d 100644
--- a/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_bound.expression.yaml.expect
@@ -1,4 +1,11 @@
 Errors: {
+  org-dartlang-debug:synthetic_debug_expression:1:1: Error: Type argument 'T' violates the corresponding type variable bound of 'hasBound'.
+  Try changing type arguments so that they conform to the bounds.
+  hasBound<T>()
+  ^
+  pkg/front_end/testcases/expression/main.dart:36:15: Context: Bound of this variable is violated.
+  void hasBound<T extends Bound>() {}
+                ^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>() → dynamic
   return main::hasBound<#lib1::debugExpr::T>();
diff --git a/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect b/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect
index a10a38b..5697f43 100644
--- a/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect
+++ b/pkg/front_end/testcases/expression/type_param_shadow_arg_ctor_inferred.expression.yaml.expect
@@ -1,7 +1,10 @@
 Errors: {
-  A value of type 'main::A<dynamic>' can't be assigned to a variable of type 'T'. (@17)
+  org-dartlang-debug:synthetic_debug_expression:2:13: Error: A value of type 'main::A<dynamic>' can't be assigned to a variable of type 'T'.
+  Try changing the type of the left hand side, or casting the right hand side to 'T'.
+    T k = new A();
+              ^
 }
 method /* from org-dartlang-debug:synthetic_debug_expression */ debugExpr<T extends dynamic>() → dynamic
   return () → dart.core::Null {
-    main::A::debugExpr::T k = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "org-dartlang-debug:synthetic_debug_expression:2:13: Error: A value of type 'main::A<dynamic>' can't be assigned to a variable of type 'T'.\nTry changing the type of the left hand side, or casting the right hand side to 'T'.\n  T k = new A();\n            ^" in let final dynamic #t2 = new main::A::•<dynamic>() in null;
+    main::A::debugExpr::T k = let final<BottomType> #t1 = invalid-expression "org-dartlang-debug:synthetic_debug_expression:2:13: Error: A value of type 'main::A<dynamic>' can't be assigned to a variable of type 'T'.\nTry changing the type of the left hand side, or casting the right hand side to 'T'.\n  T k = new A();\n            ^" in new main::A::•<dynamic>() as{TypeError} <BottomType>;
   };
diff --git a/pkg/front_end/testcases/expressions.dart.direct.expect b/pkg/front_end/testcases/expressions.dart.direct.expect
index 158f1ec..d171a65 100644
--- a/pkg/front_end/testcases/expressions.dart.direct.expect
+++ b/pkg/front_end/testcases/expressions.dart.direct.expect
@@ -75,7 +75,7 @@
   core::print(core::int);
   core::print(let final dynamic #t5 = core::int in let final dynamic #t6 = #t5.toString() in #t5);
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#int.toString, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#int.toString, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "Shouldn't work";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/expressions.dart.direct.transformed.expect b/pkg/front_end/testcases/expressions.dart.direct.transformed.expect
index 04022a3..50a474a 100644
--- a/pkg/front_end/testcases/expressions.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/expressions.dart.direct.transformed.expect
@@ -69,7 +69,7 @@
   core::print(core::int);
   core::print(let final dynamic #t5 = core::int in let final dynamic #t6 = #t5.toString() in #t5);
   try {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#int.toString, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#int.toString, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     throw "Shouldn't work";
   }
   on core::NoSuchMethodError catch(final core::NoSuchMethodError e) {
diff --git a/pkg/front_end/testcases/implicit_new.dart.direct.expect b/pkg/front_end/testcases/implicit_new.dart.direct.expect
index d2fd4b41..a61a281 100644
--- a/pkg/front_end/testcases/implicit_new.dart.direct.expect
+++ b/pkg/front_end/testcases/implicit_new.dart.direct.expect
@@ -35,8 +35,8 @@
   operator []=(dynamic _a, dynamic _b) → void {}
 }
 static method testNSM() → dynamic {
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic y = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method f(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/implicit_new.dart.direct.transformed.expect b/pkg/front_end/testcases/implicit_new.dart.direct.transformed.expect
index 5a42d71..3c0f68f 100644
--- a/pkg/front_end/testcases/implicit_new.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/implicit_new.dart.direct.transformed.expect
@@ -25,8 +25,8 @@
   operator []=(dynamic _a, dynamic _b) → void {}
 }
 static method testNSM() → dynamic {
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic y = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bar, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method f(dynamic x) → dynamic
   return x;
diff --git a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.expect b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.expect
index 6cc9547..1f9b70e 100644
--- a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.expect
@@ -28,7 +28,7 @@
 }
 static method test() → void {
   dynamic x = throw new core::AbstractClassInstantiationError::•("C");
-  dynamic y = let final dynamic #t1 = 1 in throw new core::AbstractClassInstantiationError::•("D");
-  self::D<core::List<core::int>> z = let final dynamic #t2 = <dynamic>[] in throw new core::AbstractClassInstantiationError::•("D");
+  dynamic y = let final core::Object #t1 = 1 in throw new core::AbstractClassInstantiationError::•("D");
+  self::D<core::List<core::int>> z = let final core::Object #t2 = <dynamic>[] in throw new core::AbstractClassInstantiationError::•("D");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.transformed.expect
index 34e2a90..50af77d 100644
--- a/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/abstract_class_instantiation.dart.direct.transformed.expect
@@ -14,7 +14,7 @@
 }
 static method test() → void {
   dynamic x = throw new core::AbstractClassInstantiationError::•("C");
-  dynamic y = let final dynamic #t1 = 1 in throw new core::AbstractClassInstantiationError::•("D");
-  self::D<core::List<core::int>> z = let final dynamic #t2 = <dynamic>[] in throw new core::AbstractClassInstantiationError::•("D");
+  dynamic y = let final core::Object #t1 = 1 in throw new core::AbstractClassInstantiationError::•("D");
+  self::D<core::List<core::int>> z = let final core::Object #t2 = <dynamic>[] in throw new core::AbstractClassInstantiationError::•("D");
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.expect
index f258371..ae3db91 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.expect
@@ -14,9 +14,9 @@
     return null;
   () → core::String g = f;
   g = () → core::String {
-    return let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart:12:45: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart:12:45: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     return /*error:RETURN_OF_INVALID_TYPE*/ 1;
-                                            ^" in let final dynamic #t2 = 1 in null;
+                                            ^" in 1 as{TypeError} core::String;
   };
 }
diff --git a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.transformed.expect
index b4515d3..f57fa87 100644
--- a/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart.strong.transformed.expect
@@ -7,9 +7,9 @@
     return null;
   () → core::String g = f;
   g = () → core::String {
-    return let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart:12:45: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/block_bodied_lambdas_downwards_incompatible_with_upwards_inference.dart:12:45: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     return /*error:RETURN_OF_INVALID_TYPE*/ 1;
-                                            ^" in let final core::int #t2 = 1 in null;
+                                            ^" in 1 as{TypeError} core::String;
   };
 }
diff --git a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect
index a8a3081..b088986 100644
--- a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.expect
@@ -41,11 +41,11 @@
   core::int callA = new self::A::•().{self::A::call}();
   core::int callFieldA = new self::D::•().{self::D::fieldA}();
   core::int callGetA = new self::D::•().{self::D::getA}();
-  dynamic callFieldB = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:27:69: Error: 'fieldB' isn't a function or method and can't be invoked.
+  dynamic callFieldB = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:27:69: Error: 'fieldB' isn't a function or method and can't be invoked.
   var /*@type=dynamic*/ callFieldB = new D(). /*@target=D::fieldB*/ fieldB();
-                                                                    ^" in let final dynamic #t2 = new self::D::•().{self::D::fieldB}() in null;
-  dynamic callGetB = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:28:65: Error: 'getB' isn't a function or method and can't be invoked.
+                                                                    ^" in new self::D::•().{self::D::fieldB}();
+  dynamic callGetB = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:28:65: Error: 'getB' isn't a function or method and can't be invoked.
   var /*@type=dynamic*/ callGetB = new D(). /*@target=D::getB*/ getB();
-                                                                ^" in let final dynamic #t4 = new self::D::•().{self::D::getB}() in null;
+                                                                ^" in new self::D::•().{self::D::getB}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect
index abc7cbc..3bcb5f4 100644
--- a/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/call_corner_cases.dart.strong.transformed.expect
@@ -31,11 +31,11 @@
   core::int callA = new self::A::•().{self::A::call}();
   core::int callFieldA = new self::D::•().{self::D::fieldA}();
   core::int callGetA = new self::D::•().{self::D::getA}();
-  dynamic callFieldB = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:27:69: Error: 'fieldB' isn't a function or method and can't be invoked.
+  dynamic callFieldB = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:27:69: Error: 'fieldB' isn't a function or method and can't be invoked.
   var /*@type=dynamic*/ callFieldB = new D(). /*@target=D::fieldB*/ fieldB();
-                                                                    ^" in let final dynamic #t2 = new self::D::•().{self::D::fieldB}() in null;
-  dynamic callGetB = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:28:65: Error: 'getB' isn't a function or method and can't be invoked.
+                                                                    ^" in new self::D::•().{self::D::fieldB}();
+  dynamic callGetB = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/call_corner_cases.dart:28:65: Error: 'getB' isn't a function or method and can't be invoked.
   var /*@type=dynamic*/ callGetB = new D(). /*@target=D::getB*/ getB();
-                                                                ^" in let final dynamic #t4 = new self::D::•().{self::D::getB}() in null;
+                                                                ^" in new self::D::•().{self::D::getB}();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect
index 9fb1ff1..76bc230 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.expect
@@ -22,9 +22,9 @@
   self::C<core::num> c_num = new self::C::•<core::num>(123);
   self::C<core::num> c_num2 = let final self::C<core::num> #t1 = new self::C::•<core::num>(456) in let final dynamic #t2 = #t1.{self::C::t} = 1.0 in #t1;
   self::C<dynamic> c_dynamic = new self::C::•<dynamic>(42);
-  x.{self::C::t} = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart:26:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x.{self::C::t} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart:26:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x. /*@target=C::t*/ t = /*error:INVALID_ASSIGNMENT*/ 'hello';
-                                                       ^" in let final dynamic #t4 = "hello" in null;
+                                                       ^" in "hello" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect
index 1df375d..53affbe 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
   self::C<core::num> c_num = new self::C::•<core::num>(123);
   self::C<core::num> c_num2 = let final self::C<core::num> #t1 = new self::C::•<core::num>(456) in let final core::double #t2 = #t1.{self::C::t} = 1.0 in #t1;
   self::C<dynamic> c_dynamic = new self::C::•<dynamic>(42);
-  x.{self::C::t} = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart:26:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x.{self::C::t} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments.dart:26:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x. /*@target=C::t*/ t = /*error:INVALID_ASSIGNMENT*/ 'hello';
-                                                       ^" in let final core::String #t4 = "hello" in null;
+                                                       ^" in "hello" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.outline.expect
new file mode 100644
index 0000000..ee55e81
--- /dev/null
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.outline.expect
@@ -0,0 +1,21 @@
+library test;
+import self as self;
+import "dart:core" as core;
+
+typedef F<T extends core::Object = dynamic> = () → T;
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    ;
+}
+class C<T extends self::A = dynamic> extends core::Object {
+  constructor •(() → self::C::T f) → self::C<self::C::T>
+    ;
+}
+class NotA extends core::Object {
+  synthetic constructor •() → self::NotA
+    ;
+}
+static method myF() → self::NotA
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
index 6ab45c4..7baa4a1 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart.strong.expect
@@ -1,3 +1,33 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart:22:56: Error: Inferred type argument 'test::NotA' violates the corresponding type variable bound of 'C::'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//       new /*error:COULD_NOT_INFER*/ /*@typeArgs=NotA*/ C(myF);
+//                                                        ^
+// pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart:12:9: Context: Bound of this variable is violated.
+// class C<T extends A> {
+//         ^
+//
+// pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart:21:25: Error: Inferred type argument 'test::NotA' violates the corresponding type variable bound of 'C'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   var /*@type=C<NotA>*/ x =
+//                         ^
+// pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart:12:9: Context: Bound of this variable is violated.
+// class C<T extends A> {
+//         ^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart:22:56: Error: Inferred type argument 'test::NotA' violates the corresponding type variable bound of 'C::'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//       new /*error:COULD_NOT_INFER*/ /*@typeArgs=NotA*/ C(myF);
+//                                                        ^
+//
+// pkg/front_end/testcases/inference/constructors_infer_from_arguments_argument_not_assignable.dart:21:25: Error: Inferred type argument 'test::NotA' violates the corresponding type variable bound of 'C'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   var /*@type=C<NotA>*/ x =
+//                         ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect
index defe1a8..e6a731e 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.expect
@@ -22,9 +22,9 @@
 }
 static method test() → dynamic {
   self::C<core::int> x = self::C::•<core::int>(42);
-  x.{self::C::t} = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart:22:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x.{self::C::t} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart:22:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x. /*@target=C::t*/ t = /*error:INVALID_ASSIGNMENT*/ 'hello';
-                                                       ^" in let final dynamic #t2 = "hello" in null;
+                                                       ^" in "hello" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect
index a6b5644..032989a 100644
--- a/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart.strong.transformed.expect
@@ -15,9 +15,9 @@
 }
 static method test() → dynamic {
   self::C<core::int> x = self::C::•<core::int>(42);
-  x.{self::C::t} = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart:22:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x.{self::C::t} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/constructors_infer_from_arguments_factory.dart:22:56: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x. /*@target=C::t*/ t = /*error:INVALID_ASSIGNMENT*/ 'hello';
-                                                       ^" in let final core::String #t2 = "hello" in null;
+                                                       ^" in "hello" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.outline.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.outline.expect
new file mode 100644
index 0000000..006b8a2
--- /dev/null
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.outline.expect
@@ -0,0 +1,20 @@
+library test;
+import self as self;
+import "dart:core" as core;
+
+class Clonable<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::Clonable<self::Clonable::T>
+    ;
+}
+class Pair<T extends self::Clonable<self::Pair::T> = dynamic, U extends self::Clonable<self::Pair::U> = dynamic> extends core::Object {
+  field self::Pair::T t;
+  field self::Pair::U u;
+  constructor •(self::Pair::T t, self::Pair::U u) → self::Pair<self::Pair::T, self::Pair::U>
+    ;
+  constructor _() → self::Pair<self::Pair::T, self::Pair::U>
+    ;
+  get reversed() → self::Pair<self::Pair::U, self::Pair::T>
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect
index a3489bf..60f56e5 100644
--- a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.expect
@@ -1,14 +1,30 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Can't use a super-bounded type for instance creation. Got 'test::Pair<test::Clonable<dynamic>, test::Clonable<dynamic>>'.
-// Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Inferred type argument 'test::Clonable<dynamic>' violates the corresponding type variable bound of 'Pair::_'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
 //       new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<dynamic>, Clonable<dynamic>*/ Pair
 //                                                                                                              ^
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:10:12: Context: Bound of this variable is violated.
+// class Pair<T extends Clonable<T>, U extends Clonable<U>> {
+//            ^
+//
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Inferred type argument 'test::Clonable<dynamic>' violates the corresponding type variable bound of 'Pair::_'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//       new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<dynamic>, Clonable<dynamic>*/ Pair
+//                                                                                                              ^
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:10:35: Context: Bound of this variable is violated.
+// class Pair<T extends Clonable<T>, U extends Clonable<U>> {
+//                                   ^
 
 // Unhandled errors:
 //
-// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Can't use a super-bounded type for instance creation. Got 'test::Pair<test::Clonable<dynamic>, test::Clonable<dynamic>>'.
-// Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Inferred type argument 'test::Clonable<dynamic>' violates the corresponding type variable bound of 'Pair::_'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//       new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<dynamic>, Clonable<dynamic>*/ Pair
+//                                                                                                              ^
+//
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Inferred type argument 'test::Clonable<dynamic>' violates the corresponding type variable bound of 'Pair::_'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
 //       new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<dynamic>, Clonable<dynamic>*/ Pair
 //                                                                                                              ^
 
diff --git a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect
index 512ffbc..f618f37 100644
--- a/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart.strong.transformed.expect
@@ -1,7 +1,12 @@
 // Unhandled errors:
 //
-// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Can't use a super-bounded type for instance creation. Got 'test::Pair<test::Clonable<dynamic>, test::Clonable<dynamic>>'.
-// Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Inferred type argument 'test::Clonable<dynamic>' violates the corresponding type variable bound of 'Pair::_'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//       new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<dynamic>, Clonable<dynamic>*/ Pair
+//                                                                                                              ^
+//
+// pkg/front_end/testcases/inference/constructors_inference_f_bounded.dart:22:110: Error: Inferred type argument 'test::Clonable<dynamic>' violates the corresponding type variable bound of 'Pair::_'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
 //       new /*error:COULD_NOT_INFER,error:COULD_NOT_INFER*/ /*@typeArgs=Clonable<dynamic>, Clonable<dynamic>*/ Pair
 //                                                                                                              ^
 
diff --git a/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.outline.expect b/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.outline.expect
new file mode 100644
index 0000000..b08cbd0
--- /dev/null
+++ b/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.outline.expect
@@ -0,0 +1,7 @@
+library test;
+import self as self;
+
+static method f() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.expect b/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.expect
index 43da4369..089353f 100644
--- a/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.expect
@@ -1,3 +1,27 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:21:63: Error: Inferred type argument 'dynamic' violates the corresponding type variable bound of 'max'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   dynamic c = /*error:COULD_NOT_INFER*/ /*@typeArgs=dynamic*/ max(x, y);
+//                                                               ^
+//
+// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:22:77: Error: Inferred type argument 'dynamic' violates the corresponding type variable bound of 'max'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   var /*@type=dynamic*/ d = /*error:COULD_NOT_INFER*/ /*@typeArgs=dynamic*/ max(
+//                                                                             ^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:21:63: Error: Inferred type argument 'dynamic' violates the corresponding type variable bound of 'max'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   dynamic c = /*error:COULD_NOT_INFER*/ /*@typeArgs=dynamic*/ max(x, y);
+//                                                               ^
+//
+// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:22:77: Error: Inferred type argument 'dynamic' violates the corresponding type variable bound of 'max'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   var /*@type=dynamic*/ d = /*error:COULD_NOT_INFER*/ /*@typeArgs=dynamic*/ max(
+//                                                                             ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.transformed.expect
index 43da4369..b259dbf 100644
--- a/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart.strong.transformed.expect
@@ -1,3 +1,15 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:21:63: Error: Inferred type argument 'dynamic' violates the corresponding type variable bound of 'max'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   dynamic c = /*error:COULD_NOT_INFER*/ /*@typeArgs=dynamic*/ max(x, y);
+//                                                               ^
+//
+// pkg/front_end/testcases/inference/downward_inference_fixes_no_upwards_errors.dart:22:77: Error: Inferred type argument 'dynamic' violates the corresponding type variable bound of 'max'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//   var /*@type=dynamic*/ d = /*error:COULD_NOT_INFER*/ /*@typeArgs=dynamic*/ max(
+//                                                                             ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.expect
index 1789c32..c6f4fea 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.expect
@@ -11,10 +11,10 @@
 
 static method test() → void {
   core::List<core::int> l;
-  l = <core::int>[let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart:10:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  l = <core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart:10:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   l = /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"];
-                                                                    ^" in let final dynamic #t2 = "hello" in null];
+                                                                    ^" in "hello" as{TypeError} core::int];
   l = l = <core::int>[1];
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.transformed.expect
index 993ac52..48f872c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart.strong.transformed.expect
@@ -4,10 +4,10 @@
 
 static method test() → void {
   core::List<core::int> l;
-  l = <core::int>[let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart:10:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  l = <core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_assignment_statements.dart:10:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   l = /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"];
-                                                                    ^" in let final core::String #t2 = "hello" in null];
+                                                                    ^" in "hello" as{TypeError} core::int];
   l = l = <core::int>[1];
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
index 5216da9..6ee0824 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.expect
@@ -77,53 +77,53 @@
 static method test() → void {
   new self::F0::•(<core::int>[]);
   new self::F0::•(<core::int>[3]);
-  new self::F0::•(<core::int>[let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F0::•(<core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final dynamic #t2 = "hello" in null]);
-  new self::F0::•(<core::int>[let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F0::•(<core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t4 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F1::•(a: <core::int>[]);
   new self::F1::•(a: <core::int>[3]);
-  new self::F1::•(a: <core::int>[let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F1::•(a: <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                               ^" in let final dynamic #t6 = "hello" in null]);
-  new self::F1::•(a: <core::int>[let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                               ^" in "hello" as{TypeError} core::int]);
+  new self::F1::•(a: <core::int>[let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t8 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F2::•(<core::int>[]);
   new self::F2::•(<core::int>[3]);
-  new self::F2::•(<core::int>[let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F2::•(<core::int>[let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final dynamic #t10 = "hello" in null]);
-  new self::F2::•(<core::int>[let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F2::•(<core::int>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t12 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F3::•(<core::Iterable<core::int>>[]);
   new self::F3::•(<core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final dynamic #t14 = "hello" in null]]);
-  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final dynamic #t16 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   new self::F4::•(a: <core::Iterable<core::int>>[]);
   new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final dynamic #t18 = "hello" in null]]);
-  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final dynamic #t20 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
index 37f1cb7..b8671a5 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart.strong.transformed.expect
@@ -25,53 +25,53 @@
 static method test() → void {
   new self::F0::•(<core::int>[]);
   new self::F0::•(<core::int>[3]);
-  new self::F0::•(<core::int>[let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F0::•(<core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final core::String #t2 = "hello" in null]);
-  new self::F0::•(<core::int>[let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F0::•(<core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t4 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F1::•(a: <core::int>[]);
   new self::F1::•(a: <core::int>[3]);
-  new self::F1::•(a: <core::int>[let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F1::•(a: <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                               ^" in let final core::String #t6 = "hello" in null]);
-  new self::F1::•(a: <core::int>[let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                               ^" in "hello" as{TypeError} core::int]);
+  new self::F1::•(a: <core::int>[let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t8 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F2::•(<core::int>[]);
   new self::F2::•(<core::int>[3]);
-  new self::F2::•(<core::int>[let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F2::•(<core::int>[let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final core::String #t10 = "hello" in null]);
-  new self::F2::•(<core::int>[let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F2::•(<core::int>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t12 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F3::•(<core::Iterable<core::int>>[]);
   new self::F3::•(<core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final core::String #t14 = "hello" in null]]);
-  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F3::•(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final core::String #t16 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   new self::F4::•(a: <core::Iterable<core::int>>[]);
   new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final core::String #t18 = "hello" in null]]);
-  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F4::•(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final core::String #t20 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect
index cb21af9..63f9eb3 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.expect
@@ -62,53 +62,53 @@
 static method test() → void {
   self::f0(<core::int>[]);
   self::f0(<core::int>[3]);
-  self::f0(<core::int>[let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:16:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f0(<core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:16:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f0(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                   ^" in let final dynamic #t2 = "hello" in null]);
-  self::f0(<core::int>[let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:17:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                   ^" in "hello" as{TypeError} core::int]);
+  self::f0(<core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:17:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f0(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\", 3]);
-                                                                   ^" in let final dynamic #t4 = "hello" in null, 3]);
+                                                                   ^" in "hello" as{TypeError} core::int, 3]);
   self::f1(a: <core::int>[]);
   self::f1(a: <core::int>[3]);
-  self::f1(a: <core::int>[let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:21:71: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f1(a: <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:21:71: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f1(a: /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                      ^" in let final dynamic #t6 = "hello" in null]);
-  self::f1(a: <core::int>[let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:23:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                      ^" in "hello" as{TypeError} core::int]);
+  self::f1(a: <core::int>[let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:23:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t8 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   self::f2(<core::int>[]);
   self::f2(<core::int>[3]);
-  self::f2(<core::int>[let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:29:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f2(<core::int>[let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:29:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f2(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                   ^" in let final dynamic #t10 = "hello" in null]);
-  self::f2(<core::int>[let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:30:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                   ^" in "hello" as{TypeError} core::int]);
+  self::f2(<core::int>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:30:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f2(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\", 3]);
-                                                                   ^" in let final dynamic #t12 = "hello" in null, 3]);
+                                                                   ^" in "hello" as{TypeError} core::int, 3]);
   self::f3(<core::Iterable<core::int>>[]);
   self::f3(<core::Iterable<core::int>>[<core::int>[3]]);
-  self::f3(<core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:37:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f3(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:37:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final dynamic #t14 = "hello" in null]]);
-  self::f3(<core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:40:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  self::f3(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:40:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final dynamic #t16 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   self::f4(a: <core::Iterable<core::int>>[]);
   self::f4(a: <core::Iterable<core::int>>[<core::int>[3]]);
-  self::f4(a: <core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:49:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f4(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:49:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final dynamic #t18 = "hello" in null]]);
-  self::f4(a: <core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:52:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  self::f4(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:52:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final dynamic #t20 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect
index c6f1d56..a9d8585 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart.strong.transformed.expect
@@ -10,53 +10,53 @@
 static method test() → void {
   self::f0(<core::int>[]);
   self::f0(<core::int>[3]);
-  self::f0(<core::int>[let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:16:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f0(<core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:16:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f0(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                   ^" in let final core::String #t2 = "hello" in null]);
-  self::f0(<core::int>[let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:17:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                   ^" in "hello" as{TypeError} core::int]);
+  self::f0(<core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:17:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f0(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\", 3]);
-                                                                   ^" in let final core::String #t4 = "hello" in null, 3]);
+                                                                   ^" in "hello" as{TypeError} core::int, 3]);
   self::f1(a: <core::int>[]);
   self::f1(a: <core::int>[3]);
-  self::f1(a: <core::int>[let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:21:71: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f1(a: <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:21:71: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f1(a: /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                      ^" in let final core::String #t6 = "hello" in null]);
-  self::f1(a: <core::int>[let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:23:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                      ^" in "hello" as{TypeError} core::int]);
+  self::f1(a: <core::int>[let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:23:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t8 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   self::f2(<core::int>[]);
   self::f2(<core::int>[3]);
-  self::f2(<core::int>[let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:29:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f2(<core::int>[let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:29:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f2(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                   ^" in let final core::String #t10 = "hello" in null]);
-  self::f2(<core::int>[let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:30:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                   ^" in "hello" as{TypeError} core::int]);
+  self::f2(<core::int>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:30:68: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f2(/*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\", 3]);
-                                                                   ^" in let final core::String #t12 = "hello" in null, 3]);
+                                                                   ^" in "hello" as{TypeError} core::int, 3]);
   self::f3(<core::Iterable<core::int>>[]);
   self::f3(<core::Iterable<core::int>>[<core::int>[3]]);
-  self::f3(<core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:37:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f3(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:37:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final core::String #t14 = "hello" in null]]);
-  self::f3(<core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:40:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  self::f3(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:40:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final core::String #t16 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   self::f4(a: <core::Iterable<core::int>>[]);
   self::f4(a: <core::Iterable<core::int>>[<core::int>[3]]);
-  self::f4(a: <core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:49:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::f4(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:49:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final core::String #t18 = "hello" in null]]);
-  self::f4(a: <core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:52:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  self::f4(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_arguments_infer_downwards.dart:52:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final core::String #t20 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect
index 6b359eb..8ad660f 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.expect
@@ -53,7 +53,7 @@
 // pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
 // Try correcting the name to the name of an existing method, or defining a method named 'substring'.
 //             .substring(3);
-//              ^
+//              ^^^^^^^^^
 
 library test;
 import self as self;
@@ -64,70 +64,70 @@
   {
     (core::int) → core::String l0 = (core::int x) → core::Null => null;
     (core::int) → core::String l1 = (core::int x) → core::String => "hello";
-    (core::int) → core::String l2 = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:15:66: Error: A value of type '(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::String'.
+    (core::int) → core::String l2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:15:66: Error: A value of type '(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::String'.
         l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=String*/ (String x) =>
-                                                                 ^" in let final dynamic #t2 = (core::String x) → core::String => "hello" in null;
-    (core::int) → core::String l3 = (core::int x) → core::String => let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:18:77: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                 ^" in ((core::String x) → core::String => "hello") as{TypeError} (core::int) → core::String;
+    (core::int) → core::String l3 = (core::int x) → core::String => let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:18:77: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         l3 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=String*/ (int x) => 3;
-                                                                            ^" in let final dynamic #t4 = 3 in null;
+                                                                            ^" in 3 as{TypeError} core::String;
     (core::int) → core::String l4 = (core::int x) → core::String {
-      return let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:20:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:20:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final dynamic #t6 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
   }
   {
     (core::int) → core::String l0 = (core::int x) → core::Null => null;
     (core::int) → core::String l1 = (core::int x) → core::String => "hello";
-    (core::int) → core::String l2 = (core::int x) → core::String => let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:29:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    (core::int) → core::String l2 = (core::int x) → core::String => let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:29:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
             3;
-            ^" in let final dynamic #t8 = 3 in null;
+            ^" in 3 as{TypeError} core::String;
     (core::int) → core::String l3 = (core::int x) → core::String {
-      return let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:31:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:31:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final dynamic #t10 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
     (core::int) → core::String l4 = (core::int x) → core::String {
-      return let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:34:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:34:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ x;
-                                              ^" in let final dynamic #t12 = x in null;
+                                              ^" in x as{TypeError} core::String;
     };
   }
   {
     (core::int) → core::List<core::String> l0 = (core::int x) → core::Null => null;
     (core::int) → core::List<core::String> l1 = (core::int x) → core::List<core::String> => <core::String>["hello"];
-    (core::int) → core::List<core::String> l2 = let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:42:72: Error: A value of type '(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
+    (core::int) → core::List<core::String> l2 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:42:72: Error: A value of type '(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
         l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=List<String>*/ (String
-                                                                       ^" in let final dynamic #t14 = (core::String x) → core::List<core::String> => <core::String>["hello"] in null;
-    (core::int) → core::List<core::String> l3 = (core::int x) → core::List<core::String> => <core::String>[let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:46:58: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                       ^" in ((core::String x) → core::List<core::String> => <core::String>["hello"]) as{TypeError} (core::int) → core::List<core::String>;
+    (core::int) → core::List<core::String> l3 = (core::int x) → core::List<core::String> => <core::String>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:46:58: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
               /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                         ^" in let final dynamic #t16 = 3 in null];
+                                                         ^" in 3 as{TypeError} core::String];
     (core::int) → core::List<core::String> l4 = (core::int x) → core::List<core::String> {
-      return <core::String>[let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return <core::String>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                   ^" in let final dynamic #t18 = 3 in null];
+                                                   ^" in 3 as{TypeError} core::String];
     };
   }
   {
     (core::int) → core::int l0 = (core::int x) → core::int => x;
     (core::int) → core::int l1 = (core::int x) → core::int => x.{core::num::+}(1);
-    (core::int) → core::String l2 = (core::int x) → core::String => let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:60:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    (core::int) → core::String l2 = (core::int x) → core::String => let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:60:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
             x;
-            ^" in let final dynamic #t20 = x in null;
-    (core::int) → core::String l3 = (core::int x) → core::String => (let final dynamic #t21 = x in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
+            ^" in x as{TypeError} core::String;
+    (core::int) → core::String l3 = (core::int x) → core::String => (let final dynamic #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
             .substring(3);
-             ^") as{TypeError} core::String;
+             ^^^^^^^^^") as{TypeError} core::String;
     (core::String) → core::String l4 = (core::String x) → core::String => x.{core::String::substring}(3);
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect
index 56253b6..9b02a81 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart.strong.transformed.expect
@@ -7,70 +7,70 @@
   {
     (core::int) → core::String l0 = (core::int x) → core::Null => null;
     (core::int) → core::String l1 = (core::int x) → core::String => "hello";
-    (core::int) → core::String l2 = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:15:66: Error: A value of type '(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::String'.
+    (core::int) → core::String l2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:15:66: Error: A value of type '(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::String'.
         l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=String*/ (String x) =>
-                                                                 ^" in let final (core::String) → core::String #t2 = (core::String x) → core::String => "hello" in null;
-    (core::int) → core::String l3 = (core::int x) → core::String => let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:18:77: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                 ^" in ((core::String x) → core::String => "hello") as{TypeError} (core::int) → core::String;
+    (core::int) → core::String l3 = (core::int x) → core::String => let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:18:77: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         l3 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=String*/ (int x) => 3;
-                                                                            ^" in let final core::int #t4 = 3 in null;
+                                                                            ^" in 3 as{TypeError} core::String;
     (core::int) → core::String l4 = (core::int x) → core::String {
-      return let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:20:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:20:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final core::int #t6 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
   }
   {
     (core::int) → core::String l0 = (core::int x) → core::Null => null;
     (core::int) → core::String l1 = (core::int x) → core::String => "hello";
-    (core::int) → core::String l2 = (core::int x) → core::String => let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:29:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    (core::int) → core::String l2 = (core::int x) → core::String => let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:29:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
             3;
-            ^" in let final core::int #t8 = 3 in null;
+            ^" in 3 as{TypeError} core::String;
     (core::int) → core::String l3 = (core::int x) → core::String {
-      return let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:31:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:31:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final core::int #t10 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
     (core::int) → core::String l4 = (core::int x) → core::String {
-      return let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:34:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:34:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ x;
-                                              ^" in let final core::int #t12 = x in null;
+                                              ^" in x as{TypeError} core::String;
     };
   }
   {
     (core::int) → core::List<core::String> l0 = (core::int x) → core::Null => null;
     (core::int) → core::List<core::String> l1 = (core::int x) → core::List<core::String> => <core::String>["hello"];
-    (core::int) → core::List<core::String> l2 = let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:42:72: Error: A value of type '(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
+    (core::int) → core::List<core::String> l2 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:42:72: Error: A value of type '(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
         l2 = /*error:INVALID_ASSIGNMENT*/ /*@returnType=List<String>*/ (String
-                                                                       ^" in let final (core::String) → core::List<core::String> #t14 = (core::String x) → core::List<core::String> => <core::String>["hello"] in null;
-    (core::int) → core::List<core::String> l3 = (core::int x) → core::List<core::String> => <core::String>[let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:46:58: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                       ^" in ((core::String x) → core::List<core::String> => <core::String>["hello"]) as{TypeError} (core::int) → core::List<core::String>;
+    (core::int) → core::List<core::String> l3 = (core::int x) → core::List<core::String> => <core::String>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:46:58: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
               /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                         ^" in let final core::int #t16 = 3 in null];
+                                                         ^" in 3 as{TypeError} core::String];
     (core::int) → core::List<core::String> l4 = (core::int x) → core::List<core::String> {
-      return <core::String>[let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return <core::String>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                   ^" in let final core::int #t18 = 3 in null];
+                                                   ^" in 3 as{TypeError} core::String];
     };
   }
   {
     (core::int) → core::int l0 = (core::int x) → core::int => x;
     (core::int) → core::int l1 = (core::int x) → core::int => x.{core::num::+}(1);
-    (core::int) → core::String l2 = (core::int x) → core::String => let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:60:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    (core::int) → core::String l2 = (core::int x) → core::String => let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:60:13: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
             x;
-            ^" in let final core::int #t20 = x in null;
-    (core::int) → core::String l3 = (core::int x) → core::String => (let final core::int #t21 = x in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
+            ^" in x as{TypeError} core::String;
+    (core::int) → core::String l3 = (core::int x) → core::String => (let final core::int #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_function_expressions.dart:63:14: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
             .substring(3);
-             ^") as{TypeError} core::String;
+             ^^^^^^^^^") as{TypeError} core::String;
     (core::String) → core::String l4 = (core::String x) → core::String => x.{core::String::substring}(3);
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
index f17e324..795566c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.expect
@@ -77,54 +77,54 @@
 static method test() → void {
   new self::F0::•<core::int>(<core::int>[]);
   new self::F0::•<core::int>(<core::int>[3]);
-  new self::F0::•<core::int>(<core::int>[let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F0::•<core::int>(<core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final dynamic #t2 = "hello" in null]);
-  new self::F0::•<core::int>(<core::int>[let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F0::•<core::int>(<core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t4 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F1::•<core::int>(a: <core::int>[]);
   new self::F1::•<core::int>(a: <core::int>[3]);
-  new self::F1::•<core::int>(a: <core::int>[let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F1::•<core::int>(a: <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                               ^" in let final dynamic #t6 = "hello" in null]);
-  new self::F1::•<core::int>(a: <core::int>[let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                               ^" in "hello" as{TypeError} core::int]);
+  new self::F1::•<core::int>(a: <core::int>[let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t8 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F2::•<core::int>(<core::int>[]);
   new self::F2::•<core::int>(<core::int>[3]);
-  new self::F2::•<core::int>(<core::int>[let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F2::•<core::int>(<core::int>[let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final dynamic #t10 = "hello" in null]);
-  new self::F2::•<core::int>(<core::int>[let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F2::•<core::int>(<core::int>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t12 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F3::•<core::int>(<core::Iterable<core::int>>[]);
   new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final dynamic #t14 = "hello" in null]]);
-  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final dynamic #t16 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   new self::F4::•<core::int>(a: <core::Iterable<core::int>>[]);
   new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final dynamic #t18 = "hello" in null]]);
-  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final dynamic #t20 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   new self::F3::•<dynamic>(<core::Iterable<dynamic>>[]);
   self::F3<core::int> f31 = new self::F3::•<core::int>(<core::List<core::int>>[<core::int>[3]]);
   self::F3<core::String> f32 = new self::F3::•<core::String>(<core::List<core::String>>[<core::String>["hello"]]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
index 98b578f..f64de44 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart.strong.transformed.expect
@@ -25,54 +25,54 @@
 static method test() → void {
   new self::F0::•<core::int>(<core::int>[]);
   new self::F0::•<core::int>(<core::int>[3]);
-  new self::F0::•<core::int>(<core::int>[let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F0::•<core::int>(<core::int>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:32:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final core::String #t2 = "hello" in null]);
-  new self::F0::•<core::int>(<core::int>[let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F0::•<core::int>(<core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:34:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t4 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F1::•<core::int>(a: <core::int>[]);
   new self::F1::•<core::int>(a: <core::int>[3]);
-  new self::F1::•<core::int>(a: <core::int>[let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F1::•<core::int>(a: <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:41:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                               ^" in let final core::String #t6 = "hello" in null]);
-  new self::F1::•<core::int>(a: <core::int>[let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                               ^" in "hello" as{TypeError} core::int]);
+  new self::F1::•<core::int>(a: <core::int>[let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:44:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t8 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F2::•<core::int>(<core::int>[]);
   new self::F2::•<core::int>(<core::int>[3]);
-  new self::F2::•<core::int>(<core::int>[let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F2::•<core::int>(<core::int>[let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:51:69: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]);
-                                                                    ^" in let final core::String #t10 = "hello" in null]);
-  new self::F2::•<core::int>(<core::int>[let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                    ^" in "hello" as{TypeError} core::int]);
+  new self::F2::•<core::int>(<core::int>[let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:53:48: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t12 = "hello" in null, 3]);
+                                               ^" in "hello" as{TypeError} core::int, 3]);
   new self::F3::•<core::int>(<core::Iterable<core::int>>[]);
   new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:62:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final core::String #t14 = "hello" in null]]);
-  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F3::•<core::int>(<core::Iterable<core::int>>[<core::int>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:65:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final core::String #t16 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   new self::F4::•<core::int>(a: <core::Iterable<core::int>>[]);
   new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[3]]);
-  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:74:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"]
-                                                                  ^" in let final core::String #t18 = "hello" in null]]);
-  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hello" as{TypeError} core::int]]);
+  new self::F4::•<core::int>(a: <core::Iterable<core::int>>[<core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_constructor_arguments_infer_downwards.dart:77:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     /*@typeArgs=int*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"],
-                                                                  ^" in let final core::String #t20 = "hello" in null], <core::int>[3]]);
+                                                                  ^" in "hello" as{TypeError} core::int], <core::int>[3]]);
   new self::F3::•<dynamic>(<core::Iterable<dynamic>>[]);
   self::F3<core::int> f31 = new self::F3::•<core::int>(<core::List<core::int>>[<core::int>[3]]);
   self::F3<core::String> f32 = new self::F3::•<core::String>(<core::List<core::String>>[<core::String>["hello"]]);
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect
index 302c6ca..90925fc 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.expect
@@ -53,7 +53,7 @@
 // pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
 // Try correcting the name to the name of an existing method, or defining a method named 'substring'.
 //         .substring(3);
-//          ^
+//          ^^^^^^^^^
 
 library test;
 import self as self;
@@ -66,19 +66,19 @@
     <S extends core::Object = dynamic>(core::int) → core::String v = f;
     v = <T extends core::Object = dynamic>(core::int x) → core::Null => null;
     v = <T extends core::Object = dynamic>(core::int x) → core::String => "hello";
-    v = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:14:65: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::String'.
+    v = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:14:65: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::String'.
     v = /*error:INVALID_ASSIGNMENT*/ <T> /*@returnType=String*/ (String x) =>
-                                                                ^" in let final dynamic #t2 = <T extends core::Object = dynamic>(core::String x) → core::String => "hello" in null;
-    v = <T extends core::Object = dynamic>(core::int x) → core::String => let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:16:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                ^" in (<T extends core::Object = dynamic>(core::String x) → core::String => "hello") as{TypeError} <S extends core::Object = dynamic>(core::int) → core::String;
+    v = <T extends core::Object = dynamic>(core::int x) → core::String => let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:16:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     v = /*error:INVALID_ASSIGNMENT*/ <T> /*@returnType=String*/ (int x) => 3;
-                                                                           ^" in let final dynamic #t4 = 3 in null;
+                                                                           ^" in 3 as{TypeError} core::String;
     v = <T extends core::Object = dynamic>(core::int x) → core::String {
-      return let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:18:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:18:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final dynamic #t6 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
   }
   {
@@ -87,21 +87,21 @@
     <S extends core::Object = dynamic>(core::int) → core::String v = f;
     v = <T extends core::Object = dynamic>(core::int x) → core::Null => null;
     v = <T extends core::Object = dynamic>(core::int x) → core::String => "hello";
-    v = <T extends core::Object = dynamic>(core::int x) → core::String => let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:28:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    v = <T extends core::Object = dynamic>(core::int x) → core::String => let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:28:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         3;
-        ^" in let final dynamic #t8 = 3 in null;
+        ^" in 3 as{TypeError} core::String;
     v = <T extends core::Object = dynamic>(core::int x) → core::String {
-      return let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:30:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:30:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final dynamic #t10 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
     v = <T extends core::Object = dynamic>(core::int x) → core::String {
-      return let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:33:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:33:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ x;
-                                              ^" in let final dynamic #t12 = x in null;
+                                              ^" in x as{TypeError} core::String;
     };
   }
   {
@@ -110,19 +110,19 @@
     <S extends core::Object = dynamic>(core::int) → core::List<core::String> v = f;
     v = <T extends core::Object = dynamic>(core::int x) → core::Null => null;
     v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> => <core::String>["hello"];
-    v = let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:43:71: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
+    v = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:43:71: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
     v = /*error:INVALID_ASSIGNMENT*/ <T> /*@returnType=List<String>*/ (String
-                                                                      ^" in let final dynamic #t14 = <T extends core::Object = dynamic>(core::String x) → core::List<core::String> => <core::String>["hello"] in null;
-    v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> => <core::String>[let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:46:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                      ^" in (<T extends core::Object = dynamic>(core::String x) → core::List<core::String> => <core::String>["hello"]) as{TypeError} <S extends core::Object = dynamic>(core::int) → core::List<core::String>;
+    v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> => <core::String>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:46:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                     ^" in let final dynamic #t16 = 3 in null];
+                                                     ^" in 3 as{TypeError} core::String];
     v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> {
-      return <core::String>[let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return <core::String>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                   ^" in let final dynamic #t18 = 3 in null];
+                                                   ^" in 3 as{TypeError} core::String];
     };
   }
   {
@@ -136,14 +136,14 @@
     x = <T extends core::Object = dynamic>(core::int x) → core::int => x;
     x = <T extends core::Object = dynamic>(core::int x) → core::int => x.{core::num::+}(1);
     <T extends core::Object = dynamic>(core::int) → core::String y = int2String;
-    y = <T extends core::Object = dynamic>(core::int x) → core::String => let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:64:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    y = <T extends core::Object = dynamic>(core::int x) → core::String => let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:64:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         x;
-        ^" in let final dynamic #t20 = x in null;
-    y = <T extends core::Object = dynamic>(core::int x) → core::String => (let final dynamic #t21 = x in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
+        ^" in x as{TypeError} core::String;
+    y = <T extends core::Object = dynamic>(core::int x) → core::String => (let final dynamic #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
         .substring(3);
-         ^") as{TypeError} core::String;
+         ^^^^^^^^^") as{TypeError} core::String;
     <T extends core::Object = dynamic>(core::String) → core::String z = string2String;
     z = <T extends core::Object = dynamic>(core::String x) → core::String => x.{core::String::substring}(3);
   }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect
index b541730..00cb91c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart.strong.transformed.expect
@@ -9,19 +9,19 @@
     <S extends core::Object = dynamic>(core::int) → core::String v = f;
     v = <T extends core::Object = dynamic>(core::int x) → core::Null => null;
     v = <T extends core::Object = dynamic>(core::int x) → core::String => "hello";
-    v = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:14:65: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::String'.
+    v = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:14:65: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::String' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::String'.
     v = /*error:INVALID_ASSIGNMENT*/ <T> /*@returnType=String*/ (String x) =>
-                                                                ^" in let final <T extends core::Object = dynamic>(core::String) → core::String #t2 = <T extends core::Object = dynamic>(core::String x) → core::String => "hello" in null;
-    v = <T extends core::Object = dynamic>(core::int x) → core::String => let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:16:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                ^" in (<T extends core::Object = dynamic>(core::String x) → core::String => "hello") as{TypeError} <S extends core::Object = dynamic>(core::int) → core::String;
+    v = <T extends core::Object = dynamic>(core::int x) → core::String => let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:16:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     v = /*error:INVALID_ASSIGNMENT*/ <T> /*@returnType=String*/ (int x) => 3;
-                                                                           ^" in let final core::int #t4 = 3 in null;
+                                                                           ^" in 3 as{TypeError} core::String;
     v = <T extends core::Object = dynamic>(core::int x) → core::String {
-      return let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:18:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:18:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final core::int #t6 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
   }
   {
@@ -30,21 +30,21 @@
     <S extends core::Object = dynamic>(core::int) → core::String v = f;
     v = <T extends core::Object = dynamic>(core::int x) → core::Null => null;
     v = <T extends core::Object = dynamic>(core::int x) → core::String => "hello";
-    v = <T extends core::Object = dynamic>(core::int x) → core::String => let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:28:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    v = <T extends core::Object = dynamic>(core::int x) → core::String => let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:28:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         3;
-        ^" in let final core::int #t8 = 3 in null;
+        ^" in 3 as{TypeError} core::String;
     v = <T extends core::Object = dynamic>(core::int x) → core::String {
-      return let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:30:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:30:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ 3;
-                                              ^" in let final core::int #t10 = 3 in null;
+                                              ^" in 3 as{TypeError} core::String;
     };
     v = <T extends core::Object = dynamic>(core::int x) → core::String {
-      return let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:33:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:33:47: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       return /*error:RETURN_OF_INVALID_TYPE*/ x;
-                                              ^" in let final core::int #t12 = x in null;
+                                              ^" in x as{TypeError} core::String;
     };
   }
   {
@@ -53,19 +53,19 @@
     <S extends core::Object = dynamic>(core::int) → core::List<core::String> v = f;
     v = <T extends core::Object = dynamic>(core::int x) → core::Null => null;
     v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> => <core::String>["hello"];
-    v = let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:43:71: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
+    v = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:43:71: Error: A value of type '<T extends dart.core::Object = dynamic>(dart.core::String) \u8594 dart.core::List<dart.core::String>' can't be assigned to a variable of type '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to '<S extends dart.core::Object = dynamic>(dart.core::int) \u8594 dart.core::List<dart.core::String>'.
     v = /*error:INVALID_ASSIGNMENT*/ <T> /*@returnType=List<String>*/ (String
-                                                                      ^" in let final <T extends core::Object = dynamic>(core::String) → core::List<core::String> #t14 = <T extends core::Object = dynamic>(core::String x) → core::List<core::String> => <core::String>["hello"] in null;
-    v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> => <core::String>[let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:46:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                      ^" in (<T extends core::Object = dynamic>(core::String x) → core::List<core::String> => <core::String>["hello"]) as{TypeError} <S extends core::Object = dynamic>(core::int) → core::List<core::String>;
+    v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> => <core::String>[let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:46:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                     ^" in let final core::int #t16 = 3 in null];
+                                                     ^" in 3 as{TypeError} core::String];
     v = <T extends core::Object = dynamic>(core::int x) → core::List<core::String> {
-      return <core::String>[let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+      return <core::String>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:50:52: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                   ^" in let final core::int #t18 = 3 in null];
+                                                   ^" in 3 as{TypeError} core::String];
     };
   }
   {
@@ -79,14 +79,14 @@
     x = <T extends core::Object = dynamic>(core::int x) → core::int => x;
     x = <T extends core::Object = dynamic>(core::int x) → core::int => x.{core::num::+}(1);
     <T extends core::Object = dynamic>(core::int) → core::String y = int2String;
-    y = <T extends core::Object = dynamic>(core::int x) → core::String => let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:64:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    y = <T extends core::Object = dynamic>(core::int x) → core::String => let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:64:9: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
         x;
-        ^" in let final core::int #t20 = x in null;
-    y = <T extends core::Object = dynamic>(core::int x) → core::String => (let final core::int #t21 = x in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
+        ^" in x as{TypeError} core::String;
+    y = <T extends core::Object = dynamic>(core::int x) → core::String => (let final core::int #t11 = x in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_generic_function_expressions.dart:66:10: Error: The method 'substring' isn't defined for the class 'dart.core::int'.
 Try correcting the name to the name of an existing method, or defining a method named 'substring'.
         .substring(3);
-         ^") as{TypeError} core::String;
+         ^^^^^^^^^") as{TypeError} core::String;
     <T extends core::Object = dynamic>(core::String) → core::String z = string2String;
     z = <T extends core::Object = dynamic>(core::String x) → core::String => x.{core::String::substring}(3);
   }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
index 5120a62..6415a50 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.expect
@@ -182,134 +182,134 @@
     self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>(3, "hello");
     self::A<core::int, core::String> a2 = new self::A::•<core::int, core::String>(3, "hello");
     self::A<core::int, core::String> a3 = new self::A::named<core::int, core::String>(3, "hello");
-    self::A<core::int, core::String> a4 = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:46:50: Error: The constructor returns type 'test::A<dart.core::int, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
+    self::A<core::int, core::String> a4 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:46:50: Error: The constructor returns type 'test::A<dart.core::int, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
 Change the type of the object being constructed or the context in which it is used.
         a4 = /*error:INVALID_CAST_NEW_EXPR*/ new A<int, dynamic>(3, \"hello\");
-                                                 ^" in let final dynamic #t2 = new self::A::•<core::int, dynamic>(3, "hello") in null;
-    self::A<core::int, core::String> a5 = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:48:50: Error: The constructor returns type 'test::A<dynamic, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
+                                                 ^" in new self::A::•<core::int, dynamic>(3, "hello");
+    self::A<core::int, core::String> a5 = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:48:50: Error: The constructor returns type 'test::A<dynamic, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
 Change the type of the object being constructed or the context in which it is used.
         a5 = /*error:INVALID_CAST_NEW_EXPR*/ new A<dynamic, dynamic>.named(
-                                                 ^" in let final dynamic #t4 = new self::A::named<dynamic, dynamic>(3, "hello") in null;
+                                                 ^" in new self::A::named<dynamic, dynamic>(3, "hello");
   }
   {
-    self::A<core::int, core::String> a0 = new self::A::•<core::int, core::String>(let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:53:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+    self::A<core::int, core::String> a0 = new self::A::•<core::int, core::String>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:53:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t6 = "hello" in null, let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:54:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int, let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:54:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final dynamic #t8 = 3 in null);
-    self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>(let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:56:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String);
+    self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>(let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:56:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t10 = "hello" in null, let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:57:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int, let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:57:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final dynamic #t12 = 3 in null);
+                                               ^" in 3 as{TypeError} core::String);
   }
   {
     self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>("hello", 3);
     self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>("hello", 3);
     self::A<core::int, core::String> a2 = new self::B::•<core::String, core::int>("hello", 3);
     self::A<core::int, core::String> a3 = new self::B::named<core::String, core::int>("hello", 3);
-    self::A<core::int, core::String> a4 = let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:65:47: Error: A value of type 'test::B<dart.core::String, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+    self::A<core::int, core::String> a4 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:65:47: Error: A value of type 'test::B<dart.core::String, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a4 = /*error:INVALID_ASSIGNMENT*/ new B<String, dynamic>(\"hello\", 3);
-                                              ^" in let final dynamic #t14 = new self::B::•<core::String, dynamic>("hello", 3) in null;
-    self::A<core::int, core::String> a5 = let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:67:47: Error: A value of type 'test::B<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+                                              ^" in new self::B::•<core::String, dynamic>("hello", 3) as{TypeError} self::A<core::int, core::String>;
+    self::A<core::int, core::String> a5 = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:67:47: Error: A value of type 'test::B<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a5 = /*error:INVALID_ASSIGNMENT*/ new B<dynamic, dynamic>.named(
-                                              ^" in let final dynamic #t16 = new self::B::named<dynamic, dynamic>("hello", 3) in null;
+                                              ^" in new self::B::named<dynamic, dynamic>("hello", 3) as{TypeError} self::A<core::int, core::String>;
   }
   {
-    self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>(let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:72:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+    self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>(let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:72:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3,
-                                               ^" in let final dynamic #t18 = 3 in null, let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:73:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String, let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:73:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final dynamic #t20 = "hello" in null);
-    self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>(let dynamic _ = null in let final dynamic #t21 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:75:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int);
+    self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>(let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:75:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3,
-                                               ^" in let final dynamic #t22 = 3 in null, let dynamic _ = null in let final dynamic #t23 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:76:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String, let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:76:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final dynamic #t24 = "hello" in null);
+                                               ^" in "hello" as{TypeError} core::int);
   }
   {
     self::A<core::int, core::int> a0 = new self::C::•<core::int>(3);
     self::A<core::int, core::int> a1 = new self::C::named<core::int>(3);
     self::A<core::int, core::int> a2 = new self::C::•<core::int>(3);
     self::A<core::int, core::int> a3 = new self::C::named<core::int>(3);
-    self::A<core::int, core::int> a4 = let dynamic _ = null in let final dynamic #t25 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:83:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
+    self::A<core::int, core::int> a4 = let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:83:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::int>'.
     A<int, int> a4 = /*error:INVALID_ASSIGNMENT*/ new C<dynamic>(3);
-                                                      ^" in let final dynamic #t26 = new self::C::•<dynamic>(3) in null;
-    self::A<core::int, core::int> a5 = let dynamic _ = null in let final dynamic #t27 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:84:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
+                                                      ^" in new self::C::•<dynamic>(3) as{TypeError} self::A<core::int, core::int>;
+    self::A<core::int, core::int> a5 = let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:84:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::int>'.
     A<int, int> a5 = /*error:INVALID_ASSIGNMENT*/ new C<dynamic>.named(3);
-                                                      ^" in let final dynamic #t28 = new self::C::named<dynamic>(3) in null;
+                                                      ^" in new self::C::named<dynamic>(3) as{TypeError} self::A<core::int, core::int>;
   }
   {
-    self::A<core::int, core::int> a0 = new self::C::•<core::int>(let dynamic _ = null in let final dynamic #t29 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:88:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+    self::A<core::int, core::int> a0 = new self::C::•<core::int>(let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:88:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final dynamic #t30 = "hello" in null);
-    self::A<core::int, core::int> a1 = new self::C::named<core::int>(let dynamic _ = null in let final dynamic #t31 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:90:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in "hello" as{TypeError} core::int);
+    self::A<core::int, core::int> a1 = new self::C::named<core::int>(let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:90:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final dynamic #t32 = "hello" in null);
+                                               ^" in "hello" as{TypeError} core::int);
   }
   {
     self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>("hello");
     self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>("hello");
     self::A<core::int, core::String> a2 = new self::D::•<core::int, core::String>("hello");
     self::A<core::int, core::String> a3 = new self::D::named<core::String, core::String>("hello");
-    self::A<core::int, core::String> a4 = let dynamic _ = null in let final dynamic #t33 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:98:47: Error: A value of type 'test::D<dart.core::num, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+    self::A<core::int, core::String> a4 = let final<BottomType> #t17 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:98:47: Error: A value of type 'test::D<dart.core::num, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a4 = /*error:INVALID_ASSIGNMENT*/ new D<num, dynamic>(\"hello\");
-                                              ^" in let final dynamic #t34 = new self::D::•<core::num, dynamic>("hello") in null;
-    self::A<core::int, core::String> a5 = let dynamic _ = null in let final dynamic #t35 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:100:47: Error: A value of type 'test::D<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+                                              ^" in new self::D::•<core::num, dynamic>("hello") as{TypeError} self::A<core::int, core::String>;
+    self::A<core::int, core::String> a5 = let final<BottomType> #t18 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:100:47: Error: A value of type 'test::D<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a5 = /*error:INVALID_ASSIGNMENT*/ new D<dynamic, dynamic>.named(
-                                              ^" in let final dynamic #t36 = new self::D::named<dynamic, dynamic>("hello") in null;
+                                              ^" in new self::D::named<dynamic, dynamic>("hello") as{TypeError} self::A<core::int, core::String>;
   }
   {
-    self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>(let dynamic _ = null in let final dynamic #t37 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:105:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+    self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>(let final<BottomType> #t19 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:105:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final dynamic #t38 = 3 in null);
-    self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>(let dynamic _ = null in let final dynamic #t39 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:107:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in 3 as{TypeError} core::String);
+    self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>(let final<BottomType> #t20 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:107:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final dynamic #t40 = 3 in null);
+                                               ^" in 3 as{TypeError} core::String);
   }
   {
     self::A<self::C<core::int>, core::String> a0 = new self::E::•<core::int, core::String>("hello");
   }
   {
     self::A<core::int, core::String> a0 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>[3], b: <core::String>["hello"]);
-    self::A<core::int, core::String> a1 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>[let dynamic _ = null in let final dynamic #t41 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:118:54: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    self::A<core::int, core::String> a1 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>[let final<BottomType> #t21 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:118:54: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
           /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                     ^" in let final dynamic #t42 = "hello" in null], b: <core::String>[let dynamic _ = null in let final dynamic #t43 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:121:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                     ^" in "hello" as{TypeError} core::int], b: <core::String>[let final<BottomType> #t22 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:121:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                     ^" in let final dynamic #t44 = 3 in null]);
+                                                     ^" in 3 as{TypeError} core::String]);
     self::A<core::int, core::String> a2 = new self::F::named<core::int, core::String>(3, "hello", 3, "hello");
     self::A<core::int, core::String> a3 = new self::F::named<core::int, core::String>(3, "hello");
-    self::A<core::int, core::String> a4 = new self::F::named<core::int, core::String>(3, "hello", let dynamic _ = null in let final dynamic #t45 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:129:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+    self::A<core::int, core::String> a4 = new self::F::named<core::int, core::String>(3, "hello", let final<BottomType> #t23 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:129:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final dynamic #t46 = "hello" in null, let dynamic _ = null in let final dynamic #t47 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:130:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int, let final<BottomType> #t24 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:130:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final dynamic #t48 = 3 in null);
-    self::A<core::int, core::String> a5 = new self::F::named<core::int, core::String>(3, "hello", let dynamic _ = null in let final dynamic #t49 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:134:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String);
+    self::A<core::int, core::String> a5 = new self::F::named<core::int, core::String>(3, "hello", let final<BottomType> #t25 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:134:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final dynamic #t50 = "hello" in null);
+                                               ^" in "hello" as{TypeError} core::int);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
index 7b39416..c2e4a2b 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart.strong.transformed.expect
@@ -55,134 +55,134 @@
     self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>(3, "hello");
     self::A<core::int, core::String> a2 = new self::A::•<core::int, core::String>(3, "hello");
     self::A<core::int, core::String> a3 = new self::A::named<core::int, core::String>(3, "hello");
-    self::A<core::int, core::String> a4 = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:46:50: Error: The constructor returns type 'test::A<dart.core::int, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
+    self::A<core::int, core::String> a4 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:46:50: Error: The constructor returns type 'test::A<dart.core::int, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
 Change the type of the object being constructed or the context in which it is used.
         a4 = /*error:INVALID_CAST_NEW_EXPR*/ new A<int, dynamic>(3, \"hello\");
-                                                 ^" in let final self::A<core::int, dynamic> #t2 = new self::A::•<core::int, dynamic>(3, "hello") in null;
-    self::A<core::int, core::String> a5 = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:48:50: Error: The constructor returns type 'test::A<dynamic, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
+                                                 ^" in new self::A::•<core::int, dynamic>(3, "hello");
+    self::A<core::int, core::String> a5 = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:48:50: Error: The constructor returns type 'test::A<dynamic, dynamic>' that isn't of expected type 'test::A<dart.core::int, dart.core::String>'.
 Change the type of the object being constructed or the context in which it is used.
         a5 = /*error:INVALID_CAST_NEW_EXPR*/ new A<dynamic, dynamic>.named(
-                                                 ^" in let final self::A<dynamic, dynamic> #t4 = new self::A::named<dynamic, dynamic>(3, "hello") in null;
+                                                 ^" in new self::A::named<dynamic, dynamic>(3, "hello");
   }
   {
-    self::A<core::int, core::String> a0 = new self::A::•<core::int, core::String>(let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:53:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+    self::A<core::int, core::String> a0 = new self::A::•<core::int, core::String>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:53:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t6 = "hello" in null, let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:54:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int, let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:54:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final core::int #t8 = 3 in null);
-    self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>(let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:56:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String);
+    self::A<core::int, core::String> a1 = new self::A::named<core::int, core::String>(let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:56:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t10 = "hello" in null, let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:57:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int, let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:57:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final core::int #t12 = 3 in null);
+                                               ^" in 3 as{TypeError} core::String);
   }
   {
     self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>("hello", 3);
     self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>("hello", 3);
     self::A<core::int, core::String> a2 = new self::B::•<core::String, core::int>("hello", 3);
     self::A<core::int, core::String> a3 = new self::B::named<core::String, core::int>("hello", 3);
-    self::A<core::int, core::String> a4 = let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:65:47: Error: A value of type 'test::B<dart.core::String, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+    self::A<core::int, core::String> a4 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:65:47: Error: A value of type 'test::B<dart.core::String, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a4 = /*error:INVALID_ASSIGNMENT*/ new B<String, dynamic>(\"hello\", 3);
-                                              ^" in let final self::B<core::String, dynamic> #t14 = new self::B::•<core::String, dynamic>("hello", 3) in null;
-    self::A<core::int, core::String> a5 = let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:67:47: Error: A value of type 'test::B<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+                                              ^" in new self::B::•<core::String, dynamic>("hello", 3) as{TypeError} self::A<core::int, core::String>;
+    self::A<core::int, core::String> a5 = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:67:47: Error: A value of type 'test::B<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a5 = /*error:INVALID_ASSIGNMENT*/ new B<dynamic, dynamic>.named(
-                                              ^" in let final self::B<dynamic, dynamic> #t16 = new self::B::named<dynamic, dynamic>("hello", 3) in null;
+                                              ^" in new self::B::named<dynamic, dynamic>("hello", 3) as{TypeError} self::A<core::int, core::String>;
   }
   {
-    self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>(let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:72:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+    self::A<core::int, core::String> a0 = new self::B::•<core::String, core::int>(let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:72:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3,
-                                               ^" in let final core::int #t18 = 3 in null, let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:73:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String, let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:73:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final core::String #t20 = "hello" in null);
-    self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>(let<BottomType> _ = null in let final dynamic #t21 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:75:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int);
+    self::A<core::int, core::String> a1 = new self::B::named<core::String, core::int>(let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:75:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3,
-                                               ^" in let final core::int #t22 = 3 in null, let<BottomType> _ = null in let final dynamic #t23 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:76:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String, let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:76:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final core::String #t24 = "hello" in null);
+                                               ^" in "hello" as{TypeError} core::int);
   }
   {
     self::A<core::int, core::int> a0 = new self::C::•<core::int>(3);
     self::A<core::int, core::int> a1 = new self::C::named<core::int>(3);
     self::A<core::int, core::int> a2 = new self::C::•<core::int>(3);
     self::A<core::int, core::int> a3 = new self::C::named<core::int>(3);
-    self::A<core::int, core::int> a4 = let<BottomType> _ = null in let final dynamic #t25 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:83:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
+    self::A<core::int, core::int> a4 = let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:83:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::int>'.
     A<int, int> a4 = /*error:INVALID_ASSIGNMENT*/ new C<dynamic>(3);
-                                                      ^" in let final self::C<dynamic> #t26 = new self::C::•<dynamic>(3) in null;
-    self::A<core::int, core::int> a5 = let<BottomType> _ = null in let final dynamic #t27 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:84:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
+                                                      ^" in new self::C::•<dynamic>(3) as{TypeError} self::A<core::int, core::int>;
+    self::A<core::int, core::int> a5 = let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:84:55: Error: A value of type 'test::C<dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::int>'.
     A<int, int> a5 = /*error:INVALID_ASSIGNMENT*/ new C<dynamic>.named(3);
-                                                      ^" in let final self::C<dynamic> #t28 = new self::C::named<dynamic>(3) in null;
+                                                      ^" in new self::C::named<dynamic>(3) as{TypeError} self::A<core::int, core::int>;
   }
   {
-    self::A<core::int, core::int> a0 = new self::C::•<core::int>(let<BottomType> _ = null in let final dynamic #t29 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:88:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+    self::A<core::int, core::int> a0 = new self::C::•<core::int>(let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:88:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final core::String #t30 = "hello" in null);
-    self::A<core::int, core::int> a1 = new self::C::named<core::int>(let<BottomType> _ = null in let final dynamic #t31 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:90:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in "hello" as{TypeError} core::int);
+    self::A<core::int, core::int> a1 = new self::C::named<core::int>(let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:90:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final core::String #t32 = "hello" in null);
+                                               ^" in "hello" as{TypeError} core::int);
   }
   {
     self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>("hello");
     self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>("hello");
     self::A<core::int, core::String> a2 = new self::D::•<core::int, core::String>("hello");
     self::A<core::int, core::String> a3 = new self::D::named<core::String, core::String>("hello");
-    self::A<core::int, core::String> a4 = let<BottomType> _ = null in let final dynamic #t33 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:98:47: Error: A value of type 'test::D<dart.core::num, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+    self::A<core::int, core::String> a4 = let final<BottomType> #t17 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:98:47: Error: A value of type 'test::D<dart.core::num, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a4 = /*error:INVALID_ASSIGNMENT*/ new D<num, dynamic>(\"hello\");
-                                              ^" in let final self::D<core::num, dynamic> #t34 = new self::D::•<core::num, dynamic>("hello") in null;
-    self::A<core::int, core::String> a5 = let<BottomType> _ = null in let final dynamic #t35 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:100:47: Error: A value of type 'test::D<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
+                                              ^" in new self::D::•<core::num, dynamic>("hello") as{TypeError} self::A<core::int, core::String>;
+    self::A<core::int, core::String> a5 = let final<BottomType> #t18 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:100:47: Error: A value of type 'test::D<dynamic, dynamic>' can't be assigned to a variable of type 'test::A<dart.core::int, dart.core::String>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A<dart.core::int, dart.core::String>'.
         a5 = /*error:INVALID_ASSIGNMENT*/ new D<dynamic, dynamic>.named(
-                                              ^" in let final self::D<dynamic, dynamic> #t36 = new self::D::named<dynamic, dynamic>("hello") in null;
+                                              ^" in new self::D::named<dynamic, dynamic>("hello") as{TypeError} self::A<core::int, core::String>;
   }
   {
-    self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>(let<BottomType> _ = null in let final dynamic #t37 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:105:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+    self::A<core::int, core::String> a0 = new self::D::•<dynamic, core::String>(let final<BottomType> #t19 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:105:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final core::int #t38 = 3 in null);
-    self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>(let<BottomType> _ = null in let final dynamic #t39 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:107:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in 3 as{TypeError} core::String);
+    self::A<core::int, core::String> a1 = new self::D::named<dynamic, core::String>(let final<BottomType> #t20 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:107:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final core::int #t40 = 3 in null);
+                                               ^" in 3 as{TypeError} core::String);
   }
   {
     self::A<self::C<core::int>, core::String> a0 = new self::E::•<core::int, core::String>("hello");
   }
   {
     self::A<core::int, core::String> a0 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>[3], b: <core::String>["hello"]);
-    self::A<core::int, core::String> a1 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>[let<BottomType> _ = null in let final dynamic #t41 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:118:54: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    self::A<core::int, core::String> a1 = new self::F::•<core::int, core::String>(3, "hello", a: <core::int>[let final<BottomType> #t21 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:118:54: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
           /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                     ^" in let final core::String #t42 = "hello" in null], b: <core::String>[let<BottomType> _ = null in let final dynamic #t43 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:121:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                     ^" in "hello" as{TypeError} core::int], b: <core::String>[let final<BottomType> #t22 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:121:54: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 3
-                                                     ^" in let final core::int #t44 = 3 in null]);
+                                                     ^" in 3 as{TypeError} core::String]);
     self::A<core::int, core::String> a2 = new self::F::named<core::int, core::String>(3, "hello", 3, "hello");
     self::A<core::int, core::String> a3 = new self::F::named<core::int, core::String>(3, "hello");
-    self::A<core::int, core::String> a4 = new self::F::named<core::int, core::String>(3, "hello", let<BottomType> _ = null in let final dynamic #t45 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:129:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+    self::A<core::int, core::String> a4 = new self::F::named<core::int, core::String>(3, "hello", let final<BottomType> #t23 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:129:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                               ^" in let final core::String #t46 = "hello" in null, let<BottomType> _ = null in let final dynamic #t47 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:130:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
+                                               ^" in "hello" as{TypeError} core::int, let final<BottomType> #t24 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:130:48: Error: The argument type 'dart.core::int' can't be assigned to the parameter type 'dart.core::String'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::String'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 3);
-                                               ^" in let final core::int #t48 = 3 in null);
-    self::A<core::int, core::String> a5 = new self::F::named<core::int, core::String>(3, "hello", let<BottomType> _ = null in let final dynamic #t49 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:134:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                               ^" in 3 as{TypeError} core::String);
+    self::A<core::int, core::String> a5 = new self::F::named<core::int, core::String>(3, "hello", let final<BottomType> #t25 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_instance_creations_infer_downwards.dart:134:48: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
         /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\");
-                                               ^" in let final core::String #t50 = "hello" in null);
+                                               ^" in "hello" as{TypeError} core::int);
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect
index 49c6469..a41f60c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.expect
@@ -69,22 +69,22 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::List<core::String> list1 = const <core::String>[], core::List<core::String> list2 = const <core::String>[let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+static method foo([core::List<core::String> list1 = const <core::String>[], core::List<core::String> list2 = const <core::String>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 42
-                                                                                        ^" in let final dynamic #t2 = 42 in null]]) → void {}
+                                                                                        ^" in 42 as{TypeError} core::String]]) → void {}
 static method main() → void {
   {
     core::List<core::int> l0 = <core::int>[];
     core::List<core::int> l1 = <core::int>[3];
-    core::List<core::int> l2 = <core::int>[let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::List<core::int> l2 = <core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                 ^" in let final dynamic #t4 = "hello" in null];
-    core::List<core::int> l3 = <core::int>[let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                 ^" in "hello" as{TypeError} core::int];
+    core::List<core::int> l3 = <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                 ^" in let final dynamic #t6 = "hello" in null, 3];
+                                                 ^" in "hello" as{TypeError} core::int, 3];
   }
   {
     core::List<dynamic> l0 = <dynamic>[];
@@ -93,51 +93,51 @@
     core::List<dynamic> l3 = <dynamic>["hello", 3];
   }
   {
-    core::List<core::int> l0 = let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+    core::List<core::int> l0 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l0 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[];
-                                                            ^" in let final dynamic #t8 = <core::num>[] in null;
-    core::List<core::int> l1 = let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+                                                            ^" in <core::num>[];
+    core::List<core::int> l1 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l1 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[3];
-                                                            ^" in let final dynamic #t10 = <core::num>[3] in null;
-    core::List<core::int> l2 = let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+                                                            ^" in <core::num>[3];
+    core::List<core::int> l2 = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l2 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in let final dynamic #t12 = <core::num>[let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+                                                            ^" in <core::num>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                 ^" in let final dynamic #t14 = "hello" in null] in null;
-    core::List<core::int> l3 = let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+                                                 ^" in "hello" as{TypeError} core::num];
+    core::List<core::int> l3 = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l3 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in let final dynamic #t16 = <core::num>[let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+                                                            ^" in <core::num>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                 ^" in let final dynamic #t18 = "hello" in null, 3] in null;
+                                                 ^" in "hello" as{TypeError} core::num, 3];
   }
   {
     core::Iterable<core::int> i0 = <core::int>[];
     core::Iterable<core::int> i1 = <core::int>[3];
-    core::Iterable<core::int> i2 = <core::int>[let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Iterable<core::int> i2 = <core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                 ^" in let final dynamic #t20 = "hello" in null];
-    core::Iterable<core::int> i3 = <core::int>[let dynamic _ = null in let final dynamic #t21 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                 ^" in "hello" as{TypeError} core::int];
+    core::Iterable<core::int> i3 = <core::int>[let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                 ^" in let final dynamic #t22 = "hello" in null, 3];
+                                                 ^" in "hello" as{TypeError} core::int, 3];
   }
   {
     const core::List<core::int> c0 = const <core::int>[];
     const core::List<core::int> c1 = const <core::int>[3];
-    const core::List<core::int> c2 = const <core::int>[let dynamic _ = null in let final dynamic #t23 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:58:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    const core::List<core::int> c2 = const <core::int>[let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:58:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                                                        ^" in let final dynamic #t24 = "hello" in null];
-    const core::List<core::int> c3 = const <core::int>[let dynamic _ = null in let final dynamic #t25 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:61:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                                        ^" in "hello" as{TypeError} core::int];
+    const core::List<core::int> c3 = const <core::int>[let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:61:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                                                        ^" in let final dynamic #t26 = "hello" in null, 3];
+                                                                                        ^" in "hello" as{TypeError} core::int, 3];
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect
index 0bbe2ae..2b4c187 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart.strong.transformed.expect
@@ -2,22 +2,22 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::List<core::String> list1 = const <core::String>[], core::List<core::String> list2 = const <core::String>[let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+static method foo([core::List<core::String> list1 = const <core::String>[], core::List<core::String> list2 = const <core::String>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:11:89: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 42
-                                                                                        ^" in let final core::int #t2 = 42 in null]]) → void {}
+                                                                                        ^" in 42 as{TypeError} core::String]]) → void {}
 static method main() → void {
   {
     core::List<core::int> l0 = <core::int>[];
     core::List<core::int> l1 = <core::int>[3];
-    core::List<core::int> l2 = <core::int>[let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::List<core::int> l2 = <core::int>[let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:19:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                 ^" in let final core::String #t4 = "hello" in null];
-    core::List<core::int> l3 = <core::int>[let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                 ^" in "hello" as{TypeError} core::int];
+    core::List<core::int> l3 = <core::int>[let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:22:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                 ^" in let final core::String #t6 = "hello" in null, 3];
+                                                 ^" in "hello" as{TypeError} core::int, 3];
   }
   {
     core::List<dynamic> l0 = <dynamic>[];
@@ -26,51 +26,51 @@
     core::List<dynamic> l3 = <dynamic>["hello", 3];
   }
   {
-    core::List<core::int> l0 = let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+    core::List<core::int> l0 = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:33:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l0 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[];
-                                                            ^" in let final core::List<core::num> #t8 = <core::num>[] in null;
-    core::List<core::int> l1 = let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+                                                            ^" in <core::num>[];
+    core::List<core::int> l1 = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:34:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l1 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[3];
-                                                            ^" in let final core::List<core::num> #t10 = <core::num>[3] in null;
-    core::List<core::int> l2 = let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+                                                            ^" in <core::num>[3];
+    core::List<core::int> l2 = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:35:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l2 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in let final core::List<core::num> #t12 = <core::num>[let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+                                                            ^" in <core::num>[let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:36:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                 ^" in let final core::String #t14 = "hello" in null] in null;
-    core::List<core::int> l3 = let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
+                                                 ^" in "hello" as{TypeError} core::num];
+    core::List<core::int> l3 = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:38:61: Error: The list literal type 'dart.core::List<dart.core::num>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
     List<int> l3 = /*error:INVALID_CAST_LITERAL_LIST*/ <num>[
-                                                            ^" in let final core::List<core::num> #t16 = <core::num>[let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+                                                            ^" in <core::num>[let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:39:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                 ^" in let final core::String #t18 = "hello" in null, 3] in null;
+                                                 ^" in "hello" as{TypeError} core::num, 3];
   }
   {
     core::Iterable<core::int> i0 = <core::int>[];
     core::Iterable<core::int> i1 = <core::int>[3];
-    core::Iterable<core::int> i2 = <core::int>[let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Iterable<core::int> i2 = <core::int>[let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:47:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                 ^" in let final core::String #t20 = "hello" in null];
-    core::Iterable<core::int> i3 = <core::int>[let<BottomType> _ = null in let final dynamic #t21 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                 ^" in "hello" as{TypeError} core::int];
+    core::Iterable<core::int> i3 = <core::int>[let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:50:50: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                 ^" in let final core::String #t22 = "hello" in null, 3];
+                                                 ^" in "hello" as{TypeError} core::int, 3];
   }
   {
     const core::List<core::int> c0 = const <core::int>[];
     const core::List<core::int> c1 = const <core::int>[3];
-    const core::List<core::int> c2 = const <core::int>[let<BottomType> _ = null in let final dynamic #t23 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:58:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    const core::List<core::int> c2 = const <core::int>[let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:58:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\"
-                                                                                        ^" in let final core::String #t24 = "hello" in null];
-    const core::List<core::int> c3 = const <core::int>[let<BottomType> _ = null in let final dynamic #t25 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:61:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                                        ^" in "hello" as{TypeError} core::int];
+    const core::List<core::int> c3 = const <core::int>[let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_list_literals_infer_downwards.dart:61:89: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE,error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ \"hello\",
-                                                                                        ^" in let final core::String #t26 = "hello" in null, 3];
+                                                                                        ^" in "hello" as{TypeError} core::int, 3];
   }
 }
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect
index c422b68..10afb3c 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.expect
@@ -84,29 +84,29 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::Map<core::int, core::String> m1 = const <core::int, core::String>{1: "hello"}, core::Map<core::int, core::String> m2 = const <core::int, core::String>{let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+static method foo([core::Map<core::int, core::String> m1 = const <core::int, core::String>{1: "hello"}, core::Map<core::int, core::String> m2 = const <core::int, core::String>{let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^" in let final dynamic #t2 = "hello" in null: "world"}]) → void {}
+                                                                              ^" in "hello" as{TypeError} core::int: "world"}]) → void {}
 static method test() → void {
   {
     core::Map<core::int, core::String> l0 = <core::int, core::String>{};
     core::Map<core::int, core::String> l1 = <core::int, core::String>{3: "hello"};
-    core::Map<core::int, core::String> l2 = <core::int, core::String>{let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Map<core::int, core::String> l2 = <core::int, core::String>{let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
-                                            ^" in let final dynamic #t4 = "hello" in null: "hello"};
-    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                            ^" in "hello" as{TypeError} core::int: "hello"};
+    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                 ^" in let final dynamic #t6 = 3 in null};
-    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                 ^" in 3 as{TypeError} core::String};
+    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                            ^" in let final dynamic #t8 = "hello" in null: let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                            ^" in "hello" as{TypeError} core::int: let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                  ^" in let final dynamic #t10 = 3 in null};
+                                                  ^" in 3 as{TypeError} core::String};
   }
   {
     core::Map<dynamic, dynamic> l0 = <dynamic, dynamic>{};
@@ -119,60 +119,60 @@
     core::Map<dynamic, core::String> l0 = <dynamic, core::String>{};
     core::Map<dynamic, core::String> l1 = <dynamic, core::String>{3: "hello"};
     core::Map<dynamic, core::String> l2 = <dynamic, core::String>{"hello": "hello"};
-    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                 ^" in let final dynamic #t12 = 3 in null};
-    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                 ^" in 3 as{TypeError} core::String};
+    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       \"hello\": /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                       ^" in let final dynamic #t14 = 3 in null};
+                                                       ^" in 3 as{TypeError} core::String};
   }
   {
     core::Map<core::int, dynamic> l0 = <core::int, dynamic>{};
     core::Map<core::int, dynamic> l1 = <core::int, dynamic>{3: "hello"};
-    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
-                                            ^" in let final dynamic #t16 = "hello" in null: "hello"};
+                                            ^" in "hello" as{TypeError} core::int: "hello"};
     core::Map<core::int, dynamic> l3 = <core::int, dynamic>{3: 3};
-    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": 3
-                                            ^" in let final dynamic #t18 = "hello" in null: 3};
+                                            ^" in "hello" as{TypeError} core::int: 3};
   }
   {
-    core::Map<core::int, core::String> l0 = let dynamic _ = null in let final dynamic #t19 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+    core::Map<core::int, core::String> l0 = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l0 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{};
-                                                                           ^" in let final dynamic #t20 = <core::num, dynamic>{} in null;
-    core::Map<core::int, core::String> l1 = let dynamic _ = null in let final dynamic #t21 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                                           ^" in <core::num, dynamic>{};
+    core::Map<core::int, core::String> l1 = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l1 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
-                                                                           ^" in let final dynamic #t22 = <core::num, dynamic>{3: "hello"} in null;
-    core::Map<core::int, core::String> l3 = let dynamic _ = null in let final dynamic #t23 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                                           ^" in <core::num, dynamic>{3: "hello"};
+    core::Map<core::int, core::String> l3 = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l3 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
-                                                                           ^" in let final dynamic #t24 = <core::num, dynamic>{3: 3} in null;
+                                                                           ^" in <core::num, dynamic>{3: 3};
   }
   {
     const core::Map<core::int, core::String> l0 = const <core::int, core::String>{};
     const core::Map<core::int, core::String> l1 = const <core::int, core::String>{3: "hello"};
-    const core::Map<core::int, core::String> l2 = const <core::int, core::String>{let dynamic _ = null in let final dynamic #t25 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:80:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    const core::Map<core::int, core::String> l2 = const <core::int, core::String>{let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:80:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^" in let final dynamic #t26 = "hello" in null: "hello"};
-    const core::Map<core::int, core::String> l3 = const <core::int, core::String>{3: let dynamic _ = null in let final dynamic #t27 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:84:86: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                              ^" in "hello" as{TypeError} core::int: "hello"};
+    const core::Map<core::int, core::String> l3 = const <core::int, core::String>{3: let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:84:86: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                                                     ^" in let final dynamic #t28 = 3 in null};
-    const core::Map<core::int, core::String> l4 = const <core::int, core::String>{3: "hello", let dynamic _ = null in let final dynamic #t29 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:88:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                                     ^" in 3 as{TypeError} core::String};
+    const core::Map<core::int, core::String> l4 = const <core::int, core::String>{3: "hello", let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:88:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^" in let final dynamic #t30 = "hello" in null: let dynamic _ = null in let final dynamic #t31 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:89:87: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                              ^" in "hello" as{TypeError} core::int: let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:89:87: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                                                      ^" in let final dynamic #t32 = 3 in null};
+                                                                                      ^" in 3 as{TypeError} core::String};
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect
index a825f73..c9507e6 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart.strong.transformed.expect
@@ -2,29 +2,29 @@
 import self as self;
 import "dart:core" as core;
 
-static method foo([core::Map<core::int, core::String> m1 = const <core::int, core::String>{1: "hello"}, core::Map<core::int, core::String> m2 = const <core::int, core::String>{let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+static method foo([core::Map<core::int, core::String> m1 = const <core::int, core::String>{1: "hello"}, core::Map<core::int, core::String> m2 = const <core::int, core::String>{let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:12:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^" in let final core::String #t2 = "hello" in null: "world"}]) → void {}
+                                                                              ^" in "hello" as{TypeError} core::int: "world"}]) → void {}
 static method test() → void {
   {
     core::Map<core::int, core::String> l0 = <core::int, core::String>{};
     core::Map<core::int, core::String> l1 = <core::int, core::String>{3: "hello"};
-    core::Map<core::int, core::String> l2 = <core::int, core::String>{let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Map<core::int, core::String> l2 = <core::int, core::String>{let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:20:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
-                                            ^" in let final core::String #t4 = "hello" in null: "hello"};
-    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                            ^" in "hello" as{TypeError} core::int: "hello"};
+    core::Map<core::int, core::String> l3 = <core::int, core::String>{3: let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:23:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                 ^" in let final core::int #t6 = 3 in null};
-    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                 ^" in 3 as{TypeError} core::String};
+    core::Map<core::int, core::String> l4 = <core::int, core::String>{3: "hello", let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:27:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                            ^" in let final core::String #t8 = "hello" in null: let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                            ^" in "hello" as{TypeError} core::int: let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:28:51: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                  ^" in let final core::int #t10 = 3 in null};
+                                                  ^" in 3 as{TypeError} core::String};
   }
   {
     core::Map<dynamic, dynamic> l0 = <dynamic, dynamic>{};
@@ -37,60 +37,60 @@
     core::Map<dynamic, core::String> l0 = <dynamic, core::String>{};
     core::Map<dynamic, core::String> l1 = <dynamic, core::String>{3: "hello"};
     core::Map<dynamic, core::String> l2 = <dynamic, core::String>{"hello": "hello"};
-    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+    core::Map<dynamic, core::String> l3 = <dynamic, core::String>{3: let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:48:50: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                 ^" in let final core::int #t12 = 3 in null};
-    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                 ^" in 3 as{TypeError} core::String};
+    core::Map<dynamic, core::String> l4 = <dynamic, core::String>{3: "hello", "hello": let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:52:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       \"hello\": /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                       ^" in let final core::int #t14 = 3 in null};
+                                                       ^" in 3 as{TypeError} core::String};
   }
   {
     core::Map<core::int, dynamic> l0 = <core::int, dynamic>{};
     core::Map<core::int, dynamic> l1 = <core::int, dynamic>{3: "hello"};
-    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Map<core::int, dynamic> l2 = <core::int, dynamic>{let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:59:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": \"hello\"
-                                            ^" in let final core::String #t16 = "hello" in null: "hello"};
+                                            ^" in "hello" as{TypeError} core::int: "hello"};
     core::Map<core::int, dynamic> l3 = <core::int, dynamic>{3: 3};
-    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    core::Map<core::int, dynamic> l4 = <core::int, dynamic>{3: "hello", let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:64:45: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\": 3
-                                            ^" in let final core::String #t18 = "hello" in null: 3};
+                                            ^" in "hello" as{TypeError} core::int: 3};
   }
   {
-    core::Map<core::int, core::String> l0 = let<BottomType> _ = null in let final dynamic #t19 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+    core::Map<core::int, core::String> l0 = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:68:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l0 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{};
-                                                                           ^" in let final core::Map<core::num, dynamic> #t20 = <core::num, dynamic>{} in null;
-    core::Map<core::int, core::String> l1 = let<BottomType> _ = null in let final dynamic #t21 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                                           ^" in <core::num, dynamic>{};
+    core::Map<core::int, core::String> l1 = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:69:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l1 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
-                                                                           ^" in let final core::Map<core::num, dynamic> #t22 = <core::num, dynamic>{3: "hello"} in null;
-    core::Map<core::int, core::String> l3 = let<BottomType> _ = null in let final dynamic #t23 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                                           ^" in <core::num, dynamic>{3: "hello"};
+    core::Map<core::int, core::String> l3 = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:72:76: Error: The map literal type 'dart.core::Map<dart.core::num, dynamic>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
     Map<int, String> l3 = /*error:INVALID_CAST_LITERAL_MAP*/ <num, dynamic>{
-                                                                           ^" in let final core::Map<core::num, dynamic> #t24 = <core::num, dynamic>{3: 3} in null;
+                                                                           ^" in <core::num, dynamic>{3: 3};
   }
   {
     const core::Map<core::int, core::String> l0 = const <core::int, core::String>{};
     const core::Map<core::int, core::String> l1 = const <core::int, core::String>{3: "hello"};
-    const core::Map<core::int, core::String> l2 = const <core::int, core::String>{let<BottomType> _ = null in let final dynamic #t25 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:80:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    const core::Map<core::int, core::String> l2 = const <core::int, core::String>{let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:80:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^" in let final core::String #t26 = "hello" in null: "hello"};
-    const core::Map<core::int, core::String> l3 = const <core::int, core::String>{3: let<BottomType> _ = null in let final dynamic #t27 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:84:86: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                              ^" in "hello" as{TypeError} core::int: "hello"};
+    const core::Map<core::int, core::String> l3 = const <core::int, core::String>{3: let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:84:86: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
       3: /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                                                     ^" in let final core::int #t28 = 3 in null};
-    const core::Map<core::int, core::String> l4 = const <core::int, core::String>{3: "hello", let<BottomType> _ = null in let final dynamic #t29 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:88:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                                                                     ^" in 3 as{TypeError} core::String};
+    const core::Map<core::int, core::String> l4 = const <core::int, core::String>{3: "hello", let final<BottomType> #t15 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:88:79: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:MAP_KEY_TYPE_NOT_ASSIGNABLE,error:MAP_KEY_TYPE_NOT_ASSIGNABLE*/ \"hello\":
-                                                                              ^" in let final core::String #t30 = "hello" in null: let<BottomType> _ = null in let final dynamic #t31 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:89:87: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                              ^" in "hello" as{TypeError} core::int: let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_on_map_literals.dart:89:87: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*error:MAP_VALUE_TYPE_NOT_ASSIGNABLE,error:MAP_VALUE_TYPE_NOT_ASSIGNABLE*/ 3
-                                                                                      ^" in let final core::int #t32 = 3 in null};
+                                                                                      ^" in 3 as{TypeError} core::String};
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect
index 48fb3e0..d629560 100644
--- a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.expect
@@ -31,26 +31,26 @@
 }
 static method foo() → asy::Stream<core::List<core::int>> async* {
   yield<core::int>[];
-  yield let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:16:67: Error: A value of type 'test::MyStream<dynamic>' can't be assigned to a variable of type 'dart.core::List<dart.core::int>'.
+  yield let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:16:67: Error: A value of type 'test::MyStream<dynamic>' can't be assigned to a variable of type 'dart.core::List<dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dart.core::int>'.
   yield /*error:YIELD_OF_INVALID_TYPE*/ new /*@typeArgs=dynamic*/ MyStream();
-                                                                  ^" in let final dynamic #t2 = self::MyStream::•<dynamic>() in null;
-  yield* let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:17:64: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'dart.async::Stream<dart.core::List<dart.core::int>>'.
+                                                                  ^" in self::MyStream::•<dynamic>() as{TypeError} core::List<core::int>;
+  yield* let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:17:64: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'dart.async::Stream<dart.core::List<dart.core::int>>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::Stream<dart.core::List<dart.core::int>>'.
   yield* /*error:YIELD_OF_INVALID_TYPE*/ /*@typeArgs=dynamic*/ [];
-                                                               ^" in let final dynamic #t4 = <dynamic>[] in null;
+                                                               ^" in <dynamic>[] as{TypeError} asy::Stream<core::List<core::int>>;
   yield* self::MyStream::•<core::List<core::int>>();
 }
 static method bar() → core::Iterable<core::Map<core::int, core::int>> sync* {
   yield<core::int, core::int>{};
-  yield let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:23:67: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'dart.core::Map<dart.core::int, dart.core::int>'.
+  yield let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:23:67: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'dart.core::Map<dart.core::int, dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Map<dart.core::int, dart.core::int>'.
   yield /*error:YIELD_OF_INVALID_TYPE*/ new /*@typeArgs=dynamic*/ List();
-                                                                  ^" in let final dynamic #t6 = core::List::•<dynamic>() in null;
-  yield* let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:24:73: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::Iterable<dart.core::Map<dart.core::int, dart.core::int>>'.
+                                                                  ^" in core::List::•<dynamic>() as{TypeError} core::Map<core::int, core::int>;
+  yield* let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:24:73: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::Iterable<dart.core::Map<dart.core::int, dart.core::int>>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Iterable<dart.core::Map<dart.core::int, dart.core::int>>'.
   yield* /*error:YIELD_OF_INVALID_TYPE*/ /*@typeArgs=dynamic, dynamic*/ {};
-                                                                        ^" in let final dynamic #t8 = <dynamic, dynamic>{} in null;
+                                                                        ^" in <dynamic, dynamic>{} as{TypeError} core::Iterable<core::Map<core::int, core::int>>;
   yield* core::List::•<core::Map<core::int, core::int>>();
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
new file mode 100644
index 0000000..304f6a2
--- /dev/null
+++ b/pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart.strong.transformed.expect
@@ -0,0 +1,95 @@
+library test;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+abstract class MyStream<T extends core::Object = dynamic> extends asy::Stream<self::MyStream::T> {
+  static factory •<T extends core::Object = dynamic>() → self::MyStream<self::MyStream::•::T>
+    return null;
+}
+static method foo() → asy::Stream<core::List<core::int>> /* originally async* */ {
+  asy::_AsyncStarStreamController<core::List<core::int>> :controller;
+  dynamic :controller_stream;
+  dynamic :async_stack_trace;
+  dynamic :async_op_then;
+  dynamic :async_op_error;
+  dynamic :await_jump_var = 0;
+  dynamic :await_ctx_var;
+  dynamic :saved_try_context_var0;
+  dynamic :saved_try_context_var1;
+  function :async_op([dynamic :result, dynamic :exception, dynamic :stack_trace]) → dynamic yielding 
+    try
+      try {
+        #L1:
+        {
+          if(:controller.{asy::_AsyncStarStreamController::add}(<core::int>[]))
+            return null;
+          else
+            [yield] null;
+          if(:controller.{asy::_AsyncStarStreamController::add}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:16:67: Error: A value of type 'test::MyStream<dynamic>' can't be assigned to a variable of type 'dart.core::List<dart.core::int>'.
+Try changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dart.core::int>'.
+  yield /*error:YIELD_OF_INVALID_TYPE*/ new /*@typeArgs=dynamic*/ MyStream();
+                                                                  ^" in self::MyStream::•<dynamic>() as{TypeError} core::List<core::int>))
+            return null;
+          else
+            [yield] null;
+          if(:controller.{asy::_AsyncStarStreamController::addStream}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:17:64: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'dart.async::Stream<dart.core::List<dart.core::int>>'.
+Try changing the type of the left hand side, or casting the right hand side to 'dart.async::Stream<dart.core::List<dart.core::int>>'.
+  yield* /*error:YIELD_OF_INVALID_TYPE*/ /*@typeArgs=dynamic*/ [];
+                                                               ^" in <dynamic>[] as{TypeError} asy::Stream<core::List<core::int>>))
+            return null;
+          else
+            [yield] null;
+          if(:controller.{asy::_AsyncStarStreamController::addStream}(self::MyStream::•<core::List<core::int>>()))
+            return null;
+          else
+            [yield] null;
+        }
+        return;
+      }
+      on dynamic catch(dynamic :exception, dynamic :stack_trace) {
+        :controller.{asy::_AsyncStarStreamController::addError}(:exception, :stack_trace);
+      }
+    finally {
+      :controller.{asy::_AsyncStarStreamController::close}();
+    }
+  :async_stack_trace = asy::_asyncStackTraceHelper(:async_op);
+  :async_op_then = asy::_asyncThenWrapperHelper(:async_op);
+  :async_op_error = asy::_asyncErrorWrapperHelper(:async_op);
+  :controller = new asy::_AsyncStarStreamController::•<core::List<core::int>>(:async_op);
+  :controller_stream = :controller.{asy::_AsyncStarStreamController::stream};
+  return :controller_stream;
+}
+static method bar() → core::Iterable<core::Map<core::int, core::int>> /* originally sync* */ {
+  dynamic :await_jump_var = 0;
+  dynamic :await_ctx_var;
+  function :sync_op(core::_SyncIterator<core::Map<core::int, core::int>> :iterator) → core::bool yielding {
+    {
+      {
+        :iterator.{core::_SyncIterator::_current} = <core::int, core::int>{};
+        [yield] true;
+      }
+      {
+        :iterator.{core::_SyncIterator::_current} = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:23:67: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'dart.core::Map<dart.core::int, dart.core::int>'.
+Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Map<dart.core::int, dart.core::int>'.
+  yield /*error:YIELD_OF_INVALID_TYPE*/ new /*@typeArgs=dynamic*/ List();
+                                                                  ^" in core::_GrowableList::•<dynamic>(0) as{TypeError} core::Map<core::int, core::int>;
+        [yield] true;
+      }
+      {
+        :iterator.{core::_SyncIterator::_yieldEachIterable} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/downwards_inference_yield_yield_star.dart:24:73: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::Iterable<dart.core::Map<dart.core::int, dart.core::int>>'.
+Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Iterable<dart.core::Map<dart.core::int, dart.core::int>>'.
+  yield* /*error:YIELD_OF_INVALID_TYPE*/ /*@typeArgs=dynamic, dynamic*/ {};
+                                                                        ^" in <dynamic, dynamic>{} as{TypeError} core::Iterable<core::Map<core::int, core::int>>;
+        [yield] true;
+      }
+      {
+        :iterator.{core::_SyncIterator::_yieldEachIterable} = core::_GrowableList::•<core::Map<core::int, core::int>>(0);
+        [yield] true;
+      }
+    }
+    return false;
+  }
+  return new core::_SyncIterable::•<core::Map<core::int, core::int>>(:sync_op);
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect
index 0af7ce5..b709a6f 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.expect
@@ -18,9 +18,9 @@
 static method test() → dynamic {
   dynamic d = new self::Foo::•();
   core::int get_hashCode = d.{core::Object::hashCode};
-  dynamic call_hashCode = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/dynamic_methods.dart:16:39: Error: 'hashCode' isn't a function or method and can't be invoked.
+  dynamic call_hashCode = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/dynamic_methods.dart:16:39: Error: 'hashCode' isn't a function or method and can't be invoked.
       d. /*@target=Object::hashCode*/ hashCode();
-                                      ^" in let final dynamic #t2 = d.{core::Object::hashCode}() in null;
+                                      ^" in d.{core::Object::hashCode}();
   core::String call_toString = d.{core::Object::toString}();
   dynamic call_toStringArg = d.toString(color: "pink");
   dynamic call_foo0 = d.foo();
diff --git a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect
index 53e0e8d..49e07c8 100644
--- a/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/dynamic_methods.dart.strong.transformed.expect
@@ -12,9 +12,9 @@
 static method test() → dynamic {
   dynamic d = new self::Foo::•();
   core::int get_hashCode = d.{core::Object::hashCode};
-  dynamic call_hashCode = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/dynamic_methods.dart:16:39: Error: 'hashCode' isn't a function or method and can't be invoked.
+  dynamic call_hashCode = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/dynamic_methods.dart:16:39: Error: 'hashCode' isn't a function or method and can't be invoked.
       d. /*@target=Object::hashCode*/ hashCode();
-                                      ^" in let final dynamic #t2 = d.{core::Object::hashCode}() in null;
+                                      ^" in d.{core::Object::hashCode}();
   core::String call_toString = d.{core::Object::toString}();
   dynamic call_toStringArg = d.toString(color: "pink");
   dynamic call_foo0 = d.foo();
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
index ec22073..251a36e 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.expect
@@ -30,10 +30,10 @@
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
-  asy::Future<core::int> f2 = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/future_then_upwards.dart:21:49: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
+  asy::Future<core::int> f2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards.dart:21:49: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::Future<dart.core::int>'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
-                                                ^" in let final dynamic #t2 = f in null;
+                                                ^" in f as{TypeError} asy::Future<core::int>;
   asy::Future<core::num> f3 = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3) as asy::Future<core::double>;
 }
 static method foo() → self::MyFuture<dynamic>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
index d32175c..0bbdac3 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards.dart.strong.transformed.expect
@@ -23,10 +23,10 @@
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
-  asy::Future<core::int> f2 = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/future_then_upwards.dart:21:49: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
+  asy::Future<core::int> f2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards.dart:21:49: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::Future<dart.core::int>'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
-                                                ^" in let final self::MyFuture<core::double> #t2 = f in null;
+                                                ^" in f as{TypeError} asy::Future<core::int>;
   asy::Future<core::num> f3 = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3) as asy::Future<core::double>;
 }
 static method foo() → self::MyFuture<dynamic>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
index be1ed22..1693468 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.expect
@@ -30,10 +30,10 @@
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
-  self::MyFuture<core::int> f2 = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_2.dart:21:51: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'test::MyFuture<dart.core::int>'.
+  self::MyFuture<core::int> f2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_2.dart:21:51: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'test::MyFuture<dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::MyFuture<dart.core::int>'.
   MyFuture<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
-                                                  ^" in let final dynamic #t2 = f in null;
+                                                  ^" in f as{TypeError} self::MyFuture<core::int>;
   self::MyFuture<core::num> f3 = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3) as self::MyFuture<core::double>;
 }
 static method foo() → self::MyFuture<dynamic>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
index 4cd8622..eb14026 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_2.dart.strong.transformed.expect
@@ -23,10 +23,10 @@
 }
 static method main() → void {
   self::MyFuture<core::double> f = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3);
-  self::MyFuture<core::int> f2 = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_2.dart:21:51: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'test::MyFuture<dart.core::int>'.
+  self::MyFuture<core::int> f2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_2.dart:21:51: Error: A value of type 'test::MyFuture<dart.core::double>' can't be assigned to a variable of type 'test::MyFuture<dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::MyFuture<dart.core::int>'.
   MyFuture<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
-                                                  ^" in let final self::MyFuture<core::double> #t2 = f in null;
+                                                  ^" in f as{TypeError} self::MyFuture<core::int>;
   self::MyFuture<core::num> f3 = self::foo().{self::MyFuture::then}<core::double>((dynamic _) → core::double => 2.3) as self::MyFuture<core::double>;
 }
 static method foo() → self::MyFuture<dynamic>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
index fbb110e..dfe6a69 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.expect
@@ -30,10 +30,10 @@
 }
 static method test() → void {
   asy::Future<core::double> f = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3);
-  asy::Future<core::int> f2 = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_3.dart:21:49: Error: A value of type 'dart.async::Future<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
+  asy::Future<core::int> f2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_3.dart:21:49: Error: A value of type 'dart.async::Future<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::Future<dart.core::int>'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
-                                                ^" in let final dynamic #t2 = f in null;
+                                                ^" in f as{TypeError} asy::Future<core::int>;
   asy::Future<core::num> f3 = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3) as asy::Future<core::double>;
 }
 static method foo() → asy::Future<dynamic>
diff --git a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
index 7cf0b1c..d430699 100644
--- a/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_then_upwards_3.dart.strong.transformed.expect
@@ -23,10 +23,10 @@
 }
 static method test() → void {
   asy::Future<core::double> f = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3);
-  asy::Future<core::int> f2 = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_3.dart:21:49: Error: A value of type 'dart.async::Future<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
+  asy::Future<core::int> f2 = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_then_upwards_3.dart:21:49: Error: A value of type 'dart.async::Future<dart.core::double>' can't be assigned to a variable of type 'dart.async::Future<dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::Future<dart.core::int>'.
   Future<int> f2 = /*error:INVALID_ASSIGNMENT*/ f;
-                                                ^" in let final asy::Future<core::double> #t2 = f in null;
+                                                ^" in f as{TypeError} asy::Future<core::int>;
   asy::Future<core::num> f3 = self::foo().{asy::Future::then}<core::double>((dynamic _) → core::double => 2.3) as asy::Future<core::double>;
 }
 static method foo() → asy::Future<dynamic>
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
index 55da4f8..da08993 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.expect
@@ -29,10 +29,10 @@
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
-static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
+static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
 Try changing the type of the parameter, or casting the argument to 'dart.async::FutureOr<dart.core::int>'.
         new /*@typeArgs=int*/ Future.value('hi'));
-                                           ^" in let final dynamic #t2 = "hi" in null));
+                                           ^" in "hi" as{TypeError} asy::FutureOr<core::int>));
 static field asy::Future<core::List<core::int>> t2 = self::f.{self::MyFuture::then}<core::List<core::int>>((dynamic _) → core::List<core::int> => <core::int>[3]);
 static method g2() → asy::Future<core::List<core::int>> async {
   return <core::int>[3];
diff --git a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
index f3bccc5..f2b9012 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards.dart.strong.transformed.expect
@@ -22,10 +22,10 @@
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field self::MyFuture<dynamic> f;
-static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
+static field asy::Future<core::int> t1 = self::f.{self::MyFuture::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
 Try changing the type of the parameter, or casting the argument to 'dart.async::FutureOr<dart.core::int>'.
         new /*@typeArgs=int*/ Future.value('hi'));
-                                           ^" in let final core::String #t2 = "hi" in null));
+                                           ^" in "hi" as{TypeError} asy::FutureOr<core::int>));
 static field asy::Future<core::List<core::int>> t2 = self::f.{self::MyFuture::then}<core::List<core::int>>((dynamic _) → core::List<core::int> => <core::int>[3]);
 static method g2() → asy::Future<core::List<core::int>> /* originally async */ {
   final asy::Completer<core::List<core::int>> :async_completer = asy::Completer::sync<core::List<core::int>>();
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
index 76241fa..deb23d4 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.expect
@@ -29,10 +29,10 @@
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
-static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
+static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
 Try changing the type of the parameter, or casting the argument to 'dart.async::FutureOr<dart.core::int>'.
         new /*@typeArgs=int*/ Future.value('hi'));
-                                           ^" in let final dynamic #t2 = "hi" in null));
+                                           ^" in "hi" as{TypeError} asy::FutureOr<core::int>));
 static field asy::Future<core::List<core::int>> t2 = self::f.{asy::Future::then}<core::List<core::int>>((dynamic _) → core::List<core::int> => <core::int>[3]);
 static method g2() → asy::Future<core::List<core::int>> async {
   return <core::int>[3];
diff --git a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
index ef7b284..801bbda 100644
--- a/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/future_union_downwards_3.dart.strong.transformed.expect
@@ -22,10 +22,10 @@
     return this.{self::MyFuture::noSuchMethod}(new core::_InvocationMirror::_withoutType("asStream", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} asy::Stream<self::MyFuture::T>;
 }
 static field asy::Future<dynamic> f;
-static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
+static field asy::Future<core::int> t1 = self::f.{asy::Future::then}<core::int>((dynamic _) → asy::Future<core::int> => asy::Future::value<core::int>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/future_union_downwards_3.dart:21:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.async::FutureOr<dart.core::int>'.
 Try changing the type of the parameter, or casting the argument to 'dart.async::FutureOr<dart.core::int>'.
         new /*@typeArgs=int*/ Future.value('hi'));
-                                           ^" in let final core::String #t2 = "hi" in null));
+                                           ^" in "hi" as{TypeError} asy::FutureOr<core::int>));
 static field asy::Future<core::List<core::int>> t2 = self::f.{asy::Future::then}<core::List<core::int>>((dynamic _) → core::List<core::int> => <core::int>[3]);
 static method g2() → asy::Future<core::List<core::int>> /* originally async */ {
   final asy::Completer<core::List<core::int>> :async_completer = asy::Completer::sync<core::List<core::int>>();
diff --git a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.outline.expect b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.outline.expect
new file mode 100644
index 0000000..93dfbdf
--- /dev/null
+++ b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.outline.expect
@@ -0,0 +1,12 @@
+library test;
+import self as self;
+import "dart:core" as core;
+
+class Foo<T extends core::Pattern = dynamic> extends core::Object {
+  synthetic constructor •() → self::Foo<self::Foo::T>
+    ;
+  method method<U extends self::Foo::T = dynamic>(self::Foo::method::U u) → self::Foo::method::U
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect
index 1b93d99..f83187e 100644
--- a/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart.strong.expect
@@ -1,3 +1,17 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart:26:77: Error: Inferred type argument 'dart.core::int' violates the corresponding type variable bound of 'Foo<dart.core::String>::method'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//       . /*error:COULD_NOT_INFER*/ /*@typeArgs=int*/ /*@target=Foo::method*/ method(
+//                                                                             ^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/inference/generic_methods_correctly_recognize_generic_upper_bound.dart:26:77: Error: Inferred type argument 'dart.core::int' violates the corresponding type variable bound of 'Foo<dart.core::String>::method'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
+//       . /*error:COULD_NOT_INFER*/ /*@typeArgs=int*/ /*@target=Foo::method*/ method(
+//                                                                             ^
+
 library test;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.expect
index 5191245..88d3f6c 100644
--- a/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.expect
@@ -38,22 +38,22 @@
   self::printDouble(math::min<core::double>(1.0, 2.0));
   self::printInt(self::myMax(1, 2) as{TypeError} core::int);
   self::printInt(self::myMax(1, 2) as core::int);
-  self::printInt(math::max<core::int>(1, let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:28:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+  self::printInt(math::max<core::int>(1, let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:28:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@typeArgs=int*/ max(1, /*@error=ArgumentTypeNotAssignable*/ 2.0));
-                                                                    ^" in let final dynamic #t2 = 2.0 in null));
-  self::printInt(math::min<core::int>(1, let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:30:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+                                                                    ^" in 2.0 as{TypeError} core::int));
+  self::printInt(math::min<core::int>(1, let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:30:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@typeArgs=int*/ min(1, /*@error=ArgumentTypeNotAssignable*/ 2.0));
-                                                                    ^" in let final dynamic #t4 = 2.0 in null));
+                                                                    ^" in 2.0 as{TypeError} core::int));
   self::printDouble(math::max<core::double>(1.0, 2.0));
   self::printDouble(math::min<core::double>(1.0, 2.0));
-  self::printInt(math::min<core::int>(let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:38:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+  self::printInt(math::min<core::int>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:38:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@error=ArgumentTypeNotAssignable*/ \"hi\",
-                                           ^" in let final dynamic #t6 = "hi" in null, let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:39:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                           ^" in "hi" as{TypeError} core::int, let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:39:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@error=ArgumentTypeNotAssignable*/ \"there\"));
-                                           ^" in let final dynamic #t8 = "there" in null));
+                                           ^" in "there" as{TypeError} core::int));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.transformed.expect
index a4fa81e..471d44c 100644
--- a/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart.strong.transformed.expect
@@ -16,22 +16,22 @@
   self::printDouble(math::min<core::double>(1.0, 2.0));
   self::printInt(self::myMax(1, 2) as{TypeError} core::int);
   self::printInt(self::myMax(1, 2) as core::int);
-  self::printInt(math::max<core::int>(1, let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:28:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+  self::printInt(math::max<core::int>(1, let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:28:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@typeArgs=int*/ max(1, /*@error=ArgumentTypeNotAssignable*/ 2.0));
-                                                                    ^" in let final core::double #t2 = 2.0 in null));
-  self::printInt(math::min<core::int>(1, let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:30:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+                                                                    ^" in 2.0 as{TypeError} core::int));
+  self::printInt(math::min<core::int>(1, let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:30:69: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@typeArgs=int*/ min(1, /*@error=ArgumentTypeNotAssignable*/ 2.0));
-                                                                    ^" in let final core::double #t4 = 2.0 in null));
+                                                                    ^" in 2.0 as{TypeError} core::int));
   self::printDouble(math::max<core::double>(1.0, 2.0));
   self::printDouble(math::min<core::double>(1.0, 2.0));
-  self::printInt(math::min<core::int>(let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:38:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+  self::printInt(math::min<core::int>(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:38:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@error=ArgumentTypeNotAssignable*/ \"hi\",
-                                           ^" in let final core::String #t6 = "hi" in null, let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:39:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+                                           ^" in "hi" as{TypeError} core::int, let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_dart_math_min_max.dart:39:44: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
       /*@error=ArgumentTypeNotAssignable*/ \"there\"));
-                                           ^" in let final core::String #t8 = "there" in null));
+                                           ^" in "there" as{TypeError} core::int));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.expect
index f83fd7b..4033a7c 100644
--- a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.expect
@@ -13,9 +13,9 @@
   return null;
 static method test() → dynamic {
   core::String x = self::f<core::String>(<core::String>["hi"]);
-  core::String y = self::f<core::String>(<core::String>[let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart:13:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = self::f<core::String>(<core::String>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart:13:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*@typeArgs=String*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 42]);
-                                                                           ^" in let final dynamic #t2 = 42 in null]);
+                                                                           ^" in 42 as{TypeError} core::String]);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.transformed.expect
index 6fbf8af..3ce2207 100644
--- a/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart.strong.transformed.expect
@@ -6,9 +6,9 @@
   return null;
 static method test() → dynamic {
   core::String x = self::f<core::String>(<core::String>["hi"]);
-  core::String y = self::f<core::String>(<core::String>[let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart:13:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = self::f<core::String>(<core::String>[let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_downwards_inference_affects_arguments.dart:13:76: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           /*@typeArgs=String*/ [/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/ 42]);
-                                                                           ^" in let final core::int #t2 = 42 in null]);
+                                                                           ^" in 42 as{TypeError} core::String]);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
index 635109b..9e2f29f 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.expect
@@ -53,14 +53,14 @@
   self::takeIIO(math::max<core::int>);
   self::takeDDO(math::max<core::double>);
   self::takeOOI((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
-  self::takeIDI(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
+  self::takeIDI(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in let final dynamic #t2 = math::max<core::num> in null);
-  self::takeDID(let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::double, core::int) → core::int);
+  self::takeDID(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in let final dynamic #t4 = math::max<core::num> in null);
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::int, core::double) → core::double);
   self::takeOON((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOO((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeIII(math::min<core::int>);
@@ -73,14 +73,14 @@
   self::takeIIO(math::min<core::int>);
   self::takeDDO(math::min<core::double>);
   self::takeOOI((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
-  self::takeIDI(let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
+  self::takeIDI(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
   takeIDI(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in let final dynamic #t6 = math::min<core::num> in null);
-  self::takeDID(let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::double, core::int) → core::int);
+  self::takeDID(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
   takeDID(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in let final dynamic #t8 = math::min<core::num> in null);
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::int, core::double) → core::double);
   self::takeOON((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOO((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeIII(new self::C::•().{self::C::m}<core::int>);
@@ -95,14 +95,14 @@
   self::takeOON((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOO((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOI((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
-  self::takeIDI(let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
+  self::takeIDI(let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
           . /*@target=C::m*/ m);
-                             ^" in let final dynamic #t10 = new self::C::•().{self::C::m}<core::num> in null);
-  self::takeDID(let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
+                             ^" in (new self::C::•().{self::C::m}<core::num>) as{TypeError} (core::double, core::int) → core::int);
+  self::takeDID(let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
           . /*@target=C::m*/ m);
-                             ^" in let final dynamic #t12 = new self::C::•().{self::C::m}<core::num> in null);
+                             ^" in (new self::C::•().{self::C::m}<core::num>) as{TypeError} (core::int, core::double) → core::double);
 }
 static method takeIII((core::int, core::int) → core::int fn) → void {}
 static method takeDDD((core::double, core::double) → core::double fn) → void {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
index cd564cf..6dde83c 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart.strong.transformed.expect
@@ -21,14 +21,14 @@
   self::takeIIO(math::max<core::int>);
   self::takeDDO(math::max<core::double>);
   self::takeOOI((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
-  self::takeIDI(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
+  self::takeIDI(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in let final (core::num, core::num) → core::num #t2 = math::max<core::num> in null);
-  self::takeDID(let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::double, core::int) → core::int);
+  self::takeDID(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
-                                                                        ^" in let final (core::num, core::num) → core::num #t4 = math::max<core::num> in null);
+                                                                        ^" in (math::max<core::num>) as{TypeError} (core::int, core::double) → core::double);
   self::takeOON((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOO((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeIII(math::min<core::int>);
@@ -41,14 +41,14 @@
   self::takeIIO(math::min<core::int>);
   self::takeDDO(math::min<core::double>);
   self::takeOOI((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
-  self::takeIDI(let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
+  self::takeIDI(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
   takeIDI(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in let final (core::num, core::num) → core::num #t6 = math::min<core::num> in null);
-  self::takeDID(let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::double, core::int) → core::int);
+  self::takeDID(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
   takeDID(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
-                                                                       ^" in let final (core::num, core::num) → core::num #t8 = math::min<core::num> in null);
+                                                                       ^" in (math::min<core::num>) as{TypeError} (core::int, core::double) → core::double);
   self::takeOON((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOO((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeIII(new self::C::•().{self::C::m}<core::int>);
@@ -63,14 +63,14 @@
   self::takeOON((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOO((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
   self::takeOOI((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
-  self::takeIDI(let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
+  self::takeIDI(let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::double, dart.core::int) \u8594 dart.core::int'.
           . /*@target=C::m*/ m);
-                             ^" in let final (core::num, core::num) → core::num #t10 = new self::C::•().{self::C::m}<core::num> in null);
-  self::takeDID(let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
+                             ^" in (new self::C::•().{self::C::m}<core::num>) as{TypeError} (core::double, core::int) → core::int);
+  self::takeDID(let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:30: Error: The argument type '(dart.core::num, dart.core::num) \u8594 dart.core::num' can't be assigned to the parameter type '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
 Try changing the type of the parameter, or casting the argument to '(dart.core::int, dart.core::double) \u8594 dart.core::double'.
           . /*@target=C::m*/ m);
-                             ^" in let final (core::num, core::num) → core::num #t12 = new self::C::•().{self::C::m}<core::num> in null);
+                             ^" in (new self::C::•().{self::C::m}<core::num>) as{TypeError} (core::int, core::double) → core::double);
 }
 static method takeIII((core::int, core::int) → core::int fn) → void {}
 static method takeDDD((core::double, core::double) → core::double fn) → void {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.expect b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.expect
index 5b0e517..4d18a21 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.expect
@@ -31,8 +31,8 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::String x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  core::String x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic y = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   y = "world";
   y = 42;
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.transformed.expect
index 89adde8..38e8d5b1 100644
--- a/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart.direct.transformed.expect
@@ -13,8 +13,8 @@
 import "dart:core" as core;
 
 static method main() → dynamic {
-  core::String x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  dynamic y = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  core::String x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["int", "42"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic y = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#JS, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["String", "\"hello\""]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   y = "world";
   y = 42;
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.expect
index 8bb727b..b21df2e 100644
--- a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.expect
@@ -11,9 +11,9 @@
 
 static method f() → void {
   core::List<core::String> y;
-  core::Iterable<core::String> x = y.{core::Iterable::map}<core::String>((core::String z) → core::String => let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_inference_error.dart:13:11: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::String'.
+  core::Iterable<core::String> x = y.{core::Iterable::map}<core::String>((core::String z) → core::String => let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_inference_error.dart:13:11: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           1.0);
-          ^" in let final dynamic #t2 = 1.0 in null);
+          ^" in 1.0 as{TypeError} core::String);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.transformed.expect
index 113e131..1e283f0 100644
--- a/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_inference_error.dart.strong.transformed.expect
@@ -4,9 +4,9 @@
 
 static method f() → void {
   core::List<core::String> y;
-  core::Iterable<core::String> x = y.{core::Iterable::map}<core::String>((core::String z) → core::String => let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_inference_error.dart:13:11: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::String'.
+  core::Iterable<core::String> x = y.{core::Iterable::map}<core::String>((core::String z) → core::String => let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_inference_error.dart:13:11: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
           1.0);
-          ^" in let final core::double #t2 = 1.0 in null);
+          ^" in 1.0 as{TypeError} core::String);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
index 80c8abf..64d369e 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.expect
@@ -20,14 +20,14 @@
 static method test() → dynamic {
   core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<core::int>(list);
-  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => (let final dynamic #t1 = x in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'dart.async::FutureOr<dart.core::String>'.
+  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => (let final dynamic #t1 = x in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'dart.async::FutureOr<dart.core::String>'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
                           /*@type=int*/ y) => /*info:DYNAMIC_CAST,info:DYNAMIC_INVOKE*/ x /*error:UNDEFINED_OPERATOR*/ +
                                                                                                                        ^") as{TypeError} asy::FutureOr<core::String>));
-  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let dynamic _ = null in let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type '(dart.core::String, dart.core::int) \u8594 dart.core::String' can't be assigned to the parameter type '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.
+  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type '(dart.core::String, dart.core::int) \u8594 dart.core::String' can't be assigned to the parameter type '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.
 Try changing the type of the parameter, or casting the argument to '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@returnType=String*/ (String
-                                                                                                           ^" in let final dynamic #t3 = (core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}()) in null));
+                                                                                                           ^" in ((core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (asy::FutureOr<core::String>, core::int) → asy::FutureOr<core::String>));
   asy::Future<core::String> results4 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → core::String => list.{core::Iterable::fold}<core::String>("", (core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}())));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
index 221ebfd..6bd4abe 100644
--- a/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart.strong.transformed.expect
@@ -8,14 +8,14 @@
 static method test() → dynamic {
   core::Iterable<asy::Future<core::int>> list = <core::int>[1, 2, 3].{core::Iterable::map}<asy::Future<core::int>>(self::make);
   asy::Future<core::List<core::int>> results = asy::Future::wait<core::int>(list);
-  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => (let final asy::FutureOr<core::String> #t1 = x in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'dart.async::FutureOr<dart.core::String>'.
+  asy::Future<core::String> results2 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", (asy::FutureOr<core::String> x, core::int y) → asy::FutureOr<core::String> => (let final asy::FutureOr<core::String> #t1 = x in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:23:120: Error: The method '+' isn't defined for the class 'dart.async::FutureOr<dart.core::String>'.
 Try correcting the name to the name of an existing method, or defining a method named '+'.
                           /*@type=int*/ y) => /*info:DYNAMIC_CAST,info:DYNAMIC_INVOKE*/ x /*error:UNDEFINED_OPERATOR*/ +
                                                                                                                        ^") as{TypeError} asy::FutureOr<core::String>));
-  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let<BottomType> _ = null in let final dynamic #t2 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type '(dart.core::String, dart.core::int) \u8594 dart.core::String' can't be assigned to the parameter type '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.
+  asy::Future<core::String> results3 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → asy::FutureOr<core::String> => list.{core::Iterable::fold}<asy::FutureOr<core::String>>("", let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_iterable_and_future.dart:31:108: Error: The argument type '(dart.core::String, dart.core::int) \u8594 dart.core::String' can't be assigned to the parameter type '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.
 Try changing the type of the parameter, or casting the argument to '(dart.async::FutureOr<dart.core::String>, dart.core::int) \u8594 dart.async::FutureOr<dart.core::String>'.
                   /*info:INFERRED_TYPE_CLOSURE,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ /*@returnType=String*/ (String
-                                                                                                           ^" in let final (core::String, core::int) → core::String #t3 = (core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}()) in null));
+                                                                                                           ^" in ((core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}())) as{TypeError} (asy::FutureOr<core::String>, core::int) → asy::FutureOr<core::String>));
   asy::Future<core::String> results4 = results.{asy::Future::then}<core::String>((core::List<core::int> list) → core::String => list.{core::Iterable::fold}<core::String>("", (core::String x, core::int y) → core::String => x.{core::String::+}(y.{core::int::toString}())));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect
index 7a3091d..ac98055 100644
--- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.expect
@@ -40,21 +40,21 @@
   core::String s;
   core::int i;
   s = new self::B::•().{self::B::x} as{TypeError} core::String;
-  s = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:26:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  s = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:26:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::y*/ y;
-                                                             ^" in let final dynamic #t2 = new self::B::•().{self::B::y} in null;
+                                                             ^" in new self::B::•().{self::B::y} as{TypeError} core::String;
   s = new self::B::•().{self::B::z};
-  s = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:28:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  s = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:28:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::w*/ w;
-                                                             ^" in let final dynamic #t4 = new self::B::•().{self::B::w} in null;
+                                                             ^" in new self::B::•().{self::B::w} as{TypeError} core::String;
   i = new self::B::•().{self::B::x} as{TypeError} core::int;
   i = new self::B::•().{self::B::y};
-  i = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:32:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  i = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:32:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   i = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::z*/ z;
-                                                             ^" in let final dynamic #t6 = new self::B::•().{self::B::z} in null;
+                                                             ^" in new self::B::•().{self::B::z} as{TypeError} core::int;
   i = new self::B::•().{self::B::w};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect
index b755212..6337119 100644
--- a/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart.strong.transformed.expect
@@ -23,21 +23,21 @@
   core::String s;
   core::int i;
   s = new self::B::•().{self::B::x} as{TypeError} core::String;
-  s = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:26:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  s = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:26:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::y*/ y;
-                                                             ^" in let final core::int #t2 = new self::B::•().{self::B::y} in null;
+                                                             ^" in new self::B::•().{self::B::y} as{TypeError} core::String;
   s = new self::B::•().{self::B::z};
-  s = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:28:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  s = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:28:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   s = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::w*/ w;
-                                                             ^" in let final core::int #t4 = new self::B::•().{self::B::w} in null;
+                                                             ^" in new self::B::•().{self::B::w} as{TypeError} core::String;
   i = new self::B::•().{self::B::x} as{TypeError} core::int;
   i = new self::B::•().{self::B::y};
-  i = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:32:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  i = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_correctly_on_multiple_variables_declared_together.dart:32:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   i = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::z*/ z;
-                                                             ^" in let final core::String #t6 = new self::B::•().{self::B::z} in null;
+                                                             ^" in new self::B::•().{self::B::z} as{TypeError} core::int;
   i = new self::B::•().{self::B::w};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.expect
index 960b613..cb3988f 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.expect
@@ -40,6 +40,9 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_G&Object&B
+    : super core::Object::•()
+    ;
 }
 class G extends self::_G&Object&B {
   field dynamic x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.transformed.expect
index e510049..c1822ed 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.direct.transformed.expect
@@ -40,7 +40,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   get x() → core::int
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
index d6798da..56851ab 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.outline.expect
@@ -34,6 +34,9 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_G&Object&B
+    : super core::Object::•()
+    ;
 }
 class G extends self::_G&Object&B {
   field dynamic x;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
index a4e97f8..fa8f9e8 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.expect
@@ -40,6 +40,9 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_G&Object&B
+    : super core::Object::•()
+    ;
 }
 class G extends self::_G&Object&B {
   field core::int x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
index ff2dee7..427dbc2 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_getter.dart.strong.transformed.expect
@@ -40,7 +40,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   get x() → core::int
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.expect
index b453e92..33c6ea7 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.expect
@@ -39,6 +39,9 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_G&Object&B
+    : super core::Object::•()
+    ;
 }
 class G extends self::_G&Object&B {
   field dynamic x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.transformed.expect
index c535525..bf18d3f 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.direct.transformed.expect
@@ -39,7 +39,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   set x(core::int value) → void {}
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
index 30994a5..f5711a5 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.outline.expect
@@ -34,6 +34,9 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_G&Object&B
+    : super core::Object::•()
+    ;
 }
 class G extends self::_G&Object&B {
   field dynamic x;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
index 3f84d31..2b77c7f 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.expect
@@ -39,6 +39,9 @@
     ;
 }
 abstract class _G&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_G&Object&B
+    : super core::Object::•()
+    ;
 }
 class G extends self::_G&Object&B {
   field core::int x = null;
diff --git a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
index 4d2a045..d81e504 100644
--- a/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_field_overrides_setter.dart.strong.transformed.expect
@@ -39,7 +39,7 @@
     ;
 }
 abstract class _G&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_G&Object&B
     : super core::Object::•()
     ;
   set x(core::int value) → void {}
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.expect
index c1990f1..2e6223f 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.expect
@@ -26,8 +26,8 @@
     ;
 }
 static field dynamic a = new self::A::•();
-static field dynamic b = new self::B::•(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-static field dynamic c1 = <dynamic>[throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))];
+static field dynamic b = new self::B::•(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+static field dynamic c1 = <dynamic>[let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))];
 static field dynamic c2 = const <dynamic>[];
 static field dynamic d = <dynamic, dynamic>{"a": "b"};
 static field dynamic e = let final dynamic #t1 = new self::A::•() in let final dynamic #t2 = #t1.x = 3 in #t1;
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.transformed.expect
index 9c6ee49..5140db2 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.direct.transformed.expect
@@ -16,8 +16,8 @@
     ;
 }
 static field dynamic a = new self::A::•();
-static field dynamic b = new self::B::•(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-static field dynamic c1 = <dynamic>[throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))];
+static field dynamic b = new self::B::•(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+static field dynamic c1 = <dynamic>[let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#x, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))];
 static field dynamic c2 = const <dynamic>[];
 static field dynamic d = <dynamic, dynamic>{"a": "b"};
 static field dynamic e = let final dynamic #t1 = new self::A::•() in let final dynamic #t2 = #t1.x = 3 in #t1;
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
index 144cd0f..f779922 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.expect
@@ -98,66 +98,66 @@
 static field core::int f = 2.{core::num::+}(3);
 static field core::int g = 3.{core::int::unary-}();
 static field self::B h = new self::A::•().{self::A::+}(3);
-static field dynamic i = let final dynamic #t3 = new self::A::•() in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:34:79: Error: The method 'unary-' isn't defined for the class 'test::A'.
+static field dynamic i = let final dynamic #t3 = new self::A::•() in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:34:79: Error: The method 'unary-' isn't defined for the class 'test::A'.
 Try correcting the name to the name of an existing method, or defining a method named 'unary-'.
 var /*@topType=dynamic*/ i = /*error:UNDEFINED_OPERATOR,info:DYNAMIC_INVOKE*/ -new A();
                                                                               ^";
 static field self::B j = null as self::B;
 static method test1() → dynamic {
-  self::a = let dynamic _ = null in let final dynamic #t4 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::A'.
+  self::a = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
   a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t5 = "hi" in null;
+                                   ^" in "hi" as{TypeError} self::A;
   self::a = new self::B::•(3);
-  self::b = let dynamic _ = null in let final dynamic #t6 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::B'.
+  self::b = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t7 = "hi" in null;
+                                   ^" in "hi" as{TypeError} self::B;
   self::b = new self::B::•(3);
   self::c1 = <dynamic>[];
-  self::c1 = let dynamic _ = null in let final dynamic #t8 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
+  self::c1 = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.
   c1 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};
-                                                                   ^" in let final dynamic #t9 = <dynamic, dynamic>{} in null;
+                                                                   ^" in <dynamic, dynamic>{} as{TypeError} core::List<dynamic>;
   self::c2 = <dynamic>[];
-  self::c2 = let dynamic _ = null in let final dynamic #t10 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
+  self::c2 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.
   c2 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};
-                                                                   ^" in let final dynamic #t11 = <dynamic, dynamic>{} in null;
+                                                                   ^" in <dynamic, dynamic>{} as{TypeError} core::List<dynamic>;
   self::d = <dynamic, dynamic>{};
-  self::d = let dynamic _ = null in let final dynamic #t12 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Map<dynamic, dynamic>'.
+  self::d = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Map<dynamic, dynamic>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Map<dynamic, dynamic>'.
   d = /*error:INVALID_ASSIGNMENT*/ 3;
-                                   ^" in let final dynamic #t13 = 3 in null;
+                                   ^" in 3 as{TypeError} core::Map<dynamic, dynamic>;
   self::e = new self::A::•();
-  self::e = let dynamic _ = null in let final dynamic #t14 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'test::A'.
+  self::e = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
   e = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};
-                                                                  ^" in let final dynamic #t15 = <dynamic, dynamic>{} in null;
+                                                                  ^" in <dynamic, dynamic>{} as{TypeError} self::A;
   self::f = 3;
-  self::f = let dynamic _ = null in let final dynamic #t16 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
+  self::f = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final dynamic #t17 = false in null;
+                                   ^" in false as{TypeError} core::int;
   self::g = 1;
-  self::g = let dynamic _ = null in let final dynamic #t18 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
+  self::g = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   g = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final dynamic #t19 = false in null;
-  self::h = let dynamic _ = null in let final dynamic #t20 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
+                                   ^" in false as{TypeError} core::int;
+  self::h = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   h = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final dynamic #t21 = false in null;
+                                   ^" in false as{TypeError} self::B;
   self::h = new self::B::•("b");
   self::i = false;
   self::j = new self::B::•("b");
-  self::j = let dynamic _ = null in let final dynamic #t22 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
+  self::j = let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   j = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final dynamic #t23 = false in null;
-  self::j = let dynamic _ = null in let final dynamic #t24 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'test::B'.
+                                   ^" in false as{TypeError} self::B;
+  self::j = let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   j = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ [];
-                                                         ^" in let final dynamic #t25 = <dynamic>[] in null;
+                                                         ^" in <dynamic>[] as{TypeError} self::B;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect
index 4707ec5..6987569 100644
--- a/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart.strong.transformed.expect
@@ -28,66 +28,66 @@
 static field core::int f = 2.{core::num::+}(3);
 static field core::int g = 3.{core::int::unary-}();
 static field self::B h = new self::A::•().{self::A::+}(3);
-static field dynamic i = let final self::A #t3 = new self::A::•() in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:34:79: Error: The method 'unary-' isn't defined for the class 'test::A'.
+static field dynamic i = let final self::A #t3 = new self::A::•() in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:34:79: Error: The method 'unary-' isn't defined for the class 'test::A'.
 Try correcting the name to the name of an existing method, or defining a method named 'unary-'.
 var /*@topType=dynamic*/ i = /*error:UNDEFINED_OPERATOR,info:DYNAMIC_INVOKE*/ -new A();
                                                                               ^";
 static field self::B j = null as self::B;
 static method test1() → dynamic {
-  self::a = let<BottomType> _ = null in let final dynamic #t4 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::A'.
+  self::a = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:38:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
   a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t5 = "hi" in null;
+                                   ^" in "hi" as{TypeError} self::A;
   self::a = new self::B::•(3);
-  self::b = let<BottomType> _ = null in let final dynamic #t6 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::B'.
+  self::b = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:40:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t7 = "hi" in null;
+                                   ^" in "hi" as{TypeError} self::B;
   self::b = new self::B::•(3);
   self::c1 = <dynamic>[];
-  self::c1 = let<BottomType> _ = null in let final dynamic #t8 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
+  self::c1 = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:43:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.
   c1 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};
-                                                                   ^" in let final core::Map<dynamic, dynamic> #t9 = <dynamic, dynamic>{} in null;
+                                                                   ^" in <dynamic, dynamic>{} as{TypeError} core::List<dynamic>;
   self::c2 = <dynamic>[];
-  self::c2 = let<BottomType> _ = null in let final dynamic #t10 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
+  self::c2 = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:45:68: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'dart.core::List<dynamic>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::List<dynamic>'.
   c2 = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};
-                                                                   ^" in let final core::Map<dynamic, dynamic> #t11 = <dynamic, dynamic>{} in null;
+                                                                   ^" in <dynamic, dynamic>{} as{TypeError} core::List<dynamic>;
   self::d = <dynamic, dynamic>{};
-  self::d = let<BottomType> _ = null in let final dynamic #t12 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Map<dynamic, dynamic>'.
+  self::d = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:47:36: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Map<dynamic, dynamic>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Map<dynamic, dynamic>'.
   d = /*error:INVALID_ASSIGNMENT*/ 3;
-                                   ^" in let final core::int #t13 = 3 in null;
+                                   ^" in 3 as{TypeError} core::Map<dynamic, dynamic>;
   self::e = new self::A::•();
-  self::e = let<BottomType> _ = null in let final dynamic #t14 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'test::A'.
+  self::e = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:49:67: Error: A value of type 'dart.core::Map<dynamic, dynamic>' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
   e = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic, dynamic*/ {};
-                                                                  ^" in let final core::Map<dynamic, dynamic> #t15 = <dynamic, dynamic>{} in null;
+                                                                  ^" in <dynamic, dynamic>{} as{TypeError} self::A;
   self::f = 3;
-  self::f = let<BottomType> _ = null in let final dynamic #t16 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
+  self::f = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:51:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   f = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final core::bool #t17 = false in null;
+                                   ^" in false as{TypeError} core::int;
   self::g = 1;
-  self::g = let<BottomType> _ = null in let final dynamic #t18 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
+  self::g = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:53:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   g = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final core::bool #t19 = false in null;
-  self::h = let<BottomType> _ = null in let final dynamic #t20 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
+                                   ^" in false as{TypeError} core::int;
+  self::h = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:54:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   h = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final core::bool #t21 = false in null;
+                                   ^" in false as{TypeError} self::B;
   self::h = new self::B::•("b");
   self::i = false;
   self::j = new self::B::•("b");
-  self::j = let<BottomType> _ = null in let final dynamic #t22 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
+  self::j = let final<BottomType> #t13 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:58:36: Error: A value of type 'dart.core::bool' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   j = /*error:INVALID_ASSIGNMENT*/ false;
-                                   ^" in let final core::bool #t23 = false in null;
-  self::j = let<BottomType> _ = null in let final dynamic #t24 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'test::B'.
+                                   ^" in false as{TypeError} self::B;
+  self::j = let final<BottomType> #t14 = invalid-expression "pkg/front_end/testcases/inference/infer_from_complex_expressions_if_outer_most_value_is_precise.dart:59:58: Error: A value of type 'dart.core::List<dynamic>' can't be assigned to a variable of type 'test::B'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B'.
   j = /*error:INVALID_ASSIGNMENT*/ /*@typeArgs=dynamic*/ [];
-                                                         ^" in let final core::List<dynamic> #t25 = <dynamic>[] in null;
+                                                         ^" in <dynamic>[] as{TypeError} self::B;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.expect
index 7e3bee0..a43d328 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.expect
@@ -17,13 +17,13 @@
 
 static field core::int y = inf::x;
 static method test1() → dynamic {
-  inf::x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  inf::x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t2 = "hi" in null;
-  self::y = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:14:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                   ^" in "hi" as{TypeError} core::int;
+  self::y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:14:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   y = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t4 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.transformed.expect
index 5889b18..3f2a51c4 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart.strong.transformed.expect
@@ -5,13 +5,13 @@
 
 static field core::int y = inf::x;
 static method test1() → dynamic {
-  inf::x = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  inf::x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t2 = "hi" in null;
-  self::y = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:14:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                   ^" in "hi" as{TypeError} core::int;
+  self::y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag.dart:14:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   y = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t4 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect
index 394d994..0e683ae 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.expect
@@ -22,13 +22,13 @@
     ;
 }
 static method test1() → dynamic {
-  inf::A::x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  inf::A::x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   A.x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final dynamic #t2 = "hi" in null;
-  self::B::y = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                     ^" in "hi" as{TypeError} core::int;
+  self::B::y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   B.y = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final dynamic #t4 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect
index 72a6817..2faada5 100644
--- a/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart.strong.transformed.expect
@@ -10,13 +10,13 @@
     ;
 }
 static method test1() → dynamic {
-  inf::A::x = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  inf::A::x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   A.x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final core::String #t2 = "hi" in null;
-  self::B::y = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                                     ^" in "hi" as{TypeError} core::int;
+  self::B::y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_from_variables_in_non_cycle_imports_with_flag2.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   B.y = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final core::String #t4 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.expect b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.expect
index 45294a7..22fa159 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.expect
@@ -17,7 +17,7 @@
 
 static method test() → dynamic {
   function f() → dynamic
-    return throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#g, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    return let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#g, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   {
     invalid-expression "pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart:14:3: Error: Can't declare 'g' because it was already used in this scope.
   g() => 0;
diff --git a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.transformed.expect
index 9071805..7a403de 100644
--- a/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart.direct.transformed.expect
@@ -4,7 +4,7 @@
 
 static method test() → dynamic {
   function f() → dynamic
-    return throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#g, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    return let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#g, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
   {
     invalid-expression "pkg/front_end/testcases/inference/infer_local_function_referenced_before_declaration.dart:14:3: Error: Can't declare 'g' because it was already used in this scope.
   g() => 0;
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect
index 4d381de..ee619f7 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.expect
@@ -23,10 +23,10 @@
     return 3;
 }
 static method foo() → dynamic {
-  core::String y = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::x*/ x;
-                                                                    ^" in let final dynamic #t2 = new self::B::•().{self::B::x} in null;
+                                                                    ^" in new self::B::•().{self::B::x} as{TypeError} core::String;
   core::int z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect
index 966e4b4..876c070 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart.strong.transformed.expect
@@ -16,10 +16,10 @@
     return 3;
 }
 static method foo() → dynamic {
-  core::String y = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields2.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::x*/ x;
-                                                                    ^" in let final core::int #t2 = new self::B::•().{self::B::x} in null;
+                                                                    ^" in new self::B::•().{self::B::x} as{TypeError} core::String;
   core::int z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect
index bb01fc3..54c5948 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.expect
@@ -23,10 +23,10 @@
     return 3;
 }
 static method foo() → dynamic {
-  core::String y = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::x*/ x;
-                                                                    ^" in let final dynamic #t2 = new self::B::•().{self::B::x} in null;
+                                                                    ^" in new self::B::•().{self::B::x} as{TypeError} core::String;
   core::int z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect
index 451094c..146b3b8 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart.strong.transformed.expect
@@ -16,10 +16,10 @@
     return 3;
 }
 static method foo() → dynamic {
-  core::String y = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_overridden_fields4.dart:17:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::x*/ x;
-                                                                    ^" in let final core::int #t2 = new self::B::•().{self::B::x} in null;
+                                                                    ^" in new self::B::•().{self::B::x} as{TypeError} core::String;
   core::int z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.expect
index 67fece6..87bfaa8 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.expect
@@ -11,9 +11,9 @@
 
 static method test1() → dynamic {
   core::int x = 3;
-  x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t2 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.transformed.expect
index efe4122..76e056d 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var.dart.strong.transformed.expect
@@ -4,9 +4,9 @@
 
 static method test1() → dynamic {
   core::int x = 3;
-  x = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t2 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.expect
index 71ad907..4bcb3e9 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.expect
@@ -11,9 +11,9 @@
 
 static method test2() → dynamic {
   core::int x = 3;
-  x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var2.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var2.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t2 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.transformed.expect
index 93650c3..326869e 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var2.dart.strong.transformed.expect
@@ -4,9 +4,9 @@
 
 static method test2() → dynamic {
   core::int x = 3;
-  x = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var2.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var2.dart:10:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t2 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect
index af78a18..07ab628 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.expect
@@ -28,22 +28,22 @@
     ;
   method test1() → dynamic {
     core::int a = this.{self::A::x};
-    a = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:13:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    a = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:13:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final dynamic #t2 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
     a = 3;
     core::int b = this.{self::A::y};
-    b = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    b = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final dynamic #t4 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
     b = 4;
     core::int c = this.{self::A::z};
-    c = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:19:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    c = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:19:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     c = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final dynamic #t6 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
     c = 4;
   }
 }
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect
index 3df085f..1c23586 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart.strong.transformed.expect
@@ -11,22 +11,22 @@
     ;
   method test1() → dynamic {
     core::int a = this.{self::A::x};
-    a = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:13:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    a = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:13:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final core::String #t2 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
     a = 3;
     core::int b = this.{self::A::y};
-    b = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    b = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:16:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final core::String #t4 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
     b = 4;
     core::int c = this.{self::A::z};
-    c = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:19:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    c = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_field.dart:19:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     c = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                     ^" in let final core::String #t6 = "hi" in null;
+                                     ^" in "hi" as{TypeError} core::int;
     c = 4;
   }
 }
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.expect
index 21d3ddd..cdf82c5 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.expect
@@ -24,22 +24,22 @@
 static final field core::int z = 42;
 static method test1() → dynamic {
   core::int a = self::x;
-  a = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:12:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  a = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:12:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t2 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
   a = 3;
   core::int b = self::y;
-  b = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:15:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  b = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:15:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t4 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
   b = 4;
   core::int c = self::z;
-  c = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:18:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  c = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:18:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   c = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final dynamic #t6 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
   c = 4;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.transformed.expect
index 6f715a0..36eda3f 100644
--- a/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart.strong.transformed.expect
@@ -7,22 +7,22 @@
 static final field core::int z = 42;
 static method test1() → dynamic {
   core::int a = self::x;
-  a = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:12:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  a = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:12:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   a = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t2 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
   a = 3;
   core::int b = self::y;
-  b = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:15:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  b = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:15:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   b = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t4 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
   b = 4;
   core::int c = self::z;
-  c = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:18:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  c = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_type_on_var_from_top_level.dart:18:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   c = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                   ^" in let final core::String #t6 = "hi" in null;
+                                   ^" in "hi" as{TypeError} core::int;
   c = 4;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect
index 5da8202..006b968 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.expect
@@ -26,10 +26,10 @@
 }
 static method foo() → dynamic {
   core::int y = new self::C::•().{self::C::x};
-  core::String z = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String z = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String z = /*error:INVALID_ASSIGNMENT*/ new C(). /*@target=C::x*/ x;
-                                                                    ^" in let final dynamic #t2 = new self::C::•().{self::C::x} in null;
+                                                                    ^" in new self::C::•().{self::C::x} as{TypeError} core::String;
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect
index fb30f31..16a77f1 100644
--- a/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart.strong.transformed.expect
@@ -19,10 +19,10 @@
 }
 static method foo() → dynamic {
   core::int y = new self::C::•().{self::C::x};
-  core::String z = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String z = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_type_regardless_of_declaration_order_or_cycles.dart:20:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String z = /*error:INVALID_ASSIGNMENT*/ new C(). /*@target=C::x*/ x;
-                                                                    ^" in let final core::int #t2 = new self::C::•().{self::C::x} in null;
+                                                                    ^" in new self::C::•().{self::C::x} as{TypeError} core::String;
 }
 static method main() → dynamic {
   self::foo();
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect
index ff997cc..1b089f4 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.expect
@@ -28,16 +28,16 @@
   get x() → core::int
     return 3;
   get w() → core::int
-    return let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:15:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:15:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   get /*@topType=int*/ w => /*error:RETURN_OF_INVALID_TYPE*/ \"hello\";
-                                                             ^" in let final dynamic #t2 = "hello" in null;
+                                                             ^" in "hello" as{TypeError} core::int;
 }
 static method foo() → dynamic {
-  core::String y = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::x*/ x;
-                                                                    ^" in let final dynamic #t4 = new self::B::•().{self::B::x} in null;
+                                                                    ^" in new self::B::•().{self::B::x} as{TypeError} core::String;
   core::int z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect
index 03e0fca..15ab94b 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart.strong.transformed.expect
@@ -16,16 +16,16 @@
   get x() → core::int
     return 3;
   get w() → core::int
-    return let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:15:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:15:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   get /*@topType=int*/ w => /*error:RETURN_OF_INVALID_TYPE*/ \"hello\";
-                                                             ^" in let final core::String #t2 = "hello" in null;
+                                                             ^" in "hello" as{TypeError} core::int;
 }
 static method foo() → dynamic {
-  core::String y = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+  core::String y = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_3.dart:19:69: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   String y = /*error:INVALID_ASSIGNMENT*/ new B(). /*@target=B::x*/ x;
-                                                                    ^" in let final core::int #t4 = new self::B::•().{self::B::x} in null;
+                                                                    ^" in new self::B::•().{self::B::x} as{TypeError} core::String;
   core::int z = new self::B::•().{self::B::x};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect
index fb3dde7..7e26f47 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.expect
@@ -24,10 +24,10 @@
     return this.{self::B::y};
 }
 static method foo() → dynamic {
-  core::int y = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart:18:74: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  core::int y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart:18:74: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   int y = /*error:INVALID_ASSIGNMENT*/ new B<String>(). /*@target=B::x*/ x;
-                                                                         ^" in let final dynamic #t2 = new self::B::•<core::String>().{self::B::x} in null;
+                                                                         ^" in new self::B::•<core::String>().{self::B::x} as{TypeError} core::int;
   core::String z = new self::B::•<core::String>().{self::B::x};
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect
index 561f5a2..8e951e7 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart.strong.transformed.expect
@@ -17,10 +17,10 @@
     return this.{self::B::y};
 }
 static method foo() → dynamic {
-  core::int y = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart:18:74: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  core::int y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_4.dart:18:74: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   int y = /*error:INVALID_ASSIGNMENT*/ new B<String>(). /*@target=B::x*/ x;
-                                                                         ^" in let final core::String #t2 = new self::B::•<core::String>().{self::B::x} in null;
+                                                                         ^" in new self::B::•<core::String>().{self::B::x} as{TypeError} core::int;
   core::String z = new self::B::•<core::String>().{self::B::x};
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect
index 80d67c3..102ec33 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.expect
@@ -36,10 +36,10 @@
   method m(dynamic a, (dynamic, self::B::E) → dynamic f) → core::String {}
 }
 static method foo() → dynamic {
-  core::int y = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart:30:26: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  core::int y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart:30:26: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       . /*@target=B::m*/ m(null, null);
-                         ^" in let final dynamic #t2 = new self::B::•<dynamic>().{self::B::m}(null, null) in null;
+                         ^" in new self::B::•<dynamic>().{self::B::m}(null, null) as{TypeError} core::int;
   core::String z = new self::B::•<dynamic>().{self::B::m}(null, null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect
index 4ab82e5..2ca699b 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart.strong.transformed.expect
@@ -29,10 +29,10 @@
   method m(dynamic a, (dynamic, self::B::E) → dynamic f) → core::String {}
 }
 static method foo() → dynamic {
-  core::int y = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart:30:26: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  core::int y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_5.dart:30:26: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       . /*@target=B::m*/ m(null, null);
-                         ^" in let final core::String #t2 = new self::B::•<dynamic>().{self::B::m}(null, null) in null;
+                         ^" in new self::B::•<dynamic>().{self::B::m}(null, null) as{TypeError} core::int;
   core::String z = new self::B::•<dynamic>().{self::B::m}(null, null);
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect
index e44c5b7..9c11d3e 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.expect
@@ -31,10 +31,10 @@
   method m(dynamic a, (dynamic, core::int) → dynamic f) → self::A<self::B::E> {}
 }
 static method foo() → dynamic {
-  core::int y = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:30: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  core::int y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:30: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       . /*@target=A::value*/ value;
-                             ^" in let final dynamic #t2 = new self::B::•<core::String>().{self::B::m}(null, null).{self::A::value} in null;
+                             ^" in new self::B::•<core::String>().{self::B::m}(null, null).{self::A::value} as{TypeError} core::int;
   core::String z = new self::B::•<core::String>().{self::B::m}(null, null).{self::A::value};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect
index 6038c2c..49312eb 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart.strong.transformed.expect
@@ -24,10 +24,10 @@
   method m(dynamic a, (dynamic, core::int) → dynamic f) → self::A<self::B::E> {}
 }
 static method foo() → dynamic {
-  core::int y = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:30: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  core::int y = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_generic_instantiations_in_library_cycle.dart:30:30: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       . /*@target=A::value*/ value;
-                             ^" in let final core::String #t2 = new self::B::•<core::String>().{self::B::m}(null, null).{self::A::value} in null;
+                             ^" in new self::B::•<core::String>().{self::B::m}(null, null).{self::A::value} as{TypeError} core::int;
   core::String z = new self::B::•<core::String>().{self::B::m}(null, null).{self::A::value};
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect
index 020af4b..112fadb 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.expect
@@ -40,10 +40,10 @@
     ;
   method foo(generic-covariant-impl self::Bar::T t) → void {
     for (core::String i in t) {
-      core::int x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:15:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+      core::int x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:15:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final dynamic #t2 = i in null;
+                                           ^" in i as{TypeError} core::int;
     }
   }
 }
@@ -53,10 +53,10 @@
     ;
   method foo(generic-covariant-impl self::Baz::S t) → void {
     for (self::Baz::T i in t) {
-      core::int x = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:23:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
+      core::int x = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:23:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final dynamic #t4 = i in null;
+                                           ^" in i as{TypeError} core::int;
       self::Baz::T y = i;
     }
   }
@@ -64,40 +64,40 @@
 static method test() → dynamic {
   core::List<self::Foo> list = <self::Foo>[];
   for (self::Foo x in list) {
-    core::String y = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:32:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+    core::String y = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:32:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     String y = /*error:INVALID_ASSIGNMENT*/ x;
-                                            ^" in let final dynamic #t6 = x in null;
+                                            ^" in x as{TypeError} core::String;
   }
   for (dynamic x in list) {
     core::String y = x as{TypeError} core::String;
   }
-  for (final self::Foo #t7 in list) {
-    core::String x = let dynamic _ = null in let final dynamic #t8 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:39:15: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+  for (final self::Foo #t4 in list) {
+    core::String x = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:39:15: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the variable.
   for (String x in /*error:FOR_IN_OF_INVALID_ELEMENT_TYPE*/ list) {
-              ^" in let final dynamic #t9 = #t7 in null;
+              ^" in #t4 as{TypeError} core::String;
     core::String y = x;
   }
   dynamic z;
-  for (final self::Foo #t10 in list) {
-    z = #t10;
+  for (final self::Foo #t6 in list) {
+    z = #t6;
     core::String y = z as{TypeError} core::String;
   }
   core::Iterable<dynamic> iter = list;
-  for (final dynamic #t11 in iter) {
-    self::Foo x = #t11 as{TypeError} self::Foo;
+  for (final dynamic #t7 in iter) {
+    self::Foo x = #t7 as{TypeError} self::Foo;
     self::Foo y = x;
   }
   dynamic iter2 = list;
-  for (final dynamic #t12 in iter2 as{TypeError} core::Iterable<dynamic>) {
-    self::Foo x = #t12 as{TypeError} self::Foo;
+  for (final dynamic #t8 in iter2 as{TypeError} core::Iterable<dynamic>) {
+    self::Foo x = #t8 as{TypeError} self::Foo;
     self::Foo y = x;
   }
   core::Map<core::String, self::Foo> map = <core::String, self::Foo>{};
-  for (dynamic x in let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:60:68: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
+  for (dynamic x in let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:60:68: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
   for (var /*@type=dynamic*/ x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
-                                                                   ^" in let final dynamic #t14 = map in null) {
+                                                                   ^" in map as{TypeError} core::Iterable<dynamic>) {
     core::String y = x as{TypeError} core::String;
   }
   for (core::String x in map.{core::Map::keys}) {
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect
index 08d6327..83284f9 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart.strong.transformed.expect
@@ -14,10 +14,10 @@
     ;
   method foo(generic-covariant-impl self::Bar::T t) → void {
     for (core::String i in t) {
-      core::int x = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:15:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+      core::int x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:15:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final core::String #t2 = i in null;
+                                           ^" in i as{TypeError} core::int;
     }
   }
 }
@@ -27,10 +27,10 @@
     ;
   method foo(generic-covariant-impl self::Baz::S t) → void {
     for (self::Baz::T i in t) {
-      core::int x = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:23:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
+      core::int x = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:23:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final self::Baz::T #t4 = i in null;
+                                           ^" in i as{TypeError} core::int;
       self::Baz::T y = i;
     }
   }
@@ -38,40 +38,40 @@
 static method test() → dynamic {
   core::List<self::Foo> list = <self::Foo>[];
   for (self::Foo x in list) {
-    core::String y = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:32:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+    core::String y = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:32:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     String y = /*error:INVALID_ASSIGNMENT*/ x;
-                                            ^" in let final self::Foo #t6 = x in null;
+                                            ^" in x as{TypeError} core::String;
   }
   for (dynamic x in list) {
     core::String y = x as{TypeError} core::String;
   }
-  for (final self::Foo #t7 in list) {
-    core::String x = let<BottomType> _ = null in let final dynamic #t8 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:39:15: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+  for (final self::Foo #t4 in list) {
+    core::String x = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:39:15: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the variable.
   for (String x in /*error:FOR_IN_OF_INVALID_ELEMENT_TYPE*/ list) {
-              ^" in let final self::Foo #t9 = #t7 in null;
+              ^" in #t4 as{TypeError} core::String;
     core::String y = x;
   }
   dynamic z;
-  for (final self::Foo #t10 in list) {
-    z = #t10;
+  for (final self::Foo #t6 in list) {
+    z = #t6;
     core::String y = z as{TypeError} core::String;
   }
   core::Iterable<dynamic> iter = list;
-  for (final dynamic #t11 in iter) {
-    self::Foo x = #t11 as{TypeError} self::Foo;
+  for (final dynamic #t7 in iter) {
+    self::Foo x = #t7 as{TypeError} self::Foo;
     self::Foo y = x;
   }
   dynamic iter2 = list;
-  for (final dynamic #t12 in iter2 as{TypeError} core::Iterable<dynamic>) {
-    self::Foo x = #t12 as{TypeError} self::Foo;
+  for (final dynamic #t8 in iter2 as{TypeError} core::Iterable<dynamic>) {
+    self::Foo x = #t8 as{TypeError} self::Foo;
     self::Foo y = x;
   }
   core::Map<core::String, self::Foo> map = <core::String, self::Foo>{};
-  for (dynamic x in let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:60:68: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
+  for (dynamic x in let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop.dart:60:68: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
   for (var /*@type=dynamic*/ x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
-                                                                   ^" in let final core::Map<core::String, self::Foo> #t14 = map in null) {
+                                                                   ^" in map as{TypeError} core::Iterable<dynamic>) {
     core::String y = x as{TypeError} core::String;
   }
   for (core::String x in map.{core::Map::keys}) {
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect
index d47a9c1..6da61a8c 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.expect
@@ -41,10 +41,10 @@
     ;
   method foo(generic-covariant-impl self::Bar::T t) → dynamic async {
     await for (core::String i in t) {
-      core::int x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+      core::int x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final dynamic #t2 = i in null;
+                                           ^" in i as{TypeError} core::int;
     }
   }
 }
@@ -54,10 +54,10 @@
     ;
   method foo(generic-covariant-impl self::Baz::S t) → dynamic async {
     await for (self::Baz::T i in t) {
-      core::int x = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
+      core::int x = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final dynamic #t4 = i in null;
+                                           ^" in i as{TypeError} core::int;
       self::Baz::T y = i;
     }
   }
@@ -69,40 +69,40 @@
 static method test() → dynamic async {
   self::MyStream<self::Foo> myStream = self::MyStream::•<self::Foo>();
   await for (self::Foo x in myStream) {
-    core::String y = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+    core::String y = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     String y = /*error:INVALID_ASSIGNMENT*/ x;
-                                            ^" in let final dynamic #t6 = x in null;
+                                            ^" in x as{TypeError} core::String;
   }
   await for (dynamic x in myStream) {
     core::String y = x as{TypeError} core::String;
   }
-  await for (final self::Foo #t7 in myStream) {
-    core::String x = let dynamic _ = null in let final dynamic #t8 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+  await for (final self::Foo #t4 in myStream) {
+    core::String x = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the variable.
   await for (String x in /*error:FOR_IN_OF_INVALID_ELEMENT_TYPE*/ myStream) {
-                    ^" in let final dynamic #t9 = #t7 in null;
+                    ^" in #t4 as{TypeError} core::String;
     core::String y = x;
   }
   dynamic z;
-  await for (final self::Foo #t10 in myStream) {
-    z = #t10;
+  await for (final self::Foo #t6 in myStream) {
+    z = #t6;
     core::String y = z as{TypeError} core::String;
   }
   asy::Stream<dynamic> stream = myStream;
-  await for (final dynamic #t11 in stream) {
-    self::Foo x = #t11 as{TypeError} self::Foo;
+  await for (final dynamic #t7 in stream) {
+    self::Foo x = #t7 as{TypeError} self::Foo;
     self::Foo y = x;
   }
   dynamic stream2 = myStream;
-  await for (final dynamic #t12 in stream2 as{TypeError} asy::Stream<dynamic>) {
-    self::Foo x = #t12 as{TypeError} self::Foo;
+  await for (final dynamic #t8 in stream2 as{TypeError} asy::Stream<dynamic>) {
+    self::Foo x = #t8 as{TypeError} self::Foo;
     self::Foo y = x;
   }
   core::Map<core::String, self::Foo> map = <core::String, self::Foo>{};
-  await for (dynamic x in let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:66:74: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
+  await for (dynamic x in let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:66:74: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
   await for (var /*@type=dynamic*/ x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
-                                                                         ^" in let final dynamic #t14 = map in null) {
+                                                                         ^" in map as{TypeError} asy::Stream<dynamic>) {
     core::String y = x as{TypeError} core::String;
   }
 }
diff --git a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect
index 8cf054d..9fb1a36 100644
--- a/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart.strong.transformed.expect
@@ -42,10 +42,10 @@
                 if(:result) {
                   core::String i = :for-iterator.{asy::_StreamIterator::current};
                   {
-                    core::int x = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+                    core::int x = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:17:44: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final core::String #t4 = i in null;
+                                           ^" in i as{TypeError} core::int;
                   }
                 }
                 else
@@ -53,7 +53,7 @@
               }
             finally
               if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-                [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t4 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
                 :result;
               }
           }
@@ -99,15 +99,15 @@
             try
               #L4:
               while (true) {
-                dynamic #t6 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-                [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+                dynamic #t5 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+                [yield] let dynamic #t6 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
                 if(:result) {
                   self::Baz::T i = :for-iterator.{asy::_StreamIterator::current};
                   {
-                    core::int x = let<BottomType> _ = null in let final dynamic #t8 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
+                    core::int x = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:25:44: Error: A value of type 'test::Baz::T' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       int x = /*error:INVALID_ASSIGNMENT*/ i;
-                                           ^" in let final self::Baz::T #t9 = i in null;
+                                           ^" in i as{TypeError} core::int;
                     self::Baz::T y = i;
                   }
                 }
@@ -116,7 +116,7 @@
               }
             finally
               if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-                [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+                [yield] let dynamic #t8 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
                 :result;
               }
           }
@@ -163,15 +163,15 @@
           try
             #L6:
             while (true) {
-              dynamic #t11 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t9 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t10 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
                 self::Foo x = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  core::String y = let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+                  core::String y = let final<BottomType> #t11 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:38:45: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
     String y = /*error:INVALID_ASSIGNMENT*/ x;
-                                            ^" in let final self::Foo #t14 = x in null;
+                                            ^" in x as{TypeError} core::String;
                 }
               }
               else
@@ -179,7 +179,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -191,8 +191,8 @@
           try
             #L7:
             while (true) {
-              dynamic #t16 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t13 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {
@@ -204,7 +204,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t18 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -216,15 +216,15 @@
           try
             #L8:
             while (true) {
-              dynamic #t19 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t16 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final self::Foo #t21 = :for-iterator.{asy::_StreamIterator::current};
+                final self::Foo #t18 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  core::String x = let<BottomType> _ = null in let final dynamic #t22 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
+                  core::String x = let final<BottomType> #t19 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:45:21: Error: A value of type 'test::Foo' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the variable.
   await for (String x in /*error:FOR_IN_OF_INVALID_ELEMENT_TYPE*/ myStream) {
-                    ^" in let final self::Foo #t23 = #t21 in null;
+                    ^" in #t18 as{TypeError} core::String;
                   core::String y = x;
                 }
               }
@@ -233,7 +233,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -246,12 +246,12 @@
           try
             #L9:
             while (true) {
-              dynamic #t25 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t26 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t21 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final self::Foo #t27 = :for-iterator.{asy::_StreamIterator::current};
+                final self::Foo #t23 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  z = #t27;
+                  z = #t23;
                   core::String y = z as{TypeError} core::String;
                 }
               }
@@ -260,7 +260,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t28 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -273,12 +273,12 @@
           try
             #L10:
             while (true) {
-              dynamic #t29 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t30 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t25 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t26 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final dynamic #t31 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t27 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  self::Foo x = #t31 as{TypeError} self::Foo;
+                  self::Foo x = #t27 as{TypeError} self::Foo;
                   self::Foo y = x;
                 }
               }
@@ -287,7 +287,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t32 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t28 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
@@ -300,12 +300,12 @@
           try
             #L11:
             while (true) {
-              dynamic #t33 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t34 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t29 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t30 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final dynamic #t35 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t31 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  self::Foo x = #t35 as{TypeError} self::Foo;
+                  self::Foo x = #t31 as{TypeError} self::Foo;
                   self::Foo y = x;
                 }
               }
@@ -314,23 +314,23 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t36 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t32 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
         core::Map<core::String, self::Foo> map = <core::String, self::Foo>{};
         {
-          dynamic :stream = let<BottomType> _ = null in let final dynamic #t37 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:66:74: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
+          dynamic :stream = let final<BottomType> #t33 = invalid-expression "pkg/front_end/testcases/inference/infer_types_on_loop_indices_for_each_loop_async.dart:66:74: Error: The type 'dart.core::Map<dart.core::String, test::Foo>' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
   await for (var /*@type=dynamic*/ x in /*error:FOR_IN_OF_INVALID_TYPE*/ map) {
-                                                                         ^" in let final core::Map<core::String, self::Foo> #t38 = map in null;
+                                                                         ^" in map as{TypeError} asy::Stream<dynamic>;
           asy::_asyncStarListenHelper(:stream, :async_op);
           asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
           const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
           try
             #L12:
             while (true) {
-              dynamic #t39 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t40 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t34 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t35 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
                 dynamic x = :for-iterator.{asy::_StreamIterator::current};
                 {
@@ -342,7 +342,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t41 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t36 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
index e19f20c..490375b 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.expect
@@ -11,10 +11,10 @@
 
 class Foo extends core::Object {
   field core::int x = 1;
-  constructor •([core::int x = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  constructor •([core::int x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   Foo([this.x = /*error:INVALID_ASSIGNMENT*/ \"1\"]);
-                                             ^" in let final dynamic #t2 = "1" in null]) → self::Foo
+                                             ^" in "1" as{TypeError} core::int]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
index 15eee28..8e2e655 100644
--- a/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart.strong.transformed.expect
@@ -4,10 +4,10 @@
 
 class Foo extends core::Object {
   field core::int x = 1;
-  constructor •([core::int x = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  constructor •([core::int x = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/inferred_initializing_formal_checks_default_value.dart:10:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   Foo([this.x = /*error:INVALID_ASSIGNMENT*/ \"1\"]);
-                                             ^" in let final core::String #t2 = "1" in null]) → self::Foo
+                                             ^" in "1" as{TypeError} core::int]) → self::Foo
     : self::Foo::x = x, super core::Object::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/list_literals.dart.strong.expect b/pkg/front_end/testcases/inference/list_literals.dart.strong.expect
index 1cd0d49..a8da79f 100644
--- a/pkg/front_end/testcases/inference/list_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/list_literals.dart.strong.expect
@@ -21,23 +21,23 @@
 
 static method test1() → dynamic {
   core::List<core::int> x = <core::int>[1, 2, 3];
-  x.{core::List::add}(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:10:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+  x.{core::List::add}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:10:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in let final dynamic #t2 = "hi" in null);
-  x.{core::List::add}(let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:11:71: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+                                                                      ^" in "hi" as{TypeError} core::int);
+  x.{core::List::add}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:11:71: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                      ^" in let final dynamic #t4 = 4.0 in null);
+                                                                      ^" in 4.0 as{TypeError} core::int);
   x.{core::List::add}(4);
   core::List<core::num> y = x;
 }
 static method test2() → dynamic {
   core::List<core::num> x = <core::num>[1, 2.0, 3];
-  x.{core::List::add}(let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:18:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
+  x.{core::List::add}(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:18:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::num'.
   x. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in let final dynamic #t6 = "hi" in null);
+                                                                      ^" in "hi" as{TypeError} core::num);
   x.{core::List::add}(4.0);
   core::List<core::int> y = x as{TypeError} core::List<core::int>;
 }
diff --git a/pkg/front_end/testcases/inference/list_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/list_literals.dart.strong.transformed.expect
index c91995d..e30fbb0 100644
--- a/pkg/front_end/testcases/inference/list_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/list_literals.dart.strong.transformed.expect
@@ -4,23 +4,23 @@
 
 static method test1() → dynamic {
   core::List<core::int> x = <core::int>[1, 2, 3];
-  x.{core::List::add}(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:10:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+  x.{core::List::add}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:10:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in let final core::String #t2 = "hi" in null);
-  x.{core::List::add}(let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:11:71: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+                                                                      ^" in "hi" as{TypeError} core::int);
+  x.{core::List::add}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:11:71: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                      ^" in let final core::double #t4 = 4.0 in null);
+                                                                      ^" in 4.0 as{TypeError} core::int);
   x.{core::List::add}(4);
   core::List<core::num> y = x;
 }
 static method test2() → dynamic {
   core::List<core::num> x = <core::num>[1, 2.0, 3];
-  x.{core::List::add}(let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:18:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
+  x.{core::List::add}(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals.dart:18:71: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::num'.
   x. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                      ^" in let final core::String #t6 = "hi" in null);
+                                                                      ^" in "hi" as{TypeError} core::num);
   x.{core::List::add}(4.0);
   core::List<core::int> y = x as{TypeError} core::List<core::int>;
 }
diff --git a/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.expect b/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.expect
index dadf046..270ead7 100644
--- a/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.expect
@@ -22,22 +22,22 @@
 static field core::List<core::int> x1 = <core::int>[1, 2, 3];
 static field core::List<core::num> x2 = <core::num>[1, 2.0, 3];
 static method test1() → dynamic {
-  self::x1.{core::List::add}(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:10:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+  self::x1.{core::List::add}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:10:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x1. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                       ^" in let final dynamic #t2 = "hi" in null);
-  self::x1.{core::List::add}(let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:11:72: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+                                                                       ^" in "hi" as{TypeError} core::int);
+  self::x1.{core::List::add}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:11:72: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x1. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                       ^" in let final dynamic #t4 = 4.0 in null);
+                                                                       ^" in 4.0 as{TypeError} core::int);
   self::x1.{core::List::add}(4);
   core::List<core::num> y = self::x1;
 }
 static method test2() → dynamic {
-  self::x2.{core::List::add}(let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:18:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
+  self::x2.{core::List::add}(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:18:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::num'.
   x2. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                       ^" in let final dynamic #t6 = "hi" in null);
+                                                                       ^" in "hi" as{TypeError} core::num);
   self::x2.{core::List::add}(4.0);
   core::List<core::int> y = self::x2 as{TypeError} core::List<core::int>;
 }
diff --git a/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.transformed.expect
index b26fec1..c6f9e28 100644
--- a/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/list_literals_top_level.dart.strong.transformed.expect
@@ -5,22 +5,22 @@
 static field core::List<core::int> x1 = <core::int>[1, 2, 3];
 static field core::List<core::num> x2 = <core::num>[1, 2.0, 3];
 static method test1() → dynamic {
-  self::x1.{core::List::add}(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:10:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
+  self::x1.{core::List::add}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:10:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x1. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                       ^" in let final core::String #t2 = "hi" in null);
-  self::x1.{core::List::add}(let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:11:72: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
+                                                                       ^" in "hi" as{TypeError} core::int);
+  self::x1.{core::List::add}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:11:72: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'dart.core::int'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::int'.
   x1. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0);
-                                                                       ^" in let final core::double #t4 = 4.0 in null);
+                                                                       ^" in 4.0 as{TypeError} core::int);
   self::x1.{core::List::add}(4);
   core::List<core::num> y = self::x1;
 }
 static method test2() → dynamic {
-  self::x2.{core::List::add}(let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:18:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
+  self::x2.{core::List::add}(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/list_literals_top_level.dart:18:72: Error: The argument type 'dart.core::String' can't be assigned to the parameter type 'dart.core::num'.
 Try changing the type of the parameter, or casting the argument to 'dart.core::num'.
   x2. /*@target=List::add*/ add(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi');
-                                                                       ^" in let final core::String #t6 = "hi" in null);
+                                                                       ^" in "hi" as{TypeError} core::num);
   self::x2.{core::List::add}(4.0);
   core::List<core::int> y = self::x2 as{TypeError} core::List<core::int>;
 }
diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.expect
index 2841354..01ba56b 100644
--- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.expect
@@ -16,10 +16,10 @@
     return (core::int x) → core::int => x;
   }
   function b() → asy::Future<(core::int) → core::int> async {
-    return let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:36: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
+    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:36: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
     return /*@returnType=dynamic*/ (/*@type=dynamic*/ x) => x;
-                                   ^" in let final dynamic #t2 = (dynamic x) → dynamic => x in null;
+                                   ^" in ((dynamic x) → dynamic => x) as{TypeError} asy::FutureOr<(core::int) → core::int>;
   }
   function c() → core::Iterable<(core::int) → core::int> sync* {
     yield(core::int x) → core::int => x;
diff --git a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
index 4a4640d..f6fc957 100644
--- a/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/local_return_and_yield.dart.strong.transformed.expect
@@ -20,10 +20,10 @@
       try {
         #L1:
         {
-          :return_value = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:36: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
+          :return_value = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/local_return_and_yield.dart:19:36: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
     return /*@returnType=dynamic*/ (/*@type=dynamic*/ x) => x;
-                                   ^" in let final (dynamic) → dynamic #t2 = (dynamic x) → dynamic => x in null;
+                                   ^" in ((dynamic x) → dynamic => x) as{TypeError} asy::FutureOr<(core::int) → core::int>;
           break #L1;
         }
         asy::_completeOnAsyncReturn(:async_completer, :return_value);
diff --git a/pkg/front_end/testcases/inference/map_literals.dart.strong.expect b/pkg/front_end/testcases/inference/map_literals.dart.strong.expect
index 82c5211..9fa1326 100644
--- a/pkg/front_end/testcases/inference/map_literals.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/map_literals.dart.strong.expect
@@ -32,32 +32,32 @@
 static method test1() → dynamic {
   core::Map<core::int, core::String> x = <core::int, core::String>{1: "x", 2: "y"};
   x.{core::Map::[]=}(3, "z");
-  x.{core::Map::[]=}(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:12:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x.{core::Map::[]=}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:12:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in let final dynamic #t2 = "hi" in null, "w");
-  x.{core::Map::[]=}(let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:14:46: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                             ^" in "hi" as{TypeError} core::int, "w");
+  x.{core::Map::[]=}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:14:46: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                             ^" in let final dynamic #t4 = 4.0 in null, "u");
-  x.{core::Map::[]=}(3, let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:15:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                             ^" in 4.0 as{TypeError} core::int, "u");
+  x.{core::Map::[]=}(3, let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:15:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   x /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in let final dynamic #t6 = 42 in null);
+                                                            ^" in 42 as{TypeError} core::String);
   core::Map<core::num, core::String> y = x;
 }
 static method test2() → dynamic {
   core::Map<core::num, core::Pattern> x = <core::num, core::Pattern>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
   x.{core::Map::[]=}(3, "z");
-  x.{core::Map::[]=}(let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:27:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+  x.{core::Map::[]=}(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:27:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in let final dynamic #t8 = "hi" in null, "w");
+                                             ^" in "hi" as{TypeError} core::num, "w");
   x.{core::Map::[]=}(4.0, "u");
-  x.{core::Map::[]=}(3, let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:29:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
+  x.{core::Map::[]=}(3, let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:29:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Pattern'.
   x /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in let final dynamic #t10 = 42 in null);
+                                                            ^" in 42 as{TypeError} core::Pattern);
   core::Pattern p = null;
   x.{core::Map::[]=}(2, p);
   core::Map<core::int, core::String> y = x as{TypeError} core::Map<core::int, core::String>;
diff --git a/pkg/front_end/testcases/inference/map_literals.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/map_literals.dart.strong.transformed.expect
index 3405df2..bdf50a5 100644
--- a/pkg/front_end/testcases/inference/map_literals.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/map_literals.dart.strong.transformed.expect
@@ -5,32 +5,32 @@
 static method test1() → dynamic {
   core::Map<core::int, core::String> x = <core::int, core::String>{1: "x", 2: "y"};
   x.{core::Map::[]=}(3, "z");
-  x.{core::Map::[]=}(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:12:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  x.{core::Map::[]=}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:12:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in let final core::String #t2 = "hi" in null, "w");
-  x.{core::Map::[]=}(let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:14:46: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                             ^" in "hi" as{TypeError} core::int, "w");
+  x.{core::Map::[]=}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:14:46: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                             ^" in let final core::double #t4 = 4.0 in null, "u");
-  x.{core::Map::[]=}(3, let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:15:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                             ^" in 4.0 as{TypeError} core::int, "u");
+  x.{core::Map::[]=}(3, let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:15:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   x /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in let final core::int #t6 = 42 in null);
+                                                            ^" in 42 as{TypeError} core::String);
   core::Map<core::num, core::String> y = x;
 }
 static method test2() → dynamic {
   core::Map<core::num, core::Pattern> x = <core::num, core::Pattern>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
   x.{core::Map::[]=}(3, "z");
-  x.{core::Map::[]=}(let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:27:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+  x.{core::Map::[]=}(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:27:46: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
       /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                             ^" in let final core::String #t8 = "hi" in null, "w");
+                                             ^" in "hi" as{TypeError} core::num, "w");
   x.{core::Map::[]=}(4.0, "u");
-  x.{core::Map::[]=}(3, let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:29:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
+  x.{core::Map::[]=}(3, let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals.dart:29:61: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Pattern'.
   x /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                            ^" in let final core::int #t10 = 42 in null);
+                                                            ^" in 42 as{TypeError} core::Pattern);
   core::Pattern p = null;
   x.{core::Map::[]=}(2, p);
   core::Map<core::int, core::String> y = x as{TypeError} core::Map<core::int, core::String>;
diff --git a/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.expect b/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.expect
index 358d35f..a1067c9 100644
--- a/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.expect
@@ -33,31 +33,31 @@
 static field core::Map<core::num, core::Pattern> x2 = <core::num, core::Pattern>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
 static method test1() → dynamic {
   self::x1.{core::Map::[]=}(3, "z");
-  self::x1.{core::Map::[]=}(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:14:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::x1.{core::Map::[]=}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:14:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x1 /*@target=Map::[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                  ^" in let final dynamic #t2 = "hi" in null, "w");
-  self::x1.{core::Map::[]=}(let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:15:67: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hi" as{TypeError} core::int, "w");
+  self::x1.{core::Map::[]=}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:15:67: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x1 /*@target=Map::[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                                                  ^" in let final dynamic #t4 = 4.0 in null, "u");
-  self::x1.{core::Map::[]=}(3, let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:16:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                  ^" in 4.0 as{TypeError} core::int, "u");
+  self::x1.{core::Map::[]=}(3, let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:16:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   x1 /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                             ^" in let final dynamic #t6 = 42 in null);
+                                                             ^" in 42 as{TypeError} core::String);
   core::Map<core::num, core::String> y = self::x1;
 }
 static method test2() → dynamic {
   self::x2.{core::Map::[]=}(3, "z");
-  self::x2.{core::Map::[]=}(let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:27:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+  self::x2.{core::Map::[]=}(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:27:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
   x2 /*@target=Map::[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                  ^" in let final dynamic #t8 = "hi" in null, "w");
+                                                                  ^" in "hi" as{TypeError} core::num, "w");
   self::x2.{core::Map::[]=}(4.0, "u");
-  self::x2.{core::Map::[]=}(3, let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:29:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
+  self::x2.{core::Map::[]=}(3, let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:29:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Pattern'.
   x2 /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                             ^" in let final dynamic #t10 = 42 in null);
+                                                             ^" in 42 as{TypeError} core::Pattern);
   core::Pattern p = null;
   self::x2.{core::Map::[]=}(2, p);
   core::Map<core::int, core::String> y = self::x2 as{TypeError} core::Map<core::int, core::String>;
diff --git a/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.transformed.expect
index 05fb52e..a53ccf0 100644
--- a/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/map_literals_top_level.dart.strong.transformed.expect
@@ -6,31 +6,31 @@
 static field core::Map<core::num, core::Pattern> x2 = <core::num, core::Pattern>{1: "x", 2: "y", 3.0: core::RegExp::•(".")};
 static method test1() → dynamic {
   self::x1.{core::Map::[]=}(3, "z");
-  self::x1.{core::Map::[]=}(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:14:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  self::x1.{core::Map::[]=}(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:14:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x1 /*@target=Map::[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                  ^" in let final core::String #t2 = "hi" in null, "w");
-  self::x1.{core::Map::[]=}(let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:15:67: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                                  ^" in "hi" as{TypeError} core::int, "w");
+  self::x1.{core::Map::[]=}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:15:67: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   x1 /*@target=Map::[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 4.0] = 'u';
-                                                                  ^" in let final core::double #t4 = 4.0 in null, "u");
-  self::x1.{core::Map::[]=}(3, let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:16:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
+                                                                  ^" in 4.0 as{TypeError} core::int, "u");
+  self::x1.{core::Map::[]=}(3, let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:16:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   x1 /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                             ^" in let final core::int #t6 = 42 in null);
+                                                             ^" in 42 as{TypeError} core::String);
   core::Map<core::num, core::String> y = self::x1;
 }
 static method test2() → dynamic {
   self::x2.{core::Map::[]=}(3, "z");
-  self::x2.{core::Map::[]=}(let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:27:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
+  self::x2.{core::Map::[]=}(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:27:67: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::num'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::num'.
   x2 /*@target=Map::[]=*/ [/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ 'hi'] = 'w';
-                                                                  ^" in let final core::String #t8 = "hi" in null, "w");
+                                                                  ^" in "hi" as{TypeError} core::num, "w");
   self::x2.{core::Map::[]=}(4.0, "u");
-  self::x2.{core::Map::[]=}(3, let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:29:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
+  self::x2.{core::Map::[]=}(3, let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/map_literals_top_level.dart:29:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::Pattern'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::Pattern'.
   x2 /*@target=Map::[]=*/ [3] = /*error:INVALID_ASSIGNMENT*/ 42;
-                                                             ^" in let final core::int #t10 = 42 in null);
+                                                             ^" in 42 as{TypeError} core::Pattern);
   core::Pattern p = null;
   self::x2.{core::Map::[]=}(2, p);
   core::Map<core::int, core::String> y = self::x2 as{TypeError} core::Map<core::int, core::String>;
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.expect
index 2b74a3c..13a4a95 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.expect
@@ -38,6 +38,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.transformed.expect
index efe2831..cdf8dcc 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.direct.transformed.expect
@@ -28,7 +28,7 @@
     ;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<dynamic, dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M1&M0
     : super self::M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect
index d6a6b09..a95d76f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.outline.expect
@@ -25,6 +25,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect
index f14a24e..1faa3db 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.expect
@@ -18,6 +18,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int, core::String> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect
index b3431bb..7a5e6b5 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_1.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     ;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<core::int, core::String> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M1&M0
     : super self::M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.expect
index 8806757..7782a14 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.expect
@@ -38,6 +38,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.transformed.expect
index c83593f..ad97954 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.direct.transformed.expect
@@ -28,7 +28,7 @@
     ;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<dynamic, dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M1&M0
     : super self::M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect
index 8ddb8d9..d1aa843 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.outline.expect
@@ -25,6 +25,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect
index 00eadbe..69818ca 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.expect
@@ -18,6 +18,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int, core::int> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect
index 10ccc25..8e64db9 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_2.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     ;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<core::int, core::int> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M1&M0
     : super self::M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.expect
index fe9bccc..d623d11 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.expect
@@ -38,6 +38,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.transformed.expect
index 4079304..8b9b41a 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.direct.transformed.expect
@@ -28,7 +28,7 @@
     ;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<dynamic, dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M1&M0
     : super self::M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect
index 1c545f2..c4772fe9 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.outline.expect
@@ -25,6 +25,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect
index d731a05..9f72d38 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.expect
@@ -1,3 +1,20 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:13:7: Error: Type argument 'dart.core::Comparable<dynamic>' violates the corresponding type variable bound of 'M0' in the supertype 'M0' of class 'M1 with M0'.
+// Try changing type arguments so that they conform to the bounds.
+// class A extends M1 with M0 {}
+//       ^
+// pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:7:13: Context: Bound of this variable is violated.
+// class M0<X, Y extends Comparable<Y>> extends I<X> {}
+//             ^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:13:7: Error: Type argument 'dart.core::Comparable<dynamic>' violates the corresponding type variable bound of 'M0' in the supertype 'M0' of class 'M1 with M0'.
+// Try changing type arguments so that they conform to the bounds.
+// class A extends M1 with M0 {}
+//       ^
+
 library;
 import self as self;
 import "dart:core" as core;
@@ -18,6 +35,9 @@
     ;
 }
 abstract class _A&M1&M0 = self::M1 with self::M0<core::int, core::Comparable<dynamic>> {
+  synthetic constructor •() → self::_A&M1&M0
+    : super self::M1::•()
+    ;
 }
 class A extends self::_A&M1&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect
index 906bdda..0016e86d 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart.strong.transformed.expect
@@ -1,3 +1,10 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/inference/mixin_inference_instantiate_to_bounds_3.dart:13:7: Error: Type argument 'dart.core::Comparable<dynamic>' violates the corresponding type variable bound of 'M0' in the supertype 'M0' of class 'M1 with M0'.
+// Try changing type arguments so that they conform to the bounds.
+// class A extends M1 with M0 {}
+//       ^
+
 library;
 import self as self;
 import "dart:core" as core;
@@ -18,7 +25,7 @@
     ;
 }
 abstract class _A&M1&M0 extends self::M1 implements self::M0<core::int, core::Comparable<dynamic>> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M1&M0
     : super self::M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.expect
index 62b8b77..c20c7df 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.expect
@@ -49,6 +49,9 @@
     ;
 }
 abstract class _M0&I&J<X extends core::Object = dynamic, Y extends core::Object = dynamic> = self::I<self::_M0&I&J::X> with self::J<self::_M0&I&J::Y> {
+  synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X, self::_M0&I&J::Y>
+    : super self::I::•()
+    ;
 }
 class M0<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends self::_M0&I&J<self::M0::X, self::M0::Y> {
   synthetic constructor •() → self::M0<self::M0::X, self::M0::Y>
@@ -66,6 +69,9 @@
     ;
 }
 abstract class _A&M2&M0 = self::M2 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M2&M0
+    : super self::M2::•()
+    ;
 }
 class A extends self::_A&M2&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.transformed.expect
index 6a44e02..75ca4bd 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.direct.transformed.expect
@@ -31,7 +31,7 @@
     ;
 }
 abstract class _M0&I&J<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends self::I<self::_M0&I&J::X> implements self::J<self::_M0&I&J::Y> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X, self::_M0&I&J::Y>
     : super self::I::•()
     ;
 }
@@ -51,7 +51,7 @@
     ;
 }
 abstract class _A&M2&M0 extends self::M2 implements self::M0<dynamic, dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M2&M0
     : super self::M2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect
index 2b6191b..d73dd41 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.outline.expect
@@ -29,6 +29,9 @@
     ;
 }
 abstract class _M0&I&J<X extends core::Object = dynamic, Y extends core::Object = dynamic> = self::I<self::_M0&I&J::X> with self::J<self::_M0&I&J::Y> {
+  synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X, self::_M0&I&J::Y>
+    : super self::I::•()
+    ;
 }
 class M0<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends self::_M0&I&J<self::M0::X, self::M0::Y> {
   synthetic constructor •() → self::M0<self::M0::X, self::M0::Y>
@@ -43,6 +46,9 @@
     ;
 }
 abstract class _A&M2&M0 = self::M2 with self::M0<dynamic, dynamic> {
+  synthetic constructor •() → self::_A&M2&M0
+    : super self::M2::•()
+    ;
 }
 class A extends self::_A&M2&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect
index bde2a16..517eca6 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.expect
@@ -13,6 +13,9 @@
     ;
 }
 abstract class _M0&I&J<X extends core::Object = dynamic, Y extends core::Object = dynamic> = self::I<self::_M0&I&J::X> with self::J<self::_M0&I&J::Y> {
+  synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X, self::_M0&I&J::Y>
+    : super self::I::•()
+    ;
 }
 class M0<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends self::_M0&I&J<self::M0::X, self::M0::Y> {
   synthetic constructor •() → self::M0<self::M0::X, self::M0::Y>
@@ -30,6 +33,9 @@
     ;
 }
 abstract class _A&M2&M0 = self::M2 with self::M0<core::int, core::double> {
+  synthetic constructor •() → self::_A&M2&M0
+    : super self::M2::•()
+    ;
 }
 class A extends self::_A&M2&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect
index 6dd6533..ac1a5bb 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_multiple_constraints.dart.strong.transformed.expect
@@ -13,7 +13,7 @@
     ;
 }
 abstract class _M0&I&J<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends self::I<self::_M0&I&J::X> implements self::J<self::_M0&I&J::Y> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_M0&I&J<self::_M0&I&J::X, self::_M0&I&J::Y>
     : super self::I::•()
     ;
 }
@@ -33,7 +33,7 @@
     ;
 }
 abstract class _A&M2&M0 extends self::M2 implements self::M0<core::int, core::double> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M2&M0
     : super self::M2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.expect
index 88892c7..6cfde52 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.expect
@@ -43,6 +43,9 @@
     ;
 }
 abstract class _A&M2&M0 = self::M2<core::int> with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&M2&M0
+    : super self::M2::•()
+    ;
 }
 class A extends self::_A&M2&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.transformed.expect
index d155a9b..275fc2f 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.direct.transformed.expect
@@ -33,7 +33,7 @@
     ;
 }
 abstract class _A&M2&M0 extends self::M2<core::int> implements self::M0<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M2&M0
     : super self::M2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect
index b6d579f..a8bfed1 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.outline.expect
@@ -29,6 +29,9 @@
     ;
 }
 abstract class _A&M2&M0 = self::M2<core::int> with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&M2&M0
+    : super self::M2::•()
+    ;
 }
 class A extends self::_A&M2&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect
index c7a68c1..36da7e3 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.expect
@@ -23,6 +23,9 @@
     ;
 }
 abstract class _A&M2&M0 = self::M2<core::int> with self::M0<core::Map<core::int, core::int>> {
+  synthetic constructor •() → self::_A&M2&M0
+    : super self::M2::•()
+    ;
 }
 class A extends self::_A&M2&M0 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect
index 32fe1c1..6199c28 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_non_trivial_constraints.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
     ;
 }
 abstract class _A&M2&M0 extends self::M2<core::int> implements self::M0<core::Map<core::int, core::int>> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M2&M0
     : super self::M2::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.expect
index e10dc53..1d8e105 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.expect
@@ -38,6 +38,9 @@
     ;
 }
 abstract class _A&M0&M1 = self::M0<core::int> with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&M0&M1
+    : super self::M0::•()
+    ;
 }
 class A extends self::_A&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.transformed.expect
index e79ea32..5d10926 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.direct.transformed.expect
@@ -28,7 +28,7 @@
     ;
 }
 abstract class _A&M0&M1 extends self::M0<core::int> implements self::M1<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M0&M1
     : super self::M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect
index e877a3c..eb96768 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.outline.expect
@@ -25,6 +25,9 @@
     ;
 }
 abstract class _A&M0&M1 = self::M0<core::int> with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&M0&M1
+    : super self::M0::•()
+    ;
 }
 class A extends self::_A&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect
index b27aa2e..128fa4a 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.expect
@@ -18,6 +18,9 @@
     ;
 }
 abstract class _A&M0&M1 = self::M0<core::int> with self::M1<core::int> {
+  synthetic constructor •() → self::_A&M0&M1
+    : super self::M0::•()
+    ;
 }
 class A extends self::_A&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect
index 6bfe384..ec46a13 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_1.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     ;
 }
 abstract class _A&M0&M1 extends self::M0<core::int> implements self::M1<core::int> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M0&M1
     : super self::M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.expect
index 0407ee4..2f63c87 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.expect
@@ -51,8 +51,14 @@
     ;
 }
 abstract class _A&M0&M1 = self::M0<core::int> with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&M0&M1
+    : super self::M0::•()
+    ;
 }
 abstract class _A&M0&M1&M2 = self::_A&M0&M1 with self::M2<dynamic> {
+  synthetic constructor •() → self::_A&M0&M1&M2
+    : super self::_A&M0&M1::•()
+    ;
 }
 class A extends self::_A&M0&M1&M2 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.transformed.expect
index 73a163a..9dbae73 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.direct.transformed.expect
@@ -37,12 +37,12 @@
     ;
 }
 abstract class _A&M0&M1 extends self::M0<core::int> implements self::M1<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M0&M1
     : super self::M0::•()
     ;
 }
 abstract class _A&M0&M1&M2 extends self::_A&M0&M1 implements self::M2<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M0&M1&M2
     : super self::_A&M0&M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect
index dc07f79..89fbf6a 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.outline.expect
@@ -33,8 +33,14 @@
     ;
 }
 abstract class _A&M0&M1 = self::M0<core::int> with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&M0&M1
+    : super self::M0::•()
+    ;
 }
 abstract class _A&M0&M1&M2 = self::_A&M0&M1 with self::M2<dynamic> {
+  synthetic constructor •() → self::_A&M0&M1&M2
+    : super self::_A&M0&M1::•()
+    ;
 }
 class A extends self::_A&M0&M1&M2 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect
index 7f16875..e17639c 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.expect
@@ -23,8 +23,14 @@
     ;
 }
 abstract class _A&M0&M1 = self::M0<core::int> with self::M1<core::int> {
+  synthetic constructor •() → self::_A&M0&M1
+    : super self::M0::•()
+    ;
 }
 abstract class _A&M0&M1&M2 = self::_A&M0&M1 with self::M2<core::int> {
+  synthetic constructor •() → self::_A&M0&M1&M2
+    : super self::_A&M0&M1::•()
+    ;
 }
 class A extends self::_A&M0&M1&M2 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect
index b445d8d..37d01dc 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_2.dart.strong.transformed.expect
@@ -23,12 +23,12 @@
     ;
 }
 abstract class _A&M0&M1 extends self::M0<core::int> implements self::M1<core::int> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M0&M1
     : super self::M0::•()
     ;
 }
 abstract class _A&M0&M1&M2 extends self::_A&M0&M1 implements self::M2<core::int> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&M0&M1&M2
     : super self::_A&M0&M1::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.expect
index e6fbb26..fc6a66ac 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.expect
@@ -38,8 +38,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.transformed.expect
index c36278c..58b221a 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.direct.transformed.expect
@@ -28,12 +28,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<core::int> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
index f44b0a8..60c2734 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.outline.expect
@@ -25,8 +25,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
index e6fbb26..fc6a66ac 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_3.dart.strong.expect
@@ -38,8 +38,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<core::int> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.expect
index 1b5aced..45fecf6 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.expect
@@ -30,8 +30,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 implements self::I<core::int> {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.transformed.expect
index 52bc459..803ae84 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.direct.transformed.expect
@@ -24,12 +24,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
index 0ecc559..a8c84a6 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.outline.expect
@@ -21,8 +21,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 implements self::I<core::int> {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
index 1b5aced..45fecf6 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_outwards_4.dart.strong.expect
@@ -30,8 +30,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 implements self::I<core::int> {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.expect
index 27a0346..72c26175 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.expect
@@ -38,8 +38,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.transformed.expect
index 4f0d0dc..657e348 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.direct.transformed.expect
@@ -28,12 +28,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
index 9e822e9..293d160 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.outline.expect
@@ -25,8 +25,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
index 27a0346..72c26175 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_1.dart.strong.expect
@@ -38,8 +38,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.expect
index 0f2fae3..b8875c5 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.expect
@@ -38,8 +38,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.transformed.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.transformed.expect
index 87250ef..33c1c8e 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.direct.transformed.expect
@@ -28,12 +28,12 @@
     ;
 }
 abstract class _A&Object&M0 extends core::Object implements self::M0<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&M0&M1 extends self::_A&Object&M0 implements self::M1<dynamic> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M0&M1
     : super self::_A&Object&M0::•()
     ;
 }
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
index c18634f..afdf716 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.outline.expect
@@ -25,8 +25,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
index 0f2fae3..b8875c5 100644
--- a/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/mixin_inference_unification_2.dart.strong.expect
@@ -38,8 +38,14 @@
     ;
 }
 abstract class _A&Object&M0 = core::Object with self::M0<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&M0&M1 = self::_A&Object&M0 with self::M1<dynamic> {
+  synthetic constructor •() → self::_A&Object&M0&M1
+    : super self::_A&Object&M0::•()
+    ;
 }
 class A extends self::_A&Object&M0&M1 {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect
index e390fd9..a52d4f9 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.expect
@@ -22,14 +22,14 @@
 }
 static method test5() → dynamic {
   self::A a1 = new self::A::•();
-  a1.{self::A::x} = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:14:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  a1.{self::A::x} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:14:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   a1. /*@target=A::x*/ x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                                        ^" in let final dynamic #t2 = "hi" in null;
+                                                        ^" in "hi" as{TypeError} core::int;
   self::A a2 = new self::A::•();
-  a2.{self::A::x} = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:17:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  a2.{self::A::x} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:17:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   a2. /*@target=A::x*/ x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                                        ^" in let final dynamic #t4 = "hi" in null;
+                                                        ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect
index 0af35ab..a70683b 100644
--- a/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/propagate_inference_transitively.dart.strong.transformed.expect
@@ -10,14 +10,14 @@
 }
 static method test5() → dynamic {
   self::A a1 = new self::A::•();
-  a1.{self::A::x} = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:14:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  a1.{self::A::x} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:14:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   a1. /*@target=A::x*/ x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                                        ^" in let final core::String #t2 = "hi" in null;
+                                                        ^" in "hi" as{TypeError} core::int;
   self::A a2 = new self::A::•();
-  a2.{self::A::x} = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:17:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  a2.{self::A::x} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/propagate_inference_transitively.dart:17:57: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   a2. /*@target=A::x*/ x = /*error:INVALID_ASSIGNMENT*/ \"hi\";
-                                                        ^" in let final core::String #t4 = "hi" in null;
+                                                        ^" in "hi" as{TypeError} core::int;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.expect
index baf4a8c..0166552 100644
--- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.expect
@@ -15,10 +15,10 @@
   return (core::int x) → core::int => x;
 }
 static method b() → asy::Future<(core::int) → core::int> async {
-  return let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:34: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
+  return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:34: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
   return /*@returnType=dynamic*/ (/*@type=dynamic*/ x) => x;
-                                 ^" in let final dynamic #t2 = (dynamic x) → dynamic => x in null;
+                                 ^" in ((dynamic x) → dynamic => x) as{TypeError} asy::FutureOr<(core::int) → core::int>;
 }
 static method c() → core::Iterable<(core::int) → core::int> sync* {
   yield(core::int x) → core::int => x;
diff --git a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
index c5d800e..1172594 100644
--- a/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference/top_level_return_and_yield.dart.strong.transformed.expect
@@ -19,10 +19,10 @@
     try {
       #L1:
       {
-        :return_value = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:34: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
+        :return_value = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/top_level_return_and_yield.dart:18:34: Error: A value of type '(dynamic) \u8594 dynamic' can't be assigned to a variable of type 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.async::FutureOr<(dart.core::int) \u8594 dart.core::int>'.
   return /*@returnType=dynamic*/ (/*@type=dynamic*/ x) => x;
-                                 ^" in let final (dynamic) → dynamic #t2 = (dynamic x) → dynamic => x in null;
+                                 ^" in ((dynamic x) → dynamic => x) as{TypeError} asy::FutureOr<(core::int) → core::int>;
         break #L1;
       }
       asy::_completeOnAsyncReturn(:async_completer, :return_value);
diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.expect
index ac08e1d..8512363 100644
--- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.expect
@@ -19,29 +19,30 @@
 library test;
 import self as self;
 import "dart:core" as core;
+import "dart:async" as asy;
 
 static method test() → dynamic async {
   core::String s;
-  for (final dynamic #t1 in let dynamic _ = null in let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:53: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
+  for (final dynamic #t1 in let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:53: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
   for (int x in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                    ^" in let final dynamic #t3 = s in null) {
+                                                    ^" in s as{TypeError} core::Iterable<dynamic>) {
     core::int x = #t1 as{TypeError} core::int;
   }
-  await for (final dynamic #t4 in let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:11:59: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
+  await for (final dynamic #t3 in let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:11:59: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
   await for (int x in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                          ^" in let final dynamic #t6 = s in null) {
-    core::int x = #t4 as{TypeError} core::int;
+                                                          ^" in s as{TypeError} asy::Stream<dynamic>) {
+    core::int x = #t3 as{TypeError} core::int;
   }
   core::int y;
-  for (final dynamic #t7 in let dynamic _ = null in let final dynamic #t8 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:13:49: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
+  for (final dynamic #t5 in let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:13:49: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
   for (y in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                ^" in let final dynamic #t9 = s in null) {
-    y = #t7 as{TypeError} core::int;
+                                                ^" in s as{TypeError} core::Iterable<dynamic>) {
+    y = #t5 as{TypeError} core::int;
   }
-  await for (final dynamic #t10 in let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:14:55: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
+  await for (final dynamic #t7 in let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:14:55: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
   await for (y in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                      ^" in let final dynamic #t12 = s in null) {
-    y = #t10 as{TypeError} core::int;
+                                                      ^" in s as{TypeError} asy::Stream<dynamic>) {
+    y = #t7 as{TypeError} core::int;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect
index 002d2e6..7418afc 100644
--- a/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart.strong.transformed.expect
@@ -20,27 +20,27 @@
       #L1:
       {
         core::String s;
-        for (final dynamic #t1 in let<BottomType> _ = null in let final dynamic #t2 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:53: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
+        for (final dynamic #t1 in let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:10:53: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
   for (int x in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                    ^" in let final core::String #t3 = s in null) {
+                                                    ^" in s as{TypeError} core::Iterable<dynamic>) {
           core::int x = #t1 as{TypeError} core::int;
         }
         {
-          dynamic :stream = let<BottomType> _ = null in let final dynamic #t4 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:11:59: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
+          dynamic :stream = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:11:59: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
   await for (int x in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                          ^" in let final core::String #t5 = s in null;
+                                                          ^" in s as{TypeError} asy::Stream<dynamic>;
           asy::_asyncStarListenHelper(:stream, :async_op);
           asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
           const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
           try
             #L2:
             while (true) {
-              dynamic #t6 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t4 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t5 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final dynamic #t8 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t6 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  core::int x = #t8 as{TypeError} core::int;
+                  core::int x = #t6 as{TypeError} core::int;
                 }
               }
               else
@@ -48,32 +48,32 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t9 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t7 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
         core::int y;
-        for (final dynamic #t10 in let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:13:49: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
+        for (final dynamic #t8 in let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:13:49: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.core::Iterable<dynamic>'.
   for (y in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                ^" in let final core::String #t12 = s in null) {
-          y = #t10 as{TypeError} core::int;
+                                                ^" in s as{TypeError} core::Iterable<dynamic>) {
+          y = #t8 as{TypeError} core::int;
         }
         {
-          dynamic :stream = let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:14:55: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
+          dynamic :stream = let final<BottomType> #t10 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_invalid_iterable.dart:14:55: Error: The type 'dart.core::String' used in the 'for' loop must implement 'dart.async::Stream<dynamic>'.
   await for (y in /*@error=ForInLoopTypeNotIterable*/ s) {}
-                                                      ^" in let final core::String #t14 = s in null;
+                                                      ^" in s as{TypeError} asy::Stream<dynamic>;
           asy::_asyncStarListenHelper(:stream, :async_op);
           asy::_StreamIterator<dynamic> :for-iterator = new asy::_StreamIterator::•<dynamic>(:stream);
           const core::bool :product-mode = const core::bool::fromEnvironment("dart.vm.product");
           try
             #L3:
             while (true) {
-              dynamic #t15 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t16 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t11 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t12 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final dynamic #t17 = :for-iterator.{asy::_StreamIterator::current};
+                final dynamic #t13 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  y = #t17 as{TypeError} core::int;
+                  y = #t13 as{TypeError} core::int;
                 }
               }
               else
@@ -81,7 +81,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t18 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect
index f1fd249..a98fb44 100644
--- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.expect
@@ -46,22 +46,22 @@
     b = #t4 as{TypeError} self::B;
   }
   for (final self::A #t5 in iterable) {
-    i = let dynamic _ = null in let final dynamic #t6 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:26:55: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
+    i = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:26:55: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the variable.
   for (i /*@error=ForInLoopElementTypeNotAssignable*/ in iterable) {}
-                                                      ^" in let final dynamic #t7 = #t5 in null;
+                                                      ^" in #t5 as{TypeError} core::int;
   }
-  await for (final self::A #t8 in stream) {
-    i = let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:61: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
+  await for (final self::A #t7 in stream) {
+    i = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:61: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the variable.
   await for (i /*@error=ForInLoopElementTypeNotAssignable*/ in stream) {}
-                                                            ^" in let final dynamic #t10 = #t8 in null;
+                                                            ^" in #t7 as{TypeError} core::int;
   }
-  for (final self::A #t11 in self::f<core::Iterable<self::A>>()) {
-    a = #t11;
+  for (final self::A #t9 in self::f<core::Iterable<self::A>>()) {
+    a = #t9;
   }
-  await for (final self::A #t12 in self::f<asy::Stream<self::A>>()) {
-    a = #t12;
+  await for (final self::A #t10 in self::f<asy::Stream<self::A>>()) {
+    a = #t10;
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect
index 642e30b..b67ada4 100644
--- a/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart.strong.transformed.expect
@@ -93,10 +93,10 @@
             }
         }
         for (final self::A #t11 in iterable) {
-          i = let<BottomType> _ = null in let final dynamic #t12 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:26:55: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
+          i = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:26:55: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the variable.
   for (i /*@error=ForInLoopElementTypeNotAssignable*/ in iterable) {}
-                                                      ^" in let final self::A #t13 = #t11 in null;
+                                                      ^" in #t11 as{TypeError} core::int;
         }
         {
           dynamic :stream = stream;
@@ -106,15 +106,15 @@
           try
             #L4:
             while (true) {
-              dynamic #t14 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t15 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t13 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t14 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final self::A #t16 = :for-iterator.{asy::_StreamIterator::current};
+                final self::A #t15 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  i = let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:61: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
+                  i = let final<BottomType> #t16 = invalid-expression "pkg/front_end/testcases/inference_new/for_each_outer_var_type.dart:27:61: Error: A value of type 'test::A' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the variable.
   await for (i /*@error=ForInLoopElementTypeNotAssignable*/ in stream) {}
-                                                            ^" in let final self::A #t18 = #t16 in null;
+                                                            ^" in #t15 as{TypeError} core::int;
                 }
               }
               else
@@ -122,12 +122,12 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t19 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t17 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
-        for (final self::A #t20 in self::f<core::Iterable<self::A>>()) {
-          a = #t20;
+        for (final self::A #t18 in self::f<core::Iterable<self::A>>()) {
+          a = #t18;
         }
         {
           dynamic :stream = self::f<asy::Stream<self::A>>();
@@ -137,12 +137,12 @@
           try
             #L5:
             while (true) {
-              dynamic #t21 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
-              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
+              dynamic #t19 = :product-mode ?{dynamic} null : asy::_asyncStarMoveNextHelper(:stream);
+              [yield] let dynamic #t20 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::moveNext}(), :async_op_then, :async_op_error, :async_op) in null;
               if(:result) {
-                final self::A #t23 = :for-iterator.{asy::_StreamIterator::current};
+                final self::A #t21 = :for-iterator.{asy::_StreamIterator::current};
                 {
-                  a = #t23;
+                  a = #t21;
                 }
               }
               else
@@ -150,7 +150,7 @@
             }
           finally
             if(!:for-iterator.{asy::_StreamIterator::_subscription}.{core::Object::==}(null)) {
-              [yield] let dynamic #t24 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
+              [yield] let dynamic #t22 = asy::_awaitHelper(:for-iterator.{asy::_StreamIterator::cancel}(), :async_op_then, :async_op_error, :async_op) in null;
               :result;
             }
         }
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect
index 5463d22..a261e48 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart.strong.expect
@@ -92,20 +92,20 @@
     core::double v3 = let final core::String #t66 = "x" in let final core::double #t67 = self::getDouble() in let final void #t68 = super.{self::Base::[]=}(#t66, #t67) in #t67;
     core::num v5 = let final core::String #t69 = "x" in let final core::int #t70 = super.{self::Base::[]}(#t69) in #t70.{core::num::==}(null) ?{core::num} let final core::num #t71 = self::getNum() as{TypeError} core::double in let final void #t72 = super.{self::Base::[]=}(#t69, #t71) in #t71 : #t70;
     core::num v6 = let final core::String #t73 = "x" in let final core::int #t74 = super.{self::Base::[]}(#t73) in #t74.{core::num::==}(null) ?{core::num} let final core::double #t75 = self::getDouble() in let final void #t76 = super.{self::Base::[]=}(#t73, #t75) in #t75 : #t74;
-    core::int v7 = let final core::String #t77 = "x" in let final core::int #t78 = let dynamic _ = null in let final dynamic #t79 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:55:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+    core::int v7 = let final core::String #t77 = "x" in let final core::int #t78 = let final<BottomType> #t79 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:55:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
     var /*@type=int*/ v7 = super /*@target=Base::[]=*/ ['x'] += getInt();
-                                                             ^" in let final dynamic #t80 = super.{self::Base::[]}(#t77).{core::num::+}(self::getInt()) in null in let final void #t81 = super.{self::Base::[]=}(#t77, #t78) in #t78;
-    core::num v8 = let final core::String #t82 = "x" in let final core::num #t83 = super.{self::Base::[]}(#t82).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t84 = super.{self::Base::[]=}(#t82, #t83) in #t83;
-    core::double v9 = let final core::String #t85 = "x" in let final core::double #t86 = super.{self::Base::[]}(#t85).{core::num::+}(self::getDouble()) in let final void #t87 = super.{self::Base::[]=}(#t85, #t86) in #t86;
-    core::int v10 = let final core::String #t88 = "x" in let final core::int #t89 = let dynamic _ = null in let final dynamic #t90 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:58:29: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+                                                             ^" in super.{self::Base::[]}(#t77).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t80 = super.{self::Base::[]=}(#t77, #t78) in #t78;
+    core::num v8 = let final core::String #t81 = "x" in let final core::num #t82 = super.{self::Base::[]}(#t81).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t83 = super.{self::Base::[]=}(#t81, #t82) in #t82;
+    core::double v9 = let final core::String #t84 = "x" in let final core::double #t85 = super.{self::Base::[]}(#t84).{core::num::+}(self::getDouble()) in let final void #t86 = super.{self::Base::[]=}(#t84, #t85) in #t85;
+    core::int v10 = let final core::String #t87 = "x" in let final core::int #t88 = let final<BottomType> #t89 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:58:29: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
     var /*@type=int*/ v10 = ++super /*@target=Base::[]=*/ ['x'];
-                            ^" in let final dynamic #t91 = super.{self::Base::[]}(#t88).{core::num::+}(1) in null in let final void #t92 = super.{self::Base::[]=}(#t88, #t89) in #t89;
-    core::int v11 = let final core::String #t93 = "x" in let final core::int #t94 = super.{self::Base::[]}(#t93) in let final void #t95 = super.{self::Base::[]=}(#t93, let dynamic _ = null in let final dynamic #t96 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:59:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+                            ^" in super.{self::Base::[]}(#t87).{core::num::+}(1) as{TypeError} core::double in let final void #t90 = super.{self::Base::[]=}(#t87, #t88) in #t88;
+    core::int v11 = let final core::String #t91 = "x" in let final core::int #t92 = super.{self::Base::[]}(#t91) in let final void #t93 = super.{self::Base::[]=}(#t91, let final<BottomType> #t94 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:59:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
     var /*@type=int*/ v11 = super /*@target=Base::[]=*/ ['x']++;
-                                                             ^" in let final dynamic #t97 = #t94.{core::num::+}(1) in null) in #t94;
+                                                             ^" in #t92.{core::num::+}(1) as{TypeError} core::double) in #t92;
   }
 }
 abstract class Test4 extends self::Base<core::num, core::int> {
@@ -113,14 +113,14 @@
     : super self::Base::•()
     ;
   method test() → void {
-    core::int v1 = let final core::String #t98 = "x" in let final core::int #t99 = self::getInt() in let final void #t100 = super.{self::Base::[]=}(#t98, #t99) in #t99;
-    core::num v2 = let final core::String #t101 = "x" in let final core::num #t102 = self::getNum() as{TypeError} core::int in let final void #t103 = super.{self::Base::[]=}(#t101, #t102) in #t102;
-    core::num v4 = let final core::String #t104 = "x" in let final core::num #t105 = super.{self::Base::[]}(#t104) in #t105.{core::num::==}(null) ?{core::num} let final core::int #t106 = self::getInt() in let final void #t107 = super.{self::Base::[]=}(#t104, #t106) in #t106 : #t105;
-    core::num v5 = let final core::String #t108 = "x" in let final core::num #t109 = super.{self::Base::[]}(#t108) in #t109.{core::num::==}(null) ?{core::num} let final core::num #t110 = self::getNum() as{TypeError} core::int in let final void #t111 = super.{self::Base::[]=}(#t108, #t110) in #t110 : #t109;
-    core::num v7 = let final core::String #t112 = "x" in let final core::num #t113 = super.{self::Base::[]}(#t112).{core::num::+}(self::getInt()) as{TypeError} core::int in let final void #t114 = super.{self::Base::[]=}(#t112, #t113) in #t113;
-    core::num v8 = let final core::String #t115 = "x" in let final core::num #t116 = super.{self::Base::[]}(#t115).{core::num::+}(self::getNum()) as{TypeError} core::int in let final void #t117 = super.{self::Base::[]=}(#t115, #t116) in #t116;
-    core::num v10 = let final core::String #t118 = "x" in let final core::num #t119 = super.{self::Base::[]}(#t118).{core::num::+}(1) as{TypeError} core::int in let final void #t120 = super.{self::Base::[]=}(#t118, #t119) in #t119;
-    core::num v11 = let final core::String #t121 = "x" in let final core::num #t122 = super.{self::Base::[]}(#t121) in let final void #t123 = super.{self::Base::[]=}(#t121, #t122.{core::num::+}(1) as{TypeError} core::int) in #t122;
+    core::int v1 = let final core::String #t95 = "x" in let final core::int #t96 = self::getInt() in let final void #t97 = super.{self::Base::[]=}(#t95, #t96) in #t96;
+    core::num v2 = let final core::String #t98 = "x" in let final core::num #t99 = self::getNum() as{TypeError} core::int in let final void #t100 = super.{self::Base::[]=}(#t98, #t99) in #t99;
+    core::num v4 = let final core::String #t101 = "x" in let final core::num #t102 = super.{self::Base::[]}(#t101) in #t102.{core::num::==}(null) ?{core::num} let final core::int #t103 = self::getInt() in let final void #t104 = super.{self::Base::[]=}(#t101, #t103) in #t103 : #t102;
+    core::num v5 = let final core::String #t105 = "x" in let final core::num #t106 = super.{self::Base::[]}(#t105) in #t106.{core::num::==}(null) ?{core::num} let final core::num #t107 = self::getNum() as{TypeError} core::int in let final void #t108 = super.{self::Base::[]=}(#t105, #t107) in #t107 : #t106;
+    core::num v7 = let final core::String #t109 = "x" in let final core::num #t110 = super.{self::Base::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int in let final void #t111 = super.{self::Base::[]=}(#t109, #t110) in #t110;
+    core::num v8 = let final core::String #t112 = "x" in let final core::num #t113 = super.{self::Base::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int in let final void #t114 = super.{self::Base::[]=}(#t112, #t113) in #t113;
+    core::num v10 = let final core::String #t115 = "x" in let final core::num #t116 = super.{self::Base::[]}(#t115).{core::num::+}(1) as{TypeError} core::int in let final void #t117 = super.{self::Base::[]=}(#t115, #t116) in #t116;
+    core::num v11 = let final core::String #t118 = "x" in let final core::num #t119 = super.{self::Base::[]}(#t118) in let final void #t120 = super.{self::Base::[]=}(#t118, #t119.{core::num::+}(1) as{TypeError} core::int) in #t119;
   }
 }
 abstract class Test5 extends self::Base<core::num, core::num> {
@@ -128,17 +128,17 @@
     : super self::Base::•()
     ;
   method test() → void {
-    core::int v1 = let final core::String #t124 = "x" in let final core::int #t125 = self::getInt() in let final void #t126 = super.{self::Base::[]=}(#t124, #t125) in #t125;
-    core::num v2 = let final core::String #t127 = "x" in let final core::num #t128 = self::getNum() in let final void #t129 = super.{self::Base::[]=}(#t127, #t128) in #t128;
-    core::double v3 = let final core::String #t130 = "x" in let final core::double #t131 = self::getDouble() in let final void #t132 = super.{self::Base::[]=}(#t130, #t131) in #t131;
-    core::num v4 = let final core::String #t133 = "x" in let final core::num #t134 = super.{self::Base::[]}(#t133) in #t134.{core::num::==}(null) ?{core::num} let final core::int #t135 = self::getInt() in let final void #t136 = super.{self::Base::[]=}(#t133, #t135) in #t135 : #t134;
-    core::num v5 = let final core::String #t137 = "x" in let final core::num #t138 = super.{self::Base::[]}(#t137) in #t138.{core::num::==}(null) ?{core::num} let final core::num #t139 = self::getNum() in let final void #t140 = super.{self::Base::[]=}(#t137, #t139) in #t139 : #t138;
-    core::num v6 = let final core::String #t141 = "x" in let final core::num #t142 = super.{self::Base::[]}(#t141) in #t142.{core::num::==}(null) ?{core::num} let final core::double #t143 = self::getDouble() in let final void #t144 = super.{self::Base::[]=}(#t141, #t143) in #t143 : #t142;
-    core::num v7 = let final core::String #t145 = "x" in let final core::num #t146 = super.{self::Base::[]}(#t145).{core::num::+}(self::getInt()) in let final void #t147 = super.{self::Base::[]=}(#t145, #t146) in #t146;
-    core::num v8 = let final core::String #t148 = "x" in let final core::num #t149 = super.{self::Base::[]}(#t148).{core::num::+}(self::getNum()) in let final void #t150 = super.{self::Base::[]=}(#t148, #t149) in #t149;
-    core::num v9 = let final core::String #t151 = "x" in let final core::num #t152 = super.{self::Base::[]}(#t151).{core::num::+}(self::getDouble()) in let final void #t153 = super.{self::Base::[]=}(#t151, #t152) in #t152;
-    core::num v10 = let final core::String #t154 = "x" in let final core::num #t155 = super.{self::Base::[]}(#t154).{core::num::+}(1) in let final void #t156 = super.{self::Base::[]=}(#t154, #t155) in #t155;
-    core::num v11 = let final core::String #t157 = "x" in let final core::num #t158 = super.{self::Base::[]}(#t157) in let final void #t159 = super.{self::Base::[]=}(#t157, #t158.{core::num::+}(1)) in #t158;
+    core::int v1 = let final core::String #t121 = "x" in let final core::int #t122 = self::getInt() in let final void #t123 = super.{self::Base::[]=}(#t121, #t122) in #t122;
+    core::num v2 = let final core::String #t124 = "x" in let final core::num #t125 = self::getNum() in let final void #t126 = super.{self::Base::[]=}(#t124, #t125) in #t125;
+    core::double v3 = let final core::String #t127 = "x" in let final core::double #t128 = self::getDouble() in let final void #t129 = super.{self::Base::[]=}(#t127, #t128) in #t128;
+    core::num v4 = let final core::String #t130 = "x" in let final core::num #t131 = super.{self::Base::[]}(#t130) in #t131.{core::num::==}(null) ?{core::num} let final core::int #t132 = self::getInt() in let final void #t133 = super.{self::Base::[]=}(#t130, #t132) in #t132 : #t131;
+    core::num v5 = let final core::String #t134 = "x" in let final core::num #t135 = super.{self::Base::[]}(#t134) in #t135.{core::num::==}(null) ?{core::num} let final core::num #t136 = self::getNum() in let final void #t137 = super.{self::Base::[]=}(#t134, #t136) in #t136 : #t135;
+    core::num v6 = let final core::String #t138 = "x" in let final core::num #t139 = super.{self::Base::[]}(#t138) in #t139.{core::num::==}(null) ?{core::num} let final core::double #t140 = self::getDouble() in let final void #t141 = super.{self::Base::[]=}(#t138, #t140) in #t140 : #t139;
+    core::num v7 = let final core::String #t142 = "x" in let final core::num #t143 = super.{self::Base::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = super.{self::Base::[]=}(#t142, #t143) in #t143;
+    core::num v8 = let final core::String #t145 = "x" in let final core::num #t146 = super.{self::Base::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = super.{self::Base::[]=}(#t145, #t146) in #t146;
+    core::num v9 = let final core::String #t148 = "x" in let final core::num #t149 = super.{self::Base::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = super.{self::Base::[]=}(#t148, #t149) in #t149;
+    core::num v10 = let final core::String #t151 = "x" in let final core::num #t152 = super.{self::Base::[]}(#t151).{core::num::+}(1) in let final void #t153 = super.{self::Base::[]=}(#t151, #t152) in #t152;
+    core::num v11 = let final core::String #t154 = "x" in let final core::num #t155 = super.{self::Base::[]}(#t154) in let final void #t156 = super.{self::Base::[]=}(#t154, #t155.{core::num::+}(1)) in #t155;
   }
 }
 abstract class Test6 extends self::Base<core::num, core::double> {
@@ -146,15 +146,15 @@
     : super self::Base::•()
     ;
   method test() → void {
-    core::num v2 = let final core::String #t160 = "x" in let final core::num #t161 = self::getNum() as{TypeError} core::double in let final void #t162 = super.{self::Base::[]=}(#t160, #t161) in #t161;
-    core::double v3 = let final core::String #t163 = "x" in let final core::double #t164 = self::getDouble() in let final void #t165 = super.{self::Base::[]=}(#t163, #t164) in #t164;
-    core::num v5 = let final core::String #t166 = "x" in let final core::num #t167 = super.{self::Base::[]}(#t166) in #t167.{core::num::==}(null) ?{core::num} let final core::num #t168 = self::getNum() as{TypeError} core::double in let final void #t169 = super.{self::Base::[]=}(#t166, #t168) in #t168 : #t167;
-    core::num v6 = let final core::String #t170 = "x" in let final core::num #t171 = super.{self::Base::[]}(#t170) in #t171.{core::num::==}(null) ?{core::num} let final core::double #t172 = self::getDouble() in let final void #t173 = super.{self::Base::[]=}(#t170, #t172) in #t172 : #t171;
-    core::num v7 = let final core::String #t174 = "x" in let final core::num #t175 = super.{self::Base::[]}(#t174).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t176 = super.{self::Base::[]=}(#t174, #t175) in #t175;
-    core::num v8 = let final core::String #t177 = "x" in let final core::num #t178 = super.{self::Base::[]}(#t177).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t179 = super.{self::Base::[]=}(#t177, #t178) in #t178;
-    core::num v9 = let final core::String #t180 = "x" in let final core::num #t181 = super.{self::Base::[]}(#t180).{core::num::+}(self::getDouble()) as{TypeError} core::double in let final void #t182 = super.{self::Base::[]=}(#t180, #t181) in #t181;
-    core::num v10 = let final core::String #t183 = "x" in let final core::num #t184 = super.{self::Base::[]}(#t183).{core::num::+}(1) as{TypeError} core::double in let final void #t185 = super.{self::Base::[]=}(#t183, #t184) in #t184;
-    core::num v11 = let final core::String #t186 = "x" in let final core::num #t187 = super.{self::Base::[]}(#t186) in let final void #t188 = super.{self::Base::[]=}(#t186, #t187.{core::num::+}(1) as{TypeError} core::double) in #t187;
+    core::num v2 = let final core::String #t157 = "x" in let final core::num #t158 = self::getNum() as{TypeError} core::double in let final void #t159 = super.{self::Base::[]=}(#t157, #t158) in #t158;
+    core::double v3 = let final core::String #t160 = "x" in let final core::double #t161 = self::getDouble() in let final void #t162 = super.{self::Base::[]=}(#t160, #t161) in #t161;
+    core::num v5 = let final core::String #t163 = "x" in let final core::num #t164 = super.{self::Base::[]}(#t163) in #t164.{core::num::==}(null) ?{core::num} let final core::num #t165 = self::getNum() as{TypeError} core::double in let final void #t166 = super.{self::Base::[]=}(#t163, #t165) in #t165 : #t164;
+    core::num v6 = let final core::String #t167 = "x" in let final core::num #t168 = super.{self::Base::[]}(#t167) in #t168.{core::num::==}(null) ?{core::num} let final core::double #t169 = self::getDouble() in let final void #t170 = super.{self::Base::[]=}(#t167, #t169) in #t169 : #t168;
+    core::num v7 = let final core::String #t171 = "x" in let final core::num #t172 = super.{self::Base::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t173 = super.{self::Base::[]=}(#t171, #t172) in #t172;
+    core::num v8 = let final core::String #t174 = "x" in let final core::num #t175 = super.{self::Base::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t176 = super.{self::Base::[]=}(#t174, #t175) in #t175;
+    core::num v9 = let final core::String #t177 = "x" in let final core::num #t178 = super.{self::Base::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double in let final void #t179 = super.{self::Base::[]=}(#t177, #t178) in #t178;
+    core::num v10 = let final core::String #t180 = "x" in let final core::num #t181 = super.{self::Base::[]}(#t180).{core::num::+}(1) as{TypeError} core::double in let final void #t182 = super.{self::Base::[]=}(#t180, #t181) in #t181;
+    core::num v11 = let final core::String #t183 = "x" in let final core::num #t184 = super.{self::Base::[]}(#t183) in let final void #t185 = super.{self::Base::[]=}(#t183, #t184.{core::num::+}(1) as{TypeError} core::double) in #t184;
   }
 }
 abstract class Test7 extends self::Base<core::double, core::int> {
@@ -162,26 +162,26 @@
     : super self::Base::•()
     ;
   method test() → void {
-    core::int v1 = let final core::String #t189 = "x" in let final core::int #t190 = self::getInt() in let final void #t191 = super.{self::Base::[]=}(#t189, #t190) in #t190;
-    core::num v2 = let final core::String #t192 = "x" in let final core::num #t193 = self::getNum() as{TypeError} core::int in let final void #t194 = super.{self::Base::[]=}(#t192, #t193) in #t193;
-    core::num v4 = let final core::String #t195 = "x" in let final core::double #t196 = super.{self::Base::[]}(#t195) in #t196.{core::num::==}(null) ?{core::num} let final core::int #t197 = self::getInt() in let final void #t198 = super.{self::Base::[]=}(#t195, #t197) in #t197 : #t196;
-    core::num v5 = let final core::String #t199 = "x" in let final core::double #t200 = super.{self::Base::[]}(#t199) in #t200.{core::num::==}(null) ?{core::num} let final core::num #t201 = self::getNum() as{TypeError} core::int in let final void #t202 = super.{self::Base::[]=}(#t199, #t201) in #t201 : #t200;
-    core::double v7 = let final core::String #t203 = "x" in let final core::double #t204 = let dynamic _ = null in let final dynamic #t205 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:112:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+    core::int v1 = let final core::String #t186 = "x" in let final core::int #t187 = self::getInt() in let final void #t188 = super.{self::Base::[]=}(#t186, #t187) in #t187;
+    core::num v2 = let final core::String #t189 = "x" in let final core::num #t190 = self::getNum() as{TypeError} core::int in let final void #t191 = super.{self::Base::[]=}(#t189, #t190) in #t190;
+    core::num v4 = let final core::String #t192 = "x" in let final core::double #t193 = super.{self::Base::[]}(#t192) in #t193.{core::num::==}(null) ?{core::num} let final core::int #t194 = self::getInt() in let final void #t195 = super.{self::Base::[]=}(#t192, #t194) in #t194 : #t193;
+    core::num v5 = let final core::String #t196 = "x" in let final core::double #t197 = super.{self::Base::[]}(#t196) in #t197.{core::num::==}(null) ?{core::num} let final core::num #t198 = self::getNum() as{TypeError} core::int in let final void #t199 = super.{self::Base::[]=}(#t196, #t198) in #t198 : #t197;
+    core::double v7 = let final core::String #t200 = "x" in let final core::double #t201 = let final<BottomType> #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:112:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v7 = super /*@target=Base::[]=*/ ['x'] += getInt();
-                                                                ^" in let final dynamic #t206 = super.{self::Base::[]}(#t203).{core::double::+}(self::getInt()) in null in let final void #t207 = super.{self::Base::[]=}(#t203, #t204) in #t204;
-    core::double v8 = let final core::String #t208 = "x" in let final core::double #t209 = let dynamic _ = null in let final dynamic #t210 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:113:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                                ^" in super.{self::Base::[]}(#t200).{core::double::+}(self::getInt()) as{TypeError} core::int in let final void #t203 = super.{self::Base::[]=}(#t200, #t201) in #t201;
+    core::double v8 = let final core::String #t204 = "x" in let final core::double #t205 = let final<BottomType> #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:113:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v8 = super /*@target=Base::[]=*/ ['x'] += getNum();
-                                                                ^" in let final dynamic #t211 = super.{self::Base::[]}(#t208).{core::double::+}(self::getNum()) in null in let final void #t212 = super.{self::Base::[]=}(#t208, #t209) in #t209;
-    core::double v10 = let final core::String #t213 = "x" in let final core::double #t214 = let dynamic _ = null in let final dynamic #t215 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:114:32: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                                ^" in super.{self::Base::[]}(#t204).{core::double::+}(self::getNum()) as{TypeError} core::int in let final void #t207 = super.{self::Base::[]=}(#t204, #t205) in #t205;
+    core::double v10 = let final core::String #t208 = "x" in let final core::double #t209 = let final<BottomType> #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:114:32: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v10 = ++super /*@target=Base::[]=*/ ['x'];
-                               ^" in let final dynamic #t216 = super.{self::Base::[]}(#t213).{core::double::+}(1) in null in let final void #t217 = super.{self::Base::[]=}(#t213, #t214) in #t214;
-    core::double v11 = let final core::String #t218 = "x" in let final core::double #t219 = super.{self::Base::[]}(#t218) in let final void #t220 = super.{self::Base::[]=}(#t218, let dynamic _ = null in let final dynamic #t221 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:115:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                               ^" in super.{self::Base::[]}(#t208).{core::double::+}(1) as{TypeError} core::int in let final void #t211 = super.{self::Base::[]=}(#t208, #t209) in #t209;
+    core::double v11 = let final core::String #t212 = "x" in let final core::double #t213 = super.{self::Base::[]}(#t212) in let final void #t214 = super.{self::Base::[]=}(#t212, let final<BottomType> #t215 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:115:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v11 = super /*@target=Base::[]=*/ ['x']++;
-                                                                ^" in let final dynamic #t222 = #t219.{core::double::+}(1) in null) in #t219;
+                                                                ^" in #t213.{core::double::+}(1) as{TypeError} core::int) in #t213;
   }
 }
 abstract class Test8 extends self::Base<core::double, core::num> {
@@ -189,17 +189,17 @@
     : super self::Base::•()
     ;
   method test() → void {
-    core::int v1 = let final core::String #t223 = "x" in let final core::int #t224 = self::getInt() in let final void #t225 = super.{self::Base::[]=}(#t223, #t224) in #t224;
-    core::num v2 = let final core::String #t226 = "x" in let final core::num #t227 = self::getNum() in let final void #t228 = super.{self::Base::[]=}(#t226, #t227) in #t227;
-    core::double v3 = let final core::String #t229 = "x" in let final core::double #t230 = self::getDouble() in let final void #t231 = super.{self::Base::[]=}(#t229, #t230) in #t230;
-    core::num v4 = let final core::String #t232 = "x" in let final core::double #t233 = super.{self::Base::[]}(#t232) in #t233.{core::num::==}(null) ?{core::num} let final core::int #t234 = self::getInt() in let final void #t235 = super.{self::Base::[]=}(#t232, #t234) in #t234 : #t233;
-    core::num v5 = let final core::String #t236 = "x" in let final core::double #t237 = super.{self::Base::[]}(#t236) in #t237.{core::num::==}(null) ?{core::num} let final core::num #t238 = self::getNum() in let final void #t239 = super.{self::Base::[]=}(#t236, #t238) in #t238 : #t237;
-    core::double v6 = let final core::String #t240 = "x" in let final core::double #t241 = super.{self::Base::[]}(#t240) in #t241.{core::num::==}(null) ?{core::double} let final core::double #t242 = self::getDouble() in let final void #t243 = super.{self::Base::[]=}(#t240, #t242) in #t242 : #t241;
-    core::double v7 = let final core::String #t244 = "x" in let final core::double #t245 = super.{self::Base::[]}(#t244).{core::double::+}(self::getInt()) in let final void #t246 = super.{self::Base::[]=}(#t244, #t245) in #t245;
-    core::double v8 = let final core::String #t247 = "x" in let final core::double #t248 = super.{self::Base::[]}(#t247).{core::double::+}(self::getNum()) in let final void #t249 = super.{self::Base::[]=}(#t247, #t248) in #t248;
-    core::double v9 = let final core::String #t250 = "x" in let final core::double #t251 = super.{self::Base::[]}(#t250).{core::double::+}(self::getDouble()) in let final void #t252 = super.{self::Base::[]=}(#t250, #t251) in #t251;
-    core::double v10 = let final core::String #t253 = "x" in let final core::double #t254 = super.{self::Base::[]}(#t253).{core::double::+}(1) in let final void #t255 = super.{self::Base::[]=}(#t253, #t254) in #t254;
-    core::double v11 = let final core::String #t256 = "x" in let final core::double #t257 = super.{self::Base::[]}(#t256) in let final void #t258 = super.{self::Base::[]=}(#t256, #t257.{core::double::+}(1)) in #t257;
+    core::int v1 = let final core::String #t216 = "x" in let final core::int #t217 = self::getInt() in let final void #t218 = super.{self::Base::[]=}(#t216, #t217) in #t217;
+    core::num v2 = let final core::String #t219 = "x" in let final core::num #t220 = self::getNum() in let final void #t221 = super.{self::Base::[]=}(#t219, #t220) in #t220;
+    core::double v3 = let final core::String #t222 = "x" in let final core::double #t223 = self::getDouble() in let final void #t224 = super.{self::Base::[]=}(#t222, #t223) in #t223;
+    core::num v4 = let final core::String #t225 = "x" in let final core::double #t226 = super.{self::Base::[]}(#t225) in #t226.{core::num::==}(null) ?{core::num} let final core::int #t227 = self::getInt() in let final void #t228 = super.{self::Base::[]=}(#t225, #t227) in #t227 : #t226;
+    core::num v5 = let final core::String #t229 = "x" in let final core::double #t230 = super.{self::Base::[]}(#t229) in #t230.{core::num::==}(null) ?{core::num} let final core::num #t231 = self::getNum() in let final void #t232 = super.{self::Base::[]=}(#t229, #t231) in #t231 : #t230;
+    core::double v6 = let final core::String #t233 = "x" in let final core::double #t234 = super.{self::Base::[]}(#t233) in #t234.{core::num::==}(null) ?{core::double} let final core::double #t235 = self::getDouble() in let final void #t236 = super.{self::Base::[]=}(#t233, #t235) in #t235 : #t234;
+    core::double v7 = let final core::String #t237 = "x" in let final core::double #t238 = super.{self::Base::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = super.{self::Base::[]=}(#t237, #t238) in #t238;
+    core::double v8 = let final core::String #t240 = "x" in let final core::double #t241 = super.{self::Base::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = super.{self::Base::[]=}(#t240, #t241) in #t241;
+    core::double v9 = let final core::String #t243 = "x" in let final core::double #t244 = super.{self::Base::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = super.{self::Base::[]=}(#t243, #t244) in #t244;
+    core::double v10 = let final core::String #t246 = "x" in let final core::double #t247 = super.{self::Base::[]}(#t246).{core::double::+}(1) in let final void #t248 = super.{self::Base::[]=}(#t246, #t247) in #t247;
+    core::double v11 = let final core::String #t249 = "x" in let final core::double #t250 = super.{self::Base::[]}(#t249) in let final void #t251 = super.{self::Base::[]=}(#t249, #t250.{core::double::+}(1)) in #t250;
   }
 }
 abstract class Test9 extends self::Base<core::double, core::double> {
@@ -207,15 +207,15 @@
     : super self::Base::•()
     ;
   method test() → void {
-    core::num v2 = let final core::String #t259 = "x" in let final core::num #t260 = self::getNum() as{TypeError} core::double in let final void #t261 = super.{self::Base::[]=}(#t259, #t260) in #t260;
-    core::double v3 = let final core::String #t262 = "x" in let final core::double #t263 = self::getDouble() in let final void #t264 = super.{self::Base::[]=}(#t262, #t263) in #t263;
-    core::num v5 = let final core::String #t265 = "x" in let final core::double #t266 = super.{self::Base::[]}(#t265) in #t266.{core::num::==}(null) ?{core::num} let final core::num #t267 = self::getNum() as{TypeError} core::double in let final void #t268 = super.{self::Base::[]=}(#t265, #t267) in #t267 : #t266;
-    core::double v6 = let final core::String #t269 = "x" in let final core::double #t270 = super.{self::Base::[]}(#t269) in #t270.{core::num::==}(null) ?{core::double} let final core::double #t271 = self::getDouble() in let final void #t272 = super.{self::Base::[]=}(#t269, #t271) in #t271 : #t270;
-    core::double v7 = let final core::String #t273 = "x" in let final core::double #t274 = super.{self::Base::[]}(#t273).{core::double::+}(self::getInt()) in let final void #t275 = super.{self::Base::[]=}(#t273, #t274) in #t274;
-    core::double v8 = let final core::String #t276 = "x" in let final core::double #t277 = super.{self::Base::[]}(#t276).{core::double::+}(self::getNum()) in let final void #t278 = super.{self::Base::[]=}(#t276, #t277) in #t277;
-    core::double v9 = let final core::String #t279 = "x" in let final core::double #t280 = super.{self::Base::[]}(#t279).{core::double::+}(self::getDouble()) in let final void #t281 = super.{self::Base::[]=}(#t279, #t280) in #t280;
-    core::double v10 = let final core::String #t282 = "x" in let final core::double #t283 = super.{self::Base::[]}(#t282).{core::double::+}(1) in let final void #t284 = super.{self::Base::[]=}(#t282, #t283) in #t283;
-    core::double v11 = let final core::String #t285 = "x" in let final core::double #t286 = super.{self::Base::[]}(#t285) in let final void #t287 = super.{self::Base::[]=}(#t285, #t286.{core::double::+}(1)) in #t286;
+    core::num v2 = let final core::String #t252 = "x" in let final core::num #t253 = self::getNum() as{TypeError} core::double in let final void #t254 = super.{self::Base::[]=}(#t252, #t253) in #t253;
+    core::double v3 = let final core::String #t255 = "x" in let final core::double #t256 = self::getDouble() in let final void #t257 = super.{self::Base::[]=}(#t255, #t256) in #t256;
+    core::num v5 = let final core::String #t258 = "x" in let final core::double #t259 = super.{self::Base::[]}(#t258) in #t259.{core::num::==}(null) ?{core::num} let final core::num #t260 = self::getNum() as{TypeError} core::double in let final void #t261 = super.{self::Base::[]=}(#t258, #t260) in #t260 : #t259;
+    core::double v6 = let final core::String #t262 = "x" in let final core::double #t263 = super.{self::Base::[]}(#t262) in #t263.{core::num::==}(null) ?{core::double} let final core::double #t264 = self::getDouble() in let final void #t265 = super.{self::Base::[]=}(#t262, #t264) in #t264 : #t263;
+    core::double v7 = let final core::String #t266 = "x" in let final core::double #t267 = super.{self::Base::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = super.{self::Base::[]=}(#t266, #t267) in #t267;
+    core::double v8 = let final core::String #t269 = "x" in let final core::double #t270 = super.{self::Base::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = super.{self::Base::[]=}(#t269, #t270) in #t270;
+    core::double v9 = let final core::String #t272 = "x" in let final core::double #t273 = super.{self::Base::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = super.{self::Base::[]=}(#t272, #t273) in #t273;
+    core::double v10 = let final core::String #t275 = "x" in let final core::double #t276 = super.{self::Base::[]}(#t275).{core::double::+}(1) in let final void #t277 = super.{self::Base::[]=}(#t275, #t276) in #t276;
+    core::double v11 = let final core::String #t278 = "x" in let final core::double #t279 = super.{self::Base::[]}(#t278) in let final void #t280 = super.{self::Base::[]=}(#t278, #t279.{core::double::+}(1)) in #t279;
   }
 }
 static method getInt() → core::int
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect
index 913618b..7992f48 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart.strong.expect
@@ -87,20 +87,20 @@
     core::double v3 = let final core::String #t66 = "x" in let final core::double #t67 = self::getDouble() in let final void #t68 = this.{self::Test3::[]=}(#t66, #t67) in #t67;
     core::num v5 = let final core::String #t69 = "x" in let final core::int #t70 = this.{self::Test3::[]}(#t69) in #t70.{core::num::==}(null) ?{core::num} let final core::num #t71 = self::getNum() as{TypeError} core::double in let final void #t72 = this.{self::Test3::[]=}(#t69, #t71) in #t71 : #t70;
     core::num v6 = let final core::String #t73 = "x" in let final core::int #t74 = this.{self::Test3::[]}(#t73) in #t74.{core::num::==}(null) ?{core::num} let final core::double #t75 = self::getDouble() in let final void #t76 = this.{self::Test3::[]=}(#t73, #t75) in #t75 : #t74;
-    core::int v7 = let final core::String #t77 = "x" in let final core::int #t78 = let dynamic _ = null in let final dynamic #t79 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:56:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+    core::int v7 = let final core::String #t77 = "x" in let final core::int #t78 = let final<BottomType> #t79 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:56:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
     var /*@type=int*/ v7 = this /*@target=Test3::[]=*/ ['x'] += getInt();
-                                                             ^" in let final dynamic #t80 = this.{self::Test3::[]}(#t77).{core::num::+}(self::getInt()) in null in let final void #t81 = this.{self::Test3::[]=}(#t77, #t78) in #t78;
-    core::num v8 = let final core::String #t82 = "x" in let final core::num #t83 = this.{self::Test3::[]}(#t82).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t84 = this.{self::Test3::[]=}(#t82, #t83) in #t83;
-    core::double v9 = let final core::String #t85 = "x" in let final core::double #t86 = this.{self::Test3::[]}(#t85).{core::num::+}(self::getDouble()) in let final void #t87 = this.{self::Test3::[]=}(#t85, #t86) in #t86;
-    core::int v10 = let final core::String #t88 = "x" in let final core::int #t89 = let dynamic _ = null in let final dynamic #t90 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:59:29: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+                                                             ^" in this.{self::Test3::[]}(#t77).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t80 = this.{self::Test3::[]=}(#t77, #t78) in #t78;
+    core::num v8 = let final core::String #t81 = "x" in let final core::num #t82 = this.{self::Test3::[]}(#t81).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t83 = this.{self::Test3::[]=}(#t81, #t82) in #t82;
+    core::double v9 = let final core::String #t84 = "x" in let final core::double #t85 = this.{self::Test3::[]}(#t84).{core::num::+}(self::getDouble()) in let final void #t86 = this.{self::Test3::[]=}(#t84, #t85) in #t85;
+    core::int v10 = let final core::String #t87 = "x" in let final core::int #t88 = let final<BottomType> #t89 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:59:29: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
     var /*@type=int*/ v10 = ++this /*@target=Test3::[]=*/ ['x'];
-                            ^" in let final dynamic #t91 = this.{self::Test3::[]}(#t88).{core::num::+}(1) in null in let final void #t92 = this.{self::Test3::[]=}(#t88, #t89) in #t89;
-    core::int v11 = let final core::String #t93 = "x" in let final core::int #t94 = this.{self::Test3::[]}(#t93) in let final void #t95 = this.{self::Test3::[]=}(#t93, let dynamic _ = null in let final dynamic #t96 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:60:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+                            ^" in this.{self::Test3::[]}(#t87).{core::num::+}(1) as{TypeError} core::double in let final void #t90 = this.{self::Test3::[]=}(#t87, #t88) in #t88;
+    core::int v11 = let final core::String #t91 = "x" in let final core::int #t92 = this.{self::Test3::[]}(#t91) in let final void #t93 = this.{self::Test3::[]=}(#t91, let final<BottomType> #t94 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:60:62: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
     var /*@type=int*/ v11 = this /*@target=Test3::[]=*/ ['x']++;
-                                                             ^" in let final dynamic #t97 = #t94.{core::num::+}(1) in null) in #t94;
+                                                             ^" in #t92.{core::num::+}(1) as{TypeError} core::double) in #t92;
   }
 }
 abstract class Test4 extends core::Object {
@@ -110,14 +110,14 @@
   abstract operator [](core::String s) → core::num;
   abstract operator []=(core::String s, core::int v) → void;
   method test() → void {
-    core::int v1 = let final core::String #t98 = "x" in let final core::int #t99 = self::getInt() in let final void #t100 = this.{self::Test4::[]=}(#t98, #t99) in #t99;
-    core::num v2 = let final core::String #t101 = "x" in let final core::num #t102 = self::getNum() as{TypeError} core::int in let final void #t103 = this.{self::Test4::[]=}(#t101, #t102) in #t102;
-    core::num v4 = let final core::String #t104 = "x" in let final core::num #t105 = this.{self::Test4::[]}(#t104) in #t105.{core::num::==}(null) ?{core::num} let final core::int #t106 = self::getInt() in let final void #t107 = this.{self::Test4::[]=}(#t104, #t106) in #t106 : #t105;
-    core::num v5 = let final core::String #t108 = "x" in let final core::num #t109 = this.{self::Test4::[]}(#t108) in #t109.{core::num::==}(null) ?{core::num} let final core::num #t110 = self::getNum() as{TypeError} core::int in let final void #t111 = this.{self::Test4::[]=}(#t108, #t110) in #t110 : #t109;
-    core::num v7 = let final core::String #t112 = "x" in let final core::num #t113 = this.{self::Test4::[]}(#t112).{core::num::+}(self::getInt()) as{TypeError} core::int in let final void #t114 = this.{self::Test4::[]=}(#t112, #t113) in #t113;
-    core::num v8 = let final core::String #t115 = "x" in let final core::num #t116 = this.{self::Test4::[]}(#t115).{core::num::+}(self::getNum()) as{TypeError} core::int in let final void #t117 = this.{self::Test4::[]=}(#t115, #t116) in #t116;
-    core::num v10 = let final core::String #t118 = "x" in let final core::num #t119 = this.{self::Test4::[]}(#t118).{core::num::+}(1) as{TypeError} core::int in let final void #t120 = this.{self::Test4::[]=}(#t118, #t119) in #t119;
-    core::num v11 = let final core::String #t121 = "x" in let final core::num #t122 = this.{self::Test4::[]}(#t121) in let final void #t123 = this.{self::Test4::[]=}(#t121, #t122.{core::num::+}(1) as{TypeError} core::int) in #t122;
+    core::int v1 = let final core::String #t95 = "x" in let final core::int #t96 = self::getInt() in let final void #t97 = this.{self::Test4::[]=}(#t95, #t96) in #t96;
+    core::num v2 = let final core::String #t98 = "x" in let final core::num #t99 = self::getNum() as{TypeError} core::int in let final void #t100 = this.{self::Test4::[]=}(#t98, #t99) in #t99;
+    core::num v4 = let final core::String #t101 = "x" in let final core::num #t102 = this.{self::Test4::[]}(#t101) in #t102.{core::num::==}(null) ?{core::num} let final core::int #t103 = self::getInt() in let final void #t104 = this.{self::Test4::[]=}(#t101, #t103) in #t103 : #t102;
+    core::num v5 = let final core::String #t105 = "x" in let final core::num #t106 = this.{self::Test4::[]}(#t105) in #t106.{core::num::==}(null) ?{core::num} let final core::num #t107 = self::getNum() as{TypeError} core::int in let final void #t108 = this.{self::Test4::[]=}(#t105, #t107) in #t107 : #t106;
+    core::num v7 = let final core::String #t109 = "x" in let final core::num #t110 = this.{self::Test4::[]}(#t109).{core::num::+}(self::getInt()) as{TypeError} core::int in let final void #t111 = this.{self::Test4::[]=}(#t109, #t110) in #t110;
+    core::num v8 = let final core::String #t112 = "x" in let final core::num #t113 = this.{self::Test4::[]}(#t112).{core::num::+}(self::getNum()) as{TypeError} core::int in let final void #t114 = this.{self::Test4::[]=}(#t112, #t113) in #t113;
+    core::num v10 = let final core::String #t115 = "x" in let final core::num #t116 = this.{self::Test4::[]}(#t115).{core::num::+}(1) as{TypeError} core::int in let final void #t117 = this.{self::Test4::[]=}(#t115, #t116) in #t116;
+    core::num v11 = let final core::String #t118 = "x" in let final core::num #t119 = this.{self::Test4::[]}(#t118) in let final void #t120 = this.{self::Test4::[]=}(#t118, #t119.{core::num::+}(1) as{TypeError} core::int) in #t119;
   }
 }
 abstract class Test5 extends core::Object {
@@ -127,17 +127,17 @@
   abstract operator [](core::String s) → core::num;
   abstract operator []=(core::String s, core::num v) → void;
   method test() → void {
-    core::int v1 = let final core::String #t124 = "x" in let final core::int #t125 = self::getInt() in let final void #t126 = this.{self::Test5::[]=}(#t124, #t125) in #t125;
-    core::num v2 = let final core::String #t127 = "x" in let final core::num #t128 = self::getNum() in let final void #t129 = this.{self::Test5::[]=}(#t127, #t128) in #t128;
-    core::double v3 = let final core::String #t130 = "x" in let final core::double #t131 = self::getDouble() in let final void #t132 = this.{self::Test5::[]=}(#t130, #t131) in #t131;
-    core::num v4 = let final core::String #t133 = "x" in let final core::num #t134 = this.{self::Test5::[]}(#t133) in #t134.{core::num::==}(null) ?{core::num} let final core::int #t135 = self::getInt() in let final void #t136 = this.{self::Test5::[]=}(#t133, #t135) in #t135 : #t134;
-    core::num v5 = let final core::String #t137 = "x" in let final core::num #t138 = this.{self::Test5::[]}(#t137) in #t138.{core::num::==}(null) ?{core::num} let final core::num #t139 = self::getNum() in let final void #t140 = this.{self::Test5::[]=}(#t137, #t139) in #t139 : #t138;
-    core::num v6 = let final core::String #t141 = "x" in let final core::num #t142 = this.{self::Test5::[]}(#t141) in #t142.{core::num::==}(null) ?{core::num} let final core::double #t143 = self::getDouble() in let final void #t144 = this.{self::Test5::[]=}(#t141, #t143) in #t143 : #t142;
-    core::num v7 = let final core::String #t145 = "x" in let final core::num #t146 = this.{self::Test5::[]}(#t145).{core::num::+}(self::getInt()) in let final void #t147 = this.{self::Test5::[]=}(#t145, #t146) in #t146;
-    core::num v8 = let final core::String #t148 = "x" in let final core::num #t149 = this.{self::Test5::[]}(#t148).{core::num::+}(self::getNum()) in let final void #t150 = this.{self::Test5::[]=}(#t148, #t149) in #t149;
-    core::num v9 = let final core::String #t151 = "x" in let final core::num #t152 = this.{self::Test5::[]}(#t151).{core::num::+}(self::getDouble()) in let final void #t153 = this.{self::Test5::[]=}(#t151, #t152) in #t152;
-    core::num v10 = let final core::String #t154 = "x" in let final core::num #t155 = this.{self::Test5::[]}(#t154).{core::num::+}(1) in let final void #t156 = this.{self::Test5::[]=}(#t154, #t155) in #t155;
-    core::num v11 = let final core::String #t157 = "x" in let final core::num #t158 = this.{self::Test5::[]}(#t157) in let final void #t159 = this.{self::Test5::[]=}(#t157, #t158.{core::num::+}(1)) in #t158;
+    core::int v1 = let final core::String #t121 = "x" in let final core::int #t122 = self::getInt() in let final void #t123 = this.{self::Test5::[]=}(#t121, #t122) in #t122;
+    core::num v2 = let final core::String #t124 = "x" in let final core::num #t125 = self::getNum() in let final void #t126 = this.{self::Test5::[]=}(#t124, #t125) in #t125;
+    core::double v3 = let final core::String #t127 = "x" in let final core::double #t128 = self::getDouble() in let final void #t129 = this.{self::Test5::[]=}(#t127, #t128) in #t128;
+    core::num v4 = let final core::String #t130 = "x" in let final core::num #t131 = this.{self::Test5::[]}(#t130) in #t131.{core::num::==}(null) ?{core::num} let final core::int #t132 = self::getInt() in let final void #t133 = this.{self::Test5::[]=}(#t130, #t132) in #t132 : #t131;
+    core::num v5 = let final core::String #t134 = "x" in let final core::num #t135 = this.{self::Test5::[]}(#t134) in #t135.{core::num::==}(null) ?{core::num} let final core::num #t136 = self::getNum() in let final void #t137 = this.{self::Test5::[]=}(#t134, #t136) in #t136 : #t135;
+    core::num v6 = let final core::String #t138 = "x" in let final core::num #t139 = this.{self::Test5::[]}(#t138) in #t139.{core::num::==}(null) ?{core::num} let final core::double #t140 = self::getDouble() in let final void #t141 = this.{self::Test5::[]=}(#t138, #t140) in #t140 : #t139;
+    core::num v7 = let final core::String #t142 = "x" in let final core::num #t143 = this.{self::Test5::[]}(#t142).{core::num::+}(self::getInt()) in let final void #t144 = this.{self::Test5::[]=}(#t142, #t143) in #t143;
+    core::num v8 = let final core::String #t145 = "x" in let final core::num #t146 = this.{self::Test5::[]}(#t145).{core::num::+}(self::getNum()) in let final void #t147 = this.{self::Test5::[]=}(#t145, #t146) in #t146;
+    core::num v9 = let final core::String #t148 = "x" in let final core::num #t149 = this.{self::Test5::[]}(#t148).{core::num::+}(self::getDouble()) in let final void #t150 = this.{self::Test5::[]=}(#t148, #t149) in #t149;
+    core::num v10 = let final core::String #t151 = "x" in let final core::num #t152 = this.{self::Test5::[]}(#t151).{core::num::+}(1) in let final void #t153 = this.{self::Test5::[]=}(#t151, #t152) in #t152;
+    core::num v11 = let final core::String #t154 = "x" in let final core::num #t155 = this.{self::Test5::[]}(#t154) in let final void #t156 = this.{self::Test5::[]=}(#t154, #t155.{core::num::+}(1)) in #t155;
   }
 }
 abstract class Test6 extends core::Object {
@@ -147,15 +147,15 @@
   abstract operator [](core::String s) → core::num;
   abstract operator []=(core::String s, core::double v) → void;
   method test() → void {
-    core::num v2 = let final core::String #t160 = "x" in let final core::num #t161 = self::getNum() as{TypeError} core::double in let final void #t162 = this.{self::Test6::[]=}(#t160, #t161) in #t161;
-    core::double v3 = let final core::String #t163 = "x" in let final core::double #t164 = self::getDouble() in let final void #t165 = this.{self::Test6::[]=}(#t163, #t164) in #t164;
-    core::num v5 = let final core::String #t166 = "x" in let final core::num #t167 = this.{self::Test6::[]}(#t166) in #t167.{core::num::==}(null) ?{core::num} let final core::num #t168 = self::getNum() as{TypeError} core::double in let final void #t169 = this.{self::Test6::[]=}(#t166, #t168) in #t168 : #t167;
-    core::num v6 = let final core::String #t170 = "x" in let final core::num #t171 = this.{self::Test6::[]}(#t170) in #t171.{core::num::==}(null) ?{core::num} let final core::double #t172 = self::getDouble() in let final void #t173 = this.{self::Test6::[]=}(#t170, #t172) in #t172 : #t171;
-    core::num v7 = let final core::String #t174 = "x" in let final core::num #t175 = this.{self::Test6::[]}(#t174).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t176 = this.{self::Test6::[]=}(#t174, #t175) in #t175;
-    core::num v8 = let final core::String #t177 = "x" in let final core::num #t178 = this.{self::Test6::[]}(#t177).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t179 = this.{self::Test6::[]=}(#t177, #t178) in #t178;
-    core::num v9 = let final core::String #t180 = "x" in let final core::num #t181 = this.{self::Test6::[]}(#t180).{core::num::+}(self::getDouble()) as{TypeError} core::double in let final void #t182 = this.{self::Test6::[]=}(#t180, #t181) in #t181;
-    core::num v10 = let final core::String #t183 = "x" in let final core::num #t184 = this.{self::Test6::[]}(#t183).{core::num::+}(1) as{TypeError} core::double in let final void #t185 = this.{self::Test6::[]=}(#t183, #t184) in #t184;
-    core::num v11 = let final core::String #t186 = "x" in let final core::num #t187 = this.{self::Test6::[]}(#t186) in let final void #t188 = this.{self::Test6::[]=}(#t186, #t187.{core::num::+}(1) as{TypeError} core::double) in #t187;
+    core::num v2 = let final core::String #t157 = "x" in let final core::num #t158 = self::getNum() as{TypeError} core::double in let final void #t159 = this.{self::Test6::[]=}(#t157, #t158) in #t158;
+    core::double v3 = let final core::String #t160 = "x" in let final core::double #t161 = self::getDouble() in let final void #t162 = this.{self::Test6::[]=}(#t160, #t161) in #t161;
+    core::num v5 = let final core::String #t163 = "x" in let final core::num #t164 = this.{self::Test6::[]}(#t163) in #t164.{core::num::==}(null) ?{core::num} let final core::num #t165 = self::getNum() as{TypeError} core::double in let final void #t166 = this.{self::Test6::[]=}(#t163, #t165) in #t165 : #t164;
+    core::num v6 = let final core::String #t167 = "x" in let final core::num #t168 = this.{self::Test6::[]}(#t167) in #t168.{core::num::==}(null) ?{core::num} let final core::double #t169 = self::getDouble() in let final void #t170 = this.{self::Test6::[]=}(#t167, #t169) in #t169 : #t168;
+    core::num v7 = let final core::String #t171 = "x" in let final core::num #t172 = this.{self::Test6::[]}(#t171).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t173 = this.{self::Test6::[]=}(#t171, #t172) in #t172;
+    core::num v8 = let final core::String #t174 = "x" in let final core::num #t175 = this.{self::Test6::[]}(#t174).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t176 = this.{self::Test6::[]=}(#t174, #t175) in #t175;
+    core::num v9 = let final core::String #t177 = "x" in let final core::num #t178 = this.{self::Test6::[]}(#t177).{core::num::+}(self::getDouble()) as{TypeError} core::double in let final void #t179 = this.{self::Test6::[]=}(#t177, #t178) in #t178;
+    core::num v10 = let final core::String #t180 = "x" in let final core::num #t181 = this.{self::Test6::[]}(#t180).{core::num::+}(1) as{TypeError} core::double in let final void #t182 = this.{self::Test6::[]=}(#t180, #t181) in #t181;
+    core::num v11 = let final core::String #t183 = "x" in let final core::num #t184 = this.{self::Test6::[]}(#t183) in let final void #t185 = this.{self::Test6::[]=}(#t183, #t184.{core::num::+}(1) as{TypeError} core::double) in #t184;
   }
 }
 abstract class Test7 extends core::Object {
@@ -165,26 +165,26 @@
   abstract operator [](core::String s) → core::double;
   abstract operator []=(core::String s, core::int v) → void;
   method test() → void {
-    core::int v1 = let final core::String #t189 = "x" in let final core::int #t190 = self::getInt() in let final void #t191 = this.{self::Test7::[]=}(#t189, #t190) in #t190;
-    core::num v2 = let final core::String #t192 = "x" in let final core::num #t193 = self::getNum() as{TypeError} core::int in let final void #t194 = this.{self::Test7::[]=}(#t192, #t193) in #t193;
-    core::num v4 = let final core::String #t195 = "x" in let final core::double #t196 = this.{self::Test7::[]}(#t195) in #t196.{core::num::==}(null) ?{core::num} let final core::int #t197 = self::getInt() in let final void #t198 = this.{self::Test7::[]=}(#t195, #t197) in #t197 : #t196;
-    core::num v5 = let final core::String #t199 = "x" in let final core::double #t200 = this.{self::Test7::[]}(#t199) in #t200.{core::num::==}(null) ?{core::num} let final core::num #t201 = self::getNum() as{TypeError} core::int in let final void #t202 = this.{self::Test7::[]=}(#t199, #t201) in #t201 : #t200;
-    core::double v7 = let final core::String #t203 = "x" in let final core::double #t204 = let dynamic _ = null in let final dynamic #t205 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:125:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+    core::int v1 = let final core::String #t186 = "x" in let final core::int #t187 = self::getInt() in let final void #t188 = this.{self::Test7::[]=}(#t186, #t187) in #t187;
+    core::num v2 = let final core::String #t189 = "x" in let final core::num #t190 = self::getNum() as{TypeError} core::int in let final void #t191 = this.{self::Test7::[]=}(#t189, #t190) in #t190;
+    core::num v4 = let final core::String #t192 = "x" in let final core::double #t193 = this.{self::Test7::[]}(#t192) in #t193.{core::num::==}(null) ?{core::num} let final core::int #t194 = self::getInt() in let final void #t195 = this.{self::Test7::[]=}(#t192, #t194) in #t194 : #t193;
+    core::num v5 = let final core::String #t196 = "x" in let final core::double #t197 = this.{self::Test7::[]}(#t196) in #t197.{core::num::==}(null) ?{core::num} let final core::num #t198 = self::getNum() as{TypeError} core::int in let final void #t199 = this.{self::Test7::[]=}(#t196, #t198) in #t198 : #t197;
+    core::double v7 = let final core::String #t200 = "x" in let final core::double #t201 = let final<BottomType> #t202 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:125:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v7 = this /*@target=Test7::[]=*/ ['x'] += getInt();
-                                                                ^" in let final dynamic #t206 = this.{self::Test7::[]}(#t203).{core::double::+}(self::getInt()) in null in let final void #t207 = this.{self::Test7::[]=}(#t203, #t204) in #t204;
-    core::double v8 = let final core::String #t208 = "x" in let final core::double #t209 = let dynamic _ = null in let final dynamic #t210 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:126:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                                ^" in this.{self::Test7::[]}(#t200).{core::double::+}(self::getInt()) as{TypeError} core::int in let final void #t203 = this.{self::Test7::[]=}(#t200, #t201) in #t201;
+    core::double v8 = let final core::String #t204 = "x" in let final core::double #t205 = let final<BottomType> #t206 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:126:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v8 = this /*@target=Test7::[]=*/ ['x'] += getNum();
-                                                                ^" in let final dynamic #t211 = this.{self::Test7::[]}(#t208).{core::double::+}(self::getNum()) in null in let final void #t212 = this.{self::Test7::[]=}(#t208, #t209) in #t209;
-    core::double v10 = let final core::String #t213 = "x" in let final core::double #t214 = let dynamic _ = null in let final dynamic #t215 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:127:32: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                                ^" in this.{self::Test7::[]}(#t204).{core::double::+}(self::getNum()) as{TypeError} core::int in let final void #t207 = this.{self::Test7::[]=}(#t204, #t205) in #t205;
+    core::double v10 = let final core::String #t208 = "x" in let final core::double #t209 = let final<BottomType> #t210 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:127:32: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v10 = ++this /*@target=Test7::[]=*/ ['x'];
-                               ^" in let final dynamic #t216 = this.{self::Test7::[]}(#t213).{core::double::+}(1) in null in let final void #t217 = this.{self::Test7::[]=}(#t213, #t214) in #t214;
-    core::double v11 = let final core::String #t218 = "x" in let final core::double #t219 = this.{self::Test7::[]}(#t218) in let final void #t220 = this.{self::Test7::[]=}(#t218, let dynamic _ = null in let final dynamic #t221 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:128:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                               ^" in this.{self::Test7::[]}(#t208).{core::double::+}(1) as{TypeError} core::int in let final void #t211 = this.{self::Test7::[]=}(#t208, #t209) in #t209;
+    core::double v11 = let final core::String #t212 = "x" in let final core::double #t213 = this.{self::Test7::[]}(#t212) in let final void #t214 = this.{self::Test7::[]=}(#t212, let final<BottomType> #t215 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:128:65: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
     var /*@type=double*/ v11 = this /*@target=Test7::[]=*/ ['x']++;
-                                                                ^" in let final dynamic #t222 = #t219.{core::double::+}(1) in null) in #t219;
+                                                                ^" in #t213.{core::double::+}(1) as{TypeError} core::int) in #t213;
   }
 }
 abstract class Test8 extends core::Object {
@@ -194,17 +194,17 @@
   abstract operator [](core::String s) → core::double;
   abstract operator []=(core::String s, core::num v) → void;
   method test() → void {
-    core::int v1 = let final core::String #t223 = "x" in let final core::int #t224 = self::getInt() in let final void #t225 = this.{self::Test8::[]=}(#t223, #t224) in #t224;
-    core::num v2 = let final core::String #t226 = "x" in let final core::num #t227 = self::getNum() in let final void #t228 = this.{self::Test8::[]=}(#t226, #t227) in #t227;
-    core::double v3 = let final core::String #t229 = "x" in let final core::double #t230 = self::getDouble() in let final void #t231 = this.{self::Test8::[]=}(#t229, #t230) in #t230;
-    core::num v4 = let final core::String #t232 = "x" in let final core::double #t233 = this.{self::Test8::[]}(#t232) in #t233.{core::num::==}(null) ?{core::num} let final core::int #t234 = self::getInt() in let final void #t235 = this.{self::Test8::[]=}(#t232, #t234) in #t234 : #t233;
-    core::num v5 = let final core::String #t236 = "x" in let final core::double #t237 = this.{self::Test8::[]}(#t236) in #t237.{core::num::==}(null) ?{core::num} let final core::num #t238 = self::getNum() in let final void #t239 = this.{self::Test8::[]=}(#t236, #t238) in #t238 : #t237;
-    core::double v6 = let final core::String #t240 = "x" in let final core::double #t241 = this.{self::Test8::[]}(#t240) in #t241.{core::num::==}(null) ?{core::double} let final core::double #t242 = self::getDouble() in let final void #t243 = this.{self::Test8::[]=}(#t240, #t242) in #t242 : #t241;
-    core::double v7 = let final core::String #t244 = "x" in let final core::double #t245 = this.{self::Test8::[]}(#t244).{core::double::+}(self::getInt()) in let final void #t246 = this.{self::Test8::[]=}(#t244, #t245) in #t245;
-    core::double v8 = let final core::String #t247 = "x" in let final core::double #t248 = this.{self::Test8::[]}(#t247).{core::double::+}(self::getNum()) in let final void #t249 = this.{self::Test8::[]=}(#t247, #t248) in #t248;
-    core::double v9 = let final core::String #t250 = "x" in let final core::double #t251 = this.{self::Test8::[]}(#t250).{core::double::+}(self::getDouble()) in let final void #t252 = this.{self::Test8::[]=}(#t250, #t251) in #t251;
-    core::double v10 = let final core::String #t253 = "x" in let final core::double #t254 = this.{self::Test8::[]}(#t253).{core::double::+}(1) in let final void #t255 = this.{self::Test8::[]=}(#t253, #t254) in #t254;
-    core::double v11 = let final core::String #t256 = "x" in let final core::double #t257 = this.{self::Test8::[]}(#t256) in let final void #t258 = this.{self::Test8::[]=}(#t256, #t257.{core::double::+}(1)) in #t257;
+    core::int v1 = let final core::String #t216 = "x" in let final core::int #t217 = self::getInt() in let final void #t218 = this.{self::Test8::[]=}(#t216, #t217) in #t217;
+    core::num v2 = let final core::String #t219 = "x" in let final core::num #t220 = self::getNum() in let final void #t221 = this.{self::Test8::[]=}(#t219, #t220) in #t220;
+    core::double v3 = let final core::String #t222 = "x" in let final core::double #t223 = self::getDouble() in let final void #t224 = this.{self::Test8::[]=}(#t222, #t223) in #t223;
+    core::num v4 = let final core::String #t225 = "x" in let final core::double #t226 = this.{self::Test8::[]}(#t225) in #t226.{core::num::==}(null) ?{core::num} let final core::int #t227 = self::getInt() in let final void #t228 = this.{self::Test8::[]=}(#t225, #t227) in #t227 : #t226;
+    core::num v5 = let final core::String #t229 = "x" in let final core::double #t230 = this.{self::Test8::[]}(#t229) in #t230.{core::num::==}(null) ?{core::num} let final core::num #t231 = self::getNum() in let final void #t232 = this.{self::Test8::[]=}(#t229, #t231) in #t231 : #t230;
+    core::double v6 = let final core::String #t233 = "x" in let final core::double #t234 = this.{self::Test8::[]}(#t233) in #t234.{core::num::==}(null) ?{core::double} let final core::double #t235 = self::getDouble() in let final void #t236 = this.{self::Test8::[]=}(#t233, #t235) in #t235 : #t234;
+    core::double v7 = let final core::String #t237 = "x" in let final core::double #t238 = this.{self::Test8::[]}(#t237).{core::double::+}(self::getInt()) in let final void #t239 = this.{self::Test8::[]=}(#t237, #t238) in #t238;
+    core::double v8 = let final core::String #t240 = "x" in let final core::double #t241 = this.{self::Test8::[]}(#t240).{core::double::+}(self::getNum()) in let final void #t242 = this.{self::Test8::[]=}(#t240, #t241) in #t241;
+    core::double v9 = let final core::String #t243 = "x" in let final core::double #t244 = this.{self::Test8::[]}(#t243).{core::double::+}(self::getDouble()) in let final void #t245 = this.{self::Test8::[]=}(#t243, #t244) in #t244;
+    core::double v10 = let final core::String #t246 = "x" in let final core::double #t247 = this.{self::Test8::[]}(#t246).{core::double::+}(1) in let final void #t248 = this.{self::Test8::[]=}(#t246, #t247) in #t247;
+    core::double v11 = let final core::String #t249 = "x" in let final core::double #t250 = this.{self::Test8::[]}(#t249) in let final void #t251 = this.{self::Test8::[]=}(#t249, #t250.{core::double::+}(1)) in #t250;
   }
 }
 abstract class Test9 extends core::Object {
@@ -214,15 +214,15 @@
   abstract operator [](core::String s) → core::double;
   abstract operator []=(core::String s, core::double v) → void;
   method test() → void {
-    core::num v2 = let final core::String #t259 = "x" in let final core::num #t260 = self::getNum() as{TypeError} core::double in let final void #t261 = this.{self::Test9::[]=}(#t259, #t260) in #t260;
-    core::double v3 = let final core::String #t262 = "x" in let final core::double #t263 = self::getDouble() in let final void #t264 = this.{self::Test9::[]=}(#t262, #t263) in #t263;
-    core::num v5 = let final core::String #t265 = "x" in let final core::double #t266 = this.{self::Test9::[]}(#t265) in #t266.{core::num::==}(null) ?{core::num} let final core::num #t267 = self::getNum() as{TypeError} core::double in let final void #t268 = this.{self::Test9::[]=}(#t265, #t267) in #t267 : #t266;
-    core::double v6 = let final core::String #t269 = "x" in let final core::double #t270 = this.{self::Test9::[]}(#t269) in #t270.{core::num::==}(null) ?{core::double} let final core::double #t271 = self::getDouble() in let final void #t272 = this.{self::Test9::[]=}(#t269, #t271) in #t271 : #t270;
-    core::double v7 = let final core::String #t273 = "x" in let final core::double #t274 = this.{self::Test9::[]}(#t273).{core::double::+}(self::getInt()) in let final void #t275 = this.{self::Test9::[]=}(#t273, #t274) in #t274;
-    core::double v8 = let final core::String #t276 = "x" in let final core::double #t277 = this.{self::Test9::[]}(#t276).{core::double::+}(self::getNum()) in let final void #t278 = this.{self::Test9::[]=}(#t276, #t277) in #t277;
-    core::double v9 = let final core::String #t279 = "x" in let final core::double #t280 = this.{self::Test9::[]}(#t279).{core::double::+}(self::getDouble()) in let final void #t281 = this.{self::Test9::[]=}(#t279, #t280) in #t280;
-    core::double v10 = let final core::String #t282 = "x" in let final core::double #t283 = this.{self::Test9::[]}(#t282).{core::double::+}(1) in let final void #t284 = this.{self::Test9::[]=}(#t282, #t283) in #t283;
-    core::double v11 = let final core::String #t285 = "x" in let final core::double #t286 = this.{self::Test9::[]}(#t285) in let final void #t287 = this.{self::Test9::[]=}(#t285, #t286.{core::double::+}(1)) in #t286;
+    core::num v2 = let final core::String #t252 = "x" in let final core::num #t253 = self::getNum() as{TypeError} core::double in let final void #t254 = this.{self::Test9::[]=}(#t252, #t253) in #t253;
+    core::double v3 = let final core::String #t255 = "x" in let final core::double #t256 = self::getDouble() in let final void #t257 = this.{self::Test9::[]=}(#t255, #t256) in #t256;
+    core::num v5 = let final core::String #t258 = "x" in let final core::double #t259 = this.{self::Test9::[]}(#t258) in #t259.{core::num::==}(null) ?{core::num} let final core::num #t260 = self::getNum() as{TypeError} core::double in let final void #t261 = this.{self::Test9::[]=}(#t258, #t260) in #t260 : #t259;
+    core::double v6 = let final core::String #t262 = "x" in let final core::double #t263 = this.{self::Test9::[]}(#t262) in #t263.{core::num::==}(null) ?{core::double} let final core::double #t264 = self::getDouble() in let final void #t265 = this.{self::Test9::[]=}(#t262, #t264) in #t264 : #t263;
+    core::double v7 = let final core::String #t266 = "x" in let final core::double #t267 = this.{self::Test9::[]}(#t266).{core::double::+}(self::getInt()) in let final void #t268 = this.{self::Test9::[]=}(#t266, #t267) in #t267;
+    core::double v8 = let final core::String #t269 = "x" in let final core::double #t270 = this.{self::Test9::[]}(#t269).{core::double::+}(self::getNum()) in let final void #t271 = this.{self::Test9::[]=}(#t269, #t270) in #t270;
+    core::double v9 = let final core::String #t272 = "x" in let final core::double #t273 = this.{self::Test9::[]}(#t272).{core::double::+}(self::getDouble()) in let final void #t274 = this.{self::Test9::[]=}(#t272, #t273) in #t273;
+    core::double v10 = let final core::String #t275 = "x" in let final core::double #t276 = this.{self::Test9::[]}(#t275).{core::double::+}(1) in let final void #t277 = this.{self::Test9::[]=}(#t275, #t276) in #t276;
+    core::double v11 = let final core::String #t278 = "x" in let final core::double #t279 = this.{self::Test9::[]}(#t278) in let final void #t280 = this.{self::Test9::[]=}(#t278, #t279.{core::double::+}(1)) in #t279;
   }
 }
 static method getInt() → core::int
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect
index c3edbb3..afd73c7 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart.strong.expect
@@ -80,99 +80,99 @@
   core::double v3 = let final self::Test<core::int, core::double> #t86 = t in let final core::String #t87 = "x" in let final core::double #t88 = self::getDouble() in let final void #t89 = #t86.{self::Test::[]=}(#t87, #t88) in #t88;
   core::num v5 = let final self::Test<core::int, core::double> #t90 = t in let final core::String #t91 = "x" in let final core::int #t92 = #t90.{self::Test::[]}(#t91) in #t92.{core::num::==}(null) ?{core::num} let final core::num #t93 = self::getNum() as{TypeError} core::double in let final void #t94 = #t90.{self::Test::[]=}(#t91, #t93) in #t93 : #t92;
   core::num v6 = let final self::Test<core::int, core::double> #t95 = t in let final core::String #t96 = "x" in let final core::int #t97 = #t95.{self::Test::[]}(#t96) in #t97.{core::num::==}(null) ?{core::num} let final core::double #t98 = self::getDouble() in let final void #t99 = #t95.{self::Test::[]=}(#t96, #t98) in #t98 : #t97;
-  core::int v7 = let final self::Test<core::int, core::double> #t100 = t in let final core::String #t101 = "x" in let final core::int #t102 = let dynamic _ = null in let final dynamic #t103 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:47:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+  core::int v7 = let final self::Test<core::int, core::double> #t100 = t in let final core::String #t101 = "x" in let final core::int #t102 = let final<BottomType> #t103 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:47:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
   var /*@type=int*/ v7 = t /*@target=Test::[]=*/ ['x'] += getInt();
-                                                       ^" in let final dynamic #t104 = #t100.{self::Test::[]}(#t101).{core::num::+}(self::getInt()) in null in let final void #t105 = #t100.{self::Test::[]=}(#t101, #t102) in #t102;
-  core::num v8 = let final self::Test<core::int, core::double> #t106 = t in let final core::String #t107 = "x" in let final core::num #t108 = #t106.{self::Test::[]}(#t107).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t109 = #t106.{self::Test::[]=}(#t107, #t108) in #t108;
-  core::double v9 = let final self::Test<core::int, core::double> #t110 = t in let final core::String #t111 = "x" in let final core::double #t112 = #t110.{self::Test::[]}(#t111).{core::num::+}(self::getDouble()) in let final void #t113 = #t110.{self::Test::[]=}(#t111, #t112) in #t112;
-  core::int v10 = let final self::Test<core::int, core::double> #t114 = t in let final core::String #t115 = "x" in let final core::int #t116 = let dynamic _ = null in let final dynamic #t117 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:50:27: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+                                                       ^" in #t100.{self::Test::[]}(#t101).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t104 = #t100.{self::Test::[]=}(#t101, #t102) in #t102;
+  core::num v8 = let final self::Test<core::int, core::double> #t105 = t in let final core::String #t106 = "x" in let final core::num #t107 = #t105.{self::Test::[]}(#t106).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t108 = #t105.{self::Test::[]=}(#t106, #t107) in #t107;
+  core::double v9 = let final self::Test<core::int, core::double> #t109 = t in let final core::String #t110 = "x" in let final core::double #t111 = #t109.{self::Test::[]}(#t110).{core::num::+}(self::getDouble()) in let final void #t112 = #t109.{self::Test::[]=}(#t110, #t111) in #t111;
+  core::int v10 = let final self::Test<core::int, core::double> #t113 = t in let final core::String #t114 = "x" in let final core::int #t115 = let final<BottomType> #t116 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:50:27: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
   var /*@type=int*/ v10 = ++t /*@target=Test::[]=*/ ['x'];
-                          ^" in let final dynamic #t118 = #t114.{self::Test::[]}(#t115).{core::num::+}(1) in null in let final void #t119 = #t114.{self::Test::[]=}(#t115, #t116) in #t116;
-  core::int v11 = let final self::Test<core::int, core::double> #t120 = t in let final core::String #t121 = "x" in let final core::int #t122 = #t120.{self::Test::[]}(#t121) in let final void #t123 = #t120.{self::Test::[]=}(#t121, let dynamic _ = null in let final dynamic #t124 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:51:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
+                          ^" in #t113.{self::Test::[]}(#t114).{core::num::+}(1) as{TypeError} core::double in let final void #t117 = #t113.{self::Test::[]=}(#t114, #t115) in #t115;
+  core::int v11 = let final self::Test<core::int, core::double> #t118 = t in let final core::String #t119 = "x" in let final core::int #t120 = #t118.{self::Test::[]}(#t119) in let final void #t121 = #t118.{self::Test::[]=}(#t119, let final<BottomType> #t122 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:51:56: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'dart.core::double'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::double'.
   var /*@type=int*/ v11 = t /*@target=Test::[]=*/ ['x']++;
-                                                       ^" in let final dynamic #t125 = #t122.{core::num::+}(1) in null) in #t122;
+                                                       ^" in #t120.{core::num::+}(1) as{TypeError} core::double) in #t120;
 }
 static method test4(self::Test<core::num, core::int> t) → void {
-  core::int v1 = let final self::Test<core::num, core::int> #t126 = t in let final core::String #t127 = "x" in let final core::int #t128 = self::getInt() in let final void #t129 = #t126.{self::Test::[]=}(#t127, #t128) in #t128;
-  core::num v2 = let final self::Test<core::num, core::int> #t130 = t in let final core::String #t131 = "x" in let final core::num #t132 = self::getNum() as{TypeError} core::int in let final void #t133 = #t130.{self::Test::[]=}(#t131, #t132) in #t132;
-  core::num v4 = let final self::Test<core::num, core::int> #t134 = t in let final core::String #t135 = "x" in let final core::num #t136 = #t134.{self::Test::[]}(#t135) in #t136.{core::num::==}(null) ?{core::num} let final core::int #t137 = self::getInt() in let final void #t138 = #t134.{self::Test::[]=}(#t135, #t137) in #t137 : #t136;
-  core::num v5 = let final self::Test<core::num, core::int> #t139 = t in let final core::String #t140 = "x" in let final core::num #t141 = #t139.{self::Test::[]}(#t140) in #t141.{core::num::==}(null) ?{core::num} let final core::num #t142 = self::getNum() as{TypeError} core::int in let final void #t143 = #t139.{self::Test::[]=}(#t140, #t142) in #t142 : #t141;
-  core::num v7 = let final self::Test<core::num, core::int> #t144 = t in let final core::String #t145 = "x" in let final core::num #t146 = #t144.{self::Test::[]}(#t145).{core::num::+}(self::getInt()) as{TypeError} core::int in let final void #t147 = #t144.{self::Test::[]=}(#t145, #t146) in #t146;
-  core::num v8 = let final self::Test<core::num, core::int> #t148 = t in let final core::String #t149 = "x" in let final core::num #t150 = #t148.{self::Test::[]}(#t149).{core::num::+}(self::getNum()) as{TypeError} core::int in let final void #t151 = #t148.{self::Test::[]=}(#t149, #t150) in #t150;
-  core::num v10 = let final self::Test<core::num, core::int> #t152 = t in let final core::String #t153 = "x" in let final core::num #t154 = #t152.{self::Test::[]}(#t153).{core::num::+}(1) as{TypeError} core::int in let final void #t155 = #t152.{self::Test::[]=}(#t153, #t154) in #t154;
-  core::num v11 = let final self::Test<core::num, core::int> #t156 = t in let final core::String #t157 = "x" in let final core::num #t158 = #t156.{self::Test::[]}(#t157) in let final void #t159 = #t156.{self::Test::[]=}(#t157, #t158.{core::num::+}(1) as{TypeError} core::int) in #t158;
+  core::int v1 = let final self::Test<core::num, core::int> #t123 = t in let final core::String #t124 = "x" in let final core::int #t125 = self::getInt() in let final void #t126 = #t123.{self::Test::[]=}(#t124, #t125) in #t125;
+  core::num v2 = let final self::Test<core::num, core::int> #t127 = t in let final core::String #t128 = "x" in let final core::num #t129 = self::getNum() as{TypeError} core::int in let final void #t130 = #t127.{self::Test::[]=}(#t128, #t129) in #t129;
+  core::num v4 = let final self::Test<core::num, core::int> #t131 = t in let final core::String #t132 = "x" in let final core::num #t133 = #t131.{self::Test::[]}(#t132) in #t133.{core::num::==}(null) ?{core::num} let final core::int #t134 = self::getInt() in let final void #t135 = #t131.{self::Test::[]=}(#t132, #t134) in #t134 : #t133;
+  core::num v5 = let final self::Test<core::num, core::int> #t136 = t in let final core::String #t137 = "x" in let final core::num #t138 = #t136.{self::Test::[]}(#t137) in #t138.{core::num::==}(null) ?{core::num} let final core::num #t139 = self::getNum() as{TypeError} core::int in let final void #t140 = #t136.{self::Test::[]=}(#t137, #t139) in #t139 : #t138;
+  core::num v7 = let final self::Test<core::num, core::int> #t141 = t in let final core::String #t142 = "x" in let final core::num #t143 = #t141.{self::Test::[]}(#t142).{core::num::+}(self::getInt()) as{TypeError} core::int in let final void #t144 = #t141.{self::Test::[]=}(#t142, #t143) in #t143;
+  core::num v8 = let final self::Test<core::num, core::int> #t145 = t in let final core::String #t146 = "x" in let final core::num #t147 = #t145.{self::Test::[]}(#t146).{core::num::+}(self::getNum()) as{TypeError} core::int in let final void #t148 = #t145.{self::Test::[]=}(#t146, #t147) in #t147;
+  core::num v10 = let final self::Test<core::num, core::int> #t149 = t in let final core::String #t150 = "x" in let final core::num #t151 = #t149.{self::Test::[]}(#t150).{core::num::+}(1) as{TypeError} core::int in let final void #t152 = #t149.{self::Test::[]=}(#t150, #t151) in #t151;
+  core::num v11 = let final self::Test<core::num, core::int> #t153 = t in let final core::String #t154 = "x" in let final core::num #t155 = #t153.{self::Test::[]}(#t154) in let final void #t156 = #t153.{self::Test::[]=}(#t154, #t155.{core::num::+}(1) as{TypeError} core::int) in #t155;
 }
 static method test5(self::Test<core::num, core::num> t) → void {
-  core::int v1 = let final self::Test<core::num, core::num> #t160 = t in let final core::String #t161 = "x" in let final core::int #t162 = self::getInt() in let final void #t163 = #t160.{self::Test::[]=}(#t161, #t162) in #t162;
-  core::num v2 = let final self::Test<core::num, core::num> #t164 = t in let final core::String #t165 = "x" in let final core::num #t166 = self::getNum() in let final void #t167 = #t164.{self::Test::[]=}(#t165, #t166) in #t166;
-  core::double v3 = let final self::Test<core::num, core::num> #t168 = t in let final core::String #t169 = "x" in let final core::double #t170 = self::getDouble() in let final void #t171 = #t168.{self::Test::[]=}(#t169, #t170) in #t170;
-  core::num v4 = let final self::Test<core::num, core::num> #t172 = t in let final core::String #t173 = "x" in let final core::num #t174 = #t172.{self::Test::[]}(#t173) in #t174.{core::num::==}(null) ?{core::num} let final core::int #t175 = self::getInt() in let final void #t176 = #t172.{self::Test::[]=}(#t173, #t175) in #t175 : #t174;
-  core::num v5 = let final self::Test<core::num, core::num> #t177 = t in let final core::String #t178 = "x" in let final core::num #t179 = #t177.{self::Test::[]}(#t178) in #t179.{core::num::==}(null) ?{core::num} let final core::num #t180 = self::getNum() in let final void #t181 = #t177.{self::Test::[]=}(#t178, #t180) in #t180 : #t179;
-  core::num v6 = let final self::Test<core::num, core::num> #t182 = t in let final core::String #t183 = "x" in let final core::num #t184 = #t182.{self::Test::[]}(#t183) in #t184.{core::num::==}(null) ?{core::num} let final core::double #t185 = self::getDouble() in let final void #t186 = #t182.{self::Test::[]=}(#t183, #t185) in #t185 : #t184;
-  core::num v7 = let final self::Test<core::num, core::num> #t187 = t in let final core::String #t188 = "x" in let final core::num #t189 = #t187.{self::Test::[]}(#t188).{core::num::+}(self::getInt()) in let final void #t190 = #t187.{self::Test::[]=}(#t188, #t189) in #t189;
-  core::num v8 = let final self::Test<core::num, core::num> #t191 = t in let final core::String #t192 = "x" in let final core::num #t193 = #t191.{self::Test::[]}(#t192).{core::num::+}(self::getNum()) in let final void #t194 = #t191.{self::Test::[]=}(#t192, #t193) in #t193;
-  core::num v9 = let final self::Test<core::num, core::num> #t195 = t in let final core::String #t196 = "x" in let final core::num #t197 = #t195.{self::Test::[]}(#t196).{core::num::+}(self::getDouble()) in let final void #t198 = #t195.{self::Test::[]=}(#t196, #t197) in #t197;
-  core::num v10 = let final self::Test<core::num, core::num> #t199 = t in let final core::String #t200 = "x" in let final core::num #t201 = #t199.{self::Test::[]}(#t200).{core::num::+}(1) in let final void #t202 = #t199.{self::Test::[]=}(#t200, #t201) in #t201;
-  core::num v11 = let final self::Test<core::num, core::num> #t203 = t in let final core::String #t204 = "x" in let final core::num #t205 = #t203.{self::Test::[]}(#t204) in let final void #t206 = #t203.{self::Test::[]=}(#t204, #t205.{core::num::+}(1)) in #t205;
+  core::int v1 = let final self::Test<core::num, core::num> #t157 = t in let final core::String #t158 = "x" in let final core::int #t159 = self::getInt() in let final void #t160 = #t157.{self::Test::[]=}(#t158, #t159) in #t159;
+  core::num v2 = let final self::Test<core::num, core::num> #t161 = t in let final core::String #t162 = "x" in let final core::num #t163 = self::getNum() in let final void #t164 = #t161.{self::Test::[]=}(#t162, #t163) in #t163;
+  core::double v3 = let final self::Test<core::num, core::num> #t165 = t in let final core::String #t166 = "x" in let final core::double #t167 = self::getDouble() in let final void #t168 = #t165.{self::Test::[]=}(#t166, #t167) in #t167;
+  core::num v4 = let final self::Test<core::num, core::num> #t169 = t in let final core::String #t170 = "x" in let final core::num #t171 = #t169.{self::Test::[]}(#t170) in #t171.{core::num::==}(null) ?{core::num} let final core::int #t172 = self::getInt() in let final void #t173 = #t169.{self::Test::[]=}(#t170, #t172) in #t172 : #t171;
+  core::num v5 = let final self::Test<core::num, core::num> #t174 = t in let final core::String #t175 = "x" in let final core::num #t176 = #t174.{self::Test::[]}(#t175) in #t176.{core::num::==}(null) ?{core::num} let final core::num #t177 = self::getNum() in let final void #t178 = #t174.{self::Test::[]=}(#t175, #t177) in #t177 : #t176;
+  core::num v6 = let final self::Test<core::num, core::num> #t179 = t in let final core::String #t180 = "x" in let final core::num #t181 = #t179.{self::Test::[]}(#t180) in #t181.{core::num::==}(null) ?{core::num} let final core::double #t182 = self::getDouble() in let final void #t183 = #t179.{self::Test::[]=}(#t180, #t182) in #t182 : #t181;
+  core::num v7 = let final self::Test<core::num, core::num> #t184 = t in let final core::String #t185 = "x" in let final core::num #t186 = #t184.{self::Test::[]}(#t185).{core::num::+}(self::getInt()) in let final void #t187 = #t184.{self::Test::[]=}(#t185, #t186) in #t186;
+  core::num v8 = let final self::Test<core::num, core::num> #t188 = t in let final core::String #t189 = "x" in let final core::num #t190 = #t188.{self::Test::[]}(#t189).{core::num::+}(self::getNum()) in let final void #t191 = #t188.{self::Test::[]=}(#t189, #t190) in #t190;
+  core::num v9 = let final self::Test<core::num, core::num> #t192 = t in let final core::String #t193 = "x" in let final core::num #t194 = #t192.{self::Test::[]}(#t193).{core::num::+}(self::getDouble()) in let final void #t195 = #t192.{self::Test::[]=}(#t193, #t194) in #t194;
+  core::num v10 = let final self::Test<core::num, core::num> #t196 = t in let final core::String #t197 = "x" in let final core::num #t198 = #t196.{self::Test::[]}(#t197).{core::num::+}(1) in let final void #t199 = #t196.{self::Test::[]=}(#t197, #t198) in #t198;
+  core::num v11 = let final self::Test<core::num, core::num> #t200 = t in let final core::String #t201 = "x" in let final core::num #t202 = #t200.{self::Test::[]}(#t201) in let final void #t203 = #t200.{self::Test::[]=}(#t201, #t202.{core::num::+}(1)) in #t202;
 }
 static method test6(self::Test<core::num, core::double> t) → void {
-  core::num v2 = let final self::Test<core::num, core::double> #t207 = t in let final core::String #t208 = "x" in let final core::num #t209 = self::getNum() as{TypeError} core::double in let final void #t210 = #t207.{self::Test::[]=}(#t208, #t209) in #t209;
-  core::double v3 = let final self::Test<core::num, core::double> #t211 = t in let final core::String #t212 = "x" in let final core::double #t213 = self::getDouble() in let final void #t214 = #t211.{self::Test::[]=}(#t212, #t213) in #t213;
-  core::num v5 = let final self::Test<core::num, core::double> #t215 = t in let final core::String #t216 = "x" in let final core::num #t217 = #t215.{self::Test::[]}(#t216) in #t217.{core::num::==}(null) ?{core::num} let final core::num #t218 = self::getNum() as{TypeError} core::double in let final void #t219 = #t215.{self::Test::[]=}(#t216, #t218) in #t218 : #t217;
-  core::num v6 = let final self::Test<core::num, core::double> #t220 = t in let final core::String #t221 = "x" in let final core::num #t222 = #t220.{self::Test::[]}(#t221) in #t222.{core::num::==}(null) ?{core::num} let final core::double #t223 = self::getDouble() in let final void #t224 = #t220.{self::Test::[]=}(#t221, #t223) in #t223 : #t222;
-  core::num v7 = let final self::Test<core::num, core::double> #t225 = t in let final core::String #t226 = "x" in let final core::num #t227 = #t225.{self::Test::[]}(#t226).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t228 = #t225.{self::Test::[]=}(#t226, #t227) in #t227;
-  core::num v8 = let final self::Test<core::num, core::double> #t229 = t in let final core::String #t230 = "x" in let final core::num #t231 = #t229.{self::Test::[]}(#t230).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t232 = #t229.{self::Test::[]=}(#t230, #t231) in #t231;
-  core::num v9 = let final self::Test<core::num, core::double> #t233 = t in let final core::String #t234 = "x" in let final core::num #t235 = #t233.{self::Test::[]}(#t234).{core::num::+}(self::getDouble()) as{TypeError} core::double in let final void #t236 = #t233.{self::Test::[]=}(#t234, #t235) in #t235;
-  core::num v10 = let final self::Test<core::num, core::double> #t237 = t in let final core::String #t238 = "x" in let final core::num #t239 = #t237.{self::Test::[]}(#t238).{core::num::+}(1) as{TypeError} core::double in let final void #t240 = #t237.{self::Test::[]=}(#t238, #t239) in #t239;
-  core::num v11 = let final self::Test<core::num, core::double> #t241 = t in let final core::String #t242 = "x" in let final core::num #t243 = #t241.{self::Test::[]}(#t242) in let final void #t244 = #t241.{self::Test::[]=}(#t242, #t243.{core::num::+}(1) as{TypeError} core::double) in #t243;
+  core::num v2 = let final self::Test<core::num, core::double> #t204 = t in let final core::String #t205 = "x" in let final core::num #t206 = self::getNum() as{TypeError} core::double in let final void #t207 = #t204.{self::Test::[]=}(#t205, #t206) in #t206;
+  core::double v3 = let final self::Test<core::num, core::double> #t208 = t in let final core::String #t209 = "x" in let final core::double #t210 = self::getDouble() in let final void #t211 = #t208.{self::Test::[]=}(#t209, #t210) in #t210;
+  core::num v5 = let final self::Test<core::num, core::double> #t212 = t in let final core::String #t213 = "x" in let final core::num #t214 = #t212.{self::Test::[]}(#t213) in #t214.{core::num::==}(null) ?{core::num} let final core::num #t215 = self::getNum() as{TypeError} core::double in let final void #t216 = #t212.{self::Test::[]=}(#t213, #t215) in #t215 : #t214;
+  core::num v6 = let final self::Test<core::num, core::double> #t217 = t in let final core::String #t218 = "x" in let final core::num #t219 = #t217.{self::Test::[]}(#t218) in #t219.{core::num::==}(null) ?{core::num} let final core::double #t220 = self::getDouble() in let final void #t221 = #t217.{self::Test::[]=}(#t218, #t220) in #t220 : #t219;
+  core::num v7 = let final self::Test<core::num, core::double> #t222 = t in let final core::String #t223 = "x" in let final core::num #t224 = #t222.{self::Test::[]}(#t223).{core::num::+}(self::getInt()) as{TypeError} core::double in let final void #t225 = #t222.{self::Test::[]=}(#t223, #t224) in #t224;
+  core::num v8 = let final self::Test<core::num, core::double> #t226 = t in let final core::String #t227 = "x" in let final core::num #t228 = #t226.{self::Test::[]}(#t227).{core::num::+}(self::getNum()) as{TypeError} core::double in let final void #t229 = #t226.{self::Test::[]=}(#t227, #t228) in #t228;
+  core::num v9 = let final self::Test<core::num, core::double> #t230 = t in let final core::String #t231 = "x" in let final core::num #t232 = #t230.{self::Test::[]}(#t231).{core::num::+}(self::getDouble()) as{TypeError} core::double in let final void #t233 = #t230.{self::Test::[]=}(#t231, #t232) in #t232;
+  core::num v10 = let final self::Test<core::num, core::double> #t234 = t in let final core::String #t235 = "x" in let final core::num #t236 = #t234.{self::Test::[]}(#t235).{core::num::+}(1) as{TypeError} core::double in let final void #t237 = #t234.{self::Test::[]=}(#t235, #t236) in #t236;
+  core::num v11 = let final self::Test<core::num, core::double> #t238 = t in let final core::String #t239 = "x" in let final core::num #t240 = #t238.{self::Test::[]}(#t239) in let final void #t241 = #t238.{self::Test::[]=}(#t239, #t240.{core::num::+}(1) as{TypeError} core::double) in #t240;
 }
 static method test7(self::Test<core::double, core::int> t) → void {
-  core::int v1 = let final self::Test<core::double, core::int> #t245 = t in let final core::String #t246 = "x" in let final core::int #t247 = self::getInt() in let final void #t248 = #t245.{self::Test::[]=}(#t246, #t247) in #t247;
-  core::num v2 = let final self::Test<core::double, core::int> #t249 = t in let final core::String #t250 = "x" in let final core::num #t251 = self::getNum() as{TypeError} core::int in let final void #t252 = #t249.{self::Test::[]=}(#t250, #t251) in #t251;
-  core::num v4 = let final self::Test<core::double, core::int> #t253 = t in let final core::String #t254 = "x" in let final core::double #t255 = #t253.{self::Test::[]}(#t254) in #t255.{core::num::==}(null) ?{core::num} let final core::int #t256 = self::getInt() in let final void #t257 = #t253.{self::Test::[]=}(#t254, #t256) in #t256 : #t255;
-  core::num v5 = let final self::Test<core::double, core::int> #t258 = t in let final core::String #t259 = "x" in let final core::double #t260 = #t258.{self::Test::[]}(#t259) in #t260.{core::num::==}(null) ?{core::num} let final core::num #t261 = self::getNum() as{TypeError} core::int in let final void #t262 = #t258.{self::Test::[]=}(#t259, #t261) in #t261 : #t260;
-  core::double v7 = let final self::Test<core::double, core::int> #t263 = t in let final core::String #t264 = "x" in let final core::double #t265 = let dynamic _ = null in let final dynamic #t266 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:96:59: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+  core::int v1 = let final self::Test<core::double, core::int> #t242 = t in let final core::String #t243 = "x" in let final core::int #t244 = self::getInt() in let final void #t245 = #t242.{self::Test::[]=}(#t243, #t244) in #t244;
+  core::num v2 = let final self::Test<core::double, core::int> #t246 = t in let final core::String #t247 = "x" in let final core::num #t248 = self::getNum() as{TypeError} core::int in let final void #t249 = #t246.{self::Test::[]=}(#t247, #t248) in #t248;
+  core::num v4 = let final self::Test<core::double, core::int> #t250 = t in let final core::String #t251 = "x" in let final core::double #t252 = #t250.{self::Test::[]}(#t251) in #t252.{core::num::==}(null) ?{core::num} let final core::int #t253 = self::getInt() in let final void #t254 = #t250.{self::Test::[]=}(#t251, #t253) in #t253 : #t252;
+  core::num v5 = let final self::Test<core::double, core::int> #t255 = t in let final core::String #t256 = "x" in let final core::double #t257 = #t255.{self::Test::[]}(#t256) in #t257.{core::num::==}(null) ?{core::num} let final core::num #t258 = self::getNum() as{TypeError} core::int in let final void #t259 = #t255.{self::Test::[]=}(#t256, #t258) in #t258 : #t257;
+  core::double v7 = let final self::Test<core::double, core::int> #t260 = t in let final core::String #t261 = "x" in let final core::double #t262 = let final<BottomType> #t263 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:96:59: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   var /*@type=double*/ v7 = t /*@target=Test::[]=*/ ['x'] += getInt();
-                                                          ^" in let final dynamic #t267 = #t263.{self::Test::[]}(#t264).{core::double::+}(self::getInt()) in null in let final void #t268 = #t263.{self::Test::[]=}(#t264, #t265) in #t265;
-  core::double v8 = let final self::Test<core::double, core::int> #t269 = t in let final core::String #t270 = "x" in let final core::double #t271 = let dynamic _ = null in let final dynamic #t272 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:97:59: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                          ^" in #t260.{self::Test::[]}(#t261).{core::double::+}(self::getInt()) as{TypeError} core::int in let final void #t264 = #t260.{self::Test::[]=}(#t261, #t262) in #t262;
+  core::double v8 = let final self::Test<core::double, core::int> #t265 = t in let final core::String #t266 = "x" in let final core::double #t267 = let final<BottomType> #t268 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:97:59: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   var /*@type=double*/ v8 = t /*@target=Test::[]=*/ ['x'] += getNum();
-                                                          ^" in let final dynamic #t273 = #t269.{self::Test::[]}(#t270).{core::double::+}(self::getNum()) in null in let final void #t274 = #t269.{self::Test::[]=}(#t270, #t271) in #t271;
-  core::double v10 = let final self::Test<core::double, core::int> #t275 = t in let final core::String #t276 = "x" in let final core::double #t277 = let dynamic _ = null in let final dynamic #t278 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:98:30: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                                                          ^" in #t265.{self::Test::[]}(#t266).{core::double::+}(self::getNum()) as{TypeError} core::int in let final void #t269 = #t265.{self::Test::[]=}(#t266, #t267) in #t267;
+  core::double v10 = let final self::Test<core::double, core::int> #t270 = t in let final core::String #t271 = "x" in let final core::double #t272 = let final<BottomType> #t273 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:98:30: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   var /*@type=double*/ v10 = ++t /*@target=Test::[]=*/ ['x'];
-                             ^" in let final dynamic #t279 = #t275.{self::Test::[]}(#t276).{core::double::+}(1) in null in let final void #t280 = #t275.{self::Test::[]=}(#t276, #t277) in #t277;
-  core::double v11 = let final self::Test<core::double, core::int> #t281 = t in let final core::String #t282 = "x" in let final core::double #t283 = #t281.{self::Test::[]}(#t282) in let final void #t284 = #t281.{self::Test::[]=}(#t282, let dynamic _ = null in let final dynamic #t285 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:99:59: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
+                             ^" in #t270.{self::Test::[]}(#t271).{core::double::+}(1) as{TypeError} core::int in let final void #t274 = #t270.{self::Test::[]=}(#t271, #t272) in #t272;
+  core::double v11 = let final self::Test<core::double, core::int> #t275 = t in let final core::String #t276 = "x" in let final core::double #t277 = #t275.{self::Test::[]}(#t276) in let final void #t278 = #t275.{self::Test::[]=}(#t276, let final<BottomType> #t279 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:99:59: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   var /*@type=double*/ v11 = t /*@target=Test::[]=*/ ['x']++;
-                                                          ^" in let final dynamic #t286 = #t283.{core::double::+}(1) in null) in #t283;
+                                                          ^" in #t277.{core::double::+}(1) as{TypeError} core::int) in #t277;
 }
 static method test8(self::Test<core::double, core::num> t) → void {
-  core::int v1 = let final self::Test<core::double, core::num> #t287 = t in let final core::String #t288 = "x" in let final core::int #t289 = self::getInt() in let final void #t290 = #t287.{self::Test::[]=}(#t288, #t289) in #t289;
-  core::num v2 = let final self::Test<core::double, core::num> #t291 = t in let final core::String #t292 = "x" in let final core::num #t293 = self::getNum() in let final void #t294 = #t291.{self::Test::[]=}(#t292, #t293) in #t293;
-  core::double v3 = let final self::Test<core::double, core::num> #t295 = t in let final core::String #t296 = "x" in let final core::double #t297 = self::getDouble() in let final void #t298 = #t295.{self::Test::[]=}(#t296, #t297) in #t297;
-  core::num v4 = let final self::Test<core::double, core::num> #t299 = t in let final core::String #t300 = "x" in let final core::double #t301 = #t299.{self::Test::[]}(#t300) in #t301.{core::num::==}(null) ?{core::num} let final core::int #t302 = self::getInt() in let final void #t303 = #t299.{self::Test::[]=}(#t300, #t302) in #t302 : #t301;
-  core::num v5 = let final self::Test<core::double, core::num> #t304 = t in let final core::String #t305 = "x" in let final core::double #t306 = #t304.{self::Test::[]}(#t305) in #t306.{core::num::==}(null) ?{core::num} let final core::num #t307 = self::getNum() in let final void #t308 = #t304.{self::Test::[]=}(#t305, #t307) in #t307 : #t306;
-  core::double v6 = let final self::Test<core::double, core::num> #t309 = t in let final core::String #t310 = "x" in let final core::double #t311 = #t309.{self::Test::[]}(#t310) in #t311.{core::num::==}(null) ?{core::double} let final core::double #t312 = self::getDouble() in let final void #t313 = #t309.{self::Test::[]=}(#t310, #t312) in #t312 : #t311;
-  core::double v7 = let final self::Test<core::double, core::num> #t314 = t in let final core::String #t315 = "x" in let final core::double #t316 = #t314.{self::Test::[]}(#t315).{core::double::+}(self::getInt()) in let final void #t317 = #t314.{self::Test::[]=}(#t315, #t316) in #t316;
-  core::double v8 = let final self::Test<core::double, core::num> #t318 = t in let final core::String #t319 = "x" in let final core::double #t320 = #t318.{self::Test::[]}(#t319).{core::double::+}(self::getNum()) in let final void #t321 = #t318.{self::Test::[]=}(#t319, #t320) in #t320;
-  core::double v9 = let final self::Test<core::double, core::num> #t322 = t in let final core::String #t323 = "x" in let final core::double #t324 = #t322.{self::Test::[]}(#t323).{core::double::+}(self::getDouble()) in let final void #t325 = #t322.{self::Test::[]=}(#t323, #t324) in #t324;
-  core::double v10 = let final self::Test<core::double, core::num> #t326 = t in let final core::String #t327 = "x" in let final core::double #t328 = #t326.{self::Test::[]}(#t327).{core::double::+}(1) in let final void #t329 = #t326.{self::Test::[]=}(#t327, #t328) in #t328;
-  core::double v11 = let final self::Test<core::double, core::num> #t330 = t in let final core::String #t331 = "x" in let final core::double #t332 = #t330.{self::Test::[]}(#t331) in let final void #t333 = #t330.{self::Test::[]=}(#t331, #t332.{core::double::+}(1)) in #t332;
+  core::int v1 = let final self::Test<core::double, core::num> #t280 = t in let final core::String #t281 = "x" in let final core::int #t282 = self::getInt() in let final void #t283 = #t280.{self::Test::[]=}(#t281, #t282) in #t282;
+  core::num v2 = let final self::Test<core::double, core::num> #t284 = t in let final core::String #t285 = "x" in let final core::num #t286 = self::getNum() in let final void #t287 = #t284.{self::Test::[]=}(#t285, #t286) in #t286;
+  core::double v3 = let final self::Test<core::double, core::num> #t288 = t in let final core::String #t289 = "x" in let final core::double #t290 = self::getDouble() in let final void #t291 = #t288.{self::Test::[]=}(#t289, #t290) in #t290;
+  core::num v4 = let final self::Test<core::double, core::num> #t292 = t in let final core::String #t293 = "x" in let final core::double #t294 = #t292.{self::Test::[]}(#t293) in #t294.{core::num::==}(null) ?{core::num} let final core::int #t295 = self::getInt() in let final void #t296 = #t292.{self::Test::[]=}(#t293, #t295) in #t295 : #t294;
+  core::num v5 = let final self::Test<core::double, core::num> #t297 = t in let final core::String #t298 = "x" in let final core::double #t299 = #t297.{self::Test::[]}(#t298) in #t299.{core::num::==}(null) ?{core::num} let final core::num #t300 = self::getNum() in let final void #t301 = #t297.{self::Test::[]=}(#t298, #t300) in #t300 : #t299;
+  core::double v6 = let final self::Test<core::double, core::num> #t302 = t in let final core::String #t303 = "x" in let final core::double #t304 = #t302.{self::Test::[]}(#t303) in #t304.{core::num::==}(null) ?{core::double} let final core::double #t305 = self::getDouble() in let final void #t306 = #t302.{self::Test::[]=}(#t303, #t305) in #t305 : #t304;
+  core::double v7 = let final self::Test<core::double, core::num> #t307 = t in let final core::String #t308 = "x" in let final core::double #t309 = #t307.{self::Test::[]}(#t308).{core::double::+}(self::getInt()) in let final void #t310 = #t307.{self::Test::[]=}(#t308, #t309) in #t309;
+  core::double v8 = let final self::Test<core::double, core::num> #t311 = t in let final core::String #t312 = "x" in let final core::double #t313 = #t311.{self::Test::[]}(#t312).{core::double::+}(self::getNum()) in let final void #t314 = #t311.{self::Test::[]=}(#t312, #t313) in #t313;
+  core::double v9 = let final self::Test<core::double, core::num> #t315 = t in let final core::String #t316 = "x" in let final core::double #t317 = #t315.{self::Test::[]}(#t316).{core::double::+}(self::getDouble()) in let final void #t318 = #t315.{self::Test::[]=}(#t316, #t317) in #t317;
+  core::double v10 = let final self::Test<core::double, core::num> #t319 = t in let final core::String #t320 = "x" in let final core::double #t321 = #t319.{self::Test::[]}(#t320).{core::double::+}(1) in let final void #t322 = #t319.{self::Test::[]=}(#t320, #t321) in #t321;
+  core::double v11 = let final self::Test<core::double, core::num> #t323 = t in let final core::String #t324 = "x" in let final core::double #t325 = #t323.{self::Test::[]}(#t324) in let final void #t326 = #t323.{self::Test::[]=}(#t324, #t325.{core::double::+}(1)) in #t325;
 }
 static method test9(self::Test<core::double, core::double> t) → void {
-  core::num v2 = let final self::Test<core::double, core::double> #t334 = t in let final core::String #t335 = "x" in let final core::num #t336 = self::getNum() as{TypeError} core::double in let final void #t337 = #t334.{self::Test::[]=}(#t335, #t336) in #t336;
-  core::double v3 = let final self::Test<core::double, core::double> #t338 = t in let final core::String #t339 = "x" in let final core::double #t340 = self::getDouble() in let final void #t341 = #t338.{self::Test::[]=}(#t339, #t340) in #t340;
-  core::num v5 = let final self::Test<core::double, core::double> #t342 = t in let final core::String #t343 = "x" in let final core::double #t344 = #t342.{self::Test::[]}(#t343) in #t344.{core::num::==}(null) ?{core::num} let final core::num #t345 = self::getNum() as{TypeError} core::double in let final void #t346 = #t342.{self::Test::[]=}(#t343, #t345) in #t345 : #t344;
-  core::double v6 = let final self::Test<core::double, core::double> #t347 = t in let final core::String #t348 = "x" in let final core::double #t349 = #t347.{self::Test::[]}(#t348) in #t349.{core::num::==}(null) ?{core::double} let final core::double #t350 = self::getDouble() in let final void #t351 = #t347.{self::Test::[]=}(#t348, #t350) in #t350 : #t349;
-  core::double v7 = let final self::Test<core::double, core::double> #t352 = t in let final core::String #t353 = "x" in let final core::double #t354 = #t352.{self::Test::[]}(#t353).{core::double::+}(self::getInt()) in let final void #t355 = #t352.{self::Test::[]=}(#t353, #t354) in #t354;
-  core::double v8 = let final self::Test<core::double, core::double> #t356 = t in let final core::String #t357 = "x" in let final core::double #t358 = #t356.{self::Test::[]}(#t357).{core::double::+}(self::getNum()) in let final void #t359 = #t356.{self::Test::[]=}(#t357, #t358) in #t358;
-  core::double v9 = let final self::Test<core::double, core::double> #t360 = t in let final core::String #t361 = "x" in let final core::double #t362 = #t360.{self::Test::[]}(#t361).{core::double::+}(self::getDouble()) in let final void #t363 = #t360.{self::Test::[]=}(#t361, #t362) in #t362;
-  core::double v10 = let final self::Test<core::double, core::double> #t364 = t in let final core::String #t365 = "x" in let final core::double #t366 = #t364.{self::Test::[]}(#t365).{core::double::+}(1) in let final void #t367 = #t364.{self::Test::[]=}(#t365, #t366) in #t366;
-  core::double v11 = let final self::Test<core::double, core::double> #t368 = t in let final core::String #t369 = "x" in let final core::double #t370 = #t368.{self::Test::[]}(#t369) in let final void #t371 = #t368.{self::Test::[]=}(#t369, #t370.{core::double::+}(1)) in #t370;
+  core::num v2 = let final self::Test<core::double, core::double> #t327 = t in let final core::String #t328 = "x" in let final core::num #t329 = self::getNum() as{TypeError} core::double in let final void #t330 = #t327.{self::Test::[]=}(#t328, #t329) in #t329;
+  core::double v3 = let final self::Test<core::double, core::double> #t331 = t in let final core::String #t332 = "x" in let final core::double #t333 = self::getDouble() in let final void #t334 = #t331.{self::Test::[]=}(#t332, #t333) in #t333;
+  core::num v5 = let final self::Test<core::double, core::double> #t335 = t in let final core::String #t336 = "x" in let final core::double #t337 = #t335.{self::Test::[]}(#t336) in #t337.{core::num::==}(null) ?{core::num} let final core::num #t338 = self::getNum() as{TypeError} core::double in let final void #t339 = #t335.{self::Test::[]=}(#t336, #t338) in #t338 : #t337;
+  core::double v6 = let final self::Test<core::double, core::double> #t340 = t in let final core::String #t341 = "x" in let final core::double #t342 = #t340.{self::Test::[]}(#t341) in #t342.{core::num::==}(null) ?{core::double} let final core::double #t343 = self::getDouble() in let final void #t344 = #t340.{self::Test::[]=}(#t341, #t343) in #t343 : #t342;
+  core::double v7 = let final self::Test<core::double, core::double> #t345 = t in let final core::String #t346 = "x" in let final core::double #t347 = #t345.{self::Test::[]}(#t346).{core::double::+}(self::getInt()) in let final void #t348 = #t345.{self::Test::[]=}(#t346, #t347) in #t347;
+  core::double v8 = let final self::Test<core::double, core::double> #t349 = t in let final core::String #t350 = "x" in let final core::double #t351 = #t349.{self::Test::[]}(#t350).{core::double::+}(self::getNum()) in let final void #t352 = #t349.{self::Test::[]=}(#t350, #t351) in #t351;
+  core::double v9 = let final self::Test<core::double, core::double> #t353 = t in let final core::String #t354 = "x" in let final core::double #t355 = #t353.{self::Test::[]}(#t354).{core::double::+}(self::getDouble()) in let final void #t356 = #t353.{self::Test::[]=}(#t354, #t355) in #t355;
+  core::double v10 = let final self::Test<core::double, core::double> #t357 = t in let final core::String #t358 = "x" in let final core::double #t359 = #t357.{self::Test::[]}(#t358).{core::double::+}(1) in let final void #t360 = #t357.{self::Test::[]=}(#t358, #t359) in #t359;
+  core::double v11 = let final self::Test<core::double, core::double> #t361 = t in let final core::String #t362 = "x" in let final core::double #t363 = #t361.{self::Test::[]}(#t362) in let final void #t364 = #t361.{self::Test::[]=}(#t362, #t363.{core::double::+}(1)) in #t363;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect
index e1ed53a..b7fc239 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.expect
@@ -39,20 +39,20 @@
     : super core::Object::•()
     ;
 }
-static field core::int v_prefix_pp = let final self::B #t1 = new self::B::•() in #t1.{self::B::a} = let dynamic _ = null in let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:17:37: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
+static field core::int v_prefix_pp = let final self::B #t1 = new self::B::•() in #t1.{self::B::a} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:17:37: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=int*/ v_prefix_pp = (++new B(). /*@target=B::a*/ a);
-                                    ^" in let final dynamic #t3 = #t1.{self::B::a}.{self::A::+}(1) in null;
-static field core::double v_prefix_mm = let final self::B #t4 = new self::B::•() in #t4.{self::B::a} = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:18:40: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
+                                    ^" in #t1.{self::B::a}.{self::A::+}(1) as{TypeError} self::A;
+static field core::double v_prefix_mm = let final self::B #t3 = new self::B::•() in #t3.{self::B::a} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:18:40: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=double*/ v_prefix_mm = (--new B(). /*@target=B::a*/ a);
-                                       ^" in let final dynamic #t6 = #t4.{self::B::a}.{self::A::-}(1) in null;
-static field self::A v_postfix_pp = let final self::B #t7 = new self::B::•() in let final self::A #t8 = #t7.{self::B::a} in let final core::int #t9 = #t7.{self::B::a} = let dynamic _ = null in let final dynamic #t10 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:19:63: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
+                                       ^" in #t3.{self::B::a}.{self::A::-}(1) as{TypeError} self::A;
+static field self::A v_postfix_pp = let final self::B #t5 = new self::B::•() in let final self::A #t6 = #t5.{self::B::a} in let final core::int #t7 = #t5.{self::B::a} = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:19:63: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=A*/ v_postfix_pp = (new B(). /*@target=B::a*/ a++);
-                                                              ^" in let final dynamic #t11 = #t8.{self::A::+}(1) in null in #t8;
-static field self::A v_postfix_mm = let final self::B #t12 = new self::B::•() in let final self::A #t13 = #t12.{self::B::a} in let final core::double #t14 = #t12.{self::B::a} = let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:20:63: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
+                                                              ^" in #t6.{self::A::+}(1) as{TypeError} self::A in #t6;
+static field self::A v_postfix_mm = let final self::B #t9 = new self::B::•() in let final self::A #t10 = #t9.{self::B::a} in let final core::double #t11 = #t9.{self::B::a} = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:20:63: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=A*/ v_postfix_mm = (new B(). /*@target=B::a*/ a--);
-                                                              ^" in let final dynamic #t16 = #t13.{self::A::-}(1) in null in #t13;
+                                                              ^" in #t10.{self::A::-}(1) as{TypeError} self::A in #t10;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.transformed.expect
index 5cb53bf..7a44f95 100644
--- a/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart.strong.transformed.expect
@@ -17,20 +17,20 @@
     : super core::Object::•()
     ;
 }
-static field core::int v_prefix_pp = let final self::B #t1 = new self::B::•() in #t1.{self::B::a} = let<BottomType> _ = null in let final dynamic #t2 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:17:37: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
+static field core::int v_prefix_pp = let final self::B #t1 = new self::B::•() in #t1.{self::B::a} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:17:37: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=int*/ v_prefix_pp = (++new B(). /*@target=B::a*/ a);
-                                    ^" in let final core::int #t3 = #t1.{self::B::a}.{self::A::+}(1) in null;
-static field core::double v_prefix_mm = let final self::B #t4 = new self::B::•() in #t4.{self::B::a} = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:18:40: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
+                                    ^" in #t1.{self::B::a}.{self::A::+}(1) as{TypeError} <BottomType>;
+static field core::double v_prefix_mm = let final self::B #t3 = new self::B::•() in #t3.{self::B::a} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:18:40: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=double*/ v_prefix_mm = (--new B(). /*@target=B::a*/ a);
-                                       ^" in let final core::double #t6 = #t4.{self::B::a}.{self::A::-}(1) in null;
-static field self::A v_postfix_pp = let final self::B #t7 = new self::B::•() in let final self::A #t8 = #t7.{self::B::a} in let final core::int #t9 = #t7.{self::B::a} = let<BottomType> _ = null in let final dynamic #t10 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:19:63: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
+                                       ^" in #t3.{self::B::a}.{self::A::-}(1) as{TypeError} <BottomType>;
+static field self::A v_postfix_pp = let final self::B #t5 = new self::B::•() in let final self::A #t6 = #t5.{self::B::a} in let final core::int #t7 = #t5.{self::B::a} = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:19:63: Error: A value of type 'dart.core::int' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=A*/ v_postfix_pp = (new B(). /*@target=B::a*/ a++);
-                                                              ^" in let final core::int #t11 = #t8.{self::A::+}(1) in null in #t8;
-static field self::A v_postfix_mm = let final self::B #t12 = new self::B::•() in let final self::A #t13 = #t12.{self::B::a} in let final core::double #t14 = #t12.{self::B::a} = let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:20:63: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
+                                                              ^" in #t6.{self::A::+}(1) as{TypeError} <BottomType>in #t6;
+static field self::A v_postfix_mm = let final self::B #t9 = new self::B::•() in let final self::A #t10 = #t9.{self::B::a} in let final core::double #t11 = #t9.{self::B::a} = let final<BottomType> #t12 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_property_custom.dart:20:63: Error: A value of type 'dart.core::double' can't be assigned to a variable of type 'test::A'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::A'.
 var /*@topType=A*/ v_postfix_mm = (new B(). /*@target=B::a*/ a--);
-                                                              ^" in let final core::double #t16 = #t13.{self::A::-}(1) in null in #t13;
+                                                              ^" in #t10.{self::A::-}(1) as{TypeError} <BottomType>in #t10;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.expect b/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.expect
index eb2c4e2..3089e9a 100644
--- a/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.expect
@@ -11,8 +11,8 @@
 
 static field core::int i;
 static field core::String s;
-static field core::String x = self::i = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart:9:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+static field core::String x = self::i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart:9:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
 var /*@topType=String*/ x = i = /*@error=InvalidAssignment*/ s;
-                                                             ^" in let final dynamic #t2 = self::s in null;
+                                                             ^" in self::s as{TypeError} core::int;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.transformed.expect
index ca548ee..90592a6 100644
--- a/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart.strong.transformed.expect
@@ -4,8 +4,8 @@
 
 static field core::int i;
 static field core::String s;
-static field core::String x = self::i = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart:9:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+static field core::String x = self::i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference_new/invalid_assignment_during_toplevel_inference.dart:9:62: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
 var /*@topType=String*/ x = i = /*@error=InvalidAssignment*/ s;
-                                                             ^" in let final core::String #t2 = self::s in null;
+                                                             ^" in self::s as{TypeError} <BottomType>;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect
index d787a25..f930013 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.expect
@@ -1,14 +1,17 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart:11:13: Error: Can't use a super-bounded type for instance creation. Got '#lib1::B<dart.core::Comparable<dynamic>>'.
-// Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.
+// pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart:11:13: Error: Inferred type argument 'dart.core::Comparable<dynamic>' violates the corresponding type variable bound of 'B::'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
 // var y = new B();
 //             ^
+// pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart:9:9: Context: Bound of this variable is violated.
+// class B<T extends Comparable<T>> {}
+//         ^
 
 // Unhandled errors:
 //
-// pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart:11:13: Error: Can't use a super-bounded type for instance creation. Got '#lib1::B<dart.core::Comparable<dynamic>>'.
-// Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.
+// pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart:11:13: Error: Inferred type argument 'dart.core::Comparable<dynamic>' violates the corresponding type variable bound of 'B::'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
 // var y = new B();
 //             ^
 
diff --git a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect
index 635fc89..2049a0b 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart.strong.transformed.expect
@@ -1,7 +1,7 @@
 // Unhandled errors:
 //
-// pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart:11:13: Error: Can't use a super-bounded type for instance creation. Got '#lib1::B<dart.core::Comparable<dynamic>>'.
-// Specify a regular-bounded type instead of the super-bounded type. Note that the latter may be due to type inference.
+// pkg/front_end/testcases/instantiate_to_bound/inference_super_bounded_rejected.dart:11:13: Error: Inferred type argument 'dart.core::Comparable<dynamic>' violates the corresponding type variable bound of 'B::'.
+// Try specifying type arguments explicitly so that they conform to the bounds.
 // var y = new B();
 //             ^
 
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect
index 1abbde3..61da753 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.expect
@@ -4,6 +4,11 @@
 // Try providing type arguments to 'LinkedListEntry' here.
 // class Hest<X extends LinkedListEntry> {}
 //            ^
+//
+// pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart:15:12: Error: Type argument 'dart.collection::LinkedListEntry<dynamic>' violates the corresponding type variable bound of 'LinkedListEntry'.
+// Try changing type arguments so that they conform to the bounds.
+// class Hest<X extends LinkedListEntry> {}
+//            ^
 
 // Unhandled errors:
 //
@@ -11,6 +16,11 @@
 // Try providing type arguments to 'LinkedListEntry' here.
 // class Hest<X extends LinkedListEntry> {}
 //            ^
+//
+// pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart:15:12: Error: Type argument 'dart.collection::LinkedListEntry<dynamic>' violates the corresponding type variable bound of 'LinkedListEntry'.
+// Try changing type arguments so that they conform to the bounds.
+// class Hest<X extends LinkedListEntry> {}
+//            ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect
index 9c68c65..5f76923 100644
--- a/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart.strong.transformed.expect
@@ -4,6 +4,11 @@
 // Try providing type arguments to 'LinkedListEntry' here.
 // class Hest<X extends LinkedListEntry> {}
 //            ^
+//
+// pkg/front_end/testcases/instantiate_to_bound/non_simple_from_compiled.dart:15:12: Error: Type argument 'dart.collection::LinkedListEntry<dynamic>' violates the corresponding type variable bound of 'LinkedListEntry'.
+// Try changing type arguments so that they conform to the bounds.
+// class Hest<X extends LinkedListEntry> {}
+//            ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/invalid_assignment.dart.strong.expect b/pkg/front_end/testcases/invalid_assignment.dart.strong.expect
index b3fbf5b..980a78b 100644
--- a/pkg/front_end/testcases/invalid_assignment.dart.strong.expect
+++ b/pkg/front_end/testcases/invalid_assignment.dart.strong.expect
@@ -28,19 +28,19 @@
 }
 static method test(core::int i, core::String s, self::A a) → dynamic {
   i = 1;
-  i = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   i = /*@error=InvalidAssignment*/ s;
-                                   ^" in let final dynamic #t2 = s in null;
+                                   ^" in s as{TypeError} core::int;
   i.{core::num::==}(null) ?{core::int} i = 1 : null;
-  i.{core::num::==}(null) ?{core::Object} i = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  i.{core::num::==}(null) ?{core::Object} i = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   i ??= /*@error=InvalidAssignment*/ s;
-                                     ^" in let final dynamic #t4 = s in null : null;
+                                     ^" in s as{TypeError} core::int : null;
   a = new self::A::•();
-  a = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:17:34: Error: A value of type 'dart.core::String' can't be assigned to a variable of type '#lib1::A'.
+  a = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:17:34: Error: A value of type 'dart.core::String' can't be assigned to a variable of type '#lib1::A'.
 Try changing the type of the left hand side, or casting the right hand side to '#lib1::A'.
   a /*@error=InvalidAssignment*/ += 1;
-                                 ^" in let final dynamic #t6 = a.{self::A::+}(1) in null;
+                                 ^" in a.{self::A::+}(1) as{TypeError} self::A;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/invalid_assignment.dart.strong.transformed.expect b/pkg/front_end/testcases/invalid_assignment.dart.strong.transformed.expect
index c9eaa51..fd3d79d 100644
--- a/pkg/front_end/testcases/invalid_assignment.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/invalid_assignment.dart.strong.transformed.expect
@@ -11,19 +11,19 @@
 }
 static method test(core::int i, core::String s, self::A a) → dynamic {
   i = 1;
-  i = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:13:36: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   i = /*@error=InvalidAssignment*/ s;
-                                   ^" in let final core::String #t2 = s in null;
+                                   ^" in s as{TypeError} core::int;
   i.{core::num::==}(null) ?{core::int} i = 1 : null;
-  i.{core::num::==}(null) ?{core::Object} i = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
+  i.{core::num::==}(null) ?{core::Object} i = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:15:38: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::int'.
   i ??= /*@error=InvalidAssignment*/ s;
-                                     ^" in let final core::String #t4 = s in null : null;
+                                     ^" in s as{TypeError} core::int : null;
   a = new self::A::•();
-  a = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:17:34: Error: A value of type 'dart.core::String' can't be assigned to a variable of type '#lib1::A'.
+  a = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/invalid_assignment.dart:17:34: Error: A value of type 'dart.core::String' can't be assigned to a variable of type '#lib1::A'.
 Try changing the type of the left hand side, or casting the right hand side to '#lib1::A'.
   a /*@error=InvalidAssignment*/ += 1;
-                                 ^" in let final core::String #t6 = a.{self::A::+}(1) in null;
+                                 ^" in a.{self::A::+}(1) as{TypeError} self::A;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/invalid_cast.dart.strong.expect b/pkg/front_end/testcases/invalid_cast.dart.strong.expect
index dba87e5..e06cf93 100644
--- a/pkg/front_end/testcases/invalid_cast.dart.strong.expect
+++ b/pkg/front_end/testcases/invalid_cast.dart.strong.expect
@@ -74,44 +74,44 @@
 static method topLevelFunction(core::int i) → void {}
 static method bad() → dynamic {
   function localFunction(core::int i) → void {}
-  core::List<core::int> a = let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:22:60: Error: The list literal type 'dart.core::List<dart.core::Object>' isn't of expected type 'dart.core::List<dart.core::int>'.
+  core::List<core::int> a = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:22:60: Error: The list literal type 'dart.core::List<dart.core::Object>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
   List<int> a = <Object> /*@error=InvalidCastLiteralList*/ [];
-                                                           ^" in let final dynamic #t2 = <core::Object>[] in null;
-  core::Map<core::int, core::String> b = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:23:74: Error: The map literal type 'dart.core::Map<dart.core::Object, dart.core::String>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                           ^" in <core::Object>[];
+  core::Map<core::int, core::String> b = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:23:74: Error: The map literal type 'dart.core::Map<dart.core::Object, dart.core::String>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
   Map<int, String> b = <Object, String> /*@error=InvalidCastLiteralMap*/ {};
-                                                                         ^" in let final dynamic #t4 = <core::Object, core::String>{} in null;
-  core::Map<core::int, core::String> c = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:24:71: Error: The map literal type 'dart.core::Map<dart.core::int, dart.core::Object>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                                         ^" in <core::Object, core::String>{};
+  core::Map<core::int, core::String> c = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:24:71: Error: The map literal type 'dart.core::Map<dart.core::int, dart.core::Object>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
   Map<int, String> c = <int, Object> /*@error=InvalidCastLiteralMap*/ {};
-                                                                      ^" in let final dynamic #t6 = <core::int, core::Object>{} in null;
-  (core::Object) → core::int d = let dynamic _ = null in let final dynamic #t7 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:25:63: Error: The function expression type '(dart.core::int) \u8594 dart.core::int' isn't of expected type '(dart.core::Object) \u8594 dart.core::int'.
+                                                                      ^" in <core::int, core::Object>{};
+  (core::Object) → core::int d = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:25:63: Error: The function expression type '(dart.core::int) \u8594 dart.core::int' isn't of expected type '(dart.core::Object) \u8594 dart.core::int'.
 Change the type of the function expression or the context in which it is used.
   int Function(Object) d = /*@error=InvalidCastFunctionExpr*/ (int i) => i;
-                                                              ^" in let final dynamic #t8 = (core::int i) → core::int => i in null;
+                                                              ^" in (core::int i) → core::int => i;
   self::D e = self::C::fact() as{TypeError} self::D;
   self::D f = new self::D::•() as{TypeError} self::D;
-  self::D g = let dynamic _ = null in let final dynamic #t9 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:28:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
+  self::D g = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:28:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
 Change the type of the object being constructed or the context in which it is used.
   D g = new /*@error=InvalidCastNewExpr*/ C.nonFact();
-                                          ^" in let final dynamic #t10 = new self::C::nonFact() in null;
-  self::D h = let dynamic _ = null in let final dynamic #t11 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:29:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
+                                          ^" in new self::C::nonFact();
+  self::D h = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:29:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
 Change the type of the object being constructed or the context in which it is used.
   D h = new /*@error=InvalidCastNewExpr*/ C.nonFact2();
-                                          ^" in let final dynamic #t12 = new self::C::nonFact2() in null;
-  (core::Object) → void i = let dynamic _ = null in let final dynamic #t13 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:31:45: Error: The static method has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
+                                          ^" in new self::C::nonFact2();
+  (core::Object) → void i = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:31:45: Error: The static method has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
 Change the type of the method or the context in which it is used.
       C. /*@error=InvalidCastStaticMethod*/ staticFunction;
-                                            ^" in let final dynamic #t14 = self::C::staticFunction in null;
-  (core::Object) → void j = let dynamic _ = null in let final dynamic #t15 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:33:50: Error: The top level function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
+                                            ^" in self::C::staticFunction;
+  (core::Object) → void j = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:33:50: Error: The top level function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
 Change the type of the function or the context in which it is used.
       j = /*@error=InvalidCastTopLevelFunction*/ topLevelFunction;
-                                                 ^" in let final dynamic #t16 = self::topLevelFunction in null;
-  (core::Object) → void k = let dynamic _ = null in let final dynamic #t17 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:34:65: Error: The local function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
+                                                 ^" in self::topLevelFunction;
+  (core::Object) → void k = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:34:65: Error: The local function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
 Change the type of the function or the context in which it is used.
   void Function(Object) k = /*@error=InvalidCastLocalFunction*/ localFunction;
-                                                                ^" in let final dynamic #t18 = localFunction in null;
+                                                                ^" in localFunction;
 }
 static method ok() → dynamic {
   function localFunction(core::int i) → void {}
diff --git a/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect b/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect
index d720b90..f35c1f5 100644
--- a/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/invalid_cast.dart.strong.transformed.expect
@@ -27,44 +27,44 @@
 static method topLevelFunction(core::int i) → void {}
 static method bad() → dynamic {
   function localFunction(core::int i) → void {}
-  core::List<core::int> a = let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:22:60: Error: The list literal type 'dart.core::List<dart.core::Object>' isn't of expected type 'dart.core::List<dart.core::int>'.
+  core::List<core::int> a = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:22:60: Error: The list literal type 'dart.core::List<dart.core::Object>' isn't of expected type 'dart.core::List<dart.core::int>'.
 Change the type of the list literal or the context in which it is used.
   List<int> a = <Object> /*@error=InvalidCastLiteralList*/ [];
-                                                           ^" in let final core::List<core::Object> #t2 = <core::Object>[] in null;
-  core::Map<core::int, core::String> b = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:23:74: Error: The map literal type 'dart.core::Map<dart.core::Object, dart.core::String>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                           ^" in <core::Object>[];
+  core::Map<core::int, core::String> b = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:23:74: Error: The map literal type 'dart.core::Map<dart.core::Object, dart.core::String>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
   Map<int, String> b = <Object, String> /*@error=InvalidCastLiteralMap*/ {};
-                                                                         ^" in let final core::Map<core::Object, core::String> #t4 = <core::Object, core::String>{} in null;
-  core::Map<core::int, core::String> c = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:24:71: Error: The map literal type 'dart.core::Map<dart.core::int, dart.core::Object>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
+                                                                         ^" in <core::Object, core::String>{};
+  core::Map<core::int, core::String> c = let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:24:71: Error: The map literal type 'dart.core::Map<dart.core::int, dart.core::Object>' isn't of expected type 'dart.core::Map<dart.core::int, dart.core::String>'.
 Change the type of the map literal or the context in which it is used.
   Map<int, String> c = <int, Object> /*@error=InvalidCastLiteralMap*/ {};
-                                                                      ^" in let final core::Map<core::int, core::Object> #t6 = <core::int, core::Object>{} in null;
-  (core::Object) → core::int d = let<BottomType> _ = null in let final dynamic #t7 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:25:63: Error: The function expression type '(dart.core::int) \u8594 dart.core::int' isn't of expected type '(dart.core::Object) \u8594 dart.core::int'.
+                                                                      ^" in <core::int, core::Object>{};
+  (core::Object) → core::int d = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:25:63: Error: The function expression type '(dart.core::int) \u8594 dart.core::int' isn't of expected type '(dart.core::Object) \u8594 dart.core::int'.
 Change the type of the function expression or the context in which it is used.
   int Function(Object) d = /*@error=InvalidCastFunctionExpr*/ (int i) => i;
-                                                              ^" in let final (core::int) → core::int #t8 = (core::int i) → core::int => i in null;
+                                                              ^" in (core::int i) → core::int => i;
   self::D e = self::C::fact() as{TypeError} self::D;
   self::D f = new self::D::•() as{TypeError} self::D;
-  self::D g = let<BottomType> _ = null in let final dynamic #t9 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:28:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
+  self::D g = let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:28:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
 Change the type of the object being constructed or the context in which it is used.
   D g = new /*@error=InvalidCastNewExpr*/ C.nonFact();
-                                          ^" in let final self::C #t10 = new self::C::nonFact() in null;
-  self::D h = let<BottomType> _ = null in let final dynamic #t11 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:29:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
+                                          ^" in new self::C::nonFact();
+  self::D h = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:29:43: Error: The constructor returns type '#lib1::C' that isn't of expected type '#lib1::D'.
 Change the type of the object being constructed or the context in which it is used.
   D h = new /*@error=InvalidCastNewExpr*/ C.nonFact2();
-                                          ^" in let final self::C #t12 = new self::C::nonFact2() in null;
-  (core::Object) → void i = let<BottomType> _ = null in let final dynamic #t13 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:31:45: Error: The static method has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
+                                          ^" in new self::C::nonFact2();
+  (core::Object) → void i = let final<BottomType> #t7 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:31:45: Error: The static method has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
 Change the type of the method or the context in which it is used.
       C. /*@error=InvalidCastStaticMethod*/ staticFunction;
-                                            ^" in let final (core::int) → void #t14 = self::C::staticFunction in null;
-  (core::Object) → void j = let<BottomType> _ = null in let final dynamic #t15 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:33:50: Error: The top level function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
+                                            ^" in self::C::staticFunction;
+  (core::Object) → void j = let final<BottomType> #t8 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:33:50: Error: The top level function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
 Change the type of the function or the context in which it is used.
       j = /*@error=InvalidCastTopLevelFunction*/ topLevelFunction;
-                                                 ^" in let final (core::int) → void #t16 = self::topLevelFunction in null;
-  (core::Object) → void k = let<BottomType> _ = null in let final dynamic #t17 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/invalid_cast.dart:34:65: Error: The local function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
+                                                 ^" in self::topLevelFunction;
+  (core::Object) → void k = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/invalid_cast.dart:34:65: Error: The local function has type '(dart.core::int) \u8594 void' that isn't of expected type '(dart.core::Object) \u8594 void'.
 Change the type of the function or the context in which it is used.
   void Function(Object) k = /*@error=InvalidCastLocalFunction*/ localFunction;
-                                                                ^" in let final (core::int) → void #t18 = localFunction in null;
+                                                                ^" in localFunction;
 }
 static method ok() → dynamic {
   function localFunction(core::int i) → void {}
diff --git a/pkg/front_end/testcases/invalid_type.dart b/pkg/front_end/testcases/invalid_type.dart
new file mode 100644
index 0000000..f155286
--- /dev/null
+++ b/pkg/front_end/testcases/invalid_type.dart
@@ -0,0 +1,16 @@
+// 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 C {
+  static foo() {
+    this.bar();
+  }
+}
+
+test() {
+  (null as Missing).bar();
+  null.bar();
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/invalid_type.dart.direct.expect b/pkg/front_end/testcases/invalid_type.dart.direct.expect
new file mode 100644
index 0000000..ec2dd21
--- /dev/null
+++ b/pkg/front_end/testcases/invalid_type.dart.direct.expect
@@ -0,0 +1,29 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
+//     this.bar();
+//     ^^^^
+//
+// pkg/front_end/testcases/invalid_type.dart:12:12: Warning: 'Missing' isn't a type.
+//   (null as Missing).bar();
+//            ^^^^^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+  static method foo() → dynamic {
+    invalid-expression "pkg/front_end/testcases/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
+    this.bar();
+    ^^^^".bar();
+  }
+}
+static method test() → dynamic {
+  (null as invalid-type).bar();
+  null.bar();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/invalid_type.dart.direct.transformed.expect b/pkg/front_end/testcases/invalid_type.dart.direct.transformed.expect
new file mode 100644
index 0000000..bc547fb
--- /dev/null
+++ b/pkg/front_end/testcases/invalid_type.dart.direct.transformed.expect
@@ -0,0 +1,19 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+  static method foo() → dynamic {
+    invalid-expression "pkg/front_end/testcases/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
+    this.bar();
+    ^^^^".bar();
+  }
+}
+static method test() → dynamic {
+  (null as invalid-type).bar();
+  null.bar();
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/invalid_type.dart.outline.expect b/pkg/front_end/testcases/invalid_type.dart.outline.expect
new file mode 100644
index 0000000..e951144
--- /dev/null
+++ b/pkg/front_end/testcases/invalid_type.dart.outline.expect
@@ -0,0 +1,14 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    ;
+  static method foo() → dynamic
+    ;
+}
+static method test() → dynamic
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/invalid_type.dart.strong.expect b/pkg/front_end/testcases/invalid_type.dart.strong.expect
new file mode 100644
index 0000000..3cd8da3
--- /dev/null
+++ b/pkg/front_end/testcases/invalid_type.dart.strong.expect
@@ -0,0 +1,43 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
+//     this.bar();
+//     ^^^^
+//
+// pkg/front_end/testcases/invalid_type.dart:12:12: Error: 'Missing' isn't a type.
+//   (null as Missing).bar();
+//            ^^^^^^^
+//
+// pkg/front_end/testcases/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'dart.core::Null'.
+// Try correcting the name to the name of an existing method, or defining a method named 'bar'.
+//   null.bar();
+//        ^^^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/invalid_type.dart:12:12: Error: 'Missing' isn't a type.
+//   (null as Missing).bar();
+//            ^^^^^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class C extends core::Object {
+  synthetic constructor •() → self::C
+    : super core::Object::•()
+    ;
+  static method foo() → dynamic {
+    invalid-expression "pkg/front_end/testcases/invalid_type.dart:7:5: Error: Expected identifier, but got 'this'.
+    this.bar();
+    ^^^^".bar();
+  }
+}
+static method test() → dynamic {
+  (null as invalid-type).bar();
+  let final dynamic #t1 = null in invalid-expression "pkg/front_end/testcases/invalid_type.dart:13:8: Error: The method 'bar' isn't defined for the class 'dart.core::Null'.
+Try correcting the name to the name of an existing method, or defining a method named 'bar'.
+  null.bar();
+       ^^^";
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/issue34899.dart b/pkg/front_end/testcases/issue34899.dart
new file mode 100644
index 0000000..ae5b751
--- /dev/null
+++ b/pkg/front_end/testcases/issue34899.dart
@@ -0,0 +1,29 @@
+// 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 Foo<T> {
+  final Future<dynamic> Function() quux;
+  T t;
+
+  Foo(this.quux, this.t);
+
+  Future<T> call() => quux().then<T>((_) => t);
+}
+
+class Bar {
+  Foo<Baz> qux;
+
+  Future<void> quuz() =>
+      qux().then((baz) => corge(baz)).then((grault) => garply(grault));
+
+  Grault corge(Baz baz) => null;
+
+  void garply(Grault grault) {}
+}
+
+class Baz {}
+
+class Grault {}
+
+main() {}
diff --git a/pkg/front_end/testcases/issue34899.dart.direct.expect b/pkg/front_end/testcases/issue34899.dart.direct.expect
new file mode 100644
index 0000000..41128df
--- /dev/null
+++ b/pkg/front_end/testcases/issue34899.dart.direct.expect
@@ -0,0 +1,36 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+class Foo<T extends core::Object = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  field self::Foo::T t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T t) → self::Foo<self::Foo::T>
+    : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
+    ;
+  method call() → asy::Future<self::Foo::T>
+    return this.quux().then<self::Foo::T>((dynamic _) → dynamic => this.{self::Foo::t});
+}
+class Bar extends core::Object {
+  field self::Foo<self::Baz> qux = null;
+  synthetic constructor •() → self::Bar
+    : super core::Object::•()
+    ;
+  method quuz() → asy::Future<void>
+    return this.qux().then((dynamic baz) → dynamic => this.{self::Bar::corge}(baz)).then((dynamic grault) → dynamic => this.{self::Bar::garply}(grault));
+  method corge(self::Baz baz) → self::Grault
+    return null;
+  method garply(self::Grault grault) → void {}
+}
+class Baz extends core::Object {
+  synthetic constructor •() → self::Baz
+    : super core::Object::•()
+    ;
+}
+class Grault extends core::Object {
+  synthetic constructor •() → self::Grault
+    : super core::Object::•()
+    ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/issue34899.dart.direct.transformed.expect b/pkg/front_end/testcases/issue34899.dart.direct.transformed.expect
new file mode 100644
index 0000000..41128df
--- /dev/null
+++ b/pkg/front_end/testcases/issue34899.dart.direct.transformed.expect
@@ -0,0 +1,36 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+class Foo<T extends core::Object = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  field self::Foo::T t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T t) → self::Foo<self::Foo::T>
+    : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
+    ;
+  method call() → asy::Future<self::Foo::T>
+    return this.quux().then<self::Foo::T>((dynamic _) → dynamic => this.{self::Foo::t});
+}
+class Bar extends core::Object {
+  field self::Foo<self::Baz> qux = null;
+  synthetic constructor •() → self::Bar
+    : super core::Object::•()
+    ;
+  method quuz() → asy::Future<void>
+    return this.qux().then((dynamic baz) → dynamic => this.{self::Bar::corge}(baz)).then((dynamic grault) → dynamic => this.{self::Bar::garply}(grault));
+  method corge(self::Baz baz) → self::Grault
+    return null;
+  method garply(self::Grault grault) → void {}
+}
+class Baz extends core::Object {
+  synthetic constructor •() → self::Baz
+    : super core::Object::•()
+    ;
+}
+class Grault extends core::Object {
+  synthetic constructor •() → self::Grault
+    : super core::Object::•()
+    ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/issue34899.dart.outline.expect b/pkg/front_end/testcases/issue34899.dart.outline.expect
new file mode 100644
index 0000000..1d77be0
--- /dev/null
+++ b/pkg/front_end/testcases/issue34899.dart.outline.expect
@@ -0,0 +1,34 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+class Foo<T extends core::Object = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  field self::Foo::T t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T t) → self::Foo<self::Foo::T>
+    ;
+  method call() → asy::Future<self::Foo::T>
+    ;
+}
+class Bar extends core::Object {
+  field self::Foo<self::Baz> qux;
+  synthetic constructor •() → self::Bar
+    ;
+  method quuz() → asy::Future<void>
+    ;
+  method corge(self::Baz baz) → self::Grault
+    ;
+  method garply(self::Grault grault) → void
+    ;
+}
+class Baz extends core::Object {
+  synthetic constructor •() → self::Baz
+    ;
+}
+class Grault extends core::Object {
+  synthetic constructor •() → self::Grault
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/issue34899.dart.strong.expect b/pkg/front_end/testcases/issue34899.dart.strong.expect
new file mode 100644
index 0000000..67daf6b
--- /dev/null
+++ b/pkg/front_end/testcases/issue34899.dart.strong.expect
@@ -0,0 +1,36 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+class Foo<T extends core::Object = dynamic> extends core::Object {
+  final field () → asy::Future<dynamic> quux;
+  generic-covariant-impl field self::Foo::T t;
+  constructor •(() → asy::Future<dynamic> quux, self::Foo::T t) → self::Foo<self::Foo::T>
+    : self::Foo::quux = quux, self::Foo::t = t, super core::Object::•()
+    ;
+  method call() → asy::Future<self::Foo::T>
+    return this.{self::Foo::quux}().{asy::Future::then}<self::Foo::T>((dynamic _) → self::Foo::T => this.{self::Foo::t});
+}
+class Bar extends core::Object {
+  field self::Foo<self::Baz> qux = null;
+  synthetic constructor •() → self::Bar
+    : super core::Object::•()
+    ;
+  method quuz() → asy::Future<void>
+    return this.{self::Bar::qux}().{asy::Future::then}<self::Grault>((self::Baz baz) → self::Grault => this.{self::Bar::corge}(baz)).{asy::Future::then}<void>((self::Grault grault) → void => this.{self::Bar::garply}(grault));
+  method corge(self::Baz baz) → self::Grault
+    return null;
+  method garply(self::Grault grault) → void {}
+}
+class Baz extends core::Object {
+  synthetic constructor •() → self::Baz
+    : super core::Object::•()
+    ;
+}
+class Grault extends core::Object {
+  synthetic constructor •() → self::Grault
+    : super core::Object::•()
+    ;
+}
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/missing_constructor.dart.direct.expect b/pkg/front_end/testcases/missing_constructor.dart.direct.expect
index 59fa95b..5efe451 100644
--- a/pkg/front_end/testcases/missing_constructor.dart.direct.expect
+++ b/pkg/front_end/testcases/missing_constructor.dart.direct.expect
@@ -35,18 +35,18 @@
 }
 class Sub extends self::Super {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t1 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::Sub
-    : final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t2 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class Bad extends core::Object {
   constructor foo() → self::Bad
-    : final dynamic #t3 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t3 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor bar() → self::Bad
-    : final dynamic #t4 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad.baz, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t4 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad.baz, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class M extends core::Object {
@@ -55,13 +55,16 @@
     ;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M {
+  synthetic constructor _() → self::_MixinApplication&Super&M
+    : super self::Super::_()
+    ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication
-    : final dynamic #t5 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t5 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::MixinApplication
-    : final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t6 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/missing_constructor.dart.direct.transformed.expect b/pkg/front_end/testcases/missing_constructor.dart.direct.transformed.expect
index e34b940..0981c897 100644
--- a/pkg/front_end/testcases/missing_constructor.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/missing_constructor.dart.direct.transformed.expect
@@ -9,18 +9,18 @@
 }
 class Sub extends self::Super {
   constructor •() → self::Sub
-    : final dynamic #t1 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t1 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::Sub
-    : final dynamic #t2 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t2 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class Bad extends core::Object {
   constructor foo() → self::Bad
-    : final dynamic #t3 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t3 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor bar() → self::Bad
-    : final dynamic #t4 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad.baz, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t4 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Bad.baz, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 class M extends core::Object {
@@ -29,16 +29,16 @@
     ;
 }
 abstract class _MixinApplication&Super&M extends self::Super implements self::M {
-  synthetic constructor _() → void
+  synthetic constructor _() → self::_MixinApplication&Super&M
     : super self::Super::_()
     ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication
-    : final dynamic #t5 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t5 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
   constructor foo() → self::MixinApplication
-    : final dynamic #t6 = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
+    : final dynamic #t6 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Super.foo, 0, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))
     ;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/missing_constructor.dart.outline.expect b/pkg/front_end/testcases/missing_constructor.dart.outline.expect
index 6445b5d..2bda841 100644
--- a/pkg/front_end/testcases/missing_constructor.dart.outline.expect
+++ b/pkg/front_end/testcases/missing_constructor.dart.outline.expect
@@ -23,6 +23,9 @@
     ;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M {
+  synthetic constructor _() → self::_MixinApplication&Super&M
+    : super self::Super::_()
+    ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication
diff --git a/pkg/front_end/testcases/missing_constructor.dart.strong.expect b/pkg/front_end/testcases/missing_constructor.dart.strong.expect
index 80a4754..2102137d 100644
--- a/pkg/front_end/testcases/missing_constructor.dart.strong.expect
+++ b/pkg/front_end/testcases/missing_constructor.dart.strong.expect
@@ -63,6 +63,9 @@
     ;
 }
 abstract class _MixinApplication&Super&M = self::Super with self::M {
+  synthetic constructor _() → self::_MixinApplication&Super&M
+    : super self::Super::_()
+    ;
 }
 class MixinApplication extends self::_MixinApplication&Super&M {
   constructor •() → self::MixinApplication
diff --git a/pkg/front_end/testcases/missing_constructor.dart.strong.transformed.expect b/pkg/front_end/testcases/missing_constructor.dart.strong.transformed.expect
index a95622b..1b4681e 100644
--- a/pkg/front_end/testcases/missing_constructor.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/missing_constructor.dart.strong.transformed.expect
@@ -37,7 +37,7 @@
     ;
 }
 abstract class _MixinApplication&Super&M extends self::Super implements self::M {
-  synthetic constructor _() → void
+  synthetic constructor _() → self::_MixinApplication&Super&M
     : super self::Super::_()
     ;
 }
diff --git a/pkg/front_end/testcases/mixin.dart.direct.expect b/pkg/front_end/testcases/mixin.dart.direct.expect
index a6b7eb7..6270bd2 100644
--- a/pkg/front_end/testcases/mixin.dart.direct.expect
+++ b/pkg/front_end/testcases/mixin.dart.direct.expect
@@ -3,8 +3,14 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 {
+  synthetic constructor •() → self::_B&Object&M1
+    : super core::Object::•()
+    ;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 {
+  synthetic constructor •() → self::_B&Object&M1&M2
+    : super self::_B&Object&M1::•()
+    ;
 }
 class B extends self::_B&Object&M1&M2 {
   constructor •(dynamic value) → self::B
@@ -26,8 +32,14 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 = core::Object with self::M1 {
+  synthetic constructor •() → self::_C&Object&M1
+    : super core::Object::•()
+    ;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 {
+  synthetic constructor •() → self::_C&Object&M1&M2
+    : super self::_C&Object&M1::•()
+    ;
 }
 class C extends self::_C&Object&M1&M2 {
   constructor •(dynamic value) → self::C
@@ -42,6 +54,9 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> = core::Object with self::G1<self::_D&Object&G1::S> {
+  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+    : super core::Object::•()
+    ;
 }
 class D<S extends core::Object = dynamic> extends self::_D&Object&G1<self::D::S> {
   synthetic constructor •() → self::D<self::D::S>
diff --git a/pkg/front_end/testcases/mixin.dart.direct.transformed.expect b/pkg/front_end/testcases/mixin.dart.direct.transformed.expect
index b21c3c0..7152f91 100644
--- a/pkg/front_end/testcases/mixin.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/mixin.dart.direct.transformed.expect
@@ -3,14 +3,14 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _B&Object&M1&M2 extends self::_B&Object&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   method m() → dynamic
@@ -36,14 +36,14 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _C&Object&M1&M2 extends self::_C&Object&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   method m() → dynamic
@@ -62,7 +62,7 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
     : super core::Object::•()
     ;
   method m() → dynamic
diff --git a/pkg/front_end/testcases/mixin.dart.outline.expect b/pkg/front_end/testcases/mixin.dart.outline.expect
index e0f9e24..989554e 100644
--- a/pkg/front_end/testcases/mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/mixin.dart.outline.expect
@@ -3,8 +3,14 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 {
+  synthetic constructor •() → self::_B&Object&M1
+    : super core::Object::•()
+    ;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 {
+  synthetic constructor •() → self::_B&Object&M1&M2
+    : super self::_B&Object&M1::•()
+    ;
 }
 class B extends self::_B&Object&M1&M2 {
   constructor •(dynamic value) → self::B
@@ -23,8 +29,14 @@
     ;
 }
 abstract class _C&Object&M1 = core::Object with self::M1 {
+  synthetic constructor •() → self::_C&Object&M1
+    : super core::Object::•()
+    ;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 {
+  synthetic constructor •() → self::_C&Object&M1&M2
+    : super self::_C&Object&M1::•()
+    ;
 }
 class C extends self::_C&Object&M1&M2 {
   constructor •(dynamic value) → self::C
@@ -37,6 +49,9 @@
     ;
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> = core::Object with self::G1<self::_D&Object&G1::S> {
+  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+    : super core::Object::•()
+    ;
 }
 class D<S extends core::Object = dynamic> extends self::_D&Object&G1<self::D::S> {
   synthetic constructor •() → self::D<self::D::S>
diff --git a/pkg/front_end/testcases/mixin.dart.strong.expect b/pkg/front_end/testcases/mixin.dart.strong.expect
index 3463b8e..f3bc002 100644
--- a/pkg/front_end/testcases/mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/mixin.dart.strong.expect
@@ -3,8 +3,14 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 = core::Object with self::M1 {
+  synthetic constructor •() → self::_B&Object&M1
+    : super core::Object::•()
+    ;
 }
 abstract class _B&Object&M1&M2 = self::_B&Object&M1 with self::M2 {
+  synthetic constructor •() → self::_B&Object&M1&M2
+    : super self::_B&Object&M1::•()
+    ;
 }
 class B extends self::_B&Object&M1&M2 {
   constructor •(dynamic value) → self::B
@@ -26,8 +32,14 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 = core::Object with self::M1 {
+  synthetic constructor •() → self::_C&Object&M1
+    : super core::Object::•()
+    ;
 }
 abstract class _C&Object&M1&M2 = self::_C&Object&M1 with self::M2 {
+  synthetic constructor •() → self::_C&Object&M1&M2
+    : super self::_C&Object&M1::•()
+    ;
 }
 class C extends self::_C&Object&M1&M2 {
   constructor •(dynamic value) → self::C
@@ -42,6 +54,9 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> = core::Object with self::G1<self::_D&Object&G1::S> {
+  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
+    : super core::Object::•()
+    ;
 }
 class D<S extends core::Object = dynamic> extends self::_D&Object&G1<self::D::S> {
   synthetic constructor •() → self::D<self::D::S>
diff --git a/pkg/front_end/testcases/mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/mixin.dart.strong.transformed.expect
index bf2b833..3dff5eb 100644
--- a/pkg/front_end/testcases/mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/mixin.dart.strong.transformed.expect
@@ -3,14 +3,14 @@
 import "dart:core" as core;
 
 abstract class _B&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _B&Object&M1&M2 extends self::_B&Object&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&M1&M2
     : super self::_B&Object&M1::•()
     ;
   method m() → dynamic
@@ -36,14 +36,14 @@
     return core::print("M2");
 }
 abstract class _C&Object&M1 extends core::Object implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&Object&M1
     : super core::Object::•()
     ;
   method m() → dynamic
     return core::print("M1");
 }
 abstract class _C&Object&M1&M2 extends self::_C&Object&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&Object&M1&M2
     : super self::_C&Object&M1::•()
     ;
   method m() → dynamic
@@ -62,7 +62,7 @@
     return core::print(self::G1::T);
 }
 abstract class _D&Object&G1<S extends core::Object = dynamic> extends core::Object implements self::G1<self::_D&Object&G1::S> {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_D&Object&G1<self::_D&Object&G1::S>
     : super core::Object::•()
     ;
   method m() → dynamic
diff --git a/pkg/front_end/testcases/mixin_application_override.dart.direct.expect b/pkg/front_end/testcases/mixin_application_override.dart.direct.expect
index 5ea3f41..d2606bc 100644
--- a/pkg/front_end/testcases/mixin_application_override.dart.direct.expect
+++ b/pkg/front_end/testcases/mixin_application_override.dart.direct.expect
@@ -157,49 +157,79 @@
     ;
 }
 abstract class _A1&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A1&S&M1
+    : super self::S::•()
+    ;
 }
 class A1 = self::_A1&S&M1 with self::M {
   synthetic constructor •() → self::A1
-    : super self::S::•()
+    : super self::_A1&S&M1::•()
     ;
 }
 abstract class _A2&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A2&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _A2&S&M1&M2 = self::_A2&S&M1 with self::M2 {
+  synthetic constructor •() → self::_A2&S&M1&M2
+    : super self::_A2&S&M1::•()
+    ;
 }
 class A2 = self::_A2&S&M1&M2 with self::M {
   synthetic constructor •() → self::A2
-    : super self::S::•()
+    : super self::_A2&S&M1&M2::•()
     ;
 }
 abstract class _A0X&S&M = self::S with self::M {
+  synthetic constructor •() → self::_A0X&S&M
+    : super self::S::•()
+    ;
 }
 class A0X = self::_A0X&S&M with self::MX {
   synthetic constructor •() → self::A0X
-    : super self::S::•()
+    : super self::_A0X&S&M::•()
     ;
 }
 abstract class _A1X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A1X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _A1X&S&M1&M = self::_A1X&S&M1 with self::M {
+  synthetic constructor •() → self::_A1X&S&M1&M
+    : super self::_A1X&S&M1::•()
+    ;
 }
 class A1X = self::_A1X&S&M1&M with self::MX {
   synthetic constructor •() → self::A1X
-    : super self::S::•()
+    : super self::_A1X&S&M1&M::•()
     ;
 }
 abstract class _A2X&S&M1 = self::S with self::M1 {
-}
-abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 {
-}
-abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M {
-}
-class A2X = self::_A2X&S&M1&M2&M with self::MX {
-  synthetic constructor •() → self::A2X
+  synthetic constructor •() → self::_A2X&S&M1
     : super self::S::•()
     ;
 }
+abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 {
+  synthetic constructor •() → self::_A2X&S&M1&M2
+    : super self::_A2X&S&M1::•()
+    ;
+}
+abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_A2X&S&M1&M2&M
+    : super self::_A2X&S&M1&M2::•()
+    ;
+}
+class A2X = self::_A2X&S&M1&M2&M with self::MX {
+  synthetic constructor •() → self::A2X
+    : super self::_A2X&S&M1&M2&M::•()
+    ;
+}
 abstract class _B0&S&M = self::S with self::M {
+  synthetic constructor •() → self::_B0&S&M
+    : super self::S::•()
+    ;
 }
 class B0 extends self::_B0&S&M {
   synthetic constructor •() → self::B0
@@ -207,8 +237,14 @@
     ;
 }
 abstract class _B1&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B1&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B1&S&M1&M = self::_B1&S&M1 with self::M {
+  synthetic constructor •() → self::_B1&S&M1&M
+    : super self::_B1&S&M1::•()
+    ;
 }
 class B1 extends self::_B1&S&M1&M {
   synthetic constructor •() → self::B1
@@ -216,10 +252,19 @@
     ;
 }
 abstract class _B2&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B2&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B2&S&M1&M2 = self::_B2&S&M1 with self::M2 {
+  synthetic constructor •() → self::_B2&S&M1&M2
+    : super self::_B2&S&M1::•()
+    ;
 }
 abstract class _B2&S&M1&M2&M = self::_B2&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_B2&S&M1&M2&M
+    : super self::_B2&S&M1&M2::•()
+    ;
 }
 class B2 extends self::_B2&S&M1&M2&M {
   synthetic constructor •() → self::B2
@@ -227,8 +272,14 @@
     ;
 }
 abstract class _B0X&S&M = self::S with self::M {
+  synthetic constructor •() → self::_B0X&S&M
+    : super self::S::•()
+    ;
 }
 abstract class _B0X&S&M&MX = self::_B0X&S&M with self::MX {
+  synthetic constructor •() → self::_B0X&S&M&MX
+    : super self::_B0X&S&M::•()
+    ;
 }
 class B0X extends self::_B0X&S&M&MX {
   synthetic constructor •() → self::B0X
@@ -236,10 +287,19 @@
     ;
 }
 abstract class _B1X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B1X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B1X&S&M1&M = self::_B1X&S&M1 with self::M {
+  synthetic constructor •() → self::_B1X&S&M1&M
+    : super self::_B1X&S&M1::•()
+    ;
 }
 abstract class _B1X&S&M1&M&MX = self::_B1X&S&M1&M with self::MX {
+  synthetic constructor •() → self::_B1X&S&M1&M&MX
+    : super self::_B1X&S&M1&M::•()
+    ;
 }
 class B1X extends self::_B1X&S&M1&M&MX {
   synthetic constructor •() → self::B1X
@@ -247,12 +307,24 @@
     ;
 }
 abstract class _B2X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B2X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B2X&S&M1&M2 = self::_B2X&S&M1 with self::M2 {
+  synthetic constructor •() → self::_B2X&S&M1&M2
+    : super self::_B2X&S&M1::•()
+    ;
 }
 abstract class _B2X&S&M1&M2&M = self::_B2X&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_B2X&S&M1&M2&M
+    : super self::_B2X&S&M1&M2::•()
+    ;
 }
 abstract class _B2X&S&M1&M2&M&MX = self::_B2X&S&M1&M2&M with self::MX {
+  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
+    : super self::_B2X&S&M1&M2&M::•()
+    ;
 }
 class B2X extends self::_B2X&S&M1&M2&M&MX {
   synthetic constructor •() → self::B2X
diff --git a/pkg/front_end/testcases/mixin_application_override.dart.direct.transformed.expect b/pkg/front_end/testcases/mixin_application_override.dart.direct.transformed.expect
index 5d3ca5b..94d1bd7 100644
--- a/pkg/front_end/testcases/mixin_application_override.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/mixin_application_override.dart.direct.transformed.expect
@@ -36,82 +36,82 @@
   method foo() → dynamic {}
 }
 abstract class _A1&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A1&S&M1
     : super self::S::•()
     ;
 }
 class A1 extends self::_A1&S&M1 implements self::M {
   synthetic constructor •() → self::A1
-    : super self::S::•()
+    : super self::_A1&S&M1::•()
     ;
   method foo() → dynamic {}
 }
 abstract class _A2&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2&S&M1&M2 extends self::_A2&S&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A2&S&M1&M2
     : super self::_A2&S&M1::•()
     ;
 }
 class A2 extends self::_A2&S&M1&M2 implements self::M {
   synthetic constructor •() → self::A2
-    : super self::S::•()
+    : super self::_A2&S&M1&M2::•()
     ;
   method foo() → dynamic {}
 }
 abstract class _A0X&S&M extends self::S implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A0X&S&M
     : super self::S::•()
     ;
   method foo() → dynamic {}
 }
 class A0X extends self::_A0X&S&M implements self::MX {
   synthetic constructor •() → self::A0X
-    : super self::S::•()
+    : super self::_A0X&S&M::•()
     ;
 }
 abstract class _A1X&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A1X&S&M1&M extends self::_A1X&S&M1 implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A1X&S&M1&M
     : super self::_A1X&S&M1::•()
     ;
   method foo() → dynamic {}
 }
 class A1X extends self::_A1X&S&M1&M implements self::MX {
   synthetic constructor •() → self::A1X
-    : super self::S::•()
+    : super self::_A1X&S&M1&M::•()
     ;
 }
 abstract class _A2X&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _A2X&S&M1&M2 extends self::_A2X&S&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A2X&S&M1&M2
     : super self::_A2X&S&M1::•()
     ;
 }
 abstract class _A2X&S&M1&M2&M extends self::_A2X&S&M1&M2 implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A2X&S&M1&M2&M
     : super self::_A2X&S&M1&M2::•()
     ;
   method foo() → dynamic {}
 }
 class A2X extends self::_A2X&S&M1&M2&M implements self::MX {
   synthetic constructor •() → self::A2X
-    : super self::S::•()
+    : super self::_A2X&S&M1&M2&M::•()
     ;
 }
 abstract class _B0&S&M extends self::S implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B0&S&M
     : super self::S::•()
     ;
   method foo() → dynamic {}
@@ -122,12 +122,12 @@
     ;
 }
 abstract class _B1&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B1&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1&S&M1&M extends self::_B1&S&M1 implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B1&S&M1&M
     : super self::_B1&S&M1::•()
     ;
   method foo() → dynamic {}
@@ -138,17 +138,17 @@
     ;
 }
 abstract class _B2&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B2&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2&S&M1&M2 extends self::_B2&S&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B2&S&M1&M2
     : super self::_B2&S&M1::•()
     ;
 }
 abstract class _B2&S&M1&M2&M extends self::_B2&S&M1&M2 implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B2&S&M1&M2&M
     : super self::_B2&S&M1&M2::•()
     ;
   method foo() → dynamic {}
@@ -159,13 +159,13 @@
     ;
 }
 abstract class _B0X&S&M extends self::S implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B0X&S&M
     : super self::S::•()
     ;
   method foo() → dynamic {}
 }
 abstract class _B0X&S&M&MX extends self::_B0X&S&M implements self::MX {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B0X&S&M&MX
     : super self::_B0X&S&M::•()
     ;
 }
@@ -175,18 +175,18 @@
     ;
 }
 abstract class _B1X&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B1X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B1X&S&M1&M extends self::_B1X&S&M1 implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B1X&S&M1&M
     : super self::_B1X&S&M1::•()
     ;
   method foo() → dynamic {}
 }
 abstract class _B1X&S&M1&M&MX extends self::_B1X&S&M1&M implements self::MX {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B1X&S&M1&M&MX
     : super self::_B1X&S&M1&M::•()
     ;
 }
@@ -196,23 +196,23 @@
     ;
 }
 abstract class _B2X&S&M1 extends self::S implements self::M1 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B2X&S&M1
     : super self::S::•()
     ;
 }
 abstract class _B2X&S&M1&M2 extends self::_B2X&S&M1 implements self::M2 {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B2X&S&M1&M2
     : super self::_B2X&S&M1::•()
     ;
 }
 abstract class _B2X&S&M1&M2&M extends self::_B2X&S&M1&M2 implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B2X&S&M1&M2&M
     : super self::_B2X&S&M1&M2::•()
     ;
   method foo() → dynamic {}
 }
 abstract class _B2X&S&M1&M2&M&MX extends self::_B2X&S&M1&M2&M implements self::MX {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
     : super self::_B2X&S&M1&M2&M::•()
     ;
 }
diff --git a/pkg/front_end/testcases/mixin_application_override.dart.outline.expect b/pkg/front_end/testcases/mixin_application_override.dart.outline.expect
index 41ae8ad..c54cc03 100644
--- a/pkg/front_end/testcases/mixin_application_override.dart.outline.expect
+++ b/pkg/front_end/testcases/mixin_application_override.dart.outline.expect
@@ -154,97 +154,169 @@
     ;
 }
 abstract class _A1&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A1&S&M1
+    : super self::S::•()
+    ;
 }
 class A1 = self::_A1&S&M1 with self::M {
   synthetic constructor •() → self::A1
-    : super self::S::•()
+    : super self::_A1&S&M1::•()
     ;
 }
 abstract class _A2&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A2&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _A2&S&M1&M2 = self::_A2&S&M1 with self::M2 {
+  synthetic constructor •() → self::_A2&S&M1&M2
+    : super self::_A2&S&M1::•()
+    ;
 }
 class A2 = self::_A2&S&M1&M2 with self::M {
   synthetic constructor •() → self::A2
-    : super self::S::•()
+    : super self::_A2&S&M1&M2::•()
     ;
 }
 abstract class _A0X&S&M = self::S with self::M {
+  synthetic constructor •() → self::_A0X&S&M
+    : super self::S::•()
+    ;
 }
 class A0X = self::_A0X&S&M with self::MX {
   synthetic constructor •() → self::A0X
-    : super self::S::•()
+    : super self::_A0X&S&M::•()
     ;
 }
 abstract class _A1X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A1X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _A1X&S&M1&M = self::_A1X&S&M1 with self::M {
+  synthetic constructor •() → self::_A1X&S&M1&M
+    : super self::_A1X&S&M1::•()
+    ;
 }
 class A1X = self::_A1X&S&M1&M with self::MX {
   synthetic constructor •() → self::A1X
-    : super self::S::•()
+    : super self::_A1X&S&M1&M::•()
     ;
 }
 abstract class _A2X&S&M1 = self::S with self::M1 {
-}
-abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 {
-}
-abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M {
-}
-class A2X = self::_A2X&S&M1&M2&M with self::MX {
-  synthetic constructor •() → self::A2X
+  synthetic constructor •() → self::_A2X&S&M1
     : super self::S::•()
     ;
 }
+abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 {
+  synthetic constructor •() → self::_A2X&S&M1&M2
+    : super self::_A2X&S&M1::•()
+    ;
+}
+abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_A2X&S&M1&M2&M
+    : super self::_A2X&S&M1&M2::•()
+    ;
+}
+class A2X = self::_A2X&S&M1&M2&M with self::MX {
+  synthetic constructor •() → self::A2X
+    : super self::_A2X&S&M1&M2&M::•()
+    ;
+}
 abstract class _B0&S&M = self::S with self::M {
+  synthetic constructor •() → self::_B0&S&M
+    : super self::S::•()
+    ;
 }
 class B0 extends self::_B0&S&M {
   synthetic constructor •() → self::B0
     ;
 }
 abstract class _B1&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B1&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B1&S&M1&M = self::_B1&S&M1 with self::M {
+  synthetic constructor •() → self::_B1&S&M1&M
+    : super self::_B1&S&M1::•()
+    ;
 }
 class B1 extends self::_B1&S&M1&M {
   synthetic constructor •() → self::B1
     ;
 }
 abstract class _B2&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B2&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B2&S&M1&M2 = self::_B2&S&M1 with self::M2 {
+  synthetic constructor •() → self::_B2&S&M1&M2
+    : super self::_B2&S&M1::•()
+    ;
 }
 abstract class _B2&S&M1&M2&M = self::_B2&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_B2&S&M1&M2&M
+    : super self::_B2&S&M1&M2::•()
+    ;
 }
 class B2 extends self::_B2&S&M1&M2&M {
   synthetic constructor •() → self::B2
     ;
 }
 abstract class _B0X&S&M = self::S with self::M {
+  synthetic constructor •() → self::_B0X&S&M
+    : super self::S::•()
+    ;
 }
 abstract class _B0X&S&M&MX = self::_B0X&S&M with self::MX {
+  synthetic constructor •() → self::_B0X&S&M&MX
+    : super self::_B0X&S&M::•()
+    ;
 }
 class B0X extends self::_B0X&S&M&MX {
   synthetic constructor •() → self::B0X
     ;
 }
 abstract class _B1X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B1X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B1X&S&M1&M = self::_B1X&S&M1 with self::M {
+  synthetic constructor •() → self::_B1X&S&M1&M
+    : super self::_B1X&S&M1::•()
+    ;
 }
 abstract class _B1X&S&M1&M&MX = self::_B1X&S&M1&M with self::MX {
+  synthetic constructor •() → self::_B1X&S&M1&M&MX
+    : super self::_B1X&S&M1&M::•()
+    ;
 }
 class B1X extends self::_B1X&S&M1&M&MX {
   synthetic constructor •() → self::B1X
     ;
 }
 abstract class _B2X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B2X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B2X&S&M1&M2 = self::_B2X&S&M1 with self::M2 {
+  synthetic constructor •() → self::_B2X&S&M1&M2
+    : super self::_B2X&S&M1::•()
+    ;
 }
 abstract class _B2X&S&M1&M2&M = self::_B2X&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_B2X&S&M1&M2&M
+    : super self::_B2X&S&M1&M2::•()
+    ;
 }
 abstract class _B2X&S&M1&M2&M&MX = self::_B2X&S&M1&M2&M with self::MX {
+  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
+    : super self::_B2X&S&M1&M2&M::•()
+    ;
 }
 class B2X extends self::_B2X&S&M1&M2&M&MX {
   synthetic constructor •() → self::B2X
diff --git a/pkg/front_end/testcases/mixin_application_override.dart.strong.expect b/pkg/front_end/testcases/mixin_application_override.dart.strong.expect
index fb58d1f..2a70a41 100644
--- a/pkg/front_end/testcases/mixin_application_override.dart.strong.expect
+++ b/pkg/front_end/testcases/mixin_application_override.dart.strong.expect
@@ -208,54 +208,84 @@
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _A1&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A1&S&M1
+    : super self::S::•()
+    ;
 }
 class A1 = self::_A1&S&M1 with self::M {
   synthetic constructor •() → self::A1
-    : super self::S::•()
+    : super self::_A1&S&M1::•()
     ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _A2&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A2&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _A2&S&M1&M2 = self::_A2&S&M1 with self::M2 {
+  synthetic constructor •() → self::_A2&S&M1&M2
+    : super self::_A2&S&M1::•()
+    ;
 }
 class A2 = self::_A2&S&M1&M2 with self::M {
   synthetic constructor •() → self::A2
-    : super self::S::•()
+    : super self::_A2&S&M1&M2::•()
     ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _A0X&S&M = self::S with self::M {
+  synthetic constructor •() → self::_A0X&S&M
+    : super self::S::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class A0X = self::_A0X&S&M with self::MX {
   synthetic constructor •() → self::A0X
-    : super self::S::•()
+    : super self::_A0X&S&M::•()
     ;
 }
 abstract class _A1X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A1X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _A1X&S&M1&M = self::_A1X&S&M1 with self::M {
+  synthetic constructor •() → self::_A1X&S&M1&M
+    : super self::_A1X&S&M1::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class A1X = self::_A1X&S&M1&M with self::MX {
   synthetic constructor •() → self::A1X
-    : super self::S::•()
+    : super self::_A1X&S&M1&M::•()
     ;
 }
 abstract class _A2X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_A2X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _A2X&S&M1&M2 = self::_A2X&S&M1 with self::M2 {
+  synthetic constructor •() → self::_A2X&S&M1&M2
+    : super self::_A2X&S&M1::•()
+    ;
 }
 abstract class _A2X&S&M1&M2&M = self::_A2X&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_A2X&S&M1&M2&M
+    : super self::_A2X&S&M1&M2::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class A2X = self::_A2X&S&M1&M2&M with self::MX {
   synthetic constructor •() → self::A2X
-    : super self::S::•()
+    : super self::_A2X&S&M1&M2&M::•()
     ;
 }
 abstract class _B0&S&M = self::S with self::M {
+  synthetic constructor •() → self::_B0&S&M
+    : super self::S::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class B0 extends self::_B0&S&M {
@@ -264,8 +294,14 @@
     ;
 }
 abstract class _B1&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B1&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B1&S&M1&M = self::_B1&S&M1 with self::M {
+  synthetic constructor •() → self::_B1&S&M1&M
+    : super self::_B1&S&M1::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class B1 extends self::_B1&S&M1&M {
@@ -274,10 +310,19 @@
     ;
 }
 abstract class _B2&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B2&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B2&S&M1&M2 = self::_B2&S&M1 with self::M2 {
+  synthetic constructor •() → self::_B2&S&M1&M2
+    : super self::_B2&S&M1::•()
+    ;
 }
 abstract class _B2&S&M1&M2&M = self::_B2&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_B2&S&M1&M2&M
+    : super self::_B2&S&M1&M2::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 class B2 extends self::_B2&S&M1&M2&M {
@@ -286,9 +331,15 @@
     ;
 }
 abstract class _B0X&S&M = self::S with self::M {
+  synthetic constructor •() → self::_B0X&S&M
+    : super self::S::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _B0X&S&M&MX = self::_B0X&S&M with self::MX {
+  synthetic constructor •() → self::_B0X&S&M&MX
+    : super self::_B0X&S&M::•()
+    ;
 }
 class B0X extends self::_B0X&S&M&MX {
   synthetic constructor •() → self::B0X
@@ -296,11 +347,20 @@
     ;
 }
 abstract class _B1X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B1X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B1X&S&M1&M = self::_B1X&S&M1 with self::M {
+  synthetic constructor •() → self::_B1X&S&M1&M
+    : super self::_B1X&S&M1::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _B1X&S&M1&M&MX = self::_B1X&S&M1&M with self::MX {
+  synthetic constructor •() → self::_B1X&S&M1&M&MX
+    : super self::_B1X&S&M1&M::•()
+    ;
 }
 class B1X extends self::_B1X&S&M1&M&MX {
   synthetic constructor •() → self::B1X
@@ -308,13 +368,25 @@
     ;
 }
 abstract class _B2X&S&M1 = self::S with self::M1 {
+  synthetic constructor •() → self::_B2X&S&M1
+    : super self::S::•()
+    ;
 }
 abstract class _B2X&S&M1&M2 = self::_B2X&S&M1 with self::M2 {
+  synthetic constructor •() → self::_B2X&S&M1&M2
+    : super self::_B2X&S&M1::•()
+    ;
 }
 abstract class _B2X&S&M1&M2&M = self::_B2X&S&M1&M2 with self::M {
+  synthetic constructor •() → self::_B2X&S&M1&M2&M
+    : super self::_B2X&S&M1&M2::•()
+    ;
   abstract forwarding-stub method foo([dynamic x = null]) → dynamic;
 }
 abstract class _B2X&S&M1&M2&M&MX = self::_B2X&S&M1&M2&M with self::MX {
+  synthetic constructor •() → self::_B2X&S&M1&M2&M&MX
+    : super self::_B2X&S&M1&M2&M::•()
+    ;
 }
 class B2X extends self::_B2X&S&M1&M2&M&MX {
   synthetic constructor •() → self::B2X
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart
new file mode 100644
index 0000000..011cb34
--- /dev/null
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart
@@ -0,0 +1,32 @@
+// 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:expect/expect.dart";
+
+class C<T> {
+  String trace;
+  C({a: 0, b: T}) : trace = "a: $a, b: $b";
+}
+
+class M {}
+
+class D = C<String> with M;
+
+class E extends D {}
+
+class F extends C<int> with M {}
+
+main() {
+  Expect.stringEquals(
+      // TODO(ahe): This is wrong, it should be "a: 0, b: Object" or an error.
+      "a: 0, b: T",
+      new C<Object>().trace);
+  Expect.stringEquals(
+      // TODO(ahe): This is wrong, it should be "a: 0, b: Object" or an error.
+      "a: 0, b: T",
+      new C().trace);
+  Expect.stringEquals("a: 0, b: String", new D().trace);
+  Expect.stringEquals("a: 0, b: String", new E().trace);
+  Expect.stringEquals("a: 0, b: int", new F().trace);
+}
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.direct.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.direct.expect
new file mode 100644
index 0000000..daec74c
--- /dev/null
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.direct.expect
@@ -0,0 +1,43 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "package:expect/expect.dart" as exp;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
+    : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
+    ;
+}
+class M extends core::Object {
+  synthetic constructor •() → self::M
+    : super core::Object::•()
+    ;
+}
+class D = self::C<core::String> with self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class E extends self::D {
+  synthetic constructor •() → self::E
+    : super self::C::•()
+    ;
+}
+abstract class _F&C&M = self::C<core::int> with self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class F extends self::_F&C&M {
+  synthetic constructor •() → self::F
+    : super self::C::•()
+    ;
+}
+static method main() → dynamic {
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().trace);
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().trace);
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().trace);
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().trace);
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().trace);
+}
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.direct.transformed.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.direct.transformed.expect
new file mode 100644
index 0000000..ce12709
--- /dev/null
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.direct.transformed.expect
@@ -0,0 +1,43 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "package:expect/expect.dart" as exp;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
+    : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
+    ;
+}
+class M extends core::Object {
+  synthetic constructor •() → self::M
+    : super core::Object::•()
+    ;
+}
+class D extends self::C<core::String> implements self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class E extends self::D {
+  synthetic constructor •() → self::E
+    : super self::C::•()
+    ;
+}
+abstract class _F&C&M extends self::C<core::int> implements self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class F extends self::_F&C&M {
+  synthetic constructor •() → self::F
+    : super self::C::•()
+    ;
+}
+static method main() → dynamic {
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().trace);
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().trace);
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().trace);
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().trace);
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().trace);
+}
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.outline.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.outline.expect
new file mode 100644
index 0000000..69f8aca
--- /dev/null
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.outline.expect
@@ -0,0 +1,33 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a, dynamic b}) → self::C<self::C::T>
+    ;
+}
+class M extends core::Object {
+  synthetic constructor •() → self::M
+    ;
+}
+class D = self::C<core::String> with self::M {
+  synthetic constructor •({dynamic a, dynamic b}) → self::D
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class E extends self::D {
+  synthetic constructor •() → self::E
+    ;
+}
+abstract class _F&C&M = self::C<core::int> with self::M {
+  synthetic constructor •({dynamic a, dynamic b}) → self::_F&C&M
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class F extends self::_F&C&M {
+  synthetic constructor •() → self::F
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.expect
new file mode 100644
index 0000000..c3bb2f6
--- /dev/null
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.expect
@@ -0,0 +1,43 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "package:expect/expect.dart" as exp;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
+    : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
+    ;
+}
+class M extends core::Object {
+  synthetic constructor •() → self::M
+    : super core::Object::•()
+    ;
+}
+class D = self::C<core::String> with self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class E extends self::D {
+  synthetic constructor •() → self::E
+    : super self::C::•()
+    ;
+}
+abstract class _F&C&M = self::C<core::int> with self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class F extends self::_F&C&M {
+  synthetic constructor •() → self::F
+    : super self::C::•()
+    ;
+}
+static method main() → dynamic {
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace});
+}
diff --git a/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.transformed.expect b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.transformed.expect
new file mode 100644
index 0000000..97235bc
--- /dev/null
+++ b/pkg/front_end/testcases/mixin_constructors_with_default_values.dart.strong.transformed.expect
@@ -0,0 +1,43 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "package:expect/expect.dart" as exp;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  field core::String trace;
+  constructor •({dynamic a = 0, dynamic b = self::C::T}) → self::C<self::C::T>
+    : self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
+    ;
+}
+class M extends core::Object {
+  synthetic constructor •() → self::M
+    : super core::Object::•()
+    ;
+}
+class D extends self::C<core::String> implements self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::String}) → self::D
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class E extends self::D {
+  synthetic constructor •() → self::E
+    : super self::C::•()
+    ;
+}
+abstract class _F&C&M extends self::C<core::int> implements self::M {
+  synthetic constructor •({dynamic a = 0, dynamic b = core::int}) → self::_F&C&M
+    : super self::C::•(a: a, b: b)
+    ;
+}
+class F extends self::_F&C&M {
+  synthetic constructor •() → self::F
+    : super self::C::•()
+    ;
+}
+static method main() → dynamic {
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace});
+  exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace});
+}
diff --git a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.expect b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.expect
index a69ed6d..0efea2e 100644
--- a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.expect
+++ b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.expect
@@ -22,6 +22,9 @@
     ;
 }
 abstract class _Foo&Object&C = core::Object with self::C<self::B> {
+  synthetic constructor •() → self::_Foo&Object&C
+    : super core::Object::•()
+    ;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo
diff --git a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.transformed.expect b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.transformed.expect
index faed21b..43b415d 100644
--- a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.direct.transformed.expect
@@ -23,7 +23,7 @@
 }
 abstract class _Foo&Object&C extends core::Object implements self::C<self::B> {
   field self::B _field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Foo&Object&C
     : super core::Object::•()
     ;
   method foo(self::B x) → dynamic {
diff --git a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
index 858ba50..1d0284c 100644
--- a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
+++ b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.outline.expect
@@ -18,6 +18,9 @@
     ;
 }
 abstract class _Foo&Object&C = core::Object with self::C<self::B> {
+  synthetic constructor •() → self::_Foo&Object&C
+    : super core::Object::•()
+    ;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo
diff --git a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
index fbfde41..0b74544 100644
--- a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
+++ b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.expect
@@ -22,6 +22,9 @@
     ;
 }
 abstract class _Foo&Object&C = core::Object with self::C<self::B> {
+  synthetic constructor •() → self::_Foo&Object&C
+    : super core::Object::•()
+    ;
 }
 class Foo extends self::_Foo&Object&C {
   synthetic constructor •() → self::Foo
diff --git a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
index d076b3c..bab35f4 100644
--- a/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/mixin_inherited_setter_for_mixed_in_field.dart.strong.transformed.expect
@@ -23,7 +23,7 @@
 }
 abstract class _Foo&Object&C extends core::Object implements self::C<self::B> {
   generic-covariant-impl field self::B _field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Foo&Object&C
     : super core::Object::•()
     ;
   method foo(generic-covariant-impl self::B x) → dynamic {
diff --git a/pkg/front_end/testcases/mixin_super_repeated.dart.direct.expect b/pkg/front_end/testcases/mixin_super_repeated.dart.direct.expect
index 0f75c93..5587bae 100644
--- a/pkg/front_end/testcases/mixin_super_repeated.dart.direct.expect
+++ b/pkg/front_end/testcases/mixin_super_repeated.dart.direct.expect
@@ -24,12 +24,18 @@
     ;
 }
 abstract class _Named&S&M = self::S with self::M {
+  synthetic constructor •() → self::_Named&S&M
+    : super self::S::•()
+    ;
 }
 abstract class _Named&S&M&N = self::_Named&S&M with self::N {
+  synthetic constructor •() → self::_Named&S&M&N
+    : super self::_Named&S&M::•()
+    ;
 }
 class Named = self::_Named&S&M&N with self::M {
   synthetic constructor •() → self::Named
-    : super self::S::•()
+    : super self::_Named&S&M&N::•()
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/mixin_super_repeated.dart.direct.transformed.expect b/pkg/front_end/testcases/mixin_super_repeated.dart.direct.transformed.expect
index 10e9e55..aa897ab 100644
--- a/pkg/front_end/testcases/mixin_super_repeated.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/mixin_super_repeated.dart.direct.transformed.expect
@@ -25,12 +25,12 @@
 }
 abstract class _Named&S&M extends self::S implements self::M {
   field dynamic m = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Named&S&M
     : super self::S::•()
     ;
 }
 abstract class _Named&S&M&N extends self::_Named&S&M implements self::N {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Named&S&M&N
     : super self::_Named&S&M::•()
     ;
   set superM(dynamic value) → void {
@@ -42,7 +42,7 @@
 class Named extends self::_Named&S&M&N implements self::M {
   field dynamic m = null;
   synthetic constructor •() → self::Named
-    : super self::S::•()
+    : super self::_Named&S&M&N::•()
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/mixin_super_repeated.dart.outline.expect b/pkg/front_end/testcases/mixin_super_repeated.dart.outline.expect
index 382eda9..d8d6683 100644
--- a/pkg/front_end/testcases/mixin_super_repeated.dart.outline.expect
+++ b/pkg/front_end/testcases/mixin_super_repeated.dart.outline.expect
@@ -20,12 +20,18 @@
     ;
 }
 abstract class _Named&S&M = self::S with self::M {
+  synthetic constructor •() → self::_Named&S&M
+    : super self::S::•()
+    ;
 }
 abstract class _Named&S&M&N = self::_Named&S&M with self::N {
+  synthetic constructor •() → self::_Named&S&M&N
+    : super self::_Named&S&M::•()
+    ;
 }
 class Named = self::_Named&S&M&N with self::M {
   synthetic constructor •() → self::Named
-    : super self::S::•()
+    : super self::_Named&S&M&N::•()
     ;
 }
 static method main() → dynamic
diff --git a/pkg/front_end/testcases/mixin_super_repeated.dart.strong.expect b/pkg/front_end/testcases/mixin_super_repeated.dart.strong.expect
index a52432b..3ec41849 100644
--- a/pkg/front_end/testcases/mixin_super_repeated.dart.strong.expect
+++ b/pkg/front_end/testcases/mixin_super_repeated.dart.strong.expect
@@ -24,12 +24,18 @@
     ;
 }
 abstract class _Named&S&M = self::S with self::M {
+  synthetic constructor •() → self::_Named&S&M
+    : super self::S::•()
+    ;
 }
 abstract class _Named&S&M&N = self::_Named&S&M with self::N {
+  synthetic constructor •() → self::_Named&S&M&N
+    : super self::_Named&S&M::•()
+    ;
 }
 class Named = self::_Named&S&M&N with self::M {
   synthetic constructor •() → self::Named
-    : super self::S::•()
+    : super self::_Named&S&M&N::•()
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/mixin_super_repeated.dart.strong.transformed.expect b/pkg/front_end/testcases/mixin_super_repeated.dart.strong.transformed.expect
index 3ce3d54..f3795b2 100644
--- a/pkg/front_end/testcases/mixin_super_repeated.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/mixin_super_repeated.dart.strong.transformed.expect
@@ -25,12 +25,12 @@
 }
 abstract class _Named&S&M extends self::S implements self::M {
   field dynamic m = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Named&S&M
     : super self::S::•()
     ;
 }
 abstract class _Named&S&M&N extends self::_Named&S&M implements self::N {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Named&S&M&N
     : super self::_Named&S&M::•()
     ;
   set superM(dynamic value) → void {
@@ -42,7 +42,7 @@
 class Named extends self::_Named&S&M&N implements self::M {
   field dynamic m = null;
   synthetic constructor •() → self::Named
-    : super self::S::•()
+    : super self::_Named&S&M&N::•()
     ;
 }
 static method main() → dynamic {
diff --git a/pkg/front_end/testcases/named_function_scope.dart.direct.expect b/pkg/front_end/testcases/named_function_scope.dart.direct.expect
index b6b2d79..f72549c 100644
--- a/pkg/front_end/testcases/named_function_scope.dart.direct.expect
+++ b/pkg/front_end/testcases/named_function_scope.dart.direct.expect
@@ -128,12 +128,12 @@
   }
   {
     self::V v;
-    dynamic V = let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
+    dynamic V = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
     var /*@error=DuplicatedNamePreviouslyUsed*/ V = null;
-                                                ^" in let final dynamic #t2 = null in null;
+                                                ^" in null;
   }
   {
-    dynamic x = let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
+    dynamic x = let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
         T() {};
         ^" in let final () → self::T T = () → self::T {} in T;
   }
@@ -143,7 +143,7 @@
                                               ^";
   }
   {
-    dynamic x = let final dynamic #t4 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
+    dynamic x = let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
         T< /*@context=DuplicatedDeclarationCause*/ T>() {};
         ^" in let final <T extends core::Object = dynamic>() → dynamic T = <T extends core::Object = dynamic>() → dynamic {} in T;
   }
diff --git a/pkg/front_end/testcases/named_function_scope.dart.direct.transformed.expect b/pkg/front_end/testcases/named_function_scope.dart.direct.transformed.expect
index 582b0c0..08b6a24 100644
--- a/pkg/front_end/testcases/named_function_scope.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/named_function_scope.dart.direct.transformed.expect
@@ -47,12 +47,12 @@
   }
   {
     self::V v;
-    dynamic V = let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
+    dynamic V = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
     var /*@error=DuplicatedNamePreviouslyUsed*/ V = null;
-                                                ^" in let final dynamic #t2 = null in null;
+                                                ^" in null;
   }
   {
-    dynamic x = let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
+    dynamic x = let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
         T() {};
         ^" in let final () → self::T T = () → self::T {} in T;
   }
@@ -62,7 +62,7 @@
                                               ^";
   }
   {
-    dynamic x = let final dynamic #t4 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
+    dynamic x = let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
         T< /*@context=DuplicatedDeclarationCause*/ T>() {};
         ^" in let final <T extends core::Object = dynamic>() → dynamic T = <T extends core::Object = dynamic>() → dynamic {} in T;
   }
diff --git a/pkg/front_end/testcases/named_function_scope.dart.strong.expect b/pkg/front_end/testcases/named_function_scope.dart.strong.expect
index cf7a297..e178628 100644
--- a/pkg/front_end/testcases/named_function_scope.dart.strong.expect
+++ b/pkg/front_end/testcases/named_function_scope.dart.strong.expect
@@ -132,12 +132,12 @@
   }
   {
     self::V v;
-    dynamic V = let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
+    dynamic V = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
     var /*@error=DuplicatedNamePreviouslyUsed*/ V = null;
-                                                ^" in let final dynamic #t2 = null in null;
+                                                ^" in null;
   }
   {
-    dynamic x = let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
+    dynamic x = let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
         T() {};
         ^" in let final () → self::T T = () → self::T {} in T;
   }
@@ -147,7 +147,7 @@
                                               ^" as{TypeError} self::V;
   }
   {
-    dynamic x = let final dynamic #t4 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
+    dynamic x = let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
         T< /*@context=DuplicatedDeclarationCause*/ T>() {};
         ^" in let final <T extends core::Object = dynamic>() → dynamic T = <T extends core::Object = dynamic>() → dynamic {} in T;
   }
diff --git a/pkg/front_end/testcases/named_function_scope.dart.strong.transformed.expect b/pkg/front_end/testcases/named_function_scope.dart.strong.transformed.expect
index 4c5b73f..4405962 100644
--- a/pkg/front_end/testcases/named_function_scope.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/named_function_scope.dart.strong.transformed.expect
@@ -51,12 +51,12 @@
   }
   {
     self::V v;
-    dynamic V = let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
+    dynamic V = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/named_function_scope.dart:38:49: Error: Can't declare 'V' because it was already used in this scope.
     var /*@error=DuplicatedNamePreviouslyUsed*/ V = null;
-                                                ^" in let final<BottomType> #t2 = null in null;
+                                                ^" in null;
   }
   {
-    dynamic x = let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
+    dynamic x = let final dynamic #t2 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:48:9: Error: Can't declare 'T' because it was already used in this scope.
         T() {};
         ^" in let final () → self::T T = () → self::T {} in T;
   }
@@ -66,7 +66,7 @@
                                               ^" as{TypeError} self::V;
   }
   {
-    dynamic x = let final dynamic #t4 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
+    dynamic x = let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/named_function_scope.dart:62:9: Error: 'T' is already declared in this scope.
         T< /*@context=DuplicatedDeclarationCause*/ T>() {};
         ^" in let final <T extends core::Object = dynamic>() → dynamic T = <T extends core::Object = dynamic>() → dynamic {} in T;
   }
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect
index a9742d6..0a61fdf 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.expect
@@ -22,6 +22,9 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _C&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_C&Object&B
+    : super core::Object::•()
+    ;
 }
 class C extends self::_C&Object&B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect
index cb83539..ccc4dd7 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.direct.transformed.expect
@@ -22,7 +22,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _C&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&Object&B
     : super core::Object::•()
     ;
   method noSuchMethod(dynamic i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
index 15c9cda..c4b9c38 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.outline.expect
@@ -18,6 +18,9 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _C&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_C&Object&B
+    : super core::Object::•()
+    ;
 }
 class C extends self::_C&Object&B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
index 4c4939e..a816021 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.expect
@@ -22,6 +22,9 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _C&Object&B = core::Object with self::B {
+  synthetic constructor •() → self::_C&Object&B
+    : super core::Object::•()
+    ;
 }
 class C extends self::_C&Object&B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
index c602274..2368a1a 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/abstract_accessors_from_field_arent_mixed_in.dart.strong.transformed.expect
@@ -22,7 +22,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:foo", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _C&Object&B extends core::Object implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&Object&B
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect
index c5bcd9f..81c1320 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.expect
@@ -24,6 +24,9 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 abstract class _C&A&B = self::A with self::B {
+  synthetic constructor •() → self::_C&A&B
+    : super self::A::•()
+    ;
 }
 class C extends self::_C&A&B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect
index 7b853f4..b6f3359 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.direct.transformed.expect
@@ -24,7 +24,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 abstract class _C&A&B extends self::A implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&A&B
     : super self::A::•()
     ;
   method noSuchMethod(dynamic _) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
index eb7632c..00ec655 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.outline.expect
@@ -22,6 +22,9 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 abstract class _C&A&B = self::A with self::B {
+  synthetic constructor •() → self::_C&A&B
+    : super self::A::•()
+    ;
 }
 class C extends self::_C&A&B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
index 4fc3589..dad1342 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.expect
@@ -24,6 +24,9 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 abstract class _C&A&B = self::A with self::B {
+  synthetic constructor •() → self::_C&A&B
+    : super self::A::•()
+    ;
 }
 class C extends self::_C&A&B {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
index 6b4ec43..d42a760 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/concrete_method_over_forwarder_in_mixin_application.dart.strong.transformed.expect
@@ -24,7 +24,7 @@
     return this.{self::B::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 abstract class _C&A&B extends self::A implements self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&A&B
     : super self::A::•()
     ;
   method noSuchMethod(core::Invocation _) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect
index 5ad08c0..80ac8d4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.expect
@@ -18,6 +18,9 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&A = core::Object with self::A {
+  synthetic constructor •() → self::_B&Object&A
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect
index 42ed7d8..c32ccc2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.direct.transformed.expect
@@ -18,7 +18,7 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
index f023ea6..d41e782 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.outline.expect
@@ -16,6 +16,9 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&A = core::Object with self::A {
+  synthetic constructor •() → self::_B&Object&A
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
index 5ad08c0..80ac8d4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.expect
@@ -18,6 +18,9 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&A = core::Object with self::A {
+  synthetic constructor •() → self::_B&Object&A
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
index 42ed7d8..c32ccc2 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/forwarders_not_assumed_from_mixin.dart.strong.transformed.expect
@@ -18,7 +18,7 @@
     return this.{self::A::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect
index 2957383..776da8f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.expect
@@ -19,6 +19,9 @@
     return null;
 }
 abstract class _A&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_A&Object&M
+    : super core::Object::•()
+    ;
 }
 class A extends self::_A&Object&M implements self::I {
   synthetic constructor •() → self::A
@@ -28,6 +31,9 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_B&Object&M
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&M implements self::I {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect
index 8c31606..f0ebba4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.direct.transformed.expect
@@ -19,7 +19,7 @@
     return null;
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
@@ -33,7 +33,7 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
index 42bc14b..39010a5 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.outline.expect
@@ -17,6 +17,9 @@
     ;
 }
 abstract class _A&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_A&Object&M
+    : super core::Object::•()
+    ;
 }
 class A extends self::_A&Object&M implements self::I {
   synthetic constructor •() → self::A
@@ -25,6 +28,9 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_B&Object&M
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&M implements self::I {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
index 2957383..776da8f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.expect
@@ -19,6 +19,9 @@
     return null;
 }
 abstract class _A&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_A&Object&M
+    : super core::Object::•()
+    ;
 }
 class A extends self::_A&Object&M implements self::I {
   synthetic constructor •() → self::A
@@ -28,6 +31,9 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_B&Object&M
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&M implements self::I {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
index 8c31606..f0ebba4 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/interface_with_nsm.dart.strong.transformed.expect
@@ -19,7 +19,7 @@
     return null;
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
@@ -33,7 +33,7 @@
     return this.{self::M::noSuchMethod}(new core::_InvocationMirror::_withoutType("foo", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
 }
 abstract class _B&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect
index 9f21bc5..0ad4ed0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.expect
@@ -11,6 +11,9 @@
   }
 }
 abstract class _B&Object&A = core::Object with self::A {
+  synthetic constructor •() → self::_B&Object&A
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect
index 73c44a8..a3f458f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.direct.transformed.expect
@@ -11,7 +11,7 @@
   }
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
index f40d07d..bf9d64c 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.outline.expect
@@ -9,6 +9,9 @@
     ;
 }
 abstract class _B&Object&A = core::Object with self::A {
+  synthetic constructor •() → self::_B&Object&A
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
index 9f21bc5..0ad4ed0 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.expect
@@ -11,6 +11,9 @@
   }
 }
 abstract class _B&Object&A = core::Object with self::A {
+  synthetic constructor •() → self::_B&Object&A
+    : super core::Object::•()
+    ;
 }
 class B extends self::_B&Object&A {
   synthetic constructor •() → self::B
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
index 73c44a8..a3f458f 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/nsm_mixed_in.dart.strong.transformed.expect
@@ -11,7 +11,7 @@
   }
 }
 abstract class _B&Object&A extends core::Object implements self::A {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_B&Object&A
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect
index 87b568d..975dbf1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.expect
@@ -1,12 +1,18 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:10:8: Warning: Can't declare a member that conflicts with an inherited one.
+// pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:10:8: Error: Can't declare a member that conflicts with an inherited one.
 //   void foo(int x) {}
 //        ^
 // pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:12:12: Context: This is the inherited member.
 //   void set foo(int x);
 //            ^
 
+// Unhandled errors:
+//
+// pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:10:8: Error: Can't declare a member that conflicts with an inherited one.
+//   void foo(int x) {}
+//        ^
+
 library;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect
index 7b2e767..cecb135 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.direct.transformed.expect
@@ -1,3 +1,9 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:10:8: Error: Can't declare a member that conflicts with an inherited one.
+//   void foo(int x) {}
+//        ^
+
 library;
 import self as self;
 import "dart:core" as core;
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
index 81abb12..f1a4f6e 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart.outline.expect
@@ -1,6 +1,6 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:10:8: Warning: Can't declare a member that conflicts with an inherited one.
+// pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:10:8: Error: Can't declare a member that conflicts with an inherited one.
 //   void foo(int x) {}
 //        ^
 // pkg/front_end/testcases/no_such_method_forwarders/setter_not_shadowed_by_method.dart:12:12: Context: This is the inherited member.
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect
index 30c2905..42faafa 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.expect
@@ -17,6 +17,9 @@
   }
 }
 abstract class _A&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_A&Object&M
+    : super core::Object::•()
+    ;
 }
 class A extends self::_A&Object&M implements self::I<core::int> {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect
index 6f791e0..6ec16b2c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.direct.transformed.expect
@@ -17,7 +17,7 @@
   }
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
index 9e561e3..f52edec 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.outline.expect
@@ -14,6 +14,9 @@
     ;
 }
 abstract class _A&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_A&Object&M
+    : super core::Object::•()
+    ;
 }
 class A extends self::_A&Object&M implements self::I<core::int> {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
index 30c2905..42faafa 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.expect
@@ -17,6 +17,9 @@
   }
 }
 abstract class _A&Object&M = core::Object with self::M {
+  synthetic constructor •() → self::_A&Object&M
+    : super core::Object::•()
+    ;
 }
 class A extends self::_A&Object&M implements self::I<core::int> {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
index 6f791e0..6ec16b2c1 100644
--- a/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/no_such_method_forwarders/subst_on_forwarder.dart.strong.transformed.expect
@@ -17,7 +17,7 @@
   }
 }
 abstract class _A&Object&M extends core::Object implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&M
     : super core::Object::•()
     ;
   method noSuchMethod(core::Invocation i) → dynamic {
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart b/pkg/front_end/testcases/no_such_method_private_setter.dart
new file mode 100644
index 0000000..9d026b5
--- /dev/null
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart
@@ -0,0 +1,14 @@
+// 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 './no_such_method_private_setter_lib.dart';
+
+// `Bar' contains a private setter `_x'. The generated Kernel code for `Foo'
+// should contain a no such method forwarder for `_x'.
+
+class Foo implements Bar {}
+
+main() {
+  baz(new Foo());
+}
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.expect
new file mode 100644
index 0000000..15500e2
--- /dev/null
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.expect
@@ -0,0 +1,17 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./no_such_method_private_setter_lib.dart" as no_;
+
+class Foo extends core::Object implements no_::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+static method main() → dynamic {
+  no_::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.transformed.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.transformed.expect
new file mode 100644
index 0000000..15500e2
--- /dev/null
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.direct.transformed.expect
@@ -0,0 +1,17 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./no_such_method_private_setter_lib.dart" as no_;
+
+class Foo extends core::Object implements no_::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+static method main() → dynamic {
+  no_::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.outline.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.outline.expect
new file mode 100644
index 0000000..5c1159f
--- /dev/null
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.outline.expect
@@ -0,0 +1,15 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./no_such_method_private_setter_lib.dart" as no_;
+
+class Foo extends core::Object implements no_::Bar {
+  synthetic constructor •() → self::Foo
+    ;
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
new file mode 100644
index 0000000..15500e2
--- /dev/null
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.expect
@@ -0,0 +1,17 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./no_such_method_private_setter_lib.dart" as no_;
+
+class Foo extends core::Object implements no_::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+static method main() → dynamic {
+  no_::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
new file mode 100644
index 0000000..15500e2
--- /dev/null
+++ b/pkg/front_end/testcases/no_such_method_private_setter.dart.strong.transformed.expect
@@ -0,0 +1,17 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./no_such_method_private_setter_lib.dart" as no_;
+
+class Foo extends core::Object implements no_::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder get /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x() → core::int
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:_x", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} core::int;
+  no-such-method-forwarder set /* from org-dartlang-testcase:///no_such_method_private_setter_lib.dart */ _x(core::int value) → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("set:_x", const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[value]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+static method main() → dynamic {
+  no_::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/no_such_method_private_setter_lib.dart b/pkg/front_end/testcases/no_such_method_private_setter_lib.dart
new file mode 100644
index 0000000..b4f3e2c
--- /dev/null
+++ b/pkg/front_end/testcases/no_such_method_private_setter_lib.dart
@@ -0,0 +1,13 @@
+// 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.
+
+// Companion library to no_such_method_private_setter.dart.
+
+class Bar {
+  int _x;
+}
+
+void baz(Bar bar) {
+  return;
+}
diff --git a/pkg/front_end/testcases/outline.status b/pkg/front_end/testcases/outline.status
index aeed5cf..3199cdb 100644
--- a/pkg/front_end/testcases/outline.status
+++ b/pkg/front_end/testcases/outline.status
@@ -35,7 +35,6 @@
 inference/conflicts_can_happen2: Fail
 inference/constructors_downwards_with_constraint: Fail
 inference/constructors_infer_from_arguments: Fail
-inference/constructors_infer_from_arguments_argument_not_assignable: Fail
 inference/constructors_infer_from_arguments_const: Fail
 inference/constructors_infer_from_arguments_const_with_upper_bound: Fail
 inference/constructors_infer_from_arguments_downwards_from_constructor: Fail
@@ -45,14 +44,12 @@
 inference/constructors_infer_from_arguments_named_factory: Fail
 inference/constructors_infer_from_arguments_redirecting: Fail
 inference/constructors_infer_from_arguments_redirecting_factory: Fail
-inference/constructors_inference_f_bounded: Fail
 inference/constructors_reverse_type_parameters: Fail
 inference/constructors_too_many_positional_arguments: Fail
 inference/do_not_infer_overridden_fields_that_explicitly_say_dynamic_infer: Fail
 inference/dont_infer_field_type_when_initializer_is_null: Fail
 inference/dont_infer_type_on_dynamic: Fail
 inference/dont_infer_type_when_initializer_is_null: Fail
-inference/downward_inference_fixes_no_upwards_errors: Fail
 inference/downward_inference_miscellaneous: Fail
 inference/downwards_inference_assignment_statements: Fail
 inference/downwards_inference_async_await: Fail
@@ -76,7 +73,6 @@
 inference/future_or_subtyping: Fail
 inference/generic_functions_return_typedef: Fail
 inference/generic_methods_basic_downward_inference: Fail
-inference/generic_methods_correctly_recognize_generic_upper_bound: Fail
 inference/generic_methods_dart_math_min_max: Fail
 inference/generic_methods_do_not_infer_invalid_override_of_generic_method: Fail
 inference/generic_methods_downwards_inference_affects_arguments: Fail
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart b/pkg/front_end/testcases/private_method_tearoff.dart
new file mode 100644
index 0000000..71b8217
--- /dev/null
+++ b/pkg/front_end/testcases/private_method_tearoff.dart
@@ -0,0 +1,17 @@
+// 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 './private_method_tearoff_lib.dart';
+
+// `Bar' contains a private method `_f'. The function `baz' is declared in the
+// same library as `Bar' and attempts to invoke `_f`. The generated Kernel code
+// for `Foo' should contain a no such method forwarder for `_f'.
+
+class Foo implements Bar {}
+
+class Baz extends Foo {}
+
+main() {
+  baz(new Foo());
+}
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.direct.expect b/pkg/front_end/testcases/private_method_tearoff.dart.direct.expect
new file mode 100644
index 0000000..cc82f9e
--- /dev/null
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.direct.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./private_method_tearoff_lib.dart" as pri;
+
+class Foo extends core::Object implements pri::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+class Baz extends self::Foo {
+  synthetic constructor •() → self::Baz
+    : super self::Foo::•()
+    ;
+}
+static method main() → dynamic {
+  pri::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.direct.transformed.expect b/pkg/front_end/testcases/private_method_tearoff.dart.direct.transformed.expect
new file mode 100644
index 0000000..cc82f9e
--- /dev/null
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.direct.transformed.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./private_method_tearoff_lib.dart" as pri;
+
+class Foo extends core::Object implements pri::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+class Baz extends self::Foo {
+  synthetic constructor •() → self::Baz
+    : super self::Foo::•()
+    ;
+}
+static method main() → dynamic {
+  pri::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.outline.expect b/pkg/front_end/testcases/private_method_tearoff.dart.outline.expect
new file mode 100644
index 0000000..ad25a0f
--- /dev/null
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.outline.expect
@@ -0,0 +1,17 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./private_method_tearoff_lib.dart" as pri;
+
+class Foo extends core::Object implements pri::Bar {
+  synthetic constructor •() → self::Foo
+    ;
+  no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+class Baz extends self::Foo {
+  synthetic constructor •() → self::Baz
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
new file mode 100644
index 0000000..cc82f9e
--- /dev/null
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.strong.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./private_method_tearoff_lib.dart" as pri;
+
+class Foo extends core::Object implements pri::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+class Baz extends self::Foo {
+  synthetic constructor •() → self::Baz
+    : super self::Foo::•()
+    ;
+}
+static method main() → dynamic {
+  pri::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
new file mode 100644
index 0000000..cc82f9e
--- /dev/null
+++ b/pkg/front_end/testcases/private_method_tearoff.dart.strong.transformed.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+import "./private_method_tearoff_lib.dart" as pri;
+
+class Foo extends core::Object implements pri::Bar {
+  synthetic constructor •() → self::Foo
+    : super core::Object::•()
+    ;
+  no-such-method-forwarder method /* from org-dartlang-testcase:///private_method_tearoff_lib.dart */ _f() → void
+    return this.{core::Object::noSuchMethod}(new core::_InvocationMirror::_withoutType("_f", const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false));
+}
+class Baz extends self::Foo {
+  synthetic constructor •() → self::Baz
+    : super self::Foo::•()
+    ;
+}
+static method main() → dynamic {
+  pri::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/private_method_tearoff_lib.dart b/pkg/front_end/testcases/private_method_tearoff_lib.dart
new file mode 100644
index 0000000..0cbfb17
--- /dev/null
+++ b/pkg/front_end/testcases/private_method_tearoff_lib.dart
@@ -0,0 +1,13 @@
+// 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.
+
+// Companion library for private_method_tearoff.dart.
+
+class Bar {
+  void _f() {}
+}
+
+void baz(Bar bar) {
+  print("${bar._f.runtimeType}");
+}
diff --git a/pkg/front_end/testcases/public_method_tearoff.dart b/pkg/front_end/testcases/public_method_tearoff.dart
new file mode 100644
index 0000000..1d304cc
--- /dev/null
+++ b/pkg/front_end/testcases/public_method_tearoff.dart
@@ -0,0 +1,15 @@
+// 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 './public_method_tearoff_lib.dart';
+
+// `Bar' contains a public method `f'. The function `baz' is declared in the
+// same library as `Bar' and attempts to invoke `f`. The generated Kernel code
+// for `Foo' should _not_ contain a no such method forwarder for `f'.
+
+class Foo extends Bar {}
+
+void main() {
+  baz(new Foo());
+}
diff --git a/pkg/front_end/testcases/public_method_tearoff.dart.direct.expect b/pkg/front_end/testcases/public_method_tearoff.dart.direct.expect
new file mode 100644
index 0000000..12c4ea4
--- /dev/null
+++ b/pkg/front_end/testcases/public_method_tearoff.dart.direct.expect
@@ -0,0 +1,12 @@
+library;
+import self as self;
+import "./public_method_tearoff_lib.dart" as pub;
+
+class Foo extends pub::Bar {
+  synthetic constructor •() → self::Foo
+    : super pub::Bar::•()
+    ;
+}
+static method main() → void {
+  pub::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/public_method_tearoff.dart.direct.transformed.expect b/pkg/front_end/testcases/public_method_tearoff.dart.direct.transformed.expect
new file mode 100644
index 0000000..12c4ea4
--- /dev/null
+++ b/pkg/front_end/testcases/public_method_tearoff.dart.direct.transformed.expect
@@ -0,0 +1,12 @@
+library;
+import self as self;
+import "./public_method_tearoff_lib.dart" as pub;
+
+class Foo extends pub::Bar {
+  synthetic constructor •() → self::Foo
+    : super pub::Bar::•()
+    ;
+}
+static method main() → void {
+  pub::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/public_method_tearoff.dart.outline.expect b/pkg/front_end/testcases/public_method_tearoff.dart.outline.expect
new file mode 100644
index 0000000..23f16e8
--- /dev/null
+++ b/pkg/front_end/testcases/public_method_tearoff.dart.outline.expect
@@ -0,0 +1,10 @@
+library;
+import self as self;
+import "./public_method_tearoff_lib.dart" as pub;
+
+class Foo extends pub::Bar {
+  synthetic constructor •() → self::Foo
+    ;
+}
+static method main() → void
+  ;
diff --git a/pkg/front_end/testcases/public_method_tearoff.dart.strong.expect b/pkg/front_end/testcases/public_method_tearoff.dart.strong.expect
new file mode 100644
index 0000000..12c4ea4
--- /dev/null
+++ b/pkg/front_end/testcases/public_method_tearoff.dart.strong.expect
@@ -0,0 +1,12 @@
+library;
+import self as self;
+import "./public_method_tearoff_lib.dart" as pub;
+
+class Foo extends pub::Bar {
+  synthetic constructor •() → self::Foo
+    : super pub::Bar::•()
+    ;
+}
+static method main() → void {
+  pub::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/public_method_tearoff.dart.strong.transformed.expect b/pkg/front_end/testcases/public_method_tearoff.dart.strong.transformed.expect
new file mode 100644
index 0000000..12c4ea4
--- /dev/null
+++ b/pkg/front_end/testcases/public_method_tearoff.dart.strong.transformed.expect
@@ -0,0 +1,12 @@
+library;
+import self as self;
+import "./public_method_tearoff_lib.dart" as pub;
+
+class Foo extends pub::Bar {
+  synthetic constructor •() → self::Foo
+    : super pub::Bar::•()
+    ;
+}
+static method main() → void {
+  pub::baz(new self::Foo::•());
+}
diff --git a/pkg/front_end/testcases/public_method_tearoff_lib.dart b/pkg/front_end/testcases/public_method_tearoff_lib.dart
new file mode 100644
index 0000000..ceaf0ca
--- /dev/null
+++ b/pkg/front_end/testcases/public_method_tearoff_lib.dart
@@ -0,0 +1,13 @@
+// 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.
+
+// Companion library for public_method_tearoff.dart.
+
+class Bar {
+  void f() {}
+}
+
+void baz(Bar bar) {
+  print("${bar.f.runtimeType}");
+}
diff --git a/pkg/front_end/testcases/qualified.dart.direct.expect b/pkg/front_end/testcases/qualified.dart.direct.expect
index ffe6b62..cf5f613 100644
--- a/pkg/front_end/testcases/qualified.dart.direct.expect
+++ b/pkg/front_end/testcases/qualified.dart.direct.expect
@@ -9,11 +9,11 @@
 //
 // pkg/front_end/testcases/qualified.dart:12:3: Warning: Type 'lib.Missing' not found.
 //   lib.Missing method() {}
-//   ^
+//   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:11:19: Error: Type 'lib.Missing' not found.
 // class Bad extends lib.Missing {
-//                   ^
+//                   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
@@ -27,7 +27,7 @@
 //
 // pkg/front_end/testcases/qualified.dart:11:19: Error: Type 'lib.Missing' not found.
 // class Bad extends lib.Missing {
-//                   ^
+//                   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
@@ -43,6 +43,9 @@
   static factory WrongName() → self::Bad {}
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin {
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
+    : super lib::Supertype::•()
+    ;
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
   synthetic constructor •() → self::WithMixin
diff --git a/pkg/front_end/testcases/qualified.dart.direct.transformed.expect b/pkg/front_end/testcases/qualified.dart.direct.transformed.expect
index dca499a..020e7a3 100644
--- a/pkg/front_end/testcases/qualified.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/qualified.dart.direct.transformed.expect
@@ -6,7 +6,7 @@
 //
 // pkg/front_end/testcases/qualified.dart:11:19: Error: Type 'lib.Missing' not found.
 // class Bad extends lib.Missing {
-//                   ^
+//                   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
@@ -22,7 +22,7 @@
   static factory WrongName() → self::Bad {}
 }
 abstract class _WithMixin&Supertype&Mixin extends lib::Supertype implements lib::Mixin {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
     : super lib::Supertype::•()
     ;
   method /* from org-dartlang-testcase:///qualified_lib.dart */ foo() → dynamic {
diff --git a/pkg/front_end/testcases/qualified.dart.outline.expect b/pkg/front_end/testcases/qualified.dart.outline.expect
index 15d4637..42db141 100644
--- a/pkg/front_end/testcases/qualified.dart.outline.expect
+++ b/pkg/front_end/testcases/qualified.dart.outline.expect
@@ -9,11 +9,11 @@
 //
 // pkg/front_end/testcases/qualified.dart:12:3: Warning: Type 'lib.Missing' not found.
 //   lib.Missing method() {}
-//   ^
+//   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:11:19: Error: Type 'lib.Missing' not found.
 // class Bad extends lib.Missing {
-//                   ^
+//                   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
@@ -31,6 +31,8 @@
     ;
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin {
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
+    ;
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
   synthetic constructor •() → self::WithMixin
diff --git a/pkg/front_end/testcases/qualified.dart.strong.expect b/pkg/front_end/testcases/qualified.dart.strong.expect
index d6e1727..f36c315 100644
--- a/pkg/front_end/testcases/qualified.dart.strong.expect
+++ b/pkg/front_end/testcases/qualified.dart.strong.expect
@@ -9,11 +9,11 @@
 //
 // pkg/front_end/testcases/qualified.dart:12:3: Error: Type 'lib.Missing' not found.
 //   lib.Missing method() {}
-//   ^
+//   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:11:19: Error: Type 'lib.Missing' not found.
 // class Bad extends lib.Missing {
-//                   ^
+//                   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
@@ -27,11 +27,11 @@
 //
 // pkg/front_end/testcases/qualified.dart:12:3: Error: Type 'lib.Missing' not found.
 //   lib.Missing method() {}
-//   ^
+//   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:11:19: Error: Type 'lib.Missing' not found.
 // class Bad extends lib.Missing {
-//                   ^
+//                   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
@@ -47,6 +47,9 @@
   static factory WrongName() → self::Bad {}
 }
 abstract class _WithMixin&Supertype&Mixin = lib::Supertype with lib::Mixin {
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
+    : super lib::Supertype::•()
+    ;
 }
 class WithMixin extends self::_WithMixin&Supertype&Mixin {
   synthetic constructor •() → self::WithMixin
diff --git a/pkg/front_end/testcases/qualified.dart.strong.transformed.expect b/pkg/front_end/testcases/qualified.dart.strong.transformed.expect
index ad0928d..c067a36 100644
--- a/pkg/front_end/testcases/qualified.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/qualified.dart.strong.transformed.expect
@@ -6,11 +6,11 @@
 //
 // pkg/front_end/testcases/qualified.dart:12:3: Error: Type 'lib.Missing' not found.
 //   lib.Missing method() {}
-//   ^
+//   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:11:19: Error: Type 'lib.Missing' not found.
 // class Bad extends lib.Missing {
-//                   ^
+//                   ^^^^^^^^^^^
 //
 // pkg/front_end/testcases/qualified.dart:18:7: Error: The type 'lib.VoidFunction' can't be used as supertype.
 // class IllegalSupertype extends lib.VoidFunction {}
@@ -26,7 +26,7 @@
   static factory WrongName() → self::Bad {}
 }
 abstract class _WithMixin&Supertype&Mixin extends lib::Supertype implements lib::Mixin {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_WithMixin&Supertype&Mixin
     : super lib::Supertype::•()
     ;
   method /* from org-dartlang-testcase:///qualified_lib.dart */ foo() → dynamic {
diff --git a/pkg/front_end/testcases/rasta/bad_interpolation.dart.outline.expect b/pkg/front_end/testcases/rasta/bad_interpolation.dart.outline.expect
index b9d119d..f08449b 100644
--- a/pkg/front_end/testcases/rasta/bad_interpolation.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/bad_interpolation.dart.outline.expect
@@ -2,7 +2,7 @@
 //
 // pkg/front_end/testcases/rasta/bad_interpolation.dart:6:13: Error: String starting with " must end with ".
 //   print(" $x.);
-//             ^
+//             ^^^
 //
 // pkg/front_end/testcases/rasta/bad_interpolation.dart:6:8: Error: Can't find ')' to match '('.
 //   print(" $x.);
diff --git a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
index bae8de1..85e236b 100644
--- a/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/class_hierarchy.dart.outline.expect
@@ -6,15 +6,15 @@
 //
 // pkg/front_end/testcases/rasta/class_hierarchy.dart:5:17: Error: Type 'Missing' not found.
 // class A extends Missing {}
-//                 ^
+//                 ^^^^^^^
 //
 // pkg/front_end/testcases/rasta/class_hierarchy.dart:7:20: Error: Type 'Missing' not found.
 // class B implements Missing {}
-//                    ^
+//                    ^^^^^^^
 //
 // pkg/front_end/testcases/rasta/class_hierarchy.dart:9:23: Error: Type 'Missing' not found.
 // class C = Object with Missing;
-//                       ^
+//                       ^^^^^^^
 //
 // pkg/front_end/testcases/rasta/class_hierarchy.dart:12:17: Warning: Couldn't find constructor 'Missing'.
 //   factory D() = Missing;
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.expect
index 87d7e8d..cb6cde6 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.expect
@@ -9,8 +9,14 @@
     ;
 }
 abstract class _A&Object&Mixin = core::Object with self::Mixin {
+  synthetic constructor •() → self::_A&Object&Mixin
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&Mixin&Mixin = self::_A&Object&Mixin with self::Mixin {
+  synthetic constructor •() → self::_A&Object&Mixin&Mixin
+    : super self::_A&Object&Mixin::•()
+    ;
 }
 class A extends self::_A&Object&Mixin&Mixin {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.transformed.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.transformed.expect
index ebb7020..d3c872e 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.direct.transformed.expect
@@ -10,13 +10,13 @@
 }
 abstract class _A&Object&Mixin extends core::Object implements self::Mixin {
   field dynamic field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&Mixin
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&Mixin&Mixin extends self::_A&Object&Mixin implements self::Mixin {
   field dynamic field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&Mixin&Mixin
     : super self::_A&Object&Mixin::•()
     ;
 }
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect
index bb832c5..eb07e47 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.outline.expect
@@ -8,8 +8,14 @@
     ;
 }
 abstract class _A&Object&Mixin = core::Object with self::Mixin {
+  synthetic constructor •() → self::_A&Object&Mixin
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&Mixin&Mixin = self::_A&Object&Mixin with self::Mixin {
+  synthetic constructor •() → self::_A&Object&Mixin&Mixin
+    : super self::_A&Object&Mixin::•()
+    ;
 }
 class A extends self::_A&Object&Mixin&Mixin {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect
index 87d7e8d..cb6cde6 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.expect
@@ -9,8 +9,14 @@
     ;
 }
 abstract class _A&Object&Mixin = core::Object with self::Mixin {
+  synthetic constructor •() → self::_A&Object&Mixin
+    : super core::Object::•()
+    ;
 }
 abstract class _A&Object&Mixin&Mixin = self::_A&Object&Mixin with self::Mixin {
+  synthetic constructor •() → self::_A&Object&Mixin&Mixin
+    : super self::_A&Object&Mixin::•()
+    ;
 }
 class A extends self::_A&Object&Mixin&Mixin {
   synthetic constructor •() → self::A
diff --git a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect
index ebb7020..d3c872e 100644
--- a/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/duplicated_mixin.dart.strong.transformed.expect
@@ -10,13 +10,13 @@
 }
 abstract class _A&Object&Mixin extends core::Object implements self::Mixin {
   field dynamic field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&Mixin
     : super core::Object::•()
     ;
 }
 abstract class _A&Object&Mixin&Mixin extends self::_A&Object&Mixin implements self::Mixin {
   field dynamic field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_A&Object&Mixin&Mixin
     : super self::_A&Object&Mixin::•()
     ;
 }
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.direct.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.direct.expect
index d7d5102..a293cd7 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.direct.expect
@@ -15,6 +15,9 @@
     return core::print("foo");
 }
 abstract class _Sub&Base&Mixin = self::Base with self::Mixin {
+  synthetic constructor •() → self::_Sub&Base&Mixin
+    : super self::Base::•()
+    ;
 }
 class Sub extends self::_Sub&Base&Mixin {
   synthetic constructor •() → self::Sub
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.direct.transformed.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.direct.transformed.expect
index 8370ef2..7fb2814 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.direct.transformed.expect
@@ -15,7 +15,7 @@
     return core::print("foo");
 }
 abstract class _Sub&Base&Mixin extends self::Base implements self::Mixin {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Sub&Base&Mixin
     : super self::Base::•()
     ;
   method foo() → dynamic
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect
index 7ab01f3..4b04cb0 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.outline.expect
@@ -13,6 +13,9 @@
     ;
 }
 abstract class _Sub&Base&Mixin = self::Base with self::Mixin {
+  synthetic constructor •() → self::_Sub&Base&Mixin
+    : super self::Base::•()
+    ;
 }
 class Sub extends self::_Sub&Base&Mixin {
   synthetic constructor •() → self::Sub
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect
index 53e4ecf..11c3766 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.expect
@@ -15,6 +15,9 @@
     return core::print("foo");
 }
 abstract class _Sub&Base&Mixin = self::Base with self::Mixin {
+  synthetic constructor •() → self::_Sub&Base&Mixin
+    : super self::Base::•()
+    ;
 }
 class Sub extends self::_Sub&Base&Mixin {
   synthetic constructor •() → self::Sub
diff --git a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect
index 10d26a4..162a19d 100644
--- a/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000007.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     return core::print("foo");
 }
 abstract class _Sub&Base&Mixin extends self::Base implements self::Mixin {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Sub&Base&Mixin
     : super self::Base::•()
     ;
   method foo() → dynamic
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.direct.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.direct.expect
index c28c1f2..5a311d6 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.direct.expect
@@ -11,6 +11,9 @@
     return 87;
 }
 abstract class _Foo&Object&Mixin = core::Object with self::Mixin {
+  synthetic constructor •() → self::_Foo&Object&Mixin
+    : super core::Object::•()
+    ;
 }
 class Foo extends self::_Foo&Object&Mixin {
   synthetic constructor •() → self::Foo
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.direct.transformed.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.direct.transformed.expect
index 4511afb..8d9ceb4 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.direct.transformed.expect
@@ -12,7 +12,7 @@
 }
 abstract class _Foo&Object&Mixin extends core::Object implements self::Mixin {
   field dynamic field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Foo&Object&Mixin
     : super core::Object::•()
     ;
   method foo() → dynamic
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect
index 77653fd..140dcbb 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.outline.expect
@@ -10,6 +10,9 @@
     ;
 }
 abstract class _Foo&Object&Mixin = core::Object with self::Mixin {
+  synthetic constructor •() → self::_Foo&Object&Mixin
+    : super core::Object::•()
+    ;
 }
 class Foo extends self::_Foo&Object&Mixin {
   synthetic constructor •() → self::Foo
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect
index 541a5e7..f37485f 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.expect
@@ -11,6 +11,9 @@
     return 87;
 }
 abstract class _Foo&Object&Mixin = core::Object with self::Mixin {
+  synthetic constructor •() → self::_Foo&Object&Mixin
+    : super core::Object::•()
+    ;
 }
 class Foo extends self::_Foo&Object&Mixin {
   synthetic constructor •() → self::Foo
diff --git a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect
index 2385fc1..b2db962 100644
--- a/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/rasta/issue_000080.dart.strong.transformed.expect
@@ -12,7 +12,7 @@
 }
 abstract class _Foo&Object&Mixin extends core::Object implements self::Mixin {
   field dynamic field = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_Foo&Object&Mixin
     : super core::Object::•()
     ;
   method foo() → dynamic
diff --git a/pkg/front_end/testcases/rasta/static.dart.direct.expect b/pkg/front_end/testcases/rasta/static.dart.direct.expect
index db9d31a..2640eb8 100644
--- a/pkg/front_end/testcases/rasta/static.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.direct.expect
@@ -165,28 +165,28 @@
     self::use(self::Foo::staticFunction);
     self::Foo::staticGetter;
     self::use(self::Foo::staticGetter);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let final dynamic #t1 = self::Foo::staticConstant in let final dynamic #t2 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t1);
+    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t1 = self::Foo::staticConstant in let final dynamic #t2 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t1);
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(let final dynamic #t3 = self::Foo::staticField in let final dynamic #t4 = self::Foo::staticField = #t3.+(1) in #t3);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let final dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t5);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t7);
-    self::Foo::staticSetter = (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
-    self::use(let final dynamic #t9 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t5);
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t7);
+    self::Foo::staticSetter = (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(let final dynamic #t9 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(self::Foo::staticField = self::Foo::staticField.+(1));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    self::Foo::staticSetter = (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
-    self::use(self::Foo::staticSetter = (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    self::Foo::staticSetter = (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(self::Foo::staticSetter = (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1));
     self::Foo::staticConstant.call();
     self::use(self::Foo::staticConstant.call());
     self::Foo::staticField.call();
@@ -195,28 +195,28 @@
     self::use(self::Foo::staticFunction());
     self::Foo::staticGetter.call();
     self::use(self::Foo::staticGetter.call());
-    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call();
-    self::use((throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call());
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call();
+    self::use((let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call());
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = 87;
     self::use(self::Foo::staticField = 87);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    self::Foo::staticConstant.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
-    self::use(let final dynamic #t11 = self::Foo::staticConstant in #t11.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t11);
+    self::Foo::staticConstant.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t11 = self::Foo::staticConstant in #t11.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t11);
     self::Foo::staticField.==(null) ? self::Foo::staticField = 87 : null;
     self::use(let final dynamic #t12 = self::Foo::staticField in #t12.==(null) ? self::Foo::staticField = 87 : #t12);
-    self::Foo::staticFunction.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
-    self::use(let final dynamic #t13 = self::Foo::staticFunction in #t13.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t13);
-    self::Foo::staticGetter.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
-    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t14);
-    (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).==(null) ? self::Foo::staticSetter = 87 : null;
-    self::use(let final dynamic #t15 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
+    self::Foo::staticFunction.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t13 = self::Foo::staticFunction in #t13.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t13);
+    self::Foo::staticGetter.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t14);
+    (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).==(null) ? self::Foo::staticSetter = 87 : null;
+    self::use(let final dynamic #t15 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/static.dart.direct.transformed.expect b/pkg/front_end/testcases/rasta/static.dart.direct.transformed.expect
index 4ea88e5..5db4e42 100644
--- a/pkg/front_end/testcases/rasta/static.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/rasta/static.dart.direct.transformed.expect
@@ -27,28 +27,28 @@
     self::use(self::Foo::staticFunction);
     self::Foo::staticGetter;
     self::use(self::Foo::staticGetter);
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let final dynamic #t1 = self::Foo::staticConstant in let final dynamic #t2 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t1);
+    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t1 = self::Foo::staticConstant in let final dynamic #t2 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t1.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t1);
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(let final dynamic #t3 = self::Foo::staticField in let final dynamic #t4 = self::Foo::staticField = #t3.+(1) in #t3);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let final dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t5);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t7);
-    self::Foo::staticSetter = (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
-    self::use(let final dynamic #t9 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t5 = self::Foo::staticFunction in let final dynamic #t6 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t5.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t5);
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let final dynamic #t7 = self::Foo::staticGetter in let final dynamic #t8 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t7);
+    self::Foo::staticSetter = (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(let final dynamic #t9 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in let final dynamic #t10 = self::Foo::staticSetter = #t9.+(1) in #t9);
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticConstant.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = self::Foo::staticField.+(1);
     self::use(self::Foo::staticField = self::Foo::staticField.+(1));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    self::Foo::staticSetter = (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
-    self::use(self::Foo::staticSetter = (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticFunction.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[self::Foo::staticGetter.+(1)]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    self::Foo::staticSetter = (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1);
+    self::use(self::Foo::staticSetter = (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).+(1));
     self::Foo::staticConstant.call();
     self::use(self::Foo::staticConstant.call());
     self::Foo::staticField.call();
@@ -57,28 +57,28 @@
     self::use(self::Foo::staticFunction());
     self::Foo::staticGetter.call();
     self::use(self::Foo::staticGetter.call());
-    (throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call();
-    self::use((throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call());
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call();
+    self::use((let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).call());
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticField = 87;
     self::use(self::Foo::staticField = 87);
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    self::use(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    self::use(let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
     self::Foo::staticSetter = 87;
     self::use(self::Foo::staticSetter = 87);
-    self::Foo::staticConstant.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
-    self::use(let final dynamic #t11 = self::Foo::staticConstant in #t11.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t11);
+    self::Foo::staticConstant.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t11 = self::Foo::staticConstant in #t11.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticConstant, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t11);
     self::Foo::staticField.==(null) ? self::Foo::staticField = 87 : null;
     self::use(let final dynamic #t12 = self::Foo::staticField in #t12.==(null) ? self::Foo::staticField = 87 : #t12);
-    self::Foo::staticFunction.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
-    self::use(let final dynamic #t13 = self::Foo::staticFunction in #t13.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t13);
-    self::Foo::staticGetter.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
-    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t14);
-    (let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).==(null) ? self::Foo::staticSetter = 87 : null;
-    self::use(let final dynamic #t15 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
+    self::Foo::staticFunction.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t13 = self::Foo::staticFunction in #t13.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t13);
+    self::Foo::staticGetter.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : null;
+    self::use(let final dynamic #t14 = self::Foo::staticGetter in #t14.==(null) ? let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticGetter, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[87]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) : #t14);
+    (let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})))).==(null) ? self::Foo::staticSetter = 87 : null;
+    self::use(let final dynamic #t15 = let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#staticSetter, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in #t15.==(null) ? self::Foo::staticSetter = 87 : #t15);
   }
   on core::NoSuchMethodError catch(no-exception-var) {
   }
diff --git a/pkg/front_end/testcases/rasta/super.dart.direct.expect b/pkg/front_end/testcases/rasta/super.dart.direct.expect
index 412e093..05cd9a7 100644
--- a/pkg/front_end/testcases/rasta/super.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.direct.expect
@@ -1,5 +1,268 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/rasta/super.dart:26:8: Error: Can't declare a member that conflicts with an inherited one.
+//   void n() {}
+//        ^
+// pkg/front_end/testcases/rasta/super.dart:27:7: Context: This is the inherited member.
+//   set n(_) {}
+//       ^
+//
+// pkg/front_end/testcases/rasta/super.dart:43:5: Error: '+' is not a prefix operator.
+// Try removing '+'.
+//     +super;
+//     ^
+//
+// pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use 'super' as an expression.
+// To delegate a constructor to a super constructor, put the super call as an initializer.
+//     +super;
+//      ^^^^^
+//
+// pkg/front_end/testcases/rasta/super.dart:44:9: Error: '+' is not a prefix operator.
+// Try removing '+'.
+//     use(+super);
+//         ^
+//
+// pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use 'super' as an expression.
+// To delegate a constructor to a super constructor, put the super call as an initializer.
+//     use(+super);
+//          ^^^^^
+//
+// pkg/front_end/testcases/rasta/super.dart:62:11: Warning: Superclass has no getter named 'g'.
+//     super.g;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:63:15: Warning: Superclass has no getter named 'g'.
+//     use(super.g);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:83:11: Warning: Superclass has no setter named 'e'.
+//     super.e++;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:84:15: Warning: Superclass has no setter named 'e'.
+//     use(super.e++);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:85:11: Warning: Superclass has no setter named 'f'.
+//     super.f++;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:86:15: Warning: Superclass has no setter named 'f'.
+//     use(super.f++);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:87:11: Warning: Superclass has no getter named 'g'.
+//     super.g++;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:88:15: Warning: Superclass has no getter named 'g'.
+//     use(super.g++);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:95:11: Warning: Superclass has no setter named 'm'.
+//     super.m++;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:96:15: Warning: Superclass has no setter named 'm'.
+//     use(super.m++);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:108:13: Warning: Superclass has no setter named 'e'.
+//     ++super.e;
+//             ^
+//
+// pkg/front_end/testcases/rasta/super.dart:109:17: Warning: Superclass has no setter named 'e'.
+//     use(++super.e);
+//                 ^
+//
+// pkg/front_end/testcases/rasta/super.dart:110:13: Warning: Superclass has no setter named 'f'.
+//     ++super.f;
+//             ^
+//
+// pkg/front_end/testcases/rasta/super.dart:111:17: Warning: Superclass has no setter named 'f'.
+//     use(++super.f);
+//                 ^
+//
+// pkg/front_end/testcases/rasta/super.dart:112:13: Warning: Superclass has no getter named 'g'.
+//     ++super.g;
+//             ^
+//
+// pkg/front_end/testcases/rasta/super.dart:113:17: Warning: Superclass has no getter named 'g'.
+//     use(++super.g);
+//                 ^
+//
+// pkg/front_end/testcases/rasta/super.dart:120:13: Warning: Superclass has no setter named 'm'.
+//     ++super.m;
+//             ^
+//
+// pkg/front_end/testcases/rasta/super.dart:121:17: Warning: Superclass has no setter named 'm'.
+//     use(++super.m);
+//                 ^
+//
+// pkg/front_end/testcases/rasta/super.dart:137:11: Warning: Superclass has no method named 'g'.
+//     super.g();
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:138:15: Warning: Superclass has no method named 'g'.
+//     use(super.g());
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:160:11: Warning: Superclass has no setter named 'e'.
+//     super.e = 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:161:15: Warning: Superclass has no setter named 'e'.
+//     use(super.e = 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:162:11: Warning: Superclass has no setter named 'f'.
+//     super.f = 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:163:15: Warning: Superclass has no setter named 'f'.
+//     use(super.f = 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:172:11: Warning: Superclass has no setter named 'm'.
+//     super.m = 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:173:15: Warning: Superclass has no setter named 'm'.
+//     use(super.m = 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:185:11: Warning: Superclass has no setter named 'e'.
+//     super.e ??= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:186:15: Warning: Superclass has no setter named 'e'.
+//     use(super.e ??= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:187:11: Warning: Superclass has no setter named 'f'.
+//     super.f ??= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:188:15: Warning: Superclass has no setter named 'f'.
+//     use(super.f ??= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:189:11: Warning: Superclass has no getter named 'g'.
+//     super.g ??= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:190:15: Warning: Superclass has no getter named 'g'.
+//     use(super.g ??= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:197:11: Warning: Superclass has no setter named 'm'.
+//     super.m ??= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:198:15: Warning: Superclass has no setter named 'm'.
+//     use(super.m ??= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:210:11: Warning: Superclass has no setter named 'e'.
+//     super.e += 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:211:15: Warning: Superclass has no setter named 'e'.
+//     use(super.e += 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:212:11: Warning: Superclass has no setter named 'f'.
+//     super.f += 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:213:15: Warning: Superclass has no setter named 'f'.
+//     use(super.f += 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:214:11: Warning: Superclass has no getter named 'g'.
+//     super.g += 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:215:15: Warning: Superclass has no getter named 'g'.
+//     use(super.g += 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:222:11: Warning: Superclass has no setter named 'm'.
+//     super.m += 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:223:15: Warning: Superclass has no setter named 'm'.
+//     use(super.m += 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:235:11: Warning: Superclass has no setter named 'e'.
+//     super.e -= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:236:15: Warning: Superclass has no setter named 'e'.
+//     use(super.e -= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:237:11: Warning: Superclass has no setter named 'f'.
+//     super.f -= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:238:15: Warning: Superclass has no setter named 'f'.
+//     use(super.f -= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:239:11: Warning: Superclass has no getter named 'g'.
+//     super.g -= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:240:15: Warning: Superclass has no getter named 'g'.
+//     use(super.g -= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:247:11: Warning: Superclass has no setter named 'm'.
+//     super.m -= 42;
+//           ^
+//
+// pkg/front_end/testcases/rasta/super.dart:248:15: Warning: Superclass has no setter named 'm'.
+//     use(super.m -= 42);
+//               ^
+//
+// pkg/front_end/testcases/rasta/super.dart:147:12: Warning: 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:16: Warning: 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:12: Warning: 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:16: Warning: Too many positional arguments: 0 allowed, but 1 found.
+// Try removing the extra positional arguments.
+//     use(super.n(87));
+//                ^
+//
+// pkg/front_end/testcases/rasta/super.dart:11:9: Error: Final field 'f' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final f;
+//         ^
+//
+// pkg/front_end/testcases/rasta/super.dart:33:9: Error: Final field 'd' is not initialized.
+// Try to initialize the field in the declaration or in every constructor.
+//   final d;
+//         ^
+
 // Unhandled errors:
 //
+// pkg/front_end/testcases/rasta/super.dart:26:8: Error: Can't declare a member that conflicts with an inherited one.
+//   void n() {}
+//        ^
+//
 // pkg/front_end/testcases/rasta/super.dart:43:5: Error: '+' is not a prefix operator.
 // Try removing '+'.
 //     +super;
@@ -30,7 +293,7 @@
   field dynamic c = null;
   field dynamic d = null;
   final field dynamic f = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
   get e() → dynamic
@@ -56,7 +319,7 @@
 }
 class B extends self::A {
   final field dynamic d = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
   get b() → dynamic
@@ -65,7 +328,7 @@
   set i(dynamic x) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
   method test() → dynamic {
@@ -73,11 +336,15 @@
     self::use(super.{self::A::~}());
     super.{self::A::unary-}();
     self::use(super.{self::A::unary-}());
-    this.•.+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use 'super' as an expression.
+    invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:5: Error: This couldn't be parsed.
+    +super;
+    ^".+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     +super;
      ^^^^^");
-    self::use(this.•.+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use 'super' as an expression.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:9: Error: This couldn't be parsed.
+    use(+super);
+        ^".+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     use(+super);
          ^^^^^"));
diff --git a/pkg/front_end/testcases/rasta/super.dart.direct.transformed.expect b/pkg/front_end/testcases/rasta/super.dart.direct.transformed.expect
index 412e093..3a83d7b 100644
--- a/pkg/front_end/testcases/rasta/super.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.direct.transformed.expect
@@ -1,5 +1,9 @@
 // Unhandled errors:
 //
+// pkg/front_end/testcases/rasta/super.dart:26:8: Error: Can't declare a member that conflicts with an inherited one.
+//   void n() {}
+//        ^
+//
 // pkg/front_end/testcases/rasta/super.dart:43:5: Error: '+' is not a prefix operator.
 // Try removing '+'.
 //     +super;
@@ -30,7 +34,7 @@
   field dynamic c = null;
   field dynamic d = null;
   final field dynamic f = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::A
     : super core::Object::•()
     ;
   get e() → dynamic
@@ -56,7 +60,7 @@
 }
 class B extends self::A {
   final field dynamic d = null;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::B
     : super self::A::•()
     ;
   get b() → dynamic
@@ -65,7 +69,7 @@
   set i(dynamic x) → dynamic {}
 }
 class C extends self::B {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::C
     : super self::B::•()
     ;
   method test() → dynamic {
@@ -73,11 +77,15 @@
     self::use(super.{self::A::~}());
     super.{self::A::unary-}();
     self::use(super.{self::A::unary-}());
-    this.•.+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use 'super' as an expression.
+    invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:5: Error: This couldn't be parsed.
+    +super;
+    ^".+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:43:6: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     +super;
      ^^^^^");
-    self::use(this.•.+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use 'super' as an expression.
+    self::use(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:9: Error: This couldn't be parsed.
+    use(+super);
+        ^".+(invalid-expression "pkg/front_end/testcases/rasta/super.dart:44:10: Error: Can't use 'super' as an expression.
 To delegate a constructor to a super constructor, put the super call as an initializer.
     use(+super);
          ^^^^^"));
diff --git a/pkg/front_end/testcases/rasta/super.dart.outline.expect b/pkg/front_end/testcases/rasta/super.dart.outline.expect
index 1ed12a8..8798c49 100644
--- a/pkg/front_end/testcases/rasta/super.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/super.dart.outline.expect
@@ -1,6 +1,6 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/rasta/super.dart:26:8: Warning: Can't declare a member that conflicts with an inherited one.
+// pkg/front_end/testcases/rasta/super.dart:26:8: Error: Can't declare a member that conflicts with an inherited one.
 //   void n() {}
 //        ^
 // pkg/front_end/testcases/rasta/super.dart:27:7: Context: This is the inherited member.
diff --git a/pkg/front_end/testcases/rasta/super_mixin.dart.direct.expect b/pkg/front_end/testcases/rasta/super_mixin.dart.direct.expect
index 57e448d..8b75a6e 100644
--- a/pkg/front_end/testcases/rasta/super_mixin.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/super_mixin.dart.direct.expect
@@ -19,6 +19,9 @@
     return 3;
 }
 abstract class _C&Super&Mixin<V extends core::Object = dynamic> = self::Super<self::_C&Super&Mixin::V> with mix::Mixin<self::_C&Super&Mixin::V> {
+  synthetic constructor •() → self::_C&Super&Mixin<self::_C&Super&Mixin::V>
+    : super self::Super::•()
+    ;
 }
 class C<V extends core::Object = dynamic> extends self::_C&Super&Mixin<self::C::V> {
   synthetic constructor •() → self::C<self::C::V>
@@ -26,6 +29,9 @@
     ;
 }
 abstract class _D&Super&Mixin = self::Super<dynamic> with mix::Mixin<dynamic> {
+  synthetic constructor •() → self::_D&Super&Mixin
+    : super self::Super::•()
+    ;
 }
 class D extends self::_D&Super&Mixin {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/rasta/super_mixin.dart.direct.transformed.expect b/pkg/front_end/testcases/rasta/super_mixin.dart.direct.transformed.expect
index 888a9fb..2205406 100644
--- a/pkg/front_end/testcases/rasta/super_mixin.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/rasta/super_mixin.dart.direct.transformed.expect
@@ -17,7 +17,7 @@
   field dynamic y = null /* from org-dartlang-testcase:///mixin_library.dart */;
   field dynamic z = null /* from org-dartlang-testcase:///mixin_library.dart */;
   field self::_C&Super&Mixin::V t = null /* from org-dartlang-testcase:///mixin_library.dart */;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&Super&Mixin<self::_C&Super&Mixin::V>
     : super self::Super::•()
     ;
   method /* from org-dartlang-testcase:///mixin_library.dart */ foo() → dynamic
@@ -43,7 +43,7 @@
   field dynamic y = null /* from org-dartlang-testcase:///mixin_library.dart */;
   field dynamic z = null /* from org-dartlang-testcase:///mixin_library.dart */;
   field dynamic t = null /* from org-dartlang-testcase:///mixin_library.dart */;
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_D&Super&Mixin
     : super self::Super::•()
     ;
   method /* from org-dartlang-testcase:///mixin_library.dart */ foo() → dynamic
diff --git a/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect b/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect
index 8edc868..372c093 100644
--- a/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect
+++ b/pkg/front_end/testcases/rasta/super_mixin.dart.outline.expect
@@ -12,12 +12,18 @@
     ;
 }
 abstract class _C&Super&Mixin<V extends core::Object = dynamic> = self::Super<self::_C&Super&Mixin::V> with mix::Mixin<self::_C&Super&Mixin::V> {
+  synthetic constructor •() → self::_C&Super&Mixin<self::_C&Super&Mixin::V>
+    : super self::Super::•()
+    ;
 }
 class C<V extends core::Object = dynamic> extends self::_C&Super&Mixin<self::C::V> {
   synthetic constructor •() → self::C<self::C::V>
     ;
 }
 abstract class _D&Super&Mixin = self::Super<dynamic> with mix::Mixin<dynamic> {
+  synthetic constructor •() → self::_D&Super&Mixin
+    : super self::Super::•()
+    ;
 }
 class D extends self::_D&Super&Mixin {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect b/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect
index 557a0b5..77780b3 100644
--- a/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect
+++ b/pkg/front_end/testcases/rasta/super_mixin.dart.strong.expect
@@ -25,6 +25,9 @@
     return 3;
 }
 abstract class _C&Super&Mixin<V extends core::Object = dynamic> = self::Super<self::_C&Super&Mixin::V> with mix::Mixin<self::_C&Super&Mixin::V> {
+  synthetic constructor •() → self::_C&Super&Mixin<self::_C&Super&Mixin::V>
+    : super self::Super::•()
+    ;
 }
 class C<V extends core::Object = dynamic> extends self::_C&Super&Mixin<self::C::V> {
   synthetic constructor •() → self::C<self::C::V>
@@ -32,6 +35,9 @@
     ;
 }
 abstract class _D&Super&Mixin = self::Super<dynamic> with mix::Mixin<dynamic> {
+  synthetic constructor •() → self::_D&Super&Mixin
+    : super self::Super::•()
+    ;
 }
 class D extends self::_D&Super&Mixin {
   synthetic constructor •() → self::D
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.expect
index 1d31f44..6f451c8 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.expect
@@ -97,7 +97,7 @@
       core::print(this.key);
     }
     for (final dynamic #t2 in x) {
-      let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+      let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(self::Fisk);
     }
     for (final dynamic #t3 in x) {
@@ -109,7 +109,7 @@
             ^^^^^^^^^^");
     }
     for (final dynamic #t4 in x) {
-      let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+      let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(() → void);
     }
     for (final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:23:10: Error: Can't assign to this, so it can't be used in a for-in loop.
@@ -122,11 +122,11 @@
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
   for (final dynamic #t6 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
   }
   for (final dynamic #t7 in arguments) {
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(self::Fisk);
   }
   for (final dynamic #t8 in arguments) {
@@ -138,12 +138,12 @@
           ^^^^^^^^^^");
   }
   for (final dynamic #t9 in arguments) {
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(() → void);
   }
   for (final dynamic #t10 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:43:8: Error: Can't assign to this, so it can't be used in a for-in loop.
   for (1 in arguments) {
        ^" in arguments) {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
   }
 }
diff --git a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.transformed.expect b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.transformed.expect
index 19ae243..3957542 100644
--- a/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/rasta/unresolved_for_in.dart.direct.transformed.expect
@@ -23,7 +23,7 @@
       core::print(this.key);
     }
     for (final dynamic #t2 in x) {
-      let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+      let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t2]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(self::Fisk);
     }
     for (final dynamic #t3 in x) {
@@ -35,7 +35,7 @@
             ^^^^^^^^^^");
     }
     for (final dynamic #t4 in x) {
-      let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+      let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t4]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
       core::print(() → void);
     }
     for (final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:23:10: Error: Can't assign to this, so it can't be used in a for-in loop.
@@ -48,11 +48,11 @@
 static method main(dynamic arguments) → dynamic {
   new self::Fisk::•();
   for (final dynamic #t6 in arguments) {
-    throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t6]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
   }
   for (final dynamic #t7 in arguments) {
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#Fisk, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t7]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(self::Fisk);
   }
   for (final dynamic #t8 in arguments) {
@@ -64,12 +64,12 @@
           ^^^^^^^^^^");
   }
   for (final dynamic #t9 in arguments) {
-    let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+    let dynamic _ = null in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#VoidFunction, 34, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>[#t9]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
     core::print(() → void);
   }
   for (final dynamic #t10 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/rasta/unresolved_for_in.dart:43:8: Error: Can't assign to this, so it can't be used in a for-in loop.
   for (1 in arguments) {
        ^" in arguments) {
-    core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+    core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#key, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
   }
 }
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect
index d498a68..544de0c 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.expect
@@ -12,10 +12,10 @@
 class Foo<T extends core::Object = dynamic> extends core::Object {
   generic-covariant-impl field self::Foo::T x;
   constructor from(core::String _init) → self::Foo<self::Foo::T>
-    : this self::Foo::_internal(x: let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/redirecting_initializer_arguments_test.dart:12:46: Error: The argument type 'dart.core::String' can't be assigned to the parameter type '#lib1::Foo::T'.
+    : this self::Foo::_internal(x: let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/redirecting_initializer_arguments_test.dart:12:46: Error: The argument type 'dart.core::String' can't be assigned to the parameter type '#lib1::Foo::T'.
 Try changing the type of the parameter, or casting the argument to '#lib1::Foo::T'.
   Foo.from(String _init) : this._internal(x: _init);
-                                             ^" in let final dynamic #t2 = _init in null)
+                                             ^" in _init as{TypeError} <BottomType>)
     ;
   constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
diff --git a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect
index 25c2b06..cbad080 100644
--- a/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/redirecting_initializer_arguments_test.dart.strong.transformed.expect
@@ -5,10 +5,10 @@
 class Foo<T extends core::Object = dynamic> extends core::Object {
   generic-covariant-impl field self::Foo::T x;
   constructor from(core::String _init) → self::Foo<self::Foo::T>
-    : this self::Foo::_internal(x: let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/redirecting_initializer_arguments_test.dart:12:46: Error: The argument type 'dart.core::String' can't be assigned to the parameter type '#lib1::Foo::T'.
+    : this self::Foo::_internal(x: let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/redirecting_initializer_arguments_test.dart:12:46: Error: The argument type 'dart.core::String' can't be assigned to the parameter type '#lib1::Foo::T'.
 Try changing the type of the parameter, or casting the argument to '#lib1::Foo::T'.
   Foo.from(String _init) : this._internal(x: _init);
-                                             ^" in let final dynamic #t2 = _init in null)
+                                             ^" in _init as{TypeError} <BottomType>)
     ;
   constructor _internal({self::Foo::T x = null}) → self::Foo<self::Foo::T>
     : self::Foo::x = x, super core::Object::•()
diff --git a/pkg/front_end/testcases/regress/issue_29976.dart.direct.expect b/pkg/front_end/testcases/regress/issue_29976.dart.direct.expect
index b2fd9b3..2ed84b8 100644
--- a/pkg/front_end/testcases/regress/issue_29976.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_29976.dart.direct.expect
@@ -7,13 +7,15 @@
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:15: Error: String starting with ' must end with '.
 //     "x${x*"'"é'}x
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:7: Error: Can't find '}' to match '${'.
 //     "x${x*"'"é'}x
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: String starting with " must end with ".
+// pkg/front_end/testcases/regress/issue_29976.dart:9:5: Error: String starting with " must end with ".
+//     "x${x*"'"é'}x
+//     ^^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: Expected a declaration, but got ''.
 //
@@ -42,13 +44,15 @@
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:15: Error: String starting with ' must end with '.
 //     "x${x*"'"é'}x
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:7: Error: Can't find '}' to match '${'.
 //     "x${x*"'"é'}x
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: String starting with " must end with ".
+// pkg/front_end/testcases/regress/issue_29976.dart:9:5: Error: String starting with " must end with ".
+//     "x${x*"'"é'}x
+//     ^^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: Expected a declaration, but got ''.
 //
@@ -71,5 +75,5 @@
 static get x() → dynamic
   return null;
 static method main() → void {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#f, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#f, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_29976.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_29976.dart.direct.transformed.expect
index d89579f..adcec4e 100644
--- a/pkg/front_end/testcases/regress/issue_29976.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29976.dart.direct.transformed.expect
@@ -7,13 +7,15 @@
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:15: Error: String starting with ' must end with '.
 //     "x${x*"'"é'}x
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:7: Error: Can't find '}' to match '${'.
 //     "x${x*"'"é'}x
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: String starting with " must end with ".
+// pkg/front_end/testcases/regress/issue_29976.dart:9:5: Error: String starting with " must end with ".
+//     "x${x*"'"é'}x
+//     ^^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: Expected a declaration, but got ''.
 //
@@ -36,5 +38,5 @@
 static get x() → dynamic
   return null;
 static method main() → void {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#f, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#f, 32, const <core::Type>[], core::List::unmodifiable<dynamic>(<dynamic>["x${self::x.*("'")}"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_29976.dart.outline.expect b/pkg/front_end/testcases/regress/issue_29976.dart.outline.expect
index eb72274..b796c52 100644
--- a/pkg/front_end/testcases/regress/issue_29976.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_29976.dart.outline.expect
@@ -7,13 +7,15 @@
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:15: Error: String starting with ' must end with '.
 //     "x${x*"'"é'}x
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:7: Error: Can't find '}' to match '${'.
 //     "x${x*"'"é'}x
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: String starting with " must end with ".
+// pkg/front_end/testcases/regress/issue_29976.dart:9:5: Error: String starting with " must end with ".
+//     "x${x*"'"é'}x
+//     ^^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: Expected a declaration, but got ''.
 
diff --git a/pkg/front_end/testcases/regress/issue_29976.dart.strong.expect b/pkg/front_end/testcases/regress/issue_29976.dart.strong.expect
index e6fed7c..72e0f84 100644
--- a/pkg/front_end/testcases/regress/issue_29976.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_29976.dart.strong.expect
@@ -7,13 +7,15 @@
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:15: Error: String starting with ' must end with '.
 //     "x${x*"'"é'}x
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:7: Error: Can't find '}' to match '${'.
 //     "x${x*"'"é'}x
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: String starting with " must end with ".
+// pkg/front_end/testcases/regress/issue_29976.dart:9:5: Error: String starting with " must end with ".
+//     "x${x*"'"é'}x
+//     ^^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: Expected a declaration, but got ''.
 //
@@ -42,13 +44,15 @@
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:15: Error: String starting with ' must end with '.
 //     "x${x*"'"é'}x
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:7: Error: Can't find '}' to match '${'.
 //     "x${x*"'"é'}x
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: String starting with " must end with ".
+// pkg/front_end/testcases/regress/issue_29976.dart:9:5: Error: String starting with " must end with ".
+//     "x${x*"'"é'}x
+//     ^^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: Expected a declaration, but got ''.
 //
diff --git a/pkg/front_end/testcases/regress/issue_29976.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_29976.dart.strong.transformed.expect
index 2b9588c..8c288dc 100644
--- a/pkg/front_end/testcases/regress/issue_29976.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29976.dart.strong.transformed.expect
@@ -7,13 +7,15 @@
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:15: Error: String starting with ' must end with '.
 //     "x${x*"'"é'}x
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:9:7: Error: Can't find '}' to match '${'.
 //     "x${x*"'"é'}x
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: String starting with " must end with ".
+// pkg/front_end/testcases/regress/issue_29976.dart:9:5: Error: String starting with " must end with ".
+//     "x${x*"'"é'}x
+//     ^^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29976.dart:12:1: Error: Expected a declaration, but got ''.
 //
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.direct.expect b/pkg/front_end/testcases/regress/issue_29982.dart.direct.expect
index 2a74ae4..3828528 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.direct.expect
@@ -13,7 +13,9 @@
 //   print('${eh[éh']}');
 //          ^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:11: Error: String starting with ' must end with '.
+//   print('${eh[éh']}');
+//           ^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
 //
@@ -48,7 +50,9 @@
 //   print('${eh[éh']}');
 //          ^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:11: Error: String starting with ' must end with '.
+//   print('${eh[éh']}');
+//           ^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
 //
@@ -70,5 +74,5 @@
 
 static method main() → dynamic {
   dynamic eh = <dynamic, dynamic>{"\u0233h": "\u0233h"};
-  core::print("${eh.[](throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#éh, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))))}");
+  core::print("${eh.[](let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#éh, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))))}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_29982.dart.direct.transformed.expect
index e608ced..11a5695 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.direct.transformed.expect
@@ -13,7 +13,9 @@
 //   print('${eh[éh']}');
 //          ^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:11: Error: String starting with ' must end with '.
+//   print('${eh[éh']}');
+//           ^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
 //
@@ -35,5 +37,5 @@
 
 static method main() → dynamic {
   dynamic eh = <dynamic, dynamic>{"\u0233h": "\u0233h"};
-  core::print("${eh.[](throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#éh, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))))}");
+  core::print("${eh.[](let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#éh, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))))}");
 }
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.outline.expect b/pkg/front_end/testcases/regress/issue_29982.dart.outline.expect
index 8e9ae53..28ba42c 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.outline.expect
@@ -13,7 +13,9 @@
 //   print('${eh[éh']}');
 //          ^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:11: Error: String starting with ' must end with '.
+//   print('${eh[éh']}');
+//           ^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
 
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.strong.expect b/pkg/front_end/testcases/regress/issue_29982.dart.strong.expect
index 7c7d19a..cbd79b7 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.strong.expect
@@ -13,7 +13,9 @@
 //   print('${eh[éh']}');
 //          ^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:11: Error: String starting with ' must end with '.
+//   print('${eh[éh']}');
+//           ^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
 //
@@ -48,7 +50,9 @@
 //   print('${eh[éh']}');
 //          ^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:11: Error: String starting with ' must end with '.
+//   print('${eh[éh']}');
+//           ^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
 //
diff --git a/pkg/front_end/testcases/regress/issue_29982.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_29982.dart.strong.transformed.expect
index 039a91c..e9542e0 100644
--- a/pkg/front_end/testcases/regress/issue_29982.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29982.dart.strong.transformed.expect
@@ -13,7 +13,9 @@
 //   print('${eh[éh']}');
 //          ^
 //
-// pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: String starting with ' must end with '.
+// pkg/front_end/testcases/regress/issue_29982.dart:7:11: Error: String starting with ' must end with '.
+//   print('${eh[éh']}');
+//           ^^^^^^^^^^^^^...
 //
 // pkg/front_end/testcases/regress/issue_29982.dart:9:1: Error: Expected a declaration, but got ''.
 //
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.direct.expect b/pkg/front_end/testcases/regress/issue_29984.dart.direct.expect
index adf51b4..b932140 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.direct.expect
@@ -16,9 +16,9 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  for (core::int i = let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
+  for (core::int i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in let final dynamic #t2 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#i, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in null; ; false) {
+           ^" in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#i, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))); ; false) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_29984.dart.direct.transformed.expect
index 01ccbc1..cf64ae4 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.direct.transformed.expect
@@ -3,9 +3,9 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  for (core::int i = let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
+  for (core::int i = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in let final dynamic #t2 = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#i, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))) in null; ; false) {
+           ^" in let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#i, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))); ; false) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.strong.expect b/pkg/front_end/testcases/regress/issue_29984.dart.strong.expect
index c6e236f..2b6c35c 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.strong.expect
@@ -16,11 +16,11 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  for (core::int i = (let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
+  for (core::int i = (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
+           ^" in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
   for (int i = i;; false) {}
-               ^" in null) as{TypeError} core::int; ; false) {
+               ^") as{TypeError} core::int; ; false) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29984.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_29984.dart.strong.transformed.expect
index 8842e30..f86f79b 100644
--- a/pkg/front_end/testcases/regress/issue_29984.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29984.dart.strong.transformed.expect
@@ -3,11 +3,11 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  for (core::int i = (let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
+  for (core::int i = (let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:12: Error: Can't declare 'i' because it was already used in this scope.
   for (int i = i;; false) {}
-           ^" in let final dynamic #t2 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
+           ^" in invalid-expression "pkg/front_end/testcases/regress/issue_29984.dart:6:16: Error: Getter not found: 'i'.
   for (int i = i;; false) {}
-               ^" in null) as{TypeError} core::int; ; false) {
+               ^") as{TypeError} core::int; ; false) {
   }
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29985.dart.direct.expect b/pkg/front_end/testcases/regress/issue_29985.dart.direct.expect
index d6e6130..1e02c8b 100644
--- a/pkg/front_end/testcases/regress/issue_29985.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_29985.dart.direct.expect
@@ -29,6 +29,6 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#🔛, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#🔛, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_29985.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_29985.dart.direct.transformed.expect
index 52f90dd..0f35dbc 100644
--- a/pkg/front_end/testcases/regress/issue_29985.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29985.dart.direct.transformed.expect
@@ -14,6 +14,6 @@
 import "dart:core" as core;
 
 static method bad() → dynamic {
-  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#🔛, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#🔛, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
index 08d514c..a817905 100644
--- a/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31155.dart.strong.expect
@@ -66,7 +66,7 @@
     ;
 }
 class C extends core::Object {
-  field dynamic f = let final dynamic #t1 = core::Map<dynamic, dynamic> in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'dart.core::Type'.
+  field dynamic f = let final dynamic #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'dart.core::Type'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
   var f = Map<A, B> {};
              ^";
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 aadf35a..eaf1b91 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
@@ -37,7 +37,7 @@
     ;
 }
 class C extends core::Object {
-  field dynamic f = let final core::Type #t1 = core::Map<dynamic, dynamic> in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'dart.core::Type'.
+  field dynamic f = let final core::Type #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31155.dart:11:14: Error: The method '<' isn't defined for the class 'dart.core::Type'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
   var f = Map<A, B> {};
              ^";
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.direct.expect b/pkg/front_end/testcases/regress/issue_31188.dart.direct.expect
index 4877df5..dd4cc1d 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.direct.expect
@@ -10,7 +10,7 @@
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:1: Warning: Type 'type' not found.
 // type T = Map<A, B>
-// ^
+// ^^^^
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:14: Warning: Getter not found: 'A'.
 // type T = Map<A, B>
@@ -34,6 +34,6 @@
 import self as self;
 import "dart:core" as core;
 
-static field invalid-type T = core::Map<dynamic, dynamic>.<(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#A, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+static field invalid-type T = core::Map<dynamic, dynamic>.<(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#A, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 static field invalid-type B;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_31188.dart.direct.transformed.expect
index 17bbd41..d24fdb3 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.direct.transformed.expect
@@ -12,6 +12,6 @@
 import self as self;
 import "dart:core" as core;
 
-static field invalid-type T = core::Map<dynamic, dynamic>.<(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#A, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+static field invalid-type T = core::Map<dynamic, dynamic>.<(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#A, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 static field invalid-type B;
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31188.dart.outline.expect
index 96028d3..8808453 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.outline.expect
@@ -10,7 +10,7 @@
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:1: Warning: Type 'type' not found.
 // type T = Map<A, B>
-// ^
+// ^^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect
index 77b5497..96eebb1 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.strong.expect
@@ -10,7 +10,7 @@
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: Type 'type' not found.
 // type T = Map<A, B>
-// ^
+// ^^^^
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:14: Error: Getter not found: 'A'.
 // type T = Map<A, B>
@@ -37,7 +37,7 @@
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: Type 'type' not found.
 // type T = Map<A, B>
-// ^
+// ^^^^
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: 'type' isn't a type.
 // type T = Map<A, B>
@@ -47,7 +47,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field invalid-type T = let final dynamic #t1 = core::Map<dynamic, dynamic> in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'dart.core::Type'.
+static field invalid-type T = let final dynamic #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'dart.core::Type'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
 type T = Map<A, B>
             ^";
diff --git a/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect
index f3b79b1..cb85779 100644
--- a/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31188.dart.strong.transformed.expect
@@ -10,7 +10,7 @@
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: Type 'type' not found.
 // type T = Map<A, B>
-// ^
+// ^^^^
 //
 // pkg/front_end/testcases/regress/issue_31188.dart:7:1: Error: 'type' isn't a type.
 // type T = Map<A, B>
@@ -20,7 +20,7 @@
 import self as self;
 import "dart:core" as core;
 
-static field invalid-type T = let final core::Type #t1 = core::Map<dynamic, dynamic> in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'dart.core::Type'.
+static field invalid-type T = let final core::Type #t1 = core::Map<dynamic, dynamic> in invalid-expression "pkg/front_end/testcases/regress/issue_31188.dart:7:13: Error: The method '<' isn't defined for the class 'dart.core::Type'.
 Try correcting the name to the name of an existing method, or defining a method named '<'.
 type T = Map<A, B>
             ^";
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.direct.expect b/pkg/front_end/testcases/regress/issue_31190.dart.direct.expect
index 06b6a8b..e46d9d8 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.direct.expect
@@ -1,7 +1,9 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/regress/issue_31190.dart:1: Warning: Can't use type arguments with type variable 'T'.
+// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Warning: Can't use type arguments with type variable 'T'.
 // Try removing the type arguments.
+//   T<U> v;
+//   ^
 //
 // pkg/front_end/testcases/regress/issue_31190.dart:6:5: Warning: 'U' isn't a type.
 //   T<U> v;
@@ -16,7 +18,7 @@
 import "dart:core" as core;
 
 class Typed<T extends core::Object = dynamic> extends core::Object {
-  field self::Typed::T v = null;
+  field invalid-type v = null;
   synthetic constructor •() → self::Typed<self::Typed::T>
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_31190.dart.direct.transformed.expect
index aacf8fa..ae55cb3 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.direct.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 class Typed<T extends core::Object = dynamic> extends core::Object {
-  field self::Typed::T v = null;
+  field invalid-type v = null;
   synthetic constructor •() → self::Typed<self::Typed::T>
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect b/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect
index 64491c6..b8af511 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.outline.expect
@@ -1,14 +1,16 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/regress/issue_31190.dart:1: Warning: Can't use type arguments with type variable 'T'.
+// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Warning: Can't use type arguments with type variable 'T'.
 // Try removing the type arguments.
+//   T<U> v;
+//   ^
 
 library;
 import self as self;
 import "dart:core" as core;
 
 class Typed<T extends core::Object = dynamic> extends core::Object {
-  field self::Typed::T v;
+  field invalid-type v;
   synthetic constructor •() → self::Typed<self::Typed::T>
     ;
 }
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
index 94f1212..76b114c 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
@@ -1,7 +1,9 @@
 // Formatted problems:
 //
-// pkg/front_end/testcases/regress/issue_31190.dart:1: Error: Can't use type arguments with type variable 'T'.
+// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Error: Can't use type arguments with type variable 'T'.
 // Try removing the type arguments.
+//   T<U> v;
+//   ^
 //
 // pkg/front_end/testcases/regress/issue_31190.dart:6:5: Error: 'U' isn't a type.
 //   T<U> v;
@@ -13,8 +15,10 @@
 
 // Unhandled errors:
 //
-// pkg/front_end/testcases/regress/issue_31190.dart:1: Error: Can't use type arguments with type variable 'T'.
+// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Error: Can't use type arguments with type variable 'T'.
 // Try removing the type arguments.
+//   T<U> v;
+//   ^
 //
 // pkg/front_end/testcases/regress/issue_31190.dart:6:5: Error: 'U' isn't a type.
 //   T<U> v;
@@ -29,7 +33,7 @@
 import "dart:core" as core;
 
 class Typed<T extends core::Object = dynamic> extends core::Object {
-  generic-covariant-impl field self::Typed::T v = null;
+  field invalid-type v = null;
   synthetic constructor •() → self::Typed<self::Typed::T>
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
index c6fbf14..8965f65 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
@@ -1,7 +1,9 @@
 // Unhandled errors:
 //
-// pkg/front_end/testcases/regress/issue_31190.dart:1: Error: Can't use type arguments with type variable 'T'.
+// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Error: Can't use type arguments with type variable 'T'.
 // Try removing the type arguments.
+//   T<U> v;
+//   ^
 //
 // pkg/front_end/testcases/regress/issue_31190.dart:6:5: Error: 'U' isn't a type.
 //   T<U> v;
@@ -16,7 +18,7 @@
 import "dart:core" as core;
 
 class Typed<T extends core::Object = dynamic> extends core::Object {
-  generic-covariant-impl field self::Typed::T v = null;
+  field invalid-type v = null;
   synthetic constructor •() → self::Typed<self::Typed::T>
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/regress/issue_31299.dart.direct.expect b/pkg/front_end/testcases/regress/issue_31299.dart.direct.expect
index 67df7a5..f670776 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.direct.expect
@@ -7,11 +7,6 @@
 // pkg/front_end/testcases/regress/issue_31299.dart:10:3: Context: Found this candidate, but the arguments don't match.
 //   A.foo() : m = 2;
 //   ^^^
-//
-// pkg/front_end/testcases/regress/issue_31299.dart:18:12: Warning: Too many positional arguments: 0 allowed, but 2 found.
-// Try removing the extra positional arguments.
-//   new A.foo(1, 2);
-//            ^
 
 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 61450ea..3d0577f 100644
--- a/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31299.dart.strong.expect
@@ -11,22 +11,12 @@
 // pkg/front_end/testcases/regress/issue_31299.dart:15:14: Error: Too few positional arguments: 2 required, 0 given.
 //   new A().foo();
 //              ^
-//
-// 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);
-//            ^
 
 // Unhandled errors:
 //
 // pkg/front_end/testcases/regress/issue_31299.dart:15:14: Error: Too few positional arguments: 2 required, 0 given.
 //   new A().foo();
 //              ^
-//
-// 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);
-//            ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.direct.expect b/pkg/front_end/testcases/regress/issue_32182.dart.direct.expect
index 35b4513..3f9071f 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.direct.expect
@@ -15,6 +15,9 @@
     return 42;
 }
 abstract class _C&A&M = self::A<self::A<dynamic>> with self::M {
+  synthetic constructor •() → self::_C&A&M
+    : super self::A::•()
+    ;
 }
 class C extends self::_C&A&M {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_32182.dart.direct.transformed.expect
index 055f44c..49ef114 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.direct.transformed.expect
@@ -15,7 +15,7 @@
     return 42;
 }
 abstract class _C&A&M extends self::A<self::A<dynamic>> implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&A&M
     : super self::A::•()
     ;
   method m() → dynamic
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect
index ed2bfcf..c5ce030 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.outline.expect
@@ -13,6 +13,9 @@
     ;
 }
 abstract class _C&A&M = self::A<self::A<dynamic>> with self::M {
+  synthetic constructor •() → self::_C&A&M
+    : super self::A::•()
+    ;
 }
 class C extends self::_C&A&M {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect
index f311f0a..369e464 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.strong.expect
@@ -15,6 +15,9 @@
     return 42;
 }
 abstract class _C&A&M = self::A<self::A<dynamic>> with self::M {
+  synthetic constructor •() → self::_C&A&M
+    : super self::A::•()
+    ;
 }
 class C extends self::_C&A&M {
   synthetic constructor •() → self::C
diff --git a/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect
index e1841e8..43a28a0 100644
--- a/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32182.dart.strong.transformed.expect
@@ -15,7 +15,7 @@
     return 42;
 }
 abstract class _C&A&M extends self::A<self::A<dynamic>> implements self::M {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_C&A&M
     : super self::A::•()
     ;
   method m() → dynamic
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.direct.expect b/pkg/front_end/testcases/regress/issue_32200.dart.direct.expect
index 432ea75..d4f6b1b 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.direct.expect
@@ -9,7 +9,7 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field self::Foo self = null;
+  field invalid-type self = null;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_32200.dart.direct.transformed.expect
index e8a56d4..6e1ee25 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.direct.transformed.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field self::Foo self = null;
+  field invalid-type self = null;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect
index cbde884..90c080c 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.outline.expect
@@ -1,9 +1,15 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/regress/issue_32200.dart:8:3: Warning: 'self.Foo' can't be used as a type because 'self' doesn't refer to an import prefix.
+//   self.Foo self;
+//   ^^^^^^^^
+
 library;
 import self as self;
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field self::Foo self;
+  field invalid-type self;
   synthetic constructor •() → self::Foo
     ;
 }
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect
index 170b627..cb382eb 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.strong.expect
@@ -3,6 +3,11 @@
 // pkg/front_end/testcases/regress/issue_32200.dart:8:3: Error: 'self.Foo' can't be used as a type because 'self' doesn't refer to an import prefix.
 //   self.Foo self;
 //   ^^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_32200.dart:13:19: Error: A value of type '#lib1::Foo' can't be assigned to a variable of type 'invalid-type'.
+// Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
+//   instance.self = instance;
+//                   ^
 
 // Unhandled errors:
 //
@@ -15,12 +20,15 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field self::Foo self = null;
+  field invalid-type self = null;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
 }
 static method main() → dynamic {
   self::Foo instance = new self::Foo::•();
-  instance.{self::Foo::self} = instance;
+  instance.{self::Foo::self} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_32200.dart:13:19: Error: A value of type '#lib1::Foo' can't be assigned to a variable of type 'invalid-type'.
+Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
+  instance.self = instance;
+                  ^" in instance as{TypeError} invalid-type;
 }
diff --git a/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect
index c2ad32e..6b54632 100644
--- a/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_32200.dart.strong.transformed.expect
@@ -9,12 +9,15 @@
 import "dart:core" as core;
 
 class Foo extends core::Object {
-  field self::Foo self = null;
+  field invalid-type self = null;
   synthetic constructor •() → self::Foo
     : super core::Object::•()
     ;
 }
 static method main() → dynamic {
   self::Foo instance = new self::Foo::•();
-  instance.{self::Foo::self} = instance;
+  instance.{self::Foo::self} = let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/regress/issue_32200.dart:13:19: Error: A value of type '#lib1::Foo' can't be assigned to a variable of type 'invalid-type'.
+Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
+  instance.self = instance;
+                  ^" in instance as{TypeError} invalid-type;
 }
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.direct.expect b/pkg/front_end/testcases/regress/issue_32972.dart.direct.expect
index 68f79ea..eef01df 100644
--- a/pkg/front_end/testcases/regress/issue_32972.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.direct.expect
@@ -20,18 +20,6 @@
 // pkg/front_end/testcases/regress/issue_32972.dart:19:7: Context: The class 'Bar' has a constructor that takes no arguments.
 // class Bar<X, Y> {}
 //       ^
-//
-// pkg/front_end/testcases/regress/issue_32972.dart:22:3: Warning: Expected 1 type arguments.
-//   foo<String, String>("hello world");
-//   ^
-//
-// pkg/front_end/testcases/regress/issue_32972.dart:24:7: Warning: Expected 1 type arguments.
-//   Foo.foo<int, int>(42);
-//       ^
-//
-// pkg/front_end/testcases/regress/issue_32972.dart:29:7: Warning: Expected 2 type arguments.
-//   new Bar<String>();
-//       ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
index a96c187..d6a1208 100644
--- a/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
@@ -21,39 +21,15 @@
 // class Bar<X, Y> {}
 //       ^
 //
-// pkg/front_end/testcases/regress/issue_32972.dart:22:3: Error: Expected 1 type arguments.
-//   foo<String, String>("hello world");
-//   ^
-//
-// pkg/front_end/testcases/regress/issue_32972.dart:24:7: Error: Expected 1 type arguments.
-//   Foo.foo<int, int>(42);
-//       ^
-//
 // pkg/front_end/testcases/regress/issue_32972.dart:27:5: Error: Expected 1 type arguments.
 //   f.bar<double, double>(42.42);
 //     ^
-//
-// pkg/front_end/testcases/regress/issue_32972.dart:29:7: Error: Expected 2 type arguments.
-//   new Bar<String>();
-//       ^
 
 // Unhandled errors:
 //
-// pkg/front_end/testcases/regress/issue_32972.dart:22:3: Error: Expected 1 type arguments.
-//   foo<String, String>("hello world");
-//   ^
-//
-// pkg/front_end/testcases/regress/issue_32972.dart:24:7: Error: Expected 1 type arguments.
-//   Foo.foo<int, int>(42);
-//       ^
-//
 // pkg/front_end/testcases/regress/issue_32972.dart:27:5: Error: Expected 1 type arguments.
 //   f.bar<double, double>(42.42);
 //     ^
-//
-// pkg/front_end/testcases/regress/issue_32972.dart:29:7: Error: Expected 2 type arguments.
-//   new Bar<String>();
-//       ^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.direct.expect b/pkg/front_end/testcases/regress/issue_33452.dart.direct.expect
index 1b94419..a0ff133 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.direct.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.direct.expect
@@ -34,10 +34,10 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#NonExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#NonExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_33452.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_33452.dart.direct.transformed.expect
index 22a417b..038ecc7 100644
--- a/pkg/front_end/testcases/regress/issue_33452.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_33452.dart.direct.transformed.expect
@@ -8,10 +8,10 @@
     ;
 }
 static method main() → dynamic {
-  dynamic x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
-  x = throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#NonExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  dynamic x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#ExistingClass.nonExistingConstructor, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  x = let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#NonExistingClass, 32, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
 }
diff --git a/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
index 0bfa5a5..1e28b8c 100644
--- a/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34225.dart.strong.expect
@@ -41,7 +41,7 @@
 }
 static method main() → dynamic {
   self::C c = new self::C::•();
-  let final dynamic #t1 = c in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class '#lib1::C'.
+  let final dynamic #t1 = c in invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'C'.
   c.C = 5;
     ^";
diff --git a/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
index fd60d26..175d30e 100644
--- a/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34225.dart.strong.transformed.expect
@@ -26,7 +26,7 @@
 }
 static method main() → dynamic {
   self::C c = new self::C::•();
-  let final self::C #t1 = c in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class '#lib1::C'.
+  let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/regress/issue_34225.dart:15:5: Error: The setter 'C' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'C'.
   c.C = 5;
     ^";
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart b/pkg/front_end/testcases/regress/issue_34403.dart
new file mode 100644
index 0000000..157dbf0
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34403.dart
@@ -0,0 +1,51 @@
+// 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 'issue_34403_lib.dart' as p;
+
+class C<T> {
+  C.bar();
+}
+
+class D<T> {
+  const D.foo();
+}
+
+main() {
+  var c1 = C.bar<int>();
+  c1.toString();
+  var c2 = new C.bar<int>();
+  c2.toString();
+  var c3 = C<String>.bar<int>();
+  c3.toString();
+  var c4 = new C<String>.bar<int>();
+  c4.toString();
+
+  const d1 = D.foo<int>();
+  d1.toString();
+  const d2 = const D.foo<int>();
+  d2.toString();
+  const d3 = D<String>.foo<int>();
+  d3.toString();
+  const d4 = const D<String>.foo<int>();
+  d4.toString();
+
+  var e1 = p.E.bar<int>();
+  e1.toString();
+  var e2 = new p.E.bar<int>();
+  e2.toString();
+  var e3 = p.E<String>.bar<int>();
+  e3.toString();
+  var e4 = new p.E<String>.bar<int>();
+  e4.toString();
+
+  const f1 = p.F.foo<int>();
+  f1.toString();
+  const f2 = const p.F.foo<int>();
+  f2.toString();
+  const f3 = p.F<String>.foo<int>();
+  f3.toString();
+  const f4 = const p.F<String>.foo<int>();
+  f4.toString();
+}
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.direct.expect b/pkg/front_end/testcases/regress/issue_34403.dart.direct.expect
new file mode 100644
index 0000000..b7f8bf9
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.direct.expect
@@ -0,0 +1,213 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c1 = C.bar<int>();
+//              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c2 = new C.bar<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c3 = C<String>.bar<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c4 = new C<String>.bar<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d1 = D.foo<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d2 = const D.foo<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d3 = D<String>.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d4 = const D<String>.foo<int>();
+//                              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e1 = p.E.bar<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e2 = new p.E.bar<int>();
+//                    ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e3 = p.E<String>.bar<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e4 = new p.E<String>.bar<int>();
+//                            ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f1 = p.F.foo<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f2 = const p.F.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f3 = p.F<String>.foo<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f4 = const p.F<String>.foo<int>();
+//                                ^^^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c1 = C.bar<int>();
+//              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c2 = new C.bar<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c3 = C<String>.bar<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c4 = new C<String>.bar<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d1 = D.foo<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d2 = const D.foo<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d3 = D<String>.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d4 = const D<String>.foo<int>();
+//                              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e1 = p.E.bar<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e2 = new p.E.bar<int>();
+//                    ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e3 = p.E<String>.bar<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e4 = new p.E<String>.bar<int>();
+//                            ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f1 = p.F.foo<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f2 = const p.F.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f3 = p.F<String>.foo<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f4 = const p.F<String>.foo<int>();
+//                                ^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+import "./issue_34403_lib.dart" as iss;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  constructor bar() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+}
+class D<T extends core::Object = dynamic> extends core::Object {
+  const constructor foo() → self::D<self::D::T>
+    : super core::Object::•()
+    ;
+}
+static method main() → dynamic {
+  dynamic c1 = new self::C::bar<core::int>();
+  c1.toString();
+  dynamic c2 = new self::C::bar<core::int>();
+  c2.toString();
+  dynamic c3 = new self::C::bar<core::String>();
+  c3.toString();
+  dynamic c4 = new self::C::bar<core::String>();
+  c4.toString();
+  const dynamic d1 = const self::D::foo<core::int>();
+  d1.toString();
+  const dynamic d2 = const self::D::foo<core::int>();
+  d2.toString();
+  const dynamic d3 = const self::D::foo<core::String>();
+  d3.toString();
+  const dynamic d4 = const self::D::foo<core::String>();
+  d4.toString();
+  dynamic e1 = new iss::E::bar<core::int>();
+  e1.toString();
+  dynamic e2 = new iss::E::bar<dynamic>();
+  e2.toString();
+  dynamic e3 = new iss::E::bar<core::String>();
+  e3.toString();
+  dynamic e4 = new iss::E::bar<core::String>();
+  e4.toString();
+  const dynamic f1 = const iss::F::foo<core::int>();
+  f1.toString();
+  const dynamic f2 = const iss::F::foo<dynamic>();
+  f2.toString();
+  const dynamic f3 = const iss::F::foo<core::String>();
+  f3.toString();
+  const dynamic f4 = const iss::F::foo<core::String>();
+  f4.toString();
+}
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_34403.dart.direct.transformed.expect
new file mode 100644
index 0000000..0c20e23
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.direct.transformed.expect
@@ -0,0 +1,131 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c1 = C.bar<int>();
+//              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c2 = new C.bar<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c3 = C<String>.bar<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c4 = new C<String>.bar<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d1 = D.foo<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d2 = const D.foo<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d3 = D<String>.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d4 = const D<String>.foo<int>();
+//                              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e1 = p.E.bar<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e2 = new p.E.bar<int>();
+//                    ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e3 = p.E<String>.bar<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e4 = new p.E<String>.bar<int>();
+//                            ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f1 = p.F.foo<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f2 = const p.F.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f3 = p.F<String>.foo<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f4 = const p.F<String>.foo<int>();
+//                                ^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+import "./issue_34403_lib.dart" as iss;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  constructor bar() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+}
+class D<T extends core::Object = dynamic> extends core::Object {
+  const constructor foo() → self::D<self::D::T>
+    : super core::Object::•()
+    ;
+}
+static method main() → dynamic {
+  dynamic c1 = new self::C::bar<core::int>();
+  c1.toString();
+  dynamic c2 = new self::C::bar<core::int>();
+  c2.toString();
+  dynamic c3 = new self::C::bar<core::String>();
+  c3.toString();
+  dynamic c4 = new self::C::bar<core::String>();
+  c4.toString();
+  const dynamic d1 = const self::D::foo<core::int>();
+  d1.toString();
+  const dynamic d2 = const self::D::foo<core::int>();
+  d2.toString();
+  const dynamic d3 = const self::D::foo<core::String>();
+  d3.toString();
+  const dynamic d4 = const self::D::foo<core::String>();
+  d4.toString();
+  dynamic e1 = new iss::E::bar<core::int>();
+  e1.toString();
+  dynamic e2 = new iss::E::bar<dynamic>();
+  e2.toString();
+  dynamic e3 = new iss::E::bar<core::String>();
+  e3.toString();
+  dynamic e4 = new iss::E::bar<core::String>();
+  e4.toString();
+  const dynamic f1 = const iss::F::foo<core::int>();
+  f1.toString();
+  const dynamic f2 = const iss::F::foo<dynamic>();
+  f2.toString();
+  const dynamic f3 = const iss::F::foo<core::String>();
+  f3.toString();
+  const dynamic f4 = const iss::F::foo<core::String>();
+  f4.toString();
+}
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34403.dart.outline.expect
new file mode 100644
index 0000000..405b23c
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.outline.expect
@@ -0,0 +1,14 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  constructor bar() → self::C<self::C::T>
+    ;
+}
+class D<T extends core::Object = dynamic> extends core::Object {
+  const constructor foo() → self::D<self::D::T>
+    ;
+}
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
new file mode 100644
index 0000000..c932348
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.strong.expect
@@ -0,0 +1,213 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c1 = C.bar<int>();
+//              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c2 = new C.bar<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c3 = C<String>.bar<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c4 = new C<String>.bar<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d1 = D.foo<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d2 = const D.foo<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d3 = D<String>.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d4 = const D<String>.foo<int>();
+//                              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e1 = p.E.bar<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e2 = new p.E.bar<int>();
+//                    ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e3 = p.E<String>.bar<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e4 = new p.E<String>.bar<int>();
+//                            ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f1 = p.F.foo<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f2 = const p.F.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f3 = p.F<String>.foo<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f4 = const p.F<String>.foo<int>();
+//                                ^^^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c1 = C.bar<int>();
+//              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c2 = new C.bar<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c3 = C<String>.bar<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c4 = new C<String>.bar<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d1 = D.foo<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d2 = const D.foo<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d3 = D<String>.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d4 = const D<String>.foo<int>();
+//                              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e1 = p.E.bar<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e2 = new p.E.bar<int>();
+//                    ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e3 = p.E<String>.bar<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e4 = new p.E<String>.bar<int>();
+//                            ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f1 = p.F.foo<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f2 = const p.F.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f3 = p.F<String>.foo<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f4 = const p.F<String>.foo<int>();
+//                                ^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+import "./issue_34403_lib.dart" as iss;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  constructor bar() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+}
+class D<T extends core::Object = dynamic> extends core::Object {
+  const constructor foo() → self::D<self::D::T>
+    : super core::Object::•()
+    ;
+}
+static method main() → dynamic {
+  self::C<core::int> c1 = new self::C::bar<core::int>();
+  c1.{core::Object::toString}();
+  self::C<core::int> c2 = new self::C::bar<core::int>();
+  c2.{core::Object::toString}();
+  self::C<core::String> c3 = new self::C::bar<core::String>();
+  c3.{core::Object::toString}();
+  self::C<core::String> c4 = new self::C::bar<core::String>();
+  c4.{core::Object::toString}();
+  const self::D<core::int> d1 = const self::D::foo<core::int>();
+  d1.{core::Object::toString}();
+  const self::D<core::int> d2 = const self::D::foo<core::int>();
+  d2.{core::Object::toString}();
+  const self::D<core::String> d3 = const self::D::foo<core::String>();
+  d3.{core::Object::toString}();
+  const self::D<core::String> d4 = const self::D::foo<core::String>();
+  d4.{core::Object::toString}();
+  iss::E<core::int> e1 = new iss::E::bar<core::int>();
+  e1.{core::Object::toString}();
+  iss::E<dynamic> e2 = new iss::E::bar<dynamic>();
+  e2.{core::Object::toString}();
+  iss::E<core::String> e3 = new iss::E::bar<core::String>();
+  e3.{core::Object::toString}();
+  iss::E<core::String> e4 = new iss::E::bar<core::String>();
+  e4.{core::Object::toString}();
+  const iss::F<core::int> f1 = const iss::F::foo<core::int>();
+  f1.{core::Object::toString}();
+  const iss::F<dynamic> f2 = const iss::F::foo<dynamic>();
+  f2.{core::Object::toString}();
+  const iss::F<core::String> f3 = const iss::F::foo<core::String>();
+  f3.{core::Object::toString}();
+  const iss::F<core::String> f4 = const iss::F::foo<core::String>();
+  f4.{core::Object::toString}();
+}
diff --git a/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
new file mode 100644
index 0000000..40fdb58
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34403.dart.strong.transformed.expect
@@ -0,0 +1,131 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:16:14: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c1 = C.bar<int>();
+//              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:18:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c2 = new C.bar<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:20:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c3 = C<String>.bar<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:22:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var c4 = new C<String>.bar<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:25:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d1 = D.foo<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:27:22: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d2 = const D.foo<int>();
+//                      ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:29:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d3 = D<String>.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:31:30: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const d4 = const D<String>.foo<int>();
+//                              ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:34:16: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e1 = p.E.bar<int>();
+//                ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:36:20: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e2 = new p.E.bar<int>();
+//                    ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:38:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e3 = p.E<String>.bar<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:40:28: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   var e4 = new p.E<String>.bar<int>();
+//                            ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:43:18: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f1 = p.F.foo<int>();
+//                  ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:45:24: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f2 = const p.F.foo<int>();
+//                        ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:47:26: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f3 = p.F<String>.foo<int>();
+//                          ^^^
+//
+// pkg/front_end/testcases/regress/issue_34403.dart:49:32: Error: A constructor invocation can't have type arguments on the constructor name.
+// Try to place the type arguments on the class name.
+//   const f4 = const p.F<String>.foo<int>();
+//                                ^^^
+
+library;
+import self as self;
+import "dart:core" as core;
+import "./issue_34403_lib.dart" as iss;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  constructor bar() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+}
+class D<T extends core::Object = dynamic> extends core::Object {
+  const constructor foo() → self::D<self::D::T>
+    : super core::Object::•()
+    ;
+}
+static method main() → dynamic {
+  self::C<core::int> c1 = new self::C::bar<core::int>();
+  c1.{core::Object::toString}();
+  self::C<core::int> c2 = new self::C::bar<core::int>();
+  c2.{core::Object::toString}();
+  self::C<core::String> c3 = new self::C::bar<core::String>();
+  c3.{core::Object::toString}();
+  self::C<core::String> c4 = new self::C::bar<core::String>();
+  c4.{core::Object::toString}();
+  const self::D<core::int> d1 = const self::D::foo<core::int>();
+  d1.{core::Object::toString}();
+  const self::D<core::int> d2 = const self::D::foo<core::int>();
+  d2.{core::Object::toString}();
+  const self::D<core::String> d3 = const self::D::foo<core::String>();
+  d3.{core::Object::toString}();
+  const self::D<core::String> d4 = const self::D::foo<core::String>();
+  d4.{core::Object::toString}();
+  iss::E<core::int> e1 = new iss::E::bar<core::int>();
+  e1.{core::Object::toString}();
+  iss::E<dynamic> e2 = new iss::E::bar<dynamic>();
+  e2.{core::Object::toString}();
+  iss::E<core::String> e3 = new iss::E::bar<core::String>();
+  e3.{core::Object::toString}();
+  iss::E<core::String> e4 = new iss::E::bar<core::String>();
+  e4.{core::Object::toString}();
+  const iss::F<core::int> f1 = const iss::F::foo<core::int>();
+  f1.{core::Object::toString}();
+  const iss::F<dynamic> f2 = const iss::F::foo<dynamic>();
+  f2.{core::Object::toString}();
+  const iss::F<core::String> f3 = const iss::F::foo<core::String>();
+  f3.{core::Object::toString}();
+  const iss::F<core::String> f4 = const iss::F::foo<core::String>();
+  f4.{core::Object::toString}();
+}
diff --git a/pkg/front_end/testcases/regress/issue_34403_lib.dart b/pkg/front_end/testcases/regress/issue_34403_lib.dart
new file mode 100644
index 0000000..51e0085
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34403_lib.dart
@@ -0,0 +1,11 @@
+// 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 E<T> {
+  E.bar();
+}
+
+class F<T> {
+  const F.foo();
+}
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart b/pkg/front_end/testcases/regress/issue_34498.dart
new file mode 100644
index 0000000..fbf4c2b
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34498.dart
@@ -0,0 +1,23 @@
+// 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 'issue_34498_lib.dart' as lib;
+
+class A {
+  lib.MyClass get lib => null; // (1)
+
+  foo foo() {}
+
+  Missing bar() {}
+}
+
+class B extends A {}
+
+final A a = null;
+
+class C<T> {
+  T<String> foo() {}
+}
+
+main() {}
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.direct.expect b/pkg/front_end/testcases/regress/issue_34498.dart.direct.expect
new file mode 100644
index 0000000..ac8eb61
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.direct.expect
@@ -0,0 +1,48 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:8:3: Warning: 'lib.MyClass' can't be used as a type because 'lib' doesn't refer to an import prefix.
+//   lib.MyClass get lib => null; // (1)
+//   ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:10:3: Warning: 'foo' isn't a type.
+//   foo foo() {}
+//   ^^^
+// pkg/front_end/testcases/regress/issue_34498.dart:10:7: Context: This isn't a type.
+//   foo foo() {}
+//       ^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:12:3: Warning: Type 'Missing' not found.
+//   Missing bar() {}
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:20:3: Warning: Can't use type arguments with type variable 'T'.
+// Try removing the type arguments.
+//   T<String> foo() {}
+//   ^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+  get lib() → invalid-type
+    return null;
+  method foo() → invalid-type {}
+  method bar() → invalid-type {}
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    : super self::A::•()
+    ;
+}
+class C<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+  method foo() → invalid-type {}
+}
+static final field self::A a = null;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_34498.dart.direct.transformed.expect
new file mode 100644
index 0000000..9b365bf
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.direct.transformed.expect
@@ -0,0 +1,26 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+  get lib() → invalid-type
+    return null;
+  method foo() → invalid-type {}
+  method bar() → invalid-type {}
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    : super self::A::•()
+    ;
+}
+class C<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+  method foo() → invalid-type {}
+}
+static final field self::A a = null;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.outline.expect b/pkg/front_end/testcases/regress/issue_34498.dart.outline.expect
new file mode 100644
index 0000000..394d76e
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.outline.expect
@@ -0,0 +1,49 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:8:3: Warning: 'lib.MyClass' can't be used as a type because 'lib' doesn't refer to an import prefix.
+//   lib.MyClass get lib => null; // (1)
+//   ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:10:3: Warning: 'foo' isn't a type.
+//   foo foo() {}
+//   ^^^
+// pkg/front_end/testcases/regress/issue_34498.dart:10:7: Context: This isn't a type.
+//   foo foo() {}
+//       ^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:12:3: Warning: Type 'Missing' not found.
+//   Missing bar() {}
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:20:3: Warning: Can't use type arguments with type variable 'T'.
+// Try removing the type arguments.
+//   T<String> foo() {}
+//   ^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    ;
+  get lib() → invalid-type
+    ;
+  method foo() → invalid-type
+    ;
+  method bar() → invalid-type
+    ;
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    ;
+}
+class C<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T>
+    ;
+  method foo() → invalid-type
+    ;
+}
+static final field self::A a;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34498.dart.strong.expect
new file mode 100644
index 0000000..2bb5096
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.strong.expect
@@ -0,0 +1,67 @@
+// Formatted problems:
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:8:3: Error: 'lib.MyClass' can't be used as a type because 'lib' doesn't refer to an import prefix.
+//   lib.MyClass get lib => null; // (1)
+//   ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:10:3: Error: 'foo' isn't a type.
+//   foo foo() {}
+//   ^^^
+// pkg/front_end/testcases/regress/issue_34498.dart:10:7: Context: This isn't a type.
+//   foo foo() {}
+//       ^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:12:3: Error: Type 'Missing' not found.
+//   Missing bar() {}
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:20:3: Error: Can't use type arguments with type variable 'T'.
+// Try removing the type arguments.
+//   T<String> foo() {}
+//   ^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:8:3: Error: 'lib.MyClass' can't be used as a type because 'lib' doesn't refer to an import prefix.
+//   lib.MyClass get lib => null; // (1)
+//   ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:10:3: Error: 'foo' isn't a type.
+//   foo foo() {}
+//   ^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:12:3: Error: Type 'Missing' not found.
+//   Missing bar() {}
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:20:3: Error: Can't use type arguments with type variable 'T'.
+// Try removing the type arguments.
+//   T<String> foo() {}
+//   ^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+  get lib() → invalid-type
+    return null;
+  method foo() → invalid-type {}
+  method bar() → invalid-type {}
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    : super self::A::•()
+    ;
+}
+class C<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+  method foo() → invalid-type {}
+}
+static final field self::A a = null;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_34498.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34498.dart.strong.transformed.expect
new file mode 100644
index 0000000..c2f20c6
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34498.dart.strong.transformed.expect
@@ -0,0 +1,45 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:8:3: Error: 'lib.MyClass' can't be used as a type because 'lib' doesn't refer to an import prefix.
+//   lib.MyClass get lib => null; // (1)
+//   ^^^^^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:10:3: Error: 'foo' isn't a type.
+//   foo foo() {}
+//   ^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:12:3: Error: Type 'Missing' not found.
+//   Missing bar() {}
+//   ^^^^^^^
+//
+// pkg/front_end/testcases/regress/issue_34498.dart:20:3: Error: Can't use type arguments with type variable 'T'.
+// Try removing the type arguments.
+//   T<String> foo() {}
+//   ^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class A extends core::Object {
+  synthetic constructor •() → self::A
+    : super core::Object::•()
+    ;
+  get lib() → invalid-type
+    return null;
+  method foo() → invalid-type {}
+  method bar() → invalid-type {}
+}
+class B extends self::A {
+  synthetic constructor •() → self::B
+    : super self::A::•()
+    ;
+}
+class C<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+  method foo() → invalid-type {}
+}
+static final field self::A a = null;
+static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/regress/issue_34498_lib.dart b/pkg/front_end/testcases/regress/issue_34498_lib.dart
new file mode 100644
index 0000000..a1b2795
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_34498_lib.dart
@@ -0,0 +1,5 @@
+// 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 MyClass {}
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect b/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
index c1eaeba..03ab446 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.strong.expect
@@ -94,18 +94,18 @@
 }
 static method main() → dynamic {
   self::C2 c2 = new self::C2::•();
-  (let final dynamic #t1 = c2 in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class '#lib1::C2'.
+  (let final dynamic #t1 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class '#lib1::C2'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c2.m + c2.c;
-     ^").+(let final dynamic #t2 = c2 in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class '#lib1::C2'.
+     ^").+(let final dynamic #t2 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class '#lib1::C2'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c2.m + c2.c;
             ^");
   self::C3 c3 = new self::C3::•();
-  (let final dynamic #t3 = c3 in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class '#lib1::C3'.
+  (let final dynamic #t3 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class '#lib1::C3'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c3.m + c3.c;
-     ^").+(let final dynamic #t4 = c3 in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class '#lib1::C3'.
+     ^").+(let final dynamic #t4 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class '#lib1::C3'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c3.m + c3.c;
             ^");
diff --git a/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
index 8301f54..697afbc 100644
--- a/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_34563.dart.strong.transformed.expect
@@ -56,18 +56,18 @@
 }
 static method main() → dynamic {
   self::C2 c2 = new self::C2::•();
-  (let final self::C2 #t1 = c2 in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class '#lib1::C2'.
+  (let final self::C2 #t1 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:6: Error: The getter 'm' isn't defined for the class '#lib1::C2'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c2.m + c2.c;
-     ^").+(let final self::C2 #t2 = c2 in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class '#lib1::C2'.
+     ^").+(let final self::C2 #t2 = c2 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:23:13: Error: The getter 'c' isn't defined for the class '#lib1::C2'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c2.m + c2.c;
             ^");
   self::C3 c3 = new self::C3::•();
-  (let final self::C3 #t3 = c3 in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class '#lib1::C3'.
+  (let final self::C3 #t3 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:6: Error: The getter 'm' isn't defined for the class '#lib1::C3'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'm'.
   c3.m + c3.c;
-     ^").+(let final self::C3 #t4 = c3 in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class '#lib1::C3'.
+     ^").+(let final self::C3 #t4 = c3 in invalid-expression "pkg/front_end/testcases/regress/issue_34563.dart:25:13: Error: The getter 'c' isn't defined for the class '#lib1::C3'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'c'.
   c3.m + c3.c;
             ^");
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect
index 5a266d2..baa65fa 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.expect
@@ -4,6 +4,18 @@
 // Try changing the type of the parameter, or casting the argument to 'test::C::g1::U'.
 //     this.f<U>(1.5);
 //               ^
+//
+// pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:20:16: Error: Type argument 'dart.core::num' violates the corresponding type variable bound of 'C<dart.core::int>::g1'.
+// Try changing type arguments so that they conform to the bounds.
+//   new C<int>().g1<num>();
+//                ^
+
+// Unhandled errors:
+//
+// pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:20:16: Error: Type argument 'dart.core::num' violates the corresponding type variable bound of 'C<dart.core::int>::g1'.
+// Try changing type arguments so that they conform to the bounds.
+//   new C<int>().g1<num>();
+//                ^
 
 library test;
 import self as self;
@@ -15,10 +27,10 @@
     ;
   method f<generic-covariant-impl U extends self::C::T = self::C::T>(self::C::f::U x) → void {}
   method g1<generic-covariant-impl U extends self::C::T = self::C::T>() → void {
-    this.{self::C::f}<self::C::g1::U>(let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:11:15: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'test::C::g1::U'.
+    this.{self::C::f}<self::C::g1::U>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:11:15: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'test::C::g1::U'.
 Try changing the type of the parameter, or casting the argument to 'test::C::g1::U'.
     this.f<U>(1.5);
-              ^" in let final dynamic #t2 = 1.5 in null);
+              ^" in 1.5 as{TypeError} <BottomType>);
   }
 }
 static method g2(self::C<core::Object> c) → void {
diff --git a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect
index f8c0eb9..e1bfe11 100644
--- a/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart.strong.transformed.expect
@@ -1,3 +1,10 @@
+// Unhandled errors:
+//
+// pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:20:16: Error: Type argument 'dart.core::num' violates the corresponding type variable bound of 'C<dart.core::int>::g1'.
+// Try changing type arguments so that they conform to the bounds.
+//   new C<int>().g1<num>();
+//                ^
+
 library test;
 import self as self;
 import "dart:core" as core;
@@ -8,10 +15,10 @@
     ;
   method f<generic-covariant-impl U extends self::C::T = self::C::T>(self::C::f::U x) → void {}
   method g1<generic-covariant-impl U extends self::C::T = self::C::T>() → void {
-    this.{self::C::f}<self::C::g1::U>(let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:11:15: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'test::C::g1::U'.
+    this.{self::C::f}<self::C::g1::U>(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/runtime_checks/covariant_generic_method_type_parameter.dart:11:15: Error: The argument type 'dart.core::double' can't be assigned to the parameter type 'test::C::g1::U'.
 Try changing the type of the parameter, or casting the argument to 'test::C::g1::U'.
     this.f<U>(1.5);
-              ^" in let final core::double #t2 = 1.5 in null);
+              ^" in 1.5 as{TypeError} <BottomType>);
   }
 }
 static method g2(self::C<core::Object> c) → void {
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
index 70b44af..2aa0e56 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.expect
@@ -53,17 +53,17 @@
   return 2;
 static method main() → void {
   self::D d = new self::D::•(new self::C::•<core::num>(self::numToInt));
-  let final self::D #t1 = d in #t1.{self::D::value} = let dynamic _ = null in let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:41: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
+  let final self::D #t1 = d in #t1.{self::D::value} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:41: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::int'.
   d.value /*@checkReturn=(num) -> num*/ += 1;
-                                        ^" in let final dynamic #t3 = #t1.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num in null;
+                                        ^" in (#t1.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num) as{TypeError} (core::int) → core::int;
   self::expect(d.{self::D::setValue}(0), 1);
   d = new self::D::•(new self::C::•<core::num>(self::numToNum));
   self::expectTypeError(() → core::Null {
-    let final self::D #t4 = d in #t4.{self::D::value} = let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:43: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
+    let final self::D #t3 = d in #t3.{self::D::value} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:43: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::int'.
     d.value /*@checkReturn=(num) -> num*/ += 1;
-                                          ^" in let final dynamic #t6 = #t4.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num in null;
+                                          ^" in (#t3.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num) as{TypeError} (core::int) → core::int;
   });
   self::expect(d.{self::D::setValue}, null);
 }
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
index 017d625..740f0f4 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart.strong.transformed.expect
@@ -41,17 +41,17 @@
   return 2;
 static method main() → void {
   self::D d = new self::D::•(new self::C::•<core::num>(self::numToInt));
-  let final self::D #t1 = d in #t1.{self::D::value} = let<BottomType> _ = null in let final dynamic #t2 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:41: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
+  let final self::D #t1 = d in #t1.{self::D::value} = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:49:41: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::int'.
   d.value /*@checkReturn=(num) -> num*/ += 1;
-                                        ^" in let final (core::num) → core::num #t3 = #t1.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num in null;
+                                        ^" in (#t1.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num) as{TypeError} (core::int) → core::int;
   self::expect(d.{self::D::setValue}(0), 1);
   d = new self::D::•(new self::C::•<core::num>(self::numToNum));
   self::expectTypeError(() → core::Null {
-    let final self::D #t4 = d in #t4.{self::D::value} = let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:43: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
+    let final self::D #t3 = d in #t3.{self::D::value} = let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast.dart:53:43: Error: A value of type '(dart.core::num) \u8594 dart.core::num' can't be assigned to a variable of type '(dart.core::int) \u8594 dart.core::int'.
 Try changing the type of the left hand side, or casting the right hand side to '(dart.core::int) \u8594 dart.core::int'.
     d.value /*@checkReturn=(num) -> num*/ += 1;
-                                          ^" in let final (core::num) → core::num #t6 = #t4.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num in null;
+                                          ^" in (#t3.{self::D::value}.{self::C::+}(1) as{TypeError} (core::num) → core::num) as{TypeError} (core::int) → core::int;
   });
   self::expect(d.{self::D::setValue}, null);
 }
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect
index 534f69a..61aebae 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.expect
@@ -41,21 +41,21 @@
   set x(self::B<(self::C::T) → void> value) → void {}
 }
 static method test(self::C<core::num> c) → void {
-  let final self::C<core::num> #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let dynamic _ = null in let final dynamic #t2 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:49: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+  let final self::C<core::num> #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:49: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   c. /*@checkReturn=B<(num) -> void>*/ x += new B<num>();
-                                                ^" in let final dynamic #t3 = new self::B::•<core::num>() in null);
-  self::B<(core::num) → void> y = let final self::C<core::num> #t4 = c in #t4.{self::C::x} = (#t4.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let dynamic _ = null in let final dynamic #t5 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:57: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+                                                ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void>);
+  self::B<(core::num) → void> y = let final self::C<core::num> #t3 = c in #t3.{self::C::x} = (#t3.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:57: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   var y = c. /*@checkReturn=B<(num) -> void>*/ x += new B<num>();
-                                                        ^" in let final dynamic #t6 = new self::B::•<core::num>() in null);
-  let final self::C<core::num> #t7 = c in (#t7.{self::C::x} as{TypeError} self::B<(core::num) → void>).{core::Object::==}(null) ?{self::B<core::Object>} #t7.{self::C::x} = let dynamic _ = null in let final dynamic #t8 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:50: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+                                                        ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void>);
+  let final self::C<core::num> #t5 = c in (#t5.{self::C::x} as{TypeError} self::B<(core::num) → void>).{core::Object::==}(null) ?{self::B<core::Object>} #t5.{self::C::x} = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:50: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   c. /*@checkReturn=B<(num) -> void>*/ x ??= new B<num>();
-                                                 ^" in let final dynamic #t9 = new self::B::•<core::num>() in null : null;
-  self::B<core::Object> z = let final self::C<core::num> #t10 = c in let final dynamic #t11 = #t10.{self::C::x} as{TypeError} self::B<(core::num) → void> in #t11.{core::Object::==}(null) ?{self::B<core::Object>} #t10.{self::C::x} = let dynamic _ = null in let final dynamic #t12 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:58: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+                                                 ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void> : null;
+  self::B<core::Object> z = let final self::C<core::num> #t7 = c in let final dynamic #t8 = #t7.{self::C::x} as{TypeError} self::B<(core::num) → void> in #t8.{core::Object::==}(null) ?{self::B<core::Object>} #t7.{self::C::x} = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:58: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   var z = c. /*@checkReturn=B<(num) -> void>*/ x ??= new B<num>();
-                                                         ^" in let final dynamic #t13 = new self::B::•<core::num>() in null : #t11;
+                                                         ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void> : #t8;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect
index 1f74ac1..d2500ea 100644
--- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart.strong.transformed.expect
@@ -19,21 +19,21 @@
   set x(self::B<(self::C::T) → void> value) → void {}
 }
 static method test(self::C<core::num> c) → void {
-  let final self::C<core::num> #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let<BottomType> _ = null in let final dynamic #t2 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:49: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+  let final self::C<core::num> #t1 = c in #t1.{self::C::x} = (#t1.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:20:49: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   c. /*@checkReturn=B<(num) -> void>*/ x += new B<num>();
-                                                ^" in let final self::B<core::num> #t3 = new self::B::•<core::num>() in null);
-  self::B<(core::num) → void> y = let final self::C<core::num> #t4 = c in #t4.{self::C::x} = (#t4.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let<BottomType> _ = null in let final dynamic #t5 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:57: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+                                                ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void>);
+  self::B<(core::num) → void> y = let final self::C<core::num> #t3 = c in #t3.{self::C::x} = (#t3.{self::C::x} as{TypeError} self::B<(core::num) → void>).{self::B::+}(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:21:57: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   var y = c. /*@checkReturn=B<(num) -> void>*/ x += new B<num>();
-                                                        ^" in let final self::B<core::num> #t6 = new self::B::•<core::num>() in null);
-  let final self::C<core::num> #t7 = c in (#t7.{self::C::x} as{TypeError} self::B<(core::num) → void>).{core::Object::==}(null) ?{self::B<core::Object>} #t7.{self::C::x} = let<BottomType> _ = null in let final dynamic #t8 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:50: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+                                                        ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void>);
+  let final self::C<core::num> #t5 = c in (#t5.{self::C::x} as{TypeError} self::B<(core::num) → void>).{core::Object::==}(null) ?{self::B<core::Object>} #t5.{self::C::x} = let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:22:50: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   c. /*@checkReturn=B<(num) -> void>*/ x ??= new B<num>();
-                                                 ^" in let final self::B<core::num> #t9 = new self::B::•<core::num>() in null : null;
-  self::B<core::Object> z = let final self::C<core::num> #t10 = c in let final self::B<(core::num) → void> #t11 = #t10.{self::C::x} as{TypeError} self::B<(core::num) → void> in #t11.{core::Object::==}(null) ?{self::B<core::Object>} #t10.{self::C::x} = let<BottomType> _ = null in let final dynamic #t12 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:58: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
+                                                 ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void> : null;
+  self::B<core::Object> z = let final self::C<core::num> #t7 = c in let final self::B<(core::num) → void> #t8 = #t7.{self::C::x} as{TypeError} self::B<(core::num) → void> in #t8.{core::Object::==}(null) ?{self::B<core::Object>} #t7.{self::C::x} = let final<BottomType> #t9 = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign.dart:23:58: Error: A value of type 'test::B<dart.core::num>' can't be assigned to a variable of type 'test::B<(dart.core::num) \u8594 void>'.
 Try changing the type of the left hand side, or casting the right hand side to 'test::B<(dart.core::num) \u8594 void>'.
   var z = c. /*@checkReturn=B<(num) -> void>*/ x ??= new B<num>();
-                                                         ^" in let final self::B<core::num> #t13 = new self::B::•<core::num>() in null : #t11;
+                                                         ^" in new self::B::•<core::num>() as{TypeError} self::B<(core::num) → void> : #t8;
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index 2e05e3e..f42496b 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -49,7 +49,6 @@
 inference/downwards_inference_annotations_type_variable: Fail # Issue 28981
 inference/downwards_inference_on_function_of_t_using_the_t: Fail # Issue #29798
 inference/downwards_inference_on_list_literals_infer_downwards: RuntimeError
-inference/downwards_inference_yield_yield_star: TypeCheckError
 inference/future_then_explicit_future: Fail # Issue #30040
 inference/future_then_upwards: RuntimeError
 inference/future_then_upwards_2: RuntimeError
@@ -78,11 +77,15 @@
 inference_new/infer_assign_to_index_super_upwards: TypeCheckError
 inference_new/infer_assign_to_index_this_upwards: TypeCheckError
 inference_new/infer_assign_to_index_upwards: TypeCheckError
+inference_new/infer_assign_to_property_custom: TypeCheckError
 inference_new/infer_field_getter_setter_mismatch: TypeCheckError
 inference_new/infer_field_override_getter_overrides_setter: TypeCheckError
+inference_new/invalid_assignment_during_toplevel_inference: TypeCheckError
 instantiate_to_bound/body_typedef_super_bounded_type: Fail # Issue 33444
 instantiate_to_bound/typedef_super_bounded_type: Fail # Issue 33444
+invalid_type: TypeCheckError
 invocations: Fail
+issue34899: TypeCheckError
 literals: Fail
 map: Fail
 micro: Fail
@@ -191,6 +194,7 @@
 regress/issue_29982: RuntimeError # Tests runtime behavior of error recovery.
 regress/issue_30836: RuntimeError # Issue 30836.
 regress/issue_31299: TypeCheckError
+regress/issue_32200: RuntimeError # Invalid type.
 regress/issue_32972: TypeCheckError
 regress/issue_33452: RuntimeError # Test has an intentional error
 regress/issue_34225: RuntimeError
diff --git a/pkg/front_end/testcases/tabs.dart.direct.expect b/pkg/front_end/testcases/tabs.dart.direct.expect
index a304f47..71641b8 100644
--- a/pkg/front_end/testcases/tabs.dart.direct.expect
+++ b/pkg/front_end/testcases/tabs.dart.direct.expect
@@ -25,10 +25,10 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#one, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#two, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#three, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#four, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#five, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#one, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#two, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#three, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#four, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#five, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/tabs.dart.direct.transformed.expect b/pkg/front_end/testcases/tabs.dart.direct.transformed.expect
index b542e17..e5b77aa 100644
--- a/pkg/front_end/testcases/tabs.dart.direct.transformed.expect
+++ b/pkg/front_end/testcases/tabs.dart.direct.transformed.expect
@@ -3,10 +3,10 @@
 import "dart:core" as core;
 
 static method test() → dynamic {
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#one, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#two, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#three, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#four, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
-  core::print(throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#five, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#one, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#two, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#three, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#four, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
+  core::print(let dynamic _ = null in throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#five, 33, const <core::Type>[], const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}))));
 }
 static method main() → dynamic {}
diff --git a/pkg/front_end/testcases/type_variable_prefix.dart.direct.expect b/pkg/front_end/testcases/type_variable_prefix.dart.direct.expect
index 7e86ed3..89d4f6a 100644
--- a/pkg/front_end/testcases/type_variable_prefix.dart.direct.expect
+++ b/pkg/front_end/testcases/type_variable_prefix.dart.direct.expect
@@ -2,7 +2,7 @@
 //
 // pkg/front_end/testcases/type_variable_prefix.dart:8:3: Warning: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
-//   ^
+//   ^^^^^^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/type_variable_prefix.dart.outline.expect b/pkg/front_end/testcases/type_variable_prefix.dart.outline.expect
index 344aa5f..9680b15 100644
--- a/pkg/front_end/testcases/type_variable_prefix.dart.outline.expect
+++ b/pkg/front_end/testcases/type_variable_prefix.dart.outline.expect
@@ -2,7 +2,7 @@
 //
 // pkg/front_end/testcases/type_variable_prefix.dart:8:3: Warning: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
-//   ^
+//   ^^^^^^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/type_variable_prefix.dart.strong.expect b/pkg/front_end/testcases/type_variable_prefix.dart.strong.expect
index c820e09..578f059 100644
--- a/pkg/front_end/testcases/type_variable_prefix.dart.strong.expect
+++ b/pkg/front_end/testcases/type_variable_prefix.dart.strong.expect
@@ -2,7 +2,7 @@
 //
 // pkg/front_end/testcases/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
-//   ^
+//   ^^^^^^^^
 //
 // pkg/front_end/testcases/type_variable_prefix.dart:8:24: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'invalid-type'.
 // Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
@@ -18,7 +18,7 @@
 //
 // pkg/front_end/testcases/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
-//   ^
+//   ^^^^^^^^
 
 library;
 import self as self;
@@ -29,15 +29,15 @@
     : super core::Object::•()
     ;
   method method() → invalid-type
-    return let dynamic _ = null in let final dynamic #t1 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:8:24: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'invalid-type'.
+    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:8:24: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'invalid-type'.
 Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
   T.String method() => \"Hello, World!\";
-                       ^" in let final dynamic #t2 = "Hello, World!" in null;
+                       ^" in "Hello, World!" as{TypeError} invalid-type;
 }
 static method main() → dynamic {
-  core::String s = let dynamic _ = null in let final dynamic #t3 = let dynamic _ = null in invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:12:24: Error: A value of type 'invalid-type' can't be assigned to a variable of type 'dart.core::String'.
+  core::String s = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:12:24: Error: A value of type 'invalid-type' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   T.String s = new C().method();
-                       ^" in let final dynamic #t4 = new self::C::•<dynamic>().{self::C::method}() in null;
+                       ^" in new self::C::•<dynamic>().{self::C::method}() as{TypeError} core::String;
   core::print(s);
 }
diff --git a/pkg/front_end/testcases/type_variable_prefix.dart.strong.transformed.expect b/pkg/front_end/testcases/type_variable_prefix.dart.strong.transformed.expect
index 47c2c06..040a5d2 100644
--- a/pkg/front_end/testcases/type_variable_prefix.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/type_variable_prefix.dart.strong.transformed.expect
@@ -2,7 +2,7 @@
 //
 // pkg/front_end/testcases/type_variable_prefix.dart:8:3: Error: 'T.String' can't be used as a type because 'T' doesn't refer to an import prefix.
 //   T.String method() => "Hello, World!";
-//   ^
+//   ^^^^^^^^
 
 library;
 import self as self;
@@ -13,15 +13,15 @@
     : super core::Object::•()
     ;
   method method() → invalid-type
-    return let<BottomType> _ = null in let final dynamic #t1 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:8:24: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'invalid-type'.
+    return let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:8:24: Error: A value of type 'dart.core::String' can't be assigned to a variable of type 'invalid-type'.
 Try changing the type of the left hand side, or casting the right hand side to 'invalid-type'.
   T.String method() => \"Hello, World!\";
-                       ^" in let final core::String #t2 = "Hello, World!" in null;
+                       ^" in "Hello, World!" as{TypeError} invalid-type;
 }
 static method main() → dynamic {
-  core::String s = let<BottomType> _ = null in let final dynamic #t3 = let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:12:24: Error: A value of type 'invalid-type' can't be assigned to a variable of type 'dart.core::String'.
+  core::String s = let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/type_variable_prefix.dart:12:24: Error: A value of type 'invalid-type' can't be assigned to a variable of type 'dart.core::String'.
 Try changing the type of the left hand side, or casting the right hand side to 'dart.core::String'.
   T.String s = new C().method();
-                       ^" in let final invalid-type #t4 = new self::C::•<dynamic>().{self::C::method}() in null;
+                       ^" in new self::C::•<dynamic>().{self::C::method}() as{TypeError} core::String;
   core::print(s);
 }
diff --git a/pkg/front_end/testcases/undefined.dart.strong.expect b/pkg/front_end/testcases/undefined.dart.strong.expect
index e1d8047..039a05f 100644
--- a/pkg/front_end/testcases/undefined.dart.strong.expect
+++ b/pkg/front_end/testcases/undefined.dart.strong.expect
@@ -28,17 +28,17 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x};
-  let final dynamic #t1 = c in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class '#lib1::C'.
+  let final dynamic #t1 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c. /*@error=UndefinedGetter*/ y;
                                 ^";
   c.{self::C::f}();
-  let final dynamic #t2 = c in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class '#lib1::C'.
+  let final dynamic #t2 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
   c. /*@error=UndefinedMethod*/ g();
                                 ^";
   c.{self::C::x} = null;
-  let final dynamic #t3 = c in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class '#lib1::C'.
+  let final dynamic #t3 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'y'.
   c. /*@error=UndefinedSetter*/ y = null;
                                 ^";
diff --git a/pkg/front_end/testcases/undefined.dart.strong.transformed.expect b/pkg/front_end/testcases/undefined.dart.strong.transformed.expect
index 276f5c6..46675a7 100644
--- a/pkg/front_end/testcases/undefined.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/undefined.dart.strong.transformed.expect
@@ -11,17 +11,17 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x};
-  let final self::C #t1 = c in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class '#lib1::C'.
+  let final self::C #t1 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:14:33: Error: The getter 'y' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'y'.
   c. /*@error=UndefinedGetter*/ y;
                                 ^";
   c.{self::C::f}();
-  let final self::C #t2 = c in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class '#lib1::C'.
+  let final self::C #t2 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:16:33: Error: The method 'g' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing method, or defining a method named 'g'.
   c. /*@error=UndefinedMethod*/ g();
                                 ^";
   c.{self::C::x} = null;
-  let final self::C #t3 = c in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class '#lib1::C'.
+  let final self::C #t3 = c in invalid-expression "pkg/front_end/testcases/undefined.dart:18:33: Error: The setter 'y' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing setter, or defining a setter or field named 'y'.
   c. /*@error=UndefinedSetter*/ y = null;
                                 ^";
diff --git a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect
index 4785789..859557f 100644
--- a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.expect
@@ -22,11 +22,11 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x} = 1;
-  let final self::C #t1 = c in #t1.{self::C::x} = (let final dynamic #t2 = #t1 in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
+  let final self::C #t1 = c in #t1.{self::C::x} = (let final dynamic #t2 = #t1 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x += 1;
                                 ^").+(1);
-  let final self::C #t3 = c in (let final dynamic #t4 = #t3 in let dynamic _ = null in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
+  let final self::C #t3 = c in (let final dynamic #t4 = #t3 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x ??= 1;
                                 ^").{core::Object::==}(null) ?{dynamic} #t3.{self::C::x} = 1 : null;
diff --git a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
index d826a78..4bd73f4 100644
--- a/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart.strong.transformed.expect
@@ -10,11 +10,11 @@
 }
 static method test(self::C c) → void {
   c.{self::C::x} = 1;
-  let final self::C #t1 = c in #t1.{self::C::x} = (let final self::C #t2 = #t1 in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
+  let final self::C #t1 = c in #t1.{self::C::x} = (let final self::C #t2 = #t1 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:13:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x += 1;
                                 ^").+(1);
-  let final self::C #t3 = c in (let final self::C #t4 = #t3 in let<BottomType> _ = null in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
+  let final self::C #t3 = c in (let final self::C #t4 = #t3 in invalid-expression "pkg/front_end/testcases/undefined_getter_in_compound_assignment.dart:14:33: Error: The getter 'x' isn't defined for the class '#lib1::C'.
 Try correcting the name to the name of an existing getter, or defining a getter or field named 'x'.
   c. /*@error=UndefinedGetter*/ x ??= 1;
                                 ^").{core::Object::==}(null) ?{dynamic} #t3.{self::C::x} = 1 : null;
diff --git a/pkg/front_end/testcases/var_as_type_name.dart.direct.expect b/pkg/front_end/testcases/var_as_type_name.dart.direct.expect
index afad0be..a57cbf9 100644
--- a/pkg/front_end/testcases/var_as_type_name.dart.direct.expect
+++ b/pkg/front_end/testcases/var_as_type_name.dart.direct.expect
@@ -6,7 +6,7 @@
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Warning: Type 'var' not found.
 //   Map<String, var> m;
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Warning: 'var' isn't a type.
 //   Map<String, var> m;
diff --git a/pkg/front_end/testcases/var_as_type_name.dart.outline.expect b/pkg/front_end/testcases/var_as_type_name.dart.outline.expect
index 5eb0452..cb7a015 100644
--- a/pkg/front_end/testcases/var_as_type_name.dart.outline.expect
+++ b/pkg/front_end/testcases/var_as_type_name.dart.outline.expect
@@ -6,7 +6,7 @@
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Warning: Type 'var' not found.
 //   Map<String, var> m;
-//               ^
+//               ^^^
 
 library;
 import self as self;
diff --git a/pkg/front_end/testcases/var_as_type_name.dart.strong.expect b/pkg/front_end/testcases/var_as_type_name.dart.strong.expect
index 3f847ee..0b4ad72 100644
--- a/pkg/front_end/testcases/var_as_type_name.dart.strong.expect
+++ b/pkg/front_end/testcases/var_as_type_name.dart.strong.expect
@@ -6,7 +6,7 @@
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Error: Type 'var' not found.
 //   Map<String, var> m;
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Error: 'var' isn't a type.
 //   Map<String, var> m;
@@ -20,7 +20,7 @@
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Error: Type 'var' not found.
 //   Map<String, var> m;
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Error: 'var' isn't a type.
 //   Map<String, var> m;
diff --git a/pkg/front_end/testcases/var_as_type_name.dart.strong.transformed.expect b/pkg/front_end/testcases/var_as_type_name.dart.strong.transformed.expect
index 0c4887c..ebce5d7 100644
--- a/pkg/front_end/testcases/var_as_type_name.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/var_as_type_name.dart.strong.transformed.expect
@@ -6,7 +6,7 @@
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Error: Type 'var' not found.
 //   Map<String, var> m;
-//               ^
+//               ^^^
 //
 // pkg/front_end/testcases/var_as_type_name.dart:6:15: Error: 'var' isn't a type.
 //   Map<String, var> m;
diff --git a/pkg/front_end/tool/_fasta/bulk_compile.dart b/pkg/front_end/tool/_fasta/bulk_compile.dart
index 6476b32..c89d769 100644
--- a/pkg/front_end/tool/_fasta/bulk_compile.dart
+++ b/pkg/front_end/tool/_fasta/bulk_compile.dart
@@ -38,7 +38,8 @@
             options: options
               ..packagesFileUri ??= Uri.base.resolve(".packages")
               ..linkedDependencies = <Uri>[
-                computePlatformBinariesLocation().resolve("vm_platform.dill")
+                computePlatformBinariesLocation(forceBuildDir: true)
+                    .resolve("vm_platform.dill")
               ]
               ..fileSystem = (new FileBackedMemoryFileSystem()
                 ..entities[mainUri.path] =
diff --git a/pkg/front_end/tool/_fasta/bulk_compile_test.dart b/pkg/front_end/tool/_fasta/bulk_compile_test.dart
index 2c3d366..29b98c9 100644
--- a/pkg/front_end/tool/_fasta/bulk_compile_test.dart
+++ b/pkg/front_end/tool/_fasta/bulk_compile_test.dart
@@ -16,7 +16,7 @@
   await compiler.compile("main() { print('Hello, World!'); }");
   await compiler.compile(
       // This example is a regression test of lazy loading of FunctionNode
-      // which would break when this is preceeded by hello-world.
+      // which would break when this is preceded by hello-world.
       "main() { [].map(); }");
   await compiler.compile("main() { print('Hello, Brave New World!'); }");
   await compiler.compile("import 'package';");
diff --git a/pkg/front_end/tool/_fasta/command_line.dart b/pkg/front_end/tool/_fasta/command_line.dart
index 2ea3064..6c35efb 100644
--- a/pkg/front_end/tool/_fasta/command_line.dart
+++ b/pkg/front_end/tool/_fasta/command_line.dart
@@ -6,7 +6,7 @@
 
 import 'dart:async' show Future;
 
-import 'dart:io' show exit, exitCode;
+import 'dart:io' show exit, stderr;
 
 import 'package:build_integration/file_system/single_root.dart'
     show SingleRootFileSystem;
@@ -27,9 +27,6 @@
 
 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
 
-import 'package:front_end/src/fasta/deprecated_problems.dart'
-    show deprecated_InputError;
-
 import 'package:front_end/src/fasta/fasta_codes.dart'
     show
         Message,
@@ -62,6 +59,7 @@
 class ParsedArguments {
   final Map<String, dynamic> options = <String, dynamic>{};
   final List<String> arguments = <String>[];
+  final Map<String, String> defines = <String, String>{};
 
   toString() => "ParsedArguments($options, $arguments)";
 
@@ -111,11 +109,16 @@
     while (iterator.moveNext()) {
       String argument = iterator.current;
       if (argument.startsWith("-") || argument == "/?" || argument == "/h") {
-        index = argument.indexOf("=");
         String value;
-        if (index != -1) {
-          value = argument.substring(index + 1);
-          argument = argument.substring(0, index);
+        if (argument.startsWith("-D")) {
+          value = argument.substring("-D".length);
+          argument = "-D";
+        } else {
+          index = argument.indexOf("=");
+          if (index != -1) {
+            value = argument.substring(index + 1);
+            argument = argument.substring(0, index);
+          }
         }
         var valueSpecification = specification[argument];
         if (valueSpecification == null) {
@@ -123,7 +126,9 @@
               "Unknown option '$argument'.");
         }
         String canonicalArgument = argument;
-        if (valueSpecification is String && valueSpecification != ",") {
+        if (valueSpecification is String &&
+            valueSpecification != "," &&
+            valueSpecification != "<define>") {
           canonicalArgument = valueSpecification;
           valueSpecification = specification[valueSpecification];
         }
@@ -149,6 +154,20 @@
                 .addAll(value.split(","));
             break;
 
+          case "<define>":
+            int index = value.indexOf('=');
+            String name;
+            String expression;
+            if (index != -1) {
+              name = value.substring(0, index);
+              expression = value.substring(index + 1);
+            } else {
+              name = value;
+              expression = value;
+            }
+            result.defines[name] = expression;
+            break;
+
           case "int":
           case "bool":
           case "String":
@@ -216,27 +235,27 @@
 //  * Document the option.
 //  * Get an explicit approval from the front-end team.
 const Map<String, dynamic> optionSpecification = const <String, dynamic>{
+  "--bytecode": false,
   "--compile-sdk": Uri,
   "--dump-ir": false,
   "--exclude-source": false,
   "--fatal": ",",
   "--help": false,
   "--legacy": "--legacy-mode",
-  "--legacy-mode": true,
+  "--legacy-mode": false,
   "--libraries-json": Uri,
   "--output": Uri,
   "--packages": Uri,
   "--platform": Uri,
   "--sdk": Uri,
-  "--single-root-scheme": String,
   "--single-root-base": Uri,
-  "--strong": "--strong-mode",
-  "--strong-mode": false,
+  "--single-root-scheme": String,
+  "--supermixin": true,
   "--sync-async": true,
   "--target": String,
   "--verbose": false,
   "--verify": false,
-  "--bytecode": false,
+  "-D": "<define>",
   "-h": "--help",
   "-o": "--output",
   "-t": "--target",
@@ -267,14 +286,14 @@
         "Can't specify both '--compile-sdk' and '--platform'.");
   }
 
-  final bool strongMode = options["--strong-mode"] || !options["--legacy-mode"];
+  final bool legacyMode = options["--legacy-mode"];
 
   final bool syncAsync = options["--sync-async"];
 
   final String targetName = options["--target"] ?? "vm";
 
   final TargetFlags flags =
-      new TargetFlags(strongMode: strongMode, syncAsync: syncAsync);
+      new TargetFlags(legacyMode: legacyMode, syncAsync: syncAsync);
 
   final Target target = getTarget(targetName, flags);
   if (target == null) {
@@ -342,7 +361,7 @@
           ..setExitCodeOnProblem = true
           ..fileSystem = fileSystem
           ..packagesFileUri = packages
-          ..strongMode = strongMode
+          ..legacyMode = legacyMode
           ..target = target
           ..throwOnErrorsForDebugging = errorsAreFatal
           ..throwOnWarningsForDebugging = warningsAreFatal
@@ -367,8 +386,8 @@
   final Uri platform = compileSdk
       ? null
       : (options["--platform"] ??
-          computePlatformBinariesLocation().resolve(
-              strongMode ? "vm_platform_strong.dill" : "vm_platform.dill"));
+          computePlatformBinariesLocation(forceBuildDir: true).resolve(
+              legacyMode ? "vm_platform.dill" : "vm_platform_strong.dill"));
 
   CompilerOptions compilerOptions = new CompilerOptions()
     ..compileSdk = compileSdk
@@ -376,7 +395,7 @@
     ..sdkRoot = sdk
     ..sdkSummary = platform
     ..packagesFileUri = packages
-    ..strongMode = strongMode
+    ..legacyMode = legacyMode
     ..target = target
     ..throwOnErrorsForDebugging = errorsAreFatal
     ..throwOnWarningsForDebugging = warningsAreFatal
@@ -414,6 +433,13 @@
   ProcessedOptions options;
   CommandLineProblem problem;
   try {
+    if (arguments.contains("--strong") &&
+        arguments.contains("--target=flutter")) {
+      // TODO(ahe): Temporarily ignore option to unbreak flutter build.
+      arguments = new List<String>.from(arguments);
+      arguments.remove("--strong");
+      stderr.writeln("Note: the option '--strong' is deprecated.");
+    }
     parsedArguments = ParsedArguments.parse(arguments, optionSpecification);
     options = analyzeCommandLine(
         programName, parsedArguments, areRestArgumentsInputs, verbose);
@@ -484,10 +510,6 @@
     // DebugAbort should never happen in production code, so we want test.py to
     // treat this as a crash which is signalled by exiting with 255.
     exit(255);
-  } on deprecated_InputError catch (e) {
-    exitCode = 1;
-    await CompilerContext.runWithDefaultOptions((c) =>
-        new Future<void>.sync(() => c.report(e.message, Severity.error)));
   }
   return failingValue;
 }
diff --git a/pkg/front_end/tool/_fasta/compile_platform_test.dart b/pkg/front_end/tool/_fasta/compile_platform_test.dart
index b528f4e..90a9f5f 100644
--- a/pkg/front_end/tool/_fasta/compile_platform_test.dart
+++ b/pkg/front_end/tool/_fasta/compile_platform_test.dart
@@ -24,7 +24,6 @@
       ProcessResult result = await Process.run(dartVm.toFilePath(), <String>[
         compilePlatform.toFilePath(),
         "-v",
-        "--strong",
         "dart:core",
         librariesJson.toFilePath(),
         outlineDill.toFilePath(),
diff --git a/pkg/front_end/tool/_fasta/entry_points.dart b/pkg/front_end/tool/_fasta/entry_points.dart
index 3c7af38..bd473b2 100644
--- a/pkg/front_end/tool/_fasta/entry_points.dart
+++ b/pkg/front_end/tool/_fasta/entry_points.dart
@@ -25,9 +25,6 @@
 
 import 'package:front_end/src/fasta/compiler_context.dart' show CompilerContext;
 
-import 'package:front_end/src/fasta/deprecated_problems.dart'
-    show deprecated_inputError;
-
 import 'package:front_end/src/fasta/dill/dill_target.dart' show DillTarget;
 
 import 'package:front_end/src/fasta/get_dependencies.dart' show getDependencies;
@@ -229,7 +226,7 @@
   }
 
   KernelTarget createKernelTarget(
-      DillTarget dillTarget, UriTranslator uriTranslator, bool strongMode) {
+      DillTarget dillTarget, UriTranslator uriTranslator) {
     return new KernelTarget(c.fileSystem, false, dillTarget, uriTranslator,
         uriToSource: c.uriToSource);
   }
@@ -238,19 +235,12 @@
     UriTranslator uriTranslator = await c.options.getUriTranslator();
     ticker.logMs("Read packages file");
     DillTarget dillTarget = createDillTarget(uriTranslator);
-    KernelTarget kernelTarget =
-        createKernelTarget(dillTarget, uriTranslator, c.options.strongMode);
+    KernelTarget kernelTarget = createKernelTarget(dillTarget, uriTranslator);
     Uri platform = c.options.sdkSummary;
     if (platform != null) {
       _appendDillForUri(dillTarget, platform);
     }
-    Uri uri = c.options.inputs.first;
-    String path = uriTranslator.translate(uri)?.path ?? uri.path;
-    if (path.endsWith(".dart")) {
-      kernelTarget.read(uri);
-    } else {
-      deprecated_inputError(uri, -1, "Unexpected input: $uri");
-    }
+    kernelTarget.setEntryPoints(c.options.inputs);
     await dillTarget.buildOutlines();
     var outline = await kernelTarget.buildOutlines();
     if (c.options.debugDump && output != null) {
@@ -330,7 +320,7 @@
   c.options.ticker.logMs("Wrote outline to ${outlineOutput.toFilePath()}");
 
   if (c.options.bytecode) {
-    generateBytecode(result.component, strongMode: c.options.strongMode);
+    generateBytecode(result.component);
   }
 
   await writeComponentToFile(result.component, fullOutput,
@@ -357,7 +347,7 @@
   // mode), this is only an approximation, albeit accurate.  Once Fasta is
   // self-hosting, this isn't an approximation. Regardless, strong mode
   // shouldn't affect which files are read.
-  Target hostTarget = getTarget("vm", new TargetFlags(strongMode: true));
+  Target hostTarget = getTarget("vm", new TargetFlags());
   return getDependencies(Platform.script,
       platform: hostPlatform, target: hostTarget);
 }
diff --git a/pkg/front_end/tool/_fasta/generate_messages.dart b/pkg/front_end/tool/_fasta/generate_messages.dart
index b5a3205..3512791 100644
--- a/pkg/front_end/tool/_fasta/generate_messages.dart
+++ b/pkg/front_end/tool/_fasta/generate_messages.dart
@@ -227,25 +227,16 @@
         break;
 
       case "type":
-        parameters.add("DartType _type");
-        ensureNameSystem();
-        conversions.add(r"""
-buffer = new StringBuffer();
-new Printer(buffer, syntheticNames: nameSystem).writeNode(_type);
-String type = '$buffer';
-""");
-        arguments.add("'type': _type");
-        break;
-
       case "type2":
-        parameters.add("DartType _type2");
+      case "type3":
+        parameters.add("DartType _${name}");
         ensureNameSystem();
-        conversions.add(r"""
+        conversions.add("""
 buffer = new StringBuffer();
-new Printer(buffer, syntheticNames: nameSystem).writeNode(_type2);
-String type2 = '$buffer';
+new Printer(buffer, syntheticNames: nameSystem).writeNode(_${name});
+String ${name} = '\$buffer';
 """);
-        arguments.add("'type2': _type2");
+        arguments.add("'${name}': _${name}");
         break;
 
       case "uri":
diff --git a/pkg/front_end/tool/example.dart b/pkg/front_end/tool/example.dart
deleted file mode 100644
index 56966d1..0000000
--- a/pkg/front_end/tool/example.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-
-import 'dart:async';
-
-import 'package:front_end/src/api_prototype/kernel_generator.dart';
-import 'package:front_end/src/api_prototype/compiler_options.dart';
-import 'package:kernel/binary/ast_to_binary.dart';
-import 'package:kernel/kernel.dart' show Component;
-
-Future dumpToSink(Component component, StreamSink<List<int>> sink) {
-  new BinaryPrinter(sink).writeComponentFile(component);
-  return sink.close();
-}
-
-Future kernelToSink(Uri entry, StreamSink<List<int>> sink) async {
-  var component = await kernelForProgram(
-      entry,
-      new CompilerOptions()
-        ..sdkRoot = new Uri.file('sdk')
-        ..packagesFileUri = new Uri.file('.packages')
-        ..onError = (e) => print(e.message));
-
-  await dumpToSink(component, sink);
-}
-
-main(args) async {
-  kernelToSink(
-      Uri.base.resolve(args[0]),
-      // TODO(sigmund,hausner): define memory type where to dump binary data.
-      new StreamController<List<int>>.broadcast().sink);
-}
diff --git a/pkg/front_end/tool/fasta_perf.dart b/pkg/front_end/tool/fasta_perf.dart
index aa76831..56095b6 100644
--- a/pkg/front_end/tool/fasta_perf.dart
+++ b/pkg/front_end/tool/fasta_perf.dart
@@ -94,7 +94,7 @@
     ..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)
+    ..onDiagnostic = onDiagnosticMessageHandler(false)
     ..compileSdk = true
     ..packagesFileUri = Uri.base.resolve('.packages')
     ..target = createTarget(isFlutter: false, strongMode: strongMode);
@@ -230,9 +230,8 @@
   var timer = new Stopwatch()..start();
   var options = new CompilerOptions()
     ..sdkRoot = sdkRoot
-    ..reportMessages = true
-    ..onError = onErrorHandler(strongMode)
-    ..strongMode = strongMode
+    ..onDiagnostic = onDiagnosticMessageHandler(strongMode)
+    ..legacyMode = !strongMode
     ..target = createTarget(isFlutter: false, strongMode: strongMode)
     ..packagesFileUri = Uri.base.resolve('.packages')
     ..compileSdk = compileSdk;
diff --git a/pkg/front_end/tool/incremental_perf.dart b/pkg/front_end/tool/incremental_perf.dart
index 803b94b..caec1bd 100644
--- a/pkg/front_end/tool/incremental_perf.dart
+++ b/pkg/front_end/tool/incremental_perf.dart
@@ -111,8 +111,8 @@
   var compilerOptions = new CompilerOptions()
     ..verbose = verboseCompilation
     ..fileSystem = overlayFs
-    ..strongMode = strongMode
-    ..onError = onErrorHandler(strongMode)
+    ..legacyMode = !strongMode
+    ..onDiagnostic = onDiagnosticMessageHandler(strongMode)
     ..target = createTarget(isFlutter: isFlutter, strongMode: strongMode);
   if (sdkSummary != null) {
     compilerOptions.sdkSummary = _resolveOverlayUri(sdkSummary);
diff --git a/pkg/front_end/tool/incremental_perf_test.dart b/pkg/front_end/tool/incremental_perf_test.dart
index 5da9ee5..f14b847 100644
--- a/pkg/front_end/tool/incremental_perf_test.dart
+++ b/pkg/front_end/tool/incremental_perf_test.dart
@@ -10,7 +10,7 @@
 import 'incremental_perf.dart' as m;
 
 main() async {
-  var sdkOutline = computePlatformBinariesLocation().resolve(
+  var sdkOutline = computePlatformBinariesLocation(forceBuildDir: true).resolve(
       // TODO(sigmund): switch to `vm_outline.dill` (issue #29881).
       "vm_platform.dill");
 
diff --git a/pkg/front_end/tool/perf_common.dart b/pkg/front_end/tool/perf_common.dart
index 085e50b..24a4525 100644
--- a/pkg/front_end/tool/perf_common.dart
+++ b/pkg/front_end/tool/perf_common.dart
@@ -13,13 +13,15 @@
 
 import 'package:vm/target/vm.dart' show VmTarget;
 
-import 'package:front_end/src/api_prototype/front_end.dart'
-    show CompilationMessage;
+import 'package:front_end/src/api_prototype/diagnostic_message.dart'
+    show DiagnosticMessage, DiagnosticMessageHandler, getMessageCodeObject;
+
+import 'package:front_end/src/api_prototype/terminal_color_support.dart'
+    show printDiagnosticMessage;
 
 import 'package:front_end/src/fasta/fasta_codes.dart' as fastaCodes;
 
-import 'package:front_end/src/fasta/severity.dart'
-    show Severity, severityPrefixes;
+import 'package:front_end/src/fasta/severity.dart' show Severity;
 
 /// Error messages that we temporarily allow when compiling benchmarks in strong
 /// mode.
@@ -31,31 +33,29 @@
 /// Note: the performance bots compile both dart2js and the flutter-gallery app
 /// as benchmarks, so they both need to be checked before we remove a message
 /// from this set.
-final whitelistMessageCode = new Set<String>.from(<String>[
+final whitelistMessageCode = new Set<fastaCodes.Code>.from(<fastaCodes.Code>[
   // Code names in this list should match the key used in messages.yaml
-  fastaCodes.codeInvalidAssignment.name,
-  fastaCodes.codeOverrideTypeMismatchParameter.name,
-  fastaCodes.codeOverriddenMethodCause.name,
+  fastaCodes.codeInvalidAssignment,
+  fastaCodes.codeOverrideTypeMismatchParameter,
+  fastaCodes.codeOverriddenMethodCause,
 
   // The following errors are not covered by unit tests in the SDK repo because
   // they are only seen today in the flutter-gallery benchmark (external to
   // this repo).
-  fastaCodes.codeInvalidCastFunctionExpr.name,
-  fastaCodes.codeInvalidCastTopLevelFunction.name,
-  fastaCodes.codeUndefinedGetter.name,
-  fastaCodes.codeUndefinedMethod.name,
+  fastaCodes.codeInvalidCastFunctionExpr,
+  fastaCodes.codeInvalidCastTopLevelFunction,
+  fastaCodes.codeUndefinedGetter,
+  fastaCodes.codeUndefinedMethod,
 ]);
 
-onErrorHandler(bool isStrong) {
+DiagnosticMessageHandler onDiagnosticMessageHandler(bool isStrong) {
   bool messageReported = false;
-  return (CompilationMessage m) {
+  return (DiagnosticMessage m) {
     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 ?? "?";
-        stderr.writeln('$uri:$offset: '
-            '${severityPrefixes[m.severity]}: ${m.message}');
+      if (!isStrong ||
+          !whitelistMessageCode.contains(getMessageCodeObject(m))) {
+        printDiagnosticMessage(m, stderr.writeln);
         exitCode = 1;
       } else if (!messageReported) {
         messageReported = true;
@@ -71,7 +71,7 @@
 // strongMode flag get merged, and we have a single way of specifying the
 // strong-mode flag to the FE.
 Target createTarget({bool isFlutter: false, bool strongMode: true}) {
-  var flags = new TargetFlags(strongMode: strongMode);
+  var flags = new TargetFlags(legacyMode: !strongMode);
   if (isFlutter) {
     return strongMode
         ? new FlutterTarget(flags)
diff --git a/pkg/js_ast/lib/src/builder.dart b/pkg/js_ast/lib/src/builder.dart
index 414f8b0..635549b 100644
--- a/pkg/js_ast/lib/src/builder.dart
+++ b/pkg/js_ast/lib/src/builder.dart
@@ -19,7 +19,7 @@
 
 /**
 
-[js] is a singleton instace of JsBuilder.  JsBuilder is a set of conveniences
+[js] is a singleton instance of JsBuilder.  JsBuilder is a set of conveniences
 for constructing JavaScript ASTs.
 
 [string] and [number] are used to create leaf AST nodes:
@@ -60,7 +60,7 @@
       return 123;
 
 If the placeholder is not followed by a semicolon, it is part of an expression.
-Here the paceholder is in the position of the function in a function call:
+Here the placeholder is in the position of the function in a function call:
 
     var vFoo = new VariableUse('foo');
     js.statement('if (happy) #("Happy!")', vFoo)
@@ -71,7 +71,7 @@
 Generally, a placeholder in an expression position requires an Expression AST as
 an argument and a placeholder in a statement position requires a Statement AST.
 An expression will be converted to a Statement if needed by creating an
-ExpessionStatement.  A String argument will be converted into a VariableUse and
+ExpressionStatement.  A String argument will be converted into a VariableUse and
 requires that the string is a JavaScript identifier.
 
     js('# + 1', vFoo)       -->  foo + 1
@@ -146,7 +146,7 @@
     js.statement('if (#) return;', eTrue)  -->  if (true) return;
 
 Combined with block splicing, if-statement condition context placeholders allows
-the creation of tenplates that select code depending on variables.
+the creation of templates that select code depending on variables.
 
     js.statement('{ 1; if (#) 2; else { 3; 4; } 5;}', true)
     --> { 1; 2; 5; }
@@ -168,10 +168,10 @@
     js('a.#', 'x')    -->  a.x        (i.e. a["x"])
 
 (Question - should `.#` be restricted to permit only String arguments? The
-template should probably be writted with `[]` if non-strings are accepted.)
+template should probably be written with `[]` if non-strings are accepted.)
 
 
-Object initialiers allow placeholders in the key property name position:
+Object initializers allow placeholders in the key property name position:
 
     js('{#:1, #:2}',  [s, 'bye'])    -->  {hello: 1, bye: 2}
 
diff --git a/pkg/js_ast/pubspec.yaml b/pkg/js_ast/pubspec.yaml
index 6994e78..00ce647 100644
--- a/pkg/js_ast/pubspec.yaml
+++ b/pkg/js_ast/pubspec.yaml
@@ -3,6 +3,6 @@
 description: Library creating and printing JavaScript ASTs.
 homepage: http://www.dartlang.org
 dev_dependencies:
-  test: '^0.12.29'
+  test: ^1.3.4
 environment:
   sdk: ">=0.8.10+6 <2.0.0"
diff --git a/pkg/kernel/bin/eval.dart b/pkg/kernel/bin/eval.dart
deleted file mode 100755
index 3d26780..0000000
--- a/pkg/kernel/bin/eval.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env 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.
-
-import 'dart:io';
-
-import 'package:kernel/kernel.dart';
-import 'package:kernel/interpreter/interpreter.dart';
-import 'package:kernel/src/tool/command_line_util.dart';
-
-void usage() {
-  print("Interpreter for a dill file.");
-  print("");
-  print("Usage: dart <script> dillFile.dill");
-  print("The given argument should be an existing file");
-  print("that is valid to load as a dill file.");
-  exit(1);
-}
-
-main(List<String> args) {
-  CommandLineHelper.requireExactlyOneArgument(args, usage,
-      requireFileExists: true);
-  Component component = CommandLineHelper.tryLoadDill(args[0]);
-  new Interpreter(component).run();
-}
diff --git a/pkg/kernel/bin/transform.dart b/pkg/kernel/bin/transform.dart
index 9523e33..9e30c76 100755
--- a/pkg/kernel/bin/transform.dart
+++ b/pkg/kernel/bin/transform.dart
@@ -101,11 +101,12 @@
       final Map<String, String> defines = null;
       final VmConstantsBackend backend =
           new VmConstantsBackend(defines, coreTypes);
-      component = constants.transformComponent(component, backend);
+      component =
+          constants.transformComponent(component, backend, legacyMode: true);
       break;
     case 'treeshake':
       component = treeshaker.transformComponent(coreTypes, hierarchy, component,
-          programRoots: programRoots);
+          programRoots: programRoots, legacyMode: true);
       break;
     case 'methodcall':
       component =
diff --git a/pkg/kernel/lib/analyzer/readme.md b/pkg/kernel/lib/analyzer/readme.md
deleted file mode 100644
index 5c49769..0000000
--- a/pkg/kernel/lib/analyzer/readme.md
+++ /dev/null
@@ -1 +0,0 @@
-A frontend using the Dart analyzer.
diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart
index 76cafc1..43e3535 100644
--- a/pkg/kernel/lib/ast.dart
+++ b/pkg/kernel/lib/ast.dart
@@ -285,7 +285,7 @@
   /// other than [ClassLevel.Body].  Members in an external library have no
   /// body, but have their typed interface present.
   ///
-  /// If the libary is non-external, then its classes are at [ClassLevel.Body]
+  /// If the library is non-external, then its classes are at [ClassLevel.Body]
   /// and all members are loaded.
   bool isExternal;
 
@@ -793,21 +793,20 @@
     // Not a mixin declaration.
     if (!isMixinDeclaration) return constraints;
 
-    Class previous = this;
-    Class current = superclass;
-
     // Otherwise we have a left-linear binary tree (subtrees are supertype and
     // mixedInType) of constraints, where all the interior nodes are anonymous
     // mixin applications.
-    while (current != null && current.isAnonymousMixin) {
-      assert(current.implementedTypes.length == 2);
-      constraints.add(current.implementedTypes[1]);
-      previous = current;
-      current = current.implementedTypes[0].classNode;
+    Supertype current = supertype;
+    while (current != null && current.classNode.isAnonymousMixin) {
+      Class currentClass = current.classNode;
+      assert(currentClass.implementedTypes.length == 2);
+      Substitution substitution = Substitution.fromSupertype(current);
+      constraints.add(
+          substitution.substituteSupertype(currentClass.implementedTypes[1]));
+      current =
+          substitution.substituteSupertype(currentClass.implementedTypes[0]);
     }
-    return constraints
-      ..add(
-          previous == this ? previous.supertype : previous.implementedTypes[0]);
+    return constraints..add(current);
   }
 
   /// The URI of the source file this class was loaded from.
diff --git a/pkg/kernel/lib/class_hierarchy.dart b/pkg/kernel/lib/class_hierarchy.dart
index 6082e81..214572a 100644
--- a/pkg/kernel/lib/class_hierarchy.dart
+++ b/pkg/kernel/lib/class_hierarchy.dart
@@ -42,6 +42,11 @@
   /// True if the component contains another class that is a subtype of given one.
   bool hasProperSubtypes(Class class_);
 
+  // Returns the instantition of each generic supertype implemented by this
+  // class (e.g. getClassAsInstanceOf applied to all superclasses and
+  // interfaces).
+  List<Supertype> genericSupertypesOf(Class class_);
+
   /// Returns the least upper bound of two interface types, as defined by Dart
   /// 1.0.
   ///
@@ -700,6 +705,15 @@
   }
 
   @override
+  List<Supertype> genericSupertypesOf(Class class_) {
+    final supertypes = _infoFor[class_].genericSuperTypes;
+    if (supertypes == null) return const <Supertype>[];
+    // Multiple supertypes can arise from ambiguous supertypes. The first
+    // supertype is the real one; the others are purely informational.
+    return supertypes.values.map((v) => v.first).toList();
+  }
+
+  @override
   ClassHierarchy applyTreeChanges(Iterable<Library> removedLibraries,
       Iterable<Library> ensureKnownLibraries,
       {Component reissueAmbiguousSupertypesFor}) {
@@ -1339,7 +1353,7 @@
   /// Maps generic supertype classes to the instantiation implemented by this
   /// class.
   ///
-  /// E.g. `List` maps to `List<String>` for a class that directly of indirectly
+  /// E.g. `List` maps to `List<String>` for a class that directly or indirectly
   /// implements `List<String>`.
   Map<Class, List<Supertype>> genericSuperTypes;
 
diff --git a/pkg/kernel/lib/interpreter/interpreter.dart b/pkg/kernel/lib/interpreter/interpreter.dart
deleted file mode 100644
index 598d400..0000000
--- a/pkg/kernel/lib/interpreter/interpreter.dart
+++ /dev/null
@@ -1,2153 +0,0 @@
-// 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.
-library kernel.interpreter;
-
-import '../ast.dart';
-import '../ast.dart' as ast show Class;
-
-import '../log.dart';
-export '../log.dart';
-
-class NotImplemented {
-  String message;
-
-  NotImplemented(this.message);
-
-  String toString() => message;
-}
-
-class Interpreter {
-  // The execution of the program starts with empty main environment.
-  static MainEnvironment mainEnvironment =
-      new MainEnvironment(<Member, Location>{});
-
-  final Component component;
-  final StatementExecuter visitor = new StatementExecuter();
-
-  Interpreter(this.component);
-
-  void run() {
-    assert(component.libraries.isEmpty);
-    Procedure mainMethod = component.mainMethod;
-
-    if (mainMethod == null) return;
-
-    Statement statementBlock = mainMethod.function.body;
-    ExecConfiguration configuration = new ExecConfiguration(
-        statementBlock, new Environment.empty(), new State.initial());
-    visitor.trampolinedExecution(configuration);
-  }
-}
-
-class Location {
-  Value value;
-
-  Location.empty();
-  Location(this.value);
-}
-
-class Binding {
-  final VariableDeclaration variable;
-  final Location location;
-
-  Binding(this.variable, this.location);
-}
-
-/// Represents the top level environment that binds previously accessed or set
-/// static fields to the location that stores their value.
-class MainEnvironment {
-  final Map<Member, Location> _staticFields;
-
-  MainEnvironment(this._staticFields);
-
-  bool contains(Member member) => _staticFields[member] != null;
-
-  Value lookup(Member member) {
-    assert(contains(member));
-    return _staticFields[member].value;
-  }
-
-  void updateStore(Member member, Value value) {
-    assert(contains(member));
-    _staticFields[member].value = value;
-  }
-
-  MainEnvironment extend(Member member, Value value) {
-    var newMap = new Map<Member, Location>.from(_staticFields);
-    newMap[member] = new Location(value);
-    return new MainEnvironment(newMap);
-  }
-}
-
-class Environment {
-  final List<Binding> bindings = <Binding>[];
-  final Environment parent;
-
-  Value get thisInstance {
-    return containsThis()
-        ? lookupThis().value
-        : throw "Invalid reference to 'this' expression";
-  }
-
-  Environment.empty() : parent = null;
-  Environment(this.parent);
-
-  bool contains(VariableDeclaration variable) {
-    for (Binding b in bindings) {
-      if (identical(b.variable, variable)) return true;
-    }
-    return parent?.contains(variable) ?? false;
-  }
-
-  bool containsThis() {
-    for (Binding b in bindings) {
-      if (identical(b.variable.name, 'this')) return true;
-    }
-    return parent?.containsThis() ?? false;
-  }
-
-  Binding lookupBinding(VariableDeclaration variable) {
-    assert(contains(variable));
-    for (Binding b in bindings) {
-      if (identical(b.variable, variable)) return b;
-    }
-    return parent.lookupBinding(variable);
-  }
-
-  Location lookupThis() {
-    assert(containsThis());
-    for (Binding b in bindings) {
-      if (identical(b.variable.name, 'this')) return b.location;
-    }
-    return parent.lookupThis();
-  }
-
-  Value lookup(VariableDeclaration variable) {
-    return lookupBinding(variable).location.value;
-  }
-
-  void updateStore(VariableDeclaration variable, Value value) {
-    assert(contains(variable));
-    lookupBinding(variable).location.value = value;
-  }
-
-  Environment extend(VariableDeclaration variable, Value value) {
-    assert(!contains(variable));
-    return new Environment(this)
-      ..bindings.add(new Binding(variable, new Location(value)));
-  }
-
-  Environment extendWithThis(ObjectValue v) {
-    assert(!containsThis());
-    return extend(new VariableDeclaration('this'), v);
-  }
-}
-
-/// Evaluate expressions.
-class Evaluator extends ExpressionVisitor1<Configuration, EvalConfiguration> {
-  Configuration eval(Expression expr, EvalConfiguration config) =>
-      expr.accept1(this, config);
-
-  Configuration evalList(List<InterpreterExpression> list, Environment env,
-      ExceptionComponents exceptionComponents, ApplicationContinuation cont) {
-    if (list.isNotEmpty) {
-      return new EvalConfiguration(
-          list.first.expression,
-          env,
-          exceptionComponents,
-          new ExpressionListEK(
-              list.first, list.skip(1), env, exceptionComponents, cont));
-    }
-    return new ApplicationConfiguration(cont, <InterpreterValue>[]);
-  }
-
-  Configuration defaultExpression(Expression node, EvalConfiguration config) {
-    throw new NotImplemented('Evaluation for expressions of type '
-        '${node.runtimeType} is not implemented.');
-  }
-
-  Configuration visitInvalidExpression1(
-      InvalidExpression node, EvalConfiguration config) {
-    throw 'Invalid expression at ${node.location.toString()}';
-  }
-
-  Configuration visitVariableGet(VariableGet node, EvalConfiguration config) {
-    Value value = config.environment.lookup(node.variable);
-    return new ValuePassingConfiguration(config.continuation, value);
-  }
-
-  Configuration visitVariableSet(VariableSet node, EvalConfiguration config) {
-    var cont = new VariableSetEK(
-        node.variable, config.environment, config.continuation);
-    return new EvalConfiguration(
-        node.value, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitPropertyGet(PropertyGet node, EvalConfiguration config) {
-    var cont = new PropertyGetEK(
-        node.name, config.exceptionComponents, config.continuation);
-    return new EvalConfiguration(
-        node.receiver, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitPropertySet(PropertySet node, EvalConfiguration config) {
-    var cont = new PropertySetEK(node.value, node.name, config.environment,
-        config.exceptionComponents, config.continuation);
-    return new EvalConfiguration(
-        node.receiver, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitStaticGet(StaticGet node, EvalConfiguration config) {
-    Member member = node.target;
-
-    if (member is Procedure && !member.isAccessor) {
-      // Create a closure for the method tear off.
-      var v = new FunctionValue(member.function, new Environment.empty());
-      return new ValuePassingConfiguration(config.continuation, v);
-    }
-
-    if (member is Procedure && member.isGetter) {
-      // Execute the body of the getter.
-      var state = new State.initial()
-          .withReturnContinuation(config.continuation)
-          .withContinuation(new ExitSK(config.continuation, Value.nullInstance))
-          .withException(config.exceptionComponents);
-      return new ExecConfiguration(
-          member.function.body, new Environment.empty(), state);
-    }
-
-    assert(member is Field);
-    if (Interpreter.mainEnvironment.contains(member)) {
-      // Read the value for the member in the main environment.
-      return new ValuePassingConfiguration(
-          config.continuation, Interpreter.mainEnvironment.lookup(member));
-    }
-
-    // Otherwise, the static field is accessed for the first time.
-    // We extend the main environment with a new binding.
-    Interpreter.mainEnvironment =
-        Interpreter.mainEnvironment.extend(member, Value.nullInstance);
-
-    if ((member as Field).initializer == null) {
-      return new ValuePassingConfiguration(
-          config.continuation, Value.nullInstance);
-    }
-
-    // The initializer expression is evaluated otherwise.
-    var cont = new StaticSetEK(member, config.continuation);
-    return new EvalConfiguration((member as Field).initializer,
-        new Environment.empty(), config.exceptionComponents, cont);
-  }
-
-  Configuration visitStaticSet(StaticSet node, EvalConfiguration config) {
-    Member member = node.target;
-    ExpressionContinuation cont;
-
-    if (member is Procedure) {
-      assert(member.isSetter);
-      cont = new StaticSetterEK(
-          member.function, config.exceptionComponents, config.continuation);
-    } else {
-      assert(member is Field);
-      cont = new StaticSetEK(member, config.continuation);
-    }
-
-    return new EvalConfiguration(
-        node.value, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitStaticInvocation(
-      StaticInvocation node, EvalConfiguration config) {
-    if ('print' == node.name.toString()) {
-      var cont = new PrintEK(config.continuation);
-      return new EvalConfiguration(node.arguments.positional.first,
-          config.environment, config.exceptionComponents, cont);
-    } else {
-      log.info('static-invocation-${node.target.name.toString()}\n');
-
-      List<InterpreterExpression> args =
-          _getArgumentExpressions(node.arguments, node.target.function);
-      ApplicationContinuation cont = new StaticInvocationA(node.target.function,
-          config.exceptionComponents, config.continuation);
-      return new EvalListConfiguration(
-          args, config.environment, config.exceptionComponents, cont);
-    }
-  }
-
-  Configuration visitMethodInvocation(
-      MethodInvocation node, EvalConfiguration config) {
-    // Currently supports only method invocation with <2 arguments and is used
-    // to evaluate implemented operators for int, double and String values.
-    var cont = new MethodInvocationEK(node.arguments, node.name,
-        config.environment, config.exceptionComponents, config.continuation);
-
-    return new EvalConfiguration(
-        node.receiver, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitConstructorInvocation(
-      ConstructorInvocation node, EvalConfiguration config) {
-    ApplicationContinuation cont = new ConstructorInvocationA(
-        node.target, config.exceptionComponents, config.continuation);
-    var args = _getArgumentExpressions(node.arguments, node.target.function);
-
-    return new EvalListConfiguration(
-        args, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitNot(Not node, EvalConfiguration config) {
-    return new EvalConfiguration(node.operand, config.environment,
-        config.exceptionComponents, new NotEK(config.continuation));
-  }
-
-  Configuration visitLogicalExpression(
-      LogicalExpression node, EvalConfiguration config) {
-    if ('||' == node.operator) {
-      var cont = new OrEK(node.right, config.environment,
-          config.exceptionComponents, config.continuation);
-      return new EvalConfiguration(
-          node.left, config.environment, config.exceptionComponents, cont);
-    } else {
-      assert('&&' == node.operator);
-      var cont = new AndEK(node.right, config.environment,
-          config.exceptionComponents, config.continuation);
-      return new EvalConfiguration(
-          node.left, config.environment, config.exceptionComponents, cont);
-    }
-  }
-
-  Configuration visitConditionalExpression(
-      ConditionalExpression node, EvalConfiguration config) {
-    var cont = new ConditionalEK(node.then, node.otherwise, config.environment,
-        config.exceptionComponents, config.continuation);
-    return new EvalConfiguration(
-        node.condition, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitStringConcatenation(
-      StringConcatenation node, EvalConfiguration config) {
-    var cont = new StringConcatenationA(config.continuation);
-    var expressions = node.expressions
-        .map((Expression e) => new PositionalExpression(e))
-        .toList();
-    return new EvalListConfiguration(
-        expressions, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitThisExpression(
-      ThisExpression node, EvalConfiguration config) {
-    return new ValuePassingConfiguration(
-        config.continuation, config.environment.thisInstance);
-  }
-
-  Configuration visitThrow(Throw node, EvalConfiguration config) {
-    var cont = new ThrowEK(config.exceptionComponents);
-
-    return new EvalConfiguration(
-        node.expression, config.environment, config.exceptionComponents, cont);
-  }
-
-  Configuration visitFunctionExpression(
-      FunctionExpression node, EvalConfiguration config) {
-    var val = new FunctionValue(node.function, config.environment);
-    return new ValuePassingConfiguration(config.continuation, val);
-  }
-
-  // Evaluation of BasicLiterals.
-  Configuration visitStringLiteral(
-      StringLiteral node, EvalConfiguration config) {
-    return new ValuePassingConfiguration(
-        config.continuation, new StringValue(node.value));
-  }
-
-  Configuration visitIntLiteral(IntLiteral node, EvalConfiguration config) {
-    return new ValuePassingConfiguration(
-        config.continuation, new IntValue(node.value));
-  }
-
-  Configuration visitDoubleLiteral(
-      DoubleLiteral node, EvalConfiguration config) {
-    return new ValuePassingConfiguration(
-        config.continuation, new DoubleValue(node.value));
-  }
-
-  Configuration visitBoolLiteral(BoolLiteral node, EvalConfiguration config) {
-    Value value = node.value ? Value.trueInstance : Value.falseInstance;
-    return new ValuePassingConfiguration(config.continuation, value);
-  }
-
-  Configuration visitNullLiteral(NullLiteral node, EvalConfiguration config) {
-    return new ValuePassingConfiguration(
-        config.continuation, Value.nullInstance);
-  }
-
-  Configuration visitLet(Let node, EvalConfiguration config) {
-    var letCont = new LetEK(node.variable, node.body, config.environment,
-        config.exceptionComponents, config.continuation);
-    return new EvalConfiguration(node.variable.initializer, config.environment,
-        config.exceptionComponents, letCont);
-  }
-}
-
-/// Represents a state for statement execution.
-class State {
-  final Label labels;
-  // TODO: Add switch labels.
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation returnContinuation;
-  final StatementContinuation continuation;
-
-  State(this.labels, this.exceptionComponents, this.returnContinuation,
-      this.continuation);
-
-  State.initial()
-      : labels = null,
-        exceptionComponents = new ExceptionComponents.initial(),
-        returnContinuation = null,
-        continuation = null;
-
-  State withBreak(Statement stmt, Environment env) {
-    var cont = new BreakBK(continuation, env);
-    Label breakLabels = new Label(stmt, cont, labels);
-    return new State(
-        breakLabels, exceptionComponents, returnContinuation, continuation);
-  }
-
-  State withReturnContinuation(ExpressionContinuation returnCont) {
-    return new State(labels, exceptionComponents, returnCont, continuation);
-  }
-
-  State withContinuation(StatementContinuation cont) {
-    return new State(labels, exceptionComponents, returnContinuation, cont);
-  }
-
-  State withException(ExceptionComponents ecs) {
-    return new State(labels, ecs, returnContinuation, continuation);
-  }
-
-  Label lookupLabel(LabeledStatement s) {
-    assert(labels != null);
-    return labels.lookupLabel(s);
-  }
-}
-
-/// Represents a labeled statement, the corresponding continuation and the
-/// enclosing label.
-class Label {
-  final LabeledStatement statement;
-  final BreakContinuation continuation;
-  final Label enclosingLabel;
-
-  Label(this.statement, this.continuation, this.enclosingLabel);
-
-  Label lookupLabel(LabeledStatement s) {
-    if (identical(s, statement)) return this;
-    assert(enclosingLabel != null);
-    return enclosingLabel.lookupLabel(s);
-  }
-
-  // Recursively install finally break to all labels.
-  Label withFinalizer(Statement finalizer, Environment env, State state) {
-    var label = enclosingLabel?.withFinalizer(finalizer, env, state);
-    var finallyCont = new FinallyBK(finalizer, env, state, continuation);
-    return new Label(statement, finallyCont, label);
-  }
-}
-
-// ------------------------------------------------------------------------
-//                           Configurations
-// ------------------------------------------------------------------------
-
-abstract class Configuration {
-  /// Executes the current and returns the next configuration.
-  Configuration step(StatementExecuter executer);
-}
-
-/// Configuration for evaluating an [Expression].
-class EvalConfiguration extends Configuration {
-  final Expression expression;
-
-  /// Environment in which the expression is evaluated.
-  final Environment environment;
-
-  /// Exception components.
-  final ExceptionComponents exceptionComponents;
-
-  /// Next continuation to be applied.
-  final Continuation continuation;
-
-  EvalConfiguration(this.expression, this.environment, this.exceptionComponents,
-      this.continuation);
-
-  Configuration step(StatementExecuter executer) =>
-      executer.eval(expression, this);
-}
-
-/// Configuration for evaluating a `List<InterpreterExpression>`.
-class EvalListConfiguration extends Configuration {
-  final List<InterpreterExpression> expressions;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ApplicationContinuation continuation;
-
-  EvalListConfiguration(this.expressions, this.environment,
-      this.exceptionComponents, this.continuation);
-
-  Configuration step(StatementExecuter executer) => executer.evalList(
-      expressions, environment, exceptionComponents, continuation);
-}
-
-/// Configuration for execution of a [Statement].
-class ExecConfiguration extends Configuration {
-  final Statement currentStatement;
-  final Environment environment;
-  final State state;
-
-  ExecConfiguration(this.currentStatement, this.environment, this.state);
-
-  Configuration step(StatementExecuter executer) {
-    return executer.exec(currentStatement, this);
-  }
-}
-
-/// Configuration for applying a [StatementContinuation] to an [Environment].
-class ForwardConfiguration extends Configuration {
-  final StatementContinuation continuation;
-  final Environment environment;
-
-  ForwardConfiguration(this.continuation, this.environment);
-
-  Configuration step(StatementExecuter _) => continuation?.call(environment);
-}
-
-/// Configuration for applying [ExpressionContinuation] to a [Value].
-class ValuePassingConfiguration extends Configuration {
-  final ExpressionContinuation continuation;
-  final Value value;
-
-  ValuePassingConfiguration(this.continuation, this.value);
-
-  Configuration step(StatementExecuter _) => continuation(value);
-}
-
-/// Configuration for applying an [ApplicationContinuation] to a
-/// `List<InterpreterValue>`.
-class ApplicationConfiguration extends Configuration {
-  final ApplicationContinuation continuation;
-  final List<InterpreterValue> values;
-
-  ApplicationConfiguration(this.continuation, this.values);
-
-  Configuration step(StatementExecuter _) => continuation(values);
-}
-
-/// Configuration for applying an [ExceptionHandler] to an exception and a
-/// stack trace.
-class ThrowConfiguration extends Configuration {
-  final ExceptionHandler handler;
-  final Value exception;
-  final StackTrace stacktrace;
-
-  ThrowConfiguration(this.handler, this.exception, this.stacktrace);
-
-  Configuration step(StatementExecuter _) => handler(exception, stacktrace);
-}
-
-class BreakConfiguration extends Configuration {
-  final BreakContinuation continuation;
-
-  BreakConfiguration(this.continuation);
-
-  Configuration step(StatementExecuter _) => continuation();
-}
-
-abstract class BreakContinuation extends Continuation {
-  Configuration call();
-}
-
-class BreakBK extends BreakContinuation {
-  final StatementContinuation continuation;
-  final Environment environment;
-
-  BreakBK(this.continuation, this.environment);
-
-  Configuration call() => new ForwardConfiguration(continuation, environment);
-}
-
-class FinallyBK extends BreakContinuation {
-  final Statement finalizer;
-  final Environment environment;
-  final State state;
-  final BreakContinuation continuation;
-
-  FinallyBK(this.finalizer, this.environment, this.state, this.continuation);
-
-  Configuration call() {
-    var cont = new BreakSK(continuation);
-    return new ExecConfiguration(
-        finalizer, environment, state.withContinuation(cont));
-  }
-}
-
-class BreakSK extends StatementContinuation {
-  final BreakContinuation continuation;
-
-  BreakSK(this.continuation);
-
-  Configuration call(Environment _) => new BreakConfiguration(continuation);
-}
-
-// ------------------------------------------------------------------------
-//            Interpreter Expressions and Values
-// ------------------------------------------------------------------------
-
-abstract class InterpreterExpression {
-  Expression get expression;
-
-  InterpreterValue assignValue(Value v);
-}
-
-class PositionalExpression extends InterpreterExpression {
-  final Expression expression;
-
-  PositionalExpression(this.expression);
-
-  InterpreterValue assignValue(Value v) => new PositionalValue(v);
-}
-
-class NamedExpression extends InterpreterExpression {
-  final String name;
-  final Expression expression;
-
-  NamedExpression(this.name, this.expression);
-  InterpreterValue assignValue(Value v) => new NamedValue(name, v);
-}
-
-class FieldInitializerExpression extends InterpreterExpression {
-  final Field field;
-  final Expression expression;
-
-  FieldInitializerExpression(this.field, this.expression);
-
-  InterpreterValue assignValue(Value v) => new FieldInitializerValue(field, v);
-}
-
-abstract class InterpreterValue {
-  Value get value;
-}
-
-class PositionalValue extends InterpreterValue {
-  final Value value;
-
-  PositionalValue(this.value);
-}
-
-class NamedValue extends InterpreterValue {
-  final String name;
-  final Value value;
-
-  NamedValue(this.name, this.value);
-}
-
-class FieldInitializerValue extends InterpreterValue {
-  final Field field;
-  final Value value;
-
-  FieldInitializerValue(this.field, this.value);
-}
-
-abstract class Continuation {}
-
-// ------------------------------------------------------------------------
-//                        Statement Continuations
-// ------------------------------------------------------------------------
-
-/// Represents a the continuation for the execution of the next statement of
-/// the program.
-///
-/// There are various kinds of [StatementContinuation]s and their names are
-/// suffixed with "SK".
-abstract class StatementContinuation extends Continuation {
-  Configuration call(Environment env);
-}
-
-/// Applies the expression continuation to the provided value.
-class ExitSK extends StatementContinuation {
-  final ExpressionContinuation continuation;
-  final Value value;
-
-  ExitSK(this.continuation, this.value);
-
-  Configuration call(Environment _) =>
-      new ValuePassingConfiguration(continuation, value);
-}
-
-/// Executes the next statement from a block with the corresponding environment
-/// or proceeds with next statement continuation.
-class BlockSK extends StatementContinuation {
-  final List<Statement> statements;
-  final Environment enclosingEnv;
-  final State state;
-
-  BlockSK(this.statements, this.enclosingEnv, this.state);
-
-  BlockSK.fromConfig(this.statements, ExecConfiguration conf)
-      : enclosingEnv = conf.environment,
-        state = conf.state;
-
-  Configuration call(Environment env) {
-    if (statements.isEmpty) {
-      return new ForwardConfiguration(state.continuation, enclosingEnv);
-    }
-    // Proceed with the execution statement when there are some remaining to
-    // be executed.
-    var cont = new BlockSK(statements.skip(1).toList(), enclosingEnv, state);
-    return new ExecConfiguration(
-        statements.first, env, state.withContinuation(cont));
-  }
-}
-
-class WhileConditionSK extends StatementContinuation {
-  final Expression condition;
-  final Statement body;
-  final Environment enclosingEnv;
-  final State state;
-
-  WhileConditionSK(this.condition, this.body, this.enclosingEnv, this.state);
-
-  Configuration call(Environment _) {
-    // Evaluate the condition for the while loop execution.
-    var cont = new WhileConditionEK(condition, body, enclosingEnv, state);
-    return new EvalConfiguration(
-        condition, enclosingEnv, state.exceptionComponents, cont);
-  }
-}
-
-/// Applies the expression continuation to the provided value.
-class NewSK extends StatementContinuation {
-  final ExpressionContinuation continuation;
-  final Location location;
-
-  NewSK(this.continuation, this.location);
-
-  Configuration call(Environment _) =>
-      new ValuePassingConfiguration(continuation, location.value);
-}
-
-class ConstructorBodySK extends StatementContinuation {
-  final Statement body;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final StatementContinuation continuation;
-
-  ConstructorBodySK(
-      this.body, this.environment, this.exceptionComponents, this.continuation);
-
-  Configuration call(Environment _) {
-    return new ExecConfiguration(body, environment,
-        new State(null, exceptionComponents, null, continuation));
-  }
-}
-
-/// Represents the statement continuation for execution of the finalizer
-/// statement.
-class FinallySK extends StatementContinuation {
-  final Statement finallyStatement;
-  final Environment environment;
-  final State state;
-
-  FinallySK(this.finallyStatement, this.environment, this.state);
-  Configuration call(Environment _) {
-    return new ExecConfiguration(finallyStatement, environment, state);
-  }
-}
-
-/// Represents the statement continuation that applies the captured handler to
-/// the current exception.
-///
-/// It is used as next statement continuation for the execution of the finalizer
-/// statement in [TryFinally] to ensure the finalizer is executed before
-/// applying the next handler to the current exception.
-class RethrowSK extends StatementContinuation {
-  final ExceptionHandler handler;
-  final Value exception;
-  final StackTrace stackTrace;
-
-  RethrowSK(this.handler, this.exception, this.stackTrace);
-
-  Configuration call(Environment _) {
-    return new ThrowConfiguration(handler, exception, stackTrace);
-  }
-}
-
-// ------------------------------------------------------------------------
-//                       Application Continuations
-// ------------------------------------------------------------------------
-/// Represents the continuation called after the evaluation of argument
-/// expressions.
-///
-/// There are various kinds of [ApplicationContinuation] and their names are
-/// suffixed with "A".
-abstract class ApplicationContinuation extends Continuation {
-  Configuration call(List<InterpreterValue> values);
-
-  /// Binds actual argument values to formal parameters of the function in a
-  /// new environment or in the provided initial environment.
-  /// TODO: Add checks for validation of arguments according to spec.
-  static Environment createEnvironment(
-      FunctionNode function, List<InterpreterValue> args,
-      [Environment parentEnv]) {
-    Environment newEnv = new Environment(parentEnv ?? new Environment.empty());
-
-    List<PositionalValue> positional = args.reversed
-        .where((InterpreterValue av) => av is PositionalValue)
-        .toList();
-
-    // Add positional parameters.
-    for (int i = 0; i < positional.length; ++i) {
-      newEnv =
-          newEnv.extend(function.positionalParameters[i], positional[i].value);
-    }
-
-    Map<String, Value> named = <String, Value>{};
-    for (InterpreterValue argValue in args) {
-      if (argValue is NamedValue) {
-        named[argValue.name] = argValue.value;
-      }
-    }
-
-    // Add named parameters.
-    for (VariableDeclaration v in function.namedParameters) {
-      newEnv = newEnv.extend(v, named[v.name.toString()]);
-    }
-
-    return newEnv;
-  }
-}
-
-/// Represents the application continuation called after the evaluation of all
-/// argument expressions for an invocation.
-class ValueA extends ApplicationContinuation {
-  final InterpreterValue value;
-  final ApplicationContinuation applicationContinuation;
-
-  ValueA(this.value, this.applicationContinuation);
-
-  Configuration call(List<InterpreterValue> args) {
-    args.add(value);
-    return new ApplicationConfiguration(applicationContinuation, args);
-  }
-}
-
-class StringConcatenationA extends ApplicationContinuation {
-  final ExpressionContinuation continuation;
-
-  StringConcatenationA(this.continuation);
-
-  Configuration call(List<InterpreterValue> values) {
-    StringBuffer result = new StringBuffer();
-    for (InterpreterValue v in values.reversed) {
-      result.write(v.value.value);
-    }
-    return new ValuePassingConfiguration(
-        continuation, new StringValue(result.toString()));
-  }
-}
-
-/// Represents the application continuation for static invocation.
-class StaticInvocationA extends ApplicationContinuation {
-  final FunctionNode function;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  StaticInvocationA(this.function, this.exceptionComponents, this.continuation);
-
-  Configuration call(List<InterpreterValue> argValues) {
-    Environment functionEnv =
-        ApplicationContinuation.createEnvironment(function, argValues);
-    State bodyState = new State(null, exceptionComponents, continuation,
-        new ExitSK(continuation, Value.nullInstance));
-
-    return new ExecConfiguration(function.body, functionEnv, bodyState);
-  }
-}
-
-/// Represents the application continuation for constructor invocation applied
-/// on the list of evaluated arguments when a constructor is invoked with new.
-///
-/// It creates the newly allocated object instance.
-class ConstructorInvocationA extends ApplicationContinuation {
-  final Constructor constructor;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  ConstructorInvocationA(
-      this.constructor, this.exceptionComponents, this.continuation);
-
-  Configuration call(List<InterpreterValue> argValues) {
-    Environment ctrEnv = ApplicationContinuation.createEnvironment(
-        constructor.function, argValues);
-    var class_ = new Class(constructor.enclosingClass.reference);
-    var newObject = new ObjectValue(class_);
-    var cont = new InitializationEK(constructor, ctrEnv, exceptionComponents,
-        new NewSK(continuation, new Location(newObject)));
-
-    return new ValuePassingConfiguration(cont, newObject);
-  }
-}
-
-/// Represents the application continuation for constructor invocation applied
-/// on the list of evaluated arguments when a constructor is invoked in a
-/// constructor initializer list with a [RedirectingInitializer] or
-/// [SuperInitializer].
-class ConstructorInitializerA extends ApplicationContinuation {
-  final Constructor constructor;
-  final Location location;
-  final ExceptionComponents exceptionComponents;
-  final ConstructorBodySK continuation;
-
-  ConstructorInitializerA(this.constructor, this.location,
-      this.exceptionComponents, this.continuation);
-
-  Configuration call(List<InterpreterValue> vs) {
-    Environment ctrEnv =
-        ApplicationContinuation.createEnvironment(constructor.function, vs);
-    var cont = new InitializationEK(
-        constructor, ctrEnv, exceptionComponents, continuation);
-
-    return new ValuePassingConfiguration(cont, location.value);
-  }
-}
-
-/// Represents the application continuation applied on the list of evaluated
-/// field initializer expressions.
-class InstanceFieldsA extends ApplicationContinuation {
-  final Constructor constructor;
-  final Location location;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ConstructorBodySK continuation;
-
-  final Class _currentClass;
-
-  InstanceFieldsA(this.constructor, this.location, this.environment,
-      this.exceptionComponents, this.continuation)
-      : _currentClass = new Class(constructor.enclosingClass.reference);
-
-  Configuration call(List<InterpreterValue> fieldValues) {
-    for (FieldInitializerValue f in fieldValues) {
-      // Directly set the field with the corresponding implicit setter.
-      _currentClass.implicitSetters[f.field.name](location.value, f.value);
-    }
-
-    if (constructor.initializers.length == 0) {
-      // This can happen when initializing fields of a constructor with an empty
-      // initializer list.
-      return new ForwardConfiguration(continuation, environment);
-    }
-
-    if (constructor.initializers.first is SuperInitializer) {
-      // Target constructor is from the superclass `object`.
-      if (_currentClass.superclass.superclass == null) {
-        // TODO(zhivkag): Execute the constructor when support for
-        // native/external functions is added.
-        _initializeNullFields(_currentClass, location.value);
-        return new ForwardConfiguration(continuation, environment);
-      }
-
-      return _createEvalListConfig(constructor.initializers.first);
-    }
-
-    // Otherwise, the next expression from Field or Local initializers will be
-    // evaluated.
-    return _createEvalConfig(constructor.initializers.first);
-  }
-
-  Configuration _createEvalListConfig(SuperInitializer initializer) {
-    List<InterpreterExpression> args = _getArgumentExpressions(
-        initializer.arguments, initializer.target.function);
-    var cont = new ConstructorInitializerA(
-        initializer.target, location, exceptionComponents, continuation);
-
-    return new EvalListConfiguration(
-        args, environment, exceptionComponents, cont);
-  }
-
-  EvalConfiguration _createEvalConfig(Initializer initializer) {
-    Expression expr = (initializer is FieldInitializer)
-        ? initializer.value
-        : (initializer as LocalInitializer).variable.initializer;
-
-    // We start with index = 0 since we are evaluating the expression for the
-    // first initializer in the initializer list.
-    var cont = new InitializerListEK(constructor, 0, location, environment,
-        exceptionComponents, continuation);
-    return new EvalConfiguration(expr, environment, exceptionComponents, cont);
-  }
-}
-
-class FunctionValueA extends ApplicationContinuation {
-  final FunctionValue receiver;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation returnContinuation;
-
-  FunctionValueA(
-      this.receiver, this.exceptionComponents, this.returnContinuation);
-
-  Configuration call(List<InterpreterValue> vs) {
-    Environment env = ApplicationContinuation.createEnvironment(
-        receiver.function, vs, receiver.environment);
-    var scont = new ExitSK(returnContinuation, Value.nullInstance);
-    var state = new State(null, exceptionComponents, returnContinuation, scont);
-    return new ExecConfiguration(receiver.function.body, env, state);
-  }
-}
-
-// ------------------------------------------------------------------------
-//                           Expression Continuations
-// ------------------------------------------------------------------------
-
-/// Represents an expression continuation.
-///
-/// There are various kinds of [ExpressionContinuation]s and their names are
-/// suffixed with "EK".
-abstract class ExpressionContinuation extends Continuation {
-  Configuration call(Value v);
-}
-
-/// Represents a continuation that returns the next [ExecConfiguration]
-/// to be executed.
-class ExpressionEK extends ExpressionContinuation {
-  final StatementContinuation continuation;
-  final Environment environment;
-
-  ExpressionEK(this.continuation, this.environment);
-
-  Configuration call(Value _) {
-    return new ForwardConfiguration(continuation, environment);
-  }
-}
-
-class PrintEK extends ExpressionContinuation {
-  final ExpressionContinuation continuation;
-
-  PrintEK(this.continuation);
-
-  Configuration call(Value v) {
-    log.info('print(${v.value.runtimeType}: ${v.value})\n');
-    print(v.value);
-    return new ValuePassingConfiguration(continuation, Value.nullInstance);
-  }
-}
-
-class PropertyGetEK extends ExpressionContinuation {
-  final Name name;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  PropertyGetEK(this.name, this.exceptionComponents, this.continuation);
-
-  Configuration call(Value receiver) {
-    if (receiver.class_.isMethod(name)) {
-      var method = receiver.class_.lookup(name);
-      // Return the function value with this bound to receiver.
-      var env = new Environment.empty().extendWithThis(receiver);
-      return new ValuePassingConfiguration(
-          continuation, new FunctionValue(method, env));
-    }
-
-    if (receiver.class_.isGetter(name)) {
-      var getter = receiver.class_.lookup(name);
-      var state = new State.initial()
-          .withReturnContinuation(continuation)
-          .withContinuation(new ExitSK(continuation, Value.nullInstance))
-          .withException(exceptionComponents);
-      return new ExecConfiguration(
-          getter.body, new Environment.empty().extendWithThis(receiver), state);
-    }
-
-    Value propertyValue = receiver.class_.lookupImplicitGetter(name)(receiver);
-    return new ValuePassingConfiguration(continuation, propertyValue);
-  }
-}
-
-class PropertySetEK extends ExpressionContinuation {
-  final Expression value;
-  final Name setterName;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  PropertySetEK(this.value, this.setterName, this.environment,
-      this.exceptionComponents, this.continuation);
-
-  Configuration call(Value receiver) {
-    var cont =
-        new SetterEK(receiver, setterName, exceptionComponents, continuation);
-    return new EvalConfiguration(value, environment, exceptionComponents, cont);
-  }
-}
-
-class SetterEK extends ExpressionContinuation {
-  final Value receiver;
-  final Name name;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  SetterEK(
-      this.receiver, this.name, this.exceptionComponents, this.continuation);
-
-  Configuration call(Value v) {
-    if (receiver.class_.isSetter(name)) {
-      var setter = receiver.class_.lookup(name);
-      var env = new Environment.empty()
-          .extendWithThis(receiver)
-          .extend(setter.positionalParameters.first, v);
-      var state = new State.initial()
-          .withReturnContinuation(continuation)
-          .withContinuation(new ExitSK(continuation, Value.nullInstance))
-          .withException(exceptionComponents);
-      return new ExecConfiguration(setter.body, env, state);
-    }
-
-    Setter setter = receiver.class_.lookupImplicitSetter(name);
-    setter(receiver, v);
-    return new ValuePassingConfiguration(continuation, v);
-  }
-}
-
-class StaticSetEK extends ExpressionContinuation {
-  final Member member;
-  final ExpressionContinuation continuation;
-
-  StaticSetEK(this.member, this.continuation);
-
-  Configuration call(Value v) {
-    if (Interpreter.mainEnvironment.contains(member)) {
-      Interpreter.mainEnvironment.updateStore(member, v);
-    } else {
-      Interpreter.mainEnvironment =
-          Interpreter.mainEnvironment.extend(member, v);
-    }
-    return new ValuePassingConfiguration(continuation, v);
-  }
-}
-
-class StaticSetterEK extends ExpressionContinuation {
-  final FunctionNode setter;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation expressionContinuation;
-
-  StaticSetterEK(
-      this.setter, this.exceptionComponents, this.expressionContinuation);
-
-  Configuration call(Value v) {
-    VariableDeclaration arg = setter.positionalParameters.first;
-    var env = new Environment.empty().extend(arg, v);
-    var state = new State.initial()
-        .withException(exceptionComponents)
-        .withReturnContinuation(expressionContinuation)
-        .withContinuation(
-            new ExitSK(expressionContinuation, Value.nullInstance));
-
-    return new ExecConfiguration(setter.body, env, state);
-  }
-}
-
-/// Represents a continuation to be called after the evaluation of an actual
-/// argument for function invocation.
-class ExpressionListEK extends ExpressionContinuation {
-  final InterpreterExpression currentExpression;
-  final List<InterpreterExpression> expressions;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ApplicationContinuation applicationContinuation;
-
-  ExpressionListEK(this.currentExpression, this.expressions, this.environment,
-      this.exceptionComponents, this.applicationContinuation);
-
-  Configuration call(Value v) {
-    ValueA app =
-        new ValueA(currentExpression.assignValue(v), applicationContinuation);
-    return new EvalListConfiguration(
-        expressions, environment, exceptionComponents, app);
-  }
-}
-
-class MethodInvocationEK extends ExpressionContinuation {
-  final Arguments arguments;
-  final Name methodName;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  MethodInvocationEK(this.arguments, this.methodName, this.environment,
-      this.exceptionComponents, this.continuation);
-
-  Configuration call(Value receiver) {
-    if (receiver is LiteralValue) {
-      // TODO(zhivkag): CPS method invocation for literals
-      if (arguments.positional.isEmpty) {
-        Value returnValue = receiver.invokeMethod(methodName);
-        return new ValuePassingConfiguration(continuation, returnValue);
-      }
-      var cont = new ArgumentsEK(
-          receiver, methodName, arguments, environment, continuation);
-
-      return new EvalConfiguration(
-          arguments.positional.first, environment, exceptionComponents, cont);
-    }
-
-    FunctionValue fun;
-    if (receiver is FunctionValue) {
-      // TODO(zhivkag): Throw an exception when method is not call.
-      assert(methodName.toString() == "call");
-      fun = receiver;
-    } else {
-      assert(receiver.class_.isMethod(methodName));
-      fun = new FunctionValue(receiver.class_.lookup(methodName),
-          new Environment.empty().extendWithThis(receiver));
-    }
-
-    var args = _getArgumentExpressions(arguments, fun.function);
-    var acont = new FunctionValueA(receiver, exceptionComponents, continuation);
-    return new EvalListConfiguration(
-        args, environment, exceptionComponents, acont);
-  }
-}
-
-class ArgumentsEK extends ExpressionContinuation {
-  final Value receiver;
-  final Name methodName;
-  final Arguments arguments;
-  final Environment environment;
-  final ExpressionContinuation continuation;
-
-  ArgumentsEK(this.receiver, this.methodName, this.arguments, this.environment,
-      this.continuation);
-
-  Configuration call(Value value) {
-    // Currently evaluates only one argument, for simple method invocations
-    // with 1 argument.
-    Value returnValue = receiver.invokeMethod(methodName, value);
-    return new ValuePassingConfiguration(continuation, returnValue);
-  }
-}
-
-class VariableSetEK extends ExpressionContinuation {
-  final VariableDeclaration variable;
-  final Environment environment;
-  final ExpressionContinuation continuation;
-
-  VariableSetEK(this.variable, this.environment, this.continuation);
-
-  Configuration call(Value value) {
-    environment.updateStore(variable, value);
-    return new ValuePassingConfiguration(continuation, value);
-  }
-}
-
-class NotEK extends ExpressionContinuation {
-  final ExpressionContinuation continuation;
-
-  NotEK(this.continuation);
-
-  Configuration call(Value value) {
-    Value notValue = identical(Value.trueInstance, value)
-        ? Value.falseInstance
-        : Value.trueInstance;
-    return new ValuePassingConfiguration(continuation, notValue);
-  }
-}
-
-class OrEK extends ExpressionContinuation {
-  final Expression right;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  OrEK(this.right, this.environment, this.exceptionComponents,
-      this.continuation);
-
-  Configuration call(Value left) {
-    return identical(Value.trueInstance, left)
-        ? new ValuePassingConfiguration(continuation, Value.trueInstance)
-        : new EvalConfiguration(
-            right, environment, exceptionComponents, continuation);
-  }
-}
-
-class AndEK extends ExpressionContinuation {
-  final Expression right;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  AndEK(this.right, this.environment, this.exceptionComponents,
-      this.continuation);
-
-  Configuration call(Value left) {
-    return identical(Value.falseInstance, left)
-        ? new ValuePassingConfiguration(continuation, Value.falseInstance)
-        : new EvalConfiguration(
-            right, environment, exceptionComponents, continuation);
-  }
-}
-
-class ConditionalEK extends ExpressionContinuation {
-  final Expression then;
-  final Expression otherwise;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  ConditionalEK(this.then, this.otherwise, this.environment,
-      this.exceptionComponents, this.continuation);
-
-  Configuration call(Value value) {
-    return identical(Value.trueInstance, value)
-        ? new EvalConfiguration(
-            then, environment, exceptionComponents, continuation)
-        : new EvalConfiguration(
-            otherwise, environment, exceptionComponents, continuation);
-  }
-}
-
-class LetEK extends ExpressionContinuation {
-  final VariableDeclaration variable;
-  final Expression letBody;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ExpressionContinuation continuation;
-
-  LetEK(this.variable, this.letBody, this.environment, this.exceptionComponents,
-      this.continuation);
-
-  Configuration call(Value value) {
-    var letEnv = environment.extend(variable, value);
-    return new EvalConfiguration(
-        letBody, letEnv, exceptionComponents, continuation);
-  }
-}
-
-/// Represents the continuation for the condition expression in [WhileStatement].
-class WhileConditionEK extends ExpressionContinuation {
-  final Expression condition;
-  final Statement body;
-  final Environment enclosingEnv;
-  final State state;
-
-  WhileConditionEK(this.condition, this.body, this.enclosingEnv, this.state);
-
-  Configuration call(Value v) {
-    if (identical(v, Value.falseInstance)) {
-      return new ForwardConfiguration(state.continuation, enclosingEnv);
-    }
-    var cont = new WhileConditionSK(condition, body, enclosingEnv, state);
-    return new ExecConfiguration(
-        body, enclosingEnv, state.withContinuation(cont));
-  }
-}
-
-/// Represents the continuation for the condition expression in [IfStatement].
-class IfConditionEK extends ExpressionContinuation {
-  final Statement then;
-  final Statement otherwise;
-  final Environment environment;
-  final State state;
-
-  IfConditionEK(this.then, this.otherwise, this.environment, this.state);
-
-  Configuration call(Value v) {
-    if (identical(v, Value.trueInstance)) {
-      log.info("if-then\n");
-      return new ExecConfiguration(then, environment, state);
-    } else if (otherwise != null) {
-      log.info("if-otherwise\n");
-      return new ExecConfiguration(otherwise, environment, state);
-    }
-    return new ForwardConfiguration(state.continuation, environment);
-  }
-}
-
-/// Represents the continuation for the initializer expression in
-/// [VariableDeclaration].
-class VariableInitializerEK extends ExpressionContinuation {
-  final VariableDeclaration variable;
-  final Environment environment;
-  final StatementContinuation continuation;
-  VariableInitializerEK(this.variable, this.environment, this.continuation);
-
-  Configuration call(Value v) {
-    return new ForwardConfiguration(
-        continuation, environment.extend(variable, v));
-  }
-}
-
-/// Expression continuation that further initializes the newly allocated object
-/// instance with running the constructor.
-class InitializationEK extends ExpressionContinuation {
-  final Constructor constructor;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final StatementContinuation continuation;
-
-  InitializationEK(this.constructor, this.environment, this.exceptionComponents,
-      this.continuation);
-
-  Configuration call(Value value) {
-    Location location = new Location(value);
-
-    if (constructor.initializers.isNotEmpty &&
-        constructor.initializers.last is RedirectingInitializer) {
-      return _createRedirectingInitializerConfig(
-          constructor.initializers.first, location);
-    }
-    // The statement body is captured by the next statement continuation and
-    // expressions for field initialization are evaluated.
-    var ctrEnv = environment.extendWithThis(value);
-    var bodyCont = new ConstructorBodySK(
-        constructor.function.body, ctrEnv, exceptionComponents, continuation);
-    var initializers = _getFieldInitializers(constructor.enclosingClass);
-    var fieldsCont = new InstanceFieldsA(
-        constructor, location, ctrEnv, exceptionComponents, bodyCont);
-    return new EvalListConfiguration(
-        initializers, new Environment.empty(), exceptionComponents, fieldsCont);
-  }
-
-  /// Creates the next configuration to further initializer the value for
-  /// redirecting constructors.
-  Configuration _createRedirectingInitializerConfig(
-      Initializer initializer, Location location) {
-    Initializer current = constructor.initializers.first;
-    if (current is RedirectingInitializer) {
-      // Evaluate the list of arguments for invoking the target constructor in
-      // the current environment.
-      List<InterpreterExpression> exprs =
-          _getArgumentExpressions(current.arguments, current.target.function);
-      var cont = new ConstructorInitializerA(
-          current.target, location, exceptionComponents, continuation);
-      return new EvalListConfiguration(
-          exprs, environment, exceptionComponents, cont);
-    }
-    Expression expr = (current is FieldInitializer)
-        ? current.value
-        : (current as LocalInitializer).variable.initializer;
-
-    // The index is set to 0 since we are evaluating the expression for the
-    // first initializer in the initializer list.
-    var cont = new InitializerListEK(constructor, 0, location, environment,
-        exceptionComponents, continuation);
-    return new EvalConfiguration(expr, environment, exceptionComponents, cont);
-  }
-}
-
-class InitializerListEK extends ExpressionContinuation {
-  final Constructor constructor;
-  final int initializerIndex;
-  final Location location;
-  final Environment environment;
-  final ExceptionComponents exceptionComponents;
-  final ConstructorBodySK continuation;
-
-  final Class _currentClass;
-
-  InitializerListEK(this.constructor, this.initializerIndex, this.location,
-      this.environment, this.exceptionComponents, this.continuation)
-      : _currentClass = new Class(constructor.enclosingClass.reference);
-
-  /// Creates a continuation for the evaluation of the initializer at position
-  /// [index].
-  InitializerListEK withInitializerIndex(int index) {
-    return new InitializerListEK(constructor, index, location, environment,
-        exceptionComponents, continuation);
-  }
-
-  Configuration call(Value value) {
-    Initializer current = constructor.initializers[initializerIndex];
-    if (current is FieldInitializer) {
-      _currentClass.lookupImplicitSetter(current.field.name)(
-          location.value, value);
-      return _createNextConfiguration(environment);
-    }
-    if (current is LocalInitializer) {
-      Environment newEnv = environment.extend(current.variable, value);
-      return _createNextConfiguration(newEnv);
-    }
-    throw "Value can't be applied to initalizer of type ${current.runtimeType}";
-  }
-
-  Configuration _createNextConfiguration(Environment env) {
-    assert(initializerIndex + 1 < constructor.initializers.length);
-    Initializer next = constructor.initializers[initializerIndex + 1];
-    if (next is SuperInitializer) {
-      // TODO(zhivkag): Execute constructor of "object" class when support for
-      // native/external functions is added.
-      if (_currentClass.superclass.superclass == null) {
-        _initializeNullFields(_currentClass, location.value);
-        return new ForwardConfiguration(continuation, environment);
-      }
-      return _createEvalListConfig(next.arguments, next.target, env);
-    }
-
-    if (next is RedirectingInitializer) {
-      return _createEvalListConfig(next.arguments, next.target, env);
-    }
-
-    Expression nextExpr = (next is FieldInitializer)
-        ? next.value
-        : (next as LocalInitializer).variable.initializer;
-
-    var cont = withInitializerIndex(initializerIndex + 1);
-    return new EvalConfiguration(nextExpr, env, exceptionComponents, cont);
-  }
-
-  Configuration _createEvalListConfig(
-      Arguments args, Constructor ctr, Environment env) {
-    List<InterpreterExpression> exprs =
-        _getArgumentExpressions(args, ctr.function);
-    var cont = new ConstructorInitializerA(
-        ctr, location, exceptionComponents, continuation);
-    return new EvalListConfiguration(exprs, env, exceptionComponents, cont);
-  }
-}
-
-class ThrowEK extends ExpressionContinuation {
-  final ExceptionComponents exceptionComponents;
-
-  ThrowEK(this.exceptionComponents);
-
-  Configuration call(Value value) {
-    return new ThrowConfiguration(
-        exceptionComponents.handler, value, exceptionComponents.stackTrace);
-  }
-}
-
-/// Represents the expression continuation that ensures the finalizer of a
-/// [TryFinally] node is executed before applying the return continuation to
-/// the given value.
-///
-/// It executes the captured finalizer statement and adds a statement
-/// continuation that will apply the return continuation to the given value
-/// when/if reached.
-class FinallyReturnEK extends ExpressionContinuation {
-  final Statement statement;
-  final Environment environment;
-  final State state;
-
-  FinallyReturnEK(this.statement, this.environment, this.state);
-
-  Configuration call(Value value) {
-    return new ExecConfiguration(statement, environment,
-        state.withContinuation(new ExitSK(state.returnContinuation, value)));
-  }
-}
-
-// ------------------------------------------------------------------------
-//                        Exceptions Handlers
-// ------------------------------------------------------------------------
-
-abstract class ExceptionHandler extends Continuation {
-  Configuration call(Value exception, StackTrace stacktrace);
-
-  static String errorMessage(Value exception, StackTrace stacktrace) {
-    return 'Uncaught exception '
-        '"${exception.value.runtimeType} : ${exception.value}"\n'
-        '${stacktrace.toString()}';
-  }
-}
-
-/// Handler for showing an exception to the user and returning a halting the
-/// execution of the program when an exception is not handled.
-class MainHandler extends ExceptionHandler {
-  Configuration call(Value exception, StackTrace stacktrace) {
-    var message = ExceptionHandler.errorMessage(exception, stacktrace);
-    log.info(message);
-    print(message);
-    return null;
-  }
-}
-
-/// Represents the handler that either executes a matching catch clause or
-/// applies the next handler to the given exception.
-class CatchHandler extends ExceptionHandler {
-  final List<Catch> catches;
-  final Environment environment;
-  final State state;
-
-  CatchHandler(this.catches, this.environment, this.state);
-
-  Configuration call(Value exception, StackTrace stackTrace) {
-    if (catches.isEmpty) {
-      return new ThrowConfiguration(
-          state.exceptionComponents.handler, exception, stackTrace);
-    }
-
-    // TODO(zhivkag): Check if there is a matching catch clause instead.
-    var currentCatch = catches.first;
-    if (currentCatch.guard is DynamicType) {
-      // Exception is caught, execute the body.
-
-      var env = environment;
-      if (currentCatch.exception != null) {
-        env = env.extend(currentCatch.exception, exception);
-      }
-      if (currentCatch.stackTrace != null) {
-        env = env.extend(
-            currentCatch.stackTrace, new StringValue(stackTrace.toString()));
-      }
-      var ecs = new ExceptionComponents(state.exceptionComponents.handler,
-          state.exceptionComponents.stackTrace, stackTrace, exception);
-      var newState = new State.initial()
-          .withContinuation(state.continuation)
-          .withReturnContinuation(state.returnContinuation)
-          .withException(ecs);
-      return new ExecConfiguration(currentCatch.body, env, newState);
-    }
-
-    var catchHandler =
-        new CatchHandler(catches.skip(1).toList(), environment, state);
-    return new ThrowConfiguration(catchHandler, exception, stackTrace);
-  }
-}
-
-/// Represents the handler that executes the corresponding finalizer before
-/// applying the next handler to the given exception.
-///
-/// Applying the next handler to the given exception is supported with adding
-/// [RethrowSK] as next statement continuation.
-class FinallyHandler extends ExceptionHandler {
-  final Statement finallyStatement;
-  final Environment environment;
-  final State state;
-
-  FinallyHandler(this.finallyStatement, this.environment, this.state);
-  Configuration call(Value exception, StackTrace stackTrace) {
-    // A finally handler can't handle an exception, only execute the
-    // corresponding finally statement and rethrow.
-    var cont =
-        new RethrowSK(state.exceptionComponents.handler, exception, stackTrace);
-    var newState = state.withContinuation(cont);
-    return new ExecConfiguration(finallyStatement, environment, newState);
-  }
-}
-
-// ------------------------------------------------------------------------
-//                        Exceptions
-// ------------------------------------------------------------------------
-/// Represents the components for Exception handling.
-///
-/// It contains the current of exception handler, a stack trace and optional
-/// components, current stacktrace and exception.
-class ExceptionComponents {
-  final ExceptionHandler handler;
-  final StackTrace stackTrace;
-
-  /// Current exception and stack trace.
-  ///
-  /// Components enabling support for `rethrow` expressions and set only in
-  /// catch clauses.
-  final StackTrace currentStackTrace;
-  final Value currentException;
-
-  ExceptionComponents(this.handler, this.stackTrace, this.currentStackTrace,
-      this.currentException);
-
-  ExceptionComponents.initial()
-      : handler = new MainHandler(),
-        stackTrace = new StackTrace(null, null),
-        currentStackTrace = null,
-        currentException = null;
-}
-
-class StackTrace {
-  final Expression expression;
-  final StackTrace stackTrace;
-
-  StackTrace(this.expression, this.stackTrace);
-
-  String toString() {
-    var buffer = new StringBuffer('in main()');
-    var current = this;
-    while (current.expression != null) {
-      buffer.write('at ${current.expression.toString()}\n');
-      current = current.stackTrace;
-    }
-    return buffer.toString();
-  }
-}
-
-/// Executes statements.
-///
-/// Execution of a statement completes in one of the following ways:
-/// - It completes normally, in which case the execution proceeds to applying
-/// the next continuation.
-/// - It breaks with a label, in which case the corresponding continuation is
-/// returned and applied.
-/// - It returns with or without value, in which case the return continuation is
-/// returned and applied accordingly.
-/// - It throws, in which case the handler is returned and applied accordingly.
-class StatementExecuter
-    extends StatementVisitor1<Configuration, ExecConfiguration> {
-  final Evaluator evaluator = new Evaluator();
-
-  void trampolinedExecution(Configuration configuration) {
-    while (configuration != null) {
-      configuration = configuration.step(this);
-    }
-  }
-
-  Configuration exec(Statement statement, ExecConfiguration conf) =>
-      statement.accept1(this, conf);
-  Configuration eval(Expression expression, EvalConfiguration config) =>
-      evaluator.eval(expression, config);
-  Configuration evalList(List<InterpreterExpression> es, Environment env,
-          ExceptionComponents ecs, Continuation cont) =>
-      evaluator.evalList(es, env, ecs, cont);
-
-  Configuration defaultStatement(Statement node, ExecConfiguration conf) {
-    throw notImplemented(
-        m: "Execution is not implemented for statement:\n$node ");
-  }
-
-  Configuration visitExpressionStatement(
-      ExpressionStatement node, ExecConfiguration conf) {
-    var cont = new ExpressionEK(conf.state.continuation, conf.environment);
-    return new EvalConfiguration(node.expression, conf.environment,
-        conf.state.exceptionComponents, cont);
-  }
-
-  Configuration visitBlock(Block node, ExecConfiguration conf) {
-    if (node.statements.isEmpty) {
-      return new ForwardConfiguration(
-          conf.state.continuation, conf.environment);
-    }
-
-    var cont = new BlockSK.fromConfig(node.statements.skip(1).toList(), conf);
-    return new ExecConfiguration(node.statements.first, conf.environment,
-        conf.state.withContinuation(cont));
-  }
-
-  Configuration visitEmptyStatement(
-      EmptyStatement node, ExecConfiguration conf) {
-    return new ForwardConfiguration(conf.state.continuation, conf.environment);
-  }
-
-  Configuration visitIfStatement(IfStatement node, ExecConfiguration conf) {
-    var cont = new IfConditionEK(
-        node.then, node.otherwise, conf.environment, conf.state);
-
-    return new EvalConfiguration(
-        node.condition, conf.environment, conf.state.exceptionComponents, cont);
-  }
-
-  Configuration visitLabeledStatement(
-      LabeledStatement node, ExecConfiguration conf) {
-    return new ExecConfiguration(node.body, conf.environment,
-        conf.state.withBreak(node, conf.environment));
-  }
-
-  Configuration visitBreakStatement(
-      BreakStatement node, ExecConfiguration conf) {
-    Label l = conf.state.lookupLabel(node.target);
-    return new BreakConfiguration(l.continuation);
-  }
-
-  Configuration visitWhileStatement(
-      WhileStatement node, ExecConfiguration conf) {
-    var cont = new WhileConditionEK(
-        node.condition, node.body, conf.environment, conf.state);
-
-    return new EvalConfiguration(
-        node.condition, conf.environment, conf.state.exceptionComponents, cont);
-  }
-
-  Configuration visitDoStatement(DoStatement node, ExecConfiguration conf) {
-    var cont = new WhileConditionSK(
-        node.condition, node.body, conf.environment, conf.state);
-
-    return new ExecConfiguration(
-        node.body, conf.environment, conf.state.withContinuation(cont));
-  }
-
-  Configuration visitReturnStatement(
-      ReturnStatement node, ExecConfiguration conf) {
-    assert(conf.state.returnContinuation != null);
-    log.info('return\n');
-    if (node.expression == null) {
-      return new ValuePassingConfiguration(
-          conf.state.returnContinuation, Value.nullInstance);
-    }
-    return new EvalConfiguration(node.expression, conf.environment,
-        conf.state.exceptionComponents, conf.state.returnContinuation);
-  }
-
-  Configuration visitTryCatch(TryCatch node, ExecConfiguration conf) {
-    var handler = new CatchHandler(node.catches, conf.environment, conf.state);
-    var exceptionComponents = new ExceptionComponents(
-        handler,
-        conf.state.exceptionComponents.stackTrace,
-        conf.state.exceptionComponents.currentStackTrace,
-        conf.state.exceptionComponents.currentException);
-    var state = conf.state.withException(exceptionComponents);
-    return new ExecConfiguration(node.body, conf.environment, state);
-  }
-
-  Configuration visitTryFinally(TryFinally node, ExecConfiguration conf) {
-    var cont = new FinallySK(node.finalizer, conf.environment, conf.state);
-    var returnCont =
-        new FinallyReturnEK(node.finalizer, conf.environment, conf.state);
-    var labels = conf.state.labels
-        ?.withFinalizer(node.finalizer, conf.environment, conf.state);
-    var handler =
-        new FinallyHandler(node.finalizer, conf.environment, conf.state);
-    var exceptionComponents = new ExceptionComponents(
-        handler,
-        conf.state.exceptionComponents.stackTrace,
-        conf.state.exceptionComponents.currentStackTrace,
-        conf.state.exceptionComponents.currentException);
-    var state = new State(labels, exceptionComponents, returnCont, cont);
-    return new ExecConfiguration(node.body, conf.environment, state);
-  }
-
-  Configuration visitVariableDeclaration(
-      VariableDeclaration node, ExecConfiguration conf) {
-    if (node.initializer != null) {
-      var cont = new VariableInitializerEK(
-          node, conf.environment, conf.state.continuation);
-      return new EvalConfiguration(node.initializer, conf.environment,
-          conf.state.exceptionComponents, cont);
-    }
-    return new ForwardConfiguration(conf.state.continuation,
-        conf.environment.extend(node, Value.nullInstance));
-  }
-
-  Configuration visitFunctionDeclaration(
-      FunctionDeclaration node, ExecConfiguration conf) {
-    var newEnv = conf.environment.extend(node.variable, Value.nullInstance);
-    var fun = new FunctionValue(node.function, newEnv);
-    newEnv.updateStore(node.variable, fun);
-    return new ForwardConfiguration(conf.state.continuation, newEnv);
-  }
-}
-
-// ------------------------------------------------------------------------
-//                                VALUES
-// ------------------------------------------------------------------------
-
-typedef Value Getter(Value receiver);
-typedef void Setter(Value receiver, Value value);
-
-class Class {
-  static final Map<Reference, Class> _classes = <Reference, Class>{};
-
-  /// The immediate superclass, or `null` if this is the root class object.
-  Class superclass;
-
-  /// The class definitions from the `implements` clause.
-  final List<Supertype> interfaces = <Supertype>[];
-
-  /// Implicit getters for instance fields.
-  Map<Name, Getter> implicitGetters = <Name, Getter>{};
-
-  /// Implicit setters for non final instance fields.
-  Map<Name, Setter> implicitSetters = <Name, Setter>{};
-
-  /// Instance methods, explicit getters and setters.
-  Map<Name, Procedure> methods = <Name, Procedure>{};
-
-  int get instanceSize => implicitGetters.length;
-
-  factory Class(Reference classRef) {
-    return _classes.putIfAbsent(
-        classRef, () => new Class._internal(classRef.asClass));
-  }
-
-  Class._internal(ast.Class currentClass) {
-    if (currentClass.superclass != null) {
-      superclass = new Class(currentClass.superclass.reference);
-    }
-
-    _populateImplicitGettersAndSetters(currentClass);
-    _populateInstanceMethods(currentClass);
-  }
-
-  Getter lookupImplicitGetter(Name name) {
-    Getter getter = implicitGetters[name];
-    if (getter != null) return getter;
-    if (superclass != null) return superclass.lookupImplicitGetter(name);
-    return (Value receiver) => notImplemented(obj: name);
-  }
-
-  Setter lookupImplicitSetter(Name name) {
-    Setter setter = implicitSetters[name];
-    if (setter != null) return setter;
-    if (superclass != null) return superclass.lookupImplicitSetter(name);
-    // TODO(zhivkag): Throw NoSuchInstance error instead.
-    return (Value receiver, Value value) => notImplemented(obj: name);
-  }
-
-  FunctionNode lookup(Name name) => methods[name]?.function;
-
-  bool isGetter(Name name) => methods[name]?.isGetter ?? false;
-  bool isSetter(Name name) => methods[name]?.isSetter ?? false;
-  bool isMethod(Name name) => !(methods[name]?.isAccessor ?? true);
-
-  /// Populates implicit getters and setters for the current class and its
-  /// superclass recursively.
-  _populateImplicitGettersAndSetters(ast.Class class_) {
-    if (class_.superclass != null) {
-      _populateImplicitGettersAndSetters(class_.superclass);
-    }
-
-    for (Field f in class_.fields) {
-      if (f.isStatic) continue;
-      assert(f.hasImplicitGetter);
-
-      int currentFieldIndex = implicitGetters.length;
-      // Shadowing an inherited getter with the same name.
-      implicitGetters[f.name] =
-          (Value receiver) => receiver.fields[currentFieldIndex].value;
-      if (f.hasImplicitSetter) {
-        // Shadowing an inherited setter with the same name.
-        implicitSetters[f.name] = (Value receiver, Value value) =>
-            receiver.fields[currentFieldIndex].value = value;
-      }
-    }
-  }
-
-  /// Populates instance methods, getters and setters for the current class and
-  /// its super class recursively.
-  _populateInstanceMethods(ast.Class class_) {
-    if (class_.superclass != null) {
-      _populateInstanceMethods(class_.superclass);
-    }
-
-    for (Member m in class_.members) {
-      if (m is Procedure) {
-        // Shadowing an inherited method, getter or setter with the same name.
-        methods[m.name] = m;
-      }
-    }
-  }
-}
-
-abstract class Value {
-  Class get class_;
-  List<Location> get fields;
-  Object get value;
-
-  static final NullValue nullInstance = const NullValue();
-  static final BoolValue trueInstance = const BoolValue(true);
-  static final BoolValue falseInstance = const BoolValue(false);
-
-  const Value();
-
-  BoolValue toBoolean() {
-    return identical(this, Value.trueInstance)
-        ? Value.trueInstance
-        : Value.falseInstance;
-  }
-
-  BoolValue equals(Value other) =>
-      value == other?.value ? Value.trueInstance : Value.falseInstance;
-
-  Value invokeMethod(Name name, [Value arg]) {
-    if (name.toString() == "==") return equals(arg);
-    throw notImplemented(obj: name);
-  }
-}
-
-class ObjectValue extends Value {
-  final Class class_;
-  final List<Location> fields;
-  Object get value => this;
-
-  ObjectValue(this.class_) : fields = new List<Location>(class_.instanceSize) {
-    for (int i = 0; i < fields.length; i++) {
-      // Create fresh locations for each field.
-      fields[i] = new Location.empty();
-    }
-  }
-}
-
-class FunctionValue extends Value {
-  Class get class_ => throw 'Class for FunctionValue is not defined';
-  List<Location> get fields => throw 'FunctionValue has no fields.';
-
-  FunctionValue get value => this;
-
-  final FunctionNode function;
-  final Environment environment;
-
-  FunctionValue(this.function, this.environment);
-}
-
-abstract class LiteralValue extends Value {
-  Class get class_ =>
-      notImplemented(m: "Loading class for literal is not implemented.");
-  List<Location> get fields =>
-      notImplemented(m: "Literal value does not have fields");
-
-  const LiteralValue();
-}
-
-class StringValue extends LiteralValue {
-  final String value;
-
-  static final operators = <String, Function>{
-    '[]': (StringValue v1, Value v2) => v1[v2],
-    '==': (StringValue v1, Value v2) => v1.equals(v2)
-  };
-
-  StringValue(this.value);
-
-  Value invokeMethod(Name name, [Value arg]) {
-    if (!operators.containsKey(name.name)) {
-      return notImplemented(obj: name);
-    }
-    return operators[name.name](this, arg);
-  }
-
-  // Operators
-  Value operator [](Value index) => new StringValue(value[index.value]);
-}
-
-abstract class NumValue extends LiteralValue {
-  num get value;
-
-  NumValue();
-
-  factory NumValue.fromValue(num value) {
-    if (value is int) {
-      return new IntValue(value);
-    } else {
-      assert(value is double);
-      return new DoubleValue(value);
-    }
-  }
-
-  static final operators = <String, Function>{
-    '+': (NumValue v1, Value v2) => v1 + v2,
-    '-': (NumValue v1, Value v2) => v1 - v2,
-    '>': (NumValue v1, Value v2) => v1 > v2,
-    '<': (NumValue v1, Value v2) => v1 < v2,
-    '==': (NumValue v1, Value v2) => v1.equals(v2),
-    'unary-': (NumValue v1) => -v1,
-  };
-
-  Value invokeMethod(Name name, [Value arg]) {
-    if (!operators.containsKey(name.name)) return notImplemented(obj: name);
-    if (arg == null) return operators[name.name](this);
-    return operators[name.name](this, arg);
-  }
-
-  // Operators
-  NumValue operator +(Value other) =>
-      new NumValue.fromValue(value + other.value);
-  NumValue operator -(Value other) =>
-      new NumValue.fromValue(value - other.value);
-  NumValue operator -() => new NumValue.fromValue(-value);
-
-  BoolValue operator >(Value other) =>
-      value > other.value ? Value.trueInstance : Value.falseInstance;
-  BoolValue operator <(Value other) =>
-      value < other.value ? Value.trueInstance : Value.falseInstance;
-}
-
-class IntValue extends NumValue {
-  final int value;
-
-  IntValue(this.value);
-}
-
-class DoubleValue extends NumValue {
-  final double value;
-
-  DoubleValue(this.value);
-}
-
-class BoolValue extends LiteralValue {
-  final bool value;
-
-  const BoolValue(this.value);
-}
-
-class NullValue extends LiteralValue {
-  Object get value => null;
-
-  const NullValue();
-}
-
-notImplemented({String m, Object obj}) {
-  throw new NotImplemented(m ?? 'Evaluation for $obj is not implemented');
-}
-
-// ------------------------------------------------------------------------
-//                             INTERNAL FUNCTIONS
-// ------------------------------------------------------------------------
-
-/// Creates a list of all argument expressions to be evaluated for the
-/// invocation of the provided [FunctionNode] containing the actual arguments
-/// and the optional argument initializers.
-List<InterpreterExpression> _getArgumentExpressions(
-    Arguments providedArgs, FunctionNode fun) {
-  List<InterpreterExpression> args = <InterpreterExpression>[];
-  // Add positional arguments expressions.
-  args.addAll(providedArgs.positional
-      .map((Expression e) => new PositionalExpression(e)));
-
-  // Add optional positional argument initializers.
-  for (int i = providedArgs.positional.length;
-      i < fun.positionalParameters.length;
-      i++) {
-    args.add(new PositionalExpression(fun.positionalParameters[i].initializer));
-  }
-
-  Map<String, NamedExpression> namedFormals = <String, NamedExpression>{};
-  for (VariableDeclaration vd in fun.namedParameters) {
-    if (vd is NamedValue) {
-      namedFormals[vd.name] = new NamedExpression(vd.name, vd.initializer);
-    }
-  }
-
-  // Add named expressions.
-  for (int i = 0; i < providedArgs.named.length; i++) {
-    var current = providedArgs.named[i];
-    args.add(new NamedExpression(current.name, current.value));
-    namedFormals.remove(current.name);
-  }
-
-  // Add missing optional named initializers.
-  args.addAll(namedFormals.values);
-
-  return args;
-}
-
-/// Creates a list of all field expressions to be evaluated.
-///
-/// A field expression is an initializer expression for a given field defined
-/// when the field was created.
-List<InterpreterExpression> _getFieldInitializers(ast.Class class_) {
-  var fieldInitializers = new List<InterpreterExpression>();
-
-  for (Field f in class_.fields) {
-    if (!f.isStatic && f.initializer != null) {
-      fieldInitializers.add(new FieldInitializerExpression(f, f.initializer));
-    }
-  }
-
-  return fieldInitializers;
-}
-
-/// Initializes all non initialized fields from the provided class to
-/// `Value.nullInstance` in the provided value.
-void _initializeNullFields(Class class_, Value value) {
-  int startIndex = class_.superclass?.instanceSize ?? 0;
-  for (int i = startIndex; i < class_.instanceSize; i++) {
-    if (value.fields[i].value == null) {
-      value.fields[i].value = Value.nullInstance;
-    }
-  }
-}
diff --git a/pkg/kernel/lib/interpreter/tools/dart_to_latex.dart b/pkg/kernel/lib/interpreter/tools/dart_to_latex.dart
deleted file mode 100644
index d676aeb..0000000
--- a/pkg/kernel/lib/interpreter/tools/dart_to_latex.dart
+++ /dev/null
@@ -1,245 +0,0 @@
-// 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.
-
-/*LATEX
-\documentclass[a4paper,12pt,oneside]{article}
-
-\usepackage[utf8]{inputenc}
-\usepackage{amsmath}
-\usepackage{amssymb}
-\usepackage{listings}
-
-\lstset{basicstyle=\footnotesize\ttfamily\bf}
-
-\begin{document}
-
-\title{dart\_to\_latex.dart}
-\author{The Dart project authors}
-\date{}
-
-\maketitle
-
-\section*{Introduction}
-
-The purpose of this program is to extract comments of a special form from Dart
-programs and put them into a .tex file in the order of their appearance in the
-Dart program.
-It allows writing elaborate documentation in the comments using formulas and
-also use custom formatting commands.
-
-The comments that are put into the output .tex file are of the form
-\lstinline!/*LATEX ... */!.
-Additionally, all Dart lines marked with one-line comment \lstinline!//LATEX!
-are also included to the output file and are put into \lstinline!verbatim!
-environment.
-Using \lstinline!//LATEX! sometimes conflicts with the default behavior of
-\lstinline!dartfmt! formatting utility that may put the one-line comment to the
-following line.
-To address this issue one can use \lstinline!//LATEX-NEXT! comment right before
-the line that should be inserted into the output.
- */
-
-/*LATEX
-\section{Implementation Overview}
-
-First, the libraries for working with files and strings are imported.
- */
-import "dart:io"; //LATEX
-import "dart:core"; //LATEX
-
-/*LATEX
-Most of the work is done in the Extractor class.
- */
-
-//LATEX-NEXT
-class Extractor {
-  /*LATEX
-  There are some string constants that are used for text parsing.
-   */
-  static final String latexMarker = "LATEX"; //LATEX
-  static final String latexNextMarker = "LATEX-NEXT"; //LATEX
-  static final String commentBegin = "/*"; //LATEX
-  static final String commentEnd = "*/"; //LATEX
-  static final String oneLineCommentBegin = "//"; //LATEX
-
-  final String inputFilename;
-  final String outputFilename;
-
-  final File inputFile;
-  final File outputFile;
-
-  String input;
-
-  /*LATEX
-  The actual parsing is done in the following methods.
-   */
-
-  //LATEX-NEXT
-  Extractor(this.inputFilename, this.outputFilename)
-      : inputFile = new File(inputFilename),
-        outputFile = new File(outputFilename) {
-    // Clear the output file at start.
-    outputFile.writeAsStringSync("", mode: FileMode.write, flush: true);
-  }
-
-  //LATEX-NEXT
-  int findCommentEnd(int start) {
-    assert(start <= input.length);
-    assert(input.startsWith(commentBegin, start));
-
-    int balance = 1;
-    int i = start + commentBegin.length;
-    while (i < input.length && balance > 0) {
-      if (input.startsWith(commentBegin, i)) {
-        balance++;
-        i += commentBegin.length;
-      } else if (input.startsWith(commentEnd, i)) {
-        balance--;
-        i += commentEnd.length;
-      } else {
-        i++;
-      }
-    }
-
-    if (balance > 0) {
-      return -1;
-    }
-
-    return i;
-  }
-
-  //LATEX-NEXT
-  void extractOneLineCommentsFrom(String text) {
-    List<String> lines = text.split("\n");
-    List<String> outputLines = new List<String>();
-    int i = 0;
-    while (i < lines.length) {
-      String line = lines[i];
-      if (line.endsWith(oneLineCommentBegin + latexMarker)) {
-        outputLines.add(line.substring(
-            0, line.length - (oneLineCommentBegin + latexMarker).length));
-        i++;
-      } else if (line.endsWith(oneLineCommentBegin + latexNextMarker) &&
-          i + 1 < lines.length) {
-        outputLines.add(lines[i + 1]);
-        i += 2;
-      } else {
-        i++;
-      }
-    }
-    if (outputLines.length > 0) {
-      outputLines.insert(0, r"\begin{verbatim}");
-      outputLines.add(r"\end{verbatim}");
-    }
-    for (String line in outputLines) {
-      outputFile.writeAsStringSync("$line\n", mode: FileMode.append);
-    }
-  }
-
-  //LATEX-NEXT
-  void extractOneLineComments() {
-    int endIndex = input.indexOf(commentBegin);
-    while (endIndex != -1 &&
-        !input.startsWith(commentBegin + latexMarker, endIndex)) {
-      endIndex = findCommentEnd(endIndex);
-      if (endIndex != -1) {
-        endIndex = input.indexOf(commentBegin, endIndex);
-      }
-    }
-    if (endIndex == -1) {
-      endIndex = input.length;
-    }
-    extractOneLineCommentsFrom(input.substring(0, endIndex));
-    input = input.substring(endIndex);
-  }
-
-  //LATEX-NEXT
-  void extractBlock() {
-    int startIndex = input.indexOf(commentBegin);
-    while (startIndex != -1 &&
-        !input.startsWith(commentBegin + latexMarker, startIndex)) {
-      startIndex = findCommentEnd(startIndex);
-      if (startIndex != -1) {
-        startIndex = input.indexOf(commentBegin, startIndex);
-      }
-    }
-    if (startIndex == -1) {
-      startIndex = input.length;
-    }
-    input = input.substring(startIndex);
-
-    if (input.startsWith(commentBegin + latexMarker)) {
-      int endIndex = findCommentEnd(0);
-      if (endIndex == -1) {
-        endIndex = input.length;
-      }
-      int latexBeginIndex = (commentBegin + latexMarker).length;
-      int latexEndIndex = input.substring(0, endIndex).endsWith(commentEnd)
-          ? endIndex - commentEnd.length
-          : endIndex;
-      outputFile.writeAsStringSync(
-          input.substring(latexBeginIndex, latexEndIndex) + "\n",
-          mode: FileMode.append);
-      input = input.substring(endIndex);
-    }
-  }
-
-  //LATEX-NEXT
-  void run() {
-    input = inputFile.readAsStringSync();
-    while (input.length > 0) {
-      extractOneLineComments();
-      if (input.length > 0) extractBlock();
-    }
-  }
-} // class Extractor //LATEX
-
-/*LATEX
-Finally, the entrance point of the program is defined.
-After some trivial arguments check it creates an extractor instance and runs the
-extraction.
- */
-//LATEX-NEXT
-main(List<String> arguments) {
-  // Arguments checks... //LATEX
-  if (arguments.length != 2) {
-    stderr.writeln("usage: dart dart_to_latex.dart input.dart output.tex");
-    exit(1);
-  }
-  String inputFilename = arguments[0];
-  String outputFilename = arguments[1];
-
-  Extractor parser = new Extractor(inputFilename, outputFilename); //LATEX
-  parser.run(); //LATEX
-} //LATEX
-
-/*LATEX
-\section{User Manual}
-
-\begin{enumerate}
-\item \lstinline!dart dart_to_latex.dart input.dart output.tex!
-\item \lstinline!pdflatex output.tex!
-\end{enumerate}
- */
-
-/*LATEX
-\section*{Conclusion}
-
-The presented program may have been written better.
-It reads the entire input file into a \lstinline!String! variable and creates
-sub-strings of the input during extraction.
-A better approach would be to read the input program partially into a buffer,
-maintain a set of indexes on it, and analyze it on the fly.
-
-The \LaTeX{} part of the program can also be improved.
-For example, there is probably a better way to format the code fragmeents
-inlined into paragraphs than using \lstinline1\lstinline!...!1.
-
-As a side note, one may use this tool to extract \LaTeX{} comments from programs
-in some other languages like C++ and Java.
- */
-
-/*LATEX
-\end{document}
- */
diff --git a/pkg/kernel/lib/naive_type_checker.dart b/pkg/kernel/lib/naive_type_checker.dart
index 548e434..4a13042 100644
--- a/pkg/kernel/lib/naive_type_checker.dart
+++ b/pkg/kernel/lib/naive_type_checker.dart
@@ -31,7 +31,7 @@
 
   StrongModeTypeChecker._(this.failures, CoreTypes coreTypes,
       ClassHierarchy hierarchy, bool ignoreSdk)
-      : super(coreTypes, hierarchy, strongMode: true, ignoreSdk: ignoreSdk);
+      : super(coreTypes, hierarchy, ignoreSdk: ignoreSdk);
 
   // TODO(vegorov) this only gets called for immediate overrides which leads
   // to less strict checking that Dart 2.0 specification demands for covariant
@@ -164,8 +164,7 @@
 
     if (!_isSubtypeOf(ownSubstitution.substituteType(ownFunction.returnType),
         superSubstitution.substituteType(superFunction.returnType))) {
-      return 'return type of override ${ownFunction
-          .returnType} is not a subtype'
+      return 'return type of override ${ownFunction.returnType} is not a subtype'
           ' of ${superFunction.returnType}';
     }
 
diff --git a/pkg/kernel/lib/target/targets.dart b/pkg/kernel/lib/target/targets.dart
index 77a1987..c540910 100644
--- a/pkg/kernel/lib/target/targets.dart
+++ b/pkg/kernel/lib/target/targets.dart
@@ -11,7 +11,7 @@
 final List<String> targetNames = targets.keys.toList();
 
 class TargetFlags {
-  final bool strongMode;
+  final bool legacyMode;
   final bool treeShake;
 
   /// Whether `async` functions start synchronously.
@@ -20,7 +20,7 @@
   final Uri kernelRuntime;
 
   TargetFlags(
-      {this.strongMode: false,
+      {this.legacyMode: false,
       this.treeShake: false,
       this.syncAsync: false,
       this.programRoots: const <ProgramRoot>[],
@@ -59,7 +59,7 @@
   /// transformations.
   Map<String, List<String>> get requiredSdkClasses => CoreTypes.requiredClasses;
 
-  bool get strongMode;
+  bool get legacyMode;
 
   /// A derived class may change this to `true` to disable type inference and
   /// type promotion phases of analysis.
@@ -197,7 +197,7 @@
 
   NoneTarget(this.flags);
 
-  bool get strongMode => flags.strongMode;
+  bool get legacyMode => flags.legacyMode;
   String get name => 'none';
   List<String> get extraRequiredLibraries => <String>[];
   void performModularTransformationsOnLibraries(Component component,
diff --git a/pkg/kernel/lib/transformations/constants.dart b/pkg/kernel/lib/transformations/constants.dart
index bfd7e7a..49f6eba 100644
--- a/pkg/kernel/lib/transformations/constants.dart
+++ b/pkg/kernel/lib/transformations/constants.dart
@@ -30,7 +30,7 @@
 
 Component transformComponent(Component component, ConstantsBackend backend,
     {bool keepFields: false,
-    bool strongMode: false,
+    bool legacyMode: false,
     bool enableAsserts: false,
     bool evaluateAnnotations: true,
     CoreTypes coreTypes,
@@ -40,11 +40,11 @@
   hierarchy ??= new ClassHierarchy(component);
 
   final typeEnvironment =
-      new TypeEnvironment(coreTypes, hierarchy, strongMode: strongMode);
+      new TypeEnvironment(coreTypes, hierarchy, strongMode: !legacyMode);
 
   transformLibraries(component.libraries, backend, coreTypes, typeEnvironment,
       keepFields: keepFields,
-      strongMode: strongMode,
+      legacyMode: legacyMode,
       enableAsserts: enableAsserts,
       evaluateAnnotations: evaluateAnnotations,
       errorReporter: errorReporter);
@@ -54,9 +54,9 @@
 void transformLibraries(List<Library> libraries, ConstantsBackend backend,
     CoreTypes coreTypes, TypeEnvironment typeEnvironment,
     {bool keepFields: false,
+    bool legacyMode: false,
     bool keepVariables: false,
     bool evaluateAnnotations: true,
-    bool strongMode: false,
     bool enableAsserts: false,
     ErrorReporter errorReporter: const _SimpleErrorReporter()}) {
   final ConstantsTransformer constantsTransformer = new ConstantsTransformer(
@@ -66,9 +66,9 @@
       evaluateAnnotations,
       coreTypes,
       typeEnvironment,
-      strongMode,
       enableAsserts,
-      errorReporter);
+      errorReporter,
+      legacyMode: legacyMode);
   for (final Library library in libraries) {
     constantsTransformer.convertLibrary(library);
   }
@@ -91,11 +91,12 @@
       this.evaluateAnnotations,
       this.coreTypes,
       this.typeEnvironment,
-      bool strongMode,
       bool enableAsserts,
-      ErrorReporter errorReporter)
-      : constantEvaluator = new ConstantEvaluator(backend, typeEnvironment,
-            coreTypes, strongMode, enableAsserts, errorReporter);
+      ErrorReporter errorReporter,
+      {bool legacyMode: false})
+      : constantEvaluator = new ConstantEvaluator(
+            backend, typeEnvironment, coreTypes, enableAsserts,
+            legacyMode: legacyMode, errorReporter: errorReporter);
 
   // Transform the library/class members:
 
@@ -342,6 +343,13 @@
     return super.visitConstructorInvocation(node);
   }
 
+  visitStaticInvocation(StaticInvocation node) {
+    if (node.isConst) {
+      return tryEvaluateAndTransformWithContext(node, node);
+    }
+    return super.visitStaticInvocation(node);
+  }
+
   tryEvaluateAndTransformWithContext(TreeNode treeContext, Expression node) {
     final Constant constant = tryEvaluateWithContext(treeContext, node);
     return constant != null ? new ConstantExpression(constant) : node;
@@ -362,7 +370,7 @@
   final ConstantsBackend backend;
   final CoreTypes coreTypes;
   final TypeEnvironment typeEnvironment;
-  final bool strongMode;
+  final bool legacyMode;
   final bool enableAsserts;
   final ErrorReporter errorReporter;
 
@@ -378,9 +386,10 @@
   InstanceBuilder instanceBuilder;
   EvaluationEnvironment env;
 
-  ConstantEvaluator(this.backend, this.typeEnvironment, this.coreTypes,
-      this.strongMode, this.enableAsserts,
-      [this.errorReporter = const _SimpleErrorReporter()])
+  ConstantEvaluator(
+      this.backend, this.typeEnvironment, this.coreTypes, this.enableAsserts,
+      {this.legacyMode: false,
+      this.errorReporter = const _SimpleErrorReporter()})
       : canonicalizationCache = <Constant, Constant>{},
         nodeCache = <Node, Constant>{};
 
@@ -993,7 +1002,11 @@
             nativeName,
             evaluateTypeArguments(node.arguments),
             evaluatePositionalArguments(node.arguments),
-            evaluateNamedArguments(node.arguments));
+            evaluateNamedArguments(node.arguments),
+            contextChain,
+            node,
+            errorReporter,
+            () => throw const _AbortCurrentEvaluation());
         assert(constant != null);
         return canonicalize(constant);
       }
@@ -1195,7 +1208,7 @@
   }
 
   int _wrapAroundInteger(int value) {
-    if (strongMode) {
+    if (!legacyMode) {
       return value.toSigned(64);
     }
     return value;
@@ -1285,7 +1298,11 @@
       String nativeName,
       List<DartType> typeArguments,
       List<Constant> positionalArguments,
-      Map<String, Constant> namedArguments);
+      Map<String, Constant> namedArguments,
+      List<TreeNode> context,
+      StaticInvocation node,
+      ErrorReporter errorReporter,
+      void abortEvaluation());
   Constant lowerListConstant(ListConstant constant);
   Constant lowerMapConstant(MapConstant constant);
 }
diff --git a/pkg/kernel/lib/transformations/mixin_full_resolution.dart b/pkg/kernel/lib/transformations/mixin_full_resolution.dart
index 1214acd..5154517 100644
--- a/pkg/kernel/lib/transformations/mixin_full_resolution.dart
+++ b/pkg/kernel/lib/transformations/mixin_full_resolution.dart
@@ -74,9 +74,6 @@
       if (library.isExternal) continue;
 
       for (var class_ in library.classes) {
-        final bool hasTransformedSuperclass =
-            transformedClasses.contains(class_.superclass);
-
         for (var procedure in class_.procedures) {
           if (procedure.containsSuperCalls) {
             new SuperCallResolutionTransformer(
@@ -84,17 +81,6 @@
                 .visit(procedure);
           }
         }
-        for (var constructor in class_.constructors) {
-          if (constructor.containsSuperCalls) {
-            new SuperCallResolutionTransformer(
-                    hierarchy, coreTypes, class_.superclass, targetInfo)
-                .visit(constructor);
-          }
-          if (hasTransformedSuperclass && constructor.initializers.length > 0) {
-            new SuperInitializerResolutionTransformer(class_.superclass)
-                .transformInitializers(constructor.initializers);
-          }
-        }
       }
     }
   }
@@ -220,20 +206,7 @@
       }
       class_.addMember(clone);
     }
-    // For each generative constructor in the superclass we make a
-    // corresponding forwarding constructor in the subclass.
-    // Named mixin applications already have constructors, so only build the
-    // constructors for anonymous mixin applications.
-    if (class_.constructors.isEmpty) {
-      var superclassSubstitution = getSubstitutionMap(class_.supertype);
-      var superclassCloner =
-          new CloneVisitor(typeSubstitution: superclassSubstitution);
-      for (var superclassConstructor in class_.superclass.constructors) {
-        var forwardingConstructor =
-            buildForwardingConstructor(superclassCloner, superclassConstructor);
-        class_.addMember(forwardingConstructor);
-      }
-    }
+    assert(class_.constructors.isNotEmpty);
 
     // This class implements the mixin type. Also, backends rely on the fact
     // that eliminated mixin is appended into the end of interfaces list.
@@ -245,52 +218,6 @@
     // Leave breadcrumbs for backends (e.g. for dart:mirrors implementation).
     class_.isEliminatedMixin = true;
   }
-
-  Constructor buildForwardingConstructor(
-      CloneVisitor cloner, Constructor superclassConstructor) {
-    var superFunction = superclassConstructor.function;
-
-    // We keep types and default values for the parameters but always mark the
-    // parameters as final (since we just forward them to the super
-    // constructor).
-    VariableDeclaration cloneVariable(VariableDeclaration variable) {
-      VariableDeclaration clone = cloner.clone(variable);
-      clone.isFinal = true;
-      return clone;
-    }
-
-    // Build a [FunctionNode] which has the same parameters as the one in the
-    // superclass constructor.
-    var positionalParameters =
-        superFunction.positionalParameters.map(cloneVariable).toList();
-    var namedParameters =
-        superFunction.namedParameters.map(cloneVariable).toList();
-    var function = new FunctionNode(new EmptyStatement(),
-        positionalParameters: positionalParameters,
-        namedParameters: namedParameters,
-        requiredParameterCount: superFunction.requiredParameterCount,
-        returnType: const VoidType());
-
-    // Build a [SuperInitializer] which takes all positional/named parameters
-    // and forward them to the super class constructor.
-    var positionalArguments = <Expression>[];
-    for (var variable in positionalParameters) {
-      positionalArguments.add(new VariableGet(variable));
-    }
-    var namedArguments = <NamedExpression>[];
-    for (var variable in namedParameters) {
-      namedArguments
-          .add(new NamedExpression(variable.name, new VariableGet(variable)));
-    }
-    var superInitializer = new SuperInitializer(superclassConstructor,
-        new Arguments(positionalArguments, named: namedArguments));
-
-    // Assemble the constructor.
-    return new Constructor(function,
-        name: superclassConstructor.name,
-        initializers: <Initializer>[superInitializer],
-        isSynthetic: true);
-  }
 }
 
 class SuperCallResolutionTransformer extends Transformer {
diff --git a/pkg/kernel/lib/transformations/treeshaker.dart b/pkg/kernel/lib/transformations/treeshaker.dart
index 8d35913..4ab0c38 100644
--- a/pkg/kernel/lib/transformations/treeshaker.dart
+++ b/pkg/kernel/lib/transformations/treeshaker.dart
@@ -12,9 +12,9 @@
 
 Component transformComponent(
     CoreTypes coreTypes, ClassHierarchy hierarchy, Component component,
-    {List<ProgramRoot> programRoots, bool strongMode: false}) {
+    {List<ProgramRoot> programRoots, bool legacyMode: false}) {
   new TreeShaker(coreTypes, hierarchy, component,
-          programRoots: programRoots, strongMode: strongMode)
+          programRoots: programRoots, legacyMode: legacyMode)
       .transform(component);
   return component;
 }
@@ -98,7 +98,7 @@
   final Map<Class, int> numberedClasses;
   final List<Class> classes;
   final Component component;
-  final bool strongMode;
+  final bool legacyMode;
   final List<ProgramRoot> programRoots;
 
   /// Map from classes to set of names that have been dispatched with that class
@@ -179,9 +179,9 @@
   bool get forceShaking => programRoots != null && programRoots.isNotEmpty;
 
   TreeShaker(CoreTypes coreTypes, ClassHierarchy hierarchy, Component component,
-      {bool strongMode: false, List<ProgramRoot> programRoots})
+      {List<ProgramRoot> programRoots, bool legacyMode: false})
       : this._internal(
-            coreTypes, hierarchy, component, strongMode, programRoots);
+            coreTypes, hierarchy, component, legacyMode, programRoots);
 
   bool isMemberBodyUsed(Member member) {
     return _usedMembers.containsKey(member);
@@ -229,7 +229,7 @@
   }
 
   TreeShaker._internal(this.coreTypes, this.hierarchy, this.component,
-      this.strongMode, this.programRoots)
+      this.legacyMode, this.programRoots)
       : this._dispatchedNames = new List<Set<Name>>(hierarchy.numberOfClasses),
         this._usedMembersWithHost =
             new List<Set<Member>>(hierarchy.numberOfClasses),
@@ -284,7 +284,7 @@
 
     // Mark overridden members in order to preserve abstract members as
     // necessary.
-    if (strongMode) {
+    if (!legacyMode) {
       for (int i = classes.length - 1; i >= 0; --i) {
         Class class_ = classes[i];
         if (isHierarchyUsed(class_)) {
@@ -669,7 +669,7 @@
   _TreeShakerVisitor(TreeShaker shaker)
       : this.shaker = shaker,
         this.coreTypes = shaker.coreTypes,
-        this.strongMode = shaker.strongMode,
+        this.strongMode = !shaker.legacyMode,
         this.types = new TypeEnvironment(shaker.coreTypes, shaker.hierarchy) {
     types.errorHandler = handleError;
   }
diff --git a/pkg/kernel/lib/type_checker.dart b/pkg/kernel/lib/type_checker.dart
index 007cf4a..850b2dd 100644
--- a/pkg/kernel/lib/type_checker.dart
+++ b/pkg/kernel/lib/type_checker.dart
@@ -20,10 +20,9 @@
   TypeEnvironment environment;
 
   TypeChecker(this.coreTypes, this.hierarchy,
-      {bool strongMode: false, this.ignoreSdk: true}) {
-    environment =
-        new TypeEnvironment(coreTypes, hierarchy, strongMode: strongMode);
-  }
+      {bool legacyMode: false, this.ignoreSdk: true})
+      : environment =
+            new TypeEnvironment(coreTypes, hierarchy, strongMode: !legacyMode);
 
   void checkComponent(Component component) {
     for (var library in component.libraries) {
@@ -819,8 +818,7 @@
       if (iteratorGetter == null) return const DynamicType();
       var castedIterable = hierarchy.getTypeAsInstanceOf(
           iterable, iteratorGetter.enclosingClass);
-      var iteratorType = Substitution
-          .fromInterfaceType(castedIterable)
+      var iteratorType = Substitution.fromInterfaceType(castedIterable)
           .substituteType(iteratorGetter.getterType);
       if (iteratorType is InterfaceType) {
         var currentGetter =
@@ -828,8 +826,7 @@
         if (currentGetter == null) return const DynamicType();
         var castedIteratorType = hierarchy.getTypeAsInstanceOf(
             iteratorType, currentGetter.enclosingClass);
-        return Substitution
-            .fromInterfaceType(castedIteratorType)
+        return Substitution.fromInterfaceType(castedIteratorType)
             .substituteType(currentGetter.getterType);
       }
     }
diff --git a/pkg/kernel/lib/type_environment.dart b/pkg/kernel/lib/type_environment.dart
index 0e50c51..5e216eb 100644
--- a/pkg/kernel/lib/type_environment.dart
+++ b/pkg/kernel/lib/type_environment.dart
@@ -152,53 +152,60 @@
     return !hierarchy.hasProperSubtypes(class_);
   }
 
+  bool isObject(DartType type) {
+    return type is InterfaceType && type.classNode == objectType.classNode;
+  }
+
+  bool isNull(DartType type) {
+    return type is InterfaceType && type.classNode == nullType.classNode;
+  }
+
   /// Replaces all covariant occurrences of `dynamic`, `Object`, and `void` with
-  /// `Null` and all contravariant occurrences of `Null` with `Object`.
-  DartType replaceTopAndBottom(DartType type, {bool isCovariant = true}) {
-    if (type is DynamicType && isCovariant) {
-      return const BottomType();
-    } else if (type is InterfaceType &&
-        type.classNode == objectType.classNode &&
+  /// [BottomType] and all contravariant occurrences of `Null` and [BottomType]
+  /// with `Object`.
+  DartType convertSuperBoundedToRegularBounded(DartType type,
+      {bool isCovariant = true}) {
+    if ((type is DynamicType || type is VoidType || isObject(type)) &&
         isCovariant) {
       return const BottomType();
+    } else if ((type is BottomType || isNull(type)) && !isCovariant) {
+      return objectType;
     } else if (type is InterfaceType && type.classNode.typeParameters != null) {
-      List<DartType> typeArguments = type.typeArguments ??
-          calculateBounds(type.classNode.typeParameters, objectType.classNode);
       List<DartType> replacedTypeArguments =
-          new List<DartType>(typeArguments.length);
+          new List<DartType>(type.typeArguments.length);
       for (int i = 0; i < replacedTypeArguments.length; i++) {
-        replacedTypeArguments[i] =
-            replaceTopAndBottom(typeArguments[i], isCovariant: true);
+        replacedTypeArguments[i] = convertSuperBoundedToRegularBounded(
+            type.typeArguments[i],
+            isCovariant: isCovariant);
       }
       return new InterfaceType(type.classNode, replacedTypeArguments);
     } else if (type is TypedefType && type.typedefNode.typeParameters != null) {
-      List<DartType> typeArguments = type.typeArguments ??
-          calculateBounds(
-              type.typedefNode.typeParameters, objectType.classNode);
       List<DartType> replacedTypeArguments =
-          new List<DartType>(typeArguments.length);
+          new List<DartType>(type.typeArguments.length);
       for (int i = 0; i < replacedTypeArguments.length; i++) {
-        replacedTypeArguments[i] =
-            replaceTopAndBottom(typeArguments[i], isCovariant: true);
+        replacedTypeArguments[i] = convertSuperBoundedToRegularBounded(
+            type.typeArguments[i],
+            isCovariant: isCovariant);
       }
       return new TypedefType(type.typedefNode, replacedTypeArguments);
     } else if (type is FunctionType) {
-      var replacedReturnType =
-          replaceTopAndBottom(type.returnType, isCovariant: true);
+      var replacedReturnType = convertSuperBoundedToRegularBounded(
+          type.returnType,
+          isCovariant: isCovariant);
       var replacedPositionalParameters =
           new List<DartType>(type.positionalParameters.length);
       for (int i = 0; i < replacedPositionalParameters.length; i++) {
-        replacedPositionalParameters[i] = replaceTopAndBottom(
+        replacedPositionalParameters[i] = convertSuperBoundedToRegularBounded(
             type.positionalParameters[i],
-            isCovariant: false);
+            isCovariant: !isCovariant);
       }
       var replacedNamedParameters =
           new List<NamedType>(type.namedParameters.length);
       for (int i = 0; i < replacedNamedParameters.length; i++) {
         replacedNamedParameters[i] = new NamedType(
             type.namedParameters[i].name,
-            replaceTopAndBottom(type.namedParameters[i].type,
-                isCovariant: false));
+            convertSuperBoundedToRegularBounded(type.namedParameters[i].type,
+                isCovariant: !isCovariant));
       }
       return new FunctionType(replacedPositionalParameters, replacedReturnType,
           namedParameters: replacedNamedParameters,
@@ -209,71 +216,197 @@
     return type;
   }
 
-  bool isSuperBounded(DartType type) {
-    List<TypeParameter> typeParameters;
-    List<DartType> typeArguments;
+  // TODO(dmitryas):  Remove [typedefInstantiations] when type arguments passed
+  // to typedefs are preserved in the Kernel output.
+  List<Object> findBoundViolations(DartType type,
+      {bool allowSuperBounded = false,
+      Map<FunctionType, List<DartType>> typedefInstantiations}) {
+    List<TypeParameter> variables;
+    List<DartType> arguments;
+    List<Object> typedefRhsResult;
 
-    if (type is InterfaceType && type.classNode.typeParameters != null) {
-      typeParameters = type.classNode.typeParameters;
-      typeArguments = type.typeArguments;
-    } else if (type is TypedefType && type.typedefNode.typeParameters != null) {
-      typeParameters = type.typedefNode.typeParameters;
-      typeArguments = type.typeArguments;
+    if (typedefInstantiations != null &&
+        typedefInstantiations.containsKey(type)) {
+      // [type] is a function type that is an application of a parametrized
+      // typedef.  We need to check both the l.h.s. and the r.h.s. of the
+      // definition in that case.  For details, see [link]
+      // (https://github.com/dart-lang/sdk/blob/master/docs/language/informal/super-bounded-types.md).
+      FunctionType functionType = type;
+      FunctionType cloned = new FunctionType(
+          functionType.positionalParameters, functionType.returnType,
+          namedParameters: functionType.namedParameters,
+          typeParameters: functionType.typeParameters,
+          requiredParameterCount: functionType.requiredParameterCount,
+          typedefReference: null);
+      typedefRhsResult = findBoundViolations(cloned,
+          allowSuperBounded: true,
+          typedefInstantiations: typedefInstantiations);
+      type = new TypedefType(functionType.typedef, typedefInstantiations[type]);
     }
 
-    if (typeParameters == null) {
-      return false;
+    if (type is InterfaceType) {
+      variables = type.classNode.typeParameters;
+      arguments = type.typeArguments;
+    } else if (type is TypedefType) {
+      variables = type.typedefNode.typeParameters;
+      arguments = type.typeArguments;
+    } else if (type is FunctionType) {
+      List<Object> result = <Object>[];
+      for (TypeParameter parameter in type.typeParameters) {
+        result.addAll(findBoundViolations(parameter.bound,
+                allowSuperBounded: true,
+                typedefInstantiations: typedefInstantiations) ??
+            const <Object>[]);
+      }
+      for (DartType formal in type.positionalParameters) {
+        result.addAll(findBoundViolations(formal,
+                allowSuperBounded: true,
+                typedefInstantiations: typedefInstantiations) ??
+            const <Object>[]);
+      }
+      for (NamedType named in type.namedParameters) {
+        result.addAll(findBoundViolations(named.type,
+                allowSuperBounded: true,
+                typedefInstantiations: typedefInstantiations) ??
+            const <Object>[]);
+      }
+      result.addAll(findBoundViolations(type.returnType,
+              allowSuperBounded: true,
+              typedefInstantiations: typedefInstantiations) ??
+          const <Object>[]);
+      return result.isEmpty ? null : result;
+    } else {
+      return null;
     }
 
-    typeArguments =
-        typeArguments ?? calculateBounds(typeParameters, objectType.classNode);
+    if (variables == null) return null;
 
-    var substitution = <TypeParameter, DartType>{};
-    for (int i = 0; i < typeParameters.length; i++) {
-      substitution[typeParameters[i]] = typeArguments[i];
-    }
-    var substitutedBounds = new List<DartType>(typeParameters.length);
-    for (int i = 0; i < typeParameters.length; i++) {
-      substitutedBounds[i] = substitute(typeParameters[i].bound, substitution);
-    }
+    List<Object> result;
+    List<Object> argumentsResult;
 
-    bool isViolated = false;
-    for (int i = 0; i < typeArguments.length; i++) {
-      if (!isSubtypeOf(typeArguments[i], substitutedBounds[i])) {
-        isViolated = true;
+    Map<TypeParameter, DartType> substitutionMap =
+        new Map<TypeParameter, DartType>.fromIterables(variables, arguments);
+    for (int i = 0; i < arguments.length; ++i) {
+      DartType argument = arguments[i];
+      if (argument is FunctionType && argument.typeParameters.length > 0) {
+        // Generic function types aren't allowed as type arguments either.
+        result ??= <Object>[];
+        result.add(argument);
+        result.add(variables[i]);
+        result.add(type);
+      } else if (!isSubtypeOf(
+          argument, substitute(variables[i].bound, substitutionMap))) {
+        result ??= <Object>[];
+        result.add(argument);
+        result.add(variables[i]);
+        result.add(type);
+      }
+
+      List<Object> violations = findBoundViolations(argument,
+          allowSuperBounded: true,
+          typedefInstantiations: typedefInstantiations);
+      if (violations != null) {
+        argumentsResult ??= <Object>[];
+        argumentsResult.addAll(violations);
       }
     }
-    if (!isViolated) {
-      return false;
+    if (argumentsResult != null) {
+      result ??= <Object>[];
+      result.addAll(argumentsResult);
+    }
+    if (typedefRhsResult != null) {
+      result ??= <Object>[];
+      result.addAll(typedefRhsResult);
     }
 
-    var replaced = replaceTopAndBottom(type);
-    List<DartType> replacedArguments;
-    if (replaced is InterfaceType) {
-      replacedArguments = replaced.typeArguments;
-    } else if (replaced is TypedefType) {
-      replacedArguments = replaced.typeArguments;
-    }
+    // [type] is regular-bounded.
+    if (result == null) return null;
+    if (!allowSuperBounded) return result;
 
-    if (replacedArguments == null) {
-      return false;
+    result = null;
+    type = convertSuperBoundedToRegularBounded(type);
+    List<DartType> argumentsToReport = arguments.toList();
+    if (type is InterfaceType) {
+      variables = type.classNode.typeParameters;
+      arguments = type.typeArguments;
+    } else if (type is TypedefType) {
+      variables = type.typedefNode.typeParameters;
+      arguments = type.typeArguments;
     }
-
-    var replacedSubstitution = <TypeParameter, DartType>{};
-    for (int i = 0; i < typeParameters.length; i++) {
-      replacedSubstitution[typeParameters[i]] = replacedArguments[i];
-    }
-    var replacedBounds = new List<DartType>(typeParameters.length);
-    for (int i = 0; i < typeParameters.length; i++) {
-      replacedBounds[i] =
-          substitute(typeParameters[i].bound, replacedSubstitution);
-    }
-    for (int i = 0; i < replacedArguments.length; i++) {
-      if (!isSubtypeOf(replacedArguments[i], replacedBounds[i])) {
-        return false;
+    substitutionMap =
+        new Map<TypeParameter, DartType>.fromIterables(variables, arguments);
+    for (int i = 0; i < arguments.length; ++i) {
+      DartType argument = arguments[i];
+      if (argument is FunctionType && argument.typeParameters.length > 0) {
+        // Generic function types aren't allowed as type arguments either.
+        result ??= <Object>[];
+        result.add(argumentsToReport[i]);
+        result.add(variables[i]);
+        result.add(type);
+      } else if (!isSubtypeOf(
+          argument, substitute(variables[i].bound, substitutionMap))) {
+        result ??= <Object>[];
+        result.add(argumentsToReport[i]);
+        result.add(variables[i]);
+        result.add(type);
       }
     }
-    return true;
+    if (argumentsResult != null) {
+      result ??= <Object>[];
+      result.addAll(argumentsResult);
+    }
+    if (typedefRhsResult != null) {
+      result ??= <Object>[];
+      result.addAll(typedefRhsResult);
+    }
+    return result;
+  }
+
+  // TODO(dmitryas):  Remove [typedefInstantiations] when type arguments passed
+  // to typedefs are preserved in the Kernel output.
+  List<Object> findBoundViolationsElementwise(
+      List<TypeParameter> parameters, List<DartType> arguments,
+      {Map<FunctionType, List<DartType>> typedefInstantiations}) {
+    assert(arguments.length == parameters.length);
+    List<Object> result;
+    var substitutionMap = <TypeParameter, DartType>{};
+    for (int i = 0; i < arguments.length; ++i) {
+      substitutionMap[parameters[i]] = arguments[i];
+    }
+    for (int i = 0; i < arguments.length; ++i) {
+      DartType argument = arguments[i];
+      if (argument is FunctionType && argument.typeParameters.length > 0) {
+        // Generic function types aren't allowed as type arguments either.
+        result ??= <Object>[];
+        result.add(argument);
+        result.add(parameters[i]);
+        result.add(null);
+      } else if (!isSubtypeOf(
+          argument, substitute(parameters[i].bound, substitutionMap))) {
+        result ??= <Object>[];
+        result.add(argument);
+        result.add(parameters[i]);
+        result.add(null);
+      }
+
+      List<Object> violations = findBoundViolations(argument,
+          allowSuperBounded: true,
+          typedefInstantiations: typedefInstantiations);
+      if (violations != null) {
+        result ??= <Object>[];
+        result.addAll(violations);
+      }
+    }
+    return result;
+  }
+
+  String getGenericTypeName(DartType type) {
+    if (type is InterfaceType) {
+      return type.classNode.name;
+    } else if (type is TypedefType) {
+      return type.typedefNode.name;
+    }
+    return type.toString();
   }
 }
 
@@ -401,7 +534,9 @@
         // Termination: if there are no cyclically bound type parameters, this
         // recursive call can only occur a finite number of times before
         // reaching a shrinking recursive call (or terminating).
-        if (!isSubtypeOf(superParameter.bound, subBound)) {
+        // TODO(dmitryas): Replace it with one recursive descent instead of two.
+        if (!isSubtypeOf(superParameter.bound, subBound) ||
+            !isSubtypeOf(subBound, superParameter.bound)) {
           return false;
         }
       }
diff --git a/pkg/kernel/lib/visitor.dart b/pkg/kernel/lib/visitor.dart
index 3133b20..ad879a2 100644
--- a/pkg/kernel/lib/visitor.dart
+++ b/pkg/kernel/lib/visitor.dart
@@ -539,3 +539,43 @@
   R visitFunctionDeclaration(FunctionDeclaration node, T arg) =>
       defaultStatement(node, arg);
 }
+
+abstract class BodyVisitor1<R, T> extends ExpressionVisitor1<R, T>
+    implements StatementVisitor1<R, T> {
+  const BodyVisitor1();
+
+  R defaultStatement(Statement node, T arg) => null;
+  R visitExpressionStatement(ExpressionStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitBlock(Block node, T arg) => defaultStatement(node, arg);
+  R visitAssertBlock(AssertBlock node, T arg) => defaultStatement(node, arg);
+  R visitEmptyStatement(EmptyStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitAssertStatement(AssertStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitLabeledStatement(LabeledStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitBreakStatement(BreakStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitWhileStatement(WhileStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitDoStatement(DoStatement node, T arg) => defaultStatement(node, arg);
+  R visitForStatement(ForStatement node, T arg) => defaultStatement(node, arg);
+  R visitForInStatement(ForInStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitSwitchStatement(SwitchStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitContinueSwitchStatement(ContinueSwitchStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitIfStatement(IfStatement node, T arg) => defaultStatement(node, arg);
+  R visitReturnStatement(ReturnStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitTryCatch(TryCatch node, T arg) => defaultStatement(node, arg);
+  R visitTryFinally(TryFinally node, T arg) => defaultStatement(node, arg);
+  R visitYieldStatement(YieldStatement node, T arg) =>
+      defaultStatement(node, arg);
+  R visitVariableDeclaration(VariableDeclaration node, T arg) =>
+      defaultStatement(node, arg);
+  R visitFunctionDeclaration(FunctionDeclaration node, T arg) =>
+      defaultStatement(node, arg);
+}
diff --git a/pkg/kernel/lib/vm/constants_native_effects.dart b/pkg/kernel/lib/vm/constants_native_effects.dart
index 44f43eb..167d82b 100644
--- a/pkg/kernel/lib/vm/constants_native_effects.dart
+++ b/pkg/kernel/lib/vm/constants_native_effects.dart
@@ -13,10 +13,11 @@
 
   final Class immutableMapClass;
   final Class internalSymbolClass;
+  final Class stringClass;
   final Field symbolNameField;
 
   VmConstantsBackend._(this.defines, this.immutableMapClass,
-      this.internalSymbolClass, this.symbolNameField);
+      this.internalSymbolClass, this.stringClass, this.symbolNameField);
 
   /// If [defines] is not `null` it will be used for handling
   /// `const {bool,...}.fromEnvironment()` otherwise the current VM's values
@@ -30,64 +31,99 @@
     final Class internalSymbolClass = coreTypes.internalSymbolClass;
     assert(internalSymbolClass != null);
 
+    final Class stringClass = coreTypes.stringClass;
+    assert(stringClass != null);
+
     final Field symbolNameField =
         internalSymbolClass.fields.where((Field field) {
       return field.isInstanceMember && field.name.name == '_name';
     }).single;
 
-    return new VmConstantsBackend._(
-        defines, immutableMapClass, internalSymbolClass, symbolNameField);
+    return new VmConstantsBackend._(defines, immutableMapClass,
+        internalSymbolClass, stringClass, symbolNameField);
   }
 
   Constant buildConstantForNative(
       String nativeName,
       List<DartType> typeArguments,
       List<Constant> positionalArguments,
-      Map<String, Constant> namedArguments) {
-    switch (nativeName) {
-      case 'Bool_fromEnvironment':
-        final String name = (positionalArguments[0] as StringConstant).value;
-        final Constant constant = namedArguments['defaultValue'];
-        final bool defaultValue = constant is BoolConstant
-            ? constant.value
-            : (constant is NullConstant ? null : false);
-        bool value;
-        if (defines != null) {
-          value = defines[name] == 'true'
-              ? true
-              : (defines[name] == 'false' ? false : defaultValue);
-        } else {
-          value = new bool.fromEnvironment(name, defaultValue: defaultValue);
+      Map<String, Constant> namedArguments,
+      List<TreeNode> context,
+      StaticInvocation node,
+      ErrorReporter errorReporter,
+      void abortEvaluation()) {
+    if ([
+      'Bool_fromEnvironment',
+      'Integer_fromEnvironment',
+      'String_fromEnvironment'
+    ].contains(nativeName)) {
+      final argument = positionalArguments[0];
+      if (argument is StringConstant) {
+        final name = argument.value;
+
+        Constant handleFromEnvironment<ValueT, ConstantT>(
+            {ValueT defaultValue,
+            ValueT parse(String v, {ValueT defaultValue}),
+            ValueT fromEnvironment(String name, {ValueT defaultValue}),
+            ConstantT makeConstant(ValueT val)}) {
+          final Constant constant = namedArguments['defaultValue'];
+          if (constant is ConstantT) {
+            defaultValue = (constant as dynamic).value;
+          } else if (constant is NullConstant) {
+            defaultValue = null;
+          }
+          ValueT value;
+          if (defines != null) {
+            value = parse(defines[name], defaultValue: defaultValue);
+          } else {
+            value = fromEnvironment(name, defaultValue: defaultValue);
+          }
+          return value != null ? makeConstant(value) : new NullConstant();
         }
-        return value != null ? new BoolConstant(value) : new NullConstant();
-      case 'Integer_fromEnvironment':
-        final String name = (positionalArguments[0] as StringConstant).value;
-        final Constant constant = namedArguments['defaultValue'];
-        final int defaultValue =
-            constant is IntConstant ? constant.value : null;
-        int value;
-        if (defines != null) {
-          final String defineValue = defines[name];
-          value = defineValue != null
-              ? (int.tryParse(defineValue) ?? defaultValue)
-              : defaultValue;
-        } else {
-          value = new int.fromEnvironment(name, defaultValue: defaultValue);
+
+        switch (nativeName) {
+          case 'Bool_fromEnvironment':
+            return handleFromEnvironment<bool, BoolConstant>(
+                defaultValue: false,
+                parse: (String v, {bool defaultValue}) {
+                  final String defineValue = defines[name];
+                  return defineValue == 'true'
+                      ? true
+                      : (defineValue == 'false' ? false : defaultValue);
+                },
+                fromEnvironment: (v, {defaultValue}) =>
+                    bool.fromEnvironment(v, defaultValue: defaultValue),
+                makeConstant: (v) => BoolConstant(v));
+          case 'Integer_fromEnvironment':
+            return handleFromEnvironment<int, IntConstant>(
+                defaultValue: null,
+                parse: (String v, {int defaultValue}) {
+                  final String defineValue = defines[name];
+                  return defineValue != null
+                      ? (int.tryParse(defineValue) ?? defaultValue)
+                      : defaultValue;
+                },
+                fromEnvironment: (v, {defaultValue}) =>
+                    int.fromEnvironment(v, defaultValue: defaultValue),
+                makeConstant: (v) => new IntConstant(v));
+          case 'String_fromEnvironment':
+            return handleFromEnvironment<String, StringConstant>(
+                defaultValue: null,
+                parse: (String v, {String defaultValue}) {
+                  final String defineValue = defines[name];
+                  return defineValue ?? defaultValue;
+                },
+                fromEnvironment: (v, {defaultValue}) =>
+                    String.fromEnvironment(v, defaultValue: defaultValue),
+                makeConstant: (v) => new StringConstant(v));
         }
-        return value != null ? new IntConstant(value) : new NullConstant();
-      case 'String_fromEnvironment':
-        final String name = (positionalArguments[0] as StringConstant).value;
-        final Constant constant = namedArguments['defaultValue'];
-        final String defaultValue =
-            constant is StringConstant ? constant.value : null;
-        String value;
-        if (defines != null) {
-          value = defines[name] ?? defaultValue;
-        } else {
-          value = new String.fromEnvironment(name, defaultValue: defaultValue);
-        }
-        return value == null ? new NullConstant() : new StringConstant(value);
+      } else {
+        errorReporter.invalidDartType(context, node.arguments.positional.first,
+            argument, new InterfaceType(stringClass));
+        abortEvaluation();
+      }
     }
+
     throw 'No native effect registered for constant evaluation: $nativeName';
   }
 
diff --git a/pkg/kernel/pubspec.yaml b/pkg/kernel/pubspec.yaml
index f9119a0..0f1e39a 100644
--- a/pkg/kernel/pubspec.yaml
+++ b/pkg/kernel/pubspec.yaml
@@ -13,9 +13,8 @@
   logging: ^0.11.2
   package_config: ^1.0.0
 dev_dependencies:
-  analyzer: '^0.33.0'
   front_end: 0.1.6
-  test: ^0.12.15+6
+  test: ^1.3.4
   stack_trace: ^1.6.6
   test_reflective_loader: ^0.1.0
   testing:
diff --git a/pkg/kernel/test/class_hierarchy_test.dart b/pkg/kernel/test/class_hierarchy_test.dart
index 0ff8051..10b2ba2 100644
--- a/pkg/kernel/test/class_hierarchy_test.dart
+++ b/pkg/kernel/test/class_hierarchy_test.dart
@@ -103,7 +103,7 @@
         unorderedEquals([methodA1, methodA2, methodA3]));
 
     // Apply member changes again, this time telling the hierarchy to find
-    // decendants.
+    // descendants.
     hierarchy.applyMemberChanges([a], findDescendants: true);
     expect(hierarchy.getDispatchTargets(b),
         unorderedEquals([methodA1, methodA2, methodA3, methodB1]));
diff --git a/pkg/kernel/test/interpreter/interpreter.status b/pkg/kernel/test/interpreter/interpreter.status
deleted file mode 100644
index 3642988..0000000
--- a/pkg/kernel/test/interpreter/interpreter.status
+++ /dev/null
@@ -1,3 +0,0 @@
-# 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.md file.
diff --git a/pkg/kernel/test/interpreter/suite.dart b/pkg/kernel/test/interpreter/suite.dart
deleted file mode 100644
index 00a8e03..0000000
--- a/pkg/kernel/test/interpreter/suite.dart
+++ /dev/null
@@ -1,104 +0,0 @@
-// 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.md file.
-
-library test.kernel.closures.suite;
-
-import 'dart:async' show Future;
-
-import 'dart:io' show File;
-
-import 'package:testing/testing.dart'
-    show Chain, ChainContext, Result, Step, runMe;
-
-import 'package:kernel/ast.dart' show Component, Library;
-
-import 'package:kernel/target/targets.dart' show Target;
-
-import 'package:front_end/src/fasta/testing/kernel_chain.dart'
-    show runDiff, Compile, CompileContext;
-
-import 'package:kernel/interpreter/interpreter.dart';
-
-const String STRONG_MODE = " strong mode ";
-
-class InterpreterContext extends ChainContext implements CompileContext {
-  final bool strongMode;
-  Target get target => null;
-
-  final List<Step> steps;
-
-  InterpreterContext(this.strongMode)
-      : steps = <Step>[
-          const Compile(),
-          const Interpret(),
-          const MatchLogExpectation(".expect"),
-        ];
-
-  static Future<InterpreterContext> create(
-      Chain suite, Map<String, String> environment) async {
-    bool strongMode = environment.containsKey(STRONG_MODE);
-    return new InterpreterContext(strongMode);
-  }
-}
-
-class Interpret extends Step<Component, EvaluationLog, InterpreterContext> {
-  const Interpret();
-
-  String get name => "interpret";
-
-  Future<Result<EvaluationLog>> run(Component component, _) async {
-    Library library = component.libraries
-        .firstWhere((Library library) => library.importUri.scheme != "dart");
-    Uri uri = library.importUri;
-
-    StringBuffer buffer = new StringBuffer();
-    log.onRecord.listen((LogRecord rec) => buffer.write(rec.message));
-    try {
-      new Interpreter(component).run();
-    } catch (e, s) {
-      return crash(e, s);
-    }
-
-    return pass(new EvaluationLog(uri, "$buffer"));
-  }
-}
-
-class MatchLogExpectation extends Step<EvaluationLog, int, InterpreterContext> {
-  final String suffix;
-
-  String get name => "match log expectation";
-
-  const MatchLogExpectation(this.suffix);
-
-  Future<Result<int>> run(EvaluationLog result, _) async {
-    Uri uri = result.uri;
-
-    File expectedFile = new File("${uri.toFilePath()}$suffix");
-    if (await expectedFile.exists()) {
-      String expected = await expectedFile.readAsString();
-      if (expected.trim() != result.log.trim()) {
-        String diff = await runDiff(expectedFile.uri, result.log);
-        return fail(null, "$uri doesn't match ${expectedFile.uri}\n$diff");
-      } else {
-        return pass(0);
-      }
-    }
-    return fail(
-        null, """Please create file ${expectedFile.path} with this content:
-        ${result.log}""");
-  }
-}
-
-class EvaluationLog {
-  /// Evaluated program uri.
-  final Uri uri;
-
-  /// Evaluated program log.
-  final String log;
-
-  EvaluationLog(this.uri, this.log);
-}
-
-main(List<String> arguments) =>
-    runMe(arguments, InterpreterContext.create, "testing.json");
diff --git a/pkg/kernel/test/interpreter/testing.json b/pkg/kernel/test/interpreter/testing.json
deleted file mode 100644
index 9c67451..0000000
--- a/pkg/kernel/test/interpreter/testing.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-"":"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.md file.",
-  "packages": "../../../../.packages",
-  "suites": [
-    {
-      "name": "interpreter",
-      "kind": "Chain",
-      "source": "suite.dart",
-      "path": "../../testcases/interpreter",
-      "status": "interpreter.status",
-      "pattern": [
-        "\\.dart$"
-      ],
-      "exclude": [
-        "/test/interpreter/suite\\.dart$"
-      ]
-    }
-  ],
-  "analyze": {
-    "uris": [
-      "interpreter.dart"
-    ],
-    "exclude": [
-    ]
-  }
-}
diff --git a/pkg/kernel/test/metadata_test.dart b/pkg/kernel/test/metadata_test.dart
index 02cf108..e8f3e1c 100644
--- a/pkg/kernel/test/metadata_test.dart
+++ b/pkg/kernel/test/metadata_test.dart
@@ -149,8 +149,8 @@
 
 main() {
   test('annotate-serialize-deserialize-validate', () async {
-    final Uri platform =
-        computePlatformBinariesLocation().resolve("vm_platform_strong.dill");
+    final Uri platform = computePlatformBinariesLocation(forceBuildDir: true)
+        .resolve("vm_platform_strong.dill");
     final List<int> platformBinary =
         await new File(platform.toFilePath()).readAsBytes();
 
diff --git a/pkg/kernel/test/treeshaker_bench.dart b/pkg/kernel/test/treeshaker_bench.dart
index 5f6ef67..c2a6de9 100644
--- a/pkg/kernel/test/treeshaker_bench.dart
+++ b/pkg/kernel/test/treeshaker_bench.dart
@@ -59,7 +59,7 @@
   ClassHierarchy sharedClassHierarchy = buildClassHierarchy();
   int coldHierarchyTime = watch.elapsedMicroseconds;
   var shaker = new TreeShaker(coreTypes, sharedClassHierarchy, component,
-      strongMode: strongMode);
+      legacyMode: !strongMode);
   if (options['diagnose']) {
     print(shaker.getDiagnosticString());
   }
@@ -80,7 +80,7 @@
     watch.reset();
     var hierarchy = getClassHierarchy();
     hotHierarchyTime += watch.elapsedMicroseconds;
-    new TreeShaker(coreTypes, hierarchy, component, strongMode: strongMode);
+    new TreeShaker(coreTypes, hierarchy, component, legacyMode: !strongMode);
     hotTreeShakingTime += watch.elapsedMicroseconds;
   }
   hotHierarchyTime ~/= numberOfTrials;
diff --git a/pkg/kernel/test/treeshaker_check.dart b/pkg/kernel/test/treeshaker_check.dart
index 9597141..92711b6 100644
--- a/pkg/kernel/test/treeshaker_check.dart
+++ b/pkg/kernel/test/treeshaker_check.dart
@@ -24,7 +24,8 @@
   var component = loadComponentFromBinary(args[0]);
   var coreTypes = new CoreTypes(component);
   var hierarchy = new ClassHierarchy(component);
-  var shaker = new TreeShaker(coreTypes, hierarchy, component);
+  var shaker =
+      new TreeShaker(coreTypes, hierarchy, component, legacyMode: true);
   shaker.transform(component);
   new TreeShakingSanityCheck(shaker).visit(component);
 }
diff --git a/pkg/kernel/test/treeshaker_dump.dart b/pkg/kernel/test/treeshaker_dump.dart
index 8e56d71..2ed4aa8 100644
--- a/pkg/kernel/test/treeshaker_dump.dart
+++ b/pkg/kernel/test/treeshaker_dump.dart
@@ -69,7 +69,7 @@
   CoreTypes coreTypes = new CoreTypes(component);
   ClassHierarchy hierarchy = new ClassHierarchy(component);
   TreeShaker shaker =
-      new TreeShaker(coreTypes, hierarchy, component, strongMode: strong);
+      new TreeShaker(coreTypes, hierarchy, component, legacyMode: !strong);
   int totalClasses = 0;
   int totalInstantiationCandidates = 0;
   int totalMembers = 0;
@@ -132,7 +132,7 @@
     StringBuffer before = new StringBuffer();
     new Printer(before, syntheticNames: names).writeComponentFile(component);
     new File(beforeFile).writeAsStringSync('$before');
-    new TreeShaker(coreTypes, hierarchy, component, strongMode: strong)
+    new TreeShaker(coreTypes, hierarchy, component, legacyMode: !strong)
         .transform(component);
     StringBuffer after = new StringBuffer();
     new Printer(after, syntheticNames: names).writeComponentFile(component);
diff --git a/pkg/kernel/test/treeshaker_membench.dart b/pkg/kernel/test/treeshaker_membench.dart
index b4f3dca..537442c 100644
--- a/pkg/kernel/test/treeshaker_membench.dart
+++ b/pkg/kernel/test/treeshaker_membench.dart
@@ -46,7 +46,7 @@
 
   TreeShaker buildTreeShaker() {
     return new TreeShaker(coreTypes, hierarchy, component,
-        strongMode: strongMode);
+        legacyMode: !strongMode);
   }
 
   List<TreeShaker> keepAlive = <TreeShaker>[];
diff --git a/pkg/kernel/test/type_subtype_test.dart b/pkg/kernel/test/type_subtype_test.dart
index a1fb124..e9abd59 100644
--- a/pkg/kernel/test/type_subtype_test.dart
+++ b/pkg/kernel/test/type_subtype_test.dart
@@ -74,19 +74,22 @@
   notSubtype('<E,F>(E) => (F) => E', '<E>(E) => <F>(F) => E'),
   notSubtype('<E,F>(E) => (F) => E', '<F,E>(E) => (F) => E'),
 
-  subtype('<E>(E,num) => E', '<E:num>(E,E) => E'),
-  subtype('<E:num>(E) => int', '<E:int>(E) => int'),
-  subtype('<E:num>(E) => E', '<E:int>(E) => E'),
-  subtype('<E:num>(int) => E', '<E:int>(int) => E'),
+  notSubtype('<E>(E,num) => E', '<E:num>(E,E) => E'),
+  notSubtype('<E:num>(E) => int', '<E:int>(E) => int'),
+  notSubtype('<E:num>(E) => E', '<E:int>(E) => E'),
+  notSubtype('<E:num>(int) => E', '<E:int>(int) => E'),
+  subtype('<E:num>(E) => E', '<F:num>(F) => num'),
+  subtype('<E:int>(E) => E', '<F:int>(F) => num'),
+  subtype('<E:int>(E) => E', '<F:int>(F) => int'),
   notSubtype('<E>(int) => int', '(int) => int'),
   notSubtype('<E,F>(int) => int', '<E>(int) => int'),
 
   subtype('<E:List<E>>(E) => E', '<F:List<F>>(F) => F'),
-  subtype('<E:Iterable<E>>(E) => E', '<F:List<F>>(F) => F'),
-  subtype('<E>(E,List<Object>) => E', '<F:List<F>>(F,F) => F'),
+  notSubtype('<E:Iterable<E>>(E) => E', '<F:List<F>>(F) => F'),
+  notSubtype('<E>(E,List<Object>) => E', '<F:List<F>>(F,F) => F'),
   notSubtype('<E>(E,List<Object>) => List<E>', '<F:List<F>>(F,F) => F'),
   notSubtype('<E>(E,List<Object>) => int', '<F:List<F>>(F,F) => F'),
-  subtype('<E>(E,List<Object>) => E', '<F:List<F>>(F,F) => void'),
+  notSubtype('<E>(E,List<Object>) => E', '<F:List<F>>(F,F) => void'),
 
   subtype('int', 'FutureOr<int>', strongMode: true),
   subtype('int', 'FutureOr<num>', strongMode: true),
diff --git a/pkg/kernel/test/typecheck.dart b/pkg/kernel/test/typecheck.dart
index 731378e..0a6d83b 100644
--- a/pkg/kernel/test/typecheck.dart
+++ b/pkg/kernel/test/typecheck.dart
@@ -27,7 +27,7 @@
 
 class TestTypeChecker extends TypeChecker {
   TestTypeChecker(CoreTypes coreTypes, ClassHierarchy hierarchy)
-      : super(coreTypes, hierarchy);
+      : super(coreTypes, hierarchy, legacyMode: true);
 
   @override
   void checkAssignable(TreeNode where, DartType from, DartType to) {
diff --git a/pkg/kernel/testcases/.gitignore b/pkg/kernel/testcases/.gitignore
deleted file mode 100644
index 8958632..0000000
--- a/pkg/kernel/testcases/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.current.txt
diff --git a/pkg/kernel/testcases/interpreter/break_test.dart b/pkg/kernel/testcases/interpreter/break_test.dart
deleted file mode 100644
index cbb4719..0000000
--- a/pkg/kernel/testcases/interpreter/break_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-main() {
-  int i = 0;
-  while (true) {
-    try {
-      if (i == 5) {
-        break;
-      }
-    } catch (e, _) {} finally {
-      print('Finally with i=$i');
-    }
-    print(i);
-    i++;
-  }
-}
diff --git a/pkg/kernel/testcases/interpreter/break_test.dart.expect b/pkg/kernel/testcases/interpreter/break_test.dart.expect
deleted file mode 100644
index 70d3cbd..0000000
--- a/pkg/kernel/testcases/interpreter/break_test.dart.expect
+++ /dev/null
@@ -1,12 +0,0 @@
-print(String: Finally with i=0)
-print(int: 0)
-print(String: Finally with i=1)
-print(int: 1)
-print(String: Finally with i=2)
-print(int: 2)
-print(String: Finally with i=3)
-print(int: 3)
-print(String: Finally with i=4)
-print(int: 4)
-if-then
-print(String: Finally with i=5)
diff --git a/pkg/kernel/testcases/interpreter/constructor_simple_test.dart b/pkg/kernel/testcases/interpreter/constructor_simple_test.dart
deleted file mode 100644
index f1a074b..0000000
--- a/pkg/kernel/testcases/interpreter/constructor_simple_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-
-/// Test program that creates an object by invoking a constor without
-/// initializers.
-main() {
-  var objA = new A(37, 'test');
-  print(objA.a);
-  print(objA.b);
-}
-
-class A {
-  int a;
-  String b;
-
-  A(int a, String b) {
-    this.a = a;
-    this.b = b;
-  }
-}
diff --git a/pkg/kernel/testcases/interpreter/constructor_simple_test.dart.expect b/pkg/kernel/testcases/interpreter/constructor_simple_test.dart.expect
deleted file mode 100644
index 9508de4..0000000
--- a/pkg/kernel/testcases/interpreter/constructor_simple_test.dart.expect
+++ /dev/null
@@ -1,2 +0,0 @@
-print(int: 37)
-print(String: test)
diff --git a/pkg/kernel/testcases/interpreter/constructor_test.dart b/pkg/kernel/testcases/interpreter/constructor_test.dart
deleted file mode 100644
index 5e3d19b..0000000
--- a/pkg/kernel/testcases/interpreter/constructor_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-library constructor_test;
-
-void main() {
-  var a = new A();
-  print(a.foo);
-  print('******************');
-
-  var b = new B();
-  print(b.foo);
-  print(b.bar);
-}
-
-class A {
-  String foo = fieldInitializer(0, 'A.foo');
-
-  A() : foo = fieldInitializer(1, 'A.foo') {
-    foo = fieldInitializer(2, 'A.foo');
-  }
-}
-
-class B extends A {
-  String bar = fieldInitializer(0, 'B.bar');
-
-  B() : bar = fieldInitializer(1, 'B.bar') {
-    bar = fieldInitializer(2, 'B.bar');
-  }
-}
-
-String fieldInitializer(int f, String s) {
-  print('$s: $f');
-  return '$s: $f';
-}
diff --git a/pkg/kernel/testcases/interpreter/constructor_test.dart.expect b/pkg/kernel/testcases/interpreter/constructor_test.dart.expect
deleted file mode 100644
index 2d1ed18..0000000
--- a/pkg/kernel/testcases/interpreter/constructor_test.dart.expect
+++ /dev/null
@@ -1,31 +0,0 @@
-static-invocation-fieldInitializer
-print(String: A.foo: 0)
-return
-static-invocation-fieldInitializer
-print(String: A.foo: 1)
-return
-static-invocation-fieldInitializer
-print(String: A.foo: 2)
-return
-print(String: A.foo: 2)
-print(String: ******************)
-static-invocation-fieldInitializer
-print(String: B.bar: 0)
-return
-static-invocation-fieldInitializer
-print(String: B.bar: 1)
-return
-static-invocation-fieldInitializer
-print(String: A.foo: 0)
-return
-static-invocation-fieldInitializer
-print(String: A.foo: 1)
-return
-static-invocation-fieldInitializer
-print(String: A.foo: 2)
-return
-static-invocation-fieldInitializer
-print(String: B.bar: 2)
-return
-print(String: A.foo: 2)
-print(String: B.bar: 2)
\ No newline at end of file
diff --git a/pkg/kernel/testcases/interpreter/function_expressions_test.dart b/pkg/kernel/testcases/interpreter/function_expressions_test.dart
deleted file mode 100644
index e009f5f..0000000
--- a/pkg/kernel/testcases/interpreter/function_expressions_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-
-library function_expression_test;
-
-main() {
-  var f = (int m, int n) => print('${m++}$n');
-  var a1 = 3;
-  var a2 = 7;
-
-  f(a1, a2);
-
-  int foo(int f1, String f2) {
-    print('$f1, $f2');
-    a1++;
-    return a1;
-  }
-
-  var m = foo(1, 'test');
-  print(m);
-  print(a1);
-
-  int bar(int i) {
-    if (i < 0 || i == 0) return 0;
-    return bar(--i);
-  }
-
-  print(bar(5));
-}
diff --git a/pkg/kernel/testcases/interpreter/function_expressions_test.dart.expect b/pkg/kernel/testcases/interpreter/function_expressions_test.dart.expect
deleted file mode 100644
index 0e1abe4..0000000
--- a/pkg/kernel/testcases/interpreter/function_expressions_test.dart.expect
+++ /dev/null
@@ -1,14 +0,0 @@
-return
-print(String: 37)
-print(String: 1, test)
-return
-print(int: 4)
-print(int: 4)
-return
-return
-return
-return
-return
-if-then
-return
-print(int: 0)
diff --git a/pkg/kernel/testcases/interpreter/instance_and_static_fields_test.dart b/pkg/kernel/testcases/interpreter/instance_and_static_fields_test.dart
deleted file mode 100644
index 8b3ef9a..0000000
--- a/pkg/kernel/testcases/interpreter/instance_and_static_fields_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-library object_field_initializers_test;
-
-/// Simple program creating an object with instance field initializers and
-/// static fields in the declaration of the class.
-void main() {
-  print('Create instance of A');
-  var a1 = new A();
-  print(a1.foo1);
-  print(a1.foo2);
-  print(a1.foo3);
-
-  print('Read staticFoo');
-  print(A.staticFoo);
-}
-
-class A {
-  static String staticFoo = 'staticFoo';
-  String foo1 = 'foo1';
-  String foo2;
-  String foo3 = 'foo3';
-
-  A() {
-    this.foo2 = 'foo2';
-  }
-}
diff --git a/pkg/kernel/testcases/interpreter/instance_and_static_fields_test.dart.expect b/pkg/kernel/testcases/interpreter/instance_and_static_fields_test.dart.expect
deleted file mode 100644
index 37946b2..0000000
--- a/pkg/kernel/testcases/interpreter/instance_and_static_fields_test.dart.expect
+++ /dev/null
@@ -1,6 +0,0 @@
-print(String: Create instance of A)
-print(String: foo1)
-print(String: foo2)
-print(String: foo3)
-print(String: Read staticFoo)
-print(String: staticFoo)
\ No newline at end of file
diff --git a/pkg/kernel/testcases/interpreter/object_field_initializers_test.dart b/pkg/kernel/testcases/interpreter/object_field_initializers_test.dart
deleted file mode 100644
index 8c9c789..0000000
--- a/pkg/kernel/testcases/interpreter/object_field_initializers_test.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// 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.
-
-library object_field_initializers_test;
-
-/// Simple program creating an object with instance field initializers in the
-/// declaration of the class.
-///
-/// The static function `fieldInitializer` is used to ensure the fields are
-/// intialized in the correct order by tracking the  order of side effects.
-void main() {
-  print('Create instance of A');
-  var a1 = new A.withoutArguments();
-  print(a1.foo1);
-  print(a1.foo2);
-  print(a1.foo3);
-  var a2 = new A('bar1', 'bar2');
-  print(a2.foo1);
-  print(a2.foo2);
-  print(a2.foo3);
-
-  print('Create instance of B');
-  var b = new B(fieldInitializer(1, 'bar1'), fieldInitializer(2, 'bar2'));
-  print(b.foo1);
-  print(b.foo2);
-  print(b.foo3);
-  print(b.foo4);
-
-  print('Create instance of C');
-  var c = new C(fieldInitializer(1, 'bar1'), fieldInitializer(2, 'bar2'));
-  print(c.foo1);
-  print(c.foo2);
-  print(c.foo3);
-}
-
-class A {
-  String foo1 = 'foo1';
-  String foo2;
-  String foo3 = 'foo3';
-
-  A.withoutArguments();
-  A(String foo1, String foo2) {
-    this.foo1 = foo1;
-    this.foo2 = foo2;
-  }
-}
-
-class B {
-  String foo1 = fieldInitializer(3, 'foo1');
-  String foo2;
-  String foo3 = fieldInitializer(4, 'foo3');
-  String foo4 = fieldInitializer(5, 'foo4');
-
-  B(String foo1, String foo2) {
-    this.foo1 = foo1;
-    this.foo2 = foo2;
-    this.foo4 = fieldInitializer(6, 'bar4');
-  }
-}
-
-class C {
-  String foo1 = fieldInitializer(1, 'foo1');
-  String foo2;
-  String foo3 = fieldInitializer(2, 'foo3');
-
-  C(this.foo1, this.foo2) {
-    foo3 = fieldInitializer(3, 'foo3');
-  }
-}
-
-String fieldInitializer(int f, String s) {
-  print('$s: $f');
-  return '$s: $f';
-}
diff --git a/pkg/kernel/testcases/interpreter/object_field_initializers_test.dart.expect b/pkg/kernel/testcases/interpreter/object_field_initializers_test.dart.expect
deleted file mode 100644
index bc56493..0000000
--- a/pkg/kernel/testcases/interpreter/object_field_initializers_test.dart.expect
+++ /dev/null
@@ -1,50 +0,0 @@
-print(String: Create instance of A)
-print(String: foo1)
-print(Null: null)
-print(String: foo3)
-print(String: bar1)
-print(String: bar2)
-print(String: foo3)
-print(String: Create instance of B)
-static-invocation-fieldInitializer
-print(String: bar1: 1)
-return
-static-invocation-fieldInitializer
-print(String: bar2: 2)
-return
-static-invocation-fieldInitializer
-print(String: foo1: 3)
-return
-static-invocation-fieldInitializer
-print(String: foo3: 4)
-return
-static-invocation-fieldInitializer
-print(String: foo4: 5)
-return
-static-invocation-fieldInitializer
-print(String: bar4: 6)
-return
-print(String: bar1: 1)
-print(String: bar2: 2)
-print(String: foo3: 4)
-print(String: bar4: 6)
-print(String: Create instance of C)
-static-invocation-fieldInitializer
-print(String: bar1: 1)
-return
-static-invocation-fieldInitializer
-print(String: bar2: 2)
-return
-static-invocation-fieldInitializer
-print(String: foo1: 1)
-return
-static-invocation-fieldInitializer
-print(String: foo3: 2)
-return
-static-invocation-fieldInitializer
-print(String: foo3: 3)
-return
-print(String: bar1: 1)
-print(String: bar2: 2)
-print(String: foo3: 3)
-
diff --git a/pkg/kernel/testcases/interpreter/object_fields_test.dart b/pkg/kernel/testcases/interpreter/object_fields_test.dart
deleted file mode 100644
index 45a0316..0000000
--- a/pkg/kernel/testcases/interpreter/object_fields_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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.
-
-library object_fields_test;
-
-/// Simple program creating an object and accessing its initialized fields.
-void main() {
-  var a = new A();
-  print(a.f1);
-  print(a.f2);
-
-  new B(0);
-  new B.redirecting1(0);
-  new B.redirecting2(0);
-
-  var c = new C.redirecting1(0);
-  print(c.f1);
-  print(c.f2);
-}
-
-class A {
-  int f1 = 37;
-  String f2 = 'hello world';
-}
-
-class B {
-  B(int i);
-  B.redirecting1(int i) : this(redirecting(i, 'B.redirecting1'));
-  B.redirecting2(int i) : this.redirecting1(redirecting(i, 'B.redirecting2'));
-}
-
-class C {
-  int f1 = fieldInitializer(0, 'C.f1');
-  int f2 = fieldInitializer(1, 'C.f2');
-
-  C(int i);
-  C.redirecting1(int i) : this(redirecting(i, 'C.redirecting1'));
-}
-
-int redirecting(int i, String s) {
-  print('$s: $i');
-  return i + 1;
-}
-
-int fieldInitializer(int f, String s) {
-  print('$s: $f');
-  return f;
-}
diff --git a/pkg/kernel/testcases/interpreter/object_fields_test.dart.expect b/pkg/kernel/testcases/interpreter/object_fields_test.dart.expect
deleted file mode 100644
index 650f630..0000000
--- a/pkg/kernel/testcases/interpreter/object_fields_test.dart.expect
+++ /dev/null
@@ -1,22 +0,0 @@
-print(int: 37)
-print(String: hello world)
-static-invocation-redirecting
-print(String: B.redirecting1: 0)
-return
-static-invocation-redirecting
-print(String: B.redirecting2: 0)
-return
-static-invocation-redirecting
-print(String: B.redirecting1: 1)
-return
-static-invocation-redirecting
-print(String: C.redirecting1: 0)
-return
-static-invocation-fieldInitializer
-print(String: C.f1: 0)
-return
-static-invocation-fieldInitializer
-print(String: C.f2: 1)
-return
-print(int: 0)
-print(int: 1)
\ No newline at end of file
diff --git a/pkg/kernel/testcases/interpreter/object_property_access.dart b/pkg/kernel/testcases/interpreter/object_property_access.dart
deleted file mode 100644
index bce4ef5..0000000
--- a/pkg/kernel/testcases/interpreter/object_property_access.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-library object_property_access_test;
-
-main() {
-  var a1 = new A();
-  print(a1.a);
-  print(a1.b);
-
-  a1.a = 3;
-  print(a1.doubleA);
-
-  var a2 = new A.withArgs(1, 2);
-  print(a2.a);
-  print(a2.b);
-
-  print(a2.doubleA);
-  a2.setA = 42;
-  print(a2.a);
-}
-
-class A {
-  int a;
-  int b = 42;
-
-  A();
-  A.withArgs(this.a, this.b);
-
-  int get doubleA => a + a;
-
-  void set setA(int a) {
-    this.a = a;
-  }
-}
diff --git a/pkg/kernel/testcases/interpreter/object_property_access.dart.expect b/pkg/kernel/testcases/interpreter/object_property_access.dart.expect
deleted file mode 100644
index cb3c10c..0000000
--- a/pkg/kernel/testcases/interpreter/object_property_access.dart.expect
+++ /dev/null
@@ -1,9 +0,0 @@
-print(Null: null)
-print(int: 42)
-return
-print(int: 6)
-print(int: 1)
-print(int: 2)
-return
-print(int: 2)
-print(int: 42)
\ No newline at end of file
diff --git a/pkg/kernel/testcases/interpreter/object_super_test.dart b/pkg/kernel/testcases/interpreter/object_super_test.dart
deleted file mode 100644
index 94c8f04..0000000
--- a/pkg/kernel/testcases/interpreter/object_super_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-library object_super_test;
-
-/// Simple program creating an object with super constructor invocation.
-void main() {
-  print("Create A instance");
-  var a = new A.withArgs(0);
-  print(a.foo);
-
-  print("Create B instance");
-  var b1 = new B.withSuper();
-  print(b1.foo);
-  print(b1.bar);
-}
-
-class A {
-  String foo;
-
-  A.withArgs(int i) : foo = fieldInitializer(i, 'A.foo');
-}
-
-class B extends A {
-  String bar;
-
-  B.withSuper()
-      : bar = fieldInitializer(0, 'B.bar'),
-        super.withArgs(1);
-}
-
-String fieldInitializer(int f, String s) {
-  print('$s: $f');
-  return '$s: $f';
-}
diff --git a/pkg/kernel/testcases/interpreter/object_super_test.dart.expect b/pkg/kernel/testcases/interpreter/object_super_test.dart.expect
deleted file mode 100644
index b986176..0000000
--- a/pkg/kernel/testcases/interpreter/object_super_test.dart.expect
+++ /dev/null
@@ -1,14 +0,0 @@
-print(String: Create A instance)
-static-invocation-fieldInitializer
-print(String: A.foo: 0)
-return
-print(String: A.foo: 0)
-print(String: Create B instance)
-static-invocation-fieldInitializer
-print(String: B.bar: 0)
-return
-static-invocation-fieldInitializer
-print(String: A.foo: 1)
-return
-print(String: A.foo: 1)
-print(String: B.bar: 0)
diff --git a/pkg/kernel/testcases/interpreter/print_test.dart b/pkg/kernel/testcases/interpreter/print_test.dart
deleted file mode 100644
index a74d8ee..0000000
--- a/pkg/kernel/testcases/interpreter/print_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-/// Prints different basic literals.
-///
-/// The log of this test is used to verify print is evaluated with the correct
-/// arguments.
-main() {
-  print('hello');
-  print(1);
-  print(true);
-  print(4.2);
-  print(null);
-}
diff --git a/pkg/kernel/testcases/interpreter/print_test.dart.expect b/pkg/kernel/testcases/interpreter/print_test.dart.expect
deleted file mode 100644
index 35784aa..0000000
--- a/pkg/kernel/testcases/interpreter/print_test.dart.expect
+++ /dev/null
@@ -1,5 +0,0 @@
-print(String: hello)
-print(int: 1)
-print(bool: true)
-print(double: 4.2)
-print(Null: null)
\ No newline at end of file
diff --git a/pkg/kernel/testcases/interpreter/static_accessors.dart b/pkg/kernel/testcases/interpreter/static_accessors.dart
deleted file mode 100644
index 8cdf71e..0000000
--- a/pkg/kernel/testcases/interpreter/static_accessors.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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.md file.
-
-main(arguments) {
-  test1(f1);
-  test2(f2);
-
-  if (37 != v1) throw "Unexpected value: v1 = $v1, expected value: 37";
-  v1 = 42;
-  if (42 != v1) throw "Unexpected value: v1 = $v1, expected value: 42";
-  if (v2 != null) throw "Unexpected value: v2 = $v2, expected value: null";
-  v2 = 42;
-  if (42 != v2) throw "Unexpected value: v2 = $v2, expected value: 42";
-  setter = 37;
-  if (37 != v1) throw "Unexpected value: v1 = $v1, expected value: 37";
-  if (37 != getter)
-    throw "Unexpected getter value: v1 = ${getter}, expected value: 37";
-}
-
-f1(a, [b = 10]) => a + b;
-f2(a, {b = 10}) => a + b;
-
-var v1 = 37;
-var v2;
-
-int get getter => v1;
-
-void set setter(int v) {
-  v1 = v;
-}
-
-test1(Function f) {
-  var result = f(40, 2);
-  if (42 != result) throw "Unexpected result: $result";
-}
-
-test2(Function f) {
-  var result = f(40, b: 2);
-  if (42 != result) throw "Unexpected result: $result";
-}
diff --git a/pkg/kernel/testcases/interpreter/static_accessors.dart.expect b/pkg/kernel/testcases/interpreter/static_accessors.dart.expect
deleted file mode 100644
index eed1580..0000000
--- a/pkg/kernel/testcases/interpreter/static_accessors.dart.expect
+++ /dev/null
@@ -1,5 +0,0 @@
-static-invocation-test1
-return
-static-invocation-test2
-return
-return
\ No newline at end of file
diff --git a/pkg/kernel/testcases/interpreter/static_invocation_test.dart b/pkg/kernel/testcases/interpreter/static_invocation_test.dart
deleted file mode 100644
index b404f56..0000000
--- a/pkg/kernel/testcases/interpreter/static_invocation_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-library static_invocation_test;
-
-/// Simple program containing static invocations.
-///
-/// The log of this test is used to verify the order of execution and evaluation
-/// of function body, arguments and static invocation expression.
-void main() {
-  a();
-  b(1, 9);
-  print(b(1, 9));
-  var retD = d();
-  print(c(37));
-  print(retD);
-}
-
-void a() {}
-
-void b(int n, int m) {
-  print(n);
-  print(m);
-  print(n + m);
-}
-
-String c(int n) {
-  print('c:$n');
-  return "d:${d()}";
-}
-
-int d() {
-  a();
-  return 37;
-}
diff --git a/pkg/kernel/testcases/interpreter/static_invocation_test.dart.expect b/pkg/kernel/testcases/interpreter/static_invocation_test.dart.expect
deleted file mode 100644
index d66f6a8c..0000000
--- a/pkg/kernel/testcases/interpreter/static_invocation_test.dart.expect
+++ /dev/null
@@ -1,21 +0,0 @@
-static-invocation-a
-static-invocation-b
-print(int: 1)
-print(int: 9)
-print(int: 10)
-static-invocation-b
-print(int: 1)
-print(int: 9)
-print(int: 10)
-print(Null: null)
-static-invocation-d
-static-invocation-a
-return
-static-invocation-c
-print(String: c:37)
-return
-static-invocation-d
-static-invocation-a
-return
-print(String: d:37)
-print(int: 37)
\ No newline at end of file
diff --git a/pkg/kernel/testcases/interpreter/throw_simple_test.dart b/pkg/kernel/testcases/interpreter/throw_simple_test.dart
deleted file mode 100644
index 8232879..0000000
--- a/pkg/kernel/testcases/interpreter/throw_simple_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-main() {
-  throw 0;
-}
diff --git a/pkg/kernel/testcases/interpreter/throw_simple_test.dart.expect b/pkg/kernel/testcases/interpreter/throw_simple_test.dart.expect
deleted file mode 100644
index e684ce6..0000000
--- a/pkg/kernel/testcases/interpreter/throw_simple_test.dart.expect
+++ /dev/null
@@ -1,2 +0,0 @@
-Uncaught exception "int : 0"
-in main()
diff --git a/pkg/kernel/testcases/interpreter/try_catch_finally_test.dart b/pkg/kernel/testcases/interpreter/try_catch_finally_test.dart
deleted file mode 100644
index 5ad2a3f..0000000
--- a/pkg/kernel/testcases/interpreter/try_catch_finally_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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.
-
-main() {
-  try {
-    print('hello1');
-  } catch (e, _) {} finally {
-    print('hello2');
-  }
-  print('hello3');
-  print(fReturns());
-  print(fFinalizes());
-  print(fThrows());
-}
-
-/// Tests that the return in finally is executed.
-int fReturns() {
-  try {
-    print('foo 1');
-    return 1;
-  } catch (e, _) {} finally {
-    print('foo 2');
-    return 2;
-  }
-}
-
-/// Tests that finally is executed before returning.
-int fFinalizes() {
-  try {
-    print('bar 1');
-    return 1;
-  } catch (e, _) {} finally {
-    print('bar 2');
-  }
-  return 0;
-}
-
-/// Tests that the exception is caught.
-int fThrows() {
-  try {
-    print(37);
-    throw 'Error';
-  } catch (e, _) {
-    print('Caught $e');
-  } finally {
-    print("Finalizer");
-  }
-  return 34;
-}
diff --git a/pkg/kernel/testcases/interpreter/try_catch_finally_test.dart.expect b/pkg/kernel/testcases/interpreter/try_catch_finally_test.dart.expect
deleted file mode 100644
index 2e087a8..0000000
--- a/pkg/kernel/testcases/interpreter/try_catch_finally_test.dart.expect
+++ /dev/null
@@ -1,20 +0,0 @@
-print(String: hello1)
-print(String: hello2)
-print(String: hello3)
-static-invocation-fReturns
-print(String: foo 1)
-return
-print(String: foo 2)
-return
-print(int: 2)
-static-invocation-fFinalizes
-print(String: bar 1)
-return
-print(String: bar 2)
-print(int: 1)
-static-invocation-fThrows
-print(int: 37)
-print(String: Caught Error)
-print(String: Finalizer)
-return
-print(int: 34)
diff --git a/pkg/pkg.status b/pkg/pkg.status
index 518dcce..e276440 100644
--- a/pkg/pkg.status
+++ b/pkg/pkg.status
@@ -69,6 +69,7 @@
 collection/test/equality_test/05: Fail # Issue 1533
 collection/test/equality_test/none: Pass, Fail # Issue 14348
 compiler/tool/*: SkipByDesign # Only meant to run on vm
+dartfix/test/*: SkipByDesign # Only meant to run on vm
 front_end/test/*: SkipByDesign # Only meant to run on vm, most use dart:mirrors and dart:io
 front_end/tool/*: SkipByDesign # Only meant to run on vm
 smith/test/*: SkipByDesign # Only meant to run on vm
diff --git a/pkg/status_file/lib/canonical_status_file.dart b/pkg/status_file/lib/canonical_status_file.dart
index dd55368..6f7f134 100644
--- a/pkg/status_file/lib/canonical_status_file.dart
+++ b/pkg/status_file/lib/canonical_status_file.dart
@@ -175,7 +175,7 @@
       sectionHeaderComments = [];
     }
 
-    // The current section whose rules are being parsed. Initalized to an
+    // The current section whose rules are being parsed. Initialized to an
     // implicit section that matches everything.
     StatusSection section =
         new StatusSection(null, -1, implicitSectionHeaderComments);
diff --git a/pkg/status_file/pubspec.yaml b/pkg/status_file/pubspec.yaml
index 7d000ed..e3a5960 100644
--- a/pkg/status_file/pubspec.yaml
+++ b/pkg/status_file/pubspec.yaml
@@ -4,7 +4,7 @@
 
 dependencies:
   path: "^1.4.0"
-  args: "^0.13.7"
+  args: "^1.4.4"
 
 dev_dependencies:
   expect:
diff --git a/pkg/vm/bin/gen_kernel.dart b/pkg/vm/bin/gen_kernel.dart
index 09ee2dd..5acfd26 100644
--- a/pkg/vm/bin/gen_kernel.dart
+++ b/pkg/vm/bin/gen_kernel.dart
@@ -26,7 +26,6 @@
       help:
           'Produce kernel file for AOT compilation (enables global transformations).',
       defaultsTo: false)
-  ..addFlag('strong-mode', help: 'Enable strong mode', defaultsTo: true)
   ..addFlag('sync-async',
       help: 'Start `async` functions synchronously', defaultsTo: true)
   ..addFlag('embed-sources',
@@ -46,7 +45,9 @@
       defaultsTo: true)
   ..addFlag('gen-bytecode', help: 'Generate bytecode', defaultsTo: false)
   ..addFlag('drop-ast',
-      help: 'Drop AST for members with bytecode', defaultsTo: false);
+      help: 'Drop AST for members with bytecode', defaultsTo: false)
+  ..addFlag('use-future-bytecode-format',
+      help: 'Generate bytecode in the bleeding edge format', defaultsTo: false);
 
 final String _usage = '''
 Usage: dart pkg/vm/bin/gen_kernel.dart --platform vm_platform_strong.dill [options] input.dart
@@ -79,12 +80,11 @@
   final String filename = options.rest.single;
   final String kernelBinaryFilename = options['output'] ?? "$filename.dill";
   final String packages = options['packages'];
-  final bool strongMode = options['strong-mode'];
   final bool aot = options['aot'];
-  final bool syncAsync = options['sync-async'];
   final bool tfa = options['tfa'];
   final bool genBytecode = options['gen-bytecode'];
   final bool dropAST = options['drop-ast'];
+  final bool useFutureBytecodeFormat = options['use-future-bytecode-format'];
   final bool enableAsserts = options['enable-asserts'];
   final bool enableConstantEvaluation = options['enable-constant-evaluation'];
   final Map<String, String> environmentDefines = {};
@@ -97,9 +97,7 @@
   final errorDetector = new ErrorDetector(previousErrorHandler: errorPrinter);
 
   final CompilerOptions compilerOptions = new CompilerOptions()
-    ..strongMode = strongMode
-    ..target = new VmTarget(
-        new TargetFlags(strongMode: strongMode, syncAsync: syncAsync))
+    ..target = new VmTarget(new TargetFlags(syncAsync: true))
     ..linkedDependencies = <Uri>[
       Uri.base.resolveUri(new Uri.file(platformKernel))
     ]
@@ -119,6 +117,7 @@
       environmentDefines: environmentDefines,
       genBytecode: genBytecode,
       dropAST: dropAST,
+      useFutureBytecodeFormat: useFutureBytecodeFormat,
       enableAsserts: enableAsserts,
       enableConstantEvaluation: enableConstantEvaluation);
 
diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart
index 5ec9dc6..01d4c2c 100644
--- a/pkg/vm/bin/kernel_service.dart
+++ b/pkg/vm/bin/kernel_service.dart
@@ -30,7 +30,9 @@
 import 'package:front_end/src/api_unstable/vm.dart';
 import 'package:kernel/kernel.dart' show Component, Procedure;
 import 'package:kernel/target/targets.dart' show TargetFlags;
+import 'package:vm/bytecode/gen_bytecode.dart' show generateBytecode;
 import 'package:vm/incremental_compiler.dart';
+import 'package:vm/kernel_front_end.dart' show runWithFrontEndCompilerContext;
 import 'package:vm/http_filesystem.dart';
 import 'package:vm/target/vm.dart' show VmTarget;
 
@@ -61,15 +63,13 @@
 
 abstract class Compiler {
   final FileSystem fileSystem;
-  final bool strongMode;
   final List<String> errors = new List<String>();
 
   CompilerOptions options;
 
   Compiler(this.fileSystem, Uri platformKernelPath,
-      {this.strongMode: false,
-      bool suppressWarnings: false,
-      bool syncAsync: false,
+      {bool suppressWarnings: false,
+      bool bytecode: false,
       String packageConfig: null}) {
     Uri packagesUri = null;
     if (packageConfig != null) {
@@ -83,18 +83,15 @@
       print("DFE: packagesUri: ${packagesUri}");
       print("DFE: Platform.resolvedExecutable: ${Platform.resolvedExecutable}");
       print("DFE: platformKernelPath: ${platformKernelPath}");
-      print("DFE: strongMode: ${strongMode}");
-      print("DFE: syncAsync: ${syncAsync}");
     }
 
     options = new CompilerOptions()
-      ..strongMode = strongMode
       ..fileSystem = fileSystem
-      ..target = new VmTarget(
-          new TargetFlags(strongMode: strongMode, syncAsync: syncAsync))
+      ..target = new VmTarget(new TargetFlags(syncAsync: true))
       ..packagesFileUri = packagesUri
       ..sdkSummary = platformKernelPath
       ..verbose = verbose
+      ..bytecode = bytecode
       ..onDiagnostic = (DiagnosticMessage message) {
         bool printMessage;
         switch (message.severity) {
@@ -120,7 +117,18 @@
   }
 
   Future<Component> compile(Uri script) {
-    return runWithPrintToStderr(() => compileInternal(script));
+    return runWithPrintToStderr(() async {
+      final component = await compileInternal(script);
+
+      if (options.bytecode && errors.isEmpty) {
+        await runWithFrontEndCompilerContext(script, options, component, () {
+          // TODO(alexmarkov): pass environment defines
+          generateBytecode(component);
+        });
+      }
+
+      return component;
+    });
   }
 
   Future<Component> compileInternal(Uri script);
@@ -130,14 +138,12 @@
   IncrementalCompiler generator;
 
   IncrementalCompilerWrapper(FileSystem fileSystem, Uri platformKernelPath,
-      {bool strongMode: false,
-      bool suppressWarnings: false,
-      bool syncAsync: false,
+      {bool suppressWarnings: false,
+      bool bytecode: false,
       String packageConfig: null})
       : super(fileSystem, platformKernelPath,
-            strongMode: strongMode,
             suppressWarnings: suppressWarnings,
-            syncAsync: syncAsync,
+            bytecode: bytecode,
             packageConfig: packageConfig);
 
   @override
@@ -158,14 +164,12 @@
 
   SingleShotCompilerWrapper(FileSystem fileSystem, Uri platformKernelPath,
       {this.requireMain: false,
-      bool strongMode: false,
       bool suppressWarnings: false,
-      bool syncAsync: false,
+      bool bytecode: false,
       String packageConfig: null})
       : super(fileSystem, platformKernelPath,
-            strongMode: strongMode,
             suppressWarnings: suppressWarnings,
-            syncAsync: syncAsync,
+            bytecode: bytecode,
             packageConfig: packageConfig);
 
   @override
@@ -187,9 +191,8 @@
 
 Future<Compiler> lookupOrBuildNewIncrementalCompiler(int isolateId,
     List sourceFiles, Uri platformKernelPath, List<int> platformKernel,
-    {bool strongMode: false,
-    bool suppressWarnings: false,
-    bool syncAsync: false,
+    {bool suppressWarnings: false,
+    bool bytecode: false,
     String packageConfig: null,
     String multirootFilepaths,
     String multirootScheme}) async {
@@ -206,9 +209,8 @@
     // isolate needs to receive a message indicating that particular
     // isolate was shut down. Message should be handled here in this script.
     compiler = new IncrementalCompilerWrapper(fileSystem, platformKernelPath,
-        strongMode: strongMode,
         suppressWarnings: suppressWarnings,
-        syncAsync: syncAsync,
+        bytecode: bytecode,
         packageConfig: packageConfig);
     isolateCompilers[isolateId] = compiler;
   }
@@ -372,11 +374,10 @@
   final Uri script =
       inputFileUri != null ? Uri.base.resolve(inputFileUri) : null;
   final bool incremental = request[4];
-  final bool strong = request[5];
   final int isolateId = request[6];
   final List sourceFiles = request[7];
   final bool suppressWarnings = request[8];
-  final bool syncAsync = request[9];
+  final bool bytecode = request[9];
   final String packageConfig = request[10];
   final String multirootFilepaths = request[11];
   final String multirootScheme = request[12];
@@ -389,8 +390,8 @@
     platformKernelPath = Uri.parse(platformKernelFile);
     platformKernel = request[3];
   } else {
-    platformKernelPath = computePlatformBinariesLocation()
-        .resolve(strong ? 'vm_platform_strong.dill' : 'vm_platform.dill');
+    platformKernelPath =
+        computePlatformBinariesLocation().resolve('vm_platform_strong.dill');
   }
 
   Compiler compiler;
@@ -429,9 +430,8 @@
   if (incremental) {
     compiler = await lookupOrBuildNewIncrementalCompiler(
         isolateId, sourceFiles, platformKernelPath, platformKernel,
-        strongMode: strong,
         suppressWarnings: suppressWarnings,
-        syncAsync: syncAsync,
+        bytecode: bytecode,
         packageConfig: packageConfig,
         multirootFilepaths: multirootFilepaths,
         multirootScheme: multirootScheme);
@@ -440,9 +440,8 @@
         sourceFiles, platformKernel, multirootFilepaths, multirootScheme);
     compiler = new SingleShotCompilerWrapper(fileSystem, platformKernelPath,
         requireMain: false,
-        strongMode: strong,
         suppressWarnings: suppressWarnings,
-        syncAsync: syncAsync,
+        bytecode: bytecode,
         packageConfig: packageConfig);
   }
 
diff --git a/pkg/vm/lib/bytecode/assembler.dart b/pkg/vm/lib/bytecode/assembler.dart
index dce3410..b45b4c1 100644
--- a/pkg/vm/lib/bytecode/assembler.dart
+++ b/pkg/vm/lib/bytecode/assembler.dart
@@ -10,15 +10,19 @@
 import 'exceptions.dart' show ExceptionsTable;
 
 class Label {
+  final bool allowsBackwardJumps;
   List<int> _jumps = <int>[];
   int offset = -1;
 
-  Label();
+  Label({this.allowsBackwardJumps: false});
 
   bool get isBound => offset >= 0;
 
   int jumpOperand(int jumpOffset) {
     if (isBound) {
+      if (offset <= jumpOffset && !allowsBackwardJumps) {
+        throw 'Backward jump to this label is not allowed';
+      }
       // Jump instruction takes an offset in DBC words.
       return (offset - jumpOffset) >> BytecodeAssembler.kLog2BytesPerBytecode;
     }
@@ -44,6 +48,7 @@
   final Uint32List _encodeBufferIn;
   final Uint8List _encodeBufferOut;
   final ExceptionsTable exceptionsTable = new ExceptionsTable();
+  bool isUnreachable = false;
 
   BytecodeAssembler._(this._encodeBufferIn, this._encodeBufferOut);
 
@@ -60,9 +65,15 @@
     for (int jumpOffset in jumps) {
       patchJump(jumpOffset, label.jumpOperand(jumpOffset));
     }
+    if (jumps.isNotEmpty || label.allowsBackwardJumps) {
+      isUnreachable = false;
+    }
   }
 
   void emitWord(int word) {
+    if (isUnreachable) {
+      return;
+    }
     _encodeBufferIn[0] = word; // TODO(alexmarkov): Which endianness to use?
     bytecode.addAll(_encodeBufferOut);
   }
@@ -145,8 +156,17 @@
     emitWord(_encode0(opcode));
   }
 
+  void _emitJumpBytecode(Opcode opcode, Label label) {
+    assert(isJump(opcode));
+    if (!isUnreachable) {
+      // Do not use label if not generating instruction.
+      emitWord(_encodeT(opcode, label.jumpOperand(offset)));
+    }
+  }
+
   void emitTrap() {
     emitWord(_encode0(Opcode.kTrap));
+    isUnreachable = true;
   }
 
   void emitDrop1() {
@@ -154,40 +174,40 @@
   }
 
   void emitJump(Label label) {
-    emitWord(_encodeT(Opcode.kJump, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJump, label);
+    isUnreachable = true;
   }
 
   void emitJumpIfNoAsserts(Label label) {
-    emitWord(_encodeT(Opcode.kJumpIfNoAsserts, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfNoAsserts, label);
   }
 
   void emitJumpIfNotZeroTypeArgs(Label label) {
-    emitWord(
-        _encodeT(Opcode.kJumpIfNotZeroTypeArgs, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfNotZeroTypeArgs, label);
   }
 
   void emitJumpIfEqStrict(Label label) {
-    emitWord(_encodeT(Opcode.kJumpIfEqStrict, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfEqStrict, label);
   }
 
   void emitJumpIfNeStrict(Label label) {
-    emitWord(_encodeT(Opcode.kJumpIfNeStrict, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfNeStrict, label);
   }
 
   void emitJumpIfTrue(Label label) {
-    emitWord(_encodeT(Opcode.kJumpIfTrue, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfTrue, label);
   }
 
   void emitJumpIfFalse(Label label) {
-    emitWord(_encodeT(Opcode.kJumpIfFalse, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfFalse, label);
   }
 
   void emitJumpIfNull(Label label) {
-    emitWord(_encodeT(Opcode.kJumpIfNull, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfNull, label);
   }
 
   void emitJumpIfNotNull(Label label) {
-    emitWord(_encodeT(Opcode.kJumpIfNotNull, label.jumpOperand(offset)));
+    _emitJumpBytecode(Opcode.kJumpIfNotNull, label);
   }
 
   void patchJump(int pos, int rt) {
@@ -198,6 +218,7 @@
 
   void emitReturnTOS() {
     emitWord(_encode0(Opcode.kReturnTOS));
+    isUnreachable = true;
   }
 
   void emitPush(int rx) {
@@ -306,6 +327,7 @@
 
   void emitThrow(int ra) {
     emitWord(_encodeA(Opcode.kThrow, ra));
+    isUnreachable = true;
   }
 
   void emitEntry(int rd) {
diff --git a/pkg/vm/lib/bytecode/dbc.dart b/pkg/vm/lib/bytecode/dbc.dart
index 7bb56e6..754bdcd 100644
--- a/pkg/vm/lib/bytecode/dbc.dart
+++ b/pkg/vm/lib/bytecode/dbc.dart
@@ -6,6 +6,19 @@
 
 library vm.bytecode.dbc;
 
+/// Version of stable bytecode format, produced by default.
+/// Before bumping stable bytecode version format, make sure that
+/// all users have switched to a VM which is able to consume next
+/// version of bytecode.
+const int stableBytecodeFormatVersion = 1;
+
+/// Version of bleeding edge bytecode format.
+/// Produced by bytecode generator when --use-future-bytecode-format
+/// option is enabled.
+/// Should match kMaxSupportedBytecodeFormatVersion in
+/// runtime/vm/constants_kbc.h.
+const int futureBytecodeFormatVersion = stableBytecodeFormatVersion + 1;
+
 enum Opcode {
   kTrap,
 
diff --git a/pkg/vm/lib/bytecode/gen_bytecode.dart b/pkg/vm/lib/bytecode/gen_bytecode.dart
index 9e3ea83..1a95682 100644
--- a/pkg/vm/lib/bytecode/gen_bytecode.dart
+++ b/pkg/vm/lib/bytecode/gen_bytecode.dart
@@ -31,10 +31,15 @@
 import '../constants_error_reporter.dart' show ForwardConstantEvaluationErrors;
 import '../metadata/bytecode.dart';
 
+// This symbol is used as the name in assert assignable's to indicate it comes
+// from an explicit 'as' check.  This will cause the runtime to throw the right
+// exception.
+const String symbolForTypeCast = ' in type cast';
+
 void generateBytecode(Component component,
-    {bool strongMode: true,
-    bool dropAST: false,
+    {bool dropAST: false,
     bool omitSourcePositions: false,
+    bool useFutureBytecodeFormat: false,
     Map<String, String> environmentDefines,
     ErrorReporter errorReporter}) {
   final coreTypes = new CoreTypes(component);
@@ -42,12 +47,19 @@
   final hierarchy = new ClassHierarchy(component,
       onAmbiguousSupertypes: ignoreAmbiguousSupertypes);
   final typeEnvironment =
-      new TypeEnvironment(coreTypes, hierarchy, strongMode: strongMode);
+      new TypeEnvironment(coreTypes, hierarchy, strongMode: true);
   final constantsBackend =
       new VmConstantsBackend(environmentDefines, coreTypes);
   final errorReporter = new ForwardConstantEvaluationErrors(typeEnvironment);
-  new BytecodeGenerator(component, coreTypes, hierarchy, typeEnvironment,
-          constantsBackend, strongMode, omitSourcePositions, errorReporter)
+  new BytecodeGenerator(
+          component,
+          coreTypes,
+          hierarchy,
+          typeEnvironment,
+          constantsBackend,
+          omitSourcePositions,
+          useFutureBytecodeFormat,
+          errorReporter)
       .visitComponent(component);
   if (dropAST) {
     new DropAST().visitComponent(component);
@@ -60,8 +72,8 @@
   final ClassHierarchy hierarchy;
   final TypeEnvironment typeEnvironment;
   final ConstantsBackend constantsBackend;
-  final bool strongMode;
   final bool omitSourcePositions;
+  final bool useFutureBytecodeFormat;
   final ErrorReporter errorReporter;
   final BytecodeMetadataRepository metadata = new BytecodeMetadataRepository();
   final RecognizedMethods recognizedMethods;
@@ -97,8 +109,8 @@
       this.hierarchy,
       this.typeEnvironment,
       this.constantsBackend,
-      this.strongMode,
       this.omitSourcePositions,
+      this.useFutureBytecodeFormat,
       this.errorReporter)
       : recognizedMethods = new RecognizedMethods(typeEnvironment) {
     component.addMetadataRepository(metadata);
@@ -154,7 +166,7 @@
         _genNativeCall(nativeName);
       } else {
         node.function?.body?.accept(this);
-        // TODO(alexmarkov): figure out when 'return null' should be generated.
+        // BytecodeAssembler eliminates this bytecode if it is unreachable.
         asm.emitPushNull();
       }
       _genReturnTOS();
@@ -218,10 +230,6 @@
   Procedure get objectSimpleInstanceOf => _objectSimpleInstanceOf ??=
       libraryIndex.getMember('dart:core', 'Object', '_simpleInstanceOf');
 
-  Procedure _objectAs;
-  Procedure get objectAs =>
-      _objectAs ??= libraryIndex.getMember('dart:core', 'Object', '_as');
-
   Field _closureInstantiatorTypeArguments;
   Field get closureInstantiatorTypeArguments =>
       _closureInstantiatorTypeArguments ??= libraryIndex.getMember(
@@ -616,6 +624,48 @@
     _genJumpIfFalse(!negated, dest);
   }
 
+  /// Returns value of the given expression if it is a bool constant.
+  /// Otherwise, returns `null`.
+  bool _constantConditionValue(Expression condition) {
+    // TODO(dartbug.com/34585): use constant evaluator to evaluate
+    // expressions in a non-constant context.
+    if (condition is Not) {
+      final operand = _constantConditionValue(condition.operand);
+      return (operand != null) ? !operand : null;
+    }
+    if (condition is BoolLiteral) {
+      return condition.value;
+    }
+    Constant constant;
+    if (condition is ConstantExpression) {
+      constant = condition.constant;
+    } else if ((condition is StaticGet && condition.target.isConst) ||
+        (condition is StaticInvocation && condition.isConst) ||
+        (condition is VariableGet && condition.variable.isConst)) {
+      constant = _evaluateConstantExpression(condition);
+    }
+    if (constant is BoolConstant) {
+      return constant.value;
+    }
+    return null;
+  }
+
+  void _genConditionAndJumpIf(Expression condition, bool value, Label dest) {
+    final bool constantValue = _constantConditionValue(condition);
+    if (constantValue != null) {
+      if (constantValue == value) {
+        asm.emitJump(dest);
+      }
+      return;
+    }
+    bool negated = _genCondition(condition);
+    if (value) {
+      _genJumpIfTrue(negated, dest);
+    } else {
+      _genJumpIfFalse(negated, dest);
+    }
+  }
+
   int _getDefaultParamConstIndex(VariableDeclaration param) {
     if (param.initializer == null) {
       return cp.add(const ConstantNull());
@@ -703,7 +753,8 @@
     locals = new LocalVariables(node);
     // TODO(alexmarkov): improve caching in ConstantEvaluator and reuse it
     constantEvaluator = new ConstantEvaluator(constantsBackend, typeEnvironment,
-        coreTypes, strongMode, /* enableAsserts = */ true, errorReporter)
+        coreTypes, /* enableAsserts = */ true,
+        errorReporter: errorReporter)
       ..env = new EvaluationEnvironment();
     labeledStatements = <LabeledStatement, Label>{};
     switchCases = <SwitchCase, Label>{};
@@ -751,8 +802,11 @@
 
   void end(Member node) {
     if (!hasErrors) {
-      metadata.mapping[node] = new BytecodeMetadata(
-          cp, asm.bytecode, asm.exceptionsTable, nullableFields, closures);
+      final formatVersion = useFutureBytecodeFormat
+          ? futureBytecodeFormatVersion
+          : stableBytecodeFormatVersion;
+      metadata.mapping[node] = new BytecodeMetadata(formatVersion, cp,
+          asm.bytecode, asm.exceptionsTable, nullableFields, closures);
     }
 
     typeEnvironment.thisType = null;
@@ -1183,7 +1237,7 @@
 
     function.body.accept(this);
 
-    // TODO(alexmarkov): figure out when 'return null' should be generated.
+    // BytecodeAssembler eliminates this bytecode if it is unreachable.
     asm.emitPushNull();
     _genReturnTOS();
 
@@ -1475,16 +1529,8 @@
     if (typeEnvironment.isTop(type)) {
       return;
     }
-    if (node.isTypeError) {
-      _genAssertAssignable(type);
-    } else {
-      _genPushInstantiatorAndFunctionTypeArguments([type]);
-      asm.emitPushConstant(cp.add(new ConstantType(type)));
-      final argDescIndex = cp.add(new ConstantArgDesc(4));
-      final icdataIndex = cp.add(new ConstantICData(
-          InvocationKind.method, objectAs.name, argDescIndex));
-      asm.emitInstanceCall(4, icdataIndex);
-    }
+
+    _genAssertAssignable(type, name: node.isTypeError ? '' : symbolForTypeCast);
   }
 
   @override
@@ -1509,8 +1555,7 @@
     final Label done = new Label();
     final int temp = locals.tempIndexInFrame(node);
 
-    final bool negated = _genCondition(node.condition);
-    _genJumpIfFalse(negated, otherwisePart);
+    _genConditionAndJumpIf(node.condition, false, otherwisePart);
 
     node.then.accept(this);
     asm.emitPopLocal(temp);
@@ -1704,18 +1749,9 @@
     final int temp = locals.tempIndexInFrame(node);
     final isOR = (node.operator == '||');
 
-    bool negated = _genCondition(node.left);
-    if (negated != isOR) {
-      // OR: if (condition == true)
-      // AND: if ((!condition) == true)
-      asm.emitJumpIfTrue(shortCircuit);
-    } else {
-      // OR: if ((!condition) != true)
-      // AND: if (condition != true)
-      asm.emitJumpIfFalse(shortCircuit);
-    }
+    _genConditionAndJumpIf(node.left, isOR, shortCircuit);
 
-    negated = _genCondition(node.right);
+    bool negated = _genCondition(node.right);
     if (negated) {
       asm.emitBooleanNegateTOS();
     }
@@ -1997,6 +2033,10 @@
 
   @override
   visitStaticInvocation(StaticInvocation node) {
+    if (node.isConst) {
+      _genPushConstExpr(node);
+      return;
+    }
     Arguments args = node.arguments;
     final target = node.target;
     if (target == unsafeCast) {
@@ -2163,8 +2203,7 @@
     final Label done = new Label();
     asm.emitJumpIfNoAsserts(done);
 
-    final bool negated = _genCondition(node.condition);
-    _genJumpIfTrue(negated, done);
+    _genConditionAndJumpIf(node.condition, true, done);
 
     _genPushInt(omitSourcePositions ? 0 : node.conditionStartOffset);
     _genPushInt(omitSourcePositions ? 0 : node.conditionEndOffset);
@@ -2226,16 +2265,20 @@
 
   @override
   visitDoStatement(DoStatement node) {
-    final Label join = new Label();
+    if (asm.isUnreachable) {
+      // Bail out before binding a label which allows backward jumps,
+      // as it is not handled by local unreachable code elimination.
+      return;
+    }
+
+    final Label join = new Label(allowsBackwardJumps: true);
     asm.bind(join);
 
     asm.emitCheckStack();
 
     node.body.accept(this);
 
-    // TODO(alexmarkov): do we need to break this critical edge in CFG?
-    bool negated = _genCondition(node.condition);
-    _genJumpIfTrue(negated, join);
+    _genConditionAndJumpIf(node.condition, true, join);
   }
 
   @override
@@ -2275,8 +2318,14 @@
       _genStoreVar(capturedIteratorVar);
     }
 
+    if (asm.isUnreachable) {
+      // Bail out before binding a label which allows backward jumps,
+      // as it is not handled by local unreachable code elimination.
+      return;
+    }
+
     final Label done = new Label();
-    final Label join = new Label();
+    final Label join = new Label(allowsBackwardJumps: true);
 
     asm.bind(join);
     asm.emitCheckStack();
@@ -2317,37 +2366,44 @@
   @override
   visitForStatement(ForStatement node) {
     _enterScope(node);
+    try {
+      visitList(node.variables, this);
 
-    visitList(node.variables, this);
+      if (asm.isUnreachable) {
+        // Bail out before binding a label which allows backward jumps,
+        // as it is not handled by local unreachable code elimination.
+        return;
+      }
 
-    final Label done = new Label();
-    final Label join = new Label();
-    asm.bind(join);
+      final Label done = new Label();
+      final Label join = new Label(allowsBackwardJumps: true);
+      asm.bind(join);
 
-    asm.emitCheckStack();
+      asm.emitCheckStack();
 
-    if (node.condition != null) {
-      bool negated = _genCondition(node.condition);
-      _genJumpIfFalse(negated, done);
+      if (node.condition != null) {
+        _genConditionAndJumpIf(node.condition, false, done);
+      }
+
+      node.body.accept(this);
+
+      if (locals.currentContextSize > 0) {
+        asm.emitPush(locals.contextVarIndexInFrame);
+        asm.emitCloneContext();
+        asm.emitPopLocal(locals.contextVarIndexInFrame);
+      }
+
+      for (var update in node.updates) {
+        update.accept(this);
+        asm.emitDrop1();
+      }
+
+      asm.emitJump(join);
+
+      asm.bind(done);
+    } finally {
+      _leaveScope();
     }
-
-    node.body.accept(this);
-
-    if (locals.currentContextSize > 0) {
-      asm.emitPush(locals.contextVarIndexInFrame);
-      asm.emitCloneContext();
-      asm.emitPopLocal(locals.contextVarIndexInFrame);
-    }
-
-    for (var update in node.updates) {
-      update.accept(this);
-      asm.emitDrop1();
-    }
-
-    asm.emitJump(join);
-
-    asm.bind(done);
-    _leaveScope();
   }
 
   @override
@@ -2361,8 +2417,7 @@
   visitIfStatement(IfStatement node) {
     final Label otherwisePart = new Label();
 
-    final bool negated = _genCondition(node.condition);
-    _genJumpIfFalse(negated, otherwisePart);
+    _genConditionAndJumpIf(node.condition, false, otherwisePart);
 
     node.then.accept(this);
 
@@ -2423,12 +2478,18 @@
 
     node.expression.accept(this);
 
+    if (asm.isUnreachable) {
+      // Bail out before binding labels which allow backward jumps,
+      // as they are not handled by local unreachable code elimination.
+      return;
+    }
+
     final int temp = locals.tempIndexInFrame(node);
     asm.emitPopLocal(temp);
 
     final Label done = new Label();
-    final List<Label> caseLabels =
-        new List<Label>.generate(node.cases.length, (_) => new Label());
+    final List<Label> caseLabels = new List<Label>.generate(
+        node.cases.length, (_) => new Label(allowsBackwardJumps: true));
     final equalsArgDesc = cp.add(new ConstantArgDesc(2));
 
     Label defaultLabel = done;
@@ -2542,6 +2603,9 @@
     tryBlock.endPC = asm.offsetInWords;
     tryBlock.handlerPC = asm.offsetInWords;
 
+    // Exception handlers are reachable although there are no labels or jumps.
+    asm.isUnreachable = false;
+
     asm.emitSetFrame(locals.frameSize);
 
     _restoreContextForTryBlock(node);
@@ -2586,6 +2650,10 @@
 
   @override
   visitTryCatch(TryCatch node) {
+    if (asm.isUnreachable) {
+      return;
+    }
+
     final Label done = new Label();
 
     final TryBlock tryBlock = _startTryBlock(node);
@@ -2652,17 +2720,22 @@
 
   @override
   visitTryFinally(TryFinally node) {
+    if (asm.isUnreachable) {
+      return;
+    }
+
     final TryBlock tryBlock = _startTryBlock(node);
     finallyBlocks[node] = <FinallyBlock>[];
 
     node.body.accept(this);
 
-    // TODO(alexmarkov): Do not generate normal continuation if control
-    // does not return from body.
-    final normalContinuation =
-        new FinallyBlock(() {/* do nothing (fall through) */});
-    finallyBlocks[node].add(normalContinuation);
-    asm.emitJump(normalContinuation.entry);
+    if (!asm.isUnreachable) {
+      final normalContinuation = new FinallyBlock(() {
+        /* do nothing (fall through) */
+      });
+      finallyBlocks[node].add(normalContinuation);
+      asm.emitJump(normalContinuation.entry);
+    }
 
     _endTryBlock(node, tryBlock);
 
@@ -2708,14 +2781,19 @@
 
   @override
   visitWhileStatement(WhileStatement node) {
+    if (asm.isUnreachable) {
+      // Bail out before binding a label which allows backward jumps,
+      // as it is not handled by local unreachable code elimination.
+      return;
+    }
+
     final Label done = new Label();
-    final Label join = new Label();
+    final Label join = new Label(allowsBackwardJumps: true);
     asm.bind(join);
 
     asm.emitCheckStack();
 
-    bool negated = _genCondition(node.condition);
-    _genJumpIfFalse(negated, done);
+    _genConditionAndJumpIf(node.condition, false, done);
 
     node.body.accept(this);
 
@@ -2730,9 +2808,13 @@
       throw 'YieldStatement must be desugared: $node';
     }
 
+    if (asm.isUnreachable) {
+      return;
+    }
+
     // 0 is reserved for normal entry, yield points are counted from 1.
     final int yieldIndex = yieldPoints.length + 1;
-    final Label continuationLabel = new Label();
+    final Label continuationLabel = new Label(allowsBackwardJumps: true);
     yieldPoints.add(continuationLabel);
 
     // :await_jump_var = #index
diff --git a/pkg/vm/lib/frontend_server.dart b/pkg/vm/lib/frontend_server.dart
index 7cdc7d7..7cbbe56 100644
--- a/pkg/vm/lib/frontend_server.dart
+++ b/pkg/vm/lib/frontend_server.dart
@@ -43,11 +43,9 @@
   ..addFlag('aot',
       help: 'Run compiler in AOT mode (enables whole-program transformations)',
       defaultsTo: false)
-  ..addFlag('strong',
-      help: 'Run compiler in strong mode (uses strong mode semantics)',
-      defaultsTo: false)
-  ..addFlag('sync-async',
-      help: 'Start `async` functions synchronously.', defaultsTo: true)
+  // TODO(alexmarkov): Cleanup uses in Flutter and remove these obsolete flags.
+  ..addFlag('strong', help: 'Obsolete', defaultsTo: true)
+  ..addFlag('sync-async', help: 'Obsolete', defaultsTo: true)
   ..addFlag('tfa',
       help:
           'Enable global type flow analysis and related transformations in AOT mode.',
@@ -262,12 +260,11 @@
     final String boundaryKey = new Uuid().generateV4();
     _outputStream.writeln('result $boundaryKey');
     final Uri sdkRoot = _ensureFolderPath(options['sdk-root']);
-    final String platformKernelDill = options['platform'] ??
-        (options['strong'] ? 'platform_strong.dill' : 'platform.dill');
+    final String platformKernelDill =
+        options['platform'] ?? 'platform_strong.dill';
     final CompilerOptions compilerOptions = new CompilerOptions()
       ..sdkRoot = sdkRoot
       ..packagesFileUri = _getFileOrUri(_options['packages'])
-      ..strongMode = options['strong']
       ..sdkSummary = sdkRoot.resolve(platformKernelDill)
       ..verbose = options['verbose']
       ..embedSourceText = options['embed-source-text']
@@ -316,8 +313,7 @@
     // Ensure that Flutter and VM targets are added to targets dictionary.
     installAdditionalTargets();
 
-    final TargetFlags targetFlags = new TargetFlags(
-        strongMode: options['strong'], syncAsync: options['sync-async']);
+    final TargetFlags targetFlags = new TargetFlags(syncAsync: true);
     compilerOptions.target = getTarget(options['target'], targetFlags);
     if (compilerOptions.target == null) {
       print('Failed to create front-end target ${options['target']}.');
@@ -506,6 +502,14 @@
   /// [writePackagesToSinkAndTrimComponent].
   Map<Uri, List<int>> cachedPackageLibraries = new Map<Uri, List<int>>();
 
+  /// Map of dependencies for already serialized dill data.
+  /// E.g. if blob1 dependents on blob2, but only using a single file from blob1
+  /// that does not dependent on blob2, blob2 would not be included leaving the
+  /// dill file in a weird state that could cause the VM to crash if asked to
+  /// forcefully compile everything. Used by
+  /// [writePackagesToSinkAndTrimComponent].
+  Map<Uri, List<Uri>> cachedPackageDependencies = new Map<Uri, List<Uri>>();
+
   writePackagesToSinkAndTrimComponent(
       Component deltaProgram, Sink<List<int>> ioSink) {
     if (deltaProgram == null) return;
@@ -528,12 +532,21 @@
 
     Map<String, List<Library>> newPackages = new Map<String, List<Library>>();
     Set<List<int>> alreadyAdded = new Set<List<int>>();
+
+    addDataAndDependentData(List<int> data, Uri uri) {
+      if (alreadyAdded.add(data)) {
+        ioSink.add(data);
+        // Now also add all dependencies.
+        for (Uri dep in cachedPackageDependencies[uri]) {
+          addDataAndDependentData(cachedPackageLibraries[dep], dep);
+        }
+      }
+    }
+
     for (Library lib in packageLibraries) {
       List<int> data = cachedPackageLibraries[lib.fileUri];
       if (data != null) {
-        if (alreadyAdded.add(data)) {
-          ioSink.add(data);
-        }
+        addDataAndDependentData(data, lib.fileUri);
       } else {
         String package = lib.importUri.pathSegments.first;
         newPackages[package] ??= <Library>[];
@@ -550,9 +563,28 @@
       ByteSink byteSink = new ByteSink();
       final BinaryPrinter printer = printerFactory.newBinaryPrinter(byteSink);
       printer.writeComponentFile(singleLibrary);
+
+      // Record things this package blob dependent on.
+      Set<Uri> libraryUris = new Set<Uri>();
+      for (Library lib in libraries) {
+        libraryUris.add(lib.fileUri);
+      }
+      Set<Uri> deps = new Set<Uri>();
+      for (Library lib in libraries) {
+        for (LibraryDependency dep in lib.dependencies) {
+          Library dependencyLibrary = dep.importedLibraryReference.asLibrary;
+          if (dependencyLibrary.importUri.scheme != "package") continue;
+          Uri dependencyLibraryUri =
+              dep.importedLibraryReference.asLibrary.fileUri;
+          if (libraryUris.contains(dependencyLibraryUri)) continue;
+          deps.add(dependencyLibraryUri);
+        }
+      }
+
       List<int> data = byteSink.builder.takeBytes();
       for (Library lib in libraries) {
         cachedPackageLibraries[lib.fileUri] = data;
+        cachedPackageDependencies[lib.fileUri] = new List<Uri>.from(deps);
       }
       ioSink.add(data);
     }
@@ -595,6 +627,8 @@
       // be processed as uris.
       return Uri.base.resolve(fileOrUri);
     }
+    Uri uri = Uri.parse(fileOrUri);
+    if (uri.scheme == 'package') return uri;
     return Uri.base.resolveUri(new Uri.file(fileOrUri));
   }
 
diff --git a/pkg/vm/lib/kernel_front_end.dart b/pkg/vm/lib/kernel_front_end.dart
index 2903b15..31cf8b6 100644
--- a/pkg/vm/lib/kernel_front_end.dart
+++ b/pkg/vm/lib/kernel_front_end.dart
@@ -49,6 +49,7 @@
     Map<String, String> environmentDefines,
     bool genBytecode: false,
     bool dropAST: false,
+    bool useFutureBytecodeFormat: false,
     bool enableAsserts: false,
     bool enableConstantEvaluation: true}) async {
   // Replace error handler to detect if there are compilation errors.
@@ -58,13 +59,29 @@
 
   final component = await kernelForProgram(source, options);
 
+  // If we don't default back to the current VM we'll add environment defines
+  // for the core libraries.
+  if (component != null && environmentDefines != null) {
+    if (environmentDefines['dart.vm.product'] == 'true') {
+      environmentDefines['dart.developer.causal_async_stacks'] = 'false';
+    }
+    environmentDefines['dart.isVM'] = 'true';
+    for (final library in component.libraries) {
+      if (library.importUri.scheme == 'dart') {
+        final path = library.importUri.path;
+        if (!path.startsWith('_')) {
+          environmentDefines['dart.library.${path}'] = 'true';
+        }
+      }
+    }
+  }
+
   // Run global transformations only if component is correct.
   if (aot && component != null) {
     await _runGlobalTransformations(
         source,
         options,
         component,
-        options.strongMode,
         useGlobalTypeFlowAnalysis,
         environmentDefines,
         enableAsserts,
@@ -75,8 +92,8 @@
   if (genBytecode && !errorDetector.hasCompilationErrors && component != null) {
     await runWithFrontEndCompilerContext(source, options, component, () {
       generateBytecode(component,
-          strongMode: options.strongMode,
           dropAST: dropAST,
+          useFutureBytecodeFormat: useFutureBytecodeFormat,
           environmentDefines: environmentDefines);
     });
   }
@@ -91,40 +108,37 @@
     Uri source,
     CompilerOptions compilerOptions,
     Component component,
-    bool strongMode,
     bool useGlobalTypeFlowAnalysis,
     Map<String, String> environmentDefines,
     bool enableAsserts,
     bool enableConstantEvaluation,
     ErrorDetector errorDetector) async {
-  if (strongMode) {
+  if (errorDetector.hasCompilationErrors) return;
+
+  final coreTypes = new CoreTypes(component);
+  _patchVmConstants(coreTypes);
+
+  // TODO(alexmarkov, dmitryas): Consider doing canonicalization of identical
+  // mixin applications when creating mixin applications in frontend,
+  // so all backends (and all transformation passes from the very beginning)
+  // can benefit from mixin de-duplication.
+  // At least, in addition to VM/AOT case we should run this transformation
+  // when building a platform dill file for VM/JIT case.
+  mixin_deduplication.transformComponent(component);
+
+  if (enableConstantEvaluation) {
+    await _performConstantEvaluation(source, compilerOptions, component,
+        coreTypes, environmentDefines, enableAsserts);
+
     if (errorDetector.hasCompilationErrors) return;
+  }
 
-    final coreTypes = new CoreTypes(component);
-    _patchVmConstants(coreTypes);
-
-    // TODO(alexmarkov, dmitryas): Consider doing canonicalization of identical
-    // mixin applications when creating mixin applications in frontend,
-    // so all backends (and all transformation passes from the very beginning)
-    // can benefit from mixin de-duplication.
-    // At least, in addition to VM/AOT case we should run this transformation
-    // when building a platform dill file for VM/JIT case.
-    mixin_deduplication.transformComponent(component);
-
-    if (enableConstantEvaluation) {
-      await _performConstantEvaluation(source, compilerOptions, component,
-          coreTypes, environmentDefines, strongMode, enableAsserts);
-
-      if (errorDetector.hasCompilationErrors) return;
-    }
-
-    if (useGlobalTypeFlowAnalysis) {
-      globalTypeFlow.transformComponent(
-          compilerOptions.target, coreTypes, component);
-    } else {
-      devirtualization.transformComponent(coreTypes, component);
-      no_dynamic_invocations_annotator.transformComponent(component);
-    }
+  if (useGlobalTypeFlowAnalysis) {
+    globalTypeFlow.transformComponent(
+        compilerOptions.target, coreTypes, component);
+  } else {
+    devirtualization.transformComponent(coreTypes, component);
+    no_dynamic_invocations_annotator.transformComponent(component);
   }
 }
 
@@ -152,7 +166,6 @@
     Component component,
     CoreTypes coreTypes,
     Map<String, String> environmentDefines,
-    bool strongMode,
     bool enableAsserts) async {
   final vmConstants =
       new vm_constants.VmConstantsBackend(environmentDefines, coreTypes);
@@ -160,13 +173,12 @@
   await runWithFrontEndCompilerContext(source, compilerOptions, component, () {
     final hierarchy = new ClassHierarchy(component);
     final typeEnvironment =
-        new TypeEnvironment(coreTypes, hierarchy, strongMode: strongMode);
+        new TypeEnvironment(coreTypes, hierarchy, strongMode: true);
 
     // TFA will remove constants fields which are unused (and respects the
     // vm/embedder entrypoints).
     constants.transformComponent(component, vmConstants,
         keepFields: true,
-        strongMode: true,
         evaluateAnnotations: true,
         enableAsserts: enableAsserts,
         errorReporter: new ForwardConstantEvaluationErrors(typeEnvironment));
@@ -231,7 +243,7 @@
   for (final String dflag in dFlags) {
     final equalsSignIndex = dflag.indexOf('=');
     if (equalsSignIndex < 0) {
-      environmentDefines[dflag] = '';
+      // Ignored.
     } else if (equalsSignIndex > 0) {
       final key = dflag.substring(0, equalsSignIndex);
       final value = dflag.substring(equalsSignIndex + 1);
diff --git a/pkg/vm/lib/metadata/bytecode.dart b/pkg/vm/lib/metadata/bytecode.dart
index 40c664c..573bd02 100644
--- a/pkg/vm/lib/metadata/bytecode.dart
+++ b/pkg/vm/lib/metadata/bytecode.dart
@@ -6,6 +6,8 @@
 
 import 'package:kernel/ast.dart';
 import '../bytecode/constant_pool.dart' show ConstantPool;
+import '../bytecode/dbc.dart'
+    show stableBytecodeFormatVersion, futureBytecodeFormatVersion;
 import '../bytecode/disassembler.dart' show BytecodeDisassembler;
 import '../bytecode/exceptions.dart' show ExceptionsTable;
 
@@ -14,6 +16,7 @@
 /// In kernel binary, bytecode metadata is encoded as following:
 ///
 /// type BytecodeMetadata {
+///   UInt bytecodeFormatVersion
 ///   UInt flags (HasExceptionsTable, HasNullableFields, HasClosures)
 ///
 ///   ConstantPool constantPool
@@ -46,6 +49,7 @@
   static const hasNullableFieldsFlag = 1 << 1;
   static const hasClosuresFlag = 1 << 2;
 
+  final int version;
   final ConstantPool constantPool;
   final List<int> bytecodes;
   final ExceptionsTable exceptionsTable;
@@ -61,13 +65,16 @@
       (hasNullableFields ? hasNullableFieldsFlag : 0) |
       (hasClosures ? hasClosuresFlag : 0);
 
-  BytecodeMetadata(this.constantPool, this.bytecodes, this.exceptionsTable,
-      this.nullableFields, this.closures);
+  BytecodeMetadata(this.version, this.constantPool, this.bytecodes,
+      this.exceptionsTable, this.nullableFields, this.closures);
 
   // TODO(alexmarkov): Consider printing constant pool before bytecode.
   @override
   String toString() => "\n"
-      "Bytecode {\n"
+      "Bytecode"
+      " (version: "
+      "${version == stableBytecodeFormatVersion ? 'stable' : version == futureBytecodeFormatVersion ? 'future' : "v$version"}"
+      ") {\n"
       "${new BytecodeDisassembler().disassemble(bytecodes, exceptionsTable)}}\n"
       "$exceptionsTable"
       "${nullableFields.isEmpty ? '' : 'Nullable fields: ${nullableFields.map((ref) => ref.asField).toList()}\n'}"
@@ -121,6 +128,7 @@
 
   @override
   void writeToBinary(BytecodeMetadata metadata, Node node, BinarySink sink) {
+    sink.writeUInt30(metadata.version);
     sink.writeUInt30(metadata.flags);
     metadata.constantPool.writeToBinary(node, sink);
     sink.writeByteList(metadata.bytecodes);
@@ -140,6 +148,11 @@
 
   @override
   BytecodeMetadata readFromBinary(Node node, BinarySource source) {
+    int version = source.readUInt();
+    if (version != stableBytecodeFormatVersion &&
+        version != futureBytecodeFormatVersion) {
+      throw 'Error: unexpected bytecode version $version';
+    }
     int flags = source.readUInt();
     final ConstantPool constantPool =
         new ConstantPool.readFromBinary(node, source);
@@ -158,7 +171,7 @@
             ? new List<ClosureBytecode>.generate(source.readUInt(),
                 (_) => new ClosureBytecode.readFromBinary(source))
             : const <ClosureBytecode>[];
-    return new BytecodeMetadata(
-        constantPool, bytecodes, exceptionsTable, nullableFields, closures);
+    return new BytecodeMetadata(version, constantPool, bytecodes,
+        exceptionsTable, nullableFields, closures);
   }
 }
diff --git a/pkg/vm/lib/metadata/inferred_type.dart b/pkg/vm/lib/metadata/inferred_type.dart
index 91200ea..55e9443 100644
--- a/pkg/vm/lib/metadata/inferred_type.dart
+++ b/pkg/vm/lib/metadata/inferred_type.dart
@@ -14,20 +14,54 @@
   static const int flagNullable = 1 << 0;
   static const int flagInt = 1 << 1;
 
-  InferredType(Class concreteClass, bool nullable, bool isInt)
-      : this._byReference(getClassReference(concreteClass),
-            (nullable ? flagNullable : 0) | (isInt ? flagInt : 0));
+  // For Parameters and Fields, whether a type-check is required at assignment
+  // (invocation/setter). Not meaningful on other kernel nodes.
+  static const int flagSkipCheck = 1 << 2;
 
-  InferredType._byReference(this._concreteClassReference, this._flags);
+  // Entire list may be null if no type arguments were inferred.
+  // Will always be null if `concreteClass` is null.
+  //
+  // Each component may be null if that particular type argument was not
+  // inferred.
+  //
+  // Otherwise, a non-null type argument indicates that that particular type
+  // argument (in the runtime type) is always exactly a particular `DartType`.
+  final List<DartType> exactTypeArguments;
+
+  InferredType(Class concreteClass, bool nullable, bool isInt,
+      {List<DartType> exactTypeArguments, bool skipCheck: false})
+      : this._byReference(
+            getClassReference(concreteClass),
+            (nullable ? flagNullable : 0) |
+                (isInt ? flagInt : 0) |
+                (skipCheck ? flagSkipCheck : 0),
+            exactTypeArguments);
+
+  InferredType._byReference(
+      this._concreteClassReference, this._flags, this.exactTypeArguments) {
+    assert(exactTypeArguments == null || _concreteClassReference != null);
+  }
 
   Class get concreteClass => _concreteClassReference?.asClass;
 
   bool get nullable => (_flags & flagNullable) != 0;
   bool get isInt => (_flags & flagInt) != 0;
+  bool get skipCheck => (_flags & flagSkipCheck) != 0;
 
   @override
-  String toString() =>
-      "${concreteClass != null ? concreteClass : (isInt ? 'int' : '!')}${nullable ? '?' : ''}";
+  String toString() {
+    final base =
+        "${concreteClass != null ? concreteClass : (isInt ? 'int' : '!')}";
+    final suffix = "${nullable ? '?' : ''}";
+    String typeArgs = "";
+    if (exactTypeArguments != null) {
+      typeArgs =
+          exactTypeArguments.map((t) => t != null ? "$t" : "?").join(", ");
+      typeArgs = "<" + typeArgs + ">";
+    }
+    final skip = skipCheck ? " (skip check)" : "";
+    return base + suffix + typeArgs + skip;
+  }
 }
 
 /// Repository for [InferredType].
@@ -40,6 +74,8 @@
 
   @override
   void writeToBinary(InferredType metadata, Node node, BinarySink sink) {
+    // TODO(sjindel/tfa): Implement serialization of type arguments when can use
+    // them for optimizations.
     sink.writeCanonicalNameReference(
         getCanonicalNameOfClass(metadata.concreteClass));
     sink.writeByte(metadata._flags);
@@ -47,9 +83,11 @@
 
   @override
   InferredType readFromBinary(Node node, BinarySource source) {
+    // TODO(sjindel/tfa): Implement serialization of type arguments when can use
+    // them for optimizations.
     final concreteClassReference =
         source.readCanonicalNameReference()?.getReference();
     final flags = source.readByte();
-    return new InferredType._byReference(concreteClassReference, flags);
+    return new InferredType._byReference(concreteClassReference, flags, null);
   }
 }
diff --git a/pkg/vm/lib/target/vm.dart b/pkg/vm/lib/target/vm.dart
index 6dd942a..322ca46 100644
--- a/pkg/vm/lib/target/vm.dart
+++ b/pkg/vm/lib/target/vm.dart
@@ -33,7 +33,7 @@
   VmTarget(this.flags);
 
   @override
-  bool get strongMode => flags.strongMode;
+  bool get legacyMode => flags.legacyMode;
 
   @override
   bool get enableNoSuchMethodForwarders => true;
diff --git a/pkg/vm/lib/transformations/type_flow/analysis.dart b/pkg/vm/lib/transformations/type_flow/analysis.dart
index 8c406ea..903431c 100644
--- a/pkg/vm/lib/transformations/type_flow/analysis.dart
+++ b/pkg/vm/lib/transformations/type_flow/analysis.dart
@@ -133,7 +133,7 @@
         typeFlowAnalysis.workList.processInvocation(nsmInvocation);
 
     // Result of this invocation depends on the result of noSuchMethod
-    // inovcation.
+    // invocation.
     nsmInvocation.addDependentInvocation(this);
 
     return type;
@@ -171,7 +171,8 @@
         assertx(args.values.length == firstParamIndex + 1);
         assertx(args.names.isEmpty);
         final Type setterArg = args.values[firstParamIndex];
-        fieldValue.setValue(setterArg, typeFlowAnalysis);
+        fieldValue.setValue(
+            setterArg, typeFlowAnalysis, field.isStatic ? null : args.receiver);
         return const EmptyType();
 
       case CallKind.Method:
@@ -202,7 +203,8 @@
           // does not throw exception.
           initializerResult = new Type.nullable(initializerResult);
         }
-        fieldValue.setValue(initializerResult, typeFlowAnalysis);
+        fieldValue.setValue(initializerResult, typeFlowAnalysis,
+            field.isStatic ? null : args.receiver);
         return const EmptyType();
     }
 
@@ -251,7 +253,8 @@
 
     final int positionalArguments = args.positionalCount;
 
-    final int firstParamIndex = hasReceiverArg(selector.member) ? 1 : 0;
+    final int firstParamIndex = numTypeParams(selector.member) +
+        (hasReceiverArg(selector.member) ? 1 : 0);
     final int requiredParameters =
         firstParamIndex + function.requiredParameterCount;
     if (positionalArguments < requiredParameters) {
@@ -442,12 +445,7 @@
       ConcreteType receiver,
       Map<Member, _ReceiverTypeBuilder> targets,
       TypeFlowAnalysis typeFlowAnalysis) {
-    DartType receiverDartType = receiver.dartType;
-
-    assertx(receiverDartType is! FunctionType);
-    assertx(receiverDartType is InterfaceType); // TODO(alexmarkov)
-
-    Class class_ = (receiverDartType as InterfaceType).classNode;
+    Class class_ = receiver.classNode;
 
     Member target = typeFlowAnalysis.hierarchyCache.hierarchy
         .getDispatchTarget(class_, selector.name, setter: selector.isSetter);
@@ -698,9 +696,11 @@
 class _FieldValue extends _DependencyTracker {
   final Field field;
   final Type staticType;
+  final Summary typeGuardSummary;
   Type value;
 
-  _FieldValue(this.field) : staticType = new Type.fromStatic(field.type) {
+  _FieldValue(this.field, this.typeGuardSummary)
+      : staticType = new Type.fromStatic(field.type) {
     if (field.initializer == null && _isDefaultValueOfFieldObservable()) {
       value = new Type.nullable(const EmptyType());
     } else {
@@ -708,6 +708,14 @@
     }
   }
 
+  bool get staticCallSiteSkipCheck {
+    if (typeGuardSummary != null) {
+      return (typeGuardSummary.result as TypeCheck).canSkipOnStaticCallSite;
+    } else {
+      return false;
+    }
+  }
+
   bool _isDefaultValueOfFieldObservable() {
     if (field.isStatic) {
       return true;
@@ -750,7 +758,8 @@
     return value;
   }
 
-  void setValue(Type newValue, TypeFlowAnalysis typeFlowAnalysis) {
+  void setValue(
+      Type newValue, TypeFlowAnalysis typeFlowAnalysis, Type receiverType) {
     // Make sure type cones are specialized before putting them into field
     // value, in order to ensure that dependency is established between
     // cone's base type and corresponding field setter.
@@ -776,11 +785,15 @@
     // is established.
     //
     final hierarchy = typeFlowAnalysis.hierarchyCache;
-    Type newType = value
-        .union(
-            newValue.specialize(hierarchy).intersection(staticType, hierarchy),
-            hierarchy)
-        .specialize(hierarchy);
+    // TODO(sjindel/tfa): Perform narrowing inside 'TypeCheck'.
+    final narrowedNewValue = typeGuardSummary != null
+        ? typeGuardSummary
+            .apply(
+                new Args([receiverType, newValue]), hierarchy, typeFlowAnalysis)
+            .intersection(staticType, hierarchy)
+        : newValue.specialize(hierarchy).intersection(staticType, hierarchy);
+    Type newType =
+        value.union(narrowedNewValue, hierarchy).specialize(hierarchy);
     assertx(newType.isSpecialized);
 
     if (newType != value) {
@@ -812,7 +825,7 @@
 
   /// Flag indicating if this class has a noSuchMethod() method not inherited
   /// from Object.
-  /// Lazy initialized by _ClassHierarchyCache.hasNonTrivialNoSuchMethod().
+  /// Lazy initialized by ClassHierarchyCache.hasNonTrivialNoSuchMethod().
   bool hasNonTrivialNoSuchMethod;
 
   _ClassData(this._id, this.class_, this.supertypes) {
@@ -821,7 +834,7 @@
 
   ConcreteType _concreteType;
   ConcreteType get concreteType =>
-      _concreteType ??= new ConcreteType(this, class_.rawType);
+      _concreteType ??= new ConcreteType(this, class_, null);
 
   Type _specializedConeType;
   Type get specializedConeType =>
@@ -865,11 +878,78 @@
   String dump() => "$this {supers: $supertypes}";
 }
 
+class GenericInterfacesInfoImpl implements GenericInterfacesInfo {
+  final ClosedWorldClassHierarchy hierarchy;
+
+  final supertypeOffsetsCache = <SubtypePair, int>{};
+  final cachedFlattenedTypeArgs = <Class, List<DartType>>{};
+  final cachedFlattenedTypeArgsForNonGeneric = <Class, List<Type>>{};
+
+  RuntimeTypeTranslator closedTypeTranslator;
+
+  GenericInterfacesInfoImpl(this.hierarchy) {
+    closedTypeTranslator = RuntimeTypeTranslator.forClosedTypes(this);
+  }
+
+  List<DartType> flattenedTypeArgumentsFor(Class klass, {bool useCache: true}) {
+    final cached = useCache ? cachedFlattenedTypeArgs[klass] : null;
+    if (cached != null) return cached;
+
+    final flattenedTypeArguments = List<DartType>.from(
+        klass.typeParameters.map((t) => new TypeParameterType(t)));
+
+    for (final Supertype intf in hierarchy.genericSupertypesOf(klass)) {
+      int offset = findOverlap(flattenedTypeArguments, intf.typeArguments);
+      flattenedTypeArguments.addAll(
+          intf.typeArguments.skip(flattenedTypeArguments.length - offset));
+      supertypeOffsetsCache[SubtypePair(klass, intf.classNode)] = offset;
+    }
+
+    return flattenedTypeArguments;
+  }
+
+  int genericInterfaceOffsetFor(Class klass, Class iface) {
+    if (klass == iface) return 0;
+
+    final pair = new SubtypePair(klass, iface);
+    int offset = supertypeOffsetsCache[pair];
+
+    if (offset != null) return offset;
+
+    flattenedTypeArgumentsFor(klass);
+    offset = supertypeOffsetsCache[pair];
+
+    if (offset == null) {
+      throw "Invalid call to genericInterfaceOffsetFor.";
+    }
+
+    return offset;
+  }
+
+  List<Type> flattenedTypeArgumentsForNonGeneric(Class klass) {
+    List<Type> result = cachedFlattenedTypeArgsForNonGeneric[klass];
+    if (result != null) return result;
+
+    List<DartType> flattenedTypeArgs =
+        flattenedTypeArgumentsFor(klass, useCache: false);
+    result = new List<Type>(flattenedTypeArgs.length);
+    for (int i = 0; i < flattenedTypeArgs.length; ++i) {
+      final translated = closedTypeTranslator.translate(flattenedTypeArgs[i]);
+      assertx(translated is RuntimeType || translated is AnyType);
+      result[i] = translated;
+    }
+    cachedFlattenedTypeArgsForNonGeneric[klass] = result;
+    return result;
+  }
+}
+
 class _ClassHierarchyCache implements TypeHierarchy {
   final TypeFlowAnalysis _typeFlowAnalysis;
   final ClosedWorldClassHierarchy hierarchy;
+  final TypeEnvironment environment;
   final Set<Class> allocatedClasses = new Set<Class>();
   final Map<Class, _ClassData> classes = <Class, _ClassData>{};
+  final GenericInterfacesInfo genericInterfacesInfo;
 
   /// Object.noSuchMethod().
   final Member objectNoSuchMethod;
@@ -887,10 +967,10 @@
   final Map<DynamicSelector, _DynamicTargetSet> _dynamicTargets =
       <DynamicSelector, _DynamicTargetSet>{};
 
-  _ClassHierarchyCache(this._typeFlowAnalysis, this.hierarchy)
+  _ClassHierarchyCache(this._typeFlowAnalysis, this.hierarchy,
+      this.genericInterfacesInfo, this.environment)
       : objectNoSuchMethod = hierarchy.getDispatchTarget(
-            _typeFlowAnalysis.environment.coreTypes.objectClass,
-            noSuchMethodName) {
+            environment.coreTypes.objectClass, noSuchMethodName) {
     assertx(objectNoSuchMethod != null);
   }
 
@@ -943,6 +1023,9 @@
       return true;
     }
 
+    if (superType is DynamicType || superType is VoidType) return true;
+    if (subType is DynamicType || subType is VoidType) return false;
+
     // TODO(alexmarkov): handle function types properly
     if (subType is FunctionType) {
       subType = _typeFlowAnalysis.environment.rawFunctionType;
@@ -951,16 +1034,21 @@
       superType = _typeFlowAnalysis.environment.rawFunctionType;
     }
     // TODO(alexmarkov): handle generic types properly.
-    if (subType is TypeParameterType) {
-      subType = (subType as TypeParameterType).bound;
-    }
-    if (superType is TypeParameterType) {
-      superType = (superType as TypeParameterType).bound;
-    }
+    assertx(subType is! TypeParameterType);
+    assertx(superType is! TypeParameterType);
 
     assertx(subType is InterfaceType, details: subType); // TODO(alexmarkov)
     assertx(superType is InterfaceType, details: superType); // TODO(alexmarkov)
 
+    // InterfaceTypes should be raw, since we don't handle type arguments
+    // (although frankly we can't distinguish between raw C and C<dynamic).
+    assertx((subType as InterfaceType)
+        .typeArguments
+        .every((t) => t == const DynamicType()));
+    assertx((superType as InterfaceType)
+        .typeArguments
+        .every((t) => t == const DynamicType()));
+
     Class subClass = (subType as InterfaceType).classNode;
     Class superClass = (superType as InterfaceType).classNode;
     if (subClass == superClass) {
@@ -1057,9 +1145,21 @@
   }
 
   @override
+  List<DartType> flattenedTypeArgumentsFor(Class klass) =>
+      genericInterfacesInfo.flattenedTypeArgumentsFor(klass);
+
+  @override
+  int genericInterfaceOffsetFor(Class klass, Class iface) =>
+      genericInterfacesInfo.genericInterfaceOffsetFor(klass, iface);
+
+  @override
+  List<Type> flattenedTypeArgumentsForNonGeneric(Class klass) =>
+      genericInterfacesInfo.flattenedTypeArgumentsForNonGeneric(klass);
+
+  @override
   String toString() {
     StringBuffer buf = new StringBuffer();
-    buf.write("_ClassHierarchyCache {\n");
+    buf.write("ClassHierarchyCache {\n");
     buf.write("  allocated classes:\n");
     allocatedClasses.forEach((c) {
       buf.write("    $c\n");
@@ -1071,6 +1171,9 @@
     buf.write("}\n");
     return buf.toString();
   }
+
+  Class get futureOrClass => environment.coreTypes.futureOrClass;
+  Class get futureClass => environment.coreTypes.futureClass;
 }
 
 class _WorkList {
@@ -1196,6 +1299,7 @@
   SummaryCollector summaryCollector;
   _InvocationsCache _invocationsCache;
   _WorkList workList;
+  GenericInterfacesInfo _genericInterfacesInfo;
 
   final Map<Member, Summary> _summaries = <Member, Summary>{};
   final Map<Field, _FieldValue> _fieldValues = <Field, _FieldValue>{};
@@ -1204,15 +1308,22 @@
   final Set<Member> _calledViaInterfaceSelector = new Set<Member>();
   final Set<Member> _calledViaThis = new Set<Member>();
 
-  TypeFlowAnalysis(this.target, Component component, CoreTypes coreTypes,
-      ClosedWorldClassHierarchy hierarchy, this.environment, this.libraryIndex,
+  TypeFlowAnalysis(
+      this.target,
+      Component component,
+      CoreTypes coreTypes,
+      ClosedWorldClassHierarchy hierarchy,
+      this._genericInterfacesInfo,
+      this.environment,
+      this.libraryIndex,
       {PragmaAnnotationParser matcher})
       : annotationMatcher =
             matcher ?? new ConstantPragmaAnnotationParser(coreTypes) {
     nativeCodeOracle = new NativeCodeOracle(libraryIndex, annotationMatcher);
-    hierarchyCache = new _ClassHierarchyCache(this, hierarchy);
-    summaryCollector =
-        new SummaryCollector(target, environment, this, nativeCodeOracle);
+    hierarchyCache = new _ClassHierarchyCache(
+        this, hierarchy, _genericInterfacesInfo, environment);
+    summaryCollector = new SummaryCollector(
+        target, environment, this, nativeCodeOracle, hierarchyCache);
     _invocationsCache = new _InvocationsCache(this);
     workList = new _WorkList(this);
 
@@ -1227,7 +1338,12 @@
   }
 
   _FieldValue getFieldValue(Field field) {
-    return _fieldValues[field] ??= new _FieldValue(field);
+    Summary setterSummary = null;
+    if (field.isGenericCovariantImpl) {
+      setterSummary = summaryCollector.createSummary(field,
+          fieldSummaryType: FieldSummaryType.kFieldGuard);
+    }
+    return _fieldValues[field] ??= new _FieldValue(field, setterSummary);
   }
 
   void process() {
@@ -1249,6 +1365,12 @@
 
   Type fieldType(Field field) => _fieldValues[field]?.value;
 
+  // True if a the runtime type-check for this field can be skipped on
+  // statically-typed setter calls. (The type-check is only simulated after
+  // narrowing by the static parameter type.)
+  bool fieldStaticCallSiteSkipCheck(Field field) =>
+      _fieldValues[field]?.staticCallSiteSkipCheck;
+
   Args<Type> argumentTypes(Member member) => _summaries[member]?.argumentTypes;
 
   bool isTearOffTaken(Member member) => _tearOffTaken.contains(member);
@@ -1268,6 +1390,12 @@
       _calledViaDynamicSelector.contains(member) ||
       _calledViaInterfaceSelector.contains(member);
 
+  // Returns parameters for which a runtime type-check can be skipped on
+  // statically-typed call-sites. (The type-check is only simulated after
+  // narrowing by the static parameter type.)
+  List<VariableDeclaration> staticCallSiteSkipCheckParams(Member member) =>
+      _summaries[member]?.staticCallSiteSkipCheckParams;
+
   /// ---- Implementation of [CallHandler] interface. ----
 
   @override
@@ -1309,7 +1437,13 @@
 
   @override
   void addDirectFieldAccess(Field field, Type value) {
-    getFieldValue(field).setValue(value, this);
+    final fieldValue = getFieldValue(field);
+    if (field.isStatic) {
+      fieldValue.setValue(value, this, /*receiver_type=*/ null);
+    } else {
+      final receiver = new Type.cone(new InterfaceType(field.parent));
+      fieldValue.setValue(value, this, receiver);
+    }
   }
 
   @override
diff --git a/pkg/vm/lib/transformations/type_flow/summary.dart b/pkg/vm/lib/transformations/type_flow/summary.dart
index f4a99d2..c2e7b40 100644
--- a/pkg/vm/lib/transformations/type_flow/summary.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary.dart
@@ -55,12 +55,19 @@
   void visitJoin(Join expr) => visitDefault(expr);
   void visitUse(Use expr) => visitDefault(expr);
   void visitCall(Call expr) => visitDefault(expr);
+  void visitExtract(Extract expr) => visitDefault(expr);
+  void visitCreateConcreteType(CreateConcreteType expr) => visitDefault(expr);
+  void visitCreateRuntimeType(CreateRuntimeType expr) => visitDefault(expr);
+  void visitTypeCheck(TypeCheck expr) => visitDefault(expr);
 }
 
 /// Input parameter of the summary.
 class Parameter extends Statement {
   final String name;
+
+  // 'staticType' is null for type parameters to factory constructors.
   final Type staticType;
+
   Type defaultValue;
   Type _argumentType = const EmptyType();
 
@@ -261,6 +268,182 @@
   }
 }
 
+// Extract a type argument from a ConcreteType (used to extract type arguments
+// from receivers of methods).
+class Extract extends Statement {
+  TypeExpr arg;
+
+  final Class referenceClass;
+  final int paramIndex;
+
+  Extract(this.arg, this.referenceClass, this.paramIndex);
+
+  @override
+  void accept(StatementVisitor visitor) => visitor.visitExtract(this);
+
+  @override
+  String dump() => "$label = _Extract ($arg[$referenceClass/$paramIndex])";
+
+  @override
+  Type apply(List<Type> computedTypes, TypeHierarchy typeHierarchy,
+      CallHandler callHandler) {
+    Type argType = arg.getComputedType(computedTypes);
+    Type extractedType;
+
+    void extractType(ConcreteType c) {
+      if (c.typeArgs == null) {
+        extractedType = const AnyType();
+      } else {
+        final interfaceOffset = typeHierarchy.genericInterfaceOffsetFor(
+            c.classNode, referenceClass);
+        final extract = c.typeArgs[interfaceOffset + paramIndex];
+        assertx(extract is AnyType || extract is RuntimeType);
+        if (extractedType == null || extract == extractedType) {
+          extractedType = extract;
+        } else {
+          extractedType = const AnyType();
+        }
+      }
+    }
+
+    // TODO(sjindel/tfa): Support more types here if possible.
+    if (argType is ConcreteType) {
+      extractType(argType);
+    } else if (argType is SetType) {
+      argType.types.forEach(extractType);
+    }
+
+    return extractedType ?? const AnyType();
+  }
+}
+
+// Instantiate a concrete type with type arguments. For example, used to fill in
+// "T = int" in "C<T>" to create "C<int>".
+//
+// The type arguments are factored against the generic interfaces; for more
+// details see 'ClassHierarchyCache.factoredGenericInterfacesOf'.
+class CreateConcreteType extends Statement {
+  final ConcreteType type;
+  final List<TypeExpr> flattenedTypeArgs;
+
+  CreateConcreteType(this.type, this.flattenedTypeArgs);
+
+  @override
+  void accept(StatementVisitor visitor) =>
+      visitor.visitCreateConcreteType(this);
+
+  @override
+  String dump() {
+    int numImmediateTypeArgs = type.classNode.typeParameters.length;
+    return "$label = _CreateConcreteType (${type.classNode} @ "
+        "${flattenedTypeArgs.take(numImmediateTypeArgs)})";
+  }
+
+  @override
+  Type apply(List<Type> computedTypes, TypeHierarchy typeHierarchy,
+      CallHandler callHandler) {
+    bool hasRuntimeType = false;
+    final types = new List<Type>(flattenedTypeArgs.length);
+    for (int i = 0; i < types.length; ++i) {
+      final computed = flattenedTypeArgs[i].getComputedType(computedTypes);
+      assertx(computed is RuntimeType || computed is AnyType);
+      if (computed is RuntimeType) hasRuntimeType = true;
+      types[i] = computed;
+    }
+    return new ConcreteType(
+        type.classId, type.classNode, hasRuntimeType ? types : null);
+  }
+}
+
+// Similar to "CreateConcreteType", but creates a "RuntimeType" rather than a
+// "ConcreteType". Unlike a "ConcreteType", none of the type arguments can be
+// missing ("AnyType").
+class CreateRuntimeType extends Statement {
+  final Class klass;
+  final List<TypeExpr> flattenedTypeArgs;
+
+  CreateRuntimeType(this.klass, this.flattenedTypeArgs);
+
+  @override
+  void accept(StatementVisitor visitor) => visitor.visitCreateRuntimeType(this);
+
+  @override
+  String dump() => "$label = _CreateRuntimeType ($klass @ "
+      "${flattenedTypeArgs.take(klass.typeParameters.length)})";
+
+  @override
+  Type apply(List<Type> computedTypes, TypeHierarchy typeHierarchy,
+      CallHandler callHandler) {
+    final types = new List<RuntimeType>(flattenedTypeArgs.length);
+    for (int i = 0; i < types.length; ++i) {
+      final computed = flattenedTypeArgs[i].getComputedType(computedTypes);
+      assertx(computed is RuntimeType || computed is AnyType);
+      if (computed is AnyType) return const AnyType();
+      types[i] = computed;
+    }
+    return new RuntimeType(new InterfaceType(klass), types);
+  }
+}
+
+// Used to simulate a runtime type-check, to determine when it can be skipped.
+// TODO(sjindel/tfa): Unify with Narrow.
+class TypeCheck extends Statement {
+  TypeExpr arg;
+  TypeExpr type;
+
+  bool _canSkip = true;
+
+  // True if a the runtime type-check for this parameter can be skipped on
+  // statically-typed call-sites. (The type-check is only simulated after
+  // narrowing by the static parameter type.)
+  bool get canSkipOnStaticCallSite => _canSkip;
+
+  final VariableDeclaration parameter;
+
+  TypeCheck(this.arg, this.type, this.parameter);
+
+  @override
+  void accept(StatementVisitor visitor) => visitor.visitTypeCheck(this);
+
+  @override
+  String dump() {
+    String result = "$label = _TypeCheck ($arg against $type)";
+    if (parameter != null) {
+      result += " (for parameter ${parameter.name})";
+    }
+    return result;
+  }
+
+  @override
+  Type apply(List<Type> computedTypes, TypeHierarchy typeHierarchy,
+      CallHandler callHandler) {
+    Type argType = arg.getComputedType(computedTypes);
+    Type checkType = type.getComputedType(computedTypes);
+    // TODO(sjindel/tfa): Narrow the result if possible.
+    assertx(checkType is AnyType || checkType is RuntimeType);
+    if (_canSkip) {
+      if (checkType is AnyType) {
+        // If we don't know what the RHS of the check is going to be, we can't
+        // guarantee that it will pass.
+        if (kPrintTrace) {
+          tracePrint("TypeCheck failed, type is unknown");
+        }
+        _canSkip = false;
+      } else if (checkType is RuntimeType) {
+        _canSkip = argType.isSubtypeOfRuntimeType(typeHierarchy, checkType);
+        if (kPrintTrace && !_canSkip) {
+          tracePrint("TypeCheck of $argType against $checkType failed.");
+        }
+        argType = argType.intersection(
+            Type.fromStatic(checkType.representedTypeRaw), typeHierarchy);
+      } else {
+        assertx(false, details: "Cannot see $checkType on RHS of TypeCheck.");
+      }
+    }
+    return argType;
+  }
+}
+
 /// Summary is a linear sequence of statements representing a type flow in
 /// one member, function or initializer.
 class Summary {
@@ -318,13 +501,19 @@
 
     for (int i = 0; i < positionalArgCount; i++) {
       final Parameter param = _statements[i] as Parameter;
-      final argType = args[i].specialize(typeHierarchy);
-      param._observeArgumentType(argType, typeHierarchy);
-      types[i] = argType.intersection(param.staticType, typeHierarchy);
+      if (param.staticType != null) {
+        final argType = args[i].specialize(typeHierarchy);
+        param._observeArgumentType(argType, typeHierarchy);
+        // TODO(sjindel/tfa): Perform narrowing inside 'TypeCheck'.
+        types[i] = argType.intersection(param.staticType, typeHierarchy);
+      } else {
+        types[i] = args[i];
+      }
     }
 
     for (int i = positionalArgCount; i < positionalParameterCount; i++) {
       final Parameter param = _statements[i] as Parameter;
+      assertx(param.staticType != null);
       final argType = param.defaultValue.specialize(typeHierarchy);
       param._observeArgumentType(argType, typeHierarchy);
       types[i] = argType;
@@ -380,4 +569,15 @@
     }
     return new Args<Type>(argTypes, names: argNames);
   }
+
+  List<VariableDeclaration> get staticCallSiteSkipCheckParams {
+    final vars = <VariableDeclaration>[];
+    for (final statement in _statements) {
+      if (statement is TypeCheck && statement.canSkipOnStaticCallSite) {
+        final decl = statement.parameter;
+        if (decl != null) vars.add(decl);
+      }
+    }
+    return vars;
+  }
 }
diff --git a/pkg/vm/lib/transformations/type_flow/summary_collector.dart b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
index e1030c7..9cd99b0 100644
--- a/pkg/vm/lib/transformations/type_flow/summary_collector.dart
+++ b/pkg/vm/lib/transformations/type_flow/summary_collector.dart
@@ -11,6 +11,7 @@
 import 'package:kernel/ast.dart' hide Statement, StatementVisitor;
 import 'package:kernel/ast.dart' as ast show Statement, StatementVisitor;
 import 'package:kernel/type_environment.dart' show TypeEnvironment;
+import 'package:kernel/type_algebra.dart' show Substitution;
 
 import 'calls.dart';
 import 'native_code.dart';
@@ -155,6 +156,36 @@
       }
     }
   }
+
+  @override
+  void visitCreateConcreteType(CreateConcreteType expr) {
+    for (int i = 0; i < expr.flattenedTypeArgs.length; ++i) {
+      expr.flattenedTypeArgs[i] =
+          _normalizeExpr(expr.flattenedTypeArgs[i], true);
+      if (_inLoop) return;
+    }
+  }
+
+  @override
+  void visitCreateRuntimeType(CreateRuntimeType expr) {
+    for (int i = 0; i < expr.flattenedTypeArgs.length; ++i) {
+      expr.flattenedTypeArgs[i] =
+          _normalizeExpr(expr.flattenedTypeArgs[i], true);
+      if (_inLoop) return;
+    }
+  }
+
+  @override
+  void visitTypeCheck(TypeCheck expr) {
+    expr.arg = _normalizeExpr(expr.arg, true);
+    if (_inLoop) return;
+    expr.type = _normalizeExpr(expr.type, true);
+  }
+
+  @override
+  void visitExtract(Extract expr) {
+    expr.arg = _normalizeExpr(expr.arg, true);
+  }
 }
 
 /// Detects whether the control flow can pass through the function body and
@@ -241,32 +272,43 @@
   bool visitFunctionDeclaration(FunctionDeclaration node) => true;
 }
 
+enum FieldSummaryType { kFieldGuard, kInitializer }
+
 /// Create a type flow summary for a member from the kernel AST.
 class SummaryCollector extends RecursiveVisitor<TypeExpr> {
   final Target target;
   final TypeEnvironment _environment;
   final EntryPointsListener _entryPointsListener;
   final NativeCodeOracle _nativeCodeOracle;
+  final GenericInterfacesInfo _genericInterfacesInfo;
 
   final Map<TreeNode, Call> callSites = <TreeNode, Call>{};
   final _FallthroughDetector _fallthroughDetector = new _FallthroughDetector();
 
   Summary _summary;
-  Map<VariableDeclaration, Join> _variables;
+  Map<VariableDeclaration, Join> _variableJoins;
+  Map<VariableDeclaration, TypeExpr> _variables;
   Join _returnValue;
   Parameter _receiver;
   ConstantAllocationCollector constantAllocationCollector;
+  RuntimeTypeTranslator _translator;
+
+  // Currently only used for factory constructors.
+  Map<TypeParameter, TypeExpr> _fnTypeVariables;
 
   SummaryCollector(this.target, this._environment, this._entryPointsListener,
-      this._nativeCodeOracle) {
+      this._nativeCodeOracle, this._genericInterfacesInfo) {
+    assertx(_genericInterfacesInfo != null);
     constantAllocationCollector = new ConstantAllocationCollector(this);
   }
 
-  Summary createSummary(Member member) {
+  Summary createSummary(Member member,
+      {fieldSummaryType: FieldSummaryType.kInitializer}) {
     debugPrint("===== ${member} =====");
     assertx(!member.isAbstract);
 
-    _variables = <VariableDeclaration, Join>{};
+    _variableJoins = <VariableDeclaration, Join>{};
+    _variables = <VariableDeclaration, TypeExpr>{};
     _returnValue = null;
     _receiver = null;
 
@@ -274,7 +316,10 @@
 
     if (member is Field) {
       if (hasReceiver) {
-        _summary = new Summary(parameterCount: 1, positionalParameterCount: 1);
+        final int numArgs =
+            fieldSummaryType == FieldSummaryType.kInitializer ? 1 : 2;
+        _summary = new Summary(
+            parameterCount: numArgs, positionalParameterCount: numArgs);
         // TODO(alexmarkov): subclass cone
         _receiver = _declareParameter(
             "this", member.enclosingClass.rawType, null,
@@ -283,12 +328,25 @@
       } else {
         _summary = new Summary();
       }
-      assertx(member.initializer != null);
-      _summary.result = _visit(member.initializer);
+
+      _translator = new RuntimeTypeTranslator(member.enclosingClass, _summary,
+          _receiver, null, _genericInterfacesInfo);
+
+      if (fieldSummaryType == FieldSummaryType.kInitializer) {
+        assertx(member.initializer != null);
+        _summary.result = _visit(member.initializer);
+      } else {
+        Parameter valueParam = _declareParameter("value", member.type, null);
+        TypeExpr runtimeType = _translator.translate(member.type);
+        final check = new TypeCheck(valueParam, runtimeType, null);
+        _summary.add(check);
+        _summary.result = check;
+      }
     } else {
       FunctionNode function = member.function;
 
-      final firstParamIndex = hasReceiver ? 1 : 0;
+      final numTypeParameters = numTypeParams(member);
+      final firstParamIndex = (hasReceiver ? 1 : 0) + numTypeParameters;
 
       _summary = new Summary(
           parameterCount: firstParamIndex +
@@ -299,6 +357,14 @@
           requiredParameterCount:
               firstParamIndex + function.requiredParameterCount);
 
+      if (numTypeParameters > 0) {
+        _fnTypeVariables = <TypeParameter, TypeExpr>{};
+        for (int i = 0; i < numTypeParameters; ++i) {
+          _fnTypeVariables[function.typeParameters[i]] =
+              _declareParameter(function.typeParameters[i].name, null, null);
+        }
+      }
+
       if (hasReceiver) {
         // TODO(alexmarkov): subclass cone
         _receiver = _declareParameter(
@@ -307,6 +373,9 @@
         _environment.thisType = member.enclosingClass?.thisType;
       }
 
+      _translator = new RuntimeTypeTranslator(member.enclosingClass, _summary,
+          _receiver, _fnTypeVariables, _genericInterfacesInfo);
+
       for (VariableDeclaration param in function.positionalParameters) {
         _declareParameter(param.name, param.type, param.initializer);
       }
@@ -316,11 +385,13 @@
 
       int count = firstParamIndex;
       for (VariableDeclaration param in function.positionalParameters) {
-        Join v = _declareVariable(param);
+        Join v =
+            _declareVariable(param, useTypeCheck: param.isGenericCovariantImpl);
         v.values.add(_summary.statements[count++]);
       }
       for (VariableDeclaration param in function.namedParameters) {
-        Join v = _declareVariable(param);
+        Join v =
+            _declareVariable(param, useTypeCheck: param.isGenericCovariantImpl);
         v.values.add(_summary.statements[count++]);
       }
       assertx(count == _summary.parameterCount);
@@ -377,6 +448,11 @@
     final List<Type> args = <Type>[];
     final List<String> names = <String>[];
 
+    final numTypeParameters = numTypeParams(member);
+    for (int i = 0; i < numTypeParameters; ++i) {
+      args.add(const AnyType());
+    }
+
     if (hasReceiverArg(member)) {
       assertx(member.enclosingClass != null);
       Type receiver = new Type.cone(member.enclosingClass.rawType);
@@ -422,8 +498,14 @@
 
   TypeExpr _visit(TreeNode node) => node.accept(this);
 
-  Args<TypeExpr> _visitArguments(TypeExpr receiver, Arguments arguments) {
+  Args<TypeExpr> _visitArguments(TypeExpr receiver, Arguments arguments,
+      {bool passTypeArguments: false}) {
     final args = <TypeExpr>[];
+    if (passTypeArguments) {
+      for (var type in arguments.types) {
+        args.add(_translator.translate(type));
+      }
+    }
     if (receiver != null) {
       args.add(receiver);
     }
@@ -451,8 +533,10 @@
   Parameter _declareParameter(
       String name, DartType type, Expression initializer,
       {bool isReceiver: false}) {
-    Type staticType =
-        isReceiver ? new ConeType(type) : new Type.fromStatic(type);
+    Type staticType;
+    if (type != null) {
+      staticType = isReceiver ? new ConeType(type) : new Type.fromStatic(type);
+    }
     final param = new Parameter(name, staticType);
     _summary.add(param);
     assertx(param.index < _summary.parameterCount);
@@ -474,17 +558,30 @@
     return param;
   }
 
-  Join _declareVariable(VariableDeclaration decl, {bool addInitType: false}) {
-    Join v = new Join(decl.name, decl.type);
-    _summary.add(v);
-    _variables[decl] = v;
+  Join _declareVariable(VariableDeclaration decl,
+      {bool addInitType: false, bool useTypeCheck: false}) {
+    Join join = new Join(decl.name, decl.type);
+    _summary.add(join);
+    _variableJoins[decl] = join;
+
+    TypeExpr variable = join;
+    if (useTypeCheck) {
+      TypeExpr runtimeType = _translator.translate(decl.type);
+      variable = new TypeCheck(variable, runtimeType, decl);
+      _summary.add(variable);
+      _summary.add(new Use(variable));
+    }
+
+    _variables[decl] = variable;
+
     if (decl.initializer != null) {
       TypeExpr initType = _visit(decl.initializer);
       if (addInitType) {
-        v.values.add(initType);
+        join.values.add(initType);
       }
     }
-    return v;
+
+    return join;
   }
 
   // TODO(alexmarkov): Avoid declaring variables with static types.
@@ -520,7 +617,7 @@
   void _addUse(TypeExpr arg) {
     if (arg is Narrow) {
       _addUse(arg.arg);
-    } else if (arg is Join || arg is Call) {
+    } else if (arg is Join || arg is Call || arg is TypeCheck) {
       _summary.add(new Use(arg));
     } else {
       assertx(arg is Type || arg is Parameter);
@@ -571,19 +668,24 @@
   }
 
   void _handleNestedFunctionNode(FunctionNode node) {
-    var oldReturn = _returnValue;
-    var oldVariables = _variables;
+    final oldReturn = _returnValue;
+    final oldVariableJoins = _variableJoins;
+    final oldVariables = _variables;
     _returnValue = null;
-    _variables = <VariableDeclaration, Join>{};
+    _variableJoins = <VariableDeclaration, Join>{};
+    _variableJoins.addAll(oldVariableJoins);
+    _variables = <VariableDeclaration, TypeExpr>{};
     _variables.addAll(oldVariables);
 
     // Approximate parameters of nested functions with static types.
+    // TODO(sjindel/tfa): Use TypeCheck for closure parameters.
     node.positionalParameters.forEach(_declareVariableWithStaticType);
     node.namedParameters.forEach(_declareVariableWithStaticType);
 
     _visit(node.body);
 
     _returnValue = oldReturn;
+    _variableJoins = oldVariableJoins;
     _variables = oldVariables;
   }
 
@@ -595,7 +697,16 @@
   TypeExpr visitAsExpression(AsExpression node) {
     TypeExpr operand = _visit(node.operand);
     Type type = new Type.fromStatic(node.type);
-    return _makeNarrow(operand, type);
+
+    TypeExpr result = _makeNarrow(operand, type);
+
+    TypeExpr runtimeType = _translator.translate(node.type);
+    if (runtimeType is Statement) {
+      result = new TypeCheck(operand, runtimeType, /*parameter=*/ null);
+      _summary.add(result);
+    }
+
+    return result;
   }
 
   @override
@@ -626,9 +737,10 @@
 
   @override
   TypeExpr visitConstructorInvocation(ConstructorInvocation node) {
-    final receiver =
+    ConcreteType klass =
         _entryPointsListener.addAllocatedClass(node.constructedType.classNode);
-
+    TypeExpr receiver =
+        _translator.instantiateConcreteType(klass, node.arguments.types);
     final args = _visitArguments(receiver, node.arguments);
     _makeCall(node, new DirectSelector(node.target), args);
     return receiver;
@@ -718,9 +830,12 @@
     node.expressions.forEach(_visit);
     Class concreteClass =
         target.concreteListLiteralClass(_environment.coreTypes);
-    return concreteClass != null
-        ? _entryPointsListener.addAllocatedClass(concreteClass)
-        : _staticType(node);
+    if (concreteClass != null) {
+      return _translator.instantiateConcreteType(
+          _entryPointsListener.addAllocatedClass(concreteClass),
+          [node.typeArgument]);
+    }
+    return _staticType(node);
   }
 
   @override
@@ -738,9 +853,12 @@
     }
     Class concreteClass =
         target.concreteMapLiteralClass(_environment.coreTypes);
-    return concreteClass != null
-        ? _entryPointsListener.addAllocatedClass(concreteClass)
-        : _staticType(node);
+    if (concreteClass != null) {
+      return _translator.instantiateConcreteType(
+          _entryPointsListener.addAllocatedClass(concreteClass),
+          [node.keyType, node.valueType]);
+    }
+    return _staticType(node);
   }
 
   @override
@@ -917,7 +1035,8 @@
 
   @override
   TypeExpr visitStaticInvocation(StaticInvocation node) {
-    final args = _visitArguments(null, node.arguments);
+    final args = _visitArguments(null, node.arguments,
+        passTypeArguments: node.target.isFactory);
     final target = node.target;
     assertx((target is! Field) && !target.isGetter && !target.isSetter);
     return _makeCall(node, new DirectSelector(target), args);
@@ -969,7 +1088,7 @@
 
   @override
   TypeExpr visitVariableGet(VariableGet node) {
-    Join v = _variables[node.variable];
+    final v = _variables[node.variable];
     if (v == null) {
       throw 'Unable to find variable ${node.variable}';
     }
@@ -984,7 +1103,7 @@
 
   @override
   TypeExpr visitVariableSet(VariableSet node) {
-    Join v = _variables[node.variable];
+    Join v = _variableJoins[node.variable];
     assertx(v != null, details: node);
 
     TypeExpr value = _visit(node.value);
@@ -1221,6 +1340,141 @@
   }
 }
 
+class RuntimeTypeTranslator extends DartTypeVisitor<TypeExpr> {
+  final Class enclosingClass;
+  final Summary summary;
+  final Map<TypeParameter, TypeExpr> functionTypeVariables;
+  final Map<DartType, TypeExpr> typesCache = <DartType, TypeExpr>{};
+  final TypeExpr receiver;
+  final GenericInterfacesInfo genericInterfacesInfo;
+
+  RuntimeTypeTranslator(this.enclosingClass, this.summary, this.receiver,
+      this.functionTypeVariables, this.genericInterfacesInfo) {}
+
+  // Create a type translator which can be used only for types with no free type
+  // variables.
+  RuntimeTypeTranslator.forClosedTypes(this.genericInterfacesInfo)
+      : enclosingClass = null,
+        summary = null,
+        functionTypeVariables = null,
+        receiver = null {}
+
+  TypeExpr instantiateConcreteType(ConcreteType type, List<DartType> typeArgs) {
+    if (typeArgs.isEmpty) return type;
+
+    // This function is very similar to 'visitInterfaceType', but with
+    // many small differences.
+    final klass = type.classNode;
+    final substitution = Substitution.fromPairs(klass.typeParameters, typeArgs);
+    final flattenedTypeArgs =
+        genericInterfacesInfo.flattenedTypeArgumentsFor(klass);
+    final flattenedTypeExprs = new List<TypeExpr>(flattenedTypeArgs.length);
+
+    bool createConcreteType = true;
+    bool allAnyType = true;
+    for (int i = 0; i < flattenedTypeArgs.length; ++i) {
+      final typeExpr =
+          translate(substitution.substituteType(flattenedTypeArgs[i]));
+      if (typeExpr != const AnyType()) allAnyType = false;
+      if (typeExpr is Statement) createConcreteType = false;
+      flattenedTypeExprs[i] = typeExpr;
+    }
+
+    if (allAnyType) return type;
+
+    if (createConcreteType) {
+      return new ConcreteType(type.classId, type.classNode,
+          new List<Type>.from(flattenedTypeExprs));
+    } else {
+      final instantiate = new CreateConcreteType(type, flattenedTypeExprs);
+      summary.add(instantiate);
+      return instantiate;
+    }
+  }
+
+  // Creates a TypeExpr representing the set of types which can flow through a
+  // given DartType.
+  //
+  // Will return AnyType, RuntimeType or Statement.
+  TypeExpr translate(DartType type) {
+    final cached = typesCache[type];
+    if (cached != null) return cached;
+
+    // During type translation, loops can arise via super-bounded types:
+    //
+    //   class A<T> extends Comparable<A<T>> {}
+    //
+    // Creating the factored type arguments of A will lead to an infinite loop.
+    // We break such loops by inserting an 'AnyType' in place of the currently
+    // processed type, ensuring we try to build 'A<T>' in the process of
+    // building 'A<T>'.
+    typesCache[type] = const AnyType();
+    final result = type.accept(this);
+    assertx(result is AnyType || result is RuntimeType || result is Statement);
+    typesCache[type] = result;
+    return result;
+  }
+
+  @override
+  TypeExpr defaultDartType(DartType node) => const AnyType();
+
+  @override
+  TypeExpr visitDynamicType(DynamicType type) => new RuntimeType(type, null);
+  @override
+  TypeExpr visitVoidType(VoidType type) => new RuntimeType(type, null);
+  @override
+  TypeExpr visitBottomType(BottomType type) => new RuntimeType(type, null);
+
+  @override
+  visitTypedefType(TypedefType node) => translate(node.unalias);
+
+  @override
+  visitInterfaceType(InterfaceType type) {
+    if (type.typeArguments.isEmpty) return new RuntimeType(type, null);
+
+    final substitution = Substitution.fromPairs(
+        type.classNode.typeParameters, type.typeArguments);
+    final flattenedTypeArgs =
+        genericInterfacesInfo.flattenedTypeArgumentsFor(type.classNode);
+    final flattenedTypeExprs = new List<TypeExpr>(flattenedTypeArgs.length);
+
+    bool createRuntimeType = true;
+    for (var i = 0; i < flattenedTypeArgs.length; ++i) {
+      final typeExpr =
+          translate(substitution.substituteType(flattenedTypeArgs[i]));
+      if (typeExpr == const AnyType()) return const AnyType();
+      if (typeExpr is! RuntimeType) createRuntimeType = false;
+      flattenedTypeExprs[i] = typeExpr;
+    }
+
+    if (createRuntimeType) {
+      return new RuntimeType(new InterfaceType(type.classNode),
+          new List<RuntimeType>.from(flattenedTypeExprs));
+    } else {
+      final instantiate =
+          new CreateRuntimeType(type.classNode, flattenedTypeExprs);
+      summary.add(instantiate);
+      return instantiate;
+    }
+  }
+
+  @override
+  visitTypeParameterType(TypeParameterType type) {
+    if (functionTypeVariables != null) {
+      final result = functionTypeVariables[type.parameter];
+      if (result != null) return result;
+    }
+    if (type.parameter.parent is! Class) return const AnyType();
+    assertx(type.parameter.parent == enclosingClass);
+
+    assertx(receiver != null);
+    final extract = new Extract(receiver, enclosingClass,
+        enclosingClass.typeParameters.indexOf(type.parameter));
+    summary.add(extract);
+    return extract;
+  }
+}
+
 class EmptyEntryPointsListener implements EntryPointsListener {
   final Map<Class, IntClassId> _classIds = <Class, IntClassId>{};
   int _classIdCounter = 0;
@@ -1234,7 +1488,7 @@
   @override
   ConcreteType addAllocatedClass(Class c) {
     final classId = (_classIds[c] ??= new IntClassId(++_classIdCounter));
-    return new ConcreteType(classId, c.rawType);
+    return new ConcreteType(classId, c, null);
   }
 
   @override
@@ -1246,16 +1500,21 @@
 
 class CreateAllSummariesVisitor extends RecursiveVisitor<Null> {
   final TypeEnvironment _environment;
-  final SummaryCollector _summaryColector;
+  final SummaryCollector _summaryCollector;
 
-  CreateAllSummariesVisitor(Target target, this._environment)
-      : _summaryColector = new SummaryCollector(target, _environment,
-            new EmptyEntryPointsListener(), new NativeCodeOracle(null, null));
+  CreateAllSummariesVisitor(
+      Target target, this._environment, GenericInterfacesInfo hierarchy)
+      : _summaryCollector = new SummaryCollector(
+            target,
+            _environment,
+            new EmptyEntryPointsListener(),
+            new NativeCodeOracle(null, null),
+            hierarchy);
 
   @override
   defaultMember(Member m) {
     if (!m.isAbstract && !(m is Field && m.initializer == null)) {
-      _summaryColector.createSummary(m);
+      _summaryCollector.createSummary(m);
     }
   }
 }
diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart
index 42835d1..bc6bb28 100644
--- a/pkg/vm/lib/transformations/type_flow/transformer.dart
+++ b/pkg/vm/lib/transformations/type_flow/transformer.dart
@@ -41,18 +41,20 @@
       onAmbiguousSupertypes: ignoreAmbiguousSupertypes);
   final types = new TypeEnvironment(coreTypes, hierarchy, strongMode: true);
   final libraryIndex = new LibraryIndex.all(component);
+  final genericInterfacesInfo = new GenericInterfacesInfoImpl(hierarchy);
 
   if (kDumpAllSummaries) {
     Statistics.reset();
-    new CreateAllSummariesVisitor(target, types).visitComponent(component);
+    new CreateAllSummariesVisitor(target, types, genericInterfacesInfo)
+        .visitComponent(component);
     Statistics.print("All summaries statistics");
   }
 
   Statistics.reset();
   final analysisStopWatch = new Stopwatch()..start();
 
-  final typeFlowAnalysis = new TypeFlowAnalysis(
-      target, component, coreTypes, hierarchy, types, libraryIndex,
+  final typeFlowAnalysis = new TypeFlowAnalysis(target, component, coreTypes,
+      hierarchy, genericInterfacesInfo, types, libraryIndex,
       matcher: matcher);
 
   Procedure main = component.mainMethod;
@@ -127,7 +129,7 @@
     component.addMetadataRepository(_procedureAttributesMetadata);
   }
 
-  InferredType _convertType(Type type) {
+  InferredType _convertType(Type type, {bool skipCheck: false}) {
     assertx(type != null);
 
     Class concreteClass;
@@ -148,15 +150,25 @@
       }
     }
 
+    List<DartType> typeArgs;
+    if (type is ConcreteType && type.typeArgs != null) {
+      typeArgs = type.typeArgs
+          .take(type.numImmediateTypeArgs)
+          .map((t) => t is AnyType ? null : (t as RuntimeType).representedType)
+          .toList();
+    }
+
     if ((concreteClass != null) || !nullable || isInt) {
-      return new InferredType(concreteClass, nullable, isInt);
+      return new InferredType(concreteClass, nullable, isInt,
+          exactTypeArguments: typeArgs, skipCheck: skipCheck);
     }
 
     return null;
   }
 
-  void _setInferredType(TreeNode node, Type type) {
-    final inferredType = _convertType(type);
+  void _setInferredType(TreeNode node, Type type, {bool skipCheck: false}) {
+    assertx(skipCheck == false || node is VariableDeclaration || node is Field);
+    final inferredType = _convertType(type, skipCheck: skipCheck);
     if (inferredType != null) {
       _inferredTypeMetadata.mapping[node] = inferredType;
     }
@@ -182,12 +194,17 @@
   void _annotateMember(Member member) {
     if (_typeFlowAnalysis.isMemberUsed(member)) {
       if (member is Field) {
-        _setInferredType(member, _typeFlowAnalysis.fieldType(member));
+        _setInferredType(member, _typeFlowAnalysis.fieldType(member),
+            skipCheck: _typeFlowAnalysis.fieldStaticCallSiteSkipCheck(member));
       } else {
         Args<Type> argTypes = _typeFlowAnalysis.argumentTypes(member);
         assertx(argTypes != null);
 
-        final int firstParamIndex = hasReceiverArg(member) ? 1 : 0;
+        final skipCheckParams = new Set<VariableDeclaration>.from(
+            _typeFlowAnalysis.staticCallSiteSkipCheckParams(member));
+
+        final int firstParamIndex =
+            numTypeParams(member) + (hasReceiverArg(member) ? 1 : 0);
 
         final positionalParams = member.function.positionalParameters;
         assertx(argTypes.positionalCount ==
@@ -195,7 +212,8 @@
 
         for (int i = 0; i < positionalParams.length; i++) {
           _setInferredType(
-              positionalParams[i], argTypes.values[firstParamIndex + i]);
+              positionalParams[i], argTypes.values[firstParamIndex + i],
+              skipCheck: skipCheckParams.contains(positionalParams[i]));
         }
 
         // TODO(dartbug.com/32292): make sure parameters are sorted in kernel
@@ -205,7 +223,8 @@
           final param = findNamedParameter(member.function, names[i]);
           assertx(param != null);
           _setInferredType(param,
-              argTypes.values[firstParamIndex + positionalParams.length + i]);
+              argTypes.values[firstParamIndex + positionalParams.length + i],
+              skipCheck: skipCheckParams.contains(param));
         }
 
         // TODO(alexmarkov): figure out how to pass receiver type.
diff --git a/pkg/vm/lib/transformations/type_flow/types.dart b/pkg/vm/lib/transformations/type_flow/types.dart
index c2da60f..51a0d82 100644
--- a/pkg/vm/lib/transformations/type_flow/types.dart
+++ b/pkg/vm/lib/transformations/type_flow/types.dart
@@ -11,14 +11,40 @@
 
 import 'utils.dart';
 
+abstract class GenericInterfacesInfo {
+  // Return a type arguments vector which contains the immediate type parameters
+  // to 'klass' as well as the type arguments to all generic supertypes of
+  // 'klass', instantiated in terms of the type parameters on 'klass'.
+  //
+  // The offset into this vector from which a specific generic supertype's type
+  // arguments can be found is given by 'genericInterfaceOffsetFor'.
+  List<DartType> flattenedTypeArgumentsFor(Class klass);
+
+  // Return the offset into the flattened type arguments vector from which a
+  // specific generic supertype's type arguments can be found. The flattened
+  // type arguments vector is given by 'flattenedTypeArgumentsFor'.
+  int genericInterfaceOffsetFor(Class klass, Class iface);
+
+  // Similar to 'flattenedTypeArgumentsFor', but works for non-generic classes
+  // which may have recursive substitutions, e.g. 'class num implements
+  // Comparable<num>'.
+  //
+  // Since there are no free type variables in the result, 'RuntimeType' is
+  // returned instead of 'DartType'.
+  List<Type> flattenedTypeArgumentsForNonGeneric(Class klass);
+}
+
 /// Abstract interface to type hierarchy information used by types.
-abstract class TypeHierarchy {
+abstract class TypeHierarchy implements GenericInterfacesInfo {
   /// Test if [subType] is a subtype of [superType].
   bool isSubtype(DartType subType, DartType superType);
 
   /// Return a more specific type for the type cone with [base] root.
   /// May return EmptyType, AnyType, ConcreteType or a SetType.
   Type specializeTypeCone(DartType base);
+
+  Class get futureOrClass;
+  Class get futureClass;
 }
 
 /// Basic normalization of Dart types.
@@ -97,6 +123,12 @@
 
   bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) => false;
 
+  // Returns 'true' if this type will definitely pass a runtime type-check
+  // against 'runtimeType'. Returns 'false' if the test might fail (e.g. due to
+  // an approximation).
+  bool isSubtypeOfRuntimeType(
+      TypeHierarchy typeHierarchy, RuntimeType runtimeType);
+
   @override
   Type getComputedType(List<Type> types) => this;
 
@@ -118,6 +150,7 @@
 
 /// Order of precedence between types for evaluation of union/intersection.
 enum TypeOrder {
+  RuntimeType,
   Empty,
   Nullable,
   Any,
@@ -147,6 +180,10 @@
 
   @override
   Type intersection(Type other, TypeHierarchy typeHierarchy) => this;
+
+  bool isSubtypeOfRuntimeType(TypeHierarchy typeHierarchy, RuntimeType other) {
+    return true;
+  }
 }
 
 /// Nullable type represents a union of a (non-nullable) type and the `null`
@@ -173,6 +210,9 @@
   bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
       baseType.isSubtypeOf(typeHierarchy, dartType);
 
+  bool isSubtypeOfRuntimeType(TypeHierarchy typeHierarchy, RuntimeType other) =>
+      baseType.isSubtypeOfRuntimeType(typeHierarchy, other);
+
   @override
   int get order => TypeOrder.Nullable.index;
 
@@ -212,6 +252,7 @@
 
 /// Type representing any instance except `null`.
 /// Semantically equivalent to ConeType of Object, but more efficient.
+/// Can also represent a set of types, the set of all types.
 class AnyType extends Type {
   const AnyType();
 
@@ -242,6 +283,10 @@
     }
     return other;
   }
+
+  bool isSubtypeOfRuntimeType(TypeHierarchy typeHierarchy, RuntimeType other) {
+    return typeHierarchy.isSubtype(const DynamicType(), other._type);
+  }
 }
 
 /// SetType is a union of concrete types T1, T2, ..., Tn, where n >= 2.
@@ -263,7 +308,7 @@
   int _computeHashCode() {
     int hash = 1237;
     for (var t in types) {
-      hash = (((hash * 31) & kHashMask) + t.classId.hashCode) & kHashMask;
+      hash = (((hash * 31) & kHashMask) + t.hashCode) & kHashMask;
     }
     return hash;
   }
@@ -272,7 +317,7 @@
   bool operator ==(other) {
     if ((other is SetType) && (types.length == other.types.length)) {
       for (int i = 0; i < types.length; i++) {
-        if (types[i].classId != other.types[i].classId) {
+        if (types[i] != other.types[i]) {
           return false;
         }
       }
@@ -288,6 +333,9 @@
   bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
       types.every((ConcreteType t) => t.isSubtypeOf(typeHierarchy, dartType));
 
+  bool isSubtypeOfRuntimeType(TypeHierarchy typeHierarchy, RuntimeType other) =>
+      types.every((t) => t.isSubtypeOfRuntimeType(typeHierarchy, other));
+
   @override
   int get order => TypeOrder.Set.index;
 
@@ -307,8 +355,13 @@
         types.add(t2);
         ++i2;
       } else {
-        assertx(t1 == t2);
-        types.add(t1);
+        if (t1 == t2) {
+          types.add(t1);
+        } else {
+          // TODO(sjindel/tfa): Merge the type arguments vectors.
+          // (e.g., Map<?, int> vs Map<String, int> can become Map<?, int>)
+          types.add(t1.raw);
+        }
         ++i1;
         ++i2;
       }
@@ -335,8 +388,14 @@
       } else if (relation > 0) {
         ++i2;
       } else {
-        assertx(t1 == t2);
-        types.add(t1);
+        if (t1.typeArgs == null && t2.typeArgs == null) {
+          types.add(t1);
+        } else {
+          final intersect = t1.intersection(t2, null);
+          if (intersect is! EmptyType) {
+            types.add(intersect);
+          }
+        }
         ++i1;
         ++i2;
       }
@@ -380,7 +439,13 @@
         return new SetType(list);
       }
     } else if (other is ConcreteType) {
-      return types.contains(other) ? other : const EmptyType();
+      for (var type in types) {
+        if (type == other) return other;
+        if (type.classId == other.classId) {
+          return type.intersection(other, typeHierarchy);
+        }
+      }
+      return EmptyType();
     } else if (other is ConeType) {
       return typeHierarchy
           .specializeTypeCone(other.dartType)
@@ -410,6 +475,14 @@
   bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
       typeHierarchy.isSubtype(this.dartType, dartType);
 
+  bool isSubtypeOfRuntimeType(TypeHierarchy typeHierarchy, RuntimeType other) {
+    if (!typeHierarchy.isSubtype(dartType, other._type)) return false;
+    if (dartType is InterfaceType) {
+      return (dartType as InterfaceType).classNode.typeParameters.isEmpty;
+    }
+    return true;
+  }
+
   @override
   int get hashCode => (dartType.hashCode + 37) & kHashMask;
 
@@ -446,7 +519,7 @@
         return other;
       }
     } else if (other is ConcreteType) {
-      if (typeHierarchy.isSubtype(other.dartType, this.dartType)) {
+      if (typeHierarchy.isSubtype(other.classNode.rawType, this.dartType)) {
         return this;
       }
     }
@@ -471,7 +544,7 @@
         return this;
       }
     } else if (other is ConcreteType) {
-      if (typeHierarchy.isSubtype(other.dartType, this.dartType)) {
+      if (typeHierarchy.isSubtype(other.classNode.rawType, this.dartType)) {
         return other;
       } else {
         return const EmptyType();
@@ -503,37 +576,138 @@
 /// or `null` object).
 class ConcreteType extends Type implements Comparable<ConcreteType> {
   final ClassId classId;
-  final DartType dartType;
+  final Class classNode;
+  int _hashCode;
 
-  ConcreteType(this.classId, this.dartType) {
-    // TODO(alexmarkov): support generics & closures
-    assertx(dartType is InterfaceType);
-    assertx(!(dartType as InterfaceType).classNode.isAbstract);
-    assertx((dartType as InterfaceType)
-        .typeArguments
-        .every((t) => t == const DynamicType()));
+  // May be null if there are no type arguments constraints. The type arguments
+  // should represent type sets, i.e. `AnyType` or `RuntimeType`. The type
+  // arguments vector is factored against the generic interfaces implemented by
+  // the class (see [TypeHierarchy.flattenedTypeArgumentsFor]).
+  //
+  // The 'typeArgs' vector is null for non-generic classes, even if they
+  // implement a generic interface.
+  //
+  // 'numImmediateTypeArgs' is the length of the prefix of 'typeArgs' which
+  // holds the type arguments to the class itself.
+  final int numImmediateTypeArgs;
+  final List<Type> typeArgs;
+
+  ConcreteType(this.classId, this.classNode, [List<Type> typeArgs_])
+      : typeArgs = typeArgs_,
+        numImmediateTypeArgs =
+            typeArgs_ != null ? classNode.typeParameters.length : 0 {
+    // TODO(alexmarkov): support closures
+    assertx(!classNode.isAbstract);
+    assertx(typeArgs == null || classNode.typeParameters.isNotEmpty);
+    assertx(typeArgs == null || typeArgs.any((t) => t is RuntimeType));
   }
 
+  ConcreteType get raw => new ConcreteType(classId, classNode, null);
+
   @override
-  Class getConcreteClass(TypeHierarchy typeHierarchy) =>
-      (dartType as InterfaceType).classNode;
+  Class getConcreteClass(TypeHierarchy typeHierarchy) => classNode;
 
   @override
   bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
-      typeHierarchy.isSubtype(this.dartType, dartType);
+      typeHierarchy.isSubtype(classNode.rawType, dartType);
+
+  bool isSubtypeOfRuntimeType(
+      TypeHierarchy typeHierarchy, RuntimeType runtimeType) {
+    if (!typeHierarchy.isSubtype(this.classNode.rawType, runtimeType._type)) {
+      return false;
+    }
+
+    InterfaceType runtimeDartType;
+    if (runtimeType._type is InterfaceType) {
+      runtimeDartType = runtimeType._type;
+      if (runtimeDartType.typeArguments.isEmpty) return true;
+      if (runtimeDartType.classNode == typeHierarchy.futureOrClass) {
+        if (typeHierarchy.isSubtype(
+                classNode.rawType, typeHierarchy.futureClass.rawType) ||
+            classNode == typeHierarchy.futureOrClass) {
+          final RuntimeType lhs =
+              typeArgs == null ? RuntimeType(DynamicType(), null) : typeArgs[0];
+          return lhs.isSubtypeOfRuntimeType(
+              typeHierarchy, runtimeType.typeArgs[0]);
+        } else {
+          return isSubtypeOfRuntimeType(typeHierarchy, runtimeType.typeArgs[0]);
+        }
+      }
+    } else {
+      // The TypeHierarchy result may be inaccurate only if there are type
+      // arguments which it doesn't examine.
+      return true;
+    }
+
+    List<Type> usableTypeArgs = typeArgs;
+    if (usableTypeArgs == null) {
+      if (classNode.typeParameters.isEmpty) {
+        usableTypeArgs =
+            typeHierarchy.flattenedTypeArgumentsForNonGeneric(classNode);
+      } else {
+        return false;
+      }
+    }
+
+    final interfaceOffset = typeHierarchy.genericInterfaceOffsetFor(
+        classNode, runtimeDartType.classNode);
+
+    assertx(usableTypeArgs.length - interfaceOffset >=
+        runtimeType.numImmediateTypeArgs);
+
+    for (int i = 0; i < runtimeType.numImmediateTypeArgs; ++i) {
+      if (usableTypeArgs[i + interfaceOffset] == const AnyType()) return false;
+      assertx(usableTypeArgs[i + interfaceOffset] is RuntimeType);
+      if (!usableTypeArgs[i + interfaceOffset]
+          .isSubtypeOfRuntimeType(typeHierarchy, runtimeType.typeArgs[i])) {
+        return false;
+      }
+    }
+    return true;
+  }
 
   @override
-  int get hashCode => (classId.hashCode ^ 0x1234) & kHashMask;
+  int get hashCode => _hashCode ??= _computeHashCode();
+
+  int _computeHashCode() {
+    int hash = classId.hashCode ^ 0x1234 & kHashMask;
+    // We only need to hash the first type arguments vector, since the type
+    // arguments of the implemented interfaces are implied by it.
+    for (int i = 0; i < numImmediateTypeArgs; ++i) {
+      hash = (((hash * 31) & kHashMask) + typeArgs[i].hashCode) & kHashMask;
+    }
+    return hash;
+  }
 
   @override
-  bool operator ==(other) =>
-      (other is ConcreteType) && (this.classId == other.classId);
+  bool operator ==(other) {
+    if (other is ConcreteType) {
+      if (this.classId != other.classId ||
+          this.numImmediateTypeArgs != other.numImmediateTypeArgs) {
+        return false;
+      }
+      if (this.typeArgs != null) {
+        for (int i = 0; i < numImmediateTypeArgs; ++i) {
+          if (this.typeArgs[i] != other.typeArgs[i]) {
+            return false;
+          }
+        }
+      }
+      return true;
+    } else {
+      return false;
+    }
+  }
 
+  // Note that this may return 0 for concrete types which are not equal if the
+  // difference is only in type arguments.
   @override
   int compareTo(ConcreteType other) => classId.compareTo(other.classId);
 
   @override
-  String toString() => "_T (${dartType})";
+  String toString() => typeArgs == null
+      ? "_T (${classNode})"
+      : "_T (${classNode}<${typeArgs.take(numImmediateTypeArgs).join(', ')}>)";
 
   @override
   int get order => TypeOrder.Concrete.index;
@@ -546,13 +720,14 @@
     if (other is ConcreteType) {
       if (this == other) {
         return this;
-      } else {
-        assertx(this.classId != other.classId);
-        final List<ConcreteType> types =
-            (this.classId.compareTo(other.classId) < 0)
-                ? <ConcreteType>[this, other]
-                : <ConcreteType>[other, this];
+      } else if (this.classId != other.classId) {
+        final types = (this.classId.compareTo(other.classId) < 0)
+            ? <ConcreteType>[this, other]
+            : <ConcreteType>[other, this];
         return new SetType(types);
+      } else {
+        assertx(typeArgs != null || other.typeArgs != null);
+        return raw;
       }
     } else {
       throw 'Unexpected type $other';
@@ -567,11 +742,201 @@
     if (other is ConcreteType) {
       if (this == other) {
         return this;
-      } else {
-        return const EmptyType();
       }
+      if (this.classId != other.classId) {
+        return EmptyType();
+      }
+      assertx(typeArgs != null || other.typeArgs != null);
+      if (typeArgs == null) {
+        return other;
+      } else if (other.typeArgs == null) {
+        return this;
+      }
+
+      final mergedTypeArgs = new List<Type>(typeArgs.length);
+      bool hasRuntimeType = false;
+      for (int i = 0; i < typeArgs.length; ++i) {
+        final merged =
+            typeArgs[i].intersection(other.typeArgs[i], typeHierarchy);
+        if (merged is EmptyType) {
+          return EmptyType();
+        } else if (merged is RuntimeType) {
+          hasRuntimeType = true;
+        }
+        mergedTypeArgs[i] = merged;
+      }
+      if (!hasRuntimeType) return raw;
+      return new ConcreteType(classId, classNode, mergedTypeArgs);
     } else {
       throw 'Unexpected type $other';
     }
   }
 }
+
+// Unlike the other 'Type's, this represents a single type, not a set of
+// values. It is used as the right-hand-side of type-tests.
+//
+// The type arguments are represented in a form that is factored against the
+// generic interfaces implemented by the type to enable efficient type-test
+// against its interfaces. See 'TypeHierarchy.flattenedTypeArgumentsFor' for
+// more details.
+//
+// This factored representation can have cycles for some types:
+//
+//   class num implements Comparable<num> {}
+//   class A<T> extends Comparable<A<T>> {}
+//
+// To avoid these cycles, we approximate generic super-bounded types (the second
+// case), so the representation for 'A<String>' would be simply 'AnyType'.
+// However, approximating non-generic types like 'int' and 'num' (the first
+// case) would be too coarse, so we leave an null 'typeArgs' field for these
+// types. As a result, when doing an 'isSubtypeOfRuntimeType' against
+// their interfaces (e.g. 'int' vs 'Comparable<int>') we approximate the result
+// as 'false'.
+//
+// So, the invariant about 'typeArgs' is that they will be 'null' iff the class
+// is non-generic, and non-null (with at least one vector) otherwise.
+class RuntimeType extends Type {
+  final DartType _type; // Doesn't contain type args.
+
+  final int numImmediateTypeArgs;
+  final List<RuntimeType> typeArgs;
+
+  RuntimeType(DartType type, this.typeArgs)
+      : _type = type,
+        numImmediateTypeArgs =
+            type is InterfaceType ? type.classNode.typeParameters.length : 0 {
+    if (_type is InterfaceType && numImmediateTypeArgs > 0) {
+      assertx(typeArgs != null);
+      assertx(typeArgs.length >= numImmediateTypeArgs);
+      assertx((_type as InterfaceType)
+          .typeArguments
+          .every((t) => t == const DynamicType()));
+    } else {
+      assertx(typeArgs == null);
+    }
+  }
+
+  int get order => TypeOrder.RuntimeType.index;
+
+  DartType get representedTypeRaw => _type;
+
+  DartType get representedType {
+    if (_type is InterfaceType && typeArgs != null) {
+      final klass = (_type as InterfaceType).classNode;
+      final typeArguments = typeArgs
+          .take(klass.typeParameters.length)
+          .map((pt) => pt.representedType)
+          .toList();
+      return new InterfaceType(klass, typeArguments);
+    } else {
+      return _type;
+    }
+  }
+
+  @override
+  int get hashCode {
+    int hash = _type.hashCode ^ 0x1234 & kHashMask;
+    // Only hash by the type arguments of the class. The type arguments of
+    // supertypes are are implied by them.
+    for (int i = 0; i < numImmediateTypeArgs; ++i) {
+      hash = (((hash * 31) & kHashMask) + typeArgs[i].hashCode) & kHashMask;
+    }
+    return hash;
+  }
+
+  @override
+  operator ==(other) {
+    if (other is RuntimeType) {
+      if (other._type != _type) return false;
+      assertx(numImmediateTypeArgs == other.numImmediateTypeArgs);
+      return typeArgs == null || listEquals(typeArgs, other.typeArgs);
+    }
+    return false;
+  }
+
+  @override
+  String toString() {
+    final head = _type is InterfaceType
+        ? "${(_type as InterfaceType).classNode}"
+        : "$_type";
+    if (numImmediateTypeArgs == 0) return head;
+    final typeArgsStrs =
+        typeArgs.take(numImmediateTypeArgs).map((t) => "$t").join(", ");
+    return "_TS {$head<$typeArgsStrs>}";
+  }
+
+  @override
+  bool get isSpecialized =>
+      throw "ERROR: RuntimeType does not support isSpecialized.";
+
+  @override
+  bool isSubtypeOf(TypeHierarchy typeHierarchy, DartType dartType) =>
+      throw "ERROR: RuntimeType does not support isSubtypeOf.";
+
+  @override
+  Type union(Type other, TypeHierarchy typeHierarchy) =>
+      throw "ERROR: RuntimeType does not support union.";
+
+  // This only works between "type-set" representations ('AnyType' and
+  // 'RuntimeType') and is used when merging type arguments.
+  @override
+  Type intersection(Type other, TypeHierarchy typeHierarchy) {
+    if (other is AnyType) {
+      return this;
+    } else if (other is RuntimeType) {
+      return this == other ? this : const EmptyType();
+    }
+    throw "ERROR: RuntimeType cannot intersect with ${other.runtimeType}";
+  }
+
+  @override
+  Type specialize(TypeHierarchy typeHierarchy) =>
+      throw "ERROR: RuntimeType does not support specialize.";
+
+  @override
+  Class getConcreteClass(TypeHierarchy typeHierarchy) =>
+      throw "ERROR: ConcreteClass does not support getConcreteClass.";
+
+  bool isSubtypeOfRuntimeType(
+      TypeHierarchy typeHierarchy, RuntimeType runtimeType) {
+    if (!typeHierarchy.isSubtype(this._type, runtimeType._type)) return false;
+
+    // The typeHierarchy result maybe be inaccurate only if there are type
+    // arguments which need to be examined.
+    if (_type is! InterfaceType || runtimeType.numImmediateTypeArgs == 0) {
+      return true;
+    }
+
+    final thisClass = (_type as InterfaceType).classNode;
+    final otherClass = (runtimeType._type as InterfaceType).classNode;
+
+    if (otherClass == typeHierarchy.futureOrClass) {
+      if (thisClass == typeHierarchy.futureClass ||
+          thisClass == typeHierarchy.futureOrClass) {
+        return typeArgs[0]
+            .isSubtypeOfRuntimeType(typeHierarchy, runtimeType.typeArgs[0]);
+      } else {
+        return isSubtypeOfRuntimeType(typeHierarchy, runtimeType.typeArgs[0]);
+      }
+    }
+
+    List<Type> usableTypeArgs = typeArgs;
+    if (usableTypeArgs == null) {
+      assertx(thisClass.typeParameters.isEmpty);
+      usableTypeArgs =
+          typeHierarchy.flattenedTypeArgumentsForNonGeneric(thisClass);
+    }
+    final interfaceOffset =
+        typeHierarchy.genericInterfaceOffsetFor(thisClass, otherClass);
+    assertx(usableTypeArgs.length - interfaceOffset >=
+        runtimeType.numImmediateTypeArgs);
+    for (int i = 0; i < runtimeType.numImmediateTypeArgs; ++i) {
+      if (!usableTypeArgs[interfaceOffset + i]
+          .isSubtypeOfRuntimeType(typeHierarchy, runtimeType.typeArgs[i])) {
+        return false;
+      }
+    }
+    return true;
+  }
+}
diff --git a/pkg/vm/lib/transformations/type_flow/utils.dart b/pkg/vm/lib/transformations/type_flow/utils.dart
index 3ce56e8..c3af59a 100644
--- a/pkg/vm/lib/transformations/type_flow/utils.dart
+++ b/pkg/vm/lib/transformations/type_flow/utils.dart
@@ -7,7 +7,14 @@
 library vm.transformations.type_flow.utils;
 
 import 'package:kernel/ast.dart'
-    show Constructor, FunctionNode, Member, VariableDeclaration;
+    show
+        Class,
+        Constructor,
+        DartType,
+        Procedure,
+        FunctionNode,
+        Member,
+        VariableDeclaration;
 
 const bool kPrintTrace =
     const bool.fromEnvironment('global.type.flow.print.trace');
@@ -51,6 +58,14 @@
 bool hasReceiverArg(Member member) =>
     member.isInstanceMember || (member is Constructor);
 
+// Type arguments to procedures is only supported for factory constructors of
+// generic classes at the moment.
+//
+// TODO(sjindel/tfa): Extend suport to normal generic functions.
+int numTypeParams(Member member) => member is Procedure && member.isFactory
+    ? member.function.typeParameters.length
+    : 0;
+
 /// Returns true if elements in [list] are in strictly increasing order.
 /// List with duplicates is considered not sorted.
 bool isSorted(List list) {
@@ -148,3 +163,43 @@
     """);
   }
 }
+
+int typeArgumentsHash(List<DartType> typeArgs) {
+  int hash = 1237;
+  for (var t in typeArgs) {
+    hash = (((hash * 31) & kHashMask) + t.hashCode) & kHashMask;
+  }
+  return hash;
+}
+
+class SubtypePair {
+  final Class subtype;
+  final Class supertype;
+
+  SubtypePair(this.subtype, this.supertype);
+
+  int get hashCode {
+    return subtype.hashCode ^ supertype.hashCode;
+  }
+
+  bool operator ==(Object other) {
+    if (other is SubtypePair) {
+      return subtype == other.subtype && supertype == other.supertype;
+    }
+    return false;
+  }
+}
+
+// Returns the smallest index 'i' such that 'list.skip(i)' is a prefix of
+// 'sublist'.
+int findOverlap(List list, List sublist) {
+  for (int i = 0; i < list.length; ++i)
+    outer:
+    {
+      for (int j = 0; j < sublist.length && i + j < list.length; ++j) {
+        if (list[i + j] != sublist[j]) continue outer;
+      }
+      return i;
+    }
+  return list.length;
+}
diff --git a/pkg/vm/pubspec.yaml b/pkg/vm/pubspec.yaml
index eec95ba..c1ba691 100644
--- a/pkg/vm/pubspec.yaml
+++ b/pkg/vm/pubspec.yaml
@@ -6,8 +6,8 @@
 dependencies:
   build_integration:
     path: ../build_integration
-  front_end: 0.1.0-alpha.6
-  kernel: 0.3.0-alpha.3
+  front_end: 0.1.6
+  kernel: 0.3.6
 
 dev_dependencies:
-  args: ^0.13.0
+  args: ^1.4.4
diff --git a/pkg/vm/test/bytecode/gen_bytecode_test.dart b/pkg/vm/test/bytecode/gen_bytecode_test.dart
index 87ff84c..758f47f 100644
--- a/pkg/vm/test/bytecode/gen_bytecode_test.dart
+++ b/pkg/vm/test/bytecode/gen_bytecode_test.dart
@@ -24,7 +24,6 @@
       enableSuperMixins: enableSuperMixins);
 
   final options = new CompilerOptions()
-    ..strongMode = true
     ..onDiagnostic = (DiagnosticMessage message) {
       fail("Compilation error: ${message.plainTextFormatted.join('\n')}");
     };
@@ -32,7 +31,7 @@
   await runWithFrontEndCompilerContext(source, options, component, () {
     // Need to omit source positions from bytecode as they are different on
     // Linux and Windows (due to differences in newline characters).
-    generateBytecode(component, strongMode: true, omitSourcePositions: true);
+    generateBytecode(component, omitSourcePositions: true);
   });
 
   final actual = kernelLibraryToString(component.mainMethod.enclosingLibrary);
diff --git a/pkg/vm/test/common_test_utils.dart b/pkg/vm/test/common_test_utils.dart
index 5ceddf7..2e5cbbd 100644
--- a/pkg/vm/test/common_test_utils.dart
+++ b/pkg/vm/test/common_test_utils.dart
@@ -32,10 +32,9 @@
     {Target target, bool enableSuperMixins: false}) async {
   final platformKernel =
       computePlatformBinariesLocation().resolve('vm_platform_strong.dill');
-  target ??= new TestingVmTarget(new TargetFlags(strongMode: true))
+  target ??= new TestingVmTarget(new TargetFlags())
     ..enableSuperMixins = enableSuperMixins;
   final options = new CompilerOptions()
-    ..strongMode = true
     ..target = target
     ..linkedDependencies = <Uri>[platformKernel]
     ..onDiagnostic = (DiagnosticMessage message) {
diff --git a/pkg/vm/test/frontend_server_test.dart b/pkg/vm/test/frontend_server_test.dart
index efef8e8..4a4a7d8 100644
--- a/pkg/vm/test/frontend_server_test.dart
+++ b/pkg/vm/test/frontend_server_test.dart
@@ -50,44 +50,6 @@
         generator: anyNamed('generator'),
       )).captured;
       expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
-      expect(capturedArgs.single['strong'], equals(false));
-    });
-
-    test('compile from command line (strong mode)', () async {
-      final List<String> args = <String>[
-        'server.dart',
-        '--sdk-root',
-        'sdkroot',
-        '--strong',
-      ];
-      await starter(args, compiler: compiler);
-      final List<dynamic> capturedArgs = verify(compiler.compile(
-        argThat(equals('server.dart')),
-        captureAny,
-        generator: anyNamed('generator'),
-      )).captured;
-      expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
-      expect(capturedArgs.single['strong'], equals(true));
-      expect(capturedArgs.single['sync-async'], equals(true));
-    });
-
-    test('compile from command line (no-sync-async)', () async {
-      final List<String> args = <String>[
-        'server.dart',
-        '--sdk-root',
-        'sdkroot',
-        '--strong',
-        '--no-sync-async',
-      ];
-      await starter(args, compiler: compiler);
-      final List<dynamic> capturedArgs = verify(compiler.compile(
-        argThat(equals('server.dart')),
-        captureAny,
-        generator: anyNamed('generator'),
-      )).captured;
-      expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
-      expect(capturedArgs.single['strong'], equals(true));
-      expect(capturedArgs.single['sync-async'], equals(false));
     });
 
     test('compile from command line with link platform', () async {
@@ -105,7 +67,6 @@
       )).captured;
       expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
       expect(capturedArgs.single['link-platform'], equals(true));
-      expect(capturedArgs.single['strong'], equals(false));
     });
   });
 
@@ -126,7 +87,6 @@
         expect(invocation.positionalArguments[0], equals('server.dart'));
         expect(
             invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
-        expect(invocation.positionalArguments[1]['strong'], equals(false));
         compileCalled.sendPort.send(true);
       });
 
@@ -150,11 +110,6 @@
       '--sdk-root',
       'sdkroot',
     ];
-    final List<String> strongArgs = <String>[
-      '--sdk-root',
-      'sdkroot',
-      '--strong',
-    ];
 
     test('compile one file', () async {
       final StreamController<List<int>> inputStreamController =
@@ -165,7 +120,6 @@
         expect(invocation.positionalArguments[0], equals('server.dart'));
         expect(
             invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
-        expect(invocation.positionalArguments[1]['strong'], equals(false));
         compileCalled.sendPort.send(true);
       });
 
@@ -181,31 +135,6 @@
       inputStreamController.close();
     });
 
-    test('compile one file (strong mode)', () async {
-      final StreamController<List<int>> inputStreamController =
-          new StreamController<List<int>>();
-      final ReceivePort compileCalled = new ReceivePort();
-      when(compiler.compile(any, any, generator: anyNamed('generator')))
-          .thenAnswer((Invocation invocation) {
-        expect(invocation.positionalArguments[0], equals('server.dart'));
-        expect(
-            invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
-        expect(invocation.positionalArguments[1]['strong'], equals(true));
-        compileCalled.sendPort.send(true);
-      });
-
-      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>> inputStreamController =
           new StreamController<List<int>>();
@@ -217,7 +146,6 @@
             equals('server${counter++}.dart'));
         expect(
             invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
-        expect(invocation.positionalArguments[1]['strong'], equals(false));
         compileCalled.sendPort.send(true);
       });
 
@@ -462,7 +390,6 @@
           generator: anyNamed('generator'),
         )).captured;
         expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
-        expect(capturedArgs.single['strong'], equals(false));
       });
     });
   });
@@ -489,7 +416,6 @@
       expect(dillFile.existsSync(), equals(false));
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
-        '--strong',
         '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}'
@@ -598,7 +524,6 @@
       expect(dillFile.existsSync(), equals(false));
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
-        '--strong',
         '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}'
@@ -727,7 +652,6 @@
       expect(dillFile.existsSync(), equals(false));
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
-        '--strong',
         '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}'
@@ -792,6 +716,127 @@
       inputStreamController.close();
     });
 
+    test('unsafe-package-serialization', () async {
+      // Package A.
+      var file = new File('${tempDir.path}/pkgA/a.dart')
+        ..createSync(recursive: true);
+      file.writeAsStringSync("pkgA() {}");
+
+      // Package B.
+      file = new File('${tempDir.path}/pkgB/.packages')
+        ..createSync(recursive: true);
+      file.writeAsStringSync("pkgA: ../pkgA");
+      file = new File('${tempDir.path}/pkgB/a.dart')
+        ..createSync(recursive: true);
+      file.writeAsStringSync("pkgB_a() {}");
+      file = new File('${tempDir.path}/pkgB/b.dart')
+        ..createSync(recursive: true);
+      file.writeAsStringSync("import 'package:pkgA/a.dart';"
+          "pkgB_b() { pkgA(); }");
+
+      // Application.
+      file = new File('${tempDir.path}/app/.packages')
+        ..createSync(recursive: true);
+      file.writeAsStringSync("pkgA:../pkgA\n"
+          "pkgB:../pkgB");
+
+      // Entry point A uses both package A and B.
+      file = new File('${tempDir.path}/app/a.dart')
+        ..createSync(recursive: true);
+      file.writeAsStringSync("import 'package:pkgB/b.dart';"
+          "import 'package:pkgB/a.dart';"
+          "appA() { pkgB_a(); pkgB_b(); }");
+
+      // Entry point B uses only package B.
+      var fileB = new File('${tempDir.path}/app/B.dart')
+        ..createSync(recursive: true);
+      fileB.writeAsStringSync("import 'package:pkgB/a.dart';"
+          "appB() { pkgB_a(); }");
+
+      // Other setup.
+      var dillFile = new File('${tempDir.path}/app.dill');
+      expect(dillFile.existsSync(), equals(false));
+
+      // First compile app entry point A.
+      final List<String> args = <String>[
+        '--sdk-root=${sdkRoot.toFilePath()}',
+        '--incremental',
+        '--platform=${platformKernel.path}',
+        '--output-dill=${dillFile.path}',
+        '--unsafe-package-serialization',
+      ];
+
+      final StreamController<List<int>> inputStreamController =
+          new StreamController<List<int>>();
+      final StreamController<List<int>> stdoutStreamController =
+          new StreamController<List<int>>();
+      final IOSink ioSink = new IOSink(stdoutStreamController.sink);
+      StreamController<String> receivedResults = new StreamController<String>();
+
+      String boundaryKey;
+      stdoutStreamController.stream
+          .transform(utf8.decoder)
+          .transform(const LineSplitter())
+          .listen((String s) {
+        const String RESULT_OUTPUT_SPACE = 'result ';
+        if (boundaryKey == null) {
+          if (s.startsWith(RESULT_OUTPUT_SPACE)) {
+            boundaryKey = s.substring(RESULT_OUTPUT_SPACE.length);
+          }
+        } else {
+          if (s.startsWith(boundaryKey)) {
+            receivedResults.add(s.substring(boundaryKey.length + 1));
+            boundaryKey = null;
+          }
+        }
+      });
+      Future<int> result =
+          starter(args, input: inputStreamController.stream, output: ioSink);
+      inputStreamController.add('compile ${file.path}\n'.codeUnits);
+      int count = 0;
+      receivedResults.stream.listen((String outputFilenameAndErrorCount) {
+        CompilationResult result =
+            new CompilationResult.parse(outputFilenameAndErrorCount);
+        switch (count) {
+          case 0:
+            expect(dillFile.existsSync(), equals(true));
+            expect(result.filename, dillFile.path);
+            expect(result.errorsCount, 0);
+            count += 1;
+            inputStreamController.add('accept\n'.codeUnits);
+            inputStreamController.add('reset\n'.codeUnits);
+
+            inputStreamController.add('recompile ${fileB.path} abc\n'
+                '${fileB.path}\n'
+                'abc\n'
+                .codeUnits);
+            break;
+          case 1:
+            expect(result.filename, dillFile.path);
+            expect(result.errorsCount, 0);
+            inputStreamController.add('quit\n'.codeUnits);
+
+            // Loadable.
+            Component component = loadComponentFromBinary(dillFile.path);
+
+            // Contains (at least) the 2 files we want.
+            component.libraries
+                    .where((l) =>
+                        l.importUri.toString() == "package:pkgB/a.dart" ||
+                        l.fileUri.toString().contains(fileB.path))
+                    .length ==
+                2;
+
+            // Verifiable (together with the platform file).
+            component =
+                loadComponentFromBinary(platformKernel.toFilePath(), component);
+            verifyComponent(component);
+        }
+      });
+      expect(await result, 0);
+      inputStreamController.close();
+    });
+
     test('compile and recompile report non-zero error count', () async {
       var file = new File('${tempDir.path}/foo.dart')..createSync();
       file.writeAsStringSync("main() { foo(); bar(); }\n");
@@ -799,7 +844,6 @@
       expect(dillFile.existsSync(), equals(false));
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
-        '--strong',
         '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}'
@@ -885,7 +929,6 @@
       expect(dillFile.existsSync(), equals(false));
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
-        '--strong',
         '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}',
@@ -897,6 +940,35 @@
       expect(await starter(args), 0);
     });
 
+    test('compile "package:"-file', () async {
+      Directory lib = new Directory('${tempDir.path}/lib')..createSync();
+      new File('${lib.path}/foo.dart')
+        ..createSync()
+        ..writeAsStringSync("main() {}\n");
+      File packages = new File('${tempDir.path}/.packages')
+        ..createSync()
+        ..writeAsStringSync('test:lib/\n');
+      var dillFile = new File('${tempDir.path}/app.dill');
+      expect(dillFile.existsSync(), equals(false));
+      var depFile = new File('${tempDir.path}/the depfile');
+      expect(depFile.existsSync(), equals(false));
+      final List<String> args = <String>[
+        '--sdk-root=${sdkRoot.toFilePath()}',
+        '--incremental',
+        '--platform=${platformKernel.path}',
+        '--output-dill=${dillFile.path}',
+        '--depfile=${depFile.path}',
+        '--packages=${packages.path}',
+        'package:test/foo.dart'
+      ];
+      expect(await starter(args), 0);
+      expect(depFile.existsSync(), true);
+      var depContents = depFile.readAsStringSync();
+      var depContentsParsed = depContents.split(': ');
+      expect(path.basename(depContentsParsed[0]), path.basename(dillFile.path));
+      expect(depContentsParsed[1], isNotEmpty);
+    });
+
     test('compile and produce deps file', () async {
       var file = new File('${tempDir.path}/foo.dart')..createSync();
       file.writeAsStringSync("main() {}\n");
@@ -906,7 +978,6 @@
       expect(depFile.existsSync(), equals(false));
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
-        '--strong',
         '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}',
@@ -941,7 +1012,6 @@
       expect(dillFile.existsSync(), equals(false));
       final List<String> args = <String>[
         '--sdk-root=${sdkRoot.toFilePath()}',
-        '--strong',
         '--incremental',
         '--platform=${platformKernel.path}',
         '--output-dill=${dillFile.path}',
diff --git a/pkg/vm/test/incremental_compiler_test.dart b/pkg/vm/test/incremental_compiler_test.dart
index 5f9c1e0..4050a60 100644
--- a/pkg/vm/test/incremental_compiler_test.dart
+++ b/pkg/vm/test/incremental_compiler_test.dart
@@ -29,8 +29,7 @@
   final sdkRoot = computePlatformBinariesLocation();
   final options = new CompilerOptions()
     ..sdkRoot = sdkRoot
-    ..strongMode = true
-    ..target = new VmTarget(new TargetFlags(strongMode: true))
+    ..target = new VmTarget(new TargetFlags())
     ..linkedDependencies = <Uri>[platformKernel]
     ..onDiagnostic = (DiagnosticMessage message) {
       fail("Compilation error: ${message.plainTextFormatted.join('\n')}");
diff --git a/pkg/vm/test/transformations/type_flow/summary_collector_test.dart b/pkg/vm/test/transformations/type_flow/summary_collector_test.dart
index 34c54015..1ec8d87 100644
--- a/pkg/vm/test/transformations/type_flow/summary_collector_test.dart
+++ b/pkg/vm/test/transformations/type_flow/summary_collector_test.dart
@@ -11,6 +11,7 @@
 import 'package:test/test.dart';
 import 'package:vm/transformations/type_flow/native_code.dart';
 import 'package:vm/transformations/type_flow/summary_collector.dart';
+import 'package:vm/transformations/type_flow/analysis.dart';
 import 'annotation_matcher.dart';
 import 'package:kernel/target/targets.dart';
 
@@ -29,7 +30,8 @@
             environment,
             new EmptyEntryPointsListener(),
             new NativeCodeOracle(
-                null, new ExpressionPragmaAnnotationParser(coreTypes)));
+                null, new ExpressionPragmaAnnotationParser(coreTypes)),
+            new GenericInterfacesInfoImpl(environment.hierarchy));
 
   String print(TreeNode node) {
     visitLibrary(node);
@@ -47,7 +49,7 @@
 }
 
 runTestCase(Uri source) async {
-  final Target target = new TestingVmTarget(new TargetFlags(strongMode: true));
+  final Target target = new TestingVmTarget(new TargetFlags());
   final Component component = await compileTestCaseToKernelProgram(source);
   final Library library = component.mainMethod.enclosingLibrary;
   final CoreTypes coreTypes = new CoreTypes(component);
diff --git a/pkg/vm/test/transformations/type_flow/transformer_test.dart b/pkg/vm/test/transformations/type_flow/transformer_test.dart
index ccd5956..d031f10 100644
--- a/pkg/vm/test/transformations/type_flow/transformer_test.dart
+++ b/pkg/vm/test/transformations/type_flow/transformer_test.dart
@@ -18,7 +18,7 @@
 final String pkgVmDir = Platform.script.resolve('../../..').toFilePath();
 
 runTestCase(Uri source) async {
-  final target = new TestingVmTarget(new TargetFlags(strongMode: true));
+  final target = new TestingVmTarget(new TargetFlags());
   Component component =
       await compileTestCaseToKernelProgram(source, target: target);
 
@@ -39,8 +39,9 @@
     final testCasesDir = new Directory(
         pkgVmDir + '/testcases/transformations/type_flow/transformer');
 
-    for (var entry
-        in testCasesDir.listSync(recursive: true, followLinks: false)) {
+    for (var entry in testCasesDir
+        .listSync(recursive: true, followLinks: false)
+        .reversed) {
       if (entry.path.endsWith(".dart")) {
         test(entry.path, () => runTestCase(entry.uri));
       }
diff --git a/pkg/vm/test/transformations/type_flow/types_test.dart b/pkg/vm/test/transformations/type_flow/types_test.dart
index f00f935..213b6d9 100644
--- a/pkg/vm/test/transformations/type_flow/types_test.dart
+++ b/pkg/vm/test/transformations/type_flow/types_test.dart
@@ -26,6 +26,19 @@
         reason: "specializeTypeCone($base) is not defined");
     return result;
   }
+
+  List<DartType> flattenedTypeArgumentsFor(Class klass) =>
+      throw "flattenedTypeArgumentsFor is not supported in the types test.";
+
+  int genericInterfaceOffsetFor(Class klass, Class iface) =>
+      throw "genericInterfaceOffsetFor is not supported in the types test.";
+
+  List<Type> flattenedTypeArgumentsForNonGeneric(Class klass) =>
+      throw "flattenedTypeArgumentsFor is not supported in the types test.";
+
+  Class get futureOrClass =>
+      throw "futureOrClass not supported in the types test.";
+  Class get futureClass => throw "futureClass not supported in the types test.";
 }
 
 main() {
@@ -75,10 +88,10 @@
 
     final empty = new EmptyType();
     final any = new AnyType();
-    final concreteT1 = new ConcreteType(const IntClassId(1), t1);
-    final concreteT2 = new ConcreteType(const IntClassId(2), t2);
-    final concreteT3 = new ConcreteType(const IntClassId(3), t3);
-    final concreteT4 = new ConcreteType(const IntClassId(4), t4);
+    final concreteT1 = new ConcreteType(const IntClassId(1), t1.classNode);
+    final concreteT2 = new ConcreteType(const IntClassId(2), t2.classNode);
+    final concreteT3 = new ConcreteType(const IntClassId(3), t3.classNode);
+    final concreteT4 = new ConcreteType(const IntClassId(4), t4.classNode);
     final coneT1 = new ConeType(t1);
     final coneT2 = new ConeType(t2);
     final coneT3 = new ConeType(t3);
@@ -261,7 +274,6 @@
     final t1a = new InterfaceType(c1);
     final t1b = new InterfaceType(c1);
     final t2 = new InterfaceType(c2);
-    final t3 = new InterfaceType(c3);
     final f1a = new FunctionType([t1a], const VoidType());
     final f1b = new FunctionType([t1b], const VoidType());
     final f2 = new FunctionType([t1a, t1a], const VoidType());
@@ -292,27 +304,27 @@
 
     eq(new EmptyType(), new EmptyType());
     ne(new EmptyType(), new AnyType());
-    ne(new EmptyType(), new ConcreteType(cid1, t1a));
+    ne(new EmptyType(), new ConcreteType(cid1, c1));
     ne(new EmptyType(), new ConeType(t1a));
     ne(new EmptyType(),
-        new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]));
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]));
     ne(new EmptyType(), new NullableType(new EmptyType()));
 
     eq(new AnyType(), new AnyType());
-    ne(new AnyType(), new ConcreteType(cid1, t1a));
+    ne(new AnyType(), new ConcreteType(cid1, c1));
     ne(new AnyType(), new ConeType(t1a));
     ne(new AnyType(),
-        new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]));
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]));
     ne(new AnyType(), new NullableType(new EmptyType()));
 
-    eq(new ConcreteType(cid1, t1a), new ConcreteType(cid1, t1b));
-    ne(new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2));
-    ne(new ConcreteType(cid1, t1a), new ConeType(t1a));
-    ne(new ConcreteType(cid1, t1a), new ConeType(t2));
-    ne(new ConcreteType(cid1, t1a),
-        new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]));
-    ne(new ConcreteType(cid1, t1a),
-        new NullableType(new ConcreteType(cid1, t1a)));
+    eq(new ConcreteType(cid1, c1), new ConcreteType(cid1, c1));
+    ne(new ConcreteType(cid1, c1), new ConcreteType(cid2, c2));
+    ne(new ConcreteType(cid1, c1), new ConeType(t1a));
+    ne(new ConcreteType(cid1, c1), new ConeType(t2));
+    ne(new ConcreteType(cid1, c1),
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]));
+    ne(new ConcreteType(cid1, c1),
+        new NullableType(new ConcreteType(cid1, c1)));
 
     eq(new ConeType(t1a), new ConeType(t1b));
     eq(new ConeType(f1a), new ConeType(f1b));
@@ -320,34 +332,34 @@
     ne(new ConeType(f1a), new ConeType(f2));
     ne(new ConeType(t1a), new ConeType(f1a));
     ne(new ConeType(t1a),
-        new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]));
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]));
     ne(new ConeType(t1a), new NullableType(new ConeType(t1a)));
 
-    eq(new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]),
-        new SetType([new ConcreteType(cid1, t1b), new ConcreteType(cid2, t2)]));
+    eq(new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]),
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]));
     eq(
         new SetType([
-          new ConcreteType(cid1, t1a),
-          new ConcreteType(cid2, t2),
-          new ConcreteType(cid3, t3)
+          new ConcreteType(cid1, c1),
+          new ConcreteType(cid2, c2),
+          new ConcreteType(cid3, c3)
         ]),
         new SetType([
-          new ConcreteType(cid1, t1b),
-          new ConcreteType(cid2, t2),
-          new ConcreteType(cid3, t3)
+          new ConcreteType(cid1, c1),
+          new ConcreteType(cid2, c2),
+          new ConcreteType(cid3, c3)
         ]));
     ne(
-        new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]),
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]),
         new SetType([
-          new ConcreteType(cid1, t1a),
-          new ConcreteType(cid2, t2),
-          new ConcreteType(cid3, t3)
+          new ConcreteType(cid1, c1),
+          new ConcreteType(cid2, c2),
+          new ConcreteType(cid3, c3)
         ]));
-    ne(new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]),
-        new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid3, t3)]));
+    ne(new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]),
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid3, c3)]));
     ne(
-        new SetType([new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)]),
+        new SetType([new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)]),
         new NullableType(new SetType(
-            [new ConcreteType(cid1, t1a), new ConcreteType(cid2, t2)])));
+            [new ConcreteType(cid1, c1), new ConcreteType(cid2, c2)])));
   });
 }
diff --git a/pkg/vm/testcases/bytecode/asserts.dart.expect b/pkg/vm/testcases/bytecode/asserts.dart.expect
index 2194f84..8c9b60b 100644
--- a/pkg/vm/testcases/bytecode/asserts.dart.expect
+++ b/pkg/vm/testcases/bytecode/asserts.dart.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   JumpIfNoAsserts      L1
@@ -28,7 +28,7 @@
   assert(condition);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   JumpIfNoAsserts      L1
@@ -58,7 +58,7 @@
   assert([@vm.call-site-attributes.metadata=receiverType:() → dart.core::bool] condition.call(), [@vm.call-site-attributes.metadata=receiverType:() → dart.core::String] message.call());
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/async.dart.expect b/pkg/vm/testcases/bytecode/async.dart.expect
index b5d1e82..7b37aaa 100644
--- a/pkg/vm/testcases/bytecode/async.dart.expect
+++ b/pkg/vm/testcases/bytecode/async.dart.expect
@@ -4,7 +4,7 @@
 import "dart:core" as core;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                3
   CheckStack
   Allocate             CP#19
@@ -120,7 +120,6 @@
   Drop1
   PushNull
   ReturnTOS
-  Jump                 L3
 Try #0 end:
 Try #0 handler:
   SetFrame             10
@@ -243,8 +242,6 @@
   LoadContextVar       1
   InstanceCall         1, CP#34
   ReturnTOS
-  PushNull
-  ReturnTOS
 
 }
 ]static field (asy::Future<core::int>) → asy::Future<core::Null> asyncInFieldInitializer = (asy::Future<core::int> x) → asy::Future<core::Null> /* originally async */ {
@@ -276,7 +273,7 @@
   return :async_completer.{asy::Completer::future};
 };
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                7
   CheckStack
   AllocateContext      4
@@ -340,11 +337,6 @@
   LoadContextVar       0
   InstanceCall         1, CP#28
   ReturnTOS
-  Push                 r0
-  LoadContextParent
-  PopLocal             r0
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
@@ -409,7 +401,6 @@
   Drop1
   PushNull
   ReturnTOS
-  Jump                 L3
 Try #0 end:
 Try #0 handler:
   SetFrame             10
@@ -463,7 +454,7 @@
   return :async_completer.{asy::Completer::future};
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   AllocateContext      11
@@ -548,8 +539,6 @@
   LoadContextVar       2
   InstanceCall         1, CP#32
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
@@ -677,7 +666,6 @@
   Drop1
   PushNull
   ReturnTOS
-  Jump                 L5
 Try #0 end:
 Try #0 handler:
   SetFrame             10
@@ -746,7 +734,7 @@
   return :async_completer.{asy::Completer::future};
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   AllocateContext      11
@@ -831,8 +819,6 @@
   LoadContextVar       1
   InstanceCall         1, CP#37
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
@@ -1076,9 +1062,6 @@
   LoadContextParent
   PopLocal             r4
   Jump                 L9
-  Push                 r4
-  LoadContextParent
-  PopLocal             r4
 L9:
   Push                 r4
   LoadContextVar       1
@@ -1089,7 +1072,6 @@
   Drop1
   PushNull
   ReturnTOS
-  Jump                 L10
 Try #0 end:
 Try #0 handler:
   SetFrame             11
@@ -1165,7 +1147,7 @@
   return :async_completer.{asy::Completer::future};
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   AllocateContext      16
@@ -1265,8 +1247,6 @@
   LoadContextVar       3
   InstanceCall         1, CP#45
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
@@ -1484,8 +1464,6 @@
   LoadContextParent
   LoadContextVar       13
   Throw                1
-  Drop1
-  Jump                 L3
 L3:
   Jump                 L7
 Try #1 end:
@@ -1564,13 +1542,6 @@
   LoadContextParent
   PopLocal             r4
   Jump                 L9
-  Push                 r4
-  LoadContextParent
-  LoadContextVar       12
-  Push                 r4
-  LoadContextParent
-  LoadContextVar       13
-  Throw                1
 L5:
   Push                 r0
   LoadFieldTOS         CP#5
@@ -1635,10 +1606,6 @@
   LoadContextParent
   PopLocal             r4
   Jump                 L9
-  Push                 r4
-  LoadContextParent
-  PopLocal             r4
-  Jump                 L9
 L7:
   Push                 r0
   LoadFieldTOS         CP#5
@@ -1703,9 +1670,6 @@
   LoadContextParent
   PopLocal             r4
   Jump                 L9
-  Push                 r4
-  LoadContextParent
-  PopLocal             r4
 L9:
   Push                 r4
   LoadContextVar       3
@@ -1716,7 +1680,6 @@
   Drop1
   PushNull
   ReturnTOS
-  Jump                 L12
 Try #0 end:
 Try #0 handler:
   SetFrame             14
@@ -1818,7 +1781,7 @@
   return :async_completer.{asy::Completer::future};
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   AllocateContext      2
@@ -1829,28 +1792,26 @@
   Push                 r0
   PushInt              3
   StoreContextVar      1
-  Allocate             CP#20
+  Allocate             CP#19
   StoreLocal           r3
   Push                 r3
   PushNull
-  StoreFieldTOS        CP#21
+  StoreFieldTOS        CP#20
   Push                 r3
   PushNull
-  StoreFieldTOS        CP#23
+  StoreFieldTOS        CP#22
   Push                 r3
-  PushConstant         CP#25
-  StoreFieldTOS        CP#26
+  PushConstant         CP#24
+  StoreFieldTOS        CP#25
   Push                 r3
   PushConstant         CP#0
-  StoreFieldTOS        CP#28
+  StoreFieldTOS        CP#27
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#1
   PopLocal             r2
   Push                 r2
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ClosureFunction nested () → dart.async::Future<dart.core::int> /* originally async */ ;
@@ -1867,29 +1828,28 @@
   [11] = String 'fin'
   [12] = StaticICData target 'dart.core::print', arg-desc CP#4
   [13] = StaticICData target 'dart.core::print', arg-desc CP#4
-  [14] = StaticICData target 'dart.core::print', arg-desc CP#4
-  [15] = ArgDesc num-args 2, num-type-args 0, names []
-  [16] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#15
-  [17] = ArgDesc num-args 3, num-type-args 0, names []
-  [18] = ICData target-name 'completeError', arg-desc CP#17
-  [19] = EndClosureFunctionScope
-  [20] = Class dart.core::_Closure
-  [21] = InstanceField dart.core::_Closure::_instantiator_type_arguments
-  [22] = Reserved
-  [23] = InstanceField dart.core::_Closure::_function_type_arguments
-  [24] = Reserved
-  [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#4
-  [31] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#4
-  [32] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#4
-  [33] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
-  [34] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#15
-  [35] = ICData get target-name 'future', arg-desc CP#4
-  [36] = EndClosureFunctionScope
+  [14] = ArgDesc num-args 2, num-type-args 0, names []
+  [15] = StaticICData target 'dart.async::_completeOnAsyncReturn', arg-desc CP#14
+  [16] = ArgDesc num-args 3, num-type-args 0, names []
+  [17] = ICData target-name 'completeError', arg-desc CP#16
+  [18] = EndClosureFunctionScope
+  [19] = Class dart.core::_Closure
+  [20] = InstanceField dart.core::_Closure::_instantiator_type_arguments
+  [21] = Reserved
+  [22] = InstanceField dart.core::_Closure::_function_type_arguments
+  [23] = Reserved
+  [24] = EmptyTypeArguments
+  [25] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [26] = Reserved
+  [27] = InstanceField dart.core::_Closure::_function
+  [28] = Reserved
+  [29] = StaticICData target 'dart.async::_asyncStackTraceHelper', arg-desc CP#4
+  [30] = StaticICData target 'dart.async::_asyncThenWrapperHelper', arg-desc CP#4
+  [31] = StaticICData target 'dart.async::_asyncErrorWrapperHelper', arg-desc CP#4
+  [32] = TypeArgumentsForInstanceAllocation dart.async::Future [dynamic]
+  [33] = StaticICData target 'dart.async::Future::microtask', arg-desc CP#14
+  [34] = ICData get target-name 'future', arg-desc CP#4
+  [35] = EndClosureFunctionScope
 }
 Closure CP#6 {
   EntryOptional        1, 3, 0
@@ -1955,7 +1915,7 @@
   PopLocal             r11
   PushNull
   ReturnTOS
-L7:
+L6:
   Push                 r2
   JumpIfNull           L2
   Push                 r2
@@ -1976,7 +1936,6 @@
   AddInt
   StoreContextVar      1
   Jump                 L3
-  Jump                 L4
 Try #1 end:
 Try #1 handler:
   SetFrame             12
@@ -2009,32 +1968,17 @@
   Push                 r4
   LoadContextParent
   PopLocal             r4
-  Jump                 L5
+  Jump                 L4
 L4:
-  Push                 r0
-  LoadFieldTOS         CP#1
-  PopLocal             r4
-  Push                 r4
-  LoadContextVar       7
-  PopLocal             r4
-  PushConstant         CP#11
-  PushConstant         CP#14
-  IndirectStaticCall   1, CP#4
-  Drop1
-  Push                 r4
-  LoadContextParent
-  PopLocal             r4
-L5:
   Push                 r4
   LoadContextVar       0
   Push                 r4
   LoadContextVar       1
-  PushConstant         CP#16
-  IndirectStaticCall   2, CP#15
+  PushConstant         CP#15
+  IndirectStaticCall   2, CP#14
   Drop1
   PushNull
   ReturnTOS
-  Jump                 L6
 Try #0 end:
 Try #0 handler:
   SetFrame             12
@@ -2054,17 +1998,17 @@
   LoadContextVar       0
   Push                 r8
   Push                 r9
-  InstanceCall         3, CP#18
+  InstanceCall         3, CP#17
   Drop1
-  Jump                 L6
-L6:
+  Jump                 L5
+L5:
   PushNull
   ReturnTOS
 L1:
   Push                 r4
   LoadContextVar       5
   PopLocal             r4
-  Jump                 L7
+  Jump                 L6
 
 }
 
@@ -2109,55 +2053,50 @@
   PushNull
   StoreContextVar      7
   Push                 r0
-  Allocate             CP#20
+  Allocate             CP#19
   StoreLocal           r3
   Push                 r3
   PushNull
-  StoreFieldTOS        CP#21
+  StoreFieldTOS        CP#20
   Push                 r3
   PushNull
-  StoreFieldTOS        CP#23
+  StoreFieldTOS        CP#22
   Push                 r3
-  PushConstant         CP#25
-  StoreFieldTOS        CP#26
+  PushConstant         CP#24
+  StoreFieldTOS        CP#25
   Push                 r3
   PushConstant         CP#6
-  StoreFieldTOS        CP#28
+  StoreFieldTOS        CP#27
   Push                 r3
   Push                 r0
   StoreFieldTOS        CP#1
   StoreContextVar      8
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#30
+  PushConstant         CP#29
   IndirectStaticCall   1, CP#4
   PopLocal             r2
   Push                 r0
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#31
+  PushConstant         CP#30
   IndirectStaticCall   1, CP#4
   StoreContextVar      2
   Push                 r0
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#32
+  PushConstant         CP#31
   IndirectStaticCall   1, CP#4
   StoreContextVar      3
-  PushConstant         CP#33
+  PushConstant         CP#32
   Push                 r0
   LoadContextVar       8
-  PushConstant         CP#34
-  IndirectStaticCall   2, CP#15
+  PushConstant         CP#33
+  IndirectStaticCall   2, CP#14
   Drop1
   Push                 r0
   LoadContextVar       0
-  InstanceCall         1, CP#35
-  ReturnTOS
-  Push                 r0
-  LoadContextParent
-  PopLocal             r0
-  PushNull
+  InstanceCall         1, CP#34
   ReturnTOS
 
 }
@@ -2204,7 +2143,7 @@
   return nested;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   AllocateContext      9
@@ -2283,8 +2222,6 @@
   LoadContextVar       1
   InstanceCall         1, CP#32
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation dart.async::Completer [dart.core::int]
@@ -2394,7 +2331,6 @@
   Drop1
   PushNull
   ReturnTOS
-  Jump                 L5
 Try #0 end:
 Try #0 handler:
   SetFrame             10
@@ -2460,7 +2396,7 @@
   return :async_completer.{asy::Completer::future};
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
index 1d4b344..c47aadf 100644
--- a/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
+++ b/pkg/vm/testcases/bytecode/bootstrapping.dart.expect
@@ -7,7 +7,7 @@
 class _ScheduleImmediate extends core::Object {
   static field (() → void) → void _closure = null;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -28,7 +28,7 @@
 class _NamespaceImpl extends core::Object implements self::_Namespace {
   static field self::_NamespaceImpl _cachedNamespace = null;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -46,7 +46,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-6]
@@ -60,7 +60,7 @@
 ]  @_in::ExternalName::•("Namespace_Create")
   external static method _create(self::_NamespaceImpl namespace, dynamic n) → self::_NamespaceImpl;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -73,7 +73,7 @@
 ]  @_in::ExternalName::•("Namespace_GetPointer")
   external static method _getPointer(self::_NamespaceImpl namespace) → core::int;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   NativeCall           CP#0
@@ -85,7 +85,7 @@
 ]  @_in::ExternalName::•("Namespace_GetDefault")
   external static method _getDefault() → core::int;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   Allocate             CP#0
@@ -113,7 +113,7 @@
     self::_NamespaceImpl::_cachedNamespace = self::_NamespaceImpl::_create(new self::_NamespaceImpl::_(), namespace);
   }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushConstant         CP#0
@@ -136,8 +136,6 @@
   PushConstant         CP#0
   PushStatic           CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = StaticField #lib::_NamespaceImpl::_cachedNamespace
@@ -156,7 +154,7 @@
     return self::_NamespaceImpl::_cachedNamespace;
   }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#1
@@ -164,8 +162,6 @@
   PushConstant         CP#3
   IndirectStaticCall   1, CP#2
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 0, num-type-args 0, names []
@@ -178,7 +174,7 @@
 }
 class _Namespace extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -196,7 +192,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -214,14 +210,12 @@
     self::_NamespaceImpl::_setupNamespace(namespace);
   }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#1
   IndirectStaticCall   0, CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 0, num-type-args 0, names []
@@ -230,14 +224,12 @@
 ]  static get _namespace() → self::_Namespace
     return self::_NamespaceImpl::_namespace;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#1
   IndirectStaticCall   0, CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 0, num-type-args 0, names []
@@ -259,7 +251,7 @@
   static field dynamic _computeScriptUri = null;
   static field dynamic _cachedScript = null;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -277,7 +269,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   Push                 FP[-5]
@@ -296,7 +288,7 @@
     self::VMLibraryHooks::_cachedScript = null;
   }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#0
@@ -326,8 +318,6 @@
   PushConstant         CP#0
   PushStatic           CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = StaticField #lib::VMLibraryHooks::_cachedScript
@@ -347,7 +337,7 @@
 static field core::int _stderrFD = 2;
 static field core::String _rawScript;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -360,7 +350,7 @@
 ]@_in::ExternalName::•("Builtin_PrintString")
 external static method _printString(core::String s) → void;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -380,13 +370,11 @@
   self::_printString(arg.{core::Object::toString}());
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TearOff #lib::_print
@@ -394,7 +382,7 @@
 ]static method _getPrintClosure() → dynamic
   return self::_print;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -409,7 +397,7 @@
   self::_ScheduleImmediate::_closure = closure;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                3
   CheckStack
   Push                 FP[-7]
@@ -432,7 +420,7 @@
   self::_stderrFD = stderr;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushConstant         CP#0
@@ -474,7 +462,6 @@
   PushConstant         CP#9
   IndirectStaticCall   1, CP#8
   ReturnTOS
-  Jump                 L6
 L5:
   PushConstant         CP#11
   IndirectStaticCall   0, CP#10
@@ -485,9 +472,6 @@
   IndirectStaticCall   2, CP#2
   InstanceCall         2, CP#13
   ReturnTOS
-L6:
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = StaticField #lib::_rawScript
@@ -514,7 +498,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#0
@@ -533,7 +517,7 @@
   self::VMLibraryHooks::platformScript = self::_scriptUri;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/closures.dart.expect b/pkg/vm/testcases/bytecode/closures.dart.expect
index 247038a..d73647e 100644
--- a/pkg/vm/testcases/bytecode/closures.dart.expect
+++ b/pkg/vm/testcases/bytecode/closures.dart.expect
@@ -5,7 +5,7 @@
 typedef IntFunc = (core::int) → dynamic;
 class C1 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -25,7 +25,7 @@
 }
 class C2 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -45,7 +45,7 @@
 }
 class C3 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -65,7 +65,7 @@
 }
 class C4 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -85,7 +85,7 @@
 }
 class C5 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -105,7 +105,7 @@
 }
 class C6 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -125,7 +125,7 @@
 }
 class C7 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -145,7 +145,7 @@
 }
 class C8 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -165,7 +165,7 @@
 }
 class A<T1 extends core::Object = dynamic, T2 extends core::Object = dynamic> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -183,7 +183,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                5
   CheckStack
   CheckFunctionTypeArgs 2, 0
@@ -484,7 +484,7 @@
 class B extends core::Object {
   field core::int foo = null;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -503,7 +503,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                5
   CheckStack
   AllocateContext      4
@@ -772,7 +772,7 @@
 }
 class C extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -790,7 +790,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                5
   CheckStack
   AllocateContext      1
@@ -936,8 +936,6 @@
   LoadContextVar       0
   AddInt
   ReturnTOS
-  PushNull
-  ReturnTOS
 
 }
 
@@ -977,7 +975,7 @@
     }
   }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                5
   CheckStack
   Push                 FP[-5]
@@ -1078,7 +1076,7 @@
 }
 class D<T extends core::Object = dynamic> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -1096,7 +1094,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                3
   CheckStack
   AllocateContext      1
@@ -1131,8 +1129,6 @@
   Push                 r0
   StoreFieldTOS        CP#5
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = Type #lib::D::T
@@ -1163,8 +1159,6 @@
   Push                 r0
   LoadContextVar       0
   ReturnTOS
-  PushNull
-  ReturnTOS
 
 }
 ]  method foo(generic-covariant-impl self::D::T t) → dynamic {
@@ -1172,7 +1166,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   AllocateContext      1
@@ -1205,11 +1199,6 @@
   Push                 r0
   LoadContextVar       0
   ReturnTOS
-  Push                 r0
-  LoadContextParent
-  PopLocal             r0
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ClosureFunction <anonymous closure> (dart.core::int y) → dart.core::Null;
@@ -1264,7 +1253,7 @@
   return x;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   CheckFunctionTypeArgs 8, 0
@@ -1349,7 +1338,7 @@
   core::print(<core::Type>[self::callWithArgs::T1, self::callWithArgs::T2, self::callWithArgs::T3, self::callWithArgs::T4, self::callWithArgs::T5, self::callWithArgs::T6, self::callWithArgs::T7, self::callWithArgs::T8]);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#0
@@ -1409,7 +1398,7 @@
   new self::A::•<core::List<self::C1>, core::List<self::C2>>().{self::A::foo}<core::List<self::C3>, core::List<self::C4>>();
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                7
   CheckStack
   Allocate             CP#14
@@ -1461,8 +1450,6 @@
   PopLocal             r4
   Push                 r4
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ClosureFunction foo <T extends dart.core::Object = dynamic>(T t) → void;
@@ -1529,7 +1516,7 @@
   return intFunc;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/deferred_lib.dart.expect b/pkg/vm/testcases/bytecode/deferred_lib.dart.expect
index cf966e1..67139cb 100644
--- a/pkg/vm/testcases/bytecode/deferred_lib.dart.expect
+++ b/pkg/vm/testcases/bytecode/deferred_lib.dart.expect
@@ -3,7 +3,7 @@
 import "./hello.dart" as hel;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushNull
@@ -13,8 +13,6 @@
   PushConstant         CP#3
   IndirectStaticCall   0, CP#2
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -25,15 +23,13 @@
 ]static method callDeferred() → dynamic
   return let final dynamic #t1 = CheckLibraryIsLoaded(lib) in hel::main();
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
   PushConstant         CP#1
   IndirectStaticCall   1, CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -42,7 +38,7 @@
 ]static method testLoadLibrary() → dynamic
   return LoadLibrary(lib);
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/field_initializers.dart.expect b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
index 3842a43..d28770d 100644
--- a/pkg/vm/testcases/bytecode/field_initializers.dart.expect
+++ b/pkg/vm/testcases/bytecode/field_initializers.dart.expect
@@ -9,7 +9,7 @@
   field core::int foo4;
   field core::int foo5 = 43;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-6]
@@ -46,7 +46,7 @@
     : self::A::foo1 = null, self::A::foo4 = foo4, self::A::foo5 = 44, super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-7]
@@ -85,7 +85,7 @@
     : self::A::foo4 = null, self::A::foo1 = x, self::A::foo5 = y.{core::num::+}(1), super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -104,7 +104,7 @@
     : this self::A::•(45)
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-8]
@@ -131,7 +131,7 @@
   static field core::int foo7 = 47;
   static const field core::int foo8 = 48;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -155,7 +155,7 @@
     : super self::A::•(49)
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-7]
@@ -185,7 +185,7 @@
     ;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/hello.dart.expect b/pkg/vm/testcases/bytecode/hello.dart.expect
index b9c0903..db4aaaf 100644
--- a/pkg/vm/testcases/bytecode/hello.dart.expect
+++ b/pkg/vm/testcases/bytecode/hello.dart.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
diff --git a/pkg/vm/testcases/bytecode/instance_creation.dart.expect b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
index 5358ccb..1cd0231 100644
--- a/pkg/vm/testcases/bytecode/instance_creation.dart.expect
+++ b/pkg/vm/testcases/bytecode/instance_creation.dart.expect
@@ -7,7 +7,7 @@
   generic-covariant-impl field self::Base::T1 t1 = null;
   generic-covariant-impl field self::Base::T2 t2 = null;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -67,7 +67,7 @@
 }
 class A extends self::Base<core::int, core::String> {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-6]
@@ -87,7 +87,7 @@
 }
 class B<T extends core::Object = dynamic> extends self::Base<core::List<self::B::T>, core::String> {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -133,7 +133,7 @@
 }
 class C extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-6]
@@ -174,7 +174,7 @@
 }
 class E<K extends core::Object = dynamic, V extends core::Object = dynamic> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -192,7 +192,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -200,8 +200,6 @@
   PushConstant         CP#2
   IndirectStaticCall   1, CP#1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsField #lib::E
@@ -213,7 +211,7 @@
 }
 class F<K extends core::Object = dynamic, V extends core::Object = dynamic> extends self::E<core::String, core::List<self::F::V>> {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -231,7 +229,7 @@
     : super self::E::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -239,8 +237,6 @@
   PushConstant         CP#2
   IndirectStaticCall   1, CP#1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsField #lib::F
@@ -252,7 +248,7 @@
 }
 class G<K extends core::Object = dynamic, V extends core::Object = dynamic> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -270,7 +266,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -284,8 +280,6 @@
   IndirectStaticCall   1, CP#2
   Drop1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = Class #lib::H
@@ -298,7 +292,7 @@
 }
 class H<P1 extends core::Object = dynamic, P2 extends core::Object = dynamic, P3 extends core::Object = dynamic> extends self::G<self::H::P2, self::H::P3> {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -318,7 +312,7 @@
 }
 class I extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-6]
@@ -336,7 +330,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   EntryOptional        1, 0, 1
   LoadConstant         r1, CP#0
   LoadConstant         r1, CP#1
@@ -350,8 +344,6 @@
   IndirectStaticCall   2, CP#3
   Drop1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = String 'param'
@@ -365,7 +357,7 @@
 }
 class J extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -380,7 +372,7 @@
 }
 abstract class K<A extends core::Object = dynamic, B extends core::Object = dynamic> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -392,8 +384,6 @@
   IndirectStaticCall   1, CP#1
   Drop1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = Class #lib::TestTypeArgReuse
@@ -405,7 +395,7 @@
 }
 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 {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -424,7 +414,7 @@
     ;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Allocate             CP#0
@@ -435,8 +425,6 @@
   IndirectStaticCall   2, CP#2
   Drop1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = Class #lib::C
@@ -447,7 +435,7 @@
 ]static method foo1() → dynamic
   return new self::C::•("hello");
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#1
@@ -488,7 +476,7 @@
   new self::B::•<core::int>();
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   CheckFunctionTypeArgs 1, 0
@@ -516,7 +504,7 @@
   new self::B::•<core::List<self::foo3::T>>();
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
@@ -535,7 +523,7 @@
   self::G::test_factory<core::int, core::List<core::String>>();
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
@@ -561,7 +549,7 @@
   self::I::test_factory2(param: 42);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
@@ -569,8 +557,6 @@
   PushConstant         CP#2
   IndirectStaticCall   2, CP#1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation dart.core::_GrowableList [dart.core::String]
@@ -580,7 +566,7 @@
 ]static method foo6() → dynamic
   return core::_GrowableList::•<core::String>(0);
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
@@ -588,8 +574,6 @@
   PushConstant         CP#2
   IndirectStaticCall   2, CP#1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation dart.core::_List [dart.core::int]
@@ -599,7 +583,7 @@
 ]static method foo7(core::int n) → dynamic
   return core::_List::•<core::int>(n);
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#1
diff --git a/pkg/vm/testcases/bytecode/literals.dart.expect b/pkg/vm/testcases/bytecode/literals.dart.expect
index ac3a176..e5ace82 100644
--- a/pkg/vm/testcases/bytecode/literals.dart.expect
+++ b/pkg/vm/testcases/bytecode/literals.dart.expect
@@ -7,7 +7,7 @@
   final field core::int index;
   final field core::String _name;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#13
@@ -31,7 +31,7 @@
 }
 ]  static const field core::List<self::A> values = const <self::A>[self::A::elem1, self::A::elem2, self::A::elem3, self::A::elem4];
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -45,7 +45,7 @@
 }
 ]  static const field self::A elem1 = const self::A::•(0, "A.elem1");
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -59,7 +59,7 @@
 }
 ]  static const field self::A elem2 = const self::A::•(1, "A.elem2");
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -73,7 +73,7 @@
 }
 ]  static const field self::A elem3 = const self::A::•(2, "A.elem3");
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -87,7 +87,7 @@
 }
 ]  static const field self::A elem4 = const self::A::•(3, "A.elem4");
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-7]
@@ -115,15 +115,13 @@
     : self::A::index = index, self::A::_name = _name, super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
   PushConstant         CP#1
   IndirectStaticCall   1, CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -135,7 +133,7 @@
 class B extends core::Object {
   final field core::int i;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-6]
@@ -161,7 +159,7 @@
 class C extends self::B {
   final field core::int j;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-8]
@@ -193,7 +191,7 @@
   final field dynamic x;
   final field dynamic y;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   EntryOptional        2, 1, 0
   LoadConstant         r2, CP#0
   Frame                0
@@ -226,7 +224,7 @@
 }
 class E<T extends core::Object = dynamic> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -246,7 +244,7 @@
 }
 class F<P extends core::Object = dynamic, Q extends core::Object = dynamic> extends self::E<core::Map<self::F::P, self::F::Q>> {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -265,7 +263,7 @@
     ;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -280,7 +278,7 @@
 ]static const field self::A c1 = self::A::elem3;
 static const field core::String c2 = "hello!";
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushInt              6
@@ -290,7 +288,7 @@
 }
 ]static const field core::int c3 = self::c2.{core::String::length};
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -304,7 +302,7 @@
 }
 ]static const field self::C c4 = const self::C::•(1, 2, 3);
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -319,7 +317,7 @@
 ]static const field self::D c5 = const self::D::•(const self::B::•(4));
 static field core::double fieldWithDoubleLiteralInitializer = 1.0;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#3
@@ -372,7 +370,7 @@
   core::print(self::c5);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushInt              42
@@ -446,7 +444,7 @@
   core::print(const self::D::•(const self::C::•(4, 5, 6), const <core::String, core::Object>{"foo": 42, "bar": const self::B::•(self::c2.{core::String::length})}));
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#0
@@ -517,7 +515,7 @@
   core::print(<core::String>["a", a.{core::int::toString}(), "b"]);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   CheckFunctionTypeArgs 1, 0
@@ -633,7 +631,7 @@
   core::print(<self::test_map_literal::T, core::int>{c: 4});
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
@@ -659,7 +657,7 @@
   core::print(#_private_symbol);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   CheckFunctionTypeArgs 1, 0
@@ -688,13 +686,11 @@
   core::print(self::test_type_literal::T);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#1
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsForInstanceAllocation #lib::F [dart.core::int, dart.core::String]
@@ -703,13 +699,11 @@
 ]static method testGenericConstInstance() → dynamic
   return const self::F::•<core::int, core::String>();
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = Type <X extends dart.core::Object = dynamic>(X) → X
@@ -717,14 +711,12 @@
 ]static method testGenericFunctionTypeLiteral() → dynamic
   return <X extends core::Object = dynamic>(X) → X;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
   PushStatic           CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = StaticField #lib::fieldWithDoubleLiteralInitializer
@@ -732,7 +724,7 @@
 ]static method testFieldWithDoubleLiteralInitializer() → dynamic
   return self::fieldWithDoubleLiteralInitializer;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/loops.dart.expect b/pkg/vm/testcases/bytecode/loops.dart.expect
index fdb0b11..3c0804e 100644
--- a/pkg/vm/testcases/bytecode/loops.dart.expect
+++ b/pkg/vm/testcases/bytecode/loops.dart.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushInt              0
@@ -33,8 +33,6 @@
 L1:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -50,7 +48,7 @@
   return sum;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushInt              0
@@ -87,8 +85,6 @@
 L1:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -108,7 +104,7 @@
   return sum;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushInt              0
@@ -147,8 +143,6 @@
 L1:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -169,7 +163,7 @@
   return sum;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   PushInt              0
@@ -201,8 +195,6 @@
 L1:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -219,7 +211,7 @@
   return sum;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushInt              0
@@ -246,8 +238,6 @@
   JumpIfTrue           L1
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 2, num-type-args 0, names []
@@ -266,7 +256,7 @@
   return sum;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                3
   CheckStack
   PushInt              0
@@ -290,8 +280,6 @@
 L1:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -307,7 +295,7 @@
   return sum;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
   PushInt              0
@@ -335,8 +323,6 @@
 L1:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -354,7 +340,7 @@
   return sum;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/optional_params.dart.expect b/pkg/vm/testcases/bytecode/optional_params.dart.expect
index 265c758..bd33fe5 100644
--- a/pkg/vm/testcases/bytecode/optional_params.dart.expect
+++ b/pkg/vm/testcases/bytecode/optional_params.dart.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   EntryOptional        1, 2, 0
   LoadConstant         r1, CP#0
   LoadConstant         r2, CP#1
@@ -83,7 +83,7 @@
   core::print("b = ${b}");
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   EntryOptional        2, 0, 3
   LoadConstant         r2, CP#0
   LoadConstant         r2, CP#1
@@ -214,7 +214,7 @@
   core::print("c = ${c}");
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   EntryOptional        2, 0, 2
   LoadConstant         r2, CP#0
   LoadConstant         r2, CP#1
@@ -257,7 +257,7 @@
   core::print(b);
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushConstant         CP#0
diff --git a/pkg/vm/testcases/bytecode/super_calls.dart.expect b/pkg/vm/testcases/bytecode/super_calls.dart.expect
index 34e7eb7..f466a6d 100644
--- a/pkg/vm/testcases/bytecode/super_calls.dart.expect
+++ b/pkg/vm/testcases/bytecode/super_calls.dart.expect
@@ -4,7 +4,7 @@
 
 class Base1 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -22,7 +22,7 @@
     : super core::Object::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   CheckFunctionTypeArgs 1, 0
@@ -33,20 +33,18 @@
 }
 ]  method foo<T extends core::Object = dynamic>(self::Base1::foo::T a1, core::int a2) → void {}
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushInt              42
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
 }
 ]  get bar() → dynamic
     return 42;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
@@ -58,7 +56,7 @@
 }
 class A extends self::Base1 {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -76,7 +74,7 @@
     : super self::Base1::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#0
@@ -86,8 +84,6 @@
   PushConstant         CP#3
   IndirectStaticCall   4, CP#2
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgs [dart.core::String]
@@ -98,15 +94,13 @@
 ]  method testSuperCall(core::int x) → dynamic
     return super.{self::Base1::foo}<core::String>("a1", 2);
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
   PushConstant         CP#1
   IndirectStaticCall   1, CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -115,15 +109,13 @@
 ]  method testSuperTearOff() → dynamic
     return super.{self::Base1::foo};
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
   PushConstant         CP#1
   IndirectStaticCall   1, CP#0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 1, num-type-args 0, names []
@@ -132,7 +124,7 @@
 ]  method testSuperGet() → dynamic
     return super.{self::Base1::bar};
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#0
@@ -142,8 +134,6 @@
   PushConstant         CP#3
   InstanceCall         3, CP#5
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgs [dart.core::int]
@@ -156,7 +146,7 @@
 ]  method testSuperCallViaGetter() → dynamic
     return [@vm.call-site-attributes.metadata=receiverType:dynamic] super.{self::Base1::bar}.call<core::int>("param");
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -177,7 +167,7 @@
 }
 abstract class Base2 extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -200,7 +190,7 @@
 }
 abstract class B extends self::Base2 {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -218,7 +208,7 @@
     : super self::Base2::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-6]
@@ -254,8 +244,6 @@
   PushConstant         CP#9
   IndirectStaticCall   2, CP#8
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = String 'foo'
@@ -272,7 +260,7 @@
 ]  method testSuperCall(core::int x) → dynamic
     return super.{self::Base2::foo}<core::double>("a1", 3.14, 5);
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -292,8 +280,6 @@
   PushConstant         CP#6
   IndirectStaticCall   2, CP#5
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = String 'foo'
@@ -307,7 +293,7 @@
 ]  method testSuperTearOff() → dynamic
     return super.{self::Base2::foo};
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -327,8 +313,6 @@
   PushConstant         CP#6
   IndirectStaticCall   2, CP#5
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = String 'bar'
@@ -342,7 +326,7 @@
 ]  method testSuperGet() → dynamic
     return super.{self::Base2::bar};
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   PushConstant         CP#0
@@ -365,8 +349,6 @@
   PushConstant         CP#8
   InstanceCall         3, CP#10
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgs [dart.core::int]
@@ -384,7 +366,7 @@
 ]  method testSuperCallViaGetter() → dynamic
     return [@vm.call-site-attributes.metadata=receiverType:dynamic] super.{self::Base2::bar}.call<core::int>("param");
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -424,7 +406,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/switch.dart.expect b/pkg/vm/testcases/bytecode/switch.dart.expect
index b26fc38..bb4fbbb 100644
--- a/pkg/vm/testcases/bytecode/switch.dart.expect
+++ b/pkg/vm/testcases/bytecode/switch.dart.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushNull
@@ -38,8 +38,6 @@
 L4:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 2, num-type-args 0, names []
@@ -73,7 +71,7 @@
   return y;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushNull
@@ -119,8 +117,6 @@
 L4:
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 2, num-type-args 0, names []
@@ -160,7 +156,7 @@
   return y;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   PushNull
@@ -206,8 +202,6 @@
   PopLocal             r0
   Push                 r0
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = ArgDesc num-args 2, num-type-args 0, names []
@@ -246,7 +240,7 @@
   return y;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/try_blocks.dart.expect b/pkg/vm/testcases/bytecode/try_blocks.dart.expect
index 78ae07a..e513f1e 100644
--- a/pkg/vm/testcases/bytecode/try_blocks.dart.expect
+++ b/pkg/vm/testcases/bytecode/try_blocks.dart.expect
@@ -3,7 +3,7 @@
 import "dart:core" as core;
 
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                4
   CheckStack
 Try #0 start:
@@ -62,7 +62,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                5
   CheckStack
 Try #0 start:
@@ -226,7 +226,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                7
   CheckStack
   AllocateContext      3
@@ -325,7 +325,6 @@
   PopLocal             r6
   Push                 r6
   ReturnTOS
-  Jump                 L1
 L1:
   Push                 r0
   LoadContextParent
@@ -505,7 +504,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                8
   CheckStack
 Try #0 start:
@@ -533,7 +532,6 @@
   Push                 r2
   Push                 r3
   Throw                1
-  Drop1
 L2:
   Jump                 L3
 Try #2 end:
@@ -575,9 +573,9 @@
   ReturnTOS
 }
 ExceptionsTable {
-  try-index 0, outer -1, start 2, end 36, handler 36, needs-stack-trace, types [CP#3]
+  try-index 0, outer -1, start 2, end 35, handler 35, needs-stack-trace, types [CP#3]
   try-index 1, outer 0, start 2, end 7, handler 7, needs-stack-trace, types [CP#3]
-  try-index 2, outer 0, start 12, end 24, handler 24, types [CP#3]
+  try-index 2, outer 0, start 12, end 23, handler 23, types [CP#3]
 }
 ConstantPool {
   [0] = String 'try 1 > try 2'
@@ -615,7 +613,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                3
   CheckStack
   PushInt              0
@@ -693,7 +691,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                9
   CheckStack
   AllocateContext      2
@@ -753,7 +751,6 @@
   InstanceCall         1, CP#24
   Drop1
   Jump                 L4
-  Jump                 L5
 Try #1 end:
 Try #1 handler:
   SetFrame             9
@@ -775,19 +772,7 @@
   PushConstant         CP#28
   IndirectStaticCall   1, CP#4
   Drop1
-  Jump                 L6
-L5:
-  Push                 r5
-  PopLocal             r0
-  PushConstant         CP#26
-  PushConstant         CP#29
-  IndirectStaticCall   1, CP#4
-  Drop1
-  PushConstant         CP#30
-  PushConstant         CP#31
-  IndirectStaticCall   1, CP#4
-  Drop1
-  Jump                 L7
+  Jump                 L5
 Try #0 end:
 Try #0 handler:
   SetFrame             9
@@ -795,32 +780,24 @@
   PopLocal             r0
   MoveSpecial          r3, exception
   MoveSpecial          r4, stackTrace
+  PushConstant         CP#31
   PushConstant         CP#32
-  PushConstant         CP#33
   IndirectStaticCall   1, CP#4
   Drop1
   Push                 r3
   Push                 r4
   Throw                1
-L6:
+L5:
   Push                 r3
   PopLocal             r0
-  PushConstant         CP#32
-  PushConstant         CP#34
+  PushConstant         CP#31
+  PushConstant         CP#33
   IndirectStaticCall   1, CP#4
   Drop1
   Jump                 L2
-L7:
-  Push                 r3
-  PopLocal             r0
-  PushConstant         CP#32
-  PushConstant         CP#35
-  IndirectStaticCall   1, CP#4
-  Drop1
-  Jump                 L3
 L2:
-  PushConstant         CP#36
-  PushConstant         CP#37
+  PushConstant         CP#34
+  PushConstant         CP#35
   IndirectStaticCall   1, CP#4
   Drop1
   Jump                 L3
@@ -829,8 +806,8 @@
   ReturnTOS
 }
 ExceptionsTable {
-  try-index 0, outer -1, start 21, end 87, handler 87, needs-stack-trace, types [CP#25]
-  try-index 1, outer 0, start 30, end 57, handler 57, needs-stack-trace, types [CP#25]
+  try-index 0, outer -1, start 21, end 75, handler 75, needs-stack-trace, types [CP#25]
+  try-index 1, outer 0, start 30, end 56, handler 56, needs-stack-trace, types [CP#25]
 }
 ConstantPool {
   [0] = ArgDesc num-args 2, num-type-args 0, names []
@@ -862,15 +839,13 @@
   [26] = String 'finally 1'
   [27] = StaticICData target 'dart.core::print', arg-desc CP#4
   [28] = StaticICData target 'dart.core::print', arg-desc CP#4
-  [29] = StaticICData target 'dart.core::print', arg-desc CP#4
-  [30] = String 'after try 1'
-  [31] = StaticICData target 'dart.core::print', arg-desc CP#4
-  [32] = String 'finally 2'
+  [29] = String 'after try 1'
+  [30] = StaticICData target 'dart.core::print', arg-desc CP#4
+  [31] = String 'finally 2'
+  [32] = StaticICData target 'dart.core::print', arg-desc CP#4
   [33] = StaticICData target 'dart.core::print', arg-desc CP#4
-  [34] = StaticICData target 'dart.core::print', arg-desc CP#4
+  [34] = String 'case 2'
   [35] = StaticICData target 'dart.core::print', arg-desc CP#4
-  [36] = String 'case 2'
-  [37] = StaticICData target 'dart.core::print', arg-desc CP#4
 }
 Closure CP#8 {
   EntryFixed           1, 2
@@ -929,7 +904,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                6
   CheckStack
   AllocateContext      1
@@ -942,20 +917,20 @@
   Push                 r0
   PopLocal             r3
 Try #0 start:
-  Allocate             CP#22
+  Allocate             CP#16
   StoreLocal           r5
   Push                 r5
   PushNull
-  StoreFieldTOS        CP#23
+  StoreFieldTOS        CP#17
   Push                 r5
   PushNull
-  StoreFieldTOS        CP#25
+  StoreFieldTOS        CP#19
   Push                 r5
-  PushConstant         CP#27
-  StoreFieldTOS        CP#28
+  PushConstant         CP#21
+  StoreFieldTOS        CP#22
   Push                 r5
   PushConstant         CP#0
-  StoreFieldTOS        CP#30
+  StoreFieldTOS        CP#24
   Push                 r5
   Push                 r0
   StoreFieldTOS        CP#1
@@ -970,11 +945,11 @@
   MoveSpecial          r4, stackTrace
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#32
+  PushConstant         CP#26
   IndirectStaticCall   1, CP#3
   Drop1
   Push                 r2
-  InstanceCall         1, CP#33
+  InstanceCall         1, CP#27
   Drop1
   Push                 r3
   Push                 r4
@@ -984,11 +959,11 @@
   PopLocal             r0
   Push                 r0
   LoadContextVar       0
-  PushConstant         CP#34
+  PushConstant         CP#28
   IndirectStaticCall   1, CP#3
   Drop1
   Push                 r2
-  InstanceCall         1, CP#35
+  InstanceCall         1, CP#29
   Drop1
   Push                 r0
   LoadContextParent
@@ -1015,27 +990,21 @@
   [12] = StaticICData target 'dart.core::print', arg-desc CP#3
   [13] = StaticICData target 'dart.core::print', arg-desc CP#3
   [14] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [15] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [16] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [17] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [18] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [19] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [20] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [21] = EndClosureFunctionScope
-  [22] = Class dart.core::_Closure
-  [23] = InstanceField dart.core::_Closure::_instantiator_type_arguments
-  [24] = Reserved
-  [25] = InstanceField dart.core::_Closure::_function_type_arguments
-  [26] = Reserved
-  [27] = EmptyTypeArguments
-  [28] = InstanceField dart.core::_Closure::_delayed_type_arguments
-  [29] = Reserved
-  [30] = InstanceField dart.core::_Closure::_function
-  [31] = Reserved
-  [32] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [33] = ICData dynamic target-name 'call', arg-desc CP#3
-  [34] = StaticICData target 'dart.core::print', arg-desc CP#3
-  [35] = ICData dynamic target-name 'call', arg-desc CP#3
+  [15] = EndClosureFunctionScope
+  [16] = Class dart.core::_Closure
+  [17] = InstanceField dart.core::_Closure::_instantiator_type_arguments
+  [18] = Reserved
+  [19] = InstanceField dart.core::_Closure::_function_type_arguments
+  [20] = Reserved
+  [21] = EmptyTypeArguments
+  [22] = InstanceField dart.core::_Closure::_delayed_type_arguments
+  [23] = Reserved
+  [24] = InstanceField dart.core::_Closure::_function
+  [25] = Reserved
+  [26] = StaticICData target 'dart.core::print', arg-desc CP#3
+  [27] = ICData dynamic target-name 'call', arg-desc CP#3
+  [28] = StaticICData target 'dart.core::print', arg-desc CP#3
+  [29] = ICData dynamic target-name 'call', arg-desc CP#3
 }
 Closure CP#0 {
   EntryFixed           1, 6
@@ -1056,7 +1025,6 @@
   IndirectStaticCall   1, CP#3
   Drop1
   Jump                 L1
-  Jump                 L2
 Try #0 end:
 Try #0 handler:
   SetFrame             6
@@ -1071,8 +1039,7 @@
   PushConstant         CP#9
   IndirectStaticCall   1, CP#3
   Drop1
-  Jump                 L3
-  Jump                 L4
+  Jump                 L2
 Try #1 end:
 Try #1 handler:
   SetFrame             6
@@ -1088,7 +1055,7 @@
   Push                 r4
   Push                 r5
   Throw                1
-L3:
+L2:
   Push                 r4
   PopLocal             r0
   Push                 r0
@@ -1098,17 +1065,6 @@
   Drop1
   PushInt              43
   ReturnTOS
-L4:
-  Push                 r4
-  PopLocal             r0
-  Push                 r0
-  LoadContextVar       0
-  PushConstant         CP#12
-  IndirectStaticCall   1, CP#3
-  Drop1
-  Push                 r2
-  Push                 r3
-  Throw                1
 L1:
   Push                 r2
   PopLocal             r0
@@ -1116,11 +1072,10 @@
   PopLocal             r4
 Try #2 start:
   PushConstant         CP#8
-  PushConstant         CP#13
+  PushConstant         CP#12
   IndirectStaticCall   1, CP#3
   Drop1
-  Jump                 L5
-  Jump                 L6
+  Jump                 L3
 Try #2 end:
 Try #2 handler:
   SetFrame             6
@@ -1130,79 +1085,22 @@
   MoveSpecial          r5, stackTrace
   Push                 r0
   LoadContextVar       0
+  PushConstant         CP#13
+  IndirectStaticCall   1, CP#3
+  Drop1
+  Push                 r4
+  Push                 r5
+  Throw                1
+L3:
+  Push                 r4
+  PopLocal             r0
+  Push                 r0
+  LoadContextVar       0
   PushConstant         CP#14
   IndirectStaticCall   1, CP#3
   Drop1
-  Push                 r4
-  Push                 r5
-  Throw                1
-L5:
-  Push                 r4
-  PopLocal             r0
-  Push                 r0
-  LoadContextVar       0
-  PushConstant         CP#15
-  IndirectStaticCall   1, CP#3
-  Drop1
   PushInt              43
   ReturnTOS
-L6:
-  Push                 r4
-  PopLocal             r0
-  Push                 r0
-  LoadContextVar       0
-  PushConstant         CP#16
-  IndirectStaticCall   1, CP#3
-  Drop1
-  PushInt              42
-  ReturnTOS
-L2:
-  Push                 r2
-  PopLocal             r0
-  Push                 r0
-  PopLocal             r4
-Try #3 start:
-  PushConstant         CP#8
-  PushConstant         CP#17
-  IndirectStaticCall   1, CP#3
-  Drop1
-  Jump                 L7
-  Jump                 L8
-Try #3 end:
-Try #3 handler:
-  SetFrame             6
-  Push                 r4
-  PopLocal             r0
-  MoveSpecial          r4, exception
-  MoveSpecial          r5, stackTrace
-  Push                 r0
-  LoadContextVar       0
-  PushConstant         CP#18
-  IndirectStaticCall   1, CP#3
-  Drop1
-  Push                 r4
-  Push                 r5
-  Throw                1
-L7:
-  Push                 r4
-  PopLocal             r0
-  Push                 r0
-  LoadContextVar       0
-  PushConstant         CP#19
-  IndirectStaticCall   1, CP#3
-  Drop1
-  PushInt              43
-  ReturnTOS
-L8:
-  Push                 r4
-  PopLocal             r0
-  Push                 r0
-  LoadContextVar       0
-  PushConstant         CP#20
-  IndirectStaticCall   1, CP#3
-  Drop1
-  PushNull
-  ReturnTOS
 
 }
 ]static method testTryFinally3() → dynamic {
@@ -1232,7 +1130,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                5
   CheckStack
 Try #0 start:
@@ -1304,7 +1202,7 @@
   }
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/bytecode/type_ops.dart.expect b/pkg/vm/testcases/bytecode/type_ops.dart.expect
index 8e47afb..ef13709 100644
--- a/pkg/vm/testcases/bytecode/type_ops.dart.expect
+++ b/pkg/vm/testcases/bytecode/type_ops.dart.expect
@@ -4,7 +4,7 @@
 
 class A<T extends core::Object = dynamic> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -24,7 +24,7 @@
 }
 class B extends self::A<core::String> {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -44,7 +44,7 @@
 }
 class C<T1 extends core::Object = dynamic, T2 extends core::Object = dynamic, T3 extends core::Object = dynamic> extends self::B {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -65,7 +65,7 @@
 class D<P extends core::Object = dynamic, Q extends core::Object = dynamic> extends self::C<core::int, self::D::Q, self::D::P> {
   generic-covariant-impl field core::Map<self::D::P, self::D::Q> foo;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-6]
@@ -98,7 +98,7 @@
     : self::D::foo = tt as{TypeError} core::Map<self::D::P, self::D::Q>, super self::C::•()
     ;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -168,7 +168,7 @@
     [@vm.call-site-attributes.metadata=receiverType:#lib::D<#lib::D::P, #lib::D::Q>] this.{self::D::foo} = y as{TypeError} core::Map<self::D::P, self::D::Q>;
   }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   CheckFunctionTypeArgs 2, 0
@@ -198,14 +198,13 @@
   Drop1
 L2:
   Push                 FP[-5]
+  PushConstant         CP#11
   Push                 FP[-6]
   LoadTypeArgumentsField CP#6
   Push                 r0
-  PushConstant         CP#11
-  InstanceCall         4, CP#12
-  InstanceCall         1, CP#13
-  ReturnTOS
-  PushNull
+  PushConstant         CP#12
+  AssertAssignable     0, CP#13
+  InstanceCall         1, CP#14
   ReturnTOS
 }
 ConstantPool {
@@ -221,8 +220,9 @@
   [9] = String '32'
   [10] = StaticICData target 'dart.core::print', arg-desc CP#4
   [11] = Type dart.core::Map<#lib::D::foo3::T2, #lib::D::Q>
-  [12] = ICData target-name 'dart.core::_as', arg-desc CP#1
-  [13] = ICData get target-name 'values', arg-desc CP#4
+  [12] = String ' in type cast'
+  [13] = SubtypeTestCache
+  [14] = ICData get target-name 'values', arg-desc CP#4
 }
 ]  method foo3<T1 extends core::Object = dynamic, T2 extends core::Object = dynamic>(dynamic z) → dynamic {
     if(z is self::A<self::D::foo3::T1>) {
@@ -234,7 +234,7 @@
     return (z as core::Map<self::D::foo3::T2, self::D::Q>).{core::Map::values};
   }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                2
   CheckStack
   Push                 FP[-6]
@@ -267,8 +267,6 @@
   PushConstant         CP#3
   AssertAssignable     0, CP#7
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
   [0] = TypeArgumentsField #lib::D
@@ -287,20 +285,18 @@
 }
 class E<P extends core::String = core::String> extends core::Object {
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
   ReturnTOS
-  PushNull
-  ReturnTOS
 }
 ConstantPool {
 }
 ]  static factory •<P extends core::String = dynamic>() → self::E<self::E::•::P>
     return null;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   CheckFunctionTypeArgs 2, 0
@@ -332,7 +328,7 @@
 }
 static field core::List<core::Iterable<dynamic>> globalVar;
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   Push                 FP[-5]
@@ -358,12 +354,11 @@
   Drop1
 L2:
   Push                 FP[-5]
-  PushNull
-  PushNull
   PushConstant         CP#11
-  InstanceCall         4, CP#12
-  ReturnTOS
   PushNull
+  PushNull
+  PushConstant         CP#12
+  AssertAssignable     0, CP#13
   ReturnTOS
 }
 ConstantPool {
@@ -379,7 +374,8 @@
   [9] = String '12'
   [10] = StaticICData target 'dart.core::print', arg-desc CP#4
   [11] = Type #lib::A<dart.core::int>
-  [12] = ICData target-name 'dart.core::_as', arg-desc CP#7
+  [12] = String ' in type cast'
+  [13] = SubtypeTestCache
 }
 ]static method foo1(dynamic x) → dynamic {
   if(x is self::B) {
@@ -391,7 +387,7 @@
   return x as self::A<core::int>;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                1
   CheckStack
   Push                 FP[-5]
@@ -414,7 +410,7 @@
   self::globalVar = x as{TypeError} core::List<core::Iterable<dynamic>>;
 }
 [@vm.bytecode=
-Bytecode {
+Bytecode (version: stable) {
   Entry                0
   CheckStack
   PushNull
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics.dart.expect b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics.dart.expect
new file mode 100644
index 0000000..82211a9
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics.dart.expect
@@ -0,0 +1,40 @@
+------------ #lib::C:: ------------
+%this = _Parameter #0 [_T (#lib::C<dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::C::foo ------------
+%this = _Parameter #0 [_T (#lib::C<dynamic>)+]
+t1 = _Extract (%this[#lib::C/0])
+t2 = _Instantiate (#lib::D @ [t1])
+t3 = _Call direct [#lib::D::] (t2)
+RESULT: t2
+------------ #lib::D:: ------------
+%this = _Parameter #0 [_T (#lib::D<dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::E:: ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1 = _Call direct [#lib::C::] (%this)
+RESULT: _T {}?
+------------ #lib::E::foo ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1* = _Call direct [#lib::C::foo] (%this)
+RESULT: t1
+------------ #lib::E::bar ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1 = _Extract (%this[#lib::E/1])
+t2 = _Instantiate (#lib::D @ [t1])
+t3 = _Call direct [#lib::D::] (t2)
+RESULT: t2
+------------ #lib::E::baz ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1 = _Extract (%this[#lib::E/2])
+t2 = _Instantiate (#lib::D @ [t1])
+t3 = _Call direct [#lib::D::] (t2)
+RESULT: t2
+------------ #lib::main ------------
+t0 = _Call direct [#lib::C::] (_T (#lib::C<_TS (dart.core::int)>))
+t1 = _Call [#lib::C::foo] (_T (#lib::C<_TS (dart.core::int)>))
+t2 = _Call direct [#lib::E::] (_T (#lib::E<_TS (dart.core::String), _TS (dart.core::int), _TS (dart.core::String)>))
+t3 = _Call [#lib::E::foo] (_T (#lib::E<_TS (dart.core::String), _TS (dart.core::int), _TS (dart.core::String)>))
+RESULT: _T {}?
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart
new file mode 100644
index 0000000..2cb9cfb
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart
@@ -0,0 +1,55 @@
+// 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 C<T> {
+  foo() => D<T>();
+  dynamic id1(T x) => x;
+  dynamic id2(T x) => x;
+}
+
+class D<T> {}
+
+class E<S, T> extends C<T> {
+  foo() => super.foo();
+  bar() => D<S>();
+  baz() => D<T>();
+}
+
+class X {}
+
+class Y extends X {}
+
+class Z extends X {}
+
+class I<T> {}
+
+class J extends I<int> {}
+
+class K<T> {}
+
+class C2<T> {
+  dynamic id3(Comparable<T> x) => x;
+  dynamic id4(K<I<T>> x) => x;
+}
+
+main() {
+  // Test that type arguments are instantiated correctly on concrete types.
+  dynamic used;
+  used = C<int>().foo();
+  used = E<int, String>().foo();
+  used = E<int, String>().bar();
+  used = E<int, String>().baz();
+
+  // Test that narrow against type-parameters works.
+  C<X> c = new C<Y>();
+  c.id1(Y());
+  c.id2(Z());
+
+  // Test that generic supertypes of non-generic types are handled correctly.
+  C2<num> c2 = new C2<num>();
+  c2.id3(3.0);
+  c2.id4(K<J>());
+
+  return used;
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart.expect b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart.expect
new file mode 100644
index 0000000..9e9fb78
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart.expect
@@ -0,0 +1,109 @@
+------------ #lib::C:: ------------
+%this = _Parameter #0 [_T (#lib::C<dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::C::foo ------------
+%this = _Parameter #0 [_T (#lib::C<dynamic>)+]
+t1 = _Extract (%this[#lib::C/0])
+t2 = _CreateConcreteType (#lib::D @ (t1))
+t3 = _Call direct [#lib::D::] (t2)
+RESULT: t2
+------------ #lib::C::id1 ------------
+%this = _Parameter #0 [_T (#lib::C<dynamic>)+]
+%x = _Parameter #1 [_T (dart.core::Object)+?]
+t2 = _Extract (%this[#lib::C/0])
+t3 = _TypeCheck (%x against t2) (for parameter x)
+RESULT: t3
+------------ #lib::C::id2 ------------
+%this = _Parameter #0 [_T (#lib::C<dynamic>)+]
+%x = _Parameter #1 [_T (dart.core::Object)+?]
+t2 = _Extract (%this[#lib::C/0])
+t3 = _TypeCheck (%x against t2) (for parameter x)
+RESULT: t3
+------------ #lib::D:: ------------
+%this = _Parameter #0 [_T (#lib::D<dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::E:: ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1 = _Call direct [#lib::C::] (%this)
+RESULT: _T {}?
+------------ #lib::E::foo ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1* = _Call direct [#lib::C::foo] (%this)
+RESULT: t1
+------------ #lib::E::bar ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1 = _Extract (%this[#lib::E/0])
+t2 = _CreateConcreteType (#lib::D @ (t1))
+t3 = _Call direct [#lib::D::] (t2)
+RESULT: t2
+------------ #lib::E::baz ------------
+%this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+]
+t1 = _Extract (%this[#lib::E/1])
+t2 = _CreateConcreteType (#lib::D @ (t1))
+t3 = _Call direct [#lib::D::] (t2)
+RESULT: t2
+------------ #lib::X:: ------------
+%this = _Parameter #0 [_T (#lib::X)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::Y:: ------------
+%this = _Parameter #0 [_T (#lib::Y)+]
+t1 = _Call direct [#lib::X::] (%this)
+RESULT: _T {}?
+------------ #lib::Z:: ------------
+%this = _Parameter #0 [_T (#lib::Z)+]
+t1 = _Call direct [#lib::X::] (%this)
+RESULT: _T {}?
+------------ #lib::I:: ------------
+%this = _Parameter #0 [_T (#lib::I<dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::J:: ------------
+%this = _Parameter #0 [_T (#lib::J)+]
+t1 = _Call direct [#lib::I::] (%this)
+RESULT: _T {}?
+------------ #lib::K:: ------------
+%this = _Parameter #0 [_T (#lib::K<dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::C2:: ------------
+%this = _Parameter #0 [_T (#lib::C2<dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::C2::id3 ------------
+%this = _Parameter #0 [_T (#lib::C2<dynamic>)+]
+%x = _Parameter #1 [_T (dart.core::Comparable<dynamic>)+?]
+t2 = _Extract (%this[#lib::C2/0])
+t3 = _CreateRuntimeType (dart.core::Comparable @ (t2))
+t4 = _TypeCheck (%x against t3) (for parameter x)
+RESULT: t4
+------------ #lib::C2::id4 ------------
+%this = _Parameter #0 [_T (#lib::C2<dynamic>)+]
+%x = _Parameter #1 [_T (#lib::K<dynamic>)+?]
+t2 = _Extract (%this[#lib::C2/0])
+t3 = _CreateRuntimeType (#lib::I @ (t2))
+t4 = _CreateRuntimeType (#lib::K @ (t3))
+t5 = _TypeCheck (%x against t4) (for parameter x)
+RESULT: t5
+------------ #lib::main ------------
+t0 = _Call direct [#lib::C::] (_T (#lib::C<dart.core::int>))
+t1* = _Call [#lib::C::foo] (_T (#lib::C<dart.core::int>))
+t2 = _Call direct [#lib::E::] (_T (#lib::E<dart.core::int, dart.core::String>))
+t3* = _Call [#lib::E::foo] (_T (#lib::E<dart.core::int, dart.core::String>))
+t4 = _Call direct [#lib::E::] (_T (#lib::E<dart.core::int, dart.core::String>))
+t5* = _Call [#lib::E::bar] (_T (#lib::E<dart.core::int, dart.core::String>))
+t6 = _Call direct [#lib::E::] (_T (#lib::E<dart.core::int, dart.core::String>))
+t7* = _Call [#lib::E::baz] (_T (#lib::E<dart.core::int, dart.core::String>))
+t8 = _Call direct [#lib::C::] (_T (#lib::C<#lib::Y>))
+t9 = _Call direct [#lib::Y::] (_T (#lib::Y))
+t10 = _Call [#lib::C::id1] (_T (#lib::C<#lib::Y>), _T (#lib::Y))
+t11 = _Call direct [#lib::Z::] (_T (#lib::Z))
+t12 = _Call [#lib::C::id2] (_T (#lib::C<#lib::Y>), _T (#lib::Z))
+t13 = _Call direct [#lib::C2::] (_T (#lib::C2<dart.core::num>))
+t14 = _Call [#lib::C2::id3] (_T (#lib::C2<dart.core::num>), _T (dart.core::double)+)
+t15 = _Call direct [#lib::K::] (_T (#lib::K<#lib::J>))
+t16 = _Call [#lib::C2::id4] (_T (#lib::C2<dart.core::num>), _T (#lib::K<#lib::J>))
+used = _Join [dynamic] (_T {}?, t1, t3, t5, t7)
+RESULT: used
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_case1.dart b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_case1.dart
new file mode 100644
index 0000000..3b211f3
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_case1.dart
@@ -0,0 +1,45 @@
+// 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.
+//
+// This test checks that TFA works as expected on an example imitating the
+// InheritedElement.setDependencies hotspot in Flutter. The example is modified
+// to use a custom class 'MockHashMap' rather than the regular 'HashMap' since
+// we want to print out the inferred type of the '_dependents' field, which
+// would be a 'SetType' under the regular 'HashMap' (and set types aren't
+// translated into 'InferredType'). Also, []= is the target of a truly-dynamic
+// call, and we want to make sure there is only one call-site in this example
+// (call-site level info is not available yet).
+
+import 'dart:collection';
+
+class Element {}
+
+abstract class MockHashMap<K, V> {
+  factory MockHashMap() {
+    return _NotRealHashMap<K, V>();
+  }
+
+  void setEntry(K key, V value);
+}
+
+class _NotRealHashMap<K, V> implements MockHashMap<K, V> {
+  void setEntry(K key, V value) {}
+}
+
+class InheritedElement extends Element {
+  // The inferred type for '_dependents' needs to be concrete and have exact
+  // type arguments.
+  final MockHashMap<Element, Object> _dependents =
+      MockHashMap<Element, Object>();
+
+  void setDependencies(Element dependent, Object value) {
+    _dependents.setEntry(dependent, value);
+  }
+}
+
+main() {
+  var ie = InheritedElement();
+  ie.setDependencies(ie, 0);
+  ie.setDependencies(Element(), null);
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_case1.dart.expect b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_case1.dart.expect
new file mode 100644
index 0000000..fae7252
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_case1.dart.expect
@@ -0,0 +1,44 @@
+------------ #lib::Element:: ------------
+%this = _Parameter #0 [_T (#lib::Element)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::MockHashMap:: ------------
+%K = _Parameter #0 [null]
+%V = _Parameter #1 [null]
+t2 = _CreateConcreteType (#lib::_NotRealHashMap @ (%K, %V))
+t3 = _Call direct [#lib::_NotRealHashMap::] (t2)
+RESULT: t2
+------------ #lib::_NotRealHashMap:: ------------
+%this = _Parameter #0 [_T (#lib::_NotRealHashMap<dynamic, dynamic>)+]
+t1 = _Call direct [dart.core::Object::] (%this)
+RESULT: _T {}?
+------------ #lib::_NotRealHashMap::setEntry ------------
+%this = _Parameter #0 [_T (#lib::_NotRealHashMap<dynamic, dynamic>)+]
+%key = _Parameter #1 [_T (dart.core::Object)+?]
+%value = _Parameter #2 [_T (dart.core::Object)+?]
+t3 = _Extract (%this[#lib::_NotRealHashMap/0])
+t4 = _TypeCheck (%key against t3) (for parameter key)
+t5 = _Extract (%this[#lib::_NotRealHashMap/1])
+t6 = _TypeCheck (%value against t5) (for parameter value)
+RESULT: _T {}?
+------------ #lib::InheritedElement:: ------------
+%this = _Parameter #0 [_T (#lib::InheritedElement)+]
+t1 = _Call direct [#lib::Element::] (%this)
+RESULT: _T {}?
+------------ #lib::InheritedElement::setDependencies ------------
+%this = _Parameter #0 [_T (#lib::InheritedElement)+]
+%dependent = _Parameter #1 [_T (#lib::Element)+?]
+%value = _Parameter #2 [_T (dart.core::Object)+?]
+t3* = _Call virtual get [#lib::InheritedElement::_dependents] (%this)
+t4 = _Call [#lib::MockHashMap::setEntry] (t3, %dependent, %value)
+RESULT: _T {}?
+------------ #lib::InheritedElement::_dependents ------------
+%this = _Parameter #0 [_T (#lib::InheritedElement)+]
+t1* = _Call direct [#lib::MockHashMap::] (#lib::Element, dart.core::Object)
+RESULT: t1
+------------ #lib::main ------------
+t0 = _Call direct [#lib::InheritedElement::] (_T (#lib::InheritedElement))
+t1 = _Call [#lib::InheritedElement::setDependencies] (_T (#lib::InheritedElement), _T (#lib::InheritedElement), _T (dart.core::_Smi))
+t2 = _Call direct [#lib::Element::] (_T (#lib::Element))
+t3 = _Call [#lib::InheritedElement::setDependencies] (_T (#lib::InheritedElement), _T (#lib::Element), _T {}?)
+RESULT: _T {}?
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart
new file mode 100644
index 0000000..2cb9cfb
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart
@@ -0,0 +1,55 @@
+// 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 C<T> {
+  foo() => D<T>();
+  dynamic id1(T x) => x;
+  dynamic id2(T x) => x;
+}
+
+class D<T> {}
+
+class E<S, T> extends C<T> {
+  foo() => super.foo();
+  bar() => D<S>();
+  baz() => D<T>();
+}
+
+class X {}
+
+class Y extends X {}
+
+class Z extends X {}
+
+class I<T> {}
+
+class J extends I<int> {}
+
+class K<T> {}
+
+class C2<T> {
+  dynamic id3(Comparable<T> x) => x;
+  dynamic id4(K<I<T>> x) => x;
+}
+
+main() {
+  // Test that type arguments are instantiated correctly on concrete types.
+  dynamic used;
+  used = C<int>().foo();
+  used = E<int, String>().foo();
+  used = E<int, String>().bar();
+  used = E<int, String>().baz();
+
+  // Test that narrow against type-parameters works.
+  C<X> c = new C<Y>();
+  c.id1(Y());
+  c.id2(Z());
+
+  // Test that generic supertypes of non-generic types are handled correctly.
+  C2<num> c2 = new C2<num>();
+  c2.id3(3.0);
+  c2.id4(K<J>());
+
+  return used;
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect
new file mode 100644
index 0000000..7f4b4d5
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart.expect
@@ -0,0 +1,78 @@
+library #lib;
+import self as self;
+import "dart:core" as core;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasTearOffUses:false]  method foo() → dynamic
+    return new self::D::•<self::C::T>();
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method id1([@vm.inferred-type.metadata=#lib::Y (skip check)] generic-covariant-impl self::C::T x) → dynamic
+    return x;
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method id2([@vm.inferred-type.metadata=#lib::Z] generic-covariant-impl self::C::T x) → dynamic
+    return x;
+}
+class D<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::D<self::D::T>
+    : super core::Object::•()
+    ;
+}
+class E<S extends core::Object = dynamic, T extends core::Object = dynamic> extends self::C<self::E::T> {
+  synthetic constructor •() → self::E<self::E::S, self::E::T>
+    : super self::C::•()
+    ;
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method foo() → dynamic
+    return [@vm.inferred-type.metadata=#lib::D<dart.core::String>] super.{self::C::foo}();
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method bar() → dynamic
+    return new self::D::•<self::E::S>();
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method baz() → dynamic
+    return new self::D::•<self::E::T>();
+}
+abstract class X extends core::Object {
+  synthetic constructor •() → self::X
+    : super core::Object::•()
+    ;
+}
+class Y extends self::X {
+  synthetic constructor •() → self::Y
+    : super self::X::•()
+    ;
+}
+class Z extends self::X {
+  synthetic constructor •() → self::Z
+    : super self::X::•()
+    ;
+}
+abstract class I<T extends core::Object = dynamic> extends core::Object {
+}
+abstract class J extends self::I<core::int> {
+}
+class K<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::K<self::K::T>
+    : super core::Object::•()
+    ;
+}
+class C2<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C2<self::C2::T>
+    : super core::Object::•()
+    ;
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method id3([@vm.inferred-type.metadata=dart.core::_Double (skip check)] generic-covariant-impl core::Comparable<self::C2::T> x) → dynamic
+    return x;
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method id4([@vm.inferred-type.metadata=#lib::K<#lib::J> (skip check)] generic-covariant-impl self::K<self::I<self::C2::T>> x) → dynamic
+    return x;
+}
+static method main() → dynamic {
+  dynamic used;
+  used = [@vm.direct-call.metadata=#lib::C::foo] [@vm.inferred-type.metadata=#lib::D<dart.core::int>] new self::C::•<core::int>().{self::C::foo}();
+  used = [@vm.direct-call.metadata=#lib::E::foo] [@vm.inferred-type.metadata=#lib::D<dart.core::String>] new self::E::•<core::int, core::String>().{self::E::foo}();
+  used = [@vm.direct-call.metadata=#lib::E::bar] [@vm.inferred-type.metadata=#lib::D<dart.core::int>] new self::E::•<core::int, core::String>().{self::E::bar}();
+  used = [@vm.direct-call.metadata=#lib::E::baz] [@vm.inferred-type.metadata=#lib::D<dart.core::String>] new self::E::•<core::int, core::String>().{self::E::baz}();
+  self::C<self::X> c = new self::C::•<self::Y>();
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X>] [@vm.direct-call.metadata=#lib::C::id1] c.{self::C::id1}(new self::Y::•());
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C<#lib::X>] [@vm.direct-call.metadata=#lib::C::id2] c.{self::C::id2}(new self::Z::•());
+  self::C2<core::num> c2 = new self::C2::•<core::num>();
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num>] [@vm.direct-call.metadata=#lib::C2::id3] c2.{self::C2::id3}(3.0);
+  [@vm.call-site-attributes.metadata=receiverType:#lib::C2<dart.core::num>] [@vm.direct-call.metadata=#lib::C2::id4] c2.{self::C2::id4}(new self::K::•<self::J>());
+  return used;
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart
new file mode 100644
index 0000000..3b211f3
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart
@@ -0,0 +1,45 @@
+// 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.
+//
+// This test checks that TFA works as expected on an example imitating the
+// InheritedElement.setDependencies hotspot in Flutter. The example is modified
+// to use a custom class 'MockHashMap' rather than the regular 'HashMap' since
+// we want to print out the inferred type of the '_dependents' field, which
+// would be a 'SetType' under the regular 'HashMap' (and set types aren't
+// translated into 'InferredType'). Also, []= is the target of a truly-dynamic
+// call, and we want to make sure there is only one call-site in this example
+// (call-site level info is not available yet).
+
+import 'dart:collection';
+
+class Element {}
+
+abstract class MockHashMap<K, V> {
+  factory MockHashMap() {
+    return _NotRealHashMap<K, V>();
+  }
+
+  void setEntry(K key, V value);
+}
+
+class _NotRealHashMap<K, V> implements MockHashMap<K, V> {
+  void setEntry(K key, V value) {}
+}
+
+class InheritedElement extends Element {
+  // The inferred type for '_dependents' needs to be concrete and have exact
+  // type arguments.
+  final MockHashMap<Element, Object> _dependents =
+      MockHashMap<Element, Object>();
+
+  void setDependencies(Element dependent, Object value) {
+    _dependents.setEntry(dependent, value);
+  }
+}
+
+main() {
+  var ie = InheritedElement();
+  ie.setDependencies(ie, 0);
+  ie.setDependencies(Element(), null);
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect
new file mode 100644
index 0000000..bc476af
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/class_generics_case1.dart.expect
@@ -0,0 +1,35 @@
+library #lib;
+import self as self;
+import "dart:core" as core;
+
+class Element extends core::Object {
+  synthetic constructor •() → self::Element
+    : super core::Object::•()
+    ;
+}
+abstract class MockHashMap<K extends core::Object = dynamic, V extends core::Object = dynamic> extends core::Object {
+  static factory •<K extends core::Object = dynamic, V extends core::Object = dynamic>() → self::MockHashMap<self::MockHashMap::•::K, self::MockHashMap::•::V> {
+    return new self::_NotRealHashMap::•<self::MockHashMap::•::K, self::MockHashMap::•::V>();
+  }
+  abstract method setEntry(generic-covariant-impl self::MockHashMap::K key, generic-covariant-impl self::MockHashMap::V value) → void;
+}
+class _NotRealHashMap<K extends core::Object = dynamic, V extends core::Object = dynamic> extends core::Object implements self::MockHashMap<self::_NotRealHashMap::K, self::_NotRealHashMap::V> {
+  synthetic constructor •() → self::_NotRealHashMap<self::_NotRealHashMap::K, self::_NotRealHashMap::V>
+    : super core::Object::•()
+    ;
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method setEntry([@vm.inferred-type.metadata=! (skip check)] generic-covariant-impl self::_NotRealHashMap::K key, [@vm.inferred-type.metadata=dart.core::_Smi? (skip check)] generic-covariant-impl self::_NotRealHashMap::V value) → void {}
+}
+class InheritedElement extends self::Element {
+[@vm.inferred-type.metadata=#lib::_NotRealHashMap<#lib::Element, dart.core::Object>] [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasNonThisUses:false,hasTearOffUses:false]  final field self::MockHashMap<self::Element, core::Object> _dependents = [@vm.inferred-type.metadata=#lib::_NotRealHashMap<#lib::Element, dart.core::Object>] self::MockHashMap::•<self::Element, core::Object>();
+  synthetic constructor •() → self::InheritedElement
+    : super self::Element::•()
+    ;
+[@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  method setDependencies([@vm.inferred-type.metadata=!] self::Element dependent, [@vm.inferred-type.metadata=dart.core::_Smi?] core::Object value) → void {
+    [@vm.call-site-attributes.metadata=receiverType:#lib::MockHashMap<#lib::Element, dart.core::Object>] [@vm.direct-call.metadata=#lib::_NotRealHashMap::setEntry] [@vm.direct-call.metadata=#lib::InheritedElement::_dependents] [@vm.inferred-type.metadata=#lib::_NotRealHashMap<#lib::Element, dart.core::Object>] this.{self::InheritedElement::_dependents}.{self::MockHashMap::setEntry}(dependent, value);
+  }
+}
+static method main() → dynamic {
+  self::InheritedElement ie = new self::InheritedElement::•();
+  [@vm.direct-call.metadata=#lib::InheritedElement::setDependencies] ie.{self::InheritedElement::setDependencies}(ie, 0);
+  [@vm.direct-call.metadata=#lib::InheritedElement::setDependencies] ie.{self::InheritedElement::setDependencies}(new self::Element::•(), null);
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/future.dart b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart
new file mode 100644
index 0000000..7c942a5
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart
@@ -0,0 +1,35 @@
+// 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:async';
+
+class C<T> {
+  void test2c(FutureOr<T> x) {}
+  void test3c(Future<T> x) {}
+  void test4c(FutureOr<T> x) {}
+
+  void test2r(C<FutureOr<T>> x) {}
+  void test3r(C<Future<T>> x) {}
+  void test4r(C<FutureOr<T>> x) {}
+  void test5r(C<Future<T>> x) {}
+  void test6r(C<FutureOr<T>> x) {}
+  void test7r(C<T> x) {}
+  void test8r(C<T> x) {}
+}
+
+main() {
+  dynamic c = C<int>();
+
+  c.test2c(3);
+  c.test3c(Future.value(3));
+  c.test4c(Future.value(3));
+
+  c.test2r(C<int>());
+  c.test3r(C<Future<int>>());
+  c.test4r(C<Future<int>>());
+  c.test5r(C<FutureOr<int>>());
+  c.test6r(C<FutureOr<int>>());
+  c.test7r(C<FutureOr<int>>());
+  c.test8r(C<Future<int>>());
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect
new file mode 100644
index 0000000..3998132
--- /dev/null
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/future.dart.expect
@@ -0,0 +1,33 @@
+library #lib;
+import self as self;
+import "dart:core" as core;
+import "dart:async" as asy;
+
+class C<T extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → self::C<self::C::T>
+    : super core::Object::•()
+    ;
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test2c([@vm.inferred-type.metadata=dart.core::_Smi (skip check)] generic-covariant-impl asy::FutureOr<self::C::T> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test3c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int> (skip check)] generic-covariant-impl asy::Future<self::C::T> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test4c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int> (skip check)] generic-covariant-impl asy::FutureOr<self::C::T> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test2r([@vm.inferred-type.metadata=#lib::C<dart.core::int> (skip check)] generic-covariant-impl self::C<asy::FutureOr<self::C::T>> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test3r([@vm.inferred-type.metadata=#lib::C<dart.async::Future<dart.core::int>> (skip check)] generic-covariant-impl self::C<asy::Future<self::C::T>> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test4r([@vm.inferred-type.metadata=#lib::C<dart.async::Future<dart.core::int>> (skip check)] generic-covariant-impl self::C<asy::FutureOr<self::C::T>> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test5r([@vm.inferred-type.metadata=#lib::C<dart.async::FutureOr<dart.core::int>>] generic-covariant-impl self::C<asy::Future<self::C::T>> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test6r([@vm.inferred-type.metadata=#lib::C<dart.async::FutureOr<dart.core::int>> (skip check)] generic-covariant-impl self::C<asy::FutureOr<self::C::T>> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test7r([@vm.inferred-type.metadata=#lib::C<dart.async::FutureOr<dart.core::int>>] generic-covariant-impl self::C<self::C::T> x) → void {}
+[@vm.procedure-attributes.metadata=hasThisUses:false,hasTearOffUses:false]  method test8r([@vm.inferred-type.metadata=#lib::C<dart.async::Future<dart.core::int>>] generic-covariant-impl self::C<self::C::T> x) → void {}
+}
+static method main() → dynamic {
+  dynamic c = new self::C::•<core::int>();
+  [@vm.direct-call.metadata=#lib::C::test2c] c.test2c(3);
+  [@vm.direct-call.metadata=#lib::C::test3c] c.test3c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int>] asy::Future::value<core::int>(3));
+  [@vm.direct-call.metadata=#lib::C::test4c] c.test4c([@vm.inferred-type.metadata=dart.async::_Future<dart.core::int>] asy::Future::value<core::int>(3));
+  [@vm.direct-call.metadata=#lib::C::test2r] c.test2r(new self::C::•<core::int>());
+  [@vm.direct-call.metadata=#lib::C::test3r] c.test3r(new self::C::•<asy::Future<core::int>>());
+  [@vm.direct-call.metadata=#lib::C::test4r] c.test4r(new self::C::•<asy::Future<core::int>>());
+  [@vm.direct-call.metadata=#lib::C::test5r] c.test5r(new self::C::•<asy::FutureOr<core::int>>());
+  [@vm.direct-call.metadata=#lib::C::test6r] c.test6r(new self::C::•<asy::FutureOr<core::int>>());
+  [@vm.direct-call.metadata=#lib::C::test7r] c.test7r(new self::C::•<asy::FutureOr<core::int>>());
+  [@vm.direct-call.metadata=#lib::C::test8r] c.test8r(new self::C::•<asy::Future<core::int>>());
+}
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect
index 3075294..4a94677 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/future_or.dart.expect
@@ -14,11 +14,11 @@
     ;
 }
 [@vm.inferred-type.metadata=dart.core::Null?]static field core::Function unknown;
-static method foo1_a1([@vm.inferred-type.metadata=dart.async::_Future] dynamic x) → void {}
+static method foo1_a1([@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] dynamic x) → void {}
 static method foo1_a2([@vm.inferred-type.metadata=#lib::B] dynamic x) → void {}
-static method foo1_a3([@vm.inferred-type.metadata=dart.async::_Future] dynamic x) → void {}
+static method foo1_a3([@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] dynamic x) → void {}
 static method foo1_a4([@vm.inferred-type.metadata=#lib::B] dynamic x) → void {}
-static method foo1([@vm.inferred-type.metadata=dart.async::_Future] asy::Future<self::A> a1, [@vm.inferred-type.metadata=#lib::B] self::A a2, [@vm.inferred-type.metadata=dart.async::_Future] asy::FutureOr<self::A> a3, [@vm.inferred-type.metadata=#lib::B] asy::FutureOr<self::A> a4) → void {
+static method foo1([@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] asy::Future<self::A> a1, [@vm.inferred-type.metadata=#lib::B] self::A a2, [@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] asy::FutureOr<self::A> a3, [@vm.inferred-type.metadata=#lib::B] asy::FutureOr<self::A> a4) → void {
   self::foo1_a1(a1);
   self::foo1_a2(a2);
   self::foo1_a3(a3);
@@ -37,6 +37,6 @@
 static method getDynamic() → dynamic
   return [@vm.call-site-attributes.metadata=receiverType:dart.core::Function] self::unknown.call();
 static method main(core::List<core::String> args) → dynamic {
-  self::foo1([@vm.inferred-type.metadata=dart.async::_Future] asy::Future::value<self::B>(new self::B::•()), new self::B::•(), [@vm.inferred-type.metadata=dart.async::_Future] asy::Future::value<self::B>(new self::B::•()), new self::B::•());
+  self::foo1([@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] asy::Future::value<self::B>(new self::B::•()), new self::B::•(), [@vm.inferred-type.metadata=dart.async::_Future<#lib::B>] asy::Future::value<self::B>(new self::B::•()), new self::B::•());
   self::foo2(self::getDynamic() as{TypeError} asy::Future<self::A>, self::getDynamic() as{TypeError} self::A, self::getDynamic() as{TypeError} asy::FutureOr<self::A>, self::getDynamic() as{TypeError} asy::FutureOr<self::A>);
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect
index 97088fd..6eb8e58 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart.expect
@@ -33,7 +33,7 @@
     ;
 }
 abstract class _E&D&C extends self::D implements self::C {
-  synthetic constructor •() → void
+  synthetic constructor •() → self::_E&D&C
     : super self::D::•()
     ;
 }
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect
index 7f7b453..43d8894 100644
--- a/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect
+++ b/pkg/vm/testcases/transformations/type_flow/transformer/invalidation_set_field2.dart.expect
@@ -28,8 +28,8 @@
     : self::Q::result = result, super core::Object::•()
     ;
 }
-static method foo1([@vm.inferred-type.metadata=dart.core::_GrowableList] core::List<self::T1> list) → dynamic {
-  [@vm.direct-call.metadata=#lib::T3::run] [@vm.direct-call.metadata=#lib::T1::go??] [@vm.inferred-type.metadata=#lib::T3] [@vm.direct-call.metadata=#lib::Q::result??] [@vm.direct-call.metadata=dart._internal::ListIterable::first] [@vm.direct-call.metadata=dart.collection::_ListBase&Object&ListMixin::map] [@vm.inferred-type.metadata=dart._internal::MappedListIterable] list.{core::Iterable::map}<self::Q<self::T1>>((self::T1 t1) → self::Q<self::T1> => new self::Q::•<self::T1>(t1)).{core::Iterable::first}.{self::Q::result}.{self::T1::go}().{self::T3::run}();
+static method foo1([@vm.inferred-type.metadata=dart.core::_GrowableList<#lib::T1>] core::List<self::T1> list) → dynamic {
+  [@vm.direct-call.metadata=#lib::T3::run] [@vm.direct-call.metadata=#lib::T1::go??] [@vm.inferred-type.metadata=#lib::T3] [@vm.direct-call.metadata=#lib::Q::result??] [@vm.direct-call.metadata=dart._internal::ListIterable::first] [@vm.direct-call.metadata=dart.collection::_ListBase&Object&ListMixin::map] [@vm.inferred-type.metadata=dart._internal::MappedListIterable<#lib::T1, ?>] list.{core::Iterable::map}<self::Q<self::T1>>((self::T1 t1) → self::Q<self::T1> => new self::Q::•<self::T1>(t1)).{core::Iterable::first}.{self::Q::result}.{self::T1::go}().{self::T3::run}();
 }
 static method foo2NewValue() → self::Q<dynamic>
   return new self::Q::•<self::T2>(new self::T2::•());
diff --git a/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect b/pkg/vm/testcases/transformations/type_flow/transformer/no_such_method.dart.expect
index 691d012..372e102 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
@@ -48,11 +48,11 @@
     return new self::T1::•();
   }
   no-such-method-forwarder get bar() → dynamic
-    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;
+    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<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  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;
+    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<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a3, [[@vm.inferred-type.metadata=dart.core::_Smi] 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;
+    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<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 abstract class C extends core::Object {
   synthetic constructor •() → self::C
@@ -67,11 +67,11 @@
     : super self::C::•()
     ;
   no-such-method-forwarder get bar() → dynamic
-    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;
+    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<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  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;
+    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<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 [@vm.procedure-attributes.metadata=hasDynamicUses:false,hasThisUses:false,hasTearOffUses:false]  no-such-method-forwarder method bazz([@vm.inferred-type.metadata=dart.core::_Smi] dynamic a1, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a2, [@vm.inferred-type.metadata=dart.core::_Smi] dynamic a3, [[@vm.inferred-type.metadata=dart.core::_Smi] 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;
+    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<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 class E extends core::Object implements self::A {
   synthetic constructor •() → self::E
@@ -81,7 +81,7 @@
     return new self::T4::•();
   }
   no-such-method-forwarder get bar() → dynamic
-    return [@vm.direct-call.metadata=#lib::E::noSuchMethod] [@vm.inferred-type.metadata=#lib::T4] this.{self::E::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;
+    return [@vm.direct-call.metadata=#lib::E::noSuchMethod] [@vm.inferred-type.metadata=#lib::T4] this.{self::E::noSuchMethod}(new core::_InvocationMirror::_withoutType("get:bar", const <core::Type>[], const <dynamic>[], [@vm.inferred-type.metadata=dart.collection::UnmodifiableMapView<dart.core::Symbol, dynamic>] core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{}), false)) as{TypeError} dynamic;
 }
 class F extends core::Object {
   synthetic constructor •() → self::F
diff --git a/pkg/vm/tool/dart_precompiled_runtime2 b/pkg/vm/tool/dart_precompiled_runtime2
index d8c490a..3d76580 100755
--- a/pkg/vm/tool/dart_precompiled_runtime2
+++ b/pkg/vm/tool/dart_precompiled_runtime2
@@ -33,7 +33,4 @@
 export DART_CONFIGURATION=${DART_CONFIGURATION:-ReleaseX64}
 BIN_DIR="$OUT_DIR$DART_CONFIGURATION"
 
-exec "$BIN_DIR"/dart_precompiled_runtime               \
-     --strong                                          \
-     --reify-generic-functions                         \
-     "$@"
+exec "$BIN_DIR"/dart_precompiled_runtime "$@"
diff --git a/pkg/vm/tool/precompiler2 b/pkg/vm/tool/precompiler2
index f364a47..1d49fff 100755
--- a/pkg/vm/tool/precompiler2
+++ b/pkg/vm/tool/precompiler2
@@ -13,6 +13,7 @@
 # passed to Fasta.
 
 set -e
+set -x
 
 OPTIONS=()
 GEN_KERNEL_OPTIONS=()
@@ -29,8 +30,6 @@
     GEN_KERNEL_OPTIONS+=("$arg")
     OPTIONS+=("$arg")
     ;;
-    --sync-async | \
-    --no-sync-async | \
     --tfa | \
     --no-tfa | \
     -D* )
diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn
index 8bba438..ecf8a5d 100644
--- a/runtime/BUILD.gn
+++ b/runtime/BUILD.gn
@@ -165,13 +165,20 @@
       "-fno-exceptions",
     ]
 
-    if (dart_debug) {
+    ldflags = []
+    if (is_clang && dart_vm_code_coverage) {
+      cflags += [
+        "-O0",
+        "-fprofile-arcs",
+        "-ftest-coverage",
+      ]
+      ldflags += [ "--coverage" ]
+    } else if (dart_debug) {
       cflags += [ "-O${dart_debug_optimization_level}" ]
     } else {
       cflags += [ "-O3" ]
     }
 
-    ldflags = []
     if (defined(is_asan) && is_asan) {
       ldflags += [ "-fsanitize=address" ]
     }
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index a27e0fa..6a819cc 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -3,9 +3,6 @@
 # BSD-style license that can be found in the LICENSE file.
 
 import("../../build/dart/dart_action.gni")
-import("../../sdk/lib/_http/http_sources.gni")
-import("../../sdk/lib/io/io_sources.gni")
-import("../../sdk/lib/cli/cli_sources.gni")
 import("../runtime_args.gni")
 import("../vm/heap/heap_sources.gni")
 import("../vm/compiler/compiler_sources.gni")
@@ -16,35 +13,6 @@
 import("io_sources.gni")
 import("cli_impl_sources.gni")
 import("cli_sources.gni")
-import("vmservice/vmservice_sources.gni")
-
-# Generate a resources.cc file for the service isolate without Observatory.
-action("gen_resources_cc") {
-  visibility = [ ":*" ]  # Only targets in this file can see this.
-  script = "../tools/create_resources.py"
-  inputs = [
-    "../tools/create_resources.py",
-  ]
-
-  # The path below is hard coded for the Mojo and Flutter trees. When moving
-  # the Dart runtime to gn, this path might need to be updated.
-  sources = rebase_path(vmservice_sources, "", "../bin/vmservice/")
-  outputs = [
-    "$target_gen_dir/resources_gen.cc",
-  ]
-  args = [
-           "--output",
-           rebase_path("$target_gen_dir/resources_gen.cc", root_build_dir),
-           "--outer_namespace",
-           "dart",
-           "--inner_namespace",
-           "bin",
-           "--table_name",
-           "service_bin",
-           "--root_prefix",
-           rebase_path(".", root_build_dir) + "/",
-         ] + rebase_path(sources, root_build_dir)
-}
 
 config("libdart_builtin_config") {
   if (!is_win) {
@@ -139,11 +107,9 @@
     if (is_fuchsia) {
       configs -= [ "//build/config:symbol_visibility_hidden" ]
     }
-    deps = [ ":gen_resources_cc" ] + extra_deps
+    deps = extra_deps
 
     sources = [
-      # Include generated source files.
-      "$target_gen_dir/resources_gen.cc",
       "address_sanitizer.cc",
       "builtin.cc",
       "builtin.h",
@@ -754,7 +720,6 @@
   extra_deps = [
     "..:libdart_jit",
     ":dart_snapshot_cc",
-    ":gen_resources_cc",
   ]
   if (dart_runtime_mode != "release") {
     extra_deps += [ "../observatory:standalone_observatory_archive" ]
@@ -767,7 +732,6 @@
     "loader.h",
     "gzip.cc",
     "gzip.h",
-    "$target_gen_dir/resources_gen.cc",
   ]
   if (dart_runtime_mode == "release") {
     extra_sources += [ "observatory_assets_empty.cc" ]
@@ -862,13 +826,14 @@
   platform_dill = "$root_out_dir/vm_platform_strong.dill"
 
   output = "$root_out_dir/gen_kernel_bytecode.dill"
+  depfile = "$target_gen_dir/gen_kernel_bytecode.dill.d"
   outputs = [
     output,
+    depfile,
   ]
 
   script = "../../pkg/vm/bin/gen_kernel.dart"
 
-  depfile = "$target_gen_dir/gen_kernel_bytecode.dill.d"
   abs_depfile = rebase_path(depfile)
   rebased_output = rebase_path(output, root_out_dir)
   vm_args = [
@@ -878,6 +843,7 @@
 
   args = [
     "--gen-bytecode",
+    "--drop-ast",
     "--no-embed-sources",
     "--platform",
     rebase_path(platform_dill),
diff --git a/runtime/bin/dart_embedder_api_impl.cc b/runtime/bin/dart_embedder_api_impl.cc
index 645a7bb..072a279 100644
--- a/runtime/bin/dart_embedder_api_impl.cc
+++ b/runtime/bin/dart_embedder_api_impl.cc
@@ -88,8 +88,7 @@
 
   Dart_EnterScope();
   // Load embedder specific bits and return.
-  if (!bin::VmService::Setup(config.ip, config.port,
-                             /*running_precompiled=*/true, config.dev_mode,
+  if (!bin::VmService::Setup(config.ip, config.port, config.dev_mode,
                              /*trace_loading=*/false, config.deterministic)) {
     *error = strdup(bin::VmService::GetErrorMessage());
     Dart_ExitScope();
diff --git a/runtime/bin/dfe.cc b/runtime/bin/dfe.cc
index 7e18fef..40a605f 100644
--- a/runtime/bin/dfe.cc
+++ b/runtime/bin/dfe.cc
@@ -354,14 +354,17 @@
 // /projects/mytest/build/bin/main.vm.dill
 // /projects/mytest/build/packages/mytest/lib.vm.dill
 // ```
-static bool TryReadKernelListBuffer(uint8_t* buffer, uint8_t** kernel_ir,
+static bool TryReadKernelListBuffer(uint8_t* buffer,
+                                    intptr_t buffer_size,
+                                    uint8_t** kernel_ir,
                                     intptr_t* kernel_ir_size) {
   KernelIRNode* kernel_ir_head = NULL;
   KernelIRNode* kernel_ir_tail = NULL;
   // Add all kernels to the linked list
   char* filename =
       reinterpret_cast<char*>(buffer + kernel_list_magic_number.length);
-  char* tail = strstr(filename, "\n");
+  intptr_t filename_size = buffer_size - kernel_list_magic_number.length;
+  char* tail = reinterpret_cast<char*>(memchr(filename, '\n', filename_size));
   while (tail != NULL) {
     *tail = '\0';
     intptr_t this_kernel_size;
@@ -381,8 +384,9 @@
     }
     KernelIRNode::Add(&kernel_ir_head, &kernel_ir_tail,
                       new KernelIRNode(this_kernel_ir, this_kernel_size));
+    filename_size -= tail + 1 - filename;
     filename = tail + 1;
-    tail = strstr(filename, "\n");
+    tail = reinterpret_cast<char*>(memchr(filename, '\n', filename_size));
   }
   free(buffer);
 
@@ -405,7 +409,8 @@
   DartUtils::MagicNumber magic_number =
       DartUtils::SniffForMagicNumber(buffer, *kernel_ir_size);
   if (magic_number == DartUtils::kKernelListMagicNumber) {
-    return TryReadKernelListBuffer(buffer, kernel_ir, kernel_ir_size);
+    return TryReadKernelListBuffer(buffer, *kernel_ir_size, kernel_ir,
+                                   kernel_ir_size);
   }
   return TryReadSimpleKernelBuffer(buffer, kernel_ir, kernel_ir_size);
 }
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc
index 24da95d..db0ef11 100644
--- a/runtime/bin/gen_snapshot.cc
+++ b/runtime/bin/gen_snapshot.cc
@@ -66,10 +66,12 @@
 const uint8_t* isolate_snapshot_instructions = NULL;
 
 // Global state that indicates whether a snapshot is to be created and
-// if so which file to write the snapshot into.
+// if so which file to write the snapshot into. The ordering of this list must
+// match kSnapshotKindNames below.
 enum SnapshotKind {
   kCore,
   kCoreJIT,
+  kCoreJITAll,
   kAppJIT,
   kAppAOTBlobs,
   kAppAOTAssembly,
@@ -91,14 +93,17 @@
                                                    &environment);
 }
 
+// The ordering of this list must match the SnapshotKind enum above.
 static const char* kSnapshotKindNames[] = {
+    // clang-format off
     "core",
     "core-jit",
+    "core-jit-all",
     "app-jit",
     "app-aot-blobs",
     "app-aot-assembly",
-    "vm-aot-assembly",
-    NULL,
+    "vm-aot-assembly", NULL,
+    // clang-format on
 };
 
 #define STRING_OPTIONS_LIST(V)                                                 \
@@ -289,6 +294,7 @@
       }
       break;
     }
+    case kCoreJITAll:
     case kCoreJIT: {
       if ((vm_snapshot_data_filename == NULL) ||
           (vm_snapshot_instructions_filename == NULL) ||
@@ -461,6 +467,7 @@
         WriteDependenciesWithTarget(isolate_snapshot_data_filename);
         // WriteDependenciesWithTarget(isolate_snapshot_instructions_filename);
         break;
+      case kCoreJITAll:
       case kCoreJIT:
         WriteDependenciesWithTarget(vm_snapshot_data_filename);
         // WriteDependenciesWithTarget(vm_snapshot_instructions_filename);
@@ -550,7 +557,8 @@
 }
 
 static void LoadBytecode() {
-  if (Dart_IsVMFlagSet("enable_interpreter") &&
+  if ((Dart_IsVMFlagSet("enable_interpreter") ||
+       Dart_IsVMFlagSet("use_bytecode_compiler")) &&
       ((snapshot_kind == kCoreJIT) || (snapshot_kind == kAppJIT))) {
     Dart_Handle result = Dart_ReadAllBytecode();
     CHECK_RESULT(result);
@@ -568,6 +576,13 @@
   }
 }
 
+static void CompileAll() {
+  if (snapshot_kind == kCoreJITAll) {
+    Dart_Handle result = Dart_CompileAll();
+    CHECK_RESULT(result);
+  }
+}
+
 static void CreateAndWriteCoreSnapshot() {
   ASSERT(snapshot_kind == kCore);
   ASSERT(vm_snapshot_data_filename != NULL);
@@ -624,7 +639,7 @@
 }
 
 static void CreateAndWriteCoreJITSnapshot() {
-  ASSERT(snapshot_kind == kCoreJIT);
+  ASSERT((snapshot_kind == kCoreJIT) || (snapshot_kind == kCoreJITAll));
   ASSERT(vm_snapshot_data_filename != NULL);
   ASSERT(vm_snapshot_instructions_filename != NULL);
   ASSERT(isolate_snapshot_data_filename != NULL);
@@ -803,53 +818,6 @@
   }
 }
 
-static Dart_Isolate CreateServiceIsolate(const char* script_uri,
-                                         const char* main,
-                                         const char* package_root,
-                                         const char* package_config,
-                                         Dart_IsolateFlags* flags,
-                                         void* data,
-                                         char** error) {
-  IsolateData* isolate_data =
-      new IsolateData(script_uri, package_root, package_config, NULL);
-  Dart_Isolate isolate = NULL;
-  isolate = Dart_CreateIsolate(script_uri, main, isolate_snapshot_data,
-                               isolate_snapshot_instructions, NULL, NULL, flags,
-                               isolate_data, error);
-
-  if (isolate == NULL) {
-    Log::PrintErr("Error: Could not create service isolate\n");
-    return NULL;
-  }
-
-  Dart_EnterScope();
-  if (!Dart_IsServiceIsolate(isolate)) {
-    Log::PrintErr("Error: We only expect to create the service isolate\n");
-    return NULL;
-  }
-  Dart_Handle result = Dart_SetLibraryTagHandler(Loader::LibraryTagHandler);
-  if (Dart_IsError(result)) {
-    Log::PrintErr("Error: Could not set tag handler for service isolate\n");
-    return NULL;
-  }
-  // Setup the native resolver.
-  Builtin::LoadAndCheckLibrary(Builtin::kBuiltinLibrary);
-  Builtin::LoadAndCheckLibrary(Builtin::kIOLibrary);
-  Builtin::LoadAndCheckLibrary(Builtin::kCLILibrary);
-
-  ASSERT(Dart_IsServiceIsolate(isolate));
-  // Load embedder specific bits and return. Will not start http server.
-  if (!VmService::Setup("127.0.0.1", -1, false /* running_precompiled */,
-                        false /* server dev mode */, false /* trace_loading */,
-                        true /* deterministic */)) {
-    *error = strdup(VmService::GetErrorMessage());
-    return NULL;
-  }
-  Dart_ExitScope();
-  Dart_ExitIsolate();
-  return isolate;
-}
-
 static Dart_QualifiedFunctionName no_entry_points[] = {
     {NULL, NULL, NULL}  // Must be terminated with NULL entries.
 };
@@ -932,6 +900,10 @@
     case kCore:
       CreateAndWriteCoreSnapshot();
       break;
+    case kCoreJITAll:
+      CompileAll();
+      CreateAndWriteCoreJITSnapshot();
+      break;
     case kCoreJIT:
       LoadBytecode();
       LoadCompilationTrace();
@@ -1022,7 +994,8 @@
   if (IsSnapshottingForPrecompilation()) {
     vm_options.AddArgument("--precompilation");
   }
-  if (snapshot_kind == kCoreJIT || snapshot_kind == kAppJIT) {
+  if ((snapshot_kind == kCoreJITAll) || (snapshot_kind == kCoreJIT) ||
+      (snapshot_kind == kAppJIT)) {
     vm_options.AddArgument("--fields_may_be_reset");
     vm_options.AddArgument("--link_natives_lazily");
 #if !defined(PRODUCT)
@@ -1046,12 +1019,7 @@
   Dart_InitializeParams init_params;
   memset(&init_params, 0, sizeof(init_params));
   init_params.version = DART_INITIALIZE_PARAMS_CURRENT_VERSION;
-  if (app_script_name != NULL && kernel_buffer == NULL) {
-    // We need the service isolate to load script files.
-    // When generating snapshots from a kernel program, we do not need to load
-    // any script files.
-    init_params.create = CreateServiceIsolate;
-  }
+  ASSERT((app_script_name != NULL) || (kernel_buffer == NULL));
   init_params.file_open = DartUtils::OpenFile;
   init_params.file_read = DartUtils::ReadFile;
   init_params.file_write = DartUtils::WriteFile;
diff --git a/runtime/bin/io_natives.cc b/runtime/bin/io_natives.cc
index 324eb1a..e5b885e 100644
--- a/runtime/bin/io_natives.cc
+++ b/runtime/bin/io_natives.cc
@@ -131,7 +131,7 @@
   V(SocketBase_IsBindError, 2)                                                 \
   V(Socket_Available, 1)                                                       \
   V(Socket_CreateBindConnect, 4)                                               \
-  V(Socket_CreateBindDatagram, 4)                                              \
+  V(Socket_CreateBindDatagram, 6)                                              \
   V(Socket_CreateConnect, 3)                                                   \
   V(Socket_GetPort, 1)                                                         \
   V(Socket_GetRemotePeer, 1)                                                   \
diff --git a/runtime/bin/loader.cc b/runtime/bin/loader.cc
index 902405c..e335ca5 100644
--- a/runtime/bin/loader.cc
+++ b/runtime/bin/loader.cc
@@ -342,8 +342,6 @@
   // dropping the lock below |result| may no longer valid.
   Dart_Handle uri =
       Dart_NewStringFromCString(reinterpret_cast<char*>(result->uri));
-  Dart_Handle resolved_uri =
-      Dart_NewStringFromCString(reinterpret_cast<char*>(result->resolved_uri));
   Dart_Handle library_uri = Dart_Null();
   if (result->library_uri != NULL) {
     library_uri =
@@ -423,61 +421,9 @@
       return false;
     }
   }
-  intptr_t tag = result->tag;
 
-  // No touching.
-  result = NULL;
-
-  // We must drop the lock here because the tag handler may be recursively
-  // invoked and it will attempt to acquire the lock to queue more work.
-  loader->monitor_->Exit();
-
-  Dart_Handle dart_result = Dart_Null();
-  bool reload_extensions = false;
-
-  switch (tag) {
-    case Dart_kImportTag:
-      dart_result = Dart_LoadLibrary(uri, resolved_uri, source, 0, 0);
-      break;
-    case Dart_kSourceTag: {
-      ASSERT(library_uri != Dart_Null());
-      Dart_Handle library = Dart_LookupLibrary(library_uri);
-      ASSERT(!Dart_IsError(library));
-      dart_result = Dart_LoadSource(library, uri, resolved_uri, source, 0, 0);
-    } break;
-    case Dart_kScriptTag:
-      if (payload_type == DartUtils::kKernelMagicNumber) {
-        // TODO(27590): This code path is only hit when trying to spawn
-        // isolates. We currently do not have support for neither
-        // `Isolate.spawn()` nor `Isolate.spawnUri()` with kernel-based
-        // frontend.
-        dart_result = Dart_LoadScriptFromKernel(payload, payload_length);
-      } else {
-        dart_result = Dart_LoadScript(uri, resolved_uri, source, 0, 0);
-      }
-      break;
-    default:
-      UNREACHABLE();
-  }
-
-  // Re-acquire the lock before exiting the function (it was held before entry),
-  loader->monitor_->Enter();
-  if (Dart_IsError(dart_result)) {
-    // Remember the error if we encountered one.
-    loader->error_ = dart_result;
-    return false;
-  }
-
-  if (reload_extensions) {
-    dart_result = ReloadNativeExtensions();
-    if (Dart_IsError(dart_result)) {
-      // Remember the error if we encountered one.
-      loader->error_ = dart_result;
-      return false;
-    }
-  }
-
-  return true;
+  UNREACHABLE();
+  return false;
 }
 
 bool Loader::ProcessPayloadResultLocked(Loader* loader,
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index c91941b..052fa2f 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -204,7 +204,6 @@
                                        const char* script_uri,
                                        const char* package_root,
                                        const char* packages_config,
-                                       bool set_native_resolvers,
                                        bool isolate_run_app_snapshot,
                                        Dart_IsolateFlags* flags,
                                        char** error,
@@ -290,13 +289,12 @@
   }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
-  if (set_native_resolvers) {
-    // Setup the native resolver as the snapshot does not carry it.
-    Builtin::SetNativeResolver(Builtin::kBuiltinLibrary);
-    Builtin::SetNativeResolver(Builtin::kIOLibrary);
-    Builtin::SetNativeResolver(Builtin::kCLILibrary);
-    VmService::SetNativeResolver();
-  }
+  // Setup the native resolver as the snapshot does not carry it.
+  Builtin::SetNativeResolver(Builtin::kBuiltinLibrary);
+  Builtin::SetNativeResolver(Builtin::kIOLibrary);
+  Builtin::SetNativeResolver(Builtin::kCLILibrary);
+  VmService::SetNativeResolver();
+
   if (isolate_run_app_snapshot) {
     Dart_Handle result = Loader::ReloadNativeExtensions();
     CHECK_RESULT(result);
@@ -450,8 +448,7 @@
   kernel_isolate_is_running = true;
 
   return IsolateSetupHelper(isolate, false, uri, package_root, packages_config,
-                            true, isolate_run_app_snapshot, flags, error,
-                            exit_code);
+                            isolate_run_app_snapshot, flags, error, exit_code);
 }
 #endif  // !defined(EXCLUDE_CFE_AND_KERNEL_PLATFORM)
 
@@ -469,7 +466,6 @@
   Dart_Isolate isolate = NULL;
   IsolateData* isolate_data =
       new IsolateData(script_uri, package_root, packages_config, NULL);
-  bool skip_library_load = true;
 
 #if defined(DART_PRECOMPILED_RUNTIME)
   // AOT: All isolates start from the app snapshot.
@@ -483,33 +479,16 @@
 #else
   // JIT: Service isolate uses the core libraries snapshot.
 
-  // Set the flag to load the vmservice library. If not set, the kernel
-  // loader might skip loading it. This is flag is not relevant for the
-  // non-kernel flow.
+  // Set flag to load and retain the vmservice library.
   ASSERT(flags != NULL);
   flags->load_vmservice_library = true;
-
-  // If there is intention to use DFE, then we create the isolate
-  // from kernel only if we can.
-  const uint8_t* kernel_buffer = NULL;
-  intptr_t kernel_buffer_size = 0;
-  dfe.LoadPlatform(&kernel_buffer, &kernel_buffer_size);
-  if (kernel_buffer == NULL) {
-    dfe.application_kernel_buffer(&kernel_buffer, &kernel_buffer_size);
-  }
-
-  // TODO(sivachandra): When the platform program is unavailable, check if
-  // application kernel binary is self contained or an incremental binary.
-  // Isolate should be created only if it is a self contained kernel binary.
-  if (kernel_buffer != NULL) {
-    isolate = Dart_CreateIsolateFromKernel(script_uri, NULL, kernel_buffer,
-                                           kernel_buffer_size, flags,
-                                           isolate_data, error);
-  } else {
-    *error = strdup("Platform file not available to create service isolate.");
-    delete isolate_data;
-    return NULL;
-  }
+  const uint8_t* isolate_snapshot_data = core_isolate_snapshot_data;
+  const uint8_t* isolate_snapshot_instructions =
+      core_isolate_snapshot_instructions;
+  isolate = Dart_CreateIsolate(
+      script_uri, NULL, isolate_snapshot_data, isolate_snapshot_instructions,
+      app_isolate_shared_data, app_isolate_shared_instructions, flags,
+      isolate_data, error);
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
   if (isolate == NULL) {
     delete isolate_data;
@@ -523,7 +502,7 @@
 
   // Load embedder specific bits and return.
   if (!VmService::Setup(Options::vm_service_server_ip(),
-                        Options::vm_service_server_port(), skip_library_load,
+                        Options::vm_service_server_port(),
                         Options::vm_service_dev_mode(),
                         Options::trace_loading(), Options::deterministic())) {
     *error = strdup(VmService::GetErrorMessage());
@@ -643,17 +622,9 @@
   if (isolate == NULL) {
     delete isolate_data;
   } else {
-#if !defined(DART_PRECOMPILED_RUNTIME)
-    bool set_native_resolvers =
-        (kernel_buffer != NULL) || (isolate_snapshot_data != NULL);
-#else
-    bool set_native_resolvers = isolate_snapshot_data != NULL;
-#endif  // !defined(DART_PRECOMPILED_RUNTIME)
-
-    created_isolate =
-        IsolateSetupHelper(isolate, is_main_isolate, script_uri, package_root,
-                           packages_config, set_native_resolvers,
-                           isolate_run_app_snapshot, flags, error, exit_code);
+    created_isolate = IsolateSetupHelper(
+        isolate, is_main_isolate, script_uri, package_root, packages_config,
+        isolate_run_app_snapshot, flags, error, exit_code);
   }
   int64_t end = Dart_TimelineGetMicros();
   Dart_TimelineEvent("CreateIsolateAndSetupHelper", start, end,
@@ -715,8 +686,17 @@
 }
 
 static void OnIsolateShutdown(void* callback_data) {
+  Dart_EnterScope();
+
+  Dart_Handle sticky_error = Dart_GetStickyError();
+  if (!Dart_IsNull(sticky_error) && !Dart_IsFatalError(sticky_error)) {
+    Log::PrintErr("%s\n", Dart_GetError(sticky_error));
+  }
+
   IsolateData* isolate_data = reinterpret_cast<IsolateData*>(callback_data);
   isolate_data->OnIsolateShutdown();
+
+  Dart_ExitScope();
 }
 
 static void DeleteIsolateData(void* callback_data) {
@@ -802,7 +782,8 @@
 }
 
 static void LoadBytecode() {
-  if (Dart_IsVMFlagSet("enable_interpreter")) {
+  if (Dart_IsVMFlagSet("enable_interpreter") ||
+      Dart_IsVMFlagSet("use_bytecode_compiler")) {
     Dart_Handle result = Dart_ReadAllBytecode();
     CHECK_RESULT(result);
   }
@@ -861,25 +842,12 @@
   } else {
     // Lookup the library of the root script.
     Dart_Handle root_lib = Dart_RootLibrary();
-    // Import the root library into the builtin library so that we can easily
-    // lookup the main entry point exported from the root library.
-    result = Dart_LibraryImportLibrary(DartUtils::LookupBuiltinLib(), root_lib,
-                                       Dart_Null());
 
 #if !defined(DART_PRECOMPILED_RUNTIME)
     if (Options::compile_all()) {
       result = Dart_CompileAll();
       CHECK_RESULT(result);
     }
-
-    if (Options::parse_all()) {
-      result = Dart_ParseAll();
-      CHECK_RESULT(result);
-      Dart_ExitScope();
-      // Shutdown the isolate.
-      Dart_ShutdownIsolate();
-      return false;
-    }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
     if (Dart_IsNull(root_lib)) {
diff --git a/runtime/bin/main_options.h b/runtime/bin/main_options.h
index 057cfed..1c56d0b 100644
--- a/runtime/bin/main_options.h
+++ b/runtime/bin/main_options.h
@@ -35,7 +35,6 @@
 #define BOOL_OPTIONS_LIST(V)                                                   \
   V(version, version_option)                                                   \
   V(compile_all, compile_all)                                                  \
-  V(parse_all, parse_all)                                                      \
   V(disable_service_origin_check, vm_service_dev_mode)                         \
   V(deterministic, deterministic)                                              \
   V(trace_loading, trace_loading)                                              \
diff --git a/runtime/bin/run_vm_tests.cc b/runtime/bin/run_vm_tests.cc
index c90c210..2240355 100644
--- a/runtime/bin/run_vm_tests.cc
+++ b/runtime/bin/run_vm_tests.cc
@@ -245,18 +245,20 @@
   int arg_pos = 1;
   bool start_kernel_isolate = false;
   if (strstr(argv[arg_pos], "--dfe") == argv[arg_pos]) {
-    const char* delim = strstr(argv[1], "=");
+    const char* delim = strstr(argv[arg_pos], "=");
     if (delim == NULL || strlen(delim + 1) == 0) {
-      bin::Log::PrintErr("Invalid value for the option: %s\n", argv[1]);
+      bin::Log::PrintErr("Invalid value for the option: %s\n", argv[arg_pos]);
       PrintUsage();
       return 1;
     }
     kernel_snapshot = strdup(delim + 1);
-    // VM needs '--use-dart-frontend' option, which we will insert in place
-    // of '--dfe' option.
-    argv[arg_pos] = strdup("--use-dart-frontend");
+    // Remove this flag from the list by shifting all arguments down.
+    for (intptr_t i = arg_pos; i < argc - 1; i++) {
+      argv[i] = argv[i + 1];
+    }
+    argv[argc - 1] = nullptr;
+    argc--;
     start_kernel_isolate = true;
-    ++arg_pos;
   }
 
   if (arg_pos == argc - 1 && strcmp(argv[arg_pos], "--benchmarks") == 0) {
@@ -275,8 +277,12 @@
   bin::TimerUtils::InitOnce();
   bin::EventHandler::Start();
 
-  const char* error = Flags::ProcessCommandLineFlags(dart_argc, dart_argv);
-  ASSERT(error == NULL);
+  char* error = Flags::ProcessCommandLineFlags(dart_argc, dart_argv);
+  if (error != NULL) {
+    bin::Log::PrintErr("Failed to parse flags: %s\n", error);
+    free(error);
+    return 1;
+  }
 
   TesterState::vm_snapshot_data = dart::bin::vm_snapshot_data;
   TesterState::create_callback = CreateIsolateAndSetup;
@@ -286,13 +292,17 @@
 
   error = Dart::Init(
       dart::bin::vm_snapshot_data, dart::bin::vm_snapshot_instructions,
-      CreateIsolateAndSetup /* create */, NULL /* shutdown */,
-      CleanupIsolate /* cleanup */, NULL /* thread_exit */,
+      CreateIsolateAndSetup /* create */, nullptr /* shutdown */,
+      CleanupIsolate /* cleanup */, nullptr /* thread_exit */,
       dart::bin::DartUtils::OpenFile, dart::bin::DartUtils::ReadFile,
       dart::bin::DartUtils::WriteFile, dart::bin::DartUtils::CloseFile,
-      NULL /* entropy_source */, NULL /* get_service_assets */,
+      nullptr /* entropy_source */, nullptr /* get_service_assets */,
       start_kernel_isolate);
-  ASSERT(error == NULL);
+  if (error != nullptr) {
+    bin::Log::PrintErr("Failed to initialize VM: %s\n", error);
+    free(error);
+    return 1;
+  }
 
   // Apply the filter to all registered tests.
   TestCaseBase::RunAll();
@@ -300,7 +310,11 @@
   Benchmark::RunAll(argv[0]);
 
   error = Dart::Cleanup();
-  ASSERT(error == NULL);
+  if (error != nullptr) {
+    bin::Log::PrintErr("Failed shutdown VM: %s\n", error);
+    free(error);
+    return 1;
+  }
 
   TestCaseBase::RunAllRaw();
 
diff --git a/runtime/bin/socket.cc b/runtime/bin/socket.cc
index d8ee1bc..85cb8e0 100644
--- a/runtime/bin/socket.cc
+++ b/runtime/bin/socket.cc
@@ -296,7 +296,10 @@
   int64_t port = DartUtils::GetInt64ValueCheckRange(port_arg, 0, 65535);
   SocketAddress::SetAddrPort(&addr, port);
   bool reuse_addr = DartUtils::GetBooleanValue(Dart_GetNativeArgument(args, 3));
-  intptr_t socket = Socket::CreateBindDatagram(addr, reuse_addr);
+  bool reuse_port = DartUtils::GetBooleanValue(Dart_GetNativeArgument(args, 4));
+  int ttl = DartUtils::GetIntegerValue(Dart_GetNativeArgument(args, 5));
+  intptr_t socket =
+      Socket::CreateBindDatagram(addr, reuse_addr, reuse_port, ttl);
   if (socket >= 0) {
     Socket::SetSocketIdNativeField(Dart_GetNativeArgument(args, 0), socket,
                                    Socket::kFinalizerNormal);
diff --git a/runtime/bin/socket.h b/runtime/bin/socket.h
index 05a25121..24d95b9 100644
--- a/runtime/bin/socket.h
+++ b/runtime/bin/socket.h
@@ -70,7 +70,10 @@
                                     const RawAddr& source_addr);
   // Creates a datagram socket which is bound. The port to bind
   // to is specified as the port component of the RawAddr structure.
-  static intptr_t CreateBindDatagram(const RawAddr& addr, bool reuseAddress);
+  static intptr_t CreateBindDatagram(const RawAddr& addr,
+                                     bool reuseAddress,
+                                     bool reusePort,
+                                     int ttl = 1);
 
   static CObject* LookupRequest(const CObjectArray& request);
   static CObject* ListInterfacesRequest(const CObjectArray& request);
diff --git a/runtime/bin/socket_android.cc b/runtime/bin/socket_android.cc
index c3409ca..7d07146 100644
--- a/runtime/bin/socket_android.cc
+++ b/runtime/bin/socket_android.cc
@@ -10,6 +10,7 @@
 #include <errno.h>  // NOLINT
 
 #include "bin/fdutils.h"
+#include "bin/log.h"
 #include "platform/signal_blocker.h"
 
 namespace dart {
@@ -79,7 +80,10 @@
   return Connect(fd, addr);
 }
 
-intptr_t Socket::CreateBindDatagram(const RawAddr& addr, bool reuseAddress) {
+intptr_t Socket::CreateBindDatagram(const RawAddr& addr,
+                                    bool reuseAddress,
+                                    bool reusePort,
+                                    int ttl) {
   intptr_t fd;
 
   fd = NO_RETRY_EXPECTED(socket(addr.addr.sa_family, SOCK_DGRAM, IPPROTO_UDP));
@@ -98,6 +102,17 @@
         setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)));
   }
 
+  if (reusePort) {
+    // ignore reusePort - not supported on this platform.
+    Log::PrintErr(
+        "Dart Socket ERROR: %s:%d: `reusePort` not supported for "
+        "Android.",
+        __FILE__, __LINE__);
+  }
+
+  VOID_NO_RETRY_EXPECTED(
+      setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)));
+
   if (NO_RETRY_EXPECTED(
           bind(fd, &addr.addr, SocketAddress::GetAddrLength(addr))) < 0) {
     FDUtils::SaveErrorAndClose(fd);
diff --git a/runtime/bin/socket_fuchsia.cc b/runtime/bin/socket_fuchsia.cc
index 8fb2d43..9655e23 100644
--- a/runtime/bin/socket_fuchsia.cc
+++ b/runtime/bin/socket_fuchsia.cc
@@ -109,7 +109,10 @@
   return -1;
 }
 
-intptr_t Socket::CreateBindDatagram(const RawAddr& addr, bool reuseAddress) {
+intptr_t Socket::CreateBindDatagram(const RawAddr& addr,
+                                    bool reuseAddress,
+                                    bool reusePort,
+                                    int ttl) {
   LOG_ERR("SocketBase::CreateBindDatagram is unimplemented\n");
   UNIMPLEMENTED();
   return -1;
diff --git a/runtime/bin/socket_linux.cc b/runtime/bin/socket_linux.cc
index 2d7f546..6d7e874 100644
--- a/runtime/bin/socket_linux.cc
+++ b/runtime/bin/socket_linux.cc
@@ -10,7 +10,9 @@
 #include <errno.h>  // NOLINT
 
 #include "bin/fdutils.h"
+#include "bin/log.h"
 #include "platform/signal_blocker.h"
+#include "platform/utils.h"
 
 namespace dart {
 namespace bin {
@@ -71,7 +73,10 @@
   return Connect(fd, addr);
 }
 
-intptr_t Socket::CreateBindDatagram(const RawAddr& addr, bool reuseAddress) {
+intptr_t Socket::CreateBindDatagram(const RawAddr& addr,
+                                    bool reuseAddress,
+                                    bool reusePort,
+                                    int ttl) {
   intptr_t fd;
 
   fd = NO_RETRY_EXPECTED(socket(addr.addr.sa_family,
@@ -87,6 +92,33 @@
         setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)));
   }
 
+  if (reusePort) {
+#ifdef SO_REUSEPORT  // Not all Linux versions support this.
+    int optval = 1;
+    int reuse_port_success =
+        setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval));
+    // Even if it's defined, we might be running on a kernel
+    // that doesn't support it at runtime.
+    if (reuse_port_success != 0) {
+      if (errno == EINTR) {
+        FATAL("Unexpected EINTR errno");
+      }
+      const int kBufferSize = 1024;
+      char error_buf[kBufferSize];
+      Log::PrintErr("Dart Socket ERROR: %s:%d: %s.", __FILE__, __LINE__,
+                    Utils::StrError(errno, error_buf, kBufferSize));
+    }
+#else   // !defined SO_REUSEPORT
+    Log::PrintErr(
+        "Dart Socket ERROR: %s:%d: `reusePort` not available on this Linux "
+        "version.",
+        __FILE__, __LINE__);
+#endif  // SO_REUSEPORT
+  }
+
+  VOID_NO_RETRY_EXPECTED(
+      setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)));
+
   if (NO_RETRY_EXPECTED(
           bind(fd, &addr.addr, SocketAddress::GetAddrLength(addr))) < 0) {
     FDUtils::SaveErrorAndClose(fd);
diff --git a/runtime/bin/socket_macos.cc b/runtime/bin/socket_macos.cc
index e45c1a4..7e2f8f0 100644
--- a/runtime/bin/socket_macos.cc
+++ b/runtime/bin/socket_macos.cc
@@ -79,7 +79,10 @@
   return Connect(fd, addr);
 }
 
-intptr_t Socket::CreateBindDatagram(const RawAddr& addr, bool reuseAddress) {
+intptr_t Socket::CreateBindDatagram(const RawAddr& addr,
+                                    bool reuseAddress,
+                                    bool reusePort,
+                                    int ttl) {
   intptr_t fd;
 
   fd = NO_RETRY_EXPECTED(socket(addr.addr.sa_family, SOCK_DGRAM, IPPROTO_UDP));
@@ -98,6 +101,15 @@
         setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)));
   }
 
+  if (reusePort) {
+    int optval = 1;
+    VOID_NO_RETRY_EXPECTED(
+        setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof(optval)));
+  }
+
+  VOID_NO_RETRY_EXPECTED(
+      setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl)));
+
   if (NO_RETRY_EXPECTED(
           bind(fd, &addr.addr, SocketAddress::GetAddrLength(addr))) < 0) {
     FDUtils::SaveErrorAndClose(fd);
diff --git a/runtime/bin/socket_patch.dart b/runtime/bin/socket_patch.dart
index b3593cb..9d11929 100644
--- a/runtime/bin/socket_patch.dart
+++ b/runtime/bin/socket_patch.dart
@@ -95,6 +95,12 @@
   }
 }
 
+void _throwOnBadTtl(int ttl) {
+  if (ttl == null || ttl < 1 || ttl > 255) {
+    throw new ArgumentError('Invalid ttl $ttl');
+  }
+}
+
 class _InternetAddress implements InternetAddress {
   static const int _addressLoopbackIPv4 = 0;
   static const int _addressLoopbackIPv6 = 1;
@@ -578,14 +584,15 @@
   }
 
   static Future<_NativeSocket> bindDatagram(
-      host, int port, bool reuseAddress) async {
+      host, int port, bool reuseAddress, bool reusePort, int ttl) async {
     _throwOnBadPort(port);
+    _throwOnBadTtl(ttl);
 
     final address = await _resolveHost(host);
 
     var socket = new _NativeSocket.datagram(address);
-    var result =
-        socket.nativeCreateBindDatagram(address._in_addr, port, reuseAddress);
+    var result = socket.nativeCreateBindDatagram(
+        address._in_addr, port, reuseAddress, reusePort, ttl);
     if (result is OSError) {
       throw new SocketException("Failed to create datagram socket",
           osError: result, address: address, port: port);
@@ -1130,8 +1137,8 @@
   bool isBindError(int errorNumber) native "SocketBase_IsBindError";
   nativeCreateBindListen(List<int> addr, int port, int backlog, bool v6Only,
       bool shared) native "ServerSocket_CreateBindListen";
-  nativeCreateBindDatagram(List<int> addr, int port, bool reuseAddress)
-      native "Socket_CreateBindDatagram";
+  nativeCreateBindDatagram(List<int> addr, int port, bool reuseAddress,
+      bool reusePort, int ttl) native "Socket_CreateBindDatagram";
   nativeAccept(_NativeSocket socket) native "ServerSocket_Accept";
   int nativeGetPort() native "Socket_GetPort";
   List nativeGetRemotePeer() native "Socket_GetRemotePeer";
@@ -1775,8 +1782,8 @@
 class RawDatagramSocket {
   @patch
   static Future<RawDatagramSocket> bind(host, int port,
-      {bool reuseAddress: true}) {
-    return _RawDatagramSocket.bind(host, port, reuseAddress);
+      {bool reuseAddress: true, bool reusePort: false, int ttl: 1}) {
+    return _RawDatagramSocket.bind(host, port, reuseAddress, reusePort, ttl);
   }
 }
 
@@ -1814,9 +1821,11 @@
         }));
   }
 
-  static Future<RawDatagramSocket> bind(host, int port, bool reuseAddress) {
+  static Future<RawDatagramSocket> bind(
+      host, int port, bool reuseAddress, bool reusePort, int ttl) {
     _throwOnBadPort(port);
-    return _NativeSocket.bindDatagram(host, port, reuseAddress)
+    _throwOnBadTtl(ttl);
+    return _NativeSocket.bindDatagram(host, port, reuseAddress, reusePort, ttl)
         .then((socket) => new _RawDatagramSocket(socket));
   }
 
diff --git a/runtime/bin/socket_win.cc b/runtime/bin/socket_win.cc
index 1595aba..c02c1bb 100644
--- a/runtime/bin/socket_win.cc
+++ b/runtime/bin/socket_win.cc
@@ -147,7 +147,10 @@
   }
 }
 
-intptr_t Socket::CreateBindDatagram(const RawAddr& addr, bool reuseAddress) {
+intptr_t Socket::CreateBindDatagram(const RawAddr& addr,
+                                    bool reuseAddress,
+                                    bool reusePort,
+                                    int ttl) {
   SOCKET s = socket(addr.ss.ss_family, SOCK_DGRAM, IPPROTO_UDP);
   if (s == INVALID_SOCKET) {
     return -1;
@@ -166,6 +169,23 @@
     }
   }
 
+  if (reusePort) {
+    // ignore reusePort - not supported on this platform.
+    Log::PrintErr(
+        "Dart Socket ERROR: %s:%d: `reusePort` not supported for "
+        "Windows." __FILE__,
+        __LINE__);
+  }
+
+  status = setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL,
+                      reinterpret_cast<const char*>(&ttl), sizeof(ttl));
+  if (status == SOCKET_ERROR) {
+    DWORD rc = WSAGetLastError();
+    closesocket(s);
+    SetLastError(rc);
+    return -1;
+  }
+
   status = bind(s, &addr.addr, SocketAddress::GetAddrLength(addr));
   if (status == SOCKET_ERROR) {
     DWORD rc = WSAGetLastError();
diff --git a/runtime/bin/vmservice_impl.cc b/runtime/bin/vmservice_impl.cc
index 02f4567..1ed1327 100644
--- a/runtime/bin/vmservice_impl.cc
+++ b/runtime/bin/vmservice_impl.cc
@@ -30,67 +30,7 @@
     return false;                                                              \
   }
 
-#define kLibrarySourceNamePrefix "/vmservice"
 static const char* const kVMServiceIOLibraryUri = "dart:vmservice_io";
-static const char* const kVMServiceIOLibraryScriptResourceName =
-    "vmservice_io.dart";
-
-struct ResourcesEntry {
-  const char* path_;
-  const char* resource_;
-  int length_;
-};
-
-#if defined(DART_PRECOMPILED_RUNTIME) || defined(DART_DART2_ONLY_MODE)
-ResourcesEntry __service_bin_resources_[] = {{NULL, NULL, 0}};
-#else
-extern ResourcesEntry __service_bin_resources_[];
-#endif
-
-class Resources {
- public:
-  static const int kNoSuchInstance = -1;
-  static int ResourceLookup(const char* path, const char** resource) {
-    ResourcesEntry* table = ResourcesTable();
-    for (int i = 0; table[i].path_ != NULL; i++) {
-      const ResourcesEntry& entry = table[i];
-      if (strcmp(path, entry.path_) == 0) {
-        *resource = entry.resource_;
-        ASSERT(entry.length_ > 0);
-        return entry.length_;
-      }
-    }
-    return kNoSuchInstance;
-  }
-
-  static const char* Path(int idx) {
-    ASSERT(idx >= 0);
-    ResourcesEntry* entry = At(idx);
-    if (entry == NULL) {
-      return NULL;
-    }
-    ASSERT(entry->path_ != NULL);
-    return entry->path_;
-  }
-
- private:
-  static ResourcesEntry* At(int idx) {
-    ASSERT(idx >= 0);
-    ResourcesEntry* table = ResourcesTable();
-    for (int i = 0; table[i].path_ != NULL; i++) {
-      if (idx == i) {
-        return &table[i];
-      }
-    }
-    return NULL;
-  }
-  static ResourcesEntry* ResourcesTable() {
-    return &__service_bin_resources_[0];
-  }
-
-  DISALLOW_ALLOCATION();
-  DISALLOW_IMPLICIT_CONSTRUCTORS(Resources);
-};
 
 void NotifyServerState(Dart_NativeArguments args) {
   Dart_EnterScope();
@@ -149,27 +89,6 @@
 const char* VmService::error_msg_ = NULL;
 char VmService::server_uri_[kServerUriStringBufferSize];
 
-bool VmService::LoadForGenPrecompiled(bool use_dart_frontend) {
-  Dart_Handle result;
-  Dart_SetLibraryTagHandler(LibraryTagHandler);
-  Dart_Handle library;
-  if (use_dart_frontend) {
-    // The vmservice_io library should have already been loaded as part of
-    // creating the service isolate, we should be able to look it up.
-    library =
-        Dart_LookupLibrary(Dart_NewStringFromCString(kVMServiceIOLibraryUri));
-  } else {
-    library = LookupOrLoadLibrary(kVMServiceIOLibraryScriptResourceName);
-  }
-  ASSERT(library != Dart_Null());
-  SHUTDOWN_ON_ERROR(library);
-  result = Dart_SetNativeResolver(library, VmServiceIONativeResolver, NULL);
-  SHUTDOWN_ON_ERROR(result);
-  result = Dart_FinalizeLoading(false);
-  SHUTDOWN_ON_ERROR(result);
-  return true;
-}
-
 void VmService::SetNativeResolver() {
   Dart_Handle url = DartUtils::NewString(kVMServiceIOLibraryUri);
   Dart_Handle library = Dart_LookupLibrary(url);
@@ -180,7 +99,6 @@
 
 bool VmService::Setup(const char* server_ip,
                       intptr_t server_port,
-                      bool running_precompiled,
                       bool dev_mode_server,
                       bool trace_loading,
                       bool deterministic) {
@@ -197,25 +115,13 @@
                                               trace_loading);
   SHUTDOWN_ON_ERROR(result);
 
-  if (running_precompiled) {
-    Dart_Handle url = DartUtils::NewString(kVMServiceIOLibraryUri);
-    Dart_Handle library = Dart_LookupLibrary(url);
-    SHUTDOWN_ON_ERROR(library);
-    result = Dart_SetRootLibrary(library);
-    SHUTDOWN_ON_ERROR(library);
-    result = Dart_SetNativeResolver(library, VmServiceIONativeResolver, NULL);
-    SHUTDOWN_ON_ERROR(result);
-  } else {
-    // Load main script.
-    Dart_SetLibraryTagHandler(LibraryTagHandler);
-    Dart_Handle library = LoadScript(kVMServiceIOLibraryScriptResourceName);
-    ASSERT(library != Dart_Null());
-    SHUTDOWN_ON_ERROR(library);
-    result = Dart_SetNativeResolver(library, VmServiceIONativeResolver, NULL);
-    SHUTDOWN_ON_ERROR(result);
-    result = Dart_FinalizeLoading(false);
-    SHUTDOWN_ON_ERROR(result);
-  }
+  Dart_Handle url = DartUtils::NewString(kVMServiceIOLibraryUri);
+  Dart_Handle library = Dart_LookupLibrary(url);
+  SHUTDOWN_ON_ERROR(library);
+  result = Dart_SetRootLibrary(library);
+  SHUTDOWN_ON_ERROR(library);
+  result = Dart_SetNativeResolver(library, VmServiceIONativeResolver, NULL);
+  SHUTDOWN_ON_ERROR(result);
 
   // Make runnable.
   Dart_ExitScope();
@@ -229,7 +135,7 @@
   Dart_EnterIsolate(isolate);
   Dart_EnterScope();
 
-  Dart_Handle library = Dart_RootLibrary();
+  library = Dart_RootLibrary();
   SHUTDOWN_ON_ERROR(library);
 
   // Set HTTP server state.
@@ -309,77 +215,5 @@
   server_uri_[kServerUriStringBufferSize - 1] = '\0';
 }
 
-Dart_Handle VmService::GetSource(const char* name) {
-  const intptr_t kBufferSize = 512;
-  char buffer[kBufferSize];
-  snprintf(&buffer[0], kBufferSize - 1, "%s/%s", kLibrarySourceNamePrefix,
-           name);
-  const char* vmservice_source = NULL;
-  int r = Resources::ResourceLookup(buffer, &vmservice_source);
-  if (r == Resources::kNoSuchInstance) {
-    FATAL1("vm-service: Could not find embedded source file: %s ", buffer);
-  }
-  ASSERT(r != Resources::kNoSuchInstance);
-  return Dart_NewStringFromCString(vmservice_source);
-}
-
-Dart_Handle VmService::LoadScript(const char* name) {
-  Dart_Handle uri = Dart_NewStringFromCString(kVMServiceIOLibraryUri);
-  Dart_Handle source = GetSource(name);
-  return Dart_LoadScript(uri, Dart_Null(), source, 0, 0);
-}
-
-Dart_Handle VmService::LookupOrLoadLibrary(const char* name) {
-  Dart_Handle uri = Dart_NewStringFromCString(kVMServiceIOLibraryUri);
-  Dart_Handle library = Dart_LookupLibrary(uri);
-  if (!Dart_IsLibrary(library)) {
-    Dart_Handle source = GetSource(name);
-    library = Dart_LoadLibrary(uri, Dart_Null(), source, 0, 0);
-  }
-  return library;
-}
-
-Dart_Handle VmService::LoadSource(Dart_Handle library, const char* name) {
-  Dart_Handle uri = Dart_NewStringFromCString(name);
-  Dart_Handle source = GetSource(name);
-  return Dart_LoadSource(library, uri, Dart_Null(), source, 0, 0);
-}
-
-Dart_Handle VmService::LibraryTagHandler(Dart_LibraryTag tag,
-                                         Dart_Handle library,
-                                         Dart_Handle url) {
-  if (!Dart_IsLibrary(library)) {
-    return Dart_NewApiError("not a library");
-  }
-  if (!Dart_IsString(url)) {
-    return Dart_NewApiError("url is not a string");
-  }
-  const char* url_string = NULL;
-  Dart_Handle result = Dart_StringToCString(url, &url_string);
-  if (Dart_IsError(result)) {
-    return result;
-  }
-  Dart_Handle library_url = Dart_LibraryUrl(library);
-  const char* library_url_string = NULL;
-  result = Dart_StringToCString(library_url, &library_url_string);
-  if (Dart_IsError(result)) {
-    return result;
-  }
-  if (tag == Dart_kImportTag) {
-    UNREACHABLE();
-    return Dart_Null();
-  }
-  ASSERT((tag == Dart_kSourceTag) || (tag == Dart_kCanonicalizeUrl));
-  if (tag == Dart_kCanonicalizeUrl) {
-    // url is already canonicalized.
-    return url;
-  }
-  Dart_Handle source = GetSource(url_string);
-  if (Dart_IsError(source)) {
-    return source;
-  }
-  return Dart_LoadSource(library, url, Dart_Null(), source, 0, 0);
-}
-
 }  // namespace bin
 }  // namespace dart
diff --git a/runtime/bin/vmservice_impl.h b/runtime/bin/vmservice_impl.h
index 04b0633..0a40178 100644
--- a/runtime/bin/vmservice_impl.h
+++ b/runtime/bin/vmservice_impl.h
@@ -14,11 +14,8 @@
 
 class VmService {
  public:
-  static bool LoadForGenPrecompiled(bool use_dart_frontend);
-
   static bool Setup(const char* server_ip,
                     intptr_t server_port,
-                    bool running_precompiled,
                     bool dev_mode_server,
                     bool trace_loading,
                     bool deterministic);
@@ -36,15 +33,6 @@
   friend void NotifyServerState(Dart_NativeArguments args);
 
   static void SetServerAddress(const char* server_uri_);
-  static Dart_Handle GetSource(const char* name);
-  static Dart_Handle LoadScript(const char* name);
-  static Dart_Handle LookupOrLoadLibrary(const char* name);
-  static Dart_Handle LoadSource(Dart_Handle library, const char* name);
-  static Dart_Handle LoadResources(Dart_Handle library);
-  static Dart_Handle LoadResource(Dart_Handle library, const char* name);
-  static Dart_Handle LibraryTagHandler(Dart_LibraryTag tag,
-                                       Dart_Handle library,
-                                       Dart_Handle url);
 
   static const char* error_msg_;
   static char server_uri_[kServerUriStringBufferSize];
diff --git a/runtime/include/dart_api.h b/runtime/include/dart_api.h
index 93dcaf1..a4261d8 100644
--- a/runtime/include/dart_api.h
+++ b/runtime/include/dart_api.h
@@ -2897,36 +2897,6 @@
                                                     Dart_Handle url);
 
 /**
- * Called by the embedder to provide the source for the root script to
- * the VM.  This function should be called in response to a
- * Dart_kScriptTag tag handler request (See Dart_LibraryTagHandler,
- * above).
- *
- * \param url The original url requested for the script.
- *
- * \param resolved_url The actual url which was loaded.  This parameter
- *   is optionally provided to support isolate reloading.  A value of
- *   Dart_Null() indicates that the resolved url was the same as the
- *   requested url.
- *
- * \param source The contents of the url.
- *
- * \param line_offset is the number of text lines before the
- *   first line of the Dart script in the containing file.
- *
- * \param col_offset is the number of characters before the first character
- *   in the first line of the Dart script.
- *
- * \return A valid handle if no error occurs during the operation.
- */
-DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle
-Dart_LoadScript(Dart_Handle url,
-                Dart_Handle resolved_url,
-                Dart_Handle source,
-                intptr_t line_offset,
-                intptr_t col_offset);
-
-/**
  * Loads the root library for the current isolate.
  *
  * Requires there to be no current root library.
@@ -3024,38 +2994,6 @@
                                                 Dart_Handle error);
 
 /**
- * Called by the embedder to provide the source for an "import"
- * directive.  This function should be called in response to a
- * Dart_kImportTag tag handler request (See Dart_LibraryTagHandler,
- * above).
- *
- * \param library The library where the "import" directive occurs.
- *
- * \param url The original url requested for the import.
- *
- * \param resolved_url The actual url which was loaded.  This parameter
- *   is optionally provided to support isolate reloading.  A value of
- *   Dart_Null() indicates that the resolved url was the same as the
- *   requested url.
- *
- * \param source The contents of the url.
- *
- * \param line_offset is the number of text lines before the
- *   first line of the Dart script in the containing file.
- *
- * \param col_offset is the number of characters before the first character
- *   in the first line of the Dart script.
- *
- * \return A valid handle if no error occurs during the operation.
- */
-DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle
-Dart_LoadLibrary(Dart_Handle url,
-                 Dart_Handle resolved_url,
-                 Dart_Handle source,
-                 intptr_t line_offset,
-                 intptr_t column_offset);
-
-/**
  * Called by the embedder to load a partial program. Does not set the root
  * library.
  *
@@ -3070,22 +3008,6 @@
                            intptr_t kernel_buffer_size);
 
 /**
- * Imports a library into another library, optionally with a prefix.
- * If no prefix is required, an empty string or Dart_Null() can be
- * supplied.
- *
- * \param library The library into which to import another library.
- * \param import The library to import.
- * \param prefix The prefix under which to import.
- *
- * \return A valid handle if no error occurs during the operation.
- */
-DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle
-Dart_LibraryImportLibrary(Dart_Handle library,
-                          Dart_Handle import,
-                          Dart_Handle prefix);
-
-/**
  * Returns a flattened list of pairs. The first element in each pair is the
  * importing library and and the second element is the imported library for each
  * import in the isolate of a library whose URI's scheme is [scheme].
@@ -3097,51 +3019,6 @@
 DART_EXPORT Dart_Handle Dart_GetImportsOfScheme(Dart_Handle scheme);
 
 /**
- * Called by the embedder to provide the source for a "part of"
- * directive.  This function should be called in response to a
- * Dart_kSourceTag tag handler request (See Dart_LibraryTagHandler,
- * above).
- *
- * \param library The library where the "part of" directive occurs.
- *
- * \param url The original url requested for the part.
- *
- * \param resolved_url The actual url which was loaded.  This parameter
- *   is optionally provided to support isolate reloading.  A value of
- *   Dart_Null() indicates that the resolved url was the same as the
- *   requested url.
- *
- * \param source The contents of the url.
- *
- * \param line_offset is the number of text lines before the
- *   first line of the Dart script in the containing file.
- *
- * \param col_offset is the number of characters before the first character
- *   in the first line of the Dart script.
- *
- * \return A valid handle if no error occurs during the operation.
- */
-DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle
-Dart_LoadSource(Dart_Handle library,
-                Dart_Handle url,
-                Dart_Handle resolved_url,
-                Dart_Handle source,
-                intptr_t line_offset,
-                intptr_t column_offset);
-
-/**
- * Loads a patch source string into a library.
- *
- * \param library A library
- * \param url A url identifying the origin of the patch source
- * \param source A string of Dart patch source
- */
-DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle
-Dart_LibraryLoadPatch(Dart_Handle library,
-                      Dart_Handle url,
-                      Dart_Handle patch_source);
-
-/**
  * Indicates that all outstanding load requests have been satisfied.
  * This finalizes all the new classes loaded and optionally completes
  * deferred library futures.
diff --git a/runtime/include/dart_native_api.h b/runtime/include/dart_native_api.h
index 9959ef4..ae31e47 100644
--- a/runtime/include/dart_native_api.h
+++ b/runtime/include/dart_native_api.h
@@ -171,10 +171,4 @@
 
 DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_ReadAllBytecode();
 
-/**
- * Parses all loaded functions in the current isolate..
- *
- */
-DART_EXPORT DART_WARN_UNUSED_RESULT Dart_Handle Dart_ParseAll();
-
 #endif /* INCLUDE_DART_NATIVE_API_H_ */ /* NOLINT */
diff --git a/runtime/include/dart_tools_api.h b/runtime/include/dart_tools_api.h
index 707f726..5452c25 100644
--- a/runtime/include/dart_tools_api.h
+++ b/runtime/include/dart_tools_api.h
@@ -5,7 +5,7 @@
 #ifndef RUNTIME_INCLUDE_DART_TOOLS_API_H_
 #define RUNTIME_INCLUDE_DART_TOOLS_API_H_
 
-#include "dart_api.h"
+#include "include/dart_api.h"
 
 /** \mainpage Dart Tools Embedding API Reference
  *
@@ -217,7 +217,7 @@
  * \return Success if the callbacks were added.  Otherwise, returns an
  *   error handle.
  */
-DART_EXPORT Dart_Handle Dart_SetServiceStreamCallbacks(
+DART_EXPORT char* Dart_SetServiceStreamCallbacks(
     Dart_ServiceStreamListenCallback listen_callback,
     Dart_ServiceStreamCancelCallback cancel_callback);
 
@@ -266,8 +266,8 @@
  */
 typedef bool (*Dart_FileModifiedCallback)(const char* url, int64_t since);
 
-DART_EXPORT Dart_Handle
-Dart_SetFileModifiedCallback(Dart_FileModifiedCallback file_modified_callback);
+DART_EXPORT char* Dart_SetFileModifiedCallback(
+    Dart_FileModifiedCallback file_modified_callback);
 
 /**
  * Returns true if isolate is currently reloading.
@@ -442,4 +442,48 @@
     Dart_EmbedderTimelineStartRecording start_recording,
     Dart_EmbedderTimelineStopRecording stop_recording);
 
+/*
+ * =======
+ * Metrics
+ * =======
+ */
+
+/**
+ * Return metrics gathered for the VM and individual isolates.
+ *
+ * NOTE: Metrics are not available in PRODUCT builds of Dart.
+ * Calling the metric functions on a PRODUCT build might return invalid metrics.
+ */
+DART_EXPORT int64_t Dart_VMIsolateCountMetric();  // Counter
+DART_EXPORT int64_t Dart_VMCurrentRSSMetric();    // Byte
+DART_EXPORT int64_t Dart_VMPeakRSSMetric();       // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapOldUsedMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapOldUsedMaxMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapOldCapacityMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapOldCapacityMaxMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapOldExternalMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapNewUsedMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapNewUsedMaxMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapNewCapacityMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapNewCapacityMaxMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapNewExternalMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapGlobalUsedMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateHeapGlobalUsedMaxMetric(Dart_Isolate isolate);  // Byte
+DART_EXPORT int64_t
+Dart_IsolateRunnableLatencyMetric(Dart_Isolate isolate);  // Microsecond
+DART_EXPORT int64_t
+Dart_IsolateRunnableHeapSizeMetric(Dart_Isolate isolate);  // Byte
+
 #endif  // RUNTIME_INCLUDE_DART_TOOLS_API_H_
diff --git a/runtime/lib/bigint_patch.dart b/runtime/lib/bigint_patch.dart
index aa33a6e..0ae7425 100644
--- a/runtime/lib/bigint_patch.dart
+++ b/runtime/lib/bigint_patch.dart
@@ -1082,7 +1082,7 @@
   /// The `multiplicandDigits` in the range `i` to `i`+`n`-1 are the
   /// multiplicand digits.
   ///
-  /// The `acculumatorDigits` in the range `j` to `j`+`n`-1 are the accumulator
+  /// The `accumulatorDigits` in the range `j` to `j`+`n`-1 are the accumulator
   /// digits.
   ///
   /// Concretely:
@@ -1132,7 +1132,7 @@
   ///
   /// The `xDigits` in the range `i` to `used`-1 are the multiplicand digits.
   ///
-  /// The `acculumatorDigits` in the range 2*`i` to `i`+`used`-1 are the
+  /// The `accumulatorDigits` in the range 2*`i` to `i`+`used`-1 are the
   /// accumulator digits.
   ///
   /// Concretely:
diff --git a/runtime/lib/errors_patch.dart b/runtime/lib/errors_patch.dart
index d5567fb..96ed0ac 100644
--- a/runtime/lib/errors_patch.dart
+++ b/runtime/lib/errors_patch.dart
@@ -586,26 +586,6 @@
   String toString() => _errorMsg;
 }
 
-@pragma("vm:entry-point")
-dynamic _classRangeAssert(int position, dynamic instance, _Type type, int cid,
-    int lowerLimit, int upperLimit) {
-  if ((cid < lowerLimit || cid > upperLimit) && instance != null) {
-    _TypeError._throwNew(position, instance, type, " in type cast", null);
-  }
-
-  return instance;
-}
-
-@pragma("vm:entry-point")
-dynamic _classIdEqualsAssert(
-    int position, dynamic instance, _Type type, int cid, int otherCid) {
-  if (cid != otherCid && instance != null) {
-    _TypeError._throwNew(position, instance, type, " in type cast", null);
-  }
-
-  return instance;
-}
-
 /// Used by Fasta to report a runtime error when a final field with an
 /// initializer is also initialized in a generative constructor.
 ///
diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
index 249efd3..7620f94 100644
--- a/runtime/lib/mirrors.cc
+++ b/runtime/lib/mirrors.cc
@@ -686,50 +686,54 @@
     canonical_uri ^= result.raw();
   }
 
-  // Create a new library if it does not exist yet.
+  // Return the existing library if it has already been loaded.
   Library& library =
       Library::Handle(zone, Library::LookupLibrary(thread, canonical_uri));
-  if (library.IsNull()) {
-    library = Library::New(canonical_uri);
-    library.Register(thread);
+  if (!library.IsNull()) {
+    return CreateLibraryMirror(thread, library);
   }
 
-  // Ensure loading started.
-  if (library.LoadNotStarted()) {
-    library.SetLoadRequested();
-
-    isolate->BlockClassFinalization();
-    Object& result = Object::Handle(zone);
-    {
-      TransitionVMToNative transition(thread);
-      Api::Scope api_scope(thread);
-      Dart_Handle retval = handler(
-          Dart_kImportTag,
-          Api::NewHandle(thread, isolate->object_store()->root_library()),
-          Api::NewHandle(thread, canonical_uri.raw()));
-      result = Api::UnwrapHandle(retval);
+  // Request the embedder to load the library.
+  isolate->BlockClassFinalization();
+  Object& result = Object::Handle(zone);
+  {
+    TransitionVMToNative transition(thread);
+    Api::Scope api_scope(thread);
+    Dart_Handle retval =
+        handler(Dart_kImportTag,
+                Api::NewHandle(thread, isolate->object_store()->root_library()),
+                Api::NewHandle(thread, canonical_uri.raw()));
+    result = Api::UnwrapHandle(retval);
+  }
+  isolate->UnblockClassFinalization();
+  if (result.IsError()) {
+    if (result.IsLanguageError()) {
+      Exceptions::ThrowCompileTimeError(LanguageError::Cast(result));
     }
-    isolate->UnblockClassFinalization();
-    if (result.IsError()) {
-      if (result.IsLanguageError()) {
-        Exceptions::ThrowCompileTimeError(LanguageError::Cast(result));
-      }
-      Exceptions::PropagateError(Error::Cast(result));
-    }
+    Exceptions::PropagateError(Error::Cast(result));
   }
 
-  if (!library.Loaded()) {
-    // This code assumes a synchronous tag handler (which dart::bin and tonic
-    // provide). Strictly though we should complete a future in response to
-    // Dart_FinalizeLoading.
-    UNIMPLEMENTED();
-  }
+  // This code assumes a synchronous tag handler (which dart::bin and tonic
+  // provide). Strictly though we should complete a future in response to
+  // Dart_FinalizeLoading.
 
   if (!ClassFinalizer::ProcessPendingClasses()) {
     Exceptions::PropagateError(Error::Handle(thread->sticky_error()));
   }
 
-  return CreateLibraryMirror(thread, library);
+  // Prefer the tag handler's idea of which library is represented by the URI.
+  if (result.IsLibrary()) {
+    return CreateLibraryMirror(thread, Library::Cast(result));
+  }
+
+  if (result.IsNull()) {
+    library = Library::LookupLibrary(thread, canonical_uri);
+    if (!library.IsNull()) {
+      return CreateLibraryMirror(thread, library);
+    }
+  }
+
+  FATAL("Non-library from tag handler");
 }
 
 DEFINE_NATIVE_ENTRY(Mirrors_makeLocalClassMirror, 1) {
@@ -1440,6 +1444,13 @@
                       InvocationMirror::kMethod);
     UNREACHABLE();
   }
+  const Object& type_error =
+      Object::Handle(redirected_constructor.DoArgumentTypesMatch(
+          args, args_descriptor, type_arguments));
+  if (!type_error.IsNull()) {
+    Exceptions::PropagateError(Error::Cast(type_error));
+    UNREACHABLE();
+  }
 
   Instance& new_object = Instance::Handle();
   if (redirected_constructor.IsGenerativeConstructor()) {
@@ -1618,16 +1629,8 @@
       if (script.kind() == RawScript::kLibraryTag) break;
     }
     ASSERT(!script.IsNull());
-    const String& libname = String::Handle(zone, lib.name());
-    if (libname.Length() == 0) {
-      // No library declaration.
-      const String& uri = String::Handle(zone, script.url());
-      return CreateSourceLocation(uri, 1, 1);
-    }
-    const TokenStream& stream = TokenStream::Handle(zone, script.tokens());
-    TokenStream::Iterator tkit(zone, stream, TokenPosition::kMinSource);
-    if (tkit.CurrentTokenKind() == Token::kSCRIPTTAG) tkit.Advance();
-    token_pos = tkit.CurrentPosition();
+    const String& uri = String::Handle(zone, script.url());
+    return CreateSourceLocation(uri, 1, 1);
   }
 
   ASSERT(!script.IsNull());
diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc
index 58da284..b067593 100644
--- a/runtime/lib/object.cc
+++ b/runtime/lib/object.cc
@@ -204,68 +204,6 @@
   return Bool::Get(is_instance_of).raw();
 }
 
-DEFINE_NATIVE_ENTRY(Object_as, 4) {
-  const Instance& instance =
-      Instance::CheckedHandle(zone, arguments->NativeArgAt(0));
-  const TypeArguments& instantiator_type_arguments =
-      TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(1));
-  const TypeArguments& function_type_arguments =
-      TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(2));
-  AbstractType& type =
-      AbstractType::CheckedHandle(zone, arguments->NativeArgAt(3));
-  ASSERT(type.IsFinalized());
-  ASSERT(!type.IsMalformed());
-  ASSERT(!type.IsMalbounded());
-  Error& bound_error = Error::Handle(zone);
-  const bool is_instance_of =
-      instance.IsNull() ||
-      instance.IsInstanceOf(type, instantiator_type_arguments,
-                            function_type_arguments, &bound_error);
-  if (FLAG_trace_type_checks) {
-    const char* result_str = is_instance_of ? "true" : "false";
-    OS::PrintErr("Object.as: result %s\n", result_str);
-    const AbstractType& instance_type =
-        AbstractType::Handle(zone, instance.GetType(Heap::kNew));
-    OS::PrintErr("  instance type: %s\n",
-                 String::Handle(zone, instance_type.Name()).ToCString());
-    OS::PrintErr("  cast type: %s\n",
-                 String::Handle(zone, type.Name()).ToCString());
-    if (!bound_error.IsNull()) {
-      OS::PrintErr("  bound error: %s\n", bound_error.ToErrorCString());
-    }
-  }
-  if (!is_instance_of) {
-    DartFrameIterator iterator(thread,
-                               StackFrameIterator::kNoCrossThreadIteration);
-    StackFrame* caller_frame = iterator.NextFrame();
-    ASSERT(caller_frame != NULL);
-    const TokenPosition location = caller_frame->GetTokenPos();
-    const AbstractType& instance_type =
-        AbstractType::Handle(zone, instance.GetType(Heap::kNew));
-    if (!type.IsInstantiated()) {
-      // Instantiate type before reporting the error.
-      type = type.InstantiateFrom(instantiator_type_arguments,
-                                  function_type_arguments, kAllFree, NULL, NULL,
-                                  NULL, Heap::kNew);
-      // Note that the instantiated type may be malformed.
-    }
-    if (bound_error.IsNull()) {
-      Exceptions::CreateAndThrowTypeError(location, instance_type, type,
-                                          Symbols::InTypeCast(),
-                                          Object::null_string());
-    } else {
-      ASSERT(isolate->type_checks());
-      const String& bound_error_message =
-          String::Handle(zone, String::New(bound_error.ToErrorCString()));
-      Exceptions::CreateAndThrowTypeError(
-          location, instance_type, AbstractType::Handle(zone), Symbols::Empty(),
-          bound_error_message);
-    }
-    UNREACHABLE();
-  }
-  return instance.raw();
-}
-
 DEFINE_NATIVE_ENTRY(AbstractType_toString, 1) {
   const AbstractType& type =
       AbstractType::CheckedHandle(zone, arguments->NativeArgAt(0));
diff --git a/runtime/lib/object_patch.dart b/runtime/lib/object_patch.dart
index 77f359a..20e62c3 100644
--- a/runtime/lib/object_patch.dart
+++ b/runtime/lib/object_patch.dart
@@ -71,9 +71,4 @@
   bool _simpleInstanceOfTrue(type) => true;
   @pragma("vm:entry-point")
   bool _simpleInstanceOfFalse(type) => false;
-
-  // Call this function instead of inlining 'as', thus collecting type
-  // feedback. Returns receiver.
-  _as(instantiatorTypeArguments, functionTypeArguments, type)
-      native "Object_as";
 }
diff --git a/runtime/lib/typed_data_patch.dart b/runtime/lib/typed_data_patch.dart
index 9c9393f..7387c96 100644
--- a/runtime/lib/typed_data_patch.dart
+++ b/runtime/lib/typed_data_patch.dart
@@ -2889,6 +2889,7 @@
     with _IntListMixin
     implements Uint8ClampedList {
   // Method(s) implementing the List interface.
+  @pragma("vm:exact-result-type", "dart:core#_Smi")
   int operator [](int index) {
     if (index < 0 || index >= length) {
       throw new RangeError.index(index, this, "index");
diff --git a/runtime/observatory/BUILD.gn b/runtime/observatory/BUILD.gn
index 89b4836..1399468 100644
--- a/runtime/observatory/BUILD.gn
+++ b/runtime/observatory/BUILD.gn
@@ -39,8 +39,10 @@
     "-o",
     rebase_path(output),
     "--packages=" + rebase_path(".packages"),
-    "--minify",
   ]
+  if (!is_debug) {
+    args += [ "--minify" ]
+  }
 }
 
 # The rules here down to "deploy_observatory" copy files into place such that
diff --git a/runtime/observatory/lib/elements.dart b/runtime/observatory/lib/elements.dart
index f6268bd..25ef536 100644
--- a/runtime/observatory/lib/elements.dart
+++ b/runtime/observatory/lib/elements.dart
@@ -91,7 +91,6 @@
 import 'package:observatory/src/elements/subtypetestcache_view.dart';
 import 'package:observatory/src/elements/timeline_page.dart';
 import 'package:observatory/src/elements/timeline/dashboard.dart';
-import 'package:observatory/src/elements/token_stream_ref.dart';
 import 'package:observatory/src/elements/type_arguments_ref.dart';
 import 'package:observatory/src/elements/unknown_ref.dart';
 import 'package:observatory/src/elements/unlinkedcall_ref.dart';
@@ -192,7 +191,6 @@
 export 'package:observatory/src/elements/subtypetestcache_view.dart';
 export 'package:observatory/src/elements/timeline_page.dart';
 export 'package:observatory/src/elements/timeline/dashboard.dart';
-export 'package:observatory/src/elements/token_stream_ref.dart';
 export 'package:observatory/src/elements/type_arguments_ref.dart';
 export 'package:observatory/src/elements/unknown_ref.dart';
 export 'package:observatory/src/elements/unlinkedcall_ref.dart';
@@ -297,7 +295,6 @@
   SubtypeTestCacheViewElement.tag.ensureRegistration();
   TimelinePageElement.tag.ensureRegistration();
   TimelineDashboardElement.tag.ensureRegistration();
-  TokenStreamRefElement.tag.ensureRegistration();
   TypeArgumentsRefElement.tag.ensureRegistration();
   UnknownObjectRefElement.tag.ensureRegistration();
   UnlinkedCallRefElement.tag.ensureRegistration();
diff --git a/runtime/observatory/lib/models.dart b/runtime/observatory/lib/models.dart
index 5fe870b..c5a6538 100644
--- a/runtime/observatory/lib/models.dart
+++ b/runtime/observatory/lib/models.dart
@@ -51,7 +51,6 @@
 part 'src/models/objects/thread.dart';
 part 'src/models/objects/timeline.dart';
 part 'src/models/objects/timeline_event.dart';
-part 'src/models/objects/token_stream.dart';
 part 'src/models/objects/type_arguments.dart';
 part 'src/models/objects/unknown.dart';
 part 'src/models/objects/unlinked_call.dart';
diff --git a/runtime/observatory/lib/src/app/application.dart b/runtime/observatory/lib/src/app/application.dart
index 5949455..740c6ec 100644
--- a/runtime/observatory/lib/src/app/application.dart
+++ b/runtime/observatory/lib/src/app/application.dart
@@ -65,7 +65,7 @@
       // On disconnect:
       newVM.onDisconnect.then((String reason) {
         if (this.vm != newVM) {
-          // This disconnect event occured *after* a new VM was installed.
+          // This disconnect event occurred *after* a new VM was installed.
           return;
         }
         // Let anyone looking at the targets know that we have disconnected
diff --git a/runtime/observatory/lib/src/elements/helpers/any_ref.dart b/runtime/observatory/lib/src/elements/helpers/any_ref.dart
index 73064fd..693fe7e 100644
--- a/runtime/observatory/lib/src/elements/helpers/any_ref.dart
+++ b/runtime/observatory/lib/src/elements/helpers/any_ref.dart
@@ -23,7 +23,6 @@
 import 'package:observatory/src/elements/sentinel_value.dart';
 import 'package:observatory/src/elements/singletargetcache_ref.dart';
 import 'package:observatory/src/elements/subtypetestcache_ref.dart';
-import 'package:observatory/src/elements/token_stream_ref.dart';
 import 'package:observatory/src/elements/type_arguments_ref.dart';
 import 'package:observatory/src/elements/unknown_ref.dart';
 import 'package:observatory/src/elements/unlinkedcall_ref.dart';
@@ -76,8 +75,6 @@
       return new SubtypeTestCacheRefElement(isolate, ref, queue: queue);
     } else if (ref is M.TypeArgumentsRef) {
       return new TypeArgumentsRefElement(isolate, ref, queue: queue);
-    } else if (ref is M.TokenStreamRef) {
-      return new TokenStreamRefElement(isolate, ref, queue: queue);
     } else if (ref is M.UnknownObjectRef) {
       return new UnknownObjectRefElement(isolate, ref, queue: queue);
     } else if (ref is M.UnlinkedCallRef) {
diff --git a/runtime/observatory/lib/src/elements/script_inset.dart b/runtime/observatory/lib/src/elements/script_inset.dart
index 28ecc97..3a46dab 100644
--- a/runtime/observatory/lib/src/elements/script_inset.dart
+++ b/runtime/observatory/lib/src/elements/script_inset.dart
@@ -75,7 +75,7 @@
 
   ScriptInsetElement.created() : super.created();
 
-  bool get noSource => _startPos == -1;
+  bool get noSource => _startPos == -1 || _loadedScript.source == null;
 
   @override
   void attached() {
@@ -112,10 +112,10 @@
   }
 
   void render() {
-    if (noSource) {
-      children = <Element>[new SpanElement()..text = 'No source'];
-    } else if (_loadedScript == null) {
+    if (_loadedScript == null) {
       children = <Element>[new SpanElement()..text = 'Loading...'];
+    } else if (noSource) {
+      children = <Element>[new SpanElement()..text = 'No source'];
     } else {
       final table = linesTable();
       var firstBuild = false;
@@ -279,6 +279,8 @@
   }
 
   Future _computeAnnotations() async {
+    if (noSource) return;
+
     _startLine = (_startPos != null
         ? _loadedScript.tokenToLine(_startPos)
         : 1 + _loadedScript.lineOffset);
diff --git a/runtime/observatory/lib/src/elements/token_stream_ref.dart b/runtime/observatory/lib/src/elements/token_stream_ref.dart
deleted file mode 100644
index 042195d..0000000
--- a/runtime/observatory/lib/src/elements/token_stream_ref.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2013, 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:html';
-import 'dart:async';
-import 'package:observatory/models.dart' as M show IsolateRef, TokenStreamRef;
-import 'package:observatory/src/elements/helpers/rendering_scheduler.dart';
-import 'package:observatory/src/elements/helpers/tag.dart';
-import 'package:observatory/src/elements/helpers/uris.dart';
-
-class TokenStreamRefElement extends HtmlElement implements Renderable {
-  static const tag = const Tag<TokenStreamRefElement>('token-stream-ref');
-
-  RenderingScheduler<TokenStreamRefElement> _r;
-
-  Stream<RenderedEvent<TokenStreamRefElement>> get onRendered => _r.onRendered;
-
-  M.IsolateRef _isolate;
-  M.TokenStreamRef _token;
-
-  M.IsolateRef get isolate => _isolate;
-  M.TokenStreamRef get token => _token;
-
-  factory TokenStreamRefElement(M.IsolateRef isolate, M.TokenStreamRef token,
-      {RenderingQueue queue}) {
-    assert(isolate != null);
-    assert(token != null);
-    TokenStreamRefElement e = document.createElement(tag.name);
-    e._r = new RenderingScheduler<TokenStreamRefElement>(e, queue: queue);
-    e._isolate = isolate;
-    e._token = token;
-    return e;
-  }
-
-  TokenStreamRefElement.created() : super.created();
-
-  @override
-  void attached() {
-    super.attached();
-    _r.enable();
-  }
-
-  @override
-  void detached() {
-    super.detached();
-    _r.disable(notify: true);
-    children = <Element>[];
-  }
-
-  void render() {
-    final text = (_token.name == null || _token.name == '')
-        ? 'TokenStream'
-        : _token.name;
-    children = <Element>[
-      new AnchorElement(href: Uris.inspect(_isolate, object: _token))
-        ..text = text
-    ];
-  }
-}
diff --git a/runtime/observatory/lib/src/models/objects/token_stream.dart b/runtime/observatory/lib/src/models/objects/token_stream.dart
deleted file mode 100644
index 5dc5d69..0000000
--- a/runtime/observatory/lib/src/models/objects/token_stream.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-part of models;
-
-abstract class TokenStreamRef extends ObjectRef {
-  /// [optional]
-  String get name;
-}
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index a0dcf7a4..ab6ec7b 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -272,9 +272,6 @@
           case 'SubtypeTestCache':
             obj = new SubtypeTestCache._empty(owner);
             break;
-          case 'TokenStream':
-            obj = new TokenStream._empty(owner);
-            break;
           case 'UnlinkedCall':
             obj = new UnlinkedCall._empty(owner);
             break;
@@ -4166,24 +4163,6 @@
   }
 }
 
-class TokenStream extends HeapObject implements M.TokenStreamRef {
-  bool get immutable => true;
-
-  String privateKey;
-
-  TokenStream._empty(ServiceObjectOwner owner) : super._empty(owner);
-
-  void _update(Map map, bool mapIsRef) {
-    _upgradeCollection(map, isolate);
-    super._update(map, mapIsRef);
-
-    if (mapIsRef) {
-      return;
-    }
-    privateKey = map['privateKey'];
-  }
-}
-
 class CodeInstruction {
   final int address;
   final int pcOffset;
@@ -4727,6 +4706,9 @@
   if (scriptIndex == numScripts) {
     return result;
   }
+  if (script.source == null) {
+    return result;
+  }
   var ranges = report['ranges'];
   if (ranges != null) {
     for (var range in ranges) {
diff --git a/runtime/observatory/observatory_sources.gni b/runtime/observatory/observatory_sources.gni
index 15ddbe5..01dfff3 100644
--- a/runtime/observatory/observatory_sources.gni
+++ b/runtime/observatory/observatory_sources.gni
@@ -139,7 +139,6 @@
   "lib/src/elements/subtypetestcache_view.dart",
   "lib/src/elements/timeline/dashboard.dart",
   "lib/src/elements/timeline_page.dart",
-  "lib/src/elements/token_stream_ref.dart",
   "lib/src/elements/top_retaining_instances.dart",
   "lib/src/elements/type_arguments_ref.dart",
   "lib/src/elements/unknown_ref.dart",
@@ -194,7 +193,6 @@
   "lib/src/models/objects/thread.dart",
   "lib/src/models/objects/timeline.dart",
   "lib/src/models/objects/timeline_event.dart",
-  "lib/src/models/objects/token_stream.dart",
   "lib/src/models/objects/type_arguments.dart",
   "lib/src/models/objects/unknown.dart",
   "lib/src/models/objects/unlinked_call.dart",
diff --git a/runtime/observatory/tests/observatory_ui/mocks.dart b/runtime/observatory/tests/observatory_ui/mocks.dart
index 547ff83..23efa86 100644
--- a/runtime/observatory/tests/observatory_ui/mocks.dart
+++ b/runtime/observatory/tests/observatory_ui/mocks.dart
@@ -41,7 +41,6 @@
 part 'mocks/objects/sentinel.dart';
 part 'mocks/objects/source_location.dart';
 part 'mocks/objects/target.dart';
-part 'mocks/objects/token_stream.dart';
 part 'mocks/objects/unknown.dart';
 part 'mocks/objects/vm.dart';
 
diff --git a/runtime/observatory/tests/observatory_ui/mocks/objects/token_stream.dart b/runtime/observatory/tests/observatory_ui/mocks/objects/token_stream.dart
deleted file mode 100644
index efb6c98..0000000
--- a/runtime/observatory/tests/observatory_ui/mocks/objects/token_stream.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-part of mocks;
-
-class TokenStreamRefMock implements M.TokenStreamRef {
-  final String id;
-  final String name;
-  const TokenStreamRefMock({this.id: 'tokenstream-id', this.name});
-}
diff --git a/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart b/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart
deleted file mode 100644
index 12f7351..0000000
--- a/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-
-import 'dart:html';
-import 'package:test/test.dart';
-import 'package:observatory/src/elements/token_stream_ref.dart';
-import '../mocks.dart';
-
-main() {
-  TokenStreamRefElement.tag.ensureRegistration();
-
-  const isolate = const IsolateRefMock();
-  const token = const TokenStreamRefMock();
-  const token_named = const TokenStreamRefMock(name: 'name');
-  test('instantiation', () {
-    final e = new TokenStreamRefElement(isolate, token);
-    expect(e, isNotNull, reason: 'element correctly created');
-    expect(e.isolate, equals(isolate));
-    expect(e.token, equals(token));
-  });
-  group('elements', () {
-    test('created after attachment (no name)', () async {
-      final e = new TokenStreamRefElement(isolate, token);
-      document.body.append(e);
-      await e.onRendered.first;
-      expect(e.children.length, isNonZero, reason: 'has elements');
-      e.remove();
-      await e.onRendered.first;
-      expect(e.children.length, isZero, reason: 'is empty');
-    });
-    test('created after attachment (name)', () async {
-      final e = new TokenStreamRefElement(isolate, token_named);
-      document.body.append(e);
-      await e.onRendered.first;
-      expect(e.children.length, isNonZero, reason: 'has elements');
-      expect(e.innerHtml.contains(token_named.name), isTrue);
-      e.remove();
-      await e.onRendered.first;
-      expect(e.children.length, isZero, reason: 'is empty');
-    });
-  });
-}
diff --git a/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.html b/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.html
deleted file mode 100644
index f548be4..0000000
--- a/runtime/observatory/tests/observatory_ui/token_stream_ref/element_test.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-</head>
-<body>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/runtime/observatory/tests/service/add_breakpoint_rpc_kernel_test.dart b/runtime/observatory/tests/service/add_breakpoint_rpc_kernel_test.dart
index 318afa2..cd57be6 100644
--- a/runtime/observatory/tests/service/add_breakpoint_rpc_kernel_test.dart
+++ b/runtime/observatory/tests/service/add_breakpoint_rpc_kernel_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
@@ -10,8 +9,8 @@
 
 import 'dart:async';
 
-const int LINE_A = 24;
-const int LINE_B = 26;
+const int LINE_A = 23;
+const int LINE_B = 25;
 
 int value = 0;
 
diff --git a/runtime/observatory/tests/service/add_breakpoint_rpc_test.dart b/runtime/observatory/tests/service/add_breakpoint_rpc_test.dart
index 6a982a0..ffb7db6 100644
--- a/runtime/observatory/tests/service/add_breakpoint_rpc_test.dart
+++ b/runtime/observatory/tests/service/add_breakpoint_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/address_mapper_test.dart b/runtime/observatory/tests/service/address_mapper_test.dart
index 6cc023e..2116d93 100644
--- a/runtime/observatory/tests/service/address_mapper_test.dart
+++ b/runtime/observatory/tests/service/address_mapper_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/object_graph.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/allocations_test.dart b/runtime/observatory/tests/service/allocations_test.dart
index c6975dc..e21ec15 100644
--- a/runtime/observatory/tests/service/allocations_test.dart
+++ b/runtime/observatory/tests/service/allocations_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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
 
 library allocations_test;
 
diff --git a/runtime/observatory/tests/service/async_generator_breakpoint_test.dart b/runtime/observatory/tests/service/async_generator_breakpoint_test.dart
index d96c822..fdef362 100644
--- a/runtime/observatory/tests/service/async_generator_breakpoint_test.dart
+++ b/runtime/observatory/tests/service/async_generator_breakpoint_test.dart
@@ -1,8 +1,8 @@
 // Copyright (c) 2015, 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 --verbose-debug --no-sync-async
-// VMOptions=--error_on_bad_type --error_on_bad_override --verbose-debug --stacktrace-every=55 --stress-async-stacks --no-sync-async
+// VMOptions=--verbose-debug --no-sync-async
+// VMOptions=--verbose-debug --stacktrace-every=55 --stress-async-stacks --no-sync-async
 
 import 'dart:async';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/async_next_regession_18877_test.dart b/runtime/observatory/tests/service/async_next_regession_18877_test.dart
index bd74274..d0843b5 100644
--- a/runtime/observatory/tests/service/async_next_regession_18877_test.dart
+++ b/runtime/observatory/tests/service/async_next_regession_18877_test.dart
@@ -1,7 +1,7 @@
 // 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  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_next_test.dart b/runtime/observatory/tests/service/async_next_test.dart
index e5c7c41..f717e0a 100644
--- a/runtime/observatory/tests/service/async_next_test.dart
+++ b/runtime/observatory/tests/service/async_next_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_scope_test.dart b/runtime/observatory/tests/service/async_scope_test.dart
index faf02b4..106e053 100644
--- a/runtime/observatory/tests/service/async_scope_test.dart
+++ b/runtime/observatory/tests/service/async_scope_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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';
diff --git a/runtime/observatory/tests/service/async_single_step_exception_test.dart b/runtime/observatory/tests/service/async_single_step_exception_test.dart
index c026f4a..cb91485 100644
--- a/runtime/observatory/tests/service/async_single_step_exception_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_exception_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --async_debugger --no-sync-async
+// VMOptions=--verbose_debug --async_debugger --no-sync-async
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_single_step_into_test.dart b/runtime/observatory/tests/service/async_single_step_into_test.dart
index 352f787..6a43d93 100644
--- a/runtime/observatory/tests/service/async_single_step_into_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_into_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --async_debugger
+// VMOptions=--verbose_debug --async_debugger
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_single_step_out_test.dart b/runtime/observatory/tests/service/async_single_step_out_test.dart
index 7da09fb..15661e0 100644
--- a/runtime/observatory/tests/service/async_single_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_out_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --async_debugger --no-sync-async
+// VMOptions=--verbose_debug --async_debugger --no-sync-async
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_star_single_step_into_test.dart b/runtime/observatory/tests/service/async_star_single_step_into_test.dart
index c13947f..370e10e 100644
--- a/runtime/observatory/tests/service/async_star_single_step_into_test.dart
+++ b/runtime/observatory/tests/service/async_star_single_step_into_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --async_debugger
+// VMOptions=--verbose_debug --async_debugger
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_star_step_out_test.dart b/runtime/observatory/tests/service/async_star_step_out_test.dart
index 818c6ef..5d173dd 100644
--- a/runtime/observatory/tests/service/async_star_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_star_step_out_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --async_debugger
+// VMOptions=--verbose_debug --async_debugger
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_step_out_test.dart b/runtime/observatory/tests/service/async_step_out_test.dart
index 588efd5..738e357 100644
--- a/runtime/observatory/tests/service/async_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_step_out_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --async_debugger
+// VMOptions=--verbose_debug --async_debugger
 
 import 'dart:developer';
 import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/auth_token1_test.dart b/runtime/observatory/tests/service/auth_token1_test.dart
index 16cecd5..4d4fa9a 100644
--- a/runtime/observatory/tests/service/auth_token1_test.dart
+++ b/runtime/observatory/tests/service/auth_token1_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/auth_token_test.dart b/runtime/observatory/tests/service/auth_token_test.dart
index d1d06f9..470b330 100644
--- a/runtime/observatory/tests/service/auth_token_test.dart
+++ b/runtime/observatory/tests/service/auth_token_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart b/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart
index 9c4f844..4a768d5 100644
--- a/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart
+++ b/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart
@@ -1,7 +1,7 @@
 // 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  --verbose_debug --async_debugger
+// VMOptions=--verbose_debug --async_debugger
 
 import 'dart:developer';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart b/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart
index 6dc4ec8..b93f82c 100644
--- a/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart
+++ b/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --async_debugger
+// VMOptions=--verbose_debug --async_debugger
 
 import 'dart:developer';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/bad_reload/v1/main.dart b/runtime/observatory/tests/service/bad_reload/v1/main.dart
index 5b930e8..8b3a14b 100644
--- a/runtime/observatory/tests/service/bad_reload/v1/main.dart
+++ b/runtime/observatory/tests/service/bad_reload/v1/main.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:isolate';
 
diff --git a/runtime/observatory/tests/service/bad_reload/v2/main.dart b/runtime/observatory/tests/service/bad_reload/v2/main.dart
index 5a9b293b..e698487 100644
--- a/runtime/observatory/tests/service/bad_reload/v2/main.dart
+++ b/runtime/observatory/tests/service/bad_reload/v2/main.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:isolate';
 import 'library_isnt_here_man';
diff --git a/runtime/observatory/tests/service/bad_reload_test.dart b/runtime/observatory/tests/service/bad_reload_test.dart
index 1dba618..ff6396c 100644
--- a/runtime/observatory/tests/service/bad_reload_test.dart
+++ b/runtime/observatory/tests/service/bad_reload_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'test_helper.dart';
 import 'dart:async';
diff --git a/runtime/observatory/tests/service/bad_web_socket_address_test.dart b/runtime/observatory/tests/service/bad_web_socket_address_test.dart
index 2f63d9f..62bbfb3 100644
--- a/runtime/observatory/tests/service/bad_web_socket_address_test.dart
+++ b/runtime/observatory/tests/service/bad_web_socket_address_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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 'package:logging/logging.dart';
 import "package:observatory/service_io.dart";
diff --git a/runtime/observatory/tests/service/break_on_activation_test.dart b/runtime/observatory/tests/service/break_on_activation_test.dart
index 1b56913..64ae8bf 100644
--- a/runtime/observatory/tests/service/break_on_activation_test.dart
+++ b/runtime/observatory/tests/service/break_on_activation_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/break_on_function_test.dart b/runtime/observatory/tests/service/break_on_function_test.dart
index 6367906..83cfbc9 100644
--- a/runtime/observatory/tests/service/break_on_function_test.dart
+++ b/runtime/observatory/tests/service/break_on_function_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/breakpoint_two_args_checked_test.dart b/runtime/observatory/tests/service/breakpoint_two_args_checked_test.dart
index 5979085..6660805 100644
--- a/runtime/observatory/tests/service/breakpoint_two_args_checked_test.dart
+++ b/runtime/observatory/tests/service/breakpoint_two_args_checked_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug
+// VMOptions=--verbose_debug
 
 // This test is mostly interesting for DBC, which needs to patch two bytecodes
 // to create a breakpoint for fast Smi ops.
diff --git a/runtime/observatory/tests/service/caching_test.dart b/runtime/observatory/tests/service/caching_test.dart
index 1bead33..b54f241 100644
--- a/runtime/observatory/tests/service/caching_test.dart
+++ b/runtime/observatory/tests/service/caching_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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
 
 // If caching is working properly, the coverage data will go into the same
 // Script object from which we requested coverage data, instead of a new
diff --git a/runtime/observatory/tests/service/capture_stdio_test.dart b/runtime/observatory/tests/service/capture_stdio_test.dart
index 449d9dd..64386323 100644
--- a/runtime/observatory/tests/service/capture_stdio_test.dart
+++ b/runtime/observatory/tests/service/capture_stdio_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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';
diff --git a/runtime/observatory/tests/service/causal_async_stack_contents_test.dart b/runtime/observatory/tests/service/causal_async_stack_contents_test.dart
index 087aebe..209c2f6b 100644
--- a/runtime/observatory/tests/service/causal_async_stack_contents_test.dart
+++ b/runtime/observatory/tests/service/causal_async_stack_contents_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'dart:developer';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/causal_async_stack_presence_test.dart b/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
index 67b4e36..117f521 100644
--- a/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
+++ b/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'dart:developer';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart b/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart
index 04ac599..3525105 100644
--- a/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart
+++ b/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'dart:developer';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart b/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
index ae880a3..cd81476 100644
--- a/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
+++ b/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'dart:developer';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/code_test.dart b/runtime/observatory/tests/service/code_test.dart
index bf9462b..c904e8b 100644
--- a/runtime/observatory/tests/service/code_test.dart
+++ b/runtime/observatory/tests/service/code_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/collect_all_garbage_test.dart b/runtime/observatory/tests/service/collect_all_garbage_test.dart
index 855d8be..8db2921 100644
--- a/runtime/observatory/tests/service/collect_all_garbage_test.dart
+++ b/runtime/observatory/tests/service/collect_all_garbage_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/command_test.dart b/runtime/observatory/tests/service/command_test.dart
index a463443..86e40d5 100644
--- a/runtime/observatory/tests/service/command_test.dart
+++ b/runtime/observatory/tests/service/command_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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';
 
diff --git a/runtime/observatory/tests/service/complex_reload/v1/main.dart b/runtime/observatory/tests/service/complex_reload/v1/main.dart
index 1e0596f..043b9b9 100644
--- a/runtime/observatory/tests/service/complex_reload/v1/main.dart
+++ b/runtime/observatory/tests/service/complex_reload/v1/main.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:isolate';
 
diff --git a/runtime/observatory/tests/service/complex_reload/v2/main.dart b/runtime/observatory/tests/service/complex_reload/v2/main.dart
index 1ad198d..2088634 100644
--- a/runtime/observatory/tests/service/complex_reload/v2/main.dart
+++ b/runtime/observatory/tests/service/complex_reload/v2/main.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:foobar/foo.dart';
 
diff --git a/runtime/observatory/tests/service/complex_reload/v3/main.dart b/runtime/observatory/tests/service/complex_reload/v3/main.dart
index 751ca96..01756a99 100644
--- a/runtime/observatory/tests/service/complex_reload/v3/main.dart
+++ b/runtime/observatory/tests/service/complex_reload/v3/main.dart
@@ -1,6 +1,5 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 test() => 'cabbage';
diff --git a/runtime/observatory/tests/service/complex_reload_test.dart b/runtime/observatory/tests/service/complex_reload_test.dart
index e1c6e36..2e6e35e 100644
--- a/runtime/observatory/tests/service/complex_reload_test.dart
+++ b/runtime/observatory/tests/service/complex_reload_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'test_helper.dart';
 import 'dart:async';
diff --git a/runtime/observatory/tests/service/contexts_test.dart b/runtime/observatory/tests/service/contexts_test.dart
index 07ebb09..ecc9b44 100644
--- a/runtime/observatory/tests/service/contexts_test.dart
+++ b/runtime/observatory/tests/service/contexts_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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
 
 library inbound_references_test;
 
diff --git a/runtime/observatory/tests/service/coverage_leaf_function_test.dart b/runtime/observatory/tests/service/coverage_leaf_function_test.dart
index 4b70c13..f178426 100644
--- a/runtime/observatory/tests/service/coverage_leaf_function_test.dart
+++ b/runtime/observatory/tests/service/coverage_leaf_function_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
@@ -45,12 +44,12 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': ifKernel(449, 26),
-      'endPos': ifKernel(499, 38),
+      'startPos': ifKernel(392, 26),
+      'endPos': ifKernel(442, 38),
       'compiled': true,
       'coverage': {
         'hits': ifKernel([], []),
-        'misses': ifKernel([449], [26])
+        'misses': ifKernel([392], [26])
       }
     };
 
@@ -86,11 +85,11 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': ifKernel(449, 26),
-      'endPos': ifKernel(499, 38),
+      'startPos': ifKernel(392, 26),
+      'endPos': ifKernel(442, 38),
       'compiled': true,
       'coverage': {
-        'hits': ifKernel([449], [26]),
+        'hits': ifKernel([392], [26]),
         'misses': ifKernel([], [])
       }
     };
diff --git a/runtime/observatory/tests/service/debugger_inspect_test.dart b/runtime/observatory/tests/service/debugger_inspect_test.dart
index 4f8f680..767fb64 100644
--- a/runtime/observatory/tests/service/debugger_inspect_test.dart
+++ b/runtime/observatory/tests/service/debugger_inspect_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/debugger_location_second_test.dart b/runtime/observatory/tests/service/debugger_location_second_test.dart
index 7586c98..03c40b3 100644
--- a/runtime/observatory/tests/service/debugger_location_second_test.dart
+++ b/runtime/observatory/tests/service/debugger_location_second_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:observatory/debugger.dart';
@@ -11,9 +10,9 @@
 import 'dart:async';
 import 'dart:developer';
 
-const int LINE_A = 22;
+const int LINE_A = 21;
 const int LINE_B = 110;
-const int LINE_C = 12;
+const int LINE_C = 11;
 
 void testFunction() {
   int i = 0;
@@ -170,8 +169,8 @@
             ' debugger_location_second_test.dart:${LINE_B + 4}:,'
             ' debugger_location_second_test.dart:${LINE_B + 5} ,'
             ' debugger_location_second_test.dart:${LINE_B + 5}:,'
-            ' debugger_location_second_test.dart:${LINE_B + 6} ,'
-            ' debugger_location_second_test.dart:${LINE_B + 6}:,'
+            ' debugger_location_second_test.dart:${LINE_B + 8} ,'
+            ' debugger_location_second_test.dart:${LINE_B + 8}:,'
             ' debugger_location_second_test.dart:${LINE_B + 9} ,'
             ' debugger_location_second_test.dart:${LINE_B + 9}:]'));
   },
diff --git a/runtime/observatory/tests/service/debugger_location_test.dart b/runtime/observatory/tests/service/debugger_location_test.dart
index 0484fcf..0ffd76c 100644
--- a/runtime/observatory/tests/service/debugger_location_test.dart
+++ b/runtime/observatory/tests/service/debugger_location_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:observatory/debugger.dart';
@@ -11,9 +10,9 @@
 import 'dart:async';
 import 'dart:developer';
 
-const int LINE_A = 22;
-const int LINE_B = 112;
-const int LINE_C = 12;
+const int LINE_A = 21;
+const int LINE_B = 111;
+const int LINE_C = 11;
 
 void testFunction() {
   int i = 0;
diff --git a/runtime/observatory/tests/service/debugging_inlined_finally_test.dart b/runtime/observatory/tests/service/debugging_inlined_finally_test.dart
index f30e25c..424952c 100644
--- a/runtime/observatory/tests/service/debugging_inlined_finally_test.dart
+++ b/runtime/observatory/tests/service/debugging_inlined_finally_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
@@ -9,9 +8,9 @@
 import 'test_helper.dart';
 import 'dart:developer';
 
-const int LINE_A = 24;
-const int LINE_B = 27;
-const int LINE_C = 30;
+const int LINE_A = 23;
+const int LINE_B = 26;
+const int LINE_C = 29;
 
 testFunction() {
   debugger();
diff --git a/runtime/observatory/tests/service/debugging_test.dart b/runtime/observatory/tests/service/debugging_test.dart
index a75a341..9435ad2 100644
--- a/runtime/observatory/tests/service/debugging_test.dart
+++ b/runtime/observatory/tests/service/debugging_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
@@ -188,7 +187,7 @@
     Breakpoint bpt = result;
     expect(bpt.type, equals('Breakpoint'));
     expect(bpt.location.script.name, equals('debugging_test.dart'));
-    expect(bpt.location.script.tokenToLine(bpt.location.tokenPos), equals(13));
+    expect(bpt.location.script.tokenToLine(bpt.location.tokenPos), equals(12));
     expect(isolate.breakpoints.length, equals(1));
 
     await completer.future; // Wait for breakpoint events.
@@ -203,7 +202,7 @@
     Script script = stack['frames'][0].location.script;
     expect(script.name, endsWith('debugging_test.dart'));
     expect(
-        script.tokenToLine(stack['frames'][0].location.tokenPos), equals(13));
+        script.tokenToLine(stack['frames'][0].location.tokenPos), equals(12));
   },
 ];
 
diff --git a/runtime/observatory/tests/service/dev_fs_http_put_test.dart b/runtime/observatory/tests/service/dev_fs_http_put_test.dart
index 4ed4172..f3e78a1 100644
--- a/runtime/observatory/tests/service/dev_fs_http_put_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_http_put_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:convert';
diff --git a/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart b/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart
index ed4c886..29aaa37 100644
--- a/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_http_put_weird_char_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:convert';
diff --git a/runtime/observatory/tests/service/dev_fs_spawn_test.dart b/runtime/observatory/tests/service/dev_fs_spawn_test.dart
index 9a741fc..c0a182e 100644
--- a/runtime/observatory/tests/service/dev_fs_spawn_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_spawn_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:convert';
diff --git a/runtime/observatory/tests/service/dev_fs_test.dart b/runtime/observatory/tests/service/dev_fs_test.dart
index abe80cc..eca5e3ca 100644
--- a/runtime/observatory/tests/service/dev_fs_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:convert';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/dev_fs_uri_test.dart b/runtime/observatory/tests/service/dev_fs_uri_test.dart
index 0b6643a..b00d699 100644
--- a/runtime/observatory/tests/service/dev_fs_uri_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_uri_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:convert';
diff --git a/runtime/observatory/tests/service/dev_fs_weird_char_test.dart b/runtime/observatory/tests/service/dev_fs_weird_char_test.dart
index ce99969..bab7d69 100644
--- a/runtime/observatory/tests/service/dev_fs_weird_char_test.dart
+++ b/runtime/observatory/tests/service/dev_fs_weird_char_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:convert';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/developer_extension_test.dart b/runtime/observatory/tests/service/developer_extension_test.dart
index f128f93..9b787ec 100644
--- a/runtime/observatory/tests/service/developer_extension_test.dart
+++ b/runtime/observatory/tests/service/developer_extension_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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:convert';
diff --git a/runtime/observatory/tests/service/developer_server_control_test.dart b/runtime/observatory/tests/service/developer_server_control_test.dart
index 452b3e8..a4b99f3 100644
--- a/runtime/observatory/tests/service/developer_server_control_test.dart
+++ b/runtime/observatory/tests/service/developer_server_control_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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';
diff --git a/runtime/observatory/tests/service/developer_service_get_isolate_id_test.dart b/runtime/observatory/tests/service/developer_service_get_isolate_id_test.dart
index cc4bbbe..5d7f393 100644
--- a/runtime/observatory/tests/service/developer_service_get_isolate_id_test.dart
+++ b/runtime/observatory/tests/service/developer_service_get_isolate_id_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:developer' as dev;
diff --git a/runtime/observatory/tests/service/dominator_tree_user_test.dart b/runtime/observatory/tests/service/dominator_tree_user_test.dart
index 186b983..a0e9fd4 100644
--- a/runtime/observatory/tests/service/dominator_tree_user_test.dart
+++ b/runtime/observatory/tests/service/dominator_tree_user_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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
+// VMOptions=
 // VMOptions=--use_compactor
 
 import 'package:observatory/heap_snapshot.dart';
diff --git a/runtime/observatory/tests/service/dominator_tree_vm_test.dart b/runtime/observatory/tests/service/dominator_tree_vm_test.dart
index 0ea9ad5..7fa6e9b 100644
--- a/runtime/observatory/tests/service/dominator_tree_vm_test.dart
+++ b/runtime/observatory/tests/service/dominator_tree_vm_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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
+// VMOptions=
 // VMOptions=--use_compactor
 
 import 'package:observatory/heap_snapshot.dart';
diff --git a/runtime/observatory/tests/service/echo_test.dart b/runtime/observatory/tests/service/echo_test.dart
index 402c080..fdd93cf 100644
--- a/runtime/observatory/tests/service/echo_test.dart
+++ b/runtime/observatory/tests/service/echo_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/eval_test.dart b/runtime/observatory/tests/service/eval_test.dart
index a461a1d..33e5efe 100644
--- a/runtime/observatory/tests/service/eval_test.dart
+++ b/runtime/observatory/tests/service/eval_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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';
diff --git a/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart b/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart
index c74c4be..9fc206a 100644
--- a/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart
+++ b/runtime/observatory/tests/service/evaluate_activation_in_method_class_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 // Tests that expressions evaluated in a frame see the same scope as the
 // frame's method.
diff --git a/runtime/observatory/tests/service/evaluate_activation_test.dart b/runtime/observatory/tests/service/evaluate_activation_test.dart
index cb352cd..01f1e63 100644
--- a/runtime/observatory/tests/service/evaluate_activation_test.dart
+++ b/runtime/observatory/tests/service/evaluate_activation_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/evaluate_async_closure_test.dart b/runtime/observatory/tests/service/evaluate_async_closure_test.dart
index d014683..bcffa6b 100644
--- a/runtime/observatory/tests/service/evaluate_async_closure_test.dart
+++ b/runtime/observatory/tests/service/evaluate_async_closure_test.dart
@@ -1,7 +1,6 @@
 // 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';
 
diff --git a/runtime/observatory/tests/service/evaluate_in_frame_rpc_test.dart b/runtime/observatory/tests/service/evaluate_in_frame_rpc_test.dart
index 11549b4..5ec7dfd 100644
--- a/runtime/observatory/tests/service/evaluate_in_frame_rpc_test.dart
+++ b/runtime/observatory/tests/service/evaluate_in_frame_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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:developer';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart b/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart
index ade53db..e9724f5 100644
--- a/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart
+++ b/runtime/observatory/tests/service/evaluate_in_frame_with_scope_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:developer';
 
diff --git a/runtime/observatory/tests/service/evaluate_with_scope_test.dart b/runtime/observatory/tests/service/evaluate_with_scope_test.dart
index c779326..5b6ee5c 100644
--- a/runtime/observatory/tests/service/evaluate_with_scope_test.dart
+++ b/runtime/observatory/tests/service/evaluate_with_scope_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/external_service_asynchronous_invocation_test.dart b/runtime/observatory/tests/service/external_service_asynchronous_invocation_test.dart
index fb56834..c2a08b3 100644
--- a/runtime/observatory/tests/service/external_service_asynchronous_invocation_test.dart
+++ b/runtime/observatory/tests/service/external_service_asynchronous_invocation_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/external_service_disappear_test.dart b/runtime/observatory/tests/service/external_service_disappear_test.dart
index 5c9764e..13c55a5 100644
--- a/runtime/observatory/tests/service/external_service_disappear_test.dart
+++ b/runtime/observatory/tests/service/external_service_disappear_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/external_service_notification_invocation_test.dart b/runtime/observatory/tests/service/external_service_notification_invocation_test.dart
index cab8b5b..a2fb925 100644
--- a/runtime/observatory/tests/service/external_service_notification_invocation_test.dart
+++ b/runtime/observatory/tests/service/external_service_notification_invocation_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/external_service_registration_test.dart b/runtime/observatory/tests/service/external_service_registration_test.dart
index 7fb325b..c6720a8 100644
--- a/runtime/observatory/tests/service/external_service_registration_test.dart
+++ b/runtime/observatory/tests/service/external_service_registration_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/external_service_registration_via_notification_test.dart b/runtime/observatory/tests/service/external_service_registration_via_notification_test.dart
index 0f05750..0fa3183 100644
--- a/runtime/observatory/tests/service/external_service_registration_via_notification_test.dart
+++ b/runtime/observatory/tests/service/external_service_registration_via_notification_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/external_service_synchronous_invocation_test.dart b/runtime/observatory/tests/service/external_service_synchronous_invocation_test.dart
index b16e5ff..c0271c5 100644
--- a/runtime/observatory/tests/service/external_service_synchronous_invocation_test.dart
+++ b/runtime/observatory/tests/service/external_service_synchronous_invocation_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/gc_test.dart b/runtime/observatory/tests/service/gc_test.dart
index 5fd03ea..c0cab5f 100644
--- a/runtime/observatory/tests/service/gc_test.dart
+++ b/runtime/observatory/tests/service/gc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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 'package:observatory/service_io.dart';
 import 'test_helper.dart';
diff --git a/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart b/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart
index ea2d270..bea52d2 100644
--- a/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_allocation_profile_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/get_allocation_samples_test.dart b/runtime/observatory/tests/service/get_allocation_samples_test.dart
index 62522a4..38dabcf 100644
--- a/runtime/observatory/tests/service/get_allocation_samples_test.dart
+++ b/runtime/observatory/tests/service/get_allocation_samples_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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:developer';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart b/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
index b900f51..9285dbe 100644
--- a/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_cpu_profile_timeline_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_flag_list_rpc_test.dart b/runtime/observatory/tests/service/get_flag_list_rpc_test.dart
index cdb35b5..2240e01 100644
--- a/runtime/observatory/tests/service/get_flag_list_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_flag_list_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_heap_map_rpc_test.dart b/runtime/observatory/tests/service/get_heap_map_rpc_test.dart
index bff044c..d5ff5c0 100644
--- a/runtime/observatory/tests/service/get_heap_map_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_heap_map_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_instances_rpc_test.dart b/runtime/observatory/tests/service/get_instances_rpc_test.dart
index 39e4524..7f1bc22 100644
--- a/runtime/observatory/tests/service/get_instances_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_instances_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_isolate_after_async_error_test.dart b/runtime/observatory/tests/service/get_isolate_after_async_error_test.dart
index af7b54c..e61d1b1 100644
--- a/runtime/observatory/tests/service/get_isolate_after_async_error_test.dart
+++ b/runtime/observatory/tests/service/get_isolate_after_async_error_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_isolate_after_language_error_test.dart b/runtime/observatory/tests/service/get_isolate_after_language_error_test.dart
index 95200f5..4a7e076 100644
--- a/runtime/observatory/tests/service/get_isolate_after_language_error_test.dart
+++ b/runtime/observatory/tests/service/get_isolate_after_language_error_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_isolate_after_stack_overflow_error_test.dart b/runtime/observatory/tests/service/get_isolate_after_stack_overflow_error_test.dart
index 4488170..0db543b 100644
--- a/runtime/observatory/tests/service/get_isolate_after_stack_overflow_error_test.dart
+++ b/runtime/observatory/tests/service/get_isolate_after_stack_overflow_error_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_isolate_after_sync_error_test.dart b/runtime/observatory/tests/service/get_isolate_after_sync_error_test.dart
index 87851f8..cdf2763 100644
--- a/runtime/observatory/tests/service/get_isolate_after_sync_error_test.dart
+++ b/runtime/observatory/tests/service/get_isolate_after_sync_error_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_isolate_rpc_test.dart b/runtime/observatory/tests/service/get_isolate_rpc_test.dart
index 8ed6c91..1b89f8c 100644
--- a/runtime/observatory/tests/service/get_isolate_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_isolate_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_native_allocation_samples_test.dart b/runtime/observatory/tests/service/get_native_allocation_samples_test.dart
index b197a29..e60b59d 100644
--- a/runtime/observatory/tests/service/get_native_allocation_samples_test.dart
+++ b/runtime/observatory/tests/service/get_native_allocation_samples_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/sample_profile.dart';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/get_object_rpc_test.dart b/runtime/observatory/tests/service/get_object_rpc_test.dart
index 5fb77ec..15ed8df 100644
--- a/runtime/observatory/tests/service/get_object_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_object_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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
 
 library get_object_rpc_test;
 
diff --git a/runtime/observatory/tests/service/get_object_store_rpc_test.dart b/runtime/observatory/tests/service/get_object_store_rpc_test.dart
index 65ee17f..a6b665b 100644
--- a/runtime/observatory/tests/service/get_object_store_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_object_store_rpc_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/models.dart' as M;
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/get_ports_rpc_test.dart b/runtime/observatory/tests/service/get_ports_rpc_test.dart
index ca8eff5..343bb48 100644
--- a/runtime/observatory/tests/service/get_ports_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_ports_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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
 
 library get_ports_rpc_test;
 
diff --git a/runtime/observatory/tests/service/get_retained_size_rpc_test.dart b/runtime/observatory/tests/service/get_retained_size_rpc_test.dart
index b86c91f..68e5e56 100644
--- a/runtime/observatory/tests/service/get_retained_size_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_retained_size_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart b/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart
index 840fd15..f78dcc5 100644
--- a/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_retaining_path_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_source_report_test.dart b/runtime/observatory/tests/service/get_source_report_test.dart
index d1dda8d..411d7a0 100644
--- a/runtime/observatory/tests/service/get_source_report_test.dart
+++ b/runtime/observatory/tests/service/get_source_report_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
@@ -61,12 +60,12 @@
 
     var expectedRange = {
       'scriptIndex': 0,
-      'startPos': ifKernel(489, 40),
-      'endPos': ifKernel(633, 89),
+      'startPos': ifKernel(432, 40),
+      'endPos': ifKernel(576, 89),
       'compiled': true,
       'coverage': {
-        'hits': ifKernel([489, 539, 590, 619], [40, 55, 73, 83]),
-        'misses': ifKernel([552], [61])
+        'hits': ifKernel([432, 482, 533, 562], [40, 55, 73, 83]),
+        'misses': ifKernel([495], [61])
       }
     };
 
diff --git a/runtime/observatory/tests/service/get_stack_rpc_test.dart b/runtime/observatory/tests/service/get_stack_rpc_test.dart
index 5efdb1b..a322752 100644
--- a/runtime/observatory/tests/service/get_stack_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_stack_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/models.dart' as M;
 import 'package:observatory/service_io.dart';
@@ -13,7 +12,7 @@
 import 'dart:developer' as developer;
 
 int counter = 0;
-const stoppedAtLine = 25;
+const stoppedAtLine = 24;
 var port = new isolate.RawReceivePort(msgHandler);
 
 // This name is used in a test below.
diff --git a/runtime/observatory/tests/service/get_user_level_retaining_path_rpc_test.dart b/runtime/observatory/tests/service/get_user_level_retaining_path_rpc_test.dart
index 6211574..18c89ec 100644
--- a/runtime/observatory/tests/service/get_user_level_retaining_path_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_user_level_retaining_path_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_version_rpc_test.dart b/runtime/observatory/tests/service/get_version_rpc_test.dart
index 7bf83e5..7ee0bb1 100644
--- a/runtime/observatory/tests/service/get_version_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_version_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_vm_rpc_test.dart b/runtime/observatory/tests/service/get_vm_rpc_test.dart
index 1fb21b4..ef49166 100644
--- a/runtime/observatory/tests/service/get_vm_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_vm_rpc_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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 --vm-name=Walter
+// VMOptions=--vm-name=Walter
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart b/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart
index 60a5aeb..8a60ea3 100644
--- a/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_vm_timeline_rpc_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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 --complete_timeline
+// VMOptions=--complete_timeline
 
 import 'dart:developer';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart b/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart
index c9dd717..ef499e1 100644
--- a/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_zone_memory_info_rpc_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/inbound_references_test.dart b/runtime/observatory/tests/service/inbound_references_test.dart
index af310c0..6309f1f 100644
--- a/runtime/observatory/tests/service/inbound_references_test.dart
+++ b/runtime/observatory/tests/service/inbound_references_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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
 
 library inbound_references_test;
 
diff --git a/runtime/observatory/tests/service/instance_field_order_rpc_test.dart b/runtime/observatory/tests/service/instance_field_order_rpc_test.dart
index 023f832..e5d55c3 100644
--- a/runtime/observatory/tests/service/instance_field_order_rpc_test.dart
+++ b/runtime/observatory/tests/service/instance_field_order_rpc_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 library get_object_rpc_test;
 
diff --git a/runtime/observatory/tests/service/invoke_test.dart b/runtime/observatory/tests/service/invoke_test.dart
index bf8ffb9..ace2169 100644
--- a/runtime/observatory/tests/service/invoke_test.dart
+++ b/runtime/observatory/tests/service/invoke_test.dart
@@ -1,7 +1,6 @@
 // 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';
diff --git a/runtime/observatory/tests/service/isolate_lifecycle_test.dart b/runtime/observatory/tests/service/isolate_lifecycle_test.dart
index 345b90d..22f9490 100644
--- a/runtime/observatory/tests/service/isolate_lifecycle_test.dart
+++ b/runtime/observatory/tests/service/isolate_lifecycle_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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';
diff --git a/runtime/observatory/tests/service/issue_25465_test.dart b/runtime/observatory/tests/service/issue_25465_test.dart
index 3ffb543..41cb026 100644
--- a/runtime/observatory/tests/service/issue_25465_test.dart
+++ b/runtime/observatory/tests/service/issue_25465_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/issue_27238_test.dart b/runtime/observatory/tests/service/issue_27238_test.dart
index 0fa2c44..60c7497 100644
--- a/runtime/observatory/tests/service/issue_27238_test.dart
+++ b/runtime/observatory/tests/service/issue_27238_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'service_test_common.dart';
 import 'dart:async';
diff --git a/runtime/observatory/tests/service/issue_27287_test.dart b/runtime/observatory/tests/service/issue_27287_test.dart
index a1075d3..872ad12 100644
--- a/runtime/observatory/tests/service/issue_27287_test.dart
+++ b/runtime/observatory/tests/service/issue_27287_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'service_test_common.dart';
 import 'test_helper.dart';
diff --git a/runtime/observatory/tests/service/issue_30555_test.dart b/runtime/observatory/tests/service/issue_30555_test.dart
index 03f7def..b804d9e 100644
--- a/runtime/observatory/tests/service/issue_30555_test.dart
+++ b/runtime/observatory/tests/service/issue_30555_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/kill_paused_test.dart b/runtime/observatory/tests/service/kill_paused_test.dart
index c0f5c91..cf88edd 100644
--- a/runtime/observatory/tests/service/kill_paused_test.dart
+++ b/runtime/observatory/tests/service/kill_paused_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_common.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/kill_running_test.dart b/runtime/observatory/tests/service/kill_running_test.dart
index 15e8b9c..49ea835 100644
--- a/runtime/observatory/tests/service/kill_running_test.dart
+++ b/runtime/observatory/tests/service/kill_running_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_common.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/library_dependency_test.dart b/runtime/observatory/tests/service/library_dependency_test.dart
index 27ab11c..a485b78 100644
--- a/runtime/observatory/tests/service/library_dependency_test.dart
+++ b/runtime/observatory/tests/service/library_dependency_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/local_variable_declaration_test.dart b/runtime/observatory/tests/service/local_variable_declaration_test.dart
index 0177518..3204bb4 100644
--- a/runtime/observatory/tests/service/local_variable_declaration_test.dart
+++ b/runtime/observatory/tests/service/local_variable_declaration_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/malformed_test.dart b/runtime/observatory/tests/service/malformed_test.dart
index 28a1a04..5738afe 100644
--- a/runtime/observatory/tests/service/malformed_test.dart
+++ b/runtime/observatory/tests/service/malformed_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/metrics_test.dart b/runtime/observatory/tests/service/metrics_test.dart
index d690972..328a2ca 100644
--- a/runtime/observatory/tests/service/metrics_test.dart
+++ b/runtime/observatory/tests/service/metrics_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/mirror_references_test.dart b/runtime/observatory/tests/service/mirror_references_test.dart
index a7fc685..f0c9019 100644
--- a/runtime/observatory/tests/service/mirror_references_test.dart
+++ b/runtime/observatory/tests/service/mirror_references_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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
 
 library vm_references_test;
 
diff --git a/runtime/observatory/tests/service/native_metrics_test.dart b/runtime/observatory/tests/service/native_metrics_test.dart
index 532a736..e8afd57 100644
--- a/runtime/observatory/tests/service/native_metrics_test.dart
+++ b/runtime/observatory/tests/service/native_metrics_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/next_through_is_and_as_test.dart b/runtime/observatory/tests/service/next_through_is_and_as_test.dart
index be80432..b22110d 100644
--- a/runtime/observatory/tests/service/next_through_is_and_as_test.dart
+++ b/runtime/observatory/tests/service/next_through_is_and_as_test.dart
@@ -46,7 +46,7 @@
   "$file:${LINE_A+12}:5", // on call to 'print'
   "$file:${LINE_A+14}:11", // in 'is'
   "$file:${LINE_A+15}:5", // on call to 'print'
-  "$file:${LINE_A+16}:17", // on 'as'
+  "$file:${LINE_A+16}:11", // on 'as'
   "$file:${LINE_A+17}:11", // on 'isEven'
   "$file:${LINE_A+18}:7", // on call to 'print'
   "$file:${LINE_A+23}:11", // on 'is!'
diff --git a/runtime/observatory/tests/service/object_graph_stack_reference_test.dart b/runtime/observatory/tests/service/object_graph_stack_reference_test.dart
index aaf24eb..c5e3167 100644
--- a/runtime/observatory/tests/service/object_graph_stack_reference_test.dart
+++ b/runtime/observatory/tests/service/object_graph_stack_reference_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/object_graph_user_test.dart b/runtime/observatory/tests/service/object_graph_user_test.dart
index c9b1f76..6c251b0 100644
--- a/runtime/observatory/tests/service/object_graph_user_test.dart
+++ b/runtime/observatory/tests/service/object_graph_user_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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 'package:observatory/heap_snapshot.dart';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/object_graph_vm_test.dart b/runtime/observatory/tests/service/object_graph_vm_test.dart
index 8461620..299e113 100644
--- a/runtime/observatory/tests/service/object_graph_vm_test.dart
+++ b/runtime/observatory/tests/service/object_graph_vm_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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 'package:observatory/heap_snapshot.dart';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/parameters_in_scope_at_entry_test.dart b/runtime/observatory/tests/service/parameters_in_scope_at_entry_test.dart
index 3ed7a43..7c8623a 100644
--- a/runtime/observatory/tests/service/parameters_in_scope_at_entry_test.dart
+++ b/runtime/observatory/tests/service/parameters_in_scope_at_entry_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'package:observatory/service_io.dart';
 import 'test_helper.dart';
diff --git a/runtime/observatory/tests/service/pause_idle_isolate_test.dart b/runtime/observatory/tests/service/pause_idle_isolate_test.dart
index d43e192..cefff87 100644
--- a/runtime/observatory/tests/service/pause_idle_isolate_test.dart
+++ b/runtime/observatory/tests/service/pause_idle_isolate_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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:developer';
 import 'dart:io';
diff --git a/runtime/observatory/tests/service/pause_on_exceptions_test.dart b/runtime/observatory/tests/service/pause_on_exceptions_test.dart
index 5089a99..b30206b 100644
--- a/runtime/observatory/tests/service/pause_on_exceptions_test.dart
+++ b/runtime/observatory/tests/service/pause_on_exceptions_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/pause_on_start_and_exit_test.dart b/runtime/observatory/tests/service/pause_on_start_and_exit_test.dart
index 617465b..1326441 100644
--- a/runtime/observatory/tests/service/pause_on_start_and_exit_test.dart
+++ b/runtime/observatory/tests/service/pause_on_start_and_exit_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/models.dart' as M;
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/pause_on_start_and_exit_with_child_test.dart b/runtime/observatory/tests/service/pause_on_start_and_exit_with_child_test.dart
index e59ac17..756d169 100644
--- a/runtime/observatory/tests/service/pause_on_start_and_exit_with_child_test.dart
+++ b/runtime/observatory/tests/service/pause_on_start_and_exit_with_child_test.dart
@@ -1,7 +1,6 @@
 // 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 'package:observatory/models.dart' as M;
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/pause_on_start_then_step_test.dart b/runtime/observatory/tests/service/pause_on_start_then_step_test.dart
index 6fafed3..4791e6d 100644
--- a/runtime/observatory/tests/service/pause_on_start_then_step_test.dart
+++ b/runtime/observatory/tests/service/pause_on_start_then_step_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/models.dart' as M;
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
index 6550be5..89ebcbf 100644
--- a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
+++ b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
@@ -1,8 +1,8 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override --async_debugger
-// VMOptions=--optimization-counter-threshold=5 --error_on_bad_type --error_on_bad_override --async_debugger
+// VMOptions=--async_debugger
+// VMOptions=--optimization-counter-threshold=5 --async_debugger
 
 import 'package:observatory/service_io.dart';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart
index cebbcd2..b832931 100644
--- a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart
+++ b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override --async_debugger
+// VMOptions=--async_debugger
 
 import 'package:observatory/service_io.dart';
 import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/pause_on_unhandled_exceptions_test.dart b/runtime/observatory/tests/service/pause_on_unhandled_exceptions_test.dart
index de1b5e9..3921ac7 100644
--- a/runtime/observatory/tests/service/pause_on_unhandled_exceptions_test.dart
+++ b/runtime/observatory/tests/service/pause_on_unhandled_exceptions_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/positive_token_pos_test.dart b/runtime/observatory/tests/service/positive_token_pos_test.dart
index 375b676..6257882 100644
--- a/runtime/observatory/tests/service/positive_token_pos_test.dart
+++ b/runtime/observatory/tests/service/positive_token_pos_test.dart
@@ -1,7 +1,7 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override  --verbose_debug --no-sync-async
+// VMOptions=--verbose_debug --no-sync-async
 
 import 'dart:developer';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/reachable_size_test.dart b/runtime/observatory/tests/service/reachable_size_test.dart
index 67c3bf7..800ebb2 100644
--- a/runtime/observatory/tests/service/reachable_size_test.dart
+++ b/runtime/observatory/tests/service/reachable_size_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/read_stream_test.dart b/runtime/observatory/tests/service/read_stream_test.dart
index bf643bb..5af654e 100644
--- a/runtime/observatory/tests/service/read_stream_test.dart
+++ b/runtime/observatory/tests/service/read_stream_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/object_graph.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/reload_sources_test.dart b/runtime/observatory/tests/service/reload_sources_test.dart
index 1ca814b..b2ff5a9 100644
--- a/runtime/observatory/tests/service/reload_sources_test.dart
+++ b/runtime/observatory/tests/service/reload_sources_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'test_helper.dart';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/rewind_optimized_out_test.dart b/runtime/observatory/tests/service/rewind_optimized_out_test.dart
index b2b8e74..1a7c589 100644
--- a/runtime/observatory/tests/service/rewind_optimized_out_test.dart
+++ b/runtime/observatory/tests/service/rewind_optimized_out_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:developer';
 import 'package:observatory/service_io.dart';
@@ -12,10 +11,10 @@
 const alwaysInline = "AlwaysInline";
 const noInline = "NeverInline";
 
-int LINE_A = 35;
-int LINE_B = 40;
-int LINE_C = 43;
-int LINE_D = 47;
+int LINE_A = 34;
+int LINE_B = 39;
+int LINE_C = 42;
+int LINE_D = 46;
 
 int global = 0;
 
diff --git a/runtime/observatory/tests/service/rewind_test.dart b/runtime/observatory/tests/service/rewind_test.dart
index b89fa2c8..b35a123 100644
--- a/runtime/observatory/tests/service/rewind_test.dart
+++ b/runtime/observatory/tests/service/rewind_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override --no-sync-async
 
 import 'dart:developer';
 import 'package:observatory/service_io.dart';
@@ -12,10 +11,10 @@
 const alwaysInline = "AlwaysInline";
 const noInline = "NeverInline";
 
-int LINE_A = 35;
-int LINE_B = 40;
-int LINE_C = 43;
-int LINE_D = 47;
+int LINE_A = 34;
+int LINE_B = 39;
+int LINE_C = 42;
+int LINE_D = 46;
 
 int global = 0;
 
@@ -60,20 +59,20 @@
     } on ServerRpcException catch (e) {
       caughtException = true;
       expect(e.code, equals(ServerRpcException.kCannotResume));
-      expect(e.message, 'Frame must be in bounds [1..9]: saw 0');
+      expect(e.message, 'Frame must be in bounds [1..12]: saw 0');
     }
     expect(caughtException, isTrue);
   },
   (Isolate isolate) async {
-    // We are not able to rewind frame 10.
+    // We are not able to rewind frame 13.
     bool caughtException;
     try {
-      await isolate.rewind(10);
+      await isolate.rewind(13);
       expect(false, isTrue, reason: 'Unreachable');
     } on ServerRpcException catch (e) {
       caughtException = true;
       expect(e.code, equals(ServerRpcException.kCannotResume));
-      expect(e.message, 'Frame must be in bounds [1..9]: saw 10');
+      expect(e.message, 'Frame must be in bounds [1..12]: saw 13');
     }
     expect(caughtException, isTrue);
   },
diff --git a/runtime/observatory/tests/service/service.status b/runtime/observatory/tests/service/service.status
index 2840080..8fb2b1d 100644
--- a/runtime/observatory/tests/service/service.status
+++ b/runtime/observatory/tests/service/service.status
@@ -15,9 +15,6 @@
 [ $arch == arm ]
 process_service_test: Pass, Fail # Issue 24344
 
-[ $builder_tag == optimization_counter_threshold ]
-pause_on_unhandled_async_exceptions_test: Pass, RuntimeError # http://dartbug.com/34673
-
 [ $compiler == app_jit ]
 bad_reload_test: RuntimeError # Issue 27806
 complex_reload_test: RuntimeError # Issue 27806
@@ -107,7 +104,7 @@
 *: SkipByDesign
 
 [ $compiler == dartk || $compiler == dartkp ]
-rewind_test: Pass, RuntimeError, Slow # Issue 34287
+rewind_test: Pass, Slow
 
 # Skip all service tests because random reloads interfere.
 [ $hot_reload || $hot_reload_rollback ]
diff --git a/runtime/observatory/tests/service/service_kernel.status b/runtime/observatory/tests/service/service_kernel.status
index 6e261ad..514119c 100644
--- a/runtime/observatory/tests/service/service_kernel.status
+++ b/runtime/observatory/tests/service/service_kernel.status
@@ -108,12 +108,16 @@
 # These are the non-kernel specific versions so skip tests and allow errors.
 [ $compiler == dartk ]
 add_breakpoint_rpc_test: SkipByDesign # non-kernel specific version of add_breakpoint_rpc_kernel_test.
+async_generator_breakpoint_test: Crash, RuntimeError # Issue 34746
+async_single_step_exception_test: RuntimeError # Issue 34746
+async_single_step_out_test: RuntimeError # Issue 34746
 bad_reload_test: RuntimeError # Issue 34025
 coverage_optimized_function_test: Pass, Slow
 evaluate_activation_in_method_class_test: RuntimeError
 evaluate_activation_test/instance: RuntimeError # http://dartbug.com/20047
 evaluate_activation_test/scope: RuntimeError # http://dartbug.com/20047
 pause_on_unhandled_async_exceptions2_test: Pass, Slow
+positive_token_pos_test: RuntimeError # Issue 34746
 step_through_arithmetic_test: RuntimeError # probably constant evaluator pre-evaluating e.g. 1+2
 unused_changes_in_last_reload_test: RuntimeError
 
@@ -127,10 +131,19 @@
 [ $arch == arm64 && $compiler == dartk ]
 coverage_optimized_function_test: Pass, Slow
 
+[ $arch == arm64 && $compiler == dartk && $mode == release ]
+get_object_rpc_test: Pass, RuntimeError # Please triage / issue #27806
+
+[ $arch == ia32 && $builder_tag == optimization_counter_threshold ]
+eval_regression_flutter20255_test: SkipSlow # Timeout
+rewind_optimized_out_test: SkipSlow # Timeout
+
 [ $arch != simarm && $arch != simarm64 && $arch != simdbc && $compiler == dartk ]
 complex_reload_test: RuntimeError
 
 [ $arch == simdbc64 && $compiler == dartk ]
+eval_test: RuntimeError, Timeout # Issue #33087
+evaluate_in_frame_rpc_test: RuntimeError, Timeout # Issue #33087
 get_cpu_profile_timeline_rpc_test: Pass, RuntimeError # http://dartbug.com/31794
 
 [ $arch == simdbc64 && $compiler == dartk && $mode == debug ]
@@ -211,13 +224,9 @@
 step_test: Skip # Timeout
 step_through_constructor_test: Skip # Timeout
 
-[ $compiler == dartk && $strong && ($arch == simarm || $arch == simarm64) ]
-async_single_step_exception_test: RuntimeError
-
 [ $compiler == dartk && ($arch == simarm || $arch == simarm64 || $arch == simdbc64) ]
 add_breakpoint_rpc_kernel_test: RuntimeError # Issue #33087
 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
 complex_reload_test: Skip # Times out on sim architectures, also RuntimeError.
@@ -242,7 +251,6 @@
 get_user_level_retaining_path_rpc_test: RuntimeError # Issue #33087
 instance_field_order_rpc_test: RuntimeError # Issue #33087
 pause_on_exceptions_test: RuntimeError, Timeout # Issue #33087
-positive_token_pos_test: Pass, RuntimeError
 reload_sources_test: Skip # Times out.
 rewind_optimized_out_test: RuntimeError # Issue #33087
 rewind_test: Pass, RuntimeError
diff --git a/runtime/observatory/tests/service/set_library_debuggable_rpc_test.dart b/runtime/observatory/tests/service/set_library_debuggable_rpc_test.dart
index 92450d3..2a14bbb 100644
--- a/runtime/observatory/tests/service/set_library_debuggable_rpc_test.dart
+++ b/runtime/observatory/tests/service/set_library_debuggable_rpc_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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
 
 library set_library_debuggable_rpc_test;
 
diff --git a/runtime/observatory/tests/service/set_library_debuggable_test.dart b/runtime/observatory/tests/service/set_library_debuggable_test.dart
index 50573a2..6550a89 100644
--- a/runtime/observatory/tests/service/set_library_debuggable_test.dart
+++ b/runtime/observatory/tests/service/set_library_debuggable_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 library set_library_debuggable_test;
 
@@ -11,9 +10,9 @@
 import 'service_test_common.dart';
 import 'test_helper.dart';
 
-const LINE_A = 20;
-const LINE_B = 21;
-const LINE_C = 22;
+const LINE_A = 19;
+const LINE_B = 20;
+const LINE_C = 21;
 
 testMain() async {
   debugger();
diff --git a/runtime/observatory/tests/service/set_name_rpc_test.dart b/runtime/observatory/tests/service/set_name_rpc_test.dart
index 3dacd73..790cd46 100644
--- a/runtime/observatory/tests/service/set_name_rpc_test.dart
+++ b/runtime/observatory/tests/service/set_name_rpc_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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 --vm-name=Walter
+// VMOptions=--vm-name=Walter
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/set_vm_name_rpc_test.dart b/runtime/observatory/tests/service/set_vm_name_rpc_test.dart
index 2532efd..3a7c62c 100644
--- a/runtime/observatory/tests/service/set_vm_name_rpc_test.dart
+++ b/runtime/observatory/tests/service/set_vm_name_rpc_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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 --vm-name=Walter
+// VMOptions=--vm-name=Walter
 
 import 'dart:async';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/steal_breakpoint_test.dart b/runtime/observatory/tests/service/steal_breakpoint_test.dart
index b861aea..540eda4 100644
--- a/runtime/observatory/tests/service/steal_breakpoint_test.dart
+++ b/runtime/observatory/tests/service/steal_breakpoint_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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 --steal-breakpoints
+// VMOptions=--steal-breakpoints
 
 import 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/step_into_async_no_await_test.dart b/runtime/observatory/tests/service/step_into_async_no_await_test.dart
index fffe5b0..23cf4df 100644
--- a/runtime/observatory/tests/service/step_into_async_no_await_test.dart
+++ b/runtime/observatory/tests/service/step_into_async_no_await_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'test_helper.dart';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/step_over_await_test.dart b/runtime/observatory/tests/service/step_over_await_test.dart
index f2db331..3471106 100644
--- a/runtime/observatory/tests/service/step_over_await_test.dart
+++ b/runtime/observatory/tests/service/step_over_await_test.dart
@@ -1,7 +1,7 @@
 // Copyright (c) 2015, 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  --verbose_debug
+// VMOptions=--verbose_debug
 
 import 'dart:async';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/string_escaping_test.dart b/runtime/observatory/tests/service/string_escaping_test.dart
index 7d1b358..81783d6 100644
--- a/runtime/observatory/tests/service/string_escaping_test.dart
+++ b/runtime/observatory/tests/service/string_escaping_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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
 
 library string_escaping_test;
 
diff --git a/runtime/observatory/tests/service/type_arguments_test.dart b/runtime/observatory/tests/service/type_arguments_test.dart
index c97d680..fe3f925 100644
--- a/runtime/observatory/tests/service/type_arguments_test.dart
+++ b/runtime/observatory/tests/service/type_arguments_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/typed_data_test.dart b/runtime/observatory/tests/service/typed_data_test.dart
index 13dd5ee..1459af5 100644
--- a/runtime/observatory/tests/service/typed_data_test.dart
+++ b/runtime/observatory/tests/service/typed_data_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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
 
 library typed_data_test;
 
diff --git a/runtime/observatory/tests/service/valid_source_locations_test.dart b/runtime/observatory/tests/service/valid_source_locations_test.dart
index 850f5fe..e00717f 100644
--- a/runtime/observatory/tests/service/valid_source_locations_test.dart
+++ b/runtime/observatory/tests/service/valid_source_locations_test.dart
@@ -1,7 +1,6 @@
 // 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';
diff --git a/runtime/observatory/tests/service/vm_test.dart b/runtime/observatory/tests/service/vm_test.dart
index 5428bdf..55b060a 100644
--- a/runtime/observatory/tests/service/vm_test.dart
+++ b/runtime/observatory/tests/service/vm_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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 'package:observatory/service_io.dart';
 import 'package:unittest/unittest.dart';
diff --git a/runtime/observatory/tests/service/vm_timeline_events_test.dart b/runtime/observatory/tests/service/vm_timeline_events_test.dart
index d6eec71..9b2e550 100644
--- a/runtime/observatory/tests/service/vm_timeline_events_test.dart
+++ b/runtime/observatory/tests/service/vm_timeline_events_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:async';
 import 'dart:developer';
diff --git a/runtime/observatory/tests/service/vm_timeline_flags_test.dart b/runtime/observatory/tests/service/vm_timeline_flags_test.dart
index d32c291..4e71d95 100644
--- a/runtime/observatory/tests/service/vm_timeline_flags_test.dart
+++ b/runtime/observatory/tests/service/vm_timeline_flags_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// VMOptions=--error_on_bad_type --error_on_bad_override
 
 import 'dart:developer';
 import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/weak_properties_test.dart b/runtime/observatory/tests/service/weak_properties_test.dart
index 4114aeb..e9ba05f 100644
--- a/runtime/observatory/tests/service/weak_properties_test.dart
+++ b/runtime/observatory/tests/service/weak_properties_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2014, 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
 
 library vm_references_test;
 
diff --git a/runtime/runtime_args.gni b/runtime/runtime_args.gni
index 23894e2..16fff64 100644
--- a/runtime/runtime_args.gni
+++ b/runtime/runtime_args.gni
@@ -31,9 +31,13 @@
   # Available options are: arm, arm64, x64, ia32, and dbc.
   dart_target_arch = target_cpu
 
-  # The optimization level to use for debug builds.
+  # The optimization level to use for debug builds. Defaults to 0 for builds with
+  # code coverage enabled.
   dart_debug_optimization_level = "2"
 
+  # Whether to enable code coverage for the standalone VM.
+  dart_vm_code_coverage = false
+
   # Whether to fall back to built-in root certificates when they cannot be
   # verified at the operating system level.
   dart_use_fallback_root_certificates = false
diff --git a/runtime/tests/vm/dart/regress32619_test.dart b/runtime/tests/vm/dart/regress32619_test.dart
new file mode 100644
index 0000000..3659926
--- /dev/null
+++ b/runtime/tests/vm/dart/regress32619_test.dart
@@ -0,0 +1,41 @@
+// 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.
+
+// Regression test for dartbug.com/32619: incorrect widening of smis to int32.
+
+// VMOptions=--optimization-counter-threshold=5 --no-background-compilation
+
+import "package:expect/expect.dart";
+import 'dart:typed_data';
+
+const int _digitBits = 32;
+const int _digitMask = (1 << _digitBits) - 1;
+
+const int _halfDigitBits = _digitBits >> 1;
+const int _halfDigitMask = (1 << _halfDigitBits) - 1;
+
+int _mulAdd(Uint32List multiplicandDigits, int i, Uint32List accumulatorDigits,
+    int j, int n) {
+  int carry = 0;
+  while (--n >= 0) {
+    int ml = multiplicandDigits[i] & _halfDigitMask;
+    int mh = multiplicandDigits[i++] >> _halfDigitBits;
+    int ph = mh * 4;
+    int q1 = ((ph & _halfDigitMask) << _halfDigitBits);
+    int pl = 4 * ml + q1 + accumulatorDigits[j];
+    carry = (pl >> _digitBits) + (ph >> _halfDigitBits);
+    accumulatorDigits[j++] = pl & _digitMask;
+  }
+
+  return carry;
+}
+
+main() {
+  var multiplicandDigits = new Uint32List.fromList([0, 294967296, 0, 0]);
+  var accumulatorDigits = new Uint32List.fromList([0, 4, 4, 0, 0, 0]);
+
+  var d1 = _mulAdd(multiplicandDigits, 0, accumulatorDigits, 0, 2);
+
+  Expect.equals(0, d1);
+}
diff --git a/runtime/tests/vm/vm.status b/runtime/tests/vm/vm.status
index 40f0a5f..d4ed053 100644
--- a/runtime/tests/vm/vm.status
+++ b/runtime/tests/vm/vm.status
@@ -17,11 +17,13 @@
 cc/IsolateReload_PendingUnqualifiedCall_InstanceToStatic: Fail # Issue 32981
 cc/IsolateReload_PendingUnqualifiedCall_StaticToInstance: Fail # Issue 32981
 cc/IsolateReload_RunNewFieldInitializersWithGenerics: Fail # Issue 32299
+cc/Profiler_FunctionInline: Pass, Fail # Flaky failure.
 cc/Profiler_InliningIntervalBoundry: Skip # Differences in ia32, debug, release
 cc/SNPrint_BadArgs: Crash, Fail # These tests are expected to crash on all platforms.
 dart/data_uri_import_test/none: SkipByDesign
-dart/entrypoints/*: Skip  # Only supported in Dart 2 JIT (hot-reload -> issue 34199).
 dart/snapshot_version_test: Skip # This test is a Dart1 test (script snapshot)
+dart/slow_path_shared_stub_test: Pass, Slow # Uses --shared-slow-path-triggers-gc flag.
+dart/stack_overflow_shared_test: Pass, Slow # Uses --shared-slow-path-triggers-gc flag.
 
 [ $builder_tag == asan ]
 cc/CodeImmutability: Fail, OK # Address Sanitizer turns a crash into a failure.
@@ -48,6 +50,9 @@
 dart/truncating_ints_test: SkipByDesign # The test requires int64.
 dart/wrap_around_in_range_analysis_test: SkipByDesign # The test requires int64.
 
+[ $compiler != dartk || ($arch != x64 && $arch != simarm && $arch != arm) || $hot_reload || $hot_reload_rollback ]
+dart/entrypoints/*: SkipByDesign  # Only supported in the Dart 2 JIT and test optimizations - hence disabled on hotreload bots.
+
 [ ($compiler == dartk || $compiler == dartkb) ]
 cc/DartAPI_New: Fail # Issue #33041
 dart/redirection_type_shuffling_test/00: RuntimeError, Pass
@@ -83,7 +88,6 @@
 dart/issue32950_test: SkipByDesign # uses spawnUri.
 
 [ $runtime == vm && $mode == product && $compiler == dartk ]
-cc/GenKernelKernelReadAllBytecode: Crash
 cc/CorelibIsolateStartup: Timeout, Pass
 
 [ $runtime != vm ]
@@ -104,11 +108,10 @@
 cc/Service_Profile: Skip
 cc/GenKernelKernelLoadKernel: Skip  # Issue 34542.
 cc/GenKernelKernelReadAllBytecode: Skip  # Issue 34393.
+cc/GenKernelKernelCombined: Skip  # Issue 34393.
+cc/GenKernelKernelMaxRSS: Skip  # Issue 34393.
 dart/appjit_bytecode_simple_test: Skip  # Issue 34393.
 
-[ $system == windows && $arch == ia32 ]
-cc/BitTestImmediate: Crash # Issue 34723
-
 [ !$strong ]
 dart/callee_side_type_checks_test: SkipByDesign
 
@@ -150,9 +153,6 @@
 cc/Profiler_BasicSourcePosition: Fail # http://dartbug.com/33224
 cc/Profiler_CodeTicks: Fail # dartbug.com/33337
 
-[ $arch == ia32 && $compiler != dartk && $compiler != dartkp && $compiler != dartkb && $system == windows && $runtime == vm && $mode == debug ]
-cc/BitTestImmediate: Crash # dartbug.com/34252
-
 [ $arch == x64 && $system == windows ]
 cc/Profiler_BinaryOperatorSourcePositionOptimized: Pass, Fail # Issue 31137
 cc/Profiler_ClosureAllocation: Pass, Fail # Issue 31137
@@ -168,7 +168,7 @@
 cc/PrintJSON: Crash
 cc/Service_TokenStream: Crash
 
-[ ($compiler == dartk || $compiler == dartkb) && $mode == debug && $runtime == vm ]
+[ ($compiler == dartk || $compiler == dartkb) && $runtime == vm ]
 dart/appjit_cha_deopt_test: Pass, RuntimeError # Issue 34627
 
 # Enabling of dartk for sim{arm,arm64,dbc64} revelaed these test failures, which
@@ -329,69 +329,16 @@
 
 # Tests that use functionality not supported in Dart 2.
 [ ($compiler == dartk || $compiler == dartkb) || $compiler == dartkp ]
-cc/CanonicalizationInScriptSnapshots: SkipByDesign # Script snapshots unsupported.
 cc/DartAPI_IsolateSetCheckedMode: SkipByDesign # Checked mode is not relevant for dart 2?
-cc/DartAPI_LazyLoadDeoptimizes: SkipByDesign # Issue 33043, Dart_LoadSource unsupported.
-cc/DartAPI_LoadLibraryPatch_Error1: SkipByDesign # Dart_LibraryLoadPatch unsupported.
-cc/DartAPI_LoadLibraryPatch_Error2: SkipByDesign
-cc/DartAPI_LoadLibraryPatch_Error3: SkipByDesign
-cc/DartAPI_LoadPatch: SkipByDesign
-cc/DartAPI_LoadPatchSignatureMismatch: SkipByDesign
-cc/DartAPI_LoadSource: SkipByDesign # Dart_LoadSource unsupported.
-cc/DartAPI_LoadSource_LateLoad: SkipByDesign
-cc/DartAPI_ParsePatchLibrary: SkipByDesign
-cc/GenerateSource: Skip # Cannot generate source from a kernel binary.
-cc/Parser_AllocateVariables_CaptureLoopVar: SkipByDesign # VM parser tests.
-cc/Parser_AllocateVariables_CapturedVar: SkipByDesign
-cc/Parser_AllocateVariables_Issue7681: SkipByDesign
-cc/Parser_AllocateVariables_MiddleChain: SkipByDesign
-cc/Parser_AllocateVariables_NestedCapturedVar: SkipByDesign
-cc/Parser_AllocateVariables_TwoChains: SkipByDesign
-cc/ScriptSnapshot: SkipByDesign # Script snapshots unsupported.
-cc/ScriptSnapshot2: SkipByDesign
-cc/SourcePosition_Async: SkipByDesign # VM parser tests (Issue 32704)
-cc/SourcePosition_BitwiseOperations: SkipByDesign
-cc/SourcePosition_ForLoop: SkipByDesign
-cc/SourcePosition_If: SkipByDesign
-cc/SourcePosition_IfElse: SkipByDesign
-cc/SourcePosition_InstanceCalls: SkipByDesign
-cc/SourcePosition_InstanceFields: SkipByDesign
-cc/SourcePosition_LoadIndexed: SkipByDesign
-cc/SourcePosition_StoreIndexed: SkipByDesign
-cc/SourcePosition_Switch: SkipByDesign
-cc/SourcePosition_TryCatchFinally: SkipByDesign
-cc/SourcePosition_While: SkipByDesign
-cc/SourcePosition_WhileContinueBreak: SkipByDesign
 cc/CompileFunctionOnHelperThread: SkipByDesign
 cc/CompileFunction: SkipByDesign
 cc/InvokeDynamic_CompileError: SkipByDesign
 cc/InvokeStatic_CompileError: SkipByDesign
 cc/DartEntry: SkipByDesign
 cc/FindCodeObject: SkipByDesign
-cc/Parser_TopLevel: SkipByDesign
 cc/DartDynamicResolve: SkipByDesign
 cc/DartStaticResolve: SkipByDesign
-cc/AllocateNewObjectCodegen: SkipByDesign
-cc/InstanceCallCodegen: SkipByDesign
-cc/StaticCallCodegen: SkipByDesign
-cc/SimpleReturnCodegen: SkipByDesign
-cc/SmiReturnCodegen: SkipByDesign
-cc/SimpleStaticCallCodegen: SkipByDesign
-cc/StaticCallReturnParameterCodegen: SkipByDesign
-cc/StaticCallReturnParameterCodegen: SkipByDesign
-cc/StaticCallSmiParamSumCodegen: SkipByDesign
-cc/SmiAddCodegen: SkipByDesign
-cc/GenericAddCodegen: SkipByDesign
-cc/SmiBinaryOpCodegen: SkipByDesign
-cc/BoolNotCodegen: SkipByDesign
-cc/BoolAndCodegen: SkipByDesign
-cc/BinaryOpCodegen: SkipByDesign
-cc/SmiUnaryOpCodegen: SkipByDesign
-cc/DoubleUnaryOpCodegen: SkipByDesign
-cc/ParseClassDefinition: SkipByDesign
 cc/CompileScript: SkipByDesign
-cc/DartAPI_LoadLibraryPatch_1: SkipByDesign
-cc/StackMapCodegen: SkipByDesign
 
 [ $compiler == precompiler || $mode == product ]
 cc/CoreSnapshotSize: SkipByDesign # Imports dart:mirrors
@@ -401,10 +348,10 @@
 
 [ $hot_reload || $hot_reload_rollback ]
 dart/appjit*: SkipByDesign # Cannot reload with URI pointing to app snapshot.
-dart/slow_path_shared_stub_test: SkipSlow # Too slow with --slow-path-triggers-gc flag and not relevant outside precompiled.
+dart/slow_path_shared_stub_test: SkipSlow # Too slow with --shared-slow-path-triggers-gc flag and not relevant outside precompiled.
 dart/spawn_infinite_loop_test: Skip # We can shutdown an isolate before it reloads.
 dart/spawn_shutdown_test: Skip # We can shutdown an isolate before it reloads.
-dart/stack_overflow_shared_test: SkipSlow # Too slow with --slow-path-triggers-gc flag and not relevant outside precompiled.
+dart/stack_overflow_shared_test: SkipSlow # Too slow with --shared-slow-path-triggers-gc flag and not relevant outside precompiled.
 
 [ ($runtime == vm || $runtime == dart_precompiled) && !$preview_dart_2 ]
 *:SkipByDesign # Deprecating all Dart1 modes of execution
diff --git a/runtime/tools/create_archive.py b/runtime/tools/create_archive.py
index 2857db4..ebad9c9 100755
--- a/runtime/tools/create_archive.py
+++ b/runtime/tools/create_archive.py
@@ -179,7 +179,7 @@
       return MakeCCFile(options)
 
   except Exception, inst:
-    sys.stderr.write('create_resources.py exception\n')
+    sys.stderr.write('create_archive.py exception\n')
     sys.stderr.write(str(inst))
     sys.stderr.write('\n')
     return -1
diff --git a/runtime/tools/create_resources.py b/runtime/tools/create_resources.py
deleted file mode 100755
index 1e97496..0000000
--- a/runtime/tools/create_resources.py
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2013, 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.
-#
-# This python script creates string literals in a C++ source file from a C++
-# source template and one or more resource files.
-
-import os
-import sys
-from os.path import join, splitext
-import time
-from optparse import OptionParser
-import re
-from datetime import date
-import zlib
-
-def makeResources(root_dir, client_dir, input_files, table_name, compress, no_compress_extensions):
-  result = ''
-  resources = []
-
-  # Write each file's contents as a byte string constant.
-  for resource_file in input_files:
-    if root_dir and resource_file.startswith(root_dir):
-      resource_file_name = resource_file[ len(root_dir) : ]
-    elif client_dir and resource_file.startswith(client_dir):
-      resource_file_name = resource_file[ len(client_dir) : ]
-    else:
-      resource_file_name = resource_file
-    _, ext = os.path.splitext(resource_file)
-    if ext in no_compress_extensions:
-      # Force no compression for files of this extension.
-      compress = None
-    resource_url = '/%s' % resource_file_name
-    result += '// %s\n' % resource_file
-    result += 'const char '
-    resource_name = re.sub(r'(/|\.|-|\\)', '_', resource_file_name) + '_'
-    result += resource_name
-    result += '[] = {\n   '
-    fileHandle = open(resource_file, 'rb')
-    lineCounter = 0
-    file_contents = fileHandle.read()
-    if compress:
-      file_contents = zlib.compress(file_contents)
-    for byte in file_contents:
-      result += r" '\x%02x'," % ord(byte)
-      lineCounter += 1
-      if lineCounter == 10:
-        result += '\n   '
-        lineCounter = 0
-    if lineCounter != 0:
-      result += '\n   '
-    result += ' 0\n};\n\n'
-    resource_url_scrubbed = re.sub(r'\\', '/', resource_url)
-    resources.append(
-        (resource_url_scrubbed, resource_name, len(file_contents)));
-
-  # Write the resource table.
-  result += 'ResourcesEntry __%s_resources_[] = ' % table_name
-  result += '{\n'
-  for res in resources:
-    result += '   { "%s", %s, %d },\n' % res
-  result += '   { 0, 0, 0 },\n'
-  result += '};\n\n'
-  return result
-
-
-def makeFile(output_file, root_dir, client_dir, input_files, outer_namespace,
-             inner_namespace, table_name, compress, no_compress_extensions):
-  cc_text = '''
-// Copyright (c) %d, 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.
-
-''' % date.today().year
-  cc_text += 'namespace %s {\n' % outer_namespace
-  if inner_namespace != None:
-    cc_text += 'namespace %s {\n' % inner_namespace
-  cc_text += '''
-struct ResourcesEntry {
-  const char* path_;
-  const char* resource_;
-  int length_;
-};
-
-'''
-  cc_text += makeResources(root_dir, client_dir, input_files, table_name,
-                           compress, no_compress_extensions)
-  cc_text += '\n'
-  if inner_namespace != None:
-    cc_text += '}  // namespace %s\n' % inner_namespace
-  cc_text += '} // namespace %s\n' % outer_namespace
-  open(output_file, 'w').write(cc_text)
-  return True
-
-
-def main(args):
-  try:
-    # Parse input.
-    parser = OptionParser()
-    parser.add_option("--output",
-                      action="store", type="string",
-                      help="output file name")
-    parser.add_option("--root_prefix",
-                      action="store", type="string",
-                      help="root directory for resources")
-    parser.add_option("--outer_namespace",
-                      action="store", type="string",
-                      help="outer C++ namespace",
-                      default="dart")
-    parser.add_option("--inner_namespace",
-                      action="store", type="string",
-                      help="inner C++ namespace")
-    parser.add_option("--table_name",
-                      action="store", type="string",
-                      help="name of table")
-    parser.add_option("--client_root",
-                      action="store", type="string",
-                      help="root directory client resources")
-    parser.add_option("--compress",
-                      action="store_true",
-                      help="zlib compress resources")
-    parser.add_option("--no_compress_extensions",
-                      action="append",
-                      default=['.dart'],
-                      help="file extensions that should not be compressed.")
-
-    (options, args) = parser.parse_args()
-    if not options.output:
-      sys.stderr.write('--output not specified\n')
-      return -1
-    if not options.table_name:
-      sys.stderr.write('--table_name not specified\n')
-      return -1
-    if len(args) == 0:
-      sys.stderr.write('No input files specified\n')
-      return -1
-
-    files = [ ]
-
-    if options.client_root != None:
-      for dirname, dirnames, filenames in os.walk(options.client_root):
-        # strip out all dot files.
-        filenames = [f for f in filenames if not f[0] == '.']
-        dirnames[:] = [d for d in dirnames if not d[0] == '.']
-        for f in filenames:
-          src_path = os.path.join(dirname, f)
-          if (os.path.isdir(src_path)):
-              continue
-          # Skip devtools version
-          if (src_path.find("index_devtools") != -1):
-              continue
-          files.append(src_path)
-
-    for arg in args:
-      files.append(arg)
-
-    if not makeFile(options.output, options.root_prefix, options.client_root,
-                    files, options.outer_namespace, options.inner_namespace,
-                    options.table_name, options.compress,
-                    options.no_compress_extensions):
-      return -1
-
-    return 0
-  except Exception, inst:
-    sys.stderr.write('create_resources.py exception\n')
-    sys.stderr.write(str(inst))
-    sys.stderr.write('\n')
-    return -1
-
-if __name__ == '__main__':
-  sys.exit(main(sys.argv))
diff --git a/runtime/tools/dartfuzz/README.md b/runtime/tools/dartfuzz/README.md
index 5e05c29..ca5d676 100644
--- a/runtime/tools/dartfuzz/README.md
+++ b/runtime/tools/dartfuzz/README.md
@@ -52,6 +52,8 @@
         jit-[debug-]x64     = Dart JIT (x64)
         jit-[debug-]arm32   = Dart JIT (simarm)
         jit-[debug-]arm64   = Dart JIT (simarm64)
+        jit-[debug-]dbc     = Dart JIT (simdbc)
+        jit-[debug-]dbc64   = Dart JIT (simdbc64)
         aot-[debug-]x64     = Dart AOT (x64)
         aot-[debug-]arm64   = Dart AOT (simarm64)
         kbc-int-[debug-]x64 = Dart KBC (interpreted bytecode)
diff --git a/runtime/tools/dartfuzz/dartfuzz_test.dart b/runtime/tools/dartfuzz/dartfuzz_test.dart
index a1c5dfe..417c937 100644
--- a/runtime/tools/dartfuzz/dartfuzz_test.dart
+++ b/runtime/tools/dartfuzz/dartfuzz_test.dart
@@ -67,10 +67,14 @@
     if (mode.endsWith('debug-x64')) return 'DebugX64';
     if (mode.endsWith('debug-arm32')) return 'DebugSIMARM';
     if (mode.endsWith('debug-arm64')) return 'DebugSIMARM64';
+    if (mode.endsWith('debug-dbc')) return 'DebugSIMDBC';
+    if (mode.endsWith('debug-dbc64')) return 'DebugSIMDBC64';
     if (mode.endsWith('ia32')) return 'ReleaseIA32';
     if (mode.endsWith('x64')) return 'ReleaseX64';
     if (mode.endsWith('arm32')) return 'ReleaseSIMARM';
     if (mode.endsWith('arm64')) return 'ReleaseSIMARM64';
+    if (mode.endsWith('dbc')) return 'ReleaseSIMDBC';
+    if (mode.endsWith('dbc64')) return 'ReleaseSIMDBC64';
     throw ('unknown tag in mode: $mode');
   }
 }
@@ -400,7 +404,7 @@
     // Random when not set.
     if (mode == null || mode == '') {
       // Pick a mode at random (cluster), different from other.
-      const cluster_modes = 16;
+      const cluster_modes = 20;
       Random rand = new Random();
       do {
         mode = modes[rand.nextInt(cluster_modes)];
@@ -432,10 +436,14 @@
     'jit-debug-x64',
     'jit-debug-arm32',
     'jit-debug-arm64',
+    'jit-debug-dbc',
+    'jit-debug-dbc64',
     'jit-ia32',
     'jit-x64',
     'jit-arm32',
     'jit-arm64',
+    'jit-dbc',
+    'jit-dbc64',
     'aot-debug-x64',
     'aot-x64',
     'kbc-int-debug-x64',
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index 28be7bd..cd8eaf1 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -105,7 +105,10 @@
     "$root_out_dir/vm_outline.dill",
   ]
 
-  args = [ "dart:core" ]
+  args = [
+    "--legacy-mode",
+    "dart:core",
+  ]
 }
 
 compile_platform("vm_platform") {
@@ -121,7 +124,7 @@
   ]
 
   args = [
-    "--strong-mode",
+    "--exclude-source",
     "dart:core",
   ]
 
diff --git a/runtime/vm/ast.cc b/runtime/vm/ast.cc
deleted file mode 100644
index 08def4b..0000000
--- a/runtime/vm/ast.cc
+++ /dev/null
@@ -1,757 +0,0 @@
-// Copyright (c) 2011, 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.
-
-#if !defined(DART_PRECOMPILED_RUNTIME)
-
-#include "vm/ast.h"
-#include "vm/compiler/jit/compiler.h"
-#include "vm/dart_entry.h"
-#include "vm/isolate.h"
-#include "vm/log.h"
-#include "vm/object_store.h"
-#include "vm/resolver.h"
-
-namespace dart {
-
-#define DEFINE_VISIT_FUNCTION(BaseName)                                        \
-  void BaseName##Node::Visit(AstNodeVisitor* visitor) {                        \
-    visitor->Visit##BaseName##Node(this);                                      \
-  }
-
-FOR_EACH_NODE(DEFINE_VISIT_FUNCTION)
-#undef DEFINE_VISIT_FUNCTION
-
-#define DEFINE_NAME_FUNCTION(BaseName)                                         \
-  const char* BaseName##Node::Name() const { return #BaseName; }
-
-FOR_EACH_NODE(DEFINE_NAME_FUNCTION)
-#undef DEFINE_NAME_FUNCTION
-
-const Field* AstNode::MayCloneField(const Field& value) {
-  if (Compiler::IsBackgroundCompilation() ||
-      FLAG_force_clone_compiler_objects) {
-    return &Field::ZoneHandle(value.CloneFromOriginal());
-  } else {
-    ASSERT(value.IsZoneHandle());
-    return &value;
-  }
-}
-
-// A visitor class to collect all the nodes (including children) into an
-// array.
-class AstNodeCollector : public AstNodeVisitor {
- public:
-  explicit AstNodeCollector(GrowableArray<AstNode*>* nodes) : nodes_(nodes) {}
-
-#define DEFINE_VISITOR_FUNCTION(BaseName)                                      \
-  virtual void Visit##BaseName##Node(BaseName##Node* node) {                   \
-    nodes_->Add(node);                                                         \
-    node->VisitChildren(this);                                                 \
-  }
-
-  FOR_EACH_NODE(DEFINE_VISITOR_FUNCTION)
-#undef DEFINE_VISITOR_FUNCTION
-
- private:
-  GrowableArray<AstNode*>* nodes_;
-  DISALLOW_COPY_AND_ASSIGN(AstNodeCollector);
-};
-
-void SequenceNode::CollectAllNodes(GrowableArray<AstNode*>* nodes) {
-  AstNodeCollector node_collector(nodes);
-  this->Visit(&node_collector);
-}
-
-void SequenceNode::VisitChildren(AstNodeVisitor* visitor) const {
-  for (intptr_t i = 0; i < this->length(); i++) {
-    NodeAt(i)->Visit(visitor);
-  }
-}
-
-void SequenceNode::Add(AstNode* node) {
-  if (node->IsReturnNode()) {
-    node->AsReturnNode()->set_scope(scope());
-  }
-  nodes_.Add(node);
-}
-
-void PrimaryNode::VisitChildren(AstNodeVisitor* visitor) const {}
-
-void ArgumentListNode::VisitChildren(AstNodeVisitor* visitor) const {
-  for (intptr_t i = 0; i < this->length(); i++) {
-    NodeAt(i)->Visit(visitor);
-  }
-}
-
-LetNode::LetNode(TokenPosition token_pos)
-    : AstNode(token_pos), vars_(1), initializers_(1), nodes_(1) {}
-
-LocalVariable* LetNode::AddInitializer(AstNode* node) {
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-  initializers_.Add(node);
-  char name[64];
-  Utils::SNPrint(name, sizeof(name), ":lt%s_%" Pd "", token_pos().ToCString(),
-                 vars_.length());
-  LocalVariable* temp_var =
-      new LocalVariable(TokenPosition::kNoSource, token_pos(),
-                        String::ZoneHandle(zone, Symbols::New(thread, name)),
-                        Object::dynamic_type());
-  vars_.Add(temp_var);
-  return temp_var;
-}
-
-void LetNode::VisitChildren(AstNodeVisitor* visitor) const {
-  for (intptr_t i = 0; i < num_temps(); ++i) {
-    initializers_[i]->Visit(visitor);
-  }
-  for (intptr_t i = 0; i < nodes_.length(); ++i) {
-    nodes_[i]->Visit(visitor);
-  }
-}
-
-bool LetNode::IsPotentiallyConst() const {
-  for (intptr_t i = 0; i < num_temps(); i++) {
-    if (!initializers_[i]->IsPotentiallyConst()) {
-      return false;
-    }
-  }
-  for (intptr_t i = 0; i < nodes_.length(); i++) {
-    if (!nodes_[i]->IsPotentiallyConst()) {
-      return false;
-    }
-  }
-  return true;
-}
-
-const Instance* LetNode::EvalConstExpr() const {
-  for (intptr_t i = 0; i < num_temps(); i++) {
-    if (initializers_[i]->EvalConstExpr() == NULL) {
-      return NULL;
-    }
-  }
-  const Instance* last = NULL;
-  for (intptr_t i = 0; i < nodes_.length(); i++) {
-    last = nodes_[i]->EvalConstExpr();
-    if (last == NULL) {
-      return NULL;
-    }
-  }
-  return last;
-}
-
-void ArrayNode::VisitChildren(AstNodeVisitor* visitor) const {
-  for (intptr_t i = 0; i < this->length(); i++) {
-    ElementAt(i)->Visit(visitor);
-  }
-}
-
-bool StringInterpolateNode::IsPotentiallyConst() const {
-  for (int i = 0; i < value_->length(); i++) {
-    if (!value_->ElementAt(i)->IsPotentiallyConst()) {
-      return false;
-    }
-  }
-  return true;
-}
-
-bool LiteralNode::IsPotentiallyConst() const {
-  return true;
-}
-
-AstNode* LiteralNode::ApplyUnaryOp(Token::Kind unary_op_kind) {
-  if (unary_op_kind == Token::kNEGATE) {
-    if (literal().IsSmi()) {
-      const Smi& smi = Smi::Cast(literal());
-      const Instance& literal =
-          Instance::ZoneHandle(Integer::New(-smi.Value(), Heap::kOld));
-      return new LiteralNode(this->token_pos(), literal);
-    }
-    if (literal().IsMint()) {
-      const Mint& mint = Mint::Cast(literal());
-      const Instance& literal =
-          Instance::ZoneHandle(Integer::New(-mint.value(), Heap::kOld));
-      return new LiteralNode(this->token_pos(), literal);
-    }
-    if (literal().IsDouble()) {
-      const Double& dbl = Double::Cast(literal());
-      // Preserve negative zero.
-      double new_value = (dbl.value() == 0.0) ? -0.0 : (0.0 - dbl.value());
-      const Double& double_instance =
-          Double::ZoneHandle(Double::NewCanonical(new_value));
-      return new LiteralNode(this->token_pos(), double_instance);
-    }
-  } else if (unary_op_kind == Token::kBIT_NOT) {
-    if (literal().IsSmi()) {
-      const Smi& smi = Smi::Cast(literal());
-      const Instance& literal =
-          Instance::ZoneHandle(Integer::New(~smi.Value(), Heap::kOld));
-      return new LiteralNode(this->token_pos(), literal);
-    }
-    if (literal().IsMint()) {
-      const Mint& mint = Mint::Cast(literal());
-      const Instance& literal =
-          Instance::ZoneHandle(Integer::New(~mint.value(), Heap::kOld));
-      return new LiteralNode(this->token_pos(), literal);
-    }
-  } else if (unary_op_kind == Token::kNOT) {
-    if (literal().IsBool()) {
-      const Bool& boolean = Bool::Cast(literal());
-      return new LiteralNode(this->token_pos(), Bool::Get(!boolean.value()));
-    }
-  }
-  return NULL;
-}
-
-const char* TypeNode::TypeName() const {
-  return String::Handle(type().UserVisibleName()).ToCString();
-}
-
-bool ComparisonNode::IsKindValid() const {
-  return Token::IsRelationalOperator(kind_) ||
-         Token::IsEqualityOperator(kind_) || Token::IsTypeTestOperator(kind_) ||
-         Token::IsTypeCastOperator(kind_);
-}
-
-const char* ComparisonNode::TokenName() const {
-  return (kind_ == Token::kAS) ? "as" : Token::Str(kind_);
-}
-
-bool ComparisonNode::IsPotentiallyConst() const {
-  switch (kind_) {
-    case Token::kLT:
-    case Token::kGT:
-    case Token::kLTE:
-    case Token::kGTE:
-    case Token::kEQ:
-    case Token::kNE:
-    case Token::kEQ_STRICT:
-    case Token::kNE_STRICT:
-      return this->left()->IsPotentiallyConst() &&
-             this->right()->IsPotentiallyConst();
-    default:
-      return false;
-  }
-}
-
-const Instance* ComparisonNode::EvalConstExpr() const {
-  const Instance* left_val = this->left()->EvalConstExpr();
-  if (left_val == NULL) {
-    return NULL;
-  }
-  const Instance* right_val = this->right()->EvalConstExpr();
-  if (right_val == NULL) {
-    return NULL;
-  }
-  switch (kind_) {
-    case Token::kLT:
-    case Token::kGT:
-    case Token::kLTE:
-    case Token::kGTE:
-      if ((left_val->IsNumber() || left_val->IsNull()) &&
-          (right_val->IsNumber() || right_val->IsNull())) {
-        return &Bool::False();
-      }
-      return NULL;
-    case Token::kEQ:
-    case Token::kNE:
-      // The comparison is a compile time const if both operands are either a
-      // number, string, or boolean value (but not necessarily the same type).
-      if ((left_val->IsNumber() || left_val->IsString() || left_val->IsBool() ||
-           left_val->IsNull()) &&
-          (right_val->IsNumber() || right_val->IsString() ||
-           right_val->IsBool() || right_val->IsNull())) {
-        return &Bool::False();
-      }
-      return NULL;
-    case Token::kEQ_STRICT:
-    case Token::kNE_STRICT:
-      // identical(a, b) is a compile time const if both operands are
-      // compile time constants, regardless of their type.
-      return &Bool::True();
-    default:
-      return NULL;
-  }
-  return NULL;
-}
-
-bool BinaryOpNode::IsKindValid() const {
-  switch (kind_) {
-    case Token::kADD:
-    case Token::kSUB:
-    case Token::kMUL:
-    case Token::kDIV:
-    case Token::kTRUNCDIV:
-    case Token::kMOD:
-    case Token::kOR:
-    case Token::kAND:
-    case Token::kIFNULL:
-    case Token::kBIT_OR:
-    case Token::kBIT_XOR:
-    case Token::kBIT_AND:
-    case Token::kSHL:
-    case Token::kSHR:
-      return true;
-    default:
-      return false;
-  }
-}
-
-const char* BinaryOpNode::TokenName() const {
-  return Token::Str(kind_);
-}
-
-bool BinaryOpNode::IsPotentiallyConst() const {
-  switch (kind_) {
-    case Token::kOR:
-    case Token::kAND:
-      if (this->left()->IsLiteralNode() &&
-          this->left()->AsLiteralNode()->literal().IsNull()) {
-        return false;
-      }
-      if (this->right()->IsLiteralNode() &&
-          this->right()->AsLiteralNode()->literal().IsNull()) {
-        return false;
-      }
-      /* Falls through */
-    case Token::kADD:
-    case Token::kSUB:
-    case Token::kMUL:
-    case Token::kDIV:
-    case Token::kMOD:
-    case Token::kTRUNCDIV:
-    case Token::kBIT_OR:
-    case Token::kBIT_XOR:
-    case Token::kBIT_AND:
-    case Token::kSHL:
-    case Token::kSHR:
-    case Token::kIFNULL:
-      return this->left()->IsPotentiallyConst() &&
-             this->right()->IsPotentiallyConst();
-    default:
-      UNREACHABLE();
-      return false;
-  }
-}
-
-const Instance* BinaryOpNode::EvalConstExpr() const {
-  const Instance* left_val = this->left()->EvalConstExpr();
-  if (left_val == NULL) {
-    return NULL;
-  }
-  if (!left_val->IsNumber() && !left_val->IsBool() && !left_val->IsString() &&
-      kind_ != Token::kIFNULL) {
-    return NULL;
-  }
-  const Instance* right_val = this->right()->EvalConstExpr();
-  if (right_val == NULL) {
-    return NULL;
-  }
-  switch (kind_) {
-    case Token::kADD:
-      if (left_val->IsString()) {
-        return right_val->IsString() ? left_val : NULL;
-      }
-      /* Falls through */
-    case Token::kSUB:
-    case Token::kMUL:
-    case Token::kDIV:
-    case Token::kMOD:
-    case Token::kTRUNCDIV:
-      if (left_val->IsInteger()) {
-        if (right_val->IsInteger()) {
-          return left_val;
-        } else if (right_val->IsNumber()) {
-          return right_val;
-        }
-      } else if (left_val->IsNumber() && right_val->IsNumber()) {
-        return left_val;
-      }
-      return NULL;
-    case Token::kBIT_OR:
-    case Token::kBIT_XOR:
-    case Token::kBIT_AND:
-    case Token::kSHL:
-    case Token::kSHR:
-      if (left_val->IsInteger() && right_val->IsInteger()) {
-        return right_val;
-      }
-      return NULL;
-    case Token::kOR:
-    case Token::kAND:
-      if (left_val->IsBool() && right_val->IsBool()) {
-        return left_val;
-      }
-      return NULL;
-    case Token::kIFNULL:
-      if (left_val->IsNull()) {
-        return right_val;
-      }
-      return left_val;
-    default:
-      UNREACHABLE();
-      return NULL;
-  }
-  return NULL;
-}
-
-AstNode* UnaryOpNode::UnaryOpOrLiteral(TokenPosition token_pos,
-                                       Token::Kind kind,
-                                       AstNode* operand) {
-  AstNode* new_operand = operand->ApplyUnaryOp(kind);
-  if (new_operand != NULL) {
-    return new_operand;
-  }
-  return new UnaryOpNode(token_pos, kind, operand);
-}
-
-bool UnaryOpNode::IsKindValid() const {
-  switch (kind_) {
-    case Token::kNEGATE:
-    case Token::kNOT:
-    case Token::kBIT_NOT:
-      return true;
-    default:
-      return false;
-  }
-}
-
-bool UnaryOpNode::IsPotentiallyConst() const {
-  if (this->operand()->IsLiteralNode() &&
-      this->operand()->AsLiteralNode()->literal().IsNull()) {
-    return false;
-  }
-  return this->operand()->IsPotentiallyConst();
-}
-
-const Instance* UnaryOpNode::EvalConstExpr() const {
-  const Instance* val = this->operand()->EvalConstExpr();
-  if (val == NULL) {
-    return NULL;
-  }
-  switch (kind_) {
-    case Token::kNEGATE:
-      return val->IsNumber() ? val : NULL;
-    case Token::kNOT:
-      return val->IsBool() ? val : NULL;
-    case Token::kBIT_NOT:
-      return val->IsInteger() ? val : NULL;
-    default:
-      return NULL;
-  }
-}
-
-bool ConditionalExprNode::IsPotentiallyConst() const {
-  return this->condition()->IsPotentiallyConst() &&
-         this->true_expr()->IsPotentiallyConst() &&
-         this->false_expr()->IsPotentiallyConst();
-}
-
-const Instance* ConditionalExprNode::EvalConstExpr() const {
-  const Instance* cond = this->condition()->EvalConstExpr();
-  if ((cond != NULL) && cond->IsBool() &&
-      (this->true_expr()->EvalConstExpr() != NULL) &&
-      (this->false_expr()->EvalConstExpr() != NULL)) {
-    return cond;
-  }
-  return NULL;
-}
-
-bool ClosureNode::IsPotentiallyConst() const {
-  if (function().IsImplicitStaticClosureFunction()) {
-    return true;
-  }
-  return false;
-}
-
-const Instance* ClosureNode::EvalConstExpr() const {
-  if (!is_deferred_reference_ && function().IsImplicitStaticClosureFunction()) {
-    // Return a value that represents an instance. Only the type is relevant.
-    return &Instance::Handle();
-  }
-  return NULL;
-}
-
-AstNode* ClosureNode::MakeAssignmentNode(AstNode* rhs) {
-  if (scope() == NULL) {
-    // This is an implicit closure node created because a static getter was not
-    // found. Change the getter into a setter. If it does not exist,
-    // noSuchMethod will be called.
-    return new StaticSetterNode(token_pos(), receiver(),
-                                Class::ZoneHandle(function().Owner()),
-                                String::ZoneHandle(function().name()), rhs,
-                                StaticGetterSetter::kNoRebind);
-  }
-  return NULL;
-}
-
-const char* UnaryOpNode::TokenName() const {
-  return Token::Str(kind_);
-}
-
-const char* JumpNode::TokenName() const {
-  return Token::Str(kind_);
-}
-
-bool LoadLocalNode::IsPotentiallyConst() const {
-  // Parameters of const constructors are implicitly final and can be
-  // used in initializer expressions.
-  // We can't check here whether the local variable is indeed a parameter,
-  // but this code is executed before any other local variables are
-  // added to the scope.
-  return local().is_final();
-}
-
-const Instance* LoadLocalNode::EvalConstExpr() const {
-  if (local().IsConst()) {
-    return local().ConstValue();
-  }
-  return NULL;
-}
-
-AstNode* LoadLocalNode::MakeAssignmentNode(AstNode* rhs) {
-  if (local().is_final()) {
-    return NULL;
-  }
-  return new StoreLocalNode(token_pos(), &local(), rhs);
-}
-
-AstNode* LoadStaticFieldNode::MakeAssignmentNode(AstNode* rhs) {
-  if (field().is_final()) {
-    return NULL;
-  }
-  if (Isolate::Current()->type_checks()) {
-    rhs = new AssignableNode(field().token_pos(), rhs,
-                             AbstractType::ZoneHandle(field().type()),
-                             String::ZoneHandle(field().name()));
-  }
-  return new StoreStaticFieldNode(token_pos(),
-                                  Field::ZoneHandle(field().Original()), rhs);
-}
-
-AstNode* InstanceGetterNode::MakeAssignmentNode(AstNode* rhs) {
-  return new InstanceSetterNode(token_pos(), receiver(), field_name(), rhs,
-                                is_conditional());
-}
-
-bool InstanceGetterNode::IsPotentiallyConst() const {
-  return field_name().Equals(Symbols::Length()) && !is_conditional() &&
-         receiver()->IsPotentiallyConst();
-}
-
-const Instance* InstanceGetterNode::EvalConstExpr() const {
-  if (field_name().Equals(Symbols::Length()) && !is_conditional()) {
-    const Instance* receiver_val = receiver()->EvalConstExpr();
-    if ((receiver_val != NULL) && receiver_val->IsString()) {
-      return &Instance::ZoneHandle(Smi::New(1));
-    }
-  }
-  return NULL;
-}
-
-AstNode* LoadIndexedNode::MakeAssignmentNode(AstNode* rhs) {
-  return new StoreIndexedNode(token_pos(), array(), index_expr(), rhs,
-                              super_class());
-}
-
-AstNode* StaticGetterNode::MakeAssignmentNode(AstNode* rhs) {
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-  Isolate* isolate = thread->isolate();
-  if (is_super_getter()) {
-    ASSERT(receiver() != NULL);
-    const String& setter_name =
-        String::ZoneHandle(zone, Field::LookupSetterSymbol(field_name_));
-    Function& setter = Function::ZoneHandle(zone);
-    if (!setter_name.IsNull()) {
-      setter = Resolver::ResolveDynamicAnyArgs(zone, cls(), setter_name);
-    }
-    if (setter.IsNull() || setter.is_abstract()) {
-      // No instance setter found in super class chain,
-      // noSuchMethod will be called at runtime.
-      return new StaticSetterNode(token_pos(), receiver(), cls(), field_name_,
-                                  rhs, StaticGetterSetter::kSuper);
-    }
-    return new StaticSetterNode(token_pos(), receiver(), field_name_, setter,
-                                rhs, StaticGetterSetter::kSuper);
-  }
-
-  if (owner().IsLibraryPrefix()) {
-    const LibraryPrefix& prefix = LibraryPrefix::Cast(owner_);
-    // The parser has already dealt with the pathological case where a
-    // library imports itself. See Parser::ResolveIdentInPrefixScope()
-    ASSERT(field_name_.CharAt(0) != Library::kPrivateIdentifierStart);
-
-    // If the prefix is not yet loaded, the getter doesn't exist. Return a
-    // setter that will throw a NSME at runtime.
-    if (!prefix.is_loaded()) {
-      return new StaticSetterNode(token_pos(), NULL, cls(), field_name_, rhs,
-                                  StaticGetterSetter::kStatic);
-    }
-
-    Object& obj = Object::Handle(zone, prefix.LookupObject(field_name_));
-    if (obj.IsField()) {
-      const Field& field = Field::ZoneHandle(zone, Field::Cast(obj).raw());
-      if (!field.is_final()) {
-        if (isolate->type_checks()) {
-          rhs = new AssignableNode(field.token_pos(), rhs,
-                                   AbstractType::ZoneHandle(zone, field.type()),
-                                   field_name_);
-        }
-        return new StoreStaticFieldNode(token_pos(), field, rhs);
-      }
-    }
-
-    // No field found in prefix. Look for a setter function.
-    const String& setter_name =
-        String::Handle(zone, Field::LookupSetterSymbol(field_name_));
-    if (!setter_name.IsNull()) {
-      obj = prefix.LookupObject(setter_name);
-      if (obj.IsFunction()) {
-        const Function& setter =
-            Function::ZoneHandle(zone, Function::Cast(obj).raw());
-        ASSERT(setter.is_static() && setter.IsSetterFunction());
-        return new StaticSetterNode(token_pos(), NULL, field_name_, setter, rhs,
-                                    StaticGetterSetter::kStatic);
-      }
-    }
-
-    // No writeable field and no setter found in the prefix. Return a
-    // non-existing setter that will throw an NSM error.
-    return new StaticSetterNode(token_pos(), NULL, cls(), field_name_, rhs,
-                                StaticGetterSetter::kStatic);
-  }
-
-  if (owner().IsLibrary()) {
-    const Library& library = Library::Cast(owner());
-    Object& obj = Object::Handle(zone, library.ResolveName(field_name_));
-    if (obj.IsField()) {
-      const Field& field = Field::ZoneHandle(zone, Field::Cast(obj).raw());
-      if (!field.is_final()) {
-        if (isolate->type_checks()) {
-          rhs = new AssignableNode(field.token_pos(), rhs,
-                                   AbstractType::ZoneHandle(zone, field.type()),
-                                   field_name_);
-        }
-        return new StoreStaticFieldNode(token_pos(), field, rhs);
-      }
-    }
-
-    // No field found in library. Look for a setter function.
-    const String& setter_name =
-        String::Handle(zone, Field::LookupSetterSymbol(field_name_));
-    if (!setter_name.IsNull()) {
-      obj = library.ResolveName(setter_name);
-      if (obj.IsFunction()) {
-        const Function& setter =
-            Function::ZoneHandle(zone, Function::Cast(obj).raw());
-        ASSERT(setter.is_static() && setter.IsSetterFunction());
-        return new StaticSetterNode(token_pos(), NULL, field_name_, setter, rhs,
-                                    StaticGetterSetter::kStatic);
-      }
-    }
-
-    // No writeable field and no setter found in the library. Return a
-    // non-existing setter that will throw an NSM error.
-    return new StaticSetterNode(token_pos(), NULL, cls(), field_name_, rhs,
-                                StaticGetterSetter::kStatic);
-  }
-
-  const Function& setter =
-      Function::ZoneHandle(zone, cls().LookupSetterFunction(field_name_));
-  if (!setter.IsNull() && setter.IsStaticFunction()) {
-    return new StaticSetterNode(token_pos(), NULL, field_name_, setter, rhs,
-                                StaticGetterSetter::kStatic);
-  }
-  // Could not find a static setter. Look for a field.
-  // Access to a lazily initialized static field that has not yet been
-  // initialized is compiled to a static implicit getter.
-  // A setter may not exist for such a field.
-  const Field& field =
-      Field::ZoneHandle(zone, cls().LookupStaticField(field_name_));
-  if (!field.IsNull()) {
-    if (field.is_final()) {
-      // Attempting to assign to a final variable will cause a NoSuchMethodError
-      // to be thrown. Change static getter to non-existent static setter in
-      // order to trigger the throw at runtime.
-      return new StaticSetterNode(token_pos(), NULL, cls(), field_name_, rhs,
-                                  StaticGetterSetter::kStatic);
-    }
-#if defined(DEBUG)
-    const String& getter_name =
-        String::Handle(zone, Field::LookupGetterSymbol(field_name_));
-    ASSERT(!getter_name.IsNull());
-    const Function& getter =
-        Function::Handle(zone, cls().LookupStaticFunction(getter_name));
-    ASSERT(!getter.IsNull() &&
-           (getter.kind() == RawFunction::kImplicitStaticFinalGetter));
-#endif
-    if (isolate->type_checks()) {
-      rhs = new AssignableNode(field.token_pos(), rhs,
-                               AbstractType::ZoneHandle(zone, field.type()),
-                               String::ZoneHandle(zone, field.name()));
-    }
-    return new StoreStaticFieldNode(token_pos(), field, rhs);
-  }
-  // Didn't find a static setter or a static field. Make a call to
-  // the non-existent setter to trigger a NoSuchMethodError at runtime.
-  return new StaticSetterNode(token_pos(), NULL, cls(), field_name_, rhs,
-                              StaticGetterSetter::kStatic);
-}
-
-AstNode* StaticCallNode::MakeAssignmentNode(AstNode* rhs) {
-  // Return this node if it represents a 'throw NoSuchMethodError' indicating
-  // that a getter was not found, otherwise return null.
-  const Class& cls = Class::Handle(function().Owner());
-  const String& cls_name = String::Handle(cls.Name());
-  const String& func_name = String::Handle(function().name());
-  if (cls_name.Equals(Symbols::NoSuchMethodError()) &&
-      func_name.StartsWith(Symbols::ThrowNew())) {
-    return this;
-  }
-  return NULL;
-}
-
-bool StaticGetterNode::IsPotentiallyConst() const {
-  if (is_deferred_reference_) {
-    return false;
-  }
-  const String& getter_name =
-      String::Handle(Field::GetterName(this->field_name()));
-  const Function& getter_func =
-      Function::Handle(this->cls().LookupStaticFunction(getter_name));
-  if (getter_func.IsNull() || !getter_func.is_const()) {
-    return false;
-  }
-  return true;
-}
-
-const Instance* StaticGetterNode::EvalConstExpr() const {
-  if (is_deferred_reference_) {
-    return NULL;
-  }
-  const String& getter_name =
-      String::Handle(Field::LookupGetterSymbol(this->field_name()));
-  if (getter_name.IsNull()) {
-    return NULL;
-  }
-  const Function& getter_func =
-      Function::Handle(this->cls().LookupStaticFunction(getter_name));
-  if (getter_func.IsNull() || !getter_func.is_const()) {
-    return NULL;
-  }
-  const Object& result = Object::Handle(
-      DartEntry::InvokeFunction(getter_func, Object::empty_array()));
-  if (result.IsError() || result.IsNull()) {
-    // TODO(turnidge): We could get better error messages by returning
-    // the Error object directly to the parser.  This will involve
-    // replumbing all of the EvalConstExpr methods.
-    return NULL;
-  }
-  return &Instance::ZoneHandle(Instance::Cast(result).raw());
-}
-
-}  // namespace dart
-
-#endif  // !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/vm/ast.h b/runtime/vm/ast.h
index 4d5e358..c72e582 100644
--- a/runtime/vm/ast.h
+++ b/runtime/vm/ast.h
@@ -8,7 +8,6 @@
 #include "platform/assert.h"
 #include "vm/allocation.h"
 #include "vm/growable_array.h"
-#include "vm/native_entry.h"
 #include "vm/object.h"
 #include "vm/scopes.h"
 #include "vm/token.h"
@@ -17,78 +16,13 @@
 namespace dart {
 
 #define FOR_EACH_NODE(V)                                                       \
-  V(Await)                                                                     \
-  V(AwaitMarker)                                                               \
-  V(Return)                                                                    \
-  V(Literal)                                                                   \
-  V(Type)                                                                      \
-  V(Assignable)                                                                \
-  V(BinaryOp)                                                                  \
-  V(Comparison)                                                                \
-  V(UnaryOp)                                                                   \
-  V(ConditionalExpr)                                                           \
-  V(If)                                                                        \
-  V(Switch)                                                                    \
-  V(Case)                                                                      \
-  V(While)                                                                     \
-  V(DoWhile)                                                                   \
-  V(For)                                                                       \
-  V(Jump)                                                                      \
-  V(Stop)                                                                      \
-  V(ArgumentList)                                                              \
-  V(Array)                                                                     \
-  V(Closure)                                                                   \
-  V(InstanceCall)                                                              \
-  V(StaticCall)                                                                \
-  V(ClosureCall)                                                               \
-  V(CloneContext)                                                              \
-  V(ConstructorCall)                                                           \
-  V(InstanceGetter)                                                            \
-  V(InstanceSetter)                                                            \
-  V(InitStaticField)                                                           \
-  V(StaticGetter)                                                              \
-  V(StaticSetter)                                                              \
-  V(NativeBody)                                                                \
-  V(Primary)                                                                   \
-  V(LoadLocal)                                                                 \
-  V(StoreLocal)                                                                \
-  V(LoadInstanceField)                                                         \
-  V(StoreInstanceField)                                                        \
-  V(LoadStaticField)                                                           \
-  V(StoreStaticField)                                                          \
-  V(LoadIndexed)                                                               \
-  V(StoreIndexed)                                                              \
   V(Sequence)                                                                  \
-  V(Let)                                                                       \
-  V(CatchClause)                                                               \
-  V(TryCatch)                                                                  \
-  V(Throw)                                                                     \
-  V(InlinedFinally)                                                            \
-  V(StringInterpolate)
 
 #define FORWARD_DECLARATION(BaseName) class BaseName##Node;
 FOR_EACH_NODE(FORWARD_DECLARATION)
 #undef FORWARD_DECLARATION
 
-// Abstract class to implement an AST node visitor. An example is AstPrinter.
-class AstNodeVisitor : public ValueObject {
- public:
-  AstNodeVisitor() {}
-  virtual ~AstNodeVisitor() {}
-
-#define DEFINE_VISITOR_FUNCTION(BaseName)                                      \
-  virtual void Visit##BaseName##Node(BaseName##Node* node) {}
-
-  FOR_EACH_NODE(DEFINE_VISITOR_FUNCTION)
-#undef DEFINE_VISITOR_FUNCTION
-
- private:
-  DISALLOW_COPY_AND_ASSIGN(AstNodeVisitor);
-};
-
 #define DECLARE_COMMON_NODE_FUNCTIONS(type)                                    \
-  virtual void Visit(AstNodeVisitor* visitor);                                 \
-  virtual const char* Name() const;                                            \
   virtual type* As##type() { return this; }
 
 class AstNode : public ZoneAllocated {
@@ -108,44 +42,6 @@
   FOR_EACH_NODE(AST_TYPE_CHECK)
 #undef AST_TYPE_CHECK
 
-  virtual void Visit(AstNodeVisitor* visitor) = 0;
-  virtual void VisitChildren(AstNodeVisitor* visitor) const = 0;
-  virtual const char* Name() const = 0;
-
-  // Convert the node into an assignment node using the rhs which is passed in,
-  // this is typically used for converting nodes like LoadLocalNode,
-  // LoadStaticFieldNode, InstanceGetterNode etc. which were created during
-  // parsing as the assignment context was not known yet at that time.
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs) {
-    return NULL;  // By default all nodes are not assignable.
-  }
-
-  // Return NULL if 'unary_op_kind' can't be applied.
-  virtual AstNode* ApplyUnaryOp(Token::Kind unary_op_kind) { return NULL; }
-
-  // Returns true if this node can be a compile-time constant, assuming
-  // that all nodes it depends on are also compile-time constants of
-  // the proper types and values.
-  // See the concept of "potentially constant expression" in the language spec.
-  // The purpose of IsPotentiallyConst is to detect cases where the node is
-  // known NOT to be a constant expression, in which case false is returned and
-  // a compile-time error is reported by the compiler. Otherwise, an error may
-  // still be reported at run-time depending on actual values.
-  virtual bool IsPotentiallyConst() const { return false; }
-
-  // Analyzes an expression to determine whether it is a compile time
-  // constant or not. Returns NULL if the expression is not a compile time
-  // constant. Otherwise, the return value is an approximation of the
-  // actual value of the const expression. The type of the returned value
-  // corresponds to the type of the const expression and is either
-  // Number, Integer, String, Bool, or anything else (not a subtype of
-  // the former).
-  virtual const Instance* EvalConstExpr() const { return NULL; }
-
-  // Return ZoneHandle of a cloned 'value' when in background compilation or
-  // when testing. Otherwise return 'value' itself.
-  static const Field* MayCloneField(const Field& value);
-
  protected:
   friend class ParsedFunction;
 
@@ -154,83 +50,6 @@
   DISALLOW_COPY_AND_ASSIGN(AstNode);
 };
 
-class AwaitNode : public AstNode {
- public:
-  AwaitNode(TokenPosition token_pos,
-            AstNode* expr,
-            LocalVariable* saved_try_ctx,
-            LocalVariable* async_saved_try_ctx,
-            LocalVariable* outer_saved_try_ctx,
-            LocalVariable* outer_async_saved_try_ctx,
-            LocalScope* scope)
-      : AstNode(token_pos),
-        expr_(expr),
-        saved_try_ctx_(saved_try_ctx),
-        async_saved_try_ctx_(async_saved_try_ctx),
-        outer_saved_try_ctx_(outer_saved_try_ctx),
-        outer_async_saved_try_ctx_(outer_async_saved_try_ctx),
-        scope_(scope) {}
-
-  void VisitChildren(AstNodeVisitor* visitor) const { expr_->Visit(visitor); }
-
-  AstNode* expr() const { return expr_; }
-  LocalVariable* saved_try_ctx() const { return saved_try_ctx_; }
-  LocalVariable* async_saved_try_ctx() const { return async_saved_try_ctx_; }
-  LocalVariable* outer_saved_try_ctx() const { return outer_saved_try_ctx_; }
-  LocalVariable* outer_async_saved_try_ctx() const {
-    return outer_async_saved_try_ctx_;
-  }
-  LocalScope* scope() const { return scope_; }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(AwaitNode);
-
- private:
-  AstNode* expr_;
-  LocalVariable* saved_try_ctx_;
-  LocalVariable* async_saved_try_ctx_;
-  LocalVariable* outer_saved_try_ctx_;
-  LocalVariable* outer_async_saved_try_ctx_;
-  LocalScope* scope_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwaitNode);
-};
-
-// AwaitMarker nodes are used to generate markers that the FlowGraphBuilder
-// relies on. A marker indicates that a new await state needs to be
-// added to a function preamble. This type also triggers storing of the
-// current context.
-//
-// It is expected (ASSERT) that an AwaitMarker is followed by
-// a return node of kind kContinuationTarget. That is:
-//   <AwaitMarker> -> <other nodes> -> <kContinuationTarget> -> <other nodes> ->
-//   <AwaitMarker> -> ...
-class AwaitMarkerNode : public AstNode {
- public:
-  AwaitMarkerNode(LocalScope* async_scope,
-                  LocalScope* await_scope,
-                  TokenPosition token_pos)
-      : AstNode(token_pos),
-        async_scope_(async_scope),
-        await_scope_(await_scope) {
-    ASSERT(async_scope != NULL);
-    ASSERT(await_scope != NULL);
-    await_scope->CaptureLocalVariables(async_scope);
-  }
-
-  void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  LocalScope* async_scope() const { return async_scope_; }
-  LocalScope* await_scope() const { return await_scope_; }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(AwaitMarkerNode);
-
- private:
-  LocalScope* async_scope_;
-  LocalScope* await_scope_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwaitMarkerNode);
-};
-
 class SequenceNode : public AstNode {
  public:
   SequenceNode(TokenPosition token_pos, LocalScope* scope)
@@ -241,18 +60,8 @@
   SourceLabel* label() const { return label_; }
   void set_label(SourceLabel* value) { label_ = value; }
 
-  void VisitChildren(AstNodeVisitor* visitor) const;
-
-  void Add(AstNode* node);
-  intptr_t length() const { return nodes_.length(); }
-  AstNode* NodeAt(intptr_t index) const { return nodes_[index]; }
-  void ReplaceNodeAt(intptr_t index, AstNode* value) { nodes_[index] = value; }
-
   DECLARE_COMMON_NODE_FUNCTIONS(SequenceNode);
 
-  // Collects all nodes accessible from this sequence node into array 'nodes'.
-  void CollectAllNodes(GrowableArray<AstNode*>* nodes);
-
  private:
   LocalScope* scope_;
   GrowableArray<AstNode*> nodes_;
@@ -261,1749 +70,6 @@
   DISALLOW_COPY_AND_ASSIGN(SequenceNode);
 };
 
-class CloneContextNode : public AstNode {
- public:
-  explicit CloneContextNode(TokenPosition token_pos, LocalScope* scope)
-      : AstNode(token_pos), scope_(scope) {}
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  LocalScope* scope() const { return scope_; }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(CloneContextNode);
-
- private:
-  LocalScope* scope_;
-
-  DISALLOW_COPY_AND_ASSIGN(CloneContextNode);
-};
-
-class ArgumentListNode : public AstNode {
- public:
-  explicit ArgumentListNode(TokenPosition token_pos)
-      : AstNode(token_pos),
-        type_args_var_(NULL),
-        type_arguments_(TypeArguments::ZoneHandle()),
-        type_args_len_(0),
-        nodes_(4),
-        names_(Array::ZoneHandle()) {}
-
-  ArgumentListNode(TokenPosition token_pos, const TypeArguments& type_arguments)
-      : AstNode(token_pos),
-        type_args_var_(NULL),
-        type_arguments_(type_arguments),
-        type_args_len_(type_arguments.Length()),
-        nodes_(4),
-        names_(Array::ZoneHandle()) {
-    ASSERT(type_arguments_.IsZoneHandle());
-    ASSERT(type_arguments_.IsNull() || type_arguments_.IsCanonical());
-  }
-
-  ArgumentListNode(TokenPosition token_pos,
-                   LocalVariable* type_args_var,
-                   intptr_t type_args_len)
-      : AstNode(token_pos),
-        type_args_var_(type_args_var),
-        type_arguments_(TypeArguments::ZoneHandle()),
-        type_args_len_(type_args_len),
-        nodes_(4),
-        names_(Array::ZoneHandle()) {
-    ASSERT((type_args_var_ == NULL) == (type_args_len_ == 0));
-  }
-
-  void VisitChildren(AstNodeVisitor* visitor) const;
-
-  LocalVariable* type_args_var() const { return type_args_var_; }
-  const TypeArguments& type_arguments() const { return type_arguments_; }
-  intptr_t type_args_len() const { return type_args_len_; }
-  void Add(AstNode* node) { nodes_.Add(node); }
-  intptr_t length() const { return nodes_.length(); }
-  intptr_t LengthWithTypeArgs() const {
-    return length() + (type_args_len() > 0 ? 1 : 0);
-  }
-  AstNode* NodeAt(intptr_t index) const { return nodes_[index]; }
-  void SetNodeAt(intptr_t index, AstNode* node) { nodes_[index] = node; }
-  const Array& names() const { return names_; }
-  void set_names(const Array& names) { names_ = names.raw(); }
-  const GrowableArray<AstNode*>& nodes() const { return nodes_; }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ArgumentListNode);
-
- private:
-  // At most one of type_args_var_ and type_arguments_ can be set, not both.
-  LocalVariable* type_args_var_;
-  const TypeArguments& type_arguments_;
-  intptr_t type_args_len_;
-  GrowableArray<AstNode*> nodes_;
-  Array& names_;
-
-  DISALLOW_COPY_AND_ASSIGN(ArgumentListNode);
-};
-
-class LetNode : public AstNode {
- public:
-  explicit LetNode(TokenPosition token_pos);
-
-  LocalVariable* TempAt(intptr_t i) const { return vars_[i]; }
-  AstNode* InitializerAt(intptr_t i) const { return initializers_[i]; }
-
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  LocalVariable* AddInitializer(AstNode* node);
-
-  const GrowableArray<AstNode*>& nodes() const { return nodes_; }
-
-  void AddNode(AstNode* node) { nodes_.Add(node); }
-
-  intptr_t num_temps() const { return vars_.length(); }
-
-  void VisitChildren(AstNodeVisitor* visitor) const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(LetNode);
-
- private:
-  GrowableArray<LocalVariable*> vars_;
-  GrowableArray<AstNode*> initializers_;
-  GrowableArray<AstNode*> nodes_;
-
-  DISALLOW_COPY_AND_ASSIGN(LetNode);
-};
-
-class ArrayNode : public AstNode {
- public:
-  ArrayNode(TokenPosition token_pos, const AbstractType& type)
-      : AstNode(token_pos), type_(type), elements_() {
-    CheckFields();
-  }
-  ArrayNode(TokenPosition token_pos,
-            const AbstractType& type,
-            const GrowableArray<AstNode*>& elements)
-      : AstNode(token_pos), type_(type), elements_(elements.length()) {
-    CheckFields();
-    for (intptr_t i = 0; i < elements.length(); i++) {
-      elements_.Add(elements[i]);
-    }
-  }
-
-  void VisitChildren(AstNodeVisitor* visitor) const;
-
-  intptr_t length() const { return elements_.length(); }
-
-  AstNode* ElementAt(intptr_t index) const { return elements_[index]; }
-  void SetElementAt(intptr_t index, AstNode* value) {
-    elements_[index] = value;
-  }
-  void AddElement(AstNode* expr) { elements_.Add(expr); }
-
-  const AbstractType& type() const { return type_; }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ArrayNode);
-
- private:
-  const AbstractType& type_;
-  GrowableArray<AstNode*> elements_;
-
-  void CheckFields() {
-    ASSERT(type_.IsZoneHandle());
-    ASSERT(!type_.IsNull());
-    ASSERT(type_.IsFinalized());
-    // Type may be uninstantiated when creating a generic list literal.
-    ASSERT((type_.arguments() == TypeArguments::null()) ||
-           ((TypeArguments::Handle(type_.arguments()).Length() == 1)));
-  }
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ArrayNode);
-};
-
-class StringInterpolateNode : public AstNode {
- public:
-  StringInterpolateNode(TokenPosition token_pos, ArrayNode* value)
-      : AstNode(token_pos), value_(value) {}
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    value_->Visit(visitor);
-  }
-
-  ArrayNode* value() const { return value_; }
-
-  virtual bool IsPotentiallyConst() const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StringInterpolateNode);
-
- private:
-  ArrayNode* value_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StringInterpolateNode);
-};
-
-class LiteralNode : public AstNode {
- public:
-  LiteralNode(TokenPosition token_pos, const Instance& literal)
-      : AstNode(token_pos), literal_(literal) {
-    ASSERT(literal_.IsNotTemporaryScopedHandle());
-    ASSERT(literal_.IsSmi() || literal_.IsOld());
-#if defined(DEBUG)
-    if (literal_.IsString()) {
-      ASSERT(String::Cast(literal_).IsSymbol());
-    }
-#endif  // defined(DEBUG)
-    ASSERT(literal_.IsNull() ||
-           Class::Handle(literal_.clazz()).is_finalized() ||
-           Class::Handle(literal_.clazz()).is_prefinalized());
-  }
-
-  const Instance& literal() const { return literal_; }
-
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const { return &literal(); }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  virtual AstNode* ApplyUnaryOp(Token::Kind unary_op_kind);
-
-  DECLARE_COMMON_NODE_FUNCTIONS(LiteralNode);
-
- private:
-  const Instance& literal_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(LiteralNode);
-};
-
-class TypeNode : public AstNode {
- public:
-  TypeNode(TokenPosition token_pos,
-           const AbstractType& type,
-           bool is_deferred_reference = false)
-      : AstNode(token_pos),
-        type_(type),
-        is_deferred_reference_(is_deferred_reference) {
-    ASSERT(type_.IsZoneHandle());
-    ASSERT(!type_.IsNull());
-    ASSERT(type_.IsFinalized());
-    // A wellformed literal Type must be canonical.
-    ASSERT(!type_.IsType() || type_.IsMalformedOrMalbounded() ||
-           type_.IsCanonical());
-  }
-
-  const AbstractType& type() const { return type_; }
-
-  const char* TypeName() const;
-
-  virtual const Instance* EvalConstExpr() const {
-    if (!type_.IsInstantiated() || type_.IsMalformedOrMalbounded()) {
-      return NULL;
-    }
-    return &type();
-  }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  bool is_deferred_reference() const { return is_deferred_reference_; }
-  void set_is_deferred_reference(bool value) { is_deferred_reference_ = value; }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(TypeNode);
-
- private:
-  const AbstractType& type_;
-  bool is_deferred_reference_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(TypeNode);
-};
-
-class AssignableNode : public AstNode {
- public:
-  AssignableNode(TokenPosition token_pos,
-                 AstNode* expr,
-                 const AbstractType& type,
-                 const String& dst_name)
-      : AstNode(token_pos), expr_(expr), type_(type), dst_name_(dst_name) {
-    ASSERT(expr_ != NULL);
-    ASSERT(type_.IsZoneHandle());
-    ASSERT(!type_.IsNull());
-    ASSERT(type_.IsFinalized());
-    ASSERT(dst_name_.IsNotTemporaryScopedHandle());
-  }
-
-  AstNode* expr() const { return expr_; }
-  const AbstractType& type() const { return type_; }
-  const String& dst_name() const { return dst_name_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    expr()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(AssignableNode);
-
- private:
-  AstNode* expr_;
-  const AbstractType& type_;
-  const String& dst_name_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(AssignableNode);
-};
-
-class ClosureNode : public AstNode {
- public:
-  ClosureNode(TokenPosition token_pos,
-              const Function& function,
-              AstNode* receiver,  // Non-null for implicit instance closures.
-              LocalScope* scope)  // Null for implicit closures or functions
-                                  // that already have a ContextScope because
-                                  // they were compiled before.
-      : AstNode(token_pos),
-        function_(function),
-        receiver_(receiver),
-        scope_(scope),
-        is_deferred_reference_(false) {
-    ASSERT(function_.IsZoneHandle());
-    ASSERT((function_.IsNonImplicitClosureFunction() && (receiver_ == NULL)) ||
-           (function_.IsImplicitInstanceClosureFunction() &&
-            (receiver_ != NULL) && (scope_ == NULL)) ||
-           (function_.IsImplicitStaticClosureFunction() &&
-            (receiver_ == NULL) && (scope_ == NULL)));
-  }
-
-  const Function& function() const { return function_; }
-  AstNode* receiver() const { return receiver_; }
-  LocalScope* scope() const { return scope_; }
-
-  void set_is_deferred(bool value) { is_deferred_reference_ = value; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    if (receiver() != NULL) {
-      receiver()->Visit(visitor);
-    }
-  }
-
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs);
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ClosureNode);
-
- private:
-  const Function& function_;
-  AstNode* receiver_;
-  LocalScope* scope_;
-  bool is_deferred_reference_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ClosureNode);
-};
-
-// Primary nodes hold identifiers or values (library, class or function)
-// resolved from an identifier. Primary nodes should not ever make it to the
-// code generation phase as they will be transformed into the correct call or
-// field access nodes.
-class PrimaryNode : public AstNode {
- public:
-  PrimaryNode(TokenPosition token_pos, const Object& primary)
-      : AstNode(token_pos), primary_(primary), prefix_(NULL) {
-    ASSERT(primary_.IsNotTemporaryScopedHandle());
-  }
-
-  const Object& primary() const { return primary_; }
-
-  void set_prefix(const LibraryPrefix* prefix) {
-    ASSERT(prefix->IsNotTemporaryScopedHandle());
-    prefix_ = prefix;
-  }
-  const LibraryPrefix* prefix() const { return prefix_; }
-  bool is_deferred_reference() const { return prefix_ != NULL; }
-
-  bool IsSuper() const {
-    return primary().IsString() && (primary().raw() == Symbols::Super().raw());
-  }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(PrimaryNode);
-
- private:
-  const Object& primary_;
-  const LibraryPrefix* prefix_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(PrimaryNode);
-};
-
-// In asynchronous code that gets suspended and resumed, return nodes
-// can be of different types:
-// * A regular return node that in the case of async functions
-//    gets replaced with appropriate completer calls. (kRegular)
-// * A continuation return that just returns from a function, without
-//   completing the Future. (kContinuation)
-// * A continuation return followed by a continuation target, i.e. the
-//   location at which the closure resumes the next time it gets invoked.
-//   (kContinuationTarget).
-// In synchronous functions, return nodes are always of type'kRegular'
-class ReturnNode : public AstNode {
- public:
-  enum ReturnType { kRegular, kContinuation, kContinuationTarget };
-
-  // Return from a void function returns the null object.
-  explicit ReturnNode(TokenPosition token_pos)
-      : AstNode(token_pos),
-        value_(new LiteralNode(token_pos, Instance::ZoneHandle())),
-        inlined_finally_list_(),
-        return_type_(kRegular) {}
-  // Return from a non-void function.
-  ReturnNode(TokenPosition token_pos, AstNode* value)
-      : AstNode(token_pos),
-        value_(value),
-        inlined_finally_list_(),
-        return_type_(kRegular) {
-    ASSERT(value_ != NULL);
-  }
-
-  AstNode* value() const { return value_; }
-
-  intptr_t inlined_finally_list_length() const {
-    return inlined_finally_list_.length();
-  }
-  InlinedFinallyNode* InlinedFinallyNodeAt(intptr_t index) const {
-    return inlined_finally_list_[index];
-  }
-  void AddInlinedFinallyNode(InlinedFinallyNode* finally_node) {
-    inlined_finally_list_.Add(finally_node);
-  }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    if (value() != NULL) {
-      value()->Visit(visitor);
-    }
-  }
-
-  void set_scope(LocalScope* scope) { scope_ = scope; }
-  LocalScope* scope() const { return scope_; }
-
-  ReturnType return_type() const { return return_type_; }
-  void set_return_type(ReturnType type) { return_type_ = type; }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ReturnNode);
-
- private:
-  AstNode* value_;
-  GrowableArray<InlinedFinallyNode*> inlined_finally_list_;
-  LocalScope* scope_;
-  ReturnType return_type_;
-
-  DISALLOW_COPY_AND_ASSIGN(ReturnNode);
-};
-
-class ComparisonNode : public AstNode {
- public:
-  ComparisonNode(TokenPosition token_pos,
-                 Token::Kind kind,
-                 AstNode* left,
-                 AstNode* right)
-      : AstNode(token_pos), kind_(kind), left_(left), right_(right) {
-    ASSERT(left_ != NULL);
-    ASSERT(right_ != NULL);
-    ASSERT(IsKindValid());
-  }
-
-  Token::Kind kind() const { return kind_; }
-  AstNode* left() const { return left_; }
-  AstNode* right() const { return right_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    left()->Visit(visitor);
-    right()->Visit(visitor);
-  }
-
-  const char* TokenName() const;
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ComparisonNode);
-
- private:
-  const Token::Kind kind_;
-  AstNode* left_;
-  AstNode* right_;
-
-  bool IsKindValid() const;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ComparisonNode);
-};
-
-class BinaryOpNode : public AstNode {
- public:
-  BinaryOpNode(TokenPosition token_pos,
-               Token::Kind kind,
-               AstNode* left,
-               AstNode* right)
-      : AstNode(token_pos), kind_(kind), left_(left), right_(right) {
-    ASSERT(left_ != NULL);
-    ASSERT(right_ != NULL);
-    ASSERT(IsKindValid());
-  }
-
-  Token::Kind kind() const { return kind_; }
-  AstNode* left() const { return left_; }
-  AstNode* right() const { return right_; }
-
-  virtual bool has_mask32() const { return false; }
-  virtual int64_t mask32() const {
-    UNREACHABLE();
-    return 0;
-  }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    left()->Visit(visitor);
-    right()->Visit(visitor);
-  }
-
-  const char* TokenName() const;
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(BinaryOpNode);
-
- private:
-  const Token::Kind kind_;
-  AstNode* left_;
-  AstNode* right_;
-
-  bool IsKindValid() const;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(BinaryOpNode);
-};
-
-class UnaryOpNode : public AstNode {
- public:
-  // Returns optimized version, e.g., for ('-' '1') ('-1') literal is returned.
-  static AstNode* UnaryOpOrLiteral(TokenPosition token_pos,
-                                   Token::Kind kind,
-                                   AstNode* operand);
-  UnaryOpNode(TokenPosition token_pos, Token::Kind kind, AstNode* operand)
-      : AstNode(token_pos), kind_(kind), operand_(operand) {
-    ASSERT(operand_ != NULL);
-    ASSERT(IsKindValid());
-  }
-
-  Token::Kind kind() const { return kind_; }
-  AstNode* operand() const { return operand_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    operand()->Visit(visitor);
-  }
-
-  const char* TokenName() const;
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(UnaryOpNode);
-
- private:
-  const Token::Kind kind_;
-  AstNode* operand_;
-
-  bool IsKindValid() const;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(UnaryOpNode);
-};
-
-class ConditionalExprNode : public AstNode {
- public:
-  ConditionalExprNode(TokenPosition token_pos,
-                      AstNode* condition,
-                      AstNode* true_expr,
-                      AstNode* false_expr)
-      : AstNode(token_pos),
-        condition_(condition),
-        true_expr_(true_expr),
-        false_expr_(false_expr) {
-    ASSERT(condition_ != NULL);
-    ASSERT(true_expr_ != NULL);
-    ASSERT(false_expr_ != NULL);
-  }
-
-  AstNode* condition() const { return condition_; }
-  AstNode* true_expr() const { return true_expr_; }
-  AstNode* false_expr() const { return false_expr_; }
-
-  void set_true_expr(AstNode* true_expr) {
-    ASSERT(true_expr != NULL);
-    true_expr_ = true_expr;
-  }
-  void set_false_expr(AstNode* false_expr) {
-    ASSERT(false_expr != NULL);
-    false_expr_ = false_expr;
-  }
-
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    condition()->Visit(visitor);
-    true_expr()->Visit(visitor);
-    false_expr()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ConditionalExprNode);
-
- private:
-  AstNode* condition_;
-  AstNode* true_expr_;
-  AstNode* false_expr_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ConditionalExprNode);
-};
-
-class IfNode : public AstNode {
- public:
-  IfNode(TokenPosition token_pos,
-         AstNode* condition,
-         SequenceNode* true_branch,
-         SequenceNode* false_branch)
-      : AstNode(token_pos),
-        condition_(condition),
-        true_branch_(true_branch),
-        false_branch_(false_branch) {
-    ASSERT(condition_ != NULL);
-  }
-
-  AstNode* condition() const { return condition_; }
-  SequenceNode* true_branch() const { return true_branch_; }
-  SequenceNode* false_branch() const { return false_branch_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    condition()->Visit(visitor);
-    true_branch()->Visit(visitor);
-    if (false_branch() != NULL) {
-      false_branch()->Visit(visitor);
-    }
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(IfNode);
-
- private:
-  AstNode* condition_;
-  SequenceNode* true_branch_;
-  SequenceNode* false_branch_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(IfNode);
-};
-
-class CaseNode : public AstNode {
- public:
-  CaseNode(TokenPosition token_pos,
-           SourceLabel* label,
-           SequenceNode* case_expressions,
-           bool contains_default,
-           LocalVariable* switch_expr_value,
-           SequenceNode* statements)
-      : AstNode(token_pos),
-        label_(label),
-        case_expressions_(case_expressions),
-        contains_default_(contains_default),
-        switch_expr_value_(switch_expr_value),
-        statements_(statements) {
-    // label may be NULL.
-    ASSERT(case_expressions_ != NULL);
-    ASSERT(switch_expr_value_ != NULL);
-    ASSERT(statements_ != NULL);
-  }
-
-  SourceLabel* label() const { return label_; }
-  SequenceNode* case_expressions() const { return case_expressions_; }
-  bool contains_default() const { return contains_default_; }
-  LocalVariable* switch_expr_value() const { return switch_expr_value_; }
-  SequenceNode* statements() const { return statements_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    case_expressions()->Visit(visitor);
-    statements()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(CaseNode);
-
- private:
-  SourceLabel* label_;
-  SequenceNode* case_expressions_;
-  bool contains_default_;
-  LocalVariable* switch_expr_value_;
-  SequenceNode* statements_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(CaseNode);
-};
-
-class SwitchNode : public AstNode {
- public:
-  SwitchNode(TokenPosition token_pos, SourceLabel* label, SequenceNode* body)
-      : AstNode(token_pos), label_(label), body_(body) {
-    ASSERT(label_ != NULL);
-    ASSERT(body_ != NULL);
-  }
-
-  SourceLabel* label() const { return label_; }
-  SequenceNode* body() const { return body_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    body()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(SwitchNode);
-
- private:
-  SourceLabel* label_;
-  SequenceNode* body_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(SwitchNode);
-};
-
-class WhileNode : public AstNode {
- public:
-  WhileNode(TokenPosition token_pos,
-            SourceLabel* label,
-            AstNode* condition,
-            SequenceNode* condition_preamble,
-            SequenceNode* body)
-      : AstNode(token_pos),
-        label_(label),
-        condition_(condition),
-        condition_preamble_(condition_preamble),
-        body_(body) {
-    ASSERT(label_ != NULL);
-    ASSERT(condition_ != NULL);
-    ASSERT(body_ != NULL);
-  }
-
-  SourceLabel* label() const { return label_; }
-  AstNode* condition() const { return condition_; }
-  SequenceNode* body() const { return body_; }
-  SequenceNode* condition_preamble() const { return condition_preamble_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    if (condition_preamble() != NULL) {
-      condition_preamble()->Visit(visitor);
-    }
-    condition()->Visit(visitor);
-    body()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(WhileNode);
-
- private:
-  SourceLabel* label_;
-  AstNode* condition_;
-  SequenceNode* condition_preamble_;
-  SequenceNode* body_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(WhileNode);
-};
-
-class DoWhileNode : public AstNode {
- public:
-  DoWhileNode(TokenPosition token_pos,
-              SourceLabel* label,
-              AstNode* condition,
-              SequenceNode* body)
-      : AstNode(token_pos), label_(label), condition_(condition), body_(body) {
-    ASSERT(label_ != NULL);
-    ASSERT(condition_ != NULL);
-    ASSERT(body_ != NULL);
-  }
-
-  SourceLabel* label() const { return label_; }
-  AstNode* condition() const { return condition_; }
-  SequenceNode* body() const { return body_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    body()->Visit(visitor);
-    condition()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(DoWhileNode);
-
- private:
-  SourceLabel* label_;
-  AstNode* condition_;
-  SequenceNode* body_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(DoWhileNode);
-};
-
-// The condition can be NULL.
-class ForNode : public AstNode {
- public:
-  ForNode(TokenPosition token_pos,
-          SourceLabel* label,
-          SequenceNode* initializer,
-          AstNode* condition,
-          SequenceNode* condition_preamble,
-          SequenceNode* increment,
-          SequenceNode* body)
-      : AstNode(token_pos),
-        label_(label),
-        initializer_(initializer),
-        condition_(condition),
-        condition_preamble_(condition_preamble),
-        increment_(increment),
-        body_(body) {
-    ASSERT(label_ != NULL);
-    ASSERT(initializer_ != NULL);
-    ASSERT(increment_ != NULL);
-    ASSERT(body_ != NULL);
-  }
-
-  SourceLabel* label() const { return label_; }
-  SequenceNode* initializer() const { return initializer_; }
-  AstNode* condition() const { return condition_; }
-  AstNode* condition_preamble() const { return condition_preamble_; }
-  SequenceNode* increment() const { return increment_; }
-  SequenceNode* body() const { return body_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    initializer()->Visit(visitor);
-    if (condition_preamble() != NULL) {
-      ASSERT(condition() != NULL);
-      condition_preamble()->Visit(visitor);
-    }
-    if (condition() != NULL) {
-      condition()->Visit(visitor);
-    }
-    increment()->Visit(visitor);
-    body()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ForNode);
-
- private:
-  SourceLabel* label_;
-  SequenceNode* initializer_;
-  AstNode* condition_;
-  AstNode* condition_preamble_;
-  SequenceNode* increment_;
-  SequenceNode* body_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ForNode);
-};
-
-class JumpNode : public AstNode {
- public:
-  JumpNode(TokenPosition token_pos, Token::Kind kind, SourceLabel* label)
-      : AstNode(token_pos),
-        kind_(kind),
-        label_(label),
-        inlined_finally_list_() {
-    ASSERT(label_ != NULL);
-    ASSERT(kind_ == Token::kBREAK || kind_ == Token::kCONTINUE);
-  }
-
-  SourceLabel* label() const { return label_; }
-  Token::Kind kind() const { return kind_; }
-
-  intptr_t inlined_finally_list_length() const {
-    return inlined_finally_list_.length();
-  }
-  InlinedFinallyNode* InlinedFinallyNodeAt(intptr_t index) const {
-    return inlined_finally_list_[index];
-  }
-  void AddInlinedFinallyNode(InlinedFinallyNode* finally_node) {
-    inlined_finally_list_.Add(finally_node);
-  }
-
-  const char* TokenName() const;
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  DECLARE_COMMON_NODE_FUNCTIONS(JumpNode);
-
- private:
-  Token::Kind kind_;
-  SourceLabel* label_;
-  GrowableArray<InlinedFinallyNode*> inlined_finally_list_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(JumpNode);
-};
-
-class StopNode : public AstNode {
- public:
-  StopNode(TokenPosition token_pos, const char* message)
-      : AstNode(token_pos), message_(message) {
-    ASSERT(message != NULL);
-  }
-
-  const char* message() const { return message_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StopNode);
-
- private:
-  const char* message_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StopNode);
-};
-
-class LoadLocalNode : public AstNode {
- public:
-  LoadLocalNode(TokenPosition token_pos, const LocalVariable* local)
-      : AstNode(token_pos), local_(*local) {
-    ASSERT(local != NULL);
-  }
-
-  const LocalVariable& local() const { return local_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  virtual const Instance* EvalConstExpr() const;
-  virtual bool IsPotentiallyConst() const;
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs);
-
-  DECLARE_COMMON_NODE_FUNCTIONS(LoadLocalNode);
-
- private:
-  const LocalVariable& local_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(LoadLocalNode);
-};
-
-class StoreLocalNode : public AstNode {
- public:
-  StoreLocalNode(TokenPosition token_pos,
-                 const LocalVariable* local,
-                 AstNode* value)
-      : AstNode(token_pos), local_(*local), value_(value) {
-    ASSERT(local != NULL);
-    ASSERT(value_ != NULL);
-  }
-
-  const LocalVariable& local() const { return local_; }
-  AstNode* value() const { return value_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    value()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StoreLocalNode);
-
- private:
-  const LocalVariable& local_;
-  AstNode* value_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StoreLocalNode);
-};
-
-class LoadInstanceFieldNode : public AstNode {
- public:
-  LoadInstanceFieldNode(TokenPosition token_pos,
-                        AstNode* instance,
-                        const Field& field)
-      : AstNode(token_pos), instance_(instance), field_(*MayCloneField(field)) {
-    ASSERT(instance_ != NULL);
-    ASSERT(field_.IsZoneHandle());
-  }
-
-  AstNode* instance() const { return instance_; }
-  const Field& field() const { return field_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    instance()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(LoadInstanceFieldNode);
-
- private:
-  AstNode* instance_;
-  const Field& field_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(LoadInstanceFieldNode);
-};
-
-class StoreInstanceFieldNode : public AstNode {
- public:
-  StoreInstanceFieldNode(TokenPosition token_pos,
-                         AstNode* instance,
-                         const Field& field,
-                         AstNode* value,
-                         bool is_initializer)
-      : AstNode(token_pos),
-        instance_(instance),
-        field_(*MayCloneField(field)),
-        value_(value),
-        is_initializer_(is_initializer) {
-    ASSERT(instance_ != NULL);
-    ASSERT(field_.IsZoneHandle());
-    ASSERT(value_ != NULL);
-  }
-
-  AstNode* instance() const { return instance_; }
-  const Field& field() const { return field_; }
-  AstNode* value() const { return value_; }
-  bool is_initializer() const { return is_initializer_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    instance()->Visit(visitor);
-    value()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StoreInstanceFieldNode);
-
- private:
-  AstNode* instance_;
-  const Field& field_;
-  AstNode* value_;
-  const bool is_initializer_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StoreInstanceFieldNode);
-};
-
-class LoadStaticFieldNode : public AstNode {
- public:
-  LoadStaticFieldNode(TokenPosition token_pos, const Field& field)
-      : AstNode(token_pos),
-        field_(*MayCloneField(field)),
-        is_deferred_reference_(false) {
-    ASSERT(field_.IsZoneHandle());
-  }
-
-  const Field& field() const { return field_; }
-  void set_is_deferred(bool value) { is_deferred_reference_ = value; }
-  bool is_deferred_reference() const { return is_deferred_reference_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs);
-
-  virtual bool IsPotentiallyConst() const { return field_.is_const(); }
-
-  virtual const Instance* EvalConstExpr() const {
-    ASSERT(field_.is_static());
-    return !is_deferred_reference_ && field_.is_const()
-               ? &Instance::ZoneHandle(field_.StaticValue())
-               : NULL;
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(LoadStaticFieldNode);
-
- private:
-  const Field& field_;
-  bool is_deferred_reference_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(LoadStaticFieldNode);
-};
-
-class StoreStaticFieldNode : public AstNode {
- public:
-  StoreStaticFieldNode(TokenPosition token_pos,
-                       const Field& field,
-                       AstNode* value)
-      : AstNode(token_pos), field_(*MayCloneField(field)), value_(value) {
-    ASSERT(field_.IsZoneHandle());
-    ASSERT(value_ != NULL);
-  }
-
-  const Field& field() const { return field_; }
-  AstNode* value() const { return value_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    value()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StoreStaticFieldNode);
-
- private:
-  const Field& field_;
-  AstNode* value_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StoreStaticFieldNode);
-};
-
-class LoadIndexedNode : public AstNode {
- public:
-  LoadIndexedNode(TokenPosition token_pos,
-                  AstNode* array,
-                  AstNode* index,
-                  const Class& super_class)
-      : AstNode(token_pos),
-        array_(array),
-        index_expr_(index),
-        super_class_(super_class) {
-    ASSERT(array_ != NULL);
-    ASSERT(index_expr_ != NULL);
-    ASSERT(super_class_.IsZoneHandle());
-  }
-
-  AstNode* array() const { return array_; }
-  AstNode* index_expr() const { return index_expr_; }
-  const Class& super_class() const { return super_class_; }
-  bool IsSuperLoad() const { return !super_class_.IsNull(); }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    array()->Visit(visitor);
-    index_expr()->Visit(visitor);
-  }
-
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs);
-
-  DECLARE_COMMON_NODE_FUNCTIONS(LoadIndexedNode);
-
- private:
-  AstNode* array_;
-  AstNode* index_expr_;
-  const Class& super_class_;
-  DISALLOW_IMPLICIT_CONSTRUCTORS(LoadIndexedNode);
-};
-
-class StoreIndexedNode : public AstNode {
- public:
-  StoreIndexedNode(TokenPosition token_pos,
-                   AstNode* array,
-                   AstNode* index,
-                   AstNode* value,
-                   const Class& super_class)
-      : AstNode(token_pos),
-        array_(array),
-        index_expr_(index),
-        value_(value),
-        super_class_(super_class) {
-    ASSERT(array_ != NULL);
-    ASSERT(index_expr_ != NULL);
-    ASSERT(value_ != NULL);
-    ASSERT(super_class_.IsZoneHandle());
-  }
-
-  AstNode* array() const { return array_; }
-  AstNode* index_expr() const { return index_expr_; }
-  AstNode* value() const { return value_; }
-  const Class& super_class() const { return super_class_; }
-  bool IsSuperStore() const { return !super_class_.IsNull(); }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    array()->Visit(visitor);
-    index_expr()->Visit(visitor);
-    value()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StoreIndexedNode);
-
- private:
-  AstNode* array_;
-  AstNode* index_expr_;
-  AstNode* value_;
-  const Class& super_class_;
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StoreIndexedNode);
-};
-
-class InstanceCallNode : public AstNode {
- public:
-  InstanceCallNode(TokenPosition token_pos,
-                   AstNode* receiver,
-                   const String& function_name,
-                   ArgumentListNode* arguments,
-                   bool is_conditional = false)
-      : AstNode(token_pos),
-        receiver_(receiver),
-        function_name_(function_name),
-        arguments_(arguments),
-        is_conditional_(is_conditional) {
-    ASSERT(receiver_ != NULL);
-    ASSERT(function_name_.IsNotTemporaryScopedHandle());
-    ASSERT(function_name_.IsSymbol());
-    ASSERT(arguments_ != NULL);
-  }
-
-  AstNode* receiver() const { return receiver_; }
-  const String& function_name() const { return function_name_; }
-  ArgumentListNode* arguments() const { return arguments_; }
-  bool is_conditional() const { return is_conditional_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    receiver()->Visit(visitor);
-    arguments()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(InstanceCallNode);
-
- private:
-  AstNode* receiver_;
-  const String& function_name_;
-  ArgumentListNode* arguments_;
-  const bool is_conditional_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(InstanceCallNode);
-};
-
-class InstanceGetterNode : public AstNode {
- public:
-  InstanceGetterNode(TokenPosition token_pos,
-                     AstNode* receiver,
-                     const String& field_name,
-                     bool is_conditional = false)
-      : AstNode(token_pos),
-        receiver_(receiver),
-        field_name_(field_name),
-        is_conditional_(is_conditional) {
-    ASSERT(receiver_ != NULL);
-    ASSERT(field_name_.IsNotTemporaryScopedHandle());
-    ASSERT(field_name_.IsSymbol());
-  }
-
-  AstNode* receiver() const { return receiver_; }
-  const String& field_name() const { return field_name_; }
-  bool is_conditional() const { return is_conditional_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    receiver()->Visit(visitor);
-  }
-
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs);
-
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(InstanceGetterNode);
-
- private:
-  AstNode* receiver_;
-  const String& field_name_;
-  const bool is_conditional_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(InstanceGetterNode);
-};
-
-class InstanceSetterNode : public AstNode {
- public:
-  InstanceSetterNode(TokenPosition token_pos,
-                     AstNode* receiver,
-                     const String& field_name,
-                     AstNode* value,
-                     bool is_conditional = false)
-      : AstNode(token_pos),
-        receiver_(receiver),
-        field_name_(field_name),
-        value_(value),
-        is_conditional_(is_conditional) {
-    ASSERT(receiver_ != NULL);
-    ASSERT(value_ != NULL);
-    ASSERT(field_name_.IsZoneHandle());
-    ASSERT(field_name_.IsSymbol());
-  }
-
-  AstNode* receiver() const { return receiver_; }
-  const String& field_name() const { return field_name_; }
-  AstNode* value() const { return value_; }
-  bool is_conditional() const { return is_conditional_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    receiver()->Visit(visitor);
-    value()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(InstanceSetterNode);
-
- private:
-  AstNode* receiver_;
-  const String& field_name_;
-  AstNode* value_;
-  const bool is_conditional_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(InstanceSetterNode);
-};
-
-class InitStaticFieldNode : public AstNode {
- public:
-  InitStaticFieldNode(TokenPosition token_pos, const Field& field)
-      : AstNode(token_pos), field_(*MayCloneField(field)) {
-    ASSERT(field_.IsZoneHandle());
-  }
-
-  const Field& field() const { return field_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  DECLARE_COMMON_NODE_FUNCTIONS(InitStaticFieldNode);
-
- private:
-  const Field& field_;
-
-  DISALLOW_COPY_AND_ASSIGN(InitStaticFieldNode);
-};
-
-class StaticGetterSetter {
- public:
-  // The rule below is mapped to ICData::RebindRule (runtime/vm/object.h).
-  enum RebindRule { kNoRebind, kStatic, kSuper };
-};
-
-class StaticGetterNode : public AstNode {
- public:
-  StaticGetterNode(TokenPosition token_pos,
-                   AstNode* receiver,
-                   const Class& cls,
-                   const String& field_name,
-                   StaticGetterSetter::RebindRule rebind_rule)
-      : AstNode(token_pos),
-        receiver_(receiver),
-        owner_(Object::ZoneHandle(cls.raw())),
-        cls_(cls),
-        field_name_(field_name),
-        is_deferred_reference_(false),
-        rebind_rule_(rebind_rule) {
-    ASSERT(cls_.IsZoneHandle());
-    ASSERT(field_name_.IsZoneHandle());
-    ASSERT(field_name_.IsSymbol());
-  }
-
-  // The receiver is required for a super getter (an instance method that
-  // is resolved at compile time rather than at runtime).
-  AstNode* receiver() const { return receiver_; }
-
-  // The getter node needs to remmeber how the getter was referenced
-  // so that it can resolve a corresponding setter if necessary.
-  // The owner of this getter is either a class, the top-level library scope,
-  // or a prefix (if the getter has been referenced throug a library prefix).
-  void set_owner(const Object& value) {
-    ASSERT(value.IsLibraryPrefix() || value.IsLibrary() || value.IsClass());
-    owner_ = value.raw();
-  }
-  const Object& owner() const { return owner_; }
-
-  const Class& cls() const { return cls_; }
-  const String& field_name() const { return field_name_; }
-  bool is_super_getter() const { return receiver_ != NULL; }
-  void set_is_deferred(bool value) { is_deferred_reference_ = value; }
-
-  StaticGetterSetter::RebindRule rebind_rule() const { return rebind_rule_; }
-  void set_rebind_rule(StaticGetterSetter::RebindRule rule) {
-    rebind_rule_ = rule;
-  }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs);
-
-  virtual bool IsPotentiallyConst() const;
-  virtual const Instance* EvalConstExpr() const;
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StaticGetterNode);
-
- private:
-  AstNode* receiver_;
-  Object& owner_;
-  const Class& cls_;
-  const String& field_name_;
-  bool is_deferred_reference_;
-  StaticGetterSetter::RebindRule rebind_rule_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StaticGetterNode);
-};
-
-class StaticSetterNode : public AstNode {
- public:
-  // Static setter with resolved setter function.
-  StaticSetterNode(TokenPosition token_pos,
-                   AstNode* receiver,
-                   const String& field_name,
-                   const Function& function,
-                   AstNode* value,
-                   StaticGetterSetter::RebindRule rebind_rule)
-      : AstNode(token_pos),
-        receiver_(receiver),
-        cls_(Class::ZoneHandle(function.Owner())),
-        field_name_(field_name),
-        function_(function),
-        value_(value),
-        rebind_rule_(rebind_rule) {
-    ASSERT(function_.IsZoneHandle());
-    ASSERT(function.is_static() || receiver != NULL);
-    ASSERT(field_name_.IsZoneHandle());
-    ASSERT(value_ != NULL);
-  }
-
-  // For unresolved setters.
-  StaticSetterNode(TokenPosition token_pos,
-                   AstNode* receiver,
-                   const Class& cls,
-                   const String& field_name,
-                   AstNode* value,
-                   StaticGetterSetter::RebindRule rebind_rule)
-      : AstNode(token_pos),
-        receiver_(receiver),
-        cls_(cls),
-        field_name_(field_name),
-        function_(Function::ZoneHandle()),
-        value_(value),
-        rebind_rule_(rebind_rule) {
-    ASSERT(cls_.IsZoneHandle());
-    ASSERT(field_name_.IsZoneHandle());
-    ASSERT(value_ != NULL);
-  }
-
-  // The receiver is required for a super setter (an instance method
-  // that is resolved at compile time rather than at runtime).
-  AstNode* receiver() const { return receiver_; }
-  const Class& cls() const { return cls_; }
-  const String& field_name() const { return field_name_; }
-  // function() returns null for unresolved setters.
-  const Function& function() const { return function_; }
-  AstNode* value() const { return value_; }
-
-  StaticGetterSetter::RebindRule rebind_rule() const { return rebind_rule_; }
-  void set_rebind_rule(StaticGetterSetter::RebindRule rule) {
-    rebind_rule_ = rule;
-  }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    value()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StaticSetterNode);
-
- private:
-  AstNode* receiver_;
-  const Class& cls_;
-  const String& field_name_;
-  const Function& function_;
-  AstNode* value_;
-  StaticGetterSetter::RebindRule rebind_rule_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StaticSetterNode);
-};
-
-class StaticCallNode : public AstNode {
- public:
-  // The rule below is mapped to ICData::RebindRule (runtime/vm/object.h).
-  enum RebindRule { kNoRebind, kNSMDispatch, kStatic, kSuper };
-
-  StaticCallNode(TokenPosition token_pos,
-                 const Function& function,
-                 ArgumentListNode* arguments,
-                 RebindRule rebind_rule)
-      : AstNode(token_pos),
-        function_(function),
-        arguments_(arguments),
-        rebind_rule_(rebind_rule) {
-    ASSERT(function_.IsZoneHandle());
-    ASSERT(arguments_ != NULL);
-  }
-
-  const Function& function() const { return function_; }
-  ArgumentListNode* arguments() const { return arguments_; }
-
-  RebindRule rebind_rule() const { return rebind_rule_; }
-  void set_rebind_rule(RebindRule rule) { rebind_rule_ = rule; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    arguments()->Visit(visitor);
-  }
-
-  virtual AstNode* MakeAssignmentNode(AstNode* rhs);
-
-  DECLARE_COMMON_NODE_FUNCTIONS(StaticCallNode);
-
- private:
-  const Function& function_;
-  ArgumentListNode* arguments_;
-  RebindRule rebind_rule_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(StaticCallNode);
-};
-
-class ClosureCallNode : public AstNode {
- public:
-  ClosureCallNode(TokenPosition token_pos,
-                  AstNode* closure,
-                  ArgumentListNode* arguments)
-      : AstNode(token_pos), closure_(closure), arguments_(arguments) {
-    ASSERT(closure_ != NULL);
-    ASSERT(arguments_ != NULL);
-  }
-
-  AstNode* closure() const { return closure_; }
-  ArgumentListNode* arguments() const { return arguments_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    closure()->Visit(visitor);
-    arguments()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ClosureCallNode);
-
- private:
-  AstNode* closure_;
-  ArgumentListNode* arguments_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ClosureCallNode);
-};
-
-// There are two kinds of constructor calls: factory calls and constructor
-// calls, distinguishable by constructor.IsFactory().
-//
-// Constructor calls implicitly allocate an object of class constructor.owner(),
-// possibly parameterized by type_arguments, which may still be uninstantiated.
-// For example, if the type argument T in 'new A<T>()' is not known at compile
-// time, it needs to be instantiated at run time. The instantiator and its
-// instantiator_class are used to instantiate uninstantiated type arguments
-// at run time, as explained below.
-//
-// Factory calls do not implicitly allocate an object, but receive an implicit
-// type argument vector as first parameter, which may still be uninstantiated.
-// As in constructor calls, the instantiator and its instantiator_class are used
-// to instantiate uninstantiated type arguments at run time.
-//
-// If the caller to the constructor or to the factory is an instance function,
-// the instantiator is the receiver of this function. In order to instantiate T
-// in the example above (which could for example be the first type parameter of
-// the class of the caller), the code at run time extracts the type arguments of
-// the receiver at an offset in the receiver specified by the provided
-// instantiator_class.
-//
-// If the caller to the constructor or to the factory is a factory, then the
-// instantiator is the first parameter of this factory, which is already a
-// type argument vector. This case is identified by a null and unneeded
-// instantiator_class.
-class ConstructorCallNode : public AstNode {
- public:
-  ConstructorCallNode(TokenPosition token_pos,
-                      const TypeArguments& type_arguments,
-                      const Function& constructor,
-                      ArgumentListNode* arguments)
-      : AstNode(token_pos),
-        type_arguments_(type_arguments),
-        constructor_(constructor),
-        arguments_(arguments) {
-    ASSERT(type_arguments_.IsZoneHandle());
-    ASSERT(constructor_.IsZoneHandle());
-    ASSERT(arguments_ != NULL);
-  }
-
-  const TypeArguments& type_arguments() const { return type_arguments_; }
-  const Function& constructor() const { return constructor_; }
-  ArgumentListNode* arguments() const { return arguments_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    arguments()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ConstructorCallNode);
-
- private:
-  const TypeArguments& type_arguments_;
-  const Function& constructor_;
-  ArgumentListNode* arguments_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ConstructorCallNode);
-};
-
-// The body of a Dart function marked as 'native' consists of this node.
-class NativeBodyNode : public AstNode {
- public:
-  NativeBodyNode(TokenPosition token_pos,
-                 const Function& function,
-                 const String& native_c_function_name,
-                 LocalScope* scope,
-                 bool link_lazily = false)
-      : AstNode(token_pos),
-        function_(function),
-        native_c_function_name_(native_c_function_name),
-        scope_(scope),
-        link_lazily_(link_lazily) {
-    ASSERT(function_.IsZoneHandle());
-    ASSERT(native_c_function_name_.IsZoneHandle());
-    ASSERT(native_c_function_name_.IsSymbol());
-  }
-
-  const Function& function() const { return function_; }
-  const String& native_c_function_name() const {
-    return native_c_function_name_;
-  }
-  LocalScope* scope() const { return scope_; }
-
-  bool link_lazily() const { return link_lazily_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {}
-
-  DECLARE_COMMON_NODE_FUNCTIONS(NativeBodyNode);
-
- private:
-  const Function& function_;  // Native Dart function.
-  const String& native_c_function_name_;
-  LocalScope* scope_;
-  const bool link_lazily_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(NativeBodyNode);
-};
-
-class CatchClauseNode : public AstNode {
- public:
-  static const intptr_t kInvalidTryIndex = -1;
-  static const intptr_t kImplicitAsyncTryIndex = 0;
-
-  CatchClauseNode(TokenPosition token_pos,
-                  SequenceNode* catch_block,
-                  const Array& handler_types,
-                  const LocalVariable* context_var,
-                  const LocalVariable* exception_var,
-                  const LocalVariable* stacktrace_var,
-                  const LocalVariable* rethrow_exception_var,
-                  const LocalVariable* rethrow_stacktrace_var,
-                  intptr_t catch_handler_index,
-                  bool needs_stacktrace)
-      : AstNode(token_pos),
-        catch_block_(catch_block),
-        handler_types_(handler_types),
-        context_var_(*context_var),
-        exception_var_(*exception_var),
-        stacktrace_var_(*stacktrace_var),
-        rethrow_exception_var_(*rethrow_exception_var),
-        rethrow_stacktrace_var_(*rethrow_stacktrace_var),
-        catch_handler_index_(catch_handler_index),
-        needs_stacktrace_(needs_stacktrace) {
-    ASSERT(catch_block_ != NULL);
-    ASSERT(handler_types.IsZoneHandle());
-    ASSERT(context_var != NULL);
-    ASSERT(exception_var != NULL);
-    ASSERT(stacktrace_var != NULL);
-  }
-
-  SequenceNode* sequence() const { return catch_block_; }
-  const Array& handler_types() const { return handler_types_; }
-  const LocalVariable& context_var() const { return context_var_; }
-  const LocalVariable& exception_var() const { return exception_var_; }
-  const LocalVariable& stacktrace_var() const { return stacktrace_var_; }
-  const LocalVariable& rethrow_exception_var() const {
-    return rethrow_exception_var_;
-  }
-  const LocalVariable& rethrow_stacktrace_var() const {
-    return rethrow_stacktrace_var_;
-  }
-  intptr_t catch_handler_index() const { return catch_handler_index_; }
-  bool needs_stacktrace() const { return needs_stacktrace_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    catch_block_->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(CatchClauseNode);
-
- private:
-  SequenceNode* catch_block_;
-  const Array& handler_types_;
-  const LocalVariable& context_var_;
-  const LocalVariable& exception_var_;
-  const LocalVariable& stacktrace_var_;
-  const LocalVariable& rethrow_exception_var_;
-  const LocalVariable& rethrow_stacktrace_var_;
-  const intptr_t catch_handler_index_;
-  const bool needs_stacktrace_;
-
-  DISALLOW_COPY_AND_ASSIGN(CatchClauseNode);
-};
-
-class TryCatchNode : public AstNode {
- public:
-  TryCatchNode(TokenPosition token_pos,
-               SequenceNode* try_block,
-               const LocalVariable* context_var,
-               CatchClauseNode* catch_block,
-               SequenceNode* finally_block,
-               intptr_t try_index,
-               SequenceNode* rethrow_clause)
-      : AstNode(token_pos),
-        try_block_(try_block),
-        context_var_(*context_var),
-        catch_block_(catch_block),
-        finally_block_(finally_block),
-        try_index_(try_index),
-        rethrow_clause_(rethrow_clause) {
-    ASSERT(try_block_ != NULL);
-    ASSERT(context_var != NULL);
-    ASSERT(catch_block_ != NULL);
-  }
-
-  SequenceNode* try_block() const { return try_block_; }
-  CatchClauseNode* catch_block() const { return catch_block_; }
-  SequenceNode* finally_block() const { return finally_block_; }
-  const LocalVariable& context_var() const { return context_var_; }
-  intptr_t try_index() const { return try_index_; }
-
-  SequenceNode* rethrow_clause() const { return rethrow_clause_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    try_block_->Visit(visitor);
-    if (catch_block_ != NULL) {
-      catch_block_->Visit(visitor);
-    }
-    if (finally_block_ != NULL) {
-      finally_block_->Visit(visitor);
-    }
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(TryCatchNode);
-
- private:
-  SequenceNode* try_block_;
-  const LocalVariable& context_var_;
-  CatchClauseNode* catch_block_;
-  SequenceNode* finally_block_;
-  const intptr_t try_index_;
-  SequenceNode* rethrow_clause_;
-
-  DISALLOW_COPY_AND_ASSIGN(TryCatchNode);
-};
-
-class ThrowNode : public AstNode {
- public:
-  ThrowNode(TokenPosition token_pos, AstNode* exception, AstNode* stacktrace)
-      : AstNode(token_pos), exception_(exception), stacktrace_(stacktrace) {
-    ASSERT(exception_ != NULL);
-  }
-
-  AstNode* exception() const { return exception_; }
-  AstNode* stacktrace() const { return stacktrace_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    exception()->Visit(visitor);
-    if (stacktrace() != NULL) {
-      stacktrace()->Visit(visitor);
-    }
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(ThrowNode);
-
- private:
-  AstNode* exception_;
-  AstNode* stacktrace_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(ThrowNode);
-};
-
-class InlinedFinallyNode : public AstNode {
- public:
-  InlinedFinallyNode(TokenPosition token_pos,
-                     SequenceNode* finally_block,
-                     const LocalVariable* context_var,
-                     intptr_t try_index)
-      : AstNode(token_pos),
-        finally_block_(finally_block),
-        context_var_(*context_var),
-        try_index_(try_index) {
-    ASSERT(finally_block_ != NULL);
-    ASSERT(context_var != NULL);
-  }
-
-  SequenceNode* finally_block() const { return finally_block_; }
-  const LocalVariable& context_var() const { return context_var_; }
-  intptr_t try_index() const { return try_index_; }
-
-  virtual void VisitChildren(AstNodeVisitor* visitor) const {
-    finally_block()->Visit(visitor);
-  }
-
-  DECLARE_COMMON_NODE_FUNCTIONS(InlinedFinallyNode);
-
- private:
-  SequenceNode* finally_block_;
-  const LocalVariable& context_var_;
-  const intptr_t try_index_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(InlinedFinallyNode);
-};
-
 }  // namespace dart
 
 #undef DECLARE_COMMON_NODE_FUNCTIONS
diff --git a/runtime/vm/ast_printer.cc b/runtime/vm/ast_printer.cc
deleted file mode 100644
index f9b190e..0000000
--- a/runtime/vm/ast_printer.cc
+++ /dev/null
@@ -1,515 +0,0 @@
-// Copyright (c) 2011, 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.
-
-#include "vm/ast_printer.h"
-
-#include "vm/handles.h"
-#include "vm/log.h"
-#include "vm/object.h"
-#include "vm/os.h"
-#include "vm/parser.h"
-
-#if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
-
-namespace dart {
-
-AstPrinter::AstPrinter(bool log)
-    : indent_(0), logger_(log ? Log::Current() : Log::NoOpLog()) {}
-
-AstPrinter::~AstPrinter() {}
-
-void AstPrinter::VisitGenericAstNode(AstNode* node) {
-  logger_->Print("(%s ", node->Name());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitSequenceNode(SequenceNode* node) {
-  indent_++;
-  LocalScope* scope = node->scope();
-  logger_->Print("(%s (scope \"%p\"", node->Name(), scope);
-  if (scope != NULL) {
-    logger_->Print(" (%s-%s) loop %d", scope->begin_token_pos().ToCString(),
-                   scope->end_token_pos().ToCString(), scope->loop_level());
-    if (scope->HasContextLevel()) {
-      logger_->Print(" context %d captures %d", scope->context_level(),
-                     scope->num_context_variables());
-    } else {
-      ASSERT(scope->num_context_variables() == 0);
-    }
-  }
-  logger_->Print(")");
-  for (int i = 0; i < node->length(); ++i) {
-    PrintNewlineAndIndent();
-    node->NodeAt(i)->Visit(this);
-  }
-  logger_->Print(")");
-  indent_--;
-}
-
-void AstPrinter::VisitCloneContextNode(CloneContextNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitArgumentListNode(ArgumentListNode* arguments) {
-  VisitGenericAstNode(arguments);
-}
-
-void AstPrinter::VisitReturnNode(ReturnNode* node) {
-  const char* kind;
-  switch (node->return_type()) {
-    case ReturnNode::kContinuation:
-      kind = "continuation ";
-      break;
-    case ReturnNode::kContinuationTarget:
-      kind = "continuation-target ";
-      break;
-    case ReturnNode::kRegular:
-      kind = "";
-      break;
-    default:
-      kind = "";
-      UNREACHABLE();
-  }
-  logger_->Print("(%s %s", node->Name(), kind);
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitGenericLocalNode(AstNode* node,
-                                       const LocalVariable& variable) {
-  logger_->Print("(%s ", node->Name());
-  PrintLocalVariable(&variable);
-  logger_->Print(" ");
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitLoadLocalNode(LoadLocalNode* node) {
-  VisitGenericLocalNode(node, node->local());
-}
-
-void AstPrinter::VisitStoreLocalNode(StoreLocalNode* node) {
-  VisitGenericLocalNode(node, node->local());
-}
-
-void AstPrinter::VisitGenericFieldNode(AstNode* node, const Field& field) {
-  logger_->Print(
-      "(%s %s%s \"%s\" ", node->Name(), field.is_final() ? "final " : "",
-      String::Handle(AbstractType::Handle(field.type()).Name()).ToCString(),
-      String::Handle(field.name()).ToCString());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitLoadInstanceFieldNode(LoadInstanceFieldNode* node) {
-  VisitGenericFieldNode(node, node->field());
-}
-
-void AstPrinter::VisitStoreInstanceFieldNode(StoreInstanceFieldNode* node) {
-  VisitGenericFieldNode(node, Field::ZoneHandle(node->field().Original()));
-}
-
-void AstPrinter::VisitLoadStaticFieldNode(LoadStaticFieldNode* node) {
-  VisitGenericFieldNode(node, node->field());
-}
-
-void AstPrinter::VisitStoreStaticFieldNode(StoreStaticFieldNode* node) {
-  VisitGenericFieldNode(node, node->field());
-}
-
-void AstPrinter::PrintLocalVariable(const LocalVariable* variable) {
-  logger_->Print("%s%s \"%s\"", variable->is_final() ? "final " : "",
-                 String::Handle(variable->type().Name()).ToCString(),
-                 variable->name().ToCString());
-  if (variable->HasIndex()) {
-    const int index = variable->index().value();
-    if (variable->is_captured()) {
-      logger_->Print(" (context %d %d)", variable->owner()->context_level(),
-                     index);
-    } else {
-      logger_->Print(" (stack %d)", index);
-    }
-  }
-}
-
-void AstPrinter::PrintNewlineAndIndent() {
-  logger_->Print("\n");
-  for (intptr_t p = 0; p < indent_; ++p) {
-    logger_->Print("  ");
-  }
-}
-
-void AstPrinter::VisitLetNode(LetNode* node) {
-  logger_->Print("(Let (");
-  // Indent the variables and initializers by two.
-  indent_ += 2;
-  for (intptr_t i = 0; i < node->num_temps(); ++i) {
-    if (i != 0) PrintNewlineAndIndent();
-    logger_->Print("(");
-    PrintLocalVariable(node->TempAt(i));
-    logger_->Print(" ");
-    node->InitializerAt(i)->Visit(this);
-    logger_->Print(")");
-  }
-  logger_->Print(")");
-
-  // Indent the body nodes by one.
-  --indent_;
-  for (intptr_t i = 0; i < node->nodes().length(); ++i) {
-    PrintNewlineAndIndent();
-    node->nodes()[i]->Visit(this);
-  }
-  logger_->Print(")");
-  --indent_;
-}
-
-void AstPrinter::VisitArrayNode(ArrayNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitStringInterpolateNode(StringInterpolateNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitLiteralNode(LiteralNode* node) {
-  const Instance& literal = node->literal();
-  logger_->Print("(%s \"%s\")", node->Name(), literal.ToCString());
-}
-
-void AstPrinter::VisitTypeNode(TypeNode* node) {
-  const AbstractType& type = node->type();
-  logger_->Print("(%s \"%s\")", node->Name(),
-                 String::Handle(type.Name()).ToCString());
-}
-
-void AstPrinter::VisitAssignableNode(AssignableNode* node) {
-  const AbstractType& type = node->type();
-  const String& dst_name = node->dst_name();
-  logger_->Print("(%s (type \"%s\") (of \"%s\") ", node->Name(),
-                 String::Handle(type.Name()).ToCString(), dst_name.ToCString());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitAwaitNode(AwaitNode* node) {
-  logger_->Print("(*****%s***** (scope \"%p\") ", node->Name(), node->scope());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitAwaitMarkerNode(AwaitMarkerNode* node) {
-  logger_->Print("(%s (async_scope \"%p\" await_scope \"%p\"))", node->Name(),
-                 node->async_scope(), node->await_scope());
-}
-
-void AstPrinter::VisitPrimaryNode(PrimaryNode* node) {
-  logger_->Print("(*****%s***** \"%s\")", node->Name(),
-                 node->primary().ToCString());
-}
-
-void AstPrinter::VisitComparisonNode(ComparisonNode* node) {
-  logger_->Print("(%s %s ", node->Name(), node->TokenName());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitBinaryOpNode(BinaryOpNode* node) {
-  logger_->Print("(%s %s ", node->Name(), node->TokenName());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitUnaryOpNode(UnaryOpNode* node) {
-  logger_->Print("(%s %s ", node->Name(), node->TokenName());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitConditionalExprNode(ConditionalExprNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitIfNode(IfNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitCaseNode(CaseNode* node) {
-  logger_->Print("(%s (", node->Name());
-  for (int i = 0; i < node->case_expressions()->length(); i++) {
-    node->case_expressions()->NodeAt(i)->Visit(this);
-  }
-  if (node->contains_default()) {
-    logger_->Print(" default");
-  }
-  logger_->Print(")");
-  node->statements()->Visit(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitSwitchNode(SwitchNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitWhileNode(WhileNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitForNode(ForNode* node) {
-  // Complicated because the condition is optional and so we clearly want to
-  // indicate the subparts.
-  logger_->Print("(%s (init ", node->Name());
-  node->initializer()->Visit(this);
-  if (node->condition() != NULL) {
-    logger_->Print(") (cond ");
-    node->condition()->Visit(this);
-  }
-  logger_->Print(") (update ");
-  node->increment()->Visit(this);
-  logger_->Print(") ");
-  node->body()->Visit(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitDoWhileNode(DoWhileNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitJumpNode(JumpNode* node) {
-  logger_->Print("(%s %s %s (scope \"%p\"))", node->Name(), node->TokenName(),
-                 node->label()->name().ToCString(), node->label()->owner());
-}
-
-void AstPrinter::VisitInstanceCallNode(InstanceCallNode* node) {
-  logger_->Print("(%s \"%s\" ", node->Name(),
-                 node->function_name().ToCString());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitStaticCallNode(StaticCallNode* node) {
-  const char* function_fullname = node->function().ToFullyQualifiedCString();
-  logger_->Print("(%s \"%s\" ", node->Name(), function_fullname);
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitClosureNode(ClosureNode* node) {
-  const char* function_fullname = node->function().ToFullyQualifiedCString();
-  logger_->Print("(%s \"%s\")", node->Name(), function_fullname);
-}
-
-void AstPrinter::VisitClosureCallNode(ClosureCallNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitConstructorCallNode(ConstructorCallNode* node) {
-  const char* kind = node->constructor().IsFactory() ? "factory " : "";
-  const char* constructor_name = node->constructor().ToFullyQualifiedCString();
-  logger_->Print("(%s %s \"%s\" ", node->Name(), kind, constructor_name);
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitInstanceGetterNode(InstanceGetterNode* node) {
-  logger_->Print("(%s \"%s\" ", node->Name(), node->field_name().ToCString());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitInstanceSetterNode(InstanceSetterNode* node) {
-  logger_->Print("(%s \"%s\" ", node->Name(), node->field_name().ToCString());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitInitStaticFieldNode(InitStaticFieldNode* node) {
-  logger_->Print("(%s \"%s\")", node->Name(),
-                 String::Handle(node->field().name()).ToCString());
-}
-
-void AstPrinter::VisitStaticGetterNode(StaticGetterNode* node) {
-  String& class_name = String::Handle(node->cls().Name());
-  logger_->Print("(%s \"%s.%s\")", node->Name(), class_name.ToCString(),
-                 node->field_name().ToCString());
-}
-
-void AstPrinter::VisitStaticSetterNode(StaticSetterNode* node) {
-  String& class_name = String::Handle(node->cls().Name());
-  logger_->Print("(%s \"%s.%s\" ", node->Name(), class_name.ToCString(),
-                 node->field_name().ToCString());
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitLoadIndexedNode(LoadIndexedNode* node) {
-  logger_->Print("(%s%s ", node->Name(), node->IsSuperLoad() ? " super" : "");
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitStoreIndexedNode(StoreIndexedNode* node) {
-  logger_->Print("(%s%s ", node->Name(), node->IsSuperStore() ? " super" : "");
-  node->VisitChildren(this);
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitNativeBodyNode(NativeBodyNode* node) {
-  logger_->Print(
-      "(%s \"%s\" (%" Pd " args))", node->Name(),
-      node->native_c_function_name().ToCString(),
-      NativeArguments::ParameterCountForResolution(node->function()));
-}
-
-void AstPrinter::VisitCatchClauseNode(CatchClauseNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitTryCatchNode(TryCatchNode* node) {
-  logger_->Print("(%s ", node->Name());
-  node->try_block()->Visit(this);
-  node->catch_block()->Visit(this);
-  if (node->finally_block() != NULL) {
-    logger_->Print("(finally ");
-    node->finally_block()->Visit(this);
-    logger_->Print(")");
-  }
-  logger_->Print(")");
-}
-
-void AstPrinter::VisitThrowNode(ThrowNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::VisitStopNode(StopNode* node) {
-  logger_->Print("(%s %s)", node->Name(), node->message());
-}
-
-void AstPrinter::VisitInlinedFinallyNode(InlinedFinallyNode* node) {
-  VisitGenericAstNode(node);
-}
-
-void AstPrinter::PrintNode(AstNode* node) {
-  ASSERT(node != NULL);
-  AstPrinter ast_printer;
-  node->Visit(&ast_printer);
-  logger_->Print("\n");
-}
-
-void AstPrinter::IndentN(int count) {
-  for (int i = 0; i < count; i++) {
-    logger_->Print(" ");
-  }
-}
-
-void AstPrinter::PrintLocalScopeVariable(const LocalScope* scope,
-                                         LocalVariable* var,
-                                         int indent) {
-  ASSERT(scope != NULL);
-  ASSERT(var != NULL);
-  IndentN(indent);
-  logger_->Print("(%s%s '%s'", var->is_final() ? "final " : "",
-                 String::Handle(var->type().Name()).ToCString(),
-                 var->name().ToCString());
-  if (var->owner() != scope) {
-    logger_->Print(" alias");
-  }
-  if (var->HasIndex()) {
-    logger_->Print(" @%d", var->index().value());
-    if (var->is_captured()) {
-      logger_->Print(" ctx %d", var->owner()->context_level());
-    }
-  } else if (var->owner()->function_level() != 0) {
-    logger_->Print(" lev %d", var->owner()->function_level());
-  }
-  logger_->Print(" valid %s-%s)\n", var->token_pos().ToCString(),
-                 scope->end_token_pos().ToCString());
-}
-
-void AstPrinter::PrintLocalScope(const LocalScope* scope,
-                                 int start_index,
-                                 int indent) {
-  ASSERT(scope != NULL);
-  for (int i = start_index; i < scope->num_variables(); i++) {
-    LocalVariable* var = scope->VariableAt(i);
-    PrintLocalScopeVariable(scope, var, indent);
-  }
-  const LocalScope* child = scope->child();
-  while (child != NULL) {
-    IndentN(indent);
-    logger_->Print("{scope %p ", child);
-    if (child->HasContextLevel()) {
-      logger_->Print("ctx %d numctxvar %d ", child->context_level(),
-                     child->num_context_variables());
-    }
-    logger_->Print("llev %d\n", child->loop_level());
-    PrintLocalScope(child, 0, indent + kScopeIndent);
-    IndentN(indent);
-    logger_->Print("}\n");
-    child = child->sibling();
-  }
-}
-
-void AstPrinter::PrintFunctionScope(const ParsedFunction& parsed_function) {
-  HANDLESCOPE(parsed_function.thread());
-  const Function& function = parsed_function.function();
-  SequenceNode* node_sequence = parsed_function.node_sequence();
-  ASSERT(node_sequence != NULL);
-  const LocalScope* scope = node_sequence->scope();
-  ASSERT(scope != NULL);
-  const char* function_name = function.ToFullyQualifiedCString();
-  logger_->Print("Scope for function '%s'\n{scope %p ", function_name, scope);
-  if (scope->HasContextLevel()) {
-    logger_->Print("ctx %d numctxvar %d ", scope->context_level(),
-                   scope->num_context_variables());
-  }
-  logger_->Print("llev %d\n", scope->loop_level());
-  const int num_fixed_params = function.num_fixed_parameters();
-  const int num_params = num_fixed_params + function.NumOptionalParameters();
-  // Parameters must be listed first and must all appear in the top scope.
-  ASSERT(num_params <= scope->num_variables());
-  int pos = 0;  // Current position of variable in scope.
-  int indent = kScopeIndent;
-  while (pos < num_params) {
-    LocalVariable* param = scope->VariableAt(pos);
-    ASSERT(param->owner() == scope);  // No aliases should precede parameters.
-    IndentN(indent);
-    logger_->Print("(param %s%s '%s'", param->is_final() ? "final " : "",
-                   String::Handle(param->type().Name()).ToCString(),
-                   param->name().ToCString());
-    // Print the default value if the parameter is optional.
-    if (pos >= num_fixed_params && pos < num_params) {
-      const Instance& default_parameter_value =
-          parsed_function.DefaultParameterValueAt(pos - num_fixed_params);
-      logger_->Print(" =%s", default_parameter_value.ToCString());
-    }
-    if (param->HasIndex()) {
-      logger_->Print(" @%d", param->index().value());
-      if (param->is_captured()) {
-        logger_->Print(" ctx %d", param->owner()->context_level());
-      }
-    }
-    logger_->Print(" valid %s-%s)\n", param->token_pos().ToCString(),
-                   scope->end_token_pos().ToCString());
-    pos++;
-  }
-  // Visit remaining non-parameter variables and children scopes.
-  PrintLocalScope(scope, pos, indent);
-  logger_->Print("}\n");
-}
-
-void AstPrinter::PrintFunctionNodes(const ParsedFunction& parsed_function) {
-  HANDLESCOPE(parsed_function.thread());
-  SequenceNode* node_sequence = parsed_function.node_sequence();
-  ASSERT(node_sequence != NULL);
-  const char* function_name =
-      parsed_function.function().ToFullyQualifiedCString();
-  logger_->Print("Ast for function '%s' {\n", function_name);
-  node_sequence->Visit(this);
-  logger_->Print("}\n");
-}
-
-}  // namespace dart
-
-#endif  // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/vm/ast_printer.h b/runtime/vm/ast_printer.h
deleted file mode 100644
index f825a5d..0000000
--- a/runtime/vm/ast_printer.h
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2011, 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.
-
-#ifndef RUNTIME_VM_AST_PRINTER_H_
-#define RUNTIME_VM_AST_PRINTER_H_
-
-#include "vm/ast.h"
-#include "vm/growable_array.h"
-
-namespace dart {
-
-// Forward declaration.
-class ParsedFunction;
-class Log;
-
-class AstPrinter : public AstNodeVisitor {
- public:
-  explicit AstPrinter(bool log = true);
-  ~AstPrinter();
-
-  void PrintNode(AstNode* node);
-  void PrintFunctionScope(const ParsedFunction& parsed_function);
-  void PrintFunctionNodes(const ParsedFunction& parsed_function);
-
-#define DECLARE_VISITOR_FUNCTION(BaseName)                                     \
-  virtual void Visit##BaseName##Node(BaseName##Node* node);
-
-  FOR_EACH_NODE(DECLARE_VISITOR_FUNCTION)
-#undef DECLARE_VISITOR_FUNCTION
-
- private:
-  static const int kScopeIndent = 2;
-
-  void IndentN(int count);
-  void PrintLocalScopeVariable(const LocalScope* scope,
-                               LocalVariable* var,
-                               int indent = 0);
-  void PrintLocalScope(const LocalScope* scope,
-                       int variable_index,
-                       int indent = 0);
-
-  void VisitGenericAstNode(AstNode* node);
-  void VisitGenericLocalNode(AstNode* node, const LocalVariable& local);
-  void VisitGenericFieldNode(AstNode* node, const Field& field);
-
-  void PrintLocalVariable(const LocalVariable* variable);
-  void PrintNewlineAndIndent();
-
-  intptr_t indent_;
-  Log* logger_;
-
-  DISALLOW_COPY_AND_ASSIGN(AstPrinter);
-};
-
-}  // namespace dart
-
-#endif  // RUNTIME_VM_AST_PRINTER_H_
diff --git a/runtime/vm/ast_printer_test.cc b/runtime/vm/ast_printer_test.cc
deleted file mode 100644
index 64341cf..0000000
--- a/runtime/vm/ast_printer_test.cc
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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.
-
-#include "vm/ast_printer.h"
-#include "platform/assert.h"
-#include "vm/isolate.h"
-#include "vm/object.h"
-#include "vm/unit_test.h"
-
-namespace dart {
-
-#ifndef PRODUCT
-
-ISOLATE_UNIT_TEST_CASE(AstPrinter) {
-  const TokenPosition kPos = TokenPosition::kNoSource;
-  LocalVariable* v = new LocalVariable(
-      kPos, kPos, String::ZoneHandle(Symbols::New(thread, "wurscht")),
-      Type::ZoneHandle(Type::DynamicType()));
-  v->set_index(VariableIndex(5));
-  AstPrinter ast_printer;
-  LoadLocalNode* ll = new LoadLocalNode(kPos, v);
-  ReturnNode* r = new ReturnNode(kPos, ll);
-  ast_printer.PrintNode(r);
-
-  AstNode* l = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3)));
-  ReturnNode* rl = new ReturnNode(kPos, l);
-  ast_printer.PrintNode(rl);
-
-  ast_printer.PrintNode(new ReturnNode(kPos));
-
-  ast_printer.PrintNode(new BinaryOpNode(
-      kPos, Token::kADD, new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3))),
-      new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(5)))));
-  ast_printer.PrintNode(new UnaryOpNode(kPos, Token::kNEGATE, ll));
-}
-
-#endif  // !PRODUCT
-
-}  // namespace dart
diff --git a/runtime/vm/ast_test.cc b/runtime/vm/ast_test.cc
deleted file mode 100644
index b1a062e..0000000
--- a/runtime/vm/ast_test.cc
+++ /dev/null
@@ -1,64 +0,0 @@
-// 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.
-
-#include "vm/ast.h"
-#include "platform/assert.h"
-#include "vm/isolate.h"
-#include "vm/object.h"
-#include "vm/unit_test.h"
-
-namespace dart {
-
-TEST_CASE(Ast) {
-  LocalVariable* v =
-      new LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
-                        String::ZoneHandle(Symbols::New(thread, "v")),
-                        Type::ZoneHandle(Type::DynamicType()));
-  AstNode* ll = new LoadLocalNode(TokenPosition::kNoSource, v);
-  EXPECT(ll->IsLoadLocalNode());
-  EXPECT(!ll->IsLiteralNode());
-  LoadLocalNode* lln = ll->AsLoadLocalNode();
-  EXPECT(NULL != lln);
-  v->set_index(VariableIndex(1));
-  EXPECT_EQ(1, v->index().value());
-
-  LocalVariable* p =
-      new LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
-                        String::ZoneHandle(Symbols::New(thread, "p")),
-                        Type::ZoneHandle(Type::DynamicType()));
-  EXPECT(!p->HasIndex());
-  p->set_index(VariableIndex(-1));
-  EXPECT(p->HasIndex());
-  EXPECT_EQ(-1, p->index().value());
-
-  ReturnNode* r = new ReturnNode(TokenPosition::kNoSource, lln);
-  EXPECT_EQ(lln, r->value());
-
-  LiteralNode* l =
-      new LiteralNode(TokenPosition::kNoSource, Smi::ZoneHandle(Smi::New(3)));
-  EXPECT(l->literal().IsSmi());
-  EXPECT_EQ(Smi::New(3), l->literal().raw());
-
-  BinaryOpNode* b =
-      new BinaryOpNode(TokenPosition::kNoSource, Token::kADD, l, lln);
-  EXPECT_EQ(Token::kADD, b->kind());
-  EXPECT_EQ(l, b->left());
-  EXPECT_EQ(lln, b->right());
-
-  UnaryOpNode* u = new UnaryOpNode(TokenPosition::kNoSource, Token::kNEGATE, b);
-  EXPECT_EQ(Token::kNEGATE, u->kind());
-  EXPECT_EQ(b, u->operand());
-
-  SequenceNode* sequence_node =
-      new SequenceNode(TokenPosition(1), new LocalScope(NULL, 0, 0));
-  LiteralNode* literal_node =
-      new LiteralNode(TokenPosition(2), Smi::ZoneHandle(Smi::New(3)));
-  ReturnNode* return_node = new ReturnNode(TokenPosition(3), literal_node);
-  sequence_node->Add(return_node);
-  GrowableArray<AstNode*> nodes;
-  sequence_node->CollectAllNodes(&nodes);
-  EXPECT_EQ(3, nodes.length());
-}
-
-}  // namespace dart
diff --git a/runtime/vm/ast_transformer.cc b/runtime/vm/ast_transformer.cc
deleted file mode 100644
index c8cf381..0000000
--- a/runtime/vm/ast_transformer.cc
+++ /dev/null
@@ -1,505 +0,0 @@
-// Copyright (c) 2014, 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.
-
-#if !defined(DART_PRECOMPILED_RUNTIME)
-
-#include "vm/ast_transformer.h"
-
-#include "vm/object_store.h"
-#include "vm/parser.h"
-#include "vm/thread.h"
-
-namespace dart {
-
-// Quick access to the current thread.
-#define T (thread())
-
-// Quick access to the current zone.
-#define Z (thread()->zone())
-
-// Quick synthetic token position.
-#define ST(token_pos) ((token_pos).ToSynthetic())
-
-// Nodes that are unreachable from already parsed expressions.
-#define FOR_EACH_UNREACHABLE_NODE(V)                                           \
-  V(AwaitMarker)                                                               \
-  V(Case)                                                                      \
-  V(CatchClause)                                                               \
-  V(CloneContext)                                                              \
-  V(ClosureCall)                                                               \
-  V(DoWhile)                                                                   \
-  V(If)                                                                        \
-  V(InitStaticField)                                                           \
-  V(InlinedFinally)                                                            \
-  V(For)                                                                       \
-  V(Jump)                                                                      \
-  V(Stop)                                                                      \
-  V(LoadInstanceField)                                                         \
-  V(NativeBody)                                                                \
-  V(Primary)                                                                   \
-  V(Return)                                                                    \
-  V(Sequence)                                                                  \
-  V(StoreInstanceField)                                                        \
-  V(Switch)                                                                    \
-  V(TryCatch)                                                                  \
-  V(While)
-
-#define DEFINE_UNREACHABLE(BaseName)                                           \
-  void AwaitTransformer::Visit##BaseName##Node(BaseName##Node* node) {         \
-    UNREACHABLE();                                                             \
-  }
-
-FOR_EACH_UNREACHABLE_NODE(DEFINE_UNREACHABLE)
-#undef DEFINE_UNREACHABLE
-
-AwaitTransformer::AwaitTransformer(SequenceNode* preamble,
-                                   LocalScope* async_temp_scope)
-    : preamble_(preamble),
-      temp_cnt_(0),
-      async_temp_scope_(async_temp_scope),
-      thread_(Thread::Current()) {
-  ASSERT(async_temp_scope_ != NULL);
-}
-
-AstNode* AwaitTransformer::Transform(AstNode* expr) {
-  expr->Visit(this);
-  return result_;
-}
-
-LocalVariable* AwaitTransformer::EnsureCurrentTempVar() {
-  String& symbol =
-      String::ZoneHandle(Z, Symbols::NewFormatted(T, "%d", temp_cnt_));
-  symbol = Symbols::FromConcat(T, Symbols::AwaitTempVarPrefix(), symbol);
-  ASSERT(!symbol.IsNull());
-  // Look up the variable in the scope used for async temp variables.
-  LocalVariable* await_tmp = async_temp_scope_->LocalLookupVariable(symbol);
-  if (await_tmp == NULL) {
-    // We need a new temp variable; add it to the function's top scope.
-    await_tmp = new (Z)
-        LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
-                      symbol, Object::dynamic_type());
-    async_temp_scope_->AddVariable(await_tmp);
-    // After adding it to the top scope, we can look it up from the preamble.
-    // The following call includes an ASSERT check.
-    await_tmp = GetVariableInScope(preamble_->scope(), symbol);
-  }
-  return await_tmp;
-}
-
-LocalVariable* AwaitTransformer::GetVariableInScope(LocalScope* scope,
-                                                    const String& symbol) {
-  LocalVariable* var = scope->LookupVariable(symbol, false);
-  ASSERT(var != NULL);
-  return var;
-}
-
-LocalVariable* AwaitTransformer::AddNewTempVarToPreamble(
-    AstNode* node,
-    TokenPosition token_pos) {
-  LocalVariable* tmp_var = EnsureCurrentTempVar();
-  ASSERT(token_pos.IsSynthetic() || token_pos.IsNoSource());
-  preamble_->Add(new (Z) StoreLocalNode(token_pos, tmp_var, node));
-  NextTempVar();
-  return tmp_var;
-}
-
-LoadLocalNode* AwaitTransformer::MakeName(AstNode* node) {
-  LocalVariable* temp = AddNewTempVarToPreamble(node, ST(node->token_pos()));
-  return new (Z) LoadLocalNode(ST(node->token_pos()), temp);
-}
-
-void AwaitTransformer::VisitLiteralNode(LiteralNode* node) {
-  result_ = node;
-}
-
-void AwaitTransformer::VisitTypeNode(TypeNode* node) {
-  if (node->is_deferred_reference()) {
-    // Deferred references must use a temporary even after loading
-    // happened, so that the number of await temps is the same as
-    // before the loading.
-    result_ = MakeName(node);
-  } else {
-    result_ = node;
-  }
-}
-
-void AwaitTransformer::VisitAwaitNode(AwaitNode* node) {
-  // Await transformation:
-  //
-  //   :await_temp_var_X = <expr>;
-  //   AwaitMarker(kNewContinuationState);
-  //   :result_param = _awaitHelper(
-  //      :await_temp_var_X,
-  //      :async_then_callback,
-  //      :async_catch_error_callback,
-  //      :async_op);
-  //   return;  // (return_type() == kContinuationTarget)
-  //
-  //   :saved_try_ctx_var = :await_saved_try_ctx_var_y;
-  //   :await_temp_var_(X+1) = :result_param;
-
-  const TokenPosition token_pos = ST(node->token_pos());
-  LocalVariable* async_op =
-      GetVariableInScope(preamble_->scope(), Symbols::AsyncOperation());
-  LocalVariable* async_then_callback =
-      GetVariableInScope(preamble_->scope(), Symbols::AsyncThenCallback());
-  LocalVariable* async_catch_error_callback = GetVariableInScope(
-      preamble_->scope(), Symbols::AsyncCatchErrorCallback());
-  LocalVariable* result_param =
-      GetVariableInScope(preamble_->scope(), Symbols::AsyncOperationParam());
-  LocalVariable* error_param = GetVariableInScope(
-      preamble_->scope(), Symbols::AsyncOperationErrorParam());
-  LocalVariable* stack_trace_param = GetVariableInScope(
-      preamble_->scope(), Symbols::AsyncOperationStackTraceParam());
-
-  AstNode* transformed_expr = Transform(node->expr());
-  LocalVariable* await_temp =
-      AddNewTempVarToPreamble(transformed_expr, ST(node->token_pos()));
-
-  AwaitMarkerNode* await_marker =
-      new (Z) AwaitMarkerNode(async_temp_scope_, node->scope(), token_pos);
-  preamble_->Add(await_marker);
-
-  // :result_param = _awaitHelper(
-  //      :await_temp,
-  //      :async_then_callback,
-  //      :async_catch_error_callback,
-  //      :async_op)
-  const Library& async_lib = Library::Handle(Library::AsyncLibrary());
-  const Function& async_await_helper = Function::ZoneHandle(
-      Z, async_lib.LookupFunctionAllowPrivate(Symbols::AsyncAwaitHelper()));
-  ASSERT(!async_await_helper.IsNull());
-  ArgumentListNode* async_await_helper_args =
-      new (Z) ArgumentListNode(token_pos);
-  async_await_helper_args->Add(new (Z) LoadLocalNode(token_pos, await_temp));
-  async_await_helper_args->Add(
-      new (Z) LoadLocalNode(token_pos, async_then_callback));
-  async_await_helper_args->Add(
-      new (Z) LoadLocalNode(token_pos, async_catch_error_callback));
-  async_await_helper_args->Add(new (Z) LoadLocalNode(token_pos, async_op));
-  StaticCallNode* await_helper_call =
-      new (Z) StaticCallNode(node->token_pos(), async_await_helper,
-                             async_await_helper_args, StaticCallNode::kStatic);
-
-  preamble_->Add(
-      new (Z) StoreLocalNode(token_pos, result_param, await_helper_call));
-
-  ReturnNode* continuation_return = new (Z) ReturnNode(token_pos);
-  continuation_return->set_return_type(ReturnNode::kContinuationTarget);
-  preamble_->Add(continuation_return);
-
-  // If this expression is part of a try block, also append the code for
-  // restoring the saved try context that lives on the stack and possibly the
-  // saved try context of the outer try block.
-  if (node->saved_try_ctx() != NULL) {
-    preamble_->Add(new (Z) StoreLocalNode(
-        token_pos, node->saved_try_ctx(),
-        new (Z) LoadLocalNode(token_pos, node->async_saved_try_ctx())));
-    if (node->outer_saved_try_ctx() != NULL) {
-      preamble_->Add(new (Z) StoreLocalNode(
-          token_pos, node->outer_saved_try_ctx(),
-          new (Z) LoadLocalNode(token_pos, node->outer_async_saved_try_ctx())));
-    }
-  } else {
-    ASSERT(node->outer_saved_try_ctx() == NULL);
-  }
-
-  // Load the async_op variable. It is unused, but the observatory uses it
-  // to determine if a breakpoint is inside an asynchronous function.
-  LoadLocalNode* load_async_op = new (Z) LoadLocalNode(token_pos, async_op);
-  preamble_->Add(load_async_op);
-
-  LoadLocalNode* load_error_param =
-      new (Z) LoadLocalNode(token_pos, error_param);
-  LoadLocalNode* load_stack_trace_param =
-      new (Z) LoadLocalNode(token_pos, stack_trace_param);
-  SequenceNode* error_ne_null_branch =
-      new (Z) SequenceNode(token_pos, ChainNewScope(preamble_->scope()));
-  error_ne_null_branch->Add(
-      new (Z) ThrowNode(token_pos, load_error_param, load_stack_trace_param));
-  preamble_->Add(new (Z) IfNode(
-      token_pos,
-      new (Z) ComparisonNode(
-          token_pos, Token::kNE, load_error_param,
-          new (Z) LiteralNode(token_pos, Object::null_instance())),
-      error_ne_null_branch, NULL));
-
-  result_ = MakeName(new (Z) LoadLocalNode(token_pos, result_param));
-}
-
-// Transforms boolean expressions into a sequence of evaluations that only
-// lazily evaluate subexpressions.
-//
-// Example:
-//
-//   (a || b) only evaluates b if a is false
-//
-// Transformation (roughly):
-//
-//   t_1 = a;
-//   if (!t_1) {
-//     t_2 = b;
-//   }
-//   t_3 = t_1 || t_2;  // Compiler takes care that lazy evaluation takes place
-//                         on this level.
-AstNode* AwaitTransformer::LazyTransform(const Token::Kind logical_op,
-                                         AstNode* new_left,
-                                         AstNode* right) {
-  ASSERT(logical_op == Token::kAND || logical_op == Token::kOR);
-  AstNode* result = NULL;
-  const Token::Kind compare_logical_op =
-      (logical_op == Token::kAND) ? Token::kEQ : Token::kNE;
-  SequenceNode* eval = new (Z) SequenceNode(ST(new_left->token_pos()),
-                                            ChainNewScope(preamble_->scope()));
-  SequenceNode* saved_preamble = preamble_;
-  preamble_ = eval;
-  result = Transform(right);
-  preamble_ = saved_preamble;
-  IfNode* right_body = new (Z)
-      IfNode(ST(new_left->token_pos()),
-             new (Z) ComparisonNode(
-                 ST(new_left->token_pos()), compare_logical_op, new_left,
-                 new (Z) LiteralNode(ST(new_left->token_pos()), Bool::True())),
-             eval, NULL);
-  preamble_->Add(right_body);
-  return result;
-}
-
-LocalScope* AwaitTransformer::ChainNewScope(LocalScope* parent) {
-  return new (Z)
-      LocalScope(parent, parent->function_level(), parent->loop_level());
-}
-
-void AwaitTransformer::VisitBinaryOpNode(BinaryOpNode* node) {
-  AstNode* new_left = Transform(node->left());
-  AstNode* new_right = NULL;
-  // Preserve lazy evaluation.
-  if ((node->kind() == Token::kAND) || (node->kind() == Token::kOR)) {
-    new_right = LazyTransform(node->kind(), new_left, node->right());
-  } else {
-    new_right = Transform(node->right());
-  }
-  result_ = MakeName(new (Z) BinaryOpNode(node->token_pos(), node->kind(),
-                                          new_left, new_right));
-}
-
-void AwaitTransformer::VisitComparisonNode(ComparisonNode* node) {
-  AstNode* new_left = Transform(node->left());
-  AstNode* new_right = Transform(node->right());
-  result_ = MakeName(new (Z) ComparisonNode(node->token_pos(), node->kind(),
-                                            new_left, new_right));
-}
-
-void AwaitTransformer::VisitUnaryOpNode(UnaryOpNode* node) {
-  AstNode* new_operand = Transform(node->operand());
-  result_ = MakeName(
-      new (Z) UnaryOpNode(node->token_pos(), node->kind(), new_operand));
-}
-
-// ::= (<condition>) ? <true-branch> : <false-branch>
-//
-void AwaitTransformer::VisitConditionalExprNode(ConditionalExprNode* node) {
-  AstNode* new_condition = Transform(node->condition());
-  SequenceNode* new_true = new (Z) SequenceNode(
-      ST(node->true_expr()->token_pos()), ChainNewScope(preamble_->scope()));
-  SequenceNode* saved_preamble = preamble_;
-  preamble_ = new_true;
-  AstNode* new_true_result = Transform(node->true_expr());
-  SequenceNode* new_false = new (Z) SequenceNode(
-      ST(node->false_expr()->token_pos()), ChainNewScope(preamble_->scope()));
-  preamble_ = new_false;
-  AstNode* new_false_result = Transform(node->false_expr());
-  preamble_ = saved_preamble;
-  IfNode* new_if =
-      new (Z) IfNode(ST(node->token_pos()), new_condition, new_true, new_false);
-  preamble_->Add(new_if);
-  result_ = MakeName(new (Z) ConditionalExprNode(
-      ST(node->token_pos()), new_condition, new_true_result, new_false_result));
-}
-
-void AwaitTransformer::VisitArgumentListNode(ArgumentListNode* node) {
-  ArgumentListNode* new_args =
-      new (Z) ArgumentListNode(node->token_pos(), node->type_arguments());
-  for (intptr_t i = 0; i < node->length(); i++) {
-    new_args->Add(Transform(node->NodeAt(i)));
-  }
-  new_args->set_names(node->names());
-  result_ = new_args;
-}
-
-void AwaitTransformer::VisitArrayNode(ArrayNode* node) {
-  GrowableArray<AstNode*> new_elements;
-  for (intptr_t i = 0; i < node->length(); i++) {
-    new_elements.Add(Transform(node->ElementAt(i)));
-  }
-  result_ = new (Z) ArrayNode(node->token_pos(), node->type(), new_elements);
-}
-
-void AwaitTransformer::VisitStringInterpolateNode(StringInterpolateNode* node) {
-  ArrayNode* new_value = Transform(node->value())->AsArrayNode();
-  result_ =
-      MakeName(new (Z) StringInterpolateNode(node->token_pos(), new_value));
-}
-
-void AwaitTransformer::VisitClosureNode(ClosureNode* node) {
-  AstNode* new_receiver = node->receiver();
-  if (new_receiver != NULL) {
-    new_receiver = Transform(new_receiver);
-  }
-  result_ = MakeName(new (Z) ClosureNode(node->token_pos(), node->function(),
-                                         new_receiver, node->scope()));
-}
-
-void AwaitTransformer::VisitInstanceCallNode(InstanceCallNode* node) {
-  AstNode* new_receiver = Transform(node->receiver());
-  ArgumentListNode* new_args =
-      Transform(node->arguments())->AsArgumentListNode();
-  result_ = MakeName(new (Z) InstanceCallNode(node->token_pos(), new_receiver,
-                                              node->function_name(), new_args,
-                                              node->is_conditional()));
-}
-
-void AwaitTransformer::VisitStaticCallNode(StaticCallNode* node) {
-  ArgumentListNode* new_args =
-      Transform(node->arguments())->AsArgumentListNode();
-  result_ = MakeName(new (Z) StaticCallNode(node->token_pos(), node->function(),
-                                            new_args, node->rebind_rule()));
-}
-
-void AwaitTransformer::VisitConstructorCallNode(ConstructorCallNode* node) {
-  ArgumentListNode* new_args =
-      Transform(node->arguments())->AsArgumentListNode();
-  result_ = MakeName(
-      new (Z) ConstructorCallNode(node->token_pos(), node->type_arguments(),
-                                  node->constructor(), new_args));
-}
-
-void AwaitTransformer::VisitInstanceGetterNode(InstanceGetterNode* node) {
-  AstNode* new_receiver = Transform(node->receiver());
-  result_ = MakeName(new (Z) InstanceGetterNode(node->token_pos(), new_receiver,
-                                                node->field_name(),
-                                                node->is_conditional()));
-}
-
-void AwaitTransformer::VisitInstanceSetterNode(InstanceSetterNode* node) {
-  AstNode* new_receiver = node->receiver();
-  if (new_receiver != NULL) {
-    new_receiver = Transform(new_receiver);
-  }
-  AstNode* new_value = Transform(node->value());
-  result_ = MakeName(new (Z) InstanceSetterNode(node->token_pos(), new_receiver,
-                                                node->field_name(), new_value,
-                                                node->is_conditional()));
-}
-
-void AwaitTransformer::VisitStaticGetterNode(StaticGetterNode* node) {
-  AstNode* new_receiver = node->receiver();
-  if (new_receiver != NULL) {
-    new_receiver = Transform(new_receiver);
-  }
-  StaticGetterNode* new_getter =
-      new (Z) StaticGetterNode(node->token_pos(), new_receiver, node->cls(),
-                               node->field_name(), node->rebind_rule());
-  new_getter->set_owner(node->owner());
-  result_ = MakeName(new_getter);
-}
-
-void AwaitTransformer::VisitStaticSetterNode(StaticSetterNode* node) {
-  AstNode* new_receiver = node->receiver();
-  if (new_receiver != NULL) {
-    new_receiver = Transform(new_receiver);
-  }
-  AstNode* new_value = Transform(node->value());
-  StaticSetterNode* new_setter =
-      node->function().IsNull()
-          ? new (Z) StaticSetterNode(node->token_pos(), new_receiver,
-                                     node->cls(), node->field_name(), new_value,
-                                     node->rebind_rule())
-          : new (Z) StaticSetterNode(node->token_pos(), new_receiver,
-                                     node->field_name(), node->function(),
-                                     new_value, node->rebind_rule());
-
-  result_ = MakeName(new_setter);
-}
-
-void AwaitTransformer::VisitLoadLocalNode(LoadLocalNode* node) {
-  result_ = MakeName(node);
-}
-
-void AwaitTransformer::VisitStoreLocalNode(StoreLocalNode* node) {
-  AstNode* new_value = Transform(node->value());
-  result_ = MakeName(
-      new (Z) StoreLocalNode(node->token_pos(), &node->local(), new_value));
-}
-
-void AwaitTransformer::VisitLoadStaticFieldNode(LoadStaticFieldNode* node) {
-  result_ = MakeName(node);
-}
-
-void AwaitTransformer::VisitStoreStaticFieldNode(StoreStaticFieldNode* node) {
-  AstNode* new_value = Transform(node->value());
-  result_ = MakeName(new (Z) StoreStaticFieldNode(
-      node->token_pos(), Field::ZoneHandle(Z, node->field().Original()),
-      new_value));
-}
-
-void AwaitTransformer::VisitLoadIndexedNode(LoadIndexedNode* node) {
-  AstNode* new_array = Transform(node->array());
-  AstNode* new_index = Transform(node->index_expr());
-  result_ = MakeName(new (Z) LoadIndexedNode(node->token_pos(), new_array,
-                                             new_index, node->super_class()));
-}
-
-void AwaitTransformer::VisitStoreIndexedNode(StoreIndexedNode* node) {
-  AstNode* new_array = Transform(node->array());
-  AstNode* new_index = Transform(node->index_expr());
-  AstNode* new_value = Transform(node->value());
-  result_ = MakeName(new (Z) StoreIndexedNode(
-      node->token_pos(), new_array, new_index, new_value, node->super_class()));
-}
-
-void AwaitTransformer::VisitAssignableNode(AssignableNode* node) {
-  AstNode* new_expr = Transform(node->expr());
-  result_ = MakeName(new (Z) AssignableNode(node->token_pos(), new_expr,
-                                            node->type(), node->dst_name()));
-}
-
-void AwaitTransformer::VisitLetNode(LetNode* node) {
-  // Add all the initializer nodes to the preamble and the
-  // temporary variables to the scope for async temporary variables.
-  // The temporary variables will be captured as a side effect of being
-  // added to a scope, and the subsequent nodes that are added to the
-  // preample can access them.
-  for (intptr_t i = 0; i < node->num_temps(); i++) {
-    async_temp_scope_->AddVariable(node->TempAt(i));
-    AstNode* new_init_val = Transform(node->InitializerAt(i));
-    preamble_->Add(new (Z) StoreLocalNode(node->token_pos(), node->TempAt(i),
-                                          new_init_val));
-  }
-
-  // Add all expressions but the last to the preamble. We must do
-  // this because subexpressions of the awaitable expression we
-  // are currently transforming may depend on each other,
-  // e.g. await foo(a++, a++). Thus we must preserve the order of the
-  // transformed subexpressions.
-  for (intptr_t i = 0; i < node->nodes().length() - 1; i++) {
-    preamble_->Add(Transform(node->nodes()[i]));
-  }
-
-  // The last expression in the let node is the value of the node.
-  // The result of the transformed let node is this expression.
-  ASSERT(node->nodes().length() > 0);
-  const intptr_t last_node_index = node->nodes().length() - 1;
-  result_ = Transform(node->nodes()[last_node_index]);
-}
-
-void AwaitTransformer::VisitThrowNode(ThrowNode* node) {
-  AstNode* new_exception = Transform(node->exception());
-  result_ = MakeName(
-      new (Z) ThrowNode(node->token_pos(), new_exception, node->stacktrace()));
-}
-
-}  // namespace dart
-
-#endif  // !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/vm/ast_transformer.h b/runtime/vm/ast_transformer.h
deleted file mode 100644
index 917919f..0000000
--- a/runtime/vm/ast_transformer.h
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2014, 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.
-
-#ifndef RUNTIME_VM_AST_TRANSFORMER_H_
-#define RUNTIME_VM_AST_TRANSFORMER_H_
-
-#include "platform/assert.h"
-#include "vm/ast.h"
-
-namespace dart {
-
-class Thread;
-
-// Translate an AstNode containing an expression (that itself contains one or
-// more awaits) into a sequential representation where subexpressions are
-// evaluated sequentially into intermediates. Those intermediates are stored
-// within a context.
-//
-// This allows a function to be suspended and resumed from within evaluating an
-// expression. The evaluation is split among a so-called preamble and the
-// evaluation of the resulting expression (which is only a single load).
-//
-// Example (minimalistic):
-//
-//   var a = (await bar()) + foo();
-//
-// This translates to a premable similar to:
-//
-//   var t_1, t_2, t_3, t_4; // All stored in a context.
-//   t_1 = bar();
-//   :result_param = t_1;
-//   <continuation logic>
-//   t_2 = :result_param;
-//   t_3 = foo();
-//   t_4 = t_2.operator+(t_3);
-//
-// and a resulting expression of a load of t_4.
-//
-class AwaitTransformer : public AstNodeVisitor {
- public:
-  AwaitTransformer(SequenceNode* preamble, LocalScope* async_temp_scope);
-
-#define DECLARE_VISIT(BaseName)                                                \
-  virtual void Visit##BaseName##Node(BaseName##Node* node);
-
-  FOR_EACH_NODE(DECLARE_VISIT)
-#undef DECLARE_VISIT
-
-  AstNode* Transform(AstNode* expr);
-
- private:
-  LocalVariable* EnsureCurrentTempVar();
-  LocalVariable* AddNewTempVarToPreamble(AstNode* node,
-                                         TokenPosition token_pos);
-  LoadLocalNode* MakeName(AstNode* node);
-  ArgumentListNode* TransformArguments(ArgumentListNode* node);
-  AstNode* LazyTransform(const Token::Kind kind,
-                         AstNode* new_left,
-                         AstNode* right);
-  LocalScope* ChainNewScope(LocalScope* parent);
-  LocalVariable* GetVariableInScope(LocalScope* scope, const String& symbol);
-
-  void NextTempVar() { temp_cnt_++; }
-
-  Thread* thread() const { return thread_; }
-
-  SequenceNode* preamble_;
-  int32_t temp_cnt_;
-  AstNode* result_;
-  LocalScope* async_temp_scope_;
-
-  Thread* thread_;
-
-  DISALLOW_COPY_AND_ASSIGN(AwaitTransformer);
-};
-
-}  // namespace dart
-
-#endif  // RUNTIME_VM_AST_TRANSFORMER_H_
diff --git a/runtime/vm/benchmark_test.cc b/runtime/vm/benchmark_test.cc
index 8a06fff..c2f3f55 100644
--- a/runtime/vm/benchmark_test.cc
+++ b/runtime/vm/benchmark_test.cc
@@ -14,9 +14,9 @@
 #include "platform/globals.h"
 
 #include "vm/clustered_snapshot.h"
-#include "vm/compiler_stats.h"
 #include "vm/dart_api_impl.h"
 #include "vm/stack_frame.h"
+#include "vm/timer.h"
 
 using dart::bin::File;
 
@@ -101,7 +101,8 @@
   TransitionNativeToVM transition(thread);
   Timer timer(true, "Compile all of Core lib benchmark");
   timer.Start();
-  const Error& error = Error::Handle(Library::CompileAll());
+  const Error& error =
+      Error::Handle(Library::CompileAll(/*ignore_error=*/true));
   if (!error.IsNull()) {
     OS::PrintErr("Unexpected error in CorelibCompileAll benchmark:\n%s",
                  error.ToErrorCString());
@@ -111,72 +112,6 @@
   benchmark->set_score(elapsed_time);
 }
 
-#ifndef PRODUCT
-
-BENCHMARK(CorelibCompilerStats) {
-  bin::Builtin::SetNativeResolver(bin::Builtin::kBuiltinLibrary);
-  bin::Builtin::SetNativeResolver(bin::Builtin::kIOLibrary);
-  bin::Builtin::SetNativeResolver(bin::Builtin::kCLILibrary);
-  TransitionNativeToVM transition(thread);
-  CompilerStats* stats = thread->isolate()->aggregate_compiler_stats();
-  ASSERT(stats != NULL);
-  stats->EnableBenchmark();
-  Timer timer(true, "Compiler stats compiling all of Core lib");
-  timer.Start();
-  const Error& error = Error::Handle(Library::CompileAll());
-  if (!error.IsNull()) {
-    OS::PrintErr("Unexpected error in CorelibCompileAll benchmark:\n%s",
-                 error.ToErrorCString());
-  }
-  timer.Stop();
-  int64_t elapsed_time = timer.TotalElapsedTime();
-  benchmark->set_score(elapsed_time);
-}
-
-BENCHMARK(Dart2JSCompilerStats) {
-  bin::Builtin::SetNativeResolver(bin::Builtin::kBuiltinLibrary);
-  bin::Builtin::SetNativeResolver(bin::Builtin::kIOLibrary);
-  bin::Builtin::SetNativeResolver(bin::Builtin::kCLILibrary);
-  SetupDart2JSPackagePath();
-  char* dart_root = ComputeDart2JSPath(Benchmark::Executable());
-  char* script = NULL;
-  if (dart_root != NULL) {
-    HANDLESCOPE(thread);
-    script = OS::SCreate(NULL, "import '%s/pkg/compiler/lib/compiler.dart';",
-                         dart_root);
-    Dart_Handle lib = TestCase::LoadTestScript(
-        script, reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver));
-    EXPECT_VALID(lib);
-  } else {
-    Dart_Handle lib = TestCase::LoadTestScript(
-        "import 'pkg/compiler/lib/compiler.dart';",
-        reinterpret_cast<Dart_NativeEntryResolver>(NativeResolver));
-    EXPECT_VALID(lib);
-  }
-  CompilerStats* stats = thread->isolate()->aggregate_compiler_stats();
-  ASSERT(stats != NULL);
-  stats->EnableBenchmark();
-  Timer timer(true, "Compile all of dart2js benchmark");
-  timer.Start();
-#if !defined(PRODUCT)
-  // Constant in product mode.
-  const bool old_flag = FLAG_background_compilation;
-  FLAG_background_compilation = false;
-#endif
-  Dart_Handle result = Dart_CompileAll();
-#if !defined(PRODUCT)
-  FLAG_background_compilation = old_flag;
-#endif
-  EXPECT_VALID(result);
-  timer.Stop();
-  int64_t elapsed_time = timer.TotalElapsedTime();
-  benchmark->set_score(elapsed_time);
-  free(dart_root);
-  free(script);
-}
-
-#endif  // !PRODUCT
-
 // This file is created by the target //runtime/bin:gen_kernel_bytecode_dill
 // which is depended on by run_vm_tests.
 static char* ComputeGenKernelKernelPath(const char* arg) {
@@ -203,36 +138,10 @@
   return strdup(buffer);
 }
 
-BENCHMARK(GenKernelKernelLoadKernel) {
-  char* dill_path = ComputeGenKernelKernelPath(Benchmark::Executable());
-  File* file = File::Open(NULL, dill_path, File::kRead);
-  EXPECT(file != NULL);
-  bin::RefCntReleaseScope<File> rs(file);
-  intptr_t kernel_buffer_size = file->Length();
-  uint8_t* kernel_buffer =
-      reinterpret_cast<uint8_t*>(malloc(kernel_buffer_size));
-  EXPECT(kernel_buffer != NULL);
-  bool read_fully = file->ReadFully(kernel_buffer, kernel_buffer_size);
-  EXPECT(read_fully);
-
-  Timer timer(true, "GenKernelKernelLoadKernel benchmark");
-  timer.Start();
-
-  Dart_Handle result =
-      Dart_LoadLibraryFromKernel(kernel_buffer, kernel_buffer_size);
-  EXPECT_VALID(result);
-
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  timer.Stop();
-  int64_t elapsed_time = timer.TotalElapsedTime();
-  benchmark->set_score(elapsed_time);
-  free(dill_path);
-  free(kernel_buffer);
-}
-
-BENCHMARK(GenKernelKernelReadAllBytecode) {
+static int64_t GenKernelKernelBenchmark(const char* name,
+                                        bool benchmark_load,
+                                        bool benchmark_read_bytecode) {
+  EXPECT(benchmark_load || benchmark_read_bytecode);
   bin::Builtin::SetNativeResolver(bin::Builtin::kBuiltinLibrary);
   bin::Builtin::SetNativeResolver(bin::Builtin::kIOLibrary);
   bin::Builtin::SetNativeResolver(bin::Builtin::kCLILibrary);
@@ -250,6 +159,11 @@
   bool enable_interpreter_orig = FLAG_enable_interpreter;
   FLAG_enable_interpreter = true;
 
+  Timer timer(true, name);
+  if (benchmark_load) {
+    timer.Start();
+  }
+
   Dart_Handle result =
       Dart_LoadLibraryFromKernel(kernel_buffer, kernel_buffer_size);
   EXPECT_VALID(result);
@@ -257,18 +171,49 @@
   result = Dart_FinalizeLoading(false);
   EXPECT_VALID(result);
 
-  Timer timer(true, "GenKernelKernelLoadKernel benchmark");
-  timer.Start();
+  if (benchmark_read_bytecode && !benchmark_load) {
+    timer.Start();
+  }
 
-  result = Dart_ReadAllBytecode();
-  EXPECT_VALID(result);
+  if (benchmark_read_bytecode) {
+    result = Dart_ReadAllBytecode();
+    EXPECT_VALID(result);
+  }
 
   timer.Stop();
   int64_t elapsed_time = timer.TotalElapsedTime();
-  benchmark->set_score(elapsed_time);
   FLAG_enable_interpreter = enable_interpreter_orig;
   free(dill_path);
   free(kernel_buffer);
+  return elapsed_time;
+}
+
+BENCHMARK(GenKernelKernelLoadKernel) {
+  benchmark->set_score(
+      GenKernelKernelBenchmark("GenKernelKernelLoadKernel benchmark",
+                               /* benchmark_load */ true,
+                               /* benchmark_read_bytecode */ false));
+}
+
+BENCHMARK(GenKernelKernelReadAllBytecode) {
+  benchmark->set_score(
+      GenKernelKernelBenchmark("GenKernelKernelReadAllBytecode benchmark",
+                               /* benchmark_load */ false,
+                               /* benchmark_read_bytecode */ true));
+}
+
+BENCHMARK(GenKernelKernelCombined) {
+  benchmark->set_score(
+      GenKernelKernelBenchmark("GenKernelKernelCombined benchmark",
+                               /* benchmark_load */ true,
+                               /* benchmark_read_bytecode */ true));
+}
+
+BENCHMARK(GenKernelKernelMaxRSS) {
+  GenKernelKernelBenchmark("GenKernelKernelMaxRSS benchmark",
+                           /* benchmark_load */ false,
+                           /* benchmark_read_bytecode */ true);
+  benchmark->set_score(bin::Process::MaxRSS());
 }
 
 //
diff --git a/runtime/vm/bootstrap_natives.h b/runtime/vm/bootstrap_natives.h
index 616abe6..929dc6c 100644
--- a/runtime/vm/bootstrap_natives.h
+++ b/runtime/vm/bootstrap_natives.h
@@ -23,7 +23,6 @@
   V(Object_haveSameRuntimeType, 2)                                             \
   V(Object_instanceOf, 4)                                                      \
   V(Object_simpleInstanceOf, 2)                                                \
-  V(Object_as, 4)                                                              \
   V(Function_apply, 2)                                                         \
   V(Closure_equals, 2)                                                         \
   V(Closure_computeHash, 1)                                                    \
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index d85cb3c..04fb131 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -2473,13 +2473,10 @@
   }
 }
 
-volatile int ctr = 0;
-
 void ClassFinalizer::FinalizeClass(const Class& cls) {
   Thread* thread = Thread::Current();
   HANDLESCOPE(thread);
   ASSERT(cls.is_type_finalized());
-  if (strstr(cls.ToCString(), "AssertionError")) ++ctr;
   if (cls.is_finalized()) {
     return;
   }
@@ -2520,7 +2517,6 @@
     ApplyMixinMembers(cls);
   }
   // Mark as parsed and finalized.
-  if (strstr(cls.ToCString(), "AssertionError")) ++ctr;
   cls.Finalize();
   // Mixin app alias classes may still lack their forwarding constructor.
   if (cls.is_mixin_app_alias() &&
@@ -3607,6 +3603,45 @@
 #endif
 }
 
+// Clears the cached canonicalized hash codes for all instances which directly
+// (or indirectly) depend on class ids.
+//
+// In the Dart VM heap the following instances directly use cids for the
+// computation of canonical hash codes:
+//
+//    * RawType (due to RawType::type_class_id_)
+//    * RawTypeParameter (due to RawTypeParameter::parameterized_class_id_)
+//
+// The following instances use cids for the computation of canonical hash codes
+// indirectly:
+//
+//    * RawTypeRef (due to RawTypeRef::type_->type_class_id)
+//    * RawType (due to RawType::signature_'s result/parameter types)
+//    * RawBoundedType (due to RawBoundedType::type_parameter_)
+//    * RawTypeArguments (due to type references)
+//    * RawInstance (due to instance fields)
+//    * RawArray (due to type arguments & array entries)
+//
+// Caching of the canonical hash codes happens for:
+//
+//    * RawType::hash_
+//    * RawTypeParameter::hash_
+//    * RawBoundedType::hash_
+//    * RawTypeArguments::hash_
+//
+// No caching of canonical hash codes (i.e. it gets re-computed every time)
+// happens for:
+//
+//    * RawTypeRef (computed via RawTypeRef::type_->type_class_id)
+//    * RawInstance (computed via size & fields)
+//    * RawArray (computed via type arguments & array entries)
+//
+// Usages of canonical hash codes are:
+//
+//   * ObjectStore::canonical_types()
+//   * ObjectStore::canonical_type_arguments()
+//   * Class::constants()
+//
 class ClearTypeHashVisitor : public ObjectVisitor {
  public:
   explicit ClearTypeHashVisitor(Zone* zone)
@@ -3692,6 +3727,10 @@
     typeargs_table.Release();
   }
 
+  // The canonical constant tables use canonical hashcodes which can change
+  // due to cid-renumbering.
+  I->RehashConstants();
+
   dict_size = Utils::RoundUpToPowerOfTwo(typeargs.Length() * 4 / 3);
   typeargs_array =
       HashTables::New<CanonicalTypeArgumentsSet>(dict_size, Heap::kOld);
@@ -3715,7 +3754,11 @@
   ProgramVisitor::VisitFunctions(&function_visitor);
 
   class ClearCodeClassVisitor : public ClassVisitor {
-    void Visit(const Class& cls) { cls.DisableAllocationStub(); }
+    void Visit(const Class& cls) {
+      if (cls.id() >= kNumPredefinedCids) {
+        cls.DisableAllocationStub();
+      }
+    }
   };
   ClearCodeClassVisitor class_visitor;
   ProgramVisitor::VisitClasses(&class_visitor);
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 2d39211..69082af 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -710,8 +710,13 @@
           func.SetInstructions(code);  // Set entrypoint.
           func.SetWasCompiled(true);
 #if !defined(DART_PRECOMPILED_RUNTIME)
-        } else if (func.HasBytecode() && !code.IsDisabled()) {
-          func.SetInstructions(code);  // Set entrypoint.
+        } else if (FLAG_enable_interpreter && func.HasBytecode()) {
+          // Set the code entry_point to InterpretCall stub.
+          func.SetInstructions(
+              Code::Handle(StubCode::InterpretCall_entry()->code()));
+        } else if (FLAG_use_bytecode_compiler && func.HasBytecode()) {
+          func.SetInstructions(
+              Code::Handle(StubCode::LazyCompile_entry()->code()));
 #endif                                 // !defined(DART_PRECOMPILED_RUNTIME)
         } else {
           func.ClearCode();  // Set code and entrypoint to lazy compile stub.
@@ -1151,160 +1156,6 @@
 };
 
 #if !defined(DART_PRECOMPILED_RUNTIME)
-class LiteralTokenSerializationCluster : public SerializationCluster {
- public:
-  LiteralTokenSerializationCluster() : SerializationCluster("LiteralToken") {}
-  virtual ~LiteralTokenSerializationCluster() {}
-
-  void Trace(Serializer* s, RawObject* object) {
-    RawLiteralToken* token = LiteralToken::RawCast(object);
-    objects_.Add(token);
-
-    RawObject** from = token->from();
-    RawObject** to = token->to();
-    for (RawObject** p = from; p <= to; p++) {
-      s->Push(*p);
-    }
-  }
-
-  void WriteAlloc(Serializer* s) {
-    s->WriteCid(kLiteralTokenCid);
-    intptr_t count = objects_.length();
-    s->WriteUnsigned(count);
-    for (intptr_t i = 0; i < count; i++) {
-      RawLiteralToken* token = objects_[i];
-      s->AssignRef(token);
-    }
-  }
-
-  void WriteFill(Serializer* s) {
-    intptr_t count = objects_.length();
-    for (intptr_t i = 0; i < count; i++) {
-      RawLiteralToken* token = objects_[i];
-      RawObject** from = token->from();
-      RawObject** to = token->to();
-      for (RawObject** p = from; p <= to; p++) {
-        s->WriteRef(*p);
-      }
-      s->Write<int32_t>(token->ptr()->kind_);
-    }
-  }
-
- private:
-  GrowableArray<RawLiteralToken*> objects_;
-};
-#endif  // !DART_PRECOMPILED_RUNTIME
-
-class LiteralTokenDeserializationCluster : public DeserializationCluster {
- public:
-  LiteralTokenDeserializationCluster() {}
-  virtual ~LiteralTokenDeserializationCluster() {}
-
-  void ReadAlloc(Deserializer* d) {
-    start_index_ = d->next_index();
-    PageSpace* old_space = d->heap()->old_space();
-    intptr_t count = d->ReadUnsigned();
-    for (intptr_t i = 0; i < count; i++) {
-      d->AssignRef(
-          AllocateUninitialized(old_space, LiteralToken::InstanceSize()));
-    }
-    stop_index_ = d->next_index();
-  }
-
-  void ReadFill(Deserializer* d) {
-    bool is_vm_object = d->isolate() == Dart::vm_isolate();
-
-    for (intptr_t id = start_index_; id < stop_index_; id++) {
-      RawLiteralToken* token = reinterpret_cast<RawLiteralToken*>(d->Ref(id));
-      Deserializer::InitializeHeader(
-          token, kLiteralTokenCid, LiteralToken::InstanceSize(), is_vm_object);
-      RawObject** from = token->from();
-      RawObject** to = token->to();
-      for (RawObject** p = from; p <= to; p++) {
-        *p = d->ReadRef();
-      }
-      token->ptr()->kind_ = static_cast<Token::Kind>(d->Read<int32_t>());
-    }
-  }
-};
-
-#if !defined(DART_PRECOMPILED_RUNTIME)
-class TokenStreamSerializationCluster : public SerializationCluster {
- public:
-  TokenStreamSerializationCluster() : SerializationCluster("TokenStream") {}
-  virtual ~TokenStreamSerializationCluster() {}
-
-  void Trace(Serializer* s, RawObject* object) {
-    RawTokenStream* stream = TokenStream::RawCast(object);
-    objects_.Add(stream);
-
-    RawObject** from = stream->from();
-    RawObject** to = stream->to();
-    for (RawObject** p = from; p <= to; p++) {
-      s->Push(*p);
-    }
-  }
-
-  void WriteAlloc(Serializer* s) {
-    s->WriteCid(kTokenStreamCid);
-    intptr_t count = objects_.length();
-    s->WriteUnsigned(count);
-    for (intptr_t i = 0; i < count; i++) {
-      RawTokenStream* stream = objects_[i];
-      s->AssignRef(stream);
-    }
-  }
-
-  void WriteFill(Serializer* s) {
-    intptr_t count = objects_.length();
-    for (intptr_t i = 0; i < count; i++) {
-      RawTokenStream* stream = objects_[i];
-      RawObject** from = stream->from();
-      RawObject** to = stream->to();
-      for (RawObject** p = from; p <= to; p++) {
-        s->WriteRef(*p);
-      }
-    }
-  }
-
- private:
-  GrowableArray<RawTokenStream*> objects_;
-};
-#endif  // !DART_PRECOMPILED_RUNTIME
-
-class TokenStreamDeserializationCluster : public DeserializationCluster {
- public:
-  TokenStreamDeserializationCluster() {}
-  virtual ~TokenStreamDeserializationCluster() {}
-
-  void ReadAlloc(Deserializer* d) {
-    start_index_ = d->next_index();
-    PageSpace* old_space = d->heap()->old_space();
-    intptr_t count = d->ReadUnsigned();
-    for (intptr_t i = 0; i < count; i++) {
-      d->AssignRef(
-          AllocateUninitialized(old_space, TokenStream::InstanceSize()));
-    }
-    stop_index_ = d->next_index();
-  }
-
-  void ReadFill(Deserializer* d) {
-    bool is_vm_object = d->isolate() == Dart::vm_isolate();
-
-    for (intptr_t id = start_index_; id < stop_index_; id++) {
-      RawTokenStream* stream = reinterpret_cast<RawTokenStream*>(d->Ref(id));
-      Deserializer::InitializeHeader(stream, kTokenStreamCid,
-                                     TokenStream::InstanceSize(), is_vm_object);
-      RawObject** from = stream->from();
-      RawObject** to = stream->to();
-      for (RawObject** p = from; p <= to; p++) {
-        *p = d->ReadRef();
-      }
-    }
-  }
-};
-
-#if !defined(DART_PRECOMPILED_RUNTIME)
 class ScriptSerializationCluster : public SerializationCluster {
  public:
   ScriptSerializationCluster() : SerializationCluster("Script") {}
@@ -1658,6 +1509,18 @@
       }
     }
   }
+
+  void PostLoad(const Array& refs, Snapshot::Kind kind, Zone* zone) {
+    Array& array_ = Array::Handle(zone);
+    KernelProgramInfo& info_ = KernelProgramInfo::Handle(zone);
+    for (intptr_t id = start_index_; id < stop_index_; id++) {
+      info_ ^= refs.At(id);
+      array_ = HashTables::New<UnorderedHashMap<SmiTraits>>(16, Heap::kOld);
+      info_.set_libraries_cache(array_);
+      array_ = HashTables::New<UnorderedHashMap<SmiTraits>>(16, Heap::kOld);
+      info_.set_classes_cache(array_);
+    }
+  }
 };
 
 class CodeSerializationCluster : public SerializationCluster {
@@ -4710,10 +4573,6 @@
       return new (Z) RedirectionDataSerializationCluster();
     case kFieldCid:
       return new (Z) FieldSerializationCluster();
-    case kLiteralTokenCid:
-      return new (Z) LiteralTokenSerializationCluster();
-    case kTokenStreamCid:
-      return new (Z) TokenStreamSerializationCluster();
     case kScriptCid:
       return new (Z) ScriptSerializationCluster();
     case kLibraryCid:
@@ -5235,10 +5094,6 @@
       return new (Z) RedirectionDataDeserializationCluster();
     case kFieldCid:
       return new (Z) FieldDeserializationCluster();
-    case kLiteralTokenCid:
-      return new (Z) LiteralTokenDeserializationCluster();
-    case kTokenStreamCid:
-      return new (Z) TokenStreamDeserializationCluster();
     case kScriptCid:
       return new (Z) ScriptDeserializationCluster();
     case kLibraryCid:
@@ -5666,8 +5521,6 @@
       AddSeed(kernel_program_info_.metadata_payloads());
       AddSeed(kernel_program_info_.metadata_mappings());
       AddSeed(kernel_program_info_.constants());
-    } else {
-      AddSeed(script_.tokens());
     }
   }
 
diff --git a/runtime/vm/code_descriptors.h b/runtime/vm/code_descriptors.h
index dfec824..45c7435 100644
--- a/runtime/vm/code_descriptors.h
+++ b/runtime/vm/code_descriptors.h
@@ -5,7 +5,6 @@
 #ifndef RUNTIME_VM_CODE_DESCRIPTORS_H_
 #define RUNTIME_VM_CODE_DESCRIPTORS_H_
 
-#include "vm/ast.h"
 #include "vm/datastream.h"
 #include "vm/globals.h"
 #include "vm/growable_array.h"
@@ -15,6 +14,8 @@
 
 namespace dart {
 
+static const intptr_t kInvalidTryIndex = -1;
+
 class DescriptorList : public ZoneAllocated {
  public:
   explicit DescriptorList(intptr_t initial_capacity)
@@ -118,7 +119,7 @@
   // Called by rethrows, to mark their enclosing handlers.
   void SetNeedsStackTrace(intptr_t try_index) {
     // Rethrows can be generated outside a try by the compiler.
-    if (try_index == CatchClauseNode::kInvalidTryIndex) {
+    if (try_index == kInvalidTryIndex) {
       return;
     }
     ASSERT(try_index >= 0);
diff --git a/runtime/vm/code_descriptors_test.cc b/runtime/vm/code_descriptors_test.cc
index 457111b..5d712ed 100644
--- a/runtime/vm/code_descriptors_test.cc
+++ b/runtime/vm/code_descriptors_test.cc
@@ -5,7 +5,6 @@
 #include "platform/assert.h"
 #include "vm/globals.h"
 
-#include "vm/ast.h"
 #include "vm/code_descriptors.h"
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/compiler/jit/compiler.h"
@@ -18,153 +17,6 @@
 
 namespace dart {
 
-static const TokenPosition kPos = TokenPosition::kNoSource;
-
-CODEGEN_TEST_GENERATE(StackMapCodegen, test) {
-  ParsedFunction* parsed_function =
-      new ParsedFunction(Thread::Current(), test->function());
-  LiteralNode* l = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(1)));
-  test->node_sequence()->Add(new ReturnNode(kPos, l));
-  l = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(2)));
-  test->node_sequence()->Add(new ReturnNode(kPos, l));
-  l = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3)));
-  test->node_sequence()->Add(new ReturnNode(kPos, l));
-  parsed_function->SetNodeSequence(test->node_sequence());
-  parsed_function->EnsureExpressionTemp();
-  test->node_sequence()->scope()->AddVariable(
-      parsed_function->expression_temp_var());
-  test->node_sequence()->scope()->AddVariable(
-      parsed_function->current_context_var());
-  parsed_function->AllocateVariables();
-  bool retval;
-  Isolate* isolate = Isolate::Current();
-  EXPECT(isolate != NULL);
-  LongJumpScope jump;
-  if (setjmp(*jump.Set()) == 0) {
-    // Build a stackmap table and some stackmap table entries.
-    const intptr_t kStackSlotCount = 11;
-    StackMapTableBuilder* stackmap_table_builder = new StackMapTableBuilder();
-    EXPECT(stackmap_table_builder != NULL);
-
-    BitmapBuilder* stack_bitmap = new BitmapBuilder();
-    EXPECT(stack_bitmap != NULL);
-    EXPECT_EQ(0, stack_bitmap->Length());
-    stack_bitmap->Set(0, true);
-    EXPECT_EQ(1, stack_bitmap->Length());
-    stack_bitmap->SetLength(kStackSlotCount);
-    EXPECT_EQ(kStackSlotCount, stack_bitmap->Length());
-
-    bool expectation0[kStackSlotCount] = {true};
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation0[i], stack_bitmap->Get(i));
-    }
-    // Add a stack map entry at pc offset 0.
-    stackmap_table_builder->AddEntry(0, stack_bitmap, 0);
-
-    stack_bitmap = new BitmapBuilder();
-    EXPECT(stack_bitmap != NULL);
-    EXPECT_EQ(0, stack_bitmap->Length());
-    stack_bitmap->Set(0, true);
-    stack_bitmap->Set(1, false);
-    stack_bitmap->Set(2, true);
-    EXPECT_EQ(3, stack_bitmap->Length());
-    stack_bitmap->SetLength(kStackSlotCount);
-    EXPECT_EQ(kStackSlotCount, stack_bitmap->Length());
-
-    bool expectation1[kStackSlotCount] = {true, false, true};
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation1[i], stack_bitmap->Get(i));
-    }
-    // Add a stack map entry at pc offset 1.
-    stackmap_table_builder->AddEntry(1, stack_bitmap, 0);
-
-    stack_bitmap = new BitmapBuilder();
-    EXPECT(stack_bitmap != NULL);
-    EXPECT_EQ(0, stack_bitmap->Length());
-    stack_bitmap->Set(0, true);
-    stack_bitmap->Set(1, false);
-    stack_bitmap->Set(2, true);
-    stack_bitmap->SetRange(3, 5, true);
-    EXPECT_EQ(6, stack_bitmap->Length());
-    stack_bitmap->SetLength(kStackSlotCount);
-    EXPECT_EQ(kStackSlotCount, stack_bitmap->Length());
-
-    bool expectation2[kStackSlotCount] = {true, false, true, true, true, true};
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation2[i], stack_bitmap->Get(i));
-    }
-    // Add a stack map entry at pc offset 2.
-    stackmap_table_builder->AddEntry(2, stack_bitmap, 0);
-
-    stack_bitmap = new BitmapBuilder();
-    EXPECT(stack_bitmap != NULL);
-    EXPECT_EQ(0, stack_bitmap->Length());
-    stack_bitmap->Set(0, true);
-    stack_bitmap->Set(1, false);
-    stack_bitmap->Set(2, true);
-    stack_bitmap->SetRange(3, 5, true);
-    stack_bitmap->SetRange(6, 9, false);
-    stack_bitmap->Set(10, true);
-    EXPECT_EQ(11, stack_bitmap->Length());
-    stack_bitmap->SetLength(kStackSlotCount);
-    EXPECT_EQ(kStackSlotCount, stack_bitmap->Length());
-
-    bool expectation3[kStackSlotCount] = {
-        true, false, true, true, true, true, false, false, false, false, true};
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation3[i], stack_bitmap->Get(i));
-    }
-    // Add a stack map entry at pc offset 3.
-    stackmap_table_builder->AddEntry(3, stack_bitmap, 0);
-
-    const Error& error =
-        Error::Handle(Compiler::CompileParsedFunction(parsed_function));
-    EXPECT(error.IsNull());
-    const Code& code = Code::Handle(test->function().CurrentCode());
-
-    const Array& stack_maps =
-        Array::Handle(stackmap_table_builder->FinalizeStackMaps(code));
-    code.set_stackmaps(stack_maps);
-    const Array& stack_map_list = Array::Handle(code.stackmaps());
-    EXPECT(!stack_map_list.IsNull());
-    StackMap& stack_map = StackMap::Handle();
-    EXPECT_EQ(4, stack_map_list.Length());
-
-    // Validate the first stack map entry.
-    stack_map ^= stack_map_list.At(0);
-    EXPECT_EQ(kStackSlotCount, stack_map.Length());
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation0[i], stack_map.IsObject(i));
-    }
-
-    // Validate the second stack map entry.
-    stack_map ^= stack_map_list.At(1);
-    EXPECT_EQ(kStackSlotCount, stack_map.Length());
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation1[i], stack_map.IsObject(i));
-    }
-
-    // Validate the third stack map entry.
-    stack_map ^= stack_map_list.At(2);
-    EXPECT_EQ(kStackSlotCount, stack_map.Length());
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation2[i], stack_map.IsObject(i));
-    }
-
-    // Validate the fourth stack map entry.
-    stack_map ^= stack_map_list.At(3);
-    EXPECT_EQ(kStackSlotCount, stack_map.Length());
-    for (intptr_t i = 0; i < kStackSlotCount; ++i) {
-      EXPECT_EQ(expectation3[i], stack_map.IsObject(i));
-    }
-    retval = true;
-  } else {
-    retval = false;
-  }
-  EXPECT(retval);
-}
-CODEGEN_TEST_RUN(StackMapCodegen, Smi::New(1))
-
 static void NativeFunc(Dart_NativeArguments args) {
   Dart_Handle i = Dart_GetNativeArgument(args, 0);
   Dart_Handle k = Dart_GetNativeArgument(args, 1);
diff --git a/runtime/vm/code_patcher.cc b/runtime/vm/code_patcher.cc
index dfe3393..f0ec1db 100644
--- a/runtime/vm/code_patcher.cc
+++ b/runtime/vm/code_patcher.cc
@@ -28,7 +28,7 @@
   }
 }
 
-bool MatchesPattern(uword addr, int16_t* pattern, intptr_t size) {
+bool MatchesPattern(uword end, int16_t* pattern, intptr_t size) {
   // When breaking within generated code in GDB, it may overwrite individual
   // instructions with trap instructions, which can cause this test to fail.
   //
@@ -37,7 +37,7 @@
   // cause replay to diverge from the original record.
   if (FLAG_support_rr) return true;
 
-  uint8_t* bytes = reinterpret_cast<uint8_t*>(addr);
+  uint8_t* bytes = reinterpret_cast<uint8_t*>(end - size);
   for (intptr_t i = 0; i < size; i++) {
     int16_t val = pattern[i];
     if ((val >= 0) && (val != bytes[i])) {
diff --git a/runtime/vm/code_patcher.h b/runtime/vm/code_patcher.h
index fb3716c..82668c5 100644
--- a/runtime/vm/code_patcher.h
+++ b/runtime/vm/code_patcher.h
@@ -64,8 +64,6 @@
                                                  const Code& code,
                                                  ICData* ic_data);
 
-  static intptr_t InstanceCallSizeInBytes();
-
   static void InsertDeoptimizationCallAt(uword start);
 
   static void PatchPoolPointerCallAt(uword return_address,
@@ -106,11 +104,11 @@
   static intptr_t GetSubtypeTestCachePoolIndex(uword return_address);
 };
 
-// Beginning from [addr] we compare [size] bytes with [pattern].  All [0..255]
-// values in [pattern] have to match, negative values are skipped.
+// Beginning from [end - size] we compare [size] bytes with [pattern]. All
+// [0..255] values in [pattern] have to match, negative values are skipped.
 //
 // Example pattern: `[0x3d, 0x8b, -1, -1]`.
-bool MatchesPattern(uword addr, int16_t* pattern, intptr_t size);
+bool MatchesPattern(uword end, int16_t* pattern, intptr_t size);
 
 class KBCPatcher : public AllStatic {
  public:
diff --git a/runtime/vm/code_patcher_arm.cc b/runtime/vm/code_patcher_arm.cc
index 47b5f5e..f7204fa 100644
--- a/runtime/vm/code_patcher_arm.cc
+++ b/runtime/vm/code_patcher_arm.cc
@@ -43,12 +43,6 @@
   return call.TargetCode();
 }
 
-intptr_t CodePatcher::InstanceCallSizeInBytes() {
-  // The instance call instruction sequence has a variable size on ARM.
-  UNREACHABLE();
-  return 0;
-}
-
 RawFunction* CodePatcher::GetUnoptimizedStaticCallAt(uword return_address,
                                                      const Code& code,
                                                      ICData* ic_data_result) {
diff --git a/runtime/vm/code_patcher_arm64.cc b/runtime/vm/code_patcher_arm64.cc
index 5d8c56c..d084ac1 100644
--- a/runtime/vm/code_patcher_arm64.cc
+++ b/runtime/vm/code_patcher_arm64.cc
@@ -78,12 +78,6 @@
   return call.TargetCode();
 }
 
-intptr_t CodePatcher::InstanceCallSizeInBytes() {
-  // The instance call instruction sequence has a variable size on ARM64.
-  UNREACHABLE();
-  return 0;
-}
-
 RawFunction* CodePatcher::GetUnoptimizedStaticCallAt(uword return_address,
                                                      const Code& code,
                                                      ICData* ic_data_result) {
diff --git a/runtime/vm/code_patcher_dbc.cc b/runtime/vm/code_patcher_dbc.cc
index 30159b1..9c478ff 100644
--- a/runtime/vm/code_patcher_dbc.cc
+++ b/runtime/vm/code_patcher_dbc.cc
@@ -43,11 +43,6 @@
   return call.TargetCode();
 }
 
-intptr_t CodePatcher::InstanceCallSizeInBytes() {
-  UNREACHABLE();
-  return 0;
-}
-
 RawFunction* CodePatcher::GetUnoptimizedStaticCallAt(uword return_address,
                                                      const Code& code,
                                                      ICData* ic_data_result) {
diff --git a/runtime/vm/code_patcher_ia32.cc b/runtime/vm/code_patcher_ia32.cc
index 70ce4ef..ccc8c07 100644
--- a/runtime/vm/code_patcher_ia32.cc
+++ b/runtime/vm/code_patcher_ia32.cc
@@ -227,10 +227,6 @@
   return NULL;
 }
 
-intptr_t CodePatcher::InstanceCallSizeInBytes() {
-  return InstanceCall::kPatternSize;
-}
-
 }  // namespace dart
 
 #endif  // defined TARGET_ARCH_IA32
diff --git a/runtime/vm/code_patcher_ia32_test.cc b/runtime/vm/code_patcher_ia32_test.cc
index fbf16ef..a843893 100644
--- a/runtime/vm/code_patcher_ia32_test.cc
+++ b/runtime/vm/code_patcher_ia32_test.cc
@@ -46,7 +46,8 @@
 }
 
 ASSEMBLER_TEST_RUN(IcDataAccess, test) {
-  uword return_address = test->entry() + CodePatcher::InstanceCallSizeInBytes();
+  uword end = test->payload_start() + test->code().Size();
+  uword return_address = end - 1;  // sizeof(ret)
   ICData& ic_data = ICData::Handle();
   CodePatcher::GetInstanceCallAt(return_address, test->code(), &ic_data);
   EXPECT_STREQ("targetFunction",
diff --git a/runtime/vm/code_patcher_x64.cc b/runtime/vm/code_patcher_x64.cc
index 50d2b61..9915d70 100644
--- a/runtime/vm/code_patcher_x64.cc
+++ b/runtime/vm/code_patcher_x64.cc
@@ -16,56 +16,82 @@
 
 namespace dart {
 
-intptr_t IndexFromPPLoad(uword start) {
-  int32_t offset = *reinterpret_cast<int32_t*>(start);
-  return ObjectPool::IndexFromOffset(offset);
-}
-
-intptr_t IndexFromPPLoadDisp8(uword start) {
-  int8_t offset = *reinterpret_cast<int8_t*>(start);
-  return ObjectPool::IndexFromOffset(offset);
-}
-
 class UnoptimizedCall : public ValueObject {
  public:
   UnoptimizedCall(uword return_address, const Code& code)
       : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
-        start_(return_address - kCallPatternSize) {
-    ASSERT((kCallPatternSize - 7) == Assembler::kCallExternalLabelSize);
-    ASSERT(IsValid());
-  }
+        code_index_(-1),
+        argument_index_(-1) {
+    uword pc = return_address;
 
-  static const int kCallPatternSize = 22;
-
-  bool IsValid() const {
-    static int16_t pattern[kCallPatternSize] = {
-        0x49, 0x8b, 0x9f, -1,   -1, -1, -1,  // movq RBX, [PP + offs]
-        0x4d, 0x8b, 0xa7, -1,   -1, -1, -1,  // movq CR, [PP + offs]
-        0x4d, 0x8b, 0x5c, 0x24, -1,  // movq TMP, [CR + entry_point_offs]
-        0x41, 0xff, 0xd3             // callq TMP
+    // callq [CODE_REG + entry_point_offset]
+    static int16_t call_pattern[] = {
+        0x41, 0xff, 0x54, 0x24, -1,
     };
-    return MatchesPattern(start_, pattern, kCallPatternSize);
+    if (MatchesPattern(pc, call_pattern, ARRAY_SIZE(call_pattern))) {
+      pc -= ARRAY_SIZE(call_pattern);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
+
+    // movq CODE_REG, [PP + offset]
+    static int16_t load_code_disp8[] = {
+        0x4d, 0x8b, 0x67, -1,  //
+    };
+    static int16_t load_code_disp32[] = {
+        0x4d, 0x8b, 0xa7, -1, -1, -1, -1,
+    };
+    if (MatchesPattern(pc, load_code_disp8, ARRAY_SIZE(load_code_disp8))) {
+      pc -= ARRAY_SIZE(load_code_disp8);
+      code_index_ = IndexFromPPLoadDisp8(pc + 3);
+    } else if (MatchesPattern(pc, load_code_disp32,
+                              ARRAY_SIZE(load_code_disp32))) {
+      pc -= ARRAY_SIZE(load_code_disp32);
+      code_index_ = IndexFromPPLoadDisp32(pc + 3);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
+    ASSERT(Object::Handle(object_pool_.ObjectAt(code_index_)).IsCode());
+
+    // movq RBX, [PP + offset]
+    static int16_t load_argument_disp8[] = {
+        0x49, 0x8b, 0x5f, -1,  //
+    };
+    static int16_t load_argument_disp32[] = {
+        0x49, 0x8b, 0x9f, -1, -1, -1, -1,
+    };
+    if (MatchesPattern(pc, load_argument_disp8,
+                       ARRAY_SIZE(load_argument_disp8))) {
+      pc -= ARRAY_SIZE(load_argument_disp8);
+      argument_index_ = IndexFromPPLoadDisp8(pc + 3);
+    } else if (MatchesPattern(pc, load_argument_disp32,
+                              ARRAY_SIZE(load_argument_disp32))) {
+      pc -= ARRAY_SIZE(load_argument_disp32);
+      argument_index_ = IndexFromPPLoadDisp32(pc + 3);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
   }
 
-  intptr_t argument_index() const { return IndexFromPPLoad(start_ + 3); }
+  intptr_t argument_index() const { return argument_index_; }
 
   RawObject* ic_data() const { return object_pool_.ObjectAt(argument_index()); }
 
   RawCode* target() const {
-    intptr_t index = IndexFromPPLoad(start_ + 10);
     Code& code = Code::Handle();
-    code ^= object_pool_.ObjectAt(index);
+    code ^= object_pool_.ObjectAt(code_index_);
     return code.raw();
   }
 
   void set_target(const Code& target) const {
-    intptr_t index = IndexFromPPLoad(start_ + 10);
-    object_pool_.SetObjectAt(index, target);
+    object_pool_.SetObjectAt(code_index_, target);
     // No need to flush the instruction cache, since the code is not modified.
   }
 
  protected:
   const ObjectPool& object_pool_;
+  intptr_t code_index_;
+  intptr_t argument_index_;
 
  private:
   uword start_;
@@ -125,38 +151,54 @@
 class PoolPointerCall : public ValueObject {
  public:
   explicit PoolPointerCall(uword return_address, const Code& code)
-      : start_(return_address - kCallPatternSize),
-        object_pool_(ObjectPool::Handle(code.GetObjectPool())) {
-    ASSERT(IsValid());
-  }
+      : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
+        code_index_(-1) {
+    uword pc = return_address;
 
-  static const int kCallPatternSize = 15;
-
-  bool IsValid() const {
-    static int16_t pattern[kCallPatternSize] = {
-        0x4d, 0x8b, 0xa7, -1,   -1, -1, -1,  // movq CR, [PP + offs]
-        0x4d, 0x8b, 0x5c, 0x24, -1,          // movq TMP, [CR + entry_point_off]
-        0x41, 0xff, 0xd3                     // callq TMP
+    // callq [CODE_REG + entry_point_offset]
+    static int16_t call_pattern[] = {
+        0x41, 0xff, 0x54, 0x24, -1,
     };
-    return MatchesPattern(start_, pattern, kCallPatternSize);
-  }
+    if (MatchesPattern(pc, call_pattern, ARRAY_SIZE(call_pattern))) {
+      pc -= ARRAY_SIZE(call_pattern);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
 
-  intptr_t pp_index() const { return IndexFromPPLoad(start_ + 3); }
+    // movq CODE_REG, [PP + offset]
+    static int16_t load_code_disp8[] = {
+        0x4d, 0x8b, 0x67, -1,  //
+    };
+    static int16_t load_code_disp32[] = {
+        0x4d, 0x8b, 0xa7, -1, -1, -1, -1,
+    };
+    if (MatchesPattern(pc, load_code_disp8, ARRAY_SIZE(load_code_disp8))) {
+      pc -= ARRAY_SIZE(load_code_disp8);
+      code_index_ = IndexFromPPLoadDisp8(pc + 3);
+    } else if (MatchesPattern(pc, load_code_disp32,
+                              ARRAY_SIZE(load_code_disp32))) {
+      pc -= ARRAY_SIZE(load_code_disp32);
+      code_index_ = IndexFromPPLoadDisp32(pc + 3);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
+    ASSERT(Object::Handle(object_pool_.ObjectAt(code_index_)).IsCode());
+  }
 
   RawCode* Target() const {
     Code& code = Code::Handle();
-    code ^= object_pool_.ObjectAt(pp_index());
+    code ^= object_pool_.ObjectAt(code_index_);
     return code.raw();
   }
 
   void SetTarget(const Code& target) const {
-    object_pool_.SetObjectAt(pp_index(), target);
+    object_pool_.SetObjectAt(code_index_, target);
     // No need to flush the instruction cache, since the code is not modified.
   }
 
  protected:
-  uword start_;
   const ObjectPool& object_pool_;
+  intptr_t code_index_;
 
  private:
   DISALLOW_IMPLICIT_CONSTRUCTORS(PoolPointerCall);
@@ -170,26 +212,73 @@
 class SwitchableCall : public ValueObject {
  public:
   SwitchableCall(uword return_address, const Code& code)
-      : start_(return_address - kCallPatternSize),
-        object_pool_(ObjectPool::Handle(code.GetObjectPool())) {
-    ASSERT(IsValid());
-  }
+      : object_pool_(ObjectPool::Handle(code.GetObjectPool())),
+        target_index_(-1),
+        data_index_(-1) {
+    uword pc = return_address;
 
-  static const int kCallPatternSize = 21;
-
-  bool IsValid() const {
-    static int16_t pattern[kCallPatternSize] = {
-        0x4d, 0x8b, 0xa7, -1,   -1,   -1, -1,  // movq r12, [PP + code_offs]
-        0x49, 0x8b, 0x4c, 0x24, 0x0f,  // movq rcx, [r12 + entrypoint_off]
-        0x49, 0x8b, 0x9f, -1,   -1,   -1, -1,  // movq rbx, [PP + cache_offs]
-        0xff, 0xd1,                            // call rcx
+    // callq RCX
+    static int16_t call_pattern[] = {
+        0xff, 0xd1,  //
     };
-    ASSERT(ARRAY_SIZE(pattern) == kCallPatternSize);
-    return MatchesPattern(start_, pattern, kCallPatternSize);
+    if (MatchesPattern(pc, call_pattern, ARRAY_SIZE(call_pattern))) {
+      pc -= ARRAY_SIZE(call_pattern);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
+
+    // movq RBX, [PP + offset]
+    static int16_t load_data_disp8[] = {
+        0x49, 0x8b, 0x5f, -1,  //
+    };
+    static int16_t load_data_disp32[] = {
+        0x49, 0x8b, 0x9f, -1, -1, -1, -1,
+    };
+    if (MatchesPattern(pc, load_data_disp8, ARRAY_SIZE(load_data_disp8))) {
+      pc -= ARRAY_SIZE(load_data_disp8);
+      data_index_ = IndexFromPPLoadDisp8(pc + 3);
+    } else if (MatchesPattern(pc, load_data_disp32,
+                              ARRAY_SIZE(load_data_disp32))) {
+      pc -= ARRAY_SIZE(load_data_disp32);
+      data_index_ = IndexFromPPLoadDisp32(pc + 3);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
+    ASSERT(!Object::Handle(object_pool_.ObjectAt(data_index_)).IsCode());
+
+    // movq rcx, [CODE_REG + entrypoint_offset]
+    static int16_t load_entry_pattern[] = {
+        0x49, 0x8b, 0x4c, 0x24, 0x0f,
+    };
+    if (MatchesPattern(pc, load_entry_pattern,
+                       ARRAY_SIZE(load_entry_pattern))) {
+      pc -= ARRAY_SIZE(load_entry_pattern);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
+
+    // movq CODE_REG, [PP + offset]
+    static int16_t load_code_disp8[] = {
+        0x4d, 0x8b, 0x67, -1,  //
+    };
+    static int16_t load_code_disp32[] = {
+        0x4d, 0x8b, 0xa7, -1, -1, -1, -1,
+    };
+    if (MatchesPattern(pc, load_code_disp8, ARRAY_SIZE(load_code_disp8))) {
+      pc -= ARRAY_SIZE(load_code_disp8);
+      target_index_ = IndexFromPPLoadDisp8(pc + 3);
+    } else if (MatchesPattern(pc, load_code_disp32,
+                              ARRAY_SIZE(load_code_disp32))) {
+      pc -= ARRAY_SIZE(load_code_disp32);
+      target_index_ = IndexFromPPLoadDisp32(pc + 3);
+    } else {
+      FATAL1("Failed to decode at %" Px, pc);
+    }
+    ASSERT(Object::Handle(object_pool_.ObjectAt(target_index_)).IsCode());
   }
 
-  intptr_t data_index() const { return IndexFromPPLoad(start_ + 15); }
-  intptr_t target_index() const { return IndexFromPPLoad(start_ + 3); }
+  intptr_t data_index() const { return data_index_; }
+  intptr_t target_index() const { return target_index_; }
 
   RawObject* data() const { return object_pool_.ObjectAt(data_index()); }
   RawCode* target() const {
@@ -209,8 +298,9 @@
   }
 
  protected:
-  uword start_;
   const ObjectPool& object_pool_;
+  intptr_t target_index_;
+  intptr_t data_index_;
 
  private:
   DISALLOW_IMPLICIT_CONSTRUCTORS(SwitchableCall);
@@ -248,10 +338,6 @@
   return call.target();
 }
 
-intptr_t CodePatcher::InstanceCallSizeInBytes() {
-  return InstanceCall::kCallPatternSize;
-}
-
 void CodePatcher::InsertDeoptimizationCallAt(uword start) {
   UNREACHABLE();
 }
diff --git a/runtime/vm/code_patcher_x64_test.cc b/runtime/vm/code_patcher_x64_test.cc
index 1391f7e..90bd5f5 100644
--- a/runtime/vm/code_patcher_x64_test.cc
+++ b/runtime/vm/code_patcher_x64_test.cc
@@ -49,7 +49,8 @@
 }
 
 ASSEMBLER_TEST_RUN(IcDataAccess, test) {
-  uword return_address = test->entry() + CodePatcher::InstanceCallSizeInBytes();
+  uword end = test->payload_start() + test->code().Size();
+  uword return_address = end - 1;  // sizeof(ret)
   ICData& ic_data = ICData::Handle();
   CodePatcher::GetInstanceCallAt(return_address, test->code(), &ic_data);
   EXPECT_STREQ("targetFunction",
diff --git a/runtime/vm/compiler/aot/aot_call_specializer.cc b/runtime/vm/compiler/aot/aot_call_specializer.cc
index d62497b..0ff81a0 100644
--- a/runtime/vm/compiler/aot/aot_call_specializer.cc
+++ b/runtime/vm/compiler/aot/aot_call_specializer.cc
@@ -742,10 +742,6 @@
     ReplaceWithInstanceOf(instr);
     return;
   }
-  if (Token::IsTypeCastOperator(op_kind)) {
-    ReplaceWithTypeCast(instr);
-    return;
-  }
 
   if (TryInlineFieldAccess(instr)) {
     return;
@@ -1232,83 +1228,6 @@
   return true;
 }
 
-bool AotCallSpecializer::TryReplaceTypeCastWithRangeCheck(
-    InstanceCallInstr* call,
-    const AbstractType& type) {
-  if (precompiler_ == NULL) {
-    // Loading not complete, can't do CHA yet.
-    return false;
-  }
-
-  HierarchyInfo* hi = thread()->hierarchy_info();
-  if (hi == NULL) {
-    return false;
-  }
-
-  intptr_t lower_limit, upper_limit;
-  if (!hi->InstanceOfHasClassRange(type, &lower_limit, &upper_limit)) {
-    return false;
-  }
-
-  Definition* left = call->ArgumentAt(0);
-
-  // left as type =>
-  //     _classRangeCheck(pos, left, type, left.cid, lower_limit, upper_limit)
-  LoadClassIdInstr* left_cid = new (Z) LoadClassIdInstr(new (Z) Value(left));
-  InsertBefore(call, left_cid, NULL, FlowGraph::kValue);
-  ConstantInstr* lower_cid =
-      flow_graph()->GetConstant(Smi::ZoneHandle(Z, Smi::New(lower_limit)));
-  ConstantInstr* upper_cid =
-      flow_graph()->GetConstant(Smi::ZoneHandle(Z, Smi::New(upper_limit)));
-  ConstantInstr* pos = flow_graph()->GetConstant(
-      Smi::ZoneHandle(Z, Smi::New(call->token_pos().Pos())));
-
-  ZoneGrowableArray<PushArgumentInstr*>* args =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(6);
-  PushArgumentInstr* arg = new (Z) PushArgumentInstr(new (Z) Value(pos));
-  InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-  args->Add(arg);
-  arg = new (Z) PushArgumentInstr(new (Z) Value(left));
-  InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-  args->Add(arg);
-  arg =
-      new (Z) PushArgumentInstr(new (Z) Value(flow_graph()->GetConstant(type)));
-  InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-  args->Add(arg);
-  arg = new (Z) PushArgumentInstr(new (Z) Value(left_cid));
-  InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-  args->Add(arg);
-  arg = new (Z) PushArgumentInstr(new (Z) Value(lower_cid));
-  InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-  args->Add(arg);
-  arg = new (Z) PushArgumentInstr(new (Z) Value(upper_cid));
-  InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-  args->Add(arg);
-
-  const Library& dart_internal = Library::Handle(Z, Library::CoreLibrary());
-  const String& target_name = Symbols::_classRangeAssert();
-  const Function& target = Function::ZoneHandle(
-      Z, dart_internal.LookupFunctionAllowPrivate(target_name));
-  ASSERT(!target.IsNull());
-  ASSERT(target.IsRecognized());
-  ASSERT(target.always_inline());
-
-  const intptr_t kTypeArgsLen = 0;
-  StaticCallInstr* new_call = new (Z) StaticCallInstr(
-      call->token_pos(), target, kTypeArgsLen,
-      Object::null_array(),  // argument_names
-      args, call->deopt_id(), call->CallCount(), ICData::kOptimized);
-  Environment* copy =
-      call->env()->DeepCopy(Z, call->env()->Length() - call->ArgumentCount());
-  for (intptr_t i = 0; i < args->length(); ++i) {
-    copy->PushValue(new (Z) Value((*args)[i]->value()->definition()));
-  }
-  call->RemoveEnvironment();
-  ReplaceCall(call, new_call);
-  copy->DeepCopyTo(Z, new_call);
-  return true;
-}
-
 void AotCallSpecializer::ReplaceArrayBoundChecks(FlowGraph* flow_graph) {
   Zone* zone = Thread::Current()->zone();
 
diff --git a/runtime/vm/compiler/aot/aot_call_specializer.h b/runtime/vm/compiler/aot/aot_call_specializer.h
index 7169626..5ffbea1 100644
--- a/runtime/vm/compiler/aot/aot_call_specializer.h
+++ b/runtime/vm/compiler/aot/aot_call_specializer.h
@@ -32,8 +32,6 @@
 
   virtual bool TryReplaceInstanceOfWithRangeCheck(InstanceCallInstr* call,
                                                   const AbstractType& type);
-  virtual bool TryReplaceTypeCastWithRangeCheck(InstanceCallInstr* call,
-                                                const AbstractType& type);
 
  private:
   // Attempt to build ICData for call using propagated class-ids.
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index c0d761c..6655422 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -4,7 +4,6 @@
 
 #include "vm/compiler/aot/precompiler.h"
 
-#include "vm/ast_printer.h"
 #include "vm/class_finalizer.h"
 #include "vm/code_patcher.h"
 #include "vm/compiler/aot/aot_call_specializer.h"
@@ -796,14 +795,8 @@
   Zone* zone = stack_zone.GetZone();
   ASSERT(Error::Handle(zone, thread->sticky_error()).IsNull());
 
-  ParsedFunction* parsed_function;
-  // Check if this field is coming from the Kernel binary.
-  if (field.kernel_offset() > 0) {
-    parsed_function = kernel::ParseStaticFieldInitializer(zone, field);
-  } else {
-    parsed_function = Parser::ParseStaticFieldInitializer(field);
-    parsed_function->AllocateVariables();
-  }
+  ParsedFunction* parsed_function =
+      kernel::ParseStaticFieldInitializer(zone, field);
 
   DartCompilationPipeline pipeline;
   PrecompileParsedFunctionHelper helper(/* precompiler = */ NULL,
@@ -861,11 +854,6 @@
   LongJumpScope jump;
   if (setjmp(*jump.Set()) == 0) {
     Thread* const thread = Thread::Current();
-    if (FLAG_support_ast_printer && FLAG_trace_compiler) {
-      THR_Print("compiling expression: ");
-      AstPrinter ast_printer;
-      ast_printer.PrintNode(fragment);
-    }
 
     // Create a dummy function object for the code generator.
     // The function needs to be associated with a named Class: the interface
@@ -1122,6 +1110,7 @@
   String& selector = String::Handle(Z);
   String& selector2 = String::Handle(Z);
   String& selector3 = String::Handle(Z);
+  Field& field = Field::Handle(Z);
 
   for (intptr_t i = 0; i < libraries_.Length(); i++) {
     lib ^= libraries_.At(i);
@@ -1146,26 +1135,58 @@
           AddFunction(function);
         }
 
+        bool found_metadata = false;
+        kernel::ProcedureAttributesMetadata metadata;
+
         // Handle the implicit call type conversions.
         if (Field::IsGetterName(selector)) {
+          // Call-through-getter.
+          // Function is get:foo and somewhere foo (or dyn:foo) is called.
           selector2 = Field::NameFromGetter(selector);
           selector3 = Symbols::Lookup(thread(), selector2);
-          if (IsSent(selector2)) {
-            // Call-through-getter.
-            // Function is get:foo and somewhere foo is called.
+          if (IsSent(selector3)) {
+            AddFunction(function);
+          }
+          selector2 = Function::CreateDynamicInvocationForwarderName(selector2);
+          selector3 = Symbols::Lookup(thread(), selector2);
+          if (IsSent(selector3)) {
             AddFunction(function);
           }
         } else if (function.kind() == RawFunction::kRegularFunction) {
           selector2 = Field::LookupGetterSymbol(selector);
-          if (IsSent(selector2) && kernel::IsTearOffTaken(function, Z)) {
-            // Closurization.
-            // Function is foo and somewhere get:foo is called.
-            function2 = function.ImplicitClosureFunction();
-            AddFunction(function2);
+          if (IsSent(selector2)) {
+            metadata = kernel::ProcedureAttributesOf(function, Z);
+            found_metadata = true;
 
-            // Add corresponding method extractor.
-            function2 = function.GetMethodExtractor(selector2);
-            AddFunction(function2);
+            if (metadata.has_tearoff_uses) {
+              // Closurization.
+              // Function is foo and somewhere get:foo is called.
+              function2 = function.ImplicitClosureFunction();
+              AddFunction(function2);
+
+              // Add corresponding method extractor.
+              function2 = function.GetMethodExtractor(selector2);
+              AddFunction(function2);
+            }
+          }
+        }
+
+        if (function.kind() == RawFunction::kImplicitSetter ||
+            function.kind() == RawFunction::kSetterFunction ||
+            function.kind() == RawFunction::kRegularFunction) {
+          selector2 = Function::CreateDynamicInvocationForwarderName(selector);
+          if (IsSent(selector2)) {
+            if (function.kind() == RawFunction::kImplicitSetter) {
+              field = function.accessor_field();
+              metadata = kernel::ProcedureAttributesOf(field, Z);
+            } else if (!found_metadata) {
+              metadata = kernel::ProcedureAttributesOf(function, Z);
+            }
+
+            if (metadata.has_dynamic_invocations) {
+              function2 = function.GetDynamicInvocationForwarder(selector2);
+              AddFunction(function2);
+            }
           }
         }
       }
@@ -1622,7 +1643,6 @@
   Library& lib = Library::Handle(Z);
   Array& scripts = Array::Handle(Z);
   Script& script = Script::Handle(Z);
-  const TokenStream& null_tokens = TokenStream::Handle(Z);
   for (intptr_t i = 0; i < libraries_.Length(); i++) {
     lib ^= libraries_.At(i);
     scripts = lib.LoadedScripts();
@@ -1630,7 +1650,6 @@
       script ^= scripts.At(j);
       script.set_compile_time_constants(Array::null_array());
       script.set_source(String::null_string());
-      script.set_tokens(null_tokens);
     }
   }
 }
@@ -2206,13 +2225,10 @@
   const Function& function = parsed_function()->function();
   Zone* const zone = thread()->zone();
 
-  CSTAT_TIMER_SCOPE(thread(), codefinalizer_timer);
   // CreateDeoptInfo uses the object pool and needs to be done before
   // FinalizeCode.
   const Array& deopt_info_array =
       Array::Handle(zone, graph_compiler->CreateDeoptInfo(assembler));
-  INC_STAT(thread(), total_code_size,
-           deopt_info_array.Length() * sizeof(uword));
   // Allocates instruction object. Since this occurs only at safepoint,
   // there can be no concurrent access to the instruction page.
   const Code& code = Code::Handle(Code::FinalizeCode(
@@ -2263,7 +2279,6 @@
 #ifndef PRODUCT
   TimelineStream* compiler_timeline = Timeline::GetCompilerStream();
 #endif  // !PRODUCT
-  CSTAT_TIMER_SCOPE(thread(), codegen_timer);
   HANDLESCOPE(thread());
 
   // We may reattempt compilation if the function needs to be assembled using
@@ -2286,10 +2301,7 @@
 
       CompilerState compiler_state(thread());
 
-      // TimerScope needs an isolate to be properly terminated in case of a
-      // LongJump.
       {
-        CSTAT_TIMER_SCOPE(thread(), graphbuilder_timer);
         ic_data_array = new (zone) ZoneGrowableArray<const ICData*>();
 #ifndef PRODUCT
         TimelineDurationScope tds(thread(), compiler_timeline,
@@ -2322,7 +2334,6 @@
         TimelineDurationScope tds(thread(), compiler_timeline,
                                   "OptimizationPasses");
 #endif  // !PRODUCT
-        CSTAT_TIMER_SCOPE(thread(), graphoptimizer_timer);
 
         pass_state.inline_id_to_function.Add(&function);
         // We do not add the token position now because we don't know the
@@ -2360,7 +2371,6 @@
           pass_state.inline_id_to_token_pos, pass_state.caller_inline_id,
           ic_data_array, function_stats);
       {
-        CSTAT_TIMER_SCOPE(thread(), graphcompiler_timer);
 #ifndef PRODUCT
         TimelineDurationScope tds(thread(), compiler_timeline, "CompileGraph");
 #endif  // !PRODUCT
@@ -2450,17 +2460,9 @@
                 function.ToFullyQualifiedCString(), function.token_pos().Pos(),
                 (function.end_token_pos().Pos() - function.token_pos().Pos()));
     }
-    INC_STAT(thread, num_functions_compiled, 1);
-    if (optimized) {
-      INC_STAT(thread, num_functions_optimized, 1);
-    }
     {
       HANDLESCOPE(thread);
-      const int64_t num_tokens_before = STAT_VALUE(thread, num_tokens_consumed);
       pipeline->ParseFunction(parsed_function);
-      const int64_t num_tokens_after = STAT_VALUE(thread, num_tokens_consumed);
-      INC_STAT(thread, num_func_tokens_compiled,
-               num_tokens_after - num_tokens_before);
     }
 
     PrecompileParsedFunctionHelper helper(precompiler, parsed_function,
diff --git a/runtime/vm/compiler/assembler/assembler_dbc_test.cc b/runtime/vm/compiler/assembler/assembler_dbc_test.cc
index 26cc5a4..6f2417a 100644
--- a/runtime/vm/compiler/assembler/assembler_dbc_test.cc
+++ b/runtime/vm/compiler/assembler/assembler_dbc_test.cc
@@ -8,6 +8,7 @@
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/compiler/compiler_state.h"
 #include "vm/stack_frame.h"
+#include "vm/symbols.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/compiler/assembler/assembler_ia32_test.cc b/runtime/vm/compiler/assembler/assembler_ia32_test.cc
index b3aac9c..154cd89 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32_test.cc
+++ b/runtime/vm/compiler/assembler/assembler_ia32_test.cc
@@ -4695,7 +4695,7 @@
 
 ASSEMBLER_TEST_GENERATE(BitTestImmediate, assembler) {
   __ movl(ECX, Immediate(32));
-  __ bt(EAX, 5);
+  __ bt(ECX, 5);
   Label ok;
   __ j(CARRY, &ok);
   __ int3();
@@ -4709,7 +4709,7 @@
   EXPECT_EQ(1, reinterpret_cast<BitTestImmediate>(test->entry())());
   EXPECT_DISASSEMBLY(
       "mov ecx,0x20\n"
-      "bt eax,5\n"
+      "bt ecx,5\n"
       "jc 0x........\n"
       "int3\n"
       "mov eax,1\n"
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index a719c6b..d3df2c3 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -67,14 +67,11 @@
                               Code::EntryKind entry_kind) {
   ASSERT(constant_pool_allowed());
   const Code& target = Code::ZoneHandle(stub_entry.code());
-  intptr_t call_start = buffer_.GetPosition();
   const intptr_t idx =
       object_pool_wrapper().AddObject(target, ObjectPool::kPatchable);
   const int32_t offset = ObjectPool::element_offset(idx);
   LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag);
-  movq(TMP, FieldAddress(CODE_REG, Code::entry_point_offset(entry_kind)));
-  call(TMP);
-  ASSERT((buffer_.GetPosition() - call_start) == kCallExternalLabelSize);
+  call(FieldAddress(CODE_REG, Code::entry_point_offset(entry_kind)));
 }
 
 void Assembler::CallWithEquivalence(const StubEntry& stub_entry,
@@ -85,8 +82,7 @@
   const intptr_t idx = object_pool_wrapper().FindObject(target, equivalence);
   const int32_t offset = ObjectPool::element_offset(idx);
   LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag);
-  movq(TMP, FieldAddress(CODE_REG, Code::entry_point_offset(entry_kind)));
-  call(TMP);
+  call(FieldAddress(CODE_REG, Code::entry_point_offset(entry_kind)));
 }
 
 void Assembler::Call(const StubEntry& stub_entry) {
@@ -96,8 +92,7 @@
       object_pool_wrapper().FindObject(target, ObjectPool::kNotPatchable);
   const int32_t offset = ObjectPool::element_offset(idx);
   LoadWordFromPoolOffset(CODE_REG, offset - kHeapObjectTag);
-  movq(TMP, FieldAddress(CODE_REG, Code::entry_point_offset()));
-  call(TMP);
+  call(FieldAddress(CODE_REG, Code::entry_point_offset()));
 }
 
 void Assembler::CallToRuntime() {
@@ -1114,9 +1109,8 @@
 void Assembler::LoadWordFromPoolOffset(Register dst, int32_t offset) {
   ASSERT(constant_pool_allowed());
   ASSERT(dst != PP);
-  // This sequence must be of fixed size. AddressBaseImm32
-  // forces the address operand to use a fixed-size imm32 encoding.
-  movq(dst, Address::AddressBaseImm32(PP, offset));
+  // This sequence must be decodable by code_patcher_x64.cc.
+  movq(dst, Address(PP, offset));
 }
 
 void Assembler::LoadIsolate(Register dst) {
diff --git a/runtime/vm/compiler/assembler/assembler_x64.h b/runtime/vm/compiler/assembler/assembler_x64.h
index cd5f054..70f7d9e 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.h
+++ b/runtime/vm/compiler/assembler/assembler_x64.h
@@ -293,8 +293,6 @@
   void call(Label* label);
   void call(const ExternalLabel* label);
 
-  static const intptr_t kCallExternalLabelSize = 15;
-
   void pushq(Register reg);
   void pushq(const Address& address) { EmitUnaryL(address, 0xFF, 6); }
   void pushq(const Immediate& imm);
diff --git a/runtime/vm/compiler/backend/block_scheduler.cc b/runtime/vm/compiler/backend/block_scheduler.cc
index 7b26cd6..24dc895 100644
--- a/runtime/vm/compiler/backend/block_scheduler.cc
+++ b/runtime/vm/compiler/backend/block_scheduler.cc
@@ -71,10 +71,15 @@
   Array& edge_counters = Array::Handle();
   edge_counters ^= ic_data_array.At(0);
 
-  intptr_t entry_count = GetEdgeCount(
-      edge_counters,
-      flow_graph()->graph_entry()->normal_entry()->preorder_number());
-  flow_graph()->graph_entry()->set_entry_count(entry_count);
+  auto graph_entry = flow_graph()->graph_entry();
+  BlockEntryInstr* entry = graph_entry->normal_entry();
+  if (entry == nullptr) {
+    entry = graph_entry->osr_entry();
+    ASSERT(entry != nullptr);
+  }
+  const intptr_t entry_count =
+      GetEdgeCount(edge_counters, entry->preorder_number());
+  graph_entry->set_entry_count(entry_count);
 
   for (BlockIterator it = flow_graph()->reverse_postorder_iterator();
        !it.Done(); it.Advance()) {
diff --git a/runtime/vm/compiler/backend/branch_optimizer.cc b/runtime/vm/compiler/backend/branch_optimizer.cc
index 7eeda64..d6f1330 100644
--- a/runtime/vm/compiler/backend/branch_optimizer.cc
+++ b/runtime/vm/compiler/backend/branch_optimizer.cc
@@ -61,7 +61,7 @@
 }
 
 JoinEntryInstr* BranchSimplifier::ToJoinEntry(Zone* zone,
-                                              TargetEntryInstr* target) {
+                                              BlockEntryInstr* target) {
   // Convert a target block into a join block.  Branches will be duplicated
   // so the former true and false targets become joins of the control flows
   // from all the duplicated branches.
@@ -74,6 +74,17 @@
   return join;
 }
 
+TargetEntryInstr* BranchSimplifier::ToTargetEntry(Zone* zone,
+                                                  BlockEntryInstr* target) {
+  auto replacement = new (zone)
+      TargetEntryInstr(target->block_id(), target->try_index(), DeoptId::kNone);
+  replacement->InheritDeoptTarget(zone, target);
+  replacement->LinkTo(target->next());
+  replacement->set_last_instruction(target->last_instruction());
+  target->UnuseAllInputs();
+  return replacement;
+}
+
 BranchInstr* BranchSimplifier::CloneBranch(Zone* zone,
                                            BranchInstr* branch,
                                            Value* new_left,
diff --git a/runtime/vm/compiler/backend/branch_optimizer.h b/runtime/vm/compiler/backend/branch_optimizer.h
index 70643ea..8d8136d 100644
--- a/runtime/vm/compiler/backend/branch_optimizer.h
+++ b/runtime/vm/compiler/backend/branch_optimizer.h
@@ -9,7 +9,9 @@
 
 namespace dart {
 
+class BlockEntryInstr;
 class FlowGraph;
+class FunctionEntryInstr;
 class JoinEntryInstr;
 class Zone;
 class TargetEntryInstr;
@@ -23,10 +25,15 @@
  public:
   static void Simplify(FlowGraph* flow_graph);
 
-  // Replace a target entry instruction with a join entry instruction.  Does
+  // Replace a block entry instruction with a join entry instruction.  Does
   // not update the original target's predecessors to point to the new block
   // and does not replace the target in already computed block order lists.
-  static JoinEntryInstr* ToJoinEntry(Zone* zone, TargetEntryInstr* target);
+  static JoinEntryInstr* ToJoinEntry(Zone* zone, BlockEntryInstr* target);
+
+  // Replace a block entry instruction with a target entry instruction.  Does
+  // not update the original target's predecessors to point to the new block and
+  // does not replace the target in already computed block order lists.
+  static TargetEntryInstr* ToTargetEntry(Zone* zone, BlockEntryInstr* target);
 
  private:
   // Match an instance of the pattern to rewrite.  See the implementation
diff --git a/runtime/vm/compiler/backend/constant_propagator.cc b/runtime/vm/compiler/backend/constant_propagator.cc
index 4d88f97..8811240 100644
--- a/runtime/vm/compiler/backend/constant_propagator.cc
+++ b/runtime/vm/compiler/backend/constant_propagator.cc
@@ -121,9 +121,8 @@
 // Analysis of blocks.  Called at most once per block.  The block is already
 // marked as reachable.  All instructions in the block are analyzed.
 void ConstantPropagator::VisitGraphEntry(GraphEntryInstr* block) {
-  const GrowableArray<Definition*>& defs = *block->initial_definitions();
-  for (intptr_t i = 0; i < defs.length(); ++i) {
-    defs[i]->Accept(this);
+  for (auto def : *block->initial_definitions()) {
+    def->Accept(this);
   }
   ASSERT(ForwardInstructionIterator(block).Done());
 
@@ -134,6 +133,33 @@
   }
 }
 
+void ConstantPropagator::VisitFunctionEntry(FunctionEntryInstr* block) {
+  for (auto def : *block->initial_definitions()) {
+    def->Accept(this);
+  }
+  for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
+    it.Current()->Accept(this);
+  }
+}
+
+void ConstantPropagator::VisitOsrEntry(OsrEntryInstr* block) {
+  for (auto def : *block->initial_definitions()) {
+    def->Accept(this);
+  }
+  for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
+    it.Current()->Accept(this);
+  }
+}
+
+void ConstantPropagator::VisitCatchBlockEntry(CatchBlockEntryInstr* block) {
+  for (auto def : *block->initial_definitions()) {
+    def->Accept(this);
+  }
+  for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
+    it.Current()->Accept(this);
+  }
+}
+
 void ConstantPropagator::VisitJoinEntry(JoinEntryInstr* block) {
   // Phis are visited when visiting Goto at a predecessor. See VisitGoto.
   for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
@@ -153,16 +179,6 @@
   }
 }
 
-void ConstantPropagator::VisitCatchBlockEntry(CatchBlockEntryInstr* block) {
-  const GrowableArray<Definition*>& defs = *block->initial_definitions();
-  for (intptr_t i = 0; i < defs.length(); ++i) {
-    defs[i]->Accept(this);
-  }
-  for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
-    it.Current()->Accept(this);
-  }
-}
-
 void ConstantPropagator::VisitParallelMove(ParallelMoveInstr* instr) {
   // Parallel moves have not yet been inserted in the graph.
   UNREACHABLE();
@@ -1443,7 +1459,6 @@
       if (!reachable_->Contains(if_true->preorder_number())) {
         ASSERT(reachable_->Contains(if_false->preorder_number()));
         ASSERT(if_false->parallel_move() == NULL);
-        ASSERT(if_false->loop_info() == NULL);
         join = new (Z) JoinEntryInstr(if_false->block_id(),
                                       if_false->try_index(), DeoptId::kNone);
         join->InheritDeoptTarget(Z, if_false);
@@ -1451,7 +1466,6 @@
         next = if_false->next();
       } else if (!reachable_->Contains(if_false->preorder_number())) {
         ASSERT(if_true->parallel_move() == NULL);
-        ASSERT(if_true->loop_info() == NULL);
         join = new (Z) JoinEntryInstr(if_true->block_id(), if_true->try_index(),
                                       DeoptId::kNone);
         join->InheritDeoptTarget(Z, if_true);
diff --git a/runtime/vm/compiler/backend/flow_graph.cc b/runtime/vm/compiler/backend/flow_graph.cc
index 161889f..cd8350c 100644
--- a/runtime/vm/compiler/backend/flow_graph.cc
+++ b/runtime/vm/compiler/backend/flow_graph.cc
@@ -10,6 +10,7 @@
 #include "vm/compiler/backend/flow_graph_compiler.h"
 #include "vm/compiler/backend/il.h"
 #include "vm/compiler/backend/il_printer.h"
+#include "vm/compiler/backend/loops.h"
 #include "vm/compiler/backend/range_analysis.h"
 #include "vm/compiler/cha.h"
 #include "vm/compiler/compiler_state.h"
@@ -21,11 +22,16 @@
 namespace dart {
 
 #if defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_IA32)
+// Smi->Int32 widening pass is disabled due to dartbug.com/32619.
+DEFINE_FLAG(bool, use_smi_widening, false, "Enable Smi->Int32 widening pass.");
 DEFINE_FLAG(bool, trace_smi_widening, false, "Trace Smi->Int32 widening pass.");
 #endif
 DEFINE_FLAG(bool, prune_dead_locals, true, "optimize dead locals away");
 DECLARE_FLAG(bool, verify_compiler);
 
+// Quick access to the current zone.
+#define Z (zone())
+
 FlowGraph::FlowGraph(const ParsedFunction& parsed_function,
                      GraphEntryInstr* graph_entry,
                      intptr_t max_block_id,
@@ -43,14 +49,14 @@
       postorder_(),
       reverse_postorder_(),
       optimized_block_order_(),
-      constant_null_(NULL),
-      constant_dead_(NULL),
+      constant_null_(nullptr),
+      constant_dead_(nullptr),
       licm_allowed_(true),
       prologue_info_(prologue_info),
-      loop_headers_(NULL),
-      loop_invariant_loads_(NULL),
+      loop_hierarchy_(nullptr),
+      loop_invariant_loads_(nullptr),
       deferred_prefixes_(parsed_function.deferred_prefixes()),
-      await_token_positions_(NULL),
+      await_token_positions_(nullptr),
       captured_parameters_(new (zone()) BitVector(zone(), variable_count())),
       inlining_id_(-1),
       should_print_(FlowGraphPrinter::ShouldPrint(parsed_function.function())) {
@@ -133,20 +139,23 @@
     constant =
         new (zone()) ConstantInstr(Object::ZoneHandle(zone(), object.raw()));
     constant->set_ssa_temp_index(alloc_ssa_temp_index());
-
-    AddToInitialDefinitions(constant);
+    AddToGraphInitialDefinitions(constant);
     constant_instr_pool_.Insert(constant);
   }
   return constant;
 }
 
-void FlowGraph::AddToInitialDefinitions(Definition* defn) {
-  // TODO(zerny): Set previous to the graph entry so it is accessible by
-  // GetBlock. Remove this once there is a direct pointer to the block.
+void FlowGraph::AddToGraphInitialDefinitions(Definition* defn) {
   defn->set_previous(graph_entry_);
   graph_entry_->initial_definitions()->Add(defn);
 }
 
+void FlowGraph::AddToInitialDefinitions(BlockEntryWithInitialDefs* entry,
+                                        Definition* defn) {
+  defn->set_previous(entry);
+  entry->initial_definitions()->Add(defn);
+}
+
 void FlowGraph::InsertBefore(Instruction* next,
                              Instruction* instr,
                              Environment* env,
@@ -245,8 +254,7 @@
     reverse_postorder_.Add(postorder_[block_count - i - 1]);
   }
 
-  loop_headers_ = NULL;
-  loop_invariant_loads_ = NULL;
+  ResetLoopHierarchy();
 }
 
 void FlowGraph::MergeBlocks() {
@@ -834,6 +842,27 @@
         continue;
       }
     }
+
+    // For blocks with parameter or special parameter instructions we add them
+    // to the kill set.
+    const bool is_function_entry = block->IsFunctionEntry();
+    const bool is_osr_entry = block->IsOsrEntry();
+    if (is_function_entry || is_osr_entry || block->IsCatchBlockEntry()) {
+      const intptr_t parameter_count =
+          is_osr_entry ? flow_graph_->variable_count()
+                       : flow_graph_->num_direct_parameters();
+      for (intptr_t i = 0; i < parameter_count; ++i) {
+        live_in->Remove(i);
+        kill->Add(i);
+      }
+    }
+    if (is_function_entry) {
+      if (flow_graph_->parsed_function().has_arg_desc_var()) {
+        const auto index = flow_graph_->ArgumentDescriptorEnvIndex();
+        live_in->Remove(index);
+        kill->Add(index);
+      }
+    }
   }
 }
 
@@ -843,6 +872,8 @@
   ASSERT((next_virtual_register_number == 0) || (inlining_parameters != NULL));
   current_ssa_temp_index_ = next_virtual_register_number;
   GrowableArray<BitVector*> dominance_frontier;
+  GrowableArray<intptr_t> idom;
+
   ComputeDominators(&dominance_frontier);
 
   VariableLivenessAnalysis variable_liveness(this);
@@ -1046,6 +1077,39 @@
   constant_null_ = GetConstant(Object::ZoneHandle());
   constant_dead_ = GetConstant(Symbols::OptimizedOut());
 
+  const intptr_t parameter_count =
+      IsCompiledForOsr() ? variable_count() : num_direct_parameters_;
+
+  // Initial renaming environment.
+  GrowableArray<Definition*> env(parameter_count + num_stack_locals());
+  env.FillWith(constant_dead(), 0, parameter_count);
+  if (!IsCompiledForOsr()) {
+    env.FillWith(constant_null(), parameter_count, num_stack_locals());
+  }
+
+  if (entry->catch_entries().length() > 0) {
+    // Functions with try-catch have a fixed area of stack slots reserved
+    // so that all local variables are stored at a known location when
+    // on entry to the catch.
+    entry->set_fixed_slot_count(num_stack_locals());
+  } else {
+    ASSERT(entry->unchecked_entry() != nullptr ? entry->SuccessorCount() == 2
+                                               : entry->SuccessorCount() == 1);
+  }
+
+  RenameRecursive(entry, &env, live_phis, variable_liveness,
+                  inlining_parameters);
+}
+
+void FlowGraph::PopulateEnvironmentFromFunctionEntry(
+    FunctionEntryInstr* function_entry,
+    GrowableArray<Definition*>* env,
+    GrowableArray<PhiInstr*>* live_phis,
+    VariableLivenessAnalysis* variable_liveness,
+    ZoneGrowableArray<Definition*>* inlining_parameters) {
+  ASSERT(!IsCompiledForOsr());
+  const intptr_t parameter_count = num_direct_parameters_;
+
   // Check if inlining_parameters include a type argument vector parameter.
   const intptr_t inlined_type_args_param =
       (FLAG_reify_generic_functions && (inlining_parameters != NULL) &&
@@ -1053,25 +1117,11 @@
           ? 1
           : 0;
 
-  // Initial renaming environment.
-  GrowableArray<Definition*> env(variable_count());
-  {
-    const intptr_t parameter_count =
-        IsCompiledForOsr() ? variable_count() : num_direct_parameters_;
-    for (intptr_t i = 0; i < parameter_count; i++) {
-      ParameterInstr* param = new (zone()) ParameterInstr(i, entry);
-      param->set_ssa_temp_index(alloc_ssa_temp_index());
-      AddToInitialDefinitions(param);
-      env.Add(param);
-    }
-    ASSERT(env.length() == parameter_count);
-
-    // Fill in all local variables with `null` (for osr the stack locals have
-    // already been been handled above).
-    if (!IsCompiledForOsr()) {
-      ASSERT(env.length() == num_direct_parameters_);
-      env.FillWith(constant_null(), num_direct_parameters_, num_stack_locals());
-    }
+  for (intptr_t i = 0; i < parameter_count; i++) {
+    ParameterInstr* param = new (zone()) ParameterInstr(i, function_entry);
+    param->set_ssa_temp_index(alloc_ssa_temp_index());
+    AddToInitialDefinitions(function_entry, param);
+    (*env)[i] = param;
   }
 
   // Override the entries in the renaming environment which are special (i.e.
@@ -1082,55 +1132,90 @@
       for (intptr_t i = 0; i < function().NumParameters(); ++i) {
         Definition* defn = (*inlining_parameters)[inlined_type_args_param + i];
         AllocateSSAIndexes(defn);
-        AddToInitialDefinitions(defn);
+        AddToInitialDefinitions(function_entry, defn);
 
         intptr_t index = EnvIndex(parsed_function_.RawParameterVariable(i));
-        env[index] = defn;
+        (*env)[index] = defn;
       }
     }
 
-    if (!IsCompiledForOsr()) {
-      const bool reify_generic_argument =
-          function().IsGeneric() && FLAG_reify_generic_functions;
+    // Replace the type arguments slot with a special parameter.
+    const bool reify_generic_argument =
+        function().IsGeneric() && FLAG_reify_generic_functions;
+    if (reify_generic_argument) {
+      ASSERT(parsed_function().function_type_arguments() != NULL);
 
-      // Replace the type arguments slot with a special parameter.
-      if (reify_generic_argument) {
-        ASSERT(parsed_function().function_type_arguments() != NULL);
-
-        Definition* defn;
-        if (inlining_parameters == NULL) {
-          // Note: If we are not inlining, then the prologue builder will
-          // take care of checking that we got the correct reified type
-          // arguments.  This includes checking the argument descriptor in order
-          // to even find out if the parameter was passed or not.
-          defn = constant_dead();
-        } else {
-          defn = (*inlining_parameters)[0];
-        }
-        AllocateSSAIndexes(defn);
-        AddToInitialDefinitions(defn);
-        env[RawTypeArgumentEnvIndex()] = defn;
+      Definition* defn;
+      if (inlining_parameters == NULL) {
+        // Note: If we are not inlining, then the prologue builder will
+        // take care of checking that we got the correct reified type
+        // arguments.  This includes checking the argument descriptor in order
+        // to even find out if the parameter was passed or not.
+        defn = constant_dead();
+      } else {
+        defn = (*inlining_parameters)[0];
       }
+      AllocateSSAIndexes(defn);
+      AddToInitialDefinitions(function_entry, defn);
+      (*env)[RawTypeArgumentEnvIndex()] = defn;
+    }
 
-      // Replace the argument descriptor slot with a special parameter.
-      if (parsed_function().has_arg_desc_var()) {
-        Definition* defn =
-            new SpecialParameterInstr(SpecialParameterInstr::kArgDescriptor,
-                                      DeoptId::kNone, graph_entry_);
-        AllocateSSAIndexes(defn);
-        AddToInitialDefinitions(defn);
-        env[ArgumentDescriptorEnvIndex()] = defn;
-      }
+    // Replace the argument descriptor slot with a special parameter.
+    if (parsed_function().has_arg_desc_var()) {
+      Definition* defn =
+          new (Z) SpecialParameterInstr(SpecialParameterInstr::kArgDescriptor,
+                                        DeoptId::kNone, function_entry);
+      AllocateSSAIndexes(defn);
+      AddToInitialDefinitions(function_entry, defn);
+      (*env)[ArgumentDescriptorEnvIndex()] = defn;
     }
   }
+}
 
-  if (entry->SuccessorCount() > 1) {
-    // Functions with try-catch have a fixed area of stack slots reserved
-    // so that all local variables are stored at a known location when
-    // on entry to the catch.
-    entry->set_fixed_slot_count(num_stack_locals());
+void FlowGraph::PopulateEnvironmentFromOsrEntry(
+    OsrEntryInstr* osr_entry,
+    GrowableArray<Definition*>* env) {
+  ASSERT(IsCompiledForOsr());
+  const intptr_t parameter_count = variable_count();
+  for (intptr_t i = 0; i < parameter_count; i++) {
+    ParameterInstr* param = new (zone()) ParameterInstr(i, osr_entry);
+    param->set_ssa_temp_index(alloc_ssa_temp_index());
+    AddToInitialDefinitions(osr_entry, param);
+    (*env)[i] = param;
   }
-  RenameRecursive(entry, &env, live_phis, variable_liveness);
+}
+
+void FlowGraph::PopulateEnvironmentFromCatchEntry(
+    CatchBlockEntryInstr* catch_entry,
+    GrowableArray<Definition*>* env) {
+  const intptr_t raw_exception_var_envindex =
+      catch_entry->raw_exception_var() != nullptr
+          ? EnvIndex(catch_entry->raw_exception_var())
+          : -1;
+  const intptr_t raw_stacktrace_var_envindex =
+      catch_entry->raw_stacktrace_var() != nullptr
+          ? EnvIndex(catch_entry->raw_stacktrace_var())
+          : -1;
+
+  // Add real definitions for all locals and parameters.
+  for (intptr_t i = 0; i < variable_count(); ++i) {
+    // Replace usages of the raw exception/stacktrace variables with
+    // [SpecialParameterInstr]s.
+    Definition* param = nullptr;
+    if (raw_exception_var_envindex == i) {
+      param = new (Z) SpecialParameterInstr(SpecialParameterInstr::kException,
+                                            DeoptId::kNone, catch_entry);
+    } else if (raw_stacktrace_var_envindex == i) {
+      param = new (Z) SpecialParameterInstr(SpecialParameterInstr::kStackTrace,
+                                            DeoptId::kNone, catch_entry);
+    } else {
+      param = new (Z) ParameterInstr(i, catch_entry);
+    }
+
+    param->set_ssa_temp_index(alloc_ssa_temp_index());  // New SSA temp.
+    (*env)[i] = param;
+    catch_entry->initial_definitions()->Add(param);
+  }
 }
 
 void FlowGraph::AttachEnvironment(Instruction* instr,
@@ -1151,13 +1236,14 @@
   }
 }
 
-void FlowGraph::RenameRecursive(BlockEntryInstr* block_entry,
-                                GrowableArray<Definition*>* env,
-                                GrowableArray<PhiInstr*>* live_phis,
-                                VariableLivenessAnalysis* variable_liveness) {
+void FlowGraph::RenameRecursive(
+    BlockEntryInstr* block_entry,
+    GrowableArray<Definition*>* env,
+    GrowableArray<PhiInstr*>* live_phis,
+    VariableLivenessAnalysis* variable_liveness,
+    ZoneGrowableArray<Definition*>* inlining_parameters) {
   // 1. Process phis first.
-  if (block_entry->IsJoinEntry()) {
-    JoinEntryInstr* join = block_entry->AsJoinEntry();
+  if (auto join = block_entry->AsJoinEntry()) {
     if (join->phis() != NULL) {
       for (intptr_t i = 0; i < join->phis()->length(); ++i) {
         PhiInstr* phi = (*join->phis())[i];
@@ -1176,49 +1262,31 @@
         }
       }
     }
-  } else if (CatchBlockEntryInstr* catch_entry =
-                 block_entry->AsCatchBlockEntry()) {
-    const intptr_t raw_exception_var_envindex =
-        catch_entry->raw_exception_var() != nullptr
-            ? EnvIndex(catch_entry->raw_exception_var())
-            : -1;
-    const intptr_t raw_stacktrace_var_envindex =
-        catch_entry->raw_stacktrace_var() != nullptr
-            ? EnvIndex(catch_entry->raw_stacktrace_var())
-            : -1;
+  } else if (auto osr_entry = block_entry->AsOsrEntry()) {
+    PopulateEnvironmentFromOsrEntry(osr_entry, env);
+  } else if (auto function_entry = block_entry->AsFunctionEntry()) {
+    ASSERT(!IsCompiledForOsr());
+    PopulateEnvironmentFromFunctionEntry(
+        function_entry, env, live_phis, variable_liveness, inlining_parameters);
+  } else if (auto catch_entry = block_entry->AsCatchBlockEntry()) {
+    PopulateEnvironmentFromCatchEntry(catch_entry, env);
+  }
 
-    // Add real definitions for all locals and parameters.
-    for (intptr_t i = 0; i < env->length(); ++i) {
-      // Replace usages of the raw exception/stacktrace variables with
-      // [SpecialParameterInstr]s.
-      Definition* param = nullptr;
-      if (raw_exception_var_envindex == i) {
-        param = new SpecialParameterInstr(SpecialParameterInstr::kException,
-                                          DeoptId::kNone, catch_entry);
-      } else if (raw_stacktrace_var_envindex == i) {
-        param = new SpecialParameterInstr(SpecialParameterInstr::kStackTrace,
-                                          DeoptId::kNone, catch_entry);
-      } else {
-        param = new (zone()) ParameterInstr(i, block_entry);
+  if (!block_entry->IsGraphEntry() &&
+      !block_entry->IsBlockEntryWithInitialDefs()) {
+    // Prune non-live variables at block entry by replacing their environment
+    // slots with null.
+    BitVector* live_in = variable_liveness->GetLiveInSet(block_entry);
+    for (intptr_t i = 0; i < variable_count(); i++) {
+      // TODO(fschneider): Make sure that live_in always contains the
+      // CurrentContext variable to avoid the special case here.
+      if (FLAG_prune_dead_locals && !live_in->Contains(i) &&
+          (i != CurrentContextEnvIndex())) {
+        (*env)[i] = constant_dead();
       }
-
-      param->set_ssa_temp_index(alloc_ssa_temp_index());  // New SSA temp.
-      (*env)[i] = param;
-      block_entry->AsCatchBlockEntry()->initial_definitions()->Add(param);
     }
   }
 
-  // Prune non-live variables at block entry by replacing their environment
-  // slots with null.
-  BitVector* live_in = variable_liveness->GetLiveInSet(block_entry);
-  for (intptr_t i = 0; i < variable_count(); i++) {
-    // TODO(fschneider): Make sure that live_in always contains the
-    // CurrentContext variable to avoid the special case here.
-    if (FLAG_prune_dead_locals && !live_in->Contains(i) &&
-        (i != CurrentContextEnvIndex())) {
-      (*env)[i] = constant_dead();
-    }
-  }
 
   // Attach environment to the block entry.
   AttachEnvironment(block_entry, env);
@@ -1404,7 +1472,8 @@
     BlockEntryInstr* block = block_entry->dominated_blocks()[i];
     GrowableArray<Definition*> new_env(env->length());
     new_env.AddArray(*env);
-    RenameRecursive(block, &new_env, live_phis, variable_liveness);
+    RenameRecursive(block, &new_env, live_phis, variable_liveness,
+                    inlining_parameters);
   }
 
   // 4. Process successor block. We have edge-split form, so that only blocks
@@ -1511,16 +1580,14 @@
   }
 }
 
-// Find the natural loop for the back edge m->n and attach loop information
-// to block n (loop header). The algorithm is described in "Advanced Compiler
-// Design & Implementation" (Muchnick) p192.
-BitVector* FlowGraph::FindLoop(BlockEntryInstr* m, BlockEntryInstr* n) const {
+BitVector* FlowGraph::FindLoopBlocks(BlockEntryInstr* m,
+                                     BlockEntryInstr* n) const {
   GrowableArray<BlockEntryInstr*> stack;
-  BitVector* loop = new (zone()) BitVector(zone(), preorder_.length());
+  BitVector* loop_blocks = new (zone()) BitVector(zone(), preorder_.length());
 
-  loop->Add(n->preorder_number());
+  loop_blocks->Add(n->preorder_number());
   if (n != m) {
-    loop->Add(m->preorder_number());
+    loop_blocks->Add(m->preorder_number());
     stack.Add(m);
   }
 
@@ -1528,57 +1595,49 @@
     BlockEntryInstr* p = stack.RemoveLast();
     for (intptr_t i = 0; i < p->PredecessorCount(); ++i) {
       BlockEntryInstr* q = p->PredecessorAt(i);
-      if (!loop->Contains(q->preorder_number())) {
-        loop->Add(q->preorder_number());
+      if (!loop_blocks->Contains(q->preorder_number())) {
+        loop_blocks->Add(q->preorder_number());
         stack.Add(q);
       }
     }
   }
-  return loop;
+  return loop_blocks;
 }
 
-ZoneGrowableArray<BlockEntryInstr*>* FlowGraph::ComputeLoops() const {
+LoopHierarchy* FlowGraph::ComputeLoops() const {
+  // Iterate over all entry blocks in the flow graph to attach
+  // loop information to each loop header.
   ZoneGrowableArray<BlockEntryInstr*>* loop_headers =
       new (zone()) ZoneGrowableArray<BlockEntryInstr*>();
-
   for (BlockIterator it = postorder_iterator(); !it.Done(); it.Advance()) {
     BlockEntryInstr* block = it.Current();
+    // Reset loop information on every entry block (since this method
+    // may recompute loop information on a modified flow graph).
+    block->set_loop_info(nullptr);
+    // Iterate over predecessors to find back edges.
     for (intptr_t i = 0; i < block->PredecessorCount(); ++i) {
       BlockEntryInstr* pred = block->PredecessorAt(i);
       if (block->Dominates(pred)) {
-        if (FLAG_trace_optimization) {
-          OS::PrintErr("Back edge B%" Pd " -> B%" Pd "\n", pred->block_id(),
-                       block->block_id());
-        }
-        BitVector* loop_info = FindLoop(pred, block);
-        // Loops that share the same loop header are treated as one loop.
-        BlockEntryInstr* header = NULL;
-        for (intptr_t i = 0; i < loop_headers->length(); ++i) {
-          if ((*loop_headers)[i] == block) {
-            header = (*loop_headers)[i];
-            break;
-          }
-        }
-        if (header != NULL) {
-          header->loop_info()->AddAll(loop_info);
-        } else {
-          block->set_loop_info(loop_info);
+        // Identify the block as a loop header and add the blocks in the
+        // loop to the loop information. Loops that share the same loop
+        // header are treated as one loop by merging these blocks.
+        BitVector* loop_blocks = FindLoopBlocks(pred, block);
+        if (block->loop_info() == nullptr) {
+          intptr_t id = loop_headers->length();
+          block->set_loop_info(new (zone()) LoopInfo(id, block, loop_blocks));
           loop_headers->Add(block);
+        } else {
+          ASSERT(block->loop_info()->header() == block);
+          block->loop_info()->AddBlocks(loop_blocks);
         }
+        block->loop_info()->AddBackEdge(pred);
       }
     }
   }
-  if (FLAG_trace_optimization) {
-    for (intptr_t i = 0; i < loop_headers->length(); ++i) {
-      BlockEntryInstr* header = (*loop_headers)[i];
-      OS::PrintErr("Loop header B%" Pd "\n", header->block_id());
-      for (BitVector::Iterator it(header->loop_info()); !it.Done();
-           it.Advance()) {
-        OS::PrintErr("  B%" Pd "\n", preorder_[it.Current()]->block_id());
-      }
-    }
-  }
-  return loop_headers;
+
+  // Build the loop hierarchy and link every entry block to
+  // the closest enveloping loop in loop hierarchy.
+  return new (zone()) LoopHierarchy(loop_headers, preorder_);
 }
 
 intptr_t FlowGraph::InstructionCount() const {
@@ -1601,9 +1660,6 @@
   return size;
 }
 
-// Quick access to the current zone.
-#define Z (zone())
-
 void FlowGraph::ConvertUse(Value* use, Representation from_rep) {
   const Representation to_rep =
       use->instruction()->RequiredInputRepresentation(use->use_index());
@@ -1640,8 +1696,9 @@
   if (phi != NULL) {
     ASSERT(phi->is_alive());
     // For phis conversions have to be inserted in the predecessor.
-    insert_before =
-        phi->block()->PredecessorAt(use->use_index())->last_instruction();
+    auto predecessor = phi->block()->PredecessorAt(use->use_index());
+    insert_before = predecessor->last_instruction();
+    ASSERT(insert_before->GetBlock() == predecessor);
     deopt_target = NULL;
   } else {
     deopt_target = insert_before = use->instruction();
@@ -1791,8 +1848,8 @@
 }
 
 void FlowGraph::SelectRepresentations() {
-  // Conservatively unbox all phis that were proven to be of Double,
-  // Float32x4, or Int32x4 type.
+  // First we decide for each phi if it is beneficial to unbox it. If so, we
+  // change it's `phi->representation()`
   for (BlockIterator block_it = reverse_postorder_iterator(); !block_it.Done();
        block_it.Advance()) {
     JoinEntryInstr* join_entry = block_it.Current()->AsJoinEntry();
@@ -1804,18 +1861,28 @@
     }
   }
 
-  // Process all instructions and insert conversions where needed.
-  // Visit incoming parameters and constants.
+  // Process all initial definitions and insert conversions when needed (depends
+  // on phi unboxing decision above).
   for (intptr_t i = 0; i < graph_entry()->initial_definitions()->length();
        i++) {
     InsertConversionsFor((*graph_entry()->initial_definitions())[i]);
   }
+  for (intptr_t i = 0; i < graph_entry()->SuccessorCount(); ++i) {
+    auto successor = graph_entry()->SuccessorAt(i);
+    if (auto entry = successor->AsBlockEntryWithInitialDefs()) {
+      auto& initial_definitions = *entry->initial_definitions();
+      for (intptr_t j = 0; j < initial_definitions.length(); j++) {
+        InsertConversionsFor(initial_definitions[j]);
+      }
+    }
+  }
 
+  // Process all normal definitions and insert conversions when needed (depends
+  // on phi unboxing decision above).
   for (BlockIterator block_it = reverse_postorder_iterator(); !block_it.Done();
        block_it.Advance()) {
     BlockEntryInstr* entry = block_it.Current();
-    JoinEntryInstr* join_entry = entry->AsJoinEntry();
-    if (join_entry != NULL) {
+    if (JoinEntryInstr* join_entry = entry->AsJoinEntry()) {
       for (PhiIterator it(join_entry); !it.Done(); it.Advance()) {
         PhiInstr* phi = it.Current();
         ASSERT(phi != NULL);
@@ -1823,13 +1890,6 @@
         InsertConversionsFor(phi);
       }
     }
-    CatchBlockEntryInstr* catch_entry = entry->AsCatchBlockEntry();
-    if (catch_entry != NULL) {
-      for (intptr_t i = 0; i < catch_entry->initial_definitions()->length();
-           i++) {
-        InsertConversionsFor((*catch_entry->initial_definitions())[i]);
-      }
-    }
     for (ForwardInstructionIterator it(entry); !it.Done(); it.Advance()) {
       Definition* def = it.Current()->AsDefinition();
       if (def != NULL) {
@@ -1862,7 +1922,20 @@
   }
 }
 
+// Maps an entry block to its closest enveloping loop id, or -1 if none.
+static intptr_t LoopId(BlockEntryInstr* block) {
+  LoopInfo* loop = block->loop_info();
+  if (loop != nullptr) {
+    return loop->id();
+  }
+  return -1;
+}
+
 void FlowGraph::WidenSmiToInt32() {
+  if (!FLAG_use_smi_widening) {
+    return;
+  }
+
   GrowableArray<BinarySmiOpInstr*> candidates;
 
   // Step 1. Collect all instructions that potentially benefit from widening of
@@ -1888,19 +1961,7 @@
   // gain: we are going to assume that only conversion occurring inside the
   // same loop should be counted against the gain, all other conversions
   // can be hoisted and thus cost nothing compared to the loop cost itself.
-  const ZoneGrowableArray<BlockEntryInstr*>& loop_headers = LoopHeaders();
-
-  GrowableArray<intptr_t> loops(preorder().length());
-  for (intptr_t i = 0; i < preorder().length(); i++) {
-    loops.Add(-1);
-  }
-
-  for (intptr_t loop_id = 0; loop_id < loop_headers.length(); ++loop_id) {
-    for (BitVector::Iterator loop_it(loop_headers[loop_id]->loop_info());
-         !loop_it.Done(); loop_it.Advance()) {
-      loops[loop_it.Current()] = loop_id;
-    }
-  }
+  GetLoopHierarchy();
 
   // Step 3. For each candidate transitively collect all other BinarySmiOpInstr
   // and PhiInstr that depend on it and that it depends on and count amount of
@@ -1944,7 +2005,7 @@
         }
       }
 
-      const intptr_t defn_loop = loops[defn->GetBlock()->preorder_number()];
+      const intptr_t defn_loop = LoopId(defn->GetBlock());
 
       // Process all inputs.
       for (intptr_t k = 0; k < defn->InputCount(); k++) {
@@ -1959,7 +2020,7 @@
           if (FLAG_support_il_printer && FLAG_trace_smi_widening) {
             THR_Print("^ [%" Pd "] (i) %s\n", gain, input->ToCString());
           }
-        } else if (defn_loop == loops[input->GetBlock()->preorder_number()] &&
+        } else if (defn_loop == LoopId(input->GetBlock()) &&
                    (input->Type()->ToCid() == kSmiCid)) {
           // Input comes from the same loop, is known to be smi and requires
           // untagging.
@@ -2004,7 +2065,7 @@
             THR_Print("^ [%" Pd "] (u) %s\n", gain,
                       use->instruction()->ToCString());
           }
-        } else if (defn_loop == loops[instr->GetBlock()->preorder_number()]) {
+        } else if (defn_loop == LoopId(instr->GetBlock())) {
           gain--;
           if (FLAG_support_il_printer && FLAG_trace_smi_widening) {
             THR_Print("v [%" Pd "] (u) %s\n", gain,
diff --git a/runtime/vm/compiler/backend/flow_graph.h b/runtime/vm/compiler/backend/flow_graph.h
index 3a87672..330bcf3 100644
--- a/runtime/vm/compiler/backend/flow_graph.h
+++ b/runtime/vm/compiler/backend/flow_graph.h
@@ -14,6 +14,7 @@
 
 namespace dart {
 
+class LoopHierarchy;
 class VariableLivenessAnalysis;
 
 class BlockIterator : public ValueObject {
@@ -149,10 +150,6 @@
     return num_direct_parameters_ - variable->index().value();
   }
 
-  bool IsEntryPoint(BlockEntryInstr* target) const {
-    return graph_entry()->IsEntryPoint(target);
-  }
-
   // Flow graph orders.
   const GrowableArray<BlockEntryInstr*>& preorder() const { return preorder_; }
   const GrowableArray<BlockEntryInstr*>& postorder() const {
@@ -229,7 +226,9 @@
   intptr_t InstructionCount() const;
 
   ConstantInstr* GetConstant(const Object& object);
-  void AddToInitialDefinitions(Definition* defn);
+  void AddToGraphInitialDefinitions(Definition* defn);
+  void AddToInitialDefinitions(BlockEntryWithInitialDefs* entry,
+                               Definition* defn);
 
   enum UseKind { kEffect, kValue };
 
@@ -288,20 +287,25 @@
 
   PrologueInfo prologue_info() const { return prologue_info_; }
 
-  const ZoneGrowableArray<BlockEntryInstr*>& LoopHeaders() {
-    if (loop_headers_ == NULL) {
-      loop_headers_ = ComputeLoops();
+  // Computes the loop hierarchy of the flow graph on demand.
+  const LoopHierarchy& GetLoopHierarchy() {
+    if (loop_hierarchy_ == nullptr) {
+      loop_hierarchy_ = ComputeLoops();
     }
-    return *loop_headers_;
+    return loop_hierarchy();
   }
 
-  const ZoneGrowableArray<BlockEntryInstr*>* loop_headers() const {
-    return loop_headers_;
-  }
+  const LoopHierarchy& loop_hierarchy() const { return *loop_hierarchy_; }
 
-  // Finds natural loops in the flow graph and attaches a list of loop
-  // body blocks for each loop header.
-  ZoneGrowableArray<BlockEntryInstr*>* ComputeLoops() const;
+  // Resets the loop hierarchy of the flow graph. Use this to
+  // force a recomputation of loop detection by the next call
+  // to GetLoopHierarchy() (note that this does not immediately
+  // reset the loop_info fields of block entries, although
+  // these will be overwritten by that next call).
+  void ResetLoopHierarchy() {
+    loop_hierarchy_ = nullptr;
+    loop_invariant_loads_ = nullptr;
+  }
 
   // Per loop header invariant loads sets. Each set contains load id for
   // those loads that are not affected by anything in the loop and can be
@@ -401,10 +405,12 @@
   PhiInstr* AddPhi(JoinEntryInstr* join, Definition* d1, Definition* d2);
 
  private:
+  friend class FlowGraphCompiler;  // TODO(ajcbik): restructure
   friend class IfConverter;
   friend class BranchSimplifier;
   friend class ConstantPropagator;
   friend class DeadCodeElimination;
+  friend class Intrinsifier;
 
   // SSA transformation methods and fields.
   void ComputeDominators(GrowableArray<BitVector*>* dominance_frontier);
@@ -420,7 +426,21 @@
   void RenameRecursive(BlockEntryInstr* block_entry,
                        GrowableArray<Definition*>* env,
                        GrowableArray<PhiInstr*>* live_phis,
-                       VariableLivenessAnalysis* variable_liveness);
+                       VariableLivenessAnalysis* variable_liveness,
+                       ZoneGrowableArray<Definition*>* inlining_parameters);
+
+  void PopulateEnvironmentFromFunctionEntry(
+      FunctionEntryInstr* function_entry,
+      GrowableArray<Definition*>* env,
+      GrowableArray<PhiInstr*>* live_phis,
+      VariableLivenessAnalysis* variable_liveness,
+      ZoneGrowableArray<Definition*>* inlining_parameters);
+
+  void PopulateEnvironmentFromOsrEntry(OsrEntryInstr* osr_entry,
+                                       GrowableArray<Definition*>* env);
+
+  void PopulateEnvironmentFromCatchEntry(CatchBlockEntryInstr* catch_entry,
+                                         GrowableArray<Definition*>* env);
 
   void AttachEnvironment(Instruction* instr, GrowableArray<Definition*>* env);
 
@@ -434,12 +454,15 @@
   void ReplacePredecessor(BlockEntryInstr* old_block,
                           BlockEntryInstr* new_block);
 
-  // Find the natural loop for the back edge m->n and attach loop
-  // information to block n (loop header). The algorithm is described in
-  // "Advanced Compiler Design & Implementation" (Muchnick) p192.
-  // Returns a BitVector indexed by block pre-order number where each bit
-  // indicates membership in the loop.
-  BitVector* FindLoop(BlockEntryInstr* m, BlockEntryInstr* n) const;
+  // Finds the blocks in the natural loop for the back edge m->n. The
+  // algorithm is described in "Advanced Compiler Design & Implementation"
+  // (Muchnick) p192. Returns a BitVector indexed by block pre-order
+  // number where each bit indicates membership in the loop.
+  BitVector* FindLoopBlocks(BlockEntryInstr* m, BlockEntryInstr* n) const;
+
+  // Finds the natural loops in the flow graph and attaches the loop
+  // information to each entry block. Returns the loop hierarchy.
+  LoopHierarchy* ComputeLoops() const;
 
   void InsertConversionsFor(Definition* def);
   void ConvertUse(Value* use, Representation from);
@@ -490,8 +513,10 @@
 
   const PrologueInfo prologue_info_;
 
-  ZoneGrowableArray<BlockEntryInstr*>* loop_headers_;
+  // Loop related fields.
+  LoopHierarchy* loop_hierarchy_;
   ZoneGrowableArray<BitVector*>* loop_invariant_loads_;
+
   ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes_;
   ZoneGrowableArray<TokenPosition>* await_token_positions_;
   DirectChainedHashMap<ConstantPoolTrait> constant_instr_pool_;
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.cc b/runtime/vm/compiler/backend/flow_graph_compiler.cc
index d5ce4e7..6d25b3e 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.cc
@@ -13,6 +13,7 @@
 #include "vm/compiler/backend/inliner.h"
 #include "vm/compiler/backend/linearscan.h"
 #include "vm/compiler/backend/locations.h"
+#include "vm/compiler/backend/loops.h"
 #include "vm/compiler/cha.h"
 #include "vm/compiler/intrinsifier.h"
 #include "vm/compiler/jit/compiler.h"
@@ -273,7 +274,8 @@
   return !block->IsCatchBlockEntry() && !block->HasNonRedundantParallelMove() &&
          block->next()->IsGoto() &&
          !block->next()->AsGoto()->HasNonRedundantParallelMove() &&
-         !block->IsIndirectEntry() && !flow_graph().IsEntryPoint(block);
+         !block->IsIndirectEntry() && !block->IsFunctionEntry() &&
+         !block->IsOsrEntry();
 }
 
 void FlowGraphCompiler::CompactBlock(BlockEntryInstr* block) {
@@ -323,10 +325,14 @@
 }
 
 intptr_t FlowGraphCompiler::UncheckedEntryOffset() const {
-  TargetEntryInstr* entry = flow_graph().graph_entry()->unchecked_entry();
+  BlockEntryInstr* entry = flow_graph().graph_entry()->unchecked_entry();
   if (entry == nullptr) {
     entry = flow_graph().graph_entry()->normal_entry();
   }
+  if (entry == nullptr) {
+    entry = flow_graph().graph_entry()->osr_entry();
+  }
+  ASSERT(entry != nullptr);
   Label* target = GetJumpLabel(entry);
 
   if (target->IsBound()) {
@@ -414,11 +420,8 @@
                                               intptr_t try_index) {
 #if defined(DART_PRECOMPILER)
   env = env ? env : pending_deoptimization_env_;
-  try_index = try_index != CatchClauseNode::kInvalidTryIndex
-                  ? try_index
-                  : CurrentTryIndex();
-  if (is_optimizing() && env != nullptr &&
-      (try_index != CatchClauseNode::kInvalidTryIndex)) {
+  try_index = try_index != kInvalidTryIndex ? try_index : CurrentTryIndex();
+  if (is_optimizing() && env != nullptr && (try_index != kInvalidTryIndex)) {
     env = env->Outermost();
     CatchBlockEntryInstr* catch_block =
         flow_graph().graph_entry()->GetCatchEntry(try_index);
@@ -511,29 +514,11 @@
                        line.ToCString());
 }
 
-static void LoopInfoComment(
-    Assembler* assembler,
-    const BlockEntryInstr& block,
-    const ZoneGrowableArray<BlockEntryInstr*>& loop_headers) {
-  if (Assembler::EmittingComments()) {
-    for (intptr_t loop_id = 0; loop_id < loop_headers.length(); ++loop_id) {
-      for (BitVector::Iterator loop_it(loop_headers[loop_id]->loop_info());
-           !loop_it.Done(); loop_it.Advance()) {
-        if (loop_it.Current() == block.preorder_number()) {
-          assembler->Comment("  Loop %" Pd "", loop_id);
-        }
-      }
-    }
-  }
-}
-
 void FlowGraphCompiler::VisitBlocks() {
   CompactBlocks();
-  const ZoneGrowableArray<BlockEntryInstr*>* loop_headers = NULL;
   if (Assembler::EmittingComments()) {
-    // 'loop_headers' were cleared, recompute.
-    loop_headers = flow_graph().ComputeLoops();
-    ASSERT(loop_headers != NULL);
+    // The loop_info fields were cleared, recompute.
+    flow_graph().ComputeLoops();
   }
 
   for (intptr_t i = 0; i < block_order().length(); ++i) {
@@ -552,7 +537,11 @@
     }
 #endif
 
-    LoopInfoComment(assembler(), *entry, *loop_headers);
+    if (Assembler::EmittingComments()) {
+      for (LoopInfo* l = entry->loop_info(); l != nullptr; l = l->outer()) {
+        assembler()->Comment("  Loop %" Pd "", l->id());
+      }
+    }
 
     entry->set_offset(assembler()->CodeSize());
     BeginCodeSourceRange();
@@ -978,12 +967,6 @@
   const ExceptionHandlers& handlers = ExceptionHandlers::Handle(
       exception_handlers_list_->FinalizeExceptionHandlers(code.PayloadStart()));
   code.set_exception_handlers(handlers);
-  if (FLAG_compiler_stats) {
-    Thread* thread = Thread::Current();
-    INC_STAT(thread, total_code_size,
-             ExceptionHandlers::InstanceSize(handlers.num_entries()));
-    INC_STAT(thread, total_code_size, handlers.num_entries() * sizeof(uword));
-  }
 }
 
 void FlowGraphCompiler::FinalizePcDescriptors(const Code& code) {
@@ -1099,20 +1082,15 @@
     }
   }
   code.set_static_calls_target_table(targets);
-  INC_STAT(Thread::Current(), total_code_size,
-           targets.Length() * sizeof(uword));
 }
 
 void FlowGraphCompiler::FinalizeCodeSourceMap(const Code& code) {
   const Array& inlined_id_array =
       Array::Handle(zone(), code_source_map_builder_->InliningIdToFunction());
-  INC_STAT(Thread::Current(), total_code_size,
-           inlined_id_array.Length() * sizeof(uword));
   code.set_inlined_id_to_function(inlined_id_array);
 
   const CodeSourceMap& map =
       CodeSourceMap::Handle(code_source_map_builder_->Finalize());
-  INC_STAT(Thread::Current(), total_code_size, map.Length() * sizeof(uint8_t));
   code.set_code_source_map(map);
 
 #if defined(DEBUG)
@@ -1137,35 +1115,57 @@
     // Though for implicit getters, which have only the receiver as parameter,
     // there are no checks necessary in any case and we can therefore intrinsify
     // them even in checked mode and strong mode.
-    if (parsed_function().function().kind() == RawFunction::kImplicitGetter) {
-      const Field& field = Field::Handle(function().accessor_field());
-      ASSERT(!field.IsNull());
-
-      // Only intrinsify getter if the field cannot contain a mutable double.
-      // Reading from a mutable double box requires allocating a fresh double.
-      if (field.is_instance() &&
-          (FLAG_precompiled_mode || !IsPotentialUnboxedField(field))) {
-        SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics);
-        GenerateInlinedGetter(field.Offset());
-        SpecialStatsEnd(CombinedCodeStatistics::kTagIntrinsics);
-        return !isolate()->use_field_guards();
-      }
-      return false;
-    } else if (parsed_function().function().kind() ==
-               RawFunction::kImplicitSetter) {
-      if (!isolate()->argument_type_checks()) {
+    switch (parsed_function().function().kind()) {
+      case RawFunction::kImplicitGetter: {
         const Field& field = Field::Handle(function().accessor_field());
         ASSERT(!field.IsNull());
 
+        // Only intrinsify getter if the field cannot contain a mutable double.
+        // Reading from a mutable double box requires allocating a fresh double.
         if (field.is_instance() &&
-            (FLAG_precompiled_mode || field.guarded_cid() == kDynamicCid)) {
+            (FLAG_precompiled_mode || !IsPotentialUnboxedField(field))) {
           SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics);
-          GenerateInlinedSetter(field.Offset());
+          GenerateGetterIntrinsic(field.Offset());
           SpecialStatsEnd(CombinedCodeStatistics::kTagIntrinsics);
           return !isolate()->use_field_guards();
         }
         return false;
       }
+      case RawFunction::kImplicitSetter: {
+        if (!isolate()->argument_type_checks()) {
+          const Field& field = Field::Handle(function().accessor_field());
+          ASSERT(!field.IsNull());
+
+          if (field.is_instance() &&
+              (FLAG_precompiled_mode || field.guarded_cid() == kDynamicCid)) {
+            SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics);
+            GenerateSetterIntrinsic(field.Offset());
+            SpecialStatsEnd(CombinedCodeStatistics::kTagIntrinsics);
+            return !isolate()->use_field_guards();
+          }
+          return false;
+        }
+        break;
+      }
+#if !defined(TARGET_ARCH_DBC) && !defined(TARGET_ARCH_IA32)
+      case RawFunction::kMethodExtractor: {
+        auto& extracted_method = Function::ZoneHandle(
+            parsed_function().function().extracted_method_closure());
+        auto& klass = Class::Handle(extracted_method.Owner());
+        const intptr_t type_arguments_field_offset =
+            klass.NumTypeArguments() > 0
+                ? (klass.type_arguments_field_offset() - kHeapObjectTag)
+                : 0;
+
+        SpecialStatsBegin(CombinedCodeStatistics::kTagIntrinsics);
+        GenerateMethodExtractorIntrinsic(extracted_method,
+                                         type_arguments_field_offset);
+        SpecialStatsEnd(CombinedCodeStatistics::kTagIntrinsics);
+        return true;
+      }
+#endif  // !defined(TARGET_ARCH_DBC) && !defined(TARGET_ARCH_IA32)
+      default:
+        break;
     }
   }
 
@@ -1261,7 +1261,7 @@
     const Array& arguments_descriptor =
         Array::Handle(ic_data_in.arguments_descriptor());
     EmitMegamorphicInstanceCall(name, arguments_descriptor, deopt_id, token_pos,
-                                locs, CatchClauseNode::kInvalidTryIndex);
+                                locs, kInvalidTryIndex);
     return;
   }
 
@@ -1358,11 +1358,11 @@
 
 #if !defined(TARGET_ARCH_DBC)
 // TODO(vegorov) enable edge-counters on DBC if we consider them beneficial.
-bool FlowGraphCompiler::NeedsEdgeCounter(TargetEntryInstr* block) {
+bool FlowGraphCompiler::NeedsEdgeCounter(BlockEntryInstr* block) {
   // Only emit an edge counter if there is not goto at the end of the block,
   // except for the entry block.
-  return FLAG_reorder_basic_blocks && (!block->last_instruction()->IsGoto() ||
-                                       flow_graph().IsEntryPoint(block));
+  return FLAG_reorder_basic_blocks &&
+         (!block->last_instruction()->IsGoto() || block->IsFunctionEntry());
 }
 
 // Allocate a register that is not explictly blocked.
@@ -2009,7 +2009,7 @@
     __ Bind(&next_test);
   }
   if (add_megamorphic_call) {
-    int try_index = CatchClauseNode::kInvalidTryIndex;
+    int try_index = kInvalidTryIndex;
     EmitMegamorphicInstanceCall(function_name, arguments_descriptor, deopt_id,
                                 token_index, locs, try_index);
   }
@@ -2268,8 +2268,8 @@
                           instruction()->token_pos(), try_index_);
   AddMetadataForRuntimeCall(compiler);
   compiler->RecordSafepoint(locs, num_args_);
-  if ((try_index_ != CatchClauseNode::kInvalidTryIndex) ||
-      (compiler->CurrentTryIndex() != CatchClauseNode::kInvalidTryIndex)) {
+  if ((try_index_ != kInvalidTryIndex) ||
+      (compiler->CurrentTryIndex() != kInvalidTryIndex)) {
     Environment* env =
         compiler->SlowPathEnvironmentFor(instruction(), num_args_);
     compiler->RecordCatchEntryMoves(env, try_index_);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler.h b/runtime/vm/compiler/backend/flow_graph_compiler.h
index 1df8a26..4c84b7b 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler.h
+++ b/runtime/vm/compiler/backend/flow_graph_compiler.h
@@ -589,13 +589,12 @@
                                       TokenPosition token_pos,
                                       intptr_t deopt_id);
 
-  bool NeedsEdgeCounter(TargetEntryInstr* block);
+  bool NeedsEdgeCounter(BlockEntryInstr* block);
 
   void EmitEdgeCounter(intptr_t edge_id);
 #endif  // !defined(TARGET_ARCH_DBC)
-  void RecordCatchEntryMoves(
-      Environment* env = NULL,
-      intptr_t try_index = CatchClauseNode::kInvalidTryIndex);
+  void RecordCatchEntryMoves(Environment* env = NULL,
+                             intptr_t try_index = kInvalidTryIndex);
 
   void EmitCallsiteMetadata(TokenPosition token_pos,
                             intptr_t deopt_id,
@@ -689,7 +688,7 @@
 
   intptr_t CurrentTryIndex() const {
     if (current_block_ == NULL) {
-      return CatchClauseNode::kInvalidTryIndex;
+      return kInvalidTryIndex;
     }
     return current_block_->try_index();
   }
@@ -873,10 +872,14 @@
       Label* is_not_instance_lbl);
 
   void GenerateBoolToJump(Register bool_reg, Label* is_true, Label* is_false);
+
+  void GenerateMethodExtractorIntrinsic(const Function& extracted_method,
+                                        intptr_t type_arguments_field_offset);
+
 #endif  // !defined(TARGET_ARCH_DBC)
 
-  void GenerateInlinedGetter(intptr_t offset);
-  void GenerateInlinedSetter(intptr_t offset);
+  void GenerateGetterIntrinsic(intptr_t offset);
+  void GenerateSetterIntrinsic(intptr_t offset);
 
   // Perform a greedy local register allocation.  Consider all registers free.
   void AllocateRegistersLocally(Instruction* instr);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
index 031d45d..b6a070f 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm.cc
@@ -7,7 +7,6 @@
 
 #include "vm/compiler/backend/flow_graph_compiler.h"
 
-#include "vm/ast_printer.h"
 #include "vm/compiler/backend/il_printer.h"
 #include "vm/compiler/backend/locations.h"
 #include "vm/compiler/jit/compiler.h"
@@ -789,7 +788,38 @@
   }
 }
 
-void FlowGraphCompiler::GenerateInlinedGetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateMethodExtractorIntrinsic(
+    const Function& extracted_method,
+    intptr_t type_arguments_field_offset) {
+  // No frame has been setup here.
+  ASSERT(!__ constant_pool_allowed());
+  ASSERT(extracted_method.IsZoneHandle());
+
+  const Code& build_method_extractor = Code::ZoneHandle(
+      isolate()->object_store()->build_method_extractor_code());
+
+  const intptr_t stub_index = __ object_pool_wrapper().AddObject(
+      build_method_extractor, ObjectPool::Patchability::kNotPatchable);
+  const intptr_t function_index = __ object_pool_wrapper().AddObject(
+      extracted_method, ObjectPool::Patchability::kNotPatchable);
+
+  // We use a custom pool register to preserve caller PP.
+  const Register kPoolReg = R0;
+
+  // R1 = extracted function
+  // R4 = offset of type argument vector (or 0 if class is not generic)
+  __ LoadFieldFromOffset(kWord, kPoolReg, CODE_REG, Code::object_pool_offset());
+  __ LoadImmediate(R4, type_arguments_field_offset);
+  __ LoadFieldFromOffset(kWord, R1, kPoolReg,
+                         ObjectPool::element_offset(function_index));
+  __ LoadFieldFromOffset(kWord, CODE_REG, kPoolReg,
+                         ObjectPool::element_offset(stub_index));
+  __ LoadFieldFromOffset(kWord, R3, CODE_REG,
+                         Code::entry_point_offset(Code::EntryKind::kUnchecked));
+  __ bx(R3);
+}
+
+void FlowGraphCompiler::GenerateGetterIntrinsic(intptr_t offset) {
   // LR: return address.
   // SP: receiver.
   // Sequence node has one return node, its input is load field node.
@@ -799,7 +829,7 @@
   __ Ret();
 }
 
-void FlowGraphCompiler::GenerateInlinedSetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
   // LR: return address.
   // SP+1: receiver.
   // SP+0: value.
@@ -1052,7 +1082,7 @@
   if (FLAG_precompiled_mode) {
     // Megamorphic calls may occur in slow path stubs.
     // If valid use try_index argument.
-    if (try_index == CatchClauseNode::kInvalidTryIndex) {
+    if (try_index == kInvalidTryIndex) {
       try_index = CurrentTryIndex();
     }
     AddDescriptor(RawPcDescriptors::kOther, assembler()->CodeSize(),
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
index dae6ac5..eb23398 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc
@@ -7,7 +7,6 @@
 
 #include "vm/compiler/backend/flow_graph_compiler.h"
 
-#include "vm/ast_printer.h"
 #include "vm/compiler/backend/il_printer.h"
 #include "vm/compiler/backend/locations.h"
 #include "vm/compiler/jit/compiler.h"
@@ -769,7 +768,39 @@
   }
 }
 
-void FlowGraphCompiler::GenerateInlinedGetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateMethodExtractorIntrinsic(
+    const Function& extracted_method,
+    intptr_t type_arguments_field_offset) {
+  // No frame has been setup here.
+  ASSERT(!__ constant_pool_allowed());
+  ASSERT(extracted_method.IsZoneHandle());
+
+  const Code& build_method_extractor = Code::ZoneHandle(
+      isolate()->object_store()->build_method_extractor_code());
+
+  const intptr_t stub_index = __ object_pool_wrapper().AddObject(
+      build_method_extractor, ObjectPool::Patchability::kNotPatchable);
+  const intptr_t function_index = __ object_pool_wrapper().AddObject(
+      extracted_method, ObjectPool::Patchability::kNotPatchable);
+
+  // We use a custom pool register to preserve caller PP.
+  const Register kPoolReg = R0;
+
+  // R1 = extracted function
+  // R4 = offset of type argument vector (or 0 if class is not generic)
+  __ ldr(kPoolReg, FieldAddress(CODE_REG, Code::object_pool_offset()));
+  __ LoadFieldFromOffset(kPoolReg, CODE_REG, Code::object_pool_offset());
+  __ LoadImmediate(R4, type_arguments_field_offset);
+  __ LoadFieldFromOffset(R1, kPoolReg,
+                         ObjectPool::element_offset(function_index));
+  __ LoadFieldFromOffset(CODE_REG, kPoolReg,
+                         ObjectPool::element_offset(stub_index));
+  __ LoadFieldFromOffset(R0, CODE_REG,
+                         Code::entry_point_offset(Code::EntryKind::kUnchecked));
+  __ br(R0);
+}
+
+void FlowGraphCompiler::GenerateGetterIntrinsic(intptr_t offset) {
   // LR: return address.
   // SP: receiver.
   // Sequence node has one return node, its input is load field node.
@@ -779,7 +810,7 @@
   __ ret();
 }
 
-void FlowGraphCompiler::GenerateInlinedSetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
   // LR: return address.
   // SP+1: receiver.
   // SP+0: value.
@@ -1025,7 +1056,7 @@
   if (FLAG_precompiled_mode) {
     // Megamorphic calls may occur in slow path stubs.
     // If valid use try_index argument.
-    if (try_index == CatchClauseNode::kInvalidTryIndex) {
+    if (try_index == kInvalidTryIndex) {
       try_index = CurrentTryIndex();
     }
     AddDescriptor(RawPcDescriptors::kOther, assembler()->CodeSize(),
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_dbc.cc b/runtime/vm/compiler/backend/flow_graph_compiler_dbc.cc
index 8dcebb4..009ecb9 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_dbc.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_dbc.cc
@@ -7,7 +7,6 @@
 
 #include "vm/compiler/backend/flow_graph_compiler.h"
 
-#include "vm/ast_printer.h"
 #include "vm/compiler/backend/il_printer.h"
 #include "vm/compiler/backend/locations.h"
 #include "vm/compiler/jit/compiler.h"
@@ -284,7 +283,7 @@
   }
 }
 
-void FlowGraphCompiler::GenerateInlinedGetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateGetterIntrinsic(intptr_t offset) {
   __ Move(0, -(1 + compiler_frame_layout.param_end_from_fp));
   ASSERT(offset % kWordSize == 0);
   if (Utils::IsInt(8, offset / kWordSize)) {
@@ -296,7 +295,7 @@
   __ Return(0);
 }
 
-void FlowGraphCompiler::GenerateInlinedSetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
   __ Move(0, -(2 + compiler_frame_layout.param_end_from_fp));
   __ Move(1, -(1 + compiler_frame_layout.param_end_from_fp));
   ASSERT(offset % kWordSize == 0);
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
index bfc712a..d8de557 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_ia32.cc
@@ -7,7 +7,6 @@
 
 #include "vm/compiler/backend/flow_graph_compiler.h"
 
-#include "vm/ast_printer.h"
 #include "vm/code_patcher.h"
 #include "vm/compiler/backend/il_printer.h"
 #include "vm/compiler/backend/locations.h"
@@ -748,7 +747,7 @@
   }
 }
 
-void FlowGraphCompiler::GenerateInlinedGetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateGetterIntrinsic(intptr_t offset) {
   // TOS: return address.
   // +1 : receiver.
   // Sequence node has one return node, its input is load field node.
@@ -758,7 +757,7 @@
   __ ret();
 }
 
-void FlowGraphCompiler::GenerateInlinedSetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
   // TOS: return address.
   // +1 : value
   // +2 : receiver.
diff --git a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
index 0e7bd3f..d3e58d8 100644
--- a/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
+++ b/runtime/vm/compiler/backend/flow_graph_compiler_x64.cc
@@ -7,7 +7,6 @@
 
 #include "vm/compiler/backend/flow_graph_compiler.h"
 
-#include "vm/ast_printer.h"
 #include "vm/compiler/backend/il_printer.h"
 #include "vm/compiler/backend/locations.h"
 #include "vm/compiler/jit/compiler.h"
@@ -762,8 +761,7 @@
   ASSERT((sub_type_cache_index + 1) == dst_name_index);
   ASSERT(__ constant_pool_allowed());
 
-  __ movq(subtype_cache_reg,
-          Address::AddressBaseImm32(PP, sub_type_cache_offset));
+  __ movq(subtype_cache_reg, Address(PP, sub_type_cache_offset));
   __ call(FieldAddress(RBX, AbstractType::type_test_stub_entry_point_offset()));
   EmitCallsiteMetadata(token_pos, deopt_id, RawPcDescriptors::kOther, locs);
   __ Bind(&done);
@@ -787,7 +785,37 @@
   }
 }
 
-void FlowGraphCompiler::GenerateInlinedGetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateMethodExtractorIntrinsic(
+    const Function& extracted_method,
+    intptr_t type_arguments_field_offset) {
+  // No frame has been setup here.
+  ASSERT(!__ constant_pool_allowed());
+  ASSERT(extracted_method.IsZoneHandle());
+
+  const Code& build_method_extractor = Code::ZoneHandle(
+      isolate()->object_store()->build_method_extractor_code());
+
+  const intptr_t stub_index = __ object_pool_wrapper().AddObject(
+      build_method_extractor, ObjectPool::Patchability::kNotPatchable);
+  const intptr_t function_index = __ object_pool_wrapper().AddObject(
+      extracted_method, ObjectPool::Patchability::kNotPatchable);
+
+  // We use a custom pool register to preserve caller PP.
+  const Register kPoolReg = RAX;
+
+  // RBX = extracted function
+  // RDX = offset of type argument vector (or 0 if class is not generic)
+  __ movq(kPoolReg, FieldAddress(CODE_REG, Code::object_pool_offset()));
+  __ movq(RDX, Immediate(type_arguments_field_offset));
+  __ movq(RBX,
+          FieldAddress(kPoolReg, ObjectPool::element_offset(function_index)));
+  __ movq(CODE_REG,
+          FieldAddress(kPoolReg, ObjectPool::element_offset(stub_index)));
+  __ jmp(FieldAddress(CODE_REG,
+                      Code::entry_point_offset(Code::EntryKind::kUnchecked)));
+}
+
+void FlowGraphCompiler::GenerateGetterIntrinsic(intptr_t offset) {
   // TOS: return address.
   // +1 : receiver.
   // Sequence node has one return node, its input is load field node.
@@ -797,7 +825,7 @@
   __ ret();
 }
 
-void FlowGraphCompiler::GenerateInlinedSetter(intptr_t offset) {
+void FlowGraphCompiler::GenerateSetterIntrinsic(intptr_t offset) {
   // TOS: return address.
   // +1 : value
   // +2 : receiver.
@@ -1046,7 +1074,7 @@
   if (FLAG_precompiled_mode) {
     // Megamorphic calls may occur in slow path stubs.
     // If valid use try_index argument.
-    if (try_index == CatchClauseNode::kInvalidTryIndex) {
+    if (try_index == kInvalidTryIndex) {
       try_index = CurrentTryIndex();
     }
     AddDescriptor(RawPcDescriptors::kOther, assembler()->CodeSize(),
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 9a8878c..9688cae 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -13,6 +13,7 @@
 #include "vm/compiler/backend/flow_graph_compiler.h"
 #include "vm/compiler/backend/linearscan.h"
 #include "vm/compiler/backend/locations.h"
+#include "vm/compiler/backend/loops.h"
 #include "vm/compiler/backend/range_analysis.h"
 #include "vm/compiler/frontend/flow_graph_builder.h"
 #include "vm/compiler/jit/compiler.h"
@@ -1021,8 +1022,7 @@
       constant_address_(0) {
   if (representation_ == kUnboxedDouble) {
     ASSERT(value.IsDouble());
-    constant_address_ =
-        FlowGraphBuilder::FindDoubleConstant(Double::Cast(value).value());
+    constant_address_ = FindDoubleConstant(Double::Cast(value).value());
   }
 }
 
@@ -1045,25 +1045,22 @@
 }
 
 GraphEntryInstr::GraphEntryInstr(const ParsedFunction& parsed_function,
-                                 TargetEntryInstr* normal_entry,
                                  intptr_t osr_id)
-    : BlockEntryInstr(0,
-                      CatchClauseNode::kInvalidTryIndex,
-                      CompilerState::Current().GetNextDeoptId()),
+    : BlockEntryWithInitialDefs(0,
+                                kInvalidTryIndex,
+                                CompilerState::Current().GetNextDeoptId()),
       parsed_function_(parsed_function),
-      normal_entry_(normal_entry),
       catch_entries_(),
       indirect_entries_(),
-      initial_definitions_(),
       osr_id_(osr_id),
       entry_count_(0),
       spill_slot_count_(0),
       fixed_slot_count_(0) {}
 
 ConstantInstr* GraphEntryInstr::constant_null() {
-  ASSERT(initial_definitions_.length() > 0);
-  for (intptr_t i = 0; i < initial_definitions_.length(); ++i) {
-    ConstantInstr* defn = initial_definitions_[i]->AsConstant();
+  ASSERT(initial_definitions()->length() > 0);
+  for (intptr_t i = 0; i < initial_definitions()->length(); ++i) {
+    ConstantInstr* defn = (*initial_definitions())[i]->AsConstant();
     if (defn != NULL && defn->value().IsNull()) return defn;
   }
   UNREACHABLE();
@@ -1551,10 +1548,21 @@
       // we can simply jump to the beginning of the block.
       ASSERT(instr->previous() == this);
 
-      GotoInstr* goto_join = new GotoInstr(
-          AsJoinEntry(), CompilerState::Current().GetNextDeoptId());
+      auto normal_entry = graph_entry->normal_entry();
+      auto osr_entry = new OsrEntryInstr(graph_entry, normal_entry->block_id(),
+                                         normal_entry->try_index(),
+                                         normal_entry->deopt_id());
+
+      auto goto_join = new GotoInstr(AsJoinEntry(),
+                                     CompilerState::Current().GetNextDeoptId());
       goto_join->CopyDeoptIdFrom(*parent);
-      graph_entry->normal_entry()->LinkTo(goto_join);
+      osr_entry->LinkTo(goto_join);
+
+      // Remove normal function entries & add osr entry.
+      graph_entry->set_normal_entry(nullptr);
+      graph_entry->set_unchecked_entry(nullptr);
+      graph_entry->set_osr_entry(osr_entry);
+
       return true;
     }
   }
@@ -1588,6 +1596,10 @@
   return NULL;
 }
 
+bool BlockEntryInstr::IsLoopHeader() const {
+  return loop_info_ != nullptr && loop_info_->header() == this;
+}
+
 // Helper to mutate the graph during inlining. This block should be
 // replaced with new_block as a predecessor of all of this block's
 // successors.  For each successor, the predecessors will be reordered
@@ -1735,16 +1747,25 @@
 }
 
 intptr_t GraphEntryInstr::SuccessorCount() const {
-  return 1 + (unchecked_entry() == nullptr ? 0 : 1) + catch_entries_.length();
+  return (normal_entry() == nullptr ? 0 : 1) +
+         (unchecked_entry() == nullptr ? 0 : 1) +
+         (osr_entry() == nullptr ? 0 : 1) + catch_entries_.length();
 }
 
 BlockEntryInstr* GraphEntryInstr::SuccessorAt(intptr_t index) const {
-  if (index == 0) return normal_entry_;
-  if (unchecked_entry() != nullptr) {
-    if (index == 1) return unchecked_entry();
-    return catch_entries_[index - 2];
+  if (normal_entry() != nullptr) {
+    if (index == 0) return normal_entry_;
+    index--;
   }
-  return catch_entries_[index - 1];
+  if (unchecked_entry() != nullptr) {
+    if (index == 0) return unchecked_entry();
+    index--;
+  }
+  if (osr_entry() != nullptr) {
+    if (index == 0) return osr_entry();
+    index--;
+  }
+  return catch_entries_[index];
 }
 
 intptr_t BranchInstr::SuccessorCount() const {
@@ -3644,24 +3665,57 @@
 void TargetEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
   __ Bind(compiler->GetJumpLabel(this));
 
+  // TODO(kusterman): Remove duplicate between
+  // {TargetEntryInstr,FunctionEntryInstr}::EmitNativeCode.
+  if (!compiler->is_optimizing()) {
+#if !defined(TARGET_ARCH_DBC)
+    // TODO(vegorov) re-enable edge counters on DBC if we consider them
+    // beneficial for the quality of the optimized bytecode.
+    if (compiler->NeedsEdgeCounter(this)) {
+      compiler->EmitEdgeCounter(preorder_number());
+    }
+#endif
+
+    // The deoptimization descriptor points after the edge counter code for
+    // uniformity with ARM, where we can reuse pattern matching code that
+    // matches backwards from the end of the pattern.
+    compiler->AddCurrentDescriptor(RawPcDescriptors::kDeopt, GetDeoptId(),
+                                   TokenPosition::kNoSource);
+  }
+  if (HasParallelMove()) {
+    if (Assembler::EmittingComments()) {
+      compiler->EmitComment(parallel_move());
+    }
+    compiler->parallel_move_resolver()->EmitNativeCode(parallel_move());
+  }
+}
+
+LocationSummary* FunctionEntryInstr::MakeLocationSummary(
+    Zone* zone,
+    bool optimizing) const {
+  UNREACHABLE();
+  return NULL;
+}
+
+void FunctionEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
+  __ Bind(compiler->GetJumpLabel(this));
+
   // In the AOT compiler we want to reduce code size, so generate no
   // fall-through code in [FlowGraphCompiler::CompileGraph()].
   // (As opposed to here where we don't check for the return value of
   // [Intrinsify]).
   if (!FLAG_precompiled_mode) {
 #if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_ARM)
-    if (compiler->flow_graph().IsEntryPoint(this)) {
-      // NOTE: Because in JIT X64/ARM mode the graph can have multiple
-      // entrypoints, so we generate several times the same intrinsification &
-      // frame setup.  That's why we cannot rely on the constant pool being
-      // `false` when we come in here.
-      __ set_constant_pool_allowed(false);
-      // TODO(#34162): Don't emit more code if 'TryIntrinsify' returns 'true'
-      // (meaning the function was fully intrinsified).
-      compiler->TryIntrinsify();
-      compiler->EmitPrologue();
-      ASSERT(__ constant_pool_allowed());
-    }
+    // NOTE: Because in JIT X64/ARM mode the graph can have multiple
+    // entrypoints, so we generate several times the same intrinsification &
+    // frame setup.  That's why we cannot rely on the constant pool being
+    // `false` when we come in here.
+    __ set_constant_pool_allowed(false);
+    // TODO(#34162): Don't emit more code if 'TryIntrinsify' returns 'true'
+    // (meaning the function was fully intrinsified).
+    compiler->TryIntrinsify();
+    compiler->EmitPrologue();
+    ASSERT(__ constant_pool_allowed());
 #endif
   }
 
@@ -3688,6 +3742,35 @@
   }
 }
 
+LocationSummary* OsrEntryInstr::MakeLocationSummary(Zone* zone,
+                                                    bool optimizing) const {
+  UNREACHABLE();
+  return NULL;
+}
+
+void OsrEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
+  ASSERT(!FLAG_precompiled_mode);
+  ASSERT(compiler->is_optimizing());
+  __ Bind(compiler->GetJumpLabel(this));
+
+#if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_ARM)
+  // NOTE: Because in JIT X64/ARM mode the graph can have multiple
+  // entrypoints, so we generate several times the same intrinsification &
+  // frame setup.  That's why we cannot rely on the constant pool being
+  // `false` when we come in here.
+  __ set_constant_pool_allowed(false);
+  compiler->EmitPrologue();
+  ASSERT(__ constant_pool_allowed());
+#endif
+
+  if (HasParallelMove()) {
+    if (Assembler::EmittingComments()) {
+      compiler->EmitComment(parallel_move());
+    }
+    compiler->parallel_move_resolver()->EmitNativeCode(parallel_move());
+  }
+}
+
 void IndirectGotoInstr::ComputeOffsetTable() {
   if (GetBlock()->offset() < 0) {
     // Don't generate a table when contained in an unreachable block.
diff --git a/runtime/vm/compiler/backend/il.h b/runtime/vm/compiler/backend/il.h
index b30532f..33d1434 100644
--- a/runtime/vm/compiler/backend/il.h
+++ b/runtime/vm/compiler/backend/il.h
@@ -6,12 +6,13 @@
 #define RUNTIME_VM_COMPILER_BACKEND_IL_H_
 
 #include "vm/allocation.h"
-#include "vm/ast.h"
+#include "vm/code_descriptors.h"
 #include "vm/compiler/backend/locations.h"
 #include "vm/compiler/compiler_state.h"
 #include "vm/compiler/method_recognizer.h"
 #include "vm/flags.h"
 #include "vm/growable_array.h"
+#include "vm/native_entry.h"
 #include "vm/object.h"
 #include "vm/parser.h"
 #include "vm/token_position.h"
@@ -20,6 +21,7 @@
 
 class BitVector;
 class BlockEntryInstr;
+class BlockEntryWithInitialDefs;
 class BoxIntegerInstr;
 class BufferFormatter;
 class CallTargets;
@@ -32,6 +34,7 @@
 class FlowGraphVisitor;
 class Instruction;
 class LocalVariable;
+class LoopInfo;
 class ParsedFunction;
 class Range;
 class RangeAnalysis;
@@ -482,6 +485,8 @@
   M(GraphEntry, kNoGC)                                                         \
   M(JoinEntry, kNoGC)                                                          \
   M(TargetEntry, kNoGC)                                                        \
+  M(FunctionEntry, kNoGC)                                                      \
+  M(OsrEntry, kNoGC)                                                           \
   M(IndirectEntry, kNoGC)                                                      \
   M(CatchBlockEntry, kNoGC)                                                    \
   M(Phi, kNoGC)                                                                \
@@ -901,6 +906,8 @@
   DECLARE_INSTRUCTION_TYPE_CHECK(Name, Name##Instr)
 
   DECLARE_INSTRUCTION_TYPE_CHECK(Definition, Definition)
+  DECLARE_INSTRUCTION_TYPE_CHECK(BlockEntryWithInitialDefs,
+                                 BlockEntryWithInitialDefs)
   FOR_EACH_INSTRUCTION(INSTRUCTION_TYPE_CHECK)
   FOR_EACH_ABSTRACT_INSTRUCTION(INSTRUCTION_TYPE_CHECK)
 
@@ -1281,6 +1288,7 @@
   }
 
   void AddDominatedBlock(BlockEntryInstr* block) {
+    ASSERT(!block->IsFunctionEntry() || this->IsGraphEntry());
     block->set_dominator(this);
     dominated_blocks_.Add(block);
   }
@@ -1346,12 +1354,12 @@
   void set_try_index(intptr_t index) { try_index_ = index; }
 
   // True for blocks inside a try { } region.
-  bool InsideTryBlock() const {
-    return try_index_ != CatchClauseNode::kInvalidTryIndex;
-  }
+  bool InsideTryBlock() const { return try_index_ != kInvalidTryIndex; }
 
-  BitVector* loop_info() const { return loop_info_; }
-  void set_loop_info(BitVector* loop_info) { loop_info_ = loop_info; }
+  // Loop related methods.
+  LoopInfo* loop_info() const { return loop_info_; }
+  void set_loop_info(LoopInfo* loop_info) { loop_info_ = loop_info; }
+  bool IsLoopHeader() const;
 
   virtual BlockEntryInstr* GetBlock() { return this; }
 
@@ -1382,12 +1390,12 @@
         try_index_(try_index),
         preorder_number_(-1),
         postorder_number_(-1),
-        dominator_(NULL),
+        dominator_(nullptr),
         dominated_blocks_(1),
         last_instruction_(NULL),
         offset_(-1),
-        parallel_move_(NULL),
-        loop_info_(NULL) {}
+        parallel_move_(nullptr),
+        loop_info_(nullptr) {}
 
   // Perform a depth first search to find OSR entry and
   // link it to the given graph entry.
@@ -1423,9 +1431,8 @@
   // connect live ranges at the start of the block.
   ParallelMoveInstr* parallel_move_;
 
-  // Bit vector containing loop blocks for a loop header indexed by block
-  // preorder number.
-  BitVector* loop_info_;
+  // Closest enveloping loop in loop hierarchy (nullptr at nesting depth 0).
+  LoopInfo* loop_info_;
 
   DISALLOW_COPY_AND_ASSIGN(BlockEntryInstr);
 };
@@ -1476,10 +1483,37 @@
   Instruction* current_;
 };
 
-class GraphEntryInstr : public BlockEntryInstr {
+// Base class shared by all block entries which define initial definitions.
+//
+// The initial definitions define parameters, special parameters and constants.
+class BlockEntryWithInitialDefs : public BlockEntryInstr {
+ public:
+  BlockEntryWithInitialDefs(intptr_t block_id,
+                            intptr_t try_index,
+                            intptr_t deopt_id)
+      : BlockEntryInstr(block_id, try_index, deopt_id) {}
+
+  GrowableArray<Definition*>* initial_definitions() {
+    return &initial_definitions_;
+  }
+
+  virtual bool IsBlockEntryWithInitialDefs() { return true; }
+  virtual BlockEntryWithInitialDefs* AsBlockEntryWithInitialDefs() {
+    return this;
+  }
+
+ protected:
+  void PrintInitialDefinitionsTo(BufferFormatter* f) const;
+
+ private:
+  GrowableArray<Definition*> initial_definitions_;
+
+  DISALLOW_COPY_AND_ASSIGN(BlockEntryWithInitialDefs);
+};
+
+class GraphEntryInstr : public BlockEntryWithInitialDefs {
  public:
   GraphEntryInstr(const ParsedFunction& parsed_function,
-                  TargetEntryInstr* normal_entry,
                   intptr_t osr_id);
 
   DECLARE_INSTRUCTION(GraphEntry)
@@ -1500,9 +1534,6 @@
     indirect_entries_.Add(entry);
   }
 
-  GrowableArray<Definition*>* initial_definitions() {
-    return &initial_definitions_;
-  }
   ConstantInstr* constant_null();
 
   void RelinkToOsrEntry(Zone* zone, intptr_t max_block_id);
@@ -1526,12 +1557,14 @@
     ASSERT(count >= 0);
     fixed_slot_count_ = count;
   }
-  TargetEntryInstr* normal_entry() const { return normal_entry_; }
-  TargetEntryInstr* unchecked_entry() const { return unchecked_entry_; }
-  void set_normal_entry(TargetEntryInstr* entry) { normal_entry_ = entry; }
-  void set_unchecked_entry(TargetEntryInstr* target) {
+  FunctionEntryInstr* normal_entry() const { return normal_entry_; }
+  FunctionEntryInstr* unchecked_entry() const { return unchecked_entry_; }
+  void set_normal_entry(FunctionEntryInstr* entry) { normal_entry_ = entry; }
+  void set_unchecked_entry(FunctionEntryInstr* target) {
     unchecked_entry_ = target;
   }
+  OsrEntryInstr* osr_entry() const { return osr_entry_; }
+  void set_osr_entry(OsrEntryInstr* entry) { osr_entry_ = entry; }
 
   const ParsedFunction& parsed_function() const { return parsed_function_; }
 
@@ -1543,13 +1576,6 @@
     return indirect_entries_;
   }
 
-  bool IsEntryPoint(BlockEntryInstr* entry) const {
-    if (TargetEntryInstr* target = entry->AsTargetEntry()) {
-      return target == normal_entry_ || target == unchecked_entry_;
-    }
-    return false;
-  }
-
   bool HasSingleEntryPoint() const {
     return catch_entries().is_empty() && unchecked_entry() == nullptr;
   }
@@ -1561,12 +1587,12 @@
   virtual void AddPredecessor(BlockEntryInstr* predecessor) { UNREACHABLE(); }
 
   const ParsedFunction& parsed_function_;
-  TargetEntryInstr* normal_entry_;
-  TargetEntryInstr* unchecked_entry_ = nullptr;
+  FunctionEntryInstr* normal_entry_ = nullptr;
+  FunctionEntryInstr* unchecked_entry_ = nullptr;
+  OsrEntryInstr* osr_entry_ = nullptr;
   GrowableArray<CatchBlockEntryInstr*> catch_entries_;
   // Indirect targets are blocks reachable only through indirect gotos.
   GrowableArray<IndirectEntryInstr*> indirect_entries_;
-  GrowableArray<Definition*> initial_definitions_;
   const intptr_t osr_id_;
   intptr_t entry_count_;
   intptr_t spill_slot_count_;
@@ -1680,6 +1706,88 @@
   DISALLOW_COPY_AND_ASSIGN(TargetEntryInstr);
 };
 
+// Represents an entrypoint to a function which callers can invoke (i.e. not
+// used for OSR entries).
+//
+// The flow graph builder might decide to create create multiple entrypoints
+// (e.g. checked/unchecked entrypoints) and will attach those to the
+// [GraphEntryInstr].
+//
+// Every entrypoint has it's own initial definitions.  The SSA renaming
+// will insert phi's for parameter instructions if necessary.
+class FunctionEntryInstr : public BlockEntryWithInitialDefs {
+ public:
+  FunctionEntryInstr(GraphEntryInstr* graph_entry,
+                     intptr_t block_id,
+                     intptr_t try_index,
+                     intptr_t deopt_id)
+      : BlockEntryWithInitialDefs(block_id, try_index, deopt_id),
+        graph_entry_(graph_entry) {}
+
+  DECLARE_INSTRUCTION(FunctionEntry)
+
+  virtual intptr_t PredecessorCount() const {
+    return (graph_entry_ == nullptr) ? 0 : 1;
+  }
+  virtual BlockEntryInstr* PredecessorAt(intptr_t index) const {
+    ASSERT(index == 0 && graph_entry_ != nullptr);
+    return graph_entry_;
+  }
+
+  GraphEntryInstr* graph_entry() const { return graph_entry_; }
+
+  PRINT_TO_SUPPORT
+
+ private:
+  virtual void ClearPredecessors() { graph_entry_ = nullptr; }
+  virtual void AddPredecessor(BlockEntryInstr* predecessor) {
+    ASSERT(graph_entry_ == nullptr && predecessor->IsGraphEntry());
+    graph_entry_ = predecessor->AsGraphEntry();
+  }
+
+  GraphEntryInstr* graph_entry_;
+
+  DISALLOW_COPY_AND_ASSIGN(FunctionEntryInstr);
+};
+
+// Represents an OSR entrypoint to a function.
+//
+// The OSR entry has it's own initial definitions.
+class OsrEntryInstr : public BlockEntryWithInitialDefs {
+ public:
+  OsrEntryInstr(GraphEntryInstr* graph_entry,
+                intptr_t block_id,
+                intptr_t try_index,
+                intptr_t deopt_id)
+      : BlockEntryWithInitialDefs(block_id, try_index, deopt_id),
+        graph_entry_(graph_entry) {}
+
+  DECLARE_INSTRUCTION(OsrEntry)
+
+  virtual intptr_t PredecessorCount() const {
+    return (graph_entry_ == nullptr) ? 0 : 1;
+  }
+  virtual BlockEntryInstr* PredecessorAt(intptr_t index) const {
+    ASSERT(index == 0 && graph_entry_ != nullptr);
+    return graph_entry_;
+  }
+
+  GraphEntryInstr* graph_entry() const { return graph_entry_; }
+
+  PRINT_TO_SUPPORT
+
+ private:
+  virtual void ClearPredecessors() { graph_entry_ = nullptr; }
+  virtual void AddPredecessor(BlockEntryInstr* predecessor) {
+    ASSERT(graph_entry_ == nullptr && predecessor->IsGraphEntry());
+    graph_entry_ = predecessor->AsGraphEntry();
+  }
+
+  GraphEntryInstr* graph_entry_;
+
+  DISALLOW_COPY_AND_ASSIGN(OsrEntryInstr);
+};
+
 class IndirectEntryInstr : public JoinEntryInstr {
  public:
   IndirectEntryInstr(intptr_t block_id,
@@ -1699,7 +1807,7 @@
   const intptr_t indirect_id_;
 };
 
-class CatchBlockEntryInstr : public BlockEntryInstr {
+class CatchBlockEntryInstr : public BlockEntryWithInitialDefs {
  public:
   CatchBlockEntryInstr(TokenPosition handler_token_pos,
                        bool is_generated,
@@ -1714,7 +1822,7 @@
                        const LocalVariable* stacktrace_var,
                        const LocalVariable* raw_exception_var,
                        const LocalVariable* raw_stacktrace_var)
-      : BlockEntryInstr(block_id, try_index, deopt_id),
+      : BlockEntryWithInitialDefs(block_id, try_index, deopt_id),
         graph_entry_(graph_entry),
         predecessor_(NULL),
         catch_handler_types_(Array::ZoneHandle(handler_types.raw())),
@@ -1755,9 +1863,6 @@
   // Returns try index for the try block to which this catch handler
   // corresponds.
   intptr_t catch_try_index() const { return catch_try_index_; }
-  GrowableArray<Definition*>* initial_definitions() {
-    return &initial_definitions_;
-  }
 
   PRINT_TO_SUPPORT
 
@@ -2281,7 +2386,7 @@
   DISALLOW_COPY_AND_ASSIGN(LoadIndexedUnsafeInstr);
 };
 
-// Unwinds the current frame and taill calls a target.
+// Unwinds the current frame and tail calls a target.
 //
 // The return address saved by the original caller of this frame will be in it's
 // usual location (stack or LR).  The arguments descriptor supplied by the
@@ -2409,7 +2514,7 @@
 
 class ReThrowInstr : public TemplateInstruction<0, Throws> {
  public:
-  // 'catch_try_index' can be CatchClauseNode::kInvalidTryIndex if the
+  // 'catch_try_index' can be kInvalidTryIndex if the
   // rethrow has been artificially generated by the parser.
   ReThrowInstr(TokenPosition token_pos,
                intptr_t catch_try_index,
@@ -3198,22 +3303,6 @@
 class ClosureCallInstr : public TemplateDartCall<1> {
  public:
   ClosureCallInstr(Value* function,
-                   ClosureCallNode* node,
-                   PushArgumentsArray* arguments,
-                   intptr_t deopt_id,
-                   Code::EntryKind entry_kind = Code::EntryKind::kNormal)
-      : TemplateDartCall(deopt_id,
-                         node->arguments()->type_args_len(),
-                         node->arguments()->names(),
-                         arguments,
-                         node->token_pos()),
-        entry_kind_(entry_kind) {
-    ASSERT(entry_kind != Code::EntryKind::kMonomorphic);
-    ASSERT(!arguments->is_empty());
-    SetInputAt(0, function);
-  }
-
-  ClosureCallInstr(Value* function,
                    PushArgumentsArray* arguments,
                    intptr_t type_args_len,
                    const Array& argument_names,
diff --git a/runtime/vm/compiler/backend/il_arm.cc b/runtime/vm/compiler/backend/il_arm.cc
index eaff0db..05dc2cd 100644
--- a/runtime/vm/compiler/backend/il_arm.cc
+++ b/runtime/vm/compiler/backend/il_arm.cc
@@ -6559,8 +6559,11 @@
 }
 
 void GraphEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  if (!compiler->CanFallThroughTo(normal_entry())) {
-    __ b(compiler->GetJumpLabel(normal_entry()));
+  BlockEntryInstr* entry = normal_entry();
+  if (entry == nullptr) entry = osr_entry();
+
+  if (!compiler->CanFallThroughTo(entry)) {
+    __ b(compiler->GetJumpLabel(entry));
   }
 }
 
diff --git a/runtime/vm/compiler/backend/il_arm64.cc b/runtime/vm/compiler/backend/il_arm64.cc
index 456bf79..4240758 100644
--- a/runtime/vm/compiler/backend/il_arm64.cc
+++ b/runtime/vm/compiler/backend/il_arm64.cc
@@ -5822,8 +5822,11 @@
 }
 
 void GraphEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  if (!compiler->CanFallThroughTo(normal_entry())) {
-    __ b(compiler->GetJumpLabel(normal_entry()));
+  BlockEntryInstr* entry = normal_entry();
+  if (entry == nullptr) entry = osr_entry();
+
+  if (!compiler->CanFallThroughTo(entry)) {
+    __ b(compiler->GetJumpLabel(entry));
   }
 }
 
diff --git a/runtime/vm/compiler/backend/il_dbc.cc b/runtime/vm/compiler/backend/il_dbc.cc
index 61f92fc..71c3db4 100644
--- a/runtime/vm/compiler/backend/il_dbc.cc
+++ b/runtime/vm/compiler/backend/il_dbc.cc
@@ -1270,8 +1270,11 @@
 }
 
 void GraphEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  if (!compiler->CanFallThroughTo(normal_entry())) {
-    __ Jump(compiler->GetJumpLabel(normal_entry()));
+  BlockEntryInstr* entry = normal_entry();
+  if (entry == nullptr) entry = osr_entry();
+
+  if (!compiler->CanFallThroughTo(entry)) {
+    __ Jump(compiler->GetJumpLabel(entry));
   }
 }
 
diff --git a/runtime/vm/compiler/backend/il_ia32.cc b/runtime/vm/compiler/backend/il_ia32.cc
index a0b36d6..182ddd3 100644
--- a/runtime/vm/compiler/backend/il_ia32.cc
+++ b/runtime/vm/compiler/backend/il_ia32.cc
@@ -197,7 +197,7 @@
     }
   } else if (destination.IsFpuRegister()) {
     const double value_as_double = Double::Cast(value_).value();
-    uword addr = FlowGraphBuilder::FindDoubleConstant(value_as_double);
+    uword addr = FindDoubleConstant(value_as_double);
     if (addr == 0) {
       __ pushl(EAX);
       __ LoadObject(EAX, value_);
@@ -211,7 +211,7 @@
     }
   } else if (destination.IsDoubleStackSlot()) {
     const double value_as_double = Double::Cast(value_).value();
-    uword addr = FlowGraphBuilder::FindDoubleConstant(value_as_double);
+    uword addr = FindDoubleConstant(value_as_double);
     if (addr == 0) {
       __ pushl(EAX);
       __ LoadObject(EAX, value_);
@@ -5926,8 +5926,11 @@
 }
 
 void GraphEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  if (!compiler->CanFallThroughTo(normal_entry())) {
-    __ jmp(compiler->GetJumpLabel(normal_entry()));
+  BlockEntryInstr* entry = normal_entry();
+  if (entry == nullptr) entry = osr_entry();
+
+  if (!compiler->CanFallThroughTo(entry)) {
+    __ jmp(compiler->GetJumpLabel(entry));
   }
 }
 
diff --git a/runtime/vm/compiler/backend/il_printer.cc b/runtime/vm/compiler/backend/il_printer.cc
index 233b45d..d18ee6f 100644
--- a/runtime/vm/compiler/backend/il_printer.cc
+++ b/runtime/vm/compiler/backend/il_printer.cc
@@ -586,6 +586,10 @@
   if (entry_kind() == Code::EntryKind::kUnchecked) {
     f->Print(", using unchecked entrypoint");
   }
+  if (function().recognized_kind() != MethodRecognizer::kUnknown) {
+    f->Print(", recognized_kind = %s",
+             MethodRecognizer::KindToCString(function().recognized_kind()));
+  }
 }
 
 void LoadLocalInstr::PrintOperandsTo(BufferFormatter* f) const {
@@ -848,9 +852,9 @@
   Definition::PrintOperandsTo(f);
 }
 
-void GraphEntryInstr::PrintTo(BufferFormatter* f) const {
+void BlockEntryWithInitialDefs::PrintInitialDefinitionsTo(
+    BufferFormatter* f) const {
   const GrowableArray<Definition*>& defns = initial_definitions_;
-  f->Print("B%" Pd "[graph]:%" Pd, block_id(), GetDeoptId());
   if (defns.length() > 0) {
     f->Print(" {");
     for (intptr_t i = 0; i < defns.length(); ++i) {
@@ -862,8 +866,13 @@
   }
 }
 
+void GraphEntryInstr::PrintTo(BufferFormatter* f) const {
+  f->Print("B%" Pd "[graph]:%" Pd, block_id(), GetDeoptId());
+  BlockEntryWithInitialDefs::PrintInitialDefinitionsTo(f);
+}
+
 void JoinEntryInstr::PrintTo(BufferFormatter* f) const {
-  if (try_index() != CatchClauseNode::kInvalidTryIndex) {
+  if (try_index() != kInvalidTryIndex) {
     f->Print("B%" Pd "[join try_idx %" Pd "]:%" Pd " pred(", block_id(),
              try_index(), GetDeoptId());
   } else {
@@ -890,7 +899,7 @@
 }
 
 void IndirectEntryInstr::PrintTo(BufferFormatter* f) const {
-  ASSERT(try_index() == CatchClauseNode::kInvalidTryIndex);
+  ASSERT(try_index() == kInvalidTryIndex);
   f->Print("B%" Pd "[join indirect]:%" Pd " pred(", block_id(), GetDeoptId());
   for (intptr_t i = 0; i < predecessors_.length(); ++i) {
     if (i > 0) f->Print(", ");
@@ -912,7 +921,7 @@
   }
 }
 
-static const char* RepresentationToCString(Representation rep) {
+const char* RepresentationToCString(Representation rep) {
   switch (rep) {
     case kTagged:
       return "tagged";
@@ -1007,7 +1016,7 @@
 }
 
 void TargetEntryInstr::PrintTo(BufferFormatter* f) const {
-  if (try_index() != CatchClauseNode::kInvalidTryIndex) {
+  if (try_index() != kInvalidTryIndex) {
     f->Print("B%" Pd "[target try_idx %" Pd "]:%" Pd, block_id(), try_index(),
              GetDeoptId());
   } else {
@@ -1019,6 +1028,24 @@
   }
 }
 
+void OsrEntryInstr::PrintTo(BufferFormatter* f) const {
+  f->Print("B%" Pd "[osr entry]:%" Pd, block_id(), GetDeoptId());
+  if (HasParallelMove()) {
+    f->Print("\n");
+    parallel_move()->PrintTo(f);
+  }
+  BlockEntryWithInitialDefs::PrintInitialDefinitionsTo(f);
+}
+
+void FunctionEntryInstr::PrintTo(BufferFormatter* f) const {
+  f->Print("B%" Pd "[function entry]:%" Pd, block_id(), GetDeoptId());
+  if (HasParallelMove()) {
+    f->Print("\n");
+    parallel_move()->PrintTo(f);
+  }
+  BlockEntryWithInitialDefs::PrintInitialDefinitionsTo(f);
+}
+
 void CatchBlockEntryInstr::PrintTo(BufferFormatter* f) const {
   f->Print("B%" Pd "[target catch try_idx %" Pd " catch_try_idx %" Pd "]",
            block_id(), try_index(), catch_try_index());
@@ -1027,16 +1054,7 @@
     parallel_move()->PrintTo(f);
   }
 
-  const GrowableArray<Definition*>& defns = initial_definitions_;
-  if (defns.length() > 0) {
-    f->Print(" {");
-    for (intptr_t i = 0; i < defns.length(); ++i) {
-      Definition* def = defns[i];
-      f->Print("\n      ");
-      def->PrintTo(f);
-    }
-    f->Print("\n}");
-  }
+  BlockEntryWithInitialDefs::PrintInitialDefinitionsTo(f);
 }
 
 void LoadIndexedUnsafeInstr::PrintOperandsTo(BufferFormatter* f) const {
@@ -1063,7 +1081,9 @@
                  .ToFullyQualifiedCString();
     }
   }
-  f->Print("%s", name);
+  f->Print("%s(", name);
+  InputAt(0)->PrintTo(f);
+  f->Print(")");
 }
 
 void PushArgumentInstr::PrintOperandsTo(BufferFormatter* f) const {
diff --git a/runtime/vm/compiler/backend/il_printer.h b/runtime/vm/compiler/backend/il_printer.h
index 56cbd20..32cc84a 100644
--- a/runtime/vm/compiler/backend/il_printer.h
+++ b/runtime/vm/compiler/backend/il_printer.h
@@ -13,6 +13,8 @@
 
 class ParsedFunction;
 
+const char* RepresentationToCString(Representation rep);
+
 // Graph printing.
 class FlowGraphPrinter : public ValueObject {
  public:
diff --git a/runtime/vm/compiler/backend/il_test.cc b/runtime/vm/compiler/backend/il_test.cc
index bf20fb6..9c3f88c 100644
--- a/runtime/vm/compiler/backend/il_test.cc
+++ b/runtime/vm/compiler/backend/il_test.cc
@@ -8,8 +8,8 @@
 namespace dart {
 
 TEST_CASE(InstructionTests) {
-  TargetEntryInstr* target_instr = new TargetEntryInstr(
-      1, CatchClauseNode::kInvalidTryIndex, DeoptId::kNone);
+  TargetEntryInstr* target_instr =
+      new TargetEntryInstr(1, kInvalidTryIndex, DeoptId::kNone);
   EXPECT(target_instr->IsBlockEntry());
   EXPECT(!target_instr->IsDefinition());
   SpecialParameterInstr* context = new SpecialParameterInstr(
@@ -21,7 +21,7 @@
 
 TEST_CASE(OptimizationTests) {
   JoinEntryInstr* join =
-      new JoinEntryInstr(1, CatchClauseNode::kInvalidTryIndex, DeoptId::kNone);
+      new JoinEntryInstr(1, kInvalidTryIndex, DeoptId::kNone);
 
   Definition* def1 = new PhiInstr(join, 0);
   Definition* def2 = new PhiInstr(join, 0);
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index 687ecd0..4f02fbd 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -6130,8 +6130,11 @@
 }
 
 void GraphEntryInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
-  if (!compiler->CanFallThroughTo(normal_entry())) {
-    __ jmp(compiler->GetJumpLabel(normal_entry()));
+  BlockEntryInstr* entry = normal_entry();
+  if (entry == nullptr) entry = osr_entry();
+
+  if (!compiler->CanFallThroughTo(entry)) {
+    __ jmp(compiler->GetJumpLabel(entry));
   }
 }
 
diff --git a/runtime/vm/compiler/backend/inliner.cc b/runtime/vm/compiler/backend/inliner.cc
index 804441e..bdbf35a 100644
--- a/runtime/vm/compiler/backend/inliner.cc
+++ b/runtime/vm/compiler/backend/inliner.cc
@@ -23,7 +23,6 @@
 #include "vm/longjump.h"
 #include "vm/object.h"
 #include "vm/object_store.h"
-#include "vm/timer.h"
 
 namespace dart {
 
@@ -94,7 +93,6 @@
             false,
             "Enable inlining annotations");
 
-DECLARE_FLAG(bool, compiler_stats);
 DECLARE_FLAG(int, max_deoptimization_counter_threshold);
 DECLARE_FLAG(bool, print_flow_graph);
 DECLARE_FLAG(bool, print_flow_graph_optimized);
@@ -560,11 +558,10 @@
                                   FlowGraph* caller_graph,
                                   InlinedCallData* call_data,
                                   const TargetInfo* target_info) {
-  CSTAT_TIMER_SCOPE(Thread::Current(), graphinliner_subst_timer);
   const bool is_polymorphic = call_data->call->IsPolymorphicInstanceCall();
   ASSERT(is_polymorphic == (target_info != NULL));
   FlowGraph* callee_graph = call_data->callee_graph;
-  TargetEntryInstr* callee_entry = callee_graph->graph_entry()->normal_entry();
+  auto callee_entry = callee_graph->graph_entry()->normal_entry();
 
   // Replace each stub with the actual argument or the caller's constant.
   // Nulls denote optional parameters for which no actual was given.
@@ -605,15 +602,23 @@
 
   // Replace remaining constants with uses by constants in the caller's
   // initial definitions.
-  GrowableArray<Definition*>* defns =
-      callee_graph->graph_entry()->initial_definitions();
+  auto defns = callee_graph->graph_entry()->initial_definitions();
   for (intptr_t i = 0; i < defns->length(); ++i) {
     ConstantInstr* constant = (*defns)[i]->AsConstant();
-    if ((constant != NULL) && constant->HasUses()) {
+    if (constant != NULL && constant->HasUses()) {
       constant->ReplaceUsesWith(caller_graph->GetConstant(constant->value()));
     }
+  }
+
+  defns = callee_graph->graph_entry()->normal_entry()->initial_definitions();
+  for (intptr_t i = 0; i < defns->length(); ++i) {
+    ConstantInstr* constant = (*defns)[i]->AsConstant();
+    if (constant != NULL && constant->HasUses()) {
+      constant->ReplaceUsesWith(caller_graph->GetConstant(constant->value()));
+    }
+
     SpecialParameterInstr* param = (*defns)[i]->AsSpecialParameter();
-    if ((param != NULL) && param->HasUses()) {
+    if (param != NULL && param->HasUses()) {
       switch (param->kind()) {
         case SpecialParameterInstr::kContext: {
           ASSERT(!is_polymorphic);
@@ -944,7 +949,6 @@
         bool in_cache;
         ParsedFunction* parsed_function;
         {
-          CSTAT_TIMER_SCOPE(thread(), graphinliner_parse_timer);
           parsed_function = GetParsedFunction(function, &in_cache);
           if (!function.CanBeInlined()) {
             // As a side effect of parsing the function, it may be marked
@@ -977,7 +981,6 @@
             caller_graph_->max_block_id() + 1,
             entry_kind == Code::EntryKind::kUnchecked);
         {
-          CSTAT_TIMER_SCOPE(thread(), graphinliner_build_timer);
           callee_graph = builder.BuildGraph();
 
           CalleeGraphValidator::Validate(callee_graph);
@@ -1061,7 +1064,6 @@
         block_scheduler.AssignEdgeWeights();
 
         {
-          CSTAT_TIMER_SCOPE(thread(), graphinliner_ssa_timer);
           // Compute SSA on the callee graph, catching bailouts.
           callee_graph->ComputeSSA(caller_graph_->max_virtual_register_number(),
                                    param_stubs);
@@ -1077,7 +1079,6 @@
         }
 
         {
-          CSTAT_TIMER_SCOPE(thread(), graphinliner_opt_timer);
           // TODO(fschneider): Improve suppression of speculative inlining.
           // Deopt-ids overlap between caller and callee.
           if (FLAG_precompiled_mode) {
@@ -1313,14 +1314,13 @@
   }
 
   void InlineCall(InlinedCallData* call_data) {
-    CSTAT_TIMER_SCOPE(Thread::Current(), graphinliner_subst_timer);
     FlowGraph* callee_graph = call_data->callee_graph;
-    TargetEntryInstr* callee_entry =
-        callee_graph->graph_entry()->normal_entry();
+    auto callee_function_entry = callee_graph->graph_entry()->normal_entry();
+
     // Plug result in the caller graph.
     InlineExitCollector* exit_collector = call_data->exit_collector;
     exit_collector->PrepareGraphs(callee_graph);
-    exit_collector->ReplaceCall(callee_entry);
+    exit_collector->ReplaceCall(callee_function_entry);
 
     ReplaceParameterStubs(zone(), caller_graph_, call_data, NULL);
 
@@ -1639,8 +1639,9 @@
       // variant and the shared join for all later variants.
       if (inlined_entries_[i]->IsGraphEntry()) {
         // Convert the old target entry to a new join entry.
-        TargetEntryInstr* old_target =
-            inlined_entries_[i]->AsGraphEntry()->normal_entry();
+        auto old_entry = inlined_entries_[i]->AsGraphEntry()->normal_entry();
+        BlockEntryInstr* old_target = old_entry;
+
         // Unuse all inputs in the old graph entry since it is not part of
         // the graph anymore. A new target be created instead.
         inlined_entries_[i]->AsGraphEntry()->UnuseAllInputs();
@@ -1733,7 +1734,11 @@
 
 bool PolymorphicInliner::TryInlineRecognizedMethod(intptr_t receiver_cid,
                                                    const Function& target) {
-  TargetEntryInstr* entry = nullptr;
+  auto temp_parsed_function = new (Z) ParsedFunction(Thread::Current(), target);
+  auto graph_entry =
+      new (Z) GraphEntryInstr(*temp_parsed_function, Compiler::kNoOSRDeoptId);
+
+  FunctionEntryInstr* entry = nullptr;
   Instruction* last = nullptr;
   // Replace the receiver argument with a redefinition to prevent code from
   // the inlined body from being hoisted above the inlined entry.
@@ -1746,8 +1751,9 @@
   if (FlowGraphInliner::TryInlineRecognizedMethod(
           owner_->caller_graph(), receiver_cid, target, call_, redefinition,
           call_->instance_call()->token_pos(),
-          call_->instance_call()->ic_data(), &entry, &last,
+          call_->instance_call()->ic_data(), graph_entry, &entry, &last,
           owner_->inliner_->speculative_policy())) {
+    graph_entry->set_normal_entry(entry);
     ASSERT(last->IsDefinition());
     // Create a graph fragment.
     redefinition->InsertAfter(entry);
@@ -1762,10 +1768,7 @@
         FlowGraph::kEffect);
     entry->set_last_instruction(result);
     exit_collector->AddExit(result);
-    ParsedFunction* temp_parsed_function =
-        new ParsedFunction(Thread::Current(), target);
-    GraphEntryInstr* graph_entry = new (Z)
-        GraphEntryInstr(*temp_parsed_function, entry, Compiler::kNoOSRDeoptId);
+
     // Update polymorphic inliner state.
     inlined_entries_.Add(graph_entry);
     exit_collector_->Union(exit_collector);
@@ -1831,7 +1834,7 @@
       if (callee_entry->IsGraphEntry()) {
         // Unshared.  Graft the normal entry on after the check class
         // instruction.
-        TargetEntryInstr* target = callee_entry->AsGraphEntry()->normal_entry();
+        auto target = callee_entry->AsGraphEntry()->normal_entry();
         cursor->LinkTo(target->next());
         target->ReplaceAsPredecessorWith(current_block);
         // Unuse all inputs of the graph entry and the normal entry. They are
@@ -1920,10 +1923,21 @@
       TargetEntryInstr* true_target = NULL;
       if (callee_entry->IsGraphEntry()) {
         // Unshared.
-        true_target = callee_entry->AsGraphEntry()->normal_entry();
+        auto graph_entry = callee_entry->AsGraphEntry();
+        auto function_entry = graph_entry->normal_entry();
+
+        true_target = BranchSimplifier::ToTargetEntry(zone(), function_entry);
+        function_entry->ReplaceAsPredecessorWith(true_target);
+        for (intptr_t j = 0; j < function_entry->dominated_blocks().length();
+             ++j) {
+          BlockEntryInstr* block = function_entry->dominated_blocks()[j];
+          true_target->AddDominatedBlock(block);
+        }
+
         // Unuse all inputs of the graph entry. It is not in the graph anymore.
-        callee_entry->UnuseAllInputs();
+        graph_entry->UnuseAllInputs();
       } else if (callee_entry->IsTargetEntry()) {
+        ASSERT(!callee_entry->IsFunctionEntry());
         // Shared inlined body and this is the first entry.  We have already
         // constructed a join and this target jumps to it.
         true_target = callee_entry->AsTargetEntry();
@@ -2183,7 +2197,12 @@
     return true;
   }
 
-  if (function.IsDispatcherOrImplicitAccessor()) {
+  // We don't want to inline DIFs for recognized methods because we would rather
+  // replace them with inline FG before inlining introduces any superfluous
+  // AssertAssignable instructions.
+  if (function.IsDispatcherOrImplicitAccessor() &&
+      !(function.kind() == RawFunction::kDynamicInvocationForwarder &&
+        function.IsRecognized())) {
     // Smaller or same size as the call.
     return true;
   }
@@ -2338,7 +2357,8 @@
                              MethodRecognizer::Kind kind,
                              Instruction* call,
                              Definition* receiver,
-                             TargetEntryInstr** entry,
+                             GraphEntryInstr* graph_entry,
+                             FunctionEntryInstr** entry,
                              Instruction** last,
                              bool can_speculate) {
   intptr_t array_cid = MethodRecognizer::MethodKindToReceiverCid(kind);
@@ -2346,8 +2366,8 @@
   Definition* array = receiver;
   Definition* index = call->ArgumentAt(1);
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
 
@@ -2388,7 +2408,8 @@
                              TokenPosition token_pos,
                              const Cids* value_check,
                              FlowGraphInliner::ExactnessInfo* exactness,
-                             TargetEntryInstr** entry,
+                             GraphEntryInstr* graph_entry,
+                             FunctionEntryInstr** entry,
                              Instruction** last) {
   intptr_t array_cid = MethodRecognizer::MethodKindToReceiverCid(kind);
 
@@ -2397,8 +2418,8 @@
   Definition* stored_value = call->ArgumentAt(2);
 
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
   if (flow_graph->isolate()->argument_type_checks() &&
@@ -2531,7 +2552,8 @@
                            Token::Kind op_kind,
                            Instruction* call,
                            Definition* receiver,
-                           TargetEntryInstr** entry,
+                           GraphEntryInstr* graph_entry,
+                           FunctionEntryInstr** entry,
                            Instruction** last) {
   if (!CanUnboxDouble()) {
     return false;
@@ -2540,8 +2562,8 @@
   Definition* right = call->ArgumentAt(1);
 
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   // Arguments are checked. No need for class check.
   BinaryDoubleOpInstr* double_bin_op = new (Z)
@@ -2557,15 +2579,16 @@
                                Instruction* call,
                                Definition* receiver,
                                MethodRecognizer::Kind kind,
-                               TargetEntryInstr** entry,
+                               GraphEntryInstr* graph_entry,
+                               FunctionEntryInstr** entry,
                                Instruction** last) {
   if (!CanUnboxDouble()) {
     return false;
   }
 
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   // Arguments are checked. No need for class check.
 
@@ -2580,14 +2603,15 @@
 static bool InlineSmiBitAndFromSmi(FlowGraph* flow_graph,
                                    Instruction* call,
                                    Definition* receiver,
-                                   TargetEntryInstr** entry,
+                                   GraphEntryInstr* graph_entry,
+                                   FunctionEntryInstr** entry,
                                    Instruction** last) {
   Definition* left = receiver;
   Definition* right = call->ArgumentAt(1);
 
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   // Right arguments is known to be smi: other._bitAndFromSmi(this);
   BinarySmiOpInstr* smi_op =
@@ -2604,14 +2628,15 @@
                                       StoreBarrierType store_barrier_type,
                                       Instruction* call,
                                       Definition* receiver,
-                                      TargetEntryInstr** entry,
+                                      GraphEntryInstr* graph_entry,
+                                      FunctionEntryInstr** entry,
                                       Instruction** last) {
   Definition* array = receiver;
   Definition* value = call->ArgumentAt(1);
 
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
 
   // This is an internal method, no need to check argument types.
@@ -2751,7 +2776,8 @@
                                     Definition* receiver,
                                     intptr_t array_cid,
                                     intptr_t view_cid,
-                                    TargetEntryInstr** entry,
+                                    GraphEntryInstr* graph_entry,
+                                    FunctionEntryInstr** entry,
                                     Instruction** last) {
   ASSERT(array_cid != kIllegalCid);
 
@@ -2769,8 +2795,8 @@
   Definition* array = receiver;
   Definition* index = call->ArgumentAt(1);
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
 
@@ -2849,7 +2875,8 @@
                                      Definition* receiver,
                                      intptr_t array_cid,
                                      intptr_t view_cid,
-                                     TargetEntryInstr** entry,
+                                     GraphEntryInstr* graph_entry,
+                                     FunctionEntryInstr** entry,
                                      Instruction** last) {
   ASSERT(array_cid != kIllegalCid);
 
@@ -2867,8 +2894,8 @@
   Definition* array = receiver;
   Definition* index = call->ArgumentAt(1);
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
 
@@ -3081,7 +3108,8 @@
                                    Instruction* call,
                                    Definition* receiver,
                                    intptr_t cid,
-                                   TargetEntryInstr** entry,
+                                   GraphEntryInstr* graph_entry,
+                                   FunctionEntryInstr** entry,
                                    Instruction** last) {
   if ((cid != kOneByteStringCid) && (cid != kExternalOneByteStringCid)) {
     return false;
@@ -3090,8 +3118,8 @@
   Definition* index = call->ArgumentAt(1);
 
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
 
   *last = PrepareInlineStringIndexOp(flow_graph, call, cid, str, index, *entry);
@@ -3109,7 +3137,8 @@
                                    Instruction* call,
                                    Definition* receiver,
                                    intptr_t cid,
-                                   TargetEntryInstr** entry,
+                                   GraphEntryInstr* graph_entry,
+                                   FunctionEntryInstr** entry,
                                    Instruction** last) {
   if (cid == kDynamicCid) {
     ASSERT(call->IsStaticCall());
@@ -3122,8 +3151,8 @@
   Definition* index = call->ArgumentAt(1);
 
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
 
   *last = PrepareInlineStringIndexOp(flow_graph, call, cid, str, index, *entry);
@@ -3141,14 +3170,14 @@
   GrowableArray<intptr_t> class_ids;
   call->ic_data()->GetCheckAt(0, &class_ids, &target);
   const intptr_t receiver_cid = class_ids[0];
-  TargetEntryInstr* entry = nullptr;
+  FunctionEntryInstr* entry = nullptr;
   Instruction* last = nullptr;
   auto exactness = call->ic_data()->GetExactnessAt(0);
   ExactnessInfo exactness_info{exactness.IsExact(), false};
   if (FlowGraphInliner::TryInlineRecognizedMethod(
           flow_graph, receiver_cid, target, call,
           call->Receiver()->definition(), call->token_pos(), call->ic_data(),
-          &entry, &last, policy, &exactness_info)) {
+          /*graph_entry=*/nullptr, &entry, &last, policy, &exactness_info)) {
     // Determine if inlining instance methods needs a check.
     FlowGraph::ToCheck check = FlowGraph::ToCheck::kNoCheck;
     if (MethodRecognizer::PolymorphicTarget(target)) {
@@ -3220,7 +3249,7 @@
     ForwardInstructionIterator* iterator,
     StaticCallInstr* call,
     SpeculativeInliningPolicy* policy) {
-  TargetEntryInstr* entry = nullptr;
+  FunctionEntryInstr* entry = nullptr;
   Instruction* last = nullptr;
   Definition* receiver = nullptr;
   intptr_t receiver_cid = kIllegalCid;
@@ -3230,7 +3259,8 @@
   }
   if (FlowGraphInliner::TryInlineRecognizedMethod(
           flow_graph, receiver_cid, call->function(), call, receiver,
-          call->token_pos(), call->ic_data(), &entry, &last, policy)) {
+          call->token_pos(), call->ic_data(), /*graph_entry=*/nullptr, &entry,
+          &last, policy)) {
     // Remove the original push arguments.
     for (intptr_t i = 0; i < call->ArgumentCount(); ++i) {
       PushArgumentInstr* push = call->PushArgumentAt(i);
@@ -3300,14 +3330,15 @@
                          Instruction* call,
                          Definition* receiver,
                          MethodRecognizer::Kind kind,
-                         TargetEntryInstr** entry,
+                         GraphEntryInstr* graph_entry,
+                         FunctionEntryInstr** entry,
                          Instruction** last) {
   if (!ShouldInlineSimd()) {
     return false;
   }
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
   switch (kind) {
@@ -3369,14 +3400,15 @@
 static bool InlineMathCFunction(FlowGraph* flow_graph,
                                 Instruction* call,
                                 MethodRecognizer::Kind kind,
-                                TargetEntryInstr** entry,
+                                GraphEntryInstr* graph_entry,
+                                FunctionEntryInstr** entry,
                                 Instruction** last) {
   if (!CanUnboxDouble()) {
     return false;
   }
   *entry =
-      new (Z) TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+      new (Z) FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
   (*entry)->InheritDeoptTarget(Z, call);
   Instruction* cursor = *entry;
 
@@ -3416,7 +3448,8 @@
 
 static bool InlineMathIntPow(FlowGraph* flow_graph,
                              Instruction* call,
-                             TargetEntryInstr** entry,
+                             GraphEntryInstr* graph_entry,
+                             FunctionEntryInstr** entry,
                              Instruction** last) {
   // Invoking the _intPow(x, y) implies that both:
   // (1) x, y are int
@@ -3438,8 +3471,8 @@
     } else if (1 < val && val <= small_exponent) {
       // Lazily construct entry only in this case.
       *entry = new (Z)
-          TargetEntryInstr(flow_graph->allocate_block_id(),
-                           call->GetBlock()->try_index(), DeoptId::kNone);
+          FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                             call->GetBlock()->try_index(), DeoptId::kNone);
       (*entry)->InheritDeoptTarget(Z, call);
       Definition* x_def = x->definition();
       Definition* square =
@@ -3479,7 +3512,8 @@
     Definition* receiver,
     TokenPosition token_pos,
     const ICData* ic_data,
-    TargetEntryInstr** entry,
+    GraphEntryInstr* graph_entry,
+    FunctionEntryInstr** entry,
     Instruction** last,
     SpeculativeInliningPolicy* policy,
     FlowGraphInliner::ExactnessInfo* exactness) {
@@ -3499,36 +3533,36 @@
     case MethodRecognizer::kExternalUint8ClampedArrayGetIndexed:
     case MethodRecognizer::kInt16ArrayGetIndexed:
     case MethodRecognizer::kUint16ArrayGetIndexed:
-      return InlineGetIndexed(flow_graph, kind, call, receiver, entry, last,
-                              can_speculate);
+      return InlineGetIndexed(flow_graph, kind, call, receiver, graph_entry,
+                              entry, last, can_speculate);
     case MethodRecognizer::kFloat32ArrayGetIndexed:
     case MethodRecognizer::kFloat64ArrayGetIndexed:
       if (!CanUnboxDouble()) {
         return false;
       }
-      return InlineGetIndexed(flow_graph, kind, call, receiver, entry, last,
-                              can_speculate);
+      return InlineGetIndexed(flow_graph, kind, call, receiver, graph_entry,
+                              entry, last, can_speculate);
     case MethodRecognizer::kFloat32x4ArrayGetIndexed:
     case MethodRecognizer::kFloat64x2ArrayGetIndexed:
       if (!ShouldInlineSimd()) {
         return false;
       }
-      return InlineGetIndexed(flow_graph, kind, call, receiver, entry, last,
-                              can_speculate);
+      return InlineGetIndexed(flow_graph, kind, call, receiver, graph_entry,
+                              entry, last, can_speculate);
     case MethodRecognizer::kInt32ArrayGetIndexed:
     case MethodRecognizer::kUint32ArrayGetIndexed:
       if (!CanUnboxInt32()) {
         return false;
       }
-      return InlineGetIndexed(flow_graph, kind, call, receiver, entry, last,
-                              can_speculate);
+      return InlineGetIndexed(flow_graph, kind, call, receiver, graph_entry,
+                              entry, last, can_speculate);
     case MethodRecognizer::kInt64ArrayGetIndexed:
     case MethodRecognizer::kUint64ArrayGetIndexed:
       if (!ShouldInlineInt64ArrayOps()) {
         return false;
       }
-      return InlineGetIndexed(flow_graph, kind, call, receiver, entry, last,
-                              can_speculate);
+      return InlineGetIndexed(flow_graph, kind, call, receiver, graph_entry,
+                              entry, last, can_speculate);
     default:
       break;
   }
@@ -3546,7 +3580,7 @@
     case MethodRecognizer::kGrowableArraySetIndexedUnchecked:
       return InlineSetIndexed(flow_graph, kind, target, call, receiver,
                               token_pos, /* value_check = */ NULL, exactness,
-                              entry, last);
+                              graph_entry, entry, last);
     case MethodRecognizer::kInt8ArraySetIndexed:
     case MethodRecognizer::kUint8ArraySetIndexed:
     case MethodRecognizer::kUint8ClampedArraySetIndexed:
@@ -3561,7 +3595,8 @@
       }
       Cids* value_check = Cids::CreateMonomorphic(Z, kSmiCid);
       return InlineSetIndexed(flow_graph, kind, target, call, receiver,
-                              token_pos, value_check, exactness, entry, last);
+                              token_pos, value_check, exactness, graph_entry,
+                              entry, last);
     }
     case MethodRecognizer::kInt32ArraySetIndexed:
     case MethodRecognizer::kUint32ArraySetIndexed: {
@@ -3569,7 +3604,7 @@
       // implicitly contain unboxing instructions which check for right type.
       return InlineSetIndexed(flow_graph, kind, target, call, receiver,
                               token_pos, /* value_check = */ NULL, exactness,
-                              entry, last);
+                              graph_entry, entry, last);
     }
     case MethodRecognizer::kInt64ArraySetIndexed:
     case MethodRecognizer::kUint64ArraySetIndexed:
@@ -3578,7 +3613,7 @@
       }
       return InlineSetIndexed(flow_graph, kind, target, call, receiver,
                               token_pos, /* value_check = */ NULL, exactness,
-                              entry, last);
+                              graph_entry, entry, last);
     case MethodRecognizer::kFloat32ArraySetIndexed:
     case MethodRecognizer::kFloat64ArraySetIndexed: {
       if (!CanUnboxDouble()) {
@@ -3586,7 +3621,8 @@
       }
       Cids* value_check = Cids::CreateMonomorphic(Z, kDoubleCid);
       return InlineSetIndexed(flow_graph, kind, target, call, receiver,
-                              token_pos, value_check, exactness, entry, last);
+                              token_pos, value_check, exactness, graph_entry,
+                              entry, last);
     }
     case MethodRecognizer::kFloat32x4ArraySetIndexed: {
       if (!ShouldInlineSimd()) {
@@ -3594,7 +3630,8 @@
       }
       Cids* value_check = Cids::CreateMonomorphic(Z, kFloat32x4Cid);
       return InlineSetIndexed(flow_graph, kind, target, call, receiver,
-                              token_pos, value_check, exactness, entry, last);
+                              token_pos, value_check, exactness, graph_entry,
+                              entry, last);
     }
     case MethodRecognizer::kFloat64x2ArraySetIndexed: {
       if (!ShouldInlineSimd()) {
@@ -3602,158 +3639,172 @@
       }
       Cids* value_check = Cids::CreateMonomorphic(Z, kFloat64x2Cid);
       return InlineSetIndexed(flow_graph, kind, target, call, receiver,
-                              token_pos, value_check, exactness, entry, last);
+                              token_pos, value_check, exactness, graph_entry,
+                              entry, last);
     }
     case MethodRecognizer::kByteArrayBaseGetInt8:
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataInt8ArrayCid, entry, last);
+                                     kTypedDataInt8ArrayCid, graph_entry, entry,
+                                     last);
     case MethodRecognizer::kByteArrayBaseGetUint8:
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataUint8ArrayCid, entry, last);
+                                     kTypedDataUint8ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetInt16:
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataInt16ArrayCid, entry, last);
+                                     kTypedDataInt16ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetUint16:
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataUint16ArrayCid, entry, last);
+                                     kTypedDataUint16ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetInt32:
       if (!CanUnboxInt32()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataInt32ArrayCid, entry, last);
+                                     kTypedDataInt32ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetUint32:
       if (!CanUnboxInt32()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataUint32ArrayCid, entry, last);
+                                     kTypedDataUint32ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetInt64:
       if (!ShouldInlineInt64ArrayOps()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataInt64ArrayCid, entry, last);
+                                     kTypedDataInt64ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetUint64:
       if (!ShouldInlineInt64ArrayOps()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataUint64ArrayCid, entry, last);
+                                     kTypedDataUint64ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetFloat32:
       if (!CanUnboxDouble()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataFloat32ArrayCid, entry, last);
+                                     kTypedDataFloat32ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetFloat64:
       if (!CanUnboxDouble()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataFloat64ArrayCid, entry, last);
+                                     kTypedDataFloat64ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetFloat32x4:
       if (!ShouldInlineSimd()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataFloat32x4ArrayCid, entry, last);
+                                     kTypedDataFloat32x4ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseGetInt32x4:
       if (!ShouldInlineSimd()) {
         return false;
       }
       return InlineByteArrayBaseLoad(flow_graph, call, receiver, receiver_cid,
-                                     kTypedDataInt32x4ArrayCid, entry, last);
+                                     kTypedDataInt32x4ArrayCid, graph_entry,
+                                     entry, last);
     case MethodRecognizer::kByteArrayBaseSetInt8:
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataInt8ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetUint8:
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataUint8ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetInt16:
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataInt16ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetUint16:
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataUint16ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetInt32:
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataInt32ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetUint32:
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataUint32ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetInt64:
       if (!ShouldInlineInt64ArrayOps()) {
         return false;
       }
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataInt64ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetUint64:
       if (!ShouldInlineInt64ArrayOps()) {
         return false;
       }
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataUint64ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetFloat32:
       if (!CanUnboxDouble()) {
         return false;
       }
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataFloat32ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetFloat64:
       if (!CanUnboxDouble()) {
         return false;
       }
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataFloat64ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetFloat32x4:
       if (!ShouldInlineSimd()) {
         return false;
       }
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataFloat32x4ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kByteArrayBaseSetInt32x4:
       if (!ShouldInlineSimd()) {
         return false;
       }
       return InlineByteArrayBaseStore(flow_graph, target, call, receiver,
                                       receiver_cid, kTypedDataInt32x4ArrayCid,
-                                      entry, last);
+                                      graph_entry, entry, last);
     case MethodRecognizer::kOneByteStringCodeUnitAt:
     case MethodRecognizer::kTwoByteStringCodeUnitAt:
     case MethodRecognizer::kExternalOneByteStringCodeUnitAt:
     case MethodRecognizer::kExternalTwoByteStringCodeUnitAt:
       return InlineStringCodeUnitAt(flow_graph, call, receiver, receiver_cid,
-                                    entry, last);
+                                    graph_entry, entry, last);
     case MethodRecognizer::kStringBaseCharAt:
       return InlineStringBaseCharAt(flow_graph, call, receiver, receiver_cid,
-                                    entry, last);
+                                    graph_entry, entry, last);
     case MethodRecognizer::kDoubleAdd:
-      return InlineDoubleOp(flow_graph, Token::kADD, call, receiver, entry,
-                            last);
+      return InlineDoubleOp(flow_graph, Token::kADD, call, receiver,
+                            graph_entry, entry, last);
     case MethodRecognizer::kDoubleSub:
-      return InlineDoubleOp(flow_graph, Token::kSUB, call, receiver, entry,
-                            last);
+      return InlineDoubleOp(flow_graph, Token::kSUB, call, receiver,
+                            graph_entry, entry, last);
     case MethodRecognizer::kDoubleMul:
-      return InlineDoubleOp(flow_graph, Token::kMUL, call, receiver, entry,
-                            last);
+      return InlineDoubleOp(flow_graph, Token::kMUL, call, receiver,
+                            graph_entry, entry, last);
     case MethodRecognizer::kDoubleDiv:
-      return InlineDoubleOp(flow_graph, Token::kDIV, call, receiver, entry,
-                            last);
+      return InlineDoubleOp(flow_graph, Token::kDIV, call, receiver,
+                            graph_entry, entry, last);
     case MethodRecognizer::kDouble_getIsNaN:
     case MethodRecognizer::kDouble_getIsInfinite:
-      return InlineDoubleTestOp(flow_graph, call, receiver, kind, entry, last);
+      return InlineDoubleTestOp(flow_graph, call, receiver, kind, graph_entry,
+                                entry, last);
     case MethodRecognizer::kGrowableArraySetData:
       ASSERT((receiver_cid == kGrowableObjectArrayCid) ||
              ((receiver_cid == kDynamicCid) && call->IsStaticCall()));
@@ -3761,7 +3812,7 @@
              (ic_data == NULL || ic_data->NumberOfChecksIs(1)));
       return InlineGrowableArraySetter(
           flow_graph, GrowableObjectArray::data_offset(), kEmitStoreBarrier,
-          call, receiver, entry, last);
+          call, receiver, graph_entry, entry, last);
     case MethodRecognizer::kGrowableArraySetLength:
       ASSERT((receiver_cid == kGrowableObjectArrayCid) ||
              ((receiver_cid == kDynamicCid) && call->IsStaticCall()));
@@ -3769,9 +3820,10 @@
              (ic_data == NULL || ic_data->NumberOfChecksIs(1)));
       return InlineGrowableArraySetter(
           flow_graph, GrowableObjectArray::length_offset(), kNoStoreBarrier,
-          call, receiver, entry, last);
+          call, receiver, graph_entry, entry, last);
     case MethodRecognizer::kSmi_bitAndFromSmi:
-      return InlineSmiBitAndFromSmi(flow_graph, call, receiver, entry, last);
+      return InlineSmiBitAndFromSmi(flow_graph, call, receiver, graph_entry,
+                                    entry, last);
 
     case MethodRecognizer::kFloat32x4Abs:
     case MethodRecognizer::kFloat32x4Clamp:
@@ -3834,7 +3886,8 @@
     case MethodRecognizer::kInt32x4ShuffleMix:
     case MethodRecognizer::kFloat32x4Shuffle:
     case MethodRecognizer::kInt32x4Shuffle:
-      return InlineSimdOp(flow_graph, call, receiver, kind, entry, last);
+      return InlineSimdOp(flow_graph, call, receiver, kind, graph_entry, entry,
+                          last);
 
     case MethodRecognizer::kMathSqrt:
     case MethodRecognizer::kMathDoublePow:
@@ -3845,15 +3898,16 @@
     case MethodRecognizer::kMathAcos:
     case MethodRecognizer::kMathAtan:
     case MethodRecognizer::kMathAtan2:
-      return InlineMathCFunction(flow_graph, call, kind, entry, last);
+      return InlineMathCFunction(flow_graph, call, kind, graph_entry, entry,
+                                 last);
 
     case MethodRecognizer::kMathIntPow:
-      return InlineMathIntPow(flow_graph, call, entry, last);
+      return InlineMathIntPow(flow_graph, call, graph_entry, entry, last);
 
     case MethodRecognizer::kObjectConstructor: {
       *entry = new (Z)
-          TargetEntryInstr(flow_graph->allocate_block_id(),
-                           call->GetBlock()->try_index(), DeoptId::kNone);
+          FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                             call->GetBlock()->try_index(), DeoptId::kNone);
       (*entry)->InheritDeoptTarget(Z, call);
       ASSERT(!call->HasUses());
       *last = NULL;  // Empty body.
@@ -3870,8 +3924,8 @@
       const auto type = new (Z) Value(call->ArgumentAt(0));
       const auto num_elements = new (Z) Value(call->ArgumentAt(1));
       *entry = new (Z)
-          TargetEntryInstr(flow_graph->allocate_block_id(),
-                           call->GetBlock()->try_index(), DeoptId::kNone);
+          FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                             call->GetBlock()->try_index(), DeoptId::kNone);
       (*entry)->InheritDeoptTarget(Z, call);
       *last = new (Z) CreateArrayInstr(call->token_pos(), type, num_elements,
                                        call->deopt_id());
@@ -3889,8 +3943,8 @@
         if (length >= 0 && length <= Array::kMaxElements) {
           Value* type = new (Z) Value(call->ArgumentAt(0));
           *entry = new (Z)
-              TargetEntryInstr(flow_graph->allocate_block_id(),
-                               call->GetBlock()->try_index(), DeoptId::kNone);
+              FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                                 call->GetBlock()->try_index(), DeoptId::kNone);
           (*entry)->InheritDeoptTarget(Z, call);
           *last = new (Z) CreateArrayInstr(call->token_pos(), type,
                                            num_elements, call->deopt_id());
@@ -3924,8 +3978,8 @@
 
       if (!type.IsNull()) {
         *entry = new (Z)
-            TargetEntryInstr(flow_graph->allocate_block_id(),
-                             call->GetBlock()->try_index(), DeoptId::kNone);
+            FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                               call->GetBlock()->try_index(), DeoptId::kNone);
         (*entry)->InheritDeoptTarget(Z, call);
         *last = new (Z) ConstantInstr(type);
         flow_graph->AppendTo(
@@ -3941,8 +3995,8 @@
       // This is an internal method, no need to check argument types nor
       // range.
       *entry = new (Z)
-          TargetEntryInstr(flow_graph->allocate_block_id(),
-                           call->GetBlock()->try_index(), DeoptId::kNone);
+          FunctionEntryInstr(graph_entry, flow_graph->allocate_block_id(),
+                             call->GetBlock()->try_index(), DeoptId::kNone);
       (*entry)->InheritDeoptTarget(Z, call);
       Definition* str = call->ArgumentAt(0);
       Definition* index = call->ArgumentAt(1);
diff --git a/runtime/vm/compiler/backend/inliner.h b/runtime/vm/compiler/backend/inliner.h
index da043a7..1ca172f 100644
--- a/runtime/vm/compiler/backend/inliner.h
+++ b/runtime/vm/compiler/backend/inliner.h
@@ -15,6 +15,8 @@
 class FlowGraph;
 class ForwardInstructionIterator;
 class Function;
+class FunctionEntryInstr;
+class GraphEntryInstr;
 class ICData;
 class InstanceCallInstr;
 class Instruction;
@@ -134,7 +136,8 @@
                                         Definition* receiver,
                                         TokenPosition token_pos,
                                         const ICData* ic_data,
-                                        TargetEntryInstr** entry,
+                                        GraphEntryInstr* graph_entry,
+                                        FunctionEntryInstr** entry,
                                         Instruction** last,
                                         SpeculativeInliningPolicy* policy,
                                         ExactnessInfo* exactness = nullptr);
diff --git a/runtime/vm/compiler/backend/linearscan.cc b/runtime/vm/compiler/backend/linearscan.cc
index 46644a7..34d18ca 100644
--- a/runtime/vm/compiler/backend/linearscan.cc
+++ b/runtime/vm/compiler/backend/linearscan.cc
@@ -11,6 +11,7 @@
 #include "vm/compiler/backend/flow_graph_compiler.h"
 #include "vm/compiler/backend/il.h"
 #include "vm/compiler/backend/il_printer.h"
+#include "vm/compiler/backend/loops.h"
 #include "vm/log.h"
 #include "vm/parser.h"
 #include "vm/stack_frame.h"
@@ -243,26 +244,16 @@
           }
         }
       }
-    } else if (block->IsCatchBlockEntry()) {
-      // Process initial definitions.
-      CatchBlockEntryInstr* catch_entry = block->AsCatchBlockEntry();
-      for (intptr_t i = 0; i < catch_entry->initial_definitions()->length();
-           i++) {
-        Definition* def = (*catch_entry->initial_definitions())[i];
+    } else if (auto entry = block->AsBlockEntryWithInitialDefs()) {
+      // Process initial definitions, i.e. parameters and special parameters.
+      for (intptr_t i = 0; i < entry->initial_definitions()->length(); i++) {
+        Definition* def = (*entry->initial_definitions())[i];
         const intptr_t vreg = def->ssa_temp_index();
-        kill_[catch_entry->postorder_number()]->Add(vreg);
-        live_in_[catch_entry->postorder_number()]->Remove(vreg);
+        kill_[entry->postorder_number()]->Add(vreg);
+        live_in_[entry->postorder_number()]->Remove(vreg);
       }
     }
   }
-
-  // Process initial definitions, ie, constants and incoming parameters.
-  for (intptr_t i = 0; i < graph_entry_->initial_definitions()->length(); i++) {
-    Definition* def = (*graph_entry_->initial_definitions())[i];
-    const intptr_t vreg = def->ssa_temp_index();
-    kill_[graph_entry_->postorder_number()]->Add(vreg);
-    live_in_[graph_entry_->postorder_number()]->Remove(vreg);
-  }
 }
 
 UsePosition* LiveRange::AddUse(intptr_t pos, Location* location_slot) {
@@ -498,12 +489,23 @@
   }
 }
 
-// Returns true if all uses of the given range inside the given loop
-// have Any allocation policy.
-static bool HasOnlyUnconstrainedUsesInLoop(LiveRange* range,
-                                           BlockInfo* loop_header) {
-  const intptr_t boundary = loop_header->last_block()->end_pos();
+// Returns loops latest position.
+static intptr_t LoopEnd(LoopInfo* loop_info) {
+  intptr_t max_pos = 0;
+  const GrowableArray<BlockEntryInstr*>& back_edges = loop_info->back_edges();
+  for (intptr_t i = 0, n = back_edges.length(); i < n; i++) {
+    intptr_t end_pos = back_edges[i]->end_pos();
+    if (end_pos > max_pos) {
+      max_pos = end_pos;
+    }
+  }
+  return max_pos;
+}
 
+// Returns true if all uses of the given range inside the
+// given loop boundary have Any allocation policy.
+static bool HasOnlyUnconstrainedUsesInLoop(LiveRange* range,
+                                           intptr_t boundary) {
   UsePosition* use = range->first_use();
   while ((use != NULL) && (use->pos() < boundary)) {
     if (!use->location_slot()->Equals(Location::Any())) {
@@ -511,7 +513,6 @@
     }
     use = use->next();
   }
-
   return true;
 }
 
@@ -534,8 +535,7 @@
   Zone* zone = flow_graph_.zone();
   for (intptr_t i = 0; i < (block_count - 1); i++) {
     BlockEntryInstr* block = postorder_[i];
-
-    BlockInfo* block_info = BlockInfoAt(block->start_pos());
+    ASSERT(BlockEntryAt(block->start_pos()) == block);
 
     // For every SSA value that is live out of this block, create an interval
     // that covers the whole block.  It will be shortened if we encounter a
@@ -546,16 +546,21 @@
       range->AddUseInterval(block->start_pos(), block->end_pos());
     }
 
-    BlockInfo* loop_header = block_info->loop_header();
-    if ((loop_header != NULL) && (loop_header->last_block() == block)) {
-      current_interference_set =
-          new (zone) BitVector(zone, flow_graph_.max_virtual_register_number());
-      ASSERT(loop_header->backedge_interference() == NULL);
-      // All values flowing into the loop header are live at the back-edge and
-      // can interfere with phi moves.
-      current_interference_set->AddAll(
-          liveness_.GetLiveInSet(loop_header->entry()));
-      loop_header->set_backedge_interference(current_interference_set);
+    LoopInfo* loop_info = block->loop_info();
+    if ((loop_info != nullptr) && (loop_info->IsBackEdge(block))) {
+      if (backedge_interference_[loop_info->id()] != nullptr) {
+        // Restore interference for subsequent backedge a loop
+        // (perhaps inner loop's header reset set in the meanwhile).
+        current_interference_set = backedge_interference_[loop_info->id()];
+      } else {
+        // All values flowing into the loop header are live at the
+        // back edge and can interfere with phi moves.
+        current_interference_set = new (zone)
+            BitVector(zone, flow_graph_.max_virtual_register_number());
+        current_interference_set->AddAll(
+            liveness_.GetLiveInSet(loop_info->header()));
+        backedge_interference_[loop_info->id()] = current_interference_set;
+      }
     }
 
     // Connect outgoing phi-moves that were created in NumberInstructions
@@ -573,25 +578,22 @@
     }
 
     // Check if any values live into the loop can be spilled for free.
-    if (block_info->is_loop_header()) {
+    if (block->IsLoopHeader()) {
       current_interference_set = NULL;
       for (BitVector::Iterator it(liveness_.GetLiveInSetAt(i)); !it.Done();
            it.Advance()) {
         LiveRange* range = GetLiveRange(it.Current());
-        if (HasOnlyUnconstrainedUsesInLoop(range, block_info)) {
-          range->MarkHasOnlyUnconstrainedUsesInLoop(block_info->loop_id());
+        if (HasOnlyUnconstrainedUsesInLoop(range, LoopEnd(loop_info))) {
+          range->MarkHasOnlyUnconstrainedUsesInLoop(loop_info->id());
         }
       }
     }
 
-    if (block->IsJoinEntry()) {
-      ConnectIncomingPhiMoves(block->AsJoinEntry());
-    } else if (block->IsCatchBlockEntry()) {
+    if (auto join_entry = block->AsJoinEntry()) {
+      ConnectIncomingPhiMoves(join_entry);
+    } else if (auto catch_entry = block->AsCatchBlockEntry()) {
       // Process initial definitions.
-      CatchBlockEntryInstr* catch_entry = block->AsCatchBlockEntry();
-
       ProcessEnvironmentUses(catch_entry, catch_entry);  // For lazy deopt
-
       for (intptr_t i = 0; i < catch_entry->initial_definitions()->length();
            i++) {
         Definition* defn = (*catch_entry->initial_definitions())[i];
@@ -599,6 +601,17 @@
         range->DefineAt(catch_entry->start_pos());  // Defined at block entry.
         ProcessInitialDefinition(defn, range, catch_entry);
       }
+    } else if (auto entry = block->AsBlockEntryWithInitialDefs()) {
+      ASSERT(block->IsFunctionEntry() || block->IsOsrEntry());
+      auto& initial_definitions = *entry->initial_definitions();
+      for (intptr_t i = 0; i < initial_definitions.length(); i++) {
+        Definition* defn = initial_definitions[i];
+        ASSERT(!defn->HasPairRepresentation());
+        LiveRange* range = GetLiveRange(defn->ssa_temp_index());
+        range->AddUseInterval(entry->start_pos(), entry->start_pos() + 2);
+        range->DefineAt(entry->start_pos());
+        ProcessInitialDefinition(defn, range, entry);
+      }
     }
   }
 
@@ -729,10 +742,12 @@
     range->set_assigned_location(loc);
     if (loc.IsRegister()) {
       AssignSafepoints(defn, range);
-      if (range->End() > kNormalEntryPos) {
-        SplitInitialDefinitionAt(range, kNormalEntryPos);
+      if (range->End() > (block->lifetime_position() + 2)) {
+        SplitInitialDefinitionAt(range, block->lifetime_position() + 2);
       }
       ConvertAllUses(range);
+      BlockLocation(loc, block->lifetime_position(),
+                    block->lifetime_position() + 2);
       return;
     }
   } else {
@@ -900,7 +915,8 @@
 
   // All uses are recorded at the start position in the block.
   const intptr_t pos = join->start_pos();
-  const bool is_loop_header = BlockInfoAt(join->start_pos())->is_loop_header();
+  const bool is_loop_header = join->IsLoopHeader();
+
   intptr_t move_idx = 0;
   for (PhiIterator it(join); !it.Done(); it.Advance()) {
     PhiInstr* phi = it.Current();
@@ -1542,10 +1558,9 @@
   const intptr_t block_count = postorder_.length();
   for (intptr_t i = block_count - 1; i >= 0; i--) {
     BlockEntryInstr* block = postorder_[i];
-    BlockInfo* info = new BlockInfo(block);
 
     instructions_.Add(block);
-    block_info_.Add(info);
+    block_entries_.Add(block);
     block->set_start_pos(pos);
     block->set_lifetime_position(pos);
     pos += 2;
@@ -1555,7 +1570,7 @@
       // Do not assign numbers to parallel move instructions.
       if (!current->IsParallelMove()) {
         instructions_.Add(current);
-        block_info_.Add(info);
+        block_entries_.Add(block);
         current->set_lifetime_position(pos);
         pos += 2;
       }
@@ -1592,63 +1607,18 @@
       }
     }
   }
-}
 
-// Discover structural (reducible) loops nesting structure.
-void FlowGraphAllocator::DiscoverLoops() {
-  // This algorithm relies on the assumption that we emit blocks in reverse
-  // postorder, so postorder number can be used to identify loop nesting.
-  //
-  // TODO(vegorov): consider using a generic algorithm to correctly discover
-  // both headers of reducible and irreducible loops.
-  BlockInfo* current_loop = NULL;
-
-  intptr_t loop_id = 0;  // All loop headers have a unique id.
-
-  const intptr_t block_count = postorder_.length();
-  for (intptr_t i = 0; i < block_count; i++) {
-    BlockEntryInstr* block = postorder_[i];
-    GotoInstr* goto_instr = block->last_instruction()->AsGoto();
-    if (goto_instr != NULL) {
-      JoinEntryInstr* successor = goto_instr->successor();
-      if (successor->postorder_number() > i) {
-        // This is back-edge.
-        BlockInfo* successor_info = BlockInfoAt(successor->lifetime_position());
-        ASSERT(successor_info->entry() == successor);
-        if (!successor_info->is_loop_header() &&
-            ((current_loop == NULL) ||
-             (current_loop->entry()->postorder_number() >
-              successor_info->entry()->postorder_number()))) {
-          ASSERT(successor_info != current_loop);
-
-          successor_info->mark_loop_header();
-          successor_info->set_loop_id(loop_id++);
-          successor_info->set_last_block(block);
-          // For loop header loop information points to the outer loop.
-          successor_info->set_loop(current_loop);
-          current_loop = successor_info;
-        }
-      }
-    }
-
-    if (current_loop != NULL) {
-      BlockInfo* current_info = BlockInfoAt(block->lifetime_position());
-      if (current_info == current_loop) {
-        ASSERT(current_loop->is_loop_header());
-        current_loop = current_info->loop();
-      } else {
-        current_info->set_loop(current_loop);
-      }
-    }
-  }
+  // Storage per loop.
+  const intptr_t num_loops = flow_graph_.loop_hierarchy().num_loops();
+  backedge_interference_.EnsureLength(num_loops, nullptr);
 }
 
 Instruction* FlowGraphAllocator::InstructionAt(intptr_t pos) const {
   return instructions_[pos / 2];
 }
 
-BlockInfo* FlowGraphAllocator::BlockInfoAt(intptr_t pos) const {
-  return block_info_[pos / 2];
+BlockEntryInstr* FlowGraphAllocator::BlockEntryAt(intptr_t pos) const {
+  return block_entries_[pos / 2];
 }
 
 bool FlowGraphAllocator::IsBlockEntry(intptr_t pos) const {
@@ -1858,21 +1828,23 @@
 
   intptr_t split_pos = kIllegalPosition;
 
-  BlockInfo* split_block = BlockInfoAt(to);
-  if (from < split_block->entry()->lifetime_position()) {
+  BlockEntryInstr* split_block_entry = BlockEntryAt(to);
+  ASSERT(split_block_entry == InstructionAt(to)->GetBlock());
+
+  if (from < split_block_entry->lifetime_position()) {
     // Interval [from, to) spans multiple blocks.
 
     // If last block is inside a loop prefer splitting at outermost loop's
     // header.
-    BlockInfo* loop_header = split_block->loop();
-    while ((loop_header != NULL) &&
-           (from < loop_header->entry()->lifetime_position())) {
-      split_block = loop_header;
-      loop_header = loop_header->loop();
+    LoopInfo* loop_info = split_block_entry->loop_info();
+    while ((loop_info != nullptr) &&
+           (from < loop_info->header()->lifetime_position())) {
+      split_block_entry = loop_info->header();
+      loop_info = loop_info->outer();
     }
 
     // Split at block's start.
-    split_pos = split_block->entry()->lifetime_position();
+    split_pos = split_block_entry->lifetime_position();
   } else {
     // Interval [from, to) is contained inside a single block.
 
@@ -1913,15 +1885,12 @@
 
   // When spilling the value inside the loop check if this spill can
   // be moved outside.
-  BlockInfo* block_info = BlockInfoAt(from);
-  if (block_info->is_loop_header() || (block_info->loop() != NULL)) {
-    BlockInfo* loop_header =
-        block_info->is_loop_header() ? block_info : block_info->loop();
-
-    if ((range->Start() <= loop_header->entry()->start_pos()) &&
-        RangeHasOnlyUnconstrainedUsesInLoop(range, loop_header->loop_id())) {
-      ASSERT(loop_header->entry()->start_pos() <= from);
-      from = loop_header->entry()->start_pos();
+  LoopInfo* loop_info = BlockEntryAt(from)->loop_info();
+  if (loop_info != nullptr) {
+    if ((range->Start() <= loop_info->header()->start_pos()) &&
+        RangeHasOnlyUnconstrainedUsesInLoop(range, loop_info->id())) {
+      ASSERT(loop_info->header()->start_pos() <= from);
+      from = loop_info->header()->start_pos();
       TRACE_ALLOC(
           THR_Print("  moved spill position to loop header %" Pd "\n", from));
     }
@@ -2202,16 +2171,16 @@
   // If we are in a loop try to reduce number of moves on the back edge by
   // searching for a candidate that does not interfere with phis on the back
   // edge.
-  BlockInfo* loop_header = BlockInfoAt(unallocated->Start())->loop_header();
-  if ((unallocated->vreg() >= 0) && (loop_header != NULL) &&
-      (free_until >= loop_header->last_block()->end_pos()) &&
-      loop_header->backedge_interference()->Contains(unallocated->vreg())) {
+  LoopInfo* loop_info = BlockEntryAt(unallocated->Start())->loop_info();
+  if ((unallocated->vreg() >= 0) && (loop_info != nullptr) &&
+      (free_until >= LoopEnd(loop_info)) &&
+      backedge_interference_[loop_info->id()]->Contains(unallocated->vreg())) {
     GrowableArray<bool> used_on_backedge(number_of_registers_);
     for (intptr_t i = 0; i < number_of_registers_; i++) {
       used_on_backedge.Add(false);
     }
 
-    for (PhiIterator it(loop_header->entry()->AsJoinEntry()); !it.Done();
+    for (PhiIterator it(loop_info->header()->AsJoinEntry()); !it.Done();
          it.Advance()) {
       PhiInstr* phi = it.Current();
       ASSERT(phi->is_alive());
@@ -2237,13 +2206,12 @@
     }
 
     if (used_on_backedge[candidate]) {
-      TRACE_ALLOC(THR_Print("considering %s for v%" Pd
-                            ": has interference on the back edge"
-                            " {loop [%" Pd ", %" Pd ")}\n",
-                            MakeRegisterLocation(candidate).Name(),
-                            unallocated->vreg(),
-                            loop_header->entry()->start_pos(),
-                            loop_header->last_block()->end_pos()));
+      TRACE_ALLOC(
+          THR_Print("considering %s for v%" Pd
+                    ": has interference on the back edge"
+                    " {loop [%" Pd ", %" Pd ")}\n",
+                    MakeRegisterLocation(candidate).Name(), unallocated->vreg(),
+                    loop_info->header()->start_pos(), LoopEnd(loop_info)));
       for (intptr_t reg = 0; reg < NumberOfRegisters(); ++reg) {
         if (blocked_registers_[reg] || (reg == candidate) ||
             used_on_backedge[reg]) {
@@ -2293,17 +2261,19 @@
   return false;
 }
 
-bool FlowGraphAllocator::IsCheapToEvictRegisterInLoop(BlockInfo* loop,
+bool FlowGraphAllocator::IsCheapToEvictRegisterInLoop(BlockEntryInstr* header,
                                                       intptr_t reg) {
-  const intptr_t loop_start = loop->entry()->start_pos();
-  const intptr_t loop_end = loop->last_block()->end_pos();
+  LoopInfo* loop_info = header->loop_info();
+
+  const intptr_t loop_start = header->start_pos();
+  const intptr_t loop_end = LoopEnd(loop_info);
 
   for (intptr_t i = 0; i < registers_[reg]->length(); i++) {
     LiveRange* allocated = (*registers_[reg])[i];
 
     UseInterval* interval = allocated->finger()->first_pending_use_interval();
     if (interval->Contains(loop_start)) {
-      if (!RangeHasOnlyUnconstrainedUsesInLoop(allocated, loop->loop_id())) {
+      if (!RangeHasOnlyUnconstrainedUsesInLoop(allocated, loop_info->id())) {
         return false;
       }
     } else if (interval->start() < loop_end) {
@@ -2317,13 +2287,14 @@
 bool FlowGraphAllocator::HasCheapEvictionCandidate(LiveRange* phi_range) {
   ASSERT(phi_range->is_loop_phi());
 
-  BlockInfo* loop_header = BlockInfoAt(phi_range->Start());
-  ASSERT(loop_header->is_loop_header());
-  ASSERT(phi_range->Start() == loop_header->entry()->start_pos());
+  BlockEntryInstr* header = BlockEntryAt(phi_range->Start());
+
+  ASSERT(header->IsLoopHeader());
+  ASSERT(phi_range->Start() == header->start_pos());
 
   for (intptr_t reg = 0; reg < NumberOfRegisters(); ++reg) {
     if (blocked_registers_[reg]) continue;
-    if (IsCheapToEvictRegisterInLoop(loop_header, reg)) {
+    if (IsCheapToEvictRegisterInLoop(header, reg)) {
       return true;
     }
   }
@@ -2502,18 +2473,17 @@
                                             Location from) {
   ASSERT(!IsBlockEntry(pos));
 
-  if (pos < kNormalEntryPos) {
-    ASSERT(pos > 0);
-    // Parallel moves added to the GraphEntry (B0) will be added at the start
-    // of the normal entry (B1)
-    BlockEntryInstr* entry = InstructionAt(kNormalEntryPos)->AsBlockEntry();
-    return entry->GetParallelMove()->AddMove(to, from);
-  }
-
-  Instruction* instr = InstructionAt(pos);
+  // Now that the GraphEntry (B0) does no longer have any parameter instructions
+  // in it so we should not attempt to add parallel moves to it.
+  ASSERT(pos >= kNormalEntryPos);
 
   ParallelMoveInstr* parallel_move = NULL;
-  if (IsInstructionStartPosition(pos)) {
+  Instruction* instr = InstructionAt(pos);
+  if (auto entry = instr->AsFunctionEntry()) {
+    // Parallel moves added to the FunctionEntry will be added after the block
+    // entry.
+    parallel_move = CreateParallelMoveAfter(entry, pos);
+  } else if (IsInstructionStartPosition(pos)) {
     parallel_move = CreateParallelMoveBefore(instr, pos);
   } else {
     parallel_move = CreateParallelMoveAfter(instr, pos);
@@ -2884,10 +2854,11 @@
 }
 
 void FlowGraphAllocator::CollectRepresentations() {
-  // Parameters.
+  // Constants.
   GraphEntryInstr* graph_entry = flow_graph_.graph_entry();
-  for (intptr_t i = 0; i < graph_entry->initial_definitions()->length(); ++i) {
-    Definition* def = (*graph_entry->initial_definitions())[i];
+  auto initial_definitions = graph_entry->initial_definitions();
+  for (intptr_t i = 0; i < initial_definitions->length(); ++i) {
+    Definition* def = (*initial_definitions)[i];
     value_representations_[def->ssa_temp_index()] =
         RepresentationForRange(def->representation());
     ASSERT(!def->HasPairRepresentation());
@@ -2897,20 +2868,15 @@
        it.Advance()) {
     BlockEntryInstr* block = it.Current();
 
-    // Catch entry.
-    if (block->IsCatchBlockEntry()) {
-      CatchBlockEntryInstr* catch_entry = block->AsCatchBlockEntry();
-      for (intptr_t i = 0; i < catch_entry->initial_definitions()->length();
-           ++i) {
-        Definition* def = (*catch_entry->initial_definitions())[i];
+    if (auto entry = block->AsBlockEntryWithInitialDefs()) {
+      initial_definitions = entry->initial_definitions();
+      for (intptr_t i = 0; i < initial_definitions->length(); ++i) {
+        Definition* def = (*initial_definitions)[i];
         ASSERT(!def->HasPairRepresentation());
         value_representations_[def->ssa_temp_index()] =
             RepresentationForRange(def->representation());
       }
-    }
-    // Phis.
-    if (block->IsJoinEntry()) {
-      JoinEntryInstr* join = block->AsJoinEntry();
+    } else if (auto join = block->AsJoinEntry()) {
       for (PhiIterator it(join); !it.Done(); it.Advance()) {
         PhiInstr* phi = it.Current();
         ASSERT(phi != NULL && phi->ssa_temp_index() >= 0);
@@ -2922,6 +2888,7 @@
         }
       }
     }
+
     // Normal instructions.
     for (ForwardInstructionIterator instr_it(block); !instr_it.Done();
          instr_it.Advance()) {
@@ -2946,8 +2913,6 @@
 
   NumberInstructions();
 
-  DiscoverLoops();
-
 #if defined(TARGET_ARCH_DBC)
   last_used_register_ = -1;
 #endif
diff --git a/runtime/vm/compiler/backend/linearscan.h b/runtime/vm/compiler/backend/linearscan.h
index 200597a..1dacc5f 100644
--- a/runtime/vm/compiler/backend/linearscan.h
+++ b/runtime/vm/compiler/backend/linearscan.h
@@ -12,7 +12,6 @@
 namespace dart {
 
 class AllocationFinger;
-class BlockInfo;
 class FlowGraph;
 class LiveRange;
 class UseInterval;
@@ -85,14 +84,9 @@
   // that will be used for phi resolution.
   void NumberInstructions();
   Instruction* InstructionAt(intptr_t pos) const;
-  BlockInfo* BlockInfoAt(intptr_t pos) const;
+  BlockEntryInstr* BlockEntryAt(intptr_t pos) const;
   bool IsBlockEntry(intptr_t pos) const;
 
-  // Discover structural (reducible) loops nesting structure.
-  // It will be used later in SplitBetween heuristic that selects an
-  // optimal splitting position.
-  void DiscoverLoops();
-
   LiveRange* MakeLiveRangeForTemporary();
 
   // Visit instructions in the postorder and build live ranges for
@@ -197,7 +191,7 @@
   // performance because it introduces multiple operations with memory
   // inside the loop body and on the back edge.
   bool HasCheapEvictionCandidate(LiveRange* phi_range);
-  bool IsCheapToEvictRegisterInLoop(BlockInfo* loop, intptr_t reg);
+  bool IsCheapToEvictRegisterInLoop(BlockEntryInstr* block, intptr_t reg);
 
   // Assign selected non-free register to an unallocated live range and
   // evict any interference that can be evicted by splitting and spilling
@@ -259,8 +253,11 @@
   // Mapping between lifetime positions and instructions.
   GrowableArray<Instruction*> instructions_;
 
-  // Mapping between lifetime positions and blocks containing them.
-  GrowableArray<BlockInfo*> block_info_;
+  // Mapping between lifetime positions and block entries.
+  GrowableArray<BlockEntryInstr*> block_entries_;
+
+  // Mapping between loops and backedge interferences.
+  GrowableArray<BitVector*> backedge_interference_;
 
   SSALivenessAnalysis liveness_;
 
@@ -332,68 +329,6 @@
   DISALLOW_COPY_AND_ASSIGN(FlowGraphAllocator);
 };
 
-// Additional information about a block that is not contained in a
-// block entry.
-class BlockInfo : public ZoneAllocated {
- public:
-  explicit BlockInfo(BlockEntryInstr* entry)
-      : entry_(entry),
-        loop_(NULL),
-        is_loop_header_(false),
-        backedge_interference_(NULL) {}
-
-  BlockEntryInstr* entry() const { return entry_; }
-
-  // Returns true is this node is a header of a structural loop.
-  bool is_loop_header() const { return is_loop_header_; }
-
-  // Returns header of the innermost loop containing this block.
-  BlockInfo* loop_header() {
-    if (is_loop_header()) {
-      return this;
-    } else if (loop() != NULL) {
-      return loop();
-    } else {
-      return NULL;
-    }
-  }
-
-  // Innermost reducible loop containing this node. Loop headers point to
-  // outer loop not to themselves.
-  BlockInfo* loop() const { return loop_; }
-
-  void mark_loop_header() { is_loop_header_ = true; }
-  void set_loop(BlockInfo* loop) {
-    ASSERT(loop_ == NULL);
-    ASSERT((loop == NULL) || loop->is_loop_header());
-    loop_ = loop;
-  }
-
-  BlockEntryInstr* last_block() const { return last_block_; }
-  void set_last_block(BlockEntryInstr* last_block) { last_block_ = last_block; }
-
-  intptr_t loop_id() const { return loop_id_; }
-  void set_loop_id(intptr_t loop_id) { loop_id_ = loop_id; }
-
-  BitVector* backedge_interference() const { return backedge_interference_; }
-
-  void set_backedge_interference(BitVector* backedge_interference) {
-    backedge_interference_ = backedge_interference;
-  }
-
- private:
-  BlockEntryInstr* entry_;
-  BlockInfo* loop_;
-  bool is_loop_header_;
-
-  BlockEntryInstr* last_block_;
-  intptr_t loop_id_;
-
-  BitVector* backedge_interference_;
-
-  DISALLOW_COPY_AND_ASSIGN(BlockInfo);
-};
-
 // UsePosition represents a single use of an SSA value by some instruction.
 // It points to a location slot which either tells register allocator
 // where instruction expects the value (if slot contains a fixed location) or
diff --git a/runtime/vm/compiler/backend/loops.cc b/runtime/vm/compiler/backend/loops.cc
new file mode 100644
index 0000000..42e656e
--- /dev/null
+++ b/runtime/vm/compiler/backend/loops.cc
@@ -0,0 +1,130 @@
+// 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.
+
+#if !defined(DART_PRECOMPILED_RUNTIME)
+
+#include "vm/compiler/backend/loops.h"
+
+#include "vm/bit_vector.h"
+#include "vm/compiler/backend/il.h"
+
+namespace dart {
+
+LoopInfo::LoopInfo(intptr_t id, BlockEntryInstr* header, BitVector* blocks)
+    : id_(id),
+      header_(header),
+      blocks_(blocks),
+      back_edges_(),
+      outer_(nullptr),
+      inner_(nullptr),
+      next_(nullptr) {}
+
+void LoopInfo::AddBlocks(BitVector* blocks) {
+  blocks_->AddAll(blocks);
+}
+
+void LoopInfo::AddBackEdge(BlockEntryInstr* block) {
+  back_edges_.Add(block);
+}
+
+bool LoopInfo::IsBackEdge(BlockEntryInstr* block) const {
+  for (intptr_t i = 0, n = back_edges_.length(); i < n; i++) {
+    if (back_edges_[i] == block) {
+      return true;
+    }
+  }
+  return false;
+}
+
+bool LoopInfo::IsIn(LoopInfo* other) const {
+  if (other != nullptr) {
+    return other->blocks_->Contains(header_->preorder_number());
+  }
+  return false;
+}
+
+intptr_t LoopInfo::NestingDepth() const {
+  intptr_t nesting_depth = 1;
+  for (LoopInfo* o = outer_; o != nullptr; o = o->outer()) {
+    nesting_depth++;
+  }
+  return nesting_depth;
+}
+
+const char* LoopInfo::ToCString() const {
+  char buffer[1024];
+  BufferFormatter f(buffer, sizeof(buffer));
+  f.Print("%*c", static_cast<int>(2 * NestingDepth()), ' ');
+  f.Print("loop%" Pd " B%" Pd " ", id_, header_->block_id());
+  intptr_t num_blocks = 0;
+  for (BitVector::Iterator it(blocks_); !it.Done(); it.Advance()) {
+    num_blocks++;
+  }
+  f.Print("#blocks=%" Pd, num_blocks);
+  if (outer_) f.Print(" outer=%" Pd, outer_->id_);
+  if (inner_) f.Print(" inner=%" Pd, inner_->id_);
+  if (next_) f.Print(" next=%" Pd, next_->id_);
+  f.Print(" [");
+  for (intptr_t i = 0, n = back_edges_.length(); i < n; i++) {
+    f.Print(" B%" Pd, back_edges_[i]->block_id());
+  }
+  f.Print(" ]");
+  return Thread::Current()->zone()->MakeCopyOfString(buffer);
+}
+
+LoopHierarchy::LoopHierarchy(ZoneGrowableArray<BlockEntryInstr*>* headers,
+                             const GrowableArray<BlockEntryInstr*>& preorder)
+    : headers_(headers), preorder_(preorder), top_(nullptr) {
+  Build();
+}
+
+void LoopHierarchy::Build() {
+  // Link every entry block to the closest enveloping loop.
+  for (intptr_t i = 0, n = headers_->length(); i < n; ++i) {
+    LoopInfo* loop = (*headers_)[i]->loop_info();
+    for (BitVector::Iterator it(loop->blocks()); !it.Done(); it.Advance()) {
+      BlockEntryInstr* block = preorder_[it.Current()];
+      if (block->loop_info() == nullptr) {
+        block->set_loop_info(loop);
+      } else {
+        ASSERT(block->loop_info()->IsIn(loop));
+      }
+    }
+  }
+  // Build hierarchy from headers.
+  for (intptr_t i = 0, n = headers_->length(); i < n; ++i) {
+    BlockEntryInstr* header = (*headers_)[i];
+    LoopInfo* loop = header->loop_info();
+    LoopInfo* dom_loop = header->dominator()->loop_info();
+    ASSERT(loop->outer_ == nullptr);
+    ASSERT(loop->next_ == nullptr);
+    if (loop->IsIn(dom_loop)) {
+      loop->outer_ = dom_loop;
+      loop->next_ = dom_loop->inner_;
+      dom_loop->inner_ = loop;
+    } else {
+      loop->next_ = top_;
+      top_ = loop;
+    }
+  }
+  // If tracing is requested, print the loop hierarchy.
+  if (FLAG_trace_optimization) {
+    Print(top());
+  }
+}
+
+void LoopHierarchy::Print(LoopInfo* loop) {
+  for (; loop != nullptr; loop = loop->next_) {
+    THR_Print("%s {", loop->ToCString());
+    for (BitVector::Iterator it(loop->blocks()); !it.Done(); it.Advance()) {
+      THR_Print(" B%" Pd, preorder_[it.Current()]->block_id());
+    }
+    THR_Print(" }\n");
+    Print(loop->inner_);
+  }
+}
+
+}  // namespace dart
+
+#endif  // !defined(DART_PRECOMPILED_RUNTIME)
diff --git a/runtime/vm/compiler/backend/loops.h b/runtime/vm/compiler/backend/loops.h
new file mode 100644
index 0000000..555f69f
--- /dev/null
+++ b/runtime/vm/compiler/backend/loops.h
@@ -0,0 +1,98 @@
+// 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.
+
+#ifndef RUNTIME_VM_COMPILER_BACKEND_LOOPS_H_
+#define RUNTIME_VM_COMPILER_BACKEND_LOOPS_H_
+
+#include "vm/allocation.h"
+#include "vm/compiler/backend/il.h"
+
+namespace dart {
+
+// Information on a "natural loop" in the flow graph.
+class LoopInfo : public ZoneAllocated {
+ public:
+  LoopInfo(intptr_t id, BlockEntryInstr* header, BitVector* blocks);
+
+  // Merges given blocks to this loop.
+  void AddBlocks(BitVector* blocks);
+
+  // Adds back edge to this loop.
+  void AddBackEdge(BlockEntryInstr* block);
+
+  // Returns true if given block is backedge of this loop.
+  bool IsBackEdge(BlockEntryInstr* block) const;
+
+  // Returns true if this loop is nested inside other loop.
+  bool IsIn(LoopInfo* other) const;
+
+  // Returns the nesting depth of this loop.
+  intptr_t NestingDepth() const;
+
+  // Getters.
+  intptr_t id() const { return id_; }
+  BlockEntryInstr* header() const { return header_; }
+  const GrowableArray<BlockEntryInstr*>& back_edges() { return back_edges_; }
+  BitVector* blocks() const { return blocks_; }
+  LoopInfo* outer() const { return outer_; }
+  LoopInfo* inner() const { return inner_; }
+  LoopInfo* next() const { return next_; }
+
+  // For debugging.
+  const char* ToCString() const;
+
+ private:
+  friend class LoopHierarchy;
+
+  // Unique id of loop. We use its index in the
+  // loop header array for this.
+  const intptr_t id_;
+
+  // Header of loop.
+  BlockEntryInstr* header_;
+
+  // Compact represention of every block in the loop,
+  // indexed by its "preorder_number".
+  BitVector* blocks_;
+
+  // Back edges of loop (usually one).
+  GrowableArray<BlockEntryInstr*> back_edges_;
+
+  // Loop hierarchy.
+  LoopInfo* outer_;
+  LoopInfo* inner_;
+  LoopInfo* next_;
+
+  DISALLOW_COPY_AND_ASSIGN(LoopInfo);
+};
+
+// Information on the loop hierarchy in the flow graph.
+class LoopHierarchy : public ZoneAllocated {
+ public:
+  LoopHierarchy(ZoneGrowableArray<BlockEntryInstr*>* headers,
+                const GrowableArray<BlockEntryInstr*>& preorder);
+
+  // Getters.
+  const ZoneGrowableArray<BlockEntryInstr*>& headers() const {
+    return *headers_;
+  }
+  LoopInfo* top() const { return top_; }
+
+  // Returns total number of loops in the hierarchy.
+  intptr_t num_loops() const { return headers_->length(); }
+
+ private:
+  void Build();
+  void Print(LoopInfo* loop);
+
+  ZoneGrowableArray<BlockEntryInstr*>* headers_;
+  const GrowableArray<BlockEntryInstr*>& preorder_;
+  LoopInfo* top_;
+
+  DISALLOW_COPY_AND_ASSIGN(LoopHierarchy);
+};
+
+}  // namespace dart
+
+#endif  // RUNTIME_VM_COMPILER_BACKEND_LOOPS_H_
diff --git a/runtime/vm/compiler/backend/range_analysis.cc b/runtime/vm/compiler/backend/range_analysis.cc
index 8122bd9..c2a4bef 100644
--- a/runtime/vm/compiler/backend/range_analysis.cc
+++ b/runtime/vm/compiler/backend/range_analysis.cc
@@ -8,6 +8,7 @@
 
 #include "vm/bit_vector.h"
 #include "vm/compiler/backend/il_printer.h"
+#include "vm/compiler/backend/loops.h"
 
 namespace dart {
 
@@ -137,10 +138,10 @@
     return NULL;
   }
 
-  BitVector* loop_info = phi->block()->loop_info();
+  BitVector* loop_blocks = phi->block()->loop_info()->blocks();
 
   const intptr_t backedge_idx =
-      loop_info->Contains(phi->block()->PredecessorAt(0)->preorder_number())
+      loop_blocks->Contains(phi->block()->PredecessorAt(0)->preorder_number())
           ? 0
           : 1;
 
@@ -163,6 +164,7 @@
   return NULL;
 }
 
+// TODO(ajcbik): move induction variable recognition in loop framework
 void RangeAnalysis::DiscoverSimpleInductionVariables() {
   GrowableArray<InductionVariableInfo*> loop_variables;
 
@@ -171,7 +173,8 @@
     BlockEntryInstr* block = block_it.Current();
 
     JoinEntryInstr* join = block->AsJoinEntry();
-    if (join != NULL && join->loop_info() != NULL) {
+    if (join != NULL && join->loop_info() != NULL &&
+        join->loop_info()->header() == join) {
       loop_variables.Clear();
 
       for (PhiIterator phi_it(join); !phi_it.Done(); phi_it.Advance()) {
@@ -209,8 +212,9 @@
 }
 
 void RangeAnalysis::CollectValues() {
-  const GrowableArray<Definition*>& initial =
-      *flow_graph_->graph_entry()->initial_definitions();
+  auto graph_entry = flow_graph_->graph_entry();
+
+  auto& initial = *graph_entry->initial_definitions();
   for (intptr_t i = 0; i < initial.length(); ++i) {
     Definition* current = initial[i];
     if (IsIntegerDefinition(current)) {
@@ -218,23 +222,26 @@
     }
   }
 
-  for (BlockIterator block_it = flow_graph_->reverse_postorder_iterator();
-       !block_it.Done(); block_it.Advance()) {
-    BlockEntryInstr* block = block_it.Current();
-
-    if (block->IsGraphEntry() || block->IsCatchBlockEntry()) {
-      const GrowableArray<Definition*>& initial =
-          block->IsGraphEntry()
-              ? *block->AsGraphEntry()->initial_definitions()
-              : *block->AsCatchBlockEntry()->initial_definitions();
-      for (intptr_t i = 0; i < initial.length(); ++i) {
-        Definition* current = initial[i];
+  for (intptr_t i = 0; i < graph_entry->SuccessorCount(); ++i) {
+    auto successor = graph_entry->SuccessorAt(i);
+    if (successor->IsFunctionEntry() || successor->IsCatchBlockEntry()) {
+      auto function_entry = successor->AsFunctionEntry();
+      auto catch_entry = successor->AsCatchBlockEntry();
+      const auto& initial = function_entry != nullptr
+                                ? *function_entry->initial_definitions()
+                                : *catch_entry->initial_definitions();
+      for (intptr_t j = 0; j < initial.length(); ++j) {
+        Definition* current = initial[j];
         if (IsIntegerDefinition(current)) {
           values_.Add(current);
         }
       }
     }
+  }
 
+  for (BlockIterator block_it = flow_graph_->reverse_postorder_iterator();
+       !block_it.Done(); block_it.Advance()) {
+    BlockEntryInstr* block = block_it.Current();
     JoinEntryInstr* join = block->AsJoinEntry();
     if (join != NULL) {
       for (PhiIterator phi_it(join); !phi_it.Done(); phi_it.Advance()) {
@@ -690,14 +697,28 @@
   // Collect integer definitions (including constraints) in the reverse
   // postorder. This improves convergence speed compared to iterating
   // values_ and constraints_ array separately.
-  const GrowableArray<Definition*>& initial =
-      *flow_graph_->graph_entry()->initial_definitions();
+  auto graph_entry = flow_graph_->graph_entry();
+  const auto& initial = *graph_entry->initial_definitions();
   for (intptr_t i = 0; i < initial.length(); ++i) {
     Definition* definition = initial[i];
     if (set->Contains(definition->ssa_temp_index())) {
       definitions_.Add(definition);
     }
   }
+
+  for (intptr_t i = 0; i < graph_entry->SuccessorCount(); ++i) {
+    auto successor = graph_entry->SuccessorAt(i);
+    if (auto function_entry = successor->AsFunctionEntry()) {
+      const auto& initial = *function_entry->initial_definitions();
+      for (intptr_t j = 0; j < initial.length(); ++j) {
+        Definition* definition = initial[j];
+        if (set->Contains(definition->ssa_temp_index())) {
+          definitions_.Add(definition);
+        }
+      }
+    }
+  }
+
   CollectDefinitions(set);
 
   // Perform an iteration of range inference just propagating ranges
@@ -753,7 +774,7 @@
  public:
   explicit Scheduler(FlowGraph* flow_graph)
       : flow_graph_(flow_graph),
-        loop_headers_(flow_graph->LoopHeaders()),
+        loop_headers_(flow_graph->GetLoopHierarchy().headers()),
         pre_headers_(loop_headers_.length()) {
     for (intptr_t i = 0; i < loop_headers_.length(); i++) {
       pre_headers_.Add(loop_headers_[i]->ImmediateDominator());
diff --git a/runtime/vm/compiler/backend/redundancy_elimination.cc b/runtime/vm/compiler/backend/redundancy_elimination.cc
index c734370..f8f5ec8 100644
--- a/runtime/vm/compiler/backend/redundancy_elimination.cc
+++ b/runtime/vm/compiler/backend/redundancy_elimination.cc
@@ -10,6 +10,7 @@
 #include "vm/compiler/backend/flow_graph.h"
 #include "vm/compiler/backend/il.h"
 #include "vm/compiler/backend/il_printer.h"
+#include "vm/compiler/backend/loops.h"
 #include "vm/hash_map.h"
 #include "vm/stack_frame.h"
 
@@ -1340,7 +1341,7 @@
   }
 
   const ZoneGrowableArray<BlockEntryInstr*>& loop_headers =
-      flow_graph()->LoopHeaders();
+      flow_graph()->GetLoopHierarchy().headers();
 
   for (intptr_t i = 0; i < loop_headers.length(); ++i) {
     JoinEntryInstr* header = loop_headers[i]->AsJoinEntry();
@@ -1361,7 +1362,7 @@
   }
 
   const ZoneGrowableArray<BlockEntryInstr*>& loop_headers =
-      flow_graph()->LoopHeaders();
+      flow_graph()->GetLoopHierarchy().headers();
 
   ZoneGrowableArray<BitVector*>* loop_invariant_loads =
       flow_graph()->loop_invariant_loads();
@@ -1372,8 +1373,8 @@
     BlockEntryInstr* pre_header = header->ImmediateDominator();
     if (pre_header == NULL) continue;
 
-    for (BitVector::Iterator loop_it(header->loop_info()); !loop_it.Done();
-         loop_it.Advance()) {
+    for (BitVector::Iterator loop_it(header->loop_info()->blocks());
+         !loop_it.Done(); loop_it.Advance()) {
       BlockEntryInstr* block = flow_graph()->preorder()[loop_it.Current()];
       for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
         Instruction* current = it.Current();
@@ -1882,7 +1883,7 @@
 
   void MarkLoopInvariantLoads() {
     const ZoneGrowableArray<BlockEntryInstr*>& loop_headers =
-        graph_->LoopHeaders();
+        graph_->GetLoopHierarchy().headers();
 
     ZoneGrowableArray<BitVector*>* invariant_loads =
         new (Z) ZoneGrowableArray<BitVector*>(loop_headers.length());
@@ -1896,14 +1897,14 @@
       }
 
       BitVector* loop_gen = new (Z) BitVector(Z, aliased_set_->max_place_id());
-      for (BitVector::Iterator loop_it(header->loop_info()); !loop_it.Done();
-           loop_it.Advance()) {
+      for (BitVector::Iterator loop_it(header->loop_info()->blocks());
+           !loop_it.Done(); loop_it.Advance()) {
         const intptr_t preorder_number = loop_it.Current();
         loop_gen->AddAll(gen_[preorder_number]);
       }
 
-      for (BitVector::Iterator loop_it(header->loop_info()); !loop_it.Done();
-           loop_it.Advance()) {
+      for (BitVector::Iterator loop_it(header->loop_info()->blocks());
+           !loop_it.Done(); loop_it.Advance()) {
         const intptr_t preorder_number = loop_it.Current();
         loop_gen->RemoveAll(kill_[preorder_number]);
       }
diff --git a/runtime/vm/compiler/backend/type_propagator.cc b/runtime/vm/compiler/backend/type_propagator.cc
index dca0c12..45f0f84 100644
--- a/runtime/vm/compiler/backend/type_propagator.cc
+++ b/runtime/vm/compiler/backend/type_propagator.cc
@@ -908,7 +908,15 @@
   // for example receiver.
   GraphEntryInstr* graph_entry = block_->AsGraphEntry();
   if (graph_entry == NULL) {
-    graph_entry = block_->AsCatchBlockEntry()->graph_entry();
+    if (auto function_entry = block_->AsFunctionEntry()) {
+      graph_entry = function_entry->graph_entry();
+    } else if (auto osr_entry = block_->AsOsrEntry()) {
+      graph_entry = osr_entry->graph_entry();
+    } else if (auto catch_entry = block_->AsCatchBlockEntry()) {
+      graph_entry = catch_entry->graph_entry();
+    } else {
+      UNREACHABLE();
+    }
   }
   // Parameters at OSR entries have type dynamic.
   //
@@ -994,7 +1002,7 @@
     if (index() < scope->num_variables()) {
       const LocalVariable* param = scope->VariableAt(index());
       CompileType* inferred_type = NULL;
-      if (block_->IsGraphEntry()) {
+      if (!block_->IsCatchBlockEntry()) {
         inferred_type = param->parameter_type();
       }
       // Best bet: use inferred type if it is a concrete class or int.
diff --git a/runtime/vm/compiler/call_specializer.cc b/runtime/vm/compiler/call_specializer.cc
index 75e6d4c..c07b6f4 100644
--- a/runtime/vm/compiler/call_specializer.cc
+++ b/runtime/vm/compiler/call_specializer.cc
@@ -1458,115 +1458,6 @@
   ReplaceCall(call, instance_of);
 }
 
-bool CallSpecializer::TryReplaceTypeCastWithRangeCheck(
-    InstanceCallInstr* call,
-    const AbstractType& type) {
-  // TODO(dartbug.com/30632) does this optimization make sense in JIT?
-  return false;
-}
-
-void CallSpecializer::ReplaceWithTypeCast(InstanceCallInstr* call) {
-  ASSERT(Token::IsTypeCastOperator(call->token_kind()));
-  ASSERT(call->type_args_len() == 0);
-  Definition* left = call->ArgumentAt(0);
-  Definition* instantiator_type_args = call->ArgumentAt(1);
-  Definition* function_type_args = call->ArgumentAt(2);
-  const AbstractType& type =
-      AbstractType::Cast(call->ArgumentAt(3)->AsConstant()->value());
-  ASSERT(!type.IsMalformedOrMalbounded());
-
-  // TODO(dartbug.com/30632) does this optimization make sense in JIT?
-  if (FLAG_precompiled_mode && TypeCheckAsClassEquality(type)) {
-    LoadClassIdInstr* left_cid = new (Z) LoadClassIdInstr(new (Z) Value(left));
-    InsertBefore(call, left_cid, NULL, FlowGraph::kValue);
-    const intptr_t type_cid = Class::ZoneHandle(Z, type.type_class()).id();
-    ConstantInstr* cid =
-        flow_graph()->GetConstant(Smi::ZoneHandle(Z, Smi::New(type_cid)));
-    ConstantInstr* pos = flow_graph()->GetConstant(
-        Smi::ZoneHandle(Z, Smi::New(call->token_pos().Pos())));
-
-    ZoneGrowableArray<PushArgumentInstr*>* args =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(5);
-    PushArgumentInstr* arg = new (Z) PushArgumentInstr(new (Z) Value(pos));
-    InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-    args->Add(arg);
-    arg = new (Z) PushArgumentInstr(new (Z) Value(left));
-    InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-    args->Add(arg);
-    arg = new (Z)
-        PushArgumentInstr(new (Z) Value(flow_graph()->GetConstant(type)));
-    InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-    args->Add(arg);
-    arg = new (Z) PushArgumentInstr(new (Z) Value(left_cid));
-    InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-    args->Add(arg);
-    arg = new (Z) PushArgumentInstr(new (Z) Value(cid));
-    InsertBefore(call, arg, NULL, FlowGraph::kEffect);
-    args->Add(arg);
-
-    const Library& dart_internal = Library::Handle(Z, Library::CoreLibrary());
-    const String& target_name = Symbols::_classIdEqualsAssert();
-    const Function& target = Function::ZoneHandle(
-        Z, dart_internal.LookupFunctionAllowPrivate(target_name));
-    ASSERT(!target.IsNull());
-    ASSERT(target.IsRecognized());
-    ASSERT(target.always_inline());
-
-    const intptr_t kTypeArgsLen = 0;
-    StaticCallInstr* new_call = new (Z) StaticCallInstr(
-        call->token_pos(), target, kTypeArgsLen,
-        Object::null_array(),  // argument_names
-        args, call->deopt_id(), call->CallCount(), ICData::kStatic);
-    Environment* copy =
-        call->env()->DeepCopy(Z, call->env()->Length() - call->ArgumentCount());
-    for (intptr_t i = 0; i < args->length(); ++i) {
-      copy->PushValue(new (Z) Value((*args)[i]->value()->definition()));
-    }
-    call->RemoveEnvironment();
-    ReplaceCall(call, new_call);
-    copy->DeepCopyTo(Z, new_call);
-    return;
-  }
-
-  if (TryReplaceTypeCastWithRangeCheck(call, type)) {
-    return;
-  }
-
-  const ICData& unary_checks =
-      ICData::ZoneHandle(Z, call->ic_data()->AsUnaryClassChecks());
-  const intptr_t number_of_checks = unary_checks.NumberOfChecks();
-  if (number_of_checks > 0 && number_of_checks <= FLAG_max_polymorphic_checks) {
-    ZoneGrowableArray<intptr_t>* results =
-        new (Z) ZoneGrowableArray<intptr_t>(number_of_checks * 2);
-    const Bool& as_bool =
-        Bool::ZoneHandle(Z, InstanceOfAsBool(unary_checks, type, results));
-    if (as_bool.raw() == Bool::True().raw()) {
-      // Guard against repeated speculative inlining.
-      if (!speculative_policy_->IsAllowedForInlining(call->deopt_id())) {
-        return;
-      }
-
-      AddReceiverCheck(call);
-      // Remove the original push arguments.
-      for (intptr_t i = 0; i < call->ArgumentCount(); ++i) {
-        PushArgumentInstr* push = call->PushArgumentAt(i);
-        push->ReplaceUsesWith(push->value()->definition());
-        push->RemoveFromGraph();
-      }
-      // Remove call, replace it with 'left'.
-      call->ReplaceUsesWith(left);
-      ASSERT(current_iterator()->Current() == call);
-      current_iterator()->RemoveCurrentFromGraph();
-      return;
-    }
-  }
-  AssertAssignableInstr* assert_as = new (Z) AssertAssignableInstr(
-      call->token_pos(), new (Z) Value(left),
-      new (Z) Value(instantiator_type_args), new (Z) Value(function_type_args),
-      type, Symbols::InTypeCast(), call->deopt_id());
-  ReplaceCall(call, assert_as);
-}
-
 void CallSpecializer::VisitStaticCall(StaticCallInstr* call) {
   if (FlowGraphInliner::TryReplaceStaticCallWithInline(
           flow_graph_, current_iterator(), call, speculative_policy_)) {
diff --git a/runtime/vm/compiler/call_specializer.h b/runtime/vm/compiler/call_specializer.h
index 12fd3e7..c830e02 100644
--- a/runtime/vm/compiler/call_specializer.h
+++ b/runtime/vm/compiler/call_specializer.h
@@ -82,7 +82,6 @@
 
   bool TryInlineInstanceMethod(InstanceCallInstr* call);
   void ReplaceWithInstanceOf(InstanceCallInstr* instr);
-  void ReplaceWithTypeCast(InstanceCallInstr* instr);
 
   void ReplaceCall(Definition* call, Definition* replacement);
 
@@ -107,9 +106,6 @@
   virtual bool TryReplaceInstanceOfWithRangeCheck(InstanceCallInstr* call,
                                                   const AbstractType& type);
 
-  virtual bool TryReplaceTypeCastWithRangeCheck(InstanceCallInstr* call,
-                                                const AbstractType& type);
-
   virtual bool TryOptimizeStaticCallUsingStaticTypes(StaticCallInstr* call) = 0;
 
  protected:
diff --git a/runtime/vm/compiler/code_generator_test.cc b/runtime/vm/compiler/code_generator_test.cc
deleted file mode 100644
index 75486bc..0000000
--- a/runtime/vm/compiler/code_generator_test.cc
+++ /dev/null
@@ -1,348 +0,0 @@
-// 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.
-
-#include "platform/globals.h"
-
-#include "platform/assert.h"
-#include "vm/ast.h"
-#include "vm/class_finalizer.h"
-#include "vm/compiler/assembler/assembler.h"
-#include "vm/compiler/jit/compiler.h"
-#include "vm/dart_entry.h"
-#include "vm/globals.h"
-#include "vm/native_entry.h"
-#include "vm/native_entry_test.h"
-#include "vm/runtime_entry.h"
-#include "vm/symbols.h"
-#include "vm/unit_test.h"
-#include "vm/virtual_memory.h"
-
-namespace dart {
-
-static const TokenPosition kPos = TokenPosition::kMinSource;
-
-CODEGEN_TEST_GENERATE(SimpleReturnCodegen, test) {
-  test->node_sequence()->Add(new ReturnNode(kPos));
-}
-CODEGEN_TEST_RUN(SimpleReturnCodegen, Instance::null())
-
-CODEGEN_TEST_GENERATE(SmiReturnCodegen, test) {
-  LiteralNode* l = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3)));
-  test->node_sequence()->Add(new ReturnNode(kPos, l));
-}
-CODEGEN_TEST_RUN(SmiReturnCodegen, Smi::New(3))
-
-CODEGEN_TEST2_GENERATE(SimpleStaticCallCodegen, function, test) {
-  // Wrap the SmiReturnCodegen test above as a static function and call it.
-  ArgumentListNode* no_arguments = new ArgumentListNode(kPos);
-  test->node_sequence()->Add(
-      new ReturnNode(kPos, new StaticCallNode(kPos, function, no_arguments,
-                                              StaticCallNode::kStatic)));
-}
-CODEGEN_TEST2_RUN(SimpleStaticCallCodegen, SmiReturnCodegen, Smi::New(3))
-
-// Helper to allocate and return a LocalVariable.
-static LocalVariable* NewTestLocalVariable(const char* name) {
-  const String& variable_name =
-      String::ZoneHandle(Symbols::New(Thread::Current(), name));
-  const Type& variable_type = Type::ZoneHandle(Type::DynamicType());
-  return new LocalVariable(kPos, kPos, variable_name, variable_type);
-}
-
-CODEGEN_TEST_GENERATE(ReturnParameterCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  const int num_params = 1;
-  LocalVariable* parameter = NewTestLocalVariable("parameter");
-  LocalScope* local_scope = node_seq->scope();
-  local_scope->InsertParameterAt(0, parameter);
-  ASSERT(local_scope->num_variables() == num_params);
-  const Function& function = test->function();
-  function.set_num_fixed_parameters(num_params);
-  ASSERT(!function.HasOptionalParameters());
-  node_seq->Add(new ReturnNode(kPos, new LoadLocalNode(kPos, parameter)));
-}
-
-CODEGEN_TEST2_GENERATE(StaticCallReturnParameterCodegen, function, test) {
-  // Wrap and call the ReturnParameterCodegen test above as a static function.
-  SequenceNode* node_seq = test->node_sequence();
-  ArgumentListNode* arguments = new ArgumentListNode(kPos);
-  arguments->Add(new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3))));
-  node_seq->Add(new ReturnNode(
-      kPos,
-      new StaticCallNode(kPos, function, arguments, StaticCallNode::kStatic)));
-}
-CODEGEN_TEST2_RUN(StaticCallReturnParameterCodegen,
-                  ReturnParameterCodegen,
-                  Smi::New(3))
-
-CODEGEN_TEST_GENERATE(SmiParamSumCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  const int num_params = 2;
-  LocalVariable* param1 = NewTestLocalVariable("param1");
-  LocalVariable* param2 = NewTestLocalVariable("param2");
-  const int num_locals = 1;
-  LocalVariable* sum = NewTestLocalVariable("sum");
-  LocalScope* local_scope = node_seq->scope();
-  local_scope->InsertParameterAt(0, param1);
-  local_scope->InsertParameterAt(1, param2);
-  local_scope->AddVariable(sum);
-  ASSERT(local_scope->num_variables() == num_params + num_locals);
-  const Function& function = test->function();
-  function.set_num_fixed_parameters(num_params);
-  ASSERT(!function.HasOptionalParameters());
-  BinaryOpNode* add =
-      new BinaryOpNode(kPos, Token::kADD, new LoadLocalNode(kPos, param1),
-                       new LoadLocalNode(kPos, param2));
-  node_seq->Add(new StoreLocalNode(kPos, sum, add));
-  node_seq->Add(new ReturnNode(kPos, new LoadLocalNode(kPos, sum)));
-}
-
-CODEGEN_TEST2_GENERATE(StaticCallSmiParamSumCodegen, function, test) {
-  // Wrap and call the SmiParamSumCodegen test above as a static function.
-  SequenceNode* node_seq = test->node_sequence();
-  ArgumentListNode* arguments = new ArgumentListNode(kPos);
-  arguments->Add(new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3))));
-  arguments->Add(new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(2))));
-  node_seq->Add(new ReturnNode(
-      kPos,
-      new StaticCallNode(kPos, function, arguments, StaticCallNode::kStatic)));
-}
-CODEGEN_TEST2_RUN(StaticCallSmiParamSumCodegen, SmiParamSumCodegen, Smi::New(5))
-
-CODEGEN_TEST_GENERATE(SmiAddCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* a = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3)));
-  LiteralNode* b = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(2)));
-  BinaryOpNode* add_node = new BinaryOpNode(kPos, Token::kADD, a, b);
-  node_seq->Add(new ReturnNode(kPos, add_node));
-}
-CODEGEN_TEST_RUN(SmiAddCodegen, Smi::New(5))
-
-CODEGEN_TEST_GENERATE(GenericAddCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* a =
-      new LiteralNode(kPos, Double::ZoneHandle(Double::New(12.2, Heap::kOld)));
-  LiteralNode* b = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(2)));
-  BinaryOpNode* add_node_1 = new BinaryOpNode(kPos, Token::kADD, a, b);
-  LiteralNode* c =
-      new LiteralNode(kPos, Double::ZoneHandle(Double::New(0.8, Heap::kOld)));
-  BinaryOpNode* add_node_2 = new BinaryOpNode(kPos, Token::kADD, add_node_1, c);
-  node_seq->Add(new ReturnNode(kPos, add_node_2));
-}
-CODEGEN_TEST_RUN(GenericAddCodegen, Double::New(15.0))
-
-CODEGEN_TEST_GENERATE(SmiBinaryOpCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* a = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(4)));
-  LiteralNode* b = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(2)));
-  LiteralNode* c = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(3)));
-  BinaryOpNode* sub_node =
-      new BinaryOpNode(kPos, Token::kSUB, a, b);  // 4 - 2 -> 2.
-  BinaryOpNode* mul_node =
-      new BinaryOpNode(kPos, Token::kMUL, sub_node, c);  // 2 * 3 -> 6.
-  BinaryOpNode* div_node =
-      new BinaryOpNode(kPos, Token::kTRUNCDIV, mul_node, b);  // 6 ~/ 2 -> 3.
-  node_seq->Add(new ReturnNode(kPos, div_node));
-}
-CODEGEN_TEST_RUN(SmiBinaryOpCodegen, Smi::New(3))
-
-CODEGEN_TEST_GENERATE(BoolNotCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* b = new LiteralNode(kPos, Bool::False());
-  UnaryOpNode* not_node = new UnaryOpNode(kPos, Token::kNOT, b);
-  node_seq->Add(new ReturnNode(kPos, not_node));
-}
-CODEGEN_TEST_RUN(BoolNotCodegen, Bool::True().raw())
-
-CODEGEN_TEST_GENERATE(BoolAndCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* a = new LiteralNode(kPos, Bool::True());
-  LiteralNode* b = new LiteralNode(kPos, Bool::False());
-  BinaryOpNode* and_node = new BinaryOpNode(kPos, Token::kAND, a, b);
-  node_seq->Add(new ReturnNode(kPos, and_node));
-}
-CODEGEN_TEST_RUN(BoolAndCodegen, Bool::False().raw())
-
-CODEGEN_TEST_GENERATE(BinaryOpCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* a =
-      new LiteralNode(kPos, Double::ZoneHandle(Double::New(12, Heap::kOld)));
-  LiteralNode* b = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(2)));
-  LiteralNode* c =
-      new LiteralNode(kPos, Double::ZoneHandle(Double::New(0.5, Heap::kOld)));
-  BinaryOpNode* sub_node = new BinaryOpNode(kPos, Token::kSUB, a, b);
-  BinaryOpNode* mul_node = new BinaryOpNode(kPos, Token::kMUL, sub_node, c);
-  BinaryOpNode* div_node = new BinaryOpNode(kPos, Token::kDIV, mul_node, b);
-  node_seq->Add(new ReturnNode(kPos, div_node));
-}
-CODEGEN_TEST_RUN(BinaryOpCodegen, Double::New(2.5));
-
-CODEGEN_TEST_GENERATE(SmiUnaryOpCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* a = new LiteralNode(kPos, Smi::ZoneHandle(Smi::New(12)));
-  UnaryOpNode* neg_node = new UnaryOpNode(kPos, Token::kNEGATE, a);
-  node_seq->Add(new ReturnNode(kPos, neg_node));
-}
-CODEGEN_TEST_RUN(SmiUnaryOpCodegen, Smi::New(-12))
-
-CODEGEN_TEST_GENERATE(DoubleUnaryOpCodegen, test) {
-  SequenceNode* node_seq = test->node_sequence();
-  LiteralNode* a =
-      new LiteralNode(kPos, Double::ZoneHandle(Double::New(12.0, Heap::kOld)));
-  UnaryOpNode* neg_node = new UnaryOpNode(kPos, Token::kNEGATE, a);
-  node_seq->Add(new ReturnNode(kPos, neg_node));
-}
-CODEGEN_TEST_RUN(DoubleUnaryOpCodegen, Double::New(-12.0))
-
-static Library& MakeTestLibrary(const char* url) {
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-
-  const String& lib_url = String::ZoneHandle(zone, Symbols::New(thread, url));
-  Library& lib = Library::ZoneHandle(zone, Library::New(lib_url));
-  lib.Register(thread);
-  Library& core_lib = Library::Handle(zone, Library::CoreLibrary());
-  ASSERT(!core_lib.IsNull());
-  const Namespace& core_ns = Namespace::Handle(
-      zone, Namespace::New(core_lib, Array::Handle(zone), Array::Handle(zone)));
-  lib.AddImport(core_ns);
-  return lib;
-}
-
-static RawClass* LookupClass(const Library& lib, const char* name) {
-  const String& cls_name =
-      String::ZoneHandle(Symbols::New(Thread::Current(), name));
-  return lib.LookupClass(cls_name);
-}
-
-CODEGEN_TEST_GENERATE(StaticCallCodegen, test) {
-  const char* kScriptChars =
-      "class A {\n"
-      "  static bar() { return 42; }\n"
-      "  static fly() { return 5; }\n"
-      "}\n";
-
-  String& url = String::Handle(String::New("dart-test:CompileScript"));
-  String& source = String::Handle(String::New(kScriptChars));
-  Script& script =
-      Script::Handle(Script::New(url, source, RawScript::kScriptTag));
-  Library& lib = MakeTestLibrary("TestLib");
-  EXPECT(CompilerTest::TestCompileScript(lib, script));
-  EXPECT(ClassFinalizer::ProcessPendingClasses());
-  Class& cls = Class::Handle(LookupClass(lib, "A"));
-  EXPECT(!cls.IsNull());
-
-  // 'bar' will not be compiled.
-  String& function_bar_name = String::Handle(String::New("bar"));
-  Function& function_bar =
-      Function::ZoneHandle(cls.LookupStaticFunction(function_bar_name));
-  EXPECT(!function_bar.IsNull());
-  EXPECT(!function_bar.HasCode());
-
-  // 'fly' will be compiled.
-  String& function_fly_name = String::Handle(String::New("fly"));
-  Function& function_fly =
-      Function::ZoneHandle(cls.LookupStaticFunction(function_fly_name));
-  EXPECT(!function_fly.IsNull());
-  EXPECT(CompilerTest::TestCompileFunction(function_fly));
-  EXPECT(function_fly.HasCode());
-
-  ArgumentListNode* no_arguments = new ArgumentListNode(kPos);
-  StaticCallNode* call_bar = new StaticCallNode(
-      kPos, function_bar, no_arguments, StaticCallNode::kStatic);
-  StaticCallNode* call_fly = new StaticCallNode(
-      kPos, function_fly, no_arguments, StaticCallNode::kStatic);
-
-  BinaryOpNode* add_node =
-      new BinaryOpNode(kPos, Token::kADD, call_bar, call_fly);
-
-  test->node_sequence()->Add(new ReturnNode(kPos, add_node));
-}
-CODEGEN_TEST_RUN(StaticCallCodegen, Smi::New(42 + 5))
-
-CODEGEN_TEST_GENERATE(InstanceCallCodegen, test) {
-  const char* kScriptChars =
-      "class A {\n"
-      "  A() {}\n"
-      "  int bar() { return 42; }\n"
-      "}\n";
-
-  String& url = String::Handle(String::New("dart-test:CompileScript"));
-  String& source = String::Handle(String::New(kScriptChars));
-  Script& script =
-      Script::Handle(Script::New(url, source, RawScript::kScriptTag));
-  Library& lib = MakeTestLibrary("TestLib");
-  EXPECT(CompilerTest::TestCompileScript(lib, script));
-  EXPECT(ClassFinalizer::ProcessPendingClasses());
-  Class& cls = Class::ZoneHandle(LookupClass(lib, "A"));
-  EXPECT(!cls.IsNull());
-
-  String& constructor_name = String::Handle(String::New("A."));
-  Function& constructor =
-      Function::ZoneHandle(cls.LookupConstructor(constructor_name));
-  EXPECT(!constructor.IsNull());
-
-  // The unit test creates an instance of class A and calls function 'bar'.
-  String& function_bar_name =
-      String::ZoneHandle(Symbols::New(Thread::Current(), "bar"));
-  ArgumentListNode* no_arguments = new ArgumentListNode(kPos);
-  const TypeArguments& no_type_arguments = TypeArguments::ZoneHandle();
-  InstanceCallNode* call_bar =
-      new InstanceCallNode(kPos,
-                           new ConstructorCallNode(kPos, no_type_arguments,
-                                                   constructor, no_arguments),
-                           function_bar_name, no_arguments);
-
-  test->node_sequence()->Add(new ReturnNode(kPos, call_bar));
-}
-CODEGEN_TEST_RUN(InstanceCallCodegen, Smi::New(42))
-
-// Test allocation of dart objects.
-CODEGEN_TEST_GENERATE(AllocateNewObjectCodegen, test) {
-  const char* kScriptChars =
-      "class A {\n"
-      "  A() {}\n"
-      "  static bar() { return 42; }\n"
-      "}\n";
-
-  String& url = String::Handle(String::New("dart-test:CompileScript"));
-  String& source = String::Handle(String::New(kScriptChars));
-  Script& script =
-      Script::Handle(Script::New(url, source, RawScript::kScriptTag));
-  Library& lib = MakeTestLibrary("TestLib");
-  EXPECT(CompilerTest::TestCompileScript(lib, script));
-  EXPECT(ClassFinalizer::ProcessPendingClasses());
-  Class& cls = Class::ZoneHandle(LookupClass(lib, "A"));
-  EXPECT(!cls.IsNull());
-
-  String& constructor_name = String::Handle(String::New("A."));
-  Function& constructor =
-      Function::ZoneHandle(cls.LookupConstructor(constructor_name));
-  EXPECT(!constructor.IsNull());
-
-  const TypeArguments& no_type_arguments = TypeArguments::ZoneHandle();
-  ArgumentListNode* no_arguments = new ArgumentListNode(kPos);
-  test->node_sequence()->Add(
-      new ReturnNode(kPos, new ConstructorCallNode(kPos, no_type_arguments,
-                                                   constructor, no_arguments)));
-}
-
-CODEGEN_TEST_RAW_RUN(AllocateNewObjectCodegen, function) {
-  const Object& result = Object::Handle(
-      DartEntry::InvokeFunction(function, Object::empty_array()));
-  EXPECT(!result.IsError());
-  const GrowableObjectArray& libs = GrowableObjectArray::Handle(
-      Isolate::Current()->object_store()->libraries());
-  ASSERT(!libs.IsNull());
-  // App lib is the last one that was loaded.
-  intptr_t num_libs = libs.Length();
-  Library& app_lib = Library::Handle();
-  app_lib ^= libs.At(num_libs - 1);
-  ASSERT(!app_lib.IsNull());
-  const Class& cls = Class::Handle(app_lib.LookupClass(
-      String::Handle(Symbols::New(Thread::Current(), "A"))));
-  EXPECT_EQ(cls.raw(), result.clazz());
-}
-
-}  // namespace dart
diff --git a/runtime/vm/compiler/compiler_pass.cc b/runtime/vm/compiler/compiler_pass.cc
index 8f311c6..988d0834 100644
--- a/runtime/vm/compiler/compiler_pass.cc
+++ b/runtime/vm/compiler/compiler_pass.cc
@@ -276,7 +276,6 @@
 }
 
 COMPILER_PASS(ComputeSSA, {
-  CSTAT_TIMER_SCOPE(state->thread, ssa_timer);
   // Transform to SSA (virtual register 0 and no inlining arguments).
   flow_graph->ComputeSSA(0, NULL);
 });
@@ -289,7 +288,6 @@
               { FlowGraphInliner::SetInliningId(flow_graph, 0); });
 
 COMPILER_PASS(Inlining, {
-  CSTAT_TIMER_SCOPE(state->thread, graphinliner_timer);
   FlowGraphInliner inliner(
       flow_graph, &state->inline_id_to_function, &state->inline_id_to_token_pos,
       &state->caller_inline_id, state->speculative_policy, state->precompiler);
@@ -397,6 +395,8 @@
 });
 
 COMPILER_PASS(AllocateRegisters, {
+  // Ensure loop hierarchy has been computed.
+  flow_graph->GetLoopHierarchy();
   // Perform register allocation on the SSA graph.
   FlowGraphAllocator allocator(*flow_graph);
   allocator.AllocateRegisters();
diff --git a/runtime/vm/compiler/compiler_sources.gni b/runtime/vm/compiler/compiler_sources.gni
index 9300603..c771039 100644
--- a/runtime/vm/compiler/compiler_sources.gni
+++ b/runtime/vm/compiler/compiler_sources.gni
@@ -63,6 +63,8 @@
   "backend/locations.h",
   "backend/locations_helpers.h",
   "backend/locations_helpers_arm.h",
+  "backend/loops.cc",
+  "backend/loops.h",
   "backend/range_analysis.cc",
   "backend/range_analysis.h",
   "backend/redundancy_elimination.cc",
@@ -125,6 +127,4 @@
   "backend/locations_helpers_test.cc",
   "backend/range_analysis_test.cc",
   "cha_test.cc",
-  "code_generator_test.cc",
-  "frontend/flow_graph_builder_test.cc",
 ]
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
index af1c0c7..b122dab 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.cc
@@ -571,6 +571,12 @@
       TargetEntryInstr(AllocateBlockId(), CurrentTryIndex(), GetNextDeoptId());
 }
 
+FunctionEntryInstr* BaseFlowGraphBuilder::BuildFunctionEntry(
+    GraphEntryInstr* graph_entry) {
+  return new (Z) FunctionEntryInstr(graph_entry, AllocateBlockId(),
+                                    CurrentTryIndex(), GetNextDeoptId());
+}
+
 JoinEntryInstr* BaseFlowGraphBuilder::BuildJoinEntry(intptr_t try_index) {
   return new (Z) JoinEntryInstr(AllocateBlockId(), try_index, GetNextDeoptId());
 }
diff --git a/runtime/vm/compiler/frontend/base_flow_graph_builder.h b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
index 28d4a4b..b37c2db 100644
--- a/runtime/vm/compiler/frontend/base_flow_graph_builder.h
+++ b/runtime/vm/compiler/frontend/base_flow_graph_builder.h
@@ -125,7 +125,7 @@
         context_level_array_(context_level_array),
         context_depth_(0),
         last_used_block_id_(last_used_block_id),
-        current_try_index_(CatchClauseNode::kInvalidTryIndex),
+        current_try_index_(kInvalidTryIndex),
         next_used_try_index_(0),
         stack_(NULL),
         pending_argument_count_(0),
@@ -194,6 +194,7 @@
   ArgumentArray GetArguments(int count);
 
   TargetEntryInstr* BuildTargetEntry();
+  FunctionEntryInstr* BuildFunctionEntry(GraphEntryInstr* graph_entry);
   JoinEntryInstr* BuildJoinEntry();
   JoinEntryInstr* BuildJoinEntry(intptr_t try_index);
 
diff --git a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
index 7caef9d..6d48c90 100644
--- a/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/bytecode_flow_graph_builder.cc
@@ -1011,8 +1011,17 @@
 }
 
 void BytecodeFlowGraphBuilder::BuildJumpIfNoAsserts() {
+  ASSERT(B->stack_ == nullptr);
   if (!isolate()->asserts()) {
     BuildJump();
+    // Skip all instructions up to the target PC, as they are all unreachable.
+    // If not skipped, some of the assert code may be considered reachable
+    // (if it contains jumps) and generated. The problem is that generated
+    // code may expect values left on the stack from unreachable
+    // (and not generated) code which immediately follows this Jump.
+    const intptr_t target_pc = pc_ + DecodeOperandT().value();
+    ASSERT(target_pc > pc_);
+    pc_ = target_pc - 1;
   }
 }
 
@@ -1107,6 +1116,7 @@
   LoadStackSlots(1);
   ASSERT(code_.is_open());
   code_ += B->Return(position_);
+  ASSERT(B->stack_ == nullptr);
 }
 
 void BytecodeFlowGraphBuilder::BuildTrap() {
@@ -1127,8 +1137,7 @@
     // rethrow
     LoadStackSlots(2);
     GetArguments(2);
-    code_ += Fragment(new (Z) ReThrowInstr(position_,
-                                           CatchClauseNode::kInvalidTryIndex,
+    code_ += Fragment(new (Z) ReThrowInstr(position_, kInvalidTryIndex,
                                            B->GetNextDeoptId()))
                  .closed();
   }
@@ -1327,7 +1336,7 @@
   const uword pc_offset =
       KernelBytecode::BytecodePcToOffset(pc, /* is_return_address = */ true);
   PcDescriptors::Iterator iter(descriptors, RawPcDescriptors::kAnyKind);
-  intptr_t try_index = CatchClauseNode::kInvalidTryIndex;
+  intptr_t try_index = kInvalidTryIndex;
   while (iter.MoveNext()) {
     const intptr_t current_try_index = iter.TryIndex();
     const uword start_pc = iter.PcOffset();
@@ -1420,6 +1429,9 @@
         handler_info.handler_pc_offset, /* is_return_address = */ false);
     JoinEntryInstr* join = EnsureControlFlowJoin(descriptors, handler_pc);
 
+    // Make sure exception handler starts with SetFrame bytecode instruction.
+    InstructionAt(handler_pc, KernelBytecode::kSetFrame);
+
     const Array& handler_types =
         Array::ZoneHandle(Z, handlers.GetHandledTypes(try_index));
 
@@ -1447,9 +1459,11 @@
 
   ProcessICDataInObjectPool(object_pool_);
 
-  TargetEntryInstr* normal_entry = B->BuildTargetEntry();
   GraphEntryInstr* graph_entry =
-      new (Z) GraphEntryInstr(*parsed_function_, normal_entry, B->osr_id_);
+      new (Z) GraphEntryInstr(*parsed_function_, B->osr_id_);
+
+  auto normal_entry = B->BuildFunctionEntry(graph_entry);
+  graph_entry->set_normal_entry(normal_entry);
 
   const PcDescriptors& descriptors =
       PcDescriptors::Handle(Z, bytecode.pc_descriptors());
@@ -1475,9 +1489,9 @@
       }
       code_ = Fragment(join);
       B->SetCurrentTryIndex(join->try_index());
-    } else if (code_.is_closed()) {
-      // Skip unreachable bytecode instructions.
-      continue;
+    } else {
+      // Unreachable bytecode is not allowed.
+      ASSERT(!code_.is_closed());
     }
 
     BuildInstruction(KernelBytecode::DecodeOpcode(bytecode_instr_));
diff --git a/runtime/vm/compiler/frontend/bytecode_reader.cc b/runtime/vm/compiler/frontend/bytecode_reader.cc
index f1455d5..49dec04 100644
--- a/runtime/vm/compiler/frontend/bytecode_reader.cc
+++ b/runtime/vm/compiler/frontend/bytecode_reader.cc
@@ -34,12 +34,21 @@
       type_translator_(*type_translator),
       active_class_(active_class) {}
 
+bool BytecodeMetadataHelper::HasBytecode(intptr_t node_offset) {
+  const intptr_t md_offset = GetNextMetadataPayloadOffset(node_offset);
+  return (md_offset >= 0);
+}
+
 void BytecodeMetadataHelper::ReadMetadata(const Function& function) {
 #if !defined(PRODUCT)
   TimelineDurationScope tds(Thread::Current(), Timeline::GetCompilerStream(),
                             "BytecodeMetadataHelper::ReadMetadata");
+  // This increases bytecode reading time by ~7%, so only keep it around for
+  // debugging.
+#if defined(DEBUG)
   tds.SetNumArguments(1);
   tds.CopyArgument(0, "Function", function.ToQualifiedCString());
+#endif  // defined(DEBUG)
 #endif  // !defined(PRODUCT)
 
   const intptr_t node_offset = function.kernel_offset();
@@ -48,9 +57,22 @@
     return;
   }
 
+  ASSERT(Thread::Current()->IsMutatorThread());
+
   AlternativeReadingScope alt(&helper_->reader_, &H.metadata_payloads(),
                               md_offset);
 
+  const intptr_t version = helper_->reader_.ReadUInt();
+  if ((version < KernelBytecode::kMinSupportedBytecodeFormatVersion) ||
+      (version > KernelBytecode::kMaxSupportedBytecodeFormatVersion)) {
+    FATAL3(
+        "Unsupported Dart bytecode format version %" Pd
+        ". This version of Dart VM supports bytecode format versions from %" Pd
+        " to %" Pd ".",
+        version, KernelBytecode::kMinSupportedBytecodeFormatVersion,
+        KernelBytecode::kMaxSupportedBytecodeFormatVersion);
+  }
+
   const int kHasExceptionsTableFlag = 1 << 0;
   const int kHasNullableFieldsFlag = 1 << 1;
   const int kHasClosuresFlag = 1 << 2;
@@ -757,6 +779,7 @@
   ASSERT(!FLAG_precompiled_mode);
   ASSERT(!function.HasBytecode());
   ASSERT(thread->sticky_error() == Error::null());
+  ASSERT(Thread::Current()->IsMutatorThread());
 
   LongJumpScope jump;
   if (setjmp(*jump.Set()) == 0) {
diff --git a/runtime/vm/compiler/frontend/bytecode_reader.h b/runtime/vm/compiler/frontend/bytecode_reader.h
index f422003..bbde906 100644
--- a/runtime/vm/compiler/frontend/bytecode_reader.h
+++ b/runtime/vm/compiler/frontend/bytecode_reader.h
@@ -22,6 +22,8 @@
                                   TypeTranslator* type_translator,
                                   ActiveClass* active_class);
 
+  bool HasBytecode(intptr_t node_offset);
+
   void ReadMetadata(const Function& function);
 
  private:
diff --git a/runtime/vm/compiler/frontend/constant_evaluator.cc b/runtime/vm/compiler/frontend/constant_evaluator.cc
index 4daeb02..674a6b3 100644
--- a/runtime/vm/compiler/frontend/constant_evaluator.cc
+++ b/runtime/vm/compiler/frontend/constant_evaluator.cc
@@ -213,6 +213,23 @@
   return Instance::ZoneHandle(Z, result_.raw());
 }
 
+Instance& ConstantEvaluator::EvaluateStaticInvocation(intptr_t offset,
+                                                      bool reset_position) {
+  if (!GetCachedConstant(offset, &result_)) {
+    ASSERT(IsAllowedToEvaluate());
+    intptr_t original_offset = helper_->ReaderOffset();
+    helper_->SetOffset(offset);
+    helper_->ReadTag();  // skip tag.
+    EvaluateStaticInvocation();
+
+    CacheConstantValue(offset, result_);
+    if (reset_position) helper_->SetOffset(original_offset);
+  }
+  // We return a new `ZoneHandle` here on purpose: The intermediate language
+  // instructions do not make a copy of the handle, so we do it.
+  return Instance::ZoneHandle(Z, result_.raw());
+}
+
 RawObject* ConstantEvaluator::EvaluateExpressionSafe(intptr_t offset) {
   LongJumpScope jump;
   if (setjmp(*jump.Set()) == 0) {
@@ -1007,9 +1024,6 @@
   // is running, and thus change the value of 'compile_time_constants';
   // do not assert that 'compile_time_constants' has not changed.
   constants.Release();
-  if (FLAG_compiler_stats && is_present) {
-    ++H.thread()->compiler_stats()->num_const_cache_hits;
-  }
   return is_present;
 }
 
diff --git a/runtime/vm/compiler/frontend/constant_evaluator.h b/runtime/vm/compiler/frontend/constant_evaluator.h
index f71e48f..6ce86bc 100644
--- a/runtime/vm/compiler/frontend/constant_evaluator.h
+++ b/runtime/vm/compiler/frontend/constant_evaluator.h
@@ -51,6 +51,8 @@
   Instance& EvaluateMapLiteral(intptr_t offset, bool reset_position = true);
   Instance& EvaluateConstructorInvocation(intptr_t offset,
                                           bool reset_position = true);
+  Instance& EvaluateStaticInvocation(intptr_t offset,
+                                     bool reset_position = true);
   RawObject* EvaluateExpressionSafe(intptr_t offset);
   RawObject* EvaluateAnnotations();
 
diff --git a/runtime/vm/compiler/frontend/flow_graph_builder.cc b/runtime/vm/compiler/frontend/flow_graph_builder.cc
index 3e68c2e..2f04698 100644
--- a/runtime/vm/compiler/frontend/flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/flow_graph_builder.cc
@@ -6,54 +6,18 @@
 
 #include "vm/compiler/frontend/flow_graph_builder.h"
 
-#include "lib/invocation_mirror.h"
-#include "vm/ast_printer.h"
-#include "vm/bit_vector.h"
-#include "vm/class_finalizer.h"
+#include "vm/compiler/backend/branch_optimizer.h"
 #include "vm/compiler/backend/flow_graph.h"
-#include "vm/compiler/backend/flow_graph_compiler.h"
 #include "vm/compiler/backend/il.h"
-#include "vm/compiler/backend/il_printer.h"
 #include "vm/compiler/frontend/kernel_to_il.h"
-#include "vm/compiler/frontend/prologue_builder.h"
-#include "vm/compiler/jit/compiler.h"
-#include "vm/exceptions.h"
-#include "vm/flags.h"
-#include "vm/heap/heap.h"
-#include "vm/isolate.h"
 #include "vm/object.h"
-#include "vm/object_store.h"
-#include "vm/os.h"
-#include "vm/parser.h"
-#include "vm/report.h"
-#include "vm/resolver.h"
-#include "vm/scopes.h"
-#include "vm/stack_frame.h"
-#include "vm/stub_code.h"
-#include "vm/symbols.h"
-#include "vm/token.h"
 #include "vm/zone.h"
 
 namespace dart {
 
-DEFINE_FLAG(bool, print_ast, false, "Print abstract syntax tree.");
-DEFINE_FLAG(bool, print_scopes, false, "Print scopes of local variables.");
-DEFINE_FLAG(bool,
-            trace_type_check_elimination,
-            false,
-            "Trace type check elimination at compile time.");
-
-DECLARE_FLAG(bool, profile_vm);
-
 // Quick access to the locally defined zone() method.
 #define Z (zone())
 
-// Quick access to the locally defined thread() method.
-#define T (thread())
-
-// Quick synthetic token position.
-#define ST(token_pos) ((token_pos).ToSynthetic())
-
 // TODO(srdjan): Allow compiler to add constants as they are encountered in
 // the compilation.
 const double kCommonDoubleConstants[] = {
@@ -64,7 +28,7 @@
     1.4426950408889634, 0.4342944819032518, 3.1415926535897932,
     0.7071067811865476, 1.4142135623730951};
 
-uword FlowGraphBuilder::FindDoubleConstant(double value) {
+uword FindDoubleConstant(double value) {
   intptr_t len = sizeof(kCommonDoubleConstants) / sizeof(double);  // NOLINT
   for (intptr_t i = 0; i < len; i++) {
     if (Utils::DoublesBitEqual(value, kCommonDoubleConstants[i])) {
@@ -74,251 +38,6 @@
   return 0;
 }
 
-#define RECOGNIZE_FACTORY(symbol, class_name, constructor_name, cid, fp)       \
-  {Symbols::k##symbol##Id, cid, fp, #symbol ", " #cid},  // NOLINT
-
-static struct {
-  intptr_t symbol_id;
-  intptr_t cid;
-  intptr_t finger_print;
-  const char* name;
-} factory_recognizer_list[] = {RECOGNIZED_LIST_FACTORY_LIST(RECOGNIZE_FACTORY){
-    Symbols::kIllegal, -1, -1, NULL}};
-
-#undef RECOGNIZE_FACTORY
-
-intptr_t FactoryRecognizer::ResultCid(const Function& factory) {
-  ASSERT(factory.IsFactory());
-  const Class& function_class = Class::Handle(factory.Owner());
-  const Library& lib = Library::Handle(function_class.library());
-  ASSERT((lib.raw() == Library::CoreLibrary()) ||
-         (lib.raw() == Library::TypedDataLibrary()));
-  const String& factory_name = String::Handle(factory.name());
-  for (intptr_t i = 0;
-       factory_recognizer_list[i].symbol_id != Symbols::kIllegal; i++) {
-    if (String::EqualsIgnoringPrivateKey(
-            factory_name,
-            Symbols::Symbol(factory_recognizer_list[i].symbol_id))) {
-      return factory_recognizer_list[i].cid;
-    }
-  }
-  return kDynamicCid;
-}
-
-// Base class for a stack of enclosing statements of interest (e.g.,
-// blocks (breakable) and loops (continuable)).
-class NestedStatement : public ValueObject {
- public:
-  FlowGraphBuilder* owner() const { return owner_; }
-  const SourceLabel* label() const { return label_; }
-  NestedStatement* outer() const { return outer_; }
-  JoinEntryInstr* break_target() const { return break_target_; }
-
-  virtual intptr_t ContextLevel() const;
-  virtual void AdjustContextLevel(intptr_t context_level);
-
-  virtual JoinEntryInstr* BreakTargetFor(SourceLabel* label);
-  virtual JoinEntryInstr* ContinueTargetFor(SourceLabel* label);
-
- protected:
-  NestedStatement(FlowGraphBuilder* owner, const SourceLabel* label)
-      : owner_(owner),
-        label_(label),
-        outer_(owner->nesting_stack_),
-        break_target_(NULL),
-        try_index_(owner->try_index()) {
-    // Push on the owner's nesting stack.
-    owner->nesting_stack_ = this;
-  }
-
-  intptr_t try_index() const { return try_index_; }
-
-  virtual ~NestedStatement() {
-    // Pop from the owner's nesting stack.
-    ASSERT(owner_->nesting_stack_ == this);
-    owner_->nesting_stack_ = outer_;
-  }
-
- private:
-  FlowGraphBuilder* owner_;
-  const SourceLabel* label_;
-  NestedStatement* outer_;
-
-  JoinEntryInstr* break_target_;
-  const intptr_t try_index_;
-};
-
-intptr_t NestedStatement::ContextLevel() const {
-  // Context level is determined by the innermost nested statement having one.
-  return (outer() == NULL) ? 0 : outer()->ContextLevel();
-}
-
-void NestedStatement::AdjustContextLevel(intptr_t context_level) {
-  // There must be a NestedContextAdjustment on the nesting stack.
-  ASSERT(outer() != NULL);
-  outer()->AdjustContextLevel(context_level);
-}
-
-intptr_t FlowGraphBuilder::GetNextDeoptId() const {
-  intptr_t deopt_id = thread()->compiler_state().GetNextDeoptId();
-  if (context_level_array_ != NULL) {
-    intptr_t level = context_level();
-    context_level_array_->Add(deopt_id);
-    context_level_array_->Add(level);
-  }
-  return deopt_id;
-}
-
-intptr_t FlowGraphBuilder::context_level() const {
-  return (nesting_stack() == NULL) ? 0 : nesting_stack()->ContextLevel();
-}
-
-JoinEntryInstr* NestedStatement::BreakTargetFor(SourceLabel* label) {
-  if (label != label_) return NULL;
-  if (break_target_ == NULL) {
-    break_target_ = new (owner()->zone()) JoinEntryInstr(
-        owner()->AllocateBlockId(), try_index(), owner()->GetNextDeoptId());
-  }
-  return break_target_;
-}
-
-JoinEntryInstr* NestedStatement::ContinueTargetFor(SourceLabel* label) {
-  return NULL;
-}
-
-// A nested statement that has its own context level.
-class NestedBlock : public NestedStatement {
- public:
-  NestedBlock(FlowGraphBuilder* owner, SequenceNode* node)
-      : NestedStatement(owner, node->label()), scope_(node->scope()) {}
-
-  virtual intptr_t ContextLevel() const;
-
- private:
-  LocalScope* scope_;
-};
-
-intptr_t NestedBlock::ContextLevel() const {
-  return ((scope_ == NULL) || (scope_->num_context_variables() == 0))
-             ? NestedStatement::ContextLevel()
-             : scope_->context_level();
-}
-
-// A nested statement reflecting a context level adjustment.
-class NestedContextAdjustment : public NestedStatement {
- public:
-  NestedContextAdjustment(FlowGraphBuilder* owner, intptr_t context_level)
-      : NestedStatement(owner, NULL), context_level_(context_level) {}
-
-  virtual intptr_t ContextLevel() const { return context_level_; }
-
-  virtual void AdjustContextLevel(intptr_t context_level) {
-    ASSERT(context_level <= context_level_);
-    context_level_ = context_level;
-  }
-
- private:
-  intptr_t context_level_;
-};
-
-// A nested statement that can be the target of a continue as well as a
-// break.
-class NestedLoop : public NestedStatement {
- public:
-  NestedLoop(FlowGraphBuilder* owner, SourceLabel* label)
-      : NestedStatement(owner, label), continue_target_(NULL) {
-    owner->IncrementLoopDepth();
-  }
-
-  virtual ~NestedLoop() { owner()->DecrementLoopDepth(); }
-
-  JoinEntryInstr* continue_target() const { return continue_target_; }
-
-  virtual JoinEntryInstr* ContinueTargetFor(SourceLabel* label);
-
- private:
-  JoinEntryInstr* continue_target_;
-};
-
-JoinEntryInstr* NestedLoop::ContinueTargetFor(SourceLabel* label) {
-  if (label != this->label()) return NULL;
-  if (continue_target_ == NULL) {
-    continue_target_ = new (owner()->zone()) JoinEntryInstr(
-        owner()->AllocateBlockId(), try_index(), owner()->GetNextDeoptId());
-  }
-  return continue_target_;
-}
-
-// A nested switch which can be the target of a break if labeled, and whose
-// cases can be the targets of continues.
-class NestedSwitch : public NestedStatement {
- public:
-  NestedSwitch(FlowGraphBuilder* owner, SwitchNode* node);
-
-  virtual JoinEntryInstr* ContinueTargetFor(SourceLabel* label);
-
- private:
-  GrowableArray<SourceLabel*> case_labels_;
-  GrowableArray<JoinEntryInstr*> case_targets_;
-};
-
-NestedSwitch::NestedSwitch(FlowGraphBuilder* owner, SwitchNode* node)
-    : NestedStatement(owner, node->label()),
-      case_labels_(node->body()->length()),
-      case_targets_(node->body()->length()) {
-  SequenceNode* body = node->body();
-  for (intptr_t i = 0; i < body->length(); ++i) {
-    CaseNode* case_node = body->NodeAt(i)->AsCaseNode();
-    if (case_node != NULL) {
-      case_labels_.Add(case_node->label());
-      case_targets_.Add(NULL);
-    }
-  }
-}
-
-JoinEntryInstr* NestedSwitch::ContinueTargetFor(SourceLabel* label) {
-  // Allocate a join for a case clause that matches the label.  This block
-  // is not necessarily targeted by a continue, but we always use a join in
-  // the graph anyway.
-  for (intptr_t i = 0; i < case_labels_.length(); ++i) {
-    if (label != case_labels_[i]) continue;
-    if (case_targets_[i] == NULL) {
-      case_targets_[i] = new (owner()->zone()) JoinEntryInstr(
-          owner()->AllocateBlockId(), try_index(), owner()->GetNextDeoptId());
-    }
-    return case_targets_[i];
-  }
-  return NULL;
-}
-
-FlowGraphBuilder::FlowGraphBuilder(
-    const ParsedFunction& parsed_function,
-    const ZoneGrowableArray<const ICData*>& ic_data_array,
-    ZoneGrowableArray<intptr_t>* context_level_array,
-    InlineExitCollector* exit_collector,
-    intptr_t osr_id)
-    : parsed_function_(parsed_function),
-      ic_data_array_(ic_data_array),
-      context_level_array_(context_level_array),
-      num_stack_locals_(parsed_function.num_stack_locals()),
-      exit_collector_(exit_collector),
-      last_used_block_id_(0),  // 0 is used for the graph entry.
-      try_index_(CatchClauseNode::kInvalidTryIndex),
-      catch_try_index_(CatchClauseNode::kInvalidTryIndex),
-      loop_depth_(0),
-      graph_entry_(NULL),
-      temp_count_(0),
-      args_pushed_(0),
-      nesting_stack_(NULL),
-      osr_id_(osr_id),
-      jump_count_(0),
-      await_joins_(new (Z) ZoneGrowableArray<JoinEntryInstr*>()),
-      await_token_positions_(new (Z) ZoneGrowableArray<TokenPosition>()) {}
-
-void FlowGraphBuilder::AddCatchEntry(CatchBlockEntryInstr* entry) {
-  graph_entry_->AddCatchEntry(entry);
-}
-
 void InlineExitCollector::PrepareGraphs(FlowGraph* callee_graph) {
   ASSERT(callee_graph->graph_entry()->SuccessorCount() == 1);
   ASSERT(callee_graph->max_block_id() > caller_graph_->max_block_id());
@@ -511,7 +230,7 @@
   }
 }
 
-void InlineExitCollector::ReplaceCall(TargetEntryInstr* callee_entry) {
+void InlineExitCollector::ReplaceCall(BlockEntryInstr* callee_entry) {
   ASSERT(call_->previous() != NULL);
   ASSERT(call_->next() != NULL);
   BlockEntryInstr* call_block = call_->GetBlock();
@@ -542,7 +261,11 @@
                                    CompilerState::Current().GetNextDeoptId()),
         CompilerState::Current().GetNextDeoptId());  // No number check.
     branch->InheritDeoptTarget(zone(), call_);
-    *branch->true_successor_address() = callee_entry;
+
+    auto true_target = BranchSimplifier::ToTargetEntry(zone(), callee_entry);
+    callee_entry->ReplaceAsPredecessorWith(true_target);
+
+    *branch->true_successor_address() = true_target;
     *branch->false_successor_address() = false_block;
 
     call_->previous()->AppendInstruction(branch);
@@ -553,7 +276,7 @@
     call_->ReplaceUsesWith(caller_graph_->constant_null());
 
     // Update dominator tree.
-    call_block->AddDominatedBlock(callee_entry);
+    call_block->AddDominatedBlock(true_target);
     call_block->AddDominatedBlock(false_block);
 
   } else {
@@ -626,3866 +349,7 @@
   call_->UnuseAllInputs();
 }
 
-void EffectGraphVisitor::Append(const EffectGraphVisitor& other_fragment) {
-  ASSERT(is_open());
-  if (other_fragment.is_empty()) return;
-  if (is_empty()) {
-    entry_ = other_fragment.entry();
-  } else {
-    exit()->LinkTo(other_fragment.entry());
-  }
-  exit_ = other_fragment.exit();
-}
-
-Value* EffectGraphVisitor::Bind(Definition* definition) {
-  ASSERT(is_open());
-  owner()->DeallocateTemps(definition->InputCount());
-  owner()->add_args_pushed(-definition->ArgumentCount());
-  definition->set_temp_index(owner()->AllocateTemp());
-  if (is_empty()) {
-    entry_ = definition;
-  } else {
-    exit()->LinkTo(definition);
-  }
-  exit_ = definition;
-  return new (Z) Value(definition);
-}
-
-void EffectGraphVisitor::Do(Definition* definition) {
-  ASSERT(is_open());
-  owner()->DeallocateTemps(definition->InputCount());
-  owner()->add_args_pushed(-definition->ArgumentCount());
-  if (is_empty()) {
-    entry_ = definition;
-  } else {
-    exit()->LinkTo(definition);
-  }
-  exit_ = definition;
-}
-
-void EffectGraphVisitor::AddInstruction(Instruction* instruction) {
-  ASSERT(is_open());
-  ASSERT(instruction->IsPushArgument() || !instruction->IsDefinition());
-  ASSERT(!instruction->IsBlockEntry());
-  owner()->DeallocateTemps(instruction->InputCount());
-  owner()->add_args_pushed(-instruction->ArgumentCount());
-  if (is_empty()) {
-    entry_ = exit_ = instruction;
-  } else {
-    exit()->LinkTo(instruction);
-    exit_ = instruction;
-  }
-}
-
-void EffectGraphVisitor::AddReturnExit(TokenPosition token_pos, Value* value) {
-  ASSERT(is_open());
-  ReturnInstr* return_instr =
-      new (Z) ReturnInstr(token_pos, value, owner()->GetNextDeoptId());
-  AddInstruction(return_instr);
-  InlineExitCollector* exit_collector = owner()->exit_collector();
-  if (exit_collector != NULL) {
-    exit_collector->AddExit(return_instr);
-  }
-  CloseFragment();
-}
-
-void EffectGraphVisitor::Goto(JoinEntryInstr* join) {
-  ASSERT(is_open());
-  if (is_empty()) {
-    entry_ = new (Z) GotoInstr(join, owner()->GetNextDeoptId());
-  } else {
-    exit()->Goto(join);
-  }
-  CloseFragment();
-}
-
-// Appends a graph fragment to a block entry instruction.  Returns the entry
-// instruction if the fragment was empty or else the exit of the fragment if
-// it was non-empty (so NULL if the fragment is closed).
-//
-// Note that the fragment is no longer a valid fragment after calling this
-// function -- the fragment is closed at its entry because the entry has a
-// predecessor in the graph.
-static Instruction* AppendFragment(BlockEntryInstr* entry,
-                                   const EffectGraphVisitor& fragment) {
-  if (fragment.is_empty()) return entry;
-  entry->LinkTo(fragment.entry());
-  return fragment.exit();
-}
-
-void EffectGraphVisitor::Join(const TestGraphVisitor& test_fragment,
-                              const EffectGraphVisitor& true_fragment,
-                              const EffectGraphVisitor& false_fragment) {
-  // We have: a test graph fragment with zero, one, or two available exits;
-  // and a pair of effect graph fragments with zero or one available exits.
-  // We want to append the branch and (if necessary) a join node to this
-  // graph fragment.
-  ASSERT(is_open());
-
-  // 1. Connect the test to this graph.
-  Append(test_fragment);
-
-  // 2. Connect the true and false bodies to the test and record their exits
-  // (if any).
-  BlockEntryInstr* true_entry = test_fragment.CreateTrueSuccessor();
-  Instruction* true_exit = AppendFragment(true_entry, true_fragment);
-
-  BlockEntryInstr* false_entry = test_fragment.CreateFalseSuccessor();
-  Instruction* false_exit = AppendFragment(false_entry, false_fragment);
-
-  // 3. Add a join or select one (or neither) of the arms as exit.
-  if (true_exit == NULL) {
-    exit_ = false_exit;  // May be NULL.
-  } else if (false_exit == NULL) {
-    exit_ = true_exit;
-  } else {
-    JoinEntryInstr* join =
-        new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                               owner()->GetNextDeoptId());
-    true_exit->Goto(join);
-    false_exit->Goto(join);
-    exit_ = join;
-  }
-}
-
-void EffectGraphVisitor::TieLoop(
-    TokenPosition token_pos,
-    const TestGraphVisitor& test_fragment,
-    const EffectGraphVisitor& body_fragment,
-    const EffectGraphVisitor& test_preamble_fragment) {
-  // We have: a test graph fragment with zero, one, or two available exits;
-  // and an effect graph fragment with zero or one available exits.  We want
-  // to append the 'while loop' consisting of the test graph fragment as
-  // condition and the effect graph fragment as body.
-  ASSERT(is_open());
-
-  // 1. Connect the body to the test if it is reachable, and if so record
-  // its exit (if any).
-  BlockEntryInstr* body_entry = test_fragment.CreateTrueSuccessor();
-  Instruction* body_exit = AppendFragment(body_entry, body_fragment);
-
-  // 2. Connect the test to this graph, including the body if reachable and
-  // using a fresh join node if the body is reachable and has an open exit.
-  if (body_exit == NULL) {
-    Append(test_preamble_fragment);
-    Append(test_fragment);
-  } else {
-    JoinEntryInstr* join =
-        new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                               owner()->GetNextDeoptId());
-    CheckStackOverflowInstr* check = new (Z) CheckStackOverflowInstr(
-        token_pos, owner()->loop_depth(), owner()->GetNextDeoptId());
-    join->LinkTo(check);
-    if (!test_preamble_fragment.is_empty()) {
-      check->LinkTo(test_preamble_fragment.entry());
-      test_preamble_fragment.exit()->LinkTo(test_fragment.entry());
-    } else {
-      check->LinkTo(test_fragment.entry());
-    }
-    Goto(join);
-    body_exit->Goto(join);
-  }
-
-  // 3. Set the exit to the graph to be the false successor of the test, a
-  // fresh target node
-  exit_ = test_fragment.CreateFalseSuccessor();
-}
-
-PushArgumentInstr* EffectGraphVisitor::PushArgument(Value* value) {
-  owner_->add_args_pushed(1);
-  PushArgumentInstr* result = new (Z) PushArgumentInstr(value);
-  AddInstruction(result);
-  return result;
-}
-
-Definition* EffectGraphVisitor::BuildStoreTemp(const LocalVariable& local,
-                                               Value* value,
-                                               TokenPosition token_pos) {
-  ASSERT(!local.is_captured());
-  ASSERT(!token_pos.IsClassifying());
-  return new (Z) StoreLocalInstr(local, value, ST(token_pos));
-}
-
-Definition* EffectGraphVisitor::BuildStoreExprTemp(Value* value,
-                                                   TokenPosition token_pos) {
-  return BuildStoreTemp(*owner()->parsed_function().expression_temp_var(),
-                        value, token_pos);
-}
-
-Definition* EffectGraphVisitor::BuildLoadExprTemp(TokenPosition token_pos) {
-  ASSERT(!token_pos.IsClassifying());
-  return BuildLoadLocal(*owner()->parsed_function().expression_temp_var(),
-                        token_pos);
-}
-
-Definition* EffectGraphVisitor::BuildStoreLocal(const LocalVariable& local,
-                                                Value* value,
-                                                TokenPosition token_pos) {
-  if (local.is_captured()) {
-    LocalVariable* tmp_var = EnterTempLocalScope(value);
-    intptr_t delta = owner()->context_level() - local.owner()->context_level();
-    ASSERT(delta >= 0);
-    Value* context = Bind(BuildCurrentContext(token_pos));
-    while (delta-- > 0) {
-      context = Bind(new (Z) LoadFieldInstr(context, Context::parent_offset(),
-                                            Type::ZoneHandle(Z, Type::null()),
-                                            token_pos));
-    }
-    Value* tmp_val = Bind(new (Z) LoadLocalInstr(*tmp_var, token_pos));
-    StoreInstanceFieldInstr* store = new (Z)
-        StoreInstanceFieldInstr(Context::variable_offset(local.index().value()),
-                                context, tmp_val, kEmitStoreBarrier, token_pos);
-    Do(store);
-    return ExitTempLocalScope(value);
-  } else {
-    return new (Z) StoreLocalInstr(local, value, token_pos);
-  }
-}
-
-Definition* EffectGraphVisitor::BuildLoadLocal(const LocalVariable& local,
-                                               TokenPosition token_pos) {
-  if (local.IsConst()) {
-    return new (Z) ConstantInstr(*local.ConstValue(), token_pos);
-  } else if (local.is_captured()) {
-    intptr_t delta = owner()->context_level() - local.owner()->context_level();
-    ASSERT(delta >= 0);
-    Value* context = Bind(BuildCurrentContext(token_pos));
-    while (delta-- > 0) {
-      context = Bind(new (Z) LoadFieldInstr(context, Context::parent_offset(),
-                                            Type::ZoneHandle(Z, Type::null()),
-                                            token_pos));
-    }
-    LoadFieldInstr* load = new (Z)
-        LoadFieldInstr(context, Context::variable_offset(local.index().value()),
-                       local.type(), token_pos);
-    load->set_is_immutable(local.is_final());
-    return load;
-  } else {
-    return new (Z) LoadLocalInstr(local, token_pos);
-  }
-}
-
-// Stores current context into the 'variable'
-void EffectGraphVisitor::BuildSaveContext(const LocalVariable& variable,
-                                          TokenPosition token_pos) {
-  ASSERT(token_pos.IsSynthetic() || token_pos.IsNoSource());
-  Value* context = Bind(BuildCurrentContext(token_pos));
-  Do(BuildStoreLocal(variable, context, token_pos));
-}
-
-// Loads context saved in 'context_variable' into the current context.
-void EffectGraphVisitor::BuildRestoreContext(const LocalVariable& variable,
-                                             TokenPosition token_pos) {
-  Value* load_saved_context = Bind(BuildLoadLocal(variable, token_pos));
-  Do(BuildStoreContext(load_saved_context, token_pos));
-}
-
-Definition* EffectGraphVisitor::BuildStoreContext(Value* value,
-                                                  TokenPosition token_pos) {
-  return new (Z) StoreLocalInstr(
-      *owner()->parsed_function().current_context_var(), value, token_pos);
-}
-
-Definition* EffectGraphVisitor::BuildCurrentContext(TokenPosition token_pos) {
-  return new (Z) LoadLocalInstr(
-      *owner()->parsed_function().current_context_var(), token_pos);
-}
-
-void TestGraphVisitor::ConnectBranchesTo(
-    const GrowableArray<TargetEntryInstr**>& branches,
-    JoinEntryInstr* join) const {
-  ASSERT(!branches.is_empty());
-  for (intptr_t i = 0; i < branches.length(); i++) {
-    TargetEntryInstr* target = new (Z)
-        TargetEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                         owner()->GetNextDeoptId());
-    *(branches[i]) = target;
-    target->Goto(join);
-  }
-}
-
-void TestGraphVisitor::IfTrueGoto(JoinEntryInstr* join) const {
-  ConnectBranchesTo(true_successor_addresses_, join);
-}
-
-void TestGraphVisitor::IfFalseGoto(JoinEntryInstr* join) const {
-  ConnectBranchesTo(false_successor_addresses_, join);
-}
-
-BlockEntryInstr* TestGraphVisitor::CreateSuccessorFor(
-    const GrowableArray<TargetEntryInstr**>& branches) const {
-  ASSERT(!branches.is_empty());
-
-  if (branches.length() == 1) {
-    TargetEntryInstr* target = new (Z)
-        TargetEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                         owner()->GetNextDeoptId());
-    *(branches[0]) = target;
-    return target;
-  }
-
-  JoinEntryInstr* join =
-      new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                             owner()->GetNextDeoptId());
-  ConnectBranchesTo(branches, join);
-  return join;
-}
-
-BlockEntryInstr* TestGraphVisitor::CreateTrueSuccessor() const {
-  return CreateSuccessorFor(true_successor_addresses_);
-}
-
-BlockEntryInstr* TestGraphVisitor::CreateFalseSuccessor() const {
-  return CreateSuccessorFor(false_successor_addresses_);
-}
-
-void TestGraphVisitor::ReturnValue(Value* value) {
-  Isolate* isolate = Isolate::Current();
-  if (FLAG_strong || isolate->type_checks() || isolate->asserts()) {
-    value = Bind(new (Z) AssertBooleanInstr(condition_token_pos(), value,
-                                            owner()->GetNextDeoptId()));
-  }
-  Value* constant_true = Bind(new (Z) ConstantInstr(Bool::True()));
-  StrictCompareInstr* comp = new (Z) StrictCompareInstr(
-      condition_token_pos(), Token::kEQ_STRICT, value, constant_true, false,
-      owner()->GetNextDeoptId());  // No number check.
-  BranchInstr* branch = new (Z) BranchInstr(comp, owner()->GetNextDeoptId());
-  AddInstruction(branch);
-  CloseFragment();
-
-  true_successor_addresses_.Add(branch->true_successor_address());
-  false_successor_addresses_.Add(branch->false_successor_address());
-}
-
-void TestGraphVisitor::MergeBranchWithStrictCompare(StrictCompareInstr* comp) {
-  BranchInstr* branch = new (Z) BranchInstr(comp, owner()->GetNextDeoptId());
-  AddInstruction(branch);
-  CloseFragment();
-  true_successor_addresses_.Add(branch->true_successor_address());
-  false_successor_addresses_.Add(branch->false_successor_address());
-}
-
-void TestGraphVisitor::MergeBranchWithNegate(BooleanNegateInstr* neg) {
-  ASSERT(!Isolate::Current()->type_checks());
-  Value* constant_true = Bind(new (Z) ConstantInstr(Bool::True()));
-  StrictCompareInstr* comp = new (Z) StrictCompareInstr(
-      condition_token_pos(), Token::kNE_STRICT, neg->value(), constant_true,
-      false, owner()->GetNextDeoptId());  // No number check.
-  BranchInstr* branch = new (Z) BranchInstr(comp, owner()->GetNextDeoptId());
-  AddInstruction(branch);
-  CloseFragment();
-  true_successor_addresses_.Add(branch->true_successor_address());
-  false_successor_addresses_.Add(branch->false_successor_address());
-}
-
-void TestGraphVisitor::ReturnDefinition(Definition* definition) {
-  StrictCompareInstr* comp = definition->AsStrictCompare();
-  if (comp != NULL) {
-    MergeBranchWithStrictCompare(comp);
-    return;
-  }
-  if (!Isolate::Current()->type_checks()) {
-    BooleanNegateInstr* neg = definition->AsBooleanNegate();
-    if (neg != NULL) {
-      MergeBranchWithNegate(neg);
-      return;
-    }
-  }
-  ReturnValue(Bind(definition));
-}
-
-// Special handling for AND/OR.
-void TestGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) {
-  // Operators "&&" and "||" cannot be overloaded therefore do not call
-  // operator.
-  if ((node->kind() == Token::kAND) || (node->kind() == Token::kOR)) {
-    TestGraphVisitor for_left(owner(), node->left()->token_pos());
-    node->left()->Visit(&for_left);
-
-    TestGraphVisitor for_right(owner(), node->right()->token_pos());
-    node->right()->Visit(&for_right);
-
-    Append(for_left);
-
-    if (node->kind() == Token::kAND) {
-      AppendFragment(for_left.CreateTrueSuccessor(), for_right);
-      true_successor_addresses_.AddArray(for_right.true_successor_addresses_);
-      false_successor_addresses_.AddArray(for_left.false_successor_addresses_);
-      false_successor_addresses_.AddArray(for_right.false_successor_addresses_);
-    } else {
-      ASSERT(node->kind() == Token::kOR);
-      AppendFragment(for_left.CreateFalseSuccessor(), for_right);
-      false_successor_addresses_.AddArray(for_right.false_successor_addresses_);
-      true_successor_addresses_.AddArray(for_left.true_successor_addresses_);
-      true_successor_addresses_.AddArray(for_right.true_successor_addresses_);
-    }
-    CloseFragment();
-    return;
-  }
-  ValueGraphVisitor::VisitBinaryOpNode(node);
-}
-
-void EffectGraphVisitor::Bailout(const char* reason) const {
-  owner()->Bailout(reason);
-}
-
-void EffectGraphVisitor::InlineBailout(const char* reason) const {
-  owner()->function().set_is_inlinable(false);
-  if (owner()->IsInlining()) owner()->Bailout(reason);
-}
-
-// <Statement> ::= Return { value:                <Expression>
-//                          inlined_finally_list: <InlinedFinally>* }
-void EffectGraphVisitor::VisitReturnNode(ReturnNode* node) {
-  ValueGraphVisitor for_value(owner());
-  node->value()->Visit(&for_value);
-  Append(for_value);
-  Value* return_value = for_value.value();
-
-  // Call to stub that checks whether the debugger is in single
-  // step mode. This call must happen before the contexts are
-  // unchained so that captured variables can be inspected.
-  // No debugger check is done in native functions or for return
-  // statements for which there is no associated source position.
-  const Function& function = owner()->function();
-#if !defined(PRODUCT)
-  if (node->token_pos().IsDebugPause() && !function.is_native()) {
-    AddInstruction(new (Z) DebugStepCheckInstr(node->token_pos(),
-                                               RawPcDescriptors::kRuntimeCall,
-                                               owner()->GetNextDeoptId()));
-  }
-#endif
-
-  NestedContextAdjustment context_adjustment(owner(), owner()->context_level());
-
-  if (node->inlined_finally_list_length() > 0) {
-    LocalVariable* temp = owner()->parsed_function().finally_return_temp_var();
-    ASSERT(temp != NULL);
-    Do(BuildStoreLocal(*temp, return_value, node->token_pos()));
-    for (intptr_t i = 0; i < node->inlined_finally_list_length(); i++) {
-      InlineBailout("EffectGraphVisitor::VisitReturnNode (exception)");
-      EffectGraphVisitor for_effect(owner());
-      node->InlinedFinallyNodeAt(i)->Visit(&for_effect);
-      Append(for_effect);
-      if (!is_open()) {
-        return;
-      }
-    }
-    return_value = Bind(BuildLoadLocal(*temp, node->token_pos()));
-  }
-
-  if (Isolate::Current()->argument_type_checks()) {
-    const bool is_implicit_dynamic_getter =
-        (!function.is_static() &&
-         ((function.kind() == RawFunction::kImplicitGetter) ||
-          (function.kind() == RawFunction::kImplicitStaticFinalGetter)));
-    // Implicit getters do not need a type check at return, unless they compute
-    // the initial value of a static field.
-    // The body of a constructor cannot modify the type of the
-    // constructed instance, which is passed in as an implicit parameter.
-    // However, factories may create an instance of the wrong type.
-    if (!is_implicit_dynamic_getter && !function.IsGenerativeConstructor()) {
-      const AbstractType& dst_type =
-          AbstractType::ZoneHandle(Z, function.result_type());
-      return_value =
-          BuildAssignableValue(node->value()->token_pos(), return_value,
-                               dst_type, Symbols::FunctionResult());
-    }
-  }
-
-  if (FLAG_causal_async_stacks &&
-      (function.IsAsyncClosure() || function.IsAsyncGenClosure())) {
-    // We are returning from an asynchronous closure. Before we do that, be
-    // sure to clear the thread's asynchronous stack trace.
-    const Function& async_clear_thread_stack_trace = Function::ZoneHandle(
-        Z, isolate()->object_store()->async_clear_thread_stack_trace());
-    ZoneGrowableArray<PushArgumentInstr*>* no_arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(0);
-    const int kTypeArgsLen = 0;
-    StaticCallInstr* call_async_clear_thread_stack_trace =
-        new (Z) StaticCallInstr(node->token_pos().ToSynthetic(),
-                                async_clear_thread_stack_trace, kTypeArgsLen,
-                                Object::null_array(), no_arguments,
-                                owner()->ic_data_array(),
-                                owner()->GetNextDeoptId(), ICData::kStatic);
-    Do(call_async_clear_thread_stack_trace);
-  }
-
-  // Async functions contain two types of return statements:
-  // 1) Returns that should complete the completer once all finally blocks have
-  //    been inlined (call: :async_completer.complete(return_value)). These
-  //    returns end up returning null in the end.
-  // 2) "Continuation" returns that should not complete the completer but return
-  //    the value.
-  //
-  // We distinguish those kinds of nodes via is_regular_return().
-  //
-  if (function.IsAsyncClosure() &&
-      (node->return_type() == ReturnNode::kRegular)) {
-    // Temporary store the computed return value.
-    Do(BuildStoreExprTemp(return_value, node->token_pos()));
-
-    LocalVariable* rcv_var =
-        node->scope()->LookupVariable(Symbols::AsyncCompleter(), false);
-    ASSERT(rcv_var != NULL && rcv_var->is_captured());
-    ZoneGrowableArray<PushArgumentInstr*>* arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-    Value* rcv_value = Bind(BuildLoadLocal(*rcv_var, node->token_pos()));
-    arguments->Add(PushArgument(rcv_value));
-    Value* returned_value = Bind(BuildLoadExprTemp(node->token_pos()));
-    arguments->Add(PushArgument(returned_value));
-    // Call a helper function to complete the completer. The debugger
-    // uses the helper function to know when to step-out.
-    const Function& complete_on_async_return = Function::ZoneHandle(
-        Z, isolate()->object_store()->complete_on_async_return());
-    ASSERT(!complete_on_async_return.IsNull());
-    const int kTypeArgsLen = 0;
-    StaticCallInstr* call = new (Z) StaticCallInstr(
-        node->token_pos().ToSynthetic(), complete_on_async_return, kTypeArgsLen,
-        Object::null_array(), arguments, owner()->ic_data_array(),
-        owner()->GetNextDeoptId(), ICData::kStatic);
-    Do(call);
-
-    // Rebind the return value for the actual return call to be null.
-    return_value = BuildNullValue(node->token_pos());
-  }
-
-  intptr_t current_context_level = owner()->context_level();
-  ASSERT(current_context_level >= 0);
-  if (HasContextScope()) {
-    UnchainContexts(current_context_level);
-  }
-
-  AddReturnExit(node->token_pos(), return_value);
-
-  if ((function.IsAsyncClosure() || function.IsSyncGenClosure() ||
-       function.IsAsyncGenClosure()) &&
-      (node->return_type() == ReturnNode::kContinuationTarget)) {
-    JoinEntryInstr* const join =
-        new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                               owner()->GetNextDeoptId());
-    owner()->await_joins()->Add(join);
-    exit_ = join;
-  }
-}
-
-// <Expression> ::= Literal { literal: Instance }
-void EffectGraphVisitor::VisitLiteralNode(LiteralNode* node) {
-  ReturnDefinition(new (Z) ConstantInstr(node->literal(), node->token_pos()));
-}
-
-// Type nodes are used when a type is referenced as a literal. Type nodes
-// can also be used for the right-hand side of instanceof comparisons,
-// but they are handled specially in that context, not here.
-void EffectGraphVisitor::VisitTypeNode(TypeNode* node) {
-  return;
-}
-
-void ValueGraphVisitor::VisitTypeNode(TypeNode* node) {
-  const AbstractType& type = node->type();
-  // Type may be malbounded, but not malformed.
-  ASSERT(type.IsFinalized() && !type.IsMalformed());
-  if (type.IsInstantiated()) {
-    ReturnDefinition(new (Z) ConstantInstr(type));
-    return;
-  }
-  const TokenPosition token_pos = node->token_pos();
-  Value* instantiator_type_arguments = NULL;
-  if (type.IsInstantiated(kCurrentClass)) {
-    instantiator_type_arguments = BuildNullValue(token_pos);
-  } else {
-    instantiator_type_arguments = BuildInstantiatorTypeArguments(token_pos);
-  }
-  Value* function_type_arguments = NULL;
-  if (type.IsInstantiated(kFunctions)) {
-    function_type_arguments = BuildNullValue(token_pos);
-  } else {
-    function_type_arguments = BuildFunctionTypeArguments(token_pos);
-  }
-  ReturnDefinition(new (Z) InstantiateTypeInstr(
-      token_pos, type, instantiator_type_arguments, function_type_arguments,
-      owner()->GetNextDeoptId()));
-}
-
-// Returns true if the type check can be skipped, for example, if the
-// destination type is dynamic or if the compile type of the value is a subtype
-// of the destination type.
-bool EffectGraphVisitor::CanSkipTypeCheck(TokenPosition token_pos,
-                                          Value* value,
-                                          const AbstractType& dst_type,
-                                          const String& dst_name) {
-  ASSERT(!dst_type.IsNull());
-  ASSERT(dst_type.IsFinalized());
-
-  // If the destination type is malformed or malbounded, a dynamic type error
-  // must be thrown at run time.
-  if (dst_type.IsMalformedOrMalbounded()) {
-    return false;
-  }
-
-  // Any type is more specific than the dynamic type, the Object type, or void.
-  if (dst_type.IsDynamicType() || dst_type.IsObjectType() ||
-      dst_type.IsVoidType()) {
-    return true;
-  }
-
-  // Do not perform type check elimination if this optimization is turned off.
-  if (!FLAG_eliminate_type_checks) {
-    return false;
-  }
-
-  // If nothing is known about the value, as is the case for passed-in
-  // parameters, and since dst_type is not one of the tested cases above, then
-  // the type test cannot be eliminated.
-  if (value == NULL) {
-    return false;
-  }
-
-  const bool eliminated = value->Type()->IsAssignableTo(dst_type);
-  if (FLAG_trace_type_check_elimination) {
-    FlowGraphPrinter::PrintTypeCheck(owner()->parsed_function(), token_pos,
-                                     value, dst_type, dst_name, eliminated);
-  }
-  return eliminated;
-}
-
-// <Expression> :: Assignable { expr:     <Expression>
-//                              type:     AbstractType
-//                              dst_name: String }
-void EffectGraphVisitor::VisitAssignableNode(AssignableNode* node) {
-  ValueGraphVisitor for_value(owner());
-  node->expr()->Visit(&for_value);
-  Append(for_value);
-  if (CanSkipTypeCheck(node->expr()->token_pos(), for_value.value(),
-                       node->type(), node->dst_name())) {
-    ReturnValue(for_value.value());
-  } else {
-    ReturnDefinition(BuildAssertAssignable(node->expr()->token_pos(),
-                                           for_value.value(), node->type(),
-                                           node->dst_name()));
-  }
-}
-
-void ValueGraphVisitor::VisitAssignableNode(AssignableNode* node) {
-  ValueGraphVisitor for_value(owner());
-  node->expr()->Visit(&for_value);
-  Append(for_value);
-  ReturnValue(BuildAssignableValue(node->expr()->token_pos(), for_value.value(),
-                                   node->type(), node->dst_name()));
-}
-
-// <Expression> :: BinaryOp { kind:  Token::Kind
-//                            left:  <Expression>
-//                            right: <Expression> }
-void EffectGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) {
-  // Operators "&&" and "||" cannot be overloaded therefore do not call
-  // operator.
-  if ((node->kind() == Token::kAND) || (node->kind() == Token::kOR)) {
-    // See ValueGraphVisitor::VisitBinaryOpNode.
-    TestGraphVisitor for_left(owner(), node->left()->token_pos());
-    node->left()->Visit(&for_left);
-    EffectGraphVisitor empty(owner());
-    Isolate* isolate = Isolate::Current();
-    if (FLAG_strong || isolate->type_checks() || isolate->asserts()) {
-      ValueGraphVisitor for_right(owner());
-      node->right()->Visit(&for_right);
-      Value* right_value = for_right.value();
-      for_right.Do(new (Z) AssertBooleanInstr(
-          node->right()->token_pos(), right_value, owner()->GetNextDeoptId()));
-      if (node->kind() == Token::kAND) {
-        Join(for_left, for_right, empty);
-      } else {
-        Join(for_left, empty, for_right);
-      }
-    } else {
-      EffectGraphVisitor for_right(owner());
-      node->right()->Visit(&for_right);
-      if (node->kind() == Token::kAND) {
-        Join(for_left, for_right, empty);
-      } else {
-        Join(for_left, empty, for_right);
-      }
-    }
-    return;
-  }
-  ASSERT(node->kind() != Token::kIFNULL);
-  ValueGraphVisitor for_left_value(owner());
-  node->left()->Visit(&for_left_value);
-  Append(for_left_value);
-  PushArgumentInstr* push_left = PushArgument(for_left_value.value());
-
-  ValueGraphVisitor for_right_value(owner());
-  node->right()->Visit(&for_right_value);
-  Append(for_right_value);
-  PushArgumentInstr* push_right = PushArgument(for_right_value.value());
-
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-  arguments->Add(push_left);
-  arguments->Add(push_right);
-  const String& name = Symbols::Token(node->kind());
-  const intptr_t kTypeArgsLen = 0;
-  const intptr_t kNumArgsChecked = 2;
-  InstanceCallInstr* call = new (Z)
-      InstanceCallInstr(node->token_pos(), name, node->kind(), arguments,
-                        kTypeArgsLen, Object::null_array(), kNumArgsChecked,
-                        owner()->ic_data_array(), owner()->GetNextDeoptId());
-  ReturnDefinition(call);
-}
-
-// Special handling for AND/OR.
-void ValueGraphVisitor::VisitBinaryOpNode(BinaryOpNode* node) {
-  // Operators "&&" and "||" cannot be overloaded therefore do not call
-  // operator.
-  if ((node->kind() == Token::kAND) || (node->kind() == Token::kOR)) {
-    // Implement short-circuit logic: do not evaluate right if evaluation
-    // of left is sufficient.
-    // AND:  left ? right === true : false;
-    // OR:   left ? true : right === true;
-
-    TestGraphVisitor for_test(owner(), node->left()->token_pos());
-    node->left()->Visit(&for_test);
-
-    ValueGraphVisitor for_right(owner());
-    node->right()->Visit(&for_right);
-    Value* right_value = for_right.value();
-    Isolate* isolate = Isolate::Current();
-    if (FLAG_strong || isolate->type_checks() || isolate->asserts()) {
-      right_value = for_right.Bind(new (Z) AssertBooleanInstr(
-          node->right()->token_pos(), right_value, owner()->GetNextDeoptId()));
-    }
-    Value* constant_true = for_right.Bind(new (Z) ConstantInstr(Bool::True()));
-    Value* compare = for_right.Bind(new (Z) StrictCompareInstr(
-        node->token_pos(), Token::kEQ_STRICT, right_value, constant_true, false,
-        owner()->GetNextDeoptId()));  // No number check.
-    for_right.Do(BuildStoreExprTemp(compare, node->token_pos()));
-
-    if (node->kind() == Token::kAND) {
-      ValueGraphVisitor for_false(owner());
-      Value* constant_false =
-          for_false.Bind(new (Z) ConstantInstr(Bool::False()));
-      for_false.Do(BuildStoreExprTemp(constant_false, node->token_pos()));
-      Join(for_test, for_right, for_false);
-    } else {
-      ASSERT(node->kind() == Token::kOR);
-      ValueGraphVisitor for_true(owner());
-      Value* constant_true = for_true.Bind(new (Z) ConstantInstr(Bool::True()));
-      for_true.Do(BuildStoreExprTemp(constant_true, node->token_pos()));
-      Join(for_test, for_true, for_right);
-    }
-    ReturnDefinition(BuildLoadExprTemp(node->token_pos()));
-    return;
-  }
-
-  EffectGraphVisitor::VisitBinaryOpNode(node);
-}
-
-PushArgumentInstr* EffectGraphVisitor::PushInstantiatorTypeArguments(
-    const AbstractType& type,
-    TokenPosition token_pos) {
-  if (type.IsInstantiated(kCurrentClass)) {
-    return PushArgument(BuildNullValue(token_pos));
-  } else {
-    Value* instantiator_type_args = BuildInstantiatorTypeArguments(token_pos);
-    return PushArgument(instantiator_type_args);
-  }
-}
-
-PushArgumentInstr* EffectGraphVisitor::PushFunctionTypeArguments(
-    const AbstractType& type,
-    TokenPosition token_pos) {
-  if (type.IsInstantiated(kFunctions)) {
-    return PushArgument(BuildNullValue(token_pos));
-  } else {
-    Value* function_type_args = BuildFunctionTypeArguments(token_pos);
-    return PushArgument(function_type_args);
-  }
-}
-
-Value* EffectGraphVisitor::BuildNullValue(TokenPosition token_pos) {
-  return Bind(
-      new (Z) ConstantInstr(Object::ZoneHandle(Z, Object::null()), token_pos));
-}
-
-// Used for testing incoming arguments.
-AssertAssignableInstr* EffectGraphVisitor::BuildAssertAssignable(
-    TokenPosition token_pos,
-    Value* value,
-    const AbstractType& dst_type,
-    const String& dst_name) {
-  // Build the type check computation.
-  Value* instantiator_type_arguments = NULL;
-  Value* function_type_arguments = NULL;
-  if (dst_type.IsInstantiated(kCurrentClass)) {
-    instantiator_type_arguments = BuildNullValue(token_pos);
-  } else {
-    instantiator_type_arguments = BuildInstantiatorTypeArguments(token_pos);
-  }
-  if (dst_type.IsInstantiated(kFunctions)) {
-    function_type_arguments = BuildNullValue(token_pos);
-  } else {
-    function_type_arguments = BuildFunctionTypeArguments(token_pos);
-  }
-
-  const intptr_t deopt_id = owner()->GetNextDeoptId();
-  return new (Z) AssertAssignableInstr(
-      token_pos, value, instantiator_type_arguments, function_type_arguments,
-      dst_type, dst_name, deopt_id);
-}
-
-// Used for type casts and to test assignments.
-Value* EffectGraphVisitor::BuildAssignableValue(TokenPosition token_pos,
-                                                Value* value,
-                                                const AbstractType& dst_type,
-                                                const String& dst_name) {
-  if (CanSkipTypeCheck(token_pos, value, dst_type, dst_name)) {
-    return value;
-  }
-  return Bind(BuildAssertAssignable(token_pos, value, dst_type, dst_name));
-}
-
-void EffectGraphVisitor::BuildTypeTest(ComparisonNode* node) {
-  ASSERT(Token::IsTypeTestOperator(node->kind()));
-  const AbstractType& type = node->right()->AsTypeNode()->type();
-  ASSERT(type.IsFinalized() && !type.IsMalformedOrMalbounded());
-  const bool negate_result = (node->kind() == Token::kISNOT);
-  // All objects are instances of type T if Object type is a subtype of type T.
-  const Type& object_type = Type::Handle(Z, Type::ObjectType());
-  if (type.IsInstantiated() &&
-      object_type.IsSubtypeOf(type, NULL, NULL, Heap::kOld)) {
-    // Must evaluate left side.
-    EffectGraphVisitor for_left_value(owner());
-    node->left()->Visit(&for_left_value);
-    Append(for_left_value);
-    ReturnDefinition(new (Z) ConstantInstr(Bool::Get(!negate_result)));
-    return;
-  }
-  ValueGraphVisitor for_left_value(owner());
-  node->left()->Visit(&for_left_value);
-  Append(for_left_value);
-
-  // We now know type is a real class (!num, !int, !smi, !string)
-  // and the type check could NOT be removed at compile time.
-  PushArgumentInstr* push_left = PushArgument(for_left_value.value());
-  if (FlowGraphBuilder::SimpleInstanceOfType(type)) {
-    ZoneGrowableArray<PushArgumentInstr*>* arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-    arguments->Add(push_left);
-    Value* type_const = Bind(new (Z) ConstantInstr(type));
-    arguments->Add(PushArgument(type_const));
-    const intptr_t kTypeArgsLen = 0;
-    const intptr_t kNumArgsChecked = 2;
-    Definition* result = new (Z) InstanceCallInstr(
-        node->token_pos(),
-        Library::PrivateCoreLibName(Symbols::_simpleInstanceOf()), node->kind(),
-        arguments, kTypeArgsLen,
-        Object::null_array(),  // No argument names.
-        kNumArgsChecked, owner()->ic_data_array(), owner()->GetNextDeoptId());
-    if (negate_result) {
-      result = new (Z) BooleanNegateInstr(Bind(result));
-    }
-    ReturnDefinition(result);
-    return;
-  }
-
-  PushArgumentInstr* push_instantiator_type_args =
-      PushInstantiatorTypeArguments(type, node->token_pos());
-  PushArgumentInstr* push_function_type_args =
-      PushFunctionTypeArguments(type, node->token_pos());
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(4);
-  arguments->Add(push_left);
-  arguments->Add(push_instantiator_type_args);
-  arguments->Add(push_function_type_args);
-  Value* type_const = Bind(new (Z) ConstantInstr(type));
-  arguments->Add(PushArgument(type_const));
-  const intptr_t kTypeArgsLen = 0;
-  const intptr_t kNumArgsChecked = 1;
-  Definition* result = new (Z) InstanceCallInstr(
-      node->token_pos(), Library::PrivateCoreLibName(Symbols::_instanceOf()),
-      node->kind(), arguments, kTypeArgsLen,
-      Object::null_array(),  // No argument names.
-      kNumArgsChecked, owner()->ic_data_array(), owner()->GetNextDeoptId());
-  if (negate_result) {
-    result = new (Z) BooleanNegateInstr(Bind(result));
-  }
-  ReturnDefinition(result);
-}
-
-void EffectGraphVisitor::BuildTypeCast(ComparisonNode* node) {
-  ASSERT(Token::IsTypeCastOperator(node->kind()));
-  ASSERT(!node->right()->AsTypeNode()->type().IsNull());
-  const AbstractType& type = node->right()->AsTypeNode()->type();
-  ASSERT(type.IsFinalized() && !type.IsMalformed() && !type.IsMalbounded());
-  ValueGraphVisitor for_value(owner());
-  node->left()->Visit(&for_value);
-  Append(for_value);
-  if (CanSkipTypeCheck(node->token_pos(), for_value.value(), type,
-                       Symbols::InTypeCast())) {
-    ReturnValue(for_value.value());
-    return;
-  }
-  PushArgumentInstr* push_left = PushArgument(for_value.value());
-  PushArgumentInstr* push_instantiator_type_args =
-      PushInstantiatorTypeArguments(type, node->token_pos());
-  PushArgumentInstr* push_function_type_args =
-      PushFunctionTypeArguments(type, node->token_pos());
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(4);
-  arguments->Add(push_left);
-  arguments->Add(push_instantiator_type_args);
-  arguments->Add(push_function_type_args);
-  Value* type_arg = Bind(new (Z) ConstantInstr(type));
-  arguments->Add(PushArgument(type_arg));
-  const int kTypeArgsLen = 0;
-  const intptr_t kNumArgsChecked = 1;
-  InstanceCallInstr* call = new (Z) InstanceCallInstr(
-      node->token_pos(), Library::PrivateCoreLibName(Symbols::_as()),
-      node->kind(), arguments, kTypeArgsLen,
-      Object::null_array(),  // No argument names.
-      kNumArgsChecked, owner()->ic_data_array(), owner()->GetNextDeoptId());
-  ReturnDefinition(call);
-}
-
-StrictCompareInstr* EffectGraphVisitor::BuildStrictCompare(
-    AstNode* left,
-    AstNode* right,
-    Token::Kind kind,
-    TokenPosition token_pos) {
-  ValueGraphVisitor for_left_value(owner());
-  left->Visit(&for_left_value);
-  Append(for_left_value);
-  ValueGraphVisitor for_right_value(owner());
-  right->Visit(&for_right_value);
-  Append(for_right_value);
-  StrictCompareInstr* comp = new (Z) StrictCompareInstr(
-      token_pos, kind, for_left_value.value(), for_right_value.value(), true,
-      owner()->GetNextDeoptId());  // Number check.
-  return comp;
-}
-
-// <Expression> :: Comparison { kind:  Token::Kind
-//                              left:  <Expression>
-//                              right: <Expression> }
-void EffectGraphVisitor::VisitComparisonNode(ComparisonNode* node) {
-  if (Token::IsTypeTestOperator(node->kind())) {
-    BuildTypeTest(node);
-    return;
-  }
-  if (Token::IsTypeCastOperator(node->kind())) {
-    BuildTypeCast(node);
-    return;
-  }
-
-  if ((node->kind() == Token::kEQ_STRICT) ||
-      (node->kind() == Token::kNE_STRICT)) {
-    ReturnDefinition(BuildStrictCompare(node->left(), node->right(),
-                                        node->kind(), node->token_pos()));
-    return;
-  }
-
-  if ((node->kind() == Token::kEQ) || (node->kind() == Token::kNE)) {
-    // Eagerly fold null-comparisons.
-    LiteralNode* left_lit = node->left()->AsLiteralNode();
-    LiteralNode* right_lit = node->right()->AsLiteralNode();
-    if (((left_lit != NULL) && left_lit->literal().IsNull()) ||
-        ((right_lit != NULL) && right_lit->literal().IsNull())) {
-      Token::Kind kind =
-          (node->kind() == Token::kEQ) ? Token::kEQ_STRICT : Token::kNE_STRICT;
-      StrictCompareInstr* compare = BuildStrictCompare(
-          node->left(), node->right(), kind, node->token_pos());
-      ReturnDefinition(compare);
-      return;
-    }
-
-    ZoneGrowableArray<PushArgumentInstr*>* arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-
-    ValueGraphVisitor for_left_value(owner());
-    node->left()->Visit(&for_left_value);
-    Append(for_left_value);
-    PushArgumentInstr* push_left = PushArgument(for_left_value.value());
-    arguments->Add(push_left);
-
-    ValueGraphVisitor for_right_value(owner());
-    node->right()->Visit(&for_right_value);
-    Append(for_right_value);
-    PushArgumentInstr* push_right = PushArgument(for_right_value.value());
-    arguments->Add(push_right);
-
-    const intptr_t kTypeArgsLen = 0;
-    const intptr_t kNumArgsChecked = 2;
-    Definition* result = new (Z) InstanceCallInstr(
-        node->token_pos(), Symbols::EqualOperator(),
-        Token::kEQ,  // Result is negated later for kNE.
-        arguments, kTypeArgsLen, Object::null_array(), kNumArgsChecked,
-        owner()->ic_data_array(), owner()->GetNextDeoptId());
-    if (node->kind() == Token::kNE) {
-      Isolate* isolate = Isolate::Current();
-      if (FLAG_strong || isolate->type_checks() || isolate->asserts()) {
-        Value* value = Bind(result);
-        result = new (Z) AssertBooleanInstr(node->token_pos(), value,
-                                            owner()->GetNextDeoptId());
-      }
-      Value* value = Bind(result);
-      result = new (Z) BooleanNegateInstr(value);
-    }
-    ReturnDefinition(result);
-    return;
-  }
-
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-
-  ValueGraphVisitor for_left_value(owner());
-  node->left()->Visit(&for_left_value);
-  Append(for_left_value);
-  PushArgumentInstr* push_left = PushArgument(for_left_value.value());
-  arguments->Add(push_left);
-
-  ValueGraphVisitor for_right_value(owner());
-  node->right()->Visit(&for_right_value);
-  Append(for_right_value);
-  PushArgumentInstr* push_right = PushArgument(for_right_value.value());
-  arguments->Add(push_right);
-
-  ASSERT(Token::IsRelationalOperator(node->kind()));
-  const intptr_t kTypeArgsLen = 0;
-  InstanceCallInstr* comp = new (Z) InstanceCallInstr(
-      node->token_pos(), Symbols::Token(node->kind()), node->kind(), arguments,
-      kTypeArgsLen, Object::null_array(), 2, owner()->ic_data_array(),
-      owner()->GetNextDeoptId());
-  ReturnDefinition(comp);
-}
-
-void EffectGraphVisitor::VisitUnaryOpNode(UnaryOpNode* node) {
-  // "!" cannot be overloaded, therefore do not call operator.
-  if (node->kind() == Token::kNOT) {
-    ValueGraphVisitor for_value(owner());
-    node->operand()->Visit(&for_value);
-    Append(for_value);
-    Value* value = for_value.value();
-    Isolate* isolate = Isolate::Current();
-    if (FLAG_strong || isolate->type_checks() || isolate->asserts()) {
-      value = Bind(new (Z) AssertBooleanInstr(
-          node->operand()->token_pos(), value, owner()->GetNextDeoptId()));
-    }
-    BooleanNegateInstr* negate = new (Z) BooleanNegateInstr(value);
-    ReturnDefinition(negate);
-    return;
-  }
-
-  ValueGraphVisitor for_value(owner());
-  node->operand()->Visit(&for_value);
-  Append(for_value);
-  PushArgumentInstr* push_value = PushArgument(for_value.value());
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
-  arguments->Add(push_value);
-  const intptr_t kTypeArgsLen = 0;
-  InstanceCallInstr* call = new (Z) InstanceCallInstr(
-      node->token_pos(), Symbols::Token(node->kind()), node->kind(), arguments,
-      kTypeArgsLen, Object::null_array(), 1, owner()->ic_data_array(),
-      owner()->GetNextDeoptId());
-  ReturnDefinition(call);
-}
-
-void EffectGraphVisitor::VisitConditionalExprNode(ConditionalExprNode* node) {
-  TestGraphVisitor for_test(owner(), node->condition()->token_pos());
-  node->condition()->Visit(&for_test);
-
-  // Translate the subexpressions for their effects.
-  EffectGraphVisitor for_true(owner());
-  node->true_expr()->Visit(&for_true);
-  EffectGraphVisitor for_false(owner());
-  node->false_expr()->Visit(&for_false);
-
-  Join(for_test, for_true, for_false);
-}
-
-void ValueGraphVisitor::VisitConditionalExprNode(ConditionalExprNode* node) {
-  TestGraphVisitor for_test(owner(), node->condition()->token_pos());
-  node->condition()->Visit(&for_test);
-
-  ValueGraphVisitor for_true(owner());
-  node->true_expr()->Visit(&for_true);
-  ASSERT(for_true.is_open());
-  for_true.Do(
-      BuildStoreExprTemp(for_true.value(), node->true_expr()->token_pos()));
-
-  ValueGraphVisitor for_false(owner());
-  node->false_expr()->Visit(&for_false);
-  ASSERT(for_false.is_open());
-  for_false.Do(
-      BuildStoreExprTemp(for_false.value(), node->false_expr()->token_pos()));
-
-  Join(for_test, for_true, for_false);
-  ReturnDefinition(BuildLoadExprTemp(node->token_pos()));
-}
-
-// <Statement> ::= If { condition: <Expression>
-//                      true_branch: <Sequence>
-//                      false_branch: <Sequence> }
-void EffectGraphVisitor::VisitIfNode(IfNode* node) {
-  TestGraphVisitor for_test(owner(), node->condition()->token_pos());
-  node->condition()->Visit(&for_test);
-
-  EffectGraphVisitor for_true(owner());
-  EffectGraphVisitor for_false(owner());
-
-  node->true_branch()->Visit(&for_true);
-  // The for_false graph fragment will be empty (default graph fragment) if
-  // we do not call Visit.
-  if (node->false_branch() != NULL) node->false_branch()->Visit(&for_false);
-  Join(for_test, for_true, for_false);
-}
-
-void EffectGraphVisitor::VisitSwitchNode(SwitchNode* node) {
-  NestedSwitch nested_switch(owner(), node);
-  EffectGraphVisitor switch_body(owner());
-  node->body()->Visit(&switch_body);
-  Append(switch_body);
-  if (nested_switch.break_target() != NULL) {
-    if (is_open()) Goto(nested_switch.break_target());
-    exit_ = nested_switch.break_target();
-  }
-}
-
-// A case node contains zero or more case expressions, can contain default
-// and a case statement body.
-// Compose fragment as follows:
-// - if no case expressions, must have default:
-//   a) target
-//   b) [ case-statements ]
-//
-// - if has 1 or more case statements
-//   a) target-0
-//   b) [ case-expression-0 ] -> (true-target-0, target-1)
-//   c) target-1
-//   d) [ case-expression-1 ] -> (true-target-1, exit-target)
-//   e) true-target-0 -> case-statements-join
-//   f) true-target-1 -> case-statements-join
-//   g) case-statements-join
-//   h) [ case-statements ] -> exit-join
-//   i) exit-target -> exit-join
-//   j) exit-join
-//
-// Note: The specification of switch/case is under discussion and may change
-// drastically.
-void EffectGraphVisitor::VisitCaseNode(CaseNode* node) {
-  const intptr_t len = node->case_expressions()->length();
-  // Create case statements instructions.
-  EffectGraphVisitor for_case_statements(owner());
-  // Compute the start of the statements fragment.
-  JoinEntryInstr* statement_start = NULL;
-  if (node->label() == NULL) {
-    statement_start =
-        new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                               owner()->GetNextDeoptId());
-  } else {
-    // The case nodes are nested inside a SequenceNode that is the body of a
-    // SwitchNode.  The SwitchNode on the nesting stack contains the
-    // continue labels for all the case clauses.
-    statement_start =
-        owner()->nesting_stack()->outer()->ContinueTargetFor(node->label());
-  }
-  ASSERT(statement_start != NULL);
-  node->statements()->Visit(&for_case_statements);
-  Instruction* statement_exit =
-      AppendFragment(statement_start, for_case_statements);
-  if (is_open() && (len == 0)) {
-    ASSERT(node->contains_default());
-    // Default only case node.
-    Goto(statement_start);
-    exit_ = statement_exit;
-    return;
-  }
-
-  // Generate instructions for all case expressions.
-  TargetEntryInstr* next_target = NULL;
-  for (intptr_t i = 0; i < len; i++) {
-    AstNode* case_expr = node->case_expressions()->NodeAt(i);
-    TestGraphVisitor for_case_expression(owner(), case_expr->token_pos());
-    case_expr->Visit(&for_case_expression);
-    if (i == 0) {
-      // Append only the first one, everything else is connected from it.
-      Append(for_case_expression);
-    } else {
-      ASSERT(next_target != NULL);
-      AppendFragment(next_target, for_case_expression);
-    }
-    for_case_expression.IfTrueGoto(statement_start);
-    next_target = for_case_expression.CreateFalseSuccessor()->AsTargetEntry();
-  }
-
-  // Once a test fragment has been added, this fragment is closed.
-  ASSERT(!is_open());
-
-  Instruction* exit_instruction = NULL;
-  // Handle last (or only) case: false goes to exit or to statement if this
-  // node contains default.
-  if (len > 0) {
-    ASSERT(next_target != NULL);
-    if (node->contains_default()) {
-      // True and false go to statement start.
-      next_target->Goto(statement_start);
-      exit_instruction = statement_exit;
-    } else {
-      if (statement_exit != NULL) {
-        JoinEntryInstr* join = new (Z)
-            JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                           owner()->GetNextDeoptId());
-        statement_exit->Goto(join);
-        next_target->Goto(join);
-        exit_instruction = join;
-      } else {
-        exit_instruction = next_target;
-      }
-    }
-  } else {
-    // A CaseNode without case expressions must contain default.
-    ASSERT(node->contains_default());
-    Goto(statement_start);
-    exit_instruction = statement_exit;
-  }
-
-  ASSERT(!is_open());
-  exit_ = exit_instruction;
-}
-
-// <Statement> ::= While { label:     SourceLabel
-//                         condition: <Expression>
-//                         body:      <Sequence> }
-// The fragment is composed as follows:
-// a) loop-join
-// b) [ test_preamble ]?
-// c) [ test ] -> (body-entry-target, loop-exit-target)
-// d) body-entry-target
-// e) [ body ] -> (continue-join)
-// f) continue-join -> (loop-join)
-// g) loop-exit-target
-// h) break-join (optional)
-void EffectGraphVisitor::VisitWhileNode(WhileNode* node) {
-  NestedLoop nested_loop(owner(), node->label());
-
-  EffectGraphVisitor for_preamble(owner());
-  if (node->condition_preamble() != NULL) {
-    node->condition_preamble()->Visit(&for_preamble);
-  }
-
-  TestGraphVisitor for_test(owner(), node->condition()->token_pos());
-  node->condition()->Visit(&for_test);
-  ASSERT(!for_test.is_empty());  // Language spec.
-
-  EffectGraphVisitor for_body(owner());
-  node->body()->Visit(&for_body);
-
-  // Labels are set after body traversal.
-  JoinEntryInstr* join = nested_loop.continue_target();
-  if (join != NULL) {
-    if (for_body.is_open()) for_body.Goto(join);
-    for_body.exit_ = join;
-  }
-  TieLoop(node->token_pos(), for_test, for_body, for_preamble);
-  join = nested_loop.break_target();
-  if (join != NULL) {
-    Goto(join);
-    exit_ = join;
-  }
-}
-
-// The fragment is composed as follows:
-// a) body-entry-join
-// b) [ body ]
-// c) test-entry (continue-join or body-exit-target)
-// d) [ test-entry ] -> (back-target, loop-exit-target)
-// e) back-target -> (body-entry-join)
-// f) loop-exit-target
-// g) break-join
-void EffectGraphVisitor::VisitDoWhileNode(DoWhileNode* node) {
-  NestedLoop nested_loop(owner(), node->label());
-
-  // Traverse the body first in order to generate continue and break labels.
-  EffectGraphVisitor for_body(owner());
-  node->body()->Visit(&for_body);
-
-  TestGraphVisitor for_test(owner(), node->condition()->token_pos());
-  node->condition()->Visit(&for_test);
-  ASSERT(is_open());
-
-  // Tie do-while loop (test is after the body).
-  JoinEntryInstr* body_entry_join =
-      new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                             owner()->GetNextDeoptId());
-  Goto(body_entry_join);
-  Instruction* body_exit = AppendFragment(body_entry_join, for_body);
-
-  JoinEntryInstr* join = nested_loop.continue_target();
-  if ((body_exit != NULL) || (join != NULL)) {
-    if (join == NULL) {
-      join = new (Z)
-          JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                         owner()->GetNextDeoptId());
-    }
-    CheckStackOverflowInstr* check = new (Z) CheckStackOverflowInstr(
-        node->token_pos(), owner()->loop_depth(), owner()->GetNextDeoptId());
-    join->LinkTo(check);
-    check->LinkTo(for_test.entry());
-    if (body_exit != NULL) {
-      body_exit->Goto(join);
-    }
-  }
-
-  for_test.IfTrueGoto(body_entry_join);
-  join = nested_loop.break_target();
-  if (join == NULL) {
-    exit_ = for_test.CreateFalseSuccessor();
-  } else {
-    for_test.IfFalseGoto(join);
-    exit_ = join;
-  }
-}
-
-// A ForNode can contain break and continue jumps. 'break' joins to
-// ForNode exit, 'continue' joins at increment entry. The fragment is composed
-// as follows:
-// a) [ initializer ]
-// b) loop-join
-// c) [ test ] -> (body-entry-target, loop-exit-target)
-// d) body-entry-target
-// e) [ body ]
-// f) continue-join (optional)
-// g) [ increment ] -> (loop-join)
-// h) loop-exit-target
-// i) break-join
-void EffectGraphVisitor::VisitForNode(ForNode* node) {
-  EffectGraphVisitor for_initializer(owner());
-  node->initializer()->Visit(&for_initializer);
-  Append(for_initializer);
-  ASSERT(is_open());
-
-  NestedLoop nested_loop(owner(), node->label());
-  // Compose body to set any jump labels.
-  EffectGraphVisitor for_body(owner());
-  node->body()->Visit(&for_body);
-
-  EffectGraphVisitor for_increment(owner());
-  node->increment()->Visit(&for_increment);
-
-  // Join the loop body and increment and then tie the loop.
-  JoinEntryInstr* continue_join = nested_loop.continue_target();
-  if ((continue_join != NULL) || for_body.is_open()) {
-    JoinEntryInstr* loop_entry =
-        new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                               owner()->GetNextDeoptId());
-    if (continue_join != NULL) {
-      if (for_body.is_open()) for_body.Goto(continue_join);
-      Instruction* current = AppendFragment(continue_join, for_increment);
-      current->Goto(loop_entry);
-    } else {
-      for_body.Append(for_increment);
-      for_body.Goto(loop_entry);
-    }
-    Goto(loop_entry);
-    exit_ = loop_entry;
-    // Note: the stack overflow check happens on the back branch that jumps
-    // to the increment instruction. The token position for the overflow
-    // check must match the position of the increment expression, so that
-    // the context level (if any) matches the that of the increment
-    // expression.
-    AddInstruction(new (Z) CheckStackOverflowInstr(
-        node->increment()->token_pos(), owner()->loop_depth(),
-        owner()->GetNextDeoptId()));
-  }
-
-  if (node->condition() == NULL) {
-    // Endless loop, no test.
-    Append(for_body);
-    exit_ = nested_loop.break_target();  // May be NULL.
-  } else {
-    EffectGraphVisitor for_test_preamble(owner());
-    if (node->condition_preamble() != NULL) {
-      node->condition_preamble()->Visit(&for_test_preamble);
-      Append(for_test_preamble);
-    }
-
-    TestGraphVisitor for_test(owner(), node->condition()->token_pos());
-    node->condition()->Visit(&for_test);
-    Append(for_test);
-
-    BlockEntryInstr* body_entry = for_test.CreateTrueSuccessor();
-    AppendFragment(body_entry, for_body);
-
-    if (nested_loop.break_target() == NULL) {
-      exit_ = for_test.CreateFalseSuccessor();
-    } else {
-      for_test.IfFalseGoto(nested_loop.break_target());
-      exit_ = nested_loop.break_target();
-    }
-  }
-}
-
-void EffectGraphVisitor::VisitJumpNode(JumpNode* node) {
-#if !defined(PRODUCT)
-  if (owner()->function().is_debuggable()) {
-    AddInstruction(new (Z) DebugStepCheckInstr(node->token_pos(),
-                                               RawPcDescriptors::kRuntimeCall,
-                                               owner()->GetNextDeoptId()));
-  }
-#endif
-
-  NestedContextAdjustment context_adjustment(owner(), owner()->context_level());
-
-  for (intptr_t i = 0; i < node->inlined_finally_list_length(); i++) {
-    EffectGraphVisitor for_effect(owner());
-    node->InlinedFinallyNodeAt(i)->Visit(&for_effect);
-    Append(for_effect);
-    if (!is_open()) return;
-  }
-
-  // Unchain the context(s) up to the outer context level of the scope which
-  // contains the destination label.
-  SourceLabel* label = node->label();
-  ASSERT(label->owner() != NULL);
-  AdjustContextLevel(label->owner());
-
-  JoinEntryInstr* jump_target = NULL;
-  NestedStatement* current = owner()->nesting_stack();
-  while (current != NULL) {
-    jump_target = (node->kind() == Token::kBREAK)
-                      ? current->BreakTargetFor(node->label())
-                      : current->ContinueTargetFor(node->label());
-    if (jump_target != NULL) break;
-    current = current->outer();
-  }
-  ASSERT(jump_target != NULL);
-  Goto(jump_target);
-}
-
-void EffectGraphVisitor::VisitArgumentListNode(ArgumentListNode* node) {
-  UNREACHABLE();
-}
-
-void EffectGraphVisitor::VisitAwaitNode(AwaitNode* node) {
-  // Await nodes are temporary during parsing.
-  UNREACHABLE();
-}
-
-void EffectGraphVisitor::VisitAwaitMarkerNode(AwaitMarkerNode* node) {
-  // We need to create a new await state which involves:
-  // * Increase the jump counter. Sanity check against the list of targets.
-  // * Save the current context for resuming.
-  ASSERT(node->token_pos().IsSynthetic() || node->token_pos().IsNoSource());
-  ASSERT(node->async_scope() != NULL);
-  ASSERT(node->await_scope() != NULL);
-  LocalVariable* jump_var =
-      node->async_scope()->LookupVariable(Symbols::AwaitJumpVar(), false);
-  LocalVariable* ctx_var =
-      node->async_scope()->LookupVariable(Symbols::AwaitContextVar(), false);
-  ASSERT((jump_var != NULL) && jump_var->is_captured());
-  ASSERT((ctx_var != NULL) && ctx_var->is_captured());
-  const intptr_t jump_count = owner()->next_await_counter();
-  ASSERT(jump_count >= 0);
-  // Sanity check that we always add a JoinEntryInstr before adding a new
-  // state.
-  ASSERT(jump_count == owner()->await_joins()->length());
-  // Store the counter in :await_jump_var.
-  Value* jump_val = Bind(new (Z) ConstantInstr(
-      Smi::ZoneHandle(Z, Smi::New(jump_count)), node->token_pos()));
-  Do(BuildStoreLocal(*jump_var, jump_val, node->token_pos()));
-  // Add a mapping from jump_count -> token_position.
-  owner()->AppendAwaitTokenPosition(node->token_pos());
-  // Save the current context for resuming.
-  BuildSaveContext(*ctx_var, node->token_pos());
-}
-
-intptr_t EffectGraphVisitor::GetCurrentTempLocalIndex() const {
-  return -owner()->num_stack_locals() - owner()->args_pushed() -
-         owner()->temp_count() + 1;
-}
-
-LocalVariable* EffectGraphVisitor::EnterTempLocalScope(Value* value) {
-  ASSERT(value->definition()->temp_index() == (owner()->temp_count() - 1));
-  intptr_t index = GetCurrentTempLocalIndex();
-  char name[64];
-  Utils::SNPrint(name, 64, ":tmp_local%" Pd, index);
-  LocalVariable* var =
-      new (Z) LocalVariable(TokenPosition::kNoSource, TokenPosition::kNoSource,
-                            String::ZoneHandle(Z, Symbols::New(T, name)),
-                            *value->Type()->ToAbstractType());
-  var->set_index(VariableIndex(index));
-  return var;
-}
-
-Definition* EffectGraphVisitor::ExitTempLocalScope(Value* value) {
-  return new (Z) DropTempsInstr(0, value);
-}
-
-void EffectGraphVisitor::BuildLetTempExpressions(LetNode* node) {
-  intptr_t num_temps = node->num_temps();
-  for (intptr_t i = 0; i < num_temps; ++i) {
-    ValueGraphVisitor for_value(owner());
-    node->InitializerAt(i)->Visit(&for_value);
-    Append(for_value);
-    ASSERT(!node->TempAt(i)->HasIndex() ||
-           (node->TempAt(i)->index().value() == GetCurrentTempLocalIndex()));
-    node->TempAt(i)->set_index(VariableIndex(GetCurrentTempLocalIndex()));
-  }
-}
-
-void EffectGraphVisitor::VisitLetNode(LetNode* node) {
-  BuildLetTempExpressions(node);
-
-  // Visit body.
-  for (intptr_t i = 0; i < node->nodes().length(); ++i) {
-    EffectGraphVisitor for_effect(owner());
-    node->nodes()[i]->Visit(&for_effect);
-    Append(for_effect);
-  }
-
-  intptr_t num_temps = node->num_temps();
-  if (num_temps > 0) {
-    owner()->DeallocateTemps(num_temps);
-    Do(new (Z) DropTempsInstr(num_temps, NULL));
-  }
-}
-
-void ValueGraphVisitor::VisitLetNode(LetNode* node) {
-  BuildLetTempExpressions(node);
-
-  // Visit body.
-  for (intptr_t i = 0; i < node->nodes().length() - 1; ++i) {
-    EffectGraphVisitor for_effect(owner());
-    node->nodes()[i]->Visit(&for_effect);
-    Append(for_effect);
-  }
-  // Visit the last body expression for value.
-  ValueGraphVisitor for_value(owner());
-  node->nodes().Last()->Visit(&for_value);
-  Append(for_value);
-  Value* result_value = for_value.value();
-
-  intptr_t num_temps = node->num_temps();
-  if (num_temps > 0) {
-    owner()->DeallocateTemps(num_temps);
-    ReturnDefinition(new (Z) DropTempsInstr(num_temps, result_value));
-  } else {
-    ReturnValue(result_value);
-  }
-}
-
-void EffectGraphVisitor::VisitArrayNode(ArrayNode* node) {
-  const TypeArguments& type_args =
-      TypeArguments::ZoneHandle(Z, node->type().arguments());
-  Value* element_type =
-      BuildInstantiatedTypeArguments(node->token_pos(), type_args);
-  Value* num_elements =
-      Bind(new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(node->length()))));
-  CreateArrayInstr* create = new (Z) CreateArrayInstr(
-      node->token_pos(), element_type, num_elements, owner()->GetNextDeoptId());
-  Value* array_val = Bind(create);
-
-  {
-    LocalVariable* tmp_var = EnterTempLocalScope(array_val);
-    const intptr_t class_id = kArrayCid;
-    const intptr_t deopt_id = DeoptId::kNone;
-    for (int i = 0; i < node->length(); ++i) {
-      Value* array = Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
-      Value* index = Bind(new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(i)),
-                                                node->token_pos()));
-      ValueGraphVisitor for_value(owner());
-      node->ElementAt(i)->Visit(&for_value);
-      Append(for_value);
-      // No store barrier needed for constants.
-      const StoreBarrierType emit_store_barrier =
-          for_value.value()->BindsToConstant() ? kNoStoreBarrier
-                                               : kEmitStoreBarrier;
-      const intptr_t index_scale = Instance::ElementSizeFor(class_id);
-      StoreIndexedInstr* store = new (Z) StoreIndexedInstr(
-          array, index, for_value.value(), emit_store_barrier, index_scale,
-          class_id, kAlignedAccess, deopt_id, node->token_pos());
-      Do(store);
-    }
-    ReturnDefinition(ExitTempLocalScope(array_val));
-  }
-}
-
-void EffectGraphVisitor::VisitStringInterpolateNode(
-    StringInterpolateNode* node) {
-  ValueGraphVisitor for_argument(owner());
-  ArrayNode* arguments = node->value();
-  if (arguments->length() == 1) {
-    ZoneGrowableArray<PushArgumentInstr*>* values =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
-    arguments->ElementAt(0)->Visit(&for_argument);
-    Append(for_argument);
-    PushArgumentInstr* push_arg = PushArgument(for_argument.value());
-    values->Add(push_arg);
-    const int kTypeArgsLen = 0;
-    const int kNumberOfArguments = 1;
-    const Array& kNoArgumentNames = Object::null_array();
-    const Class& cls =
-        Class::Handle(Library::LookupCoreClass(Symbols::StringBase()));
-    ASSERT(!cls.IsNull());
-    const Function& function = Function::ZoneHandle(
-        Z, Resolver::ResolveStatic(
-               cls, Library::PrivateCoreLibName(Symbols::InterpolateSingle()),
-               kTypeArgsLen, kNumberOfArguments, kNoArgumentNames));
-    StaticCallInstr* call = new (Z) StaticCallInstr(
-        node->token_pos(), function, kTypeArgsLen, kNoArgumentNames, values,
-        owner()->ic_data_array(), owner()->GetNextDeoptId(), ICData::kStatic);
-    ReturnDefinition(call);
-    return;
-  }
-  arguments->Visit(&for_argument);
-  Append(for_argument);
-  StringInterpolateInstr* instr = new (Z) StringInterpolateInstr(
-      for_argument.value(), node->token_pos(), owner()->GetNextDeoptId());
-  ReturnDefinition(instr);
-}
-
-void EffectGraphVisitor::VisitClosureNode(ClosureNode* node) {
-  const Function& function = node->function();
-  if (function.IsImplicitStaticClosureFunction()) {
-    const Instance& closure =
-        Instance::ZoneHandle(Z, function.ImplicitStaticClosure());
-    ReturnDefinition(new (Z) ConstantInstr(closure));
-    return;
-  }
-
-  const bool is_implicit = function.IsImplicitInstanceClosureFunction();
-  ASSERT(is_implicit || function.IsNonImplicitClosureFunction());
-  // The context scope may have already been set by the non-optimizing
-  // compiler.  If it was not, set it here.
-  if (function.context_scope() == ContextScope::null()) {
-    ASSERT(!is_implicit);
-    ASSERT(node->scope() != NULL);
-    const ContextScope& context_scope = ContextScope::ZoneHandle(
-        Z, node->scope()->PreserveOuterScope(owner()->context_level()));
-    ASSERT(!function.HasCode());
-    ASSERT(function.context_scope() == ContextScope::null());
-    function.set_context_scope(context_scope);
-
-    // The closure is now properly setup, add it to the lookup table.
-    // It is possible that the compiler creates more than one function
-    // object for the same closure, e.g. when inlining nodes from
-    // finally clauses. If we already have a function object for the
-    // same closure, do not add a second one. We compare token position,
-    // and parent function to detect duplicates.
-    const Function& parent = Function::Handle(function.parent_function());
-    const Function& found_func = Function::Handle(
-        Z, isolate()->LookupClosureFunction(parent, function.token_pos()));
-    if (found_func.IsNull()) {
-      isolate()->AddClosureFunction(function);
-    }
-  }
-  ASSERT(function.context_scope() != ContextScope::null());
-
-  // The function type of a closure may have type arguments. In that case,
-  // pass the type arguments of the instantiator.
-  const Class& closure_class =
-      Class::ZoneHandle(Z, isolate()->object_store()->closure_class());
-  ZoneGrowableArray<PushArgumentInstr*>* no_arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(0);
-  AllocateObjectInstr* alloc = new (Z)
-      AllocateObjectInstr(node->token_pos(), closure_class, no_arguments);
-  alloc->set_closure_function(function);
-
-  Value* closure_val = Bind(alloc);
-  {
-    LocalVariable* closure_tmp_var = EnterTempLocalScope(closure_val);
-    // Store instantiator type arguments if signature is class-uninstantiated.
-    if (!function.HasInstantiatedSignature(kCurrentClass)) {
-      Value* closure_tmp_val =
-          Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
-      Value* type_arguments = BuildInstantiatorTypeArguments(node->token_pos());
-      Do(new (Z) StoreInstanceFieldInstr(
-          Closure::instantiator_type_arguments_offset(), closure_tmp_val,
-          type_arguments, kEmitStoreBarrier, node->token_pos()));
-    }
-
-    // Store function type arguments if signature is function-uninstantiated.
-    if (!function.HasInstantiatedSignature(kFunctions)) {
-      Value* closure_tmp_val =
-          Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
-      Value* type_arguments = BuildFunctionTypeArguments(node->token_pos());
-      Do(new (Z) StoreInstanceFieldInstr(
-          Closure::function_type_arguments_offset(), closure_tmp_val,
-          type_arguments, kEmitStoreBarrier, node->token_pos()));
-    }
-
-    // Mark that there are no delayed type arguments.
-    {
-      Value* closure_tmp_val =
-          Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
-      Value* type_arguments =
-          Bind(new (Z) ConstantInstr(Object::empty_type_arguments()));
-      Do(new (Z) StoreInstanceFieldInstr(
-          Closure::delayed_type_arguments_offset(), closure_tmp_val,
-          type_arguments, kEmitStoreBarrier, node->token_pos()));
-    }
-
-    // Store function.
-    Value* closure_tmp_val =
-        Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
-    Value* func_val =
-        Bind(new (Z) ConstantInstr(Function::ZoneHandle(Z, function.raw())));
-    Do(new (Z) StoreInstanceFieldInstr(Closure::function_offset(),
-                                       closure_tmp_val, func_val,
-                                       kEmitStoreBarrier, node->token_pos()));
-    if (is_implicit) {
-      // Create new context containing the receiver.
-      const intptr_t kNumContextVariables = 1;  // The receiver.
-      Value* allocated_context = Bind(new (Z) AllocateContextInstr(
-          node->token_pos(), kNumContextVariables));
-      {
-        LocalVariable* context_tmp_var = EnterTempLocalScope(allocated_context);
-        // Store receiver in context.
-        Value* context_tmp_val =
-            Bind(new (Z) LoadLocalInstr(*context_tmp_var, node->token_pos()));
-        ValueGraphVisitor for_receiver(owner());
-        node->receiver()->Visit(&for_receiver);
-        Append(for_receiver);
-        Value* receiver = for_receiver.value();
-        Do(new (Z) StoreInstanceFieldInstr(
-            Context::variable_offset(0), context_tmp_val, receiver,
-            kEmitStoreBarrier, node->token_pos()));
-        // Store new context in closure.
-        closure_tmp_val =
-            Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
-        context_tmp_val =
-            Bind(new (Z) LoadLocalInstr(*context_tmp_var, node->token_pos()));
-        Do(new (Z) StoreInstanceFieldInstr(
-            Closure::context_offset(), closure_tmp_val, context_tmp_val,
-            kEmitStoreBarrier, node->token_pos()));
-        Do(ExitTempLocalScope(allocated_context));
-      }
-    } else {
-      // Store current context in closure.
-      closure_tmp_val =
-          Bind(new (Z) LoadLocalInstr(*closure_tmp_var, node->token_pos()));
-      Value* context = Bind(BuildCurrentContext(node->token_pos()));
-      Do(new (Z) StoreInstanceFieldInstr(Closure::context_offset(),
-                                         closure_tmp_val, context,
-                                         kEmitStoreBarrier, node->token_pos()));
-    }
-    ReturnDefinition(ExitTempLocalScope(closure_val));
-  }
-}
-
-void EffectGraphVisitor::BuildPushTypeArguments(
-    const ArgumentListNode& node,
-    ZoneGrowableArray<PushArgumentInstr*>* values) {
-  if (node.type_args_len() > 0) {
-    Value* type_args_val;
-    if (node.type_args_var() != NULL) {
-      type_args_val =
-          Bind(new (Z) LoadLocalInstr(*node.type_args_var(), node.token_pos()));
-    } else {
-      const TypeArguments& type_args = node.type_arguments();
-      ASSERT(!type_args.IsNull() && type_args.IsCanonical() &&
-             (type_args.Length() == node.type_args_len()));
-      type_args_val =
-          BuildInstantiatedTypeArguments(node.token_pos(), type_args);
-    }
-    PushArgumentInstr* push_type_args = PushArgument(type_args_val);
-    values->Add(push_type_args);
-  }
-}
-
-void EffectGraphVisitor::BuildPushArguments(
-    const ArgumentListNode& node,
-    ZoneGrowableArray<PushArgumentInstr*>* values) {
-  for (intptr_t i = 0; i < node.length(); ++i) {
-    ValueGraphVisitor for_argument(owner());
-    node.NodeAt(i)->Visit(&for_argument);
-    Append(for_argument);
-    PushArgumentInstr* push_arg = PushArgument(for_argument.value());
-    values->Add(push_arg);
-  }
-}
-
-void EffectGraphVisitor::BuildInstanceCallConditional(InstanceCallNode* node) {
-  const TokenPosition token_pos = node->token_pos();
-  LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
-  LoadLocalNode* load_temp = new (Z) LoadLocalNode(token_pos, temp_var);
-
-  LiteralNode* null_constant =
-      new (Z) LiteralNode(ST(token_pos), Object::null_instance());
-  ComparisonNode* check_is_null = new (Z)
-      ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
-  TestGraphVisitor for_test(owner(), ST(token_pos));
-  check_is_null->Visit(&for_test);
-
-  EffectGraphVisitor for_true(owner());
-  EffectGraphVisitor for_false(owner());
-
-  StoreLocalNode* store_null =
-      new (Z) StoreLocalNode(ST(token_pos), temp_var, null_constant);
-  store_null->Visit(&for_true);
-
-  InstanceCallNode* call = new (Z) InstanceCallNode(
-      token_pos, load_temp, node->function_name(), node->arguments());
-  StoreLocalNode* store_result =
-      new (Z) StoreLocalNode(ST(token_pos), temp_var, call);
-  store_result->Visit(&for_false);
-
-  Join(for_test, for_true, for_false);
-}
-
-void ValueGraphVisitor::VisitInstanceCallNode(InstanceCallNode* node) {
-  if (node->is_conditional()) {
-    ValueGraphVisitor for_receiver(owner());
-    node->receiver()->Visit(&for_receiver);
-    Append(for_receiver);
-    Do(BuildStoreExprTemp(for_receiver.value(), node->token_pos()));
-    BuildInstanceCallConditional(node);
-    ReturnDefinition(BuildLoadExprTemp(node->token_pos()));
-  } else {
-    EffectGraphVisitor::VisitInstanceCallNode(node);
-  }
-}
-
-void EffectGraphVisitor::VisitInstanceCallNode(InstanceCallNode* node) {
-  if (node->is_conditional()) {
-    ASSERT(node->arguments()->type_args_len() == 0);
-    ValueGraphVisitor for_receiver(owner());
-    node->receiver()->Visit(&for_receiver);
-    Append(for_receiver);
-    Do(BuildStoreExprTemp(for_receiver.value(), node->token_pos()));
-    BuildInstanceCallConditional(node);
-  } else {
-    ZoneGrowableArray<PushArgumentInstr*>* arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(
-            node->arguments()->LengthWithTypeArgs() + 1);
-    BuildPushTypeArguments(*node->arguments(), arguments);
-    ValueGraphVisitor for_receiver(owner());
-    node->receiver()->Visit(&for_receiver);
-    Append(for_receiver);
-    PushArgumentInstr* push_receiver = PushArgument(for_receiver.value());
-    arguments->Add(push_receiver);
-    BuildPushArguments(*node->arguments(), arguments);
-    InstanceCallInstr* call = new (Z) InstanceCallInstr(
-        node->token_pos(), node->function_name(), Token::kILLEGAL, arguments,
-        node->arguments()->type_args_len(), node->arguments()->names(), 1,
-        owner()->ic_data_array(), owner()->GetNextDeoptId());
-    ReturnDefinition(call);
-  }
-}
-
-static ICData::RebindRule ConvertRebindRule(
-    StaticCallNode::RebindRule rebind_rule_ast) {
-  switch (rebind_rule_ast) {
-    case StaticCallNode::kNoRebind:
-      return ICData::kNoRebind;
-    case StaticCallNode::kNSMDispatch:
-      return ICData::kNSMDispatch;
-    case StaticCallNode::kSuper:
-      return ICData::kSuper;
-    case StaticCallNode::kStatic:
-      return ICData::kStatic;
-    default:
-      UNREACHABLE();
-      return ICData::kStatic;
-  }
-}
-
-static ICData::RebindRule ConvertRebindRule(
-    StaticGetterSetter::RebindRule rebind_rule_ast) {
-  switch (rebind_rule_ast) {
-    case StaticGetterSetter::kNoRebind:
-      return ICData::kNoRebind;
-    case StaticGetterSetter::kSuper:
-      return ICData::kSuper;
-    case StaticGetterSetter::kStatic:
-      return ICData::kStatic;
-    default:
-      UNREACHABLE();
-      return ICData::kStatic;
-  }
-}
-
-// <Expression> ::= StaticCall { function: Function
-//                               arguments: <ArgumentList> }
-void EffectGraphVisitor::VisitStaticCallNode(StaticCallNode* node) {
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(
-          node->arguments()->LengthWithTypeArgs());
-  BuildPushTypeArguments(*node->arguments(), arguments);
-  BuildPushArguments(*node->arguments(), arguments);
-  StaticCallInstr* call = new (Z) StaticCallInstr(
-      node->token_pos(), node->function(), node->arguments()->type_args_len(),
-      node->arguments()->names(), arguments, owner()->ic_data_array(),
-      owner()->GetNextDeoptId(), ConvertRebindRule(node->rebind_rule()));
-  if (node->function().recognized_kind() != MethodRecognizer::kUnknown) {
-    call->SetResultType(
-        Z, CompileType::FromCid(MethodRecognizer::ResultCid(node->function())));
-  }
-  ReturnDefinition(call);
-}
-
-void EffectGraphVisitor::BuildClosureCall(ClosureCallNode* node,
-                                          bool result_needed) {
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(
-          node->arguments()->LengthWithTypeArgs() + 1);
-
-  ValueGraphVisitor for_closure(owner());
-  node->closure()->Visit(&for_closure);
-  Append(for_closure);
-  Value* closure_value = for_closure.value();
-  LocalVariable* tmp_var = EnterTempLocalScope(closure_value);
-
-  BuildPushTypeArguments(*node->arguments(), arguments);
-  Value* closure_val =
-      Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
-  PushArgumentInstr* push_closure = PushArgument(closure_val);
-  arguments->Add(push_closure);
-  BuildPushArguments(*node->arguments(), arguments);
-
-  closure_val = Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
-  LoadFieldInstr* function_load = new (Z) LoadFieldInstr(
-      closure_val, Closure::function_offset(),
-      AbstractType::ZoneHandle(Z, AbstractType::null()), node->token_pos());
-  function_load->set_is_immutable(true);
-  Value* function_val = Bind(function_load);
-
-  Definition* closure_call = new (Z) ClosureCallInstr(
-      function_val, node, arguments, owner()->GetNextDeoptId());
-  if (result_needed) {
-    Value* result = Bind(closure_call);
-    Do(new (Z) StoreLocalInstr(*tmp_var, result, ST(node->token_pos())));
-  } else {
-    Do(closure_call);
-  }
-  ReturnDefinition(ExitTempLocalScope(closure_value));
-}
-
-void EffectGraphVisitor::VisitClosureCallNode(ClosureCallNode* node) {
-  BuildClosureCall(node, false);
-}
-
-void ValueGraphVisitor::VisitClosureCallNode(ClosureCallNode* node) {
-  BuildClosureCall(node, true);
-}
-
-void EffectGraphVisitor::VisitInitStaticFieldNode(InitStaticFieldNode* node) {
-  Value* field = Bind(
-      new (Z) ConstantInstr(Field::ZoneHandle(Z, node->field().Original())));
-  AddInstruction(new (Z) InitStaticFieldInstr(field, node->field(),
-                                              owner()->GetNextDeoptId()));
-}
-
-void EffectGraphVisitor::VisitCloneContextNode(CloneContextNode* node) {
-  Value* context = Bind(BuildCurrentContext(node->token_pos()));
-  Value* clone = Bind(new (Z) CloneContextInstr(
-      node->token_pos(), context, node->scope()->num_context_variables(),
-      owner()->GetNextDeoptId()));
-  Do(BuildStoreContext(clone, node->token_pos()));
-}
-
-Value* EffectGraphVisitor::BuildObjectAllocation(ConstructorCallNode* node) {
-  const Class& cls = Class::ZoneHandle(Z, node->constructor().Owner());
-  const bool cls_is_parameterized = cls.NumTypeArguments() > 0;
-
-  ZoneGrowableArray<PushArgumentInstr*>* allocate_arguments = new (Z)
-      ZoneGrowableArray<PushArgumentInstr*>(cls_is_parameterized ? 1 : 0);
-  if (cls_is_parameterized) {
-    Value* type_args = BuildInstantiatedTypeArguments(node->token_pos(),
-                                                      node->type_arguments());
-    allocate_arguments->Add(PushArgument(type_args));
-  }
-
-  Definition* allocation = new (Z) AllocateObjectInstr(
-      node->token_pos(), Class::ZoneHandle(Z, node->constructor().Owner()),
-      allocate_arguments);
-
-  return Bind(allocation);
-}
-
-void EffectGraphVisitor::BuildConstructorCall(
-    ConstructorCallNode* node,
-    PushArgumentInstr* push_alloc_value) {
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-  arguments->Add(push_alloc_value);
-
-  BuildPushArguments(*node->arguments(), arguments);
-  const intptr_t kTypeArgsLen = 0;
-  Do(new (Z) StaticCallInstr(node->token_pos(), node->constructor(),
-                             kTypeArgsLen, node->arguments()->names(),
-                             arguments, owner()->ic_data_array(),
-                             owner()->GetNextDeoptId(), ICData::kStatic));
-}
-
-static intptr_t GetResultCidOfListFactory(ConstructorCallNode* node) {
-  const Function& function = node->constructor();
-  const Class& function_class = Class::Handle(function.Owner());
-
-  if ((function_class.library() != Library::CoreLibrary()) &&
-      (function_class.library() != Library::TypedDataLibrary())) {
-    return kDynamicCid;
-  }
-
-  if (node->constructor().IsFactory()) {
-    if ((function_class.Name() == Symbols::List().raw()) &&
-        (function.name() == Symbols::ListFactory().raw())) {
-      // Special recognition of 'new List()' vs 'new List(n)'.
-      if (node->arguments()->length() == 0) {
-        return kGrowableObjectArrayCid;
-      }
-      return kArrayCid;
-    }
-    return FactoryRecognizer::ResultCid(function);
-  }
-  return kDynamicCid;  // Not a known list constructor.
-}
-
-void EffectGraphVisitor::VisitConstructorCallNode(ConstructorCallNode* node) {
-  if (node->constructor().IsFactory()) {
-    ZoneGrowableArray<PushArgumentInstr*>* arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>();
-    PushArgumentInstr* push_type_arguments =
-        PushArgument(BuildInstantiatedTypeArguments(node->token_pos(),
-                                                    node->type_arguments()));
-    arguments->Add(push_type_arguments);
-    ASSERT(arguments->length() == 1);
-    BuildPushArguments(*node->arguments(), arguments);
-    const int kTypeArgsLen = 0;
-    StaticCallInstr* call = new (Z) StaticCallInstr(
-        node->token_pos(), node->constructor(), kTypeArgsLen,
-        node->arguments()->names(), arguments, owner()->ic_data_array(),
-        owner()->GetNextDeoptId(), ICData::kStatic);
-    const intptr_t result_cid = GetResultCidOfListFactory(node);
-    if (result_cid != kDynamicCid) {
-      call->SetResultType(Z, CompileType::FromCid(result_cid));
-      call->set_is_known_list_constructor(true);
-      // Recognized fixed length array factory must have two arguments:
-      // (0) type-arguments, (1) length.
-      ASSERT(!LoadFieldInstr::IsFixedLengthArrayCid(result_cid) ||
-             arguments->length() == 2);
-    } else if (node->constructor().recognized_kind() !=
-               MethodRecognizer::kUnknown) {
-      call->SetResultType(Z, CompileType::FromCid(MethodRecognizer::ResultCid(
-                                 node->constructor())));
-    }
-    ReturnDefinition(call);
-    return;
-  }
-  // t_n contains the allocated and initialized object.
-  //   t_n      <- AllocateObject(class)
-  //   t_n+1    <- ctor-arg
-  //   t_n+2... <- constructor arguments start here
-  //   StaticCall(constructor, t_n+1, t_n+2, ...)
-  // No need to preserve allocated value (simpler than in ValueGraphVisitor).
-  Value* allocated_value = BuildObjectAllocation(node);
-  PushArgumentInstr* push_allocated_value = PushArgument(allocated_value);
-  BuildConstructorCall(node, push_allocated_value);
-}
-
-Value* EffectGraphVisitor::BuildInstantiator(TokenPosition token_pos) {
-  Function& outer_function = Function::Handle(Z, owner()->function().raw());
-  while (outer_function.IsLocalFunction()) {
-    outer_function = outer_function.parent_function();
-  }
-  if (outer_function.IsFactory()) {
-    return NULL;
-  }
-
-  LocalVariable* instantiator = owner()->parsed_function().instantiator();
-  ASSERT(instantiator != NULL);
-  Value* result = Bind(BuildLoadLocal(*instantiator, token_pos));
-  return result;
-}
-
-Value* EffectGraphVisitor::BuildInstantiatorTypeArguments(
-    TokenPosition token_pos) {
-  const Class& instantiator_class =
-      Class::Handle(Z, owner()->function().Owner());
-  if (!instantiator_class.IsGeneric()) {
-    // The type arguments are compile time constants.
-    TypeArguments& type_arguments =
-        TypeArguments::ZoneHandle(Z, TypeArguments::null());
-    // Type is temporary. Only its type arguments are preserved.
-    Type& type = Type::Handle(Z, Type::New(instantiator_class, type_arguments,
-                                           token_pos, Heap::kNew));
-    type ^= ClassFinalizer::FinalizeType(instantiator_class, type,
-                                         ClassFinalizer::kFinalize);
-    ASSERT(!type.IsMalformedOrMalbounded());
-    type_arguments = type.arguments();
-    type_arguments = type_arguments.Canonicalize();
-    return Bind(new (Z) ConstantInstr(type_arguments));
-  }
-  Function& outer_function = Function::Handle(Z, owner()->function().raw());
-  while (outer_function.IsLocalFunction()) {
-    outer_function = outer_function.parent_function();
-  }
-  if (outer_function.IsFactory()) {
-    // Note that in the factory case, the instantiator is the first parameter
-    // of the factory, i.e. already a TypeArguments object.
-    LocalVariable* instantiator_var = owner()->parsed_function().instantiator();
-    ASSERT(instantiator_var != NULL);
-    return Bind(BuildLoadLocal(*instantiator_var, token_pos));
-  }
-  // The instantiator is the receiver of the caller, which is not a factory.
-  // The receiver cannot be null; extract its TypeArguments object.
-  Value* instantiator = BuildInstantiator(token_pos);
-  intptr_t type_arguments_field_offset =
-      instantiator_class.type_arguments_field_offset();
-  ASSERT(type_arguments_field_offset != Class::kNoTypeArguments);
-
-  return Bind(new (Z) LoadFieldInstr(
-      instantiator, type_arguments_field_offset,
-      Type::ZoneHandle(Z, Type::null()),  // Not an instance, no type.
-      token_pos));
-}
-
-Value* EffectGraphVisitor::BuildFunctionTypeArguments(TokenPosition token_pos) {
-  LocalVariable* function_type_arguments_var =
-      owner()->parsed_function().function_type_arguments();
-  if (function_type_arguments_var == NULL) {
-    ASSERT(!FLAG_reify_generic_functions);
-    return BuildNullValue(token_pos);
-  }
-  return Bind(BuildLoadLocal(*function_type_arguments_var, token_pos));
-}
-
-Value* EffectGraphVisitor::BuildInstantiatedTypeArguments(
-    TokenPosition token_pos,
-    const TypeArguments& type_arguments) {
-  if (type_arguments.IsNull() || type_arguments.IsInstantiated()) {
-    return Bind(new (Z) ConstantInstr(type_arguments));
-  }
-  // The type arguments are uninstantiated.
-  const Class& instantiator_class =
-      Class::ZoneHandle(Z, owner()->function().Owner());
-  Value* instantiator_type_args = NULL;
-  if (type_arguments.IsInstantiated(kCurrentClass)) {
-    instantiator_type_args = BuildNullValue(token_pos);
-  } else {
-    instantiator_type_args = BuildInstantiatorTypeArguments(token_pos);
-    const bool use_instantiator_type_args =
-        type_arguments.IsUninstantiatedIdentity() ||
-        type_arguments.CanShareInstantiatorTypeArguments(instantiator_class);
-    if (use_instantiator_type_args) {
-      return instantiator_type_args;
-    }
-  }
-  Value* function_type_args = NULL;
-  if (type_arguments.IsInstantiated(kFunctions)) {
-    function_type_args = BuildNullValue(token_pos);
-  } else {
-    function_type_args = BuildFunctionTypeArguments(token_pos);
-  }
-  return Bind(new (Z) InstantiateTypeArgumentsInstr(
-      token_pos, type_arguments, instantiator_class, instantiator_type_args,
-      function_type_args, owner()->GetNextDeoptId()));
-}
-
-void ValueGraphVisitor::VisitConstructorCallNode(ConstructorCallNode* node) {
-  if (node->constructor().IsFactory()) {
-    EffectGraphVisitor::VisitConstructorCallNode(node);
-    return;
-  }
-
-  // t_n contains the allocated and initialized object.
-  //   t_n      <- AllocateObject(class)
-  //   t_n      <- StoreLocal(temp, t_n);
-  //   t_n+1    <- ctor-arg
-  //   t_n+2... <- constructor arguments start here
-  //   StaticCall(constructor, t_n, t_n+1, ...)
-  //   tn       <- LoadLocal(temp)
-
-  Value* allocate = BuildObjectAllocation(node);
-  {
-    LocalVariable* tmp_var = EnterTempLocalScope(allocate);
-    Value* allocated_tmp =
-        Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
-    PushArgumentInstr* push_allocated_value = PushArgument(allocated_tmp);
-    BuildConstructorCall(node, push_allocated_value);
-    ReturnDefinition(ExitTempLocalScope(allocate));
-  }
-}
-
-void EffectGraphVisitor::BuildInstanceGetterConditional(
-    InstanceGetterNode* node) {
-  const TokenPosition token_pos = node->token_pos();
-  LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
-  LoadLocalNode* load_temp = new (Z) LoadLocalNode(token_pos, temp_var);
-
-  LiteralNode* null_constant =
-      new (Z) LiteralNode(ST(token_pos), Object::null_instance());
-  ComparisonNode* check_is_null = new (Z)
-      ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
-  TestGraphVisitor for_test(owner(), ST(token_pos));
-  check_is_null->Visit(&for_test);
-
-  EffectGraphVisitor for_true(owner());
-  EffectGraphVisitor for_false(owner());
-
-  StoreLocalNode* store_null =
-      new (Z) StoreLocalNode(ST(token_pos), temp_var, null_constant);
-  store_null->Visit(&for_true);
-
-  InstanceGetterNode* getter =
-      new (Z) InstanceGetterNode(token_pos, load_temp, node->field_name());
-  StoreLocalNode* store_getter =
-      new (Z) StoreLocalNode(ST(token_pos), temp_var, getter);
-  store_getter->Visit(&for_false);
-
-  Join(for_test, for_true, for_false);
-}
-
-void ValueGraphVisitor::VisitInstanceGetterNode(InstanceGetterNode* node) {
-  if (node->is_conditional()) {
-    ValueGraphVisitor for_receiver(owner());
-    node->receiver()->Visit(&for_receiver);
-    Append(for_receiver);
-    Do(BuildStoreExprTemp(for_receiver.value(), node->token_pos()));
-    BuildInstanceGetterConditional(node);
-    ReturnDefinition(BuildLoadExprTemp(node->token_pos()));
-  } else {
-    EffectGraphVisitor::VisitInstanceGetterNode(node);
-  }
-}
-
-void EffectGraphVisitor::VisitInstanceGetterNode(InstanceGetterNode* node) {
-  ValueGraphVisitor for_receiver(owner());
-  node->receiver()->Visit(&for_receiver);
-  Append(for_receiver);
-  if (node->is_conditional()) {
-    Do(BuildStoreExprTemp(for_receiver.value(), node->token_pos()));
-    BuildInstanceGetterConditional(node);
-  } else {
-    PushArgumentInstr* push_receiver = PushArgument(for_receiver.value());
-    ZoneGrowableArray<PushArgumentInstr*>* arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
-    arguments->Add(push_receiver);
-    const String& name =
-        String::ZoneHandle(Z, Field::GetterSymbol(node->field_name()));
-    const intptr_t kTypeArgsLen = 0;
-    InstanceCallInstr* call = new (Z)
-        InstanceCallInstr(node->token_pos(), name, Token::kGET, arguments,
-                          kTypeArgsLen, Object::null_array(), 1,
-                          owner()->ic_data_array(), owner()->GetNextDeoptId());
-    ReturnDefinition(call);
-  }
-}
-
-void EffectGraphVisitor::BuildInstanceSetterArguments(
-    InstanceSetterNode* node,
-    ZoneGrowableArray<PushArgumentInstr*>* arguments,
-    bool result_is_needed) {
-  ValueGraphVisitor for_receiver(owner());
-  node->receiver()->Visit(&for_receiver);
-  Append(for_receiver);
-  arguments->Add(PushArgument(for_receiver.value()));
-
-  ValueGraphVisitor for_value(owner());
-  node->value()->Visit(&for_value);
-  Append(for_value);
-
-  Value* value = NULL;
-  if (result_is_needed) {
-    value = Bind(BuildStoreExprTemp(for_value.value(), node->token_pos()));
-  } else {
-    value = for_value.value();
-  }
-  arguments->Add(PushArgument(value));
-}
-
-void EffectGraphVisitor::VisitInstanceSetterNode(InstanceSetterNode* node) {
-  const TokenPosition token_pos = node->token_pos();
-  if (node->is_conditional()) {
-    ValueGraphVisitor for_receiver(owner());
-    node->receiver()->Visit(&for_receiver);
-    Append(for_receiver);
-    Do(BuildStoreExprTemp(for_receiver.value(), token_pos));
-
-    LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
-    LoadLocalNode* load_temp = new (Z) LoadLocalNode(ST(token_pos), temp_var);
-    LiteralNode* null_constant =
-        new (Z) LiteralNode(ST(token_pos), Object::null_instance());
-    ComparisonNode* check_is_null = new (Z)
-        ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
-    TestGraphVisitor for_test(owner(), ST(token_pos));
-    check_is_null->Visit(&for_test);
-
-    EffectGraphVisitor for_true(owner());
-    EffectGraphVisitor for_false(owner());
-
-    InstanceSetterNode* setter = new (Z) InstanceSetterNode(
-        token_pos, load_temp, node->field_name(), node->value());
-    setter->Visit(&for_false);
-    Join(for_test, for_true, for_false);
-    return;
-  }
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-  BuildInstanceSetterArguments(node, arguments, kResultNotNeeded);
-  const String& name =
-      String::ZoneHandle(Z, Field::SetterSymbol(node->field_name()));
-  const int kTypeArgsLen = 0;
-  const intptr_t kNumArgsChecked = 1;  // Do not check value type.
-  InstanceCallInstr* call = new (Z)
-      InstanceCallInstr(token_pos, name, Token::kSET, arguments, kTypeArgsLen,
-                        Object::null_array(), kNumArgsChecked,
-                        owner()->ic_data_array(), owner()->GetNextDeoptId());
-  ReturnDefinition(call);
-}
-
-void ValueGraphVisitor::VisitInstanceSetterNode(InstanceSetterNode* node) {
-  const TokenPosition token_pos = node->token_pos();
-  if (node->is_conditional()) {
-    ValueGraphVisitor for_receiver(owner());
-    node->receiver()->Visit(&for_receiver);
-    Append(for_receiver);
-    Do(BuildStoreExprTemp(for_receiver.value(), token_pos));
-
-    LocalVariable* temp_var = owner()->parsed_function().expression_temp_var();
-    LoadLocalNode* load_temp = new (Z) LoadLocalNode(ST(token_pos), temp_var);
-    LiteralNode* null_constant =
-        new (Z) LiteralNode(ST(token_pos), Object::null_instance());
-    ComparisonNode* check_is_null = new (Z)
-        ComparisonNode(ST(token_pos), Token::kEQ, load_temp, null_constant);
-    TestGraphVisitor for_test(owner(), ST(token_pos));
-    check_is_null->Visit(&for_test);
-
-    ValueGraphVisitor for_true(owner());
-    null_constant->Visit(&for_true);
-    for_true.Do(BuildStoreExprTemp(for_true.value(), token_pos));
-
-    ValueGraphVisitor for_false(owner());
-    InstanceSetterNode* setter = new (Z) InstanceSetterNode(
-        token_pos, load_temp, node->field_name(), node->value());
-    setter->Visit(&for_false);
-    for_false.Do(BuildStoreExprTemp(for_false.value(), token_pos));
-
-    Join(for_test, for_true, for_false);
-    ReturnDefinition(BuildLoadExprTemp(token_pos));
-    return;
-  }
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-  BuildInstanceSetterArguments(node, arguments, kResultNeeded);
-  const String& name =
-      String::ZoneHandle(Z, Field::SetterSymbol(node->field_name()));
-  const intptr_t kTypeArgsLen = 0;
-  const intptr_t kNumArgsChecked = 1;  // Do not check value type.
-  Do(new (Z) InstanceCallInstr(token_pos, name, Token::kSET, arguments,
-                               kTypeArgsLen, Object::null_array(),
-                               kNumArgsChecked, owner()->ic_data_array(),
-                               owner()->GetNextDeoptId()));
-  ReturnDefinition(BuildLoadExprTemp(token_pos));
-}
-
-void EffectGraphVisitor::VisitStaticGetterNode(StaticGetterNode* node) {
-  const String& getter_name =
-      String::ZoneHandle(Z, Field::GetterSymbol(node->field_name()));
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>();
-  Function& getter_function = Function::ZoneHandle(Z, Function::null());
-  if (node->is_super_getter()) {
-    // Statically resolved instance getter, i.e. "super getter".
-    ASSERT(node->receiver() != NULL);
-    getter_function =
-        Resolver::ResolveDynamicAnyArgs(Z, node->cls(), getter_name);
-    if (getter_function.IsNull()) {
-      // Resolve and call noSuchMethod.
-      ArgumentListNode* arguments = new (Z) ArgumentListNode(node->token_pos());
-      arguments->Add(node->receiver());
-      StaticCallInstr* call = BuildStaticNoSuchMethodCall(
-          node->cls(), node->receiver(), getter_name, arguments,
-          false,  // Don't save last argument.
-          true);  // Super invocation.
-      ReturnDefinition(call);
-      return;
-    } else {
-      ValueGraphVisitor receiver_value(owner());
-      node->receiver()->Visit(&receiver_value);
-      Append(receiver_value);
-      arguments->Add(PushArgument(receiver_value.value()));
-    }
-  } else {
-    getter_function = node->cls().LookupStaticFunction(getter_name);
-    if (getter_function.IsNull()) {
-      // When the parser encounters a reference to a static field materialized
-      // only by a static setter, but no corresponding static getter, it creates
-      // a StaticGetterNode ast node referring to the non-existing static getter
-      // for the case this field reference appears in a left hand side
-      // expression (the parser has not distinguished between left and right
-      // hand side yet at this stage). If the parser establishes later that the
-      // field access is part of a left hand side expression, the
-      // StaticGetterNode is transformed into a StaticSetterNode referring to
-      // the existing static setter.
-      // However, if the field reference appears in a right hand side
-      // expression, no such transformation occurs and we land here with a
-      // StaticGetterNode missing a getter function, so we throw a
-      // NoSuchMethodError.
-
-      // Throw a NoSuchMethodError.
-      StaticCallInstr* call = BuildThrowNoSuchMethodError(
-          node->token_pos(), node->cls(), getter_name,
-          NULL,  // No Arguments to getter.
-          InvocationMirror::EncodeType(node->cls().IsTopLevel()
-                                           ? InvocationMirror::kTopLevel
-                                           : InvocationMirror::kStatic,
-                                       InvocationMirror::kGetter));
-      ReturnDefinition(call);
-      return;
-    }
-  }
-  ASSERT(!getter_function.IsNull());
-  const intptr_t kTypeArgsLen = 0;
-  StaticCallInstr* call = new (Z) StaticCallInstr(
-      node->token_pos(), getter_function, kTypeArgsLen,
-      Object::null_array(),  // No names
-      arguments, owner()->ic_data_array(), owner()->GetNextDeoptId(),
-      ConvertRebindRule(node->rebind_rule()));
-  ReturnDefinition(call);
-}
-
-void EffectGraphVisitor::BuildStaticSetter(StaticSetterNode* node,
-                                           bool result_is_needed) {
-  const String& setter_name =
-      String::ZoneHandle(Z, Field::SetterSymbol(node->field_name()));
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
-  const TokenPosition token_pos = node->token_pos();
-  // A super setter is an instance setter whose setter function is
-  // resolved at compile time (in the caller instance getter's super class).
-  // Unlike a static getter, a super getter has a receiver parameter.
-  const bool is_super_setter = (node->receiver() != NULL);
-  const Function& setter_function = node->function();
-  StaticCallInstr* call;
-  if (setter_function.IsNull()) {
-    if (is_super_setter) {
-      ASSERT(node->receiver() != NULL);
-      // Resolve and call noSuchMethod.
-      ArgumentListNode* arguments = new (Z) ArgumentListNode(token_pos);
-      arguments->Add(node->receiver());
-      arguments->Add(node->value());
-      call = BuildStaticNoSuchMethodCall(
-          node->cls(), node->receiver(), setter_name, arguments,
-          result_is_needed,  // Save last arg if result is needed.
-          true);             // Super invocation.
-    } else {
-      // Throw a NoSuchMethodError.
-      ArgumentListNode* arguments = new (Z) ArgumentListNode(token_pos);
-      arguments->Add(node->value());
-      call = BuildThrowNoSuchMethodError(
-          token_pos, node->cls(), setter_name,
-          arguments,  // Argument is the value passed to the setter.
-          InvocationMirror::EncodeType(node->cls().IsTopLevel()
-                                           ? InvocationMirror::kTopLevel
-                                           : InvocationMirror::kStatic,
-                                       InvocationMirror::kSetter));
-    }
-  } else {
-    if (is_super_setter) {
-      // Add receiver of instance getter.
-      ValueGraphVisitor for_receiver(owner());
-      node->receiver()->Visit(&for_receiver);
-      Append(for_receiver);
-      arguments->Add(PushArgument(for_receiver.value()));
-    }
-    ValueGraphVisitor for_value(owner());
-    node->value()->Visit(&for_value);
-    Append(for_value);
-    Value* value = NULL;
-    if (result_is_needed) {
-      value = Bind(BuildStoreExprTemp(for_value.value(), token_pos));
-    } else {
-      value = for_value.value();
-    }
-    arguments->Add(PushArgument(value));
-    const intptr_t kTypeArgsLen = 0;
-    call = new (Z) StaticCallInstr(token_pos, setter_function, kTypeArgsLen,
-                                   Object::null_array(),  // No names.
-                                   arguments, owner()->ic_data_array(),
-                                   owner()->GetNextDeoptId(),
-                                   ConvertRebindRule(node->rebind_rule()));
-  }
-  if (result_is_needed) {
-    Do(call);
-    ReturnDefinition(BuildLoadExprTemp(token_pos));
-  } else {
-    ReturnDefinition(call);
-  }
-}
-
-void EffectGraphVisitor::VisitStaticSetterNode(StaticSetterNode* node) {
-  BuildStaticSetter(node, false);  // Result not needed.
-}
-
-void ValueGraphVisitor::VisitStaticSetterNode(StaticSetterNode* node) {
-  BuildStaticSetter(node, true);  // Result needed.
-}
-
-static const NativeFieldDesc* NativeFieldForLengthGetter(
-    MethodRecognizer::Kind kind) {
-  switch (kind) {
-    case MethodRecognizer::kObjectArrayLength:
-    case MethodRecognizer::kImmutableArrayLength:
-      return NativeFieldDesc::Array_length();
-
-    case MethodRecognizer::kTypedDataLength:
-      // .length is defined in _TypedList which is the base class for internal
-      // and external typed data.
-      ASSERT(TypedData::length_offset() == ExternalTypedData::length_offset());
-      return NativeFieldDesc::TypedData_length();
-
-    case MethodRecognizer::kGrowableArrayLength:
-      return NativeFieldDesc::GrowableObjectArray_length();
-
-    default:
-      UNREACHABLE();
-      return 0;
-  }
-}
-
-LoadLocalInstr* EffectGraphVisitor::BuildLoadThisVar(LocalScope* scope,
-                                                     TokenPosition token_pos) {
-  LocalVariable* receiver_var = scope->LookupVariable(Symbols::This(),
-                                                      true);  // Test only.
-  return new (Z) LoadLocalInstr(*receiver_var, token_pos);
-}
-
-LoadFieldInstr* EffectGraphVisitor::BuildNativeGetter(
-    NativeBodyNode* node,
-    const NativeFieldDesc* native_field) {
-  Value* receiver = Bind(BuildLoadThisVar(node->scope(), node->token_pos()));
-  LoadFieldInstr* load =
-      new (Z) LoadFieldInstr(receiver, native_field, node->token_pos());
-  return load;
-}
-
-ConstantInstr* EffectGraphVisitor::DoNativeSetterStoreValue(
-    NativeBodyNode* node,
-    intptr_t offset,
-    StoreBarrierType emit_store_barrier) {
-  Value* receiver = Bind(BuildLoadThisVar(node->scope(), node->token_pos()));
-  LocalVariable* value_var =
-      node->scope()->LookupVariable(Symbols::Value(), true);
-  Value* value = Bind(new (Z) LoadLocalInstr(*value_var, node->token_pos()));
-  StoreInstanceFieldInstr* store = new (Z) StoreInstanceFieldInstr(
-      offset, receiver, value, emit_store_barrier, node->token_pos());
-  Do(store);
-  return new (Z) ConstantInstr(Object::ZoneHandle(Z, Object::null()));
-}
-
-void EffectGraphVisitor::VisitNativeBodyNode(NativeBodyNode* node) {
-  const Function& function = owner()->function();
-  const TokenPosition token_pos = node->token_pos();
-  if (!function.IsClosureFunction()) {
-    MethodRecognizer::Kind kind = MethodRecognizer::RecognizeKind(function);
-    switch (kind) {
-      case MethodRecognizer::kObjectEquals: {
-        Value* receiver = Bind(BuildLoadThisVar(node->scope(), token_pos));
-        LocalVariable* other_var =
-            node->scope()->LookupVariable(Symbols::Other(),
-                                          true);  // Test only.
-        Value* other = Bind(new (Z) LoadLocalInstr(*other_var, token_pos));
-        // Receiver is not a number because numbers override equality.
-        const bool kNoNumberCheck = false;
-        StrictCompareInstr* compare = new (Z)
-            StrictCompareInstr(token_pos, Token::kEQ_STRICT, receiver, other,
-                               kNoNumberCheck, owner()->GetNextDeoptId());
-        return ReturnDefinition(compare);
-      }
-      case MethodRecognizer::kStringBaseLength:
-      case MethodRecognizer::kStringBaseIsEmpty: {
-        LoadFieldInstr* load =
-            BuildNativeGetter(node, NativeFieldDesc::String_length());
-        if (kind == MethodRecognizer::kStringBaseLength) {
-          return ReturnDefinition(load);
-        }
-        ASSERT(kind == MethodRecognizer::kStringBaseIsEmpty);
-        Value* zero_val =
-            Bind(new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(0))));
-        Value* load_val = Bind(load);
-        StrictCompareInstr* compare = new (Z) StrictCompareInstr(
-            token_pos, Token::kEQ_STRICT, load_val, zero_val, false,
-            owner()->GetNextDeoptId());  // No number check.
-        return ReturnDefinition(compare);
-      }
-      case MethodRecognizer::kGrowableArrayLength:
-      case MethodRecognizer::kObjectArrayLength:
-      case MethodRecognizer::kImmutableArrayLength:
-      case MethodRecognizer::kTypedDataLength: {
-        LoadFieldInstr* load =
-            BuildNativeGetter(node, NativeFieldForLengthGetter(kind));
-        return ReturnDefinition(load);
-      }
-      case MethodRecognizer::kClassIDgetID: {
-        LocalVariable* value_var =
-            node->scope()->LookupVariable(Symbols::Value(), true);
-        Value* value = Bind(new (Z) LoadLocalInstr(*value_var, token_pos));
-        LoadClassIdInstr* load = new (Z) LoadClassIdInstr(value);
-        return ReturnDefinition(load);
-      }
-      case MethodRecognizer::kGrowableArrayCapacity: {
-        Value* receiver = Bind(BuildLoadThisVar(node->scope(), token_pos));
-        LoadFieldInstr* data_load =
-            new (Z) LoadFieldInstr(receiver, Array::data_offset(),
-                                   Object::dynamic_type(), node->token_pos());
-        data_load->set_result_cid(kArrayCid);
-        Value* data = Bind(data_load);
-        LoadFieldInstr* length_load = new (Z) LoadFieldInstr(
-            data, NativeFieldDesc::Array_length(), node->token_pos());
-        return ReturnDefinition(length_load);
-      }
-      case MethodRecognizer::kListFactory: {
-        // factory List<E>([int length]) {
-        //   return (:arg_desc.positional_count == 2) ? new _List<E>(length)
-        //                                            : new _GrowableList<E>(0);
-        // }
-        ASSERT(owner_->parsed_function().has_arg_desc_var());
-        const auto type_args_parameter = node->scope()->LookupVariable(
-            Symbols::TypeArgumentsParameter(), true);
-        const auto length_parameter =
-            node->scope()->LookupVariable(Symbols::Length(), true);
-        const Library& core_lib = Library::Handle(Z, Library::CoreLibrary());
-
-        // Build: :arg_desc.positional_count == 2
-        TestGraphVisitor comparison(owner(), token_pos);
-        auto arg_descriptor = comparison.Bind(new (Z) LoadLocalInstr(
-            *owner_->parsed_function().arg_desc_var(), token_pos));
-        auto positional_count = comparison.Bind(new (Z) LoadFieldInstr(
-            arg_descriptor, ArgumentsDescriptor::positional_count_offset(),
-            AbstractType::ZoneHandle(Z, Type::SmiType()), token_pos));
-        auto constant_1 = comparison.Bind(
-            new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(2))));
-        comparison.ReturnDefinition(new (Z) StrictCompareInstr(
-            token_pos, Token::kEQ_STRICT, positional_count, constant_1, false,
-            owner()->GetNextDeoptId()));  // No number check.
-
-        // Build: :expr_temp = new _List<E>(length)
-        ValueGraphVisitor allocate_non_growable(owner());
-        {
-          auto arguments = new (Z) ZoneGrowableArray<PushArgumentInstr*>(Z, 2);
-          arguments->Add(
-              allocate_non_growable.PushArgument(allocate_non_growable.Bind(
-                  new (Z) LoadLocalInstr(*type_args_parameter, token_pos))));
-          arguments->Add(
-              allocate_non_growable.PushArgument(allocate_non_growable.Bind(
-                  new (Z) LoadLocalInstr(*length_parameter, token_pos))));
-          const Class& cls = Class::Handle(
-              Z, core_lib.LookupClass(
-                     Library::PrivateCoreLibName(Symbols::_List())));
-          ASSERT(!cls.IsNull());
-          const intptr_t kTypeArgsLen = 0;
-          const Function& func = Function::ZoneHandle(
-              Z, cls.LookupFactoryAllowPrivate(Symbols::_ListFactory()));
-          ASSERT(!func.IsNull());
-          allocate_non_growable.ReturnDefinition(new (Z) StaticCallInstr(
-              token_pos, func, kTypeArgsLen,
-              Object::null_array(),  // No names.
-              arguments, owner()->ic_data_array(), owner()->GetNextDeoptId(),
-              ICData::kStatic));
-          allocate_non_growable.Do(
-              BuildStoreExprTemp(allocate_non_growable.value(), token_pos));
-        }
-
-        // Build: :expr_temp = new _GrowableList<E>(0)
-        ValueGraphVisitor allocate_growable(owner());
-        {
-          auto arguments = new (Z) ZoneGrowableArray<PushArgumentInstr*>(Z, 1);
-          arguments->Add(allocate_growable.PushArgument(allocate_growable.Bind(
-              new (Z) LoadLocalInstr(*type_args_parameter, token_pos))));
-          arguments->Add(allocate_growable.PushArgument(allocate_growable.Bind(
-              new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(0))))));
-          const Class& cls = Class::Handle(
-              Z, core_lib.LookupClass(
-                     Library::PrivateCoreLibName(Symbols::_GrowableList())));
-          ASSERT(!cls.IsNull());
-          const intptr_t kTypeArgsLen = 0;
-          const Function& func = Function::ZoneHandle(
-              Z,
-              cls.LookupFactoryAllowPrivate(Symbols::_GrowableListFactory()));
-          ASSERT(!func.IsNull());
-          allocate_growable.ReturnDefinition(new (Z) StaticCallInstr(
-              token_pos, func, kTypeArgsLen,
-              Object::null_array(),  // No names.
-              arguments, owner()->ic_data_array(), owner()->GetNextDeoptId(),
-              ICData::kStatic));
-          allocate_growable.Do(
-              BuildStoreExprTemp(allocate_growable.value(), token_pos));
-        }
-
-        Join(comparison, allocate_non_growable, allocate_growable);
-        return ReturnDefinition(BuildLoadExprTemp(token_pos));
-      }
-      case MethodRecognizer::kObjectArrayAllocate: {
-        LocalVariable* type_args_parameter = node->scope()->LookupVariable(
-            Symbols::TypeArgumentsParameter(), true);
-        Value* element_type =
-            Bind(new (Z) LoadLocalInstr(*type_args_parameter, token_pos));
-        LocalVariable* length_parameter =
-            node->scope()->LookupVariable(Symbols::Length(), true);
-        Value* length =
-            Bind(new (Z) LoadLocalInstr(*length_parameter, token_pos));
-        CreateArrayInstr* create_array = new CreateArrayInstr(
-            token_pos, element_type, length, owner()->GetNextDeoptId());
-        return ReturnDefinition(create_array);
-      }
-      case MethodRecognizer::kLinkedHashMap_getIndex: {
-        return ReturnDefinition(
-            BuildNativeGetter(node, NativeFieldDesc::LinkedHashMap_index()));
-      }
-      case MethodRecognizer::kLinkedHashMap_setIndex: {
-        return ReturnDefinition(DoNativeSetterStoreValue(
-            node, LinkedHashMap::index_offset(), kEmitStoreBarrier));
-      }
-      case MethodRecognizer::kLinkedHashMap_getData: {
-        return ReturnDefinition(
-            BuildNativeGetter(node, NativeFieldDesc::LinkedHashMap_data()));
-      }
-      case MethodRecognizer::kLinkedHashMap_setData: {
-        return ReturnDefinition(DoNativeSetterStoreValue(
-            node, LinkedHashMap::data_offset(), kEmitStoreBarrier));
-      }
-      case MethodRecognizer::kLinkedHashMap_getHashMask: {
-        return ReturnDefinition(BuildNativeGetter(
-            node, NativeFieldDesc::LinkedHashMap_hash_mask()));
-      }
-      case MethodRecognizer::kLinkedHashMap_setHashMask: {
-        // Smi field; no barrier needed.
-        return ReturnDefinition(DoNativeSetterStoreValue(
-            node, LinkedHashMap::hash_mask_offset(), kNoStoreBarrier));
-      }
-      case MethodRecognizer::kLinkedHashMap_getUsedData: {
-        return ReturnDefinition(BuildNativeGetter(
-            node, NativeFieldDesc::LinkedHashMap_used_data()));
-      }
-      case MethodRecognizer::kLinkedHashMap_setUsedData: {
-        // Smi field; no barrier needed.
-        return ReturnDefinition(DoNativeSetterStoreValue(
-            node, LinkedHashMap::used_data_offset(), kNoStoreBarrier));
-      }
-      case MethodRecognizer::kLinkedHashMap_getDeletedKeys: {
-        return ReturnDefinition(BuildNativeGetter(
-            node, NativeFieldDesc::Get(
-                      NativeFieldDesc::kLinkedHashMap_deleted_keys)));
-      }
-      case MethodRecognizer::kLinkedHashMap_setDeletedKeys: {
-        // Smi field; no barrier needed.
-        return ReturnDefinition(DoNativeSetterStoreValue(
-            node, LinkedHashMap::deleted_keys_offset(), kNoStoreBarrier));
-      }
-      default:
-        break;
-    }
-  }
-  InlineBailout("EffectGraphVisitor::VisitNativeBodyNode");
-
-  const ParsedFunction& pf = owner_->parsed_function();
-  const String& name = String::ZoneHandle(Z, function.native_name());
-  const intptr_t num_params = function.NumParameters();
-  ZoneGrowableArray<PushArgumentInstr*>* args = NULL;
-  if (function.IsGeneric() && FLAG_reify_generic_functions) {
-    args = new (Z) ZoneGrowableArray<PushArgumentInstr*>(1 + num_params);
-    LocalVariable* type_args = pf.RawTypeArgumentsVariable();
-    ASSERT(type_args != NULL);
-    Value* value = Bind(new (Z) LoadLocalInstr(*type_args, node->token_pos()));
-    args->Add(PushArgument(value));
-  } else {
-    args = new (Z) ZoneGrowableArray<PushArgumentInstr*>(num_params);
-  }
-  for (intptr_t i = 0; i < function.NumParameters(); ++i) {
-    LocalVariable* parameter = pf.RawParameterVariable(i);
-    Value* value = Bind(new (Z) LoadLocalInstr(*parameter, node->token_pos()));
-    args->Add(PushArgument(value));
-  }
-  NativeCallInstr* native_call = new (Z) NativeCallInstr(
-      &name, &function, FLAG_link_natives_lazily, node->token_pos(), args);
-  ReturnDefinition(native_call);
-}
-
-void EffectGraphVisitor::VisitPrimaryNode(PrimaryNode* node) {
-  // PrimaryNodes are temporary during parsing.
-  UNREACHABLE();
-}
-
-// <Expression> ::= LoadLocal { local: LocalVariable }
-void EffectGraphVisitor::VisitLoadLocalNode(LoadLocalNode* node) {
-  // Nothing to do.
-}
-
-void ValueGraphVisitor::VisitLoadLocalNode(LoadLocalNode* node) {
-  Definition* load = BuildLoadLocal(node->local(), node->token_pos());
-  ReturnDefinition(load);
-}
-
-// <Expression> ::= StoreLocal { local: LocalVariable
-//                               value: <Expression> }
-void EffectGraphVisitor::VisitStoreLocalNode(StoreLocalNode* node) {
-#if !defined(PRODUCT)
-  // If the right hand side is an expression that does not contain
-  // a safe point for the debugger to stop, add an explicit stub
-  // call. Exception: don't do this when assigning to or from internal
-  // variables, or for generated code that has no source position.
-  AstNode* rhs = node->value();
-  if (rhs->IsAssignableNode()) {
-    rhs = rhs->AsAssignableNode()->expr();
-  }
-  if ((rhs->IsLiteralNode() || rhs->IsLoadStaticFieldNode() ||
-       (rhs->IsLoadLocalNode() &&
-        !rhs->AsLoadLocalNode()->local().IsInternal()) ||
-       rhs->IsClosureNode()) &&
-      !node->local().IsInternal() && node->token_pos().IsDebugPause()) {
-    AddInstruction(new (Z) DebugStepCheckInstr(node->token_pos(),
-                                               RawPcDescriptors::kRuntimeCall,
-                                               owner()->GetNextDeoptId()));
-  }
-#endif
-
-  ValueGraphVisitor for_value(owner());
-  node->value()->Visit(&for_value);
-  Append(for_value);
-  Value* store_value = for_value.value();
-  if (Isolate::Current()->type_checks()) {
-    store_value =
-        BuildAssignableValue(node->value()->token_pos(), store_value,
-                             node->local().type(), node->local().name());
-  }
-  Definition* store =
-      BuildStoreLocal(node->local(), store_value, node->token_pos());
-  ReturnDefinition(store);
-}
-
-void EffectGraphVisitor::VisitLoadInstanceFieldNode(
-    LoadInstanceFieldNode* node) {
-  ValueGraphVisitor for_instance(owner());
-  node->instance()->Visit(&for_instance);
-  Append(for_instance);
-  LoadFieldInstr* load =
-      new (Z) LoadFieldInstr(for_instance.value(), &node->field(),
-                             AbstractType::ZoneHandle(Z, node->field().type()),
-                             node->token_pos(), &owner()->parsed_function());
-  ReturnDefinition(load);
-}
-
-void EffectGraphVisitor::VisitStoreInstanceFieldNode(
-    StoreInstanceFieldNode* node) {
-  const TokenPosition token_pos = node->token_pos();
-  ValueGraphVisitor for_instance(owner());
-  node->instance()->Visit(&for_instance);
-  Append(for_instance);
-  ValueGraphVisitor for_value(owner());
-  node->value()->Visit(&for_value);
-  Append(for_value);
-  Value* store_value = for_value.value();
-  if (isolate()->type_checks()) {
-    const AbstractType& type =
-        AbstractType::ZoneHandle(Z, node->field().type());
-    const String& dst_name = String::ZoneHandle(Z, node->field().name());
-    store_value = BuildAssignableValue(node->value()->token_pos(), store_value,
-                                       type, dst_name);
-  }
-
-  if (isolate()->use_field_guards()) {
-    store_value = Bind(BuildStoreExprTemp(store_value, token_pos));
-    GuardFieldClassInstr* guard_field_class = new (Z)
-        GuardFieldClassInstr(store_value, node->field(),
-                             thread()->compiler_state().GetNextDeoptId());
-    AddInstruction(guard_field_class);
-    store_value = Bind(BuildLoadExprTemp(token_pos));
-    GuardFieldLengthInstr* guard_field_length = new (Z)
-        GuardFieldLengthInstr(store_value, node->field(),
-                              thread()->compiler_state().GetNextDeoptId());
-    AddInstruction(guard_field_length);
-    store_value = Bind(BuildLoadExprTemp(token_pos));
-  }
-  StoreInstanceFieldInstr* store = new (Z)
-      StoreInstanceFieldInstr(node->field(), for_instance.value(), store_value,
-                              kEmitStoreBarrier, token_pos);
-  // Maybe initializing unboxed store.
-  store->set_is_initialization(node->is_initializer());
-  ReturnDefinition(store);
-}
-
-void EffectGraphVisitor::VisitLoadStaticFieldNode(LoadStaticFieldNode* node) {
-  const TokenPosition token_pos = node->token_pos();
-  if (node->field().is_const()) {
-    ASSERT(node->field().StaticValue() != Object::sentinel().raw());
-    ASSERT(node->field().StaticValue() != Object::transition_sentinel().raw());
-    Definition* result = new (Z) ConstantInstr(
-        Instance::ZoneHandle(Z, node->field().StaticValue()), token_pos);
-    return ReturnDefinition(result);
-  }
-  Value* field_value = Bind(new (Z) ConstantInstr(
-      Field::ZoneHandle(Z, node->field().Original()), token_pos));
-  LoadStaticFieldInstr* load =
-      new (Z) LoadStaticFieldInstr(field_value, token_pos);
-  ReturnDefinition(load);
-}
-
-Definition* EffectGraphVisitor::BuildStoreStaticField(
-    StoreStaticFieldNode* node,
-    bool result_is_needed,
-    TokenPosition token_pos) {
-#if !defined(PRODUCT)
-  // If the right hand side is an expression that does not contain
-  // a safe point for the debugger to stop, add an explicit stub
-  // call.
-  AstNode* rhs = node->value();
-  if (rhs->IsAssignableNode()) {
-    rhs = rhs->AsAssignableNode()->expr();
-  }
-  if ((rhs->IsLiteralNode() || rhs->IsLoadLocalNode() ||
-       rhs->IsLoadStaticFieldNode() || rhs->IsClosureNode()) &&
-      node->token_pos().IsDebugPause()) {
-    AddInstruction(new (Z) DebugStepCheckInstr(node->token_pos(),
-                                               RawPcDescriptors::kRuntimeCall,
-                                               owner()->GetNextDeoptId()));
-  }
-#endif
-
-  ValueGraphVisitor for_value(owner());
-  node->value()->Visit(&for_value);
-  Append(for_value);
-  Value* store_value = NULL;
-  if (result_is_needed) {
-    store_value = Bind(BuildStoreExprTemp(for_value.value(), token_pos));
-  } else {
-    store_value = for_value.value();
-  }
-  StoreStaticFieldInstr* store =
-      new (Z) StoreStaticFieldInstr(node->field(), store_value, token_pos);
-
-  if (result_is_needed) {
-    Do(store);
-    return BuildLoadExprTemp(token_pos);
-  } else {
-    return store;
-  }
-}
-
-void EffectGraphVisitor::VisitStoreStaticFieldNode(StoreStaticFieldNode* node) {
-  ReturnDefinition(
-      BuildStoreStaticField(node, kResultNotNeeded, node->token_pos()));
-}
-
-void ValueGraphVisitor::VisitStoreStaticFieldNode(StoreStaticFieldNode* node) {
-  ReturnDefinition(
-      BuildStoreStaticField(node, kResultNeeded, node->token_pos()));
-}
-
-void EffectGraphVisitor::VisitLoadIndexedNode(LoadIndexedNode* node) {
-  Function* super_function = NULL;
-  if (node->IsSuperLoad()) {
-    // Resolve the load indexed operator in the super class.
-    super_function = &Function::ZoneHandle(
-        Z, Resolver::ResolveDynamicAnyArgs(Z, node->super_class(),
-                                           Symbols::IndexToken()));
-    if (super_function->IsNull()) {
-      // Could not resolve super operator. Generate call noSuchMethod() of the
-      // super class instead.
-      ArgumentListNode* arguments = new (Z) ArgumentListNode(node->token_pos());
-      arguments->Add(node->array());
-      arguments->Add(node->index_expr());
-      StaticCallInstr* call = BuildStaticNoSuchMethodCall(
-          node->super_class(), node->array(), Symbols::IndexToken(), arguments,
-          false,  // Don't save last arg.
-          true);  // Super invocation.
-      ReturnDefinition(call);
-      return;
-    }
-  }
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-  ValueGraphVisitor for_array(owner());
-  node->array()->Visit(&for_array);
-  Append(for_array);
-  arguments->Add(PushArgument(for_array.value()));
-
-  ValueGraphVisitor for_index(owner());
-  node->index_expr()->Visit(&for_index);
-  Append(for_index);
-  arguments->Add(PushArgument(for_index.value()));
-
-  const intptr_t kTypeArgsLen = 0;
-  if (super_function != NULL) {
-    // Generate static call to super operator.
-    StaticCallInstr* load = new (Z) StaticCallInstr(
-        node->token_pos(), *super_function, kTypeArgsLen, Object::null_array(),
-        arguments, owner()->ic_data_array(), owner()->GetNextDeoptId(),
-        ICData::kSuper);
-    ReturnDefinition(load);
-  } else {
-    // Generate dynamic call to index operator.
-    const intptr_t checked_argument_count = 1;
-    InstanceCallInstr* load = new (Z) InstanceCallInstr(
-        node->token_pos(), Symbols::IndexToken(), Token::kINDEX, arguments,
-        kTypeArgsLen, Object::null_array(), checked_argument_count,
-        owner()->ic_data_array(), owner()->GetNextDeoptId());
-    ReturnDefinition(load);
-  }
-}
-
-Definition* EffectGraphVisitor::BuildStoreIndexedValues(StoreIndexedNode* node,
-                                                        bool result_is_needed) {
-  Function* super_function = NULL;
-  const TokenPosition token_pos = node->token_pos();
-  if (node->IsSuperStore()) {
-    // Resolve the store indexed operator in the super class.
-    super_function = &Function::ZoneHandle(
-        Z, Resolver::ResolveDynamicAnyArgs(Z, node->super_class(),
-                                           Symbols::AssignIndexToken()));
-    if (super_function->IsNull()) {
-      // Could not resolve super operator. Generate call noSuchMethod() of the
-      // super class instead.
-      ArgumentListNode* arguments = new (Z) ArgumentListNode(token_pos);
-      arguments->Add(node->array());
-      arguments->Add(node->index_expr());
-      arguments->Add(node->value());
-      StaticCallInstr* call = BuildStaticNoSuchMethodCall(
-          node->super_class(), node->array(), Symbols::AssignIndexToken(),
-          arguments,
-          result_is_needed,  // Save last arg if result is needed.
-          true);             // Super invocation.
-      if (result_is_needed) {
-        Do(call);
-        // BuildStaticNoSuchMethodCall stores the value in expression_temp.
-        return BuildLoadExprTemp(token_pos);
-      } else {
-        return call;
-      }
-    }
-  }
-
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(3);
-  ValueGraphVisitor for_array(owner());
-  node->array()->Visit(&for_array);
-  Append(for_array);
-  arguments->Add(PushArgument(for_array.value()));
-
-  ValueGraphVisitor for_index(owner());
-  node->index_expr()->Visit(&for_index);
-  Append(for_index);
-  arguments->Add(PushArgument(for_index.value()));
-
-  ValueGraphVisitor for_value(owner());
-  node->value()->Visit(&for_value);
-  Append(for_value);
-  Value* value = NULL;
-  if (result_is_needed) {
-    value = Bind(BuildStoreExprTemp(for_value.value(), token_pos));
-  } else {
-    value = for_value.value();
-  }
-  arguments->Add(PushArgument(value));
-
-  const intptr_t kTypeArgsLen = 0;
-  if (super_function != NULL) {
-    // Generate static call to super operator []=.
-
-    StaticCallInstr* store = new (Z) StaticCallInstr(
-        token_pos, *super_function, kTypeArgsLen, Object::null_array(),
-        arguments, owner()->ic_data_array(), owner()->GetNextDeoptId(),
-        ICData::kSuper);
-    if (result_is_needed) {
-      Do(store);
-      return BuildLoadExprTemp(token_pos);
-    } else {
-      return store;
-    }
-  } else {
-    // Generate dynamic call to operator []=.
-    const intptr_t checked_argument_count = 2;  // Do not check for value type.
-    InstanceCallInstr* store = new (Z) InstanceCallInstr(
-        token_pos, Symbols::AssignIndexToken(), Token::kASSIGN_INDEX, arguments,
-        kTypeArgsLen, Object::null_array(), checked_argument_count,
-        owner()->ic_data_array(), owner()->GetNextDeoptId());
-    if (result_is_needed) {
-      Do(store);
-      return BuildLoadExprTemp(token_pos);
-    } else {
-      return store;
-    }
-  }
-}
-
-void EffectGraphVisitor::VisitStoreIndexedNode(StoreIndexedNode* node) {
-  ReturnDefinition(BuildStoreIndexedValues(node, kResultNotNeeded));
-}
-
-void ValueGraphVisitor::VisitStoreIndexedNode(StoreIndexedNode* node) {
-  ReturnDefinition(BuildStoreIndexedValues(node, kResultNeeded));
-}
-
-bool EffectGraphVisitor::HasContextScope() const {
-  const ContextScope& context_scope =
-      ContextScope::Handle(owner()->function().context_scope());
-  return !context_scope.IsNull() && (context_scope.num_variables() > 0);
-}
-
-void EffectGraphVisitor::UnchainContexts(intptr_t n) {
-  // TODO(johnmccutchan): Pass this in.
-  const TokenPosition token_pos = TokenPosition::kContext;
-  if (n > 0) {
-    Value* context = Bind(BuildCurrentContext(token_pos));
-    while (n-- > 0) {
-      context = Bind(new (Z) LoadFieldInstr(context, Context::parent_offset(),
-                                            // Not an instance, no type.
-                                            Type::ZoneHandle(Z, Type::null()),
-                                            token_pos));
-    }
-    Do(BuildStoreContext(context, token_pos));
-  }
-}
-
-void EffectGraphVisitor::AdjustContextLevel(LocalScope* target_scope) {
-  ASSERT(target_scope != NULL);
-  intptr_t target_context_level = 0;
-  if (target_scope->num_context_variables() > 0) {
-    // The scope of the target label allocates a context, therefore its outer
-    // scope is at a lower context level.
-    target_context_level = target_scope->context_level() - 1;
-  } else {
-    // The scope of the target label does not allocate a context, so its outer
-    // scope is at the same context level. Find it.
-    while ((target_scope != NULL) &&
-           (target_scope->num_context_variables() == 0)) {
-      target_scope = target_scope->parent();
-    }
-    if (target_scope != NULL) {
-      target_context_level = target_scope->context_level();
-    }
-  }
-  ASSERT(target_context_level >= 0);
-  intptr_t current_context_level = owner()->context_level();
-  ASSERT(current_context_level >= target_context_level);
-  UnchainContexts(current_context_level - target_context_level);
-  // Record adjusted context level.
-  owner()->nesting_stack()->AdjustContextLevel(target_context_level);
-}
-
-// <Statement> ::= Sequence { scope: LocalScope
-//                            nodes: <Statement>*
-//                            label: SourceLabel }
-void EffectGraphVisitor::VisitSequenceNode(SequenceNode* node) {
-  LocalScope* scope = node->scope();
-  const Function& function = owner()->function();
-  const intptr_t num_context_variables =
-      (scope != NULL) ? scope->num_context_variables() : 0;
-  const bool is_top_level_sequence =
-      node == owner()->parsed_function().node_sequence();
-  // The outermost function sequence cannot contain a label.
-  ASSERT((node->label() == NULL) || !is_top_level_sequence);
-  NestedBlock nested_block(owner(), node);
-
-  if (num_context_variables > 0) {
-    // The local scope declares variables that are captured.
-    // Allocate and chain a new context (Except don't chain when at the function
-    // entry if the function does not capture any variables from outer scopes).
-    Value* allocated_context = Bind(
-        new (Z) AllocateContextInstr(node->token_pos(), num_context_variables));
-    {
-      LocalVariable* tmp_var = EnterTempLocalScope(allocated_context);
-      if (!is_top_level_sequence || HasContextScope()) {
-        ASSERT(is_top_level_sequence ||
-               (nested_block.ContextLevel() ==
-                nested_block.outer()->ContextLevel() + 1));
-        Value* tmp_val =
-            Bind(new (Z) LoadLocalInstr(*tmp_var, node->token_pos()));
-        Value* parent_context = Bind(BuildCurrentContext(node->token_pos()));
-        Do(new (Z) StoreInstanceFieldInstr(Context::parent_offset(), tmp_val,
-                                           parent_context, kEmitStoreBarrier,
-                                           node->token_pos()));
-      }
-      Do(BuildStoreContext(Bind(ExitTempLocalScope(allocated_context)),
-                           node->token_pos()));
-    }
-
-    // If this node_sequence is the body of the function being compiled, copy
-    // the captured parameters from the frame into the context.
-    if (is_top_level_sequence) {
-      ASSERT(scope->context_level() == 1);
-      const int num_params = function.NumParameters();
-      for (int pos = 0; pos < num_params; pos++) {
-        const LocalVariable& parameter = *scope->VariableAt(pos);
-        ASSERT(parameter.owner() == scope);
-        if (parameter.is_captured()) {
-          LocalVariable& raw_parameter =
-              *owner_->parsed_function().RawParameterVariable(pos);
-          ASSERT((function.HasOptionalParameters() &&
-                  raw_parameter.owner() == scope) ||
-                 !(function.HasOptionalParameters() &&
-                   raw_parameter.owner() == NULL));
-          ASSERT(!raw_parameter.is_captured());
-          // Copy parameter from local frame to current context.
-          Value* load = Bind(BuildLoadLocal(raw_parameter, node->token_pos()));
-          Do(BuildStoreLocal(parameter, load, ST(node->token_pos())));
-          // Write NULL to the source location to detect buggy accesses and
-          // allow GC of passed value if it gets overwritten by a new value in
-          // the function.
-          Value* null_constant = Bind(
-              new (Z) ConstantInstr(Object::ZoneHandle(Z, Object::null())));
-          Do(BuildStoreLocal(raw_parameter, null_constant,
-                             ST(node->token_pos())));
-        }
-      }
-    }
-  }
-
-  // Load the passed-in type argument vector from the temporary stack slot,
-  // prepend the function type arguments of the generic parent function, and
-  // store it to the final location, possibly in the context.
-  if (FLAG_reify_generic_functions && is_top_level_sequence &&
-      function.IsGeneric()) {
-    const ParsedFunction& parsed_function = owner()->parsed_function();
-    LocalVariable* type_args_var = parsed_function.function_type_arguments();
-    ASSERT(type_args_var->owner() == scope);
-    LocalVariable* parent_type_args_var =
-        parsed_function.parent_type_arguments();
-    if (type_args_var->is_captured() || (parent_type_args_var != NULL)) {
-      LocalVariable* raw_type_args = parsed_function.RawTypeArgumentsVariable();
-      Value* type_args_val =
-          Bind(BuildLoadLocal(*raw_type_args, node->token_pos()));
-      if (parent_type_args_var != NULL) {
-        ASSERT(parent_type_args_var->owner() != scope);
-        // Call the runtime to concatenate both vectors.
-        ZoneGrowableArray<PushArgumentInstr*>* arguments =
-            new (Z) ZoneGrowableArray<PushArgumentInstr*>(4);
-        arguments->Add(PushArgument(type_args_val));
-        Value* parent_type_args_val =
-            Bind(BuildLoadLocal(*parent_type_args_var, node->token_pos()));
-        arguments->Add(PushArgument(parent_type_args_val));
-        Value* parent_len = Bind(new (Z) ConstantInstr(
-            Smi::ZoneHandle(Z, Smi::New(function.NumParentTypeParameters()))));
-        arguments->Add(PushArgument(parent_len));
-        Value* total_len = Bind(new (Z) ConstantInstr(
-            Smi::ZoneHandle(Z, Smi::New(function.NumTypeParameters() +
-                                        function.NumParentTypeParameters()))));
-        arguments->Add(PushArgument(total_len));
-        const Library& dart_internal =
-            Library::Handle(Z, Library::InternalLibrary());
-        const Function& prepend_function =
-            Function::ZoneHandle(Z, dart_internal.LookupFunctionAllowPrivate(
-                                        Symbols::PrependTypeArguments()));
-        ASSERT(!prepend_function.IsNull());
-        const intptr_t kTypeArgsLen = 0;
-        type_args_val = Bind(new (Z) StaticCallInstr(
-            node->token_pos(), prepend_function, kTypeArgsLen,
-            Object::null_array(),  // No names.
-            arguments, owner()->ic_data_array(), owner()->GetNextDeoptId(),
-            ICData::kStatic));
-      }
-      Do(BuildStoreLocal(*type_args_var, type_args_val, ST(node->token_pos())));
-    }
-  }
-
-  if (FLAG_causal_async_stacks && is_top_level_sequence &&
-      (function.IsAsyncClosure() || function.IsAsyncGenClosure())) {
-    LocalScope* top_scope = node->scope();
-    // Fetch the :async_stack_trace variable and store it into the thread.
-    LocalVariable* async_stack_trace_var =
-        top_scope->LookupVariable(Symbols::AsyncStackTraceVar(), false);
-    ASSERT((async_stack_trace_var != NULL) &&
-           async_stack_trace_var->is_captured());
-    // Load :async_stack_trace
-    Value* async_stack_trace_value = Bind(BuildLoadLocal(
-        *async_stack_trace_var, node->token_pos().ToSynthetic()));
-    // Setup arguments for _asyncSetThreadStackTrace.
-    ZoneGrowableArray<PushArgumentInstr*>* arguments =
-        new (Z) ZoneGrowableArray<PushArgumentInstr*>(1);
-    arguments->Add(PushArgument(async_stack_trace_value));
-
-    const Function& async_set_thread_stack_trace = Function::ZoneHandle(
-        Z, isolate()->object_store()->async_set_thread_stack_trace());
-    ASSERT(!async_set_thread_stack_trace.IsNull());
-    // Call _asyncSetThreadStackTrace
-    const intptr_t kTypeArgsLen = 0;
-    StaticCallInstr* call_async_set_thread_stack_trace =
-        new (Z) StaticCallInstr(node->token_pos().ToSynthetic(),
-                                async_set_thread_stack_trace, kTypeArgsLen,
-                                Object::null_array(), arguments,
-                                owner()->ic_data_array(),
-                                owner()->GetNextDeoptId(), ICData::kStatic);
-    Do(call_async_set_thread_stack_trace);
-  }
-
-#if !defined(PRODUCT)
-  if (is_top_level_sequence && function.is_debuggable()) {
-    // Place a debug check at method entry to ensure breaking on a method always
-    // happens, even if there are no assignments/calls/runtimecalls in the first
-    // basic block. Place this check at the last parameter to ensure parameters
-    // are in scope in the debugger at method entry.
-    const int num_params = function.NumParameters();
-    TokenPosition check_pos = TokenPosition::kNoSource;
-    if (num_params > 0) {
-      const LocalVariable& parameter = *scope->VariableAt(num_params - 1);
-      check_pos = parameter.token_pos();
-    }
-
-    if (check_pos.IsNoSource() || (check_pos.Pos() < node->token_pos().Pos())) {
-      // No parameters or synthetic parameters, e.g. 'this'.
-      check_pos = node->token_pos();
-      ASSERT(check_pos.IsDebugPause());
-    }
-    AddInstruction(new (Z) DebugStepCheckInstr(
-        check_pos, RawPcDescriptors::kRuntimeCall, owner()->GetNextDeoptId()));
-  }
-#endif
-
-  // This check may be deleted if the generated code is leaf.
-  // Native functions don't need a stack check at entry.
-  if (is_top_level_sequence && !function.is_native()) {
-    // Always allocate CheckOverflowInstr so that deopt-ids match regardless
-    // if we inline or not.
-    if (!function.IsImplicitGetterFunction() &&
-        !function.IsImplicitSetterFunction()) {
-      // Stack overflow error is reported at the function token position.
-      CheckStackOverflowInstr* check = new (Z) CheckStackOverflowInstr(
-          function.token_pos(), 0, owner()->GetNextDeoptId());
-      // If we are inlining don't actually attach the stack check. We must still
-      // create the stack check in order to allocate a deopt id.
-      if (!owner()->IsInlining()) {
-        AddInstruction(check);
-      }
-    }
-  }
-
-  if (is_top_level_sequence && isolate()->argument_type_checks()) {
-    const int num_params = function.NumParameters();
-    int pos = 0;
-    if (function.IsFactory() || function.IsDynamicFunction() ||
-        function.IsGenerativeConstructor()) {
-      // Skip type checking of type arguments for factory functions.
-      // Skip type checking of receiver for instance functions and constructors.
-      pos = 1;
-    }
-    while (pos < num_params) {
-      const LocalVariable& parameter = *scope->VariableAt(pos);
-      ASSERT(parameter.owner() == scope);
-      if (!CanSkipTypeCheck(parameter.token_pos(), NULL, parameter.type(),
-                            parameter.name())) {
-        Value* parameter_value =
-            Bind(BuildLoadLocal(parameter, parameter.token_pos()));
-        const String& dst_name =
-            (function.kind() == RawFunction::kImplicitSetter)
-                ? String::ZoneHandle(Z, Field::NameFromSetter(
-                                            String::Handle(Z, function.name())))
-                : parameter.name();
-        Do(BuildAssertAssignable(parameter.token_pos(), parameter_value,
-                                 parameter.type(), dst_name));
-      }
-      pos++;
-    }
-  }
-
-  // Continuation part:
-  // If this node sequence is the body of a function with continuations,
-  // leave room for a preamble.
-  // The preamble is generated after visiting the body.
-  GotoInstr* preamble_start = NULL;
-  if (is_top_level_sequence &&
-      (function.IsAsyncClosure() || function.IsSyncGenClosure() ||
-       function.IsAsyncGenClosure())) {
-    JoinEntryInstr* preamble_end =
-        new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                               owner()->GetNextDeoptId());
-    ASSERT(exit() != NULL);
-    exit()->Goto(preamble_end);
-    ASSERT(exit()->next()->IsGoto());
-    preamble_start = exit()->next()->AsGoto();
-    ASSERT(preamble_start->IsGoto());
-    exit_ = preamble_end;
-  }
-
-  intptr_t i = 0;
-  while (is_open() && (i < node->length())) {
-    EffectGraphVisitor for_effect(owner());
-    node->NodeAt(i++)->Visit(&for_effect);
-    Append(for_effect);
-    if (!is_open()) {
-      // E.g., because of a JumpNode.
-      break;
-    }
-  }
-
-  // Continuation part:
-  // After generating the CFG for the body we can create the preamble
-  // because we know exactly how many continuation states we need.
-  if (is_top_level_sequence &&
-      (function.IsAsyncClosure() || function.IsSyncGenClosure() ||
-       function.IsAsyncGenClosure())) {
-    ASSERT(preamble_start != NULL);
-    // We are at the top level. Fetch the corresponding scope.
-    LocalScope* top_scope = node->scope();
-    LocalVariable* jump_var =
-        top_scope->LookupVariable(Symbols::AwaitJumpVar(), false);
-    ASSERT(jump_var != NULL && jump_var->is_captured());
-    Instruction* saved_entry = entry_;
-    Instruction* saved_exit = exit_;
-    entry_ = NULL;
-    exit_ = NULL;
-
-    LoadLocalNode* load_jump_count =
-        new (Z) LoadLocalNode(node->token_pos(), jump_var);
-    ComparisonNode* check_jump_count;
-    const intptr_t num_await_states = owner()->await_joins()->length();
-
-    LocalVariable* old_context =
-        top_scope->LookupVariable(Symbols::AwaitContextVar(), false);
-    for (intptr_t i = 0; i < num_await_states; i++) {
-      check_jump_count = new (Z)
-          ComparisonNode(ST(node->token_pos()), Token::kEQ, load_jump_count,
-                         new (Z) LiteralNode(ST(node->token_pos()),
-                                             Smi::ZoneHandle(Z, Smi::New(i))));
-      TestGraphVisitor for_test(owner(), ST(node->token_pos()));
-      check_jump_count->Visit(&for_test);
-      EffectGraphVisitor for_true(owner());
-      EffectGraphVisitor for_false(owner());
-
-      // Build async jump or sync yield jump.
-      ASSERT(function.IsAsyncClosure() || function.IsAsyncGenClosure() ||
-             function.IsSyncGenClosure());
-
-      // Restore the saved continuation context, i.e. the context that was
-      // saved into :await_ctx_var before the closure suspended.
-      for_true.BuildRestoreContext(*old_context, ST(node->token_pos()));
-
-      // Goto saved join.
-      for_true.Goto((*owner()->await_joins())[i]);
-
-      Join(for_test, for_true, for_false);
-      if (i == 0) {
-        // Manually link up the preamble start.
-        preamble_start->previous()->set_next(for_test.entry());
-        for_test.entry()->set_previous(preamble_start->previous());
-      }
-      if (i == (num_await_states - 1)) {
-        // Link up preamble end.
-        if (exit_ == NULL) {
-          exit_ = preamble_start;
-        } else {
-          exit_->LinkTo(preamble_start);
-        }
-      }
-    }
-    entry_ = saved_entry;
-    exit_ = saved_exit;
-  }
-
-  if (is_open() && (num_context_variables > 0) &&
-      (!is_top_level_sequence || HasContextScope())) {
-    UnchainContexts(1);
-  }
-
-  // If this node sequence is labeled, a break out of the sequence will have
-  // taken care of unchaining the context.
-  if (nested_block.break_target() != NULL) {
-    if (is_open()) Goto(nested_block.break_target());
-    exit_ = nested_block.break_target();
-  }
-}
-
-void EffectGraphVisitor::VisitCatchClauseNode(CatchClauseNode* node) {
-  InlineBailout("EffectGraphVisitor::VisitCatchClauseNode (exception)");
-  // Restores current context from local variable ':saved_try_context_var'.
-  BuildRestoreContext(node->context_var(), node->token_pos());
-
-  EffectGraphVisitor for_catch(owner());
-  node->VisitChildren(&for_catch);
-  Append(for_catch);
-}
-
-void EffectGraphVisitor::VisitTryCatchNode(TryCatchNode* node) {
-  InlineBailout("EffectGraphVisitor::VisitTryCatchNode (exception)");
-  CatchClauseNode* catch_block = node->catch_block();
-  SequenceNode* finally_block = node->finally_block();
-  if ((finally_block != NULL) && (finally_block->length() == 0)) {
-    SequenceNode* catch_sequence = catch_block->sequence();
-    if (catch_sequence->length() == 1) {
-      // Check for a single rethrow statement. This only matches the synthetic
-      // catch-clause generated for try-finally.
-      ThrowNode* throw_node = catch_sequence->NodeAt(0)->AsThrowNode();
-      if ((throw_node != NULL) && (throw_node->stacktrace() != NULL)) {
-        // Empty finally-block in a try-finally can be optimized away.
-        EffectGraphVisitor for_try(owner());
-        node->try_block()->Visit(&for_try);
-        Append(for_try);
-        return;
-      }
-    }
-  }
-
-  const intptr_t original_handler_index = owner()->try_index();
-  const intptr_t try_handler_index = node->try_index();
-  ASSERT(try_handler_index != original_handler_index);
-  owner()->set_try_index(try_handler_index);
-
-  // Preserve current context into local variable ':saved_try_context_var'.
-  BuildSaveContext(node->context_var(), ST(node->token_pos()));
-
-  EffectGraphVisitor for_try(owner());
-  node->try_block()->Visit(&for_try);
-
-  if (for_try.is_open()) {
-    JoinEntryInstr* after_try = new (Z)
-        JoinEntryInstr(owner()->AllocateBlockId(), original_handler_index,
-                       owner()->GetNextDeoptId());
-    for_try.Goto(after_try);
-    for_try.exit_ = after_try;
-  }
-
-  JoinEntryInstr* try_entry = new (Z) JoinEntryInstr(
-      owner()->AllocateBlockId(), try_handler_index, owner()->GetNextDeoptId());
-
-  Goto(try_entry);
-  AppendFragment(try_entry, for_try);
-  exit_ = for_try.exit_;
-
-  // We are done generating code for the try block.
-  owner()->set_try_index(original_handler_index);
-
-  // If there is a finally block, it is the handler for code in the catch
-  // block.
-  const intptr_t catch_handler_index = (finally_block == NULL)
-                                           ? original_handler_index
-                                           : catch_block->catch_handler_index();
-
-  const intptr_t prev_catch_try_index = owner()->catch_try_index();
-
-  owner()->set_try_index(catch_handler_index);
-  owner()->set_catch_try_index(try_handler_index);
-  EffectGraphVisitor for_catch(owner());
-  catch_block->Visit(&for_catch);
-  owner()->set_catch_try_index(prev_catch_try_index);
-
-  // NOTE: The implicit variables ':saved_try_context_var', ':exception_var'
-  // and ':stack_trace_var' can never be captured variables.
-  ASSERT(!catch_block->context_var().is_captured());
-  ASSERT(!catch_block->exception_var().is_captured());
-  ASSERT(!catch_block->stacktrace_var().is_captured());
-
-  CatchBlockEntryInstr* catch_entry = new (Z) CatchBlockEntryInstr(
-      catch_block->token_pos(), (node->token_pos() == TokenPosition::kNoSource),
-      owner()->AllocateBlockId(), catch_handler_index, owner()->graph_entry(),
-      catch_block->handler_types(), try_handler_index,
-      catch_block->needs_stacktrace(), owner()->GetNextDeoptId(),
-      &catch_block->exception_var(), &catch_block->stacktrace_var(),
-      &catch_block->exception_var(), &catch_block->stacktrace_var());
-  owner()->AddCatchEntry(catch_entry);
-  AppendFragment(catch_entry, for_catch);
-
-  if (for_catch.is_open()) {
-    JoinEntryInstr* join = new (Z)
-        JoinEntryInstr(owner()->AllocateBlockId(), original_handler_index,
-                       owner()->GetNextDeoptId());
-    for_catch.Goto(join);
-    if (is_open()) Goto(join);
-    exit_ = join;
-  }
-
-  if (finally_block != NULL) {
-    ASSERT(node->rethrow_clause() != NULL);
-    // Create a handler for the code in the catch block, containing the
-    // code in the finally block.
-    owner()->set_try_index(original_handler_index);
-    EffectGraphVisitor for_finally(owner());
-    for_finally.BuildRestoreContext(catch_block->context_var(),
-                                    finally_block->token_pos());
-
-    node->rethrow_clause()->Visit(&for_finally);
-    if (for_finally.is_open()) {
-      // Rethrow the exception.  Manually build the graph for rethrow.
-      Value* exception = for_finally.Bind(for_finally.BuildLoadLocal(
-          catch_block->rethrow_exception_var(), finally_block->token_pos()));
-      for_finally.PushArgument(exception);
-      Value* stacktrace = for_finally.Bind(for_finally.BuildLoadLocal(
-          catch_block->rethrow_stacktrace_var(), finally_block->token_pos()));
-      for_finally.PushArgument(stacktrace);
-      for_finally.AddInstruction(
-          new (Z) ReThrowInstr(catch_block->token_pos(), catch_handler_index,
-                               owner()->GetNextDeoptId()));
-      for_finally.CloseFragment();
-    }
-    ASSERT(!for_finally.is_open());
-
-    const Array& types = Array::ZoneHandle(Z, Array::New(1, Heap::kOld));
-    types.SetAt(0, Object::dynamic_type());
-    CatchBlockEntryInstr* finally_entry = new (Z) CatchBlockEntryInstr(
-        finally_block->token_pos(),
-        true,  // this is not a catch block from user code.
-        owner()->AllocateBlockId(), original_handler_index,
-        owner()->graph_entry(), types, catch_handler_index,
-        catch_block->needs_stacktrace(), owner()->GetNextDeoptId(),
-        &catch_block->exception_var(), &catch_block->stacktrace_var(),
-        &catch_block->exception_var(), &catch_block->stacktrace_var());
-    owner()->AddCatchEntry(finally_entry);
-    AppendFragment(finally_entry, for_finally);
-  }
-
-  // Generate code for the finally block if one exists.
-  if ((finally_block != NULL) && is_open()) {
-    EffectGraphVisitor for_finally_block(owner());
-    finally_block->Visit(&for_finally_block);
-    Append(for_finally_block);
-  }
-}
-
-// Looks up dynamic method noSuchMethod in target_class
-// (including its super class chain) and builds a static call to it.
-StaticCallInstr* EffectGraphVisitor::BuildStaticNoSuchMethodCall(
-    const Class& target_class,
-    AstNode* receiver,
-    const String& method_name,
-    ArgumentListNode* method_arguments,
-    bool save_last_arg,
-    bool is_super_invocation) {
-  TokenPosition args_pos = method_arguments->token_pos();
-  LocalVariable* temp = NULL;
-  if (save_last_arg) {
-    temp = owner()->parsed_function().expression_temp_var();
-  }
-  ArgumentListNode* args = Parser::BuildNoSuchMethodArguments(
-      args_pos, method_name, *method_arguments, temp, is_super_invocation);
-  // Make sure we resolve to a compatible noSuchMethod, otherwise call
-  // noSuchMethod of class Object.
-  const int kTypeArgsLen = 0;
-  const int kNumArguments = 2;
-  ArgumentsDescriptor args_desc(Array::ZoneHandle(
-      Z, ArgumentsDescriptor::New(kTypeArgsLen, kNumArguments)));
-  Function& no_such_method_func = Function::ZoneHandle(
-      Z, Resolver::ResolveDynamicForReceiverClass(
-             target_class, Symbols::NoSuchMethod(), args_desc));
-  if (no_such_method_func.IsNull()) {
-    const Class& object_class =
-        Class::ZoneHandle(Z, isolate()->object_store()->object_class());
-    no_such_method_func = Resolver::ResolveDynamicForReceiverClass(
-        object_class, Symbols::NoSuchMethod(), args_desc);
-  }
-  // We are guaranteed to find noSuchMethod of class Object.
-  ASSERT(!no_such_method_func.IsNull());
-  ZoneGrowableArray<PushArgumentInstr*>* push_arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>(2);
-  BuildPushArguments(*args, push_arguments);
-  return new (Z) StaticCallInstr(
-      args_pos, no_such_method_func, kTypeArgsLen, Object::null_array(),
-      push_arguments, owner()->ic_data_array(), owner()->GetNextDeoptId(),
-      ICData::kNSMDispatch);
-}
-
-StaticCallInstr* EffectGraphVisitor::BuildThrowNoSuchMethodError(
-    TokenPosition token_pos,
-    const Class& function_class,
-    const String& function_name,
-    ArgumentListNode* function_arguments,
-    int invocation_type) {
-  ZoneGrowableArray<PushArgumentInstr*>* arguments =
-      new (Z) ZoneGrowableArray<PushArgumentInstr*>();
-  // Object receiver, actually a class literal of the unresolved method's owner.
-  AbstractType& type = Type::ZoneHandle(
-      Z, Type::New(function_class, Object::null_type_arguments(), token_pos,
-                   Heap::kOld));
-  type ^= ClassFinalizer::FinalizeType(function_class, type);
-  Value* receiver_value = Bind(new (Z) ConstantInstr(type));
-  arguments->Add(PushArgument(receiver_value));
-  // String memberName.
-  const String& member_name =
-      String::ZoneHandle(Z, Symbols::New(T, function_name));
-  Value* member_name_value = Bind(new (Z) ConstantInstr(member_name));
-  arguments->Add(PushArgument(member_name_value));
-  // Smi invocation_type.
-  Value* invocation_type_value = Bind(
-      new (Z) ConstantInstr(Smi::ZoneHandle(Z, Smi::New(invocation_type))));
-  arguments->Add(PushArgument(invocation_type_value));
-  // Object typeArguments.
-  Value* type_arguments_value = Bind(new (Z) ConstantInstr(
-      function_arguments == NULL
-          ? TypeArguments::ZoneHandle(Z, TypeArguments::null())
-          : function_arguments->type_arguments()));
-  arguments->Add(PushArgument(type_arguments_value));
-  // List arguments.
-  if (function_arguments == NULL) {
-    Value* arguments_value =
-        Bind(new (Z) ConstantInstr(Array::ZoneHandle(Z, Array::null())));
-    arguments->Add(PushArgument(arguments_value));
-  } else {
-    ValueGraphVisitor array_val(owner());
-    ArrayNode* array =
-        new (Z) ArrayNode(token_pos, Type::ZoneHandle(Z, Type::ArrayType()),
-                          function_arguments->nodes());
-    array->Visit(&array_val);
-    Append(array_val);
-    arguments->Add(PushArgument(array_val.value()));
-  }
-  // List argumentNames.
-  ConstantInstr* cinstr = new (Z) ConstantInstr(
-      (function_arguments == NULL) ? Array::ZoneHandle(Z, Array::null())
-                                   : function_arguments->names());
-  Value* argument_names_value = Bind(cinstr);
-  arguments->Add(PushArgument(argument_names_value));
-
-  // Resolve and call NoSuchMethodError._throwNew.
-  const Library& core_lib = Library::Handle(Z, Library::CoreLibrary());
-  const Class& cls =
-      Class::Handle(Z, core_lib.LookupClass(Symbols::NoSuchMethodError()));
-  ASSERT(!cls.IsNull());
-  const intptr_t kTypeArgsLen = 0;
-  const Function& func = Function::ZoneHandle(
-      Z, Resolver::ResolveStatic(
-             cls, Library::PrivateCoreLibName(Symbols::ThrowNew()),
-             kTypeArgsLen, arguments->length(), Object::null_array()));
-  ASSERT(!func.IsNull());
-  return new (Z) StaticCallInstr(token_pos, func, kTypeArgsLen,
-                                 Object::null_array(),  // No names.
-                                 arguments, owner()->ic_data_array(),
-                                 owner()->GetNextDeoptId(), ICData::kStatic);
-}
-
-void EffectGraphVisitor::BuildThrowNode(ThrowNode* node) {
-#if !defined(PRODUCT)
-  if (node->exception()->IsLiteralNode() ||
-      node->exception()->IsLoadLocalNode() ||
-      node->exception()->IsLoadStaticFieldNode() ||
-      node->exception()->IsClosureNode()) {
-    AddInstruction(new (Z) DebugStepCheckInstr(node->token_pos(),
-                                               RawPcDescriptors::kRuntimeCall,
-                                               owner()->GetNextDeoptId()));
-  }
-#endif
-  ValueGraphVisitor for_exception(owner());
-  node->exception()->Visit(&for_exception);
-  Append(for_exception);
-  PushArgument(for_exception.value());
-  Instruction* instr = NULL;
-  if (node->stacktrace() == NULL) {
-    instr = new (Z) ThrowInstr(node->token_pos(), owner()->GetNextDeoptId());
-  } else {
-    ValueGraphVisitor for_stack_trace(owner());
-    node->stacktrace()->Visit(&for_stack_trace);
-    Append(for_stack_trace);
-    PushArgument(for_stack_trace.value());
-    instr = new (Z) ReThrowInstr(node->token_pos(), owner()->catch_try_index(),
-                                 owner()->GetNextDeoptId());
-  }
-  AddInstruction(instr);
-}
-
-void EffectGraphVisitor::VisitThrowNode(ThrowNode* node) {
-  BuildThrowNode(node);
-  CloseFragment();
-}
-
-// A throw cannot be part of an expression, however, the parser may replace
-// certain expression nodes with a throw. In that case generate a literal null
-// so that the fragment is not closed in the middle of an expression.
-void ValueGraphVisitor::VisitThrowNode(ThrowNode* node) {
-  BuildThrowNode(node);
-  ReturnDefinition(
-      new (Z) ConstantInstr(Instance::ZoneHandle(Z, Instance::null())));
-}
-
-void EffectGraphVisitor::VisitInlinedFinallyNode(InlinedFinallyNode* node) {
-  InlineBailout("EffectGraphVisitor::VisitInlinedFinallyNode (exception)");
-  const intptr_t try_index = owner()->try_index();
-  if (try_index >= 0) {
-    // We are about to generate code for an inlined finally block. Exceptions
-    // thrown in this block of code should be treated as though they are
-    // thrown not from the current try block but the outer try block if any.
-    intptr_t outer_try_index = node->try_index();
-    owner()->set_try_index(outer_try_index);
-  }
-
-  // Note: do not restore the saved_try_context here since the inlined
-  // code is not reached via an exception handler, therefore the context is
-  // always properly set on entry. In other words, the inlined finally clause is
-  // never the target of a long jump that would find an uninitialized current
-  // context variable.
-
-  JoinEntryInstr* finally_entry =
-      new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                             owner()->GetNextDeoptId());
-  EffectGraphVisitor for_finally_block(owner());
-  for_finally_block.AdjustContextLevel(node->finally_block()->scope());
-  node->finally_block()->Visit(&for_finally_block);
-
-  if (try_index >= 0) {
-    owner()->set_try_index(try_index);
-  }
-
-  if (for_finally_block.is_open()) {
-    JoinEntryInstr* after_finally =
-        new (Z) JoinEntryInstr(owner()->AllocateBlockId(), owner()->try_index(),
-                               owner()->GetNextDeoptId());
-    for_finally_block.Goto(after_finally);
-    for_finally_block.exit_ = after_finally;
-  }
-
-  Goto(finally_entry);
-  AppendFragment(finally_entry, for_finally_block);
-  exit_ = for_finally_block.exit_;
-}
-
-void EffectGraphVisitor::VisitStopNode(StopNode* node) {
-  AddInstruction(new (Z) StopInstr(node->message()));
-}
-
-FlowGraph* FlowGraphBuilder::BuildGraph() {
-  VMTagScope tagScope(thread(), VMTag::kCompileFlowGraphBuilderTagId,
-                      FLAG_profile_vm);
-  if (FLAG_support_ast_printer && FLAG_print_ast &&
-      FlowGraphPrinter::ShouldPrint(parsed_function().function())) {
-    // Print the function ast before IL generation.
-    AstPrinter ast_printer;
-    ast_printer.PrintFunctionNodes(parsed_function());
-  }
-  if (FLAG_support_ast_printer && FLAG_print_scopes &&
-      FlowGraphPrinter::ShouldPrint(parsed_function().function())) {
-    AstPrinter ast_printer;
-    ast_printer.PrintFunctionScope(parsed_function());
-  }
-  TargetEntryInstr* normal_entry = new (Z) TargetEntryInstr(
-      AllocateBlockId(), CatchClauseNode::kInvalidTryIndex, GetNextDeoptId());
-
-  // Generate optional positional/named argument copying!
-  const bool compiling_for_osr = osr_id_ != Compiler::kNoOSRDeoptId;
-
-  kernel::PrologueBuilder prologue_builder(
-      &parsed_function_, last_used_block_id_, compiling_for_osr, IsInlining());
-  PrologueInfo prologue_info(-1, -1);
-  BlockEntryInstr* instruction_cursor =
-      prologue_builder.BuildPrologue(normal_entry, &prologue_info);
-  last_used_block_id_ = prologue_builder.last_used_block_id();
-
-  graph_entry_ =
-      new (Z) GraphEntryInstr(parsed_function(), normal_entry, osr_id_);
-  EffectGraphVisitor for_effect(this);
-  parsed_function().node_sequence()->Visit(&for_effect);
-  AppendFragment(instruction_cursor, for_effect);
-  // Check that the graph is properly terminated.
-  ASSERT(!for_effect.is_open());
-
-  // When compiling for OSR, use a depth first search to find the OSR
-  // entry and make graph entry jump to it instead of normal entry.
-  // Catch entries are always considered reachable, even if they
-  // become unreachable after OSR.
-  if (osr_id_ != Compiler::kNoOSRDeoptId) {
-    graph_entry_->RelinkToOsrEntry(Z, last_used_block_id_);
-  }
-
-  FlowGraph* graph = new (Z) FlowGraph(parsed_function(), graph_entry_,
-                                       last_used_block_id_, prologue_info);
-  graph->set_await_token_positions(await_token_positions_);
-
-  return graph;
-}
-
-void FlowGraphBuilder::AppendAwaitTokenPosition(TokenPosition token_pos) {
-  await_token_positions_->Add(token_pos);
-}
-
-void FlowGraphBuilder::Bailout(const char* reason) const {
-  parsed_function_.Bailout("FlowGraphBuilder", reason);
-}
-
-bool FlowGraphBuilder::SimpleInstanceOfType(const AbstractType& type) {
+bool SimpleInstanceOfType(const AbstractType& type) {
   // Bail if the type is still uninstantiated at compile time.
   if (!type.IsInstantiated()) return false;
 
diff --git a/runtime/vm/compiler/frontend/flow_graph_builder.h b/runtime/vm/compiler/frontend/flow_graph_builder.h
index 94dc758..71e573c 100644
--- a/runtime/vm/compiler/frontend/flow_graph_builder.h
+++ b/runtime/vm/compiler/frontend/flow_graph_builder.h
@@ -8,7 +8,6 @@
 #include "platform/assert.h"
 #include "platform/globals.h"
 #include "vm/allocation.h"
-#include "vm/ast.h"
 #include "vm/compiler/backend/flow_graph.h"
 #include "vm/compiler/backend/il.h"
 #include "vm/growable_array.h"
@@ -16,18 +15,6 @@
 
 namespace dart {
 
-class AbstractType;
-class Array;
-class Class;
-class Field;
-class LocalVariable;
-class ParsedFunction;
-class String;
-class TypeArguments;
-
-class NestedStatement;
-class TestGraphVisitor;
-
 // A class to collect the exits from an inlined function during graph
 // construction so they can be plugged into the caller's flow graph.
 class InlineExitCollector : public ZoneAllocated {
@@ -53,7 +40,7 @@
   //
   // After inlining the caller graph will have correctly adjusted the use
   // lists.  The block orders will need to be recomputed.
-  void ReplaceCall(TargetEntryInstr* callee_entry);
+  void ReplaceCall(BlockEntryInstr* callee_entry);
 
  private:
   struct Data {
@@ -90,479 +77,8 @@
   GrowableArray<Data> exits_;
 };
 
-// Build a flow graph from a parsed function's AST.
-class FlowGraphBuilder : public ValueObject {
- public:
-  // The inlining context is NULL if not inlining.  The osr_id is the deopt
-  // id of the OSR entry or Compiler::kNoOSRDeoptId if not compiling for OSR.
-  FlowGraphBuilder(const ParsedFunction& parsed_function,
-                   const ZoneGrowableArray<const ICData*>& ic_data_array,
-                   ZoneGrowableArray<intptr_t>* context_level_array,
-                   InlineExitCollector* exit_collector,
-                   intptr_t osr_id);
-
-  FlowGraph* BuildGraph();
-
-  const ParsedFunction& parsed_function() const { return parsed_function_; }
-  const Function& function() const { return parsed_function_.function(); }
-  const ZoneGrowableArray<const ICData*>& ic_data_array() const {
-    return ic_data_array_;
-  }
-
-  void Bailout(const char* reason) const;
-
-  intptr_t AllocateBlockId() { return ++last_used_block_id_; }
-  void SetInitialBlockId(intptr_t id) { last_used_block_id_ = id; }
-
-  intptr_t GetNextDeoptId() const;
-
-  intptr_t context_level() const;
-
-  void IncrementLoopDepth() { ++loop_depth_; }
-  void DecrementLoopDepth() { --loop_depth_; }
-  intptr_t loop_depth() const { return loop_depth_; }
-
-  // Manage the currently active try index.
-  void set_try_index(intptr_t value) { try_index_ = value; }
-  intptr_t try_index() const { return try_index_; }
-
-  // Manage the currently active catch-handler try index.
-  void set_catch_try_index(intptr_t value) { catch_try_index_ = value; }
-  intptr_t catch_try_index() const { return catch_try_index_; }
-
-  intptr_t next_await_counter() { return jump_count_++; }
-
-  ZoneGrowableArray<JoinEntryInstr*>* await_joins() const {
-    return await_joins_;
-  }
-
-  void AddCatchEntry(CatchBlockEntryInstr* entry);
-
-  GraphEntryInstr* graph_entry() const { return graph_entry_; }
-
-  intptr_t num_stack_locals() const { return num_stack_locals_; }
-
-  bool IsInlining() const { return (exit_collector_ != NULL); }
-  InlineExitCollector* exit_collector() const { return exit_collector_; }
-
-  ZoneGrowableArray<const LibraryPrefix*>* deferred_prefixes() const {
-    return parsed_function_.deferred_prefixes();
-  }
-
-  intptr_t temp_count() const { return temp_count_; }
-  intptr_t AllocateTemp() { return temp_count_++; }
-  void DeallocateTemps(intptr_t count) {
-    ASSERT(temp_count_ >= count);
-    temp_count_ -= count;
-  }
-
-  intptr_t args_pushed() const { return args_pushed_; }
-  void add_args_pushed(intptr_t n) { args_pushed_ += n; }
-
-  NestedStatement* nesting_stack() const { return nesting_stack_; }
-
-  // When compiling for OSR, remove blocks that are not reachable from the
-  // OSR entry point.
-  void PruneUnreachable();
-
-  // Returns address where the constant 'value' is stored or 0 if not found.
-  static uword FindDoubleConstant(double value);
-
-  Thread* thread() const { return parsed_function().thread(); }
-  Isolate* isolate() const { return parsed_function().isolate(); }
-  Zone* zone() const { return parsed_function().zone(); }
-
-  void AppendAwaitTokenPosition(TokenPosition token_pos);
-
-  ZoneGrowableArray<TokenPosition>* await_token_positions() const {
-    return await_token_positions_;
-  }
-
-  static bool SimpleInstanceOfType(const AbstractType& type);
-
- private:
-  friend class NestedStatement;  // Explicit access to nesting_stack_.
-  friend class Intrinsifier;
-
-  intptr_t parameter_count() const {
-    return parsed_function_.function().NumParameters();
-  }
-
-  const ParsedFunction& parsed_function_;
-  const ZoneGrowableArray<const ICData*>& ic_data_array_;
-  // Contains (deopt_id, context_level) pairs.
-  ZoneGrowableArray<intptr_t>* context_level_array_;
-
-  const intptr_t num_stack_locals_;
-  InlineExitCollector* const exit_collector_;
-
-  intptr_t last_used_block_id_;
-  intptr_t try_index_;
-  intptr_t catch_try_index_;
-  intptr_t loop_depth_;
-  GraphEntryInstr* graph_entry_;
-
-  // The expression stack height.
-  intptr_t temp_count_;
-
-  // Outgoing argument stack height.
-  intptr_t args_pushed_;
-
-  // A stack of enclosing nested statements.
-  NestedStatement* nesting_stack_;
-
-  // The deopt id of the OSR entry orCompiler::kNoOSRDeoptId if not compiling
-  // for OSR.
-  const intptr_t osr_id_;
-
-  intptr_t jump_count_;
-  ZoneGrowableArray<JoinEntryInstr*>* await_joins_;
-  ZoneGrowableArray<TokenPosition>* await_token_positions_;
-
-  DISALLOW_IMPLICIT_CONSTRUCTORS(FlowGraphBuilder);
-};
-
-// Translate an AstNode to a control-flow graph fragment for its effects
-// (e.g., a statement or an expression in an effect context).  Implements a
-// function from an AstNode and next temporary index to a graph fragment
-// with a single entry and at most one exit.  The fragment is represented by
-// an (entry, exit) pair of Instruction pointers:
-//
-//   - (NULL, NULL): an empty and open graph fragment
-//   - (i0, NULL): a closed graph fragment which has only non-local exits
-//   - (i0, i1): an open graph fragment
-class EffectGraphVisitor : public AstNodeVisitor {
- public:
-  explicit EffectGraphVisitor(FlowGraphBuilder* owner)
-      : owner_(owner), entry_(NULL), exit_(NULL) {}
-
-#define DECLARE_VISIT(BaseName)                                                \
-  virtual void Visit##BaseName##Node(BaseName##Node* node);
-
-  FOR_EACH_NODE(DECLARE_VISIT)
-#undef DECLARE_VISIT
-
-  FlowGraphBuilder* owner() const { return owner_; }
-  Instruction* entry() const { return entry_; }
-  Instruction* exit() const { return exit_; }
-
-  bool is_empty() const { return entry_ == NULL; }
-  bool is_open() const { return is_empty() || exit_ != NULL; }
-
-  void Bailout(const char* reason) const;
-  void InlineBailout(const char* reason) const;
-
-  // Append a graph fragment to this graph.  Assumes this graph is open.
-  void Append(const EffectGraphVisitor& other_fragment);
-  // Append a definition that can have uses.  Assumes this graph is open.
-  Value* Bind(Definition* definition);
-  // Append a computation with no uses.  Assumes this graph is open.
-  void Do(Definition* definition);
-  // Append a single (non-Definition, non-Entry) instruction.  Assumes this
-  // graph is open.
-  void AddInstruction(Instruction* instruction);
-  // Append a Goto (unconditional control flow) instruction and close
-  // the graph fragment.  Assumes this graph fragment is open.
-  void Goto(JoinEntryInstr* join);
-
-  // Append a 'diamond' branch and join to this graph, depending on which
-  // parts are reachable.  Assumes this graph is open.
-  void Join(const TestGraphVisitor& test_fragment,
-            const EffectGraphVisitor& true_fragment,
-            const EffectGraphVisitor& false_fragment);
-
-  // Append a 'while loop' test and back edge to this graph, depending on
-  // which parts are reachable.  Afterward, the graph exit is the false
-  // successor of the loop condition.
-  void TieLoop(TokenPosition token_pos,
-               const TestGraphVisitor& test_fragment,
-               const EffectGraphVisitor& body_fragment,
-               const EffectGraphVisitor& test_preamble_fragment);
-
-  // Wraps a value in a push-argument instruction and adds the result to the
-  // graph.
-  PushArgumentInstr* PushArgument(Value* value);
-
-  // This implementation shares state among visitors by using the builder.
-  // The implementation is incorrect if a visitor that hits a return is not
-  // actually added to the graph.
-  void AddReturnExit(TokenPosition token_pos, Value* value);
-
- protected:
-  Definition* BuildStoreTemp(const LocalVariable& local,
-                             Value* value,
-                             TokenPosition token_pos);
-  Definition* BuildStoreExprTemp(Value* value, TokenPosition token_pos);
-  Definition* BuildLoadExprTemp(TokenPosition token_pos);
-
-  Definition* BuildStoreLocal(const LocalVariable& local,
-                              Value* value,
-                              TokenPosition token_pos);
-  Definition* BuildLoadLocal(const LocalVariable& local,
-                             TokenPosition token_pos);
-  LoadLocalInstr* BuildLoadThisVar(LocalScope* scope, TokenPosition token_pos);
-  LoadFieldInstr* BuildNativeGetter(NativeBodyNode* node,
-                                    const NativeFieldDesc* native_field);
-  // Assumes setter parameter is named 'value'. Returns null constant.
-  ConstantInstr* DoNativeSetterStoreValue(NativeBodyNode* node,
-                                          intptr_t offset,
-                                          StoreBarrierType emit_store_barrier);
-
-  // Helpers for translating parts of the AST.
-  void BuildPushTypeArguments(const ArgumentListNode& node,
-                              ZoneGrowableArray<PushArgumentInstr*>* values);
-  void BuildPushArguments(const ArgumentListNode& node,
-                          ZoneGrowableArray<PushArgumentInstr*>* values);
-
-  // Creates an instantiated type argument vector used in preparation of an
-  // allocation call.
-  // May be called only if allocating an object of a parameterized class.
-  Value* BuildInstantiatedTypeArguments(TokenPosition token_pos,
-                                        const TypeArguments& type_arguments);
-
-  Value* BuildInstantiator(TokenPosition token_pos);
-  Value* BuildInstantiatorTypeArguments(TokenPosition token_pos);
-  Value* BuildFunctionTypeArguments(TokenPosition token_pos);
-  PushArgumentInstr* PushInstantiatorTypeArguments(const AbstractType& type,
-                                                   TokenPosition token_pos);
-  PushArgumentInstr* PushFunctionTypeArguments(const AbstractType& type,
-                                               TokenPosition token_pos);
-
-  // Perform a type check on the given value.
-  AssertAssignableInstr* BuildAssertAssignable(TokenPosition token_pos,
-                                               Value* value,
-                                               const AbstractType& dst_type,
-                                               const String& dst_name);
-
-  // Perform a type check on the given value and return it.
-  Value* BuildAssignableValue(TokenPosition token_pos,
-                              Value* value,
-                              const AbstractType& dst_type,
-                              const String& dst_name);
-
-  static const bool kResultNeeded = true;
-  static const bool kResultNotNeeded = false;
-
-  Definition* BuildStoreIndexedValues(StoreIndexedNode* node,
-                                      bool result_is_needed);
-
-  void BuildInstanceSetterArguments(
-      InstanceSetterNode* node,
-      ZoneGrowableArray<PushArgumentInstr*>* arguments,
-      bool result_is_needed);
-
-  StrictCompareInstr* BuildStrictCompare(AstNode* left,
-                                         AstNode* right,
-                                         Token::Kind kind,
-                                         TokenPosition token_pos);
-
-  virtual void BuildTypeTest(ComparisonNode* node);
-  virtual void BuildTypeCast(ComparisonNode* node);
-
-  bool HasContextScope() const;
-
-  // Moves the nth parent context into the context register.
-  void UnchainContexts(intptr_t n);
-
-  // Unchain the current context until its level matches the context level
-  // expected on entry at the target specified by its scope.
-  void AdjustContextLevel(LocalScope* target_scope);
-
-  void CloseFragment() { exit_ = NULL; }
-
-  // Returns a local variable index for a temporary local that is
-  // on top of the current expression stack.
-  intptr_t GetCurrentTempLocalIndex() const;
-
-  Value* BuildObjectAllocation(ConstructorCallNode* node);
-  void BuildConstructorCall(ConstructorCallNode* node,
-                            PushArgumentInstr* alloc_value);
-
-  void BuildSaveContext(const LocalVariable& variable, TokenPosition token_pos);
-  void BuildRestoreContext(const LocalVariable& variable,
-                           TokenPosition token_pos);
-
-  Definition* BuildStoreContext(Value* value, TokenPosition token_pos);
-  Definition* BuildCurrentContext(TokenPosition token_pos);
-
-  void BuildThrowNode(ThrowNode* node);
-
-  StaticCallInstr* BuildStaticNoSuchMethodCall(
-      const Class& target_class,
-      AstNode* receiver,
-      const String& method_name,
-      ArgumentListNode* method_arguments,
-      bool save_last_arg,
-      bool is_super_invocation);
-
-  StaticCallInstr* BuildThrowNoSuchMethodError(
-      TokenPosition token_pos,
-      const Class& function_class,
-      const String& function_name,
-      ArgumentListNode* function_arguments,
-      int invocation_type);
-
-  void BuildStaticSetter(StaticSetterNode* node, bool result_is_needed);
-  Definition* BuildStoreStaticField(StoreStaticFieldNode* node,
-                                    bool result_is_needed,
-                                    TokenPosition token_pos);
-
-  void BuildClosureCall(ClosureCallNode* node, bool result_needed);
-
-  Value* BuildNullValue(TokenPosition token_pos);
-
-  // Returns true if the run-time type check can be eliminated.
-  bool CanSkipTypeCheck(TokenPosition token_pos,
-                        Value* value,
-                        const AbstractType& dst_type,
-                        const String& dst_name);
-
-  // Helpers for allocating and deallocating temporary locals on top of the
-  // expression stack.
-  LocalVariable* EnterTempLocalScope(Value* value);
-  Definition* ExitTempLocalScope(Value* value);
-
-  void BuildLetTempExpressions(LetNode* node);
-
-  void BuildInstanceGetterConditional(InstanceGetterNode* node);
-  void BuildInstanceCallConditional(InstanceCallNode* node);
-
-  Thread* thread() const { return owner()->thread(); }
-  Isolate* isolate() const { return owner()->isolate(); }
-  Zone* zone() const { return owner()->zone(); }
-
- private:
-  friend class TempLocalScope;  // For ReturnDefinition.
-
-  // Helper to drop the result value.
-  virtual void ReturnValue(Value* value) { Do(new DropTempsInstr(0, value)); }
-
-  // Specify a definition of the final result.  Adds the definition to
-  // the graph, but normally overridden in subclasses.
-  virtual void ReturnDefinition(Definition* definition) {
-    // Constants have no effect, do not add them to graph otherwise SSA
-    // builder will get confused.
-    if (!definition->IsConstant()) {
-      Do(definition);
-    }
-  }
-
-  // Shared global state.
-  FlowGraphBuilder* owner_;
-
-  // Output parameters.
-  Instruction* entry_;
-  Instruction* exit_;
-};
-
-// Translate an AstNode to a control-flow graph fragment for both its effects
-// and value (e.g., for an expression in a value context).  Implements a
-// function from an AstNode and next temporary index to a graph fragment (as
-// in the EffectGraphVisitor), a next temporary index, and an intermediate
-// language Value.
-class ValueGraphVisitor : public EffectGraphVisitor {
- public:
-  explicit ValueGraphVisitor(FlowGraphBuilder* owner)
-      : EffectGraphVisitor(owner), value_(NULL) {}
-
-  // Visit functions overridden by this class.
-  virtual void VisitAssignableNode(AssignableNode* node);
-  virtual void VisitConstructorCallNode(ConstructorCallNode* node);
-  virtual void VisitBinaryOpNode(BinaryOpNode* node);
-  virtual void VisitConditionalExprNode(ConditionalExprNode* node);
-  virtual void VisitLoadLocalNode(LoadLocalNode* node);
-  virtual void VisitStoreIndexedNode(StoreIndexedNode* node);
-  virtual void VisitInstanceSetterNode(InstanceSetterNode* node);
-  virtual void VisitInstanceGetterNode(InstanceGetterNode* node);
-  virtual void VisitThrowNode(ThrowNode* node);
-  virtual void VisitClosureCallNode(ClosureCallNode* node);
-  virtual void VisitStaticSetterNode(StaticSetterNode* node);
-  virtual void VisitStoreStaticFieldNode(StoreStaticFieldNode* node);
-  virtual void VisitTypeNode(TypeNode* node);
-  virtual void VisitLetNode(LetNode* node);
-  virtual void VisitInstanceCallNode(InstanceCallNode* node);
-
-  Value* value() const { return value_; }
-
- protected:
-  // Output parameters.
-  Value* value_;
-
- private:
-  friend class EffectGraphVisitor;
-
-  // Helper to set the output state to return a Value.
-  virtual void ReturnValue(Value* value) { value_ = value; }
-
-  // Specify a definition of the final result.  Adds the definition to
-  // the graph and returns a use of it (i.e., set the visitor's output
-  // parameters).
-  virtual void ReturnDefinition(Definition* definition) {
-    ReturnValue(Bind(definition));
-  }
-};
-
-// Translate an AstNode to a control-flow graph fragment for both its
-// effects and true/false control flow (e.g., for an expression in a test
-// context).  The resulting graph is always closed (even if it is empty)
-// Successor control flow is explicitly set by a pair of pointers to
-// TargetEntryInstr*.
-//
-// To distinguish between the graphs with only nonlocal exits and graphs
-// with both true and false exits, there are a pair of TargetEntryInstr**:
-//
-//   - Both NULL: only non-local exits, truly closed
-//   - Neither NULL: true and false successors at the given addresses
-//
-// We expect that AstNode in test contexts either have only nonlocal exits
-// or else control flow has both true and false successors.
-//
-// The cis and token_pos are used in checked mode to verify that the
-// condition of the test is of type bool.
-class TestGraphVisitor : public ValueGraphVisitor {
- public:
-  TestGraphVisitor(FlowGraphBuilder* owner, TokenPosition condition_token_pos)
-      : ValueGraphVisitor(owner),
-        true_successor_addresses_(1),
-        false_successor_addresses_(1),
-        condition_token_pos_(condition_token_pos) {}
-
-  void IfFalseGoto(JoinEntryInstr* join) const;
-  void IfTrueGoto(JoinEntryInstr* join) const;
-
-  BlockEntryInstr* CreateTrueSuccessor() const;
-  BlockEntryInstr* CreateFalseSuccessor() const;
-
-  virtual void VisitBinaryOpNode(BinaryOpNode* node);
-
-  TokenPosition condition_token_pos() const { return condition_token_pos_; }
-
- private:
-  friend class EffectGraphVisitor;
-
-  // Construct and concatenate a Branch instruction to this graph fragment.
-  // Closes the fragment and sets the output parameters.
-  virtual void ReturnValue(Value* value);
-
-  // Either merges the definition into a BranchInstr (Comparison, BooleanNegate)
-  // or adds the definition to the graph and returns a use of its value.
-  virtual void ReturnDefinition(Definition* definition);
-
-  void MergeBranchWithStrictCompare(StrictCompareInstr* comp);
-  void MergeBranchWithNegate(BooleanNegateInstr* comp);
-
-  BlockEntryInstr* CreateSuccessorFor(
-      const GrowableArray<TargetEntryInstr**>& branches) const;
-
-  void ConnectBranchesTo(const GrowableArray<TargetEntryInstr**>& branches,
-                         JoinEntryInstr* join) const;
-
-  // Output parameters.
-  GrowableArray<TargetEntryInstr**> true_successor_addresses_;
-  GrowableArray<TargetEntryInstr**> false_successor_addresses_;
-
-  TokenPosition condition_token_pos_;
-};
+bool SimpleInstanceOfType(const AbstractType& type);
+uword FindDoubleConstant(double value);
 
 }  // namespace dart
 
diff --git a/runtime/vm/compiler/frontend/flow_graph_builder_test.cc b/runtime/vm/compiler/frontend/flow_graph_builder_test.cc
deleted file mode 100644
index 4b591c9..0000000
--- a/runtime/vm/compiler/frontend/flow_graph_builder_test.cc
+++ /dev/null
@@ -1,780 +0,0 @@
-// 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.
-
-#include "vm/compiler/frontend/flow_graph_builder.h"
-#include "vm/compiler/backend/il.h"
-#include "vm/compiler/jit/compiler.h"
-#include "vm/dart_api_impl.h"
-#include "vm/dart_entry.h"
-#include "vm/unit_test.h"
-
-namespace dart {
-
-#ifndef PRODUCT
-
-#define DUMP_ASSERT(condition)                                                 \
-  if (!(condition)) {                                                          \
-    dart::Expect(__FILE__, __LINE__).Fail("expected: %s", #condition);         \
-    THR_Print(">>> BEGIN source position table for `%s`\n", graph_name_);      \
-    Dump();                                                                    \
-    THR_Print("<<< END source position table for `%s`\n", graph_name_);        \
-    OS::Abort();                                                               \
-  }
-
-class SourcePositionTest : public ValueObject {
- public:
-  SourcePositionTest(Thread* thread, const char* script)
-      : thread_(thread),
-        isolate_(thread->isolate()),
-        script_(script),
-        root_lib_(Library::Handle()),
-        root_script_(Script::Handle()),
-        graph_(NULL),
-        blocks_(NULL) {
-    EXPECT(thread_ != NULL);
-    EXPECT(isolate_ != NULL);
-    EXPECT(script_ != NULL);
-    {
-      TransitionVMToNative transition(thread);
-      Dart_Handle lib = TestCase::LoadTestScript(script, NULL);
-      EXPECT_VALID(lib);
-      root_lib_ ^= Api::UnwrapHandle(lib);
-    }
-    EXPECT(!root_lib_.IsNull());
-    root_script_ ^=
-        root_lib_.LookupScript(String::Handle(String::New(USER_TEST_URI)));
-    EXPECT(!root_script_.IsNull());
-  }
-
-  void BuildGraphFor(const char* function_name) {
-    graph_ = NULL;
-    blocks_ = NULL;
-    graph_name_ = NULL;
-
-    // Only support unoptimized code for now.
-    const bool optimized = false;
-
-    const Function& function =
-        Function::Handle(GetFunction(root_lib_, function_name));
-    ZoneGrowableArray<const ICData*>* ic_data_array =
-        new ZoneGrowableArray<const ICData*>();
-    ParsedFunction* parsed_function =
-        new ParsedFunction(thread_, Function::ZoneHandle(function.raw()));
-    Parser::ParseFunction(parsed_function);
-    parsed_function->AllocateVariables();
-    CompilerState state(thread_);
-    FlowGraphBuilder builder(*parsed_function, *ic_data_array,
-                             /* not building var desc */ NULL,
-                             /* not inlining */ NULL, Compiler::kNoOSRDeoptId);
-    graph_ = builder.BuildGraph();
-    EXPECT(graph_ != NULL);
-    blocks_ = graph_->CodegenBlockOrder(optimized);
-    EXPECT(blocks_ != NULL);
-    graph_name_ = function_name;
-    EXPECT(graph_name_ != NULL);
-  }
-
-  // Expect to find an instance call at |line| and |column|.
-  void InstanceCallAt(intptr_t line,
-                      intptr_t column = -1,
-                      Token::Kind kind = Token::kNumTokens) {
-    ZoneGrowableArray<Instruction*>* instructions =
-        FindInstructionsAt(line, column);
-    intptr_t count = 0;
-    for (intptr_t i = 0; i < instructions->length(); i++) {
-      Instruction* instr = instructions->At(i);
-      EXPECT(instr != NULL);
-      if (instr->IsInstanceCall()) {
-        if (kind != Token::kNumTokens) {
-          if (instr->AsInstanceCall()->token_kind() == kind) {
-            count++;
-          }
-        } else {
-          count++;
-        }
-      }
-    }
-    DUMP_ASSERT(count > 0);
-  }
-
-  // Expect to find an instance call at |line| and |column|.
-  void InstanceCallAt(const char* needle, intptr_t line, intptr_t column = -1) {
-    ZoneGrowableArray<Instruction*>* instructions =
-        FindInstructionsAt(line, column);
-    intptr_t count = 0;
-    for (intptr_t i = 0; i < instructions->length(); i++) {
-      Instruction* instr = instructions->At(i);
-      EXPECT(instr != NULL);
-      if (instr->IsInstanceCall()) {
-        const char* haystack = instr->ToCString();
-        if (strstr(haystack, needle) != NULL) {
-          count++;
-        }
-      }
-    }
-    DUMP_ASSERT(count > 0);
-  }
-
-  // Expect to find at least one static call at |line| and |column|. The
-  // static call will have |needle| in its |ToCString| representation.
-  void StaticCallAt(const char* needle, intptr_t line, intptr_t column = -1) {
-    ZoneGrowableArray<Instruction*>* instructions =
-        FindInstructionsAt(line, column);
-    intptr_t count = 0;
-    for (intptr_t i = 0; i < instructions->length(); i++) {
-      Instruction* instr = instructions->At(i);
-      EXPECT(instr != NULL);
-      if (instr->IsStaticCall()) {
-        const char* haystack = instr->ToCString();
-        if (strstr(haystack, needle) != NULL) {
-          count++;
-        }
-      }
-    }
-    DUMP_ASSERT(count > 0);
-  }
-
-  // Expect that at least one of the instructions found at |line| and |column|
-  // contain |needle| in their |ToCString| representation.
-  void FuzzyInstructionMatchAt(const char* needle,
-                               intptr_t line,
-                               intptr_t column = -1) {
-    ZoneGrowableArray<Instruction*>* instructions =
-        FindInstructionsAt(line, column);
-    intptr_t count = 0;
-    for (intptr_t i = 0; i < instructions->length(); i++) {
-      Instruction* instr = instructions->At(i);
-      const char* haystack = instr->ToCString();
-      if (strstr(haystack, needle) != NULL) {
-        count++;
-      }
-    }
-    DUMP_ASSERT(count > 0);
-  }
-
-  // Utility to dump the instructions with token positions or line numbers.
-  void Dump() {
-    for (intptr_t i = 0; i < blocks_->length(); i++) {
-      BlockEntryInstr* entry = (*blocks_)[i];
-      THR_Print("B%" Pd ":\n", entry->block_id());
-      DumpInstruction(entry);
-      for (ForwardInstructionIterator it(entry); !it.Done(); it.Advance()) {
-        DumpInstruction(it.Current());
-      }
-    }
-  }
-
-  // Fails if any of the IR nodes has a token position of
-  // TokenPosition::kNoSourcePos.
-  void EnsureSourcePositions() {
-    for (intptr_t i = 0; i < blocks_->length(); i++) {
-      BlockEntryInstr* entry = (*blocks_)[i];
-      DUMP_ASSERT(entry->token_pos() != TokenPosition::kNoSource);
-      for (ForwardInstructionIterator it(entry); !it.Done(); it.Advance()) {
-        Instruction* instr = it.Current();
-        DUMP_ASSERT(instr->token_pos() != TokenPosition::kNoSource);
-      }
-    }
-  }
-
- private:
-  void DumpInstruction(Instruction* instr) {
-    TokenPosition token_pos = instr->token_pos();
-    bool synthetic = false;
-    if (token_pos.IsSynthetic()) {
-      synthetic = true;
-      token_pos = token_pos.FromSynthetic();
-    }
-    if (token_pos.IsClassifying()) {
-      const char* token_pos_string = token_pos.ToCString();
-      THR_Print("%12s -- %s\n", token_pos_string, instr->ToCString());
-      return;
-    }
-    intptr_t token_line = -1;
-    intptr_t token_column = -1;
-    root_script_.GetTokenLocation(token_pos, &token_line, &token_column, NULL);
-    if (synthetic) {
-      THR_Print("      *%02d:%02d -- %s\n", static_cast<int>(token_line),
-                static_cast<int>(token_column), instr->ToCString());
-    } else {
-      THR_Print("       %02d:%02d -- %s\n", static_cast<int>(token_line),
-                static_cast<int>(token_column), instr->ToCString());
-    }
-  }
-
-  Instruction* FindFirstInstructionAt(intptr_t line, intptr_t column) {
-    ZoneGrowableArray<Instruction*>* instructions =
-        FindInstructionsAt(line, column);
-    if (instructions->length() == 0) {
-      return NULL;
-    }
-    return instructions->At(0);
-  }
-
-  ZoneGrowableArray<Instruction*>* FindInstructionsAt(intptr_t line,
-                                                      intptr_t column) {
-    ZoneGrowableArray<Instruction*>* instructions =
-        new ZoneGrowableArray<Instruction*>();
-    for (intptr_t i = 0; i < blocks_->length(); i++) {
-      BlockEntryInstr* entry = (*blocks_)[i];
-      for (ForwardInstructionIterator it(entry); !it.Done(); it.Advance()) {
-        Instruction* instr = it.Current();
-        const TokenPosition token_pos = instr->token_pos().SourcePosition();
-        if (!token_pos.IsReal()) {
-          continue;
-        }
-        intptr_t token_line = -1;
-        intptr_t token_column = -1;
-        root_script_.GetTokenLocation(token_pos, &token_line, &token_column,
-                                      NULL);
-        if (token_line == line) {
-          if ((column < 0) || (column == token_column)) {
-            instructions->Add(instr);
-          }
-        }
-      }
-    }
-    return instructions;
-  }
-
-  ZoneGrowableArray<Instruction*>* FindInstructionsAt(intptr_t token_pos) {
-    ZoneGrowableArray<Instruction*>* instructions =
-        new ZoneGrowableArray<Instruction*>();
-    for (intptr_t i = 0; i < blocks_->length(); i++) {
-      BlockEntryInstr* entry = (*blocks_)[i];
-      for (ForwardInstructionIterator it(entry); !it.Done(); it.Advance()) {
-        Instruction* instr = it.Current();
-        if (instr->token_pos().value() == token_pos) {
-          instructions->Add(instr);
-        }
-      }
-    }
-    return instructions;
-  }
-
-  RawFunction* GetFunction(const Library& lib, const char* name) {
-    const Function& result = Function::Handle(
-        lib.LookupFunctionAllowPrivate(String::Handle(String::New(name))));
-    EXPECT(!result.IsNull());
-    return result.raw();
-  }
-
-  RawFunction* GetFunction(const Class& cls, const char* name) {
-    const Function& result = Function::Handle(
-        cls.LookupFunctionAllowPrivate(String::Handle(String::New(name))));
-    EXPECT(!result.IsNull());
-    return result.raw();
-  }
-
-  RawClass* GetClass(const Library& lib, const char* name) {
-    const Class& cls = Class::Handle(
-        lib.LookupClass(String::Handle(Symbols::New(thread_, name))));
-    EXPECT(!cls.IsNull());  // No ambiguity error expected.
-    return cls.raw();
-  }
-
-  Thread* thread_;
-  Isolate* isolate_;
-  const char* script_;
-  Library& root_lib_;
-  Script& root_script_;
-  const char* graph_name_;
-  FlowGraph* graph_;
-  GrowableArray<BlockEntryInstr*>* blocks_;
-};
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_InstanceCalls) {
-  const char* kScript =
-      "var x = 5;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  var z = x + y;\n"
-      "  return z;\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-  spt.InstanceCallAt(4, 13, Token::kADD);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 5, 3);
-  spt.FuzzyInstructionMatchAt("Return", 5, 3);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_If) {
-  const char* kScript =
-      "var x = 5;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  if (x != 0) {\n"
-      "    return x;\n"
-      "  }\n"
-      "  return y;\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 4, 7);
-  spt.InstanceCallAt(4, 9, Token::kEQ);
-  spt.FuzzyInstructionMatchAt("Branch if StrictCompare", 4, 9);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 5, 12);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 5, 5);
-  spt.FuzzyInstructionMatchAt("Return", 5, 5);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 7, 10);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 7, 3);
-  spt.FuzzyInstructionMatchAt("Return", 7, 3);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_ForLoop) {
-  const char* kScript =
-      "var x = 0;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  for (var i = 0; i < 10; i++) {\n"
-      "    x += i;\n"
-      "  }\n"
-      "  return x;\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-  spt.FuzzyInstructionMatchAt("StoreLocal", 4, 14);
-  spt.FuzzyInstructionMatchAt("LoadLocal", 4, 19);
-  spt.InstanceCallAt(4, 21, Token::kLT);
-  spt.FuzzyInstructionMatchAt("Branch if StrictCompare", 4, 21);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 5, 5);
-  spt.FuzzyInstructionMatchAt("StoreStaticField", 5, 5);
-  spt.InstanceCallAt(5, 7, Token::kADD);
-  spt.FuzzyInstructionMatchAt("LoadLocal", 5, 10);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 7, 10);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 7, 3);
-  spt.FuzzyInstructionMatchAt("Return", 7, 3);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_While) {
-  const char* kScript =
-      "var x = 0;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  while (x < 10) {\n"
-      "    if (y == 5) {\n"
-      "      return y;\n"
-      "    }\n"
-      "    x++;\n"
-      "  }\n"
-      "  return x;\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 4, 3);
-  spt.FuzzyInstructionMatchAt("Constant", 4, 10);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 4, 10);
-  spt.InstanceCallAt(4, 12, Token::kLT);
-  spt.FuzzyInstructionMatchAt("Branch if StrictCompare", 4, 12);
-
-  spt.FuzzyInstructionMatchAt("Constant", 5, 9);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 5, 9);
-  spt.InstanceCallAt(5, 11, Token::kEQ);
-  spt.FuzzyInstructionMatchAt("Branch if StrictCompare", 5, 11);
-
-  spt.FuzzyInstructionMatchAt("Constant", 6, 14);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 6, 14);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 6, 7);
-  spt.FuzzyInstructionMatchAt("Return", 6, 7);
-
-  spt.FuzzyInstructionMatchAt("Constant", 8, 5);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 8, 5);
-  spt.FuzzyInstructionMatchAt("Constant(#1)", 8, 6);
-  spt.InstanceCallAt(8, 6, Token::kADD);
-  spt.FuzzyInstructionMatchAt("StoreStaticField", 8, 5);
-
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 10, 10);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 10, 3);
-  spt.FuzzyInstructionMatchAt("Return", 10, 3);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_WhileContinueBreak) {
-  const char* kScript =
-      "var x = 0;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  while (x < 10) {\n"
-      "    if (y == 5) {\n"
-      "      continue;\n"
-      "    }\n"
-      "    break;\n"
-      "  }\n"
-      "  return x;\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 4, 3);
-  spt.FuzzyInstructionMatchAt("Constant(#Field", 4, 10);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 4, 10);
-  spt.FuzzyInstructionMatchAt("Constant(#10", 4, 14);
-  spt.InstanceCallAt(4, 12, Token::kLT);
-  spt.FuzzyInstructionMatchAt("Branch if StrictCompare", 4, 12);
-
-  spt.FuzzyInstructionMatchAt("Constant(#Field", 5, 9);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 5, 9);
-  spt.FuzzyInstructionMatchAt("Constant(#5", 5, 14);
-  spt.InstanceCallAt(5, 11, Token::kEQ);
-  spt.FuzzyInstructionMatchAt("Branch if StrictCompare", 5, 11);
-
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 10, 10);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 10, 3);
-  spt.FuzzyInstructionMatchAt("Return", 10, 3);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_LoadIndexed) {
-  const char* kScript =
-      "var x = 0;\n"
-      "var z = new List(3);\n"
-      "main() {\n"
-      "  z[0];\n"
-      "  var y = z[0] + z[1] + z[2];\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-  spt.StaticCallAt("get:z", 4, 3);
-  spt.FuzzyInstructionMatchAt("Constant(#0)", 4, 5);
-  spt.InstanceCallAt(4, 4, Token::kINDEX);
-
-  spt.FuzzyInstructionMatchAt("Constant(#0)", 5, 13);
-  spt.InstanceCallAt(5, 12, Token::kINDEX);
-  spt.FuzzyInstructionMatchAt("Constant(#1)", 5, 20);
-  spt.InstanceCallAt(5, 19, Token::kINDEX);
-
-  spt.InstanceCallAt(5, 16, Token::kADD);
-
-  spt.StaticCallAt("get:z", 5, 25);
-  spt.FuzzyInstructionMatchAt("Constant(#2)", 5, 27);
-  spt.InstanceCallAt(5, 26, Token::kINDEX);
-
-  spt.InstanceCallAt(5, 23, Token::kADD);
-
-  spt.FuzzyInstructionMatchAt("Constant(#null)", 6, 1);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 6, 1);
-  spt.FuzzyInstructionMatchAt("Return", 6, 1);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_StoreIndexed) {
-  const char* kScript =
-      "var x = 0;\n"
-      "var z = new List(4);\n"
-      "main() {\n"
-      "  z[0];\n"
-      "  z[3] = z[0] + z[1] + z[2];\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-  spt.StaticCallAt("get:z", 4, 3);
-  spt.FuzzyInstructionMatchAt("Constant(#0)", 4, 5);
-  spt.InstanceCallAt(4, 4, Token::kINDEX);
-
-  spt.FuzzyInstructionMatchAt("Constant(#3)", 5, 5);
-
-  spt.StaticCallAt("get:z", 5, 10);
-  spt.FuzzyInstructionMatchAt("Constant(#0)", 5, 12);
-  spt.InstanceCallAt(5, 11, Token::kINDEX);
-
-  spt.InstanceCallAt(5, 15, Token::kADD);
-
-  spt.StaticCallAt("get:z", 5, 17);
-  spt.FuzzyInstructionMatchAt("Constant(#1)", 5, 19);
-  spt.InstanceCallAt(5, 18, Token::kINDEX);
-
-  spt.StaticCallAt("get:z", 5, 24);
-  spt.FuzzyInstructionMatchAt("Constant(#2)", 5, 26);
-  spt.InstanceCallAt(5, 25, Token::kINDEX);
-
-  spt.InstanceCallAt(5, 4, Token::kASSIGN_INDEX);
-
-  spt.FuzzyInstructionMatchAt("Constant(#null)", 6, 1);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 6, 1);
-  spt.FuzzyInstructionMatchAt("Return", 6, 1);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_BitwiseOperations) {
-  const char* kScript =
-      "var x = 0;\n"
-      "var y = 1;\n"
-      "main() {\n"
-      "  var z;\n"
-      "  z = x & y;\n"
-      "  z = x | y;\n"
-      "  z = x ^ y;\n"
-      "  z = ~z;\n"
-      "  return z;\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 4, 7);
-  spt.FuzzyInstructionMatchAt("Constant(#null", 4, 7);
-  spt.FuzzyInstructionMatchAt("StoreLocal(z", 4, 7);
-
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 5, 7);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 5, 11);
-  spt.InstanceCallAt(5, 9, Token::kBIT_AND);
-  spt.FuzzyInstructionMatchAt("StoreLocal(z", 5, 3);
-
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 6, 7);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 6, 11);
-  spt.InstanceCallAt(6, 9, Token::kBIT_OR);
-  spt.FuzzyInstructionMatchAt("StoreLocal(z", 6, 3);
-
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 7, 7);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 7, 11);
-  spt.InstanceCallAt(7, 9, Token::kBIT_XOR);
-  spt.FuzzyInstructionMatchAt("StoreLocal(z", 7, 3);
-
-  spt.FuzzyInstructionMatchAt("LoadLocal(z", 8, 8);
-  spt.InstanceCallAt(8, 7, Token::kBIT_NOT);
-  spt.FuzzyInstructionMatchAt("StoreLocal(z", 8, 3);
-
-  spt.FuzzyInstructionMatchAt("LoadLocal(z", 9, 10);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 9, 3);
-  spt.FuzzyInstructionMatchAt("Return", 9, 3);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_IfElse) {
-  const char* kScript =
-      "var x = 5;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  if (x != 0) {\n"
-      "    return x;\n"
-      "  } else {\n"
-      "    return y;\n"
-      "  }\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 4, 7);
-  spt.InstanceCallAt(4, 9, Token::kEQ);
-  spt.FuzzyInstructionMatchAt("Branch if StrictCompare", 4, 9);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 5, 12);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 5, 5);
-  spt.FuzzyInstructionMatchAt("Return", 5, 5);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 7, 12);
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 7, 5);
-  spt.FuzzyInstructionMatchAt("Return", 7, 5);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_Switch) {
-  const char* kScript =
-      "var x = 5;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  switch (x) {\n"
-      "    case 1: return 3;\n"
-      "    case 2: return 4;\n"
-      "    default: return 5;\n"
-      "  }\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-  spt.FuzzyInstructionMatchAt("Constant(#Field", 4, 11);
-  spt.FuzzyInstructionMatchAt("LoadStaticField", 4, 11);
-  spt.FuzzyInstructionMatchAt("StoreLocal(:switch_expr", 4, 11);
-
-  spt.FuzzyInstructionMatchAt("Constant(#1", 5, 10);
-  spt.FuzzyInstructionMatchAt("LoadLocal(:switch_expr", 5, 5);  // 'c'
-  spt.InstanceCallAt(5, 10, Token::kEQ);                        // '1'
-
-  spt.FuzzyInstructionMatchAt("Constant(#3", 5, 20);  // '3'
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 5, 13);
-  spt.FuzzyInstructionMatchAt("Return", 5, 13);
-
-  spt.FuzzyInstructionMatchAt("Constant(#2", 6, 10);
-  spt.FuzzyInstructionMatchAt("LoadLocal(:switch_expr", 6, 5);  // 'c'
-  spt.InstanceCallAt(6, 10, Token::kEQ);                        // '2'
-
-  spt.FuzzyInstructionMatchAt("Constant(#4", 6, 20);  // '4'
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 6, 13);
-  spt.FuzzyInstructionMatchAt("Return", 6, 13);
-
-  spt.FuzzyInstructionMatchAt("Constant(#5", 7, 21);  // '5'
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 7, 14);
-  spt.FuzzyInstructionMatchAt("Return", 7, 14);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_TryCatchFinally) {
-  const char* kScript =
-      "var x = 5;\n"
-      "var y = 5;\n"
-      "main() {\n"
-      "  try {\n"
-      "    throw 'A';\n"
-      "  } catch (e) {\n"
-      "    print(e);\n"
-      "    return 77;\n"
-      "  } finally {\n"
-      "    return 99;\n"
-      "  }\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 3, 5);
-  spt.FuzzyInstructionMatchAt("CheckStackOverflow", 3, 1);
-
-  spt.FuzzyInstructionMatchAt("LoadLocal(:current_context", 4, 3);  // 't'
-  spt.FuzzyInstructionMatchAt("StoreLocal(:saved_try_context", 4, 3);
-
-  spt.FuzzyInstructionMatchAt("Constant(#A", 5, 11);  // 'A'
-  spt.FuzzyInstructionMatchAt("Throw", 5, 5);         // 't'
-
-  spt.FuzzyInstructionMatchAt("LoadLocal(:saved_try_context", 6, 5);  // 'c'
-  spt.FuzzyInstructionMatchAt("StoreLocal(:current_context", 6, 5);   // 'c'
-  spt.FuzzyInstructionMatchAt("LoadLocal(:exception_var", 6, 5);      // 'c'
-  spt.FuzzyInstructionMatchAt("StoreLocal(e", 6, 5);                  // 'c'
-
-  spt.FuzzyInstructionMatchAt("LoadLocal(e", 7, 11);  // 'e'
-
-  spt.FuzzyInstructionMatchAt("StaticCall", 7, 5);  // 'p'
-
-  spt.FuzzyInstructionMatchAt("Constant(#77", 8, 12);                // '7'
-  spt.FuzzyInstructionMatchAt("StoreLocal(:finally_ret_val", 8, 5);  // 'r'
-
-  spt.FuzzyInstructionMatchAt("Constant(#99", 10, 12);  // '9'
-  spt.FuzzyInstructionMatchAt("Return", 10, 5);         // 'r'
-
-  spt.FuzzyInstructionMatchAt("LoadLocal(:saved_try_context", 9, 13);  // '{'
-  spt.FuzzyInstructionMatchAt("StoreLocal(:current_context", 9, 13);   // '{'
-
-  spt.FuzzyInstructionMatchAt("Constant(#99", 10, 12);  // '9'
-  spt.FuzzyInstructionMatchAt("Return", 10, 5);         // 'r'
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_InstanceFields) {
-  const char* kScript =
-      "class A {\n"
-      "  var x;\n"
-      "  var y;\n"
-      "}\n"
-      "main() {\n"
-      "  var z = new A();\n"
-      "  z.x = 99;\n"
-      "  z.y = z.x;\n"
-      "  return z.y;\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("main");
-  spt.FuzzyInstructionMatchAt("AllocateObject(A)", 6, 15);  // 'A'
-  spt.FuzzyInstructionMatchAt("StaticCall", 6, 15);         // 'A'
-  spt.FuzzyInstructionMatchAt("StoreLocal(z", 6, 9);        // '='
-  spt.InstanceCallAt("set:x", 7, 5);                        // 'x'
-  spt.InstanceCallAt("get:x", 8, 11);                       // 'x'
-  spt.InstanceCallAt("set:y", 8, 5);                        // 'y'
-
-  spt.InstanceCallAt("get:y", 9, 12);  // 'y'
-  spt.FuzzyInstructionMatchAt("DebugStepCheck", 9, 3);
-  spt.FuzzyInstructionMatchAt("Return", 9, 3);
-
-  spt.EnsureSourcePositions();
-}
-
-ISOLATE_UNIT_TEST_CASE(SourcePosition_Async) {
-  const char* kScript =
-      "import 'dart:async';\n"
-      "var x = 5;\n"
-      "var y = 5;\n"
-      "foo(Future f1, Future f2) async {\n"
-      "  await f1;\n"
-      "  await f2;\n"
-      "  return 55;\n"
-      "}\n"
-      "main() {\n"
-      "  foo(new Future.value(33));\n"
-      "}\n";
-
-  SourcePositionTest spt(thread, kScript);
-  spt.BuildGraphFor("foo");
-  spt.EnsureSourcePositions();
-  spt.Dump();
-}
-
-#endif  // !PRODUCT
-
-static bool SyntheticRoundTripTest(TokenPosition token_pos) {
-  const TokenPosition synthetic_token_pos = token_pos.ToSynthetic();
-  return synthetic_token_pos.FromSynthetic() == token_pos;
-}
-
-VM_UNIT_TEST_CASE(SourcePosition_SyntheticTokens) {
-  EXPECT(TokenPosition::kNoSourcePos == -1);
-  EXPECT(TokenPosition::kMinSourcePos == 0);
-  EXPECT(TokenPosition::kMaxSourcePos > 0);
-  EXPECT(TokenPosition::kMaxSourcePos > TokenPosition::kMinSourcePos);
-  EXPECT(TokenPosition::kMinSource.value() == TokenPosition::kMinSourcePos);
-  EXPECT(TokenPosition::kMaxSource.value() == TokenPosition::kMaxSourcePos);
-  EXPECT(!TokenPosition(0).IsSynthetic());
-  EXPECT(TokenPosition(0).ToSynthetic().IsSynthetic());
-  EXPECT(TokenPosition(9).ToSynthetic().IsSynthetic());
-  EXPECT(!TokenPosition(-1).FromSynthetic().IsSynthetic());
-  EXPECT(!TokenPosition::kNoSource.IsSynthetic());
-  EXPECT(!TokenPosition::kLast.IsSynthetic());
-  EXPECT(SyntheticRoundTripTest(TokenPosition(0)));
-  EXPECT(SyntheticRoundTripTest(TokenPosition::kMaxSource));
-  EXPECT(SyntheticRoundTripTest(TokenPosition::kMinSource));
-}
-
-}  // namespace dart
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index 38a9a18..4835b6a 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -48,13 +48,14 @@
     UNREACHABLE();
   }
 
-  TargetEntryInstr* normal_entry = flow_graph_builder_->BuildTargetEntry();
-  flow_graph_builder_->graph_entry_ = new (Z) GraphEntryInstr(
-      *parsed_function(), normal_entry, Compiler::kNoOSRDeoptId);
+  B->graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function(), Compiler::kNoOSRDeoptId);
+
+  auto normal_entry = B->BuildFunctionEntry(B->graph_entry_);
+  B->graph_entry_->set_normal_entry(normal_entry);
 
   Fragment body(normal_entry);
-  body +=
-      flow_graph_builder_->CheckStackOverflowInPrologue(field_helper.position_);
+  body += B->CheckStackOverflowInPrologue(field_helper.position_);
   if (field_helper.IsConst()) {
     // this will (potentially) read the initializer, but reset the position.
     body += Constant(Instance::ZoneHandle(
@@ -66,9 +67,8 @@
   body += Return(TokenPosition::kNoSource);
 
   PrologueInfo prologue_info(-1, -1);
-  return new (Z)
-      FlowGraph(*parsed_function(), flow_graph_builder_->graph_entry_,
-                flow_graph_builder_->last_used_block_id_, prologue_info);
+  return new (Z) FlowGraph(*parsed_function(), B->graph_entry_,
+                           B->last_used_block_id_, prologue_info);
 }
 
 FlowGraph* StreamingFlowGraphBuilder::BuildGraphOfFieldAccessor(
@@ -88,9 +88,11 @@
   Field& field = Field::ZoneHandle(
       Z, H.LookupFieldByKernelField(field_helper.canonical_name_));
 
-  TargetEntryInstr* normal_entry = flow_graph_builder_->BuildTargetEntry();
-  flow_graph_builder_->graph_entry_ = new (Z) GraphEntryInstr(
-      *parsed_function(), normal_entry, Compiler::kNoOSRDeoptId);
+  B->graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function(), Compiler::kNoOSRDeoptId);
+
+  auto normal_entry = B->BuildFunctionEntry(B->graph_entry_);
+  B->graph_entry_->set_normal_entry(normal_entry);
 
   Fragment body(normal_entry);
   if (is_setter) {
@@ -465,7 +467,7 @@
 }
 
 void StreamingFlowGraphBuilder::RecordUncheckedEntryPoint(
-    TargetEntryInstr* extra_entry) {
+    FunctionEntryInstr* extra_entry) {
   if (!B->IsInlining()) {
     B->graph_entry_->set_unchecked_entry(extra_entry);
   } else if (B->InliningUncheckedEntry()) {
@@ -497,13 +499,17 @@
   // The prologue builder needs the default parameter values.
   SetupDefaultParameterValues();
 
-  TargetEntryInstr* normal_entry = flow_graph_builder_->BuildTargetEntry();
+  flow_graph_builder_->graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function(), Compiler::kNoOSRDeoptId);
+
+  auto normal_entry = flow_graph_builder_->BuildFunctionEntry(
+      flow_graph_builder_->graph_entry_);
+  flow_graph_builder_->graph_entry_->set_normal_entry(normal_entry);
+
   PrologueInfo prologue_info(-1, -1);
   BlockEntryInstr* instruction_cursor =
       flow_graph_builder_->BuildPrologue(normal_entry, &prologue_info);
 
-  flow_graph_builder_->graph_entry_ = new (Z) GraphEntryInstr(
-      *parsed_function(), normal_entry, Compiler::kNoOSRDeoptId);
 
   const Fragment prologue =
       flow_graph_builder_->CheckStackOverflowInPrologue(function.token_pos());
@@ -604,7 +610,7 @@
   body += Return(function_node_helper.end_position_);
 
   // Setup multiple entrypoints if useful.
-  TargetEntryInstr* extra_entry = nullptr;
+  FunctionEntryInstr* extra_entry = nullptr;
   if (function.MayHaveUncheckedEntryPoint(I)) {
     // The prologue for a closure will always have context handling (e.g.
     // setting up the 'this_variable'), but we don't need it on the unchecked
@@ -653,14 +659,16 @@
   // The prologue builder needs the default parameter values.
   SetupDefaultParameterValues();
 
-  TargetEntryInstr* normal_entry = B->BuildTargetEntry();
+  B->graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function(), Compiler::kNoOSRDeoptId);
+
+  auto normal_entry = B->BuildFunctionEntry(B->graph_entry_);
+  B->graph_entry_->set_normal_entry(normal_entry);
+
   PrologueInfo prologue_info(-1, -1);
   BlockEntryInstr* instruction_cursor =
       B->BuildPrologue(normal_entry, &prologue_info);
 
-  B->graph_entry_ = new (Z) GraphEntryInstr(*parsed_function(), normal_entry,
-                                            Compiler::kNoOSRDeoptId);
-
   Fragment body(instruction_cursor);
   body += B->CheckStackOverflowInPrologue(function.token_pos());
 
@@ -1157,22 +1165,22 @@
 }
 
 FlowGraph* StreamingFlowGraphBuilder::BuildGraphOfDynamicInvocationForwarder() {
+  const Function& dart_function = parsed_function()->function();
+
   // The prologue builder needs the default parameter values.
   SetupDefaultParameterValues();
 
-  const Function& dart_function = parsed_function()->function();
-  TargetEntryInstr* normal_entry = flow_graph_builder_->BuildTargetEntry();
-  PrologueInfo prologue_info(-1, -1);
-  BlockEntryInstr* instruction_cursor =
-      flow_graph_builder_->BuildPrologue(normal_entry, &prologue_info);
+  B->graph_entry_ = new (Z) GraphEntryInstr(*parsed_function(), B->osr_id_);
 
-  flow_graph_builder_->graph_entry_ = new (Z) GraphEntryInstr(
-      *parsed_function(), normal_entry, flow_graph_builder_->osr_id_);
+  auto normal_entry = B->BuildFunctionEntry(B->graph_entry_);
+  B->graph_entry_->set_normal_entry(normal_entry);
+
+  PrologueInfo prologue_info(-1, -1);
+  auto instruction_cursor = B->BuildPrologue(normal_entry, &prologue_info);
 
   Fragment body;
   if (!dart_function.is_native()) {
-    body += flow_graph_builder_->CheckStackOverflowInPrologue(
-        dart_function.token_pos());
+    body += B->CheckStackOverflowInPrologue(dart_function.token_pos());
   }
 
   ASSERT(parsed_function()->node_sequence()->scope()->num_context_variables() ==
@@ -1240,14 +1248,13 @@
 
   instruction_cursor->LinkTo(body.entry);
 
-  GraphEntryInstr* graph_entry = flow_graph_builder_->graph_entry_;
+  GraphEntryInstr* graph_entry = B->graph_entry_;
   // When compiling for OSR, use a depth first search to find the OSR
   // entry and make graph entry jump to it instead of normal entry.
   // Catch entries are always considered reachable, even if they
   // become unreachable after OSR.
-  if (flow_graph_builder_->IsCompiledForOsr()) {
-    graph_entry->RelinkToOsrEntry(Z,
-                                  flow_graph_builder_->last_used_block_id_ + 1);
+  if (B->IsCompiledForOsr()) {
+    graph_entry->RelinkToOsrEntry(Z, B->last_used_block_id_ + 1);
   }
   return new (Z) FlowGraph(*parsed_function(), graph_entry,
                            B->last_used_block_id_, prologue_info);
@@ -1376,8 +1383,7 @@
 
   // Prepend an entry corresponding to normal entry to the function.
   yield_continuations().InsertAt(
-      0, YieldContinuation(new (Z) DropTempsInstr(0, NULL),
-                           CatchClauseNode::kInvalidTryIndex));
+      0, YieldContinuation(new (Z) DropTempsInstr(0, NULL), kInvalidTryIndex));
   yield_continuations()[0].entry->LinkTo(body.entry);
 
   // Load :await_jump_var into a temporary.
@@ -1648,7 +1654,7 @@
   return call_hook;
 }
 
-TargetEntryInstr* StreamingFlowGraphBuilder::BuildSharedUncheckedEntryPoint(
+FunctionEntryInstr* StreamingFlowGraphBuilder::BuildSharedUncheckedEntryPoint(
     Fragment shared_prologue_linked_in,
     Fragment skippable_checks,
     Fragment body) {
@@ -1665,7 +1671,7 @@
   normal_entry += Drop();
   normal_entry += Goto(join_entry);
 
-  auto* extra_target_entry = B->BuildTargetEntry();
+  auto* extra_target_entry = B->BuildFunctionEntry(B->graph_entry_);
   Fragment extra_entry(extra_target_entry);
   extra_entry += IntConstant(UncheckedEntryPointStyle::kSharedWithVariable);
   extra_entry += StoreLocal(TokenPosition::kNoSource,
@@ -1695,14 +1701,14 @@
   return extra_target_entry;
 }
 
-TargetEntryInstr* StreamingFlowGraphBuilder::BuildSeparateUncheckedEntryPoint(
+FunctionEntryInstr* StreamingFlowGraphBuilder::BuildSeparateUncheckedEntryPoint(
     BlockEntryInstr* normal_entry,
     Fragment normal_prologue,
     Fragment extra_prologue,
     Fragment shared_prologue,
     Fragment body) {
   auto* join_entry = BuildJoinEntry();
-  auto* extra_entry = B->BuildTargetEntry();
+  auto* extra_entry = B->BuildFunctionEntry(B->graph_entry_);
 
   Fragment normal(normal_entry);
   normal += IntConstant(UncheckedEntryPointStyle::kNone);
@@ -1780,15 +1786,17 @@
   }
 
   const Function& dart_function = parsed_function()->function();
-  TargetEntryInstr* normal_entry = flow_graph_builder_->BuildTargetEntry();
+
+  auto graph_entry = flow_graph_builder_->graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function(), flow_graph_builder_->osr_id_);
+
+  auto normal_entry = flow_graph_builder_->BuildFunctionEntry(graph_entry);
+  graph_entry->set_normal_entry(normal_entry);
+
   PrologueInfo prologue_info(-1, -1);
   BlockEntryInstr* instruction_cursor =
       flow_graph_builder_->BuildPrologue(normal_entry, &prologue_info);
 
-  GraphEntryInstr* graph_entry = flow_graph_builder_->graph_entry_ =
-      new (Z) GraphEntryInstr(*parsed_function(), normal_entry,
-                              flow_graph_builder_->osr_id_);
-
   // The 'every_time_prologue' runs first and is run when resuming from yield
   // points.
   const Fragment every_time_prologue = BuildEveryTimePrologue(
@@ -1819,7 +1827,7 @@
 
   Fragment function(instruction_cursor);
   if (yield_continuations().is_empty()) {
-    TargetEntryInstr* extra_entry = nullptr;
+    FunctionEntryInstr* extra_entry = nullptr;
     switch (extra_entry_point_style) {
       case UncheckedEntryPointStyle::kNone: {
         function += every_time_prologue + first_time_prologue +
@@ -3066,24 +3074,28 @@
     instructions += CheckNull(position, receiver, setter_name);
   }
 
-  if (!direct_call.target_.IsNull()) {
+  const String* mangled_name = &setter_name;
+  const Function* direct_call_target = &direct_call.target_;
+  if (I->should_emit_strong_mode_checks() && H.IsRoot(itarget_name)) {
+    mangled_name = &String::ZoneHandle(
+        Z, Function::CreateDynamicInvocationForwarderName(setter_name));
+    if (!direct_call_target->IsNull()) {
+      direct_call_target = &Function::ZoneHandle(
+          direct_call.target_.GetDynamicInvocationForwarder(*mangled_name));
+    }
+  }
+
+  if (!direct_call_target->IsNull()) {
     // TODO(#34162): Pass 'is_unchecked_call' down if/when we feature multiple
     // entry-points in AOT.
     ASSERT(FLAG_precompiled_mode);
     instructions +=
-        StaticCall(position, direct_call.target_, 2, Array::null_array(),
+        StaticCall(position, *direct_call_target, 2, Array::null_array(),
                    ICData::kNoRebind, /*result_type=*/nullptr);
   } else {
     const intptr_t kTypeArgsLen = 0;
     const intptr_t kNumArgsChecked = 1;
 
-    const String* mangled_name = &setter_name;
-    if (!FLAG_precompiled_mode && I->should_emit_strong_mode_checks() &&
-        H.IsRoot(itarget_name)) {
-      mangled_name = &String::ZoneHandle(
-          Z, Function::CreateDynamicInvocationForwarderName(setter_name));
-    }
-
     instructions += InstanceCall(
         position, *mangled_name, Token::kSET, kTypeArgsLen, 2,
         Array::null_array(), kNumArgsChecked, *interface_target,
@@ -3670,6 +3682,24 @@
                               /*clear_temp=*/!is_unchecked_closure_call);
   }
 
+  const String* mangled_name = &name;
+  // Do not mangle == or call:
+  //   * operator == takes an Object so its either not checked or checked
+  //     at the entry because the parameter is marked covariant, neither of
+  //     those cases require a dynamic invocation forwarder;
+  //   * we assume that all closures are entered in a checked way.
+  const Function* direct_call_target = &direct_call.target_;
+  if (I->should_emit_strong_mode_checks() &&
+      (name.raw() != Symbols::EqualOperator().raw()) &&
+      (name.raw() != Symbols::Call().raw()) && H.IsRoot(itarget_name)) {
+    mangled_name = &String::ZoneHandle(
+        Z, Function::CreateDynamicInvocationForwarderName(name));
+    if (!direct_call_target->IsNull()) {
+      direct_call_target = &Function::ZoneHandle(
+          direct_call_target->GetDynamicInvocationForwarder(*mangled_name));
+    }
+  }
+
   if (is_unchecked_closure_call) {
     // Lookup the function in the closure.
     instructions += LoadLocal(receiver_temp);
@@ -3681,27 +3711,18 @@
     instructions +=
         B->ClosureCall(position, type_args_len, argument_count, argument_names,
                        /*use_unchecked_entry=*/true);
-  } else if (!direct_call.target_.IsNull()) {
+  } else if (!direct_call_target->IsNull()) {
     // TODO(#34162): Pass 'is_unchecked_call' down if/when we feature multiple
     // entry-points in AOT.
+
+    // Even if TFA infers a concrete receiver type, the static type of the
+    // call-site may still be dynamic and we need to call the dynamic invocation
+    // forwarder to ensure type-checks are performed.
     ASSERT(FLAG_precompiled_mode);
-    instructions += StaticCall(position, direct_call.target_, argument_count,
+    instructions += StaticCall(position, *direct_call_target, argument_count,
                                argument_names, ICData::kNoRebind, &result_type,
                                type_args_len);
   } else {
-    const String* mangled_name = &name;
-    // Do not mangle == or call:
-    //   * operator == takes an Object so its either not checked or checked
-    //     at the entry because the parameter is marked covariant, neither of
-    //     those cases require a dynamic invocation forwarder;
-    //   * we assume that all closures are entered in a checked way.
-    if (!FLAG_precompiled_mode && I->should_emit_strong_mode_checks() &&
-        (name.raw() != Symbols::EqualOperator().raw()) &&
-        (name.raw() != Symbols::Call().raw()) && H.IsRoot(itarget_name)) {
-      mangled_name = &String::ZoneHandle(
-          Z, Function::CreateDynamicInvocationForwarderName(name));
-    }
-
     // TODO(#34162): Pass 'is_unchecked_call' down if/when we feature multiple
     // entry-points in AOT.
     instructions += InstanceCall(
@@ -3946,6 +3967,15 @@
 
 Fragment StreamingFlowGraphBuilder::BuildStaticInvocation(bool is_const,
                                                           TokenPosition* p) {
+  if (is_const) {
+    const intptr_t offset = ReaderOffset() - 1;           // Include the tag.
+    (p != NULL) ? * p = ReadPosition() : ReadPosition();  // read position.
+
+    SetOffset(offset);
+    SkipExpression();  // read past this StaticInvocation.
+    return Constant(constant_evaluator_.EvaluateStaticInvocation(offset));
+  }
+
   const intptr_t offset = ReaderOffset() - 1;  // Include the tag.
   TokenPosition position = ReadPosition();     // read position.
   if (p != NULL) *p = position;
@@ -4364,7 +4394,7 @@
     instructions += PushArgument();
 
     // See if simple instanceOf is applicable.
-    if (dart::FlowGraphBuilder::SimpleInstanceOfType(type)) {
+    if (dart::SimpleInstanceOfType(type)) {
       instructions += Constant(type);
       instructions += PushArgument();  // Type.
       instructions += InstanceCall(
@@ -4401,55 +4431,28 @@
   TokenPosition position = ReadPosition();  // read position.
   if (p != NULL) *p = position;
 
-  uint8_t flags = ReadFlags();  // read flags.
+  const uint8_t flags = ReadFlags();  // read flags.
   const bool is_type_error = (flags & (1 << 0)) != 0;
 
   Fragment instructions = BuildExpression();  // read operand.
 
   const AbstractType& type = T.BuildType();  // read type.
-
-  // The VM does not like an Object_as call with a dynamic type. We need to
-  // special case this situation.
-  const Type& object_type = Type::Handle(Z, Type::ObjectType());
-
   if (type.IsMalformed()) {
     instructions += Drop();
     instructions += ThrowTypeError();
-    return instructions;
-  }
-
-  if (type.IsInstantiated() &&
-      object_type.IsSubtypeOf(type, NULL, NULL, Heap::kOld)) {
+  } else if (type.IsInstantiated() && type.IsTopType()) {
     // We already evaluated the operand on the left and just leave it there as
     // the result of the `obj as dynamic` expression.
-  } else if (is_type_error) {
+  } else {
+    // We do not care whether the 'as' cast as implicitly added by the frontend
+    // or explicitly written by the user, in both cases we use an assert
+    // assignable.
     instructions += LoadLocal(MakeTemporary());
-    instructions += flow_graph_builder_->AssertAssignable(
-        position, type, Symbols::Empty(),
+    instructions += B->AssertAssignable(
+        position, type,
+        is_type_error ? Symbols::Empty() : Symbols::InTypeCast(),
         AssertAssignableInstr::kInsertedByFrontend);
     instructions += Drop();
-  } else {
-    instructions += PushArgument();
-
-    if (!type.IsInstantiated(kCurrentClass)) {
-      instructions += LoadInstantiatorTypeArguments();
-    } else {
-      instructions += NullConstant();
-    }
-    instructions += PushArgument();  // Instantiator type arguments.
-
-    if (!type.IsInstantiated(kFunctions)) {
-      instructions += LoadFunctionTypeArguments();
-    } else {
-      instructions += NullConstant();
-    }
-    instructions += PushArgument();  // Function type arguments.
-
-    instructions += Constant(type);
-    instructions += PushArgument();  // Type.
-
-    instructions += InstanceCall(
-        position, Library::PrivateCoreLibName(Symbols::_as()), Token::kAS, 4);
   }
   return instructions;
 }
@@ -5775,7 +5778,7 @@
     rethrow += PushArgument();
     rethrow += LoadLocal(stack_trace_var);
     rethrow += PushArgument();
-    rethrow += RethrowException(position, CatchClauseNode::kInvalidTryIndex);
+    rethrow += RethrowException(position, kInvalidTryIndex);
     Drop();
 
     continuation = Fragment(continuation.entry, no_error);
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
index c5449d6..d5a388b 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.h
@@ -129,13 +129,13 @@
                                      Fragment* explicit_checks,
                                      Fragment* implicit_checks);
   Fragment CompleteBodyWithYieldContinuations(Fragment body);
-  TargetEntryInstr* BuildSeparateUncheckedEntryPoint(
+  FunctionEntryInstr* BuildSeparateUncheckedEntryPoint(
       BlockEntryInstr* normal_entry,
       Fragment normal_prologue,
       Fragment extra_prologue,
       Fragment shared_prologue,
       Fragment body);
-  TargetEntryInstr* BuildSharedUncheckedEntryPoint(
+  FunctionEntryInstr* BuildSharedUncheckedEntryPoint(
       Fragment prologue_from_normal_entry,
       Fragment skippable_checks,
       Fragment body);
@@ -149,7 +149,7 @@
       const Fragment& every_time_prologue,
       const Fragment& type_args_handling);
 
-  void RecordUncheckedEntryPoint(TargetEntryInstr* extra_entry);
+  void RecordUncheckedEntryPoint(FunctionEntryInstr* extra_entry);
 
   void loop_depth_inc();
   void loop_depth_dec();
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index fff48a9..88dbd35 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -1116,7 +1116,7 @@
   return instructions;
 }
 
-BlockEntryInstr* FlowGraphBuilder::BuildPrologue(TargetEntryInstr* normal_entry,
+BlockEntryInstr* FlowGraphBuilder::BuildPrologue(BlockEntryInstr* normal_entry,
                                                  PrologueInfo* prologue_info) {
   const bool compiling_for_osr = IsCompiledForOsr();
 
@@ -1136,9 +1136,12 @@
   const Function& function =
       Function::ZoneHandle(Z, method.extracted_method_closure());
 
-  TargetEntryInstr* normal_entry = BuildTargetEntry();
-  graph_entry_ = new (Z)
-      GraphEntryInstr(*parsed_function_, normal_entry, Compiler::kNoOSRDeoptId);
+  graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function_, Compiler::kNoOSRDeoptId);
+
+  auto normal_entry = BuildFunctionEntry(graph_entry_);
+  graph_entry_->set_normal_entry(normal_entry);
+
   Fragment body(normal_entry);
   body += CheckStackOverflowInPrologue(method.token_pos());
   body += BuildImplicitClosureCreation(function);
@@ -1155,12 +1158,15 @@
   // This function is specialized for a receiver class, a method name, and
   // the arguments descriptor at a call site.
 
-  TargetEntryInstr* normal_entry = BuildTargetEntry();
+  graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function_, Compiler::kNoOSRDeoptId);
+
+  auto normal_entry = BuildFunctionEntry(graph_entry_);
+  graph_entry_->set_normal_entry(normal_entry);
+
   PrologueInfo prologue_info(-1, -1);
   BlockEntryInstr* instruction_cursor =
       BuildPrologue(normal_entry, &prologue_info);
-  graph_entry_ = new (Z)
-      GraphEntryInstr(*parsed_function_, normal_entry, Compiler::kNoOSRDeoptId);
 
   // The backend will expect an array of default values for all the named
   // parameters, even if they are all known to be passed at the call site
@@ -1304,12 +1310,15 @@
   }
   parsed_function_->set_default_parameter_values(default_values);
 
-  TargetEntryInstr* normal_entry = BuildTargetEntry();
+  graph_entry_ =
+      new (Z) GraphEntryInstr(*parsed_function_, Compiler::kNoOSRDeoptId);
+
+  auto normal_entry = BuildFunctionEntry(graph_entry_);
+  graph_entry_->set_normal_entry(normal_entry);
+
   PrologueInfo prologue_info(-1, -1);
   BlockEntryInstr* instruction_cursor =
       BuildPrologue(normal_entry, &prologue_info);
-  graph_entry_ = new (Z)
-      GraphEntryInstr(*parsed_function_, normal_entry, Compiler::kNoOSRDeoptId);
 
   Fragment body(instruction_cursor);
   body += CheckStackOverflowInPrologue(function.token_pos());
@@ -1372,9 +1381,8 @@
 
 void FlowGraphBuilder::SetCurrentTryCatchBlock(TryCatchBlock* try_catch_block) {
   try_catch_block_ = try_catch_block;
-  SetCurrentTryIndex(try_catch_block == nullptr
-                         ? CatchClauseNode::kInvalidTryIndex
-                         : try_catch_block->try_index());
+  SetCurrentTryIndex(try_catch_block == nullptr ? kInvalidTryIndex
+                                                : try_catch_block->try_index());
 }
 
 }  // namespace kernel
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.h b/runtime/vm/compiler/frontend/kernel_to_il.h
index eeecd74..7607105 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.h
+++ b/runtime/vm/compiler/frontend/kernel_to_il.h
@@ -38,8 +38,7 @@
   YieldContinuation(Instruction* entry, intptr_t try_index)
       : entry(entry), try_index(try_index) {}
 
-  YieldContinuation()
-      : entry(NULL), try_index(CatchClauseNode::kInvalidTryIndex) {}
+  YieldContinuation() : entry(NULL), try_index(kInvalidTryIndex) {}
 };
 
 class FlowGraphBuilder : public BaseFlowGraphBuilder {
@@ -57,7 +56,7 @@
   FlowGraph* BuildGraph();
 
  private:
-  BlockEntryInstr* BuildPrologue(TargetEntryInstr* normal_entry,
+  BlockEntryInstr* BuildPrologue(BlockEntryInstr* normal_entry,
                                  PrologueInfo* prologue_info);
 
   FlowGraph* BuildGraphOfMethodExtractor(const Function& method);
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.cc b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
index cf59420..d5676ab 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.cc
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.cc
@@ -31,7 +31,9 @@
       canonical_names_(TypedData::Handle(Z)),
       metadata_payloads_(ExternalTypedData::Handle(Z)),
       metadata_mappings_(ExternalTypedData::Handle(Z)),
-      constants_(Array::Handle(Z)) {}
+      constants_(Array::Handle(Z)),
+      info_(KernelProgramInfo::Handle(Z)),
+      name_index_handle_(Smi::Handle(Z)) {}
 
 TranslationHelper::TranslationHelper(Thread* thread, Heap::Space space)
     : thread_(thread),
@@ -43,7 +45,9 @@
       canonical_names_(TypedData::Handle(Z)),
       metadata_payloads_(ExternalTypedData::Handle(Z)),
       metadata_mappings_(ExternalTypedData::Handle(Z)),
-      constants_(Array::Handle(Z)) {}
+      constants_(Array::Handle(Z)),
+      info_(KernelProgramInfo::Handle(Z)),
+      name_index_handle_(Smi::Handle(Z)) {}
 
 void TranslationHelper::Reset() {
   string_offsets_ = TypedData::null();
@@ -75,6 +79,7 @@
   SetMetadataPayloads(ExternalTypedData::Handle(Z, info.metadata_payloads()));
   SetMetadataMappings(ExternalTypedData::Handle(Z, info.metadata_mappings()));
   SetConstants(Array::Handle(Z, info.constants()));
+  SetKernelProgramInfo(info);
 }
 
 void TranslationHelper::SetStringOffsets(const TypedData& string_offsets) {
@@ -109,6 +114,10 @@
   constants_ = constants.raw();
 }
 
+void TranslationHelper::SetKernelProgramInfo(const KernelProgramInfo& info) {
+  info_ = info.raw();
+}
+
 intptr_t TranslationHelper::StringOffset(StringIndex index) const {
   return string_offsets_.GetUint32(index << 2);
 }
@@ -477,24 +486,47 @@
   // This ASSERT is just a sanity check.
   ASSERT(IsLibrary(kernel_library) ||
          IsAdministrative(CanonicalNameParent(kernel_library)));
+  {
+    NoSafepointScope no_safepoint_scope(thread_);
+    RawLibrary* raw_lib;
+    name_index_handle_ = Smi::New(kernel_library);
+    raw_lib = info_.LookupLibrary(thread_, name_index_handle_);
+    if (raw_lib != Library::null()) {
+      return raw_lib;
+    }
+  }
+
   const String& library_name =
       DartSymbolPlain(CanonicalNameString(kernel_library));
   ASSERT(!library_name.IsNull());
-  RawLibrary* library = Library::LookupLibrary(thread_, library_name);
-  ASSERT(library != Object::null());
-  return library;
+  const Library& library =
+      Library::Handle(Z, Library::LookupLibrary(thread_, library_name));
+  ASSERT(!library.IsNull());
+  name_index_handle_ = Smi::New(kernel_library);
+  return info_.InsertLibrary(thread_, name_index_handle_, library);
 }
 
 RawClass* TranslationHelper::LookupClassByKernelClass(NameIndex kernel_class) {
   ASSERT(IsClass(kernel_class));
+  {
+    NoSafepointScope no_safepoint_scope(thread_);
+    RawClass* raw_class;
+    name_index_handle_ = Smi::New(kernel_class);
+    raw_class = info_.LookupClass(thread_, name_index_handle_);
+    if (raw_class != Class::null()) {
+      return raw_class;
+    }
+  }
+
   const String& class_name = DartClassName(kernel_class);
   NameIndex kernel_library = CanonicalNameParent(kernel_class);
   Library& library =
       Library::Handle(Z, LookupLibraryByKernelLibrary(kernel_library));
-  RawClass* klass = library.LookupClassAllowPrivate(class_name);
-
-  ASSERT(klass != Object::null());
-  return klass;
+  const Class& klass =
+      Class::Handle(Z, library.LookupClassAllowPrivate(class_name));
+  ASSERT(!klass.IsNull());
+  name_index_handle_ = Smi::New(kernel_class);
+  return info_.InsertClass(thread_, name_index_handle_, klass);
 }
 
 RawField* TranslationHelper::LookupFieldByKernelField(NameIndex kernel_field) {
@@ -2473,12 +2505,17 @@
   return H.DartString(reader_.BufferAt(ReaderOffset()), size, Heap::kOld);
 }
 
-String& KernelReaderHelper::GetSourceFor(intptr_t index) {
+const String& KernelReaderHelper::GetSourceFor(intptr_t index) {
   AlternativeReadingScope alt(&reader_);
   SetOffset(GetOffsetForSourceInfo(index));
   SkipBytes(ReadUInt());       // skip uri.
   intptr_t size = ReadUInt();  // read source List<byte> size.
-  return H.DartString(reader_.BufferAt(ReaderOffset()), size, Heap::kOld);
+  ASSERT(size >= 0);
+  if (size == 0) {
+    return Symbols::Empty();
+  } else {
+    return H.DartString(reader_.BufferAt(ReaderOffset()), size, Heap::kOld);
+  }
 }
 
 RawTypedData* KernelReaderHelper::GetLineStartsFor(intptr_t index) {
diff --git a/runtime/vm/compiler/frontend/kernel_translation_helper.h b/runtime/vm/compiler/frontend/kernel_translation_helper.h
index d7737be..ff94ef2 100644
--- a/runtime/vm/compiler/frontend/kernel_translation_helper.h
+++ b/runtime/vm/compiler/frontend/kernel_translation_helper.h
@@ -59,6 +59,8 @@
   const Array& constants() { return constants_; }
   void SetConstants(const Array& constants);
 
+  void SetKernelProgramInfo(const KernelProgramInfo& info);
+
   intptr_t StringOffset(StringIndex index) const;
   intptr_t StringSize(StringIndex index) const;
 
@@ -191,6 +193,8 @@
   ExternalTypedData& metadata_payloads_;
   ExternalTypedData& metadata_mappings_;
   Array& constants_;
+  KernelProgramInfo& info_;
+  Smi& name_index_handle_;
 
   DISALLOW_COPY_AND_ASSIGN(TranslationHelper);
 };
@@ -1024,7 +1028,7 @@
   intptr_t SourceTableSize();
   intptr_t GetOffsetForSourceInfo(intptr_t index);
   String& SourceTableUriFor(intptr_t index);
-  String& GetSourceFor(intptr_t index);
+  const String& GetSourceFor(intptr_t index);
   RawTypedData* GetLineStartsFor(intptr_t index);
 
   Zone* zone_;
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index a6f15f9..09b239b 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -26,12 +26,14 @@
   // argument values match declarated parameter types for all non-covariant
   // and non-generic-covariant parameters. The same applies to type parameters
   // bounds for type parameters of generic functions.
+  //
   // In JIT mode we dynamically generate trampolines (dynamic invocation
   // forwarders) that perform type checks when arriving to a method from a
   // dynamic call-site.
-  // In AOT mode we don't dynamically generate such trampolines but
-  // instead rely on a static analysis to discover which methods can
-  // be invoked dynamically.
+  //
+  // In AOT mode we don't dynamically generate such trampolines but instead rely
+  // on a static analysis to discover which methods can be invoked dynamically,
+  // and generate the necessary trampolines during precompilation.
   if (method.name() == Symbols::Call().raw()) {
     // Currently we consider all call methods to be invoked dynamically and
     // don't mangle their names.
@@ -39,7 +41,7 @@
     // entry point for closures.
     return false;
   }
-  return !FLAG_precompiled_mode || !attrs.has_dynamic_invocations;
+  return true;
 }
 
 ScopeBuilder::ScopeBuilder(ParsedFunction* parsed_function)
diff --git a/runtime/vm/compiler/intrinsifier.cc b/runtime/vm/compiler/intrinsifier.cc
index fc1da04..7537204 100644
--- a/runtime/vm/compiler/intrinsifier.cc
+++ b/runtime/vm/compiler/intrinsifier.cc
@@ -218,18 +218,14 @@
   ASSERT(!parsed_function.function().HasOptionalParameters());
   PrologueInfo prologue_info(-1, -1);
 
-  ZoneGrowableArray<const ICData*>* ic_data_array =
-      new ZoneGrowableArray<const ICData*>();
-  FlowGraphBuilder builder(parsed_function, *ic_data_array,
-                           /* not building var desc */ NULL,
-                           /* not inlining */ NULL, Compiler::kNoOSRDeoptId);
+  auto graph_entry =
+      new GraphEntryInstr(parsed_function, Compiler::kNoOSRDeoptId);
 
-  intptr_t block_id = builder.AllocateBlockId();
-  TargetEntryInstr* normal_entry =
-      new TargetEntryInstr(block_id, CatchClauseNode::kInvalidTryIndex,
-                           CompilerState::Current().GetNextDeoptId());
-  GraphEntryInstr* graph_entry = new GraphEntryInstr(
-      parsed_function, normal_entry, Compiler::kNoOSRDeoptId);
+  intptr_t block_id = 1;  // 0 is GraphEntry.
+  graph_entry->set_normal_entry(
+      new FunctionEntryInstr(graph_entry, block_id, kInvalidTryIndex,
+                             CompilerState::Current().GetNextDeoptId()));
+
   FlowGraph* graph =
       new FlowGraph(parsed_function, graph_entry, block_id, prologue_info);
   const Function& function = parsed_function.function();
@@ -252,6 +248,11 @@
     printer.PrintBlocks();
   }
 
+  // Ensure loop hierarchy has been computed.
+  GrowableArray<BitVector*> dominance_frontier;
+  graph->ComputeDominators(&dominance_frontier);
+  graph->GetLoopHierarchy();
+
   // Perform register allocation on the SSA graph.
   FlowGraphAllocator allocator(*graph, true);  // Intrinsic mode.
   allocator.AllocateRegisters();
@@ -383,7 +384,7 @@
 //
 class BlockBuilder : public ValueObject {
  public:
-  BlockBuilder(FlowGraph* flow_graph, TargetEntryInstr* entry)
+  BlockBuilder(FlowGraph* flow_graph, BlockEntryInstr* entry)
       : flow_graph_(flow_graph),
         entry_(entry),
         current_(entry),
@@ -395,7 +396,8 @@
 
   Definition* AddToInitialDefinitions(Definition* def) {
     def->set_ssa_temp_index(flow_graph_->alloc_ssa_temp_index());
-    flow_graph_->AddToInitialDefinitions(def);
+    auto normal_entry = flow_graph_->graph_entry()->normal_entry();
+    flow_graph_->AddToInitialDefinitions(normal_entry, def);
     return def;
   }
 
@@ -489,7 +491,7 @@
 static bool IntrinsifyArrayGetIndexed(FlowGraph* flow_graph,
                                       intptr_t array_cid) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* index = builder.AddParameter(1);
@@ -572,7 +574,7 @@
 static bool IntrinsifyArraySetIndexed(FlowGraph* flow_graph,
                                       intptr_t array_cid) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* value = builder.AddParameter(1);
@@ -775,7 +777,7 @@
 
 static bool BuildCodeUnitAt(FlowGraph* flow_graph, intptr_t cid) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* index = builder.AddParameter(1);
@@ -823,7 +825,7 @@
 
   Zone* zone = flow_graph->zone();
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* right = builder.AddParameter(1);
@@ -867,7 +869,7 @@
     return false;
   }
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* receiver = builder.AddParameter(1);
@@ -907,7 +909,7 @@
 
 static bool BuildLoadField(FlowGraph* flow_graph, intptr_t offset) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* array = builder.AddParameter(1);
@@ -940,7 +942,7 @@
 
 bool Intrinsifier::Build_GrowableArrayCapacity(FlowGraph* flow_graph) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* array = builder.AddParameter(1);
@@ -957,7 +959,7 @@
 
 bool Intrinsifier::Build_GrowableArrayGetIndexed(FlowGraph* flow_graph) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* index = builder.AddParameter(1);
@@ -997,7 +999,7 @@
 bool Intrinsifier::Build_GrowableArraySetIndexedUnchecked(
     FlowGraph* flow_graph) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* value = builder.AddParameter(1);
@@ -1024,7 +1026,7 @@
 
 bool Intrinsifier::Build_GrowableArraySetData(FlowGraph* flow_graph) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* data = builder.AddParameter(1);
@@ -1046,7 +1048,7 @@
 
 bool Intrinsifier::Build_GrowableArraySetLength(FlowGraph* flow_graph) {
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* length = builder.AddParameter(1);
@@ -1067,7 +1069,7 @@
     return false;
   }
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   Definition* receiver = builder.AddParameter(1);
@@ -1113,7 +1115,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kMathSin);
@@ -1123,7 +1125,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kMathCos);
@@ -1133,7 +1135,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kMathTan);
@@ -1143,7 +1145,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kMathAsin);
@@ -1153,7 +1155,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kMathAcos);
@@ -1163,7 +1165,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kMathAtan);
@@ -1173,7 +1175,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kMathAtan2,
@@ -1184,7 +1186,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kDoubleMod,
@@ -1198,7 +1200,7 @@
   if (TargetCPUFeatures::double_truncate_round_supported()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kDoubleCeil);
@@ -1211,7 +1213,7 @@
   if (TargetCPUFeatures::double_truncate_round_supported()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kDoubleFloor);
@@ -1224,7 +1226,7 @@
   if (TargetCPUFeatures::double_truncate_round_supported()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kDoubleTruncate);
@@ -1234,7 +1236,7 @@
   if (!FlowGraphCompiler::SupportsUnboxedDoubles()) return false;
 
   GraphEntryInstr* graph_entry = flow_graph->graph_entry();
-  TargetEntryInstr* normal_entry = graph_entry->normal_entry();
+  auto normal_entry = graph_entry->normal_entry();
   BlockBuilder builder(flow_graph, normal_entry);
 
   return BuildInvokeMathCFunction(&builder, MethodRecognizer::kDoubleRound);
diff --git a/runtime/vm/compiler/jit/compiler.cc b/runtime/vm/compiler/jit/compiler.cc
index 339a85d..f3c1792 100644
--- a/runtime/vm/compiler/jit/compiler.cc
+++ b/runtime/vm/compiler/jit/compiler.cc
@@ -6,7 +6,6 @@
 
 #include "vm/compiler/assembler/assembler.h"
 
-#include "vm/ast_printer.h"
 #include "vm/code_patcher.h"
 #include "vm/compiler/aot/precompiler.h"
 #include "vm/compiler/assembler/disassembler.h"
@@ -229,6 +228,7 @@
 // Compile a function. Should call only if the function has not been compiled.
 //   Arg0: function object.
 DEFINE_RUNTIME_ENTRY(CompileFunction, 1) {
+  ASSERT(thread->IsMutatorThread());
   const Function& function = Function::CheckedHandle(arguments.ArgAt(0));
   Object& result = Object::Handle(zone);
 
@@ -534,13 +534,10 @@
   const Function& function = parsed_function()->function();
   Zone* const zone = thread()->zone();
 
-  CSTAT_TIMER_SCOPE(thread(), codefinalizer_timer);
   // CreateDeoptInfo uses the object pool and needs to be done before
   // FinalizeCode.
   const Array& deopt_info_array =
       Array::Handle(zone, graph_compiler->CreateDeoptInfo(assembler));
-  INC_STAT(thread(), total_code_size,
-           deopt_info_array.Length() * sizeof(uword));
   // Allocates instruction object. Since this occurs only at safepoint,
   // there can be no concurrent access to the instruction page.
   Code& code = Code::Handle(Code::FinalizeCode(
@@ -679,6 +676,7 @@
     }
     function.set_unoptimized_code(code);
     function.AttachCode(code);
+    function.SetWasCompiled(true);
   }
   if (parsed_function()->HasDeferredPrefixes()) {
     ASSERT(!FLAG_load_deferred_eagerly);
@@ -712,7 +710,6 @@
   Zone* const zone = thread()->zone();
   NOT_IN_PRODUCT(TimelineStream* compiler_timeline =
                      Timeline::GetCompilerStream());
-  CSTAT_TIMER_SCOPE(thread(), codegen_timer);
   HANDLESCOPE(thread());
 
   // We may reattempt compilation if the function needs to be assembled using
@@ -738,11 +735,7 @@
 
       CompilerState compiler_state(thread());
 
-      // TimerScope needs an isolate to be properly terminated in case of a
-      // LongJump.
       {
-        CSTAT_TIMER_SCOPE(thread(), graphbuilder_timer);
-
         if (optimized()) {
           // In background compilation the deoptimization counter may have
           // already reached the limit.
@@ -809,7 +802,6 @@
       if (optimized()) {
         NOT_IN_PRODUCT(TimelineDurationScope tds(thread(), compiler_timeline,
                                                  "OptimizationPasses"));
-        CSTAT_TIMER_SCOPE(thread(), graphoptimizer_timer);
 
         pass_state.inline_id_to_function.Add(&function);
         // We do not add the token position now because we don't know the
@@ -836,7 +828,6 @@
           pass_state.inline_id_to_token_pos, pass_state.caller_inline_id,
           ic_data_array);
       {
-        CSTAT_TIMER_SCOPE(thread(), graphcompiler_timer);
         NOT_IN_PRODUCT(TimelineDurationScope tds(thread(), compiler_timeline,
                                                  "CompileGraph"));
         graph_compiler.CompileGraph();
@@ -933,20 +924,12 @@
                 function.ToFullyQualifiedCString(),
                 function.token_pos().ToCString(), token_size);
     }
-    INC_STAT(thread, num_functions_compiled, 1);
-    if (optimized) {
-      INC_STAT(thread, num_functions_optimized, 1);
-    }
     // Makes sure no classes are loaded during parsing in background.
     const intptr_t loading_invalidation_gen_at_start =
         isolate->loading_invalidation_gen();
     {
       HANDLESCOPE(thread);
-      const int64_t num_tokens_before = STAT_VALUE(thread, num_tokens_consumed);
       pipeline->ParseFunction(parsed_function);
-      const int64_t num_tokens_after = STAT_VALUE(thread, num_tokens_consumed);
-      INC_STAT(thread, num_func_tokens_compiled,
-               num_tokens_after - num_tokens_before);
     }
 
     CompileParsedFunctionHelper helper(parsed_function, optimized, osr_id);
@@ -966,11 +949,7 @@
 
     const Code& result = Code::Handle(helper.Compile(pipeline));
 
-    if (!result.IsNull()) {
-      if (!optimized) {
-        function.SetWasCompiled(true);
-      }
-    } else {
+    if (result.IsNull()) {
       if (Compiler::IsBackgroundCompilation()) {
         // Try again later, background compilation may abort because of
         // state change during compilation.
@@ -1115,17 +1094,6 @@
     ParsedFunction* parsed_function = new (zone)
         ParsedFunction(thread, Function::ZoneHandle(zone, function.raw()));
     pipeline->ParseFunction(parsed_function);
-// For now we just walk thru the AST nodes and in DEBUG mode we print
-// them otherwise just skip through them, this will be need to be
-// wired to generate the IR format.
-#if !defined(PRODUCT)
-#if defined(DEBUG)
-    AstPrinter ast_printer(true);
-#else
-    AstPrinter ast_printer(false);
-#endif  // defined(DEBUG).
-    ast_printer.PrintFunctionNodes(*parsed_function);
-#endif  // !defined(PRODUCT).
     return Error::null();
   } else {
     Thread* const thread = Thread::Current();
@@ -1245,8 +1213,8 @@
 #endif  // !defined(PRODUCT)
 
   // If running with interpreter, do the unoptimized compilation first.
-  const bool optimized = !FLAG_enable_interpreter ||
-                         (function.unoptimized_code() != Object::null());
+  const bool optimized = function.ShouldCompilerOptimize();
+  ASSERT(FLAG_enable_interpreter || optimized);
 
   // If we are in the optimizing in the mutator/Dart thread, then
   // this is either an OSR compilation or background compilation is
@@ -1361,6 +1329,7 @@
 
 RawError* Compiler::ReadAllBytecode(const Class& cls) {
   Thread* thread = Thread::Current();
+  ASSERT(thread->IsMutatorThread());
   Zone* zone = thread->zone();
   Error& error = Error::Handle(zone, cls.EnsureIsFinalized(thread));
   ASSERT(error.IsNull());
@@ -1376,7 +1345,8 @@
   for (int i = 0; i < functions.Length(); i++) {
     func ^= functions.At(i);
     ASSERT(!func.IsNull());
-    if (func.IsBytecodeAllowed(zone) && !func.HasBytecode()) {
+    if (func.IsBytecodeAllowed(zone) && !func.HasBytecode() &&
+        !func.HasCode()) {
       RawError* error =
           kernel::BytecodeReader::ReadFunctionBytecode(thread, func);
       if (error != Error::null()) {
@@ -1387,39 +1357,6 @@
   return Error::null();
 }
 
-RawError* Compiler::ParseAllFunctions(const Class& cls) {
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-  Error& error = Error::Handle(zone);
-  Array& functions = Array::Handle(zone, cls.functions());
-  Function& func = Function::Handle(zone);
-  // Class dynamic lives in the vm isolate. Its array fields cannot be set to
-  // an empty array.
-  if (functions.IsNull()) {
-    ASSERT(cls.IsDynamicClass());
-    return error.raw();
-  }
-  // Compile all the regular functions.
-  for (int i = 0; i < functions.Length(); i++) {
-    func ^= functions.At(i);
-    ASSERT(!func.IsNull());
-    if (!func.is_abstract() && !func.IsRedirectingFactory()) {
-      if ((cls.is_mixin_app_alias() || cls.IsMixinApplication()) &&
-          func.HasOptionalParameters()) {
-        // Skipping optional parameters in mixin application.
-        continue;
-      }
-      error = ParseFunction(thread, func);
-      if (!error.IsNull()) {
-        return error.raw();
-      }
-      func.ClearICDataArray();
-      func.ClearCode();
-    }
-  }
-  return error.raw();
-}
-
 RawObject* Compiler::EvaluateStaticInitializer(const Field& field) {
 #if defined(DART_PRECOMPILER) && !defined(TARGET_ARCH_DBC) &&                  \
     !defined(TARGET_ARCH_IA32)
@@ -1434,6 +1371,7 @@
   LongJumpScope jump;
   if (setjmp(*jump.Set()) == 0) {
     Thread* const thread = Thread::Current();
+    ASSERT(thread->IsMutatorThread());
     NoOOBMessageScope no_msg_scope(thread);
     NoReloadScope no_reload_scope(thread->isolate(), thread);
     // Under lazy compilation initializer has not yet been created, so create
@@ -1511,14 +1449,6 @@
     // Don't allow reload requests to come in.
     NoReloadScope no_reload_scope(thread->isolate(), thread);
 
-    if (FLAG_trace_compiler) {
-      THR_Print("compiling expression: ");
-      if (FLAG_support_ast_printer) {
-        AstPrinter ast_printer;
-        ast_printer.PrintNode(fragment);
-      }
-    }
-
     // Create a dummy function object for the code generator.
     // The function needs to be associated with a named Class: the interface
     // Function fits the bill.
@@ -1728,15 +1658,13 @@
         function = function_queue()->PeekFunction();
       }
       while (running_ && !function.IsNull() && !isolate_->IsTopLevelParsing()) {
+        // This is false if we are compiling bytecode -> unoptimized code.
+        const bool optimizing = function.ShouldCompilerOptimize();
+        ASSERT(FLAG_enable_interpreter || optimizing);
+
         // Check that we have aggregated and cleared the stats.
-        ASSERT(thread->compiler_stats()->IsCleared());
         Compiler::CompileOptimizedFunction(thread, function,
                                            Compiler::kNoOSRDeoptId);
-#ifndef PRODUCT
-        Isolate* isolate = thread->isolate();
-        isolate->aggregate_compiler_stats()->Add(*thread->compiler_stats());
-        thread->compiler_stats()->Clear();
-#endif  // PRODUCT
 
         QueueElement* qelem = NULL;
         {
@@ -1749,7 +1677,8 @@
             const Function& old = Function::Handle(qelem->Function());
             // If an optimizable method is not optimized, put it back on
             // the background queue (unless it was passed to foreground).
-            if ((!old.HasOptimizedCode() && old.IsOptimizable()) ||
+            if ((optimizing && !old.HasOptimizedCode() &&
+                 old.IsOptimizable()) ||
                 FLAG_stress_test_background_compilation) {
               if (old.is_background_optimizable() &&
                   Compiler::CanOptimizeFunction(thread, old)) {
@@ -1959,11 +1888,6 @@
   return Error::null();
 }
 
-RawError* Compiler::ParseAllFunctions(const Class& cls) {
-  FATAL1("Attempt to parse class %s", cls.ToCString());
-  return Error::null();
-}
-
 RawObject* Compiler::EvaluateStaticInitializer(const Field& field) {
   ASSERT(field.HasPrecompiledInitializer());
   const Function& initializer =
diff --git a/runtime/vm/compiler/jit/compiler.h b/runtime/vm/compiler/jit/compiler.h
index 38d4761..aee82f1 100644
--- a/runtime/vm/compiler/jit/compiler.h
+++ b/runtime/vm/compiler/jit/compiler.h
@@ -150,7 +150,6 @@
   //
   // Returns Error::null() if there is no compilation error.
   static RawError* CompileAllFunctions(const Class& cls);
-  static RawError* ParseAllFunctions(const Class& cls);
 
   // Eagerly read all bytecode.
   static RawError* ReadAllBytecode(const Class& cls);
diff --git a/runtime/vm/compiler/jit/jit_call_specializer.cc b/runtime/vm/compiler/jit/jit_call_specializer.cc
index aa95f7c..cbc5395 100644
--- a/runtime/vm/compiler/jit/jit_call_specializer.cc
+++ b/runtime/vm/compiler/jit/jit_call_specializer.cc
@@ -80,11 +80,6 @@
     return;
   }
 
-  if (Token::IsTypeCastOperator(op_kind)) {
-    ReplaceWithTypeCast(instr);
-    return;
-  }
-
   const ICData& unary_checks =
       ICData::ZoneHandle(Z, instr->ic_data()->AsUnaryClassChecks());
 
diff --git a/runtime/vm/compiler/method_recognizer.cc b/runtime/vm/compiler/method_recognizer.cc
index 99b887a..82bf802 100644
--- a/runtime/vm/compiler/method_recognizer.cc
+++ b/runtime/vm/compiler/method_recognizer.cc
@@ -5,6 +5,7 @@
 #include "vm/compiler/method_recognizer.h"
 
 #include "vm/object.h"
+#include "vm/reusable_handles.h"
 #include "vm/symbols.h"
 
 namespace dart {
@@ -289,8 +290,15 @@
 }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
-Token::Kind MethodTokenRecognizer::RecognizeTokenKind(const String& name) {
+Token::Kind MethodTokenRecognizer::RecognizeTokenKind(const String& name_) {
+  Thread* thread = Thread::Current();
+  REUSABLE_STRING_HANDLESCOPE(thread);
+  String& name = thread->StringHandle();
+  name = name_.raw();
   ASSERT(name.IsSymbol());
+  if (Function::IsDynamicInvocationForwaderName(name)) {
+    name = Function::DemangleDynamicInvocationForwarderName(name);
+  }
   if (name.raw() == Symbols::Plus().raw()) {
     return Token::kADD;
   } else if (name.raw() == Symbols::Minus().raw()) {
@@ -337,4 +345,35 @@
   return Token::kILLEGAL;
 }
 
+#define RECOGNIZE_FACTORY(symbol, class_name, constructor_name, cid, fp)       \
+  {Symbols::k##symbol##Id, cid, fp, #symbol ", " #cid},  // NOLINT
+
+static struct {
+  intptr_t symbol_id;
+  intptr_t cid;
+  intptr_t finger_print;
+  const char* name;
+} factory_recognizer_list[] = {RECOGNIZED_LIST_FACTORY_LIST(RECOGNIZE_FACTORY){
+    Symbols::kIllegal, -1, -1, NULL}};
+
+#undef RECOGNIZE_FACTORY
+
+intptr_t FactoryRecognizer::ResultCid(const Function& factory) {
+  ASSERT(factory.IsFactory());
+  const Class& function_class = Class::Handle(factory.Owner());
+  const Library& lib = Library::Handle(function_class.library());
+  ASSERT((lib.raw() == Library::CoreLibrary()) ||
+         (lib.raw() == Library::TypedDataLibrary()));
+  const String& factory_name = String::Handle(factory.name());
+  for (intptr_t i = 0;
+       factory_recognizer_list[i].symbol_id != Symbols::kIllegal; i++) {
+    if (String::EqualsIgnoringPrivateKey(
+            factory_name,
+            Symbols::Symbol(factory_recognizer_list[i].symbol_id))) {
+      return factory_recognizer_list[i].cid;
+    }
+  }
+  return kDynamicCid;
+}
+
 }  // namespace dart
diff --git a/runtime/vm/compiler/method_recognizer.h b/runtime/vm/compiler/method_recognizer.h
index 592c7c2..0c0801c 100644
--- a/runtime/vm/compiler/method_recognizer.h
+++ b/runtime/vm/compiler/method_recognizer.h
@@ -136,8 +136,6 @@
     0x5aa9888d)                                                                \
   V(::, _classRangeCheck, ClassRangeCheck, Bool, 0x2ae76b84)                   \
   V(::, _classRangeCheckNegative, ClassRangeCheckNegated, Bool, 0x5acdfb75)    \
-  V(::, _classRangeAssert, ClassRangeAssert, Dynamic, 0x6c77116e)              \
-  V(::, _classIdEqualsAssert, ClassIdEqualsAssert, Dynamic, 0x09e0ae72)        \
 
 
 // List of intrinsics:
@@ -439,8 +437,6 @@
   V(::, pow, MathPow, 0x79efc5a2)                                              \
   V(::, _classRangeCheck, ClassRangeCheck, 0x2ae76b84)                         \
   V(::, _classRangeCheckNegative, ClassRangeCheckNegated, 0x5acdfb75)          \
-  V(::, _classRangeAssert, ClassRangeAssert, 0x6c77116e)                       \
-  V(::, _classIdEqualsAssert, ClassIdEqualsAssert, 0x09e0ae72)                 \
   V(::, _toInt, ConvertMaskedInt, 0x713908fd)                                  \
   V(::, _toInt8, ConvertIntToInt8, 0x7484a780)                                 \
   V(::, _toUint8, ConvertIntToUint8, 0x0a15b522)                               \
diff --git a/runtime/vm/compiler_stats.cc b/runtime/vm/compiler_stats.cc
deleted file mode 100644
index 3baca4a..0000000
--- a/runtime/vm/compiler_stats.cc
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright (c) 2011, 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.
-
-#include "vm/compiler_stats.h"
-
-#include "vm/flags.h"
-#include "vm/log.h"
-#include "vm/object_graph.h"
-#include "vm/object_store.h"
-#include "vm/timer.h"
-
-namespace dart {
-
-DEFINE_FLAG(bool, compiler_stats, false, "Compiler stat counters.");
-DEFINE_FLAG(bool,
-            compiler_benchmark,
-            false,
-            "Compiler stat counters for benchmark.");
-
-class TokenStreamVisitor : public ObjectVisitor {
- public:
-  explicit TokenStreamVisitor(CompilerStats* compiler_stats)
-      : obj_(Object::Handle()), stats_(compiler_stats) {}
-
-  void VisitObject(RawObject* raw_obj) {
-    if (raw_obj->IsPseudoObject()) {
-      return;  // Cannot be wrapped in handles.
-    }
-    obj_ = raw_obj;
-    if (obj_.GetClassId() == TokenStream::kClassId) {
-      TokenStream::Iterator tkit(
-          Thread::Current()->zone(), TokenStream::Cast(obj_),
-          TokenPosition::kMinSource, TokenStream::Iterator::kNoNewlines);
-      Token::Kind kind = tkit.CurrentTokenKind();
-      while (kind != Token::kEOS) {
-        ++stats_->num_tokens_total;
-        tkit.Advance();
-        kind = tkit.CurrentTokenKind();
-      }
-    }
-  }
-
- private:
-  Object& obj_;
-  CompilerStats* stats_;
-};
-
-CompilerStats::CompilerStats(Isolate* isolate)
-    : isolate_(isolate),
-#define INITIALIZE_TIMER(timer_name, description) timer_name(true, description),
-      STAT_TIMERS(INITIALIZE_TIMER)
-#undef INITIALIZE_TIMER
-
-#define INITIALIZE_COUNTERS(counter_name) counter_name(0),
-          STAT_COUNTERS(INITIALIZE_COUNTERS)
-#undef INITIALIZE_COUNTERS
-              text(NULL),
-      use_benchmark_output(false) {
-}
-
-#ifndef PRODUCT
-
-// Used to aggregate stats. Must be atomic.
-void CompilerStats::Add(const CompilerStats& other) {
-#define ADD_TOTAL(timer_name, literal) timer_name.AddTotal(other.timer_name);
-
-  STAT_TIMERS(ADD_TOTAL)
-#undef ADD_TOTAL
-
-#define ADD_COUNTER(counter_name)                                              \
-  AtomicOperations::IncrementInt64By(&counter_name, other.counter_name);
-
-  STAT_COUNTERS(ADD_COUNTER)
-#undef ADD_COUNTER
-}
-
-void CompilerStats::Clear() {
-#define CLEAR_TIMER(timer_name, literal) timer_name.Reset();
-
-  STAT_TIMERS(CLEAR_TIMER)
-#undef CLEAR_TIMER
-
-#define CLEAR_COUNTER(counter_name) counter_name = 0;
-
-  STAT_COUNTERS(CLEAR_COUNTER)
-#undef CLEAR_COUNTER
-}
-
-bool CompilerStats::IsCleared() const {
-#define CHECK_TIMERS(timer_name, literal)                                      \
-  if (!timer_name.IsReset()) return false;
-
-  STAT_TIMERS(CHECK_TIMERS)
-#undef CHECK_TIMERS
-
-#define CHECK_COUNTERS(counter_name)                                           \
-  if (counter_name != 0) return false;
-
-  STAT_COUNTERS(CHECK_COUNTERS)
-#undef CHECK_COUNTERS
-  return true;
-}
-
-// This function is used as a callback in the log object to which the
-// compiler stats are printed. It will be called only once, to print
-// the accumulated text when all of the compiler stats values are
-// added to the log.
-static void PrintToStats(const char* format, ...) PRINTF_ATTRIBUTE(1, 2);
-static void PrintToStats(const char* format, ...) {
-  Thread* thread = Thread::Current();
-  Isolate* isolate = thread->isolate();
-  CompilerStats* stats = isolate->aggregate_compiler_stats();
-  Zone* zone = thread->zone();
-  ASSERT(stats != NULL);
-  va_list args;
-  va_start(args, format);
-  stats->text = zone->VPrint(format, args);
-  va_end(args);
-}
-
-void CompilerStats::Update() {
-  // Traverse the heap and compute number of tokens in all
-  // TokenStream objects.
-  num_tokens_total = 0;
-
-  {
-    HeapIterationScope iteration(Thread::Current());
-    TokenStreamVisitor visitor(this);
-    iteration.IterateObjects(&visitor);
-    iteration.IterateVMIsolateObjects(&visitor);
-  }
-}
-
-void CompilerStats::EnableBenchmark() {
-  FLAG_compiler_stats = true;
-  use_benchmark_output = true;
-}
-
-// Generate output for Golem benchmark harness. If the output format
-// changes, the parsing function in Golem must be updated.
-char* CompilerStats::BenchmarkOutput() {
-  Update();
-  Log log(PrintToStats);
-  LogBlock lb(Thread::Current(), &log);
-  log.Print("==== Compiler Stats for isolate (%" Pd64 ") '%s' ====\n",
-            static_cast<int64_t>(isolate_->main_port()), isolate_->name());
-
-  log.Print("NumberOfTokens: %" Pd64 "\n", num_tokens_total);
-  log.Print("NumClassesParsed: %" Pd64 "\n", num_classes_parsed);
-  log.Print("NumFunctionsCompiled: %" Pd64 "\n", num_functions_compiled);
-  log.Print("NumFunctionsOptimized: %" Pd64 "\n", num_functions_optimized);
-  log.Print("NumFunctionsParsed: %" Pd64 "\n", num_functions_parsed);
-
-  // Scanner stats.
-  int64_t scan_usecs = scanner_timer.TotalElapsedTime();
-  int64_t scan_speed =
-      scan_usecs > 0 ? 1000 * num_tokens_scanned / scan_usecs : 0;
-  log.Print("NumTokensScanned: %" Pd64 " tokens\n", num_tokens_scanned);
-  log.Print("ScannerTime: %" Pd64 " ms\n", scan_usecs / 1000);
-  log.Print("ScannerSpeed: %" Pd64 " tokens/ms\n", scan_speed);
-
-  // Parser stats.
-  int64_t parse_usecs = parser_timer.TotalElapsedTime();
-  int64_t parse_speed =
-      parse_usecs > 0 ? 1000 * num_tokens_consumed / parse_usecs : 0;
-  log.Print("NumTokensParsed: %" Pd64 " tokens\n", num_tokens_consumed);
-  log.Print("ParserTime: %" Pd64 " ms\n", parse_usecs / 1000);
-  log.Print("ParserSpeed: %" Pd64 " tokens/ms\n", parse_speed);
-
-  // Compiler stats.
-  int64_t codegen_usecs = codegen_timer.TotalElapsedTime();
-  int64_t compile_usecs = scan_usecs + parse_usecs + codegen_usecs;
-  int64_t compile_speed =
-      compile_usecs > 0 ? (1000 * num_func_tokens_compiled / compile_usecs) : 0;
-  log.Print("NumTokensCompiled: %" Pd64 " tokens\n", num_func_tokens_compiled);
-  log.Print("CompilerTime: %" Pd64 " ms\n", compile_usecs / 1000);
-
-  log.Print("CompilerSpeed: %" Pd64 " tokens/ms\n", compile_speed);
-  log.Print("CodeSize: %" Pd64 " KB\n", total_code_size / 1024);
-  int64_t code_density =
-      total_instr_size > 0
-          ? (num_func_tokens_compiled * 1024) / total_instr_size
-          : 0;
-
-  log.Print("CodeDensity: %" Pd64 " tokens/KB\n", code_density);
-  log.Print("InstrSize: %" Pd64 " KB\n", total_instr_size / 1024);
-  log.Flush();
-  char* benchmark_text = text;
-  text = NULL;
-  return benchmark_text;
-}
-
-char* CompilerStats::PrintToZone() {
-  if (!FLAG_compiler_stats) {
-    return NULL;
-  } else if (use_benchmark_output) {
-    return BenchmarkOutput();
-  }
-
-  Update();
-
-  Log log(PrintToStats);
-  LogBlock lb(Thread::Current(), &log);
-
-  log.Print("==== Compiler Stats for isolate  (%" Pd64 ") '%s' ====\n",
-            static_cast<int64_t>(isolate_->main_port()), isolate_->name());
-  log.Print("Number of tokens:        %" Pd64 "\n", num_tokens_total);
-  log.Print("Source length:           %" Pd64 " characters\n", src_length);
-  log.Print("Number of source tokens: %" Pd64 "\n", num_tokens_scanned);
-
-  int64_t num_local_functions =
-      GrowableObjectArray::Handle(isolate_->object_store()->closure_functions())
-          .Length();
-
-  log.Print("==== Parser stats:\n");
-  log.Print("Total tokens consumed:   %" Pd64 "\n", num_tokens_consumed);
-  log.Print("Classes parsed:          %" Pd64 "\n", num_classes_parsed);
-  log.Print("  Tokens consumed:       %" Pd64 "\n", num_class_tokens);
-  log.Print("Functions parsed:        %" Pd64 "\n", num_functions_parsed);
-  log.Print("  Tokens consumed:       %" Pd64 "\n", num_func_tokens_compiled);
-  log.Print("Impl getter funcs:       %" Pd64 "\n", num_implicit_final_getters);
-  log.Print("Impl method extractors:  %" Pd64 "\n", num_method_extractors);
-  log.Print("Local functions:         %" Pd64 "\n", num_local_functions);
-  log.Print("Consts cached:           %" Pd64 "\n", num_cached_consts);
-  log.Print("Consts cache hits:       %" Pd64 "\n", num_const_cache_hits);
-  log.Print("Consts calcuated:        %" Pd64 "\n", num_execute_const);
-
-  int64_t scan_usecs = scanner_timer.TotalElapsedTime();
-  log.Print("Scanner time:            %" Pd64 " ms\n", scan_usecs / 1000);
-  int64_t scan_speed =
-      scan_usecs > 0 ? 1000 * num_tokens_consumed / scan_usecs : 0;
-  log.Print("Scanner speed:           %" Pd64 " tokens/ms\n", scan_speed);
-  int64_t parse_usecs = parser_timer.TotalElapsedTime();
-  int64_t parse_speed =
-      parse_usecs > 0 ? 1000 * num_tokens_consumed / parse_usecs : 0;
-  log.Print("Parser time:             %" Pd64 " ms\n", parse_usecs / 1000);
-  log.Print("Parser speed:            %" Pd64 " tokens/ms\n", parse_speed);
-
-  int64_t codegen_usecs = codegen_timer.TotalElapsedTime();
-
-  log.Print("==== Backend stats:\n");
-  log.Print("Code gen. time:          %" Pd64 " ms\n", codegen_usecs / 1000);
-  int64_t graphbuilder_usecs = graphbuilder_timer.TotalElapsedTime();
-  log.Print("  Graph builder:         %" Pd64 " ms\n",
-            graphbuilder_usecs / 1000);
-  int64_t ssa_usecs = ssa_timer.TotalElapsedTime();
-  log.Print("  Graph SSA:             %" Pd64 " ms\n", ssa_usecs / 1000);
-
-  int64_t graphinliner_usecs = graphinliner_timer.TotalElapsedTime();
-  log.Print("  Graph inliner:         %" Pd64 " ms\n",
-            graphinliner_usecs / 1000);
-  int64_t graphinliner_parse_usecs =
-      graphinliner_parse_timer.TotalElapsedTime();
-  log.Print("    Parsing:             %" Pd64 " ms\n",
-            graphinliner_parse_usecs / 1000);
-  int64_t graphinliner_build_usecs =
-      graphinliner_build_timer.TotalElapsedTime();
-  log.Print("    Building:            %" Pd64 " ms\n",
-            graphinliner_build_usecs / 1000);
-  int64_t graphinliner_ssa_usecs = graphinliner_ssa_timer.TotalElapsedTime();
-  log.Print("    SSA:                 %" Pd64 " ms\n",
-            graphinliner_ssa_usecs / 1000);
-  int64_t graphinliner_opt_usecs = graphinliner_opt_timer.TotalElapsedTime();
-  log.Print("    Optimization:        %" Pd64 " ms\n",
-            graphinliner_opt_usecs / 1000);
-  int64_t graphinliner_subst_usecs =
-      graphinliner_subst_timer.TotalElapsedTime();
-  log.Print("    Substitution:        %" Pd64 " ms\n",
-            graphinliner_subst_usecs / 1000);
-  int64_t graphoptimizer_usecs = graphoptimizer_timer.TotalElapsedTime();
-  log.Print("  Graph optimizer:       %" Pd64 " ms\n",
-            (graphoptimizer_usecs - graphinliner_usecs) / 1000);
-  int64_t graphcompiler_usecs = graphcompiler_timer.TotalElapsedTime();
-  log.Print("  Graph compiler:        %" Pd64 " ms\n",
-            graphcompiler_usecs / 1000);
-  int64_t codefinalizer_usecs = codefinalizer_timer.TotalElapsedTime();
-  log.Print("  Code finalizer:        %" Pd64 " ms\n",
-            codefinalizer_usecs / 1000);
-
-  log.Print("==== Compiled code stats:\n");
-  int64_t compile_usecs = scan_usecs + parse_usecs + codegen_usecs;
-  int64_t compile_speed =
-      compile_usecs > 0 ? (1000 * num_func_tokens_compiled / compile_usecs) : 0;
-  log.Print("Functions parsed:        %" Pd64 "\n", num_functions_parsed);
-  log.Print("Functions compiled:      %" Pd64 "\n", num_functions_compiled);
-  log.Print("  optimized:             %" Pd64 "\n", num_functions_optimized);
-  log.Print("Compiler time:           %" Pd64 " ms\n", compile_usecs / 1000);
-  log.Print("Tokens compiled:         %" Pd64 "\n", num_func_tokens_compiled);
-  log.Print("Compilation speed:       %" Pd64 " tokens/ms\n", compile_speed);
-  int64_t code_density =
-      total_instr_size > 0
-          ? (num_func_tokens_compiled * 1024) / total_instr_size
-          : 0;
-  log.Print("Code density:            %" Pd64 " tokens per KB\n", code_density);
-  log.Print("Code size:               %" Pd64 " KB\n", total_code_size / 1024);
-  log.Print("  Instr size:            %" Pd64 " KB\n", total_instr_size / 1024);
-  log.Print("  Pc Desc size:          %" Pd64 " KB\n", pc_desc_size / 1024);
-  log.Print("  VarDesc size:          %" Pd64 " KB\n", vardesc_size / 1024);
-  log.Flush();
-  char* stats_text = text;
-  text = NULL;
-  return stats_text;
-}
-
-#endif  // !PRODUCT
-
-}  // namespace dart
diff --git a/runtime/vm/compiler_stats.h b/runtime/vm/compiler_stats.h
deleted file mode 100644
index 1649f3a..0000000
--- a/runtime/vm/compiler_stats.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2011, 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.
-
-#ifndef RUNTIME_VM_COMPILER_STATS_H_
-#define RUNTIME_VM_COMPILER_STATS_H_
-
-#include "platform/atomic.h"
-#include "vm/allocation.h"
-#include "vm/flags.h"
-#include "vm/isolate.h"
-#include "vm/timer.h"
-
-namespace dart {
-
-DECLARE_FLAG(bool, compiler_stats);
-DECLARE_FLAG(bool, compiler_benchmark);
-
-#define STAT_TIMERS(V)                                                         \
-  V(parser_timer, "parser timer")                                              \
-  V(scanner_timer, "scanner timer")                                            \
-  V(codegen_timer, "codegen timer")                                            \
-  V(graphbuilder_timer, "flow graph builder timer")                            \
-  V(ssa_timer, "flow graph SSA timer")                                         \
-  V(graphinliner_timer, "flow graph inliner timer")                            \
-  V(graphinliner_parse_timer, "inliner parsing timer")                         \
-  V(graphinliner_build_timer, "inliner building timer")                        \
-  V(graphinliner_ssa_timer, "inliner SSA timer")                               \
-  V(graphinliner_opt_timer, "inliner optimization timer")                      \
-  V(graphinliner_subst_timer, "inliner substitution timer")                    \
-  V(graphoptimizer_timer, "flow graph optimizer timer")                        \
-  V(graphcompiler_timer, "flow graph compiler timer")                          \
-  V(codefinalizer_timer, "code finalization timer")
-
-#define STAT_COUNTERS(V)                                                       \
-  V(num_tokens_total)                                                          \
-  V(num_tokens_scanned)                                                        \
-  V(num_tokens_consumed)                                                       \
-  V(num_cached_consts)                                                         \
-  V(num_const_cache_hits)                                                      \
-  V(num_execute_const)                                                         \
-  V(num_classes_parsed)                                                        \
-  V(num_class_tokens)                                                          \
-  V(num_functions_parsed)                                                      \
-  V(num_functions_compiled)                                                    \
-  V(num_functions_optimized)                                                   \
-  V(num_func_tokens_compiled)                                                  \
-  V(num_implicit_final_getters)                                                \
-  V(num_method_extractors)                                                     \
-  V(src_length)                                                                \
-  V(total_code_size)                                                           \
-  V(total_instr_size)                                                          \
-  V(pc_desc_size)                                                              \
-  V(vardesc_size)
-
-class CompilerStats {
- public:
-  explicit CompilerStats(Isolate* isolate);
-  ~CompilerStats() {}
-
-  Isolate* isolate_;
-
-  // We could use STAT_TIMERS and STAT_COUNTERS to declare fields, but then
-  // we would be losing the comments.
-  Timer parser_timer;              // Cumulative runtime of parser.
-  Timer scanner_timer;             // Cumulative runtime of scanner.
-  Timer codegen_timer;             // Cumulative runtime of code generator.
-  Timer graphbuilder_timer;        // Included in codegen_timer.
-  Timer ssa_timer;                 // Included in codegen_timer.
-  Timer graphinliner_timer;        // Included in codegen_timer.
-  Timer graphinliner_parse_timer;  // Included in codegen_timer.
-  Timer graphinliner_build_timer;  // Included in codegen_timer.
-  Timer graphinliner_ssa_timer;    // Included in codegen_timer.
-  Timer graphinliner_opt_timer;    // Included in codegen_timer.
-  Timer graphinliner_subst_timer;  // Included in codegen_timer.
-
-  Timer graphoptimizer_timer;  // Included in codegen_timer.
-  Timer graphcompiler_timer;   // Included in codegen_timer.
-  Timer codefinalizer_timer;   // Included in codegen_timer.
-
-  ALIGN8 int64_t num_tokens_total;  // Isolate + VM isolate.
-  ALIGN8 int64_t num_tokens_scanned;
-  ALIGN8 int64_t num_tokens_consumed;
-  ALIGN8 int64_t num_cached_consts;
-  ALIGN8 int64_t num_const_cache_hits;
-  ALIGN8 int64_t num_execute_const;
-
-  ALIGN8 int64_t num_classes_parsed;
-  ALIGN8 int64_t num_class_tokens;
-  ALIGN8 int64_t num_functions_parsed;     // Num parsed functions.
-  ALIGN8 int64_t num_functions_compiled;   // Num unoptimized compilations.
-  ALIGN8 int64_t num_functions_optimized;  // Num optimized compilations.
-  ALIGN8 int64_t num_func_tokens_compiled;
-  ALIGN8 int64_t num_implicit_final_getters;
-  ALIGN8 int64_t num_method_extractors;
-
-  ALIGN8 int64_t src_length;        // Total number of characters in source.
-  ALIGN8 int64_t total_code_size;   // Bytes allocated for code and meta info.
-  ALIGN8 int64_t total_instr_size;  // Total size of generated code in bytes.
-  ALIGN8 int64_t pc_desc_size;
-  ALIGN8 int64_t vardesc_size;
-  char* text;
-  bool use_benchmark_output;
-
-  void EnableBenchmark();
-  char* BenchmarkOutput();
-  char* PrintToZone();
-
-  // Used to aggregate stats.
-  void Add(const CompilerStats& other);
-  void Clear();
-
-  bool IsCleared() const;
-
- private:
-  // Update stats that are computed, e.g. token count.
-  void Update();
-};
-
-// Make increment atomic in case it occurs in parallel with aggregation from
-// other thread.
-#define INC_STAT(thread, counter, incr)                                        \
-  if (FLAG_support_compiler_stats && FLAG_compiler_stats) {                    \
-    AtomicOperations::IncrementInt64By(&(thread)->compiler_stats()->counter,   \
-                                       (incr));                                \
-  }
-
-#define STAT_VALUE(thread, counter)                                            \
-  ((FLAG_support_compiler_stats && FLAG_compiler_stats)                        \
-       ? (thread)->compiler_stats()->counter                                   \
-       : 0)
-
-#define CSTAT_TIMER_SCOPE(thr, t)                                              \
-  TimerScope timer(FLAG_support_compiler_stats&& FLAG_compiler_stats,          \
-                   (FLAG_support_compiler_stats && FLAG_compiler_stats)        \
-                       ? &((thr)->compiler_stats()->t)                         \
-                       : NULL,                                                 \
-                   thr);
-
-}  // namespace dart
-
-#endif  // RUNTIME_VM_COMPILER_STATS_H_
diff --git a/runtime/vm/constants_kbc.h b/runtime/vm/constants_kbc.h
index f03847f..d61ac75 100644
--- a/runtime/vm/constants_kbc.h
+++ b/runtime/vm/constants_kbc.h
@@ -468,6 +468,12 @@
 
 class KernelBytecode {
  public:
+  // Minimum bytecode format version supported by VM.
+  static const intptr_t kMinSupportedBytecodeFormatVersion = 1;
+  // Maximum bytecode format version supported by VM.
+  // Should match futureBytecodeFormatVersion in pkg/vm/lib/bytecode/dbc.dart.
+  static const intptr_t kMaxSupportedBytecodeFormatVersion = 2;
+
   enum Opcode {
 #define DECLARE_BYTECODE(name, encoding, op1, op2, op3) k##name,
     KERNEL_BYTECODES_LIST(DECLARE_BYTECODE)
diff --git a/runtime/vm/constants_x64.h b/runtime/vm/constants_x64.h
index d722ccb..055d51b 100644
--- a/runtime/vm/constants_x64.h
+++ b/runtime/vm/constants_x64.h
@@ -200,6 +200,7 @@
   // We prefer not to use the int3 instruction since it conflicts with gdb.
   static const uint8_t kBreakPointInstruction = kHltInstruction;
   static const int kBreakPointInstructionSize = 1;
+  static const uint8_t kGdbBreakpointInstruction = 0xcc;
 
   bool IsBreakPoint() {
     ASSERT(kBreakPointInstructionSize == 1);
diff --git a/runtime/vm/custom_isolate_test.cc b/runtime/vm/custom_isolate_test.cc
index 5351e10..cf87025 100644
--- a/runtime/vm/custom_isolate_test.cc
+++ b/runtime/vm/custom_isolate_test.cc
@@ -17,7 +17,6 @@
 namespace dart {
 
 DECLARE_FLAG(bool, trace_shutdown);
-DECLARE_FLAG(bool, use_dart_frontend);
 
 static void native_echo(Dart_NativeArguments args);
 static void CustomIsolateImpl_start(Dart_NativeArguments args);
@@ -308,9 +307,6 @@
   bool saved_flag = FLAG_trace_shutdown;
   FLAG_trace_shutdown = true;
   FLAG_verify_handles = true;
-#ifdef DEBUG
-  FLAG_verify_on_transition = FLAG_use_dart_frontend ? false : true;
-#endif
   event_queue = new EventQueue();
 
   Dart_Isolate dart_isolate = TestCase::CreateTestIsolate();
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 7cc1f3b..ea392ed 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -17,6 +17,7 @@
 #include "vm/heap/heap.h"
 #include "vm/heap/pointer_block.h"
 #include "vm/isolate.h"
+#include "vm/isolate_reload.h"
 #include "vm/kernel_isolate.h"
 #include "vm/malloc_hooks.h"
 #include "vm/message_handler.h"
@@ -373,10 +374,10 @@
   ASSERT(Isolate::isolates_list_head_ == Dart::vm_isolate());
 }
 
-const char* Dart::Cleanup() {
+char* Dart::Cleanup() {
   ASSERT(Isolate::Current() == NULL);
   if (vm_isolate_ == NULL) {
-    return "VM already terminated.";
+    return strdup("VM already terminated.");
   }
 
   if (FLAG_trace_shutdown) {
@@ -394,19 +395,6 @@
 
   NativeSymbolResolver::Cleanup();
 
-  {
-    // Set the VM isolate as current isolate when shutting down
-    // Metrics so that we can use a StackZone.
-    if (FLAG_trace_shutdown) {
-      OS::PrintErr("[+%" Pd64 "ms] SHUTDOWN: Entering vm isolate\n",
-                   UptimeMillis());
-    }
-    bool result = Thread::EnterIsolate(vm_isolate_);
-    ASSERT(result);
-    NOT_IN_PRODUCT(Metric::Cleanup());
-    Thread::ExitIsolate();
-  }
-
   // Disable the creation of new isolates.
   if (FLAG_trace_shutdown) {
     OS::PrintErr("[+%" Pd64 "ms] SHUTDOWN: Disabling isolate creation\n",
@@ -455,6 +443,27 @@
 
   IdleNotifier::Stop();
 
+#if !defined(PRODUCT)
+  {
+    // IMPORTANT: the code below enters VM isolate so that Metric::Cleanup could
+    // create a StackZone. We *must* wait for all other isolate to shutdown
+    // before entering VM isolate because code in the isolate initialization
+    // calls VerifyBootstrapClasses, which calls Heap::Verify which calls
+    // Scavenger::VisitObjects on the VM isolate's new space without taking
+    // any sort of locks: assuming that vm isolate is immutable and never
+    // entered by a mutator thread - which is in general true, but is violated
+    // by the code below.
+    if (FLAG_trace_shutdown) {
+      OS::PrintErr("[+%" Pd64 "ms] SHUTDOWN: Entering vm isolate\n",
+                   UptimeMillis());
+    }
+    bool result = Thread::EnterIsolate(vm_isolate_);
+    ASSERT(result);
+    Metric::Cleanup();
+    Thread::ExitIsolate();
+  }
+#endif
+
   // Shutdown the thread pool. On return, all thread pool threads have exited.
   if (FLAG_trace_shutdown) {
     OS::PrintErr("[+%" Pd64 "ms] SHUTDOWN: Deleting thread pool\n",
@@ -532,6 +541,10 @@
   }
   MallocHooks::Cleanup();
   Flags::Cleanup();
+#if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
+  IsolateReloadContext::SetFileModifiedCallback(NULL);
+  Service::SetEmbedderStreamCallbacks(NULL, NULL);
+#endif  // !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
   return NULL;
 }
 
@@ -636,6 +649,13 @@
   if (I->object_store()->megamorphic_miss_code() == Code::null()) {
     MegamorphicCacheTable::InitMissHandler(I);
   }
+
+#if !defined(TARGET_ARCH_DBC) && !defined(TARGET_ARCH_IA32)
+  if (I != Dart::vm_isolate()) {
+    I->object_store()->set_build_method_extractor_code(
+        Code::Handle(StubCode::GetBuildMethodExtractorStub()));
+  }
+#endif
 #endif  // defined(DART_PRECOMPILED_RUNTIME)
 
   const Code& miss_code =
diff --git a/runtime/vm/dart.h b/runtime/vm/dart.h
index 802859f..aba4a28 100644
--- a/runtime/vm/dart.h
+++ b/runtime/vm/dart.h
@@ -24,6 +24,8 @@
 
 class Dart : public AllStatic {
  public:
+  // Returns null if initialization succeeds, otherwise returns an error message
+  // (caller owns error message and has to free it).
   static char* Init(const uint8_t* vm_snapshot_data,
                     const uint8_t* vm_snapshot_instructions,
                     Dart_IsolateCreateCallback create,
@@ -37,7 +39,10 @@
                     Dart_EntropySource entropy_source,
                     Dart_GetVMServiceAssetsArchive get_service_assets,
                     bool start_kernel_isolate);
-  static const char* Cleanup();
+
+  // Returns null if cleanup succeeds, otherwise returns an error message
+  // (caller owns error message and has to free it).
+  static char* Cleanup();
 
   static Isolate* CreateIsolate(const char* name_prefix,
                                 const Dart_IsolateFlags& api_flags);
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index fbd78b1..a658ab7 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -48,7 +48,6 @@
 #include "vm/symbols.h"
 #include "vm/tags.h"
 #include "vm/thread_registry.h"
-#include "vm/timer.h"
 #include "vm/unicode.h"
 #include "vm/uri.h"
 #include "vm/version.h"
@@ -1012,11 +1011,7 @@
 
 DART_EXPORT char* Dart_Cleanup() {
   CHECK_NO_ISOLATE(Isolate::Current());
-  const char* err_msg = Dart::Cleanup();
-  if (err_msg != NULL) {
-    return strdup(err_msg);
-  }
-  return NULL;
+  return Dart::Cleanup();
 }
 
 DART_EXPORT char* Dart_SetVMFlags(int argc, const char** argv) {
@@ -1027,6 +1022,37 @@
   return Flags::IsSet(flag_name);
 }
 
+#if !defined(PRODUCT)
+#define VM_METRIC_API(type, variable, name, unit)                              \
+  DART_EXPORT int64_t Dart_VM##variable##Metric() {                            \
+    return vm_metric_##variable##_.value();                                    \
+  }
+VM_METRIC_LIST(VM_METRIC_API);
+#undef VM_METRIC_API
+
+#define ISOLATE_METRIC_API(type, variable, name, unit)                         \
+  DART_EXPORT int64_t Dart_Isolate##variable##Metric(Dart_Isolate isolate) {   \
+    if (isolate == NULL) {                                                     \
+      FATAL1("%s expects argument 'isolate' to be non-null.", CURRENT_FUNC);   \
+    }                                                                          \
+    Isolate* iso = reinterpret_cast<Isolate*>(isolate);                        \
+    return iso->Get##variable##Metric()->value();                              \
+  }
+ISOLATE_METRIC_LIST(ISOLATE_METRIC_API);
+#undef ISOLATE_METRIC_API
+#else  // !defined(PRODUCT)
+#define VM_METRIC_API(type, variable, name, unit)                              \
+  DART_EXPORT int64_t Dart_VM##variable##Metric() { return -1; }
+VM_METRIC_LIST(VM_METRIC_API);
+#undef VM_METRIC_API
+
+#define ISOLATE_METRIC_API(type, variable, name, unit)                         \
+  DART_EXPORT int64_t Dart_Isolate##variable##Metric(Dart_Isolate isolate) {   \
+    return -1;                                                                 \
+  }
+ISOLATE_METRIC_LIST(ISOLATE_METRIC_API);
+#endif  // !defined(PRODUCT)
+
 // --- Isolates ---
 
 static char* BuildIsolateName(const char* script_uri, const char* main) {
@@ -5676,10 +5702,10 @@
   return;
 }
 
-DART_EXPORT Dart_Handle Dart_SetServiceStreamCallbacks(
+DART_EXPORT char* Dart_SetServiceStreamCallbacks(
     Dart_ServiceStreamListenCallback listen_callback,
     Dart_ServiceStreamCancelCallback cancel_callback) {
-  return Api::Success();
+  return NULL;
 }
 
 DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id,
@@ -5689,9 +5715,9 @@
   return Api::Success();
 }
 
-DART_EXPORT Dart_Handle
-Dart_SetFileModifiedCallback(Dart_FileModifiedCallback file_mod_callback) {
-  return Api::Success();
+DART_EXPORT char* Dart_SetFileModifiedCallback(
+    Dart_FileModifiedCallback file_mod_callback) {
+  return NULL;
 }
 
 DART_EXPORT bool Dart_IsReloading() {
@@ -5748,42 +5774,42 @@
   }
 }
 
-DART_EXPORT Dart_Handle Dart_SetServiceStreamCallbacks(
+DART_EXPORT char* Dart_SetServiceStreamCallbacks(
     Dart_ServiceStreamListenCallback listen_callback,
     Dart_ServiceStreamCancelCallback cancel_callback) {
   if (!FLAG_support_service) {
-    return Api::Success();
+    return NULL;
   }
   if (listen_callback != NULL) {
     if (Service::stream_listen_callback() != NULL) {
-      return Api::NewError(
-          "%s permits only one listen callback to be registered, please "
-          "remove the existing callback and then add this callback",
-          CURRENT_FUNC);
+      return strdup(
+          "Dart_SetServiceStreamCallbacks "
+          "permits only one listen callback to be registered, please "
+          "remove the existing callback and then add this callback");
     }
   } else {
     if (Service::stream_listen_callback() == NULL) {
-      return Api::NewError(
-          "%s expects 'listen_callback' to be present in the callback set.",
-          CURRENT_FUNC);
+      return strdup(
+          "Dart_SetServiceStreamCallbacks "
+          "expects 'listen_callback' to be present in the callback set.");
     }
   }
   if (cancel_callback != NULL) {
     if (Service::stream_cancel_callback() != NULL) {
-      return Api::NewError(
-          "%s permits only one cancel callback to be registered, please "
-          "remove the existing callback and then add this callback",
-          CURRENT_FUNC);
+      return strdup(
+          "Dart_SetServiceStreamCallbacks "
+          "permits only one cancel callback to be registered, please "
+          "remove the existing callback and then add this callback");
     }
   } else {
     if (Service::stream_cancel_callback() == NULL) {
-      return Api::NewError(
-          "%s expects 'cancel_callback' to be present in the callback set.",
-          CURRENT_FUNC);
+      return strdup(
+          "Dart_SetServiceStreamCallbacks "
+          "expects 'cancel_callback' to be present in the callback set.");
     }
   }
   Service::SetEmbedderStreamCallbacks(listen_callback, cancel_callback);
-  return Api::Success();
+  return NULL;
 }
 
 DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id,
@@ -5809,29 +5835,29 @@
   return Api::Success();
 }
 
-DART_EXPORT Dart_Handle
-Dart_SetFileModifiedCallback(Dart_FileModifiedCallback file_modified_callback) {
+DART_EXPORT char* Dart_SetFileModifiedCallback(
+    Dart_FileModifiedCallback file_modified_callback) {
   if (!FLAG_support_service) {
-    return Api::Success();
+    return NULL;
   }
 #if !defined(DART_PRECOMPILED_RUNTIME)
   if (file_modified_callback != NULL) {
     if (IsolateReloadContext::file_modified_callback() != NULL) {
-      return Api::NewError(
-          "%s permits only one callback to be registered, please "
-          "remove the existing callback and then add this callback",
-          CURRENT_FUNC);
+      return strdup(
+          "Dart_SetFileModifiedCallback permits only one callback to be"
+          " registered, please remove the existing callback and then add"
+          " this callback");
     }
   } else {
     if (IsolateReloadContext::file_modified_callback() == NULL) {
-      return Api::NewError(
-          "%s expects 'file_modified_callback' to be set before it is cleared.",
-          CURRENT_FUNC);
+      return strdup(
+          "Dart_SetFileModifiedCallback expects 'file_modified_callback' to"
+          " be set before it is cleared.");
     }
   }
   IsolateReloadContext::SetFileModifiedCallback(file_modified_callback);
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
-  return Api::Success();
+  return NULL;
 }
 
 DART_EXPORT bool Dart_IsReloading() {
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index 277ab8d..5575c64 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -24,7 +24,6 @@
 namespace dart {
 
 DECLARE_FLAG(bool, verify_acquired_data);
-DECLARE_FLAG(bool, use_dart_frontend);
 
 #ifndef PRODUCT
 
@@ -360,8 +359,7 @@
   intptr_t line_number = 0;
   intptr_t column_number = 0;
   const char* cstr = "";
-  const char* test_lib =
-      FLAG_use_dart_frontend ? "file:///test-lib" : "test-lib";
+  const char* test_lib = "file:///test-lib";
 
   // Top frame is inspectStack().
   Dart_ActivationFrame frame;
@@ -610,11 +608,7 @@
   result = Dart_Invoke(lib, NewString("Func1"), 0, NULL);
   EXPECT(Dart_IsError(result));
 
-  if (FLAG_use_dart_frontend) {
-    EXPECT_SUBSTRING("Expected ';' after this.", Dart_GetError(result));
-  } else {
-    EXPECT_SUBSTRING("semicolon expected", Dart_GetError(result));
-  }
+  EXPECT_SUBSTRING("Expected ';' after this.", Dart_GetError(result));
 
   // Use Dart_SetReturnValue to propagate the error.
   use_throw_exception = false;
@@ -622,11 +616,7 @@
 
   result = Dart_Invoke(lib, NewString("Func1"), 0, NULL);
   EXPECT(Dart_IsError(result));
-  if (FLAG_use_dart_frontend) {
-    EXPECT_SUBSTRING("Expected ';' after this.", Dart_GetError(result));
-  } else {
-    EXPECT_SUBSTRING("semicolon expected", Dart_GetError(result));
-  }
+  EXPECT_SUBSTRING("Expected ';' after this.", Dart_GetError(result));
 
   // Use Dart_ThrowException to propagate the error.
   use_throw_exception = true;
@@ -634,11 +624,7 @@
 
   result = Dart_Invoke(lib, NewString("Func1"), 0, NULL);
   EXPECT(Dart_IsError(result));
-  if (FLAG_use_dart_frontend) {
-    EXPECT_SUBSTRING("Expected ';' after this.", Dart_GetError(result));
-  } else {
-    EXPECT_SUBSTRING("semicolon expected", Dart_GetError(result));
-  }
+  EXPECT_SUBSTRING("Expected ';' after this.", Dart_GetError(result));
 }
 
 TEST_CASE(DartAPI_PropagateError) {
@@ -3556,23 +3542,15 @@
 }
 
 static Dart_Handle LoadScript(const char* url_str, const char* source) {
-  Dart_Handle url = NewString(url_str);
-  Dart_Handle result;
-  if (!FLAG_use_dart_frontend) {
-    result = Dart_SetLibraryTagHandler(TestCase::library_handler);
-    EXPECT_VALID(result);
-    return Dart_LoadScript(url, Dart_Null(), NewString(source), 0, 0);
-  } else {
-    const uint8_t* kernel_buffer = NULL;
-    intptr_t kernel_buffer_size = 0;
-    char* error = TestCase::CompileTestScriptWithDFE(
-        url_str, source, &kernel_buffer, &kernel_buffer_size);
-    if (error != NULL) {
-      return Dart_NewApiError(error);
-    }
-    TestCaseBase::AddToKernelBuffers(kernel_buffer);
-    return Dart_LoadScriptFromKernel(kernel_buffer, kernel_buffer_size);
+  const uint8_t* kernel_buffer = NULL;
+  intptr_t kernel_buffer_size = 0;
+  char* error = TestCase::CompileTestScriptWithDFE(
+      url_str, source, &kernel_buffer, &kernel_buffer_size);
+  if (error != NULL) {
+    return Dart_NewApiError(error);
   }
+  TestCaseBase::AddToKernelBuffers(kernel_buffer);
+  return Dart_LoadScriptFromKernel(kernel_buffer, kernel_buffer_size);
 }
 
 VM_UNIT_TEST_CASE(DartAPI_IsolateSetCheckedMode) {
@@ -3997,10 +3975,7 @@
   Dart_Handle imported_lib =
       TestCase::LoadTestLibrary("library_url", kImportedScriptChars);
   EXPECT_VALID(imported_lib);
-  Dart_Handle prefix = Dart_EmptyString();
-  Dart_Handle result = Dart_LibraryImportLibrary(lib, imported_lib, prefix);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
+  Dart_Handle result = Dart_FinalizeLoading(false);
   EXPECT_VALID(result);
   result = Dart_Invoke(imported_lib, NewString("test2"), 0, NULL);
   EXPECT_VALID(result);
@@ -4183,6 +4158,16 @@
   EXPECT_STREQ("myerror", Dart_GetError(result));
 }
 
+TEST_CASE(DartAPI_SetField_BadType) {
+  const char* kScriptChars = "int foo;\n";
+  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+  Dart_Handle name = NewString("foo");
+  Dart_Handle result = Dart_SetField(lib, name, Dart_True());
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING("type 'bool' is not a subtype of type 'int' of 'foo'",
+                   Dart_GetError(result));
+}
+
 void NativeFieldLookup(Dart_NativeArguments args) {
   UNREACHABLE();
 }
@@ -5166,6 +5151,88 @@
   EXPECT_STREQ("myerror", Dart_GetError(result));
 }
 
+TEST_CASE(DartAPI_Invoke_BadArgs) {
+  const char* kScriptChars =
+      "class BaseMethods {\n"
+      "  inheritedMethod(int arg) => 'inherited $arg';\n"
+      "  static nonInheritedMethod(int arg) => 'noninherited $arg';\n"
+      "}\n"
+      "\n"
+      "class Methods extends BaseMethods {\n"
+      "  instanceMethod(int arg) => 'instance $arg';\n"
+      "  _instanceMethod(int arg) => 'hidden instance $arg';\n"
+      "  static staticMethod(int arg) => 'static $arg';\n"
+      "  static _staticMethod(int arg) => 'hidden static $arg';\n"
+      "}\n"
+      "\n"
+      "topMethod(int arg) => 'top $arg';\n"
+      "_topMethod(int arg) => 'hidden top $arg';\n"
+      "\n"
+      "Methods test() {\n"
+      "  return new Methods();\n"
+      "}\n";
+
+#if defined(PRODUCT)
+  const char* error_msg =
+      "type '_OneByteString' is not a subtype of type 'int' of 'arg'";
+#else
+  const char* error_msg =
+      "type 'String' is not a subtype of type 'int' of 'arg'";
+#endif  // defined(PRODUCT)
+
+  // Shared setup.
+  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
+  Dart_Handle type = Dart_GetType(lib, NewString("Methods"), 0, NULL);
+  EXPECT_VALID(type);
+  Dart_Handle instance = Dart_Invoke(lib, NewString("test"), 0, NULL);
+  EXPECT_VALID(instance);
+  Dart_Handle args[1];
+  args[0] = NewString("!!!");
+  Dart_Handle result;
+  Dart_Handle name;
+
+  // Instance method.
+  name = NewString("instanceMethod");
+  result = Dart_Invoke(instance, name, 1, args);
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING(error_msg, Dart_GetError(result));
+
+  name = PrivateLibName(lib, "_instanceMethod");
+  result = Dart_Invoke(instance, name, 1, args);
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING(error_msg, Dart_GetError(result));
+
+  // Inherited method.
+  name = NewString("inheritedMethod");
+  result = Dart_Invoke(instance, name, 1, args);
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING(error_msg, Dart_GetError(result));
+
+  // Static method.
+  name = NewString("staticMethod");
+  result = Dart_Invoke(type, name, 1, args);
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING(error_msg, Dart_GetError(result));
+
+  // Hidden static method.
+  name = NewString("_staticMethod");
+  result = Dart_Invoke(type, name, 1, args);
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING(error_msg, Dart_GetError(result));
+
+  // Top-Level method.
+  name = NewString("topMethod");
+  result = Dart_Invoke(lib, name, 1, args);
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING(error_msg, Dart_GetError(result));
+
+  // Hidden top-level method.
+  name = NewString("_topMethod");
+  result = Dart_Invoke(lib, name, 1, args);
+  EXPECT(Dart_IsError(result));
+  EXPECT_SUBSTRING(error_msg, Dart_GetError(result));
+}
+
 TEST_CASE(DartAPI_Invoke_Null) {
   Dart_Handle result = Dart_Invoke(Dart_Null(), NewString("toString"), 0, NULL);
   EXPECT_VALID(result);
@@ -5259,41 +5326,6 @@
   EXPECT_EQ(3, value);
 }
 
-TEST_CASE(DartAPI_Invoke_CrossLibrary) {
-  const char* kLibrary1Chars =
-      "library library1_name;\n"
-      "void local() {}\n"
-      "void _local() {}\n";
-  const char* kLibrary2Chars =
-      "library library2_name;\n"
-      "void imported() {}\n"
-      "void _imported() {}\n";
-
-  // Load lib1
-  Dart_Handle lib1 = TestCase::LoadTestLibrary("library1_url", kLibrary1Chars);
-  EXPECT_VALID(lib1);
-
-  // Load lib2
-  Dart_Handle lib2 = TestCase::LoadTestLibrary("library2_url", kLibrary2Chars);
-  EXPECT_VALID(lib2);
-
-  // Import lib2 from lib1
-  Dart_Handle result = Dart_LibraryImportLibrary(lib1, lib2, Dart_Null());
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  // We can invoke both private and non-private local functions.
-  EXPECT_VALID(Dart_Invoke(lib1, NewString("local"), 0, NULL));
-  EXPECT_VALID(Dart_Invoke(lib1, NewString("_local"), 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),
-               "NoSuchMethodError: No top-level method '_imported' declared");
-}
-
 TEST_CASE(DartAPI_InvokeClosure) {
   const char* kScriptChars =
       "class InvokeClosure {\n"
@@ -5735,92 +5767,6 @@
   EXPECT(Dart_IsError(result));
 }
 
-static Dart_Handle library_handler(Dart_LibraryTag tag,
-                                   Dart_Handle library,
-                                   Dart_Handle url) {
-  if (tag == Dart_kCanonicalizeUrl) {
-    return url;
-  }
-  return Api::Success();
-}
-
-TEST_CASE(DartAPI_LoadScript) {
-  if (FLAG_use_dart_frontend) {
-    return;
-  }
-  const char* kScriptChars =
-      "main() {"
-      "  return 12345;"
-      "}";
-  Dart_Handle url = NewString(TestCase::url());
-  Dart_Handle source = NewString(kScriptChars);
-  Dart_Handle error = Dart_NewApiError("incoming error");
-  Dart_Handle result;
-
-  result = Dart_SetLibraryTagHandler(library_handler);
-  EXPECT_VALID(result);
-
-  result = Dart_LoadScript(Dart_Null(), Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadScript expects argument 'url' to be non-null.",
-               Dart_GetError(result));
-
-  result = Dart_LoadScript(Dart_True(), Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadScript expects argument 'url' to be of type String.",
-               Dart_GetError(result));
-
-  result = Dart_LoadScript(error, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LoadScript(url, Dart_True(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LoadScript expects argument 'resolved_url' to be of type String.",
-      Dart_GetError(result));
-
-  result = Dart_LoadScript(url, error, source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  if (!FLAG_use_dart_frontend) {
-    result = Dart_LoadScript(url, Dart_Null(), Dart_Null(), 0, 0);
-    EXPECT(Dart_IsError(result));
-    EXPECT_STREQ("Dart_LoadScript expects argument 'source' to be non-null.",
-                 Dart_GetError(result));
-
-    result = Dart_LoadScript(url, Dart_Null(), Dart_True(), 0, 0);
-    EXPECT(Dart_IsError(result));
-    EXPECT_STREQ(
-        "Dart_LoadScript expects argument 'source' to be of type String.",
-        Dart_GetError(result));
-
-    result = Dart_LoadScript(url, Dart_Null(), error, 0, 0);
-    EXPECT(Dart_IsError(result));
-    EXPECT_STREQ("incoming error", Dart_GetError(result));
-  }
-
-  // Load a script successfully.
-  Dart_Handle root_lib = TestCase::LoadTestScript(kScriptChars, NULL);
-  EXPECT_VALID(root_lib);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  result = Dart_Invoke(root_lib, NewString("main"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  int64_t value = 0;
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(12345, value);
-
-  // Further calls to LoadScript are errors.
-  result = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_SUBSTRING("Dart_LoadScript: A script has already been loaded from",
-                   Dart_GetError(result));
-}
-
 TEST_CASE(DartAPI_RootLibrary) {
   const char* kScriptChars =
       "library testlib;"
@@ -5868,52 +5814,6 @@
   EXPECT(Dart_IsNull(root_lib));  // Root library did change.
 }
 
-static int index = 0;
-
-static Dart_Handle import_library_handler(Dart_LibraryTag tag,
-                                          Dart_Handle library,
-                                          Dart_Handle url) {
-  if (tag == Dart_kCanonicalizeUrl) {
-    return url;
-  }
-  EXPECT(Dart_IsString(url));
-  const char* cstr = NULL;
-  EXPECT_VALID(Dart_StringToCString(url, &cstr));
-  switch (index) {
-    case 0:
-      EXPECT_STREQ("./weird.dart", cstr);
-      break;
-    case 1:
-      EXPECT_STREQ("abclaladef", cstr);
-      break;
-    case 2:
-      EXPECT_STREQ("winner", cstr);
-      break;
-    case 3:
-      EXPECT_STREQ("abclaladef/extra_weird.dart", cstr);
-      break;
-    case 4:
-      EXPECT_STREQ("winnerwinner", cstr);
-      break;
-    default:
-      EXPECT(false);
-      return Api::NewError("invalid callback");
-  }
-  index += 1;
-  return Api::Success();
-}
-
-TEST_CASE(DartAPI_LoadScript_CompileError) {
-  const char* kScriptChars = ")";
-  Dart_Handle result = Dart_SetLibraryTagHandler(import_library_handler);
-  EXPECT_VALID(result);
-  result = LoadScript(TestCase::url(), kScriptChars);
-  EXPECT(Dart_IsError(result));
-  if (!FLAG_use_dart_frontend) {
-    EXPECT(strstr(Dart_GetError(result), "unexpected token ')'"));
-  }
-}
-
 TEST_CASE(DartAPI_LookupLibrary) {
   const char* kScriptChars =
       "import 'library1_dart';"
@@ -5927,27 +5827,12 @@
   Dart_Handle result;
 
   // Create a test library and load up a test script in it.
-  if (FLAG_use_dart_frontend) {
-    TestCase::AddTestLib("file:///library1_dart", kLibrary1Chars);
-    // LoadTestScript resets the LibraryTagHandler, which we don't want when
-    // using the VM compiler, so we only use it with the Dart frontend for this
-    // test.
-    result = TestCase::LoadTestScript(kScriptChars, NULL, TestCase::url());
-    EXPECT_VALID(result);
-  } else {
-    Dart_Handle source = NewString(kScriptChars);
-    url = NewString(TestCase::url());
-
-    result = Dart_SetLibraryTagHandler(library_handler);
-    EXPECT_VALID(result);
-
-    result = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-
-    url = NewString(kLibrary1);
-    source = NewString(kLibrary1Chars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-  }
+  TestCase::AddTestLib("file:///library1_dart", kLibrary1Chars);
+  // LoadTestScript resets the LibraryTagHandler, which we don't want when
+  // using the VM compiler, so we only use it with the Dart frontend for this
+  // test.
+  result = TestCase::LoadTestScript(kScriptChars, NULL, TestCase::url());
+  EXPECT_VALID(result);
 
   url = NewString(kLibrary1);
   result = Dart_LookupLibrary(url);
@@ -6004,552 +5889,6 @@
   EXPECT_SUBSTRING("library1_url", cstr);
 }
 
-TEST_CASE(DartAPI_LibraryImportLibrary) {
-  const char* kLibrary1Chars = "library library1_name;";
-  const char* kLibrary2Chars = "library library2_name;";
-  Dart_Handle error = Dart_NewApiError("incoming error");
-  Dart_Handle result;
-
-  Dart_Handle lib1 = TestCase::LoadTestLibrary("library1_url", kLibrary1Chars);
-  EXPECT_VALID(lib1);
-
-  Dart_Handle lib2 = TestCase::LoadTestLibrary("library2_url", kLibrary2Chars);
-  EXPECT_VALID(lib2);
-
-  result = Dart_LibraryImportLibrary(Dart_Null(), lib2, Dart_Null());
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LibraryImportLibrary expects argument 'library' to be non-null.",
-      Dart_GetError(result));
-
-  result = Dart_LibraryImportLibrary(Dart_True(), lib2, Dart_Null());
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LibraryImportLibrary expects argument 'library' to be of "
-      "type Library.",
-      Dart_GetError(result));
-
-  result = Dart_LibraryImportLibrary(error, lib2, Dart_Null());
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LibraryImportLibrary(lib1, Dart_Null(), Dart_Null());
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LibraryImportLibrary expects argument 'import' to be non-null.",
-      Dart_GetError(result));
-
-  result = Dart_LibraryImportLibrary(lib1, Dart_True(), Dart_Null());
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LibraryImportLibrary expects argument 'import' to be of "
-      "type Library.",
-      Dart_GetError(result));
-
-  result = Dart_LibraryImportLibrary(lib1, error, Dart_Null());
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LibraryImportLibrary(lib1, lib2, Dart_Null());
-  EXPECT_VALID(result);
-}
-
-TEST_CASE(DartAPI_ImportLibraryWithPrefix) {
-  if (FLAG_use_dart_frontend) {
-    // Not a valid test as it is not possible to load a script with unresolved
-    // references.
-    EXPECT(Dart_True());
-    return;
-  }
-
-  Dart_Handle lib2;
-  Dart_Handle result;
-  const char* kLibrary1Chars =
-      "library library1_name;"
-      "int bar() => 42;";
-  Dart_Handle url1 = NewString("library1_url");
-  Dart_Handle source1 = NewString(kLibrary1Chars);
-  Dart_Handle lib1 = Dart_LoadLibrary(url1, Dart_Null(), source1, 0, 0);
-  EXPECT_VALID(lib1);
-  EXPECT(Dart_IsLibrary(lib1));
-
-  const char* kLibrary2Chars =
-      "library library2_name;"
-      "int foobar() => foo.bar();";
-  Dart_Handle url2 = NewString("library2_url");
-  Dart_Handle source2 = NewString(kLibrary2Chars);
-  lib2 = Dart_LoadLibrary(url2, Dart_Null(), source2, 0, 0);
-  EXPECT_VALID(lib2);
-  EXPECT(Dart_IsLibrary(lib2));
-
-  Dart_Handle prefix = NewString("foo");
-  result = Dart_LibraryImportLibrary(lib2, lib1, prefix);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  // Lib1 is imported under a library prefix and therefore 'foo' should
-  // not be found directly in lib2.
-  Dart_Handle method_name = NewString("foo");
-  result = Dart_Invoke(lib2, method_name, 0, NULL);
-  EXPECT_ERROR(result, "NoSuchMethodError: No top-level method 'foo' declared");
-
-  // Check that lib1 is available under the prefix in lib2.
-  method_name = NewString("foobar");
-  result = Dart_Invoke(lib2, method_name, 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  int64_t value = 0;
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(42, value);
-}
-
-TEST_CASE(DartAPI_LoadLibrary) {
-  const char* kLibrary1Chars = "library library1_name;";
-  Dart_Handle error = Dart_NewApiError("incoming error");
-  Dart_Handle result;
-
-  Dart_Handle url = NewString("library1_url");
-  Dart_Handle source = NewString(kLibrary1Chars);
-
-  result = Dart_LoadLibrary(Dart_Null(), Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadLibrary expects argument 'url' to be non-null.",
-               Dart_GetError(result));
-
-  result = Dart_LoadLibrary(Dart_True(), Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadLibrary expects argument 'url' to be of type String.",
-               Dart_GetError(result));
-
-  result = Dart_LoadLibrary(error, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LoadLibrary(url, Dart_True(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LoadLibrary expects argument 'resolved_url' to be of type String.",
-      Dart_GetError(result));
-
-  result = Dart_LoadLibrary(url, error, source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LoadLibrary(url, Dart_Null(), Dart_Null(), 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadLibrary expects argument 'source' to be non-null.",
-               Dart_GetError(result));
-
-  result = Dart_LoadLibrary(url, Dart_Null(), Dart_True(), 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LoadLibrary expects argument 'source' to be of type String.",
-      Dart_GetError(result));
-
-  result = Dart_LoadLibrary(url, Dart_Null(), error, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  // Success.
-  result = TestCase::LoadTestLibrary("library1_url", kLibrary1Chars);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsLibrary(result));
-
-  // Duplicate library load fails.
-  result = TestCase::LoadTestLibrary("library1_url", kLibrary1Chars);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LoadLibrary: library 'library1_url' has already been loaded.",
-      Dart_GetError(result));
-}
-
-TEST_CASE(DartAPI_LoadLibrary_CompileError) {
-  const char* kLibrary1Chars =
-      "library library1_name;"
-      ")";
-  Dart_Handle result =
-      TestCase::LoadTestLibrary("library1_url", kLibrary1Chars);
-  EXPECT(Dart_IsError(result));
-  if (!FLAG_use_dart_frontend) {
-    EXPECT(strstr(Dart_GetError(result), "unexpected token ')'"));
-  } else {
-    EXPECT_SUBSTRING("Expected a declaration, but got ')'",
-                     Dart_GetError(result));
-  }
-}
-
-TEST_CASE(DartAPI_LoadSource) {
-  const char* kLibrary1Chars = "library library1_name;";
-  const char* kSourceChars = "part of library1_name;\n// Something innocuous";
-  const char* kBadSourceChars = ")";
-  Dart_Handle error = Dart_NewApiError("incoming error");
-  Dart_Handle result;
-
-  // Load up a library.
-  Dart_Handle url = NewString("library1_url");
-  Dart_Handle source = NewString(kLibrary1Chars);
-  Dart_Handle lib = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(lib);
-  EXPECT(Dart_IsLibrary(lib));
-
-  url = NewString("source_url");
-  source = NewString(kSourceChars);
-
-  result = Dart_LoadSource(Dart_Null(), url, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadSource expects argument 'library' to be non-null.",
-               Dart_GetError(result));
-
-  result = Dart_LoadSource(Dart_True(), url, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LoadSource expects argument 'library' to be of type Library.",
-      Dart_GetError(result));
-
-  result = Dart_LoadSource(error, url, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, Dart_Null(), Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadSource expects argument 'url' to be non-null.",
-               Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, Dart_True(), Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadSource expects argument 'url' to be of type String.",
-               Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, error, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, url, Dart_True(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LoadSource expects argument 'resolved_url' to be of type String.",
-      Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, url, error, source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, url, Dart_Null(), Dart_Null(), 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("Dart_LoadSource expects argument 'source' to be non-null.",
-               Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, url, Dart_Null(), Dart_True(), 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ(
-      "Dart_LoadSource expects argument 'source' to be of type String.",
-      Dart_GetError(result));
-
-  result = Dart_LoadSource(lib, error, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-  EXPECT_STREQ("incoming error", Dart_GetError(result));
-
-  // Success.
-  result = Dart_LoadSource(lib, url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsLibrary(result));
-  EXPECT(Dart_IdentityEquals(lib, result));
-
-  // Duplicate calls are okay.
-  result = Dart_LoadSource(lib, url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsLibrary(result));
-  EXPECT(Dart_IdentityEquals(lib, result));
-
-  // Language errors are detected.
-  source = NewString(kBadSourceChars);
-  result = Dart_LoadSource(lib, url, Dart_Null(), source, 0, 0);
-  EXPECT(Dart_IsError(result));
-}
-
-TEST_CASE(DartAPI_LoadSource_LateLoad) {
-  const char* kLibrary1Chars =
-      "library library1_name;\n"
-      "class OldClass {\n"
-      "  foo() => 'foo';\n"
-      "}\n";
-  const char* kSourceChars =
-      "part of library1_name;\n"
-      "class NewClass extends OldClass{\n"
-      "  bar() => 'bar';\n"
-      "}\n";
-  Dart_Handle url = NewString("library1_url");
-  Dart_Handle source = NewString(kLibrary1Chars);
-  Dart_Handle lib = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(lib);
-  EXPECT(Dart_IsLibrary(lib));
-  Dart_Handle result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  // Call a dynamic function on OldClass.
-  Dart_Handle type = Dart_GetType(lib, NewString("OldClass"), 0, NULL);
-  EXPECT_VALID(type);
-  Dart_Handle recv = Dart_New(type, Dart_Null(), 0, NULL);
-  result = Dart_Invoke(recv, NewString("foo"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsString(result));
-  const char* result_cstr = "";
-  EXPECT_VALID(Dart_StringToCString(result, &result_cstr));
-  EXPECT_STREQ("foo", result_cstr);
-
-  // Load a source file late.
-  url = NewString("source_url");
-  source = NewString(kSourceChars);
-  EXPECT_VALID(Dart_LoadSource(lib, url, Dart_Null(), source, 0, 0));
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  // Call a dynamic function on NewClass in the updated library.
-  type = Dart_GetType(lib, NewString("NewClass"), 0, NULL);
-  EXPECT_VALID(type);
-  recv = Dart_New(type, Dart_Null(), 0, NULL);
-  result = Dart_Invoke(recv, NewString("bar"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsString(result));
-  result_cstr = "";
-  EXPECT_VALID(Dart_StringToCString(result, &result_cstr));
-  EXPECT_STREQ("bar", result_cstr);
-}
-
-TEST_CASE(DartAPI_LoadPatch) {
-  const char* kLibrary1Chars = "library library1_name;";
-  const char* kSourceChars =
-      "part of library1_name;\n"
-      "external int foo();";
-  const char* kPatchChars = "@patch int foo() => 42;";
-
-  // Load up a library.
-  Dart_Handle url = NewString("library1_url");
-  Dart_Handle source = NewString(kLibrary1Chars);
-  Dart_Handle lib = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(lib);
-  EXPECT(Dart_IsLibrary(lib));
-
-  url = NewString("source_url");
-  source = NewString(kSourceChars);
-
-  Dart_Handle result = Dart_LoadSource(lib, url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(result);
-
-  url = NewString("patch_url");
-  source = NewString(kPatchChars);
-
-  result = Dart_LibraryLoadPatch(lib, url, source);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  result = Dart_Invoke(lib, NewString("foo"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  int64_t value = 0;
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(42, value);
-}
-
-static void PatchNativeFunction(Dart_NativeArguments args) {
-  Dart_EnterScope();
-  Dart_SetReturnValue(args, Dart_Null());
-  Dart_ExitScope();
-}
-
-static Dart_NativeFunction PatchNativeResolver(Dart_Handle name,
-                                               int arg_count,
-                                               bool* auto_setup_scope) {
-  ASSERT(auto_setup_scope != NULL);
-  *auto_setup_scope = false;
-  return &PatchNativeFunction;
-}
-
-TEST_CASE(DartAPI_ParsePatchLibrary) {
-  const char* kLibraryChars =
-      "library patched_library;\n"
-      "class A {\n"
-      "  final fvalue;\n"
-      "  var _f;\n"
-      "  callFunc(x, y) => x(y);\n"
-      "  external void method(var value);\n"
-      "  get field => _field;\n"
-      "}\n"
-      "class B {\n"
-      "  var val;\n"
-      "  external B.named(x);\n"
-      "  external B(v);\n"
-      "}\n"
-      "class C {\n"
-      "  external int method();\n"
-      "}\n"
-      "\n"
-      "external int unpatched();\n"
-      "external int topLevel(var value);\n"
-      "external int topLevel2(var value);\n"
-      "external int get topLevelGetter;\n"
-      "external void set topLevelSetter(int value);\n";
-
-  const char* kPatchChars =
-      "@patch class A {\n"
-      "  var _g;\n"
-      "  A() : fvalue = 13;\n"
-      "  get _field => _g;\n"
-      "  @patch void method(var value) {\n"
-      "    int closeYourEyes(var eggs) { return eggs * -1; }\n"
-      "    value = callFunc(closeYourEyes, value);\n"
-      "    _g = value * 5;\n"
-      "  }\n"
-      "}\n"
-      "@patch class B {\n"
-      "  B._internal(x) : val = x;\n"
-      "  @patch factory B.named(x) { return new B._internal(x); }\n"
-      "  @patch factory B(v) native \"const_B_factory\";\n"
-      "}\n"
-      "var _topLevelValue = -1;\n"
-      "@patch int topLevel(var value) => value * value;\n"
-      "@patch int set topLevelSetter(value) { _topLevelValue = value; }\n"
-      "@patch int get topLevelGetter => 2 * _topLevelValue;\n"
-      // Allow top level methods named patch.
-      "patch(x) => x*3;\n";  // NOLINT
-
-  const char* kPatchClassOnlyChars =
-      "@patch class C {\n"
-      "  @patch int method() {\n"
-      "    return 42;\n"
-      "  }\n"
-      "}\n";  // NOLINT
-
-  const char* kPatchNoClassChars = "@patch topLevel2(x) => x * 2;\n";
-
-  const char* kScriptChars =
-      "import 'theLibrary';\n"
-      "e1() => unpatched();\n"
-      "m1() => topLevel(2);\n"
-      "m2() {\n"
-      "  topLevelSetter = 20;\n"
-      "  return topLevelGetter;\n"
-      "}\n"
-      "m3() => patch(7);\n"
-      "m4() {\n"
-      "  var a = new A();\n"
-      "  a.method(5);\n"
-      "  return a.field;\n"
-      "}\n"
-      "m5() => new B(3);\n"
-      "m6() {\n"
-      "  var b = new B.named(8);\n"
-      "  return b.val;\n"
-      "}\n";  // NOLINT
-
-  bin::Builtin::SetNativeResolver(bin::Builtin::kBuiltinLibrary);
-  bin::Builtin::SetNativeResolver(bin::Builtin::kIOLibrary);
-  bin::Builtin::SetNativeResolver(bin::Builtin::kCLILibrary);
-
-  Dart_Handle result = Dart_SetLibraryTagHandler(library_handler);
-  EXPECT_VALID(result);
-
-  Dart_Handle url = NewString("theLibrary");
-  Dart_Handle source = NewString(kLibraryChars);
-  result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(result);
-
-  {
-    TransitionNativeToVM transition(thread);
-    const char* patchNames[] = {"main library patch", "patch class only",
-                                "patch no class"};
-    const char* patches[] = {kPatchChars, kPatchClassOnlyChars,
-                             kPatchNoClassChars};
-    const String& lib_url = String::Handle(String::New("theLibrary"));
-
-    const Library& lib =
-        Library::Handle(Library::LookupLibrary(thread, lib_url));
-
-    for (int i = 0; i < 3; i++) {
-      const String& patch_url = String::Handle(String::New(patchNames[i]));
-      const String& patch_source = String::Handle(String::New(patches[i]));
-      const Script& patch_script = Script::Handle(
-          Script::New(patch_url, patch_source, RawScript::kPatchTag));
-
-      const Error& err = Error::Handle(lib.Patch(patch_script));
-      if (!err.IsNull()) {
-        OS::PrintErr("Patching error: %s\n", err.ToErrorCString());
-        EXPECT(false);
-      }
-    }
-  }
-  result = Dart_SetNativeResolver(result, &PatchNativeResolver, NULL);
-  EXPECT_VALID(result);
-
-  Dart_Handle script_url = NewString("theScript");
-  source = NewString(kScriptChars);
-  Dart_Handle test_script =
-      Dart_LoadScript(script_url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(test_script);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  // Make sure that we can compile all of the patched code.
-  result = Dart_CompileAll();
-  EXPECT_VALID(result);
-
-  result = Dart_Invoke(test_script, NewString("e1"), 0, NULL);
-  EXPECT_ERROR(result, "No top-level method 'unpatched'");
-
-  int64_t value = 0;
-  result = Dart_Invoke(test_script, NewString("m1"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(4, value);
-
-  value = 0;
-  result = Dart_Invoke(test_script, NewString("m2"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(40, value);
-
-  value = 0;
-  result = Dart_Invoke(test_script, NewString("m3"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(21, value);
-
-  value = 0;
-  result = Dart_Invoke(test_script, NewString("m4"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(-25, value);
-
-  result = Dart_Invoke(test_script, NewString("m5"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsNull(result));
-
-  value = 0;
-  result = Dart_Invoke(test_script, NewString("m6"), 0, NULL);
-  EXPECT_VALID(result);
-  EXPECT(Dart_IsInteger(result));
-  EXPECT_VALID(Dart_IntegerToInt64(result, &value));
-  EXPECT_EQ(8, value);
-
-  {
-    TransitionNativeToVM transition(thread);
-    // Make sure all source files show up in the patched library.
-    const String& lib_url = String::Handle(String::New("theLibrary"));
-
-    const Library& lib =
-        Library::Handle(Library::LookupLibrary(thread, lib_url));
-
-    const Array& lib_scripts = Array::Handle(lib.LoadedScripts());
-    EXPECT_EQ(4, lib_scripts.Length());
-  }
-}
-
 static void MyNativeFunction1(Dart_NativeArguments args) {
   Dart_EnterScope();
   Dart_SetReturnValue(args, Dart_NewInteger(654321));
@@ -6673,34 +6012,16 @@
   Dart_Handle lib;
 
   // Create a test library and Load up a test script in it.
-  if (FLAG_use_dart_frontend) {
-    Dart_SourceFile sourcefiles[] = {
-        {RESOLVED_USER_TEST_URI, kScriptChars},
-        {"file:///library1_dart", kLibrary1Chars},
-        {"file:///library2_dart", kLibrary2Chars},
-    };
-    int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
-    lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
-                                          true);
-    EXPECT_VALID(lib);
-  } else {
-    Dart_Handle url = NewString(TestCase::url());
-    Dart_Handle source = NewString(kScriptChars);
-    result = Dart_SetLibraryTagHandler(library_handler);
-    EXPECT_VALID(result);
-    lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(lib);
+  Dart_SourceFile sourcefiles[] = {
+      {RESOLVED_USER_TEST_URI, kScriptChars},
+      {"file:///library1_dart", kLibrary1Chars},
+      {"file:///library2_dart", kLibrary2Chars},
+  };
+  int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
+  lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
+                                        true);
+  EXPECT_VALID(lib);
 
-    url = NewString("library1_dart");
-    source = NewString(kLibrary1Chars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-
-    url = NewString("library2_dart");
-    source = NewString(kLibrary2Chars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-  }
   result = Dart_FinalizeLoading(false);
   EXPECT_VALID(result);
   result = Dart_Invoke(lib, NewString("main"), 0, NULL);
@@ -6725,37 +6046,19 @@
   Dart_Handle lib;
 
   // Create a test library and Load up a test script in it.
-  if (FLAG_use_dart_frontend) {
-    Dart_SourceFile sourcefiles[] = {
-        {RESOLVED_USER_TEST_URI, kScriptChars},
-        {"file:///library2_dart", kLibrary2Chars},
-        {"file:///library1_dart", kLibrary1Chars},
-    };
-    int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
-    lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
-                                          true);
-    EXPECT_ERROR(lib,
-                 "Compilation failed file:///test-lib:4:10:"
-                 " Error: Setter not found: 'foo'");
-    return;
-  } else {
-    Dart_Handle url = NewString(TestCase::url());
-    Dart_Handle source = NewString(kScriptChars);
-    result = Dart_SetLibraryTagHandler(library_handler);
-    EXPECT_VALID(result);
-    lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(lib);
+  Dart_SourceFile sourcefiles[] = {
+      {RESOLVED_USER_TEST_URI, kScriptChars},
+      {"file:///library2_dart", kLibrary2Chars},
+      {"file:///library1_dart", kLibrary1Chars},
+  };
+  int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
+  lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
+                                        true);
+  EXPECT_ERROR(lib,
+               "Compilation failed file:///test-lib:4:10:"
+               " Error: Setter not found: 'foo'");
+  return;
 
-    url = NewString("library2_dart");
-    source = NewString(kLibrary2Chars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-
-    url = NewString("library1_dart");
-    source = NewString(kLibrary1Chars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-  }
   result = Dart_FinalizeLoading(false);
   EXPECT_VALID(result);
   result = Dart_Invoke(lib, NewString("main"), 0, NULL);
@@ -6780,34 +6083,16 @@
   Dart_Handle lib;
 
   // Create a test library and Load up a test script in it.
-  if (FLAG_use_dart_frontend) {
-    Dart_SourceFile sourcefiles[] = {
-        {RESOLVED_USER_TEST_URI, kScriptChars},
-        {"file:///library2_dart", kLibrary2Chars},
-        {"file:///library1_dart", kLibrary1Chars},
-    };
-    int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
-    lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
-                                          true);
-    EXPECT_VALID(lib);
-  } else {
-    Dart_Handle url = NewString(TestCase::url());
-    Dart_Handle source = NewString(kScriptChars);
-    result = Dart_SetLibraryTagHandler(library_handler);
-    EXPECT_VALID(result);
-    lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(lib);
+  Dart_SourceFile sourcefiles[] = {
+      {RESOLVED_USER_TEST_URI, kScriptChars},
+      {"file:///library2_dart", kLibrary2Chars},
+      {"file:///library1_dart", kLibrary1Chars},
+  };
+  int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
+  lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
+                                        true);
+  EXPECT_VALID(lib);
 
-    url = NewString("library2_dart");
-    source = NewString(kLibrary2Chars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-
-    url = NewString("library1_dart");
-    source = NewString(kLibrary1Chars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-  }
   result = Dart_FinalizeLoading(false);
   EXPECT_VALID(result);
   result = Dart_Invoke(lib, NewString("main"), 0, NULL);
@@ -6830,27 +6115,15 @@
   Dart_Handle lib;
 
   // Create a test library and Load up a test script in it.
-  if (FLAG_use_dart_frontend) {
-    Dart_SourceFile sourcefiles[] = {
-        {RESOLVED_USER_TEST_URI, kScriptChars},
-        {"file:///lib.dart", kLibraryChars},
-    };
-    int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
-    lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
-                                          true);
-    EXPECT_VALID(lib);
-  } else {
-    Dart_Handle url = NewString(TestCase::url());
-    Dart_Handle source = NewString(kScriptChars);
-    result = Dart_SetLibraryTagHandler(library_handler);
-    EXPECT_VALID(result);
-    lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(lib);
-    url = NewString("lib.dart");
-    source = NewString(kLibraryChars);
-    result = Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(result);
-  }
+  Dart_SourceFile sourcefiles[] = {
+      {RESOLVED_USER_TEST_URI, kScriptChars},
+      {"file:///lib.dart", kLibraryChars},
+  };
+  int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
+  lib = TestCase::LoadTestScriptWithDFE(sourcefiles_count, sourcefiles, NULL,
+                                        true);
+  EXPECT_VALID(lib);
+
   result = Dart_FinalizeLoading(false);
   EXPECT_VALID(result);
   result = Dart_Invoke(lib, NewString("main"), 0, NULL);
@@ -6865,15 +6138,10 @@
   Dart_Handle result;
   Dart_Handle lib;
 
-  // This tests only makes sense when dart frontend is used
-  if (!FLAG_use_dart_frontend) {
-    return;
-  }
-
   Dart_SourceFile sourcefiles[] = {
       {"file:///bar/main.dart", kScriptChars},
       {"file:///baz/lib.dart", kLibraryChars},
-      {"file:///bar/.packages", "untitled:/"},
+      {"file:///bar/.packages", ""},
   };
   int sourcefiles_count = sizeof(sourcefiles) / sizeof(Dart_SourceFile);
   lib = TestCase::LoadTestScriptWithDFE(
@@ -6911,11 +6179,6 @@
   const char* kLibraryChars = "library lib.dart;\n";
   Dart_Handle lib;
 
-  // This tests only makes sense when dart frontend is used
-  if (!FLAG_use_dart_frontend) {
-    return;
-  }
-
   Dart_SourceFile sourcefiles[] = {
       {"file:///bar/main.dart", kScriptChars},
       {"file:///baz/lib.dart", kLibraryChars},
@@ -7288,82 +6551,6 @@
   RunLoopTest(true);
 }
 
-// Utility functions and variables for test case IsolateInterrupt starts here.
-static Monitor* sync = NULL;
-static Dart_Isolate shared_isolate = NULL;
-static bool main_entered = false;
-
-void MarkMainEntered(Dart_NativeArguments args) {
-  Dart_EnterScope();  // Start a Dart API scope for invoking API functions.
-  // Indicate that main has been entered.
-  {
-    MonitorLocker ml(sync);
-    main_entered = true;
-    ml.Notify();
-  }
-  Dart_SetReturnValue(args, Dart_Null());
-  Dart_ExitScope();
-}
-
-static Dart_NativeFunction IsolateInterruptTestNativeLookup(
-    Dart_Handle name,
-    int argument_count,
-    bool* auto_setup_scope) {
-  ASSERT(auto_setup_scope != NULL);
-  *auto_setup_scope = false;
-  return reinterpret_cast<Dart_NativeFunction>(&MarkMainEntered);
-}
-
-void BusyLoop_start(uword unused) {
-  const char* kScriptChars =
-      "class Native {\n"
-      "  static void markMainEntered() native 'MarkMainEntered';\n"
-      "}\n"
-      "\n"
-      "void main() {\n"
-      "  Native.markMainEntered();\n"
-      "  while (true) {\n"  // Infinite empty loop.
-      "  }\n"
-      "}\n";
-
-  // Tell the other thread that shared_isolate is created.
-  Dart_Handle lib;
-  {
-    MonitorLocker ml(sync);
-    TestCase::CreateTestIsolate();
-    EXPECT(shared_isolate != NULL);
-    Dart_EnterScope();
-    Dart_Handle url = NewString(TestCase::url());
-    Dart_Handle source = NewString(kScriptChars);
-    Dart_Handle result = Dart_SetLibraryTagHandler(TestCase::library_handler);
-    EXPECT_VALID(result);
-    lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-    EXPECT_VALID(lib);
-    result = Dart_FinalizeLoading(false);
-    EXPECT_VALID(result);
-    result =
-        Dart_SetNativeResolver(lib, &IsolateInterruptTestNativeLookup, NULL);
-    DART_CHECK_VALID(result);
-
-    ml.Notify();
-  }
-
-  Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
-  EXPECT(Dart_IsError(result));
-  EXPECT(Dart_ErrorHasException(result));
-  EXPECT_SUBSTRING("Unhandled exception:\nfoo\n", Dart_GetError(result));
-
-  Dart_ExitScope();
-  Dart_ShutdownIsolate();
-
-  // Tell the other thread that we are done.
-  {
-    MonitorLocker ml(sync);
-    shared_isolate = NULL;
-    ml.Notify();
-  }
-}
-
 static void* shutdown_callback_data;
 static void IsolateShutdownTestCallback(void* callback_data) {
   shutdown_callback_data = callback_data;
@@ -8221,49 +7408,6 @@
   }
 }
 
-TEST_CASE(DartAPI_LazyLoadDeoptimizes) {
-  const char* kLoadFirst =
-      "library L;\n"
-      "start(a) {\n"
-      "  var obj = (a == 1) ? createB() : new A();\n"
-      "  for (int i = 0; i < 4000; i++) {\n"
-      "    var res = obj.foo();\n"
-      "    if (a == 1) { if (res != 1) throw 'Error'; }\n"
-      "    else if (res != 2) throw 'Error'; \n"
-      "  }\n"
-      "}\n"
-      "\n"
-      "createB() => new B();"
-      "\n"
-      "class A {\n"
-      "  foo() => goo();\n"
-      "  goo() => 2;\n"
-      "}\n";
-  const char* kLoadSecond =
-      "part of L;"
-      "class B extends A {\n"
-      "  goo() => 1;\n"
-      "}\n";
-  Dart_Handle result;
-  // Create a test library and Load up a test script in it.
-  Dart_Handle lib1 = TestCase::LoadTestScript(kLoadFirst, NULL);
-  Dart_Handle dart_args[1];
-  dart_args[0] = Dart_NewInteger(0);
-  result = Dart_Invoke(lib1, NewString("start"), 1, dart_args);
-  EXPECT_VALID(result);
-
-  Dart_Handle source = NewString(kLoadSecond);
-  Dart_Handle url = NewString(TestCase::url());
-  result = Dart_LoadSource(TestCase::lib(), url, Dart_Null(), source, 0, 0);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-
-  dart_args[0] = Dart_NewInteger(1);
-  result = Dart_Invoke(lib1, NewString("start"), 1, dart_args);
-  EXPECT_VALID(result);
-}
-
 TEST_CASE(DartAPI_ExternalStringIndexOf) {
   const char* kScriptChars =
       "main(String pattern) {\n"
@@ -8947,130 +8091,6 @@
   EXPECT(stop_called);
 }
 
-TEST_CASE(DartAPI_LoadLibraryPatch_1) {
-  const char* kScriptChars1 =
-      "class A {\n"
-      "  int foo() { return 10; }\n"
-      "  external int zoo();\n"
-      "  external static int moo();\n"
-      "}\n"
-      "main() { new A().foo(); }\n"
-      "foozoo() { new A().zoo(); }\n"
-      "foomoo() { A.moo(); }\n";
-
-  const char* kScriptChars2 =
-      "@patch class A {\n"
-      "  @patch int zoo() { return 1; }\n"
-      "  @patch static int moo() { return 1; }\n"
-      "}\n";
-
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars1, NULL);
-  Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
-  EXPECT_VALID(result);
-  Dart_Handle url = NewString("test-lib-patch");
-  Dart_Handle source = NewString(kScriptChars2);
-  result = Dart_LibraryLoadPatch(lib, url, source);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-  result = Dart_Invoke(lib, NewString("foozoo"), 0, NULL);
-  EXPECT_VALID(result);
-  result = Dart_Invoke(lib, NewString("foomoo"), 0, NULL);
-  EXPECT_VALID(result);
-}
-
-TEST_CASE(DartAPI_LoadLibraryPatch_Error1) {
-  const char* kScriptChars1 =
-      "class A {\n"
-      "  int foo() { return 10; }\n"
-      "  external int zoo();\n"
-      "}\n"
-      "main() { new A().foo(); }\n"
-      "foozoo() { new A().zoo(); }\n";
-
-  const char* kScriptChars2 =
-      "@patch class A {\n"
-      "  @patch int zoo() { return 1; }\n"
-      "  @patch int fld1;\n"
-      "}\n";
-
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars1, NULL);
-  Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
-  EXPECT_VALID(result);
-  Dart_Handle url = NewString("test-lib-patch");
-  Dart_Handle source = NewString(kScriptChars2);
-  // We don't expect to be able to patch in this case as new fields
-  // are being added.
-  result = Dart_LibraryLoadPatch(lib, url, source);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-  result = Dart_Invoke(lib, NewString("foozoo"), 0, NULL);
-  EXPECT(Dart_IsError(result));
-}
-
-TEST_CASE(DartAPI_LoadLibraryPatch_Error2) {
-  const char* kScriptChars1 =
-      "class A {\n"
-      "  int foo() { return 10; }\n"
-      "  int zoo() { return 20; }\n"
-      "}\n"
-      "main() { new A().foo(); }\n"
-      "foozoo() { new A().zoo(); }\n";
-
-  const char* kScriptChars2 =
-      "@patch class A {\n"
-      "  @patch int zoo() { return 1; }\n"
-      "}\n";
-
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars1, NULL);
-  Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
-  EXPECT_VALID(result);
-  Dart_Handle url = NewString("test-lib-patch");
-  Dart_Handle source = NewString(kScriptChars2);
-  // We don't expect to be able to patch in this case as a non external
-  // method is being patched.
-  result = Dart_LibraryLoadPatch(lib, url, source);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-  result = Dart_Invoke(lib, NewString("foozoo"), 0, NULL);
-  EXPECT(Dart_IsError(result));
-  OS::PrintErr("Patched class executed\n");
-}
-
-TEST_CASE(DartAPI_LoadLibraryPatch_Error3) {
-  const char* kScriptChars1 =
-      "class A {\n"
-      "  int foo() { return 10; }\n"
-      "  external int zoo();\n"
-      "}\n"
-      "main() { new A().foo(); }\n"
-      "foozoo() { new A().zoo(); }\n";
-
-  const char* kScriptChars2 =
-      "@patch class A {\n"
-      "  @patch int zoo() { return 1; }\n"
-      "}\n";
-
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars1, NULL);
-  Dart_Handle result = Dart_Invoke(lib, NewString("main"), 0, NULL);
-  // We invoke the foozoo method to ensure that code for 'zoo' is generated
-  // which throws NoSuchMethod.
-  result = Dart_Invoke(lib, NewString("foozoo"), 0, NULL);
-  EXPECT(Dart_IsError(result));
-  Dart_Handle url = NewString("test-lib-patch");
-  Dart_Handle source = NewString(kScriptChars2);
-  // We don't expect to be able to patch in this case as the function being
-  // patched has already executed.
-  result = Dart_LibraryLoadPatch(lib, url, source);
-  EXPECT_VALID(result);
-  result = Dart_FinalizeLoading(false);
-  EXPECT_VALID(result);
-  result = Dart_Invoke(lib, NewString("foozoo"), 0, NULL);
-  EXPECT(Dart_IsError(result));
-}
-
 void NotifyIdleShortNative(Dart_NativeArguments args) {
   Dart_NotifyIdle(Dart_TimelineGetMicros() + 10 * kMicrosecondsPerMillisecond);
 }
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index c9a2374..bbdd04f 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -863,7 +863,7 @@
   handlers = code().exception_handlers();
   ASSERT(!handlers.IsNull());
   intptr_t num_handlers_checked = 0;
-  while (try_index != CatchClauseNode::kInvalidTryIndex) {
+  while (try_index != kInvalidTryIndex) {
     // Detect circles in the exception handler data.
     num_handlers_checked++;
     ASSERT(num_handlers_checked <= handlers.num_entries());
@@ -971,7 +971,7 @@
     if (iter.TokenPos() == token_pos_) {
       // Match the lowest try index at this token position.
       // TODO(johnmccutchan): Is this heuristic precise enough?
-      if (iter.TryIndex() != CatchClauseNode::kInvalidTryIndex) {
+      if (iter.TryIndex() != kInvalidTryIndex) {
         if ((try_index_ == -1) || (iter.TryIndex() < try_index_)) {
           try_index_ = iter.TryIndex();
         }
@@ -2112,6 +2112,16 @@
   return stack_trace;
 }
 
+#if !defined(DART_PRECOMPILED_RUNTIME)
+static bool CheckAndSkipAsync(int skip_sync_async_frames_count,
+                              const String& function_name) {
+  return (skip_sync_async_frames_count == 2 &&
+          function_name.Equals(Symbols::_ClosureCall())) ||
+         (skip_sync_async_frames_count == 1 &&
+          function_name.Equals(Symbols::_AsyncAwaitCompleterStart()));
+}
+#endif
+
 DebuggerStackTrace* Debugger::CollectAwaiterReturnStackTrace() {
 #if defined(DART_PRECOMPILED_RUNTIME)
   // Causal async stacks are not supported in the AOT runtime.
@@ -2142,7 +2152,7 @@
   bool stack_has_async_function = false;
 
   // Number of frames we are trying to skip that form "sync async" entry.
-  int skipSyncAsyncFramesCount = -1;
+  int skip_sync_async_frames_count = -1;
   String& function_name = String::Handle(zone);
   for (StackFrame* frame = iterator.NextFrame(); frame != NULL;
        frame = iterator.NextFrame()) {
@@ -2151,35 +2161,30 @@
       OS::PrintErr("CollectAwaiterReturnStackTrace: visiting frame:\n\t%s\n",
                    frame->ToCString());
     }
-    if (skipSyncAsyncFramesCount >= 0) {
-      if (!frame->IsDartFrame()) {
-        break;
-      }
-      // Assume that the code we are looking for is not inlined.
-      code = frame->LookupDartCode();
-      function = code.function();
-      function_name ^= function.QualifiedScrubbedName();
-      if (skipSyncAsyncFramesCount == 2) {
-        if (!function_name.Equals(Symbols::_ClosureCall())) {
-          break;
-        }
-      } else if (skipSyncAsyncFramesCount == 1) {
-        if (!function_name.Equals(Symbols::_AsyncAwaitCompleterStart())) {
-          break;
-        }
-      }
-
-      skipSyncAsyncFramesCount--;
-    }
     if (frame->IsDartFrame()) {
       code = frame->LookupDartCode();
       if (code.is_optimized()) {
         deopt_frame = DeoptimizeToArray(thread, frame, code);
         bool found_async_awaiter = false;
+        bool abort_attempt_to_navigate_through_sync_async = false;
         for (InlinedFunctionsIterator it(code, frame->pc()); !it.Done();
              it.Advance()) {
           inlined_code = it.code();
           function = it.function();
+
+          if (skip_sync_async_frames_count > 0) {
+            function_name ^= function.QualifiedScrubbedName();
+            if (CheckAndSkipAsync(skip_sync_async_frames_count,
+                                  function_name)) {
+              skip_sync_async_frames_count--;
+            } else {
+              // Unexpected function in sync async call
+              skip_sync_async_frames_count = -1;
+              abort_attempt_to_navigate_through_sync_async = true;
+              break;
+            }
+          }
+
           if (FLAG_trace_debugger_stacktrace) {
             ASSERT(!function.IsNull());
             OS::PrintErr(
@@ -2198,7 +2203,20 @@
             // Grab the awaiter.
             async_activation ^= activation->GetAsyncAwaiter();
             found_async_awaiter = true;
-            break;
+            if (FLAG_sync_async) {
+              // async function might have been called synchronously, in which
+              // case we need to keep going down the stack.
+              // To determine how we are called we peek few more frames further
+              // expecting to see Closure_call followed by
+              // AsyncAwaitCompleter_start.
+              // If we are able to see those functions we continue going down
+              // thestack, if we are not, we break out of the loop as we are
+              // not interested in exploring rest of the stack - there is only
+              // dart-internal code left.
+              skip_sync_async_frames_count = 2;
+            } else {
+              break;
+            }
           } else {
             stack_trace->AddActivation(
                 CollectDartFrame(isolate, it.pc(), frame, inlined_code,
@@ -2206,11 +2224,23 @@
           }
         }
         // Break out of outer loop.
-        if (found_async_awaiter) {
+        if (found_async_awaiter ||
+            abort_attempt_to_navigate_through_sync_async) {
           break;
         }
       } else {
         function = code.function();
+
+        if (skip_sync_async_frames_count > 0) {
+          function_name ^= function.QualifiedScrubbedName();
+          if (CheckAndSkipAsync(skip_sync_async_frames_count, function_name)) {
+            skip_sync_async_frames_count--;
+          } else {
+            // Unexpected function in sync async call.
+            break;
+          }
+        }
+
         if (function.IsAsyncClosure() || function.IsAsyncGenClosure()) {
           ActivationFrame* activation = CollectDartFrame(
               isolate, frame->pc(), frame, code, Object::null_array(), 0,
@@ -2222,12 +2252,8 @@
           async_activation ^= activation->GetAsyncAwaiter();
           async_stack_trace ^= activation->GetCausalStack();
           if (FLAG_sync_async) {
-            // async function might have been called synchronously, in which
-            // case we need to keep going down the stack.
-            // To determine how we are called we peek few more frames further
-            // expecting to see Closure_call followed by
-            // AsyncAwaitCompleter_start.
-            skipSyncAsyncFramesCount = 2;
+            // see comment regarding skipping sync-async frames above.
+            skip_sync_async_frames_count = 2;
           } else {
             break;
           }
@@ -2456,21 +2482,6 @@
   ClearCachedStackTraces();
 }
 
-static TokenPosition LastTokenOnLine(Zone* zone,
-                                     const TokenStream& tokens,
-                                     TokenPosition pos) {
-  TokenStream::Iterator iter(zone, tokens, pos,
-                             TokenStream::Iterator::kAllTokens);
-  ASSERT(iter.IsValid());
-  TokenPosition last_pos = pos;
-  while ((iter.CurrentTokenKind() != Token::kNEWLINE) &&
-         (iter.CurrentTokenKind() != Token::kEOS)) {
-    last_pos = iter.CurrentPosition();
-    iter.Advance();
-  }
-  return last_pos;
-}
-
 // Returns the best fit token position for a breakpoint.
 //
 // Takes a range of tokens [requested_token_pos, last_token_pos] and
@@ -2609,8 +2620,8 @@
         end_of_line_pos = begin_pos;
       }
     } else {
-      const TokenStream& tokens = TokenStream::Handle(zone, script.tokens());
-      end_of_line_pos = LastTokenOnLine(zone, tokens, begin_pos);
+      UNREACHABLE();
+      end_of_line_pos = TokenPosition::kNoSource;
     }
 
     uword lowest_pc_offset = kUwordMax;
@@ -3838,13 +3849,7 @@
       }
       return false;
     }
-    const TokenStream& tokens = TokenStream::Handle(zone, script.tokens());
-    TokenStream::Iterator iter(zone, tokens, top_frame->TokenPos());
-    if ((iter.CurrentTokenKind() == Token::kIDENT) &&
-        ((iter.CurrentLiteral() == Symbols::Await().raw()) ||
-         (iter.CurrentLiteral() == Symbols::YieldKw().raw()))) {
-      return true;
-    }
+    UNREACHABLE();
   }
   return false;
 }
diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc
index 45d836a..06f5a47 100644
--- a/runtime/vm/exceptions.cc
+++ b/runtime/vm/exceptions.cc
@@ -540,7 +540,7 @@
   // TODO(regis): We still possibly need to unwind interpreter frames if they
   // are callee frames of the C++ frame handling the exception.
   if (FLAG_enable_interpreter) {
-    Interpreter* interpreter = thread->isolate()->interpreter();
+    Interpreter* interpreter = thread->interpreter();
     if ((interpreter != NULL) && interpreter->HasFrame(frame_pointer)) {
       interpreter->JumpToFrame(program_counter, stack_pointer, frame_pointer,
                                thread);
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index c52cf87..531152e 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -163,8 +163,6 @@
     "Stress test async stack traces")                                          \
   P(strong, bool, true, "Enable strong mode.")                                 \
   P(sync_async, bool, true, "Start `async` functions synchronously.")          \
-  R(support_ast_printer, false, bool, true, "Support the AST printer.")        \
-  R(support_compiler_stats, false, bool, true, "Support compiler stats.")      \
   R(support_disassembler, false, bool, true, "Support the disassembler.")      \
   R(support_il_printer, false, bool, true, "Support the IL printer.")          \
   C(support_reload, false, false, bool, true, "Support isolate reload.")       \
@@ -205,9 +203,9 @@
   P(enable_slow_path_sharing, bool, true, "Enable sharing of slow-path code.") \
   P(shared_slow_path_triggers_gc, bool, false,                                 \
     "TESTING: slow-path triggers a GC.")                                       \
-  P(enable_multiple_entrypoints, bool, false,                                  \
+  P(enable_multiple_entrypoints, bool, true,                                   \
     "Enable multiple entrypoints per-function and related optimizations.")     \
-  R(enable_testing_pragmas, false, bool, false,                                \
+  P(enable_testing_pragmas, bool, false,                                       \
     "Enable magical pragmas for testing purposes. Use at your own risk!")      \
   R(eliminate_type_checks, true, bool, true,                                   \
     "Eliminate type checks when allowed by static type analysis.")             \
diff --git a/runtime/vm/growable_array_test.cc b/runtime/vm/growable_array_test.cc
index 75ec551..1796f75 100644
--- a/runtime/vm/growable_array_test.cc
+++ b/runtime/vm/growable_array_test.cc
@@ -4,6 +4,7 @@
 
 #include "vm/growable_array.h"
 #include "platform/assert.h"
+#include "vm/symbols.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/guard_field_test.cc b/runtime/vm/guard_field_test.cc
index 4170370..bc30357 100644
--- a/runtime/vm/guard_field_test.cc
+++ b/runtime/vm/guard_field_test.cc
@@ -5,6 +5,7 @@
 #include "vm/dart_api_impl.h"
 #include "vm/dart_api_state.h"
 #include "vm/object.h"
+#include "vm/symbols.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/heap/heap_test.cc b/runtime/vm/heap/heap_test.cc
index ad51e2f..357b577 100644
--- a/runtime/vm/heap/heap_test.cc
+++ b/runtime/vm/heap/heap_test.cc
@@ -9,6 +9,7 @@
 #include "vm/globals.h"
 #include "vm/heap/become.h"
 #include "vm/heap/heap.h"
+#include "vm/symbols.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/heap/pages.cc b/runtime/vm/heap/pages.cc
index ba234b6..7c0392a 100644
--- a/runtime/vm/heap/pages.cc
+++ b/runtime/vm/heap/pages.cc
@@ -6,7 +6,6 @@
 
 #include "platform/address_sanitizer.h"
 #include "platform/assert.h"
-#include "vm/compiler_stats.h"
 #include "vm/heap/become.h"
 #include "vm/heap/compactor.h"
 #include "vm/heap/marker.h"
diff --git a/runtime/vm/heap/scavenger.cc b/runtime/vm/heap/scavenger.cc
index 17872dd..346ea81 100644
--- a/runtime/vm/heap/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -277,13 +277,7 @@
 }
 
 SemiSpace::~SemiSpace() {
-  if (reserved_ != NULL) {
-#if defined(DEBUG)
-    memset(reserved_->address(), Heap::kZapByte,
-           size_in_words() << kWordSizeLog2);
-#endif  // defined(DEBUG)
-    delete reserved_;
-  }
+  delete reserved_;
 }
 
 Mutex* SemiSpace::mutex_ = NULL;
@@ -303,25 +297,32 @@
 }
 
 SemiSpace* SemiSpace::New(intptr_t size_in_words, const char* name) {
+  SemiSpace* result = nullptr;
   {
     MutexLocker locker(mutex_);
     // TODO(koda): Cache one entry per size.
-    if (cache_ != NULL && cache_->size_in_words() == size_in_words) {
-      SemiSpace* result = cache_;
-      cache_ = NULL;
-      return result;
+    if (cache_ != nullptr && cache_->size_in_words() == size_in_words) {
+      result = cache_;
+      cache_ = nullptr;
     }
   }
+  if (result != nullptr) {
+#ifdef DEBUG
+    result->reserved_->Protect(VirtualMemory::kReadWrite);
+#endif
+    return result;
+  }
+
   if (size_in_words == 0) {
-    return new SemiSpace(NULL);
+    return new SemiSpace(nullptr);
   } else {
     intptr_t size_in_bytes = size_in_words << kWordSizeLog2;
     const bool kExecutable = false;
     VirtualMemory* memory =
         VirtualMemory::Allocate(size_in_bytes, kExecutable, name);
-    if (memory == NULL) {
+    if (memory == nullptr) {
       // TODO(koda): If cache_ is not empty, we could try to delete it.
-      return NULL;
+      return nullptr;
     }
 #if defined(DEBUG)
     memset(memory->address(), Heap::kZapByte, size_in_bytes);
@@ -332,12 +333,13 @@
 
 void SemiSpace::Delete() {
 #ifdef DEBUG
-  if (reserved_ != NULL) {
+  if (reserved_ != nullptr) {
     const intptr_t size_in_bytes = size_in_words() << kWordSizeLog2;
     memset(reserved_->address(), Heap::kZapByte, size_in_bytes);
+    reserved_->Protect(VirtualMemory::kNoAccess);
   }
 #endif
-  SemiSpace* old_cache = NULL;
+  SemiSpace* old_cache = nullptr;
   {
     MutexLocker locker(mutex_);
     old_cache = cache_;
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index 4da29a8..14e5a58 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -12,6 +12,7 @@
 #include "vm/heap/heap.h"
 #include "vm/json_writer.h"
 #include "vm/object.h"
+#include "vm/object_store.h"
 #include "vm/program_visitor.h"
 #include "vm/stub_code.h"
 #include "vm/timeline.h"
@@ -354,6 +355,8 @@
   Object& owner = Object::Handle(zone);
   String& str = String::Handle(zone);
 
+  ObjectStore* object_store = Isolate::Current()->object_store();
+
   TypeTestingStubFinder tts;
   for (intptr_t i = 0; i < instructions_.length(); i++) {
     const Instructions& insns = *instructions_[i].insns_;
@@ -397,6 +400,10 @@
       owner = code.owner();
       if (owner.IsNull()) {
         const char* name = StubCode::NameOfStub(insns.EntryPoint());
+        if (name == nullptr &&
+            code.raw() == object_store->build_method_extractor_code()) {
+          name = "BuildMethodExtractor";
+        }
         if (name != NULL) {
           assembly_stream_.Print("Precompiled_Stub_%s:\n", name);
         } else {
diff --git a/runtime/vm/instructions_x64.cc b/runtime/vm/instructions_x64.cc
index 4765a52..5efb324 100644
--- a/runtime/vm/instructions_x64.cc
+++ b/runtime/vm/instructions_x64.cc
@@ -15,6 +15,17 @@
 
 namespace dart {
 
+// [start] is the address of a displacement inside a load instruction
+intptr_t IndexFromPPLoadDisp8(uword start) {
+  int8_t offset = *reinterpret_cast<int8_t*>(start);
+  return ObjectPool::IndexFromOffset(offset);
+}
+
+intptr_t IndexFromPPLoadDisp32(uword start) {
+  int32_t offset = *reinterpret_cast<int32_t*>(start);
+  return ObjectPool::IndexFromOffset(offset);
+}
+
 bool DecodeLoadObjectFromPoolOrThread(uword pc, const Code& code, Object* obj) {
   ASSERT(code.ContainsInstructionAt(pc));
 
@@ -24,7 +35,7 @@
   if ((bytes[0] == 0x49) || (bytes[0] == 0x4d)) {
     if ((bytes[1] == 0x8b) || (bytes[1] == 0x3b)) {  // movq, cmpq
       if ((bytes[2] & 0xc7) == (0x80 | (PP & 7))) {  // [r15+disp32]
-        intptr_t index = IndexFromPPLoad(pc + 3);
+        intptr_t index = IndexFromPPLoadDisp32(pc + 3);
         const ObjectPool& pool = ObjectPool::Handle(code.object_pool());
         if (pool.TypeAt(index) == ObjectPool::kTaggedObject) {
           *obj = pool.ObjectAt(index);
@@ -65,15 +76,21 @@
 }
 
 intptr_t TypeTestingStubCallPattern::GetSubtypeTestCachePoolIndex() {
-  const intptr_t kCallPatternSize = 10;
-  static int16_t pattern[kCallPatternSize] = {
-      0x4d, 0x8b, 0x8f, -1, -1, -1, -1,  // movq R9, [PP + offs]
-      0xff, 0x53, 0x07                   // callq [RBX+ 0x7]
+  static int16_t pattern_disp8[] = {
+      0x4d, 0x8b, 0x4f, -1,  // movq R9, [PP + offset]
+      0xff, 0x53, 0x07,      // callq [RBX + 0x7]
   };
-  const uword start = pc_ - kCallPatternSize;
-  ASSERT(MatchesPattern(start, pattern, kCallPatternSize));
-
-  return IndexFromPPLoad(start + 3);
+  static int16_t pattern_disp32[] = {
+      0x4d, 0x8b, 0x8f, -1, -1, -1, -1,  // movq R9, [PP + offset]
+      0xff, 0x53, 0x07,                  // callq [RBX + 0x7]
+  };
+  if (MatchesPattern(pc_, pattern_disp8, ARRAY_SIZE(pattern_disp8))) {
+    return IndexFromPPLoadDisp8(pc_ - 4);
+  } else if (MatchesPattern(pc_, pattern_disp32, ARRAY_SIZE(pattern_disp32))) {
+    return IndexFromPPLoadDisp32(pc_ - 7);
+  } else {
+    FATAL1("Failed to decode at %" Px, pc_);
+  }
 }
 
 }  // namespace dart
diff --git a/runtime/vm/instructions_x64.h b/runtime/vm/instructions_x64.h
index 0c58007..1df85ab 100644
--- a/runtime/vm/instructions_x64.h
+++ b/runtime/vm/instructions_x64.h
@@ -20,8 +20,8 @@
 class Immediate;
 class RawObject;
 
-intptr_t IndexFromPPLoad(uword start);
 intptr_t IndexFromPPLoadDisp8(uword start);
+intptr_t IndexFromPPLoadDisp32(uword start);
 
 // Template class for all instruction pattern classes.
 // P has to specify a static pattern and a pattern length method.
diff --git a/runtime/vm/interpreter.cc b/runtime/vm/interpreter.cc
index b13a27e..3185b93 100644
--- a/runtime/vm/interpreter.cc
+++ b/runtime/vm/interpreter.cc
@@ -568,18 +568,14 @@
 
 Interpreter::~Interpreter() {
   delete[] stack_;
-  Isolate* isolate = Isolate::Current();
-  if (isolate != NULL) {
-    isolate->set_interpreter(NULL);
-  }
 }
 
 // Get the active Interpreter for the current isolate.
 Interpreter* Interpreter::Current() {
-  Interpreter* interpreter = Isolate::Current()->interpreter();
+  Interpreter* interpreter = Thread::Current()->interpreter();
   if (interpreter == NULL) {
     interpreter = new Interpreter();
-    Isolate::Current()->set_interpreter(interpreter);
+    Thread::Current()->set_interpreter(interpreter);
   }
   return interpreter;
 }
@@ -665,6 +661,9 @@
   *SP = fp - kKBCDartFrameFixedSize;
 }
 
+// Calling into runtime may trigger garbage collection and relocate objects,
+// so all RawObject* pointers become outdated and should not be used across
+// runtime calls.
 // Note: functions below are marked DART_NOINLINE to recover performance on
 // ARM where inlining these functions into the interpreter loop seemed to cause
 // some code quality issues.
@@ -788,6 +787,7 @@
                                                   RawObject*** FP,
                                                   RawObject*** SP) {
   ASSERT(!Function::HasCode(function) && !Function::HasBytecode(function));
+  ASSERT(function == call_top[0]);
   // If the function is an implicit getter or setter, process its invocation
   // here without code or bytecode.
   RawFunction::Kind kind = Function::kind(function);
@@ -804,7 +804,7 @@
     }
     case RawFunction::kImplicitSetter: {
       // Field object is cached in function's data_.
-      RawInstance* instance = reinterpret_cast<RawInstance*>(*call_base);
+      RawInstance* instance = reinterpret_cast<RawInstance*>(call_base[0]);
       RawField* field = reinterpret_cast<RawField*>(function->ptr()->data_);
       intptr_t offset_in_words = Smi::Value(field->ptr()->value_.offset_);
       RawAbstractType* field_type = field->ptr()->type_;
@@ -818,7 +818,7 @@
       // Perform type test of value if field type is not one of dynamic, object,
       // or void, and if the value is not null.
       RawObject* null_value = Object::null();
-      RawObject* value = *(call_base + 1);
+      RawObject* value = call_base[1];
       if (cid != kDynamicCid && cid != kInstanceCid && cid != kVoidCid &&
           value != null_value) {
         RawSubtypeTestCache* cache = field->ptr()->type_test_cache_;
@@ -832,29 +832,40 @@
             *invoked = true;
             return false;
           }
+          // Reload objects after the call which may trigger GC.
+          function = reinterpret_cast<RawFunction*>(call_top[0]);
+          field = reinterpret_cast<RawField*>(function->ptr()->data_);
+          field_type = field->ptr()->type_;
+          instance = reinterpret_cast<RawInstance*>(call_base[0]);
+          value = call_base[1];
           cache = reinterpret_cast<RawSubtypeTestCache*>(call_top[1]);
           field->ptr()->type_test_cache_ = cache;
         }
         // Push arguments of type test.
-        // Type checked value is at call_base + 1.
-        call_base[2] = field_type;
+        call_top[1] = value;
+        call_top[2] = field_type;
         // Provide type arguments of instance as instantiator.
         RawClass* instance_class = thread->isolate()->class_table()->At(
             InterpreterHelpers::GetClassId(instance));
-        call_base[3] =
+        call_top[3] =
             instance_class->ptr()->num_type_arguments_ > 0
                 ? reinterpret_cast<RawObject**>(
                       instance
                           ->ptr())[instance_class->ptr()
                                        ->type_arguments_field_offset_in_words_]
                 : null_value;
-        call_base[4] = null_value;  // Implicit setters cannot be generic.
-        call_base[5] = field->ptr()->name_;
-        if (!AssertAssignable(thread, *pc, *FP, call_base + 5, call_base + 1,
+        call_top[4] = null_value;  // Implicit setters cannot be generic.
+        call_top[5] = field->ptr()->name_;
+        if (!AssertAssignable(thread, *pc, *FP, call_top + 5, call_top + 1,
                               cache)) {
           *invoked = true;
           return false;
         }
+        // Reload objects after the call which may trigger GC.
+        function = reinterpret_cast<RawFunction*>(call_top[0]);
+        field = reinterpret_cast<RawField*>(function->ptr()->data_);
+        instance = reinterpret_cast<RawInstance*>(call_base[0]);
+        value = call_base[1];
       }
       if (thread->isolate()->use_field_guards()) {
         // Check value cid according to field.guarded_cid().
@@ -880,6 +891,9 @@
               *invoked = true;
               return false;
             }
+            // Reload objects after the call which may trigger GC.
+            instance = reinterpret_cast<RawInstance*>(call_base[0]);
+            value = call_base[1];
           }
         }
       }
@@ -905,6 +919,9 @@
           *invoked = true;
           return false;
         }
+        // Reload objects after the call which may trigger GC.
+        function = reinterpret_cast<RawFunction*>(call_top[0]);
+        field = reinterpret_cast<RawField*>(function->ptr()->data_);
         pp_ = InterpreterHelpers::FrameCode(*FP)->ptr()->object_pool_;
         // The field is initialized by the runtime call, but not returned.
         value = field->ptr()->value_.static_value_;
@@ -1055,7 +1072,8 @@
 #if defined(DEBUG)
   if (IsTracingExecution()) {
     THR_Print("%" Pu64 " ", icount_);
-    THR_Print("invoking %s\n", Function::Handle(function).ToCString());
+    THR_Print("invoking %s\n",
+              Function::Handle(function).ToFullyQualifiedCString());
   }
 #endif
   RawCode* bytecode = function->ptr()->bytecode_;
@@ -1079,6 +1097,7 @@
                                   RawObject** FP,
                                   RawObject** SP) {
   RawObject** result = top;
+  top[0] = 0;  // Clean up result slot.
   RawObject** miss_handler_args = top + 1;
   for (intptr_t i = 0; i < checked_args; i++) {
     miss_handler_args[i] = args[i];
@@ -2233,6 +2252,7 @@
       } break;
       case MethodRecognizer::kLinkedHashMap_setHashMask: {
         RawInstance* instance = reinterpret_cast<RawInstance*>(SP[-1]);
+        ASSERT(!SP[0]->IsHeapObject());
         reinterpret_cast<RawObject**>(
             instance->ptr())[LinkedHashMap::hash_mask_offset() / kWordSize] =
             SP[0];
@@ -2245,6 +2265,7 @@
       } break;
       case MethodRecognizer::kLinkedHashMap_setUsedData: {
         RawInstance* instance = reinterpret_cast<RawInstance*>(SP[-1]);
+        ASSERT(!SP[0]->IsHeapObject());
         reinterpret_cast<RawObject**>(
             instance->ptr())[LinkedHashMap::used_data_offset() / kWordSize] =
             SP[0];
@@ -2257,6 +2278,7 @@
       } break;
       case MethodRecognizer::kLinkedHashMap_setDeletedKeys: {
         RawInstance* instance = reinterpret_cast<RawInstance*>(SP[-1]);
+        ASSERT(!SP[0]->IsHeapObject());
         reinterpret_cast<RawObject**>(
             instance->ptr())[LinkedHashMap::deleted_keys_offset() / kWordSize] =
             SP[0];
@@ -2280,7 +2302,7 @@
 
         RawObject** incoming_args = SP - num_arguments;
         RawObject** return_slot = SP;
-        Exit(thread, FP, SP, pc);
+        Exit(thread, FP, SP + 1, pc);
         NativeArguments args(thread, argc_tag, incoming_args, return_slot);
         INVOKE_NATIVE(
             payload->trampoline,
@@ -2401,7 +2423,7 @@
     RawContext* instance = reinterpret_cast<RawContext*>(SP[-1]);
     RawObject* value = reinterpret_cast<RawContext*>(SP[0]);
     SP -= 2;  // Drop instance and value.
-
+    ASSERT(rD < static_cast<uint32_t>(instance->ptr()->num_variables_));
     instance->StorePointer(
         reinterpret_cast<RawObject**>(instance->ptr()) + offset_in_words, value,
         thread);
@@ -2441,6 +2463,7 @@
     const uword offset_in_words =
         static_cast<uword>(Context::variable_offset(rD) / kWordSize);
     RawContext* instance = static_cast<RawContext*>(SP[0]);
+    ASSERT(rD < static_cast<uint32_t>(instance->ptr()->num_variables_));
     SP[0] = reinterpret_cast<RawObject**>(instance->ptr())[offset_in_words];
     DISPATCH();
   }
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index ac487d86..e3a60be 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -12,7 +12,6 @@
 #include "vm/class_finalizer.h"
 #include "vm/code_observers.h"
 #include "vm/compiler/jit/compiler.h"
-#include "vm/compiler_stats.h"
 #include "vm/dart_api_message.h"
 #include "vm/dart_api_state.h"
 #include "vm/dart_entry.h"
@@ -49,7 +48,6 @@
 #include "vm/thread_registry.h"
 #include "vm/timeline.h"
 #include "vm/timeline_analysis.h"
-#include "vm/timer.h"
 #include "vm/visitor.h"
 
 namespace dart {
@@ -911,9 +909,6 @@
       library_tag_handler_(NULL),
       api_state_(NULL),
       random_(),
-#if !defined(DART_PRECOMPILED_RUNTIME)
-      interpreter_(NULL),
-#endif
       simulator_(NULL),
       mutex_(new Mutex(NOT_IN_PRODUCT("Isolate::mutex_"))),
       symbols_mutex_(new Mutex(NOT_IN_PRODUCT("Isolate::symbols_mutex_"))),
@@ -923,6 +918,10 @@
           NOT_IN_PRODUCT("Isolate::constant_canonicalization_mutex_"))),
       megamorphic_lookup_mutex_(
           new Mutex(NOT_IN_PRODUCT("Isolate::megamorphic_lookup_mutex_"))),
+      kernel_data_lib_cache_mutex_(
+          new Mutex(NOT_IN_PRODUCT("Isolate::kernel_data_lib_cache_mutex_"))),
+      kernel_data_class_cache_mutex_(
+          new Mutex(NOT_IN_PRODUCT("Isolate::kernel_data_class_cache_mutex_"))),
       message_handler_(NULL),
       spawn_state_(NULL),
       defer_finalization_count_(0),
@@ -991,9 +990,6 @@
   ASSERT(marking_stack_ == NULL);
   delete object_store_;
   delete api_state_;
-#if !defined(DART_PRECOMPILED_RUNTIME)
-  delete interpreter_;
-#endif
 #if defined(USING_SIMULATOR)
   delete simulator_;
 #endif
@@ -1007,6 +1003,10 @@
   constant_canonicalization_mutex_ = NULL;
   delete megamorphic_lookup_mutex_;
   megamorphic_lookup_mutex_ = NULL;
+  delete kernel_data_lib_cache_mutex_;
+  kernel_data_lib_cache_mutex_ = NULL;
+  delete kernel_data_class_cache_mutex_;
+  kernel_data_class_cache_mutex_ = NULL;
   delete pending_deopts_;
   pending_deopts_ = NULL;
   delete message_handler_;
@@ -1240,7 +1240,6 @@
       lib.SetLoaded();
     }
   }
-  TokenStream::CloseSharedTokenList(this);
 }
 
 #if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
@@ -1666,10 +1665,6 @@
 #if defined(DEBUG)
     isolate->ValidateConstants();
 #endif  // defined(DEBUG)
-    const Error& error = Error::Handle(thread->sticky_error());
-    if (!error.IsNull() && !error.IsUnwindError()) {
-      OS::PrintErr("in ShutdownIsolate: %s\n", error.ToErrorCString());
-    }
     TransitionVMToNative transition(thread);
     Dart::RunShutdownCallback();
   }
@@ -1871,19 +1866,6 @@
   // Don't allow anymore dart code to execution on this isolate.
   thread->ClearStackLimit();
 
-  // First, perform higher-level cleanup that may need to allocate.
-  {
-    // Ensure we have a zone and handle scope so that we can call VM functions.
-    StackZone stack_zone(thread);
-    HandleScope handle_scope(thread);
-
-    // Write compiler stats data if enabled.
-    if (FLAG_support_compiler_stats && FLAG_compiler_stats &&
-        !Isolate::IsVMInternalIsolate(this)) {
-      OS::PrintErr("%s", aggregate_compiler_stats()->PrintToZone());
-    }
-  }
-
   // Remove this isolate from the list *before* we start tearing it down, to
   // avoid exposing it in a state of decay.
   RemoveIsolateFromList(this);
@@ -2015,12 +1997,6 @@
   }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
-#if !defined(DART_PRECOMPILED_RUNTIME)
-  if (interpreter() != NULL) {
-    interpreter()->VisitObjectPointers(visitor);
-  }
-#endif
-
 #if defined(TARGET_ARCH_DBC)
   if (simulator() != NULL) {
     simulator()->VisitObjectPointers(visitor);
@@ -2878,7 +2854,19 @@
     scheduled_mutator_thread_->end_ = 0;
     scheduled_mutator_thread_ = NULL;
   }
-  thread->isolate_ = NULL;
+  // Even if we unschedule the mutator thread, e.g. via calling
+  // `Dart_ExitIsolate()` inside a native, we might still have one or more Dart
+  // stacks active, which e.g. GC marker threads want to visit.  So we don't
+  // clear out the isolate pointer if we are on the mutator thread.
+  //
+  // The [thread] structure for the mutator thread is kept alive in the thread
+  // registry even if the mutator thread is temporarily unscheduled.
+  //
+  // All other threads are not allowed to unschedule themselves and schedule
+  // again later on.
+  if (!is_mutator) {
+    thread->isolate_ = NULL;
+  }
   thread->heap_ = NULL;
   thread->set_os_thread(NULL);
   thread->set_execution_state(Thread::kThreadInNative);
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 3117c52..dd92e29 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -21,7 +21,6 @@
 #include "vm/random.h"
 #include "vm/tags.h"
 #include "vm/thread.h"
-#include "vm/timer.h"
 #include "vm/token_position.h"
 
 namespace dart {
@@ -31,7 +30,6 @@
 class BackgroundCompiler;
 class Capability;
 class CodeIndexTable;
-class CompilerStats;
 class Debugger;
 class DeoptContext;
 class ExternalTypedData;
@@ -352,6 +350,13 @@
   }
   Mutex* megamorphic_lookup_mutex() const { return megamorphic_lookup_mutex_; }
 
+  Mutex* kernel_data_lib_cache_mutex() const {
+    return kernel_data_lib_cache_mutex_;
+  }
+  Mutex* kernel_data_class_cache_mutex() const {
+    return kernel_data_class_cache_mutex_;
+  }
+
 #if !defined(PRODUCT)
   Debugger* debugger() const {
     ASSERT(debugger_ != NULL);
@@ -415,11 +420,6 @@
 
   Random* random() { return &random_; }
 
-#if !defined(DART_PRECOMPILED_RUNTIME)
-  Interpreter* interpreter() const { return interpreter_; }
-  void set_interpreter(Interpreter* value) { interpreter_ = value; }
-#endif
-
   Simulator* simulator() const { return simulator_; }
   void set_simulator(Simulator* value) { simulator_ = value; }
 
@@ -510,11 +510,6 @@
   void PrintJSON(JSONStream* stream, bool ref = true);
 #endif
 
-  // Mutator thread is used to aggregate compiler stats.
-  CompilerStats* aggregate_compiler_stats() {
-    return mutator_thread()->compiler_stats();
-  }
-
 #if !defined(PRODUCT)
   VMTagCounters* vm_tag_counters() { return &vm_tag_counters_; }
 
@@ -973,15 +968,14 @@
   Dart_LibraryTagHandler library_tag_handler_;
   ApiState* api_state_;
   Random random_;
-#if !defined(DART_PRECOMPILED_RUNTIME)
-  Interpreter* interpreter_;
-#endif
   Simulator* simulator_;
   Mutex* mutex_;          // Protects compiler stats.
   Mutex* symbols_mutex_;  // Protects concurrent access to the symbol table.
   Mutex* type_canonicalization_mutex_;      // Protects type canonicalization.
   Mutex* constant_canonicalization_mutex_;  // Protects const canonicalization.
   Mutex* megamorphic_lookup_mutex_;  // Protects megamorphic table lookup.
+  Mutex* kernel_data_lib_cache_mutex_;
+  Mutex* kernel_data_class_cache_mutex_;
   MessageHandler* message_handler_;
   IsolateSpawnState* spawn_state_;
   intptr_t defer_finalization_count_;
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index 16b28a0..231aa10 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -1937,14 +1937,67 @@
   Zone* zone_;
 };
 
-void IsolateReloadContext::MarkAllFunctionsForRecompilation() {
+typedef UnorderedHashMap<SmiTraits> IntHashMap;
+
+class InvalidateKernelInfoCaches : public ObjectVisitor {
+ public:
+  explicit InvalidateKernelInfoCaches(Zone* zone)
+      : ObjectVisitor(),
+        handle_(Object::Handle(zone)),
+        data_(Array::Handle(zone)),
+        key_(Object::Handle(zone)),
+        value_(Smi::Handle(zone)) {}
+
+  virtual void VisitObject(RawObject* obj) {
+    if (obj->IsPseudoObject()) {
+      // Cannot even be wrapped in handles.
+      return;
+    }
+    handle_ = obj;
+    if (!handle_.IsKernelProgramInfo()) {
+      return;
+    }
+    const KernelProgramInfo& info = KernelProgramInfo::Cast(handle_);
+    // Clear the libraries cache.
+    {
+      data_ ^= info.libraries_cache();
+      ASSERT(!data_.IsNull());
+      IntHashMap table(&key_, &value_, &data_);
+      table.Clear();
+      info.set_libraries_cache(table.Release());
+    }
+    // Clear the classes cache.
+    {
+      data_ ^= info.classes_cache();
+      ASSERT(!data_.IsNull());
+      IntHashMap table(&key_, &value_, &data_);
+      table.Clear();
+      info.set_classes_cache(table.Release());
+    }
+  }
+
+ private:
+  Object& handle_;
+  Array& data_;
+  Object& key_;
+  Smi& value_;
+};
+
+void IsolateReloadContext::RunInvalidationVisitors() {
   TIMELINE_SCOPE(MarkAllFunctionsForRecompilation);
-  TIR_Print("---- MARKING ALL FUNCTIONS FOR RECOMPILATION\n");
+  TIR_Print("---- RUNNING INVALIDATION HEAP VISITORS\n");
   Thread* thread = Thread::Current();
   StackZone stack_zone(thread);
   Zone* zone = stack_zone.GetZone();
+
   HeapIterationScope iteration(thread);
-  MarkFunctionsForRecompilation visitor(isolate_, this, zone);
+  GrowableArray<ObjectVisitor*> arr(zone, 2);
+  ExtensibleObjectVisitor visitor(&arr);
+  MarkFunctionsForRecompilation function_visitor(isolate_, this, zone);
+  InvalidateKernelInfoCaches kernel_info_visitor(zone);
+
+  visitor.Add(&function_visitor);
+  visitor.Add(&kernel_info_visitor);
   iteration.IterateObjects(&visitor);
 }
 
@@ -1956,7 +2009,7 @@
   }
   DeoptimizeFunctionsOnStack();
   ResetUnoptimizedICsOnStack();
-  MarkAllFunctionsForRecompilation();
+  RunInvalidationVisitors();
 }
 
 RawClass* IsolateReloadContext::MappedClass(const Class& replacement_or_new) {
diff --git a/runtime/vm/isolate_reload.h b/runtime/vm/isolate_reload.h
index 219b4f4..04a2d5e 100644
--- a/runtime/vm/isolate_reload.h
+++ b/runtime/vm/isolate_reload.h
@@ -268,7 +268,7 @@
   void ClearReplacedObjectBits();
 
   // atomic_install:
-  void MarkAllFunctionsForRecompilation();
+  void RunInvalidationVisitors();
   void ResetUnoptimizedICsOnStack();
   void ResetMegamorphicCaches();
   void InvalidateWorld();
diff --git a/runtime/vm/isolate_reload_test.cc b/runtime/vm/isolate_reload_test.cc
index 47e1c63..8a26648 100644
--- a/runtime/vm/isolate_reload_test.cc
+++ b/runtime/vm/isolate_reload_test.cc
@@ -98,9 +98,6 @@
       "main() {\n"
       "  return 42;\n"
       "}\n",
-    },
-    {
-      "file:///.packages", "untitled:/"
     }};
   // clang-format on
 
@@ -158,9 +155,6 @@
       "WhatsTheMeaningOfAllThis() {\n"
       "  return 42;\n"
       "}\n",
-    },
-    {
-      "file:///.packages", "untitled:/"
     }};
   // clang-format on
 
@@ -229,9 +223,6 @@
       "  State(this.t);\n"
       "  T howAreTheThings() => t;\n"
       "}\n",
-    },
-    {
-      "file:///.packages", "untitled:/"
     }};
   // clang-format on
 
@@ -312,9 +303,6 @@
           "  first() => t;\n"
           "}\n"
           "doWork() => new MyAccountState(<dynamic>[42, 'abc']).first();\n"
-      },
-      {
-          "file:///.packages", "untitled:/"
       }};
   // clang-format on
 
@@ -389,11 +377,7 @@
       "}\n";
 
   Dart_Handle result = TestCase::ReloadTestScript(kReloadScript);
-  if (TestCase::UsingDartFrontend()) {
-    EXPECT_ERROR(result, "Expected ';' after this");
-  } else {
-    EXPECT_ERROR(result, "unexpected token");
-  }
+  EXPECT_ERROR(result, "Expected ';' after this");
   EXPECT_EQ(4, SimpleInvoke(lib, "main"));
 }
 
@@ -1168,15 +1152,7 @@
       "}\n";
 
   lib = TestCase::ReloadTestScript(kReloadScript);
-  if (TestCase::UsingDartFrontend()) {
-    EXPECT_ERROR(lib, "importedIntFunc");
-  } else {
-    EXPECT_VALID(lib);
-    // Works.
-    EXPECT_STREQ("a", SimpleInvokeStr(lib, "main"));
-    // Results in an error.
-    EXPECT_ERROR(SimpleInvokeError(lib, "mainInt"), "importedIntFunc");
-  }
+  EXPECT_ERROR(lib, "importedIntFunc");
 }
 
 // Verifies that we clear the ICs for the functions live on the stack in a way
@@ -1258,13 +1234,9 @@
       "}\n";
 
   lib = TestCase::ReloadTestScript(kReloadScript);
-  if (TestCase::UsingDartFrontend()) {
-    EXPECT_ERROR(lib,
-                 "Variables must be declared using the keywords"
-                 " 'const', 'final', 'var' or a type name.");
-  } else {
-    EXPECT_ERROR(lib, "unexpected token");
-  }
+  EXPECT_ERROR(lib,
+               "Variables must be declared using the keywords"
+               " 'const', 'final', 'var' or a type name.");
 }
 
 TEST_CASE(IsolateReload_PendingUnqualifiedCall_StaticToInstance) {
@@ -2550,11 +2522,7 @@
   {
     TransitionVMToNative transition(thread);
     Dart_Handle lib = TestCase::ReloadTestScript(kReloadScript);
-    if (TestCase::UsingDartFrontend()) {
-      EXPECT_ERROR(lib, "Expected ';' after this");
-    } else {
-      EXPECT_ERROR(lib, "unexpected token");
-    }
+    EXPECT_ERROR(lib, "Expected ';' after this");
   }
 
   // If we don't clean up the subclasses, we would find BIterator in
diff --git a/runtime/vm/kernel.cc b/runtime/vm/kernel.cc
index 3067264..9fb8cfd 100644
--- a/runtime/vm/kernel.cc
+++ b/runtime/vm/kernel.cc
@@ -692,24 +692,39 @@
              .StartsWith(Symbols::InitPrefix());
 }
 
-bool IsTearOffTaken(const Function& function, Zone* zone) {
-  const Script& script = Script::Handle(zone, function.script());
+static ProcedureAttributesMetadata ProcedureAttributesOf(
+    Zone* zone,
+    const Script& script,
+    const ExternalTypedData& kernel_data,
+    intptr_t kernel_data_program_offset,
+    intptr_t kernel_offset) {
   TranslationHelper translation_helper(Thread::Current());
   translation_helper.InitFromScript(script);
-
-  KernelReaderHelper reader_helper(
-      zone, &translation_helper, script,
-      ExternalTypedData::Handle(zone, function.KernelData()),
-      function.KernelDataProgramOffset());
-
+  KernelReaderHelper reader_helper(zone, &translation_helper, script,
+                                   kernel_data, kernel_data_program_offset);
   ProcedureAttributesMetadataHelper procedure_attributes_metadata_helper(
       &reader_helper);
-
   ProcedureAttributesMetadata attrs =
       procedure_attributes_metadata_helper.GetProcedureAttributes(
-          function.kernel_offset());
+          kernel_offset);
+  return attrs;
+}
 
-  return attrs.has_tearoff_uses;
+ProcedureAttributesMetadata ProcedureAttributesOf(const Function& function,
+                                                  Zone* zone) {
+  const Script& script = Script::Handle(zone, function.script());
+  return ProcedureAttributesOf(
+      zone, script, ExternalTypedData::Handle(zone, function.KernelData()),
+      function.KernelDataProgramOffset(), function.kernel_offset());
+}
+
+ProcedureAttributesMetadata ProcedureAttributesOf(const Field& field,
+                                                  Zone* zone) {
+  const Class& parent = Class::Handle(zone, field.Owner());
+  const Script& script = Script::Handle(zone, parent.script());
+  return ProcedureAttributesOf(
+      zone, script, ExternalTypedData::Handle(zone, field.KernelData()),
+      field.KernelDataProgramOffset(), field.kernel_offset());
 }
 
 }  // namespace kernel
diff --git a/runtime/vm/kernel.h b/runtime/vm/kernel.h
index 8ec7aed..34609b8 100644
--- a/runtime/vm/kernel.h
+++ b/runtime/vm/kernel.h
@@ -39,6 +39,7 @@
 namespace kernel {
 
 class Reader;
+struct ProcedureAttributesMetadata;
 
 class StringIndex {
  public:
@@ -62,7 +63,8 @@
   // etc will reference the last "sub program" only.
   static Program* ReadFrom(Reader* reader, const char** error = nullptr);
 
-  static Program* ReadFromFile(const char* script_uri);
+  static Program* ReadFromFile(const char* script_uri,
+                               const char** error = nullptr);
   static Program* ReadFromBuffer(const uint8_t* buffer,
                                  intptr_t buffer_length,
                                  const char** error = nullptr);
@@ -200,7 +202,11 @@
 
 bool IsFieldInitializer(const Function& function, Zone* zone);
 
-bool IsTearOffTaken(const Function& function, Zone* zone);
+ProcedureAttributesMetadata ProcedureAttributesOf(const Function& function,
+                                                  Zone* zone);
+
+ProcedureAttributesMetadata ProcedureAttributesOf(const Field& field,
+                                                  Zone* zone);
 
 }  // namespace kernel
 }  // namespace dart
diff --git a/runtime/vm/kernel_binary.cc b/runtime/vm/kernel_binary.cc
index f8801d8..da74542 100644
--- a/runtime/vm/kernel_binary.cc
+++ b/runtime/vm/kernel_binary.cc
@@ -117,7 +117,8 @@
   return program;
 }
 
-Program* Program::ReadFromFile(const char* script_uri) {
+Program* Program::ReadFromFile(const char* script_uri,
+                               const char** error /* = nullptr */) {
   Thread* thread = Thread::Current();
   if (script_uri == NULL) {
     return NULL;
@@ -147,8 +148,8 @@
 
       kernel_program =
           kernel::Program::ReadFromBuffer(kernel_buffer, kernel_buffer_size);
-    } else {
-      THR_Print("tag handler failed: %s\n", Dart_GetError(retval));
+    } else if (error != nullptr) {
+      *error = Dart_GetError(retval);
     }
   }
   return kernel_program;
diff --git a/runtime/vm/kernel_isolate.cc b/runtime/vm/kernel_isolate.cc
index 02f38c88..c56df9b 100644
--- a/runtime/vm/kernel_isolate.cc
+++ b/runtime/vm/kernel_isolate.cc
@@ -448,10 +448,6 @@
     suppress_warnings.type = Dart_CObject_kBool;
     suppress_warnings.value.as_bool = FLAG_suppress_fe_warnings;
 
-    Dart_CObject dart_sync_async;
-    dart_sync_async.type = Dart_CObject_kBool;
-    dart_sync_async.value.as_bool = FLAG_sync_async;
-
     Dart_CObject* message_arr[] = {&tag,
                                    &send_port,
                                    &isolate_id,
@@ -461,8 +457,7 @@
                                    &library_uri_object,
                                    &class_object,
                                    &is_static_object,
-                                   &suppress_warnings,
-                                   &dart_sync_async};
+                                   &suppress_warnings};
     message.value.as_array.values = message_arr;
     message.value.as_array.length = ARRAY_SIZE(message_arr);
     // Send the message.
@@ -568,9 +563,16 @@
     suppress_warnings.type = Dart_CObject_kBool;
     suppress_warnings.value.as_bool = FLAG_suppress_fe_warnings;
 
-    Dart_CObject dart_sync_async;
-    dart_sync_async.type = Dart_CObject_kBool;
-    dart_sync_async.value.as_bool = FLAG_sync_async;
+    Dart_CObject bytecode;
+    bytecode.type = Dart_CObject_kBool;
+    // Interpreter is supported only on x64 and arm64.
+#if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_ARM64)
+    bytecode.value.as_bool =
+        FLAG_enable_interpreter || FLAG_use_bytecode_compiler;
+#else
+    bytecode.value.as_bool =
+        FLAG_use_bytecode_compiler && !FLAG_enable_interpreter;
+#endif
 
     Dart_CObject package_config_uri;
     if (package_config != NULL) {
@@ -616,7 +618,7 @@
                                    &isolate_id,
                                    &files,
                                    &suppress_warnings,
-                                   &dart_sync_async,
+                                   &bytecode,
                                    &package_config_uri,
                                    &multiroot_filepaths_object,
                                    &multiroot_scheme_object};
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index e8456fe..92c0a87 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -123,11 +123,15 @@
 
 RawLibrary* BuildingTranslationHelper::LookupLibraryByKernelLibrary(
     NameIndex library) {
-  return loader_->LookupLibrary(library).raw();
+  return loader_->LookupLibrary(library);
 }
 
 RawClass* BuildingTranslationHelper::LookupClassByKernelClass(NameIndex klass) {
-  return loader_->LookupClass(klass).raw();
+#if defined(DEBUG)
+  LibraryLookupHandleScope library_lookup_handle_scope(library_lookup_handle_);
+#endif  // defined(DEBUG)
+  library_lookup_handle_ = loader_->LookupLibraryFromClass(klass);
+  return loader_->LookupClass(library_lookup_handle_, klass);
 }
 
 LibraryIndex::LibraryIndex(const ExternalTypedData& kernel_data)
@@ -181,12 +185,14 @@
               0),
       type_translator_(&helper_, &active_class_, /* finalize= */ false),
       inferred_type_metadata_helper_(&helper_),
+      bytecode_metadata_helper_(&helper_, &type_translator_, &active_class_),
       external_name_class_(Class::Handle(Z)),
       external_name_field_(Field::Handle(Z)),
       potential_natives_(GrowableObjectArray::Handle(Z)),
       potential_pragma_functions_(GrowableObjectArray::Handle(Z)),
       potential_extension_libraries_(GrowableObjectArray::Handle(Z)),
       pragma_class_(Class::Handle(Z)),
+      name_index_handle_(Smi::Handle(Z)),
       expression_evaluation_library_(Library::Handle(Z)),
       expression_evaluation_function_(Function::Handle(Z)) {
   if (!program->is_single_program()) {
@@ -316,9 +322,18 @@
       Z, reader.ExternalDataFromTo(program_->metadata_mappings_offset(),
                                    program_->string_table_offset()));
 
-  kernel_program_info_ =
-      KernelProgramInfo::New(offsets, data, names, metadata_payloads,
-                             metadata_mappings, constants_table, scripts);
+  const Array& libraries_cache =
+      Array::Handle(Z, HashTables::New<UnorderedHashMap<SmiTraits>>(
+                           program_->library_count(), Heap::kOld));
+
+  const intptr_t kClassesPerLibraryGuess = 5;
+  const Array& classes_cache = Array::Handle(
+      Z, HashTables::New<UnorderedHashMap<SmiTraits>>(
+             kClassesPerLibraryGuess * program_->library_count(), Heap::kOld));
+
+  kernel_program_info_ = KernelProgramInfo::New(
+      offsets, data, names, metadata_payloads, metadata_mappings,
+      constants_table, scripts, libraries_cache, classes_cache);
 
   H.InitFromKernelProgramInfo(kernel_program_info_);
 
@@ -347,12 +362,14 @@
       helper_(zone_, &translation_helper_, script, kernel_data, 0),
       type_translator_(&helper_, &active_class_, /* finalize= */ false),
       inferred_type_metadata_helper_(&helper_),
+      bytecode_metadata_helper_(&helper_, &type_translator_, &active_class_),
       external_name_class_(Class::Handle(Z)),
       external_name_field_(Field::Handle(Z)),
       potential_natives_(GrowableObjectArray::Handle(Z)),
       potential_pragma_functions_(GrowableObjectArray::Handle(Z)),
       potential_extension_libraries_(GrowableObjectArray::Handle(Z)),
       pragma_class_(Class::Handle(Z)),
+      name_index_handle_(Smi::Handle(Z)),
       expression_evaluation_library_(Library::Handle(Z)),
       expression_evaluation_function_(Function::Handle(Z)) {
   ASSERT(T.active_class_ == &active_class_);
@@ -372,7 +389,8 @@
   // Though since constants cannot refer to types containing type parameter
   // references, the only purpose of the class is to serve as an owner for
   // signature functions (which get created for function types).
-  const dart::Library& owner_library = LookupLibrary(library_canonical_name(0));
+  const dart::Library& owner_library =
+      Library::Handle(Z, LookupLibrary(library_canonical_name(0)));
   const dart::Class& toplevel_class =
       Class::Handle(Z, owner_library.toplevel_class());
   ActiveClassScope active_class_scope(&active_class_, &toplevel_class);
@@ -638,9 +656,7 @@
     }
 
     NameIndex main_library = H.EnclosingName(main);
-    Library& library = LookupLibrary(main_library);
-
-    return library.raw();
+    return LookupLibrary(main_library);
   }
 
   // Either class finalization failed or we caught a compile error.
@@ -655,8 +671,8 @@
     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));
+  const Library& real_library =
+      Library::Handle(Z, Library::LookupLibrary(thread_, library_url));
   ASSERT(!real_library.IsNull());
   const Class& real_class = Class::Handle(
       Z, klass.IsNull() ? real_library.toplevel_class()
@@ -751,12 +767,13 @@
                                            bool* is_empty_program) {
   intptr_t length = program_->library_count();
   *is_empty_program = *is_empty_program && (length == 0);
+  Library& lib = Library::Handle(Z);
   for (intptr_t i = 0; i < length; i++) {
     intptr_t kernel_offset = library_offset(i);
     helper_.SetOffset(kernel_offset);
     LibraryHelper library_helper(&helper_);
     library_helper.ReadUntilIncluding(LibraryHelper::kCanonicalName);
-    dart::Library& lib = LookupLibraryOrNull(library_helper.canonical_name_);
+    lib = LookupLibraryOrNull(library_helper.canonical_name_);
     if (!lib.IsNull() && !lib.is_dart_scheme()) {
       // This is a library that already exists so mark it as being modified.
       modified_libs->Add(lib.index());
@@ -786,6 +803,13 @@
       return;
     }
   }
+  if (FLAG_enable_interpreter || FLAG_use_bytecode_compiler) {
+    if (bytecode_metadata_helper_.HasBytecode(field.kernel_offset() +
+                                              library_kernel_offset_)) {
+      field.set_has_initializer(true);
+      return;
+    }
+  }
   field.set_has_initializer(false);
 }
 
@@ -824,7 +848,7 @@
   }
 
   Library& library =
-      Library::Handle(Z, LookupLibrary(library_helper.canonical_name_).raw());
+      Library::Handle(Z, LookupLibrary(library_helper.canonical_name_));
 
   // The Kernel library is external implies that it is already loaded.
   ASSERT(!library_helper.IsExternal() || library.Loaded());
@@ -897,10 +921,11 @@
 
   // Load all classes.
   intptr_t next_class_offset = library_index.ClassOffset(0);
+  Class& klass = Class::Handle(Z);
   for (intptr_t i = 0; i < class_count; ++i) {
     helper_.SetOffset(next_class_offset);
     next_class_offset = library_index.ClassOffset(i + 1);
-    const Class& klass = LoadClass(library, toplevel_class, next_class_offset);
+    LoadClass(library, toplevel_class, next_class_offset, &klass);
     if (register_class) {
       classes.Add(klass, Heap::kOld);
     }
@@ -1050,8 +1075,8 @@
       hide_names = Array::null();
     }
 
-    Library& target_library =
-        LookupLibrary(dependency_helper.target_library_canonical_name_);
+    Library& target_library = Library::Handle(
+        Z, LookupLibrary(dependency_helper.target_library_canonical_name_));
     if (!FLAG_enable_mirrors &&
         target_library.url() == Symbols::DartMirrors().raw()) {
       H.ReportError("import of dart:mirrors with --enable-mirrors=false");
@@ -1202,35 +1227,38 @@
   }
 }
 
-Class& KernelLoader::LoadClass(const Library& library,
-                               const Class& toplevel_class,
-                               intptr_t class_end) {
+void KernelLoader::LoadClass(const Library& library,
+                             const Class& toplevel_class,
+                             intptr_t class_end,
+                             Class* klass) {
   intptr_t class_offset = helper_.ReaderOffset();
   ClassIndex class_index(program_->kernel_data(), program_->kernel_data_size(),
                          class_offset, class_end - class_offset);
 
   ClassHelper class_helper(&helper_);
   class_helper.ReadUntilIncluding(ClassHelper::kCanonicalName);
-  Class& klass = LookupClass(class_helper.canonical_name_);
-  klass.set_kernel_offset(class_offset - correction_offset_);
+  *klass = LookupClass(library, class_helper.canonical_name_);
+  klass->set_kernel_offset(class_offset - correction_offset_);
 
   // The class needs to have a script because all the functions in the class
   // will inherit it.  The predicate Function::IsOptimizable uses the absence of
   // a script to detect test functions that should not be optimized.
-  if (klass.script() == Script::null()) {
+  if (klass->script() == Script::null()) {
     class_helper.ReadUntilIncluding(ClassHelper::kSourceUriIndex);
     const Script& script =
         Script::Handle(Z, ScriptAt(class_helper.source_uri_index_));
-    klass.set_script(script);
+    klass->set_script(script);
     FixCoreLibraryScriptUri(library, script);
   }
-  if (klass.token_pos() == TokenPosition::kNoSource) {
+  if (klass->token_pos() == TokenPosition::kNoSource) {
     class_helper.ReadUntilIncluding(ClassHelper::kStartPosition);
-    klass.set_token_pos(class_helper.start_position_);
+    klass->set_token_pos(class_helper.start_position_);
   }
 
   class_helper.ReadUntilIncluding(ClassHelper::kFlags);
-  if (class_helper.is_enum_class()) klass.set_is_enum_class();
+  if (class_helper.is_enum_class()) {
+    klass->set_is_enum_class();
+  }
 
   class_helper.ReadUntilExcluding(ClassHelper::kAnnotations);
   intptr_t annotation_count = helper_.ReadListLength();
@@ -1242,15 +1270,15 @@
                       &is_potential_native_unused, &has_pragma_annotation);
   }
   if (has_pragma_annotation) {
-    klass.set_has_pragma(true);
+    klass->set_has_pragma(true);
   }
   class_helper.SetJustRead(ClassHelper::kAnnotations);
   class_helper.ReadUntilExcluding(ClassHelper::kTypeParameters);
   intptr_t type_parameter_counts =
       helper_.ReadListLength();  // read type_parameters list length.
 
-  ActiveClassScope active_class_scope(&active_class_, &klass);
-  if (!klass.is_cycle_free()) {
+  ActiveClassScope active_class_scope(&active_class_, klass);
+  if (!klass->is_cycle_free()) {
     LoadPreliminaryClass(&class_helper, type_parameter_counts);
   } else {
     for (intptr_t i = 0; i < type_parameter_counts; ++i) {
@@ -1261,7 +1289,7 @@
   }
 
   if ((FLAG_enable_mirrors || has_pragma_annotation) && annotation_count > 0) {
-    library.AddClassMetadata(klass, toplevel_class, TokenPosition::kNoSource,
+    library.AddClassMetadata(*klass, toplevel_class, TokenPosition::kNoSource,
                              class_offset - correction_offset_);
   }
 
@@ -1272,13 +1300,11 @@
       library.raw() != expression_evaluation_library_.raw();
 
   if (loading_native_wrappers_library_ || !register_class) {
-    FinishClassLoading(klass, library, toplevel_class, class_offset,
+    FinishClassLoading(*klass, library, toplevel_class, class_offset,
                        class_index, &class_helper);
   }
 
   helper_.SetOffset(class_end);
-
-  return klass;
 }
 
 void KernelLoader::FinishClassLoading(const Class& klass,
@@ -1760,11 +1786,12 @@
 
 RawScript* KernelLoader::LoadScriptAt(intptr_t index) {
   const String& uri_string = helper_.SourceTableUriFor(index);
-  String& sources = helper_.GetSourceFor(index);
+  const String& script_source = helper_.GetSourceFor(index);
+  String& sources = String::Handle(Z);
   TypedData& line_starts =
       TypedData::Handle(Z, helper_.GetLineStartsFor(index));
-  if (sources.Length() == 0 && line_starts.Length() == 0 &&
-      uri_string.Length() > 0) {
+  if (script_source.raw() == Symbols::Empty().raw() &&
+      line_starts.Length() == 0 && uri_string.Length() > 0) {
     // Entry included only to provide URI - actual source should already exist
     // in the VM, so try to find it.
     Library& lib = Library::Handle(Z);
@@ -1780,6 +1807,8 @@
         break;
       }
     }
+  } else {
+    sources = script_source.raw();
   }
 
   const Script& script = Script::Handle(
@@ -1789,8 +1818,8 @@
   script.set_kernel_script_index(index);
   script.set_kernel_program_info(kernel_program_info_);
   script.set_line_starts(line_starts);
-  script.set_debug_positions(Array::Handle(Array::null()));
-  script.set_yield_positions(Array::Handle(Array::null()));
+  script.set_debug_positions(Array::null_array());
+  script.set_yield_positions(Array::null_array());
   return script.raw();
 }
 
@@ -1808,39 +1837,48 @@
                                           const Field& field,
                                           FieldHelper* field_helper) {
   Tag tag = helper_.PeekTag();
-  if (field_helper->IsStatic() && tag == kNothing) {
-    // Static fields without an initializer are implicitly initialized to null.
-    // We do not need a getter.
-    field.SetStaticValue(Instance::Handle(Z), true);
-    return;
-  }
   if (tag == kSomething) {
     SimpleExpressionConverter converter(&H, &helper_);
     const bool has_simple_initializer =
         converter.IsSimple(helper_.ReaderOffset() + 1);  // ignore the tag.
-    if (field_helper->IsStatic()) {
-      // Static fields with initializers either have the static value set to the
-      // initializer value if it is simple enough or else set to an
-      // uninitialized sentinel.
-      if (has_simple_initializer) {
+    if (has_simple_initializer) {
+      if (field_helper->IsStatic()) {
         // We do not need a getter.
         field.SetStaticValue(converter.SimpleValue(), true);
         return;
-      }
-      // We do need a getter that evaluates the initializer if necessary.
-      field.SetStaticValue(Object::sentinel(), true);
-    } else if (has_simple_initializer) {
-      // Note: optimizer relies on DoubleInitialized bit in its field-unboxing
-      // heuristics. See JitCallSpecializer::VisitStoreInstanceField for more
-      // details.
-      field.RecordStore(converter.SimpleValue());
-      if (!converter.SimpleValue().IsNull() &&
-          converter.SimpleValue().IsDouble()) {
-        field.set_is_double_initialized(true);
+      } else {
+        // Note: optimizer relies on DoubleInitialized bit in its field-unboxing
+        // heuristics. See JitCallSpecializer::VisitStoreInstanceField for more
+        // details.
+        field.RecordStore(converter.SimpleValue());
+        if (!converter.SimpleValue().IsNull() &&
+            converter.SimpleValue().IsDouble()) {
+          field.set_is_double_initialized(true);
+        }
       }
     }
   }
 
+  if (field_helper->IsStatic()) {
+    bool has_initializer = (tag == kSomething);
+
+    if (FLAG_enable_interpreter || FLAG_use_bytecode_compiler) {
+      has_initializer = has_initializer ||
+                        bytecode_metadata_helper_.HasBytecode(
+                            field.kernel_offset() + library_kernel_offset_);
+    }
+
+    if (!has_initializer) {
+      // Static fields without an initializer are implicitly initialized to
+      // null. We do not need a getter.
+      field.SetStaticValue(Instance::null_instance(), true);
+      return;
+    }
+
+    // We do need a getter that evaluates the initializer if necessary.
+    field.SetStaticValue(Object::sentinel(), true);
+  }
+
   const String& getter_name = H.DartGetterName(field_helper->canonical_name_);
   const Object& script_class =
       ClassForScriptAt(klass, field_helper->source_uri_index_);
@@ -1919,70 +1957,101 @@
   }
 }
 
-Library& KernelLoader::LookupLibraryOrNull(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()) {
-      libraries_.Insert(library, handle);
+RawLibrary* KernelLoader::LookupLibraryOrNull(NameIndex library) {
+  RawLibrary* result;
+  name_index_handle_ = Smi::New(library);
+  {
+    NoSafepointScope no_safepoint_scope(thread_);
+    result = kernel_program_info_.LookupLibrary(thread_, name_index_handle_);
+    if (result != Library::null()) {
+      return result;
     }
   }
-  return *handle;
+  const String& url = H.DartString(H.CanonicalNameString(library));
+  {
+    NoSafepointScope no_safepoint_scope(thread_);
+    result = Library::LookupLibrary(thread_, url);
+    if (result == Library::null()) {
+      return result;
+    }
+  }
+  const Library& handle = Library::Handle(Z, result);
+  name_index_handle_ = Smi::New(library);
+  return kernel_program_info_.InsertLibrary(thread_, name_index_handle_,
+                                            handle);
 }
 
-Library& KernelLoader::LookupLibrary(NameIndex library) {
-  Library* handle = NULL;
-  if (!libraries_.Lookup(library, &handle)) {
-    handle = &Library::Handle(Z);
-    const String& url = H.DartSymbolPlain(H.CanonicalNameString(library));
+RawLibrary* KernelLoader::LookupLibrary(NameIndex library) {
+  name_index_handle_ = Smi::New(library);
+  {
+    NoSafepointScope no_safepoint_scope(thread_);
+    RawLibrary* result =
+        kernel_program_info_.LookupLibrary(thread_, name_index_handle_);
+    if (result != Library::null()) {
+      return result;
+    }
+  }
 
-    // We do not register expression evaluation libraries with the VM:
+  Library& 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 (expression_evaluation_library_.IsNull()) {
+      handle = Library::New(url);
+      expression_evaluation_library_ = handle.raw();
+    }
+    return expression_evaluation_library_.raw();
+  }
+  handle = Library::LookupLibrary(thread_, url);
+  if (handle.IsNull()) {
+    handle = Library::New(url);
+    handle.Register(thread_);
+  }
+  ASSERT(!handle.IsNull());
+  name_index_handle_ = Smi::New(library);
+  return kernel_program_info_.InsertLibrary(thread_, name_index_handle_,
+                                            handle);
+}
+
+RawLibrary* KernelLoader::LookupLibraryFromClass(NameIndex klass) {
+  return LookupLibrary(H.CanonicalNameParent(klass));
+}
+
+RawClass* KernelLoader::LookupClass(const Library& library, NameIndex klass) {
+  name_index_handle_ = Smi::New(klass);
+  {
+    NoSafepointScope no_safepoint_scope(thread_);
+    RawClass* raw_class =
+        kernel_program_info_.LookupClass(thread_, name_index_handle_);
+    if (raw_class != Class::null()) {
+      return raw_class;
+    }
+  }
+
+  ASSERT(!library.IsNull());
+  const String& name = H.DartClassName(klass);
+  Class& handle = Class::Handle(Z, library.LookupLocalClass(name));
+  bool register_class = true;
+  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.
-    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);
-  }
-  return *handle;
-}
+    register_class = library.raw() != expression_evaluation_library_.raw();
 
-Class& KernelLoader::LookupClass(NameIndex klass) {
-  Class* handle = NULL;
-  if (!classes_.Lookup(klass, &handle)) {
-    Library& library = LookupLibrary(H.CanonicalNameParent(klass));
-    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, register_class);
-      if (register_class) {
-        library.AddClass(*handle);
-      }
+    handle = Class::New(library, name, Script::Handle(Z),
+                        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
-    // recursively from ReadPreliminaryClass for the same class.
-    classes_.Insert(klass, handle);
   }
-  return *handle;
+  ASSERT(!handle.IsNull());
+  if (register_class) {
+    name_index_handle_ = Smi::New(klass);
+    kernel_program_info_.InsertClass(thread_, name_index_handle_, handle);
+  }
+  return handle.raw();
 }
 
 RawFunction::Kind KernelLoader::GetFunctionType(
diff --git a/runtime/vm/kernel_loader.h b/runtime/vm/kernel_loader.h
index 7e40d13..bb4a16b 100644
--- a/runtime/vm/kernel_loader.h
+++ b/runtime/vm/kernel_loader.h
@@ -8,6 +8,7 @@
 #if !defined(DART_PRECOMPILED_RUNTIME)
 
 #include "vm/bit_vector.h"
+#include "vm/compiler/frontend/bytecode_reader.h"
 #include "vm/compiler/frontend/kernel_translation_helper.h"
 #include "vm/hash_map.h"
 #include "vm/kernel.h"
@@ -24,7 +25,9 @@
   BuildingTranslationHelper(KernelLoader* loader,
                             Thread* thread,
                             Heap::Space space)
-      : TranslationHelper(thread, space), loader_(loader) {}
+      : TranslationHelper(thread, space),
+        loader_(loader),
+        library_lookup_handle_(Library::Handle(thread->zone())) {}
   virtual ~BuildingTranslationHelper() {}
 
   virtual RawLibrary* LookupLibraryByKernelLibrary(NameIndex library);
@@ -33,6 +36,25 @@
  private:
   KernelLoader* loader_;
 
+#if defined(DEBUG)
+  class LibraryLookupHandleScope {
+   public:
+    explicit LibraryLookupHandleScope(Library& lib) : lib_(lib) {
+      ASSERT(lib_.IsNull());
+    }
+
+    ~LibraryLookupHandleScope() { lib_ = Library::null(); }
+
+   private:
+    Library& lib_;
+
+    DISALLOW_COPY_AND_ASSIGN(LibraryLookupHandleScope);
+  };
+#endif  // defined(DEBUG)
+
+  // Preallocated handle for use in LookupClassByKernelClass().
+  Library& library_lookup_handle_;
+
   DISALLOW_COPY_AND_ASSIGN(BuildingTranslationHelper);
 };
 
@@ -228,9 +250,10 @@
 
   void FixCoreLibraryScriptUri(const Library& library, const Script& script);
 
-  Class& LoadClass(const Library& library,
-                   const Class& toplevel_class,
-                   intptr_t class_end);
+  void LoadClass(const Library& library,
+                 const Class& toplevel_class,
+                 intptr_t class_end,
+                 Class* klass);
 
   void FinishClassLoading(const Class& klass,
                           const Library& library,
@@ -266,9 +289,10 @@
   void LoadLibraryImportsAndExports(Library* library,
                                     const Class& toplevel_class);
 
-  Library& LookupLibraryOrNull(NameIndex library);
-  Library& LookupLibrary(NameIndex library);
-  Class& LookupClass(NameIndex klass);
+  RawLibrary* LookupLibraryOrNull(NameIndex library);
+  RawLibrary* LookupLibrary(NameIndex library);
+  RawLibrary* LookupLibraryFromClass(NameIndex klass);
+  RawClass* LookupClass(const Library& library, NameIndex klass);
 
   RawFunction::Kind GetFunctionType(ProcedureHelper::Kind procedure_kind);
 
@@ -344,6 +368,7 @@
   KernelReaderHelper helper_;
   TypeTranslator type_translator_;
   InferredTypeMetadataHelper inferred_type_metadata_helper_;
+  BytecodeMetadataHelper bytecode_metadata_helper_;
 
   Class& external_name_class_;
   Field& external_name_field_;
@@ -353,8 +378,7 @@
 
   Class& pragma_class_;
 
-  Mapping<Library> libraries_;
-  Mapping<Class> classes_;
+  Smi& name_index_handle_;
 
   // We "re-use" the normal .dill file format for encoding compiled evaluation
   // expressions from the debugger.  This allows us to also reuse the normal
diff --git a/runtime/vm/metrics.cc b/runtime/vm/metrics.cc
index f00d991..99bc372 100644
--- a/runtime/vm/metrics.cc
+++ b/runtime/vm/metrics.cc
@@ -303,11 +303,6 @@
   return Service::MaxRSS();
 }
 
-#define VM_METRIC_VARIABLE(type, variable, name, unit)                         \
-  static type vm_metric_##variable##_;
-VM_METRIC_LIST(VM_METRIC_VARIABLE);
-#undef VM_METRIC_VARIABLE
-
 void Metric::Init() {
 #define VM_METRIC_INIT(type, variable, name, unit)                             \
   vm_metric_##variable##_.InitInstance(name, NULL, Metric::unit);
diff --git a/runtime/vm/metrics.h b/runtime/vm/metrics.h
index fab74b9..75f0781 100644
--- a/runtime/vm/metrics.h
+++ b/runtime/vm/metrics.h
@@ -180,6 +180,13 @@
   virtual int64_t Value() const;
 };
 
+#if !defined(PRODUCT)
+#define VM_METRIC_VARIABLE(type, variable, name, unit)                         \
+  static type vm_metric_##variable##_;
+VM_METRIC_LIST(VM_METRIC_VARIABLE);
+#undef VM_METRIC_VARIABLE
+#endif  // !defined(PRODUCT)
+
 }  // namespace dart
 
 #endif  // RUNTIME_VM_METRICS_H_
diff --git a/runtime/vm/mixin_test.cc b/runtime/vm/mixin_test.cc
index 0a10a17..a99aad8 100644
--- a/runtime/vm/mixin_test.cc
+++ b/runtime/vm/mixin_test.cc
@@ -29,9 +29,6 @@
       "main() {\n"
       "  return new C().bar();\n"
       "}\n",
-    },
-    {
-      "file:///.packages", "untitled:/"
     }};
   // clang-format on
 
diff --git a/runtime/vm/native_api_impl.cc b/runtime/vm/native_api_impl.cc
index 49cbe58..5c6e00a 100644
--- a/runtime/vm/native_api_impl.cc
+++ b/runtime/vm/native_api_impl.cc
@@ -217,23 +217,4 @@
 #endif  // defined(DART_PRECOMPILED_RUNTIME)
 }
 
-DART_EXPORT Dart_Handle Dart_ParseAll() {
-#if defined(DART_PRECOMPILED_RUNTIME)
-  return Api::NewError("%s: Cannot compile on an AOT runtime.", CURRENT_FUNC);
-#else
-  DARTSCOPE(Thread::Current());
-  API_TIMELINE_DURATION(T);
-  Dart_Handle result = Api::CheckAndFinalizePendingClasses(T);
-  if (::Dart_IsError(result)) {
-    return result;
-  }
-  CHECK_CALLBACK_STATE(T);
-  const Error& error = Error::Handle(T->zone(), Library::ParseAll(T));
-  if (!error.IsNull()) {
-    return Api::NewHandle(T, error.raw());
-  }
-  return Api::Success();
-#endif  // defined(DART_PRECOMPILED_RUNTIME)
-}
-
 }  // namespace dart
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index e48782a..fe0999e 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -18,7 +18,6 @@
 #include "vm/compiler/frontend/kernel_translation_helper.h"
 #include "vm/compiler/intrinsifier.h"
 #include "vm/compiler/jit/compiler.h"
-#include "vm/compiler_stats.h"
 #include "vm/cpu.h"
 #include "vm/dart.h"
 #include "vm/dart_api_state.h"
@@ -52,7 +51,6 @@
 #include "vm/tags.h"
 #include "vm/thread_registry.h"
 #include "vm/timeline.h"
-#include "vm/timer.h"
 #include "vm/type_table.h"
 #include "vm/type_testing_stubs.h"
 #include "vm/unicode.h"
@@ -122,8 +120,6 @@
 RawClass* Object::redirection_data_class_ =
     reinterpret_cast<RawClass*>(RAW_NULL);
 RawClass* Object::field_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
-RawClass* Object::literal_token_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
-RawClass* Object::token_stream_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
 RawClass* Object::script_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
 RawClass* Object::library_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
 RawClass* Object::namespace_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
@@ -398,10 +394,6 @@
   return ((0 <= c) && (c < 32)) || (c == 127);
 }
 
-static inline bool NeedsEscapeSequence(int32_t c) {
-  return (c == '"') || (c == '\\') || (c == '$') || IsAsciiNonprintable(c);
-}
-
 static int32_t EscapeOverhead(int32_t c) {
   if (IsSpecialCharacter(c)) {
     return 1;  // 1 additional byte for the backslash.
@@ -586,12 +578,6 @@
   cls = Class::New<Field>();
   field_class_ = cls.raw();
 
-  cls = Class::New<LiteralToken>();
-  literal_token_class_ = cls.raw();
-
-  cls = Class::New<TokenStream>();
-  token_stream_class_ = cls.raw();
-
   cls = Class::New<Script>();
   script_class_ = cls.raw();
 
@@ -963,8 +949,6 @@
   signature_data_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
   redirection_data_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
   field_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
-  literal_token_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
-  token_stream_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
   script_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
   library_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
   namespace_class_ = reinterpret_cast<RawClass*>(RAW_NULL);
@@ -1064,8 +1048,6 @@
   SET_CLASS_NAME(signature_data, SignatureData);
   SET_CLASS_NAME(redirection_data, RedirectionData);
   SET_CLASS_NAME(field, Field);
-  SET_CLASS_NAME(literal_token, LiteralToken);
-  SET_CLASS_NAME(token_stream, TokenStream);
   SET_CLASS_NAME(script, Script);
   SET_CLASS_NAME(library, LibraryClass);
   SET_CLASS_NAME(namespace, Namespace);
@@ -1233,8 +1215,8 @@
       RawObject* raw = reinterpret_cast<RawObject*>(RawObject::FromAddr(addr));
       uword new_tags = RawObject::ClassIdTag::update(kInstanceCid, 0);
       new_tags = RawObject::SizeTag::update(leftover_size, new_tags);
-      new_tags = RawObject::VMHeapObjectTag::update(
-          obj.raw()->ptr()->IsVMHeapObject(), new_tags);
+      new_tags = RawObject::VMHeapObjectTag::update(obj.raw()->IsVMHeapObject(),
+                                                    new_tags);
       const bool is_old = obj.raw()->IsOldObject();
       new_tags = RawObject::OldBit::update(is_old, new_tags);
       new_tags = RawObject::OldAndNotMarkedBit::update(is_old, new_tags);
@@ -1250,7 +1232,10 @@
       // TODO(iposva): Investigate whether CompareAndSwapWord is necessary.
       do {
         old_tags = tags;
-        tags = obj.CompareAndSwapTags(old_tags, new_tags);
+        // We can't use obj.CompareAndSwapTags here because we don't have a
+        // handle for the new object.
+        tags = AtomicOperations::CompareAndSwapUint32(&raw->ptr()->tags_,
+                                                      old_tags, new_tags);
       } while (tags != old_tags);
     }
   }
@@ -2962,6 +2947,18 @@
   return false;
 }
 
+bool Function::IsDynamicInvocationForwaderName(const String& name) {
+  return name.StartsWith(Symbols::DynamicPrefix());
+}
+
+RawString* Function::DemangleDynamicInvocationForwarderName(
+    const String& name) {
+  const intptr_t kDynamicPrefixLength = 4;  // "dyn:"
+  ASSERT(Symbols::DynamicPrefix().Length() == kDynamicPrefixLength);
+  return Symbols::New(Thread::Current(), name, kDynamicPrefixLength,
+                      name.Length() - kDynamicPrefixLength);
+}
+
 #if !defined(DART_PRECOMPILED_RUNTIME)
 RawFunction* Function::CreateDynamicInvocationForwarder(
     const String& mangled_name) const {
@@ -2993,22 +2990,10 @@
   return forwarder.raw();
 }
 
-bool Function::IsDynamicInvocationForwaderName(const String& name) {
-  return name.StartsWith(Symbols::DynamicPrefix());
-}
-
 RawString* Function::CreateDynamicInvocationForwarderName(const String& name) {
   return Symbols::FromConcat(Thread::Current(), Symbols::DynamicPrefix(), name);
 }
 
-RawString* Function::DemangleDynamicInvocationForwarderName(
-    const String& name) {
-  const intptr_t kDynamicPrefixLength = 4;  // "dyn:"
-  ASSERT(Symbols::DynamicPrefix().Length() == kDynamicPrefixLength);
-  return Symbols::New(Thread::Current(), name, kDynamicPrefixLength,
-                      name.Length() - kDynamicPrefixLength);
-}
-
 RawFunction* Function::GetDynamicInvocationForwarder(
     const String& mangled_name,
     bool allow_add /* = true */) const {
@@ -3360,51 +3345,12 @@
   return true;
 }
 
-static RawString* BuildClosureSource(const Array& formal_params,
-                                     const String& expr) {
-  const GrowableObjectArray& src_pieces =
-      GrowableObjectArray::Handle(GrowableObjectArray::New());
-  String& piece = String::Handle();
-  src_pieces.Add(Symbols::LParen());
-  // Add formal parameters.
-  intptr_t num_formals = formal_params.Length();
-  for (intptr_t i = 0; i < num_formals; i++) {
-    if (i > 0) {
-      src_pieces.Add(Symbols::CommaSpace());
-    }
-    piece ^= formal_params.At(i);
-    src_pieces.Add(piece);
-  }
-  src_pieces.Add(Symbols::RParenArrow());
-  src_pieces.Add(expr);
-  src_pieces.Add(Symbols::Semicolon());
-  return String::ConcatAll(Array::Handle(Array::MakeFixedLength(src_pieces)));
-}
-
 RawFunction* Function::EvaluateHelper(const Class& cls,
                                       const String& expr,
                                       const Array& param_names,
                                       bool is_static) {
-  const String& func_src =
-      String::Handle(BuildClosureSource(param_names, expr));
-  Script& script = Script::Handle();
-  script =
-      Script::New(Symbols::EvalSourceUri(), func_src, RawScript::kEvaluateTag);
-  // In order to tokenize the source, we need to get the key to mangle
-  // private names from the library from which the class originates.
-  const Library& lib = Library::Handle(cls.library());
-  ASSERT(!lib.IsNull());
-  const String& lib_key = String::Handle(lib.private_key());
-  script.Tokenize(lib_key, false);
-
-  const Function& func =
-      Function::Handle(Function::NewEvalFunction(cls, script, is_static));
-  func.set_result_type(Object::dynamic_type());
-  const intptr_t num_implicit_params = is_static ? 0 : 1;
-  func.set_num_fixed_parameters(num_implicit_params + param_names.Length());
-  func.SetNumOptionalParameters(0, true);
-  func.SetIsOptimizable(false);
-  return func.raw();
+  UNREACHABLE();
+  return Function::null();
 }
 
 // Conventions:
@@ -3438,6 +3384,26 @@
   return DartEntry::InvokeFunction(throwNew, args);
 }
 
+static RawObject* ThrowTypeError(const TokenPosition token_pos,
+                                 const Instance& src_value,
+                                 const AbstractType& dst_type,
+                                 const String& dst_name) {
+  const Array& args = Array::Handle(Array::New(5));
+  const Smi& pos = Smi::Handle(Smi::New(token_pos.value()));
+  args.SetAt(0, pos);
+  args.SetAt(1, src_value);
+  args.SetAt(2, dst_type);
+  args.SetAt(3, dst_name);
+  args.SetAt(4, String::Handle());  // bound error message
+
+  const Library& libcore = Library::Handle(Library::CoreLibrary());
+  const Class& TypeError =
+      Class::Handle(libcore.LookupClassAllowPrivate(Symbols::TypeError()));
+  const Function& throwNew = Function::Handle(
+      TypeError.LookupFunctionAllowPrivate(Symbols::ThrowNew()));
+  return DartEntry::InvokeFunction(throwNew, args);
+}
+
 RawObject* Class::InvokeGetter(const String& getter_name,
                                bool throw_nsm_if_absent,
                                bool respect_reflectable) const {
@@ -3502,21 +3468,31 @@
   const String& internal_setter_name =
       String::Handle(zone, Field::SetterName(setter_name));
 
+  AbstractType& parameter_type = AbstractType::Handle(zone);
+  AbstractType& argument_type =
+      AbstractType::Handle(zone, value.GetType(Heap::kOld));
+
   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);
     }
-
+    parameter_type ^= setter.ParameterTypeAt(0);
+    if (!argument_type.IsNullType() && !parameter_type.IsDynamicType() &&
+        !value.IsInstanceOf(parameter_type, Object::null_type_arguments(),
+                            Object::null_type_arguments(), NULL)) {
+      const String& argument_name =
+          String::Handle(zone, setter.ParameterNameAt(0));
+      return ThrowTypeError(setter.token_pos(), value, parameter_type,
+                            argument_name);
+    }
     // Invoke the setter and return the result.
     return DartEntry::InvokeFunction(setter, args);
   }
@@ -3525,13 +3501,20 @@
     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);
   }
 
+  parameter_type ^= field.type();
+  if (!argument_type.IsNullType() && !parameter_type.IsDynamicType() &&
+      !value.IsInstanceOf(parameter_type, Object::null_type_arguments(),
+                          Object::null_type_arguments(), NULL)) {
+    const String& argument_name = String::Handle(zone, field.name());
+    return ThrowTypeError(field.token_pos(), value, parameter_type,
+                          argument_name);
+  }
   field.SetStaticValue(value);
   return value.raw();
 }
@@ -3581,19 +3564,21 @@
       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);
-
+  const TypeArguments& type_args = Object::null_type_arguments();
   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);
   }
-
+  RawObject* type_error =
+      function.DoArgumentTypesMatch(args, args_descriptor, type_args);
+  if (type_error != Error::null()) {
+    return type_error;
+  }
   return DartEntry::InvokeFunction(function, args, args_descriptor_array);
 }
 
@@ -3969,10 +3954,6 @@
       return Symbols::RedirectionData().raw();
     case kFieldCid:
       return Symbols::Field().raw();
-    case kLiteralTokenCid:
-      return Symbols::LiteralToken().raw();
-    case kTokenStreamCid:
-      return Symbols::TokenStream().raw();
     case kScriptCid:
       return Symbols::Script().raw();
     case kLibraryCid:
@@ -4106,37 +4087,14 @@
     return TokenPosition(largest_seen);
   }
 
-  const TokenStream& tkns = TokenStream::Handle(zone, scr.tokens());
-  if (tkns.IsNull()) {
-    ASSERT(Dart::vm_snapshot_kind() == Snapshot::kFullAOT);
-    return TokenPosition::kNoSource;
-  }
-  TokenStream::Iterator tkit(zone, tkns, token_pos(),
-                             TokenStream::Iterator::kNoNewlines);
-  intptr_t level = 0;
-  while (tkit.CurrentTokenKind() != Token::kEOS) {
-    if (tkit.CurrentTokenKind() == Token::kLBRACE) {
-      level++;
-    } else if (tkit.CurrentTokenKind() == Token::kRBRACE) {
-      if (--level == 0) {
-        return tkit.CurrentPosition();
-      }
-    }
-    tkit.Advance();
-  }
   UNREACHABLE();
-  return TokenPosition::kNoSource;
 #endif
 }
 
 int32_t Class::SourceFingerprint() const {
 #if !defined(DART_PRECOMPILED_RUNTIME)
-  if (kernel_offset() > 0) {
-    return kernel::KernelSourceFingerprintHelper::CalculateClassFingerprint(
-        *this);
-  }
-  return Script::Handle(script()).SourceFingerprint(token_pos(),
-                                                    ComputeEndTokenPos());
+  return kernel::KernelSourceFingerprintHelper::CalculateClassFingerprint(
+      *this);
 #else
   return 0;
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
@@ -6024,7 +5982,7 @@
     case RawFunction::kIrregexpFunction:
       return false;
     case RawFunction::kImplicitStaticFinalGetter:
-      return kernel::IsFieldInitializer(*this, zone);
+      return kernel::IsFieldInitializer(*this, zone) || is_const();
     default:
       return true;
   }
@@ -7026,6 +6984,87 @@
   return true;
 }
 
+RawObject* Function::DoArgumentTypesMatch(
+    const Array& args,
+    const ArgumentsDescriptor& args_desc,
+    const TypeArguments& instantiator_type_args) const {
+  Thread* thread = Thread::Current();
+  Zone* zone = thread->zone();
+  Function& instantiated_func = Function::Handle(zone, raw());
+
+  if (!HasInstantiatedSignature()) {
+    instantiated_func ^= InstantiateSignatureFrom(instantiator_type_args,
+                                                  Object::null_type_arguments(),
+                                                  kAllFree, Heap::kOld);
+  }
+  AbstractType& argument_type = AbstractType::Handle(zone);
+  AbstractType& parameter_type = AbstractType::Handle(zone);
+  Instance& argument = Instance::Handle(zone);
+
+  // Check types of the provided arguments against the expected parameter types.
+  for (intptr_t i = args_desc.FirstArgIndex(); i < args_desc.PositionalCount();
+       ++i) {
+    argument ^= args.At(i);
+    argument_type ^= argument.GetType(Heap::kOld);
+    parameter_type ^= instantiated_func.ParameterTypeAt(i);
+
+    // If the argument type is dynamic or the parameter is null, move on.
+    if (parameter_type.IsDynamicType() || argument_type.IsNullType()) {
+      continue;
+    }
+    if (!argument.IsInstanceOf(parameter_type, instantiator_type_args,
+                               Object::null_type_arguments(), NULL)) {
+      String& argument_name = String::Handle(zone, ParameterNameAt(i));
+      return ThrowTypeError(token_pos(), argument, parameter_type,
+                            argument_name);
+    }
+  }
+
+  const intptr_t num_arguments = args_desc.Count();
+  const intptr_t num_named_arguments = args_desc.NamedCount();
+  if (num_named_arguments == 0) {
+    return Error::null();
+  }
+
+  String& argument_name = String::Handle(zone);
+  String& parameter_name = String::Handle(zone);
+
+  // Check types of named arguments against expected parameter type.
+  for (intptr_t i = 0; i < num_named_arguments; i++) {
+    argument_name ^= args_desc.NameAt(i);
+    ASSERT(argument_name.IsSymbol());
+    bool found = false;
+    const intptr_t num_positional_args = num_arguments - num_named_arguments;
+    const int num_parameters = NumParameters();
+
+    // Try to find the named parameter that matches the provided argument.
+    for (intptr_t j = num_positional_args; !found && (j < num_parameters);
+         j++) {
+      parameter_name = ParameterNameAt(j);
+      ASSERT(argument_name.IsSymbol());
+      if (argument_name.Equals(parameter_name)) {
+        found = true;
+        argument ^= args.At(args_desc.PositionAt(i));
+        argument_type ^= argument.GetType(Heap::kOld);
+        parameter_type ^= instantiated_func.ParameterTypeAt(j);
+
+        // If the argument type is dynamic or the parameter is null, move on.
+        if (parameter_type.IsDynamicType() || argument_type.IsNullType()) {
+          continue;
+        }
+        if (!argument.IsInstanceOf(parameter_type, instantiator_type_args,
+                                   Object::null_type_arguments(), NULL)) {
+          String& argument_name = String::Handle(zone, ParameterNameAt(i));
+          return ThrowTypeError(token_pos(), argument, parameter_type,
+                                argument_name);
+        }
+      }
+    }
+    ASSERT(found);
+  }
+  return Error::null();
+}
+
 // Helper allocating a C string buffer in the zone, printing the fully qualified
 // name of a function in it, and replacing ':' by '_' to make sure the
 // constructed name is a valid C++ identifier for debugging purpose.
@@ -8080,6 +8119,11 @@
   return HasCode() && Code::Handle(CurrentCode()).is_optimized();
 }
 
+bool Function::ShouldCompilerOptimize() const {
+  return !FLAG_enable_interpreter ||
+         ((unoptimized_code() != Object::null()) && WasCompiled());
+}
+
 RawString* Function::UserVisibleName() const {
   if (FLAG_show_internal_names) {
     return name();
@@ -8177,50 +8221,16 @@
                                   to_col + to_length);
   }
 
-  const TokenStream& stream = TokenStream::Handle(zone, func_script.tokens());
-  if (!func_script.HasSource()) {
-    // When source is not available, avoid printing the whole token stream and
-    // doing expensive position calculations.
-    return stream.GenerateSource(token_pos(), end_token_pos().Next());
-  }
-
-  const TokenStream::Iterator tkit(zone, stream, end_token_pos());
-  intptr_t from_line;
-  intptr_t from_col;
-  intptr_t to_line;
-  intptr_t to_col;
-  func_script.GetTokenLocation(token_pos(), &from_line, &from_col);
-  func_script.GetTokenLocation(end_token_pos(), &to_line, &to_col);
-  intptr_t last_tok_len = String::Handle(tkit.CurrentLiteral()).Length();
-  // Handle special cases for end tokens of closures (where we exclude the last
-  // token):
-  // (1) "foo(() => null, bar);": End token is `,', but we don't print it.
-  // (2) "foo(() => null);": End token is ')`, but we don't print it.
-  // (3) "var foo = () => null;": End token is `;', but in this case the token
-  // semicolon belongs to the assignment so we skip it.
-  if ((tkit.CurrentTokenKind() == Token::kCOMMA) ||   // Case 1.
-      (tkit.CurrentTokenKind() == Token::kRPAREN) ||  // Case 2.
-      (tkit.CurrentTokenKind() == Token::kSEMICOLON &&
-       String::Handle(zone, name()).Equals("<anonymous closure>"))) {  // Cas 3.
-    last_tok_len = 0;
-  }
-  const String& result =
-      String::Handle(zone, func_script.GetSnippet(from_line, from_col, to_line,
-                                                  to_col + last_tok_len));
-  ASSERT(!result.IsNull());
-  return result.raw();
+  UNREACHABLE();
+  return String::null();
 }
 
 // Construct fingerprint from token stream. The token stream contains also
 // arguments.
 int32_t Function::SourceFingerprint() const {
 #if !defined(DART_PRECOMPILED_RUNTIME)
-  if (kernel_offset() > 0) {
-    return kernel::KernelSourceFingerprintHelper::CalculateFunctionFingerprint(
-        *this);
-  }
-  return Script::Handle(script()).SourceFingerprint(token_pos(),
-                                                    end_token_pos());
+  return kernel::KernelSourceFingerprintHelper::CalculateFunctionFingerprint(
+      *this);
 #else
   return 0;
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
@@ -8239,7 +8249,6 @@
     }
   }
   const Array& array = Array::Handle(Array::New(count, Heap::kOld));
-  INC_STAT(Thread::Current(), total_code_size, count * sizeof(uword));
   count = 1;
   for (intptr_t i = 0; i < deopt_id_to_ic_data.length(); i++) {
     if (deopt_id_to_ic_data[i] != NULL) {
@@ -8822,44 +8831,16 @@
 
 int32_t Field::SourceFingerprint() const {
 #if !defined(DART_PRECOMPILED_RUNTIME)
-  if (kernel_offset() > 0) {
-    return kernel::KernelSourceFingerprintHelper::CalculateFieldFingerprint(
-        *this);
-  }
-  return Script::Handle(Script()).SourceFingerprint(token_pos(),
-                                                    end_token_pos());
+  return kernel::KernelSourceFingerprintHelper::CalculateFieldFingerprint(
+      *this);
 #else
   return 0;
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 }
 
 RawString* Field::InitializingExpression() const {
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-  const class Script& scr = Script::Handle(zone, Script());
-  ASSERT(!scr.IsNull());
-  const TokenStream& tkns = TokenStream::Handle(zone, scr.tokens());
-  if (tkns.IsNull()) {
-    ASSERT(Dart::vm_snapshot_kind() == Snapshot::kFullAOT);
-    return String::null();
-  }
-  TokenStream::Iterator tkit(zone, tkns, token_pos());
-  ASSERT(Token::IsIdentifier(tkit.CurrentTokenKind()));
-#if defined(DEBUG)
-  const String& literal = String::Handle(zone, tkit.CurrentLiteral());
-  ASSERT(literal.raw() == name());
-#endif
-  tkit.Advance();
-  if (tkit.CurrentTokenKind() != Token::kASSIGN) {
-    return String::null();
-  }
-  tkit.Advance();
-  const TokenPosition start_of_expression = tkit.CurrentPosition();
-  while (tkit.CurrentTokenKind() != Token::kSEMICOLON) {
-    tkit.Advance();
-  }
-  const TokenPosition end_of_expression = tkit.CurrentPosition();
-  return scr.GetSnippet(start_of_expression, end_of_expression);
+  UNREACHABLE();
+  return String::null();
 }
 
 RawString* Field::UserVisibleName() const {
@@ -9538,702 +9519,14 @@
   DeoptimizeDependentCode();
 }
 
-void LiteralToken::set_literal(const String& literal) const {
-  StorePointer(&raw_ptr()->literal_, literal.raw());
-}
-
-void LiteralToken::set_value(const Object& value) const {
-  StorePointer(&raw_ptr()->value_, value.raw());
-}
-
-RawLiteralToken* LiteralToken::New() {
-  ASSERT(Object::literal_token_class() != Class::null());
-  RawObject* raw = Object::Allocate(LiteralToken::kClassId,
-                                    LiteralToken::InstanceSize(), Heap::kOld);
-  return reinterpret_cast<RawLiteralToken*>(raw);
-}
-
-RawLiteralToken* LiteralToken::New(Token::Kind kind, const String& literal) {
-  const LiteralToken& result = LiteralToken::Handle(LiteralToken::New());
-  result.set_kind(kind);
-  result.set_literal(literal);
-  if (kind == Token::kINTEGER) {
-    const Integer& value = Integer::Handle(Integer::NewCanonical(literal));
-    if (value.IsNull()) {
-      // Integer is out of range.
-      return LiteralToken::null();
-    }
-    ASSERT(value.IsSmi() || value.IsOld());
-    result.set_value(value);
-  } else if (kind == Token::kDOUBLE) {
-    const Double& value = Double::Handle(Double::NewCanonical(literal));
-    result.set_value(value);
-  } else {
-    ASSERT(Token::NeedsLiteralToken(kind));
-    result.set_value(literal);
-  }
-  return result.raw();
-}
-
-const char* LiteralToken::ToCString() const {
-  const String& token = String::Handle(literal());
-  return token.ToCString();
-}
-
-RawGrowableObjectArray* TokenStream::TokenObjects() const {
-  return raw_ptr()->token_objects_;
-}
-
-void TokenStream::SetTokenObjects(const GrowableObjectArray& value) const {
-  StorePointer(&raw_ptr()->token_objects_, value.raw());
-}
-
-RawExternalTypedData* TokenStream::GetStream() const {
-  return raw_ptr()->stream_;
-}
-
-void TokenStream::SetStream(const ExternalTypedData& value) const {
-  StorePointer(&raw_ptr()->stream_, value.raw());
-}
-
-void TokenStream::DataFinalizer(void* isolate_callback_data,
-                                Dart_WeakPersistentHandle handle,
-                                void* peer) {
-  ASSERT(peer != NULL);
-  ::free(peer);
-}
-
-RawString* TokenStream::PrivateKey() const {
-  return raw_ptr()->private_key_;
-}
-
-void TokenStream::SetPrivateKey(const String& value) const {
-  StorePointer(&raw_ptr()->private_key_, value.raw());
-}
-
-RawString* TokenStream::GenerateSource() const {
-  return GenerateSource(TokenPosition::kMinSource, TokenPosition::kMaxSource);
-}
-
-RawString* TokenStream::GenerateSource(TokenPosition start_pos,
-                                       TokenPosition end_pos) const {
-  Zone* zone = Thread::Current()->zone();
-  Iterator iterator(zone, *this, start_pos, Iterator::kAllTokens);
-  const ExternalTypedData& data = ExternalTypedData::Handle(zone, GetStream());
-  const GrowableObjectArray& literals = GrowableObjectArray::Handle(
-      zone, GrowableObjectArray::New(data.Length()));
-  const String& private_key = String::Handle(zone, PrivateKey());
-  intptr_t private_len = private_key.Length();
-
-  Token::Kind curr = iterator.CurrentTokenKind();
-  Token::Kind prev = Token::kILLEGAL;
-  // Handles used in the loop.
-  Object& obj = Object::Handle(zone);
-  String& literal = String::Handle(zone);
-  // Current indentation level.
-  int indent = 0;
-
-  while ((curr != Token::kEOS) && (iterator.CurrentPosition() < end_pos)) {
-    // Remember current values for this token.
-    obj = iterator.CurrentToken();
-    literal = iterator.MakeLiteralToken(obj);
-    // Advance to be able to use next token kind.
-    iterator.Advance();
-    Token::Kind next = iterator.CurrentTokenKind();
-
-    // Handle the current token.
-    if (curr == Token::kSTRING) {
-      bool escape_characters = false;
-      for (intptr_t i = 0; i < literal.Length(); i++) {
-        if (NeedsEscapeSequence(literal.CharAt(i))) {
-          escape_characters = true;
-        }
-      }
-      if ((prev != Token::kINTERPOL_VAR) && (prev != Token::kINTERPOL_END)) {
-        literals.Add(Symbols::DoubleQuote());
-      }
-      if (escape_characters) {
-        literal = String::EscapeSpecialCharacters(literal);
-        literals.Add(literal);
-      } else {
-        literals.Add(literal);
-      }
-      if ((next != Token::kINTERPOL_VAR) && (next != Token::kINTERPOL_START)) {
-        literals.Add(Symbols::DoubleQuote());
-      }
-    } else if (curr == Token::kINTERPOL_VAR) {
-      literals.Add(Symbols::Dollar());
-      if (literal.CharAt(0) == Library::kPrivateIdentifierStart) {
-        literal = String::SubString(literal, 0, literal.Length() - private_len);
-      }
-      literals.Add(literal);
-    } else if (curr == Token::kIDENT) {
-      if (literal.CharAt(0) == Library::kPrivateIdentifierStart) {
-        literal = String::SubString(literal, 0, literal.Length() - private_len);
-      }
-      literals.Add(literal);
-    } else {
-      literals.Add(literal);
-    }
-    // Determine the separation text based on this current token.
-    const String* separator = NULL;
-    switch (curr) {
-      case Token::kLBRACE:
-      case Token::kRBRACE:
-        if (next != Token::kNEWLINE) {
-          separator = &Symbols::Blank();
-        }
-        break;
-      case Token::kPERIOD:
-      case Token::kLBRACK:
-      case Token::kINTERPOL_VAR:
-      case Token::kINTERPOL_START:
-      case Token::kINTERPOL_END:
-      case Token::kBIT_NOT:
-      case Token::kNOT:
-        break;
-      // In case we see an opening parentheses '(' we increase the indent to
-      // align multi-line parameters accordingly. The indent will be removed as
-      // soon as we see the matching closing parentheses ')'.
-      //
-      // Example:
-      // SomeVeryLongMethod(
-      //     "withVeryLongParameter",
-      //     "andAnotherVeryLongParameter",
-      //     "andAnotherVeryLongParameter2") { ...
-      case Token::kLPAREN:
-        indent += 2;
-        break;
-      case Token::kRPAREN:
-        indent -= 2;
-        separator = &Symbols::Blank();
-        break;
-      case Token::kNEWLINE:
-        if (prev == Token::kLBRACE) {
-          indent++;
-        }
-        if (next == Token::kRBRACE) {
-          indent--;
-        }
-        break;
-      default:
-        separator = &Symbols::Blank();
-        break;
-    }
-
-    // Determine whether the separation text needs to be updated based on the
-    // next token.
-    switch (next) {
-      case Token::kRBRACE:
-        break;
-      case Token::kNEWLINE:
-      case Token::kSEMICOLON:
-      case Token::kPERIOD:
-      case Token::kCOMMA:
-      case Token::kRPAREN:
-      case Token::kLBRACK:
-      case Token::kRBRACK:
-      case Token::kINTERPOL_VAR:
-      case Token::kINTERPOL_START:
-      case Token::kINTERPOL_END:
-        separator = NULL;
-        break;
-      case Token::kLPAREN:
-        if (curr == Token::kCATCH) {
-          separator = &Symbols::Blank();
-        } else {
-          separator = NULL;
-        }
-        break;
-      case Token::kELSE:
-        separator = &Symbols::Blank();
-        break;
-      default:
-        // Do nothing.
-        break;
-    }
-
-    // Update the few cases where both tokens need to be taken into account.
-    if (((curr == Token::kIF) || (curr == Token::kFOR)) &&
-        (next == Token::kLPAREN)) {
-      separator = &Symbols::Blank();
-    } else if ((curr == Token::kASSIGN) && (next == Token::kLPAREN)) {
-      separator = &Symbols::Blank();
-    } else if ((curr == Token::kRETURN || curr == Token::kCONDITIONAL ||
-                Token::IsBinaryOperator(curr) ||
-                Token::IsEqualityOperator(curr)) &&
-               (next == Token::kLPAREN)) {
-      separator = &Symbols::Blank();
-    } else if ((curr == Token::kLBRACE) && (next == Token::kRBRACE)) {
-      separator = NULL;
-    } else if ((curr == Token::kSEMICOLON) && (next != Token::kNEWLINE)) {
-      separator = &Symbols::Blank();
-    } else if ((curr == Token::kIS) && (next == Token::kNOT)) {
-      separator = NULL;
-    } else if ((prev == Token::kIS) && (curr == Token::kNOT)) {
-      separator = &Symbols::Blank();
-    } else if ((curr == Token::kIDENT) &&
-               ((next == Token::kINCR) || (next == Token::kDECR))) {
-      separator = NULL;
-    } else if (((curr == Token::kINCR) || (curr == Token::kDECR)) &&
-               (next == Token::kIDENT)) {
-      separator = NULL;
-    }
-
-    // Add the separator.
-    if (separator != NULL) {
-      literals.Add(*separator);
-    }
-
-    // Account for indentation in case we printed a newline.
-    if (curr == Token::kNEWLINE) {
-      for (int i = 0; i < indent; i++) {
-        literals.Add(Symbols::TwoSpaces());
-      }
-    }
-
-    // Setup for next iteration.
-    prev = curr;
-    curr = next;
-  }
-  const Array& source = Array::Handle(Array::MakeFixedLength(literals));
-  return String::ConcatAll(source);
-}
-
-intptr_t TokenStream::ComputeSourcePosition(TokenPosition tok_pos) const {
-  Zone* zone = Thread::Current()->zone();
-  Iterator iterator(zone, *this, TokenPosition::kMinSource,
-                    Iterator::kAllTokens);
-  intptr_t src_pos = 0;
-  Token::Kind kind = iterator.CurrentTokenKind();
-  while ((iterator.CurrentPosition() < tok_pos) && (kind != Token::kEOS)) {
-    iterator.Advance();
-    kind = iterator.CurrentTokenKind();
-    src_pos++;
-  }
-  return src_pos;
-}
-
-RawTokenStream* TokenStream::New() {
-  ASSERT(Object::token_stream_class() != Class::null());
-  RawObject* raw = Object::Allocate(TokenStream::kClassId,
-                                    TokenStream::InstanceSize(), Heap::kOld);
-  return reinterpret_cast<RawTokenStream*>(raw);
-}
-
-RawTokenStream* TokenStream::New(intptr_t len) {
-  if (len < 0 || len > kMaxElements) {
-    // This should be caught before we reach here.
-    FATAL1("Fatal error in TokenStream::New: invalid len %" Pd "\n", len);
-  }
-  uint8_t* data = reinterpret_cast<uint8_t*>(::malloc(len));
-  ASSERT(data != NULL);
-  Zone* zone = Thread::Current()->zone();
-  const ExternalTypedData& stream = ExternalTypedData::Handle(
-      zone, ExternalTypedData::New(kExternalTypedDataUint8ArrayCid, data, len,
-                                   Heap::kOld));
-  stream.AddFinalizer(data, DataFinalizer, len);
-  const TokenStream& result = TokenStream::Handle(zone, TokenStream::New());
-  result.SetStream(stream);
-  return result.raw();
-}
-
-// CompressedTokenMap maps String and LiteralToken keys to Smi values.
-// It also supports lookup by TokenDescriptor.
-class CompressedTokenTraits {
- public:
-  static const char* Name() { return "CompressedTokenTraits"; }
-  static bool ReportStats() { return false; }
-
-  static bool IsMatch(const Scanner::TokenDescriptor& descriptor,
-                      const Object& key) {
-    if (!key.IsLiteralToken()) {
-      return false;
-    }
-    const LiteralToken& token = LiteralToken::Cast(key);
-    return (token.literal() == descriptor.literal->raw()) &&
-           (token.kind() == descriptor.kind);
-  }
-
-  // Only for non-descriptor lookup and table expansion.
-  static bool IsMatch(const Object& a, const Object& b) {
-    return a.raw() == b.raw();
-  }
-
-  static uword Hash(const Scanner::TokenDescriptor& descriptor) {
-    return descriptor.literal->Hash();
-  }
-
-  static uword Hash(const Object& key) {
-    if (key.IsLiteralToken()) {
-      return String::HashRawSymbol(LiteralToken::Cast(key).literal());
-    } else {
-      return String::Cast(key).Hash();
-    }
-  }
-};
-typedef UnorderedHashMap<CompressedTokenTraits> CompressedTokenMap;
-
-// Helper class for creation of compressed token stream data.
-class CompressedTokenStreamData : public Scanner::TokenCollector {
- public:
-  static const intptr_t kInitialBufferSize = 16 * KB;
-  static const bool kPrintTokenObjects = false;
-
-  CompressedTokenStreamData(const GrowableObjectArray& ta,
-                            CompressedTokenMap* map,
-                            Obfuscator* obfuscator)
-      : buffer_(NULL),
-        stream_(&buffer_, Reallocate, kInitialBufferSize),
-        token_objects_(ta),
-        tokens_(map),
-        str_(String::Handle()),
-        value_(Object::Handle()),
-        fresh_index_smi_(Smi::Handle()),
-        num_tokens_collected_(0),
-        obfuscator_(obfuscator) {}
-  virtual ~CompressedTokenStreamData() {}
-
-  virtual void AddToken(const Scanner::TokenDescriptor& token) {
-    if (token.kind == Token::kIDENT) {  // Identifier token.
-      AddIdentToken(*token.literal);
-    } else if (token.kind == Token::kINTERPOL_VAR) {
-      str_ = token.literal->raw();
-      str_ = obfuscator_->Rename(str_);
-
-      Scanner::TokenDescriptor token_copy = token;
-      token_copy.literal = &str_;
-      AddLiteralToken(token_copy);
-    } else if (Token::NeedsLiteralToken(token.kind)) {  // Literal token.
-      AddLiteralToken(token);
-    } else {  // Keyword, pseudo keyword etc.
-      ASSERT(token.kind < Token::kNumTokens);
-      AddSimpleToken(token.kind);
-    }
-    num_tokens_collected_++;
-  }
-
-  // Return the compressed token stream.
-  uint8_t* GetStream() const { return buffer_; }
-
-  // Return the compressed token stream length.
-  intptr_t Length() const { return stream_.bytes_written(); }
-
-  intptr_t NumTokens() const { return num_tokens_collected_; }
-
- private:
-  // Add an IDENT token into the stream and the token hash map.
-  void AddIdentToken(const String& ident) {
-    ASSERT(ident.IsSymbol());
-    const intptr_t fresh_index = token_objects_.Length();
-    str_ = ident.raw();
-    str_ = obfuscator_->Rename(str_);
-    fresh_index_smi_ = Smi::New(fresh_index);
-    intptr_t index = Smi::Value(
-        Smi::RawCast(tokens_->InsertOrGetValue(ident, fresh_index_smi_)));
-    if (index == fresh_index) {
-      token_objects_.Add(str_);
-      if (kPrintTokenObjects) {
-        int iid = Isolate::Current()->main_port() % 1024;
-        OS::PrintErr("%03x ident <%s -> %s>\n", iid, ident.ToCString(),
-                     str_.ToCString());
-      }
-    }
-    WriteIndex(index);
-  }
-
-  // Add a LITERAL token into the stream and the token hash map.
-  void AddLiteralToken(const Scanner::TokenDescriptor& descriptor) {
-    ASSERT(descriptor.literal->IsSymbol());
-    bool is_present = false;
-    value_ = tokens_->GetOrNull(descriptor, &is_present);
-    intptr_t index = -1;
-    if (is_present) {
-      ASSERT(value_.IsSmi());
-      index = Smi::Cast(value_).Value();
-    } else {
-      const intptr_t fresh_index = token_objects_.Length();
-      fresh_index_smi_ = Smi::New(fresh_index);
-      const LiteralToken& lit = LiteralToken::Handle(
-          LiteralToken::New(descriptor.kind, *descriptor.literal));
-      if (lit.IsNull()) {
-        // Convert token to an error.
-        ASSERT(descriptor.kind == Token::kINTEGER);
-        Scanner::TokenDescriptor errorDesc = descriptor;
-        errorDesc.kind = Token::kERROR;
-        errorDesc.literal = &String::Handle(Symbols::NewFormatted(
-            Thread::Current(), "integer literal %s is out of range",
-            descriptor.literal->ToCString()));
-        AddLiteralToken(errorDesc);
-        return;
-      }
-      index = Smi::Value(
-          Smi::RawCast(tokens_->InsertOrGetValue(lit, fresh_index_smi_)));
-      token_objects_.Add(lit);
-      if (kPrintTokenObjects) {
-        int iid = Isolate::Current()->main_port() % 1024;
-        printf("lit    %03x  %p  %p  %p  <%s>\n", iid, token_objects_.raw(),
-               lit.literal(), lit.value(),
-               String::Handle(lit.literal()).ToCString());
-      }
-    }
-    WriteIndex(index);
-  }
-
-  // Add a simple token into the stream.
-  void AddSimpleToken(intptr_t kind) { stream_.WriteUnsigned(kind); }
-
-  void WriteIndex(intptr_t value) {
-    stream_.WriteUnsigned(value + Token::kNumTokens);
-  }
-
-  static uint8_t* Reallocate(uint8_t* ptr,
-                             intptr_t old_size,
-                             intptr_t new_size) {
-    void* new_ptr = ::realloc(reinterpret_cast<void*>(ptr), new_size);
-    return reinterpret_cast<uint8_t*>(new_ptr);
-  }
-
-  uint8_t* buffer_;
-  WriteStream stream_;
-  const GrowableObjectArray& token_objects_;
-  CompressedTokenMap* tokens_;
-  String& str_;
-  Object& value_;
-  Smi& fresh_index_smi_;
-  intptr_t num_tokens_collected_;
-  Obfuscator* obfuscator_;
-
-  DISALLOW_COPY_AND_ASSIGN(CompressedTokenStreamData);
-};
-
-RawTokenStream* TokenStream::New(const String& source,
-                                 const String& private_key,
-                                 bool use_shared_tokens) {
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-
-  GrowableObjectArray& token_objects = GrowableObjectArray::Handle(zone);
-  Array& token_objects_map = Array::Handle(zone);
-  if (use_shared_tokens) {
-    // Use the shared token objects array in the object store. Allocate
-    // a new array if necessary.
-    ObjectStore* store = thread->isolate()->object_store();
-    if (store->token_objects() == GrowableObjectArray::null()) {
-      OpenSharedTokenList(thread->isolate());
-    }
-    token_objects = store->token_objects();
-    token_objects_map = store->token_objects_map();
-  } else {
-    // Use new, non-shared token array.
-    const int kInitialPrivateCapacity = 256;
-    token_objects =
-        GrowableObjectArray::New(kInitialPrivateCapacity, Heap::kOld);
-    token_objects_map = HashTables::New<CompressedTokenMap>(
-        kInitialPrivateCapacity, Heap::kOld);
-  }
-  Obfuscator obfuscator(thread, private_key);
-  CompressedTokenMap map(token_objects_map.raw());
-  CompressedTokenStreamData data(token_objects, &map, &obfuscator);
-  Scanner scanner(source, private_key);
-  scanner.ScanAll(&data);
-  INC_STAT(thread, num_tokens_scanned, data.NumTokens());
-
-  // Create and setup the token stream object.
-  const ExternalTypedData& stream = ExternalTypedData::Handle(
-      zone,
-      ExternalTypedData::New(kExternalTypedDataUint8ArrayCid, data.GetStream(),
-                             data.Length(), Heap::kOld));
-  intptr_t external_size = data.Length();
-  stream.AddFinalizer(data.GetStream(), DataFinalizer, external_size);
-  const TokenStream& result = TokenStream::Handle(zone, New());
-  result.SetPrivateKey(private_key);
-  {
-    NoSafepointScope no_safepoint;
-    result.SetStream(stream);
-    result.SetTokenObjects(token_objects);
-  }
-
-  token_objects_map = map.Release().raw();
-  if (use_shared_tokens) {
-    thread->isolate()->object_store()->set_token_objects_map(token_objects_map);
-  }
-  return result.raw();
-}
-
-void TokenStream::OpenSharedTokenList(Isolate* isolate) {
-  const int kInitialSharedCapacity = 5 * 1024;
-  ObjectStore* store = isolate->object_store();
-  ASSERT(store->token_objects() == GrowableObjectArray::null());
-  const GrowableObjectArray& token_objects = GrowableObjectArray::Handle(
-      GrowableObjectArray::New(kInitialSharedCapacity, Heap::kOld));
-  store->set_token_objects(token_objects);
-  const Array& token_objects_map = Array::Handle(
-      HashTables::New<CompressedTokenMap>(kInitialSharedCapacity, Heap::kOld));
-  store->set_token_objects_map(token_objects_map);
-}
-
-void TokenStream::CloseSharedTokenList(Isolate* isolate) {
-  isolate->object_store()->set_token_objects(GrowableObjectArray::Handle());
-  isolate->object_store()->set_token_objects_map(Array::null_array());
-}
-
-const char* TokenStream::ToCString() const {
-  return "TokenStream";
-}
-
-TokenStream::Iterator::Iterator(Zone* zone,
-                                const TokenStream& tokens,
-                                TokenPosition token_pos,
-                                Iterator::StreamType stream_type)
-    : tokens_(TokenStream::Handle(zone, tokens.raw())),
-      data_(ExternalTypedData::Handle(zone, tokens.GetStream())),
-      stream_(reinterpret_cast<uint8_t*>(data_.DataAddr(0)), data_.Length()),
-      token_objects_(Array::Handle(
-          zone,
-          GrowableObjectArray::Handle(zone, tokens.TokenObjects()).data())),
-      obj_(Object::Handle(zone)),
-      cur_token_pos_(token_pos.Pos()),
-      cur_token_kind_(Token::kILLEGAL),
-      cur_token_obj_index_(-1),
-      stream_type_(stream_type) {
-  ASSERT(token_pos != TokenPosition::kNoSource);
-  if (token_pos.IsReal()) {
-    SetCurrentPosition(token_pos);
-  }
-}
-
-void TokenStream::Iterator::SetStream(const TokenStream& tokens,
-                                      TokenPosition token_pos) {
-  tokens_ = tokens.raw();
-  data_ = tokens.GetStream();
-  stream_.SetStream(reinterpret_cast<uint8_t*>(data_.DataAddr(0)),
-                    data_.Length());
-  token_objects_ = GrowableObjectArray::Handle(tokens.TokenObjects()).data();
-  obj_ = Object::null();
-  cur_token_pos_ = token_pos.Pos();
-  cur_token_kind_ = Token::kILLEGAL;
-  cur_token_obj_index_ = -1;
-  SetCurrentPosition(token_pos);
-}
-
-bool TokenStream::Iterator::IsValid() const {
-  return !tokens_.IsNull();
-}
-
-Token::Kind TokenStream::Iterator::LookaheadTokenKind(intptr_t num_tokens) {
-  intptr_t saved_position = stream_.Position();
-  Token::Kind kind = Token::kILLEGAL;
-  intptr_t value = -1;
-  intptr_t count = 0;
-  while (count < num_tokens && value != Token::kEOS) {
-    value = ReadToken();
-    if ((stream_type_ == kAllTokens) ||
-        (static_cast<Token::Kind>(value) != Token::kNEWLINE)) {
-      count += 1;
-    }
-  }
-  if (value < Token::kNumTokens) {
-    kind = static_cast<Token::Kind>(value);
-  } else {
-    value = value - Token::kNumTokens;
-    obj_ = token_objects_.At(value);
-    if (obj_.IsLiteralToken()) {
-      const LiteralToken& literal_token = LiteralToken::Cast(obj_);
-      kind = literal_token.kind();
-    } else {
-      ASSERT(obj_.IsString());  // Must be an identifier.
-      kind = Token::kIDENT;
-    }
-  }
-  stream_.SetPosition(saved_position);
-  return kind;
-}
-
-TokenPosition TokenStream::Iterator::CurrentPosition() const {
-  return TokenPosition(cur_token_pos_);
-}
-
-void TokenStream::Iterator::SetCurrentPosition(TokenPosition token_pos) {
-  stream_.SetPosition(token_pos.value());
-  Advance();
-}
-
-void TokenStream::Iterator::Advance() {
-  intptr_t value;
-  do {
-    cur_token_pos_ = stream_.Position();
-    value = ReadToken();
-  } while ((stream_type_ == kNoNewlines) &&
-           (static_cast<Token::Kind>(value) == Token::kNEWLINE));
-  if (value < Token::kNumTokens) {
-    cur_token_kind_ = static_cast<Token::Kind>(value);
-    cur_token_obj_index_ = -1;
-    return;
-  }
-  cur_token_obj_index_ = value - Token::kNumTokens;
-  obj_ = token_objects_.At(cur_token_obj_index_);
-  if (obj_.IsLiteralToken()) {
-    const LiteralToken& literal_token = LiteralToken::Cast(obj_);
-    cur_token_kind_ = literal_token.kind();
-    return;
-  }
-  ASSERT(obj_.IsString());  // Must be an identifier.
-  cur_token_kind_ = Token::kIDENT;
-}
-
-RawObject* TokenStream::Iterator::CurrentToken() const {
-  if (cur_token_obj_index_ != -1) {
-    return token_objects_.At(cur_token_obj_index_);
-  } else {
-    return Smi::New(cur_token_kind_);
-  }
-}
-
-RawString* TokenStream::Iterator::CurrentLiteral() const {
-  obj_ = CurrentToken();
-  return MakeLiteralToken(obj_);
-}
-
-RawString* TokenStream::Iterator::MakeLiteralToken(const Object& obj) const {
-  if (obj.IsString()) {
-    return reinterpret_cast<RawString*>(obj.raw());
-  } else if (obj.IsSmi()) {
-    Token::Kind kind = static_cast<Token::Kind>(
-        Smi::Value(reinterpret_cast<RawSmi*>(obj.raw())));
-    ASSERT(kind < Token::kNumTokens);
-    return Symbols::Token(kind).raw();
-  } else {
-    ASSERT(obj.IsLiteralToken());  // Must be a literal token.
-    const LiteralToken& literal_token = LiteralToken::Cast(obj);
-    return literal_token.literal();
-  }
-}
-
 bool Script::HasSource() const {
   return raw_ptr()->source_ != String::null();
 }
 
 RawString* Script::Source() const {
-  String& source = String::Handle(raw_ptr()->source_);
-  if (source.IsNull()) {
-    if (kind() == RawScript::kKernelTag) {
-      return String::null();
-    }
-    return GenerateSource();
-  }
   return raw_ptr()->source_;
 }
 
-RawString* Script::GenerateSource() const {
-  const TokenStream& token_stream = TokenStream::Handle(tokens());
-  if (token_stream.IsNull()) {
-    ASSERT(Dart::vm_snapshot_kind() == Snapshot::kFullAOT);
-    return String::null();
-  }
-  return token_stream.GenerateSource();
-}
-
 void Script::set_compile_time_constants(const Array& value) const {
   StorePointer(&raw_ptr()->compile_time_constants_, value.raw());
 }
@@ -10257,10 +9550,7 @@
   Zone* zone = Thread::Current()->zone();
   const GrowableObjectArray& info =
       GrowableObjectArray::Handle(zone, GrowableObjectArray::New());
-  const String& source = String::Handle(zone, Source());
-  const String& key = Symbols::Empty();
   const Object& line_separator = Object::Handle(zone);
-  Smi& value = Smi::Handle(zone);
 
   if (kind() == RawScript::kKernelTag) {
     const TypedData& line_starts_data = TypedData::Handle(zone, line_starts());
@@ -10271,6 +9561,7 @@
       return info.raw();
     }
 #if !defined(DART_PRECOMPILED_RUNTIME)
+    Smi& value = Smi::Handle(zone);
     intptr_t line_count = line_starts_data.Length();
     ASSERT(line_count > 0);
     const Array& debug_positions_array = Array::Handle(debug_positions());
@@ -10311,78 +9602,8 @@
     return info.raw();
   }
 
-  const TokenStream& tkns = TokenStream::Handle(zone, tokens());
-  String& tokenValue = String::Handle(zone);
-  ASSERT(!tkns.IsNull());
-  TokenStream::Iterator tkit(zone, tkns, TokenPosition::kMinSource,
-                             TokenStream::Iterator::kAllTokens);
-  int current_line = -1;
-  Scanner s(source, key);
-  s.Scan();
-  bool skippedNewline = false;
-  while (tkit.CurrentTokenKind() != Token::kEOS) {
-    if (tkit.CurrentTokenKind() == Token::kNEWLINE) {
-      // Skip newlines from the token stream.
-      skippedNewline = true;
-      tkit.Advance();
-      continue;
-    }
-    if (s.current_token().kind != tkit.CurrentTokenKind()) {
-      // Suppose we have a multiline string with interpolation:
-      //
-      // 10    '''
-      // 11    bar
-      // 12    baz
-      // 13    foo is $foo
-      // 14    '''
-      //
-      // In the token stream, this becomes something like:
-      //
-      // 10    string('bar\nbaz\nfoo is\n')
-      // 11    newline
-      // 12    newline
-      // 13    string('') interpol_var(foo) string('\n')
-      // 14
-      //
-      // In order to keep the token iterator and the scanner in sync,
-      // we need to skip the extra empty string before the
-      // interpolation.
-      if (skippedNewline &&
-          (s.current_token().kind == Token::kINTERPOL_VAR ||
-           s.current_token().kind == Token::kINTERPOL_START) &&
-          tkit.CurrentTokenKind() == Token::kSTRING) {
-        tokenValue = tkit.CurrentLiteral();
-        if (tokenValue.Length() == 0) {
-          tkit.Advance();
-        }
-      }
-    }
-    skippedNewline = false;
-    ASSERT(s.current_token().kind == tkit.CurrentTokenKind());
-    int token_line = s.current_token().position.line;
-    if (token_line != current_line) {
-      // emit line
-      info.Add(line_separator);
-      value = Smi::New(token_line + line_offset());
-      info.Add(value);
-      current_line = token_line;
-    }
-    // TODO(hausner): Could optimize here by not reporting tokens
-    // that will never be a location used by the debugger, e.g.
-    // braces, semicolons, most keywords etc.
-    value = Smi::New(tkit.CurrentPosition().Pos());
-    info.Add(value);
-    int column = s.current_token().position.column;
-    // On the first line of the script we must add the column offset.
-    if (token_line == 1) {
-      column += col_offset();
-    }
-    value = Smi::New(column);
-    info.Add(value);
-    tkit.Advance();
-    s.Scan();
-  }
-  return info.raw();
+  UNREACHABLE();
+  return GrowableObjectArray::null();
 }
 
 const char* Script::GetKindAsCString() const {
@@ -10464,33 +9685,6 @@
   StoreNonPointer(&raw_ptr()->load_timestamp_, value);
 }
 
-void Script::set_tokens(const TokenStream& value) const {
-  StorePointer(&raw_ptr()->tokens_, value.raw());
-}
-
-void Script::Tokenize(const String& private_key, bool use_shared_tokens) const {
-  if (kind() == RawScript::kKernelTag) {
-    return;
-  }
-
-  Thread* thread = Thread::Current();
-  Zone* zone = thread->zone();
-  const TokenStream& tkns = TokenStream::Handle(zone, tokens());
-  if (!tkns.IsNull()) {
-    // Already tokenized.
-    return;
-  }
-
-  // Get the source, scan and allocate the token stream.
-  VMTagScope tagScope(thread, VMTag::kCompileScannerTagId);
-  CSTAT_TIMER_SCOPE(thread, scanner_timer);
-  const String& src = String::Handle(zone, Source());
-  const TokenStream& ts = TokenStream::Handle(
-      zone, TokenStream::New(src, private_key, use_shared_tokens));
-  set_tokens(ts);
-  INC_STAT(thread, src_length, src.Length());
-}
-
 void Script::SetLocationOffset(intptr_t line_offset,
                                intptr_t col_offset) const {
   ASSERT(line_offset >= 0);
@@ -10510,35 +9704,7 @@
   TypedData& line_starts_data = TypedData::Handle(zone, line_starts());
   if (line_starts_data.IsNull()) {
     ASSERT(kind() != RawScript::kKernelTag);
-    const TokenStream& tkns = TokenStream::Handle(zone, tokens());
-
-    intptr_t line_count = 0;
-    {
-      // Evaluate the number of lines in the script.
-      TokenStream::Iterator tkit(zone, tkns, TokenPosition::kMinSource,
-                                 TokenStream::Iterator::kAllTokens);
-      while (tkit.CurrentTokenKind() != Token::kEOS) {
-        if (tkit.CurrentTokenKind() == Token::kNEWLINE) {
-          line_count++;
-        }
-        tkit.Advance();
-      }
-    }
-    line_starts_data = TypedData::New(kTypedDataInt32ArrayCid, line_count + 1);
-
-    intptr_t cur_line = 0;
-    TokenStream::Iterator tkit(zone, tkns, TokenPosition::kMinSource,
-                               TokenStream::Iterator::kAllTokens);
-    line_starts_data.SetInt32(cur_line, 0);
-    while (tkit.CurrentTokenKind() != Token::kEOS) {
-      if (tkit.CurrentTokenKind() == Token::kNEWLINE) {
-        cur_line++;
-        line_starts_data.SetInt32(cur_line << 2,
-                                  tkit.CurrentPosition().value() + 1);
-      }
-      tkit.Advance();
-    }
-    set_line_starts(line_starts_data);
+    UNREACHABLE();
   }
 
   if (kind() == RawScript::kKernelTag) {
@@ -10611,50 +9777,7 @@
     return;
   }
 
-  const TokenStream& tkns = TokenStream::Handle(zone, tokens());
-  if (tkns.IsNull()) {
-    ASSERT((Dart::vm_snapshot_kind() == Snapshot::kFullAOT));
-    *line = -1;
-    if (column != NULL) {
-      *column = -1;
-    }
-    if (token_len != NULL) {
-      *token_len = 1;
-    }
-    return;
-  }
-  if (column == NULL) {
-    TokenStream::Iterator tkit(zone, tkns, TokenPosition::kMinSource,
-                               TokenStream::Iterator::kAllTokens);
-    intptr_t cur_line = line_offset() + 1;
-    while ((tkit.CurrentPosition() < token_pos) &&
-           (tkit.CurrentTokenKind() != Token::kEOS)) {
-      if (tkit.CurrentTokenKind() == Token::kNEWLINE) {
-        cur_line++;
-      }
-      tkit.Advance();
-    }
-    *line = cur_line;
-  } else {
-    const String& src = String::Handle(zone, Source());
-    intptr_t src_pos = tkns.ComputeSourcePosition(token_pos);
-    Scanner scanner(src, Symbols::Empty());
-    scanner.ScanTo(src_pos);
-    intptr_t relative_line = scanner.CurrentPosition().line;
-    *line = relative_line + line_offset();
-    *column = scanner.CurrentPosition().column;
-    if (token_len != NULL) {
-      if (scanner.current_token().literal != NULL) {
-        *token_len = scanner.current_token().literal->Length();
-      } else {
-        *token_len = 1;
-      }
-    }
-    // On the first line of the script we must add the column offset.
-    if (relative_line == 1) {
-      *column += col_offset();
-    }
-  }
+  UNREACHABLE();
 }
 
 void Script::TokenRangeAtLine(intptr_t line_number,
@@ -10681,87 +9804,7 @@
     return;
   }
 
-  Zone* zone = Thread::Current()->zone();
-  *first_token_index = TokenPosition::kNoSource;
-  *last_token_index = TokenPosition::kNoSource;
-  const TokenStream& tkns = TokenStream::Handle(zone, tokens());
-  line_number -= line_offset();
-  if (line_number < 1) line_number = 1;
-  TokenStream::Iterator tkit(zone, tkns, TokenPosition::kMinSource,
-                             TokenStream::Iterator::kAllTokens);
-  // Scan through the token stream to the required line.
-  intptr_t cur_line = 1;
-  while (cur_line < line_number && tkit.CurrentTokenKind() != Token::kEOS) {
-    if (tkit.CurrentTokenKind() == Token::kNEWLINE) {
-      cur_line++;
-    }
-    tkit.Advance();
-  }
-  if (tkit.CurrentTokenKind() == Token::kEOS) {
-    // End of token stream before reaching required line.
-    return;
-  }
-  if (tkit.CurrentTokenKind() == Token::kNEWLINE) {
-    // No tokens on the current line. If there is a valid token afterwards, put
-    // it into first_token_index.
-    while (tkit.CurrentTokenKind() == Token::kNEWLINE &&
-           tkit.CurrentTokenKind() != Token::kEOS) {
-      tkit.Advance();
-    }
-    if (tkit.CurrentTokenKind() != Token::kEOS) {
-      *first_token_index = tkit.CurrentPosition();
-    }
-    return;
-  }
-  *first_token_index = tkit.CurrentPosition();
-  // We cannot do "CurrentPosition() - 1" for the last token, because we do not
-  // know whether the previous token is a simple one or not.
-  TokenPosition end_pos = *first_token_index;
-  while (tkit.CurrentTokenKind() != Token::kNEWLINE &&
-         tkit.CurrentTokenKind() != Token::kEOS) {
-    end_pos = tkit.CurrentPosition();
-    tkit.Advance();
-  }
-  *last_token_index = end_pos;
-}
-
-int32_t Script::SourceFingerprint() const {
-  return SourceFingerprint(TokenPosition(TokenPosition::kMinSourcePos),
-                           TokenPosition(TokenPosition::kMaxSourcePos));
-}
-
-int32_t Script::SourceFingerprint(TokenPosition start,
-                                  TokenPosition end) const {
-  if (kind() == RawScript::kKernelTag) {
-    // TODO(30756): Implemented.
-    return 0;
-  }
-  uint32_t result = 0;
-  Zone* zone = Thread::Current()->zone();
-  TokenStream::Iterator tokens_iterator(
-      zone, TokenStream::Handle(zone, tokens()), start);
-  Object& obj = Object::Handle(zone);
-  String& literal = String::Handle(zone);
-  while ((tokens_iterator.CurrentTokenKind() != Token::kEOS) &&
-         (tokens_iterator.CurrentPosition() < end)) {
-    uint32_t val = 0;
-    obj = tokens_iterator.CurrentToken();
-    if (obj.IsSmi()) {
-      val = Smi::Cast(obj).Value();
-    } else {
-      literal = tokens_iterator.MakeLiteralToken(obj);
-      if (tokens_iterator.CurrentTokenKind() == Token::kIDENT ||
-          tokens_iterator.CurrentTokenKind() == Token::kINTERPOL_VAR) {
-        literal = String::RemovePrivateKey(literal);
-      }
-      val = literal.Hash();
-    }
-    result = 31 * result + val;
-    tokens_iterator.Advance();
-  }
-  result = result & ((static_cast<uint32_t>(1) << 31) - 1);
-  ASSERT(result <= static_cast<uint32_t>(kMaxInt32));
-  return result;
+  UNREACHABLE();
 }
 
 RawString* Script::GetLine(intptr_t line_number, Heap::Space space) const {
@@ -10815,7 +9858,6 @@
                               intptr_t to_column) const {
   const String& src = String::Handle(Source());
   if (src.IsNull()) {
-    ASSERT(Dart::vm_snapshot_kind() == Snapshot::kFullAOT);
     return Symbols::OptimizedOut().raw();
   }
   intptr_t length = src.Length();
@@ -11342,7 +10384,7 @@
       metadata = kernel::EvaluateMetadata(
           field, /* is_annotations_offset = */ obj.IsLibrary());
     } else {
-      metadata = Parser::ParseMetadata(field);
+      UNREACHABLE();
     }
     if (metadata.IsArray()) {
       ASSERT(Array::Cast(metadata).raw() != Object::empty_array().raw());
@@ -12210,12 +11252,14 @@
 }
 
 // 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) {
+static RawObject* InvokeInstanceFunction(
+    const Instance& receiver,
+    const Function& function,
+    const String& target_name,
+    const Array& args,
+    const Array& args_descriptor_array,
+    bool respect_reflectable,
+    const TypeArguments& instantiator_type_args) {
   // Note "args" is already the internal arguments with the receiver as the
   // first element.
   ArgumentsDescriptor args_descriptor(args_descriptor_array);
@@ -12224,6 +11268,11 @@
     return DartEntry::InvokeNoSuchMethod(receiver, target_name, args,
                                          args_descriptor_array);
   }
+  RawObject* type_error = function.DoArgumentTypesMatch(args, args_descriptor,
+                                                        instantiator_type_args);
+  if (type_error != Error::null()) {
+    return type_error;
+  }
   return DartEntry::InvokeFunction(function, args, args_descriptor_array);
 }
 
@@ -12285,9 +11334,16 @@
   Object& obj = Object::Handle(LookupLocalOrReExportObject(setter_name));
   const String& internal_setter_name =
       String::Handle(Field::SetterName(setter_name));
-
+  AbstractType& setter_type = AbstractType::Handle();
+  AbstractType& argument_type = AbstractType::Handle(value.GetType(Heap::kOld));
   if (obj.IsField()) {
     const Field& field = Field::Cast(obj);
+    setter_type ^= field.type();
+    if (!argument_type.IsNullType() && !setter_type.IsDynamicType() &&
+        !value.IsInstanceOf(setter_type, Object::null_type_arguments(),
+                            Object::null_type_arguments(), NULL)) {
+      return ThrowTypeError(field.token_pos(), value, setter_type, setter_name);
+    }
     if (field.is_final() || (respect_reflectable && !field.is_reflectable())) {
       const int kNumArgs = 1;
       const Array& args = Array::Handle(Array::New(kNumArgs));
@@ -12318,6 +11374,13 @@
         InvocationMirror::kTopLevel, InvocationMirror::kSetter);
   }
 
+  setter_type ^= setter.ParameterTypeAt(0);
+  if (!argument_type.IsNullType() && !setter_type.IsDynamicType() &&
+      !value.IsInstanceOf(setter_type, Object::null_type_arguments(),
+                          Object::null_type_arguments(), NULL)) {
+    return ThrowTypeError(setter.token_pos(), value, setter_type, setter_name);
+  }
+
   return DartEntry::InvokeFunction(setter, args);
 }
 
@@ -12359,7 +11422,7 @@
   const Array& args_descriptor_array = Array::Handle(
       ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
   ArgumentsDescriptor args_descriptor(args_descriptor_array);
-
+  const TypeArguments& type_args = Object::null_type_arguments();
   if (function.IsNull() || !function.AreValidArguments(args_descriptor, NULL) ||
       (respect_reflectable && !function.is_reflectable())) {
     return ThrowNoSuchMethod(
@@ -12367,7 +11430,11 @@
         function_name, args, arg_names, InvocationMirror::kTopLevel,
         InvocationMirror::kMethod);
   }
-
+  RawObject* type_error =
+      function.DoArgumentTypesMatch(args, args_descriptor, type_args);
+  if (type_error != Error::null()) {
+    return type_error;
+  }
   return DartEntry::InvokeFunction(function, args, args_descriptor_array);
 }
 
@@ -13087,7 +12154,7 @@
       metadata =
           kernel::EvaluateMetadata(field, /* is_annotations_offset = */ true);
     } else {
-      metadata = Parser::ParseMetadata(field);
+      UNREACHABLE();
     }
     if (metadata.IsArray()) {
       ASSERT(Array::Cast(metadata).raw() != Object::empty_array().raw());
@@ -13238,7 +12305,9 @@
     const ExternalTypedData& metadata_payloads,
     const ExternalTypedData& metadata_mappings,
     const ExternalTypedData& constants_table,
-    const Array& scripts) {
+    const Array& scripts,
+    const Array& libraries_cache,
+    const Array& classes_cache) {
   const KernelProgramInfo& info =
       KernelProgramInfo::Handle(KernelProgramInfo::New());
   info.StorePointer(&info.raw_ptr()->string_offsets_, string_offsets.raw());
@@ -13250,6 +12319,8 @@
                     metadata_mappings.raw());
   info.StorePointer(&info.raw_ptr()->scripts_, scripts.raw());
   info.StorePointer(&info.raw_ptr()->constants_table_, constants_table.raw());
+  info.StorePointer(&info.raw_ptr()->libraries_cache_, libraries_cache.raw());
+  info.StorePointer(&info.raw_ptr()->classes_cache_, classes_cache.raw());
   return info.raw();
 }
 
@@ -13282,7 +12353,117 @@
   StorePointer(&raw_ptr()->potential_pragma_functions_, candidates.raw());
 }
 
-RawError* Library::CompileAll() {
+void KernelProgramInfo::set_libraries_cache(const Array& cache) const {
+  StorePointer(&raw_ptr()->libraries_cache_, cache.raw());
+}
+
+typedef UnorderedHashMap<SmiTraits> IntHashMap;
+
+RawLibrary* KernelProgramInfo::LookupLibrary(Thread* thread,
+                                             const Smi& name_index) const {
+  REUSABLE_ARRAY_HANDLESCOPE(thread);
+  REUSABLE_LIBRARY_HANDLESCOPE(thread);
+  REUSABLE_OBJECT_HANDLESCOPE(thread);
+  REUSABLE_SMI_HANDLESCOPE(thread);
+  Array& data = thread->ArrayHandle();
+  Library& result = thread->LibraryHandle();
+  Object& key = thread->ObjectHandle();
+  Smi& value = thread->SmiHandle();
+  {
+    data ^= libraries_cache();
+    ASSERT(!data.IsNull());
+    IntHashMap table(&key, &value, &data);
+    result ^= table.GetOrNull(name_index);
+    table.Release();
+  }
+  return result.raw();
+}
+
+RawLibrary* KernelProgramInfo::InsertLibrary(Thread* thread,
+                                             const Smi& name_index,
+                                             const Library& lib) const {
+  REUSABLE_ARRAY_HANDLESCOPE(thread);
+  REUSABLE_LIBRARY_HANDLESCOPE(thread);
+  REUSABLE_OBJECT_HANDLESCOPE(thread);
+  REUSABLE_SMI_HANDLESCOPE(thread);
+  Array& data = thread->ArrayHandle();
+  Library& result = thread->LibraryHandle();
+  Object& key = thread->ObjectHandle();
+  Smi& value = thread->SmiHandle();
+  {
+    data ^= libraries_cache();
+    ASSERT(!data.IsNull());
+    IntHashMap table(&key, &value, &data);
+    result ^= table.GetOrNull(name_index);
+    table.Release();
+  }
+  if (result.IsNull()) {
+    Isolate* isolate = thread->isolate();
+    SafepointMutexLocker ml(isolate->kernel_data_lib_cache_mutex());
+    data ^= libraries_cache();
+    ASSERT(!data.IsNull());
+    IntHashMap table(&key, &value, &data);
+    result ^= table.InsertOrGetValue(name_index, lib);
+    set_libraries_cache(table.Release());
+  }
+  return result.raw();
+}
+
+void KernelProgramInfo::set_classes_cache(const Array& cache) const {
+  StorePointer(&raw_ptr()->classes_cache_, cache.raw());
+}
+
+RawClass* KernelProgramInfo::LookupClass(Thread* thread,
+                                         const Smi& name_index) const {
+  REUSABLE_ARRAY_HANDLESCOPE(thread);
+  REUSABLE_CLASS_HANDLESCOPE(thread);
+  REUSABLE_OBJECT_HANDLESCOPE(thread);
+  REUSABLE_SMI_HANDLESCOPE(thread);
+  Array& data = thread->ArrayHandle();
+  Class& result = thread->ClassHandle();
+  Object& key = thread->ObjectHandle();
+  Smi& value = thread->SmiHandle();
+  {
+    data ^= classes_cache();
+    ASSERT(!data.IsNull());
+    IntHashMap table(&key, &value, &data);
+    result ^= table.GetOrNull(name_index);
+    table.Release();
+  }
+  return result.raw();
+}
+
+RawClass* KernelProgramInfo::InsertClass(Thread* thread,
+                                         const Smi& name_index,
+                                         const Class& klass) const {
+  REUSABLE_ARRAY_HANDLESCOPE(thread);
+  REUSABLE_CLASS_HANDLESCOPE(thread);
+  REUSABLE_OBJECT_HANDLESCOPE(thread);
+  REUSABLE_SMI_HANDLESCOPE(thread);
+  Array& data = thread->ArrayHandle();
+  Class& result = thread->ClassHandle();
+  Object& key = thread->ObjectHandle();
+  Smi& value = thread->SmiHandle();
+  {
+    data ^= classes_cache();
+    ASSERT(!data.IsNull());
+    IntHashMap table(&key, &value, &data);
+    result ^= table.GetOrNull(name_index);
+    table.Release();
+  }
+  if (result.IsNull()) {
+    Isolate* isolate = thread->isolate();
+    SafepointMutexLocker ml(isolate->kernel_data_class_cache_mutex());
+    data ^= classes_cache();
+    ASSERT(!data.IsNull());
+    IntHashMap table(&key, &value, &data);
+    result ^= table.InsertOrGetValue(name_index, klass);
+    set_classes_cache(table.Release());
+  }
+  return result.raw();
+}
+
+RawError* Library::CompileAll(bool ignore_error /* = false */) {
   Thread* thread = Thread::Current();
   Zone* zone = thread->zone();
   Error& error = Error::Handle(zone);
@@ -13297,10 +12478,12 @@
       cls = it.GetNextClass();
       error = cls.EnsureIsFinalized(thread);
       if (!error.IsNull()) {
+        if (ignore_error) continue;
         return error.raw();
       }
       error = Compiler::CompileAllFunctions(cls);
       if (!error.IsNull()) {
+        if (ignore_error) continue;
         return error.raw();
       }
     }
@@ -13318,6 +12501,7 @@
     if (!func.HasCode()) {
       result = Compiler::CompileFunction(thread, func);
       if (result.IsError()) {
+        if (ignore_error) continue;
         return Error::Cast(result).raw();
       }
     }
@@ -13328,6 +12512,7 @@
 #if !defined(DART_PRECOMPILED_RUNTIME)
 RawError* Library::ReadAllBytecode() {
   Thread* thread = Thread::Current();
+  ASSERT(thread->IsMutatorThread());
   Zone* zone = thread->zone();
   Error& error = Error::Handle(zone);
   const GrowableObjectArray& libs = GrowableObjectArray::Handle(
@@ -13370,50 +12555,6 @@
 }
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 
-RawError* Library::ParseAll(Thread* thread) {
-  Zone* zone = thread->zone();
-  Error& error = Error::Handle(zone);
-  Isolate* isolate = thread->isolate();
-  const GrowableObjectArray& libs =
-      GrowableObjectArray::Handle(isolate->object_store()->libraries());
-  Library& lib = Library::Handle(zone);
-  Class& cls = Class::Handle(zone);
-  for (int i = 0; i < libs.Length(); i++) {
-    lib ^= libs.At(i);
-    ClassDictionaryIterator it(lib, ClassDictionaryIterator::kIteratePrivate);
-    while (it.HasNext()) {
-      cls = it.GetNextClass();
-      error = cls.EnsureIsFinalized(thread);
-      if (!error.IsNull()) {
-        return error.raw();
-      }
-      error = Compiler::ParseAllFunctions(cls);
-      if (!error.IsNull()) {
-        return error.raw();
-      }
-    }
-  }
-
-  // Inner functions get added to the closures array. As part of compilation
-  // more closures can be added to the end of the array. Compile all the
-  // closures until we have reached the end of the "worklist".
-  const GrowableObjectArray& closures = GrowableObjectArray::Handle(
-      zone, Isolate::Current()->object_store()->closure_functions());
-  Function& func = Function::Handle(zone);
-  for (int i = 0; i < closures.Length(); i++) {
-    func ^= closures.At(i);
-    if (!func.HasCode()) {
-      error = Compiler::ParseFunction(thread, func);
-      if (!error.IsNull()) {
-        return error.raw();
-      }
-      func.ClearICDataArray();
-      func.ClearCode();
-    }
-  }
-  return error.raw();
-}
-
 // Return Function::null() if function does not exist in libs.
 RawFunction* Library::GetFunction(const GrowableArray<Library*>& libs,
                                   const char* class_name,
@@ -13685,8 +12826,6 @@
     uword size = PcDescriptors::InstanceSize(data->length());
     RawObject* raw =
         Object::Allocate(PcDescriptors::kClassId, size, Heap::kOld);
-    INC_STAT(thread, total_code_size, size);
-    INC_STAT(thread, pc_desc_size, size);
     NoSafepointScope no_safepoint;
     result ^= raw;
     result.SetLength(data->length());
@@ -13703,8 +12842,6 @@
     uword size = PcDescriptors::InstanceSize(length);
     RawObject* raw =
         Object::Allocate(PcDescriptors::kClassId, size, Heap::kOld);
-    INC_STAT(thread, total_code_size, size);
-    INC_STAT(thread, pc_desc_size, size);
     NoSafepointScope no_safepoint;
     result ^= raw;
     result.SetLength(length);
@@ -14085,8 +13222,6 @@
     uword size = LocalVarDescriptors::InstanceSize(num_variables);
     RawObject* raw =
         Object::Allocate(LocalVarDescriptors::kClassId, size, Heap::kOld);
-    INC_STAT(Thread::Current(), total_code_size, size);
-    INC_STAT(Thread::Current(), vardesc_size, size);
     NoSafepointScope no_safepoint;
     result ^= raw;
     result.StoreNonPointer(&result.raw_ptr()->num_entries_, num_variables);
@@ -15481,8 +14616,6 @@
 void Code::set_stackmaps(const Array& maps) const {
   ASSERT(maps.IsOld());
   StorePointer(&raw_ptr()->stackmaps_, maps.raw());
-  INC_STAT(Thread::Current(), total_code_size,
-           maps.IsNull() ? 0 : maps.Length() * sizeof(uword));
 }
 
 #if !defined(DART_PRECOMPILED_RUNTIME) && !defined(DART_PRECOMPILER)
@@ -15793,8 +14926,6 @@
   Instructions& instrs = Instructions::ZoneHandle(Instructions::New(
       assembler->CodeSize(), assembler->has_single_entry_point(),
       compiler == nullptr ? 0 : compiler->UncheckedEntryOffset()));
-  INC_STAT(Thread::Current(), total_instr_size, assembler->CodeSize());
-  INC_STAT(Thread::Current(), total_code_size, assembler->CodeSize());
   // Important: if GC is triggerred at any point between Instructions::New
   // and here it would write protect instructions object that we are trying
   // to fill in.
@@ -15833,8 +14964,6 @@
     code.set_is_alive(true);
 
     // Set object pool in Instructions object.
-    INC_STAT(Thread::Current(), total_code_size,
-             object_pool.Length() * sizeof(uintptr_t));
     code.set_object_pool(object_pool.raw());
 
     if (FLAG_write_protect_code) {
@@ -15868,8 +14997,6 @@
     // pushed onto the stack.
     code.SetPrologueOffset(assembler->CodeSize());
   }
-  INC_STAT(Thread::Current(), total_code_size,
-           code.comments().comments_.Length());
 #endif
   return code.raw();
 }
@@ -15901,8 +15028,6 @@
   Code& code = Code::ZoneHandle(Code::New(pointer_offset_count));
   Instructions& instrs = Instructions::ZoneHandle(
       Instructions::New(bytecode_size, true /* has_single_entry_point */, 0));
-  INC_STAT(Thread::Current(), total_instr_size, bytecode_size);
-  INC_STAT(Thread::Current(), total_code_size, bytecode_size);
 
   // Copy the bytecode data into the instruction area. No fixups to apply.
   MemoryRegion instrs_region(reinterpret_cast<void*>(instrs.PayloadStart()),
@@ -15912,10 +15037,10 @@
   instrs_region.CopyFrom(0, bytecode_region);
 
   // TODO(regis): Keep following lines or not?
-  code.set_compile_timestamp(OS::GetCurrentMonotonicMicros());
   // TODO(regis): Do we need to notify CodeObservers for bytecode too?
   // If so, provide a better name using ToLibNamePrefixedQualifiedCString().
 #ifndef PRODUCT
+  code.set_compile_timestamp(OS::GetCurrentMonotonicMicros());
   CodeObservers::NotifyAll("bytecode", instrs.PayloadStart(),
                            0 /* prologue_offset */, instrs.Size(),
                            false /* optimized */, nullptr);
@@ -15929,8 +15054,6 @@
     code.set_is_alive(true);
 
     // Set object pool in Instructions object.
-    INC_STAT(Thread::Current(), total_code_size,
-             object_pool.Length() * sizeof(uintptr_t));
     code.set_object_pool(object_pool.raw());
 
     if (FLAG_write_protect_code) {
@@ -15939,12 +15062,12 @@
                              instrs.raw()->Size(), VirtualMemory::kReadExecute);
     }
   }
+#ifndef PRODUCT
   // No Code::Comments to set. Default is 0 length Comments.
   // No prologue was ever entered, optimistically assume nothing was ever
   // pushed onto the stack.
   code.SetPrologueOffset(bytecode_size);  // TODO(regis): Correct?
-  INC_STAT(Thread::Current(), total_code_size,
-           code.comments().comments_.Length());
+#endif
   return code.raw();
 }
 
@@ -16924,6 +16047,10 @@
   Zone* zone = Thread::Current()->zone();
 
   Class& klass = Class::Handle(zone, clazz());
+  TypeArguments& type_args = TypeArguments::Handle(zone);
+  if (klass.NumTypeArguments() > 0) {
+    type_args ^= GetTypeArguments();
+  }
 
   const String& internal_getter_name =
       String::Handle(zone, Field::GetterName(getter_name));
@@ -16948,7 +16075,8 @@
       zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
 
   return InvokeInstanceFunction(*this, function, internal_getter_name, args,
-                                args_descriptor, respect_reflectable);
+                                args_descriptor, respect_reflectable,
+                                type_args);
 }
 
 RawObject* Instance::InvokeSetter(const String& setter_name,
@@ -16957,6 +16085,11 @@
   Zone* zone = Thread::Current()->zone();
 
   const Class& klass = Class::Handle(zone, clazz());
+  TypeArguments& type_args = TypeArguments::Handle(zone);
+  if (klass.NumTypeArguments() > 0) {
+    type_args ^= GetTypeArguments();
+  }
+
   const String& internal_setter_name =
       String::Handle(zone, Field::SetterName(setter_name));
   const Function& setter = Function::Handle(
@@ -16971,7 +16104,8 @@
       zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length()));
 
   return InvokeInstanceFunction(*this, setter, internal_setter_name, args,
-                                args_descriptor, respect_reflectable);
+                                args_descriptor, respect_reflectable,
+                                type_args);
 }
 
 RawObject* Instance::Invoke(const String& function_name,
@@ -16988,6 +16122,11 @@
   const Array& args_descriptor = Array::Handle(
       zone, ArgumentsDescriptor::New(kTypeArgsLen, args.Length(), arg_names));
 
+  TypeArguments& type_args = TypeArguments::Handle(zone);
+  if (klass.NumTypeArguments() > 0) {
+    type_args ^= GetTypeArguments();
+  }
+
   if (function.IsNull()) {
     // Didn't find a method: try to find a getter and invoke call on its result.
     const String& getter_name =
@@ -17002,9 +16141,9 @@
       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));
+          zone, InvokeInstanceFunction(*this, function, getter_name,
+                                       getter_args, getter_args_descriptor,
+                                       respect_reflectable, type_args));
       if (getter_result.IsError()) {
         return getter_result.raw();
       }
@@ -17017,7 +16156,8 @@
 
   // Found an ordinary method.
   return InvokeInstanceFunction(*this, function, function_name, args,
-                                args_descriptor, respect_reflectable);
+                                args_descriptor, respect_reflectable,
+                                type_args);
 }
 
 RawObject* Instance::Evaluate(const Class& method_cls,
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index 4f2f070..635a623 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -421,8 +421,6 @@
   static RawClass* signature_data_class() { return signature_data_class_; }
   static RawClass* redirection_data_class() { return redirection_data_class_; }
   static RawClass* field_class() { return field_class_; }
-  static RawClass* literal_token_class() { return literal_token_class_; }
-  static RawClass* token_stream_class() { return token_stream_class_; }
   static RawClass* script_class() { return script_class_; }
   static RawClass* library_class() { return library_class_; }
   static RawClass* namespace_class() { return namespace_class_; }
@@ -688,8 +686,6 @@
   static RawClass* signature_data_class_;  // Class of SignatureData vm obj.
   static RawClass* redirection_data_class_;  // Class of RedirectionData vm obj.
   static RawClass* field_class_;             // Class of the Field vm object.
-  static RawClass* literal_token_class_;     // Class of LiteralToken vm object.
-  static RawClass* token_stream_class_;  // Class of the TokenStream vm object.
   static RawClass* script_class_;        // Class of the Script vm object.
   static RawClass* library_class_;       // Class of the Library vm object.
   static RawClass* namespace_class_;     // Class of Namespace vm object.
@@ -2674,6 +2670,9 @@
 
   bool HasOptimizedCode() const;
 
+  // Whether the function is ready for compiler optimizations.
+  bool ShouldCompilerOptimize() const;
+
   // Returns true if the argument counts are valid for calling this function.
   // Otherwise, it returns false and the reason (if error_message is not NULL).
   bool AreValidArgumentCounts(intptr_t num_type_arguments,
@@ -2681,6 +2680,13 @@
                               intptr_t num_named_arguments,
                               String* error_message) const;
 
+  // Returns a TypeError if the provided arguments don't match the function
+  // parameter types, NULL otherwise. Assumes AreValidArguments is called first.
+  RawObject* DoArgumentTypesMatch(
+      const Array& args,
+      const ArgumentsDescriptor& arg_names,
+      const TypeArguments& instantiator_type_args) const;
+
   // Returns true if the type argument count, total argument count and the names
   // of optional arguments are valid for calling this function.
   // Otherwise, it returns false and the reason (if error_message is not NULL).
@@ -2899,13 +2905,16 @@
   RawFunction* CreateMethodExtractor(const String& getter_name) const;
   RawFunction* GetMethodExtractor(const String& getter_name) const;
 
-#if !defined(DART_PRECOMPILED_RUNTIME)
   static bool IsDynamicInvocationForwaderName(const String& name);
+
   static RawString* DemangleDynamicInvocationForwarderName(const String& name);
+
+#if !defined(DART_PRECOMPILED_RUNTIME)
   static RawString* CreateDynamicInvocationForwarderName(const String& name);
 
   RawFunction* CreateDynamicInvocationForwarder(
       const String& mangled_name) const;
+
   RawFunction* GetDynamicInvocationForwarder(const String& mangled_name,
                                              bool allow_add = true) const;
 #endif
@@ -3581,118 +3590,6 @@
   friend class FieldSerializationCluster;
 };
 
-class LiteralToken : public Object {
- public:
-  Token::Kind kind() const { return raw_ptr()->kind_; }
-  RawString* literal() const { return raw_ptr()->literal_; }
-  RawObject* value() const { return raw_ptr()->value_; }
-
-  static intptr_t InstanceSize() {
-    return RoundedAllocationSize(sizeof(RawLiteralToken));
-  }
-
-  static RawLiteralToken* New();
-  static RawLiteralToken* New(Token::Kind kind, const String& literal);
-
- private:
-  void set_kind(Token::Kind kind) const {
-    StoreNonPointer(&raw_ptr()->kind_, kind);
-  }
-  void set_literal(const String& literal) const;
-  void set_value(const Object& value) const;
-
-  FINAL_HEAP_OBJECT_IMPLEMENTATION(LiteralToken, Object);
-  friend class Class;
-};
-
-class TokenStream : public Object {
- public:
-  RawGrowableObjectArray* TokenObjects() const;
-  void SetTokenObjects(const GrowableObjectArray& value) const;
-
-  RawExternalTypedData* GetStream() const;
-  void SetStream(const ExternalTypedData& stream) const;
-
-  RawString* GenerateSource() const;
-  RawString* GenerateSource(TokenPosition start, TokenPosition end) const;
-  intptr_t ComputeSourcePosition(TokenPosition tok_pos) const;
-
-  RawString* PrivateKey() const;
-
-  static const intptr_t kBytesPerElement = 1;
-  static const intptr_t kMaxElements = kSmiMax / kBytesPerElement;
-
-  static intptr_t InstanceSize() {
-    return RoundedAllocationSize(sizeof(RawTokenStream));
-  }
-
-  static RawTokenStream* New(intptr_t length);
-  static RawTokenStream* New(const String& source,
-                             const String& private_key,
-                             bool use_shared_tokens);
-
-  static void OpenSharedTokenList(Isolate* isolate);
-  static void CloseSharedTokenList(Isolate* isolate);
-
-  // The class Iterator encapsulates iteration over the tokens
-  // in a TokenStream object.
-  class Iterator : ValueObject {
-   public:
-    enum StreamType { kNoNewlines, kAllTokens };
-
-    Iterator(Zone* zone,
-             const TokenStream& tokens,
-             TokenPosition token_pos,
-             Iterator::StreamType stream_type = kNoNewlines);
-
-    void SetStream(const TokenStream& tokens, TokenPosition token_pos);
-    bool IsValid() const;
-
-    inline Token::Kind CurrentTokenKind() const { return cur_token_kind_; }
-
-    Token::Kind LookaheadTokenKind(intptr_t num_tokens);
-
-    TokenPosition CurrentPosition() const;
-    void SetCurrentPosition(TokenPosition token_pos);
-
-    void Advance();
-
-    RawObject* CurrentToken() const;
-    RawString* CurrentLiteral() const;
-    RawString* MakeLiteralToken(const Object& obj) const;
-
-   private:
-    // Read token from the token stream (could be a simple token or an index
-    // into the token objects array for IDENT or literal tokens).
-    intptr_t ReadToken() {
-      int64_t value = stream_.ReadUnsigned();
-      ASSERT((value >= 0) && (value <= kIntptrMax));
-      return static_cast<intptr_t>(value);
-    }
-
-    TokenStream& tokens_;
-    ExternalTypedData& data_;
-    ReadStream stream_;
-    Array& token_objects_;
-    Object& obj_;
-    intptr_t cur_token_pos_;
-    Token::Kind cur_token_kind_;
-    intptr_t cur_token_obj_index_;
-    Iterator::StreamType stream_type_;
-  };
-
- private:
-  void SetPrivateKey(const String& value) const;
-
-  static RawTokenStream* New();
-  static void DataFinalizer(void* isolate_callback_data,
-                            Dart_WeakPersistentHandle handle,
-                            void* peer);
-
-  FINAL_HEAP_OBJECT_IMPLEMENTATION(TokenStream, Object);
-  friend class Class;
-};
-
 class Script : public Object {
  public:
   RawString* url() const { return raw_ptr()->url_; }
@@ -3702,7 +3599,6 @@
   RawString* resolved_url() const { return raw_ptr()->resolved_url_; }
   bool HasSource() const;
   RawString* Source() const;
-  RawString* GenerateSource() const;  // Generates source code from Tokenstream.
   RawGrowableObjectArray* GenerateLineNumberArray() const;
   RawScript::Kind kind() const {
     return static_cast<RawScript::Kind>(raw_ptr()->kind_);
@@ -3731,11 +3627,6 @@
 
   RawTypedData* kernel_string_offsets() const;
 
-  RawTokenStream* tokens() const {
-    ASSERT(kind() != RawScript::kKernelTag);
-    return raw_ptr()->tokens_;
-  }
-
   RawTypedData* line_starts() const;
 
   void set_line_starts(const TypedData& value) const;
@@ -3746,8 +3637,6 @@
 
   RawArray* yield_positions() const;
 
-  void Tokenize(const String& private_key, bool use_shared_tokens = true) const;
-
   RawLibrary* FindLibrary() const;
   RawString* GetLine(intptr_t line_number,
                      Heap::Space space = Heap::kNew) const;
@@ -3773,9 +3662,6 @@
                         TokenPosition* first_token_index,
                         TokenPosition* last_token_index) const;
 
-  int32_t SourceFingerprint() const;
-  int32_t SourceFingerprint(TokenPosition start, TokenPosition end) const;
-
   static intptr_t InstanceSize() {
     return RoundedAllocationSize(sizeof(RawScript));
   }
@@ -3794,7 +3680,6 @@
   void set_source(const String& value) const;
   void set_kind(RawScript::Kind value) const;
   void set_load_timestamp(int64_t value) const;
-  void set_tokens(const TokenStream& value) const;
   RawArray* debug_positions() const;
 
   static RawScript* New();
@@ -4098,8 +3983,7 @@
   static RawLibrary* VMServiceLibrary();
 
   // Eagerly compile all classes and functions in the library.
-  static RawError* CompileAll();
-  static RawError* ParseAll(Thread* thread);
+  static RawError* CompileAll(bool ignore_error = false);
 #if !defined(DART_PRECOMPILED_RUNTIME)
   // Eagerly read all bytecode.
   static RawError* ReadAllBytecode();
@@ -4243,7 +4127,9 @@
                                    const ExternalTypedData& metadata_payload,
                                    const ExternalTypedData& metadata_mappings,
                                    const ExternalTypedData& constants_table,
-                                   const Array& scripts);
+                                   const Array& scripts,
+                                   const Array& libraries_cache,
+                                   const Array& classes_cache);
 
   static intptr_t InstanceSize() {
     return RoundedAllocationSize(sizeof(RawKernelProgramInfo));
@@ -4292,6 +4178,20 @@
 
   RawScript* ScriptAt(intptr_t index) const;
 
+  RawArray* libraries_cache() const { return raw_ptr()->libraries_cache_; }
+  void set_libraries_cache(const Array& cache) const;
+  RawLibrary* LookupLibrary(Thread* thread, const Smi& name_index) const;
+  RawLibrary* InsertLibrary(Thread* thread,
+                            const Smi& name_index,
+                            const Library& lib) const;
+
+  RawArray* classes_cache() const { return raw_ptr()->classes_cache_; }
+  void set_classes_cache(const Array& cache) const;
+  RawClass* LookupClass(Thread* thread, const Smi& name_index) const;
+  RawClass* InsertClass(Thread* thread,
+                        const Smi& name_index,
+                        const Class& klass) const;
+
  private:
   static RawKernelProgramInfo* New();
 
@@ -4940,6 +4840,10 @@
     return code->ptr()->instructions_;
   }
 
+  static uword EntryPoint(const RawCode* code) {
+    return Instructions::EntryPoint(InstructionsOf(code));
+  }
+
   static intptr_t saved_instructions_offset() {
     return OFFSET_OF(RawCode, instructions_);
   }
@@ -7208,6 +7112,18 @@
   friend class Thread;
 };
 
+class SmiTraits : AllStatic {
+ public:
+  static const char* Name() { return "SmiTraits"; }
+  static bool ReportStats() { return false; }
+
+  static bool IsMatch(const Object& a, const Object& b) {
+    return Smi::Cast(a).Value() == Smi::Cast(b).Value();
+  }
+
+  static uword Hash(const Object& obj) { return Smi::Cast(obj).Value(); }
+};
+
 class Mint : public Integer {
  public:
   static const intptr_t kBits = 63;  // 64-th bit is sign.
diff --git a/runtime/vm/object_id_ring_test.cc b/runtime/vm/object_id_ring_test.cc
index 84bd73f..d1c8801 100644
--- a/runtime/vm/object_id_ring_test.cc
+++ b/runtime/vm/object_id_ring_test.cc
@@ -7,6 +7,7 @@
 #include "vm/dart_api_impl.h"
 #include "vm/dart_api_state.h"
 #include "vm/globals.h"
+#include "vm/symbols.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/object_service.cc b/runtime/vm/object_service.cc
index c618ac6..d82135f 100644
--- a/runtime/vm/object_service.cc
+++ b/runtime/vm/object_service.cc
@@ -402,26 +402,6 @@
   }
 }
 
-void LiteralToken::PrintJSONImpl(JSONStream* stream, bool ref) const {
-  Object::PrintJSONImpl(stream, ref);
-}
-
-void TokenStream::PrintJSONImpl(JSONStream* stream, bool ref) const {
-  JSONObject jsobj(stream);
-  AddCommonObjectProperties(&jsobj, "Object", ref);
-  // TODO(johnmccutchan): Generate a stable id. TokenStreams hang off
-  // a Script object but do not have a back reference to generate a stable id.
-  jsobj.AddServiceId(*this);
-  if (ref) {
-    return;
-  }
-  const String& private_key = String::Handle(PrivateKey());
-  jsobj.AddProperty("privateKey", private_key);
-  // TODO(johnmccutchan): Add support for printing LiteralTokens and add
-  // them to members array.
-  JSONArray members(&jsobj, "members");
-}
-
 // See also Dart_ScriptGetTokenInfo.
 void Script::PrintJSONImpl(JSONStream* stream, bool ref) const {
   JSONObject jsobj(stream);
@@ -456,7 +436,7 @@
   // Print the line number table
   const GrowableObjectArray& lineNumberArray =
       GrowableObjectArray::Handle(GenerateLineNumberArray());
-  if (!lineNumberArray.IsNull()) {
+  if (!lineNumberArray.IsNull() && (lineNumberArray.Length() > 0)) {
     JSONArray tokenPosTable(&jsobj, "tokenPosTable");
 
     Object& value = Object::Handle();
diff --git a/runtime/vm/object_store.h b/runtime/vm/object_store.h
index c9d59ae..cd760de 100644
--- a/runtime/vm/object_store.h
+++ b/runtime/vm/object_store.h
@@ -122,9 +122,8 @@
   RW(Class, async_star_stream_controller)                                      \
   RW(Array, library_load_error_table)                                          \
   RW(Array, unique_dynamic_targets)                                            \
-  RW(GrowableObjectArray, token_objects)                                       \
-  RW(Array, token_objects_map)                                                 \
   RW(GrowableObjectArray, megamorphic_cache_table)                             \
+  RW(Code, build_method_extractor_code)                                        \
   R_(Code, megamorphic_miss_code)                                              \
   R_(Function, megamorphic_miss_function)                                      \
   RW(Array, obfuscation_map)                                                   \
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index 6a24632..0428856 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -166,61 +166,6 @@
   EXPECT_EQ(type_arguments1.raw(), type_arguments3.raw());
 }
 
-ISOLATE_UNIT_TEST_CASE(TokenStream) {
-  Zone* zone = Thread::Current()->zone();
-  String& source = String::Handle(zone, String::New("= ( 9 , ."));
-  String& private_key = String::Handle(zone, String::New(""));
-  const TokenStream& token_stream =
-      TokenStream::Handle(zone, TokenStream::New(source, private_key, false));
-  TokenStream::Iterator iterator(zone, token_stream, TokenPosition::kMinSource);
-  iterator.Advance();  // Advance to '(' token.
-  EXPECT_EQ(Token::kLPAREN, iterator.CurrentTokenKind());
-  iterator.Advance();
-  iterator.Advance();
-  iterator.Advance();  // Advance to '.' token.
-  EXPECT_EQ(Token::kPERIOD, iterator.CurrentTokenKind());
-  iterator.Advance();  // Advance to end of stream.
-  EXPECT_EQ(Token::kEOS, iterator.CurrentTokenKind());
-}
-
-ISOLATE_UNIT_TEST_CASE(GenerateExactSource) {
-  // Verify the exact formatting of generated sources.
-  const char* kScriptChars =
-      "\n"
-      "class A {\n"
-      "  static bar() { return 42; }\n"
-      "  static fly() { return 5; }\n"
-      "  void catcher(x) {\n"
-      "    try {\n"
-      "      if (x is! List) {\n"
-      "        for (int i = 0; i < x; i++) {\n"
-      "          fly();\n"
-      "          ++i;\n"
-      "        }\n"
-      "      } else {\n"
-      "        for (int i = 0; i < x; i--) {\n"
-      "          !fly();\n"
-      "          --i;\n"
-      "        }\n"
-      "      }\n"
-      "    } on Blah catch (a) {\n"
-      "      _print(17);\n"
-      "    } catch (e, s) {\n"
-      "      bar()\n"
-      "    }\n"
-      "  }\n"
-      "}\n";
-
-  String& url = String::Handle(String::New("dart-test:GenerateExactSource"));
-  String& source = String::Handle(String::New(kScriptChars));
-  Script& script =
-      Script::Handle(Script::New(url, source, RawScript::kScriptTag));
-  script.Tokenize(String::Handle(String::New("")));
-  const TokenStream& tokens = TokenStream::Handle(script.tokens());
-  const String& gen_source = String::Handle(tokens.GenerateSource());
-  EXPECT_STREQ(source.ToCString(), gen_source.ToCString());
-}
-
 TEST_CASE(Class_ComputeEndTokenPos) {
   const char* kScript =
       "\n"
@@ -2092,9 +2037,11 @@
   obj = RawObject::FromAddr(addr);
   EXPECT(obj.IsTypedData());
   left_over_array ^= obj.raw();
-  EXPECT_EQ((2 * kWordSize), left_over_array.Length());
+  EXPECT_EQ(4 * kWordSize - TypedData::InstanceSize(0),
+            left_over_array.Length());
 
-  // 2. Should produce an array of length 3 and a left over int8 array.
+  // 2. Should produce an array of length 3 and a left over int8 array or
+  // instance.
   array = GrowableObjectArray::New(kArrayLen);
   EXPECT_EQ(kArrayLen, array.Capacity());
   EXPECT_EQ(0, array.Length());
@@ -2111,9 +2058,14 @@
   EXPECT_EQ(3, new_array.Length());
   addr += used_size;
   obj = RawObject::FromAddr(addr);
-  EXPECT(obj.IsTypedData());
-  left_over_array ^= obj.raw();
-  EXPECT_EQ(0, left_over_array.Length());
+  if (TypedData::InstanceSize(0) <= 2 * kWordSize) {
+    EXPECT(obj.IsTypedData());
+    left_over_array ^= obj.raw();
+    EXPECT_EQ(2 * kWordSize - TypedData::InstanceSize(0),
+              left_over_array.Length());
+  } else {
+    EXPECT(obj.IsInstance());
+  }
 
   // 3. Should produce an array of length 1 and a left over int8 array.
   array = GrowableObjectArray::New(kArrayLen + 3);
@@ -2134,7 +2086,8 @@
   obj = RawObject::FromAddr(addr);
   EXPECT(obj.IsTypedData());
   left_over_array ^= obj.raw();
-  EXPECT_EQ((6 * kWordSize), left_over_array.Length());
+  EXPECT_EQ(8 * kWordSize - TypedData::InstanceSize(0),
+            left_over_array.Length());
 
   // 4. Verify that GC can handle the filler object for a large array.
   array = GrowableObjectArray::New((1 * MB) >> kWordSizeLog2);
@@ -2303,107 +2256,6 @@
   EXPECT_VALID(result);
 }
 
-ISOLATE_UNIT_TEST_CASE(EmbeddedScript) {
-  const char* url_chars = "builtin:test-case";
-  const char* text =
-      /* 1 */
-      "<!DOCTYPE html>\n"
-      /* 2 */
-      "  ... more junk ...\n"
-      /* 3 */
-      "  <script type='application/dart'>main() {\n"
-      /* 4 */
-      "    return 'foo';\n"
-      /* 5 */
-      "  }\n"
-      /* 6 */ "</script>\n";
-  const char* line1 = text;
-  const char* line2 = strstr(line1, "\n") + 1;
-  const char* line3 = strstr(line2, "\n") + 1;
-  const char* line4 = strstr(line3, "\n") + 1;
-  const char* line5 = strstr(line4, "\n") + 1;
-
-  const int first_dart_line = 3;
-  EXPECT(strstr(line3, "main") != NULL);
-  const int last_dart_line = 5;
-  EXPECT(strstr(line5, "}") != NULL);
-
-  const char* script_begin = strstr(text, "main");
-  EXPECT(script_begin != NULL);
-  const char* script_end = strstr(text, "</script>");
-  EXPECT(script_end != NULL);
-  int script_length = script_end - script_begin;
-  EXPECT(script_length > 0);
-
-  // The Dart script starts on line 3 instead of 1, offset is 3 - 1 = 2.
-  int line_offset = 2;
-  // Dart script starts with "main" on line 3.
-  intptr_t col_offset = script_begin - line3;
-  EXPECT(col_offset > 0);
-
-  char* src_chars = strdup(script_begin);
-  src_chars[script_length] = '\0';
-
-  const String& url = String::Handle(String::New(url_chars));
-  const String& source = String::Handle(String::New(src_chars));
-  const Script& script =
-      Script::Handle(Script::New(url, source, RawScript::kScriptTag));
-  script.SetLocationOffset(line_offset, col_offset);
-
-  String& str = String::Handle();
-  str = script.GetLine(first_dart_line);
-  EXPECT_STREQ("main() {", str.ToCString());
-  str = script.GetLine(last_dart_line);
-  EXPECT_STREQ("  }", str.ToCString());
-
-  script.Tokenize(String::Handle(String::New("ABC")));
-  // Tokens: 0: kIDENT, 1: kLPAREN, 2: kRPAREN, 3: kLBRACE, 4: kNEWLINE,
-  //         5: kRETURN, 6: kSTRING, 7: kSEMICOLON, 8: kNEWLINE,
-  //         9: kRBRACE, 10: kNEWLINE
-
-  intptr_t line, col;
-  intptr_t fast_line;
-  script.GetTokenLocation(TokenPosition(0), &line, &col);
-  EXPECT_EQ(first_dart_line, line);
-  EXPECT_EQ(col, col_offset + 1);
-
-  // We allow asking for only the line number, which only scans the token stream
-  // instead of rescanning the script.
-  script.GetTokenLocation(TokenPosition(0), &fast_line, NULL);
-  EXPECT_EQ(line, fast_line);
-
-  script.GetTokenLocation(TokenPosition(5), &line, &col);  // Token 'return'
-  EXPECT_EQ(4, line);  // 'return' is in line 4.
-  EXPECT_EQ(5, col);   // Four spaces before 'return'.
-
-  // We allow asking for only the line number, which only scans the token stream
-  // instead of rescanning the script.
-  script.GetTokenLocation(TokenPosition(5), &fast_line, NULL);
-  EXPECT_EQ(line, fast_line);
-
-  TokenPosition first_idx, last_idx;
-  script.TokenRangeAtLine(3, &first_idx, &last_idx);
-  EXPECT_EQ(0, first_idx.value());  // Token 'main' is first token.
-  EXPECT_EQ(3, last_idx.value());   // Token { is last token.
-  script.TokenRangeAtLine(4, &first_idx, &last_idx);
-  EXPECT_EQ(5, first_idx.value());  // Token 'return' is first token.
-  EXPECT_EQ(7, last_idx.value());   // Token ; is last token.
-  script.TokenRangeAtLine(5, &first_idx, &last_idx);
-  EXPECT_EQ(9, first_idx.value());  // Token } is first and only token.
-  EXPECT_EQ(9, last_idx.value());
-  script.TokenRangeAtLine(1, &first_idx, &last_idx);
-  EXPECT_EQ(0, first_idx.value());
-  EXPECT_EQ(3, last_idx.value());
-  script.TokenRangeAtLine(6, &first_idx, &last_idx);
-  EXPECT_EQ(-1, first_idx.value());
-  EXPECT_EQ(-1, last_idx.value());
-  script.TokenRangeAtLine(1000, &first_idx, &last_idx);
-  EXPECT_EQ(-1, first_idx.value());
-  EXPECT_EQ(-1, last_idx.value());
-
-  free(src_chars);
-}
-
 ISOLATE_UNIT_TEST_CASE(Context) {
   const int kNumVariables = 5;
   const Context& parent_context = Context::Handle(Context::New(0));
@@ -4041,7 +3893,7 @@
     }
     Object& handle = Object::Handle(obj);
     // Skip some common simple objects to run in reasonable time.
-    if (handle.IsString() || handle.IsArray() || handle.IsLiteralToken()) {
+    if (handle.IsString() || handle.IsArray()) {
       return;
     }
     objects_->Add(&handle);
@@ -4323,18 +4175,6 @@
         "\"valueAsString\":\"<being initialized>\"}",
         js.ToCString());
   }
-  // LiteralToken reference.  This is meant to be an example of a
-  // "weird" type that isn't usually returned by the VM Service except
-  // when we are doing direct heap inspection.
-  {
-    JSONStream js;
-    LiteralToken& tok = LiteralToken::Handle(LiteralToken::New());
-    tok.PrintJSON(&js, true);
-    ElideJSONSubstring("objects", js.ToCString(), buffer);
-    EXPECT_STREQ(
-        "{\"type\":\"@Object\",\"_vmType\":\"LiteralToken\",\"id\":\"\"}",
-        buffer);
-  }
 }
 
 #endif  // !PRODUCT
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index 7e9dea5..199d018 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -9,14 +9,12 @@
 
 #include "lib/invocation_mirror.h"
 #include "platform/utils.h"
-#include "vm/ast_transformer.h"
 #include "vm/bootstrap.h"
 #include "vm/class_finalizer.h"
 #include "vm/compiler/aot/precompiler.h"
 #include "vm/compiler/backend/il_printer.h"
 #include "vm/compiler/frontend/scope_builder.h"
 #include "vm/compiler/jit/compiler.h"
-#include "vm/compiler_stats.h"
 #include "vm/dart_api_impl.h"
 #include "vm/dart_entry.h"
 #include "vm/growable_array.h"
@@ -39,36 +37,15 @@
 #include "vm/symbols.h"
 #include "vm/tags.h"
 #include "vm/timeline.h"
-#include "vm/timer.h"
 #include "vm/zone.h"
 
 namespace dart {
 
-DEFINE_FLAG(bool, enable_debug_break, false, "Allow use of break \"message\".");
-DEFINE_FLAG(bool, trace_parser, false, "Trace parser operations.");
-// TODO(floitsch): remove the conditional-directive flag, once we publicly
-// committed to the current version.
-DEFINE_FLAG(bool,
-            conditional_directives,
-            true,
-            "Enable conditional directives");
-DEFINE_FLAG(
-    bool,
-    await_is_keyword,
-    false,
-    "await and yield are treated as proper keywords in synchronous code.");
-
-DECLARE_FLAG(bool, profile_vm);
-DECLARE_FLAG(bool, trace_service);
-
 // Quick access to the current thread, isolate and zone.
 #define T (thread())
 #define I (isolate())
 #define Z (zone())
 
-// Quick synthetic token position.
-#define ST(token_pos) ((token_pos).ToSynthetic())
-
 ParsedFunction::ParsedFunction(Thread* thread, const Function& function)
     : thread_(thread),
       function_(function),
@@ -342,45 +319,6 @@
   num_stack_locals_ = num_stack_locals;
 }
 
-void Parser::ParseCompilationUnit(const Library& library,
-                                  const Script& script) {
-  UNREACHABLE();
-}
-
-void Parser::ParseClass(const Class& cls) {
-  UNREACHABLE();
-}
-
-RawObject* Parser::ParseFunctionParameters(const Function& func) {
-  UNREACHABLE();
-  return Object::null();
-}
-
-void Parser::ParseFunction(ParsedFunction* parsed_function) {
-  UNREACHABLE();
-}
-
-RawObject* Parser::ParseMetadata(const Field& meta_data) {
-  UNREACHABLE();
-  return Object::null();
-}
-
-ParsedFunction* Parser::ParseStaticFieldInitializer(const Field& field) {
-  UNREACHABLE();
-  return NULL;
-}
-
-ArgumentListNode* Parser::BuildNoSuchMethodArguments(
-    TokenPosition call_pos,
-    const String& function_name,
-    const ArgumentListNode& function_args,
-    const LocalVariable* temp_for_last_arg,
-    bool is_super_invocation) {
-  UNREACHABLE();
-  return NULL;
-}
-
-
 }  // namespace dart
 
 #endif  // DART_PRECOMPILED_RUNTIME
diff --git a/runtime/vm/parser.h b/runtime/vm/parser.h
index d419238..da1c949 100644
--- a/runtime/vm/parser.h
+++ b/runtime/vm/parser.h
@@ -13,11 +13,11 @@
 #include "vm/allocation.h"
 #include "vm/ast.h"
 #include "vm/class_finalizer.h"
-#include "vm/compiler_stats.h"
 #include "vm/hash_table.h"
 #include "vm/kernel.h"
 #include "vm/object.h"
 #include "vm/raw_object.h"
+#include "vm/scopes.h"
 #include "vm/token.h"
 
 namespace dart {
@@ -48,44 +48,6 @@
 class TopLevel;
 class RecursionChecker;
 
-// We cache compile time constants during compilation.  This allows us
-// to look them up when the same code gets compiled again.  During
-// background compilation, we are not able to evaluate the constants
-// so this cache is necessary to support background compilation.
-//
-// We cache the constants with the script itself. This is helpful during isolate
-// reloading, as it allows us to reference the compile time constants associated
-// with a particular version of a script. The map key is simply the
-// TokenPosition where the constant is defined.
-class ConstMapKeyEqualsTraits {
- public:
-  static const char* Name() { return "ConstMapKeyEqualsTraits"; }
-  static bool ReportStats() { return false; }
-
-  static bool IsMatch(const Object& a, const Object& b) {
-    const Smi& key1 = Smi::Cast(a);
-    const Smi& key2 = Smi::Cast(b);
-    return (key1.Value() == key2.Value());
-  }
-  static bool IsMatch(const TokenPosition& key1, const Object& b) {
-    const Smi& key2 = Smi::Cast(b);
-    return (key1.value() == key2.Value());
-  }
-  static uword Hash(const Object& obj) {
-    const Smi& key = Smi::Cast(obj);
-    return HashValue(key.Value());
-  }
-  static uword Hash(const TokenPosition& key) { return HashValue(key.value()); }
-  // Used by CacheConstantValue if a new constant is added to the map.
-  static RawObject* NewKey(const TokenPosition& key) {
-    return Smi::New(key.value());
-  }
-
- private:
-  static uword HashValue(intptr_t pos) { return pos % (Smi::kMaxValue - 13); }
-};
-typedef UnorderedHashMap<ConstMapKeyEqualsTraits> ConstantsMap;
-
 // The class ParsedFunction holds the result of parsing a function.
 class ParsedFunction : public ZoneAllocated {
  public:
@@ -276,29 +238,6 @@
 
 class Parser : public ValueObject {
  public:
-  // Parse the top level of a whole script file and register declared classes
-  // in the given library.
-  static void ParseCompilationUnit(const Library& library,
-                                   const Script& script);
-
-  // Parse top level of a class and register all functions/fields.
-  static void ParseClass(const Class& cls);
-
-  static void ParseFunction(ParsedFunction* parsed_function);
-
-  // Parse and evaluate the metadata expressions at token_pos in the
-  // class namespace of class cls (which can be the implicit toplevel
-  // class if the metadata is at the top-level).
-  static RawObject* ParseMetadata(const Field& meta_data);
-
-  // Build a function containing the initializer expression of the
-  // given static field.
-  static ParsedFunction* ParseStaticFieldInitializer(const Field& field);
-
-  static void InsertCachedConstantValue(const Script& script,
-                                        TokenPosition token_pos,
-                                        const Instance& value);
-
   // Parse a function to retrieve parameter information that is not retained in
   // the Function object. Returns either an error if the parse fails (which
   // could be the case for local functions), or a flat array of entries for each
@@ -311,20 +250,8 @@
     kParameterMetadataOffset,
     kParameterEntrySize,
   };
-  static RawObject* ParseFunctionParameters(const Function& func);
 
  private:
-  friend class EffectGraphVisitor;  // For BuildNoSuchMethodArguments.
-
-  // Build arguments for a NoSuchMethodCall. If LocalVariable temp is not NULL,
-  // the last argument is stored in temp.
-  static ArgumentListNode* BuildNoSuchMethodArguments(
-      TokenPosition call_pos,
-      const String& function_name,
-      const ArgumentListNode& function_args,
-      const LocalVariable* temp,
-      bool is_super_invocation);
-
   DISALLOW_COPY_AND_ASSIGN(Parser);
 };
 
diff --git a/runtime/vm/parser_test.cc b/runtime/vm/parser_test.cc
deleted file mode 100644
index 58c0125..0000000
--- a/runtime/vm/parser_test.cc
+++ /dev/null
@@ -1,583 +0,0 @@
-// Copyright (c) 2011, 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.
-
-#include "vm/parser.h"
-#include "vm/ast_printer.h"
-#include "vm/class_finalizer.h"
-#include "vm/debugger.h"
-#include "vm/debugger_api_impl_test.h"
-#include "vm/longjump.h"
-#include "vm/object.h"
-#include "vm/symbols.h"
-#include "vm/thread.h"
-#include "vm/unit_test.h"
-
-namespace dart {
-
-DECLARE_FLAG(bool, show_invisible_frames);
-
-static void DumpFunction(const Library& lib,
-                         const char* cname,
-                         const char* fname) {
-  const String& classname =
-      String::Handle(Symbols::New(Thread::Current(), cname));
-  String& funcname = String::Handle(String::New(fname));
-
-  bool retval;
-  EXPECT(Isolate::Current() != NULL);
-  LongJumpScope jump;
-  if (setjmp(*jump.Set()) == 0) {
-    Class& cls = Class::Handle(lib.LookupClass(classname));
-    EXPECT(!cls.IsNull());
-    Function& function =
-        Function::ZoneHandle(cls.LookupStaticFunction(funcname));
-    EXPECT(!function.IsNull());
-    ParsedFunction* parsed_function =
-        new ParsedFunction(Thread::Current(), function);
-    Parser::ParseFunction(parsed_function);
-    EXPECT(parsed_function->node_sequence() != NULL);
-    printf("Class %s function %s:\n", cname, fname);
-    if (FLAG_support_ast_printer) {
-      AstPrinter ast_printer;
-      ast_printer.PrintFunctionNodes(*parsed_function);
-    } else {
-      OS::PrintErr("AST printer not supported.");
-    }
-    retval = true;
-  } else {
-    retval = false;
-  }
-  EXPECT(retval);
-}
-
-void CheckField(const Library& lib,
-                const char* class_name,
-                const char* field_name,
-                bool expect_static,
-                bool is_final) {
-  const String& classname =
-      String::Handle(Symbols::New(Thread::Current(), class_name));
-  Class& cls = Class::Handle(lib.LookupClass(classname));
-  EXPECT(!cls.IsNull());
-
-  String& fieldname = String::Handle(String::New(field_name));
-  String& functionname = String::Handle();
-  Function& function = Function::Handle();
-  Field& field = Field::Handle();
-  if (expect_static) {
-    field ^= cls.LookupStaticFieldAllowPrivate(fieldname);
-    functionname ^= Field::GetterName(fieldname);
-    function ^= cls.LookupStaticFunction(functionname);
-    EXPECT(function.IsNull());
-    functionname ^= Field::SetterName(fieldname);
-    function ^= cls.LookupStaticFunction(functionname);
-    EXPECT(function.IsNull());
-  } else {
-    field ^= cls.LookupInstanceFieldAllowPrivate(fieldname);
-    functionname ^= Field::GetterName(fieldname);
-    function ^= cls.LookupDynamicFunction(functionname);
-    EXPECT(!function.IsNull());
-    functionname ^= Field::SetterName(fieldname);
-    function ^= cls.LookupDynamicFunction(functionname);
-    EXPECT(is_final ? function.IsNull() : !function.IsNull());
-  }
-  EXPECT(!field.IsNull());
-
-  EXPECT_EQ(field.is_static(), expect_static);
-}
-
-void CheckFunction(const Library& lib,
-                   const char* class_name,
-                   const char* function_name,
-                   bool expect_static) {
-  const String& classname =
-      String::Handle(Symbols::New(Thread::Current(), class_name));
-  Class& cls = Class::Handle(lib.LookupClass(classname));
-  EXPECT(!cls.IsNull());
-
-  String& functionname = String::Handle(String::New(function_name));
-  Function& function = Function::Handle();
-  if (expect_static) {
-    function ^= cls.LookupStaticFunction(functionname);
-  } else {
-    function ^= cls.LookupDynamicFunction(functionname);
-  }
-  EXPECT(!function.IsNull());
-}
-
-ISOLATE_UNIT_TEST_CASE(ParseClassDefinition) {
-  const char* script_chars =
-      "class C { }  \n"
-      "class A {    \n"
-      "  var f0;              \n"
-      "  int f1;              \n"
-      "  final f2;            \n"
-      "  final int f3, f4;    \n"
-      "  static String s1, s2;   \n"
-      "  static const int s3 = 8675309;    \n"
-      "  static bar(i, [var d = 5]) { return 77; } \n"
-      "  static foo() native \"native_function_name\";        \n"
-      "}  \n";
-
-  String& url = String::Handle(String::New("dart-test:Parser_TopLevel"));
-  String& source = String::Handle(String::New(script_chars));
-  Script& script =
-      Script::Handle(Script::New(url, source, RawScript::kScriptTag));
-  Library& lib = Library::ZoneHandle(Library::CoreLibrary());
-
-  script.Tokenize(String::Handle(String::New("")));
-
-  Parser::ParseCompilationUnit(lib, script);
-  EXPECT(ClassFinalizer::ProcessPendingClasses());
-  CheckField(lib, "A", "f1", false, false);
-  CheckField(lib, "A", "f2", false, true);
-  CheckField(lib, "A", "f3", false, true);
-  CheckField(lib, "A", "f4", false, true);
-  CheckField(lib, "A", "s1", true, false);
-  CheckField(lib, "A", "s2", true, false);
-  CheckField(lib, "A", "s3", true, true);
-  CheckFunction(lib, "A", "bar", true);
-  CheckFunction(lib, "A", "foo", true);
-}
-
-ISOLATE_UNIT_TEST_CASE(Parser_TopLevel) {
-  const char* script_chars =
-      "class A extends B {    \n"
-      "  static bar(var i, [var d = 5]) { return 77; } \n"
-      "  static foo() { return 42; } \n"
-      "  static baz(var i) { var q = 5; return i + q; } \n"
-      "}   \n"
-      "    \n"
-      "class B {  \n"
-      "  static bam(k) { return A.foo(); }   \n"
-      "}   \n";
-
-  String& url = String::Handle(String::New("dart-test:Parser_TopLevel"));
-  String& source = String::Handle(String::New(script_chars));
-  Script& script =
-      Script::Handle(Script::New(url, source, RawScript::kScriptTag));
-  Library& lib = Library::ZoneHandle(Library::CoreLibrary());
-
-  script.Tokenize(String::Handle(String::New("")));
-
-  Parser::ParseCompilationUnit(lib, script);
-  EXPECT(ClassFinalizer::ProcessPendingClasses());
-
-  DumpFunction(lib, "A", "foo");
-  DumpFunction(lib, "A", "bar");
-  DumpFunction(lib, "A", "baz");
-  DumpFunction(lib, "B", "bam");
-}
-
-#ifndef PRODUCT
-
-static char* saved_vars = NULL;
-
-static char* SkipIndex(const char* input) {
-  char* output_buffer = new char[strlen(input)];
-  char* output = output_buffer;
-
-  while (input[0] != '\0') {
-    const char* index_pos = strstr(input, "index=");
-    if (index_pos == NULL) {
-      while (input[0] != '\0') {
-        *output++ = *input++;
-      }
-      break;
-    }
-
-    // Copy prefix until "index="
-    while (input < index_pos) {
-      *output++ = *input++;
-    }
-
-    // Skip until space.
-    input += strcspn(input, " ");
-    // Skip until next non-space.
-    input += strspn(input, " ");
-  }
-
-  output[0] = '\0';
-  return output_buffer;
-}
-
-// Saves the var descriptors for all frames on the stack as a string.
-static void SaveVars(Dart_IsolateId isolate_id,
-                     intptr_t bp_id,
-                     const Dart_CodeLocation& loc) {
-  TransitionNativeToVM transition(Thread::Current());
-  DebuggerStackTrace* stack = Isolate::Current()->debugger()->StackTrace();
-  intptr_t num_frames = stack->Length();
-  const int kBufferLen = 2048;
-  char* buffer = reinterpret_cast<char*>(malloc(kBufferLen));
-  char* pos = buffer;
-  LocalVarDescriptors& var_desc = LocalVarDescriptors::Handle();
-  for (intptr_t i = 0; i < num_frames; i++) {
-    ActivationFrame* frame = stack->FrameAt(i);
-    var_desc = frame->code().GetLocalVarDescriptors();
-    const char* var_str = SkipIndex(var_desc.ToCString());
-    const char* function_str =
-        String::Handle(frame->function().QualifiedUserVisibleName())
-            .ToCString();
-    pos += Utils::SNPrint(pos, (kBufferLen - (pos - buffer)), "%s\n%s",
-                          function_str, var_str);
-    delete[] var_str;
-  }
-  pos[0] = '\0';
-  if (saved_vars != NULL) {
-    free(saved_vars);
-  }
-  saved_vars = buffer;
-}
-
-// Uses the debugger to pause the program and capture the variable
-// descriptors for all frames on the stack.
-static char* CaptureVarsAtLine(Dart_Handle lib, const char* entry, int line) {
-  EXPECT(ClassFinalizer::ProcessPendingClasses());
-  bool saved_flag = FLAG_show_invisible_frames;
-  FLAG_show_invisible_frames = true;
-  Dart_SetPausedEventHandler(SaveVars);
-  EXPECT_VALID(Dart_SetBreakpoint(NewString(TestCase::url()), line));
-  saved_vars = NULL;
-  EXPECT_VALID(Dart_Invoke(lib, NewString(entry), 0, NULL));
-  char* tmp = saved_vars;
-  saved_vars = NULL;
-  FLAG_show_invisible_frames = saved_flag;
-  return tmp;
-}
-
-TEST_CASE(Parser_AllocateVariables_CapturedVar) {
-  const char* kScriptChars =
-      "int main() {\n"
-      "  var value = 11;\n"
-      "  int f(var param) {\n"
-      "    return param + value;\n"  // line 4
-      "  }\n"
-      "  return f(22);\n"
-      "}\n";
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
-  EXPECT_VALID(lib);
-  char* vars = CaptureVarsAtLine(lib, "main", 4);
-  EXPECT_STREQ(
-      // function f uses one ctx var at (0); doesn't save ctx.
-      "main.f\n"
-      " 0 ContextLevel  level=0   begin=0   end=56\n"
-      " 1 ContextVar    level=0   begin=14  end=28  name=value\n"
-      " 2 StackVar      scope=1   begin=16  end=28  name=param\n"
-      " 3 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // function main uses one ctx var at (1); saves caller ctx.
-      "main\n"
-      " 0 ContextLevel  level=0   begin=0   end=10\n"
-      " 1 ContextLevel  level=1   begin=12  end=20\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 3 ContextVar    level=1   begin=10  end=38  name=value\n"
-      " 4 StackVar      scope=2   begin=12  end=38  name=f\n",
-      vars);
-  free(vars);
-}
-
-TEST_CASE(Parser_AllocateVariables_NestedCapturedVar) {
-  const char* kScriptChars =
-      "int a() {\n"
-      "  int b() {\n"
-      "    var value = 11;\n"
-      "    int c() {\n"
-      "      return value;\n"  // line 5
-      "    }\n"
-      "    return c();\n"
-      "  }\n"
-      "  return b();\n"
-      "}\n";
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
-  EXPECT_VALID(lib);
-  char* vars = CaptureVarsAtLine(lib, "a", 5);
-  EXPECT_STREQ(
-      // Innermost function uses captured variable 'value' from middle
-      // function.
-      "a.b.c\n"
-      " 0 ContextLevel  level=0   begin=0   end=54\n"
-      " 1 ContextVar    level=0   begin=20  end=30  name=value\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      // Middle function saves the entry context.  Notice that this
-      // happens here and not in the outermost function.  We always
-      // save the entry context at the last possible moment.
-      "a.b\n"
-      " 0 ContextLevel  level=0   begin=0   end=50\n"
-      " 1 ContextLevel  level=1   begin=52  end=60\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 3 ContextVar    level=1   begin=16  end=38  name=value\n"
-      " 4 StackVar      scope=2   begin=18  end=38  name=c\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // Outermost function neglects to save the entry context.  We
-      // don't save the entry context if the function has no captured
-      // variables.
-      "a\n"
-      " 0 ContextLevel  level=0   begin=0   end=18\n"
-      " 1 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 2 StackVar      scope=2   begin=6   end=46  name=b\n",
-      vars);
-  free(vars);
-}
-
-TEST_CASE(Parser_AllocateVariables_TwoChains) {
-  const char* kScriptChars =
-      "int a() {\n"
-      "  var value1 = 11;\n"
-      "  int b() {\n"
-      "    int aa() {\n"
-      "      var value2 = 12;\n"
-      "      int bb() {\n"
-      "        return value2;\n"  // line 7
-      "      }\n"
-      "      return bb();\n"
-      "    }\n"
-      "    return value1 + aa();\n"
-      "  }\n"
-      "  return b();\n"
-      "}\n";
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
-  EXPECT_VALID(lib);
-
-  char* vars = CaptureVarsAtLine(lib, "a", 7);
-  EXPECT_STREQ(
-      // bb captures only value2 from aa.  No others.
-      "a.b.aa.bb\n"
-      " 0 ContextLevel  level=0   begin=0   end=54\n"
-      " 1 ContextVar    level=0   begin=35  end=46  name=value2\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0"
-      "   name=:current_context_var\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0"
-      "   name=:current_context_var\n"
-
-      // aa shares value2. Notice that we save the entry ctx instead
-      // of chaining from b.  This keeps us from holding onto closures
-      // that we would never access.
-      "a.b.aa\n"
-      " 0 ContextLevel  level=0   begin=0   end=50\n"
-      " 1 ContextLevel  level=1   begin=52  end=60\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 3 ContextVar    level=1   begin=30  end=55  name=value2\n"
-      " 4 StackVar      scope=2   begin=32  end=55  name=bb\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0"
-      "   name=:current_context_var\n"
-
-      // b captures value1 from a.
-      "a.b\n"
-      " 0 ContextLevel  level=0   begin=0   end=60\n"
-      " 1 ContextVar    level=0   begin=14  end=65  name=value1\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0"
-      "   name=:current_context_var\n"
-      " 3 StackVar      scope=2   begin=18  end=65  name=aa\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0"
-      "   name=:current_context_var\n"
-
-      // a shares value1, saves entry ctx.
-      "a\n"
-      " 0 ContextLevel  level=0   begin=0   end=10\n"
-      " 1 ContextLevel  level=1   begin=12  end=20\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0"
-      "   name=:current_context_var\n"
-      " 3 ContextVar    level=1   begin=10  end=73  name=value1\n"
-      " 4 StackVar      scope=2   begin=12  end=73  name=b\n",
-      vars);
-  free(vars);
-}
-
-TEST_CASE(Parser_AllocateVariables_Issue7681) {
-  // This is a distilled version of the program from Issue 7681.
-  //
-  // When we create the closure at line 11, we need to make sure to
-  // save the entry context instead of chaining to the parent context.
-  //
-  // This test is somewhat redundant with CapturedVarChain but
-  // included for good measure.
-  const char* kScriptChars =
-      "class X {\n"
-      "  Function onX;\n"
-      "}\n"
-      "\n"
-      "class Y {\n"
-      "  Function onY;\n"
-      "}\n"
-      "\n"
-      "void doIt() {\n"
-      "  var x = new X();\n"
-      "  x.onX = (y) {\n"
-      "    y.onY = () {\n"  // line 12
-      "      return y;\n"
-      "    };\n"
-      "  };\n"
-      "   x.onX(new Y());\n"
-      "}\n";
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
-  EXPECT_VALID(lib);
-  char* vars = CaptureVarsAtLine(lib, "doIt", 12);
-  EXPECT_STREQ(
-      // This frame saves the entry context instead of chaining.  Good.
-      "doIt.<anonymous closure>\n"
-      " 0 ContextLevel  level=0   begin=0   end=0\n"
-      " 1 ContextLevel  level=1   begin=48  end=56\n"
-      " 2 ContextVar    level=1   begin=44  end=67  name=y\n"
-      " 3 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      "X.onX\n"
-      " 0 ContextLevel  level=0   begin=0   end=14\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // No context is saved here since no vars are captured.
-      "doIt\n"
-      " 0 ContextLevel  level=0   begin=0   end=22\n"
-      " 1 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 2 StackVar      scope=2   begin=36  end=83  name=x\n",
-      vars);
-  free(vars);
-}
-
-TEST_CASE(Parser_AllocateVariables_CaptureLoopVar) {
-  // This test verifies that...
-  //
-  //   https://code.google.com/p/dart/issues/detail?id=18561
-  //
-  // ...stays fixed.
-  const char* kScriptChars =
-      "int outer() {\n"
-      "  for(int i = 0; i < 1; i++) {\n"
-      "    var value = 11 + i;\n"
-      "    int inner() {\n"
-      "      return value;\n"  // line 5
-      "    }\n"
-      "    return inner();\n"
-      "  }\n"
-      "}\n";
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
-  EXPECT_VALID(lib);
-  char* vars = CaptureVarsAtLine(lib, "outer", 5);
-  EXPECT_STREQ(
-      // inner function captures variable value.  That's fine.
-      "outer.inner\n"
-      " 0 ContextLevel  level=0   begin=0   end=54\n"
-      " 1 ContextVar    level=0   begin=34  end=44  name=value\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // Closure call saves current context.
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // The outer function saves the entry context, even though the
-      // captured variable is in a loop.  Good.
-      "outer\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 ContextLevel  level=1   begin=14  end=22\n"
-      " 2 ContextLevel  level=0   begin=24  end=38\n"
-      " 3 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 4 StackVar      scope=3   begin=12  end=53  name=i\n"
-      " 5 ContextVar    level=1   begin=29  end=53  name=value\n"
-      " 6 StackVar      scope=4   begin=31  end=53  name=inner\n",
-      vars);
-  free(vars);
-}
-
-TEST_CASE(Parser_AllocateVariables_MiddleChain) {
-  const char* kScriptChars =
-      "a() {\n"
-      "  int x = 11;\n"
-      "  b() {\n"
-      "    for (int i = 0; i < 1; i++) {\n"
-      "      int d() {\n"
-      "        return i;\n"
-      "      }\n"
-      "    }\n"
-      "    int c() {\n"
-      "      return x + 1;\n"  // line 10
-      "    }\n"
-      "    return c();\n"
-      "  }\n"
-      "  return b();\n"
-      "}\n";
-  Dart_Handle lib = TestCase::LoadTestScript(kScriptChars, NULL);
-  EXPECT_VALID(lib);
-  char* vars = CaptureVarsAtLine(lib, "a", 10);
-  EXPECT_STREQ(
-      "a.b.c\n"
-      " 0 ContextLevel  level=0   begin=0   end=56\n"
-      " 1 ContextVar    level=0   begin=52  end=65  name=x\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      // Doesn't save the entry context.  Chains to parent instead.
-      "a.b\n"
-      " 0 ContextLevel  level=0   begin=0   end=50\n"
-      " 1 ContextLevel  level=1   begin=52  end=76\n"
-      " 2 ContextLevel  level=0   begin=78  end=84\n"
-      " 3 ContextVar    level=0   begin=12  end=74  name=x\n"
-      " 4 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 5 StackVar      scope=2   begin=49  end=74  name=c\n"
-      " 6 ContextVar    level=1   begin=23  end=49  name=i\n"
-      " 7 StackVar      scope=4   begin=34  end=49  name=d\n"
-
-      "_Closure.call\n"
-      " 0 ContextLevel  level=0   begin=0   end=12\n"
-      " 1 StackVar      scope=1   begin=-1  end=0   name=this\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-
-      "a\n"
-      " 0 ContextLevel  level=0   begin=0   end=10\n"
-      " 1 ContextLevel  level=1   begin=12  end=20\n"
-      " 2 CurrentCtx    scope=0   begin=0   end=0   name=:current_context_var\n"
-      " 3 ContextVar    level=1   begin=9   end=82  name=x\n"
-      " 4 StackVar      scope=2   begin=11  end=82  name=b\n",
-      vars);
-  free(vars);
-}
-
-#endif  // !PRODUCT
-
-}  // namespace dart
diff --git a/runtime/vm/profiler.cc b/runtime/vm/profiler.cc
index 3754ac1..7ca6fa3 100644
--- a/runtime/vm/profiler.cc
+++ b/runtime/vm/profiler.cc
@@ -410,9 +410,12 @@
   sample->Clear();
 }
 
-static void DumpStackFrame(intptr_t frame_index, uword pc) {
+static void DumpStackFrame(intptr_t frame_index,
+                           uword pc,
+                           bool try_symbolize_dart_frames) {
   Thread* thread = Thread::Current();
-  if ((thread != NULL) && !thread->IsAtSafepoint()) {
+  if ((thread != NULL) && !thread->IsAtSafepoint() &&
+      try_symbolize_dart_frames) {
     Isolate* isolate = thread->isolate();
     if ((isolate != NULL) && isolate->is_runnable()) {
       // Only attempt to symbolize Dart frames if we can safely iterate the
@@ -443,14 +446,16 @@
   ProfilerStackWalker(Dart_Port port_id,
                       Sample* head_sample,
                       SampleBuffer* sample_buffer,
-                      intptr_t skip_count = 0)
+                      intptr_t skip_count = 0,
+                      bool try_symbolize_dart_frames = true)
       : port_id_(port_id),
         sample_(head_sample),
         sample_buffer_(sample_buffer),
         skip_count_(skip_count),
         frames_skipped_(0),
         frame_index_(0),
-        total_frames_(0) {
+        total_frames_(0),
+        try_symbolize_dart_frames_(try_symbolize_dart_frames) {
     if (sample_ == NULL) {
       ASSERT(sample_buffer_ == NULL);
     } else {
@@ -466,7 +471,7 @@
     }
 
     if (sample_ == NULL) {
-      DumpStackFrame(frame_index_, pc);
+      DumpStackFrame(frame_index_, pc, try_symbolize_dart_frames_);
       frame_index_++;
       total_frames_++;
       return true;
@@ -501,6 +506,7 @@
   intptr_t frames_skipped_;
   intptr_t frame_index_;
   intptr_t total_frames_;
+  const bool try_symbolize_dart_frames_;
 };
 
 // Executing Dart code, walk the stack.
@@ -714,8 +720,13 @@
                             uword pc,
                             uword fp,
                             uword sp,
-                            intptr_t skip_count = 0)
-      : ProfilerStackWalker(port_id, sample, sample_buffer, skip_count),
+                            intptr_t skip_count = 0,
+                            bool try_symbolize_dart_frames = true)
+      : ProfilerStackWalker(port_id,
+                            sample,
+                            sample_buffer,
+                            skip_count,
+                            try_symbolize_dart_frames),
         stack_upper_(stack_upper),
         original_pc_(pc),
         original_fp_(fp),
@@ -1050,7 +1061,7 @@
 
 void Profiler::DumpStackTrace(void* context) {
   if (context == NULL) {
-    DumpStackTrace();
+    DumpStackTrace(/*for_crash=*/true);
     return;
   }
 #if defined(HOST_OS_LINUX) || defined(HOST_OS_MACOS) || defined(HOST_OS_ANDROID)
@@ -1059,7 +1070,7 @@
   uword pc = SignalHandler::GetProgramCounter(mcontext);
   uword fp = SignalHandler::GetFramePointer(mcontext);
   uword sp = SignalHandler::GetCStackPointer(mcontext);
-  DumpStackTrace(sp, fp, pc, true /* for_crash */);
+  DumpStackTrace(sp, fp, pc, /*for_crash=*/true);
 #elif defined(HOST_OS_WINDOWS)
   CONTEXT* ctx = reinterpret_cast<CONTEXT*>(context);
 #if defined(HOST_ARCH_IA32)
@@ -1073,7 +1084,7 @@
 #else
 #error Unsupported architecture.
 #endif
-  DumpStackTrace(sp, fp, pc, true /* for_crash */);
+  DumpStackTrace(sp, fp, pc, /*for_crash=*/true);
 #else
 // TODO(fschneider): Add support for more platforms.
 // Do nothing on unsupported platforms.
@@ -1122,7 +1133,9 @@
   }
 
   ProfilerNativeStackWalker native_stack_walker(
-      ILLEGAL_PORT, NULL, NULL, stack_lower, stack_upper, pc, fp, sp);
+      ILLEGAL_PORT, NULL, NULL, stack_lower, stack_upper, pc, fp, sp,
+      /*skip_count=*/0,
+      /*try_symbolize_dart_frames=*/!for_crash);
   native_stack_walker.walk();
   OS::PrintErr("-- End of DumpStackTrace\n");
 }
diff --git a/runtime/vm/profiler_service.cc b/runtime/vm/profiler_service.cc
index 286f2dd..856df68 100644
--- a/runtime/vm/profiler_service.cc
+++ b/runtime/vm/profiler_service.cc
@@ -2643,14 +2643,7 @@
     script.GetTokenLocation(token_pos, &line, &column, &token_len);
     str = script.GetSnippet(line, column, line, column + token_len);
   } else {
-    const TokenStream& token_stream =
-        TokenStream::Handle(zone, script.tokens());
-    if (token_stream.IsNull()) {
-      // No token position.
-      return NULL;
-    }
-    TokenStream::Iterator iterator(zone, token_stream, token_pos);
-    str = iterator.CurrentLiteral();
+    UNREACHABLE();
   }
   return str.IsNull() ? NULL : str.ToCString();
 }
diff --git a/runtime/vm/profiler_test.cc b/runtime/vm/profiler_test.cc
index af1a18a..36f8318 100644
--- a/runtime/vm/profiler_test.cc
+++ b/runtime/vm/profiler_test.cc
@@ -10,6 +10,7 @@
 #include "vm/profiler.h"
 #include "vm/profiler_service.h"
 #include "vm/source_report.h"
+#include "vm/symbols.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index 2dea940..76a2569 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -381,8 +381,6 @@
 REGULAR_VISITOR(SignatureData)
 REGULAR_VISITOR(RedirectionData)
 REGULAR_VISITOR(Field)
-REGULAR_VISITOR(LiteralToken)
-REGULAR_VISITOR(TokenStream)
 REGULAR_VISITOR(Script)
 REGULAR_VISITOR(Library)
 REGULAR_VISITOR(LibraryPrefix)
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h
index b8a4d7c..98d2b44 100644
--- a/runtime/vm/raw_object.h
+++ b/runtime/vm/raw_object.h
@@ -29,8 +29,6 @@
   V(SignatureData)                                                             \
   V(RedirectionData)                                                           \
   V(Field)                                                                     \
-  V(LiteralToken)                                                              \
-  V(TokenStream)                                                               \
   V(Script)                                                                    \
   V(Library)                                                                   \
   V(Namespace)                                                                 \
@@ -1158,30 +1156,6 @@
   friend class CidRewriteVisitor;
 };
 
-class RawLiteralToken : public RawObject {
-  RAW_HEAP_OBJECT_IMPLEMENTATION(LiteralToken);
-
-  VISIT_FROM(RawObject*, literal_);
-  RawString* literal_;  // Literal characters as they appear in source text.
-  RawObject* value_;    // The actual object corresponding to the token.
-  VISIT_TO(RawObject*, value_);
-  Token::Kind kind_;  // The literal kind (string, integer, double).
-
-  friend class SnapshotReader;
-};
-
-class RawTokenStream : public RawObject {
-  RAW_HEAP_OBJECT_IMPLEMENTATION(TokenStream);
-
-  VISIT_FROM(RawObject*, private_key_);
-  RawString* private_key_;  // Key used for private identifiers.
-  RawGrowableObjectArray* token_objects_;
-  RawExternalTypedData* stream_;
-  VISIT_TO(RawObject*, stream_);
-
-  friend class SnapshotReader;
-};
-
 class RawScript : public RawObject {
  public:
   enum Kind {
@@ -1204,7 +1178,6 @@
   RawArray* debug_positions_;
   RawArray* yield_positions_;
   RawKernelProgramInfo* kernel_program_info_;
-  RawTokenStream* tokens_;
   RawString* source_;
   VISIT_TO(RawObject*, source_);
   RawObject** to_snapshot(Snapshot::Kind kind) {
@@ -1213,7 +1186,7 @@
         return reinterpret_cast<RawObject**>(&ptr()->url_);
       case Snapshot::kFull:
       case Snapshot::kFullJIT:
-        return reinterpret_cast<RawObject**>(&ptr()->tokens_);
+        return reinterpret_cast<RawObject**>(&ptr()->kernel_program_info_);
       case Snapshot::kMessage:
       case Snapshot::kNone:
       case Snapshot::kInvalid:
@@ -1316,7 +1289,9 @@
   RawGrowableObjectArray* potential_natives_;
   RawGrowableObjectArray* potential_pragma_functions_;
   RawExternalTypedData* constants_table_;
-  VISIT_TO(RawObject*, constants_table_);
+  RawArray* libraries_cache_;
+  RawArray* classes_cache_;
+  VISIT_TO(RawObject*, classes_cache_);
 
   RawObject** to_snapshot(Snapshot::Kind kind) {
     return reinterpret_cast<RawObject**>(&ptr()->potential_natives_);
@@ -2322,9 +2297,6 @@
   VISIT_TO(RawCompressed, length_)
 
   uint8_t* data_;
-
-  friend class TokenStream;
-  friend class RawTokenStream;
 };
 
 // VM implementations of the basic types in the isolate.
diff --git a/runtime/vm/raw_object_snapshot.cc b/runtime/vm/raw_object_snapshot.cc
index 24a6cd4..94366af 100644
--- a/runtime/vm/raw_object_snapshot.cc
+++ b/runtime/vm/raw_object_snapshot.cc
@@ -14,6 +14,14 @@
 
 namespace dart {
 
+// TODO(dartbug.com/34796): enable or remove this optimization.
+DEFINE_FLAG(
+    uint64_t,
+    externalize_typed_data_threshold,
+    kMaxUint64,
+    "Convert TypedData to ExternalTypedData when sending through a message"
+    " port after it exceeds certain size in bytes.");
+
 #define OFFSET_OF_FROM(obj)                                                    \
   obj.raw()->from() - reinterpret_cast<RawObject**>(obj.raw()->ptr())
 
@@ -591,38 +599,6 @@
   UNREACHABLE();
 }
 
-RawLiteralToken* LiteralToken::ReadFrom(SnapshotReader* reader,
-                                        intptr_t object_id,
-                                        intptr_t tags,
-                                        Snapshot::Kind kind,
-                                        bool as_reference) {
-  UNREACHABLE();
-  return LiteralToken::null();
-}
-
-void RawLiteralToken::WriteTo(SnapshotWriter* writer,
-                              intptr_t object_id,
-                              Snapshot::Kind kind,
-                              bool as_reference) {
-  UNREACHABLE();
-}
-
-RawTokenStream* TokenStream::ReadFrom(SnapshotReader* reader,
-                                      intptr_t object_id,
-                                      intptr_t tags,
-                                      Snapshot::Kind kind,
-                                      bool as_reference) {
-  UNREACHABLE();
-  return TokenStream::null();
-}
-
-void RawTokenStream::WriteTo(SnapshotWriter* writer,
-                             intptr_t object_id,
-                             Snapshot::Kind kind,
-                             bool as_reference) {
-  UNREACHABLE();
-}
-
 RawScript* Script::ReadFrom(SnapshotReader* reader,
                             intptr_t object_id,
                             intptr_t tags,
@@ -1897,8 +1873,6 @@
   free(buffer);
 }
 
-static const intptr_t kExternalizeTypedDataThreshold = 4 * KB;
-
 void RawTypedData::WriteTo(SnapshotWriter* writer,
                            intptr_t object_id,
                            Snapshot::Kind kind,
@@ -1975,7 +1949,7 @@
   writer->WriteInlinedObjectHeader(object_id);
 
   if ((kind == Snapshot::kMessage) &&
-      (bytes >= kExternalizeTypedDataThreshold)) {
+      (static_cast<uint64_t>(bytes) >= FLAG_externalize_typed_data_threshold)) {
     // Write as external.
     writer->WriteIndexedObject(external_cid);
     writer->WriteTags(writer->GetObjectTags(this));
@@ -2076,31 +2050,21 @@
   // Write out the serialization header value for this object.
   writer->WriteInlinedObjectHeader(object_id);
 
-  if ((kind == Snapshot::kMessage) &&
-      (bytes >= kExternalizeTypedDataThreshold)) {
-    // Write as external.
-    writer->WriteIndexedObject(cid);
-    writer->WriteTags(writer->GetObjectTags(this));
-    writer->Write<RawObject*>(ptr()->length_);
-    uint8_t* data = reinterpret_cast<uint8_t*>(ptr()->data_);
-    void* passed_data = malloc(bytes);
-    if (passed_data == NULL) {
-      OUT_OF_MEMORY();
-    }
-    memmove(passed_data, data, bytes);
-    static_cast<MessageWriter*>(writer)->finalizable_data()->Put(
-        bytes,
-        passed_data,  // data
-        passed_data,  // peer,
-        IsolateMessageTypedDataFinalizer);
-  } else {
-    // Write as internal.
-    writer->WriteIndexedObject(internal_cid);
-    writer->WriteTags(writer->GetObjectTags(this));
-    writer->Write<RawObject*>(ptr()->length_);
-    uint8_t* data = reinterpret_cast<uint8_t*>(ptr()->data_);
-    writer->WriteBytes(data, bytes);
+  // Write as external.
+  writer->WriteIndexedObject(cid);
+  writer->WriteTags(writer->GetObjectTags(this));
+  writer->Write<RawObject*>(ptr()->length_);
+  uint8_t* data = reinterpret_cast<uint8_t*>(ptr()->data_);
+  void* passed_data = malloc(bytes);
+  if (passed_data == NULL) {
+    OUT_OF_MEMORY();
   }
+  memmove(passed_data, data, bytes);
+  static_cast<MessageWriter*>(writer)->finalizable_data()->Put(
+      bytes,
+      passed_data,  // data
+      passed_data,  // peer,
+      IsolateMessageTypedDataFinalizer);
 }
 
 RawCapability* Capability::ReadFrom(SnapshotReader* reader,
diff --git a/runtime/vm/regexp_assembler_ir.cc b/runtime/vm/regexp_assembler_ir.cc
index 72b4e93..aa69b57 100644
--- a/runtime/vm/regexp_assembler_ir.cc
+++ b/runtime/vm/regexp_assembler_ir.cc
@@ -39,7 +39,6 @@
 
 namespace dart {
 
-static const intptr_t kInvalidTryIndex = CatchClauseNode::kInvalidTryIndex;
 static const intptr_t kMinStackSize = 512;
 
 /*
@@ -114,11 +113,12 @@
                                              kMinStackSize / 4, Heap::kOld)));
 
   // Create and generate all preset blocks.
-  entry_block_ = new (zone) GraphEntryInstr(
-      *parsed_function_,
-      new (zone) TargetEntryInstr(block_id_.Alloc(), kInvalidTryIndex,
-                                  GetNextDeoptId()),
-      osr_id);
+  entry_block_ = new (zone) GraphEntryInstr(*parsed_function_, osr_id);
+
+  auto function_entry = new (zone) FunctionEntryInstr(
+      entry_block_, block_id_.Alloc(), kInvalidTryIndex, GetNextDeoptId());
+  entry_block_->set_normal_entry(function_entry);
+
   start_block_ = new (zone)
       JoinEntryInstr(block_id_.Alloc(), kInvalidTryIndex, GetNextDeoptId());
   success_block_ = new (zone)
diff --git a/runtime/vm/resolver.cc b/runtime/vm/resolver.cc
index abb9130..bd13f8c 100644
--- a/runtime/vm/resolver.cc
+++ b/runtime/vm/resolver.cc
@@ -78,18 +78,36 @@
     demangled ^= Field::NameFromGetter(function_name);
   }
 
-#if !defined(DART_PRECOMPILED_RUNTIME)
   if (Function::IsDynamicInvocationForwaderName(function_name)) {
-    ASSERT(!FLAG_precompiled_mode);
     demangled ^=
         Function::DemangleDynamicInvocationForwarderName(function_name);
+#ifdef DART_PRECOMPILED_RUNTIME
+    // In precompiled mode, the non-dynamic version of the function may be
+    // tree-shaken away, so can't necessarily resolve the demanged name.
+    while (!cls.IsNull()) {
+      function = cls.GetInvocationDispatcher(
+          function_name, Array::null_array(),
+          RawFunction::kDynamicInvocationForwarder, /*create_if_absent=*/false);
+      if (!function.IsNull()) break;
+      cls = cls.SuperClass();
+    }
+    // Some functions don't require dynamic invocation forwarders, for example
+    // if there are no parameters or all the parameters are marked
+    // `generic-covariant` (meaning there's no work for the dynamic invocation
+    // forwarder to do, see `kernel::DynamicInvocationForwarder`). For these
+    // functions, we won't have built a `dyn:` version, but it's safe to just
+    // return the original version directly.
+    return !function.IsNull() ? function.raw()
+                              : ResolveDynamicAnyArgs(zone, receiver_class,
+                                                      demangled, allow_add);
+#else
     function =
         ResolveDynamicAnyArgs(zone, receiver_class, demangled, allow_add);
     return function.IsNull() ? function.raw()
                              : function.GetDynamicInvocationForwarder(
                                    function_name, allow_add);
-  }
 #endif
+  }
 
   // Now look for an instance function whose name matches function_name
   // in the class.
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index 5c73ecb..ad00ea5 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -4,7 +4,6 @@
 
 #include "vm/runtime_entry.h"
 
-#include "vm/ast.h"
 #include "vm/code_patcher.h"
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/compiler/frontend/bytecode_reader.h"
@@ -165,11 +164,12 @@
     args.SetAt(2, String::Handle(String::New("is not an integer")));
     Exceptions::ThrowByType(Exceptions::kArgumentValue, args);
   }
-  // Throw: new RangeError.range(index, 0, length, "length");
+  // Throw: new RangeError.range(index, 0, length - 1, "length");
   const Array& args = Array::Handle(Array::New(4));
   args.SetAt(0, index);
   args.SetAt(1, Integer::Handle(Integer::New(0)));
-  args.SetAt(2, length);
+  args.SetAt(2, Integer::Handle(Integer::Cast(length).ArithmeticOp(
+                    Token::kSUB, Integer::Handle(Integer::New(1)))));
   args.SetAt(3, Symbols::Length());
   Exceptions::ThrowByType(Exceptions::kRange, args);
 }
@@ -1141,7 +1141,6 @@
                                    const String& target_name) {
   const Class& receiver_class = Class::Handle(receiver.clazz());
 
-#if !defined(DART_PRECOMPILED_RUNTIME)
   // Handle noSuchMethod for dyn:methodName by getting a noSuchMethod dispatcher
   // (or a call-through getter for methodName).
   if (Function::IsDynamicInvocationForwaderName(target_name)) {
@@ -1149,7 +1148,6 @@
         Function::DemangleDynamicInvocationForwarderName(target_name));
     return InlineCacheMissHelper(receiver, args_descriptor, demangled);
   }
-#endif
 
   Function& result = Function::Handle();
   if (!ResolveCallThroughGetter(receiver, receiver_class, target_name,
@@ -1759,6 +1757,10 @@
     target_name = MegamorphicCache::Cast(ic_data_or_cache).target_name();
   }
 
+  if (Function::IsDynamicInvocationForwaderName(target_name)) {
+    target_name = Function::DemangleDynamicInvocationForwarderName(target_name);
+  }
+
   Class& cls = Class::Handle(zone, receiver.clazz());
   Function& function = Function::Handle(zone);
 
@@ -2089,7 +2091,7 @@
 #if !defined(DART_PRECOMPILED_RUNTIME)
   if (FLAG_enable_interpreter) {
     // Do not allocate an interpreter, if none is allocated yet.
-    Interpreter* interpreter = Isolate::Current()->interpreter();
+    Interpreter* interpreter = Thread::Current()->interpreter();
     if (interpreter != NULL) {
       interpreter_stack_overflow =
           interpreter->get_sp() >= interpreter->stack_limit();
diff --git a/runtime/vm/scopes_test.cc b/runtime/vm/scopes_test.cc
index 4481b6c..07f4dd7 100644
--- a/runtime/vm/scopes_test.cc
+++ b/runtime/vm/scopes_test.cc
@@ -4,7 +4,6 @@
 
 #include "vm/scopes.h"
 #include "platform/assert.h"
-#include "vm/ast.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index 5982922..717772c 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -2362,7 +2362,6 @@
     // 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);
diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
index 6c2ebb2..03c96f2 100644
--- a/runtime/vm/service_test.cc
+++ b/runtime/vm/service_test.cc
@@ -341,62 +341,6 @@
   EXPECT_SUBSTRING("\"error\"", handler.msg());
 }
 
-ISOLATE_UNIT_TEST_CASE(Service_TokenStream) {
-  const char* kScript =
-      "var port;\n"  // Set to our mock port by C++.
-      "\n"
-      "main() {\n"
-      "}";
-
-  Isolate* isolate = thread->isolate();
-  isolate->set_is_runnable(true);
-  Dart_Handle lib;
-  Library& vmlib = Library::Handle();
-  {
-    TransitionVMToNative transition(thread);
-    lib = TestCase::LoadTestScript(kScript, NULL);
-    EXPECT_VALID(lib);
-    vmlib ^= Api::UnwrapHandle(lib);
-    EXPECT(!vmlib.IsNull());
-  }
-
-  const String& script_name = String::Handle(String::New("test-lib"));
-  EXPECT(!script_name.IsNull());
-  const Script& script = Script::Handle(vmlib.LookupScript(script_name));
-  EXPECT(!script.IsNull());
-
-  const TokenStream& token_stream = TokenStream::Handle(script.tokens());
-  EXPECT(!token_stream.IsNull());
-  ObjectIdRing* ring = isolate->object_id_ring();
-  intptr_t id = ring->GetIdForObject(token_stream.raw());
-
-  // Build a mock message handler and wrap it in a dart port.
-  ServiceTestMessageHandler handler;
-  Dart_Port port_id = PortMap::CreatePort(&handler);
-  Dart_Handle port = Api::NewHandle(thread, SendPort::New(port_id));
-  EXPECT_VALID(port);
-  {
-    TransitionVMToNative transition(thread);
-    EXPECT_VALID(Dart_SetField(lib, NewString("port"), port));
-  }
-
-  Array& service_msg = Array::Handle();
-
-  // Fetch object.
-  service_msg = EvalF(lib,
-                      "[0, port, '0', 'getObject', "
-                      "['objectId'], ['objects/%" Pd "']]",
-                      id);
-  HandleIsolateMessage(isolate, service_msg);
-  EXPECT_EQ(MessageHandler::kOK, handler.HandleNextMessage());
-
-  // Check type.
-  EXPECT_SUBSTRING("\"type\":\"Object\"", handler.msg());
-  EXPECT_SUBSTRING("\"_vmType\":\"TokenStream\"", handler.msg());
-  // Check for members array.
-  EXPECT_SUBSTRING("\"members\":[", handler.msg());
-}
-
 ISOLATE_UNIT_TEST_CASE(Service_PcDescriptors) {
   const char* kScript =
       "var port;\n"  // Set to our mock port by C++.
diff --git a/runtime/vm/simulator_dbc.cc b/runtime/vm/simulator_dbc.cc
index 2d754e6..4ce6696 100644
--- a/runtime/vm/simulator_dbc.cc
+++ b/runtime/vm/simulator_dbc.cc
@@ -812,6 +812,7 @@
                                 RawObject** FP,
                                 RawObject** SP) {
   RawObject** result = top;
+  top[0] = 0;  // Clean up result slot.
   RawObject** miss_handler_args = top + 1;
   for (intptr_t i = 0; i < checked_args; i++) {
     miss_handler_args[i] = args[i];
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc
index c35af9c..eaae077 100644
--- a/runtime/vm/snapshot.cc
+++ b/runtime/vm/snapshot.cc
@@ -219,7 +219,6 @@
       type_(AbstractType::Handle(zone_)),
       type_arguments_(TypeArguments::Handle(zone_)),
       tokens_(GrowableObjectArray::Handle(zone_)),
-      stream_(TokenStream::Handle(zone_)),
       data_(ExternalTypedData::Handle(zone_)),
       typed_data_(TypedData::Handle(zone_)),
       function_(Function::Handle(zone_)),
diff --git a/runtime/vm/snapshot.h b/runtime/vm/snapshot.h
index ddd6057..2010460 100644
--- a/runtime/vm/snapshot.h
+++ b/runtime/vm/snapshot.h
@@ -63,7 +63,6 @@
 class RawLibrary;
 class RawLibraryPrefix;
 class RawLinkedHashMap;
-class RawLiteralToken;
 class RawLocalVarDescriptors;
 class RawMegamorphicCache;
 class RawMint;
@@ -84,7 +83,6 @@
 class RawStackMap;
 class RawStackTrace;
 class RawSubtypeTestCache;
-class RawTokenStream;
 class RawTwoByteString;
 class RawType;
 class RawTypeArguments;
@@ -95,7 +93,6 @@
 class RawUnresolvedClass;
 class RawWeakProperty;
 class String;
-class TokenStream;
 class TypeArguments;
 class TypedData;
 class UnhandledException;
@@ -331,7 +328,6 @@
   AbstractType* TypeHandle() { return &type_; }
   TypeArguments* TypeArgumentsHandle() { return &type_arguments_; }
   GrowableObjectArray* TokensHandle() { return &tokens_; }
-  TokenStream* StreamHandle() { return &stream_; }
   ExternalTypedData* DataHandle() { return &data_; }
   TypedData* TypedDataHandle() { return &typed_data_; }
   Function* FunctionHandle() { return &function_; }
@@ -349,9 +345,6 @@
   // Get an object from the backward references list.
   Object* GetBackRef(intptr_t id);
 
-  // Read a script snapshot.
-  RawObject* ReadScriptSnapshot();
-
   // Read version number of snapshot and verify.
   RawApiError* VerifyVersionAndFeatures(Isolate* isolate);
 
@@ -444,7 +437,6 @@
   AbstractType& type_;             // Temporary type handle.
   TypeArguments& type_arguments_;  // Temporary type argument handle.
   GrowableObjectArray& tokens_;    // Temporary tokens handle.
-  TokenStream& stream_;            // Temporary token stream handle.
   ExternalTypedData& data_;        // Temporary stream data handle.
   TypedData& typed_data_;          // Temporary typed data handle.
   Function& function_;             // Temporary function handle.
@@ -473,7 +465,6 @@
   friend class Library;
   friend class LibraryPrefix;
   friend class LinkedHashMap;
-  friend class LiteralToken;
   friend class MirrorReference;
   friend class MixinAppType;
   friend class Namespace;
@@ -483,7 +474,6 @@
   friend class Script;
   friend class SignatureData;
   friend class SubtypeTestCache;
-  friend class TokenStream;
   friend class Type;
   friend class TypeArguments;
   friend class TypeParameter;
@@ -749,7 +739,6 @@
   friend class RawInstructions;
   friend class RawLibrary;
   friend class RawLinkedHashMap;
-  friend class RawLiteralToken;
   friend class RawLocalVarDescriptors;
   friend class RawMirrorReference;
   friend class RawObjectPool;
@@ -758,7 +747,6 @@
   friend class RawScript;
   friend class RawStackTrace;
   friend class RawSubtypeTestCache;
-  friend class RawTokenStream;
   friend class RawType;
   friend class RawTypeRef;
   friend class RawBoundedType;
diff --git a/runtime/vm/snapshot_test.cc b/runtime/vm/snapshot_test.cc
index 0da0506..5ff4dd8 100644
--- a/runtime/vm/snapshot_test.cc
+++ b/runtime/vm/snapshot_test.cc
@@ -16,6 +16,7 @@
 #include "vm/malloc_hooks.h"
 #include "vm/snapshot.h"
 #include "vm/symbols.h"
+#include "vm/timer.h"
 #include "vm/unicode.h"
 #include "vm/unit_test.h"
 
@@ -399,7 +400,6 @@
   TEST_ROUND_TRIP_IDENTICAL(Object::type_arguments_class());
   TEST_ROUND_TRIP_IDENTICAL(Object::function_class());
   TEST_ROUND_TRIP_IDENTICAL(Object::field_class());
-  TEST_ROUND_TRIP_IDENTICAL(Object::token_stream_class());
   TEST_ROUND_TRIP_IDENTICAL(Object::script_class());
   TEST_ROUND_TRIP_IDENTICAL(Object::library_class());
   TEST_ROUND_TRIP_IDENTICAL(Object::code_class());
@@ -663,7 +663,7 @@
     Message* message =                                                         \
         writer.WriteMessage(array, ILLEGAL_PORT, Message::kNormalPriority);    \
     MessageSnapshotReader reader(message, thread);                             \
-    TypedData& serialized_array = TypedData::Handle();                         \
+    ExternalTypedData& serialized_array = ExternalTypedData::Handle();         \
     serialized_array ^= reader.ReadObject();                                   \
     for (int i = 0; i < length; i++) {                                         \
       EXPECT_EQ(static_cast<ctype>(data[i]),                                   \
@@ -726,78 +726,6 @@
   delete message;
 }
 
-static void GenerateSourceAndCheck(const Script& script) {
-  // Check if we are able to generate the source from the token stream.
-  // Rescan this source and compare the token stream to see if they are
-  // the same.
-  Zone* zone = Thread::Current()->zone();
-  const TokenStream& expected_tokens =
-      TokenStream::Handle(zone, script.tokens());
-  TokenStream::Iterator expected_iterator(zone, expected_tokens,
-                                          TokenPosition::kMinSource,
-                                          TokenStream::Iterator::kAllTokens);
-  const String& str = String::Handle(zone, expected_tokens.GenerateSource());
-  const String& private_key =
-      String::Handle(zone, expected_tokens.PrivateKey());
-  const TokenStream& reconstructed_tokens =
-      TokenStream::Handle(zone, TokenStream::New(str, private_key, false));
-  expected_iterator.SetCurrentPosition(TokenPosition::kMinSource);
-  TokenStream::Iterator reconstructed_iterator(
-      zone, reconstructed_tokens, TokenPosition::kMinSource,
-      TokenStream::Iterator::kAllTokens);
-  Token::Kind expected_kind = expected_iterator.CurrentTokenKind();
-  Token::Kind reconstructed_kind = reconstructed_iterator.CurrentTokenKind();
-  String& expected_literal = String::Handle(zone);
-  String& actual_literal = String::Handle(zone);
-  while (expected_kind != Token::kEOS && reconstructed_kind != Token::kEOS) {
-    EXPECT_EQ(expected_kind, reconstructed_kind);
-    expected_literal ^= expected_iterator.CurrentLiteral();
-    actual_literal ^= reconstructed_iterator.CurrentLiteral();
-    EXPECT_STREQ(expected_literal.ToCString(), actual_literal.ToCString());
-    expected_iterator.Advance();
-    reconstructed_iterator.Advance();
-    expected_kind = expected_iterator.CurrentTokenKind();
-    reconstructed_kind = reconstructed_iterator.CurrentTokenKind();
-  }
-}
-
-static void IterateScripts(const Library& lib) {
-  const Array& lib_scripts = Array::Handle(lib.LoadedScripts());
-  Script& script = Script::Handle();
-  String& uri = String::Handle();
-  for (intptr_t i = 0; i < lib_scripts.Length(); i++) {
-    script ^= lib_scripts.At(i);
-    EXPECT(!script.IsNull());
-    uri = script.url();
-    OS::PrintErr("Generating source for part: %s\n", uri.ToCString());
-    GenerateSourceAndCheck(script);
-  }
-}
-
-ISOLATE_UNIT_TEST_CASE(GenerateSource) {
-  // Disable stack trace collection for this test as it results in a timeout.
-  bool stack_trace_collection_enabled =
-      MallocHooks::stack_trace_collection_enabled();
-  MallocHooks::set_stack_trace_collection_enabled(false);
-
-  Zone* zone = thread->zone();
-  Isolate* isolate = thread->isolate();
-  const GrowableObjectArray& libs =
-      GrowableObjectArray::Handle(zone, isolate->object_store()->libraries());
-  Library& lib = Library::Handle();
-  String& uri = String::Handle();
-  for (intptr_t i = 0; i < libs.Length(); i++) {
-    lib ^= libs.At(i);
-    EXPECT(!lib.IsNull());
-    uri = lib.url();
-    OS::PrintErr("Generating source for library: %s\n", uri.ToCString());
-    IterateScripts(lib);
-  }
-
-  MallocHooks::set_stack_trace_collection_enabled(
-      stack_trace_collection_enabled);
-}
-
 VM_UNIT_TEST_CASE(FullSnapshot) {
   const char* kScriptChars =
       "class Fields  {\n"
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index 796eae1..a8936df 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -436,6 +436,7 @@
 }
 
 void StackFrameIterator::SetupNextExitFrameData() {
+  ASSERT(entry_.fp() != 0);
   uword exit_address =
       entry_.fp() + ((entry_.is_interpreted() ? kKBCExitLinkSlotFromEntryFp
                                               : kExitLinkSlotFromEntryFp) *
@@ -583,8 +584,7 @@
   // TODO(regis): We should rely on a new thread vm_tag to identify an
   // interpreter frame and not need the HasFrame() method.
   ASSERT(FLAG_enable_interpreter);
-  Isolate* isolate = thread_->isolate();
-  Interpreter* interpreter = isolate != NULL ? isolate->interpreter() : NULL;
+  Interpreter* interpreter = thread_->interpreter();
   is_interpreted_ = (interpreter != NULL) && interpreter->HasFrame(exit_marker);
 #endif  // !defined(DART_PRECOMPILED_RUNTIME)
 }
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 6e59100..823dea5 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -223,6 +223,35 @@
   return Code::null();
 }
 
+#if !defined(TARGET_ARCH_DBC) && !defined(TARGET_ARCH_IA32)
+RawCode* StubCode::GetBuildMethodExtractorStub() {
+#if !defined(DART_PRECOMPILED_RUNTIME)
+  ObjectPoolWrapper object_pool_wrapper;
+  Assembler assembler(&object_pool_wrapper);
+  StubCode::GenerateBuildMethodExtractorStub(&assembler);
+
+  const char* name = "BuildMethodExtractor";
+  const Code& stub = Code::Handle(
+      Code::FinalizeCode(name, nullptr, &assembler, false /* optimized */));
+#ifndef PRODUCT
+  if (FLAG_support_disassembler && FLAG_disassemble_stubs) {
+    LogBlock lb;
+    THR_Print("Code for isolate stub '%s': {\n", name);
+    DisassembleToStdout formatter;
+    stub.Disassemble(&formatter);
+    THR_Print("}\n");
+    const ObjectPool& object_pool = ObjectPool::Handle(stub.object_pool());
+    object_pool.DebugPrint();
+  }
+#endif  // !PRODUCT
+  return stub.raw();
+#else   // !defined(DART_PRECOMPILED_RUNTIME)
+  UNIMPLEMENTED();
+  return nullptr;
+#endif  // !defined(DART_PRECOMPILED_RUNTIME)
+}
+#endif  // !defined(TARGET_ARCH_DBC)
+
 const StubEntry* StubCode::UnoptimizedStaticCallEntry(
     intptr_t num_args_tested) {
 // These stubs are not used by DBC.
diff --git a/runtime/vm/stub_code.h b/runtime/vm/stub_code.h
index 95ec250..cd336be 100644
--- a/runtime/vm/stub_code.h
+++ b/runtime/vm/stub_code.h
@@ -175,6 +175,11 @@
 
   static RawCode* GetAllocationStubForClass(const Class& cls);
 
+#if !defined(TARGET_ARCH_DBC) && !defined(TARGET_ARCH_IA32)
+  static RawCode* GetBuildMethodExtractorStub();
+  static void GenerateBuildMethodExtractorStub(Assembler* assembler);
+#endif
+
   static const StubEntry* UnoptimizedStaticCallEntry(intptr_t num_args_tested);
 
   static const intptr_t kNoInstantiator = 0;
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index e6c0219..8791013 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -166,6 +166,87 @@
   __ bx(LR);
 }
 
+// R1: The extracted method.
+// R4: The type_arguments_field_offset (or 0)
+// SP+0: The object from which we are tearing a method off.
+void StubCode::GenerateBuildMethodExtractorStub(Assembler* assembler) {
+  Thread* thread = Thread::Current();
+  Zone* Z = thread->zone();
+  ObjectStore* object_store = thread->isolate()->object_store();
+
+  const auto& closure_class =
+      Class::ZoneHandle(Z, object_store->closure_class());
+  const auto& closure_allocation_stub =
+      Code::ZoneHandle(Z, StubCode::GetAllocationStubForClass(closure_class));
+
+  const intptr_t kReceiverOffset = compiler_frame_layout.param_end_from_fp + 1;
+
+  const auto& context_allocation_stub =
+      Code::ZoneHandle(StubCode::AllocateContext_entry()->code());
+
+  __ EnterStubFrame();
+
+  // Build type_arguments vector (or null)
+  __ cmp(R4, Operand(0));
+  __ ldr(R3, Address(THR, Thread::object_null_offset()), EQ);
+  __ ldr(R0, Address(FP, kReceiverOffset * kWordSize), NE);
+  __ ldr(R3, Address(R0, R4), NE);
+
+  // Push type arguments & extracted method.
+  __ PushList(1 << R3 | 1 << R1);
+
+  // Allocate context.
+  {
+    Label done, slow_path;
+    __ TryAllocateArray(kContextCid, Context::InstanceSize(1), &slow_path,
+                        R0,  // instance
+                        R1,  // end address
+                        R2, R3);
+    __ ldr(R1, Address(THR, Thread::object_null_offset()));
+    __ str(R1, FieldAddress(R0, Context::parent_offset()));
+    __ LoadImmediate(R1, 1);
+    __ str(R1, FieldAddress(R0, Context::num_variables_offset()));
+    __ b(&done);
+
+    __ Bind(&slow_path);
+
+    __ LoadImmediate(/*num_vars=*/R1, 1);
+    __ LoadObject(CODE_REG, context_allocation_stub);
+    __ ldr(R0, FieldAddress(CODE_REG, Code::entry_point_offset()));
+    __ blx(R0);
+
+    __ Bind(&done);
+  }
+
+  // Store receiver in context
+  __ ldr(R1, Address(FP, kWordSize * kReceiverOffset));
+  __ StoreIntoObject(R0, FieldAddress(R0, Context::variable_offset(0)), R1);
+
+  // Push context.
+  __ Push(R0);
+
+  // Allocate closure.
+  __ LoadObject(CODE_REG, closure_allocation_stub);
+  __ ldr(R1, FieldAddress(CODE_REG, Code::entry_point_offset(
+                                        Code::EntryKind::kUnchecked)));
+  __ blx(R1);
+
+  // Populate closure object.
+  __ Pop(R1);  // Pop context.
+  __ StoreIntoObject(R0, FieldAddress(R0, Closure::context_offset()), R1);
+  __ PopList(1 << R3 | 1 << R1);  // Pop type arguments & extracted method.
+  __ StoreIntoObjectNoBarrier(R0, FieldAddress(R0, Closure::function_offset()),
+                              R1);
+  __ StoreIntoObjectNoBarrier(
+      R0, FieldAddress(R0, Closure::instantiator_type_arguments_offset()), R3);
+  __ LoadObject(R1, Object::empty_type_arguments());
+  __ StoreIntoObjectNoBarrier(
+      R0, FieldAddress(R0, Closure::delayed_type_arguments_offset()), R1);
+
+  __ LeaveStubFrame();
+  __ Ret();
+}
+
 void StubCode::GenerateNullErrorSharedWithoutFPURegsStub(Assembler* assembler) {
   GenerateSharedStub(assembler, /*save_fpu_registers=*/false,
                      &kNullErrorRuntimeEntry,
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index 15e905d..8aa8213 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -189,6 +189,89 @@
   __ ret(LR);
 }
 
+// R1: The extracted method.
+// R4: The type_arguments_field_offset (or 0)
+void StubCode::GenerateBuildMethodExtractorStub(Assembler* assembler) {
+  Thread* thread = Thread::Current();
+  Zone* Z = thread->zone();
+  ObjectStore* object_store = thread->isolate()->object_store();
+
+  const auto& closure_class =
+      Class::ZoneHandle(Z, object_store->closure_class());
+  const auto& closure_allocation_stub =
+      Code::ZoneHandle(Z, StubCode::GetAllocationStubForClass(closure_class));
+
+  const intptr_t kReceiverOffset = compiler_frame_layout.param_end_from_fp + 1;
+
+  const auto& context_allocation_stub =
+      Code::ZoneHandle(StubCode::AllocateContext_entry()->code());
+
+  __ EnterStubFrame();
+
+  // Build type_arguments vector (or null)
+  Label no_type_args;
+  __ ldr(R3, Address(THR, Thread::object_null_offset()), kDoubleWord);
+  __ cmp(R4, Operand(0));
+  __ b(&no_type_args, EQ);
+  __ ldr(R0, Address(FP, kReceiverOffset * kWordSize));
+  __ ldr(R3, Address(R0, R4));
+  __ Bind(&no_type_args);
+
+  // Push type arguments & extracted method.
+  __ PushPair(R3, R1);
+
+  // Allocate context.
+  {
+    Label done, slow_path;
+    __ TryAllocateArray(kContextCid, Context::InstanceSize(1), &slow_path,
+                        R0,  // instance
+                        R1,  // end address
+                        R2, R3);
+    __ ldr(R1, Address(THR, Thread::object_null_offset()));
+    __ str(R1, FieldAddress(R0, Context::parent_offset()));
+    __ LoadImmediate(R1, 1);
+    __ str(R1, FieldAddress(R0, Context::num_variables_offset()));
+    __ b(&done);
+
+    __ Bind(&slow_path);
+
+    __ LoadImmediate(/*num_vars=*/R1, 1);
+    __ LoadObject(CODE_REG, context_allocation_stub);
+    __ ldr(R0, FieldAddress(CODE_REG, Code::entry_point_offset()));
+    __ blr(R0);
+
+    __ Bind(&done);
+  }
+
+  // Store receiver in context
+  __ ldr(R1, Address(FP, kWordSize * kReceiverOffset));
+  __ StoreIntoObject(R0, FieldAddress(R0, Context::variable_offset(0)), R1);
+
+  // Push context.
+  __ Push(R0);
+
+  // Allocate closure.
+  __ LoadObject(CODE_REG, closure_allocation_stub);
+  __ ldr(R1, FieldAddress(CODE_REG, Code::entry_point_offset(
+                                        Code::EntryKind::kUnchecked)));
+  __ blr(R1);
+
+  // Populate closure object.
+  __ Pop(R1);  // Pop context.
+  __ StoreIntoObject(R0, FieldAddress(R0, Closure::context_offset()), R1);
+  __ PopPair(R3, R1);  // Pop type arguments & extracted method.
+  __ StoreIntoObjectNoBarrier(R0, FieldAddress(R0, Closure::function_offset()),
+                              R1);
+  __ StoreIntoObjectNoBarrier(
+      R0, FieldAddress(R0, Closure::instantiator_type_arguments_offset()), R3);
+  __ LoadObject(R1, Object::empty_type_arguments());
+  __ StoreIntoObjectNoBarrier(
+      R0, FieldAddress(R0, Closure::delayed_type_arguments_offset()), R1);
+
+  __ LeaveStubFrame();
+  __ Ret();
+}
+
 void StubCode::GenerateNullErrorSharedWithoutFPURegsStub(Assembler* assembler) {
   GenerateSharedStub(assembler, /*save_fpu_registers=*/false,
                      &kNullErrorRuntimeEntry,
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index 182667e..c8f4218 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -158,6 +158,90 @@
   __ ret();
 }
 
+// RBX: The extracted method.
+// RDX: The type_arguments_field_offset (or 0)
+void StubCode::GenerateBuildMethodExtractorStub(Assembler* assembler) {
+  Thread* thread = Thread::Current();
+  Zone* Z = thread->zone();
+  ObjectStore* object_store = thread->isolate()->object_store();
+
+  const auto& closure_class =
+      Class::ZoneHandle(Z, object_store->closure_class());
+  const auto& closure_allocation_stub =
+      Code::ZoneHandle(Z, StubCode::GetAllocationStubForClass(closure_class));
+
+  const intptr_t kReceiverOffset = compiler_frame_layout.param_end_from_fp + 1;
+
+  const auto& context_allocation_stub =
+      Code::ZoneHandle(StubCode::AllocateContext_entry()->code());
+
+  __ EnterStubFrame();
+
+  // Push type_arguments vector (or null)
+  Label no_type_args;
+  __ movq(RCX, Address(THR, Thread::object_null_offset()));
+  __ cmpq(RDX, Immediate(0));
+  __ j(EQUAL, &no_type_args, Assembler::kNearJump);
+  __ movq(RAX, Address(RBP, kWordSize * kReceiverOffset));
+  __ movq(RCX, Address(RAX, RDX, TIMES_1, 0));
+  __ Bind(&no_type_args);
+  __ pushq(RCX);
+
+  // Push extracted method.
+  __ pushq(RBX);
+
+  // Allocate context.
+  {
+    Label done, slow_path;
+    __ TryAllocateArray(kContextCid, Context::InstanceSize(1), &slow_path,
+                        Assembler::kFarJump,
+                        RAX,  // instance
+                        RSI,  // end address
+                        RDI);
+    __ movq(RSI, Address(THR, Thread::object_null_offset()));
+    __ movq(FieldAddress(RAX, Context::parent_offset()), RSI);
+    __ movq(FieldAddress(RAX, Context::num_variables_offset()), Immediate(1));
+    __ jmp(&done);
+
+    __ Bind(&slow_path);
+
+    __ LoadImmediate(/*num_vars=*/R10, Immediate(1));
+    __ LoadObject(CODE_REG, context_allocation_stub);
+    __ call(FieldAddress(CODE_REG, Code::entry_point_offset()));
+
+    __ Bind(&done);
+  }
+
+  // Store receiver in context
+  __ movq(RSI, Address(RBP, kWordSize * kReceiverOffset));
+  __ StoreIntoObject(RAX, FieldAddress(RAX, Context::variable_offset(0)), RSI);
+
+  // Push context.
+  __ pushq(RAX);
+
+  // Allocate closure.
+  __ LoadObject(CODE_REG, closure_allocation_stub);
+  __ call(FieldAddress(CODE_REG,
+                       Code::entry_point_offset(Code::EntryKind::kUnchecked)));
+
+  // Populate closure object.
+  __ popq(RCX);  // Pop context.
+  __ StoreIntoObject(RAX, FieldAddress(RAX, Closure::context_offset()), RCX);
+  __ popq(RCX);  // Pop extracted method.
+  __ StoreIntoObjectNoBarrier(
+      RAX, FieldAddress(RAX, Closure::function_offset()), RCX);
+  __ popq(RCX);  // Pop type argument vector.
+  __ StoreIntoObjectNoBarrier(
+      RAX, FieldAddress(RAX, Closure::instantiator_type_arguments_offset()),
+      RCX);
+  __ LoadObject(RCX, Object::empty_type_arguments());
+  __ StoreIntoObjectNoBarrier(
+      RAX, FieldAddress(RAX, Closure::delayed_type_arguments_offset()), RCX);
+
+  __ LeaveStubFrame();
+  __ Ret();
+}
+
 void StubCode::GenerateNullErrorSharedWithoutFPURegsStub(Assembler* assembler) {
   GenerateSharedStub(assembler, /*save_fpu_registers=*/false,
                      &kNullErrorRuntimeEntry,
diff --git a/runtime/vm/symbols.h b/runtime/vm/symbols.h
index 38d7814..f3572c2 100644
--- a/runtime/vm/symbols.h
+++ b/runtime/vm/symbols.h
@@ -184,8 +184,6 @@
   V(SignatureData, "SignatureData")                                            \
   V(RedirectionData, "RedirectionData")                                        \
   V(Field, "Field")                                                            \
-  V(LiteralToken, "LiteralToken")                                              \
-  V(TokenStream, "TokenStream")                                                \
   V(Script, "Script")                                                          \
   V(LibraryClass, "Library")                                                   \
   V(LibraryPrefix, "LibraryPrefix")                                            \
@@ -366,7 +364,6 @@
   V(_simpleInstanceOf, "_simpleInstanceOf")                                    \
   V(_simpleInstanceOfTrue, "_simpleInstanceOfTrue")                            \
   V(_simpleInstanceOfFalse, "_simpleInstanceOfFalse")                          \
-  V(_as, "_as")                                                                \
   V(GetterPrefix, "get:")                                                      \
   V(SetterPrefix, "set:")                                                      \
   V(InitPrefix, "init:")                                                       \
@@ -451,8 +448,6 @@
   V(options, "options")                                                        \
   V(_classRangeCheck, "_classRangeCheck")                                      \
   V(_classRangeCheckNegative, "_classRangeCheckNegative")                      \
-  V(_classRangeAssert, "_classRangeAssert")                                    \
-  V(_classIdEqualsAssert, "_classIdEqualsAssert")                              \
   V(GetRuntimeType, "get:runtimeType")                                         \
   V(HaveSameRuntimeType, "_haveSameRuntimeType")                               \
   V(PrependTypeArguments, "_prependTypeArguments")                             \
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc
index 9584f37..bc6c6ad 100644
--- a/runtime/vm/thread.cc
+++ b/runtime/vm/thread.cc
@@ -4,7 +4,6 @@
 
 #include "vm/thread.h"
 
-#include "vm/compiler_stats.h"
 #include "vm/dart_api_state.h"
 #include "vm/growable_array.h"
 #include "vm/isolate.h"
@@ -34,10 +33,10 @@
   ASSERT(isolate_ == NULL);
   ASSERT(store_buffer_block_ == NULL);
   ASSERT(marking_stack_block_ == NULL);
-  if (compiler_stats_ != NULL) {
-    delete compiler_stats_;
-    compiler_stats_ = NULL;
-  }
+#if !defined(DART_PRECOMPILED_RUNTIME)
+  delete interpreter_;
+  interpreter_ = nullptr;
+#endif
   // There should be no top api scopes at this point.
   ASSERT(api_top_scope() == NULL);
   // Delete the resusable api scope if there is one.
@@ -104,13 +103,15 @@
       active_stacktrace_(Object::null()),
       resume_pc_(0),
       sticky_error_(Error::null()),
-      compiler_stats_(NULL),
       REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_INITIALIZERS)
           REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_SCOPE_INIT) safepoint_state_(0),
       execution_state_(kThreadInNative),
 #if defined(USING_SAFE_STACK)
       saved_safestack_limit_(0),
 #endif
+#if !defined(DART_PRECOMPILED_RUNTIME)
+      interpreter_(nullptr),
+#endif
       next_(NULL) {
 #if !defined(PRODUCT)
   dart_stream_ = Timeline::GetDartStream();
@@ -142,12 +143,6 @@
     InitVMConstants();
   }
 
-  if (FLAG_support_compiler_stats) {
-    compiler_stats_ = new CompilerStats(isolate);
-    if (FLAG_compiler_benchmark) {
-      compiler_stats_->EnableBenchmark();
-    }
-  }
   // This thread should not yet own any zones. If it does, we need to make sure
   // we've accounted for any memory it has already allocated.
   if (zone_ == NULL) {
@@ -680,6 +675,12 @@
   visitor->VisitPointer(reinterpret_cast<RawObject**>(&sticky_error_));
   visitor->VisitPointer(reinterpret_cast<RawObject**>(&async_stack_trace_));
 
+#if !defined(DART_PRECOMPILED_RUNTIME)
+  if (interpreter() != NULL) {
+    interpreter()->VisitObjectPointers(visitor);
+  }
+#endif
+
   // Visit the api local scope as it has all the api local handles.
   ApiLocalScope* scope = api_top_scope_;
   while (scope != NULL) {
@@ -687,26 +688,32 @@
     scope = scope->previous();
   }
 
-  // The MarkTask, which calls this method, can run on a different thread.  We
-  // therefore assume the mutator is at a safepoint and we can iterate it's
-  // stack.
-  // TODO(vm-team): It would be beneficial to be able to ask the mutator thread
-  // whether it is in fact blocked at the moment (at a "safepoint") so we can
-  // safely iterate it's stack.
-  //
-  // Unfortunately we cannot use `this->IsAtSafepoint()` here because that will
-  // return `false` even though the mutator thread is waiting for mark tasks
-  // (which iterate it's stack) to finish.
-  const StackFrameIterator::CrossThreadPolicy cross_thread_policy =
-      StackFrameIterator::kAllowCrossThreadIteration;
+  // Only the mutator thread can run Dart code.
+  if (IsMutatorThread()) {
+    // The MarkTask, which calls this method, can run on a different thread.  We
+    // therefore assume the mutator is at a safepoint and we can iterate it's
+    // stack.
+    // TODO(vm-team): It would be beneficial to be able to ask the mutator
+    // thread whether it is in fact blocked at the moment (at a "safepoint") so
+    // we can safely iterate it's stack.
+    //
+    // Unfortunately we cannot use `this->IsAtSafepoint()` here because that
+    // will return `false` even though the mutator thread is waiting for mark
+    // tasks (which iterate it's stack) to finish.
+    const StackFrameIterator::CrossThreadPolicy cross_thread_policy =
+        StackFrameIterator::kAllowCrossThreadIteration;
 
-  // Iterate over all the stack frames and visit objects on the stack.
-  StackFrameIterator frames_iterator(top_exit_frame_info(), validation_policy,
-                                     this, cross_thread_policy);
-  StackFrame* frame = frames_iterator.NextFrame();
-  while (frame != NULL) {
-    frame->VisitObjectPointers(visitor);
-    frame = frames_iterator.NextFrame();
+    // Iterate over all the stack frames and visit objects on the stack.
+    StackFrameIterator frames_iterator(top_exit_frame_info(), validation_policy,
+                                       this, cross_thread_policy);
+    StackFrame* frame = frames_iterator.NextFrame();
+    while (frame != NULL) {
+      frame->VisitObjectPointers(visitor);
+      frame = frames_iterator.NextFrame();
+    }
+  } else {
+    // We are not on the mutator thread.
+    RELEASE_ASSERT(top_exit_frame_info() == 0);
   }
 }
 
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 740c043..49e3c07 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -25,7 +25,6 @@
 class CompilerState;
 class Class;
 class Code;
-class CompilerStats;
 class Error;
 class ExceptionHandlers;
 class Field;
@@ -35,6 +34,7 @@
 class Heap;
 class HierarchyInfo;
 class Instance;
+class Interpreter;
 class Isolate;
 class Library;
 class LongJumpScope;
@@ -402,6 +402,11 @@
     type_usage_info_ = value;
   }
 
+#if !defined(DART_PRECOMPILED_RUNTIME)
+  Interpreter* interpreter() const { return interpreter_; }
+  void set_interpreter(Interpreter* value) { interpreter_ = value; }
+#endif
+
   int32_t no_callback_scope_depth() const { return no_callback_scope_depth_; }
 
   void IncrementNoCallbackScopeDepth() {
@@ -617,8 +622,6 @@
     return OFFSET_OF(Thread, async_stack_trace_);
   }
 
-  CompilerStats* compiler_stats() { return compiler_stats_; }
-
 #if defined(DEBUG)
 #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object)                                \
   void set_reusable_##object##_handle_scope_active(bool value) {               \
@@ -887,8 +890,6 @@
 
   RawError* sticky_error_;
 
-  CompilerStats* compiler_stats_;
-
 // Reusable handles support.
 #define REUSABLE_HANDLE_FIELDS(object) object* object##_handle_;
   REUSABLE_HANDLE_LIST(REUSABLE_HANDLE_FIELDS)
@@ -912,6 +913,10 @@
   uword saved_safestack_limit_;
 #endif
 
+#if !defined(DART_PRECOMPILED_RUNTIME)
+  Interpreter* interpreter_;
+#endif
+
   Thread* next_;  // Used to chain the thread structures in an isolate.
 
   explicit Thread(Isolate* isolate);
diff --git a/runtime/vm/thread_registry.cc b/runtime/vm/thread_registry.cc
index b1bcb2c..bb02973 100644
--- a/runtime/vm/thread_registry.cc
+++ b/runtime/vm/thread_registry.cc
@@ -16,6 +16,10 @@
     MonitorLocker ml(threads_lock());
     // At this point the active list should be empty.
     ASSERT(active_list_ == NULL);
+
+    // The [mutator_thread_] is kept alive until the destruction of the isolate.
+    mutator_thread_->isolate_ = nullptr;
+
     // We have cached the mutator thread, delete it.
     delete mutator_thread_;
     mutator_thread_ = NULL;
diff --git a/runtime/vm/timer.h b/runtime/vm/timer.h
index c9e4a19..94b67ea 100644
--- a/runtime/vm/timer.h
+++ b/runtime/vm/timer.h
@@ -98,74 +98,6 @@
   DISALLOW_COPY_AND_ASSIGN(Timer);
 };
 
-// The class TimerScope is used to start and stop a timer within a scope.
-// It is used as follows:
-// {
-//   TimerScope timer(FLAG_name_of_flag, timer, isolate);
-//   .....
-//   code that needs to be timed.
-//   ....
-// }
-class TimerScope : public StackResource {
- public:
-  TimerScope(bool flag, Timer* timer, Thread* thread = NULL)
-      : StackResource(thread), nested_(false), timer_(flag ? timer : NULL) {
-    Init();
-  }
-
-  void Init() {
-    if (timer_ != NULL) {
-      if (!timer_->running()) {
-        timer_->Start();
-      } else {
-        nested_ = true;
-      }
-    }
-  }
-  ~TimerScope() {
-    if (timer_ != NULL) {
-      if (!nested_) {
-        timer_->Stop();
-      }
-    }
-  }
-
- private:
-  bool nested_;
-  Timer* const timer_;
-
-  DISALLOW_ALLOCATION();
-  DISALLOW_COPY_AND_ASSIGN(TimerScope);
-};
-
-class PauseTimerScope : public StackResource {
- public:
-  PauseTimerScope(bool flag, Timer* timer, Thread* thread = NULL)
-      : StackResource(thread), nested_(false), timer_(flag ? timer : NULL) {
-    if (timer_) {
-      if (timer_->running()) {
-        timer_->Stop();
-      } else {
-        nested_ = true;
-      }
-    }
-  }
-  ~PauseTimerScope() {
-    if (timer_) {
-      if (!nested_) {
-        timer_->Start();
-      }
-    }
-  }
-
- private:
-  bool nested_;
-  Timer* const timer_;
-
-  DISALLOW_ALLOCATION();
-  DISALLOW_COPY_AND_ASSIGN(PauseTimerScope);
-};
-
 }  // namespace dart
 
 #endif  // RUNTIME_VM_TIMER_H_
diff --git a/runtime/vm/unit_test.cc b/runtime/vm/unit_test.cc
index c56e770..ed188dd 100644
--- a/runtime/vm/unit_test.cc
+++ b/runtime/vm/unit_test.cc
@@ -12,7 +12,6 @@
 
 #include "platform/globals.h"
 
-#include "vm/ast_printer.h"
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/compiler/assembler/disassembler.h"
 #include "vm/compiler/jit/compiler.h"
@@ -44,11 +43,6 @@
 const char** TesterState::argv = NULL;
 int TesterState::argc = 0;
 
-DEFINE_FLAG(bool,
-            use_dart_frontend,
-            true,
-            "Parse scripts with Dart-to-Kernel parser");
-
 void KernelBufferList::AddBufferToList(const uint8_t* kernel_buffer) {
   next_ = new KernelBufferList(kernel_buffer_, next_);
   kernel_buffer_ = kernel_buffer;
@@ -151,7 +145,7 @@
 static MallocGrowableArray<TestLibEntry>* test_libs_ = NULL;
 
 const char* TestCase::url() {
-  return (FLAG_use_dart_frontend) ? RESOLVED_USER_TEST_URI : USER_TEST_URI;
+  return RESOLVED_USER_TEST_URI;
 }
 
 void TestCase::AddTestLib(const char* url, const char* source) {
@@ -188,8 +182,7 @@
     "void reloadTest() native 'Reload_Test';\n";
 
 static const char* IsolateReloadTestLibUri() {
-  return FLAG_use_dart_frontend ? "test:isolate_reload_helper"
-                                : "file:///test:isolate_reload_helper";
+  return "test:isolate_reload_helper";
 }
 
 static bool IsIsolateReloadTestLib(const char* url_name) {
@@ -199,11 +192,6 @@
                   kIsolateReloadTestLibUriLen) == 0);
 }
 
-static Dart_Handle IsolateReloadTestLibSource() {
-  // Special library with one function.
-  return DartUtils::NewString(kIsolateReloadTestLibSource);
-}
-
 static void ReloadTest(Dart_NativeArguments native_args) {
   Dart_Handle result = TestCase::TriggerReload(/* kernel_buffer= */ NULL,
                                                /* kernel_buffer_size= */ 0);
@@ -235,12 +223,6 @@
                      dart_args);
 }
 
-static ThreadLocalKey script_reload_key = kUnsetThreadLocalKey;
-
-bool TestCase::UsingDartFrontend() {
-  return FLAG_use_dart_frontend;
-}
-
 char* TestCase::CompileTestScriptWithDFE(const char* url,
                                          const char* source,
                                          const uint8_t** kernel_buffer,
@@ -255,7 +237,7 @@
       url, source,
     },
     {
-      "file:///.packages", "untitled:/"
+      "file:///.packages", ""
     }};
   // clang-format on
   return CompileTestScriptWithDFE(
@@ -370,12 +352,8 @@
   }
   if (tag == Dart_kScriptTag) {
     // Reload request.
-    ASSERT(script_reload_key != kUnsetThreadLocalKey);
-    const char* script_source = reinterpret_cast<const char*>(
-        OSThread::GetThreadLocal(script_reload_key));
-    ASSERT(script_source != NULL);
-    OSThread::SetThreadLocal(script_reload_key, 0);
-    return Dart_LoadScript(url, Dart_Null(), NewString(script_source), 0, 0);
+    UNREACHABLE();
+    return Dart_Null();
   }
   if (!Dart_IsLibrary(library)) {
     return Dart_NewApiError("not a library");
@@ -413,29 +391,21 @@
   }
   const char* lib_source = TestCase::GetTestLib(url_chars);
   if (lib_source != NULL) {
-    Dart_Handle source = Dart_NewStringFromCString(lib_source);
-    return Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
+    UNREACHABLE();
   }
 #if !defined(PRODUCT)
   if (IsIsolateReloadTestLib(url_chars)) {
-    Dart_Handle library =
-        Dart_LoadLibrary(url, Dart_Null(), IsolateReloadTestLibSource(), 0, 0);
-    DART_CHECK_VALID(library);
-    Dart_SetNativeResolver(library, IsolateReloadTestNativeResolver, 0);
-    return library;
+    UNREACHABLE();
+    return Dart_Null();
   }
 #endif
   if (is_io_library) {
-    ASSERT(tag == Dart_kSourceTag);
-    return Dart_LoadSource(library, url, Dart_Null(),
-                           Builtin::PartSource(Builtin::kIOLibrary, url_chars),
-                           0, 0);
+    UNREACHABLE();
+    return Dart_Null();
   }
   if (is_standalone_library) {
-    ASSERT(tag == Dart_kSourceTag);
-    return Dart_LoadSource(library, url, Dart_Null(),
-                           Builtin::PartSource(Builtin::kCLILibrary, url_chars),
-                           0, 0);
+    UNREACHABLE();
+    return Dart_Null();
   }
   Dart_Handle resolved_url = url;
   const char* resolved_url_chars = url_chars;
@@ -450,37 +420,19 @@
   Dart_Handle source = DartUtils::ReadStringFromFile(resolved_url_chars);
   EXPECT_VALID(source);
   if (tag == Dart_kImportTag) {
-    return Dart_LoadLibrary(url, resolved_url, source, 0, 0);
+    UNREACHABLE();
+    return Dart_Null();
   } else {
     ASSERT(tag == Dart_kSourceTag);
-    return Dart_LoadSource(library, url, resolved_url, source, 0, 0);
+    UNREACHABLE();
+    return Dart_Null();
   }
 }
 
-static Dart_Handle LoadTestScriptWithVMParser(const char* script,
-                                              Dart_NativeEntryResolver resolver,
-                                              const char* lib_url,
-                                              bool finalize_classes) {
-  Dart_Handle url = NewString(lib_url);
-  Dart_Handle source = NewString(script);
-  Dart_Handle result = Dart_SetLibraryTagHandler(LibraryTagHandler);
-  EXPECT_VALID(result);
-  Dart_Handle lib = Dart_LoadScript(url, Dart_Null(), source, 0, 0);
-  DART_CHECK_VALID(lib);
-  result = Dart_SetNativeResolver(lib, resolver, NULL);
-  DART_CHECK_VALID(result);
-  if (finalize_classes) {
-    result = Dart_FinalizeLoading(false);
-    DART_CHECK_VALID(result);
-  }
-  return lib;
-}
-
 static intptr_t BuildSourceFilesArray(Dart_SourceFile** sourcefiles,
                                       const char* script) {
   ASSERT(sourcefiles != NULL);
   ASSERT(script != NULL);
-  ASSERT(FLAG_use_dart_frontend);
 
   intptr_t num_test_libs = 0;
   if (test_libs_ != NULL) {
@@ -510,7 +462,6 @@
                                      const char* lib_url,
                                      bool finalize_classes,
                                      bool allow_compile_errors) {
-  if (FLAG_use_dart_frontend) {
 #ifndef PRODUCT
     if (strstr(script, IsolateReloadTestLibUri()) != NULL) {
       Dart_Handle result = LoadIsolateReloadTestLib();
@@ -524,16 +475,11 @@
                               finalize_classes, true, allow_compile_errors);
     delete[] sourcefiles;
     return result;
-  } else {
-    return LoadTestScriptWithVMParser(script, resolver, lib_url,
-                                      finalize_classes);
-  }
 }
 
 Dart_Handle TestCase::LoadTestLibrary(const char* lib_uri,
                                       const char* script,
                                       Dart_NativeEntryResolver resolver) {
-  if (FLAG_use_dart_frontend) {
     const char* prefixed_lib_uri =
         OS::SCreate(Thread::Current()->zone(), "file:///%s", lib_uri);
     Dart_SourceFile sourcefiles[] = {{prefixed_lib_uri, script}};
@@ -561,11 +507,6 @@
 
     Dart_SetNativeResolver(lib, resolver, NULL);
     return lib;
-  } else {
-    Dart_Handle url = NewString(lib_uri);
-    Dart_Handle source = NewString(script);
-    return Dart_LoadLibrary(url, Dart_Null(), source, 0, 0);
-  }
 }
 
 Dart_Handle TestCase::LoadTestScriptWithDFE(int sourcefiles_count,
@@ -617,7 +558,6 @@
 #ifndef PRODUCT
 
 Dart_Handle TestCase::SetReloadTestScript(const char* script) {
-  if (FLAG_use_dart_frontend) {
     Dart_SourceFile* sourcefiles = NULL;
     intptr_t num_files = BuildSourceFilesArray(&sourcefiles, script);
     Dart_KernelCompilationResult compilation_result =
@@ -629,17 +569,6 @@
       return result;
     }
     return Api::Success();
-  } else {
-    if (script_reload_key == kUnsetThreadLocalKey) {
-      script_reload_key = OSThread::CreateThreadLocal();
-    }
-    ASSERT(script_reload_key != kUnsetThreadLocalKey);
-    ASSERT(OSThread::GetThreadLocal(script_reload_key) == 0);
-    // Store the new script in TLS.
-    OSThread::SetThreadLocal(script_reload_key,
-                             reinterpret_cast<uword>(script));
-    return Api::Success();
-  }
 }
 
 Dart_Handle TestCase::TriggerReload(const uint8_t* kernel_buffer,
@@ -680,7 +609,6 @@
 }
 
 Dart_Handle TestCase::ReloadTestScript(const char* script) {
-  if (FLAG_use_dart_frontend) {
     Dart_SourceFile* sourcefiles = NULL;
     intptr_t num_files = BuildSourceFilesArray(&sourcefiles, script);
     Dart_KernelCompilationResult compilation_result =
@@ -694,9 +622,6 @@
       }
       return result;
     }
-  } else {
-    SetReloadTestScript(script);
-  }
 
   return TriggerReload(/* kernel_buffer= */ NULL, /* kernel_buffer_size= */ 0);
 }
@@ -780,7 +705,6 @@
   const Script& script = Script::Handle(
       Script::New(function_name, String::Handle(String::New(kDummyScript)),
                   RawScript::kSourceTag));
-  script.Tokenize(String::Handle());
   const Library& lib = Library::Handle(Library::CoreLibrary());
   const Class& cls = Class::ZoneHandle(
       Class::New(lib, function_name, script, TokenPosition::kMinSource));
@@ -821,44 +745,6 @@
 #endif  // !PRODUCT
 }
 
-CodeGenTest::CodeGenTest(const char* name)
-    : function_(Function::ZoneHandle()),
-      node_sequence_(new SequenceNode(TokenPosition::kMinSource,
-                                      new LocalScope(NULL, 0, 0))),
-      default_parameter_values_(new ZoneGrowableArray<const Instance*>()) {
-  ASSERT(name != NULL);
-  const String& function_name =
-      String::ZoneHandle(Symbols::New(Thread::Current(), name));
-  // Add function to a class and that class to the class dictionary so that
-  // frame walking can be used.
-  Library& lib = Library::Handle(Library::CoreLibrary());
-  const Class& cls = Class::ZoneHandle(Class::New(
-      lib, function_name, Script::Handle(), TokenPosition::kMinSource));
-  function_ =
-      Function::New(function_name, RawFunction::kRegularFunction, true, false,
-                    false, false, false, cls, TokenPosition::kMinSource);
-  function_.set_result_type(Type::Handle(Type::DynamicType()));
-  const Array& functions = Array::Handle(Array::New(1));
-  functions.SetAt(0, function_);
-  cls.SetFunctions(functions);
-  lib.AddClass(cls);
-}
-
-void CodeGenTest::Compile() {
-  if (function_.HasCode()) return;
-  ParsedFunction* parsed_function =
-      new ParsedFunction(Thread::Current(), function_);
-  parsed_function->SetNodeSequence(node_sequence_);
-  parsed_function->set_default_parameter_values(default_parameter_values_);
-  node_sequence_->scope()->AddVariable(parsed_function->current_context_var());
-  parsed_function->EnsureExpressionTemp();
-  node_sequence_->scope()->AddVariable(parsed_function->expression_temp_var());
-  parsed_function->AllocateVariables();
-  const Error& error =
-      Error::Handle(Compiler::CompileParsedFunction(parsed_function));
-  EXPECT(error.IsNull());
-}
-
 bool CompilerTest::TestCompileScript(const Library& library,
                                      const Script& script) {
   Isolate* isolate = Isolate::Current();
diff --git a/runtime/vm/unit_test.h b/runtime/vm/unit_test.h
index a77dc9d..81a23cf 100644
--- a/runtime/vm/unit_test.h
+++ b/runtime/vm/unit_test.h
@@ -9,9 +9,9 @@
 
 #include "platform/globals.h"
 
-#include "vm/ast.h"
 #include "vm/dart.h"
 #include "vm/dart_api_state.h"
+#include "vm/dart_entry.h"
 #include "vm/globals.h"
 #include "vm/heap/heap.h"
 #include "vm/isolate.h"
@@ -115,70 +115,6 @@
   }                                                                            \
   static void AssemblerTestRun##name(AssemblerTest* test)
 
-// Populate node list with AST nodes.
-#define CODEGEN_TEST_GENERATE(name, test)                                      \
-  static void CodeGenTestGenerate##name(CodeGenTest* test)
-
-// Populate node list with AST nodes, possibly using the provided function
-// object built by a previous CODEGEN_TEST_GENERATE.
-#define CODEGEN_TEST2_GENERATE(name, function, test)                           \
-  static void CodeGenTestGenerate##name(const Function& function,              \
-                                        CodeGenTest* test)
-
-// Pass the name of test and the expected results as RawObject.
-#define CODEGEN_TEST_RUN(name, expected)                                       \
-  static void CodeGenTestRun##name(const Function& function);                  \
-  ISOLATE_UNIT_TEST_CASE(name) {                                               \
-    CodeGenTest __test__("" #name);                                            \
-    CodeGenTestGenerate##name(&__test__);                                      \
-    __test__.Compile();                                                        \
-    CodeGenTestRun##name(__test__.function());                                 \
-  }                                                                            \
-  static void CodeGenTestRun##name(const Function& function) {                 \
-    Object& result = Object::Handle();                                         \
-    result = DartEntry::InvokeFunction(function, Object::empty_array());       \
-    EXPECT(!result.IsError());                                                 \
-    Instance& actual = Instance::Handle();                                     \
-    actual ^= result.raw();                                                    \
-    EXPECT(actual.CanonicalizeEquals(Instance::Handle(expected)));             \
-  }
-
-// Pass the name of test, and use the generated function to call it
-// and evaluate its result.
-#define CODEGEN_TEST_RAW_RUN(name, function)                                   \
-  static void CodeGenTestRun##name(const Function& function);                  \
-  ISOLATE_UNIT_TEST_CASE(name) {                                               \
-    CodeGenTest __test__("" #name);                                            \
-    CodeGenTestGenerate##name(&__test__);                                      \
-    __test__.Compile();                                                        \
-    CodeGenTestRun##name(__test__.function());                                 \
-  }                                                                            \
-  static void CodeGenTestRun##name(const Function& function)
-
-// Generate code for two sequences of AST nodes and execute the first one.
-// The first one may reference the Function object generated by the second one.
-#define CODEGEN_TEST2_RUN(name1, name2, expected)                              \
-  static void CodeGenTestRun##name1(const Function& function);                 \
-  ISOLATE_UNIT_TEST_CASE(name1) {                                              \
-    /* Generate code for name2 */                                              \
-    CodeGenTest __test2__("" #name2);                                          \
-    CodeGenTestGenerate##name2(&__test2__);                                    \
-    __test2__.Compile();                                                       \
-    /* Generate code for name1, providing function2 */                         \
-    CodeGenTest __test1__("" #name1);                                          \
-    CodeGenTestGenerate##name1(__test2__.function(), &__test1__);              \
-    __test1__.Compile();                                                       \
-    CodeGenTestRun##name1(__test1__.function());                               \
-  }                                                                            \
-  static void CodeGenTestRun##name1(const Function& function) {                \
-    Object& result = Object::Handle();                                         \
-    result = DartEntry::InvokeFunction(function, Object::empty_array());       \
-    EXPECT(!result.IsError());                                                 \
-    Instance& actual = Instance::Handle();                                     \
-    actual ^= result.raw();                                                    \
-    EXPECT(actual.CanonicalizeEquals(Instance::Handle(expected)));             \
-  }
-
 #if defined(TARGET_ARCH_ARM) || defined(TARGET_ARCH_ARM64)
 #if defined(HOST_ARCH_ARM) || defined(HOST_ARCH_ARM64)
 // Running on actual ARM hardware, execute code natively.
@@ -346,8 +282,6 @@
 
   TestCase(RunEntry* run, const char* name) : TestCaseBase(name), run_(run) {}
 
-  static bool UsingDartFrontend();
-
   static char* CompileTestScriptWithDFE(const char* url,
                                         const char* source,
                                         const uint8_t** kernel_buffer,
@@ -639,31 +573,6 @@
   DISALLOW_COPY_AND_ASSIGN(AssemblerTest);
 };
 
-class CodeGenTest {
- public:
-  explicit CodeGenTest(const char* name);
-  ~CodeGenTest() {}
-
-  // Accessors.
-  const Function& function() const { return function_; }
-
-  SequenceNode* node_sequence() const { return node_sequence_; }
-
-  void set_default_parameter_values(ZoneGrowableArray<const Instance*>* value) {
-    default_parameter_values_ = value;
-  }
-
-  // Compile test and set code in function.
-  void Compile();
-
- private:
-  Function& function_;
-  SequenceNode* node_sequence_;
-  ZoneGrowableArray<const Instance*>* default_parameter_values_;
-
-  DISALLOW_COPY_AND_ASSIGN(CodeGenTest);
-};
-
 class CompilerTest : public AllStatic {
  public:
   // Test the Compiler::CompileScript functionality by checking the return
diff --git a/runtime/vm/virtual_memory_android.cc b/runtime/vm/virtual_memory_android.cc
index 9644ffc..1ebce26 100644
--- a/runtime/vm/virtual_memory_android.cc
+++ b/runtime/vm/virtual_memory_android.cc
@@ -102,8 +102,11 @@
 }
 
 void VirtualMemory::Protect(void* address, intptr_t size, Protection mode) {
-  ASSERT(Thread::Current()->IsMutatorThread() ||
-         Isolate::Current()->mutator_thread()->IsAtSafepoint());
+#if defined(DEBUG)
+  Thread* thread = Thread::Current();
+  ASSERT((thread == nullptr) || thread->IsMutatorThread() ||
+         thread->isolate()->mutator_thread()->IsAtSafepoint());
+#endif
   uword start_address = reinterpret_cast<uword>(address);
   uword end_address = start_address + size;
   uword page_address = Utils::RoundDown(start_address, PageSize());
diff --git a/runtime/vm/virtual_memory_fuchsia.cc b/runtime/vm/virtual_memory_fuchsia.cc
index 7f23434..bcbf3b0 100644
--- a/runtime/vm/virtual_memory_fuchsia.cc
+++ b/runtime/vm/virtual_memory_fuchsia.cc
@@ -178,8 +178,11 @@
 }
 
 void VirtualMemory::Protect(void* address, intptr_t size, Protection mode) {
-  ASSERT(Thread::Current()->IsMutatorThread() ||
-         Isolate::Current()->mutator_thread()->IsAtSafepoint());
+#if defined(DEBUG)
+  Thread* thread = Thread::Current();
+  ASSERT((thread == nullptr) || thread->IsMutatorThread() ||
+         thread->isolate()->mutator_thread()->IsAtSafepoint());
+#endif
   const uword start_address = reinterpret_cast<uword>(address);
   const uword end_address = start_address + size;
   const uword page_address = Utils::RoundDown(start_address, PageSize());
diff --git a/runtime/vm/virtual_memory_linux.cc b/runtime/vm/virtual_memory_linux.cc
index e18510e..bd76de5 100644
--- a/runtime/vm/virtual_memory_linux.cc
+++ b/runtime/vm/virtual_memory_linux.cc
@@ -102,8 +102,11 @@
 }
 
 void VirtualMemory::Protect(void* address, intptr_t size, Protection mode) {
-  ASSERT(Thread::Current()->IsMutatorThread() ||
-         Isolate::Current()->mutator_thread()->IsAtSafepoint());
+#if defined(DEBUG)
+  Thread* thread = Thread::Current();
+  ASSERT((thread == nullptr) || thread->IsMutatorThread() ||
+         thread->isolate()->mutator_thread()->IsAtSafepoint());
+#endif
   uword start_address = reinterpret_cast<uword>(address);
   uword end_address = start_address + size;
   uword page_address = Utils::RoundDown(start_address, PageSize());
diff --git a/runtime/vm/virtual_memory_macos.cc b/runtime/vm/virtual_memory_macos.cc
index 59fdf59..dc75b44 100644
--- a/runtime/vm/virtual_memory_macos.cc
+++ b/runtime/vm/virtual_memory_macos.cc
@@ -102,8 +102,11 @@
 }
 
 void VirtualMemory::Protect(void* address, intptr_t size, Protection mode) {
-  ASSERT(Thread::Current()->IsMutatorThread() ||
-         Isolate::Current()->mutator_thread()->IsAtSafepoint());
+#if defined(DEBUG)
+  Thread* thread = Thread::Current();
+  ASSERT((thread == nullptr) || thread->IsMutatorThread() ||
+         thread->isolate()->mutator_thread()->IsAtSafepoint());
+#endif
   uword start_address = reinterpret_cast<uword>(address);
   uword end_address = start_address + size;
   uword page_address = Utils::RoundDown(start_address, PageSize());
diff --git a/runtime/vm/virtual_memory_win.cc b/runtime/vm/virtual_memory_win.cc
index 4d03dad..a36128a 100644
--- a/runtime/vm/virtual_memory_win.cc
+++ b/runtime/vm/virtual_memory_win.cc
@@ -83,8 +83,11 @@
 }
 
 void VirtualMemory::Protect(void* address, intptr_t size, Protection mode) {
-  ASSERT(Thread::Current()->IsMutatorThread() ||
-         Isolate::Current()->mutator_thread()->IsAtSafepoint());
+#if defined(DEBUG)
+  Thread* thread = Thread::Current();
+  ASSERT((thread == nullptr) || thread->IsMutatorThread() ||
+         thread->isolate()->mutator_thread()->IsAtSafepoint());
+#endif
   uword start_address = reinterpret_cast<uword>(address);
   uword end_address = start_address + size;
   uword page_address = Utils::RoundDown(start_address, PageSize());
diff --git a/runtime/vm/visitor.h b/runtime/vm/visitor.h
index c5341d9..69ea746 100644
--- a/runtime/vm/visitor.h
+++ b/runtime/vm/visitor.h
@@ -56,6 +56,27 @@
   DISALLOW_COPY_AND_ASSIGN(ObjectVisitor);
 };
 
+class ExtensibleObjectVisitor : public ObjectVisitor {
+ public:
+  explicit ExtensibleObjectVisitor(GrowableArray<ObjectVisitor*>* visitors)
+      : visitors_(visitors) {}
+
+  virtual ~ExtensibleObjectVisitor() {}
+
+  virtual void VisitObject(RawObject* obj) {
+    for (intptr_t i = 0; i < visitors_->length(); i++) {
+      visitors_->At(i)->VisitObject(obj);
+    }
+  }
+
+  void Add(ObjectVisitor* visitor) { visitors_->Add(visitor); }
+
+ private:
+  GrowableArray<ObjectVisitor*>* visitors_;
+
+  DISALLOW_COPY_AND_ASSIGN(ExtensibleObjectVisitor);
+};
+
 // An object finder visitor interface.
 class FindObjectVisitor {
  public:
diff --git a/runtime/vm/vm_sources.gni b/runtime/vm/vm_sources.gni
index 23f0402..3605252 100644
--- a/runtime/vm/vm_sources.gni
+++ b/runtime/vm/vm_sources.gni
@@ -7,12 +7,7 @@
 vm_sources = [
   "allocation.cc",
   "allocation.h",
-  "ast.cc",
   "ast.h",
-  "ast_printer.cc",
-  "ast_printer.h",
-  "ast_transformer.cc",
-  "ast_transformer.h",
   "base64.cc",
   "base64.h",
   "base_isolate.h",
@@ -45,8 +40,6 @@
   "code_patcher_x64.cc",
   "compilation_trace.cc",
   "compilation_trace.h",
-  "compiler_stats.cc",
-  "compiler_stats.h",
   "constants_arm.h",
   "constants_arm64.h",
   "constants_dbc.h",
@@ -359,8 +352,6 @@
 vm_sources_tests = [
   "allocation_test.cc",
   "assert_test.cc",
-  "ast_printer_test.cc",
-  "ast_test.cc",
   "atomic_test.cc",
   "base64_test.cc",
   "benchmark_test.cc",
@@ -419,7 +410,6 @@
   "object_test.cc",
   "object_x64_test.cc",
   "os_test.cc",
-  "parser_test.cc",
   "port_test.cc",
   "profiler_test.cc",
   "regexp_test.cc",
diff --git a/samples-dev/swarm/swarm_ui_lib/touch/ClickBuster.dart b/samples-dev/swarm/swarm_ui_lib/touch/ClickBuster.dart
index 33d8495..a2af933 100644
--- a/samples-dev/swarm/swarm_ui_lib/touch/ClickBuster.dart
+++ b/samples-dev/swarm/swarm_ui_lib/touch/ClickBuster.dart
@@ -12,7 +12,7 @@
  * Buttons implemented with touch events usually have click handlers as well.
  * This is because sometimes touch events stop working, and the click handler
  * serves as a fallback. Here we use a click buster to prevent the native click
- * from firing if the touchend event was succesfully handled.
+ * from firing if the touchend event was successfully handled.
  *
  * When native scrolling behavior is disabled (see Scroller), click events will
  * fire after the touchend event when the drag sequence is complete. The click
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 5bd19c1..12455bf 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -67,9 +67,6 @@
 #.........dart2js_server_platform.dill
 #.........dart2js_platform_strong.dill
 #.........dart2js_server_platform_strong.dill
-#.........vm_outline.dill
-#.........vm_outline_strong.dill
-#.........vm_platform.dill
 #.........vm_platform_strong.dill
 #.........dev_compiler/
 # ......async/
@@ -500,9 +497,6 @@
     "../runtime/vm:kernel_platform_files",
   ]
   sources = [
-    "$root_out_dir/vm_outline.dill",
-    "$root_out_dir/vm_outline_strong.dill",
-    "$root_out_dir/vm_platform.dill",
     "$root_out_dir/vm_platform_strong.dill",
   ]
   outputs = [
diff --git a/sdk/bin/dart2js b/sdk/bin/dart2js
index b4c1938..cfc91b1 100755
--- a/sdk/bin/dart2js
+++ b/sdk/bin/dart2js
@@ -50,6 +50,6 @@
 
 DART_ROOT="$(cd "${SDK_DIR}/.." ; pwd -P)"
 
-DART2JS="$DART_ROOT/pkg/compiler/lib/src/dart2js.dart"
+DART2JS="package:compiler/src/dart2js.dart"
 
 exec "$DART" "--packages=$DART_ROOT/.packages" "${EXTRA_VM_OPTIONS[@]}" "$DART2JS" "${EXTRA_OPTIONS[@]}" "$@"
diff --git a/sdk/lib/_http/http_impl.dart b/sdk/lib/_http/http_impl.dart
index 983a4fb..018a8ea 100644
--- a/sdk/lib/_http/http_impl.dart
+++ b/sdk/lib/_http/http_impl.dart
@@ -2235,12 +2235,7 @@
           .catchError(connect);
     }
 
-    // Make sure we go through the event loop before taking a
-    // connection from the pool. For long-running synchronous code the
-    // server might have closed the connection, so this lowers the
-    // probability of getting a connection that was already closed.
-    return new Future<_ConnectionInfo>(
-        () => connect(new HttpException("No proxies given")));
+    return connect(new HttpException("No proxies given"));
   }
 
   _SiteCredentials _findCredentials(Uri url, [_AuthenticationScheme scheme]) {
diff --git a/sdk/lib/_internal/js_runtime/lib/io_patch.dart b/sdk/lib/_internal/js_runtime/lib/io_patch.dart
index 8a4c7bb..40e7c73 100644
--- a/sdk/lib/_internal/js_runtime/lib/io_patch.dart
+++ b/sdk/lib/_internal/js_runtime/lib/io_patch.dart
@@ -530,7 +530,7 @@
 class RawDatagramSocket {
   @patch
   static Future<RawDatagramSocket> bind(host, int port,
-      {bool reuseAddress: true}) {
+      {bool reuseAddress: true, bool reusePort: false, int ttl: 1}) {
     throw new UnsupportedError("RawDatagramSocket.bind");
   }
 }
diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
index 2c01398..14bf26d 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart
@@ -2007,8 +2007,8 @@
       : _method = match == null ? null : JS('', '#.method', match);
 
   String toString() {
-    if (_method == null) return 'NullError: $_message';
-    return "NullError: method not found: '$_method' on null";
+    if (_method == null) return 'NoSuchMethodError: $_message';
+    return "NoSuchMethodError: method not found: '$_method' on null";
   }
 }
 
@@ -2360,7 +2360,7 @@
     int applyTrampolineIndex,
     var reflectionInfo,
     bool isStatic,
-    jsArguments,
+    bool isIntercepted,
     String propertyName,
   ) {
     JS_EFFECT(() {
@@ -2446,12 +2446,7 @@
 
     // Create a closure and "monkey" patch it with call stubs.
     var trampoline = function;
-    var isIntercepted = false;
     if (!isStatic) {
-      if (JS('bool', '#.length == 1', jsArguments)) {
-        // Intercepted call.
-        isIntercepted = true;
-      }
       trampoline = forwardCallTo(receiver, function, isIntercepted);
       JS('', '#.\$reflectionInfo = #', trampoline, reflectionInfo);
     } else {
@@ -2793,16 +2788,14 @@
 
 /// Called from implicit method getter (aka tear-off).
 closureFromTearOff(receiver, functions, applyTrampolineIndex, reflectionInfo,
-    isStatic, jsArguments, name) {
+    isStatic, isIntercepted, name) {
   return Closure.fromTearOff(
       receiver,
-      JSArray.markFixedList(functions),
+      JS('JSArray', '#', functions),
       applyTrampolineIndex,
-      reflectionInfo is List
-          ? JSArray.markFixedList(reflectionInfo)
-          : reflectionInfo,
+      reflectionInfo,
       JS('bool', '!!#', isStatic),
-      jsArguments,
+      JS('bool', '!!#', isIntercepted),
       JS('String', '#', name));
 }
 
@@ -3407,13 +3400,13 @@
 
 void propertyTypeError(value, property) {
   String name = isCheckPropertyToJsConstructorName(property);
-  throw new TypeErrorImplementation(value, name);
+  throw new TypeErrorImplementation(value, unminifyOrTag(name));
 }
 
 void propertyTypeCastError(value, property) {
   // Cuts the property name to the class name.
-  String expectedType = property.substring(3, property.length);
-  throw new CastErrorImplementation(value, expectedType);
+  String name = isCheckPropertyToJsConstructorName(property);
+  throw new CastErrorImplementation(value, unminifyOrTag(name));
 }
 
 /**
@@ -3537,12 +3530,12 @@
 listTypeCheck(value) {
   if (value == null) return value;
   if (value is List) return value;
-  throw new TypeErrorImplementation(value, 'List');
+  throw new TypeErrorImplementation(value, 'List<dynamic>');
 }
 
 listTypeCast(value) {
   if (value is List || value == null) return value;
-  throw new CastErrorImplementation(value, 'List');
+  throw new CastErrorImplementation(value, 'List<dynamic>');
 }
 
 listSuperTypeCheck(value, property) {
diff --git a/sdk/lib/_internal/js_runtime/lib/js_rti.dart b/sdk/lib/_internal/js_runtime/lib/js_rti.dart
index ae207fb6..b5e84fa 100644
--- a/sdk/lib/_internal/js_runtime/lib/js_rti.dart
+++ b/sdk/lib/_internal/js_runtime/lib/js_rti.dart
@@ -463,7 +463,7 @@
   // Extract the class name from the is field and append the textual
   // representation of the type arguments.
   return Primitives.formatType(
-      isCheckPropertyToJsConstructorName(isField), arguments);
+      unminifyOrTag(isCheckPropertyToJsConstructorName(isField)), arguments);
 }
 
 /// Called from generated code.
diff --git a/sdk/lib/_internal/js_runtime/lib/preambles/d8.js b/sdk/lib/_internal/js_runtime/lib/preambles/d8.js
index 00f2485..0174d95 100644
--- a/sdk/lib/_internal/js_runtime/lib/preambles/d8.js
+++ b/sdk/lib/_internal/js_runtime/lib/preambles/d8.js
@@ -292,7 +292,13 @@
       //    at init.currentScript (/tmp/foo.js:308:19)
       //    at /tmp/foo.js:320:7
       //    at /tmp/foo.js:331:4
-      var re = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "mg");
+      // Sometimes the 'init.currentScript' line is in the format without the
+      // function name, so match with or without parentheses.
+
+      //              vvvvvvvvvvvv Optional prefix up to '('.
+      var re = /^ *at (?:[^(]*\()?(.*):[0-9]*:[0-9]*\)?$/mg
+      //              Optional ')' at end           ^^^
+
       var lastMatch = null;
       do {
         var match = re.exec(stack);
diff --git a/sdk/lib/async/stream.dart b/sdk/lib/async/stream.dart
index da9c337..de9b332 100644
--- a/sdk/lib/async/stream.dart
+++ b/sdk/lib/async/stream.dart
@@ -171,7 +171,7 @@
    * The iterable is iterated when the stream receives a listener, and stops
    * iterating if the listener cancels the subscription, or if the
    * [Iterator.moveNext] method returns `false` or throws.
-   * Iteration is suspended whild the stream subscription is paused.
+   * Iteration is suspended while the stream subscription is paused.
    *
    * If calling [Iterator.moveNext] on `elements.iterator` throws,
    * the stream emits that error and then it closes.
@@ -1461,7 +1461,7 @@
    * [EventSink] that allows putting events into the returned stream.
    * This `EventSink` is only valid during the call to [onTimeout].
    * Calling [EventSink.close] on the sink passed to [onTimeout] closes the
-   * returned stream, and no futher events are processed.
+   * returned stream, and no further events are processed.
    *
    * If [onTimeout] is omitted, a timeout will just put a [TimeoutException]
    * into the error channel of the returned stream.
@@ -2022,7 +2022,7 @@
       _StreamBindTransformer<S, T>;
 
   /**
-   * Adapts [source] to be a `StreamTransfomer<TS, TT>`.
+   * Adapts [source] to be a `StreamTransformer<TS, TT>`.
    *
    * This allows [source] to be used at the new type, but at run-time it
    * must satisfy the requirements of both the new type and its original type.
@@ -2073,7 +2073,7 @@
    * The resulting transformer will check at run-time that all data events
    * of the stream it transforms are actually instances of [S],
    * and it will check that all data events produced by this transformer
-   * are acually instances of [RT].
+   * are actually instances of [RT].
    */
   StreamTransformer<RS, RT> cast<RS, RT>();
 }
diff --git a/sdk/lib/collection/hash_map.dart b/sdk/lib/collection/hash_map.dart
index 84655dc..dcdb4ee 100644
--- a/sdk/lib/collection/hash_map.dart
+++ b/sdk/lib/collection/hash_map.dart
@@ -153,4 +153,16 @@
     MapBase._fillMapWithIterables(map, keys, values);
     return map;
   }
+
+  /**
+   * Creates a [HashMap] containing the entries of [entries].
+   *
+   * Returns a new `HashMap<K, V>` where all entries of [entries]
+   * have been added in iteration order.
+   *
+   * If multiple [entries] have the same key,
+   * later occurrences overwrite the earlier ones.
+   */
+  factory HashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
+      HashMap<K, V>()..addEntries(entries);
 }
diff --git a/sdk/lib/collection/linked_hash_map.dart b/sdk/lib/collection/linked_hash_map.dart
index b4c2bf4..770c6e1 100644
--- a/sdk/lib/collection/linked_hash_map.dart
+++ b/sdk/lib/collection/linked_hash_map.dart
@@ -141,4 +141,16 @@
     MapBase._fillMapWithIterables(map, keys, values);
     return map;
   }
+
+  /**
+   * Creates a [LinkedHashMap] containing the entries of [entries].
+   *
+   * Returns a new `LinkedHashMap<K, V>` where all entries of [entries]
+   * have been added in iteration order.
+   *
+   * If multiple [entries] have the same key,
+   * later occurrences overwrite the earlier ones.
+   */
+  factory LinkedHashMap.fromEntries(Iterable<MapEntry<K, V>> entries) =>
+      <K, V>{}..addEntries(entries);
 }
diff --git a/sdk/lib/convert/converter.dart b/sdk/lib/convert/converter.dart
index e0aeeb4..7f0b3f5 100644
--- a/sdk/lib/convert/converter.dart
+++ b/sdk/lib/convert/converter.dart
@@ -62,7 +62,7 @@
    * The resulting transformer will check at run-time that all conversion
    * inputs are actually instances of [S],
    * and it will check that all conversion output produced by this converter
-   * are acually instances of [RT].
+   * are actually instances of [RT].
    */
   Converter<RS, RT> cast<RS, RT>() => Converter.castFrom<S, T, RS, RT>(this);
 }
diff --git a/sdk/lib/core/bool.dart b/sdk/lib/core/bool.dart
index 980b1c5..ddec7cc 100644
--- a/sdk/lib/core/bool.dart
+++ b/sdk/lib/core/bool.dart
@@ -51,7 +51,7 @@
 
   external int get hashCode;
 
-  /// The logical conjuncton ("and") of this and [other].
+  /// The logical conjunction ("and") of this and [other].
   ///
   /// Returns `true` if both this and [other] are `true`, and `false` otherwise.
   //TODO(lrn): Remove "as bool" in Dart 2.
@@ -62,7 +62,7 @@
   /// Returns `true` if either this or [other] is `true`, and `false` otherwise.
   bool operator |(bool other) => (other as bool) || this;
 
-  /// The logical exclusive disjuction ("exclusive or") of this and [other].
+  /// The logical exclusive disjunction ("exclusive or") of this and [other].
   ///
   /// Returns whether this and [other] are neither both `true` nor both `false`.
   bool operator ^(bool other) => !(other as bool) == this;
diff --git a/sdk/lib/core/map.dart b/sdk/lib/core/map.dart
index 4e8a878..42b606a 100644
--- a/sdk/lib/core/map.dart
+++ b/sdk/lib/core/map.dart
@@ -175,8 +175,11 @@
   /**
    * Creates a new map and adds all entries.
    *
-   * Creates a new map like `new Map<K, V>()` and then adds the key
-   * and value of eacy entry in [entries] in iteration order.
+   * Returns a new `Map<K, V>` where all entries of [entries]
+   * have been added in iteration order.
+   *
+   * If multiple [entries] have the same key,
+   * later occurrences overwrite the earlier ones.
    */
   factory Map.fromEntries(Iterable<MapEntry<K, V>> entries) =>
       <K, V>{}..addEntries(entries);
diff --git a/sdk/lib/core/symbol.dart b/sdk/lib/core/symbol.dart
index 8580d6f..459aad3 100644
--- a/sdk/lib/core/symbol.dart
+++ b/sdk/lib/core/symbol.dart
@@ -70,6 +70,8 @@
    * const Symbol("_foo") // Invalid
    * ``
    *
+   * The created instance overrides [Object.==].
+   *
    * The following text is non-normative:
    *
    * Creating non-const Symbol instances may result in larger output.  If
diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 6ec6ed5..a4f1b87 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -142,6 +142,9 @@
  */
 typedef void FontFaceSetForEachCallback(
     FontFace fontFace, FontFace fontFaceAgain, FontFaceSet set);
+
+WorkerGlobalScope get _workerSelf => JS('WorkerGlobalScope', 'self');
+
 // 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.
@@ -1192,19 +1195,16 @@
     throw new UnsupportedError("Not supported");
   }
 
-  Future fetch(String id, Object requests, [Map options]) {
+  Future<BackgroundFetchRegistration> fetch(String id, Object requests,
+      [Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _fetch_1(id, requests, options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _fetch_2(id, requests);
+    return promiseToFuture<BackgroundFetchRegistration>(
+        JS("", "#.fetch(#, #, #)", this, id, requests, options_dict));
   }
 
-  @JSName('fetch')
-  Future _fetch_1(id, requests, options) native;
-  @JSName('fetch')
-  Future _fetch_2(id, requests) native;
-
   Future<BackgroundFetchRegistration> get(String id) =>
       promiseToFuture<BackgroundFetchRegistration>(
           JS("", "#.get(#)", this, id));
@@ -1840,18 +1840,14 @@
   Future keys() => promiseToFuture(JS("", "#.keys()", this));
 
   Future match(/*RequestInfo*/ request, [Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _match_1(request, options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _match_2(request);
+    return promiseToFuture(
+        JS("", "#.match(#, #)", this, request, options_dict));
   }
 
-  @JSName('match')
-  Future _match_1(request, options) native;
-  @JSName('match')
-  Future _match_2(request) native;
-
   Future open(String cacheName) =>
       promiseToFuture(JS("", "#.open(#)", this, cacheName));
 }
@@ -2823,19 +2819,15 @@
 
   Future get(String id) => promiseToFuture(JS("", "#.get(#)", this, id));
 
-  Future matchAll([Map options]) {
+  Future<List<Client>> matchAll([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _matchAll_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _matchAll_2();
+    return promiseToFuture<List<Client>>(
+        JS("", "#.matchAll(#)", this, options_dict));
   }
 
-  @JSName('matchAll')
-  Future _matchAll_1(options) native;
-  @JSName('matchAll')
-  Future _matchAll_2() native;
-
   Future<WindowClient> openWindow(String url) =>
       promiseToFuture<WindowClient>(JS("", "#.openWindow(#)", this, url));
 }
@@ -2997,30 +2989,21 @@
   }
 
   Future getAll([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _getAll_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _getAll_2();
+    return promiseToFuture(JS("", "#.getAll(#)", this, options_dict));
   }
 
-  @JSName('getAll')
-  Future _getAll_1(options) native;
-  @JSName('getAll')
-  Future _getAll_2() native;
-
   Future set(String name, String value, [Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _set_1(name, value, options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _set_2(name, value);
+    return promiseToFuture(
+        JS("", "#.set(#, #, #)", this, name, value, options_dict));
   }
-
-  @JSName('set')
-  Future _set_1(name, value, options) native;
-  @JSName('set')
-  Future _set_2(name, value) native;
 }
 // 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
@@ -3090,31 +3073,21 @@
   }
 
   Future create([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _create_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _create_2();
+    return promiseToFuture(JS("", "#.create(#)", this, options_dict));
   }
 
-  @JSName('create')
-  Future _create_1(options) native;
-  @JSName('create')
-  Future _create_2() native;
-
   Future get([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _get_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _get_2();
+    return promiseToFuture(JS("", "#.get(#)", this, options_dict));
   }
 
-  @JSName('get')
-  Future _get_1(options) native;
-  @JSName('get')
-  Future _get_2() native;
-
   Future preventSilentAccess() =>
       promiseToFuture(JS("", "#.preventSilentAccess()", this));
 
@@ -8722,7 +8695,12 @@
 
   /// Stream of `message` events handled by this [DedicatedWorkerGlobalScope].
   Stream<MessageEvent> get onMessage => messageEvent.forTarget(this);
+
+  static DedicatedWorkerGlobalScope get instance {
+    return _workerSelf as DedicatedWorkerGlobalScope;
+  }
 }
+
 // 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.
@@ -17975,25 +17953,18 @@
       promiseToFuture<ImageBitmap>(JS("", "#.grabFrame()", this));
 
   Future setOptions(Map photoSettings) {
-    var photoSettings_1 = convertDartToNative_Dictionary(photoSettings);
-    return _setOptions_1(photoSettings_1);
+    var photoSettings_dict = convertDartToNative_Dictionary(photoSettings);
+    return promiseToFuture(JS("", "#.setOptions(#)", this, photoSettings_dict));
   }
 
-  @JSName('setOptions')
-  Future _setOptions_1(photoSettings) native;
-
-  Future takePhoto([Map photoSettings]) {
+  Future<Blob> takePhoto([Map photoSettings]) {
+    var photoSettings_dict = null;
     if (photoSettings != null) {
-      var photoSettings_1 = convertDartToNative_Dictionary(photoSettings);
-      return _takePhoto_1(photoSettings_1);
+      photoSettings_dict = convertDartToNative_Dictionary(photoSettings);
     }
-    return _takePhoto_2();
+    return promiseToFuture<Blob>(
+        JS("", "#.takePhoto(#)", this, photoSettings_dict));
   }
-
-  @JSName('takePhoto')
-  Future _takePhoto_1(photoSettings) native;
-  @JSName('takePhoto')
-  Future _takePhoto_2() native;
 }
 // Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 // for details. All rights reserved. Use of this source code is governed by a
@@ -19344,21 +19315,17 @@
     throw new UnsupportedError("Not supported");
   }
 
-  Future decodingInfo(Map configuration) {
-    var configuration_1 = convertDartToNative_Dictionary(configuration);
-    return _decodingInfo_1(configuration_1);
+  Future<MediaCapabilitiesInfo> decodingInfo(Map configuration) {
+    var configuration_dict = convertDartToNative_Dictionary(configuration);
+    return promiseToFuture<MediaCapabilitiesInfo>(
+        JS("", "#.decodingInfo(#)", this, configuration_dict));
   }
 
-  @JSName('decodingInfo')
-  Future _decodingInfo_1(configuration) native;
-
-  Future encodingInfo(Map configuration) {
-    var configuration_1 = convertDartToNative_Dictionary(configuration);
-    return _encodingInfo_1(configuration_1);
+  Future<MediaCapabilitiesInfo> encodingInfo(Map configuration) {
+    var configuration_dict = convertDartToNative_Dictionary(configuration);
+    return promiseToFuture<MediaCapabilitiesInfo>(
+        JS("", "#.encodingInfo(#)", this, configuration_dict));
   }
-
-  @JSName('encodingInfo')
-  Future _encodingInfo_1(configuration) native;
 }
 // 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
@@ -20166,18 +20133,14 @@
   final String readyState;
 
   Future applyConstraints([Map constraints]) {
+    var constraints_dict = null;
     if (constraints != null) {
-      var constraints_1 = convertDartToNative_Dictionary(constraints);
-      return _applyConstraints_1(constraints_1);
+      constraints_dict = convertDartToNative_Dictionary(constraints);
     }
-    return _applyConstraints_2();
+    return promiseToFuture(
+        JS("", "#.applyConstraints(#)", this, constraints_dict));
   }
 
-  @JSName('applyConstraints')
-  Future _applyConstraints_1(constraints) native;
-  @JSName('applyConstraints')
-  Future _applyConstraints_2() native;
-
   MediaStreamTrack clone() native;
 
   Map getCapabilities() {
@@ -21562,23 +21525,22 @@
   }
 
   @JSName('requestKeyboardLock')
-  Future _requestKeyboardLock_1(List keyCodes) native;
+  Future _requestKeyboardLock_1(List keyCodes) =>
+      promiseToFuture(JS("", "#.requestKeyboardLock(#)", this, keyCodes));
   @JSName('requestKeyboardLock')
-  Future _requestKeyboardLock_2() native;
+  Future _requestKeyboardLock_2() =>
+      promiseToFuture(JS("", "#.requestKeyboardLock()", this));
 
+  @JSName('requestMIDIAccess')
   Future requestMidiAccess([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _requestMidiAccess_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _requestMidiAccess_2();
+    return promiseToFuture(
+        JS("", "#.requestMidiAccess(#)", this, options_dict));
   }
 
-  @JSName('requestMIDIAccess')
-  Future _requestMidiAccess_1(options) native;
-  @JSName('requestMIDIAccess')
-  Future _requestMidiAccess_2() native;
-
   Future requestMediaKeySystemAccess(
           String keySystem, List<Map> supportedConfigurations) =>
       promiseToFuture(JS("", "#.requestMediaKeySystemAccess(#, #)", this,
@@ -21587,18 +21549,13 @@
   bool sendBeacon(String url, Object data) native;
 
   Future share([Map data]) {
+    var data_dict = null;
     if (data != null) {
-      var data_1 = convertDartToNative_Dictionary(data);
-      return _share_1(data_1);
+      data_dict = convertDartToNative_Dictionary(data);
     }
-    return _share_2();
+    return promiseToFuture(JS("", "#.share(#)", this, data_dict));
   }
 
-  @JSName('share')
-  Future _share_1(data) native;
-  @JSName('share')
-  Future _share_2() native;
-
   // From NavigatorAutomationInformation
 
   final bool webdriver;
@@ -22748,19 +22705,15 @@
 
   int width;
 
-  Future convertToBlob([Map options]) {
+  Future<Blob> convertToBlob([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _convertToBlob_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _convertToBlob_2();
+    return promiseToFuture<Blob>(
+        JS("", "#.convertToBlob(#)", this, options_dict));
   }
 
-  @JSName('convertToBlob')
-  Future _convertToBlob_1(options) native;
-  @JSName('convertToBlob')
-  Future _convertToBlob_2() native;
-
   Object getContext(String contextType, [Map attributes]) {
     if (attributes != null) {
       var attributes_1 = convertDartToNative_Dictionary(attributes);
@@ -22892,8 +22845,7 @@
   CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) native;
 
   CanvasPattern createPattern(
-      /*CanvasImageSource*/ image,
-      String repetitionType) native;
+      /*CanvasImageSource*/ image, String repetitionType) native;
 
   CanvasGradient createRadialGradient(
       num x0, num y0, num r0, num x1, num y1, num r1) native;
@@ -23269,8 +23221,7 @@
   CanvasGradient createLinearGradient(num x0, num y0, num x1, num y1) native;
 
   CanvasPattern createPattern(
-      /*CanvasImageSource*/ image,
-      String repetitionType) native;
+      /*CanvasImageSource*/ image, String repetitionType) native;
 
   CanvasGradient createRadialGradient(
       num x0, num y0, num r0, num x1, num y1, num r1) native;
@@ -23596,12 +23547,10 @@
       promiseToFuture<List<String>>(JS("", "#.keys()", this));
 
   Future set(String instrumentKey, Map details) {
-    var details_1 = convertDartToNative_Dictionary(details);
-    return _set_1(instrumentKey, details_1);
+    var details_dict = convertDartToNative_Dictionary(details);
+    return promiseToFuture(
+        JS("", "#.set(#, #)", this, instrumentKey, details_dict));
   }
-
-  @JSName('set')
-  Future _set_1(instrumentKey, details) native;
 }
 // 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
@@ -24132,33 +24081,27 @@
     throw new UnsupportedError("Not supported");
   }
 
-  Future query(Map permission) {
-    var permission_1 = convertDartToNative_Dictionary(permission);
-    return _query_1(permission_1);
+  Future<PermissionStatus> query(Map permission) {
+    var permission_dict = convertDartToNative_Dictionary(permission);
+    return promiseToFuture<PermissionStatus>(
+        JS("", "#.query(#)", this, permission_dict));
   }
 
-  @JSName('query')
-  Future _query_1(permission) native;
-
-  Future request(Map permissions) {
-    var permissions_1 = convertDartToNative_Dictionary(permissions);
-    return _request_1(permissions_1);
+  Future<PermissionStatus> request(Map permissions) {
+    var permissions_dict = convertDartToNative_Dictionary(permissions);
+    return promiseToFuture<PermissionStatus>(
+        JS("", "#.request(#)", this, permissions_dict));
   }
 
-  @JSName('request')
-  Future _request_1(permissions) native;
-
   Future<PermissionStatus> requestAll(List<Map> permissions) =>
       promiseToFuture<PermissionStatus>(
           JS("", "#.requestAll(#)", this, permissions));
 
-  Future revoke(Map permission) {
-    var permission_1 = convertDartToNative_Dictionary(permission);
-    return _revoke_1(permission_1);
+  Future<PermissionStatus> revoke(Map permission) {
+    var permission_dict = convertDartToNative_Dictionary(permission);
+    return promiseToFuture<PermissionStatus>(
+        JS("", "#.revoke(#)", this, permission_dict));
   }
-
-  @JSName('revoke')
-  Future _revoke_1(permission) native;
 }
 // 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
@@ -24758,30 +24701,21 @@
       promiseToFuture<PushSubscription>(JS("", "#.getSubscription()", this));
 
   Future permissionState([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _permissionState_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _permissionState_2();
+    return promiseToFuture(JS("", "#.permissionState(#)", this, options_dict));
   }
 
-  @JSName('permissionState')
-  Future _permissionState_1(options) native;
-  @JSName('permissionState')
-  Future _permissionState_2() native;
-
-  Future subscribe([Map options]) {
+  Future<PushSubscription> subscribe([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _subscribe_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _subscribe_2();
+    return promiseToFuture<PushSubscription>(
+        JS("", "#.subscribe(#)", this, options_dict));
   }
-
-  @JSName('subscribe')
-  Future _subscribe_1(options) native;
-  @JSName('subscribe')
-  Future _subscribe_2() native;
 }
 // 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
@@ -25456,26 +25390,6 @@
     return false;
   }
 
-  Future<RtcSessionDescription> createOffer([Map mediaConstraints]) {
-    var completer = new Completer<RtcSessionDescription>();
-    _createOffer((value) {
-      completer.complete(value);
-    }, (error) {
-      completer.completeError(error);
-    }, mediaConstraints);
-    return completer.future;
-  }
-
-  Future<RtcSessionDescription> createAnswer([Map mediaConstraints]) {
-    var completer = new Completer<RtcSessionDescription>();
-    _createAnswer((value) {
-      completer.complete(value);
-    }, (error) {
-      completer.completeError(error);
-    }, mediaConstraints);
-    return completer.future;
-  }
-
   /**
   * Temporarily exposes _getStats and old getStats as getLegacyStats until Chrome fully supports
   * new getStats API.
@@ -25599,48 +25513,15 @@
 
   void close() native;
 
-  Future _createAnswer(
-      [options_OR_successCallback,
-      RtcPeerConnectionErrorCallback failureCallback,
-      Map mediaConstraints]) {
-    if (options_OR_successCallback == null &&
-        failureCallback == null &&
-        mediaConstraints == null) {
-      return _createAnswer_1();
+  Future<RtcSessionDescription> createAnswer([Map options]) {
+    var options_dict = null;
+    if (options != null) {
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    if ((options_OR_successCallback is Map) &&
-        failureCallback == null &&
-        mediaConstraints == null) {
-      var options_1 =
-          convertDartToNative_Dictionary(options_OR_successCallback);
-      return _createAnswer_2(options_1);
-    }
-    if (failureCallback != null &&
-        (options_OR_successCallback is _RtcSessionDescriptionCallback) &&
-        mediaConstraints == null) {
-      return _createAnswer_3(options_OR_successCallback, failureCallback);
-    }
-    if (mediaConstraints != null &&
-        failureCallback != null &&
-        (options_OR_successCallback is _RtcSessionDescriptionCallback)) {
-      var mediaConstraints_1 = convertDartToNative_Dictionary(mediaConstraints);
-      return _createAnswer_4(
-          options_OR_successCallback, failureCallback, mediaConstraints_1);
-    }
-    throw new ArgumentError("Incorrect number or type of arguments");
+    return promiseToFuture<RtcSessionDescription>(
+        JS("", "#.createAnswer(#)", this, options_dict));
   }
 
-  @JSName('createAnswer')
-  Future _createAnswer_1() native;
-  @JSName('createAnswer')
-  Future _createAnswer_2(options) native;
-  @JSName('createAnswer')
-  Future _createAnswer_3(_RtcSessionDescriptionCallback successCallback,
-      RtcPeerConnectionErrorCallback failureCallback) native;
-  @JSName('createAnswer')
-  Future _createAnswer_4(_RtcSessionDescriptionCallback successCallback,
-      RtcPeerConnectionErrorCallback failureCallback, mediaConstraints) native;
-
   @JSName('createDTMFSender')
   RtcDtmfSender createDtmfSender(MediaStreamTrack track) native;
 
@@ -25657,48 +25538,15 @@
   @JSName('createDataChannel')
   RtcDataChannel _createDataChannel_2(label) native;
 
-  Future _createOffer(
-      [options_OR_successCallback,
-      RtcPeerConnectionErrorCallback failureCallback,
-      Map rtcOfferOptions]) {
-    if (options_OR_successCallback == null &&
-        failureCallback == null &&
-        rtcOfferOptions == null) {
-      return _createOffer_1();
+  Future<RtcSessionDescription> createOffer([Map options]) {
+    var options_dict = null;
+    if (options != null) {
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    if ((options_OR_successCallback is Map) &&
-        failureCallback == null &&
-        rtcOfferOptions == null) {
-      var options_1 =
-          convertDartToNative_Dictionary(options_OR_successCallback);
-      return _createOffer_2(options_1);
-    }
-    if (failureCallback != null &&
-        (options_OR_successCallback is _RtcSessionDescriptionCallback) &&
-        rtcOfferOptions == null) {
-      return _createOffer_3(options_OR_successCallback, failureCallback);
-    }
-    if (rtcOfferOptions != null &&
-        failureCallback != null &&
-        (options_OR_successCallback is _RtcSessionDescriptionCallback)) {
-      var rtcOfferOptions_1 = convertDartToNative_Dictionary(rtcOfferOptions);
-      return _createOffer_4(
-          options_OR_successCallback, failureCallback, rtcOfferOptions_1);
-    }
-    throw new ArgumentError("Incorrect number or type of arguments");
+    return promiseToFuture<RtcSessionDescription>(
+        JS("", "#.createOffer(#)", this, options_dict));
   }
 
-  @JSName('createOffer')
-  Future _createOffer_1() native;
-  @JSName('createOffer')
-  Future _createOffer_2(options) native;
-  @JSName('createOffer')
-  Future _createOffer_3(_RtcSessionDescriptionCallback successCallback,
-      RtcPeerConnectionErrorCallback failureCallback) native;
-  @JSName('createOffer')
-  Future _createOffer_4(_RtcSessionDescriptionCallback successCallback,
-      RtcPeerConnectionErrorCallback failureCallback, rtcOfferOptions) native;
-
   List<MediaStream> getLocalStreams() native;
 
   List<RtcRtpReceiver> getReceivers() native;
@@ -25723,48 +25571,16 @@
   @JSName('setConfiguration')
   void _setConfiguration_1(configuration) native;
 
-  Future _setLocalDescription(Map description, VoidCallback successCallback,
-      [RtcPeerConnectionErrorCallback failureCallback]) {
-    var description_1 = convertDartToNative_Dictionary(description);
-    return _setLocalDescription_1(
-        description_1, successCallback, failureCallback);
-  }
-
-  @JSName('setLocalDescription')
-  Future _setLocalDescription_1(description, VoidCallback successCallback,
-      RtcPeerConnectionErrorCallback failureCallback) native;
-
-  @JSName('setLocalDescription')
   Future setLocalDescription(Map description) {
-    var completer = new Completer();
-    _setLocalDescription(description, () {
-      completer.complete();
-    }, (exception) {
-      completer.completeError(exception);
-    });
-    return completer.future;
+    var description_dict = convertDartToNative_Dictionary(description);
+    return promiseToFuture(
+        JS("", "#.setLocalDescription(#)", this, description_dict));
   }
 
-  Future _setRemoteDescription(Map description, VoidCallback successCallback,
-      [RtcPeerConnectionErrorCallback failureCallback]) {
-    var description_1 = convertDartToNative_Dictionary(description);
-    return _setRemoteDescription_1(
-        description_1, successCallback, failureCallback);
-  }
-
-  @JSName('setRemoteDescription')
-  Future _setRemoteDescription_1(description, VoidCallback successCallback,
-      RtcPeerConnectionErrorCallback failureCallback) native;
-
-  @JSName('setRemoteDescription')
   Future setRemoteDescription(Map description) {
-    var completer = new Completer();
-    _setRemoteDescription(description, () {
-      completer.complete();
-    }, (exception) {
-      completer.completeError(exception);
-    });
-    return completer.future;
+    var description_dict = convertDartToNative_Dictionary(description);
+    return promiseToFuture(
+        JS("", "#.setRemoteDescription(#)", this, description_dict));
   }
 
   /// Stream of `addstream` events handled by this [RtcPeerConnection].
@@ -26489,19 +26305,15 @@
       promiseToFuture<List<ServiceWorkerRegistration>>(
           JS("", "#.getRegistrations()", this));
 
-  Future register(String url, [Map options]) {
+  Future<ServiceWorkerRegistration> register(String url, [Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _register_1(url, options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _register_2(url);
+    return promiseToFuture<ServiceWorkerRegistration>(
+        JS("", "#.register(#, #)", this, url, options_dict));
   }
 
-  @JSName('register')
-  Future _register_1(url, options) native;
-  @JSName('register')
-  Future _register_2(url) native;
-
   Stream<MessageEvent> get onMessage => messageEvent.forTarget(this);
 }
 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
@@ -26546,7 +26358,12 @@
   Stream<Event> get onInstall => installEvent.forTarget(this);
 
   Stream<MessageEvent> get onMessage => messageEvent.forTarget(this);
+
+  static ServiceWorkerGlobalScope get instance {
+    return _workerSelf as ServiceWorkerGlobalScope;
+  }
 }
+
 // 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.
@@ -26576,32 +26393,24 @@
 
   final ServiceWorker waiting;
 
-  Future getNotifications([Map filter]) {
+  Future<List<Notification>> getNotifications([Map filter]) {
+    var filter_dict = null;
     if (filter != null) {
-      var filter_1 = convertDartToNative_Dictionary(filter);
-      return _getNotifications_1(filter_1);
+      filter_dict = convertDartToNative_Dictionary(filter);
     }
-    return _getNotifications_2();
+    return promiseToFuture<List<Notification>>(
+        JS("", "#.getNotifications(#)", this, filter_dict));
   }
 
-  @JSName('getNotifications')
-  Future _getNotifications_1(filter) native;
-  @JSName('getNotifications')
-  Future _getNotifications_2() native;
-
   Future showNotification(String title, [Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _showNotification_1(title, options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _showNotification_2(title);
+    return promiseToFuture(
+        JS("", "#.showNotification(#, #)", this, title, options_dict));
   }
 
-  @JSName('showNotification')
-  Future _showNotification_1(title, options) native;
-  @JSName('showNotification')
-  Future _showNotification_2(title) native;
-
   Future<bool> unregister() =>
       promiseToFuture<bool>(JS("", "#.unregister()", this));
 
@@ -26813,7 +26622,12 @@
 
   /// Stream of `connect` events handled by this [SharedWorkerGlobalScope].
   Stream<Event> get onConnect => connectEvent.forTarget(this);
+
+  static SharedWorkerGlobalScope get instance {
+    return _workerSelf as SharedWorkerGlobalScope;
+  }
 }
+
 // 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.
@@ -29533,30 +29347,20 @@
   final bool isExternal;
 
   Future requestSession([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _requestSession_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _requestSession_2();
+    return promiseToFuture(JS("", "#.requestSession(#)", this, options_dict));
   }
 
-  @JSName('requestSession')
-  Future _requestSession_1(options) native;
-  @JSName('requestSession')
-  Future _requestSession_2() native;
-
   Future supportsSession([Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _supportsSession_1(options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _supportsSession_2();
+    return promiseToFuture(JS("", "#.supportsSession(#)", this, options_dict));
   }
-
-  @JSName('supportsSession')
-  Future _supportsSession_1(options) native;
-  @JSName('supportsSession')
-  Future _supportsSession_2() native;
 }
 // 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
@@ -29775,18 +29579,14 @@
   Future end() => promiseToFuture(JS("", "#.end()", this));
 
   Future requestFrameOfReference(String type, [Map options]) {
+    var options_dict = null;
     if (options != null) {
-      var options_1 = convertDartToNative_Dictionary(options);
-      return _requestFrameOfReference_1(type, options_1);
+      options_dict = convertDartToNative_Dictionary(options);
     }
-    return _requestFrameOfReference_2(type);
+    return promiseToFuture(
+        JS("", "#.requestFrameOfReference(#, #)", this, type, options_dict));
   }
 
-  @JSName('requestFrameOfReference')
-  Future _requestFrameOfReference_1(type, options) native;
-  @JSName('requestFrameOfReference')
-  Future _requestFrameOfReference_2(type) native;
-
   Stream<Event> get onBlur => blurEvent.forTarget(this);
 
   Stream<Event> get onFocus => focusEvent.forTarget(this);
@@ -31347,18 +31147,13 @@
   bool confirm([String message]) native;
 
   Future fetch(/*RequestInfo*/ input, [Map init]) {
+    var init_dict = null;
     if (init != null) {
-      var init_1 = convertDartToNative_Dictionary(init);
-      return _fetch_1(input, init_1);
+      init_dict = convertDartToNative_Dictionary(init);
     }
-    return _fetch_2(input);
+    return promiseToFuture(JS("", "#.fetch(#, #)", this, input, init_dict));
   }
 
-  @JSName('fetch')
-  Future _fetch_1(input, init) native;
-  @JSName('fetch')
-  Future _fetch_2(input) native;
-
   /**
    * Finds text in this window.
    *
@@ -32399,18 +32194,13 @@
   final WorkerGlobalScope self;
 
   Future fetch(/*RequestInfo*/ input, [Map init]) {
+    var init_dict = null;
     if (init != null) {
-      var init_1 = convertDartToNative_Dictionary(init);
-      return _fetch_1(input, init_1);
+      init_dict = convertDartToNative_Dictionary(init);
     }
-    return _fetch_2(input);
+    return promiseToFuture(JS("", "#.fetch(#, #)", this, input, init_dict));
   }
 
-  @JSName('fetch')
-  Future _fetch_1(input, init) native;
-  @JSName('fetch')
-  Future _fetch_2(input) native;
-
   void importScripts(String urls) native;
 
   // From WindowBase64
@@ -32443,7 +32233,10 @@
 
   /// Stream of `error` events handled by this [WorkerGlobalScope].
   Stream<Event> get onError => errorEvent.forTarget(this);
+
+  static WorkerGlobalScope get instance => _workerSelf;
 }
+
 // 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.
@@ -34393,7 +34186,7 @@
   /**
    * Converts a string name with hyphens into an identifier, by removing hyphens
    * and capitalizing the following letter. Optionally [startUppercase] to
-   * captialize the first letter.
+   * capitalize the first letter.
    */
   String _toCamelCase(String hyphenedName, {bool startUppercase: false}) {
     var segments = hyphenedName.split('-');
@@ -38666,8 +38459,8 @@
   // Fields.
   HistoryBase get history =>
       _HistoryCrossFrame._createSafe(JS('HistoryBase', '#.history', _window));
-  LocationBase get location => _LocationCrossFrame
-      ._createSafe(JS('LocationBase', '#.location', _window));
+  LocationBase get location => _LocationCrossFrame._createSafe(
+      JS('LocationBase', '#.location', _window));
 
   // TODO(vsm): Add frames to navigate subframes.  See 2312.
 
diff --git a/sdk/lib/io/socket.dart b/sdk/lib/io/socket.dart
index 1d8a263..b66e42b 100644
--- a/sdk/lib/io/socket.dart
+++ b/sdk/lib/io/socket.dart
@@ -757,7 +757,7 @@
    * port.
    */
   external static Future<RawDatagramSocket> bind(host, int port,
-      {bool reuseAddress: true});
+      {bool reuseAddress: true, bool reusePort: false, int ttl: 1});
 
   /**
    * Returns the port used by this socket.
diff --git a/tests/co19/.gitignore b/tests/co19/.gitignore
deleted file mode 100644
index a57582c..0000000
--- a/tests/co19/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/src
diff --git a/tests/co19/co19-analyzer.status b/tests/co19/co19-analyzer.status
deleted file mode 100644
index 5ff43c1..0000000
--- a/tests/co19/co19-analyzer.status
+++ /dev/null
@@ -1,6 +0,0 @@
-# Copyright (c) 2013, 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.
-
-[ $compiler == dart2analyzer ]
-*: Skip
diff --git a/tests/co19/co19-co19.status b/tests/co19/co19-co19.status
deleted file mode 100644
index e6407d2..0000000
--- a/tests/co19/co19-co19.status
+++ /dev/null
@@ -1,989 +0,0 @@
-# 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.
-# This file contains the tests that have been identified as broken and
-# have been filed on the co19 issue tracker at
-#    https://code.google.com/p/co19/issues/list (read-only).
-#    https://github.com/dart-lang/co19/issues .
-
-# In order to qualify here these tests need to fail both on the VM and dart2js.
-
-# Tests that produce compile-time errors even in legacy mode.
-[ $runtime == none ]
-Language/Expressions/Bitwise_Expressions/syntax_t01/02: Skip
-Language/Variables/constant_initialization_t03: CompileTimeError # Uppercase constants removed
-Language/Variables/constant_variable_t09: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_GE_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_GE_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_GT_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_GT_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LE_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LE_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LT_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LT_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_addition_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_addition_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_division_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_division_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_multiplication_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_multiplication_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_subtraction_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_truncating_division_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_truncating_division_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/isolate/SendPort/send_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/isolate/SendPort/send_A01_t02: CompileTimeError # Uppercase constants removed
-LibTest/isolate/SendPort/send_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/isolate/SendPort/send_A01_t04: CompileTimeError # Uppercase constants removed
-LibTest/math/MutableRectangle/operator_equality_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/MutableRectangle/operator_equality_A04_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Point/operator_equality_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Point/operator_equality_A04_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Rectangle/operator_equality_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Rectangle/operator_equality_A04_t01: CompileTimeError # Uppercase constants removed
-
-# Tests that fail either at compile-time or at runtime.
-[ $runtime != none ]
-Language/Expressions/Bitwise_Expressions/syntax_t01/02: Skip
-Language/Expressions/Numbers/static_type_of_double_t01: RuntimeError # Uppercase constants removed
-Language/Expressions/Object_Identity/constant_objects_t01: RuntimeError # Uppercase constants removed
-Language/Expressions/Object_Identity/double_t02: RuntimeError # Uppercase constants removed
-Language/Expressions/Type_Cast/syntax_t01: RuntimeError # Uppercase constants removed
-Language/Statements/Assert/syntax_t04: Pass, Fail # assert now has an optional second parameter.
-Language/Variables/constant_initialization_t03: CompileTimeError # Uppercase constants removed
-Language/Variables/constant_variable_t09: CompileTimeError # Uppercase constants removed
-LibTest/async/Future/Future.delayed_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/async/Zone/ROOT_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/async/Zone/bindBinaryCallback_A01_t02: Fail # co19 issue 126
-LibTest/async/Zone/bindCallback_A01_t02: Fail # co19 issue 126
-LibTest/async/Zone/bindUnaryCallback_A01_t02: Fail # co19 issue 126
-LibTest/async/Zone/parent_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/DateTime/month_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/DateTime/weekday_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/HOURS_PER_DAY_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/MILLISECONDS_PER_DAY_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/MILLISECONDS_PER_HOUR_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/MILLISECONDS_PER_MINUTE_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/MILLISECONDS_PER_SECOND_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/MINUTES_PER_DAY_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/MINUTES_PER_HOUR_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/SECONDS_PER_DAY_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/SECONDS_PER_HOUR_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/SECONDS_PER_MINUTE_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Duration/static_properties_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/RegExp/firstMatch_A01_t01: Fail # co19 issue 742
-LibTest/core/Uri/Uri_A06_t02: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/Uri_A06_t03: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/decodeComponent_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/decodeFull_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/decodeQueryComponent_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/encodeComponent_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/encodeFull_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/encodeQueryComponent_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/Uri/encodeQueryComponent_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/INFINITY_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/INFINITY_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/INFINITY_A01_t03: RuntimeError # Uppercase constants removed
-LibTest/core/double/INFINITY_A01_t04: RuntimeError # Uppercase constants removed
-LibTest/core/double/NAN_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/NAN_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/NAN_A01_t03: RuntimeError # Uppercase constants removed
-LibTest/core/double/NAN_A01_t04: RuntimeError # Uppercase constants removed
-LibTest/core/double/NEGATIVE_INFINITY_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/NEGATIVE_INFINITY_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/NEGATIVE_INFINITY_A01_t03: RuntimeError # Uppercase constants removed
-LibTest/core/double/NEGATIVE_INFINITY_A01_t04: RuntimeError # Uppercase constants removed
-LibTest/core/double/ceilToDouble_A02_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/ceil_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/ceil_A02_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/floorToDouble_A02_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/floor_A02_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/operator_GE_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_GE_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_GT_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_GT_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LE_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LE_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LT_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_LT_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_addition_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_addition_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_division_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_division_A01_t09: RuntimeError # Uppercase constants removed
-LibTest/core/double/operator_division_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_multiplication_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_multiplication_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_remainder_A01_t04: RuntimeError # Uppercase constants removed
-LibTest/core/double/operator_subtraction_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_truncating_division_A01_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_truncating_division_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/core/double/operator_unary_minus_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/operator_unary_minus_A01_t03: RuntimeError # Uppercase constants removed
-LibTest/core/double/parse_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/roundToDouble_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/roundToDouble_A02_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/round_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/round_A02_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/toStringAsExponential_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/toStringAsExponential_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/double/toStringAsPrecision_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/core/double/toStringAsPrecision_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/int/compareTo_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/core/int/operator_division_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/isolate/RawReceivePort/handler_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/isolate/SendPort/send_A01_t01: CompileTimeError, Timeout # Uppercase constants removed
-LibTest/isolate/SendPort/send_A01_t02: CompileTimeError # Uppercase constants removed
-LibTest/isolate/SendPort/send_A01_t03: CompileTimeError # Uppercase constants removed
-LibTest/math/MutableRectangle/operator_equality_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/MutableRectangle/operator_equality_A03_t01: RuntimeError # Uppercase constants removed
-LibTest/math/MutableRectangle/operator_equality_A04_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Point/Point_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/math/Point/magnitude_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/math/Point/operator_equality_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Point/operator_equality_A03_t01: RuntimeError # Uppercase constants removed
-LibTest/math/Point/operator_equality_A04_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Rectangle/operator_equality_A02_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/Rectangle/operator_equality_A03_t01: RuntimeError # Uppercase constants removed
-LibTest/math/Rectangle/operator_equality_A04_t01: CompileTimeError # Uppercase constants removed
-LibTest/math/acos_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/asin_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/atan2_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/math/atan2_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/atan2_A03_t01: RuntimeError # Uppercase constants removed
-LibTest/math/atan2_A04_t01: RuntimeError # Uppercase constants removed
-LibTest/math/atan2_A05_t01: RuntimeError # Uppercase constants removed
-LibTest/math/atan_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/math/atan_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/cos_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/exp_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/math/exp_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/log_A03_t01: RuntimeError # Uppercase constants removed
-LibTest/math/max_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/math/max_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/min_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/math/min_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A03_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A04_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A05_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A07_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A08_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A09_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A11_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A12_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A13_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A14_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A15_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A16_t01: RuntimeError # Uppercase constants removed
-LibTest/math/pow_A17_t01: RuntimeError # Uppercase constants removed
-LibTest/math/sin_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/math/sqrt_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/math/sqrt_A02_t02: RuntimeError # Uppercase constants removed
-LibTest/math/sqrt_A02_t03: RuntimeError # Uppercase constants removed
-LibTest/math/tan_A02_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/ByteData.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/ByteData/buffer_A01_t01: Fail # co19 r736 bug - sent comment.
-LibTest/typed_data/ByteData/getFloat32_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/getFloat64_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/getInt16_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/getInt32_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/getInt64_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/getInt8_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/ByteData/getUint16_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/getUint32_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/getUint8_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/ByteData/setFloat32_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/setFloat64_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/setInt16_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/setInt32_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/setInt64_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/setInt8_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/ByteData/setUint16_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/setUint32_A01_t01: RuntimeError # Uppercase constants removed
-LibTest/typed_data/ByteData/setUint8_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32List/Float32List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32List/Float32List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32List/Float32List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Float32List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Float32List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32x4List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32x4List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float32x4List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float64List/Float64List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float64List/Float64List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float64List/Float64List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float64List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float64List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Float64List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Float64List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Float64List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int16List/Int16List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int16List/Int16List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int16List/Int16List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int16List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int16List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int16List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int16List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int16List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int32List/Int32List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int32List/Int32List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int32List/Int32List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int32List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int32List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int32List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int32List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int32List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t02: RuntimeError # Uppercase constants removed
-LibTest/typed_data/Int64List/Int64List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int64List/Int64List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int64List/Int64List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int64List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int64List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int64List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int64List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int64List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int8List/Int8List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Int8List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int8List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Int8List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint16List/Uint16List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint16List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint16List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint16List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint16List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint16List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint32List/Uint32List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint32List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint32List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint32List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint32List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint32List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint64List/Uint64List.view_A06_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint64List/buffer_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint64List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint64List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint64List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint64List/offsetInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint8ClampedList/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint8ClampedList/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint8List/Uint8List.view_A01_t02: RuntimeError # Uppercase constants removed.
-LibTest/typed_data/Uint8List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint8List/last_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Uint8List/lengthInBytes_A01_t01: RuntimeError # Uppercase constants removed.
-Utils/tests/Expect/approxEquals_A01_t01: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/approxEquals_A01_t02: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/approxEquals_A01_t03: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/approxEquals_A01_t04: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/approxEquals_A02_t01: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/approxEquals_A04_t01: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/equals_A01_t04: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/identical_A01_t01: RuntimeError # Uppercase constants removed
-Utils/tests/Expect/setEquals_A01_t02: RuntimeError # Uppercase constants removed
-
-# Tests that fail everywhere, including the analyzer.
-[ $strong ]
-Language/Expressions/Additive_Expressions/syntax_t01/07: CompileTimeError
-Language/Expressions/Await_Expressions/evaluation_throws_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/evaluation_throws_t02: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/evaluation_throws_t03: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/evaluation_throws_t04: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/evaluation_throws_t06: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/evaluation_throws_t07: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/execution_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/execution_t02: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/execution_t03: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/execution_t04: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/execution_t05: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/execution_t06: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/no_static_warning_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/static_type_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/static_type_t03: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/syntax_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/syntax_t02: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/syntax_t10: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/value_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/value_t02: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/value_t03: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Await_Expressions/value_t04: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t03: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t04: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t05: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t06: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t07: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t08: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t09: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_generator_invokation_t10: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_invokation_t03: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_invokation_t04: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_invokation_t05: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Function_Invocation/async_invokation_t06: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Numbers/static_type_of_double_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Object_Identity/constant_objects_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Object_Identity/double_t02: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Spawning_an_Isolate/new_isolate_t01: CompileTimeError # Uses Dart 1 constants
-Language/Expressions/Type_Cast/syntax_t01: CompileTimeError # Uses Dart 1 constants
-Language/Functions/function_body_short_syntax_t02: CompileTimeError # Uses Dart 1 constants
-Language/Functions/implicit_return_t02: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loop_t01: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loop_t02: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t01: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t02: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t03: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t04: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t05: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t06: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t07: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t08: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t09: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Break/async_loops_t10: CompileTimeError # Uses Dart 1 constants
-Language/Statements/For/Asynchronous_For_in/enclosing_loop_t01: CompileTimeError # Uses Dart 1 constants
-Language/Statements/For/Asynchronous_For_in/execution_t04: CompileTimeError # Uses Dart 1 constants
-Language/Statements/For/syntax_t18: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Rethrow/execution_t01: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Rethrow/execution_t02: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Rethrow/execution_t03: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Rethrow/execution_t04: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/runtime_type_t05: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/runtime_type_t06: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/runtime_type_t07: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t06: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t07: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t08: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t09: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t10: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t11: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t12: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Return/syntax_t13: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t01: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t02: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t03: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t04: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t05: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t06: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t07: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t08: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t01: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t02: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/execution_sync_t03: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/syntax_t04: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/syntax_t05: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield/syntax_t06: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t02: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t03: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t04: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t05: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t06: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t07: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t08: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t09: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t10: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t11: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t04: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t05: CompileTimeError # Uses Dart 1 constants
-Language/Statements/Yield_and_Yield_Each/Yield_Each/syntax_t06: CompileTimeError # Uses Dart 1 constants
-Language/Variables/constant_initialization_t03: CompileTimeError # Uses Dart 1 constants
-Language/Variables/constant_variable_t09: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/completeError_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/completeError_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/completeError_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/complete_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/complete_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/complete_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/complete_A01_t05: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Completer/complete_A01_t06: CompileTimeError # Uses Dart 1 constants
-LibTest/async/DeferredLibrary/DeferredLibrary_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.delayed_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.delayed_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.delayed_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.delayed_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.error_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.error_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.microtask_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.microtask_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.microtask_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.sync_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.sync_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.sync_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.value_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future.value_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/Future_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/any_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/any_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/any_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/any_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/asStream_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/asStream_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/asStream_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/asStream_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/catchError_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/catchError_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/catchError_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/catchError_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/catchError_A03_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/catchError_A03_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/doWhile_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/doWhile_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A05_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A05_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/then_A05_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/timeout_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/timeout_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/timeout_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/timeout_A02_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/timeout_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A01_t05: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A01_t06: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A01_t07: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/wait_A04_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/whenComplete_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/whenComplete_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/whenComplete_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/whenComplete_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Future/whenComplete_A04_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/Stream.empty_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/Stream.eventTransformed_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/Stream.eventTransformed_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/Stream.fromIterable_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/Stream.periodic_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/Stream.periodic_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/any_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/any_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/any_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A03_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A04_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asBroadcastStream_A04_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asyncExpand_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asyncExpand_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asyncMap_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asyncMap_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/asyncMap_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/contains_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/contains_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/contains_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/distinct_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/drain_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/drain_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/drain_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/elementAt_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/elementAt_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/elementAt_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/elementAt_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/every_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/every_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/expand_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/firstWhere_A01_t01: CompileTimeError # co19 issue 137
-LibTest/async/Stream/firstWhere_A02_t01: CompileTimeError # co19 issue 137
-LibTest/async/Stream/firstWhere_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/firstWhere_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/first_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/first_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/first_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/first_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/fold_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/handleError_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/handleError_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/handleError_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/handleError_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/handleError_A04_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/handleError_A04_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/isEmpty_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/join_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/join_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/join_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/join_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/lastWhere_A01_t01: CompileTimeError # co19 issue 137
-LibTest/async/Stream/lastWhere_A02_t01: CompileTimeError # co19 issue 137
-LibTest/async/Stream/lastWhere_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/lastWhere_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/last_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/last_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/last_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/length_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A05_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A05_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A05_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/listen_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/map_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/reduce_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/reduce_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/singleWhere_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/single_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/single_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/single_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/skipWhile_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/skip_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/takeWhile_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/take_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/take_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/take_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/timeout_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/timeout_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/timeout_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/toList_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Stream/transform_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A05_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A07_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A07_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController.broadcast_A08_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController_A05_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/StreamController_A06_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addError_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addError_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addError_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addStream_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addStream_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addStream_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addStream_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/addStream_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/add_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/close_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamController/done_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamIterator/cancel_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamIterator/current_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamIterator/current_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamIterator/moveNext_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamIterator/moveNext_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/addError_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/addStream_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/addStream_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/addStream_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/addStream_A01_t05: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/add_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/close_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamSink/done_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/StreamTransformer_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/StreamTransformer_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/StreamTransformer_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/StreamTransformer_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/StreamTransformer/bind_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/Timer.periodic_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/Timer.periodic_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/Timer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/Timer_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/cancel_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/isActive_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/isActive_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/run_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Timer/run_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/createPeriodicTimer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/createTimer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/current_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/handleUncaughtError_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/inSameErrorZone_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/inSameErrorZone_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/inSameErrorZone_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/inSameErrorZone_A01_t05: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/parent_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/scheduleMicrotask_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/async/Zone/scheduleMicrotask_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/DateTime/month_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/DateTime/weekday_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/HOURS_PER_DAY_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/MILLISECONDS_PER_DAY_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/MILLISECONDS_PER_HOUR_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/MILLISECONDS_PER_MINUTE_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/MILLISECONDS_PER_SECOND_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/MINUTES_PER_DAY_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/MINUTES_PER_HOUR_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/SECONDS_PER_DAY_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/SECONDS_PER_HOUR_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/SECONDS_PER_MINUTE_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Duration/static_properties_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsedInMs_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsedInUs_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsedTicks_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsedTicks_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsedTicks_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsed_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsed_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/elapsed_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/start_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/start_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/start_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Stopwatch/stop_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/Uri_A06_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/Uri_A06_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/decodeComponent_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/decodeFull_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/decodeQueryComponent_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/encodeComponent_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/encodeFull_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/encodeQueryComponent_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/Uri/encodeQueryComponent_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/INFINITY_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/INFINITY_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/INFINITY_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/INFINITY_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NAN_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NAN_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NAN_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NAN_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NEGATIVE_INFINITY_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NEGATIVE_INFINITY_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NEGATIVE_INFINITY_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/NEGATIVE_INFINITY_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/ceilToDouble_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/ceil_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/ceil_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/floorToDouble_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/floor_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_addition_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_division_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_division_A01_t09: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_multiplication_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_subtraction_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_truncating_division_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_unary_minus_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/operator_unary_minus_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/parse_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/roundToDouble_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/roundToDouble_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/round_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/round_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/toStringAsExponential_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/toStringAsExponential_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/toStringAsPrecision_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/core/double/toStringAsPrecision_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/int/compareTo_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/core/int/operator_division_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A01_t06: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A01_t07: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A02_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A02_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawnUri_A02_t05: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A01_t05: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A01_t06: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A02_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A03_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A03_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A05_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/Isolate/spawn_A05_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/RawReceivePort/RawReceivePort_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/RawReceivePort/RawReceivePort_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/RawReceivePort/close_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/RawReceivePort/handler_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/RawReceivePort/sendPort_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/any_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A03_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A04_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/asBroadcastStream_A04_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/close_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/close_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/contains_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/distinct_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/drain_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/drain_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/elementAt_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/elementAt_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/every_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/expand_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/firstWhere_A01_t01: CompileTimeError # co19 issue 137
-LibTest/isolate/ReceivePort/firstWhere_A02_t01: CompileTimeError # co19 issue 137
-LibTest/isolate/ReceivePort/firstWhere_A03_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/first_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/first_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/first_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/fold_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/isEmpty_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/join_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/join_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/lastWhere_A01_t01: CompileTimeError # co19 issue 137
-LibTest/isolate/ReceivePort/lastWhere_A02_t01: CompileTimeError # co19 issue 137
-LibTest/isolate/ReceivePort/lastWhere_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/last_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/last_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/length_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/listen_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/map_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/pipe_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/reduce_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/reduce_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/singleWhere_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/single_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/single_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/skipWhile_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/skip_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/takeWhile_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/take_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/take_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/take_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/toList_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/ReceivePort/transform_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/SendPort/send_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/SendPort/send_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/SendPort/send_A01_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/SendPort/send_A01_t04: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/SendPort/send_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/isolate/SendPort/send_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/math/MutableRectangle/operator_equality_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/MutableRectangle/operator_equality_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/MutableRectangle/operator_equality_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Point/Point_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Point/magnitude_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Point/operator_equality_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Point/operator_equality_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Point/operator_equality_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Rectangle/operator_equality_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Rectangle/operator_equality_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/Rectangle/operator_equality_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/acos_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/asin_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/atan2_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/math/atan2_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/atan2_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/atan2_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/atan2_A05_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/atan_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/math/atan_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/cos_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/exp_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/math/exp_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/log_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A03_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A04_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A05_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A07_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A08_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A09_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A11_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A12_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A13_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A14_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A15_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A16_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/pow_A17_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/sin_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/math/sqrt_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/math/sqrt_A02_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/math/sqrt_A02_t03: CompileTimeError # Uses Dart 1 constants
-LibTest/math/tan_A02_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getFloat32_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getFloat64_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getInt16_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getInt32_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getInt64_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getInt8_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getUint16_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getUint32_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/getUint8_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setFloat32_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setFloat64_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setInt16_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setInt32_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setInt64_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setInt8_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setUint16_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setUint32_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/ByteData/setUint8_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32List/Float32List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32List/Float32List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32List/Float32List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32x4List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32x4List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float32x4List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float64List/Float64List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float64List/Float64List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float64List/Float64List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float64List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float64List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Float64List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int16List/Int16List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int16List/Int16List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int16List/Int16List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int16List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int16List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int16List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int32List/Int32List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int32List/Int32List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int32List/Int32List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int32List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int32List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int32List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int32x4/Int32x4.fromFloat32x4Bits_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int64List/Int64List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int64List/Int64List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int64List/Int64List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int64List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int64List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int64List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int8List/Int8List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Int8List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint16List/Uint16List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint16List/Uint16List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint16List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint16List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint16List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint32List/Uint32List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint32List/Uint32List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint32List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint32List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint32List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint64List/Uint64List.view_A06_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint64List/buffer_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint64List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint64List/offsetInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint8List/Uint8List.view_A01_t02: CompileTimeError # Uses Dart 1 constants
-LibTest/typed_data/Uint8List/lengthInBytes_A01_t01: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/approxEquals_A01_t01: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/approxEquals_A01_t02: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/approxEquals_A01_t03: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/approxEquals_A01_t04: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/approxEquals_A02_t01: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/approxEquals_A04_t01: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/equals_A01_t04: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/identical_A01_t01: CompileTimeError # Uses Dart 1 constants
-Utils/tests/Expect/setEquals_A01_t02: CompileTimeError # Uses Dart 1 constants
-
-[ !$strong ]
-Language/Libraries_and_Scripts/Exports/reexport_t01: MissingCompileTimeError
-Language/Libraries_and_Scripts/Exports/reexport_t02: MissingCompileTimeError
-LibTest/async/Stream/Stream.fromIterable_A02_t01: RuntimeError # Assumes no close after error.
-LibTest/async/Stream/firstWhere_A01_t01: RuntimeError # co19 issue 137
-LibTest/async/Stream/firstWhere_A02_t01: RuntimeError # co19 issue 137
-LibTest/async/Stream/lastWhere_A01_t01: RuntimeError # co19 issue 137
-LibTest/async/Stream/lastWhere_A02_t01: RuntimeError # co19 issue 137
-LibTest/isolate/ReceivePort/firstWhere_A01_t01: RuntimeError # co19 issue 137
-LibTest/isolate/ReceivePort/firstWhere_A02_t01: RuntimeError # co19 issue 137
-LibTest/isolate/ReceivePort/lastWhere_A01_t01: RuntimeError # co19 issue 137
-LibTest/isolate/ReceivePort/lastWhere_A02_t01: RuntimeError # co19 issue 137
-
-# Tests that fail on every runtime, but not on the analyzer.
-[ $compiler != dart2analyzer && $compiler != fasta ]
-Language/Classes/same_name_type_variable_t04: Pass, MissingCompileTimeError, Fail # Issue 14513,25525
-Language/Classes/same_name_type_variable_t07: Pass, MissingCompileTimeError, Fail # Issue 14513,25525
-Language/Expressions/Instance_Creation/Const/abstract_class_t01: Pass, Fail # co19 issue 66
-Language/Expressions/Instance_Creation/Const/abstract_class_t03: Pass, Fail # co19 issue 66
-LibTest/async/Stream/asBroadcastStream_A02_t01: Fail # co19 issue 687
-LibTest/async/StreamController/addStream_A03_t01: RuntimeError # Issue <TODO>
-LibTest/async/StreamSink/addStream_A01_t02: RuntimeError # Issue <TODO>
-LibTest/async/Zone/runBinaryGuarded_A01_t01: Fail # co19 issue 126
-LibTest/async/Zone/runGuarded_A01_t01: Fail # co19 issue 126
-LibTest/async/Zone/runUnaryGuarded_A01_t01: Fail # co19 issue 126
-LibTest/core/Expando/Expando_A03_t01: RuntimeError # Issue 17735
-LibTest/core/Expando/Expando_A03_t03: RuntimeError # Issue 17735
-LibTest/core/Expando/Expando_A03_t04: RuntimeError # Issue 17735
-LibTest/core/Expando/Expando_A03_t05: RuntimeError # Issue 17735
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterEscape_A06_t02: RuntimeError # co19 issue 741
-LibTest/core/RegExp/Pattern_semantics/firstMatch_DecimalEscape_A01_t02: Fail # co19 issue 740
-LibTest/core/Symbol/Symbol_A01_t04: RuntimeError # Issue 25804
-LibTest/isolate/IsolateStream/any_A01_t01: Fail # Co19 issue 639 (Fixed in r674)
-LibTest/isolate/IsolateStream/asBroadcastStream_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/contains_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/first_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/first_A02_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/first_A02_t02: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/isBroadcast_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/isBroadcast_A01_t02: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/isEmpty_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/last_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/last_A02_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/length_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/single_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/IsolateStream/single_A02_t01: Fail # Co19 issue 639
-LibTest/isolate/ReceivePort/asBroadcastStream_A02_t01: Fail # co19 issue 687
-LibTest/isolate/ReceivePort/receive_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/ReceivePort/receive_A01_t03: Fail # Co19 issue 639
-LibTest/isolate/ReceivePort/sendPort_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/SendPort/call_A01_t01: Fail # Co19 issue 639
-LibTest/isolate/SendPort/send_A02_t02: Skip # co19 issue 493 (not fixed in r672)
-LibTest/isolate/SendPort/send_A02_t03: Skip # co19 issue 495 (not fixed in r672)
-LibTest/isolate/SendPort/send_A02_t04: Fail # Co19 issue 639
-LibTest/isolate/SendPort/send_A02_t05: Fail # Co19 issue 639
-LibTest/isolate/SendPort/send_A02_t06: Fail # Co19 issue 639
-LibTest/isolate/SendPort/send_A03_t01: Fail # Co19 issue 639
-LibTest/isolate/SendPort/send_A03_t02: Fail # Co19 issue 639
-LibTest/math/acos_A01_t01: Pass, Fail, OK # Issue 26261
-LibTest/math/asin_A01_t01: Pass, Fail, OK # Issue 26261
-LibTest/math/atan_A01_t01: Pass, Fail, OK # Issue 26261
-LibTest/math/cos_A01_t01: Pass, Fail, OK # Issue 26261
-LibTest/math/log_A01_t01: Pass, Fail, OK # Issue 26261
-LibTest/math/tan_A01_t01: Pass, Fail, OK # Issue 26261
-
-[ $compiler != fasta && !$checked && !$strong ]
-Language/Expressions/Additive_Expressions/syntax_t01/07: MissingRuntimeError # Unchecked mode allows List + anything-with-a-zero-length
-
-[ $compiler != fasta && $strong ]
-Language/Expressions/Additive_Expressions/syntax_t01/07: CompileTimeError
-LibTest/typed_data/Float32x4List/first_A01_t02: CompileTimeError # co19 issue 130 + type error
-LibTest/typed_data/Float32x4List/last_A01_t02: CompileTimeError # co19 issue 130 + type error
-
-[ $runtime != none && !$checked ]
-LibTest/async/Future/catchError_A03_t05: RuntimeError
-
-[ $runtime != none && !$strong ]
-LibTest/typed_data/Float32x4List/first_A01_t02: RuntimeError # co19 issue 130
-LibTest/typed_data/Float32x4List/last_A01_t02: RuntimeError # co19 issue 130
diff --git a/tests/co19/co19-dart2js.status b/tests/co19/co19-dart2js.status
deleted file mode 100644
index 9ef419e..0000000
--- a/tests/co19/co19-dart2js.status
+++ /dev/null
@@ -1,4533 +0,0 @@
-# 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.
-
-[ $compiler == dart2js ]
-Language/Classes/Constructors/Generative_Constructors/execution_of_a_superinitializer_t01: RuntimeError, OK # co19 issue 258
-Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t02: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t04: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t05: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t06: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t07: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t12: Crash
-Language/Classes/Constructors/Generative_Constructors/initializing_formals_execution_t02: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t03: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t04: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t05: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t07: MissingCompileTimeError
-Language/Classes/Superinterfaces/more_than_once_t01: MissingCompileTimeError
-Language/Classes/Superinterfaces/superclass_as_superinterface_t01: MissingCompileTimeError
-Language/Classes/definition_t24: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t01: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t02: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t03: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t04: MissingCompileTimeError
-Language/Expressions/Assignment/expression_assignment_t07: RuntimeError
-Language/Expressions/Assignment/no_such_method_t01: RuntimeError
-Language/Expressions/Assignment/no_such_method_t02: RuntimeError
-Language/Expressions/Assignment/no_such_method_t03: RuntimeError
-Language/Expressions/Assignment/no_such_method_t04: RuntimeError
-Language/Expressions/Assignment/no_such_method_t05: RuntimeError
-Language/Expressions/Assignment/no_such_method_t06: RuntimeError
-Language/Expressions/Assignment/no_such_method_t07: RuntimeError
-Language/Expressions/Assignment/no_such_method_t08: RuntimeError
-Language/Expressions/Assignment/no_such_method_t09: RuntimeError
-Language/Expressions/Assignment/super_assignment_failed_t05: RuntimeError # Issue 25671
-Language/Expressions/Assignment/super_assignment_value_t02: RuntimeError # Please triage this failure
-Language/Expressions/Await_Expressions/evaluation_throws_t03: RuntimeError # Please triage this failure
-Language/Expressions/Await_Expressions/evaluation_throws_t04: RuntimeError # Please triage this failure
-Language/Expressions/Await_Expressions/evaluation_throws_t06: RuntimeError # Please triage this failure
-Language/Expressions/Await_Expressions/evaluation_throws_t07: RuntimeError # Please triage this failure
-Language/Expressions/Constants/bitwise_operators_t05: MissingCompileTimeError
-Language/Expressions/Constants/depending_on_itself_t03: Crash
-Language/Expressions/Constants/exception_t02: Pass
-Language/Expressions/Constants/literal_number_t01: CompileTimeError # Larger than 64 bit int
-Language/Expressions/Constants/logical_expression_t04: MissingCompileTimeError
-Language/Expressions/Constants/math_operators_t01: CompileTimeError # Larger than 64 bit int
-Language/Expressions/Constants/math_operators_t06: CompileTimeError # Larger than 64 bit int
-Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t04: Crash
-Language/Expressions/Function_Invocation/async_cleanup_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Expressions/Function_Invocation/async_cleanup_t03: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Expressions/Function_Invocation/async_cleanup_t05: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Expressions/Function_Invocation/async_cleanup_t06: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Expressions/Function_Invocation/async_cleanup_t08: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Expressions/Function_Invocation/async_generator_invokation_t08: Skip # Issue 25967
-Language/Expressions/Function_Invocation/async_generator_invokation_t10: Skip # Issue 25967
-Language/Expressions/Function_Invocation/async_invokation_t02: RuntimeError # sync-async is on by default.
-Language/Expressions/Function_Invocation/async_invokation_t04: RuntimeError, Pass # co19 issue 57
-Language/Expressions/Instance_Creation/New/evaluation_t19: RuntimeError # Please triage this failure
-Language/Expressions/Instance_Creation/New/evaluation_t20: RuntimeError # Please triage this failure
-Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t08: RuntimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t01: MissingCompileTimeError # Issue 25496
-Language/Expressions/Method_Invocation/Ordinary_Invocation/object_method_invocation_t02: MissingCompileTimeError # Issue 25496
-Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t02: Crash
-Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t05: RuntimeError
-Language/Expressions/Method_Invocation/Super_Invocation/invocation_t02: Crash
-Language/Expressions/Null/instance_of_class_null_t01: RuntimeError
-Language/Expressions/Numbers/static_type_of_int_t01: CompileTimeError # Larger than 64 bit int
-Language/Expressions/Numbers/syntax_t06: Fail # Issue 21098
-Language/Expressions/Numbers/syntax_t09: Fail # Issue 21098
-Language/Expressions/Numbers/syntax_t10: CompileTimeError # Larger than 64 bit int
-Language/Expressions/Object_Identity/Object_Identity/constant_objects_t01: Fail # Issue 11551, also related to issue 563, 18738
-Language/Expressions/Object_Identity/Object_Identity/double_t02: Fail # Issue 11551, also related to issue 563, 18738
-Language/Expressions/Object_Identity/constant_objects_t01: RuntimeError # Please triage this failure
-Language/Expressions/Object_Identity/double_t02: RuntimeError # Please triage this failure
-Language/Expressions/Object_Identity/double_t03: RuntimeError # Please triage this failure
-Language/Expressions/Object_Identity/object_t02: RuntimeError # Issue 1533 (int/double related)
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t01: MissingCompileTimeError # Issue 24332
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t02: MissingCompileTimeError # Issue 24332
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t03: MissingCompileTimeError # Issue 24332
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t04: MissingCompileTimeError # Issue 24332
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t05: MissingCompileTimeError # Issue 24332
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t06: MissingCompileTimeError # Issue 24332
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t07: MissingCompileTimeError # Issue 24332
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t08: MissingCompileTimeError # Issue 24332
-Language/Expressions/Shift/syntax_t01/14: MissingRuntimeError # Please triage this failure
-Language/Expressions/Spawning_an_Isolate/new_isolate_t01: SkipByDesign
-Language/Expressions/This/placement_t04: Crash
-Language/Functions/External_Functions/not_connected_to_a_body_t01: RuntimeError
-Language/Functions/Formal_Parameters/Optional_Formals/default_value_t01: MissingCompileTimeError
-Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: MissingCompileTimeError
-Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t02: CompileTimeError # Please triage this failure
-Language/Libraries_and_Scripts/Imports/same_name_t10: RuntimeError
-Language/Libraries_and_Scripts/Scripts/top_level_main_t01: CompileTimeError
-Language/Metadata/before_class_t01: RuntimeError
-Language/Metadata/before_ctor_t01: RuntimeError
-Language/Metadata/before_ctor_t02: RuntimeError
-Language/Metadata/before_export_t01: RuntimeError # Please triage this failure
-Language/Metadata/before_factory_t01: RuntimeError
-Language/Metadata/before_function_t01: RuntimeError
-Language/Metadata/before_function_t02: RuntimeError
-Language/Metadata/before_function_t03: RuntimeError
-Language/Metadata/before_function_t04: RuntimeError
-Language/Metadata/before_function_t05: RuntimeError
-Language/Metadata/before_function_t06: RuntimeError
-Language/Metadata/before_function_t07: RuntimeError
-Language/Metadata/before_import_t01: RuntimeError # Please triage this failure
-Language/Metadata/before_library_t01: RuntimeError # Please triage this failure
-Language/Metadata/before_param_t01: RuntimeError
-Language/Metadata/before_param_t02: RuntimeError
-Language/Metadata/before_param_t03: RuntimeError
-Language/Metadata/before_param_t04: RuntimeError
-Language/Metadata/before_param_t05: RuntimeError
-Language/Metadata/before_param_t06: RuntimeError
-Language/Metadata/before_param_t07: RuntimeError
-Language/Metadata/before_param_t08: RuntimeError
-Language/Metadata/before_param_t09: RuntimeError # Please triage this failure
-Language/Metadata/before_type_param_t01: RuntimeError # Please triage this failure
-Language/Metadata/before_typedef_t01: RuntimeError # Please triage this failure
-Language/Metadata/before_variable_t01: RuntimeError # Please triage this failure
-Language/Metadata/before_variable_t02: RuntimeError
-Language/Mixins/Mixin_Application/error_t01: MissingCompileTimeError
-Language/Mixins/Mixin_Application/error_t02: MissingCompileTimeError
-Language/Mixins/Mixin_Application/syntax_t20: CompileTimeError # Please triage this failure
-Language/Mixins/Mixin_Application/syntax_t23: RuntimeError
-Language/Mixins/Mixin_Application/syntax_t24: RuntimeError
-Language/Mixins/Mixin_Application/syntax_t25: RuntimeError
-Language/Mixins/declaring_constructor_t05: MissingCompileTimeError # Issue 24767
-Language/Mixins/declaring_constructor_t06: MissingCompileTimeError # Issue 24767
-Language/Mixins/deferred_t01: MissingCompileTimeError # Please triage this failure
-Language/Mixins/not_object_superclass_t01: MissingCompileTimeError # Please triage this failure
-Language/Mixins/reference_to_super_t01: MissingCompileTimeError # Please triage this failure
-Language/Reference/Operator_Precedence/precedence_15_unary_prefix_t08: RuntimeError # Please triage this failure
-Language/Statements/Assert/syntax_t04: MissingCompileTimeError # This is legal Dart
-Language/Statements/Continue/async_loops_t09: Crash # Please triage this failure
-Language/Statements/Continue/async_loops_t10: Timeout
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t02: RuntimeError # Please triage this failure
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t03: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t05: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t06: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t08: Skip # https://github.com/dart-lang/sdk/issues/28873
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t05: RuntimeError # Issue 25662,25634
-Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t01: MissingCompileTimeError # Issue 25495
-Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t03: MissingCompileTimeError # Issue 25495
-Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t05: MissingCompileTimeError # Issue 25495
-Language/Types/Dynamic_Type_System/deferred_type_error_t01: RuntimeError # Please triage this failure
-Language/Types/Interface_Types/subtype_t27: Skip # Times out or crashes. Issue 21174
-Language/Types/Interface_Types/subtype_t28: Pass, Fail, Crash # Stack overflow. Issue 25282
-Language/Types/Interface_Types/subtype_t30: Fail # Issue 14654
-Language/Types/Type_Void/syntax_t08: MissingCompileTimeError
-Language/Types/Type_Void/syntax_t09: MissingCompileTimeError
-LayoutTests/fast/borders/border-color-visited_t01: RuntimeError # See issue 143
-LayoutTests/fast/canvas/fillText-shadow_t01: RuntimeError # See issue 143
-LayoutTests/fast/canvas/gradient-addColorStop-with-invalid-color_t01: Pass, RuntimeError
-LayoutTests/fast/canvas/rgba-parsing_t01: Pass, RuntimeError
-LayoutTests/fast/css/content/content-quotes-01_t01: Pass, RuntimeError
-LayoutTests/fast/css/font-face-cache-bug_t01: Pass, RuntimeError
-LayoutTests/fast/css/font-shorthand-mix-inherit_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/fontfaceset-loadingdone_t01: Pass, RuntimeError
-LayoutTests/fast/css/misplaced-charset_t01: RuntimeError # See issue 143
-LayoutTests/fast/css/pseudo-empty-dynamic-empty_t01: RuntimeError # See issue 143
-LayoutTests/fast/css/remove-class-name_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/HTMLLinkElement/link-onload-stylesheet-with-import_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/dom/HTMLTableElement/createCaption_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/HTMLTableElement/early-acid3-66-excerpt_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/HTMLTableRowElement/insertCell_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/Range/create-contextual-fragment-script-unmark-already-started_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/clone-node-style_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/css-innerHTML_t01: SkipByDesign # Test is incorrect.
-LayoutTests/fast/dom/icon-url-change_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/icon-url-list_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/mutation-event-remove-inserted-node_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/dom/shadow/event-path-not-in-document_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/dom/shared-inline-style-after-node-removal_t01: RuntimeError # See issue 143
-LayoutTests/fast/dom/subtree-modified-attributes_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/events/form-onchange_t01: RuntimeError # See issue 143
-LayoutTests/fast/events/onerror-bubbling_t01: RuntimeError # See issue 143
-LayoutTests/fast/files/blob-parts-slice-test_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LayoutTests/fast/files/blob-slice-overflow_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LayoutTests/fast/files/blob-slice-test_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LayoutTests/fast/files/file-reader-done-reading-abort_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/forms/autofocus-attribute_t01: RuntimeError # See issue 143
-LayoutTests/fast/forms/autofocus-opera-004_t01: RuntimeError # See issue 143
-LayoutTests/fast/forms/autofocus-opera-005_t01: RuntimeError # See issue 143
-LayoutTests/fast/forms/autofocus-opera-008_t01: RuntimeError # See issue 143
-LayoutTests/fast/forms/input-implicit-length-limit_t01: SkipByDesign # Test is not about Dart, but about a DOM-only webkit bug that has been fixed.
-LayoutTests/fast/forms/interactive-validation-attach-assertion_t01: RuntimeError # See issue 143
-LayoutTests/fast/forms/search-popup-crasher_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/forms/select-namedItem_t01: RuntimeError # See issue 143
-LayoutTests/fast/forms/select-reset-multiple-selections-4-single-selection_t01: RuntimeError # See issue 143
-LayoutTests/fast/loader/loadInProgress_t01: Skip # Issue 23466
-LayoutTests/fast/loader/stateobjects/replacestate-in-onunload_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/media/mq-parsing_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/mediastream/getusermedia_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/replaced/preferred-widths_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/replaced/table-percent-height_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/replaced/table-percent-width_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/css-table-max-height_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/fixed-table-layout-toggle-colwidth_t01: Pass, RuntimeError
-LayoutTests/fast/table/fixed-table-with-percent-width-inside-extra-large-div_t01: Pass, RuntimeError
-LayoutTests/fast/table/hittest-tablecell-right-edge_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/hittest-tablecell-with-borders-right-edge_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/resize-table-cell_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows-except-overlapped_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/table-colgroup-present-after-table-row_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t02: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/table-size-integer-overflow_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/table/table-with-content-width-exceeding-max-width_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/text/find-case-folding_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/text/find-hidden-text_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/text/find-quotes_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/text/find-spaces_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/text/international/cjk-segmentation_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/text/zero-width-characters-complex-script_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/transforms/hit-test-large-scale_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/transforms/scrollIntoView-transformed_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/writing-mode/percentage-margins-absolute_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-abort_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: Skip # https://github.com/dart-lang/sdk/issues/28873
-LayoutTests/fast/xpath/4XPath/Core/test_location_path_t01: RuntimeError # See issue 143
-LayoutTests/fast/xpath/4XPath/Core/test_step_t01: RuntimeError # See issue 143
-LayoutTests/fast/xpath/ambiguous-operators_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LibTest/async/Future/Future.delayed_A01_t02: Pass, Fail # Issue 15524
-LibTest/collection/LinkedHashSet/LinkedHashSet.from_A03_t01: RuntimeError # Please triage this failure.
-LibTest/collection/LinkedList/add_A01_t01: Pass, Slow # Slow tests that needs extra time to finish.
-LibTest/collection/ListBase/ListBase_class_A01_t01: RuntimeError # Please triage this failure
-LibTest/collection/ListMixin/ListMixin_class_A01_t01: RuntimeError # Please triage this failure
-LibTest/convert/JsonCodec/encode_A01_t01: RuntimeError # code.google.com/p/co19/issues/detail?id=735
-LibTest/convert/JsonCodec/encode_A01_t02: RuntimeError # code.google.com/p/co19/issues/detail?id=735
-LibTest/convert/JsonDecoder/fuse_A01_t01: RuntimeError # co19-roll r667: Please triage this failure
-LibTest/convert/JsonEncoder/convert_A01_t01: RuntimeError # co19-roll r667: Please triage this failure
-LibTest/core/DateTime/DateTime.fromMicrosecondsSinceEpoch_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/DateTime/microsecond_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/DateTime/microsecondsSinceEpoch_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/DateTime/parse_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/DateTime/to8601String_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/DateTime/to8601String_A01_t02: RuntimeError # Please triage this failure
-LibTest/core/DateTime/to8601String_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/Duration/Duration_A01_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/Duration/Duration_A02_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/Duration/inDays_A01_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/Duration/inHours_A01_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/Duration/inMilliseconds_A01_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/Duration/inMinutes_A01_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/Duration/inSeconds_A01_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/Invocation/namedArguments_A01_t01: RuntimeError
-LibTest/core/List/List_class_A01_t01: RuntimeError # co19-roll r623: Please triage this failure
-LibTest/core/List/getRange_A03_t01: RuntimeError, OK # Tests that fail because they use the legacy try-catch syntax. co19 issue 184.
-LibTest/core/List/removeAt_A02_t01: RuntimeError # Issue 1533
-LibTest/core/List/sort_A01_t06: Slow, Pass # Slow tests that needs extra time to finish.
-LibTest/core/double/INFINITY_A01_t04: RuntimeError # Expected to fail because double.INFINITY is int.
-LibTest/core/double/NEGATIVE_INFINITY_A01_t04: RuntimeError # Expected to fail because double.NEGATIVE_INFINITY is int.
-LibTest/core/double/isInfinite_A01_t03: CompileTimeError # Larger than 64 bit int
-LibTest/core/double/operator_GE_A01_t02: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/double/operator_GT_A01_t02: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/double/operator_LE_A01_t02: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/double/operator_LT_A01_t02: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/double/operator_addition_A01_t06: RuntimeError # Large integer literal. Not valid dart 2.
-LibTest/core/double/operator_addition_A01_t08: Crash # Large integer literal. Not valid dart 2.
-LibTest/core/double/operator_subtraction_A01_t06: RuntimeError # Large integer literal. Not valid dart 2.
-LibTest/core/double/operator_subtraction_A01_t09: Crash # Large integer literal. Not valid dart 2.
-LibTest/core/int/abs_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/ceilToDouble_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/ceil_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/floorToDouble_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/floor_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/hashCode_A01_t01: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-LibTest/core/int/hashCode_A01_t01: RuntimeError, OK # co19 issue 308
-LibTest/core/int/isEven_A01_t01: RuntimeError, OK # co19 issue 277
-LibTest/core/int/isInfinite_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/isNaN_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/isNegative_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/isOdd_A01_t01: RuntimeError, OK # co19 issue 277
-LibTest/core/int/operator_AND_A01_t01: RuntimeError, OK # Requires bigints.
-LibTest/core/int/operator_GE_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/operator_GT_A01_t01: RuntimeError, OK # co19 issue 200
-LibTest/core/int/operator_LE_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/operator_LT_A01_t01: RuntimeError, OK # co19 issue 200
-LibTest/core/int/operator_NOT_A01_t01: RuntimeError, OK # Expects negative result from bit-operation.
-LibTest/core/int/operator_OR_A01_t01: RuntimeError, OK # Requires bigints.
-LibTest/core/int/operator_XOR_A01_t01: RuntimeError, OK # Requires bigints.
-LibTest/core/int/operator_addition_A01_t01: RuntimeError, OK # co19 issue 200
-LibTest/core/int/operator_division_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/operator_division_A01_t01: RuntimeError # Large integer literal. Not valid dart 2.
-LibTest/core/int/operator_multiplication_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/operator_multiplication_A01_t01: RuntimeError # Large integer literal. Not valid dart 2.
-LibTest/core/int/operator_remainder_A01_t01: RuntimeError, OK # Requires bigints.
-LibTest/core/int/operator_remainder_A01_t02: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/operator_remainder_A01_t02: RuntimeError, OK # Requires bigints.
-LibTest/core/int/operator_right_shift_A01_t01: RuntimeError, OK # Expects negative result from bit-operation.
-LibTest/core/int/operator_subtraction_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/operator_subtraction_A01_t01: RuntimeError # Large integer literal. Not valid dart 2.
-LibTest/core/int/operator_truncating_division_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/operator_truncating_division_A01_t01: RuntimeError # Large integer literal. Not valid dart 2.
-LibTest/core/int/operator_unary_minus_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/parse_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/remainder_A01_t02: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/roundToDouble_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/round_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/toDouble_A01_t01: RuntimeError, OK # co19 issue 200
-LibTest/core/int/toInt_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/truncateToDouble_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/core/int/truncate_A01_t01: CompileTimeError # Larger than 64 bit int
-LibTest/html/Element/addEventListener_A01_t04: Skip # https://github.com/dart-lang/sdk/issues/28873
-LibTest/html/Element/mouseEnterEvent_A01_t01: Pass, RuntimeError # Please triage this failure
-LibTest/html/Element/queryAll_A01_t01: RuntimeError # See issue 143
-LibTest/html/Element/query_A01_t01: RuntimeError # See issue 143
-LibTest/html/HttpRequest/getAllResponseHeaders_A01_t01: Crash
-LibTest/html/HttpRequest/getResponseHeader_A01_t01: Crash
-LibTest/html/HttpRequest/getString_A01_t01: Crash
-LibTest/html/HttpRequest/request_A01_t01: Crash
-LibTest/html/HttpRequest/responseType_A01_t03: CompileTimeError # co19-roll r706: Please triage this failure
-LibTest/html/HttpRequest/setRequestHeader_A01_t01: Crash
-LibTest/html/HttpRequest/statusText_A01_t01: Crash
-LibTest/html/HttpRequest/status_A01_t01: Crash
-LibTest/html/IFrameElement/addEventListener_A01_t04: Skip # https://github.com/dart-lang/sdk/issues/28873
-LibTest/html/IFrameElement/contentWindow_A01_t01: Crash
-LibTest/html/IFrameElement/enteredView_A01_t01: CompileTimeError # co19-roll r706: Please triage this failure
-LibTest/html/Window/postMessage_A01_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-LibTest/html/Window/postMessage_A01_t02: Crash
-LibTest/html/Window/requestFileSystem_A01_t01: Crash
-LibTest/html/Window/requestFileSystem_A01_t02: Crash
-LibTest/html/Window/requestFileSystem_A02_t01: Crash
-LibTest/isolate/*: SkipByDesign # dart:isolate not supported.
-LibTest/math/MutableRectangle/boundingBox_A01_t01: RuntimeError, Pass # co19-roll r706: Please triage this failure.
-LibTest/math/Rectangle/boundingBox_A01_t01: RuntimeError, Pass # co19-roll r706: Please triage this failure.
-LibTest/math/pow_A04_t01: Fail # co19-roll r587: Please triage this failure
-LibTest/math/pow_A10_t01: CompileTimeError # Larger than 64 bit int
-LibTest/math/pow_A14_t01: Fail # co19-roll r587: Please triage this failure
-LibTest/math/pow_A16_t01: Fail # co19-roll r587: Please triage this failure
-LibTest/typed_data/ByteData/*Int64*: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/*Uint64*: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/ByteData.view_A01_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/ByteData.view_A03_t01: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/ByteData.view_A04_t01: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/ByteData.view_A05_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/ByteData.view_A05_t02: Fail # Issue 12989
-LibTest/typed_data/ByteData/ByteData.view_A05_t03: Fail # Issue 12989
-LibTest/typed_data/ByteData/ByteData_A01_t01: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/ByteData_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/ByteData/getFloat32_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getFloat32_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getFloat64_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getFloat64_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getInt16_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getInt16_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getInt32_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getInt32_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getInt64_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getInt8_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getInt8_A02_t02: Fail # Issue 12989
-LibTest/typed_data/ByteData/getUint16_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getUint16_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getUint32_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getUint32_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getUint64_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/getUint8_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/getUint8_A02_t02: Fail # Issue 12989
-LibTest/typed_data/ByteData/setFloat32_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setFloat32_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setFloat64_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setFloat64_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setInt16_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setInt16_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setInt32_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setInt32_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setInt64_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setInt8_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setInt8_A02_t02: Fail # Issue 12989
-LibTest/typed_data/ByteData/setUint16_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setUint16_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setUint32_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setUint32_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setUint64_A02_t02: Fail # co19-roll r569: Please triage this failure
-LibTest/typed_data/ByteData/setUint8_A02_t01: Fail # Issue 12989
-LibTest/typed_data/ByteData/setUint8_A02_t02: Fail # Issue 12989
-LibTest/typed_data/Float32List/Float32List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32List/Float32List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32List/Float32List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32List/Float32List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Float32List/fold_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32List/join_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32List/join_A01_t02: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4/equal_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/greaterThanOrEqual_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/greaterThan_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/lessThanOrEqual_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/lessThan_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4/notEqual_A01_t01: Skip # co19 issue 656
-LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4List/Float32x4List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4List/Float32x4List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Float32x4List/fold_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4List/join_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4List/join_A01_t02: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float64List/Float64List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float64List/Float64List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float64List/Float64List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float64List/Float64List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Float64List/fold_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float64List/join_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float64List/join_A01_t02: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int16List/Int16List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int16List/Int16List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int16List/Int16List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int16List/Int16List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Int32List/Int32List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int32List/Int32List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int32List/Int32List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int32List/Int32List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Int64List/*: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int64List/Int64List_A02_t01: Pass # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int8List/Int8List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int8List/Int8List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int8List/Int8List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int8List/Int8List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Uint16List/Uint16List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint16List/Uint16List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint16List/Uint16List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint16List/Uint16List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Uint32List/Uint32List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint32List/Uint32List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint32List/Uint32List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint32List/Uint32List_A02_t01: Fail # co19-roll r576: Please triage this failure
-LibTest/typed_data/Uint64List/*: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint64List/Uint64List_A02_t01: Pass # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8ClampedList/Uint8ClampedList_A02_t01: Pass, Fail # co19-roll r576: Passes on ie10. Please triage this failure
-LibTest/typed_data/Uint8List/Uint8List.view_A05_t01: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8List/Uint8List.view_A05_t02: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8List/Uint8List.view_A05_t03: RuntimeError # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8List/Uint8List_A02_t01: Fail # co19-roll r576: Please triage this failure
-Utils/tests/Expect/identical_A01_t01: Fail # co19-roll r546: Please triage this failure
-WebPlatformTest/Utils/test/asyncTestFail_t02: Skip # https://github.com/dart-lang/sdk/issues/28873
-WebPlatformTest/Utils/test/testFail_t01: RuntimeError # co19-roll r722: Please triage this failure.
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t01: RuntimeError # See issue 143
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t02: RuntimeError # See issue 143
-WebPlatformTest/custom-elements/instantiating/isAttribute_A02_t01: RuntimeError # See issue 143
-WebPlatformTest/custom-elements/instantiating/isAttribute_A03_t01: RuntimeError # See issue 143
-WebPlatformTest/custom-elements/instantiating/localName_A01_t01: RuntimeError # See issue 143
-WebPlatformTest/dom/EventTarget/dispatchEvent_A02_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-WebPlatformTest/dom/nodes/DOMImplementation-createHTMLDocument_t01: CompileTimeError # co19-roll r722: Please triage this failure.
-WebPlatformTest/dom/nodes/Document-createElement_t01: CompileTimeError # co19-roll r722: Please triage this failure.
-WebPlatformTest/dom/nodes/Element-childElementCount-nochild_t01: CompileTimeError # co19-roll r722: Please triage this failure.
-WebPlatformTest/html/dom/elements/global-attributes/classlist-nonstring_t01: RuntimeError # See issue 143
-WebPlatformTest/html/semantics/embedded-content/the-audio-element/audio_constructor_t01: RuntimeError
-WebPlatformTest/html/semantics/forms/the-textarea-element/textarea-type_t01: RuntimeError # See issue 143
-WebPlatformTest/html/semantics/tabular-data/the-table-element/insertRow-method_t01: RuntimeError # See issue 143
-WebPlatformTest/html/semantics/tabular-data/the-table-element/insertRow-method_t02: RuntimeError # See issue 143
-WebPlatformTest/html/semantics/tabular-data/the-table-element/tBodies_t01: RuntimeError # See issue 143
-WebPlatformTest/html/semantics/text-level-semantics/the-a-element/a.text-getter_t01: RuntimeError # See issue 143
-WebPlatformTest/html/semantics/text-level-semantics/the-a-element/a.text-setter_t01: RuntimeError # See issue 143
-WebPlatformTest/webstorage/event_local_storageeventinit_t01: Skip # https://github.com/dart-lang/sdk/issues/28873
-WebPlatformTest/webstorage/storage_local_setitem_quotaexceedederr_t01: Skip # Times out. Please triage this failure.
-WebPlatformTest/webstorage/storage_session_setitem_quotaexceedederr_t01: Skip # Times out. Please triage this failure
-
-[ $builder_tag != run_webgl_tests && $compiler == dart2js ]
-LayoutTests/fast/canvas/webgl*: Skip # Only run WebGL on special builders, issue 29961
-
-[ $compiler == dart2js && $mode == debug ]
-LibTest/collection/ListBase/ListBase_class_A01_t01: Skip
-LibTest/collection/ListMixin/ListMixin_class_A01_t01: Skip
-LibTest/core/List/List_class_A01_t01: Skip
-
-[ $compiler == dart2js && $runtime == chrome ]
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t01: Pass, RuntimeError # Issue 26615
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t04: Pass, RuntimeError # Issue 26615
-LayoutTests/fast/alignment/parse-align-items_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/alignment/parse-align-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/alignment/parse-justify-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-cancel2_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-cancel_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-prefix_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-timestamps-advance_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-timestamps_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-within-callback_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/backgrounds/background-position-parsing-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/backgrounds/repeat/parsing-background-repeat_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.fillText.gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.gradient_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.negative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.verySmall_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/DrawImageSinglePixelStretch_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/alpha_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-arc-negative-radius_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-as-image-incremental-repaint_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is behind a flag.
-LayoutTests/fast/canvas/canvas-empty-image-pattern_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-invalid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-large-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-rounding_t01: RuntimeError # https://github.com/dart-lang/sdk/issues/29814
-LayoutTests/fast/canvas/canvas-imageSmoothingEnabled-repaint_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/canvas-large-dimensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-large-fills_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lineDash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lose-restore-googol-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lose-restore-max-int-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-putImageData_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-resize-after-paint_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-drawImage-shadow_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-strokePath-gradient-shadow_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/draw-custom-focus-ring_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/getPutImageDataPairTest_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/rgba-parsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/setWidthResetAfterForcedRender_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/webgl/bad-arguments-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/buffer-data-array-buffer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/canvas-test_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-lost_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/draw-arrays-out-of-bounds_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/draw-webgl-to-canvas-2d_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/error-reporting_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/get-active-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-get-calls_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-object-get-calls_t01: RuntimeError # Please triage this failure (issue 29065)
-LayoutTests/fast/canvas/webgl/gl-teximage_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/glsl-conformance_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/index-validation-copies-indices_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/index-validation-with-resized-buffer_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/null-object-behaviour_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/object-deletion-behaviour_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/oes-vertex-array-object_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/program-test_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/renderbuffer-initialization_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-canvas-rgba5551_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba4444_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-data-rgba5551_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgb565_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba4444_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba5551_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba4444_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551_t01: Skip # Times out, please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-input-validation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-sub-image-2d-bad-args_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/texImage2DImageDataTest_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/texImageTest_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-bindings-uneffected-on-resize_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-color-profile_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-complete_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-npot_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-transparent-pixels-initialized_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/uniform-location_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/uninitialized-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-depth-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-large-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-layer-update_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-specific_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-texture-binding-preserved_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-viewport-parameters-preserved_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/css-generated-content/hit-test-generated-content_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/malformed-url_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation-before-onload_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation-display_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-element-events_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-transition-event_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-transition_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-and-minmax-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-content-resolution-columns_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-flow-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-flow-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-container-change-explicit-grid-recompute-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-border-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-border-padding-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-empty-row-column_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-min-max-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-padding-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-area-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-bad-named-area-auto-placement_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-bad-resolution-double-span_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-change-order-auto-flow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-display_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-order-auto-flow-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/justify-self-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/place-cell-by-index_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/multicol_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/MarqueeLayoutTest_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/aspect-ratio-inheritance_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/aspect-ratio-parsing-tests_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/auto-min-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/background-clip-text_t01: RuntimeError
-LayoutTests/fast/css/background-serialize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-radius-property-value_t01: RuntimeError
-LayoutTests/fast/css/checked-pseudo-selector_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/child-selector-implicit-tbody_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-none_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-normal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/counters/complex-before_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/css-escaped-identifier_t01: RuntimeError # co19 issue 14
-LayoutTests/fast/css/css3-nth-tokens-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/cssText-shorthand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/csstext-of-content-string_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/deprecated-flexbox-auto-min-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/ex-unit-with-no-x-height_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/first-child-display-change-inverse_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/focus-display-block-inline_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-insert-link_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-multiple-ranges-for-unicode-range_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-unicode-range-monospace_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-unicode-range-overlap-load_t01: Skip # Times out, Runtime error. Please triage this failure
-LayoutTests/fast/css/fontfaceset-events_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/fontfaceset-loadingdone_t01: Pass, RuntimeError # See issue https://github.com/dart-lang/co19/issues/134
-LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade_t01: RuntimeError # co19 issue 14
-LayoutTests/fast/css/getComputedStyle/computed-style-font_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/font-family-fallback-reset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-border_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-clip_t01: RuntimeError
-LayoutTests/fast/css/html-attr-case-sensitivity_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/id-or-class-before-stylesheet_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/implicit-attach-marking_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/inherit-initial-shorthand-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/insertRule-media_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalid-hex-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalid-predefined-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/targeted-class-shadow-combinator_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/max-device-aspect-ratio_t01: RuntimeError, Pass # Issue 28998
-LayoutTests/fast/css/media-query-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/modify-ua-rules-from-javascript_t01: RuntimeError
-LayoutTests/fast/css/padding-no-renderer_t01: Pass, RuntimeError
-LayoutTests/fast/css/parsing-at-rule-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-css-allowed-string-characters_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-page-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-selector-error-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-any_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-target-indirect-sibling-001_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/pseudo-target-indirect-sibling-002_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/pseudo-valid-unapplied_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-001_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-002_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-005_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/shadow-current-color_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/style-element-process-crash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-nested_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-with-dom-operation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-with-important-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/stylesheet-enable-first-alternate-on-load-sheet_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/stylesheet-enable-second-alternate-link_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/transform-origin-parsing_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/url-with-multi-byte-unicode-escape_t01: RuntimeError # co19 issue 14
-LayoutTests/fast/css/webkit-keyframes-errors_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/word-break-user-modify-allowed-values_t01: RuntimeError
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent-inherited_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-justify/getComputedStyle/getComputedStyle-text-justify_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/52776_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMException/XPathException_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMException/dispatch-event-exception_t01: RuntimeError # https://github.com/dart-lang/sdk/issues/25928
-LayoutTests/fast/dom/DOMImplementation/createDocument-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMImplementation/createDocumentType-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/basic_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-strict-mode-wtih-checkbox_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/replace-element_t01: RuntimeError # Please triage this failure.
-LayoutTests/fast/dom/Document/createElementNS-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/document-title-get_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/attribute-uppercase_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/getClientRects_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/setAttributeNS-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/remove-href-from-focused-anchor_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hostname_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-pathname_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-port_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-protocol_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-search_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLBaseElement/href-attribute-resolves-with-respect-to-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-autofocus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError
-LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unfocusable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unselectable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/multiple-centered-dialogs_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/show-modal-focusing-steps_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/submit-dialog-close-event_t01: Skip # Roll 50 failure
-LayoutTests/fast/dom/HTMLDocument/active-element-gets-unforcusable_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLDocument/set-focus-on-valid-element_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-inner-outer-optimization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/spellcheck_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLImageElement/image-alt-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLImageElement/parse-src_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLInputElement/input-image-alt-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLabelElement/click-label_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLabelElement/form/test1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/link-beforeload-recursive_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-beforeload_t01: Pass, RuntimeError # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/resolve-url-on-insertion_t01: RuntimeError # Issue 18010
-LayoutTests/fast/dom/HTMLObjectElement/beforeload-set-text-crash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLOptionElement/collection-setter-getter_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLOutputElement/dom-settable-token-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-false-inside-async-false-load_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-inline-script_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-onbeforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/defer-inline-script_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/defer-onbeforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/remove-in-beforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/remove-source_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/script-set-src_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/custom-element-wrapper-gc_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/ownerDocumentXHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/database-callback-delivery_t01: Skip # Roll 50 failure
-LayoutTests/fast/dom/MutationObserver/observe-childList_t01: RuntimeError # Issue 18253
-LayoutTests/fast/dom/MutationObserver/removed-out-of-order_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/weak-callback-gc-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Node/fragment-mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Node/initial-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/bug-19527_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/insertNode-empty-fragment-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-constructor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-created-during-remove-children_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-detached-exceptions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-expand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-insertNode-separate-endContainer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/detached-parent-rule-without-wrapper_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/detached-stylesheet-without-wrapper_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/removed-media-rule-deleted-parent-crash_t01: RuntimeError
-LayoutTests/fast/dom/StyleSheet/removed-stylesheet-rule-deleted-parent-crash_t01: RuntimeError
-LayoutTests/fast/dom/Window/getMatchedCSSRules-nested-rules_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-null-crash_t01: RuntimeError
-LayoutTests/fast/dom/Window/getMatchedCSSRules-parent-stylesheets_t01: RuntimeError
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-invalid-pseudo-elements_t01: RuntimeError
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-pseudo-elements-complex_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-pseudo-elements_t01: RuntimeError
-LayoutTests/fast/dom/Window/window-resize-contents_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-resize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-scroll-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/attribute-namespaces-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/blur-contenteditable_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/characterdata-api-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/client-width-height-quirks_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/css-shorthand-common-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-basic_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/dom/custom/document-register-svg-extends_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/element-names_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/upgrade-candidate-remove-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dataset-xhtml_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dataset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/document-importNode-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/domparser-parsefromstring-mimetype-support_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/focus-contenteditable_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/fragment-activation-focuses-target_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/getElementsByClassName/010_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/getElementsByClassName/011_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/icon-size-property_t01: Skip # Roll 50 failure
-LayoutTests/fast/dom/location-hash_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
-LayoutTests/fast/dom/offset-position-writing-modes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/option-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/partial-layout-overlay-scrollbars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/set-innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/distribution-crash_t01: RuntimeError
-LayoutTests/fast/dom/shadow/distribution-update-recalcs-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/insertion-point-list-menu-crash_t01: RuntimeError
-LayoutTests/fast/dom/shadow/insertion-point-shadow-crash_t01: RuntimeError
-LayoutTests/fast/dom/shadow/insertion-point-video-crash_t01: RuntimeError
-LayoutTests/fast/dom/shadow/link-in-shadow-tree_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent_t01: RuntimeError
-LayoutTests/fast/dom/shadow/olderShadowRoot_t01: RuntimeError # Issue 26729
-LayoutTests/fast/dom/shadow/pseudoclass-update-checked-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-optgroup_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-optgroup_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-aware-shadow-root_t01: RuntimeError
-LayoutTests/fast/dom/shadow/shadow-content-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-disable_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-element-inactive_t01: RuntimeError # Issue 25155
-LayoutTests/fast/dom/shadow/shadow-removechild-and-blur-event_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-js-api_t01: RuntimeError
-LayoutTests/fast/dom/shadow/shadowdom-for-input-spellcheck_t01: RuntimeError # Issue 26729
-LayoutTests/fast/dom/shadow/shadowdom-for-input-type-change_t01: RuntimeError # Issue 26729
-LayoutTests/fast/dom/shadow/shadowhost-keyframes_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowroot-clonenode_t01: RuntimeError # Issue 26729
-LayoutTests/fast/dom/shadow/shadowroot-host_t01: RuntimeError # Issue 26729
-LayoutTests/fast/dom/shadow/shadowroot-keyframes_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/stale-distribution-after-shadow-removal_t01: RuntimeError
-LayoutTests/fast/dom/shadow/style-sharing-styles-in-older-shadow-roots_t01: RuntimeError
-LayoutTests/fast/dom/vertical-scrollbar-in-rtl-doesnt-fire-onscroll_t01: Pass, RuntimeError
-LayoutTests/fast/dynamic/checkbox-selection-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-counter_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-quote_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/insertAdjacentElement_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/recursive-layout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/encoding/css-charset-dom_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/add-event-without-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/change-overflow-on-overflow-change_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/clipboard-clearData_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/clipboard-dataTransferItemList_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/div-focus_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/events/document-elementFromPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-attributes-after-exception_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-creation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-listener-html-non-html-confusion_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/fire-scroll-event-element_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/fire-scroll-event_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/init-message-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/initkeyboardevent-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/input-focus-no-duplicate-events_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/events/invalid-003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/invalid-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/label-focus_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/events/mutation-during-replace-child-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/mutation-during-replace-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/nested-event-remove-node-crash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/overflowchanged-event-raf-timing_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/scoped/editing-commands_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/events/scroll-during-zoom-change_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/scroll-event-does-not-bubble_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/scroll-event-phase_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/tabindex-removal-from-focused-element_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/eventsource/eventsource-constructor_t01: RuntimeError # https://github.com/dart-lang/sdk/issues/29814
-LayoutTests/fast/exclusions/parsing/parsing-wrap-flow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/exclusions/parsing/parsing-wrap-through_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close-read_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close-revoke_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-constructor_t01: RuntimeError # https://github.com/dart-lang/sdk/issues/29814
-LayoutTests/fast/files/blob-parts-slice-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-slice-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/url-null_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/xhr-response-blob_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/*: Skip # Roll 50 failure
-LayoutTests/fast/filesystem/async-operations_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/directory-entry-to-uri_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-entry-to-uri_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-abort-continue_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/filesystem-reference_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-tooLong-input_t01: RuntimeError # https://github.com/dart-lang/co19/issues/48
-LayoutTests/fast/forms/ValidityState-tooLong-textarea_t01: RuntimeError # https://github.com/dart-lang/co19/issues/48
-LayoutTests/fast/forms/autofocus-focus-only-once_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/autofocus-input-css-style-change_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/autofocus-opera-007_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/autofocus-readonly-attribute_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/button-baseline-and-collapsing_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/button/button-disabled-blur_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/checkValidity-001_t01: RuntimeError # Issue 25155
-LayoutTests/fast/forms/clone-input-with-dirty-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datalist/datalist_t01: RuntimeError # https://github.com/dart-lang/sdk/issues/29814
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-onblur-setvalue-onfocusremoved_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/input-valueasdate-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-typeMismatch-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/fieldset/fieldset-elements_t01: RuntimeError # Issue 25155
-LayoutTests/fast/forms/file/file-input-capture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/focus-style-pending_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/focus_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/form-attribute-nonexistence-form-id_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/form-attribute_t01: RuntimeError # Issue 25155
-LayoutTests/fast/forms/input-appearance-elementFromPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-hit-test-border_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-inputmode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-width-height-attributes-without-renderer-loaded-image_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/listbox-selection-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-disabled-selected-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-selection-reset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-submit-without-selection_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/multiple-selected-options-innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/onchange-change-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/option-change-single-selected_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/option-strip-unicode-spaces_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/parser-associated-form-removal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/paste-into-textarea_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/plaintext-mode-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/search-popup-crasher_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-change-popup-to-listbox-in-event-handler_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/select-clientheight-large-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-clientheight-with-multiple-attr_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-list-box-mouse-focus_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/selection-start-end-readonly_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/selection-wrongtype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/setCustomValidity-existence_t01: RuntimeError # Issue 25155
-LayoutTests/fast/forms/setrangetext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/submit-form-attributes_t01: RuntimeError # co19 issue 14
-LayoutTests/fast/forms/textarea-maxlength_t01: RuntimeError # Please triage this failure. Started failing in chrome 55
-LayoutTests/fast/forms/textarea-paste-newline_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textfield-focus-out_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/validationMessage_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/article-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/aside-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-child-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-child-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-details-child-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-details-child-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/figcaption-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/figure-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/footer-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/header-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/hgroup-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/hidden-attr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/imports/import-element-removed-flag_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/imports/import-events_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/main-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/mark-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/section-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/select-dropdown-consistent-background-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/boundingBox-with-continuation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/inline-position-top-align_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/inline-with-empty-inline-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/out-of-flow-objects-and-whitespace-after-empty-inline_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/parent-inline-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/positioned-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/layers/normal-flow-hit-test_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/layers/zindex-hit-test_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/loader/about-blank-hash-change_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/about-blank-hash-kept_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/scroll-position-restored-on-back_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/stateobjects/replacestate-in-onunload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-clip-path-shape_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-mask-source-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-mask_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/media-query-list-syntax_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Skip # Issue 23475
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/break-after-always-bottom-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/break-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/cssom-view_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/flipped-blocks-hit-test_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-above-or-below_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-end-of-column-with-line-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-end-of-column_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-float_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-gap-between-pages-flipped_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-gap-between-pages_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance-images_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t07: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t08: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t09: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t10: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-rl/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/widows_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/replaced-child-100percent-height-inside-fixed-container-with-overflow-auto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/scrollbar-restored_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/foster-parent-adopted_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/fragment-parser-doctype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/innerhtml-with-prefixed-elements_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/container-width-zero_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-height-text-controls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/ruby/ruby-line-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/selectors/Utils/tests/Expect/identical_A01_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/selectors/Utils/tests/Expect/throws_A01_t04: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-lengths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-big-box-border-radius_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-diamond-margin-polygon_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-right_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-right_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-cancel_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-speak_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-voices_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/storage/disallowed-storage_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/storage/storage-disallowed-in-data-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/computedstylemargin_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/cssom-subpixel-precision_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/replaced-element-baseline_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/anonymous-table-section-removed_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/caption-orthogonal-writing-mode-sizing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/col-width-span-expand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-max-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-max-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-bottom-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-right-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-with-borders-bottom-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-with-borders-right-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/incorrect-colgroup-span-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/large-shrink-wrapped-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/margins-perpendicular-containing-block_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-css-block-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-css-inline-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-html-block-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-html-inline-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/nested-tables-with-div-offset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/padding-height-and-override-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows-except-overlapped_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-cell-offset-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-colgroup-present-after-table-row_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-rowspan-cell-with-empty-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-with-content-width-exceeding-max-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text-autosizing/vertical-writing-mode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-spaces_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/cjk-segmentation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/iso-8859-8_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/rtl-text-wrapping_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/thai-offsetForPosition-inside-character_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/ipa-tone-letters_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-break-after-question-mark_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/offsetForPosition-cluster-at-zero_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/pre-wrap-trailing-tab_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/remove-zero-length-run_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-ltr_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-pixel_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-rtl_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-vertical_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-webfont_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/text-combine-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/window-find_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/zero-width-characters_t01: RuntimeError, Pass # Please triage this failure
-LayoutTests/fast/transforms/bounding-rect-zoom_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/transforms/hit-test-large-scale_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/anchor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/file-http-base_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/file_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/idna2003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/idna2008_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/invalid-urls-utf8_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/ipv4_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/ipv6_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/mailto_t01: RuntimeError # https://github.com/dart-lang/sdk/issues/29814
-LayoutTests/fast/url/path_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/query_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative-unix_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative-win_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/segments-from-data-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/segments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/standard-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/auto-sizing-orthogonal-flows_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow-scroll_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/positionForPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/table-hit-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/vertical-font-vmtx-units-per-em_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/vertical-inline-block-hittest_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-arraybuffer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Borrowed/cz_20030217_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Borrowed/namespace-nodes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/implicit-node-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/node-name-case-sensitivity_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/node-name-case-sensitivity_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/position_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Issue 24398
-LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/paths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/reverse-axes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xsl/default-html_t01: RuntimeError # Please triage this failure
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: RuntimeError # Issue 22200
-LibTest/core/int/compareTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/operator_left_shift_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/operator_remainder_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/int/operator_truncating_division_A01_t02: RuntimeError # Please triage this failure
-LibTest/core/int/remainder_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/remainder_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/int/toRadixString_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t06: RuntimeError # Please triage this failure
-LibTest/html/Document/childNodes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Document/clone_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Document/clone_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Document/securityPolicy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/Element.tag_A01_t01: RuntimeError # Test seems invalid in Chrome 55.
-LibTest/html/Element/blur_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/borderEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/contentEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/dataset_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/focus_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/getAttributeNS_A01_t01: RuntimeError # Issue 16395
-LibTest/html/Element/getNamespacedAttributes_A01_t01: RuntimeError # Issue 16395
-LibTest/html/Element/isTagSupported_A01_t01: RuntimeError # Issue 25155
-LibTest/html/Element/marginEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/mouseOverEvent_A01_t01: RuntimeError, Pass # Issue 30068
-LibTest/html/Element/mouseWheelEvent_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/onMouseWheel_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/onTransitionEnd_A01_t01: Skip # Please triage this failure
-LibTest/html/Element/paddingEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/querySelectorAll_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/replaceWith_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/transitionEndEvent_A01_t01: Skip # Please triage this failure
-LibTest/html/HttpRequest/getAllResponseHeaders_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getResponseHeader_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getString_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/onError_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequest/overrideMimeType_A01_t01: RuntimeError # Times out. Please triage this failure
-LibTest/html/HttpRequest/request_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/responseText_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequest/responseType_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/setRequestHeader_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/statusText_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/status_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequestUpload/onError_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoadEnd_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/borderEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/IFrameElement/clone_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/contentWindow_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createShadowRoot_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/focus_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/getNamespacedAttributes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/innerHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/leftView_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/marginEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/IFrameElement/offsetTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/onMouseWheel_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/onTransitionEnd_A01_t01: Skip # Please triage this failure
-LibTest/html/IFrameElement/outerHtml_setter_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/paddingEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/IFrameElement/querySelector_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/setInnerHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/append_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Node/nodes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/nodes_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Node/parent_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/previousNode_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/animationFrame_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Window/document_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A03_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A06_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveBy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveTo_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/postMessage_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/postMessage_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Window/requestFileSystem_A01_t01: Skip # Roll 50 failure
-LibTest/html/Window/requestFileSystem_A01_t02: Skip # Roll 50 failure
-LibTest/html/Window/requestFileSystem_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/resizeBy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/resizeTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: RuntimeError # Please triage this failure
-LibTest/typed_data/Int32x4/operator_OR_A01_t01: RuntimeError # Please triage this failure
-LibTest/typed_data/Uint8ClampedList/buffer_A01_t01: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/EventObject.after.dispatchEvenr_t01: RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/ProcessingInstruction.DOMCharacterDataModified_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/DOMEvents/approved/addEventListener.optional.useCapture_t01: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestFail_t01: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestFail_t02: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestTimeout_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A06_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/EventTarget/dispatchEvent_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/EventTarget/dispatchEvent_A03_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/dom/events/type_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-createDocumentType_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-createDocument_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-hasFeature_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-adoptNode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-createElementNS_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-getElementsByTagName_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Element-childElementCount_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-appendChild_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-appendChild_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-insertBefore_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-isEqualNode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-nodeName_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-replaceChild_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A06_t03: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t03: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A08_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttribute_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/ranges/Range-comparePoint_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/link-import_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/link-import_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/loading-import_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/innerhtml-on-templates/innerhtml_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/creating-an-element-for-the-token/template-owner-document_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t07: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-delete_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-get_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-set_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/error-codes/error_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLMediaElement/addTextTrack_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/kind_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/kind_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/mode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/textfieldselection/textfieldselection-setRangeText_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange_t01: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-button-element/button-validation_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-datalist-element/datalistoptions_t01: RuntimeError # https://github.com/dart-lang/sdk/issues/29814
-WebPlatformTest/html/semantics/forms/the-form-element/form-autocomplete_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-matches_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-nameditem_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/date_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime-local_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/email_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/hidden_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/input-textselection_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/month_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/password_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/range_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/text_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/time_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/time_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/type-change-state_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/valueMode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/week_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-meter-element/meter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-recurse_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-spaces_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/grouping-content/the-blockquote-element/grouping-blockquote_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/grouping-content/the-ol-element/ol.start-reflection_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-close_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-showModal_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/scripting-1/the-script-element/async_t11: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/scripting-1/the-script-element/script-text_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/checked_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/dir_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/disabled_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/enabled_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/focus_t01: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/indeterminate_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/tabular-data/the-table-element/table-rows_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t01: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t03: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t04: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t05: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t06: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol_t00: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-005_t01: RuntimeError
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/elements-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-003_t01: RuntimeError
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-006_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-002_t01: RuntimeError
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-004_t01: RuntimeError
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-002_t01: RuntimeError # Please triage this failure.
-WebPlatformTest/shadow-dom/events/event-dispatch/test-003_t01: Skip # Times out
-WebPlatformTest/shadow-dom/events/event-retargeting/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-001_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-002_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-003_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-004_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-005_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-006_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-007_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-008_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-009_t01: Pass, RuntimeError # Issue 52
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t02: Skip # Times out. Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t04: RuntimeError, Pass # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t05: Skip # Times out. Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t06: Skip # Times out. Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: Skip # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-003_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-004_t01: RuntimeError # Issue 26729
-WebPlatformTest/shadow-dom/shadow-trees/composition/test-001_t01: RuntimeError
-WebPlatformTest/shadow-dom/shadow-trees/custom-pseudo-elements/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-001_t01: RuntimeError
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-002_t01: RuntimeError
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-003_t01: RuntimeError
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/rendering-shadow-trees/test-001_t01: RuntimeError
-WebPlatformTest/shadow-dom/shadow-trees/reprojection/test-001_t01: RuntimeError
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-001_t01: RuntimeError # Please triage this failure.
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-002_t01: RuntimeError # Please triage this failure.
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-005_t01: RuntimeError # Issue 25155
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-007_t01: RuntimeError # Issue 25155
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-009_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_constructor_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_constructor_t02: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == chrome && $system == linux ]
-LayoutTests/fast/canvas/canvas-before-css_t01: RuntimeError, Pass # Please triage this flake
-LayoutTests/fast/canvas/canvas-ellipse_t01: RuntimeError, Pass # Please triage this flake
-LayoutTests/fast/canvas/canvas-scale-fillRect-shadow_t01: RuntimeError, Pass # Please triage this flake
-LayoutTests/fast/canvas/canvas-transforms-fillRect-shadow_t01: RuntimeError, Pass # Please triage this flake
-LayoutTests/fast/canvas/webgl/WebGLContextEvent_t01: Pass, RuntimeError # 30174
-LayoutTests/fast/canvas/webgl/index-validation-verifies-too-many-indices_t01: RuntimeError, Pass # Please triage this flake
-LayoutTests/fast/canvas/webgl/premultiplyalpha-test_t01: RuntimeError, Pass # Please triage this flake
-LayoutTests/fast/canvas/webgl/triangle_t01: RuntimeError, Pass # Please triage this flake
-LayoutTests/fast/css/font-face-unicode-range-load_t01: Pass, Timeout # It is not slow, but flaky when it times out.
-LayoutTests/fast/multicol/newmulticol/balance_t04: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/combining-marks-position_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-break-after-question-mark_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/regional-indicator-symobls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/text-combine-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LibTest/math/log_A01_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == chrome && $system == macos ]
-Language/Expressions/Function_Invocation/async_invokation_t04: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/canvas-test_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: Skip # Times out. Please triage this failure.
-LayoutTests/fast/canvas/webgl/draw-webgl-to-canvas-2d_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/oes-vertex-array-object_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/observe-attributes_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/percent-height-auto-width-form-controls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t04: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/text/glyph-reordering_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-break-after-question-mark_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/text-combine-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LibTest/async/Timer/Timer.periodic_A01_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: Skip # Times out. Please triage this failure
-
-[ $compiler == dart2js && $runtime == chrome && $system != macos ]
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/zero-width-characters-complex-script_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == chrome && $system == windows ]
-Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t04: Pass, Slow # Issue 25940
-Language/Expressions/Bitwise_Expressions/method_invocation_super_t01: Pass, Slow # Issue 25940
-LayoutTests/fast/css-grid-layout/grid-element-shrink-to-fit_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == chrome && $checked ]
-LayoutTests/fast/canvas/webgl/framebuffer-object-attachment_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/read-pixels-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/css-tables_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-absolutes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-blocks_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-replaced-absolutes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/multicol_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/tables_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/width-shrinks-avoid-floats_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/box-sizing-border-box-dynamic-padding-border-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/display-inline-block-scrollbar_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/fixed-width-intrinsic-width-excludes-scrollbars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-scoping-nodes-different-order_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/submit-dialog-close-event_t01: Skip # Roll 50 failure
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-relative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-static_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLabelElement/form/test1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTableElement/insert-row_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/database-callback-delivery_t01: Skip # Roll 50 failure
-LayoutTests/fast/dom/icon-size-property_t01: Skip # Roll 50 failure
-LayoutTests/fast/events/scroll-event-phase_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/filesystem/*: Skip # Roll 50 failure
-LayoutTests/fast/filesystem/file-writer-abort_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-events_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-copy_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-entry_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-metadata_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-parent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-move_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-read-directory_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-remove_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-chars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-names_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-unicode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/flexbox/flexing-overflow-scroll-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/flexbox/intrinsic-min-width-applies-with-fixed-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/article-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/aside-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/lists/list-style-position-inside_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/lists/marker-preferred-margins_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/fixed-column-percent-logical-height-orthogonal-writing-mode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/image-inside-nested-blocks-with-border_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/available-height-for-content_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor-vertical-lr_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/absolute-table-percent-lengths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-width-with-border-padding_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/fixed-table-layout-width-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/html-table-width-max-width-constrained_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/margins-flipped-text-direction_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-max-width-preferred-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout-dynamic-cells_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout-multiple-section_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-width-exceeding-max-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-break-after-inline-latin1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/xpath-result-eventlistener-crash_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/Element.tag_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/ownerDocument_A01_t01: RuntimeError # Issue 18251
-LibTest/html/Window/requestFileSystem_A01_t01: Skip # Roll 50 failure
-LibTest/html/Window/requestFileSystem_A01_t02: Skip # Roll 50 failure
-WebPlatformTest/DOMEvents/approved/Propagation.path.target.removed_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-001_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == chrome && $csp && $minified ]
-LayoutTests/fast/dom/HTMLScriptElement/isURLAttribute_t01: SkipByDesign # Uses script injection
-LayoutTests/fast/dom/HTMLScriptElement/remove-source_t01: Pass # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/script-for-attribute-unexpected-execution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/script-reexecution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/inertContents_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/create-contextual-fragment-script-unmark-already-started_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-trace_t01: RuntimeError # runtimeType.toString() returns minified names
-LayoutTests/fast/files/workers/inline-worker-via-blob-url_t01: SkipByDesign # inlined script
-LayoutTests/fast/loader/scroll-position-restored-on-back_t01: Skip # Timeout. Please triage this failure
-WebPlatformTest/webstorage/event_local_key_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_local_newvalue_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_local_oldvalue_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_local_storagearea_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_local_url_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_session_key_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_session_newvalue_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_session_oldvalue_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_session_storagearea_t01: Skip # Timeout. Please triage this failure.
-WebPlatformTest/webstorage/event_session_url_t01: Skip # Timeout. Please triage this failure.
-
-[ $compiler == dart2js && $runtime == chrome && !$csp && !$minified ]
-LayoutTests/fast/dom/HTMLScriptElement/remove-source_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-listener-html-non-html-confusion_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime != chrome && $browser && $fast_startup ]
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-005_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-event-interface/event-path-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-007_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-008_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-009_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-010_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-011_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-012_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-013_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-001_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-007_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-010_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-005_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-004_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/event-retargeting/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t03: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t04: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-001_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/inert-html-elements/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/composition/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/distribution-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-005_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/nested-shadow-trees/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/rendering-shadow-trees/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/reprojection/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-004_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-005_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-006_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-017_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/shadow-root-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-011_t01: Fail # please triage
-
-[ $compiler == dart2js && $runtime == chromeOnAndroid ]
-Language/Expressions/Strings/escape_backspace_t01: Pass, Slow # Please triage this failure.
-LayoutTests/fast/multicol/newmulticol/balance-maxheight_t02: RuntimeError
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: Fail # Issue 22200.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: Fail # Issue 22200.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: Fail # Issue 22200.
-LibTest/core/Set/removeAll_A01_t02: Pass, Slow # Please triage this failure.
-LibTest/core/int/compareTo_A01_t01: Fail # Please triage this failure.
-LibTest/core/int/operator_left_shift_A01_t01: Fail # Please triage this failure.
-LibTest/core/int/operator_remainder_A01_t03: Fail # Please triage this failure.
-LibTest/core/int/operator_truncating_division_A01_t02: Fail # Please triage this failure.
-LibTest/core/int/remainder_A01_t01: Fail # Please triage this failure.
-LibTest/core/int/remainder_A01_t03: Fail # Please triage this failure.
-LibTest/core/int/toRadixString_A01_t01: Fail # Please triage this failure.
-LibTest/math/log_A01_t01: Fail # Please triage this failure.
-LibTest/typed_data/Float32x4List/Float32x4List.view_A01_t02: RuntimeError # Please triage this failure.
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: RuntimeError # Please triage this failure.
-LibTest/typed_data/Float64List/join_A01_t01: Pass, Slow # Please triage this failure.
-LibTest/typed_data/Int16List/single_A01_t02: Pass, Slow # Please triage this failure.
-LibTest/typed_data/Int32x4/operator_OR_A01_t01: RuntimeError # Please triage this failure.
-LibTest/typed_data/Int8List/sublist_A02_t01: Pass, Slow # Please triage this failure.
-LibTest/typed_data/Uint8ClampedList/map_A02_t01: Pass, Slow # Please triage this failure.
-
-[ $compiler == dart2js && $runtime == d8 ]
-Language/Statements/Continue/async_loops_t10: Skip # Issue 33150
-LayoutTests/*: SkipByDesign
-LibTest/html/*: SkipByDesign
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: Fail # co19-roll r587: Please triage this failure
-LibTest/typed_data/Int32x4/operator_OR_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-WebPlatformTest/*: SkipByDesign
-
-[ $compiler == dart2js && $runtime == d8 && $checked && $fast_startup && $minified ]
-Language/Classes/Constructors/Factories/function_type_t02: RuntimeError
-Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t02: RuntimeError
-Language/Generics/malformed_t02: Crash
-
-[ $compiler == dart2js && $runtime != d8 && $runtime != jsshell && !$checked ]
-LayoutTests/fast/xpath/invalid-resolver_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime != d8 && $checked ]
-LayoutTests/fast/canvas/webgl/framebuffer-object-attachment_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/read-pixels-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/empty-inline-before-collapsed-space_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/trivial-segments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/trivial_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/auto-sizing-orthogonal-flows_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-body-context_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-context_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == ff ]
-Language/Expressions/Postfix_Expressions/property_decrement_t02: Skip # Times out. Please triage this failure
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t01: Pass, RuntimeError # Issue 26615
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t04: Pass, RuntimeError # Issue 26615
-LayoutTests/fast/alignment/parse-align-items_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/alignment/parse-align-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/alignment/parse-justify-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-cancel2_t01: Skip # Times out and fails. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-prefix_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-timestamps-advance_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-within-callback_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/backgrounds/background-position-parsing-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/backgrounds/background-repeat-computed-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/backgrounds/mask-box-image-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/backgrounds/repeat/parsing-background-repeat_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/borders/border-color-visited_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/borders/border-image-width-numbers-computed-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/borders/border-radius-child_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/borders/border-width-percent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/box-sizing/css-table-with-box-sizing_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.fillText.gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.negative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.verySmall_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/DrawImageSinglePixelStretch_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/alpha_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-alphaImageData-behavior_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-arc-negative-radius_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blend-solid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-composite-canvas_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-composite-image_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-composite-text-alpha_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is not implemented.
-LayoutTests/fast/canvas/canvas-ellipse-zero-lineto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-empty-image-pattern_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-fill-zeroSizeGradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-fillRect-zeroSizeGradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-fillText-zeroSizeGradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-font-ex-units-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-frameless-document-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-invalid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-large-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-rounding_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-imageSmoothingEnabled-repaint_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/canvas-large-dimensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-large-fills_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lineDash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lose-restore-googol-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lose-restore-max-int-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-putImageData_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-resize-after-paint_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-drawImage-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-fillPath-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-fillRect-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-shadowBlur_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-strokePath-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-set-properties-with-non-invertible-ctm_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-stroke-zeroSizeGradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-strokePath-alpha-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-strokePath-gradient-shadow_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-strokeRect-alpha-shadow_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-strokeRect-gradient-shadow_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-strokeRect-zeroSizeGradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-strokeText-zeroSizeGradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-toDataURL-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-transforms-fillRect-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/draw-custom-focus-ring_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/getPutImageDataPairTest_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/gradient-addColorStop-with-invalid-color_t01: RuntimeError # Issue 28983
-LayoutTests/fast/canvas/rgba-parsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/WebGLContextEvent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/bad-arguments-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/buffer-data-array-buffer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-destroyed-crash_t01: Pass, RuntimeError # Issue 26898
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: Pass, RuntimeError # Issue 26898
-LayoutTests/fast/canvas/webgl/context-lost_t01: Pass, RuntimeError # Issue 26898
-LayoutTests/fast/canvas/webgl/error-reporting_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/get-active-test_t01: RuntimeError # Issue 28593
-LayoutTests/fast/canvas/webgl/gl-enum-tests_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-get-calls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/gl-object-get-calls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/null-object-behaviour_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/object-deletion-behaviour_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/renderer-and-vendor-strings_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-array-buffer-view_t01: Skip # Times out.
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgb565_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba4444_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba5551_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-transparent-pixels-initialized_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/uniform-location_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/uninitialized-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-depth-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-large-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/details-before-after-content_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/malformed-url_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation-before-onload_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation-display_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-element-events_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-transition-event_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-transition_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/breadth-size-resolution-grid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/calc-resolution-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-and-minmax-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-content-resolution-columns_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-flow-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-flow-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-container-change-explicit-grid-recompute-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-border-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-border-padding-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-empty-row-column_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-min-max-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-padding-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-padding-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-area-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-bad-named-area-auto-placement_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-bad-resolution-double-span_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-change-order-auto-flow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-display_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-horiz-bt_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-lr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-rl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-order-auto-flow-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-template-areas-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/justify-self-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/minmax-fixed-logical-height-only_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/minmax-fixed-logical-width-only_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-resolution-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/place-cell-by-index_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/css-tables_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/height-property-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-absolutes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-blocks_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-replaced-absolutes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/multicol_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/tables_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/width-property-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/aspect-ratio-inheritance_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/aspect-ratio-parsing-tests_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/auto-min-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/background-clip-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/background-parser-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/background-serialize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-image-null-image-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-image-style-length_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-radius-property-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-shorthand-initialize-longhands_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-start-end_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-width-large_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/checked-pseudo-selector_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/child-selector-implicit-tbody_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-none_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-normal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-quotes-06_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/counters/complex-before_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/counters/counter-reset-subtree-insert-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/css-escaped-identifier_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/css3-nth-tokens-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/cursor-parsing-image-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/cursor-parsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/deprecated-flexbox-auto-min-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/draggable-region-parser_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/dynamic-class-backdrop-pseudo_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/first-child-display-change-inverse_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/focus-display-block-inline_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-insert-link_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-property-priority_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/fontface-properties_t01: RuntimeError # Uses FontFace class, not defined for this browser.
-LayoutTests/fast/css/getComputedStyle/computed-style-border-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/computed-style-font_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/computed-style-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/font-family-fallback-reset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-radius-shorthand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-border-style-shorthand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-borderRadius-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-column-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-length-unit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-zIndex-auto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/getComputedStyle-zoom-and-background-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-border_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-clip_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-column-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-webkit-margin-collapse_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-webkit-text-stroke_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/html-attr-case-sensitivity_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/id-or-class-before-stylesheet_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/image-set-setting_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/inherit-initial-shorthand-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/inherited-properties-rare-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/insertRule-font-face_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/insertRule-media_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalid-hex-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalid-predefined-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/clears-invalidation-whole-tree_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/detach-reattach-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/dynamic-selector-list-pseudo_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/shadow-host-toggle_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/targeted-class-any-pseudo_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/targeted-class-host-pseudo_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/targeted-class-shadow-combinator_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/toggle-style-inside-shadow-root_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/legacy-opacity-styles_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-3_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-4_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-5_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-disabled-attr-parser_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/margin-start-end_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/max-device-aspect-ratio_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/media-query-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/modify-ua-rules-from-javascript_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/nested-at-rules_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/overflow-property_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/padding-start-end_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-at-rule-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-css-allowed-string-characters_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-page-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-selector-error-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-webkit-font-smoothing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/position-absolute-float_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-any_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-invalid-001_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LayoutTests/fast/css/pseudo-invalid-novalidate-001_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LayoutTests/fast/css/pseudo-required-optional-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-required-optional-005_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-required-optional-unapplied_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-target-indirect-sibling-001_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/pseudo-target-indirect-sibling-002_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/pseudo-valid-dynamic_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LayoutTests/fast/css/pseudo-valid-unapplied_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-001_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-002_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-005_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readwrite-contenteditable-recalc_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/recalc-optgroup-inherit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/shorthand-setProperty-important_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/sibling-selectors_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-element-process-crash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-nested_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-scoping-nodes-different-order_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-shadow-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-with-dom-operation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-with-important-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/test-setting-canvas-color_t01: Pass, RuntimeError # co19 issue 64 (depends on the FF version)
-LayoutTests/fast/css/text-align-webkit-match-parent-parse_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/text-align-webkit-match-parent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/unicode-bidi-computed-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/url-with-multi-byte-unicode-escape_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/vertical-align-length-copy-bug_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/webkit-color-adjust_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/webkit-keyframes-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/webkit-keyframes-errors_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/word-break-user-modify-allowed-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/zoom-property-parsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-line_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-underline-position_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent-inherited_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-justify/getComputedStyle/getComputedStyle-text-justify_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/52776_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMException/dispatch-event-exception_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMImplementation/createDocument-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMImplementation/createDocumentType-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/basic_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-strict-mode-wtih-checkbox_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-user-select-none_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-first-letter-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/replace-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/createElement-valid-names_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/createElementNS-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/document-title-get_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/attribute-uppercase_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/fixed-position-offset-parent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/getBoundingClientRect-getClientRects-relative-to-viewport_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/getClientRects_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/id-in-insert-hr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/offsetTop-table-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/scrollWidth_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/setAttributeNS-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/remove-href-from-focused-anchor_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hostname_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-pathname_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-port_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-protocol_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-search_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLBaseElement/href-attribute-resolves-with-respect-to-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLButtonElement/change-type_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-autofocus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unfocusable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unselectable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/multiple-centered-dialogs_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/show-modal-focusing-steps_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/submit-dialog-close-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/synthetic-click-inert_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-relative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-static_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDocument/active-element-gets-unforcusable_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLDocument/set-focus-on-valid-element_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-before-text-node_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-child-node_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-text-form-control_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-change-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-remove-add-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-text-form-control-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto-text-form-control_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-auto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-dir-value-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-empty-string_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-false-string_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-invalid-string_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-missing-ancestor-false_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-missing-ancestor-true_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-ancestor-missing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-false_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-missing-parent-true_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/attr-true-string_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-false_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-inherit-parent-false_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-inherit-parent-true_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-inner-outer-optimization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-invalid-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-true_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-value-caseinsensitive_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/spellcheck_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/translate_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLImageElement/image-alt-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLImageElement/image-natural-width-height_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLImageElement/parse-src_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLInputElement/input-hidden-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLInputElement/input-image-alt-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLabelElement/click-label_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLabelElement/form/test1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/link-beforeload-recursive_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/link-onerror-stylesheet-with-existent-and-non-existent-import_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/prefetch_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/resolve-url-on-insertion_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLMeterElement/set-meter-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLObjectElement/beforeload-set-text-crash_t01: Skip # Times out. Issue 24455
-LayoutTests/fast/dom/HTMLOptionElement/collection-setter-getter_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLOutputElement/dom-settable-token-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement-validity_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLProgressElement/set-progress-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-false-inside-async-false-load_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-inline-script_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-onbeforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/defer-inline-script_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/defer-onbeforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/remove-in-beforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/remove-source_t01: RuntimeError # Issue 18128
-LayoutTests/fast/dom/HTMLScriptElement/script-set-src_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLSelectElement/change-multiple-preserve-selection_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLStyleElement/style-onerror-with-existent-and-non-existent-import_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTableElement/cellpadding-attribute_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/custom-element-wrapper-gc_t01: RuntimeError # Issue 18250
-LayoutTests/fast/dom/HTMLTemplateElement/cycles-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/innerHTML_t01: RuntimeError # Issue 18249
-LayoutTests/fast/dom/HTMLTemplateElement/ownerDocumentXHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/xhtml-parsing-and-serialization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/added-out-of-order_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/database-callback-delivery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/observe-attributes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/observe-childList_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/removed-out-of-order_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/weak-callback-gc-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Node/fragment-mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Node/initial-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/bug-19527_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/getClientRects-character_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/insertNode-empty-fragment-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-constructor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-created-during-remove-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-detached-exceptions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-expand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-insertNode-assertion_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-insertNode-separate-endContainer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/SelectorAPI/caseTagX_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/detached-parent-rule-without-wrapper_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/detached-shadow-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/empty-shadow-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/removed-media-rule-deleted-parent-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/removed-stylesheet-rule-deleted-parent-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-nested-rules_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-null-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-parent-stylesheets_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-invalid-pseudo-elements_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-pseudo-elements-complex_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-with-pseudo-elements_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-resize-contents_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-resize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-screen-properties_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-scroll-arguments_t01: RuntimeError # Issue 22564
-LayoutTests/fast/dom/anchor-origin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/anchor-without-content_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/attribute-namespaces-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/background-shorthand-csstext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/blur-contenteditable_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/boolean-attribute-reflection_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/characterdata-api-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/client-width-height-quirks_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/containerNode_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/css-delete-doc_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/css-mediarule-functions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/css-rule-functions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/css-selectorText_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/css-shortHands_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/css-shorthand-common-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/attribute-changed-callback_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/constructor-calls-created-synchronously_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/created-callback_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-basic_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-namespace_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-on-create-callback_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-svg-extends_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-type-extensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/element-names_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/element-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/element-upgrade_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/invalid-type-extension-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/lifecycle-created-createElement-recursion_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/type-extensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/unresolved-pseudoclass_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/upgrade-candidate-remove-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dataset-xhtml_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dataset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/document-importNode-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dom-parse-serialize-display_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dom-parse-serialize-xmldecl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dom-parse-serialize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/domparser-parsefromstring-mimetype-support_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/focus-contenteditable_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/fragment-activation-focuses-target_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/getElementsByClassName/010_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/getElementsByClassName/011_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/importNode-unsupported-node-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/insertBefore-refChild-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/javascript-backslash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/length-attribute-mapping_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/location-hash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/navigator-userAgent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
-LayoutTests/fast/dom/offset-position-writing-modes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/option-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/partial-layout-overlay-scrollbars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/remove-body-during-body-replacement_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/set-innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/access-document-of-detached-stylesheetlist-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/base-in-shadow-tree_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-element-api_t01: RuntimeError # Issue 28983
-LayoutTests/fast/dom/shadow/content-element-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-element-includer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-element-outside-shadow-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-dynamic-attribute-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-overridden_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-relative-selector-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-with-host-pseudo-class_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-reprojection-fallback-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/custom-pseudo-in-selector-api_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/distribution-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/distribution-for-event-path_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/distribution-update-recalcs-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/elementfrompoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/elements-in-frameless-document_t01: RuntimeError # Issue 28983
-LayoutTests/fast/dom/shadow/event-path-not-in-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/form-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/get-distributed-nodes-orphan_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/get-element-by-id-in-shadow-mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/getelementbyid-in-orphan_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/getelementbyid-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/host-context-pseudo-class-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/host-pseudo-class-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/host-wrapper-reclaimed_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/insertion-point-list-menu-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/insertion-point-shadow-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/insertion-point-video-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/link-in-shadow-tree_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/no-renderers-for-light-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/offsetWidth-host-style-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/olderShadowRoot_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-checked-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-optgroup_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-optgroup_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/reinsert-insertion-point_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/remove-and-insert-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/remove-styles-in-shadow-crash-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/remove-styles-in-shadow-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-aware-shadow-root_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-content-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-disable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-element-inactive_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-element_t01: RuntimeError # Issue 28983
-LayoutTests/fast/dom/shadow/shadow-hierarchy-exception_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-removechild-and-blur-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-append_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-js-api_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-node-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-text-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-ul-li_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-dynamic-styling_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-for-input-spellcheck_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-for-input-type-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-for-unknown-with-form_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowhost-keyframes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowroot-clonenode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowroot-host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowroot-keyframes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/sibling-rules-dynamic-changes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/stale-distribution-after-shadow-removal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-insertion-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-of-distributed-node_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-sharing-sibling-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-sharing-styles-in-older-shadow-roots_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/suppress-mutation-events-in-shadow-characterdata_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/title-element-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/subtree-modified-attributes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/vertical-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/checkbox-selection-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-counter_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-quote_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/insertAdjacentElement_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/recursive-layout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/encoding/css-charset-dom_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/add-event-without-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/change-overflow-on-overflow-change_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/clipboard-clearData_t01: Skip # Times out. Issue 24455
-LayoutTests/fast/events/clipboard-dataTransferItemList_t01: Skip # Times out. Issue 24455
-LayoutTests/fast/events/div-focus_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/events/document-elementFromPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-attributes-after-exception_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-creation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-fire-order_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-listener-html-non-html-confusion_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/fire-scroll-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/form-onchange_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/init-message-event_t01: RuntimeError # Issue 28983
-LayoutTests/fast/events/initkeyboardevent-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/input-focus-no-duplicate-events_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/events/invalid-001_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LayoutTests/fast/events/invalid-002_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LayoutTests/fast/events/invalid-003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/invalid-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/invalid-005_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LayoutTests/fast/events/label-focus_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/events/mutation-during-replace-child-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/mutation-during-replace-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/nested-event-remove-node-crash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/overflowchanged-event-raf-timing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/scoped/editing-commands_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/scroll-event-does-not-bubble_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/selectstart-on-selectall_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/selectstart-prevent-selectall_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/tabindex-removal-from-focused-element_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/eventsource/eventsource-constructor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/exclusions/parsing/parsing-wrap-flow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/exclusions/parsing/parsing-wrap-through_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close-read_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close-revoke_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-constructor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-parts-slice-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-slice-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/url-null_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/xhr-response-blob_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/async-operations_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/directory-entry-to-uri_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-entry-to-uri_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-from-file-entry_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-metadata-after-write_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-abort-continue_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-abort-depth_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-abort_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-empty-blob_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-events_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-gc-blob_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-truncate-extend_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-write-overlapped_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/filesystem-reference_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/filesystem-unserializable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/filesystem-uri-origin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/input-access-entries_t01: RuntimeError # See issue 143
-LayoutTests/fast/filesystem/op-copy_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-entry_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-metadata_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-parent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-move_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-read-directory_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-remove_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-chars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-names_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-unicode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/read-directory-many_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/read-directory_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-readonly-file-object_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-readonly_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-required-arguments-getdirectory_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-required-arguments-getfile_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-temporary_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/snapshot-file-with-gc_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/flexbox/box-size-integer-overflow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/11423_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/8250_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-customError_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-patternMismatch_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-tooLong-input_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-tooLong-textarea_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-typeMismatch-email_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-typeMismatch-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-valueMissing-003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/autocomplete_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/autofocus-focus-only-once_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/autofocus-input-css-style-change_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/autofocus-opera-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/autofocus-opera-005_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/autofocus-opera-007_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/autofocus-readonly-attribute_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/button-baseline-and-collapsing_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/button/button-disabled-blur_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/checkValidity-001_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/checkValidity-002_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/checkValidity-004_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/checkValidity-handler-updates-dom_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/clone-input-with-dirty-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datalist/datalist-child-validation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datalist/datalist_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datalist/input-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-onblur-setvalue-onfocusremoved_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/ValidityState-rangeOverflow-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/ValidityState-rangeUnderflow-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/ValidityState-stepMismatch-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/ValidityState-typeMismatch-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/date-pseudo-classes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/input-date-validation-message_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/input-valueasdate-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-change-layout-by-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeOverflow-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeUnderflow-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-stepMismatch-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-typeMismatch-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/datetimelocal-input-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/datetimelocal-pseudo-classes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/forms/delete-text-with-invisible-br_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/fieldset/fieldset-disabled_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/fieldset/fieldset-elements_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/file/file-input-capture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/focus-style-pending_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/focus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/form-attribute-nonexistence-form-id_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/form-attribute_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/form-dirname-attribute_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/formmethod-attribute-button-html_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/formmethod-attribute-input-2_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/incremental-dom-property_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-appearance-elementFromPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-appearance-maxlength_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-changing-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-file-set-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-inputmode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-maxlength-unsupported_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-text-paste-maxlength_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-value-sanitization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-width-height-attributes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-widths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/listbox-select-all_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/listbox-selection-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-disabled-selected-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-selection-reset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-submit-without-selection_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/min-content-form-controls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/missing-action_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/multiple-selected-options-innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/onchange-change-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/option-change-single-selected_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/option-strip-unicode-spaces_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/parser-associated-form-removal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/paste-into-textarea_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/paste-multiline-text-input_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/plaintext-mode-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/search-popup-crasher_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-change-popup-to-listbox-in-event-handler_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/select-change-popup-to-listbox-roundtrip_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-clientheight-large-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-clientheight-with-multiple-attr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-list-box-mouse-focus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-max-length_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/select-namedItem_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/selection-direction_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/selection-start-end-readonly_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/selection-wrongtype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/setCustomValidity-existence_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/setrangetext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/shadow-tree-exposure_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/submit-form-with-dirname-attribute-with-ancestor-dir-attribute_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/submit-form-with-dirname-attribute_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-maxlength_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-no-scroll-on-blur_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-paste-newline_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-set-defaultvalue-after-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-trailing-newline_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textfield-clone_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textfield-focus-out_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/forms/validationMessage_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/willvalidate_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/article-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/aside-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-child-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-child-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-details-child-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-add-details-child-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/details-click-controls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/figcaption-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/figure-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/footer-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/header-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/hgroup-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/hidden-attr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/imports/import-element-removed-flag_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/html/imports/import-events_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/main-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/mark-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/section-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/select-dropdown-consistent-background-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/boundingBox-with-continuation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/inline-position-top-align_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/inline-relative-offset-boundingbox_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/inline-with-empty-inline-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/out-of-flow-objects-and-whitespace-after-empty-inline_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/parent-inline-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/positioned-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/innerHTML/javascript-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/lists/list-style-position-inside_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/about-blank-hash-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/about-blank-hash-kept_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/scroll-position-restored-on-back_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-clip-path-iri_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-clip-path-shape_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-mask-source-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-mask_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/invalid-lengths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/matchmedium-query-api_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/media-query-list-syntax_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/media-query-serialization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/mq-append-delete_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Skip # Issue 23475
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: Skip # Issue 23475
-LayoutTests/fast/multicol/balance-unbreakable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/break-after-always-bottom-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/break-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/column-width-zero_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/cssom-view_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/flipped-blocks-hit-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/gap-non-negative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-above-or-below_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-end-of-column-with-line-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-end-of-column_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-float_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-gap-between-pages-flipped_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-gap-between-pages_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/image-inside-nested-blocks-with-border_t01: RuntimeError # Uses -webkit-* style properties
-LayoutTests/fast/multicol/inherit-column-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/initial-column-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/inline-getclientrects_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance-images_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance-maxheight_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t04: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t05: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t06: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t07: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t08: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t09: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance_t10: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/break-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/gap-non-negative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/image-inside-nested-blocks-with-border_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-rl/break-properties_t01: RuntimeError # co19 issue 63
-LayoutTests/fast/multicol/vertical-rl/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-rl/gap-non-negative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/widows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/zeroColumnCount_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/height-during-simplified-layout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/overflow-rtl-vertical-origin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/scrollbar-restored_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/parser/block-nesting-cap_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/foster-parent-adopted_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/fragment-parser-doctype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/innerhtml-with-prefixed-elements_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/stray-param_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/strict-img-in-map_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/container-width-zero_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-height-text-controls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/ruby/ruby-line-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/scrolling/scroll-element-into-view_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/selectors/specificity-overflow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-image-threshold_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-lengths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-outside-none_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-outside_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-property-aliases_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-big-box-border-radius_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-diamond-margin-polygon_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-right_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-right_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-cancel_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-speak_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-voices_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/storage/disallowed-storage_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/storage/storage-disallowed-in-data-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/cssom-subpixel-precision_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/getbbox_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/svg/tabindex-focus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-angle_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-integer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-length_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-number_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/anonymous-table-section-removed_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/border-changes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/caption-orthogonal-writing-mode-sizing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-max-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/incorrect-colgroup-span-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/large-shrink-wrapped-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-css-block-table_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-css-inline-table_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-html-block-table_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-html-inline-table_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/padding-height-and-override-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-cell-offset-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-size-integer-overflow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/td-bordercolor-attribute_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-kana_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-russian_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-soft-hyphen_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/iso-8859-8_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/listbox-width-rtl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/rtl-text-wrapping_t01: RuntimeError # See issue 143
-LayoutTests/fast/text/international/thai-offsetForPosition-inside-character_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-break-after-question-mark_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-breaks-after-hyphen-before-number_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/offsetForPosition-cluster-at-zero_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/pre-wrap-trailing-tab_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/remove-zero-length-run_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-ltr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-pixel_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-rtl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-vertical_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-webfont_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/text-combine-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/window-find_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/zero-width-characters-complex-script_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/zero-width-characters_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/anchor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/file-http-base_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/file_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/host-lowercase-per-scheme_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/idna2003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/idna2008_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/invalid-urls-utf8_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/ipv4_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/ipv6_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/mailto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/path_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/port_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/query_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative-unix_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative-win_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/segments-from-data-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/segments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/standard-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/auto-sizing-orthogonal-flows_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/block-formatting-context_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/display-mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow-scroll_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/flipped-blocks-hit-test-overflow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/percentage-padding_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/positionForPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/table-hit-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/vertical-inline-block-hittest_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-abort_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-arraybuffer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-before-open-sync-request_t01: Pass, RuntimeError # Issue 23479. Unsuppress once bots are all updated.
-LayoutTests/fast/xpath/4XPath/Borrowed/cz_20030217_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Borrowed/namespace-nodes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/implicit-node-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/node-name-case-sensitivity_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/node-name-case-sensitivity_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/position_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/paths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/reverse-axes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xsl/default-html_t01: RuntimeError # Please triage this failure
-LibTest/async/Stream/Stream.periodic_A01_t01: Pass, RuntimeError # Please triage this failure
-LibTest/async/Timer/Timer.periodic_A01_t01: Pass, RuntimeError # Please triage this failure
-LibTest/core/RegExp/Pattern_semantics/firstMatch_Atom_A03_t03: Pass, RuntimeError # Please triage this failure
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: RuntimeError # Issue 22200
-LibTest/core/double/roundToDouble_A01_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LibTest/core/double/round_A01_t01: Pass, RuntimeError # Passes on ff 35. Please triage this failure
-LibTest/core/int/compareTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/operator_left_shift_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/operator_remainder_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/int/operator_truncating_division_A01_t02: RuntimeError # Please triage this failure
-LibTest/core/int/remainder_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/remainder_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/int/toRadixString_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t06: RuntimeError # Please triage this failure
-LibTest/html/Document/childNodes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Document/clone_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Document/clone_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Document/securityPolicy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/Element.tag_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/attributeChanged_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/blur_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/borderEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/contentEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/dataset_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/enteredView_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/focus_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/getAttributeNS_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/getNamespacedAttributes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/isTagSupported_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/leftView_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/marginEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/mouseOverEvent_A01_t01: RuntimeError, Pass # Issue 30068
-LibTest/html/Element/mouseWheelEvent_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/onMouseEnter_A01_t01: RuntimeError, Pass # Please triage this failure
-LibTest/html/Element/onMouseOver_A01_t01: RuntimeError, Pass # Please triage this failure
-LibTest/html/Element/onMouseWheel_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/paddingEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/Element/querySelectorAll_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/replaceWith_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/tagName_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/Element/translate_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getAllResponseHeaders_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getResponseHeader_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getString_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/onError_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequest/overrideMimeType_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/request_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/responseText_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequest/responseType_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/setRequestHeader_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/statusText_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/status_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequestUpload/onAbort_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onError_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoadEnd_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/borderEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/IFrameElement/clone_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/contentWindow_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createShadowRoot_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/focus_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/getNamespacedAttributes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/innerHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/leftView_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/marginEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/IFrameElement/offsetTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/onMouseWheel_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/outerHtml_setter_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/paddingEdge_A01_t01: RuntimeError # Issue 16574
-LibTest/html/IFrameElement/querySelector_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/setInnerHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/spellcheck_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/tagName_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/translate_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/append_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Node/nodes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/nodes_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Node/parent_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/previousNode_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/document_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A03_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A04_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A06_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveBy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveTo_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/postMessage_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/postMessage_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Window/requestFileSystem_A01_t01: Crash, RuntimeError # Please triage this failure
-LibTest/html/Window/requestFileSystem_A01_t02: Crash, RuntimeError # Please triage this failure
-LibTest/html/Window/requestFileSystem_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/resizeBy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/resizeTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/math/log_A01_t01: Fail # Please triage this failure.
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: RuntimeError # Please triage this failure
-LibTest/typed_data/Int32x4/operator_OR_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/EventObject.after.dispatchEvenr_t01: RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/ProcessingInstruction.DOMCharacterDataModified_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/DOMEvents/approved/addEventListener.optional.useCapture_t01: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestFail_t01: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestFail_t02: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestTimeout_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A06_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A07_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A08_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t02: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/localName_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/namespace_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/EventTarget/dispatchEvent_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/events/type_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-createDocumentType_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-createDocument_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-hasFeature_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-adoptNode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-createElementNS_t01: Pass, RuntimeError # Issue 28983
-WebPlatformTest/dom/nodes/Document-getElementsByTagName_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Element-childElementCount_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-appendChild_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-appendChild_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-insertBefore_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-isEqualNode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-nodeName_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-replaceChild_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A06_t03: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t03: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A08_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A10_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttribute_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/ranges/Range-comparePoint_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/link-import_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/link-import_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/loading-import_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/additions-to-the-steps-to-clone-a-node/templates-copy-document-owner_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/innerhtml-on-templates/innerhtml_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/creating-an-element-for-the-token/template-owner-document_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/template-element/node-document-changes_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/template-element/template-as-a-descendant_t01: RuntimeError # In Firefox, setting innerHTML on a Frameset element does nothing.
-WebPlatformTest/html-templates/template-element/template-content_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-newelements_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t07: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t05: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-delete_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-get_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-set_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/error-codes/error_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLMediaElement/addTextTrack_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/kind_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/kind_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/mode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/textfieldselection/selection_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/forms/textfieldselection/textfieldselection-setRangeText_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/textfieldselection/textfieldselection-setSelectionRange_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-button-element/button-validation_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-datalist-element/datalistoptions_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-autocomplete_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-matches_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-nameditem_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/date_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime-local_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/email_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/hidden_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/input-textselection_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/month_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/password_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/range_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/range_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/text_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/time_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/time_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/type-change-state_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/valueMode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/week_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-meter-element/meter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-recurse_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-spaces_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/grouping-content/the-blockquote-element/grouping-blockquote_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/grouping-content/the-ol-element/ol.start-reflection_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-close_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-showModal_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/scripting-1/the-script-element/script-text_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/checked_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/dir_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/enabled_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/focus_t01: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/indeterminate_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/tabular-data/the-table-element/table-rows_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/syntax/parsing/math-parse_t03: RuntimeError # Issue 22564
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t03: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t04: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t05: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t06: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol_t00: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/elements-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-event-interface/event-path-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-008_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-009_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-010_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-011_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-012_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-013_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-010_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-006_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-006_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-008_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-009_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t03: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t04: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t05: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t06: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/inert-html-elements/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/composition/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/custom-pseudo-elements/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/distribution-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/nested-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/rendering-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/reprojection/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-006_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-017_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/shadow-root-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-009_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-011_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_constructor_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_constructor_t02: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == ff && $system == linux ]
-LayoutTests/fast/canvas/webgl/*: Skip # Issue 26725
-LayoutTests/fast/canvas/webgl/oes-element-index-uint_t01: Skip # Times out always
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-input-validation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-sub-image-2d-bad-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/texture-complete_t01: Skip # Times out sometimes
-LayoutTests/fast/canvas/webgl/texture-npot_t01: Skip # Times out sometimes
-LayoutTests/fast/forms/submit-form-attributes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/whitespace/nowrap-line-break-after-white-space_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
-LibTest/core/Uri/Uri_A06_t03: Pass, Slow
-LibTest/core/Uri/encodeQueryComponent_A01_t02: Pass, Slow
-
-[ $compiler == dart2js && $runtime == ff && $system == windows ]
-Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t06: Pass, Slow # Issue 25940
-Language/Classes/Constructors/Factories/return_type_t03: Pass, Slow # Issue 25940
-Language/Classes/Constructors/Factories/return_type_t05: Pass, Slow # Issue 25940
-Language/Classes/Constructors/Factories/return_wrong_type_t02: Pass, Slow # Issue 25940
-LayoutTests/fast/canvas/webgl/draw-webgl-to-canvas-2d_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/drawingbuffer-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-multiple-ranges-for-unicode-range_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/submit-form-attributes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/color-does-not-include-alpha_t01: RuntimeError # Issue 31161
-LayoutTests/fast/media/media-query-list_t01: Pass, RuntimeError # Issue 32257
-LibTest/core/Uri/Uri_A06_t03: Pass, Slow
-LibTest/core/Uri/encodeQueryComponent_A01_t02: Pass, Slow
-
-[ $compiler == dart2js && $runtime == ff && $checked ]
-LayoutTests/fast/canvas/webgl/framebuffer-object-attachment_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/oes-vertex-array-object_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/read-pixels-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/auto-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/implicit-rows-auto-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-column-flex-items_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/intrinsic-sized-flex-items_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-intrinsic-dimensions/width-shrinks-avoid-floats_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/box-sizing-border-box-dynamic-padding-border-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/display-inline-block-scrollbar_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/fixed-width-intrinsic-width-excludes-scrollbars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTableElement/insert-row_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/flexbox/flexing-overflow-scroll-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/flexbox/intrinsic-min-width-applies-with-fixed-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/lists/marker-preferred-margins_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/fixed-column-percent-logical-height-orthogonal-writing-mode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/available-height-for-content_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/absolute-table-percent-lengths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout-dynamic-cells_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout-multiple-section_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-break-after-inline-latin1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/xpath-result-eventlistener-crash_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/ownerDocument_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/Propagation.path.target.removed_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-createDocumentType_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/clearing-the-stack-back-to-a-given-context/clearing-stack-back-to-a-table-row-context_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == ff && !$checked ]
-LayoutTests/fast/xpath/invalid-resolver_t01: RuntimeError # Please triage this failure
-
-[ $compiler == dart2js && $runtime == ie11 ]
-*: SkipByDesign # ie11 bot has not been migrated to the test matrix, co19-1 has thousands of broken tests due to breaking changes with ALL_CAPS constants.
-
-[ $compiler == dart2js && $runtime == jsshell ]
-Language/Expressions/Await_Expressions/evaluation_throws_t05: RuntimeError
-Language/Expressions/Await_Expressions/execution_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Expressions/Await_Expressions/execution_t02: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Expressions/Await_Expressions/execution_t03: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Expressions/Await_Expressions/execution_t04: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Expressions/Await_Expressions/execution_t05: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Expressions/Await_Expressions/execution_t06: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t19: RuntimeError
-Language/Libraries_and_Scripts/Exports/syntax_t02: RuntimeError
-Language/Libraries_and_Scripts/Imports/syntax_t37: RuntimeError
-Language/Statements/For/Asynchronous_For_in/execution_t04: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield/execution_async_t04: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t02: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t03: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t04: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t05: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t06: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t07: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t08: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t09: RuntimeError # Issue 7728, timer not supported in jsshell
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t10: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Future/Future.delayed_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Future/Future.delayed_A03_t01: Fail # Issue 7728, timer not supported in jsshell
-LibTest/async/Future/doWhile_A05_t01: RuntimeError # Please triage. May be unsupported timer issue 7728.
-LibTest/async/Future/forEach_A04_t02: RuntimeError # Please triage. May be unsupported timer issue 7728.
-LibTest/async/Future/timeout_A01_t01: RuntimeError # Please triage. May be unsupported timer issue 7728.
-LibTest/async/Future/wait_A01_t07: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Stream/Stream.periodic_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Stream/Stream.periodic_A02_t01: Fail # Issue 7728, timer not supported in jsshell
-LibTest/async/Stream/Stream.periodic_A03_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Stream/asBroadcastStream_A03_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Stream/asBroadcastStream_A04_t03: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Stream/first_A01_t01: Fail # co19-roll r546: Please triage this failure
-LibTest/async/Stream/first_A02_t02: Fail # co19-roll r546: Please triage this failure
-LibTest/async/Stream/timeout_A01_t01: RuntimeError # Please triage. May be unsupported timer issue 7728.
-LibTest/async/Stream/timeout_A02_t01: RuntimeError # Please triage. May be unsupported timer issue 7728.
-LibTest/async/Stream/timeout_A03_t01: RuntimeError # Please triage. May be unsupported timer issue 7728.
-LibTest/async/Stream/timeout_A04_t01: RuntimeError # Please triage. May be unsupported timer issue 7728.
-LibTest/async/Timer/Timer.periodic_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Timer/Timer.periodic_A02_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Timer/Timer_A01_t01: Fail # Issue 7728, timer not supported in jsshell
-LibTest/async/Timer/cancel_A01_t01: Fail # Issue 7728, timer not supported in jsshell
-LibTest/async/Timer/isActive_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Timer/isActive_A01_t02: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Zone/createPeriodicTimer_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/async/Zone/createTimer_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/List/sort_A01_t04: Skip # Must be a bug in jsshell, test sometimes times out.
-LibTest/core/Map/Map_class_A01_t04: Pass, Slow # Issue 8096
-LibTest/core/Stopwatch/elapsedInMs_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/elapsedInUs_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/elapsedTicks_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/Stopwatch/elapsedTicks_A01_t02: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/elapsedTicks_A01_t03: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/elapsed_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/elapsed_A01_t02: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/elapsed_A01_t03: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/start_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/Stopwatch/start_A01_t02: RuntimeError # Please triage this failure
-LibTest/core/Stopwatch/start_A01_t03: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Stopwatch/stop_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/core/Uri/Uri_A06_t03: Pass, Slow
-LibTest/typed_data/Float32List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: Fail # co19-roll r587: Please triage this failure
-LibTest/typed_data/Float64List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int16List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int32List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int32x4/operator_OR_A01_t01: RuntimeError # Issue 7728, timer not supported in jsshell
-LibTest/typed_data/Int8List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint16List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint32List/toList_A01_t01: Skip # issue 16934, co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8ClampedList/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8List/toList_A01_t01: Skip # co19-roll r559: Please triage this failure
-
-[ $compiler == dart2js && $runtime == jsshell && $checked ]
-LibTest/core/Map/Map_class_A01_t04: Skip # Issue 18093, timeout.
-LibTest/core/Uri/Uri_A06_t03: Skip # Issue 18093, timeout.
-LibTest/core/Uri/encodeQueryComponent_A01_t02: Skip # Issue 18093, timeout.
-
-[ $compiler == dart2js && $runtime == safari ]
-LayoutTests/fast/alignment/parse-align-items_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/alignment/parse-align-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/alignment/parse-justify-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-cancel2_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-cancel_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-timestamps-advance_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-timestamps_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/animation/request-animation-frame-within-callback_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/backgrounds/background-repeat-computed-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/backgrounds/repeat/parsing-background-repeat_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/borders/border-image-width-numbers-computed-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.fillText.gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.negative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.veryLarge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/2d.text.draw.fill.maxWidth.verySmall_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/alpha_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-arc-negative-radius_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-as-image-incremental-repaint_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/canvas-blend-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blend-solid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-clipping_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-color-over-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-color-over-gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-color-over-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-color-over-pattern_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-fill-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-global-alpha_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-gradient-over-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-gradient-over-gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-gradient-over-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-gradient-over-pattern_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-image-over-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-image-over-gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-image-over-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-image-over-pattern_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-pattern-over-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-pattern-over-gradient_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-pattern-over-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-pattern-over-pattern_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-blending-transforms_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-currentTransform_t01: RuntimeError # Feature is not implemented
-LayoutTests/fast/canvas/canvas-drawImage-scaled-copy-to-self_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-ellipse-zero-lineto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-empty-image-pattern_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-fillStyle-no-quirks-parsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-font-consistency_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-invalid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-large-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-getImageData-largeNonintegralDimensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-large-dimensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-large-fills_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lineDash-input-sequence_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lose-restore-googol-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-lose-restore-max-int-size_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-putImageData_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-quadratic-same-endpoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-resetTransform_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-shadowBlur_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-scale-strokePath-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/canvas-setTransform_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/draw-custom-focus-ring_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/drawImage-with-broken-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/drawImage-with-valid-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/getPutImageDataPairTest_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/setWidthResetAfterForcedRender_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/webgl/WebGLContextEvent_t01: Skip # Issue 29010
-LayoutTests/fast/canvas/webgl/context-attributes-alpha-depth-stencil-antialias-t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/context-lost-restored_t01: Skip # Issue 28640
-LayoutTests/fast/canvas/webgl/context-lost_t01: Skip
-LayoutTests/fast/canvas/webgl/glsl-conformance_t01: Skip # Times out 1 out of 20.
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgb565_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba4444_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image-rgba5551_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgb565_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba4444_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video-rgba5551_t01: Skip # Please triage this failure
-LayoutTests/fast/canvas/webgl/tex-image-and-sub-image-2d-with-video_t01: Skip
-LayoutTests/fast/canvas/webgl/texture-transparent-pixels-initialized_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/uniform-location_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-depth-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/canvas/webgl/webgl-large-texture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/malformed-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation-before-onload_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-animation_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-element-events_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-transition-event_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css-generated-content/pseudo-transition_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/auto-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/breadth-size-resolution-grid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/calc-resolution-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/display-grid-set-get_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-and-minmax-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-content-resolution-columns_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/flex-content-resolution-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-columns-rows-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-flow-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-auto-flow-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-container-change-explicit-grid-recompute-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-border-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-border-padding-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-empty-row-column_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-min-max-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-padding-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-padding-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-element-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-area-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-bad-named-area-auto-placement_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-bad-resolution-double-span_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-change-order-auto-flow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-display_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-horiz-bt_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-lr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows-vert-rl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-auto-columns-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-margin-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-item-order-auto-flow-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/grid-template-areas-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/implicit-rows-auto-resolution_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/justify-self-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/minmax-fixed-logical-height-only_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/minmax-fixed-logical-width-only_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-in-percent-grid_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-grid-item-in-percent-grid-track_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item-update_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-padding-margin-resolution-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/percent-resolution-grid-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css-grid-layout/place-cell-by-index_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/MarqueeLayoutTest_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/aspect-ratio-inheritance_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/aspect-ratio-parsing-tests_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/background-serialize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/border-image-style-length_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/checked-pseudo-selector_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/computed-offset-with-zoom_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-none_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-normal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/content/content-quotes-01_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-LayoutTests/fast/css/content/content-quotes-05_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-LayoutTests/fast/css/counters/counter-cssText_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/css-escaped-identifier_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/css3-nth-tokens-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/cssText-shorthand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/csstext-of-content-string_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/deprecated-flexbox-auto-min-size_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/css/draggable-region-parser_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/dynamic-class-backdrop-pseudo_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/first-child-display-change-inverse_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/focus-display-block-inline_t01: Pass, RuntimeError # Fails 5 out of 10.
-LayoutTests/fast/css/font-face-cache-bug_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-unicode-range-load_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-unicode-range-monospace_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-face-unicode-range-overlap-load_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/font-property-priority_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/css/font-shorthand-from-longhands_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/fontface-properties_t01: RuntimeError # Uses FontFace class, not defined for this browser.
-LayoutTests/fast/css/fontfaceset-download-error_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/fontfaceset-events_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/fontfaceset-loadingdone_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/computed-style-border-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/computed-style-font_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/computed-style-with-zoom_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getComputedStyle/counterIncrement-without-counter_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-clip_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/getPropertyValue-columns_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/html-attr-case-sensitivity_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/id-or-class-before-stylesheet_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/important-js-override_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/inherit-initial-shorthand-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/inherited-properties-rare-text_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/css/invalid-not-with-simple-selector-sequence_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/css/invalid-predefined-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/detach-reattach-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/shadow-host-toggle_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/targeted-class-host-pseudo_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/targeted-class-shadow-combinator_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/invalidation/toggle-style-inside-shadow-root_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-3_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-4_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/link-alternate-stylesheet-5_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/media-query-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/media-rule-no-whitespace_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parse-color-int-or-percent-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-at-rule-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-css-nonascii_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-css-nth-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-font-variant-ligatures_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/css/parsing-object-position_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-page-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-selector-error-recovery_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/parsing-unexpected-eof_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/pseudo-any_t01: Pass, RuntimeError # Fails 4 out of 10.
-LayoutTests/fast/css/pseudo-target-indirect-sibling-001_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/pseudo-target-indirect-sibling-002_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-001_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-002_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/readonly-pseudoclass-opera-005_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/selector-text-escape_t01: Pass, RuntimeError # Issue 29634
-LayoutTests/fast/css/shorthand-setProperty-important_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/sticky/parsing-position-sticky_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/string-quote-binary_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-nested_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-scoping-nodes-different-order_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-shadow-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-with-dom-operation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/style-scoped/style-scoped-with-important-rule_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/stylesheet-enable-first-alternate-on-load-sheet_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/stylesheet-enable-second-alternate-link_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/transform-origin-parsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/unicode-bidi-computed-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css/webkit-keyframes-errors_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-align-last/getComputedStyle/getComputedStyle-text-align-last-inherited_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-align-last/getComputedStyle/getComputedStyle-text-align-last_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-line_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-decoration-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-decoration/getComputedStyle/getComputedStyle-text-underline-position_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent-inherited_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-indent/getComputedStyle/getComputedStyle-text-indent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/css3-text/css3-text-justify/getComputedStyle/getComputedStyle-text-justify_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/52776_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Attr/direction-attribute-set-and-cleared_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMException/XPathException_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMException/dispatch-event-exception_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/DOMImplementation/createDocument-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/basic_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-strict-mode-wtih-checkbox_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-user-select-none_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-in-zoom-and-scroll_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/caretRangeFromPoint-with-first-letter-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/CaretRangeFromPoint/hittest-relative-to-viewport_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Document/createElementNS-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/getClientRects_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/offsetTop-table-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Element/setAttributeNS-namespace-err_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/remove-href-from-focused-anchor_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hostname_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-pathname_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-autofocus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-close-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-enabled_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-open_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-return-value_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-scrolled-viewport_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/dialog-show-modal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-does-not-match-disabled-selector_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unfocusable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/inert-node-is-unselectable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/multiple-centered-dialogs_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/non-anchored-dialog-positioning_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/show-modal-focusing-steps_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/submit-dialog-close-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/synthetic-click-inert_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-relative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDialogElement/top-layer-position-static_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLDocument/active-element-gets-unforcusable_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLDocument/set-focus-on-valid-element_t01: Skip
-LayoutTests/fast/dom/HTMLElement/insertAdjacentHTML-errors_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/set-inner-outer-optimization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLElement/spellcheck_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLFormElement/move-option-between-documents_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLImageElement/image-alt-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLImageElement/parse-src_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLInputElement/input-image-alt-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test-nonexistent_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/link-and-subresource-test_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-onerror_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/prefetch-onload_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/prefetch_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/HTMLLinkElement/resolve-url-on-insertion_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/dom/HTMLOptionElement/collection-setter-getter_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLOutputElement/dom-settable-token-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLOutputElement/htmloutputelement_t01: Pass, RuntimeError # Issue 29632
-LayoutTests/fast/dom/HTMLScriptElement/async-false-inside-async-false-load_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-inline-script_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/async-onbeforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/defer-inline-script_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/defer-onbeforeload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLScriptElement/script-set-src_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLSelectElement/selected-index-preserved-when-option-text-changes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/custom-element-wrapper-gc_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/cycles-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/HTMLTemplateElement/ownerDocumentXHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/observe-childList_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/observe-options-attributes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/observe-options-character-data_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/MutationObserver/weak-callback-gc-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Node/initial-values_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/bug-19527_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/insertNode-empty-fragment-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-comparePoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-constructor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-detached-exceptions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-exceptions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-expand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-insertNode-separate-endContainer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-insertNode-splittext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-isPointInRange_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/range-on-detached-node_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Range/surroundContents-for-detached-node_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/css-insert-import-rule-to-shadow-stylesheets_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/css-medialist-item_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/detached-shadow-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/StyleSheet/empty-shadow-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/TreeWalker/TreeWalker-basic_t01: RuntimeError
-LayoutTests/fast/dom/Window/atob-btoa_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/getMatchedCSSRules-parent-stylesheets_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-resize-contents_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-resize_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/Window/window-scroll-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/XMLSerializer-attribute-entities_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/XMLSerializer-double-xmlns_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/anchor-without-content_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/attribute-namespaces-get-set_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/background-shorthand-csstext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/characterdata-api-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/client-width-height-quirks_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/css-selectorText_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/dom/custom/attribute-changed-callback_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/constructor-calls-created-synchronously_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/created-callback_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-basic_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-namespace_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-on-create-callback_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-svg-extends_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/document-register-type-extensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/element-names_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/element-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/element-upgrade_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/lifecycle-created-createElement-recursion_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/type-extensions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/unresolved-pseudoclass_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/custom/upgrade-candidate-remove-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dataset-xhtml_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/dataset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/document-set-title-mutations_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/document-set-title-no-reuse_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/domparser-parsefromstring-mimetype-support_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/fragment-activation-focuses-target_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl-doesnt-fire-onscroll_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-in-rtl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/horizontal-scrollbar-when-dir-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/html-collections-named-getter-mandatory-arg_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/icon-size-property_t01: Pass, RuntimeError # Issue 29632
-LayoutTests/fast/dom/implementation-api-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/importNode-unsupported-node-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/location-hash_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/dom/mutation-event-remove-inserted-node_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/navigatorcontentutils/is-protocol-handler-registered_t01: Skip # API not supported.
-LayoutTests/fast/dom/navigatorcontentutils/register-protocol-handler_t01: Skip # API not supported.
-LayoutTests/fast/dom/navigatorcontentutils/unregister-protocol-handler_t01: Skip # API not supported.
-LayoutTests/fast/dom/object-plugin-hides-properties_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/dom/option-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars_t01: Pass, RuntimeError # Issue 53
-LayoutTests/fast/dom/partial-layout-overlay-scrollbars_t01: Pass, RuntimeError # Fails 8 out of 10.
-LayoutTests/fast/dom/set-innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/access-document-of-detached-stylesheetlist-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/base-in-shadow-tree_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-element-api_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-element-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-element-includer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-element-outside-shadow-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-dynamic-attribute-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-overridden_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-relative-selector-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-pseudo-element-with-host-pseudo-class_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/content-reprojection-fallback-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/custom-pseudo-in-selector-api_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/distribution-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/distribution-for-event-path_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/distribution-update-recalcs-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/elementfrompoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/elements-in-frameless-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/event-path-not-in-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/event-path_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/form-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/get-distributed-nodes-orphan_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/get-element-by-id-in-shadow-mutation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/getComputedStyle-composed-parent-dirty_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/getelementbyid-in-orphan_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/getelementbyid-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/host-context-pseudo-class-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/host-pseudo-class-css-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/host-wrapper-reclaimed_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/insertion-point-list-menu-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/insertion-point-shadow-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/insertion-point-video-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/link-in-shadow-tree_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/nested-reprojection-inconsistent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/no-renderers-for-light-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/offsetWidth-host-style-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/olderShadowRoot_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-checked-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-optgroup_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-disabled-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-optgroup_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/pseudoclass-update-enabled-option_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/reinsert-insertion-point_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/remove-and-insert-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/remove-styles-in-shadow-crash-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/remove-styles-in-shadow-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-aware-shadow-root_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-content-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-disable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-element-inactive_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-hierarchy-exception_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-removechild-and-blur-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-append_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-js-api_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-node-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-root-text-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadow-ul-li_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-dynamic-styling_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-for-input-spellcheck_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-for-input-type-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowdom-for-unknown-with-form_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowhost-keyframes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowroot-clonenode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowroot-host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/shadowroot-keyframes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/sibling-rules-dynamic-changes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/stale-distribution-after-shadow-removal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-insertion-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-of-distributed-node_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-sharing-sibling-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/style-sharing-styles-in-older-shadow-roots_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/suppress-mutation-events-in-shadow-characterdata_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dom/shadow/title-element-in-shadow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-counter_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-quote_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/crash-generated-text_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/insertAdjacentElement_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/insertAdjacentHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/dynamic/recursive-layout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/add-event-without-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/clipboard-clearData_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/clipboard-dataTransferItemList_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/dispatch-event-being-dispatched_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/document-elementFromPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-creation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-fire-order_t01: Pass, RuntimeError # Issue 29632
-LayoutTests/fast/events/event-listener-html-non-html-confusion_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-on-created-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/event-on-xhr-document_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/initkeyboardevent-crash_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/invalid-003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/invalid-004_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/mutation-during-replace-child-2_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/mutation-during-replace-child_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/overflowchanged-event-raf-timing_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/events/scroll-event-does-not-bubble_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/events/tabindex-removal-from-focused-element_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/exclusions/parsing/parsing-wrap-flow_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/exclusions/parsing/parsing-wrap-through_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close-read_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close-revoke_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-close_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-constructor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-parts-slice-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/blob-slice-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/file-reader-abort-in-last-progress_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/file-reader-done-reading-abort_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/files/file-reader-methods-illegal-arguments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/file-reader-readystate_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/url-null_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/files/xhr-response-blob_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/async-operations_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/directory-entry-to-uri_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-entry-to-uri_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-from-file-entry_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-metadata-after-write_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-abort-continue_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-abort-depth_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-abort_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-empty-blob_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-events_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-gc-blob_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-truncate-extend_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/file-writer-write-overlapped_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/filesystem-reference_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/filesystem-unserializable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/filesystem-uri-origin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/input-access-entries_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-copy_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-entry_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-metadata_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-get-parent_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-move_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-read-directory_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-remove_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-chars_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-names_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/op-restricted-unicode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/read-directory-many_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/read-directory_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-readonly-file-object_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-readonly_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-required-arguments-getdirectory_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-required-arguments-getfile_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/simple-temporary_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/filesystem/snapshot-file-with-gc_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/flexbox/repaint-scrollbar_t01: Pass, RuntimeError # Fails 2 out of 10.
-LayoutTests/fast/forms/ValidityState-customError_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/ValidityState-typeMismatch-email_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/autocomplete_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/autofocus-input-css-style-change_t01: Pass, RuntimeError # Fails 7 out of 10.
-LayoutTests/fast/forms/autofocus-opera-007_t01: RuntimeError # See issue 143
-LayoutTests/fast/forms/button-baseline-and-collapsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/button/button-disabled-blur_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/checkValidity-001_t01: RuntimeError # co19 issue 142
-LayoutTests/fast/forms/clone-input-with-dirty-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/color/color-setrangetext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/color/input-value-sanitization-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datalist/datalist-child-validation_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/forms/datalist/datalist_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datalist/input-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-change-layout-by-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-onblur-setvalue-onfocusremoved_t01: Pass, RuntimeError # Fails 6 out of 10.
-LayoutTests/fast/forms/date/ValidityState-rangeOverflow-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/ValidityState-rangeUnderflow-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/ValidityState-stepMismatch-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/ValidityState-typeMismatch-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/date-input-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/date-pseudo-classes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/date-setrangetext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/input-date-validation-message_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/input-valueasdate-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/date/input-valueasnumber-date_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-change-layout-by-value_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeOverflow-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-rangeUnderflow-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-stepMismatch-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/ValidityState-typeMismatch-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/datetimelocal-input-type_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/datetimelocal-pseudo-classes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/datetimelocal-setrangetext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasdate-datetimelocal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/datetimelocal/input-valueasnumber-datetimelocal_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/forms/file/file-input-capture_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/form-attribute_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-appearance-elementFromPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-inputmode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-type-change3_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-value-sanitization_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/input-width-height-attributes-without-renderer-loaded-image_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/interactive-validation-assertion-by-validate-twice_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/interactive-validation-attach-assertion_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/interactive-validation-select-crash_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-disabled-selected-option_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-LayoutTests/fast/forms/menulist-selection-reset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/menulist-submit-without-selection_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-LayoutTests/fast/forms/multiple-selected-options-innerHTML_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/option-change-single-selected_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/option-strip-unicode-spaces_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/parser-associated-form-removal_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/plaintext-mode-1_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/search-popup-crasher_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-LayoutTests/fast/forms/select-max-length_t01: Pass, RuntimeError # Issue 29634
-LayoutTests/fast/forms/selection-wrongtype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/setCustomValidity-existence_t01: RuntimeError # co19 issue 141
-LayoutTests/fast/forms/setrangetext_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-maxlength_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-paste-newline_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/textarea-selection-preservation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/forms/validationMessage_t01: RuntimeError # Issue 32567
-LayoutTests/fast/html/hidden-attr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/imports/import-element-removed-flag_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/html/imports/import-events_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/html/select-dropdown-consistent-background-color_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/boundingBox-with-continuation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/continuation-inlines-inserted-in-reverse-after-block_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/inline-position-top-align_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/inline-with-empty-inline-children_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/out-of-flow-objects-and-whitespace-after-empty-inline_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/parent-inline-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/inline/positioned-element-padding-contributes-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/innerHTML/innerHTML-svg-write_t01: RuntimeError # Issue 25941
-LayoutTests/fast/innerHTML/innerHTML-uri-resolution_t01: Pass, RuntimeError # Issue 29634
-LayoutTests/fast/innerHTML/javascript-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/about-blank-hash-change_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/about-blank-hash-kept_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/hashchange-event-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/onhashchange-attribute-listeners_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/loader/scroll-position-restored-on-back_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/loader/scroll-position-restored-on-reload-at-load-event_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/loader/stateobjects/replacestate-in-onunload_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-clip-path-shape_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/masking/parsing-mask_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/matchmedium-query-api_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/media-query-list-syntax_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/media-query-list_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/mq-append-delete_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/media/mq-js-media-except_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/media/mq-js-media-except_t03: RuntimeError # Please triage this failure
-LayoutTests/fast/media/mq-parsing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/mediastream/RTCIceCandidate_t01: Skip # Please triage this failure
-LayoutTests/fast/mediastream/RTCPeerConnection_t01: Skip # Issue 23475
-LayoutTests/fast/mediastream/constructors_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/balance-short-trailing-empty-block_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/balance-trailing-border_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/balance-trailing-border_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/balance-unbreakable_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/break-after-always-bottom-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/break-properties_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/columns-shorthand-parsing_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/cssom-view_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-above-or-below_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-end-of-column-with-line-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-end-of-column_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/hit-test-float_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/newmulticol/balance-images_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/orphans-relayout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-lr/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/multicol/vertical-rl/float-truncation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/child-100percent-height-inside-fixed-container-with-overflow-auto_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/replaced-child-100percent-height-inside-fixed-container-with-overflow-auto_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/overflow/scrollbar-restored_t01: RuntimeError # Fails 10 out of 10.
-LayoutTests/fast/parser/foster-parent-adopted_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/fragment-parser-doctype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/parser/innerhtml-with-prefixed-elements_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/available-height-for-content_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/container-width-zero_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/preferred-widths_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-height-text-controls_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/replaced/table-percent-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/ruby/ruby-line-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/scrolling/scroll-element-into-view_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-lengths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-margin_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/parsing/parsing-shape-outside_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-big-box-border-radius_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-diamond-margin-polygon_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-margin-right_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-image-margin_t02: Pass, RuntimeError # Fails on 6.2. Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-left_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-floats-inset-rounded-different-writing-modes-right_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/shapes/shape-outside-floats/shape-outside-rounded-boxes_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-cancel_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-speak_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice_t01: Skip # Times out. Please triage this failure
-LayoutTests/fast/speechsynthesis/speech-synthesis-voices_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/storage/disallowed-storage_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/storage/storage-disallowed-in-data-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/cssom-subpixel-precision_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/sub-pixel/shadows-computed-style_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/tabindex-focus_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-angle_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-integer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-length_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/svg/whitespace-number_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/absolute-table-percent-lengths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/anonymous-table-section-removed_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/caption-orthogonal-writing-mode-sizing_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/col-width-span-expand_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-max-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/css-table-max-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/fixed-table-layout-width-change_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-bottom-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-right-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-with-borders-bottom-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/hittest-tablecell-with-borders-right-edge_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/html-table-width-max-width-constrained_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/large-shrink-wrapped-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/margins-perpendicular-containing-block_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-css-block-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-css-inline-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-html-block-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/min-width-html-inline-table_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/table/nested-tables-with-div-offset_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/padding-height-and-override-height_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout-dynamic-cells_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout-multiple-section_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/switch-table-layout_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows-except-overlapped_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-all-rowspans-height-distribution-in-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-cell-offset-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-colgroup-present-after-table-row_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-rowspan-cell-with-empty-cell_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-rowspan-height-distribution-in-rows_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/table/table-with-content-width-exceeding-max-width_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text-autosizing/vertical-writing-mode_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-case-folding_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-russian_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-soft-hyphen_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/find-spaces_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/font-ligature-letter-spacing_t01: Pass, RuntimeError # Fails on 6.2. Please triage this failure
-LayoutTests/fast/text/font-ligatures-linebreak-word_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/font-ligatures-linebreak_t01: Pass, RuntimeError # Please triage this failure
-LayoutTests/fast/text/glyph-reordering_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-LayoutTests/fast/text/international/cjk-segmentation_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/iso-8859-8_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/listbox-width-rtl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/rtl-text-wrapping_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/international/thai-offsetForPosition-inside-character_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/line-break-after-question-mark_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/offsetForPosition-cluster-at-zero_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/remove-zero-length-run_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-ltr_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-pixel_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-rtl_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-vertical_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/sub-pixel/text-scaling-webfont_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/text/text-combine-shrink-to-fit_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/transforms/bounding-rect-zoom_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/transforms/hit-test-large-scale_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/anchor_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/file-http-base_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/file_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/host-lowercase-per-scheme_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/host_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/idna2003_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/idna2008_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/invalid-urls-utf8_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/ipv4_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/ipv6_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/path_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/port_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/query_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative-unix_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative-win_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/relative_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/safari-extension_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/segments-from-data-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/segments_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/url/standard-url_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/positionForPoint_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/table-hit-test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/writing-mode/vertical-font-vmtx-units-per-em_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-get_t01: RuntimeError # Roll 50 failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-arraybuffer_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-before-open-sync-request_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xmlhttprequest/xmlhttprequest-responsetype-sync-request_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Borrowed/cz_20030217_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Borrowed/namespace-nodes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_core_functions_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_node_test_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/4XPath/Core/test_parser_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/ambiguous-operators_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/attr-namespace_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/ensure-null-namespace_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/implicit-node-args_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/invalid-resolver_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/node-name-case-sensitivity_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/node-name-case-sensitivity_t02: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/position_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/abbreviations_t01: RuntimeError # Dartium JSInterop failure
-LayoutTests/fast/xpath/py-dom-xpath/axes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/expressions_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/py-dom-xpath/paths_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xpath/reverse-axes_t01: RuntimeError # Please triage this failure
-LayoutTests/fast/xsl/default-html_t01: RuntimeError # Please triage this failure
-LibTest/collection/ListMixin/ListMixin_class_A01_t02: Pass, Slow # Issue 32862.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_CharacterClassEscape_A03_t01: RuntimeError # Safari is not on Unicode 6.3 yet.
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/splitQueryString_A02_t01: Fail # Safari is not on Unicode 6.3 yet.
-LibTest/core/double/roundToDouble_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/double/round_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/compareTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/operator_left_shift_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/operator_remainder_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/int/operator_truncating_division_A01_t02: RuntimeError # Please triage this failure
-LibTest/core/int/remainder_A01_t01: RuntimeError # Please triage this failure
-LibTest/core/int/remainder_A01_t03: RuntimeError # Please triage this failure
-LibTest/core/int/toRadixString_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/CanvasRenderingContext2D/addEventListener_A01_t06: RuntimeError # Please triage this failure
-LibTest/html/Document/childNodes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Document/clone_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Document/clone_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Document/getElementsByTagName_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Document/securityPolicy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/Element.tag_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/attributeChanged_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/borderEdge_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/contentEdge_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/dataset_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/enteredView_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/getAttributeNS_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/getAttributeNS_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/getBoundingClientRect_A01_t02: Pass, RuntimeError # Issue 53
-LibTest/html/Element/getClientRects_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/getNamespacedAttributes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/isContentEditable_A01_t01: Pass, RuntimeError # Issue 28187
-LibTest/html/Element/isContentEditable_A02_t01: Pass, RuntimeError # Issue 28187
-LibTest/html/Element/isTagSupported_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/isTagSupported_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/leftView_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/marginEdge_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/mouseWheelEvent_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/onMouseWheel_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Element/onTransitionEnd_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/paddingEdge_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Element/querySelectorAll_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/replaceWith_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Element/tagName_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/Element/transitionEndEvent_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getAllResponseHeaders_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getResponseHeader_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/getString_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/onError_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequest/request_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/responseText_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequest/responseType_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/setRequestHeader_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/statusText_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequest/status_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/HttpRequestUpload/onError_A01_t02: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoadEnd_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/HttpRequestUpload/onLoad_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/IFrameElement.created_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/attributeChanged_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/attributes_setter_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/blur_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/borderEdge_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/clone_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/contentWindow_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createFragment_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/createShadowRoot_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/getClientRects_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/getNamespacedAttributes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/innerHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/isContentEditable_A01_t01: RuntimeError, Pass # Fails 19 out of 20.
-LibTest/html/IFrameElement/leftView_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/marginEdge_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/offsetTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/onMouseWheel_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/IFrameElement/onTransitionEnd_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/outerHtml_setter_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/paddingEdge_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/querySelector_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/setInnerHtml_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/IFrameElement/tagName_A01_t03: RuntimeError # Please triage this failure
-LibTest/html/Node/append_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Node/nodes_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/nodes_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Node/parent_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Node/previousNode_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/animationFrame_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Window/close_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/document_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A03_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/find_A06_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveBy_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/moveTo_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/postMessage_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/postMessage_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Window/requestFileSystem_A01_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/requestFileSystem_A01_t02: RuntimeError # Please triage this failure
-LibTest/html/Window/requestFileSystem_A02_t01: RuntimeError # Please triage this failure
-LibTest/html/Window/resizeBy_A01_t01: Skip # Times out. Please triage this failure
-LibTest/html/Window/resizeTo_A01_t01: RuntimeError # Please triage this failure
-LibTest/typed_data/Float32x4List/Float32x4List.view_A06_t01: RuntimeError # Please triage this failure
-LibTest/typed_data/Int32x4/operator_OR_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/EventObject.after.dispatchEvenr_t01: RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/EventObject.multiple.dispatchEvent_t01: RuntimeError # Please triage this failure
-WebPlatformTest/DOMEvents/approved/ProcessingInstruction.DOMCharacterDataModified_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/DOMEvents/approved/addEventListener.optional.useCapture_t01: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestFail_t01: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestFail_t02: RuntimeError # Please triage this failure
-WebPlatformTest/Utils/test/asyncTestTimeout_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A06_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A07_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/concepts/type_A08_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElementNS_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/createElement_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A01_t02: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/isAttribute_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/localName_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/custom-elements/instantiating/namespace_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/EventTarget/dispatchEvent_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/EventTarget/dispatchEvent_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/EventTarget/dispatchEvent_A03_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/dom/events/type_A01_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-createDocument_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/DOMImplementation-hasFeature_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-adoptNode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-getElementsByTagName_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Document-importNode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Element-childElementCount_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-appendChild_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-appendChild_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-insertBefore_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-isEqualNode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/Node-replaceChild_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/attributes_A04_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/attributes_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A05_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A06_t03: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A07_t03: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A08_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A09_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttributeNS_A09_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttribute_A02_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttribute_A02_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/nodes/attributes/setAttribute_A03_t01: RuntimeError # Please triage this failure
-WebPlatformTest/dom/ranges/Range-attributes_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/ranges/Range-comparePoint_t02: RuntimeError # Please triage this failure
-WebPlatformTest/dom/ranges/Range-comparePoint_t03: RuntimeError # Please triage this failure
-WebPlatformTest/dom/ranges/Range-detach_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/link-import_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/link-import_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html-imports/loading-import_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/definitions/template-contents-owner-test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/innerhtml-on-templates/innerhtml_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/additions-to-the-in-head-insertion-mode/generating-of-implied-end-tags_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/parsing-html-templates/creating-an-element-for-the-token/template-owner-document_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html-templates/template-element/node-document-changes_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-image_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-media/pageload-video_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/browsers/browsing-the-web/read-text/load-text-plain_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-getter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.body-setter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.getElementsByName-namespace_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t05: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/document.title_t07: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/documents/dom-tree-accessors/nameditem_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-delete_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-get_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/dom/elements/global-attributes/dataset-set_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/document-metadata/styling/LinkStyle_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/error-codes/error_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/cues_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/embedded-content/media-elements/interfaces/TextTrack/mode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/attributes-common-to-form-controls/formAction_document_address_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/attributes-common-to-form-controls/formaction_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/textfieldselection/selection_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/textfieldselection/textfieldselection-setRangeText_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-button-element/button-validation_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-datalist-element/datalistelement_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-datalist-element/datalistoptions_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-autocomplete_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-matches_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-form-element/form-elements-nameditem_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/color_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/date_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime-local_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/datetime_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/email_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/hidden_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/input-textselection_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/month_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/password_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/range_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/text_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/time_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/time_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/type-change-state_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/url_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/valueMode_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-input-element/week_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-meter-element/meter_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-recurse_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/forms/the-option-element/option-text-spaces_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/grouping-content/the-blockquote-element/grouping-blockquote_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/grouping-content/the-ol-element/ol.start-reflection_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/interactive-elements/the-details-element/toggleEvent_t01: Skip # Times out. Please triage this failure
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-close_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/interactive-elements/the-dialog-element/dialog-showModal_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/scripting-1/the-script-element/async_t11: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/scripting-1/the-script-element/script-text_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/checked_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/default_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/dir_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/disabled_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/enabled_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/focus_t01: Pass, RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/indeterminate_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/selectors/pseudo-classes/inrange-outofrange_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/tabular-data/the-table-element/table-insertRow_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/tabular-data/the-table-element/table-rows_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/semantics/tabular-data/the-tr-element/rowIndex_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/syntax/serializing-html-fragments/outerHTML_t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t01: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t02: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t03: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t04: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t05: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol/t06: RuntimeError # Please triage this failure
-WebPlatformTest/html/webappapis/system-state-and-capabilities/the-navigator-object/protocol_t00: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/elements-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-event-interface/event-path-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-008_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-009_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-010_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-011_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-012_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-013_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/shadowroot-object/shadowroot-methods/test-010_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-006_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-dispatch/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/event-retargeting/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-006_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-008_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-009_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t02: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t03: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t04: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t05: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t06: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/events/retargeting-relatedtarget/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/html-forms/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/html-elements-in-shadow-trees/inert-html-elements/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/composition/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/custom-pseudo-elements/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/hosting-multiple-shadow-trees/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/distribution-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/nested-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/rendering-shadow-trees/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/reprojection/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-003_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-004_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-006_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/satisfying-matching-criteria/test-017_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/dom-tree-accessors-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-002_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/shadow-root-001_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-005_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-007_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-009_t01: RuntimeError # Please triage this failure
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-011_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_constructor_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_constructor_t02: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_local_key_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_session_key_t01: RuntimeError # Please triage this failure
-WebPlatformTest/webstorage/event_session_storagearea_t01: Pass, RuntimeError # Fails on 7.1. Please triage this failure
-WebPlatformTest/webstorage/event_session_url_t01: Skip # Times out. Please triage this failure
-
-[ $compiler == dart2js && $browser ]
-LayoutTests/fast/css-generated-content/bug91547_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/dom/HTMLButtonElement/change-type_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/dom/HTMLElement/insertAdjacentHTML-errors_t01: RuntimeError # Issue 747
-LayoutTests/fast/dom/StyleSheet/discarded-sheet-owner-null_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/dom/css-cached-import-rule_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/dom/cssTarget-crash_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/dom/empty-hash-and-search_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/dom/shadow/form-in-shadow_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/dynamic/insertAdjacentHTML_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/filesystem/file-after-reload-crash_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/date/date-interactive-validation-required_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/datetimelocal/datetimelocal-interactive-validation-required_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/form-submission-create-crash_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/formmethod-attribute-button-html_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/formmethod-attribute-input-2_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/formmethod-attribute-input-html_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/missing-action_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/submit-form-with-dirname-attribute-with-ancestor-dir-attribute_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/submit-form-with-dirname-attribute-with-nonhtml-ancestor_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/submit-form-with-dirname-attribute_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/submit-nil-value-field-assert_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/forms/textarea-submit-crash_t01: Skip # Test reloads itself. Issue 18558.
-LayoutTests/fast/html/adjacent-html-context-element_t01: RuntimeError # Issue 747
-LayoutTests/fast/lists/list-style-position-inside_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/media/mq-parsing_t01: Pass, RuntimeError # Issue 747, False passes on Firefox, but trying to keep these grouped with the issue.
-LayoutTests/fast/mediastream/RTCPeerConnection-AddRemoveStream_t01: Skip # Passes on Safari, Issue 23475
-LayoutTests/fast/mediastream/getusermedia_t01: Skip # Please triage this failure.
-LayoutTests/fast/multicol/balance-unbreakable_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/column-width-zero_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance-images_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance-maxheight_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t02: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t04: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t05: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t06: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t07: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t08: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t09: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/newmulticol/balance_t10: Pass, RuntimeError # Issue 747, I don't understand how, but sometimes passes.
-LayoutTests/fast/multicol/orphans-relayout_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/multicol/widows_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/overflow/overflow-rtl-vertical-origin_t01: Pass, RuntimeError # Issue 747, False passes on Firefox, but trying to keep these grouped with the issue.
-LayoutTests/fast/overflow/replaced-child-100percent-height-inside-fixed-container-with-overflow-auto_t01: Pass, RuntimeError # Issue 747, False pass on Safari
-LayoutTests/fast/parser/parse-wbr_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor-vertical-lr_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-and-fixed-ancestor_t01: Pass # Issue 747, False pass
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor-vertical-lr_t01: RuntimeError, Pass # Issue 747, Spurious intermittent pass
-LayoutTests/fast/replaced/computed-image-width-with-percent-height-inside-table-cell-and-fixed-ancestor_t01: RuntimeError, Pass # Issue 747, Spurious intermittent pass
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-anonymous-table-cell_t01: RuntimeError, Pass # Issue 747, Spurious intermittent pass.
-LayoutTests/fast/replaced/iframe-with-percentage-height-within-table-with-table-cell-ignore-height_t01: RuntimeError, Pass # Issue 747, Spurious intermittent pass
-LayoutTests/fast/ruby/parse-rp_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/sub-pixel/replaced-element-baseline_t01: Pass, RuntimeError # Issue 747, Fails on Safari, false pass on others
-LayoutTests/fast/table/anonymous-table-section-removed_t01: Skip # Issue 747
-LayoutTests/fast/table/col-width-span-expand_t01: Skip # Issue 747
-LayoutTests/fast/table/fixed-table-layout-width-change_t01: Pass, RuntimeError # Issue 747, False passes on Firefox
-LayoutTests/fast/table/hittest-tablecell-bottom-edge_t01: Skip # Issue 747
-LayoutTests/fast/table/hittest-tablecell-with-borders-bottom-edge_t01: Skip # Issue 747
-LayoutTests/fast/table/html-table-width-max-width-constrained_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/table/margins-flipped-text-direction_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/table/min-max-width-preferred-size_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/table/table-width-exceeding-max-width_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/text/font-fallback-synthetic-italics_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/text/font-ligatures-linebreak-word_t01: Skip # Issue 747
-LayoutTests/fast/text/font-ligatures-linebreak_t01: Skip # Issue 747
-LayoutTests/fast/text/glyph-reordering_t01: Pass, RuntimeError # Issue 747, This is a false pass. The font gets sanitized, so whether it works or not probably depends on default sizes.
-LayoutTests/fast/text/international/rtl-text-wrapping_t01: Pass # Issue 747, This is a false pass. All the content gets sanitized, so there's nothing to assert fail on. If the code did anything it would fail.
-LayoutTests/fast/text/ipa-tone-letters_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/text/line-break-after-empty-inline-hebrew_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/text/regional-indicator-symobls_t01: Pass, Fail # Issue 747
-LayoutTests/fast/transforms/bounding-rect-zoom_t01: RuntimeError, Pass # Issue 747, Erratic, but only passes because divs have been entirely removed.
-LayoutTests/fast/transforms/scrollIntoView-transformed_t01: Pass, RuntimeError # Issue 747, False passes on Firefox.
-LayoutTests/fast/transforms/transform-hit-test-flipped_t01: Pass, RuntimeError # Issue 747, Passes on Firefox, but is clearly not testing what it's trying to test.
-LayoutTests/fast/writing-mode/percentage-margins-absolute-replaced_t01: Pass, RuntimeError # Issue 747
-LayoutTests/fast/writing-mode/positionForPoint_t01: Pass, RuntimeError # Issue 747
-LibTest/html/IFrameElement/appendHtml_A01_t01: Pass, RuntimeError # Issue 23462
-LibTest/html/IFrameElement/appendHtml_A01_t02: Pass, RuntimeError # Issue 23462
-WebPlatformTest/html/semantics/document-metadata/styling/LinkStyle_t01: Pass, RuntimeError # Issue 747
-WebPlatformTest/html/semantics/forms/the-form-element/form-nameditem_t01: RuntimeError # Issue 747
-WebPlatformTest/html/semantics/grouping-content/the-ol-element/ol.start-reflection_t02: Skip # Issue 747
-WebPlatformTest/html/semantics/scripting-1/the-script-element/async_t11: Skip # Issue 747
-WebPlatformTest/html/semantics/selectors/pseudo-classes/disabled_t01: Pass, RuntimeError # Issue 747, Spurious pass
-WebPlatformTest/html/semantics/selectors/pseudo-classes/link_t01: Pass, RuntimeError # Issue 747
-WebPlatformTest/html/syntax/parsing/Document.getElementsByTagName-foreign_t01: RuntimeError, Pass # Issue 747
-
-[ $compiler == dart2js && $browser && $fast_startup ]
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-001_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/attributes/test-004_t02: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/extensions-to-element-interface/methods/elements-001_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-004_t02: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-content-html-element/test-006_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-003_t02: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/elements-and-dom-objects/the-shadow-html-element/test-005_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/event-dispatch/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/event-dispatch/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/event-dispatch/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/event-retargeting/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/event-retargeting/test-002_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/events/event-retargeting/test-004_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-004_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-005_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-006_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-007_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-008_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/events-that-are-always-stopped/test-009_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t02: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t05: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-001_t06: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/events/retargeting-focus-events/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-003_t01: Fail # please triage
-WebPlatformTest/shadow-dom/html-elements-and-their-shadow-trees/test-004_t01: Fail # custom elements not supported
-WebPlatformTest/shadow-dom/shadow-trees/custom-pseudo-elements/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/distributed-pseudo-element/test-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/lower-boundary-encapsulation/test-004_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/ownerdocument-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-001_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/selectors-api-002_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-005_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-007_t01: Fail # please triage
-WebPlatformTest/shadow-dom/shadow-trees/upper-boundary-encapsulation/test-009_t01: Fail # please triage
-
-[ $compiler == dart2js && $checked ]
-Language/Errors_and_Warnings/static_warning_t02: RuntimeError # Please triage this failure
-Language/Errors_and_Warnings/static_warning_t03: RuntimeError # Please triage this failure
-Language/Errors_and_Warnings/static_warning_t04: RuntimeError # Please triage this failure
-Language/Errors_and_Warnings/static_warning_t05: RuntimeError # Please triage this failure
-Language/Errors_and_Warnings/static_warning_t06: RuntimeError # Please triage this failure
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_super_t01/01: Fail # Please triage this failure
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_variable_t01/01: Fail # Please triage this failure
-Language/Expressions/Assignment/super_assignment_dynamic_error_t01: RuntimeError # Please triage this failure
-Language/Expressions/Assignment/super_assignment_static_warning_t04/01: Fail # Please triage this failure
-Language/Expressions/Function_Expressions/static_type_dynamic_async_t03: RuntimeError # Please triage this failure
-Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t03: RuntimeError # Please triage this failure
-Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t03: RuntimeError # Please triage this failure
-Language/Expressions/Function_Expressions/static_type_form_3_async_t03: RuntimeError # Please triage this failure
-Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t03: RuntimeError # Please triage this failure
-Language/Expressions/Function_Expressions/static_type_form_3_syncs_t03: RuntimeError # Please triage this failure
-Language/Expressions/If_null_Expressions/static_type_t01: RuntimeError # Please triage this failure
-Language/Expressions/If_null_Expressions/static_type_t02: RuntimeError # Please triage this failure
-Language/Functions/async_return_type_t01: RuntimeError # Please triage this failure
-Language/Functions/generator_return_type_t01: RuntimeError # Please triage this failure
-Language/Functions/generator_return_type_t02: RuntimeError # Please triage this failure
-Language/Statements/Assert/execution_t03: RuntimeError # Please triage this failure
-Language/Statements/Assert/execution_t11: RuntimeError # Please triage this failure
-Language/Statements/Return/runtime_type_t04: RuntimeError # Issue 26584
-Language/Statements/Switch/execution_t01: Fail # Missing type check in switch expression
-Language/Statements/Switch/type_t01: RuntimeError # Issue 16089
-Language/Types/Dynamic_Type_System/malbounded_type_error_t01: RuntimeError # Issue 21088
-Language/Types/Parameterized_Types/malbounded_t06: RuntimeError # Issue 21088
-Language/Types/Static_Types/malformed_type_t01: RuntimeError # Issue 21089
-LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_class_A01_t01: Skip # Timesout. Please triage this failure.
-LibTest/core/Map/Map_class_A01_t04: Slow, Pass # Please triage this failure
-LibTest/core/Uri/Uri_A06_t03: Slow, Pass # Please triage this failure
-LibTest/math/Point/operator_mult_A02_t01: RuntimeError # Issue 1533
-
-[ $compiler == dart2js && $checked && $host_checked ]
-Language/Classes/Constructors/Factories/function_type_t02: RuntimeError
-Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t02: RuntimeError
-Language/Generics/malformed_t02: Crash
-
-[ $compiler == dart2js && !$checked && $enable_asserts ]
-Language/Statements/Assert/execution_t01: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/execution_t02: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/execution_t03: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/execution_t04: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/execution_t05: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/execution_t06: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/execution_t11: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/production_mode_t01: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/type_t02: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/type_t03: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/type_t04: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/type_t05: SkipByDesign # Unspec'd feature.
-Language/Statements/Assert/type_t06: SkipByDesign # Unspec'd feature.
-
-[ $compiler == dart2js && $fast_startup ]
-Language/Classes/Instance_Methods/Operators/unary_minus: Fail # mirrors not supported
-Language/Expressions/Null/instance_of_class_null_t01: Fail # mirrors not supported
-Language/Metadata/before_class_t01: Fail # mirrors not supported
-Language/Metadata/before_ctor_t01: Fail # mirrors not supported
-Language/Metadata/before_ctor_t02: Fail # mirrors not supported
-Language/Metadata/before_export_t01: Fail # mirrors not supported
-Language/Metadata/before_factory_t01: Fail # mirrors not supported
-Language/Metadata/before_function_t01: Fail # mirrors not supported
-Language/Metadata/before_function_t02: Fail # mirrors not supported
-Language/Metadata/before_function_t03: Fail # mirrors not supported
-Language/Metadata/before_function_t04: Fail # mirrors not supported
-Language/Metadata/before_function_t05: Fail # mirrors not supported
-Language/Metadata/before_function_t06: Fail # mirrors not supported
-Language/Metadata/before_function_t07: Fail # mirrors not supported
-Language/Metadata/before_import_t01: Fail # mirrors not supported
-Language/Metadata/before_library_t01: Fail # mirrors not supported
-Language/Metadata/before_param_t01: Fail # mirrors not supported
-Language/Metadata/before_param_t02: Fail # mirrors not supported
-Language/Metadata/before_param_t03: Fail # mirrors not supported
-Language/Metadata/before_param_t04: Fail # mirrors not supported
-Language/Metadata/before_param_t05: Fail # mirrors not supported
-Language/Metadata/before_param_t06: Fail # mirrors not supported
-Language/Metadata/before_param_t07: Fail # mirrors not supported
-Language/Metadata/before_param_t08: Fail # mirrors not supported
-Language/Metadata/before_param_t09: Fail # mirrors not supported
-Language/Metadata/before_type_param_t01: Fail # mirrors not supported
-Language/Metadata/before_typedef_t01: Fail # mirrors not supported
-Language/Metadata/before_variable_t01: Fail # mirrors not supported
-Language/Metadata/before_variable_t02: Fail # mirrors not supported
-Language/Metadata/compilation_t01: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t02: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t03: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t04: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t05: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t06: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t07: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t08: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t09: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t10: Pass # mirrors not supported, fails for the wrong reason
-Language/Metadata/compilation_t11: Pass # mirrors not supported, fails for the wrong reason
-WebPlatformTest/shadow-dom/testcommon: Fail # mirrors not supported
-
-[ $compiler == dart2js && $host_checked ]
-Language/Classes/Constructors/Generative_Constructors/execution_t04: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t05: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t06: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t07: Crash
-Language/Classes/Constructors/Generative_Constructors/execution_t12: Crash
-Language/Expressions/Constants/depending_on_itself_t03: Crash
-Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t04: Crash
-Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t02: Crash
-Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t05: Crash
-Language/Expressions/Method_Invocation/Super_Invocation/invocation_t02: Crash
-Language/Expressions/This/placement_t04: Crash
-Language/Functions/setter_modifier_t01: Crash
-Language/Functions/setter_modifier_t02: Crash
-Language/Functions/setter_modifier_t03: Crash
-Language/Functions/setter_modifier_t04: Crash
-Language/Functions/setter_modifier_t05: Crash
-Language/Functions/setter_modifier_t06: Crash
-Language/Statements/For/syntax_t13: Crash
-Language/Statements/For/syntax_t20: Crash
-LibTest/core/Invocation/namedArguments_A01_t01: Crash
-LibTest/html/HttpRequest/getAllResponseHeaders_A01_t01: Crash
-LibTest/html/HttpRequest/getResponseHeader_A01_t01: Crash
-LibTest/html/HttpRequest/getString_A01_t01: Crash
-LibTest/html/HttpRequest/onError_A01_t02: Crash
-LibTest/html/HttpRequest/request_A01_t01: Crash
-LibTest/html/HttpRequest/responseText_A01_t02: Crash
-LibTest/html/HttpRequest/setRequestHeader_A01_t01: Crash
-LibTest/html/HttpRequest/statusText_A01_t01: Crash
-LibTest/html/HttpRequest/status_A01_t01: Crash
-LibTest/html/HttpRequestUpload/onError_A01_t02: Crash
-LibTest/html/HttpRequestUpload/onLoadEnd_A01_t01: Crash
-LibTest/html/HttpRequestUpload/onLoadStart_A01_t01: Crash
-LibTest/html/HttpRequestUpload/onLoad_A01_t01: Crash
-LibTest/html/IFrameElement/contentWindow_A01_t01: Crash
-LibTest/html/Window/postMessage_A01_t02: Crash
-LibTest/html/Window/requestFileSystem_A01_t01: Crash
-LibTest/html/Window/requestFileSystem_A01_t02: Crash
-LibTest/html/Window/requestFileSystem_A02_t01: Crash
-
-[ $compiler == dart2js && $jscl ]
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t01: RuntimeError, OK # This is not rejected by V8. Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t05: RuntimeError # Issue 22200
-LibTest/core/RegExp/Pattern_semantics/firstMatch_NonEmptyClassRanges_A01_t06: RuntimeError # Issue 22200
-LibTest/core/int/compareTo_A01_t01: RuntimeError, OK # Requires big int.
-LibTest/core/int/hashCode_A01_t01: RuntimeError, OK # co19 testing missing assertion.
-LibTest/core/int/isEven_A01_t01: RuntimeError, OK # Not in API.
-LibTest/core/int/isOdd_A01_t01: RuntimeError, OK # Not in API.
-LibTest/core/int/operator_left_shift_A01_t01: RuntimeError, OK # Requires big int.
-LibTest/core/int/operator_remainder_A01_t03: RuntimeError, OK # Leg only has double.
-LibTest/core/int/operator_truncating_division_A01_t02: RuntimeError, OK # Leg only has double.
-LibTest/core/int/remainder_A01_t01: RuntimeError, OK # Requires big int.
-LibTest/core/int/remainder_A01_t03: RuntimeError, OK # Leg only has double.
-LibTest/core/int/toDouble_A01_t01: RuntimeError, OK # Requires big int.
-LibTest/core/int/toRadixString_A01_t01: RuntimeError, OK # Bad test: uses Expect.fail, Expect.throws, assumes case of result, and uses unsupported radixes.
-
-[ $compiler == dart2js && $minified ]
-Language/Expressions/Assignment/expression_assignment_failed_t01: RuntimeError
-Language/Expressions/Assignment/expression_assignment_failed_t02: RuntimeError
-Language/Expressions/Assignment/expression_assignment_value_t02: RuntimeError
-Language/Expressions/Assignment/indexed_expression_t04: RuntimeError
-Language/Expressions/Function_Invocation/Function_Expression_Invocation/property_extraction_t02: RuntimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t02: RuntimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t03: RuntimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/no_such_method_t01: RuntimeError # Issue 32434
-LibTest/core/Invocation/memberName_A01_t01: RuntimeError
-LibTest/typed_data/Float32List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float32x4List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Float64List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int16List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int32List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Int8List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint16List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint32List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-LibTest/typed_data/Uint8List/runtimeType_A01_t01: Fail # co19-roll r559: Please triage this failure
-
-[ $compiler == dart2js && !$minified ]
-Language/Expressions/Identifier_Reference/evaluation_variable_or_parameter_t02: RuntimeError
-
-[ $compiler == dart2js && $strong ]
-*: SkipByDesign # co19 suite is not for strong-mode
-
-[ $compiler == dart2js && !$strong ]
-LibTest/typed_data/Float32x4List/first_A01_t02: Pass # co19 issue 130 + type error
-LibTest/typed_data/Float32x4List/last_A01_t02: Pass # co19 issue 130 + type error
diff --git a/tests/co19/co19-kernel.status b/tests/co19/co19-kernel.status
deleted file mode 100644
index b96fc73..0000000
--- a/tests/co19/co19-kernel.status
+++ /dev/null
@@ -1,1775 +0,0 @@
-# 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.
-
-[ $compiler == fasta ]
-Language/Classes/Constructors/Generative_Constructors/final_variables_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
-Language/Expressions/Instance_Creation/New/generic_type_t01: CompileTimeError
-Language/Expressions/Instance_Creation/New/generic_type_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/generic_type_t03: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
-Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
-Language/Functions/Formal_Parameters/Optional_Formals/default_value_t01: MissingCompileTimeError
-Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: MissingCompileTimeError
-Language/Libraries_and_Scripts/Exports/same_name_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
-Language/Libraries_and_Scripts/Imports/library_name_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
-Language/Types/Parameterized_Types/arity_mismatch_t01: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t05: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t07: CompileTimeError
-Language/Types/Type_Void/syntax_t09: MissingCompileTimeError
-LayoutTests/*: Skip # TODO(ahe): Make dart:html available.
-LibTest/collection/Maps/*: Skip # Maps class no longer exists.
-LibTest/html/*: Skip # TODO(ahe): Make dart:html available.
-WebPlatformTest/*: Skip # TODO(ahe): Make dart:html available.
-
-[ $compiler != dart2js && $fasta && !$strong ]
-Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t03: MissingCompileTimeError
-Language/Expressions/Constants/bitwise_operators_t02: MissingCompileTimeError
-Language/Expressions/Constants/exception_t04: MissingCompileTimeError
-Language/Expressions/Constants/literal_number_t01: CompileTimeError
-Language/Expressions/Constants/literal_string_t02: MissingCompileTimeError
-Language/Expressions/Constants/logical_expression_t03: MissingCompileTimeError
-Language/Expressions/Constants/math_operators_t01: CompileTimeError
-Language/Expressions/Constants/math_operators_t04: MissingCompileTimeError
-Language/Expressions/Constants/math_operators_t06: CompileTimeError
-Language/Expressions/Numbers/static_type_of_int_t01: CompileTimeError
-Language/Expressions/Numbers/syntax_t10: CompileTimeError
-LibTest/core/double/isInfinite_A01_t03: CompileTimeError
-LibTest/core/int/abs_A01_t01: CompileTimeError
-LibTest/core/int/ceilToDouble_A01_t01: CompileTimeError
-LibTest/core/int/ceil_A01_t01: CompileTimeError
-LibTest/core/int/floorToDouble_A01_t01: CompileTimeError
-LibTest/core/int/floor_A01_t01: CompileTimeError
-LibTest/core/int/isInfinite_A01_t01: CompileTimeError
-LibTest/core/int/isNaN_A01_t01: CompileTimeError
-LibTest/core/int/isNegative_A01_t01: CompileTimeError
-LibTest/core/int/operator_GE_A01_t01: CompileTimeError
-LibTest/core/int/operator_LE_A01_t01: CompileTimeError
-LibTest/core/int/operator_division_A01_t01: CompileTimeError
-LibTest/core/int/operator_multiplication_A01_t01: CompileTimeError
-LibTest/core/int/operator_remainder_A01_t02: CompileTimeError
-LibTest/core/int/operator_subtraction_A01_t01: CompileTimeError
-LibTest/core/int/operator_truncating_division_A01_t01: CompileTimeError
-LibTest/core/int/operator_unary_minus_A01_t01: CompileTimeError
-LibTest/core/int/parse_A01_t01: CompileTimeError
-LibTest/core/int/remainder_A01_t02: CompileTimeError
-LibTest/core/int/roundToDouble_A01_t01: CompileTimeError
-LibTest/core/int/round_A01_t01: CompileTimeError
-LibTest/core/int/toInt_A01_t01: CompileTimeError
-LibTest/core/int/truncateToDouble_A01_t01: CompileTimeError
-LibTest/core/int/truncate_A01_t01: CompileTimeError
-LibTest/math/pow_A10_t01: CompileTimeError
-
-[ $compiler == fasta && $strong ]
-Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t01: MissingCompileTimeError
-Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t02: MissingCompileTimeError
-Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t02: MissingCompileTimeError
-Language/Classes/Constructors/Factories/arguments_type_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
-Language/Classes/Constructors/Factories/function_type_t01: CompileTimeError # Expects a warning but this is an error in Dart 2
-Language/Classes/Constructors/Generative_Constructors/static_type_t01: CompileTimeError
-Language/Classes/Constructors/name_t01: MissingCompileTimeError
-Language/Classes/Constructors/name_t02: MissingCompileTimeError
-Language/Classes/Constructors/name_t03: MissingCompileTimeError
-Language/Classes/Getters/override_t02: CompileTimeError
-Language/Classes/Getters/override_t03: CompileTimeError
-Language/Classes/Getters/static_getter_t01: CompileTimeError
-Language/Classes/Instance_Methods/same_name_setter_t01: CompileTimeError
-Language/Classes/Instance_Methods/same_name_setter_t02: CompileTimeError # Issue 14736
-Language/Classes/Setters/name_t02: CompileTimeError
-Language/Classes/Setters/name_t03: CompileTimeError
-Language/Classes/Setters/name_t04: CompileTimeError
-Language/Classes/Setters/name_t06: CompileTimeError
-Language/Classes/Setters/name_t07: CompileTimeError
-Language/Classes/Setters/override_t02: CompileTimeError
-Language/Classes/Setters/static_setter_t05: CompileTimeError
-Language/Classes/Setters/static_setter_t06: CompileTimeError
-Language/Classes/Static_Methods/same_name_method_and_setter_t01: CompileTimeError
-Language/Classes/same_name_instance_and_static_members_t02: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t04: MissingCompileTimeError
-Language/Expressions/Constants/exception_t01: MissingCompileTimeError
-Language/Expressions/Constants/exception_t03: MissingCompileTimeError
-Language/Expressions/Constants/no_other_constant_expressions_t11: MissingCompileTimeError
-Language/Expressions/Constants/ternary_operator_t02: MissingCompileTimeError
-Language/Expressions/Instance_Creation/Const/exception_t01: MissingCompileTimeError
-Language/Generics/syntax_t02: CompileTimeError
-Language/Generics/syntax_t03: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_members_t01: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_method_and_getter_t01: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_method_and_getter_t02: CompileTimeError
-Language/Metadata/compilation_t03: MissingCompileTimeError
-Language/Mixins/Mixin_Application/syntax_t21: CompileTimeError
-
-[ $compiler == fasta && !$strong ]
-Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t01: MissingCompileTimeError
-Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t02: MissingCompileTimeError
-Language/Classes/Constructors/Constant_Constructors/invalid_constant_initializer_t02: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_of_an_initializer_t02: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/initializing_formals_execution_t02: MissingCompileTimeError
-Language/Classes/Constructors/name_t01: MissingCompileTimeError
-Language/Classes/Constructors/name_t02: MissingCompileTimeError
-Language/Classes/Constructors/name_t03: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t03: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t04: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t05: MissingCompileTimeError
-Language/Classes/Getters/same_name_method_t07: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t02: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t04: MissingCompileTimeError
-Language/Expressions/Constants/bitwise_operators_t05: MissingCompileTimeError
-Language/Expressions/Constants/depending_on_itself_t01: MissingCompileTimeError
-Language/Expressions/Constants/depending_on_itself_t02: MissingCompileTimeError
-Language/Expressions/Constants/exception_t01: MissingCompileTimeError
-Language/Expressions/Constants/exception_t03: MissingCompileTimeError
-Language/Expressions/Constants/exception_t05: MissingCompileTimeError
-Language/Expressions/Constants/logical_expression_t02: MissingCompileTimeError
-Language/Expressions/Constants/logical_expression_t04: MissingCompileTimeError
-Language/Expressions/Constants/math_operators_t02: MissingCompileTimeError
-Language/Expressions/Constants/math_operators_t03: MissingCompileTimeError
-Language/Expressions/Constants/no_other_constant_expressions_t11: MissingCompileTimeError
-Language/Expressions/Constants/ternary_operator_t02: MissingCompileTimeError
-Language/Expressions/Instance_Creation/Const/exception_t01: MissingCompileTimeError
-Language/Metadata/compilation_t03: MissingCompileTimeError
-Language/Mixins/Mixin_Application/error_t01: MissingCompileTimeError
-Language/Mixins/Mixin_Application/error_t02: MissingCompileTimeError
-
-[ $fasta && $strong ]
-Language/Classes/Abstract_Instance_Members/inherited_t01: CompileTimeError
-Language/Classes/Abstract_Instance_Members/inherited_t02: CompileTimeError
-Language/Classes/Abstract_Instance_Members/inherited_t03: CompileTimeError
-Language/Classes/Abstract_Instance_Members/inherited_t04: CompileTimeError
-Language/Classes/Abstract_Instance_Members/inherited_t05: CompileTimeError
-Language/Classes/Abstract_Instance_Members/inherited_t06: CompileTimeError
-Language/Classes/Abstract_Instance_Members/invocation_t01: CompileTimeError
-Language/Classes/Abstract_Instance_Members/invocation_t02: CompileTimeError
-Language/Classes/Abstract_Instance_Members/no_implementation_t01: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_default_value_t06: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_less_positional_parameters_t01: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_less_positional_parameters_t02: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t01: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t02: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t03: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_more_required_parameters_t04: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t01: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t05: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_no_named_parameters_t06: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t01: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t02: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t03: CompileTimeError
-Language/Classes/Abstract_Instance_Members/override_not_a_subtype_t04: CompileTimeError
-Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t03: MissingCompileTimeError
-Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: MissingCompileTimeError
-Language/Classes/Constructors/Factories/accessible_class_t01/01: CompileTimeError
-Language/Classes/Constructors/Factories/accessible_class_t02/01: CompileTimeError
-Language/Classes/Constructors/Factories/accessible_class_t03/01: CompileTimeError
-Language/Classes/Constructors/Factories/accessible_class_t04/01: CompileTimeError
-Language/Classes/Constructors/Factories/accessible_class_t04/02: CompileTimeError
-Language/Classes/Constructors/Factories/function_type_t02: CompileTimeError
-Language/Classes/Constructors/Factories/redirecting_constructor_call_t01: CompileTimeError
-Language/Classes/Constructors/Factories/redirecting_constructor_call_t02: CompileTimeError
-Language/Classes/Constructors/Factories/return_type_t02: CompileTimeError
-Language/Classes/Constructors/Factories/return_type_t03: CompileTimeError
-Language/Classes/Constructors/Factories/return_type_t06: CompileTimeError
-Language/Classes/Constructors/Factories/return_type_t07: CompileTimeError
-Language/Classes/Constructors/Factories/return_wrong_type_t01: CompileTimeError
-Language/Classes/Constructors/Factories/return_wrong_type_t02: CompileTimeError
-Language/Classes/Constructors/Factories/return_wrong_type_t03: CompileTimeError
-Language/Classes/Constructors/Factories/return_wrong_type_t04: CompileTimeError
-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_t03: CompileTimeError # super initializer not last
-Language/Classes/Constructors/Generative_Constructors/explicit_type_t01: CompileTimeError
-Language/Classes/Constructors/Generative_Constructors/explicit_type_t02: CompileTimeError
-Language/Classes/Constructors/Generative_Constructors/initializers_t01: CompileTimeError # super initializer not last
-Language/Classes/Constructors/Generative_Constructors/initializers_t15: CompileTimeError
-Language/Classes/Constructors/Generative_Constructors/initializing_this_t03: CompileTimeError
-Language/Classes/Constructors/implicit_constructor_t03: CompileTimeError
-Language/Classes/Getters/override_t01: CompileTimeError
-Language/Classes/Getters/override_t04: CompileTimeError
-Language/Classes/Getters/static_getter_t02: CompileTimeError
-Language/Classes/Getters/static_t01: CompileTimeError
-Language/Classes/Getters/type_object_t01: CompileTimeError
-Language/Classes/Getters/type_object_t02: CompileTimeError
-Language/Classes/Instance_Methods/Operators/syntax_t01: CompileTimeError
-Language/Classes/Instance_Methods/override_fewer_parameters_t01: CompileTimeError
-Language/Classes/Instance_Methods/override_fewer_parameters_t02: CompileTimeError
-Language/Classes/Instance_Methods/override_more_parameters_t01: CompileTimeError
-Language/Classes/Instance_Methods/override_more_parameters_t02: CompileTimeError
-Language/Classes/Instance_Methods/override_named_parameters_t01: CompileTimeError
-Language/Classes/Instance_Methods/override_named_parameters_t02: CompileTimeError
-Language/Classes/Instance_Methods/override_named_parameters_t05: CompileTimeError
-Language/Classes/Instance_Methods/override_subtype_t01: CompileTimeError
-Language/Classes/Instance_Methods/override_subtype_t02: CompileTimeError
-Language/Classes/Instance_Methods/override_subtype_t03: CompileTimeError
-Language/Classes/Instance_Methods/override_subtype_t04: CompileTimeError
-Language/Classes/Instance_Methods/override_subtype_t05: CompileTimeError
-Language/Classes/Instance_Methods/override_subtype_t06: CompileTimeError
-Language/Classes/Instance_Variables/definition_t03: CompileTimeError
-Language/Classes/Setters/name_t01: CompileTimeError
-Language/Classes/Setters/name_t05: CompileTimeError
-Language/Classes/Setters/override_t01: CompileTimeError
-Language/Classes/Setters/override_t03: CompileTimeError
-Language/Classes/Setters/same_name_getter_different_type_t02: CompileTimeError
-Language/Classes/Setters/type_object_t01: CompileTimeError
-Language/Classes/Setters/type_object_t02: CompileTimeError
-Language/Classes/Static_Methods/declaration_t03: CompileTimeError
-Language/Classes/Static_Methods/same_name_method_and_setter_t01: CompileTimeError # Invalid test, see #33237
-Language/Classes/Static_Methods/type_object_t01: CompileTimeError
-Language/Classes/Static_Methods/type_object_t02: CompileTimeError
-Language/Classes/Static_Variables/inheritance_t01: CompileTimeError
-Language/Classes/Superclasses/Inheritance_and_Overriding/abstract_method_t01/01: CompileTimeError
-Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t03: CompileTimeError
-Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t05: CompileTimeError
-Language/Classes/Superclasses/Inheritance_and_Overriding/inheritance_t06: CompileTimeError
-Language/Classes/Superclasses/wrong_superclass_t08: MissingCompileTimeError
-Language/Classes/Superinterfaces/implicit_interface_t01: CompileTimeError
-Language/Classes/Superinterfaces/implicit_interface_t02: CompileTimeError
-Language/Classes/Superinterfaces/no_member_t01: CompileTimeError
-Language/Classes/Superinterfaces/no_member_t02: CompileTimeError
-Language/Classes/Superinterfaces/no_member_t03: CompileTimeError
-Language/Classes/Superinterfaces/no_member_t05: CompileTimeError
-Language/Classes/Superinterfaces/wrong_type_t05: MissingCompileTimeError
-Language/Classes/method_definition_t03: CompileTimeError
-Language/Classes/method_definition_t04: CompileTimeError
-Language/Classes/method_definition_t05: CompileTimeError
-Language/Classes/mixins_t02: MissingCompileTimeError # co19 issue 163
-Language/Classes/same_name_instance_and_static_members_t02: Pass
-Language/Classes/same_name_instance_and_static_members_t04: Pass
-Language/Enums/declaration_equivalent_t03: CompileTimeError
-Language/Enums/declaration_equivalent_t05: CompileTimeError
-Language/Enums/declaration_equivalent_t08: CompileTimeError
-Language/Errors_and_Warnings/static_warning_t01: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/01: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/03: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/05: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/06: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/07: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/08: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/10: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/11: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t01/14: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t07/01: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t08/01: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t11/01: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t12/01: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t13/01: CompileTimeError
-Language/Expressions/Additive_Expressions/syntax_t14/01: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/01: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/02: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/03: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/04: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/05: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/06: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/07: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/08: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/09: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/10: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/11: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/14: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/15: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/17: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/22: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/24: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/25: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/26: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/27: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/30: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/31: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/32: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/33: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/34: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/35: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/36: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/37: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/38: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/39: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/42: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t01/43: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t06/01: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t08/01: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t09/01: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t26/01: CompileTimeError
-Language/Expressions/Assignable_Expressions/syntax_t26/02: CompileTimeError
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_compound_t01/01: CompileTimeError
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_expression_t01/01: CompileTimeError
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_indexed_t01/01: CompileTimeError
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_static_t01/01: CompileTimeError
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_super_t01/01: CompileTimeError
-Language/Expressions/Assignment/Compound_Assignment/null_aware_static_warning_variable_t01/01: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_dynamic_error_t01: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_dynamic_error_t02: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_failed_t01: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_failed_t02: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_failed_t03: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_failed_t04: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_failed_t05: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_failed_t06: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_static_type_t01: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_static_type_t02: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_static_type_t03: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_static_warning_t01: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_static_warning_t02: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_static_warning_t03: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_t04: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_t07: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_t08: CompileTimeError
-Language/Expressions/Assignment/expression_assignment_value_t02: CompileTimeError
-Language/Expressions/Assignment/indexed_expression_static_type_t02/01: CompileTimeError
-Language/Expressions/Assignment/indexed_expression_super_static_type_t02/01: CompileTimeError
-Language/Expressions/Assignment/indexed_expression_super_t03: CompileTimeError
-Language/Expressions/Assignment/indexed_expression_super_t04: CompileTimeError
-Language/Expressions/Assignment/indexed_expression_t03: CompileTimeError
-Language/Expressions/Assignment/indexed_expression_t04: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t01: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t02: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t03: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t04: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t05: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t06: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t07: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t08: CompileTimeError
-Language/Expressions/Assignment/no_such_method_t09: CompileTimeError
-Language/Expressions/Assignment/null_aware_assignment_static_type_t01: CompileTimeError
-Language/Expressions/Assignment/null_aware_assignment_static_warning_t01/01: CompileTimeError
-Language/Expressions/Assignment/static_assignment_t03: CompileTimeError
-Language/Expressions/Assignment/static_type_t01: CompileTimeError
-Language/Expressions/Assignment/static_type_t02: CompileTimeError
-Language/Expressions/Assignment/static_type_t03: CompileTimeError
-Language/Expressions/Assignment/static_type_t06: CompileTimeError
-Language/Expressions/Assignment/static_warning_t01/01: CompileTimeError
-Language/Expressions/Assignment/static_warning_t02/01: CompileTimeError
-Language/Expressions/Assignment/static_warning_t03/01: CompileTimeError
-Language/Expressions/Assignment/static_warning_t04/01: CompileTimeError
-Language/Expressions/Assignment/super_assignment_dynamic_error_t01: CompileTimeError
-Language/Expressions/Assignment/super_assignment_failed_t01: CompileTimeError
-Language/Expressions/Assignment/super_assignment_failed_t02: CompileTimeError
-Language/Expressions/Assignment/super_assignment_failed_t03: CompileTimeError
-Language/Expressions/Assignment/super_assignment_failed_t04: CompileTimeError
-Language/Expressions/Assignment/super_assignment_failed_t05: CompileTimeError
-Language/Expressions/Assignment/super_assignment_static_type_t01: CompileTimeError
-Language/Expressions/Assignment/super_assignment_static_warning_t01: CompileTimeError
-Language/Expressions/Assignment/super_assignment_static_warning_t02: CompileTimeError
-Language/Expressions/Assignment/super_assignment_static_warning_t03: CompileTimeError
-Language/Expressions/Assignment/super_assignment_static_warning_t04/01: CompileTimeError
-Language/Expressions/Assignment/super_assignment_t06: CompileTimeError
-Language/Expressions/Assignment/super_assignment_value_t02: CompileTimeError
-Language/Expressions/Assignment/this_assignment_t02: CompileTimeError
-Language/Expressions/Assignment/top_level_assignment_t05: CompileTimeError
-Language/Expressions/Assignment/variable_assignment_dynamic_error_t01: CompileTimeError
-Language/Expressions/Assignment/variable_assignment_static_type_t01: CompileTimeError
-Language/Expressions/Assignment/variable_assignment_static_type_t02: CompileTimeError
-Language/Expressions/Assignment/variable_assignment_static_type_t03: CompileTimeError
-Language/Expressions/Assignment/variable_assignment_static_type_t04/01: CompileTimeError
-Language/Expressions/Assignment/variable_assignment_t03: CompileTimeError
-Language/Expressions/Assignment/variable_assignment_t04: CompileTimeError
-Language/Expressions/Await_Expressions/evaluation_throws_t05: CompileTimeError
-Language/Expressions/Await_Expressions/static_type_t02: CompileTimeError
-Language/Expressions/Await_Expressions/static_type_t04: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/01: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/02: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/03: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/04: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/05: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/06: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/07: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/11: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/12: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/13: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/14: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/15: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/16: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/17: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/18: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/19: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/20: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t01/24: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t12/01: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t13/01: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t14: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t15/01: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t16/01: CompileTimeError
-Language/Expressions/Bitwise_Expressions/syntax_t17/01: CompileTimeError
-Language/Expressions/Booleans/Boolean_Conversion/conversion_t01: CompileTimeError
-Language/Expressions/Booleans/Boolean_Conversion/definition_t01: CompileTimeError
-Language/Expressions/Booleans/Boolean_Conversion/definition_t02: CompileTimeError
-Language/Expressions/Booleans/Boolean_Conversion/definition_t03: CompileTimeError
-Language/Expressions/Booleans/static_type_t02: CompileTimeError
-Language/Expressions/Conditional/evaluation_t01: CompileTimeError
-Language/Expressions/Conditional/evaluation_t03: CompileTimeError
-Language/Expressions/Conditional/evaluation_t04: CompileTimeError
-Language/Expressions/Conditional/static_type_t02: CompileTimeError
-Language/Expressions/Conditional/static_type_t03: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/01: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/03: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/05: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/06: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/07: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/08: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/09: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/10: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/11: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/12: CompileTimeError
-Language/Expressions/Conditional/syntax_t01/14: CompileTimeError
-Language/Expressions/Conditional/syntax_t10/01: CompileTimeError
-Language/Expressions/Conditional/syntax_t12/01: CompileTimeError
-Language/Expressions/Conditional/syntax_t14/01: CompileTimeError
-Language/Expressions/Conditional/type_not_bool_t01: CompileTimeError
-Language/Expressions/Conditional/type_t06: CompileTimeError
-Language/Expressions/Conditional/type_t07: CompileTimeError
-Language/Expressions/Conditional/type_t08: CompileTimeError
-Language/Expressions/Conditional/type_t09: CompileTimeError
-Language/Expressions/Constants/depending_on_itself_t03: MissingCompileTimeError
-Language/Expressions/Constants/equals_expression_t03: MissingCompileTimeError
-Language/Expressions/Constants/exception_t04: MissingCompileTimeError
-Language/Expressions/Constants/literal_number_t01: CompileTimeError
-Language/Expressions/Constants/literal_string_t02: MissingCompileTimeError
-Language/Expressions/Constants/math_operators_t01: CompileTimeError
-Language/Expressions/Constants/math_operators_t06: CompileTimeError
-Language/Expressions/Equality/static_type_t02: CompileTimeError
-Language/Expressions/Equality/syntax_t01/01: CompileTimeError
-Language/Expressions/Equality/syntax_t01/02: CompileTimeError
-Language/Expressions/Equality/syntax_t01/04: CompileTimeError
-Language/Expressions/Equality/syntax_t01/05: CompileTimeError
-Language/Expressions/Equality/syntax_t01/06: CompileTimeError
-Language/Expressions/Equality/syntax_t01/07: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_async_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_async_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_asyncs_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_syncs_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_t04: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_dynamic_t05: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_1_async_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_1_async_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_1_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_1_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_1_t04: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_2_async_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_2_async_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_2_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_2_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_2_t04: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_async_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_async_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_asyncs_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_syncs_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_syncs_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_t02: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_t03: CompileTimeError
-Language/Expressions/Function_Expressions/static_type_form_3_t04: CompileTimeError
-Language/Expressions/Function_Expressions/syntax_t05: CompileTimeError
-Language/Expressions/Function_Invocation/Actual_Argument_List_Evaluation/syntax_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/actual_type_not_a_subtype_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/actual_type_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t04: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/binding_t05: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t01/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t02/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t03/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/names_matching_t04/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t01/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t02/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t03/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t04/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t05/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t06/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t07/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/number_of_arguments_t08/01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t03: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/optional_parameter_type_t04: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t03: CompileTimeError
-Language/Expressions/Function_Invocation/Binding_Actuals_to_Formals/wrong_static_type_t04: CompileTimeError
-Language/Expressions/Function_Invocation/Function_Expression_Invocation/invocation_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Function_Expression_Invocation/not_a_function_expression_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Function_Expression_Invocation/property_extraction_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_dynamic_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Function_Expression_Invocation/static_type_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/function_expr_invocation_t05: CompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t01: CompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t02: CompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/static_context_invocation_t03: CompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/static_method_invocation_t02: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t01: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t02: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t03: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t04: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t05: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t06: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t07: CompileTimeError
-Language/Expressions/Function_Invocation/async_cleanup_t08: CompileTimeError
-Language/Expressions/Identifier_Reference/built_in_identifier_t02: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_function_t02: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t02: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_library_or_getter_t05: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_property_extraction_t01: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_property_extraction_t03: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_property_extraction_t04: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_static_t02: CompileTimeError
-Language/Expressions/Identifier_Reference/evaluation_undeclared_identifier_t01: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t01: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t02: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t03: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t04: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t05: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t06: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t07: CompileTimeError
-Language/Expressions/Identifier_Reference/undeclared_identifier_t08: CompileTimeError
-Language/Expressions/If_null_Expressions/static_type_t01: CompileTimeError
-Language/Expressions/If_null_Expressions/static_type_t02: CompileTimeError
-Language/Expressions/Instance_Creation/Const/abstract_class_t02: CompileTimeError
-Language/Expressions/Instance_Creation/Const/abstract_class_t04: CompileTimeError
-Language/Expressions/Instance_Creation/New/abstract_class_t01/01: CompileTimeError
-Language/Expressions/Instance_Creation/New/abstract_class_t02/01: CompileTimeError
-Language/Expressions/Instance_Creation/New/argument_static_type_t01: CompileTimeError
-Language/Expressions/Instance_Creation/New/argument_static_type_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/body_execution_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/constructor_same_name_as_class_t01: CompileTimeError
-Language/Expressions/Instance_Creation/New/constructor_same_name_as_class_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t01: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t03: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t04: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t05: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t06: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t07: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t08: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t09: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t12: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t13: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t14: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t15: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t16: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t17: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t18: CompileTimeError
-Language/Expressions/Instance_Creation/New/execution_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/execution_t04: CompileTimeError # super initializer not last
-Language/Expressions/Instance_Creation/New/execution_t06: CompileTimeError # super initializer not last
-Language/Expressions/Instance_Creation/New/execution_t07: CompileTimeError
-Language/Expressions/Instance_Creation/New/execution_t09: CompileTimeError # super initializer not last
-Language/Expressions/Instance_Creation/New/execution_t11: CompileTimeError
-Language/Expressions/Instance_Creation/New/execution_t13: CompileTimeError
-Language/Expressions/Instance_Creation/New/named_constructor_t01: CompileTimeError
-Language/Expressions/Instance_Creation/New/named_constructor_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t01: CompileTimeError # Issue 33308
-Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/type_argument_t01: CompileTimeError
-Language/Expressions/Instance_Creation/New/type_t01: CompileTimeError
-Language/Expressions/Instance_Creation/New/type_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/type_t03: CompileTimeError
-Language/Expressions/Instance_Creation/New/type_t05: CompileTimeError
-Language/Expressions/Instance_Creation/New/type_t06: CompileTimeError
-Language/Expressions/Instance_Creation/New/type_t07: CompileTimeError
-Language/Expressions/Instance_Creation/malformed_or_malbounded_t01: CompileTimeError
-Language/Expressions/Instance_Creation/malformed_or_malbounded_t03: CompileTimeError
-Language/Expressions/Instance_Creation/malformed_or_malbounded_t07: CompileTimeError
-Language/Expressions/Lists/runtime_list_literal_t03: CompileTimeError
-Language/Expressions/Lists/static_type_dynamic_t01: CompileTimeError
-Language/Expressions/Lists/static_type_t01: CompileTimeError
-Language/Expressions/Lists/static_type_t02: CompileTimeError
-Language/Expressions/Lists/static_type_t03: CompileTimeError
-Language/Expressions/Lists/static_type_t04: CompileTimeError
-Language/Expressions/Lists/static_type_t05: CompileTimeError
-Language/Expressions/Lists/value_of_a_constant_list_t02: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/evaluation_form_and_t01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/evaluation_form_and_t02: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/evaluation_form_or_t02: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/static_type_t02: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/syntax_t01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/syntax_t10/01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/syntax_t11/01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/syntax_t12/01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/syntax_t13/01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/syntax_t14/01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/syntax_t15/01: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t09: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t10: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t11: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t13: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t15: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t18: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t19: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t20: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t21: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t27: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t28: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t29: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t30: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t31: CompileTimeError
-Language/Expressions/Logical_Boolean_Expressions/type_t32: CompileTimeError
-Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t03: CompileTimeError
-Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t09: CompileTimeError
-Language/Expressions/Lookup/Getter_and_Setter_Lookup/definition_t10: CompileTimeError
-Language/Expressions/Lookup/Method_Lookup/method_lookup_t03: CompileTimeError
-Language/Expressions/Lookup/Method_Lookup/superclass_t07: CompileTimeError
-Language/Expressions/Lookup/Method_Lookup/superclass_t08: CompileTimeError
-Language/Expressions/Maps/key_value_equals_operator_t01: MissingCompileTimeError
-Language/Expressions/Maps/key_value_equals_operator_t02: CompileTimeError
-Language/Expressions/Maps/static_type_dynamic_t01: CompileTimeError
-Language/Expressions/Maps/static_type_t02: CompileTimeError
-Language/Expressions/Maps/static_type_t03: CompileTimeError
-Language/Expressions/Maps/static_type_t04: CompileTimeError
-Language/Expressions/Maps/static_type_t05: CompileTimeError
-Language/Expressions/Method_Invocation/Cascaded_Invocations/cascaded_expression_t02: CompileTimeError
-Language/Expressions/Method_Invocation/Cascaded_Invocations/syntax_t19: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t01: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t02: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t03: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/accessible_instance_member_t04: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_t06: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/conditional_warning_t01/01: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t04: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/evaluation_t08: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t02: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t05: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t06: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t07: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t08: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t09: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t10: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t11: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t12: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t13: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t14: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t15: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t16: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t19: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/method_lookup_failed_t20: CompileTimeError
-Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t04: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t01: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t02: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t03: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t04: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/accessible_instance_member_t05: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/evaluation_t05: CompileTimeError
-Language/Expressions/Method_Invocation/Super_Invocation/getter_lookup_failed_t01: CompileTimeError
-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/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
-Language/Expressions/Multiplicative_Expressions/syntax_t01/02: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/03: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/04: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/05: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/06: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/07: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/08: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/12: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/13: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t01/16: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t10/01: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t11/01: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t14/01: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t15/01: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t16/01: CompileTimeError
-Language/Expressions/Multiplicative_Expressions/syntax_t17/01: CompileTimeError
-Language/Expressions/Null/instantiate_t01: CompileTimeError
-Language/Expressions/Numbers/static_type_of_double_t02: CompileTimeError
-Language/Expressions/Numbers/static_type_of_int_t01: CompileTimeError
-Language/Expressions/Numbers/static_type_of_int_t02: CompileTimeError
-Language/Expressions/Numbers/syntax_t06: CompileTimeError
-Language/Expressions/Numbers/syntax_t09: CompileTimeError
-Language/Expressions/Numbers/syntax_t10: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/01: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/02: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/03: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/04: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/05: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/06: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/07: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/08: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/09: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/10: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/11: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/12: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/13: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/14: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/15: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/16: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/17: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/18: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/19: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/20: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/21: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/22: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/23: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/24: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/25: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/26: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/27: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/34: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/35: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/36: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/37: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/38: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/39: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t01/40: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t02/01: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t03/01: CompileTimeError
-Language/Expressions/Postfix_Expressions/syntax_t05/01: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/getter_value_t06: 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
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t01: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/instance_of_type_t03: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/no_such_method_t01: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/no_such_method_t02: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t01: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t02: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t03: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t04: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t05: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t06: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t07: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/proxy_annotation_t08: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t05: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_t08: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t01: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t02: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t03: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/static_type_warning_t04/01: CompileTimeError
-Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_instance_t01/01: CompileTimeError
-Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_such_method_t01: CompileTimeError
-Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/no_such_method_t02: CompileTimeError
-Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t03: CompileTimeError
-Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_warning_t01: CompileTimeError
-Language/Expressions/Property_Extraction/conditional_t06: CompileTimeError
-Language/Expressions/Property_Extraction/static_type_warning_t01/01: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/01: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/02: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/03: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/04: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/05: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/06: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/07: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/12: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/13: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/14: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/15: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/16: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/17: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/20: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/25: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/26: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t01/27: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t18/01: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t19/01: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t20/01: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t21/01: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t22/01: CompileTimeError
-Language/Expressions/Relational_Expressions/syntax_t23/01: CompileTimeError
-Language/Expressions/Shift/syntax_t01/01: CompileTimeError
-Language/Expressions/Shift/syntax_t01/02: CompileTimeError
-Language/Expressions/Shift/syntax_t01/03: CompileTimeError
-Language/Expressions/Shift/syntax_t01/04: CompileTimeError
-Language/Expressions/Shift/syntax_t01/05: CompileTimeError
-Language/Expressions/Shift/syntax_t01/06: CompileTimeError
-Language/Expressions/Shift/syntax_t01/10: CompileTimeError
-Language/Expressions/Shift/syntax_t01/11: CompileTimeError
-Language/Expressions/Shift/syntax_t01/12: CompileTimeError
-Language/Expressions/Shift/syntax_t01/13: CompileTimeError
-Language/Expressions/Shift/syntax_t01/14: CompileTimeError
-Language/Expressions/Shift/syntax_t01/15: CompileTimeError
-Language/Expressions/Shift/syntax_t01/18: CompileTimeError
-Language/Expressions/Shift/syntax_t01/19: CompileTimeError
-Language/Expressions/Shift/syntax_t01/20: CompileTimeError
-Language/Expressions/Shift/syntax_t09/01: CompileTimeError
-Language/Expressions/Shift/syntax_t10/01: CompileTimeError
-Language/Expressions/Shift/syntax_t11/01: CompileTimeError
-Language/Expressions/Shift/syntax_t12/01: CompileTimeError
-Language/Expressions/Shift/syntax_t13/01: CompileTimeError
-Language/Expressions/Shift/syntax_t14/01: CompileTimeError
-Language/Expressions/Strings/String_Interpolation/double_quote_t02: CompileTimeError
-Language/Expressions/Strings/String_Interpolation/double_quote_t04: CompileTimeError
-Language/Expressions/Strings/String_Interpolation/single_quote_t02: CompileTimeError
-Language/Expressions/Strings/String_Interpolation/single_quote_t03: CompileTimeError
-Language/Expressions/Strings/String_Interpolation/syntax_t07: CompileTimeError
-Language/Expressions/Strings/String_Interpolation/syntax_t13: CompileTimeError
-Language/Expressions/Strings/static_type_t02: CompileTimeError
-Language/Expressions/Strings/static_type_t03: CompileTimeError
-Language/Expressions/Strings/static_type_t04: CompileTimeError
-Language/Expressions/Strings/static_type_t05: CompileTimeError
-Language/Expressions/Strings/static_type_t06: CompileTimeError
-Language/Expressions/Strings/static_type_t07: CompileTimeError
-Language/Expressions/Strings/static_type_t08: CompileTimeError
-Language/Expressions/Strings/static_type_t09: CompileTimeError
-Language/Expressions/This/static_type_t01: CompileTimeError
-Language/Expressions/Throw/throw_various_types_t01: CompileTimeError
-Language/Expressions/Type_Cast/evaluation_t04: CompileTimeError
-Language/Expressions/Type_Cast/evaluation_t05: CompileTimeError
-Language/Expressions/Type_Cast/evaluation_t06: CompileTimeError
-Language/Expressions/Type_Cast/evaluation_t07: CompileTimeError
-Language/Expressions/Type_Cast/evaluation_t08: CompileTimeError
-Language/Expressions/Type_Cast/evaluation_t09: CompileTimeError
-Language/Expressions/Type_Cast/evaluation_t10: CompileTimeError
-Language/Expressions/Type_Cast/static_type_t02: CompileTimeError
-Language/Expressions/Type_Test/definition_t01: CompileTimeError
-Language/Expressions/Type_Test/definition_t02: CompileTimeError
-Language/Expressions/Type_Test/definition_t03: CompileTimeError
-Language/Expressions/Type_Test/definition_t04: CompileTimeError
-Language/Expressions/Type_Test/definition_t05: CompileTimeError
-Language/Expressions/Type_Test/definition_t06: CompileTimeError
-Language/Expressions/Type_Test/definition_t07: CompileTimeError
-Language/Expressions/Type_Test/definition_t08: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t03: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t04: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t05: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t06: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t07: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t08: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t09: CompileTimeError
-Language/Expressions/Type_Test/evaluation_t10: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t02/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t04/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t05/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/02: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/03: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/04: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/05: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/06: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/07: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/08: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/09: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/10: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/11: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/12: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/16: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/17: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/18: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/21: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/24: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/25: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/27: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/28: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/29: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/30: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/31: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t10/33: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t11/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t12/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t13/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t17/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t18/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t19/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t20/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t21/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t22/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/01: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/02: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/03: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/04: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/05: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/06: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/07: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/08: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/10: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/11: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/12: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/13: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/14: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/15: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/16: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/17: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/18: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/19: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/20: CompileTimeError
-Language/Expressions/Unary_Expressions/syntax_t27/21: CompileTimeError
-Language/Expressions/Unary_Expressions/variable_negative_t03: CompileTimeError
-Language/Functions/Formal_Parameters/Optional_Formals/syntax_t06: CompileTimeError
-Language/Functions/Formal_Parameters/Optional_Formals/syntax_t10: CompileTimeError
-Language/Functions/Formal_Parameters/Required_Formals/syntax_t05: CompileTimeError
-Language/Functions/Formal_Parameters/scope_t01: CompileTimeError
-Language/Functions/async_return_type_t01: CompileTimeError
-Language/Functions/generator_return_type_t01: CompileTimeError
-Language/Functions/generator_return_type_t02: CompileTimeError
-Language/Functions/implicit_return_t01: CompileTimeError
-Language/Functions/syntax_t01: CompileTimeError
-Language/Functions/syntax_t36: CompileTimeError
-Language/Functions/syntax_t37: CompileTimeError
-Language/Functions/syntax_t41: CompileTimeError
-Language/Functions/syntax_t42: CompileTimeError
-Language/Functions/syntax_t45: CompileTimeError
-Language/Functions/syntax_t46: CompileTimeError
-Language/Generics/malformed_t01: CompileTimeError
-Language/Generics/malformed_t02: CompileTimeError
-Language/Generics/scope_t06: CompileTimeError
-Language/Generics/scope_t07: CompileTimeError
-Language/Generics/syntax_t02: Crash
-Language/Generics/syntax_t03: Crash
-Language/Generics/upper_bound_t01: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t01: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t02: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t03: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t04: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t05: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/inheritance_t07: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/not_overriden_members_t02: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t03: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t04: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t05: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t06: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t07: CompileTimeError
-Language/Interfaces/Superinterfaces/Inheritance_and_Overriding/same_name_getters_type_t08: CompileTimeError
-Language/Libraries_and_Scripts/Exports/show_hide_t01: CompileTimeError
-Language/Libraries_and_Scripts/Exports/show_hide_t02: CompileTimeError
-Language/Libraries_and_Scripts/Exports/syntax_t02: CompileTimeError
-Language/Libraries_and_Scripts/Exports/syntax_t03: CompileTimeError
-Language/Libraries_and_Scripts/Imports/dart_core_t02: CompileTimeError
-Language/Libraries_and_Scripts/Imports/dart_core_t03: CompileTimeError
-Language/Libraries_and_Scripts/Imports/dart_core_t04: CompileTimeError
-Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t01/01: CompileTimeError
-Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t02: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t01: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t02: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t03: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t04: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t05: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t12: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t13: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t15: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t16: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t17: CompileTimeError
-Language/Libraries_and_Scripts/Imports/namespace_changes_t19: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t01: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t02/01: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t05: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t06: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t08: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t09/01: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t10: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t11: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t12/01: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t15/01: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t16: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t18: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t19: CompileTimeError
-Language/Libraries_and_Scripts/Imports/same_name_t25: CompileTimeError
-Language/Libraries_and_Scripts/Imports/syntax_t37: CompileTimeError
-Language/Libraries_and_Scripts/Imports/syntax_t38: CompileTimeError
-Language/Libraries_and_Scripts/Parts/static_warning_t01: CompileTimeError
-Language/Libraries_and_Scripts/Scripts/syntax_t11: CompileTimeError
-Language/Libraries_and_Scripts/private_access_t01: CompileTimeError
-Language/Libraries_and_Scripts/private_access_t03: CompileTimeError
-Language/Libraries_and_Scripts/private_access_t04: CompileTimeError
-Language/Mixins/Mixin_Application/abstract_t05: CompileTimeError
-Language/Mixins/Mixin_Application/abstract_t06: CompileTimeError
-Language/Mixins/Mixin_Application/abstract_t07: CompileTimeError
-Language/Mixins/Mixin_Application/abstract_t08: CompileTimeError
-Language/Mixins/Mixin_Application/deferred_t01: MissingCompileTimeError
-Language/Mixins/Mixin_Application/interfaces_t05: CompileTimeError
-Language/Mixins/Mixin_Application/superinterfaces_t01: CompileTimeError
-Language/Mixins/Mixin_Application/superinterfaces_t02: CompileTimeError
-Language/Mixins/Mixin_Application/superinterfaces_t06: CompileTimeError
-Language/Mixins/Mixin_Application/superinterfaces_t08: CompileTimeError
-Language/Mixins/Mixin_Application/syntax_t20: CompileTimeError
-Language/Mixins/declaring_constructor_t05: MissingCompileTimeError
-Language/Mixins/declaring_constructor_t06: MissingCompileTimeError
-Language/Overview/Privacy/private_and_public_t02: CompileTimeError
-Language/Overview/Privacy/private_and_public_t04: CompileTimeError
-Language/Overview/Privacy/private_and_public_t05: CompileTimeError
-Language/Overview/Privacy/private_and_public_t06: CompileTimeError
-Language/Overview/Privacy/private_and_public_t08: CompileTimeError
-Language/Overview/Privacy/private_and_public_t09: CompileTimeError
-Language/Overview/Privacy/private_and_public_t10: CompileTimeError
-Language/Overview/Privacy/private_and_public_t11: CompileTimeError
-Language/Overview/Privacy/private_and_public_t18: CompileTimeError
-Language/Overview/Privacy/private_and_public_t19: CompileTimeError
-Language/Overview/Privacy/private_and_public_t20: CompileTimeError
-Language/Overview/Scoping/hiding_declaration_t05: CompileTimeError
-Language/Overview/Scoping/hiding_declaration_t06: CompileTimeError
-Language/Overview/Scoping/hiding_declaration_t28: CompileTimeError
-Language/Reference/Lexical_Rules/Comments/multi_line_t09: CompileTimeError
-Language/Statements/Assert/execution_t01: CompileTimeError
-Language/Statements/Assert/execution_t02: CompileTimeError
-Language/Statements/Assert/execution_t03: CompileTimeError
-Language/Statements/Assert/execution_t04: CompileTimeError
-Language/Statements/Assert/execution_t05: CompileTimeError
-Language/Statements/Assert/execution_t06: CompileTimeError
-Language/Statements/Assert/execution_t08: CompileTimeError
-Language/Statements/Assert/execution_t09: CompileTimeError
-Language/Statements/Assert/execution_t11: CompileTimeError
-Language/Statements/Assert/production_mode_t01: CompileTimeError
-Language/Statements/Assert/type_t02: CompileTimeError
-Language/Statements/Assert/type_t03: CompileTimeError
-Language/Statements/Assert/type_t04: CompileTimeError
-Language/Statements/Assert/type_t05: CompileTimeError
-Language/Statements/Assert/type_t06: CompileTimeError
-Language/Statements/Assert/type_t07: CompileTimeError
-Language/Statements/Assert/type_t08: CompileTimeError
-Language/Statements/Continue/async_loops_t01: CompileTimeError
-Language/Statements/Continue/async_loops_t02: CompileTimeError
-Language/Statements/Continue/async_loops_t03: CompileTimeError
-Language/Statements/Continue/async_loops_t04: CompileTimeError
-Language/Statements/Continue/async_loops_t05: CompileTimeError
-Language/Statements/Continue/async_loops_t06: CompileTimeError
-Language/Statements/Continue/async_loops_t07: CompileTimeError
-Language/Statements/Continue/async_loops_t08: CompileTimeError
-Language/Statements/Continue/async_loops_t09: CompileTimeError
-Language/Statements/Continue/async_loops_t10: CompileTimeError
-Language/Statements/Continue/control_transfer_t08: CompileTimeError
-Language/Statements/Continue/control_transfer_t09: CompileTimeError
-Language/Statements/Continue/label_t07: MissingCompileTimeError
-Language/Statements/Do/condition_type_t01: CompileTimeError
-Language/Statements/Do/condition_type_t02: CompileTimeError
-Language/Statements/Do/condition_type_t03: CompileTimeError
-Language/Statements/Do/execution_t03: CompileTimeError
-Language/Statements/Expression_Statements/syntax_t01: CompileTimeError
-Language/Statements/Expression_Statements/syntax_t06: CompileTimeError
-Language/Statements/For/Asynchronous_For_in/execution_t01: CompileTimeError
-Language/Statements/For/Asynchronous_For_in/execution_t02: CompileTimeError
-Language/Statements/For/Asynchronous_For_in/execution_t03: CompileTimeError
-Language/Statements/For/For_Loop/execution_t07: CompileTimeError
-Language/Statements/For/For_Loop/execution_t08: CompileTimeError
-Language/Statements/For/For_in/execution_t05: CompileTimeError
-Language/Statements/For/syntax_t07: CompileTimeError
-Language/Statements/If/condition_evaluation_t01: CompileTimeError
-Language/Statements/If/condition_evaluation_t02: CompileTimeError
-Language/Statements/If/type_t06: CompileTimeError
-Language/Statements/If/type_t07: CompileTimeError
-Language/Statements/If/type_t08: CompileTimeError
-Language/Statements/If/type_t09: CompileTimeError
-Language/Statements/If/wrong_type_t01: CompileTimeError
-Language/Statements/If/wrong_type_t02: CompileTimeError
-Language/Statements/Local_Function_Declaration/reference_before_declaration_t02: CompileTimeError
-Language/Statements/Local_Variable_Declaration/syntax_t01: CompileTimeError
-Language/Statements/Local_Variable_Declaration/syntax_t02: CompileTimeError
-Language/Statements/Local_Variable_Declaration/syntax_t05: CompileTimeError
-Language/Statements/Local_Variable_Declaration/syntax_t06: CompileTimeError
-Language/Statements/Local_Variable_Declaration/syntax_t15: CompileTimeError
-Language/Statements/Local_Variable_Declaration/syntax_t18: CompileTimeError
-Language/Statements/Local_Variable_Declaration/syntax_t19: CompileTimeError
-Language/Statements/Return/runtime_type_t01: CompileTimeError
-Language/Statements/Return/runtime_type_t04: CompileTimeError
-Language/Statements/Return/type_t01: CompileTimeError
-Language/Statements/Return/type_t02: CompileTimeError
-Language/Statements/Return/type_t03: CompileTimeError
-Language/Statements/Return/type_t04: CompileTimeError
-Language/Statements/Switch/equal_operator_t01: MissingCompileTimeError
-Language/Statements/Switch/equal_operator_t02: MissingCompileTimeError
-Language/Statements/Switch/execution_case_no_default_t02: CompileTimeError
-Language/Statements/Switch/execution_case_t02: CompileTimeError
-Language/Statements/Switch/execution_t01: CompileTimeError
-Language/Statements/Switch/last_statement_t01: CompileTimeError
-Language/Statements/Switch/scope_t02: CompileTimeError
-Language/Statements/Switch/type_t01: CompileTimeError
-Language/Statements/Try/catch_scope_t01: CompileTimeError
-Language/Statements/Try/malformed_type_t01: CompileTimeError
-Language/Statements/Try/malformed_type_t02: CompileTimeError
-Language/Statements/Try/malformed_type_t03: CompileTimeError
-Language/Statements/Try/malformed_type_t04: CompileTimeError
-Language/Statements/While/condition_type_t01: CompileTimeError
-Language/Statements/While/condition_type_t02: CompileTimeError
-Language/Statements/While/condition_type_t03: CompileTimeError
-Language/Statements/While/execution_t02: CompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield/static_type_t01: CompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield/static_type_t02: CompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t01: CompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_sync_t01: CompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield_Each/static_type_t01: CompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield_Each/static_type_t02: CompileTimeError
-Language/Types/Dynamic_Type_System/deferred_type_error_t01: CompileTimeError
-Language/Types/Dynamic_Type_System/malbounded_type_error_t01: CompileTimeError
-Language/Types/Dynamic_Type_System/malformed_type_error_t01: CompileTimeError
-Language/Types/Function_Types/assignment_t01: CompileTimeError
-Language/Types/Interface_Types/subtype_t12: CompileTimeError
-Language/Types/Interface_Types/subtype_t19: CompileTimeError
-Language/Types/Interface_Types/subtype_t20: CompileTimeError
-Language/Types/Interface_Types/subtype_t22: CompileTimeError
-Language/Types/Interface_Types/subtype_t24: CompileTimeError
-Language/Types/Interface_Types/subtype_t26: CompileTimeError
-Language/Types/Interface_Types/subtype_t30: CompileTimeError
-Language/Types/Interface_Types/subtype_t31: CompileTimeError
-Language/Types/Interface_Types/subtype_t32: CompileTimeError
-Language/Types/Interface_Types/subtype_t33: CompileTimeError
-Language/Types/Interface_Types/subtype_t34: CompileTimeError
-Language/Types/Interface_Types/subtype_t35: CompileTimeError
-Language/Types/Interface_Types/subtype_t36: CompileTimeError
-Language/Types/Interface_Types/subtype_t37: CompileTimeError
-Language/Types/Interface_Types/subtype_t38: CompileTimeError
-Language/Types/Interface_Types/subtype_t45: CompileTimeError
-Language/Types/Interface_Types/subtype_t47: CompileTimeError
-Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t02: CompileTimeError
-Language/Types/Parameterized_Types/Actual_Type_of_Declaration/actual_type_t03: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t01: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t02: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t03: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t04: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t06: CompileTimeError
-Language/Types/Parameterized_Types/malbounded_t06: CompileTimeError
-Language/Types/Parameterized_Types/malbounded_t07: CompileTimeError
-Language/Types/Static_Types/deferred_type_t01: CompileTimeError
-Language/Types/Static_Types/malformed_type_t01: CompileTimeError
-Language/Types/Static_Types/malformed_type_t02: CompileTimeError
-Language/Types/Static_Types/malformed_type_t03: CompileTimeError
-Language/Types/Static_Types/malformed_type_t04: CompileTimeError
-Language/Types/Static_Types/malformed_type_t05: CompileTimeError
-Language/Types/Static_Types/malformed_type_t06: CompileTimeError
-Language/Types/Type_Declarations/Typedef/syntax_t01: CompileTimeError
-Language/Types/Type_Void/returning_t03: CompileTimeError
-Language/Types/Type_Void/returning_t04: CompileTimeError
-Language/Types/Type_Void/returning_t05: CompileTimeError
-Language/Types/Type_Void/syntax_t09: MissingCompileTimeError
-Language/Types/Type_Void/syntax_t09: Pass
-Language/Types/Type_Void/using_t01: CompileTimeError
-Language/Types/Type_Void/using_t02: CompileTimeError
-Language/Variables/constant_variable_t01: CompileTimeError
-Language/Variables/constant_variable_t02: CompileTimeError
-Language/Variables/constant_variable_t03: CompileTimeError
-Language/Variables/constant_variable_t04: CompileTimeError
-Language/Variables/constant_variable_t10: CompileTimeError
-Language/Variables/final_t01/01: CompileTimeError
-Language/Variables/final_t02/01: CompileTimeError
-Language/Variables/implicit_getter_t02: CompileTimeError
-Language/Variables/implicit_getter_t03: CompileTimeError
-Language/Variables/implicit_getter_t04: CompileTimeError
-Language/Variables/implicit_getter_t05: CompileTimeError
-Language/Variables/implicit_getter_t08: CompileTimeError
-Language/Variables/implicit_getter_t09: CompileTimeError
-Language/Variables/implicit_getter_t10: CompileTimeError
-Language/Variables/implicit_getter_t11: CompileTimeError
-Language/Variables/implicit_setter_t02: CompileTimeError
-Language/Variables/implicit_setter_void_t02: CompileTimeError
-Language/Variables/implicit_setter_void_t03: CompileTimeError
-Language/Variables/implicit_setter_void_t05: CompileTimeError
-Language/Variables/implicit_setter_void_t06: CompileTimeError
-Language/Variables/local_variable_t03: CompileTimeError
-LibTest/async/Completer/completeError_A01_t01: CompileTimeError
-LibTest/async/Completer/complete_A01_t04: CompileTimeError
-LibTest/async/Future/catchError_A03_t05: CompileTimeError
-LibTest/async/Future/doWhile_A03_t01: CompileTimeError
-LibTest/async/Future/doWhile_A04_t01: CompileTimeError
-LibTest/async/Future/doWhile_A04_t02: CompileTimeError
-LibTest/async/Future/doWhile_A04_t03: CompileTimeError
-LibTest/async/Future/doWhile_A05_t01: CompileTimeError
-LibTest/async/Future/forEach_A01_t01: CompileTimeError
-LibTest/async/Future/forEach_A02_t01: CompileTimeError
-LibTest/async/Future/forEach_A03_t01: CompileTimeError
-LibTest/async/Future/forEach_A04_t01: CompileTimeError
-LibTest/async/Future/forEach_A04_t02: CompileTimeError
-LibTest/async/Future/then_A03_t01: CompileTimeError
-LibTest/async/Future/then_A04_t01: CompileTimeError
-LibTest/async/Stream/Stream.fromFuture_A02_t01: CompileTimeError
-LibTest/async/Stream/Stream.fromFuture_A02_t02: CompileTimeError
-LibTest/async/Stream/Stream.fromFutures_A01_t01: CompileTimeError
-LibTest/async/Stream/Stream.fromFutures_A01_t02: CompileTimeError
-LibTest/async/Stream/Stream.fromFutures_A02_t01: CompileTimeError
-LibTest/async/Stream/Stream.fromFutures_A02_t02: CompileTimeError
-LibTest/async/Stream/Stream.fromIterable_A01_t02: CompileTimeError
-LibTest/async/Stream/Stream.periodic_A01_t01: CompileTimeError
-LibTest/async/Stream/Stream_A01_t01: CompileTimeError
-LibTest/async/Stream/distinct_A01_t01: CompileTimeError
-LibTest/async/Stream/firstWhere_A01_t01: CompileTimeError
-LibTest/async/Stream/firstWhere_A02_t01: CompileTimeError
-LibTest/async/Stream/fold_A01_t01: CompileTimeError
-LibTest/async/Stream/forEach_A01_t01: CompileTimeError
-LibTest/async/Stream/forEach_A02_t01: CompileTimeError
-LibTest/async/Stream/forEach_A02_t02: CompileTimeError
-LibTest/async/Stream/isBroadcast_A01_t01: CompileTimeError
-LibTest/async/Stream/isBroadcast_A01_t02: CompileTimeError
-LibTest/async/Stream/lastWhere_A01_t01: CompileTimeError
-LibTest/async/Stream/lastWhere_A02_t01: CompileTimeError
-LibTest/async/Stream/pipe_A01_t01: CompileTimeError
-LibTest/async/Stream/reduce_A01_t01: CompileTimeError
-LibTest/async/Stream/singleWhere_A01_t01: CompileTimeError
-LibTest/async/Stream/timeout_A01_t01: CompileTimeError
-LibTest/async/Stream/toSet_A01_t01: CompileTimeError
-LibTest/async/Stream/transform_A01_t01: CompileTimeError
-LibTest/async/Stream/where_A01_t01: CompileTimeError
-LibTest/async/Stream/where_A01_t02: CompileTimeError
-LibTest/async/StreamController/EventSink_class_A01_t01: CompileTimeError
-LibTest/async/StreamController/StreamConsumer_class_A01_t01: CompileTimeError
-LibTest/async/StreamController/sink_A01_t01: CompileTimeError
-LibTest/async/StreamTransformer/StreamTransformer.fromHandlers_A01_t03: CompileTimeError
-LibTest/async/StreamTransformer/StreamTransformer_A02_t02: CompileTimeError
-LibTest/async/Zone/ROOT_A01_t01: CompileTimeError
-LibTest/async/Zone/bindBinaryCallback_A01_t02: CompileTimeError
-LibTest/async/Zone/bindCallback_A01_t02: CompileTimeError
-LibTest/async/Zone/bindUnaryCallback_A01_t02: CompileTimeError
-LibTest/async/Zone/registerBinaryCallback_A01_t01: CompileTimeError
-LibTest/async/Zone/registerCallback_A01_t01: CompileTimeError
-LibTest/async/Zone/registerUnaryCallback_A01_t01: CompileTimeError
-LibTest/async/Zone/runBinaryGuarded_A01_t01: CompileTimeError
-LibTest/async/Zone/runGuarded_A01_t01: CompileTimeError
-LibTest/async/Zone/runUnaryGuarded_A01_t01: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/DoubleLinkedQueue_class_A01_t01: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/firstWhere_A02_t01: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/firstWhere_A03_t01: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/forEachEntry_A01_t03: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/forEach_A01_t03: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/lastWhere_A02_t01: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/lastWhere_A03_t01: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/skipWhile_A02_t01: CompileTimeError
-LibTest/collection/DoubleLinkedQueue/takeWhile_A02_t01: CompileTimeError
-LibTest/collection/HashMap/HashMap_class_A01_t01: CompileTimeError
-LibTest/collection/HashSet/HashSet_class_A01_t01: CompileTimeError
-LibTest/collection/IterableBase/IterableBase_class_A01_t01: CompileTimeError
-LibTest/collection/IterableBase/IterableBase_class_A01_t02: CompileTimeError
-LibTest/collection/IterableMixin/IterableMixin_class_A01_t01: CompileTimeError
-LibTest/collection/IterableMixin/IterableMixin_class_A02_t01: CompileTimeError
-LibTest/collection/LinkedHashMap/LinkedHashMap_A03_t01: CompileTimeError
-LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t01: CompileTimeError
-LibTest/collection/LinkedHashMap/LinkedHashMap_A04_t02: CompileTimeError
-LibTest/collection/LinkedHashMap/LinkedHashMap_class_A01_t01: CompileTimeError
-LibTest/collection/LinkedHashSet/LinkedHashSet_A03_t01: CompileTimeError
-LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t01: CompileTimeError
-LibTest/collection/LinkedHashSet/LinkedHashSet_A05_t02: CompileTimeError
-LibTest/collection/LinkedHashSet/LinkedHashSet_class_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/LinkedList_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/addAll_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/addAll_A02_t01: CompileTimeError
-LibTest/collection/LinkedList/addFirst_A01_t02: CompileTimeError
-LibTest/collection/LinkedList/add_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/add_A01_t02: CompileTimeError
-LibTest/collection/LinkedList/any_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/clear_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/contains_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/every_A02_t01: CompileTimeError
-LibTest/collection/LinkedList/first_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/first_A01_t02: CompileTimeError
-LibTest/collection/LinkedList/forEach_A01_t02: CompileTimeError
-LibTest/collection/LinkedList/forEach_A02_t01: CompileTimeError
-LibTest/collection/LinkedList/iterator_moveNext_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/join_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/lastWhere_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/lastWhere_A02_t01: CompileTimeError
-LibTest/collection/LinkedList/lastWhere_A03_t01: CompileTimeError
-LibTest/collection/LinkedList/last_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/length_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/singleWhere_A01_t01: CompileTimeError
-LibTest/collection/LinkedList/singleWhere_A02_t01: CompileTimeError
-LibTest/collection/LinkedList/singleWhere_A02_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/insertAfter_A01_t01: CompileTimeError
-LibTest/collection/LinkedListEntry/insertAfter_A01_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/insertAfter_A02_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/insertAfter_A02_t03: CompileTimeError
-LibTest/collection/LinkedListEntry/insertBefore_A01_t01: CompileTimeError
-LibTest/collection/LinkedListEntry/insertBefore_A01_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/insertBefore_A02_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/insertBefore_A02_t03: CompileTimeError
-LibTest/collection/LinkedListEntry/list_A01_t01: CompileTimeError
-LibTest/collection/LinkedListEntry/list_A01_t03: CompileTimeError
-LibTest/collection/LinkedListEntry/next_A01_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/next_A01_t03: CompileTimeError
-LibTest/collection/LinkedListEntry/previous_A01_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/previous_A01_t03: CompileTimeError
-LibTest/collection/LinkedListEntry/unlink_A01_t01: CompileTimeError
-LibTest/collection/LinkedListEntry/unlink_A01_t02: CompileTimeError
-LibTest/collection/LinkedListEntry/unlink_A01_t03: CompileTimeError
-LibTest/collection/LinkedListEntry/unlink_A02_t02: CompileTimeError
-LibTest/collection/ListBase/ListBase_class_A01_t01: CompileTimeError
-LibTest/collection/ListMixin/ListMixin_class_A01_t01: CompileTimeError
-LibTest/collection/ListQueue/ListQueue_class_A01_t01: CompileTimeError
-LibTest/collection/MapBase/MapBase_class_A01_t01: CompileTimeError
-LibTest/collection/MapMixin/MapMixin_class_A01_t01: CompileTimeError
-LibTest/collection/MapView/MapView_class_A01_t01: CompileTimeError
-LibTest/collection/Queue/Queue_class_A01_t01: CompileTimeError
-LibTest/collection/SetBase/SetBase_class_A01_t01: CompileTimeError
-LibTest/collection/SetBase/setToString_A01_t01: CompileTimeError
-LibTest/collection/SetBase/setToString_A02_t01: CompileTimeError
-LibTest/collection/SetMixin/SetMixin_class_A01_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A03_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A05_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A06_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterable_A06_t02: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A04_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A05_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.fromIterables_A05_t02: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.from_A02_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.from_A03_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap.from_A03_t02: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t02: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap_A02_t03: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap_A03_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap_A03_t02: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap_A04_t01: CompileTimeError
-LibTest/collection/SplayTreeMap/SplayTreeMap_A04_t02: CompileTimeError
-LibTest/collection/SplayTreeMap/inherited_tests_A01_t01: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t04: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t05: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t07: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet.from_A02_t08: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet_A03_t03: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet_A04_t01: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet_A05_t01: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet_A06_t01: CompileTimeError
-LibTest/collection/SplayTreeSet/SplayTreeSet_class_A01_t01: CompileTimeError
-LibTest/convert/JsonCodec/encode_A02_t03: CompileTimeError
-LibTest/convert/JsonCodec/encode_A03_t01: CompileTimeError
-LibTest/convert/JsonEncoder/JsonEncoder_A01_t01: CompileTimeError
-LibTest/core/AssertionError/AssertionError_A01_t01: CompileTimeError
-LibTest/core/AssertionError/message_A01_t01: CompileTimeError
-LibTest/core/AssertionError/toString_A01_t01: CompileTimeError
-LibTest/core/Duration/Duration_A02_t01: CompileTimeError
-LibTest/core/FallThroughError/toString_A01_t02: CompileTimeError
-LibTest/core/Invocation/isAccessor_A01_t01: CompileTimeError
-LibTest/core/Invocation/isAccessor_A01_t02: CompileTimeError
-LibTest/core/Invocation/isGetter_A01_t01: CompileTimeError
-LibTest/core/Invocation/isGetter_A01_t02: CompileTimeError
-LibTest/core/Invocation/isMethod_A01_t01: CompileTimeError
-LibTest/core/Invocation/isMethod_A01_t02: CompileTimeError
-LibTest/core/Invocation/isSetter_A01_t01: CompileTimeError
-LibTest/core/Invocation/isSetter_A01_t02: CompileTimeError
-LibTest/core/Invocation/memberName_A01_t01: CompileTimeError
-LibTest/core/Invocation/namedArguments_A01_t01: CompileTimeError
-LibTest/core/Invocation/positionalArguments_A01_t01: CompileTimeError
-LibTest/core/List/List_class_A01_t01: CompileTimeError
-LibTest/core/List/List_class_A01_t02: CompileTimeError
-LibTest/core/Map/allTests_A01_t01: CompileTimeError
-LibTest/core/RegExp/allMatches_A01_t01: CompileTimeError
-LibTest/core/RegExp/firstMatch_A01_t01: CompileTimeError
-LibTest/core/RuneIterator/currentAsString_A01_t02: CompileTimeError
-LibTest/core/RuneIterator/currentSize_A01_t02: CompileTimeError
-LibTest/core/RuneIterator/current_A01_t02: CompileTimeError
-LibTest/core/RuneIterator/string_A01_t02: CompileTimeError
-LibTest/core/Runes/first_A01_t02: CompileTimeError
-LibTest/core/Runes/isEmpty_A01_t02: CompileTimeError
-LibTest/core/Runes/isNotEmpty_A01_t02: CompileTimeError
-LibTest/core/Runes/iterator_A01_t02: CompileTimeError
-LibTest/core/Runes/last_A01_t02: CompileTimeError
-LibTest/core/Runes/length_A01_t02: CompileTimeError
-LibTest/core/Runes/single_A01_t02: CompileTimeError
-LibTest/core/Runes/skipWhile_A03_t01: CompileTimeError
-LibTest/core/Runes/string_A01_t02: CompileTimeError
-LibTest/core/Runes/takeWhile_A03_t01: CompileTimeError
-LibTest/core/Set/addAll_A01_t03: CompileTimeError
-LibTest/core/Set/add_A01_t03: CompileTimeError
-LibTest/core/Set/forEach_A01_t03: CompileTimeError
-LibTest/core/Set/remove_A01_t03: CompileTimeError
-LibTest/core/String/String.fromCharCodes_A02_t01: CompileTimeError
-LibTest/core/Symbol/Symbol_A01_t04: CompileTimeError
-LibTest/core/TypeError/toString_A01_t01: CompileTimeError
-LibTest/core/double/isInfinite_A01_t03: CompileTimeError
-LibTest/core/double/operator_GE_A01_t03: CompileTimeError
-LibTest/core/double/operator_GE_A02_t01: CompileTimeError
-LibTest/core/double/operator_GT_A01_t03: CompileTimeError
-LibTest/core/double/operator_GT_A02_t01: CompileTimeError
-LibTest/core/double/operator_LE_A01_t03: CompileTimeError
-LibTest/core/double/operator_LE_A02_t01: CompileTimeError
-LibTest/core/double/operator_LT_A01_t03: CompileTimeError
-LibTest/core/double/operator_LT_A02_t01: CompileTimeError
-LibTest/core/double/operator_addition_A01_t07: CompileTimeError
-LibTest/core/double/operator_addition_A02_t01: CompileTimeError
-LibTest/core/double/operator_division_A01_t07: CompileTimeError
-LibTest/core/double/operator_division_A01_t08: CompileTimeError
-LibTest/core/double/operator_division_A01_t11: CompileTimeError
-LibTest/core/double/operator_division_A02_t01: CompileTimeError
-LibTest/core/double/operator_multiplication_A01_t06: CompileTimeError
-LibTest/core/double/operator_multiplication_A01_t08: CompileTimeError
-LibTest/core/double/operator_multiplication_A02_t01: CompileTimeError
-LibTest/core/double/operator_remainder_A01_t02: CompileTimeError
-LibTest/core/double/operator_remainder_A01_t03: CompileTimeError
-LibTest/core/double/operator_remainder_A01_t04: CompileTimeError
-LibTest/core/double/operator_remainder_A01_t05: CompileTimeError
-LibTest/core/double/operator_remainder_A01_t06: CompileTimeError
-LibTest/core/double/operator_remainder_A02_t01: CompileTimeError
-LibTest/core/double/operator_subtraction_A01_t07: CompileTimeError
-LibTest/core/double/operator_subtraction_A01_t08: CompileTimeError
-LibTest/core/double/operator_subtraction_A02_t01: CompileTimeError
-LibTest/core/double/operator_truncating_division_A01_t08: CompileTimeError
-LibTest/core/double/operator_truncating_division_A02_t01: CompileTimeError
-LibTest/core/double/remainder_A01_t02: CompileTimeError
-LibTest/core/double/remainder_A01_t03: CompileTimeError
-LibTest/core/double/remainder_A01_t04: CompileTimeError
-LibTest/core/double/remainder_A01_t05: CompileTimeError
-LibTest/core/double/remainder_A01_t06: CompileTimeError
-LibTest/core/double/remainder_A02_t01: CompileTimeError
-LibTest/core/double/toStringAsFixed_A02_t01: CompileTimeError
-LibTest/core/int/abs_A01_t01: CompileTimeError
-LibTest/core/int/ceilToDouble_A01_t01: CompileTimeError
-LibTest/core/int/ceil_A01_t01: CompileTimeError
-LibTest/core/int/compareTo_A01_t01: CompileTimeError
-LibTest/core/int/floorToDouble_A01_t01: CompileTimeError
-LibTest/core/int/floor_A01_t01: CompileTimeError
-LibTest/core/int/isEven_A01_t01: CompileTimeError
-LibTest/core/int/isInfinite_A01_t01: CompileTimeError
-LibTest/core/int/isNaN_A01_t01: CompileTimeError
-LibTest/core/int/isNegative_A01_t01: CompileTimeError
-LibTest/core/int/isOdd_A01_t01: CompileTimeError
-LibTest/core/int/operator_AND_A01_t01: CompileTimeError
-LibTest/core/int/operator_GE_A01_t01: CompileTimeError
-LibTest/core/int/operator_GT_A01_t01: CompileTimeError
-LibTest/core/int/operator_LE_A01_t01: CompileTimeError
-LibTest/core/int/operator_LT_A01_t01: CompileTimeError
-LibTest/core/int/operator_NOT_A01_t01: CompileTimeError
-LibTest/core/int/operator_OR_A01_t01: CompileTimeError
-LibTest/core/int/operator_XOR_A01_t01: CompileTimeError
-LibTest/core/int/operator_addition_A01_t01: CompileTimeError
-LibTest/core/int/operator_division_A01_t01: CompileTimeError
-LibTest/core/int/operator_left_shift_A01_t01: CompileTimeError
-LibTest/core/int/operator_multiplication_A01_t01: CompileTimeError
-LibTest/core/int/operator_remainder_A01_t01: CompileTimeError
-LibTest/core/int/operator_remainder_A01_t02: CompileTimeError
-LibTest/core/int/operator_right_shift_A01_t01: CompileTimeError
-LibTest/core/int/operator_subtraction_A01_t01: CompileTimeError
-LibTest/core/int/operator_truncating_division_A01_t01: CompileTimeError
-LibTest/core/int/operator_truncating_division_A01_t02: CompileTimeError
-LibTest/core/int/operator_unary_minus_A01_t01: CompileTimeError
-LibTest/core/int/parse_A01_t01: CompileTimeError
-LibTest/core/int/remainder_A01_t01: CompileTimeError
-LibTest/core/int/remainder_A01_t02: CompileTimeError
-LibTest/core/int/roundToDouble_A01_t01: CompileTimeError
-LibTest/core/int/round_A01_t01: CompileTimeError
-LibTest/core/int/toDouble_A01_t01: CompileTimeError
-LibTest/core/int/toInt_A01_t01: CompileTimeError
-LibTest/core/int/truncateToDouble_A01_t01: CompileTimeError
-LibTest/core/int/truncate_A01_t01: CompileTimeError
-LibTest/isolate/Isolate/spawnUri_A01_t05: CompileTimeError
-LibTest/isolate/Isolate/spawnUri_A02_t01: CompileTimeError
-LibTest/isolate/Isolate/spawnUri_A02_t06: CompileTimeError
-LibTest/isolate/Isolate/spawnUri_A02_t07: CompileTimeError
-LibTest/isolate/Isolate/spawn_A01_t03: CompileTimeError
-LibTest/isolate/Isolate/spawn_A02_t04: CompileTimeError
-LibTest/isolate/Isolate/spawn_A02_t05: CompileTimeError
-LibTest/isolate/Isolate/spawn_A02_t06: CompileTimeError
-LibTest/isolate/Isolate/spawn_A02_t07: CompileTimeError
-LibTest/isolate/Isolate/spawn_A04_t01: CompileTimeError
-LibTest/isolate/Isolate/spawn_A04_t02: CompileTimeError
-LibTest/isolate/Isolate/spawn_A04_t03: CompileTimeError
-LibTest/isolate/Isolate/spawn_A04_t04: CompileTimeError
-LibTest/isolate/Isolate/spawn_A04_t05: CompileTimeError
-LibTest/isolate/Isolate/spawn_A05_t03: CompileTimeError
-LibTest/isolate/Isolate/spawn_A06_t01: CompileTimeError
-LibTest/isolate/Isolate/spawn_A06_t02: CompileTimeError
-LibTest/isolate/Isolate/spawn_A06_t03: CompileTimeError
-LibTest/isolate/Isolate/spawn_A06_t04: CompileTimeError
-LibTest/isolate/Isolate/spawn_A06_t05: CompileTimeError
-LibTest/isolate/Isolate/spawn_A06_t06: CompileTimeError
-LibTest/isolate/Isolate/spawn_A06_t07: CompileTimeError
-LibTest/isolate/ReceivePort/any_A01_t02: CompileTimeError
-LibTest/isolate/ReceivePort/distinct_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/firstWhere_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/firstWhere_A02_t01: CompileTimeError
-LibTest/isolate/ReceivePort/fold_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/forEach_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/lastWhere_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/lastWhere_A02_t01: CompileTimeError
-LibTest/isolate/ReceivePort/reduce_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/sendPort_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/singleWhere_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/toSet_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/transform_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/where_A01_t01: CompileTimeError
-LibTest/isolate/ReceivePort/where_A01_t02: CompileTimeError
-LibTest/math/Point/operator_addition_A02_t01: CompileTimeError
-LibTest/math/Point/operator_mult_A02_t01: CompileTimeError
-LibTest/math/Point/operator_mult_A03_t01: CompileTimeError
-LibTest/math/Point/operator_subtraction_A02_t01: CompileTimeError
-LibTest/math/max_A01_t01: CompileTimeError
-LibTest/math/max_A02_t01: CompileTimeError
-LibTest/math/min_A01_t01: CompileTimeError
-LibTest/math/min_A02_t01: CompileTimeError
-LibTest/math/pow_A10_t01: CompileTimeError
-LibTest/typed_data/ByteBuffer/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/ByteBuffer/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/ByteBuffer/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/ByteData.view_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/ByteData.view_A03_t01: CompileTimeError
-LibTest/typed_data/ByteData/ByteData.view_A04_t01: CompileTimeError
-LibTest/typed_data/ByteData/ByteData_A01_t01: CompileTimeError
-LibTest/typed_data/ByteData/buffer_A01_t01: CompileTimeError
-LibTest/typed_data/ByteData/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/getUint64_A01_t01: CompileTimeError
-LibTest/typed_data/ByteData/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/ByteData/setUint64_A01_t01: CompileTimeError
-LibTest/typed_data/Float32List/asMap_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/first_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/last_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/reduce_A01_t01: CompileTimeError
-LibTest/typed_data/Float32List/reduce_A02_t01: CompileTimeError
-LibTest/typed_data/Float32List/replaceRange_A01_t01: CompileTimeError
-LibTest/typed_data/Float32List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Float32List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Float32List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Float32x4/w_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4/x_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4/y_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4/z_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/asMap_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/firstWhere_A02_t01: CompileTimeError
-LibTest/typed_data/Float32x4List/first_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/reduce_A02_t01: CompileTimeError
-LibTest/typed_data/Float32x4List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Float32x4List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Float32x4List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Float64List/add_A01_t01: CompileTimeError
-LibTest/typed_data/Float64List/asMap_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/firstWhere_A02_t01: CompileTimeError
-LibTest/typed_data/Float64List/first_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/forEach_A01_t01: CompileTimeError
-LibTest/typed_data/Float64List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/last_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/reduce_A01_t01: CompileTimeError
-LibTest/typed_data/Float64List/reduce_A02_t01: CompileTimeError
-LibTest/typed_data/Float64List/replaceRange_A01_t01: CompileTimeError
-LibTest/typed_data/Float64List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Float64List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Float64List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int16List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Int16List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int16List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int32List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Int32List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int32List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int32x4/flagW_A01_t03: CompileTimeError
-LibTest/typed_data/Int32x4/flagX_A01_t03: CompileTimeError
-LibTest/typed_data/Int32x4/flagY_A01_t03: CompileTimeError
-LibTest/typed_data/Int32x4/flagZ_A01_t03: CompileTimeError
-LibTest/typed_data/Int32x4/w_A01_t02: CompileTimeError
-LibTest/typed_data/Int32x4/x_A01_t02: CompileTimeError
-LibTest/typed_data/Int32x4/y_A01_t02: CompileTimeError
-LibTest/typed_data/Int32x4/z_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Int64List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int64List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int8List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Int8List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Int8List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint16List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Uint16List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint16List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint32List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Uint32List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint32List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t01: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t01: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint64List/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/single_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint8ClampedList/takeWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint8List/buffer_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/elementSizeInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/hashCode_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/isEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/isNotEmpty_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/iterator_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/lengthInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/offsetInBytes_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/reversed_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/runtimeType_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/single_A01_t02: CompileTimeError
-LibTest/typed_data/Uint8List/skipWhile_A03_t01: CompileTimeError
-LibTest/typed_data/Uint8List/takeWhile_A03_t01: CompileTimeError
-Utils/tests/Expect/equals_A01_t03: CompileTimeError
-Utils/tests/Expect/notEquals_A01_t03: CompileTimeError
-Utils/tests/Expect/throws_A01_t04: CompileTimeError
-
-[ $fasta && !$strong ]
-Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: MissingCompileTimeError
-Language/Classes/Constructors/Factories/default_value_t01: MissingCompileTimeError
-Language/Classes/Constructors/Factories/default_value_t02: MissingCompileTimeError
-Language/Classes/Constructors/Generative_Constructors/execution_t03: CompileTimeError # super initializer not last
-Language/Classes/Constructors/Generative_Constructors/initializers_t01: CompileTimeError # super initializer not last
-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
-Language/Classes/Constructors/Generative_Constructors/superclass_constructor_t06: MissingCompileTimeError
-Language/Classes/Static_Methods/declaration_t01: MissingCompileTimeError
-Language/Classes/Static_Methods/same_name_method_and_setter_t01: CompileTimeError # Invalid test, see #33237
-Language/Classes/Superclasses/wrong_superclass_t08: MissingCompileTimeError
-Language/Classes/Superinterfaces/wrong_type_t05: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t01: MissingCompileTimeError
-Language/Classes/same_name_instance_and_static_members_t03: MissingCompileTimeError
-Language/Classes/same_name_type_variable_t04: MissingCompileTimeError
-Language/Classes/same_name_type_variable_t07: MissingCompileTimeError
-Language/Expressions/Constants/bitwise_operators_t03: MissingCompileTimeError
-Language/Expressions/Constants/bitwise_operators_t04: MissingCompileTimeError
-Language/Expressions/Constants/bitwise_operators_t06: MissingCompileTimeError
-Language/Expressions/Constants/constant_list_t02: MissingCompileTimeError
-Language/Expressions/Constants/constant_map_t02: MissingCompileTimeError
-Language/Expressions/Constants/depending_on_itself_t03: MissingCompileTimeError
-Language/Expressions/Constants/equals_expression_t03: MissingCompileTimeError
-Language/Expressions/Constants/math_operators_t05: MissingCompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t03: MissingCompileTimeError
-Language/Expressions/Function_Invocation/Unqualified_Invocation/instance_context_invocation_t04: MissingCompileTimeError
-Language/Expressions/Instance_Creation/Const/arguments_t03: MissingCompileTimeError
-Language/Expressions/Instance_Creation/New/execution_t04: CompileTimeError # super initializer not last
-Language/Expressions/Instance_Creation/New/execution_t06: CompileTimeError # super initializer not last
-Language/Expressions/Instance_Creation/New/execution_t09: CompileTimeError # super initializer not last
-Language/Expressions/Maps/constant_map_t02: MissingCompileTimeError
-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_t03: MissingCompileTimeError
-Language/Expressions/Numbers/syntax_t06: CompileTimeError
-Language/Expressions/Numbers/syntax_t09: CompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t01: MissingCompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t02: MissingCompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t03: MissingCompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t04: MissingCompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t05: MissingCompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t06: MissingCompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t07: MissingCompileTimeError
-Language/Expressions/Property_Extraction/Getter_Access_and_Method_Extraction/class_object_member_t08: MissingCompileTimeError
-Language/Libraries_and_Scripts/Exports/reexport_t01: MissingCompileTimeError
-Language/Libraries_and_Scripts/Exports/reexport_t02: MissingCompileTimeError
-Language/Libraries_and_Scripts/Imports/invalid_uri_deferred_t02: CompileTimeError
-Language/Mixins/Mixin_Application/deferred_t01: MissingCompileTimeError
-Language/Mixins/Mixin_Application/syntax_t20: CompileTimeError
-Language/Mixins/declaring_constructor_t05: MissingCompileTimeError
-Language/Mixins/declaring_constructor_t06: MissingCompileTimeError
-Language/Statements/Continue/label_t07: MissingCompileTimeError
-Language/Statements/Switch/equal_operator_t01: MissingCompileTimeError
-Language/Statements/Switch/equal_operator_t02: MissingCompileTimeError
-Language/Statements/Switch/expressions_t01: MissingCompileTimeError
-Language/Statements/Switch/expressions_t02: MissingCompileTimeError
-Language/Statements/Switch/expressions_t03: MissingCompileTimeError
-Language/Statements/Switch/expressions_t04: MissingCompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t01: MissingCompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t03: MissingCompileTimeError
-Language/Statements/Yield_and_Yield_Each/Yield_Each/location_t05: MissingCompileTimeError
-Language/Types/Interface_Types/subtype_t30: CompileTimeError
-LibTest/core/int/compareTo_A01_t01: CompileTimeError
-LibTest/core/int/isEven_A01_t01: CompileTimeError
-LibTest/core/int/isOdd_A01_t01: CompileTimeError
-LibTest/core/int/operator_AND_A01_t01: CompileTimeError
-LibTest/core/int/operator_GT_A01_t01: CompileTimeError
-LibTest/core/int/operator_LT_A01_t01: CompileTimeError
-LibTest/core/int/operator_NOT_A01_t01: CompileTimeError
-LibTest/core/int/operator_OR_A01_t01: CompileTimeError
-LibTest/core/int/operator_XOR_A01_t01: CompileTimeError
-LibTest/core/int/operator_addition_A01_t01: CompileTimeError
-LibTest/core/int/operator_left_shift_A01_t01: CompileTimeError
-LibTest/core/int/operator_remainder_A01_t01: CompileTimeError
-LibTest/core/int/operator_right_shift_A01_t01: CompileTimeError
-LibTest/core/int/operator_truncating_division_A01_t02: CompileTimeError
-LibTest/core/int/remainder_A01_t01: CompileTimeError
-LibTest/core/int/toDouble_A01_t01: CompileTimeError
-LibTest/typed_data/ByteData/getUint64_A01_t01: CompileTimeError
-LibTest/typed_data/ByteData/setUint64_A01_t01: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t01: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.fromList_A01_t02: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t01: CompileTimeError
-LibTest/typed_data/Uint64List/Uint64List.view_A01_t02: CompileTimeError
-
-[ $compiler == app_jitk || $compiler == dartk || $compiler == dartkb || $compiler == dartkp ]
-*: SkipByDesign
diff --git a/tests/co19/co19-runtime.status b/tests/co19/co19-runtime.status
deleted file mode 100644
index 7be5f14..0000000
--- a/tests/co19/co19-runtime.status
+++ /dev/null
@@ -1,5 +0,0 @@
-# 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.
-
-*: SkipByDesign # Deprecating Dart1 tests.
diff --git a/tests/co19_2/co19_2-analyzer.status b/tests/co19_2/co19_2-analyzer.status
index 122453a..458b18f 100644
--- a/tests/co19_2/co19_2-analyzer.status
+++ b/tests/co19_2/co19_2-analyzer.status
@@ -66,8 +66,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/Strings/String_Interpolation/double_quote_t02: CompileTimeError # Uses void, see issue #164 in the co19 repo
-Language/Expressions/Strings/String_Interpolation/single_quote_t02: CompileTimeError # Uses void, see issue #164 in the co19 repo
 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
@@ -122,135 +120,53 @@
 Language/Statements/Return/no_expression_function_t16: CompileTimeError # issue #34319
 Language/Statements/Return/no_expression_not_function_t01: CompileTimeError # issue #34319
 Language/Types/Interface_Types/subtype_t30: CompileTimeError # Please triage this failure
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t03: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t04: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t05: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t06: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t07: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t08: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t09: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t10: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t11: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t12: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t03: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t04: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t05: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t06: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t07: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t08: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t09: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t10: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t11: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t12: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t03: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t04: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t05: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t06: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t07: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t08: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t09: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t10: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t11: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t12: MissingCompileTimeError # Issue 34087
-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 # 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_t16: 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_t19: 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/check_types/typedef_param_t02: CompileTimeError # Bad test
-LanguageFeatures/Instantiate-to-bound/class/class_extends_FutureOr_neg_l3_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_FutureOr_pos_l1_t01: CompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l3_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l3_t02: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l4_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l4_t02: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l4_t03: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l4_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l4_t06: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_assign_l4_t07: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_l3_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l3_t01: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l3_t02: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t01: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t02: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t03: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t05: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t06: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_assign_l4_t07: MissingCompileTimeError # Issue 33152, 33477
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_pos_l1_t05: CompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_pos_l1_t06: CompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_neg_assign_l1_t10: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_pos_l1_t05: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_pos_l1_t06: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_pos_l1_t05: CompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_pos_l1_t06: CompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_neg_assign_l1_t10: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_pos_l1_t05: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_pos_l1_t06: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_pos_l1_t05: CompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_neg_assign_l1_t10: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_pos_l1_t05: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_pos_l1_t01: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t02: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t03: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t04: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t06: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t07: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t08: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t09: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t19: CompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_neg_assign_l1_t01: MissingCompileTimeError # Issue 33995
-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_t19: CompileTimeError # Issue 33995
-LanguageFeatures/Instantiate-to-bound/interface/interface_neg_assign_l2_t01: MissingCompileTimeError # Issue 33995
-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
-LanguageFeatures/Instantiate-to-bound/typedef/typedef_named_extends_pos_l2_t01: CompileTimeError # Bad test
-LanguageFeatures/Instantiate-to-bound/typedef/typedef_optparam_extends_pos_l2_t01: CompileTimeError # Bad test
-LanguageFeatures/Instantiate-to-bound/typedef/typedef_param_extends_pos_l2_t01: CompileTimeError # Bad test
-LanguageFeatures/Instantiate-to-bound/typedef/typedef_ret_extends_pos_l2_t01: CompileTimeError # Bad test
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t04: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l1_t03: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l2_t07: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l2_t08: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l3_t02: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l1_t04: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l2_t01: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l2_t02: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t04/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_l1_t03/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t07/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t08/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_l3_t02/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_l4_t01/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l1_t04/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t01/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t02/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t08: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t03/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t07/none: CompileTimeError # Please triage this failure
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_t01/none: CompileTimeError # Please triage this failure
 LanguageFeatures/Super-bounded-types/static_analysis_A01_t02: CompileTimeError # Issue 32903
 LanguageFeatures/Super-bounded-types/static_analysis_A01_t05: CompileTimeError # Issue 32903
 LanguageFeatures/Super-bounded-types/static_analysis_A01_t08: CompileTimeError # Issue 32903
-LanguageFeatures/Super_Mixins/declarations_neg_t01/none: CompileTimeError
-LanguageFeatures/Super_Mixins/declarations_neg_t02/none: CompileTimeError
+LanguageFeatures/Super-mixins/more_specific_t01: CompileTimeError # Please triage this failure
+LanguageFeatures/Super-mixins/not_class_t02: CompileTimeError # Please triage this failure
+LanguageFeatures/Super-mixins/not_class_t03: CompileTimeError # Please triage this failure
+LanguageFeatures/Super-mixins/on_word_t02: CompileTimeError # Please triage this failure
+LanguageFeatures/Super-mixins/on_word_t03: CompileTimeError # Please triage this failure
 LanguageFeatures/Super_Mixins/declarations_t01: CompileTimeError
-LanguageFeatures/Super_Mixins/mixin_application_neg_t01/none: CompileTimeError
-LanguageFeatures/Super_Mixins/mixin_application_neg_t03/none: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_application_t01: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_application_t02: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_application_t03: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_application_t04: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_applying_t01: CompileTimeError
-LanguageFeatures/Super_Mixins/mixin_member_neg_t01: CompileTimeError
-LanguageFeatures/Super_Mixins/mixin_member_neg_t02: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_member_t01: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_member_t02: CompileTimeError
 LanguageFeatures/Super_Mixins/more_specific_t01: CompileTimeError
-LanguageFeatures/Super_Mixins/super_invocation_neg_t01/none: CompileTimeError
 LanguageFeatures/Super_Mixins/super_invocation_t01: CompileTimeError
 LanguageFeatures/Super_Mixins/syntax_t01: CompileTimeError
 LanguageFeatures/Super_Mixins/syntax_t02: CompileTimeError
 LanguageFeatures/Super_Mixins/syntax_t04: CompileTimeError
+LanguageFeatures/regression/33585_t01: MissingCompileTimeError # Please triage this failure
+LanguageFeatures/regression/33585_t02: MissingCompileTimeError # Please triage this failure
+LanguageFeatures/regression/33597_t01: MissingCompileTimeError # Please triage this failure
+LanguageFeatures/regression/33701_t02: CompileTimeError # Please triage this failure
+LanguageFeatures/regression/34635_t01: CompileTimeError # Please triage this failure
+LanguageFeatures/regression/34635_t02: CompileTimeError # Please triage this failure
+LibTest/async/Future/Future_A01_t01: CompileTimeError # Please triage this failure
diff --git a/tests/co19_2/co19_2-dart2js.status b/tests/co19_2/co19_2-dart2js.status
index be656d4..0f4eab7 100644
--- a/tests/co19_2/co19_2-dart2js.status
+++ b/tests/co19_2/co19_2-dart2js.status
@@ -66,6 +66,48 @@
 Language/Types/Interface_Types/subtype_t27: Pass, Crash # Issue 34389
 Language/Types/Type_Declarations/Typedef/dynamic_param_type_t02: RuntimeError
 Language/Variables/constant_initialization_t03: RuntimeError
+LanguageFeatures/Instantiate-to-bound/FutureOr/dynamic/FutureOr_l1_t01: RuntimeError
+LanguageFeatures/Instantiate-to-bound/FutureOr/dynamic/FutureOr_l1_t02: RuntimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t03: Crash
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t04: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l1_t03: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l2_t07: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l2_t08: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l3_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l1_t04: RuntimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l2_t01: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l2_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/01: Crash
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/02: Crash
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/none: Crash
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t04/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l1_t03/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t07/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t08/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l3_t02/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l4_t01/02: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l1_t04/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t01/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t02/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t03: RuntimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t05: RuntimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t07: RuntimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t08: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_t01: RuntimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t03/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t07/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_t01/none: CompileTimeError
+LanguageFeatures/Simple-bounds/dynamic/FutureOr_l1_t01: RuntimeError, Pass
+LanguageFeatures/Simple-bounds/dynamic/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_l2_t01: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_typedef_l1_t01: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_typedef_l1_t02: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_typedef_l1_t03: RuntimeError
+LanguageFeatures/Simple-bounds/static/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Simple-bounds/static/typedef_typedef_l1_t03: CompileTimeError, Pass
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t03: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A52_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A52_t02: RuntimeError
@@ -86,6 +128,17 @@
 LanguageFeatures/Subtyping/dynamic/generated/positional_function_types_fail_global_variable_fail_A31_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/positional_function_types_fail_global_variable_fail_A32_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/positional_function_types_fail_return_value_fail_A31_t01: RuntimeError
+LanguageFeatures/Super-mixins/more_specific_t01: CompileTimeError
+LanguageFeatures/Super-mixins/not_class_t02: CompileTimeError
+LanguageFeatures/Super-mixins/not_class_t03: CompileTimeError
+LanguageFeatures/Super-mixins/on_word_t02: CompileTimeError
+LanguageFeatures/Super-mixins/on_word_t03: CompileTimeError
+LanguageFeatures/regression/33585_t01: MissingCompileTimeError
+LanguageFeatures/regression/33585_t02: MissingCompileTimeError
+LanguageFeatures/regression/33597_t01: MissingCompileTimeError
+LanguageFeatures/regression/33701_t01: MissingCompileTimeError
+LanguageFeatures/regression/34635_t01: CompileTimeError
+LanguageFeatures/regression/34635_t02: CompileTimeError
 LayoutTests/fast/alignment/parse-align-items_t01: RuntimeError
 LayoutTests/fast/alignment/parse-align-self_t01: RuntimeError
 LayoutTests/fast/alignment/parse-justify-self_t01: RuntimeError
@@ -360,6 +413,7 @@
 LayoutTests/fast/xpath/py-dom-xpath/data_t01: RuntimeError
 LayoutTests/fast/xpath/py-dom-xpath/paths_t01: RuntimeError
 LayoutTests/fast/xpath/reverse-axes_t01: RuntimeError
+LibTest/async/Future/Future_A01_t01: CompileTimeError
 LibTest/async/Stream/Stream.fromFutures_A04_t03: RuntimeError
 LibTest/async/Stream/Stream.periodic_A02_t01: RuntimeError
 LibTest/async/Stream/Stream.periodic_A03_t01: RuntimeError
@@ -755,7 +809,6 @@
 LibTest/typed_data/Float32x4List/fold_A01_t01: RuntimeError
 LibTest/typed_data/Float32x4List/join_A01_t01: RuntimeError
 LibTest/typed_data/Float32x4List/join_A01_t02: RuntimeError
-LibTest/typed_data/Float32x4List/shuffle_A01_t01: RuntimeError
 LibTest/typed_data/Float64List/Float64List.view_A05_t01: RuntimeError
 LibTest/typed_data/Float64List/Float64List.view_A05_t02: RuntimeError
 LibTest/typed_data/Float64List/Float64List.view_A05_t03: RuntimeError
@@ -775,7 +828,6 @@
 LibTest/typed_data/Float64x2List/join_A01_t01: RuntimeError
 LibTest/typed_data/Float64x2List/join_A01_t02: RuntimeError
 LibTest/typed_data/Float64x2List/setAll_A04_t01: RuntimeError
-LibTest/typed_data/Float64x2List/shuffle_A01_t01: RuntimeError
 LibTest/typed_data/Float64x2List/sort_A01_t01: RuntimeError
 LibTest/typed_data/Float64x2List/toString_A01_t01: RuntimeError
 LibTest/typed_data/Int16List/Int16List.view_A05_t01: RuntimeError
@@ -807,7 +859,6 @@
 LibTest/typed_data/Int32x4List/length_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/offsetInBytes_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/setAll_A04_t01: RuntimeError
-LibTest/typed_data/Int32x4List/shuffle_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/skip_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/skip_A02_t01: RuntimeError
 LibTest/typed_data/Int32x4List/sublist_A01_t01: RuntimeError
@@ -923,6 +974,8 @@
 LibTest/typed_data/Int64List/setRange_A04_t01: RuntimeError
 LibTest/typed_data/Int64List/setRange_A05_t01: RuntimeError
 LibTest/typed_data/Int64List/shuffle_A01_t01: RuntimeError
+LibTest/typed_data/Int64List/shuffle_A01_t02: RuntimeError
+LibTest/typed_data/Int64List/shuffle_A01_t03: RuntimeError
 LibTest/typed_data/Int64List/singleWhere_A01_t01: RuntimeError
 LibTest/typed_data/Int64List/singleWhere_A02_t01: RuntimeError
 LibTest/typed_data/Int64List/singleWhere_A02_t02: RuntimeError
@@ -1087,6 +1140,8 @@
 LibTest/typed_data/Uint64List/setRange_A04_t01: RuntimeError
 LibTest/typed_data/Uint64List/setRange_A05_t01: RuntimeError
 LibTest/typed_data/Uint64List/shuffle_A01_t01: RuntimeError
+LibTest/typed_data/Uint64List/shuffle_A01_t02: RuntimeError
+LibTest/typed_data/Uint64List/shuffle_A01_t03: RuntimeError
 LibTest/typed_data/Uint64List/singleWhere_A01_t01: RuntimeError
 LibTest/typed_data/Uint64List/singleWhere_A02_t01: RuntimeError
 LibTest/typed_data/Uint64List/singleWhere_A02_t02: RuntimeError
@@ -1277,6 +1332,10 @@
 Language/Types/Interface_Types/subtype_t23: RuntimeError
 Language/Variables/constant_variable_t09: RuntimeError
 LanguageFeatures/Instantiate-to-bound/check_types/typedef_param_t02: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_FutureOr_l1_t05: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t05: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t10: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_typedef_l1_t05: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t02: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A53_t01: RuntimeError
@@ -1302,6 +1361,8 @@
 LanguageFeatures/Subtyping/dynamic/generated/positional_function_types_fail_local_variable_fail_A31_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/positional_function_types_fail_local_variable_fail_A32_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/positional_function_types_fail_return_value_fail_A32_t01: RuntimeError
+LanguageFeatures/regression/34803_t01: Crash
+LanguageFeatures/regression/34803_t02: Crash
 LayoutTests/fast/animation/request-animation-frame-cancel2_t01: Timeout, Pass
 LayoutTests/fast/animation/request-animation-frame-cancel_t01: Timeout, Pass
 LayoutTests/fast/animation/request-animation-frame-prefix_t01: Timeout, Pass
@@ -3509,8 +3570,6 @@
 Language/Types/Interface_Types/subtype_t21: RuntimeError
 Language/Types/Interface_Types/subtype_t23: RuntimeError
 Language/Variables/constant_variable_t09: RuntimeError
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t01: 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
@@ -3522,15 +3581,12 @@
 LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t10: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/check_types/typedef_param_t02: RuntimeError
 LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t03: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t07: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_neg_assign_l1_t04: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t06: MissingCompileTimeError
 LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t07: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t13: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t15: MissingCompileTimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_FutureOr_l1_t05: RuntimeError, Pass
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t05: RuntimeError, Pass
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t10: RuntimeError, Pass
+LanguageFeatures/Simple-bounds/dynamic/typedef_typedef_l1_t05: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t02: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A53_t01: RuntimeError
@@ -3558,6 +3614,8 @@
 LanguageFeatures/Subtyping/dynamic/generated/positional_function_types_fail_return_value_fail_A32_t01: RuntimeError
 LanguageFeatures/Super_Mixins/mixin_member_neg_t02: RuntimeError
 LanguageFeatures/Super_Mixins/super_invocation_t01: CompileTimeError
+LanguageFeatures/regression/34803_t01: Crash, Pass
+LanguageFeatures/regression/34803_t02: Crash, Pass
 LayoutTests/fast/animation/request-animation-frame-prefix_t01: RuntimeError
 LayoutTests/fast/backgrounds/animated-gif-as-background_t01: RuntimeError
 LayoutTests/fast/backgrounds/background-fill-zero-area-crash_t01: RuntimeError
@@ -5174,6 +5232,10 @@
 Language/Types/Interface_Types/subtype_t23: RuntimeError
 Language/Variables/constant_variable_t09: RuntimeError
 LanguageFeatures/Instantiate-to-bound/check_types/typedef_param_t02: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_FutureOr_l1_t05: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t05: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t10: RuntimeError, Pass
+LanguageFeatures/Simple-bounds/dynamic/typedef_typedef_l1_t05: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t02: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A53_t01: RuntimeError
@@ -7017,6 +7079,10 @@
 Language/Types/Interface_Types/subtype_t23: RuntimeError
 Language/Variables/constant_variable_t09: RuntimeError
 LanguageFeatures/Instantiate-to-bound/check_types/typedef_param_t02: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_FutureOr_l1_t05: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t05: RuntimeError
+LanguageFeatures/Simple-bounds/dynamic/typedef_l1_t10: RuntimeError, Pass
+LanguageFeatures/Simple-bounds/dynamic/typedef_typedef_l1_t05: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t01: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A51_t02: RuntimeError
 LanguageFeatures/Subtyping/dynamic/generated/named_function_types_fail_arguments_binding_fail_A53_t01: RuntimeError
diff --git a/tests/co19_2/co19_2-kernel.status b/tests/co19_2/co19_2-kernel.status
index 7ffb4fa..df6c4d0 100644
--- a/tests/co19_2/co19_2-kernel.status
+++ b/tests/co19_2/co19_2-kernel.status
@@ -1,6 +1,11 @@
 # 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.
+LibTest/io/RawDatagramSocket/any_A01_t02: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
+LibTest/io/RawDatagramSocket/asBroadcastStream_A01_t02: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
+LibTest/io/RawDatagramSocket/distinct_A01_t05: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
+LibTest/io/RawDatagramSocket/timeout_A02_t01: Pass, Fail # Issue https://github.com/dart-lang/co19/issues/170
+LibTest/io/RawDatagramSocket/timeout_A06_t01: Pass, Fail # Next roll might fix it (see https://github.com/dart-lang/co19/commit/8b2e2be5bc3bb9fec41efec8ac6fc777e231d915)
 
 [ $compiler == dartkp ]
 Language/Expressions/Instance_Creation/New/evaluation_t20: RuntimeError
@@ -14,7 +19,6 @@
 Language/Statements/Yield_and_Yield_Each/Yield_Each/execution_async_t09: RuntimeError
 Language/Types/Interface_Types/subtype_t03: RuntimeError
 Language/Types/Interface_Types/subtype_t26: RuntimeError
-LanguageFeatures/Instantiate-to-bound/check_types/typedef_param_t02: RuntimeError
 LanguageFeatures/Subtyping/static/generated/left_bottom_global_variable_A02_t01: DartkCrash
 LanguageFeatures/Subtyping/static/generated/left_promoted_variable_global_variable_A02_t01: DartkCrash
 LibTest/async/Stream/Stream.periodic_A02_t01: RuntimeError
@@ -32,7 +36,6 @@
 LibTest/io/Directory/renameSync_A02_t01: RuntimeError
 LibTest/io/Directory/rename_A02_t01: RuntimeError
 LibTest/io/File/openRead_A01_t04: RuntimeError
-LibTest/io/FileSystemCreateEvent/isDirectory_A01_t05: Fail, Pass
 LibTest/io/HttpClientRequest/addStream_A02_t02: RuntimeError
 LibTest/io/HttpClientRequest/add_A03_t01: RuntimeError
 LibTest/io/HttpServer/bind_A05_t02: Fail
@@ -148,13 +151,7 @@
 Language/Expressions/Instance_Creation/Const/arguments_t03: MissingCompileTimeError # Legal because of implicit const
 Language/Expressions/Instance_Creation/Const/parameterized_type_t01: CompileTimeError
 Language/Expressions/Instance_Creation/Const/parameterized_type_t02: CompileTimeError
-Language/Expressions/Instance_Creation/New/evaluation_t16: MissingCompileTimeError # Issue 33308
-Language/Expressions/Instance_Creation/New/evaluation_t17: MissingCompileTimeError # Issue 33308
-Language/Expressions/Instance_Creation/New/evaluation_t18: MissingCompileTimeError # Issue 33308
-Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t02: MissingCompileTimeError # Issue 33308
 Language/Expressions/Instance_Creation/New/syntax_t04: MissingCompileTimeError # Legal because of implicit new
-Language/Expressions/Instance_Creation/New/type_argument_t01: MissingCompileTimeError # Issue 33308
-Language/Expressions/Instance_Creation/malformed_or_malbounded_t07: MissingCompileTimeError # Issue 33308
 Language/Expressions/Lists/constant_list_t01: CompileTimeError
 Language/Expressions/Maps/constant_map_t02: MissingCompileTimeError
 Language/Expressions/Maps/constant_map_type_t01: CompileTimeError
@@ -173,16 +170,12 @@
 Language/Expressions/Property_Extraction/Super_Getter_Access_and_Method_Closurization/static_type_t03: CompileTimeError
 Language/Expressions/Relational_Expressions/syntax_t01: CompileTimeError
 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/Unary_Expressions/syntax_t10: CompileTimeError
 Language/Expressions/Unary_Expressions/syntax_t27: CompileTimeError
 Language/Functions/Formal_Parameters/Optional_Formals/default_value_t01: MissingCompileTimeError # 32912
 Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: MissingCompileTimeError # 32912
-Language/Generics/scope_t06: MissingCompileTimeError # Issue 33308
 Language/Generics/syntax_t02: CompileTimeError
 Language/Generics/syntax_t03: CompileTimeError
-Language/Generics/upper_bound_t01: MissingCompileTimeError # Issue 33308
 Language/Libraries_and_Scripts/Imports/library_name_t01: MissingCompileTimeError # Expects an error, but this is a warning in Dart 2
 Language/Mixins/Mixin_Application/deferred_t01: MissingCompileTimeError # Issue 30273
 Language/Mixins/Mixin_Application/static_warning_t01: MissingCompileTimeError # Mixin super equirement
@@ -208,181 +201,83 @@
 Language/Statements/Continue/control_transfer_t08: CompileTimeError
 Language/Statements/Continue/control_transfer_t09: CompileTimeError
 Language/Statements/Continue/label_t07: MissingCompileTimeError # Issue 34206
-Language/Statements/Switch/equal_operator_t01: MissingCompileTimeError # Issue 32557
-Language/Statements/Switch/equal_operator_t02: MissingCompileTimeError # Issue 32557
 Language/Statements/Try/catch_scope_t01: CompileTimeError
-Language/Types/Dynamic_Type_System/malbounded_type_error_t01: MissingCompileTimeError # Issue 33308
 Language/Types/Interface_Types/subtype_t30: CompileTimeError
-Language/Types/Parameterized_Types/malbounded_t01: MissingCompileTimeError # Issue 33308
-Language/Types/Parameterized_Types/malbounded_t02: MissingCompileTimeError # Issue 33308
-Language/Types/Parameterized_Types/malbounded_t03: MissingCompileTimeError # Issue 33308
-Language/Types/Parameterized_Types/malbounded_t04: MissingCompileTimeError # Issue 33308
-Language/Types/Parameterized_Types/malbounded_t05: MissingCompileTimeError # Issue 33308
-Language/Types/Parameterized_Types/malbounded_t06: MissingCompileTimeError # Issue 33308
-Language/Types/Static_Types/malformed_type_t01/04: MissingCompileTimeError # Issue 33308
-Language/Types/Static_Types/malformed_type_t01/05: MissingCompileTimeError # Issue 33308
-Language/Types/Static_Types/malformed_type_t01/06: MissingCompileTimeError # Issue 33308
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t01: MissingCompileTimeError # Please triage this failure
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t03: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t04: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t05: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t06: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t07: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t08: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t09: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t10: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t11: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_named_extends_neg_assign_l1_t12: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t01: MissingCompileTimeError # Please triage this failure
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t03: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t04: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t05: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t06: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t07: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t08: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t09: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t10: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t11: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_optparam_extends_neg_assign_l1_t12: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t01: MissingCompileTimeError # Please triage this failure
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t03: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t04: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t05: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t06: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t07: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t08: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t09: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t10: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t11: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_param_extends_neg_assign_l1_t12: MissingCompileTimeError # Issue 34087
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t01: MissingCompileTimeError # Issue 33308
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t03: MissingCompileTimeError # Issue 33805
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t04: MissingCompileTimeError # Issue 33805
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t05: MissingCompileTimeError # Issue 33805
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t06: MissingCompileTimeError # Issue 33597
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t07: MissingCompileTimeError # Issue 33597
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t08: MissingCompileTimeError # Issue 33597
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t09: MissingCompileTimeError # Issue 33597
-LanguageFeatures/Instantiate-to-bound/Callable/Callable_ret_extends_neg_assign_l1_t10: MissingCompileTimeError # Issue 33597
-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_t16: 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_t19: 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/class_extends_neg_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/custom_extends_neg_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t03: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t04: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t06: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t07: 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_Future_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t03: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t04: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t06: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t07: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_optparam_extends_Future_neg_assign_l1_t08: 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_Future_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_neg_assign_l1_t03: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_neg_assign_l1_t04: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_neg_assign_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_neg_assign_l1_t06: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_neg_assign_l1_t07: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_param_extends_Future_neg_assign_l1_t08: 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_Future_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t02: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t03: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t04: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t06: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t07: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t08: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t09: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t11: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t12: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t13: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t14: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t15: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t16: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t17: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t18: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t20: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t21: 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_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/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_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
-LanguageFeatures/Instantiate-to-bound/typedef/typedef_optparam_extends_neg_l2_t02: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/typedef/typedef_param_extends_neg_l1_t04: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/typedef/typedef_param_extends_neg_l2_t02: MissingCompileTimeError
-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
-LanguageFeatures/Super_Mixins/declarations_neg_t01/none: CompileTimeError
-LanguageFeatures/Super_Mixins/mixin_application_neg_t01/none: CompileTimeError
-LanguageFeatures/Super_Mixins/mixin_application_neg_t03/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t03: Crash
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_FutureOr_l1_t04: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l1_t03: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l2_t07: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l2_t08: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l3_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l1_t04: RuntimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l2_t01: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_typedef_l2_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/01: Crash
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/02: Crash
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t03/none: Crash
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t04/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l1_t03/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t07/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t08/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l3_t02/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l4_t01/02: MissingCompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l1_t04/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t01/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_typedef_l2_t02/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t07: RuntimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t08: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t03/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t07/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l2_t01/none: CompileTimeError
+LanguageFeatures/Simple-bounds/dynamic/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Simple-bounds/static/class_FutureOr_l1_t02: CompileTimeError
+LanguageFeatures/Super-mixins/more_specific_t01: CompileTimeError
+LanguageFeatures/Super-mixins/not_class_t02: CompileTimeError
+LanguageFeatures/Super-mixins/not_class_t03: CompileTimeError
+LanguageFeatures/Super-mixins/on_word_t02: CompileTimeError
+LanguageFeatures/Super-mixins/on_word_t03: CompileTimeError
+LanguageFeatures/Super_Mixins/declarations_t01: CompileTimeError
+LanguageFeatures/Super_Mixins/mixin_application_t01: CompileTimeError
+LanguageFeatures/Super_Mixins/mixin_application_t02: CompileTimeError
+LanguageFeatures/Super_Mixins/mixin_application_t03: CompileTimeError
+LanguageFeatures/Super_Mixins/mixin_application_t04: CompileTimeError
+LanguageFeatures/Super_Mixins/mixin_applying_t01: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_member_neg_t01: CompileTimeError
 LanguageFeatures/Super_Mixins/mixin_member_neg_t02: CompileTimeError
-LanguageFeatures/Super_Mixins/super_invocation_neg_t01/03: MissingCompileTimeError
+LanguageFeatures/Super_Mixins/mixin_member_t01: CompileTimeError
+LanguageFeatures/Super_Mixins/mixin_member_t02: CompileTimeError
+LanguageFeatures/Super_Mixins/more_specific_t01: CompileTimeError
 LanguageFeatures/Super_Mixins/super_invocation_t01: CompileTimeError
+LanguageFeatures/Super_Mixins/syntax_t01: CompileTimeError
+LanguageFeatures/Super_Mixins/syntax_t02: CompileTimeError
+LanguageFeatures/Super_Mixins/syntax_t04: CompileTimeError
+LanguageFeatures/regression/33585_t01: MissingCompileTimeError
+LanguageFeatures/regression/33585_t02: MissingCompileTimeError
+LanguageFeatures/regression/33597_t01: MissingCompileTimeError
+LanguageFeatures/regression/33701_t01: MissingCompileTimeError
+LanguageFeatures/regression/34635_t01: CompileTimeError
+LanguageFeatures/regression/34635_t02: CompileTimeError
+LanguageFeatures/regression/34803_t01: Crash
+LanguageFeatures/regression/34803_t02: Crash
+LibTest/async/Future/Future_A01_t01: CompileTimeError
+
+[ $arch == simdbc64 && $system == macos && ($compiler == dartk || $compiler == dartkb) ]
+LanguageFeatures/Subtyping/static/generated/function_type_function_arguments_binding_A04_t02: Crash, Pass
+LibTest/io/Directory/watch_A01_t02: RuntimeError, Pass
+LibTest/io/Directory/watch_A02_t01: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/type_A01_t01: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/type_A01_t02: RuntimeError, Pass
+LibTest/io/HttpClientRequest/add_A05_t01: RuntimeError, Pass
+LibTest/io/HttpClientRequest/contentLength_A02_t01: RuntimeError, Pass
+LibTest/io/HttpClientRequest/headers_A03_t01: RuntimeError, Pass
+LibTest/io/Stdout/writeCharCode_A01_t03: Timeout, Pass
 
 [ $arch == simdbc64 && ($compiler == dartk || $compiler == dartkb) ]
+LibTest/collection/ListBase/ListBase_class_A01_t02: Timeout, Pass
+LibTest/collection/ListMixin/ListMixin_class_A01_t02: Timeout, Pass
 LibTest/io/Link/renameSync_A02_t01: RuntimeError, Pass
 LibTest/io/Process/start_A01_t01: RuntimeError
 LibTest/io/Process/start_A02_t01: RuntimeError
@@ -429,9 +324,7 @@
 LibTest/io/RandomAccessFile/unlock_A01_t04: RuntimeError
 LibTest/io/RandomAccessFile/unlock_A02_t01: RuntimeError
 LibTest/io/RawDatagramSocket/any_A03_t01: RuntimeError, Pass
-LibTest/io/RawDatagramSocket/timeout_A02_t01: RuntimeError, Pass
 LibTest/io/RawDatagramSocket/timeout_A03_t01: RuntimeError, Pass
-LibTest/io/RawDatagramSocket/timeout_A06_t01: RuntimeError, Pass
 LibTest/io/RawSecureServerSocket/first_A02_t01: RuntimeError
 LibTest/io/RawSecureServerSocket/first_A02_t02: RuntimeError
 LibTest/io/RawSecureServerSocket/first_A03_t01: RuntimeError
@@ -445,6 +338,7 @@
 LibTest/io/Stdout/add_A04_t01: RuntimeError, Pass
 LibTest/io/stderr/stderr_A01_t01: RuntimeError, Pass
 LibTest/isolate/Isolate/ping_A03_t02: RuntimeError, Pass
+LibTest/isolate/Isolate/removeErrorListener_A02_t01: Crash, Pass
 
 [ $compiler != dart2js && $runtime != vm && $fasta ]
 Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t01: MissingCompileTimeError # Issue 34191
@@ -461,6 +355,181 @@
 [ $compiler != dart2js && $fasta ]
 Language/Classes/Constructors/Constant_Constructors/initializer_not_a_constant_t03: MissingCompileTimeError # Issue 34191
 Language/Expressions/Constants/literal_string_t02: MissingCompileTimeError # Issue 34192
+Language/Statements/Switch/equal_operator_t01: MissingCompileTimeError # Issue 32557
+Language/Statements/Switch/equal_operator_t02: MissingCompileTimeError # Issue 32557
+
+[ $mode == debug && $runtime == vm && $system == linux && ($compiler == dartk || $compiler == dartkb) ]
+LibTest/io/Stdin/readByteSync_A02_t01: RuntimeError, Pass
+LibTest/io/WebSocket/pingInterval_A01_t01: RuntimeError, Pass
+
+[ $runtime == vm && $system == linux && ($compiler == dartk || $compiler == dartkb) ]
+LibTest/io/Link/stat_A01_t01: RuntimeError
+LibTest/isolate/Isolate/spawn_A06_t03: Crash, Pass
+
+[ $runtime == vm && $system == macos && ($compiler == dartk || $compiler == dartkb) ]
+LibTest/io/Directory/watch_A01_t02: RuntimeError, Pass
+LibTest/io/Directory/watch_A02_t01: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/isDirectory_A01_t03: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/isDirectory_A01_t04: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/isDirectory_A01_t05: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/type_A01_t01: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/type_A01_t02: RuntimeError, Pass
+LibTest/io/FileSystemCreateEvent/type_A01_t03: RuntimeError, Pass
+LibTest/io/FileSystemDeleteEvent/isDirectory_A01_t01: RuntimeError
+LibTest/io/FileSystemDeleteEvent/isDirectory_A01_t02: RuntimeError
+LibTest/io/FileSystemDeleteEvent/isDirectory_A01_t03: RuntimeError
+LibTest/io/FileSystemDeleteEvent/isDirectory_A01_t04: RuntimeError
+LibTest/io/FileSystemDeleteEvent/isDirectory_A01_t05: RuntimeError
+LibTest/io/FileSystemDeleteEvent/path_A01_t01: RuntimeError
+LibTest/io/FileSystemDeleteEvent/path_A01_t02: RuntimeError
+LibTest/io/FileSystemDeleteEvent/path_A01_t03: RuntimeError
+LibTest/io/FileSystemDeleteEvent/type_A01_t01: RuntimeError
+LibTest/io/FileSystemDeleteEvent/type_A01_t02: RuntimeError
+LibTest/io/FileSystemDeleteEvent/type_A01_t03: RuntimeError
+LibTest/io/FileSystemEntity/isWatchSupported_A01_t01: RuntimeError
+LibTest/io/FileSystemModifyEvent/contentChanged_A01_t01: Fail
+LibTest/io/FileSystemMoveEvent/destination_A01_t01: Fail
+LibTest/io/FileSystemMoveEvent/destination_A01_t02: Fail
+LibTest/io/FileSystemMoveEvent/destination_A01_t03: RuntimeError, Fail
+LibTest/io/FileSystemMoveEvent/isDirectory_A01_t01: Fail
+LibTest/io/FileSystemMoveEvent/isDirectory_A01_t02: Fail
+LibTest/io/FileSystemMoveEvent/isDirectory_A01_t03: Fail
+LibTest/io/FileSystemMoveEvent/path_A01_t01: Fail
+LibTest/io/FileSystemMoveEvent/path_A01_t02: Fail
+LibTest/io/FileSystemMoveEvent/path_A01_t03: Fail
+LibTest/io/FileSystemMoveEvent/type_A01_t01: Fail
+LibTest/io/FileSystemMoveEvent/type_A01_t02: Fail
+LibTest/io/FileSystemMoveEvent/type_A01_t03: Fail
+LibTest/io/HttpClientRequest/contentLength_A02_t01: RuntimeError, Pass
+LibTest/io/HttpClientRequest/headers_A03_t01: RuntimeError, Pass
+LibTest/io/Link/stat_A01_t01: RuntimeError
+LibTest/io/Process/exitCode_A01_t02: RuntimeError
+LibTest/io/Process/killPid_A01_t01: RuntimeError
+LibTest/io/Process/killPid_A01_t02: RuntimeError
+LibTest/io/Process/kill_A01_t01: RuntimeError
+LibTest/io/Process/runSync_A01_t01: RuntimeError
+LibTest/io/Process/runSync_A02_t01: RuntimeError
+LibTest/io/Process/runSync_A02_t02: RuntimeError
+LibTest/io/Process/run_A01_t01: RuntimeError
+LibTest/io/Process/run_A02_t01: RuntimeError
+LibTest/io/Process/run_A02_t02: RuntimeError
+LibTest/io/Process/start_A04_t01: RuntimeError
+LibTest/io/Process/start_A05_t01: RuntimeError
+LibTest/io/Process/start_A06_t01: RuntimeError
+LibTest/io/ProcessSignal/watch_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/asyncExpand_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/asyncExpand_A01_t04: RuntimeError
+LibTest/io/RawDatagramSocket/asyncMap_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/asyncMap_A01_t03: RuntimeError
+LibTest/io/RawDatagramSocket/broadcastEnable_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/cast_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/contains_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/distinct_A01_t01: Timeout, Pass
+LibTest/io/RawDatagramSocket/distinct_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/distinct_A01_t04: RuntimeError
+LibTest/io/RawDatagramSocket/distinct_A01_t05: RuntimeError
+LibTest/io/RawDatagramSocket/distinct_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/drain_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/drain_A01_t03: RuntimeError
+LibTest/io/RawDatagramSocket/elementAt_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/elementAt_A01_t03: RuntimeError
+LibTest/io/RawDatagramSocket/elementAt_A02_t02: RuntimeError
+LibTest/io/RawDatagramSocket/every_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/every_A01_t03: RuntimeError
+LibTest/io/RawDatagramSocket/every_A02_t02: RuntimeError
+LibTest/io/RawDatagramSocket/every_A02_t03: RuntimeError
+LibTest/io/RawDatagramSocket/expand_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/expand_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/expand_A02_t02: RuntimeError
+LibTest/io/RawDatagramSocket/expand_A04_t01: RuntimeError
+LibTest/io/RawDatagramSocket/firstWhere_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/firstWhere_A01_t03: Timeout, Pass
+LibTest/io/RawDatagramSocket/firstWhere_A02_t02: RuntimeError
+LibTest/io/RawDatagramSocket/firstWhere_A02_t03: RuntimeError
+LibTest/io/RawDatagramSocket/firstWhere_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/firstWhere_A04_t02: RuntimeError
+LibTest/io/RawDatagramSocket/firstWhere_A04_t03: RuntimeError
+LibTest/io/RawDatagramSocket/fold_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/forEach_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/forEach_A02_t02: RuntimeError
+LibTest/io/RawDatagramSocket/handleError_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/handleError_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/handleError_A03_t02: RuntimeError
+LibTest/io/RawDatagramSocket/handleError_A03_t03: RuntimeError
+LibTest/io/RawDatagramSocket/handleError_A04_t01: RuntimeError
+LibTest/io/RawDatagramSocket/isEmpty_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/lastWhere_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/lastWhere_A01_t03: RuntimeError
+LibTest/io/RawDatagramSocket/lastWhere_A02_t02: RuntimeError
+LibTest/io/RawDatagramSocket/last_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/last_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/length_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/length_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/listen_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/listen_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/listen_A04_t02: RuntimeError
+LibTest/io/RawDatagramSocket/map_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/map_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/map_A04_t01: RuntimeError
+LibTest/io/RawDatagramSocket/map_A04_t02: RuntimeError
+LibTest/io/RawDatagramSocket/pipe_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/readEventsEnable_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/receive_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/reduce_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/send_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/send_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/send_A01_t03: RuntimeError, Timeout
+LibTest/io/RawDatagramSocket/singleWhere_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/singleWhere_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/singleWhere_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/singleWhere_A03_t02: RuntimeError
+LibTest/io/RawDatagramSocket/singleWhere_A03_t03: RuntimeError
+LibTest/io/RawDatagramSocket/skipWhile_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/skipWhile_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/skipWhile_A02_t03: RuntimeError
+LibTest/io/RawDatagramSocket/takeWhile_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/takeWhile_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/takeWhile_A01_t04: RuntimeError
+LibTest/io/RawDatagramSocket/takeWhile_A01_t05: RuntimeError
+LibTest/io/RawDatagramSocket/takeWhile_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/takeWhile_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/takeWhile_A05_t01: RuntimeError
+LibTest/io/RawDatagramSocket/take_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/take_A01_t03: RuntimeError
+LibTest/io/RawDatagramSocket/take_A01_t04: RuntimeError
+LibTest/io/RawDatagramSocket/take_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/timeout_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/timeout_A03_t01: RuntimeError
+LibTest/io/RawDatagramSocket/timeout_A04_t01: RuntimeError
+LibTest/io/RawDatagramSocket/timeout_A06_t01: RuntimeError, Pass
+LibTest/io/RawDatagramSocket/toList_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/transform_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/transform_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/where_A01_t01: RuntimeError
+LibTest/io/RawDatagramSocket/where_A01_t02: RuntimeError
+LibTest/io/RawDatagramSocket/where_A01_t03: RuntimeError
+LibTest/io/RawDatagramSocket/where_A02_t01: RuntimeError
+LibTest/io/RawDatagramSocket/where_A04_t01: RuntimeError
+LibTest/io/Stdin/readByteSync_A02_t01: RuntimeError
+LibTest/io/Stdin/readLineSync_A03_t01: RuntimeError, Pass
+LibTest/io/Stdin/readLineSync_A03_t03: RuntimeError, Pass
+LibTest/io/WebSocket/pingInterval_A01_t01: RuntimeError, Pass
+LibTest/math/acos_A01_t01: RuntimeError
+LibTest/math/asin_A01_t01: RuntimeError
+LibTest/math/atan_A01_t01: RuntimeError
+LibTest/math/cos_A01_t01: RuntimeError
+
+[ $runtime == vm && $system != macos && ($compiler == dartk || $compiler == dartkb) ]
+LibTest/io/Directory/listSync_A01_t02: RuntimeError
+LibTest/io/Directory/listSync_A01_t03: RuntimeError
+LibTest/io/Directory/listSync_A01_t04: RuntimeError
+LibTest/io/Directory/list_A01_t02: RuntimeError
+LibTest/io/Directory/list_A01_t03: RuntimeError
+LibTest/io/Directory/list_A01_t04: RuntimeError
+LibTest/io/InternetAddress/lookup_A02_t01: RuntimeError
+LibTest/io/InternetAddress/lookup_A03_t01: RuntimeError
+LibTest/io/InternetAddress/lookup_A03_t02: RuntimeError
+LibTest/io/RawDatagramSocket/receive_A02_t02: RuntimeError
 
 [ $runtime == vm && ($compiler == dartk || $compiler == dartkb) ]
 Language/Classes/definition_t23: CompileTimeError
@@ -470,7 +539,13 @@
 Language/Mixins/Mixin_Application/syntax_t16: CompileTimeError
 Language/Statements/Assert/execution_t08: RuntimeError
 Language/Types/Function_Types/call_t01: RuntimeError
-LanguageFeatures/Instantiate-to-bound/mixin/mixin_neg_l1_t08: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l1_t03: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_FutureOr_l1_t04/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t08/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/static/typedef_l1_t05/none: CompileTimeError
+LanguageFeatures/regression/33701_t01: MissingCompileTimeError
+LanguageFeatures/regression/34803_t01: DartkCrash
+LanguageFeatures/regression/34803_t02: DartkCrash
 LibTest/async/Stream/Stream.fromFutures_A04_t01: RuntimeError
 LibTest/async/Stream/Stream.fromIterable_A02_t01: RuntimeError
 LibTest/async/StreamController/addStream_A03_t01: RuntimeError
@@ -514,7 +589,7 @@
 LibTest/io/Directory/watch_A01_t01: Fail, Pass
 LibTest/io/FileSystemCreateEvent/isDirectory_A01_t01: Fail, Pass
 LibTest/io/FileSystemCreateEvent/isDirectory_A01_t02: Fail, Pass
-LibTest/io/FileSystemCreateEvent/path_A01_t01: Fail
+LibTest/io/FileSystemCreateEvent/path_A01_t01: Fail, Pass
 LibTest/io/FileSystemModifyEvent/isDirectory_A01_t02: Fail
 LibTest/io/FileSystemModifyEvent/path_A01_t01: Fail
 LibTest/io/FileSystemModifyEvent/type_A01_t02: Fail
@@ -525,10 +600,6 @@
 LibTest/io/HttpClientRequest/add_A03_t02: RuntimeError
 LibTest/io/HttpClientRequest/flush_A02_t01: RuntimeError
 LibTest/io/HttpClientRequest/flush_A02_t02: RuntimeError
-LibTest/io/HttpServer/close_A04_t01: RuntimeError, Pass
-LibTest/io/InternetAddress/lookup_A02_t01: RuntimeError
-LibTest/io/InternetAddress/lookup_A03_t01: RuntimeError
-LibTest/io/InternetAddress/lookup_A03_t02: RuntimeError
 LibTest/io/Link/renameSync_A02_t01: RuntimeError, Pass
 LibTest/io/Link/watch_A01_t01: Fail
 LibTest/io/NetworkInterface/list_A02_t01: RuntimeError
@@ -564,6 +635,7 @@
 LibTest/io/RawDatagramSocket/reduce_A04_t01: RuntimeError
 LibTest/io/RawDatagramSocket/single_A02_t01: RuntimeError, Pass
 LibTest/io/RawDatagramSocket/single_A03_t01: RuntimeError, Pass
+LibTest/io/RawDatagramSocket/skipWhile_A04_t01: RuntimeError, Pass
 LibTest/io/Stdout/addError_A02_t02: RuntimeError
 LibTest/io/Stdout/addStream_A01_t01: RuntimeError
 LibTest/io/Stdout/add_A02_t07: RuntimeError
@@ -579,10 +651,6 @@
 
 [ $runtime != vm && $fasta ]
 Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: MissingCompileTimeError # Issue 34192
-LanguageFeatures/Instantiate-to-bound/class/class_extends_FutureOr_neg_l3_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_Future_neg_l3_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_l3_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/mixin/mixin_neg_l1_t02: MissingCompileTimeError
 
 [ $runtime != vm && ($compiler == dartk || $compiler == dartkb) ]
 Language/Classes/Constructors/Constant_Constructors/potentially_constant_expression_t01: Crash
@@ -791,11 +859,12 @@
 Language/Types/Type_Declarations/Typedef/dynamic_param_type_t02: RuntimeError
 Language/Variables/constant_initialization_t03: RuntimeError
 Language/Variables/constant_variable_t09: RuntimeError
-LanguageFeatures/Instantiate-to-bound/check_types/typedef_param_t02: RuntimeError
-LanguageFeatures/Instantiate-to-bound/class/class_extends_neg_l1_t05: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_named_extends_Future_neg_assign_l1_t01: MissingCompileTimeError
-LanguageFeatures/Instantiate-to-bound/function/function_ret_extends_Future_neg_assign_l1_t21: MissingCompileTimeError
-LanguageFeatures/Super_Mixins/mixin_application_neg_t01/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/dynamic/class_l2_t05: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/class/static/class_l2_t05/none: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t03: RuntimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t05: RuntimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l1_t08: CompileTimeError
+LanguageFeatures/Instantiate-to-bound/typedef/dynamic/typedef_l2_t01: RuntimeError
 LibTest/async/Future/asStream_A01_t02: RuntimeError
 LibTest/async/Stream/Stream.fromFutures_A04_t02: RuntimeError
 LibTest/async/Stream/Stream.fromFutures_A04_t03: RuntimeError
@@ -927,12 +996,6 @@
 LibTest/io/Directory/delete_A02_t05: RuntimeError
 LibTest/io/Directory/existsSync_A02_t02: RuntimeError
 LibTest/io/Directory/exists_A02_t02: RuntimeError
-LibTest/io/Directory/listSync_A01_t02: RuntimeError
-LibTest/io/Directory/listSync_A01_t03: RuntimeError
-LibTest/io/Directory/listSync_A01_t04: RuntimeError
-LibTest/io/Directory/list_A01_t02: RuntimeError
-LibTest/io/Directory/list_A01_t03: RuntimeError
-LibTest/io/Directory/list_A01_t04: RuntimeError
 LibTest/io/Directory/renameSync_A02_t01: RuntimeError
 LibTest/io/Directory/rename_A02_t01: RuntimeError
 LibTest/io/Directory/statSync_A01_t05: RuntimeError
@@ -949,7 +1012,6 @@
 LibTest/io/FileStat/modeString_A01_t01: RuntimeError
 LibTest/io/FileStat/mode_A01_t01: RuntimeError
 LibTest/io/FileStat/modified_A01_t01: RuntimeError
-LibTest/io/FileSystemCreateEvent/isDirectory_A01_t05: Fail
 LibTest/io/FileSystemCreateEvent/isDirectory_A01_t06: RuntimeError
 LibTest/io/FileSystemCreateEvent/path_A01_t02: RuntimeError, Fail, Pass
 LibTest/io/FileSystemCreateEvent/path_A01_t03: RuntimeError, Fail, Pass
@@ -983,7 +1045,7 @@
 LibTest/io/HttpClientRequest/addStream_A02_t02: RuntimeError
 LibTest/io/HttpClientRequest/add_A03_t01: RuntimeError
 LibTest/io/HttpClientRequest/close_A02_t01: RuntimeError
-LibTest/io/HttpClientRequest/done_A02_t01: RuntimeError
+LibTest/io/HttpClientRequest/done_A02_t01: RuntimeError, Timeout, Pass
 LibTest/io/HttpClientResponse/certificate_A01_t01: RuntimeError
 LibTest/io/HttpClientResponse/isRedirect_A01_t02: RuntimeError
 LibTest/io/HttpServer/bind_A02_t03: RuntimeError
@@ -1039,7 +1101,6 @@
 LibTest/io/Link/renameSync_A02_t03: RuntimeError
 LibTest/io/Link/rename_A02_t03: RuntimeError
 LibTest/io/Link/statSync_A01_t01: RuntimeError
-LibTest/io/Link/stat_A01_t01: RuntimeError
 LibTest/io/Link/watch_A01_t01: RuntimeError
 LibTest/io/Process/run_A01_t02: RuntimeError
 LibTest/io/Process/stderr_A01_t01: RuntimeError
@@ -1054,7 +1115,7 @@
 LibTest/io/RawDatagramSocket/asBroadcastStream_A03_t01: Timeout, Pass
 LibTest/io/RawDatagramSocket/join_A02_t01: RuntimeError
 LibTest/io/RawDatagramSocket/multicastInterface_A01_t01: RuntimeError
-LibTest/io/RawDatagramSocket/receive_A02_t02: RuntimeError
+LibTest/io/RawDatagramSocket/skipWhile_A04_t01: RuntimeError, Pass
 LibTest/io/Stdin/echoMode_A01_t01: RuntimeError
 LibTest/io/Stdin/echoMode_A01_t02: RuntimeError
 LibTest/io/Stdin/lineMode_A01_t01: RuntimeError
@@ -1078,6 +1139,7 @@
 LibTest/io/ZLibDecoder/fuse_A01_t01: RuntimeError
 LibTest/io/ZLibEncoder/fuse_A01_t01: RuntimeError
 LibTest/isolate/Isolate/addOnExitListener_A04_t01: RuntimeError
+LibTest/isolate/Isolate/ping_A01_t01: Timeout, Pass
 LibTest/isolate/Isolate/ping_A04_t01: RuntimeError
 LibTest/isolate/Isolate/spawnUri_A05_t04: RuntimeError, Pass
 LibTest/isolate/Isolate/spawn_A04_t04: RuntimeError, Pass
@@ -1110,15 +1172,14 @@
 LibTest/typed_data/Float32List/last_A01_t02: RuntimeError
 LibTest/typed_data/Float32x4List/any_A01_t01: RuntimeError
 LibTest/typed_data/Float32x4List/every_A01_t01: RuntimeError
-LibTest/typed_data/Float32x4List/shuffle_A01_t01: RuntimeError
 LibTest/typed_data/Float64List/any_A01_t01: RuntimeError
 LibTest/typed_data/Float64List/every_A01_t01: RuntimeError
-LibTest/typed_data/Float64x2List/shuffle_A01_t01: RuntimeError
 LibTest/typed_data/Float64x2List/sort_A01_t01: RuntimeError
 LibTest/typed_data/Int16List/any_A01_t01: RuntimeError
 LibTest/typed_data/Int16List/every_A01_t01: RuntimeError
 LibTest/typed_data/Int32List/any_A01_t01: RuntimeError
 LibTest/typed_data/Int32List/every_A01_t01: RuntimeError
+LibTest/typed_data/Int32List/shuffle_A01_t01: RuntimeError, Pass
 LibTest/typed_data/Int32x4List/Int32x4List.fromList_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/Int32x4List.fromList_A01_t02: RuntimeError
 LibTest/typed_data/Int32x4List/Int32x4List.view_A01_t01: RuntimeError
@@ -1128,7 +1189,6 @@
 LibTest/typed_data/Int32x4List/lengthInBytes_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/length_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/offsetInBytes_A01_t01: RuntimeError
-LibTest/typed_data/Int32x4List/shuffle_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/skip_A01_t01: RuntimeError
 LibTest/typed_data/Int32x4List/skip_A02_t01: RuntimeError
 LibTest/typed_data/Int32x4List/sublist_A01_t01: RuntimeError
@@ -1142,6 +1202,7 @@
 LibTest/typed_data/Uint16List/every_A01_t01: RuntimeError
 LibTest/typed_data/Uint32List/any_A01_t01: RuntimeError
 LibTest/typed_data/Uint32List/every_A01_t01: RuntimeError
+LibTest/typed_data/Uint32List/shuffle_A01_t01: RuntimeError, Pass
 LibTest/typed_data/Uint64List/any_A01_t01: RuntimeError
 LibTest/typed_data/Uint64List/every_A01_t01: RuntimeError
 LibTest/typed_data/Uint64List/last_A01_t02: RuntimeError
diff --git a/tests/compiler/dart2js/analyses/api_allowed.json b/tests/compiler/dart2js/analyses/api_allowed.json
index 322c7d9..830ee49 100644
--- a/tests/compiler/dart2js/analyses/api_allowed.json
+++ b/tests/compiler/dart2js/analyses/api_allowed.json
@@ -19,9 +19,8 @@
     "Dynamic access of '_js_helper::_self'.": 1,
     "Dynamic access of '_js_helper::_target'.": 1,
     "Dynamic access of '_js_helper::_receiver'.": 1,
-    "Dynamic access of 'length'.": 3,
-    "Dynamic invocation of '>='.": 1,
-    "Dynamic invocation of 'substring'.": 1
+    "Dynamic access of 'length'.": 2,
+    "Dynamic invocation of '>='.": 1
   },
   "org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/string_helper.dart": {
     "Dynamic invocation of '<'.": 1,
@@ -322,4 +321,4 @@
     "Dynamic access of 'port'.": 1,
     "Dynamic invocation of 'dart._http::_toJSON'.": 1
   }
-}
\ No newline at end of file
+}
diff --git a/tests/compiler/dart2js/analyses/dart2js_allowed.json b/tests/compiler/dart2js/analyses/dart2js_allowed.json
index 27f1199..c8f89bc6 100644
--- a/tests/compiler/dart2js/analyses/dart2js_allowed.json
+++ b/tests/compiler/dart2js/analyses/dart2js_allowed.json
@@ -197,9 +197,6 @@
     "Dynamic invocation of '+'.": 2,
     "Dynamic invocation of '-'.": 1
   },
-  "pkg/compiler/lib/src/closure.dart": {
-    "Dynamic access of 'typeVariable'.": 1
-  },
   "pkg/compiler/lib/src/js_backend/native_data.dart": {
     "Dynamic access of 'names'.": 1,
     "Dynamic access of 'isNonLeaf'.": 1
@@ -220,6 +217,12 @@
     "Dynamic access of 'isString'.": 1,
     "Dynamic access of 'stringValue'.": 1
   },
+  "pkg/compiler/lib/src/serialization/binary_sink.dart": {
+    "Dynamic access of 'index'.": 1
+  },
+  "pkg/compiler/lib/src/serialization/helpers.dart": {
+    "Dynamic access of 'value'.": 1
+  },
   "pkg/compiler/lib/src/universe/use.dart": {
     "Dynamic access of 'selector'.": 1,
     "Dynamic access of 'receiverConstraint'.": 1,
@@ -257,6 +260,9 @@
   "pkg/compiler/lib/src/universe/side_effects.dart": {
     "Dynamic access of 'universe.side_effects::_flags'.": 1
   },
+  "pkg/compiler/lib/src/closure.dart": {
+    "Dynamic access of 'typeVariable'.": 1
+  },
   "pkg/compiler/lib/src/native/behavior.dart": {
     "Dynamic invocation of 'add'.": 1
   },
@@ -289,6 +295,7 @@
     "Dynamic access of 'localFunction'.": 1,
     "Dynamic access of 'invocation'.": 1,
     "Dynamic access of 'instantiation'.": 1,
+    "Dynamic access of 'closureClass'.": 1,
     "Dynamic access of 'type'.": 1,
     "Dynamic access of 'context'.": 1
   },
@@ -297,6 +304,12 @@
     "Dynamic access of 'usedBy'.": 2,
     "Dynamic access of 'inputs'.": 1
   },
+  "pkg/compiler/lib/src/inferrer/inferrer_engine.dart": {
+    "Dynamic access of 'isVoid'.": 1,
+    "Dynamic access of 'isDynamic'.": 1,
+    "Dynamic access of 'isInterfaceType'.": 1,
+    "Dynamic access of 'element'.": 1
+  },
   "pkg/compiler/lib/src/universe/function_set.dart": {
     "Dynamic access of 'selector'.": 1,
     "Dynamic access of 'receiver'.": 1
@@ -364,12 +377,6 @@
     "Dynamic invocation of '[]'.": 9,
     "Dynamic invocation of 'toStatement'.": 3
   },
-  "pkg/compiler/lib/src/inferrer/inferrer_engine.dart": {
-    "Dynamic access of 'isVoid'.": 1,
-    "Dynamic access of 'isDynamic'.": 1,
-    "Dynamic access of 'isInterfaceType'.": 1,
-    "Dynamic access of 'element'.": 1
-  },
   "pkg/compiler/lib/src/inferrer/type_graph_nodes.dart": {
     "Dynamic invocation of 'add'.": 1,
     "Dynamic invocation of 'remove'.": 1,
@@ -382,6 +389,16 @@
     "Dynamic access of 'startPosition'.": 1,
     "Dynamic access of 'innerPosition'.": 1
   },
+  "pkg/compiler/lib/src/inferrer/locals_handler.dart": {
+    "Dynamic access of 'isEmpty'.": 1,
+    "Dynamic access of 'positional'.": 2,
+    "Dynamic access of 'length'.": 2,
+    "Dynamic access of 'named'.": 2,
+    "Dynamic invocation of '[]'.": 2
+  },
+  "pkg/compiler/lib/src/inferrer/type_graph_dump.dart": {
+    "Dynamic invocation of 'contains'.": 2
+  },
   "pkg/compiler/lib/src/ssa/variable_allocator.dart": {
     "Dynamic access of 'checkedInput'.": 1,
     "Dynamic access of 'usedBy'.": 1,
@@ -411,16 +428,6 @@
   "pkg/compiler/lib/src/ssa/value_set.dart": {
     "Dynamic invocation of 'add'.": 2
   },
-  "pkg/compiler/lib/src/inferrer/locals_handler.dart": {
-    "Dynamic access of 'isEmpty'.": 1,
-    "Dynamic access of 'positional'.": 2,
-    "Dynamic access of 'length'.": 2,
-    "Dynamic access of 'named'.": 2,
-    "Dynamic invocation of '[]'.": 2
-  },
-  "pkg/compiler/lib/src/inferrer/type_graph_dump.dart": {
-    "Dynamic invocation of 'contains'.": 2
-  },
   "pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart": {
     "Dynamic access of 'scheme'.": 1,
     "Dynamic invocation of 'finalizeTokens'.": 1
diff --git a/tests/compiler/dart2js/closure/closure_test.dart b/tests/compiler/dart2js/closure/closure_test.dart
index 6f527ee..e3ddbc7 100644
--- a/tests/compiler/dart2js/closure/closure_test.dart
+++ b/tests/compiler/dart2js/closure/closure_test.dart
@@ -34,10 +34,10 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
-    GlobalLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting;
-    ClosureDataLookup closureDataLookup = backendStrategy.closureDataLookup;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
+    GlobalLocalsMap localsMap = closedWorld.globalLocalsMap;
+    ClosureData closureDataLookup = closedWorld.closureDataLookup;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     assert(
         definition.kind == MemberKind.regular ||
@@ -59,7 +59,7 @@
 /// Kernel IR visitor for computing closure data.
 class ClosureIrChecker extends IrDataExtractor {
   final MemberEntity member;
-  final ClosureDataLookup closureDataLookup;
+  final ClosureData closureDataLookup;
   final CodegenWorldBuilder codegenWorldBuilder;
   final KernelToLocalsMap _localsMap;
   final bool verbose;
diff --git a/tests/compiler/dart2js/deferred/custom_element_test.dart b/tests/compiler/dart2js/deferred/custom_element_test.dart
index 5618ff6..46acd96 100644
--- a/tests/compiler/dart2js/deferred/custom_element_test.dart
+++ b/tests/compiler/dart2js/deferred/custom_element_test.dart
@@ -23,9 +23,9 @@
       await runCompiler(memorySourceFiles: MEMORY_SOURCE_FILES);
   Compiler compiler = result.compiler;
   var closedWorld = compiler.backendClosedWorldForTesting;
-  var outputUnitForMember = compiler.backend.outputUnitData.outputUnitForMember;
-  var outputUnitForClass = compiler.backend.outputUnitData.outputUnitForClass;
-  var mainOutputUnit = compiler.backend.outputUnitData.mainOutputUnit;
+  var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
+  var outputUnitForClass = closedWorld.outputUnitData.outputUnitForClass;
+  var mainOutputUnit = closedWorld.outputUnitData.mainOutputUnit;
   var elementEnvironment = closedWorld.elementEnvironment;
   dynamic lib = elementEnvironment.lookupLibrary(Uri.parse("memory:lib.dart"));
   var customType = elementEnvironment.lookupClass(lib, "CustomType");
diff --git a/tests/compiler/dart2js/deferred/dont_inline_deferred_constants_test.dart b/tests/compiler/dart2js/deferred/dont_inline_deferred_constants_test.dart
index 388e4fd..50487ca 100644
--- a/tests/compiler/dart2js/deferred/dont_inline_deferred_constants_test.dart
+++ b/tests/compiler/dart2js/deferred/dont_inline_deferred_constants_test.dart
@@ -25,8 +25,7 @@
       return elementEnvironment.lookupLibrary(Uri.parse(name));
     }
 
-    var outputUnitForMember =
-        compiler.backend.outputUnitData.outputUnitForMember;
+    var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
 
     dynamic lib1 = lookupLibrary("memory:lib1.dart");
     var foo1 = elementEnvironment.lookupLibraryMember(lib1, "foo");
diff --git a/tests/compiler/dart2js/deferred/dont_inline_deferred_globals_test.dart b/tests/compiler/dart2js/deferred/dont_inline_deferred_globals_test.dart
index f9f973c..4d24307 100644
--- a/tests/compiler/dart2js/deferred/dont_inline_deferred_globals_test.dart
+++ b/tests/compiler/dart2js/deferred/dont_inline_deferred_globals_test.dart
@@ -25,8 +25,7 @@
       return elementEnvironment.lookupLibrary(Uri.parse(name));
     }
 
-    var outputUnitForMember =
-        compiler.backend.outputUnitData.outputUnitForMember;
+    var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
 
     dynamic lib1 = lookupLibrary("memory:lib1.dart");
     var foo1 = elementEnvironment.lookupLibraryMember(lib1, "finalVar");
diff --git a/tests/compiler/dart2js/deferred/follow_constant_dependencies_test.dart b/tests/compiler/dart2js/deferred/follow_constant_dependencies_test.dart
index d192a4d..ede4245 100644
--- a/tests/compiler/dart2js/deferred/follow_constant_dependencies_test.dart
+++ b/tests/compiler/dart2js/deferred/follow_constant_dependencies_test.dart
@@ -15,9 +15,10 @@
     CompilationResult result =
         await runCompiler(memorySourceFiles: MEMORY_SOURCE_FILES);
     Compiler compiler = result.compiler;
+    var closedWorld = compiler.backendClosedWorldForTesting;
     var outputUnitForConstant =
-        compiler.backend.outputUnitData.outputUnitForConstant;
-    var mainOutputUnit = compiler.backend.outputUnitData.mainOutputUnit;
+        closedWorld.outputUnitData.outputUnitForConstant;
+    var mainOutputUnit = closedWorld.outputUnitData.mainOutputUnit;
     List<ConstantValue> allConstants = [];
 
     addConstantWithDependendencies(ConstantValue c) {
diff --git a/tests/compiler/dart2js/deferred/follow_implicit_super_regression_test.dart b/tests/compiler/dart2js/deferred/follow_implicit_super_regression_test.dart
index 26ab5044..c2ce726 100644
--- a/tests/compiler/dart2js/deferred/follow_implicit_super_regression_test.dart
+++ b/tests/compiler/dart2js/deferred/follow_implicit_super_regression_test.dart
@@ -20,8 +20,7 @@
       return elementEnvironment.lookupLibrary(Uri.parse(name));
     }
 
-    var outputUnitForMember =
-        compiler.backend.outputUnitData.outputUnitForMember;
+    var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
 
     dynamic lib = lookupLibrary("memory:lib.dart");
     var a = elementEnvironment.lookupLibraryMember(lib, "a");
diff --git a/tests/compiler/dart2js/deferred/inline_restrictions_test.dart b/tests/compiler/dart2js/deferred/inline_restrictions_test.dart
index c5c5b53..4d11985 100644
--- a/tests/compiler/dart2js/deferred/inline_restrictions_test.dart
+++ b/tests/compiler/dart2js/deferred/inline_restrictions_test.dart
@@ -17,9 +17,9 @@
     CompilationResult result = await runCompiler(
         memorySourceFiles: MEMORY_SOURCE_FILES, outputProvider: collector);
     Compiler compiler = result.compiler;
-    var env = compiler.backendClosedWorldForTesting.elementEnvironment;
-    var outputUnitForMember =
-        compiler.backend.outputUnitData.outputUnitForMember;
+    var closedWorld = compiler.backendClosedWorldForTesting;
+    var env = closedWorld.elementEnvironment;
+    var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
     lookupLibrary(name) => env.lookupLibrary(Uri.parse(name));
     dynamic lib1 = lookupLibrary("memory:lib1.dart");
     var inlineMeAway = env.lookupLibraryMember(lib1, "inlineMeAway");
diff --git a/tests/compiler/dart2js/deferred/load_graph_segmentation2_test.dart b/tests/compiler/dart2js/deferred/load_graph_segmentation2_test.dart
index 4c3c5ad..07b6308 100644
--- a/tests/compiler/dart2js/deferred/load_graph_segmentation2_test.dart
+++ b/tests/compiler/dart2js/deferred/load_graph_segmentation2_test.dart
@@ -16,10 +16,10 @@
     CompilationResult result =
         await runCompiler(memorySourceFiles: MEMORY_SOURCE_FILES);
     Compiler compiler = result.compiler;
-    var outputUnitForMember =
-        compiler.backend.outputUnitData.outputUnitForMember;
-    var env = compiler.backendClosedWorldForTesting.elementEnvironment;
-    var mainOutputUnit = compiler.backend.outputUnitData.mainOutputUnit;
+    var closedWorld = compiler.backendClosedWorldForTesting;
+    var env = closedWorld.elementEnvironment;
+    var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
+    var mainOutputUnit = closedWorld.outputUnitData.mainOutputUnit;
     dynamic lib = env.lookupLibrary(Uri.parse("memory:lib.dart"));
     var f1 = env.lookupLibraryMember(lib, "f1");
     var f2 = env.lookupLibraryMember(lib, "f2");
diff --git a/tests/compiler/dart2js/deferred/load_graph_segmentation_test.dart b/tests/compiler/dart2js/deferred/load_graph_segmentation_test.dart
index d46b928..97b8230 100644
--- a/tests/compiler/dart2js/deferred/load_graph_segmentation_test.dart
+++ b/tests/compiler/dart2js/deferred/load_graph_segmentation_test.dart
@@ -18,16 +18,16 @@
         await runCompiler(memorySourceFiles: MEMORY_SOURCE_FILES);
     Compiler compiler = result.compiler;
 
-    var env = compiler.backendClosedWorldForTesting.elementEnvironment;
+    var closedWorld = compiler.backendClosedWorldForTesting;
+    var env = closedWorld.elementEnvironment;
     lookupLibrary(name) => env.lookupLibrary(Uri.parse(name));
     var main = env.mainFunction;
     Expect.isNotNull(main, "Could not find 'main'");
 
-    var outputUnitForMember =
-        compiler.backend.outputUnitData.outputUnitForMember;
-    var outputUnitForClass = compiler.backend.outputUnitData.outputUnitForClass;
+    var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
+    var outputUnitForClass = closedWorld.outputUnitData.outputUnitForClass;
 
-    var mainOutputUnit = compiler.backend.outputUnitData.mainOutputUnit;
+    var mainOutputUnit = closedWorld.outputUnitData.mainOutputUnit;
     var backend = compiler.backend;
     var classes = backend.emitter.neededClasses;
     var inputElement = classes.where((e) => e.name == 'InputElement').single;
diff --git a/tests/compiler/dart2js/deferred/not_in_main_test.dart b/tests/compiler/dart2js/deferred/not_in_main_test.dart
index d701a11..79f52b4 100644
--- a/tests/compiler/dart2js/deferred/not_in_main_test.dart
+++ b/tests/compiler/dart2js/deferred/not_in_main_test.dart
@@ -21,9 +21,10 @@
 deferredTest1() async {
   CompilationResult result = await runCompiler(memorySourceFiles: TEST1);
   Compiler compiler = result.compiler;
-  var outputUnitForMember = compiler.backend.outputUnitData.outputUnitForMember;
-  var mainOutputUnit = compiler.backend.outputUnitData.mainOutputUnit;
-  var env = compiler.backendClosedWorldForTesting.elementEnvironment;
+  var closedWorld = compiler.backendClosedWorldForTesting;
+  var env = closedWorld.elementEnvironment;
+  var outputUnitForMember = closedWorld.outputUnitData.outputUnitForMember;
+  var mainOutputUnit = closedWorld.outputUnitData.mainOutputUnit;
   lookupLibrary(name) => env.lookupLibrary(Uri.parse(name));
   dynamic lib1 = lookupLibrary("memory:lib1.dart");
   dynamic lib2 = lookupLibrary("memory:lib2.dart");
@@ -36,10 +37,10 @@
 deferredTest2() async {
   CompilationResult result = await runCompiler(memorySourceFiles: TEST2);
   Compiler compiler = result.compiler;
-  var outputUnitForClass = compiler.backend.outputUnitData.outputUnitForClass;
-
-  var mainOutputUnit = compiler.backend.outputUnitData.mainOutputUnit;
-  var env = compiler.backendClosedWorldForTesting.elementEnvironment;
+  var closedWorld = compiler.backendClosedWorldForTesting;
+  var env = closedWorld.elementEnvironment;
+  var outputUnitForClass = closedWorld.outputUnitData.outputUnitForClass;
+  var mainOutputUnit = closedWorld.outputUnitData.mainOutputUnit;
   lookupLibrary(name) => env.lookupLibrary(Uri.parse(name));
   dynamic shared = lookupLibrary("memory:shared.dart");
   var a = env.lookupClass(shared, "A");
diff --git a/tests/compiler/dart2js/deferred_loading/deferred_loading_test.dart b/tests/compiler/dart2js/deferred_loading/deferred_loading_test.dart
index da87f28..349532c 100644
--- a/tests/compiler/dart2js/deferred_loading/deferred_loading_test.dart
+++ b/tests/compiler/dart2js/deferred_loading/deferred_loading_test.dart
@@ -61,7 +61,7 @@
 
     if (importPrefixes.containsKey(import.name)) {
       var existing = importPrefixes[import.name];
-      var current = import.enclosingLibrary.canonicalUri;
+      var current = import.enclosingLibraryUri;
       Expect.equals(
           existing,
           current,
@@ -71,7 +71,7 @@
           '    We require using unique prefixes on these tests to make '
           'the expectations more readable.');
     }
-    importPrefixes[import.name] = import.enclosingLibrary.canonicalUri;
+    importPrefixes[import.name] = import.enclosingLibraryUri;
   }
   return 'OutputUnit(${unit.name}, {$sb})';
 }
@@ -89,11 +89,11 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     new OutputUnitIrComputer(compiler.reporter, actualMap, elementMap, member,
-            compiler.backend.outputUnitData, backendStrategy.closureDataLookup)
+            closedWorld.outputUnitData, closedWorld.closureDataLookup)
         .run(definition.node);
   }
 
@@ -104,11 +104,11 @@
   void computeClassData(
       Compiler compiler, ClassEntity cls, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    OutputUnitData data = compiler.backend.outputUnitData;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    OutputUnitData data = closedWorld.outputUnitData;
     String value = outputUnitString(data.outputUnitForClass(cls));
 
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsToElementMap elementMap = closedWorld.elementMap;
     ClassDefinition definition = elementMap.getClassDefinition(cls);
 
     _registerValue(
@@ -124,7 +124,7 @@
 class OutputUnitIrComputer extends IrDataExtractor {
   final JsToElementMap _elementMap;
   final OutputUnitData _data;
-  final ClosureDataLookup _closureDataLookup;
+  final ClosureData _closureDataLookup;
 
   OutputUnitIrComputer(
       DiagnosticReporter reporter,
diff --git a/tests/compiler/dart2js/end_to_end/dill_loader_test.dart b/tests/compiler/dart2js/end_to_end/dill_loader_test.dart
index dd9c4c1..3b3c0e6 100644
--- a/tests/compiler/dart2js/end_to_end/dill_loader_test.dart
+++ b/tests/compiler/dart2js/end_to_end/dill_loader_test.dart
@@ -28,7 +28,7 @@
     Uri entryPoint = Uri.parse('memory:main.dill');
 
     var options = new CompilerOptions()
-      ..target = new Dart2jsTarget("dart2js", new TargetFlags())
+      ..target = new Dart2jsTarget("dart2js", new TargetFlags(legacyMode: true))
       ..packagesFileUri = Uri.base.resolve('.packages')
       ..linkedDependencies = <Uri>[
         computePlatformBinariesLocation().resolve("dart2js_platform.dill"),
diff --git a/tests/compiler/dart2js/inference/callers_test.dart b/tests/compiler/dart2js/inference/callers_test.dart
index e39a720..8209b14 100644
--- a/tests/compiler/dart2js/inference/callers_test.dart
+++ b/tests/compiler/dart2js/inference/callers_test.dart
@@ -32,15 +32,15 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     new CallersIrComputer(
             compiler.reporter,
             actualMap,
             elementMap,
             compiler.globalInference.typesInferrerInternal,
-            backendStrategy.closureDataLookup)
+            closedWorld.closureDataLookup)
         .run(definition.node);
   }
 }
@@ -49,7 +49,7 @@
 class CallersIrComputer extends IrDataExtractor {
   final TypeGraphInferrer inferrer;
   final JsToElementMap _elementMap;
-  final ClosureDataLookup _closureDataLookup;
+  final ClosureData _closureDataLookup;
 
   CallersIrComputer(DiagnosticReporter reporter, Map<Id, ActualData> actualMap,
       this._elementMap, this.inferrer, this._closureDataLookup)
diff --git a/tests/compiler/dart2js/inference/inference_data_test.dart b/tests/compiler/dart2js/inference/inference_data_test.dart
index 7254d31..396bd22 100644
--- a/tests/compiler/dart2js/inference/inference_data_test.dart
+++ b/tests/compiler/dart2js/inference/inference_data_test.dart
@@ -12,7 +12,6 @@
 import 'package:compiler/src/js_backend/inferred_data.dart';
 import 'package:compiler/src/js_model/element_map.dart';
 import 'package:compiler/src/js_model/js_strategy.dart';
-import 'package:compiler/src/world.dart';
 import 'package:kernel/ast.dart' as ir;
 import '../equivalence/id_equivalence.dart';
 import '../equivalence/id_equivalence_helper.dart';
@@ -42,15 +41,10 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
-    new InferredDataIrComputer(
-            compiler.reporter,
-            actualMap,
-            elementMap,
-            compiler.backendClosedWorldForTesting,
-            backendStrategy.closureDataLookup,
+    new InferredDataIrComputer(compiler.reporter, actualMap, closedWorld,
             compiler.globalInference.resultsForTesting.inferredData)
         .run(definition.node);
   }
@@ -58,20 +52,17 @@
 
 /// AST visitor for computing side effects data for a member.
 class InferredDataIrComputer extends IrDataExtractor {
-  final JClosedWorld closedWorld;
-  final JsToElementMap _elementMap;
-  final ClosureDataLookup _closureDataLookup;
+  final JsClosedWorld closedWorld;
   final InferredData inferredData;
 
-  InferredDataIrComputer(
-      DiagnosticReporter reporter,
-      Map<Id, ActualData> actualMap,
-      this._elementMap,
-      this.closedWorld,
-      this._closureDataLookup,
-      this.inferredData)
+  InferredDataIrComputer(DiagnosticReporter reporter,
+      Map<Id, ActualData> actualMap, this.closedWorld, this.inferredData)
       : super(reporter, actualMap);
 
+  JsToElementMap get _elementMap => closedWorld.elementMap;
+
+  ClosureData get _closureDataLookup => closedWorld.closureDataLookup;
+
   String getMemberValue(MemberEntity member) {
     Features features = new Features();
     if (member is FunctionEntity) {
diff --git a/tests/compiler/dart2js/inference/inference_test_helper.dart b/tests/compiler/dart2js/inference/inference_test_helper.dart
index cb617c7..2fd448d 100644
--- a/tests/compiler/dart2js/inference/inference_test_helper.dart
+++ b/tests/compiler/dart2js/inference/inference_test_helper.dart
@@ -54,9 +54,9 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
-    GlobalLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
+    GlobalLocalsMap localsMap = closedWorld.globalLocalsMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     new TypeMaskIrComputer(
             compiler.reporter,
@@ -65,7 +65,7 @@
             member,
             localsMap.getLocalsMap(member),
             compiler.globalInference.resultsForTesting,
-            backendStrategy.closureDataLookup)
+            closedWorld.closureDataLookup)
         .run(definition.node);
   }
 }
@@ -76,7 +76,7 @@
   GlobalTypeInferenceMemberResult result;
   final JsToElementMap _elementMap;
   final KernelToLocalsMap _localsMap;
-  final ClosureDataLookup _closureDataLookup;
+  final ClosureData _closureDataLookup;
 
   TypeMaskIrComputer(
       DiagnosticReporter reporter,
@@ -115,7 +115,7 @@
 
   @override
   visitFunctionExpression(ir.FunctionExpression node) {
-    GlobalTypeInferenceElementResult oldResult = result;
+    GlobalTypeInferenceMemberResult oldResult = result;
     ClosureRepresentationInfo info = _closureDataLookup.getClosureInfo(node);
     result = results.resultOfMember(info.callMethod);
     super.visitFunctionExpression(node);
@@ -124,7 +124,7 @@
 
   @override
   visitFunctionDeclaration(ir.FunctionDeclaration node) {
-    GlobalTypeInferenceElementResult oldResult = result;
+    GlobalTypeInferenceMemberResult oldResult = result;
     ClosureRepresentationInfo info = _closureDataLookup.getClosureInfo(node);
     result = results.resultOfMember(info.callMethod);
     super.visitFunctionDeclaration(node);
diff --git a/tests/compiler/dart2js/inference/load_deferred_library_test.dart b/tests/compiler/dart2js/inference/load_deferred_library_test.dart
index 55157c9..ab87ab2 100644
--- a/tests/compiler/dart2js/inference/load_deferred_library_test.dart
+++ b/tests/compiler/dart2js/inference/load_deferred_library_test.dart
@@ -12,7 +12,6 @@
 import 'package:compiler/src/js_model/element_map.dart';
 import 'package:compiler/src/js_model/js_strategy.dart';
 import 'package:compiler/src/types/abstract_value_domain.dart';
-import 'package:compiler/src/world.dart';
 import 'package:expect/expect.dart';
 import 'package:kernel/ast.dart' as ir;
 import '../helpers/memory_compiler.dart';
@@ -41,7 +40,7 @@
       memorySourceFiles: {'main.dart': source}, options: options);
   Expect.isTrue(result.isSuccess);
   Compiler compiler = result.compiler;
-  JClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+  JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
   AbstractValueDomain abstractValueDomain = closedWorld.abstractValueDomain;
   ElementEnvironment elementEnvironment = closedWorld.elementEnvironment;
   LibraryEntity helperLibrary =
@@ -50,11 +49,10 @@
       helperLibrary, 'loadDeferredLibrary');
   TypeMask typeMask;
 
-  JsBackendStrategy backendStrategy = compiler.backendStrategy;
-  KernelToLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting
-      .getLocalsMap(loadDeferredLibrary);
+  KernelToLocalsMap localsMap =
+      closedWorld.globalLocalsMap.getLocalsMap(loadDeferredLibrary);
   MemberDefinition definition =
-      backendStrategy.elementMap.getMemberDefinition(loadDeferredLibrary);
+      closedWorld.elementMap.getMemberDefinition(loadDeferredLibrary);
   ir.Procedure procedure = definition.node;
   typeMask = compiler.globalInference.resultsForTesting.resultOfParameter(
       localsMap
diff --git a/tests/compiler/dart2js/inference/side_effects_test.dart b/tests/compiler/dart2js/inference/side_effects_test.dart
index 1aa9803..1ad86b8 100644
--- a/tests/compiler/dart2js/inference/side_effects_test.dart
+++ b/tests/compiler/dart2js/inference/side_effects_test.dart
@@ -12,7 +12,6 @@
 import 'package:compiler/src/js_backend/inferred_data.dart';
 import 'package:compiler/src/js_model/element_map.dart';
 import 'package:compiler/src/js_model/js_strategy.dart';
-import 'package:compiler/src/world.dart';
 import 'package:kernel/ast.dart' as ir;
 import '../equivalence/id_equivalence.dart';
 import '../equivalence/id_equivalence_helper.dart';
@@ -36,15 +35,10 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
-    new SideEffectsIrComputer(
-            compiler.reporter,
-            actualMap,
-            elementMap,
-            compiler.backendClosedWorldForTesting,
-            backendStrategy.closureDataLookup,
+    new SideEffectsIrComputer(compiler.reporter, actualMap, closedWorld,
             compiler.globalInference.resultsForTesting.inferredData)
         .run(definition.node);
   }
@@ -52,20 +46,16 @@
 
 /// AST visitor for computing side effects data for a member.
 class SideEffectsIrComputer extends IrDataExtractor {
-  final JClosedWorld closedWorld;
-  final JsToElementMap _elementMap;
-  final ClosureDataLookup _closureDataLookup;
+  final JsClosedWorld closedWorld;
   final InferredData inferredData;
 
-  SideEffectsIrComputer(
-      DiagnosticReporter reporter,
-      Map<Id, ActualData> actualMap,
-      this._elementMap,
-      this.closedWorld,
-      this._closureDataLookup,
-      this.inferredData)
+  SideEffectsIrComputer(DiagnosticReporter reporter,
+      Map<Id, ActualData> actualMap, this.closedWorld, this.inferredData)
       : super(reporter, actualMap);
 
+  JsToElementMap get _elementMap => closedWorld.elementMap;
+  ClosureData get _closureDataLookup => closedWorld.closureDataLookup;
+
   String getMemberValue(MemberEntity member) {
     if (member is FunctionEntity) {
       return inferredData.getSideEffectsOfElement(member).toString();
diff --git a/tests/compiler/dart2js/inlining/inlining_test.dart b/tests/compiler/dart2js/inlining/inlining_test.dart
index 43e83b7..12d032b 100644
--- a/tests/compiler/dart2js/inlining/inlining_test.dart
+++ b/tests/compiler/dart2js/inlining/inlining_test.dart
@@ -36,11 +36,11 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     new InliningIrComputer(compiler.reporter, actualMap, elementMap, member,
-            compiler.backend, backendStrategy.closureDataLookup)
+            compiler.backend, closedWorld.closureDataLookup)
         .run(definition.node);
   }
 }
@@ -49,7 +49,7 @@
 class InliningIrComputer extends IrDataExtractor {
   final JavaScriptBackend backend;
   final JsToElementMap _elementMap;
-  final ClosureDataLookup _closureDataLookup;
+  final ClosureData _closureDataLookup;
 
   InliningIrComputer(
       DiagnosticReporter reporter,
diff --git a/tests/compiler/dart2js/jumps/jump_test.dart b/tests/compiler/dart2js/jumps/jump_test.dart
index 47518bc..c90e13c 100644
--- a/tests/compiler/dart2js/jumps/jump_test.dart
+++ b/tests/compiler/dart2js/jumps/jump_test.dart
@@ -37,9 +37,9 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
-    GlobalLocalsMap localsMap = backendStrategy.globalLocalsMapForTesting;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
+    GlobalLocalsMap localsMap = closedWorld.globalLocalsMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     new JumpsIrChecker(
             compiler.reporter, actualMap, localsMap.getLocalsMap(member))
diff --git a/tests/compiler/dart2js/model/in_memory_split_test.dart b/tests/compiler/dart2js/model/in_memory_split_test.dart
index 8c1a080..ab13b90 100644
--- a/tests/compiler/dart2js/model/in_memory_split_test.dart
+++ b/tests/compiler/dart2js/model/in_memory_split_test.dart
@@ -2,41 +2,95 @@
 // 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:args/args.dart';
 import 'package:async_helper/async_helper.dart';
 import 'package:compiler/src/compiler.dart';
+import 'package:compiler/src/filenames.dart';
 import 'package:compiler/src/js_backend/inferred_data.dart';
+import 'package:compiler/src/js_model/js_strategy.dart';
+import 'package:compiler/src/serialization/serialization.dart';
 import 'package:compiler/src/types/types.dart';
-import 'package:compiler/src/world.dart';
 import 'package:expect/expect.dart';
+import 'package:front_end/src/fasta/kernel/utils.dart' as ir
+    show serializeComponent;
+import 'package:front_end/src/fasta/kernel/utils.dart';
+import 'package:kernel/ast.dart' as ir;
+import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder;
 import '../helpers/memory_compiler.dart';
 
-String code = '''
-main() {}
-''';
-main() {
+main(List<String> args) {
+  ArgParser argParser = new ArgParser(allowTrailingOptions: true);
+  argParser.addFlag('debug', abbr: 'd', defaultsTo: false);
+  argParser.addFlag('object', abbr: 'o', defaultsTo: false);
+  argParser.addFlag('kinds', abbr: 'k', defaultsTo: false);
+  ArgResults argResults = argParser.parse(args);
+
+  bool useObjectSink = argResults['object'] || argResults['debug'];
+  bool useDataKinds = argResults['kinds'] || argResults['debug'];
+
   asyncTest(() async {
+    Uri entryPoint;
+    if (argResults.rest.isEmpty) {
+      entryPoint = Uri.base.resolve('samples-dev/swarm/swarm.dart');
+    } else {
+      entryPoint = Uri.base.resolve(nativeToUriPath(argResults.rest.last));
+    }
+
     CompilationResult result = await runCompiler(
-        memorySourceFiles: {'main.dart': code},
+        entryPoint: entryPoint,
         beforeRun: (Compiler compiler) {
           compiler.stopAfterTypeInference = true;
         });
     Expect.isTrue(result.isSuccess);
     Compiler compiler = result.compiler;
-    GlobalTypeInferenceResults globalInferenceResults =
-        cloneInferenceResults(compiler.globalInference.resultsForTesting);
+    GlobalTypeInferenceResults globalInferenceResults = cloneInferenceResults(
+        compiler, compiler.globalInference.resultsForTesting,
+        useObjectSink: useObjectSink, useDataKinds: useDataKinds);
     compiler.generateJavaScriptCode(globalInferenceResults);
   });
 }
 
 GlobalTypeInferenceResults cloneInferenceResults(
-    GlobalTypeInferenceResultsImpl result) {
-  JClosedWorld closedWorld = result.closedWorld;
-  InferredData inferredData = result.inferredData;
-  return new GlobalTypeInferenceResultsImpl(
-      closedWorld,
-      inferredData,
-      result.memberResults,
-      result.parameterResults,
-      result.checkedForGrowableLists,
-      result.returnsListElementTypeSet);
+    Compiler compiler, GlobalTypeInferenceResults results,
+    {bool useObjectSink: false, bool useDataKinds}) {
+  JsClosedWorld closedWorld = results.closedWorld;
+  InferredData inferredData = results.inferredData;
+  ir.Component component = closedWorld.elementMap.programEnv.mainComponent;
+  List<int> irData = ir.serializeComponent(component);
+
+  Function() getData;
+
+  DataSink sink;
+  if (useObjectSink) {
+    List data = [];
+    sink = new ObjectSink(data, useDataKinds: useDataKinds);
+    getData = () => data;
+  } else {
+    ByteSink byteSink = new ByteSink();
+    sink = new BinarySink(byteSink, useDataKinds: useDataKinds);
+    getData = () => byteSink.builder.takeBytes();
+  }
+  closedWorld.writeToDataSink(sink);
+  inferredData.writeToDataSink(sink);
+  results.writeToDataSink(sink);
+  sink.close();
+  var worldData = getData();
+  print('data size: ${worldData.length}');
+
+  ir.Component newComponent = new ir.Component();
+  new BinaryBuilder(irData).readComponent(newComponent);
+  DataSource source = useObjectSink
+      ? new ObjectSource(worldData, useDataKinds: useDataKinds)
+      : new BinarySourceImpl(worldData, useDataKinds: useDataKinds);
+  closedWorld = new JsClosedWorld.readFromDataSource(
+      compiler.options,
+      compiler.reporter,
+      compiler.environment,
+      compiler.abstractValueStrategy,
+      newComponent,
+      source);
+  inferredData = new InferredData.readFromDataSource(source, closedWorld);
+  results = new GlobalTypeInferenceResults.readFromDataSource(
+      source, closedWorld, inferredData);
+  return results;
 }
diff --git a/tests/compiler/dart2js/model/subtype_test.dart b/tests/compiler/dart2js/model/subtype_test.dart
index 9a43a69..40907d7 100644
--- a/tests/compiler/dart2js/model/subtype_test.dart
+++ b/tests/compiler/dart2js/model/subtype_test.dart
@@ -613,7 +613,7 @@
         new B();
         new C();
         new D();
-        new E<num, int>();
+        new E<int, num>();
         new F();
       }
       """, expectNoErrors: true).then((env) {
diff --git a/tests/compiler/dart2js/rti/emission/mixin_subtype.dart b/tests/compiler/dart2js/rti/emission/mixin_subtype.dart
index 225b312..57bbcd0 100644
--- a/tests/compiler/dart2js/rti/emission/mixin_subtype.dart
+++ b/tests/compiler/dart2js/rti/emission/mixin_subtype.dart
@@ -71,7 +71,7 @@
 /*class: GJ:checkedInstance,checks=[],typeArgument*/
 class GJ<T> {}
 
-/*class: GM:checkedInstance,checks=[$asGA,$asGB,$asGI,$asGJ,$isGA,$isGB,$isGI,$isGJ],typeArgument*/
+/*class: GM:checkedInstance,checks=[$asGB,$asGI,$asGJ,$isGA,$isGB,$isGI,$isGJ],typeArgument*/
 mixin GM<T> on GA<T>, GB<List<T>> implements GI<Iterable<T>>, GJ<Set<T>> {}
 
 /*class: GC:checkedInstance,checks=[$asGB,$isGA,$isGB],typeArgument*/
@@ -109,4 +109,4 @@
   Expect.subtype<GD<int>, GC<int>>();
   Expect.notSubtype<GM<int>, GC<int>>();
   Expect.notSubtype<GC<int>, GM<int>>();
-}
\ No newline at end of file
+}
diff --git a/tests/compiler/dart2js/rti/rti_emission_test.dart b/tests/compiler/dart2js/rti/rti_emission_test.dart
index de07f7e..5662705 100644
--- a/tests/compiler/dart2js/rti/rti_emission_test.dart
+++ b/tests/compiler/dart2js/rti/rti_emission_test.dart
@@ -101,11 +101,11 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     new RtiMemberEmissionIrComputer(compiler.reporter, actualMap, elementMap,
-            member, compiler, backendStrategy.closureDataLookup)
+            member, compiler, closedWorld.closureDataLookup)
         .run(definition.node);
   }
 
@@ -113,8 +113,8 @@
   void computeClassData(
       Compiler compiler, ClassEntity cls, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     new RtiClassEmissionIrComputer(compiler, elementMap, actualMap)
         .computeClassValue(cls);
   }
@@ -140,7 +140,7 @@
 class RtiMemberEmissionIrComputer extends IrDataExtractor
     with ComputeValueMixin {
   final JsToElementMap _elementMap;
-  final ClosureDataLookup _closureDataLookup;
+  final ClosureData _closureDataLookup;
   final Compiler compiler;
 
   RtiMemberEmissionIrComputer(
diff --git a/tests/compiler/dart2js/rti/rti_need_test_helper.dart b/tests/compiler/dart2js/rti/rti_need_test_helper.dart
index 95d5fd1..aa6668b 100644
--- a/tests/compiler/dart2js/rti/rti_need_test_helper.dart
+++ b/tests/compiler/dart2js/rti/rti_need_test_helper.dart
@@ -243,11 +243,11 @@
   void computeMemberData(
       Compiler compiler, MemberEntity member, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     MemberDefinition definition = elementMap.getMemberDefinition(member);
     new RtiMemberNeedIrComputer(compiler.reporter, actualMap, elementMap,
-            member, compiler, backendStrategy.closureDataLookup)
+            member, compiler, closedWorld.closureDataLookup)
         .run(definition.node);
   }
 
@@ -258,8 +258,8 @@
   void computeClassData(
       Compiler compiler, ClassEntity cls, Map<Id, ActualData> actualMap,
       {bool verbose: false}) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JsToElementMap elementMap = backendStrategy.elementMap;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JsToElementMap elementMap = closedWorld.elementMap;
     new RtiClassNeedIrComputer(compiler, elementMap, actualMap)
         .computeClassValue(cls);
   }
@@ -302,8 +302,8 @@
 
   @override
   Local getFrontendClosure(MemberEntity member) {
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    ir.Node node = backendStrategy.elementMap.getMemberDefinition(member).node;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    ir.Node node = closedWorld.elementMap.getMemberDefinition(member).node;
     if (node is ir.FunctionDeclaration || node is ir.FunctionExpression) {
       KernelFrontEndStrategy frontendStrategy = compiler.frontendStrategy;
       KernelToElementMap frontendElementMap = frontendStrategy.elementMap;
@@ -335,7 +335,7 @@
 class RtiMemberNeedIrComputer extends IrDataExtractor
     with ComputeValueMixin, IrMixin {
   final JsToElementMap _elementMap;
-  final ClosureDataLookup _closureDataLookup;
+  final ClosureData _closureDataLookup;
   final Compiler compiler;
 
   RtiMemberNeedIrComputer(
diff --git a/tests/compiler/dart2js/sourcemaps/name_test.dart b/tests/compiler/dart2js/sourcemaps/name_test.dart
index 3db6952..f6648d8 100644
--- a/tests/compiler/dart2js/sourcemaps/name_test.dart
+++ b/tests/compiler/dart2js/sourcemaps/name_test.dart
@@ -80,14 +80,13 @@
         memorySourceFiles: {'main.dart': SOURCE},
         options: [Flags.disableInlining]);
     Compiler compiler = result.compiler;
-    JsBackendStrategy backendStrategy = compiler.backendStrategy;
-    JElementEnvironment env =
-        compiler.backendClosedWorldForTesting.elementEnvironment;
+    JsClosedWorld closedWorld = compiler.backendClosedWorldForTesting;
+    JElementEnvironment env = closedWorld.elementEnvironment;
     LibraryEntity mainApp = env.mainLibrary;
 
     check(MemberEntity element, String expectedName) {
       String name = computeKernelElementNameForSourceMaps(
-          backendStrategy.elementMap, element);
+          closedWorld.elementMap, element);
       Expect.equals(expectedName, name,
           "Unexpected name '$name' for $element, expected '$expectedName'.");
     }
diff --git a/tests/compiler/dart2js_extra/call_signature_test.dart b/tests/compiler/dart2js_extra/call_signature_test.dart
index 8c78e9a..d33feed 100644
--- a/tests/compiler/dart2js_extra/call_signature_test.dart
+++ b/tests/compiler/dart2js_extra/call_signature_test.dart
@@ -2,7 +2,7 @@
 // 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.
 
-// Regression test. Crash occured when trying to create a signature function
+// Regression test. Crash occurred when trying to create a signature function
 // for the non-live 'call' method on the live class 'A'.
 
 import 'package:expect/expect.dart';
diff --git a/tests/compiler/dart2js_extra/consistent_type_error_test.dart b/tests/compiler/dart2js_extra/consistent_type_error_test.dart
new file mode 100644
index 0000000..e687ba4
--- /dev/null
+++ b/tests/compiler/dart2js_extra/consistent_type_error_test.dart
@@ -0,0 +1,203 @@
+// 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.
+
+// Test that type checks give consistent errors for the same types. In minified
+// mode this checks that the minified class names are consistently tagged.
+
+import 'package:expect/expect.dart';
+
+class Plain {}
+
+class Foo<U> {}
+
+class Test<T> {
+  @pragma('dart2js:noInline')
+  asT(o) => o as T;
+
+  @pragma('dart2js:noInline')
+  asFooT(o) => o as Foo<T>;
+
+  @pragma('dart2js:noInline')
+  testT(o) {
+    T result = o;
+  }
+
+  @pragma('dart2js:noInline')
+  testFooT(o) {
+    Foo<T> result = o;
+  }
+}
+
+capture(action()) {
+  try {
+    action();
+  } catch (e) {
+    print('$e');
+    return '$e';
+  }
+  Expect.fail('Action should have failed');
+}
+
+dynamic g;
+
+casts() {
+  g = Foo<String>();
+
+  Expect.equals(
+    capture(() => Test<Foo<Plain>>().asT(g)),
+    capture(() => g as Foo<Plain>),
+    "C1",
+  );
+
+  Expect.equals(
+    capture(() => g as Foo<Plain>),
+    capture(() => Test<Plain>().asFooT(g)),
+    "C2",
+  );
+
+  Expect.equals(
+    capture(() => Test<Plain>().asT(g)),
+    capture(() => g as Plain),
+    "C3",
+  );
+
+  g = Foo<Plain>();
+
+  Expect.equals(
+    capture(() => Test<Foo<String>>().asT(g)),
+    capture(() => g as Foo<String>),
+    "C4",
+  );
+
+  Expect.equals(
+    capture(() => g as Foo<String>),
+    capture(() => Test<String>().asFooT(g)),
+    "C5",
+  );
+
+  g = Plain();
+
+  Expect.equals(
+    capture(() => Test<String>().asT(g)),
+    capture(() => g as String),
+    "C6",
+  );
+
+  Expect.equals(
+    capture(() => Test<int>().asT(g)),
+    capture(() => g as int),
+    "C7",
+  );
+
+  Expect.equals(
+    capture(() => Test<double>().asT(g)),
+    capture(() => g as double),
+    "C8",
+  );
+
+  Expect.equals(
+    capture(() => Test<bool>().asT(g)),
+    capture(() => g as bool),
+    "C9",
+  );
+
+  Expect.equals(
+    capture(() => Test<List>().asT(g)),
+    capture(() => g as List),
+    "C10",
+  );
+}
+
+tests() {
+  g = Foo<String>();
+
+  Expect.equals(
+    capture(() => Test<Foo<Plain>>().testT(g)),
+    capture(() {
+      Foo<Plain> x = g;
+    }),
+    "T1",
+  );
+
+  Expect.equals(
+    capture(() {
+      Foo<Plain> x = g;
+    }),
+    capture(() => Test<Plain>().testFooT(g)),
+    "T2",
+  );
+
+  Expect.equals(
+    capture(() => Test<Plain>().testT(g)),
+    capture(() {
+      Plain x = g;
+    }),
+    "T3",
+  );
+
+  g = Foo<Plain>();
+
+  Expect.equals(
+    capture(() => Test<Foo<String>>().testT(g)),
+    capture(() {
+      Foo<String> x = g;
+    }),
+    "T4",
+  );
+
+  Expect.equals(
+    capture(() {
+      Foo<String> x = g;
+    }),
+    capture(() => Test<String>().testFooT(g)),
+    "T5",
+  );
+
+  g = Plain();
+
+  Expect.equals(
+    capture(() => Test<String>().testT(g)),
+    capture(() {
+      String x = g;
+    }),
+    "T6",
+  );
+
+  Expect.equals(
+    capture(() => Test<int>().testT(g)),
+    capture(() {
+      int x = g;
+    }),
+    "T7",
+  );
+
+  Expect.equals(
+    capture(() => Test<double>().testT(g)),
+    capture(() {
+      double x = g;
+    }),
+    "T8",
+  );
+
+  Expect.equals(
+    capture(() => Test<bool>().testT(g)),
+    capture(() {
+      bool x = g;
+    }),
+    "T9",
+  );
+
+  Expect.equals(
+    capture(() => Test<List>().testT(g)),
+    capture(() {
+      List x = g;
+    }),
+    "T10",
+  );
+}
+
+main() {
+  casts();
+  tests();
+}
diff --git a/tests/compiler/dart2js_extra/inferrer_is_int_test.dart b/tests/compiler/dart2js_extra/inferrer_is_int_test.dart
index 445986e..fe3e397 100644
--- a/tests/compiler/dart2js_extra/inferrer_is_int_test.dart
+++ b/tests/compiler/dart2js_extra/inferrer_is_int_test.dart
@@ -6,7 +6,7 @@
 // literal might become an int at runtime.
 
 import "package:expect/expect.dart";
-import '../../language/compiler_annotations.dart';
+import '../../language_2/compiler_annotations.dart';
 
 @DontInline()
 callWithStringAndDouble(value) {
diff --git a/tests/compiler/dart2js_extra/supermixin/supermixin17_test.dart b/tests/compiler/dart2js_extra/supermixin/supermixin17_test.dart
index 7752bc7..2358d45 100644
--- a/tests/compiler/dart2js_extra/supermixin/supermixin17_test.dart
+++ b/tests/compiler/dart2js_extra/supermixin/supermixin17_test.dart
@@ -12,7 +12,7 @@
 class SuperA {
 }
 
-class SuperB extends SuperA {
+class SuperB extends SuperA implements SuperC {
 }
 
 mixin Mixin on SuperC, SuperA {
diff --git a/tests/compiler/dart2js_extra/supermixin/supermixin18_test.dart b/tests/compiler/dart2js_extra/supermixin/supermixin18_test.dart
index 8153da1..c0082fa 100644
--- a/tests/compiler/dart2js_extra/supermixin/supermixin18_test.dart
+++ b/tests/compiler/dart2js_extra/supermixin/supermixin18_test.dart
@@ -12,7 +12,7 @@
 class SuperA {
 }
 
-class SuperB extends SuperA {
+class SuperB extends SuperA implements SuperC {
 }
 
 mixin Mixin on SuperA, SuperC {
diff --git a/tests/compiler/dart2js_extra/switch_equals_test.dart b/tests/compiler/dart2js_extra/switch_equals_test.dart
new file mode 100644
index 0000000..72030e6
--- /dev/null
+++ b/tests/compiler/dart2js_extra/switch_equals_test.dart
@@ -0,0 +1,39 @@
+// 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 SuperClass {
+  const SuperClass();
+
+  bool operator ==(Object other);
+}
+
+class Class extends SuperClass {
+  const Class();
+
+  bool operator ==(Object other);
+}
+
+class SubClass extends Class {
+  const SubClass();
+
+  bool operator ==(Object other) => false;
+}
+
+main() {
+  switch (null) {
+    case const SuperClass():
+      break;
+    default:
+  }
+  switch (null) {
+    case const Class():
+      break;
+    default:
+  }
+  switch (null) {
+    case const SubClass(): //# 01: compile-time error
+      break; //# 01: continued
+    default:
+  }
+}
diff --git a/tests/corelib/apply2_test.dart b/tests/corelib/apply2_test.dart
deleted file mode 100644
index 25fed9b..0000000
--- a/tests/corelib/apply2_test.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// 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";
-
-apply(Function function, List positional, Map<Symbol, dynamic> named) {
-  return Function.apply(function, positional, named);
-}
-
-void throwsNSME(function, positional, named) {
-  Expect.throws(
-      () => apply(function, positional, named), (e) => e is NoSuchMethodError);
-}
-
-main() {
-  var c1 = () => 'c1';
-  var c2 = (a) => 'c2 $a';
-  var c3 = ([a = 1]) => 'c3 $a';
-  var c4 = ({a: 1}) => 'c4 $a';
-  var c5 = ({a: 1, b: 2}) => 'c5 $a $b';
-  var c6 = ({b: 1, a: 2}) => 'c6 $a $b';
-  var c7 = (x, {b: 1, a: 2}) => 'c7 $x $a $b';
-  var c8 = (x, y, [a = 2, b = 3]) => 'c8 $x $y $a $b';
-
-  Expect.equals('c1', apply(c1, null, null));
-  Expect.equals('c1', apply(c1, [], null));
-  Expect.equals('c1', apply(c1, [], {}));
-  Expect.equals('c1', apply(c1, null, {}));
-  throwsNSME(c1, [1], null);
-  throwsNSME(c1, [1], {#a: 2});
-  throwsNSME(c1, null, {#a: 2});
-
-  Expect.equals('c2 1', apply(c2, [1], null));
-  Expect.equals('c2 1', apply(c2, [1], {}));
-  throwsNSME(c2, null, null);
-  throwsNSME(c2, [], null);
-  throwsNSME(c2, null, {});
-  throwsNSME(c2, null, {#a: 1});
-  throwsNSME(c2, [2], {#a: 1});
-
-  Expect.equals('c3 1', apply(c3, null, null));
-  Expect.equals('c3 1', apply(c3, [], null));
-  Expect.equals('c3 2', apply(c3, [2], {}));
-  throwsNSME(c3, [1, 2], null);
-  throwsNSME(c3, null, {#a: 1});
-
-  Expect.equals('c4 1', apply(c4, [], null));
-  Expect.equals('c4 2', apply(c4, [], {#a: 2}));
-  Expect.equals('c4 1', apply(c4, null, null));
-  Expect.equals('c4 1', apply(c4, [], {}));
-  throwsNSME(c4, [1], {#a: 1});
-  throwsNSME(c4, [1], {});
-  throwsNSME(c4, [], {#a: 1, #b: 2});
-
-  Expect.equals('c5 1 2', apply(c5, [], null));
-  Expect.equals('c5 3 2', apply(c5, [], {#a: 3}));
-  Expect.equals('c5 1 2', apply(c5, null, null));
-  Expect.equals('c5 1 2', apply(c5, [], {}));
-  Expect.equals('c5 3 4', apply(c5, [], {#a: 3, #b: 4}));
-  Expect.equals('c5 4 3', apply(c5, [], {#b: 3, #a: 4}));
-  Expect.equals('c5 1 3', apply(c5, [], {#b: 3}));
-  throwsNSME(c5, [1], {#a: 1});
-  throwsNSME(c5, [1], {});
-  throwsNSME(c5, [], {#a: 1, #b: 2, #c: 3});
-
-  Expect.equals('c6 2 1', apply(c6, [], null));
-  Expect.equals('c6 3 1', apply(c6, [], {#a: 3}));
-  Expect.equals('c6 2 1', apply(c6, null, null));
-  Expect.equals('c6 2 1', apply(c6, [], {}));
-  Expect.equals('c6 3 4', apply(c6, [], {#a: 3, #b: 4}));
-  Expect.equals('c6 4 3', apply(c6, [], {#b: 3, #a: 4}));
-  Expect.equals('c6 2 3', apply(c6, [], {#b: 3}));
-  throwsNSME(c6, [1], {#a: 1});
-  throwsNSME(c6, [1], {});
-  throwsNSME(c6, [], {#a: 1, #b: 2, #c: 3});
-
-  Expect.equals('c7 7 2 1', apply(c7, [7], null));
-  Expect.equals('c7 7 3 1', apply(c7, [7], {#a: 3}));
-  Expect.equals('c7 7 2 1', apply(c7, [7], {}));
-  Expect.equals('c7 7 3 4', apply(c7, [7], {#a: 3, #b: 4}));
-  Expect.equals('c7 7 4 3', apply(c7, [7], {#b: 3, #a: 4}));
-  Expect.equals('c7 7 2 3', apply(c7, [7], {#b: 3}));
-  throwsNSME(c7, [], {#a: 1});
-  throwsNSME(c7, [], {});
-  throwsNSME(c7, [7], {#a: 1, #b: 2, #c: 3});
-
-  Expect.equals('c8 7 8 2 3', apply(c8, [7, 8], null));
-  Expect.equals('c8 7 8 2 3', apply(c8, [7, 8], {}));
-  Expect.equals('c8 7 8 3 3', apply(c8, [7, 8, 3], null));
-  Expect.equals('c8 7 8 3 4', apply(c8, [7, 8, 3, 4], null));
-  throwsNSME(c8, [], null);
-  throwsNSME(c8, [], {});
-  throwsNSME(c8, [1], null);
-  throwsNSME(c8, [7, 8, 9, 10, 11], null);
-}
diff --git a/tests/corelib/apply3_test.dart b/tests/corelib/apply3_test.dart
deleted file mode 100644
index 12a98c4..0000000
--- a/tests/corelib/apply3_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test [Function.apply] on user-defined classes that implement [noSuchMethod].
-
-import "package:expect/expect.dart";
-import 'dart:mirrors';
-
-class F {
-  call([p1]) => "call";
-  noSuchMethod(Invocation invocation) => "NSM";
-}
-
-class G {
-  call() => '42';
-  noSuchMethod(Invocation invocation) => invocation;
-}
-
-class H {
-  call(required, {a}) => required + a;
-}
-
-main() {
-  Expect.equals('call', Function.apply(new F(), []));
-  Expect.equals('call', Function.apply(new F(), [1]));
-  Expect.equals('NSM', Function.apply(new F(), [1, 2]));
-  Expect.equals('NSM', Function.apply(new F(), [1, 2, 3]));
-
-  var symbol = const Symbol('a');
-  var requiredParameters = [1];
-  var optionalParameters = new Map()..[symbol] = 42;
-  Invocation i =
-      Function.apply(new G(), requiredParameters, optionalParameters);
-
-  Expect.equals(const Symbol('call'), i.memberName);
-  Expect.listEquals(requiredParameters, i.positionalArguments);
-  Expect.mapEquals(optionalParameters, i.namedArguments);
-  Expect.isTrue(i.isMethod);
-  Expect.isFalse(i.isGetter);
-  Expect.isFalse(i.isSetter);
-  Expect.isFalse(i.isAccessor);
-
-  // Check that changing the passed list and map for parameters does
-  // not affect [i].
-  requiredParameters[0] = 42;
-  optionalParameters[symbol] = 12;
-  Expect.listEquals([1], i.positionalArguments);
-  Expect.mapEquals(new Map()..[symbol] = 42, i.namedArguments);
-
-  // Check that using [i] for invocation yields the same [Invocation]
-  // object.
-  var mirror = reflect(new G());
-  Invocation other = mirror.delegate(i);
-  Expect.equals(i.memberName, other.memberName);
-  Expect.listEquals(i.positionalArguments, other.positionalArguments);
-  Expect.mapEquals(i.namedArguments, other.namedArguments);
-  Expect.equals(i.isMethod, other.isMethod);
-  Expect.equals(i.isGetter, other.isGetter);
-  Expect.equals(i.isSetter, other.isSetter);
-  Expect.equals(i.isAccessor, other.isAccessor);
-
-  // Test that [i] can be used to hit an existing method.
-  Expect.equals(43, new H().call(1, a: 42));
-  Expect.equals(43, Function.apply(new H(), [1], new Map()..[symbol] = 42));
-  mirror = reflect(new H());
-  Expect.equals(43, mirror.delegate(i));
-  Expect.equals(43, mirror.delegate(other));
-}
diff --git a/tests/corelib/apply4_test.dart b/tests/corelib/apply4_test.dart
deleted file mode 100644
index fba4b9d..0000000
--- a/tests/corelib/apply4_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, 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";
-
-// Testing Function.apply calls work correctly for arities that are not
-// otherwise present in the program (and thus might not have stubs
-// generated).
-
-class A {
-  foo(x, [y, z, a, b, c, d = 99, e, f, g, h, i, j]) => "$x $d";
-}
-
-main() {
-  var a = new A();
-  var clos = a.foo;
-  Expect.equals(Function.apply(clos, ["well"]), "well 99");
-  Expect.equals(Function.apply(clos, ["well", 0, 2, 4, 3, 6, 9, 10]), "well 9");
-}
diff --git a/tests/corelib/apply5_test.dart b/tests/corelib/apply5_test.dart
deleted file mode 100644
index 5435f10..0000000
--- a/tests/corelib/apply5_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-// Testing that, when compiled to JS, Function.apply works correctly for
-// functions with that will be invoked directly vs using .apply().
-
-class A {
-  foo([a = 10, b = 20, c = 30, d = 40, e = 50]) => "$a $b $c $d $e";
-}
-
-main() {
-  var a = new A();
-  var clos = a.foo;
-  Expect.equals(Function.apply(clos, []), "10 20 30 40 50");
-  Expect.equals(Function.apply(clos, [11]), "11 20 30 40 50");
-  Expect.equals(Function.apply(clos, [11, 21]), "11 21 30 40 50");
-  Expect.equals(Function.apply(clos, [11, 21, 31]), "11 21 31 40 50");
-  Expect.equals(Function.apply(clos, [11, 21, 31, 41]), "11 21 31 41 50");
-  Expect.equals(Function.apply(clos, [11, 21, 31, 41, 51]), "11 21 31 41 51");
-}
diff --git a/tests/corelib/apply_test.dart b/tests/corelib/apply_test.dart
deleted file mode 100644
index 2540d9a..0000000
--- a/tests/corelib/apply_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// 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";
-import "symbol_map_helper.dart";
-
-// Testing Function.apply calls correctly.
-// This test is not testing error handling, only that correct parameters
-// cause a correct call.
-
-int test0() => 42;
-int test0a({int a}) => 37 + a;
-int test1(int i) => i + 1;
-int test1a(int i, {int a}) => i + a;
-int test2(int i, int j) => i + j;
-int test2a(int i, int j, {int a}) => i + j + a;
-
-class C {
-  int x = 10;
-  int foo(y) => this.x + y;
-}
-
-class Callable {
-  int call(int x, int y) => x + y;
-}
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-main() {
-  testMap(res, func, map) {
-    map = symbolMapToStringMap(map);
-    Expect.equals(res, Function.apply(func, null, map));
-    Expect.equals(res, Function.apply(func, [], map));
-  }
-
-  testList(res, func, list) {
-    Expect.equals(res, Function.apply(func, list));
-    Expect.equals(res, Function.apply(func, list, null));
-    Expect.equals(res, Function.apply(func, list, new Map<Symbol, dynamic>()));
-  }
-
-  test(res, func, list, map) {
-    map = symbolMapToStringMap(map);
-    Expect.equals(res, Function.apply(func, list, map));
-  }
-
-  testList(42, test0, null);
-  testList(42, test0, []);
-  testMap(42, test0a, {"a": 5});
-  testList(42, test1, [41]);
-  test(42, test1a, [20], {"a": 22});
-  testList(42, test2, [20, 22]);
-  test(42, test2a, [10, 15], {"a": 17});
-
-  // Test that "this" is correct when calling closurized functions.
-  var cfoo = new C().foo;
-  testList(42, cfoo, [32]);
-
-  // Test that apply works even with a different name.
-  var app = confuse(Function.apply);
-  Expect.equals(42, app(test2, [22, 20]));
-
-  // Test that apply can itself be applied.
-  Expect.equals(
-      42,
-      Function.apply(Function.apply, [
-        test2,
-        [17, 25]
-      ]));
-
-  // Test that apply works on callable objects.
-  testList(42, new Callable(), [13, 29]);
-}
diff --git a/tests/corelib/big_integer_arith_vm_test.dart b/tests/corelib/big_integer_arith_vm_test.dart
deleted file mode 100644
index c22c7af..0000000
--- a/tests/corelib/big_integer_arith_vm_test.dart
+++ /dev/null
@@ -1,447 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Testing Bigints with and without intrinsics.
-// VMOptions=
-// VMOptions=--no_intrinsify
-// VMOptions=--no-background-compilation
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-library big_integer_test;
-
-import "package:expect/expect.dart";
-
-foo() => 1234567890123456789;
-bar() => 12345678901234567890;
-
-testSmiOverflow() {
-  var a = 1073741823;
-  var b = 1073741822;
-  Expect.equals(2147483645, a + b);
-  a = -1000000000;
-  b = 1000000001;
-  Expect.equals(-2000000001, a - b);
-  Expect.equals(-1000000001000000000, a * b);
-}
-
-testBigintAdd() {
-  // Bigint and Smi.
-  var a = 12345678901234567890;
-  var b = 2;
-  Expect.equals(12345678901234567892, a + b);
-  Expect.equals(12345678901234567892, b + a);
-  // Bigint and Bigint.
-  a = 10000000000000000001;
-  Expect.equals(20000000000000000002, a + a);
-  // Bigint and double.
-  a = 100000000000000000000.0;
-  b = 200000000000000000000;
-  Expect.isTrue((a + b) is double);
-  Expect.equals(300000000000000000000.0, a + b);
-  Expect.isTrue((b + a) is double);
-  Expect.equals(300000000000000000000.0, b + a);
-}
-
-testBigintSub() {
-  // Bigint and Smi.
-  var a = 12345678901234567890;
-  var b = 2;
-  Expect.equals(12345678901234567888, a - b);
-  Expect.equals(-12345678901234567888, b - a);
-  // Bigint and Bigint.
-  a = 10000000000000000001;
-  Expect.equals(20000000000000000002, a + a);
-  // Bigint and double.
-  a = 100000000000000000000.0;
-  b = 200000000000000000000;
-  Expect.isTrue((a + b) is double);
-  Expect.equals(-100000000000000000000.0, a - b);
-  Expect.isTrue((b + a) is double);
-  Expect.equals(100000000000000000000.0, b - a);
-  Expect.equals(-1, 0xF00000000 - 0xF00000001);
-}
-
-testBigintMul() {
-  // Bigint and Smi.
-  var a = 12345678901234567890;
-  var b = 10;
-  Expect.equals(123456789012345678900, a * b);
-  Expect.equals(123456789012345678900, b * a);
-  // Bigint and Bigint.
-  a = 12345678901234567890;
-  b = 10000000000000000;
-  Expect.equals(123456789012345678900000000000000000, a * b);
-  // Bigint and double.
-  a = 2.0;
-  b = 200000000000000000000;
-  Expect.isTrue((a * b) is double);
-  Expect.equals(400000000000000000000.0, a * b);
-  Expect.isTrue((b * a) is double);
-  Expect.equals(400000000000000000000.0, b * a);
-}
-
-testBigintTruncDiv() {
-  var a = 12345678901234567890;
-  var b = 10;
-  // Bigint and Smi.
-  Expect.equals(1234567890123456789, a ~/ b);
-  Expect.equals(0, b ~/ a);
-  Expect.equals(123456789, 123456789012345678 ~/ 1000000000);
-  // Bigint and Bigint.
-  a = 12345678901234567890;
-  b = 10000000000000000;
-  Expect.equals(1234, a ~/ b);
-  // Bigint and double.
-  a = 100000000000000000000.0;
-  b = 200000000000000000000;
-  Expect.equals(0, a ~/ b);
-  Expect.equals(2, b ~/ a);
-}
-
-testBigintDiv() {
-  // Bigint and Smi.
-  Expect.equals(1234567890123456789.1, 12345678901234567891 / 10);
-  Expect.equals(0.000000001234, 1234 / 1000000000000);
-  Expect.equals(12345678901234000000.0, 123456789012340000000 / 10);
-  // Bigint and Bigint.
-  var a = 12345670000000000000;
-  var b = 10000000000000000;
-  Expect.equals(1234.567, a / b);
-  // Bigint and double.
-  a = 400000000000000000000.0;
-  b = 200000000000000000000;
-  Expect.equals(2.0, a / b);
-  Expect.equals(0.5, b / a);
-}
-
-testBigintModulo() {
-  // Bigint and Smi.
-  var a = 1000000000005;
-  var b = 10;
-  Expect.equals(5, a % b);
-  Expect.equals(10, b % a);
-  // Bigint & Bigint
-  a = 10000000000000000001;
-  b = 10000000000000000000;
-  Expect.equals(1, a % b);
-  Expect.equals(10000000000000000000, b % a);
-  // Bigint & double.
-  a = 10000000100000000.0;
-  b = 10000000000000000;
-  Expect.equals(100000000.0, a % b);
-  Expect.equals(10000000000000000.0, b % a);
-  // Transitioning from Mint to Bigint.
-  var iStart = 4611686018427387900;
-  var prevX = -23 % iStart;
-  for (int i = iStart + 1; i < iStart + 10; i++) {
-    var x = -23 % i;
-    Expect.equals(1, x - prevX);
-    Expect.isTrue(x > 0);
-    prevX = x;
-  }
-}
-
-testBigintModPow() {
-  var x, e, m;
-  x = 1234567890;
-  e = 1000000001;
-  m = 19;
-  Expect.equals(11, x.modPow(e, m));
-  x = 1234567890;
-  e = 19;
-  m = 1000000001;
-  Expect.equals(122998977, x.modPow(e, m));
-  x = 19;
-  e = 1234567890;
-  m = 1000000001;
-  Expect.equals(619059596, x.modPow(e, m));
-  x = 19;
-  e = 1000000001;
-  m = 1234567890;
-  Expect.equals(84910879, x.modPow(e, m));
-  x = 1000000001;
-  e = 19;
-  m = 1234567890;
-  Expect.equals(872984351, x.modPow(e, m));
-  x = 1000000001;
-  e = 1234567890;
-  m = 19;
-  Expect.equals(0, x.modPow(e, m));
-  x = 12345678901234567890;
-  e = 10000000000000000001;
-  m = 19;
-  Expect.equals(2, x.modPow(e, m));
-  x = 12345678901234567890;
-  e = 19;
-  m = 10000000000000000001;
-  Expect.equals(3239137215315834625, x.modPow(e, m));
-  x = 19;
-  e = 12345678901234567890;
-  m = 10000000000000000001;
-  Expect.equals(4544207837373941034, x.modPow(e, m));
-  x = 19;
-  e = 10000000000000000001;
-  m = 12345678901234567890;
-  Expect.equals(11135411705397624859, x.modPow(e, m));
-  x = 10000000000000000001;
-  e = 19;
-  m = 12345678901234567890;
-  Expect.equals(2034013733189773841, x.modPow(e, m));
-  x = 10000000000000000001;
-  e = 12345678901234567890;
-  m = 19;
-  Expect.equals(1, x.modPow(e, m));
-  x = 12345678901234567890;
-  e = 19;
-  m = 10000000000000000001;
-  Expect.equals(3239137215315834625, x.modPow(e, m));
-  x = 12345678901234567890;
-  e = 10000000000000000001;
-  m = 19;
-  Expect.equals(2, x.modPow(e, m));
-  x = 123456789012345678901234567890;
-  e = 123456789012345678901234567891;
-  m = 123456789012345678901234567899;
-  Expect.equals(116401406051033429924651549616, x.modPow(e, m));
-  x = 123456789012345678901234567890;
-  e = 123456789012345678901234567899;
-  m = 123456789012345678901234567891;
-  Expect.equals(123456789012345678901234567890, x.modPow(e, m));
-  x = 123456789012345678901234567899;
-  e = 123456789012345678901234567890;
-  m = 123456789012345678901234567891;
-  Expect.equals(35088523091000351053091545070, x.modPow(e, m));
-  x = 123456789012345678901234567899;
-  e = 123456789012345678901234567891;
-  m = 123456789012345678901234567890;
-  Expect.equals(18310047270234132455316941949, x.modPow(e, m));
-  x = 123456789012345678901234567891;
-  e = 123456789012345678901234567899;
-  m = 123456789012345678901234567890;
-  Expect.equals(1, x.modPow(e, m));
-  x = 123456789012345678901234567891;
-  e = 123456789012345678901234567890;
-  m = 123456789012345678901234567899;
-  Expect.equals(40128068573873018143207285483, x.modPow(e, m));
-}
-
-testBigintModInverse() {
-  var x, m;
-  x = 1;
-  m = 1;
-  Expect.equals(0, x.modInverse(m));
-  x = 0;
-  m = 1000000001;
-  Expect.throws(() => x.modInverse(m), (e) => e is Exception); // Not coprime.
-  x = 1234567890;
-  m = 19;
-  Expect.equals(11, x.modInverse(m));
-  x = 1234567890;
-  m = 1000000001;
-  Expect.equals(189108911, x.modInverse(m));
-  x = 19;
-  m = 1000000001;
-  Expect.throws(() => x.modInverse(m), (e) => e is Exception); // Not coprime.
-  x = 19;
-  m = 1234567890;
-  Expect.equals(519818059, x.modInverse(m));
-  x = 1000000001;
-  m = 1234567890;
-  Expect.equals(1001100101, x.modInverse(m));
-  x = 1000000001;
-  m = 19;
-  Expect.throws(() => x.modInverse(m), (e) => e is Exception); // Not coprime.
-  x = 12345678901234567890;
-  m = 19;
-  Expect.equals(3, x.modInverse(m));
-  x = 12345678901234567890;
-  m = 10000000000000000001;
-  Expect.equals(9736746307686209582, x.modInverse(m));
-  x = 19;
-  m = 10000000000000000001;
-  Expect.equals(6315789473684210527, x.modInverse(m));
-  x = 19;
-  m = 12345678901234567890;
-  Expect.equals(10396361179987004539, x.modInverse(m));
-  x = 10000000000000000001;
-  m = 12345678901234567890;
-  Expect.equals(325004555487045911, x.modInverse(m));
-  x = 10000000000000000001;
-  m = 19;
-  Expect.equals(7, x.modInverse(m));
-  x = 12345678901234567890;
-  m = 10000000000000000001;
-  Expect.equals(9736746307686209582, x.modInverse(m));
-  x = 12345678901234567890;
-  m = 19;
-  Expect.equals(3, x.modInverse(m));
-  x = 123456789012345678901234567890;
-  m = 123456789012345678901234567899;
-  Expect.throws(() => x.modInverse(m), (e) => e is Exception); // Not coprime.
-  x = 123456789012345678901234567890;
-  m = 123456789012345678901234567891;
-  Expect.equals(123456789012345678901234567890, x.modInverse(m));
-  x = 123456789012345678901234567899;
-  m = 123456789012345678901234567891;
-  Expect.equals(77160493132716049313271604932, x.modInverse(m));
-  x = 123456789012345678901234567899;
-  m = 123456789012345678901234567890;
-  Expect.throws(() => x.modInverse(m), (e) => e is Exception); // Not coprime.
-  x = 123456789012345678901234567891;
-  m = 123456789012345678901234567890;
-  Expect.equals(1, x.modInverse(m));
-  x = 123456789012345678901234567891;
-  m = 123456789012345678901234567899;
-  Expect.equals(46296295879629629587962962962, x.modInverse(m));
-}
-
-testBigintGcd() {
-  var x, m;
-  x = 1;
-  m = 1;
-  Expect.equals(1, x.gcd(m));
-  x = 693;
-  m = 609;
-  Expect.equals(21, x.gcd(m));
-  x = 693 << 40;
-  m = 609 << 40;
-  Expect.equals(21 << 40, x.gcd(m));
-  x = 609 << 40;
-  ;
-  m = 693 << 40;
-  ;
-  Expect.equals(21 << 40, x.gcd(m));
-  x = 0;
-  m = 1000000001;
-  Expect.equals(m, x.gcd(m));
-  x = 1000000001;
-  m = 0;
-  Expect.equals(x, x.gcd(m));
-  x = 0;
-  m = -1000000001;
-  Expect.equals(-m, x.gcd(m));
-  x = -1000000001;
-  m = 0;
-  Expect.equals(-x, x.gcd(m));
-  x = 0;
-  m = 0;
-  Expect.equals(0, x.gcd(m));
-  x = 0;
-  m = 123456789012345678901234567890;
-  Expect.equals(m, x.gcd(m));
-  x = 123456789012345678901234567890;
-  m = 0;
-  Expect.equals(x, x.gcd(m));
-  x = 0;
-  m = -123456789012345678901234567890;
-  Expect.equals(-m, x.gcd(m));
-  x = -123456789012345678901234567890;
-  m = 0;
-  Expect.equals(-x, x.gcd(m));
-  x = 1234567890;
-  m = 19;
-  Expect.equals(1, x.gcd(m));
-  x = 1234567890;
-  m = 1000000001;
-  Expect.equals(1, x.gcd(m));
-  x = 19;
-  m = 1000000001;
-  Expect.equals(19, x.gcd(m));
-  x = 19;
-  m = 1234567890;
-  Expect.equals(1, x.gcd(m));
-  x = 1000000001;
-  m = 1234567890;
-  Expect.equals(1, x.gcd(m));
-  x = 1000000001;
-  m = 19;
-  Expect.equals(19, x.gcd(m));
-  x = 12345678901234567890;
-  m = 19;
-  Expect.equals(1, x.gcd(m));
-  x = 12345678901234567890;
-  m = 10000000000000000001;
-  Expect.equals(1, x.gcd(m));
-  x = 19;
-  m = 10000000000000000001;
-  Expect.equals(1, x.gcd(m));
-  x = 19;
-  m = 12345678901234567890;
-  Expect.equals(1, x.gcd(m));
-  x = 10000000000000000001;
-  m = 12345678901234567890;
-  Expect.equals(1, x.gcd(m));
-  x = 10000000000000000001;
-  m = 19;
-  Expect.equals(1, x.gcd(m));
-  x = 12345678901234567890;
-  m = 10000000000000000001;
-  Expect.equals(1, x.gcd(m));
-  x = 12345678901234567890;
-  m = 19;
-  Expect.equals(1, x.gcd(m));
-  x = 123456789012345678901234567890;
-  m = 123456789012345678901234567899;
-  Expect.equals(9, x.gcd(m));
-  x = 123456789012345678901234567890;
-  m = 123456789012345678901234567891;
-  Expect.equals(1, x.gcd(m));
-  x = 123456789012345678901234567899;
-  m = 123456789012345678901234567891;
-  Expect.equals(1, x.gcd(m));
-  x = 123456789012345678901234567899;
-  m = 123456789012345678901234567890;
-  Expect.equals(9, x.gcd(m));
-  x = 123456789012345678901234567891;
-  m = 123456789012345678901234567890;
-  Expect.equals(1, x.gcd(m));
-  x = 123456789012345678901234567891;
-  m = 123456789012345678901234567899;
-  Expect.equals(1, x.gcd(m));
-}
-
-testBigintNegate() {
-  var a = 0xF000000000000000F;
-  var b = ~a; // negate.
-  Expect.equals(-0xF0000000000000010, b);
-  Expect.equals(0, a & b);
-  Expect.equals(-1, a | b);
-}
-
-testShiftAmount() {
-  Expect.equals(0, 12 >> 111111111111111111111111111111);
-  Expect.equals(-1, -12 >> 111111111111111111111111111111);
-  bool exceptionCaught = false;
-  try {
-    var a = 1 << 1111111111111111111111111111;
-  } on OutOfMemoryError catch (e) {
-    exceptionCaught = true;
-  }
-  Expect.equals(true, exceptionCaught);
-}
-
-main() {
-  for (int i = 0; i < 10; i++) {
-    Expect.equals(1234567890123456789, foo());
-    Expect.equals(12345678901234567890, bar());
-    testSmiOverflow(); // //# overflow: ok
-    testBigintAdd(); // //# add: ok
-    testBigintSub(); // //# sub: ok
-    testBigintMul(); // //# mul: ok
-    testBigintTruncDiv(); // //# trunDiv: ok
-    testBigintDiv(); // //# div: ok
-    testBigintModulo(); // //# mod: ok
-    testBigintModPow(); // //# modPow: ok
-    testBigintModInverse(); // //# modInv: ok
-    testBigintGcd(); // //# gcd: ok
-    testBigintNegate(); // //# negate: ok
-    testShiftAmount(); // //# shift: ok
-    Expect.equals(12345678901234567890, (12345678901234567890).abs());
-    Expect.equals(12345678901234567890, (-12345678901234567890).abs());
-    var a = 10000000000000000000;
-    var b = 10000000000000000001;
-    Expect.equals(false, a.hashCode == b.hashCode);
-    Expect.equals(true, a.hashCode == (b - 1).hashCode);
-  }
-}
diff --git a/tests/corelib/big_integer_huge_mul_vm_test.dart b/tests/corelib/big_integer_huge_mul_vm_test.dart
deleted file mode 100644
index b5bbeaa..0000000
--- a/tests/corelib/big_integer_huge_mul_vm_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Testing Bigints with and without intrinsics.
-// VMOptions=
-// VMOptions=--no_intrinsify
-
-library big_integer_test;
-
-import "package:expect/expect.dart";
-
-testBigintHugeMul() {
-  var bits = 65536;
-  var a = 1 << bits;
-  var a1 = a - 1; // all 1's
-  var p1 = a1 * a1;
-  var p2 = a * a - a - a + 1;
-  // Use isTrue instead of equals to avoid trying to print such big numbers.
-  Expect.isTrue(p1 == p2, 'products do not match');
-}
-
-main() {
-  testBigintHugeMul();
-}
diff --git a/tests/corelib/big_integer_parsed_arith_vm_test.dart b/tests/corelib/big_integer_parsed_arith_vm_test.dart
deleted file mode 100644
index 88b4fd0..0000000
--- a/tests/corelib/big_integer_parsed_arith_vm_test.dart
+++ /dev/null
@@ -1,601 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Testing Bigints with and without intrinsics.
-// VMOptions=
-// VMOptions=--no_intrinsify
-
-library big_integer_test;
-
-import "package:expect/expect.dart";
-
-addSubParsed(String a, String b, String sum) {
-  int int_a = int.parse(a);
-  int int_b = int.parse(b);
-  int int_sum = int.parse(sum);
-  int computed_sum = int_a + int_b;
-  Expect.equals(int_sum, computed_sum);
-  String str_sum = computed_sum >= 0
-      ? "0x${computed_sum.toRadixString(16)}"
-      : "-0x${(-computed_sum).toRadixString(16)}";
-  Expect.equals(sum.toLowerCase(), str_sum);
-  int computed_difference1 = int_sum - int_a;
-  Expect.equals(int_b, computed_difference1);
-  String str_difference1 = computed_difference1 >= 0
-      ? "0x${computed_difference1.toRadixString(16)}"
-      : "-0x${(-computed_difference1).toRadixString(16)}";
-  Expect.equals(b.toLowerCase(), str_difference1);
-  int computed_difference2 = int_sum - int_b;
-  Expect.equals(int_a, computed_difference2);
-  String str_difference2 = computed_difference2 >= 0
-      ? "0x${computed_difference2.toRadixString(16)}"
-      : "-0x${(-computed_difference2).toRadixString(16)}";
-  Expect.equals(a.toLowerCase(), str_difference2);
-}
-
-testBigintAddSub() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  addSubParsed(zero, zero, zero);
-  addSubParsed(zero, one, one);
-  addSubParsed(one, zero, one);
-  addSubParsed(one, one, "0x2");
-  addSubParsed(minus_one, minus_one, "-0x2");
-  addSubParsed("0x123", zero, "0x123");
-  addSubParsed(zero, "0x123", "0x123");
-  addSubParsed("0x123", one, "0x124");
-  addSubParsed(one, "0x123", "0x124");
-  addSubParsed(
-      "0xFFFFFFF",
-      one, // 28 bit overflow.
-      "0x10000000");
-  addSubParsed(
-      "0xFFFFFFFF",
-      one, // 32 bit overflow.
-      "0x100000000");
-  addSubParsed(
-      "0xFFFFFFFFFFFFFF",
-      one, // 56 bit overflow.
-      "0x100000000000000");
-  addSubParsed(
-      "0xFFFFFFFFFFFFFFFF",
-      one, // 64 bit overflow.
-      "0x10000000000000000");
-  addSubParsed(
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", // 128 bit.
-      one,
-      "0x100000000000000000000000000000000");
-  addSubParsed("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", one,
-      "0x10000000000000000000000000000000000000000000");
-  addSubParsed(
-      "0x8000000", // 28 bit overflow.
-      "0x8000000",
-      "0x10000000");
-  addSubParsed(
-      "0x80000000", // 32 bit overflow.
-      "0x80000000",
-      "0x100000000");
-  addSubParsed(
-      "0x80000000000000", // 56 bit overflow.
-      "0x80000000000000",
-      "0x100000000000000");
-  addSubParsed(
-      "0x8000000000000000", // 64 bit overflow.
-      "0x8000000000000000",
-      "0x10000000000000000");
-  addSubParsed(
-      "0x80000000000000000000000000000000", // 128 bit.
-      "0x80000000000000000000000000000000",
-      "0x100000000000000000000000000000000");
-  addSubParsed(
-      "0x8000000000000000000000000000000000000000000",
-      "0x8000000000000000000000000000000000000000000",
-      "0x10000000000000000000000000000000000000000000");
-
-  {
-    String a = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
-    String sum1 = "0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF1";
-    String times2 = "0x2468ACF13579BDE02468ACF121579BDE02468ACF13579BDE0";
-    addSubParsed(a, zero, a);
-    addSubParsed(a, one, sum1);
-    addSubParsed(a, a, times2);
-  }
-
-  addSubParsed("-0x123", minus_one, "-0x124");
-  addSubParsed(minus_one, "-0x123", "-0x124");
-  addSubParsed(
-      "-0xFFFFFFF",
-      minus_one, // 28 bit overflow.
-      "-0x10000000");
-  addSubParsed(
-      "-0xFFFFFFFF",
-      minus_one, // 32 bit overflow.
-      "-0x100000000");
-  addSubParsed(
-      "-0xFFFFFFFFFFFFFF",
-      minus_one, // 56 bit overflow.
-      "-0x100000000000000");
-  addSubParsed(
-      "-0xFFFFFFFFFFFFFFFF",
-      minus_one, // 64 bit overflow.
-      "-0x10000000000000000");
-  addSubParsed(
-      "-0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", // 128 bit.
-      minus_one,
-      "-0x100000000000000000000000000000000");
-  addSubParsed("-0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", minus_one,
-      "-0x10000000000000000000000000000000000000000000");
-  addSubParsed(
-      "-0x8000000", // 28 bit overflow.
-      "-0x8000000",
-      "-0x10000000");
-  addSubParsed(
-      "-0x80000000", // 32 bit overflow.
-      "-0x80000000",
-      "-0x100000000");
-  addSubParsed(
-      "-0x80000000000000", // 56 bit overflow.
-      "-0x80000000000000",
-      "-0x100000000000000");
-  addSubParsed(
-      "-0x8000000000000000", // 64 bit overflow.
-      "-0x8000000000000000",
-      "-0x10000000000000000");
-  addSubParsed(
-      "-0x80000000000000000000000000000000", // 128 bit.
-      "-0x80000000000000000000000000000000",
-      "-0x100000000000000000000000000000000");
-  addSubParsed(
-      "-0x8000000000000000000000000000000000000000000",
-      "-0x8000000000000000000000000000000000000000000",
-      "-0x10000000000000000000000000000000000000000000");
-
-  {
-    String a = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF0";
-    String sum1 = "-0x123456789ABCDEF01234567890ABCDEF0123456789ABCDEF1";
-    String times2 = "-0x2468ACF13579BDE02468ACF121579BDE02468ACF13579BDE0";
-    addSubParsed(a, zero, a);
-    addSubParsed(a, minus_one, sum1);
-    addSubParsed(a, a, times2);
-  }
-
-  addSubParsed("0x10000000000000000000000000000000000000000000", "0xFFFF",
-      "0x1000000000000000000000000000000000000000FFFF");
-  addSubParsed("0x10000000000000000000000000000000000000000000",
-      "0xFFFF00000000", "0x10000000000000000000000000000000FFFF00000000");
-  addSubParsed("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", "0x100000000",
-      "0x1000000000000000000000000000000000000FFFFFFFF");
-  addSubParsed(
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
-      "0x10000000000000000000",
-      "0x10000000000000000000000000FFFFFFFFFFFFFFFFFFF");
-
-  addSubParsed("0xB", "-0x7", "0x4");
-  addSubParsed("-0xB", "-0x7", "-0x12");
-  addSubParsed("0xB", "0x7", "0x12");
-  addSubParsed("-0xB", "0x7", "-0x4");
-  addSubParsed("-0x7", "0xB", "0x4");
-  addSubParsed("-0x7", "-0xB", "-0x12");
-  addSubParsed("0x7", "0xB", "0x12");
-  addSubParsed("0x7", "-0xB", "-0x4");
-}
-
-shiftLeftParsed(String a, int amount, String result) {
-  int int_a = int.parse(a);
-  int int_result = int.parse(result);
-  int shifted = int_a << amount;
-  Expect.equals(int_result, shifted);
-  String str_shifted = shifted >= 0
-      ? "0x${shifted.toRadixString(16)}"
-      : "-0x${(-shifted).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_shifted);
-  int back_shifted = shifted >> amount;
-  Expect.equals(int_a, back_shifted);
-  String str_back_shifted = back_shifted >= 0
-      ? "0x${back_shifted.toRadixString(16)}"
-      : "-0x${(-back_shifted).toRadixString(16)}";
-  Expect.equals(a.toLowerCase(), str_back_shifted);
-}
-
-testBigintLeftShift() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  shiftLeftParsed(zero, 0, zero);
-  shiftLeftParsed(one, 0, one);
-  shiftLeftParsed("0x1234", 0, "0x1234");
-  shiftLeftParsed(zero, 100000, zero);
-  shiftLeftParsed(one, 1, "0x2");
-  shiftLeftParsed(one, 28, "0x10000000");
-  shiftLeftParsed(one, 32, "0x100000000");
-  shiftLeftParsed(one, 64, "0x10000000000000000");
-  shiftLeftParsed("0x5", 28, "0x50000000");
-  shiftLeftParsed("0x5", 32, "0x500000000");
-  shiftLeftParsed("0x5", 56, "0x500000000000000");
-  shiftLeftParsed("0x5", 64, "0x50000000000000000");
-  shiftLeftParsed("0x5", 128, "0x500000000000000000000000000000000");
-  shiftLeftParsed("0x5", 27, "0x28000000");
-  shiftLeftParsed("0x5", 31, "0x280000000");
-  shiftLeftParsed("0x5", 55, "0x280000000000000");
-  shiftLeftParsed("0x5", 63, "0x28000000000000000");
-  shiftLeftParsed("0x5", 127, "0x280000000000000000000000000000000");
-  shiftLeftParsed("0x8000001", 1, "0x10000002");
-  shiftLeftParsed("0x80000001", 1, "0x100000002");
-  shiftLeftParsed("0x8000000000000001", 1, "0x10000000000000002");
-  shiftLeftParsed("0x8000001", 29, "0x100000020000000");
-  shiftLeftParsed("0x80000001", 33, "0x10000000200000000");
-  shiftLeftParsed(
-      "0x8000000000000001", 65, "0x100000000000000020000000000000000");
-  shiftLeftParsed(minus_one, 0, minus_one);
-  shiftLeftParsed("-0x1234", 0, "-0x1234");
-  shiftLeftParsed(minus_one, 1, "-0x2");
-  shiftLeftParsed(minus_one, 28, "-0x10000000");
-  shiftLeftParsed(minus_one, 32, "-0x100000000");
-  shiftLeftParsed(minus_one, 64, "-0x10000000000000000");
-  shiftLeftParsed("-0x5", 28, "-0x50000000");
-  shiftLeftParsed("-0x5", 32, "-0x500000000");
-  shiftLeftParsed("-0x5", 64, "-0x50000000000000000");
-  shiftLeftParsed("-0x5", 27, "-0x28000000");
-  shiftLeftParsed("-0x5", 31, "-0x280000000");
-  shiftLeftParsed("-0x5", 63, "-0x28000000000000000");
-  shiftLeftParsed("-0x8000001", 1, "-0x10000002");
-  shiftLeftParsed("-0x80000001", 1, "-0x100000002");
-  shiftLeftParsed("-0x8000000000000001", 1, "-0x10000000000000002");
-  shiftLeftParsed("-0x8000001", 29, "-0x100000020000000");
-  shiftLeftParsed("-0x80000001", 33, "-0x10000000200000000");
-  shiftLeftParsed(
-      "-0x8000000000000001", 65, "-0x100000000000000020000000000000000");
-}
-
-shiftRightParsed(String a, int amount, String result) {
-  int int_a = int.parse(a);
-  int int_result = int.parse(result);
-  int shifted = int_a >> amount;
-  Expect.equals(int_result, shifted);
-  String str_shifted = shifted >= 0
-      ? "0x${shifted.toRadixString(16)}"
-      : "-0x${(-shifted).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_shifted);
-}
-
-testBigintRightShift() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  shiftRightParsed(one, 1, zero);
-  shiftRightParsed(minus_one, 1, minus_one);
-  shiftRightParsed("-0x2", 1, minus_one);
-  shiftRightParsed("0x12345678", 29, zero);
-  shiftRightParsed("-0x12345678", 29, minus_one);
-  shiftRightParsed("-0x12345678", 100, minus_one);
-  shiftRightParsed("0x5", 1, "0x2");
-  shiftRightParsed("0x5", 2, "0x1");
-  shiftRightParsed("-0x5", 1, "-0x3");
-  shiftRightParsed("-0x5", 2, "-0x2");
-  shiftRightParsed("0x10000001", 28, one);
-  shiftRightParsed("0x100000001", 32, one);
-  shiftRightParsed("0x10000000000000001", 64, one);
-  shiftRightParsed("-0x10000001", 28, "-0x2");
-  shiftRightParsed("-0x100000001", 32, "-0x2");
-  shiftRightParsed("-0x10000000000000001", 64, "-0x2");
-  shiftRightParsed("0x30000000", 29, one);
-  shiftRightParsed("0x300000000", 33, one);
-  shiftRightParsed("0x30000000000000000", 65, one);
-  shiftRightParsed("-0x30000000", 29, "-0x2");
-  shiftRightParsed("-0x300000000", 33, "-0x2");
-  shiftRightParsed("-0x30000000000000000", 65, "-0x2");
-}
-
-bitAndParsed(String a, String b, String result) {
-  int int_a = int.parse(a);
-  int int_b = int.parse(b);
-  int int_result = int.parse(result);
-  int anded = int_a & int_b;
-  Expect.equals(int_result, anded);
-  String str_anded = anded >= 0
-      ? "0x${anded.toRadixString(16)}"
-      : "-0x${(-anded).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_anded);
-  int anded2 = int_b & int_a;
-  Expect.equals(int_result, anded2);
-  String str_anded2 = anded2 >= 0
-      ? "0x${anded2.toRadixString(16)}"
-      : "-0x${(-anded2).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_anded2);
-}
-
-testBigintBitAnd() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  bitAndParsed(one, zero, zero);
-  bitAndParsed(one, one, one);
-  bitAndParsed(minus_one, zero, zero);
-  bitAndParsed(minus_one, one, one);
-  bitAndParsed(minus_one, minus_one, minus_one);
-  bitAndParsed("0x5", "0x3", one);
-  bitAndParsed("0x5", minus_one, "0x5");
-  bitAndParsed("0x50000000", one, zero);
-  bitAndParsed("0x50000000", minus_one, "0x50000000");
-  bitAndParsed("0x500000000", one, zero);
-  bitAndParsed("0x500000000", minus_one, "0x500000000");
-  bitAndParsed("0x50000000000000000", one, zero);
-  bitAndParsed("0x50000000000000000", minus_one, "0x50000000000000000");
-  bitAndParsed("-0x50000000", "-0x50000000", "-0x50000000");
-  bitAndParsed("-0x500000000", "-0x500000000", "-0x500000000");
-  bitAndParsed(
-      "-0x50000000000000000", "-0x50000000000000000", "-0x50000000000000000");
-  bitAndParsed("0x1234567890ABCDEF012345678", "0x876543210FEDCBA0987654321",
-      "0x224422000A9C9A0002244220");
-  bitAndParsed("-0x1234567890ABCDEF012345678", "-0x876543210FEDCBA0987654321",
-      "-0x977557799FEFCFEF997755778");
-  bitAndParsed("0x1234567890ABCDEF012345678", "-0x876543210FEDCBA0987654321",
-      "0x101014589002044F010101458");
-  bitAndParsed(
-      "0x1234567890ABCDEF012345678FFFFFFFFFFFFFFFFFFFFFFFFF",
-      "-0x876543210FEDCBA0987654321",
-      "0x1234567890ABCDEF012345678789ABCDEF012345F6789ABCDF");
-  bitAndParsed("0x12345678", "0xFFFFFFF", "0x2345678");
-  bitAndParsed("0x123456789", "0xFFFFFFFF", "0x23456789");
-  bitAndParsed("-0x10000000", "0xFFFFFFF", "0x0");
-  bitAndParsed("-0x100000000", "0xFFFFFFFF", "0x0");
-  bitAndParsed("-0x10000001", "0xFFFFFFF", "0xFFFFFFF");
-  bitAndParsed("-0x100000001", "0xFFFFFFFF", "0xFFFFFFFF");
-  bitAndParsed("-0x10000001", "0x3FFFFFFF", "0x2FFFFFFF");
-  bitAndParsed("-0x100000001", "0x3FFFFFFFF", "0x2FFFFFFFF");
-  bitAndParsed(
-      "-0x10000000000000001", "0x3FFFFFFFFFFFFFFFF", "0x2FFFFFFFFFFFFFFFF");
-  bitAndParsed("-0x100000000000000", "0xFFFFFFFFFFFFFF", "0x0");
-  bitAndParsed("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", "0x0");
-  bitAndParsed("-0x300000000000000", "0xFFFFFFFFFFFFFFF", "0xD00000000000000");
-  bitAndParsed(
-      "-0x30000000000000000", "0xFFFFFFFFFFFFFFFFF", "0xD0000000000000000");
-  bitAndParsed("-0x10000000", "-0x10000000", "-0x10000000");
-  bitAndParsed("-0x100000000", "-0x100000000", "-0x100000000");
-  bitAndParsed(
-      "-0x100000000000000", "-0x100000000000000", "-0x100000000000000");
-  bitAndParsed(
-      "-0x10000000000000000", "-0x10000000000000000", "-0x10000000000000000");
-  bitAndParsed("-0x3", "-0x2", "-0x4");
-  bitAndParsed("-0x10000000", "-0x10000001", "-0x20000000");
-  bitAndParsed("-0x100000000", "-0x100000001", "-0x200000000");
-  bitAndParsed(
-      "-0x100000000000000", "-0x100000000000001", "-0x200000000000000");
-  bitAndParsed(
-      "-0x10000000000000000", "-0x10000000000000001", "-0x20000000000000000");
-  bitAndParsed(
-      "0x123456789ABCDEF01234567890",
-      "0x3FFFFFFF", // Max Smi for 32 bits.
-      "0x34567890");
-  bitAndParsed(
-      "0x123456789ABCDEF01274567890",
-      "0x3FFFFFFF", // Max Smi for 32 bits.
-      "0x34567890");
-  bitAndParsed(
-      "0x123456789ABCDEF01234567890",
-      "0x40000000", // Max Smi for 32 bits + 1.
-      "0x0");
-  bitAndParsed(
-      "0x123456789ABCDEF01274567890",
-      "0x40000000", // Max Smi for 32 bits + 1.
-      "0x40000000");
-  bitAndParsed(
-      "0x123456789ABCDEF01234567890",
-      "0x3FFFFFFFFFFFFFFF", // Max Smi for 64 bits.
-      "0x3CDEF01234567890");
-  bitAndParsed(
-      "0x123456789ACCDEF01234567890",
-      "0x4000000000000000", // Max Smi for 64 bits + 1.
-      "0x4000000000000000");
-  bitAndParsed(
-      "0x123456789ABCDEF01234567890",
-      "0x4000000000000000", // Max Smi for 64 bits + 1.
-      "0x0");
-}
-
-bitOrParsed(String a, String b, String result) {
-  int int_a = int.parse(a);
-  int int_b = int.parse(b);
-  int int_result = int.parse(result);
-  int ored = int_a | int_b;
-  Expect.equals(int_result, ored);
-  String str_ored = ored >= 0
-      ? "0x${ored.toRadixString(16)}"
-      : "-0x${(-ored).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_ored);
-  int ored2 = int_b | int_a;
-  Expect.equals(int_result, ored2);
-  String str_ored2 = ored2 >= 0
-      ? "0x${ored2.toRadixString(16)}"
-      : "-0x${(-ored2).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_ored2);
-}
-
-testBigintBitOr() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  bitOrParsed(one, zero, one);
-  bitOrParsed(one, one, one);
-  bitOrParsed(minus_one, zero, minus_one);
-  bitOrParsed(minus_one, one, minus_one);
-  bitOrParsed(minus_one, minus_one, minus_one);
-  bitOrParsed("-0x3", one, "-0x3");
-  bitOrParsed("0x5", "0x3", "0x7");
-  bitOrParsed("0x5", minus_one, minus_one);
-  bitOrParsed("0x5", zero, "0x5");
-  bitOrParsed("0x50000000", one, "0x50000001");
-  bitOrParsed("0x50000000", minus_one, minus_one);
-  bitOrParsed("0x500000000", one, "0x500000001");
-  bitOrParsed("0x500000000", minus_one, minus_one);
-  bitOrParsed("0x50000000000000000", one, "0x50000000000000001");
-  bitOrParsed("0x50000000000000000", minus_one, minus_one);
-  bitOrParsed("-0x50000000", "-0x50000000", "-0x50000000");
-  bitOrParsed("-0x500000000", "-0x500000000", "-0x500000000");
-  bitOrParsed(
-      "-0x50000000000000000", "-0x50000000000000000", "-0x50000000000000000");
-  bitOrParsed("0x1234567890ABCDEF012345678", "0x876543210FEDCBA0987654321",
-      "0x977557799FEFCFEF997755779");
-  bitOrParsed("-0x1234567890ABCDEF012345678", "-0x876543210FEDCBA0987654321",
-      "-0x224422000A9C9A0002244221");
-  bitOrParsed("0x1234567890ABCDEF012345678", "-0x876543210FEDCBA0987654321",
-      "-0x854101010F440200985410101");
-  bitOrParsed("0x1234567890ABCDEF012345678FFFFFFFFFFFFFFFFFFFFFFFFF",
-      "-0x876543210FEDCBA0987654321", "-0x1");
-  bitOrParsed("0x12345678", "0xFFFFFFF", "0x1FFFFFFF");
-  bitOrParsed("0x123456789", "0xFFFFFFFF", "0x1FFFFFFFF");
-  bitOrParsed("-0x10000000", "0xFFFFFFF", "-0x1");
-  bitOrParsed("-0x100000000", "0xFFFFFFFF", "-0x1");
-  bitOrParsed("-0x10000001", "0xFFFFFFF", "-0x10000001");
-  bitOrParsed("-0x100000001", "0xFFFFFFFF", "-0x100000001");
-  bitOrParsed("-0x10000001", "0x3FFFFFFF", "-0x1");
-  bitOrParsed("-0x100000001", "0x3FFFFFFFF", "-0x1");
-  bitOrParsed("-0x10000000000000001", "0x3FFFFFFFFFFFFFFFF", "-0x1");
-  bitOrParsed("-0x100000000000000", "0xFFFFFFFFFFFFFF", "-0x1");
-  bitOrParsed("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", "-0x1");
-  bitOrParsed("-0x300000000000000", "0xFFFFFFFFFFFFFFF", "-0x1");
-  bitOrParsed("-0x30000000000000000", "0xFFFFFFFFFFFFFFFFF", "-0x1");
-  bitOrParsed("-0x10000000", "-0x10000000", "-0x10000000");
-  bitOrParsed("-0x100000000", "-0x100000000", "-0x100000000");
-  bitOrParsed("-0x100000000000000", "-0x100000000000000", "-0x100000000000000");
-  bitOrParsed(
-      "-0x10000000000000000", "-0x10000000000000000", "-0x10000000000000000");
-  bitOrParsed("-0x10000000", "-0x10000001", "-0x1");
-  bitOrParsed("-0x100000000", "-0x100000001", "-0x1");
-  bitOrParsed("-0x100000000000000", "-0x100000000000001", "-0x1");
-  bitOrParsed("-0x10000000000000000", "-0x10000000000000001", "-0x1");
-  bitOrParsed("-0x10000000000000000", "-0x1", "-0x1");
-}
-
-bitXorParsed(String a, String b, String result) {
-  int int_a = int.parse(a);
-  int int_b = int.parse(b);
-  int int_result = int.parse(result);
-  int xored = int_a ^ int_b;
-  Expect.equals(int_result, xored);
-  String str_xored = xored >= 0
-      ? "0x${xored.toRadixString(16)}"
-      : "-0x${(-xored).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_xored);
-  int xored2 = int_b ^ int_a;
-  Expect.equals(int_result, xored2);
-  String str_xored2 = xored2 >= 0
-      ? "0x${xored2.toRadixString(16)}"
-      : "-0x${(-xored2).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_xored2);
-  int xored3 = int_a ^ xored2;
-  Expect.equals(int_b, xored3);
-  String str_xored3 = xored3 >= 0
-      ? "0x${xored3.toRadixString(16)}"
-      : "-0x${(-xored3).toRadixString(16)}";
-  Expect.equals(b.toLowerCase(), str_xored3);
-}
-
-testBigintBitXor() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  bitXorParsed(one, zero, one);
-  bitXorParsed(one, one, zero);
-  bitXorParsed(minus_one, zero, minus_one);
-  bitXorParsed(minus_one, one, "-0x2");
-  bitXorParsed(minus_one, minus_one, zero);
-  bitXorParsed("0x5", "0x3", "0x6");
-  bitXorParsed("0x5", minus_one, "-0x6");
-  bitXorParsed("0x5", zero, "0x5");
-  bitXorParsed(minus_one, "-0x8", "0x7");
-  bitXorParsed("0x50000000", one, "0x50000001");
-  bitXorParsed("0x50000000", minus_one, "-0x50000001");
-  bitXorParsed("0x500000000", one, "0x500000001");
-  bitXorParsed("0x500000000", minus_one, "-0x500000001");
-  bitXorParsed("0x50000000000000000", one, "0x50000000000000001");
-  bitXorParsed("0x50000000000000000", minus_one, "-0x50000000000000001");
-  bitXorParsed("-0x50000000", "-0x50000000", zero);
-  bitXorParsed("-0x500000000", "-0x500000000", zero);
-  bitXorParsed("-0x50000000000000000", "-0x50000000000000000", zero);
-  bitXorParsed("0x1234567890ABCDEF012345678", "0x876543210FEDCBA0987654321",
-      "0x955115599F46064F995511559");
-  bitXorParsed("-0x1234567890ABCDEF012345678", "-0x876543210FEDCBA0987654321",
-      "0x955115599F46064F995511557");
-  bitXorParsed("0x1234567890ABCDEF012345678", "-0x876543210FEDCBA0987654321",
-      "-0x955115599F46064F995511559");
-  bitXorParsed(
-      "0x1234567890ABCDEF012345678FFFFFFFFFFFFFFFFFFFFFFFFF",
-      "-0x876543210FEDCBA0987654321",
-      "-0x1234567890ABCDEF012345678789ABCDEF012345F6789ABCE0");
-  bitXorParsed("0x12345678", "0xFFFFFFF", "0x1DCBA987");
-  bitXorParsed("0x123456789", "0xFFFFFFFF", "0x1DCBA9876");
-  bitXorParsed("-0x10000000", "0xFFFFFFF", "-0x1");
-  bitXorParsed("-0x100000000", "0xFFFFFFFF", "-0x1");
-  bitXorParsed("-0x10000001", "0xFFFFFFF", "-0x20000000");
-  bitXorParsed("-0x100000001", "0xFFFFFFFF", "-0x200000000");
-  bitXorParsed("-0x10000001", "0x3FFFFFFF", "-0x30000000");
-  bitXorParsed("-0x100000001", "0x3FFFFFFFF", "-0x300000000");
-  bitXorParsed(
-      "-0x10000000000000001", "0x3FFFFFFFFFFFFFFFF", "-0x30000000000000000");
-  bitXorParsed("-0x100000000000000", "0xFFFFFFFFFFFFFF", "-0x1");
-  bitXorParsed("-0x10000000000000000", "0xFFFFFFFFFFFFFFFF", "-0x1");
-  bitXorParsed("-0x300000000000000", "0xFFFFFFFFFFFFFFF", "-0xD00000000000001");
-  bitXorParsed(
-      "-0x30000000000000000", "0xFFFFFFFFFFFFFFFFF", "-0xD0000000000000001");
-  bitXorParsed("-0x10000000", "-0x10000000", zero);
-  bitXorParsed("-0x100000000", "-0x100000000", zero);
-  bitXorParsed("-0x100000000000000", "-0x100000000000000", zero);
-  bitXorParsed("-0x10000000000000000", "-0x10000000000000000", zero);
-  bitXorParsed("-0x10000000", "-0x10000001", "0x1FFFFFFF");
-  bitXorParsed("-0x100000000", "-0x100000001", "0x1FFFFFFFF");
-  bitXorParsed("-0x100000000000000", "-0x100000000000001", "0x1FFFFFFFFFFFFFF");
-  bitXorParsed(
-      "-0x10000000000000000", "-0x10000000000000001", "0x1FFFFFFFFFFFFFFFF");
-}
-
-bitNotParsed(String a, String result) {
-  int int_a = int.parse(a);
-  int int_result = int.parse(result);
-  int inverted = ~int_a;
-  Expect.equals(int_result, inverted);
-  String str_inverted = inverted >= 0
-      ? "0x${inverted.toRadixString(16)}"
-      : "-0x${(-inverted).toRadixString(16)}";
-  Expect.equals(result.toLowerCase(), str_inverted);
-  int back = ~inverted;
-  Expect.equals(int_a, back);
-  String str_back = back >= 0
-      ? "0x${back.toRadixString(16)}"
-      : "-0x${(-back).toRadixString(16)}";
-  Expect.equals(a.toLowerCase(), str_back);
-}
-
-testBigintBitNot() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  bitNotParsed(zero, minus_one);
-  bitNotParsed(one, "-0x2");
-  bitNotParsed("0x5", "-0x6");
-  bitNotParsed("0x50000000", "-0x50000001");
-  bitNotParsed("0xFFFFFFF", "-0x10000000");
-  bitNotParsed("0xFFFFFFFF", "-0x100000000");
-  bitNotParsed("0xFFFFFFFFFFFFFF", "-0x100000000000000");
-  bitNotParsed("0xFFFFFFFFFFFFFFFF", "-0x10000000000000000");
-  bitNotParsed("0x1234567890ABCDEF012345678", "-0x1234567890ABCDEF012345679");
-}
-
-main() {
-  testBigintAddSub();
-  testBigintLeftShift();
-  testBigintRightShift();
-  testBigintBitAnd();
-  testBigintBitOr();
-  testBigintBitXor();
-  testBigintBitNot();
-}
diff --git a/tests/corelib/big_integer_parsed_div_rem_vm_test.dart b/tests/corelib/big_integer_parsed_div_rem_vm_test.dart
deleted file mode 100644
index 551b7a7..0000000
--- a/tests/corelib/big_integer_parsed_div_rem_vm_test.dart
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Testing Bigints with and without intrinsics.
-// VMOptions=
-// VMOptions=--no_intrinsify
-
-library big_integer_test;
-
-import "package:expect/expect.dart";
-
-divRemParsed(String a, String b, String quotient, String remainder) {
-  int int_a = int.parse(a);
-  int int_b = int.parse(b);
-  int int_quotient = int.parse(quotient);
-  int int_remainder = int.parse(remainder);
-  int computed_quotient = int_a ~/ int_b;
-  Expect.equals(int_quotient, computed_quotient);
-  String str_quotient = computed_quotient >= 0
-      ? "0x${computed_quotient.toRadixString(16)}"
-      : "-0x${(-computed_quotient).toRadixString(16)}";
-  Expect.equals(quotient.toLowerCase(), str_quotient);
-  int computed_remainder = int_a.remainder(int_b);
-  Expect.equals(int_remainder, computed_remainder);
-  String str_remainder = computed_remainder >= 0
-      ? "0x${computed_remainder.toRadixString(16)}"
-      : "-0x${(-computed_remainder).toRadixString(16)}";
-  Expect.equals(remainder.toLowerCase(), str_remainder);
-}
-
-testBigintDivideRemainder() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  divRemParsed(one, one, one, zero);
-  divRemParsed(zero, one, zero, zero);
-  divRemParsed(minus_one, one, minus_one, zero);
-  divRemParsed(one, "0x2", zero, one);
-  divRemParsed(minus_one, "0x7", zero, minus_one);
-  divRemParsed("0xB", "0x7", one, "0x4");
-  divRemParsed("0x12345678", "0x7", "0x299C335", "0x5");
-  divRemParsed("-0x12345678", "0x7", "-0x299C335", "-0x5");
-  divRemParsed("0x12345678", "-0x7", "-0x299C335", "0x5");
-  divRemParsed("-0x12345678", "-0x7", "0x299C335", "-0x5");
-  divRemParsed("0x7", "0x12345678", zero, "0x7");
-  divRemParsed("-0x7", "0x12345678", zero, "-0x7");
-  divRemParsed("-0x7", "-0x12345678", zero, "-0x7");
-  divRemParsed("0x7", "-0x12345678", zero, "0x7");
-  divRemParsed("0x12345678", "0x7", "0x299C335", "0x5");
-  divRemParsed("-0x12345678", "0x7", "-0x299C335", "-0x5");
-  divRemParsed("0x12345678", "-0x7", "-0x299C335", "0x5");
-  divRemParsed("-0x12345678", "-0x7", "0x299C335", "-0x5");
-  divRemParsed(
-      "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2"
-      "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A"
-      "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F"
-      "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B"
-      "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57"
-      "0F4A8F0B570F4A8F0B570F4A8F0B570F35D89D93E776C67DD864B2034B5C739007933027"
-      "5CDFD41E07A15D0F5AD5256BED5F1CF91FBA375DE70",
-      "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
-      "01234567890ABCDEF",
-      "0x1234567890123456789012345678901234567890123456789012345678901234567890"
-      "123456789012345678901234567890123456789012345678901234567890123456789012"
-      "345678901234567890123456789012345678901234567890123456789012345678901234"
-      "567890123456789012345678901234567890123456789012345678901234567890123456"
-      "789012345678901234567890123456789012345678901234567890123456789012345678"
-      "90123456789012345678901234567890",
-      zero);
-  divRemParsed(
-      "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2"
-      "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A"
-      "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F"
-      "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B"
-      "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57"
-      "0F4A8F0B570F4A8F0B570F4A8F0B570F35D89D93E776C67DD864B2034B5C739007933027"
-      "5CDFD41E07A15D0F5AD5256BED5F1CF91FBA375DE71",
-      "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
-      "01234567890ABCDEF",
-      "0x1234567890123456789012345678901234567890123456789012345678901234567890"
-      "123456789012345678901234567890123456789012345678901234567890123456789012"
-      "345678901234567890123456789012345678901234567890123456789012345678901234"
-      "567890123456789012345678901234567890123456789012345678901234567890123456"
-      "789012345678901234567890123456789012345678901234567890123456789012345678"
-      "90123456789012345678901234567890",
-      one);
-  divRemParsed(
-      "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2"
-      "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A"
-      "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F"
-      "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B"
-      "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57"
-      "0F4A8F0B570F4A8F0B570F4A8F0B5710591E051CF233A56DEA99087BDC08417F08B6758E"
-      "E5EA90FCF7B39165D365D139DC60403E8743421AC5E",
-      "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
-      "01234567890ABCDEF",
-      "0x1234567890123456789012345678901234567890123456789012345678901234567890"
-      "123456789012345678901234567890123456789012345678901234567890123456789012"
-      "345678901234567890123456789012345678901234567890123456789012345678901234"
-      "567890123456789012345678901234567890123456789012345678901234567890123456"
-      "789012345678901234567890123456789012345678901234567890123456789012345678"
-      "90123456789012345678901234567890",
-      "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
-      "01234567890ABCDEE");
-}
-
-main() {
-  testBigintDivideRemainder();
-}
diff --git a/tests/corelib/big_integer_parsed_mul_div_vm_test.dart b/tests/corelib/big_integer_parsed_mul_div_vm_test.dart
deleted file mode 100644
index 522c758..0000000
--- a/tests/corelib/big_integer_parsed_mul_div_vm_test.dart
+++ /dev/null
@@ -1,804 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Testing Bigints with and without intrinsics.
-// VMOptions=
-// VMOptions=--no_intrinsify
-
-library big_integer_test;
-
-import "package:expect/expect.dart";
-
-mulDivParsed(String a, String b, String product) {
-  int int_a = int.parse(a);
-  int int_b = int.parse(b);
-  int int_product = int.parse(product);
-  int computed_product = int_a * int_b;
-  Expect.equals(int_product, computed_product);
-  String str_product = computed_product >= 0
-      ? "0x${computed_product.toRadixString(16)}"
-      : "-0x${(-computed_product).toRadixString(16)}";
-  Expect.equals(product.toLowerCase(), str_product);
-  int computed_product2 = int_b * int_a;
-  Expect.equals(int_product, computed_product2);
-  String str_product2 = computed_product2 >= 0
-      ? "0x${computed_product2.toRadixString(16)}"
-      : "-0x${(-computed_product2).toRadixString(16)}";
-  Expect.equals(product.toLowerCase(), str_product2);
-
-  if (int_a != 0) {
-    int computed_quotient1 = int_product ~/ int_a;
-    Expect.equals(int_b, computed_quotient1);
-    String str_quotient1 = computed_quotient1 >= 0
-        ? "0x${computed_quotient1.toRadixString(16)}"
-        : "-0x${(-computed_quotient1).toRadixString(16)}";
-    Expect.equals(b.toLowerCase(), str_quotient1);
-  }
-
-  if (int_b != 0) {
-    int computed_quotient2 = int_product ~/ int_b;
-    Expect.equals(int_a, computed_quotient2);
-    String str_quotient2 = computed_quotient2 >= 0
-        ? "0x${computed_quotient2.toRadixString(16)}"
-        : "-0x${(-computed_quotient2).toRadixString(16)}";
-    Expect.equals(a.toLowerCase(), str_quotient2);
-  }
-}
-
-testBigintMultiplyDivide() {
-  String zero = "0x0";
-  String one = "0x1";
-  String minus_one = "-0x1";
-
-  mulDivParsed(zero, zero, zero);
-  mulDivParsed(one, one, one);
-  mulDivParsed(one, zero, zero);
-  mulDivParsed(zero, one, zero);
-  mulDivParsed(one, minus_one, minus_one);
-  mulDivParsed(minus_one, minus_one, one);
-  mulDivParsed("0x42", one, "0x42");
-  mulDivParsed("0x42", "0x2", "0x84");
-  mulDivParsed("0xFFFF", "0x2", "0x1FFFE");
-  mulDivParsed("0x3", "0x5", "0xF");
-  mulDivParsed("0xFFFFF", "0x5", "0x4FFFFB");
-  mulDivParsed("0xFFFFFFF", "0x5", "0x4FFFFFFB");
-  mulDivParsed("0xFFFFFFFF", "0x5", "0x4FFFFFFFB");
-  mulDivParsed("0xFFFFFFFFFFFFFFFF", "0x5", "0x4FFFFFFFFFFFFFFFB");
-  mulDivParsed("0xFFFFFFFFFFFFFFFF", "0x3039", "0x3038FFFFFFFFFFFFCFC7");
-  mulDivParsed("0xFFFFFFFFFFFFFFFF", "0xFFFFFFFFFFFFFFFFFFFFFFFFFF",
-      "0xFFFFFFFFFFFFFFFEFFFFFFFFFF0000000000000001");
-  mulDivParsed(
-      "0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000",
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000",
-      "0xFFFFFFFFFFFFFFFEFFFFFFFFFF000000000000000100000000000000"
-      "000000000000000000000000000000000000000000000000000000000000");
-  mulDivParsed("0x10000001", "0x5", "0x50000005");
-  mulDivParsed(
-      "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
-      "01234567890ABCDEF01234567890ABCDEF",
-      "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
-      "01234567890ABCDEF01234567890ABCDEF",
-      "0x14B66DC328828BCA670CBE52943AA3894CCCE15C8F5ED1E55F"
-      "328F6D3F579F992299850C4B5B95213EF3FB7B4E73B5F43D4299"
-      "5B9F6FD5441C275F2FF89F86F28F47A94CA37481090DCCCDCA6475F09A2F2A521");
-  mulDivParsed(
-      "0x1234567890ABCDEF01234567890ABCDEF01234567890ABCDEF01234567890ABCDEF"
-      "01234567890ABCDEF",
-      "0x1234567890123456789012345678901234567890123456789012345678901234567890"
-      "123456789012345678901234567890123456789012345678901234567890123456789012"
-      "345678901234567890123456789012345678901234567890123456789012345678901234"
-      "567890123456789012345678901234567890123456789012345678901234567890123456"
-      "789012345678901234567890123456789012345678901234567890123456789012345678"
-      "90123456789012345678901234567890",
-      "0x14B66DC327D3C88D7EAA988BBFFA9BBA877826E7EDAF373907A931FBFC3A25231DF7F2"
-      "516F511FB1638F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A"
-      "8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F"
-      "0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B"
-      "570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B570F4A8F0B57"
-      "0F4A8F0B570F4A8F0B570F4A8F0B570F35D89D93E776C67DD864B2034B5C739007933027"
-      "5CDFD41E07A15D0F5AD5256BED5F1CF91FBA375DE70");
-  mulDivParsed(
-      "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFF",
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
-      "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000000001");
-  mulDivParsed(
-      "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFF",
-      "0x1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFF",
-      "0x3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFC0000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000001");
-
-  // A 256 28-bit digits number squared.
-  mulDivParsed(
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000001");
-
-  mulDivParsed(
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF",
-      "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
-      "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "000000000000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000001");
-}
-
-main() {
-  testBigintMultiplyDivide();
-}
diff --git a/tests/corelib/bit_twiddling_bigint_test.dart b/tests/corelib/bit_twiddling_bigint_test.dart
deleted file mode 100644
index a67ccae..0000000
--- a/tests/corelib/bit_twiddling_bigint_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2013, 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.
-// Testing Bigints.
-
-library bit_twiddling_test;
-
-import "package:expect/expect.dart";
-
-// See bit_twiddling_test.dart first.  This file contains only the tests that
-// need Bigint or would fail in dart2js compatibility mode.
-
-testBitLength() {
-  check(int i, width) {
-    Expect.equals(width, i.bitLength, '$i.bitLength ==  $width');
-    // (~i) written as (-i-1) to avoid issues with limited range of dart2js ops.
-    Expect.equals(width, (-i - 1).bitLength, '(~$i).bitLength == $width');
-  }
-
-  check(0xffffffffffffff, 56);
-  check(0xffffffffffffffff, 64);
-  check(0xffffffffffffffffff, 72);
-  check(0x1000000000000000000, 73);
-  check(0x1000000000000000001, 73);
-
-  check(0xfffffffffffffffffffffffffffffffffffffe, 152);
-  check(0xffffffffffffffffffffffffffffffffffffff, 152);
-  check(0x100000000000000000000000000000000000000, 153);
-  check(0x100000000000000000000000000000000000001, 153);
-}
-
-testToUnsigned() {
-  checkU(src, width, expected) {
-    Expect.equals(expected, src.toUnsigned(width));
-  }
-
-  checkU(0x100000100000000000001, 2, 1);
-  checkU(0x100000200000000000001, 60, 0x200000000000001);
-  checkU(0x100000200000000000001, 59, 0x200000000000001);
-  checkU(0x100000200000000000001, 58, 0x200000000000001);
-  checkU(0x100000200000000000001, 57, 1);
-}
-
-testToSigned() {
-  checkS(src, width, expected) {
-    Expect.equals(
-        expected, src.toSigned(width), '$src.toSigned($width) == $expected');
-  }
-
-  checkS(0x100000100000000000001, 2, 1);
-  checkS(0x100000200000000000001, 60, 0x200000000000001);
-  checkS(0x100000200000000000001, 59, 0x200000000000001);
-  checkS(0x100000200000000000001, 58, -0x200000000000000 + 1);
-  checkS(0x100000200000000000001, 57, 1);
-}
-
-main() {
-  testBitLength();
-  testToUnsigned();
-  testToSigned();
-}
diff --git a/tests/corelib/bit_twiddling_test.dart b/tests/corelib/bit_twiddling_test.dart
deleted file mode 100644
index b78d85e5..0000000
--- a/tests/corelib/bit_twiddling_test.dart
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright (c) 2013, 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.
-// Testing Bigints.
-
-library bit_twiddling_test;
-
-import "package:expect/expect.dart";
-
-bool haveBigints() {
-  return 100000000000000000000 + 1 != 100000000000000000000;
-}
-
-testBitLength() {
-  check(int i, width) {
-    Expect.equals(width, i.bitLength, '$i.bitLength ==  $width');
-    // (~i) written as (-i-1) to avoid issues with limited range of dart2js ops.
-    Expect.equals(width, (-i - 1).bitLength, '(~$i).bitLength == $width');
-  }
-
-  check(0, 0);
-  check(1, 1);
-  check(2, 2);
-  check(3, 2);
-  check(4, 3);
-  check(5, 3);
-  check(6, 3);
-  check(7, 3);
-  check(8, 4);
-  check(127, 7);
-  check(128, 8);
-  check(129, 8);
-  check(2147483646, 31);
-  check(2147483647, 31);
-  check(2147483648, 32);
-  check(2147483649, 32);
-  check(4294967295, 32);
-  check(4294967296, 33);
-  check(0xffffffffff, 40);
-  check(0xfffffffffff, 44);
-  check(0xffffffffffff, 48);
-  check(0x1000000000000, 49);
-  check(0x1000000000001, 49);
-  check(0x1ffffffffffff, 49);
-  check(0x2000000000000, 50);
-  check(0x2000000000001, 50);
-
-  if (haveBigints()) {
-    check(0xffffffffffffff, 56);
-    check(0xffffffffffffffff, 64);
-    check(0xffffffffffffffffff, 72);
-    check(0x1000000000000000000, 73);
-    check(0x1000000000000000001, 73);
-
-    check(0xfffffffffffffffffffffffffffffffffffffe, 152);
-    check(0xffffffffffffffffffffffffffffffffffffff, 152);
-    check(0x100000000000000000000000000000000000000, 153);
-    check(0x100000000000000000000000000000000000001, 153);
-  }
-}
-
-testToUnsigned() {
-  checkU(src, width, expected) {
-    Expect.equals(expected, src.toUnsigned(width));
-  }
-
-  checkU(1, 8, 1);
-  checkU(0xff, 8, 0xff);
-  checkU(0xffff, 8, 0xff);
-  checkU(-1, 8, 0xff);
-  checkU(0xffffffff, 32, 0xffffffff);
-
-  checkU(0x7fffffff, 30, 0x3fffffff);
-  checkU(0x7fffffff, 31, 0x7fffffff);
-  checkU(0x7fffffff, 32, 0x7fffffff);
-  checkU(0x80000000, 30, 0);
-  checkU(0x80000000, 31, 0);
-  checkU(0x80000000, 32, 0x80000000);
-  checkU(0xffffffff, 30, 0x3fffffff);
-  checkU(0xffffffff, 31, 0x7fffffff);
-  checkU(0xffffffff, 32, 0xffffffff);
-  checkU(0x100000000, 30, 0);
-  checkU(0x100000000, 31, 0);
-  checkU(0x100000000, 32, 0);
-  checkU(0x1ffffffff, 30, 0x3fffffff);
-  checkU(0x1ffffffff, 31, 0x7fffffff);
-  checkU(0x1ffffffff, 32, 0xffffffff);
-
-  checkU(-1, 0, 0);
-  checkU(0, 0, 0);
-  checkU(1, 0, 0);
-  checkU(2, 0, 0);
-  checkU(3, 0, 0);
-
-  checkU(-1, 1, 1);
-  checkU(0, 1, 0);
-  checkU(1, 1, 1);
-  checkU(2, 1, 0);
-  checkU(3, 1, 1);
-  checkU(4, 1, 0);
-
-  checkU(-1, 2, 3);
-  checkU(0, 2, 0);
-  checkU(1, 2, 1);
-  checkU(2, 2, 2);
-  checkU(3, 2, 3);
-  checkU(4, 2, 0);
-
-  checkU(-1, 3, 7);
-  checkU(0, 3, 0);
-  checkU(1, 3, 1);
-  checkU(2, 3, 2);
-  checkU(3, 3, 3);
-  checkU(4, 3, 4);
-}
-
-testToSigned() {
-  checkS(src, width, expected) {
-    Expect.equals(
-        expected, src.toSigned(width), '$src.toSigned($width) == $expected');
-  }
-
-  checkS(1, 8, 1);
-  checkS(0xff, 8, -1);
-  checkS(0xffff, 8, -1);
-  checkS(-1, 8, -1);
-  checkS(128, 8, -128);
-  checkS(0xffffffff, 32, -1);
-
-  checkS(0x7fffffff, 30, -1);
-  checkS(0x7fffffff, 31, -1);
-  checkS(0x7fffffff, 32, 0x7fffffff);
-  checkS(0x80000000, 30, 0);
-  checkS(0x80000000, 31, 0);
-  checkS(0x80000000, 32, -2147483648);
-  checkS(0xffffffff, 30, -1);
-  checkS(0xffffffff, 31, -1);
-  checkS(0xffffffff, 32, -1);
-
-  checkS(0x100000000, 30, 0);
-  checkS(0x100000000, 31, 0);
-  checkS(0x100000000, 32, 0);
-  checkS(0x1ffffffff, 30, -1);
-  checkS(0x1ffffffff, 31, -1);
-  checkS(0x1ffffffff, 32, -1);
-
-  checkS(-1, 1, -1);
-  checkS(0, 1, 0);
-  checkS(1, 1, -1); // The only bit is the sign bit.
-  checkS(2, 1, 0);
-  checkS(3, 1, -1);
-  checkS(4, 1, 0);
-
-  checkS(-1, 2, -1);
-  checkS(0, 2, 0);
-  checkS(1, 2, 1);
-  checkS(2, 2, -2);
-  checkS(3, 2, -1);
-  checkS(4, 2, 0);
-
-  checkS(-1, 3, -1);
-  checkS(0, 3, 0);
-  checkS(1, 3, 1);
-  checkS(2, 3, 2);
-  checkS(3, 3, 3);
-  checkS(4, 3, -4);
-}
-
-main() {
-  testBitLength();
-  testToUnsigned();
-  testToSigned();
-}
diff --git a/tests/corelib/bool_from_environment2_test.dart b/tests/corelib/bool_from_environment2_test.dart
deleted file mode 100644
index 0329c54..0000000
--- a/tests/corelib/bool_from_environment2_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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.
-
-main() {
-  const bool.fromEnvironment('NOT_FOUND', defaultValue: ''); // //# 01: compile-time error
-  const bool.fromEnvironment('NOT_FOUND', defaultValue: 1); // //# 02: compile-time error
-  const bool.fromEnvironment(null); // //# 03: compile-time error
-  const bool.fromEnvironment(1); // //# 04: compile-time error
-  const bool.fromEnvironment([]); // //# 05: compile-time error
-}
diff --git a/tests/corelib/bool_from_environment_test.dart b/tests/corelib/bool_from_environment_test.dart
deleted file mode 100644
index 5d01bde..0000000
--- a/tests/corelib/bool_from_environment_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-// SharedOptions=-Da=true -Db=false -Dc=NOTBOOL -Dd=True
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.isTrue(const bool.fromEnvironment('a'));
-  Expect.isFalse(const bool.fromEnvironment('b'));
-  Expect.isTrue(const bool.fromEnvironment('c', defaultValue: true));
-  Expect.isFalse(const bool.fromEnvironment('c', defaultValue: false));
-  Expect.isFalse(const bool.fromEnvironment('d', defaultValue: false));
-  Expect.equals(const bool.fromEnvironment('dart.isVM'), !identical(1.0, 1));
-}
diff --git a/tests/corelib/bool_hashcode_test.dart b/tests/corelib/bool_hashcode_test.dart
deleted file mode 100644
index d33b14a..0000000
--- a/tests/corelib/bool_hashcode_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-class BoolHashCodeTest {
-  static testMain() {
-    Expect.notEquals(true.hashCode, false.hashCode);
-  }
-}
-
-main() {
-  BoolHashCodeTest.testMain();
-}
diff --git a/tests/corelib/collection_from_test.dart b/tests/corelib/collection_from_test.dart
deleted file mode 100644
index 057d4e2..0000000
--- a/tests/corelib/collection_from_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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 collection.from.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue;
-
-class CollectionFromTest {
-  static testMain() {
-    var set = new Set<int>();
-    set.add(1);
-    set.add(2);
-    set.add(4);
-    check(set, new List<int>.from(set));
-    check(set, new List.from(set));
-    check(set, new Queue<int>.from(set));
-    check(set, new Queue.from(set));
-    check(set, new Set<int>.from(set));
-    check(set, new Set.from(set));
-  }
-
-  static check(Iterable initial, Iterable other) {
-    Expect.equals(3, initial.length);
-    Expect.equals(initial.length, other.length);
-
-    int initialSum = 0;
-    int otherSum = 0;
-
-    initial.forEach((e) {
-      initialSum += e;
-    });
-    other.forEach((e) {
-      otherSum += e;
-    });
-    Expect.equals(4 + 2 + 1, otherSum);
-    Expect.equals(otherSum, initialSum);
-  }
-}
-
-main() {
-  CollectionFromTest.testMain();
-}
diff --git a/tests/corelib/collection_length_test.dart b/tests/corelib/collection_length_test.dart
deleted file mode 100644
index 8d618fd..0000000
--- a/tests/corelib/collection_length_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2013, 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 map_test;
-
-import 'dart:collection';
-
-// Test that length/isEmpty opertions are constant time on
-// maps, strings and collections.
-
-void testString(int n) {
-  String s = "x";
-  String string = "";
-  int length = n;
-  while (true) {
-    if ((length & 1) == 1) {
-      string += s;
-    }
-    length >>= 1;
-    if (length == 0) break;
-    s += s;
-  }
-  testLength(string, n);
-  testLength(string.codeUnits, n);
-}
-
-void testMap(Map map, int n) {
-  for (int i = 0; i < n; i++) {
-    map[i] = i;
-  }
-  testLength(map, n);
-  testLength(map.keys, n);
-  testLength(map.values, n);
-}
-
-void testCollection(var collection, n) {
-  for (int i = 0; i < n; i++) {
-    collection.add(i);
-  }
-  testLength(collection, n);
-}
-
-void testList(List list, n) {
-  // Works even if list is fixed-length.
-  for (int i = 0; i < n; i++) {
-    list[i] = i;
-  }
-  testLength(list, n);
-}
-
-void testLength(var lengthable, int size) {
-  print(lengthable.runtimeType); // Show what hangs the test.
-  int length = 0;
-  // If length, isEmpty or isNotEmpty is not a constant-time (or very fast)
-  // operation, this will timeout.
-  for (int i = 0; i < 100000; i++) {
-    if (!lengthable.isEmpty) length += lengthable.length;
-    if (lengthable.isNotEmpty) length += lengthable.length;
-  }
-  if (length != size * 200000) throw "Bad length: $length / size: $size";
-}
-
-main() {
-  const int N = 100000;
-  testMap(new HashMap(), N);
-  testMap(new LinkedHashMap(), N);
-  testMap(new SplayTreeMap(), N);
-  testCollection(new HashSet(), N);
-  testCollection(new LinkedHashSet(), N);
-  testCollection(new ListQueue(), N);
-  testCollection(new DoubleLinkedQueue(), N);
-  testList(new List()..length = N, N);
-  testList(new List(N), N);
-  testString(N);
-}
diff --git a/tests/corelib/collection_removes_test.dart b/tests/corelib/collection_removes_test.dart
deleted file mode 100644
index 793696d..0000000
--- a/tests/corelib/collection_removes_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2011, 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:collection';
-import "package:expect/expect.dart";
-
-testRemove(base) {
-  int length = base.length;
-  for (int i = 0; i < length; i++) {
-    Expect.isFalse(base.isEmpty);
-    base.remove(base.first);
-  }
-  Expect.isTrue(base.isEmpty);
-}
-
-testRemoveAll(base, Iterable removes) {
-  Set retained = new Set();
-  for (var element in base) {
-    if (!removes.contains(element)) {
-      retained.add(element);
-    }
-  }
-  String name = "$base.removeAll($removes) -> $retained";
-  base.removeAll(removes);
-  for (var value in base) {
-    Expect.isFalse(removes.contains(value), "$name: Found $value");
-  }
-  for (var value in retained) {
-    Expect.isTrue(base.contains(value), "$name: Found $value");
-  }
-}
-
-testRetainAll(base, Iterable retains) {
-  Set retained = new Set();
-  for (var element in base) {
-    if (retains.contains(element)) {
-      retained.add(element);
-    }
-  }
-  String name = "$base.retainAll($retains) -> $retained";
-  base.retainAll(retains);
-  for (var value in base) {
-    Expect.isTrue(retains.contains(value), "$name: Found $value");
-  }
-  for (var value in retained) {
-    Expect.isTrue(base.contains(value), "$name: Found $value");
-  }
-}
-
-testRemoveWhere(base, bool test(value)) {
-  Set retained = new Set();
-  for (var element in base) {
-    if (!test(element)) {
-      retained.add(element);
-    }
-  }
-  String name = "$base.removeWhere(...) -> $retained";
-  base.removeWhere(test);
-  for (var value in base) {
-    Expect.isFalse(test(value), "$name: Found $value");
-  }
-  for (var value in retained) {
-    Expect.isTrue(base.contains(value), "$name: Found $value");
-  }
-}
-
-testRetainWhere(base, bool test(value)) {
-  Set retained = new Set();
-  for (var element in base) {
-    if (test(element)) {
-      retained.add(element);
-    }
-  }
-  String name = "$base.retainWhere(...) -> $retained";
-  base.retainWhere(test);
-  for (var value in base) {
-    Expect.isTrue(test(value), "$name: Found $value");
-  }
-  for (var value in retained) {
-    Expect.isTrue(base.contains(value), "$name: Found $value");
-  }
-}
-
-void main() {
-  var collections = [
-    [],
-    [1],
-    [2],
-    [1, 2],
-    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
-    [1, 3, 5, 7, 9],
-    [2, 4, 6, 8, 10]
-  ];
-  for (var base in collections) {
-    for (var delta in collections) {
-      testRemove(base.toList());
-      testRemove(base.toSet());
-
-      var deltaSet = delta.toSet();
-      testRemoveWhere(base.toList(), deltaSet.contains);
-      testRetainWhere(base.toList(), (e) => !deltaSet.contains(e));
-
-      testRemoveAll(base.toSet(), delta);
-      testRemoveAll(base.toSet(), deltaSet);
-      testRetainAll(base.toSet(), delta);
-      testRetainAll(base.toSet(), deltaSet);
-      testRemoveWhere(base.toSet(), deltaSet.contains);
-      testRetainWhere(base.toSet(), (e) => !deltaSet.contains(e));
-
-      // Test the ListBase class's List implementation.
-      testRemoveWhere(new MyList(base.toList()), deltaSet.contains);
-      testRetainWhere(new MyList(base.toList()), (e) => !deltaSet.contains(e));
-    }
-  }
-}
-
-class MyList<E> extends ListBase<E> {
-  List<E> _source;
-  MyList(this._source);
-  int get length => _source.length;
-  void set length(int length) {
-    _source.length = length;
-  }
-
-  E operator [](int index) => _source[index];
-  void operator []=(int index, E value) {
-    _source[index] = value;
-  }
-}
diff --git a/tests/corelib/collection_test.dart b/tests/corelib/collection_test.dart
deleted file mode 100644
index bcbfd83..0000000
--- a/tests/corelib/collection_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2011, 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 collection_test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue;
-
-class CollectionTest {
-  CollectionTest(Iterable iterable) {
-    testFold(iterable);
-  }
-
-  void testFold(Iterable iterable) {
-    Expect.equals(28, iterable.fold(0, (prev, element) => prev + element));
-    Expect.equals(3024, iterable.fold(1, (prev, element) => prev * element));
-  }
-}
-
-main() {
-  final TEST_ELEMENTS = const [4, 2, 6, 7, 9];
-  // Const list.
-  new CollectionTest(TEST_ELEMENTS);
-
-  // Fixed size list.
-  var fixedList = new List(TEST_ELEMENTS.length);
-  for (int i = 0; i < TEST_ELEMENTS.length; i++) {
-    fixedList[i] = TEST_ELEMENTS[i];
-  }
-  new CollectionTest(fixedList);
-
-  // Growable list.
-  new CollectionTest(new List.from(TEST_ELEMENTS));
-
-  // Set.
-  new CollectionTest(new Set.from(TEST_ELEMENTS));
-
-  // Queue.
-  new CollectionTest(new Queue.from(TEST_ELEMENTS));
-}
diff --git a/tests/corelib/collection_to_string_test.dart b/tests/corelib/collection_to_string_test.dart
deleted file mode 100644
index 1dc2533..0000000
--- a/tests/corelib/collection_to_string_test.dart
+++ /dev/null
@@ -1,387 +0,0 @@
-// 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.
-
-/**
- * Tests for the toString methods on collections and maps.
- */
-
-library collection_to_string;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue, LinkedHashMap;
-import 'dart:math' as Math;
-
-// TODO(jjb): seed random number generator when API allows it
-
-const int NUM_TESTS = 300;
-const int MAX_COLLECTION_SIZE = 7;
-
-Math.Random rand;
-
-main() {
-  rand = new Math.Random();
-  smokeTest();
-  exactTest();
-  inexactTest();
-}
-
-/**
- * Test a few simple examples.
- */
-void smokeTest() {
-  // Non-const lists
-  Expect.equals([].toString(), '[]');
-  Expect.equals([1].toString(), '[1]');
-  Expect.equals(['Elvis'].toString(), '[Elvis]');
-  Expect.equals([null].toString(), '[null]');
-  Expect.equals([1, 2].toString(), '[1, 2]');
-  Expect.equals(['I', 'II'].toString(), '[I, II]');
-  Expect.equals(
-      [
-        [1, 2],
-        [3, 4],
-        [5, 6]
-      ].toString(),
-      '[[1, 2], [3, 4], [5, 6]]');
-
-  // Const lists
-  Expect.equals((const []).toString(), '[]');
-  Expect.equals((const [1]).toString(), '[1]');
-  Expect.equals((const ['Elvis']).toString(), '[Elvis]');
-  Expect.equals((const [null]).toString(), '[null]');
-  Expect.equals((const [1, 2]).toString(), '[1, 2]');
-  Expect.equals((const ['I', 'II']).toString(), '[I, II]');
-  Expect.equals(
-      (const [
-        const [1, 2],
-        const [3, 4],
-        const [5, 6]
-      ])
-          .toString(),
-      '[[1, 2], [3, 4], [5, 6]]');
-
-  // Non-const maps - Note that all keys are strings; the spec currently demands this
-  Expect.equals({}.toString(), '{}');
-  Expect.equals({'Elvis': 'King'}.toString(), '{Elvis: King}');
-  Expect.equals({'Elvis': null}.toString(), '{Elvis: null}');
-  Expect.equals({'I': 1, 'II': 2}.toString(), '{I: 1, II: 2}');
-  Expect.equals(
-      {
-        'X': {'I': 1, 'II': 2},
-        'Y': {'III': 3, 'IV': 4},
-        'Z': {'V': 5, 'VI': 6}
-      }.toString(),
-      '{X: {I: 1, II: 2}, Y: {III: 3, IV: 4}, Z: {V: 5, VI: 6}}');
-
-  // Const maps
-  Expect.equals(const {}.toString(), '{}');
-  Expect.equals(const {'Elvis': 'King'}.toString(), '{Elvis: King}');
-  Expect.equals({'Elvis': null}.toString(), '{Elvis: null}');
-  Expect.equals(const {'I': 1, 'II': 2}.toString(), '{I: 1, II: 2}');
-  Expect.equals(
-      const {
-        'X': const {'I': 1, 'II': 2},
-        'Y': const {'III': 3, 'IV': 4},
-        'Z': const {'V': 5, 'VI': 6}
-      }.toString(),
-      '{X: {I: 1, II: 2}, Y: {III: 3, IV: 4}, Z: {V: 5, VI: 6}}');
-}
-
-// SERIOUS "BASHER" TESTS
-
-/**
- * Generate a bunch of random collections (including Maps), and test that
- * there string form is as expected. The collections include collections
- * as elements, keys, and values, and include recursive references.
- *
- * This test restricts itself to collections with well-defined iteration
- * orders (i.e., no HashSet, HashMap).
- */
-void exactTest() {
-  for (int i = 0; i < NUM_TESTS; i++) {
-    // Choose a size from 0 to MAX_COLLECTION_SIZE, favoring larger sizes
-    int size =
-        Math.sqrt(random(MAX_COLLECTION_SIZE * MAX_COLLECTION_SIZE)).toInt();
-
-    StringBuffer stringRep = new StringBuffer();
-    Object o = randomCollection(size, stringRep, exact: true);
-    print(stringRep);
-    print(o);
-    Expect.equals(o.toString(), stringRep.toString());
-  }
-}
-
-/**
- * Generate a bunch of random collections (including Maps), and test that
- * there string form is as expected. The collections include collections
- * as elements, keys, and values, and include recursive references.
- *
- * This test includes collections with ill-defined iteration orders (i.e.,
- * HashSet, HashMap). As a consequence, it can't use equality tests on the
- * string form. Instead, it performs equality tests on their "alphagrams."
- * This might allow false positives, but it does give a fair amount of
- * confidence.
- */
-void inexactTest() {
-  for (int i = 0; i < NUM_TESTS; i++) {
-    // Choose a size from 0 to MAX_COLLECTION_SIZE, favoring larger sizes
-    int size =
-        Math.sqrt(random(MAX_COLLECTION_SIZE * MAX_COLLECTION_SIZE)).toInt();
-
-    StringBuffer stringRep = new StringBuffer();
-    Object o = randomCollection(size, stringRep, exact: false);
-    print(stringRep);
-    print(o);
-    Expect.equals(alphagram(o.toString()), alphagram(stringRep.toString()));
-  }
-}
-
-/**
- * Return a random collection (or Map) of the specified size, placing its
- * string representation into the given string buffer.
- *
- * If exact is true, the returned collections will not be, and will not contain
- * a collection with ill-defined iteration order (i.e., a HashSet or HashMap).
- */
-Object randomCollection(int size, StringBuffer stringRep, {bool exact}) {
-  return randomCollectionHelper(size, exact, stringRep, []);
-}
-
-/**
- * Return a random collection (or map) of the specified size, placing its
- * string representation into the given string buffer. The beingMade
- * parameter is a list of collections currently under construction, i.e.,
- * candidates for recursive references.
- *
- * If exact is true, the returned collections will not be, and will not contain
- * a collection with ill-defined iteration order (i.e., a HashSet or HashMap).
- */
-Object randomCollectionHelper(
-    int size, bool exact, StringBuffer stringRep, List beingMade) {
-  double interfaceFrac = rand.nextDouble();
-
-  if (exact) {
-    if (interfaceFrac < 1 / 3) {
-      return randomList(size, exact, stringRep, beingMade);
-    } else if (interfaceFrac < 2 / 3) {
-      return randomQueue(size, exact, stringRep, beingMade);
-    } else {
-      return randomMap(size, exact, stringRep, beingMade);
-    }
-  } else {
-    if (interfaceFrac < 1 / 4) {
-      return randomList(size, exact, stringRep, beingMade);
-    } else if (interfaceFrac < 2 / 4) {
-      return randomQueue(size, exact, stringRep, beingMade);
-    } else if (interfaceFrac < 3 / 4) {
-      return randomSet(size, exact, stringRep, beingMade);
-    } else {
-      return randomMap(size, exact, stringRep, beingMade);
-    }
-  }
-}
-
-/**
- * Return a random List of the specified size, placing its string
- * representation into the given string buffer. The beingMade
- * parameter is a list of collections currently under construction, i.e.,
- * candidates for recursive references.
- *
- * If exact is true, the returned collections will not be, and will not contain
- * a collection with ill-defined iteration order (i.e., a HashSet or HashMap).
- */
-List randomList(int size, bool exact, StringBuffer stringRep, List beingMade) {
-  return populateRandomCollection(size, exact, stringRep, beingMade, [], "[]");
-}
-
-/**
- * Like randomList, but returns a queue.
- */
-Queue randomQueue(
-    int size, bool exact, StringBuffer stringRep, List beingMade) {
-  return populateRandomCollection(
-      size, exact, stringRep, beingMade, new Queue(), "{}");
-}
-
-/**
- * Like randomList, but returns a Set.
- */
-Set randomSet(int size, bool exact, StringBuffer stringRep, List beingMade) {
-  // Until we have LinkedHashSet, method will only be called with exact==true
-  return populateRandomSet(size, exact, stringRep, beingMade, new Set());
-}
-
-/**
- * Like randomList, but returns a map.
- */
-Map randomMap(int size, bool exact, StringBuffer stringRep, List beingMade) {
-  if (exact) {
-    return populateRandomMap(
-        size, exact, stringRep, beingMade, new LinkedHashMap());
-  } else {
-    return populateRandomMap(size, exact, stringRep, beingMade,
-        randomBool() ? new Map() : new LinkedHashMap());
-  }
-}
-
-/**
- * Populates the given empty collection with elements, emitting the string
- * representation of the collection to stringRep.  The beingMade parameter is
- * a list of collections currently under construction, i.e., candidates for
- * recursive references.
- *
- * If exact is true, the elements of the returned collections will not be,
- * and will not contain a collection with ill-defined iteration order
- * (i.e., a HashSet or HashMap).
- */
-populateRandomCollection(int size, bool exact, StringBuffer stringRep,
-    List beingMade, var coll, String delimiters) {
-  beingMade.add(coll);
-  int start = stringRep.length;
-
-  stringRep.write(delimiters[0]);
-
-  List indices = [];
-  for (int i = 0; i < size; i++) {
-    indices.add(stringRep.length);
-    if (i != 0) stringRep.write(', ');
-    coll.add(randomElement(random(size), exact, stringRep, beingMade));
-  }
-  if (size > 5 && delimiters == "()") {
-    const int MAX_LENGTH = 80;
-    const int MIN_COUNT = 3;
-    const int MAX_COUNT = 100;
-    // It's an iterable, it may omit some elements.
-    int end = stringRep.length;
-    if (size > MAX_COUNT) {
-      // Last two elements are also omitted, just find the first three or
-      // first 60 characters.
-      for (int i = MIN_COUNT; i < size; i++) {
-        int startIndex = indices[i];
-        if (startIndex - start > MAX_LENGTH - 6) {
-          // Limit - ", ...)".length.
-          String prefix = stringRep.toString().substring(0, startIndex);
-          stringRep.clear();
-          stringRep.write(prefix);
-          stringRep.write(", ...");
-        }
-      }
-    } else if (stringRep.length - start > MAX_LENGTH - 1) {
-      // 80 - ")".length.
-      // Last two elements are always included. Middle ones may be omitted.
-      int lastTwoLength = end - indices[indices.length - 2];
-      // Try to find first element to omit.
-      for (int i = 3; i <= size - 3; i++) {
-        int elementEnd = indices[i + 1];
-        int lengthAfter = elementEnd - start;
-        int ellipsisSize = 5; // ", ...".length
-        if (i == size - 3) ellipsisSize = 0; // No ellipsis if we hit the end.
-        if (lengthAfter + ellipsisSize + lastTwoLength > MAX_LENGTH - 1) {
-          // Omit this element and everything up to the last two.
-          int elementStart = indices[i];
-          // Rewrite string buffer by copying it out, clearing, and putting
-          // the parts back in.
-          String buffer = stringRep.toString();
-          String prefix = buffer.substring(0, elementStart);
-          String suffix = buffer.substring(end - lastTwoLength, end);
-          stringRep.clear();
-          stringRep.write(prefix);
-          stringRep.write(", ...");
-          stringRep.write(suffix);
-          break;
-        }
-      }
-    }
-  }
-
-  stringRep.write(delimiters[1]);
-  beingMade.removeLast();
-  return coll;
-}
-
-/** Like populateRandomCollection, but for sets (elements must be hashable) */
-Set populateRandomSet(
-    int size, bool exact, StringBuffer stringRep, List beingMade, Set set) {
-  stringRep.write('{');
-
-  for (int i = 0; i < size; i++) {
-    if (i != 0) stringRep.write(', ');
-    set.add(i);
-    stringRep.write(i);
-  }
-
-  stringRep.write('}');
-  return set;
-}
-
-/** Like populateRandomCollection, but for maps. */
-Map populateRandomMap(
-    int size, bool exact, StringBuffer stringRep, List beingMade, Map map) {
-  beingMade.add(map);
-  stringRep.write('{');
-
-  for (int i = 0; i < size; i++) {
-    if (i != 0) stringRep.write(', ');
-
-    int key = i; // Ensures no duplicates
-    stringRep.write(key);
-    stringRep.write(': ');
-    Object val = randomElement(random(size), exact, stringRep, beingMade);
-    map[key] = val;
-  }
-
-  stringRep.write('}');
-  beingMade.removeLast();
-  return map;
-}
-
-/**
- * Generates a random element which can be an int, a collection, or a map,
- * and emits it to StringRep. The beingMade parameter is a list of collections
- * currently under construction, i.e., candidates for recursive references.
- *
- * If exact is true, the returned element will not be, and will not contain
- * a collection with ill-defined iteration order (i.e., a HashSet or HashMap).
- */
-Object randomElement(
-    int size, bool exact, StringBuffer stringRep, List beingMade) {
-  Object result;
-  double elementTypeFrac = rand.nextDouble();
-  if (elementTypeFrac < 1 / 3) {
-    result = random(1000);
-    stringRep.write(result);
-  } else if (elementTypeFrac < 2 / 3) {
-    // Element is a random (new) collection
-    result = randomCollectionHelper(size, exact, stringRep, beingMade);
-  } else {
-    // Element is a random recursive ref
-    result = beingMade[random(beingMade.length)];
-    if (result is List) {
-      stringRep.write('[...]');
-    } else if (result is Set || result is Map || result is Queue) {
-      stringRep.write('{...}');
-    } else {
-      stringRep.write('(...)');
-    }
-  }
-  return result;
-}
-
-/** Returns a random int on [0, max) */
-int random(int max) {
-  return rand.nextInt(max);
-}
-
-/** Returns a random boolean value. */
-bool randomBool() {
-  return rand.nextBool();
-}
-
-/** Returns the alphabetized characters in a string. */
-String alphagram(String s) {
-  // Calling [toList] to convert unmodifiable list to normal list.
-  List<int> chars = s.codeUnits.toList();
-  chars.sort((int a, int b) => a - b);
-  return new String.fromCharCodes(chars);
-}
diff --git a/tests/corelib/compare_to2_test.dart b/tests/corelib/compare_to2_test.dart
deleted file mode 100644
index feac212..0000000
--- a/tests/corelib/compare_to2_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// 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.
-// Dart test for testing Math.min and Math.max.
-
-import "package:expect/expect.dart";
-
-negate(x) => -x;
-
-main() {
-  // Test matrix:
-  var minNonZero = 5e-324;
-  var maxDenormal = 2.225073858507201e-308;
-  var minNormal = 2.2250738585072014e-308;
-  var maxFraction = 0.9999999999999999;
-  var minAbove1 = 1.0000000000000002;
-  var maxNonInt = 4503599627370495.5;
-  var maxNonIntFloorAsInt = maxNonInt.floor();
-  var maxNonIntFloorAsDouble = maxNonIntFloorAsInt.toDouble();
-  var maxExactIntAsDouble = 9007199254740992.0;
-  var maxExactIntAsInt = 9007199254740992;
-  var two53 = 1 << 53; // Same as maxExactIntAsInt.
-  var two53p1 = two53 + 1;
-  var maxFiniteAsDouble = 1.7976931348623157e+308;
-  var maxFiniteAsInt = maxFiniteAsDouble.truncate();
-  int huge = 1 << 2000;
-  int hugeP1 = huge + 1;
-  var inf = double.INFINITY;
-  var nan = double.NAN;
-  var mnan = negate(nan);
-  var matrix = [
-    -inf,
-    -hugeP1,
-    -huge,
-    [-maxFiniteAsDouble, -maxFiniteAsInt],
-    -two53p1,
-    [-two53, -maxExactIntAsInt, -maxExactIntAsDouble],
-    -maxNonInt,
-    [-maxNonIntFloorAsDouble, -maxNonIntFloorAsInt],
-    [-499.0, -499],
-    -minAbove1,
-    [-1.0, -1],
-    -maxFraction,
-    -minNormal,
-    -maxDenormal,
-    -minNonZero,
-    -0.0,
-    [0, 0, 0],
-    minNonZero,
-    maxDenormal,
-    minNormal,
-    maxFraction,
-    [1.0, 1],
-    minAbove1,
-    [499.0, 499],
-    [maxNonIntFloorAsDouble, maxNonIntFloorAsInt],
-    maxNonInt,
-    [two53, maxExactIntAsInt, maxExactIntAsDouble],
-    two53p1,
-    [maxFiniteAsDouble, maxFiniteAsInt],
-    huge,
-    hugeP1,
-    inf,
-    [nan, mnan],
-  ];
-
-  check(left, right, expectedResult) {
-    if (left is List) {
-      for (var x in left) check(x, right, expectedResult);
-      return;
-    }
-    if (right is List) {
-      for (var x in right) check(left, x, expectedResult);
-      return;
-    }
-    int actual = left.compareTo(right);
-    Expect.equals(
-        expectedResult,
-        actual,
-        "($left).compareTo($right) failed "
-        "(should have been $expectedResult, was $actual");
-  }
-
-  for (int i = 0; i < matrix.length; i++) {
-    for (int j = 0; j < matrix.length; j++) {
-      var left = matrix[i];
-      var right = matrix[j];
-      if (left is List) {
-        check(left, left, 0);
-      }
-      check(left, right, i == j ? 0 : (i < j ? -1 : 1));
-    }
-  }
-}
diff --git a/tests/corelib/compare_to_test.dart b/tests/corelib/compare_to_test.dart
deleted file mode 100644
index 35d8f63..0000000
--- a/tests/corelib/compare_to_test.dart
+++ /dev/null
@@ -1,136 +0,0 @@
-// 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.
-// Dart test for testing Math.min and Math.max.
-
-import "package:expect/expect.dart";
-
-negate(x) => -x;
-
-main() {
-  // Test matrix:
-  // -inf < -499.0 == -499 < -0.0 < 0.0 == 0 < 499.0 == 499 < +inf < -NaN, NaN.
-  var inf = double.INFINITY;
-  var nan = double.NAN;
-  var mnan = negate(nan);
-
-  Expect.equals(0, (-inf).compareTo(-inf));
-  Expect.equals(-1, (-inf).compareTo(-499.0));
-  Expect.equals(-1, (-inf).compareTo(-499));
-  Expect.equals(-1, (-inf).compareTo(-0.0));
-  Expect.equals(-1, (-inf).compareTo(0));
-  Expect.equals(-1, (-inf).compareTo(0.0));
-  Expect.equals(-1, (-inf).compareTo(499.0));
-  Expect.equals(-1, (-inf).compareTo(499));
-  Expect.equals(-1, (-inf).compareTo(inf));
-  Expect.equals(-1, (-inf).compareTo(nan));
-  Expect.equals(-1, (-inf).compareTo(mnan));
-
-  Expect.equals(1, (-499.0).compareTo(-inf));
-  Expect.equals(0, (-499.0).compareTo(-499.0));
-  Expect.equals(0, (-499.0).compareTo(-499));
-  Expect.equals(-1, (-499.0).compareTo(-0.0));
-  Expect.equals(-1, (-499.0).compareTo(0));
-  Expect.equals(-1, (-499.0).compareTo(0.0));
-  Expect.equals(-1, (-499.0).compareTo(499.0));
-  Expect.equals(-1, (-499.0).compareTo(499));
-  Expect.equals(-1, (-499.0).compareTo(inf));
-  Expect.equals(-1, (-499.0).compareTo(nan));
-  Expect.equals(-1, (-499.0).compareTo(mnan));
-
-  Expect.equals(1, (-499).compareTo(-inf));
-  Expect.equals(0, (-499).compareTo(-499.0));
-  Expect.equals(0, (-499).compareTo(-499));
-  Expect.equals(-1, (-499).compareTo(-0.0));
-  Expect.equals(-1, (-499).compareTo(0));
-  Expect.equals(-1, (-499).compareTo(0.0));
-  Expect.equals(-1, (-499).compareTo(499.0));
-  Expect.equals(-1, (-499).compareTo(499));
-  Expect.equals(-1, (-499).compareTo(inf));
-  Expect.equals(-1, (-499).compareTo(nan));
-  Expect.equals(-1, (-499).compareTo(mnan));
-
-  Expect.equals(1, (-0.0).compareTo(-inf));
-  Expect.equals(1, (-0.0).compareTo(-499.0));
-  Expect.equals(1, (-0.0).compareTo(-499));
-  Expect.equals(0, (-0.0).compareTo(-0.0));
-  Expect.equals(-1, (-0.0).compareTo(0));
-  Expect.equals(-1, (-0.0).compareTo(0.0));
-  Expect.equals(-1, (-0.0).compareTo(499.0));
-  Expect.equals(-1, (-0.0).compareTo(499));
-  Expect.equals(-1, (-0.0).compareTo(inf));
-  Expect.equals(-1, (-0.0).compareTo(nan));
-  Expect.equals(-1, (-0.0).compareTo(mnan));
-
-  Expect.equals(1, (0).compareTo(-inf));
-  Expect.equals(1, (0).compareTo(-499.0));
-  Expect.equals(1, (0).compareTo(-499));
-  Expect.equals(1, (0).compareTo(-0.0));
-  Expect.equals(0, (0).compareTo(0));
-  Expect.equals(0, (0).compareTo(0.0));
-  Expect.equals(-1, (0).compareTo(499.0));
-  Expect.equals(-1, (0).compareTo(499));
-  Expect.equals(-1, (0).compareTo(inf));
-  Expect.equals(-1, (0).compareTo(nan));
-  Expect.equals(-1, (0).compareTo(mnan));
-
-  Expect.equals(1, (0.0).compareTo(-inf));
-  Expect.equals(1, (0.0).compareTo(-499.0));
-  Expect.equals(1, (0.0).compareTo(-499));
-  Expect.equals(1, (0.0).compareTo(-0.0));
-  Expect.equals(0, (0.0).compareTo(0));
-  Expect.equals(0, (0.0).compareTo(0.0));
-  Expect.equals(-1, (0.0).compareTo(499.0));
-  Expect.equals(-1, (0.0).compareTo(499));
-  Expect.equals(-1, (0.0).compareTo(inf));
-  Expect.equals(-1, (0.0).compareTo(nan));
-  Expect.equals(-1, (0.0).compareTo(mnan));
-
-  Expect.equals(1, (499.0).compareTo(-inf));
-  Expect.equals(1, (499.0).compareTo(-499.0));
-  Expect.equals(1, (499.0).compareTo(-499));
-  Expect.equals(1, (499.0).compareTo(-0.0));
-  Expect.equals(1, (499.0).compareTo(0));
-  Expect.equals(1, (499.0).compareTo(0.0));
-  Expect.equals(0, (499.0).compareTo(499.0));
-  Expect.equals(0, (499.0).compareTo(499));
-  Expect.equals(-1, (499.0).compareTo(inf));
-  Expect.equals(-1, (499.0).compareTo(nan));
-  Expect.equals(-1, (499.0).compareTo(mnan));
-
-  Expect.equals(1, (499).compareTo(-inf));
-  Expect.equals(1, (499).compareTo(-499.0));
-  Expect.equals(1, (499).compareTo(-499));
-  Expect.equals(1, (499).compareTo(-0.0));
-  Expect.equals(1, (499).compareTo(0));
-  Expect.equals(1, (499).compareTo(0.0));
-  Expect.equals(0, (499).compareTo(499.0));
-  Expect.equals(0, (499).compareTo(499));
-  Expect.equals(-1, (499).compareTo(inf));
-  Expect.equals(-1, (499).compareTo(nan));
-  Expect.equals(-1, (499).compareTo(mnan));
-
-  Expect.equals(1, inf.compareTo(-inf));
-  Expect.equals(1, inf.compareTo(-499.0));
-  Expect.equals(1, inf.compareTo(-499));
-  Expect.equals(1, inf.compareTo(-0.0));
-  Expect.equals(1, inf.compareTo(0));
-  Expect.equals(1, inf.compareTo(0.0));
-  Expect.equals(1, inf.compareTo(499.0));
-  Expect.equals(1, inf.compareTo(499));
-  Expect.equals(0, inf.compareTo(inf));
-  Expect.equals(-1, inf.compareTo(nan));
-  Expect.equals(-1, inf.compareTo(mnan));
-
-  Expect.equals(1, nan.compareTo(-inf));
-  Expect.equals(1, nan.compareTo(-499.0));
-  Expect.equals(1, nan.compareTo(-499));
-  Expect.equals(1, nan.compareTo(-0.0));
-  Expect.equals(1, nan.compareTo(0));
-  Expect.equals(1, nan.compareTo(0.0));
-  Expect.equals(1, nan.compareTo(499.0));
-  Expect.equals(1, nan.compareTo(499));
-  Expect.equals(1, nan.compareTo(inf));
-  Expect.equals(0, nan.compareTo(nan));
-  Expect.equals(0, nan.compareTo(mnan));
-}
diff --git a/tests/corelib/const_list_literal_test.dart b/tests/corelib/const_list_literal_test.dart
deleted file mode 100644
index cf61c4f..0000000
--- a/tests/corelib/const_list_literal_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test that a final list literal is not expandable nor modifiable.
-
-class ConstListLiteralTest {
-  static void testMain() {
-    var list = const [4, 2, 3];
-    Expect.equals(3, list.length);
-
-    var exception = null;
-    try {
-      list.add(4);
-    } on UnsupportedError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-    Expect.equals(3, list.length);
-    exception = null;
-
-    exception = null;
-    try {
-      list.addAll([4, 5]);
-    } on UnsupportedError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-    Expect.equals(3, list.length);
-
-    exception = null;
-    try {
-      list[0] = 0;
-    } on UnsupportedError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-    Expect.equals(3, list.length);
-
-    exception = null;
-    try {
-      list.sort((a, b) => a - b);
-    } on UnsupportedError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-    Expect.equals(3, list.length);
-    Expect.equals(4, list[0]);
-    Expect.equals(2, list[1]);
-    Expect.equals(3, list[2]);
-
-    exception = null;
-    try {
-      list.setRange(0, 1, [1], 0);
-    } on UnsupportedError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-    Expect.equals(3, list.length);
-    Expect.equals(4, list[0]);
-    Expect.equals(2, list[1]);
-    Expect.equals(3, list[2]);
-
-    // Note: the next check is a regression test for dart2js. The immutable list
-    // overrides the 'length' property of List, but relies on using the native
-    // 'forEach' construct in Array. This test ensures that our strategy works
-    // correctly.
-    int x = 0;
-    list.forEach((e) {
-      x += e;
-    });
-    Expect.equals(9, x);
-  }
-}
-
-main() {
-  ConstListLiteralTest.testMain();
-}
diff --git a/tests/corelib/const_list_remove_range_test.dart b/tests/corelib/const_list_remove_range_test.dart
deleted file mode 100644
index ff53be5..0000000
--- a/tests/corelib/const_list_remove_range_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  testImmutable(const []);
-  testImmutable(const [1]);
-  testImmutable(const [1, 2]);
-}
-
-void expectUOE(Function f) {
-  Expect.throws(f, (e) => e is UnsupportedError);
-}
-
-testImmutable(var list) {
-  expectUOE(() {
-    list.removeRange(0, 0);
-  });
-  expectUOE(() {
-    list.removeRange(0, 1);
-  });
-  expectUOE(() {
-    list.removeRange(-1, 1);
-  });
-}
diff --git a/tests/corelib/const_list_set_range_test.dart b/tests/corelib/const_list_set_range_test.dart
deleted file mode 100644
index e82b255..0000000
--- a/tests/corelib/const_list_set_range_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  testImmutable(const []);
-  testImmutable(const [1]);
-  testImmutable(const [1, 2]);
-}
-
-void expectUOE(Function f) {
-  Expect.throws(f, (e) => e is UnsupportedError);
-}
-
-testImmutable(var list) {
-  expectUOE(() {
-    list.setRange(0, 0, const []);
-  });
-  expectUOE(() {
-    list.setRange(0, 1, const [], 1);
-  });
-  expectUOE(() {
-    list.setRange(0, 1, const []);
-  });
-  expectUOE(() {
-    list.setRange(0, 0, []);
-  });
-  expectUOE(() {
-    list.setRange(0, 1, [], 1);
-  });
-  expectUOE(() {
-    list.setRange(0, 1, []);
-  });
-  expectUOE(() {
-    list.setRange(0, 0, const [1]);
-  });
-  expectUOE(() {
-    list.setRange(0, 1, const [1]);
-  });
-  expectUOE(() {
-    list.setRange(0, 0, [1]);
-  });
-  expectUOE(() {
-    list.setRange(0, 1, [1]);
-  });
-  expectUOE(() {
-    list.setRange(0, 1, [1], 1);
-  });
-}
diff --git a/tests/corelib/core_runtime_types_test.dart b/tests/corelib/core_runtime_types_test.dart
deleted file mode 100644
index 2da72f7..0000000
--- a/tests/corelib/core_runtime_types_test.dart
+++ /dev/null
@@ -1,342 +0,0 @@
-// Copyright (c) 2011, 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";
-
-/**
- * A test of simple runtime behavior on numbers, strings and lists with
- * a focus on both correct behavior and runtime errors.
- *
- * This file is written to use minimal type declarations to match a
- * typical dynamic language coding style.
- */
-class CoreRuntimeTypesTest {
-  static testMain() {
-    testBooleanOperators();
-    testRationalOperators();
-    testIntegerOperators();
-    testOperatorErrors();
-    testRationalMethods();
-    testIntegerMethods();
-    testStringOperators();
-    testStringMethods();
-    testListOperators();
-    testListMethods();
-    testMapOperators();
-    testMapMethods();
-    testLiterals();
-    testDateMethods();
-  }
-
-  static assertEquals(a, b) {
-    Expect.equals(b, a);
-  }
-
-  static assertListEquals(List a, List b) {
-    Expect.equals(b.length, a.length);
-    for (int i = 0; i < a.length; i++) {
-      Expect.equals(b[i], a[i]);
-    }
-  }
-
-  static assertListContains(List<Comparable> a, List<Comparable> b) {
-    a.sort((x, y) => x.compareTo(y));
-    b.sort((x, y) => x.compareTo(y));
-    assertListEquals(a, b);
-  }
-
-  static assertTypeError(void f()) {
-    Expect.throws(
-        f,
-        (exception) =>
-            (exception is TypeError) ||
-            (exception is NoSuchMethodError) ||
-            (exception is ArgumentError));
-  }
-
-  static testBooleanOperators() {
-    var x = true, y = false;
-    assertEquals(x, true);
-    assertEquals(y, false);
-    assertEquals(x, !y);
-    assertEquals(!x, y);
-  }
-
-  static testRationalOperators() {
-    var x = 10, y = 20;
-    assertEquals(x + y, 30);
-    assertEquals(x - y, -10);
-    assertEquals(x * y, 200);
-    assertEquals(x / y, 0.5);
-    assertEquals(x ~/ y, 0);
-    assertEquals(x % y, 10);
-  }
-
-  static testIntegerOperators() {
-    var x = 18, y = 17;
-    assertEquals(x | y, 19);
-    assertEquals(x & y, 16);
-    assertEquals(x ^ y, 3);
-    assertEquals(2 >> 1, 1);
-    assertEquals(1 << 1, 2);
-  }
-
-  static testOperatorErrors() {
-    var objs = [
-      1,
-      '2',
-      [3],
-      null,
-      true,
-      new Map()
-    ];
-    for (var i = 0; i < objs.length; i++) {
-      for (var j = i + 1; j < objs.length; j++) {
-        testBinaryOperatorErrors(objs[i], objs[j]);
-        // Allow "String * int".
-        if (j > 2) testBinaryOperatorErrors(objs[j], objs[i]);
-      }
-      if (objs[i] != 1) {
-        testUnaryOperatorErrors(objs[i]);
-      }
-    }
-  }
-
-  static testBinaryOperatorErrors(x, y) {
-    assertTypeError(() {
-      x - y;
-    });
-    assertTypeError(() {
-      x * y;
-    });
-    assertTypeError(() {
-      x / y;
-    });
-    assertTypeError(() {
-      x | y;
-    });
-    assertTypeError(() {
-      x ^ y;
-    });
-    assertTypeError(() {
-      x & y;
-    });
-    assertTypeError(() {
-      x << y;
-    });
-    assertTypeError(() {
-      x >> y;
-    });
-    assertTypeError(() {
-      x ~/ y;
-    });
-    assertTypeError(() {
-      x % y;
-    });
-
-    testComparisonOperatorErrors(x, y);
-  }
-
-  static testComparisonOperatorErrors(x, y) {
-    assertEquals(x == y, false);
-    assertEquals(x != y, true);
-    assertTypeError(() {
-      x < y;
-    });
-    assertTypeError(() {
-      x <= y;
-    });
-    assertTypeError(() {
-      x > y;
-    });
-    assertTypeError(() {
-      x >= y;
-    });
-  }
-
-  static testUnaryOperatorErrors(x) {
-    // TODO(jimhug): Add guard for 'is num' when 'is' is working
-    assertTypeError(() {
-      ~x;
-    });
-    assertTypeError(() {
-      -x;
-    });
-    // TODO(jimhug): Add check for !x as an error when x is not a bool
-  }
-
-  static testRationalMethods() {
-    var x = 10.6;
-    assertEquals(x.abs(), 10.6);
-    assertEquals((-x).abs(), 10.6);
-    assertEquals(x.round(), 11);
-    assertEquals(x.floor(), 10);
-    assertEquals(x.ceil(), 11);
-  }
-
-  // TODO(jimhug): Determine correct behavior for mixing ints and floats.
-  static testIntegerMethods() {
-    var y = 9;
-    assertEquals(y.isEven, false);
-    assertEquals(y.isOdd, true);
-    assertEquals(y.toRadixString(2), '1001');
-    assertEquals(y.toRadixString(3), '100');
-    assertEquals(y.toRadixString(16), '9');
-    assertEquals((0).toRadixString(16), '0');
-    try {
-      y.toRadixString(0);
-      Expect.fail("Illegal radix 0 accepted.");
-    } catch (e) {}
-    try {
-      y.toRadixString(-1);
-      Expect.fail("Illegal radix -1 accepted.");
-    } catch (e) {}
-  }
-
-  static testStringOperators() {
-    var s = "abcdef";
-    assertEquals(s, "abcdef");
-    assertEquals(s.codeUnitAt(0), 97);
-    assertEquals(s[0], 'a');
-    assertEquals(s.length, 6);
-    assertTypeError(() {
-      s[null];
-    });
-    assertTypeError(() {
-      s['hello'];
-    });
-    assertTypeError(() {
-      s[0] = 'x';
-    });
-  }
-
-  // TODO(jimhug): Fill out full set of string methods.
-  static testStringMethods() {
-    var s = "abcdef";
-    assertEquals(s.isEmpty, false);
-    assertEquals(s.isNotEmpty, true);
-    assertEquals(s.startsWith("abc"), true);
-    assertEquals(s.endsWith("def"), true);
-    assertEquals(s.startsWith("aa"), false);
-    assertEquals(s.endsWith("ff"), false);
-    assertEquals(s.contains('cd', 0), true);
-    assertEquals(s.contains('cd', 2), true);
-    assertEquals(s.contains('cd', 3), false);
-    assertEquals(s.indexOf('cd', 2), 2);
-    assertEquals(s.indexOf('cd', 3), -1);
-
-    assertTypeError(() {
-      s.startsWith(1);
-    });
-    assertTypeError(() {
-      s.endsWith(1);
-    });
-  }
-
-  static testListOperators() {
-    var a = [1, 2, 3, 4];
-    assertEquals(a[0], 1);
-    assertTypeError(() {
-      a['0'];
-    });
-    a[0] = 42;
-    assertEquals(a[0], 42);
-    assertTypeError(() {
-      a['0'] = 99;
-    });
-    assertEquals(a.length, 4);
-  }
-
-  // TODO(jimhug): Fill out full set of list methods.
-  static testListMethods() {
-    var a = [1, 2, 3, 4];
-    assertEquals(a.isEmpty, false);
-    assertEquals(a.length, 4);
-    var exception = null;
-    a.clear();
-    assertEquals(a.length, 0);
-  }
-
-  static testMapOperators() {
-    var d = new Map();
-    d['a'] = 1;
-    d['b'] = 2;
-    assertEquals(d['a'], 1);
-    assertEquals(d['b'], 2);
-    assertEquals(d['c'], null);
-  }
-
-  static testMapMethods() {
-    var d = new Map();
-    d['a'] = 1;
-    d['b'] = 2;
-    assertEquals(d.containsValue(2), true);
-    assertEquals(d.containsValue(3), false);
-    assertEquals(d.containsKey('a'), true);
-    assertEquals(d.containsKey('c'), false);
-    assertEquals(d.keys.length, 2);
-    assertEquals(d.values.length, 2);
-
-    assertEquals(d.remove('c'), null);
-    assertEquals(d.remove('b'), 2);
-    assertEquals(d.keys.single, 'a');
-    assertEquals(d.values.single, 1);
-
-    d['c'] = 3;
-    d['f'] = 4;
-    assertEquals(d.keys.length, 3);
-    assertEquals(d.values.length, 3);
-    assertListContains(d.keys.toList(), ['a', 'c', 'f']);
-    assertListContains(d.values.toList(), [1, 3, 4]);
-
-    var count = 0;
-    d.forEach((key, value) {
-      count++;
-      assertEquals(value, d[key]);
-    });
-    assertEquals(count, 3);
-
-    d = {'a': 1, 'b': 2};
-    assertEquals(d.containsValue(2), true);
-    assertEquals(d.containsValue(3), false);
-    assertEquals(d.containsKey('a'), true);
-    assertEquals(d.containsKey('c'), false);
-    assertEquals(d.keys.length, 2);
-    assertEquals(d.values.length, 2);
-
-    d['g'] = null;
-    assertEquals(d.containsKey('g'), true);
-    assertEquals(d['g'], null);
-  }
-
-  static testDateMethods() {
-    var msec = 115201000;
-    var d = new DateTime.fromMillisecondsSinceEpoch(msec, isUtc: true);
-    assertEquals(d.second, 1);
-    assertEquals(d.year, 1970);
-
-    d = new DateTime.now();
-    assertEquals(d.year >= 1970, true);
-  }
-
-  static testLiterals() {
-    true.toString();
-    1.0.toString();
-    .5.toString();
-    1.toString();
-    if (false) {
-      // Depends on http://b/4198808.
-      null.toString();
-    }
-    '${null}'.toString();
-    '${true}'.toString();
-    '${false}'.toString();
-    ''.toString();
-    ''.endsWith('');
-  }
-}
-
-main() {
-  CoreRuntimeTypesTest.testMain();
-}
diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status
deleted file mode 100644
index 7be5f14..0000000
--- a/tests/corelib/corelib.status
+++ /dev/null
@@ -1,5 +0,0 @@
-# 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.
-
-*: SkipByDesign # Deprecating Dart1 tests.
diff --git a/tests/corelib/data_uri_test.dart b/tests/corelib/data_uri_test.dart
deleted file mode 100644
index baa60fc..0000000
--- a/tests/corelib/data_uri_test.dart
+++ /dev/null
@@ -1,335 +0,0 @@
-// Copyright (c) 2015, 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";
-import "dart:convert";
-import "dart:typed_data";
-
-main() {
-  testMediaType();
-
-  testRoundTrip("");
-  testRoundTrip("a");
-  testRoundTrip("ab");
-  testRoundTrip("abc");
-  testRoundTrip("abcd");
-  testRoundTrip("Content with special%25 characters: # ? = % # ? = %");
-  testRoundTrip("blåbærgrød", UTF8);
-  testRoundTrip("blåbærgrød", LATIN1);
-
-  testUriEquals("data:,abc?d");
-  testUriEquals("DATA:,ABC?D");
-  testUriEquals("data:,a%20bc?d");
-  testUriEquals("DATA:,A%20BC?D");
-  testUriEquals("data:,abc?d%23e"); // # must and will be is escaped.
-
-  // Test that UriData.uri normalizes path and query.
-
-  testUtf8Encoding("\u1000\uffff");
-  testBytes();
-  testInvalidCharacters();
-  testNormalization();
-  testErrors();
-}
-
-void testMediaType() {
-  for (var mimeType in ["", "text/plain", "text/javascript"]) {
-    for (var charset in ["", ";charset=US-ASCII", ";charset=UTF-8"]) {
-      for (var base64 in ["", ";base64"]) {
-        bool isBase64 = base64.isNotEmpty;
-        var text = "data:$mimeType$charset$base64,";
-        var uri = UriData.parse(text);
-
-        String expectedCharset =
-            charset.isEmpty ? "US-ASCII" : charset.substring(9);
-        String expectedMimeType = mimeType.isEmpty ? "text/plain" : mimeType;
-
-        Expect.equals(text, "$uri");
-        Expect.equals(expectedMimeType, uri.mimeType);
-        Expect.equals(expectedCharset, uri.charset);
-        Expect.equals(isBase64, uri.isBase64);
-      }
-    }
-  }
-}
-
-void testRoundTrip(String content, [Encoding encoding]) {
-  UriData dataUri = new UriData.fromString(content, encoding: encoding);
-  Expect.isFalse(dataUri.isBase64);
-  Uri uri = dataUri.uri;
-  expectUriEquals(new Uri.dataFromString(content, encoding: encoding), uri);
-
-  if (encoding != null) {
-    UriData dataUriParams =
-        new UriData.fromString(content, parameters: {"charset": encoding.name});
-    Expect.equals("$dataUri", "$dataUriParams");
-  }
-
-  Expect.equals(encoding ?? ASCII, Encoding.getByName(dataUri.charset));
-  Expect.equals(content, dataUri.contentAsString(encoding: encoding));
-  Expect.equals(content, dataUri.contentAsString());
-  Expect.equals(content, (encoding ?? ASCII).decode(dataUri.contentAsBytes()));
-
-  uri = dataUri.uri;
-  Expect.equals(uri.toString(), dataUri.toString());
-  Expect.equals(dataUri.toString(), new UriData.fromUri(uri).toString());
-
-  dataUri = new UriData.fromBytes(content.codeUnits);
-  Expect.listEquals(content.codeUnits, dataUri.contentAsBytes());
-  Expect.equals(content, dataUri.contentAsString(encoding: LATIN1));
-
-  uri = dataUri.uri;
-  Expect.equals(uri.toString(), dataUri.toString());
-  Expect.equals(dataUri.toString(), new UriData.fromUri(uri).toString());
-  // Check that the URI is properly normalized.
-  expectUriEquals(uri, Uri.parse("$uri"));
-}
-
-void testUtf8Encoding(String content) {
-  UriData uri = new UriData.fromString(content, encoding: UTF8);
-  Expect.equals(content, uri.contentAsString(encoding: UTF8));
-  Expect.listEquals(UTF8.encode(content), uri.contentAsBytes());
-}
-
-void testInvalidCharacters() {
-  // SPACE, CTL and tspecial, plus '%' and '#' (URI gen-delim)
-  // This contains all ASCII character that are not valid in attribute/value
-  // parts.
-  var invalid =
-      '\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x7f'
-      ' ()<>@,;:"/[]?=%#\x80\u{1000}\u{10000}';
-  var invalidNoSlash = invalid.replaceAll('/', '');
-  var dataUri = new UriData.fromString(invalid,
-      encoding: UTF8,
-      mimeType: "$invalidNoSlash/$invalidNoSlash",
-      parameters: {invalid: invalid});
-
-  Expect.equals(invalid, dataUri.contentAsString());
-  Expect.equals("$invalidNoSlash/$invalidNoSlash", dataUri.mimeType);
-  Expect.equals(invalid, dataUri.parameters[invalid]);
-
-  var uri = dataUri.uri;
-  Expect.equals("$uri", "$dataUri");
-  expectUriEquals(uri, Uri.parse("$uri")); // Check that it's canonicalized.
-  Expect.equals("$dataUri", new UriData.fromUri(uri).toString());
-}
-
-void testBytes() {
-  void testList(List<int> list) {
-    var dataUri = new UriData.fromBytes(list);
-    Expect.equals("application/octet-stream", dataUri.mimeType);
-    Expect.isTrue(dataUri.isBase64);
-    Expect.listEquals(list, dataUri.contentAsBytes());
-
-    dataUri = new UriData.fromBytes(list, percentEncoded: true);
-    Expect.equals("application/octet-stream", dataUri.mimeType);
-    Expect.isFalse(dataUri.isBase64);
-    Expect.listEquals(list, dataUri.contentAsBytes());
-
-    var string = new String.fromCharCodes(list);
-
-    dataUri = new UriData.fromString(string, encoding: LATIN1);
-    Expect.equals("text/plain", dataUri.mimeType);
-    Expect.isFalse(dataUri.isBase64);
-    Expect.listEquals(list, dataUri.contentAsBytes());
-
-    dataUri = new UriData.fromString(string, encoding: LATIN1, base64: true);
-    Expect.equals("text/plain", dataUri.mimeType);
-    Expect.isTrue(dataUri.isBase64);
-    Expect.listEquals(list, dataUri.contentAsBytes());
-  }
-
-  void testLists(List<int> list) {
-    testList(list);
-    for (int i = 0; i < 27; i++) {
-      testList(list.sublist(i, i + i)); // All lengths from 0 to 27.
-    }
-  }
-
-  var bytes = new Uint8List(512);
-  for (int i = 0; i < bytes.length; i++) {
-    bytes[i] = i;
-  }
-  testLists(bytes);
-  testLists(new List.from(bytes));
-  testLists(new List.unmodifiable(bytes));
-}
-
-void testNormalization() {
-  // Base-64 normalization.
-
-  // Normalized URI-alphabet characters.
-  Expect.equals(
-      "data:;base64,AA/+", UriData.parse("data:;base64,AA_-").toString());
-  // Normalized escapes.
-  Expect.equals(
-      "data:;base64,AB==", UriData.parse("data:;base64,A%42=%3D").toString());
-  Expect.equals("data:;base64,/+/+",
-      UriData.parse("data:;base64,%5F%2D%2F%2B").toString());
-  // Normalized padded data.
-  Expect.equals(
-      "data:;base64,AA==", UriData.parse("data:;base64,AA%3D%3D").toString());
-  Expect.equals(
-      "data:;base64,AAA=", UriData.parse("data:;base64,AAA%3D").toString());
-  // Normalized unpadded data.
-  Expect.equals(
-      "data:;base64,AA==", UriData.parse("data:;base64,AA").toString());
-  Expect.equals(
-      "data:;base64,AAA=", UriData.parse("data:;base64,AAA").toString());
-
-  // "URI normalization" of non-base64 content.
-  var uri = UriData.parse("data:,\x20\xa0");
-  Expect.equals("data:,%20%C2%A0", uri.toString());
-  uri = UriData.parse("data:,x://x@y:[z]:42/p/./?q=x&y=z#?#\u1234\u{12345}");
-  Expect.equals(
-      "data:,x://x@y:%5Bz%5D:42/p/./?q=x&y=z%23?%23%E1%88%B4%F0%92%8D%85",
-      uri.toString());
-}
-
-bool badArgument(e) => e is ArgumentError;
-bool badFormat(e) => e is FormatException;
-
-void testErrors() {
-  // Invalid constructor parameters.
-  Expect.throws(() {
-    new UriData.fromBytes([], mimeType: "noslash");
-  }, badArgument);
-  Expect.throws(() {
-    new UriData.fromBytes([257]);
-  }, badArgument);
-  Expect.throws(() {
-    new UriData.fromBytes([-1]);
-  }, badArgument);
-  Expect.throws(() {
-    new UriData.fromBytes([0x10000000]);
-  }, badArgument);
-  Expect.throws(() {
-    new UriData.fromString("", mimeType: "noslash");
-  }, badArgument);
-
-  Expect.throws(() {
-    new Uri.dataFromBytes([], mimeType: "noslash");
-  }, badArgument);
-  Expect.throws(() {
-    new Uri.dataFromBytes([257]);
-  }, badArgument);
-  Expect.throws(() {
-    new Uri.dataFromBytes([-1]);
-  }, badArgument);
-  Expect.throws(() {
-    new Uri.dataFromBytes([0x10000000]);
-  }, badArgument);
-  Expect.throws(() {
-    new Uri.dataFromString("", mimeType: "noslash");
-  }, badArgument);
-
-  // Empty parameters allowed, not an error.
-  var uri = new UriData.fromString("", mimeType: "", parameters: {});
-  Expect.equals("data:,", "$uri");
-  // Empty parameter key or value is an error.
-  Expect.throws(
-      () => new UriData.fromString("", parameters: {"": "X"}), badArgument);
-  Expect.throws(
-      () => new UriData.fromString("", parameters: {"X": ""}), badArgument);
-
-  // Not recognizing charset is an error.
-  uri = UriData.parse("data:;charset=arglebargle,X");
-  Expect.throws(() {
-    uri.contentAsString();
-  });
-  // Doesn't throw if we specify the encoding.
-  Expect.equals("X", uri.contentAsString(encoding: ASCII));
-
-  // Parse format.
-  Expect.throws(() {
-    UriData.parse("notdata:,");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("text/plain,noscheme");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("data:noseparator");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("data:noslash,text");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("data:type/sub;noequals,text");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("data:type/sub;knocomma=");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("data:type/sub;k=v;nocomma");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("data:type/sub;k=nocomma");
-  }, badFormat);
-  Expect.throws(() {
-    UriData.parse("data:type/sub;k=v;base64");
-  }, badFormat);
-
-  void formatError(String input) {
-    Expect.throws(() => UriData.parse("data:;base64,$input"), badFormat, input);
-  }
-
-  // Invalid base64 format (detected when parsed).
-  for (var a = 0; a <= 4; a++) {
-    for (var p = 0; p <= 4; p++) {
-      // Base-64 encoding must have length divisible by four and no more
-      // than two padding characters at the end.
-      if (p < 3 && (a + p) % 4 == 0) continue;
-      if (p == 0 && a > 1) continue;
-      formatError("A" * a + "=" * p);
-      formatError("A" * a + "%3D" * p);
-    }
-  }
-  // Invalid base64 encoding: padding not at end.
-  formatError("AA=A");
-  formatError("A=AA");
-  formatError("=AAA");
-  formatError("A==A");
-  formatError("==AA");
-  formatError("===A");
-  formatError("AAA%3D=");
-  formatError("A%3D==");
-
-  // Invalid unpadded data.
-  formatError("A");
-  formatError("AAAAA");
-
-  // Invalid characters.
-  formatError("AAA*");
-  formatError("AAA\x00");
-  formatError("AAA\\");
-  formatError("AAA,");
-
-  // Invalid escapes.
-  formatError("AAA%25");
-  formatError("AAA%7F");
-  formatError("AAA%7F");
-}
-
-/// Checks that two [Uri]s are exactly the same.
-expectUriEquals(Uri expect, Uri actual) {
-  Expect.equals(expect.scheme, actual.scheme, "scheme");
-  Expect.equals(expect.hasAuthority, actual.hasAuthority, "hasAuthority");
-  Expect.equals(expect.userInfo, actual.userInfo, "userInfo");
-  Expect.equals(expect.host, actual.host, "host");
-  Expect.equals(expect.hasPort, actual.hasPort, "hasPort");
-  Expect.equals(expect.port, actual.port, "port");
-  Expect.equals(expect.port, actual.port, "port");
-  Expect.equals(expect.hasQuery, actual.hasQuery, "hasQuery");
-  Expect.equals(expect.query, actual.query, "query");
-  Expect.equals(expect.hasFragment, actual.hasFragment, "hasFragment");
-  Expect.equals(expect.fragment, actual.fragment, "fragment");
-}
-
-void testUriEquals(String uriText) {
-  var data = UriData.parse(uriText);
-  var uri = Uri.parse(uriText);
-  Expect.equals(data.uri, uri);
-  Expect.equals(data.toString(), uri.data.toString());
-  Expect.equals(data.toString(), uri.toString());
-}
diff --git a/tests/corelib/date_time10_test.dart b/tests/corelib/date_time10_test.dart
deleted file mode 100644
index 3d7d34e..0000000
--- a/tests/corelib/date_time10_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// 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 the years in the range of single digits are handled correctly with
-// month roll-over. (This tests an edge condition when delegating to
-// JavaScript's Date constructor.)
-
-void check(String expected, DateTime actual) {
-  Expect.equals(expected, actual.toString());
-}
-
-testUtc() {
-  check("0099-01-01 00:00:00.000Z", new DateTime.utc(99, 1));
-  check("0100-01-01 00:00:00.000Z", new DateTime.utc(99, 1 + 12));
-  check("0000-01-01 00:00:00.000Z", new DateTime.utc(0, 1));
-  check("-0001-01-01 00:00:00.000Z", new DateTime.utc(0, 1 - 12));
-
-  check("0099-03-02 00:00:00.000Z", new DateTime.utc(99, 2, 30));
-  check("0100-03-02 00:00:00.000Z", new DateTime.utc(99, 2 + 12, 30));
-
-  check("0004-03-01 00:00:00.000Z", new DateTime.utc(3, 2 + 12, 30));
-  check("0004-03-01 00:00:00.000Z", new DateTime.utc(4, 2, 30));
-  check("0004-03-01 00:00:00.000Z", new DateTime.utc(5, 2 - 12, 30));
-
-  check("0005-03-02 00:00:00.000Z", new DateTime.utc(4, 2 + 12, 30));
-  check("0005-03-02 00:00:00.000Z", new DateTime.utc(5, 2, 30));
-  check("0005-03-02 00:00:00.000Z", new DateTime.utc(6, 2 - 12, 30));
-}
-
-testLocal() {
-  check("0099-01-01 00:00:00.000", new DateTime(99, 1));
-  check("0100-01-01 00:00:00.000", new DateTime(99, 1 + 12));
-  check("0000-01-01 00:00:00.000", new DateTime(0, 1));
-  check("-0001-01-01 00:00:00.000", new DateTime(0, 1 - 12));
-
-  check("0099-03-02 00:00:00.000", new DateTime(99, 2, 30));
-  check("0100-03-02 00:00:00.000", new DateTime(99, 2 + 12, 30));
-
-  check("0004-03-01 00:00:00.000", new DateTime(3, 2 + 12, 30));
-  check("0004-03-01 00:00:00.000", new DateTime(4, 2, 30));
-  check("0004-03-01 00:00:00.000", new DateTime(5, 2 - 12, 30));
-
-  check("0005-03-02 00:00:00.000", new DateTime(4, 2 + 12, 30));
-  check("0005-03-02 00:00:00.000", new DateTime(5, 2, 30));
-  check("0005-03-02 00:00:00.000", new DateTime(6, 2 - 12, 30));
-}
-
-main() {
-  testUtc();
-  testLocal();
-}
diff --git a/tests/corelib/date_time2_test.dart b/tests/corelib/date_time2_test.dart
deleted file mode 100644
index 6a0bb87..0000000
--- a/tests/corelib/date_time2_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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";
-
-// Dart test program for DateTime's hashCode.
-
-main() {
-  var d = DateTime.parse("2000-01-01T00:00:00Z");
-  var d2 = DateTime.parse("2000-01-01T00:00:01Z");
-  // There is no guarantee that the hashcode for these two dates is different,
-  // but in the worst case we will have to fix this test.
-  // The important test here is, that DateTime .
-  Expect.isFalse(d.hashCode == d2.hashCode);
-}
diff --git a/tests/corelib/date_time3_test.dart b/tests/corelib/date_time3_test.dart
deleted file mode 100644
index 557eede..0000000
--- a/tests/corelib/date_time3_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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";
-
-// At some point dart was emitting a bad padding 0 for Dates where the ms were
-// ending with 10.
-
-main() {
-  String s = "2012-01-30 08:30:00.010";
-  DateTime d = DateTime.parse(s);
-  Expect.equals(s, d.toString());
-}
diff --git a/tests/corelib/date_time4_test.dart b/tests/corelib/date_time4_test.dart
deleted file mode 100644
index 4342019..0000000
--- a/tests/corelib/date_time4_test.dart
+++ /dev/null
@@ -1,104 +0,0 @@
-// 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";
-
-// Test fromString with 6 digits after the decimal point.
-
-bool get supportsMicroseconds =>
-    new DateTime.fromMicrosecondsSinceEpoch(1).microsecondsSinceEpoch == 1;
-
-main() {
-  if (supportsMicroseconds) {
-    testMicrosecondPrecision();
-  } else {
-    testMillisecondPrecision();
-  }
-}
-
-void testMillisecondPrecision() {
-  // We only support milliseconds. If the user supplies more data (the "51"
-  // here), we round.
-  DateTime dt1 = DateTime.parse("1999-01-02 23:59:59.999519");
-  Expect.equals(1999, dt1.year);
-  Expect.equals(1, dt1.month);
-  Expect.equals(3, dt1.day);
-  Expect.equals(0, dt1.hour);
-  Expect.equals(0, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(false, dt1.isUtc);
-  dt1 = DateTime.parse("1999-01-02 23:58:59.999519Z");
-  Expect.equals(1999, dt1.year);
-  Expect.equals(1, dt1.month);
-  Expect.equals(2, dt1.day);
-  Expect.equals(23, dt1.hour);
-  Expect.equals(59, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009411Z");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(9, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  String svnDate = "2012-03-30T04:28:13.752341Z";
-  dt1 = DateTime.parse(svnDate);
-  Expect.equals(2012, dt1.year);
-  Expect.equals(3, dt1.month);
-  Expect.equals(30, dt1.day);
-  Expect.equals(4, dt1.hour);
-  Expect.equals(28, dt1.minute);
-  Expect.equals(13, dt1.second);
-  Expect.equals(752, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-}
-
-void testMicrosecondPrecision() {
-  DateTime dt1 = DateTime.parse("1999-01-02 23:59:59.999519");
-  Expect.equals(1999, dt1.year);
-  Expect.equals(1, dt1.month);
-  Expect.equals(2, dt1.day);
-  Expect.equals(23, dt1.hour);
-  Expect.equals(59, dt1.minute);
-  Expect.equals(59, dt1.second);
-  Expect.equals(999, dt1.millisecond);
-  Expect.equals(519, dt1.microsecond);
-  Expect.equals(false, dt1.isUtc);
-  dt1 = DateTime.parse("1999-01-02 23:58:59.999519Z");
-  Expect.equals(1999, dt1.year);
-  Expect.equals(1, dt1.month);
-  Expect.equals(2, dt1.day);
-  Expect.equals(23, dt1.hour);
-  Expect.equals(58, dt1.minute);
-  Expect.equals(59, dt1.second);
-  Expect.equals(999, dt1.millisecond);
-  Expect.equals(519, dt1.microsecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009411Z");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(9, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(411, dt1.microsecond);
-  Expect.equals(true, dt1.isUtc);
-  String svnDate = "2012-03-30T04:28:13.752341Z";
-  dt1 = DateTime.parse(svnDate);
-  Expect.equals(2012, dt1.year);
-  Expect.equals(3, dt1.month);
-  Expect.equals(30, dt1.day);
-  Expect.equals(4, dt1.hour);
-  Expect.equals(28, dt1.minute);
-  Expect.equals(13, dt1.second);
-  Expect.equals(752, dt1.millisecond);
-  Expect.equals(341, dt1.microsecond);
-  Expect.equals(true, dt1.isUtc);
-}
diff --git a/tests/corelib/date_time5_test.dart b/tests/corelib/date_time5_test.dart
deleted file mode 100644
index abf893d..0000000
--- a/tests/corelib/date_time5_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// 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";
-
-// Test DateTime constructor with optional arguments.
-
-main() {
-  var d = new DateTime(2012);
-  Expect.equals(2012, d.year);
-  Expect.equals(1, d.month);
-  Expect.equals(1, d.day);
-  Expect.equals(0, d.hour);
-  Expect.equals(0, d.minute);
-  Expect.equals(0, d.second);
-  Expect.equals(0, d.millisecond);
-
-  d = new DateTime(2012, 1, 28);
-  Expect.equals(2012, d.year);
-  Expect.equals(1, d.month);
-  Expect.equals(28, d.day);
-  Expect.equals(0, d.hour);
-  Expect.equals(0, d.minute);
-  Expect.equals(0, d.second);
-  Expect.equals(0, d.millisecond);
-
-  d = new DateTime(1970, 3);
-  Expect.equals(1970, d.year);
-  Expect.equals(3, d.month);
-  Expect.equals(1, d.day);
-  Expect.equals(0, d.hour);
-  Expect.equals(0, d.minute);
-  Expect.equals(0, d.second);
-  Expect.equals(0, d.millisecond);
-
-  d = new DateTime(1970, 3, 1, 11);
-  Expect.equals(1970, d.year);
-  Expect.equals(3, d.month);
-  Expect.equals(1, d.day);
-  Expect.equals(11, d.hour);
-  Expect.equals(0, d.minute);
-  Expect.equals(0, d.second);
-  Expect.equals(0, d.millisecond);
-
-  d = new DateTime(0, 12, 24, 0, 12);
-  Expect.equals(0, d.year);
-  Expect.equals(12, d.month);
-  Expect.equals(24, d.day);
-  Expect.equals(0, d.hour);
-  Expect.equals(12, d.minute);
-  Expect.equals(0, d.second);
-  Expect.equals(0, d.millisecond);
-
-  d = new DateTime(-1, 2, 2, 3, 0, 0, 4);
-  Expect.equals(-1, d.year);
-  Expect.equals(2, d.month);
-  Expect.equals(2, d.day);
-  Expect.equals(3, d.hour);
-  Expect.equals(0, d.minute);
-  Expect.equals(0, d.second);
-  Expect.equals(4, d.millisecond);
-
-  d = new DateTime(-1, 2, 2, 3, 0, 4);
-  Expect.equals(-1, d.year);
-  Expect.equals(2, d.month);
-  Expect.equals(2, d.day);
-  Expect.equals(3, d.hour);
-  Expect.equals(0, d.minute);
-  Expect.equals(4, d.second);
-  Expect.equals(0, d.millisecond);
-
-  d = new DateTime(2012, 5, 15, 13, 21, 33, 12);
-  Expect.equals(2012, d.year);
-  Expect.equals(5, d.month);
-  Expect.equals(15, d.day);
-  Expect.equals(13, d.hour);
-  Expect.equals(21, d.minute);
-  Expect.equals(33, d.second);
-  Expect.equals(12, d.millisecond);
-}
diff --git a/tests/corelib/date_time6_test.dart b/tests/corelib/date_time6_test.dart
deleted file mode 100644
index c065705..0000000
--- a/tests/corelib/date_time6_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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";
-
-// Test DateTime comparison operators.
-
-main() {
-  var d = new DateTime.fromMillisecondsSinceEpoch(0, isUtc: true);
-  var d2 = new DateTime.fromMillisecondsSinceEpoch(1, isUtc: true);
-  Expect.isTrue(d.isBefore(d2));
-  Expect.isTrue(!d.isAfter(d2));
-  Expect.isTrue(d2.isAfter(d));
-  Expect.isTrue(!d2.isBefore(d));
-  Expect.isFalse(d2.isBefore(d));
-  Expect.isFalse(!d2.isAfter(d));
-  Expect.isFalse(d.isAfter(d2));
-  Expect.isFalse(!d.isBefore(d2));
-
-  d = new DateTime.fromMillisecondsSinceEpoch(-1, isUtc: true);
-  d2 = new DateTime.fromMillisecondsSinceEpoch(0, isUtc: true);
-  Expect.isTrue(d.isBefore(d2));
-  Expect.isTrue(!d.isAfter(d2));
-  Expect.isTrue(d2.isAfter(d));
-  Expect.isTrue(!d2.isBefore(d));
-  Expect.isFalse(d2.isBefore(d));
-  Expect.isFalse(!d2.isAfter(d));
-  Expect.isFalse(d.isAfter(d2));
-  Expect.isFalse(!d.isBefore(d2));
-}
diff --git a/tests/corelib/date_time7_test.dart b/tests/corelib/date_time7_test.dart
deleted file mode 100644
index b14eb7d..0000000
--- a/tests/corelib/date_time7_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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";
-
-// Test DateTime timeZoneName and timeZoneOffset getters.
-
-testUtc() {
-  var d = DateTime.parse("2012-03-04T03:25:38.123Z");
-  Expect.equals("UTC", d.timeZoneName);
-  Expect.equals(0, d.timeZoneOffset.inSeconds);
-}
-
-testLocal() {
-  checkOffset(String name, Duration offset) {
-    // Timezone abbreviations are not in bijection with their timezones.
-    // For example AST stands for "Arab Standard Time" (UTC+03), as well as
-    // "Arabian Standard Time" (UTC+04), or PST stands for Pacific Standard Time
-    // and Philippine Standard Time.
-    //
-    // Hardcode some common timezones.
-    if (name == "CET") {
-      Expect.equals(1, offset.inHours);
-    } else if (name == "CEST") {
-      Expect.equals(2, offset.inHours);
-    } else if (name == "GMT") {
-      Expect.equals(0, offset.inSeconds);
-    } else if (name == "EST") {
-      Expect.equals(-5, offset.inHours);
-    } else if (name == "EDT") {
-      Expect.equals(-4, offset.inHours);
-    } else if (name == "PDT") {
-      Expect.equals(-7, offset.inHours);
-    }
-  }
-
-  var d = DateTime.parse("2012-01-02T13:45:23");
-  String name = d.timeZoneName;
-  checkOffset(name, d.timeZoneOffset);
-
-  d = DateTime.parse("2012-07-02T13:45:23");
-  name = d.timeZoneName;
-  checkOffset(name, d.timeZoneOffset);
-}
-
-main() {
-  testUtc();
-  testLocal();
-}
diff --git a/tests/corelib/date_time8_test.dart b/tests/corelib/date_time8_test.dart
deleted file mode 100644
index 85d573f..0000000
--- a/tests/corelib/date_time8_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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 the year 0 is correctly printed.
-
-testUtc() {
-  var d = new DateTime.utc(0, 1, 1);
-  Expect.equals("0000-01-01 00:00:00.000Z", d.toString());
-}
-
-testLocal() {
-  var d = new DateTime(0, 1, 1);
-  Expect.equals("0000-01-01 00:00:00.000", d.toString());
-}
-
-main() {
-  testUtc();
-  testLocal();
-}
diff --git a/tests/corelib/date_time9_test.dart b/tests/corelib/date_time9_test.dart
deleted file mode 100644
index 9475775..0000000
--- a/tests/corelib/date_time9_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  var dt = new DateTime.now();
-  Expect.isTrue(dt is Comparable);
-
-  var dt2 = new DateTime.fromMillisecondsSinceEpoch(100);
-  var dt3 = new DateTime.fromMillisecondsSinceEpoch(200, isUtc: true);
-  var dt3b = new DateTime.fromMillisecondsSinceEpoch(200);
-  var dt4 = new DateTime.fromMillisecondsSinceEpoch(300);
-  var dt5 = new DateTime.fromMillisecondsSinceEpoch(400, isUtc: true);
-  var dt5b = new DateTime.fromMillisecondsSinceEpoch(400);
-
-  Expect.isTrue(dt2.compareTo(dt2) == 0);
-  Expect.isTrue(dt3.compareTo(dt3) == 0);
-  Expect.isTrue(dt3b.compareTo(dt3b) == 0);
-  Expect.isTrue(dt4.compareTo(dt4) == 0);
-  Expect.isTrue(dt5.compareTo(dt5) == 0);
-  Expect.isTrue(dt5b.compareTo(dt5b) == 0);
-
-  // Time zones don't have any effect.
-  Expect.isTrue(dt3.compareTo(dt3b) == 0);
-  Expect.isTrue(dt5.compareTo(dt5b) == 0);
-
-  Expect.isTrue(dt2.compareTo(dt3) < 0);
-  Expect.isTrue(dt3.compareTo(dt4) < 0);
-  Expect.isTrue(dt4.compareTo(dt5) < 0);
-
-  Expect.isTrue(dt2.compareTo(dt3b) < 0);
-  Expect.isTrue(dt4.compareTo(dt5b) < 0);
-
-  Expect.isTrue(dt3.compareTo(dt2) > 0);
-  Expect.isTrue(dt4.compareTo(dt3) > 0);
-  Expect.isTrue(dt5.compareTo(dt4) > 0);
-
-  Expect.isTrue(dt3b.compareTo(dt2) > 0);
-  Expect.isTrue(dt5b.compareTo(dt4) > 0);
-}
diff --git a/tests/corelib/date_time_parse_test.dart b/tests/corelib/date_time_parse_test.dart
deleted file mode 100644
index 74cc78f..0000000
--- a/tests/corelib/date_time_parse_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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";
-
-check(DateTime expected, String str) {
-  DateTime actual = DateTime.parse(str);
-  Expect.equals(expected, actual); // Only checks if they are at the same time.
-  Expect.equals(expected.isUtc, actual.isUtc);
-}
-
-bool get supportsMicroseconds =>
-    new DateTime.fromMicrosecondsSinceEpoch(1).microsecondsSinceEpoch == 1;
-
-main() {
-  check(new DateTime(2012, 02, 27, 13, 27), "2012-02-27 13:27:00");
-  if (supportsMicroseconds) {
-    check(new DateTime.utc(2012, 02, 27, 13, 27, 0, 123, 456),
-        "2012-02-27 13:27:00.123456z");
-  } else {
-    check(new DateTime.utc(2012, 02, 27, 13, 27, 0, 123, 456),
-        "2012-02-27 13:27:00.123z");
-  }
-  check(new DateTime(2012, 02, 27, 13, 27), "20120227 13:27:00");
-  check(new DateTime(2012, 02, 27, 13, 27), "20120227T132700");
-  check(new DateTime(2012, 02, 27), "20120227");
-  check(new DateTime(2012, 02, 27), "+20120227");
-  check(new DateTime.utc(2012, 02, 27, 14), "2012-02-27T14Z");
-  check(new DateTime.utc(-12345, 1, 1), "-123450101 00:00:00 Z");
-  check(new DateTime.utc(2012, 02, 27, 14), "2012-02-27T14+00");
-  check(new DateTime.utc(2012, 02, 27, 14), "2012-02-27T14+0000");
-  check(new DateTime.utc(2012, 02, 27, 14), "2012-02-27T14+00:00");
-  check(new DateTime.utc(2012, 02, 27, 14), "2012-02-27T14 +00:00");
-
-  check(new DateTime.utc(2015, 02, 14, 13, 0, 0, 0), "2015-02-15T00:00+11");
-  check(new DateTime.utc(2015, 02, 14, 13, 0, 0, 0), "2015-02-15T00:00:00+11");
-  check(
-      new DateTime.utc(2015, 02, 14, 13, 0, 0, 0), "2015-02-15T00:00:00+11:00");
-
-  if (supportsMicroseconds) {
-    check(new DateTime.utc(2015, 02, 15, 0, 0, 0, 500, 500),
-        "2015-02-15T00:00:00.500500Z");
-    check(new DateTime.utc(2015, 02, 15, 0, 0, 0, 511, 500),
-        "2015-02-15T00:00:00.511500Z");
-  } else {
-    check(new DateTime.utc(2015, 02, 15, 0, 0, 0, 501),
-        "2015-02-15T00:00:00.501Z");
-    check(new DateTime.utc(2015, 02, 15, 0, 0, 0, 512),
-        "2015-02-15T00:00:00.512Z");
-  }
-}
diff --git a/tests/corelib/date_time_test.dart b/tests/corelib/date_time_test.dart
deleted file mode 100644
index 8a1d731..0000000
--- a/tests/corelib/date_time_test.dart
+++ /dev/null
@@ -1,1380 +0,0 @@
-// 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";
-
-// Dart test program for DateTime.
-
-bool get supportsMicroseconds =>
-    new DateTime.fromMicrosecondsSinceEpoch(1).microsecondsSinceEpoch == 1;
-
-// Identical to _MAX_MILLISECONDS_SINCE_EPOCH in date_time.dart
-const int _MAX_MILLISECONDS = 8640000000000000;
-
-// Tests if the time moves eventually forward.
-void testNow() {
-  var t1 = new DateTime.now();
-  bool timeMovedForward = false;
-  const int N = 1000000;
-  outer:
-  while (true) {
-    for (int i = N; i > 0; i--) {
-      var t2 = new DateTime.now();
-      if (t1.millisecondsSinceEpoch < t2.millisecondsSinceEpoch) {
-        break outer;
-      }
-    }
-    print("testNow: No Date.now() progress in $N loops. Time: $t1");
-  }
-  Expect.isFalse(t1.isUtc);
-}
-
-void testMillisecondsSinceEpoch() {
-  var dt1 = new DateTime.now();
-  var millisecondsSinceEpoch = dt1.millisecondsSinceEpoch;
-  var dt2 = new DateTime.fromMillisecondsSinceEpoch(millisecondsSinceEpoch);
-  Expect.equals(millisecondsSinceEpoch, dt2.millisecondsSinceEpoch);
-}
-
-void testMicrosecondsSinceEpoch() {
-  var dt1 = new DateTime.fromMillisecondsSinceEpoch(1);
-  var microsecondsSinceEpoch = dt1.microsecondsSinceEpoch;
-  var dt2 = new DateTime.fromMicrosecondsSinceEpoch(microsecondsSinceEpoch);
-  Expect.equals(microsecondsSinceEpoch, dt2.microsecondsSinceEpoch);
-
-  dt1 = new DateTime.now();
-  microsecondsSinceEpoch = dt1.microsecondsSinceEpoch;
-  dt2 = new DateTime.fromMicrosecondsSinceEpoch(microsecondsSinceEpoch);
-  Expect.equals(microsecondsSinceEpoch, dt2.microsecondsSinceEpoch);
-}
-
-void testFarAwayDates() {
-  DateTime dt =
-      new DateTime.fromMillisecondsSinceEpoch(1000000000000001, isUtc: true);
-  Expect.equals(33658, dt.year);
-  Expect.equals(9, dt.month);
-  Expect.equals(27, dt.day);
-  Expect.equals(1, dt.hour);
-  Expect.equals(46, dt.minute);
-  Expect.equals(40, dt.second);
-  Expect.equals(1, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-1000000000000001, isUtc: true);
-  Expect.equals(-29719, dt.year);
-  Expect.equals(4, dt.month);
-  Expect.equals(5, dt.day);
-  Expect.equals(22, dt.hour);
-  Expect.equals(13, dt.minute);
-  Expect.equals(19, dt.second);
-  Expect.equals(999, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  // Same with local zone.
-  dt = new DateTime.fromMillisecondsSinceEpoch(1000000000000001);
-  Expect.equals(33658, dt.year);
-  Expect.equals(9, dt.month);
-  Expect.equals(true, dt.day == 27 || dt.day == 26);
-  // Not much we can test for local hour.
-  Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
-  // Timezones can have offsets down to 15 minute.
-  Expect.equals(true, dt.minute % 15 == 46 % 15);
-  Expect.equals(40, dt.second);
-  Expect.equals(1, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-1000000000000001);
-  Expect.equals(-29719, dt.year);
-  Expect.equals(4, dt.month);
-  Expect.equals(true, 5 == dt.day || 6 == dt.day);
-  // Not much we can test for local hour.
-  Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
-  // Timezones can have offsets down to 15 minute.
-  Expect.equals(true, dt.minute % 15 == 13);
-  Expect.equals(19, dt.second);
-  Expect.equals(999, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-
-  if (!supportsMicroseconds) return;
-  dt =
-      new DateTime.fromMicrosecondsSinceEpoch(1000000000000000001, isUtc: true);
-  Expect.equals(33658, dt.year);
-  Expect.equals(9, dt.month);
-  Expect.equals(27, dt.day);
-  Expect.equals(1, dt.hour);
-  Expect.equals(46, dt.minute);
-  Expect.equals(40, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(1, dt.microsecond);
-  dt = new DateTime.fromMicrosecondsSinceEpoch(-1000000000000000001,
-      isUtc: true);
-  Expect.equals(-29719, dt.year);
-  Expect.equals(4, dt.month);
-  Expect.equals(5, dt.day);
-  Expect.equals(22, dt.hour);
-  Expect.equals(13, dt.minute);
-  Expect.equals(19, dt.second);
-  Expect.equals(999, dt.millisecond);
-  Expect.equals(999, dt.microsecond);
-  // Same with local zone.
-  dt = new DateTime.fromMicrosecondsSinceEpoch(1000000000000000001);
-  Expect.equals(33658, dt.year);
-  Expect.equals(9, dt.month);
-  Expect.equals(true, dt.day == 27 || dt.day == 26);
-  // Not much we can test for local hour.
-  Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
-  // Timezones can have offsets down to 15 minute.
-  Expect.equals(true, dt.minute % 15 == 46 % 15);
-  Expect.equals(40, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(1, dt.microsecond);
-  dt = new DateTime.fromMicrosecondsSinceEpoch(-1000000000000000001);
-  Expect.equals(-29719, dt.year);
-  Expect.equals(4, dt.month);
-  Expect.equals(true, 5 == dt.day || 6 == dt.day);
-  // Not much we can test for local hour.
-  Expect.equals(true, dt.hour >= 0 && dt.hour < 24);
-  // Timezones can have offsets down to 15 minute.
-  Expect.equals(true, dt.minute % 15 == 13);
-  Expect.equals(19, dt.second);
-  Expect.equals(999, dt.millisecond);
-  Expect.equals(999, dt.microsecond);
-}
-
-void testEquivalentYears() {
-  // All hardcoded values come from V8. This means that the values are not
-  // necessarily correct (see limitations of DateTime object in
-  // EcmaScript 15.9.1 and in particular 15.9.1.8/9).
-  DateTime dt =
-      new DateTime.fromMillisecondsSinceEpoch(-31485600000, isUtc: true);
-  Expect.equals(1969, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-63108000000, isUtc: true);
-  Expect.equals(1968, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-94644000000, isUtc: true);
-  Expect.equals(1967, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-126180000000, isUtc: true);
-  Expect.equals(1966, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-157716000000, isUtc: true);
-  Expect.equals(1965, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-2177402400000, isUtc: true);
-  Expect.equals(1901, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-5333076000000, isUtc: true);
-  Expect.equals(1801, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-8520285600000, isUtc: true);
-  Expect.equals(1700, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-14831719200000, isUtc: true);
-  Expect.equals(1500, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-59011408800000, isUtc: true);
-  Expect.equals(100, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(14, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-62011408800000, isUtc: true);
-  Expect.equals(4, dt.year);
-  Expect.equals(12, dt.month);
-  Expect.equals(8, dt.day);
-  Expect.equals(8, dt.hour);
-  Expect.equals(40, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-64011408800000, isUtc: true);
-  Expect.equals(-59, dt.year);
-  Expect.equals(7, dt.month);
-  Expect.equals(24, dt.day);
-  Expect.equals(5, dt.hour);
-  Expect.equals(6, dt.minute);
-  Expect.equals(40, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  final int SECONDS_YEAR_2035 = 2051222400;
-  dt = new DateTime.fromMillisecondsSinceEpoch(SECONDS_YEAR_2035 * 1000 + 1,
-      isUtc: true);
-  Expect.equals(2035, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(0, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(1, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(SECONDS_YEAR_2035 * 1000 - 1,
-      isUtc: true);
-  Expect.equals(2034, dt.year);
-  Expect.equals(12, dt.month);
-  Expect.equals(31, dt.day);
-  Expect.equals(23, dt.hour);
-  Expect.equals(59, dt.minute);
-  Expect.equals(59, dt.second);
-  Expect.equals(999, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-
-  dt = new DateTime.utc(2035, 1, 1, 0, 0, 0, 1);
-  Expect.equals(SECONDS_YEAR_2035 * 1000 + 1, dt.millisecondsSinceEpoch);
-  dt = new DateTime.utc(2034, 12, 31, 23, 59, 59, 999);
-  Expect.equals(SECONDS_YEAR_2035 * 1000 - 1, dt.millisecondsSinceEpoch);
-  dt = new DateTime.fromMillisecondsSinceEpoch(SECONDS_YEAR_2035 * 1000 + 1);
-  Expect.equals(
-      true,
-      (2035 == dt.year && 1 == dt.month && 1 == dt.day) ||
-          (2034 == dt.year && 12 == dt.month && 31 == dt.day));
-  Expect.equals(0, dt.second);
-  Expect.equals(1, dt.millisecond);
-  DateTime dt2 = new DateTime(
-      dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.millisecond);
-  Expect.equals(dt.millisecondsSinceEpoch, dt2.millisecondsSinceEpoch);
-  dt = new DateTime.fromMillisecondsSinceEpoch(SECONDS_YEAR_2035 * 1000 - 1);
-  Expect.equals(
-      true,
-      (2035 == dt.year && 1 == dt.month && 1 == dt.day) ||
-          (2034 == dt.year && 12 == dt.month && 31 == dt.day));
-  Expect.equals(59, dt.second);
-  Expect.equals(999, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-
-  dt2 = new DateTime(
-      dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.millisecond);
-  Expect.equals(dt.millisecondsSinceEpoch, dt2.millisecondsSinceEpoch);
-  dt = new DateTime.fromMillisecondsSinceEpoch(2100000000 * 1000, isUtc: true);
-  Expect.equals(2036, dt.year);
-  Expect.equals(7, dt.month);
-  Expect.equals(18, dt.day);
-  Expect.equals(13, dt.hour);
-  Expect.equals(20, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-
-  // Internally this will use the maximum value for the native calls.
-  dt = new DateTime(2036, 7, 18, 13, 20);
-  Expect.equals(2036, dt.year);
-  Expect.equals(7, dt.month);
-  Expect.equals(18, dt.day);
-  Expect.equals(13, dt.hour);
-  Expect.equals(20, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  Expect.equals("2036-07-18 13:20:00.000", dt.toString());
-
-  if (!supportsMicroseconds) return;
-
-  dt = new DateTime.utc(2035, 1, 1, 0, 0, 0, 0, 1);
-  Expect.equals(SECONDS_YEAR_2035 * 1000000 + 1, dt.microsecondsSinceEpoch);
-  dt = new DateTime.utc(2034, 12, 31, 23, 59, 59, 999, 999);
-  Expect.equals(SECONDS_YEAR_2035 * 1000000 - 1, dt.microsecondsSinceEpoch);
-  dt = new DateTime.fromMicrosecondsSinceEpoch(SECONDS_YEAR_2035 * 1000000 + 1);
-  Expect.equals(
-      true,
-      (2035 == dt.year && 1 == dt.month && 1 == dt.day) ||
-          (2034 == dt.year && 12 == dt.month && 31 == dt.day));
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(1, dt.microsecond);
-  dt2 = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second,
-      dt.millisecond, dt.microsecond);
-  Expect.equals(dt.microsecondsSinceEpoch, dt2.microsecondsSinceEpoch);
-  dt = new DateTime.fromMicrosecondsSinceEpoch(SECONDS_YEAR_2035 * 1000000 - 1);
-  Expect.equals(
-      true,
-      (2035 == dt.year && 1 == dt.month && 1 == dt.day) ||
-          (2034 == dt.year && 12 == dt.month && 31 == dt.day));
-  Expect.equals(59, dt.second);
-  Expect.equals(999, dt.millisecond);
-  Expect.equals(999, dt.microsecond);
-
-  dt2 = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second,
-      dt.millisecond, dt.microsecond);
-  Expect.equals(dt.millisecondsSinceEpoch, dt2.millisecondsSinceEpoch);
-  dt = new DateTime.fromMicrosecondsSinceEpoch(2100000000 * 1000000,
-      isUtc: true);
-  Expect.equals(2036, dt.year);
-  Expect.equals(7, dt.month);
-  Expect.equals(18, dt.day);
-  Expect.equals(13, dt.hour);
-  Expect.equals(20, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-}
-
-void testExtremes() {
-  var dt =
-      new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS, isUtc: true);
-  Expect.equals(275760, dt.year);
-  Expect.equals(9, dt.month);
-  Expect.equals(13, dt.day);
-  Expect.equals(0, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS, isUtc: true);
-  Expect.equals(-271821, dt.year);
-  Expect.equals(4, dt.month);
-  Expect.equals(20, dt.day);
-  Expect.equals(0, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  // Make sure that we can build the extreme dates in local too.
-  dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS);
-  dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
-  Expect.equals(_MAX_MILLISECONDS, dt.millisecondsSinceEpoch);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS);
-  dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
-  Expect.equals(-_MAX_MILLISECONDS, dt.millisecondsSinceEpoch);
-  Expect.throws(() => new DateTime.fromMillisecondsSinceEpoch(
-      _MAX_MILLISECONDS + 1,
-      isUtc: true));
-  Expect.throws(() => new DateTime.fromMillisecondsSinceEpoch(
-      -_MAX_MILLISECONDS - 1,
-      isUtc: true));
-  Expect.throws(
-      () => new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS + 1));
-  Expect.throws(
-      () => new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS - 1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS);
-  Expect.throws(
-      () => new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS, isUtc: true);
-  Expect.throws(() =>
-      new DateTime.utc(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS);
-  Expect.throws(
-      () => new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, -1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS, isUtc: true);
-  Expect.throws(() =>
-      new DateTime.utc(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, -1));
-
-  if (!supportsMicroseconds) return;
-
-  dt = new DateTime.fromMicrosecondsSinceEpoch(_MAX_MILLISECONDS * 1000);
-  dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
-  Expect.equals(_MAX_MILLISECONDS * 1000, dt.microsecondsSinceEpoch);
-  dt = new DateTime.fromMicrosecondsSinceEpoch(-_MAX_MILLISECONDS * 1000);
-  dt = new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute);
-  Expect.equals(-_MAX_MILLISECONDS * 1000, dt.microsecondsSinceEpoch);
-  Expect.throws(() => new DateTime.fromMicrosecondsSinceEpoch(
-      _MAX_MILLISECONDS * 1000 + 1,
-      isUtc: true));
-  Expect.throws(() => new DateTime.fromMicrosecondsSinceEpoch(
-      -_MAX_MILLISECONDS * 1000 - 1,
-      isUtc: true));
-  Expect.throws(() =>
-      new DateTime.fromMicrosecondsSinceEpoch(_MAX_MILLISECONDS * 1000 + 1));
-  Expect.throws(() =>
-      new DateTime.fromMicrosecondsSinceEpoch(-_MAX_MILLISECONDS * 1000 - 1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS);
-  Expect.throws(() =>
-      new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, 1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(_MAX_MILLISECONDS, isUtc: true);
-  Expect.throws(() =>
-      new DateTime.utc(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, 1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS);
-  Expect.throws(() =>
-      new DateTime(dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, -1));
-  dt = new DateTime.fromMillisecondsSinceEpoch(-_MAX_MILLISECONDS, isUtc: true);
-  Expect.throws(() => new DateTime.utc(
-      dt.year, dt.month, dt.day, dt.hour, dt.minute, 0, 0, -1));
-}
-
-void testUTCGetters() {
-  var dt = new DateTime.fromMillisecondsSinceEpoch(1305140315000, isUtc: true);
-  Expect.equals(2011, dt.year);
-  Expect.equals(5, dt.month);
-  Expect.equals(11, dt.day);
-  Expect.equals(18, dt.hour);
-  Expect.equals(58, dt.minute);
-  Expect.equals(35, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-  Expect.equals(true, dt.isUtc);
-  Expect.equals(1305140315000, dt.millisecondsSinceEpoch);
-  dt = new DateTime.fromMillisecondsSinceEpoch(-9999999, isUtc: true);
-  Expect.equals(1969, dt.year);
-  Expect.equals(12, dt.month);
-  Expect.equals(31, dt.day);
-  Expect.equals(21, dt.hour);
-  Expect.equals(13, dt.minute);
-  Expect.equals(20, dt.second);
-  Expect.equals(1, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-
-  if (!supportsMicroseconds) return;
-
-  dt = new DateTime.fromMicrosecondsSinceEpoch(-9999999999, isUtc: true);
-  Expect.equals(1969, dt.year);
-  Expect.equals(12, dt.month);
-  Expect.equals(31, dt.day);
-  Expect.equals(21, dt.hour);
-  Expect.equals(13, dt.minute);
-  Expect.equals(20, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(1, dt.microsecond);
-}
-
-void testLocalGetters() {
-  var dt1 = new DateTime.fromMillisecondsSinceEpoch(1305140315000);
-  var dt2 = new DateTime.utc(dt1.year, dt1.month, dt1.day, dt1.hour, dt1.minute,
-      dt1.second, dt1.millisecond, dt1.microsecond);
-  Duration zoneOffset = dt1.difference(dt2);
-  Expect.equals(true, zoneOffset.inDays == 0);
-  Expect.equals(true, zoneOffset.inHours.abs() <= 12);
-  Expect.equals(dt1.year, dt2.year);
-  Expect.equals(dt1.month, dt2.month);
-  Expect.equals(true, (dt1.day - dt2.day).abs() <= 1);
-  Expect.equals(true, dt1.hour < 24);
-  // There are timezones with 0.5 or 0.25 hour offsets.
-  Expect.equals(
-      true,
-      (dt1.minute == dt2.minute) ||
-          ((dt1.minute - dt2.minute).abs() == 30) ||
-          ((dt1.minute - dt2.minute).abs() == 15));
-  Expect.equals(dt1.second, dt2.second);
-  Expect.equals(dt1.millisecond, dt2.millisecond);
-  Expect.equals(dt1.microsecond, dt2.microsecond);
-}
-
-void testConstructors() {
-  var dt0 = new DateTime.utc(2011, 5, 11, 18, 58, 35, 0, 0);
-  var dt0b = new DateTime.utc(2011, 5, 11, 18, 58, 35, 0, 0).toLocal();
-  Expect.equals(1305140315000, dt0.millisecondsSinceEpoch);
-  var dt1 = new DateTime.fromMillisecondsSinceEpoch(1305140315000);
-  Expect.equals(dt1.millisecondsSinceEpoch, dt0.millisecondsSinceEpoch);
-  Expect.equals(dt1.microsecondsSinceEpoch, dt0.microsecondsSinceEpoch);
-  Expect.equals(false, dt1 == dt0);
-  Expect.equals(true, dt1 == dt0b);
-  var dt3 = new DateTime(dt1.year, dt1.month, dt1.day, dt1.hour, dt1.minute,
-      dt1.second, dt1.millisecond, dt1.microsecond);
-  Expect.equals(dt1.millisecondsSinceEpoch, dt3.millisecondsSinceEpoch);
-  Expect.equals(dt1.microsecondsSinceEpoch, dt3.microsecondsSinceEpoch);
-  Expect.equals(false, dt3 == dt0);
-  Expect.equals(true, dt1 == dt3);
-  dt3 = new DateTime(dt1.year, dt1.month, dt1.day, dt1.hour, dt1.minute,
-      dt1.second, dt1.millisecond, dt1.microsecond);
-  Expect.equals(dt1.millisecondsSinceEpoch, dt3.millisecondsSinceEpoch);
-  Expect.equals(dt1.microsecondsSinceEpoch, dt3.microsecondsSinceEpoch);
-  Expect.equals(true, dt1 == dt3);
-  var dt2 = dt1.toLocal();
-  dt3 = new DateTime(2011, 5, dt1.day, dt1.hour, dt1.minute, 35, 0, 0);
-  Expect.equals(dt2.millisecondsSinceEpoch, dt3.millisecondsSinceEpoch);
-  Expect.equals(dt2.microsecondsSinceEpoch, dt3.microsecondsSinceEpoch);
-  Expect.equals(true, dt2 == dt3);
-  dt1 = new DateTime.fromMillisecondsSinceEpoch(-9999999, isUtc: true);
-  dt3 = new DateTime.utc(dt1.year, dt1.month, dt1.day, dt1.hour, dt1.minute,
-      dt1.second, dt1.millisecond);
-  Expect.equals(dt1.millisecondsSinceEpoch, dt3.millisecondsSinceEpoch);
-  Expect.equals(dt1.microsecondsSinceEpoch, dt3.microsecondsSinceEpoch);
-  dt3 = new DateTime.utc(99, 1, 2, 10, 11, 12, 0);
-  Expect.equals(99, dt3.year);
-  Expect.equals(1, dt3.month);
-  Expect.equals(2, dt3.day);
-  Expect.equals(10, dt3.hour);
-  Expect.equals(11, dt3.minute);
-  Expect.equals(12, dt3.second);
-  Expect.equals(0, dt3.millisecond);
-  Expect.equals(0, dt3.microsecond);
-  Expect.equals(true, dt3.isUtc);
-  var dt4 = new DateTime(99, 1, 2);
-  Expect.equals(99, dt4.year);
-  Expect.equals(1, dt4.month);
-  Expect.equals(2, dt4.day);
-  Expect.equals(0, dt4.hour);
-  Expect.equals(0, dt4.minute);
-  Expect.equals(0, dt4.second);
-  Expect.equals(0, dt4.millisecond);
-  Expect.equals(0, dt4.microsecond);
-  Expect.isFalse(dt4.isUtc);
-  var dt5 = new DateTime.utc(99, 1, 2);
-  Expect.equals(99, dt5.year);
-  Expect.equals(1, dt5.month);
-  Expect.equals(2, dt5.day);
-  Expect.equals(0, dt5.hour);
-  Expect.equals(0, dt5.minute);
-  Expect.equals(0, dt5.second);
-  Expect.equals(0, dt5.millisecond);
-  Expect.equals(0, dt5.microsecond);
-  Expect.isTrue(dt5.isUtc);
-  var dt6 = new DateTime(2012, 2, 27, 13, 27, 0);
-  Expect.equals(2012, dt6.year);
-  Expect.equals(2, dt6.month);
-  Expect.equals(27, dt6.day);
-  Expect.equals(13, dt6.hour);
-  Expect.equals(27, dt6.minute);
-  Expect.equals(0, dt6.second);
-  Expect.equals(0, dt6.millisecond);
-  Expect.equals(0, dt6.microsecond);
-  Expect.isFalse(dt6.isUtc);
-  var dt7 = new DateTime.utc(2012, 2, 27, 13, 27, 0);
-  Expect.equals(2012, dt7.year);
-  Expect.equals(2, dt7.month);
-  Expect.equals(27, dt7.day);
-  Expect.equals(13, dt7.hour);
-  Expect.equals(27, dt7.minute);
-  Expect.equals(0, dt7.second);
-  Expect.equals(0, dt7.millisecond);
-  Expect.equals(0, dt7.microsecond);
-  Expect.isTrue(dt7.isUtc);
-}
-
-void testChangeTimeZone() {
-  var dt1 = new DateTime.fromMillisecondsSinceEpoch(1305140315000);
-  var dt2 = dt1.toUtc();
-  Expect.equals(dt1.millisecondsSinceEpoch, dt2.millisecondsSinceEpoch);
-  var dt3 = new DateTime.fromMillisecondsSinceEpoch(1305140315000, isUtc: true);
-  Expect.equals(dt1.millisecondsSinceEpoch, dt3.millisecondsSinceEpoch);
-  Expect.equals(dt2.year, dt3.year);
-  Expect.equals(dt2.month, dt3.month);
-  Expect.equals(dt2.day, dt3.day);
-  Expect.equals(dt2.hour, dt3.hour);
-  Expect.equals(dt2.minute, dt3.minute);
-  Expect.equals(dt2.second, dt3.second);
-  Expect.equals(dt2.millisecond, dt3.millisecond);
-  Expect.equals(dt2.microsecond, dt3.microsecond);
-  var dt4 = dt3.toLocal();
-  Expect.equals(dt1.year, dt4.year);
-  Expect.equals(dt1.month, dt4.month);
-  Expect.equals(dt1.day, dt4.day);
-  Expect.equals(dt1.hour, dt4.hour);
-  Expect.equals(dt1.minute, dt4.minute);
-  Expect.equals(dt1.second, dt4.second);
-  Expect.equals(dt1.millisecond, dt4.millisecond);
-  Expect.equals(dt1.microsecond, dt4.microsecond);
-}
-
-void testSubAdd() {
-  var dt1 = new DateTime.fromMillisecondsSinceEpoch(1305140315000, isUtc: true);
-  var dt2 = dt1.add(
-      new Duration(milliseconds: 3 * Duration.MILLISECONDS_PER_SECOND + 5));
-  Expect.equals(dt1.year, dt2.year);
-  Expect.equals(dt1.month, dt2.month);
-  Expect.equals(dt1.day, dt2.day);
-  Expect.equals(dt1.hour, dt2.hour);
-  Expect.equals(dt1.minute, dt2.minute);
-  Expect.equals(dt1.second + 3, dt2.second);
-  Expect.equals(dt1.millisecond + 5, dt2.millisecond);
-  Expect.equals(dt1.microsecond, dt2.microsecond);
-  var dt3 = dt2.subtract(
-      new Duration(milliseconds: 3 * Duration.MILLISECONDS_PER_SECOND + 5));
-  Expect.equals(true, dt1 == dt3);
-  Expect.equals(false, dt1 == dt2);
-
-  if (!supportsMicroseconds) return;
-
-  dt1 = new DateTime.fromMillisecondsSinceEpoch(1305140315000, isUtc: true);
-  dt2 = dt1.add(
-      new Duration(microseconds: 3 * Duration.MICROSECONDS_PER_SECOND + 5));
-  Expect.equals(dt1.year, dt2.year);
-  Expect.equals(dt1.month, dt2.month);
-  Expect.equals(dt1.day, dt2.day);
-  Expect.equals(dt1.hour, dt2.hour);
-  Expect.equals(dt1.minute, dt2.minute);
-  Expect.equals(dt1.second + 3, dt2.second);
-  Expect.equals(dt1.millisecond, dt2.millisecond);
-  Expect.equals(dt1.microsecond + 5, dt2.microsecond);
-  dt3 = dt2.subtract(
-      new Duration(microseconds: 3 * Duration.MICROSECONDS_PER_SECOND + 5));
-  Expect.equals(true, dt1 == dt3);
-  Expect.equals(false, dt1 == dt2);
-}
-
-void testUnderflowAndOverflow() {
-  int microsecond = supportsMicroseconds ? 499 : 0;
-  final dtBase = new DateTime(2012, 6, 20, 12, 30, 30, 500, microsecond);
-
-  // Millisecond
-  print("  >>> Millisecond+");
-  var dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour,
-      dtBase.minute, dtBase.second, 1000, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second + 1, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  print("  >>> Millisecond-");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour,
-      dtBase.minute, dtBase.second, -1000, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second - 1, dt.second);
-  Expect.equals(0, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  // Second
-  print("  >>> Second+");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour,
-      dtBase.minute, 60, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute + 1, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  print("  >>> Second-");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour,
-      dtBase.minute, -60, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute - 1, dt.minute);
-  Expect.equals(0, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  // Minute
-  print("  >>> Minute+");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, 60,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour + 1, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  print("  >>> Minute-");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour, -60,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour - 1, dt.hour);
-  Expect.equals(0, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  // Hour
-  print("  >>> Hour+");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, 24, dtBase.minute,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day + 1, dt.day);
-  Expect.equals(0, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  print("  >>> Hour-");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, -24, dtBase.minute,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day - 1, dt.day);
-  Expect.equals(0, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  // Day
-  print("  >>> Day+");
-  dt = new DateTime(dtBase.year, dtBase.month, 31, dtBase.hour, dtBase.minute,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month + 1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  print("  >>> Day-");
-  dt = new DateTime(dtBase.year, dtBase.month, -30, dtBase.hour, dtBase.minute,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month - 1, dt.month);
-  Expect.equals(1, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  // Month
-  print("  >>> Month+");
-  dt = new DateTime(dtBase.year, 13, dtBase.day, dtBase.hour, dtBase.minute,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year + 1, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  print("  >>> Month-");
-  dt = new DateTime(dtBase.year, -11, dtBase.day, dtBase.hour, dtBase.minute,
-      dtBase.second, dtBase.millisecond, dtBase.microsecond);
-  Expect.equals(dtBase.year - 1, dt.year);
-  Expect.equals(1, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond, dt.millisecond);
-  Expect.equals(dtBase.microsecond, dt.microsecond);
-
-  // Flowing all the way up the chain.
-  print("  >>> Flow+");
-  var dtBase1 = new DateTime(2012, 12, 31, 23, 59, 59, 999, 000);
-  var dtTick = new DateTime(
-      dtBase1.year,
-      dtBase1.month,
-      dtBase1.day,
-      dtBase1.hour,
-      dtBase1.minute,
-      dtBase1.second,
-      dtBase1.millisecond + 1,
-      dtBase1.microsecond);
-  Expect.equals(dtBase1.year + 1, dtTick.year);
-  Expect.equals(1, dtTick.month);
-  Expect.equals(1, dtTick.day);
-  Expect.equals(0, dtTick.hour);
-  Expect.equals(0, dtTick.minute);
-  Expect.equals(0, dtTick.second);
-  Expect.equals(0, dtTick.millisecond);
-  Expect.equals(0, dtTick.microsecond);
-
-  print("  >>> Flow-");
-  dtBase1 = new DateTime(2012, 1, 1, 0, 0, 0, 0);
-  dtTick = new DateTime(
-      dtBase1.year,
-      dtBase1.month,
-      dtBase1.day,
-      dtBase1.hour,
-      dtBase1.minute,
-      dtBase1.second,
-      dtBase1.millisecond - 1,
-      dtBase1.microsecond);
-  Expect.equals(dtBase1.year - 1, dtTick.year);
-  Expect.equals(12, dtTick.month);
-  Expect.equals(31, dtTick.day);
-  Expect.equals(23, dtTick.hour);
-  Expect.equals(59, dtTick.minute);
-  Expect.equals(59, dtTick.second);
-  Expect.equals(999, dtTick.millisecond);
-  Expect.equals(0, dtTick.microsecond);
-
-  print("  >>> extra underflow");
-  dtTick = new DateTime(dtBase1.year, dtBase1.month, dtBase1.day, -17520,
-      dtBase1.minute, dtBase1.second, dtBase1.millisecond, dtBase1.microsecond);
-  Expect.equals(dtBase1.year - 2, dtTick.year);
-  Expect.equals(dtBase1.month, dtTick.month);
-  Expect.equals(dtBase1.day, dtTick.day);
-  Expect.equals(dtBase1.hour, dtTick.hour);
-  Expect.equals(dtBase1.minute, dtTick.minute);
-  Expect.equals(dtBase1.second, dtTick.second);
-  Expect.equals(dtBase1.millisecond, dtTick.millisecond);
-  Expect.equals(dtBase1.microsecond, dtTick.microsecond);
-
-  if (!supportsMicroseconds) return;
-
-  // Microsecond
-  print("  >>> Microsecond+");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour,
-      dtBase.minute, dtBase.second, dtBase.millisecond, 1000);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond + 1, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-
-  print("  >>> Microsecond-");
-  dt = new DateTime(dtBase.year, dtBase.month, dtBase.day, dtBase.hour,
-      dtBase.minute, dtBase.second, dtBase.millisecond, -1000);
-  Expect.equals(dtBase.year, dt.year);
-  Expect.equals(dtBase.month, dt.month);
-  Expect.equals(dtBase.day, dt.day);
-  Expect.equals(dtBase.hour, dt.hour);
-  Expect.equals(dtBase.minute, dt.minute);
-  Expect.equals(dtBase.second, dt.second);
-  Expect.equals(dtBase.millisecond - 1, dt.millisecond);
-  Expect.equals(0, dt.microsecond);
-
-  // Flowing all the way up the chain.
-  print("  >>> Flow+ 2");
-  dtBase1 = new DateTime(2012, 12, 31, 23, 59, 59, 999, 999);
-  dtTick = new DateTime(
-      dtBase1.year,
-      dtBase1.month,
-      dtBase1.day,
-      dtBase1.hour,
-      dtBase1.minute,
-      dtBase1.second,
-      dtBase1.millisecond,
-      dtBase1.microsecond + 1);
-  Expect.equals(dtBase1.year + 1, dtTick.year);
-  Expect.equals(1, dtTick.month);
-  Expect.equals(1, dtTick.day);
-  Expect.equals(0, dtTick.hour);
-  Expect.equals(0, dtTick.minute);
-  Expect.equals(0, dtTick.second);
-  Expect.equals(0, dtTick.millisecond);
-  Expect.equals(0, dtTick.microsecond);
-
-  print("  >>> Flow- 2");
-  dtBase1 = new DateTime(2012, 1, 1, 0, 0, 0, 0, 0);
-  dtTick = new DateTime(
-      dtBase1.year,
-      dtBase1.month,
-      dtBase1.day,
-      dtBase1.hour,
-      dtBase1.minute,
-      dtBase1.second,
-      dtBase1.millisecond,
-      dtBase1.microsecond - 1);
-  Expect.equals(dtBase1.year - 1, dtTick.year);
-  Expect.equals(12, dtTick.month);
-  Expect.equals(31, dtTick.day);
-  Expect.equals(23, dtTick.hour);
-  Expect.equals(59, dtTick.minute);
-  Expect.equals(59, dtTick.second);
-  Expect.equals(999, dtTick.millisecond);
-  Expect.equals(999, dtTick.microsecond);
-}
-
-void testDateStrings() {
-  // TODO(floitsch): Clean up the DateTime API that deals with strings.
-  var dt1 = DateTime.parse("2011-05-11 18:58:35Z");
-  Expect.equals(1305140315000, dt1.millisecondsSinceEpoch);
-  Expect.isTrue(dt1.isUtc);
-  dt1 = DateTime.parse("20110511 18:58:35z");
-  Expect.equals(1305140315000, dt1.millisecondsSinceEpoch);
-  Expect.isTrue(dt1.isUtc);
-  dt1 = DateTime.parse("+20110511 18:58:35z");
-  Expect.equals(1305140315000, dt1.millisecondsSinceEpoch);
-  Expect.isTrue(dt1.isUtc);
-  var str = dt1.toString();
-  var dt2 = DateTime.parse(str);
-  Expect.equals(true, dt1 == dt2);
-  var dt3 = dt1.toUtc();
-  str = dt3.toString();
-  Expect.equals("2011-05-11 18:58:35.000Z", str);
-  var dt4 = DateTime.parse("-1234-01-01 00:00:00Z");
-  Expect.equals(-1234, dt4.year);
-  Expect.equals(1, dt4.month);
-  Expect.equals(1, dt4.day);
-  Expect.equals(0, dt4.hour);
-  Expect.equals(0, dt4.minute);
-  Expect.equals(0, dt4.second);
-  Expect.equals(0, dt4.millisecond);
-  Expect.equals(0, dt4.microsecond);
-  Expect.isTrue(dt4.isUtc);
-  var dt5 = DateTime.parse("0099-01-02");
-  Expect.equals(99, dt5.year);
-  Expect.equals(1, dt5.month);
-  Expect.equals(2, dt5.day);
-  Expect.equals(0, dt5.hour);
-  Expect.equals(0, dt5.minute);
-  Expect.equals(0, dt5.second);
-  Expect.equals(0, dt5.millisecond);
-  Expect.equals(0, dt5.microsecond);
-  Expect.isFalse(dt5.isUtc);
-  var dt6 = DateTime.parse("2012-01-01 00:00:10.012");
-  Expect.equals(12, dt6.millisecond);
-  Expect.equals(0, dt6.microsecond);
-  dt6 = DateTime.parse("2012-01-01 00:00:10.003");
-  Expect.equals(3, dt6.millisecond);
-  Expect.equals(0, dt6.microsecond);
-  dt6 = DateTime.parse("2012-01-01 00:00:10.5");
-  Expect.equals(500, dt6.millisecond);
-  Expect.equals(0, dt6.microsecond);
-  dt6 = DateTime.parse("2012-01-01 00:00:10.003Z");
-  Expect.equals(3, dt6.millisecond);
-  Expect.equals(0, dt6.microsecond);
-  dt6 = DateTime.parse("2012-01-01 00:00:10.5z");
-  Expect.equals(500, dt6.millisecond);
-  Expect.equals(0, dt6.microsecond);
-  var dt7 = DateTime.parse("2011-05-11T18:58:35Z");
-  Expect.equals(1305140315000, dt7.millisecondsSinceEpoch);
-  var dt8 = DateTime.parse("-1234-01-01T00:00:00Z");
-  Expect.equals(-1234, dt8.year);
-  Expect.equals(1, dt8.month);
-  Expect.equals(1, dt8.day);
-  Expect.equals(0, dt8.hour);
-  Expect.equals(0, dt8.minute);
-  Expect.equals(0, dt8.second);
-  Expect.equals(0, dt8.millisecond);
-  Expect.equals(0, dt8.microsecond);
-  Expect.isTrue(dt8.isUtc);
-  var dt9 = DateTime.parse("-1234-01-01T00:00:00");
-  Expect.equals(-1234, dt9.year);
-  Expect.equals(1, dt9.month);
-  Expect.equals(1, dt9.day);
-  Expect.equals(0, dt9.hour);
-  Expect.equals(0, dt9.minute);
-  Expect.equals(0, dt9.second);
-  Expect.equals(0, dt9.millisecond);
-  Expect.equals(0, dt9.microsecond);
-  Expect.isFalse(dt9.isUtc);
-  var dt10 = DateTime.parse("-12340101");
-  Expect.equals(-1234, dt10.year);
-  Expect.equals(1, dt10.month);
-  Expect.equals(1, dt10.day);
-  Expect.equals(0, dt10.hour);
-  Expect.equals(0, dt10.minute);
-  Expect.equals(0, dt10.second);
-  Expect.equals(0, dt10.millisecond);
-  Expect.equals(0, dt10.microsecond);
-  Expect.isFalse(dt10.isUtc);
-  dt1 = DateTime.parse("2012-02-27 13:27:00");
-  Expect.equals(2012, dt1.year);
-  Expect.equals(2, dt1.month);
-  Expect.equals(27, dt1.day);
-  Expect.equals(13, dt1.hour);
-  Expect.equals(27, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(0, dt1.microsecond);
-  Expect.equals(false, dt1.isUtc);
-  dt1 = DateTime.parse("2012-02-27 13:27:00.423z");
-  Expect.equals(2012, dt1.year);
-  Expect.equals(2, dt1.month);
-  Expect.equals(27, dt1.day);
-  Expect.equals(13, dt1.hour);
-  Expect.equals(27, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(423, dt1.millisecond);
-  Expect.equals(0, dt1.microsecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("20120227 13:27:00");
-  Expect.equals(2012, dt1.year);
-  Expect.equals(2, dt1.month);
-  Expect.equals(27, dt1.day);
-  Expect.equals(13, dt1.hour);
-  Expect.equals(27, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(0, dt1.microsecond);
-  Expect.equals(false, dt1.isUtc);
-  dt1 = DateTime.parse("20120227T132700");
-  Expect.equals(2012, dt1.year);
-  Expect.equals(2, dt1.month);
-  Expect.equals(27, dt1.day);
-  Expect.equals(13, dt1.hour);
-  Expect.equals(27, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(0, dt1.microsecond);
-  Expect.equals(false, dt1.isUtc);
-  dt1 = DateTime.parse("20120227");
-  Expect.equals(2012, dt1.year);
-  Expect.equals(2, dt1.month);
-  Expect.equals(27, dt1.day);
-  Expect.equals(0, dt1.hour);
-  Expect.equals(0, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(0, dt1.microsecond);
-  Expect.equals(false, dt1.isUtc);
-  dt1 = DateTime.parse("2012-02-27T14Z");
-  Expect.equals(2012, dt1.year);
-  Expect.equals(2, dt1.month);
-  Expect.equals(27, dt1.day);
-  Expect.equals(14, dt1.hour);
-  Expect.equals(0, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(0, dt1.microsecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("-123450101 00:00:00 Z");
-  Expect.equals(-12345, dt1.year);
-  Expect.equals(1, dt1.month);
-  Expect.equals(1, dt1.day);
-  Expect.equals(0, dt1.hour);
-  Expect.equals(0, dt1.minute);
-  Expect.equals(0, dt1.second);
-  Expect.equals(0, dt1.millisecond);
-  Expect.equals(0, dt1.microsecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("1999-01-02 23:59:59.99951");
-  if (supportsMicroseconds) {
-    Expect.equals(1999, dt1.year);
-    Expect.equals(1, dt1.month);
-    Expect.equals(2, dt1.day);
-    Expect.equals(23, dt1.hour);
-    Expect.equals(59, dt1.minute);
-    Expect.equals(59, dt1.second);
-    Expect.equals(999, dt1.millisecond);
-    Expect.equals(510, dt1.microsecond);
-  } else {
-    // We only support millisecond. If the user supplies more data (the "51"
-    // here), we round.
-    Expect.equals(1999, dt1.year);
-    Expect.equals(1, dt1.month);
-    Expect.equals(3, dt1.day);
-    Expect.equals(0, dt1.hour);
-    Expect.equals(0, dt1.minute);
-    Expect.equals(0, dt1.second);
-    Expect.equals(0, dt1.millisecond);
-    Expect.equals(0, dt1.microsecond);
-  }
-  Expect.equals(false, dt1.isUtc);
-  dt1 = DateTime.parse("1999-01-02 23:58:59.99951Z");
-  if (supportsMicroseconds) {
-    Expect.equals(1999, dt1.year);
-    Expect.equals(1, dt1.month);
-    Expect.equals(2, dt1.day);
-    Expect.equals(23, dt1.hour);
-    Expect.equals(58, dt1.minute);
-    Expect.equals(59, dt1.second);
-    Expect.equals(999, dt1.millisecond);
-    Expect.equals(510, dt1.microsecond);
-  } else {
-    Expect.equals(1999, dt1.year);
-    Expect.equals(1, dt1.month);
-    Expect.equals(2, dt1.day);
-    Expect.equals(23, dt1.hour);
-    Expect.equals(59, dt1.minute);
-    Expect.equals(0, dt1.second);
-    Expect.equals(0, dt1.millisecond);
-    Expect.equals(0, dt1.microsecond);
-  }
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009Z");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(9, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009-00");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(9, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009-0000");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(9, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009-02");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(11, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009+0200");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(7, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009+1200");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(8, dt1.day);
-  Expect.equals(21, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009-1200");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(21, dt1.hour);
-  Expect.equals(9, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009-0230");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(9, dt1.day);
-  Expect.equals(11, dt1.hour);
-  Expect.equals(39, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-  dt1 = DateTime.parse("0009-09-09 09:09:09.009-2134");
-  Expect.equals(9, dt1.year);
-  Expect.equals(9, dt1.month);
-  Expect.equals(10, dt1.day);
-  Expect.equals(6, dt1.hour);
-  Expect.equals(43, dt1.minute);
-  Expect.equals(9, dt1.second);
-  Expect.equals(9, dt1.millisecond);
-  Expect.equals(true, dt1.isUtc);
-
-  Expect.throws(() => DateTime.parse("bad"), (e) => e is FormatException);
-  var bad_year =
-      1970 + (_MAX_MILLISECONDS ~/ (1000 * 60 * 60 * 24 * 365.2425)) + 1;
-  Expect.throws(() => DateTime.parse(bad_year.toString() + "-01-01"),
-      (e) => e is FormatException);
-  // The last valid time; should not throw.
-  dt1 = DateTime.parse("275760-09-13T00:00:00.000Z");
-  Expect.throws(() => DateTime.parse("275760-09-14T00:00:00.000Z"),
-      (e) => e is FormatException);
-  Expect.throws(() => DateTime.parse("275760-09-13T00:00:00.001Z"),
-      (e) => e is FormatException);
-  if (supportsMicroseconds) {
-    Expect.throws(() => DateTime.parse("275760-09-13T00:00:00.000001Z"),
-        (e) => e is FormatException);
-  } else {
-    dt1 = DateTime.parse("275760-09-13T00:00:00.000001Z");
-  }
-
-  // first valid time; should not throw.
-  dt1 = DateTime.parse("-271821-04-20T00:00:00.000Z");
-  Expect.throws(() => DateTime.parse("-271821-04-19T23:59:59.999Z"),
-      (e) => e is FormatException);
-
-  if (supportsMicroseconds) {
-    Expect.throws(() => DateTime.parse("-271821-04-19T23:59:59.999999Z"),
-        (e) => e is FormatException);
-  }
-}
-
-void testWeekday() {
-  // 2011-10-06 is Summertime.
-  var d = new DateTime(2011, 10, 6, 0, 45, 37, 0);
-  Expect.equals(DateTime.THURSDAY, d.weekday);
-  d = new DateTime.utc(2011, 10, 6, 0, 45, 37, 0);
-  Expect.equals(DateTime.THURSDAY, d.weekday);
-  d = new DateTime(2011, 10, 5, 23, 45, 37, 0);
-  Expect.equals(DateTime.WEDNESDAY, d.weekday);
-  d = new DateTime.utc(2011, 10, 5, 23, 45, 37, 0);
-  Expect.equals(DateTime.WEDNESDAY, d.weekday);
-  // 1970-01-01 is Wintertime.
-  d = new DateTime(1970, 1, 1, 0, 0, 0, 1);
-  Expect.equals(DateTime.THURSDAY, d.weekday);
-  d = new DateTime.utc(1970, 1, 1, 0, 0, 0, 1);
-  Expect.equals(DateTime.THURSDAY, d.weekday);
-  d = new DateTime.utc(1969, 12, 31, 23, 59, 59, 999);
-  Expect.equals(DateTime.WEDNESDAY, d.weekday);
-  d = new DateTime(1969, 12, 31, 23, 59, 59, 999);
-  Expect.equals(DateTime.WEDNESDAY, d.weekday);
-  d = new DateTime(2011, 10, 4, 23, 45, 37, 0);
-  Expect.equals(DateTime.TUESDAY, d.weekday);
-  d = new DateTime(2011, 10, 3, 23, 45, 37, 0);
-  Expect.equals(DateTime.MONDAY, d.weekday);
-  d = new DateTime(2011, 10, 2, 23, 45, 37, 0);
-  Expect.equals(DateTime.SUNDAY, d.weekday);
-  d = new DateTime(2011, 10, 1, 23, 45, 37, 0);
-  Expect.equals(DateTime.SATURDAY, d.weekday);
-  d = new DateTime(2011, 9, 30, 23, 45, 37, 0);
-  Expect.equals(DateTime.FRIDAY, d.weekday);
-}
-
-void testToStrings() {
-  void test(date, time) {
-    {
-      // UTC time.
-      String source1 = "$date ${time}Z";
-      String source2 = "${date}T${time}Z";
-      var utcTime1 = DateTime.parse(source1);
-      var utcTime2 = DateTime.parse(source2);
-      Expect.isTrue(utcTime1.isUtc);
-      Expect.equals(utcTime1, utcTime2);
-      Expect.equals(source1, utcTime1.toString());
-      Expect.equals(source2, utcTime1.toIso8601String());
-    }
-    {
-      // Local time
-      String source1 = "$date $time";
-      String source2 = "${date}T$time";
-      var utcTime1 = DateTime.parse(source1);
-      var utcTime2 = DateTime.parse(source2);
-      Expect.isFalse(utcTime1.isUtc);
-      Expect.equals(utcTime1, utcTime2);
-      Expect.equals(source1, utcTime1.toString());
-      Expect.equals(source2, utcTime1.toIso8601String());
-    }
-  }
-
-  test("2000-01-01", "12:00:00.000");
-  test("-2000-01-01", "12:00:00.000");
-  test("1970-01-01", "00:00:00.000");
-  test("1969-12-31", "23:59:59.999");
-  test("1969-09-09", "00:09:09.009");
-
-  if (supportsMicroseconds) {
-    test("2000-01-01", "12:00:00.000001");
-    test("-2000-01-01", "12:00:00.000001");
-    test("1970-01-01", "00:00:00.000001");
-    test("1969-12-31", "23:59:59.999999");
-    test("1969-09-09", "00:09:09.009999");
-  }
-}
-
-void testIsoString() {
-  var d = new DateTime(9999, 1, 1, 23, 59, 59, 999);
-  Expect.equals("9999-01-01T23:59:59.999", d.toIso8601String());
-  d = new DateTime(-9999, 1, 1, 23, 59, 59, 999);
-  Expect.equals("-9999-01-01T23:59:59.999", d.toIso8601String());
-  d = new DateTime.utc(9999, 1, 1, 23, 59, 59, 999);
-  Expect.equals("9999-01-01T23:59:59.999Z", d.toIso8601String());
-  d = new DateTime.utc(-9999, 1, 1, 23, 59, 59, 999);
-  Expect.equals("-9999-01-01T23:59:59.999Z", d.toIso8601String());
-
-  d = new DateTime(10000, 1, 1, 23, 59, 59, 999);
-  Expect.equals("+010000-01-01T23:59:59.999", d.toIso8601String());
-  d = new DateTime(-10000, 1, 1, 23, 59, 59, 999);
-  Expect.equals("-010000-01-01T23:59:59.999", d.toIso8601String());
-  d = new DateTime.utc(10000, 1, 1, 23, 59, 59, 999);
-  Expect.equals("+010000-01-01T23:59:59.999Z", d.toIso8601String());
-  d = new DateTime.utc(-10000, 1, 1, 23, 59, 59, 999);
-  Expect.equals("-010000-01-01T23:59:59.999Z", d.toIso8601String());
-
-  if (!supportsMicroseconds) return;
-
-  d = new DateTime(9999, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("9999-01-01T23:59:59.999999", d.toIso8601String());
-  d = new DateTime(-9999, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("-9999-01-01T23:59:59.999999", d.toIso8601String());
-  d = new DateTime.utc(9999, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("9999-01-01T23:59:59.999999Z", d.toIso8601String());
-  d = new DateTime.utc(-9999, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("-9999-01-01T23:59:59.999999Z", d.toIso8601String());
-
-  d = new DateTime(10000, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("+010000-01-01T23:59:59.999999", d.toIso8601String());
-  d = new DateTime(-10000, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("-010000-01-01T23:59:59.999999", d.toIso8601String());
-  d = new DateTime.utc(10000, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("+010000-01-01T23:59:59.999999Z", d.toIso8601String());
-  d = new DateTime.utc(-10000, 1, 1, 23, 59, 59, 999, 999);
-  Expect.equals("-010000-01-01T23:59:59.999999Z", d.toIso8601String());
-
-  d = new DateTime(9999, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("9999-01-01T23:49:59.989979", d.toIso8601String());
-  d = new DateTime(-9999, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("-9999-01-01T23:49:59.989979", d.toIso8601String());
-  d = new DateTime.utc(9999, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("9999-01-01T23:49:59.989979Z", d.toIso8601String());
-  d = new DateTime.utc(-9999, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("-9999-01-01T23:49:59.989979Z", d.toIso8601String());
-
-  d = new DateTime(10000, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("+010000-01-01T23:49:59.989979", d.toIso8601String());
-  d = new DateTime(-10000, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("-010000-01-01T23:49:59.989979", d.toIso8601String());
-  d = new DateTime.utc(10000, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("+010000-01-01T23:49:59.989979Z", d.toIso8601String());
-  d = new DateTime.utc(-10000, 1, 1, 23, 49, 59, 989, 979);
-  Expect.equals("-010000-01-01T23:49:59.989979Z", d.toIso8601String());
-}
-
-void main() {
-  testNow();
-  testMillisecondsSinceEpoch();
-  testMicrosecondsSinceEpoch();
-  testConstructors();
-  testUTCGetters();
-  testLocalGetters();
-  testChangeTimeZone();
-  testSubAdd();
-  testUnderflowAndOverflow();
-  testDateStrings();
-  testEquivalentYears();
-  testExtremes();
-  testFarAwayDates();
-  testWeekday();
-  testToStrings();
-  testIsoString();
-}
diff --git a/tests/corelib/double_ceil2_test.dart b/tests/corelib/double_ceil2_test.dart
deleted file mode 100644
index b82daec..0000000
--- a/tests/corelib/double_ceil2_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.throws(() => double.INFINITY.ceil(), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => double.NEGATIVE_INFINITY.ceil(), (e) => e is UnsupportedError);
-  Expect.throws(() => double.NAN.ceil(), (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/double_ceil_test.dart b/tests/corelib/double_ceil_test.dart
deleted file mode 100644
index 9901d09..0000000
--- a/tests/corelib/double_ceil_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.0.ceil());
-  Expect.equals(1, double.MIN_POSITIVE.ceil());
-  Expect.equals(1, (2.0 * double.MIN_POSITIVE).ceil());
-  Expect.equals(1, (1.18e-38).ceil());
-  Expect.equals(1, (1.18e-38 * 2).ceil());
-  Expect.equals(1, 0.49999999999999994.ceil());
-  Expect.equals(1, 0.5.ceil());
-  Expect.equals(1, 0.9999999999999999.ceil());
-  Expect.equals(1, 1.0.ceil());
-  Expect.equals(2, 1.000000000000001.ceil());
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496, 4503599627370496.0.ceil());
-  Expect.equals(4503599627370497, 4503599627370497.0.ceil());
-  Expect.equals(4503599627370498, 4503599627370498.0.ceil());
-  Expect.equals(4503599627370499, 4503599627370499.0.ceil());
-
-  Expect.equals(9007199254740991, 9007199254740991.0.ceil());
-  Expect.equals(9007199254740992, 9007199254740992.0.ceil());
-  Expect.equals(
-      179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      double.MAX_FINITE.ceil());
-
-  Expect.equals(0, (-double.MIN_POSITIVE).ceil());
-  Expect.equals(0, (2.0 * -double.MIN_POSITIVE).ceil());
-  Expect.equals(0, (-1.18e-38).ceil());
-  Expect.equals(0, (-1.18e-38 * 2).ceil());
-  Expect.equals(0, (-0.49999999999999994).ceil());
-  Expect.equals(0, (-0.5).ceil());
-  Expect.equals(0, (-0.9999999999999999).ceil());
-  Expect.equals(-1, (-1.0).ceil());
-  Expect.equals(-1, (-1.000000000000001).ceil());
-  Expect.equals(-4503599627370496, (-4503599627370496.0).ceil());
-  Expect.equals(-4503599627370497, (-4503599627370497.0).ceil());
-  Expect.equals(-4503599627370498, (-4503599627370498.0).ceil());
-  Expect.equals(-4503599627370499, (-4503599627370499.0).ceil());
-  Expect.equals(-9007199254740991, (-9007199254740991.0).ceil());
-  Expect.equals(-9007199254740992, (-9007199254740992.0).ceil());
-  Expect.equals(
-      -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      (-double.MAX_FINITE).ceil());
-
-  Expect.isTrue(0.0.ceil() is int);
-  Expect.isTrue(double.MIN_POSITIVE.ceil() is int);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).ceil() is int);
-  Expect.isTrue((1.18e-38).ceil() is int);
-  Expect.isTrue((1.18e-38 * 2).ceil() is int);
-  Expect.isTrue(0.49999999999999994.ceil() is int);
-  Expect.isTrue(0.5.ceil() is int);
-  Expect.isTrue(0.9999999999999999.ceil() is int);
-  Expect.isTrue(1.0.ceil() is int);
-  Expect.isTrue(1.000000000000001.ceil() is int);
-  Expect.isTrue(4503599627370496.0.ceil() is int);
-  Expect.isTrue(4503599627370497.0.ceil() is int);
-  Expect.isTrue(4503599627370498.0.ceil() is int);
-  Expect.isTrue(4503599627370499.0.ceil() is int);
-  Expect.isTrue(9007199254740991.0.ceil() is int);
-  Expect.isTrue(9007199254740992.0.ceil() is int);
-  Expect.isTrue(double.MAX_FINITE.ceil() is int);
-
-  Expect.isTrue((-double.MIN_POSITIVE).ceil() is int);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).ceil() is int);
-  Expect.isTrue((-1.18e-38).ceil() is int);
-  Expect.isTrue((-1.18e-38 * 2).ceil() is int);
-  Expect.isTrue((-0.49999999999999994).ceil() is int);
-  Expect.isTrue((-0.5).ceil() is int);
-  Expect.isTrue((-0.9999999999999999).ceil() is int);
-  Expect.isTrue((-1.0).ceil() is int);
-  Expect.isTrue((-1.000000000000001).ceil() is int);
-  Expect.isTrue((-4503599627370496.0).ceil() is int);
-  Expect.isTrue((-4503599627370497.0).ceil() is int);
-  Expect.isTrue((-4503599627370498.0).ceil() is int);
-  Expect.isTrue((-4503599627370499.0).ceil() is int);
-  Expect.isTrue((-9007199254740991.0).ceil() is int);
-  Expect.isTrue((-9007199254740992.0).ceil() is int);
-  Expect.isTrue((-double.MAX_FINITE).ceil() is int);
-}
diff --git a/tests/corelib/double_ceil_to_double_test.dart b/tests/corelib/double_ceil_to_double_test.dart
deleted file mode 100644
index 46774e7..0000000
--- a/tests/corelib/double_ceil_to_double_test.dart
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.0.ceilToDouble());
-  Expect.equals(1.0, double.MIN_POSITIVE.ceilToDouble());
-  Expect.equals(1.0, (2.0 * double.MIN_POSITIVE).ceilToDouble());
-  Expect.equals(1.0, (1.18e-38).ceilToDouble());
-  Expect.equals(1.0, (1.18e-38 * 2).ceilToDouble());
-  Expect.equals(1.0, 0.49999999999999994.ceilToDouble());
-  Expect.equals(1.0, 0.5.ceilToDouble());
-  Expect.equals(1.0, 0.9999999999999999.ceilToDouble());
-  Expect.equals(1.0, 1.0.ceilToDouble());
-  Expect.equals(2.0, 1.000000000000001.ceilToDouble());
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496.0, 4503599627370496.0.ceilToDouble());
-  Expect.equals(4503599627370497.0, 4503599627370497.0.ceilToDouble());
-  Expect.equals(4503599627370498.0, 4503599627370498.0.ceilToDouble());
-  Expect.equals(4503599627370499.0, 4503599627370499.0.ceilToDouble());
-
-  Expect.equals(9007199254740991.0, 9007199254740991.0.ceilToDouble());
-  Expect.equals(9007199254740992.0, 9007199254740992.0.ceilToDouble());
-  Expect.equals(double.MAX_FINITE, double.MAX_FINITE.ceilToDouble());
-
-  Expect.equals(0.0, (-double.MIN_POSITIVE).ceilToDouble());
-  Expect.equals(0.0, (2.0 * -double.MIN_POSITIVE).ceilToDouble());
-  Expect.equals(0.0, (-1.18e-38).ceilToDouble());
-  Expect.equals(0.0, (-1.18e-38 * 2).ceilToDouble());
-  Expect.equals(0.0, (-0.49999999999999994).ceilToDouble());
-  Expect.equals(0.0, (-0.5).ceilToDouble());
-  Expect.equals(0.0, (-0.9999999999999999).ceilToDouble());
-  Expect.equals(-1.0, (-1.0).ceilToDouble());
-  Expect.equals(-1.0, (-1.000000000000001).ceilToDouble());
-  Expect.equals(-4503599627370496.0, (-4503599627370496.0).ceilToDouble());
-  Expect.equals(-4503599627370497.0, (-4503599627370497.0).ceilToDouble());
-  Expect.equals(-4503599627370498.0, (-4503599627370498.0).ceilToDouble());
-  Expect.equals(-4503599627370499.0, (-4503599627370499.0).ceilToDouble());
-  Expect.equals(-9007199254740991.0, (-9007199254740991.0).ceilToDouble());
-  Expect.equals(-9007199254740992.0, (-9007199254740992.0).ceilToDouble());
-  Expect.equals(-double.MAX_FINITE, (-double.MAX_FINITE).ceilToDouble());
-
-  Expect.equals(double.INFINITY, double.INFINITY.ceilToDouble());
-  Expect.equals(
-      double.NEGATIVE_INFINITY, double.NEGATIVE_INFINITY.ceilToDouble());
-  Expect.isTrue(double.NAN.ceilToDouble().isNaN);
-
-  Expect.isTrue(0.0.ceilToDouble() is double);
-  Expect.isTrue(double.MIN_POSITIVE.ceilToDouble() is double);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).ceilToDouble() is double);
-  Expect.isTrue((1.18e-38).ceilToDouble() is double);
-  Expect.isTrue((1.18e-38 * 2).ceilToDouble() is double);
-  Expect.isTrue(0.49999999999999994.ceilToDouble() is double);
-  Expect.isTrue(0.5.ceilToDouble() is double);
-  Expect.isTrue(0.9999999999999999.ceilToDouble() is double);
-  Expect.isTrue(1.0.ceilToDouble() is double);
-  Expect.isTrue(1.000000000000001.ceilToDouble() is double);
-  Expect.isTrue(4503599627370496.0.ceilToDouble() is double);
-  Expect.isTrue(4503599627370497.0.ceilToDouble() is double);
-  Expect.isTrue(4503599627370498.0.ceilToDouble() is double);
-  Expect.isTrue(4503599627370499.0.ceilToDouble() is double);
-  Expect.isTrue(9007199254740991.0.ceilToDouble() is double);
-  Expect.isTrue(9007199254740992.0.ceilToDouble() is double);
-  Expect.isTrue(double.MAX_FINITE.ceilToDouble() is double);
-
-  Expect.isTrue((-double.MIN_POSITIVE).ceilToDouble().isNegative);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).ceilToDouble().isNegative);
-  Expect.isTrue((-1.18e-38).ceilToDouble().isNegative);
-  Expect.isTrue((-1.18e-38 * 2).ceilToDouble().isNegative);
-  Expect.isTrue((-0.49999999999999994).ceilToDouble().isNegative);
-  Expect.isTrue((-0.5).ceilToDouble().isNegative);
-  Expect.isTrue((-0.9999999999999999).ceilToDouble().isNegative);
-
-  Expect.isTrue((-double.MIN_POSITIVE).ceilToDouble() is double);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).ceilToDouble() is double);
-  Expect.isTrue((-1.18e-38).ceilToDouble() is double);
-  Expect.isTrue((-1.18e-38 * 2).ceilToDouble() is double);
-  Expect.isTrue((-0.49999999999999994).ceilToDouble() is double);
-  Expect.isTrue((-0.5).ceilToDouble() is double);
-  Expect.isTrue((-0.9999999999999999).ceilToDouble() is double);
-  Expect.isTrue((-1.0).ceilToDouble() is double);
-  Expect.isTrue((-1.000000000000001).ceilToDouble() is double);
-  Expect.isTrue((-4503599627370496.0).ceilToDouble() is double);
-  Expect.isTrue((-4503599627370497.0).ceilToDouble() is double);
-  Expect.isTrue((-4503599627370498.0).ceilToDouble() is double);
-  Expect.isTrue((-4503599627370499.0).ceilToDouble() is double);
-  Expect.isTrue((-9007199254740991.0).ceilToDouble() is double);
-  Expect.isTrue((-9007199254740992.0).ceilToDouble() is double);
-  Expect.isTrue((-double.MAX_FINITE).ceilToDouble() is double);
-}
diff --git a/tests/corelib/double_compare_test.dart b/tests/corelib/double_compare_test.dart
deleted file mode 100644
index c5a426e..0000000
--- a/tests/corelib/double_compare_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing 'compare' on doubles.
-
-void main() {
-  Expect.equals(0, (0.0).compareTo(0.0));
-  Expect.equals(0, (1.0).compareTo(1.0));
-  Expect.equals(0, (-2.0).compareTo(-2.0));
-  Expect.equals(0, (1e-50).compareTo(1e-50));
-  Expect.equals(0, (-2e50).compareTo(-2e50));
-  Expect.equals(0, double.NAN.compareTo(double.NAN));
-  Expect.equals(0, double.INFINITY.compareTo(double.INFINITY));
-  Expect.equals(
-      0, double.NEGATIVE_INFINITY.compareTo(double.NEGATIVE_INFINITY));
-  Expect.equals(0, (-0.0).compareTo(-0.0));
-  Expect.isTrue((0.0).compareTo(1.0) < 0);
-  Expect.isTrue((1.0).compareTo(0.0) > 0);
-  Expect.isTrue((0.0).compareTo(-1.0) > 0);
-  Expect.isTrue((-1.0).compareTo(0.0) < 0);
-  Expect.isTrue((0.0).compareTo(1234e11) < 0);
-  Expect.isTrue((123e-112).compareTo(0.0) > 0);
-  Expect.isTrue((0.0).compareTo(-123.0e12) > 0);
-  Expect.isTrue((-1.0e8).compareTo(0.0) < 0);
-
-  double maxDouble = 1.7976931348623157e308;
-  Expect.equals(0, maxDouble.compareTo(maxDouble));
-  Expect.isTrue(maxDouble.compareTo(double.INFINITY) < 0);
-  Expect.isTrue(double.INFINITY.compareTo(maxDouble) > 0);
-
-  double negMaxDouble = -maxDouble;
-  Expect.equals(0, negMaxDouble.compareTo(negMaxDouble));
-  Expect.isTrue(double.NEGATIVE_INFINITY.compareTo(negMaxDouble) < 0);
-  Expect.isTrue(negMaxDouble.compareTo(double.NEGATIVE_INFINITY) > 0);
-
-  Expect.isTrue((-0.0).compareTo(0.0) < 0);
-  Expect.isTrue((0.0).compareTo(-0.0) > 0);
-  Expect.isTrue(double.NAN.compareTo(double.INFINITY) > 0);
-  Expect.isTrue(double.NAN.compareTo(double.NEGATIVE_INFINITY) > 0);
-  Expect.isTrue(double.INFINITY.compareTo(double.NAN) < 0);
-  Expect.isTrue(double.NEGATIVE_INFINITY.compareTo(double.NAN) < 0);
-  Expect.isTrue(maxDouble.compareTo(double.NAN) < 0);
-  Expect.isTrue(negMaxDouble.compareTo(double.NAN) < 0);
-  Expect.isTrue(double.NAN.compareTo(maxDouble) > 0);
-  Expect.isTrue(double.NAN.compareTo(negMaxDouble) > 0);
-}
diff --git a/tests/corelib/double_floor2_test.dart b/tests/corelib/double_floor2_test.dart
deleted file mode 100644
index a838088..0000000
--- a/tests/corelib/double_floor2_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.throws(() => double.INFINITY.floor(), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => double.NEGATIVE_INFINITY.floor(), (e) => e is UnsupportedError);
-  Expect.throws(() => double.NAN.floor(), (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/double_floor_test.dart b/tests/corelib/double_floor_test.dart
deleted file mode 100644
index e773275..0000000
--- a/tests/corelib/double_floor_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.0.floor());
-  Expect.equals(0, double.MIN_POSITIVE.floor());
-  Expect.equals(0, (2.0 * double.MIN_POSITIVE).floor());
-  Expect.equals(0, (1.18e-38).floor());
-  Expect.equals(0, (1.18e-38 * 2).floor());
-  Expect.equals(0, 0.49999999999999994.floor());
-  Expect.equals(0, 0.5.floor());
-  Expect.equals(0, 0.9999999999999999.floor());
-  Expect.equals(1, 1.0.floor());
-  Expect.equals(1, 1.000000000000001.floor());
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496, 4503599627370496.0.floor());
-  Expect.equals(4503599627370497, 4503599627370497.0.floor());
-  Expect.equals(4503599627370498, 4503599627370498.0.floor());
-  Expect.equals(4503599627370499, 4503599627370499.0.floor());
-
-  Expect.equals(9007199254740991, 9007199254740991.0.floor());
-  Expect.equals(9007199254740992, 9007199254740992.0.floor());
-  Expect.equals(
-      179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      double.MAX_FINITE.floor());
-
-  Expect.equals(-1, (-double.MIN_POSITIVE).floor());
-  Expect.equals(-1, (2.0 * -double.MIN_POSITIVE).floor());
-  Expect.equals(-1, (-1.18e-38).floor());
-  Expect.equals(-1, (-1.18e-38 * 2).floor());
-  Expect.equals(-1, (-0.49999999999999994).floor());
-  Expect.equals(-1, (-0.5).floor());
-  Expect.equals(-1, (-0.9999999999999999).floor());
-  Expect.equals(-1, (-1.0).floor());
-  Expect.equals(-2, (-1.000000000000001).floor());
-  Expect.equals(-4503599627370496, (-4503599627370496.0).floor());
-  Expect.equals(-4503599627370497, (-4503599627370497.0).floor());
-  Expect.equals(-4503599627370498, (-4503599627370498.0).floor());
-  Expect.equals(-4503599627370499, (-4503599627370499.0).floor());
-  Expect.equals(-9007199254740991, (-9007199254740991.0).floor());
-  Expect.equals(-9007199254740992, (-9007199254740992.0).floor());
-  Expect.equals(
-      -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      (-double.MAX_FINITE).floor());
-
-  Expect.isTrue(0.0.floor() is int);
-  Expect.isTrue(double.MIN_POSITIVE.floor() is int);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).floor() is int);
-  Expect.isTrue((1.18e-38).floor() is int);
-  Expect.isTrue((1.18e-38 * 2).floor() is int);
-  Expect.isTrue(0.49999999999999994.floor() is int);
-  Expect.isTrue(0.5.floor() is int);
-  Expect.isTrue(0.9999999999999999.floor() is int);
-  Expect.isTrue(1.0.floor() is int);
-  Expect.isTrue(1.000000000000001.floor() is int);
-  Expect.isTrue(4503599627370496.0.floor() is int);
-  Expect.isTrue(4503599627370497.0.floor() is int);
-  Expect.isTrue(4503599627370498.0.floor() is int);
-  Expect.isTrue(4503599627370499.0.floor() is int);
-  Expect.isTrue(9007199254740991.0.floor() is int);
-  Expect.isTrue(9007199254740992.0.floor() is int);
-  Expect.isTrue(double.MAX_FINITE.floor() is int);
-
-  Expect.isTrue((-double.MIN_POSITIVE).floor() is int);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).floor() is int);
-  Expect.isTrue((-1.18e-38).floor() is int);
-  Expect.isTrue((-1.18e-38 * 2).floor() is int);
-  Expect.isTrue((-0.49999999999999994).floor() is int);
-  Expect.isTrue((-0.5).floor() is int);
-  Expect.isTrue((-0.9999999999999999).floor() is int);
-  Expect.isTrue((-1.0).floor() is int);
-  Expect.isTrue((-1.000000000000001).floor() is int);
-  Expect.isTrue((-4503599627370496.0).floor() is int);
-  Expect.isTrue((-4503599627370497.0).floor() is int);
-  Expect.isTrue((-4503599627370498.0).floor() is int);
-  Expect.isTrue((-4503599627370499.0).floor() is int);
-  Expect.isTrue((-9007199254740991.0).floor() is int);
-  Expect.isTrue((-9007199254740992.0).floor() is int);
-  Expect.isTrue((-double.MAX_FINITE).floor() is int);
-}
diff --git a/tests/corelib/double_floor_to_double_test.dart b/tests/corelib/double_floor_to_double_test.dart
deleted file mode 100644
index e174d4c..0000000
--- a/tests/corelib/double_floor_to_double_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.0.floorToDouble());
-  Expect.equals(0.0, double.MIN_POSITIVE.floorToDouble());
-  Expect.equals(0.0, (2.0 * double.MIN_POSITIVE).floorToDouble());
-  Expect.equals(0.0, (1.18e-38).floorToDouble());
-  Expect.equals(0.0, (1.18e-38 * 2).floorToDouble());
-  Expect.equals(0.0, 0.49999999999999994.floorToDouble());
-  Expect.equals(0.0, 0.5.floorToDouble());
-  Expect.equals(0.0, 0.9999999999999999.floorToDouble());
-  Expect.equals(1.0, 1.0.floorToDouble());
-  Expect.equals(1.0, 1.000000000000001.floorToDouble());
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496.0, 4503599627370496.0.floorToDouble());
-  Expect.equals(4503599627370497.0, 4503599627370497.0.floorToDouble());
-  Expect.equals(4503599627370498.0, 4503599627370498.0.floorToDouble());
-  Expect.equals(4503599627370499.0, 4503599627370499.0.floorToDouble());
-
-  Expect.equals(9007199254740991.0, 9007199254740991.0.floorToDouble());
-  Expect.equals(9007199254740992.0, 9007199254740992.0.floorToDouble());
-  Expect.equals(double.MAX_FINITE, double.MAX_FINITE.floorToDouble());
-
-  Expect.equals(-1.0, (-double.MIN_POSITIVE).floorToDouble());
-  Expect.equals(-1.0, (2.0 * -double.MIN_POSITIVE).floorToDouble());
-  Expect.equals(-1.0, (-1.18e-38).floorToDouble());
-  Expect.equals(-1.0, (-1.18e-38 * 2).floorToDouble());
-  Expect.equals(-1.0, (-0.49999999999999994).floorToDouble());
-  Expect.equals(-1.0, (-0.5).floorToDouble());
-  Expect.equals(-1.0, (-0.9999999999999999).floorToDouble());
-  Expect.equals(-1.0, (-1.0).floorToDouble());
-  Expect.equals(-2.0, (-1.000000000000001).floorToDouble());
-  Expect.equals(-4503599627370496.0, (-4503599627370496.0).floorToDouble());
-  Expect.equals(-4503599627370497.0, (-4503599627370497.0).floorToDouble());
-  Expect.equals(-4503599627370498.0, (-4503599627370498.0).floorToDouble());
-  Expect.equals(-4503599627370499.0, (-4503599627370499.0).floorToDouble());
-  Expect.equals(-9007199254740991.0, (-9007199254740991.0).floorToDouble());
-  Expect.equals(-9007199254740992.0, (-9007199254740992.0).floorToDouble());
-  Expect.equals(-double.MAX_FINITE, (-double.MAX_FINITE).floorToDouble());
-
-  Expect.equals(double.INFINITY, double.INFINITY.floorToDouble());
-  Expect.equals(
-      double.NEGATIVE_INFINITY, double.NEGATIVE_INFINITY.floorToDouble());
-  Expect.isTrue(double.NAN.floorToDouble().isNaN);
-
-  Expect.isTrue(0.0.floorToDouble() is double);
-  Expect.isTrue(double.MIN_POSITIVE.floorToDouble() is double);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).floorToDouble() is double);
-  Expect.isTrue((1.18e-38).floorToDouble() is double);
-  Expect.isTrue((1.18e-38 * 2).floorToDouble() is double);
-  Expect.isTrue(0.49999999999999994.floorToDouble() is double);
-  Expect.isTrue(0.5.floorToDouble() is double);
-  Expect.isTrue(0.9999999999999999.floorToDouble() is double);
-  Expect.isTrue(1.0.floorToDouble() is double);
-  Expect.isTrue(1.000000000000001.floorToDouble() is double);
-  Expect.isTrue(4503599627370496.0.floorToDouble() is double);
-  Expect.isTrue(4503599627370497.0.floorToDouble() is double);
-  Expect.isTrue(4503599627370498.0.floorToDouble() is double);
-  Expect.isTrue(4503599627370499.0.floorToDouble() is double);
-  Expect.isTrue(9007199254740991.0.floorToDouble() is double);
-  Expect.isTrue(9007199254740992.0.floorToDouble() is double);
-  Expect.isTrue(double.MAX_FINITE.floorToDouble() is double);
-
-  Expect.isTrue((-double.MIN_POSITIVE).floorToDouble() is double);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).floorToDouble() is double);
-  Expect.isTrue((-1.18e-38).floorToDouble() is double);
-  Expect.isTrue((-1.18e-38 * 2).floorToDouble() is double);
-  Expect.isTrue((-0.49999999999999994).floorToDouble() is double);
-  Expect.isTrue((-0.5).floorToDouble() is double);
-  Expect.isTrue((-0.9999999999999999).floorToDouble() is double);
-  Expect.isTrue((-1.0).floorToDouble() is double);
-  Expect.isTrue((-1.000000000000001).floorToDouble() is double);
-  Expect.isTrue((-4503599627370496.0).floorToDouble() is double);
-  Expect.isTrue((-4503599627370497.0).floorToDouble() is double);
-  Expect.isTrue((-4503599627370498.0).floorToDouble() is double);
-  Expect.isTrue((-4503599627370499.0).floorToDouble() is double);
-  Expect.isTrue((-9007199254740991.0).floorToDouble() is double);
-  Expect.isTrue((-9007199254740992.0).floorToDouble() is double);
-  Expect.isTrue((-double.MAX_FINITE).floorToDouble() is double);
-}
diff --git a/tests/corelib/double_parse_test.dart b/tests/corelib/double_parse_test.dart
deleted file mode 100644
index 9cfdea1..0000000
--- a/tests/corelib/double_parse_test.dart
+++ /dev/null
@@ -1,1196 +0,0 @@
-// Copyright (c) 2014 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-use-field-guards
-// VMOptions=
-
-import "dart:math" show pow;
-import "package:expect/expect.dart";
-
-const whiteSpace = const [
-  "",
-  "\x09",
-  "\x0a",
-  "\x0b",
-  "\x0c",
-  "\x0d",
-  "\x85", //   //# 01: ok
-  "\xa0",
-  "\u1680",
-  "\u2000",
-  "\u2001",
-  "\u2002",
-  "\u2003",
-  "\u2004",
-  "\u2005",
-  "\u2006",
-  "\u2007",
-  "\u2008",
-  "\u2009",
-  "\u200a",
-  "\u2028",
-  "\u2029",
-  "\u202f",
-  "\u205f",
-  "\u3000",
-  "\uFEFF"
-];
-
-void expectNumEquals(double expected, var actual, String message) {
-  if (expected.isNaN) {
-    Expect.isTrue(actual is double && actual.isNaN, "isNaN: $message");
-  } else {
-    Expect.identical(expected, actual, message);
-  }
-}
-
-// Test source surrounded by any combination of whitespace.
-void testParseAllWhitespace(String source, double result) {
-  for (String ws1 in whiteSpace) {
-    for (String ws2 in whiteSpace) {
-      String padded = "$ws1$source$ws2";
-      // Use Expect.identical because it also handles NaN and 0.0/-0.0.
-      // Except on dart2js: http://dartbug.com/11551
-      expectNumEquals(result, double.parse(padded), "parse '$padded'");
-      padded = "$ws1$ws2$source";
-      expectNumEquals(result, double.parse(padded), "parse '$padded'");
-      padded = "$source$ws1$ws2";
-      expectNumEquals(result, double.parse(padded), "parse '$padded'");
-    }
-  }
-}
-
-// Test source and -source surrounded by any combination of whitespace.
-void testParseWhitespace(String source, double result) {
-  assert(result >= 0);
-  testParseAllWhitespace(source, result);
-  testParseAllWhitespace("-$source", -result);
-}
-
-// Test parsing source, optionally preceeded and/or followed by whitespace.
-void testParse(String source, double result, [name = ""]) {
-  expectNumEquals(result, double.parse(source), "parse '$source:$name");
-  expectNumEquals(result, double.parse(" $source"), "parse ' $source':$name");
-  expectNumEquals(result, double.parse("$source "), "parse '$source ':$name");
-  expectNumEquals(result, double.parse(" $source "), "parse ' $source ':$name");
-
-  expectNumEquals(result, double.parse("+$source"), "parse '+$source:$name");
-  expectNumEquals(result, double.parse(" +$source"), "parse ' +$source':$name");
-  expectNumEquals(result, double.parse("+$source "), "parse '+$source ':$name");
-  expectNumEquals(
-      result, double.parse(" +$source "), "parse ' +$source ':$name");
-
-  expectNumEquals(-result, double.parse("-$source"), "parse '-$source:$name");
-  expectNumEquals(
-      -result, double.parse(" -$source"), "parse ' -$source':$name");
-  expectNumEquals(
-      -result, double.parse("-$source "), "parse '-$source ':$name");
-  expectNumEquals(
-      -result, double.parse(" -$source "), "parse ' -$source ':$name");
-}
-
-void testDouble(double value) {
-  testParse("$value", value);
-  if (value.isFinite) {
-    String exp = value.toStringAsExponential();
-    String lcexp = exp.toLowerCase();
-    testParse(lcexp, value);
-    String ucexp = exp.toUpperCase();
-    testParse(ucexp, value);
-  }
-}
-
-void testFail(String source) {
-  var object = new Object();
-  Expect.throws(() {
-    double.parse(source, (s) {
-      Expect.equals(source, s);
-      throw object;
-    });
-  }, (e) => identical(object, e), "Fail: '$source'");
-  Expect.equals(1.5, double.parse(source, (s) => 1.5));
-}
-
-void main() {
-  testDouble(0.0);
-  testDouble(5e-324);
-  testDouble(2.225073858507201e-308);
-  testDouble(2.2250738585072014e-308);
-  testDouble(0.49999999999999994);
-  testDouble(0.5);
-  testDouble(0.50000000000000006);
-  testDouble(0.9999999999999999);
-  testDouble(1.0);
-  testDouble(1.0000000000000002);
-  testDouble(4294967295.0);
-  testDouble(4294967296.0);
-  testDouble(4503599627370495.5);
-  testDouble(4503599627370497.0);
-  testDouble(9007199254740991.0);
-  testDouble(9007199254740992.0);
-  testDouble(1.7976931348623157e+308);
-  testDouble(double.INFINITY);
-  testDouble(double.NAN);
-
-  // Strings that cannot occur from toString of a number.
-  testParse("000000000000", 0.0);
-  testParse("000000000001", 1.0);
-  testParse("000000000000.0000000000000", 0.0);
-  testParse("000000000001.0000000000000", 1.0);
-  testParse("0e0", 0.0);
-  testParse("0e+0", 0.0);
-  testParse("0e-0", 0.0);
-  testParse("1e0", 1.0);
-  testParse("1e+0", 1.0);
-  testParse("1e-0", 1.0);
-  testParse("1.", 1.0);
-  testParse(".1", 0.1);
-  testParse("1.e1", 10.0);
-  testParse(".1e1", 1.0);
-  testParse("Infinity", double.INFINITY);
-  testParse("NaN", double.NAN);
-
-  // Cases where mantissa and 10^exponent are representable as a double.
-  for (int i = -22; i <= 22; i++) {
-    for (double j in [1.0, 9007199254740991.0, 9007199254740992.0]) {
-      var value = (i >= 0) ? j * pow(10.0, i) : j / pow(10.0, -i);
-      testParse("${j}e$i", value, "$i/$j");
-      testParse("${j}E$i", value, "$i/$j");
-      if (i >= 0) {
-        testParse("${j}e+$i", value, "$i/$j");
-        testParse("${j}E+$i", value, "$i/$j");
-      }
-    }
-  }
-  for (int i = 0; i <= 22; i++) {
-    var digits = "9007199254740991";
-    for (int i = 0; i < digits.length; i++) {
-      int dotIndex = digits.length - i;
-      var string = "${digits.substring(0, dotIndex)}."
-          "${digits.substring(dotIndex)}e$i";
-      testParse(string, 9007199254740991.0);
-    }
-  }
-
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000012351641146031163604414219821705534309126495065358119110639"
-      "6420625168876817552187966324959090408998094949141173861429432731"
-      "6641775889849490996936990026954695315751782975778511319614542919"
-      "6224552592217965901424968268076250159685228839124609682811834931"
-      "8292403785007928846349518531559641397792756664639171692046759890"
-      "0776562329863178978731138323263641361002818700324274998854829973"
-      "5227010414083113118928696725368169503983880965288753370088162336"
-      "8004844756702677687292583305671118833393020810798402309572336459"
-      "2015026502876542452438269585569329582311976245631182694093981811"
-      "9686640211945509336174248834117544931694293962814151377997828762"
-      "2277536275946568454181273895934743339974841620248529105142565927"
-      "256981069188614130727188467062660492956638336181640625",
-      0.0);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000024703282292062327208828439643411068618252990130716238221279"
-      "2841250337753635104375932649918180817996189898282347722858865463"
-      "3283551779698981993873980053909390631503565951557022639229085839"
-      "2449105184435931802849936536152500319370457678249219365623669863"
-      "6584807570015857692699037063119282795585513329278343384093519780"
-      "1553124659726357957462276646527282722005637400648549997709659947"
-      "0454020828166226237857393450736339007967761930577506740176324673"
-      "6009689513405355374585166611342237666786041621596804619144672918"
-      "4030053005753084904876539171138659164623952491262365388187963623"
-      "9373280423891018672348497668235089863388587925628302755995657524"
-      "4555072551893136908362547791869486679949683240497058210285131854"
-      "51396213837722826145437693412532098591327667236328125",
-      0.0);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000024703282292062327208828439643411068618252990130716238221279"
-      "2841250337753635104375932649918180817996189898282347722858865463"
-      "3283551779698981993873980053909390631503565951557022639229085839"
-      "2449105184435931802849936536152500319370457678249219365623669863"
-      "6584807570015857692699037063119282795585513329278343384093519780"
-      "1553124659726357957462276646527282722005637400648549997709659947"
-      "0454020828166226237857393450736339007967761930577506740176324673"
-      "6009689513405355374585166611342237666786041621596804619144672918"
-      "4030053005753084904876539171138659164623952491262365388187963623"
-      "9373280423891018672348497668235089863388587925628302755995657524"
-      "4555072551893136908362547791869486679949683240497058210285131854"
-      "51396213837722826145437693412532098591327667236328125",
-      0.0);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000024703282292062327208828439643411068627545332140664243314532" //# 03: ok
-            "8041234170109088178685677591650492652607243027730579814636067699" //# 03: ok
-            "1112238669661707327453443265068702897439863329200619332642599205" //# 03: ok
-            "1806252781222000513169502627641523911022607448403553068808609405" //# 03: ok
-            "1727798181294290864842608522062097649849550765341204993205100587" //# 03: ok
-            "2127469658709242016690593998242808606978027857019419997429604579" //# 03: ok
-            "7572623273334010723772922131119806567715298322567005234345331218" //# 03: ok
-            "5169920860031716486480793611343761679481328431956040281530986197" //# 03: ok
-            "8304604971452253283193290744072288902141724247846767401941767720" //# 03: ok
-            "8561650585989659548591956327689896895290365125294085321852619688" //# 03: ok
-            "9863888974446146846024033780172178553364579041996676675092137151" //# 03: ok
-            "9705456298034409473812692774776868254618683783877327369245051207" //# 03: ok
-            "5931578479504396230612962142122846982018227555473696607567828620" //# 03: ok
-            "5497859173707553281928994692862033843994140625", //                 //# 03: ok
-            5e-324); //                                                          //# 03: ok
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000037054923438093490813242659465116602918087143186126352238665"
-      "4061891674274999582254154033144959392383231717975289492511095959"
-      "2096640779585747657231506869704773681319051549691937265430115392"
-      "9316510179867828993955338712739726887403536747219495345250565253"
-      "9734220743745353366904984135736109339114232557854653467028698863"
-      "1755341990606652876965097618075398198036065644601954996844545287"
-      "8562428797081554870870561495721040952204106503876761616095480465"
-      "4854302923481671949982122917011832487483775622035971266330696098"
-      "1770527542930458978998057183774359009418156980309146068528141338"
-      "9871550473737887132279287842897827763181104688776671568136524122"
-      "1523792405286695424882335699501538146509629059245968850620692484"
-      "3143597161396297062546730578356156393213233025204703880754948792"
-      "4068421520495603769387037857877153017981772444526303392432171379"
-      "4502140826292446718071005307137966156005859375",
-      5e-324);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000037054923438093490813242659465116602927379485196074357331918"
-      "9261875506630452656563898974877271226994284847423521584288298194"
-      "9925327669548472990810970080864085947255348927335533958843628758"
-      "8673657776653897704274904804228750479055686517373829048435504795"
-      "4877211355023786539048555594678924193378269993917515076140279670"
-      "2329686989589536936193414969790924083008456100972824996564489920"
-      "5681031242249339356786090176104508511951642895866260110264487010"
-      "4014534270108033061877749917013356500179062432395206928717009377"
-      "6045079508629627357314808756707988746935928736893548082281945435"
-      "9059920635836528008522746502352634795082881888442454133993486286"
-      "6832608827839705362543821687804230019924524860745587315427697781"
-      "770943207565842392181565401187981478869915008544921875",
-      5e-324);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000037054923438093490813242659465116602936671827206022362425172"
-      "4461859338985905730873643916609583061605337976871753676065500430"
-      "7754014559511198324390433292023398213191646304979130652257142124"
-      "8030805373439966414594470895717774070707836287528162751620444337"
-      "0020201966302219711192127053621739047642307429980376685251860477"
-      "2904031988572420995421732321506449967980846557343694996284434553"
-      "2799633687417123842701618856487976071699179287855758604433493555"
-      "3174765616734394173773376917014880512874349242754442591103322657"
-      "0319631474328795735631560329641618484453700493477950096035749532"
-      "8248290797935168884766205161807441826984659088108236699850448451"
-      "2141425250392715300205307676106921893339420662245205780234703079"
-      "2275266989920550781084577445403473184185067145693733619245051207"
-      "5931578479504396230612962142122846982018227555473696607567828620"
-      "5497859173707553281928994692862033843994140625",
-      5e-324);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000049406564584124654417656879286822137236505980261432476442558"
-      "5682500675507270208751865299836361635992379796564695445717730926"
-      "6567103559397963987747960107818781263007131903114045278458171678"
-      "4898210368871863605699873072305000638740915356498438731247339727"
-      "3169615140031715385398074126238565591171026658556686768187039560"
-      "3106249319452715914924553293054565444011274801297099995419319894"
-      "0908041656332452475714786901472678015935523861155013480352649347"
-      "2019379026810710749170333222684475333572083243193609238289345836"
-      "8060106011506169809753078342277318329247904982524730776375927247"
-      "8746560847782037344696995336470179726777175851256605511991315048"
-      "9110145103786273816725095583738973359899366480994116420570263709"
-      "0279242767544565229087538682506419718265533447265625",
-      5e-324);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000049406564584124654417656879286822137255090664281328486629065"
-      "6082468340218176357371355183300985305214486055461159629272135398"
-      "2224477339323414654906886530137405794879726658401238665285198410"
-      "3612505562444001026339005255283047822045214896807106137617218810"
-      "3455596362588581729685217044124195299699101530682409986410201174"
-      "4254939317418484033381187996485617213956055714038839994859209159"
-      "5145246546668021447545844262239613135430596645134010468690662437"
-      "0339841720063432972961587222687523358962656863912080563061972395"
-      "6609209942904506566386581488144577804283448495693534803883535441"
-      "7123301171979319097183912655379793790580730250588170643705239377"
-      "9727777948892293692048067560344357106729158083993353350184274303"
-      "9410912596068818947625385549553736509237367567754654738490102415"
-      "1863156959008792461225924284245693964036455110947393215135657241"
-      "099571834741510656385798938572406768798828125",
-      5e-324);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000074109846876186981626485318930233205836174286372252704477330"
-      "8123783348549999164508308066289918784766463435950578985022191918"
-      "4193281559171495314463013739409547362638103099383874530860230785"
-      "8633020359735657987910677425479453774807073494438990690501130507"
-      "9468441487490706733809968271472218678228465115709306934057397726"
-      "3510683981213305753930195236150796396072131289203909993689090575"
-      "7124857594163109741741122991442081904408213007753523232190960930"
-      "9708605846963343899964245834023664974967551244071942532661392196"
-      "3541055085860917957996114367548718018836313960618292137056282677"
-      "9743100947475774264558575685795655526362209377553343136273048244"
-      "3047584810573390849764671399003076293019258118491937701241384968"
-      "6287194322792594125093461156712312786426466050409407761509897584"
-      "8136843040991207538774075715754306035963544889052606784864342758"
-      "900428165258489343614201061427593231201171875",
-      5e-324);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000074109846876186981626485318930233205854758970392148714663837" //# 02: ok
-            "8523751013260905313127797949754542453988569694847043168576596389" //# 02: ok
-            "9850655339096945981621940161728171894510697854671067917687257517" //# 02: ok
-            "7347315553307795408549809608457500958111373034747658096871009590" //# 02: ok
-            "9754422710047573078097111189357848386756539987835030152280559340" //# 02: ok
-            "4659373979179073872386829939581848166016912201945649993128979841" //# 02: ok
-            "1362062484498678713572180352209017023903285791732520220528974020" //# 02: ok
-            "8029068540216066123755499834026713000358124864790413857434018755" //# 02: ok
-            "2090159017259254714629617513415977493871857473787096164563890871" //# 02: ok
-            "8119841271673056017045493004705269590165763776884908267986972573" //# 02: ok
-            "3665217655679410725087643375608460039849049721491174630855395563" //# 02: ok
-            "54188641513168478436313080237596295773983001708984375", //          //# 02: ok
-            1e-323); //                                                          //# 02: ok
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000074109846876186981626485318930233205873343654412044724850344" //# 03: ok
-            "8923718677971811461747287833219166123210675953743507352131000861" //# 03: ok
-            "5508029119022396648780866584046796426383292609958261304514284249" //# 03: ok
-            "6061610746879932829188941791435548141415672575056325503240888674" //# 03: ok
-            "0040403932604439422384254107243478095284614859960753370503720954" //# 03: ok
-            "5808063977144841990843464643012899935961693114687389992568869106" //# 03: ok
-            "5599267374834247685403237712975952143398358575711517208866987110" //# 03: ok
-            "6349531233468788347546753834029761025748698485508885182206645314" //# 03: ok
-            "0639262948657591471263120659283236968907400986955900192071499065" //# 03: ok
-            "6496581595870337769532410323614883653969318176216473399700896902" //# 03: ok
-            "4282850500785430600410615352213843786678841324490411560469406158" //# 03: ok
-            "4550533979841101562169154890806946368370134291387467238490102415" //# 03: ok
-            "1863156959008792461225924284245693964036455110947393215135657241" //# 03: ok
-            "099571834741510656385798938572406768798828125", //                  //# 03: ok
-            1e-323); //                                                          //# 03: ok
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000011125369292"
-      "5360069154511635866620203210960799023116591527666370844360221740"
-      "6959097927141579506255510282033669865517905502576217080776730054"
-      "4280061926888594105653889967660011652398050737212918180359607825"
-      "2347125186710418762540332530832907947436024558998429581982425031"
-      "7954385059152437399890443876874974725790225802525457699928291235"
-      "4093225567689679024960579905428830259962166760571761950743978498"
-      "0479564444580149632075553173315669683173879325651468588102366281"
-      "5890742832175436061414318821022423405703806955738531400844926622"
-      "0550120807237108092835830752700771425423583764509515806613894483"
-      "6485368656166704349449158753391942346304638698898642932982747054"
-      "5684547703068233784351199339157645340492308605462312698364257812"
-      "5",
-      1.1125369292536007e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000011125369292"
-      "5360069154511635866620203210960799023116610112350390740370408247"
-      "7359065591852485654875000165498293534740011761472681264331134525"
-      "9937435706814044772812816389978636184270645492500111567186634557"
-      "1061420380282556183179464713810955130740324099307096988352304114"
-      "8240366281709303744177586794760604434318300674651180918151452849"
-      "5241915565655447143417214608859882029906947673313501950183867763"
-      "4716769334915718603906610534082604802668952109630465576440379371"
-      "4211205525428158285205572821025471431094380576457002725617553180"
-      "9099224738635444849469333898568030900459127277678319834121502677"
-      "4862108980363986101936076072301556410108193098230208064696671383"
-      "6302180548174253659674171315763029087322100208461549627978268407"
-      "4131669828524253718537846867047316790971834120489029738490102415"
-      "1863156959008792461225924284245693964036455110947393215135657241"
-      "099571834741510656385798938572406768798828125",
-      1.1125369292536007e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000011125369292"
-      "5360093857793927928947412039400442434185191195972481664588256512"
-      "9400380600184308462011953048487227014291989141962100620081191046"
-      "1906239926662125432368943599250777752029021933482747432761666932"
-      "6081935177574213144751136884007361083502182696938981541236215812"
-      "4253211406611428748302338022108627812847664259678077865798649401"
-      "4497660229450268863966221848525061212023023248478571949013749179"
-      "6696380382410806898101889263285073571646568472249978339940677865"
-      "3579969652328069212208231432361613047099274956616864695216972981"
-      "6031069881591856241078866777972171115011992742603077167294249913"
-      "7481908755860441269310739102717418145889672225195380557264480249"
-      "9621987409855350817390775154421748273612200242960133979035379072"
-      "1007951555248028896005922474205893068160932603143782761509897584"
-      "8136843040991207538774075715754306035963544889052606784864342758"
-      "900428165258489343614201061427593231201171875",
-      1.1125369292536007e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000011125369292"
-      "5360093857793927928947412039400442434185209780656501560598443019"
-      "9800348264895214610631442931951850683514095400858564803635595517"
-      "7563613706587576099527870021569402283901616688769940819588693664"
-      "4796230371146350565390269066985408266806482237247648947606094895"
-      "4539192629168295092589480939994257521375739131803801084021811015"
-      "5646350227416036982422856551956112981967804161220311948453638445"
-      "0933585272746375869932946624052008691141641256228975328278690955"
-      "1900432345580791435999485432364661072489848577335336019989599540"
-      "4580173812990192997712369923839430590047536255771881194801858107"
-      "5858649080057723021797656421627032209693226624526945688978404579"
-      "0239620254961370692713747131027132020441991845959370908649389667"
-      "01396213837722826145437693412532098591327667236328125",
-      1.1125369292536007e-308);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000011125369292" //# 03: ok
-            "5360093857793927928947412039400442434185228365340521456608629527" //# 03: ok
-            "0200315929606120759250932815416474352736201659755028987189999989" //# 03: ok
-            "3220987486513026766686796443888026815774211444057134206415720396" //# 03: ok
-            "3510525564718487986029401249963455450110781777556316353975973978" //# 03: ok
-            "4825173851725161436876623857879887229903814003929524302244972629" //# 03: ok
-            "6795040225381805100879491255387164751912585073962051947893527710" //# 03: ok
-            "5170790163081944841764003984818943810636714040207972316616704045" //# 03: ok
-            "0220895038833513659790739432367709097880422198053807344762226099" //# 03: ok
-            "3129277744388529754345873069706690065083079768940685222309466301" //# 03: ok
-            "4235389404255004774284573740536646273496781023858510820692328908" //# 03: ok
-            "0857253100067390568036719107632515767271783448958607838263400261" //# 03: ok
-            "9271291212296536333081616208300526650104600844121842238490102415" //# 03: ok
-            "1863156959008792461225924284245693964036455110947393215135657241" //# 03: ok
-            "099571834741510656385798938572406768798828125", //                  //# 03: ok
-            1.112536929253601e-308); //                                          //# 03: ok
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000011125369292"
-      "5360118561076219991274620867840085845253828033646632276836664299"
-      "2641598602648849715007375581870031501510285299140912526494460981"
-      "0847165486286558093401850075478792915405182640326963458817779503"
-      "7245335555582282368240205603137908586176939915496868313229764759"
-      "1124000199184152785288518003113540316961252461082144468115330795"
-      "7199474887142394939885133198483395703973441561868861946163298392"
-      "1387606100912602107790340074788347699109403186806482068455015628"
-      "7910121858986146810584652043706898739275890198932140639134272458"
-      "8610226818743277902588909094978089754671488747034246582989821731"
-      "5231929503948741694146154089862122073081814550155248444974062103"
-      "4794692806854507601076294922896618700391675086456429118934521521"
-      "5279242767544565229087538682506419718265533447265625",
-      1.112536929253601e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000011125369292"
-      "5360118561076219991274620867840085845253846618330652172846850806"
-      "3041566267359755863626865465334655170732391558037376710048865452"
-      "6504539266212008760560776497797417447277777395614156845644806235"
-      "5959630749154419788879337786115955769481239455805535719599643842"
-      "1409981421741019129575660920999170025489327333207867686338492409"
-      "8348164885108163058341767901914447473918222474610601945603187657"
-      "5624810991248171079621397435555282818604475970785479056793028718"
-      "6230584552238869034375906043709946764666463819650611963906899017"
-      "7159330750141614659222412240845349229707032260203050610497429925"
-      "3608669828146023446633071408771736136885368949486813576687986432"
-      "5412325651960527476399266899502002447221466689455666048548532116"
-      "4410912596068818947625385549553736509237367567754654738490102415"
-      "1863156959008792461225924284245693964036455110947393215135657241"
-      "099571834741510656385798938572406768798828125",
-      1.112536929253601e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000011125369292"
-      "5360143264358512053601829696279729256322427701952743097064699071"
-      "5082881275691578670763818348323588650284368938526796065798921972"
-      "8473343486060089420116903707069559015036153836596792711219838611"
-      "0980145546446076750451009956312361722243098053437420272483555539"
-      "7422826546643144133700412148347193404018690918234764633985688961"
-      "7603909548902984778890775141579626656034298049775671944433069073"
-      "7604422038743259373816676164757751587582092333404991820293327212"
-      "5599348679138779961378564655046088380671358199810473933506318818"
-      "4091175893098026050831945120249489444259897725127807943670177161"
-      "6228469603642478614007734439187597872666848076451986069255795298"
-      "8732132513641624634115870738160721633511566723954250399605642781"
-      "1287194322792594125093461156712312786426466050409407761509897584"
-      "8136843040991207538774075715754306035963544889052606784864342758"
-      "900428165258489343614201061427593231201171875",
-      1.112536929253601e-308);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 02: ok
-            "0000000000000000000000000000000000000000000000000000011125369292" //# 02: ok
-            "5360143264358512053601829696279729256322446286636762993074885578" //# 02: ok
-            "5482848940402484819383308231788212319506475197423260249353326444" //# 02: ok
-            "4130717265985540087275830129388183546908748591883986098046865342" //# 02: ok
-            "9694440740018214171090142139290408905547397593746087678853434622" //# 02: ok
-            "7708807769200010477987555066232823112546765790360487852208850575" //# 02: ok
-            "8752599546868752897347409845010678425979078962517411943872958339" //# 02: ok
-            "1841626929078828345647733525524686707077165117383988808631340302" //# 02: ok
-            "3919811372391502185169818655049136406061931820528945258278945377" //# 02: ok
-            "2640279824496362807465448266116748919295441238296611971177785355" //# 02: ok
-            "4605209927839760366494651758097211936470402475783551200969719627" //# 02: ok
-            "9349765358747644509438842714766105380341358326953487329219653376" //# 02: ok
-            "04188641513168478436313080237596295773983001708984375", //          //# 02: ok
-            1.1125369292536017e-308); //                                         //# 02: ok
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000011125369292" //# 03: ok
-            "5360143264358512053601829696279729256322464871320782889085072085" //# 03: ok
-            "5882816605113390968002798115252835988728581456319724432907730915" //# 03: ok
-            "9788091045910990754434756551706808078781343347171179484873892074" //# 03: ok
-            "8408735933590351591729274322268456088851697134054755085223313705" //# 03: ok
-            "7994788991756876822274697984118452821074840662486211070432012189" //# 03: ok
-            "9901289544834521015804044548441730195923859875259151943312847604" //# 03: ok
-            "6078831819414397317478790886291621826572237901362985796969353392" //# 03: ok
-            "2240274065644224408961072655052184431452505441247416583051571936" //# 03: ok
-            "1189383755894699564098951411984008394330984751465415998685393549" //# 03: ok
-            "2981950252037042118981569077006826000273956875115116332683643956" //# 03: ok
-            "9967398203853664384761814691371489127171149929952724258833663970" //# 03: ok
-            "9550533979841101562169154890806946368370134291387467238490102415" //# 03: ok
-            "1863156959008792461225924284245693964036455110947393215135657241" //# 03: ok
-            "099571834741510656385798938572406768798828125", //                  //# 03: ok
-            1.1125369292536017e-308); //                                         //# 03: ok
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000022250738585"
-      "0720138309023271733240406421921598046233183055332741688720443481"
-      "3918195854283159012511020564067339731035811005152434161553460108"
-      "8560123853777188211307779935320023304796101474425836360719215650"
-      "4694250373420837525080665061665815894872049117996859163964850063"
-      "5908770118304874799780887753749949451580451605050915399856582470"
-      "8186451135379358049921159810857660519924333521143523901487956996"
-      "0959128889160299264151106346631339366347758651302937176204732563"
-      "1781485664350872122828637642044846811407613911477062801689853244"
-      "1100241614474216185671661505401542850847167529019031613227788967"
-      "2970737312333408698898317506783884692609277397797285865965494109"
-      "1369095406136467568702398678315290680984617210924625396728515625",
-      2.2250738585072014e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000022250738585"
-      "0720138309023271733240406421921598046233201640016761584730629988"
-      "4318163518994065161130510447531963400257917264048898345107864580"
-      "4217497633702638878466706357638647836668696229713029747546242382"
-      "3408545566992974945719797244643863078176348658305526570334729146"
-      "6194751340861741144068030671635579160108526477176638618079744084"
-      "9335141133345126168377794514288712289869114433885263900927846261"
-      "5196333779495868235982163707398274485842831435281934164542745653"
-      "0101948357603594346619891642047894836798187532195534126462479802"
-      "9649345545872552942305164651268802325882711042187835640735397161"
-      "1347477636530690451385234825693498756412831797128850997679418438"
-      "1986728251242487444025370654920674427814408813923862326342526219"
-      "9131669828524253718537846867047316790971834120489029738490102415"
-      "1863156959008792461225924284245693964036455110947393215135657241"
-      "099571834741510656385798938572406768798828125",
-      2.2250738585072014e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000022250738585"
-      "0720163012305563795567615250361241457301782723638852508948478253"
-      "6359478527325887968267463330520896879809894644538317700857921100"
-      "6186301853550719538022833566910789404427072670695665613121274757"
-      "8429060364284631907291469414840269030938207255937411123218640844"
-      "2207596465763866148192781898983602538637890062203535565726940636"
-      "8590885797139947888926801753953891471985190009050333899757727677"
-      "7175944826990956530177442436600743254820447797901446928043044146"
-      "9470712484503505273622550253384036452803081912355396096061899603"
-      "6581190688828964333914697530672942540435576507112592973908144397"
-      "3967277412027145618759897856109360492194310924094023490247227304"
-      "5306535112923584601741974493579393614104508848422446677399636884"
-      "6007951555248028896005922474205893068160932603143782761509897584"
-      "8136843040991207538774075715754306035963544889052606784864342758"
-      "900428165258489343614201061427593231201171875",
-      2.2250738585072014e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000022250738585"
-      "0720163012305563795567615250361241457301801308322872404958664760"
-      "6759446192036794116886953213985520549032000903434781884412325572"
-      "1843675633476170205181759989229413936299667425982858999948301489"
-      "7143355557856769327930601597818316214242506796246078529588519927"
-      "2493577688320732492479924816869232247165964934329258783950102250"
-      "9739575795105716007383436457384943241929970921792073899197616943"
-      "1413149717326525502008499797367678374315520581880443916381057236"
-      "7791175177756227497413804253387084478193655533073867420834526162"
-      "5130294620227301090548200676540202015471120020281397001415752591"
-      "2344017736224427371246815175018974555997865323425588621961151633"
-      "5924167958029604477064946470184777360934300451421683607013647479"
-      "51396213837722826145437693412532098591327667236328125",
-      2.2250738585072014e-308);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000022250738585" //# 03: ok
-            "0720163012305563795567615250361241457301819893006892300968851267" //# 03: ok
-            "7159413856747700265506443097450144218254107162331246067966730043" //# 03: ok
-            "7501049413401620872340686411548038468172262181270052386775328221" //# 03: ok
-            "5857650751428906748569733780796363397546806336554745935958399010" //# 03: ok
-            "2779558910877598836767067734754861955694039806454982002173263865" //# 03: ok
-            "0888265793071484125840071160815995011874751834533813898637506208" //# 03: ok
-            "5650354607662094473839557158134613493810593365859440904719070326" //# 03: ok
-            "6111637871008949721205058253390132503584229153792338745607152721" //# 03: ok
-            "3679398551625637847181703822407461490506663533450201028923360785" //# 03: ok
-            "0720758060421709123733732493928588619801419722757153753675075962" //# 03: ok
-            "6541800803135624352387918446790161107764092054420920536627658074" //# 03: ok
-            "4271291212296536333081616208300526650104600844121842238490102415" //# 03: ok
-            "1863156959008792461225924284245693964036455110947393215135657241" //# 03: ok
-            "099571834741510656385798938572406768798828125", //                  //# 03: ok
-            2.225073858507202e-308); //                                          //# 03: ok
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000022250738585"
-      "0720187715587855857894824078800884868370419561313003121196886039"
-      "9600696529790429221262885863903701367028190801717129607271191035"
-      "5127227413175152199055740043138804567803233377539881639177387328"
-      "9592460742292701130780538133970816533612964474495297895212189790"
-      "9078385258336590185178961879988515042751478263607602168043622031"
-      "1292700454832073964845713103912225963935608322440623896907276890"
-      "1867170545492751739865893248104017382283282512457950656557381910"
-      "3800864691161582871998970864729322144979697154670672039979199080"
-      "9160347625980385995424739847678861180095072511543762389603716215"
-      "1717298160115446043595312843254064419386453249053891377956809158"
-      "0479240509922741385427494262054264040883983691918741817298779334"
-      "0279242767544565229087538682506419718265533447265625",
-      2.225073858507202e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000022250738585"
-      "0720187715587855857894824078800884868370438145997023017207072547"
-      "0000664194501335369882375747368325036250297060613593790825595507"
-      "0784601193100602866214666465457429099675828132827075026004414060"
-      "8306755935864838551419670316948863716917264014803965301582068873"
-      "9364366480893456529466104797874144751279553135733325386266783645"
-      "2441390452797842083302347807343277733880389235182363896347166155"
-      "6104375435828320711696950608870952501778355296436947644895395000"
-      "2121327384414305095790224864732370170370270775389143364751825639"
-      "7709451557378722752058242993546120655130616024712566417111324409"
-      "0094038484312727796082230162163678483190007648385456509670733487"
-      "1096873355028761260750466238659647787713775294917978746912789928"
-      "9410912596068818947625385549553736509237367567754654738490102415"
-      "1863156959008792461225924284245693964036455110947393215135657241"
-      "099571834741510656385798938572406768798828125",
-      2.225073858507202e-308);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000022250738585"
-      "0720212418870147920222032907240528279439019229619113941424920812"
-      "2041979202833158177019328630357258515802274441103013146575652027"
-      "2753405412948683525770793674729570667434204573809710891579446436"
-      "3327270733156495512991342487145269669679122612435849854465980571"
-      "5377211605795581533590856025222168129808916720760222333913980197"
-      "1697135116592663803851355047008456915996464810347433895177047571"
-      "8083986483323409005892229338073421270755971659056460408395693494"
-      "1490091511314216022792883476068511786375165155549005334351245440"
-      "4641296700335134143667775872950260869683481489637323750284071645"
-      "2713838259809182963456893192579540218971486775350629002238542353"
-      "4416680216709858418467070077318366974003875329416563097969900593"
-      "6287194322792594125093461156712312786426466050409407761509897584"
-      "8136843040991207538774075715754306035963544889052606784864342758"
-      "900428165258489343614201061427593231201171875",
-      2.225073858507202e-308);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000022250738585" //# 03: ok
-            "0720212418870147920222032907240528279439037814303133837435107319" //# 03: ok
-            "2441946867544064325638818513821882185024380699999477330130056498" //# 03: ok
-            "8410779192874134192929720097048195199306799329096904278406473168" //# 03: ok
-            "2041565926728632933630474670123316852983422152744517260835859654" //# 03: ok
-            "5663192828352447877877998943107797838336991592885945552137141811" //# 03: ok
-            "2845825114558431922307989750439508685941245723089173894616936837" //# 03: ok
-            "2321191373658977977723286698840356390251044443035457396733706583" //# 03: ok
-            "9810554204566938246584137476071559811765738776267476659123871999" //# 03: ok
-            "3190400631733470900301279018817520344719025002806127777791679839" //# 03: ok
-            "1090578584006464715943810511489154282775041174682194133952466682" //# 03: ok
-            "5034313061815878293790042053923750720833666932415800027583911188" //# 03: ok
-            "54188641513168478436313080237596295773983001708984375", //          //# 03: ok
-            2.2250738585072024e-308); //                                         //# 03: ok
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000022250738585" //# 03: ok
-            "0720212418870147920222032907240528279439056398987153733445293826" //# 03: ok
-            "2841914532254970474258308397286505854246486958895941513684460970" //# 03: ok
-            "4068152972799584860088646519366819731179394084384097665233499900" //# 03: ok
-            "0755861120300770354269606853101364036287721693053184667205738737" //# 03: ok
-            "5949174050909314222165141860993427546865066465011668770360303425" //# 03: ok
-            "3994515112524200040764624453870560455886026635830913894056826102" //# 03: ok
-            "6558396263994546949554344059607291509746117227014454385071719673" //# 03: ok
-            "8131016897819660470375391476074607837156312396985947983896498558" //# 03: ok
-            "1739504563131807656934782164684779819754568515974931805299288032" //# 03: ok
-            "9467318908203746468430727830398768346578595574013759265666391011" //# 03: ok
-            "5651945906921898169113014030529134467663458535415036957197921783" //# 03: ok
-            "4550533979841101562169154890806946368370134291387467238490102415" //# 03: ok
-            "1863156959008792461225924284245693964036455110947393215135657241" //# 03: ok
-            "099571834741510656385798938572406768798828125", //                  //# 03: ok
-            2.2250738585072024e-308); //                                         //# 03: ok
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000100208418000448638899805402"
-      "5675081023947173151201955956352756465219477298834774949553868001"
-      "7172354813827222283890479851867436841402279176933922227531985191"
-      "9016883548022442028316027357265612083085166971723487691494714589"
-      "5578331812936322386545483369746322848628024994920311121080242823"
-      "5714326388663336759990619917681011604908667604621058852897083245"
-      "0816977893343649540492907374306035456728456338904015275857972276"
-      "1526157631250497160973795706924168310120033199859199012414074894"
-      "8202195091387650850548954516920927386376492603899633528627985383"
-      "2932104496700123254769405070337764094630065313795728259355401668"
-      "8207267296623786504114239553488532354086348874488976434804499149"
-      "322509765625",
-      1.0020841800044864e-292);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000100208418000448638899805402"
-      "5675081023947173151201956040050732492021560444211472901925540702"
-      "1586014286915762763038748010206109436411449756840422987132589595"
-      "3085274649978096343836685185731606312366412920027708756586099963"
-      "7975552653362983131506665648352778744386705639822064232334712197"
-      "7867779247842315182877112028658635902319185766818606103345104073"
-      "9923514010434512590195330770391813338086311968111531328662618487"
-      "3315578521649250253839821623536466419018719481428679013982985346"
-      "1571995354000952600076951720089726239270930511481845755671197870"
-      "4747866889418540057514218596081876158765839665014133210631738825"
-      "4165335079883777074977685931654819161553596657523084699300803458"
-      "3609637179288099118793858900152420545987239088654699259390735847"
-      "0152049332041520812604025151794328168042160636342216519487980314"
-      "421878240614097350935640662328296457417309284210205078125",
-      1.0020841800044864e-292);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000100208418000448650025174695"
-      "1035150178458809017822159083615579461533985681124447841542417041"
-      "9717793267880261310997721975562434111911014099603638548708110842"
-      "9228554372955381818449259496459629506201971760632184806762937040"
-      "5528236159220080404124633621972774900305368909016987591808198481"
-      "1515258588636795736994571683578362033288375244948969302377353651"
-      "5803667343942465515751063883649087835332767470268261173797304563"
-      "0216301185431893700183322963627539884395226243941187598947530725"
-      "0723137660949785162435276134774551939185861652055952702429699518"
-      "1666462911218814544860422297294423455917874727086839114692958995"
-      "8734568169530500282699951928714187892923739790353511103290941894"
-      "8525105836280134665557340439005224794505069516807613438973521965"
-      "4847950667958479187395974848205671831957839363657783480512019685"
-      "578121759385902649064359337671703542582690715789794921875",
-      1.0020841800044864e-292);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000100208418000448650025174695"
-      "1035150178458809017822159167313555488336068826501145793914089742"
-      "4131452740968801790145990133901106706920184679510139308308715246"
-      "3296945474911036133969917324925623735483217708936405871854322414"
-      "7925456999646741149085815900579230796064049553918740703062667855"
-      "3668711447815774159881063794555986330698893407146516552825374480"
-      "4910203461033328565453487279734865716690623099475777226601950774"
-      "2005722075830646793049348880239837993293912525510667600516441176"
-      "4092937923563086911963273337943350792080299559638164929472912005"
-      "3482225303937231347605235823038535520053649078305244065969296152"
-      "4692635952790490853563398306880474700390987573387619367787246203"
-      "8909645359318233784351199339157645340492308605462312698364257812"
-      "5",
-      1.0020841800044864e-292);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000100208418000448650025174695" //# 03: ok
-            "1035150178458809017822159251011531515138151971877843746285762442" //# 03: ok
-            "8545112214057342269294258292239779301929355259416640067909319649" //# 03: ok
-            "7365336576866690449490575153391617964764463657240626936945707789" //# 03: ok
-            "0322677840073401894046998179185686691822730198820493814317137229" //# 03: ok
-            "5822164306994752582767555905533610628109411569344063803273395309" //# 03: ok
-            "4016739578124191615155910675820643598048478728683293279406596985" //# 03: ok
-            "3795142966229399885915374796852136102192598807080147602085351627" //# 03: ok
-            "7462738186176388661491270541112149644974737467220377156516124492" //# 03: ok
-            "5297987696655648150350049348782647584189423429523649017245633309" //# 03: ok
-            "0650703736050481424426844685046761507858235356421727632283550512" //# 03: ok
-            "9294184882356332903145058239310065886479547694117011957754993659" //# 03: ok
-            "5152049332041520812604025151794328168042160636342216519487980314" //# 03: ok
-            "421878240614097350935640662328296457417309284210205078125", //      //# 03: ok
-            1.0020841800044866e-292); //                                         //# 03: ok
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000200416836000897255548872220"
-      "0630023738871074569163505490783914884205771542336808210387292522"
-      "0426513773371285555269939139667533951768747348715410293510510274"
-      "9473643242267695845324274779211200861374232469021139022270213528"
-      "6462413252451807248010301677826829802384000871843763078195635583"
-      "5519882659021798720200352081612073758236883604191202305937584019"
-      "3447504651307941031064654937754410393532579156664506650227987556"
-      "2093186373340695057796485067216997253892307748415460848623417226"
-      "4622904518424429578269271391797007961345371296322204255566117522"
-      "4763967378926030323867148635273985338412963098572424905483014370"
-      "3443797280914164309330161600193180015563420351180667003643504189"
-      "5081099906363532431297601321684709319015382789075374603271484375",
-      2.0041683600089726e-292);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000200416836000897255548872220"
-      "0630023738871074569163505574481890911007854687713506162758965222"
-      "4840173246459826034418207298006206546777917928621911053111114678"
-      "3542034344223350160844932607677195090655478417325360087361598902"
-      "8859634092878467992971483956433285698142681516745516189450104957"
-      "7673335518200777143086844192589698055647401766388749556385604848"
-      "2554040768398804080767078333840188274890434785872022703032633767"
-      "3882607263739448150662510983829295362790994029984940850192327677"
-      "7992704781037731327797268594965806814239809203904416482609330009"
-      "6579729771644447126611962161018097402548737449790829856759351526"
-      "9401865064174154880193607978359466823030668134214775268139808498"
-      "5465639429401631550091460221837129865002621877730073862662220222"
-      "0152049332041520812604025151794328168042160636342216519487980314"
-      "421878240614097350935640662328296457417309284210205078125",
-      2.0041683600089726e-292);
-  testParse(
-      "0.00000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000000000000000000000000000000"
-      "0000000000000000000000000000000000000200416836000897266674241512"
-      "5990092893382710435783708618046737880520279924626481102375841562"
-      "2971952227424324582377181263362531222277482271385126614686635925"
-      "9685314067200635635457506918405218284491037257929836137538435979"
-      "6412317598735565265589451930053281854061344785940439548923591241"
-      "1320814858995257697204303847509424186616591244519112755417854425"
-      "8434194101906757006322811447097462772136890288028752548167319843"
-      "0783329927522091597006012323920368828167500792497449435156873056"
-      "7143847087986563890155593009650632514154740344478523429367831657"
-      "3498325793444721613958165862230644699700772511863535760820571697"
-      "3971098153820878087915873975418835554400811267045201672129946935"
-      "0381108086393667096854941760689934113520452305882988042245006340"
-      "4847950667958479187395974848205671831957839363657783480512019685"
-      "578121759385902649064359337671703542582690715789794921875",
-      2.0041683600089726e-292);
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000200416836000897266674241512" //# 03: ok
-            "5990092893382710435783708701744713907322363070003179054747514262" //# 03: ok
-            "7385611700512865061525449421701203817286652851291627374287240329" //# 03: ok
-            "3753705169156289950978164746871212513772283206234057202629821353" //# 03: ok
-            "8809538439162226010550634208659737749820025430842192660178060615" //# 03: ok
-            "3474267718174236120090795958487048484027109406716660005865875254" //# 03: ok
-            "7540730218997620056025234843183240653494745917236268600971966054" //# 03: ok
-            "2572750817920844689872038240532666937066187074066929436725783508" //# 03: ok
-            "0513647350599865639683590212819431367049178252060735656411044144" //# 03: ok
-            "5314088186163138416702979387974756763836546863081940712096908853" //# 03: ok
-            "9929165937080868658779320353585122361868059050079309936626251244" //# 03: ok
-            "0765647609431766215648800660842354659507691394537687301635742187" //# 03: ok
-            "5", //                                                              //# 03: ok
-            2.004168360008973e-292); //                                          //# 03: ok
-  testParse("0.00000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000000000000000000000000000000" //# 03: ok
-            "0000000000000000000000000000000000000200416836000897266674241512" //# 03: ok
-            "5990092893382710435783708785442689934124446215379877007119186963" //# 03: ok
-            "1799271173601405540673717580039876412295823431198128133887844732" //# 03: ok
-            "7822096271111944266498822575337206743053529154538278267721206728" //# 03: ok
-            "1206759279588886755511816487266193645578706075743945771432529989" //# 03: ok
-            "5627720577353214542977288069464672781437627568914207256313896083" //# 03: ok
-            "6647266336088483105727658239269018534852601546443784653776612265" //# 03: ok
-            "4362171708319597782738064157144965045964873355636409438294693959" //# 03: ok
-            "3883447613213167389211587415988230219943616159642947883454256631" //# 03: ok
-            "7129850578881555219447792913718868827972321214300345663373246010" //# 03: ok
-            "5887233720340859229642766731751409169335306833113418201122555553" //# 03: ok
-            "1150187132469865334442659560994775205494930483192386561026478034" //# 03: ok
-            "5152049332041520812604025151794328168042160636342216519487980314" //# 03: ok
-            "421878240614097350935640662328296457417309284210205078125", //      //# 03: ok
-            2.004168360008973e-292); //                                          //# 03: ok
-  testParse("0.99999999999999988897769753748434595763683319091796875",
-      0.9999999999999999);
-  testParse(
-      "0.99999999999999988897769753748434595763683319091796879176194859"
-      "5190556970945882299241904356487451251641385905655273315006228765"
-      "423911854226535211864757002331316471099853515625",
-      0.9999999999999999);
-  testParse(
-      "0.99999999999999994448884876874217297881841659545898433323805140"
-      "4809443029054117700758095643512548748358614094344726684993771234"
-      "576088145773464788135242997668683528900146484375",
-      0.9999999999999999);
-  testParse("0.999999999999999944488848768742172978818416595458984375", //# 03: ok
-            1.0); //                                                      //# 03: ok
-  testParse("0.99999999999999994448884876874217297881841659545898441676194859" //# 03: ok
-            "5190556970945882299241904356487451251641385905655273315006228765" //# 03: ok
-            "423911854226535211864757002331316471099853515625", //               //# 03: ok
-            1.0); //                                                             //# 03: ok
-  testParse("0.499999999999999944488848768742172978818416595458984375",
-      0.49999999999999994);
-  testParse(
-      "0.49999999999999994448884876874217297881841659545898439588097429"
-      "7595278485472941149620952178243725625820692952827636657503114382"
-      "7119559271132676059323785011656582355499267578125",
-      0.49999999999999994);
-  testParse(
-      "0.49999999999999997224442438437108648940920829772949216661902570"
-      "2404721514527058850379047821756274374179307047172363342496885617"
-      "2880440728867323940676214988343417644500732421875",
-      0.49999999999999994);
-  testParse("0.4999999999999999722444243843710864894092082977294921875", //# 03: ok
-            0.5); //                                                       //# 03: ok
-  testParse("0.49999999999999997224442438437108648940920829772949220838097429" //# 03: ok
-            "7595278485472941149620952178243725625820692952827636657503114382" //# 03: ok
-            "7119559271132676059323785011656582355499267578125", //              //# 03: ok
-            0.5); //                                                             //# 03: ok
-  testParse("1.9999999999999997779553950749686919152736663818359375",
-      1.9999999999999998);
-  testParse(
-      "1.99999999999999977795539507496869191527366638183593758352389719"
-      "0381113941891764598483808712974902503282771811310546630012457530"
-      "84782370845307042372951400466263294219970703125",
-      1.9999999999999998);
-  testParse(
-      "1.99999999999999988897769753748434595763683319091796866647610280"
-      "9618886058108235401516191287025097496717228188689453369987542469"
-      "15217629154692957627048599533736705780029296875",
-      1.9999999999999998);
-  testParse("1.99999999999999988897769753748434595763683319091796875", //# 03: ok
-            2.0); //                                                     //# 03: ok
-  testParse("1.99999999999999988897769753748434595763683319091796883352389719" //# 03: ok
-            "0381113941891764598483808712974902503282771811310546630012457530" //# 03: ok
-            "84782370845307042372951400466263294219970703125", //                //# 03: ok
-            2.0); //                                                             //# 03: ok
-  testParse("4503599627370495.5", 4503599627370495.5);
-  testParse(
-      "4503599627370495.50000000000000000000000000000000000018807909613"
-      "1566001274997845955559308450986489083534003441400273004546761512"
-      "75634765625",
-      4503599627370495.5);
-  testParse(
-      "4503599627370495.74999999999999999999999999999999999981192090386"
-      "8433998725002154044440691549013510916465996558599726995453238487"
-      "24365234375",
-      4503599627370495.5);
-  testParse("4503599627370495.75", 4503599627370496.0);
-  testParse(
-      "4503599627370495.75000000000000000000000000000000000018807909613"
-      "1566001274997845955559308450986489083534003441400273004546761512"
-      "75634765625",
-      4503599627370496.0);
-  testParse("4503599627370496", 4503599627370496.0);
-  testParse(
-      "4503599627370496.00000000000000000000000000000000000037615819226"
-      "3132002549995691911118616901972978167068006882800546009093523025"
-      "5126953125",
-      4503599627370496.0);
-  testParse(
-      "4503599627370496.49999999999999999999999999999999999962384180773"
-      "6867997450004308088881383098027021832931993117199453990906476974"
-      "4873046875",
-      4503599627370496.0);
-  testParse("4503599627370496.5", 4503599627370496.0);
-  testParse(
-      "4503599627370496.50000000000000000000000000000000000037615819226"
-      "3132002549995691911118616901972978167068006882800546009093523025"
-      "5126953125",
-      4503599627370497.0);
-  testParse("9007199254740991", 9007199254740991.0);
-  testParse(
-      "9007199254740991.00000000000000000000000000000000000037615819226"
-      "3132002549995691911118616901972978167068006882800546009093523025"
-      "5126953125",
-      9007199254740991.0);
-  testParse(
-      "9007199254740991.49999999999999999999999999999999999962384180773"
-      "6867997450004308088881383098027021832931993117199453990906476974"
-      "4873046875",
-      9007199254740991.0);
-  testParse("9007199254740991.5", 9007199254740992.0);
-  testParse(
-      "9007199254740991.50000000000000000000000000000000000037615819226"
-      "3132002549995691911118616901972978167068006882800546009093523025"
-      "5126953125",
-      9007199254740992.0);
-  testParse(
-      "1797693134862315708145274237317043567980705675258449965989174768"
-      "0315726078002853876058955863276687817154045895351438246423432132"
-      "6889464182768467546703537516986049910576551282076245490090389328"
-      "9440758685084551339423045832369032229481658085593321233482747978"
-      "26204144723168738177180919299881250404026184124858368",
-      1.7976931348623157e+308);
-  testParse(
-      "1797693134862315708145274237317043567980705675258450041064343056"
-      "0785749075118623426984641994452647172104399563141377322686588394"
-      "6121172130178666127034918365540069095282013901258936156392632590"
-      "7055367751483602939820315058278058002847941584484775356682545657"
-      "44106770877499077221865536419145864291265781790932992",
-      1.7976931348623157e+308);
-  testParse(
-      "1797693134862315807937289714053034150799341327100378194286569501"
-      "7574473832160705543739215666582761354682674973879349714831499292"
-      "8620232455220458908340124972127889717295245764493583188543574449"
-      "7703035690903649098158444443687202655781915109457910629727393062"
-      "50541739356374003666875082388828428992938306508423168",
-      1.7976931348623157e+308);
-  testParse(
-      "1797693134862315807937289714053034150799341327100378269361737789"
-      "8044496829276475094664901797758720709633028641669288791094655554"
-      "7851940402630657488671505820681908902000708383676273854845817711"
-      "5317644757302700698555713669596228429148198608349364752927190741"
-      "68444365510704342711559699508093042880177904174497792",
-      double.INFINITY);
-  testParse(
-      "1797693134862315807937289714053034150799341327100378344436906077"
-      "8514519826392244645590587928934680064583382309459227867357811816"
-      "7083648350040856069002886669235928086706171002858964521148060973"
-      "2932253823701752298952982895505254202514482107240818876126988420"
-      "86346991665034681756244316627357656767417501840572416",
-      double.INFINITY);
-
-  // Edge cases of algorithm (e+-22/23).
-  testParse("1e22", 1e22);
-  testParse("1e23", 1e23);
-  testParse("1e-22", 1e-22);
-  testParse("1e-23", 1e-23);
-
-  testParseWhitespace("1", 1.0);
-  testParseWhitespace("1.0", 1.0);
-  testParseWhitespace("1e1", 10.0);
-  testParseWhitespace(".1e1", 1.0);
-  testParseWhitespace("1.e1", 10.0);
-  testParseWhitespace("1e+1", 10.0);
-  testParseWhitespace("1e-1", 0.1);
-
-  // Negative tests - things not to allow.
-
-  // Spaces inside the numeral.
-  testFail("- 1");
-  testFail("+ 1");
-  testFail("2 2");
-  testFail("1 .");
-  testFail(". 1");
-  testFail("1e 2");
-  testFail("1 e2");
-  // Invalid characters.
-  testFail("0x0");
-  testFail("0x1H");
-  testFail("12H");
-  testFail("1x2");
-  testFail("00x2");
-  testFail("0x2.2");
-  // Double exponent without value.
-  testFail(".e1");
-  testFail("e1");
-  testFail("e+1");
-  testFail("e-1");
-  testFail("-e1");
-  testFail("-e+1");
-  testFail("-e-1");
-  // Too many signs.
-  testFail("--1");
-  testFail("-+1");
-  testFail("+-1");
-  testFail("++1");
-  // Incorrect ways to write NaN/Infinity.
-  testFail("infinity");
-  testFail("INFINITY");
-  testFail("1.#INF");
-  testFail("inf");
-  testFail("nan");
-  testFail("NAN");
-  testFail("1.#IND");
-  testFail("indef");
-  testFail("qnan");
-  testFail("snan");
-}
diff --git a/tests/corelib/double_round2_test.dart b/tests/corelib/double_round2_test.dart
deleted file mode 100644
index 702a81f..0000000
--- a/tests/corelib/double_round2_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.throws(() => double.INFINITY.round(), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => double.NEGATIVE_INFINITY.round(), (e) => e is UnsupportedError);
-  Expect.throws(() => double.NAN.round(), (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/double_round3_test.dart b/tests/corelib/double_round3_test.dart
deleted file mode 100644
index a1edeeb..0000000
--- a/tests/corelib/double_round3_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.49999999999999994.round());
-  Expect.equals(0, (-0.49999999999999994).round());
-  Expect.isTrue(0.49999999999999994.round() is int);
-  Expect.isTrue((-0.49999999999999994).round() is int);
-}
diff --git a/tests/corelib/double_round4_test.dart b/tests/corelib/double_round4_test.dart
deleted file mode 100644
index 2b89dcc..0000000
--- a/tests/corelib/double_round4_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496, 4503599627370496.0.round());
-  Expect.equals(4503599627370497, 4503599627370497.0.round());
-  Expect.equals(4503599627370498, 4503599627370498.0.round());
-  Expect.equals(4503599627370499, 4503599627370499.0.round());
-
-  Expect.equals(9007199254740991, 9007199254740991.0.round());
-  Expect.equals(9007199254740992, 9007199254740992.0.round());
-
-  Expect.equals(-4503599627370496, (-4503599627370496.0).round());
-  Expect.equals(-4503599627370497, (-4503599627370497.0).round());
-  Expect.equals(-4503599627370498, (-4503599627370498.0).round());
-  Expect.equals(-4503599627370499, (-4503599627370499.0).round());
-
-  Expect.equals(-9007199254740991, (-9007199254740991.0).round());
-  Expect.equals(-9007199254740992, (-9007199254740992.0).round());
-
-  Expect.isTrue(4503599627370496.0.round() is int);
-  Expect.isTrue(4503599627370497.0.round() is int);
-  Expect.isTrue(4503599627370498.0.round() is int);
-  Expect.isTrue(4503599627370499.0.round() is int);
-  Expect.isTrue(9007199254740991.0.round() is int);
-  Expect.isTrue(9007199254740992.0.round() is int);
-  Expect.isTrue((-4503599627370496.0).round() is int);
-  Expect.isTrue((-4503599627370497.0).round() is int);
-  Expect.isTrue((-4503599627370498.0).round() is int);
-  Expect.isTrue((-4503599627370499.0).round() is int);
-  Expect.isTrue((-9007199254740991.0).round() is int);
-  Expect.isTrue((-9007199254740992.0).round() is int);
-}
diff --git a/tests/corelib/double_round_test.dart b/tests/corelib/double_round_test.dart
deleted file mode 100644
index 77f21fc..0000000
--- a/tests/corelib/double_round_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.0.round());
-  Expect.equals(0, double.MIN_POSITIVE.round());
-  Expect.equals(0, (2.0 * double.MIN_POSITIVE).round());
-  Expect.equals(0, (1.18e-38).round());
-  Expect.equals(0, (1.18e-38 * 2).round());
-  Expect.equals(1, 0.5.round());
-  Expect.equals(1, 0.9999999999999999.round());
-  Expect.equals(1, 1.0.round());
-  Expect.equals(1, 1.000000000000001.round());
-
-  Expect.equals(
-      179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      double.MAX_FINITE.round());
-
-  Expect.equals(0, (-double.MIN_POSITIVE).round());
-  Expect.equals(0, (2.0 * -double.MIN_POSITIVE).round());
-  Expect.equals(0, (-1.18e-38).round());
-  Expect.equals(0, (-1.18e-38 * 2).round());
-  Expect.equals(-1, (-0.5).round());
-  Expect.equals(-1, (-0.9999999999999999).round());
-  Expect.equals(-1, (-1.0).round());
-  Expect.equals(-1, (-1.000000000000001).round());
-  Expect.equals(
-      -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      (-double.MAX_FINITE).round());
-
-  Expect.isTrue(0.0.round() is int);
-  Expect.isTrue(double.MIN_POSITIVE.round() is int);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).round() is int);
-  Expect.isTrue((1.18e-38).round() is int);
-  Expect.isTrue((1.18e-38 * 2).round() is int);
-  Expect.isTrue(0.5.round() is int);
-  Expect.isTrue(0.9999999999999999.round() is int);
-  Expect.isTrue(1.0.round() is int);
-  Expect.isTrue(1.000000000000001.round() is int);
-  Expect.isTrue(double.MAX_FINITE.round() is int);
-
-  Expect.isTrue((-double.MIN_POSITIVE).round() is int);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).round() is int);
-  Expect.isTrue((-1.18e-38).round() is int);
-  Expect.isTrue((-1.18e-38 * 2).round() is int);
-  Expect.isTrue((-0.5).round() is int);
-  Expect.isTrue((-0.9999999999999999).round() is int);
-  Expect.isTrue((-1.0).round() is int);
-  Expect.isTrue((-1.000000000000001).round() is int);
-  Expect.isTrue((-double.MAX_FINITE).round() is int);
-}
diff --git a/tests/corelib/double_round_to_double2_test.dart b/tests/corelib/double_round_to_double2_test.dart
deleted file mode 100644
index ef8024db..0000000
--- a/tests/corelib/double_round_to_double2_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.49999999999999994.roundToDouble());
-  Expect.equals(0.0, (-0.49999999999999994).roundToDouble());
-  Expect.isTrue(0.49999999999999994.roundToDouble() is double);
-  Expect.isTrue((-0.49999999999999994).roundToDouble().isNegative);
-  Expect.isTrue((-0.49999999999999994).roundToDouble() is double);
-}
diff --git a/tests/corelib/double_round_to_double3_test.dart b/tests/corelib/double_round_to_double3_test.dart
deleted file mode 100644
index c53ac81..0000000
--- a/tests/corelib/double_round_to_double3_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496.0, 4503599627370496.0.roundToDouble());
-  Expect.equals(4503599627370497.0, 4503599627370497.0.roundToDouble());
-  Expect.equals(4503599627370498.0, 4503599627370498.0.roundToDouble());
-  Expect.equals(4503599627370499.0, 4503599627370499.0.roundToDouble());
-  Expect.equals(9007199254740991.0, 9007199254740991.0.roundToDouble());
-  Expect.equals(9007199254740992.0, 9007199254740992.0.roundToDouble());
-  Expect.equals(-4503599627370496.0, (-4503599627370496.0).roundToDouble());
-  Expect.equals(-4503599627370497.0, (-4503599627370497.0).roundToDouble());
-  Expect.equals(-4503599627370498.0, (-4503599627370498.0).roundToDouble());
-  Expect.equals(-4503599627370499.0, (-4503599627370499.0).roundToDouble());
-  Expect.equals(-9007199254740991.0, (-9007199254740991.0).roundToDouble());
-  Expect.equals(-9007199254740992.0, (-9007199254740992.0).roundToDouble());
-  Expect.isTrue(4503599627370496.0.roundToDouble() is double);
-  Expect.isTrue(4503599627370497.0.roundToDouble() is double);
-  Expect.isTrue(4503599627370498.0.roundToDouble() is double);
-  Expect.isTrue(4503599627370499.0.roundToDouble() is double);
-  Expect.isTrue(9007199254740991.0.roundToDouble() is double);
-  Expect.isTrue(9007199254740992.0.roundToDouble() is double);
-  Expect.isTrue((-4503599627370496.0).roundToDouble() is double);
-  Expect.isTrue((-4503599627370497.0).roundToDouble() is double);
-  Expect.isTrue((-4503599627370498.0).roundToDouble() is double);
-  Expect.isTrue((-4503599627370499.0).roundToDouble() is double);
-  Expect.isTrue((-9007199254740991.0).roundToDouble() is double);
-  Expect.isTrue((-9007199254740992.0).roundToDouble() is double);
-}
diff --git a/tests/corelib/double_round_to_double_test.dart b/tests/corelib/double_round_to_double_test.dart
deleted file mode 100644
index ae2d196..0000000
--- a/tests/corelib/double_round_to_double_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.0.roundToDouble());
-  Expect.equals(0.0, double.MIN_POSITIVE.roundToDouble());
-  Expect.equals(0.0, (2.0 * double.MIN_POSITIVE).roundToDouble());
-  Expect.equals(0.0, (1.18e-38).roundToDouble());
-  Expect.equals(0.0, (1.18e-38 * 2).roundToDouble());
-  Expect.equals(1.0, 0.5.roundToDouble());
-  Expect.equals(1.0, 0.9999999999999999.roundToDouble());
-  Expect.equals(1.0, 1.0.roundToDouble());
-  Expect.equals(1.0, 1.000000000000001.roundToDouble());
-  Expect.equals(2.0, 1.5.roundToDouble());
-
-  Expect.equals(double.MAX_FINITE, double.MAX_FINITE.roundToDouble());
-
-  Expect.equals(0.0, (-double.MIN_POSITIVE).roundToDouble());
-  Expect.equals(0.0, (2.0 * -double.MIN_POSITIVE).roundToDouble());
-  Expect.equals(0.0, (-1.18e-38).roundToDouble());
-  Expect.equals(0.0, (-1.18e-38 * 2).roundToDouble());
-  Expect.equals(-1.0, (-0.5).roundToDouble());
-  Expect.equals(-1.0, (-0.9999999999999999).roundToDouble());
-  Expect.equals(-1.0, (-1.0).roundToDouble());
-  Expect.equals(-1.0, (-1.000000000000001).roundToDouble());
-  Expect.equals(-2.0, (-1.5).roundToDouble());
-  Expect.equals(-double.MAX_FINITE, (-double.MAX_FINITE).roundToDouble());
-
-  Expect.equals(double.INFINITY, double.INFINITY.roundToDouble());
-  Expect.equals(
-      double.NEGATIVE_INFINITY, double.NEGATIVE_INFINITY.roundToDouble());
-  Expect.isTrue(double.NAN.roundToDouble().isNaN);
-
-  Expect.isTrue(0.0.roundToDouble() is double);
-  Expect.isTrue(double.MIN_POSITIVE.roundToDouble() is double);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).roundToDouble() is double);
-  Expect.isTrue((1.18e-38).roundToDouble() is double);
-  Expect.isTrue((1.18e-38 * 2).roundToDouble() is double);
-  Expect.isTrue(0.5.roundToDouble() is double);
-  Expect.isTrue(0.9999999999999999.roundToDouble() is double);
-  Expect.isTrue(1.0.roundToDouble() is double);
-  Expect.isTrue(1.000000000000001.roundToDouble() is double);
-  Expect.isTrue(double.MAX_FINITE.roundToDouble() is double);
-
-  Expect.isTrue((-double.MIN_POSITIVE).roundToDouble().isNegative);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).roundToDouble().isNegative);
-  Expect.isTrue((-1.18e-38).roundToDouble().isNegative);
-  Expect.isTrue((-1.18e-38 * 2).roundToDouble().isNegative);
-
-  Expect.isTrue((-double.MIN_POSITIVE).roundToDouble() is double);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).roundToDouble() is double);
-  Expect.isTrue((-1.18e-38).roundToDouble() is double);
-  Expect.isTrue((-1.18e-38 * 2).roundToDouble() is double);
-  Expect.isTrue((-0.5).roundToDouble() is double);
-  Expect.isTrue((-0.9999999999999999).roundToDouble() is double);
-  Expect.isTrue((-1.0).roundToDouble() is double);
-  Expect.isTrue((-1.000000000000001).roundToDouble() is double);
-  Expect.isTrue((-double.MAX_FINITE).roundToDouble() is double);
-}
diff --git a/tests/corelib/double_truncate2_test.dart b/tests/corelib/double_truncate2_test.dart
deleted file mode 100644
index 633debd..0000000
--- a/tests/corelib/double_truncate2_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.throws(() => double.INFINITY.truncate(), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => double.NEGATIVE_INFINITY.truncate(), (e) => e is UnsupportedError);
-  Expect.throws(() => double.NAN.truncate(), (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/double_truncate_test.dart b/tests/corelib/double_truncate_test.dart
deleted file mode 100644
index 8c6a322..0000000
--- a/tests/corelib/double_truncate_test.dart
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.0.truncate());
-  Expect.equals(0, double.MIN_POSITIVE.truncate());
-  Expect.equals(0, (2.0 * double.MIN_POSITIVE).truncate());
-  Expect.equals(0, (1.18e-38).truncate());
-  Expect.equals(0, (1.18e-38 * 2).truncate());
-  Expect.equals(0, 0.49999999999999994.truncate());
-  Expect.equals(0, 0.5.truncate());
-  Expect.equals(0, 0.9999999999999999.truncate());
-  Expect.equals(1, 1.0.truncate());
-  Expect.equals(1, 1.000000000000001.truncate());
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496, 4503599627370496.0.truncate());
-  Expect.equals(4503599627370497, 4503599627370497.0.truncate());
-  Expect.equals(4503599627370498, 4503599627370498.0.truncate());
-  Expect.equals(4503599627370499, 4503599627370499.0.truncate());
-
-  Expect.equals(9007199254740991, 9007199254740991.0.truncate());
-  Expect.equals(9007199254740992, 9007199254740992.0.truncate());
-  Expect.equals(
-      179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      double.MAX_FINITE.truncate());
-
-  Expect.equals(0, (-double.MIN_POSITIVE).truncate());
-  Expect.equals(0, (2.0 * -double.MIN_POSITIVE).truncate());
-  Expect.equals(0, (-1.18e-38).truncate());
-  Expect.equals(0, (-1.18e-38 * 2).truncate());
-  Expect.equals(0, (-0.49999999999999994).truncate());
-  Expect.equals(0, (-0.5).truncate());
-  Expect.equals(0, (-0.9999999999999999).truncate());
-  Expect.equals(-1, (-1.0).truncate());
-  Expect.equals(-1, (-1.000000000000001).truncate());
-  Expect.equals(-4503599627370496, (-4503599627370496.0).truncate());
-  Expect.equals(-4503599627370497, (-4503599627370497.0).truncate());
-  Expect.equals(-4503599627370498, (-4503599627370498.0).truncate());
-  Expect.equals(-4503599627370499, (-4503599627370499.0).truncate());
-  Expect.equals(-9007199254740991, (-9007199254740991.0).truncate());
-  Expect.equals(-9007199254740992, (-9007199254740992.0).truncate());
-  Expect.equals(
-      -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368,
-      (-double.MAX_FINITE).truncate());
-
-  Expect.isTrue(0.0.truncate() is int);
-  Expect.isTrue(double.MIN_POSITIVE.truncate() is int);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).truncate() is int);
-  Expect.isTrue((1.18e-38).truncate() is int);
-  Expect.isTrue((1.18e-38 * 2).truncate() is int);
-  Expect.isTrue(0.49999999999999994.truncate() is int);
-  Expect.isTrue(0.5.truncate() is int);
-  Expect.isTrue(0.9999999999999999.truncate() is int);
-  Expect.isTrue(1.0.truncate() is int);
-  Expect.isTrue(1.000000000000001.truncate() is int);
-  Expect.isTrue(4503599627370496.0.truncate() is int);
-  Expect.isTrue(4503599627370497.0.truncate() is int);
-  Expect.isTrue(4503599627370498.0.truncate() is int);
-  Expect.isTrue(4503599627370499.0.truncate() is int);
-  Expect.isTrue(9007199254740991.0.truncate() is int);
-  Expect.isTrue(9007199254740992.0.truncate() is int);
-  Expect.isTrue(double.MAX_FINITE.truncate() is int);
-
-  Expect.isTrue((-double.MIN_POSITIVE).truncateToDouble().isNegative);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).truncateToDouble().isNegative);
-  Expect.isTrue((-1.18e-38).truncateToDouble().isNegative);
-  Expect.isTrue((-1.18e-38 * 2).truncateToDouble().isNegative);
-  Expect.isTrue((-0.49999999999999994).truncateToDouble().isNegative);
-  Expect.isTrue((-0.5).truncateToDouble().isNegative);
-  Expect.isTrue((-0.9999999999999999).truncateToDouble().isNegative);
-
-  Expect.isTrue((-double.MIN_POSITIVE).truncate() is int);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).truncate() is int);
-  Expect.isTrue((-1.18e-38).truncate() is int);
-  Expect.isTrue((-1.18e-38 * 2).truncate() is int);
-  Expect.isTrue((-0.49999999999999994).truncate() is int);
-  Expect.isTrue((-0.5).truncate() is int);
-  Expect.isTrue((-0.9999999999999999).truncate() is int);
-  Expect.isTrue((-1.0).truncate() is int);
-  Expect.isTrue((-1.000000000000001).truncate() is int);
-  Expect.isTrue((-4503599627370496.0).truncate() is int);
-  Expect.isTrue((-4503599627370497.0).truncate() is int);
-  Expect.isTrue((-4503599627370498.0).truncate() is int);
-  Expect.isTrue((-4503599627370499.0).truncate() is int);
-  Expect.isTrue((-9007199254740991.0).truncate() is int);
-  Expect.isTrue((-9007199254740992.0).truncate() is int);
-  Expect.isTrue((-double.MAX_FINITE).truncate() is int);
-}
diff --git a/tests/corelib/double_truncate_to_double_test.dart b/tests/corelib/double_truncate_to_double_test.dart
deleted file mode 100644
index ebfc8bb..0000000
--- a/tests/corelib/double_truncate_to_double_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.0.truncateToDouble());
-  Expect.equals(0.0, double.MIN_POSITIVE.truncateToDouble());
-  Expect.equals(0.0, (2.0 * double.MIN_POSITIVE).truncateToDouble());
-  Expect.equals(0.0, (1.18e-38).truncateToDouble());
-  Expect.equals(0.0, (1.18e-38 * 2).truncateToDouble());
-  Expect.equals(0.0, 0.49999999999999994.truncateToDouble());
-  Expect.equals(0.0, 0.5.truncateToDouble());
-  Expect.equals(0.0, 0.9999999999999999.truncateToDouble());
-  Expect.equals(1.0, 1.0.truncateToDouble());
-  Expect.equals(1.0, 1.000000000000001.truncateToDouble());
-  // The following numbers are on the border of 52 bits.
-  // For example: 4503599627370499 + 0.5 => 4503599627370500.
-  Expect.equals(4503599627370496.0, 4503599627370496.0.truncateToDouble());
-  Expect.equals(4503599627370497.0, 4503599627370497.0.truncateToDouble());
-  Expect.equals(4503599627370498.0, 4503599627370498.0.truncateToDouble());
-  Expect.equals(4503599627370499.0, 4503599627370499.0.truncateToDouble());
-
-  Expect.equals(9007199254740991.0, 9007199254740991.0.truncateToDouble());
-  Expect.equals(9007199254740992.0, 9007199254740992.0.truncateToDouble());
-  Expect.equals(double.MAX_FINITE, double.MAX_FINITE.truncateToDouble());
-
-  Expect.equals(0.0, (-double.MIN_POSITIVE).truncateToDouble());
-  Expect.equals(0.0, (2.0 * -double.MIN_POSITIVE).truncateToDouble());
-  Expect.equals(0.0, (-1.18e-38).truncateToDouble());
-  Expect.equals(0.0, (-1.18e-38 * 2).truncateToDouble());
-  Expect.equals(0.0, (-0.49999999999999994).truncateToDouble());
-  Expect.equals(0.0, (-0.5).truncateToDouble());
-  Expect.equals(0.0, (-0.9999999999999999).truncateToDouble());
-  Expect.equals(-1.0, (-1.0).truncateToDouble());
-  Expect.equals(-1.0, (-1.000000000000001).truncateToDouble());
-  Expect.equals(-4503599627370496.0, (-4503599627370496.0).truncateToDouble());
-  Expect.equals(-4503599627370497.0, (-4503599627370497.0).truncateToDouble());
-  Expect.equals(-4503599627370498.0, (-4503599627370498.0).truncateToDouble());
-  Expect.equals(-4503599627370499.0, (-4503599627370499.0).truncateToDouble());
-  Expect.equals(-9007199254740991.0, (-9007199254740991.0).truncateToDouble());
-  Expect.equals(-9007199254740992.0, (-9007199254740992.0).truncateToDouble());
-  Expect.equals(-double.MAX_FINITE, (-double.MAX_FINITE).truncateToDouble());
-
-  Expect.equals(double.INFINITY, double.INFINITY.truncateToDouble());
-  Expect.equals(
-      double.NEGATIVE_INFINITY, double.NEGATIVE_INFINITY.truncateToDouble());
-  Expect.isTrue(double.NAN.truncateToDouble().isNaN);
-
-  Expect.isTrue(0.0.truncateToDouble() is double);
-  Expect.isTrue(double.MIN_POSITIVE.truncateToDouble() is double);
-  Expect.isTrue((2.0 * double.MIN_POSITIVE).truncateToDouble() is double);
-  Expect.isTrue((1.18e-38).truncateToDouble() is double);
-  Expect.isTrue((1.18e-38 * 2).truncateToDouble() is double);
-  Expect.isTrue(0.49999999999999994.truncateToDouble() is double);
-  Expect.isTrue(0.5.truncateToDouble() is double);
-  Expect.isTrue(0.9999999999999999.truncateToDouble() is double);
-  Expect.isTrue(1.0.truncateToDouble() is double);
-  Expect.isTrue(1.000000000000001.truncateToDouble() is double);
-  Expect.isTrue(4503599627370496.0.truncateToDouble() is double);
-  Expect.isTrue(4503599627370497.0.truncateToDouble() is double);
-  Expect.isTrue(4503599627370498.0.truncateToDouble() is double);
-  Expect.isTrue(4503599627370499.0.truncateToDouble() is double);
-  Expect.isTrue(9007199254740991.0.truncateToDouble() is double);
-  Expect.isTrue(9007199254740992.0.truncateToDouble() is double);
-  Expect.isTrue(double.MAX_FINITE.truncateToDouble() is double);
-
-  Expect.isTrue((-double.MIN_POSITIVE).truncateToDouble() is double);
-  Expect.isTrue((2.0 * -double.MIN_POSITIVE).truncateToDouble() is double);
-  Expect.isTrue((-1.18e-38).truncateToDouble() is double);
-  Expect.isTrue((-1.18e-38 * 2).truncateToDouble() is double);
-  Expect.isTrue((-0.49999999999999994).truncateToDouble() is double);
-  Expect.isTrue((-0.5).truncateToDouble() is double);
-  Expect.isTrue((-0.9999999999999999).truncateToDouble() is double);
-  Expect.isTrue((-1.0).truncateToDouble() is double);
-  Expect.isTrue((-1.000000000000001).truncateToDouble() is double);
-  Expect.isTrue((-4503599627370496.0).truncateToDouble() is double);
-  Expect.isTrue((-4503599627370497.0).truncateToDouble() is double);
-  Expect.isTrue((-4503599627370498.0).truncateToDouble() is double);
-  Expect.isTrue((-4503599627370499.0).truncateToDouble() is double);
-  Expect.isTrue((-9007199254740991.0).truncateToDouble() is double);
-  Expect.isTrue((-9007199254740992.0).truncateToDouble() is double);
-  Expect.isTrue((-double.MAX_FINITE).truncateToDouble() is double);
-}
diff --git a/tests/corelib/duration2_test.dart b/tests/corelib/duration2_test.dart
deleted file mode 100644
index 7bfebb0..0000000
--- a/tests/corelib/duration2_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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";
-
-main() {
-  // If the duration class multiplies "str" * microseconds-per-day (instead of
-  // (microseconds-per-day * "str") it will try to build up a huge string and
-  // terminate with an out-of-memory exception instead of an ArgumentError or
-  // TypeError.
-  // See dartbug.com/22309
-
-  String longString = "str" * 1000;
-  Expect.throws(() => new Duration(days: longString),
-      (e) => e is ArgumentError || e is TypeError || e is NoSuchMethodError);
-  Expect.throws(() => new Duration(hours: longString),
-      (e) => e is ArgumentError || e is TypeError || e is NoSuchMethodError);
-  Expect.throws(() => new Duration(minutes: longString),
-      (e) => e is ArgumentError || e is TypeError || e is NoSuchMethodError);
-  Expect.throws(() => new Duration(seconds: longString),
-      (e) => e is ArgumentError || e is TypeError || e is NoSuchMethodError);
-  Expect.throws(() => new Duration(milliseconds: longString),
-      (e) => e is ArgumentError || e is TypeError || e is NoSuchMethodError);
-  Expect.throws(() => new Duration(microseconds: longString),
-      (e) => e is ArgumentError || e is TypeError || e is NoSuchMethodError);
-}
diff --git a/tests/corelib/duration_big_num_test.dart b/tests/corelib/duration_big_num_test.dart
deleted file mode 100644
index 154afb9..0000000
--- a/tests/corelib/duration_big_num_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:math';
-
-main() {
-  Duration d, d1;
-
-  d1 = new Duration(microseconds: pow(2, 53));
-  d = d1 * 2;
-  Expect.equals(pow(2, 54), d.inMicroseconds);
-  d = d1 * 1.5;
-  Expect.equals(pow(2, 53).toDouble() * 1.5, d.inMicroseconds);
-  Expect.isTrue(d.inMicroseconds is int);
-
-  // Test that we lose precision when multiplying with a double.
-  d = new Duration(microseconds: pow(2, 53) + 1) * 1.0;
-  Expect.equals(0, d.inMicroseconds % 2);
-}
diff --git a/tests/corelib/duration_double_multiplication_test.dart b/tests/corelib/duration_double_multiplication_test.dart
deleted file mode 100644
index 415067c..0000000
--- a/tests/corelib/duration_double_multiplication_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  Duration d, d1;
-
-  d1 = new Duration(milliseconds: 1);
-  d = d1 * 0.005;
-  Expect.equals(1000 * 0.005, d.inMicroseconds);
-  d = d1 * 0.0;
-  Expect.equals(0, d.inMicroseconds);
-  d = d1 * -0.005;
-  Expect.equals(1000 * -0.005, d.inMicroseconds);
-  d = d1 * 0.0015;
-  Expect.equals((1000 * 0.0015).round(), d.inMicroseconds);
-}
diff --git a/tests/corelib/duration_test.dart b/tests/corelib/duration_test.dart
deleted file mode 100644
index 842f4b0..0000000
--- a/tests/corelib/duration_test.dart
+++ /dev/null
@@ -1,293 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  Duration d;
-  d = new Duration(days: 1);
-  Expect.equals(86400000000, d.inMicroseconds);
-  Expect.equals(86400000, d.inMilliseconds);
-  Expect.equals(86400, d.inSeconds);
-  Expect.equals(1440, d.inMinutes);
-  Expect.equals(24, d.inHours);
-  Expect.equals(1, d.inDays);
-  d = const Duration(hours: 1);
-  Expect.equals(3600000000, d.inMicroseconds);
-  Expect.equals(3600000, d.inMilliseconds);
-  Expect.equals(3600, d.inSeconds);
-  Expect.equals(60, d.inMinutes);
-  Expect.equals(1, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = new Duration(minutes: 1);
-  Expect.equals(60000000, d.inMicroseconds);
-  Expect.equals(60000, d.inMilliseconds);
-  Expect.equals(60, d.inSeconds);
-  Expect.equals(1, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = const Duration(seconds: 1);
-  Expect.equals(1000000, d.inMicroseconds);
-  Expect.equals(1000, d.inMilliseconds);
-  Expect.equals(1, d.inSeconds);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = new Duration(milliseconds: 1);
-  Expect.equals(1000, d.inMicroseconds);
-  Expect.equals(1, d.inMilliseconds);
-  Expect.equals(0, d.inSeconds);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = new Duration(microseconds: 1);
-  Expect.equals(1, d.inMicroseconds);
-  Expect.equals(0, d.inMilliseconds);
-  Expect.equals(0, d.inSeconds);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-
-  d = const Duration(milliseconds: 1, microseconds: 999);
-  Expect.equals(1999, d.inMicroseconds);
-  Expect.equals(1, d.inMilliseconds);
-  d = const Duration(seconds: 1, milliseconds: 999);
-  Expect.equals(1999, d.inMilliseconds);
-  Expect.equals(1, d.inSeconds);
-  d = new Duration(minutes: 1, seconds: 59);
-  Expect.equals(119, d.inSeconds);
-  Expect.equals(1, d.inMinutes);
-  d = const Duration(hours: 1, minutes: 59);
-  Expect.equals(119, d.inMinutes);
-  Expect.equals(1, d.inHours);
-  d = new Duration(days: 1, hours: 23);
-  Expect.equals(47, d.inHours);
-  Expect.equals(1, d.inDays);
-  d = const Duration(
-      days: 0,
-      hours: 23,
-      minutes: 59,
-      seconds: 59,
-      milliseconds: 999,
-      microseconds: 999);
-  Expect.equals(0, d.inDays);
-
-  d = new Duration(days: -1);
-  Expect.equals(-86400000000, d.inMicroseconds);
-  Expect.equals(-86400000, d.inMilliseconds);
-  Expect.equals(-86400, d.inSeconds);
-  Expect.equals(-1440, d.inMinutes);
-  Expect.equals(-24, d.inHours);
-  Expect.equals(-1, d.inDays);
-  d = const Duration(hours: -1);
-  Expect.equals(-3600000000, d.inMicroseconds);
-  Expect.equals(-3600000, d.inMilliseconds);
-  Expect.equals(-3600, d.inSeconds);
-  Expect.equals(-60, d.inMinutes);
-  Expect.equals(-1, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = new Duration(minutes: -1);
-  Expect.equals(-60000000, d.inMicroseconds);
-  Expect.equals(-60000, d.inMilliseconds);
-  Expect.equals(-60, d.inSeconds);
-  Expect.equals(-1, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = const Duration(seconds: -1);
-  Expect.equals(-1000000, d.inMicroseconds);
-  Expect.equals(-1000, d.inMilliseconds);
-  Expect.equals(-1, d.inSeconds);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = new Duration(milliseconds: -1);
-  Expect.equals(-1000, d.inMicroseconds);
-  Expect.equals(-1, d.inMilliseconds);
-  Expect.equals(0, d.inSeconds);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-  d = new Duration(microseconds: -1);
-  Expect.equals(-1, d.inMicroseconds);
-  Expect.equals(0, d.inMilliseconds);
-  Expect.equals(0, d.inSeconds);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inDays);
-
-  d = const Duration(days: 1, hours: -24);
-  Expect.equals(0, d.inMicroseconds);
-  d = new Duration(hours: 1, minutes: -60);
-  Expect.equals(0, d.inMicroseconds);
-  d = const Duration(minutes: 1, seconds: -60);
-  Expect.equals(0, d.inMicroseconds);
-  d = new Duration(seconds: 1, milliseconds: -1000);
-  Expect.equals(0, d.inMicroseconds);
-  d = new Duration(milliseconds: 1, microseconds: -1000);
-  Expect.equals(0, d.inMicroseconds);
-
-  d = const Duration(hours: 25);
-  Expect.equals(1, d.inDays);
-  Expect.equals(25, d.inHours);
-  Expect.equals(1500, d.inMinutes);
-  Expect.equals(90000, d.inSeconds);
-  Expect.equals(90000000, d.inMilliseconds);
-  Expect.equals(90000000000, d.inMicroseconds);
-  d = new Duration(minutes: 61);
-  Expect.equals(0, d.inDays);
-  Expect.equals(1, d.inHours);
-  Expect.equals(61, d.inMinutes);
-  Expect.equals(3660, d.inSeconds);
-  Expect.equals(3660000, d.inMilliseconds);
-  Expect.equals(3660000000, d.inMicroseconds);
-  d = const Duration(seconds: 61);
-  Expect.equals(0, d.inDays);
-  Expect.equals(0, d.inHours);
-  Expect.equals(1, d.inMinutes);
-  Expect.equals(61, d.inSeconds);
-  Expect.equals(61000, d.inMilliseconds);
-  Expect.equals(61000000, d.inMicroseconds);
-  d = new Duration(milliseconds: 1001);
-  Expect.equals(0, d.inDays);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(1, d.inSeconds);
-  Expect.equals(1001, d.inMilliseconds);
-  Expect.equals(1001000, d.inMicroseconds);
-  d = new Duration(microseconds: 1001);
-  Expect.equals(0, d.inDays);
-  Expect.equals(0, d.inHours);
-  Expect.equals(0, d.inMinutes);
-  Expect.equals(0, d.inSeconds);
-  Expect.equals(1, d.inMilliseconds);
-  Expect.equals(1001, d.inMicroseconds);
-
-  var d1 = const Duration(milliseconds: 1000);
-  var d2 = const Duration(seconds: 1);
-  Expect.identical(d1, d2);
-
-  d1 = const Duration(microseconds: 1000);
-  d2 = const Duration(milliseconds: 1);
-  Expect.identical(d1, d2);
-
-  d1 = new Duration(hours: 1);
-  d2 = new Duration(hours: -1);
-  d = d1 + d2;
-  Expect.equals(0, d.inMicroseconds);
-  d = d1 - d2;
-  Expect.equals(3600000000 * 2, d.inMicroseconds);
-
-  d2 = new Duration(hours: 1);
-  d = d1 + d2;
-  Expect.equals(3600000000 * 2, d.inMicroseconds);
-  d = d1 - d2;
-  Expect.equals(0, d.inMicroseconds);
-
-  d = d1 * 2;
-  Expect.equals(3600000000 * 2, d.inMicroseconds);
-  d = d1 * -1;
-  Expect.equals(-3600000000, d.inMicroseconds);
-  d = d1 * 0;
-  Expect.equals(0, d.inMicroseconds);
-
-  d = d1 ~/ 2;
-  Expect.equals(1800000000, d.inMicroseconds);
-  d = d1 ~/ 3600000001;
-  Expect.equals(0, d.inMicroseconds);
-  d = d1 ~/ -3600000001;
-  Expect.equals(0, d.inMicroseconds);
-  d = d1 ~/ 3599999999;
-  Expect.equals(1, d.inMicroseconds);
-  d = d1 ~/ -3599999999;
-  Expect.equals(-1, d.inMicroseconds);
-  d = d1 ~/ -1;
-  Expect.equals(-3600000000, d.inMicroseconds);
-  d = d1 * 0;
-  Expect.equals(0, d.inMicroseconds);
-  Expect.throws(() => d1 ~/ 0, (e) => e is IntegerDivisionByZeroException);
-
-  d = new Duration(microseconds: 0);
-  Expect.isTrue(d < new Duration(microseconds: 1));
-  Expect.isTrue(d <= new Duration(microseconds: 1));
-  Expect.isTrue(d <= d);
-  Expect.isTrue(d > new Duration(microseconds: -1));
-  Expect.isTrue(d >= new Duration(microseconds: -1));
-  Expect.isTrue(d >= d);
-
-  d = const Duration(
-      days: 1,
-      hours: 3,
-      minutes: 17,
-      seconds: 42,
-      milliseconds: 823,
-      microseconds: 127);
-  Expect.equals("27:17:42.823127", d.toString());
-
-  d = const Duration(hours: 1999, minutes: 17, seconds: 42);
-  Expect.equals("1999:17:42.000000", d.toString());
-
-  d = const Duration(
-      days: -1,
-      hours: -3,
-      minutes: -17,
-      seconds: -42,
-      milliseconds: -823,
-      microseconds: -127);
-  Expect.equals("-27:17:42.823127", d.toString());
-
-  d = const Duration(hours: -1999, minutes: -17, seconds: -42);
-  Expect.equals("-1999:17:42.000000", d.toString());
-
-  // Edge conditions for toString of microseconds.
-  // Regression test for http://dartbug.com/15678
-
-  d = const Duration(microseconds: 1);
-  Expect.equals("0:00:00.000001", d.toString());
-
-  d = const Duration(microseconds: 9);
-  Expect.equals("0:00:00.000009", d.toString());
-
-  d = const Duration(microseconds: 10);
-  Expect.equals("0:00:00.000010", d.toString());
-
-  d = const Duration(microseconds: 99);
-  Expect.equals("0:00:00.000099", d.toString());
-
-  d = const Duration(microseconds: 100);
-  Expect.equals("0:00:00.000100", d.toString());
-
-  d = const Duration(microseconds: 999);
-  Expect.equals("0:00:00.000999", d.toString());
-
-  d = const Duration(microseconds: 1000);
-  Expect.equals("0:00:00.001000", d.toString());
-
-  d = const Duration(microseconds: 9999);
-  Expect.equals("0:00:00.009999", d.toString());
-
-  d = const Duration(microseconds: 10000);
-  Expect.equals("0:00:00.010000", d.toString());
-
-  d = const Duration(microseconds: 99999);
-  Expect.equals("0:00:00.099999", d.toString());
-
-  d = const Duration(microseconds: 100000);
-  Expect.equals("0:00:00.100000", d.toString());
-
-  d = const Duration(microseconds: 999999);
-  Expect.equals("0:00:00.999999", d.toString());
-
-  d = const Duration(microseconds: 1000000);
-  Expect.equals("0:00:01.000000", d.toString());
-
-  d1 = const Duration(hours: 1);
-  d2 = const Duration(hours: -1);
-  Expect.isFalse(d1.isNegative);
-  Expect.isTrue(d2.isNegative);
-  Expect.equals(d1, d1.abs());
-  Expect.equals(d1, d2.abs());
-
-  Expect.equals(d2, -d1);
-  Expect.equals(d1, -d2);
-}
diff --git a/tests/corelib/error_stack_trace1_test.dart b/tests/corelib/error_stack_trace1_test.dart
deleted file mode 100644
index 53df671..0000000
--- a/tests/corelib/error_stack_trace1_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  static Aa() => Ab();
-  static Ab() => Ac();
-  static Ac() => throw "abc";
-}
-
-class B {
-  static Ba() => Bb();
-  static Bb() => Bc();
-  static Bc() {
-    try {
-      A.Aa();
-    } catch (e) {
-      // This should produce a NoSuchMethodError.
-      var trace = e.stackTrace;
-    }
-  }
-}
-
-main() {
-  bool hasThrown = false;
-  try {
-    B.Ba();
-  } catch (e) {
-    hasThrown = true;
-    var trace = e.stackTrace.toString();
-    print(trace);
-    Expect.isTrue(trace.contains("Bc"));
-    Expect.isTrue(trace.contains("Bb"));
-    Expect.isTrue(trace.contains("Ba"));
-    Expect.isTrue(trace.contains("main"));
-  }
-  Expect.isTrue(hasThrown);
-}
diff --git a/tests/corelib/error_stack_trace2_test.dart b/tests/corelib/error_stack_trace2_test.dart
deleted file mode 100644
index 24c0305..0000000
--- a/tests/corelib/error_stack_trace2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  get foo => cyclicStatic;
-}
-
-var a = new A();
-var cyclicStatic = (() => a.foo + 1)();
-
-cyclicInitialization() {
-  return cyclicStatic;
-}
-
-main() {
-  bool hasThrown = false;
-  try {
-    cyclicStatic + 1;
-  } catch (e2) {
-    var e = e2;
-    hasThrown = true;
-    Expect.isTrue(
-        e.stackTrace is StackTrace, "$e doesn't have a non-null stack trace");
-  }
-  Expect.isTrue(hasThrown);
-}
diff --git a/tests/corelib/error_stack_trace_test.dart b/tests/corelib/error_stack_trace_test.dart
deleted file mode 100644
index 6851f7b..0000000
--- a/tests/corelib/error_stack_trace_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void argument() {
-  throw new ArgumentError(499);
-}
-
-void noSuchMethod() {
-  (499).doesNotExist();
-}
-
-void nullThrown() {
-  throw null;
-}
-
-void range() {
-  throw new RangeError.range(0, 1, 2);
-}
-
-void fallThrough() {
-  nested() {}
-
-  switch (5) {
-    case 5:
-      nested();
-    default:
-      Expect.fail("Should not reach");
-  }
-}
-
-abstract class A {
-  foo();
-}
-
-void abstractClassInstantiation() {
-  new A();
-}
-
-void unsupported() {
-  throw new UnsupportedError("unsupported");
-}
-
-void unimplemented() {
-  throw new UnimplementedError("unimplemented");
-}
-
-void state() {
-  return [1, 2].single;
-}
-
-void type() {
-  return 1 + "string";
-}
-
-main() {
-  List<Function> errorFunctions = [
-    argument,
-    noSuchMethod,
-    nullThrown,
-    range,
-    fallThrough,
-    abstractClassInstantiation,
-    unsupported,
-    unimplemented,
-    state,
-    type
-  ];
-
-  for (var f in errorFunctions) {
-    bool hasThrown = false;
-    try {
-      f();
-    } catch (e) {
-      hasThrown = true;
-      Expect.isTrue(
-          e.stackTrace is StackTrace, "$e doesn't have a non-null stack trace");
-    }
-    Expect.isTrue(hasThrown);
-  }
-}
diff --git a/tests/corelib/errors_test.dart b/tests/corelib/errors_test.dart
deleted file mode 100644
index 763b486..0000000
--- a/tests/corelib/errors_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2015, 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";
-
-// Test that error constructors do what they are documented as doing.
-
-main() {
-  Expect.equals("Invalid argument(s)", new ArgumentError().toString());
-  Expect.equals(
-      "Invalid argument(s): message", new ArgumentError("message").toString());
-  Expect.equals(
-      "Invalid argument: null", new ArgumentError.value(null).toString());
-  Expect.equals("Invalid argument: 42", new ArgumentError.value(42).toString());
-  Expect.equals(
-      "Invalid argument: \"bad\"", new ArgumentError.value("bad").toString());
-  Expect.equals("Invalid argument (foo): null",
-      new ArgumentError.value(null, "foo").toString());
-  Expect.equals("Invalid argument (foo): 42",
-      new ArgumentError.value(42, "foo").toString());
-  Expect.equals("Invalid argument (foo): message: 42",
-      new ArgumentError.value(42, "foo", "message").toString());
-  Expect.equals("Invalid argument: message: 42",
-      new ArgumentError.value(42, null, "message").toString());
-  Expect.equals("Invalid argument(s): Must not be null",
-      new ArgumentError.notNull().toString());
-  Expect.equals("Invalid argument(s) (foo): Must not be null",
-      new ArgumentError.notNull("foo").toString());
-
-  Expect.equals("RangeError", new RangeError(null).toString());
-  Expect.equals("RangeError: message", new RangeError("message").toString());
-  Expect.equals("RangeError: Value not in range: 42",
-      new RangeError.value(42).toString());
-  Expect.equals("RangeError (foo): Value not in range: 42",
-      new RangeError.value(42, "foo").toString());
-  Expect.equals("RangeError (foo): message: 42",
-      new RangeError.value(42, "foo", "message").toString());
-  Expect.equals("RangeError: message: 42",
-      new RangeError.value(42, null, "message").toString());
-
-  Expect.equals("RangeError: Invalid value: Not in range 2..9, inclusive: 42",
-      new RangeError.range(42, 2, 9).toString());
-  Expect.equals(
-      "RangeError (foo): Invalid value: Not in range 2..9, "
-      "inclusive: 42",
-      new RangeError.range(42, 2, 9, "foo").toString());
-  Expect.equals("RangeError (foo): message: Not in range 2..9, inclusive: 42",
-      new RangeError.range(42, 2, 9, "foo", "message").toString());
-  Expect.equals("RangeError: message: Not in range 2..9, inclusive: 42",
-      new RangeError.range(42, 2, 9, null, "message").toString());
-
-  Expect.equals(
-      "RangeError: Index out of range: "
-      "index should be less than 3: 42",
-      new RangeError.index(42, [1, 2, 3]).toString());
-  Expect.equals(
-      "RangeError (foo): Index out of range: "
-      "index should be less than 3: 42",
-      new RangeError.index(42, [1, 2, 3], "foo").toString());
-  Expect.equals(
-      "RangeError (foo): message: "
-      "index should be less than 3: 42",
-      new RangeError.index(42, [1, 2, 3], "foo", "message").toString());
-  Expect.equals(
-      "RangeError: message: "
-      "index should be less than 3: 42",
-      new RangeError.index(42, [1, 2, 3], null, "message").toString());
-  Expect.equals(
-      "RangeError (foo): message: "
-      "index should be less than 2: 42",
-      new RangeError.index(42, [1, 2, 3], "foo", "message", 2).toString());
-  Expect.equals(
-      "RangeError: Index out of range: "
-      "index must not be negative: -5",
-      new RangeError.index(-5, [1, 2, 3]).toString());
-}
diff --git a/tests/corelib/exception_implementation_test.dart b/tests/corelib/exception_implementation_test.dart
deleted file mode 100644
index 0744f50..0000000
--- a/tests/corelib/exception_implementation_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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 exception_implementation_test;
-
-import "package:expect/expect.dart";
-
-main() {
-  final msg = 1;
-  try {
-    throw new Exception(msg);
-    Expect.fail("Unreachable");
-  } on Exception catch (e) {
-    Expect.isTrue(e is Exception);
-    Expect.equals("Exception: $msg", e.toString());
-  }
-}
diff --git a/tests/corelib/expando_test.dart b/tests/corelib/expando_test.dart
deleted file mode 100644
index 3b604e4..0000000
--- a/tests/corelib/expando_test.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// 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";
-
-class ExpandoTest {
-  static Expando<int> visits;
-
-  static testMain() {
-    visits = new Expando<int>('visits');
-    var legal = [
-      new Object(),
-      new List(),
-      [1, 2, 3],
-      const [1, 2, 3],
-      new Map(),
-      {'x': 1, 'y': 2},
-      const {'x': 1, 'y': 2},
-      new Expando(),
-      new Expando('horse')
-    ];
-    for (var object in legal) {
-      testNamedExpando(object);
-      testUnnamedExpando(object);
-    }
-    for (var object in legal) {
-      Expect.equals(2, visits[object], "$object");
-    }
-    testIllegal();
-    testIdentity();
-  }
-
-  static visit(object) {
-    int count = visits[object];
-    count = (count == null) ? 1 : count + 1;
-    visits[object] = count;
-  }
-
-  static testNamedExpando(object) {
-    Expando<int> expando = new Expando<int>('myexpando');
-    Expect.equals('myexpando', expando.name);
-    Expect.isTrue(expando.toString().startsWith('Expando:myexpando'));
-    testExpando(expando, object);
-  }
-
-  static testUnnamedExpando(object) {
-    Expando<int> expando = new Expando<int>();
-    Expect.isNull(expando.name);
-    Expect.isTrue(expando.toString().startsWith('Expando:'));
-    testExpando(expando, object);
-  }
-
-  static testExpando(Expando<int> expando, object) {
-    visit(object);
-
-    Expect.isNull(expando[object]);
-    expando[object] = 42;
-    Expect.equals(42, expando[object]);
-    expando[object] = null;
-    Expect.isNull(expando[object]);
-
-    Expando<int> alternative = new Expando('myexpando');
-    Expect.isNull(alternative[object]);
-    alternative[object] = 87;
-    Expect.isNull(expando[object]);
-    expando[object] = 99;
-    Expect.equals(99, expando[object]);
-    Expect.equals(87, alternative[object]);
-  }
-
-  static testIllegal() {
-    Expando<int> expando = new Expando<int>();
-    Expect.throws(
-        () => expando[null], (exception) => exception is ArgumentError, "null");
-    Expect.throws(() => expando['string'],
-        (exception) => exception is ArgumentError, "'string'");
-    Expect.throws(() => expando['string'],
-        (exception) => exception is ArgumentError, "'string'");
-    Expect.throws(
-        () => expando[42], (exception) => exception is ArgumentError, "42");
-    Expect.throws(() => expando[42.87],
-        (exception) => exception is ArgumentError, "42.87");
-    Expect.throws(
-        () => expando[true], (exception) => exception is ArgumentError, "true");
-    Expect.throws(() => expando[false],
-        (exception) => exception is ArgumentError, "false");
-  }
-
-  static testIdentity() {
-    // Expando only depends on identity of object.
-    Expando<int> expando = new Expando<int>();
-    var m1 = new Mutable(1);
-    var m2 = new Mutable(7);
-    var m3 = new Mutable(13);
-    expando[m1] = 42;
-    Expect.equals(42, expando[m1]);
-    m1.id = 37;
-    Expect.equals(42, expando[m1]);
-    expando[m2] = 37;
-    expando[m3] = 10;
-    m3.id = 1;
-    Expect.equals(42, expando[m1]);
-    Expect.equals(37, expando[m2]);
-    Expect.equals(10, expando[m3]);
-  }
-}
-
-main() => ExpandoTest.testMain();
-
-class Mutable {
-  int id;
-  Mutable(this.id);
-  int get hashCode => id;
-  bool operator ==(other) => other is Mutable && other.id == id;
-}
diff --git a/tests/corelib/expression_test.dart b/tests/corelib/expression_test.dart
deleted file mode 100644
index d0ba4c9..0000000
--- a/tests/corelib/expression_test.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests basic expressions. Does not attempt to validate the details of arithmetic, coercion, and
-// so forth.
-class ExpressionTest {
-  ExpressionTest() {}
-
-  int foo;
-
-  static testMain() {
-    var test = new ExpressionTest();
-    test.testBinary();
-    test.testUnary();
-    test.testShifts();
-    test.testBitwise();
-    test.testIncrement();
-    test.testMangling();
-  }
-
-  testBinary() {
-    int x = 4, y = 2;
-    Expect.equals(6, x + y);
-    Expect.equals(2, x - y);
-    Expect.equals(8, x * y);
-    Expect.equals(2, x / y);
-    Expect.equals(0, x % y);
-  }
-
-  testUnary() {
-    int x = 4, y = 2, z = -5;
-    bool t = true, f = false;
-    Expect.equals(-4, -x);
-    Expect.equals(4, ~z);
-    Expect.equals(f, !t);
-  }
-
-  testShifts() {
-    int x = 4, y = 2;
-    Expect.equals(y, x >> 1);
-    Expect.equals(x, y << 1);
-  }
-
-  testBitwise() {
-    int x = 4, y = 2;
-    Expect.equals(6, (x | y));
-    Expect.equals(0, (x & y));
-    Expect.equals(6, (x ^ y));
-  }
-
-  operator [](int index) {
-    return foo;
-  }
-
-  operator []=(int index, int value) {
-    foo = value;
-  }
-
-  testIncrement() {
-    int x = 4, a = x++;
-    Expect.equals(4, a);
-    Expect.equals(5, x);
-    Expect.equals(6, ++x);
-    Expect.equals(6, x++);
-    Expect.equals(7, x);
-    Expect.equals(6, --x);
-    Expect.equals(6, x--);
-    Expect.equals(5, x);
-
-    this.foo = 0;
-    Expect.equals(0, this.foo++);
-    Expect.equals(1, this.foo);
-    Expect.equals(2, ++this.foo);
-    Expect.equals(2, this.foo);
-    Expect.equals(2, this.foo--);
-    Expect.equals(1, this.foo);
-    Expect.equals(0, --this.foo);
-    Expect.equals(0, this.foo);
-
-    Expect.equals(0, this[0]++);
-    Expect.equals(1, this[0]);
-    Expect.equals(2, ++this[0]);
-    Expect.equals(2, this[0]);
-    Expect.equals(2, this[0]--);
-    Expect.equals(1, this[0]);
-    Expect.equals(0, --this[0]);
-    Expect.equals(0, this[0]);
-
-    int $0 = 42, $1 = 87, $2 = 117;
-    Expect.equals(42, $0++);
-    Expect.equals(43, $0);
-    Expect.equals(44, ++$0);
-    Expect.equals(88, $0 += $0);
-    Expect.equals(87, $1++);
-    Expect.equals(88, $1);
-    Expect.equals(89, ++$1);
-    Expect.equals(178, ($1 += $1));
-    Expect.equals(117, $2++);
-    Expect.equals(118, $2);
-    Expect.equals(119, ++$2);
-  }
-
-  void testMangling() {
-    int $0 = 42, $1 = 87, $2 = 117;
-    this[0] = 0;
-    Expect.equals(42, (this[0] += $0));
-    Expect.equals(129, (this[0] += $1));
-    Expect.equals(246, (this[0] += $2));
-  }
-}
-
-main() {
-  ExpressionTest.testMain();
-}
diff --git a/tests/corelib/for_in_test.dart b/tests/corelib/for_in_test.dart
deleted file mode 100644
index 35d1a86..0000000
--- a/tests/corelib/for_in_test.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class ForInTest {
-  static testMain() {
-    testSimple();
-    testBreak();
-    testContinue();
-    testClosure();
-  }
-
-  static Set<int> getSmallSet() {
-    Set<int> set = new Set<int>();
-    set.add(1);
-    set.add(2);
-    set.add(4);
-    return set;
-  }
-
-  static void testSimple() {
-    Set<int> set = getSmallSet();
-    int count = 0;
-    for (final i in set) {
-      count += i;
-    }
-    Expect.equals(7, count);
-
-    count = 0;
-    for (var i in set) {
-      count += i;
-    }
-    Expect.equals(7, count);
-
-    count = 0;
-    for (int i in set) {
-      count += i;
-    }
-    Expect.equals(7, count);
-
-    count = 0;
-    for (final int i in set) {
-      count += i;
-    }
-    Expect.equals(7, count);
-
-    count = 0;
-    int i = 0;
-    Expect.equals(false, set.contains(i)); // Used to test [i] after loop.
-    for (i in set) {
-      count += i;
-    }
-    Expect.equals(7, count);
-    Expect.equals(true, set.contains(i));
-    // The default implementation of [Set] preserves order.
-    Expect.equals(4, i);
-  }
-
-  static void testBreak() {
-    Set<int> set = getSmallSet();
-    int count = 0;
-    for (final i in set) {
-      if (i == 4) break;
-      count += i;
-    }
-    Expect.equals(true, count < 4);
-  }
-
-  static void testContinue() {
-    Set<int> set = getSmallSet();
-    int count = 0;
-    for (final i in set) {
-      if (i < 4) continue;
-      count += i;
-    }
-    Expect.equals(4, count);
-  }
-
-  static void testClosure() {
-    Set<int> set = getSmallSet();
-    List<Function> closures = new List(set.length);
-    int index = 0;
-    for (var i in set) {
-      closures[index++] = () => i;
-    }
-
-    Expect.equals(index, set.length);
-    Expect.equals(7, closures[0]() + closures[1]() + closures[2]());
-  }
-}
-
-main() {
-  ForInTest.testMain();
-}
diff --git a/tests/corelib/format_exception_test.dart b/tests/corelib/format_exception_test.dart
deleted file mode 100644
index a2e89e6..0000000
--- a/tests/corelib/format_exception_test.dart
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) 2011, 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 format_exception_test;
-
-import "package:expect/expect.dart";
-
-test(exn, message, source, offset, toString) {
-  Expect.equals(message, exn.message);
-  Expect.equals(source, exn.source);
-  Expect.equals(offset, exn.offset);
-  Expect.equals(toString, exn.toString());
-}
-
-main() {
-  var e;
-  e = new FormatException();
-  test(e, "", null, null, "FormatException");
-  e = new FormatException("");
-  test(e, "", null, null, "FormatException");
-  e = new FormatException(null);
-  test(e, null, null, null, "FormatException");
-
-  e = new FormatException("message");
-  test(e, "message", null, null, "FormatException: message");
-
-  e = new FormatException("message", "source");
-  test(e, "message", "source", null, "FormatException: message\nsource");
-
-  e = new FormatException("message", "source" * 25);
-  test(e, "message", "source" * 25, null,
-      "FormatException: message\n" + "source" * 12 + "sou...");
-  e = new FormatException("message", "source" * 25);
-  test(e, "message", "source" * 25, null,
-      "FormatException: message\n" + "source" * 12 + "sou...");
-  e = new FormatException("message", "s1\nsource\ns2");
-  test(e, "message", "s1\nsource\ns2", null,
-      "FormatException: message\n" + "s1\nsource\ns2");
-
-  var o = new Object();
-  e = new FormatException("message", o, 10);
-  test(e, "message", o, 10, "FormatException: message (at offset 10)");
-
-  e = new FormatException("message", "source", 3);
-  test(e, "message", "source", 3,
-      "FormatException: message (at character 4)\nsource\n   ^\n");
-
-  e = new FormatException("message", "s1\nsource\ns2", 6);
-  test(e, "message", "s1\nsource\ns2", 6,
-      "FormatException: message (at line 2, character 4)\nsource\n   ^\n");
-
-  var longline = "watermelon cantaloupe " * 8 + "watermelon"; // Length > 160.
-  var longsource = (longline + "\n") * 25;
-  var line10 = (longline.length + 1) * 9;
-  e = new FormatException("message", longsource, line10);
-  test(
-      e,
-      "message",
-      longsource,
-      line10,
-      "FormatException: message (at line 10, character 1)\n"
-      "${longline.substring(0, 75)}...\n^\n");
-
-  e = new FormatException("message", longsource, line10 - 1);
-  test(
-      e,
-      "message",
-      longsource,
-      line10 - 1,
-      "FormatException: message (at line 9, "
-      "character ${longline.length + 1})\n"
-      "...${longline.substring(longline.length - 75)}\n"
-      "${' ' * 78}^\n");
-
-  var half = longline.length ~/ 2;
-  e = new FormatException("message", longsource, line10 + half);
-  test(
-      e,
-      "message",
-      longsource,
-      line10 + half,
-      "FormatException: message (at line 10, character ${half + 1})\n"
-      "...${longline.substring(half - 36, half + 36)}...\n"
-      "${' ' * 39}^\n");
-
-  var sourceNL = "\nsource with leading NL";
-  e = new FormatException("message", sourceNL, 2);
-  test(
-      e,
-      "message",
-      sourceNL,
-      2,
-      "FormatException: message (at line 2, character 2)\n"
-      "source with leading NL\n"
-      " ^\n");
-
-  var sourceNL2 = "\n\nsource with leading NL";
-  e = new FormatException("message", sourceNL2, 2);
-  test(
-      e,
-      "message",
-      sourceNL2,
-      2,
-      "FormatException: message (at line 3, character 1)\n"
-      "source with leading NL\n"
-      "^\n");
-}
diff --git a/tests/corelib/from_environment_const_type_test.dart b/tests/corelib/from_environment_const_type_test.dart
deleted file mode 100644
index fb9de98..0000000
--- a/tests/corelib/from_environment_const_type_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2014, 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.
-// SharedOptions=-Da=true -Db=false -Dc=3 -Dd=STRING
-
-import "package:expect/expect.dart";
-
-class Foo {}
-
-const
-    bool //   //# 01: ok
-    int //    //# 02: static type warning, checked mode compile-time error
-    String // //# 03: static type warning, checked mode compile-time error
-    Foo //    //# 04: static type warning, checked mode compile-time error
-    a = const bool.fromEnvironment('a');
-
-const
-    bool //   //# 05: ok
-    int //    //# 06: static type warning, checked mode compile-time error
-    String // //# 07: static type warning, checked mode compile-time error
-    Foo //    //# 08: static type warning, checked mode compile-time error
-    b = const bool.fromEnvironment('b');
-
-const
-    bool //   //# 09: static type warning, checked mode compile-time error
-    int //    //# 10: ok
-    String // //# 11: static type warning, checked mode compile-time error
-    Foo //    //# 12: static type warning, checked mode compile-time error
-    c = const int.fromEnvironment('c');
-
-const
-    bool //   //# 13: static type warning, checked mode compile-time error
-    int //    //# 14: static type warning, checked mode compile-time error
-    String // //# 15: ok
-    Foo //    //# 16: static type warning, checked mode compile-time error
-    d = const String.fromEnvironment('d');
-
-main() {
-  Expect.equals(a, true);
-  Expect.equals(b, false);
-  Expect.equals(c, 3);
-  Expect.equals(d, 'STRING');
-}
diff --git a/tests/corelib/from_environment_const_type_undefined_test.dart b/tests/corelib/from_environment_const_type_undefined_test.dart
deleted file mode 100644
index 076fa7e..0000000
--- a/tests/corelib/from_environment_const_type_undefined_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class Foo {}
-
-const
-    bool //  //# 01: ok
-    int //   //# 02: static type warning, checked mode compile-time error
-    String //# 03: static type warning, checked mode compile-time error
-    Foo //   //# 04: static type warning, checked mode compile-time error
-    a = const bool.fromEnvironment('a');
-
-const
-    bool //  //# 05: ok
-    int //   //# 06: static type warning, checked mode compile-time error
-    String //# 07: static type warning, checked mode compile-time error
-    Foo //   //# 08: static type warning, checked mode compile-time error
-    b = const bool.fromEnvironment('b');
-
-const
-    bool //  //# 09: static type warning
-    int //   //# 10: ok
-    String //# 11: static type warning
-    Foo //   //# 12: static type warning
-    c = const int.fromEnvironment('c');
-
-const
-    bool //  //# 13: static type warning
-    int //   //# 14: static type warning
-    String //# 15: ok
-    Foo //   //# 16: static type warning
-    d = const String.fromEnvironment('d');
-
-main() {
-  Expect.equals(a, false);
-  Expect.equals(b, false);
-  Expect.equals(c, null);
-  Expect.equals(d, null);
-}
diff --git a/tests/corelib/growable_list_test.dart b/tests/corelib/growable_list_test.dart
deleted file mode 100644
index 722a5b3..0000000
--- a/tests/corelib/growable_list_test.dart
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Sanity check on the growing behavior of a growable list.
-
-import "package:expect/expect.dart";
-
-void main() {
-  testConstructor();
-
-  bool checked = false;
-  assert((checked = true));
-  // Concurrent modification checks are only guaranteed in checked mode.
-  if (checked) testConcurrentModification();
-}
-
-// Iterable generating numbers in range [0..count).
-// May perform callback at some point underways.
-class TestIterableBase extends Iterable<int> {
-  final int length;
-  final int count;
-  // call [callback] if generating callbackIndex.
-  final int callbackIndex;
-  final Function callback;
-  TestIterableBase(this.length, this.count, this.callbackIndex, this.callback);
-  Iterator<int> get iterator => new CallbackIterator(this);
-}
-
-class TestIterable extends TestIterableBase {
-  TestIterable(count, [callbackIndex = -1, callback])
-      : super(-1, count, callbackIndex, callback);
-  int get length => throw "SHOULD NOT BE CALLED";
-}
-
-// Implement Set for private EfficientLengthIterable interface.
-class EfficientTestIterable extends TestIterableBase implements Set<int> {
-  EfficientTestIterable(length, count, [callbackIndex = -1, callback])
-      : super(length, count, callbackIndex, callback);
-  // Avoid warnings because we don't actually implement Set.
-  noSuchMethod(i) => super.noSuchMethod(i);
-}
-
-class CallbackIterator implements Iterator<int> {
-  TestIterableBase _iterable;
-  int _current = null;
-  int _nextIndex = 0;
-  CallbackIterator(this._iterable);
-  bool moveNext() {
-    if (_nextIndex >= _iterable.count) {
-      _current = null;
-      return false;
-    }
-    _current = _nextIndex;
-    _nextIndex++;
-    if (_current == _iterable.callbackIndex) {
-      _iterable.callback();
-    }
-    return true;
-  }
-
-  int get current => _current;
-}
-
-void testConstructor() {
-  // Constructor can make both growable and fixed-length lists.
-  testGrowable(list) {
-    Expect.isTrue(list is List<int>);
-    Expect.isFalse(list is List<String>);
-    int length = list.length;
-    list.add(42);
-    Expect.equals(list.length, length + 1);
-  }
-
-  testFixedLength(list) {
-    Expect.isTrue(list is List<int>);
-    int length = list.length;
-    Expect.throws(() {
-      list.add(42);
-    }, null, "adding to fixed-length list");
-    Expect.equals(length, list.length);
-  }
-
-  bool checked = false;
-  assert((checked = true));
-  testThrowsOrTypeError(fn, test, [name]) {
-    Expect.throws(
-        fn, checked ? null : test, checked ? name : "$name w/ TypeError");
-  }
-
-  testFixedLength(new List<int>(0));
-  testFixedLength(new List<int>(5));
-  testFixedLength(new List<int>.filled(5, null)); // default growable: false.
-  testGrowable(new List<int>());
-  testGrowable(new List<int>()..length = 5);
-  testGrowable(new List<int>.filled(5, null, growable: true));
-  Expect.throws(() => new List<int>(-1), (e) => e is ArgumentError, "-1");
-  // There must be limits. Fix this test if we ever allow 10^30 elements.
-  Expect.throws(() => new List<int>(0x7fffffffffffffff),
-      (e) => e is ArgumentError, "bignum");
-  Expect.throws(() => new List<int>(null), (e) => e is ArgumentError, "null");
-  testThrowsOrTypeError(
-      () => new List([] as Object), // Cast to avoid warning.
-      (e) => e is ArgumentError,
-      'list');
-  testThrowsOrTypeError(
-      () => new List([42] as Object), (e) => e is ArgumentError, "list2");
-}
-
-void testConcurrentModification() {
-  // Without EfficientLengthIterable interface
-  {
-    // Change length of list after 200 additions.
-    var l = [];
-    var ci = new TestIterable(257, 200, () {
-      l.add("X");
-    });
-    Expect.throws(() {
-      l.addAll(ci);
-    }, (e) => e is ConcurrentModificationError, "cm1");
-  }
-
-  {
-    // Change length of list after 200 additions.
-    var l = [];
-    var ci = new TestIterable(257, 200, () {
-      l.length = 0;
-    });
-    Expect.throws(() {
-      l.addAll(ci);
-    }, (e) => e is ConcurrentModificationError, "cm2");
-  }
-
-  // With EfficientLengthIterable interface (uses length).
-  {
-    // Change length of list after 20 additions.
-    var l = [];
-    var ci = new EfficientTestIterable(257, 257, 20, () {
-      l.add("X");
-    });
-    Expect.throws(() {
-      l.addAll(ci);
-    }, (e) => e is ConcurrentModificationError, "cm3");
-  }
-
-  {
-    var l = [];
-    var ci = new EfficientTestIterable(257, 257, 20, () {
-      l.length = 0;
-    });
-    Expect.throws(() {
-      l.addAll(ci);
-    }, (e) => e is ConcurrentModificationError, "cm4");
-  }
-
-  {
-    // Length 500, only 250 elements.
-    var l = [];
-    var ci = new EfficientTestIterable(500, 250);
-    l.addAll(ci);
-    Expect.listEquals(new List.generate(250, (x) => x), l, "cm5");
-  }
-
-  {
-    // Length 250, but 500 elements.
-    var l = [];
-    var ci = new EfficientTestIterable(250, 500);
-    l.addAll(ci);
-    Expect.listEquals(new List.generate(500, (x) => x), l, "cm6");
-  }
-
-  {
-    // Adding to yourself.
-    var l = [1];
-    Expect.throws(() {
-      l.addAll(l);
-    }, (e) => e is ConcurrentModificationError, "cm7");
-  }
-
-  {
-    // Adding to yourself.
-    var l = [1, 2, 3];
-    Expect.throws(() {
-      l.addAll(l);
-    }, (e) => e is ConcurrentModificationError, "cm8");
-  }
-}
diff --git a/tests/corelib/has_next_iterator_test.dart b/tests/corelib/has_next_iterator_test.dart
deleted file mode 100644
index c380166..0000000
--- a/tests/corelib/has_next_iterator_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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.
-
-library hasNextIterator.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-main() {
-  var it = new HasNextIterator([].iterator);
-  Expect.isFalse(it.hasNext);
-  Expect.isFalse(it.hasNext);
-  Expect.throws(() => it.next(), (e) => e is StateError);
-  Expect.isFalse(it.hasNext);
-
-  it = new HasNextIterator([1].iterator);
-  Expect.isTrue(it.hasNext);
-  Expect.isTrue(it.hasNext);
-  Expect.equals(1, it.next());
-  Expect.isFalse(it.hasNext);
-  Expect.isFalse(it.hasNext);
-  Expect.throws(() => it.next(), (e) => e is StateError);
-  Expect.isFalse(it.hasNext);
-
-  it = new HasNextIterator([1, 2].iterator);
-  Expect.isTrue(it.hasNext);
-  Expect.isTrue(it.hasNext);
-  Expect.equals(1, it.next());
-  Expect.isTrue(it.hasNext);
-  Expect.isTrue(it.hasNext);
-  Expect.equals(2, it.next());
-  Expect.isFalse(it.hasNext);
-  Expect.isFalse(it.hasNext);
-  Expect.throws(() => it.next(), (e) => e is StateError);
-  Expect.isFalse(it.hasNext);
-}
diff --git a/tests/corelib/hash_map2_test.dart b/tests/corelib/hash_map2_test.dart
deleted file mode 100644
index c744dd0..0000000
--- a/tests/corelib/hash_map2_test.dart
+++ /dev/null
@@ -1,308 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Tests of hash map behavior, with focus in iteration and concurrent
-// modification errors.
-
-library hash_map2_test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-testMap(Map newMap(), Map newMapFrom(Map map)) {
-  Map gen(int from, int to) {
-    Map map = new LinkedHashMap();
-    for (int i = from; i < to; i++) map[i] = i;
-    return map;
-  }
-
-  bool odd(int n) => (n & 1) == 1;
-  bool even(int n) => (n & 1) == 0;
-  void addAll(Map toMap, Map fromMap) {
-    fromMap.forEach((k, v) {
-      toMap[k] = v;
-    });
-  }
-
-  {
-    // Test growing to largish capacity.
-    Map map = newMap();
-
-    for (int i = 0; i < 256; i++) {
-      map[i] = i;
-    }
-    addAll(map, gen(256, 512));
-    addAll(map, newMapFrom(gen(512, 1000)));
-    Expect.equals(1000, map.length);
-
-    // Remove half.
-    for (int i = 0; i < 1000; i += 2) map.remove(i);
-    Expect.equals(500, map.length);
-    Expect.isFalse(map.keys.any(even));
-    Expect.isTrue(map.keys.every(odd));
-
-    // Re-add all.
-    addAll(map, gen(0, 1000));
-    Expect.equals(1000, map.length);
-  }
-
-  {
-    // Test having many deleted elements.
-    Map map = newMap();
-    map[0] = 0;
-    for (int i = 0; i < 1000; i++) {
-      map[i + 1] = i + 1;
-      map.remove(i);
-      Expect.equals(1, map.length);
-    }
-  }
-
-  {
-    // Test having many elements with same hashCode
-    Map map = newMap();
-    for (int i = 0; i < 1000; i++) {
-      map[new BadHashCode()] = 0;
-    }
-    Expect.equals(1000, map.length);
-  }
-
-  {
-    // Check concurrent modification
-    Map map = newMap()
-      ..[0] = 0
-      ..[1] = 1;
-
-    {
-      // Test adding before a moveNext.
-      Iterator iter = map.keys.iterator;
-      iter.moveNext();
-      map[1] = 9; // Updating existing key isn't a modification.
-      iter.moveNext();
-      map[2] = 2;
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test adding after last element.
-      Iterator iter = map.keys.iterator;
-      Expect.equals(3, map.length);
-      iter.moveNext();
-      iter.moveNext();
-      iter.moveNext();
-      map[3] = 3;
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test removing during iteration.
-      Iterator iter = map.keys.iterator;
-      iter.moveNext();
-      map.remove(1000); // Not a modification if it's not there.
-      iter.moveNext();
-      int n = iter.current;
-      map.remove(n);
-      // Removing doesn't change current.
-      Expect.equals(n, iter.current);
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test removing after last element.
-      Iterator iter = map.keys.iterator;
-      Expect.equals(3, map.length);
-      iter.moveNext();
-      iter.moveNext();
-      iter.moveNext();
-      int n = iter.current;
-      map.remove(n);
-      // Removing doesn't change current.
-      Expect.equals(n, iter.current);
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test that updating value of existing key doesn't cause concurrent
-      // modification error.
-      Iterator iter = map.keys.iterator;
-      Expect.equals(2, map.length);
-      iter.moveNext();
-      int n = iter.current;
-      map[n] = n * 2;
-      iter.moveNext();
-      Expect.equals(map[iter.current], iter.current);
-    }
-
-    {
-      // Test that modification during putIfAbsent is not an error.
-      map.putIfAbsent(4, () {
-        map[5] = 5;
-        map[4] = -1;
-        return 4;
-      });
-      Expect.equals(4, map[4]);
-      Expect.equals(5, map[5]);
-    }
-
-    {
-      // Check adding many existing keys isn't considered modification.
-      Map map2 = newMap();
-      for (var key in map.keys) {
-        map2[key] = map[key] + 1;
-      }
-      Iterator iter = map.keys.iterator;
-      addAll(map, map2);
-      // Shouldn't throw.
-      iter.moveNext();
-    }
-  }
-
-  {
-    // Regression test for bug in putIfAbsent where adding an element
-    // that make the table grow, can be lost.
-    Map map = newMap();
-    map.putIfAbsent("S", () => 0);
-    map.putIfAbsent("T", () => 0);
-    map.putIfAbsent("U", () => 0);
-    map.putIfAbsent("C", () => 0);
-    map.putIfAbsent("a", () => 0);
-    map.putIfAbsent("b", () => 0);
-    map.putIfAbsent("n", () => 0);
-    Expect.isTrue(map.containsKey("n"));
-  }
-
-  {
-    // Check that putIfAbsent works just as well as put.
-    Map map = newMap();
-    for (int i = 0; i < 128; i++) {
-      map.putIfAbsent(i, () => i);
-      Expect.isTrue(map.containsKey(i));
-      map.putIfAbsent(i >> 1, () => -1); // Never triggers.
-    }
-    for (int i = 0; i < 128; i++) {
-      Expect.equals(i, map[i]);
-    }
-  }
-
-  {
-    // Check that updating existing elements is not a modification.
-    // This must be the case even if the underlying data structure is
-    // nearly full.
-    for (int i = 1; i < 128; i++) {
-      // Create maps of different sizes, some of which should be
-      // at a limit of the underlying data structure.
-      Map map = newMapFrom(gen(0, i));
-
-      // ForEach-iteration.
-      map.forEach((key, v) {
-        Expect.equals(key, map[key]);
-        map[key] = key + 1;
-        map.remove(1000); // Removing something not there.
-        map.putIfAbsent(key, () => Expect.fail("SHOULD NOT BE ABSENT"));
-        // Doesn't cause ConcurrentModificationError.
-      });
-
-      // for-in iteration.
-      for (int key in map.keys) {
-        Expect.equals(key + 1, map[key]);
-        map[key] = map[key] + 1;
-        map.remove(1000); // Removing something not there.
-        map.putIfAbsent(key, () => Expect.fail("SHOULD NOT BE ABSENT"));
-        // Doesn't cause ConcurrentModificationError.
-      }
-
-      // Raw iterator.
-      Iterator iter = map.keys.iterator;
-      for (int key = 0; key < i; key++) {
-        Expect.equals(key + 2, map[key]);
-        map[key] = key + 3;
-        map.remove(1000); // Removing something not there.
-        map.putIfAbsent(key, () => Expect.fail("SHOULD NOT BE ABSENT"));
-        // Doesn't cause ConcurrentModificationError on the moveNext.
-      }
-      iter.moveNext(); // Should not throw.
-
-      // Remove a lot of elements, which can cause a re-tabulation.
-      for (int key = 1; key < i; key++) {
-        Expect.equals(key + 3, map[key]);
-        map.remove(key);
-      }
-      iter = map.keys.iterator;
-      map[0] = 2;
-      iter.moveNext(); // Should not throw.
-    }
-  }
-
-  {
-    // Check that null can be in the map.
-    Map map = newMap();
-    map[null] = 0;
-    Expect.equals(1, map.length);
-    Expect.isTrue(map.containsKey(null));
-    Expect.isNull(map.keys.first);
-    Expect.isNull(map.keys.last);
-    map[null] = 1;
-    Expect.equals(1, map.length);
-    Expect.isTrue(map.containsKey(null));
-    map.remove(null);
-    Expect.isTrue(map.isEmpty);
-    Expect.isFalse(map.containsKey(null));
-
-    // Created using map.from.
-    map = newMapFrom(new Map()..[null] = 0);
-    Expect.equals(1, map.length);
-    Expect.isTrue(map.containsKey(null));
-    Expect.isNull(map.keys.first);
-    Expect.isNull(map.keys.last);
-    map[null] = 1;
-    Expect.equals(1, map.length);
-    Expect.isTrue(map.containsKey(null));
-    map.remove(null);
-    Expect.isTrue(map.isEmpty);
-    Expect.isFalse(map.containsKey(null));
-
-    Map fromMap = new Map();
-    fromMap[1] = 0;
-    fromMap[2] = 0;
-    fromMap[3] = 0;
-    fromMap[null] = 0;
-    fromMap[4] = 0;
-    fromMap[5] = 0;
-    fromMap[6] = 0;
-    Expect.equals(7, fromMap.length);
-
-    // map that grows with null in it.
-    map = newMapFrom(fromMap);
-    Expect.equals(7, map.length);
-    for (int i = 7; i < 128; i++) {
-      map[i] = 0;
-    }
-    Expect.equals(128, map.length);
-    Expect.isTrue(map.containsKey(null));
-    map[null] = 1;
-    Expect.equals(128, map.length);
-    Expect.isTrue(map.containsKey(null));
-    map.remove(null);
-    Expect.equals(127, map.length);
-    Expect.isFalse(map.containsKey(null));
-  }
-}
-
-void main() {
-  Expect.isTrue(new HashMap<int, String>() is Map<int, String>);
-  Expect.isTrue(new LinkedHashMap<int, String>() is Map<int, String>);
-  Expect.isTrue(new HashMap<String, int>.from({}) is Map<String, int>);
-  Expect.isTrue(new LinkedHashMap<String, int>.from({}) is Map<String, int>);
-  Expect.isTrue(<String, int>{} is Map<String, int>);
-  Expect.isTrue(const <String, int>{} is Map<String, int>);
-
-  testMap(() => new HashMap(), (m) => new HashMap.from(m));
-  testMap(() => new LinkedHashMap(), (m) => new LinkedHashMap.from(m));
-}
-
-class BadHashCode {
-  static int idCounter = 0;
-  final int id;
-  BadHashCode() : id = idCounter++;
-  int get hashCode => 42;
-}
diff --git a/tests/corelib/hash_map_test.dart b/tests/corelib/hash_map_test.dart
deleted file mode 100644
index 4bd6d62..0000000
--- a/tests/corelib/hash_map_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test program for the HashMap class.
-
-class HashMapTest {
-  static testMain() {
-    var m = new Map();
-    Expect.equals(0, m.length);
-    Expect.equals(true, m.isEmpty);
-    m["one"] = 1;
-    Expect.equals(1, m.length);
-    Expect.equals(false, m.isEmpty);
-    Expect.equals(1, m["one"]);
-  }
-}
-
-main() {
-  HashMapTest.testMain();
-}
diff --git a/tests/corelib/hash_set_test.dart b/tests/corelib/hash_set_test.dart
deleted file mode 100644
index a274c02..0000000
--- a/tests/corelib/hash_set_test.dart
+++ /dev/null
@@ -1,363 +0,0 @@
-// Copyright (c) 2013, 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=
-
-// Tests of hash set behavior, with focus in iteration and concurrent
-// modification errors.
-
-library hash_map2_test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-import 'dart:math' as math;
-
-testSet(Set newSet(), Set newSetFrom(Iterable from)) {
-  Set gen(int from, int to) =>
-      new Set.from(new Iterable.generate(to - from, (n) => n + from));
-
-  bool odd(int n) => (n & 1) == 1;
-  bool even(int n) => (n & 1) == 0;
-
-  {
-    // Test growing to largish capacity.
-    Set set = newSet();
-
-    for (int i = 0; i < 256; i++) {
-      set.add(i);
-    }
-
-    set.addAll(gen(256, 512));
-    set.addAll(newSetFrom(gen(512, 1000)));
-    Expect.equals(1000, set.length);
-
-    // Remove half.
-    for (int i = 0; i < 1000; i += 2) set.remove(i);
-    Expect.equals(500, set.length);
-    Expect.isFalse(set.any(even));
-    Expect.isTrue(set.every(odd));
-
-    // Re-add all.
-    set.addAll(gen(0, 1000));
-    Expect.equals(1000, set.length);
-  }
-
-  {
-    // Test having many deleted elements.
-    Set set = newSet();
-    set.add(0);
-    for (int i = 0; i < 1000; i++) {
-      set.add(i + 1);
-      set.remove(i);
-      Expect.equals(1, set.length);
-    }
-  }
-
-  {
-    // Test having many elements with same hashCode
-    Set set = newSet();
-    for (int i = 0; i < 1000; i++) {
-      set.add(new BadHashCode());
-    }
-    Expect.equals(1000, set.length);
-  }
-
-  {
-    // Check concurrent modification
-    Set set = newSet()..add(0)..add(1);
-
-    {
-      // Test adding before a moveNext.
-      Iterator iter = set.iterator;
-      iter.moveNext();
-      set.add(1); // Updating existing key isn't a modification.
-      iter.moveNext();
-      set.add(2);
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test adding after last element.
-      Iterator iter = set.iterator;
-      Expect.equals(3, set.length);
-      iter.moveNext();
-      iter.moveNext();
-      iter.moveNext();
-      set.add(3);
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test removing during iteration.
-      Iterator iter = set.iterator;
-      iter.moveNext();
-      set.remove(1000); // Not a modification if it's not there.
-      iter.moveNext();
-      int n = iter.current;
-      set.remove(n);
-      // Removing doesn't change current.
-      Expect.equals(n, iter.current);
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test removing after last element.
-      Iterator iter = set.iterator;
-      Expect.equals(3, set.length);
-      iter.moveNext();
-      iter.moveNext();
-      iter.moveNext();
-      int n = iter.current;
-      set.remove(n);
-      // Removing doesn't change current.
-      Expect.equals(n, iter.current);
-      Expect.throws(iter.moveNext, (e) => e is Error);
-    }
-
-    {
-      // Test that updating value doesn't cause error.
-      Iterator iter = set.iterator;
-      Expect.equals(2, set.length);
-      iter.moveNext();
-      int n = iter.current;
-      set.add(n);
-      iter.moveNext();
-      Expect.isTrue(set.contains(iter.current));
-    }
-
-    {
-      // Check adding many existing values isn't considered modification.
-      Set set2 = newSet();
-      for (var value in set) {
-        set2.add(value);
-      }
-      Iterator iter = set.iterator;
-      set.addAll(set2);
-      // Shouldn't throw.
-      iter.moveNext();
-    }
-  }
-
-  {
-    // Check that updating existing elements is not a modification.
-    // This must be the case even if the underlying data structure is
-    // nearly full.
-    for (int i = 1; i < 128; i++) {
-      // Create maps of different sizes, some of which should be
-      // at a limit of the underlying data structure.
-      Set set = newSetFrom(gen(0, i));
-      Iterator iter = set.iterator;
-      for (int j = 0; j < i; j++) {
-        set.add(j);
-      }
-      iter.moveNext(); // Should not throw.
-
-      for (int j = 1; j < i; j++) {
-        set.remove(j);
-      }
-      iter = set.iterator;
-      set.add(0);
-      iter.moveNext(); // Should not throw.
-    }
-  }
-
-  {
-    // Check that null can be in the set.
-    Set set = newSet();
-    set.add(null);
-    Expect.equals(1, set.length);
-    Expect.isTrue(set.contains(null));
-    Expect.isNull(set.first);
-    Expect.isNull(set.last);
-    set.add(null);
-    Expect.equals(1, set.length);
-    Expect.isTrue(set.contains(null));
-    set.remove(null);
-    Expect.isTrue(set.isEmpty);
-    Expect.isFalse(set.contains(null));
-
-    // Created using Set.from.
-    set = newSetFrom([null]);
-    Expect.equals(1, set.length);
-    Expect.isTrue(set.contains(null));
-    Expect.isNull(set.first);
-    Expect.isNull(set.last);
-    set.add(null);
-    Expect.equals(1, set.length);
-    Expect.isTrue(set.contains(null));
-    set.remove(null);
-    Expect.isTrue(set.isEmpty);
-    Expect.isFalse(set.contains(null));
-
-    // Set that grows with null in it.
-    set = newSetFrom([1, 2, 3, null, 4, 5, 6]);
-    Expect.equals(7, set.length);
-    for (int i = 7; i < 128; i++) {
-      set.add(i);
-    }
-    Expect.equals(128, set.length);
-    Expect.isTrue(set.contains(null));
-    set.add(null);
-    Expect.equals(128, set.length);
-    Expect.isTrue(set.contains(null));
-    set.remove(null);
-    Expect.equals(127, set.length);
-    Expect.isFalse(set.contains(null));
-  }
-
-  {
-    // Check that addAll and clear works.
-    Set set = newSet();
-    set.addAll([]);
-    Expect.isTrue(set.isEmpty);
-    set.addAll([1, 3, 2]);
-    Expect.equals(3, set.length);
-    Expect.isTrue(set.contains(1));
-    Expect.isTrue(set.contains(3));
-    Expect.isTrue(set.contains(2));
-    Expect.isFalse(set.contains(4));
-    set.clear();
-    Expect.isTrue(set.isEmpty);
-  }
-
-  {
-    // Check that removeWhere and retainWhere work.
-    Set set = newSetFrom([1, 2, 3]);
-    set.removeWhere((each) => each == 2);
-    Expect.equals(2, set.length);
-    Expect.isTrue(set.contains(1));
-    Expect.isFalse(set.contains(2));
-    Expect.isTrue(set.contains(3));
-    set.retainWhere((each) => each == 3);
-    Expect.equals(1, set.length);
-    Expect.isFalse(set.contains(1));
-    Expect.isFalse(set.contains(2));
-    Expect.isTrue(set.contains(3));
-  }
-
-  {
-    // Test lookup
-    Set set = newSet();
-    var m1a = new Mutable(1);
-    var m1b = new Mutable(1);
-    var m2a = new Mutable(2);
-    var m2b = new Mutable(2);
-    Expect.isNull(set.lookup(m1a));
-    Expect.isNull(set.lookup(m1b));
-    set.add(m1a);
-    Expect.identical(m1a, set.lookup(m1a));
-    Expect.identical(m1a, set.lookup(m1b));
-
-    Expect.isNull(set.lookup(m2a));
-    Expect.isNull(set.lookup(m2b));
-    set.add(m2a);
-    Expect.identical(m2a, set.lookup(m2a));
-    Expect.identical(m2a, set.lookup(m2b));
-
-    set.add(m2b); // Adding doesn't change element.
-    Expect.identical(m2a, set.lookup(m2a));
-    Expect.identical(m2a, set.lookup(m2b));
-
-    set.remove(m1a);
-    set.add(m1b);
-    Expect.identical(m1b, set.lookup(m1a));
-    Expect.identical(m1b, set.lookup(m1b));
-
-    set.add(1);
-    Expect.identical(1, set.lookup(1.0));
-    set.add(-0.0);
-    Expect.identical(-0.0, set.lookup(0.0));
-  }
-
-  {
-    // Test special hash codes
-    Set set = newSet();
-    List keys = [];
-    // Powers of two
-    for (int i = 63; i >= 2; --i) {
-      keys.add(new Mutable(math.pow(2, i)));
-    }
-    for (var key in keys) {
-      Expect.isTrue(set.add(key));
-    }
-    for (var key in keys) {
-      Expect.isTrue(set.contains(key));
-    }
-  }
-}
-
-void testIdentitySet(Set create()) {
-  Set set = create();
-  set.add(1);
-  set.add(2);
-  set.add(1); // Integers are identical if equal.
-  Expect.equals(2, set.length);
-  var complex = 4;
-  complex = set.length == 2 ? complex ~/ 4 : 87; // Avoid compile-time constant.
-  Expect.isTrue(set.contains(complex)); // 1 is in set, even if computed.
-  set.clear();
-
-  // All compile time constants are identical to themselves.
-  var constants = [
-    double.INFINITY,
-                   double.NAN, -0.0, //# 01: ok
-    0.0, 42, "", null, false, true, #bif, testIdentitySet
-  ];
-  set.addAll(constants);
-  Expect.equals(constants.length, set.length);
-  for (var c in constants) {
-    Expect.isTrue(set.contains(c), "constant: $c");
-  }
-  Expect.isTrue(set.containsAll(constants), "constants: $set");
-  set.clear();
-
-  var m1 = new Mutable(1);
-  var m2 = new Mutable(2);
-  var m3 = new Mutable(3);
-  var m4 = new Mutable(2); // Equal to m2, but not identical.
-  set.addAll([m1, m2, m3, m4]);
-  Expect.equals(4, set.length);
-  Expect.equals(3, m3.hashCode);
-  m3.id = 1;
-  Expect.equals(1, m3.hashCode);
-  // Changing hashCode doesn't affect lookup.
-  Expect.isTrue(set.contains(m3));
-  Expect.isTrue(set.contains(m1));
-  set.remove(m3);
-  Expect.isFalse(set.contains(m3));
-  Expect.isTrue(set.contains(m1));
-
-  Expect.identical(m1, set.lookup(m1));
-  Expect.identical(null, set.lookup(m3));
-}
-
-void main() {
-  testSet(() => new Set(), (m) => new Set.from(m));
-  testSet(() => new HashSet(), (m) => new HashSet.from(m));
-  testSet(() => new LinkedHashSet(), (m) => new LinkedHashSet.from(m));
-  testIdentitySet(() => new Set.identity());
-  testIdentitySet(() => new HashSet.identity());
-  testIdentitySet(() => new LinkedHashSet.identity());
-  testIdentitySet(() => new HashSet(
-      equals: (x, y) => identical(x, y), hashCode: (x) => identityHashCode(x)));
-  testIdentitySet(() => new LinkedHashSet(
-      equals: (x, y) => identical(x, y), hashCode: (x) => identityHashCode(x)));
-}
-
-class BadHashCode {
-  static int idCounter = 0;
-  final int id;
-  BadHashCode() : id = idCounter++;
-  int get hashCode => 42;
-  // operator == is identity.
-  // Can't make a bad compareTo that isn't invalid.
-  int compareTo(BadHashCode other) => id - other.id;
-}
-
-class Mutable {
-  int id;
-  Mutable(this.id);
-  int get hashCode => id;
-  bool operator ==(other) => other is Mutable && id == other.id;
-}
diff --git a/tests/corelib/hash_set_type_check_test.dart b/tests/corelib/hash_set_type_check_test.dart
deleted file mode 100644
index 27c7908..0000000
--- a/tests/corelib/hash_set_type_check_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Tests of hash set type checking.
-
-library hash_set_type_check_test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-testSet(Set<String> newSet()) {
-  Set<String> s = newSet();
-  Expect.throws(() => s.add(1), (e) => e is Error);
-  Expect.isNull(s.lookup(1));
-}
-
-void testIdentitySet(Set create()) {
-  Set<String> s = create();
-  Expect.throws(() => s.add(1), (e) => e is Error);
-  Expect.isNull(s.lookup(1));
-}
-
-bool get inCheckedMode {
-  try {
-    var i = 1;
-    String j = i;
-  } catch (_) {
-    return true;
-  }
-  return false;
-}
-
-void main() {
-  if (!inCheckedMode) return;
-
-  testSet(() => new Set<String>());
-  testSet(() => new HashSet<String>());
-  testSet(() => new LinkedHashSet<String>());
-  testIdentitySet(() => new Set<String>.identity());
-  testIdentitySet(() => new HashSet<String>.identity());
-  testIdentitySet(() => new LinkedHashSet<String>.identity());
-  testIdentitySet(() => new HashSet<String>(
-      equals: (x, y) => identical(x, y), hashCode: (x) => identityHashCode(x)));
-  testIdentitySet(() => new LinkedHashSet<String>(
-      equals: (x, y) => identical(x, y), hashCode: (x) => identityHashCode(x)));
-}
diff --git a/tests/corelib/hashcode_boxed_test.dart b/tests/corelib/hashcode_boxed_test.dart
deleted file mode 100644
index e23c75a..0000000
--- a/tests/corelib/hashcode_boxed_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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";
-
-double fib(double n) {
-  return n <= 1.0 ? 1.0 : fib(n - 1) + fib(n - 2);
-}
-
-main() {
-  // Compute the same value in a way that won't be optimized away so the results
-  // are different objects in memory.
-  var a = fib(5.0) + 1.0;
-  var b = fib(4.0) + 4.0;
-
-  Expect.isTrue(identical(a, b));
-  Expect.equals(identityHashCode(a), identityHashCode(b));
-  Expect.equals(a, b);
-  Expect.equals(a.hashCode, b.hashCode);
-}
diff --git a/tests/corelib/hashcode_test.dart b/tests/corelib/hashcode_test.dart
deleted file mode 100644
index ba45275..0000000
--- a/tests/corelib/hashcode_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Override {
-  int hash;
-  int get superHash => super.hashCode;
-  int get hashCode => hash;
-
-  int foo() => hash; //   Just some function that can be closurized.
-
-  bool operator ==(Object other) =>
-      other is Override && (other as Override).hash == hash;
-}
-
-int bar() => 42; // Some global function.
-
-main() {
-  var o = new Object();
-  var hash = o.hashCode;
-  // Doesn't change.
-  Expect.equals(hash, o.hashCode);
-  Expect.equals(hash, identityHashCode(o));
-
-  var c = new Override();
-  int identityHash = c.superHash;
-  hash = (identityHash == 42) ? 37 : 42;
-  c.hash = hash;
-  Expect.equals(hash, c.hashCode);
-  Expect.equals(identityHash, identityHashCode(c));
-
-  // These classes don't override hashCode.
-  var samples = [0, 0x10000000, 1.5, -0, null, true, false, const Object()];
-  for (var v in samples) {
-    print(v);
-    Expect.equals(v.hashCode, identityHashCode(v));
-  }
-  // These do, or might do, but we can still use hashCodeOf and get the same
-  // result each time.
-  samples = ["string", "", (x) => 42, c.foo, bar];
-  for (var v in samples) {
-    print(v);
-    Expect.equals(v.hashCode, v.hashCode);
-    Expect.equals(identityHashCode(v), identityHashCode(v));
-  }
-}
diff --git a/tests/corelib/hidden_library2_test.dart b/tests/corelib/hidden_library2_test.dart
deleted file mode 100644
index 637cd94..0000000
--- a/tests/corelib/hidden_library2_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that the internal hidden library doesn't make problems with taking
-// stack-traces.
-
-main() {
-  print(['x'].where((_) {
-    // We actually don't really care for the successful case. We just want to
-    // make sure that the test doesn't crash when it is negative.
-    throw 'fisk'; // //# 01: runtime error
-    return true;
-  }).toList());
-}
diff --git a/tests/corelib/indexed_list_access_test.dart b/tests/corelib/indexed_list_access_test.dart
deleted file mode 100644
index b182eef..0000000
--- a/tests/corelib/indexed_list_access_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Check that indexed access to lists throws correct exception if index
-// is not int.
-
-main() {
-  checkList(new List(10));
-  var growable = new List();
-  growable.add(1);
-  growable.add(1);
-  checkList(growable);
-}
-
-checkList(var list) {
-  // Check unoptimized.
-  Expect.isFalse(checkCatch(getIt, list, 1));
-  Expect.isTrue(checkCatch(getIt, list, "hi"));
-  Expect.isFalse(checkCatch(putIt, list, 1));
-  Expect.isTrue(checkCatch(putIt, list, "hi"));
-  // Optimize 'getIt' and 'putIt'.
-  for (int i = 0; i < 2000; i++) {
-    putIt(list, 1);
-    getIt(list, 1);
-  }
-  Expect.isTrue(checkCatch(getIt, list, "hi"));
-  Expect.isTrue(checkCatch(putIt, list, "hi"));
-}
-
-checkCatch(var f, var list, var index) {
-  try {
-    f(list, index);
-  } on ArgumentError catch (e) {
-    return true;
-  } on TypeError catch (t) {
-    return true; // thrown in type checked mode.
-  }
-  return false;
-}
-
-getIt(var a, var i) {
-  return a[i];
-}
-
-putIt(var a, var i) {
-  a[i] = null;
-}
diff --git a/tests/corelib/int_ceil_test.dart b/tests/corelib/int_ceil_test.dart
deleted file mode 100644
index 3d424a67..0000000
--- a/tests/corelib/int_ceil_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.ceil());
-  Expect.equals(1, 1.ceil());
-  Expect.equals(0x1234, 0x1234.ceil());
-  Expect.equals(0x12345678, 0x12345678.ceil());
-  Expect.equals(0x123456789AB, 0x123456789AB.ceil());
-  Expect.equals(0x123456789ABCDEF, 0x123456789ABCDEF.ceil());
-  Expect.equals(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.ceil());
-  Expect.equals(-1, -1.ceil());
-  Expect.equals(-0x1234, -0x1234.ceil());
-  Expect.equals(-0x12345678, -0x12345678.ceil());
-  Expect.equals(-0x123456789AB, -0x123456789AB.ceil());
-  Expect.equals(-0x123456789ABCDEF, -0x123456789ABCDEF.ceil());
-  Expect.equals(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.ceil());
-
-  Expect.isTrue(0.ceil() is int);
-  Expect.isTrue(1.ceil() is int);
-  Expect.isTrue(0x1234.ceil() is int);
-  Expect.isTrue(0x12345678.ceil() is int);
-  Expect.isTrue(0x123456789AB.ceil() is int);
-  Expect.isTrue(0x123456789ABCDEF.ceil() is int);
-  Expect
-      .isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.ceil() is int);
-  Expect.isTrue(-1.ceil() is int);
-  Expect.isTrue(-0x1234.ceil() is int);
-  Expect.isTrue(-0x12345678.ceil() is int);
-  Expect.isTrue(-0x123456789AB.ceil() is int);
-  Expect.isTrue(-0x123456789ABCDEF.ceil() is int);
-  Expect
-      .isTrue(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.ceil() is int);
-}
diff --git a/tests/corelib/int_ceil_to_double_test.dart b/tests/corelib/int_ceil_to_double_test.dart
deleted file mode 100644
index 993acf1..0000000
--- a/tests/corelib/int_ceil_to_double_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.ceilToDouble());
-  Expect.equals(1.0, 1.ceilToDouble());
-  Expect.equals(0x1234, 0x1234.ceilToDouble());
-  Expect.equals(0x12345678, 0x12345678.ceilToDouble());
-  Expect.equals(0x123456789AB, 0x123456789AB.ceilToDouble());
-  Expect.equals(81985529216486900.0, 0x123456789ABCDEF.ceilToDouble());
-  Expect.equals(2.7898229935051914e+55,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.ceilToDouble());
-  Expect.equals(-1.0, -1.ceilToDouble());
-  Expect.equals(-0x1234, -0x1234.ceilToDouble());
-  Expect.equals(-0x12345678, -0x12345678.ceilToDouble());
-  Expect.equals(-0x123456789AB, -0x123456789AB.ceilToDouble());
-  Expect.equals(-81985529216486900.0, -0x123456789ABCDEF.ceilToDouble());
-  Expect.equals(-2.7898229935051914e+55,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.ceilToDouble());
-
-  Expect.isTrue(0.ceilToDouble() is double);
-  Expect.isTrue(1.ceilToDouble() is double);
-  Expect.isTrue(0x1234.ceilToDouble() is double);
-  Expect.isTrue(0x12345678.ceilToDouble() is double);
-  Expect.isTrue(0x123456789AB.ceilToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF.ceilToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.ceilToDouble()
-      is double);
-  Expect.isTrue(-1.ceilToDouble() is double);
-  Expect.isTrue(-0x1234.ceilToDouble() is double);
-  Expect.isTrue(-0x12345678.ceilToDouble() is double);
-  Expect.isTrue(-0x123456789AB.ceilToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF.ceilToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
-      .ceilToDouble() is double);
-}
diff --git a/tests/corelib/int_floor_test.dart b/tests/corelib/int_floor_test.dart
deleted file mode 100644
index 4b235b4..0000000
--- a/tests/corelib/int_floor_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.floor());
-  Expect.equals(1, 1.floor());
-  Expect.equals(0x1234, 0x1234.floor());
-  Expect.equals(0x12345678, 0x12345678.floor());
-  Expect.equals(0x123456789AB, 0x123456789AB.floor());
-  Expect.equals(0x123456789ABCDEF, 0x123456789ABCDEF.floor());
-  Expect.equals(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.floor());
-  Expect.equals(-1, -1.floor());
-  Expect.equals(-0x1234, -0x1234.floor());
-  Expect.equals(-0x12345678, -0x12345678.floor());
-  Expect.equals(-0x123456789AB, -0x123456789AB.floor());
-  Expect.equals(-0x123456789ABCDEF, -0x123456789ABCDEF.floor());
-  Expect.equals(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.floor());
-
-  Expect.isTrue(0.floor() is int);
-  Expect.isTrue(1.floor() is int);
-  Expect.isTrue(0x1234.floor() is int);
-  Expect.isTrue(0x12345678.floor() is int);
-  Expect.isTrue(0x123456789AB.floor() is int);
-  Expect.isTrue(0x123456789ABCDEF.floor() is int);
-  Expect
-      .isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.floor() is int);
-  Expect.isTrue(-1.floor() is int);
-  Expect.isTrue(-0x1234.floor() is int);
-  Expect.isTrue(-0x12345678.floor() is int);
-  Expect.isTrue(-0x123456789AB.floor() is int);
-  Expect.isTrue(-0x123456789ABCDEF.floor() is int);
-  Expect.isTrue(
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.floor() is int);
-}
diff --git a/tests/corelib/int_floor_to_double_test.dart b/tests/corelib/int_floor_to_double_test.dart
deleted file mode 100644
index e87ae8c..0000000
--- a/tests/corelib/int_floor_to_double_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.floorToDouble());
-  Expect.equals(1.0, 1.floorToDouble());
-  Expect.equals(0x1234, 0x1234.floorToDouble());
-  Expect.equals(0x12345678, 0x12345678.floorToDouble());
-  Expect.equals(0x123456789AB, 0x123456789AB.floorToDouble());
-  Expect.equals(81985529216486900.0, 0x123456789ABCDEF.floorToDouble());
-  Expect.equals(2.7898229935051914e+55,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.floorToDouble());
-  Expect.equals(-1.0, -1.floorToDouble());
-  Expect.equals(-0x1234, -0x1234.floorToDouble());
-  Expect.equals(-0x12345678, -0x12345678.floorToDouble());
-  Expect.equals(-0x123456789AB, -0x123456789AB.floorToDouble());
-  Expect.equals(-81985529216486900.0, -0x123456789ABCDEF.floorToDouble());
-  Expect.equals(-2.7898229935051914e+55,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.floorToDouble());
-
-  Expect.isTrue(0.floorToDouble() is double);
-  Expect.isTrue(1.floorToDouble() is double);
-  Expect.isTrue(0x1234.floorToDouble() is double);
-  Expect.isTrue(0x12345678.floorToDouble() is double);
-  Expect.isTrue(0x123456789AB.floorToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF.floorToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
-      .floorToDouble() is double);
-  Expect.isTrue(-1.floorToDouble() is double);
-  Expect.isTrue(-0x1234.floorToDouble() is double);
-  Expect.isTrue(-0x12345678.floorToDouble() is double);
-  Expect.isTrue(-0x123456789AB.floorToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF.floorToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
-      .floorToDouble() is double);
-}
diff --git a/tests/corelib/int_from_environment2_test.dart b/tests/corelib/int_from_environment2_test.dart
deleted file mode 100644
index 348f0b0..0000000
--- a/tests/corelib/int_from_environment2_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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.
-// SharedOptions=-Da=x -Db=- -Dc=0xg -Dd=+ -Dd=
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.isNull(const int.fromEnvironment('a'));
-  Expect.isNull(const int.fromEnvironment('b'));
-  Expect.isNull(const int.fromEnvironment('c'));
-  Expect.isNull(const int.fromEnvironment('d'));
-  Expect.isNull(const int.fromEnvironment('e'));
-}
diff --git a/tests/corelib/int_from_environment3_test.dart b/tests/corelib/int_from_environment3_test.dart
deleted file mode 100644
index 996338a..0000000
--- a/tests/corelib/int_from_environment3_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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.
-
-main() {
-  const int.fromEnvironment('NOT_FOUND', defaultValue: ''); // //# 01: compile-time error
-  const int.fromEnvironment('NOT_FOUND', defaultValue: true); // //# 02: compile-time error
-  const int.fromEnvironment(null); // //# 03: compile-time error
-  const int.fromEnvironment(1); // //# 04: compile-time error
-  const int.fromEnvironment([]); // //# 05: compile-time error
-}
diff --git a/tests/corelib/int_from_environment_test.dart b/tests/corelib/int_from_environment_test.dart
deleted file mode 100644
index f6033a5..0000000
--- a/tests/corelib/int_from_environment_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-// SharedOptions=-Da=1 -Db=-12 -Dc=0x123 -Dd=-0x1234 -De=+0x112296 -Df=99999999999999999999
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals(1, const int.fromEnvironment('a'));
-  Expect.equals(-12, const int.fromEnvironment('b'));
-  Expect.equals(0x123, const int.fromEnvironment('c'));
-  Expect.equals(-0x1234, const int.fromEnvironment('d'));
-  Expect.equals(0x112296, const int.fromEnvironment('e'));
-  Expect.equals(99999999999999999999, const int.fromEnvironment('f'));
-}
diff --git a/tests/corelib/int_modulo_arith_test.dart b/tests/corelib/int_modulo_arith_test.dart
deleted file mode 100644
index 7ba4d0b..0000000
--- a/tests/corelib/int_modulo_arith_test.dart
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright (c) 2015, 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";
-
-import "dart:math" show pow;
-
-var smallNumber = 1234567890; //   is 31-bit integer.
-var mediumNumber = 1234567890123456; // is 53-bit integer
-var bigNumber = 590295810358705600000; // is > 64-bit integer, exact as double.
-
-testModPow() {
-  test(x, e, m, expectedResult) {
-    // Check that expected result is correct, using an unoptimized version.
-    assert(() {
-      if (1 is double) return true; // Don't have bignums.
-      slowModPow(x, e, m) {
-        var r = 1;
-        while (e > 0) {
-          if (e.isOdd) r = (r * x) % m;
-          e >>= 1;
-          x = (x * x) % m;
-        }
-        return r;
-      }
-
-      return slowModPow(x, e, m) == expectedResult;
-    });
-    var result = x.modPow(e, m);
-    Expect.equals(expectedResult, result, "$x.modPow($e, $m)");
-  }
-
-  test(10, 20, 1, 0);
-  test(1234567890, 1000000001, 19, 11);
-  test(1234567890, 19, 1000000001, 122998977);
-  test(19, 1234567890, 1000000001, 619059596);
-  test(19, 1000000001, 1234567890, 84910879);
-  test(1000000001, 19, 1234567890, 872984351);
-  test(1000000001, 1234567890, 19, 0);
-  test(12345678901234567890, 10000000000000000001, 19, 2);
-  test(12345678901234567890, 19, 10000000000000000001, 3239137215315834625);
-  test(19, 12345678901234567890, 10000000000000000001, 4544207837373941034);
-  test(19, 10000000000000000001, 12345678901234567890, 11135411705397624859);
-  test(10000000000000000001, 19, 12345678901234567890, 2034013733189773841);
-  test(10000000000000000001, 12345678901234567890, 19, 1);
-  test(12345678901234567890, 19, 10000000000000000001, 3239137215315834625);
-  test(12345678901234567890, 10000000000000000001, 19, 2);
-  test(123456789012345678901234567890, 123456789012345678901234567891,
-      123456789012345678901234567899, 116401406051033429924651549616);
-  test(123456789012345678901234567890, 123456789012345678901234567899,
-      123456789012345678901234567891, 123456789012345678901234567890);
-  test(123456789012345678901234567899, 123456789012345678901234567890,
-      123456789012345678901234567891, 35088523091000351053091545070);
-  test(123456789012345678901234567899, 123456789012345678901234567891,
-      123456789012345678901234567890, 18310047270234132455316941949);
-  test(123456789012345678901234567891, 123456789012345678901234567899,
-      123456789012345678901234567890, 1);
-  test(123456789012345678901234567891, 123456789012345678901234567890,
-      123456789012345678901234567899, 40128068573873018143207285483);
-}
-
-testModInverse() {
-  test(x, m, expectedResult) {
-    //print("$x op $m == $expectedResult");
-    // Check that expectedResult is an inverse.
-    assert(expectedResult < m);
-    // The 1 % m handles the m = 1 special case.
-    // This test may overflow if we don't have bignums, so only run on VM.
-    assert(1 is double || (((x % m) * expectedResult) - 1) % m == 0);
-
-    var result = x.modInverse(m);
-    Expect.equals(expectedResult, result, "$x modinv $m");
-
-    if (x > m) {
-      x = x % m;
-      var result = x.modInverse(m);
-      Expect.equals(expectedResult, result, "$x modinv $m");
-    }
-  }
-
-  testThrows(x, m) {
-    // Throws if not co-prime, which is a symmetric property.
-    Expect.throws(() => x.modInverse(m), null, "$x modinv $m");
-    Expect.throws(() => m.modInverse(x), null, "$m modinv $x");
-  }
-
-  test(1, 1, 0);
-
-  testThrows(0, 1000000001);
-  testThrows(2, 4);
-  testThrows(99, 9);
-  testThrows(19, 1000000001);
-  testThrows(123456789012345678901234567890, 123456789012345678901234567899);
-
-  // Co-prime numbers
-  test(1234567890, 19, 11);
-  test(1234567890, 1000000001, 189108911);
-  test(19, 1234567890, 519818059);
-  test(1000000001, 1234567890, 1001100101);
-
-  test(12345, 12346, 12345);
-  test(12345, 12346, 12345);
-
-  test(smallNumber, 137, 42);
-  test(137, smallNumber, 856087223);
-  test(mediumNumber, 137, 77);
-  test(137, mediumNumber, 540686667207353);
-  test(bigNumber, 137, 128); //                 //# bignum: ok
-  // Bigger numbers as modulo is tested in big_integer_arith_vm_test.dart.
-  // Big doubles are not co-prime, so there is nothing to test for dart2js.
-}
-
-testGcd() {
-  // Call testFunc with all combinations and orders of plus/minus
-  // value and other.
-  callCombos(value, other, testFunc) {
-    testFunc(value, other);
-    testFunc(value, -other);
-    testFunc(-value, other);
-    testFunc(-value, -other);
-    if (value == other) return;
-    testFunc(other, value);
-    testFunc(other, -value);
-    testFunc(-other, value);
-    testFunc(-other, -value);
-  }
-
-  // Test that gcd of value and other (non-negative) is expectedResult.
-  // Tests all combinations of positive and negative values and order of
-  // operands, so use positive values and order is not important.
-  test(value, other, expectedResult) {
-    // Check for bug in test.
-    assert(expectedResult == 0 || value % expectedResult == 0);
-    assert(expectedResult == 0 || other % expectedResult == 0);
-    callCombos(value, other, (a, b) {
-      var result = a.gcd(b);
-
-      /// Check that the result is a divisor.
-      Expect.equals(0, result == 0 ? a : a % result, "$result | $a");
-      Expect.equals(0, result == 0 ? b : b % result, "$result | $b");
-      // Check for bug in test. If assert fails, the expected value is too low,
-      // and the gcd call has found a greater common divisor.
-      assert(result >= expectedResult);
-      Expect.equals(expectedResult, result, "$a.gcd($b)");
-    });
-  }
-
-  // Test that gcd of value and other (non-negative) throws.
-  testThrows(value, other) {
-    callCombos(value, other, (a, b) {
-      Expect.throws(() => a.gcd(b), null, "$a.gcd($b)");
-    });
-  }
-
-  testThrows(2.5, 5); // Not a method on double.
-  testThrows(5, 2.5); // Not accepting non-int arguments.
-
-  // Format:
-  //  test(value1, value2, expectedResult);
-  test(1, 1, 1); //     both are 1
-  test(1, 2, 1); //     one is 1
-  test(3, 5, 1); //     coprime.
-  test(37, 37, 37); // Same larger prime.
-
-  test(9999, 7272, 909); // Larger numbers
-
-  test(0, 1000, 1000); // One operand is zero.
-  test(0, 0, 0); //        Both operands are zero.
-
-  // Multiplying both operands by a number multiplies result by same number.
-  test(693, 609, 21);
-  test(693 << 5, 609 << 5, 21 << 5);
-  test(693 * 937, 609 * 937, 21 * 937);
-  test(693 * pow(2, 32), 609 * pow(2, 32), 21 * pow(2, 32));
-  test(693 * pow(2, 52), 609 * pow(2, 52), 21 * pow(2, 52));
-  test(693 * pow(2, 53), 609 * pow(2, 53), 21 * pow(2, 53)); // Regression.
-  test(693 * pow(2, 99), 609 * pow(2, 99), 21 * pow(2, 99));
-
-  test(1234567890, 19, 1);
-  test(1234567890, 1000000001, 1);
-  test(19, 1000000001, 19);
-
-  test(0x3FFFFFFF, 0x3FFFFFFF, 0x3FFFFFFF);
-  test(0x3FFFFFFF, 0x40000000, 1);
-
-  test(pow(2, 54), pow(2, 53), pow(2, 53));
-
-  test((pow(2, 52) - 1) * pow(2, 14), (pow(2, 26) - 1) * pow(2, 22),
-      (pow(2, 26) - 1) * pow(2, 14));
-}
-
-main() {
-  testModPow(); // //# modPow: ok
-  testModInverse();
-  testGcd();
-}
diff --git a/tests/corelib/int_parse_radix_bad_handler_test.dart b/tests/corelib/int_parse_radix_bad_handler_test.dart
deleted file mode 100644
index 58009fa..0000000
--- a/tests/corelib/int_parse_radix_bad_handler_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-void main() {
-  // If handleError isn't an unary function, and it's called, it also throws
-  // (either TypeError in checked mode, or some failure in unchecked mode).
-
-  // These are compile time errors for strong mode.
-  Expect.throws(() => int.parse("9", radix: 8, onError: "not a function"));
-  Expect.throws(() => int.parse("9", radix: 8, onError: () => 42));
-  Expect.throws(() => int.parse("9", radix: 8, onError: (v1, v2) => 42));
-}
diff --git a/tests/corelib/int_parse_radix_test.dart b/tests/corelib/int_parse_radix_test.dart
deleted file mode 100644
index 0757b96..0000000
--- a/tests/corelib/int_parse_radix_test.dart
+++ /dev/null
@@ -1,147 +0,0 @@
-// 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";
-import "dart:math" show pow;
-
-void main() {
-  const String oneByteWhiteSpace = "\x09\x0a\x0b\x0c\x0d\x20"
-    "\x85" //   //# 01: ok
-      "\xa0";
-  const String whiteSpace = "$oneByteWhiteSpace\u1680"
-      "\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a"
-      "\u2028\u2029\u202f\u205f\u3000\ufeff";
-
-  var digits = "0123456789abcdefghijklmnopqrstuvwxyz";
-  var zeros = "0" * 64;
-
-  for (int i = 0; i < whiteSpace.length; i++) {
-    var ws = whiteSpace[i];
-    Expect.equals(0, int.parse("${ws}0${ws}", radix: 2));
-  }
-
-  void testParse(int result, String radixString, int radix) {
-    var m = "$radixString/$radix->$result";
-    Expect.equals(
-        result, int.parse(radixString.toLowerCase(), radix: radix), m);
-    Expect.equals(
-        result, int.parse(radixString.toUpperCase(), radix: radix), m);
-    Expect.equals(result, int.parse(" $radixString", radix: radix), m);
-    Expect.equals(result, int.parse("$radixString ", radix: radix), m);
-    Expect.equals(result, int.parse(" $radixString ", radix: radix), m);
-    Expect.equals(result, int.parse("+$radixString", radix: radix), m);
-    Expect.equals(result, int.parse(" +$radixString", radix: radix), m);
-    Expect.equals(result, int.parse("+$radixString ", radix: radix), m);
-    Expect.equals(result, int.parse(" +$radixString ", radix: radix), m);
-    Expect.equals(-result, int.parse("-$radixString", radix: radix), m);
-    Expect.equals(-result, int.parse(" -$radixString", radix: radix), m);
-    Expect.equals(-result, int.parse("-$radixString ", radix: radix), m);
-    Expect.equals(-result, int.parse(" -$radixString ", radix: radix), m);
-    Expect.equals(
-        result,
-        int.parse("$oneByteWhiteSpace$radixString$oneByteWhiteSpace",
-            radix: radix),
-        m);
-    Expect.equals(
-        -result,
-        int.parse("$oneByteWhiteSpace-$radixString$oneByteWhiteSpace",
-            radix: radix),
-        m);
-    Expect.equals(result,
-        int.parse("$whiteSpace$radixString$whiteSpace", radix: radix), m);
-    Expect.equals(-result,
-        int.parse("$whiteSpace-$radixString$whiteSpace", radix: radix), m);
-
-    Expect.equals(result, int.parse("$zeros$radixString", radix: radix), m);
-    Expect.equals(result, int.parse("+$zeros$radixString", radix: radix), m);
-    Expect.equals(-result, int.parse("-$zeros$radixString", radix: radix), m);
-  }
-
-  for (int r = 2; r <= 36; r++) {
-    for (int i = 0; i <= r * r; i++) {
-      String radixString = i.toRadixString(r);
-      testParse(i, radixString, r);
-    }
-  }
-
-  for (int i = 2; i <= 36; i++) { //             //# 02: ok
-    // Test with bignums. //                     //# 02: continued
-    var digit = digits[i - 1]; //                //# 02: continued
-    testParse(pow(i, 64) - 1, digit * 64, i); // //# 02: continued
-    testParse(0, zeros, i); //                   //# 02: continued
-  } //                                           //# 02: continued
-
-  // Allow both upper- and lower-case letters.
-  Expect.equals(0xABCD, int.parse("ABCD", radix: 16));
-  Expect.equals(0xABCD, int.parse("abcd", radix: 16));
-  Expect.equals(15628859, int.parse("09azAZ", radix: 36));
-  // Big number.
-  Expect.equals(0x12345678123456781234567812345678, // //# 02: continued
-                int.parse("0x1234567812345678" //      //# 02: continued
-                          "1234567812345678")); //     //# 02: continued
-  // Allow whitespace before and after the number.
-  Expect.equals(1, int.parse(" 1", radix: 2));
-  Expect.equals(1, int.parse("1 ", radix: 2));
-  Expect.equals(1, int.parse(" 1 ", radix: 2));
-  Expect.equals(1, int.parse("\n1", radix: 2));
-  Expect.equals(1, int.parse("1\n", radix: 2));
-  Expect.equals(1, int.parse("\n1\n", radix: 2));
-  Expect.equals(1, int.parse("+1", radix: 2));
-
-  void testFails(String source, int radix) {
-    Expect.throws(() {
-      throw int.parse(source, radix: radix, onError: (s) {
-        throw "FAIL";
-      });
-    }, isFail, "$source/$radix");
-    Expect.equals(-999, int.parse(source, radix: radix, onError: (s) => -999));
-  }
-
-  for (int i = 2; i < 36; i++) {
-    var char = i.toRadixString(36);
-    testFails(char.toLowerCase(), i);
-    testFails(char.toUpperCase(), i);
-  }
-  testFails("", 2);
-  testFails("+ 1", 2); // No space between sign and digits.
-  testFails("- 1", 2); // No space between sign and digits.
-  testFails("0x", null);
-  for (int i = 2; i <= 33; i++) {
-    // No 0x specially allowed.
-    // At radix 34 and above, "x" is a valid digit.
-    testFails("0x10", i);
-  }
-
-  testBadTypes(var source, var radix) {
-    if (!typeAssertionsEnabled) {
-      // No promises on what error is thrown if the type doesn't match.
-      // Likely either ArgumentError or NoSuchMethodError.
-      Expect.throws(() => int.parse(source, radix: radix, onError: (s) => 0));
-      return;
-    }
-    // With type assertions enabled we can be more precise.
-    Expect.throws(() => int.parse(source, radix: radix, onError: (s) => 0),
-        (e) => e is TypeError || e is CastError);
-  }
-
-  testBadTypes(9, 10);
-  testBadTypes(true, 10);
-  testBadTypes("0", true);
-  testBadTypes("0", "10");
-
-  testBadArguments(String source, int radix) {
-    // If the types match, it should be an ArgumentError of some sort.
-    Expect.throws(() => int.parse(source, radix: radix, onError: (s) => 0),
-        (e) => e is ArgumentError);
-  }
-
-  testBadArguments("0", -1);
-  testBadArguments("0", 0);
-  testBadArguments("0", 1);
-  testBadArguments("0", 37);
-
-  // See also int_parse_radix_bad_handler_test.dart
-}
-
-bool isFail(e) => e == "FAIL";
diff --git a/tests/corelib/int_round_test.dart b/tests/corelib/int_round_test.dart
deleted file mode 100644
index 0bd7ec6..0000000
--- a/tests/corelib/int_round_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.round());
-  Expect.equals(1, 1.round());
-  Expect.equals(0x1234, 0x1234.round());
-  Expect.equals(0x12345678, 0x12345678.round());
-  Expect.equals(0x123456789AB, 0x123456789AB.round());
-  Expect.equals(0x123456789ABCDEF, 0x123456789ABCDEF.round());
-  Expect.equals(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.round());
-  Expect.equals(-1, -1.round());
-  Expect.equals(-0x1234, -0x1234.round());
-  Expect.equals(-0x12345678, -0x12345678.round());
-  Expect.equals(-0x123456789AB, -0x123456789AB.round());
-  Expect.equals(-0x123456789ABCDEF, -0x123456789ABCDEF.round());
-  Expect.equals(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.round());
-
-  Expect.isTrue(0.round() is int);
-  Expect.isTrue(1.round() is int);
-  Expect.isTrue(0x1234.round() is int);
-  Expect.isTrue(0x12345678.round() is int);
-  Expect.isTrue(0x123456789AB.round() is int);
-  Expect.isTrue(0x123456789ABCDEF.round() is int);
-  Expect
-      .isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.round() is int);
-  Expect.isTrue(-1.round() is int);
-  Expect.isTrue(-0x1234.round() is int);
-  Expect.isTrue(-0x12345678.round() is int);
-  Expect.isTrue(-0x123456789AB.round() is int);
-  Expect.isTrue(-0x123456789ABCDEF.round() is int);
-  Expect.isTrue(
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.round() is int);
-}
diff --git a/tests/corelib/int_round_to_double_test.dart b/tests/corelib/int_round_to_double_test.dart
deleted file mode 100644
index 16cc95d..0000000
--- a/tests/corelib/int_round_to_double_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.roundToDouble());
-  Expect.equals(1.0, 1.roundToDouble());
-  Expect.equals(0x1234, 0x1234.roundToDouble());
-  Expect.equals(0x12345678, 0x12345678.roundToDouble());
-  Expect.equals(0x123456789AB, 0x123456789AB.roundToDouble());
-  Expect.equals(81985529216486900.0, 0x123456789ABCDEF.roundToDouble());
-  Expect.equals(2.7898229935051914e+55,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.roundToDouble());
-  Expect.equals(-1.0, -1.roundToDouble());
-  Expect.equals(-0x1234, -0x1234.roundToDouble());
-  Expect.equals(-0x12345678, -0x12345678.roundToDouble());
-  Expect.equals(-0x123456789AB, -0x123456789AB.roundToDouble());
-  Expect.equals(-81985529216486900.0, -0x123456789ABCDEF.roundToDouble());
-  Expect.equals(-2.7898229935051914e+55,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.roundToDouble());
-
-  Expect.isTrue(0.roundToDouble() is double);
-  Expect.isTrue(1.roundToDouble() is double);
-  Expect.isTrue(0x1234.roundToDouble() is double);
-  Expect.isTrue(0x12345678.roundToDouble() is double);
-  Expect.isTrue(0x123456789AB.roundToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF.roundToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
-      .roundToDouble() is double);
-  Expect.isTrue(-1.roundToDouble() is double);
-  Expect.isTrue(-0x1234.roundToDouble() is double);
-  Expect.isTrue(-0x12345678.roundToDouble() is double);
-  Expect.isTrue(-0x123456789AB.roundToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF.roundToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
-      .roundToDouble() is double);
-}
diff --git a/tests/corelib/int_to_int_test.dart b/tests/corelib/int_to_int_test.dart
deleted file mode 100644
index 51bd26d..0000000
--- a/tests/corelib/int_to_int_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.toInt());
-  Expect.equals(1, 1.toInt());
-  Expect.equals(0x1234, 0x1234.toInt());
-  Expect.equals(0x12345678, 0x12345678.toInt());
-  Expect.equals(0x123456789AB, 0x123456789AB.toInt());
-  Expect.equals(0x123456789ABCDEF, 0x123456789ABCDEF.toInt());
-  Expect.equals(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.toInt());
-  Expect.equals(-1, -1.toInt());
-  Expect.equals(-0x1234, -0x1234.toInt());
-  Expect.equals(-0x12345678, -0x12345678.toInt());
-  Expect.equals(-0x123456789AB, -0x123456789AB.toInt());
-  Expect.equals(-0x123456789ABCDEF, -0x123456789ABCDEF.toInt());
-  Expect.equals(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.toInt());
-
-  Expect.isTrue(0.toInt() is int);
-  Expect.isTrue(1.toInt() is int);
-  Expect.isTrue(0x1234.toInt() is int);
-  Expect.isTrue(0x12345678.toInt() is int);
-  Expect.isTrue(0x123456789AB.toInt() is int);
-  Expect.isTrue(0x123456789ABCDEF.toInt() is int);
-  Expect
-      .isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.toInt() is int);
-  Expect.isTrue(-1.toInt() is int);
-  Expect.isTrue(-0x1234.toInt() is int);
-  Expect.isTrue(-0x12345678.toInt() is int);
-  Expect.isTrue(-0x123456789AB.toInt() is int);
-  Expect.isTrue(-0x123456789ABCDEF.toInt() is int);
-  Expect.isTrue(
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.toInt() is int);
-}
diff --git a/tests/corelib/int_truncate_test.dart b/tests/corelib/int_truncate_test.dart
deleted file mode 100644
index 8dff5ad..0000000
--- a/tests/corelib/int_truncate_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0, 0.truncate());
-  Expect.equals(1, 1.truncate());
-  Expect.equals(0x1234, 0x1234.truncate());
-  Expect.equals(0x12345678, 0x12345678.truncate());
-  Expect.equals(0x123456789AB, 0x123456789AB.truncate());
-  Expect.equals(0x123456789ABCDEF, 0x123456789ABCDEF.truncate());
-  Expect.equals(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.truncate());
-  Expect.equals(-1, -1.truncate());
-  Expect.equals(-0x1234, -0x1234.truncate());
-  Expect.equals(-0x12345678, -0x12345678.truncate());
-  Expect.equals(-0x123456789AB, -0x123456789AB.truncate());
-  Expect.equals(-0x123456789ABCDEF, -0x123456789ABCDEF.truncate());
-  Expect.equals(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.truncate());
-
-  Expect.isTrue(0.truncate() is int);
-  Expect.isTrue(1.truncate() is int);
-  Expect.isTrue(0x1234.truncate() is int);
-  Expect.isTrue(0x12345678.truncate() is int);
-  Expect.isTrue(0x123456789AB.truncate() is int);
-  Expect.isTrue(0x123456789ABCDEF.truncate() is int);
-  Expect.isTrue(
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.truncate() is int);
-  Expect.isTrue(-1.truncate() is int);
-  Expect.isTrue(-0x1234.truncate() is int);
-  Expect.isTrue(-0x12345678.truncate() is int);
-  Expect.isTrue(-0x123456789AB.truncate() is int);
-  Expect.isTrue(-0x123456789ABCDEF.truncate() is int);
-  Expect.isTrue(
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.truncate() is int);
-}
diff --git a/tests/corelib/int_truncate_to_double_test.dart b/tests/corelib/int_truncate_to_double_test.dart
deleted file mode 100644
index 197e145..0000000
--- a/tests/corelib/int_truncate_to_double_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-
-main() {
-  Expect.equals(0.0, 0.truncateToDouble());
-  Expect.equals(1.0, 1.truncateToDouble());
-  Expect.equals(0x1234, 0x1234.truncateToDouble());
-  Expect.equals(0x12345678, 0x12345678.truncateToDouble());
-  Expect.equals(0x123456789AB, 0x123456789AB.truncateToDouble());
-  Expect.equals(81985529216486900.0, 0x123456789ABCDEF.truncateToDouble());
-  Expect.equals(2.7898229935051914e+55,
-      0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.truncateToDouble());
-  Expect.equals(-1.0, -1.truncateToDouble());
-  Expect.equals(-0x1234, -0x1234.truncateToDouble());
-  Expect.equals(-0x12345678, -0x12345678.truncateToDouble());
-  Expect.equals(-0x123456789AB, -0x123456789AB.truncateToDouble());
-  Expect.equals(-81985529216486900.0, -0x123456789ABCDEF.truncateToDouble());
-  Expect.equals(-2.7898229935051914e+55,
-      -0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF.truncateToDouble());
-
-  Expect.isTrue(0.truncateToDouble() is double);
-  Expect.isTrue(1.truncateToDouble() is double);
-  Expect.isTrue(0x1234.truncateToDouble() is double);
-  Expect.isTrue(0x12345678.truncateToDouble() is double);
-  Expect.isTrue(0x123456789AB.truncateToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF.truncateToDouble() is double);
-  Expect.isTrue(0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
-      .truncateToDouble() is double);
-  Expect.isTrue(-1.truncateToDouble() is double);
-  Expect.isTrue(-0x1234.truncateToDouble() is double);
-  Expect.isTrue(-0x12345678.truncateToDouble() is double);
-  Expect.isTrue(-0x123456789AB.truncateToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF.truncateToDouble() is double);
-  Expect.isTrue(-0x123456789ABCDEF0123456789ABCDEF0123456789ABCDEF
-      .truncateToDouble() is double);
-}
diff --git a/tests/corelib/integer_to_radix_string_test.dart b/tests/corelib/integer_to_radix_string_test.dart
deleted file mode 100644
index 3b2fac8..0000000
--- a/tests/corelib/integer_to_radix_string_test.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// 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";
-
-main() {
-  // Test that we accept radix 2 to 36 and that we use lower-case
-  // letters.
-  var expected = [
-    '0',
-    '1',
-    '2',
-    '3',
-    '4',
-    '5',
-    '6',
-    '7',
-    '8',
-    '9',
-    'a',
-    'b',
-    'c',
-    'd',
-    'e',
-    'f',
-    'g',
-    'h',
-    'i',
-    'j',
-    'k',
-    'l',
-    'm',
-    'n',
-    'o',
-    'p',
-    'q',
-    'r',
-    's',
-    't',
-    'u',
-    'v',
-    'w',
-    'x',
-    'y',
-    'z'
-  ];
-  for (var radix = 2; radix <= 36; radix++) {
-    for (var i = 0; i < radix; i++) {
-      Expect.equals(expected[i], i.toRadixString(radix));
-    }
-  }
-
-  var illegalRadices = [-1, 0, 1, 37];
-  for (var radix in illegalRadices) {
-    try {
-      42.toRadixString(radix);
-      Expect.fail("Exception expected");
-    } on ArgumentError catch (e) {
-      // Nothing to do.
-    }
-  }
-
-  // Try large numbers (regression test for issue 15316).
-  var bignums = [
-    0x80000000,
-    0x100000000,
-    0x10000000000000,
-    0x10000000000001, // 53 significant bits.
-    0x20000000000000,
-    0x20000000000002,
-    0x1000000000000000,
-    0x1000000000000100,
-    0x2000000000000000,
-    0x2000000000000200,
-    0x8000000000000000,
-    0x8000000000000800,
-    0x10000000000000000,
-    0x10000000000001000,
-    0x100000000000010000,
-    0x1000000000000100000,
-    0x10000000000001000000,
-    0x100000000000010000000,
-    0x1000000000000100000000,
-    0x10000000000001000000000,
-  ];
-  for (var bignum in bignums) {
-    for (int radix = 2; radix <= 36; radix++) {
-      String digits = bignum.toRadixString(radix);
-      int result = int.parse(digits, radix: radix);
-      Expect.equals(
-          bignum, result, "${bignum.toRadixString(16)} -> $digits/$radix");
-    }
-  }
-}
diff --git a/tests/corelib/integer_to_string_test.dart b/tests/corelib/integer_to_string_test.dart
deleted file mode 100644
index 64a64b0..0000000
--- a/tests/corelib/integer_to_string_test.dart
+++ /dev/null
@@ -1,89 +0,0 @@
-// 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";
-
-main() {
-  /// Test that converting [value] to a string gives [expect].
-  /// Also test that `-value` gives `"-"+expect`.
-  test(int value, String expect) {
-    Expect.equals(expect, value.toString());
-    Expect.equals(expect, "$value");
-    Expect.equals(expect, (new StringBuffer()..write(value)).toString());
-    if (value == 0) return;
-    expect = "-$expect";
-    value = -value;
-    Expect.equals(expect, value.toString());
-    Expect.equals(expect, "$value");
-    Expect.equals(expect, (new StringBuffer()..write(value)).toString());
-  }
-
-  // Very simple tests.
-  test(0, "0");
-  test(1, "1");
-  test(2, "2");
-  test(5, "5");
-
-  // Binary special cases.
-
-  // ~2^30.
-  test(0x3fffffff, "1073741823");
-  test(0x40000000, "1073741824");
-  test(0x40000001, "1073741825");
-  // ~2^31.
-  test(0x7fffffff, "2147483647");
-  test(0x80000000, "2147483648");
-  test(0x80000001, "2147483649");
-  // ~2^32.
-  test(0xffffffff, "4294967295");
-  test(0x100000000, "4294967296");
-  test(0x100000001, "4294967297");
-
-  // ~2^51.
-  test(0x7ffffffffffff, "2251799813685247");
-  test(0x8000000000000, "2251799813685248");
-  test(0x8000000000001, "2251799813685249");
-  // ~2^52.
-  test(0xfffffffffffff, "4503599627370495");
-  test(0x10000000000000, "4503599627370496");
-  test(0x10000000000001, "4503599627370497");
-  // ~2^53.
-  test(0x1fffffffffffff, "9007199254740991");
-  test(0x20000000000000, "9007199254740992");
-  test(0x20000000000001, "9007199254740993"); //        //# 01: ok
-  // ~2^62.
-  test(0x3fffffffffffffff, "4611686018427387903"); //   //# 01: continued
-  test(0x4000000000000000, "4611686018427387904"); //   //# 01: continued
-  test(0x4000000000000001, "4611686018427387905"); //   //# 01: continued
-  // ~2^63.
-  test(0x7fffffffffffffff, "9223372036854775807"); //   //# 01: continued
-  test(0x8000000000000000, "9223372036854775808"); //   //# 01: continued
-  test(0x8000000000000001, "9223372036854775809"); //   //# 01: continued
-  // ~2^64.
-  test(0xffffffffffffffff, "18446744073709551615"); //  //# 01: continued
-  test(0x10000000000000000, "18446744073709551616"); // //# 01: continued
-  test(0x10000000000000001, "18446744073709551617"); // //# 01: continued
-  // Big bignum.
-  test(123456789012345678901234567890, //               //# 01: continued
-       "123456789012345678901234567890"); //            //# 01: continued
-
-  // Decimal special cases.
-
-  int number = 10;
-  // Numbers 99..99, 100...00, and 100..01 up to 23 digits.
-  for (int i = 1; i < 15; i++) {
-    // Works in dart2js up to 10^15.
-    test(number - 1, "9" * i);
-    test(number, "1" + "0" * i);
-    test(number + 1, "1" + "0" * (i - 1) + "1");
-    number *= 10;
-  }
-  // Fails to represent exactly in dart2js.
-  for (int i = 15; i < 22; i++) { //                    //# 01: continued
-    test(number - 1, "9" * i); //                       //# 01: continued
-    test(number, "1" + "0" * i); //                     //# 01: continued
-    test(number + 1, "1" + "0" * (i - 1) + "1"); //     //# 01: continued
-    number *= 10; //                                    //# 01: continued
-  } //                                                  //# 01: continued
-}
diff --git a/tests/corelib/is_operator_basic_types_test.dart b/tests/corelib/is_operator_basic_types_test.dart
deleted file mode 100644
index 772afb2..0000000
--- a/tests/corelib/is_operator_basic_types_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// 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.
-// Dart test program for the "is" type test operator.
-
-import "package:expect/expect.dart";
-
-check(args) {
-  var list = args[0];
-  var string = args[1];
-  var nullObject = args[2];
-
-  Expect.isTrue(list is Object);
-  Expect.isTrue(list is List);
-  Expect.isTrue(list is Iterable);
-  Expect.isFalse(list is Comparable);
-  Expect.isFalse(list is Pattern);
-  Expect.isFalse(list is String);
-
-  Expect.isFalse(list is! List);
-  Expect.isFalse(list is! Iterable);
-  Expect.isTrue(list is! Comparable);
-  Expect.isTrue(list is! Pattern);
-  Expect.isTrue(list is! String);
-
-  Expect.isTrue(string is Object);
-  Expect.isFalse(string is List);
-  Expect.isFalse(string is Iterable);
-  Expect.isTrue(string is Comparable);
-  Expect.isTrue(string is Pattern);
-  Expect.isTrue(string is String);
-
-  Expect.isTrue(string is! List);
-  Expect.isTrue(string is! Iterable);
-  Expect.isFalse(string is! Comparable);
-  Expect.isFalse(string is! Pattern);
-  Expect.isFalse(string is! String);
-
-  Expect.isTrue(nullObject is Object);
-  Expect.isFalse(nullObject is List);
-  Expect.isFalse(nullObject is Iterable);
-  Expect.isFalse(nullObject is Comparable);
-  Expect.isFalse(nullObject is Pattern);
-  Expect.isFalse(nullObject is String);
-
-  Expect.isTrue(nullObject is! List);
-  Expect.isTrue(nullObject is! Iterable);
-  Expect.isTrue(nullObject is! Comparable);
-  Expect.isTrue(nullObject is! Pattern);
-  Expect.isTrue(nullObject is! String);
-}
-
-main() {
-  // Try to make it hard for an optimizing compiler to inline the
-  // tests.
-  check([[], 'string', null]);
-
-  // Try to make it even harder.
-  var string = new String.fromCharCodes([new DateTime.now().year % 100 + 1]);
-  check([string.codeUnits, string, null]);
-}
diff --git a/tests/corelib/iterable_contains2_test.dart b/tests/corelib/iterable_contains2_test.dart
deleted file mode 100644
index d4714c7..0000000
--- a/tests/corelib/iterable_contains2_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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";
-
-// Tests for the contains methods on lists.
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var list = <B>[new B()];
-  var set = new Set<B>();
-  set.add(new B());
-  var iterable1 = list.map((x) => x);
-  var iterable2 = list.take(1);
-  var list2 = const <B>[const B()];
-  var iterable3 = list2.map((x) => x);
-  var iterable4 = list2.take(1);
-  var iterables = [
-    list,
-    set,
-    iterable1,
-    iterable2,
-    list2,
-    iterable3,
-    iterable4
-  ];
-  for (var iterable in iterables) {
-    Expect.isFalse(iterable.contains(new A()));
-  }
-}
diff --git a/tests/corelib/iterable_contains_test.dart b/tests/corelib/iterable_contains_test.dart
deleted file mode 100644
index 052298e..0000000
--- a/tests/corelib/iterable_contains_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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";
-
-// Tests for the contains methods on lists.
-
-test(list, notInList) {
-  testList(list) {
-    for (int i = 0; i < list.length; i++) {
-      var elem = list[i];
-      Expect.isTrue(list.contains(list[i]), "$list.contains($elem)");
-    }
-    Expect.isFalse(list.contains(notInList), "!$list.contains($notInList)");
-  }
-
-  List fixedList = new List(list.length);
-  List growList = new List();
-  for (int i = 0; i < list.length; i++) {
-    fixedList[i] = list[i];
-    growList.add(list[i]);
-  }
-  testList(list);
-  testList(fixedList);
-  testList(growList);
-}
-
-class C {
-  const C();
-}
-
-class Niet {
-  bool operator ==(other) => false;
-}
-
-main() {
-  test(const <String>["a", "b", "c", null], "d");
-  test(const <int>[1, 2, 3, null], 0);
-  test(const <bool>[true, false], null);
-  test(const <C>[const C(), const C(), null], new C());
-  test(<C>[new C(), new C(), new C(), null], new C());
-  test(const <double>[0.0, 1.0, 5e-324, 1e+308, double.INFINITY], 2.0);
-  Expect.isTrue(const <double>[-0.0].contains(0.0));
-  Expect.isFalse(const <double>[double.NAN].contains(double.NAN));
-  var niet = new Niet();
-  Expect.isFalse([niet].contains(niet));
-}
diff --git a/tests/corelib/iterable_element_at_test.dart b/tests/corelib/iterable_element_at_test.dart
deleted file mode 100644
index 364e94a..0000000
--- a/tests/corelib/iterable_element_at_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5, 6];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Expect.equals(1, list1.elementAt(0));
-  Expect.equals(2, list1.elementAt(1));
-  Expect.equals(3, list1.elementAt(2));
-  Expect.throws(
-      () => list1.elementAt("2"), (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => list1.elementAt(-1), (e) => e is ArgumentError);
-  Expect.throws(() => list1.elementAt(3), (e) => e is RangeError);
-
-  Expect.equals(4, list2.elementAt(0));
-  Expect.equals(5, list2.elementAt(1));
-  Expect.equals(6, list2.elementAt(2));
-  Expect.throws(
-      () => list2.elementAt("2"), (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => list2.elementAt(-1), (e) => e is ArgumentError);
-  Expect.throws(() => list2.elementAt(3), (e) => e is RangeError);
-
-  Expect.isTrue(set1.contains(set1.elementAt(0)));
-  Expect.isTrue(set1.contains(set1.elementAt(1)));
-  Expect.isTrue(set1.contains(set1.elementAt(2)));
-  Expect.throws(() => set1.elementAt(-1), (e) => e is ArgumentError);
-  Expect.throws(() => set1.elementAt(3), (e) => e is RangeError);
-
-  Expect.throws(
-      () => set2.elementAt("2"), (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => set2.elementAt(-1), (e) => e is ArgumentError);
-  Expect.throws(() => set2.elementAt(0), (e) => e is RangeError);
-  Expect.throws(() => set2.elementAt(1), (e) => e is RangeError);
-}
diff --git a/tests/corelib/iterable_empty_test.dart b/tests/corelib/iterable_empty_test.dart
deleted file mode 100644
index 7922198..0000000
--- a/tests/corelib/iterable_empty_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  testEmpty(name, it, [depth = 2]) {
-    Expect.isTrue(it.isEmpty, name);
-    Expect.isFalse(it.isNotEmpty, name);
-    Expect.equals(0, it.length, name);
-    Expect.isFalse(it.contains(null), name);
-    Expect.isFalse(it.any((x) => true), name);
-    Expect.isTrue(it.every((x) => false), name);
-    Expect.throws(() => it.first, (e) => e is StateError, name);
-    Expect.throws(() => it.last, (e) => e is StateError, name);
-    Expect.throws(() => it.single, (e) => e is StateError, name);
-    Expect.throws(() => it.elementAt(0), (e) => e is RangeError, name);
-    Expect.throws(() => it.reduce((a, b) => a), (e) => e is StateError, name);
-    Expect.throws(
-        () => it.singleWhere((_) => true), (e) => e is StateError, name);
-    Expect.equals(42, it.fold(42, (a, b) => "not 42"), name);
-    Expect.equals(42, it.firstWhere((v) => true, orElse: () => 42), name);
-    Expect.equals(42, it.lastWhere((v) => true, orElse: () => 42), name);
-    Expect.equals("", it.join("separator"), name);
-    Expect.equals("()", it.toString(), name);
-    Expect.listEquals([], it.toList(), name);
-    Expect.listEquals([], it.toList(growable: false), name);
-    Expect.listEquals([], it.toList(growable: true), name);
-    Expect.equals(0, it.toSet().length, name);
-    // Doesn't throw:
-    it.forEach((v) => throw v);
-    for (var v in it) {
-      throw v;
-    }
-    // Check that returned iterables are also empty.
-    if (depth > 0) {
-      testEmpty("$name-map", it.map((x) => x), depth - 1);
-      testEmpty("$name-where", it.where((x) => true), depth - 1);
-      testEmpty("$name-expand", it.expand((x) => [x]), depth - 1);
-      testEmpty("$name-skip", it.skip(1), depth - 1);
-      testEmpty("$name-take", it.take(2), depth - 1);
-      testEmpty("$name-skipWhile", it.skipWhile((v) => false), depth - 1);
-      testEmpty("$name-takeWhile", it.takeWhile((v) => true), depth - 1);
-    }
-  }
-
-  testType(name, it, [depth = 2]) {
-    Expect.isTrue(it is Iterable<int>, name);
-    Expect.isFalse(it is Iterable<String>, name);
-    if (depth > 0) {
-      testType("$name-where", it.where((_) => true), depth - 1);
-      testType("$name-skip", it.skip(1), depth - 1);
-      testType("$name-take", it.take(1), depth - 1);
-      testType("$name-skipWhile", it.skipWhile((_) => false), depth - 1);
-      testType("$name-takeWhile", it.takeWhile((_) => true), depth - 1);
-      testType("$name-toList", it.toList(), depth - 1);
-      testType("$name-toList", it.toList(growable: false), depth - 1);
-      testType("$name-toList", it.toList(growable: true), depth - 1);
-      testType("$name-toSet", it.toSet(), depth - 1);
-    }
-  }
-
-  test(name, it) {
-    testEmpty(name, it);
-    testType(name, it);
-  }
-
-  test("const", const Iterable<int>.empty());
-  test("new", new Iterable<int>.empty());
-}
diff --git a/tests/corelib/iterable_expand_test.dart b/tests/corelib/iterable_expand_test.dart
deleted file mode 100644
index a02787a..0000000
--- a/tests/corelib/iterable_expand_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:collection';
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-
-  get length => list.length;
-  set length(val) {
-    list.length = val;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) => list[index] = val;
-
-  String toString() => "[" + join(", ") + "]";
-}
-
-main() {
-  test(expectation, iterable) {
-    Expect.listEquals(expectation, iterable.toList());
-  }
-
-  // Function not called on empty iterable.
-  test(
-      [],
-      [].expand((x) {
-        throw "not called";
-      }));
-
-  // Creating the iterable doesn't call the function.
-  [1].expand((x) {
-    throw "not called";
-  });
-
-  test([1], [1].expand((x) => [x]));
-  test([1, 2, 3], [1, 2, 3].expand((x) => [x]));
-
-  test([], [1].expand((x) => []));
-  test([], [1, 2, 3].expand((x) => []));
-  test([2], [1, 2, 3].expand((x) => x == 2 ? [2] : []));
-
-  test([1, 1, 2, 2, 3, 3], [1, 2, 3].expand((x) => [x, x]));
-  test([1, 1, 2], [1, 2, 3].expand((x) => [x, x, x].skip(x)));
-
-  test([1], new MyList([1]).expand((x) => [x]));
-  test([1, 2, 3], new MyList([1, 2, 3]).expand((x) => [x]));
-
-  test([], new MyList([1]).expand((x) => []));
-  test([], new MyList([1, 2, 3]).expand((x) => []));
-  test([2], new MyList([1, 2, 3]).expand((x) => x == 2 ? [2] : []));
-
-  test([1, 1, 2, 2, 3, 3], new MyList([1, 2, 3]).expand((x) => [x, x]));
-  test([1, 1, 2], new MyList([1, 2, 3]).expand((x) => [x, x, x].skip(x)));
-
-  // if function throws, iteration is stopped.
-  Iterable iterable = [1, 2, 3].expand((x) {
-    if (x == 2) throw "FAIL";
-    return [x, x];
-  });
-  Iterator it = iterable.iterator;
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.throws(it.moveNext, (e) => e == "FAIL");
-  // After throwing, iteration is ended.
-  Expect.equals(null, it.current);
-  Expect.isFalse(it.moveNext());
-}
diff --git a/tests/corelib/iterable_first_test.dart b/tests/corelib/iterable_first_test.dart
deleted file mode 100644
index 8e3e7c8..0000000
--- a/tests/corelib/iterable_first_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Expect.equals(1, list1.first);
-  Expect.equals(4, list2.first);
-  Expect.throws(() => list3.first, (e) => e is StateError);
-
-  Expect.isTrue(set1.contains(set1.first));
-
-  Expect.throws(() => set2.first, (e) => e is StateError);
-}
diff --git a/tests/corelib/iterable_first_where_test.dart b/tests/corelib/iterable_first_where_test.dart
deleted file mode 100644
index 526b685..0000000
--- a/tests/corelib/iterable_first_where_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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';
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Expect.equals(2, list1.firstWhere((x) => x.isEven));
-  Expect.equals(1, list1.firstWhere((x) => x.isOdd));
-  Expect.throws(() => list1.firstWhere((x) => x > 3), (e) => e is StateError);
-  Expect.equals(null, list1.firstWhere((x) => x > 3, orElse: () => null));
-  Expect.equals(499, list1.firstWhere((x) => x > 3, orElse: () => 499));
-
-  Expect.equals(4, list2.firstWhere((x) => x.isEven));
-  Expect.equals(5, list2.firstWhere((x) => x.isOdd));
-  Expect.throws(() => list2.firstWhere((x) => x == 0), (e) => e is StateError);
-  Expect.equals(null, list2.firstWhere((x) => false, orElse: () => null));
-  Expect.equals(499, list2.firstWhere((x) => false, orElse: () => 499));
-
-  Expect.throws(() => list3.firstWhere((x) => x == 0), (e) => e is StateError);
-  Expect.throws(() => list3.firstWhere((x) => true), (e) => e is StateError);
-  Expect.equals(null, list3.firstWhere((x) => true, orElse: () => null));
-  Expect.equals("str", list3.firstWhere((x) => false, orElse: () => "str"));
-
-  Expect.equals(12, set1.firstWhere((x) => x.isEven));
-  var odd = set1.firstWhere((x) => x.isOdd);
-  Expect.isTrue(odd == 11 || odd == 13);
-  Expect.throws(() => set1.firstWhere((x) => false), (e) => e is StateError);
-  Expect.equals(null, set1.firstWhere((x) => false, orElse: () => null));
-  Expect.equals(499, set1.firstWhere((x) => false, orElse: () => 499));
-
-  Expect.throws(() => set2.firstWhere((x) => false), (e) => e is StateError);
-  Expect.throws(() => set2.firstWhere((x) => true), (e) => e is StateError);
-  Expect.equals(null, set2.firstWhere((x) => true, orElse: () => null));
-  Expect.equals(499, set2.firstWhere((x) => false, orElse: () => 499));
-}
diff --git a/tests/corelib/iterable_fold_test.dart b/tests/corelib/iterable_fold_test.dart
deleted file mode 100644
index 49c1bd3..0000000
--- a/tests/corelib/iterable_fold_test.dart
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright (c) 2014, 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";
-import 'dart:collection';
-import 'dart:typed_data';
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-
-  get length => list.length;
-  set length(val) {
-    list.length = val;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) => list[index] = val;
-}
-
-id(x) => x;
-
-main() {
-  for (var iterable in [
-    const [1, 2, 3],
-    [1, 2, 3],
-    new List(3)
-      ..[0] = 1
-      ..[1] = 2
-      ..[2] = 3,
-    {1: 1, 2: 2, 3: 3}.keys,
-    {1: 1, 2: 2, 3: 3}.values,
-    new Iterable.generate(3, (x) => x + 1),
-    new List.generate(3, (x) => x + 1),
-    [0, 1, 2, 3].where((x) => x > 0),
-    [0, 1, 2].map((x) => x + 1),
-    [
-      [1, 2],
-      [3]
-    ].expand(id),
-    [3, 2, 1].reversed,
-    [0, 1, 2, 3].skip(1),
-    [1, 2, 3, 4].take(3),
-    new Uint8List(3)
-      ..[0] = 1
-      ..[1] = 2
-      ..[2] = 3,
-    (new HashMap()
-          ..[1] = 1
-          ..[2] = 2
-          ..[3] = 3)
-        .keys,
-    (new HashMap()
-          ..[1] = 1
-          ..[2] = 2
-          ..[3] = 3)
-        .values,
-    (new SplayTreeMap()
-          ..[1] = 0
-          ..[2] = 0
-          ..[3] = 0)
-        .keys,
-    (new SplayTreeMap()
-          ..[0] = 1
-          ..[1] = 2
-          ..[2] = 3)
-        .values,
-    new HashSet()..add(1)..add(2)..add(3),
-    new LinkedHashSet()..add(1)..add(2)..add(3),
-    new SplayTreeSet()..add(1)..add(2)..add(3),
-    "\x01\x02\x03".codeUnits,
-    "\x01\x02\x03".runes,
-    new MyList([1, 2, 3]),
-  ]) {
-    int callCount = 0;
-    var result = iterable.fold(0, (x, y) {
-      callCount++;
-      return x + y;
-    });
-    Expect.equals(6, result, "${iterable.runtimeType}");
-    Expect.equals(3, callCount);
-  }
-
-  // Empty iterables are allowed.
-  for (var iterable in [
-    const [],
-    [],
-    new List(0),
-    {}.keys,
-    {}.values,
-    new Iterable.generate(0, (x) => x + 1),
-    new List.generate(0, (x) => x + 1),
-    [0, 1, 2, 3].where((x) => false),
-    [].map((x) => x + 1),
-    [[], []].expand(id),
-    [].reversed,
-    [0, 1, 2, 3].skip(4),
-    [1, 2, 3, 4].take(0),
-    new Uint8List(0),
-    (new HashMap()).keys,
-    (new HashMap()).values,
-    (new SplayTreeMap()).keys,
-    (new SplayTreeMap()).values,
-    new HashSet(),
-    new LinkedHashSet(),
-    new SplayTreeSet(),
-    "".codeUnits,
-    "".runes,
-    new MyList([]),
-  ]) {
-    Expect.equals(42, iterable.fold(42, (x, y) => throw "Unreachable"));
-  }
-
-  // Singleton iterables are calling reduce function.
-  for (var iterable in [
-    const [1],
-    [1],
-    new List(1)..[0] = 1,
-    {1: 1}.keys,
-    {1: 1}.values,
-    new Iterable.generate(1, (x) => x + 1),
-    new List.generate(1, (x) => x + 1),
-    [0, 1, 2, 3].where((x) => x == 1),
-    [0].map((x) => x + 1),
-    [
-      [],
-      [1]
-    ].expand(id),
-    [1].reversed,
-    [0, 1].skip(1),
-    [1, 2, 3, 4].take(1),
-    new Uint8List(1)..[0] = 1,
-    (new HashMap()..[1] = 0).keys,
-    (new HashMap()..[0] = 1).values,
-    (new SplayTreeMap()..[1] = 0).keys,
-    (new SplayTreeMap()..[0] = 1).values,
-    new HashSet()..add(1),
-    new LinkedHashSet()..add(1),
-    new SplayTreeSet()..add(1),
-    "\x01".codeUnits,
-    "\x01".runes,
-    new MyList([1]),
-  ]) {
-    Expect.equals(43, iterable.fold(42, (x, y) => x + y));
-  }
-
-  // Concurrent modifications not allowed.
-  testModification(base, modify, transform) {
-    var iterable = transform(base);
-    Expect.throws(() {
-      iterable.fold(0, (x, y) {
-        modify(base);
-        return x + y;
-      });
-    }, (e) => e is ConcurrentModificationError);
-  }
-
-  void add4(collection) {
-    collection.add(4);
-  }
-
-  void put4(map) {
-    map[4] = 4;
-  }
-
-  testModification([1, 2, 3], add4, id);
-  testModification(new HashSet()..add(1)..add(2)..add(3), add4, id);
-  testModification(new LinkedHashSet()..add(1)..add(2)..add(3), add4, id);
-  testModification(new SplayTreeSet()..add(1)..add(2)..add(3), add4, id);
-  testModification(new MyList([1, 2, 3]), add4, id);
-
-  testModification([0, 1, 2, 3], add4, (x) => x.where((x) => x > 0));
-  testModification([0, 1, 2], add4, (x) => x.map((x) => x + 1));
-  testModification([
-    [1, 2],
-    [3]
-  ], add4, (x) => x.expand((x) => x));
-  testModification([3, 2, 1], add4, (x) => x.reversed);
-  testModification({1: 1, 2: 2, 3: 3}, put4, (x) => x.keys);
-  testModification({1: 1, 2: 2, 3: 3}, put4, (x) => x.values);
-  var hashMap = new HashMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(hashMap, put4, (x) => x.keys);
-  hashMap = new HashMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(hashMap, put4, (x) => x.values);
-  var splayMap = new SplayTreeMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(splayMap, put4, (x) => x.keys);
-  splayMap = new SplayTreeMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(splayMap, put4, (x) => x.values);
-}
diff --git a/tests/corelib/iterable_generate_test.dart b/tests/corelib/iterable_generate_test.dart
deleted file mode 100644
index 4c2a9d5..0000000
--- a/tests/corelib/iterable_generate_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  void test(expectedList, generatedIterable) {
-    Expect.equals(expectedList.length, generatedIterable.length);
-    Expect.listEquals(expectedList, generatedIterable.toList());
-  }
-
-  test([], new Iterable.generate(0));
-  test([0], new Iterable.generate(1));
-  test([0, 1, 2, 3, 4], new Iterable.generate(5));
-  test(["0", "1", "2", "3", "4"], new Iterable.generate(5, (x) => "$x"));
-  test([2, 3, 4, 5, 6], new Iterable.generate(7).skip(2));
-  test([0, 1, 2, 3, 4], new Iterable.generate(7).take(5));
-  test([], new Iterable.generate(5).skip(6));
-  test([], new Iterable.generate(5).take(0));
-  test([], new Iterable.generate(5).take(3).skip(3));
-  test([], new Iterable.generate(5).skip(6).take(0));
-
-  // Test types.
-
-  Iterable<int> it = new Iterable<int>.generate(5);
-  Expect.isTrue(it is Iterable<int>);
-  Expect.isTrue(it.iterator is Iterator<int>);
-  Expect.isTrue(it is! Iterable<String>);
-  Expect.isTrue(it.iterator is! Iterator<String>);
-  test([0, 1, 2, 3, 4], it);
-
-  Iterable<String> st = new Iterable<String>.generate(5, (x) => "$x");
-  Expect.isTrue(st is Iterable<String>);
-  Expect.isTrue(st.iterator is Iterator<String>);
-  Expect.isFalse(st is Iterable<int>);
-  Expect.isFalse(st.iterator is Iterator<int>);
-  test(["0", "1", "2", "3", "4"], st);
-
-  if (typeAssertionsEnabled) {
-    Expect.throws(() => new Iterable<String>.generate(5));
-  }
-
-  // Omitted generator function means `(int x) => x`, and the type parameters
-  // must then be compatible with `int`.
-  // Check that we catch invalid type parameters.
-
-  // Valid types:
-  Iterable<int> iter1 = new Iterable<int>.generate(5);
-  Expect.equals(2, iter1.elementAt(2));
-  Iterable<num> iter2 = new Iterable<num>.generate(5);
-  Expect.equals(2, iter2.elementAt(2));
-  Iterable<Object> iter3 = new Iterable<Object>.generate(5);
-  Expect.equals(2, iter3.elementAt(2));
-  Iterable<dynamic> iter4 = new Iterable<dynamic>.generate(5);
-  Expect.equals(2, iter4.elementAt(2));
-
-  // Invalid types:
-  Expect.throws(() => new Iterable<String>.generate(5));
-  if (typeAssertionsEnabled) { //                                       //# 01: ok
-    Expect.throws(() => new Iterable<Null>.generate(5).elementAt(2));   //# 01: continued
-  } else { //                                                           //# 01: continued
-    Iterable<dynamic> iter5 = new Iterable<Null>.generate(5); //        //# 01: continued
-    Expect.equals(2, iter5.elementAt(2)); //                            //# 01: continued
-  } //                                                                  //# 01: continued
-  Expect.throws(() => new Iterable<bool>.generate(5));
-
-  // Regression: https://github.com/dart-lang/sdk/issues/26358
-  var count = 0;
-  var iter = new Iterable.generate(5, (v) {
-    count++;
-    return v;
-  });
-  Expect.equals(0, count);
-  Expect.equals(2, iter.elementAt(2)); // Doesn't compute the earlier values.
-  Expect.equals(1, count);
-  Expect.equals(2, iter.skip(2).first); // Doesn't compute the skipped values.
-  Expect.equals(2, count);
-}
diff --git a/tests/corelib/iterable_join_test.dart b/tests/corelib/iterable_join_test.dart
deleted file mode 100644
index e4f2f44..0000000
--- a/tests/corelib/iterable_join_test.dart
+++ /dev/null
@@ -1,148 +0,0 @@
-// 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";
-
-class IC {
-  int count = 0;
-  String toString() => "${count++}";
-}
-
-testJoin(String expect, Iterable iterable, [String separator]) {
-  if (separator != null) {
-    Expect.equals(expect, iterable.join(separator));
-  } else {
-    Expect.equals(expect, iterable.join());
-  }
-}
-
-testCollections() {
-  testJoin("", [], ",");
-  testJoin("", [], "");
-  testJoin("", []);
-  testJoin("", new Set(), ",");
-  testJoin("", new Set(), "");
-  testJoin("", new Set());
-
-  testJoin("42", [42], ",");
-  testJoin("42", [42], "");
-  testJoin("42", [42]);
-  testJoin("42", new Set()..add(42), ",");
-  testJoin("42", new Set()..add(42), "");
-  testJoin("42", new Set()..add(42));
-
-  testJoin("a,b,c,d", ["a", "b", "c", "d"], ",");
-  testJoin("abcd", ["a", "b", "c", "d"], "");
-  testJoin("abcd", ["a", "b", "c", "d"]);
-  testJoin("null,b,c,d", [null, "b", "c", "d"], ",");
-  testJoin("1,2,3,4", [1, 2, 3, 4], ",");
-  var ic = new IC();
-  testJoin("0,1,2,3", [ic, ic, ic, ic], ",");
-
-  var set = new Set()..add(1)..add(2)..add(3);
-  var perm = new Set()
-    ..add("123")
-    ..add("132")
-    ..add("213")
-    ..add("231")
-    ..add("312")
-    ..add("321");
-  var setString = set.join();
-  Expect.isTrue(perm.contains(setString), "set: $setString");
-
-  void testArray(array) {
-    testJoin("1,3,5,7,9", array.where((i) => i.isOdd), ",");
-    testJoin("0,2,4,6,8,10,12,14,16,18", array.map((i) => i * 2), ",");
-    testJoin("5,6,7,8,9", array.skip(5), ",");
-    testJoin("5,6,7,8,9", array.skipWhile((i) => i < 5), ",");
-    testJoin("0,1,2,3,4", array.take(5), ",");
-    testJoin("0,1,2,3,4", array.takeWhile((i) => i < 5), ",");
-  }
-
-  testArray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
-  var fixedArray = new List(10);
-  for (int i = 0; i < 10; i++) {
-    fixedArray[i] = i;
-  }
-  testArray(fixedArray);
-  testArray(const [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
-
-  testJoin("a,b,c,d", ["a", "b", "c", "d"].map((x) => x), ",");
-  testJoin("abcd", ["a", "b", "c", "d"].map((x) => x), "");
-  testJoin("abcd", ["a", "b", "c", "d"].map((x) => x));
-  testJoin("null,b,c,d", [null, "b", "c", "d"].map((x) => x), ",");
-  testJoin("1,2,3,4", [1, 2, 3, 4].map((x) => x), ",");
-  testJoin("4,5,6,7", [ic, ic, ic, ic].map((x) => x), ",");
-}
-
-void testStringVariants() {
-  // ASCII
-  testJoin("axbxcxd", ["a", "b", "c", "d"], "x");
-  testJoin("a\u2000b\u2000c\u2000d", ["a", "b", "c", "d"], "\u2000");
-  testJoin("abcd", ["a", "b", "c", "d"], "");
-  testJoin("abcd", ["a", "b", "c", "d"]);
-  // Non-ASCII
-  testJoin("axbxcx\u2000", ["a", "b", "c", "\u2000"], "x");
-  testJoin("a\u2000b\u2000c\u2000\u2000", ["a", "b", "c", "\u2000"], "\u2000");
-  testJoin("abc\u2000", ["a", "b", "c", "\u2000"], "");
-  testJoin("abc\u2000", ["a", "b", "c", "\u2000"]);
-  // Long-ASCII
-  testJoin("ax" * 255 + "a", new List.generate(256, (_) => "a"), "x");
-  testJoin("a" * 256, new List.generate(256, (_) => "a"));
-  // Long-Non-ASCII
-  testJoin("a\u2000" * 255 + "a", new List.generate(256, (_) => "a"), "\u2000");
-  testJoin("\u2000" * 256, new List.generate(256, (_) => "\u2000"));
-  testJoin(
-      "\u2000x" * 255 + "\u2000", new List.generate(256, (_) => "\u2000"), "x");
-
-  var o1 = new Stringable("x");
-  var o2 = new Stringable("\ufeff");
-  testJoin("xa" * 3 + "x", [o1, o1, o1, o1], "a");
-  testJoin("x" * 4, [o1, o1, o1, o1], "");
-  testJoin("x" * 4, [o1, o1, o1, o1]);
-
-  testJoin("\ufeffx" * 3 + "\ufeff", [o2, o2, o2, o2], "x");
-  testJoin("\ufeff" * 4, [o2, o2, o2, o2], "");
-  testJoin("\ufeff" * 4, [o2, o2, o2, o2]);
-
-  testJoin("a\u2000x\ufeff", ["a", "\u2000", o1, o2]);
-  testJoin("a\u2000\ufeffx", ["a", "\u2000", o2, o1]);
-  testJoin("ax\u2000\ufeff", ["a", o1, "\u2000", o2]);
-  testJoin("ax\ufeff\u2000", ["a", o1, o2, "\u2000"]);
-  testJoin("a\ufeffx\u2000", ["a", o2, o1, "\u2000"]);
-  testJoin("a\ufeff\u2000x", ["a", o2, "\u2000", o1]);
-
-  testJoin("\u2000ax\ufeff", ["\u2000", "a", o1, o2]);
-  testJoin("\u2000a\ufeffx", ["\u2000", "a", o2, o1]);
-  testJoin("xa\u2000\ufeff", [o1, "a", "\u2000", o2]);
-  testJoin("xa\ufeff\u2000", [o1, "a", o2, "\u2000"]);
-  testJoin("\ufeffax\u2000", [o2, "a", o1, "\u2000"]);
-  testJoin("\ufeffa\u2000x", [o2, "a", "\u2000", o1]);
-
-  testJoin("\u2000xa\ufeff", ["\u2000", o1, "a", o2]);
-  testJoin("\u2000\ufeffax", ["\u2000", o2, "a", o1]);
-  testJoin("x\u2000a\ufeff", [o1, "\u2000", "a", o2]);
-  testJoin("x\ufeffa\u2000", [o1, o2, "a", "\u2000"]);
-  testJoin("\ufeffxa\u2000", [o2, o1, "a", "\u2000"]);
-  testJoin("\ufeff\u2000ax", [o2, "\u2000", "a", o1]);
-
-  testJoin("\u2000x\ufeffa", ["\u2000", o1, o2, "a"]);
-  testJoin("\u2000\ufeffxa", ["\u2000", o2, o1, "a"]);
-  testJoin("x\u2000\ufeffa", [o1, "\u2000", o2, "a"]);
-  testJoin("x\ufeff\u2000a", [o1, o2, "\u2000", "a"]);
-  testJoin("\ufeffx\u2000a", [o2, o1, "\u2000", "a"]);
-  testJoin("\ufeff\u2000xa", [o2, "\u2000", o1, "a"]);
-}
-
-class Stringable {
-  final String value;
-  Stringable(this.value);
-  String toString() => value;
-}
-
-main() {
-  testCollections();
-  testStringVariants();
-  // TODO(lrn): test scalar lists.
-}
diff --git a/tests/corelib/iterable_last_test.dart b/tests/corelib/iterable_last_test.dart
deleted file mode 100644
index 482daa0..0000000
--- a/tests/corelib/iterable_last_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Expect.equals(3, list1.last);
-  Expect.equals(5, list2.last);
-  Expect.throws(() => list3.last, (e) => e is StateError);
-
-  Expect.isTrue(set1.contains(set1.last));
-
-  Expect.throws(() => set2.last, (e) => e is StateError);
-}
diff --git a/tests/corelib/iterable_last_where_test.dart b/tests/corelib/iterable_last_where_test.dart
deleted file mode 100644
index 8cbf06e..0000000
--- a/tests/corelib/iterable_last_where_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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';
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5, 6];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Expect.equals(2, list1.lastWhere((x) => x.isEven));
-  Expect.equals(3, list1.lastWhere((x) => x.isOdd));
-  Expect.throws(() => list1.lastWhere((x) => x > 3), (e) => e is StateError);
-  Expect.equals(null, list1.lastWhere((x) => x > 3, orElse: () => null));
-  Expect.equals(499, list1.lastWhere((x) => x > 3, orElse: () => 499));
-
-  Expect.equals(6, list2.lastWhere((x) => x.isEven));
-  Expect.equals(5, list2.lastWhere((x) => x.isOdd));
-  Expect.throws(() => list2.lastWhere((x) => x == 0), (e) => e is StateError);
-  Expect.equals(null, list2.lastWhere((x) => false, orElse: () => null));
-  Expect.equals(499, list2.lastWhere((x) => false, orElse: () => 499));
-
-  Expect.throws(() => list3.lastWhere((x) => x == 0), (e) => e is StateError);
-  Expect.throws(() => list3.lastWhere((x) => true), (e) => e is StateError);
-  Expect.equals(null, list3.lastWhere((x) => true, orElse: () => null));
-  Expect.equals("str", list3.lastWhere((x) => false, orElse: () => "str"));
-
-  Expect.equals(12, set1.lastWhere((x) => x.isEven));
-  var odd = set1.lastWhere((x) => x.isOdd);
-  Expect.isTrue(odd == 11 || odd == 13);
-  Expect.throws(() => set1.lastWhere((x) => false), (e) => e is StateError);
-  Expect.equals(null, set1.lastWhere((x) => false, orElse: () => null));
-  Expect.equals(499, set1.lastWhere((x) => false, orElse: () => 499));
-
-  Expect.throws(() => set2.lastWhere((x) => false), (e) => e is StateError);
-  Expect.throws(() => set2.lastWhere((x) => true), (e) => e is StateError);
-  Expect.equals(null, set2.lastWhere((x) => true, orElse: () => null));
-  Expect.equals(499, set2.lastWhere((x) => false, orElse: () => 499));
-}
diff --git a/tests/corelib/iterable_length_test.dart b/tests/corelib/iterable_length_test.dart
deleted file mode 100644
index 20c9663..0000000
--- a/tests/corelib/iterable_length_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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 "dart:collection";
-import "package:expect/expect.dart";
-
-class A extends IterableBase {
-  int count;
-  A(this.count);
-
-  Iterator get iterator {
-    return new AIterator(count);
-  }
-}
-
-class AIterator implements Iterator {
-  int _count;
-  int _current;
-
-  AIterator(this._count);
-
-  bool moveNext() {
-    if (_count > 0) {
-      _current = _count;
-      _count--;
-      return true;
-    }
-    _current = null;
-    return false;
-  }
-
-  get current => _current;
-}
-
-main() {
-  var a = new A(10);
-  Expect.equals(10, a.length);
-  a = new A(0);
-  Expect.equals(0, a.length);
-  a = new A(5);
-  Expect.equals(5, a.map((e) => e + 1).length);
-  Expect.equals(3, a.where((e) => e >= 3).length);
-}
diff --git a/tests/corelib/iterable_mapping_test.dart b/tests/corelib/iterable_mapping_test.dart
deleted file mode 100644
index 0d59975..0000000
--- a/tests/corelib/iterable_mapping_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1.addAll([11, 12, 13]);
-  Set set2 = new Set();
-
-  Iterable mapped = list1.map((x) => x + 1);
-  Expect.listEquals([2, 3, 4], mapped.toList());
-
-  mapped = mapped.map((x) => x + 1);
-  Expect.listEquals([3, 4, 5], mapped.toList());
-
-  mapped = list2.map((x) => x + 1);
-  Expect.listEquals([5, 6], mapped.toList());
-
-  mapped = mapped.map((x) => x + 1);
-  Expect.listEquals([6, 7], mapped.toList());
-
-  mapped = list3.map((x) => x + 1);
-  Expect.listEquals([], mapped.toList());
-
-  mapped = mapped.map((x) => x + 1);
-  Expect.listEquals([], mapped.toList());
-
-  var expected = new Set<int>()..addAll([12, 13, 14]);
-  mapped = set1.map((x) => x + 1);
-  Expect.isFalse(mapped is List);
-  Expect.setEquals(expected, mapped.toSet());
-
-  expected = new Set<int>()..addAll([13, 14, 15]);
-  mapped = mapped.map((x) => x + 1);
-  Expect.isFalse(mapped is List);
-  Expect.setEquals(expected, mapped.toSet());
-
-  mapped = set2.map((x) => x + 1);
-  Expect.isFalse(mapped is List);
-  Expect.listEquals([], mapped.toList());
-
-  mapped = mapped.map((x) => x + 1);
-  Expect.isFalse(mapped is List);
-  Expect.listEquals([], mapped.toList());
-}
diff --git a/tests/corelib/iterable_reduce_test.dart b/tests/corelib/iterable_reduce_test.dart
deleted file mode 100644
index 755a749..0000000
--- a/tests/corelib/iterable_reduce_test.dart
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2014, 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";
-import 'dart:collection';
-import 'dart:typed_data';
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-
-  get length => list.length;
-  set length(val) {
-    list.length = val;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) => list[index] = val;
-}
-
-id(x) => x;
-
-main() {
-  // Test functionality.
-  for (var iterable in [
-    const [1, 2, 3],
-    [1, 2, 3],
-    new List(3)
-      ..[0] = 1
-      ..[1] = 2
-      ..[2] = 3,
-    {1: 1, 2: 2, 3: 3}.keys,
-    {1: 1, 2: 2, 3: 3}.values,
-    new Iterable.generate(3, (x) => x + 1),
-    new List.generate(3, (x) => x + 1),
-    [0, 1, 2, 3].where((x) => x > 0),
-    [0, 1, 2].map((x) => x + 1),
-    [
-      [1, 2],
-      [3]
-    ].expand(id),
-    [3, 2, 1].reversed,
-    [0, 1, 2, 3].skip(1),
-    [1, 2, 3, 4].take(3),
-    new Uint8List(3)
-      ..[0] = 1
-      ..[1] = 2
-      ..[2] = 3,
-    (new HashMap()
-          ..[1] = 1
-          ..[2] = 2
-          ..[3] = 3)
-        .keys,
-    (new HashMap()
-          ..[1] = 1
-          ..[2] = 2
-          ..[3] = 3)
-        .values,
-    (new SplayTreeMap()
-          ..[1] = 0
-          ..[2] = 0
-          ..[3] = 0)
-        .keys,
-    (new SplayTreeMap()
-          ..[0] = 1
-          ..[1] = 2
-          ..[2] = 3)
-        .values,
-    new HashSet()..add(1)..add(2)..add(3),
-    new LinkedHashSet()..add(1)..add(2)..add(3),
-    new SplayTreeSet()..add(1)..add(2)..add(3),
-    "\x01\x02\x03".codeUnits,
-    "\x01\x02\x03".runes,
-    new MyList([1, 2, 3]),
-  ]) {
-    int callCount = 0;
-    var result = iterable.reduce((x, y) {
-      callCount++;
-      return x + y;
-    });
-    Expect.equals(6, result, "${iterable.runtimeType}");
-    Expect.equals(2, callCount);
-  }
-
-  // Empty iterables not allowed.
-  for (var iterable in [
-    const [],
-    [],
-    new List(0),
-    {}.keys,
-    {}.values,
-    new Iterable.generate(0, (x) => x + 1),
-    new List.generate(0, (x) => x + 1),
-    [0, 1, 2, 3].where((x) => false),
-    [].map((x) => x + 1),
-    [[], []].expand(id),
-    [].reversed,
-    [0, 1, 2, 3].skip(4),
-    [1, 2, 3, 4].take(0),
-    new Uint8List(0),
-    (new HashMap()).keys,
-    (new HashMap()).values,
-    (new SplayTreeMap()).keys,
-    (new SplayTreeMap()).values,
-    new HashSet(),
-    new LinkedHashSet(),
-    new SplayTreeSet(),
-    "".codeUnits,
-    "".runes,
-    new MyList([]),
-  ]) {
-    Expect.throws(() {
-      iterable.reduce((x, y) => throw "Unreachable");
-    }, (e) => e is StateError);
-  }
-
-  // Singleton iterables not calling reduce function.
-  for (var iterable in [
-    const [1],
-    [1],
-    new List(1)..[0] = 1,
-    {1: 1}.keys,
-    {1: 1}.values,
-    new Iterable.generate(1, (x) => x + 1),
-    new List.generate(1, (x) => x + 1),
-    [0, 1, 2, 3].where((x) => x == 1),
-    [0].map((x) => x + 1),
-    [
-      [],
-      [1]
-    ].expand(id),
-    [1].reversed,
-    [0, 1].skip(1),
-    [1, 2, 3, 4].take(1),
-    new Uint8List(1)..[0] = 1,
-    (new HashMap()..[1] = 0).keys,
-    (new HashMap()..[0] = 1).values,
-    (new SplayTreeMap()..[1] = 0).keys,
-    (new SplayTreeMap()..[0] = 1).values,
-    new HashSet()..add(1),
-    new LinkedHashSet()..add(1),
-    new SplayTreeSet()..add(1),
-    "\x01".codeUnits,
-    "\x01".runes,
-    new MyList([1]),
-  ]) {
-    Expect.equals(1, iterable.reduce((x, y) => throw "Unreachable"));
-  }
-
-  // Concurrent modifications not allowed.
-  testModification(base, modify, transform) {
-    var iterable = transform(base);
-    Expect.throws(() {
-      iterable.reduce((x, y) {
-        modify(base);
-        return x + y;
-      });
-    }, (e) => e is ConcurrentModificationError);
-  }
-
-  void add4(collection) {
-    collection.add(4);
-  }
-
-  void put4(map) {
-    map[4] = 4;
-  }
-
-  testModification([1, 2, 3], add4, id);
-  testModification(new HashSet()..add(1)..add(2)..add(3), add4, id);
-  testModification(new LinkedHashSet()..add(1)..add(2)..add(3), add4, id);
-  testModification(new SplayTreeSet()..add(1)..add(2)..add(3), add4, id);
-  testModification(new MyList([1, 2, 3]), add4, id);
-
-  testModification([0, 1, 2, 3], add4, (x) => x.where((x) => x > 0));
-  testModification([0, 1, 2], add4, (x) => x.map((x) => x + 1));
-  testModification([
-    [1, 2],
-    [3]
-  ], add4, (x) => x.expand((x) => x));
-  testModification([3, 2, 1], add4, (x) => x.reversed);
-  testModification({1: 1, 2: 2, 3: 3}, put4, (x) => x.keys);
-  testModification({1: 1, 2: 2, 3: 3}, put4, (x) => x.values);
-  var hashMap = new HashMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(hashMap, put4, (x) => x.keys);
-  hashMap = new HashMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(hashMap, put4, (x) => x.values);
-  var splayMap = new SplayTreeMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(splayMap, put4, (x) => x.keys);
-  splayMap = new SplayTreeMap()
-    ..[1] = 1
-    ..[2] = 2
-    ..[3] = 3;
-  testModification(splayMap, put4, (x) => x.values);
-}
diff --git a/tests/corelib/iterable_return_type_test.dart b/tests/corelib/iterable_return_type_test.dart
deleted file mode 100644
index dbbd662..0000000
--- a/tests/corelib/iterable_return_type_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js where [List.addAll] was not typed
-// correctly.
-
-import "package:expect/expect.dart";
-
-import 'dart:collection';
-import 'dart:typed_data';
-
-testIntIterable(iterable) {
-  Expect.isTrue(iterable is Iterable<int>);
-  Expect.isFalse(iterable is Iterable<String>);
-}
-
-void testIterable(Iterable<int> iterable, [int depth = 3]) {
-  testIntIterable(iterable);
-  if (depth > 0) {
-    testIterable(iterable.where((x) => true), depth - 1);
-    testIterable(iterable.skip(1), depth - 1);
-    testIterable(iterable.take(1), depth - 1);
-    testIterable(iterable.skipWhile((x) => false), depth - 1);
-    testIterable(iterable.takeWhile((x) => true), depth - 1);
-    testList(iterable.toList(growable: true), depth - 1);
-    testList(iterable.toList(growable: false), depth - 1);
-    testIterable(iterable.toSet(), depth - 1);
-  }
-}
-
-void testList(List<int> list, [int depth = 3]) {
-  testIterable(list, depth);
-  if (depth > 0) {
-    testIterable(list.getRange(0, list.length), depth - 1);
-    testIterable(list.reversed, depth - 1);
-    testMap(list.asMap(), depth - 1);
-  }
-}
-
-void testMap(Map<int, int> map, [int depth = 3]) {
-  Expect.isTrue(map is Map<int, int>);
-  Expect.isFalse(map is Map<int, String>);
-  Expect.isFalse(map is Map<String, int>);
-  if (depth > 0) {
-    testIterable(map.keys, depth - 1);
-    testIterable(map.values, depth - 1);
-  }
-}
-
-main() {
-  // Empty lists.
-  testList(<int>[]);
-  testList(new List<int>(0));
-  testList(new List<int>());
-  testList(const <int>[]);
-  testList(new List<int>.generate(0, (x) => x + 1));
-  // Singleton lists.
-  testList(<int>[1]);
-  testList(new List<int>(1)..[0] = 1);
-  testList(new List<int>()..add(1));
-  testList(const <int>[1]);
-  testList(new List<int>.generate(1, (x) => x + 1));
-
-  // Typed lists.
-  testList(new Uint8List(1)..[0] = 1); //  //# 01: ok
-  testList(new Int8List(1)..[0] = 1); //   //# 01: continued
-  testList(new Uint16List(1)..[0] = 1); // //# 01: continued
-  testList(new Int16List(1)..[0] = 1); //  //# 01: continued
-  testList(new Uint32List(1)..[0] = 1); // //# 01: continued
-  testList(new Int32List(1)..[0] = 1); //  //# 01: continued
-  testList(new Uint64List(1)..[0] = 1); // //# 02: ok
-  testList(new Int64List(1)..[0] = 1); //  //# 02: continued
-
-  testIterable(new Set<int>()..add(1));
-  testIterable(new HashSet<int>()..add(1));
-  testIterable(new LinkedHashSet<int>()..add(1));
-  testIterable(new SplayTreeSet<int>()..add(1));
-
-  testIterable(new Queue<int>()..add(1));
-  testIterable(new DoubleLinkedQueue<int>()..add(1));
-  testIterable(new ListQueue<int>()..add(1));
-
-  testMap(new Map<int, int>()..[1] = 1);
-  testMap(new HashMap<int, int>()..[1] = 1);
-  testMap(new LinkedHashMap<int, int>()..[1] = 1);
-  testMap(new SplayTreeMap<int, int>()..[1] = 1);
-  testMap(<int, int>{1: 1});
-  testMap(const <int, int>{1: 1});
-}
diff --git a/tests/corelib/iterable_single_test.dart b/tests/corelib/iterable_single_test.dart
deleted file mode 100644
index 2b0849e..0000000
--- a/tests/corelib/iterable_single_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1a = <int>[1];
-  List<int> list1b = <int>[1, 2, 3];
-  List<int> list1c = <int>[];
-  List<int> list2a = const <int>[5];
-  List<int> list2b = const <int>[4, 5];
-  List<int> list2c = const <int>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(22);
-  Set set2 = new Set();
-  set2..add(11)..add(12)..add(13);
-  Set set3 = new Set();
-
-  Expect.equals(1, list1a.single);
-  Expect.throws(() => list1b.single, (e) => e is StateError);
-  Expect.throws(() => list1c.single, (e) => e is StateError);
-
-  Expect.equals(5, list2a.single);
-  Expect.throws(() => list2b.single, (e) => e is StateError);
-  Expect.throws(() => list2c.single, (e) => e is StateError);
-
-  Expect.equals(22, set1.single);
-  Expect.throws(() => set2.single, (e) => e is StateError);
-  Expect.throws(() => set3.single, (e) => e is StateError);
-}
diff --git a/tests/corelib/iterable_single_where_test.dart b/tests/corelib/iterable_single_where_test.dart
deleted file mode 100644
index 4c07910..0000000
--- a/tests/corelib/iterable_single_where_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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';
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5, 6];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Expect.equals(2, list1.singleWhere((x) => x.isEven));
-  Expect.equals(3, list1.singleWhere((x) => x == 3));
-  Expect.throws(
-      () => list1.singleWhere((x) => x.isOdd), (e) => e is StateError);
-
-  Expect.equals(6, list2.singleWhere((x) => x == 6));
-  Expect.equals(5, list2.singleWhere((x) => x.isOdd));
-  Expect.throws(
-      () => list2.singleWhere((x) => x.isEven), (e) => e is StateError);
-
-  Expect.throws(() => list3.singleWhere((x) => x == 0), (e) => e is StateError);
-
-  Expect.equals(12, set1.singleWhere((x) => x.isEven));
-  Expect.equals(11, set1.singleWhere((x) => x == 11));
-  Expect.throws(() => set1.singleWhere((x) => x.isOdd));
-
-  Expect.throws(() => set2.singleWhere((x) => true), (e) => e is StateError);
-}
diff --git a/tests/corelib/iterable_skip_test.dart b/tests/corelib/iterable_skip_test.dart
deleted file mode 100644
index 8af142b..0000000
--- a/tests/corelib/iterable_skip_test.dart
+++ /dev/null
@@ -1,258 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Iterable<int> skip0 = list1.skip(0);
-  Expect.isTrue(skip0 is! List);
-  Iterator<int> it = skip0.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skip1 = list1.skip(1);
-  Expect.isTrue(skip1 is! List);
-  Expect.isTrue(skip1.skip(2).skip(1) is! List);
-  it = skip1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skip2 = list1.skip(2);
-  Expect.isTrue(skip2 is! List);
-  Expect.isTrue(skip2.skip(2).skip(1) is! List);
-  it = skip2.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skip3 = list1.skip(3);
-  Expect.isTrue(skip3 is! List);
-  Expect.isTrue(skip3.skip(2).skip(1) is! List);
-  it = skip3.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skip4 = list1.skip(4);
-  Expect.isTrue(skip4 is! List);
-  Expect.isTrue(skip4.skip(2).skip(1) is! List);
-  it = skip4.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip0 = list1.skip(0);
-  skip1 = skip0.skip(1);
-  skip2 = skip1.skip(1);
-  skip3 = skip2.skip(1);
-  skip4 = skip3.skip(1);
-  it = skip0.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = skip1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = skip2.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = skip3.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = skip4.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip0 = list2.skip(0);
-  Expect.isTrue(skip0 is! List);
-  Expect.isTrue(skip0.skip(2).skip(1) is! List);
-  it = skip0.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip1 = list2.skip(1);
-  Expect.isTrue(skip1 is! List);
-  Expect.isTrue(skip1.skip(2).skip(1) is! List);
-  it = skip1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip2 = list2.skip(2);
-  Expect.isTrue(skip2 is! List);
-  Expect.isTrue(skip2.skip(2).skip(1) is! List);
-  it = skip2.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip3 = list2.skip(3);
-  Expect.isTrue(skip3 is! List);
-  Expect.isTrue(skip3.skip(2).skip(1) is! List);
-  it = skip3.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<String> skip02 = list3.skip(0);
-  Expect.isTrue(skip02 is! List);
-  Expect.isTrue(skip02.skip(2).skip(1) is! List);
-  Iterator<String> it2 = skip02.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  Iterable<String> skip12 = list3.skip(1);
-  Expect.isTrue(skip12 is! List);
-  Expect.isTrue(skip12.skip(2).skip(1) is! List);
-  it2 = skip12.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  skip0 = set1.skip(0);
-  List<int> copied = skip0.toList();
-  Expect.equals(3, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(set1.contains(copied[2]));
-  Expect.isTrue(copied[0] != copied[1]);
-  Expect.isTrue(copied[0] != copied[2]);
-  Expect.isTrue(copied[1] != copied[2]);
-  it = skip0.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip1 = set1.skip(1);
-  copied = skip1.toList();
-  Expect.equals(2, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(copied[0] != copied[1]);
-  it = skip1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip2 = set1.skip(2);
-  copied = skip2.toList();
-  Expect.equals(1, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  it = skip2.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip3 = set1.skip(3);
-  it = skip3.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip4 = set1.skip(4);
-  it = skip4.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip0 = set2.skip(0);
-  it = skip0.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skip1 = set2.skip(1);
-  it = skip1.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  testSkipTake(Iterable input, int skip, int take) {
-    List expected = [];
-    Iterator iter = input.iterator;
-    for (int i = 0; i < skip; i++) iter.moveNext();
-    for (int i = 0; i < take; i++) {
-      if (!iter.moveNext()) break;
-      expected.add(iter.current);
-    }
-    Expect.listEquals(expected, input.skip(skip).take(take).toList());
-  }
-
-  List longList = [1, 4, 5, 3, 8, 11, 12, 6, 9, 10, 13, 7, 2, 14, 15];
-  Set bigSet = longList.toSet();
-
-  for (Iterable collection in [longList, longList.reversed, bigSet]) {
-    testSkipTake(collection, 0, 0);
-    testSkipTake(collection, 0, 5);
-    testSkipTake(collection, 0, 15);
-    testSkipTake(collection, 0, 25);
-    testSkipTake(collection, 5, 0);
-    testSkipTake(collection, 5, 5);
-    testSkipTake(collection, 5, 10);
-    testSkipTake(collection, 5, 20);
-    testSkipTake(collection, 15, 0);
-    testSkipTake(collection, 15, 5);
-    testSkipTake(collection, 20, 0);
-    testSkipTake(collection, 20, 5);
-    Expect.throws(() => collection.skip(-1), (e) => e is RangeError);
-    Expect.throws(() => collection.skip(1).skip(-1), (e) => e is RangeError);
-  }
-}
diff --git a/tests/corelib/iterable_skip_while_test.dart b/tests/corelib/iterable_skip_while_test.dart
deleted file mode 100644
index 43d8fd1..0000000
--- a/tests/corelib/iterable_skip_while_test.dart
+++ /dev/null
@@ -1,146 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Iterable<int> skipWhileTrue = list1.skipWhile((x) => true);
-  Iterator<int> it = skipWhileTrue.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skipWhileOdd = list1.skipWhile((x) => x.isOdd);
-  it = skipWhileOdd.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skipWhileLessThan3 = list1.skipWhile((x) => x < 3);
-  it = skipWhileLessThan3.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skipWhileFalse = list1.skipWhile((x) => false);
-  it = skipWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> skipWhileEven = list1.skipWhile((x) => x.isEven);
-  it = skipWhileEven.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skipWhileTrue = list2.skipWhile((x) => true);
-  it = skipWhileTrue.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skipWhileEven = list2.skipWhile((x) => x.isEven);
-  it = skipWhileEven.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skipWhileOdd = list2.skipWhile((x) => x.isOdd);
-  it = skipWhileOdd.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skipWhileFalse = list2.skipWhile((x) => false);
-  it = skipWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<String> skipWhileFalse2 = list3.skipWhile((x) => false);
-  Iterator<String> it2 = skipWhileFalse2.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  Iterable<String> skipWhileTrue2 = list3.skipWhile((x) => true);
-  it2 = skipWhileTrue2.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  skipWhileTrue = set1.skipWhile((x) => true);
-  it = skipWhileTrue.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skipWhileFalse = set1.skipWhile((x) => false);
-  List<int> copied = skipWhileFalse.toList();
-  Expect.equals(3, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(copied[0] != copied[1]);
-  Expect.isTrue(copied[0] != copied[2]);
-  Expect.isTrue(copied[1] != copied[2]);
-  it = skipWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isTrue(it.current != null);
-  Expect.isTrue(it.moveNext());
-  Expect.isTrue(it.current != null);
-  Expect.isTrue(it.moveNext());
-  Expect.isTrue(it.current != null);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skipWhileTrue = set2.skipWhile((x) => true);
-  it = skipWhileTrue.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  skipWhileFalse = set2.skipWhile((x) => false);
-  it = skipWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-}
diff --git a/tests/corelib/iterable_take_test.dart b/tests/corelib/iterable_take_test.dart
deleted file mode 100644
index 2067cc7..0000000
--- a/tests/corelib/iterable_take_test.dart
+++ /dev/null
@@ -1,227 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Iterable<int> take0 = list1.take(0);
-  Iterator<int> it = take0.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> take1 = list1.take(1);
-  it = take1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> take2 = list1.take(2);
-  it = take2.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> take3 = list1.take(3);
-  it = take3.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> take4 = list1.take(4);
-  it = take4.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take4 = list1.take(4);
-  take3 = take4.take(3);
-  take2 = take3.take(2);
-  take1 = take2.take(1);
-  take0 = take1.take(0);
-  it = take0.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = take1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = take2.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = take3.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-  it = take4.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take0 = list2.take(0);
-  it = take0.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take1 = list2.take(1);
-  it = take1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take2 = list2.take(2);
-  it = take2.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take3 = list2.take(3);
-  it = take3.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<String> take02 = list3.take(0);
-  Iterator<String> it2 = take02.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  Iterable<String> take12 = list3.take(1);
-  it2 = take12.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  take0 = set1.take(0);
-  it = take0.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take1 = set1.take(1);
-  List<int> copied = take1.toList();
-  Expect.equals(1, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  it = take1.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take2 = set1.take(2);
-  copied = take2.toList();
-  Expect.equals(2, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(copied[0] != copied[1]);
-  it = take2.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take3 = set1.take(3);
-  copied = take3.toList();
-  Expect.equals(3, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(set1.contains(copied[2]));
-  Expect.isTrue(copied[0] != copied[1]);
-  Expect.isTrue(copied[0] != copied[2]);
-  Expect.isTrue(copied[1] != copied[2]);
-  it = take3.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isNotNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take0 = set2.take(0);
-  it = take0.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  take1 = set2.take(1);
-  it = take1.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Expect.throws(() => list1.skip(-1), (e) => e is RangeError);
-  Expect.throws(() => list2.skip(-1), (e) => e is RangeError);
-  Expect.throws(() => list3.skip(-1), (e) => e is RangeError);
-  Expect.throws(() => set1.skip(-1), (e) => e is RangeError);
-  Expect.throws(() => set2.skip(-1), (e) => e is RangeError);
-  Expect.throws(() => list1.map((x) => x).skip(-1), (e) => e is RangeError);
-  Expect.throws(() => list2.map((x) => x).skip(-1), (e) => e is RangeError);
-  Expect.throws(() => list3.map((x) => x).skip(-1), (e) => e is RangeError);
-  Expect.throws(() => set1.map((x) => x).skip(-1), (e) => e is RangeError);
-  Expect.throws(() => set2.map((x) => x).skip(-1), (e) => e is RangeError);
-}
diff --git a/tests/corelib/iterable_take_while_test.dart b/tests/corelib/iterable_take_while_test.dart
deleted file mode 100644
index 877f749..0000000
--- a/tests/corelib/iterable_take_while_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 5];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set set2 = new Set();
-
-  Iterable<int> takeWhileFalse = list1.takeWhile((x) => false);
-  Iterator<int> it = takeWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> takeWhileOdd = list1.takeWhile((x) => x.isOdd);
-  it = takeWhileOdd.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> takeWhileLessThan3 = list1.takeWhile((x) => x < 3);
-  it = takeWhileLessThan3.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> takeEverything = list1.takeWhile((x) => true);
-  it = takeEverything.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(1, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(2, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(3, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<int> takeWhileEven = list1.takeWhile((x) => x.isEven);
-  it = takeWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  takeWhileFalse = list2.takeWhile((x) => false);
-  it = takeWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  takeWhileEven = list2.takeWhile((x) => x.isEven);
-  it = takeWhileEven.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  takeEverything = list2.takeWhile((x) => true);
-  it = takeEverything.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(4, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(5, it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  Iterable<String> takeWhileFalse2 = list3.takeWhile((x) => false);
-  Iterator<String> it2 = takeWhileFalse2.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  Iterable<String> takeEverything2 = list3.takeWhile((x) => true);
-  it2 = takeEverything2.iterator;
-  Expect.isNull(it2.current);
-  Expect.isFalse(it2.moveNext());
-  Expect.isNull(it2.current);
-
-  takeWhileFalse = set1.takeWhile((x) => false);
-  it = takeWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  takeEverything = set1.takeWhile((x) => true);
-  List<int> copied = takeEverything.toList();
-  Expect.equals(3, copied.length);
-  Expect.isTrue(set1.contains(copied[0]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(set1.contains(copied[1]));
-  Expect.isTrue(copied[0] != copied[1]);
-  Expect.isTrue(copied[0] != copied[2]);
-  Expect.isTrue(copied[1] != copied[2]);
-  it = takeEverything.iterator;
-  Expect.isNull(it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.isTrue(it.current != null);
-  Expect.isTrue(it.moveNext());
-  Expect.isTrue(it.current != null);
-  Expect.isTrue(it.moveNext());
-  Expect.isTrue(it.current != null);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  takeWhileFalse = set2.takeWhile((x) => false);
-  it = takeWhileFalse.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-
-  takeEverything = set2.takeWhile((x) => true);
-  it = takeEverything.iterator;
-  Expect.isNull(it.current);
-  Expect.isFalse(it.moveNext());
-  Expect.isNull(it.current);
-}
diff --git a/tests/corelib/iterable_test.dart b/tests/corelib/iterable_test.dart
deleted file mode 100644
index e7f6299..0000000
--- a/tests/corelib/iterable_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js where [List.addAll] was not typed
-// correctly.
-
-import "package:expect/expect.dart";
-
-import 'dart:collection';
-
-class MyIterable extends IterableBase {
-  get iterator => [].iterator;
-}
-
-main() {
-  Expect.isTrue(([]..addAll(new MyIterable())).isEmpty);
-}
diff --git a/tests/corelib/iterable_to_list_test.dart b/tests/corelib/iterable_to_list_test.dart
deleted file mode 100644
index d812978..0000000
--- a/tests/corelib/iterable_to_list_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// 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 "dart:collection" show Queue;
-import "dart:typed_data" show Uint8List, Float32List;
-import "package:expect/expect.dart";
-
-main() {
-  // testIterable takes an iterable and a list expected to be equal to
-  // the iterable's toList result, including the type parameter of the list.
-  testIterable([], []);
-  testIterable(<int>[], <int>[]);
-  testIterable(<String>[], <String>[]);
-  testIterable([1, 2, 3], [1, 2, 3]);
-  testIterable(<int>[1, 2, 3], <int>[1, 2, 3]);
-  testIterable(const [1, 2], [1, 2]);
-  testIterable(const <int>[1, 2], <int>[1, 2]);
-  testIterable({"x": 1, "y": 1}.keys, ["x", "y"]);
-  testIterable(<String, int>{"x": 1, "y": 1}.keys, <String>["x", "y"]);
-  testIterable({"x": 2, "y": 3}.values, [2, 3]);
-  testIterable(<String, int>{"x": 2, "y": 3}.values, <int>[2, 3]);
-  testIterable(new Iterable.generate(3), [0, 1, 2]);
-  testIterable(new Iterable<int>.generate(3), <int>[0, 1, 2]);
-  testIterable(
-      new Iterable<String>.generate(3, (x) => "$x"), <String>["0", "1", "2"]);
-  testIterable(new Set.from([1, 2, 3]), [1, 2, 3]);
-  testIterable(new Set<int>.from([1, 2, 3]), <int>[1, 2, 3]);
-  testIterable(new Queue.from([1, 2, 3]), [1, 2, 3]);
-  testIterable(new Queue<int>.from(<int>[1, 2, 3]), <int>[1, 2, 3]);
-  testIterable(new Uint8List.fromList(<int>[1, 2, 3]), //    //# 01: ok
-               <int>[1, 2, 3]); //                           //# 01: continued
-  testIterable(new Float32List.fromList([1.0, 2.0, 3.0]), // //# 01: continued
-               <double>[1.0, 2.0, 3.0]); //                  //# 01: continued
-  testIterable("abc".codeUnits, <int>[97, 98, 99]); //       //# 01: continued
-  testIterable("abc".runes, <int>[97, 98, 99]);
-}
-
-testIterable(Iterable iterable, List expected, [int depth = 0]) {
-  print(" " * depth + "${iterable.runtimeType} vs ${expected.runtimeType}");
-  test(iterable, expected);
-  test(iterable, expected, growable: true);
-  test(iterable, expected, growable: false);
-  if (depth < 2) {
-    depth++;
-    testIterable(iterable.map((x) => x), new List.from(expected), depth);
-    testIterable(iterable.where((x) => true), expected, depth);
-    testIterable(iterable.expand((x) => [x]), new List.from(expected), depth);
-    testIterable(iterable.map((x) => x), new List.from(expected), depth);
-    testIterable(iterable.skipWhile((x) => false), expected, depth);
-    testIterable(iterable.takeWhile((x) => true), expected, depth);
-    testIterable(iterable.skip(0), expected, depth);
-    testIterable(iterable.take(expected.length * 2), expected, depth);
-    testIterable(iterable.toSet(), expected, depth);
-  }
-}
-
-test(Iterable iterable, List expected, {bool growable: true}) {
-  var list = iterable.toList(growable: growable);
-  Expect.listEquals(expected, list);
-  Expect.equals(expected is List<int>, list is List<int>, "int");
-  Expect.equals(expected is List<double>, list is List<double>, "double");
-  Expect.equals(expected is List<String>, list is List<String>, "str");
-  if (growable) {
-    int length = list.length;
-    list.add(null);
-    Expect.equals(length + 1, list.length);
-  } else {
-    Expect.throws(() {
-      list.add(null);
-    });
-  }
-}
diff --git a/tests/corelib/iterable_to_set_test.dart b/tests/corelib/iterable_to_set_test.dart
deleted file mode 100644
index 628ddb8..0000000
--- a/tests/corelib/iterable_to_set_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// 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";
-
-main() {
-  List<int> list1 = <int>[1, 2, 3];
-  List<int> list2 = const <int>[4, 4];
-  List<String> list3 = <String>[];
-  Set<int> set1 = new Set<int>();
-  set1..add(11)..add(12)..add(13);
-  Set<String> set2 = new Set<String>();
-  set2..add("foo")..add("bar")..add("toto");
-  Set set3 = new Set();
-
-  var setCopy = list1.toSet();
-  Expect.equals(3, setCopy.length);
-  Expect.isTrue(setCopy.contains(1));
-  Expect.isTrue(setCopy.contains(2));
-  Expect.isTrue(setCopy.contains(3));
-  Expect.isTrue(setCopy is Set<int>);
-  Expect.isFalse(setCopy is Set<String>);
-
-  setCopy = list2.toSet();
-  Expect.equals(1, setCopy.length);
-  Expect.isTrue(setCopy.contains(4));
-  Expect.isTrue(setCopy is Set<int>);
-  Expect.isFalse(setCopy is Set<String>);
-
-  setCopy = list3.toSet();
-  Expect.isTrue(setCopy.isEmpty);
-  Expect.isTrue(setCopy is Set<String>);
-  Expect.isFalse(setCopy is Set<int>);
-
-  setCopy = set1.toSet();
-  Expect.setEquals(set1, setCopy);
-  Expect.isTrue(setCopy is Set<int>);
-  Expect.isFalse(setCopy is Set<String>);
-  Expect.isFalse(identical(setCopy, set1));
-
-  setCopy = set2.toSet();
-  Expect.setEquals(set2, setCopy);
-  Expect.isTrue(setCopy is Set<String>);
-  Expect.isFalse(setCopy is Set<int>);
-  Expect.isFalse(identical(setCopy, set2));
-
-  setCopy = set3.toSet();
-  Expect.setEquals(set3, setCopy);
-  Expect.isTrue(setCopy is Set<String>);
-  Expect.isTrue(setCopy is Set<int>);
-  Expect.isFalse(identical(setCopy, set3));
-}
diff --git a/tests/corelib/iterable_tostring_test.dart b/tests/corelib/iterable_tostring_test.dart
deleted file mode 100644
index bb22097..0000000
--- a/tests/corelib/iterable_tostring_test.dart
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the IterableBase/IterableMixin toString method.
-
-import "package:expect/expect.dart";
-import "dart:collection";
-
-String mkIt(int len, [func]) {
-  var list;
-  if (func == null) {
-    list = new List.generate(len, (x) => x);
-  } else {
-    list = new List.generate(len, func);
-  }
-  return new MyIterable(list).toString();
-}
-
-class MyIterable extends IterableBase {
-  final Iterable _base;
-  MyIterable(this._base);
-  Iterator get iterator => _base.iterator;
-}
-
-void main() {
-  Expect.equals("()", mkIt(0));
-  Expect.equals("(0)", mkIt(1));
-  Expect.equals("(0, 1)", mkIt(2));
-  Expect.equals("(0, 1, 2, 3, 4, 5, 6, 7, 8)", mkIt(9));
-
-  // Builds string up to 60 characters, then finishes with last two
-  // elements.
-  Expect.equals(
-      //0123456789012345678901234567890123456789 - 40 characters
-      "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
-      "2, 13, 14, 15, 16, 17, 18, ..., 98, 99)",
-      mkIt(100));
-
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
-      "2, 13, 14, 15, 16, 17, 18)",
-      mkIt(19));
-
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
-      "2, 13, 14, 15, 16, 17, 18, 19)",
-      mkIt(20));
-
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
-      "2, 13, 14, 15, 16, 17, 18, 19, 20)",
-      mkIt(21));
-
-  // Don't show last two elements if more than 100 elements total
-  // (can't be 100 elements in 80 characters including commas).
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
-      "2, 13, 14, 15, 16, 17, 18, 19, 20, ...)",
-      mkIt(101));
-
-  // If last two elements bring total over 80 characters, drop some of
-  // the previous ones as well.
-
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1"
-      "2, 13, ..., 18, xxxxxxxxxxxxxxxxxxxx)",
-      mkIt(20, (x) => x == 19 ? "xxxxxxxxxxxxxxxxxxxx" : "$x"));
-
-  // Never drop the first three or the last two.
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(xxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxx, x"
-      "xxxxxxxxxxxxxxxx, ..., 18, xxxxxxxxxxxxx"
-      "xxxx)",
-      mkIt(20, (x) => (x < 3 || x == 19) ? "xxxxxxxxxxxxxxxxx" : "$x"));
-
-  // Never drop the first three or the last two.
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(xxxxxxxxxxxxxxxxx, xxxxxxxxxxxxxxxxx, x"
-      "xxxxxxxxxxxxxxxx, ..., xxxxxxxxxxxxxxxxx"
-      ", 19)",
-      mkIt(20, (x) => (x < 3 || x == 18) ? "xxxxxxxxxxxxxxxxx" : "$x"));
-
-  // If the first three are very long, always include them anyway.
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,"
-      " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,"
-      " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,"
-      " ..., 98, 99)",
-      mkIt(100,
-          (x) => (x < 3) ? "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" : "$x"));
-
-  Expect.equals(
-      //0123456789012345678901234567890123456789
-      "(, , , , , , , , , , , , , , , , , , , ,"
-      " , , , , , , , , , , , , , , , ..., , )",
-      mkIt(100, (_) => ""));
-}
diff --git a/tests/corelib/json_map_test.dart b/tests/corelib/json_map_test.dart
deleted file mode 100644
index 8524e00..0000000
--- a/tests/corelib/json_map_test.dart
+++ /dev/null
@@ -1,334 +0,0 @@
-// Copyright (c) 2011, 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 json_map_test;
-
-import "package:expect/expect.dart";
-import 'dart:convert' show JSON;
-import 'dart:collection' show LinkedHashMap, HashMap;
-
-bool useReviver = false;
-Map jsonify(Map map) {
-  String encoded = JSON.encode(map);
-  return useReviver
-      ? JSON.decode(encoded, reviver: (key, value) => value)
-      : JSON.decode(encoded);
-}
-
-List listEach(Map map) {
-  var result = [];
-  map.forEach((String key, value) {
-    result.add(key);
-    result.add(value);
-  });
-  return result;
-}
-
-void main() {
-  test(false);
-  test(true);
-}
-
-void test(bool revive) {
-  useReviver = revive;
-  testEmpty(jsonify({}));
-  testAtoB(jsonify({'a': 'b'}));
-
-  Map map = jsonify({});
-  map['a'] = 'b';
-  testAtoB(map);
-
-  map = jsonify({});
-  Expect.equals('b', map.putIfAbsent('a', () => 'b'));
-  testAtoB(map);
-
-  map = jsonify({});
-  map.addAll({'a': 'b'});
-  testAtoB(map);
-
-  testOrder(['a', 'b', 'c', 'd', 'e', 'f']);
-
-  testProto();
-  testToString();
-  testConcurrentModifications();
-  testType();
-  testClear();
-
-  testListEntry();
-  testMutation();
-}
-
-void testEmpty(Map map) {
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(0, map.length);
-    Expect.isTrue(map.isEmpty);
-    Expect.isFalse(map.isNotEmpty);
-    Expect.listEquals([], map.keys.toList());
-    Expect.listEquals([], map.values.toList());
-    Expect.isNull(map['a']);
-    Expect.listEquals([], listEach(map));
-    Expect.isFalse(map.containsKey('a'));
-    Expect.isFalse(map.containsValue('a'));
-    Expect.isNull(map.remove('a'));
-    testLookupNonExistingKeys(map);
-    testLookupNonExistingValues(map);
-    map.clear();
-  }
-}
-
-void testAtoB(Map map) {
-  Expect.equals(1, map.length);
-  Expect.isFalse(map.isEmpty);
-  Expect.isTrue(map.isNotEmpty);
-  Expect.listEquals(['a'], map.keys.toList());
-  Expect.listEquals(['b'], map.values.toList());
-  Expect.equals('b', map['a']);
-  Expect.listEquals(['a', 'b'], listEach(map));
-  Expect.isTrue(map.containsKey('a'));
-  Expect.isFalse(map.containsKey('b'));
-  Expect.isTrue(map.containsValue('b'));
-  Expect.isFalse(map.containsValue('a'));
-
-  testLookupNonExistingKeys(map);
-  testLookupNonExistingValues(map);
-  Expect.equals('b', map.remove('a'));
-  Expect.isNull(map.remove('b'));
-  testLookupNonExistingKeys(map);
-  testLookupNonExistingValues(map);
-
-  map.clear();
-  testEmpty(map);
-}
-
-void testLookupNonExistingKeys(Map map) {
-  for (String key in ['__proto__', 'null', null]) {
-    Expect.isNull(map[key]);
-    Expect.isFalse(map.containsKey(key));
-  }
-}
-
-void testLookupNonExistingValues(Map map) {
-  for (var value in ['__proto__', 'null', null]) {
-    Expect.isFalse(map.containsValue(value));
-  }
-}
-
-void testOrder(List list) {
-  if (list.isEmpty)
-    return;
-  else
-    testOrder(list.skip(1).toList());
-
-  Map original = {};
-  for (int i = 0; i < list.length; i++) {
-    original[list[i]] = i;
-  }
-
-  Map map = jsonify(original);
-  Expect.equals(list.length, map.length);
-  Expect.listEquals(list, map.keys.toList());
-
-  for (int i = 0; i < 10; i++) {
-    map["$i"] = i;
-    Expect.equals(list.length + i + 1, map.length);
-    Expect.listEquals(list, map.keys.take(list.length).toList());
-  }
-}
-
-void testProto() {
-  Map map = jsonify({'__proto__': 0});
-  Expect.equals(1, map.length);
-  Expect.isTrue(map.containsKey('__proto__'));
-  Expect.listEquals(['__proto__'], map.keys.toList());
-  Expect.equals(0, map['__proto__']);
-  Expect.equals(0, map.remove('__proto__'));
-  testEmpty(map);
-
-  map = jsonify({'__proto__': null});
-  Expect.equals(1, map.length);
-  Expect.isTrue(map.containsKey('__proto__'));
-  Expect.listEquals(['__proto__'], map.keys.toList());
-  Expect.isNull(map['__proto__']);
-  Expect.isNull(map.remove('__proto__'));
-  testEmpty(map);
-}
-
-void testToString() {
-  Expect.equals("{}", jsonify({}).toString());
-  Expect.equals("{a: 0}", jsonify({'a': 0}).toString());
-}
-
-void testConcurrentModifications() {
-  void testIterate(Map map, Iterable iterable, Function f) {
-    Iterator iterator = iterable.iterator;
-    f(map);
-    iterator.moveNext();
-  }
-
-  void testKeys(Map map, Function f) => testIterate(map, map.keys, f);
-  void testValues(Map map, Function f) => testIterate(map, map.values, f);
-
-  void testForEach(Map map, Function f) {
-    map.forEach((key, value) {
-      f(map);
-    });
-  }
-
-  bool throwsCME(Function f) {
-    try {
-      f();
-    } on ConcurrentModificationError catch (e) {
-      return true;
-    } catch (e) {
-      return false;
-    }
-    return false;
-  }
-
-  Map map = {};
-  Expect.isTrue(throwsCME(() => testKeys(jsonify(map), (map) => map['a'] = 0)));
-  Expect
-      .isTrue(throwsCME(() => testValues(jsonify(map), (map) => map['a'] = 0)));
-  Expect.isFalse(
-      throwsCME(() => testForEach(jsonify(map), (map) => map['a'] = 0)));
-
-  Expect.isFalse(throwsCME(() => testKeys(jsonify(map), (map) => map.clear())));
-  Expect
-      .isFalse(throwsCME(() => testValues(jsonify(map), (map) => map.clear())));
-  Expect.isFalse(
-      throwsCME(() => testForEach(jsonify(map), (map) => map.clear())));
-
-  Expect.isFalse(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.remove('a'))));
-  Expect.isFalse(
-      throwsCME(() => testValues(jsonify(map), (map) => map.remove('a'))));
-  Expect.isFalse(
-      throwsCME(() => testForEach(jsonify(map), (map) => map.remove('a'))));
-
-  Expect.isTrue(throwsCME(
-      () => testKeys(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
-  Expect.isTrue(throwsCME(
-      () => testValues(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
-  Expect.isFalse(throwsCME(
-      () => testForEach(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
-
-  Expect.isFalse(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({}))));
-  Expect.isFalse(
-      throwsCME(() => testValues(jsonify(map), (map) => map.addAll({}))));
-  Expect.isFalse(
-      throwsCME(() => testForEach(jsonify(map), (map) => map.addAll({}))));
-
-  Expect.isTrue(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({'a': 0}))));
-  Expect.isTrue(
-      throwsCME(() => testValues(jsonify(map), (map) => map.addAll({'a': 0}))));
-  Expect.isFalse(throwsCME(
-      () => testForEach(jsonify(map), (map) => map.addAll({'a': 0}))));
-
-  map = {'a': 1};
-  Expect
-      .isFalse(throwsCME(() => testKeys(jsonify(map), (map) => map['a'] = 0)));
-  Expect.isFalse(
-      throwsCME(() => testValues(jsonify(map), (map) => map['a'] = 0)));
-  Expect.isFalse(
-      throwsCME(() => testForEach(jsonify(map), (map) => map['a'] = 0)));
-
-  Expect.isTrue(throwsCME(() => testKeys(jsonify(map), (map) => map['b'] = 0)));
-  Expect
-      .isTrue(throwsCME(() => testValues(jsonify(map), (map) => map['b'] = 0)));
-  Expect.isTrue(
-      throwsCME(() => testForEach(jsonify(map), (map) => map['b'] = 0)));
-
-  Expect.isTrue(throwsCME(() => testKeys(jsonify(map), (map) => map.clear())));
-  Expect
-      .isTrue(throwsCME(() => testValues(jsonify(map), (map) => map.clear())));
-  Expect
-      .isTrue(throwsCME(() => testForEach(jsonify(map), (map) => map.clear())));
-
-  Expect.isTrue(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.remove('a'))));
-  Expect.isTrue(
-      throwsCME(() => testValues(jsonify(map), (map) => map.remove('a'))));
-  Expect.isTrue(
-      throwsCME(() => testForEach(jsonify(map), (map) => map.remove('a'))));
-
-  Expect.isFalse(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.remove('b'))));
-  Expect.isFalse(
-      throwsCME(() => testValues(jsonify(map), (map) => map.remove('b'))));
-  Expect.isFalse(
-      throwsCME(() => testForEach(jsonify(map), (map) => map.remove('b'))));
-
-  Expect.isFalse(throwsCME(
-      () => testKeys(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
-  Expect.isFalse(throwsCME(
-      () => testValues(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
-  Expect.isFalse(throwsCME(
-      () => testForEach(jsonify(map), (map) => map.putIfAbsent('a', () => 0))));
-
-  Expect.isTrue(throwsCME(
-      () => testKeys(jsonify(map), (map) => map.putIfAbsent('b', () => 0))));
-  Expect.isTrue(throwsCME(
-      () => testValues(jsonify(map), (map) => map.putIfAbsent('b', () => 0))));
-  Expect.isTrue(throwsCME(
-      () => testForEach(jsonify(map), (map) => map.putIfAbsent('b', () => 0))));
-
-  Expect.isFalse(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({}))));
-  Expect.isFalse(
-      throwsCME(() => testValues(jsonify(map), (map) => map.addAll({}))));
-  Expect.isFalse(
-      throwsCME(() => testForEach(jsonify(map), (map) => map.addAll({}))));
-
-  Expect.isFalse(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({'a': 0}))));
-  Expect.isFalse(
-      throwsCME(() => testValues(jsonify(map), (map) => map.addAll({'a': 0}))));
-  Expect.isFalse(throwsCME(
-      () => testForEach(jsonify(map), (map) => map.addAll({'a': 0}))));
-
-  Expect.isTrue(
-      throwsCME(() => testKeys(jsonify(map), (map) => map.addAll({'b': 0}))));
-  Expect.isTrue(
-      throwsCME(() => testValues(jsonify(map), (map) => map.addAll({'b': 0}))));
-  Expect.isTrue(throwsCME(
-      () => testForEach(jsonify(map), (map) => map.addAll({'b': 0}))));
-}
-
-void testType() {
-  Expect.isTrue(jsonify({}) is Map);
-  Expect.isTrue(jsonify({}) is Map<String, dynamic>);
-  Expect.isFalse(jsonify({}) is Map<int, dynamic>);
-}
-
-void testClear() {
-  Map map = jsonify({'a': 0});
-  map.clear();
-  Expect.equals(0, map.length);
-}
-
-void testListEntry() {
-  Map map = jsonify({
-    'a': [
-      7,
-      8,
-      {'b': 9}
-    ]
-  });
-  List list = map['a'];
-  Expect.equals(3, list.length);
-  Expect.equals(7, list[0]);
-  Expect.equals(8, list[1]);
-  Expect.equals(9, list[2]['b']);
-}
-
-void testMutation() {
-  Map map = jsonify({'a': 0});
-  Expect.listEquals(['a', 0], listEach(map));
-  map['a'] = 1;
-  Expect.listEquals(['a', 1], listEach(map));
-  map['a']++;
-  Expect.listEquals(['a', 2], listEach(map));
-}
diff --git a/tests/corelib/linked_hash_map_from_iterable_test.dart b/tests/corelib/linked_hash_map_from_iterable_test.dart
deleted file mode 100644
index 4b7f6b9..0000000
--- a/tests/corelib/linked_hash_map_from_iterable_test.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2011, 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";
-import 'dart:collection';
-
-main() {
-  defaultFunctionValuesTest();
-  defaultKeyFunctionTest();
-  defaultValueFunctionTest();
-  noDefaultValuesTest();
-  emptyIterableTest();
-  equalElementsTest();
-  genericTypeTest();
-}
-
-void defaultFunctionValuesTest() {
-  var map = new LinkedHashMap.fromIterable([1, 2, 3]);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(1, map[1]);
-  Expect.equals(2, map[2]);
-  Expect.equals(3, map[3]);
-}
-
-void defaultKeyFunctionTest() {
-  var map = new LinkedHashMap.fromIterable([1, 2, 3], value: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(2, map[1]);
-  Expect.equals(3, map[2]);
-  Expect.equals(4, map[3]);
-}
-
-void defaultValueFunctionTest() {
-  var map = new LinkedHashMap.fromIterable([1, 2, 3], key: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(1, map[2]);
-  Expect.equals(2, map[3]);
-  Expect.equals(3, map[4]);
-}
-
-void noDefaultValuesTest() {
-  var map = new LinkedHashMap.fromIterable([1, 2, 3],
-      key: (x) => x + 1, value: (x) => x - 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(0, map[2]);
-  Expect.equals(1, map[3]);
-  Expect.equals(2, map[4]);
-}
-
-void emptyIterableTest() {
-  var map = new LinkedHashMap.fromIterable([]);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(0, map.length);
-  Expect.equals(0, map.keys.length);
-  Expect.equals(0, map.values.length);
-}
-
-void equalElementsTest() {
-  var map = new LinkedHashMap.fromIterable([1, 2, 2], key: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(2, map.length);
-  Expect.equals(2, map.keys.length);
-  Expect.equals(2, map.values.length);
-
-  Expect.equals(1, map[2]);
-  Expect.equals(2, map[3]);
-}
-
-void genericTypeTest() {
-  var map = new LinkedHashMap<int, String>.fromIterable(<int>[1, 2, 3],
-      value: (x) => '$x');
-  Expect.isTrue(map is Map<int, String>);
-  Expect.isTrue(map is LinkedHashMap<int, String>);
-
-  map = new LinkedHashMap<String, String>.fromIterable(<int>[1, 2, 3],
-      key: (x) => '$x', value: (x) => '$x');
-  Expect.isTrue(map is Map<String, String>);
-  Expect.isTrue(map is LinkedHashMap<String, String>);
-
-  // Make sure it is not just LinkedHashMap<dynamic, dynamic>.
-  Expect.isFalse(map is LinkedHashMap<int, dynamic>);
-  Expect.isFalse(map is LinkedHashMap<dynamic, int>);
-}
diff --git a/tests/corelib/linked_hash_map_from_iterables_test.dart b/tests/corelib/linked_hash_map_from_iterables_test.dart
deleted file mode 100644
index a63b206..0000000
--- a/tests/corelib/linked_hash_map_from_iterables_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2011, 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";
-import 'dart:collection';
-
-main() {
-  positiveTest();
-  emptyMapTest();
-  fewerKeysIterableTest();
-  fewerValuesIterableTest();
-  equalElementsTest();
-  genericTypeTest();
-}
-
-void positiveTest() {
-  var map = new LinkedHashMap.fromIterables([1, 2, 3], ["one", "two", "three"]);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("two", map[2]);
-  Expect.equals("three", map[3]);
-}
-
-void emptyMapTest() {
-  var map = new LinkedHashMap.fromIterables([], []);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(0, map.length);
-  Expect.equals(0, map.keys.length);
-  Expect.equals(0, map.values.length);
-}
-
-void fewerValuesIterableTest() {
-  Expect.throws(() => new LinkedHashMap.fromIterables([1, 2], [0]));
-}
-
-void fewerKeysIterableTest() {
-  Expect.throws(() => new LinkedHashMap.fromIterables([1], [0, 2]));
-}
-
-void equalElementsTest() {
-  var map = new LinkedHashMap.fromIterables([1, 2, 2], ["one", "two", "three"]);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(2, map.length);
-  Expect.equals(2, map.keys.length);
-  Expect.equals(2, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("three", map[2]);
-}
-
-void genericTypeTest() {
-  var map = new LinkedHashMap<int, String>.fromIterables(
-      [1, 2, 3], ["one", "two", "three"]);
-  Expect.isTrue(map is Map<int, String>);
-  Expect.isTrue(map is LinkedHashMap<int, String>);
-
-  // Make sure it is not just LinkedHashMap<dynamic, dynamic>.
-  Expect.isFalse(map is LinkedHashMap<String, dynamic>);
-  Expect.isFalse(map is LinkedHashMap<dynamic, int>);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("two", map[2]);
-  Expect.equals("three", map[3]);
-}
diff --git a/tests/corelib/linked_hash_map_test.dart b/tests/corelib/linked_hash_map_test.dart
deleted file mode 100644
index 166bc28..0000000
--- a/tests/corelib/linked_hash_map_test.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for linked hash-maps.
-library linkedHashMap.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show LinkedHashMap;
-
-class LinkedHashMapTest {
-  static void testMain() {
-    Map map = new LinkedHashMap();
-    map["a"] = 1;
-    map["b"] = 2;
-    map["c"] = 3;
-    map["d"] = 4;
-    map["e"] = 5;
-
-    List<String> keys = new List<String>(5);
-    List<int> values = new List<int>(5);
-
-    int index;
-
-    clear() {
-      index = 0;
-      for (int i = 0; i < keys.length; i++) {
-        keys[i] = null;
-        values[i] = null;
-      }
-    }
-
-    verifyKeys(List<String> correctKeys) {
-      for (int i = 0; i < correctKeys.length; i++) {
-        Expect.equals(correctKeys[i], keys[i]);
-      }
-    }
-
-    verifyValues(List<int> correctValues) {
-      for (int i = 0; i < correctValues.length; i++) {
-        Expect.equals(correctValues[i], values[i]);
-      }
-    }
-
-    testForEachMap(Object key, Object value) {
-      Expect.equals(map[key], value);
-      keys[index] = key;
-      values[index] = value;
-      index++;
-    }
-
-    testForEachValue(Object v) {
-      values[index++] = v;
-    }
-
-    testForEachKey(Object v) {
-      keys[index++] = v;
-    }
-
-    final keysInOrder = const ["a", "b", "c", "d", "e"];
-    final valuesInOrder = const [1, 2, 3, 4, 5];
-
-    clear();
-    map.forEach(testForEachMap);
-    verifyKeys(keysInOrder);
-    verifyValues(valuesInOrder);
-
-    clear();
-    map.keys.forEach(testForEachKey);
-    verifyKeys(keysInOrder);
-
-    clear();
-    map.values.forEach(testForEachValue);
-    verifyValues(valuesInOrder);
-
-    // Remove and then insert.
-    map.remove("b");
-    map["b"] = 6;
-    final keysAfterBMove = const ["a", "c", "d", "e", "b"];
-    final valuesAfterBMove = const [1, 3, 4, 5, 6];
-
-    clear();
-    map.forEach(testForEachMap);
-    verifyKeys(keysAfterBMove);
-    verifyValues(valuesAfterBMove);
-
-    clear();
-    map.keys.forEach(testForEachKey);
-    verifyKeys(keysAfterBMove);
-
-    clear();
-    map.values.forEach(testForEachValue);
-    verifyValues(valuesAfterBMove);
-
-    // Update.
-    map["a"] = 0;
-    final valuesAfterAUpdate = const [0, 3, 4, 5, 6];
-
-    clear();
-    map.forEach(testForEachMap);
-    verifyKeys(keysAfterBMove);
-    verifyValues(valuesAfterAUpdate);
-
-    clear();
-    map.keys.forEach(testForEachKey);
-    verifyKeys(keysAfterBMove);
-
-    clear();
-    map.values.forEach(testForEachValue);
-    verifyValues(valuesAfterAUpdate);
-  }
-}
-
-main() {
-  LinkedHashMapTest.testMain();
-}
diff --git a/tests/corelib/list_as_map_test.dart b/tests/corelib/list_as_map_test.dart
deleted file mode 100644
index 43524a2..0000000
--- a/tests/corelib/list_as_map_test.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void testListMapCorrespondence(List list, Map map) {
-  Expect.equals(list.length, map.length);
-  for (int i = 0; i < list.length; i++) {
-    Expect.equals(list[i], map[i]);
-  }
-  Expect.isNull(map[list.length]);
-  Expect.isNull(map[-1]);
-
-  Iterable keys = map.keys;
-  Iterable values = map.values;
-  Expect.isFalse(keys is List);
-  Expect.isFalse(values is List);
-  Expect.equals(list.length, keys.length);
-  Expect.equals(list.length, values.length);
-  for (int i = 0; i < list.length; i++) {
-    Expect.equals(i, keys.elementAt(i));
-    Expect.equals(list[i], values.elementAt(i));
-  }
-
-  int forEachCount = 0;
-  map.forEach((key, value) {
-    Expect.equals(forEachCount, key);
-    Expect.equals(list[key], value);
-    forEachCount++;
-  });
-
-  for (int i = 0; i < list.length; i++) {
-    Expect.isTrue(map.containsKey(i));
-    Expect.isTrue(map.containsValue(list[i]));
-  }
-  Expect.isFalse(map.containsKey(-1));
-  Expect.isFalse(map.containsKey(list.length));
-
-  Expect.equals(list.length, forEachCount);
-
-  Expect.equals(list.isEmpty, map.isEmpty);
-}
-
-void testConstAsMap(List list) {
-  Map<int, dynamic> map = list.asMap();
-
-  testListMapCorrespondence(list, map);
-
-  Expect.throws(() => map[0] = 499, (e) => e is UnsupportedError);
-  Expect.throws(
-      () => map.putIfAbsent(0, () => 499), (e) => e is UnsupportedError);
-  Expect.throws(() => map.clear(), (e) => e is UnsupportedError);
-}
-
-void testFixedAsMap(List list) {
-  testConstAsMap(list);
-
-  Map<int, dynamic> map = list.asMap();
-
-  if (!list.isEmpty) {
-    list[0] = 499;
-    // Check again to make sure the map is backed by the list.
-    testListMapCorrespondence(list, map);
-  }
-}
-
-void testAsMap(List list) {
-  testFixedAsMap(list);
-
-  Map<int, dynamic> map = list.asMap();
-
-  Iterable keys = map.keys;
-  Iterable values = map.values;
-
-  list.add(42);
-  // Check again to make sure the map is backed by the list and that the
-  // length is not cached.
-  testListMapCorrespondence(list, map);
-  // Also check that the keys and values iterable from the map are backed by
-  // the list.
-  Expect.equals(list.length, keys.length);
-  Expect.equals(values.length, values.length);
-}
-
-main() {
-  testConstAsMap(const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
-  testAsMap([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
-  List list = new List(10);
-  for (int i = 0; i < 10; i++) list[i] = i + 1;
-  testFixedAsMap(list);
-
-  testConstAsMap(const []);
-  testAsMap([]);
-  testFixedAsMap(new List(0));
-}
diff --git a/tests/corelib/list_contains_argument_order_test.dart b/tests/corelib/list_contains_argument_order_test.dart
deleted file mode 100644
index 0a33772..0000000
--- a/tests/corelib/list_contains_argument_order_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  const A();
-  bool operator ==(Object other) {
-    return false;
-  }
-}
-
-class B {
-  bool operator ==(Object other) {
-    Expect.fail("Bad equality order.");
-  }
-}
-
-main() {
-  test(iterable) {
-    Expect.isFalse(iterable.contains(new B()));
-  }
-
-  var iterables = [
-    <A>[new A()],
-    new List<A>(1)..[0] = new A(),
-    new List<A>()..add(new A()),
-    const <A>[const A()],
-    new Set()..add(new A()),
-    (new Map()..[new A()] = 0).keys,
-    (new Map()..[0] = new A()).values
-  ];
-
-  for (var iterable in iterables) {
-    test(iterable);
-    test(iterable.map((x) => x));
-    test(iterable.take(1));
-  }
-}
diff --git a/tests/corelib/list_fill_range_test.dart b/tests/corelib/list_fill_range_test.dart
deleted file mode 100644
index cff66e9..0000000
--- a/tests/corelib/list_fill_range_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2013, 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";
-import "dart:collection";
-
-test(List list, int start, int end, [fillValue]) {
-  List copy = list.toList();
-  list.fillRange(start, end, fillValue);
-  Expect.equals(copy.length, list.length);
-  for (int i = 0; i < start; i++) {
-    Expect.equals(copy[i], list[i]);
-  }
-  for (int i = start; i < end; i++) {
-    Expect.equals(fillValue, list[i]);
-  }
-  for (int i = end; i < list.length; i++) {
-    Expect.equals(copy[i], list[i]);
-  }
-}
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-  get length => list.length;
-  set length(value) {
-    list.length = value;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) {
-    list[index] = val;
-  }
-
-  toString() => list.toString();
-}
-
-main() {
-  test([1, 2, 3], 0, 1);
-  test([1, 2, 3], 0, 1, 99);
-  test([1, 2, 3], 1, 1);
-  test([1, 2, 3], 1, 1, 499);
-  test([1, 2, 3], 3, 3);
-  test([1, 2, 3], 3, 3, 499);
-  test([1, 2, 3].toList(growable: false), 0, 1);
-  test([1, 2, 3].toList(growable: false), 0, 1, 99);
-  test([1, 2, 3].toList(growable: false), 1, 1);
-  test([1, 2, 3].toList(growable: false), 1, 1, 499);
-  test([1, 2, 3].toList(growable: false), 3, 3);
-  test([1, 2, 3].toList(growable: false), 3, 3, 499);
-  test(new MyList([1, 2, 3]), 0, 1);
-  test(new MyList([1, 2, 3]), 0, 1, 99);
-  test(new MyList([1, 2, 3]), 1, 1);
-  test(new MyList([1, 2, 3]), 1, 1, 499);
-  test(new MyList([1, 2, 3]), 3, 3);
-  test(new MyList([1, 2, 3]), 3, 3, 499);
-
-  expectRE(() => test([1, 2, 3], -1, 0));
-  expectRE(() => test([1, 2, 3], 2, 1));
-  expectRE(() => test([1, 2, 3], 0, -1));
-  expectRE(() => test([1, 2, 3], 1, 4));
-  expectRE(() => test(new MyList([1, 2, 3]), -1, 0));
-  expectRE(() => test(new MyList([1, 2, 3]), 2, 1));
-  expectRE(() => test(new MyList([1, 2, 3]), 0, -1));
-  expectRE(() => test(new MyList([1, 2, 3]), 1, 4));
-  expectUE(() => test(const [1, 2, 3], 2, 3));
-  expectUE(() => test(const [1, 2, 3], -1, 0));
-  expectUE(() => test(const [1, 2, 3], 2, 1));
-  expectUE(() => test(const [1, 2, 3], 0, -1));
-  expectUE(() => test(const [1, 2, 3], 1, 4));
-}
-
-void expectRE(Function f) {
-  Expect.throws(f, (e) => e is RangeError);
-}
-
-void expectUE(Function f) {
-  Expect.throws(f, (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/list_filled_type_argument_test.dart b/tests/corelib/list_filled_type_argument_test.dart
deleted file mode 100644
index 1c3aff4..0000000
--- a/tests/corelib/list_filled_type_argument_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  var a = new List<int>.filled(42, 42);
-  Expect.isTrue(a is List<int>);
-  Expect.isFalse(a is List<String>);
-
-  a = new List<int>.filled(42, 42, growable: true);
-  Expect.isTrue(a is List<int>);
-  Expect.isFalse(a is List<String>);
-}
diff --git a/tests/corelib/list_first_test.dart b/tests/corelib/list_first_test.dart
deleted file mode 100644
index 74be981..0000000
--- a/tests/corelib/list_first_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-void test(List list) {
-  if (list.isEmpty) {
-    Expect.throws(() => list.first, (e) => e is StateError);
-  } else {
-    Expect.equals(list[0], list.first);
-  }
-}
-
-main() {
-  test([1, 2, 3]);
-  test(const ["foo", "bar"]);
-  test([]);
-  test(const []);
-}
diff --git a/tests/corelib/list_fixed_test.dart b/tests/corelib/list_fixed_test.dart
deleted file mode 100644
index 5950ec3..0000000
--- a/tests/corelib/list_fixed_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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";
-
-main() {
-  var a;
-
-  a = new List(42);
-  Expect.equals(42, a.length);
-  Expect.throws(() => a.add(499), (e) => e is UnsupportedError);
-  Expect.equals(42, a.length);
-  for (int i = 0; i < 42; i++) {
-    Expect.equals(null, a[i]);
-  }
-  Expect.throws(() => a.clear(), (e) => e is UnsupportedError);
-  Expect.equals(42, a.length);
-
-  a = new List.filled(42, -2);
-  Expect.equals(42, a.length);
-  Expect.throws(() => a.add(499), (e) => e is UnsupportedError);
-  Expect.equals(42, a.length);
-  for (int i = 0; i < 42; i++) {
-    Expect.equals(-2, a[i]);
-  }
-  Expect.throws(() => a.clear(), (e) => e is UnsupportedError);
-  Expect.equals(42, a.length);
-}
diff --git a/tests/corelib/list_for_each_test.dart b/tests/corelib/list_for_each_test.dart
deleted file mode 100644
index b59a2d7..0000000
--- a/tests/corelib/list_for_each_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2013, 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";
-import "dart:collection";
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-  get length => list.length;
-  set length(value) {
-    list.length = value;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) {
-    list[index] = val;
-  }
-
-  toString() => list.toString();
-}
-
-void testWithoutModification(List list) {
-  var seen = [];
-  list.forEach(seen.add);
-
-  Expect.listEquals(list, seen);
-}
-
-void testWithModification(List list) {
-  if (list.isEmpty) return;
-  Expect.throws(() => list.forEach((_) => list.add(0)),
-      (e) => e is ConcurrentModificationError);
-}
-
-main() {
-  List fixedLengthList = new List(10);
-  for (int i = 0; i < 10; i++) fixedLengthList[i] = i + 1;
-
-  List growableList = new List();
-  growableList.length = 10;
-  for (int i = 0; i < 10; i++) growableList[i] = i + 1;
-
-  var growableLists = [
-    [],
-    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
-    new MyList([1, 2, 3, 4, 5]),
-    growableList,
-  ];
-  var fixedLengthLists = [
-    const [],
-    fixedLengthList,
-    const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
-    new MyList(const [1, 2]),
-  ];
-
-  for (var list in growableLists) {
-    print(list);
-    testWithoutModification(list);
-    testWithModification(list);
-  }
-
-  for (var list in fixedLengthLists) {
-    testWithoutModification(list);
-  }
-}
diff --git a/tests/corelib/list_get_range_test.dart b/tests/corelib/list_get_range_test.dart
deleted file mode 100644
index 5aafd76..0000000
--- a/tests/corelib/list_get_range_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2011, 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";
-
-testGetRange(list, start, end, bool isModifiable) {
-  expectRE(() {
-    list.getRange(-1, 0);
-  });
-  expectRE(() {
-    list.getRange(0, -1);
-  });
-  expectRE(() {
-    list.getRange(1, 0);
-  });
-  expectRE(() {
-    list.getRange(0, list.length + 1);
-  });
-  expectRE(() {
-    list.getRange(list.length + 1, list.length + 1);
-  });
-  Iterable iterable = list.getRange(start, end);
-  Expect.isFalse(iterable is List);
-  if (start == end) {
-    Expect.isTrue(iterable.isEmpty);
-    return;
-  }
-
-  var iterator = iterable.iterator;
-  for (int i = start; i < end; i++) {
-    Expect.isTrue(iterator.moveNext());
-    Expect.equals(iterator.current, list[i]);
-  }
-  Expect.isFalse(iterator.moveNext());
-
-  if (isModifiable) {
-    for (int i = 0; i < list.length; i++) {
-      list[i]++;
-    }
-
-    iterator = iterable.iterator;
-    for (int i = start; i < end; i++) {
-      Expect.isTrue(iterator.moveNext());
-      Expect.equals(iterator.current, list[i]);
-    }
-  }
-}
-
-main() {
-  testGetRange([1, 2], 0, 1, true);
-  testGetRange([], 0, 0, true);
-  testGetRange([1, 2, 3], 0, 0, true);
-  testGetRange([1, 2, 3], 1, 3, true);
-  testGetRange(const [1, 2], 0, 1, false);
-  testGetRange(const [], 0, 0, false);
-  testGetRange(const [1, 2, 3], 0, 0, false);
-  testGetRange(const [1, 2, 3], 1, 3, false);
-  testGetRange("abcd".codeUnits, 0, 1, false);
-  testGetRange("abcd".codeUnits, 0, 0, false);
-  testGetRange("abcd".codeUnits, 1, 3, false);
-
-  expectRE(() => [1].getRange(-1, 1));
-  expectRE(() => [3].getRange(0, -1));
-  expectRE(() => [4].getRange(1, 0));
-
-  var list = [1, 2, 3, 4];
-  var iterable = list.getRange(1, 3);
-  Expect.equals(2, iterable.first);
-  Expect.equals(3, iterable.last);
-  list.length = 1;
-  Expect.isTrue(iterable.isEmpty);
-  list.add(99);
-  Expect.equals(99, iterable.single);
-  list.add(499);
-  Expect.equals(499, iterable.last);
-  Expect.equals(2, iterable.length);
-}
-
-void expectRE(Function f) {
-  Expect.throws(f, (e) => e is RangeError);
-}
diff --git a/tests/corelib/list_growable_test.dart b/tests/corelib/list_growable_test.dart
deleted file mode 100644
index 7ce723e..0000000
--- a/tests/corelib/list_growable_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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";
-
-main() {
-  var a;
-  a = new List();
-  a.add(499);
-  Expect.equals(1, a.length);
-  Expect.equals(499, a[0]);
-  a.clear();
-  Expect.equals(0, a.length);
-  Expect.throws(() => a[0], (e) => e is RangeError);
-
-  a = new List(42).toList();
-  Expect.equals(42, a.length);
-  a.add(499);
-  Expect.equals(43, a.length);
-  Expect.equals(499, a[42]);
-  Expect.equals(null, a[23]);
-  a.clear();
-  Expect.equals(0, a.length);
-  Expect.throws(() => a[0], (e) => e is RangeError);
-
-  a = new List<int>(42).toList();
-  Expect.equals(42, a.length);
-  a.add(499);
-  Expect.equals(43, a.length);
-  Expect.equals(499, a[42]);
-  for (int i = 0; i < 42; i++) {
-    Expect.equals(null, a[i]);
-  }
-  a.clear();
-  Expect.equals(0, a.length);
-  Expect.throws(() => a[0], (e) => e is RangeError);
-}
diff --git a/tests/corelib/list_index_of2_test.dart b/tests/corelib/list_index_of2_test.dart
deleted file mode 100644
index abd89a5..0000000
--- a/tests/corelib/list_index_of2_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-void test(List<B> list) {
-  // Test that the list accepts a different type for indexOf.
-  //   List<B>.indexOf(A)
-  Expect.equals(-1, list.indexOf(const A()));
-  Expect.equals(-1, list.lastIndexOf(const A()));
-}
-
-main() {
-  var list = new List<B>(1);
-  list[0] = const B();
-  test(list);
-  var list2 = new List<B>();
-  list2.add(const B());
-  test(list2);
-  test(<B>[const B()]);
-  test(const <B>[]);
-  test(<B>[const B()].toList());
-}
diff --git a/tests/corelib/list_index_of_test.dart b/tests/corelib/list_index_of_test.dart
deleted file mode 100644
index ebb2731..0000000
--- a/tests/corelib/list_index_of_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  test(new List<int>(5));
-  var l = new List<int>();
-  l.length = 5;
-  test(l);
-}
-
-void test(List<int> list) {
-  list[0] = 1;
-  list[1] = 2;
-  list[2] = 3;
-  list[3] = 4;
-  list[4] = 1;
-
-  Expect.equals(3, list.indexOf(4, 0));
-  Expect.equals(0, list.indexOf(1, 0));
-  Expect.equals(4, list.lastIndexOf(1, list.length - 1));
-
-  Expect.equals(4, list.indexOf(1, 1));
-  Expect.equals(-1, list.lastIndexOf(4, 2));
-
-  Expect.equals(3, list.indexOf(4, 2));
-  Expect.equals(3, list.indexOf(4, -5));
-  Expect.equals(-1, list.indexOf(4, 50));
-
-  Expect.equals(-1, list.lastIndexOf(4, 2));
-  Expect.equals(-1, list.lastIndexOf(4, -5));
-  Expect.equals(3, list.lastIndexOf(4, 50));
-}
diff --git a/tests/corelib/list_insert_all_test.dart b/tests/corelib/list_insert_all_test.dart
deleted file mode 100644
index 63d3892..0000000
--- a/tests/corelib/list_insert_all_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2013, 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";
-import "dart:collection";
-
-test(List list, int index, Iterable iterable) {
-  List copy = list.toList();
-  list.insertAll(index, iterable);
-  List iterableList = iterable.toList();
-  Expect.equals(copy.length + iterableList.length, list.length);
-  for (int i = 0; i < index; i++) {
-    Expect.equals(copy[i], list[i]);
-  }
-  for (int i = 0; i < iterableList.length; i++) {
-    Expect.equals(iterableList[i], list[i + index]);
-  }
-  for (int i = index + iterableList.length; i < copy.length; i++) {
-    Expect.equals(copy[i], list[i + iterableList.length]);
-  }
-}
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-  get length => list.length;
-  set length(value) {
-    list.length = value;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) {
-    list[index] = val;
-  }
-
-  toString() => list.toString();
-}
-
-main() {
-  test([1, 2, 3], 0, [4, 5]);
-  test([1, 2, 3], 1, [4, 5]);
-  test([1, 2, 3], 2, [4, 5]);
-  test([1, 2, 3], 3, [4, 5]);
-  test([1, 2, 3], 2, [4]);
-  test([1, 2, 3], 3, []);
-  test([1, 2, 3], 0, [4, 5].map((x) => x));
-  test([1, 2, 3], 1, [4, 5].map((x) => x));
-  test([1, 2, 3], 2, [4, 5].map((x) => x));
-  test([1, 2, 3], 3, [4, 5].map((x) => x));
-  test([1, 2, 3], 2, [4].map((x) => x));
-  test([1, 2, 3], 3, [].map((x) => x));
-  test([1, 2, 3], 0, const [4, 5]);
-  test([1, 2, 3], 1, const [4, 5]);
-  test([1, 2, 3], 2, const [4, 5]);
-  test([1, 2, 3], 3, const [4, 5]);
-  test([1, 2, 3], 2, const [4]);
-  test([1, 2, 3], 3, const []);
-  test([1, 2, 3], 0, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 1, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 2, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 3, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 2, new Iterable.generate(1, (x) => x + 4));
-  test([1, 2, 3], 3, new Iterable.generate(0, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 0, [4, 5]);
-  test(new MyList([1, 2, 3]), 1, [4, 5]);
-  test(new MyList([1, 2, 3]), 2, [4]);
-  test(new MyList([1, 2, 3]), 3, []);
-  test(new MyList([1, 2, 3]), 2, [4, 5]);
-  test(new MyList([1, 2, 3]), 3, [4, 5]);
-  test(new MyList([1, 2, 3]), 0, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 1, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 2, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 3, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 2, [4].map((x) => x));
-  test(new MyList([1, 2, 3]), 3, [].map((x) => x));
-
-  expectRE(() => test([1, 2, 3], -1, [4, 5]));
-  expectUE(() => test([1, 2, 3].toList(growable: false), -1, [4, 5]));
-  expectRE(() => test(new MyList([1, 2, 3]), -1, [4, 5]));
-  expectUE(() => test([1, 2, 3].toList(growable: false), 0, [4, 5]));
-}
-
-void expectRE(Function f) {
-  Expect.throws(f, (e) => e is RangeError);
-}
-
-void expectUE(Function f) {
-  Expect.throws(f, (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/list_insert_test.dart b/tests/corelib/list_insert_test.dart
deleted file mode 100644
index 1efaafb..0000000
--- a/tests/corelib/list_insert_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'dart:collection';
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-
-  get length => list.length;
-  set length(val) {
-    list.length = val;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) => list[index] = val;
-
-  String toString() => "[" + join(", ") + "]";
-}
-
-// l1 must be a modifiable list with 5 elements from 0 to 4.
-void testModifiableList(l1) {
-  bool checkedMode = false;
-  assert(checkedMode = true);
-
-  // Index must be integer and in range.
-  Expect.throws(() {
-    l1.insert(-1, 5);
-  }, (e) => e is RangeError, "negative");
-  Expect.throws(() {
-    l1.insert(6, 5);
-  }, (e) => e is RangeError, "too large");
-  Expect.throws(() {
-    l1.insert(null, 5);
-  });
-  Expect.throws(() {
-    l1.insert("1", 5);
-  });
-  Expect.throws(() {
-    l1.insert(1.5, 5);
-  });
-
-  l1.insert(5, 5);
-  Expect.equals(6, l1.length);
-  Expect.equals(5, l1[5]);
-  Expect.equals("[0, 1, 2, 3, 4, 5]", l1.toString());
-
-  l1.insert(0, -1);
-  Expect.equals(7, l1.length);
-  Expect.equals(-1, l1[0]);
-  Expect.equals("[-1, 0, 1, 2, 3, 4, 5]", l1.toString());
-}
-
-void main() {
-  // Normal modifiable list.
-  testModifiableList([0, 1, 2, 3, 4]);
-  testModifiableList(new MyList([0, 1, 2, 3, 4]));
-
-  // Fixed size list.
-  var l2 = new List(5);
-  for (var i = 0; i < 5; i++) l2[i] = i;
-  Expect.throws(() {
-    l2.insert(2, 5);
-  }, (e) => e is UnsupportedError, "fixed-length");
-
-  // Unmodifiable list.
-  var l3 = const [0, 1, 2, 3, 4];
-  Expect.throws(() {
-    l3.insert(2, 5);
-  }, (e) => e is UnsupportedError, "unmodifiable");
-
-  // Empty list is not special.
-  var l4 = [];
-  l4.insert(0, 499);
-  Expect.equals(1, l4.length);
-  Expect.equals(499, l4[0]);
-}
diff --git a/tests/corelib/list_iterators_test.dart b/tests/corelib/list_iterators_test.dart
deleted file mode 100644
index 092082e..0000000
--- a/tests/corelib/list_iterators_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class ListIteratorsTest {
-  static void checkListIterator(List a) {
-    Iterator it = a.iterator;
-    Expect.isNull(it.current);
-    for (int i = 0; i < a.length; i++) {
-      Expect.isTrue(it.moveNext());
-      var elem = it.current;
-      Expect.equals(a[i], elem);
-    }
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-
-  static testMain() {
-    checkListIterator([]);
-    checkListIterator([1, 2]);
-    checkListIterator(new List(0));
-    checkListIterator(new List(10));
-    checkListIterator(new List());
-    List g = new List();
-    g.addAll([1, 2, 3]);
-    checkListIterator(g);
-
-    // This is mostly undefined behavior.
-    Iterator it = g.iterator;
-    Expect.isTrue(it.moveNext());
-    Expect.equals(1, it.current);
-    Expect.isTrue(it.moveNext());
-    g[1] = 49;
-    // The iterator keeps the last value.
-    Expect.equals(2, it.current);
-    Expect.isTrue(it.moveNext());
-    g.removeLast();
-    // The iterator keeps the last value.
-    Expect.equals(3, it.current);
-    Expect.throws(it.moveNext, (e) => e is ConcurrentModificationError);
-    // No progress when throwing.
-    Expect.equals(3, it.current);
-  }
-}
-
-main() {
-  ListIteratorsTest.testMain();
-}
diff --git a/tests/corelib/list_last_test.dart b/tests/corelib/list_last_test.dart
deleted file mode 100644
index 0733335..0000000
--- a/tests/corelib/list_last_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-void test(List list) {
-  if (list.isEmpty) {
-    Expect.throws(() => list.last, (e) => e is StateError);
-  } else {
-    Expect.equals(list[list.length - 1], list.last);
-  }
-}
-
-main() {
-  test([1, 2, 3]);
-  test(const ["foo", "bar"]);
-  test([]);
-  test(const []);
-}
diff --git a/tests/corelib/list_literal_is_growable_test.dart b/tests/corelib/list_literal_is_growable_test.dart
deleted file mode 100644
index 061a72d..0000000
--- a/tests/corelib/list_literal_is_growable_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var l = [];
-  l.add(1);
-  Expect.equals(1, l.length);
-  Expect.equals(1, l[0]);
-}
diff --git a/tests/corelib/list_literal_test.dart b/tests/corelib/list_literal_test.dart
deleted file mode 100644
index abc38c1..0000000
--- a/tests/corelib/list_literal_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test that a list literal is expandable and modifiable.
-
-class ListLiteralTest {
-  static void testMain() {
-    var list = [1, 2, 3];
-    Expect.equals(3, list.length);
-    list.add(4);
-    Expect.equals(4, list.length);
-    list.addAll([5, 6]);
-    Expect.equals(6, list.length);
-    list[0] = 0;
-    Expect.equals(0, list[0]);
-  }
-}
-
-main() {
-  ListLiteralTest.testMain();
-}
diff --git a/tests/corelib/list_map_test.dart b/tests/corelib/list_map_test.dart
deleted file mode 100644
index c56b254..0000000
--- a/tests/corelib/list_map_test.dart
+++ /dev/null
@@ -1,164 +0,0 @@
-// 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";
-
-main() {
-  testOperations();
-}
-
-class ThrowMarker {
-  const ThrowMarker();
-  String toString() => "<<THROWS>>";
-}
-
-void testOperations() {
-  // Comparison lists.
-  List l = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
-  List r = const [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
-  // Function that reverses l and r lists when used to map.
-  int rev(x) => 11 - x;
-  // A base list that starts out like l, but isn't const.
-  List base = l.map((x) => x).toList();
-
-  Iterable reversed = l.map(rev);
-
-  Expect.listEquals(r, l.map(rev).toList());
-  Expect.listEquals(l, l.map(rev).map(rev).toList());
-  for (int i = 0; i < r.length; i++) {
-    Expect.equals(r[i], reversed.elementAt(i));
-  }
-  Expect.equals(4, base.indexOf(5));
-  Expect.equals(5, reversed.toList().indexOf(5));
-
-  // Reversed followed by combinations of skip and take.
-  List subr = [8, 7, 6, 5, 4, 3];
-  Expect.listEquals(subr, reversed.skip(2).take(6).toList());
-  Expect.listEquals(subr, reversed.take(8).skip(2).toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.skip(2).take(6).toList().reversed.toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.take(8).skip(2).toList().reversed.toList());
-  Expect.listEquals(subr,
-      reversed.take(8).toList().reversed.take(6).toList().reversed.toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.take(8).toList().reversed.take(6).toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.skip(2).toList().reversed.skip(2).toList());
-  Expect.listEquals(subr,
-      reversed.skip(2).toList().reversed.skip(2).toList().reversed.toList());
-
-  void testList(List list) {
-    var throws = const ThrowMarker();
-    List mappedList = new List(list.length);
-    for (int i = 0; i < list.length; i++) {
-      mappedList[i] = rev(list[i]);
-    }
-    Iterable reversed = list.map(rev);
-
-    void testEquals(v1, v2, path) {
-      if (v1 is Iterable) {
-        Iterator i1 = v1.iterator;
-        Iterator i2 = v2.iterator;
-        int index = 0;
-        while (i1.moveNext()) {
-          Expect.isTrue(i2.moveNext(),
-              "Too few actual values. Expected[$index] == ${i1.current}");
-          testEquals(i1.current, i2.current, "$path[$index]");
-          index++;
-        }
-        if (i2.moveNext()) {
-          Expect
-              .fail("Too many actual values. Actual[$index] == ${i2.current}");
-        }
-      } else {
-        Expect.equals(v1, v2, path);
-      }
-    }
-
-    void testOp(operation(Iterable mappedList), name) {
-      var expect;
-      try {
-        expect = operation(mappedList);
-      } catch (e) {
-        expect = throws;
-      }
-      var actual;
-      try {
-        actual = operation(reversed);
-      } catch (e) {
-        actual = throws;
-      }
-      testEquals(expect, actual, "$name: $list");
-    }
-
-    testOp((i) => i.first, "first");
-    testOp((i) => i.last, "last");
-    testOp((i) => i.single, "single");
-    testOp((i) => i.firstWhere((n) => false), "firstWhere<false");
-    testOp((i) => i.firstWhere((n) => n < 10), "firstWhere<10");
-    testOp((i) => i.firstWhere((n) => n < 5), "firstWhere<5");
-    testOp((i) => i.firstWhere((n) => true), "firstWhere<true");
-    testOp((i) => i.lastWhere((n) => false), "lastWhere<false");
-    testOp((i) => i.lastWhere((n) => n < 5), "lastWhere<5");
-    testOp((i) => i.lastWhere((n) => n < 10), "lastWhere<10");
-    testOp((i) => i.lastWhere((n) => true), "lastWhere<true");
-    testOp((i) => i.singleWhere((n) => false), "singleWhere<false");
-    testOp((i) => i.singleWhere((n) => n < 5), "singelWhere<5");
-    testOp((i) => i.singleWhere((n) => n < 10), "singelWhere<10");
-    testOp((i) => i.singleWhere((n) => true), "singleWhere<true");
-    testOp((i) => i.contains(5), "contains(5)");
-    testOp((i) => i.contains(10), "contains(10)");
-    testOp((i) => i.any((n) => n < 5), "any<5");
-    testOp((i) => i.any((n) => n < 10), "any<10");
-    testOp((i) => i.every((n) => n < 5), "every<5");
-    testOp((i) => i.every((n) => n < 10), "every<10");
-    testOp((i) => i.reduce((a, b) => a + b), "reduce-sum");
-    testOp((i) => i.fold(0, (a, b) => a + b), "fold-sum");
-    testOp((i) => i.join("-"), "join-");
-    testOp((i) => i.join(""), "join");
-    testOp((i) => i.join(), "join-null");
-    testOp((i) => i.map((n) => n * 2), "map*2");
-    testOp((i) => i.where((n) => n < 5), "where<5");
-    testOp((i) => i.where((n) => n < 10), "where<10");
-    testOp((i) => i.expand((n) => []), "expand[]");
-    testOp((i) => i.expand((n) => [n]), "expand[n]");
-    testOp((i) => i.expand((n) => [n, n]), "expand[n, n]");
-    testOp((i) => i.take(0), "take(0)");
-    testOp((i) => i.take(5), "take(5)");
-    testOp((i) => i.take(10), "take(10)");
-    testOp((i) => i.take(15), "take(15)");
-    testOp((i) => i.skip(0), "skip(0)");
-    testOp((i) => i.skip(5), "skip(5)");
-    testOp((i) => i.skip(10), "skip(10)");
-    testOp((i) => i.skip(15), "skip(15)");
-    testOp((i) => i.takeWhile((n) => false), "takeWhile(t)");
-    testOp((i) => i.takeWhile((n) => n < 5), "takeWhile(n<5)");
-    testOp((i) => i.takeWhile((n) => n > 5), "takeWhile(n>5)");
-    testOp((i) => i.takeWhile((n) => true), "takeWhile(f)");
-    testOp((i) => i.skipWhile((n) => false), "skipWhile(t)");
-    testOp((i) => i.skipWhile((n) => n < 5), "skipWhile(n<5)");
-    testOp((i) => i.skipWhile((n) => n > 5), "skipWhile(n>5)");
-    testOp((i) => i.skipWhile((n) => true), "skipWhile(f)");
-  }
-
-  // Combinations of lists with 0, 1 and more elements.
-  testList([]);
-  testList([0]);
-  testList([10]);
-  testList([0, 1]);
-  testList([0, 10]);
-  testList([10, 11]);
-  testList([0, 5, 10]);
-  testList([10, 5, 0]);
-  testList([0, 1, 2, 3]);
-  testList([3, 4, 5, 6]);
-  testList([10, 11, 12, 13]);
-  testList(l);
-  testList(r);
-  testList(base);
-
-  // Reverse const list.
-  Expect.listEquals(r, l.map(rev).toList());
-}
diff --git a/tests/corelib/list_remove_range_test.dart b/tests/corelib/list_remove_range_test.dart
deleted file mode 100644
index 17d138c..0000000
--- a/tests/corelib/list_remove_range_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var list = [];
-  list.removeRange(0, 0);
-  Expect.equals(0, list.length);
-  expectIOORE(() {
-    list.removeRange(0, 1);
-  });
-
-  list.add(1);
-  list.removeRange(0, 0);
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-
-  expectIOORE(() {
-    list.removeRange(0, 2);
-  });
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-
-  list.removeRange(0, 1);
-  Expect.equals(0, list.length);
-
-  list.addAll([3, 4, 5, 6]);
-  Expect.equals(4, list.length);
-  list.removeRange(0, 4);
-  Expect.listEquals([], list);
-
-  list.addAll([3, 4, 5, 6]);
-  list.removeRange(2, 4);
-  Expect.listEquals([3, 4], list);
-  list.addAll([5, 6]);
-
-  expectIOORE(() {
-    list.removeRange(4, 5);
-  });
-  Expect.listEquals([3, 4, 5, 6], list);
-
-  list.removeRange(1, 3);
-  Expect.listEquals([3, 6], list);
-
-  testNegativeIndices();
-}
-
-void expectIOORE(Function f) {
-  Expect.throws(f, (e) => e is RangeError);
-}
-
-void testNegativeIndices() {
-  var list = [1, 2];
-  expectIOORE(() {
-    list.removeRange(-1, 1);
-  });
-  Expect.listEquals([1, 2], list);
-
-  // A negative length throws an ArgumentError.
-  expectIOORE(() {
-    list.removeRange(0, -1);
-  });
-  Expect.listEquals([1, 2], list);
-
-  expectIOORE(() {
-    list.removeRange(-1, -1);
-  });
-  Expect.listEquals([1, 2], list);
-
-  expectIOORE(() {
-    list.removeRange(-1, 0);
-  });
-
-  expectIOORE(() {
-    list.removeRange(4, 4);
-  });
-  Expect.listEquals([1, 2], list);
-}
diff --git a/tests/corelib/list_removeat_test.dart b/tests/corelib/list_removeat_test.dart
deleted file mode 100644
index 43bf2eb..0000000
--- a/tests/corelib/list_removeat_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2011, 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";
-import 'dart:collection';
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-
-  get length => list.length;
-  set length(val) {
-    list.length = val;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) => list[index] = val;
-
-  String toString() => "[" + join(", ") + "]";
-}
-
-// l1 must be a modifiable list with 5 elements from 0 to 4.
-void testModifiableList(l1) {
-  // Index must be integer and in range.
-  Expect.throws(() {
-    l1.removeAt(-1);
-  }, (e) => e is RangeError, "negative");
-  Expect.throws(() {
-    l1.removeAt(5);
-  }, (e) => e is RangeError, "too large");
-  Expect.throws(() {
-    l1.removeAt(null);
-  }, (e) => e is ArgumentError, "too large");
-  Expect.throws(() {
-    l1.removeAt("1");
-  }, (e) => (typeAssertionsEnabled ? e is TypeError : e is ArgumentError),
-      "string");
-  Expect.throws(() {
-    l1.removeAt(1.5);
-  }, (e) => (typeAssertionsEnabled ? e is TypeError : e is ArgumentError),
-      "double");
-
-  Expect.equals(2, l1.removeAt(2), "l1-remove2");
-  Expect.equals(1, l1[1], "l1-1[1]");
-
-  Expect.equals(3, l1[2], "l1-1[2]");
-  Expect.equals(4, l1[3], "l1-1[3]");
-  Expect.equals(4, l1.length, "length-1");
-
-  Expect.equals(0, l1.removeAt(0), "l1-remove0");
-  Expect.equals(1, l1[0], "l1-2[0]");
-  Expect.equals(3, l1[1], "l1-2[1]");
-  Expect.equals(4, l1[2], "l1-2[2]");
-  Expect.equals(3, l1.length, "length-2");
-}
-
-void main() {
-  // Normal modifiable list.
-  testModifiableList([0, 1, 2, 3, 4]);
-  testModifiableList(new MyList([0, 1, 2, 3, 4]));
-
-  // Fixed size list.
-  var l2 = new List(5);
-  for (var i = 0; i < 5; i++) l2[i] = i;
-  Expect.throws(() {
-    l2.removeAt(2);
-  }, (e) => e is UnsupportedError, "fixed-length");
-
-  // Unmodifiable list.
-  var l3 = const [0, 1, 2, 3, 4];
-  Expect.throws(() {
-    l3.removeAt(2);
-  }, (e) => e is UnsupportedError, "unmodifiable");
-
-  // Empty list is not special.
-  var l4 = [];
-  Expect.throws(() {
-    l4.removeAt(0);
-  }, (e) => e is RangeError, "empty");
-}
diff --git a/tests/corelib/list_replace_range_test.dart b/tests/corelib/list_replace_range_test.dart
deleted file mode 100644
index 03008c1..0000000
--- a/tests/corelib/list_replace_range_test.dart
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright (c) 2013, 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";
-import "dart:collection";
-
-test(List list, int start, int end, Iterable iterable) {
-  List copy = list.toList();
-  list.replaceRange(start, end, iterable);
-  List iterableList = iterable.toList();
-  Expect.equals(copy.length + iterableList.length - (end - start), list.length);
-  for (int i = 0; i < start; i++) {
-    Expect.equals(copy[i], list[i]);
-  }
-  for (int i = 0; i < iterableList.length; i++) {
-    Expect.equals(iterableList[i], list[i + start]);
-  }
-  int removedLength = end - start;
-  for (int i = end; i < copy.length; i++) {
-    Expect.equals(copy[i], list[i + iterableList.length - removedLength]);
-  }
-}
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-  get length => list.length;
-  set length(value) {
-    list.length = value;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) {
-    list[index] = val;
-  }
-
-  toString() => list.toString();
-}
-
-main() {
-  test([1, 2, 3], 0, 1, [4, 5]);
-  test([1, 2, 3], 1, 1, [4, 5]);
-  test([1, 2, 3], 2, 3, [4, 5]);
-  test([1, 2, 3], 3, 3, [4, 5]);
-  test([1, 2, 3], 0, 3, [4, 5]);
-  test([1, 2, 3], 2, 3, [4]);
-  test([1, 2, 3], 0, 3, []);
-  test([1, 2, 3], 0, 1, [4, 5].map((x) => x));
-  test([1, 2, 3], 1, 1, [4, 5].map((x) => x));
-  test([1, 2, 3], 2, 3, [4, 5].map((x) => x));
-  test([1, 2, 3], 3, 3, [4, 5].map((x) => x));
-  test([1, 2, 3], 0, 3, [4, 5].map((x) => x));
-  test([1, 2, 3], 2, 3, [4].map((x) => x));
-  test([1, 2, 3], 0, 3, [].map((x) => x));
-  test([1, 2, 3], 0, 1, const [4, 5]);
-  test([1, 2, 3], 1, 1, const [4, 5]);
-  test([1, 2, 3], 2, 3, const [4, 5]);
-  test([1, 2, 3], 3, 3, const [4, 5]);
-  test([1, 2, 3], 0, 3, const [4, 5]);
-  test([1, 2, 3], 2, 3, const [4]);
-  test([1, 2, 3], 0, 3, const []);
-  test([1, 2, 3], 0, 1, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 1, 1, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 2, 3, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 3, 3, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 0, 3, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 2, 3, new Iterable.generate(2, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 0, 1, [4, 5]);
-  test(new MyList([1, 2, 3]), 1, 1, [4, 5]);
-  test(new MyList([1, 2, 3]), 2, 3, [4, 5]);
-  test(new MyList([1, 2, 3]), 3, 3, [4, 5]);
-  test(new MyList([1, 2, 3]), 0, 3, [4, 5]);
-  test(new MyList([1, 2, 3]), 2, 3, [4]);
-  test(new MyList([1, 2, 3]), 0, 3, []);
-  test(new MyList([1, 2, 3]), 0, 1, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 1, 1, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 2, 3, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 3, 3, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 0, 3, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 2, 3, [4].map((x) => x));
-  test(new MyList([1, 2, 3]), 0, 3, [].map((x) => x));
-  test(new MyList([1, 2, 3]), 0, 1, const [4, 5]);
-  test(new MyList([1, 2, 3]), 1, 1, const [4, 5]);
-  test(new MyList([1, 2, 3]), 2, 3, const [4, 5]);
-  test(new MyList([1, 2, 3]), 3, 3, const [4, 5]);
-  test(new MyList([1, 2, 3]), 0, 3, const [4, 5]);
-  test(new MyList([1, 2, 3]), 2, 3, const [4]);
-  test(new MyList([1, 2, 3]), 0, 3, const []);
-  test(new MyList([1, 2, 3]), 0, 1, new Iterable.generate(2, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 1, 1, new Iterable.generate(2, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 2, 3, new Iterable.generate(2, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 3, 3, new Iterable.generate(2, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 0, 3, new Iterable.generate(2, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 2, 3, new Iterable.generate(2, (x) => x + 4));
-
-  expectRE(() => test([1, 2, 3], -1, 0, []));
-  expectRE(() => test([1, 2, 3], 2, 1, []));
-  expectRE(() => test([1, 2, 3], 0, -1, []));
-  expectRE(() => test([1, 2, 3], 1, 4, []));
-  expectRE(() => test(new MyList([1, 2, 3]), -1, 0, []));
-  expectRE(() => test(new MyList([1, 2, 3]), 2, 1, []));
-  expectRE(() => test(new MyList([1, 2, 3]), 0, -1, []));
-  expectRE(() => test(new MyList([1, 2, 3]), 1, 4, []));
-  expectUE(() => test([1, 2, 3].toList(growable: false), 2, 3, []));
-  expectUE(() => test([1, 2, 3].toList(growable: false), -1, 0, []));
-  expectUE(() => test([1, 2, 3].toList(growable: false), 2, 1, []));
-  expectUE(() => test([1, 2, 3].toList(growable: false), 0, -1, []));
-  expectUE(() => test([1, 2, 3].toList(growable: false), 1, 4, []));
-  expectUE(() => test(const [1, 2, 3], 2, 3, []));
-  expectUE(() => test(const [1, 2, 3], -1, 0, []));
-  expectUE(() => test(const [1, 2, 3], 2, 1, []));
-  expectUE(() => test(const [1, 2, 3], 0, -1, []));
-  expectUE(() => test(const [1, 2, 3], 1, 4, []));
-}
-
-void expectRE(Function f) {
-  Expect.throws(f, (e) => e is RangeError);
-}
-
-void expectUE(Function f) {
-  Expect.throws(f, (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/list_reversed_test.dart b/tests/corelib/list_reversed_test.dart
deleted file mode 100644
index 382d7fe..0000000
--- a/tests/corelib/list_reversed_test.dart
+++ /dev/null
@@ -1,136 +0,0 @@
-// 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";
-
-main() {
-  testOperations();
-}
-
-class ThrowMarker {
-  const ThrowMarker();
-  String toString() => "<<THROWS>>";
-}
-
-void testOperations() {
-  // Comparison lists.
-  List l = const [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
-  List r = const [10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
-  // A base list that starts out like l.
-  List base = l.toList();
-  // A lazy reverse of base.
-  Iterable reversed = base.reversed;
-
-  Expect.listEquals(r, reversed.toList());
-  Expect.listEquals(l, reversed.toList().reversed.toList());
-  for (int i = 0; i < r.length; i++) {
-    Expect.equals(r[i], reversed.elementAt(i));
-  }
-  Expect.equals(4, base.indexOf(5));
-  Expect.equals(5, reversed.toList().indexOf(5));
-
-  // Reversed followed by combinations of skip and take.
-  List subr = [8, 7, 6, 5, 4, 3];
-  Expect.listEquals(subr, reversed.skip(2).take(6).toList());
-  Expect.listEquals(subr, reversed.take(8).skip(2).toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.skip(2).take(6).toList().reversed.toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.take(8).skip(2).toList().reversed.toList());
-  Expect.listEquals(subr,
-      reversed.take(8).toList().reversed.take(6).toList().reversed.toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.take(8).toList().reversed.take(6).toList());
-  Expect.listEquals(subr,
-      reversed.toList().reversed.skip(2).toList().reversed.skip(2).toList());
-  Expect.listEquals(subr,
-      reversed.skip(2).toList().reversed.skip(2).toList().reversed.toList());
-
-  void testList(List list) {
-    var throws = const ThrowMarker();
-    void testEquals(v1, v2, path) {
-      if (v1 is Iterable) {
-        Iterator i1 = v1.iterator;
-        Iterator i2 = v2.iterator;
-        int index = 0;
-        while (i1.moveNext()) {
-          Expect.isTrue(i2.moveNext(),
-              "Too few actual values. Expected[$index] == ${i1.current}");
-          testEquals(i1.current, i2.current, "$path[$index]");
-          index++;
-        }
-        if (i2.moveNext()) {
-          Expect
-              .fail("Too many actual values. Actual[$index] == ${i2.current}");
-        }
-      } else {
-        Expect.equals(v1, v2, path);
-      }
-    }
-
-    void testOp(operation(Iterable reversedList), name) {
-      List reversedList = new List(list.length);
-      for (int i = 0; i < list.length; i++) {
-        reversedList[i] = list[list.length - 1 - i];
-      }
-      Iterable reversed = list.reversed;
-      var expect;
-      try {
-        expect = operation(reversedList);
-      } catch (e) {
-        expect = throws;
-      }
-      var actual;
-      try {
-        actual = operation(reversed);
-      } catch (e) {
-        actual = throws;
-      }
-      testEquals(expect, actual, "$name: $list");
-    }
-
-    testOp((i) => i.first, "first");
-    testOp((i) => i.last, "last");
-    testOp((i) => i.single, "single");
-    testOp((i) => i.firstWhere((n) => n < 5), "firstWhere<5");
-    testOp((i) => i.firstWhere((n) => n < 10), "firstWhere<10");
-    testOp((i) => i.lastWhere((n) => n < 5), "lastWhere<5");
-    testOp((i) => i.lastWhere((n) => n < 10), "lastWhere<10");
-    testOp((i) => i.singleWhere((n) => n < 5), "singelWhere<5");
-    testOp((i) => i.singleWhere((n) => n < 10), "singelWhere<10");
-    testOp((i) => i.contains(5), "contains(5)");
-    testOp((i) => i.contains(10), "contains(10)");
-    testOp((i) => i.any((n) => n < 5), "any<5");
-    testOp((i) => i.any((n) => n < 10), "any<10");
-    testOp((i) => i.every((n) => n < 5), "every<5");
-    testOp((i) => i.every((n) => n < 10), "every<10");
-    testOp((i) => i.reduce((a, b) => a + b), "reduce-sum");
-    testOp((i) => i.fold(0, (a, b) => a + b), "fold-sum");
-    testOp((i) => i.join("-"), "join-");
-    testOp((i) => i.join(""), "join");
-    testOp((i) => i.join(), "join-null");
-    testOp((i) => i.map((n) => n * 2), "map*2");
-    testOp((i) => i.where((n) => n < 5), "where<5");
-    testOp((i) => i.where((n) => n < 10), "where<10");
-    testOp((i) => i.expand((n) => []), "expand[]");
-    testOp((i) => i.expand((n) => [n]), "expand[n]");
-    testOp((i) => i.expand((n) => [n, n]), "expand[n, n]");
-  }
-
-  // Combinations of lists with 0, 1 and more elements.
-  testList([]);
-  testList([0]);
-  testList([10]);
-  testList([0, 1]);
-  testList([0, 10]);
-  testList([10, 11]);
-  testList([0, 5, 10]);
-  testList([10, 5, 0]);
-  testList([0, 1, 2, 3]);
-  testList([3, 4, 5, 6]);
-  testList([10, 11, 12, 13]);
-
-  // Reverse const list.
-  Expect.listEquals(r, l.reversed.toList());
-}
diff --git a/tests/corelib/list_set_all_test.dart b/tests/corelib/list_set_all_test.dart
deleted file mode 100644
index cfe5a80..0000000
--- a/tests/corelib/list_set_all_test.dart
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (c) 2013, 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";
-import "dart:collection";
-
-test(List list, int index, Iterable iterable) {
-  List copy = list.toList();
-  list.setAll(index, iterable);
-  Expect.equals(copy.length, list.length);
-  for (int i = 0; i < index; i++) {
-    Expect.equals(copy[i], list[i]);
-  }
-  List iterableList = iterable.toList();
-  for (int i = 0; i < iterableList.length; i++) {
-    Expect.equals(iterableList[i], list[i + index]);
-  }
-  for (int i = index + iterableList.length; i < copy.length; i++) {
-    Expect.equals(copy[i], list[i]);
-  }
-}
-
-class MyList extends ListBase {
-  List list;
-  MyList(this.list);
-  get length => list.length;
-  set length(value) {
-    list.length = value;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) {
-    list[index] = val;
-  }
-
-  toString() => list.toString();
-}
-
-main() {
-  test([1, 2, 3], 0, [4, 5]);
-  test([1, 2, 3], 1, [4, 5]);
-  test([1, 2, 3], 2, [4]);
-  test([1, 2, 3], 3, []);
-  test([1, 2, 3], 0, [4, 5].map((x) => x));
-  test([1, 2, 3], 1, [4, 5].map((x) => x));
-  test([1, 2, 3], 2, [4].map((x) => x));
-  test([1, 2, 3], 3, [].map((x) => x));
-  test([1, 2, 3], 0, const [4, 5]);
-  test([1, 2, 3], 1, const [4, 5]);
-  test([1, 2, 3], 2, const [4]);
-  test([1, 2, 3], 3, const []);
-  test([1, 2, 3], 0, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 1, new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3], 2, new Iterable.generate(1, (x) => x + 4));
-  test([1, 2, 3], 3, new Iterable.generate(0, (x) => x + 4));
-  test([1, 2, 3].toList(growable: false), 0, [4, 5]);
-  test([1, 2, 3].toList(growable: false), 1, [4, 5]);
-  test([1, 2, 3].toList(growable: false), 2, [4]);
-  test([1, 2, 3].toList(growable: false), 3, []);
-  test([1, 2, 3].toList(growable: false), 0, [4, 5].map((x) => x));
-  test([1, 2, 3].toList(growable: false), 1, [4, 5].map((x) => x));
-  test([1, 2, 3].toList(growable: false), 2, [4].map((x) => x));
-  test([1, 2, 3].toList(growable: false), 3, [].map((x) => x));
-  test([1, 2, 3].toList(growable: false), 0, const [4, 5]);
-  test([1, 2, 3].toList(growable: false), 1, const [4, 5]);
-  test([1, 2, 3].toList(growable: false), 2, const [4]);
-  test([1, 2, 3].toList(growable: false), 3, const []);
-  test([1, 2, 3].toList(growable: false), 0,
-      new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3].toList(growable: false), 1,
-      new Iterable.generate(2, (x) => x + 4));
-  test([1, 2, 3].toList(growable: false), 2,
-      new Iterable.generate(1, (x) => x + 4));
-  test([1, 2, 3].toList(growable: false), 3,
-      new Iterable.generate(0, (x) => x + 4));
-  test(new MyList([1, 2, 3]), 0, [4, 5]);
-  test(new MyList([1, 2, 3]), 1, [4, 5]);
-  test(new MyList([1, 2, 3]), 2, [4]);
-  test(new MyList([1, 2, 3]), 3, []);
-  test(new MyList([1, 2, 3]), 0, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 1, [4, 5].map((x) => x));
-  test(new MyList([1, 2, 3]), 2, [4].map((x) => x));
-  test(new MyList([1, 2, 3]), 3, [].map((x) => x));
-
-  expectRE(() => test([1, 2, 3], -1, [4, 5]));
-  expectRE(() => test([1, 2, 3].toList(growable: false), -1, [4, 5]));
-  expectRE(() => test([1, 2, 3], 1, [4, 5, 6]));
-  expectRE(() => test([1, 2, 3].toList(growable: false), 1, [4, 5, 6]));
-  expectRE(() => test(new MyList([1, 2, 3]), -1, [4, 5]));
-  expectRE(() => test(new MyList([1, 2, 3]), 1, [4, 5, 6]));
-  expectUE(() => test(const [1, 2, 3], 0, [4, 5]));
-  expectUE(() => test(const [1, 2, 3], -1, [4, 5]));
-  expectUE(() => test(const [1, 2, 3], 1, [4, 5, 6]));
-}
-
-void expectRE(Function f) {
-  Expect.throws(f, (e) => e is RangeError);
-}
-
-void expectUE(Function f) {
-  Expect.throws(f, (e) => e is UnsupportedError);
-}
diff --git a/tests/corelib/list_set_range_test.dart b/tests/corelib/list_set_range_test.dart
deleted file mode 100644
index 4b79ba3..0000000
--- a/tests/corelib/list_set_range_test.dart
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var list = [];
-  list.setRange(0, 0, const []);
-  list.setRange(0, 0, []);
-  list.setRange(0, 0, const [], 1);
-  list.setRange(0, 0, [], 1);
-  Expect.equals(0, list.length);
-  expectIOORE(() {
-    list.setRange(0, 1, []);
-  });
-  expectIOORE(() {
-    list.setRange(0, 1, [], 1);
-  });
-  expectIOORE(() {
-    list.setRange(0, 1, [1], 0);
-  });
-
-  list.add(1);
-  list.setRange(0, 0, [], 0);
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-  list.setRange(0, 0, const [], 0);
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-
-  expectIOORE(() {
-    list.setRange(0, 2, [1, 2]);
-  });
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-
-  expectSE(() {
-    list.setRange(0, 1, [1, 2], 2);
-  });
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-
-  list.setRange(0, 1, [2], 0);
-  Expect.equals(1, list.length);
-  Expect.equals(2, list[0]);
-
-  list.setRange(0, 1, const [3], 0);
-  Expect.equals(1, list.length);
-  Expect.equals(3, list[0]);
-
-  list.addAll([4, 5, 6]);
-  Expect.equals(4, list.length);
-  list.setRange(0, 4, [1, 2, 3, 4]);
-  Expect.listEquals([1, 2, 3, 4], list);
-
-  list.setRange(2, 4, [5, 6, 7, 8]);
-  Expect.listEquals([1, 2, 5, 6], list);
-
-  expectIOORE(() {
-    list.setRange(4, 5, [5, 6, 7, 8]);
-  });
-  Expect.listEquals([1, 2, 5, 6], list);
-
-  list.setRange(1, 3, [9, 10, 11, 12]);
-  Expect.listEquals([1, 9, 10, 6], list);
-
-  testNegativeIndices();
-
-  testNonExtendableList();
-}
-
-void expectIOORE(Function f) {
-  Expect.throws(f, (e) => e is RangeError);
-}
-
-void expectSE(Function f) {
-  Expect.throws(f, (e) => e is StateError);
-}
-
-void expectAE(Function f) {
-  Expect.throws(f, (e) => e is ArgumentError);
-}
-
-void testNegativeIndices() {
-  var list = [1, 2];
-  expectIOORE(() {
-    list.setRange(-1, 1, [1]);
-  });
-  expectAE(() {
-    list.setRange(0, 1, [1], -1);
-  });
-
-  // A negative length throws an ArgumentError.
-  expectIOORE(() {
-    list.setRange(2, 1, [1]);
-  });
-
-  expectAE(() {
-    list.setRange(-1, -2, [1], -1);
-  });
-  Expect.listEquals([1, 2], list);
-
-  expectIOORE(() {
-    list.setRange(-1, -1, [1]);
-  });
-  Expect.listEquals([1, 2], list);
-
-  // The skipCount is only used if the length is not 0.
-  list.setRange(0, 0, [1], -1);
-  Expect.listEquals([1, 2], list);
-}
-
-void testNonExtendableList() {
-  var list = new List<int>(6);
-  Expect.listEquals([null, null, null, null, null, null], list);
-  list.setRange(0, 3, [1, 2, 3, 4]);
-  list.setRange(3, 6, [1, 2, 3, 4]);
-  Expect.listEquals([1, 2, 3, 1, 2, 3], list);
-}
diff --git a/tests/corelib/list_sort_test.dart b/tests/corelib/list_sort_test.dart
deleted file mode 100644
index 7e896cd..0000000
--- a/tests/corelib/list_sort_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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 list_sort_test;
-
-import 'sort_helper.dart';
-
-class ListSortTest {
-  static void testMain() {
-    var compare = Comparable.compare;
-    var sort = (list) => list.sort(compare);
-    new SortHelper(sort, compare).run();
-
-    new SortHelper((list) => list.sort(), compare).run();
-
-    compare = (a, b) => -a.compareTo(b);
-    new SortHelper(sort, compare).run();
-  }
-}
-
-main() {
-  ListSortTest.testMain();
-}
diff --git a/tests/corelib/list_sublist_test.dart b/tests/corelib/list_sublist_test.dart
deleted file mode 100644
index 7aada32..0000000
--- a/tests/corelib/list_sublist_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  Expect.listEquals([], [].sublist(0, 0));
-  Expect.listEquals([], const [].sublist(0, 0));
-
-  Expect.listEquals([1, 2], [1, 2].sublist(0, 2));
-  Expect.listEquals([1, 2], const [1, 2].sublist(0, 2));
-
-  Expect.listEquals([1], [1, 2].sublist(0, 1));
-  Expect.listEquals([1], const [1, 2].sublist(0, 1));
-
-  Expect.listEquals([2], [1, 2].sublist(1, 2));
-  Expect.listEquals([2], const [1, 2].sublist(1, 2));
-
-  Expect.listEquals([], [1, 2].sublist(0, 0));
-  Expect.listEquals([], const [1, 2].sublist(0, 0));
-
-  Expect.listEquals([2, 3], [1, 2, 3, 4].sublist(1, 3));
-  Expect.listEquals([2, 3], const [1, 2, 3, 4].sublist(1, 3));
-
-  Expect.listEquals([2, 3], [1, 2, 3, 4].sublist(1, 3));
-  Expect.listEquals([2, 3], const [1, 2, 3, 4].sublist(1, 3));
-
-  expectAE(() => [].sublist(-1, null));
-  expectAE(() => const [].sublist(-1, null));
-  expectAE(() => [].sublist(-1, 0));
-  expectAE(() => const [].sublist(-1, 0));
-  expectAE(() => [].sublist(-1, -1));
-  expectAE(() => const [].sublist(-1, -1));
-  expectAE(() => [].sublist(-1, 1));
-  expectAE(() => const [].sublist(-1, 1));
-  expectAE(() => [].sublist(0, -1));
-  expectAE(() => const [].sublist(0, -1));
-  expectAE(() => [].sublist(0, 1));
-  expectAE(() => const [].sublist(0, 1));
-  expectAE(() => [].sublist(1, null));
-  expectAE(() => const [].sublist(1, null));
-  expectAE(() => [].sublist(1, 0));
-  expectAE(() => const [].sublist(1, 0));
-  expectAE(() => [].sublist(1, -1));
-  expectAE(() => const [].sublist(1, -1));
-  expectAE(() => [].sublist(1, 1));
-  expectAE(() => const [].sublist(1, 1));
-
-  expectAE(() => [1].sublist(0, 2));
-  expectAE(() => [1].sublist(1, 2));
-  expectAE(() => [1].sublist(1, 0));
-}
-
-void expectAE(Function f) {
-  Expect.throws(f, (e) => e is ArgumentError);
-}
diff --git a/tests/corelib/list_test.dart b/tests/corelib/list_test.dart
deleted file mode 100644
index 0323c1d..0000000
--- a/tests/corelib/list_test.dart
+++ /dev/null
@@ -1,633 +0,0 @@
-// Copyright (c) 2011, 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:collection";
-import "dart:typed_data";
-import "package:expect/expect.dart";
-
-void main() {
-  // Typed lists - fixed length and can only contain integers.
-  testTypedList(new Uint8List(4));
-  testTypedList(new Int8List(4));
-  testTypedList(new Uint16List(4));
-  testTypedList(new Int16List(4));
-  testTypedList(new Uint32List(4));
-  testTypedList(new Int32List(4));
-  testTypedList(new Uint8List(4).toList(growable: false));
-  testTypedList(new Int8List(4).toList(growable: false));
-  testTypedList(new Uint16List(4).toList(growable: false));
-  testTypedList(new Int16List(4).toList(growable: false));
-  testTypedList(new Uint32List(4).toList(growable: false));
-  testTypedList(new Int32List(4).toList(growable: false));
-
-  // Fixed length lists, length 4.
-  testFixedLengthList(new List(4));
-  testFixedLengthList(new List(4).toList(growable: false));
-  testFixedLengthList((new List()..length = 4).toList(growable: false));
-  // ListBase implementation of List.
-  testFixedLengthList(new MyFixedList(new List(4)));
-  testFixedLengthList(new MyFixedList(new List(4)).toList(growable: false));
-
-  // Growable lists. Initial length 0.
-  testGrowableList(new List());
-  testGrowableList(new List().toList());
-  testGrowableList(new List(0).toList());
-  testGrowableList(new List.filled(0, null, growable: true));
-  testGrowableList([]);
-  testGrowableList((const []).toList());
-  testGrowableList(new MyList([]));
-  testGrowableList(new MyList([]).toList());
-
-  testTypedGrowableList(new Uint8List(0).toList());
-  testTypedGrowableList(new Int8List(0).toList());
-  testTypedGrowableList(new Uint16List(0).toList());
-  testTypedGrowableList(new Int16List(0).toList());
-  testTypedGrowableList(new Uint32List(0).toList());
-  testTypedGrowableList(new Int32List(0).toList());
-
-  testListConstructor();
-
-  testErrors();
-}
-
-void testErrors() {
-  // Regression for issue http://dartbug.com/24295
-  testIndexError(list, index, name) {
-    try {
-      list[list.length];
-    } catch (err, s) {
-      Expect.isTrue(err is RangeError, "$name[$index]");
-      Expect.equals(list.length, err.invalidValue, "$name[$index] value");
-      Expect.equals(list.length - 1, err.end, "$name[$index] end");
-      Expect.equals(0, err.start, "$name[$index] start");
-    }
-  }
-
-  testIndex(list, name) {
-    testIndexError(list, list.length, name); //   Just too big.
-    testIndexError(list, -1, name); //            Negative.
-    testIndexError(list, 0x123456789, name); //   > 2^32.
-    testIndexError(list, -0x123456789, name); //  < -2^32.
-  }
-
-  // Slices.
-  testSliceError(list, start, end, name) {
-    name = "$name[$start:$end]";
-    var realError;
-    try {
-      RangeError.checkValidRange(start, end, list.length);
-    } catch (e) {
-      realError = e;
-    }
-    var result;
-    try {
-      result = list.sublist(start, end);
-    } catch (actualError) {
-      Expect.isNotNull(realError, "$name should not fail");
-      Expect.isTrue(actualError is RangeError, "$name is-error: $actualError");
-      Expect.equals(realError.name, actualError.name, "$name name");
-      Expect.equals(realError.invalidValue, actualError.invalidValue,
-          "$name[0:l+1] value");
-      Expect.equals(realError.start, actualError.start, "$name[0:l+1] start");
-      Expect.equals(realError.end, actualError.end, "$name[0:l+1] end");
-      return;
-    }
-    // Didn't throw.
-    Expect.isNull(realError, "$name should fail");
-    Expect.equals(end - start, result.length, "$name result length");
-  }
-
-  testSlice(list, name) {
-    testSliceError(list, 0, list.length, name); // Should not fail.
-    testSliceError(list, 0, list.length + 1, name);
-    testSliceError(list, 0, 0x123456789, name);
-    testSliceError(list, -1, list.length, name);
-    testSliceError(list, -0x123456789, list.length, name);
-    testSliceError(list, list.length + 1, list.length + 1, name);
-    testSliceError(list, -1, null, name);
-    if (list.length > 0) {
-      testSliceError(list, list.length, list.length - 1, name);
-    }
-  }
-
-  testRangeErrors(list, name) {
-    testIndex(list, "$name#${list.length} index");
-    testSlice(list, "$name#${list.length} slice");
-  }
-
-  // Empty lists.
-  testRangeErrors([], "list");
-  testRangeErrors(new List(0), "fixed-list");
-  testRangeErrors(const [], "const-list");
-  testRangeErrors(new List.unmodifiable([]), "unmodifiable");
-  testRangeErrors(new Uint8List(0), "typed-list");
-  testRangeErrors(new Uint8List.view(new Uint8List(0).buffer), "typed-list");
-  testRangeErrors([1, 2, 3].sublist(1, 1), "sub-list");
-  // Non-empty lists.
-  testRangeErrors([1, 2, 3], "list");
-  testRangeErrors(new List(3), "fixed-list");
-  testRangeErrors(const [1, 2, 3], "const-list");
-  testRangeErrors(new List.unmodifiable([1, 2, 3]), "unmodifiable");
-  testRangeErrors(new Uint8List(3), "typed-list");
-  testRangeErrors(new Uint8List.view(new Uint8List(3).buffer), "typed-list");
-  testRangeErrors([1, 2, 3, 4, 5].sublist(1, 3), "sub-list");
-}
-
-void testLength(int length, List list) {
-  Expect.equals(length, list.length);
-  (length == 0 ? Expect.isTrue : Expect.isFalse)(list.isEmpty);
-  (length != 0 ? Expect.isTrue : Expect.isFalse)(list.isNotEmpty);
-}
-
-void testTypedLengthInvariantOperations(List list) {
-  // length
-  Expect.equals(list.length, 4);
-  // operators [], []=.
-  for (int i = 0; i < 4; i++) list[i] = 0;
-  list[0] = 4;
-  Expect.listEquals([4, 0, 0, 0], list);
-  list[1] = 7;
-  Expect.listEquals([4, 7, 0, 0], list);
-  list[3] = 2;
-  Expect.listEquals([4, 7, 0, 2], list);
-
-  for (int i = 0; i < list.length; i++) {
-    list[i] = i;
-  }
-
-  // indexOf, lastIndexOf
-  for (int i = 0; i < 4; i++) {
-    Expect.equals(i, list[i]);
-    Expect.equals(i, list.indexOf(i));
-    Expect.equals(i, list.lastIndexOf(i));
-  }
-
-  // setRange.
-  list.setRange(0, 4, [3, 2, 1, 0]);
-  Expect.listEquals([3, 2, 1, 0], list);
-
-  list.setRange(1, 4, list);
-  Expect.listEquals([3, 3, 2, 1], list);
-
-  list.setRange(0, 3, list, 1);
-  Expect.listEquals([3, 2, 1, 1], list);
-  list.setRange(0, 3, list, 1);
-  Expect.listEquals([2, 1, 1, 1], list);
-
-  list.setRange(2, 4, list, 0);
-  Expect.listEquals([2, 1, 2, 1], list);
-
-  // setAll.
-  list.setAll(0, [3, 2, 0, 1]);
-  Expect.listEquals([3, 2, 0, 1], list);
-  list.setAll(1, [0, 1]);
-  Expect.listEquals([3, 0, 1, 1], list);
-
-  // fillRange.
-  list.fillRange(1, 3, 7);
-  Expect.listEquals([3, 7, 7, 1], list);
-  list.fillRange(0, 0, 9);
-  Expect.listEquals([3, 7, 7, 1], list);
-  list.fillRange(4, 4, 9);
-  Expect.listEquals([3, 7, 7, 1], list);
-  list.fillRange(0, 4, 9);
-  Expect.listEquals([9, 9, 9, 9], list);
-
-  // sort.
-  list.setRange(0, 4, [3, 2, 1, 0]);
-  list.sort();
-  Expect.listEquals([0, 1, 2, 3], list);
-  list.setRange(0, 4, [1, 2, 3, 0]);
-  list.sort();
-  Expect.listEquals([0, 1, 2, 3], list);
-  list.setRange(0, 4, [1, 3, 0, 2]);
-  list.sort((a, b) => b - a); // reverse compare.
-  Expect.listEquals([3, 2, 1, 0], list);
-  list.setRange(0, 4, [1, 2, 3, 0]);
-  list.sort((a, b) => b - a);
-  Expect.listEquals([3, 2, 1, 0], list);
-
-  // Some Iterable methods.
-
-  list.setRange(0, 4, [0, 1, 2, 3]);
-  // map.
-  testMap(val) {
-    return val * 2 + 10;
-  }
-
-  List mapped = list.map(testMap).toList();
-  Expect.equals(mapped.length, list.length);
-  for (var i = 0; i < list.length; i++) {
-    Expect.equals(mapped[i], list[i] * 2 + 10);
-  }
-
-  matchAll(val) => true;
-  matchSome(val) {
-    return (val == 1 || val == 2);
-  }
-
-  matchSomeFirst(val) {
-    return val == 0;
-  }
-
-  matchSomeLast(val) {
-    return val == 3;
-  }
-
-  matchNone(val) => false;
-
-  // where.
-  Iterable filtered = list.where(matchSome);
-  Expect.equals(filtered.length, 2);
-
-  // every
-  Expect.isTrue(list.every(matchAll));
-  Expect.isFalse(list.every(matchSome));
-  Expect.isFalse(list.every(matchNone));
-
-  // any
-  Expect.isTrue(list.any(matchAll));
-  Expect.isTrue(list.any(matchSome));
-  Expect.isTrue(list.any(matchSomeFirst));
-  Expect.isTrue(list.any(matchSomeLast));
-  Expect.isFalse(list.any(matchNone));
-
-  // Argument checking isn't implemented for typed arrays in browsers,
-  // so it's moved to the method below for now.
-}
-
-void testLengthInvariantOperations(List list) {
-  testTypedLengthInvariantOperations(list);
-  // Tests that need untyped lists.
-  list.setAll(0, [0, 1, 2, 3]);
-  Expect.equals(-1, list.indexOf(100));
-  Expect.equals(-1, list.lastIndexOf(100));
-  list[2] = new Yes();
-  Expect.equals(2, list.indexOf(100));
-  Expect.equals(2, list.lastIndexOf(100));
-  list[3] = new Yes();
-  Expect.equals(2, list.indexOf(100));
-  Expect.equals(3, list.lastIndexOf(100));
-  list[2] = 2;
-  Expect.equals(3, list.indexOf(100));
-  Expect.equals(3, list.lastIndexOf(100));
-  list[3] = 3;
-  Expect.equals(-1, list.indexOf(100));
-  Expect.equals(-1, list.lastIndexOf(100));
-
-  // Argument errors on bad indices. List is still [0, 1, 2, 3].
-  testArgumentError(action()) {
-    Expect.throws(action, (e) => e is ArgumentError);
-  }
-
-  // Direct indices (0 <= index < length).
-  testArgumentError(() => list[-1]);
-  testArgumentError(() => list[4]);
-  testArgumentError(() => list[-1] = 99);
-  testArgumentError(() => list[4] = 99);
-  testArgumentError(() => list.elementAt(-1));
-  testArgumentError(() => list.elementAt(4));
-  // Ranges (0 <= start <= end <= length).
-  testArgumentError(() => list.sublist(-1, 2));
-  testArgumentError(() => list.sublist(-1, 5));
-  testArgumentError(() => list.sublist(2, 5));
-  testArgumentError(() => list.sublist(4, 2));
-  testArgumentError(() => list.getRange(-1, 2));
-  testArgumentError(() => list.getRange(-1, 5));
-  testArgumentError(() => list.getRange(2, 5));
-  testArgumentError(() => list.getRange(4, 2));
-  testArgumentError(() => list.setRange(-1, 2, [1, 2, 3]));
-  testArgumentError(() => list.setRange(-1, 5, [1, 2, 3, 4, 5, 6]));
-  testArgumentError(() => list.setRange(2, 5, [1, 2, 3]));
-  testArgumentError(() => list.setRange(4, 2, [1, 2]));
-  // for setAll, end is implicitly start + values.length.
-  testArgumentError(() => list.setAll(-1, []));
-  testArgumentError(() => list.setAll(5, []));
-  testArgumentError(() => list.setAll(2, [1, 2, 3]));
-  testArgumentError(() => list.fillRange(-1, 2));
-  testArgumentError(() => list.fillRange(-1, 5));
-  testArgumentError(() => list.fillRange(2, 5));
-  testArgumentError(() => list.fillRange(4, 2));
-}
-
-void testTypedList(List list) {
-  testTypedLengthInvariantOperations(list);
-  testCannotChangeLength(list);
-}
-
-void testFixedLengthList(List list) {
-  testLengthInvariantOperations(list);
-  testCannotChangeLength(list);
-}
-
-void testCannotChangeLength(List list) {
-  isUnsupported(action()) {
-    Expect.throws(action, (e) => e is UnsupportedError);
-  }
-
-  isUnsupported(() => list.add(0));
-  isUnsupported(() => list.addAll([0]));
-  isUnsupported(() => list.removeLast());
-  isUnsupported(() => list.insert(0, 1));
-  isUnsupported(() => list.insertAll(0, [1]));
-  isUnsupported(() => list.clear());
-  isUnsupported(() => list.remove(1));
-  isUnsupported(() => list.removeAt(1));
-  isUnsupported(() => list.removeRange(0, 1));
-  isUnsupported(() => list.replaceRange(0, 1, []));
-}
-
-void testTypedGrowableList(List list) {
-  testLength(0, list);
-  // set length.
-  list.length = 4;
-  testLength(4, list);
-
-  testTypedLengthInvariantOperations(list);
-
-  testGrowableListOperations(list);
-}
-
-void testGrowableList(List list) {
-  testLength(0, list);
-  // set length.
-  list.length = 4;
-  testLength(4, list);
-
-  testLengthInvariantOperations(list);
-
-  testGrowableListOperations(list);
-}
-
-void testGrowableListOperations(List list) {
-  // add, removeLast.
-  list.clear();
-  testLength(0, list);
-  list.add(4);
-  testLength(1, list);
-  Expect.equals(4, list.removeLast());
-  testLength(0, list);
-
-  for (int i = 0; i < 100; i++) {
-    list.add(i);
-  }
-
-  Expect.equals(list.length, 100);
-  for (int i = 0; i < 100; i++) {
-    Expect.equals(i, list[i]);
-  }
-
-  Expect.equals(17, list.indexOf(17));
-  Expect.equals(17, list.lastIndexOf(17));
-  Expect.equals(-1, list.indexOf(999));
-  Expect.equals(-1, list.lastIndexOf(999));
-
-  Expect.equals(99, list.removeLast());
-  testLength(99, list);
-
-  // remove.
-  Expect.isTrue(list.remove(4));
-  testLength(98, list);
-  Expect.isFalse(list.remove(4));
-  testLength(98, list);
-  list.clear();
-  testLength(0, list);
-
-  list.add(4);
-  list.add(4);
-  testLength(2, list);
-  Expect.isTrue(list.remove(4));
-  testLength(1, list);
-  Expect.isTrue(list.remove(4));
-  testLength(0, list);
-  Expect.isFalse(list.remove(4));
-  testLength(0, list);
-
-  // removeWhere, retainWhere
-  for (int i = 0; i < 100; i++) {
-    list.add(i);
-  }
-  testLength(100, list);
-  list.removeWhere((int x) => x.isOdd);
-  testLength(50, list);
-  for (int i = 0; i < list.length; i++) {
-    Expect.isTrue(list[i].isEven);
-  }
-  list.retainWhere((int x) => (x % 3) == 0);
-  testLength(17, list);
-  for (int i = 0; i < list.length; i++) {
-    Expect.isTrue((list[i] % 6) == 0);
-  }
-
-  // insert, remove, removeAt
-  list.clear();
-  testLength(0, list);
-
-  list.insert(0, 0);
-  Expect.listEquals([0], list);
-
-  list.insert(0, 1);
-  Expect.listEquals([1, 0], list);
-
-  list.insert(0, 2);
-  Expect.listEquals([2, 1, 0], list);
-
-  Expect.isTrue(list.remove(1));
-  Expect.listEquals([2, 0], list);
-
-  list.insert(1, 1);
-  Expect.listEquals([2, 1, 0], list);
-
-  list.removeAt(1);
-  Expect.listEquals([2, 0], list);
-
-  list.removeAt(1);
-  Expect.listEquals([2], list);
-
-  // insertAll
-  list.insertAll(0, [1, 2, 3]);
-  Expect.listEquals([1, 2, 3, 2], list);
-
-  list.insertAll(2, []);
-  Expect.listEquals([1, 2, 3, 2], list);
-
-  list.insertAll(4, [7, 9]);
-  Expect.listEquals([1, 2, 3, 2, 7, 9], list);
-
-  // addAll
-  list.addAll(list.reversed.toList());
-  Expect.listEquals([1, 2, 3, 2, 7, 9, 9, 7, 2, 3, 2, 1], list);
-
-  list.addAll([]);
-  Expect.listEquals([1, 2, 3, 2, 7, 9, 9, 7, 2, 3, 2, 1], list);
-
-  // replaceRange
-  list.replaceRange(3, 7, [0, 0]);
-  Expect.listEquals([1, 2, 3, 0, 0, 7, 2, 3, 2, 1], list);
-
-  list.replaceRange(2, 3, [5, 5, 5]);
-  Expect.listEquals([1, 2, 5, 5, 5, 0, 0, 7, 2, 3, 2, 1], list);
-
-  list.replaceRange(2, 4, [6, 6]);
-  Expect.listEquals([1, 2, 6, 6, 5, 0, 0, 7, 2, 3, 2, 1], list);
-
-  list.replaceRange(6, 8, []);
-  Expect.listEquals([1, 2, 6, 6, 5, 0, 2, 3, 2, 1], list);
-
-  // Operations that change the length cause ConcurrentModificationError.
-  void testConcurrentModification(action()) {
-    testIterator(int when) {
-      list.length = 4;
-      list.setAll(0, [0, 1, 2, 3]);
-      Expect.throws(() {
-        for (var element in list) {
-          if (element == when) action();
-        }
-      }, (e) => e is ConcurrentModificationError);
-    }
-
-    testForEach(int when) {
-      list.length = 4;
-      list.setAll(0, [0, 1, 2, 3]);
-      Expect.throws(() {
-        list.forEach((var element) {
-          if (element == when) action();
-        });
-      }, (e) => e is ConcurrentModificationError);
-    }
-
-    // Test the change at different points of the iteration.
-    testIterator(0);
-    testIterator(1);
-    testIterator(3);
-    testForEach(0);
-    testForEach(1);
-    testForEach(3);
-  }
-
-  testConcurrentModification(() => list.add(5));
-  testConcurrentModification(() => list.addAll([5, 6]));
-  testConcurrentModification(() => list.removeLast());
-  for (int i = 0; i < 4; i++) {
-    testConcurrentModification(() => list.remove(i));
-    testConcurrentModification(() => list.removeAt(i));
-    testConcurrentModification(() => list.removeWhere((x) => x == i));
-    testConcurrentModification(() => list.retainWhere((x) => x != i));
-    testConcurrentModification(() => list.insert(i, 5));
-    testConcurrentModification(() => list.insertAll(i, [5, 6]));
-    testConcurrentModification(() => list.removeRange(i, i + 1));
-    testConcurrentModification(() => list.replaceRange(i, i + 1, [5, 6]));
-  }
-
-  // Any operation that doesn't change the length should be safe for iteration.
-  testSafeConcurrentModification(action()) {
-    list.length = 4;
-    list.setAll(0, [0, 1, 2, 3]);
-    for (var i in list) {
-      action();
-    }
-    list.forEach((e) => action());
-  }
-
-  testSafeConcurrentModification(() {
-    list.add(5);
-    list.removeLast();
-  });
-  testSafeConcurrentModification(() {
-    list.add(list[0]);
-    list.removeAt(0);
-  });
-  testSafeConcurrentModification(() {
-    list.insert(0, list.removeLast());
-  });
-  testSafeConcurrentModification(() {
-    list.replaceRange(1, 3, list.sublist(1, 3).reversed);
-  });
-
-  // Argument errors on bad indices for methods that are only allowed
-  // on growable lists.
-  list.length = 4;
-  list.setAll(0, [0, 1, 2, 3]);
-  testArgumentError(action()) {
-    Expect.throws(action, (e) => e is ArgumentError);
-  }
-
-  // Direct indices (0 <= index < length).
-  testArgumentError(() => list.removeAt(-1));
-  testArgumentError(() => list.removeAt(4));
-  // Direct indices including end (0 <= index <= length).
-  testArgumentError(() => list.insert(-1, 0));
-  testArgumentError(() => list.insert(5, 0));
-  testArgumentError(() => list.insertAll(-1, [0]));
-  testArgumentError(() => list.insertAll(5, [0]));
-  testArgumentError(() => list.insertAll(-1, [0]));
-  testArgumentError(() => list.insertAll(5, [0]));
-  // Ranges (0 <= start <= end <= length).
-  testArgumentError(() => list.removeRange(-1, 2));
-  testArgumentError(() => list.removeRange(2, 5));
-  testArgumentError(() => list.removeRange(-1, 5));
-  testArgumentError(() => list.removeRange(4, 2));
-  testArgumentError(() => list.replaceRange(-1, 2, [9]));
-  testArgumentError(() => list.replaceRange(2, 5, [9]));
-  testArgumentError(() => list.replaceRange(-1, 5, [9]));
-  testArgumentError(() => list.replaceRange(4, 2, [9]));
-}
-
-class Yes {
-  operator ==(var other) => true;
-  int get hashCode => 0;
-}
-
-class MyList<E> extends ListBase<E> {
-  List<E> _source;
-  MyList(this._source);
-  int get length => _source.length;
-  void set length(int length) {
-    _source.length = length;
-  }
-
-  E operator [](int index) => _source[index];
-  void operator []=(int index, E value) {
-    _source[index] = value;
-  }
-}
-
-class MyFixedList<E> extends ListBase<E> {
-  List<E> _source;
-  MyFixedList(this._source);
-  int get length => _source.length;
-  void set length(int length) {
-    throw new UnsupportedError("Fixed length!");
-  }
-
-  E operator [](int index) => _source[index];
-  void operator []=(int index, E value) {
-    _source[index] = value;
-  }
-}
-
-void testListConstructor() {
-  // Is fixed-length.
-  Expect.throws(() {
-    new List(0).add(4);
-  });
-  Expect.throws(() { new List(-2); });  // Not negative. //# 01: ok
-  // Not null.
-  Expect.throws(() {
-    new List(null);
-  });
-  Expect.listEquals([4], new List()..add(4));
-  // Is fixed-length.
-  Expect.throws(() {
-    new List.filled(0, 42).add(4);
-  });
-  // Not negative.
-  Expect.throws(() {
-    new List.filled(-2, 42);
-  });
-  // Not null.
-  Expect.throws(() {
-    new List.filled(null, 42);
-  });
-}
diff --git a/tests/corelib/list_to_string2_test.dart b/tests/corelib/list_to_string2_test.dart
deleted file mode 100644
index d46e9d5..0000000
--- a/tests/corelib/list_to_string2_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  List list = [1, 2];
-  list.add(list);
-
-  List list2 = new List(4);
-  list2[0] = 1;
-  list2[1] = 2;
-  list2[2] = list2;
-  list2[3] = list;
-
-  Expect.equals("[1, 2, [...]]", list.toString());
-  Expect.equals("[1, 2, [...], [1, 2, [...]]]", list2.toString());
-
-  // Throwing in the middle of a toString does not leave the
-  // list as being visited.
-  List list3 = [1, 2, new ThrowOnToString(), 4];
-  Expect.throws(list3.toString, (e) => e == "Bad!");
-  list3[2] = 3;
-  Expect.equals("[1, 2, 3, 4]", list3.toString());
-}
-
-class ThrowOnToString {
-  String toString() {
-    throw "Bad!";
-  }
-}
diff --git a/tests/corelib/list_to_string_test.dart b/tests/corelib/list_to_string_test.dart
deleted file mode 100644
index fed5277..0000000
--- a/tests/corelib/list_to_string_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:collection';
-
-class MyList extends ListBase {
-  final list;
-  MyList(this.list);
-
-  get length => list.length;
-  set length(val) {
-    list.length = val;
-  }
-
-  operator [](index) => list[index];
-  operator []=(index, val) => list[index] = val;
-}
-
-main() {
-  Expect.equals("[]", [].toString());
-  Expect.equals("[1]", [1].toString());
-  Expect.equals("[1, 2]", [1, 2].toString());
-  Expect.equals("[]", const [].toString());
-  Expect.equals("[1]", const [1].toString());
-  Expect.equals("[1, 2]", const [1, 2].toString());
-  Expect.equals("[]", new MyList([]).toString());
-  Expect.equals("[1]", new MyList([1]).toString());
-  Expect.equals("[1, 2]", new MyList([1, 2]).toString());
-}
diff --git a/tests/corelib/list_unmodifiable_test.dart b/tests/corelib/list_unmodifiable_test.dart
deleted file mode 100644
index 1a29c00..0000000
--- a/tests/corelib/list_unmodifiable_test.dart
+++ /dev/null
@@ -1,304 +0,0 @@
-// Copyright (c) 2015, 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";
-import "dart:collection";
-import "dart:typed_data";
-
-main() {
-  var intTest = new Test<int>();
-  intTest.run("ConstList", createConstList);
-  intTest.run("FixedList", createFixedList);
-  intTest.run("GrowableList", createGrowableList);
-  intTest.run("ConstMapKeys", createConstMapKeys);
-  intTest.run("ConstMapValues", createConstMapValues);
-  intTest.run("MapKeys", createMapKeys);
-  intTest.run("MapValues", createMapValues);
-  intTest.run("SplayMapKeys", createSplayMapKeys);
-  intTest.run("SplayMapValues", createSplayMapValues);
-  intTest.run("Set", createSet);
-  intTest.run("SplaySet", createSplaySet);
-  intTest.run("Queue", createQueue);
-  intTest.run("ListMapKeys", createListMapKeys);
-  intTest.run("ListMapValues", createListMapValues);
-  intTest.run("CodeUnits", createCodeUnits);
-  intTest.run("TypedList", createTypedList);
-
-  new Test<String>().test("strings", ["a", "b", "c"]);
-
-  new Test<num>().test("superclass", <int>[1, 2, 3]);
-  new Test<int>().test("subclass", <num>[1, 2, 3]);
-}
-
-class Test<E> {
-  run(name, Iterable create(int size)) {
-    test(name, create(0));
-    test(name, create(1));
-    test(name, create(3));
-  }
-
-  test(name, iterable) {
-    testSingle(name, iterable);
-    testSingle("$name-where", iterable.where((x) => true));
-    testSingle("$name-map", iterable.map((x) => x));
-    testSingle("$name-expand", iterable.expand((x) => [x, x]));
-    testSingle("$name-skip", iterable.skip(1));
-    testSingle("$name-take", iterable.take(2));
-    testSingle("$name-skipWhile", iterable.skipWhile((x) => false));
-    testSingle("$name-takeWhile", iterable.takeWhile((x) => true));
-  }
-
-  testSingle(name, iterable) {
-    var elements = iterable.toList();
-    int length = elements.length;
-
-    var list = new List<E>.unmodifiable(iterable);
-
-    Expect.isTrue(list is List<E>, "$name-type-$E");
-    Expect.isTrue(list is! List<Test>, "$name-!type-!$E");
-
-    checkElements() {
-      Expect.equals(length, list.length);
-      for (int i = 0; i < length; i++) {
-        Expect.identical(elements[i], list[i], "$name-identical-$i");
-      }
-    }
-
-    checkElements();
-
-    throws(funcName, func) {
-      try {
-        func();
-      } catch (e, s) {
-        Expect.isTrue(e is UnsupportedError, "$name: $funcName threw $e");
-        return;
-      }
-      checkElements();
-      Expect.fail("$name: $funcName didn't throw");
-    }
-
-    throws("[]=", () {
-      list[0] = null;
-    });
-    throws("length=", () {
-      list.length = length + 1;
-    });
-    throws("length=", () {
-      list.length = length - 1;
-    });
-    throws("setAll", () {
-      list.setAll(0, []);
-    });
-    throws("add", () {
-      list.add(null);
-    });
-    throws("insert", () {
-      list.insert(0, null);
-    });
-    throws("insertAll", () {
-      list.insertAll(0, []);
-    });
-    throws("addAll", () {
-      list.addAll([]);
-    });
-    throws("remove", () {
-      list.remove(null);
-    });
-    throws("removeWhere", () {
-      list.removeWhere((x) => true);
-    });
-    throws("retainWhere", () {
-      list.retainWhere((x) => false);
-    });
-    throws("sort", () {
-      list.sort();
-    });
-    throws("shuffle", () {
-      list.shuffle();
-    });
-    throws("clear", () {
-      list.clear();
-    });
-    throws("removeAt", () {
-      list.removeAt(0);
-    });
-    throws("removeLast", () {
-      list.removeLast();
-    });
-    throws("setRange", () {
-      list.setRange(0, 1, []);
-    });
-    throws("removeRange", () {
-      list.removeRange(0, 1);
-    });
-    throws("replaceRange", () {
-      list.replaceRange(0, 1, []);
-    });
-    throws("fillRange", () {
-      list.fillRange(0, 1, null);
-    });
-
-    success(opName, op(list)) {
-      var expect;
-      try {
-        expect = op(elements);
-      } catch (e) {
-        try {
-          op(list);
-        } catch (e2) {
-          Expect.equals(
-              e.runtimeType,
-              e2.runtimeType,
-              "$name :: $opName threw different exceptions: "
-              "${e.runtimeType} vs ${e2.runtimeType}");
-          return;
-        }
-        Expect.fail("$name-$opName didn't throw, expected: $e");
-      }
-      var actual = op(list);
-      checkElements();
-      if (expect is List) {
-        Expect.listEquals(expect, actual, "$name-$opName");
-      } else if (expect is Iterable) {
-        Expect.isTrue(actual is Iterable);
-        Expect.listEquals(expect.toList(), actual.toList(), "$name-$opName");
-      } else {
-        Expect.equals(expect, actual, "$name-$opName");
-      }
-    }
-
-    success("indexOf", (l) => l.indexOf(null));
-    success("lastIndexOf", (l) => l.lastIndexOf(null));
-    success("contains", (l) => l.contains(2));
-    success("elementAt", (l) => l.elementAt[1]);
-    success("reversed", (l) => l.reversed);
-    success("sublist0-1", (l) => l.sublist(0, 1));
-    success("getRange0-1", (l) => l.getRange(0, 1));
-    success("asMap-keys", (l) => l.asMap().keys);
-    success("asMap-values", (l) => l.asMap().values);
-    success("where", (l) => l.where((x) => true));
-    success("map", (l) => l.map((x) => x));
-    success("expand", (l) => l.expand((x) => [x, x]));
-    success("skip", (l) => l.skip(1));
-    success("take", (l) => l.take(1));
-    success("skipWhile", (l) => l.skipWhile((x) => false));
-    success("takeWhile", (l) => l.takeWhile((x) => true));
-    success("first", (l) => l.first);
-    success("last", (l) => l.last);
-    success("single", (l) => l.single);
-    success("firstWhere", (l) => l.firstWhere((x) => true));
-    success("lastWhere", (l) => l.lastWhere((x) => true));
-    success("singleWhere", (l) => l.singleWhere((x) => true));
-    success("isEmpty", (l) => l.isEmpty);
-    success("isNotEmpty", (l) => l.isNotEmpty);
-    success("join", (l) => l.join("/"));
-    success("fold", (l) => l.fold("--", (a, b) => "$a/$b"));
-    success("reduce", (l) => l.reduce((a, b) => a + b));
-    success("every", (l) => l.every((x) => x == 0));
-    success("any", (l) => l.any((x) => x == 2));
-    success("toList", (l) => l.toList());
-    success("toSet", (l) => l.toSet());
-    success("toString", (l) => l.toString());
-
-    var it = elements.iterator;
-    list.forEach((v) {
-      Expect.isTrue(it.moveNext());
-      Expect.equals(it.current, v);
-    });
-    Expect.isFalse(it.moveNext());
-
-    if (elements is List<int> && list is List<int>) {
-      success("String.fromCharCodes", (l) => new String.fromCharCodes(l));
-    }
-  }
-}
-
-createConstList(n) {
-  if (n == 0) return const <int>[];
-  return const <int>[1, 2, 3];
-}
-
-createFixedList(n) {
-  var result = new List<int>(n);
-  for (int i = 0; i < n; i++) result[i] = n;
-  return result;
-}
-
-createGrowableList(n) {
-  var result = new List<int>()..length = n;
-  for (int i = 0; i < n; i++) result[i] = n;
-  return result;
-}
-
-createIterable(n) => new Iterable.generate(n);
-createConstMapKeys(n) {
-  if (n == 0) return const <int, int>{}.keys;
-  return const <int, int>{0: 0, 1: 1, 2: 2}.keys;
-}
-
-createConstMapValues(n) {
-  if (n == 0) return const <int, int>{}.values;
-  return const <int, int>{0: 0, 1: 1, 2: 2}.values;
-}
-
-createMapKeys(n) {
-  var map = <int, int>{};
-  for (int i = 0; i < n; i++) map[i] = i;
-  return map.keys;
-}
-
-createMapValues(n) {
-  var map = <int, int>{};
-  for (int i = 0; i < n; i++) map[i] = i;
-  return map.values;
-}
-
-createSplayMapKeys(n) {
-  var map = new SplayTreeMap<int, int>();
-  for (int i = 0; i < n; i++) map[i] = i;
-  return map.keys;
-}
-
-createSplayMapValues(n) {
-  var map = new SplayTreeMap<int, int>();
-  for (int i = 0; i < n; i++) map[i] = i;
-  return map.values;
-}
-
-createSet(n) {
-  var set = new Set<int>();
-  for (int i = 0; i < n; i++) set.add(i);
-  return set;
-}
-
-createSplaySet(n) {
-  var set = new SplayTreeSet<int>();
-  for (int i = 0; i < n; i++) set.add(i);
-  return set;
-}
-
-createQueue(n) {
-  var queue = new Queue<int>();
-  for (int i = 0; i < n; i++) queue.add(i);
-  return queue;
-}
-
-createListMapKeys(n) {
-  return createGrowableList(n).asMap().keys;
-}
-
-createListMapValues(n) {
-  return createGrowableList(n).asMap().values;
-}
-
-createCodeUnits(n) {
-  var string = new String.fromCharCodes(new Iterable.generate(n));
-  return string.codeUnits;
-}
-
-createTypedList(n) {
-  var tl = new Uint8List(n);
-  for (int i = 0; i < n; i++) tl[i] = i;
-  return tl;
-}
diff --git a/tests/corelib/main_test.dart b/tests/corelib/main_test.dart
deleted file mode 100644
index 024e91f..0000000
--- a/tests/corelib/main_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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 main_test;
-
-import "package:expect/expect.dart";
-
-main(List<String> args) {
-  Expect.equals(0, args.length);
-}
diff --git a/tests/corelib/map_contains_key_test.dart b/tests/corelib/map_contains_key_test.dart
deleted file mode 100644
index d597a99..0000000
--- a/tests/corelib/map_contains_key_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var map1 = new Map<B, B>();
-  map1[const B()] = const B();
-  var map2 = new Map<B, B>();
-  var list = <B>[const B()];
-
-  var maps = [map1, map2];
-  for (var map in maps) {
-    // Test that the map accepts a key is not of the same type:
-    //   Map<B, ?>.containsValue(A)
-    Expect.isFalse(map.containsKey(new A()));
-  }
-}
diff --git a/tests/corelib/map_contains_value_test.dart b/tests/corelib/map_contains_value_test.dart
deleted file mode 100644
index 7837417..0000000
--- a/tests/corelib/map_contains_value_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var map1 = new Map<B, B>();
-  map1[const B()] = const B();
-  var map2 = new Map<B, B>();
-  var list = <B>[const B()];
-  Map<int, B> map3 = list.asMap();
-
-  var maps = [map1, map2, map3];
-  for (var map in maps) {
-    // Test that the map accepts a value is not of the same type:
-    //   Map<?, B>.containsValue(A)
-    Expect.isFalse(map.containsValue(new A()));
-  }
-}
diff --git a/tests/corelib/map_from_iterable_test.dart b/tests/corelib/map_from_iterable_test.dart
deleted file mode 100644
index b4e7571..0000000
--- a/tests/corelib/map_from_iterable_test.dart
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (c) 2011, 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";
-import 'dart:collection';
-
-main() {
-  defaultFunctionValuesTest();
-  defaultKeyFunctionTest();
-  defaultValueFunctionTest();
-  noDefaultValuesTest();
-  emptyIterableTest();
-  equalElementsTest();
-  genericTypeTest();
-}
-
-void defaultFunctionValuesTest() {
-  var map = new HashMap.fromIterable([1, 2, 3]);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(1, map[1]);
-  Expect.equals(2, map[2]);
-  Expect.equals(3, map[3]);
-}
-
-void defaultKeyFunctionTest() {
-  var map = new HashMap.fromIterable([1, 2, 3], value: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(2, map[1]);
-  Expect.equals(3, map[2]);
-  Expect.equals(4, map[3]);
-}
-
-void defaultValueFunctionTest() {
-  var map = new HashMap.fromIterable([1, 2, 3], key: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(1, map[2]);
-  Expect.equals(2, map[3]);
-  Expect.equals(3, map[4]);
-}
-
-void noDefaultValuesTest() {
-  var map = new HashMap.fromIterable([1, 2, 3],
-      key: (x) => x + 1, value: (x) => x - 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(0, map[2]);
-  Expect.equals(1, map[3]);
-  Expect.equals(2, map[4]);
-}
-
-void emptyIterableTest() {
-  var map = new HashMap.fromIterable([]);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is HashMap);
-
-  Expect.equals(0, map.length);
-  Expect.equals(0, map.keys.length);
-  Expect.equals(0, map.values.length);
-}
-
-void equalElementsTest() {
-  var map = new HashMap.fromIterable([1, 2, 2], key: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is HashMap);
-
-  Expect.equals(2, map.length);
-  Expect.equals(2, map.keys.length);
-  Expect.equals(2, map.values.length);
-
-  Expect.equals(1, map[2]);
-  Expect.equals(2, map[3]);
-}
-
-void genericTypeTest() {
-  var map = new HashMap<String, String>.fromIterable(<int>[1, 2, 3],
-      key: (x) => '$x', value: (x) => '$x');
-  Expect.isTrue(map is Map<String, String>);
-
-  // Make sure it is not just Map<dynamic, dynamic>.
-  Expect.isFalse(map is Map<int, dynamic>);
-  Expect.isFalse(map is Map<dynamic, int>);
-}
diff --git a/tests/corelib/map_from_iterables_test.dart b/tests/corelib/map_from_iterables_test.dart
deleted file mode 100644
index 73958c5..0000000
--- a/tests/corelib/map_from_iterables_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2011, 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";
-import 'dart:collection';
-
-main() {
-  positiveTest();
-  emptyMapTest();
-  fewerKeysIterableTest();
-  fewerValuesIterableTest();
-  equalElementsTest();
-  genericTypeTest();
-}
-
-void positiveTest() {
-  var map = new Map.fromIterables([1, 2, 3], ["one", "two", "three"]);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("two", map[2]);
-  Expect.equals("three", map[3]);
-}
-
-void emptyMapTest() {
-  var map = new Map.fromIterables([], []);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(0, map.length);
-  Expect.equals(0, map.keys.length);
-  Expect.equals(0, map.values.length);
-}
-
-void fewerValuesIterableTest() {
-  Expect.throws(() => new Map.fromIterables([1, 2], [0]));
-}
-
-void fewerKeysIterableTest() {
-  Expect.throws(() => new Map.fromIterables([1], [0, 2]));
-}
-
-void equalElementsTest() {
-  var map = new Map.fromIterables([1, 2, 2], ["one", "two", "three"]);
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is LinkedHashMap);
-
-  Expect.equals(2, map.length);
-  Expect.equals(2, map.keys.length);
-  Expect.equals(2, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("three", map[2]);
-}
-
-void genericTypeTest() {
-  var map =
-      new Map<int, String>.fromIterables([1, 2, 3], ["one", "two", "three"]);
-  Expect.isTrue(map is Map<int, String>);
-
-  // Make sure it is not just Map<dynamic, dynamic>.
-  Expect.isFalse(map is Map<String, dynamic>);
-  Expect.isFalse(map is Map<dynamic, int>);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("two", map[2]);
-  Expect.equals("three", map[3]);
-}
diff --git a/tests/corelib/map_from_test.dart b/tests/corelib/map_from_test.dart
deleted file mode 100644
index 4991309..0000000
--- a/tests/corelib/map_from_test.dart
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2011, 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 map.from.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-main() {
-  testWithConstMap();
-  testWithNonConstMap();
-  testWithHashMap();
-  testWithLinkedMap();
-}
-
-testWithConstMap() {
-  var map = const {'b': 42, 'a': 43};
-  var otherMap = new Map.from(map);
-  Expect.isTrue(otherMap is Map);
-  Expect.isTrue(otherMap is HashMap);
-  Expect.isTrue(otherMap is LinkedHashMap);
-
-  Expect.equals(2, otherMap.length);
-  Expect.equals(2, otherMap.keys.length);
-  Expect.equals(2, otherMap.values.length);
-
-  var count = (map) {
-    int cnt = 0;
-    map.forEach((a, b) {
-      cnt += b;
-    });
-    return cnt;
-  };
-
-  Expect.equals(42 + 43, count(map));
-  Expect.equals(count(map), count(otherMap));
-}
-
-testWithNonConstMap() {
-  var map = {'b': 42, 'a': 43};
-  var otherMap = new Map.from(map);
-  Expect.isTrue(otherMap is Map);
-  Expect.isTrue(otherMap is HashMap);
-  Expect.isTrue(otherMap is LinkedHashMap);
-
-  Expect.equals(2, otherMap.length);
-  Expect.equals(2, otherMap.keys.length);
-  Expect.equals(2, otherMap.values.length);
-
-  int count(map) {
-    int count = 0;
-    map.forEach((a, b) {
-      count += b;
-    });
-    return count;
-  }
-
-  ;
-
-  Expect.equals(42 + 43, count(map));
-  Expect.equals(count(map), count(otherMap));
-
-  // Test that adding to the original map does not change otherMap.
-  map['c'] = 44;
-  Expect.equals(3, map.length);
-  Expect.equals(2, otherMap.length);
-  Expect.equals(2, otherMap.keys.length);
-  Expect.equals(2, otherMap.values.length);
-
-  // Test that adding to otherMap does not change the original map.
-  otherMap['c'] = 44;
-  Expect.equals(3, map.length);
-  Expect.equals(3, otherMap.length);
-  Expect.equals(3, otherMap.keys.length);
-  Expect.equals(3, otherMap.values.length);
-}
-
-testWithHashMap() {
-  var map = const {'b': 1, 'a': 2, 'c': 3};
-  var otherMap = new HashMap.from(map);
-  Expect.isTrue(otherMap is Map);
-  Expect.isTrue(otherMap is HashMap);
-  Expect.isTrue(otherMap is! LinkedHashMap);
-  var i = 1;
-  for (var val in map.values) {
-    Expect.equals(i++, val);
-  }
-}
-
-testWithLinkedMap() {
-  var map = const {'b': 1, 'a': 2, 'c': 3};
-  var otherMap = new LinkedHashMap.from(map);
-  Expect.isTrue(otherMap is Map);
-  Expect.isTrue(otherMap is HashMap);
-  Expect.isTrue(otherMap is LinkedHashMap);
-  var i = 1;
-  for (var val in map.values) {
-    Expect.equals(i++, val);
-  }
-}
diff --git a/tests/corelib/map_index_test.dart b/tests/corelib/map_index_test.dart
deleted file mode 100644
index 05387a4..0000000
--- a/tests/corelib/map_index_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var map1 = new Map<B, B>();
-  map1[const B()] = const B();
-  var map2 = new Map<B, B>();
-  var list = <B>[const B()];
-
-  var maps = [map1, map2];
-  for (var map in maps) {
-    // Test that the map accepts a key is not of the same type:
-    //   Map<B, ?>[A]
-    Expect.isNull(map[new A()]);
-  }
-}
diff --git a/tests/corelib/map_keys2_test.dart b/tests/corelib/map_keys2_test.dart
deleted file mode 100644
index 88ba491..0000000
--- a/tests/corelib/map_keys2_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var map1 = {"foo": 42, "bar": 499};
-  var map2 = {};
-  var map3 = const {"foo": 42, "bar": 499};
-  var map4 = const {};
-  var map5 = new Map<String, int>();
-  map5["foo"] = 43;
-  map5["bar"] = 500;
-  var map6 = new Map<String, bool>();
-
-  Expect.isTrue(map1.keys is Iterable<String>);
-  Expect.isTrue(map1.keys is Iterable<bool>);
-
-  Expect.isTrue(map2.keys is Iterable<String>);
-  Expect.isTrue(map2.keys is Iterable<bool>);
-
-  Expect.isTrue(map3.keys is Iterable<String>);
-  Expect.isTrue(map3.keys is Iterable<bool>);
-
-  Expect.isTrue(map4.keys is Iterable<String>);
-  Expect.isTrue(map4.keys is Iterable<bool>);
-
-  Expect.isTrue(map5.keys is Iterable<String>);
-  Expect.isFalse(map5.keys is Iterable<bool>);
-
-  Expect.isTrue(map6.keys is Iterable<String>);
-  Expect.isFalse(map6.keys is Iterable<bool>);
-}
diff --git a/tests/corelib/map_keys_test.dart b/tests/corelib/map_keys_test.dart
deleted file mode 100644
index d3eaeda..0000000
--- a/tests/corelib/map_keys_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var map1 = {"foo": 42, "bar": 499};
-  var map2 = {};
-  var map3 = const {"foo": 42, "bar": 499};
-  var map4 = const {};
-  var map5 = new Map<String, int>();
-  map5["foo"] = 43;
-  map5["bar"] = 500;
-  var map6 = new Map<String, bool>();
-
-  Expect.isTrue(map1.keys is Iterable);
-  Expect.isFalse(map1.keys is List);
-  Expect.equals(2, map1.keys.length);
-  Expect.equals("foo", map1.keys.first);
-  Expect.equals("bar", map1.keys.last);
-
-  Expect.isTrue(map2.keys is Iterable);
-  Expect.isFalse(map2.keys is List);
-  Expect.equals(0, map2.keys.length);
-
-  Expect.isTrue(map3.keys is Iterable);
-  Expect.isFalse(map3.keys is List);
-  Expect.equals(2, map3.keys.length);
-  Expect.equals("foo", map3.keys.first);
-  Expect.equals("bar", map3.keys.last);
-
-  Expect.isTrue(map4.keys is Iterable);
-  Expect.isFalse(map4.keys is List);
-  Expect.equals(0, map4.keys.length);
-
-  Expect.isTrue(map5.keys is Iterable);
-  Expect.isFalse(map5.keys is List);
-  Expect.equals(2, map5.keys.length);
-  Expect.isTrue(map5.keys.first == "foo" || map5.keys.first == "bar");
-  Expect.isTrue(map5.keys.last == "foo" || map5.keys.last == "bar");
-  Expect.notEquals(map5.keys.first, map5.keys.last);
-
-  Expect.isTrue(map6.keys is Iterable);
-  Expect.isFalse(map6.keys is List);
-  Expect.equals(0, map6.keys.length);
-}
diff --git a/tests/corelib/map_remove_test.dart b/tests/corelib/map_remove_test.dart
deleted file mode 100644
index cb25234..0000000
--- a/tests/corelib/map_remove_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var map1 = new Map<B, B>();
-  map1[const B()] = const B();
-  var map2 = new Map<B, B>();
-  var list = <B>[const B()];
-
-  var maps = [map1, map2];
-  for (var map in maps) {
-    // Test that the map accepts a key is not of the same type:
-    //   Map<B, ?>.remove(A)
-    Expect.isNull(map.remove(new A()));
-  }
-}
diff --git a/tests/corelib/map_test.dart b/tests/corelib/map_test.dart
deleted file mode 100644
index 9881be9..0000000
--- a/tests/corelib/map_test.dart
+++ /dev/null
@@ -1,974 +0,0 @@
-// Copyright (c) 2011, 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 map_test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-import 'dart:convert' show JSON;
-
-Map newJsonMap() => JSON.decode('{}');
-Map newJsonMapCustomReviver() =>
-    JSON.decode('{}', reviver: (key, value) => value);
-
-void main() {
-  test(new HashMap());
-  test(new LinkedHashMap());
-  test(new SplayTreeMap());
-  test(new SplayTreeMap(Comparable.compare));
-  test(new MapView(new HashMap()));
-  test(new MapView(new SplayTreeMap()));
-  test(new MapBaseMap());
-  test(new MapMixinMap());
-  testLinkedHashMap();
-  testMapLiteral();
-  testNullValue();
-  testTypes();
-
-  testWeirdStringKeys(new Map());
-  testWeirdStringKeys(new Map<String, String>());
-  testWeirdStringKeys(new HashMap());
-  testWeirdStringKeys(new HashMap<String, String>());
-  testWeirdStringKeys(new LinkedHashMap());
-  testWeirdStringKeys(new LinkedHashMap<String, String>());
-  testWeirdStringKeys(new SplayTreeMap());
-  testWeirdStringKeys(new SplayTreeMap<String, String>());
-  testWeirdStringKeys(new MapBaseMap<String, String>());
-  testWeirdStringKeys(new MapMixinMap<String, String>());
-  testWeirdStringKeys(newJsonMap());
-  testWeirdStringKeys(newJsonMapCustomReviver());
-
-  testNumericKeys(new Map());
-  testNumericKeys(new Map<num, String>());
-  testNumericKeys(new HashMap());
-  testNumericKeys(new HashMap<num, String>());
-  testNumericKeys(new HashMap.identity());
-  testNumericKeys(new HashMap<num, String>.identity());
-  testNumericKeys(new LinkedHashMap());
-  testNumericKeys(new LinkedHashMap<num, String>());
-  testNumericKeys(new LinkedHashMap.identity());
-  testNumericKeys(new LinkedHashMap<num, String>.identity());
-  testNumericKeys(new MapBaseMap<num, String>());
-  testNumericKeys(new MapMixinMap<num, String>());
-
-  testNaNKeys(new Map());
-  testNaNKeys(new Map<num, String>());
-  testNaNKeys(new HashMap());
-  testNaNKeys(new HashMap<num, String>());
-  testNaNKeys(new LinkedHashMap());
-  testNaNKeys(new LinkedHashMap<num, String>());
-  testNaNKeys(new MapBaseMap<num, String>());
-  testNaNKeys(new MapMixinMap<num, String>());
-  // Identity maps fail the NaN-keys tests because the test assumes that
-  // NaN is not equal to NaN.
-
-  testIdentityMap(new Map.identity());
-  testIdentityMap(new HashMap.identity());
-  testIdentityMap(new LinkedHashMap.identity());
-  testIdentityMap(new HashMap(equals: identical, hashCode: identityHashCode));
-  testIdentityMap(
-      new LinkedHashMap(equals: identical, hashCode: identityHashCode));
-  testIdentityMap(new HashMap(
-      equals: (x, y) => identical(x, y), hashCode: (x) => identityHashCode(x)));
-  testIdentityMap(new LinkedHashMap(
-      equals: (x, y) => identical(x, y), hashCode: (x) => identityHashCode(x)));
-
-  testCustomMap(new HashMap(
-      equals: myEquals,
-      hashCode: myHashCode,
-      isValidKey: (v) => v is Customer));
-  testCustomMap(new LinkedHashMap(
-      equals: myEquals,
-      hashCode: myHashCode,
-      isValidKey: (v) => v is Customer));
-  testCustomMap(
-      new HashMap<Customer, dynamic>(equals: myEquals, hashCode: myHashCode));
-
-  testCustomMap(new LinkedHashMap<Customer, dynamic>(
-      equals: myEquals, hashCode: myHashCode));
-
-  testIterationOrder(new LinkedHashMap());
-  testIterationOrder(new LinkedHashMap.identity());
-
-  testOtherKeys(new SplayTreeMap<int, int>());
-  testOtherKeys(
-      new SplayTreeMap<int, int>((int a, int b) => a - b, (v) => v is int));
-  testOtherKeys(new SplayTreeMap((int a, int b) => a - b, (v) => v is int));
-  testOtherKeys(new HashMap<int, int>());
-  testOtherKeys(new HashMap<int, int>.identity());
-  testOtherKeys(new HashMap<int, int>(
-      hashCode: (v) => v.hashCode, isValidKey: (v) => v is int));
-  testOtherKeys(new HashMap(
-      equals: (int x, int y) => x == y,
-      hashCode: (int v) => v.hashCode,
-      isValidKey: (v) => v is int));
-  testOtherKeys(new LinkedHashMap<int, int>());
-  testOtherKeys(new LinkedHashMap<int, int>.identity());
-  testOtherKeys(new LinkedHashMap<int, int>(
-      hashCode: (v) => v.hashCode, isValidKey: (v) => v is int));
-  testOtherKeys(new LinkedHashMap(
-      equals: (int x, int y) => x == y,
-      hashCode: (int v) => v.hashCode,
-      isValidKey: (v) => v is int));
-  testOtherKeys(new MapBaseMap<int, int>());
-  testOtherKeys(new MapMixinMap<int, int>());
-
-  testUnmodifiableMap(const {1: 37});
-  testUnmodifiableMap(new UnmodifiableMapView({1: 37}));
-  testUnmodifiableMap(new UnmodifiableMapBaseMap([1, 37]));
-
-  testFrom();
-}
-
-void test(Map map) {
-  testDeletedElement(map);
-  testMap(map, 1, 2, 3, 4, 5, 6, 7, 8);
-  map.clear();
-  testMap(map, "value1", "value2", "value3", "value4", "value5", "value6",
-      "value7", "value8");
-}
-
-void testLinkedHashMap() {
-  LinkedHashMap map = new LinkedHashMap();
-  Expect.equals(false, map.containsKey(1));
-  map[1] = 1;
-  map[1] = 2;
-  testLength(1, map);
-}
-
-void testMap(Map map, key1, key2, key3, key4, key5, key6, key7, key8) {
-  int value1 = 10;
-  int value2 = 20;
-  int value3 = 30;
-  int value4 = 40;
-  int value5 = 50;
-  int value6 = 60;
-  int value7 = 70;
-  int value8 = 80;
-
-  testLength(0, map);
-
-  map[key1] = value1;
-  Expect.equals(value1, map[key1]);
-  map[key1] = value2;
-  Expect.equals(false, map.containsKey(key2));
-  testLength(1, map);
-
-  map[key1] = value1;
-  Expect.equals(value1, map[key1]);
-  // Add enough entries to make sure the table grows.
-  map[key2] = value2;
-  Expect.equals(value2, map[key2]);
-  testLength(2, map);
-  map[key3] = value3;
-  Expect.equals(value2, map[key2]);
-  Expect.equals(value3, map[key3]);
-  map[key4] = value4;
-  Expect.equals(value3, map[key3]);
-  Expect.equals(value4, map[key4]);
-  map[key5] = value5;
-  Expect.equals(value4, map[key4]);
-  Expect.equals(value5, map[key5]);
-  map[key6] = value6;
-  Expect.equals(value5, map[key5]);
-  Expect.equals(value6, map[key6]);
-  map[key7] = value7;
-  Expect.equals(value6, map[key6]);
-  Expect.equals(value7, map[key7]);
-  map[key8] = value8;
-  Expect.equals(value1, map[key1]);
-  Expect.equals(value2, map[key2]);
-  Expect.equals(value3, map[key3]);
-  Expect.equals(value4, map[key4]);
-  Expect.equals(value5, map[key5]);
-  Expect.equals(value6, map[key6]);
-  Expect.equals(value7, map[key7]);
-  Expect.equals(value8, map[key8]);
-  testLength(8, map);
-
-  map.remove(key4);
-  Expect.equals(false, map.containsKey(key4));
-  testLength(7, map);
-
-  // Test clearing the table.
-  map.clear();
-  testLength(0, map);
-  Expect.equals(false, map.containsKey(key1));
-  Expect.equals(false, map.containsKey(key2));
-  Expect.equals(false, map.containsKey(key3));
-  Expect.equals(false, map.containsKey(key4));
-  Expect.equals(false, map.containsKey(key5));
-  Expect.equals(false, map.containsKey(key6));
-  Expect.equals(false, map.containsKey(key7));
-  Expect.equals(false, map.containsKey(key8));
-
-  // Test adding and removing again.
-  map[key1] = value1;
-  Expect.equals(value1, map[key1]);
-  testLength(1, map);
-  map[key2] = value2;
-  Expect.equals(value2, map[key2]);
-  testLength(2, map);
-  map[key3] = value3;
-  Expect.equals(value3, map[key3]);
-  map.remove(key3);
-  testLength(2, map);
-  map[key4] = value4;
-  Expect.equals(value4, map[key4]);
-  map.remove(key4);
-  testLength(2, map);
-  map[key5] = value5;
-  Expect.equals(value5, map[key5]);
-  map.remove(key5);
-  testLength(2, map);
-  map[key6] = value6;
-  Expect.equals(value6, map[key6]);
-  map.remove(key6);
-  testLength(2, map);
-  map[key7] = value7;
-  Expect.equals(value7, map[key7]);
-  map.remove(key7);
-  testLength(2, map);
-  map[key8] = value8;
-  Expect.equals(value8, map[key8]);
-  map.remove(key8);
-  testLength(2, map);
-
-  Expect.equals(true, map.containsKey(key1));
-  Expect.equals(true, map.containsValue(value1));
-
-  // Test Map.forEach.
-  Map otherMap = new Map();
-  void testForEachMap(key, value) {
-    otherMap[key] = value;
-  }
-
-  map.forEach(testForEachMap);
-  Expect.equals(true, otherMap.containsKey(key1));
-  Expect.equals(true, otherMap.containsKey(key2));
-  Expect.equals(true, otherMap.containsValue(value1));
-  Expect.equals(true, otherMap.containsValue(value2));
-  Expect.equals(2, otherMap.length);
-
-  otherMap.clear();
-  Expect.equals(0, otherMap.length);
-
-  // Test Collection.keys.
-  void testForEachCollection(value) {
-    otherMap[value] = value;
-  }
-
-  Iterable keys = map.keys;
-  keys.forEach(testForEachCollection);
-  Expect.equals(true, otherMap.containsKey(key1));
-  Expect.equals(true, otherMap.containsKey(key2));
-  Expect.equals(true, otherMap.containsValue(key1));
-  Expect.equals(true, otherMap.containsValue(key2));
-  Expect.equals(true, !otherMap.containsKey(value1));
-  Expect.equals(true, !otherMap.containsKey(value2));
-  Expect.equals(true, !otherMap.containsValue(value1));
-  Expect.equals(true, !otherMap.containsValue(value2));
-  Expect.equals(2, otherMap.length);
-  otherMap.clear();
-  Expect.equals(0, otherMap.length);
-
-  // Test Collection.values.
-  Iterable values = map.values;
-  values.forEach(testForEachCollection);
-  Expect.equals(true, !otherMap.containsKey(key1));
-  Expect.equals(true, !otherMap.containsKey(key2));
-  Expect.equals(true, !otherMap.containsValue(key1));
-  Expect.equals(true, !otherMap.containsValue(key2));
-  Expect.equals(true, otherMap.containsKey(value1));
-  Expect.equals(true, otherMap.containsKey(value2));
-  Expect.equals(true, otherMap.containsValue(value1));
-  Expect.equals(true, otherMap.containsValue(value2));
-  Expect.equals(2, otherMap.length);
-  otherMap.clear();
-  Expect.equals(0, otherMap.length);
-
-  // Test Map.putIfAbsent.
-  map.clear();
-  Expect.equals(false, map.containsKey(key1));
-  map.putIfAbsent(key1, () => 10);
-  Expect.equals(true, map.containsKey(key1));
-  Expect.equals(10, map[key1]);
-  Expect.equals(10, map.putIfAbsent(key1, () => 11));
-
-  // Test Map.addAll.
-  map.clear();
-  otherMap.clear();
-  otherMap[99] = 1;
-  otherMap[50] = 50;
-  otherMap[1] = 99;
-  map.addAll(otherMap);
-  Expect.equals(3, map.length);
-  Expect.equals(1, map[99]);
-  Expect.equals(50, map[50]);
-  Expect.equals(99, map[1]);
-  otherMap[50] = 42;
-  map.addAll(new HashMap.from(otherMap));
-  Expect.equals(3, map.length);
-  Expect.equals(1, map[99]);
-  Expect.equals(42, map[50]);
-  Expect.equals(99, map[1]);
-  otherMap[99] = 7;
-  map.addAll(new SplayTreeMap.from(otherMap));
-  Expect.equals(3, map.length);
-  Expect.equals(7, map[99]);
-  Expect.equals(42, map[50]);
-  Expect.equals(99, map[1]);
-  otherMap.remove(99);
-  map[99] = 0;
-  map.addAll(otherMap);
-  Expect.equals(3, map.length);
-  Expect.equals(0, map[99]);
-  Expect.equals(42, map[50]);
-  Expect.equals(99, map[1]);
-  map.clear();
-  otherMap.clear();
-  map.addAll(otherMap);
-  Expect.equals(0, map.length);
-}
-
-void testDeletedElement(Map map) {
-  map.clear();
-  for (int i = 0; i < 100; i++) {
-    map[1] = 2;
-    testLength(1, map);
-    map.remove(1);
-    testLength(0, map);
-  }
-  testLength(0, map);
-}
-
-void testMapLiteral() {
-  Map m = {"a": 1, "b": 2, "c": 3};
-  Expect.equals(3, m.length);
-  int sum = 0;
-  m.forEach((a, b) {
-    sum += b;
-  });
-  Expect.equals(6, sum);
-
-  List values = m.keys.toList();
-  Expect.equals(3, values.length);
-  String first = values[0];
-  String second = values[1];
-  String third = values[2];
-  String all = "${first}${second}${third}";
-  Expect.equals(3, all.length);
-  Expect.equals(true, all.contains("a", 0));
-  Expect.equals(true, all.contains("b", 0));
-  Expect.equals(true, all.contains("c", 0));
-}
-
-void testNullValue() {
-  Map m = {"a": 1, "b": null, "c": 3};
-
-  Expect.equals(null, m["b"]);
-  Expect.equals(true, m.containsKey("b"));
-  Expect.equals(3, m.length);
-
-  m["a"] = null;
-  m["c"] = null;
-  Expect.equals(null, m["a"]);
-  Expect.equals(true, m.containsKey("a"));
-  Expect.equals(null, m["c"]);
-  Expect.equals(true, m.containsKey("c"));
-  Expect.equals(3, m.length);
-
-  m.remove("a");
-  Expect.equals(2, m.length);
-  Expect.equals(null, m["a"]);
-  Expect.equals(false, m.containsKey("a"));
-}
-
-void testTypes() {
-  testMap(Map<num, String> map) {
-    Expect.isTrue(map is Map<num, String>);
-    Expect.isTrue(map is! Map<String, dynamic>);
-    Expect.isTrue(map is! Map<dynamic, int>);
-
-    // Use with properly typed keys and values.
-    map[42] = "text1";
-    map[43] = "text2";
-    map[42] = "text3";
-    Expect.equals("text3", map.remove(42));
-    Expect.equals(null, map[42]);
-    map[42] = "text4";
-
-    // Ensure that "containsKey", "containsValue" and "remove"
-    // accepts any object.
-    for (var object in [true, null, new Object()]) {
-      Expect.isFalse(map.containsKey(object));
-      Expect.isFalse(map.containsValue(object));
-      Expect.isNull(map.remove(object));
-      Expect.isNull(map[object]);
-    }
-  }
-
-  testMap(new HashMap<int, String>());
-  testMap(new LinkedHashMap<int, String>());
-  testMap(new SplayTreeMap<int, String>());
-  testMap(new SplayTreeMap<int, String>(Comparable.compare));
-  testMap(new SplayTreeMap<int, String>((int a, int b) => a.compareTo(b)));
-  testMap(new HashMap<num, String>());
-  testMap(new LinkedHashMap<num, String>());
-  testMap(new SplayTreeMap<num, String>());
-  testMap(new SplayTreeMap<num, String>(Comparable.compare));
-  testMap(new SplayTreeMap<num, String>((num a, num b) => a.compareTo(b)));
-}
-
-void testWeirdStringKeys(Map map) {
-  // Test weird keys.
-  var weirdKeys = const [
-    'hasOwnProperty',
-    'constructor',
-    'toLocaleString',
-    'propertyIsEnumerable',
-    '__defineGetter__',
-    '__defineSetter__',
-    '__lookupGetter__',
-    '__lookupSetter__',
-    'isPrototypeOf',
-    'toString',
-    'valueOf',
-    '__proto__',
-    '__count__',
-    '__parent__',
-    ''
-  ];
-  Expect.isTrue(map.isEmpty);
-  for (var key in weirdKeys) {
-    Expect.isFalse(map.containsKey(key));
-    Expect.equals(null, map[key]);
-    var value = 'value:$key';
-    map[key] = value;
-    Expect.isTrue(map.containsKey(key));
-    Expect.equals(value, map[key]);
-    Expect.equals(value, map.remove(key));
-    Expect.isFalse(map.containsKey(key));
-    Expect.equals(null, map[key]);
-  }
-  Expect.isTrue(map.isEmpty);
-}
-
-void testNumericKeys(Map map) {
-  var numericKeys = const [
-    double.INFINITY,
-    double.NEGATIVE_INFINITY,
-    0,
-    0.0,
-    -0.0
-  ];
-
-  Expect.isTrue(map.isEmpty);
-  for (var key in numericKeys) {
-    Expect.isFalse(map.containsKey(key));
-    Expect.equals(null, map[key]);
-    var value = 'value:$key';
-    map[key] = value;
-    Expect.isTrue(map.containsKey(key));
-    Expect.equals(value, map[key]);
-    Expect.equals(value, map.remove(key));
-    Expect.isFalse(map.containsKey(key));
-    Expect.equals(null, map[key]);
-  }
-  Expect.isTrue(map.isEmpty);
-}
-
-void testNaNKeys(Map map) {
-  Expect.isTrue(map.isEmpty);
-  // Test NaN.
-  var nan = double.NAN;
-  Expect.isFalse(map.containsKey(nan));
-  Expect.equals(null, map[nan]);
-
-  map[nan] = 'value:0';
-  Expect.isFalse(map.containsKey(nan));
-  Expect.equals(null, map[nan]);
-  testLength(1, map);
-
-  map[nan] = 'value:1';
-  Expect.isFalse(map.containsKey(nan));
-  Expect.equals(null, map[nan]);
-  testLength(2, map);
-
-  Expect.equals(null, map.remove(nan));
-  testLength(2, map);
-
-  var count = 0;
-  map.forEach((key, value) {
-    if (key.isNaN) count++;
-  });
-  Expect.equals(2, count);
-
-  map.clear();
-  Expect.isTrue(map.isEmpty);
-}
-
-void testLength(int length, Map map) {
-  Expect.equals(length, map.length);
-  Expect.equals(length, map.keys.length);
-  Expect.equals(length, map.values.length);
-  // Check being-empty.
-  var ifEmpty = (length == 0) ? Expect.isTrue : Expect.isFalse;
-  var ifNotEmpty = (length != 0) ? Expect.isTrue : Expect.isFalse;
-  ifEmpty(map.isEmpty);
-  ifNotEmpty(map.isNotEmpty);
-  ifEmpty(map.keys.isEmpty);
-  ifNotEmpty(map.keys.isNotEmpty);
-  ifEmpty(map.values.isEmpty);
-  ifNotEmpty(map.values.isNotEmpty);
-  // Test key/value iterators match their isEmpty/isNotEmpty.
-  ifNotEmpty(map.keys.iterator.moveNext());
-  ifNotEmpty(map.values.iterator.moveNext());
-  if (length == 0) {
-    for (var k in map.keys) Expect.fail("contains key when iterating: $k");
-    for (var v in map.values) Expect.fail("contains values when iterating: $v");
-  }
-}
-
-testIdentityMap(Map map) {
-  Expect.isTrue(map.isEmpty);
-
-  var nan = double.NAN;
-  // TODO(11551): Remove guard when dart2js makes identical(NaN, NaN) true.
-  if (identical(nan, nan)) {
-    map[nan] = 42;
-    testLength(1, map);
-    Expect.isTrue(map.containsKey(nan));
-    Expect.equals(42, map[nan]);
-    map[nan] = 37;
-    testLength(1, map);
-    Expect.equals(37, map[nan]);
-    Expect.equals(37, map.remove(nan));
-    testLength(0, map);
-  }
-
-  Vampire v1 = const Vampire(1);
-  Vampire v2 = const Vampire(2);
-  Expect.isFalse(v1 == v1);
-  Expect.isFalse(v2 == v2);
-  Expect.isTrue(v2 == v1); // Snob!
-
-  map[v1] = 1;
-  map[v2] = 2;
-  testLength(2, map);
-
-  Expect.isTrue(map.containsKey(v1));
-  Expect.isTrue(map.containsKey(v2));
-
-  Expect.equals(1, map[v1]);
-  Expect.equals(2, map[v2]);
-
-  Expect.equals(1, map.remove(v1));
-  testLength(1, map);
-  Expect.isFalse(map.containsKey(v1));
-  Expect.isTrue(map.containsKey(v2));
-
-  Expect.isNull(map.remove(v1));
-  Expect.equals(2, map.remove(v2));
-  testLength(0, map);
-
-  var eq01 = new Equalizer(0);
-  var eq02 = new Equalizer(0);
-  var eq11 = new Equalizer(1);
-  var eq12 = new Equalizer(1);
-  // Sanity.
-  Expect.equals(eq01, eq02);
-  Expect.equals(eq02, eq01);
-  Expect.equals(eq11, eq12);
-  Expect.equals(eq12, eq11);
-  Expect.notEquals(eq01, eq11);
-  Expect.notEquals(eq01, eq12);
-  Expect.notEquals(eq02, eq11);
-  Expect.notEquals(eq02, eq12);
-  Expect.notEquals(eq11, eq01);
-  Expect.notEquals(eq11, eq02);
-  Expect.notEquals(eq12, eq01);
-  Expect.notEquals(eq12, eq02);
-
-  map[eq01] = 0;
-  map[eq02] = 1;
-  map[eq11] = 2;
-  map[eq12] = 3;
-  testLength(4, map);
-
-  Expect.equals(0, map[eq01]);
-  Expect.equals(1, map[eq02]);
-  Expect.equals(2, map[eq11]);
-  Expect.equals(3, map[eq12]);
-
-  Expect.isTrue(map.containsKey(eq01));
-  Expect.isTrue(map.containsKey(eq02));
-  Expect.isTrue(map.containsKey(eq11));
-  Expect.isTrue(map.containsKey(eq12));
-
-  Expect.equals(1, map.remove(eq02));
-  Expect.equals(3, map.remove(eq12));
-  testLength(2, map);
-  Expect.isTrue(map.containsKey(eq01));
-  Expect.isFalse(map.containsKey(eq02));
-  Expect.isTrue(map.containsKey(eq11));
-  Expect.isFalse(map.containsKey(eq12));
-
-  Expect.equals(0, map[eq01]);
-  Expect.equals(null, map[eq02]);
-  Expect.equals(2, map[eq11]);
-  Expect.equals(null, map[eq12]);
-
-  Expect.equals(0, map.remove(eq01));
-  Expect.equals(2, map.remove(eq11));
-  testLength(0, map);
-
-  map[eq01] = 0;
-  map[eq02] = 1;
-  map[eq11] = 2;
-  map[eq12] = 3;
-  testLength(4, map);
-
-  // Transfer to equality-based map will collapse elements.
-  Map eqMap = new HashMap();
-  eqMap.addAll(map);
-  testLength(2, eqMap);
-  Expect.isTrue(eqMap.containsKey(eq01));
-  Expect.isTrue(eqMap.containsKey(eq02));
-  Expect.isTrue(eqMap.containsKey(eq11));
-  Expect.isTrue(eqMap.containsKey(eq12));
-
-  // Changing objects will not affect identity map.
-  map.clear();
-  var m1 = new Mutable(1);
-  var m2 = new Mutable(2);
-  var m3 = new Mutable(3);
-  map[m1] = 1;
-  map[m2] = 2;
-  map[m3] = 3;
-  Expect.equals(3, map.length);
-  Expect.isTrue(map.containsKey(m1));
-  Expect.isTrue(map.containsKey(m2));
-  Expect.isTrue(map.containsKey(m3));
-  Expect.notEquals(m1, m3);
-  m3.id = 1;
-  Expect.equals(m1, m3);
-  // Even if keys are equal, they are still not identical.
-  // Even if hashcode of m3 changed, it can still be found.
-  Expect.equals(1, map[m1]);
-  Expect.equals(3, map[m3]);
-}
-
-/** Class of objects that are equal if they hold the same id. */
-class Equalizer {
-  int id;
-  Equalizer(this.id);
-  int get hashCode => id;
-  bool operator ==(Object other) =>
-      other is Equalizer && id == (other as Equalizer).id;
-}
-
-/**
- * Objects that are not reflexive.
- *
- * They think they are better than their equals.
- */
-class Vampire {
-  final int generation;
-  const Vampire(this.generation);
-
-  int get hashCode => generation;
-
-  // The double-fang operator falsely claims that a vampire is equal to
-  // any of its sire's generation.
-  bool operator ==(Object other) =>
-      other is Vampire && generation - 1 == (other as Vampire).generation;
-}
-
-void testCustomMap(Map map) {
-  testLength(0, map);
-  var c11 = const Customer(1, 1);
-  var c12 = const Customer(1, 2);
-  var c21 = const Customer(2, 1);
-  var c22 = const Customer(2, 2);
-  // Sanity.
-  Expect.equals(c11, c12);
-  Expect.notEquals(c11, c21);
-  Expect.notEquals(c11, c22);
-  Expect.equals(c21, c22);
-  Expect.notEquals(c21, c11);
-  Expect.notEquals(c21, c12);
-
-  Expect.isTrue(myEquals(c11, c21));
-  Expect.isFalse(myEquals(c11, c12));
-  Expect.isFalse(myEquals(c11, c22));
-  Expect.isTrue(myEquals(c12, c22));
-  Expect.isFalse(myEquals(c12, c11));
-  Expect.isFalse(myEquals(c12, c21));
-
-  map[c11] = 42;
-  testLength(1, map);
-  Expect.isTrue(map.containsKey(c11));
-  Expect.isTrue(map.containsKey(c21));
-  Expect.isFalse(map.containsKey(c12));
-  Expect.isFalse(map.containsKey(c22));
-  Expect.equals(42, map[c11]);
-  Expect.equals(42, map[c21]);
-
-  map[c21] = 37;
-  testLength(1, map);
-  Expect.isTrue(map.containsKey(c11));
-  Expect.isTrue(map.containsKey(c21));
-  Expect.isFalse(map.containsKey(c12));
-  Expect.isFalse(map.containsKey(c22));
-  Expect.equals(37, map[c11]);
-  Expect.equals(37, map[c21]);
-
-  map[c22] = 42;
-  testLength(2, map);
-  Expect.isTrue(map.containsKey(c11));
-  Expect.isTrue(map.containsKey(c21));
-  Expect.isTrue(map.containsKey(c12));
-  Expect.isTrue(map.containsKey(c22));
-  Expect.equals(37, map[c11]);
-  Expect.equals(37, map[c21]);
-  Expect.equals(42, map[c12]);
-  Expect.equals(42, map[c22]);
-
-  Expect.equals(42, map.remove(c12));
-  testLength(1, map);
-  Expect.isTrue(map.containsKey(c11));
-  Expect.isTrue(map.containsKey(c21));
-  Expect.isFalse(map.containsKey(c12));
-  Expect.isFalse(map.containsKey(c22));
-  Expect.equals(37, map[c11]);
-  Expect.equals(37, map[c21]);
-
-  Expect.equals(37, map.remove(c11));
-  testLength(0, map);
-}
-
-void testUnmodifiableMap(Map map) {
-  Expect.isTrue(map.containsKey(1));
-  testLength(1, map);
-  Expect.equals(1, map.keys.first);
-  Expect.equals(37, map.values.first);
-
-  Expect.throws(map.clear);
-  Expect.throws(() {
-    map.remove(1);
-  });
-  Expect.throws(() {
-    map[2] = 42;
-  });
-  Expect.throws(() {
-    map.addAll({2: 42});
-  });
-}
-
-class Customer {
-  final int id;
-  final int secondId;
-  const Customer(this.id, this.secondId);
-  int get hashCode => id;
-  bool operator ==(Object other) {
-    if (other is! Customer) return false;
-    Customer otherCustomer = other;
-    return id == otherCustomer.id;
-  }
-}
-
-int myHashCode(Customer c) => c.secondId;
-bool myEquals(Customer a, Customer b) => a.secondId == b.secondId;
-
-void testIterationOrder(Map map) {
-  var order = [0, 6, 4, 2, 7, 9, 7, 1, 2, 5, 3];
-  for (int i = 0; i < order.length; i++) map[order[i]] = i;
-  Expect.listEquals(map.keys.toList(), [0, 6, 4, 2, 7, 9, 1, 5, 3]);
-  Expect.listEquals(map.values.toList(), [0, 1, 2, 8, 6, 5, 7, 9, 10]);
-}
-
-void testOtherKeys(Map<int, int> map) {
-  // Test that non-int keys are allowed in containsKey/remove/lookup.
-  // Custom hash sets and tree sets must be constructed so they don't
-  // use the equality/comparator on incompatible objects.
-
-  // This should not throw in either checked or unchecked mode.
-  map[0] = 0;
-  map[1] = 1;
-  map[2] = 2;
-  Expect.isFalse(map.containsKey("not an int"));
-  Expect.isFalse(map.containsKey(1.5));
-  Expect.isNull(map.remove("not an int"));
-  Expect.isNull(map.remove(1.5));
-  Expect.isNull(map["not an int"]);
-  Expect.isNull(map[1.5]);
-}
-
-class Mutable {
-  int id;
-  Mutable(this.id);
-  int get hashCode => id;
-  bool operator ==(other) => other is Mutable && other.id == id;
-}
-
-// Slow implementation of Map based on MapBase.
-abstract class MapBaseOperations<K, V> {
-  final List _keys = <K>[];
-  final List _values = <V>[];
-  int _modCount = 0;
-
-  V operator [](Object key) {
-    int index = _keys.indexOf(key);
-    if (index < 0) return null;
-    return _values[index];
-  }
-
-  Iterable<K> get keys => new TestKeyIterable<K>(this);
-
-  void operator []=(K key, V value) {
-    int index = _keys.indexOf(key);
-    if (index >= 0) {
-      _values[index] = value;
-    } else {
-      _modCount++;
-      _keys.add(key);
-      _values.add(value);
-    }
-  }
-
-  V remove(Object key) {
-    int index = _keys.indexOf(key);
-    if (index >= 0) {
-      var result = _values[index];
-      key = _keys.removeLast();
-      var value = _values.removeLast();
-      if (index != _keys.length) {
-        _keys[index] = key;
-        _values[index] = value;
-      }
-      _modCount++;
-      return result;
-    }
-    return null;
-  }
-
-  void clear() {
-    // Clear cannot be based on remove, since remove won't remove keys that
-    // are not equal to themselves. It will fail the testNaNKeys test.
-    _keys.clear();
-    _values.clear();
-    _modCount++;
-  }
-}
-
-class MapBaseMap<K, V> = MapBase<K, V> with MapBaseOperations<K, V>;
-class MapMixinMap<K, V> = MapBaseOperations<K, V> with MapMixin<K, V>;
-
-class TestKeyIterable<K> extends IterableBase<K> {
-  final _map;
-  TestKeyIterable(this._map);
-  int get length => _map._keys.length;
-  Iterator<K> get iterator => new TestKeyIterator<K>(_map);
-}
-
-class TestKeyIterator<K> implements Iterator<K> {
-  final _map;
-  final int _modCount;
-  int _index = 0;
-  var _current;
-  TestKeyIterator(map)
-      : _map = map,
-        _modCount = map._modCount;
-  bool moveNext() {
-    if (_modCount != _map._modCount) {
-      throw new ConcurrentModificationError(_map);
-    }
-    if (_index == _map._keys.length) {
-      _current = null;
-      return false;
-    }
-    _current = _map._keys[_index++];
-    return true;
-  }
-
-  K get current => _current;
-}
-
-// Slow implementation of Map based on MapBase.
-class UnmodifiableMapBaseMap<K, V> extends UnmodifiableMapBase<K, V> {
-  final List _keys = <K>[];
-  final List _values = <V>[];
-  UnmodifiableMapBaseMap(List pairs) {
-    for (int i = 0; i < pairs.length; i += 2) {
-      _keys.add(pairs[i]);
-      _values.add(pairs[i + 1]);
-    }
-  }
-
-  int get _modCount => 0;
-
-  V operator [](K key) {
-    int index = _keys.indexOf(key);
-    if (index < 0) return null;
-    return _values[index];
-  }
-
-  Iterable<K> get keys => _keys.skip(0);
-}
-
-abstract class Super implements Comparable {}
-
-abstract class Interface implements Comparable {}
-
-class Sub extends Super implements Interface, Comparable {
-  int compareTo(Sub other) => 0;
-  int get hashCode => 0;
-  bool operator ==(other) => other is Sub;
-}
-
-expectMap(Map expect, Map actual) {
-  Expect.equals(expect.length, actual.length, "length");
-  for (var key in expect.keys) {
-    Expect.isTrue(actual.containsKey(key), "containsKey $key");
-    Expect.equals(expect[key], actual[key]);
-  }
-}
-
-void testFrom() {
-  // Check contents.
-  for (var map in [
-    {},
-    {1: 1},
-    {1: 2, 3: 4, 5: 6, 7: 8}
-  ]) {
-    expectMap(map, new Map.from(map));
-    expectMap(map, new HashMap.from(map));
-    expectMap(map, new LinkedHashMap.from(map));
-    expectMap(map, new SplayTreeMap.from(map));
-  }
-  // Test type combinations allowed.
-  Map<int, int> intMap = <int, int>{1: 2, 3: 4};
-  Map<num, num> numMap = <num, num>{1: 2, 3: 4};
-  expectMap(intMap, new Map<int, int>.from(numMap));
-  expectMap(intMap, new Map<num, num>.from(intMap));
-  expectMap(intMap, new HashMap<int, int>.from(numMap));
-  expectMap(intMap, new HashMap<num, num>.from(intMap));
-  expectMap(intMap, new LinkedHashMap<int, int>.from(numMap));
-  expectMap(intMap, new LinkedHashMap<num, num>.from(intMap));
-  expectMap(intMap, new SplayTreeMap<int, int>.from(numMap));
-  expectMap(intMap, new SplayTreeMap<num, num>.from(intMap));
-
-  var sub = new Sub();
-  Map<Super, Super> superMap = <Super, Super>{sub: sub};
-  Map<Interface, Interface> interfaceMap = <Interface, Interface>{sub: sub};
-  expectMap(superMap, new Map<Super, Super>.from(interfaceMap));
-  expectMap(superMap, new Map<Interface, Interface>.from(superMap));
-  expectMap(superMap, new HashMap<Super, Super>.from(interfaceMap));
-  expectMap(superMap, new HashMap<Interface, Interface>.from(superMap));
-  expectMap(superMap, new LinkedHashMap<Super, Super>.from(interfaceMap));
-  expectMap(superMap, new LinkedHashMap<Interface, Interface>.from(superMap));
-  expectMap(superMap, new SplayTreeMap<Super, Super>.from(interfaceMap));
-  expectMap(superMap, new SplayTreeMap<Interface, Interface>.from(superMap));
-}
diff --git a/tests/corelib/map_to_string_test.dart b/tests/corelib/map_to_string_test.dart
deleted file mode 100644
index 8a50bf6..0000000
--- a/tests/corelib/map_to_string_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void main() {
-  Map m = new Map();
-
-  m[0] = 0;
-  m[1] = 1;
-  m[2] = m;
-
-  Expect.equals('{0: 0, 1: 1, 2: {...}}', m.toString());
-
-  // Throwing in the middle of a toString does not leave the
-  // map as being visited
-  ThrowOnToString err = new ThrowOnToString();
-  m[1] = err;
-  Expect.throws(m.toString, (e) => e == "Bad!");
-  m[1] = 1;
-  Expect.equals('{0: 0, 1: 1, 2: {...}}', m.toString());
-  m[err] = 1;
-  Expect.throws(m.toString, (e) => e == "Bad!");
-  m.remove(err);
-}
-
-class ThrowOnToString {
-  String toString() {
-    throw "Bad!";
-  }
-}
diff --git a/tests/corelib/map_values2_test.dart b/tests/corelib/map_values2_test.dart
deleted file mode 100644
index 5fc754e..0000000
--- a/tests/corelib/map_values2_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var map1 = <String, int>{"foo": 42, "bar": 499};
-  var map2 = <String, int>{};
-  var map3 = const <String, int>{"foo": 42, "bar": 499};
-  var map4 = const <String, int>{};
-  var map5 = new Map<String, int>();
-  map5["foo"] = 43;
-  map5["bar"] = 500;
-  var map6 = new Map<String, int>();
-
-  Expect.isTrue(map1.values is Iterable<int>);
-  Expect.isFalse(map1.values is Iterable<bool>);
-  Expect.isFalse(map1.values is List);
-  Expect.equals(2, map1.values.length);
-  Expect.equals(42, map1.values.first);
-  Expect.equals(499, map1.values.last);
-
-  Expect.isTrue(map2.values is Iterable<int>);
-  Expect.isFalse(map2.values is Iterable<bool>);
-  Expect.isFalse(map2.values is List);
-  Expect.equals(0, map2.values.length);
-
-  Expect.isTrue(map3.values is Iterable<int>);
-  Expect.isFalse(map3.values is Iterable<bool>);
-  Expect.isFalse(map3.values is List);
-  Expect.equals(2, map3.values.length);
-  Expect.equals(42, map3.values.first);
-  Expect.equals(499, map3.values.last);
-
-  Expect.isTrue(map4.values is Iterable<int>);
-  Expect.isFalse(map4.values is Iterable<bool>);
-  Expect.isFalse(map4.values is List);
-  Expect.equals(0, map4.values.length);
-
-  Expect.isTrue(map5.values is Iterable<int>);
-  Expect.isFalse(map5.values is Iterable<bool>);
-  Expect.isFalse(map5.values is List);
-  Expect.equals(2, map5.values.length);
-  // new Map gives a LinkedHashMap, so we know the order.
-  Expect.isTrue(map5.values.first == 43);
-  Expect.isTrue(map5.values.last == 500);
-
-  Expect.isTrue(map6.values is Iterable<int>);
-  Expect.isFalse(map6.values is Iterable<bool>);
-  Expect.isFalse(map6.values is List);
-  Expect.equals(0, map6.values.length);
-}
diff --git a/tests/corelib/map_values3_test.dart b/tests/corelib/map_values3_test.dart
deleted file mode 100644
index 44c356c..0000000
--- a/tests/corelib/map_values3_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var map1 = <int, String>{1: "42", 2: "499"};
-  var map2 = <int, String>{};
-  var map3 = const <int, String>{3: "42", 4: "499"};
-  var map4 = const <int, String>{};
-  var map5 = new Map<int, String>();
-  map5[5] = "43";
-  map5[6] = "500";
-  var map6 = new Map<int, String>();
-
-  Expect.isTrue(map1.values is Iterable<String>);
-  Expect.isFalse(map1.values is Iterable<bool>);
-  Expect.isFalse(map1.values is List);
-  Expect.equals(2, map1.values.length);
-  Expect.equals("42", map1.values.first);
-  Expect.equals("499", map1.values.last);
-
-  Expect.isTrue(map2.values is Iterable<String>);
-  Expect.isFalse(map2.values is Iterable<bool>);
-  Expect.isFalse(map2.values is List);
-  Expect.equals(0, map2.values.length);
-
-  Expect.isTrue(map3.values is Iterable<String>);
-  Expect.isFalse(map3.values is Iterable<bool>);
-  Expect.isFalse(map3.values is List);
-  Expect.equals(2, map3.values.length);
-  Expect.equals("42", map3.values.first);
-  Expect.equals("499", map3.values.last);
-
-  Expect.isTrue(map4.values is Iterable<String>);
-  Expect.isFalse(map4.values is Iterable<bool>);
-  Expect.isFalse(map4.values is List);
-  Expect.equals(0, map4.values.length);
-
-  Expect.isTrue(map5.values is Iterable<String>);
-  Expect.isFalse(map5.values is Iterable<bool>);
-  Expect.isFalse(map5.values is List);
-  Expect.equals(2, map5.values.length);
-  // new Map gives a LinkedHashMap, so we know the order.
-  Expect.isTrue(map5.values.first == "43");
-  Expect.isTrue(map5.values.last == "500");
-
-  Expect.isTrue(map6.values is Iterable<String>);
-  Expect.isFalse(map6.values is Iterable<bool>);
-  Expect.isFalse(map6.values is List);
-  Expect.equals(0, map6.values.length);
-}
diff --git a/tests/corelib/map_values4_test.dart b/tests/corelib/map_values4_test.dart
deleted file mode 100644
index 4f99056..0000000
--- a/tests/corelib/map_values4_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Dart2js had a bug where the type information was not set correctly if the
-// generic type of the map was not directly used (but only indirectly through
-// map.values).
-
-main() {
-  var map1 = <int, String>{1: "42", 2: "499"};
-  Expect.isTrue(map1.values is Iterable<String>);
-  Expect.isFalse(map1.values is Iterable<bool>);
-}
diff --git a/tests/corelib/map_values_test.dart b/tests/corelib/map_values_test.dart
deleted file mode 100644
index e5c3670..0000000
--- a/tests/corelib/map_values_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var map1 = {"foo": 42, "bar": 499};
-  var map2 = {};
-  var map3 = const {"foo": 42, "bar": 499};
-  var map4 = const {};
-  var map5 = new Map<String, int>();
-  map5["foo"] = 43;
-  map5["bar"] = 500;
-  var map6 = new Map<String, bool>();
-
-  Expect.isTrue(map1.values is Iterable);
-  Expect.isFalse(map1.values is List);
-  Expect.equals(2, map1.values.length);
-  Expect.equals(42, map1.values.first);
-  Expect.equals(499, map1.values.last);
-
-  Expect.isTrue(map2.values is Iterable);
-  Expect.isFalse(map2.values is List);
-  Expect.equals(0, map2.values.length);
-
-  Expect.isTrue(map3.values is Iterable);
-  Expect.isFalse(map3.values is List);
-  Expect.equals(2, map3.values.length);
-  Expect.equals(42, map3.values.first);
-  Expect.equals(499, map3.values.last);
-
-  Expect.isTrue(map4.values is Iterable);
-  Expect.isFalse(map4.values is List);
-  Expect.equals(0, map4.values.length);
-
-  Expect.isTrue(map5.values is Iterable);
-  Expect.isFalse(map5.values is List);
-  Expect.equals(2, map5.values.length);
-  Expect.isTrue(map5.values.first == 43 || map5.values.first == 500);
-  Expect.isTrue(map5.values.last == 43 || map5.values.last == 500);
-  Expect.notEquals(map5.values.first, map5.values.last);
-
-  Expect.isTrue(map6.values is Iterable);
-  Expect.isFalse(map6.values is List);
-  Expect.equals(0, map6.values.length);
-}
diff --git a/tests/corelib/maps_test.dart b/tests/corelib/maps_test.dart
deleted file mode 100644
index 9183c23..0000000
--- a/tests/corelib/maps_test.dart
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2011, 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 maps_test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-main() {
-  final key1 = "key1";
-  final key2 = "key2";
-  final key3 = "key3";
-  final key4 = "key4";
-  final key5 = "key5";
-  final key6 = "key6";
-  final key7 = "key7";
-  final key8 = "key8";
-
-  final value1 = 10;
-  final value2 = 20;
-  final value3 = 30;
-  final value4 = 40;
-  final value5 = 50;
-  final value6 = 60;
-  final value7 = 70;
-  final value8 = 80;
-
-  Map map = new Map();
-
-  map[key1] = value1;
-  map[key1] = value2;
-  Expect.equals(false, Maps.containsKey(map, key2));
-  Expect.equals(1, Maps.length(map));
-
-  map[key1] = value1;
-  // Add enough entries to make sure the table grows.
-  map[key2] = value2;
-  Expect.equals(2, Maps.length(map));
-  map[key3] = value3;
-  map[key4] = value4;
-  map[key5] = value5;
-  map[key6] = value6;
-  map[key7] = value7;
-  map[key8] = value8;
-  Expect.equals(8, Maps.length(map));
-
-  map.remove(key4);
-  Expect.equals(false, Maps.containsKey(map, key4));
-  Expect.equals(7, Maps.length(map));
-
-  // Test clearing the table.
-  Maps.clear(map);
-  Expect.equals(0, Maps.length(map));
-  Expect.equals(false, Maps.containsKey(map, key1));
-  Expect.equals(false, map.containsKey(key1));
-  Expect.equals(false, Maps.containsKey(map, key2));
-  Expect.equals(false, map.containsKey(key2));
-  Expect.equals(false, Maps.containsKey(map, key3));
-  Expect.equals(false, map.containsKey(key3));
-  Expect.equals(false, Maps.containsKey(map, key4));
-  Expect.equals(false, map.containsKey(key4));
-  Expect.equals(false, Maps.containsKey(map, key5));
-  Expect.equals(false, map.containsKey(key5));
-  Expect.equals(false, Maps.containsKey(map, key6));
-  Expect.equals(false, map.containsKey(key6));
-  Expect.equals(false, Maps.containsKey(map, key7));
-  Expect.equals(false, map.containsKey(key7));
-  Expect.equals(false, Maps.containsKey(map, key8));
-  Expect.equals(false, map.containsKey(key8));
-
-  // Test adding and removing again.
-  map[key1] = value1;
-  Expect.equals(1, Maps.length(map));
-  map[key2] = value2;
-  Expect.equals(2, Maps.length(map));
-  map[key3] = value3;
-  map.remove(key3);
-  Expect.equals(2, Maps.length(map));
-  map[key4] = value4;
-  map.remove(key4);
-  Expect.equals(2, Maps.length(map));
-  map[key5] = value5;
-  map.remove(key5);
-  Expect.equals(2, Maps.length(map));
-  map[key6] = value6;
-  map.remove(key6);
-  Expect.equals(2, Maps.length(map));
-  map[key7] = value7;
-  map.remove(key7);
-  Expect.equals(2, Maps.length(map));
-  map[key8] = value8;
-  map.remove(key8);
-  Expect.equals(2, Maps.length(map));
-
-  Expect.equals(true, Maps.containsKey(map, key1));
-  Expect.equals(true, Maps.containsValue(map, value1));
-
-  // Test Map.forEach.
-  Map other_map = new Map();
-  void testForEachMap(key, value) {
-    other_map[key] = value;
-  }
-
-  Maps.forEach(map, testForEachMap);
-  Expect.equals(true, other_map.containsKey(key1));
-  Expect.equals(true, other_map.containsKey(key2));
-  Expect.equals(true, other_map.containsValue(value1));
-  Expect.equals(true, other_map.containsValue(value2));
-  Expect.equals(2, Maps.length(other_map));
-
-  // Test Collection.values.
-  void testForEachCollection(value) {
-    other_map[value] = value;
-  }
-
-  Iterable values = Maps.getValues(map);
-  other_map = new Map();
-  values.forEach(testForEachCollection);
-  Expect.equals(true, !other_map.containsKey(key1));
-  Expect.equals(true, !other_map.containsKey(key2));
-  Expect.equals(true, !other_map.containsValue(key1));
-  Expect.equals(true, !other_map.containsValue(key2));
-  Expect.equals(true, other_map.containsKey(value1));
-  Expect.equals(true, other_map.containsKey(value2));
-  Expect.equals(true, other_map.containsValue(value1));
-  Expect.equals(true, other_map.containsValue(value2));
-  Expect.equals(2, other_map.length);
-  other_map.clear();
-
-  // Test Map.putIfAbsent.
-  map.clear();
-  Expect.equals(false, Maps.containsKey(map, key1));
-  Maps.putIfAbsent(map, key1, () => 10);
-  Expect.equals(true, map.containsKey(key1));
-  Expect.equals(10, map[key1]);
-  Expect.equals(10, Maps.putIfAbsent(map, key1, () => 11));
-}
diff --git a/tests/corelib/nan_infinity_test.dart b/tests/corelib/nan_infinity_test.dart
deleted file mode 100644
index bb8b1a7..0000000
--- a/tests/corelib/nan_infinity_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing NaN and Infinity.
-
-void main() {
-  // Sanity tests.
-  Expect.isFalse(1.5.isNaN);
-  Expect.isFalse(1.5.isInfinite);
-  Expect.isTrue(1.5.isFinite);
-  Expect.isFalse(1.5.isNegative);
-  Expect.isTrue((-1.5).isNegative);
-  Expect.isFalse(0.0.isNegative);
-  Expect.isTrue((-0.0).isNegative);
-  Expect.isTrue((-0.0).isFinite);
-
-  Expect.isFalse(1.isNaN);
-  Expect.isFalse(1.isInfinite);
-  Expect.isTrue(1.isFinite);
-  Expect.isFalse(1.isNegative);
-  Expect.isTrue((-1).isNegative);
-
-  // Test that predicates give the correct result.
-  Expect.isTrue(double.NAN.isNaN);
-  Expect.isFalse(double.NAN.isInfinite);
-  Expect.isFalse(double.NAN.isFinite);
-  Expect.isFalse(double.NAN.isNegative);
-  Expect.isFalse((-double.NAN).isNegative);
-
-  Expect.isFalse(double.INFINITY.isNaN);
-  Expect.isTrue(double.INFINITY.isInfinite);
-  Expect.isFalse(double.INFINITY.isFinite);
-  Expect.isFalse(double.INFINITY.isNegative);
-  Expect.isTrue((-double.INFINITY).isNegative);
-
-  Expect.isFalse(double.NEGATIVE_INFINITY.isNaN);
-  Expect.isTrue(double.NEGATIVE_INFINITY.isInfinite);
-  Expect.isFalse(double.NEGATIVE_INFINITY.isFinite);
-  Expect.isTrue(double.NEGATIVE_INFINITY.isNegative);
-  Expect.isFalse((-double.NEGATIVE_INFINITY).isNegative);
-
-  // Test toString.
-  Expect.equals("NaN", double.NAN.toString());
-  Expect.equals("Infinity", double.INFINITY.toString());
-  Expect.equals("-Infinity", double.NEGATIVE_INFINITY.toString());
-
-  // Test identities.
-  Expect.isTrue(identical(double.NAN, double.NAN)); // //# 01: ok
-  Expect.isTrue(identical(double.INFINITY, double.INFINITY));
-  Expect.isTrue(identical(double.NEGATIVE_INFINITY, double.NEGATIVE_INFINITY));
-  Expect.isFalse(identical(double.NAN, double.INFINITY));
-  Expect.isFalse(identical(double.NAN, double.NEGATIVE_INFINITY));
-  Expect.isFalse(identical(double.INFINITY, double.NEGATIVE_INFINITY));
-  Expect.isFalse(identical(double.NAN, -double.NAN));
-  Expect.isTrue(identical(double.INFINITY, -double.NEGATIVE_INFINITY));
-  Expect.isTrue(identical(double.NEGATIVE_INFINITY, -double.INFINITY));
-
-  // Test equalities
-  Expect.isTrue(double.INFINITY == double.INFINITY);
-  Expect.isTrue(double.NEGATIVE_INFINITY == double.NEGATIVE_INFINITY);
-  Expect.isFalse(double.INFINITY == double.NEGATIVE_INFINITY);
-  Expect.isFalse(double.NEGATIVE_INFINITY == double.INFINITY);
-  Expect.isFalse(double.NAN == double.NAN);
-  Expect.isFalse(double.NAN == double.INFINITY);
-  Expect.isFalse(double.NAN == double.NEGATIVE_INFINITY);
-  Expect.isFalse(double.INFINITY == double.NAN);
-  Expect.isFalse(double.NEGATIVE_INFINITY == double.NAN);
-
-  // Test relational order.
-  Expect.isFalse(double.NAN < double.NAN);
-  Expect.isFalse(double.NAN < double.INFINITY);
-  Expect.isFalse(double.NAN < double.NEGATIVE_INFINITY);
-  Expect.isFalse(double.NAN > double.NAN);
-  Expect.isFalse(double.NAN > double.INFINITY);
-  Expect.isFalse(double.NAN > double.NEGATIVE_INFINITY);
-  Expect.isFalse(double.INFINITY < double.NAN);
-  Expect.isFalse(double.NEGATIVE_INFINITY < double.NAN);
-  Expect.isFalse(double.INFINITY > double.NAN);
-  Expect.isFalse(double.NEGATIVE_INFINITY > double.NAN);
-  Expect.isTrue(double.INFINITY > double.NEGATIVE_INFINITY);
-  Expect.isFalse(double.INFINITY < double.NEGATIVE_INFINITY);
-
-  // NaN is contagious.
-  Expect.isTrue((3.0 * double.NAN).isNaN);
-  Expect.isTrue((3.0 + double.NAN).isNaN);
-  Expect.isTrue((-double.NAN).isNaN);
-}
diff --git a/tests/corelib/null_nosuchmethod_test.dart b/tests/corelib/null_nosuchmethod_test.dart
deleted file mode 100644
index ec3c2f2..0000000
--- a/tests/corelib/null_nosuchmethod_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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";
-
-// Test that Null's noSuchMethod can be closurized and called directly.
-
-main() {
-  var x;
-  // Non-existing method calls noSuchMethod.
-  Expect.throws(() => x.foo(), (e) => e is NoSuchMethodError);
-
-  // Calling noSuchMethod directly.
-  Expect.throws(() => x.noSuchMethod("foo", []), (e) => e is NoSuchMethodError);
-
-  // Closurizing noSuchMethod and calling it.
-  var nsm = x.noSuchMethod;
-  Expect.notEquals(null, nsm);
-  Expect.throws(() => nsm("foo", []), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/corelib/null_test.dart b/tests/corelib/null_test.dart
deleted file mode 100644
index 994ca40..0000000
--- a/tests/corelib/null_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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";
-
-// Test that Null inherits properties from Object.
-
-main() {
-  var x;
-
-  Expect.isTrue(x is Object);
-  Expect.isTrue(x is dynamic);
-  Expect.isTrue(x is! String);
-  Expect.isTrue(x is! int);
-
-  // These shouldn't throw.
-  x.runtimeType;
-  x.toString();
-  x.hashCode;
-
-  // operator== is inherited from Object. It's the same as identical.
-  // It's not really testable.
-  Expect.isTrue(identical(x, null));
-  Expect.isTrue(x == null);
-
-  // Methods can be closurized and yields the same result.
-  var ts = x.toString;
-  Expect.equals(null.toString(), ts());
-
-  // noSuchMethod is tested in null_nosuchmethod_test.dart.
-}
diff --git a/tests/corelib/num_clamp_test.dart b/tests/corelib/num_clamp_test.dart
deleted file mode 100644
index b8731ab..0000000
--- a/tests/corelib/num_clamp_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// 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.
-// Test num.clamp.
-
-import "package:expect/expect.dart";
-
-testIntClamp() {
-  Expect.equals(2, 2.clamp(1, 3));
-  Expect.equals(1, 0.clamp(1, 3));
-  Expect.equals(3, 4.clamp(1, 3));
-  Expect.equals(-2, (-2).clamp(-3, -1));
-  Expect.equals(-1, 0.clamp(-3, -1));
-  Expect.equals(-3, (-4).clamp(-3, -1));
-  Expect.equals(0, 1.clamp(0, 0));
-  Expect.equals(0, (-1).clamp(0, 0));
-  Expect.equals(0, 0.clamp(0, 0));
-  Expect.throws(() => 0.clamp(0, -1), (e) => e is ArgumentError);
-  Expect.throws(
-      () => 0.clamp("str", -1), (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(
-      () => 0.clamp(0, "2"), (e) => e is ArgumentError || e is TypeError);
-}
-
-testDoubleClamp() {
-  Expect.equals(2.0, 2.clamp(1.0, 3.0));
-  Expect.equals(1.0, 0.clamp(1.0, 3.0));
-  Expect.equals(3.0, 4.clamp(1.0, 3.0));
-  Expect.equals(-2.0, (-2.0).clamp(-3.0, -1.0));
-  Expect.equals(-1.0, 0.0.clamp(-3.0, -1.0));
-  Expect.equals(-3.0, (-4.0).clamp(-3.0, -1.0));
-  Expect.equals(0.0, 1.0.clamp(0.0, 0.0));
-  Expect.equals(0.0, (-1.0).clamp(0.0, 0.0));
-  Expect.equals(0.0, 0.0.clamp(0.0, 0.0));
-  Expect.throws(() => 0.0.clamp(0.0, -1.0), (e) => e is ArgumentError);
-  Expect.throws(() => 0.0.clamp("str", -1.0),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(
-      () => 0.0.clamp(0.0, "2"), (e) => e is ArgumentError || e is TypeError);
-}
-
-testDoubleClampInt() {
-  Expect.equals(2.0, 2.0.clamp(1, 3));
-  Expect.equals(1, 0.0.clamp(1, 3));
-  Expect.isTrue(0.0.clamp(1, 3) is int);
-  Expect.equals(3, 4.0.clamp(1, 3));
-  Expect.isTrue(4.0.clamp(1, 3) is int);
-  Expect.equals(-2.0, (-2.0).clamp(-3, -1));
-  Expect.equals(-1, 0.0.clamp(-3, -1));
-  Expect.isTrue(0.0.clamp(-3, -1) is int);
-  Expect.equals(-3, (-4.0).clamp(-3, -1));
-  Expect.isTrue((-4.0).clamp(-3, -1) is int);
-  Expect.equals(0, 1.0.clamp(0, 0));
-  Expect.isTrue(1.0.clamp(0, 0) is int);
-  Expect.equals(0, (-1.0).clamp(0, 0));
-  Expect.isTrue((-1.0).clamp(0, 0) is int);
-  Expect.equals(0.0, 0.0.clamp(0, 0));
-  Expect.isTrue(0.0.clamp(0, 0) is double);
-  Expect.throws(() => 0.0.clamp(0, -1), (e) => e is ArgumentError);
-  Expect.throws(
-      () => 0.0.clamp("str", -1), (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(
-      () => 0.0.clamp(0, "2"), (e) => e is ArgumentError || e is TypeError);
-}
-
-testDoubleClampExtremes() {
-  Expect.equals(2.0, 2.0.clamp(-double.INFINITY, double.INFINITY));
-  Expect.equals(2.0, 2.0.clamp(-double.INFINITY, double.NAN));
-  Expect.equals(double.INFINITY, 2.0.clamp(double.INFINITY, double.NAN));
-  Expect.isTrue(2.0.clamp(double.NAN, double.NAN).isNaN);
-  Expect.throws(
-      () => 0.0.clamp(double.NAN, double.INFINITY), (e) => e is ArgumentError);
-}
-
-main() {
-  testIntClamp();
-  testDoubleClamp();
-  testDoubleClampInt();
-  testDoubleClampExtremes();
-}
diff --git a/tests/corelib/num_parse_test.dart b/tests/corelib/num_parse_test.dart
deleted file mode 100644
index 33f1d8a..0000000
--- a/tests/corelib/num_parse_test.dart
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright (c) 2013 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";
-
-const whiteSpace = const [
-  "",
-  "\x09",
-  "\x0a",
-  "\x0b",
-  "\x0c",
-  "\x0d",
-  "\x85",
-  "\xa0",
-  "\u1680",
-  "\u2000",
-  "\u2001",
-  "\u2002",
-  "\u2003",
-  "\u2004",
-  "\u2005",
-  "\u2006",
-  "\u2007",
-  "\u2008",
-  "\u2009",
-  "\u200a",
-  "\u2028",
-  "\u2029",
-  "\u202f",
-  "\u205f",
-  "\u3000",
-  "\uFEFF"
-];
-
-void expectNumEquals(num expect, num actual, String message) {
-  if (expect is double && expect.isNaN) {
-    Expect.isTrue(actual is double && actual.isNaN, "isNaN: $message");
-  } else {
-    Expect.identical(expect, actual, message);
-  }
-}
-
-// Test source surrounded by any combination of whitespace.
-void testParseAllWhitespace(String source, num result) {
-  for (String ws1 in whiteSpace) {
-    for (String ws2 in whiteSpace) {
-      String padded = "$ws1$source$ws2";
-      // Use Expect.identical because it also handles NaN and 0.0/-0.0.
-      // Except on dart2js: http://dartbug.com/11551
-      expectNumEquals(result, num.parse(padded), "parse '$padded'");
-      padded = "$ws1$ws2$source";
-      expectNumEquals(result, num.parse(padded), "parse '$padded'");
-      padded = "$source$ws1$ws2";
-      expectNumEquals(result, num.parse(padded), "parse '$padded'");
-    }
-  }
-}
-
-// Test source and -source surrounded by any combination of whitespace.
-void testParseWhitespace(String source, num result) {
-  assert(result >= 0);
-  testParseAllWhitespace(source, result);
-  testParseAllWhitespace("-$source", -result);
-}
-
-// Test parsing source, optionally preceeded and/or followed by whitespace.
-void testParse(String source, num result) {
-  expectNumEquals(result, num.parse(source), "parse '$source'");
-  expectNumEquals(result, num.parse(" $source"), "parse ' $source'");
-  expectNumEquals(result, num.parse("$source "), "parse '$source '");
-  expectNumEquals(result, num.parse(" $source "), "parse ' $source '");
-}
-
-// Test parsing an integer in decimal or hex format, with or without signs.
-void testInt(int value) {
-  testParse("$value", value);
-  testParse("+$value", value);
-  testParse("-$value", -value);
-  var hex = "0x${value.toRadixString(16)}";
-  var lchex = hex.toLowerCase();
-  testParse(lchex, value);
-  testParse("+$lchex", value);
-  testParse("-$lchex", -value);
-  var uchex = hex.toUpperCase();
-  testParse(uchex, value);
-  testParse("+$uchex", value);
-  testParse("-$uchex", -value);
-}
-
-// Test parsing an integer, and the integers just around it.
-void testIntAround(int value) {
-  testInt(value - 1);
-  testInt(value);
-  testInt(value + 1);
-}
-
-void testDouble(double value) {
-  testParse("$value", value);
-  testParse("+$value", value);
-  testParse("-$value", -value);
-  if (value.isFinite) {
-    String exp = value.toStringAsExponential();
-    String lcexp = exp.toLowerCase();
-    testParse(lcexp, value);
-    testParse("+$lcexp", value);
-    testParse("-$lcexp", -value);
-    String ucexp = exp.toUpperCase();
-    testParse(ucexp, value);
-    testParse("+$ucexp", value);
-    testParse("-$ucexp", -value);
-  }
-}
-
-void testFail(String source) {
-  var object = new Object();
-  Expect.throws(() {
-    num.parse(source, (s) {
-      Expect.equals(source, s);
-      throw object;
-    });
-  }, (e) => identical(object, e), "Fail: '$source'");
-}
-
-void main() {
-  testInt(0);
-  testInt(1);
-  testInt(9);
-  testInt(10);
-  testInt(99);
-  testInt(100);
-  testIntAround(256);
-  testIntAround(0x80000000); // 2^31
-  testIntAround(0x100000000); // 2^32
-  testIntAround(0x10000000000000); // 2^52
-  testIntAround(0x20000000000000); // 2^53
-  testIntAround(0x40000000000000); // 2^54
-  testIntAround(0x8000000000000000); // 2^63
-  testIntAround(0x10000000000000000); // 2^64
-  testIntAround(0x100000000000000000000); // 2^80
-
-  testDouble(0.0);
-  testDouble(5e-324);
-  testDouble(2.225073858507201e-308);
-  testDouble(2.2250738585072014e-308);
-  testDouble(0.49999999999999994);
-  testDouble(0.5);
-  testDouble(0.50000000000000006);
-  testDouble(0.9999999999999999);
-  testDouble(1.0);
-  testDouble(1.0000000000000002);
-  testDouble(4294967295.0);
-  testDouble(4294967296.0);
-  testDouble(4503599627370495.5);
-  testDouble(4503599627370497.0);
-  testDouble(9007199254740991.0);
-  testDouble(9007199254740992.0);
-  testDouble(1.7976931348623157e+308);
-  testDouble(double.INFINITY);
-  testDouble(double.NAN); //         //# 01: ok
-
-  // Strings that cannot occur from toString of a number.
-  testParse("000000000000", 0);
-  testParse("000000000001", 1);
-  testParse("000000000000.0000000000000", 0.0);
-  testParse("000000000001.0000000000000", 1.0);
-  testParse("0x0000000000", 0);
-  testParse("0e0", 0.0);
-  testParse("0e+0", 0.0);
-  testParse("0e-0", 0.0);
-  testParse("-0e0", -0.0);
-  testParse("-0e+0", -0.0);
-  testParse("-0e-0", -0.0);
-  testParse("1e0", 1.0);
-  testParse("1e+0", 1.0);
-  testParse("1e-0", 1.0);
-  testParse("-1e0", -1.0);
-  testParse("-1e+0", -1.0);
-  testParse("-1e-0", -1.0);
-  testParse("1.", 1.0);
-  testParse(".1", 0.1);
-  testParse("1.e1", 10.0);
-  testParse(".1e1", 1.0);
-
-  testParseWhitespace("0x1", 1);
-  testParseWhitespace("1", 1);
-  testParseWhitespace("1.0", 1.0);
-  testParseWhitespace("1e1", 10.0);
-  testParseWhitespace(".1e1", 1.0);
-  testParseWhitespace("1.e1", 10.0);
-  testParseWhitespace("1e+1", 10.0);
-  testParseWhitespace("1e-1", 0.1);
-
-  // Negative tests - things not to allow.
-
-  // Spaces inside the numeral.
-  testFail("- 1");
-  testFail("+ 1");
-  testFail("2 2");
-  testFail("0x 42");
-  testFail("1 .");
-  testFail(". 1");
-  testFail("1e 2");
-  testFail("1 e2");
-  // Invalid characters.
-  testFail("0x1H");
-  testFail("12H");
-  testFail("1x2");
-  testFail("00x2");
-  testFail("0x2.2");
-  // Empty hex number.
-  testFail("0x");
-  testFail("-0x");
-  testFail("+0x");
-  // Double exponent without value.
-  testFail(".e1");
-  testFail("e1");
-  testFail("e+1");
-  testFail("e-1");
-  testFail("-e1");
-  testFail("-e+1");
-  testFail("-e-1");
-  // Incorrect ways to write NaN/Infinity.
-  testFail("infinity");
-  testFail("INFINITY");
-  testFail("1.#INF");
-  testFail("inf");
-  testFail("nan");
-  testFail("NAN");
-  testFail("1.#IND");
-  testFail("indef");
-  testFail("qnan");
-  testFail("snan");
-}
diff --git a/tests/corelib/num_sign_test.dart b/tests/corelib/num_sign_test.dart
deleted file mode 100644
index 5f409b4..0000000
--- a/tests/corelib/num_sign_test.dart
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test num.clamp.
-// VMOptions=--no-use-field-guards
-// VMOptions=
-
-import "package:expect/expect.dart";
-
-// Pedestrian implementation of sign, following its specification directly.
-num sign(num value) {
-  if (value is int) {
-    if (value < 0) return -1;
-    if (value > 0) return 1;
-    return 0;
-  }
-  if (value.isNaN) return value;
-  if (value == 0.0) return value;
-  if (value > 0.0) return 1.0;
-  return -1.0;
-}
-
-var numbers = [
-  // Integers
-  0,
-  1,
-  2,
-  0x7f, //                     ~7 bits
-  0x80,
-  0xff, //                     ~8 bits
-  0x100,
-  0xffff, //                   ~16 bits
-  0x10000,
-  0x3fffffff, //               ~30 bits (max positive 32-bit tagged smi)
-  0x40000000,
-  0x40000001,
-  0x7fffffff, //               ~31 bits
-  0x80000000,
-  0x80000001,
-  0xfffffffff, //              ~32 bits
-  0x100000000,
-  0x100000001,
-  0x10000000000000, //         ~53 bits
-  0x10000000000001,
-  0x1fffffffffffff,
-  0x20000000000000,
-  0x20000000000001, //         first integer not representable as double.
-  0x20000000000002,
-  0x7fffffffffffffff, //       ~63 bits
-  0x8000000000000000,
-  0x8000000000000001,
-  0xffffffffffffffff, //       ~64 bits
-  0x10000000000000000,
-  0x10000000000000001,
-  // Integers around the max-double range (2^1024, ~1025 bits).
-  0xfffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
-  0xfffffffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
-  0x10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,
-  // Doubles.
-  0.0,
-  5e-324, //                   min positive
-  2.225073858507201e-308, //   max denormal
-  2.2250738585072014e-308, //  min normal
-  0.49999999999999994, //      ~0.5
-  0.5,
-  0.5000000000000001,
-  0.9999999999999999, //       ~1.0
-  1.0,
-  1.0000000000000002,
-  4294967295.0, //             ~32 bits
-  4294967296.0,
-  4503599627370495.5, //       max fractional
-  4503599627370497.0,
-  9007199254740991.0,
-  9007199254740992.0, //       max exact (+1 is not a double)
-  1.7976931348623157e+308, //  max finite double
-  1.0 / 0.0, //                Infinity
-  0.0 / 0.0, //                NaN
-];
-
-main() {
-  for (num number in numbers) {
-    test(number);
-    test(-number);
-  }
-}
-
-void test(number) {
-  num expectSign = sign(number);
-  num actualSign = number.sign;
-  if (expectSign.isNaN) {
-    Expect.isTrue(actualSign.isNaN, "$number: $actualSign != NaN");
-  } else {
-    if (number is int) {
-      Expect.isTrue(actualSign is int, "$number.sign is int");
-    } else {
-      Expect.isTrue(actualSign is double, "$number.sign is double");
-    }
-    Expect.equals(expectSign, actualSign, "$number");
-    Expect.equals(number.isNegative, actualSign.isNegative, "$number:negative");
-    var renumber = actualSign * number.abs();
-    Expect.equals(number, renumber, "$number (sign*abs)");
-    if (number is int) {
-      Expect.isTrue(renumber is int, "$number (sign*abs) is int");
-    } else {
-      Expect.isTrue(renumber is double, "$number (sign*abs) is double");
-    }
-  }
-}
diff --git a/tests/corelib/print_test.dart b/tests/corelib/print_test.dart
deleted file mode 100644
index 2cbe731..0000000
--- a/tests/corelib/print_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class A {
-  toString() {
-    if (false
-          || true // //# 01: runtime error
-        ) {
-      return 499;
-    } else {
-      return "ok";
-    }
-  }
-}
-
-main() {
-  print(new A());
-}
diff --git a/tests/corelib/queue_first_test.dart b/tests/corelib/queue_first_test.dart
deleted file mode 100644
index 13ace68..0000000
--- a/tests/corelib/queue_first_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-library queue.first.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue;
-
-main() {
-  Queue<int> queue1 = new Queue<int>();
-  queue1..add(11)..add(12)..add(13);
-  Queue queue2 = new Queue();
-
-  Expect.equals(11, queue1.first);
-  Expect.throws(() => queue2.first, (e) => e is StateError);
-}
diff --git a/tests/corelib/queue_iterator_test.dart b/tests/corelib/queue_iterator_test.dart
deleted file mode 100644
index af0458b..0000000
--- a/tests/corelib/queue_iterator_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2011, 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 queue.iterator.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue;
-
-class QueueIteratorTest {
-  static testMain() {
-    testSmallQueue();
-    testLargeQueue();
-    testEmptyQueue();
-  }
-
-  static int sum(int expected, Iterator<int> it) {
-    int count = 0;
-    while (it.moveNext()) {
-      count += it.current;
-    }
-    Expect.equals(expected, count);
-  }
-
-  static void testSmallQueue() {
-    Queue<int> queue = new Queue<int>();
-    queue.addLast(1);
-    queue.addLast(2);
-    queue.addLast(3);
-
-    Iterator<int> it = queue.iterator;
-    sum(6, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-
-  static void testLargeQueue() {
-    Queue<int> queue = new Queue<int>();
-    int count = 0;
-    for (int i = 0; i < 100; i++) {
-      count += i;
-      queue.addLast(i);
-    }
-    Iterator<int> it = queue.iterator;
-    sum(count, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-
-  static void testEmptyQueue() {
-    Queue<int> queue = new Queue<int>();
-    Iterator<int> it = queue.iterator;
-    sum(0, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-}
-
-main() {
-  QueueIteratorTest.testMain();
-}
diff --git a/tests/corelib/queue_last_test.dart b/tests/corelib/queue_last_test.dart
deleted file mode 100644
index 3dbccd2..0000000
--- a/tests/corelib/queue_last_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-library queue.last.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue;
-
-main() {
-  Queue<int> queue1 = new Queue<int>();
-  queue1..add(11)..add(12)..add(13);
-  Queue queue2 = new Queue();
-
-  Expect.equals(13, queue1.last);
-  Expect.throws(() => queue2.last, (e) => e is StateError);
-}
diff --git a/tests/corelib/queue_single_test.dart b/tests/corelib/queue_single_test.dart
deleted file mode 100644
index 5389395..0000000
--- a/tests/corelib/queue_single_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-library queue.single.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection' show Queue;
-
-main() {
-  Queue<int> queue1 = new Queue<int>();
-  queue1.add(42);
-  Queue queue2 = new Queue();
-  queue2..add(11)..add(12)..add(13);
-  Queue queue3 = new Queue();
-
-  Expect.equals(42, queue1.single);
-  Expect.throws(() => queue2.single, (e) => e is StateError);
-  Expect.throws(() => queue3.single, (e) => e is StateError);
-}
diff --git a/tests/corelib/queue_test.dart b/tests/corelib/queue_test.dart
deleted file mode 100644
index b169bcf..0000000
--- a/tests/corelib/queue_test.dart
+++ /dev/null
@@ -1,488 +0,0 @@
-// Copyright (c) 2011, 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 queue.test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-abstract class QueueTest {
-  Queue newQueue();
-  Queue newQueueFrom(Iterable iterable);
-
-  void testMain() {
-    Queue queue = newQueue();
-    checkQueue(queue, 0, 0);
-
-    queue.addFirst(1);
-    checkQueue(queue, 1, 1);
-
-    queue.addLast(10);
-    checkQueue(queue, 2, 11);
-
-    Expect.equals(10, queue.removeLast());
-    checkQueue(queue, 1, 1);
-
-    queue.addLast(10);
-    Expect.equals(1, queue.removeFirst());
-    checkQueue(queue, 1, 10);
-
-    queue.addFirst(1);
-    queue.addLast(100);
-    queue.addLast(1000);
-    Expect.equals(1000, queue.removeLast());
-    queue.addLast(1000);
-    checkQueue(queue, 4, 1111);
-
-    queue.removeFirst();
-    checkQueue(queue, 3, 1110);
-
-    int mapTest(int value) {
-      return value ~/ 10;
-    }
-
-    bool is10(int value) {
-      return (value == 10);
-    }
-
-    Queue mapped = newQueueFrom(queue.map(mapTest));
-    checkQueue(mapped, 3, 111);
-    checkQueue(queue, 3, 1110);
-    Expect.equals(1, mapped.removeFirst());
-    Expect.equals(100, mapped.removeLast());
-    Expect.equals(10, mapped.removeFirst());
-
-    Queue other = newQueueFrom(queue.where(is10));
-    checkQueue(other, 1, 10);
-
-    Expect.equals(true, queue.any(is10));
-
-    bool isInstanceOfInt(int value) {
-      return (value is int);
-    }
-
-    Expect.equals(true, queue.every(isInstanceOfInt));
-
-    Expect.equals(false, queue.every(is10));
-
-    bool is1(int value) {
-      return (value == 1);
-    }
-
-    Expect.equals(false, queue.any(is1));
-
-    queue.clear();
-    Expect.equals(0, queue.length);
-
-    var exception = null;
-    try {
-      queue.removeFirst();
-    } on StateError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-    Expect.equals(0, queue.length);
-
-    exception = null;
-    try {
-      queue.removeLast();
-    } on StateError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-    Expect.equals(0, queue.length);
-
-    queue.addFirst(1);
-    queue.addFirst(2);
-    Expect.equals(2, queue.first);
-    Expect.equals(1, queue.last);
-
-    queue.addLast(3);
-    Expect.equals(3, queue.last);
-    bool isGreaterThanOne(int value) {
-      return (value > 1);
-    }
-
-    other = newQueueFrom(queue.where(isGreaterThanOne));
-    checkQueue(other, 2, 5);
-
-    // Cycle through values without ever having large element count.
-    queue = newQueue();
-    queue.add(0);
-    for (int i = 0; i < 255; i++) {
-      queue.add(i + 1);
-      Expect.equals(i, queue.removeFirst());
-    }
-    Expect.equals(255, queue.removeFirst());
-    Expect.isTrue(queue.isEmpty);
-
-    testAddAll();
-    testLengthChanges();
-    testLarge();
-    testFromListToList();
-  }
-
-  void checkQueue(Queue queue, int expectedSize, int expectedSum) {
-    testLength(expectedSize, queue);
-    int sum = 0;
-    void sumElements(int value) {
-      sum += value;
-    }
-
-    queue.forEach(sumElements);
-    Expect.equals(expectedSum, sum);
-  }
-
-  testLength(int length, Queue queue) {
-    Expect.equals(length, queue.length);
-    ((length == 0) ? Expect.isTrue : Expect.isFalse)(queue.isEmpty);
-    ((length != 0) ? Expect.isTrue : Expect.isFalse)(queue.isNotEmpty);
-  }
-
-  void testAddAll() {
-    Set<int> set = new Set<int>.from([1, 2, 4]);
-    Expect.equals(3, set.length);
-
-    Queue queue1 = newQueueFrom(set);
-    Queue queue2 = newQueue();
-    Queue queue3 = newQueue();
-    testLength(3, queue1);
-    testLength(0, queue2);
-    testLength(0, queue3);
-
-    queue2.addAll(set);
-    testLength(3, queue2);
-
-    queue3.addAll(queue1);
-    testLength(3, queue3);
-
-    int sum = 0;
-    void f(e) {
-      sum += e;
-    }
-
-    ;
-
-    set.forEach(f);
-    Expect.equals(7, sum);
-    sum = 0;
-
-    queue1.forEach(f);
-    Expect.equals(7, sum);
-    sum = 0;
-
-    queue2.forEach(f);
-    Expect.equals(7, sum);
-    sum = 0;
-
-    queue3.forEach(f);
-    Expect.equals(7, sum);
-    sum = 0;
-
-    set = new Set<int>.from([]);
-    queue1 = newQueueFrom(set);
-    queue2 = newQueue();
-    queue3 = newQueue();
-
-    queue2.addAll(set);
-    queue3.addAll(queue1);
-
-    Expect.equals(0, set.length);
-    Expect.equals(0, queue1.length);
-    Expect.equals(0, queue2.length);
-    Expect.equals(0, queue3.length);
-  }
-
-  void testLengthChanges() {
-    // Test that the length property is updated properly by
-    // modifications;
-    Queue queue = newQueue();
-    testLength(0, queue);
-
-    for (int i = 1; i <= 10; i++) {
-      queue.add(i);
-      testLength(i, queue);
-    }
-
-    for (int i = 1; i <= 10; i++) {
-      queue.addFirst(11 - i);
-      testLength(10 + i, queue);
-    }
-
-    for (int i = 1; i <= 10; i++) {
-      queue.addLast(i);
-      testLength(20 + i, queue);
-    }
-
-    queue.addAll([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
-    testLength(40, queue);
-
-    for (int i = 1; i <= 5; i++) {
-      Expect.equals(i, queue.removeFirst());
-      testLength(40 - i, queue);
-    }
-
-    for (int i = 1; i <= 5; i++) {
-      Expect.equals(11 - i, queue.removeLast());
-      testLength(35 - i, queue);
-    }
-
-    Expect.isTrue(queue.remove(10));
-    testLength(29, queue);
-    Expect.isFalse(queue.remove(999));
-    testLength(29, queue);
-
-    queue.removeWhere((x) => x == 7);
-    testLength(26, queue);
-
-    queue.retainWhere((x) => x != 3);
-    testLength(23, queue);
-
-    Expect.listEquals(
-        [6, 8, 9, 1, 2, 4, 5, 6, 8, 9, 10, 1, 2, 4, 5, 6, 8, 9, 10, 1, 2, 4, 5],
-        queue.toList());
-
-    // Regression test: http://dartbug.com/16270
-    // These should all do nothing, and should not throw.
-    Queue emptyQueue = newQueue();
-    emptyQueue.remove(0);
-    emptyQueue.removeWhere((x) => null);
-    emptyQueue.retainWhere((x) => null);
-  }
-
-  void testLarge() {
-    int N = 10000;
-    Set set = new Set();
-
-    Queue queue = newQueue();
-    Expect.isTrue(queue.isEmpty);
-
-    for (int i = 0; i < N; i++) {
-      queue.add(i);
-      set.add(i);
-    }
-    Expect.equals(N, queue.length);
-    Expect.isFalse(queue.isEmpty);
-
-    Expect.equals(0, queue.elementAt(0));
-    Expect.equals(N - 1, queue.elementAt(N - 1));
-    Expect.throws(() {
-      queue.elementAt(-1);
-    });
-    Expect.throws(() {
-      queue.elementAt(N);
-    });
-
-    Iterable skip1 = queue.skip(1);
-    Iterable take1 = queue.take(1);
-    Iterable mapped = queue.map((e) => -e);
-
-    for (int i = 0; i < 500; i++) {
-      Expect.equals(i, take1.first);
-      Expect.equals(i, queue.first);
-      Expect.equals(-i, mapped.first);
-      Expect.equals(i + 1, skip1.first);
-      Expect.equals(i, queue.removeFirst());
-      Expect.equals(i + 1, take1.first);
-      Expect.equals(-i - 1, mapped.first);
-      Expect.equals(N - 1 - i, queue.last);
-      Expect.equals(N - 1 - i, queue.removeLast());
-    }
-    Expect.equals(N - 1000, queue.length);
-
-    Expect.isTrue(queue.remove(N >> 1));
-    Expect.equals(N - 1001, queue.length);
-
-    queue.clear();
-    Expect.equals(0, queue.length);
-    Expect.isTrue(queue.isEmpty);
-
-    queue.addAll(set);
-    Expect.equals(N, queue.length);
-    Expect.isFalse(queue.isEmpty);
-
-    // Iterate.
-    for (var element in queue) {
-      Expect.isTrue(set.contains(element));
-    }
-
-    queue.forEach((element) {
-      Expect.isTrue(set.contains(element));
-    });
-
-    queue.addAll(set);
-    Expect.equals(N * 2, queue.length);
-    Expect.isFalse(queue.isEmpty);
-
-    queue.clear();
-    Expect.equals(0, queue.length);
-    Expect.isTrue(queue.isEmpty);
-  }
-
-  void testFromListToList() {
-    const int N = 256;
-    List list = [];
-    for (int i = 0; i < N; i++) {
-      Queue queue = newQueueFrom(list);
-
-      Expect.equals(list.length, queue.length);
-      List to = queue.toList();
-      Expect.listEquals(list, to);
-
-      queue.add(i);
-      list.add(i);
-      Expect.equals(list.length, queue.length);
-      to = queue.toList();
-      Expect.listEquals(list, to);
-    }
-  }
-}
-
-class ListQueueTest extends QueueTest {
-  Queue newQueue() => new ListQueue();
-  Queue newQueueFrom(Iterable elements) => new ListQueue.from(elements);
-
-  void testMain() {
-    super.testMain();
-    trickyTest();
-  }
-
-  void trickyTest() {
-    // Test behavior around the know growing capacities of a ListQueue.
-    Queue q = new ListQueue();
-
-    for (int i = 0; i < 255; i++) {
-      q.add(i);
-    }
-    for (int i = 0; i < 128; i++) {
-      Expect.equals(i, q.removeFirst());
-    }
-    q.add(255);
-    for (int i = 0; i < 127; i++) {
-      q.add(i);
-    }
-
-    Expect.equals(255, q.length);
-
-    // Remove element at end of internal buffer.
-    q.removeWhere((v) => v == 255);
-    // Remove element at beginning of internal buffer.
-    q.removeWhere((v) => v == 0);
-    // Remove element at both ends of internal buffer.
-    q.removeWhere((v) => v == 254 || v == 1);
-
-    Expect.equals(251, q.length);
-
-    Iterable i255 = new Iterable.generate(255, (x) => x);
-
-    q = new ListQueue();
-    q.addAll(i255);
-    Expect.listEquals(i255.toList(), q.toList());
-
-    q = new ListQueue();
-    q.addAll(i255.toList());
-    Expect.listEquals(i255.toList(), q.toList());
-
-    q = new ListQueue.from(i255);
-    for (int i = 0; i < 128; i++) q.removeFirst();
-    q.add(256);
-    q.add(0);
-    q.addAll(i255.toList());
-    Expect.equals(129 + 255, q.length);
-
-    // Test addAll that requires the queue to grow.
-    q = new ListQueue();
-    q.addAll(i255.take(35));
-    q.addAll(i255.skip(35).take(96));
-    q.addAll(i255.skip(35 + 96));
-    Expect.listEquals(i255.toList(), q.toList());
-  }
-}
-
-class DoubleLinkedQueueTest extends QueueTest {
-  Queue newQueue() => new DoubleLinkedQueue();
-  Queue newQueueFrom(Iterable elements) => new DoubleLinkedQueue.from(elements);
-
-  void testMain() {
-    super.testMain();
-    testQueueElements();
-  }
-
-  void testQueueElements() {
-    DoubleLinkedQueue<int> queue1 = new DoubleLinkedQueue<int>.from([1, 2, 3]);
-    DoubleLinkedQueue<int> queue2 = new DoubleLinkedQueue<int>();
-    queue2.addAll(queue1);
-
-    Expect.equals(queue1.length, queue2.length);
-    DoubleLinkedQueueEntry<int> entry1 = queue1.firstEntry();
-    DoubleLinkedQueueEntry<int> entry2 = queue2.firstEntry();
-    while (entry1 != null) {
-      Expect.equals(true, !identical(entry1, entry2));
-      entry1 = entry1.nextEntry();
-      entry2 = entry2.nextEntry();
-    }
-    Expect.equals(null, entry2);
-
-    var firstEntry = queue1.firstEntry();
-    var secondEntry = queue1.firstEntry().nextEntry();
-    var thirdEntry = queue1.lastEntry();
-    firstEntry.prepend(4);
-    firstEntry.append(5);
-    secondEntry.prepend(6);
-    secondEntry.append(7);
-    thirdEntry.prepend(8);
-    thirdEntry.append(9);
-    Expect.equals(9, queue1.length);
-    Expect.listEquals(queue1.toList(), [4, 1, 5, 6, 2, 7, 8, 3, 9]);
-    Expect.equals(1, firstEntry.remove());
-    Expect.equals(2, secondEntry.remove());
-    Expect.equals(3, thirdEntry.remove());
-    Expect.equals(6, queue1.length);
-    Expect.listEquals(queue1.toList(), [4, 5, 6, 7, 8, 9]);
-  }
-}
-
-void linkEntryTest() {
-  var entry = new DoubleLinkedQueueEntry(42);
-  Expect.equals(null, entry.previousEntry());
-  Expect.equals(null, entry.nextEntry());
-
-  entry.append(37);
-  entry.prepend(87);
-  var prev = entry.previousEntry();
-  var next = entry.nextEntry();
-  Expect.equals(42, entry.element);
-  Expect.equals(37, next.element);
-  Expect.equals(87, prev.element);
-  Expect.identical(entry, prev.nextEntry());
-  Expect.identical(entry, next.previousEntry());
-  Expect.equals(null, next.nextEntry());
-  Expect.equals(null, prev.previousEntry());
-
-  entry.element = 117;
-  Expect.equals(117, entry.element);
-  Expect.identical(next, entry.nextEntry());
-  Expect.identical(prev, entry.previousEntry());
-
-  Expect.equals(117, entry.remove());
-  Expect.identical(next, prev.nextEntry());
-  Expect.identical(prev, next.previousEntry());
-  Expect.equals(null, next.nextEntry());
-  Expect.equals(null, prev.previousEntry());
-  Expect.equals(37, next.element);
-  Expect.equals(87, prev.element);
-
-  Expect.equals(37, next.remove());
-  Expect.equals(87, prev.element);
-  Expect.equals(null, prev.nextEntry());
-  Expect.equals(null, prev.previousEntry());
-
-  Expect.equals(87, prev.remove());
-}
-
-main() {
-  new DoubleLinkedQueueTest().testMain();
-  new ListQueueTest().testMain();
-  linkEntryTest();
-}
diff --git a/tests/corelib/range_error_test.dart b/tests/corelib/range_error_test.dart
deleted file mode 100644
index 05107e8..0000000
--- a/tests/corelib/range_error_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test for testing out of range exceptions on arrays, and the content
-// of range_error toString().
-
-void main() {
-  testRead();
-  testWrite();
-  testToString();
-}
-
-void testRead() {
-  testListRead([], 0);
-  testListRead([], -1);
-  testListRead([], 1);
-
-  var list = [1];
-  testListRead(list, -1);
-  testListRead(list, 1);
-
-  list = new List(1);
-  testListRead(list, -1);
-  testListRead(list, 1);
-
-  list = new List();
-  testListRead(list, -1);
-  testListRead(list, 0);
-  testListRead(list, 1);
-}
-
-void testWrite() {
-  testListWrite([], 0);
-  testListWrite([], -1);
-  testListWrite([], 1);
-
-  var list = [1];
-  testListWrite(list, -1);
-  testListWrite(list, 1);
-
-  list = new List(1);
-  testListWrite(list, -1);
-  testListWrite(list, 1);
-
-  list = new List();
-  testListWrite(list, -1);
-  testListWrite(list, 0);
-  testListWrite(list, 1);
-}
-
-void testToString() {
-  for (var name in [null, "THENAME"]) {
-    for (var message in [null, "THEMESSAGE"]) {
-      var value = 37;
-      for (var re in [
-        new ArgumentError.value(value, name, message),
-        new RangeError.value(value, name, message),
-        new RangeError.index(value, [], name, message),
-        new RangeError.range(value, 0, 24, name, message)
-      ]) {
-        var str = re.toString();
-        if (name != null) Expect.isTrue(str.contains(name), "$name in $str");
-        if (message != null)
-          Expect.isTrue(str.contains(message), "$message in $str");
-        Expect.isTrue(str.contains("$value"), "$value in $str");
-        // No empty ':' separated parts - in that case the colon is omitted too.
-        Expect.isFalse(str.contains(new RegExp(":\s*:")));
-      }
-    }
-  }
-}
-
-void testListRead(list, index) {
-  var exception = null;
-  try {
-    var e = list[index];
-  } on RangeError catch (e) {
-    exception = e;
-  }
-  Expect.equals(true, exception != null);
-}
-
-void testListWrite(list, index) {
-  var exception = null;
-  try {
-    list[index] = null;
-  } on RangeError catch (e) {
-    exception = e;
-  }
-  Expect.equals(true, exception != null);
-}
diff --git a/tests/corelib/reg_exp1_test.dart b/tests/corelib/reg_exp1_test.dart
deleted file mode 100644
index 88e3b0a..0000000
--- a/tests/corelib/reg_exp1_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing regular expressions in Dart.
-
-import "package:expect/expect.dart";
-
-class RegExp1Test {
-  static testMain() {
-    RegExp exp1 = new RegExp("bar|foo");
-    Expect.equals(true, exp1.hasMatch("foo"));
-    Expect.equals(true, exp1.hasMatch("bar"));
-    Expect.equals(false, exp1.hasMatch("gim"));
-    Expect.equals(true, exp1.hasMatch("just foo"));
-    Expect.equals("bar|foo", exp1.pattern);
-    Expect.equals(false, exp1.isMultiLine);
-    Expect.equals(true, exp1.isCaseSensitive);
-
-    RegExp exp2 = new RegExp("o+", caseSensitive: false);
-    Expect.equals(true, exp2.hasMatch("this looks good"));
-    Expect.equals(true, exp2.hasMatch("fOO"));
-    Expect.equals(false, exp2.hasMatch("bar"));
-    Expect.equals("o+", exp2.pattern);
-    Expect.equals(false, exp2.isCaseSensitive);
-    Expect.equals(false, exp2.isMultiLine);
-  }
-}
-
-main() {
-  RegExp1Test.testMain();
-}
diff --git a/tests/corelib/reg_exp4_test.dart b/tests/corelib/reg_exp4_test.dart
deleted file mode 100644
index f8f63c1..0000000
--- a/tests/corelib/reg_exp4_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing regular expressions in Dart.
-
-import "package:expect/expect.dart";
-
-main() {
-  try {
-    RegExp ex = new RegExp(null);
-    Expect.fail("Expected: ArgumentError got: no exception");
-  } catch (ex) {
-    if (!(ex is ArgumentError)) {
-      Expect.fail("Expected: ArgumentError got: ${ex}");
-    }
-  }
-  try {
-    new RegExp(r"^\w+$").hasMatch(null);
-    Expect.fail("Expected: ArgumentError got: no exception");
-  } catch (ex) {
-    if (!(ex is ArgumentError)) {
-      Expect.fail("Expected: ArgumentError got: ${ex}");
-    }
-  }
-  try {
-    new RegExp(r"^\w+$").firstMatch(null);
-    Expect.fail("Expected: ArgumentError got: no exception");
-  } catch (ex) {
-    if (!(ex is ArgumentError)) {
-      Expect.fail("Expected: ArgumentError got: ${ex}");
-    }
-  }
-  try {
-    new RegExp(r"^\w+$").allMatches(null);
-    Expect.fail("Expected: ArgumentError got: no exception");
-  } catch (ex) {
-    if (!(ex is ArgumentError)) {
-      Expect.fail("Expected: ArgumentError got: ${ex}");
-    }
-  }
-  try {
-    new RegExp(r"^\w+$").stringMatch(null);
-    Expect.fail("Expected: ArgumentError got: no exception");
-  } catch (ex) {
-    if (!(ex is ArgumentError)) {
-      Expect.fail("Expected: ArgumentError got: ${ex}");
-    }
-  }
-}
diff --git a/tests/corelib/reg_exp5_test.dart b/tests/corelib/reg_exp5_test.dart
deleted file mode 100644
index f67cd6d..0000000
--- a/tests/corelib/reg_exp5_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing regular expressions in Dart.
-
-import "package:expect/expect.dart";
-
-main() {
-  String str = "";
-  try {
-    RegExp ex = new RegExp(str);
-  } catch (e) {
-    if (!(e is ArgumentError)) {
-      Expect.fail("Expected: ArgumentError got: ${e}");
-    }
-  }
-  Expect.isFalse(new RegExp(r"^\w+$").hasMatch(str));
-  Match fm = new RegExp(r"^\w+$").firstMatch(str);
-  Expect.equals(null, fm);
-
-  Iterable<Match> am = new RegExp(r"^\w+$").allMatches(str);
-  Expect.isFalse(am.iterator.moveNext());
-
-  Expect.equals(null, new RegExp(r"^\w+$").stringMatch(str));
-}
diff --git a/tests/corelib/reg_exp_all_matches_test.dart b/tests/corelib/reg_exp_all_matches_test.dart
deleted file mode 100644
index 72a2344..0000000
--- a/tests/corelib/reg_exp_all_matches_test.dart
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for RegExp.allMatches.
-
-class RegExpAllMatchesTest {
-  static testIterator() {
-    var matches = new RegExp("foo").allMatches("foo foo");
-    Iterator it = matches.iterator;
-    Expect.isTrue(it.moveNext());
-    Expect.equals('foo', it.current.group(0));
-    Expect.isTrue(it.moveNext());
-    Expect.equals('foo', it.current.group(0));
-    Expect.isFalse(it.moveNext());
-
-    // Run two iterators over the same results.
-    it = matches.iterator;
-    Iterator it2 = matches.iterator;
-    Expect.isTrue(it.moveNext());
-    Expect.isTrue(it2.moveNext());
-    Expect.equals('foo', it.current.group(0));
-    Expect.equals('foo', it2.current.group(0));
-    Expect.isTrue(it.moveNext());
-    Expect.isTrue(it2.moveNext());
-    Expect.equals('foo', it.current.group(0));
-    Expect.equals('foo', it2.current.group(0));
-    Expect.equals(false, it.moveNext());
-    Expect.equals(false, it2.moveNext());
-  }
-
-  static testForEach() {
-    var matches = new RegExp("foo").allMatches("foo foo");
-    var strbuf = new StringBuffer();
-    matches.forEach((Match m) {
-      strbuf.write(m.group(0));
-    });
-    Expect.equals("foofoo", strbuf.toString());
-  }
-
-  static testMap() {
-    var matches = new RegExp("foo?").allMatches("foo fo foo fo");
-    var mapped = matches.map((Match m) => "${m.group(0)}bar");
-    Expect.equals(4, mapped.length);
-    var strbuf = new StringBuffer();
-    for (String s in mapped) {
-      strbuf.write(s);
-    }
-    Expect.equals("foobarfobarfoobarfobar", strbuf.toString());
-  }
-
-  static testFilter() {
-    var matches = new RegExp("foo?").allMatches("foo fo foo fo");
-    var filtered = matches.where((Match m) {
-      return m.group(0) == 'foo';
-    });
-    Expect.equals(2, filtered.length);
-    var strbuf = new StringBuffer();
-    for (Match m in filtered) {
-      strbuf.write(m.group(0));
-    }
-    Expect.equals("foofoo", strbuf.toString());
-  }
-
-  static testEvery() {
-    var matches = new RegExp("foo?").allMatches("foo fo foo fo");
-    Expect.equals(true, matches.every((Match m) {
-      return m.group(0).startsWith("fo");
-    }));
-    Expect.equals(false, matches.every((Match m) {
-      return m.group(0).startsWith("foo");
-    }));
-  }
-
-  static testSome() {
-    var matches = new RegExp("foo?").allMatches("foo fo foo fo");
-    Expect.equals(true, matches.any((Match m) {
-      return m.group(0).startsWith("fo");
-    }));
-    Expect.equals(true, matches.any((Match m) {
-      return m.group(0).startsWith("foo");
-    }));
-    Expect.equals(false, matches.any((Match m) {
-      return m.group(0).startsWith("fooo");
-    }));
-  }
-
-  static testIsEmpty() {
-    var matches = new RegExp("foo?").allMatches("foo fo foo fo");
-    Expect.equals(false, matches.isEmpty);
-    matches = new RegExp("fooo").allMatches("foo fo foo fo");
-    Expect.equals(true, matches.isEmpty);
-  }
-
-  static testGetCount() {
-    var matches = new RegExp("foo?").allMatches("foo fo foo fo");
-    Expect.equals(4, matches.length);
-    matches = new RegExp("fooo").allMatches("foo fo foo fo");
-    Expect.equals(0, matches.length);
-  }
-
-  static testMain() {
-    testIterator();
-    testForEach();
-    testMap();
-    testFilter();
-    testEvery();
-    testSome();
-    testIsEmpty();
-    testGetCount();
-  }
-}
-
-main() {
-  RegExpAllMatchesTest.testMain();
-}
diff --git a/tests/corelib/reg_exp_first_match_test.dart b/tests/corelib/reg_exp_first_match_test.dart
deleted file mode 100644
index 40e38fa..0000000
--- a/tests/corelib/reg_exp_first_match_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for RegExp.firstMatch.
-
-class RegExpFirstMatchTest {
-  static testMain() {
-    Expect.equals('cat', new RegExp("(\\w+)").firstMatch("cat dog")[0]);
-    Expect.equals(null, new RegExp("foo").firstMatch("bar"));
-  }
-}
-
-main() {
-  RegExpFirstMatchTest.testMain();
-}
diff --git a/tests/corelib/reg_exp_group_test.dart b/tests/corelib/reg_exp_group_test.dart
deleted file mode 100644
index 1bf4af3..0000000
--- a/tests/corelib/reg_exp_group_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for RegExp.group.
-
-class RegExpGroupTest {
-  static testMain() {
-    var match = new RegExp("(a(b)((c|de)+))").firstMatch("abcde");
-    Expect.equals('abcde', match.group(0));
-    Expect.equals('abcde', match.group(1));
-    Expect.equals('b', match.group(2));
-    Expect.equals('cde', match[3]);
-    Expect.equals('de', match[4]);
-  }
-}
-
-main() {
-  RegExpGroupTest.testMain();
-}
diff --git a/tests/corelib/reg_exp_groups_test.dart b/tests/corelib/reg_exp_groups_test.dart
deleted file mode 100644
index 70386d0..0000000
--- a/tests/corelib/reg_exp_groups_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for RegExp.groups.
-
-class RegExpGroupsTest {
-  static testMain() {
-    var match = new RegExp("(a(b)((c|de)+))").firstMatch("abcde");
-    var groups = match.groups([0, 4, 2, 3]);
-    Expect.equals('abcde', groups[0]);
-    Expect.equals('de', groups[1]);
-    Expect.equals('b', groups[2]);
-    Expect.equals('cde', groups[3]);
-  }
-}
-
-main() {
-  RegExpGroupsTest.testMain();
-}
diff --git a/tests/corelib/reg_exp_has_match_test.dart b/tests/corelib/reg_exp_has_match_test.dart
deleted file mode 100644
index 6ff2744..0000000
--- a/tests/corelib/reg_exp_has_match_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for RegExp.hasMatch.
-
-class RegExpHasMatchTest {
-  static testMain() {
-    Expect.equals(false, new RegExp("bar").hasMatch("foo"));
-    Expect.equals(true, new RegExp("bar|foo").hasMatch("foo"));
-    Expect.equals(true, new RegExp("o+").hasMatch("foo"));
-  }
-}
-
-main() {
-  RegExpHasMatchTest.testMain();
-}
diff --git a/tests/corelib/reg_exp_pattern_test.dart b/tests/corelib/reg_exp_pattern_test.dart
deleted file mode 100644
index 7b4d666..0000000
--- a/tests/corelib/reg_exp_pattern_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2014, 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.
-// Dart test for testing regular expressions in Dart.
-
-import "package:expect/expect.dart";
-
-// Regression test for http://dartbug.com/17998
-
-main() {
-  for (var s in [
-    r"a",
-    r"a|b",
-    r"(?:)",
-    r"^",
-    r"$",
-    r"^$",
-    r"$^",
-    r"",
-    r"\\",
-    r"/",
-    r"[^]",
-    "\x00",
-  ]) {
-    Expect.equals(s, new RegExp(s).pattern);
-  }
-}
diff --git a/tests/corelib/reg_exp_start_end_test.dart b/tests/corelib/reg_exp_start_end_test.dart
deleted file mode 100644
index 3ec343e..0000000
--- a/tests/corelib/reg_exp_start_end_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var matches = new RegExp("(a(b)((c|de)+))").allMatches("abcde abcde abcde");
-  var it = matches.iterator;
-  int start = 0;
-  int end = 5;
-  while (it.moveNext()) {
-    Match match = it.current;
-    Expect.equals(start, match.start);
-    Expect.equals(end, match.end);
-    start += 6;
-    end += 6;
-  }
-}
diff --git a/tests/corelib/reg_exp_string_match_test.dart b/tests/corelib/reg_exp_string_match_test.dart
deleted file mode 100644
index 05978dd..0000000
--- a/tests/corelib/reg_exp_string_match_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for RegExp.stringMatch.
-
-class RegExpStringMatchTest {
-  static testMain() {
-    Expect.equals('cat', new RegExp("(\\w+)").stringMatch("cat dog"));
-    Expect.equals(null, new RegExp("foo").stringMatch("bar"));
-  }
-}
-
-main() {
-  RegExpStringMatchTest.testMain();
-}
diff --git a/tests/corelib/regexp/UC16_test.dart b/tests/corelib/regexp/UC16_test.dart
deleted file mode 100644
index c89464f..0000000
--- a/tests/corelib/regexp/UC16_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // UC16
-  // Characters used:
-  // "\u03a3\u03c2\u03c3\u039b\u03bb" - Sigma, final sigma, sigma, Lambda,
-  // lambda
-  shouldBe(
-      new RegExp(r"x(.)\1x", caseSensitive: false).firstMatch("x\u03a3\u03c3x"),
-      ["x\u03a3\u03c3x", "\u03a3"],
-      "backref-UC16");
-  assertFalse(
-      new RegExp(r"x(...)\1", caseSensitive: false)
-          .hasMatch("x\u03a3\u03c2\u03c3\u03c2\u03c3"),
-      "\1 ASCII, string short");
-  assertTrue(
-      new RegExp(r"\u03a3((?:))\1\1x", caseSensitive: false)
-          .hasMatch("\u03c2x"),
-      "backref-UC16-empty");
-  assertTrue(
-      new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)
-          .hasMatch("x\u03a3\u03c2\u03c3x"),
-      "backref-UC16-uncaptured");
-  assertTrue(
-      new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)
-          .hasMatch("x\u03c2\u03c3\u039b\u03a3\u03c2\u03bbx"),
-      "backref-UC16-backtrack");
-  var longUC16String =
-      "x\u03a3\u03c2\u039b\u03c2\u03c3\u03bb\u03c3\u03a3\u03bb";
-  shouldBe(
-      new RegExp(r"x(...)\1\1", caseSensitive: false)
-          .firstMatch(longUC16String),
-      [longUC16String, longUC16String.substring(1, 4)],
-      "backref-UC16-twice");
-
-  assertFalse(new RegExp(r"\xc1", caseSensitive: false).hasMatch('fooA'),
-      "quickcheck-uc16-pattern-ascii-subject");
-  assertFalse(new RegExp(r"[\xe9]").hasMatch('i'),
-      "charclass-uc16-pattern-ascii-subject");
-  assertFalse(new RegExp(r"\u5e74|\u6708").hasMatch('t'),
-      "alternation-uc16-pattern-ascii-subject");
-}
diff --git a/tests/corelib/regexp/alternative-length-miscalculation_test.dart b/tests/corelib/regexp/alternative-length-miscalculation_test.dart
deleted file mode 100644
index a4461ac..0000000
--- a/tests/corelib/regexp/alternative-length-miscalculation_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "This page tests for length miscalculations in regular expression processing.");
-
-  var re = new RegExp(r"b|[^b]");
-  assertEquals('a'.indexOf(re, 1), -1);
-
-  var re2 = new RegExp(r"[^a]|ab");
-  shouldBeFalse(re2.hasMatch(''));
-}
diff --git a/tests/corelib/regexp/alternatives_test.dart b/tests/corelib/regexp/alternatives_test.dart
deleted file mode 100644
index 2211dfb..0000000
--- a/tests/corelib/regexp/alternatives_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description('Test regular expression processing with alternatives.');
-
-  var s1 = "<p>content</p>";
-  shouldBe(firstMatch(s1, new RegExp(r"<((\\/([^>]+)>)|(([^>]+)>))")),
-      ["<p>", "p>", null, null, "p>", "p"]);
-  shouldBe(firstMatch(s1, new RegExp(r"<((ABC>)|(\\/([^>]+)>)|(([^>]+)>))")),
-      ["<p>", "p>", null, null, null, "p>", "p"]);
-  shouldBe(firstMatch(s1, new RegExp(r"<(a|\\/p|.+?)>")), ["<p>", "p"]);
-
-  // Force YARR to use Interpreter by using iterative parentheses
-  shouldBe(firstMatch(s1, new RegExp(r"<((\\/([^>]+)>)|((([^>])+)>))")),
-      ["<p>", "p>", null, null, "p>", "p", "p"]);
-  shouldBe(firstMatch(s1, new RegExp(r"<((ABC>)|(\\/([^>]+)>)|((([^>])+)>))")),
-      ["<p>", "p>", null, null, null, "p>", "p", "p"]);
-  shouldBe(firstMatch(s1, new RegExp(r"<(a|\\/p|(.)+?)>")), ["<p>", "p", "p"]);
-
-  // Force YARR to use Interpreter by using backreference
-  var s2 = "<p>p</p>";
-  shouldBe(firstMatch(s2, new RegExp(r"<((\\/([^>]+)>)|(([^>]+)>))\5")),
-      ["<p>p", "p>", null, null, "p>", "p"]);
-  shouldBe(firstMatch(s2, new RegExp(r"<((ABC>)|(\\/([^>]+)>)|(([^>]+)>))\6")),
-      ["<p>p", "p>", null, null, null, "p>", "p"]);
-  shouldBe(firstMatch(s2, new RegExp(r"<(a|\\/p|.+?)>\1")), ["<p>p", "p"]);
-}
diff --git a/tests/corelib/regexp/ascii-regexp-subject_test.dart b/tests/corelib/regexp/ascii-regexp-subject_test.dart
deleted file mode 100644
index 67ff607..0000000
--- a/tests/corelib/regexp/ascii-regexp-subject_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-/**
-* @fileoverview Check that an initial ^ will result in a faster match fail.
-*/
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  var s = "foo";
-  var i;
-
-  for (i = 0; i < 18; i++) {
-    s = s + s;
-  }
-
-  dynamic repeatRegexp(re) {
-    for (i = 0; i < 1000; i++) {
-      re.hasMatch(s);
-    }
-  }
-
-  repeatRegexp(new RegExp(r"^bar"));
-  repeatRegexp(new RegExp(r"^foo|^bar|^baz"));
-  repeatRegexp(new RegExp(r"(^bar)"));
-  repeatRegexp(new RegExp(r"(?=^bar)\w+"));
-}
diff --git a/tests/corelib/regexp/assertion_test.dart b/tests/corelib/regexp/assertion_test.dart
deleted file mode 100644
index 43ee1ca..0000000
--- a/tests/corelib/regexp/assertion_test.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This page tests handling of parenthetical assertions.");
-
-  var regex1 = new RegExp(r"(x)(?=\1)x");
-  shouldBe(regex1.firstMatch('xx'), ['xx', 'x']);
-
-  var regex2 = new RegExp(r"(.*?)a(?!(a+)b\2c)\2(.*)");
-  shouldBe(regex2.firstMatch('baaabaac'), ['baaabaac', 'ba', null, 'abaac']);
-
-  var regex3 = new RegExp(r"(?=(a+?))(\1ab)");
-  shouldBe(regex3.firstMatch('aaab'), ['aab', 'a', 'aab']);
-
-  var regex4 = new RegExp(r"(?=(a+?))(\1ab)");
-  shouldBe(regex4.firstMatch('aaab'), ['aab', 'a', 'aab']);
-
-  var regex5 = new RegExp(r"^P([1-6])(?=\1)([1-6])$");
-  shouldBe(regex5.firstMatch('P11'), ['P11', '1', '1']);
-
-  var regex6 = new RegExp(r"(([a-c])b*?\2)*");
-  shouldBe(regex6.firstMatch('ababbbcbc'), ['ababb', 'bb', 'b']);
-
-  var regex7 = new RegExp(r"(x)(?=x)x");
-  shouldBe(regex7.firstMatch('xx'), ['xx', 'x']);
-
-  var regex8 = new RegExp(r"(x)(\1)");
-  shouldBe(regex8.firstMatch('xx'), ['xx', 'x', 'x']);
-
-  var regex9 = new RegExp(r"(x)(?=\1)x");
-  shouldBeNull(regex9.firstMatch('xy'));
-
-  var regex10 = new RegExp(r"(x)(?=x)x");
-  shouldBeNull(regex10.firstMatch('xy'));
-
-  var regex11 = new RegExp(r"(x)(\1)");
-  shouldBeNull(regex11.firstMatch('xy'));
-
-  var regex12 = new RegExp(r"(x)(?=\1)x");
-  shouldBeNull(regex12.firstMatch('x'));
-  shouldBe(regex12.firstMatch('xx'), ['xx', 'x']);
-  shouldBe(regex12.firstMatch('xxy'), ['xx', 'x']);
-
-  var regex13 = new RegExp(r"(x)zzz(?=\1)x");
-  shouldBe(regex13.firstMatch('xzzzx'), ['xzzzx', 'x']);
-  shouldBe(regex13.firstMatch('xzzzxy'), ['xzzzx', 'x']);
-
-  var regex14 = new RegExp(r"(a)\1(?=(b*c))bc");
-  shouldBe(regex14.firstMatch('aabc'), ['aabc', 'a', 'bc']);
-  shouldBe(regex14.firstMatch('aabcx'), ['aabc', 'a', 'bc']);
-
-  var regex15 = new RegExp(r"(a)a(?=(b*c))bc");
-  shouldBe(regex15.firstMatch('aabc'), ['aabc', 'a', 'bc']);
-  shouldBe(regex15.firstMatch('aabcx'), ['aabc', 'a', 'bc']);
-
-  var regex16 = new RegExp(r"a(?=(b*c))bc");
-  shouldBeNull(regex16.firstMatch('ab'));
-  shouldBe(regex16.firstMatch('abc'), ['abc', 'bc']);
-
-  var regex17 = new RegExp(r"(?=((?:ab)*))a");
-  shouldBe(regex17.firstMatch('ab'), ['a', 'ab']);
-  shouldBe(regex17.firstMatch('abc'), ['a', 'ab']);
-
-  var regex18 = new RegExp(r"(?=((?:xx)*))x");
-  shouldBe(regex18.firstMatch('x'), ['x', '']);
-  shouldBe(regex18.firstMatch('xx'), ['x', 'xx']);
-  shouldBe(regex18.firstMatch('xxx'), ['x', 'xx']);
-
-  var regex19 = new RegExp(r"(?=((xx)*))x");
-  shouldBe(regex19.firstMatch('x'), ['x', '', null]);
-  shouldBe(regex19.firstMatch('xx'), ['x', 'xx', 'xx']);
-  shouldBe(regex19.firstMatch('xxx'), ['x', 'xx', 'xx']);
-
-  var regex20 = new RegExp(r"(?=(xx))+x");
-  shouldBeNull(regex20.firstMatch('x'));
-  shouldBe(regex20.firstMatch('xx'), ['x', 'xx']);
-  shouldBe(regex20.firstMatch('xxx'), ['x', 'xx']);
-
-  var regex21 = new RegExp(r"(?=a+b)aab");
-  shouldBe(regex21.firstMatch('aab'), ['aab']);
-
-  var regex22 = new RegExp(
-      r"(?!(u|m{0,}g+)u{1,}|2{2,}!1%n|(?!K|(?=y)|(?=ip))+?)(?=(?=(((?:7))*?)*?))p",
-      multiLine: true);
-  shouldBeNull(regex22.firstMatch('55up'));
-
-  var regex23 = new RegExp(r"(?=(a)b|c?)()*d");
-  shouldBeNull(regex23.firstMatch('ax'));
-
-  var regex24 = new RegExp(r"(?=a|b?)c");
-  shouldBeNull(regex24.firstMatch('x'));
-}
diff --git a/tests/corelib/regexp/backreferences_test.dart b/tests/corelib/regexp/backreferences_test.dart
deleted file mode 100644
index 6471020..0000000
--- a/tests/corelib/regexp/backreferences_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "Test to ensure correct behaviour when using backreferences in a RegExp");
-
-  shouldBeTrue(new RegExp(r"(...)\1$").hasMatch('abcabc'));
-  shouldBeFalse(new RegExp(r"(...)\1$").hasMatch('abcdef'));
-  shouldBeFalse(new RegExp(r"(...)\2$").hasMatch('abcabc'));
-  shouldBeFalse(new RegExp(r"(...)\2$").hasMatch('abc'));
-  shouldBeTrue(new RegExp(r"\1(...)$").hasMatch('abcabc'));
-  shouldBeTrue(new RegExp(r"\1(...)$").hasMatch('abcdef'));
-  shouldBeFalse(new RegExp(r"\2(...)$").hasMatch('abcabc'));
-  shouldBeFalse(new RegExp(r"\2(...)$").hasMatch('abc'));
-  shouldBeTrue(new RegExp(r"\1?(...)$").hasMatch('abc'));
-  shouldBeTrue(new RegExp(r"\1?(...)$").hasMatch('abc'));
-
-  var re = new RegExp(r"[^b]*((..)|(\2))+Sz", caseSensitive: false);
-
-  shouldBeFalse(re.hasMatch('axabcd'));
-  shouldBeTrue(re.hasMatch('axabcsz'));
-}
diff --git a/tests/corelib/regexp/bol-with-multiline_test.dart b/tests/corelib/regexp/bol-with-multiline_test.dart
deleted file mode 100644
index e43a618..0000000
--- a/tests/corelib/regexp/bol-with-multiline_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for beginning of line (BOL or ^) matching in a multiline string</a>');
-
-  var s = "aced\nabc";
-  shouldBeNull(firstMatch(s, new RegExp(r"^abc")));
-  shouldBe(firstMatch(s, new RegExp(r"^abc", multiLine: true)), ["abc"]);
-  shouldBeNull(firstMatch(s, new RegExp(r"(^|X)abc")));
-  shouldBe(
-      firstMatch(s, new RegExp(r"(^|X)abc", multiLine: true)), ["abc", ""]);
-  shouldBe(
-      firstMatch(s, new RegExp(r"(^a|Xa)bc", multiLine: true)), ["abc", "a"]);
-}
diff --git a/tests/corelib/regexp/bol_test.dart b/tests/corelib/regexp/bol_test.dart
deleted file mode 100644
index f3c363e..0000000
--- a/tests/corelib/regexp/bol_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description('Test for beginning of line (BOL or ^) matching</a>');
-
-  var s = "abc123def456xyzabc789abc999";
-  shouldBeNull(firstMatch(s, new RegExp(r"^notHere")));
-  shouldBe(firstMatch(s, new RegExp(r"^abc")), ["abc"]);
-  shouldBe(firstMatch(s, new RegExp(r"(^|X)abc")), ["abc", ""]);
-  shouldBe(firstMatch(s, new RegExp(r"^longer|123")), ["123"]);
-  shouldBe(firstMatch(s, new RegExp(r"(^abc|c)123")), ["abc123", "abc"]);
-  shouldBe(firstMatch(s, new RegExp(r"(c|^abc)123")), ["abc123", "abc"]);
-  shouldBe(firstMatch(s, new RegExp(r"(^ab|abc)123")), ["abc123", "abc"]);
-  shouldBe(firstMatch(s, new RegExp(r"(bc|^abc)([0-9]*)a")),
-      ["bc789a", "bc", "789"]);
-  shouldBeNull(new RegExp(r"(?:(Y)X)|(X)").firstMatch("abc"));
-  shouldBeNull(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abc"));
-  shouldBeNull(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abcd"));
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("Xabcd"), ["X", null]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("aXbcd"), ["X", "X"]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abXcd"), ["X", "X"]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abcXd"), ["X", "X"]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abcdX"), ["X", "X"]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("YXabcd"), ["YX", null]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("aYXbcd"), ["YX", null]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abYXcd"), ["YX", null]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abcYXd"), ["YX", null]);
-  shouldBe(new RegExp(r"(?:(?:^|Y)X)|(X)").firstMatch("abcdYX"), ["YX", null]);
-}
diff --git a/tests/corelib/regexp/capture-3_test.dart b/tests/corelib/regexp/capture-3_test.dart
deleted file mode 100644
index 06cfbdc..0000000
--- a/tests/corelib/regexp/capture-3_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2009 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  dynamic oneMatch(re) {
-    assertEquals("acd", "abcd".replaceAll(re, ""));
-  }
-
-  oneMatch(new RegExp(r"b"));
-  oneMatch(new RegExp(r"b"));
-
-  assertEquals("acdacd", "abcdabcd".replaceAll(new RegExp(r"b"), ""));
-
-  dynamic captureMatch(re) {
-    var match = firstMatch("abcd", re);
-    assertEquals("b", match.group(1));
-    assertEquals("c", match.group(2));
-  }
-
-  captureMatch(new RegExp(r"(b)(c)"));
-  captureMatch(new RegExp(r"(b)(c)"));
-
-  // A test that initially does a zero width match, but later does a non-zero
-  // width match.
-  var a = "foo bar baz".replaceAll(new RegExp(r"^|bar"), "");
-  assertEquals("foo  baz", a);
-
-  a = "foo bar baz".replaceAll(new RegExp(r"^|bar"), "*");
-  assertEquals("*foo * baz", a);
-
-  // We test FilterASCII using regexps that will backtrack forever.  Since
-  // a regexp with a non-ASCII character in it can never match an ASCII
-  // string we can test that the relevant node is removed by verifying that
-  // there is no hang.
-  dynamic NoHang(re) {
-    firstMatch("This is an ASCII string that could take forever", re);
-  }
-
-  NoHang(new RegExp(
-      r"(((.*)*)*x)Ā")); // Continuation after loop is filtered, so is loop.
-  NoHang(new RegExp(r"(((.*)*)*Ā)foo")); // Body of loop filtered.
-  NoHang(new RegExp(
-      r"Ā(((.*)*)*x)")); // Everything after a filtered character is filtered.
-  NoHang(new RegExp(
-      r"(((.*)*)*x)Ā")); // Everything before a filtered character is filtered.
-  NoHang(new RegExp(
-      r"[ćăĀ](((.*)*)*x)")); // Everything after a filtered class is filtered.
-  NoHang(new RegExp(
-      r"(((.*)*)*x)[ćăĀ]")); // Everything before a filtered class is filtered.
-  NoHang(new RegExp(r"[^\x00-\xff](((.*)*)*x)")); // After negated class.
-  NoHang(new RegExp(r"(((.*)*)*x)[^\x00-\xff]")); // Before negated class.
-  NoHang(new RegExp(r"(?!(((.*)*)*x)Ā)foo")); // Negative lookahead is filtered.
-  NoHang(new RegExp(
-      r"(?!(((.*)*)*x))Ā")); // Continuation branch of negative lookahead.
-  NoHang(new RegExp(r"(?=(((.*)*)*x)Ā)foo")); // Positive lookahead is filtered.
-  NoHang(new RegExp(
-      r"(?=(((.*)*)*x))Ā")); // Continuation branch of positive lookahead.
-  NoHang(new RegExp(
-      r"(?=Ā)(((.*)*)*x)")); // Positive lookahead also prunes continuation.
-  NoHang(new RegExp(
-      r"(æ|ø|Ā)(((.*)*)*x)")); // All branches of alternation are filtered.
-  NoHang(new RegExp(r"(a|b|(((.*)*)*x))Ā")); // 1 out of 3 branches pruned.
-  NoHang(new RegExp(
-      r"(a|(((.*)*)*x)ă|(((.*)*)*x)Ā)")); // 2 out of 3 branches pruned.
-
-  var s = "Don't prune based on a repetition of length 0";
-  assertEquals(null, firstMatch(s, new RegExp(r"å{1,1}prune")));
-  assertEquals("prune", (firstMatch(s, new RegExp(r"å{0,0}prune"))[0]));
-
-  // Some very deep regexps where FilterASCII gives up in order not to make the
-  // stack overflow.
-  var regex6 = new RegExp(r"a*\u0100*\w");
-  var input0 = "a";
-  regex6.firstMatch(input0);
-
-  var re = "\u0100*\\w";
-
-  for (var i = 0; i < 200; i++) re = "a*" + re;
-
-  var regex7 = new RegExp(re);
-  regex7.firstMatch(input0);
-
-  var regex8 = new RegExp(re, caseSensitive: false);
-  regex8.firstMatch(input0);
-
-  re = "[\u0100]*\\w";
-  for (var i = 0; i < 200; i++) re = "a*" + re;
-
-  var regex9 = new RegExp(re);
-  regex9.firstMatch(input0);
-
-  var regex10 = new RegExp(re, caseSensitive: false);
-  regex10.firstMatch(input0);
-
-  var regex11 = new RegExp(r"^(?:[^\u0000-\u0080]|[0-9a-z?,.!&\s#()])+$",
-      caseSensitive: false);
-  regex11.firstMatch(input0);
-
-  var regex12 = new RegExp(
-      r"u(\xf0{8}?\D*?|( ? !)$h??(|)*?(||)+?\6((?:\W\B|--\d-*-|)?$){0, }?|^Y( ? !1)\d+)+a");
-  regex12.firstMatch("");
-}
diff --git a/tests/corelib/regexp/capture_test.dart b/tests/corelib/regexp/capture_test.dart
deleted file mode 100644
index aa1ff8d..0000000
--- a/tests/corelib/regexp/capture_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2009 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // Tests from http://blog.stevenlevithan.com/archives/npcg-javascript
-
-  assertEquals(true, new RegExp(r"(x)?\1y").hasMatch("y"));
-  shouldBe(new RegExp(r"(x)?\1y").firstMatch("y"), ["y", null]);
-  shouldBe(new RegExp(r"(x)?y").firstMatch("y"), ["y", null]);
-  shouldBe(firstMatch("y", new RegExp(r"(x)?\1y")), ["y", null]);
-  shouldBe(firstMatch("y", new RegExp(r"(x)?y")), ["y", null]);
-  shouldBe(firstMatch("y", new RegExp(r"(x)?\1y")), ["y", null]);
-  Expect.listEquals(["", ""], "y".split(new RegExp(r"(x)?\1y")));
-  Expect.listEquals(["", ""], "y".split(new RegExp(r"(x)?y")));
-  assertEquals(0, "y".indexOf(new RegExp(r"(x)?\1y")));
-  assertEquals("z", "y".replaceAll(new RegExp(r"(x)?\1y"), "z"));
-
-  // See https://bugzilla.mozilla.org/show_bug.cgi?id=476146
-  shouldBe(new RegExp(r"^(b+|a){1,2}?bc").firstMatch("bbc"), ["bbc", "b"]);
-  shouldBe(
-      new RegExp(r"((\3|b)\2(a)){2,}").firstMatch("bbaababbabaaaaabbaaaabba"),
-      ["bbaa", "a", "", "a"]);
-
-  // From crbug.com/128821 - don't hang:
-  firstMatch(
-      "",
-      new RegExp(
-          r"((a|i|A|I|u|o|U|O)(s|c|b|c|d|f|g|h|j|k|l|m|n|p|q|r|s|t|v|w|x|y|z|B|C|D|F|G|H|J|K|L|M|N|P|Q|R|S|T|V|W|X|Y|Z)*) de\/da([.,!?\s]|$)"));
-}
diff --git a/tests/corelib/regexp/captures_test.dart b/tests/corelib/regexp/captures_test.dart
deleted file mode 100644
index c7aa44b..0000000
--- a/tests/corelib/regexp/captures_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2009 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  var re = new RegExp(
-      r"^(((N({)?)|(R)|(U)|(V)|(B)|(H)|(n((n)|(r)|(v)|(h))?)|(r(r)?)|(v)|(b((n)|(b))?)|(h))|((Y)|(A)|(E)|(o(u)?)|(p(u)?)|(q(u)?)|(s)|(t)|(u)|(w)|(x(u)?)|(y)|(z)|(a((T)|(A)|(L))?)|(c)|(e)|(f(u)?)|(g(u)?)|(i)|(j)|(l)|(m(u)?)))+");
-  var str = "Avtnennan gunzvmu pubExnY nEvln vaTxh rmuhguhaTxnY";
-  assertTrue(re.hasMatch(str));
-}
diff --git a/tests/corelib/regexp/char-insensitive_test.dart b/tests/corelib/regexp/char-insensitive_test.dart
deleted file mode 100644
index 7a81ff8..0000000
--- a/tests/corelib/regexp/char-insensitive_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "This test checks the case-insensitive matching of character literals.");
-
-  shouldBeTrue(new RegExp(r"\u00E5", caseSensitive: false)
-      .hasMatch('new RegExp(r"\u00E5")'));
-  shouldBeTrue(new RegExp(r"\u00E5", caseSensitive: false)
-      .hasMatch('new RegExp(r"\u00C5")'));
-  shouldBeTrue(new RegExp(r"\u00C5", caseSensitive: false)
-      .hasMatch('new RegExp(r"\u00E5")'));
-  shouldBeTrue(new RegExp(r"\u00C5", caseSensitive: false)
-      .hasMatch('new RegExp(r"\u00C5")'));
-
-  shouldBeFalse(new RegExp(r"\u00E5", caseSensitive: false).hasMatch('P'));
-  shouldBeFalse(new RegExp(r"\u00E5", caseSensitive: false).hasMatch('PASS'));
-  shouldBeFalse(new RegExp(r"\u00C5", caseSensitive: false).hasMatch('P'));
-  shouldBeFalse(new RegExp(r"\u00C5", caseSensitive: false).hasMatch('PASS'));
-
-  shouldBeNull(firstMatch('PASS', new RegExp(r"\u00C5", caseSensitive: false)));
-  shouldBeNull(firstMatch('PASS', new RegExp(r"\u00C5", caseSensitive: false)));
-
-  assertEquals(
-      'PAS\u00E5'.replaceAll(new RegExp(r"\u00E5", caseSensitive: false), 'S'),
-      'PASS');
-  assertEquals(
-      'PAS\u00E5'.replaceAll(new RegExp(r"\u00C5", caseSensitive: false), 'S'),
-      'PASS');
-  assertEquals(
-      'PAS\u00C5'.replaceAll(new RegExp(r"\u00E5", caseSensitive: false), 'S'),
-      'PASS');
-  assertEquals(
-      'PAS\u00C5'.replaceAll(new RegExp(r"\u00C5", caseSensitive: false), 'S'),
-      'PASS');
-
-  assertEquals(
-      'PASS'.replaceAll(new RegExp(r"\u00E5", caseSensitive: false), '%C3%A5'),
-      'PASS');
-  assertEquals(
-      'PASS'.replaceAll(new RegExp(r"\u00C5", caseSensitive: false), '%C3%A5'),
-      'PASS');
-}
diff --git a/tests/corelib/regexp/character-match-out-of-order_test.dart b/tests/corelib/regexp/character-match-out-of-order_test.dart
deleted file mode 100644
index 863c36b..0000000
--- a/tests/corelib/regexp/character-match-out-of-order_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test to ensure RegExp generates single character matches in the correct order');
-
-  shouldBe(new RegExp(r"[\w']+").firstMatch("'_'"), ["'_'"]);
-}
diff --git a/tests/corelib/regexp/compile-crash_test.dart b/tests/corelib/regexp/compile-crash_test.dart
deleted file mode 100644
index 3bb3f3f..0000000
--- a/tests/corelib/regexp/compile-crash_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test regexp compiling to make sure it doens\'t crash like bug <a href="https://bugs.webkit.org/show_bug.cgi?id=16127">16127</a>');
-
-  shouldBeTrue(new RegExp(r"\)[;\s]+") != null);
-  assertThrows(() => new RegExp(r"["));
-  assertThrows(() => new RegExp(r"[a"));
-  assertThrows(() => new RegExp(r"[-"));
-  shouldBeTrue(new RegExp(r"(a)\1") != null);
-  shouldBeTrue(new RegExp(r"(a)\1{1,3}") != null);
-}
diff --git a/tests/corelib/regexp/compile_test.dart b/tests/corelib/regexp/compile_test.dart
deleted file mode 100644
index e9932bb..0000000
--- a/tests/corelib/regexp/compile_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description('Test RegExp.compile method.');
-
-  var re = new RegExp("a", caseSensitive: false);
-  shouldBeTrue(re.hasMatch('A'));
-  shouldBeFalse(re.isMultiLine);
-  shouldBeFalse(re.isCaseSensitive);
-
-  re = new RegExp("a");
-  shouldBeFalse(re.isMultiLine);
-  shouldBeTrue(re.isCaseSensitive);
-  shouldBeFalse(re.hasMatch('A'));
-
-  assertThrows(() => new RegExp('+'));
-}
diff --git a/tests/corelib/regexp/constructor_test.dart b/tests/corelib/regexp/constructor_test.dart
deleted file mode 100644
index 046cf89..0000000
--- a/tests/corelib/regexp/constructor_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This test checks use of the regexp constructor.");
-
-  var re = new RegExp(r"abc");
-
-  // We do not guarantee that the same regular expression will or will not be shared.
-  // shouldBeTrue(identical(re, new RegExp(r"abc")));
-  // shouldBeTrue(identical(re, new RegExp(r"abc", caseSensitive: true, multiLine: false)));
-
-  shouldBeFalse(
-      identical(re, new RegExp(r"abc", caseSensitive: false, multiLine: true)));
-  shouldBeFalse(
-      identical(re, new RegExp(r"abc", caseSensitive: true, multiLine: true)));
-  shouldBeFalse(identical(
-      re, new RegExp(r"abc", caseSensitive: false, multiLine: false)));
-}
diff --git a/tests/corelib/regexp/default_arguments_test.dart b/tests/corelib/regexp/default_arguments_test.dart
deleted file mode 100644
index 0baf316..0000000
--- a/tests/corelib/regexp/default_arguments_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that `null` is interpreted as `false` when passed as argument to
-// `caseSensitive` and `multiLine`.
-
-import 'package:expect/expect.dart';
-
-main() {
-  testCaseSensitive();
-  testMultiLine();
-}
-
-testCaseSensitive() {
-  var r1 = new RegExp('foo');
-  var r2 = new RegExp('foo', caseSensitive: true);
-  var r3 = new RegExp('foo', caseSensitive: false);
-  var r4 = new RegExp('foo', caseSensitive: null);
-  Expect.isNull(r1.firstMatch('Foo'), "r1.firstMatch('Foo')");
-  Expect.isNull(r2.firstMatch('Foo'), "r2.firstMatch('Foo')");
-  Expect.isNotNull(r3.firstMatch('Foo'), "r3.firstMatch('Foo')");
-  Expect.isNotNull(r4.firstMatch('Foo'), "r4.firstMatch('Foo')");
-}
-
-testMultiLine() {
-  var r1 = new RegExp(r'^foo$');
-  var r2 = new RegExp(r'^foo$', multiLine: true);
-  var r3 = new RegExp(r'^foo$', multiLine: false);
-  var r4 = new RegExp(r'^foo$', multiLine: null);
-  Expect.isNull(r1.firstMatch('\nfoo\n'), "r1.firstMatch('\\nfoo\\n')");
-  Expect.isNotNull(r2.firstMatch('\nfoo\n'), "r2.firstMatch('\\nfoo\\n')");
-  Expect.isNull(r3.firstMatch('\nfoo\n'), "r3.firstMatch('\\nfoo\\n')");
-  Expect.isNull(r4.firstMatch('\nfoo\n'), "r4.firstMatch('\\nfoo\\n')");
-}
diff --git a/tests/corelib/regexp/dotstar_test.dart b/tests/corelib/regexp/dotstar_test.dart
deleted file mode 100644
index 33e8107..0000000
--- a/tests/corelib/regexp/dotstar_test.dart
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This page tests handling of parentheses subexpressions.");
-
-  var regexp1 = new RegExp(r".*blah.*");
-  shouldBeNull(regexp1.firstMatch('test'));
-  shouldBe(regexp1.firstMatch('blah'), ['blah']);
-  shouldBe(regexp1.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp1.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp1.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBe(regexp1.firstMatch('blah\nsecond'), ['blah']);
-  shouldBe(regexp1.firstMatch('first\nblah'), ['blah']);
-  shouldBe(regexp1.firstMatch('first\nblah\nthird'), ['blah']);
-  shouldBe(regexp1.firstMatch('first\nblah2\nblah3'), ['blah2']);
-
-  var regexp2 = new RegExp(r"^.*blah.*");
-  shouldBeNull(regexp2.firstMatch('test'));
-  shouldBe(regexp2.firstMatch('blah'), ['blah']);
-  shouldBe(regexp2.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp2.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp2.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBe(regexp2.firstMatch('blah\nsecond'), ['blah']);
-  shouldBeNull(regexp2.firstMatch('first\nblah'));
-  shouldBeNull(regexp2.firstMatch('first\nblah\nthird'));
-  shouldBeNull(regexp2.firstMatch('first\nblah2\nblah3'));
-
-  var regexp3 = new RegExp(r".*blah.*$");
-  shouldBeNull(regexp3.firstMatch('test'));
-  shouldBe(regexp3.firstMatch('blah'), ['blah']);
-  shouldBe(regexp3.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp3.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp3.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBeNull(regexp3.firstMatch('blah\nsecond'));
-  shouldBe(regexp3.firstMatch('first\nblah'), ['blah']);
-  shouldBeNull(regexp3.firstMatch('first\nblah\nthird'));
-  shouldBe(regexp3.firstMatch('first\nblah2\nblah3'), ['blah3']);
-
-  var regexp4 = new RegExp(r"^.*blah.*$");
-  shouldBeNull(regexp4.firstMatch('test'));
-  shouldBe(regexp4.firstMatch('blah'), ['blah']);
-  shouldBe(regexp4.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp4.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp4.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBeNull(regexp4.firstMatch('blah\nsecond'));
-  shouldBeNull(regexp4.firstMatch('first\nblah'));
-  shouldBeNull(regexp4.firstMatch('first\nblah\nthird'));
-  shouldBeNull(regexp4.firstMatch('first\nblah2\nblah3'));
-
-  var regexp5 = new RegExp(r".*?blah.*");
-  shouldBeNull(regexp5.firstMatch('test'));
-  shouldBe(regexp5.firstMatch('blah'), ['blah']);
-  shouldBe(regexp5.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp5.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp5.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBe(regexp5.firstMatch('blah\nsecond'), ['blah']);
-  shouldBe(regexp5.firstMatch('first\nblah'), ['blah']);
-  shouldBe(regexp5.firstMatch('first\nblah\nthird'), ['blah']);
-  shouldBe(regexp5.firstMatch('first\nblah2\nblah3'), ['blah2']);
-
-  var regexp6 = new RegExp(r".*blah.*?");
-  shouldBeNull(regexp6.firstMatch('test'));
-  shouldBe(regexp6.firstMatch('blah'), ['blah']);
-  shouldBe(regexp6.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp6.firstMatch('blah1'), ['blah']);
-  shouldBe(regexp6.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBe(regexp6.firstMatch('blah\nsecond'), ['blah']);
-  shouldBe(regexp6.firstMatch('first\nblah'), ['blah']);
-  shouldBe(regexp6.firstMatch('first\nblah\nthird'), ['blah']);
-  shouldBe(regexp6.firstMatch('first\nblah2\nblah3'), ['blah']);
-
-  var regexp7 = new RegExp(r"^.*?blah.*?$");
-  shouldBeNull(regexp7.firstMatch('test'));
-  shouldBe(regexp7.firstMatch('blah'), ['blah']);
-  shouldBe(regexp7.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp7.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp7.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBeNull(regexp7.firstMatch('blah\nsecond'));
-  shouldBeNull(regexp7.firstMatch('first\nblah'));
-  shouldBeNull(regexp7.firstMatch('first\nblah\nthird'));
-  shouldBeNull(regexp7.firstMatch('first\nblah2\nblah3'));
-
-  var regexp8 = new RegExp(r"^(.*)blah.*$");
-  shouldBeNull(regexp8.firstMatch('test'));
-  shouldBe(regexp8.firstMatch('blah'), ['blah', '']);
-  shouldBe(regexp8.firstMatch('1blah'), ['1blah', '1']);
-  shouldBe(regexp8.firstMatch('blah1'), ['blah1', '']);
-  shouldBe(
-      regexp8.firstMatch('blah blah blah'), ['blah blah blah', 'blah blah ']);
-  shouldBeNull(regexp8.firstMatch('blah\nsecond'));
-  shouldBeNull(regexp8.firstMatch('first\nblah'));
-  shouldBeNull(regexp8.firstMatch('first\nblah\nthird'));
-  shouldBeNull(regexp8.firstMatch('first\nblah2\nblah3'));
-
-  var regexp9 = new RegExp(r".*blah.*", multiLine: true);
-  shouldBeNull(regexp9.firstMatch('test'));
-  shouldBe(regexp9.firstMatch('blah'), ['blah']);
-  shouldBe(regexp9.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp9.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp9.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBe(regexp9.firstMatch('blah\nsecond'), ['blah']);
-  shouldBe(regexp9.firstMatch('first\nblah'), ['blah']);
-  shouldBe(regexp9.firstMatch('first\nblah\nthird'), ['blah']);
-  shouldBe(regexp9.firstMatch('first\nblah2\nblah3'), ['blah2']);
-
-  var regexp10 = new RegExp(r"^.*blah.*", multiLine: true);
-  shouldBeNull(regexp10.firstMatch('test'));
-  shouldBe(regexp10.firstMatch('blah'), ['blah']);
-  shouldBe(regexp10.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp10.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp10.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBe(regexp10.firstMatch('blah\nsecond'), ['blah']);
-  shouldBe(regexp10.firstMatch('first\nblah'), ['blah']);
-  shouldBe(regexp10.firstMatch('first\nblah\nthird'), ['blah']);
-  shouldBe(regexp10.firstMatch('first\nblah2\nblah3'), ['blah2']);
-
-  var regexp11 = new RegExp(r".*(?:blah).*$");
-  shouldBeNull(regexp11.firstMatch('test'));
-  shouldBe(regexp11.firstMatch('blah'), ['blah']);
-  shouldBe(regexp11.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp11.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp11.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBeNull(regexp11.firstMatch('blah\nsecond'));
-  shouldBe(regexp11.firstMatch('first\nblah'), ['blah']);
-  shouldBeNull(regexp11.firstMatch('first\nblah\nthird'));
-  shouldBe(regexp11.firstMatch('first\nblah2\nblah3'), ['blah3']);
-
-  var regexp12 = new RegExp(r".*(?:blah|buzz|bang).*$");
-  shouldBeNull(regexp12.firstMatch('test'));
-  shouldBe(regexp12.firstMatch('blah'), ['blah']);
-  shouldBe(regexp12.firstMatch('1blah'), ['1blah']);
-  shouldBe(regexp12.firstMatch('blah1'), ['blah1']);
-  shouldBe(regexp12.firstMatch('blah blah blah'), ['blah blah blah']);
-  shouldBeNull(regexp12.firstMatch('blah\nsecond'));
-  shouldBe(regexp12.firstMatch('first\nblah'), ['blah']);
-  shouldBeNull(regexp12.firstMatch('first\nblah\nthird'));
-  shouldBe(regexp12.firstMatch('first\nblah2\nblah3'), ['blah3']);
-
-  var regexp13 = new RegExp(r".*\n\d+.*");
-  shouldBe(regexp13.firstMatch('abc\n123'), ['abc\n123']);
-}
diff --git a/tests/corelib/regexp/early-acid3-86_test.dart b/tests/corelib/regexp/early-acid3-86_test.dart
deleted file mode 100644
index 5b81f06..0000000
--- a/tests/corelib/regexp/early-acid3-86_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test that covers capturing brackets, and was adapted from a part of an early version of Acid3.');
-
-  // JS regexps aren't like Perl regexps, if their character
-  // classes start with a ] that means they're empty. So this
-  // is a syntax error; if we get here it's a bug.
-  assertThrows(() => new RegExp(r"TA[])]").firstMatch('TA]'));
-  shouldBeNull(new RegExp(r"[]").firstMatch(''));
-  shouldBe(new RegExp(r"(\3)(\1)(a)").firstMatch('cat'), ['a', '', '', 'a']);
-}
diff --git a/tests/corelib/regexp/ecma-regex-examples_test.dart b/tests/corelib/regexp/ecma-regex-examples_test.dart
deleted file mode 100644
index 6ad84b6..0000000
--- a/tests/corelib/regexp/ecma-regex-examples_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "This page tests the regex examples from the ECMA-262 specification.");
-
-  var regex01 = new RegExp(r"a|ab");
-  shouldBe(regex01.firstMatch("abc"), ["a"]);
-
-  var regex02 = new RegExp(r"((a)|(ab))((c)|(bc))");
-  shouldBe(
-      regex02.firstMatch("abc"), ["abc", "a", "a", null, "bc", null, "bc"]);
-
-  var regex03 = new RegExp(r"a[a-z]{2,4}");
-  shouldBe(regex03.firstMatch("abcdefghi"), ["abcde"]);
-
-  var regex04 = new RegExp(r"a[a-z]{2,4}?");
-  shouldBe(regex04.firstMatch("abcdefghi"), ["abc"]);
-
-  var regex05 = new RegExp(r"(aa|aabaac|ba|b|c)*");
-  shouldBe(regex05.firstMatch("aabaac"), ["aaba", "ba"]);
-
-  var regex06 = new RegExp(r"^(a+)\1*,\1+$");
-  Expect.equals(
-      "aaaaaaaaaa,aaaaaaaaaaaaaaa".replaceAllMapped(regex06, (m) => m.group(1)),
-      "aaaaa");
-
-  var regex07 = new RegExp(r"(z)((a+)?(b+)?(c))*");
-  shouldBe(regex07.firstMatch("zaacbbbcac"),
-      ["zaacbbbcac", "z", "ac", "a", null, "c"]);
-
-  var regex08 = new RegExp(r"(a*)*");
-  shouldBe(regex08.firstMatch("b"), ["", null]);
-
-  var regex09 = new RegExp(r"(a*)b\1+");
-  shouldBe(regex09.firstMatch("baaaac"), ["b", ""]);
-
-  var regex10 = new RegExp(r"(?=(a+))");
-  shouldBe(regex10.firstMatch("baaabac"), ["", "aaa"]);
-
-  var regex11 = new RegExp(r"(?=(a+))a*b\1");
-  shouldBe(regex11.firstMatch("baaabac"), ["aba", "a"]);
-
-  var regex12 = new RegExp(r"(.*?)a(?!(a+)b\2c)\2(.*)");
-  shouldBe(regex12.firstMatch("baaabaac"), ["baaabaac", "ba", null, "abaac"]);
-}
diff --git a/tests/corelib/regexp/extended-characters-match_test.dart b/tests/corelib/regexp/extended-characters-match_test.dart
deleted file mode 100644
index c11f95e..0000000
--- a/tests/corelib/regexp/extended-characters-match_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "This test checks regular expressions using extended (> 255) characters and character classes.");
-
-  shouldBeNull((new RegExp("[\u0100-\u0101]")).firstMatch("a"));
-  shouldBeNull((new RegExp("[\u0100]")).firstMatch("a"));
-  shouldBeNull((new RegExp("\u0100")).firstMatch("a"));
-  assertEquals((new RegExp("[\u0061]")).firstMatch("a").group(0), "a");
-  assertEquals((new RegExp("[\u0100-\u0101a]")).firstMatch("a").group(0), "a");
-  assertEquals((new RegExp("[\u0100a]")).firstMatch("a").group(0), "a");
-  assertEquals((new RegExp("\u0061")).firstMatch("a").group(0), "a");
-  assertEquals((new RegExp("[a-\u0100]")).firstMatch("a").group(0), "a");
-  assertEquals(
-      (new RegExp("[\u0100]")).firstMatch("\u0100").group(0), "\u0100");
-  assertEquals(
-      (new RegExp("[\u0100-\u0101]")).firstMatch("\u0100").group(0), "\u0100");
-  assertEquals((new RegExp("\u0100")).firstMatch("\u0100").group(0), "\u0100");
-}
diff --git a/tests/corelib/regexp/extended-characters-more_test.dart b/tests/corelib/regexp/extended-characters-more_test.dart
deleted file mode 100644
index f51a016..0000000
--- a/tests/corelib/regexp/extended-characters-more_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "This test checks a few cases of extended (> 127) characters in repeat regular expressions.");
-
-  assertEquals(
-      "foo\u00a0\u00a0\u00a0"
-          .replaceFirst(new RegExp(new String.fromCharCode(0x00a0) + "*"), ""),
-      "foo\u00a0\u00a0\u00a0");
-  assertEquals(
-      "foo\u00a0\u00a0\u00a0".replaceFirst(new RegExp(r"\u00a0+"), ""), "foo");
-  assertEquals(
-      "foo\u00a0\u00a0\u00a0".replaceFirst(new RegExp(r"\u00a0*$"), ""), "foo");
-}
diff --git a/tests/corelib/regexp/find-first-asserted_test.dart b/tests/corelib/regexp/find-first-asserted_test.dart
deleted file mode 100644
index e985bf0..0000000
--- a/tests/corelib/regexp/find-first-asserted_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Tests some regular expressions that were doing the wrong thing with the "find first asserted" optimization.');
-
-  shouldBe(
-      new RegExp(r".*<body>(.*)</body>.*").firstMatch("foo<body>bar</body>baz"),
-      ["foo<body>bar</body>baz", "bar"]);
-  shouldBe(new RegExp(r"\s*<!--([\s\S]*)//\s*-->\s*").firstMatch("<!--// -->"),
-      ["<!--// -->", ""]);
-}
diff --git a/tests/corelib/regexp/global_test.dart b/tests/corelib/regexp/global_test.dart
deleted file mode 100644
index 1954916d..0000000
--- a/tests/corelib/regexp/global_test.dart
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  var str = "ABX X";
-  str = str.replaceAll(new RegExp(r"(\w)?X"), "c");
-  assertEquals("Ac c", str);
-
-  // Test zero-length matches.
-  str = "Als Gregor Samsa eines Morgens";
-  str = str.replaceAll(new RegExp(r"\b"), "/");
-  assertEquals("/Als/ /Gregor/ /Samsa/ /eines/ /Morgens/", str);
-
-  // Test zero-length matches that have non-zero-length sub-captures.
-  str = "It was a pleasure to burn.";
-  str = str.replaceAllMapped(
-      new RegExp(r"(?=(\w+))\b"), (Match m) => m.group(1).length.toString());
-  assertEquals("2It 3was 1a 8pleasure 2to 4burn.", str);
-
-  // Test multiple captures.
-  str = "Try not. Do, or do not. There is no try.";
-  str = str.replaceAllMapped(
-      new RegExp(r"(not?)|(do)|(try)", caseSensitive: false), (m) {
-    if (m.group(1) != null) return "-";
-    if (m.group(2) != null) return "+";
-    if (m.group(3) != null) return "=";
-  });
-  assertEquals("= -. +, or + -. There is - =.", str);
-
-  // Test multiple alternate captures.
-  str = "FOUR LEGS GOOD, TWO LEGS BAD!";
-  str = str.replaceAllMapped(new RegExp(r"(FOUR|TWO) LEGS (GOOD|BAD)"), (m) {
-    if (m.group(1) == "FOUR") assertTrue(m.group(2) == "GOOD");
-    if (m.group(1) == "TWO") assertTrue(m.group(2) == "BAD");
-    return m.group(0).length - 10;
-  });
-  assertEquals("4, 2!", str);
-
-  // The same tests with UC16.
-
-  //Test that an optional capture is cleared between two matches.
-  str = "AB\u1234 \u1234";
-  str = str.replaceAll(new RegExp(r"(\w)?\u1234"), "c");
-  assertEquals("Ac c", str);
-
-  // Test zero-length matches.
-  str = "Als \u2623\u2642 eines Morgens";
-  str = str.replaceAll(new RegExp(r"\b"), "/");
-
-  // Test zero-length matches that have non-zero-length sub-captures.
-  str = "It was a pleasure to \u70e7.";
-  str = str.replaceAllMapped(
-      new RegExp(r"(?=(\w+))\b"), (m) => "${m.group(1).length}");
-  assertEquals("2It 3was 1a 8pleasure 2to \u70e7.", str);
-
-  // Test multiple captures.
-  str = "Try not. D\u26aa, or d\u26aa not. There is no try.";
-  str = str.replaceAllMapped(
-      new RegExp(r"(not?)|(d\u26aa)|(try)", caseSensitive: false), (m) {
-    if (m.group(1) != null) return "-";
-    if (m.group(2) != null) return "+";
-    if (m.group(3) != null) return "=";
-  });
-  assertEquals("= -. +, or + -. There is - =.", str);
-
-  // Test multiple alternate captures.
-  str = "FOUR \u817f GOOD, TWO \u817f BAD!";
-  str = str.replaceAllMapped(new RegExp(r"(FOUR|TWO) \u817f (GOOD|BAD)"), (m) {
-    if (m.group(1) == "FOUR") assertTrue(m.group(2) == "GOOD");
-    if (m.group(1) == "TWO") assertTrue(m.group(2) == "BAD");
-    return m.group(0).length - 7;
-  });
-  assertEquals("4, 2!", str);
-
-  // Test capture that is a real substring.
-  str = "Beasts of England, beasts of Ireland";
-  str = str.replaceAll(new RegExp(r"(.*)"), '~');
-  assertEquals("~~", str);
-
-  // Test zero-length matches that have non-zero-length sub-captures that do not
-  // start at the match start position.
-  str = "up up up up";
-  str = str.replaceAllMapped(
-      new RegExp(r"\b(?=u(p))"), (m) => "${m.group(1).length}");
-
-  assertEquals("1up 1up 1up 1up", str);
-
-  // Create regexp that has a *lot* of captures.
-  var re_string = "(a)";
-  for (var i = 0; i < 500; i++) {
-    re_string = "(" + re_string + ")";
-  }
-  re_string = re_string + "1";
-  // re_string = "(((...((a))...)))1"
-
-  var regexps = new List();
-  var last_match_expectations = new List();
-  var first_capture_expectations = new List();
-
-  // Atomic regexp.
-  regexps.add(new RegExp(r"a1"));
-  last_match_expectations.add("a1");
-  first_capture_expectations.add("");
-  // Small regexp (no capture);
-  regexps.add(new RegExp(r"\w1"));
-  last_match_expectations.add("a1");
-  first_capture_expectations.add("");
-  // Small regexp (one capture).
-  regexps.add(new RegExp(r"(a)1"));
-  last_match_expectations.add("a1");
-  first_capture_expectations.add("a");
-  // Large regexp (a lot of captures).
-  regexps.add(new RegExp(re_string));
-  last_match_expectations.add("a1");
-  first_capture_expectations.add("a");
-
-  dynamic test_replace(result_expectation, subject, regexp, replacement) {
-    for (var i = 0; i < regexps.length; i++) {
-      // Conduct tests.
-      assertEquals(
-          result_expectation, subject.replaceAll(regexps[i], replacement));
-    }
-  }
-
-  // Test for different number of matches.
-  for (var m = 0; m < 33; m++) {
-    // Create string that matches m times.
-    var subject = "";
-    var test_1_expectation = "";
-    var test_2_expectation = "";
-    var test_3_expectation = (m == 0) ? null : new List();
-    for (var i = 0; i < m; i++) {
-      subject += "a11";
-      test_1_expectation += "x1";
-      test_2_expectation += "1";
-      test_3_expectation.add("a1");
-    }
-
-    // Test 1a: String.replace with string.
-    test_replace(test_1_expectation, subject, new RegExp(r"a1"), "x");
-
-    // Test 2a: String.replace with empty string.
-    test_replace(test_2_expectation, subject, new RegExp(r"a1"), "");
-  }
-
-  // Test String hashing (compiling regular expression includes hashing).
-  var crosscheck = "\x80";
-  for (var i = 0; i < 12; i++) crosscheck += crosscheck;
-  new RegExp(crosscheck);
-
-  var subject = "ascii~only~string~here~";
-  var replacement = "\x80";
-  var result = subject.replaceAll(new RegExp(r"~"), replacement);
-  for (var i = 0; i < 5; i++) result += result;
-  new RegExp(result);
-}
diff --git a/tests/corelib/regexp/indexof_test.dart b/tests/corelib/regexp/indexof_test.dart
deleted file mode 100644
index 7b0489f..0000000
--- a/tests/corelib/regexp/indexof_test.dart
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  dynamic CheckMatch(re, str, matches) {
-    assertEquals(matches.length > 0, re.hasMatch(str));
-    var result = re.allMatches(str).toList();
-    if (matches.length > 0) {
-      assertEquals(matches.length, result.length);
-      var lastExpected;
-      var lastFrom;
-      var lastLength;
-      for (var idx = 0; idx < matches.length; idx++) {
-        var from = matches[idx][0];
-        var length = matches[idx][1];
-        var expected = str.substring(from, from + length);
-        var name = "$str[$from..${from+length}]";
-        assertEquals(expected, result[idx].group(0), name);
-      }
-    } else {
-      assertTrue(result.isEmpty);
-    }
-  }
-
-  CheckMatch(new RegExp(r"abc"), "xxxabcxxxabcxxx", [
-    [3, 3],
-    [9, 3]
-  ]);
-  CheckMatch(new RegExp(r"abc"), "abcabcabc", [
-    [0, 3],
-    [3, 3],
-    [6, 3]
-  ]);
-  CheckMatch(new RegExp(r"aba"), "ababababa", [
-    [0, 3],
-    [4, 3]
-  ]);
-  CheckMatch(new RegExp(r"foo"), "ofooofoooofofooofo", [
-    [1, 3],
-    [5, 3],
-    [12, 3]
-  ]);
-  CheckMatch(new RegExp(r"foobarbaz"), "xx", []);
-  CheckMatch(new RegExp(r"abc"), "abababa", []);
-
-  assertEquals("xxxdefxxxdefxxx",
-      "xxxabcxxxabcxxx".replaceAll(new RegExp(r"abc"), "def"));
-  assertEquals(
-      "o-o-oofo-ofo", "ofooofoooofofooofo".replaceAll(new RegExp(r"foo"), "-"));
-  assertEquals("deded", "deded".replaceAll(new RegExp(r"x"), "-"));
-  assertEquals("-a-b-c-d-e-f-", "abcdef".replaceAll(new RegExp(""), "-"));
-
-  CheckMatch(new RegExp(r"a(.)"), "xyzzyabxyzzyacxyzzy", [
-    [5, 2],
-    [12, 2]
-  ]);
-
-  CheckMatch(new RegExp(r"a|(?:)"), "aba", [
-    [0, 1],
-    [1, 0],
-    [2, 1],
-    [3, 0]
-  ]);
-  CheckMatch(new RegExp(r"a|(?:)"), "baba", [
-    [0, 0],
-    [1, 1],
-    [2, 0],
-    [3, 1],
-    [4, 0]
-  ]);
-  CheckMatch(new RegExp(r"a|(?:)"), "bab", [
-    [0, 0],
-    [1, 1],
-    [2, 0],
-    [3, 0]
-  ]);
-}
diff --git a/tests/corelib/regexp/invalid-range-in-class_test.dart b/tests/corelib/regexp/invalid-range-in-class_test.dart
deleted file mode 100644
index 4669858..0000000
--- a/tests/corelib/regexp/invalid-range-in-class_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This page tests invalid character ranges in character classes.");
-
-  // These test a basic range / non range.
-  shouldBe(new RegExp(r"[a-c]+").firstMatch("-acbd"), ["acb"]);
-  shouldBe(new RegExp(r"[a\-c]+").firstMatch("-acbd"), ["-ac"]);
-
-  // A reverse-range is invalid.
-  assertThrows(() => new RegExp(r"[c-a]+").firstMatch("-acbd"));
-
-  // A character-class in a range is invalid, according to ECMA-262, but we allow it.
-  shouldBe(new RegExp(r"[\d-x]+").firstMatch("1-3xy"), ["1-3x"]);
-  shouldBe(new RegExp(r"[x-\d]+").firstMatch("1-3xy"), ["1-3x"]);
-  shouldBe(new RegExp(r"[\\d-\d]+").firstMatch("1-3xy"), ["1-3"]);
-
-  // Whilst we break with ECMA-262's definition of CharacterRange, we do comply with
-  // the grammar, and as such in the following regex a-z cannot be matched as a range.
-  shouldBe(new RegExp(r"[\d-a-z]+").firstMatch("az1-3y"), ["az1-3"]);
-
-  // An escaped hyphen should not be confused for an invalid range.
-  shouldBe(new RegExp(r"[\d\-x]+").firstMatch("1-3xy"), ["1-3x"]);
-  shouldBe(new RegExp(r"[x\-\d]+").firstMatch("1-3xy"), ["1-3x"]);
-  shouldBe(new RegExp(r"[\d\-\d]+").firstMatch("1-3xy"), ["1-3"]);
-
-  // A hyphen after a character-class is not invalid.
-  shouldBe(new RegExp(r"[\d-]+").firstMatch("1-3xy"), ["1-3"]);
-}
diff --git a/tests/corelib/regexp/issue_19193_test.dart b/tests/corelib/regexp/issue_19193_test.dart
deleted file mode 100644
index 52746cf..0000000
--- a/tests/corelib/regexp/issue_19193_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2015, 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';
-
-// Regression test for http://dartbug.com/19193
-main() {
-  RegExp re = new RegExp(r'.*(a+)+\d');
-  Expect.isTrue("a0aaaaaaaaaaaaa".contains(re));
-  Expect.isTrue("a0aaaaaaaaaaaaaa".contains(re)); // false when using JSCRE.
-}
diff --git a/tests/corelib/regexp/lastindex_test.dart b/tests/corelib/regexp/lastindex_test.dart
deleted file mode 100644
index fd57429..0000000
--- a/tests/corelib/regexp/lastindex_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // 'Test for regression against "https://bugs.webkit.org/show_bug.cgi?id=5602"
-  // REGRESSION: RegExp("[^\\s$]+", "g") returns extra matches'
-
-  var re = new RegExp(r"[^\s$]+");
-  var accumulate = "";
-  var match;
-  for (var match in re.allMatches("  abcdefg"))
-    accumulate += match.group(0) + "; ";
-  assertEquals(accumulate, "abcdefg; ");
-
-  re = new RegExp(r"\d");
-  accumulate = "";
-  for (var match in re.allMatches("123456789"))
-    accumulate += match.group(0) + "; ";
-  assertEquals(accumulate, "1; 2; 3; 4; 5; 6; 7; 8; 9; ");
-}
diff --git a/tests/corelib/regexp/look-ahead_test.dart b/tests/corelib/regexp/look-ahead_test.dart
deleted file mode 100644
index 56bead7..0000000
--- a/tests/corelib/regexp/look-ahead_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for regression against <a href="https://bugs.webkit.org/show_bug.cgi?id=41458">Yarr Interpreter is crashing in some cases of look-ahead regex patterns</a>');
-
-  shouldBe(firstMatch("ab", new RegExp(r"a(?=b|c)")), ["a"]);
-  shouldBe(firstMatch("abd", new RegExp(r"a(?=c|b)|d")), ["a"]);
-}
diff --git a/tests/corelib/regexp/lookahead_test.dart b/tests/corelib/regexp/lookahead_test.dart
deleted file mode 100644
index 2248d85..0000000
--- a/tests/corelib/regexp/lookahead_test.dart
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2009 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // Tests captures in positive and negative look-ahead in regular expressions.
-
-  dynamic testRE(re, input, expected_result) {
-    if (expected_result) {
-      assertTrue(re.hasMatch(input));
-    } else {
-      assertFalse(re.hasMatch(input));
-    }
-  }
-
-  dynamic execRE(re, input, expected_result) {
-    shouldBe(re.firstMatch(input), expected_result);
-  }
-
-  // Test of simple positive lookahead.
-
-  var re = new RegExp(r"^(?=a)");
-  testRE(re, "a", true);
-  testRE(re, "b", false);
-  execRE(re, "a", [""]);
-
-  re = new RegExp(r"^(?=\woo)f\w");
-  testRE(re, "foo", true);
-  testRE(re, "boo", false);
-  testRE(re, "fao", false);
-  testRE(re, "foa", false);
-  execRE(re, "foo", ["fo"]);
-
-  re = new RegExp(r"(?=\w).(?=\W)");
-  testRE(re, ".a! ", true);
-  testRE(re, ".! ", false);
-  testRE(re, ".ab! ", true);
-  execRE(re, ".ab! ", ["b"]);
-
-  re = new RegExp(r"(?=f(?=[^f]o))..");
-  testRE(re, ", foo!", true);
-  testRE(re, ", fo!", false);
-  testRE(re, ", ffo", false);
-  execRE(re, ", foo!", ["fo"]);
-
-  // Positive lookahead with captures.
-  re = new RegExp("^[^\'\"]*(?=([\'\"])).*\\1(\\w+)\\1");
-  testRE(re, "  'foo' ", true);
-  testRE(re, '  "foo" ', true);
-  testRE(re, " \" 'foo' ", false);
-  testRE(re, " ' \"foo\" ", false);
-  testRE(re, "  'foo\" ", false);
-  testRE(re, "  \"foo' ", false);
-  execRE(re, "  'foo' ", ["  'foo'", "'", "foo"]);
-  execRE(re, '  "foo" ', ['  "foo"', '"', 'foo']);
-
-  // Captures are cleared on backtrack past the look-ahead.
-  re = new RegExp(r"^(?:(?=(.))a|b)\1$");
-  testRE(re, "aa", true);
-  testRE(re, "b", true);
-  testRE(re, "bb", false);
-  testRE(re, "a", false);
-  execRE(re, "aa", ["aa", "a"]);
-  execRE(re, "b", ["b", null]);
-
-  re = new RegExp(r"^(?=(.)(?=(.)\1\2)\2\1)\1\2");
-  testRE(re, "abab", true);
-  testRE(re, "ababxxxxxxxx", true);
-  testRE(re, "aba", false);
-  execRE(re, "abab", ["ab", "a", "b"]);
-
-  re = new RegExp(r"^(?:(?=(.))a|b|c)$");
-  testRE(re, "a", true);
-  testRE(re, "b", true);
-  testRE(re, "c", true);
-  testRE(re, "d", false);
-  execRE(re, "a", ["a", "a"]);
-  execRE(re, "b", ["b", null]);
-  execRE(re, "c", ["c", null]);
-
-  execRE(new RegExp(r"^(?=(b))b"), "b", ["b", "b"]);
-  execRE(new RegExp(r"^(?:(?=(b))|a)b"), "ab", ["ab", null]);
-  execRE(new RegExp(r"^(?:(?=(b)(?:(?=(c))|d))|)bd"), "bd", ["bd", "b", null]);
-
-  // Test of Negative Look-Ahead.
-
-  re = new RegExp(r"(?!x).");
-  testRE(re, "y", true);
-  testRE(re, "x", false);
-  execRE(re, "y", ["y"]);
-
-  re = new RegExp(r"(?!(\d))|\d");
-  testRE(re, "4", true);
-  execRE(re, "4", ["4", null]);
-  execRE(re, "x", ["", null]);
-
-  // Test mixed nested look-ahead with captures.
-
-  re = new RegExp(r"^(?=(x)(?=(y)))");
-  testRE(re, "xy", true);
-  testRE(re, "xz", false);
-  execRE(re, "xy", ["", "x", "y"]);
-
-  re = new RegExp(r"^(?!(x)(?!(y)))");
-  testRE(re, "xy", true);
-  testRE(re, "xz", false);
-  execRE(re, "xy", ["", null, null]);
-
-  re = new RegExp(r"^(?=(x)(?!(y)))");
-  testRE(re, "xz", true);
-  testRE(re, "xy", false);
-  execRE(re, "xz", ["", "x", null]);
-
-  re = new RegExp(r"^(?!(x)(?=(y)))");
-  testRE(re, "xz", true);
-  testRE(re, "xy", false);
-  execRE(re, "xz", ["", null, null]);
-
-  re = new RegExp(r"^(?=(x)(?!(y)(?=(z))))");
-  testRE(re, "xaz", true);
-  testRE(re, "xya", true);
-  testRE(re, "xyz", false);
-  testRE(re, "a", false);
-  execRE(re, "xaz", ["", "x", null, null]);
-  execRE(re, "xya", ["", "x", null, null]);
-
-  re = new RegExp(r"^(?!(x)(?=(y)(?!(z))))");
-  testRE(re, "a", true);
-  testRE(re, "xa", true);
-  testRE(re, "xyz", true);
-  testRE(re, "xya", false);
-  execRE(re, "a", ["", null, null, null]);
-  execRE(re, "xa", ["", null, null, null]);
-  execRE(re, "xyz", ["", null, null, null]);
-}
diff --git a/tests/corelib/regexp/loop-capture_test.dart b/tests/corelib/regexp/loop-capture_test.dart
deleted file mode 100644
index ee39410..0000000
--- a/tests/corelib/regexp/loop-capture_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2009 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  shouldBe(new RegExp(r"(?:(a)|(b)|(c))+").firstMatch("abc"),
-      ["abc", null, null, "c"]);
-  shouldBe(new RegExp(r"(?:(a)|b)*").firstMatch("ab"), ["ab", null]);
-}
diff --git a/tests/corelib/regexp/malformed-escapes_test.dart b/tests/corelib/regexp/malformed-escapes_test.dart
deleted file mode 100644
index dbf9126..0000000
--- a/tests/corelib/regexp/malformed-escapes_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This page tests handling of malformed escape sequences.");
-
-  var regexp;
-
-  regexp = new RegExp(r"\ug", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('ug'));
-
-  regexp = new RegExp(r"\xg", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('xg'));
-
-  regexp = new RegExp(r"\c_", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('\\\\c_'));
-
-  regexp = new RegExp(r"[\B]", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('B'));
-
-  regexp = new RegExp(r"[\b]", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('\b'));
-
-  regexp = new RegExp(r"\8", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('\\\8'));
-
-  regexp = new RegExp(r"^[\c]$");
-  shouldBeTrue(regexp.hasMatch('c'));
-
-  regexp = new RegExp(r"^[\c_]$");
-  shouldBeFalse(regexp.hasMatch('c'));
-
-  regexp = new RegExp(r"^[\c]]$");
-  shouldBeTrue(regexp.hasMatch('c]'));
-}
diff --git a/tests/corelib/regexp/many-brackets_test.dart b/tests/corelib/regexp/many-brackets_test.dart
deleted file mode 100644
index 5c8777f..0000000
--- a/tests/corelib/regexp/many-brackets_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test regular expression processing with many capturing brackets (200).');
-
-  var count = 200;
-
-  var regexp = "";
-  for (var i = 0; i < count; ++i) regexp += "(";
-  regexp += "hello";
-  for (var i = 0; i < count; ++i) regexp += ")";
-
-  var manyHellosArray = [];
-  for (var i = 0; i <= count; ++i) manyHellosArray.add("hello");
-
-  var manyBracketsRegExp = new RegExp(regexp);
-  shouldBe(firstMatch('hello', manyBracketsRegExp), manyHellosArray);
-}
diff --git a/tests/corelib/regexp/multiline_test.dart b/tests/corelib/regexp/multiline_test.dart
deleted file mode 100644
index fd4b340..0000000
--- a/tests/corelib/regexp/multiline_test.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-/**
- * @fileoverview Check that various regexp constructs work as intended.
- * Particularly those regexps that use ^ and $.
- */
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  assertTrue(new RegExp(r"^bar").hasMatch("bar"));
-  assertTrue(new RegExp(r"^bar").hasMatch("bar\nfoo"));
-  assertFalse(new RegExp(r"^bar").hasMatch("foo\nbar"));
-  assertTrue(new RegExp(r"^bar", multiLine: true).hasMatch("bar"));
-  assertTrue(new RegExp(r"^bar", multiLine: true).hasMatch("bar\nfoo"));
-  assertTrue(new RegExp(r"^bar", multiLine: true).hasMatch("foo\nbar"));
-
-  assertTrue(new RegExp(r"bar$").hasMatch("bar"));
-  assertFalse(new RegExp(r"bar$").hasMatch("bar\nfoo"));
-  assertTrue(new RegExp(r"bar$").hasMatch("foo\nbar"));
-  assertTrue(new RegExp(r"bar$", multiLine: true).hasMatch("bar"));
-  assertTrue(new RegExp(r"bar$", multiLine: true).hasMatch("bar\nfoo"));
-  assertTrue(new RegExp(r"bar$", multiLine: true).hasMatch("foo\nbar"));
-
-  assertFalse(new RegExp(r"^bxr").hasMatch("bar"));
-  assertFalse(new RegExp(r"^bxr").hasMatch("bar\nfoo"));
-  assertFalse(new RegExp(r"^bxr", multiLine: true).hasMatch("bar"));
-  assertFalse(new RegExp(r"^bxr", multiLine: true).hasMatch("bar\nfoo"));
-  assertFalse(new RegExp(r"^bxr", multiLine: true).hasMatch("foo\nbar"));
-
-  assertFalse(new RegExp(r"bxr$").hasMatch("bar"));
-  assertFalse(new RegExp(r"bxr$").hasMatch("foo\nbar"));
-  assertFalse(new RegExp(r"bxr$", multiLine: true).hasMatch("bar"));
-  assertFalse(new RegExp(r"bxr$", multiLine: true).hasMatch("bar\nfoo"));
-  assertFalse(new RegExp(r"bxr$", multiLine: true).hasMatch("foo\nbar"));
-
-  assertTrue(new RegExp(r"^.*$").hasMatch(""));
-  assertTrue(new RegExp(r"^.*$").hasMatch("foo"));
-  assertFalse(new RegExp(r"^.*$").hasMatch("\n"));
-  assertTrue(new RegExp(r"^.*$", multiLine: true).hasMatch("\n"));
-
-  assertTrue(new RegExp(r"^[\s]*$").hasMatch(" "));
-  assertTrue(new RegExp(r"^[\s]*$").hasMatch("\n"));
-
-  assertTrue(new RegExp(r"^[^]*$").hasMatch(""));
-  assertTrue(new RegExp(r"^[^]*$").hasMatch("foo"));
-  assertTrue(new RegExp(r"^[^]*$").hasMatch("\n"));
-
-  assertTrue(new RegExp(r"^([()\s]|.)*$").hasMatch("()\n()"));
-  assertTrue(new RegExp(r"^([()\n]|.)*$").hasMatch("()\n()"));
-  assertFalse(new RegExp(r"^([()]|.)*$").hasMatch("()\n()"));
-  assertTrue(new RegExp(r"^([()]|.)*$", multiLine: true).hasMatch("()\n()"));
-  assertTrue(new RegExp(r"^([()]|.)*$", multiLine: true).hasMatch("()\n"));
-  assertTrue(new RegExp(r"^[()]*$", multiLine: true).hasMatch("()\n."));
-
-  assertTrue(new RegExp(r"^[\].]*$").hasMatch("...]..."));
-
-  dynamic check_case(lc, uc) {
-    var a = new RegExp("^" + lc + r"$");
-    assertFalse(a.hasMatch(uc));
-    a = new RegExp("^" + lc + r"$", caseSensitive: false);
-    assertTrue(a.hasMatch(uc));
-
-    var A = new RegExp("^" + uc + r"$");
-    assertFalse(A.hasMatch(lc));
-    A = new RegExp("^" + uc + r"$", caseSensitive: false);
-    assertTrue(A.hasMatch(lc));
-
-    a = new RegExp("^[" + lc + r"]$");
-    assertFalse(a.hasMatch(uc));
-    a = new RegExp("^[" + lc + r"]$", caseSensitive: false);
-    assertTrue(a.hasMatch(uc));
-
-    A = new RegExp("^[" + uc + r"]$");
-    assertFalse(A.hasMatch(lc));
-    A = new RegExp("^[" + uc + r"]$", caseSensitive: false);
-    assertTrue(A.hasMatch(lc));
-  }
-
-  check_case("a", "A");
-  // Aring
-  check_case(new String.fromCharCode(229), new String.fromCharCode(197));
-  // Russian G
-  check_case(new String.fromCharCode(0x413), new String.fromCharCode(0x433));
-
-  assertThrows(() => new RegExp('[z-a]'));
-}
diff --git a/tests/corelib/regexp/negative-special-characters_test.dart b/tests/corelib/regexp/negative-special-characters_test.dart
deleted file mode 100644
index 2c673b1..0000000
--- a/tests/corelib/regexp/negative-special-characters_test.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This test checks Unicode in negative RegExp character classes.");
-
-  dynamic testPassed(str) {}
-  dynamic testFailed(str) => Expect.fail(str);
-
-  dynamic test(pattern, str, expected_length) {
-    var result = str.replaceAll(
-        new RegExp(pattern, caseSensitive: false, multiLine: true), '');
-
-    if (result.length == expected_length)
-      testPassed('"' + pattern + '", ' + '"' + str + '".');
-    else
-      testFailed(
-          '"' + pattern + '", ' + '"' + str + '". Was "' + result + '".');
-  }
-
-  test("\\s", " \t\f\v\r\n", 0); // ASCII whitespace.
-  test("\\S", "Проверка", 0); // Cyrillic letters are non-whitespace...
-  test("\\s", "Проверка", 8); // ...and they aren't whitespace.
-  test("[\\s]", "Проверка", 8);
-  test("[\\S]", "Проверка", 0);
-  test("[^\\s]", "Проверка", 0);
-  test("[^\\S]", "Проверка", 8);
-  test("[\\s\\S]*", "\\u2002Проверка\\r\\n\\u00a0", 0);
-  test("\\S\\S", "уф", 0);
-  test("\\S{2}", "уф", 0);
-
-  test("\\w", "Проверка",
-      8); // Alas, only ASCII characters count as word ones in JS.
-  test("\\W", "Проверка", 0);
-  test("[\\w]", "Проверка", 8);
-  test("[\\W]", "Проверка", 0);
-  test("[^\\w]", "Проверка", 0);
-  test("[^\\W]", "Проверка", 8);
-  test("\\W\\W", "уф", 0);
-  test("\\W{2}", "уф", 0);
-
-  test("\\d", "Проверка", 8); // Digit and non-digit.
-  test("\\D", "Проверка", 0);
-  test("[\\d]", "Проверка", 8);
-  test("[\\D]", "Проверка", 0);
-  test("[^\\d]", "Проверка", 0);
-  test("[^\\D]", "Проверка", 8);
-  test("\\D\\D", "уф", 0);
-  test("\\D{2}", "уф", 0);
-
-  test("[\\S\\d]", "Проверка123", 0);
-  test("[\\d\\S]", "Проверка123", 0);
-  test("[^\\S\\d]", "Проверка123", 11);
-  test("[^\\d\\S]", "Проверка123", 11);
-
-  test("[ \\S]", " Проверка ", 0);
-  test("[\\S ]", " Проверка ", 0);
-  test("[ф \\S]", " Проверка ", 0);
-  test("[\\Sф ]", " Проверка ", 0);
-
-  test("[^р\\S]", " Проверка ", 8);
-  test("[^\\Sр]", " Проверка ", 8);
-  test("[^р\\s]", " Проверка ", 4);
-  test("[^\\sр]", " Проверка ", 4);
-
-  test("[ф \\s\\S]", "Проверка \\r\\n", 0);
-  test("[\\S\\sф ]", "Проверка \\r\\n", 0);
-
-  test("[^z]", "Проверка \\r\\n", 0);
-  test("[^ф]", "Проверка \\r\\n", 0);
-}
diff --git a/tests/corelib/regexp/no-extensions_test.dart b/tests/corelib/regexp/no-extensions_test.dart
deleted file mode 100644
index 131d250..0000000
--- a/tests/corelib/regexp/no-extensions_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Tests that regular expressions do not have extensions that diverge from the JavaScript specification. ' +
-          'Because WebKit originally used a copy of PCRE, various non-JavaScript regular expression features were historically present. ' +
-          'Also tests various related edge cases.');
-
-  shouldBeNull(new RegExp(r"\\x{41}").firstMatch("yA1"));
-  assertEquals(new RegExp(r"[\x{41}]").firstMatch("yA1").group(0), "1");
-  assertEquals(new RegExp(r"\x1g").firstMatch("x1g").group(0), "x1g");
-  assertEquals(new RegExp(r"[\x1g]").firstMatch("x").group(0), "x");
-  assertEquals(new RegExp(r"[\x1g]").firstMatch("1").group(0), "1");
-  assertEquals(
-      new RegExp(r"\2147483648")
-          .firstMatch(new String.fromCharCode(140) + "7483648")
-          .group(0),
-      new String.fromCharCode(140) + "7483648");
-  assertEquals(new RegExp(r"\4294967296").firstMatch("\"94967296").group(0),
-      "\"94967296");
-  assertEquals(new RegExp(r"\8589934592").firstMatch("\8589934592").group(0),
-      "\8589934592");
-  assertEquals(
-      "\nAbc\n".replaceAllMapped(new RegExp(r"(\n)[^\n]+$"), (m) => m.group(1)),
-      "\nAbc\n");
-  shouldBeNull(new RegExp(r"x$").firstMatch("x\n"));
-  assertThrows(() => new RegExp(r"x++"));
-  shouldBeNull(new RegExp(r"[]]").firstMatch("]"));
-
-  assertEquals(new RegExp(r"\060").firstMatch("y01").group(0), "0");
-  assertEquals(new RegExp(r"[\060]").firstMatch("y01").group(0), "0");
-  assertEquals(new RegExp(r"\606").firstMatch("y06").group(0), "06");
-  assertEquals(new RegExp(r"[\606]").firstMatch("y06").group(0), "0");
-  assertEquals(new RegExp(r"[\606]").firstMatch("y6").group(0), "6");
-  assertEquals(new RegExp(r"\101").firstMatch("yA1").group(0), "A");
-  assertEquals(new RegExp(r"[\101]").firstMatch("yA1").group(0), "A");
-  assertEquals(new RegExp(r"\1011").firstMatch("yA1").group(0), "A1");
-  assertEquals(new RegExp(r"[\1011]").firstMatch("yA1").group(0), "A");
-  assertEquals(new RegExp(r"[\1011]").firstMatch("y1").group(0), "1");
-  assertEquals(
-      new RegExp(r"\10q")
-          .firstMatch("y" + new String.fromCharCode(8) + "q")
-          .group(0),
-      new String.fromCharCode(8) + "q");
-  assertEquals(
-      new RegExp(r"[\10q]")
-          .firstMatch("y" + new String.fromCharCode(8) + "q")
-          .group(0),
-      new String.fromCharCode(8));
-  assertEquals(
-      new RegExp(r"\1q")
-          .firstMatch("y" + new String.fromCharCode(1) + "q")
-          .group(0),
-      new String.fromCharCode(1) + "q");
-  assertEquals(
-      new RegExp(r"[\1q]")
-          .firstMatch("y" + new String.fromCharCode(1) + "q")
-          .group(0),
-      new String.fromCharCode(1));
-  assertEquals(new RegExp(r"[\1q]").firstMatch("yq").group(0), "q");
-  assertEquals(new RegExp(r"\8q").firstMatch("\8q").group(0), "\8q");
-  assertEquals(new RegExp(r"[\8q]").firstMatch("y8q").group(0), "8");
-  assertEquals(new RegExp(r"[\8q]").firstMatch("yq").group(0), "q");
-  shouldBe(new RegExp(r"(x)\1q").firstMatch("xxq"), ["xxq", "x"]);
-  shouldBe(new RegExp(r"(x)[\1q]").firstMatch("xxq"), ["xq", "x"]);
-  shouldBe(
-      new RegExp(r"(x)[\1q]").firstMatch("xx" + new String.fromCharCode(1)),
-      ["x" + new String.fromCharCode(1), "x"]);
-}
diff --git a/tests/corelib/regexp/non-bmp_test.dart b/tests/corelib/regexp/non-bmp_test.dart
deleted file mode 100644
index 9849bba..0000000
--- a/tests/corelib/regexp/non-bmp_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description('Tests that regular expressions treat non-BMP characters as two separate characters. ' +
-      'From a Unicode correctness point of view this is wrong, but it is what other browsers do. ' +
-      'And given that we store strings as UTF-16, it is also more efficient to implement. ' +
-      'Also test some other cases related to UTF-8 and UTF-16.');
-
-  var surrogatePair =
-      new String.fromCharCode(0xD800) + new String.fromCharCode(0xDC00);
-
-  assertEquals(new RegExp(r".").firstMatch(surrogatePair).group(0).length, 1);
-  assertEquals(new RegExp(r"\D").firstMatch(surrogatePair).group(0).length, 1);
-  assertEquals(new RegExp(r"\S").firstMatch(surrogatePair).group(0).length, 1);
-  assertEquals(new RegExp(r"\W").firstMatch(surrogatePair).group(0).length, 1);
-  assertEquals(
-      new RegExp(r"[^x]").firstMatch(surrogatePair).group(0).length, 1);
-
-  assertEquals(
-      new RegExp(r".{1,2}")
-          .firstMatch("!!" + new String.fromCharCode(0xA1))
-          .group(0)
-          .length,
-      2);
-  shouldBeNull(new RegExp(r".").firstMatch(""));
-}
diff --git a/tests/corelib/regexp/non-capturing-backtracking_test.dart b/tests/corelib/regexp/non-capturing-backtracking_test.dart
deleted file mode 100644
index 68c2dc2..0000000
--- a/tests/corelib/regexp/non-capturing-backtracking_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "This page tests for proper backtracking with greedy quantifiers and non-capturing parentheses.");
-
-  var re = new RegExp(r"(?:a*)a");
-  shouldBe(re.firstMatch('a'), ['a']);
-}
diff --git a/tests/corelib/regexp/non-capturing-groups_test.dart b/tests/corelib/regexp/non-capturing-groups_test.dart
deleted file mode 100644
index 33a8383..0000000
--- a/tests/corelib/regexp/non-capturing-groups_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for behavior of non-capturing groups, as described in <a href="http://blog.stevenlevithan.com/archives/npcg-javascript">' +
-          'a blog post by Steven Levithan</a> and <a href="http://bugs.webkit.org/show_bug.cgi?id=14931">bug 14931</a>.');
-
-  shouldBeTrue(new RegExp(r"(x)?\1y").hasMatch("y"));
-  shouldBe(new RegExp(r"(x)?\1y").firstMatch("y"), ["y", null]);
-  shouldBe(new RegExp(r"(x)?y").firstMatch("y"), ["y", null]);
-  shouldBe(firstMatch("y", new RegExp(r"(x)?\1y")), ["y", null]);
-  shouldBe(firstMatch("y", new RegExp(r"(x)?y")), ["y", null]);
-  shouldBe(firstMatch("y", new RegExp(r"(x)?\1y")), ["y", null]);
-  Expect.listEquals("y".split(new RegExp(r"(x)?\1y")), ["", ""]);
-  Expect.listEquals("y".split(new RegExp(r"(x)?y")), ["", ""]);
-  assertEquals("y".indexOf(new RegExp(r"(x)?\1y")), 0);
-  assertEquals("y".replaceAll(new RegExp(r"(x)?\1y"), "z"), "z");
-  assertEquals(
-      "y".replaceAllMapped(new RegExp(r"(x)?y"), (m) => m.group(1)), "null");
-  assertEquals(
-      "y".replaceAllMapped(new RegExp(r"(x)?\1y"), (m) => m.group(1)), "null");
-  assertEquals(
-      "y".replaceAllMapped(new RegExp(r"(x)?y"), (m) => m.group(1)), "null");
-}
diff --git a/tests/corelib/regexp/non-character_test.dart b/tests/corelib/regexp/non-character_test.dart
deleted file mode 100644
index 5afcd94..0000000
--- a/tests/corelib/regexp/non-character_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for regular expressions with non-character values in them, specifically in character classes.');
-
-  shouldBeNull(firstMatch("F", new RegExp(r"[\uD7FF]")));
-  shouldBeNull(firstMatch("0", new RegExp(r"[\uD800]")));
-  shouldBeNull(firstMatch("F", new RegExp(r"[\uDFFF]")));
-  shouldBeNull(firstMatch("E", new RegExp(r"[\uE000]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFDBF]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFDD0]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFDEF]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFDF0]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFEFF]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFEFF]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFFFE]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\uFFFF]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\u10FFFF]")));
-  shouldBeNull(firstMatch("y", new RegExp(r"[\u110000]")));
-}
diff --git a/tests/corelib/regexp/non-greedy-parentheses_test.dart b/tests/corelib/regexp/non-greedy-parentheses_test.dart
deleted file mode 100644
index 4c85a3a..0000000
--- a/tests/corelib/regexp/non-greedy-parentheses_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for regression against <a href="https://bugs.webkit.org/show_bug.cgi?id=39289">Wrong result in case of non-iterative matching of subpatterns in non-greedy cases in YARR Interpreter</a>');
-
-  shouldBe(firstMatch("a", new RegExp(r"(a)??")), ["", null]);
-  shouldBe(firstMatch("b", new RegExp(r"(a)??")), ["", null]);
-  shouldBe(firstMatch("ab", new RegExp(r"(a)??b")), ["ab", "a"]);
-  shouldBe(firstMatch("aaab", new RegExp(r"(a+)??b")), ["aaab", "aaa"]);
-  shouldBe(
-      firstMatch("abbc", new RegExp(r"(a)??(b+)??c")), ["abbc", "a", "bb"]);
-  shouldBe(firstMatch("ac", new RegExp(r"(a)??(b)??c")), ["ac", "a", null]);
-  shouldBe(firstMatch("abc", new RegExp(r"(a(b)??)??c")), ["abc", "ab", "b"]);
-  shouldBe(firstMatch("ac", new RegExp(r"(a(b)??)??c")), ["ac", "a", null]);
-}
diff --git a/tests/corelib/regexp/norepeat_test.dart b/tests/corelib/regexp/norepeat_test.dart
deleted file mode 100644
index f0f8cc3..0000000
--- a/tests/corelib/regexp/norepeat_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description('Test for https://bugs.webkit.org/show_bug.cgi?id=46077');
-
-  var re = new RegExp(r"^b|^cd");
-  var str = "abcd";
-  shouldBeFalse(re.hasMatch(str));
-}
diff --git a/tests/corelib/regexp/overflow_test.dart b/tests/corelib/regexp/overflow_test.dart
deleted file mode 100644
index 42523d0..0000000
--- a/tests/corelib/regexp/overflow_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "This test checks expressions with alternative lengths of appox. 2^31.");
-
-  var regexp1 = new RegExp(r"(?:(?=g))|(?:m).{2147483648,}");
-  shouldBeNull(regexp1.firstMatch(''));
-
-  var regexp2 = new RegExp(r"(?:(?=g)).{2147483648,}");
-  shouldBeNull(regexp2.firstMatch(''));
-
-  var s3 =
-      r"&{6}u4a64YfQP{C}u88c4u5772Qu8693{4294967167}u85f2u7f3fs((uf202){4})u5bc6u1947";
-  var regexp3 = new RegExp(s3);
-  shouldBeNull(regexp3.firstMatch(s3));
-
-  var regexp4 = new RegExp(r"[^a$]{4294967295}");
-  shouldBeNull(regexp4.firstMatch(s3));
-}
diff --git a/tests/corelib/regexp/parentheses_test.dart b/tests/corelib/regexp/parentheses_test.dart
deleted file mode 100644
index 340416e..0000000
--- a/tests/corelib/regexp/parentheses_test.dart
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This page tests handling of parentheses subexpressions.");
-
-  var regexp1 = new RegExp(r"(a|A)(b|B)");
-  shouldBe(regexp1.firstMatch('abc'), ['ab', 'a', 'b']);
-
-  var regexp2 = new RegExp(r"(a((b)|c|d))e");
-  shouldBe(regexp2.firstMatch('abacadabe'), ['abe', 'ab', 'b', 'b']);
-
-  var regexp3 = new RegExp(r"(a(b|(c)|d))e");
-  shouldBe(regexp3.firstMatch('abacadabe'), ['abe', 'ab', 'b', null]);
-
-  var regexp4 = new RegExp(r"(a(b|c|(d)))e");
-  shouldBe(regexp4.firstMatch('abacadabe'), ['abe', 'ab', 'b', null]);
-
-  var regexp5 = new RegExp(r"(a((b)|(c)|(d)))e");
-  shouldBe(
-      regexp5.firstMatch('abacadabe'), ['abe', 'ab', 'b', 'b', null, null]);
-
-  var regexp6 = new RegExp(r"(a((b)|(c)|(d)))");
-  shouldBe(regexp6.firstMatch('abcde'), ['ab', 'ab', 'b', 'b', null, null]);
-
-  var regexp7 = new RegExp(r"(a(b)??)??c");
-  shouldBe(regexp7.firstMatch('abc'), ['abc', 'ab', 'b']);
-
-  var regexp8 = new RegExp(r"(a|(e|q))(x|y)");
-  shouldBe(regexp8.firstMatch('bcaddxqy'), ['qy', 'q', 'q', 'y']);
-
-  var regexp9 = new RegExp(r"((t|b)?|a)$");
-  shouldBe(
-      regexp9.firstMatch('asdfjejgsdflaksdfjkeljghkjea'), ['a', 'a', null]);
-
-  var regexp10 = new RegExp(r"(?:h|e?(?:t|b)?|a?(?:t|b)?)(?:$)");
-  shouldBe(regexp10.firstMatch('asdfjejgsdflaksdfjkeljghat'), ['at']);
-
-  var regexp11 = new RegExp(r"([Jj]ava([Ss]cript)?)\sis\s(fun\w*)");
-  shouldBeNull(regexp11.firstMatch(
-      'Developing with JavaScript is dangerous, do not try it without assistance'));
-
-  var regexp12 = new RegExp(r"(?:(.+), )?(.+), (..) to (?:(.+), )?(.+), (..)");
-  shouldBe(regexp12.firstMatch('Seattle, WA to Buckley, WA'), [
-    'Seattle, WA to Buckley, WA',
-    null,
-    'Seattle',
-    'WA',
-    null,
-    'Buckley',
-    'WA'
-  ]);
-
-  var regexp13 = new RegExp(r"(A)?(A.*)");
-  shouldBe(regexp13.firstMatch('zxcasd;fl\ ^AaaAAaaaf;lrlrzs'),
-      ['AaaAAaaaf;lrlrzs', null, 'AaaAAaaaf;lrlrzs']);
-
-  var regexp14 = new RegExp(r"(a)|(b)");
-  shouldBe(regexp14.firstMatch('b'), ['b', null, 'b']);
-
-  var regexp15 = new RegExp(r"^(?!(ab)de|x)(abd)(f)");
-  shouldBe(regexp15.firstMatch('abdf'), ['abdf', null, 'abd', 'f']);
-
-  var regexp16 = new RegExp(r"(a|A)(b|B)");
-  shouldBe(regexp16.firstMatch('abc'), ['ab', 'a', 'b']);
-
-  var regexp17 = new RegExp(r"(a|d|q|)x", caseSensitive: false);
-  shouldBe(regexp17.firstMatch('bcaDxqy'), ['Dx', 'D']);
-
-  var regexp18 = new RegExp(r"^.*?(:|$)");
-  shouldBe(regexp18.firstMatch('Hello: World'), ['Hello:', ':']);
-
-  var regexp19 = new RegExp(r"(ab|^.{0,2})bar");
-  shouldBe(regexp19.firstMatch('barrel'), ['bar', '']);
-
-  var regexp20 = new RegExp(r"(?:(?!foo)...|^.{0,2})bar(.*)");
-  shouldBe(regexp20.firstMatch('barrel'), ['barrel', 'rel']);
-  shouldBe(regexp20.firstMatch('2barrel'), ['2barrel', 'rel']);
-
-  var regexp21 = new RegExp(r"([a-g](b|B)|xyz)");
-  shouldBe(regexp21.firstMatch('abc'), ['ab', 'ab', 'b']);
-
-  var regexp22 = new RegExp(r"(?:^|;)\s*abc=([^;]*)");
-  shouldBeNull(regexp22.firstMatch('abcdlskfgjdslkfg'));
-
-  var regexp23 = new RegExp("\"[^<\"]*\"|'[^<']*'");
-  shouldBe(regexp23.firstMatch('<html xmlns=\"http://www.w3.org/1999/xhtml\"'),
-      ['\"http://www.w3.org/1999/xhtml\"']);
-
-  var regexp24 = new RegExp(r"^(?:(?=abc)\w{3}:|\d\d)$");
-  shouldBeNull(regexp24.firstMatch('123'));
-
-  var regexp25 = new RegExp(r"^\s*(\*|[\w\-]+)(\b|$)?");
-  shouldBe(regexp25.firstMatch('this is a test'), ['this', 'this', null]);
-  shouldBeNull(regexp25.firstMatch('!this is a test'));
-
-  var regexp26 = new RegExp(r"a(b)(a*)|aaa");
-  shouldBe(regexp26.firstMatch('aaa'), ['aaa', null, null]);
-
-  var regexp27 = new RegExp("^" +
-          "(?:" +
-          "([^:/?#]+):" + /* scheme */
-          ")?" +
-          "(?:" +
-          "(//)" + /* authorityRoot */
-          "(" + /* authority */
-          "(?:" +
-          "(" + /* userInfo */
-          "([^:@]*)" + /* user */
-          ":?" +
-          "([^:@]*)" + /* password */
-          ")?" +
-          "@" +
-          ")?" +
-          "([^:/?#]*)" + /* domain */
-          "(?::(\\d*))?" + /* port */
-          ")" +
-          ")?" +
-          "([^?#]*)" + /*path*/
-          "(?:\\?([^#]*))?" + /* queryString */
-          "(?:#(.*))?" /*fragment */
-      );
-  shouldBe(
-      regexp27
-          .firstMatch('file:///Users/Someone/Desktop/HelloWorld/index.html'),
-      [
-        'file:///Users/Someone/Desktop/HelloWorld/index.html',
-        'file',
-        '//',
-        '',
-        null,
-        null,
-        null,
-        '',
-        null,
-        '/Users/Someone/Desktop/HelloWorld/index.html',
-        null,
-        null
-      ]);
-
-  var regexp28 = new RegExp("^" +
-      "(?:" +
-      "([^:/?#]+):" + /* scheme */
-      ")?" +
-      "(?:" +
-      "(//)" + /* authorityRoot */
-      "(" + /* authority */
-      "(" + /* userInfo */
-      "([^:@]*)" + /* user */
-      ":?" +
-      "([^:@]*)" + /* password */
-      ")?" +
-      "@" +
-      ")" +
-      ")?");
-  shouldBe(
-      regexp28
-          .firstMatch('file:///Users/Someone/Desktop/HelloWorld/index.html'),
-      ['file:', 'file', null, null, null, null, null]);
-
-  var regexp29 = new RegExp(r'^\s*((\[[^\]]+\])|(u?)("[^"]+"))\s*');
-  shouldBeNull(regexp29.firstMatch('Committer:'));
-
-  var regexp30 = new RegExp(r'^\s*((\[[^\]]+\])|m(u?)("[^"]+"))\s*');
-  shouldBeNull(regexp30.firstMatch('Committer:'));
-
-  var regexp31 = new RegExp(r'^\s*(m(\[[^\]]+\])|m(u?)("[^"]+"))\s*');
-  shouldBeNull(regexp31.firstMatch('Committer:'));
-
-  var regexp32 = new RegExp(r'\s*(m(\[[^\]]+\])|m(u?)("[^"]+"))\s*');
-  shouldBeNull(regexp32.firstMatch('Committer:'));
-
-  var regexp33 = new RegExp('^(?:(?:(a)(xyz|[^>"\'\s]*)?)|(/?>)|.[^\w\s>]*)');
-  shouldBe(regexp33.firstMatch('> <head>'), ['>', null, null, '>']);
-
-  var regexp34 = new RegExp(r"(?:^|\b)btn-\S+");
-  shouldBeNull(regexp34.firstMatch('xyz123'));
-  shouldBe(regexp34.firstMatch('btn-abc'), ['btn-abc']);
-  shouldBeNull(regexp34.firstMatch('btn- abc'));
-  shouldBeNull(regexp34.firstMatch('XXbtn-abc'));
-  shouldBe(regexp34.firstMatch('XX btn-abc'), ['btn-abc']);
-
-  var regexp35 = new RegExp(r"^((a|b)(x|xxx)|)$");
-  shouldBe(regexp35.firstMatch('ax'), ['ax', 'ax', 'a', 'x']);
-  shouldBeNull(regexp35.firstMatch('axx'));
-  shouldBe(regexp35.firstMatch('axxx'), ['axxx', 'axxx', 'a', 'xxx']);
-  shouldBe(regexp35.firstMatch('bx'), ['bx', 'bx', 'b', 'x']);
-  shouldBeNull(regexp35.firstMatch('bxx'));
-  shouldBe(regexp35.firstMatch('bxxx'), ['bxxx', 'bxxx', 'b', 'xxx']);
-
-  var regexp36 = new RegExp(r"^((\/|\.|\-)(\d\d|\d\d\d\d)|)$");
-  shouldBe(regexp36.firstMatch('/2011'), ['/2011', '/2011', '/', '2011']);
-  shouldBe(regexp36.firstMatch('/11'), ['/11', '/11', '/', '11']);
-  shouldBeNull(regexp36.firstMatch('/123'));
-
-  var regexp37 = new RegExp(
-      r"^([1][0-2]|[0]\d|\d)(\/|\.|\-)([0-2]\d|[3][0-1]|\d)((\/|\.|\-)(\d\d|\d\d\d\d)|)$");
-  shouldBe(regexp37.firstMatch('7/4/1776'),
-      ['7/4/1776', '7', '/', '4', '/1776', '/', '1776']);
-  shouldBe(regexp37.firstMatch('07-04-1776'),
-      ['07-04-1776', '07', '-', '04', '-1776', '-', '1776']);
-
-  var regexp38 = new RegExp(r"^(z|(x|xx)|b|)$");
-  shouldBe(regexp38.firstMatch('xx'), ['xx', 'xx', 'xx']);
-  shouldBe(regexp38.firstMatch('b'), ['b', 'b', null]);
-  shouldBe(regexp38.firstMatch('z'), ['z', 'z', null]);
-  shouldBe(regexp38.firstMatch(''), ['', '', null]);
-
-  var regexp39 = new RegExp(r"(8|((?=P)))?");
-  shouldBe(regexp39.firstMatch(''), ['', null, null]);
-  shouldBe(regexp39.firstMatch('8'), ['8', '8', null]);
-  shouldBe(regexp39.firstMatch('zP'), ['', null, null]);
-
-  var regexp40 = new RegExp(r"((8)|((?=P){4}))?()");
-  shouldBe(regexp40.firstMatch(''), ['', null, null, null, '']);
-  shouldBe(regexp40.firstMatch('8'), ['8', '8', '8', null, '']);
-  shouldBe(regexp40.firstMatch('zPz'), ['', null, null, null, '']);
-  shouldBe(regexp40.firstMatch('zPPz'), ['', null, null, null, '']);
-  shouldBe(regexp40.firstMatch('zPPPz'), ['', null, null, null, '']);
-  shouldBe(regexp40.firstMatch('zPPPPz'), ['', null, null, null, '']);
-
-  var regexp41 = new RegExp(
-      r"(([\w\-]+:\/\/?|www[.])[^\s()<>]+(?:([\w\d]+)|([^\[:punct:\]\s()<>\W]|\/)))");
-  shouldBe(
-      regexp41.firstMatch(
-          'Here is a link: http://www.acme.com/our_products/index.html. That is all we want!'),
-      [
-        'http://www.acme.com/our_products/index.html',
-        'http://www.acme.com/our_products/index.html',
-        'http://',
-        'l',
-        null
-      ]);
-
-  var regexp42 = new RegExp(r"((?:(4)?))?");
-  shouldBe(regexp42.firstMatch(''), ['', null, null]);
-  shouldBe(regexp42.firstMatch('4'), ['4', '4', '4']);
-  shouldBe(regexp42.firstMatch('4321'), ['4', '4', '4']);
-
-  shouldBeTrue(new RegExp(r"(?!(?=r{0}){2,})|((z)?)?", caseSensitive: false)
-      .hasMatch(''));
-
-  var regexp43 = new RegExp(r"(?!(?:\1+s))");
-  shouldBe(regexp43.firstMatch('SSS'), ['']);
-
-  var regexp44 = new RegExp(r"(?!(?:\3+(s+?)))");
-  shouldBe(regexp44.firstMatch('SSS'), ['', null]);
-
-  var regexp45 = new RegExp(r"((?!(?:|)v{2,}|))");
-  shouldBeNull(regexp45.firstMatch('vt'));
-
-  var regexp46 = new RegExp(r"(w)(?:5{3}|())|pk");
-  shouldBeNull(regexp46.firstMatch('5'));
-  shouldBe(regexp46.firstMatch('pk'), ['pk', null, null]);
-  shouldBe(regexp46.firstMatch('Xw555'), ['w555', 'w', null]);
-  shouldBe(regexp46.firstMatch('Xw55pk5'), ['w', 'w', '']);
-
-  var regexp47 = new RegExp(r"(.*?)(?:(?:\?(.*?)?)?)(?:(?:#)?)$");
-  shouldBe(regexp47.firstMatch('/www.acme.com/this/is/a/path/file.txt'), [
-    '/www.acme.com/this/is/a/path/file.txt',
-    '/www.acme.com/this/is/a/path/file.txt',
-    null
-  ]);
-
-  var regexp48 = new RegExp(
-      r"^(?:(\w+):\/*([\w\.\-\d]+)(?::(\d+)|)(?=(?:\/|$))|)(?:$|\/?(.*?)(?:\?(.*?)?|)(?:#(.*)|)$)");
-  shouldBe(regexp48.firstMatch('http://www.acme.com/this/is/a/path/file.txt'), [
-    'http://www.acme.com/this/is/a/path/file.txt',
-    'http',
-    'www.acme.com',
-    null,
-    'this/is/a/path/file.txt',
-    null,
-    null
-  ]);
-
-  var regexp49 = new RegExp(
-      r"(?:([^:]*?)(?:(?:\?(.*?)?)?)(?:(?:#)?)$)|(?:^(?:(\w+):\/*([\w\.\-\d]+)(?::(\d+)|)(?=(?:\/|$))|)(?:$|\/?(.*?)(?:\?(.*?)?|)(?:#(.*)|)$))");
-  shouldBe(regexp49.firstMatch('http://www.acme.com/this/is/a/path/file.txt'), [
-    'http://www.acme.com/this/is/a/path/file.txt',
-    null,
-    null,
-    'http',
-    'www.acme.com',
-    null,
-    'this/is/a/path/file.txt',
-    null,
-    null
-  ]);
-
-  var regexp50 = new RegExp(r"((a)b{28,}c|d)x");
-  shouldBeNull(regexp50.firstMatch('((a)b{28,}c|d)x'));
-  shouldBe(regexp50.firstMatch('abbbbbbbbbbbbbbbbbbbbbbbbbbbbcx'), [
-    'abbbbbbbbbbbbbbbbbbbbbbbbbbbbcx',
-    'abbbbbbbbbbbbbbbbbbbbbbbbbbbbc',
-    'a'
-  ]);
-  shouldBe(regexp50.firstMatch('dx'), ['dx', 'd', null]);
-
-  var s = "((.\s{-}).{28,}\P{Yi}?{,30}\|.)\x9e{-,}\P{Any}";
-  var regexp51 = new RegExp(s);
-  shouldBeNull(regexp51.firstMatch('abc'));
-  shouldBe(regexp51.firstMatch(s), [')\x9e{-,}P{Any}', ')', null]);
-
-  var regexp52 = new RegExp(r"(Rob)|(Bob)|(Robert)|(Bobby)");
-  shouldBe(regexp52.firstMatch('Hi Bob'), ['Bob', null, 'Bob', null, null]);
-
-  // Test cases discovered by fuzzing that crashed the compiler.
-  var regexp53 = new RegExp(
-      r"(?=(?:(?:(gB)|(?!cs|<))((?=(?!v6){0,})))|(?=#)+?)",
-      multiLine: true);
-  shouldBe(regexp53.firstMatch('#'), ['', null, '']);
-  var regexp54 = new RegExp(r"((?:(?:()|(?!))((?=(?!))))|())", multiLine: true);
-  shouldBe(regexp54.firstMatch('#'), ['', '', null, null, '']);
-  var regexp55 = new RegExp(r"(?:(?:(?:a?|(?:))((?:)))|a?)", multiLine: true);
-  shouldBe(regexp55.firstMatch('#'), ['', '']);
-
-  // Test evaluation order of empty subpattern alternatives.
-  var regexp56 = new RegExp(r"(|a)");
-  shouldBe(regexp56.firstMatch('a'), ['', '']);
-  var regexp57 = new RegExp(r"(a|)");
-  shouldBe(regexp57.firstMatch('a'), ['a', 'a']);
-
-  // Tests that non-greedy repeat quantified parentheses will backtrack through multiple frames of subpattern matches.
-  var regexp58 = new RegExp(r"a|b(?:[^b])*?c");
-  shouldBe(regexp58.firstMatch('badbc'), ['a']);
-  var regexp59 = new RegExp(r"(X(?:.(?!X))*?Y)|(Y(?:.(?!Y))*?Z)");
-  Expect.listEquals(
-      regexp59
-          .allMatches('Y aaa X Match1 Y aaa Y Match2 Z')
-          .map((m) => m.group(0))
-          .toList(),
-      ['X Match1 Y', 'Y Match2 Z']);
-}
diff --git a/tests/corelib/regexp/pcre-test-4_test.dart b/tests/corelib/regexp/pcre-test-4_test.dart
deleted file mode 100644
index 80745d1..0000000
--- a/tests/corelib/regexp/pcre-test-4_test.dart
+++ /dev/null
@@ -1,1031 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      "A chunk of our port of PCRE's test suite, adapted to be more applicable to JavaScript.");
-
-  var regex0 = new RegExp(r"a.b");
-  var input0 = "acb";
-  var results = ["acb"];
-  shouldBe(regex0.firstMatch(input0), results);
-  var input1 = "a\x7fb";
-  results = ["a\u007fb"];
-  shouldBe(regex0.firstMatch(input1), results);
-  var input2 = "a\u0100b";
-  results = ["a\u0100b"];
-  shouldBe(regex0.firstMatch(input2), results);
-  // Failers
-  var input3 = "a\nb";
-  results = null;
-  shouldBe(regex0.firstMatch(input3), results);
-
-  var regex1 = new RegExp(r"a(.{3})b");
-  input0 = "a\u4000xyb";
-  results = ["a\u4000xyb", "\u4000xy"];
-  shouldBe(regex1.firstMatch(input0), results);
-  input1 = "a\u4000\x7fyb";
-  results = ["a\u4000\u007fyb", "\u4000\u007fy"];
-  shouldBe(regex1.firstMatch(input1), results);
-  input2 = "a\u4000\u0100yb";
-  results = ["a\u4000\u0100yb", "\u4000\u0100y"];
-  shouldBe(regex1.firstMatch(input2), results);
-  // Failers
-  input3 = "a\u4000b";
-  results = null;
-  shouldBe(regex1.firstMatch(input3), results);
-  var input4 = "ac\ncb";
-  results = null;
-  shouldBe(regex1.firstMatch(input4), results);
-
-  var regex2 = new RegExp(r"a(.*?)(.)");
-  input0 = "a\xc0\x88b";
-  results = ["a\xc0", "", "\xc0"];
-  shouldBe(regex2.firstMatch(input0), results);
-
-  var regex3 = new RegExp(r"a(.*?)(.)");
-  input0 = "a\u0100b";
-  results = ["a\u0100", "", "\u0100"];
-  shouldBe(regex3.firstMatch(input0), results);
-
-  var regex4 = new RegExp(r"a(.*)(.)");
-  input0 = "a\xc0\x88b";
-  results = ["a\xc0\x88b", "\xc0\x88", "b"];
-  shouldBe(regex4.firstMatch(input0), results);
-
-  var regex5 = new RegExp(r"a(.*)(.)");
-  input0 = "a\u0100b";
-  results = ["a\u0100b", "\u0100", "b"];
-  shouldBe(regex5.firstMatch(input0), results);
-
-  var regex6 = new RegExp(r"a(.)(.)");
-  input0 = "a\xc0\x92bcd";
-  results = ["a\xc0\x92", "\xc0", "\x92"];
-  shouldBe(regex6.firstMatch(input0), results);
-
-  var regex7 = new RegExp(r"a(.)(.)");
-  input0 = "a\u0240bcd";
-  results = ["a\u0240b", "\u0240", "b"];
-  shouldBe(regex7.firstMatch(input0), results);
-
-  var regex8 = new RegExp(r"a(.?)(.)");
-  input0 = "a\xc0\x92bcd";
-  results = ["a\xc0\x92", "\xc0", "\x92"];
-  shouldBe(regex8.firstMatch(input0), results);
-
-  var regex9 = new RegExp(r"a(.?)(.)");
-  input0 = "a\u0240bcd";
-  results = ["a\u0240b", "\u0240", "b"];
-  shouldBe(regex9.firstMatch(input0), results);
-
-  var regex10 = new RegExp(r"a(.??)(.)");
-  input0 = "a\xc0\x92bcd";
-  results = ["a\xc0", "", "\xc0"];
-  shouldBe(regex10.firstMatch(input0), results);
-
-  var regex11 = new RegExp(r"a(.??)(.)");
-  input0 = "a\u0240bcd";
-  results = ["a\u0240", "", "\u0240"];
-  shouldBe(regex11.firstMatch(input0), results);
-
-  var regex12 = new RegExp(r"a(.{3})b");
-  input0 = "a\u1234xyb";
-  results = ["a\u1234xyb", "\u1234xy"];
-  shouldBe(regex12.firstMatch(input0), results);
-  input1 = "a\u1234\u4321yb";
-  results = ["a\u1234\u4321yb", "\u1234\u4321y"];
-  shouldBe(regex12.firstMatch(input1), results);
-  input2 = "a\u1234\u4321\u3412b";
-  results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
-  shouldBe(regex12.firstMatch(input2), results);
-  // Failers
-  input3 = "a\u1234b";
-  results = null;
-  shouldBe(regex12.firstMatch(input3), results);
-  input4 = "ac\ncb";
-  results = null;
-  shouldBe(regex12.firstMatch(input4), results);
-
-  var regex13 = new RegExp(r"a(.{3,})b");
-  input0 = "a\u1234xyb";
-  results = ["a\u1234xyb", "\u1234xy"];
-  shouldBe(regex13.firstMatch(input0), results);
-  input1 = "a\u1234\u4321yb";
-  results = ["a\u1234\u4321yb", "\u1234\u4321y"];
-  shouldBe(regex13.firstMatch(input1), results);
-  input2 = "a\u1234\u4321\u3412b";
-  results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
-  shouldBe(regex13.firstMatch(input2), results);
-  input3 = "axxxxbcdefghijb";
-  results = ["axxxxbcdefghijb", "xxxxbcdefghij"];
-  shouldBe(regex13.firstMatch(input3), results);
-  input4 = "a\u1234\u4321\u3412\u3421b";
-  results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
-  shouldBe(regex13.firstMatch(input4), results);
-  // Failers
-  var input5 = "a\u1234b";
-  results = null;
-  shouldBe(regex13.firstMatch(input5), results);
-
-  var regex14 = new RegExp(r"a(.{3,}?)b");
-  input0 = "a\u1234xyb";
-  results = ["a\u1234xyb", "\u1234xy"];
-  shouldBe(regex14.firstMatch(input0), results);
-  input1 = "a\u1234\u4321yb";
-  results = ["a\u1234\u4321yb", "\u1234\u4321y"];
-  shouldBe(regex14.firstMatch(input1), results);
-  input2 = "a\u1234\u4321\u3412b";
-  results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
-  shouldBe(regex14.firstMatch(input2), results);
-  input3 = "axxxxbcdefghijb";
-  results = ["axxxxb", "xxxx"];
-  shouldBe(regex14.firstMatch(input3), results);
-  input4 = "a\u1234\u4321\u3412\u3421b";
-  results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
-  shouldBe(regex14.firstMatch(input4), results);
-  // Failers
-  input5 = "a\u1234b";
-  results = null;
-  shouldBe(regex14.firstMatch(input5), results);
-
-  var regex15 = new RegExp(r"a(.{3,5})b");
-  input0 = "a\u1234xyb";
-  results = ["a\u1234xyb", "\u1234xy"];
-  shouldBe(regex15.firstMatch(input0), results);
-  input1 = "a\u1234\u4321yb";
-  results = ["a\u1234\u4321yb", "\u1234\u4321y"];
-  shouldBe(regex15.firstMatch(input1), results);
-  input2 = "a\u1234\u4321\u3412b";
-  results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
-  shouldBe(regex15.firstMatch(input2), results);
-  input3 = "axxxxbcdefghijb";
-  results = ["axxxxb", "xxxx"];
-  shouldBe(regex15.firstMatch(input3), results);
-  input4 = "a\u1234\u4321\u3412\u3421b";
-  results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
-  shouldBe(regex15.firstMatch(input4), results);
-  input5 = "axbxxbcdefghijb";
-  results = ["axbxxb", "xbxx"];
-  shouldBe(regex15.firstMatch(input5), results);
-  var input6 = "axxxxxbcdefghijb";
-  results = ["axxxxxb", "xxxxx"];
-  shouldBe(regex15.firstMatch(input6), results);
-  // Failers
-  var input7 = "a\u1234b";
-  results = null;
-  shouldBe(regex15.firstMatch(input7), results);
-  var input8 = "axxxxxxbcdefghijb";
-  results = null;
-  shouldBe(regex15.firstMatch(input8), results);
-
-  var regex16 = new RegExp(r"a(.{3,5}?)b");
-  input0 = "a\u1234xyb";
-  results = ["a\u1234xyb", "\u1234xy"];
-  shouldBe(regex16.firstMatch(input0), results);
-  input1 = "a\u1234\u4321yb";
-  results = ["a\u1234\u4321yb", "\u1234\u4321y"];
-  shouldBe(regex16.firstMatch(input1), results);
-  input2 = "a\u1234\u4321\u3412b";
-  results = ["a\u1234\u4321\u3412b", "\u1234\u4321\u3412"];
-  shouldBe(regex16.firstMatch(input2), results);
-  input3 = "axxxxbcdefghijb";
-  results = ["axxxxb", "xxxx"];
-  shouldBe(regex16.firstMatch(input3), results);
-  input4 = "a\u1234\u4321\u3412\u3421b";
-  results = ["a\u1234\u4321\u3412\u3421b", "\u1234\u4321\u3412\u3421"];
-  shouldBe(regex16.firstMatch(input4), results);
-  input5 = "axbxxbcdefghijb";
-  results = ["axbxxb", "xbxx"];
-  shouldBe(regex16.firstMatch(input5), results);
-  input6 = "axxxxxbcdefghijb";
-  results = ["axxxxxb", "xxxxx"];
-  shouldBe(regex16.firstMatch(input6), results);
-  // Failers
-  input7 = "a\u1234b";
-  results = null;
-  shouldBe(regex16.firstMatch(input7), results);
-  input8 = "axxxxxxbcdefghijb";
-  results = null;
-  shouldBe(regex16.firstMatch(input8), results);
-
-  var regex17 = new RegExp(r"^[a\u00c0]");
-  // Failers
-  input0 = "\u0100";
-  results = null;
-  shouldBe(regex17.firstMatch(input0), results);
-
-  var regex21 = new RegExp(r"(?:\u0100){3}b");
-  input0 = "\u0100\u0100\u0100b";
-  results = ["\u0100\u0100\u0100b"];
-  shouldBe(regex21.firstMatch(input0), results);
-  // Failers
-  input1 = "\u0100\u0100b";
-  results = null;
-  shouldBe(regex21.firstMatch(input1), results);
-
-  var regex22 = new RegExp(r"\u00ab");
-  input0 = "\u00ab";
-  results = ["\u00ab"];
-  shouldBe(regex22.firstMatch(input0), results);
-  input1 = "\xc2\xab";
-  results = ["\u00ab"];
-  shouldBe(regex22.firstMatch(input1), results);
-  // Failers
-  input2 = "\x00{ab}";
-  results = null;
-  shouldBe(regex22.firstMatch(input2), results);
-
-  var regex30 = new RegExp(r"^[^a]{2}");
-  input0 = "\u0100bc";
-  results = ["\u0100b"];
-  shouldBe(regex30.firstMatch(input0), results);
-
-  var regex31 = new RegExp(r"^[^a]{2,}");
-  input0 = "\u0100bcAa";
-  results = ["\u0100bcA"];
-  shouldBe(regex31.firstMatch(input0), results);
-
-  var regex32 = new RegExp(r"^[^a]{2,}?");
-  input0 = "\u0100bca";
-  results = ["\u0100b"];
-  shouldBe(regex32.firstMatch(input0), results);
-
-  var regex33 = new RegExp(r"^[^a]{2}", caseSensitive: false);
-  input0 = "\u0100bc";
-  results = ["\u0100b"];
-  shouldBe(regex33.firstMatch(input0), results);
-
-  var regex34 = new RegExp(r"^[^a]{2,}", caseSensitive: false);
-  input0 = "\u0100bcAa";
-  results = ["\u0100bc"];
-  shouldBe(regex34.firstMatch(input0), results);
-
-  var regex35 = new RegExp(r"^[^a]{2,}?", caseSensitive: false);
-  input0 = "\u0100bca";
-  results = ["\u0100b"];
-  shouldBe(regex35.firstMatch(input0), results);
-
-  var regex36 = new RegExp(r"\u0100{0,0}");
-  input0 = "abcd";
-  results = [""];
-  shouldBe(regex36.firstMatch(input0), results);
-
-  var regex37 = new RegExp(r"\u0100?");
-  input0 = "abcd";
-  results = [""];
-  shouldBe(regex37.firstMatch(input0), results);
-  input1 = "\u0100\u0100";
-  results = ["\u0100"];
-  shouldBe(regex37.firstMatch(input1), results);
-
-  var regex38 = new RegExp(r"\u0100{0,3}");
-  input0 = "\u0100\u0100";
-  results = ["\u0100\u0100"];
-  shouldBe(regex38.firstMatch(input0), results);
-  input1 = "\u0100\u0100\u0100\u0100";
-  results = ["\u0100\u0100\u0100"];
-  shouldBe(regex38.firstMatch(input1), results);
-
-  var regex39 = new RegExp(r"\u0100*");
-  input0 = "abce";
-  results = [""];
-  shouldBe(regex39.firstMatch(input0), results);
-  input1 = "\u0100\u0100\u0100\u0100";
-  results = ["\u0100\u0100\u0100\u0100"];
-  shouldBe(regex39.firstMatch(input1), results);
-
-  var regex40 = new RegExp(r"\u0100{1,1}");
-  input0 = "abcd\u0100\u0100\u0100\u0100";
-  results = ["\u0100"];
-  shouldBe(regex40.firstMatch(input0), results);
-
-  var regex41 = new RegExp(r"\u0100{1,3}");
-  input0 = "abcd\u0100\u0100\u0100\u0100";
-  results = ["\u0100\u0100\u0100"];
-  shouldBe(regex41.firstMatch(input0), results);
-
-  var regex42 = new RegExp(r"\u0100+");
-  input0 = "abcd\u0100\u0100\u0100\u0100";
-  results = ["\u0100\u0100\u0100\u0100"];
-  shouldBe(regex42.firstMatch(input0), results);
-
-  var regex43 = new RegExp(r"\u0100{3}");
-  input0 = "abcd\u0100\u0100\u0100XX";
-  results = ["\u0100\u0100\u0100"];
-  shouldBe(regex43.firstMatch(input0), results);
-
-  var regex44 = new RegExp(r"\u0100{3,5}");
-  input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX";
-  results = ["\u0100\u0100\u0100\u0100\u0100"];
-  shouldBe(regex44.firstMatch(input0), results);
-
-  var regex45 = new RegExp(r"\u0100{3,}");
-  input0 = "abcd\u0100\u0100\u0100\u0100\u0100\u0100\u0100XX";
-  results = ["\u0100\u0100\u0100\u0100\u0100\u0100\u0100"];
-  shouldBe(regex45.firstMatch(input0), results);
-
-  var regex47 = new RegExp(r"\D*");
-  input0 =
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
-  results = [
-    "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
-  ];
-  shouldBe(regex47.firstMatch(input0), results);
-
-  var regex48 = new RegExp(r"\D*");
-  input0 =
-      "\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100";
-  results = [
-    "\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100\u0100"
-  ];
-  shouldBe(regex48.firstMatch(input0), results);
-
-  var regex49 = new RegExp(r"\D");
-  input0 = "1X2";
-  results = ["X"];
-  shouldBe(regex49.firstMatch(input0), results);
-  input1 = "1\u01002";
-  results = ["\u0100"];
-  shouldBe(regex49.firstMatch(input1), results);
-
-  var regex50 = new RegExp(r">\S");
-  input0 = "> >X Y";
-  results = [">X"];
-  shouldBe(regex50.firstMatch(input0), results);
-  input1 = "> >\u0100 Y";
-  results = [">\u0100"];
-  shouldBe(regex50.firstMatch(input1), results);
-
-  var regex51 = new RegExp(r"\d");
-  input0 = "\u01003";
-  results = ["3"];
-  shouldBe(regex51.firstMatch(input0), results);
-
-  var regex52 = new RegExp(r"\s");
-  input0 = "\u0100 X";
-  results = [" "];
-  shouldBe(regex52.firstMatch(input0), results);
-
-  var regex53 = new RegExp(r"\D+");
-  input0 = "12abcd34";
-  results = ["abcd"];
-  shouldBe(regex53.firstMatch(input0), results);
-  // Failers
-  input1 = "1234";
-  results = null;
-  shouldBe(regex53.firstMatch(input1), results);
-
-  var regex54 = new RegExp(r"\D{2,3}");
-  input0 = "12abcd34";
-  results = ["abc"];
-  shouldBe(regex54.firstMatch(input0), results);
-  input1 = "12ab34";
-  results = ["ab"];
-  shouldBe(regex54.firstMatch(input1), results);
-  // Failers
-  input2 = "1234";
-  results = null;
-  shouldBe(regex54.firstMatch(input2), results);
-  input3 = "12a34";
-  results = null;
-  shouldBe(regex54.firstMatch(input3), results);
-
-  var regex55 = new RegExp(r"\D{2,3}?");
-  input0 = "12abcd34";
-  results = ["ab"];
-  shouldBe(regex55.firstMatch(input0), results);
-  input1 = "12ab34";
-  results = ["ab"];
-  shouldBe(regex55.firstMatch(input1), results);
-  // Failers
-  input2 = "1234";
-  results = null;
-  shouldBe(regex55.firstMatch(input2), results);
-  input3 = "12a34";
-  results = null;
-  shouldBe(regex55.firstMatch(input3), results);
-
-  var regex56 = new RegExp(r"\d+");
-  input0 = "12abcd34";
-  results = ["12"];
-  shouldBe(regex56.firstMatch(input0), results);
-
-  var regex57 = new RegExp(r"\d{2,3}");
-  input0 = "12abcd34";
-  results = ["12"];
-  shouldBe(regex57.firstMatch(input0), results);
-  input1 = "1234abcd";
-  results = ["123"];
-  shouldBe(regex57.firstMatch(input1), results);
-  // Failers
-  input2 = "1.4";
-  results = null;
-  shouldBe(regex57.firstMatch(input2), results);
-
-  var regex58 = new RegExp(r"\d{2,3}?");
-  input0 = "12abcd34";
-  results = ["12"];
-  shouldBe(regex58.firstMatch(input0), results);
-  input1 = "1234abcd";
-  results = ["12"];
-  shouldBe(regex58.firstMatch(input1), results);
-  // Failers
-  input2 = "1.4";
-  results = null;
-  shouldBe(regex58.firstMatch(input2), results);
-
-  var regex59 = new RegExp(r"\S+");
-  input0 = "12abcd34";
-  results = ["12abcd34"];
-  shouldBe(regex59.firstMatch(input0), results);
-  // Failers
-  input1 = "    ";
-  results = null;
-  shouldBe(regex59.firstMatch(input1), results);
-
-  var regex60 = new RegExp(r"\S{2,3}");
-  input0 = "12abcd34";
-  results = ["12a"];
-  shouldBe(regex60.firstMatch(input0), results);
-  input1 = "1234abcd";
-  results = ["123"];
-  shouldBe(regex60.firstMatch(input1), results);
-  // Failers
-  input2 = "    ";
-  results = null;
-  shouldBe(regex60.firstMatch(input2), results);
-
-  var regex61 = new RegExp(r"\S{2,3}?");
-  input0 = "12abcd34";
-  results = ["12"];
-  shouldBe(regex61.firstMatch(input0), results);
-  input1 = "1234abcd";
-  results = ["12"];
-  shouldBe(regex61.firstMatch(input1), results);
-  // Failers
-  input2 = "    ";
-  results = null;
-  shouldBe(regex61.firstMatch(input2), results);
-
-  var regex62 = new RegExp(r">\s+<");
-  input0 = "12>      <34";
-  results = [">      <"];
-  shouldBe(regex62.firstMatch(input0), results);
-
-  var regex63 = new RegExp(r">\s{2,3}<");
-  input0 = "ab>  <cd";
-  results = [">  <"];
-  shouldBe(regex63.firstMatch(input0), results);
-  input1 = "ab>   <ce";
-  results = [">   <"];
-  shouldBe(regex63.firstMatch(input1), results);
-  // Failers
-  input2 = "ab>    <cd";
-  results = null;
-  shouldBe(regex63.firstMatch(input2), results);
-
-  var regex64 = new RegExp(r">\s{2,3}?<");
-  input0 = "ab>  <cd";
-  results = [">  <"];
-  shouldBe(regex64.firstMatch(input0), results);
-  input1 = "ab>   <ce";
-  results = [">   <"];
-  shouldBe(regex64.firstMatch(input1), results);
-  // Failers
-  input2 = "ab>    <cd";
-  results = null;
-  shouldBe(regex64.firstMatch(input2), results);
-
-  var regex65 = new RegExp(r"\w+");
-  input0 = "12      34";
-  results = ["12"];
-  shouldBe(regex65.firstMatch(input0), results);
-  // Failers
-  input1 = "+++=*!";
-  results = null;
-  shouldBe(regex65.firstMatch(input1), results);
-
-  var regex66 = new RegExp(r"\w{2,3}");
-  input0 = "ab  cd";
-  results = ["ab"];
-  shouldBe(regex66.firstMatch(input0), results);
-  input1 = "abcd ce";
-  results = ["abc"];
-  shouldBe(regex66.firstMatch(input1), results);
-  // Failers
-  input2 = "a.b.c";
-  results = null;
-  shouldBe(regex66.firstMatch(input2), results);
-
-  var regex67 = new RegExp(r"\w{2,3}?");
-  input0 = "ab  cd";
-  results = ["ab"];
-  shouldBe(regex67.firstMatch(input0), results);
-  input1 = "abcd ce";
-  results = ["ab"];
-  shouldBe(regex67.firstMatch(input1), results);
-  // Failers
-  input2 = "a.b.c";
-  results = null;
-  shouldBe(regex67.firstMatch(input2), results);
-
-  var regex68 = new RegExp(r"\W+");
-  input0 = "12====34";
-  results = ["===="];
-  shouldBe(regex68.firstMatch(input0), results);
-  // Failers
-  input1 = "abcd";
-  results = null;
-  shouldBe(regex68.firstMatch(input1), results);
-
-  var regex69 = new RegExp(r"\W{2,3}");
-  input0 = "ab====cd";
-  results = ["==="];
-  shouldBe(regex69.firstMatch(input0), results);
-  input1 = "ab==cd";
-  results = ["=="];
-  shouldBe(regex69.firstMatch(input1), results);
-  // Failers
-  input2 = "a.b.c";
-  results = null;
-  shouldBe(regex69.firstMatch(input2), results);
-
-  var regex70 = new RegExp(r"\W{2,3}?");
-  input0 = "ab====cd";
-  results = ["=="];
-  shouldBe(regex70.firstMatch(input0), results);
-  input1 = "ab==cd";
-  results = ["=="];
-  shouldBe(regex70.firstMatch(input1), results);
-  // Failers
-  input2 = "a.b.c";
-  results = null;
-  shouldBe(regex70.firstMatch(input2), results);
-
-  var regex71 = new RegExp(r"[\u0100]");
-  input0 = "\u0100";
-  results = ["\u0100"];
-  shouldBe(regex71.firstMatch(input0), results);
-  input1 = "Z\u0100";
-  results = ["\u0100"];
-  shouldBe(regex71.firstMatch(input1), results);
-  input2 = "\u0100Z";
-  results = ["\u0100"];
-  shouldBe(regex71.firstMatch(input2), results);
-
-  var regex72 = new RegExp(r"[Z\u0100]");
-  input0 = "Z\u0100";
-  results = ["Z"];
-  shouldBe(regex72.firstMatch(input0), results);
-  input1 = "\u0100";
-  results = ["\u0100"];
-  shouldBe(regex72.firstMatch(input1), results);
-  input2 = "\u0100Z";
-  results = ["\u0100"];
-  shouldBe(regex72.firstMatch(input2), results);
-
-  var regex73 = new RegExp(r"[\u0100\u0200]");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex73.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex73.firstMatch(input1), results);
-
-  var regex74 = new RegExp(r"[\u0100-\u0200]");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex74.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex74.firstMatch(input1), results);
-  input2 = "ab\u0111cd";
-  results = ["\u0111"];
-  shouldBe(regex74.firstMatch(input2), results);
-
-  var regex75 = new RegExp(r"[z-\u0200]");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex75.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex75.firstMatch(input1), results);
-  input2 = "ab\u0111cd";
-  results = ["\u0111"];
-  shouldBe(regex75.firstMatch(input2), results);
-  input3 = "abzcd";
-  results = ["z"];
-  shouldBe(regex75.firstMatch(input3), results);
-  input4 = "ab|cd";
-  results = ["|"];
-  shouldBe(regex75.firstMatch(input4), results);
-
-  var regex76 = new RegExp(r"[Q\u0100\u0200]");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex76.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex76.firstMatch(input1), results);
-  input2 = "Q?";
-  results = ["Q"];
-  shouldBe(regex76.firstMatch(input2), results);
-
-  var regex77 = new RegExp(r"[Q\u0100-\u0200]");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex77.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex77.firstMatch(input1), results);
-  input2 = "ab\u0111cd";
-  results = ["\u0111"];
-  shouldBe(regex77.firstMatch(input2), results);
-  input3 = "Q?";
-  results = ["Q"];
-  shouldBe(regex77.firstMatch(input3), results);
-
-  var regex78 = new RegExp(r"[Qz-\u0200]");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex78.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex78.firstMatch(input1), results);
-  input2 = "ab\u0111cd";
-  results = ["\u0111"];
-  shouldBe(regex78.firstMatch(input2), results);
-  input3 = "abzcd";
-  results = ["z"];
-  shouldBe(regex78.firstMatch(input3), results);
-  input4 = "ab|cd";
-  results = ["|"];
-  shouldBe(regex78.firstMatch(input4), results);
-  input5 = "Q?";
-  results = ["Q"];
-  shouldBe(regex78.firstMatch(input5), results);
-
-  var regex79 = new RegExp(r"[\u0100\u0200]{1,3}");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex79.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex79.firstMatch(input1), results);
-  input2 = "ab\u0200\u0100\u0200\u0100cd";
-  results = ["\u0200\u0100\u0200"];
-  shouldBe(regex79.firstMatch(input2), results);
-
-  var regex80 = new RegExp(r"[\u0100\u0200]{1,3}?");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex80.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex80.firstMatch(input1), results);
-  input2 = "ab\u0200\u0100\u0200\u0100cd";
-  results = ["\u0200"];
-  shouldBe(regex80.firstMatch(input2), results);
-
-  var regex81 = new RegExp(r"[Q\u0100\u0200]{1,3}");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex81.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex81.firstMatch(input1), results);
-  input2 = "ab\u0200\u0100\u0200\u0100cd";
-  results = ["\u0200\u0100\u0200"];
-  shouldBe(regex81.firstMatch(input2), results);
-
-  var regex82 = new RegExp(r"[Q\u0100\u0200]{1,3}?");
-  input0 = "ab\u0100cd";
-  results = ["\u0100"];
-  shouldBe(regex82.firstMatch(input0), results);
-  input1 = "ab\u0200cd";
-  results = ["\u0200"];
-  shouldBe(regex82.firstMatch(input1), results);
-  input2 = "ab\u0200\u0100\u0200\u0100cd";
-  results = ["\u0200"];
-  shouldBe(regex82.firstMatch(input2), results);
-
-  var regex86 = new RegExp(r"[^\u0100\u0200]X");
-  input0 = "AX";
-  results = ["AX"];
-  shouldBe(regex86.firstMatch(input0), results);
-  input1 = "\u0150X";
-  results = ["\u0150X"];
-  shouldBe(regex86.firstMatch(input1), results);
-  input2 = "\u0500X";
-  results = ["\u0500X"];
-  shouldBe(regex86.firstMatch(input2), results);
-  // Failers
-  input3 = "\u0100X";
-  results = null;
-  shouldBe(regex86.firstMatch(input3), results);
-  input4 = "\u0200X";
-  results = null;
-  shouldBe(regex86.firstMatch(input4), results);
-
-  var regex87 = new RegExp(r"[^Q\u0100\u0200]X");
-  input0 = "AX";
-  results = ["AX"];
-  shouldBe(regex87.firstMatch(input0), results);
-  input1 = "\u0150X";
-  results = ["\u0150X"];
-  shouldBe(regex87.firstMatch(input1), results);
-  input2 = "\u0500X";
-  results = ["\u0500X"];
-  shouldBe(regex87.firstMatch(input2), results);
-  // Failers
-  input3 = "\u0100X";
-  results = null;
-  shouldBe(regex87.firstMatch(input3), results);
-  input4 = "\u0200X";
-  results = null;
-  shouldBe(regex87.firstMatch(input4), results);
-  input5 = "QX";
-  results = null;
-  shouldBe(regex87.firstMatch(input5), results);
-
-  var regex88 = new RegExp(r"[^\u0100-\u0200]X");
-  input0 = "AX";
-  results = ["AX"];
-  shouldBe(regex88.firstMatch(input0), results);
-  input1 = "\u0500X";
-  results = ["\u0500X"];
-  shouldBe(regex88.firstMatch(input1), results);
-  // Failers
-  input2 = "\u0100X";
-  results = null;
-  shouldBe(regex88.firstMatch(input2), results);
-  input3 = "\u0150X";
-  results = null;
-  shouldBe(regex88.firstMatch(input3), results);
-  input4 = "\u0200X";
-  results = null;
-  shouldBe(regex88.firstMatch(input4), results);
-
-  var regex91 = new RegExp(r"[z-\u0100]", caseSensitive: false);
-  input0 = "z";
-  results = ["z"];
-  shouldBe(regex91.firstMatch(input0), results);
-  input1 = "Z";
-  results = ["Z"];
-  shouldBe(regex91.firstMatch(input1), results);
-  input2 = "\u0100";
-  results = ["\u0100"];
-  shouldBe(regex91.firstMatch(input2), results);
-  // Failers
-  input3 = "\u0102";
-  results = null;
-  shouldBe(regex91.firstMatch(input3), results);
-  input4 = "y";
-  results = null;
-  shouldBe(regex91.firstMatch(input4), results);
-
-  var regex92 = new RegExp(r"[\xFF]");
-  input0 = ">\xff<";
-  results = ["\xff"];
-  shouldBe(regex92.firstMatch(input0), results);
-
-  var regex93 = new RegExp(r"[\xff]");
-  input0 = ">\u00ff<";
-  results = ["\u00ff"];
-  shouldBe(regex93.firstMatch(input0), results);
-
-  var regex94 = new RegExp(r"[^\xFF]");
-  input0 = "XYZ";
-  results = ["X"];
-  shouldBe(regex94.firstMatch(input0), results);
-
-  var regex95 = new RegExp(r"[^\xff]");
-  input0 = "XYZ";
-  results = ["X"];
-  shouldBe(regex95.firstMatch(input0), results);
-  input1 = "\u0123";
-  results = ["\u0123"];
-  shouldBe(regex95.firstMatch(input1), results);
-
-  var regex96 = new RegExp(r"^[ac]*b");
-  input0 = "xb";
-  results = null;
-  shouldBe(regex96.firstMatch(input0), results);
-
-  var regex97 = new RegExp(r"^[ac\u0100]*b");
-  input0 = "xb";
-  results = null;
-  shouldBe(regex97.firstMatch(input0), results);
-
-  var regex98 = new RegExp(r"^[^x]*b", caseSensitive: false);
-  input0 = "xb";
-  results = null;
-  shouldBe(regex98.firstMatch(input0), results);
-
-  var regex99 = new RegExp(r"^[^x]*b");
-  input0 = "xb";
-  results = null;
-  shouldBe(regex99.firstMatch(input0), results);
-
-  var regex100 = new RegExp(r"^\d*b");
-  input0 = "xb";
-  results = null;
-  shouldBe(regex100.firstMatch(input0), results);
-
-  var regex102 = new RegExp(r"^\u0085$", caseSensitive: false);
-  input0 = "\u0085";
-  results = ["\u0085"];
-  shouldBe(regex102.firstMatch(input0), results);
-
-  var regex103 = new RegExp(r"^\xe1\x88\xb4");
-  input0 = "\xe1\x88\xb4";
-  results = ["\xe1\x88\xb4"];
-  shouldBe(regex103.firstMatch(input0), results);
-
-  var regex104 = new RegExp(r"^\xe1\x88\xb4");
-  input0 = "\xe1\x88\xb4";
-  results = ["\xe1\x88\xb4"];
-  shouldBe(regex104.firstMatch(input0), results);
-
-  var regex105 = new RegExp(r"(.{1,5})");
-  input0 = "abcdefg";
-  results = ["abcde", "abcde"];
-  shouldBe(regex105.firstMatch(input0), results);
-  input1 = "ab";
-  results = ["ab", "ab"];
-  shouldBe(regex105.firstMatch(input1), results);
-
-  var regex106 = new RegExp(r"a*\u0100*\w");
-  input0 = "a";
-  results = ["a"];
-  shouldBe(regex106.firstMatch(input0), results);
-
-  var regex107 = new RegExp(r"[\S\s]*");
-  input0 = "abc\n\r\u0442\u0435\u0441\u0442xyz";
-  results = ["abc\u000a\u000d\u0442\u0435\u0441\u0442xyz"];
-  shouldBe(regex107.firstMatch(input0), results);
-
-  var regexGlobal0 = new RegExp(r"[^a]+");
-  input0 = "bcd";
-  results = ["bcd"];
-  shouldBe(firstMatch(input0, regexGlobal0), results);
-  input1 = "\u0100aY\u0256Z";
-  results = ["\u0100", "Y\u0256Z"];
-  Expect.listEquals(
-      regexGlobal0.allMatches(input1).map((m) => m.group(0)).toList(), results);
-
-  var regexGlobal1 = new RegExp(r"\S\S");
-  input0 = "A\u00a3BC";
-  results = ["A\u00a3", "BC"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal1), results);
-
-  var regexGlobal2 = new RegExp(r"\S{2}");
-  input0 = "A\u00a3BC";
-  results = ["A\u00a3", "BC"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal2), results);
-
-  var regexGlobal3 = new RegExp(r"\W\W");
-  input0 = "+\u00a3==";
-  results = ["+\u00a3", "=="];
-  Expect.listEquals(allStringMatches(input0, regexGlobal3), results);
-
-  var regexGlobal4 = new RegExp(r"\W{2}");
-  input0 = "+\u00a3==";
-  results = ["+\u00a3", "=="];
-  Expect.listEquals(allStringMatches(input0, regexGlobal4), results);
-
-  var regexGlobal5 = new RegExp(r"\S");
-  input0 = "\u0442\u0435\u0441\u0442";
-  results = ["\u0442", "\u0435", "\u0441", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal5), results);
-
-  var regexGlobal6 = new RegExp(r"[\S]");
-  input0 = "\u0442\u0435\u0441\u0442";
-  results = ["\u0442", "\u0435", "\u0441", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal6), results);
-
-  var regexGlobal7 = new RegExp(r"\D");
-  input0 = "\u0442\u0435\u0441\u0442";
-  results = ["\u0442", "\u0435", "\u0441", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal7), results);
-
-  var regexGlobal8 = new RegExp(r"[\D]");
-  input0 = "\u0442\u0435\u0441\u0442";
-  results = ["\u0442", "\u0435", "\u0441", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal8), results);
-
-  var regexGlobal9 = new RegExp(r"\W");
-  input0 = "\u2442\u2435\u2441\u2442";
-  results = ["\u2442", "\u2435", "\u2441", "\u2442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal9), results);
-
-  var regexGlobal10 = new RegExp(r"[\W]");
-  input0 = "\u2442\u2435\u2441\u2442";
-  results = ["\u2442", "\u2435", "\u2441", "\u2442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal10), results);
-
-  var regexGlobal11 = new RegExp(r"[\u041f\S]");
-  input0 = "\u0442\u0435\u0441\u0442";
-  results = ["\u0442", "\u0435", "\u0441", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal11), results);
-
-  var regexGlobal12 = new RegExp(r".[^\S].");
-  input0 = "abc def\u0442\u0443xyz\npqr";
-  results = ["c d", "z\u000ap"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal12), results);
-
-  var regexGlobal13 = new RegExp(r".[^\S\n].");
-  input0 = "abc def\u0442\u0443xyz\npqr";
-  results = ["c d"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal13), results);
-
-  var regexGlobal14 = new RegExp(r"[\W]");
-  input0 = "+\u2442";
-  results = ["+", "\u2442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal14), results);
-
-  var regexGlobal15 = new RegExp(r"[^a-zA-Z]");
-  input0 = "+\u2442";
-  results = ["+", "\u2442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal15), results);
-
-  var regexGlobal16 = new RegExp(r"[^a-zA-Z]");
-  input0 = "A\u0442";
-  results = ["\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal16), results);
-
-  var regexGlobal17 = new RegExp(r"[\S]");
-  input0 = "A\u0442";
-  results = ["A", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal17), results);
-
-  var regexGlobal19 = new RegExp(r"[\D]");
-  input0 = "A\u0442";
-  results = ["A", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal19), results);
-
-  var regexGlobal21 = new RegExp(r"[^a-z]");
-  input0 = "A\u0422";
-  results = ["A", "\u0422"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal21), results);
-
-  var regexGlobal24 = new RegExp(r"[\S]");
-  input0 = "A\u0442";
-  results = ["A", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal24), results);
-
-  var regexGlobal25 = new RegExp(r"[^A-Z]");
-  input0 = "a\u0442";
-  results = ["a", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal25), results);
-
-  var regexGlobal26 = new RegExp(r"[\W]");
-  input0 = "+\u2442";
-  results = ["+", "\u2442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal26), results);
-
-  var regexGlobal27 = new RegExp(r"[\D]");
-  input0 = "M\u0442";
-  results = ["M", "\u0442"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal27), results);
-
-  var regexGlobal28 = new RegExp(r"[^a]+", caseSensitive: false);
-  input0 = "bcd";
-  results = ["bcd"];
-  Expect.listEquals(allStringMatches(input0, regexGlobal28), results);
-  input1 = "\u0100aY\u0256Z";
-  results = ["\u0100", "Y\u0256Z"];
-  Expect.listEquals(allStringMatches(input1, regexGlobal28), results);
-
-  var regexGlobal29 = new RegExp(r"(a|)");
-  input0 = "catac";
-  results = ["", "a", "", "a", "", ""];
-  Expect.listEquals(allStringMatches(input0, regexGlobal29), results);
-  input1 = "a\u0256a";
-  results = ["a", "", "a", ""];
-  Expect.listEquals(allStringMatches(input1, regexGlobal29), results);
-}
diff --git a/tests/corelib/regexp/pcre_test.dart b/tests/corelib/regexp/pcre_test.dart
deleted file mode 100644
index dbcce20..0000000
--- a/tests/corelib/regexp/pcre_test.dart
+++ /dev/null
@@ -1,7225 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Autogenerated from the PCRE test suite Mon Feb  2 15:14:04 CET 2009
-
-// Note that some regexps in the PCRE test suite use features not present
-// in JavaScript.  These don't work in JS, but they fail to work in a
-// predictable way, and the expected results reflect this.
-
-// PCRE comes with the following license
-
-// PCRE LICENCE
-// ------------
-//
-// PCRE is a library of functions to support regular expressions whose syntax
-// and semantics are as close as possible to those of the Perl 5 language.
-//
-// Release 7 of PCRE is distributed under the terms of the "BSD" licence, as
-// specified below. The documentation for PCRE, supplied in the "doc"
-// directory, is distributed under the same terms as the software itself.
-//
-// The basic library functions are written in C and are freestanding. Also
-// included in the distribution is a set of C++ wrapper functions.
-//
-//
-// THE BASIC LIBRARY FUNCTIONS
-// ---------------------------
-//
-// Written by:       Philip Hazel
-// Email local part: ph10
-// Email domain:     cam.ac.uk
-//
-// University of Cambridge Computing Service,
-// Cambridge, England.
-//
-// Copyright (c) 1997-2007 University of Cambridge
-// All rights reserved.
-//
-//
-// THE C++ WRAPPER FUNCTIONS
-// -------------------------
-//
-// Contributed by:   Google Inc.
-//
-// Copyright (c) 2007, Google Inc.
-// All rights reserved.
-//
-//
-// THE "BSD" LICENCE
-// -----------------
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-//     * Redistributions of source code must retain the above copyright notice,
-//       this list of conditions and the following disclaimer.
-//
-//     * Redistributions in binary form must reproduce the above copyright
-//       notice, this list of conditions and the following disclaimer in the
-//       documentation and/or other materials provided with the distribution.
-//
-//     * Neither the name of the University of Cambridge nor the name of Google
-//       Inc. nor the names of their contributors may be used to endorse or
-//       promote products derived from this software without specific prior
-//       written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// End
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  var res = <RegExp>[];
-  res.add(new RegExp(r"(a)b|", caseSensitive: false));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r"^abc", caseSensitive: false));
-  res.add(new RegExp(r"a+bc", caseSensitive: false));
-  res.add(new RegExp(r"a*bc", caseSensitive: false));
-  res.add(new RegExp(r"a{3}bc", caseSensitive: false));
-  res.add(new RegExp(r"(abc|a+z)", caseSensitive: false));
-  res.add(new RegExp(r"^abc$", caseSensitive: false));
-  res.add(new RegExp(r"ab\idef"));
-  res.add(new RegExp(r".*b", caseSensitive: false));
-  res.add(new RegExp(r".*?b", caseSensitive: false));
-  res.add(new RegExp(r"cat|dog|elephant", caseSensitive: false));
-  res.add(new RegExp(r"cat|dog|elephant", caseSensitive: false));
-  res.add(new RegExp(r"cat|dog|elephant", caseSensitive: false));
-  res.add(new RegExp(r"a|[bcd]", caseSensitive: false));
-  res.add(new RegExp(r"(a|[^\dZ])", caseSensitive: false));
-  res.add(new RegExp(r"(a|b)*[\s]", caseSensitive: false));
-  res.add(new RegExp(r"(ab\2)"));
-  res.add(new RegExp(r"(a)(b)(c)\2", caseSensitive: false));
-  res.add(new RegExp(r"(a)bc|(a)(b)\2", caseSensitive: false));
-  res.add(new RegExp(r"abc$", caseSensitive: false));
-  res.add(new RegExp(r"(a)(b)(c)(d)(e)\6"));
-  res.add(new RegExp(r"the quick brown fox", caseSensitive: false));
-  res.add(new RegExp(r"^abc|def", caseSensitive: false));
-  res.add(new RegExp(r".*((abc)$|(def))", caseSensitive: false));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r"^abc|def", caseSensitive: false));
-  res.add(new RegExp(r".*((abc)$|(def))", caseSensitive: false));
-  res.add(new RegExp(r"the quick brown fox", caseSensitive: false));
-  res.add(new RegExp(r"the quick brown fox", caseSensitive: false));
-  res.add(new RegExp(r"abc.def", caseSensitive: false));
-  res.add(new RegExp(r"abc$", caseSensitive: false));
-  res.add(new RegExp(r"(abc)\2", caseSensitive: false));
-  res.add(new RegExp(r"(abc\1)", caseSensitive: false));
-  res.add(new RegExp(r"a[]b"));
-  res.add(new RegExp(r"[^aeiou ]{3,}", caseSensitive: false));
-  res.add(new RegExp(r"<.*>", caseSensitive: false));
-  res.add(new RegExp(r"<.*?>", caseSensitive: false));
-  res.add(new RegExp(r"[abcd]", caseSensitive: false));
-  res.add(new RegExp(r"(^a|^b)", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"a$", caseSensitive: false));
-  res.add(new RegExp(r"a$", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"\Aabc", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"(?!alphabet)[ab]", caseSensitive: false));
-  res.add(new RegExp(
-      r"The next three are in testinput2 because they have variable length branches"));
-  res.add(new RegExp(r"This one is here because Perl 5.005_02 doesn't fail it",
-      caseSensitive: false));
-  res.add(new RegExp(
-      r"This one is here because I think Perl 5.005_02 gets the setting of $1 wrong",
-      caseSensitive: false));
-  res.add(new RegExp(r"^(a\1?){4}$", caseSensitive: false));
-  res.add(new RegExp(r"These are syntax tests from Perl 5.005",
-      caseSensitive: false));
-  res.add(new RegExp(r"a[]b"));
-  res.add(new RegExp(r"\1"));
-  res.add(new RegExp(r"\2"));
-  res.add(new RegExp(r"(a)|\2"));
-  res.add(new RegExp(r"a[]b", caseSensitive: false));
-  res.add(new RegExp(r"abc"));
-  res.add(new RegExp(r"abc"));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r"(a)bc(d)", caseSensitive: false));
-  res.add(new RegExp(r"(.{20})", caseSensitive: false));
-  res.add(new RegExp(r"(.{15})", caseSensitive: false));
-  res.add(new RegExp(r"(.{16})", caseSensitive: false));
-  res.add(new RegExp(r"^(a|(bc))de(f)", caseSensitive: false));
-  res.add(new RegExp(r"^abc\00def", caseSensitive: false));
-  res.add(new RegExp(
-      r"word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+\n)?)?)?)?)?)?)?)?)?otherword",
-      caseSensitive: false));
-  res.add(new RegExp(r".*X", caseSensitive: false));
-  res.add(new RegExp(r".*X", caseSensitive: false));
-  res.add(new RegExp(r"(.*X|^B)", caseSensitive: false));
-  res.add(new RegExp(r"(.*X|^B)", caseSensitive: false));
-  res.add(new RegExp(r"\Biss\B", caseSensitive: false));
-  res.add(new RegExp(r"\Biss\B", caseSensitive: false));
-  res.add(new RegExp(r"iss", caseSensitive: false));
-  res.add(new RegExp(r"\Biss\B", caseSensitive: false));
-  res.add(new RegExp(r"\Biss\B", caseSensitive: false));
-  res.add(new RegExp(r"^iss", caseSensitive: false));
-  res.add(new RegExp(r".*iss", caseSensitive: false));
-  res.add(new RegExp(r".i.", caseSensitive: false));
-  res.add(new RegExp(r"^.is", caseSensitive: false));
-  res.add(new RegExp(r"^ab\n", caseSensitive: false));
-  res.add(new RegExp(r"^ab\n", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r"abc|bac", caseSensitive: false));
-  res.add(new RegExp(r"(abc|bac)", caseSensitive: false));
-  res.add(new RegExp(r"(abc|(c|dc))", caseSensitive: false));
-  res.add(new RegExp(r"(abc|(d|de)c)", caseSensitive: false));
-  res.add(new RegExp(r"a*", caseSensitive: false));
-  res.add(new RegExp(r"a+", caseSensitive: false));
-  res.add(new RegExp(r"(baa|a+)", caseSensitive: false));
-  res.add(new RegExp(r"a{0,3}", caseSensitive: false));
-  res.add(new RegExp(r"baa{3,}", caseSensitive: false));
-  res.add(new RegExp(r'"([^\\"]+|\.)*"', caseSensitive: false));
-  res.add(new RegExp(r"(abc|ab[cd])", caseSensitive: false));
-  res.add(new RegExp(r"(a|.)", caseSensitive: false));
-  res.add(new RegExp(r"a|ba|\w", caseSensitive: false));
-  res.add(new RegExp(r"abc(?=pqr)", caseSensitive: false));
-  res.add(new RegExp(r"abc(?!pqr)", caseSensitive: false));
-  res.add(new RegExp(r"ab.", caseSensitive: false));
-  res.add(new RegExp(r"ab[xyz]", caseSensitive: false));
-  res.add(new RegExp(r"abc*", caseSensitive: false));
-  res.add(new RegExp(r"ab.c*", caseSensitive: false));
-  res.add(new RegExp(r"a.c*", caseSensitive: false));
-  res.add(new RegExp(r".c*", caseSensitive: false));
-  res.add(new RegExp(r"ac*", caseSensitive: false));
-  res.add(new RegExp(r"(a.c*|b.c*)", caseSensitive: false));
-  res.add(new RegExp(r"a.c*|aba", caseSensitive: false));
-  res.add(new RegExp(r".+a", caseSensitive: false));
-  res.add(new RegExp(r"(?=abcda)a.*", caseSensitive: false));
-  res.add(new RegExp(r"(?=a)a.*", caseSensitive: false));
-  res.add(new RegExp(r"a(b)*", caseSensitive: false));
-  res.add(new RegExp(r"a\d*", caseSensitive: false));
-  res.add(new RegExp(r"ab\d*", caseSensitive: false));
-  res.add(new RegExp(r"a(\d)*", caseSensitive: false));
-  res.add(new RegExp(r"abcde{0,0}", caseSensitive: false));
-  res.add(new RegExp(r"ab\d+", caseSensitive: false));
-  res.add(new RegExp(r"ab\d{0}e", caseSensitive: false));
-  res.add(new RegExp(r"a?b?", caseSensitive: false));
-  res.add(new RegExp(r"|-", caseSensitive: false));
-  res.add(new RegExp(r"a*(b+)(z)(z)", caseSensitive: false));
-  res.add(new RegExp(r"^.?abcd", caseSensitive: false));
-  res.add(new RegExp(r"^[[:alnum:]]"));
-  res.add(new RegExp(r"^[[:^alnum:]]"));
-  res.add(new RegExp(r"^[[:alpha:]]"));
-  res.add(new RegExp(r"^[[:^alpha:]]"));
-  res.add(new RegExp(r"[_[:alpha:]]", caseSensitive: false));
-  res.add(new RegExp(r"^[[:ascii:]]"));
-  res.add(new RegExp(r"^[[:^ascii:]]"));
-  res.add(new RegExp(r"^[[:blank:]]"));
-  res.add(new RegExp(r"^[[:^blank:]]"));
-  res.add(new RegExp(r"[\n\x0b\x0c\x0d[:blank:]]", caseSensitive: false));
-  res.add(new RegExp(r"^[[:cntrl:]]"));
-  res.add(new RegExp(r"^[[:digit:]]"));
-  res.add(new RegExp(r"^[[:graph:]]"));
-  res.add(new RegExp(r"^[[:lower:]]"));
-  res.add(new RegExp(r"^[[:print:]]"));
-  res.add(new RegExp(r"^[[:punct:]]"));
-  res.add(new RegExp(r"^[[:space:]]"));
-  res.add(new RegExp(r"^[[:upper:]]"));
-  res.add(new RegExp(r"^[[:xdigit:]]"));
-  res.add(new RegExp(r"^[[:word:]]"));
-  res.add(new RegExp(r"^[[:^cntrl:]]"));
-  res.add(new RegExp(r"^[12[:^digit:]]"));
-  res.add(new RegExp(r"^[[:^blank:]]"));
-  res.add(new RegExp(r"[01[:alpha:]%]"));
-  res.add(new RegExp(r"[[.ch.]]", caseSensitive: false));
-  res.add(new RegExp(r"[[=ch=]]", caseSensitive: false));
-  res.add(new RegExp(r"[[:rhubarb:]]", caseSensitive: false));
-  res.add(new RegExp(r"[[:upper:]]", caseSensitive: false));
-  res.add(new RegExp(r"[[:lower:]]", caseSensitive: false));
-  res.add(new RegExp(
-      r"This one's here because of the large output vector needed",
-      caseSensitive: false));
-  res.add(new RegExp(
-      r"(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)",
-      caseSensitive: false));
-  res.add(new RegExp(
-      r"This one's here because Perl does this differently and PCRE can't at present",
-      caseSensitive: false));
-  res.add(new RegExp(r"(main(O)?)+", caseSensitive: false));
-  res.add(new RegExp(
-      r"These are all cases where Perl does it differently (nested captures)",
-      caseSensitive: false));
-  res.add(new RegExp(r"^(a(b)?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(aa(bb)?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(aa|aa(bb))+$", caseSensitive: false));
-  res.add(new RegExp(r"^(aa(bb)??)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(?:aa(bb)?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(aa(b(b))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(?:aa(b(b))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(?:aa(b(?:b))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(?:aa(bb(?:b))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(?:aa(b(?:bb))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(?:aa(?:b(b))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(?:aa(?:b(bb))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(aa(b(bb))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"^(aa(bb(bb))?)+$", caseSensitive: false));
-  res.add(new RegExp(r"a", caseSensitive: false));
-  res.add(new RegExp(r"[\s]"));
-  res.add(new RegExp(r"[\S]"));
-  res.add(new RegExp(
-      r"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"));
-  res.add(new RegExp(
-      r"\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"));
-  res.add(new RegExp(r"\Q\E"));
-  res.add(new RegExp(r"\Q\Ex"));
-  res.add(new RegExp(r" \Q\E"));
-  res.add(new RegExp(r"a\Q\E"));
-  res.add(new RegExp(r"a\Q\Eb"));
-  res.add(new RegExp(r"\Q\Eabc"));
-  res.add(new RegExp(r"[.x.]", caseSensitive: false));
-  res.add(new RegExp(r"[=x=]", caseSensitive: false));
-  res.add(new RegExp(r"[:x:]", caseSensitive: false));
-  res.add(new RegExp(r"\l", caseSensitive: false));
-  res.add(new RegExp(r"\L", caseSensitive: false));
-  res.add(new RegExp(r"\N{name}", caseSensitive: false));
-  res.add(new RegExp(r"\u", caseSensitive: false));
-  res.add(new RegExp(r"\U", caseSensitive: false));
-  res.add(new RegExp(r"[[:space:]", caseSensitive: false));
-  res.add(new RegExp(r"[\s]", caseSensitive: false));
-  res.add(new RegExp(r"[[:space:]]", caseSensitive: false));
-  res.add(new RegExp(r"[[:space:]abcde]", caseSensitive: false));
-  res.add(new RegExp(r"(.*)\d+\1", caseSensitive: false));
-  res.add(new RegExp(r"(.*)\d+", caseSensitive: false));
-  res.add(new RegExp(r"(.*)\d+\1", caseSensitive: false));
-  res.add(new RegExp(r"(.*)\d+", caseSensitive: false));
-  res.add(new RegExp(r"(.*(xyz))\d+\2", caseSensitive: false));
-  res.add(new RegExp(r"((.*))\d+\1", caseSensitive: false));
-  res.add(new RegExp(r"a[b]", caseSensitive: false));
-  res.add(new RegExp(r"(?=a).*", caseSensitive: false));
-  res.add(new RegExp(r"(?=abc).xyz", caseSensitive: false));
-  res.add(new RegExp(r"(?=a)(?=b)", caseSensitive: false));
-  res.add(new RegExp(r"(?=.)a", caseSensitive: false));
-  res.add(new RegExp(r"((?=abcda)a)", caseSensitive: false));
-  res.add(new RegExp(r"((?=abcda)ab)", caseSensitive: false));
-  res.add(new RegExp(r"()a", caseSensitive: false));
-  res.add(new RegExp(r"(a)+", caseSensitive: false));
-  res.add(new RegExp(r"(a){2,3}", caseSensitive: false));
-  res.add(new RegExp(r"(a)*", caseSensitive: false));
-  res.add(new RegExp(r"[a]", caseSensitive: false));
-  res.add(new RegExp(r"[ab]", caseSensitive: false));
-  res.add(new RegExp(r"[ab]", caseSensitive: false));
-  res.add(new RegExp(r"[^a]", caseSensitive: false));
-  res.add(new RegExp(r"\d456", caseSensitive: false));
-  res.add(new RegExp(r"\d456", caseSensitive: false));
-  res.add(new RegExp(r"a^b", caseSensitive: false));
-  res.add(new RegExp(r"^a", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"c|abc", caseSensitive: false));
-  res.add(new RegExp(r"(.*)a", caseSensitive: false));
-  res.add(new RegExp(r"(.*)a\1", caseSensitive: false));
-  res.add(new RegExp(r"(.*)a(b)\2", caseSensitive: false));
-  res.add(new RegExp(r"((.*)a|(.*)b)z", caseSensitive: false));
-  res.add(new RegExp(r"((.*)a|(.*)b)z\1", caseSensitive: false));
-  res.add(new RegExp(r"((.*)a|(.*)b)z\2", caseSensitive: false));
-  res.add(new RegExp(r"((.*)a|(.*)b)z\3", caseSensitive: false));
-  res.add(new RegExp(r"((.*)a|^(.*)b)z\3", caseSensitive: false));
-  res.add(new RegExp(
-      r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a",
-      caseSensitive: false));
-  res.add(new RegExp(
-      r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\31",
-      caseSensitive: false));
-  res.add(new RegExp(
-      r"(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)|(.*)a\32",
-      caseSensitive: false));
-  res.add(new RegExp(r"(a)(bc)", caseSensitive: false));
-  res.add(new RegExp(r"(a+)*zz", caseSensitive: false));
-  res.add(new RegExp(r"((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)",
-      caseSensitive: false));
-  res.add(new RegExp(r"((w\/|-|with)*(free|immediate)*.*?shipping\s*[!.-]*)",
-      caseSensitive: false));
-  res.add(new RegExp(r"a*.*b", caseSensitive: false));
-  res.add(new RegExp(r"(a|b)*.?c", caseSensitive: false));
-  res.add(new RegExp(r"abcde", caseSensitive: false));
-  res.add(new RegExp(r"a*b", caseSensitive: false));
-  res.add(new RegExp(r"a+b", caseSensitive: false));
-  res.add(new RegExp(r"(abc|def)x", caseSensitive: false));
-  res.add(new RegExp(r"(ab|cd){3,4}", caseSensitive: false));
-  res.add(new RegExp(r"([ab]{,4}c|xy)", caseSensitive: false));
-  res.add(new RegExp(r"([ab]{1,4}c|xy){4,5}?123", caseSensitive: false));
-  res.add(new RegExp(r"\b.*", caseSensitive: false));
-  res.add(new RegExp(r"\b.*", caseSensitive: false));
-  res.add(new RegExp(r"(?!.bcd).*", caseSensitive: false));
-  res.add(new RegExp(r"abcde", caseSensitive: false));
-  res.add(new RegExp(r"0{0,2}ABC", caseSensitive: false));
-  res.add(new RegExp(r"\d{3,}ABC", caseSensitive: false));
-  res.add(new RegExp(r"\d*ABC", caseSensitive: false));
-  res.add(new RegExp(r"[abc]+DE", caseSensitive: false));
-  res.add(new RegExp(r"[abc]?123", caseSensitive: false));
-  res.add(new RegExp(r"^(?:\d){3,5}X", caseSensitive: false));
-  res.add(new RegExp(r"^a", caseSensitive: false));
-  res.add(new RegExp(r"line\nbreak", caseSensitive: false));
-  res.add(new RegExp(r"line\nbreak", caseSensitive: false));
-  res.add(new RegExp(r"line\nbreak", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"ab.cd", caseSensitive: false));
-  res.add(new RegExp(r"ab.cd", caseSensitive: false));
-  res.add(new RegExp(r"a(b)c", caseSensitive: false));
-  res.add(new RegExp(
-      r"Inthisnexttest,Jisnotsetattheouterlevel;consequentlyitisn'tsetinthepattern'soptions;consequentlypcre_get_named_substring()producesarandomvalue.",
-      caseSensitive: false));
-  res.add(new RegExp(r"\777", caseSensitive: false));
-  res.add(new RegExp(r"\s*,\s*", caseSensitive: false));
-  res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"abc$", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"^abc", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r".*", caseSensitive: false));
-  res.add(new RegExp(r"\w+(.)(.)?def", caseSensitive: false));
-  res.add(new RegExp(
-      r"()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()(.(.))",
-      caseSensitive: false));
-  res.add(new RegExp(r"()[ab]xyz", caseSensitive: false));
-  res.add(new RegExp(r"(|)[ab]xyz", caseSensitive: false));
-  res.add(new RegExp(r"(|c)[ab]xyz", caseSensitive: false));
-  res.add(new RegExp(r"(|c?)[ab]xyz", caseSensitive: false));
-  res.add(new RegExp(r"(d?|c?)[ab]xyz", caseSensitive: false));
-  res.add(new RegExp(r"(d?|c)[ab]xyz", caseSensitive: false));
-  res.add(new RegExp(r"^a*b\d"));
-  res.add(new RegExp(r"^a*?b\d"));
-  res.add(new RegExp(r"^a+A\d"));
-  res.add(new RegExp(r"^a*A\d", caseSensitive: false));
-  res.add(new RegExp(r"(a*|b*)[cd]", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b*)[cd]", caseSensitive: false));
-  res.add(new RegExp(r"(a*|b+)[cd]", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b+)[cd]", caseSensitive: false));
-  res.add(new RegExp(
-      r"(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))",
-      caseSensitive: false));
-  res.add(new RegExp(r"a*\d"));
-  res.add(new RegExp(r"a*\D"));
-  res.add(new RegExp(r"0*\d"));
-  res.add(new RegExp(r"0*\D"));
-  res.add(new RegExp(r"a*\s"));
-  res.add(new RegExp(r"a*\S"));
-  res.add(new RegExp(r" *\s"));
-  res.add(new RegExp(r" *\S"));
-  res.add(new RegExp(r"a*\w"));
-  res.add(new RegExp(r"a*\W"));
-  res.add(new RegExp(r"=*\w"));
-  res.add(new RegExp(r"=*\W"));
-  res.add(new RegExp(r"\d*a"));
-  res.add(new RegExp(r"\d*2"));
-  res.add(new RegExp(r"\d*\d"));
-  res.add(new RegExp(r"\d*\D"));
-  res.add(new RegExp(r"\d*\s"));
-  res.add(new RegExp(r"\d*\S"));
-  res.add(new RegExp(r"\d*\w"));
-  res.add(new RegExp(r"\d*\W"));
-  res.add(new RegExp(r"\D*a"));
-  res.add(new RegExp(r"\D*2"));
-  res.add(new RegExp(r"\D*\d"));
-  res.add(new RegExp(r"\D*\D"));
-  res.add(new RegExp(r"\D*\s"));
-  res.add(new RegExp(r"\D*\S"));
-  res.add(new RegExp(r"\D*\w"));
-  res.add(new RegExp(r"\D*\W"));
-  res.add(new RegExp(r"\s*a"));
-  res.add(new RegExp(r"\s*2"));
-  res.add(new RegExp(r"\s*\d"));
-  res.add(new RegExp(r"\s*\D"));
-  res.add(new RegExp(r"\s*\s"));
-  res.add(new RegExp(r"\s*\S"));
-  res.add(new RegExp(r"\s*\w"));
-  res.add(new RegExp(r"\s*\W"));
-  res.add(new RegExp(r"\S*a"));
-  res.add(new RegExp(r"\S*2"));
-  res.add(new RegExp(r"\S*\d"));
-  res.add(new RegExp(r"\S*\D"));
-  res.add(new RegExp(r"\S*\s"));
-  res.add(new RegExp(r"\S*\S"));
-  res.add(new RegExp(r"\S*\w"));
-  res.add(new RegExp(r"\S*\W"));
-  res.add(new RegExp(r"\w*a"));
-  res.add(new RegExp(r"\w*2"));
-  res.add(new RegExp(r"\w*\d"));
-  res.add(new RegExp(r"\w*\D"));
-  res.add(new RegExp(r"\w*\s"));
-  res.add(new RegExp(r"\w*\S"));
-  res.add(new RegExp(r"\w*\w"));
-  res.add(new RegExp(r"\w*\W"));
-  res.add(new RegExp(r"\W*a"));
-  res.add(new RegExp(r"\W*2"));
-  res.add(new RegExp(r"\W*\d"));
-  res.add(new RegExp(r"\W*\D"));
-  res.add(new RegExp(r"\W*\s"));
-  res.add(new RegExp(r"\W*\S"));
-  res.add(new RegExp(r"\W*\w"));
-  res.add(new RegExp(r"\W*\W"));
-  res.add(new RegExp(r"[^a]+a"));
-  res.add(new RegExp(r"[^a]+a", caseSensitive: false));
-  res.add(new RegExp(r"[^a]+A", caseSensitive: false));
-  res.add(new RegExp(r"[^a]+b"));
-  res.add(new RegExp(r"[^a]+\d"));
-  res.add(new RegExp(r"a*[^a]"));
-  res.add(new RegExp(r"^(?:(?:\1|X)(a|b))+"));
-  res.add(new RegExp(r"^[\E\Qa\E-\Qz\E]+"));
-  res.add(new RegExp(r"^[a\Q]bc\E]"));
-  res.add(new RegExp(r"(?=(\w+))\1:", caseSensitive: false));
-  res.add(new RegExp(r"(a|)*\d"));
-  res.add(new RegExp(r"^a.b"));
-  res.add(new RegExp(r"^abc.", multiLine: true));
-  res.add(new RegExp(r"abc.$", multiLine: true));
-  res.add(new RegExp(r"a"));
-  res.add(new RegExp(r"a"));
-  res.add(new RegExp(r"^a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"^a\R*b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R+b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R{1,3}b", caseSensitive: false));
-  res.add(new RegExp(r"^a[\R]b", caseSensitive: false));
-  res.add(new RegExp(r"^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z"));
-  res.add(new RegExp(r"^(a)\g-2"));
-  res.add(new RegExp(r"^(a)\g"));
-  res.add(new RegExp(r"^(a)\g{0}"));
-  res.add(new RegExp(r"^(a)\g{3"));
-  res.add(new RegExp(r"^(a)\g{4a}"));
-  res.add(new RegExp(r"^a.b"));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r"^$", multiLine: true));
-  res.add(new RegExp(r"abc.$", multiLine: true));
-  res.add(new RegExp(r"^X", multiLine: true));
-  res.add(new RegExp(r"(foo)\Kbar"));
-  res.add(new RegExp(r"(foo)(\Kbar|baz)"));
-  res.add(new RegExp(r"(foo\Kbar)baz"));
-  res.add(new RegExp(r"\g{A"));
-  res.add(new RegExp(r"\H\h\V\v"));
-  res.add(new RegExp(r"\H*\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"\H{3,4}"));
-  res.add(new RegExp(r".\h{3,4}."));
-  res.add(new RegExp(r"\h*X\h?\H+Y\H?Z"));
-  res.add(new RegExp(r"\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c"));
-  res.add(new RegExp(r"[\h]"));
-  res.add(new RegExp(r"[\h]+"));
-  res.add(new RegExp(r"[\v]"));
-  res.add(new RegExp(r"[\H]"));
-  res.add(new RegExp(r"[^\h]"));
-  res.add(new RegExp(r"[\V]"));
-  res.add(new RegExp(r"[\x0a\V]"));
-  res.add(new RegExp(r"\H+\hY"));
-  res.add(new RegExp(r"\H+ Y"));
-  res.add(new RegExp(r"\h+A"));
-  res.add(new RegExp(r"\v*B"));
-  res.add(new RegExp(r"\V+\x0a"));
-  res.add(new RegExp(r"A+\h"));
-  res.add(new RegExp(r" *\H"));
-  res.add(new RegExp(r"A*\v"));
-  res.add(new RegExp(r"\x0b*\V"));
-  res.add(new RegExp(r"\d+\h"));
-  res.add(new RegExp(r"\d*\v"));
-  res.add(new RegExp(r"S+\h\S+\v"));
-  res.add(new RegExp(r"\w{3,}\h\w+\v"));
-  res.add(new RegExp(r"\h+\d\h+\w\h+\S\h+\H"));
-  res.add(new RegExp(r"\v+\d\v+\w\v+\S\v+\V"));
-  res.add(new RegExp(r"\H+\h\H+\d"));
-  res.add(new RegExp(r"\V+\v\V+\w"));
-  res.add(new RegExp(r"[\E]AAA"));
-  res.add(new RegExp(r"[\Q\E]AAA"));
-  res.add(new RegExp(r"[^\E]AAA"));
-  res.add(new RegExp(r"[^\Q\E]AAA"));
-  res.add(new RegExp(r"[\E^]AAA"));
-  res.add(new RegExp(r"[\Q\E^]AAA"));
-  res.add(new RegExp(r"\g6666666666"));
-  res.add(new RegExp(r"[\g6666666666]"));
-  res.add(new RegExp(r".+A"));
-  res.add(new RegExp(r"\nA"));
-  res.add(new RegExp(r"[\r\n]A"));
-  res.add(new RegExp(r"(\r|\n)A"));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r"a\R{2,4}b", caseSensitive: false));
-  res.add(new RegExp(r"a\R{2,4}b", caseSensitive: false));
-  res.add(new RegExp(r"\k''"));
-  res.add(new RegExp(r"\k<>"));
-  res.add(new RegExp(r"\k{}"));
-  res.add(new RegExp(r"[[:foo:]]"));
-  res.add(new RegExp(r"[[:1234:]]"));
-  res.add(new RegExp(r"[[:f\oo:]]"));
-  res.add(new RegExp(r"[[: :]]"));
-  res.add(new RegExp(r"[[:...:]]"));
-  res.add(new RegExp(r"[[:l\ower:]]"));
-  res.add(new RegExp(r"[[:abc\:]]"));
-  res.add(new RegExp(r"[abc[:x\]pqr:]]"));
-  res.add(new RegExp(r"[[:a\dz:]]"));
-  res.add(new RegExp(r"^(a|b\g<1>c)"));
-  res.add(new RegExp(r"^(a|b\g'1'c)"));
-  res.add(new RegExp(r"^(a|b\g'-1'c)"));
-  res.add(new RegExp(r"(^(a|b\g<-1>c))"));
-  res.add(new RegExp(r"(^(a|b\g<-1'c))"));
-  res.add(new RegExp(r"(^(a|b\g{-1}))"));
-  res.add(new RegExp(r"(\3)(\1)(a)"));
-  res.add(new RegExp(r"(\3)(\1)(a)"));
-  res.add(new RegExp(r"TA]"));
-  res.add(new RegExp(r"TA]"));
-  res.add(new RegExp(r"a[]b"));
-  res.add(new RegExp(r"a[^]b"));
-  res.add(new RegExp(r"a[]b"));
-  res.add(new RegExp(r"a[]+b"));
-  res.add(new RegExp(r"a[^]b"));
-  res.add(new RegExp(r"a[^]+b"));
-  res.add(new RegExp(r"a(?!)+b"));
-  res.add(new RegExp(r"(abc|pqr|123){0}[xyz]", caseSensitive: false));
-  res.add(new RegExp(r" End of testinput2 "));
-  res.add(new RegExp(r"a.b"));
-  res.add(new RegExp(r"a(.{3})b"));
-  res.add(new RegExp(r"a(.*?)(.)"));
-  res.add(new RegExp(r"a(.*?)(.)"));
-  res.add(new RegExp(r"a(.*)(.)"));
-  res.add(new RegExp(r"a(.*)(.)"));
-  res.add(new RegExp(r"a(.)(.)"));
-  res.add(new RegExp(r"a(.)(.)"));
-  res.add(new RegExp(r"a(.?)(.)"));
-  res.add(new RegExp(r"a(.?)(.)"));
-  res.add(new RegExp(r"a(.??)(.)"));
-  res.add(new RegExp(r"a(.??)(.)"));
-  res.add(new RegExp(r"a(.{3})b"));
-  res.add(new RegExp(r"a(.{3,})b"));
-  res.add(new RegExp(r"a(.{3,}?)b"));
-  res.add(new RegExp(r"a(.{3,5})b"));
-  res.add(new RegExp(r"a(.{3,5}?)b"));
-  res.add(new RegExp(r"X(\C{3})"));
-  res.add(new RegExp(r"X(\C{4})"));
-  res.add(new RegExp(r"X\C*"));
-  res.add(new RegExp(r"X\C*?"));
-  res.add(new RegExp(r"X\C{3,5}"));
-  res.add(new RegExp(r"X\C{3,5}?"));
-  res.add(new RegExp(r"[^a]+"));
-  res.add(new RegExp(r"^[^a]{2}"));
-  res.add(new RegExp(r"^[^a]{2,}"));
-  res.add(new RegExp(r"^[^a]{2,}?"));
-  res.add(new RegExp(r"[^a]+", caseSensitive: false));
-  res.add(new RegExp(r"^[^a]{2}", caseSensitive: false));
-  res.add(new RegExp(r"^[^a]{2,}", caseSensitive: false));
-  res.add(new RegExp(r"^[^a]{2,}?", caseSensitive: false));
-  res.add(new RegExp(r"\D*"));
-  res.add(new RegExp(r"\D*"));
-  res.add(new RegExp(r"\D"));
-  res.add(new RegExp(r">\S"));
-  res.add(new RegExp(r"\d"));
-  res.add(new RegExp(r"\s"));
-  res.add(new RegExp(r"\D+"));
-  res.add(new RegExp(r"\D{2,3}"));
-  res.add(new RegExp(r"\D{2,3}?"));
-  res.add(new RegExp(r"\d+"));
-  res.add(new RegExp(r"\d{2,3}"));
-  res.add(new RegExp(r"\d{2,3}?"));
-  res.add(new RegExp(r"\S+"));
-  res.add(new RegExp(r"\S{2,3}"));
-  res.add(new RegExp(r"\S{2,3}?"));
-  res.add(new RegExp(r">\s+<"));
-  res.add(new RegExp(r">\s{2,3}<"));
-  res.add(new RegExp(r">\s{2,3}?<"));
-  res.add(new RegExp(r"\w+"));
-  res.add(new RegExp(r"\w{2,3}"));
-  res.add(new RegExp(r"\w{2,3}?"));
-  res.add(new RegExp(r"\W+"));
-  res.add(new RegExp(r"\W{2,3}"));
-  res.add(new RegExp(r"\W{2,3}?"));
-  res.add(new RegExp(r"a\Cb"));
-  res.add(new RegExp(r"a\Cb"));
-  res.add(new RegExp(r"[\xFF]"));
-  res.add(new RegExp(r"[\xff]"));
-  res.add(new RegExp(r"[^\xFF]"));
-  res.add(new RegExp(r"[^\xff]"));
-  res.add(new RegExp(r"^[ac]*b"));
-  res.add(new RegExp(r"^[^x]*b", caseSensitive: false));
-  res.add(new RegExp(r"^[^x]*b"));
-  res.add(new RegExp(r"^\d*b"));
-  res.add(new RegExp(r"(|a)"));
-  res.add(new RegExp(r"\S\S"));
-  res.add(new RegExp(r"\S{2}"));
-  res.add(new RegExp(r"\W\W"));
-  res.add(new RegExp(r"\W{2}"));
-  res.add(new RegExp(r"\S"));
-  res.add(new RegExp(r"[\S]"));
-  res.add(new RegExp(r"\D"));
-  res.add(new RegExp(r"[\D]"));
-  res.add(new RegExp(r"\W"));
-  res.add(new RegExp(r"[\W]"));
-  res.add(new RegExp(r"[\S\s]*"));
-  res.add(new RegExp(r".[^\S]."));
-  res.add(new RegExp(r".[^\S\n]."));
-  res.add(new RegExp(r"[[:^alnum:]]"));
-  res.add(new RegExp(r"[[:^alpha:]]"));
-  res.add(new RegExp(r"[[:^ascii:]]"));
-  res.add(new RegExp(r"[[:^blank:]]"));
-  res.add(new RegExp(r"[[:^cntrl:]]"));
-  res.add(new RegExp(r"[[:^digit:]]"));
-  res.add(new RegExp(r"[[:^graph:]]"));
-  res.add(new RegExp(r"[[:^lower:]]"));
-  res.add(new RegExp(r"[[:^print:]]"));
-  res.add(new RegExp(r"[[:^punct:]]"));
-  res.add(new RegExp(r"[[:^space:]]"));
-  res.add(new RegExp(r"[[:^upper:]]"));
-  res.add(new RegExp(r"[[:^word:]]"));
-  res.add(new RegExp(r"[[:^xdigit:]]"));
-  res.add(new RegExp(r"^[^d]*?$"));
-  res.add(new RegExp(r"^[^d]*?$"));
-  res.add(new RegExp(r"^[^d]*?$", caseSensitive: false));
-  res.add(new RegExp(r"^[^d]*?$", caseSensitive: false));
-  res.add(new RegExp(r" End of testinput4 "));
-  res.add(new RegExp(r"\x80"));
-  res.add(new RegExp(r"\xff"));
-  res.add(new RegExp(r".{3,5}X"));
-  res.add(new RegExp(r".{3,5}?"));
-  res.add(new RegExp(r"X(\C)(.*)"));
-  res.add(new RegExp(r"^[ab]"));
-  res.add(new RegExp(r"^[^ab]"));
-  res.add(new RegExp(r"[^ab\xC0-\xF0]"));
-  res.add(new RegExp(r"[\xFF]"));
-  res.add(new RegExp(r"[\xff]"));
-  res.add(new RegExp(r"[^\xFF]"));
-  res.add(new RegExp(r"[^\xff]"));
-  res.add(new RegExp(r"anything"));
-  res.add(new RegExp(r"\W"));
-  res.add(new RegExp(r"\w"));
-  res.add(new RegExp(r"\777", caseSensitive: false));
-  res.add(new RegExp(r"\777", caseSensitive: false));
-  res.add(new RegExp(r"^abc.", multiLine: true));
-  res.add(new RegExp(r"abc.$", multiLine: true));
-  res.add(new RegExp(r"^a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"^a\R*b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R+b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R{1,3}b", caseSensitive: false));
-  res.add(new RegExp(r"\H\h\V\v"));
-  res.add(new RegExp(r"\H*\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"\H\h\V\v"));
-  res.add(new RegExp(r"\H*\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"[\h]"));
-  res.add(new RegExp(r"[\h]{3,}"));
-  res.add(new RegExp(r"[\v]"));
-  res.add(new RegExp(r"[\H]"));
-  res.add(new RegExp(r"[\V]"));
-  res.add(new RegExp(r".*$"));
-  res.add(new RegExp(r"X"));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r".*a.*=.b.*"));
-  res.add(new RegExp(r"a[^]b"));
-  res.add(new RegExp(r"a[^]+b"));
-  res.add(new RegExp(r"X"));
-  res.add(new RegExp(r" End of testinput5 "));
-  res.add(new RegExp(r"^\pC\pL\pM\pN\pP\pS\pZ<"));
-  res.add(new RegExp(r"^\PC"));
-  res.add(new RegExp(r"^\PL"));
-  res.add(new RegExp(r"^\PM"));
-  res.add(new RegExp(r"^\PN"));
-  res.add(new RegExp(r"^\PP"));
-  res.add(new RegExp(r"^\PS"));
-  res.add(new RegExp(r"^\PZ"));
-  res.add(new RegExp(r"^\p{Cc}"));
-  res.add(new RegExp(r"^\p{Cf}"));
-  res.add(new RegExp(r"^\p{Cn}"));
-  res.add(new RegExp(r"^\p{Co}"));
-  res.add(new RegExp(r"^\p{Cs}"));
-  res.add(new RegExp(r"^\p{Ll}"));
-  res.add(new RegExp(r"^\p{Lm}"));
-  res.add(new RegExp(r"^\p{Lo}"));
-  res.add(new RegExp(r"^\p{Lt}"));
-  res.add(new RegExp(r"^\p{Lu}"));
-  res.add(new RegExp(r"^\p{Mc}"));
-  res.add(new RegExp(r"^\p{Me}"));
-  res.add(new RegExp(r"^\p{Mn}"));
-  res.add(new RegExp(r"^\p{Nl}"));
-  res.add(new RegExp(r"^\p{No}"));
-  res.add(new RegExp(r"^\p{Pc}"));
-  res.add(new RegExp(r"^\p{Pd}"));
-  res.add(new RegExp(r"^\p{Pe}"));
-  res.add(new RegExp(r"^\p{Pf}"));
-  res.add(new RegExp(r"^\p{Pi}"));
-  res.add(new RegExp(r"^\p{Po}"));
-  res.add(new RegExp(r"^\p{Ps}"));
-  res.add(new RegExp(r"^\p{Sk}"));
-  res.add(new RegExp(r"^\p{So}"));
-  res.add(new RegExp(r"^\p{Zl}"));
-  res.add(new RegExp(r"^\p{Zp}"));
-  res.add(new RegExp(r"^\p{Zs}"));
-  res.add(new RegExp(r"\p{Nd}{2,}(..)"));
-  res.add(new RegExp(r"\p{Nd}{2,}?(..)"));
-  res.add(new RegExp(r"\p{Nd}*(..)"));
-  res.add(new RegExp(r"\p{Nd}*?(..)"));
-  res.add(new RegExp(r"\p{Nd}{2}(..)"));
-  res.add(new RegExp(r"\p{Nd}{2,3}(..)"));
-  res.add(new RegExp(r"\p{Nd}{2,3}?(..)"));
-  res.add(new RegExp(r"\p{Nd}?(..)"));
-  res.add(new RegExp(r"\p{Nd}??(..)"));
-  res.add(new RegExp(r"\p{Lu}", caseSensitive: false));
-  res.add(new RegExp(r"\p{^Lu}", caseSensitive: false));
-  res.add(new RegExp(r"\P{Lu}", caseSensitive: false));
-  res.add(new RegExp(r"[\p{L}]"));
-  res.add(new RegExp(r"[\p{^L}]"));
-  res.add(new RegExp(r"[\P{L}]"));
-  res.add(new RegExp(r"[\P{^L}]"));
-  res.add(new RegExp(r"[\p{Nd}]"));
-  res.add(new RegExp(r"[\P{Nd}]+"));
-  res.add(new RegExp(r"\D+"));
-  res.add(new RegExp(r"[\D]+"));
-  res.add(new RegExp(r"[\P{Nd}]+"));
-  res.add(new RegExp(r"[\D\P{Nd}]+"));
-  res.add(new RegExp(r"\pL"));
-  res.add(new RegExp(r"\pL", caseSensitive: false));
-  res.add(new RegExp(r"\p{Lu}"));
-  res.add(new RegExp(r"\p{Lu}", caseSensitive: false));
-  res.add(new RegExp(r"\p{Ll}"));
-  res.add(new RegExp(r"\p{Ll}", caseSensitive: false));
-  res.add(new RegExp(r"^\X"));
-  res.add(new RegExp(r"^[\X]"));
-  res.add(new RegExp(r"^(\X*)C"));
-  res.add(new RegExp(r"^(\X*?)C"));
-  res.add(new RegExp(r"^(\X*)(.)"));
-  res.add(new RegExp(r"^(\X*?)(.)"));
-  res.add(new RegExp(r"^\X(.)"));
-  res.add(new RegExp(r"^\X{2,3}(.)"));
-  res.add(new RegExp(r"^\X{2,3}?(.)"));
-  res.add(new RegExp(r"^[\p{Arabic}]"));
-  res.add(new RegExp(r"^[\P{Yi}]"));
-  res.add(new RegExp(r"^\p{Any}X"));
-  res.add(new RegExp(r"^\P{Any}X"));
-  res.add(new RegExp(r"^\p{Any}?X"));
-  res.add(new RegExp(r"^\P{Any}?X"));
-  res.add(new RegExp(r"^\p{Any}*X"));
-  res.add(new RegExp(r"^\P{Any}*X"));
-  res.add(new RegExp(r"^[\p{Any}]X"));
-  res.add(new RegExp(r"^[\P{Any}]X"));
-  res.add(new RegExp(r"^[\p{Any}]?X"));
-  res.add(new RegExp(r"^[\P{Any}]?X"));
-  res.add(new RegExp(r"^[\p{Any}]+X"));
-  res.add(new RegExp(r"^[\P{Any}]+X"));
-  res.add(new RegExp(r"^[\p{Any}]*X"));
-  res.add(new RegExp(r"^[\P{Any}]*X"));
-  res.add(new RegExp(r"^\p{Any}{3,5}?"));
-  res.add(new RegExp(r"^\p{Any}{3,5}"));
-  res.add(new RegExp(r"^\P{Any}{3,5}?"));
-  res.add(new RegExp(r"^\p{L&}X"));
-  res.add(new RegExp(r"^[\p{L&}]X"));
-  res.add(new RegExp(r"^[\p{L&}]+X"));
-  res.add(new RegExp(r"^[\p{L&}]+?X"));
-  res.add(new RegExp(r"^\P{L&}X"));
-  res.add(new RegExp(r"^[\P{L&}]X"));
-  res.add(new RegExp(r"^(\p{Z}[^\p{C}\p{Z}]+)*$"));
-  res.add(new RegExp(r"([\pL]=(abc))*X"));
-  res.add(new RegExp(
-      r"^\p{Balinese}\p{Cuneiform}\p{Nko}\p{Phags_Pa}\p{Phoenician}"));
-  res.add(new RegExp(
-      r"The next two are special cases where the lengths of the different cases of the \nsame character differ. The first went wrong with heap frame storage; the 2nd\nwas broken in all cases."));
-  res.add(new RegExp(r"Check property support in non-UTF-8 mode"));
-  res.add(new RegExp(r"\p{L}{4}"));
-  res.add(new RegExp(r"\X{1,3}\d"));
-  res.add(new RegExp(r"\X?\d"));
-  res.add(new RegExp(r"\P{L}?\d"));
-  res.add(new RegExp(r"[\PPP\x8a]{1,}\x80"));
-  res.add(new RegExp(r"(?:[\PPa*]*){8,}"));
-  res.add(new RegExp(r"[\P{Any}]"));
-  res.add(new RegExp(r"[\P{Any}\E]"));
-  res.add(new RegExp(r"(\P{Yi}{2}\277)?"));
-  res.add(new RegExp(r"[\P{Yi}A]"));
-  res.add(new RegExp(r"[\P{Yi}\P{Yi}\P{Yi}A]"));
-  res.add(new RegExp(r"[^\P{Yi}A]"));
-  res.add(new RegExp(r"[^\P{Yi}\P{Yi}\P{Yi}A]"));
-  res.add(new RegExp(r"(\P{Yi}*\277)*"));
-  res.add(new RegExp(r"(\P{Yi}*?\277)*"));
-  res.add(new RegExp(r"(\P{Yi}?\277)*"));
-  res.add(new RegExp(r"(\P{Yi}??\277)*"));
-  res.add(new RegExp(r"(\P{Yi}{0,3}\277)*"));
-  res.add(new RegExp(r"(\P{Yi}{0,3}?\277)*"));
-  res.add(new RegExp(r"^[\p{Arabic}]"));
-  res.add(new RegExp(r"^\p{Cyrillic}"));
-  res.add(new RegExp(r"^\p{Common}"));
-  res.add(new RegExp(r"^\p{Inherited}"));
-  res.add(new RegExp(r"^\p{Shavian}"));
-  res.add(new RegExp(r"^\p{Deseret}"));
-  res.add(new RegExp(r"^\p{Osmanya}"));
-  res.add(new RegExp(r"\p{Zl}"));
-  res.add(new RegExp(
-      r"\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}"));
-  res.add(new RegExp(r"(A)\1", caseSensitive: false));
-  res.add(new RegExp(r" End of testinput6 "));
-  res.add(new RegExp(r"abc"));
-  res.add(new RegExp(r"ab*c"));
-  res.add(new RegExp(r"ab+c"));
-  res.add(new RegExp(r"a*"));
-  res.add(new RegExp(r"(a|abcd|african)"));
-  res.add(new RegExp(r"^abc"));
-  res.add(new RegExp(r"^abc", multiLine: true));
-  res.add(new RegExp(r"\Aabc"));
-  res.add(new RegExp(r"\Aabc", multiLine: true));
-  res.add(new RegExp(r"\Gabc"));
-  res.add(new RegExp(r"x\dy\Dz"));
-  res.add(new RegExp(r"x\sy\Sz"));
-  res.add(new RegExp(r"x\wy\Wz"));
-  res.add(new RegExp(r"x.y"));
-  res.add(new RegExp(r"x.y"));
-  res.add(new RegExp(r"a\d\z"));
-  res.add(new RegExp(r"a\d\z", multiLine: true));
-  res.add(new RegExp(r"a\d\Z"));
-  res.add(new RegExp(r"a\d\Z", multiLine: true));
-  res.add(new RegExp(r"a\d$"));
-  res.add(new RegExp(r"a\d$", multiLine: true));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r"[^a]"));
-  res.add(new RegExp(r"ab?\w"));
-  res.add(new RegExp(r"x{0,3}yz"));
-  res.add(new RegExp(r"x{3}yz"));
-  res.add(new RegExp(r"x{2,3}yz"));
-  res.add(new RegExp(r"[^a]+"));
-  res.add(new RegExp(r"[^a]*"));
-  res.add(new RegExp(r"[^a]{3,5}"));
-  res.add(new RegExp(r"\d*"));
-  res.add(new RegExp(r"\D*"));
-  res.add(new RegExp(r"\d+"));
-  res.add(new RegExp(r"\D+"));
-  res.add(new RegExp(r"\d?A"));
-  res.add(new RegExp(r"\D?A"));
-  res.add(new RegExp(r"a+"));
-  res.add(new RegExp(r"^.*xyz"));
-  res.add(new RegExp(r"^.+xyz"));
-  res.add(new RegExp(r"^.?xyz"));
-  res.add(new RegExp(r"^\d{2,3}X"));
-  res.add(new RegExp(r"^[abcd]\d"));
-  res.add(new RegExp(r"^[abcd]*\d"));
-  res.add(new RegExp(r"^[abcd]+\d"));
-  res.add(new RegExp(r"^a+X"));
-  res.add(new RegExp(r"^[abcd]?\d"));
-  res.add(new RegExp(r"^[abcd]{2,3}\d"));
-  res.add(new RegExp(r"^(abc)*\d"));
-  res.add(new RegExp(r"^(abc)+\d"));
-  res.add(new RegExp(r"^(abc)?\d"));
-  res.add(new RegExp(r"^(abc){2,3}\d"));
-  res.add(new RegExp(r"^(a*\w|ab)=(a*\w|ab)"));
-  res.add(new RegExp(r"^(?=abc)\w{5}:$"));
-  res.add(new RegExp(r"^(?!abc)\d\d$"));
-  res.add(new RegExp(r"(ab|cd){3,4}"));
-  res.add(new RegExp(r"^abc"));
-  res.add(new RegExp(r"^(a*|xyz)"));
-  res.add(new RegExp(r"xyz$"));
-  res.add(new RegExp(r"xyz$", multiLine: true));
-  res.add(new RegExp(r"\Gabc"));
-  res.add(new RegExp(r"^abcdef"));
-  res.add(new RegExp(r"^a{2,4}\d+z"));
-  res.add(new RegExp(r"^abcdef"));
-  res.add(new RegExp(r"(ab*(cd|ef))+X"));
-  res.add(new RegExp(r"the quick brown fox"));
-  res.add(new RegExp(r"The quick brown fox", caseSensitive: false));
-  res.add(new RegExp(r"abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz"));
-  res.add(new RegExp(r"a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz"));
-  res.add(new RegExp(r"^(abc){1,2}zz"));
-  res.add(new RegExp(r"^(b+?|a){1,2}?c"));
-  res.add(new RegExp(r"^(b+|a){1,2}c"));
-  res.add(new RegExp(r"^(b*|ba){1,2}?bc"));
-  res.add(new RegExp(r"^(ba|b*){1,2}?bc"));
-  res.add(new RegExp(r"^[ab\]cde]"));
-  res.add(new RegExp(r"^[]cde]"));
-  res.add(new RegExp(r"^[^ab\]cde]"));
-  res.add(new RegExp(r"^[^]cde]"));
-  res.add(new RegExp(r"^[0-9]+$"));
-  res.add(new RegExp(r"^.*nter"));
-  res.add(new RegExp(r"^xxx[0-9]+$"));
-  res.add(new RegExp(r"^.+[0-9][0-9][0-9]$"));
-  res.add(new RegExp(r"^.+?[0-9][0-9][0-9]$"));
-  res.add(new RegExp(r"^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$"));
-  res.add(new RegExp(r":"));
-  res.add(new RegExp(r"([\da-f:]+)$", caseSensitive: false));
-  res.add(new RegExp(r"^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$"));
-  res.add(new RegExp(r"^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$"));
-  res.add(
-      new RegExp(r"^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$"));
-  res.add(new RegExp(
-      r"^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$"));
-  res.add(new RegExp(r"^(?=ab(de))(abd)(e)"));
-  res.add(new RegExp(r"^(?!(ab)de|x)(abd)(f)"));
-  res.add(new RegExp(r"^(?=(ab(cd)))(ab)"));
-  res.add(new RegExp(r"^[\da-f](\.[\da-f])*$", caseSensitive: false));
-  res.add(new RegExp(r'^\".*\"\s*(;.*)?$'));
-  res.add(new RegExp(r"^$"));
-  res.add(new RegExp(r"^ab\sc$"));
-  res.add(new RegExp(r"^a\ b[c]d$"));
-  res.add(new RegExp(r"^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$"));
-  res.add(new RegExp(r"^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$"));
-  res.add(new RegExp(r"^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]"));
-  res.add(new RegExp(r"^a*\w"));
-  res.add(new RegExp(r"^a*?\w"));
-  res.add(new RegExp(r"^a+\w"));
-  res.add(new RegExp(r"^a+?\w"));
-  res.add(new RegExp(r"^\d{8}\w{2,}"));
-  res.add(new RegExp(r"^[aeiou\d]{4,5}$"));
-  res.add(new RegExp(r"^[aeiou\d]{4,5}?"));
-  res.add(new RegExp(
-      r"^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]"));
-  res.add(new RegExp(r"^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d"));
-  res.add(new RegExp(r"^12.34"));
-  res.add(new RegExp(r"\w+(?=\t)"));
-  res.add(new RegExp(r"foo(?!bar)(.*)"));
-  res.add(new RegExp(r"(?:(?!foo)...|^.{0,2})bar(.*)"));
-  res.add(new RegExp(r"^(\D*)(?=\d)(?!123)"));
-  res.add(new RegExp(r"^1234"));
-  res.add(new RegExp(r"^1234"));
-  res.add(new RegExp(r"abcd"));
-  res.add(new RegExp(r"^abcd"));
-  res.add(new RegExp(r"(?!^)abc"));
-  res.add(new RegExp(r"(?=^)abc"));
-  res.add(new RegExp(r"^[ab]{1,3}(ab*|b)"));
-  res.add(new RegExp(r"^[ab]{1,3}?(ab*|b)"));
-  res.add(new RegExp(r"^[ab]{1,3}?(ab*?|b)"));
-  res.add(new RegExp(r"^[ab]{1,3}(ab*?|b)"));
-  res.add(new RegExp(
-      r'(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\)|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")*<(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*,(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*)*:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*")(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"(?:[^\\\x80-\xff\n\015"]|\\[^\x80-\xff])*"))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*@(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])(?:(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*\.(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\]))*(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*>)(?:[\040\t]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff]|\((?:[^\\\x80-\xff\n\015()]|\\[^\x80-\xff])*\))*\))*'));
-  res.add(new RegExp(
-      r'[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*|(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*(?:(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]*)*<[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*(?:,[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*)*:[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)?(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|"[^\\\x80-\xff\n\015"]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015"]*)*")[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*@[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:\.[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*(?:[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff])|\[(?:[^\\\x80-\xff\n\015\[\]]|\\[^\x80-\xff])*\])[\040\t]*(?:\([^\\\x80-\xff\n\015()]*(?:(?:\\[^\x80-\xff]|\([^\\\x80-\xff\n\015()]*(?:\\[^\x80-\xff][^\\\x80-\xff\n\015()]*)*\))[^\\\x80-\xff\n\015()]*)*\)[\040\t]*)*)*>)'));
-  res.add(new RegExp(r"abc\x0def\x00pqr\x000xyz\x0000AB"));
-  res.add(new RegExp(r"^[\000-\037]"));
-  res.add(new RegExp(r"\0*"));
-  res.add(new RegExp(r"A\x0{2,3}Z"));
-  res.add(new RegExp(r"^\s"));
-  res.add(new RegExp(r"^abc"));
-  res.add(new RegExp(r"ab{1,3}bc"));
-  res.add(new RegExp(r"([^.]*)\.([^:]*):[T ]+(.*)"));
-  res.add(new RegExp(r"([^.]*)\.([^:]*):[T ]+(.*)", caseSensitive: false));
-  res.add(new RegExp(r"([^.]*)\.([^:]*):[t ]+(.*)", caseSensitive: false));
-  res.add(new RegExp(r"^[W-c]+$"));
-  res.add(new RegExp(r"^[W-c]+$", caseSensitive: false));
-  res.add(new RegExp(r"^[\x3f-\x5F]+$", caseSensitive: false));
-  res.add(new RegExp(r"^abc$", multiLine: true));
-  res.add(new RegExp(r"^abc$"));
-  res.add(new RegExp(r"\Aabc\Z", multiLine: true));
-  res.add(new RegExp(r"\A(.)*\Z"));
-  res.add(new RegExp(r"\A(.)*\Z", multiLine: true));
-  res.add(new RegExp(r"(?:b)|(?::+)"));
-  res.add(new RegExp(r"[-az]+"));
-  res.add(new RegExp(r"[az-]+"));
-  res.add(new RegExp(r"[a\-z]+"));
-  res.add(new RegExp(r"[a-z]+"));
-  res.add(new RegExp(r"[\d-]+"));
-  res.add(new RegExp(r"[\d-z]+"));
-  res.add(new RegExp(r"\x5c"));
-  res.add(new RegExp(r"\x20Z"));
-  res.add(new RegExp(r"ab{3cd"));
-  res.add(new RegExp(r"ab{3,cd"));
-  res.add(new RegExp(r"ab{3,4a}cd"));
-  res.add(new RegExp(r"{4,5a}bc"));
-  res.add(new RegExp(r"^a.b"));
-  res.add(new RegExp(r"abc$"));
-  res.add(new RegExp(r"(abc)\123"));
-  res.add(new RegExp(r"(abc)\223"));
-  res.add(new RegExp(r"(abc)\323"));
-  res.add(new RegExp(r"(abc)\100"));
-  res.add(new RegExp(r"abc\81"));
-  res.add(new RegExp(r"abc\91"));
-  res.add(new RegExp(r"(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123"));
-  res.add(new RegExp(r"ab\idef"));
-  res.add(new RegExp(r"a{0}bc"));
-  res.add(new RegExp(r"(a|(bc)){0,0}?xyz"));
-  res.add(new RegExp(r"abc[\10]de"));
-  res.add(new RegExp(r"abc[\1]de"));
-  res.add(new RegExp(r"(abc)[\1]de"));
-  res.add(new RegExp(r"^([^a])([^\b])([^c]*)([^d]{3,4})"));
-  res.add(new RegExp(r"[^a]"));
-  res.add(new RegExp(r"[^a]", caseSensitive: false));
-  res.add(new RegExp(r"[^a]+"));
-  res.add(new RegExp(r"[^a]+", caseSensitive: false));
-  res.add(new RegExp(r"[^a]+"));
-  res.add(new RegExp(r"[^k]$"));
-  res.add(new RegExp(r"[^k]{2,3}$"));
-  res.add(new RegExp(r"^\d{8,}\@.+[^k]$"));
-  res.add(new RegExp(r"[^a]"));
-  res.add(new RegExp(r"[^a]", caseSensitive: false));
-  res.add(new RegExp(r"[^az]"));
-  res.add(new RegExp(r"[^az]", caseSensitive: false));
-  res.add(new RegExp(
-      r"\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377"));
-  res.add(new RegExp(r"P[^*]TAIRE[^*]{1,6}?LL"));
-  res.add(new RegExp(r"P[^*]TAIRE[^*]{1,}?LL"));
-  res.add(new RegExp(r"(\.\d\d[1-9]?)\d+"));
-  res.add(new RegExp(r"(\.\d\d((?=0)|\d(?=\d)))"));
-  res.add(new RegExp(r"\b(foo)\s+(\w+)", caseSensitive: false));
-  res.add(new RegExp(r"foo(.*)bar"));
-  res.add(new RegExp(r"foo(.*?)bar"));
-  res.add(new RegExp(r"(.*)(\d*)"));
-  res.add(new RegExp(r"(.*)(\d+)"));
-  res.add(new RegExp(r"(.*?)(\d*)"));
-  res.add(new RegExp(r"(.*?)(\d+)"));
-  res.add(new RegExp(r"(.*)(\d+)$"));
-  res.add(new RegExp(r"(.*?)(\d+)$"));
-  res.add(new RegExp(r"(.*)\b(\d+)$"));
-  res.add(new RegExp(r"(.*\D)(\d+)$"));
-  res.add(new RegExp(r"^\D*(?!123)"));
-  res.add(new RegExp(r"^(\D*)(?=\d)(?!123)"));
-  res.add(new RegExp(r"^[W-]46]"));
-  res.add(new RegExp(r"^[W-\]46]"));
-  res.add(new RegExp(r"\d\d\/\d\d\/\d\d\d\d"));
-  res.add(new RegExp(r"word (?:[a-zA-Z0-9]+ ){0,10}otherword"));
-  res.add(new RegExp(r"word (?:[a-zA-Z0-9]+ ){0,300}otherword"));
-  res.add(new RegExp(r"^(a){0,0}"));
-  res.add(new RegExp(r"^(a){0,1}"));
-  res.add(new RegExp(r"^(a){0,2}"));
-  res.add(new RegExp(r"^(a){0,3}"));
-  res.add(new RegExp(r"^(a){0,}"));
-  res.add(new RegExp(r"^(a){1,1}"));
-  res.add(new RegExp(r"^(a){1,2}"));
-  res.add(new RegExp(r"^(a){1,3}"));
-  res.add(new RegExp(r"^(a){1,}"));
-  res.add(new RegExp(r".*\.gif"));
-  res.add(new RegExp(r".{0,}\.gif"));
-  res.add(new RegExp(r".*\.gif", multiLine: true));
-  res.add(new RegExp(r".*\.gif"));
-  res.add(new RegExp(r".*\.gif", multiLine: true));
-  res.add(new RegExp(r".*$"));
-  res.add(new RegExp(r".*$", multiLine: true));
-  res.add(new RegExp(r".*$"));
-  res.add(new RegExp(r".*$", multiLine: true));
-  res.add(new RegExp(r".*$"));
-  res.add(new RegExp(r".*$", multiLine: true));
-  res.add(new RegExp(r".*$"));
-  res.add(new RegExp(r".*$", multiLine: true));
-  res.add(new RegExp(r"(.*X|^B)"));
-  res.add(new RegExp(r"(.*X|^B)", multiLine: true));
-  res.add(new RegExp(r"(.*X|^B)"));
-  res.add(new RegExp(r"(.*X|^B)", multiLine: true));
-  res.add(new RegExp(r"^.*B"));
-  res.add(new RegExp(
-      r"^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"));
-  res.add(new RegExp(r"^\d\d\d\d\d\d\d\d\d\d\d\d"));
-  res.add(new RegExp(r"^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]"));
-  res.add(new RegExp(r"^[abc]{12}"));
-  res.add(new RegExp(r"^[a-c]{12}"));
-  res.add(new RegExp(r"^(a|b|c){12}"));
-  res.add(new RegExp(r"^[abcdefghijklmnopqrstuvwxy0123456789]"));
-  res.add(new RegExp(r"abcde{0,0}"));
-  res.add(new RegExp(r"ab[cd]{0,0}e"));
-  res.add(new RegExp(r"ab(c){0,0}d"));
-  res.add(new RegExp(r"a(b*)"));
-  res.add(new RegExp(r"ab\d{0}e"));
-  res.add(new RegExp(r'"([^\\"]+|\\.)*"'));
-  res.add(new RegExp(r".*?"));
-  res.add(new RegExp(r"\b"));
-  res.add(new RegExp(r"\b"));
-  res.add(new RegExp(
-      r"<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>",
-      caseSensitive: false));
-  res.add(new RegExp(r"a[^a]b"));
-  res.add(new RegExp(r"a.b"));
-  res.add(new RegExp(r"a[^a]b"));
-  res.add(new RegExp(r"a.b"));
-  res.add(new RegExp(r"^(b+?|a){1,2}?c"));
-  res.add(new RegExp(r"^(b+|a){1,2}?c"));
-  res.add(new RegExp(r"(?!\A)x", multiLine: true));
-  res.add(new RegExp(r"\x0{ab}"));
-  res.add(new RegExp(r"(A|B)*?CD"));
-  res.add(new RegExp(r"(A|B)*CD"));
-  res.add(new RegExp(r"\Aabc\z", multiLine: true));
-  res.add(new RegExp(r"(\d+)(\w)"));
-  res.add(new RegExp(r"(a+|b+|c+)*c"));
-  res.add(new RegExp(r"(abc|)+"));
-  res.add(new RegExp(r"([a]*)*"));
-  res.add(new RegExp(r"([ab]*)*"));
-  res.add(new RegExp(r"([^a]*)*"));
-  res.add(new RegExp(r"([^ab]*)*"));
-  res.add(new RegExp(r"([a]*?)*"));
-  res.add(new RegExp(r"([ab]*?)*"));
-  res.add(new RegExp(r"([^a]*?)*"));
-  res.add(new RegExp(r"([^ab]*?)*"));
-  res.add(new RegExp(
-      r"The following tests are taken from the Perl 5.005 test suite; some of them"));
-  res.add(new RegExp(
-      r"are compatible with 5.004, but I'd rather not have to sort them out."));
-  res.add(new RegExp(r"abc"));
-  res.add(new RegExp(r"ab*c"));
-  res.add(new RegExp(r"ab*bc"));
-  res.add(new RegExp(r".{1}"));
-  res.add(new RegExp(r".{3,4}"));
-  res.add(new RegExp(r"ab{0,}bc"));
-  res.add(new RegExp(r"ab+bc"));
-  res.add(new RegExp(r"ab{1,}bc"));
-  res.add(new RegExp(r"ab+bc"));
-  res.add(new RegExp(r"ab{1,}bc"));
-  res.add(new RegExp(r"ab{1,3}bc"));
-  res.add(new RegExp(r"ab{3,4}bc"));
-  res.add(new RegExp(r"ab{4,5}bc"));
-  res.add(new RegExp(r"ab?bc"));
-  res.add(new RegExp(r"ab{0,1}bc"));
-  res.add(new RegExp(r"ab?bc"));
-  res.add(new RegExp(r"ab?c"));
-  res.add(new RegExp(r"ab{0,1}c"));
-  res.add(new RegExp(r"^abc$"));
-  res.add(new RegExp(r"^abc"));
-  res.add(new RegExp(r"^abc$"));
-  res.add(new RegExp(r"abc$"));
-  res.add(new RegExp(r"^"));
-  res.add(new RegExp(r"$"));
-  res.add(new RegExp(r"a.c"));
-  res.add(new RegExp(r"a.*c"));
-  res.add(new RegExp(r"a[bc]d"));
-  res.add(new RegExp(r"a[b-d]e"));
-  res.add(new RegExp(r"a[b-d]"));
-  res.add(new RegExp(r"a[-b]"));
-  res.add(new RegExp(r"a[b-]"));
-  res.add(new RegExp(r"a]"));
-  res.add(new RegExp(r"a[]]b"));
-  res.add(new RegExp(r"a[^bc]d"));
-  res.add(new RegExp(r"a[^-b]c"));
-  res.add(new RegExp(r"a[^]b]c"));
-  res.add(new RegExp(r"\ba\b"));
-  res.add(new RegExp(r"\by\b"));
-  res.add(new RegExp(r"\Ba\B"));
-  res.add(new RegExp(r"\By\b"));
-  res.add(new RegExp(r"\by\B"));
-  res.add(new RegExp(r"\By\B"));
-  res.add(new RegExp(r"\w"));
-  res.add(new RegExp(r"\W"));
-  res.add(new RegExp(r"a\sb"));
-  res.add(new RegExp(r"a\Sb"));
-  res.add(new RegExp(r"\d"));
-  res.add(new RegExp(r"\D"));
-  res.add(new RegExp(r"[\w]"));
-  res.add(new RegExp(r"[\W]"));
-  res.add(new RegExp(r"a[\s]b"));
-  res.add(new RegExp(r"a[\S]b"));
-  res.add(new RegExp(r"[\d]"));
-  res.add(new RegExp(r"[\D]"));
-  res.add(new RegExp(r"ab|cd"));
-  res.add(new RegExp(r"()ef"));
-  res.add(new RegExp(r"$b"));
-  res.add(new RegExp(r"a\(b"));
-  res.add(new RegExp(r"a\\b"));
-  res.add(new RegExp(r"((a))"));
-  res.add(new RegExp(r"(a)b(c)"));
-  res.add(new RegExp(r"a+b+c"));
-  res.add(new RegExp(r"a{1,}b{1,}c"));
-  res.add(new RegExp(r"a.+?c"));
-  res.add(new RegExp(r"(a+|b)*"));
-  res.add(new RegExp(r"(a+|b){0,}"));
-  res.add(new RegExp(r"(a+|b)+"));
-  res.add(new RegExp(r"(a+|b){1,}"));
-  res.add(new RegExp(r"(a+|b)?"));
-  res.add(new RegExp(r"(a+|b){0,1}"));
-  res.add(new RegExp(r"[^ab]*"));
-  res.add(new RegExp(r"abc"));
-  res.add(new RegExp(r"a*"));
-  res.add(new RegExp(r"([abc])*d"));
-  res.add(new RegExp(r"([abc])*bcd"));
-  res.add(new RegExp(r"a|b|c|d|e"));
-  res.add(new RegExp(r"(a|b|c|d|e)f"));
-  res.add(new RegExp(r"abcd*efg"));
-  res.add(new RegExp(r"ab*"));
-  res.add(new RegExp(r"(ab|cd)e"));
-  res.add(new RegExp(r"[abhgefdc]ij"));
-  res.add(new RegExp(r"^(ab|cd)e"));
-  res.add(new RegExp(r"(abc|)ef"));
-  res.add(new RegExp(r"(a|b)c*d"));
-  res.add(new RegExp(r"(ab|ab*)bc"));
-  res.add(new RegExp(r"a([bc]*)c*"));
-  res.add(new RegExp(r"a([bc]*)(c*d)"));
-  res.add(new RegExp(r"a([bc]+)(c*d)"));
-  res.add(new RegExp(r"a([bc]*)(c+d)"));
-  res.add(new RegExp(r"a[bcd]*dcdcde"));
-  res.add(new RegExp(r"a[bcd]+dcdcde"));
-  res.add(new RegExp(r"(ab|a)b*c"));
-  res.add(new RegExp(r"((a)(b)c)(d)"));
-  res.add(new RegExp(r"[a-zA-Z_][a-zA-Z0-9_]*"));
-  res.add(new RegExp(r"^a(bc+|b[eh])g|.h$"));
-  res.add(new RegExp(r"(bc+d$|ef*g.|h?i(j|k))"));
-  res.add(new RegExp(r"((((((((((a))))))))))"));
-  res.add(new RegExp(r"(((((((((a)))))))))"));
-  res.add(new RegExp(r"multiple words of text"));
-  res.add(new RegExp(r"multiple words"));
-  res.add(new RegExp(r"(.*)c(.*)"));
-  res.add(new RegExp(r"\((.*), (.*)\)"));
-  res.add(new RegExp(r"[k]"));
-  res.add(new RegExp(r"abcd"));
-  res.add(new RegExp(r"a(bc)d"));
-  res.add(new RegExp(r"a[-]?c"));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r"ab*c", caseSensitive: false));
-  res.add(new RegExp(r"ab*bc", caseSensitive: false));
-  res.add(new RegExp(r"ab*?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab{0,}?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab+?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab+bc", caseSensitive: false));
-  res.add(new RegExp(r"ab{1,}bc", caseSensitive: false));
-  res.add(new RegExp(r"ab+bc", caseSensitive: false));
-  res.add(new RegExp(r"ab{1,}?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab{1,3}?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab{3,4}?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab{4,5}?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab??bc", caseSensitive: false));
-  res.add(new RegExp(r"ab{0,1}?bc", caseSensitive: false));
-  res.add(new RegExp(r"ab??bc", caseSensitive: false));
-  res.add(new RegExp(r"ab??c", caseSensitive: false));
-  res.add(new RegExp(r"ab{0,1}?c", caseSensitive: false));
-  res.add(new RegExp(r"^abc$", caseSensitive: false));
-  res.add(new RegExp(r"^abc", caseSensitive: false));
-  res.add(new RegExp(r"^abc$", caseSensitive: false));
-  res.add(new RegExp(r"abc$", caseSensitive: false));
-  res.add(new RegExp(r"^", caseSensitive: false));
-  res.add(new RegExp(r"$", caseSensitive: false));
-  res.add(new RegExp(r"a.c", caseSensitive: false));
-  res.add(new RegExp(r"a.*?c", caseSensitive: false));
-  res.add(new RegExp(r"a.*c", caseSensitive: false));
-  res.add(new RegExp(r"a[bc]d", caseSensitive: false));
-  res.add(new RegExp(r"a[b-d]e", caseSensitive: false));
-  res.add(new RegExp(r"a[b-d]", caseSensitive: false));
-  res.add(new RegExp(r"a[-b]", caseSensitive: false));
-  res.add(new RegExp(r"a[b-]", caseSensitive: false));
-  res.add(new RegExp(r"a]", caseSensitive: false));
-  res.add(new RegExp(r"a[]]b", caseSensitive: false));
-  res.add(new RegExp(r"a[^bc]d", caseSensitive: false));
-  res.add(new RegExp(r"a[^-b]c", caseSensitive: false));
-  res.add(new RegExp(r"a[^]b]c", caseSensitive: false));
-  res.add(new RegExp(r"ab|cd", caseSensitive: false));
-  res.add(new RegExp(r"()ef", caseSensitive: false));
-  res.add(new RegExp(r"$b", caseSensitive: false));
-  res.add(new RegExp(r"a\(b", caseSensitive: false));
-  res.add(new RegExp(r"a\\b", caseSensitive: false));
-  res.add(new RegExp(r"((a))", caseSensitive: false));
-  res.add(new RegExp(r"(a)b(c)", caseSensitive: false));
-  res.add(new RegExp(r"a+b+c", caseSensitive: false));
-  res.add(new RegExp(r"a{1,}b{1,}c", caseSensitive: false));
-  res.add(new RegExp(r"a.+?c", caseSensitive: false));
-  res.add(new RegExp(r"a.*?c", caseSensitive: false));
-  res.add(new RegExp(r"a.{0,5}?c", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b)*", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b){0,}", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b)+", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b){1,}", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b)?", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b){0,1}", caseSensitive: false));
-  res.add(new RegExp(r"(a+|b){0,1}?", caseSensitive: false));
-  res.add(new RegExp(r"[^ab]*", caseSensitive: false));
-  res.add(new RegExp(r"abc", caseSensitive: false));
-  res.add(new RegExp(r"a*", caseSensitive: false));
-  res.add(new RegExp(r"([abc])*d", caseSensitive: false));
-  res.add(new RegExp(r"([abc])*bcd", caseSensitive: false));
-  res.add(new RegExp(r"a|b|c|d|e", caseSensitive: false));
-  res.add(new RegExp(r"(a|b|c|d|e)f", caseSensitive: false));
-  res.add(new RegExp(r"abcd*efg", caseSensitive: false));
-  res.add(new RegExp(r"ab*", caseSensitive: false));
-  res.add(new RegExp(r"(ab|cd)e", caseSensitive: false));
-  res.add(new RegExp(r"[abhgefdc]ij", caseSensitive: false));
-  res.add(new RegExp(r"^(ab|cd)e", caseSensitive: false));
-  res.add(new RegExp(r"(abc|)ef", caseSensitive: false));
-  res.add(new RegExp(r"(a|b)c*d", caseSensitive: false));
-  res.add(new RegExp(r"(ab|ab*)bc", caseSensitive: false));
-  res.add(new RegExp(r"a([bc]*)c*", caseSensitive: false));
-  res.add(new RegExp(r"a([bc]*)(c*d)", caseSensitive: false));
-  res.add(new RegExp(r"a([bc]+)(c*d)", caseSensitive: false));
-  res.add(new RegExp(r"a([bc]*)(c+d)", caseSensitive: false));
-  res.add(new RegExp(r"a[bcd]*dcdcde", caseSensitive: false));
-  res.add(new RegExp(r"a[bcd]+dcdcde", caseSensitive: false));
-  res.add(new RegExp(r"(ab|a)b*c", caseSensitive: false));
-  res.add(new RegExp(r"((a)(b)c)(d)", caseSensitive: false));
-  res.add(new RegExp(r"[a-zA-Z_][a-zA-Z0-9_]*", caseSensitive: false));
-  res.add(new RegExp(r"^a(bc+|b[eh])g|.h$", caseSensitive: false));
-  res.add(new RegExp(r"(bc+d$|ef*g.|h?i(j|k))", caseSensitive: false));
-  res.add(new RegExp(r"((((((((((a))))))))))", caseSensitive: false));
-  res.add(new RegExp(r"(((((((((a)))))))))", caseSensitive: false));
-  res.add(new RegExp(r"(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))",
-      caseSensitive: false));
-  res.add(new RegExp(r"(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))",
-      caseSensitive: false));
-  res.add(new RegExp(r"multiple words of text", caseSensitive: false));
-  res.add(new RegExp(r"multiple words", caseSensitive: false));
-  res.add(new RegExp(r"(.*)c(.*)", caseSensitive: false));
-  res.add(new RegExp(r"\((.*), (.*)\)", caseSensitive: false));
-  res.add(new RegExp(r"[k]", caseSensitive: false));
-  res.add(new RegExp(r"abcd", caseSensitive: false));
-  res.add(new RegExp(r"a(bc)d", caseSensitive: false));
-  res.add(new RegExp(r"a[-]?c", caseSensitive: false));
-  res.add(new RegExp(r"a(?!b)."));
-  res.add(new RegExp(r"a(?=d)."));
-  res.add(new RegExp(r"a(?=c|d)."));
-  res.add(new RegExp(r"a(?:b|c|d)(.)"));
-  res.add(new RegExp(r"a(?:b|c|d)*(.)"));
-  res.add(new RegExp(r"a(?:b|c|d)+?(.)"));
-  res.add(new RegExp(r"a(?:b|c|d)+(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){2}(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){4,5}(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){4,5}?(.)"));
-  res.add(new RegExp(r"((foo)|(bar))*"));
-  res.add(new RegExp(r"a(?:b|c|d){6,7}(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){6,7}?(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){5,6}(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){5,6}?(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){5,7}(.)"));
-  res.add(new RegExp(r"a(?:b|c|d){5,7}?(.)"));
-  res.add(new RegExp(r"a(?:b|(c|e){1,2}?|d)+?(.)"));
-  res.add(new RegExp(r"^(.+)?B"));
-  res.add(new RegExp(r"^([^a-z])|(\^)$"));
-  res.add(new RegExp(r"^[<>]&"));
-  res.add(new RegExp(r"(?:(f)(o)(o)|(b)(a)(r))*"));
-  res.add(new RegExp(r"(?:..)*a"));
-  res.add(new RegExp(r"(?:..)*?a"));
-  res.add(new RegExp(r"^(){3,5}"));
-  res.add(new RegExp(r"^(a+)*ax"));
-  res.add(new RegExp(r"^((a|b)+)*ax"));
-  res.add(new RegExp(r"^((a|bc)+)*ax"));
-  res.add(new RegExp(r"(a|x)*ab"));
-  res.add(new RegExp(r"(a)*ab"));
-  res.add(new RegExp(r"(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))"));
-  res.add(new RegExp(
-      r"(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))"));
-  res.add(new RegExp(r"foo\w*\d{4}baz"));
-  res.add(new RegExp(r"x(~~)*(?:(?:F)?)?"));
-  res.add(new RegExp(r"^a{3}c"));
-  res.add(new RegExp(r"^a{3}c"));
-  res.add(new RegExp(r"^(?:a?b?)*$"));
-  res.add(new RegExp(r"^b"));
-  res.add(new RegExp(r"()^b"));
-  res.add(new RegExp(r"(\w+:)+"));
-  res.add(new RegExp(r"([\w:]+::)?(\w+)$"));
-  res.add(new RegExp(r"^[^bcd]*(c+)"));
-  res.add(new RegExp(r"(a*)b+"));
-  res.add(new RegExp(r"([\w:]+::)?(\w+)$"));
-  res.add(new RegExp(r"^[^bcd]*(c+)"));
-  res.add(new RegExp(r"(>a+)ab"));
-  res.add(new RegExp(r"([[:]+)"));
-  res.add(new RegExp(r"([[=]+)"));
-  res.add(new RegExp(r"([[.]+)"));
-  res.add(new RegExp(r"a\Z"));
-  res.add(new RegExp(r"b\Z"));
-  res.add(new RegExp(r"b\z"));
-  res.add(new RegExp(r"b\Z"));
-  res.add(new RegExp(r"b\z"));
-  res.add(new RegExp(r"((Z)+|A)*"));
-  res.add(new RegExp(r"(Z()|A)*"));
-  res.add(new RegExp(r"(Z(())|A)*"));
-  res.add(new RegExp(r"a*"));
-  res.add(new RegExp(r"^[\d-a]"));
-  res.add(new RegExp(r"[[:space:]]+"));
-  res.add(new RegExp(r"[[:blank:]]+"));
-  res.add(new RegExp(r"[\s]+"));
-  res.add(new RegExp(r"\s+"));
-  res.add(new RegExp(r"ab"));
-  res.add(new RegExp(r"(?!\A)x", multiLine: true));
-  res.add(new RegExp(r"(?!^)x", multiLine: true));
-  res.add(new RegExp(r"abc\Qabc\Eabc"));
-  res.add(new RegExp(r"abc\Qabc\Eabc"));
-  res.add(new RegExp(r"abc\Qliteral\E"));
-  res.add(new RegExp(r"abc\Qliteral"));
-  res.add(new RegExp(r"abc\Qliteral\E"));
-  res.add(new RegExp(r"abc\Qliteral\E"));
-  res.add(new RegExp(r"\Qabc\$xyz\E"));
-  res.add(new RegExp(r"\Qabc\E\$\Qxyz\E"));
-  res.add(new RegExp(r"\Gabc"));
-  res.add(new RegExp(r"\Gabc."));
-  res.add(new RegExp(r"abc."));
-  res.add(new RegExp(r"[z\Qa-d]\E]"));
-  res.add(new RegExp(r"[\z\C]"));
-  res.add(new RegExp(r"\M"));
-  res.add(new RegExp(r"(a+)*b"));
-  res.add(new RegExp(r"line\nbreak"));
-  res.add(new RegExp(r"line\nbreak"));
-  res.add(new RegExp(r"line\nbreak", multiLine: true));
-  res.add(new RegExp(r"1234"));
-  res.add(new RegExp(r"1234"));
-  res.add(new RegExp(r"^", multiLine: true));
-  res.add(new RegExp(r"Content-Type\x3A[^\r\n]{6,}"));
-  res.add(new RegExp(r"Content-Type\x3A[^\r\n]{6,}z"));
-  res.add(new RegExp(r"Content-Type\x3A[^a]{6,}"));
-  res.add(new RegExp(r"Content-Type\x3A[^a]{6,}z"));
-  res.add(new RegExp(r"^abc", multiLine: true));
-  res.add(new RegExp(r"abc$", multiLine: true));
-  res.add(new RegExp(r"^abc", multiLine: true));
-  res.add(new RegExp(r"^abc", multiLine: true));
-  res.add(new RegExp(r"^abc", multiLine: true));
-  res.add(new RegExp(r".*"));
-  res.add(new RegExp(r"\w+(.)(.)?def"));
-  res.add(new RegExp(r"^\w+=.*(\\\n.*)*"));
-  res.add(new RegExp(r"^(a()*)*"));
-  res.add(new RegExp(r"^(?:a(?:(?:))*)*"));
-  res.add(new RegExp(r"^(a()+)+"));
-  res.add(new RegExp(r"^(?:a(?:(?:))+)+"));
-  res.add(new RegExp(r"(a|)*\d"));
-  res.add(new RegExp(r"(?:a|)*\d"));
-  res.add(new RegExp(r"^a.b"));
-  res.add(new RegExp(r"^abc.", multiLine: true));
-  res.add(new RegExp(r"abc.$", multiLine: true));
-  res.add(new RegExp(r"^a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"^a\R*b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R+b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R{1,3}b", caseSensitive: false));
-  res.add(new RegExp(r"^a[\R]b", caseSensitive: false));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r".+foo"));
-  res.add(new RegExp(r"^$", multiLine: true));
-  res.add(new RegExp(r"^X", multiLine: true));
-  res.add(new RegExp(r"\H\h\V\v"));
-  res.add(new RegExp(r"\H*\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"\H{3,4}"));
-  res.add(new RegExp(r".\h{3,4}."));
-  res.add(new RegExp(r"\h*X\h?\H+Y\H?Z"));
-  res.add(new RegExp(r"\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c"));
-  res.add(new RegExp(r".+A"));
-  res.add(new RegExp(r"\nA"));
-  res.add(new RegExp(r"[\r\n]A"));
-  res.add(new RegExp(r"(\r|\n)A"));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r"a\R{2,4}b", caseSensitive: false));
-  res.add(new RegExp(r"a\R{2,4}b", caseSensitive: false));
-  res.add(new RegExp(r"a(?!)|\wbc"));
-  res.add(new RegExp(r"a[]b"));
-  res.add(new RegExp(r"a[]+b"));
-  res.add(new RegExp(r"a[^]b"));
-  res.add(new RegExp(r"a[^]+b"));
-  res.add(new RegExp(r" End of testinput7 "));
-  res.add(new RegExp(r"\bX"));
-  res.add(new RegExp(r"\BX"));
-  res.add(new RegExp(r"X\b"));
-  res.add(new RegExp(r"X\B"));
-  res.add(new RegExp(r"[^a]"));
-  res.add(new RegExp(r"abc"));
-  res.add(new RegExp(r"a.b"));
-  res.add(new RegExp(r"a(.{3})b"));
-  res.add(new RegExp(r"a(.*?)(.)"));
-  res.add(new RegExp(r"a(.*?)(.)"));
-  res.add(new RegExp(r"a(.*)(.)"));
-  res.add(new RegExp(r"a(.*)(.)"));
-  res.add(new RegExp(r"a(.)(.)"));
-  res.add(new RegExp(r"a(.)(.)"));
-  res.add(new RegExp(r"a(.?)(.)"));
-  res.add(new RegExp(r"a(.?)(.)"));
-  res.add(new RegExp(r"a(.??)(.)"));
-  res.add(new RegExp(r"a(.??)(.)"));
-  res.add(new RegExp(r"a(.{3})b"));
-  res.add(new RegExp(r"a(.{3,})b"));
-  res.add(new RegExp(r"a(.{3,}?)b"));
-  res.add(new RegExp(r"a(.{3,5})b"));
-  res.add(new RegExp(r"a(.{3,5}?)b"));
-  res.add(new RegExp(r"[^a]+"));
-  res.add(new RegExp(r"^[^a]{2}"));
-  res.add(new RegExp(r"^[^a]{2,}"));
-  res.add(new RegExp(r"^[^a]{2,}?"));
-  res.add(new RegExp(r"[^a]+", caseSensitive: false));
-  res.add(new RegExp(r"^[^a]{2}", caseSensitive: false));
-  res.add(new RegExp(r"^[^a]{2,}", caseSensitive: false));
-  res.add(new RegExp(r"^[^a]{2,}?", caseSensitive: false));
-  res.add(new RegExp(r"\D*"));
-  res.add(new RegExp(r"\D*"));
-  res.add(new RegExp(r"\D"));
-  res.add(new RegExp(r">\S"));
-  res.add(new RegExp(r"\d"));
-  res.add(new RegExp(r"\s"));
-  res.add(new RegExp(r"\D+"));
-  res.add(new RegExp(r"\D{2,3}"));
-  res.add(new RegExp(r"\D{2,3}?"));
-  res.add(new RegExp(r"\d+"));
-  res.add(new RegExp(r"\d{2,3}"));
-  res.add(new RegExp(r"\d{2,3}?"));
-  res.add(new RegExp(r"\S+"));
-  res.add(new RegExp(r"\S{2,3}"));
-  res.add(new RegExp(r"\S{2,3}?"));
-  res.add(new RegExp(r">\s+<"));
-  res.add(new RegExp(r">\s{2,3}<"));
-  res.add(new RegExp(r">\s{2,3}?<"));
-  res.add(new RegExp(r"\w+"));
-  res.add(new RegExp(r"\w{2,3}"));
-  res.add(new RegExp(r"\w{2,3}?"));
-  res.add(new RegExp(r"\W+"));
-  res.add(new RegExp(r"\W{2,3}"));
-  res.add(new RegExp(r"\W{2,3}?"));
-  res.add(new RegExp(r"[\xFF]"));
-  res.add(new RegExp(r"[\xff]"));
-  res.add(new RegExp(r"[^\xFF]"));
-  res.add(new RegExp(r"[^\xff]"));
-  res.add(new RegExp(r"^[ac]*b"));
-  res.add(new RegExp(r"^[^x]*b", caseSensitive: false));
-  res.add(new RegExp(r"^[^x]*b"));
-  res.add(new RegExp(r"^\d*b"));
-  res.add(new RegExp(r"(|a)"));
-  res.add(new RegExp(r"^abc.", multiLine: true));
-  res.add(new RegExp(r"abc.$", multiLine: true));
-  res.add(new RegExp(r"^a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"^a\R*b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R+b", caseSensitive: false));
-  res.add(new RegExp(r"^a\R{1,3}b", caseSensitive: false));
-  res.add(new RegExp(r"\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"\V?\v{3,4}"));
-  res.add(new RegExp(r"\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"\V?\v{3,4}"));
-  res.add(new RegExp(r"\H\h\V\v"));
-  res.add(new RegExp(r"\H*\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"\H\h\V\v"));
-  res.add(new RegExp(r"\H*\h+\V?\v{3,4}"));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\Rb", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r"a\R?b", caseSensitive: false));
-  res.add(new RegExp(r"X"));
-  res.add(new RegExp(r" End of testinput 8 "));
-  res.add(new RegExp(r"\pL\P{Nd}"));
-  res.add(new RegExp(r"\X."));
-  res.add(new RegExp(r"\X\X"));
-  res.add(new RegExp(r"^\pL+"));
-  res.add(new RegExp(r"^\PL+"));
-  res.add(new RegExp(r"^\X+"));
-  res.add(new RegExp(r"\X?abc"));
-  res.add(new RegExp(r"^\X?abc"));
-  res.add(new RegExp(r"\X*abc"));
-  res.add(new RegExp(r"^\X*abc"));
-  res.add(new RegExp(r"^\pL?=."));
-  res.add(new RegExp(r"^\pL*=."));
-  res.add(new RegExp(r"^\X{2,3}X"));
-  res.add(new RegExp(r"^\pC\pL\pM\pN\pP\pS\pZ<"));
-  res.add(new RegExp(r"^\PC"));
-  res.add(new RegExp(r"^\PL"));
-  res.add(new RegExp(r"^\PM"));
-  res.add(new RegExp(r"^\PN"));
-  res.add(new RegExp(r"^\PP"));
-  res.add(new RegExp(r"^\PS"));
-  res.add(new RegExp(r"^\PZ"));
-  res.add(new RegExp(r"^\p{Cc}"));
-  res.add(new RegExp(r"^\p{Cf}"));
-  res.add(new RegExp(r"^\p{Cn}"));
-  res.add(new RegExp(r"^\p{Co}"));
-  res.add(new RegExp(r"^\p{Cs}"));
-  res.add(new RegExp(r"^\p{Ll}"));
-  res.add(new RegExp(r"^\p{Lm}"));
-  res.add(new RegExp(r"^\p{Lo}"));
-  res.add(new RegExp(r"^\p{Lt}"));
-  res.add(new RegExp(r"^\p{Lu}"));
-  res.add(new RegExp(r"^\p{Mc}"));
-  res.add(new RegExp(r"^\p{Me}"));
-  res.add(new RegExp(r"^\p{Mn}"));
-  res.add(new RegExp(r"^\p{Nl}"));
-  res.add(new RegExp(r"^\p{No}"));
-  res.add(new RegExp(r"^\p{Pc}"));
-  res.add(new RegExp(r"^\p{Pd}"));
-  res.add(new RegExp(r"^\p{Pe}"));
-  res.add(new RegExp(r"^\p{Pf}"));
-  res.add(new RegExp(r"^\p{Pi}"));
-  res.add(new RegExp(r"^\p{Po}"));
-  res.add(new RegExp(r"^\p{Ps}"));
-  res.add(new RegExp(r"^\p{Sk}"));
-  res.add(new RegExp(r"^\p{So}"));
-  res.add(new RegExp(r"^\p{Zl}"));
-  res.add(new RegExp(r"^\p{Zp}"));
-  res.add(new RegExp(r"^\p{Zs}"));
-  res.add(new RegExp(r"\p{Nd}{2,}(..)"));
-  res.add(new RegExp(r"\p{Nd}{2,}?(..)"));
-  res.add(new RegExp(r"\p{Nd}*(..)"));
-  res.add(new RegExp(r"\p{Nd}*?(..)"));
-  res.add(new RegExp(r"\p{Nd}{2}(..)"));
-  res.add(new RegExp(r"\p{Nd}{2,3}(..)"));
-  res.add(new RegExp(r"\p{Nd}{2,3}?(..)"));
-  res.add(new RegExp(r"\p{Nd}?(..)"));
-  res.add(new RegExp(r"\p{Nd}??(..)"));
-  res.add(new RegExp(r"\p{Lu}", caseSensitive: false));
-  res.add(new RegExp(r"\p{^Lu}", caseSensitive: false));
-  res.add(new RegExp(r"\P{Lu}", caseSensitive: false));
-  res.add(new RegExp(r"[\p{Nd}]"));
-  res.add(new RegExp(r"[\P{Nd}]+"));
-  res.add(new RegExp(r"\D+"));
-  res.add(new RegExp(r"[\D]+"));
-  res.add(new RegExp(r"[\P{Nd}]+"));
-  res.add(new RegExp(r"[\D\P{Nd}]+"));
-  res.add(new RegExp(r"\pL"));
-  res.add(new RegExp(r"\pL", caseSensitive: false));
-  res.add(new RegExp(r"\p{Lu}"));
-  res.add(new RegExp(r"\p{Lu}", caseSensitive: false));
-  res.add(new RegExp(r"\p{Ll}"));
-  res.add(new RegExp(r"\p{Ll}", caseSensitive: false));
-  res.add(new RegExp(r"^\X"));
-  res.add(new RegExp(r"^[\X]"));
-  res.add(new RegExp(r"^(\X*)C"));
-  res.add(new RegExp(r"^(\X*?)C"));
-  res.add(new RegExp(r"^(\X*)(.)"));
-  res.add(new RegExp(r"^(\X*?)(.)"));
-  res.add(new RegExp(r"^\X(.)"));
-  res.add(new RegExp(r"^\X{2,3}(.)"));
-  res.add(new RegExp(r"^\X{2,3}?(.)"));
-  res.add(new RegExp(r"^\pN{2,3}X"));
-  res.add(new RegExp(r"^[\p{Arabic}]"));
-  res.add(new RegExp(r"^[\P{Yi}]"));
-  res.add(new RegExp(r"^\p{Any}X"));
-  res.add(new RegExp(r"^\P{Any}X"));
-  res.add(new RegExp(r"^\p{Any}?X"));
-  res.add(new RegExp(r"^\P{Any}?X"));
-  res.add(new RegExp(r"^\p{Any}*X"));
-  res.add(new RegExp(r"^\P{Any}*X"));
-  res.add(new RegExp(r"^[\p{Any}]X"));
-  res.add(new RegExp(r"^[\P{Any}]X"));
-  res.add(new RegExp(r"^[\p{Any}]?X"));
-  res.add(new RegExp(r"^[\P{Any}]?X"));
-  res.add(new RegExp(r"^[\p{Any}]+X"));
-  res.add(new RegExp(r"^[\P{Any}]+X"));
-  res.add(new RegExp(r"^[\p{Any}]*X"));
-  res.add(new RegExp(r"^[\P{Any}]*X"));
-  res.add(new RegExp(r"^\p{Any}{3,5}?"));
-  res.add(new RegExp(r"^\p{Any}{3,5}"));
-  res.add(new RegExp(r"^\P{Any}{3,5}?"));
-  res.add(new RegExp(r"^\p{L&}X"));
-  res.add(new RegExp(r"^[\p{L&}]X"));
-  res.add(new RegExp(r"^[\p{L&}]+X"));
-  res.add(new RegExp(r"^[\p{L&}]+?X"));
-  res.add(new RegExp(r"^\P{L&}X"));
-  res.add(new RegExp(r"^[\P{L&}]X"));
-  res.add(new RegExp(r"Check property support in non-UTF-8 mode"));
-  res.add(new RegExp(r"\p{L}{4}"));
-  res.add(new RegExp(
-      r"\p{Carian}\p{Cham}\p{Kayah_Li}\p{Lepcha}\p{Lycian}\p{Lydian}\p{Ol_Chiki}\p{Rejang}\p{Saurashtra}\p{Sundanese}\p{Vai}"));
-  res.add(new RegExp(r" End "));
-  res.add(new RegExp(r"^[[:alnum:]]", multiLine: true));
-  res.add(new RegExp(r"a", multiLine: true, caseSensitive: false));
-  res.add(new RegExp(r"abcde", multiLine: true));
-  res.add(new RegExp(r"\x80", multiLine: true));
-  res.add(new RegExp(r"\xff", multiLine: true));
-  res.add(new RegExp(r"[\p{L}]", multiLine: true));
-  res.add(new RegExp(r"[\p{^L}]", multiLine: true));
-  res.add(new RegExp(r"[\P{L}]", multiLine: true));
-  res.add(new RegExp(r"[\P{^L}]", multiLine: true));
-  res.add(new RegExp(r"[\p{Nd}]", multiLine: true));
-  res.add(new RegExp(r"[a]", multiLine: true));
-  res.add(new RegExp(r"[a]", multiLine: true));
-  res.add(new RegExp(r"[\xaa]", multiLine: true));
-  res.add(new RegExp(r"[\xaa]", multiLine: true));
-  res.add(new RegExp(r"[^a]", multiLine: true));
-  res.add(new RegExp(r"[^a]", multiLine: true));
-  res.add(new RegExp(r"[^\xaa]", multiLine: true));
-  res.add(new RegExp(r"[^\xaa]", multiLine: true));
-  res.add(new RegExp(r" End of testinput10 "));
-  assertToStringEquals("abc", res[1].firstMatch("abc"), 0);
-  assertToStringEquals("abc", res[1].firstMatch("defabc"), 1);
-  assertToStringEquals("abc", res[1].firstMatch("Aabc"), 2);
-  assertNull(res[1].firstMatch("*** Failers"), 3);
-  assertToStringEquals("abc", res[1].firstMatch("Adefabc"), 4);
-  assertToStringEquals("ABC", res[1].firstMatch("ABC"), 5);
-  assertToStringEquals("abc", res[2].firstMatch("abc"), 6);
-  assertNull(res[2].firstMatch("Aabc"), 7);
-  assertNull(res[2].firstMatch("*** Failers"), 8);
-  assertNull(res[2].firstMatch("defabc"), 9);
-  assertNull(res[2].firstMatch("Adefabc"), 10);
-  assertToStringEquals("abc", res[7].firstMatch("abc"), 11);
-  assertNull(res[7].firstMatch("*** Failers"), 12);
-  assertNull(res[7].firstMatch("def\nabc"), 13);
-  assertThrows(() => new RegExp(r"x{5,4}"));
-  assertThrows(() => new RegExp(r"[abcd"));
-  assertThrows(() => new RegExp(r"[z-a]"));
-  assertThrows(() => new RegExp(r"^*"));
-  assertThrows(() => new RegExp(r"(abc"));
-  assertThrows(() => new RegExp(r"(?# abc"));
-  assertToStringEquals(
-      "cat", res[11].firstMatch("this sentence eventually mentions a cat"), 20);
-  assertToStringEquals(
-      "elephant",
-      res[11].firstMatch(
-          "this sentences rambles on and on for a while and then reaches elephant"),
-      21);
-  assertToStringEquals(
-      "cat", res[12].firstMatch("this sentence eventually mentions a cat"), 22);
-  assertToStringEquals(
-      "elephant",
-      res[12].firstMatch(
-          "this sentences rambles on and on for a while and then reaches elephant"),
-      23);
-  assertToStringEquals("CAT",
-      res[13].firstMatch("this sentence eventually mentions a CAT cat"), 24);
-  assertToStringEquals(
-      "elephant",
-      res[13].firstMatch(
-          "this sentences rambles on and on for a while to elephant ElePhant"),
-      25);
-  assertThrows(() => new RegExp(r"{4,5}abc"));
-  assertToStringEquals("abcb,a,b,c", res[18].firstMatch("abcb"), 27);
-  assertToStringEquals("abcb,a,b,c", res[18].firstMatch("O0abcb"), 28);
-  assertToStringEquals("abcb,a,b,c", res[18].firstMatch("O3abcb"), 29);
-  assertToStringEquals("abcb,a,b,c", res[18].firstMatch("O6abcb"), 30);
-  assertToStringEquals("abcb,a,b,c", res[18].firstMatch("O9abcb"), 31);
-  assertToStringEquals("abcb,a,b,c", res[18].firstMatch("O12abcb"), 32);
-  assertToStringEquals("abc,a,,", res[19].firstMatch("abc"), 33);
-  assertToStringEquals("abc,a,,", res[19].firstMatch("O0abc"), 34);
-  assertToStringEquals("abc,a,,", res[19].firstMatch("O3abc"), 35);
-  assertToStringEquals("abc,a,,", res[19].firstMatch("O6abc"), 36);
-  assertToStringEquals("aba,,a,b", res[19].firstMatch("aba"), 37);
-  assertToStringEquals("aba,,a,b", res[19].firstMatch("O0aba"), 38);
-  assertToStringEquals("aba,,a,b", res[19].firstMatch("O3aba"), 39);
-  assertToStringEquals("aba,,a,b", res[19].firstMatch("O6aba"), 40);
-  assertToStringEquals("aba,,a,b", res[19].firstMatch("O9aba"), 41);
-  assertToStringEquals("aba,,a,b", res[19].firstMatch("O12aba"), 42);
-  assertToStringEquals("abc", res[20].firstMatch("abc"), 43);
-  assertNull(res[20].firstMatch("*** Failers"), 44);
-  assertNull(res[20].firstMatch("abc\n"), 45);
-  assertNull(res[20].firstMatch("abc\ndef"), 46);
-  assertToStringEquals(
-      "the quick brown fox", res[22].firstMatch("the quick brown fox"), 47);
-  assertToStringEquals("the quick brown fox",
-      res[22].firstMatch("this is a line with the quick brown fox"), 48);
-  assertToStringEquals("abc", res[23].firstMatch("abcdef"), 49);
-  assertToStringEquals("abc", res[23].firstMatch("abcdefB"), 50);
-  assertToStringEquals("defabc,abc,abc,", res[24].firstMatch("defabc"), 51);
-  assertToStringEquals("Zdefabc,abc,abc,", res[24].firstMatch("Zdefabc"), 52);
-  assertToStringEquals("abc", res[25].firstMatch("abc"), 53);
-  assertNull(res[25].firstMatch("*** Failers"), 54);
-  assertToStringEquals("abc", res[26].firstMatch("abcdef"), 55);
-  assertToStringEquals("abc", res[26].firstMatch("abcdefB"), 56);
-  assertToStringEquals("defabc,abc,abc,", res[27].firstMatch("defabc"), 57);
-  assertToStringEquals("Zdefabc,abc,abc,", res[27].firstMatch("Zdefabc"), 58);
-  assertToStringEquals(
-      "the quick brown fox", res[28].firstMatch("the quick brown fox"), 59);
-  assertNull(res[28].firstMatch("*** Failers"), 60);
-  assertToStringEquals(
-      "The Quick Brown Fox", res[28].firstMatch("The Quick Brown Fox"), 61);
-  assertToStringEquals(
-      "the quick brown fox", res[29].firstMatch("the quick brown fox"), 62);
-  assertToStringEquals(
-      "The Quick Brown Fox", res[29].firstMatch("The Quick Brown Fox"), 63);
-  assertNull(res[30].firstMatch("*** Failers"), 64);
-  assertNull(res[30].firstMatch("abc\ndef"), 65);
-  assertToStringEquals("abc", res[31].firstMatch("abc"), 66);
-  assertNull(res[31].firstMatch("abc\n"), 67);
-  assertToStringEquals("abc,abc", res[33].firstMatch("abc"), 68);
-  assertThrows(() => new RegExp(r")"));
-  assertToStringEquals("-pr", res[35].firstMatch("co-processors, and for"), 70);
-  assertToStringEquals(
-      "<def>ghi<klm>", res[36].firstMatch("abc<def>ghi<klm>nop"), 71);
-  assertToStringEquals("<def>", res[37].firstMatch("abc<def>ghi<klm>nop"), 72);
-  assertToStringEquals("<def>", res[37].firstMatch("abc<def>ghi<klm>nop"), 73);
-  assertNull(res[37].firstMatch("abc========def"), 74);
-  assertNull(res[37].firstMatch("foo"), 75);
-  assertNull(res[37].firstMatch("catfoo"), 76);
-  assertNull(res[37].firstMatch("*** Failers"), 77);
-  assertNull(res[37].firstMatch("the barfoo"), 78);
-  assertNull(res[37].firstMatch("and cattlefoo"), 79);
-  assertToStringEquals("a", res[40].firstMatch("a"), 80);
-  assertNull(res[40].firstMatch("a\n"), 81);
-  assertNull(res[40].firstMatch("*** Failers"), 82);
-  assertToStringEquals("a", res[40].firstMatch("Za"), 83);
-  assertNull(res[40].firstMatch("Za\n"), 84);
-  assertToStringEquals("a", res[41].firstMatch("a"), 85);
-  assertToStringEquals("a", res[41].firstMatch("a\n"), 86);
-  assertToStringEquals("a", res[41].firstMatch("Za\n"), 87);
-  assertNull(res[41].firstMatch("*** Failers"), 88);
-  assertToStringEquals("a", res[41].firstMatch("Za"), 89);
-  assertToStringEquals("b", res[44].firstMatch("foo\nbarbar"), 90);
-  assertToStringEquals("a", res[44].firstMatch("***Failers"), 91);
-  assertToStringEquals("b", res[44].firstMatch("rhubarb"), 92);
-  assertToStringEquals("b", res[44].firstMatch("barbell"), 93);
-  assertToStringEquals("a", res[44].firstMatch("abc\nbarton"), 94);
-  assertToStringEquals("b", res[44].firstMatch("foo\nbarbar"), 95);
-  assertToStringEquals("a", res[44].firstMatch("***Failers"), 96);
-  assertToStringEquals("b", res[44].firstMatch("rhubarb"), 97);
-  assertToStringEquals("b", res[44].firstMatch("barbell"), 98);
-  assertToStringEquals("a", res[44].firstMatch("abc\nbarton"), 99);
-  assertToStringEquals("a", res[44].firstMatch("abc"), 100);
-  assertToStringEquals("a", res[44].firstMatch("def\nabc"), 101);
-  assertToStringEquals("a", res[44].firstMatch("*** Failers"), 102);
-  assertToStringEquals("a", res[44].firstMatch("defabc"), 103);
-  assertNull(res[45].firstMatch("the bullock-cart"), 104);
-  assertNull(res[45].firstMatch("a donkey-cart race"), 105);
-  assertNull(res[45].firstMatch("*** Failers"), 106);
-  assertNull(res[45].firstMatch("cart"), 107);
-  assertNull(res[45].firstMatch("horse-and-cart"), 108);
-  assertNull(res[45].firstMatch("alphabetabcd"), 109);
-  assertNull(res[45].firstMatch("endingxyz"), 110);
-  assertNull(res[45].firstMatch("abxyZZ"), 111);
-  assertNull(res[45].firstMatch("abXyZZ"), 112);
-  assertNull(res[45].firstMatch("ZZZ"), 113);
-  assertNull(res[45].firstMatch("zZZ"), 114);
-  assertNull(res[45].firstMatch("bZZ"), 115);
-  assertNull(res[45].firstMatch("BZZ"), 116);
-  assertNull(res[45].firstMatch("*** Failers"), 117);
-  assertNull(res[45].firstMatch("ZZ"), 118);
-  assertNull(res[45].firstMatch("abXYZZ"), 119);
-  assertNull(res[45].firstMatch("zzz"), 120);
-  assertNull(res[45].firstMatch("bzz"), 121);
-  assertNull(res[45].firstMatch("bar"), 122);
-  assertNull(res[45].firstMatch("foobbar"), 123);
-  assertNull(res[45].firstMatch("*** Failers"), 124);
-  assertNull(res[45].firstMatch("fooabar"), 125);
-  assertNull(res[46].firstMatch("*** Failers"), 126);
-  assertNull(res[46].firstMatch("a"), 127);
-  assertNull(res[48].firstMatch("aaaaaa"), 128);
-  assertThrows(() => new RegExp(r"a[b-a]"), 129);
-  assertThrows(() => new RegExp(r"a["), 130);
-  assertThrows(() => new RegExp(r"*a"), 131);
-  assertThrows(() => new RegExp(r"abc)"), 132);
-  assertThrows(() => new RegExp(r"(abc"), 133);
-  assertThrows(() => new RegExp(r"a**"), 134);
-  assertThrows(() => new RegExp(r")("), 135);
-  assertThrows(() => new RegExp(r"a[b-a]"), 136);
-  assertThrows(() => new RegExp(r"a["), 137);
-  assertThrows(() => new RegExp(r"*a"), 138);
-  assertThrows(() => new RegExp(r"abc)"), 139);
-  assertThrows(() => new RegExp(r"(abc"), 140);
-  assertThrows(() => new RegExp(r"a**"), 141);
-  assertThrows(() => new RegExp(r")("), 142);
-  assertThrows(() => new RegExp(r":(?:"), 143);
-  assertThrows(() => new RegExp(r"a(?{)b"), 144);
-  assertThrows(() => new RegExp(r"a(?{{})b"), 145);
-  assertThrows(() => new RegExp(r"a(?{}})b"), 146);
-  assertThrows(() => new RegExp(r'a(?{\"{\"})b'), 147);
-  assertThrows(() => new RegExp(r'a(?{\"{\"}})b'), 148);
-  assertThrows(() => new RegExp(r"[a[:xyz:"), 149);
-  assertThrows(() => new RegExp(r"a{37,17}"), 150);
-  assertToStringEquals("abcd,a,d", res[58].firstMatch("abcd"), 151);
-  assertToStringEquals("abcd,a,d", res[58].firstMatch("abcdC2"), 152);
-  assertToStringEquals("abcd,a,d", res[58].firstMatch("abcdC5"), 153);
-  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst",
-      res[59].firstMatch("abcdefghijklmnopqrstuvwxyz"), 154);
-  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst",
-      res[59].firstMatch("abcdefghijklmnopqrstuvwxyzC1"), 155);
-  assertToStringEquals("abcdefghijklmnopqrst,abcdefghijklmnopqrst",
-      res[59].firstMatch("abcdefghijklmnopqrstuvwxyzG1"), 156);
-  assertToStringEquals("abcdefghijklmno,abcdefghijklmno",
-      res[60].firstMatch("abcdefghijklmnopqrstuvwxyz"), 157);
-  assertToStringEquals("abcdefghijklmno,abcdefghijklmno",
-      res[60].firstMatch("abcdefghijklmnopqrstuvwxyzC1G1"), 158);
-  assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop",
-      res[61].firstMatch("abcdefghijklmnopqrstuvwxyz"), 159);
-  assertToStringEquals("abcdefghijklmnop,abcdefghijklmnop",
-      res[61].firstMatch("abcdefghijklmnopqrstuvwxyzC1G1L"), 160);
-  assertToStringEquals("adef,a,,f", res[62].firstMatch("adefG1G2G3G4L"), 161);
-  assertToStringEquals(
-      "bcdef,bc,bc,f", res[62].firstMatch("bcdefG1G2G3G4L"), 162);
-  assertToStringEquals("adef,a,,f", res[62].firstMatch("adefghijkC0"), 163);
-  assertToStringEquals("abc\x00def", res[63].firstMatch("abc\x00defLC0"), 164);
-  assertToStringEquals("iss", res[69].firstMatch("Mississippi"), 165);
-  assertToStringEquals("iss", res[70].firstMatch("Mississippi"), 166);
-  assertToStringEquals("iss", res[71].firstMatch("Mississippi"), 167);
-  assertToStringEquals("iss", res[72].firstMatch("Mississippi"), 168);
-  assertToStringEquals("iss", res[73].firstMatch("Mississippi"), 169);
-  assertNull(res[73].firstMatch("*** Failers"), 170);
-  assertToStringEquals("iss", res[73].firstMatch("MississippiA"), 171);
-  assertToStringEquals("iss", res[73].firstMatch("Mississippi"), 172);
-  assertToStringEquals("iss", res[74].firstMatch("ississippi"), 174);
-  assertToStringEquals("abciss", res[75].firstMatch("abciss\nxyzisspqr"), 175);
-  assertToStringEquals("Mis", res[76].firstMatch("Mississippi"), 176);
-  assertToStringEquals("Mis", res[77].firstMatch("Mississippi"), 180);
-  assertToStringEquals("ab\n", res[78].firstMatch("ab\nab\ncd"), 181);
-  assertToStringEquals("ab\n", res[79].firstMatch("ab\nab\ncd"), 182);
-  assertToStringEquals("a", res[115].firstMatch("a"), 183);
-  assertToStringEquals("b", res[115].firstMatch("b"), 184);
-  assertToStringEquals("ab", res[115].firstMatch("ab"), 185);
-  assertToStringEquals("", res[115].firstMatch("\\"), 186);
-  assertToStringEquals("", res[115].firstMatch("*** Failers"), 187);
-  assertToStringEquals("", res[115].firstMatch("N"), 188);
-  assertToStringEquals("", res[116].firstMatch("abcd"), 189);
-  assertToStringEquals("", res[116].firstMatch("-abc"), 190);
-  assertToStringEquals("", res[116].firstMatch("Nab-c"), 191);
-  assertToStringEquals("", res[116].firstMatch("*** Failers"), 192);
-  assertToStringEquals("", res[116].firstMatch("Nabc"), 193);
-  assertToStringEquals(
-      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzz"), 194);
-  assertToStringEquals(
-      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO0"), 195);
-  assertToStringEquals(
-      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO1"), 196);
-  assertToStringEquals(
-      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO2"), 197);
-  assertToStringEquals(
-      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO3"), 198);
-  assertToStringEquals(
-      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO4"), 199);
-  assertToStringEquals(
-      "aaaabbbbzz,bbbb,z,z", res[117].firstMatch("aaaabbbbzzzzO5"), 200);
-  assertToStringEquals("(abcd", res[118].firstMatch("(abcd)"), 201);
-  assertToStringEquals("(abcd", res[118].firstMatch("(abcd)xyz"), 202);
-  assertNull(res[118].firstMatch("xyz(abcd)"), 203);
-  assertNull(res[118].firstMatch("(ab(xy)cd)pqr"), 204);
-  assertNull(res[118].firstMatch("(ab(xycd)pqr"), 205);
-  assertNull(res[118].firstMatch("() abc ()"), 206);
-  assertNull(res[118].firstMatch("12(abcde(fsh)xyz(foo(bar))lmno)89"), 207);
-  assertNull(res[118].firstMatch("*** Failers"), 208);
-  assertToStringEquals("abcd", res[118].firstMatch("abcd"), 209);
-  assertToStringEquals("abcd", res[118].firstMatch("abcd)"), 210);
-  assertToStringEquals("(abcd", res[118].firstMatch("(abcd"), 211);
-  assertNull(res[118].firstMatch("(ab(xy)cd)pqr"), 212);
-  assertNull(res[118].firstMatch("1(abcd)(x(y)z)pqr"), 213);
-  assertToStringEquals("(abcd", res[118].firstMatch("(abcd)"), 214);
-  assertNull(res[118].firstMatch("(ab(xy)cd)"), 215);
-  assertNull(res[118].firstMatch("(a(b(c)d)e)"), 216);
-  assertNull(res[118].firstMatch("((ab))"), 217);
-  assertNull(res[118].firstMatch("*** Failers"), 218);
-  assertNull(res[118].firstMatch("()"), 219);
-  assertNull(res[118].firstMatch("()"), 220);
-  assertNull(res[118].firstMatch("12(abcde(fsh)xyz(foo(bar))lmno)89"), 221);
-  assertNull(res[118].firstMatch("(ab(xy)cd)"), 222);
-  assertNull(res[118].firstMatch("(ab(xy)cd)"), 223);
-  assertNull(res[118].firstMatch("(ab(xy)cd)"), 224);
-  assertNull(res[118].firstMatch("(123ab(xy)cd)"), 225);
-  assertNull(res[118].firstMatch("(ab(xy)cd)"), 226);
-  assertNull(res[118].firstMatch("(123ab(xy)cd)"), 227);
-  assertNull(res[118].firstMatch("(ab(xy)cd)"), 228);
-  assertToStringEquals(
-      "(abcd", res[118].firstMatch("(abcd(xyz<p>qrs)123)"), 229);
-  assertNull(res[118].firstMatch("(ab(cd)ef)"), 230);
-  assertNull(res[118].firstMatch("(ab(cd(ef)gh)ij)"), 231);
-  assertNull(res[146].firstMatch("A"), 232);
-  assertNull(res[146].firstMatch("a"), 233);
-  assertNull(res[147].firstMatch("A"), 234);
-  assertNull(res[147].firstMatch("a"), 235);
-  assertNull(res[147].firstMatch("ab"), 236);
-  assertNull(res[147].firstMatch("aB"), 237);
-  assertNull(res[147].firstMatch("*** Failers"), 238);
-  assertNull(res[147].firstMatch("Ab"), 239);
-  assertNull(res[147].firstMatch("AB"), 240);
-  assertThrows(() => new RegExp(r"[\200-\110]"), 241);
-  // TODO(jgruber): Reintegrate stack-overflow2_test.dart once it passes.
-  assertToStringEquals("mainmain,main,", res[151].firstMatch("mainmain"), 243);
-  assertToStringEquals(
-      "mainOmain,main,", res[151].firstMatch("mainOmain"), 244);
-  assertToStringEquals("aba,a,", res[153].firstMatch("aba"), 245);
-  assertToStringEquals("aabbaa,aa,", res[154].firstMatch("aabbaa"), 246);
-  assertToStringEquals("aabbaa,aa,", res[155].firstMatch("aabbaa"), 247);
-  assertToStringEquals("aabbaa,aa,", res[156].firstMatch("aabbaa"), 248);
-  assertToStringEquals("aabbaa,", res[157].firstMatch("aabbaa"), 249);
-  assertToStringEquals("aabbaa,aa,,", res[158].firstMatch("aabbaa"), 250);
-  assertToStringEquals("aabbaa,,", res[159].firstMatch("aabbaa"), 251);
-  assertToStringEquals("aabbaa,", res[160].firstMatch("aabbaa"), 252);
-  assertToStringEquals("aabbbaa,", res[161].firstMatch("aabbbaa"), 253);
-  assertToStringEquals("aabbbaa,", res[162].firstMatch("aabbbaa"), 254);
-  assertToStringEquals("aabbaa,", res[163].firstMatch("aabbaa"), 255);
-  assertToStringEquals("aabbbaa,", res[164].firstMatch("aabbbaa"), 256);
-  assertToStringEquals("aabbbaa,aa,,", res[165].firstMatch("aabbbaa"), 257);
-  assertToStringEquals("aabbbbaa,aa,,", res[166].firstMatch("aabbbbaa"), 258);
-  // Dart does not have RegExp literals and thus no translatation of the below.
-  // assertThrows("var re = //;", 259);
-  assertToStringEquals("a", res[169].firstMatch("ab"), 260);
-  assertToStringEquals("a", res[169].firstMatch("aB"), 261);
-  assertToStringEquals("*", res[169].firstMatch("*** Failers"), 262);
-  assertToStringEquals("A", res[169].firstMatch("AB"), 263);
-  assertToStringEquals("a", res[169].firstMatch("ab"), 264);
-  assertToStringEquals("a", res[169].firstMatch("aB"), 265);
-  assertToStringEquals("*", res[169].firstMatch("*** Failers"), 266);
-  assertToStringEquals("A", res[169].firstMatch("AB"), 267);
-  assertNull(res[172].firstMatch("\\"), 268);
-  assertNull(res[177].firstMatch("*** Failers"), 269);
-  assertNull(res[177].firstMatch("xxxxx"), 270);
-  assertNull(
-      res[177].firstMatch(
-          "now is the time for all good men to come to the aid of the party"),
-      271);
-  assertNull(res[177].firstMatch("*** Failers"), 272);
-  assertNull(
-      res[177].firstMatch("this is not a line with only words and spaces!"),
-      273);
-  assertNull(res[177].firstMatch("12345a"), 274);
-  assertNull(res[177].firstMatch("*** Failers"), 275);
-  assertNull(res[177].firstMatch("12345+"), 276);
-  assertNull(res[177].firstMatch("aaab"), 277);
-  assertNull(res[177].firstMatch("aaab"), 278);
-  assertNull(res[177].firstMatch("aaab"), 279);
-  assertNull(res[177].firstMatch("((abc(ade)ufh()()x"), 280);
-  assertNull(res[177].firstMatch("(abc)"), 281);
-  assertNull(res[177].firstMatch("(abc(def)xyz)"), 282);
-  assertNull(res[177].firstMatch("*** Failers"), 283);
-  assertNull(
-      res[177].firstMatch("((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      284);
-  assertNull(res[177].firstMatch("xaaaab"), 285);
-  assertNull(res[177].firstMatch("xaaaab"), 286);
-  assertThrows(() => new RegExp(r"["), 287);
-  assertThrows(() => new RegExp(r"[a-"), 288);
-  assertNull(res[189].firstMatch("<>"), 289);
-  assertNull(res[189].firstMatch("<abcd>"), 290);
-  assertNull(res[189].firstMatch("<abc <123> hij>"), 291);
-  assertNull(res[189].firstMatch("<abc <def> hij>"), 292);
-  assertNull(res[189].firstMatch("<abc<>def>"), 293);
-  assertNull(res[189].firstMatch("<abc<>"), 294);
-  assertNull(res[189].firstMatch("*** Failers"), 295);
-  assertNull(res[189].firstMatch("<abc"), 296);
-  assertToStringEquals("bc123bc,bc,bc", res[195].firstMatch("abc123bc"), 297);
-  assertToStringEquals("abc", res[215].firstMatch("abcdef"), 298);
-  assertToStringEquals("abc", res[215].firstMatch("1234abcdef"), 299);
-  assertNull(res[215].firstMatch("*** Failers"), 300);
-  assertToStringEquals("abc", res[215].firstMatch("abcxyz"), 301);
-  assertToStringEquals("abc", res[215].firstMatch("abcxyzf"), 302);
-  assertToStringEquals("abc", res[215].firstMatch("123abcdef"), 303);
-  assertToStringEquals("abc", res[215].firstMatch("1234abcdef"), 304);
-  assertNull(res[215].firstMatch("*** Failers"), 305);
-  assertToStringEquals("abc", res[215].firstMatch("abcdef"), 306);
-  assertNull(res[215].firstMatch("*** Failers"), 307);
-  assertToStringEquals("abc", res[215].firstMatch("\x83x0abcdef"), 308);
-  assertToStringEquals("abc", res[215].firstMatch("123abcdef"), 309);
-  assertToStringEquals("abc", res[215].firstMatch("123abcdefC+"), 310);
-  assertToStringEquals("abc", res[215].firstMatch("123abcdefC-"), 311);
-  assertNull(res[215].firstMatch("*** Failers"), 312);
-  assertToStringEquals("abc", res[215].firstMatch("123abcdefC!1"), 313);
-  assertToStringEquals("abc", res[215].firstMatch("abcabcabc"), 314);
-  assertToStringEquals("abc", res[215].firstMatch("abcabcC!1!3"), 315);
-  assertNull(res[215].firstMatch("*** Failers"), 316);
-  assertToStringEquals("abc", res[215].firstMatch("abcabcabcC!1!3"), 317);
-  assertToStringEquals("C", res[215].firstMatch("123C+"), 318);
-  assertToStringEquals("C", res[215].firstMatch("123456C+"), 319);
-  assertToStringEquals("C", res[215].firstMatch("123456789C+"), 320);
-  assertToStringEquals("abc", res[215].firstMatch("xyzabcC+"), 321);
-  assertToStringEquals("abc", res[215].firstMatch("XxyzabcC+"), 322);
-  assertToStringEquals("abc", res[215].firstMatch("abcdefC+"), 323);
-  assertToStringEquals("abc", res[215].firstMatch("abcxyzC+"), 324);
-  assertToStringEquals("c", res[215].firstMatch("abbbbbcccC*1"), 325);
-  assertToStringEquals("c", res[215].firstMatch("abbbbbcccC*1"), 326);
-  assertNull(res[215].firstMatch("xab"), 327);
-  assertToStringEquals("c", res[215].firstMatch("xbc"), 328);
-  assertNull(res[215].firstMatch("xde"), 329);
-  assertNull(res[215].firstMatch("xxab"), 330);
-  assertNull(res[215].firstMatch("xxxab"), 331);
-  assertNull(res[215].firstMatch("*** Failers"), 332);
-  assertNull(res[215].firstMatch("xyab"), 333);
-  assertToStringEquals("abc", res[215].firstMatch("abc"), 334);
-  assertToStringEquals("c", res[215].firstMatch("a(b)c"), 335);
-  assertToStringEquals("c", res[215].firstMatch("a(b(c))d"), 336);
-  assertNull(res[215].firstMatch("*** Failers)"), 337);
-  assertToStringEquals("c", res[215].firstMatch("a(b(c)d"), 338);
-  assertNull(res[215].firstMatch("1221"), 339);
-  assertToStringEquals(
-      "c", res[215].firstMatch("Satan, oscillate my metallic sonatas!"), 340);
-  assertToStringEquals(
-      "c", res[215].firstMatch("A man, a plan, a canal: Panama!"), 341);
-  assertNull(res[215].firstMatch("Able was I ere I saw Elba."), 342);
-  assertNull(res[215].firstMatch("*** Failers"), 343);
-  assertToStringEquals("c", res[215].firstMatch("The quick brown fox"), 344);
-  assertNull(res[215].firstMatch("12"), 345);
-  assertNull(res[215].firstMatch("(((2+2)*-3)-7)"), 346);
-  assertNull(res[215].firstMatch("-12"), 347);
-  assertNull(res[215].firstMatch("*** Failers"), 348);
-  assertNull(res[215].firstMatch("((2+2)*-3)-7)"), 349);
-  assertNull(res[215].firstMatch("xyz"), 350);
-  assertNull(res[215].firstMatch("xxyzxyzz"), 351);
-  assertNull(res[215].firstMatch("*** Failers"), 352);
-  assertNull(res[215].firstMatch("xxyzz"), 353);
-  assertNull(res[215].firstMatch("xxyzxyzxyzz"), 354);
-  assertNull(res[215].firstMatch("<>"), 355);
-  assertToStringEquals("abc", res[215].firstMatch("<abcd>"), 356);
-  assertToStringEquals("abc", res[215].firstMatch("<abc <123> hij>"), 357);
-  assertToStringEquals("abc", res[215].firstMatch("<abc <def> hij>"), 358);
-  assertToStringEquals("abc", res[215].firstMatch("<abc<>def>"), 359);
-  assertToStringEquals("abc", res[215].firstMatch("<abc<>"), 360);
-  assertNull(res[215].firstMatch("*** Failers"), 361);
-  assertToStringEquals("abc", res[215].firstMatch("<abc"), 362);
-  assertToStringEquals("abc", res[215].firstMatch("abcdefabc"), 363);
-  assertNull(res[215].firstMatch("a=a"), 364);
-  assertNull(res[215].firstMatch("a=b"), 365);
-  assertToStringEquals("c", res[215].firstMatch("a=bc"), 366);
-  assertNull(res[215].firstMatch("a=a"), 367);
-  assertNull(res[215].firstMatch("a=b"), 368);
-  assertToStringEquals("c", res[215].firstMatch("a=bc"), 369);
-  assertNull(res[215].firstMatch("abde"), 370);
-  assertToStringEquals("c", res[215].firstMatch("acde"), 371);
-  assertNull(res[215].firstMatch("1221"), 372);
-  assertToStringEquals(
-      "c", res[215].firstMatch("Satan, oscillate my metallic sonatas!"), 373);
-  assertToStringEquals(
-      "c", res[215].firstMatch("A man, a plan, a canal: Panama!"), 374);
-  assertNull(res[215].firstMatch("Able was I ere I saw Elba."), 375);
-  assertNull(res[215].firstMatch("*** Failers"), 376);
-  assertToStringEquals("c", res[215].firstMatch("The quick brown fox"), 377);
-  assertNull(res[228].firstMatch("abcdefgh"), 378);
-  assertNull(res[228].firstMatch("abcdefghC1Gtwo"), 379);
-  assertNull(res[228].firstMatch("abcdefghConeCtwo"), 380);
-  assertNull(res[228].firstMatch("abcdefghCthree"), 381);
-  assertToStringEquals("zz,", res[228].firstMatch("zzaaCZ"), 382);
-  assertToStringEquals("zz,", res[228].firstMatch("zzaaCA"), 383);
-  assertNull(res[228].firstMatch("[10,20,30,5,5,4,4,2,43,23,4234]"), 384);
-  assertNull(res[228].firstMatch("*** Failers"), 385);
-  assertNull(res[228].firstMatch("[]"), 386);
-  assertNull(res[228].firstMatch("[10,20,30,5,5,4,4,2,43,23,4234]"), 387);
-  assertNull(res[228].firstMatch("[]"), 388);
-  assertToStringEquals(
-      " Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,",
-      res[229].firstMatch(" Baby Bjorn Active Carrier - With free SHIPPING!!"),
-      389);
-  assertToStringEquals(
-      " Baby Bjorn Active Carrier - With free SHIPPING!!, Baby Bjorn Active Carrier - With free SHIPPING!!,,",
-      res[230].firstMatch(" Baby Bjorn Active Carrier - With free SHIPPING!!"),
-      390);
-  assertNull(
-      res[238].firstMatch("Note: that { does NOT introduce a quantifier"), 391);
-  assertToStringEquals(
-      "aacaacaacaacaac123,aac", res[239].firstMatch("aacaacaacaacaac123"), 392);
-  assertNull(res[243].firstMatch("abP"), 393);
-  assertNull(res[243].firstMatch("abcP"), 394);
-  assertNull(res[243].firstMatch("abcdP"), 395);
-  assertToStringEquals("abcde", res[243].firstMatch("abcdeP"), 396);
-  assertNull(res[243].firstMatch("the quick brown abcP"), 397);
-  assertNull(res[243].firstMatch("** FailersP"), 398);
-  assertNull(res[243].firstMatch("the quick brown abxyz foxP"), 399);
-  assertNull(res[243].firstMatch("13/05/04P"), 400);
-  assertNull(res[243].firstMatch("13/5/2004P"), 401);
-  assertNull(res[243].firstMatch("02/05/09P"), 402);
-  assertNull(res[243].firstMatch("1P"), 403);
-  assertNull(res[243].firstMatch("1/2P"), 404);
-  assertNull(res[243].firstMatch("1/2/0P"), 405);
-  assertNull(res[243].firstMatch("1/2/04P"), 406);
-  assertNull(res[243].firstMatch("0P"), 407);
-  assertNull(res[243].firstMatch("02/P"), 408);
-  assertNull(res[243].firstMatch("02/0P"), 409);
-  assertNull(res[243].firstMatch("02/1P"), 410);
-  assertNull(res[243].firstMatch("** FailersP"), 411);
-  assertNull(res[243].firstMatch("P"), 412);
-  assertNull(res[243].firstMatch("123P"), 413);
-  assertNull(res[243].firstMatch("33/4/04P"), 414);
-  assertNull(res[243].firstMatch("3/13/04P"), 415);
-  assertNull(res[243].firstMatch("0/1/2003P"), 416);
-  assertNull(res[243].firstMatch("0/P"), 417);
-  assertNull(res[243].firstMatch("02/0/P"), 418);
-  assertNull(res[243].firstMatch("02/13P"), 419);
-  assertToStringEquals("123", res[248].firstMatch("123P"), 420);
-  assertNull(res[248].firstMatch("aP"), 421);
-  assertNull(res[248].firstMatch("bP"), 422);
-  assertNull(res[248].firstMatch("cP"), 423);
-  assertNull(res[248].firstMatch("c12P"), 424);
-  assertToStringEquals("c123", res[248].firstMatch("c123P"), 425);
-  assertNull(res[249].firstMatch("1P"), 426);
-  assertNull(res[249].firstMatch("123P"), 427);
-  assertToStringEquals("123X", res[249].firstMatch("123X"), 428);
-  assertNull(res[249].firstMatch("1234P"), 429);
-  assertToStringEquals("1234X", res[249].firstMatch("1234X"), 430);
-  assertNull(res[249].firstMatch("12345P"), 431);
-  assertToStringEquals("12345X", res[249].firstMatch("12345X"), 432);
-  assertNull(res[249].firstMatch("*** Failers"), 433);
-  assertNull(res[249].firstMatch("1X"), 434);
-  assertNull(res[249].firstMatch("123456P"), 435);
-  assertNull(res[249].firstMatch("abc"), 436);
-  assertNull(res[249].firstMatch("** Failers"), 437);
-  assertNull(res[249].firstMatch("bca"), 438);
-  assertNull(res[249].firstMatch("abc"), 439);
-  assertNull(res[249].firstMatch("** Failers"), 440);
-  assertNull(res[249].firstMatch("bca"), 441);
-  assertNull(res[249].firstMatch("abc"), 442);
-  assertNull(res[249].firstMatch("** Failers"), 443);
-  assertNull(res[249].firstMatch("def"), 444);
-  assertNull(res[249].firstMatch("abc"), 445);
-  assertNull(res[249].firstMatch("** Failers"), 446);
-  assertNull(res[249].firstMatch("def"), 447);
-  assertNull(
-      res[249].firstMatch(
-          "<!DOCTYPE seite SYSTEM \"http://www.lco.lineas.de/xmlCms.dtd\">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel=\"http://www.ca.com/\" zielfenster=\"_blank\">\n<bild name=\"logo_ca.gif\" rahmen=\"no\"/></link> <link\nziel=\"http://www.ey.com/\" zielfenster=\"_blank\"><bild\nname=\"logo_euy.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.cisco.de/\" zielfenster=\"_blank\">\n<bild name=\"logo_cisco.gif\" rahmen=\"ja\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.atelion.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_atelion.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><link ziel=\"http://www.line-information.de/\"\nzielfenster=\"_blank\">\n<bild name=\"logo_line_information.gif\" rahmen=\"no\"/></link>\n</absatz>\n\n<absatz><bild name=\"logo_aw.gif\" rahmen=\"no\"/></absatz>\n\n<absatz><link ziel=\"http://www.incognis.de/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_incognis.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.addcraft.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_addcraft.gif\" rahmen=\"no\"/></link></absatz>\n\n<absatz><link ziel=\"http://www.comendo.com/\"\nzielfenster=\"_blank\"><bild\nname=\"logo_comendo.gif\" rahmen=\"no\"/></link></absatz>\n\n</inhalt>\n</seite>"),
-      448);
-  assertToStringEquals(
-      "line\nbreak", res[251].firstMatch("this is a line\nbreak"), 449);
-  assertToStringEquals(
-      "line\nbreak",
-      res[251].firstMatch("line one\nthis is a line\nbreak in the second line"),
-      450);
-  assertToStringEquals(
-      "line\nbreak", res[252].firstMatch("this is a line\nbreak"), 451);
-  assertNull(res[252].firstMatch("** Failers"), 452);
-  assertToStringEquals(
-      "line\nbreak",
-      res[252].firstMatch("line one\nthis is a line\nbreak in the second line"),
-      453);
-  assertToStringEquals(
-      "line\nbreak", res[253].firstMatch("this is a line\nbreak"), 454);
-  assertNull(res[253].firstMatch("** Failers"), 455);
-  assertToStringEquals(
-      "line\nbreak",
-      res[253].firstMatch("line one\nthis is a line\nbreak in the second line"),
-      456);
-  assertToStringEquals("ab-cd", res[254].firstMatch("ab-cd"), 457);
-  assertToStringEquals("ab=cd", res[254].firstMatch("ab=cd"), 458);
-  assertNull(res[254].firstMatch("** Failers"), 459);
-  assertNull(res[254].firstMatch("ab\ncd"), 460);
-  assertToStringEquals("ab-cd", res[255].firstMatch("ab-cd"), 461);
-  assertToStringEquals("ab=cd", res[255].firstMatch("ab=cd"), 462);
-  assertNull(res[255].firstMatch("ab\ncd"), 463);
-  assertNull(res[255].firstMatch("AbCd"), 464);
-  assertNull(res[255].firstMatch("** Failers"), 465);
-  assertNull(res[255].firstMatch("abcd"), 466);
-  // We are compatible with JSC, and don't throw an exception in this case.
-  // assertThrows("var re = /(){2,4294967295}/;", 467);
-  assertNull(res[255].firstMatch("abcdefghijklAkB"), 468);
-  assertNull(res[255].firstMatch("abcdefghijklAkB"), 469);
-  assertNull(res[255].firstMatch("abcdefghijklAkB"), 470);
-  assertNull(
-      res[255].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      471);
-  assertNull(
-      res[255].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      472);
-  assertNull(res[255].firstMatch("(this(and)that"), 473);
-  assertNull(res[255].firstMatch("(this(and)that)"), 474);
-  assertNull(res[255].firstMatch("(this(and)that)stuff"), 475);
-  assertNull(res[255].firstMatch("(this(and)that"), 476);
-  assertNull(res[255].firstMatch("(this(and)that)"), 477);
-  assertNull(res[255].firstMatch("(this(and)that"), 478);
-  assertNull(res[255].firstMatch("(this(and)that)"), 479);
-  assertNull(res[255].firstMatch("(this(and)that"), 480);
-  assertNull(res[255].firstMatch("(this(and)that)"), 481);
-  assertNull(res[255].firstMatch("((this))"), 482);
-  assertNull(res[255].firstMatch("(this(and)that"), 483);
-  assertNull(res[255].firstMatch("(this(and)that)"), 484);
-  assertNull(res[255].firstMatch("(this)"), 485);
-  assertNull(res[255].firstMatch("((this))"), 486);
-  assertToStringEquals("abc,b", res[256].firstMatch("abc"), 487);
-  assertToStringEquals("abc,b", res[256].firstMatch("abc"), 488);
-  assertNull(res[256].firstMatch("a1bCA"), 489);
-  assertNull(res[256].firstMatch("a2bCA"), 490);
-  assertNull(res[257].firstMatch("a bc dCACBCC"), 491);
-  assertNull(res[257].firstMatch("aabc"), 492);
-  assertNull(res[257].firstMatch("bc"), 493);
-  assertNull(res[257].firstMatch("** Failers"), 494);
-  assertNull(res[257].firstMatch("abc"), 495);
-  assertNull(res[257].firstMatch("bXaX"), 496);
-  assertNull(res[257].firstMatch("bbXaaX"), 497);
-  assertNull(res[257].firstMatch("(b)\\Xa\\X"), 498);
-  assertNull(res[257].firstMatch("bXXaYYaY"), 499);
-  assertNull(res[257].firstMatch("bXYaXXaX"), 500);
-  assertNull(res[257].firstMatch("bXXaYYaY"), 501);
-  assertToStringEquals("\x0b,\x0b", res[259].firstMatch("\x0b,\x0b"), 502);
-  assertToStringEquals("\x0c,\x0d", res[259].firstMatch("\x0c,\x0d"), 503);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\nabc"), 504);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\nabc<lf>"), 505);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\x0d\nabc<lf>"), 506);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\x0dabc<cr>"), 507);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\x0d\nabc<crlf>"), 508);
-  assertNull(res[260].firstMatch("** Failers"), 509);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\nabc<cr>"), 510);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\x0d\nabc<cr>"), 511);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\nabc<crlf>"), 512);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\x0dabc<crlf>"), 513);
-  assertToStringEquals("abc", res[260].firstMatch("xyz\x0dabc<lf>"), 514);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc"), 515);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\n"), 516);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\npqr"), 517);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d<cr>"), 518);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0dpqr<cr>"), 519);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d\n<crlf>"), 520);
-  assertToStringEquals(
-      "abc", res[261].firstMatch("xyzabc\x0d\npqr<crlf>"), 521);
-  assertNull(res[261].firstMatch("** Failers"), 522);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d"), 523);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0dpqr"), 524);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d\n"), 525);
-  assertToStringEquals("abc", res[261].firstMatch("xyzabc\x0d\npqr"), 526);
-  assertToStringEquals("abc", res[262].firstMatch("xyz\x0dabcdef"), 527);
-  assertToStringEquals("abc", res[262].firstMatch("xyz\nabcdef<lf>"), 528);
-  assertNull(res[262].firstMatch("** Failers"), 529);
-  assertToStringEquals("abc", res[262].firstMatch("xyz\nabcdef"), 530);
-  assertToStringEquals("abc", res[263].firstMatch("xyz\nabcdef"), 531);
-  assertToStringEquals("abc", res[263].firstMatch("xyz\x0dabcdef<cr>"), 532);
-  assertNull(res[263].firstMatch("** Failers"), 533);
-  assertToStringEquals("abc", res[263].firstMatch("xyz\x0dabcdef"), 534);
-  assertToStringEquals("abc", res[264].firstMatch("xyz\x0d\nabcdef"), 535);
-  assertToStringEquals("abc", res[264].firstMatch("xyz\x0dabcdef<cr>"), 536);
-  assertNull(res[264].firstMatch("** Failers"), 537);
-  assertToStringEquals("abc", res[264].firstMatch("xyz\x0dabcdef"), 538);
-  assertToStringEquals("abc", res[266].firstMatch("xyz\x0dabc<bad>"), 539);
-  assertToStringEquals("abc", res[266].firstMatch("abc"), 540);
-  assertToStringEquals("abc", res[267].firstMatch("abc\ndef"), 541);
-  assertToStringEquals("abc", res[267].firstMatch("abc\x0ddef"), 542);
-  assertToStringEquals("abc", res[267].firstMatch("abc\x0d\ndef"), 543);
-  assertToStringEquals("<cr>abc", res[267].firstMatch("<cr>abc\ndef"), 544);
-  assertToStringEquals("<cr>abc", res[267].firstMatch("<cr>abc\x0ddef"), 545);
-  assertToStringEquals("<cr>abc", res[267].firstMatch("<cr>abc\x0d\ndef"), 546);
-  assertToStringEquals("<crlf>abc", res[267].firstMatch("<crlf>abc\ndef"), 547);
-  assertToStringEquals(
-      "<crlf>abc", res[267].firstMatch("<crlf>abc\x0ddef"), 548);
-  assertToStringEquals(
-      "<crlf>abc", res[267].firstMatch("<crlf>abc\x0d\ndef"), 549);
-  assertNull(res[268].firstMatch("abc\ndef"), 550);
-  assertNull(res[268].firstMatch("abc\x0ddef"), 551);
-  assertNull(res[268].firstMatch("abc\x0d\ndef"), 552);
-  assertToStringEquals(
-      "XY,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,XY,Y",
-      res[269].firstMatch("XYO400"),
-      553);
-  assertToStringEquals("aaaA5", res[278].firstMatch("aaaA5"), 554);
-  assertNull(res[278].firstMatch("** Failers"), 555);
-  assertNull(res[278].firstMatch("aaaa5"), 556);
-  assertToStringEquals("aaaA5", res[279].firstMatch("aaaA5"), 557);
-  assertToStringEquals("aaaa5", res[279].firstMatch("aaaa5"), 558);
-  assertToStringEquals("x", res[350].firstMatch("xyCabcCxyz"), 559);
-  assertToStringEquals("x", res[350].firstMatch("xyCabcCxyz"), 560);
-  assertToStringEquals("b", res[350].firstMatch("bXaX"), 561);
-  assertToStringEquals("b", res[350].firstMatch("bXbX"), 562);
-  assertToStringEquals("*", res[350].firstMatch("** Failers"), 563);
-  assertToStringEquals("aX", res[350].firstMatch("aXaX"), 564);
-  assertToStringEquals("aX", res[350].firstMatch("aXbX"), 565);
-  assertToStringEquals("x", res[350].firstMatch("xx"), 566);
-  assertToStringEquals("x", res[350].firstMatch("xy"), 567);
-  assertToStringEquals("y", res[350].firstMatch("yy"), 568);
-  assertToStringEquals("y", res[350].firstMatch("yx"), 569);
-  assertToStringEquals("x", res[350].firstMatch("xx"), 570);
-  assertToStringEquals("x", res[350].firstMatch("xy"), 571);
-  assertToStringEquals("y", res[350].firstMatch("yy"), 572);
-  assertToStringEquals("y", res[350].firstMatch("yx"), 573);
-  assertToStringEquals("b", res[350].firstMatch("bxay"), 574);
-  assertToStringEquals("b", res[350].firstMatch("bxby"), 575);
-  assertToStringEquals("*", res[350].firstMatch("** Failers"), 576);
-  assertToStringEquals("ax", res[350].firstMatch("axby"), 577);
-  assertToStringEquals("X", res[350].firstMatch("XxXxxx"), 578);
-  assertToStringEquals("X", res[350].firstMatch("XxXyyx"), 579);
-  assertToStringEquals("X", res[350].firstMatch("XxXyxx"), 580);
-  assertToStringEquals("*", res[350].firstMatch("** Failers"), 581);
-  assertToStringEquals("x", res[350].firstMatch("x"), 582);
-  assertToStringEquals("ab", res[350].firstMatch("abcabc"), 583);
-  assertToStringEquals("Xaaa,a", res[351].firstMatch("Xaaa"), 584);
-  assertToStringEquals("Xaba,a", res[351].firstMatch("Xaba"), 585);
-  assertThrows(() => new RegExp(r"^[a-\\Q\\E]"), 586);
-  assertNull(res[353].firstMatch("(xy)x"), 587);
-  assertNull(res[353].firstMatch("1221"), 588);
-  assertNull(res[353].firstMatch("Satan, oscillate my metallic sonatas!"), 589);
-  assertNull(res[353].firstMatch("A man, a plan, a canal: Panama!"), 590);
-  assertNull(res[353].firstMatch("Able was I ere I saw Elba."), 591);
-  assertNull(res[353].firstMatch("*** Failers"), 592);
-  assertNull(res[353].firstMatch("The quick brown fox"), 593);
-  assertToStringEquals("abcd:,abcd", res[354].firstMatch("abcd:"), 594);
-  assertToStringEquals("abcd:,abcd", res[354].firstMatch("abcd:"), 595);
-  assertToStringEquals("a:,a", res[354].firstMatch("a:aaxyz"), 596);
-  assertToStringEquals("ab:,ab", res[354].firstMatch("ab:ababxyz"), 597);
-  assertNull(res[354].firstMatch("** Failers"), 598);
-  assertToStringEquals("a:,a", res[354].firstMatch("a:axyz"), 599);
-  assertToStringEquals("ab:,ab", res[354].firstMatch("ab:abxyz"), 600);
-  assertNull(res[354].firstMatch("abd"), 601);
-  assertNull(res[354].firstMatch("ce"), 602);
-  assertNull(res[354].firstMatch("abcabc1Xabc2XabcXabcabc"), 603);
-  assertNull(res[354].firstMatch("abcabc1Xabc2XabcXabcabc"), 604);
-  assertNull(res[354].firstMatch("abcabc1Xabc2XabcXabcabc"), 605);
-  assertNull(res[354].firstMatch("abcd"), 606);
-  assertNull(res[354].firstMatch("metcalfe 33"), 607);
-  assertNull(res[356].firstMatch("a\x0db"), 608);
-  assertNull(res[356].firstMatch("a\nb<cr>"), 609);
-  assertToStringEquals("a\x85b", res[356].firstMatch("a\x85b<anycrlf> "), 610);
-  assertNull(res[356].firstMatch("** Failers"), 611);
-  assertNull(res[356].firstMatch("a\nb"), 612);
-  assertNull(res[356].firstMatch("a\nb<any>"), 613);
-  assertNull(res[356].firstMatch("a\x0db<cr>"), 614);
-  assertNull(res[356].firstMatch("a\x0db<any>"), 615);
-  assertToStringEquals("a\x85b", res[356].firstMatch("a\x85b<any> "), 616);
-  assertNull(res[356].firstMatch("a\x0db<anycrlf>"), 617);
-  assertToStringEquals(
-      "abc1",
-      res[357].firstMatch(
-          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"),
-      618);
-  assertToStringEquals(
-      "abc1",
-      res[358].firstMatch(
-          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc7 abc9"),
-      619);
-  assertNull(res[361].firstMatch("a\nb"), 620);
-  assertNull(res[361].firstMatch("a\x0db"), 621);
-  assertNull(res[361].firstMatch("a\x0d\nb"), 622);
-  assertNull(res[361].firstMatch("a\x0bb"), 623);
-  assertNull(res[361].firstMatch("a\x0cb"), 624);
-  assertNull(res[361].firstMatch("a\x85b"), 625);
-  assertNull(res[361].firstMatch("** Failers"), 626);
-  assertNull(res[361].firstMatch("a\n\x0db"), 627);
-  assertToStringEquals("ab", res[362].firstMatch("ab"), 628);
-  assertNull(res[362].firstMatch("a\nb"), 629);
-  assertNull(res[362].firstMatch("a\x0db"), 630);
-  assertNull(res[362].firstMatch("a\x0d\nb"), 631);
-  assertNull(res[362].firstMatch("a\x0bb"), 632);
-  assertNull(res[362].firstMatch("a\x0cb"), 633);
-  assertNull(res[362].firstMatch("a\x85b"), 634);
-  assertNull(res[362].firstMatch("a\n\x0db"), 635);
-  assertNull(res[362].firstMatch("a\n\x0d\x85\x0cb"), 636);
-  assertNull(res[363].firstMatch("a\nb"), 637);
-  assertNull(res[363].firstMatch("a\x0db"), 638);
-  assertNull(res[363].firstMatch("a\x0d\nb"), 639);
-  assertNull(res[363].firstMatch("a\x0bb"), 640);
-  assertNull(res[363].firstMatch("a\x0cb"), 641);
-  assertNull(res[363].firstMatch("a\x85b"), 642);
-  assertNull(res[363].firstMatch("a\n\x0db"), 643);
-  assertNull(res[363].firstMatch("a\n\x0d\x85\x0cb"), 644);
-  assertNull(res[363].firstMatch("** Failers"), 645);
-  assertNull(res[363].firstMatch("ab"), 646);
-  assertNull(res[364].firstMatch("a\nb"), 647);
-  assertNull(res[364].firstMatch("a\n\x0db"), 648);
-  assertNull(res[364].firstMatch("a\n\x0d\x85b"), 649);
-  assertNull(res[364].firstMatch("a\x0d\n\x0d\nb"), 650);
-  assertNull(res[364].firstMatch("a\x0d\n\x0d\n\x0d\nb"), 651);
-  assertNull(res[364].firstMatch("a\n\x0d\n\x0db"), 652);
-  assertNull(res[364].firstMatch("a\n\n\x0d\nb"), 653);
-  assertNull(res[364].firstMatch("** Failers"), 654);
-  assertNull(res[364].firstMatch("a\n\n\n\x0db"), 655);
-  assertNull(res[364].firstMatch("a\x0d"), 656);
-  assertToStringEquals("aRb", res[365].firstMatch("aRb"), 657);
-  assertNull(res[365].firstMatch("** Failers"), 658);
-  assertNull(res[365].firstMatch("a\nb"), 659);
-  assertNull(res[365].firstMatch("abcPXP123"), 660);
-  assertNull(res[365].firstMatch("abcPXP123"), 661);
-  assertNull(res[365].firstMatch("1.2.3.4"), 662);
-  assertNull(res[365].firstMatch("131.111.10.206"), 663);
-  assertNull(res[365].firstMatch("10.0.0.0"), 664);
-  assertNull(res[365].firstMatch("** Failers"), 665);
-  assertNull(res[365].firstMatch("10.6"), 666);
-  assertNull(res[365].firstMatch("455.3.4.5"), 667);
-  assertNull(res[365].firstMatch("1.2.3.4"), 668);
-  assertNull(res[365].firstMatch("131.111.10.206"), 669);
-  assertNull(res[365].firstMatch("10.0.0.0"), 670);
-  assertNull(res[365].firstMatch("** Failers"), 671);
-  assertNull(res[365].firstMatch("10.6"), 672);
-  assertNull(res[365].firstMatch("455.3.4.5"), 673);
-  assertNull(res[365].firstMatch("123axbaxbaxbx456"), 674);
-  assertNull(res[365].firstMatch("123axbaxbaxb456"), 675);
-  assertNull(res[365].firstMatch("123axbaxbaxbx456"), 676);
-  assertNull(res[365].firstMatch("123axbaxbaxbx456"), 677);
-  assertNull(res[365].firstMatch("123axbaxbaxbx456"), 678);
-  assertNull(res[366].firstMatch("ababababbbabZXXXX"), 679);
-  assertNull(res[372].firstMatch("a\x0db"), 680);
-  assertNull(res[372].firstMatch("*** Failers"), 681);
-  assertNull(res[372].firstMatch("a\nb"), 682);
-  assertToStringEquals("afoo", res[373].firstMatch("afoo"), 683);
-  assertNull(res[373].firstMatch("** Failers"), 684);
-  assertNull(res[373].firstMatch("\x0d\nfoo"), 685);
-  assertNull(res[373].firstMatch("\nfoo"), 686);
-  assertToStringEquals("afoo", res[374].firstMatch("afoo"), 687);
-  assertNull(res[374].firstMatch("\nfoo"), 688);
-  assertNull(res[374].firstMatch("** Failers"), 689);
-  assertNull(res[374].firstMatch("\x0d\nfoo"), 690);
-  assertToStringEquals("afoo", res[375].firstMatch("afoo"), 691);
-  assertNull(res[375].firstMatch("** Failers"), 692);
-  assertNull(res[375].firstMatch("\nfoo"), 693);
-  assertNull(res[375].firstMatch("\x0d\nfoo"), 694);
-  assertToStringEquals("afoo", res[376].firstMatch("afoo"), 695);
-  assertNull(res[376].firstMatch("\x0d\nfoo"), 696);
-  assertNull(res[376].firstMatch("\nfoo"), 697);
-  assertToStringEquals("", res[377].firstMatch("abc\x0d\x0dxyz"), 698);
-  assertToStringEquals("", res[377].firstMatch("abc\n\x0dxyz  "), 699);
-  assertNull(res[377].firstMatch("** Failers "), 700);
-  assertToStringEquals("", res[377].firstMatch("abc\x0d\nxyz"), 701);
-  assertToStringEquals("", res[377].firstMatch("abc\x0d\n\x0d\n"), 702);
-  assertToStringEquals("", res[377].firstMatch("abc\x0d\n\x0d\n"), 703);
-  assertToStringEquals("", res[377].firstMatch("abc\x0d\n\x0d\n"), 704);
-  assertToStringEquals(
-      "abc1",
-      res[378].firstMatch(
-          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"),
-      705);
-  assertToStringEquals("X", res[379].firstMatch("XABC"), 706);
-  assertNull(res[379].firstMatch("** Failers "), 707);
-  assertToStringEquals("X", res[379].firstMatch("XABCB"), 708);
-  assertThrows(() => new RegExp(r"(ab|c)(?-1)"), 709);
-  assertNull(res[379].firstMatch("abc"), 710);
-  assertNull(res[379].firstMatch("xyabcabc"), 711);
-  assertNull(res[379].firstMatch("** Failers"), 712);
-  assertNull(res[379].firstMatch("xyabc  "), 713);
-  assertThrows(() => new RegExp(r"x(?-0)y"), 714);
-  assertThrows(() => new RegExp(r"x(?-1)y"), 715);
-  assertNull(res[379].firstMatch("abcX"), 716);
-  assertNull(res[379].firstMatch("Y"), 717);
-  assertNull(res[379].firstMatch("** Failers"), 718);
-  assertNull(res[379].firstMatch("abcY   "), 719);
-  assertNull(res[379].firstMatch("YabcXabc"), 720);
-  assertNull(res[379].firstMatch("YabcXabcXabc"), 721);
-  assertNull(res[379].firstMatch("** Failers"), 722);
-  assertToStringEquals("X", res[379].firstMatch("XabcXabc  "), 723);
-  assertNull(res[379].firstMatch("Y!"), 724);
-  assertNull(res[380].firstMatch("foobar"), 725);
-  assertNull(res[381].firstMatch("foobar"), 726);
-  assertToStringEquals("foobaz,foo,baz", res[381].firstMatch("foobaz "), 727);
-  assertNull(res[382].firstMatch("foobarbaz"), 728);
-  assertNull(res[382].firstMatch("tom-tom"), 729);
-  assertNull(res[382].firstMatch("bon-bon "), 730);
-  assertNull(res[382].firstMatch("** Failers"), 731);
-  assertNull(res[382].firstMatch("tom-bon  "), 732);
-  assertNull(res[382].firstMatch("tom-tom"), 733);
-  assertNull(res[382].firstMatch("bon-bon "), 734);
-  assertThrows(() => new RegExp(r"(?|(abc)|(xyz))"), 735);
-  assertThrows(() => new RegExp(r"(x)(?|(abc)|(xyz))(x)"), 736);
-  assertNull(res[383].firstMatch("xabcx"), 737);
-  assertNull(res[383].firstMatch("xxyzx "), 738);
-  assertThrows(() => new RegExp(r"(x)(?|(abc)(pqr)|(xyz))(x)"), 739);
-  assertNull(res[383].firstMatch("xabcpqrx"), 740);
-  assertNull(res[383].firstMatch("xxyzx "), 741);
-  assertThrows(() => new RegExp(r"(?|(abc)|(xyz))\1"), 742);
-  assertNull(res[383].firstMatch("abcabc"), 743);
-  assertNull(res[383].firstMatch("xyzxyz "), 744);
-  assertNull(res[383].firstMatch("** Failers"), 745);
-  assertNull(res[383].firstMatch("abcxyz"), 746);
-  assertNull(res[383].firstMatch("xyzabc   "), 747);
-  assertNull(res[383].firstMatch("abcabc"), 748);
-  assertNull(res[383].firstMatch("xyzabc "), 749);
-  assertNull(res[383].firstMatch("** Failers "), 750);
-  assertNull(res[383].firstMatch("xyzxyz "), 751);
-  assertNull(res[384].firstMatch("X X\n"), 752);
-  assertNull(res[384].firstMatch("X\x09X\x0b"), 753);
-  assertNull(res[384].firstMatch("** Failers"), 754);
-  assertNull(res[384].firstMatch("\xa0 X\n   "), 755);
-  assertNull(res[385].firstMatch("\x09 \xa0X\n\x0b\x0c\x0d\n"), 756);
-  assertNull(res[385].firstMatch("\x09 \xa0\n\x0b\x0c\x0d\n"), 757);
-  assertNull(res[385].firstMatch("\x09 \xa0\n\x0b\x0c"), 758);
-  assertNull(res[385].firstMatch("** Failers "), 759);
-  assertNull(res[385].firstMatch("\x09 \xa0\n\x0b"), 760);
-  assertNull(res[385].firstMatch(" "), 761);
-  assertNull(res[386].firstMatch("XY  ABCDE"), 762);
-  assertNull(res[386].firstMatch("XY  PQR ST "), 763);
-  assertNull(res[387].firstMatch("XY  AB    PQRS"), 764);
-  assertNull(res[388].firstMatch(">XNNNYZ"), 765);
-  assertNull(res[388].firstMatch(">  X NYQZ"), 766);
-  assertNull(res[388].firstMatch("** Failers"), 767);
-  assertNull(res[388].firstMatch(">XYZ   "), 768);
-  assertNull(res[388].firstMatch(">  X NY Z"), 769);
-  assertNull(res[389].firstMatch(">XY\nZ\nA\x0bNN\x0c"), 770);
-  assertNull(res[389].firstMatch(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c"), 771);
-  assertNull(res[390].firstMatch(">\x09<"), 772);
-  assertNull(res[391].firstMatch(">\x09 \xa0<"), 773);
-  assertNull(res[396].firstMatch("** Failers"), 774);
-  assertNull(res[396].firstMatch("XXXX"), 775);
-  assertNull(res[397].firstMatch("XXXX Y "), 776);
-  assertNull(res[419].firstMatch("aaaaaa"), 777);
-  assertNull(res[419].firstMatch("aaabccc"), 778);
-  assertNull(res[419].firstMatch("aaabccc"), 779);
-  assertNull(res[419].firstMatch("aaabccc"), 780);
-  assertNull(res[419].firstMatch("aaabcccaaabccc"), 781);
-  assertNull(res[419].firstMatch("aaaxxxxxx"), 782);
-  assertNull(res[419].firstMatch("aaa++++++ "), 783);
-  assertNull(res[419].firstMatch("bbbxxxxx"), 784);
-  assertNull(res[419].firstMatch("bbb+++++ "), 785);
-  assertNull(res[419].firstMatch("cccxxxx"), 786);
-  assertNull(res[419].firstMatch("ccc++++ "), 787);
-  assertNull(res[419].firstMatch("dddddddd   "), 788);
-  assertNull(res[419].firstMatch("aaaxxxxxx"), 789);
-  assertNull(res[419].firstMatch("aaa++++++ "), 790);
-  assertNull(res[419].firstMatch("bbbxxxxx"), 791);
-  assertNull(res[419].firstMatch("bbb+++++ "), 792);
-  assertNull(res[419].firstMatch("cccxxxx"), 793);
-  assertNull(res[419].firstMatch("ccc++++ "), 794);
-  assertNull(res[419].firstMatch("dddddddd   "), 795);
-  assertNull(res[419].firstMatch("aaabccc"), 796);
-  assertNull(res[419].firstMatch("ABX"), 797);
-  assertNull(res[419].firstMatch("AADE"), 798);
-  assertNull(res[419].firstMatch("ACDE"), 799);
-  assertNull(res[419].firstMatch("** Failers"), 800);
-  assertNull(res[419].firstMatch("AD "), 801);
-  assertNull(res[419].firstMatch("    "), 802);
-  assertNull(res[419].firstMatch("aaaaaa"), 803);
-  assertNull(res[419].firstMatch("aaabccc"), 804);
-  assertNull(res[419].firstMatch("aaabccc"), 805);
-  assertNull(res[419].firstMatch("aaabccc"), 806);
-  assertNull(res[419].firstMatch("aaabcccaaabccc"), 807);
-  assertNull(res[419].firstMatch("aaabccc"), 808);
-  assertNull(res[422].firstMatch("\x0d\nA"), 809);
-  assertToStringEquals("\nA", res[423].firstMatch("\x0d\nA "), 810);
-  assertToStringEquals("\nA", res[424].firstMatch("\x0d\nA "), 811);
-  assertToStringEquals("\nA,\n", res[425].firstMatch("\x0d\nA "), 812);
-  assertNull(res[425].firstMatch("a\nb"), 813);
-  assertNull(res[425].firstMatch("** Failers"), 814);
-  assertNull(res[425].firstMatch("a\x0db  "), 815);
-  assertNull(res[425].firstMatch("a\nb"), 816);
-  assertNull(res[425].firstMatch("** Failers"), 817);
-  assertNull(res[425].firstMatch("a\x0db  "), 818);
-  assertNull(res[425].firstMatch("a\x0db"), 819);
-  assertNull(res[425].firstMatch("** Failers"), 820);
-  assertNull(res[425].firstMatch("a\nb  "), 821);
-  assertNull(res[425].firstMatch("a\x0db"), 822);
-  assertNull(res[425].firstMatch("a\nb  "), 823);
-  assertNull(res[425].firstMatch("** Failers"), 824);
-  assertNull(res[425].firstMatch("a\x0d\nb  "), 825);
-  assertNull(res[425].firstMatch("** Failers"), 826);
-  assertNull(res[425].firstMatch("a\x0db"), 827);
-  assertNull(res[425].firstMatch("a\nb  "), 828);
-  assertNull(res[425].firstMatch("a\x0d\nb  "), 829);
-  assertNull(res[425].firstMatch("** Failers"), 830);
-  assertNull(res[425].firstMatch("a\x0db"), 831);
-  assertNull(res[425].firstMatch("a\nb  "), 832);
-  assertNull(res[425].firstMatch("a\x0d\nb  "), 833);
-  assertNull(res[425].firstMatch("a\x85b "), 834);
-  assertNull(res[426].firstMatch("a\x0db"), 835);
-  assertNull(res[426].firstMatch("a\nb"), 836);
-  assertNull(res[426].firstMatch("a\x0d\nb"), 837);
-  assertNull(res[426].firstMatch("** Failers"), 838);
-  assertNull(res[426].firstMatch("a\x85b"), 839);
-  assertNull(res[426].firstMatch("a\x0bb     "), 840);
-  assertNull(res[427].firstMatch("a\x0db"), 841);
-  assertNull(res[427].firstMatch("a\nb"), 842);
-  assertNull(res[427].firstMatch("a\x0d\nb"), 843);
-  assertNull(res[427].firstMatch("a\x85b"), 844);
-  assertNull(res[427].firstMatch("a\x0bb     "), 845);
-  assertNull(res[427].firstMatch("** Failers "), 846);
-  assertNull(res[427].firstMatch("a\x85b<bsr_anycrlf>"), 847);
-  assertNull(res[427].firstMatch("a\x0bb<bsr_anycrlf>"), 848);
-  assertNull(res[428].firstMatch("a\x0db"), 849);
-  assertNull(res[428].firstMatch("a\nb"), 850);
-  assertNull(res[428].firstMatch("a\x0d\nb"), 851);
-  assertNull(res[428].firstMatch("** Failers"), 852);
-  assertNull(res[428].firstMatch("a\x85b"), 853);
-  assertNull(res[428].firstMatch("a\x0bb     "), 854);
-  assertNull(res[429].firstMatch("a\x0db"), 855);
-  assertNull(res[429].firstMatch("a\nb"), 856);
-  assertNull(res[429].firstMatch("a\x0d\nb"), 857);
-  assertNull(res[429].firstMatch("a\x85b"), 858);
-  assertNull(res[429].firstMatch("a\x0bb     "), 859);
-  assertNull(res[429].firstMatch("** Failers "), 860);
-  assertNull(res[429].firstMatch("a\x85b<bsr_anycrlf>"), 861);
-  assertNull(res[429].firstMatch("a\x0bb<bsr_anycrlf>"), 862);
-  assertNull(res[430].firstMatch("a\x0d\n\nb"), 863);
-  assertNull(res[430].firstMatch("a\n\x0d\x0db"), 864);
-  assertNull(res[430].firstMatch("a\x0d\n\x0d\n\x0d\n\x0d\nb"), 865);
-  assertNull(res[430].firstMatch("** Failers"), 866);
-  assertNull(res[430].firstMatch("a\x8585b"), 867);
-  assertNull(res[430].firstMatch("a\x0b\x00bb     "), 868);
-  assertNull(res[431].firstMatch("a\x0d\x0db"), 869);
-  assertNull(res[431].firstMatch("a\n\n\nb"), 870);
-  assertNull(res[431].firstMatch("a\x0d\n\n\x0d\x0db"), 871);
-  assertNull(res[431].firstMatch("a\x8585b"), 872);
-  assertNull(res[431].firstMatch("a\x0b\x00bb     "), 873);
-  assertNull(res[431].firstMatch("** Failers "), 874);
-  assertNull(res[431].firstMatch("a\x0d\x0d\x0d\x0d\x0db "), 875);
-  assertNull(res[431].firstMatch("a\x8585b<bsr_anycrlf>"), 876);
-  assertNull(res[431].firstMatch("a\x0b\x00bb<bsr_anycrlf>"), 877);
-  assertNull(res[431].firstMatch("a\nb"), 878);
-  assertNull(res[431].firstMatch("a\x0db "), 879);
-  assertNull(res[431].firstMatch("a\x85b"), 880);
-  assertNull(res[431].firstMatch("a\nb"), 881);
-  assertNull(res[431].firstMatch("a\x0db "), 882);
-  assertNull(res[431].firstMatch("a\x85b"), 883);
-  assertThrows(() => new RegExp(r"(?-+a)"), 884);
-  assertNull(res[443].firstMatch("aaaa"), 885);
-  assertNull(res[443].firstMatch("bacxxx"), 886);
-  assertNull(res[443].firstMatch("bbaccxxx "), 887);
-  assertNull(res[443].firstMatch("bbbacccxx"), 888);
-  assertNull(res[443].firstMatch("aaaa"), 889);
-  assertNull(res[443].firstMatch("bacxxx"), 890);
-  assertNull(res[443].firstMatch("bbaccxxx "), 891);
-  assertNull(res[443].firstMatch("bbbacccxx"), 892);
-  assertToStringEquals("a,a", res[444].firstMatch("aaaa"), 893);
-  assertNull(res[444].firstMatch("bacxxx"), 894);
-  assertNull(res[444].firstMatch("bbaccxxx "), 895);
-  assertNull(res[444].firstMatch("bbbacccxx"), 896);
-  assertToStringEquals("a,a", res[445].firstMatch("aaaa"), 897);
-  assertNull(res[445].firstMatch("bacxxx"), 898);
-  assertNull(res[445].firstMatch("bbaccxxx "), 899);
-  assertNull(res[445].firstMatch("bbbacccxx"), 900);
-  assertToStringEquals("a,a", res[446].firstMatch("aaaa"), 901);
-  assertNull(res[446].firstMatch("bacxxx"), 902);
-  assertNull(res[446].firstMatch("bbaccxxx "), 903);
-  assertNull(res[446].firstMatch("bbbacccxx"), 904);
-  assertToStringEquals("a,a,a", res[447].firstMatch("aaaa"), 905);
-  assertNull(res[447].firstMatch("bacxxx"), 906);
-  assertNull(res[447].firstMatch("bbaccxxx "), 907);
-  assertNull(res[447].firstMatch("bbbacccxx"), 908);
-  assertNull(res[449].firstMatch("bacxxx"), 909);
-  assertNull(res[449].firstMatch("XaaX"), 910);
-  assertNull(res[449].firstMatch("XAAX "), 911);
-  assertNull(res[449].firstMatch("XaaX"), 912);
-  assertNull(res[449].firstMatch("** Failers "), 913);
-  assertNull(res[449].firstMatch("XAAX "), 914);
-  assertNull(res[449].firstMatch("XaaX"), 915);
-  assertNull(res[449].firstMatch("XAAX "), 916);
-  assertNull(res[449].firstMatch("xzxx"), 917);
-  assertNull(res[449].firstMatch("yzyy "), 918);
-  assertNull(res[449].firstMatch("** Failers"), 919);
-  assertNull(res[449].firstMatch("xxz  "), 920);
-  assertToStringEquals("a,,,a", res[450].firstMatch("cat"), 921);
-  assertToStringEquals("a,,,a", res[451].firstMatch("cat"), 922);
-  assertToStringEquals("TA]", res[452].firstMatch("The ACTA] comes "), 923);
-  assertToStringEquals("TA]", res[453].firstMatch("The ACTA] comes "), 924);
-  assertNull(res[453].firstMatch("abcbabc"), 925);
-  assertNull(res[453].firstMatch("abcbabc"), 926);
-  assertNull(res[453].firstMatch("abcbabc"), 927);
-  assertNull(res[453].firstMatch("** Failers "), 928);
-  assertNull(res[453].firstMatch("abcXabc"), 929);
-  assertNull(res[453].firstMatch("abcXabc"), 930);
-  assertNull(res[453].firstMatch("** Failers "), 931);
-  assertNull(res[453].firstMatch("abcbabc"), 932);
-  assertNull(res[453].firstMatch("xyzbabcxyz"), 933);
-  assertNull(res[456].firstMatch("** Failers"), 934);
-  assertNull(res[456].firstMatch("ab"), 935);
-  assertNull(res[457].firstMatch("** Failers"), 936);
-  assertNull(res[457].firstMatch("ab "), 937);
-  assertNull(res[457].firstMatch("** Failers"), 938);
-  assertNull(res[457].firstMatch("ab "), 939);
-  assertToStringEquals("aXb", res[458].firstMatch("aXb"), 940);
-  assertToStringEquals("a\nb", res[458].firstMatch("a\nb "), 941);
-  assertNull(res[458].firstMatch("** Failers"), 942);
-  assertNull(res[458].firstMatch("ab  "), 943);
-  assertToStringEquals("aXb", res[459].firstMatch("aXb"), 944);
-  assertToStringEquals("a\nX\nXb", res[459].firstMatch("a\nX\nXb "), 945);
-  assertNull(res[459].firstMatch("** Failers"), 946);
-  assertNull(res[459].firstMatch("ab  "), 947);
-  assertToStringEquals("acb", res[463].firstMatch("acb"), 948);
-  assertToStringEquals("ab", res[463].firstMatch("ab"), 949);
-  assertNull(res[463].firstMatch("ax{100}b "), 950);
-  assertNull(res[463].firstMatch("*** Failers"), 951);
-  assertNull(res[463].firstMatch("a\nb  "), 952);
-  assertNull(res[464].firstMatch("ax{4000}xyb "), 953);
-  assertNull(res[464].firstMatch("ax{4000}yb "), 954);
-  assertNull(res[464].firstMatch("ax{4000}x{100}yb "), 955);
-  assertNull(res[464].firstMatch("*** Failers"), 956);
-  assertNull(res[464].firstMatch("ax{4000}b "), 957);
-  assertNull(res[464].firstMatch("ac\ncb "), 958);
-  assertToStringEquals("a\xc0,,\xc0", res[465].firstMatch("a\xc0\x88b"), 959);
-  assertToStringEquals("ax,,x", res[466].firstMatch("ax{100}b"), 960);
-  assertToStringEquals(
-      "a\xc0\x88b,\xc0\x88,b", res[467].firstMatch("a\xc0\x88b"), 961);
-  assertToStringEquals(
-      "ax{100}b,x{100},b", res[468].firstMatch("ax{100}b"), 962);
-  assertToStringEquals(
-      "a\xc0\x92,\xc0,\x92", res[469].firstMatch("a\xc0\x92bcd"), 963);
-  assertToStringEquals("ax{,x,{", res[470].firstMatch("ax{240}bcd"), 964);
-  assertToStringEquals(
-      "a\xc0\x92,\xc0,\x92", res[471].firstMatch("a\xc0\x92bcd"), 965);
-  assertToStringEquals("ax{,x,{", res[472].firstMatch("ax{240}bcd"), 966);
-  assertToStringEquals("a\xc0,,\xc0", res[473].firstMatch("a\xc0\x92bcd"), 967);
-  assertToStringEquals("ax,,x", res[474].firstMatch("ax{240}bcd"), 968);
-  assertNull(res[475].firstMatch("ax{1234}xyb "), 969);
-  assertNull(res[475].firstMatch("ax{1234}x{4321}yb "), 970);
-  assertNull(res[475].firstMatch("ax{1234}x{4321}x{3412}b "), 971);
-  assertNull(res[475].firstMatch("*** Failers"), 972);
-  assertNull(res[475].firstMatch("ax{1234}b "), 973);
-  assertNull(res[475].firstMatch("ac\ncb "), 974);
-  assertToStringEquals(
-      "ax{1234}xyb,x{1234}xy", res[476].firstMatch("ax{1234}xyb "), 975);
-  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
-      res[476].firstMatch("ax{1234}x{4321}yb "), 976);
-  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
-      res[476].firstMatch("ax{1234}x{4321}x{3412}b "), 977);
-  assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij",
-      res[476].firstMatch("axxxxbcdefghijb "), 978);
-  assertToStringEquals(
-      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
-      res[476].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
-      979);
-  assertNull(res[476].firstMatch("*** Failers"), 980);
-  assertToStringEquals(
-      "ax{1234}b,x{1234}", res[476].firstMatch("ax{1234}b "), 981);
-  assertToStringEquals(
-      "ax{1234}xyb,x{1234}xy", res[477].firstMatch("ax{1234}xyb "), 982);
-  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
-      res[477].firstMatch("ax{1234}x{4321}yb "), 983);
-  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
-      res[477].firstMatch("ax{1234}x{4321}x{3412}b "), 984);
-  assertToStringEquals(
-      "axxxxb,xxxx", res[477].firstMatch("axxxxbcdefghijb "), 985);
-  assertToStringEquals(
-      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
-      res[477].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
-      986);
-  assertNull(res[477].firstMatch("*** Failers"), 987);
-  assertToStringEquals(
-      "ax{1234}b,x{1234}", res[477].firstMatch("ax{1234}b "), 988);
-  assertNull(res[478].firstMatch("ax{1234}xyb "), 989);
-  assertNull(res[478].firstMatch("ax{1234}x{4321}yb "), 990);
-  assertNull(res[478].firstMatch("ax{1234}x{4321}x{3412}b "), 991);
-  assertToStringEquals(
-      "axxxxb,xxxx", res[478].firstMatch("axxxxbcdefghijb "), 992);
-  assertNull(res[478].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 993);
-  assertToStringEquals(
-      "axbxxb,xbxx", res[478].firstMatch("axbxxbcdefghijb "), 994);
-  assertToStringEquals(
-      "axxxxxb,xxxxx", res[478].firstMatch("axxxxxbcdefghijb "), 995);
-  assertNull(res[478].firstMatch("*** Failers"), 996);
-  assertNull(res[478].firstMatch("ax{1234}b "), 997);
-  assertNull(res[478].firstMatch("axxxxxxbcdefghijb "), 998);
-  assertNull(res[479].firstMatch("ax{1234}xyb "), 999);
-  assertNull(res[479].firstMatch("ax{1234}x{4321}yb "), 1000);
-  assertNull(res[479].firstMatch("ax{1234}x{4321}x{3412}b "), 1001);
-  assertToStringEquals(
-      "axxxxb,xxxx", res[479].firstMatch("axxxxbcdefghijb "), 1002);
-  assertNull(res[479].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 1003);
-  assertToStringEquals(
-      "axbxxb,xbxx", res[479].firstMatch("axbxxbcdefghijb "), 1004);
-  assertToStringEquals(
-      "axxxxxb,xxxxx", res[479].firstMatch("axxxxxbcdefghijb "), 1005);
-  assertNull(res[479].firstMatch("*** Failers"), 1006);
-  assertNull(res[479].firstMatch("ax{1234}b "), 1007);
-  assertNull(res[479].firstMatch("axxxxxxbcdefghijb "), 1008);
-  assertNull(res[479].firstMatch("*** Failers"), 1009);
-  assertNull(res[479].firstMatch("x{100}"), 1010);
-  assertNull(res[479].firstMatch("aXbcd"), 1011);
-  assertNull(res[479].firstMatch("ax{100}bcd"), 1012);
-  assertNull(res[479].firstMatch("ax{100000}bcd"), 1013);
-  assertNull(res[479].firstMatch("x{100}x{100}x{100}b"), 1014);
-  assertNull(res[479].firstMatch("*** Failers "), 1015);
-  assertNull(res[479].firstMatch("x{100}x{100}b"), 1016);
-  assertNull(res[479].firstMatch("x{ab} "), 1017);
-  assertNull(res[479].firstMatch("\xc2\xab"), 1018);
-  assertNull(res[479].firstMatch("*** Failers "), 1019);
-  assertNull(res[479].firstMatch("\x00{ab}"), 1020);
-  assertNull(res[479].firstMatch("WXYZ"), 1021);
-  assertNull(res[479].firstMatch("x{256}XYZ "), 1022);
-  assertNull(res[479].firstMatch("*** Failers"), 1023);
-  assertNull(res[479].firstMatch("XYZ "), 1024);
-  assertNull(res[480].firstMatch("Xx{1234}"), 1025);
-  assertNull(res[481].firstMatch("Xx{1234}YZ"), 1026);
-  assertToStringEquals("X", res[482].firstMatch("XYZabcdce"), 1027);
-  assertToStringEquals("X", res[483].firstMatch("XYZabcde"), 1028);
-  assertNull(res[484].firstMatch("Xabcdefg   "), 1029);
-  assertNull(res[484].firstMatch("Xx{1234} "), 1030);
-  assertNull(res[484].firstMatch("Xx{1234}YZ"), 1031);
-  assertNull(res[484].firstMatch("Xx{1234}x{512}  "), 1032);
-  assertNull(res[484].firstMatch("Xx{1234}x{512}YZ"), 1033);
-  assertNull(res[485].firstMatch("Xabcdefg   "), 1034);
-  assertNull(res[485].firstMatch("Xx{1234} "), 1035);
-  assertNull(res[485].firstMatch("Xx{1234}YZ"), 1036);
-  assertNull(res[485].firstMatch("Xx{1234}x{512}  "), 1037);
-  assertToStringEquals("bcd", res[486].firstMatch("bcd"), 1038);
-  assertToStringEquals("x{", res[487].firstMatch("x{100}bc"), 1040);
-  assertToStringEquals("x{100}bcA", res[488].firstMatch("x{100}bcAa"), 1041);
-  assertToStringEquals("x{", res[489].firstMatch("x{100}bca"), 1042);
-  assertToStringEquals("bcd", res[490].firstMatch("bcd"), 1043);
-  assertToStringEquals("x{", res[491].firstMatch("x{100}bc"), 1045);
-  assertToStringEquals("x{100}bc", res[492].firstMatch("x{100}bcAa"), 1046);
-  assertToStringEquals("x{", res[493].firstMatch("x{100}bca"), 1047);
-  assertNull(res[493].firstMatch("abcd"), 1048);
-  assertNull(res[493].firstMatch("abcd"), 1049);
-  assertToStringEquals("x{", res[493].firstMatch("x{100}x{100} "), 1050);
-  assertToStringEquals("x{", res[493].firstMatch("x{100}x{100} "), 1051);
-  assertToStringEquals(
-      "x{", res[493].firstMatch("x{100}x{100}x{100}x{100} "), 1052);
-  assertNull(res[493].firstMatch("abce"), 1053);
-  assertToStringEquals(
-      "x{", res[493].firstMatch("x{100}x{100}x{100}x{100} "), 1054);
-  assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100} "), 1055);
-  assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100} "), 1056);
-  assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}x{100} "), 1057);
-  assertNull(res[493].firstMatch("abcdx{100}x{100}x{100}XX"), 1058);
-  assertNull(
-      res[493].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
-      1059);
-  assertNull(
-      res[493].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
-      1060);
-  assertToStringEquals(
-      "Xy", res[493].firstMatch("Xyyyax{100}x{100}bXzzz"), 1061);
-  assertToStringEquals("X", res[496].firstMatch("1X2"), 1062);
-  assertToStringEquals("x", res[496].firstMatch("1x{100}2 "), 1063);
-  assertToStringEquals(">X", res[497].firstMatch("> >X Y"), 1064);
-  assertToStringEquals(">x", res[497].firstMatch("> >x{100} Y"), 1065);
-  assertToStringEquals("1", res[498].firstMatch("x{100}3"), 1066);
-  assertToStringEquals(" ", res[499].firstMatch("x{100} X"), 1067);
-  assertToStringEquals("abcd", res[500].firstMatch("12abcd34"), 1068);
-  assertToStringEquals("*** Failers", res[500].firstMatch("*** Failers"), 1069);
-  assertToStringEquals("  ", res[500].firstMatch("1234  "), 1070);
-  assertToStringEquals("abc", res[501].firstMatch("12abcd34"), 1071);
-  assertToStringEquals("ab", res[501].firstMatch("12ab34"), 1072);
-  assertToStringEquals("***", res[501].firstMatch("*** Failers  "), 1073);
-  assertNull(res[501].firstMatch("1234"), 1074);
-  assertToStringEquals("  ", res[501].firstMatch("12a34  "), 1075);
-  assertToStringEquals("ab", res[502].firstMatch("12abcd34"), 1076);
-  assertToStringEquals("ab", res[502].firstMatch("12ab34"), 1077);
-  assertToStringEquals("**", res[502].firstMatch("*** Failers  "), 1078);
-  assertNull(res[502].firstMatch("1234"), 1079);
-  assertToStringEquals("  ", res[502].firstMatch("12a34  "), 1080);
-  assertToStringEquals("12", res[503].firstMatch("12abcd34"), 1081);
-  assertNull(res[503].firstMatch("*** Failers"), 1082);
-  assertToStringEquals("12", res[504].firstMatch("12abcd34"), 1083);
-  assertToStringEquals("123", res[504].firstMatch("1234abcd"), 1084);
-  assertNull(res[504].firstMatch("*** Failers  "), 1085);
-  assertNull(res[504].firstMatch("1.4 "), 1086);
-  assertToStringEquals("12", res[505].firstMatch("12abcd34"), 1087);
-  assertToStringEquals("12", res[505].firstMatch("1234abcd"), 1088);
-  assertNull(res[505].firstMatch("*** Failers  "), 1089);
-  assertNull(res[505].firstMatch("1.4 "), 1090);
-  assertToStringEquals("12abcd34", res[506].firstMatch("12abcd34"), 1091);
-  assertToStringEquals("***", res[506].firstMatch("*** Failers"), 1092);
-  assertNull(res[506].firstMatch("     "), 1093);
-  assertToStringEquals("12a", res[507].firstMatch("12abcd34"), 1094);
-  assertToStringEquals("123", res[507].firstMatch("1234abcd"), 1095);
-  assertToStringEquals("***", res[507].firstMatch("*** Failers"), 1096);
-  assertNull(res[507].firstMatch("       "), 1097);
-  assertToStringEquals("12", res[508].firstMatch("12abcd34"), 1098);
-  assertToStringEquals("12", res[508].firstMatch("1234abcd"), 1099);
-  assertToStringEquals("**", res[508].firstMatch("*** Failers"), 1100);
-  assertNull(res[508].firstMatch("       "), 1101);
-  assertToStringEquals(">      <", res[509].firstMatch("12>      <34"), 1102);
-  assertNull(res[509].firstMatch("*** Failers"), 1103);
-  assertToStringEquals(">  <", res[510].firstMatch("ab>  <cd"), 1104);
-  assertToStringEquals(">   <", res[510].firstMatch("ab>   <ce"), 1105);
-  assertNull(res[510].firstMatch("*** Failers"), 1106);
-  assertNull(res[510].firstMatch("ab>    <cd "), 1107);
-  assertToStringEquals(">  <", res[511].firstMatch("ab>  <cd"), 1108);
-  assertToStringEquals(">   <", res[511].firstMatch("ab>   <ce"), 1109);
-  assertNull(res[511].firstMatch("*** Failers"), 1110);
-  assertNull(res[511].firstMatch("ab>    <cd "), 1111);
-  assertToStringEquals("12", res[512].firstMatch("12      34"), 1112);
-  assertToStringEquals("Failers", res[512].firstMatch("*** Failers"), 1113);
-  assertNull(res[512].firstMatch("+++=*! "), 1114);
-  assertToStringEquals("ab", res[513].firstMatch("ab  cd"), 1115);
-  assertToStringEquals("abc", res[513].firstMatch("abcd ce"), 1116);
-  assertToStringEquals("Fai", res[513].firstMatch("*** Failers"), 1117);
-  assertNull(res[513].firstMatch("a.b.c"), 1118);
-  assertToStringEquals("ab", res[514].firstMatch("ab  cd"), 1119);
-  assertToStringEquals("ab", res[514].firstMatch("abcd ce"), 1120);
-  assertToStringEquals("Fa", res[514].firstMatch("*** Failers"), 1121);
-  assertNull(res[514].firstMatch("a.b.c"), 1122);
-  assertToStringEquals("====", res[515].firstMatch("12====34"), 1123);
-  assertToStringEquals("*** ", res[515].firstMatch("*** Failers"), 1124);
-  assertToStringEquals(" ", res[515].firstMatch("abcd "), 1125);
-  assertToStringEquals("===", res[516].firstMatch("ab====cd"), 1126);
-  assertToStringEquals("==", res[516].firstMatch("ab==cd"), 1127);
-  assertToStringEquals("***", res[516].firstMatch("*** Failers"), 1128);
-  assertNull(res[516].firstMatch("a.b.c"), 1129);
-  assertToStringEquals("==", res[517].firstMatch("ab====cd"), 1130);
-  assertToStringEquals("==", res[517].firstMatch("ab==cd"), 1131);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers"), 1132);
-  assertNull(res[517].firstMatch("a.b.c"), 1133);
-  assertNull(res[517].firstMatch("x{100}"), 1134);
-  assertNull(res[517].firstMatch("Zx{100}"), 1135);
-  assertNull(res[517].firstMatch("x{100}Z"), 1136);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers "), 1137);
-  assertNull(res[517].firstMatch("Zx{100}"), 1138);
-  assertNull(res[517].firstMatch("x{100}"), 1139);
-  assertNull(res[517].firstMatch("x{100}Z"), 1140);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers "), 1141);
-  assertNull(res[517].firstMatch("abcx{200}X"), 1142);
-  assertNull(res[517].firstMatch("abcx{100}X "), 1143);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers"), 1144);
-  assertToStringEquals("  ", res[517].firstMatch("X  "), 1145);
-  assertNull(res[517].firstMatch("abcx{200}X"), 1146);
-  assertNull(res[517].firstMatch("abcx{100}X "), 1147);
-  assertNull(res[517].firstMatch("abQX "), 1148);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers"), 1149);
-  assertToStringEquals("  ", res[517].firstMatch("X  "), 1150);
-  assertNull(res[517].firstMatch("abcx{100}x{200}x{100}X"), 1151);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers"), 1152);
-  assertNull(res[517].firstMatch("abcx{200}X"), 1153);
-  assertToStringEquals("  ", res[517].firstMatch("X  "), 1154);
-  assertNull(res[517].firstMatch("AX"), 1155);
-  assertNull(res[517].firstMatch("x{150}X"), 1156);
-  assertNull(res[517].firstMatch("x{500}X "), 1157);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers"), 1158);
-  assertNull(res[517].firstMatch("x{100}X"), 1159);
-  assertToStringEquals("  ", res[517].firstMatch("x{200}X   "), 1160);
-  assertNull(res[517].firstMatch("AX"), 1161);
-  assertNull(res[517].firstMatch("x{150}X"), 1162);
-  assertNull(res[517].firstMatch("x{500}X "), 1163);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers"), 1164);
-  assertNull(res[517].firstMatch("x{100}X"), 1165);
-  assertToStringEquals("  ", res[517].firstMatch("x{200}X   "), 1166);
-  assertNull(res[517].firstMatch("QX "), 1167);
-  assertNull(res[517].firstMatch("AX"), 1168);
-  assertNull(res[517].firstMatch("x{500}X "), 1169);
-  assertToStringEquals("**", res[517].firstMatch("*** Failers"), 1170);
-  assertNull(res[517].firstMatch("x{100}X"), 1171);
-  assertNull(res[517].firstMatch("x{150}X"), 1172);
-  assertToStringEquals("  ", res[517].firstMatch("x{200}X   "), 1173);
-  assertNull(res[518].firstMatch("aXb"), 1174);
-  assertNull(res[518].firstMatch("a\nb"), 1175);
-  assertNull(res[519].firstMatch("aXb"), 1176);
-  assertNull(res[519].firstMatch("a\nb"), 1177);
-  assertNull(res[519].firstMatch("*** Failers "), 1178);
-  assertNull(res[519].firstMatch("ax{100}b "), 1179);
-  assertNull(res[519].firstMatch("z"), 1180);
-  assertNull(res[519].firstMatch("Z "), 1181);
-  assertNull(res[519].firstMatch("x{100}"), 1182);
-  assertNull(res[519].firstMatch("*** Failers"), 1183);
-  assertNull(res[519].firstMatch("x{102}"), 1184);
-  assertNull(res[519].firstMatch("y    "), 1185);
-  assertToStringEquals("\xff", res[520].firstMatch(">\xff<"), 1186);
-  assertNull(res[521].firstMatch(">x{ff}<"), 1187);
-  assertToStringEquals("X", res[522].firstMatch("XYZ"), 1188);
-  assertToStringEquals("X", res[523].firstMatch("XYZ"), 1189);
-  assertToStringEquals("x", res[523].firstMatch("x{123} "), 1190);
-  assertToStringEquals(",", res[528].firstMatch("catac"), 1191);
-  assertToStringEquals(",", res[528].firstMatch("ax{256}a "), 1192);
-  assertToStringEquals(",", res[528].firstMatch("x{85}"), 1193);
-  assertToStringEquals(",", res[528].firstMatch("\u1234 "), 1194);
-  assertToStringEquals(",", res[528].firstMatch("\u1234 "), 1195);
-  assertToStringEquals(",", res[528].firstMatch("abcdefg"), 1196);
-  assertToStringEquals(",", res[528].firstMatch("ab"), 1197);
-  assertToStringEquals(",", res[528].firstMatch("a "), 1198);
-  assertToStringEquals("Ax", res[529].firstMatch("Ax{a3}BC"), 1199);
-  assertToStringEquals("Ax", res[530].firstMatch("Ax{a3}BC"), 1200);
-  assertToStringEquals("}=", res[531].firstMatch("+x{a3}== "), 1201);
-  assertToStringEquals("}=", res[532].firstMatch("+x{a3}== "), 1202);
-  assertToStringEquals(
-      "x", res[533].firstMatch("x{442}x{435}x{441}x{442}"), 1203);
-  assertToStringEquals(
-      "x", res[534].firstMatch("x{442}x{435}x{441}x{442}"), 1204);
-  assertToStringEquals(
-      "x", res[535].firstMatch("x{442}x{435}x{441}x{442}"), 1205);
-  assertToStringEquals(
-      "x", res[536].firstMatch("x{442}x{435}x{441}x{442}"), 1206);
-  assertToStringEquals(
-      "{", res[537].firstMatch("x{2442}x{2435}x{2441}x{2442}"), 1207);
-  assertToStringEquals(
-      "{", res[538].firstMatch("x{2442}x{2435}x{2441}x{2442}"), 1208);
-  assertToStringEquals("abc\n\x0dx{442}x{435}x{441}x{442}xyz ",
-      res[539].firstMatch("abc\n\x0dx{442}x{435}x{441}x{442}xyz "), 1209);
-  assertToStringEquals("x{442}x{435}x{441}x{442}",
-      res[539].firstMatch("x{442}x{435}x{441}x{442}"), 1210);
-  assertToStringEquals(
-      "c d", res[540].firstMatch("abc defx{442}x{443}xyz\npqr"), 1211);
-  assertToStringEquals(
-      "c d", res[541].firstMatch("abc defx{442}x{443}xyz\npqr"), 1212);
-  assertNull(res[542].firstMatch("+x{2442}"), 1213);
-  assertNull(res[543].firstMatch("+x{2442}"), 1214);
-  assertNull(res[544].firstMatch("Ax{442}"), 1215);
-  assertNull(res[545].firstMatch("Ax{442}"), 1216);
-  assertNull(res[546].firstMatch("Ax{442}"), 1217);
-  assertNull(res[547].firstMatch("Ax{442}"), 1218);
-  assertNull(res[548].firstMatch("\x19x{e01ff}"), 1219);
-  assertNull(res[549].firstMatch("Ax{422}"), 1220);
-  assertNull(res[550].firstMatch("x{19}x{e01ff}"), 1221);
-  assertNull(res[551].firstMatch("Ax{442}"), 1222);
-  assertNull(res[552].firstMatch("Ax{442}"), 1223);
-  assertNull(res[553].firstMatch("ax{442}"), 1224);
-  assertNull(res[554].firstMatch("+x{2442}"), 1225);
-  assertNull(res[555].firstMatch("Mx{442}"), 1226);
-  assertToStringEquals("abc", res[556].firstMatch("abc"), 1227);
-  assertToStringEquals("abc", res[557].firstMatch("abc"), 1228);
-  assertToStringEquals("abc", res[558].firstMatch("abc"), 1229);
-  assertToStringEquals("abc", res[559].firstMatch("abc"), 1230);
-  assertNull(res[560].firstMatch("x{100}ax{1234}bcd"), 1231);
-  assertNull(res[562].firstMatch("x{0041}x{2262}x{0391}x{002e}"), 1232);
-  assertNull(res[562].firstMatch("x{D55c}x{ad6d}x{C5B4} "), 1233);
-  assertNull(res[562].firstMatch("x{65e5}x{672c}x{8a9e}"), 1234);
-  assertToStringEquals(
-      "{861}X", res[563].firstMatch("x{212ab}x{212ab}x{212ab}x{861}X"), 1235);
-  assertToStringEquals(
-      "x{2", res[564].firstMatch("x{212ab}x{212ab}x{212ab}x{861}"), 1236);
-  assertToStringEquals("x{c", res[564].firstMatch("x{c0}b"), 1237);
-  assertToStringEquals("ax{", res[564].firstMatch("ax{c0}aaaa/ "), 1238);
-  assertToStringEquals("ax{", res[564].firstMatch("ax{c0}aaaa/ "), 1239);
-  assertToStringEquals("ax{", res[564].firstMatch("ax{c0}ax{c0}aaa/ "), 1240);
-  assertToStringEquals("ax{", res[564].firstMatch("ax{c0}aaaa/ "), 1241);
-  assertToStringEquals("ax{", res[564].firstMatch("ax{c0}ax{c0}aaa/ "), 1242);
-  assertToStringEquals("ax{", res[564].firstMatch("ax{c0}aaaa/ "), 1243);
-  assertToStringEquals("ax{", res[564].firstMatch("ax{c0}ax{c0}aaa/ "), 1244);
-  assertToStringEquals(
-      "Sho", res[564].firstMatch("Should produce an error diagnostic"), 1245);
-  assertNull(res[565].firstMatch("Xx{1234}"), 1246);
-  assertNull(res[565].firstMatch("X\nabc "), 1247);
-  assertToStringEquals("b", res[566].firstMatch("bar"), 1248);
-  assertNull(res[566].firstMatch("*** Failers"), 1249);
-  assertNull(res[566].firstMatch("c"), 1250);
-  assertNull(res[566].firstMatch("x{ff}"), 1251);
-  assertNull(res[566].firstMatch("x{100}  "), 1252);
-  assertToStringEquals("c", res[567].firstMatch("c"), 1253);
-  assertToStringEquals("x", res[567].firstMatch("x{ff}"), 1254);
-  assertToStringEquals("x", res[567].firstMatch("x{100}  "), 1255);
-  assertToStringEquals("*", res[567].firstMatch("*** Failers "), 1256);
-  assertNull(res[567].firstMatch("aaa"), 1257);
-  assertToStringEquals("x", res[568].firstMatch("x{f1}"), 1258);
-  assertToStringEquals("x", res[568].firstMatch("x{bf}"), 1259);
-  assertToStringEquals("x", res[568].firstMatch("x{100}"), 1260);
-  assertToStringEquals("x", res[568].firstMatch("x{1000}   "), 1261);
-  assertToStringEquals("*", res[568].firstMatch("*** Failers"), 1262);
-  assertToStringEquals("x", res[568].firstMatch("x{c0} "), 1263);
-  assertToStringEquals("x", res[568].firstMatch("x{f0} "), 1264);
-  assertToStringEquals("1", res[568].firstMatch("1234"), 1265);
-  assertToStringEquals("\"", res[568].firstMatch("\"1234\" "), 1266);
-  assertToStringEquals("x", res[568].firstMatch("x{100}1234"), 1267);
-  assertToStringEquals("\"", res[568].firstMatch("\"x{100}1234\"  "), 1268);
-  assertToStringEquals("x", res[568].firstMatch("x{100}x{100}12ab "), 1269);
-  assertToStringEquals("x", res[568].firstMatch("x{100}x{100}\"12\" "), 1270);
-  assertToStringEquals("*", res[568].firstMatch("*** Failers "), 1271);
-  assertToStringEquals("x", res[568].firstMatch("x{100}x{100}abcd"), 1272);
-  assertToStringEquals("A", res[568].firstMatch("A"), 1273);
-  assertToStringEquals("x", res[568].firstMatch("x{100}"), 1274);
-  assertToStringEquals("Z", res[568].firstMatch("Zx{100}"), 1275);
-  assertToStringEquals("x", res[568].firstMatch("x{100}Z"), 1276);
-  assertToStringEquals("*", res[568].firstMatch("*** Failers "), 1277);
-  assertToStringEquals("Z", res[568].firstMatch("Zx{100}"), 1278);
-  assertToStringEquals("x", res[568].firstMatch("x{100}"), 1279);
-  assertToStringEquals("x", res[568].firstMatch("x{100}Z"), 1280);
-  assertToStringEquals("*", res[568].firstMatch("*** Failers "), 1281);
-  assertToStringEquals("x", res[568].firstMatch("x{100}"), 1282);
-  assertToStringEquals("x", res[568].firstMatch("x{104}"), 1283);
-  assertToStringEquals("*", res[568].firstMatch("*** Failers"), 1284);
-  assertToStringEquals("x", res[568].firstMatch("x{105}"), 1285);
-  assertToStringEquals("x", res[568].firstMatch("x{ff}    "), 1286);
-  assertToStringEquals("x", res[568].firstMatch("x{100}"), 1287);
-  assertToStringEquals("\u0100", res[568].firstMatch("\u0100 "), 1288);
-  assertToStringEquals("\xff", res[569].firstMatch(">\xff<"), 1289);
-  assertNull(res[570].firstMatch(">x{ff}<"), 1290);
-  assertToStringEquals(
-      "\xd6", res[572].firstMatch("\xd6 # Matches without Study"), 1291);
-  assertToStringEquals("x", res[572].firstMatch("x{d6}"), 1292);
-  assertToStringEquals(
-      "\xd6", res[572].firstMatch("\xd6 <-- Same with Study"), 1293);
-  assertToStringEquals("x", res[572].firstMatch("x{d6}"), 1294);
-  assertToStringEquals(
-      "\xd6", res[572].firstMatch("\xd6 # Matches without Study"), 1295);
-  assertToStringEquals("x", res[572].firstMatch("x{d6} "), 1296);
-  assertToStringEquals(
-      "\xd6", res[572].firstMatch("\xd6 <-- Same with Study"), 1297);
-  assertToStringEquals("x", res[572].firstMatch("x{d6} "), 1298);
-  assertToStringEquals("\ufffd", res[572].firstMatch("\ufffd]"), 1299);
-  assertToStringEquals("\ufffd", res[572].firstMatch("\ufffd"), 1300);
-  assertToStringEquals(
-      "\ufffd", res[572].firstMatch("\ufffd\ufffd\ufffd"), 1301);
-  assertToStringEquals(
-      "\ufffd", res[572].firstMatch("\ufffd\ufffd\ufffd?"), 1302);
-  assertNull(res[573].firstMatch("\xc0\x80"), 1303);
-  assertNull(res[573].firstMatch("\xc1\x8f "), 1304);
-  assertNull(res[573].firstMatch("\xe0\x9f\x80"), 1305);
-  assertNull(res[573].firstMatch("\xf0\x8f\x80\x80 "), 1306);
-  assertNull(res[573].firstMatch("\xf8\x87\x80\x80\x80  "), 1307);
-  assertNull(res[573].firstMatch("\xfc\x83\x80\x80\x80\x80"), 1308);
-  assertNull(res[573].firstMatch("\xfe\x80\x80\x80\x80\x80  "), 1309);
-  assertNull(res[573].firstMatch("\xff\x80\x80\x80\x80\x80  "), 1310);
-  assertNull(res[573].firstMatch("\xc3\x8f"), 1311);
-  assertNull(res[573].firstMatch("\xe0\xaf\x80"), 1312);
-  assertNull(res[573].firstMatch("\xe1\x80\x80"), 1313);
-  assertNull(res[573].firstMatch("\xf0\x9f\x80\x80 "), 1314);
-  assertNull(res[573].firstMatch("\xf1\x8f\x80\x80 "), 1315);
-  assertNull(res[573].firstMatch("\xf8\x88\x80\x80\x80  "), 1316);
-  assertNull(res[573].firstMatch("\xf9\x87\x80\x80\x80  "), 1317);
-  assertNull(res[573].firstMatch("\xfc\x84\x80\x80\x80\x80"), 1318);
-  assertNull(res[573].firstMatch("\xfd\x83\x80\x80\x80\x80"), 1319);
-  assertNull(res[573].firstMatch("?\xf8\x88\x80\x80\x80  "), 1320);
-  assertNull(res[573].firstMatch("?\xf9\x87\x80\x80\x80  "), 1321);
-  assertNull(res[573].firstMatch("?\xfc\x84\x80\x80\x80\x80"), 1322);
-  assertNull(res[573].firstMatch("?\xfd\x83\x80\x80\x80\x80"), 1323);
-  assertToStringEquals(".", res[574].firstMatch("A.B"), 1324);
-  assertToStringEquals("{", res[574].firstMatch("Ax{100}B "), 1325);
-  assertToStringEquals("x", res[575].firstMatch("x{100}X   "), 1326);
-  assertToStringEquals("a", res[575].firstMatch("ax{1234}b"), 1327);
-  assertNull(res[577].firstMatch("AxxB     "), 1328);
-  assertToStringEquals(
-      "abc1",
-      res[578].firstMatch(
-          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"),
-      1329);
-  assertToStringEquals(
-      "abc1",
-      res[579].firstMatch(
-          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"),
-      1330);
-  assertNull(res[580].firstMatch("a\nb"), 1331);
-  assertNull(res[580].firstMatch("a\x0db"), 1332);
-  assertNull(res[580].firstMatch("a\x0d\nb"), 1333);
-  assertNull(res[580].firstMatch("a\x0bb"), 1334);
-  assertNull(res[580].firstMatch("a\x0cb"), 1335);
-  assertNull(res[580].firstMatch("ax{85}b   "), 1336);
-  assertNull(res[580].firstMatch("ax{2028}b "), 1337);
-  assertNull(res[580].firstMatch("ax{2029}b "), 1338);
-  assertNull(res[580].firstMatch("** Failers"), 1339);
-  assertNull(res[580].firstMatch("a\n\x0db    "), 1340);
-  assertToStringEquals("ab", res[581].firstMatch("ab"), 1341);
-  assertNull(res[581].firstMatch("a\nb"), 1342);
-  assertNull(res[581].firstMatch("a\x0db"), 1343);
-  assertNull(res[581].firstMatch("a\x0d\nb"), 1344);
-  assertNull(res[581].firstMatch("a\x0bb"), 1345);
-  assertNull(res[581].firstMatch("a\x0cx{2028}x{2029}b"), 1346);
-  assertNull(res[581].firstMatch("ax{85}b   "), 1347);
-  assertNull(res[581].firstMatch("a\n\x0db    "), 1348);
-  assertNull(res[581].firstMatch("a\n\x0dx{85}\x0cb "), 1349);
-  assertNull(res[582].firstMatch("a\nb"), 1350);
-  assertNull(res[582].firstMatch("a\x0db"), 1351);
-  assertNull(res[582].firstMatch("a\x0d\nb"), 1352);
-  assertNull(res[582].firstMatch("a\x0bb"), 1353);
-  assertNull(res[582].firstMatch("a\x0cx{2028}x{2029}b"), 1354);
-  assertNull(res[582].firstMatch("ax{85}b   "), 1355);
-  assertNull(res[582].firstMatch("a\n\x0db    "), 1356);
-  assertNull(res[582].firstMatch("a\n\x0dx{85}\x0cb "), 1357);
-  assertNull(res[582].firstMatch("** Failers"), 1358);
-  assertNull(res[582].firstMatch("ab  "), 1359);
-  assertNull(res[583].firstMatch("a\nb"), 1360);
-  assertNull(res[583].firstMatch("a\n\x0db"), 1361);
-  assertNull(res[583].firstMatch("a\n\x0dx{85}b"), 1362);
-  assertNull(res[583].firstMatch("a\x0d\n\x0d\nb "), 1363);
-  assertNull(res[583].firstMatch("a\x0d\n\x0d\n\x0d\nb "), 1364);
-  assertNull(res[583].firstMatch("a\n\x0d\n\x0db"), 1365);
-  assertNull(res[583].firstMatch("a\n\n\x0d\nb "), 1366);
-  assertNull(res[583].firstMatch("** Failers"), 1367);
-  assertNull(res[583].firstMatch("a\n\n\n\x0db"), 1368);
-  assertNull(res[583].firstMatch("a\x0d"), 1369);
-  assertNull(res[584].firstMatch("X X\n"), 1370);
-  assertNull(res[584].firstMatch("X\x09X\x0b"), 1371);
-  assertNull(res[584].firstMatch("** Failers"), 1372);
-  assertNull(res[584].firstMatch("x{a0} X\n   "), 1373);
-  assertNull(res[585].firstMatch("\x09 x{a0}X\n\x0b\x0c\x0d\n"), 1374);
-  assertNull(res[585].firstMatch("\x09 x{a0}\n\x0b\x0c\x0d\n"), 1375);
-  assertNull(res[585].firstMatch("\x09 x{a0}\n\x0b\x0c"), 1376);
-  assertNull(res[585].firstMatch("** Failers "), 1377);
-  assertNull(res[585].firstMatch("\x09 x{a0}\n\x0b"), 1378);
-  assertNull(res[585].firstMatch(" "), 1379);
-  assertNull(res[586].firstMatch("x{3001}x{3000}x{2030}x{2028}"), 1380);
-  assertNull(res[586].firstMatch("Xx{180e}Xx{85}"), 1381);
-  assertNull(res[586].firstMatch("** Failers"), 1382);
-  assertNull(res[586].firstMatch("x{2009} X\n   "), 1383);
-  assertNull(
-      res[587].firstMatch("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n"),
-      1384);
-  assertNull(
-      res[587].firstMatch("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n"), 1385);
-  assertNull(res[587].firstMatch("\x09 x{202f}\n\x0b\x0c"), 1386);
-  assertNull(res[587].firstMatch("** Failers "), 1387);
-  assertNull(res[587].firstMatch("\x09x{200a}x{a0}x{2028}\x0b"), 1388);
-  assertNull(res[587].firstMatch(" "), 1389);
-  assertNull(res[588].firstMatch(">x{1680}"), 1390);
-  assertNull(
-      res[589].firstMatch(
-          ">x{1680}x{180e}x{2000}x{2003}x{200a}x{202f}x{205f}x{3000}<"),
-      1391);
-  assertToStringEquals("x{1ec5} ", res[593].firstMatch("x{1ec5} "), 1392);
-  assertNull(res[594].firstMatch("x{0}x{d7ff}x{e000}x{10ffff}"), 1393);
-  assertNull(res[594].firstMatch("x{d800}"), 1394);
-  assertNull(res[594].firstMatch("x{d800}?"), 1395);
-  assertNull(res[594].firstMatch("x{da00}"), 1396);
-  assertNull(res[594].firstMatch("x{da00}?"), 1397);
-  assertNull(res[594].firstMatch("x{dfff}"), 1398);
-  assertNull(res[594].firstMatch("x{dfff}?"), 1399);
-  assertNull(res[594].firstMatch("x{110000}    "), 1400);
-  assertNull(res[594].firstMatch("x{110000}?    "), 1401);
-  assertNull(res[594].firstMatch("x{2000000} "), 1402);
-  assertNull(res[594].firstMatch("x{2000000}? "), 1403);
-  assertNull(res[594].firstMatch("x{7fffffff} "), 1404);
-  assertNull(res[594].firstMatch("x{7fffffff}? "), 1405);
-  assertNull(res[595].firstMatch("a\x0db"), 1406);
-  assertNull(res[595].firstMatch("a\nb"), 1407);
-  assertNull(res[595].firstMatch("a\x0d\nb"), 1408);
-  assertNull(res[595].firstMatch("** Failers"), 1409);
-  assertNull(res[595].firstMatch("ax{85}b"), 1410);
-  assertNull(res[595].firstMatch("a\x0bb     "), 1411);
-  assertNull(res[596].firstMatch("a\x0db"), 1412);
-  assertNull(res[596].firstMatch("a\nb"), 1413);
-  assertNull(res[596].firstMatch("a\x0d\nb"), 1414);
-  assertNull(res[596].firstMatch("ax{85}b"), 1415);
-  assertNull(res[596].firstMatch("a\x0bb     "), 1416);
-  assertNull(res[596].firstMatch("** Failers "), 1417);
-  assertNull(res[596].firstMatch("ax{85}b<bsr_anycrlf>"), 1418);
-  assertNull(res[596].firstMatch("a\x0bb<bsr_anycrlf>"), 1419);
-  assertNull(res[597].firstMatch("a\x0db"), 1420);
-  assertNull(res[597].firstMatch("a\nb"), 1421);
-  assertNull(res[597].firstMatch("a\x0d\nb"), 1422);
-  assertNull(res[597].firstMatch("** Failers"), 1423);
-  assertNull(res[597].firstMatch("ax{85}b"), 1424);
-  assertNull(res[597].firstMatch("a\x0bb     "), 1425);
-  assertNull(res[598].firstMatch("a\x0db"), 1426);
-  assertNull(res[598].firstMatch("a\nb"), 1427);
-  assertNull(res[598].firstMatch("a\x0d\nb"), 1428);
-  assertNull(res[598].firstMatch("ax{85}b"), 1429);
-  assertNull(res[598].firstMatch("a\x0bb     "), 1430);
-  assertNull(res[598].firstMatch("** Failers "), 1431);
-  assertNull(res[598].firstMatch("ax{85}b<bsr_anycrlf>"), 1432);
-  assertNull(res[598].firstMatch("a\x0bb<bsr_anycrlf>"), 1433);
-  assertToStringEquals("QQQx{2029}ABCaXYZ=!bPQR",
-      res[599].firstMatch("QQQx{2029}ABCaXYZ=!bPQR"), 1434);
-  assertNull(res[599].firstMatch("** Failers"), 1435);
-  assertNull(res[599].firstMatch("ax{2029}b"), 1436);
-  assertNull(res[599].firstMatch("a\xe2\x80\xa9b "), 1437);
-  assertNull(res[600].firstMatch("ax{1234}b"), 1438);
-  assertToStringEquals("a\nb", res[600].firstMatch("a\nb "), 1439);
-  assertNull(res[600].firstMatch("** Failers"), 1440);
-  assertNull(res[600].firstMatch("ab  "), 1441);
-  assertToStringEquals("aXb", res[601].firstMatch("aXb"), 1442);
-  assertToStringEquals(
-      "a\nX\nXx{1234}b", res[601].firstMatch("a\nX\nXx{1234}b "), 1443);
-  assertNull(res[601].firstMatch("** Failers"), 1444);
-  assertNull(res[601].firstMatch("ab  "), 1445);
-  assertNull(res[601].firstMatch("x{de}x{de}"), 1446);
-  assertNull(res[601].firstMatch("x{123} "), 1447);
-  assertToStringEquals("X", res[602].firstMatch("Ax{1ec5}ABCXYZ"), 1448);
-  assertNull(
-      res[604].firstMatch("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<"), 1449);
-  assertNull(res[604].firstMatch("\npx{300}9!\$ < "), 1450);
-  assertNull(res[604].firstMatch("** Failers "), 1451);
-  assertNull(res[604].firstMatch("apx{300}9!\$ < "), 1452);
-  assertNull(res[605].firstMatch("X"), 1453);
-  assertNull(res[605].firstMatch("** Failers "), 1454);
-  assertNull(res[605].firstMatch(""), 1455);
-  assertNull(res[606].firstMatch("9"), 1456);
-  assertNull(res[606].firstMatch("** Failers "), 1457);
-  assertNull(res[606].firstMatch("x{c0}"), 1458);
-  assertNull(res[607].firstMatch("X"), 1459);
-  assertNull(res[607].firstMatch("** Failers "), 1460);
-  assertNull(res[607].firstMatch("x{30f}"), 1461);
-  assertNull(res[608].firstMatch("X"), 1462);
-  assertNull(res[608].firstMatch("** Failers "), 1463);
-  assertNull(res[608].firstMatch("x{660}"), 1464);
-  assertNull(res[609].firstMatch("X"), 1465);
-  assertNull(res[609].firstMatch("** Failers "), 1466);
-  assertNull(res[609].firstMatch("x{66c}"), 1467);
-  assertNull(res[610].firstMatch("X"), 1468);
-  assertNull(res[610].firstMatch("** Failers "), 1469);
-  assertNull(res[610].firstMatch("x{f01}"), 1470);
-  assertNull(res[611].firstMatch("X"), 1471);
-  assertNull(res[611].firstMatch("** Failers "), 1472);
-  assertNull(res[611].firstMatch("x{1680}"), 1473);
-  assertNull(res[612].firstMatch("x{017}"), 1474);
-  assertNull(res[612].firstMatch("x{09f} "), 1475);
-  assertNull(res[612].firstMatch("** Failers"), 1476);
-  assertNull(res[612].firstMatch("x{0600} "), 1477);
-  assertNull(res[613].firstMatch("x{601}"), 1478);
-  assertNull(res[613].firstMatch("** Failers"), 1479);
-  assertNull(res[613].firstMatch("x{09f} "), 1480);
-  assertNull(res[614].firstMatch("x{e0000}"), 1481);
-  assertNull(res[614].firstMatch("** Failers"), 1482);
-  assertNull(res[614].firstMatch("x{09f} "), 1483);
-  assertNull(res[615].firstMatch("x{f8ff}"), 1484);
-  assertNull(res[615].firstMatch("** Failers"), 1485);
-  assertNull(res[615].firstMatch("x{09f} "), 1486);
-  assertNull(res[616].firstMatch("?x{dfff}"), 1487);
-  assertNull(res[616].firstMatch("** Failers"), 1488);
-  assertNull(res[616].firstMatch("x{09f} "), 1489);
-  assertNull(res[617].firstMatch("a"), 1490);
-  assertNull(res[617].firstMatch("** Failers "), 1491);
-  assertNull(res[617].firstMatch("Z"), 1492);
-  assertNull(res[617].firstMatch("x{e000}  "), 1493);
-  assertNull(res[618].firstMatch("x{2b0}"), 1494);
-  assertNull(res[618].firstMatch("** Failers"), 1495);
-  assertNull(res[618].firstMatch("a "), 1496);
-  assertNull(res[619].firstMatch("x{1bb}"), 1497);
-  assertNull(res[619].firstMatch("x{3400}"), 1498);
-  assertNull(res[619].firstMatch("x{3401}"), 1499);
-  assertNull(res[619].firstMatch("x{4d00}"), 1500);
-  assertNull(res[619].firstMatch("x{4db4}"), 1501);
-  assertNull(res[619].firstMatch("x{4db5}     "), 1502);
-  assertNull(res[619].firstMatch("** Failers"), 1503);
-  assertNull(res[619].firstMatch("a "), 1504);
-  assertNull(res[619].firstMatch("x{2b0}"), 1505);
-  assertNull(res[619].firstMatch("x{4db6} "), 1506);
-  assertNull(res[620].firstMatch("x{1c5}"), 1507);
-  assertNull(res[620].firstMatch("** Failers"), 1508);
-  assertNull(res[620].firstMatch("a "), 1509);
-  assertNull(res[620].firstMatch("x{2b0}"), 1510);
-  assertNull(res[621].firstMatch("A"), 1511);
-  assertNull(res[621].firstMatch("** Failers"), 1512);
-  assertNull(res[621].firstMatch("x{2b0}"), 1513);
-  assertNull(res[622].firstMatch("x{903}"), 1514);
-  assertNull(res[622].firstMatch("** Failers"), 1515);
-  assertNull(res[622].firstMatch("X"), 1516);
-  assertNull(res[622].firstMatch("x{300}"), 1517);
-  assertNull(res[622].firstMatch("   "), 1518);
-  assertNull(res[623].firstMatch("x{488}"), 1519);
-  assertNull(res[623].firstMatch("** Failers"), 1520);
-  assertNull(res[623].firstMatch("X"), 1521);
-  assertNull(res[623].firstMatch("x{903}"), 1522);
-  assertNull(res[623].firstMatch("x{300}"), 1523);
-  assertNull(res[624].firstMatch("x{300}"), 1524);
-  assertNull(res[624].firstMatch("** Failers"), 1525);
-  assertNull(res[624].firstMatch("X"), 1526);
-  assertNull(res[624].firstMatch("x{903}"), 1527);
-  assertNull(
-      res[624].firstMatch(
-          "0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}"),
-      1528);
-  assertNull(
-      res[624].firstMatch(
-          "x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}"),
-      1529);
-  assertNull(
-      res[624].firstMatch(
-          "x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}"),
-      1530);
-  assertNull(res[624].firstMatch("** Failers"), 1531);
-  assertNull(res[624].firstMatch("X"), 1532);
-  assertNull(res[625].firstMatch("x{16ee}"), 1533);
-  assertNull(res[625].firstMatch("** Failers"), 1534);
-  assertNull(res[625].firstMatch("X"), 1535);
-  assertNull(res[625].firstMatch("x{966}"), 1536);
-  assertNull(res[626].firstMatch("x{b2}"), 1537);
-  assertNull(res[626].firstMatch("x{b3}"), 1538);
-  assertNull(res[626].firstMatch("** Failers"), 1539);
-  assertNull(res[626].firstMatch("X"), 1540);
-  assertNull(res[626].firstMatch("x{16ee}"), 1541);
-  assertNull(res[627].firstMatch("_"), 1542);
-  assertNull(res[627].firstMatch("x{203f}"), 1543);
-  assertNull(res[627].firstMatch("** Failers"), 1544);
-  assertNull(res[627].firstMatch("X"), 1545);
-  assertNull(res[627].firstMatch("-"), 1546);
-  assertNull(res[627].firstMatch("x{58a}"), 1547);
-  assertNull(res[628].firstMatch("-"), 1548);
-  assertNull(res[628].firstMatch("x{58a}"), 1549);
-  assertNull(res[628].firstMatch("** Failers"), 1550);
-  assertNull(res[628].firstMatch("X"), 1551);
-  assertNull(res[628].firstMatch("x{203f}"), 1552);
-  assertNull(res[629].firstMatch(")"), 1553);
-  assertNull(res[629].firstMatch("]"), 1554);
-  assertNull(res[629].firstMatch("}"), 1555);
-  assertNull(res[629].firstMatch("x{f3b}"), 1556);
-  assertNull(res[629].firstMatch("** Failers"), 1557);
-  assertNull(res[629].firstMatch("X"), 1558);
-  assertNull(res[629].firstMatch("x{203f}"), 1559);
-  assertNull(res[629].firstMatch("("), 1560);
-  assertNull(res[629].firstMatch("["), 1561);
-  assertNull(res[629].firstMatch("{"), 1562);
-  assertNull(res[629].firstMatch("x{f3c}"), 1563);
-  assertNull(res[630].firstMatch("x{bb}"), 1564);
-  assertNull(res[630].firstMatch("x{2019}"), 1565);
-  assertNull(res[630].firstMatch("** Failers"), 1566);
-  assertNull(res[630].firstMatch("X"), 1567);
-  assertNull(res[630].firstMatch("x{203f}"), 1568);
-  assertNull(res[631].firstMatch("x{ab}"), 1569);
-  assertNull(res[631].firstMatch("x{2018}"), 1570);
-  assertNull(res[631].firstMatch("** Failers"), 1571);
-  assertNull(res[631].firstMatch("X"), 1572);
-  assertNull(res[631].firstMatch("x{203f}"), 1573);
-  assertNull(res[632].firstMatch("!"), 1574);
-  assertNull(res[632].firstMatch("x{37e}"), 1575);
-  assertNull(res[632].firstMatch("** Failers"), 1576);
-  assertNull(res[632].firstMatch("X"), 1577);
-  assertNull(res[632].firstMatch("x{203f}"), 1578);
-  assertNull(res[633].firstMatch("("), 1579);
-  assertNull(res[633].firstMatch("["), 1580);
-  assertNull(res[633].firstMatch("{"), 1581);
-  assertNull(res[633].firstMatch("x{f3c}"), 1582);
-  assertNull(res[633].firstMatch("** Failers"), 1583);
-  assertNull(res[633].firstMatch("X"), 1584);
-  assertNull(res[633].firstMatch(")"), 1585);
-  assertNull(res[633].firstMatch("]"), 1586);
-  assertNull(res[633].firstMatch("}"), 1587);
-  assertNull(res[633].firstMatch("x{f3b}"), 1588);
-  assertNull(res[633].firstMatch("\$x{a2}x{a3}x{a4}x{a5}x{a6}"), 1589);
-  assertNull(res[633].firstMatch("x{9f2}"), 1590);
-  assertNull(res[633].firstMatch("** Failers"), 1591);
-  assertNull(res[633].firstMatch("X"), 1592);
-  assertNull(res[633].firstMatch("x{2c2}"), 1593);
-  assertNull(res[634].firstMatch("x{2c2}"), 1594);
-  assertNull(res[634].firstMatch("** Failers"), 1595);
-  assertNull(res[634].firstMatch("X"), 1596);
-  assertNull(res[634].firstMatch("x{9f2}"), 1597);
-  assertNull(res[634].firstMatch("+<|~x{ac}x{2044}"), 1598);
-  assertNull(res[634].firstMatch("** Failers"), 1599);
-  assertNull(res[634].firstMatch("X"), 1600);
-  assertNull(res[634].firstMatch("x{9f2}"), 1601);
-  assertNull(res[635].firstMatch("x{a6}"), 1602);
-  assertNull(res[635].firstMatch("x{482} "), 1603);
-  assertNull(res[635].firstMatch("** Failers"), 1604);
-  assertNull(res[635].firstMatch("X"), 1605);
-  assertNull(res[635].firstMatch("x{9f2}"), 1606);
-  assertNull(res[636].firstMatch("x{2028}"), 1607);
-  assertNull(res[636].firstMatch("** Failers"), 1608);
-  assertNull(res[636].firstMatch("X"), 1609);
-  assertNull(res[636].firstMatch("x{2029}"), 1610);
-  assertNull(res[637].firstMatch("x{2029}"), 1611);
-  assertNull(res[637].firstMatch("** Failers"), 1612);
-  assertNull(res[637].firstMatch("X"), 1613);
-  assertNull(res[637].firstMatch("x{2028}"), 1614);
-  assertNull(res[638].firstMatch("\\ \\"), 1615);
-  assertNull(res[638].firstMatch("x{a0}"), 1616);
-  assertNull(res[638].firstMatch("x{1680}"), 1617);
-  assertNull(res[638].firstMatch("x{180e}"), 1618);
-  assertNull(res[638].firstMatch("x{2000}"), 1619);
-  assertNull(res[638].firstMatch("x{2001}     "), 1620);
-  assertNull(res[638].firstMatch("** Failers"), 1621);
-  assertNull(res[638].firstMatch("x{2028}"), 1622);
-  assertNull(res[638].firstMatch("x{200d} "), 1623);
-  assertNull(res[638].firstMatch("  x{660}x{661}x{662}ABC"), 1624);
-  assertNull(res[638].firstMatch("  x{660}x{661}x{662}ABC"), 1625);
-  assertNull(res[639].firstMatch("  x{660}x{661}x{662}ABC"), 1626);
-  assertNull(res[640].firstMatch("  x{660}x{661}x{662}ABC"), 1627);
-  assertNull(res[641].firstMatch("  x{660}x{661}x{662}ABC"), 1628);
-  assertNull(res[642].firstMatch("  x{660}x{661}x{662}ABC"), 1629);
-  assertNull(res[643].firstMatch("  x{660}x{661}x{662}ABC"), 1630);
-  assertNull(res[644].firstMatch("  x{660}x{661}x{662}ABC"), 1631);
-  assertNull(res[645].firstMatch("  x{660}x{661}x{662}ABC"), 1632);
-  assertNull(res[646].firstMatch("  x{660}x{661}x{662}ABC"), 1633);
-  assertNull(res[647].firstMatch("  x{660}x{661}x{662}ABC"), 1634);
-  assertNull(res[647].firstMatch("  x{660}x{661}x{662}ABC"), 1635);
-  assertNull(res[647].firstMatch("  x{660}x{661}x{662}ABC"), 1636);
-  assertNull(res[647].firstMatch("  ** Failers"), 1637);
-  assertNull(res[647].firstMatch("  x{660}x{661}x{662}ABC"), 1638);
-  assertNull(res[648].firstMatch("A"), 1639);
-  assertNull(res[648].firstMatch("ax{10a0}B "), 1640);
-  assertNull(res[648].firstMatch("** Failers "), 1641);
-  assertNull(res[648].firstMatch("a"), 1642);
-  assertNull(res[648].firstMatch("x{1d00}  "), 1643);
-  assertNull(res[649].firstMatch("1234"), 1644);
-  assertNull(res[649].firstMatch("** Failers"), 1645);
-  assertNull(res[649].firstMatch("ABC "), 1646);
-  assertNull(res[650].firstMatch("1234"), 1647);
-  assertNull(res[650].firstMatch("** Failers"), 1648);
-  assertNull(res[650].firstMatch("ABC "), 1649);
-  assertNull(res[650].firstMatch("A2XYZ"), 1650);
-  assertNull(res[650].firstMatch("123A5XYZPQR"), 1651);
-  assertNull(res[650].firstMatch("ABAx{660}XYZpqr"), 1652);
-  assertNull(res[650].firstMatch("** Failers"), 1653);
-  assertNull(res[650].firstMatch("AXYZ"), 1654);
-  assertNull(res[650].firstMatch("XYZ     "), 1655);
-  assertNull(res[650].firstMatch("1XYZ"), 1656);
-  assertNull(res[650].firstMatch("AB=XYZ.. "), 1657);
-  assertNull(res[650].firstMatch("XYZ "), 1658);
-  assertNull(res[650].firstMatch("** Failers"), 1659);
-  assertNull(res[650].firstMatch("WXYZ "), 1660);
-  assertNull(res[655].firstMatch("1234"), 1661);
-  assertNull(res[655].firstMatch("1234"), 1662);
-  assertNull(res[655].firstMatch("12-34"), 1663);
-  assertToStringEquals("{", res[655].firstMatch("12+x{661}-34  "), 1664);
-  assertNull(res[655].firstMatch("** Failers"), 1665);
-  assertToStringEquals("d", res[655].firstMatch("abcd  "), 1666);
-  assertToStringEquals("d", res[656].firstMatch("abcd"), 1667);
-  assertNull(res[656].firstMatch("** Failers"), 1668);
-  assertNull(res[656].firstMatch("1234"), 1669);
-  assertNull(
-      res[657].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      1670);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[657].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      1671);
-  assertToStringEquals(" ", res[657].firstMatch(" "), 1672);
-  assertNull(
-      res[657].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      1673);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[657].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      1674);
-  assertNull(
-      res[658].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      1675);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[658].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      1676);
-  assertNull(
-      res[659].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      1677);
-  assertNull(
-      res[659].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      1678);
-  assertNull(
-      res[660].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      1679);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[660].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      1680);
-  assertNull(res[661].firstMatch("a"), 1681);
-  assertNull(res[661].firstMatch("A "), 1682);
-  assertNull(res[662].firstMatch("a"), 1683);
-  assertNull(res[662].firstMatch("A "), 1684);
-  assertNull(res[663].firstMatch("A"), 1685);
-  assertNull(res[663].firstMatch("aZ"), 1686);
-  assertNull(res[663].firstMatch("** Failers"), 1687);
-  assertNull(res[663].firstMatch("abc   "), 1688);
-  assertNull(res[664].firstMatch("A"), 1689);
-  assertNull(res[664].firstMatch("aZ"), 1690);
-  assertNull(res[664].firstMatch("** Failers"), 1691);
-  assertNull(res[664].firstMatch("abc   "), 1692);
-  assertNull(res[665].firstMatch("a"), 1693);
-  assertNull(res[665].firstMatch("Az"), 1694);
-  assertNull(res[665].firstMatch("** Failers"), 1695);
-  assertNull(res[665].firstMatch("ABC   "), 1696);
-  assertNull(res[666].firstMatch("a"), 1697);
-  assertNull(res[666].firstMatch("Az"), 1698);
-  assertNull(res[666].firstMatch("** Failers"), 1699);
-  assertNull(res[666].firstMatch("ABC   "), 1700);
-  assertNull(res[666].firstMatch("x{c0}"), 1701);
-  assertNull(res[666].firstMatch("x{e0} "), 1702);
-  assertNull(res[666].firstMatch("x{c0}"), 1703);
-  assertNull(res[666].firstMatch("x{e0} "), 1704);
-  assertNull(res[666].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb0}"), 1705);
-  assertNull(res[666].firstMatch("** Failers"), 1706);
-  assertNull(res[666].firstMatch("ax{391}x{10427}x{ff3a}x{1fb0}   "), 1707);
-  assertNull(res[666].firstMatch("Ax{3b1}x{10427}x{ff3a}x{1fb0}"), 1708);
-  assertNull(res[666].firstMatch("Ax{391}x{1044F}x{ff3a}x{1fb0}"), 1709);
-  assertNull(res[666].firstMatch("Ax{391}x{10427}x{ff5a}x{1fb0}"), 1710);
-  assertNull(res[666].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb8}"), 1711);
-  assertNull(res[666].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb0}"), 1712);
-  assertNull(res[666].firstMatch("ax{391}x{10427}x{ff3a}x{1fb0}   "), 1713);
-  assertNull(res[666].firstMatch("Ax{3b1}x{10427}x{ff3a}x{1fb0}"), 1714);
-  assertNull(res[666].firstMatch("Ax{391}x{1044F}x{ff3a}x{1fb0}"), 1715);
-  assertNull(res[666].firstMatch("Ax{391}x{10427}x{ff5a}x{1fb0}"), 1716);
-  assertNull(res[666].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb8}"), 1717);
-  assertNull(res[666].firstMatch("x{391}x{3b1}x{3b1}x{3b1}x{391}"), 1718);
-  assertNull(res[666].firstMatch("x{391}x{3b1}x{3b1}x{3b1}x{391}X"), 1719);
-  assertNull(res[666].firstMatch("x{391}x{3b1}x{3b1}x{3b1}x{391}X"), 1720);
-  assertNull(res[666].firstMatch("x{391}"), 1721);
-  assertNull(res[666].firstMatch("x{ff3a}"), 1722);
-  assertNull(res[666].firstMatch("x{3b1}"), 1723);
-  assertNull(res[666].firstMatch("x{ff5a}   "), 1724);
-  assertNull(res[666].firstMatch("x{c0}"), 1725);
-  assertNull(res[666].firstMatch("x{e0} "), 1726);
-  assertNull(res[666].firstMatch("x{104}"), 1727);
-  assertNull(res[666].firstMatch("x{105}"), 1728);
-  assertNull(res[666].firstMatch("x{109}  "), 1729);
-  assertNull(res[666].firstMatch("** Failers"), 1730);
-  assertNull(res[666].firstMatch("x{100}"), 1731);
-  assertNull(res[666].firstMatch("x{10a} "), 1732);
-  assertNull(res[666].firstMatch("Z"), 1733);
-  assertNull(res[666].firstMatch("z"), 1734);
-  assertNull(res[666].firstMatch("x{39c}"), 1735);
-  assertNull(res[666].firstMatch("x{178}"), 1736);
-  assertNull(res[666].firstMatch("|"), 1737);
-  assertNull(res[666].firstMatch("x{80}"), 1738);
-  assertNull(res[666].firstMatch("x{ff}"), 1739);
-  assertNull(res[666].firstMatch("x{100}"), 1740);
-  assertNull(res[666].firstMatch("x{101} "), 1741);
-  assertNull(res[666].firstMatch("** Failers"), 1742);
-  assertNull(res[666].firstMatch("x{102}"), 1743);
-  assertNull(res[666].firstMatch("Y"), 1744);
-  assertNull(res[666].firstMatch("y           "), 1745);
-  assertNull(res[667].firstMatch("A"), 1746);
-  assertNull(res[667].firstMatch("Ax{300}BC "), 1747);
-  assertNull(res[667].firstMatch("Ax{300}x{301}x{302}BC "), 1748);
-  assertNull(res[667].firstMatch("*** Failers"), 1749);
-  assertNull(res[667].firstMatch("x{300}  "), 1750);
-  assertToStringEquals("X", res[668].firstMatch("X123"), 1751);
-  assertNull(res[668].firstMatch("*** Failers"), 1752);
-  assertNull(res[668].firstMatch("AXYZ"), 1753);
-  assertNull(res[669].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1754);
-  assertNull(res[669].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1755);
-  assertNull(res[670].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1756);
-  assertNull(res[670].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1757);
-  assertToStringEquals(
-      "A,,A", res[671].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1758);
-  assertToStringEquals("A,,A",
-      res[671].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1759);
-  assertToStringEquals(
-      "A,,A", res[672].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 1760);
-  assertToStringEquals("A,,A",
-      res[672].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 1761);
-  assertNull(res[673].firstMatch("*** Failers"), 1762);
-  assertNull(res[673].firstMatch("Ax{300}x{301}x{302}"), 1763);
-  assertNull(res[674].firstMatch("Ax{300}x{301}Bx{300}X"), 1764);
-  assertNull(res[674].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 1765);
-  assertNull(res[674].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 1766);
-  assertNull(
-      res[674].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 1767);
-  assertNull(res[675].firstMatch("Ax{300}x{301}Bx{300}X"), 1768);
-  assertNull(res[675].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 1769);
-  assertNull(res[675].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 1770);
-  assertNull(
-      res[675].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 1771);
-  assertNull(res[675].firstMatch("x{2e81}x{3007}x{2f804}x{31a0}"), 1772);
-  assertNull(res[675].firstMatch("** Failers"), 1773);
-  assertNull(res[675].firstMatch("x{2e7f}  "), 1774);
-  assertNull(res[675].firstMatch("x{3105}"), 1775);
-  assertNull(res[675].firstMatch("** Failers"), 1776);
-  assertNull(res[675].firstMatch("x{30ff}  "), 1777);
-  assertNull(res[676].firstMatch("x{06e9}"), 1778);
-  assertNull(res[676].firstMatch("x{060b}"), 1779);
-  assertNull(res[676].firstMatch("** Failers"), 1780);
-  assertNull(res[676].firstMatch("Xx{06e9}   "), 1781);
-  assertNull(res[677].firstMatch("x{2f800}"), 1782);
-  assertNull(res[677].firstMatch("** Failers"), 1783);
-  assertNull(res[677].firstMatch("x{a014}"), 1784);
-  assertNull(res[677].firstMatch("x{a4c6}   "), 1785);
-  assertNull(res[678].firstMatch("AXYZ"), 1786);
-  assertNull(res[678].firstMatch("x{1234}XYZ "), 1787);
-  assertNull(res[678].firstMatch("** Failers"), 1788);
-  assertNull(res[678].firstMatch("X  "), 1789);
-  assertNull(res[679].firstMatch("** Failers"), 1790);
-  assertNull(res[679].firstMatch("AX"), 1791);
-  assertNull(res[680].firstMatch("XYZ"), 1792);
-  assertNull(res[680].firstMatch("AXYZ"), 1793);
-  assertNull(res[680].firstMatch("x{1234}XYZ "), 1794);
-  assertNull(res[680].firstMatch("** Failers"), 1795);
-  assertNull(res[680].firstMatch("ABXYZ   "), 1796);
-  assertNull(res[681].firstMatch("XYZ"), 1797);
-  assertNull(res[681].firstMatch("** Failers"), 1798);
-  assertNull(res[681].firstMatch("AXYZ"), 1799);
-  assertNull(res[681].firstMatch("x{1234}XYZ "), 1800);
-  assertNull(res[681].firstMatch("ABXYZ   "), 1801);
-  assertNull(res[681].firstMatch("AXYZ"), 1802);
-  assertNull(res[681].firstMatch("x{1234}XYZ"), 1803);
-  assertNull(res[681].firstMatch("Ax{1234}XYZ"), 1804);
-  assertNull(res[681].firstMatch("** Failers"), 1805);
-  assertNull(res[681].firstMatch("XYZ"), 1806);
-  assertNull(res[681].firstMatch("** Failers"), 1807);
-  assertNull(res[681].firstMatch("AXYZ"), 1808);
-  assertNull(res[681].firstMatch("x{1234}XYZ"), 1809);
-  assertNull(res[681].firstMatch("Ax{1234}XYZ"), 1810);
-  assertNull(res[681].firstMatch("XYZ"), 1811);
-  assertNull(res[682].firstMatch("XYZ"), 1812);
-  assertNull(res[682].firstMatch("AXYZ"), 1813);
-  assertNull(res[682].firstMatch("x{1234}XYZ"), 1814);
-  assertNull(res[682].firstMatch("Ax{1234}XYZ"), 1815);
-  assertNull(res[682].firstMatch("** Failers"), 1816);
-  assertNull(res[683].firstMatch("XYZ"), 1817);
-  assertNull(res[683].firstMatch("** Failers"), 1818);
-  assertNull(res[683].firstMatch("AXYZ"), 1819);
-  assertNull(res[683].firstMatch("x{1234}XYZ"), 1820);
-  assertNull(res[683].firstMatch("Ax{1234}XYZ"), 1821);
-  assertToStringEquals("AX", res[684].firstMatch("AXYZ"), 1822);
-  assertNull(res[684].firstMatch("x{1234}XYZ "), 1823);
-  assertNull(res[684].firstMatch("** Failers"), 1824);
-  assertNull(res[684].firstMatch("X  "), 1825);
-  assertNull(res[685].firstMatch("** Failers"), 1826);
-  assertToStringEquals("AX", res[685].firstMatch("AX"), 1827);
-  assertToStringEquals("X", res[686].firstMatch("XYZ"), 1828);
-  assertToStringEquals("AX", res[686].firstMatch("AXYZ"), 1829);
-  assertNull(res[686].firstMatch("x{1234}XYZ "), 1830);
-  assertNull(res[686].firstMatch("** Failers"), 1831);
-  assertNull(res[686].firstMatch("ABXYZ   "), 1832);
-  assertToStringEquals("X", res[687].firstMatch("XYZ"), 1833);
-  assertNull(res[687].firstMatch("** Failers"), 1834);
-  assertToStringEquals("AX", res[687].firstMatch("AXYZ"), 1835);
-  assertNull(res[687].firstMatch("x{1234}XYZ "), 1836);
-  assertNull(res[687].firstMatch("ABXYZ   "), 1837);
-  assertToStringEquals("AX", res[688].firstMatch("AXYZ"), 1838);
-  assertNull(res[688].firstMatch("x{1234}XYZ"), 1839);
-  assertNull(res[688].firstMatch("Ax{1234}XYZ"), 1840);
-  assertNull(res[688].firstMatch("** Failers"), 1841);
-  assertNull(res[688].firstMatch("XYZ"), 1842);
-  assertNull(res[689].firstMatch("** Failers"), 1843);
-  assertToStringEquals("AX", res[689].firstMatch("AXYZ"), 1844);
-  assertNull(res[689].firstMatch("x{1234}XYZ"), 1845);
-  assertNull(res[689].firstMatch("Ax{1234}XYZ"), 1846);
-  assertNull(res[689].firstMatch("XYZ"), 1847);
-  assertToStringEquals("X", res[690].firstMatch("XYZ"), 1848);
-  assertToStringEquals("AX", res[690].firstMatch("AXYZ"), 1849);
-  assertNull(res[690].firstMatch("x{1234}XYZ"), 1850);
-  assertNull(res[690].firstMatch("Ax{1234}XYZ"), 1851);
-  assertNull(res[690].firstMatch("** Failers"), 1852);
-  assertToStringEquals("X", res[691].firstMatch("XYZ"), 1853);
-  assertNull(res[691].firstMatch("** Failers"), 1854);
-  assertToStringEquals("AX", res[691].firstMatch("AXYZ"), 1855);
-  assertNull(res[691].firstMatch("x{1234}XYZ"), 1856);
-  assertNull(res[691].firstMatch("Ax{1234}XYZ"), 1857);
-  assertNull(res[692].firstMatch("abcdefgh"), 1858);
-  assertNull(res[692].firstMatch("x{1234}\n\x0dx{3456}xyz "), 1859);
-  assertNull(res[693].firstMatch("abcdefgh"), 1860);
-  assertNull(res[693].firstMatch("x{1234}\n\x0dx{3456}xyz "), 1861);
-  assertNull(res[694].firstMatch("** Failers"), 1862);
-  assertNull(res[694].firstMatch("abcdefgh"), 1863);
-  assertNull(res[694].firstMatch("x{1234}\n\x0dx{3456}xyz "), 1864);
-  assertNull(res[695].firstMatch(" AXY"), 1865);
-  assertNull(res[695].firstMatch(" aXY"), 1866);
-  assertNull(res[695].firstMatch(" x{1c5}XY"), 1867);
-  assertNull(res[695].firstMatch(" ** Failers"), 1868);
-  assertNull(res[695].firstMatch(" x{1bb}XY"), 1869);
-  assertNull(res[695].firstMatch(" x{2b0}XY"), 1870);
-  assertNull(res[695].firstMatch(" !XY      "), 1871);
-  assertNull(res[696].firstMatch(" AXY"), 1872);
-  assertNull(res[696].firstMatch(" aXY"), 1873);
-  assertNull(res[696].firstMatch(" x{1c5}XY"), 1874);
-  assertNull(res[696].firstMatch(" ** Failers"), 1875);
-  assertNull(res[696].firstMatch(" x{1bb}XY"), 1876);
-  assertNull(res[696].firstMatch(" x{2b0}XY"), 1877);
-  assertNull(res[696].firstMatch(" !XY      "), 1878);
-  assertNull(res[696].firstMatch(" AXY"), 1879);
-  assertNull(res[696].firstMatch(" aXY"), 1880);
-  assertNull(res[696].firstMatch(" AbcdeXyz "), 1881);
-  assertNull(res[696].firstMatch(" x{1c5}AbXY"), 1882);
-  assertNull(res[696].firstMatch(" abcDEXypqreXlmn "), 1883);
-  assertNull(res[696].firstMatch(" ** Failers"), 1884);
-  assertNull(res[696].firstMatch(" x{1bb}XY"), 1885);
-  assertNull(res[696].firstMatch(" x{2b0}XY"), 1886);
-  assertNull(res[696].firstMatch(" !XY      "), 1887);
-  assertNull(res[697].firstMatch(" AXY"), 1888);
-  assertNull(res[697].firstMatch(" aXY"), 1889);
-  assertNull(res[697].firstMatch(" AbcdeXyz "), 1890);
-  assertNull(res[697].firstMatch(" x{1c5}AbXY"), 1891);
-  assertNull(res[697].firstMatch(" abcDEXypqreXlmn "), 1892);
-  assertNull(res[697].firstMatch(" ** Failers"), 1893);
-  assertNull(res[697].firstMatch(" x{1bb}XY"), 1894);
-  assertNull(res[697].firstMatch(" x{2b0}XY"), 1895);
-  assertNull(res[697].firstMatch(" !XY      "), 1896);
-  assertNull(res[697].firstMatch(" AXY"), 1897);
-  assertNull(res[697].firstMatch(" aXY"), 1898);
-  assertNull(res[697].firstMatch(" AbcdeXyz "), 1899);
-  assertNull(res[697].firstMatch(" x{1c5}AbXY"), 1900);
-  assertNull(res[697].firstMatch(" abcDEXypqreXlmn "), 1901);
-  assertNull(res[697].firstMatch(" ** Failers"), 1902);
-  assertNull(res[697].firstMatch(" x{1bb}XY"), 1903);
-  assertNull(res[697].firstMatch(" x{2b0}XY"), 1904);
-  assertNull(res[697].firstMatch(" !XY      "), 1905);
-  assertNull(res[698].firstMatch(" AXY"), 1906);
-  assertNull(res[698].firstMatch(" aXY"), 1907);
-  assertNull(res[698].firstMatch(" AbcdeXyz "), 1908);
-  assertNull(res[698].firstMatch(" x{1c5}AbXY"), 1909);
-  assertNull(res[698].firstMatch(" abcDEXypqreXlmn "), 1910);
-  assertNull(res[698].firstMatch(" ** Failers"), 1911);
-  assertNull(res[698].firstMatch(" x{1bb}XY"), 1912);
-  assertNull(res[698].firstMatch(" x{2b0}XY"), 1913);
-  assertNull(res[698].firstMatch(" !XY      "), 1914);
-  assertNull(res[699].firstMatch(" !XY"), 1915);
-  assertNull(res[699].firstMatch(" x{1bb}XY"), 1916);
-  assertNull(res[699].firstMatch(" x{2b0}XY"), 1917);
-  assertNull(res[699].firstMatch(" ** Failers"), 1918);
-  assertNull(res[699].firstMatch(" x{1c5}XY"), 1919);
-  assertNull(res[699].firstMatch(" AXY      "), 1920);
-  assertNull(res[700].firstMatch(" !XY"), 1921);
-  assertNull(res[700].firstMatch(" x{1bb}XY"), 1922);
-  assertNull(res[700].firstMatch(" x{2b0}XY"), 1923);
-  assertNull(res[700].firstMatch(" ** Failers"), 1924);
-  assertNull(res[700].firstMatch(" x{1c5}XY"), 1925);
-  assertNull(res[700].firstMatch(" AXY      "), 1926);
-  assertNull(res[701].firstMatch("\xa0!"), 1927);
-  assertNull(res[701].firstMatch("AabcabcYZ    "), 1928);
-  assertToStringEquals("L=abcX,L=abc,abc", res[702].firstMatch("L=abcX"), 1929);
-  assertNull(res[702].firstMatch("x{c0}"), 1930);
-  assertNull(res[702].firstMatch("x{e0} "), 1931);
-  assertNull(res[702].firstMatch("x{c0}"), 1932);
-  assertNull(res[702].firstMatch("x{e0} "), 1933);
-  assertNull(res[703].firstMatch("x{1b00}x{12000}x{7c0}x{a840}x{10900}"), 1934);
-  assertNull(res[706].firstMatch("123abcdefg"), 1935);
-  assertNull(res[706].firstMatch("123abc\xc4\xc5zz"), 1936);
-  assertNull(res[710].firstMatch("A\x80"), 1937);
-  assertNull(res[725].firstMatch("x{60e} "), 1938);
-  assertNull(res[725].firstMatch("x{656} "), 1939);
-  assertNull(res[725].firstMatch("x{657} "), 1940);
-  assertNull(res[725].firstMatch("x{658} "), 1941);
-  assertNull(res[725].firstMatch("x{659} "), 1942);
-  assertNull(res[725].firstMatch("x{65a} "), 1943);
-  assertNull(res[725].firstMatch("x{65b} "), 1944);
-  assertNull(res[725].firstMatch("x{65c} "), 1945);
-  assertNull(res[725].firstMatch("x{65d} "), 1946);
-  assertNull(res[725].firstMatch("x{65e} "), 1947);
-  assertNull(res[725].firstMatch("x{66a} "), 1948);
-  assertNull(res[725].firstMatch("x{6e9} "), 1949);
-  assertNull(res[725].firstMatch("x{6ef}"), 1950);
-  assertNull(res[725].firstMatch("x{6fa}  "), 1951);
-  assertNull(res[725].firstMatch("** Failers"), 1952);
-  assertNull(res[725].firstMatch("x{600}"), 1953);
-  assertNull(res[725].firstMatch("x{650}"), 1954);
-  assertNull(res[725].firstMatch("x{651}  "), 1955);
-  assertNull(res[725].firstMatch("x{652}  "), 1956);
-  assertNull(res[725].firstMatch("x{653}  "), 1957);
-  assertNull(res[725].firstMatch("x{654} "), 1958);
-  assertNull(res[725].firstMatch("x{655} "), 1959);
-  assertNull(res[725].firstMatch("x{65f}  "), 1960);
-  assertNull(res[726].firstMatch("x{1d2b} "), 1961);
-  assertNull(res[727].firstMatch("x{589}"), 1962);
-  assertNull(res[727].firstMatch("x{60c}"), 1963);
-  assertNull(res[727].firstMatch("x{61f}  "), 1964);
-  assertNull(res[727].firstMatch("x{964}"), 1965);
-  assertNull(res[727].firstMatch("x{965}  "), 1966);
-  assertNull(res[727].firstMatch("x{970}  "), 1967);
-  assertNull(res[728].firstMatch("x{64b}"), 1968);
-  assertNull(res[728].firstMatch("x{654}"), 1969);
-  assertNull(res[728].firstMatch("x{655}"), 1970);
-  assertNull(res[728].firstMatch("x{200c} "), 1971);
-  assertNull(res[728].firstMatch("** Failers"), 1972);
-  assertNull(res[728].firstMatch("x{64a}"), 1973);
-  assertNull(res[728].firstMatch("x{656}     "), 1974);
-  assertNull(res[729].firstMatch("x{10450}"), 1975);
-  assertNull(res[729].firstMatch("x{1047f}"), 1976);
-  assertNull(res[730].firstMatch("x{10400}"), 1977);
-  assertNull(res[730].firstMatch("x{1044f}"), 1978);
-  assertNull(res[731].firstMatch("x{10480}"), 1979);
-  assertNull(res[731].firstMatch("x{1049d}"), 1980);
-  assertNull(res[731].firstMatch("x{104a0}"), 1981);
-  assertNull(res[731].firstMatch("x{104a9}"), 1982);
-  assertNull(res[731].firstMatch("** Failers"), 1983);
-  assertNull(res[731].firstMatch("x{1049e}"), 1984);
-  assertNull(res[731].firstMatch("x{1049f}"), 1985);
-  assertNull(res[731].firstMatch("x{104aa}           "), 1986);
-  assertNull(res[731].firstMatch("\xe2\x80\xa8\xe2\x80\xa8"), 1987);
-  assertNull(res[731].firstMatch("x{2028}x{2028}x{2028}"), 1988);
-  assertNull(res[732].firstMatch("x{c0}x{e0}x{116}x{117}"), 1989);
-  assertNull(res[732].firstMatch("x{c0}x{e0}x{116}x{117}"), 1990);
-  assertNull(
-      res[733].firstMatch(
-          "x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}===="),
-      1991);
-  assertNull(res[733].firstMatch("x{a77d}x{1d79}"), 1992);
-  assertNull(res[733].firstMatch("x{1d79}x{a77d} "), 1993);
-  assertNull(res[733].firstMatch("x{a77d}x{1d79}"), 1994);
-  assertNull(res[733].firstMatch("** Failers "), 1995);
-  assertNull(res[733].firstMatch("x{1d79}x{a77d} "), 1996);
-  assertToStringEquals("AA,A", res[734].firstMatch("AA"), 1997);
-  assertToStringEquals("Aa,A", res[734].firstMatch("Aa"), 1998);
-  assertToStringEquals("aa,a", res[734].firstMatch("aa"), 1999);
-  assertToStringEquals("aA,a", res[734].firstMatch("aA"), 2000);
-  assertNull(res[734].firstMatch("x{de}x{de}"), 2001);
-  assertNull(res[734].firstMatch("x{de}x{fe}"), 2002);
-  assertNull(res[734].firstMatch("x{fe}x{fe}"), 2003);
-  assertNull(res[734].firstMatch("x{fe}x{de}"), 2004);
-  assertNull(res[734].firstMatch("x{10a}x{10a}"), 2005);
-  assertNull(res[734].firstMatch("x{10a}x{10b}"), 2006);
-  assertNull(res[734].firstMatch("x{10b}x{10b}"), 2007);
-  assertNull(res[734].firstMatch("x{10b}x{10a}"), 2008);
-  assertToStringEquals("abc", res[736].firstMatch("abc"), 2009);
-  assertToStringEquals("abc", res[737].firstMatch("abc"), 2010);
-  assertToStringEquals("abbbbc", res[737].firstMatch("abbbbc"), 2011);
-  assertToStringEquals("ac", res[737].firstMatch("ac"), 2012);
-  assertToStringEquals("abc", res[738].firstMatch("abc"), 2013);
-  assertToStringEquals("abbbbbbc", res[738].firstMatch("abbbbbbc"), 2014);
-  assertNull(res[738].firstMatch("*** Failers "), 2015);
-  assertNull(res[738].firstMatch("ac"), 2016);
-  assertNull(res[738].firstMatch("ab"), 2017);
-  assertToStringEquals("a", res[739].firstMatch("a"), 2018);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaa", res[739].firstMatch("aaaaaaaaaaaaaaaaa"), 2019);
-  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[739].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "), 2020);
-  assertToStringEquals("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[739].firstMatch("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaF "), 2021);
-  assertToStringEquals("a,a", res[740].firstMatch("a"), 2022);
-  assertToStringEquals("a,a", res[740].firstMatch("abcd"), 2023);
-  assertToStringEquals("a,a", res[740].firstMatch("african"), 2024);
-  assertToStringEquals("abc", res[741].firstMatch("abcdef"), 2025);
-  assertNull(res[741].firstMatch("*** Failers"), 2026);
-  assertNull(res[741].firstMatch("xyzabc"), 2027);
-  assertNull(res[741].firstMatch("xyz\nabc    "), 2028);
-  assertToStringEquals("abc", res[742].firstMatch("abcdef"), 2029);
-  assertToStringEquals("abc", res[742].firstMatch("xyz\nabc    "), 2030);
-  assertNull(res[742].firstMatch("*** Failers"), 2031);
-  assertNull(res[742].firstMatch("xyzabc"), 2032);
-  assertNull(res[743].firstMatch("abcdef"), 2033);
-  assertNull(res[743].firstMatch("*** Failers"), 2034);
-  assertNull(res[743].firstMatch("xyzabc"), 2035);
-  assertNull(res[743].firstMatch("xyz\nabc    "), 2036);
-  assertNull(res[744].firstMatch("abcdef"), 2037);
-  assertNull(res[744].firstMatch("*** Failers"), 2038);
-  assertNull(res[744].firstMatch("xyzabc"), 2039);
-  assertNull(res[744].firstMatch("xyz\nabc    "), 2040);
-  assertNull(res[745].firstMatch("abcdef"), 2041);
-  assertNull(res[745].firstMatch("xyzabc>3"), 2042);
-  assertNull(res[745].firstMatch("*** Failers"), 2043);
-  assertNull(res[745].firstMatch("xyzabc    "), 2044);
-  assertNull(res[745].firstMatch("xyzabc>2 "), 2045);
-  assertToStringEquals("x9yzz", res[746].firstMatch("x9yzz"), 2046);
-  assertToStringEquals("x0y+z", res[746].firstMatch("x0y+z"), 2047);
-  assertNull(res[746].firstMatch("*** Failers"), 2048);
-  assertNull(res[746].firstMatch("xyz"), 2049);
-  assertNull(res[746].firstMatch("xxy0z     "), 2050);
-  assertToStringEquals("x yzz", res[747].firstMatch("x yzz"), 2051);
-  assertToStringEquals("x y+z", res[747].firstMatch("x y+z"), 2052);
-  assertNull(res[747].firstMatch("*** Failers"), 2053);
-  assertNull(res[747].firstMatch("xyz"), 2054);
-  assertNull(res[747].firstMatch("xxyyz"), 2055);
-  assertToStringEquals("xxy+z", res[748].firstMatch("xxy+z"), 2056);
-  assertNull(res[748].firstMatch("*** Failers"), 2057);
-  assertNull(res[748].firstMatch("xxy0z"), 2058);
-  assertNull(res[748].firstMatch("x+y+z         "), 2059);
-  assertToStringEquals("x+y", res[749].firstMatch("x+y"), 2060);
-  assertToStringEquals("x-y", res[749].firstMatch("x-y"), 2061);
-  assertNull(res[749].firstMatch("*** Failers"), 2062);
-  assertNull(res[749].firstMatch("x\ny"), 2063);
-  assertToStringEquals("x+y", res[750].firstMatch("x+y"), 2064);
-  assertToStringEquals("x-y", res[750].firstMatch("x-y"), 2065);
-  assertNull(res[750].firstMatch("x\ny"), 2066);
-  assertNull(res[750].firstMatch("a+bc+dp+q"), 2067);
-  assertNull(res[750].firstMatch("a+bc\ndp+q"), 2068);
-  assertNull(res[750].firstMatch("x\nyp+q "), 2069);
-  assertNull(res[750].firstMatch("*** Failers "), 2070);
-  assertNull(res[750].firstMatch("a\nbc\ndp+q"), 2071);
-  assertNull(res[750].firstMatch("a+bc\ndp\nq"), 2072);
-  assertNull(res[750].firstMatch("x\nyp\nq "), 2073);
-  assertNull(res[751].firstMatch("ba0"), 2074);
-  assertNull(res[751].firstMatch("*** Failers"), 2075);
-  assertNull(res[751].firstMatch("ba0\n"), 2076);
-  assertNull(res[751].firstMatch("ba0\ncd   "), 2077);
-  assertNull(res[752].firstMatch("ba0"), 2078);
-  assertNull(res[752].firstMatch("*** Failers"), 2079);
-  assertNull(res[752].firstMatch("ba0\n"), 2080);
-  assertNull(res[752].firstMatch("ba0\ncd   "), 2081);
-  assertNull(res[753].firstMatch("ba0"), 2082);
-  assertNull(res[753].firstMatch("ba0\n"), 2083);
-  assertNull(res[753].firstMatch("*** Failers"), 2084);
-  assertNull(res[753].firstMatch("ba0\ncd   "), 2085);
-  assertNull(res[754].firstMatch("ba0"), 2086);
-  assertNull(res[754].firstMatch("ba0\n"), 2087);
-  assertNull(res[754].firstMatch("*** Failers"), 2088);
-  assertNull(res[754].firstMatch("ba0\ncd   "), 2089);
-  assertToStringEquals("a0", res[755].firstMatch("ba0"), 2090);
-  assertNull(res[755].firstMatch("ba0\n"), 2091);
-  assertNull(res[755].firstMatch("*** Failers"), 2092);
-  assertNull(res[755].firstMatch("ba0\ncd   "), 2093);
-  assertToStringEquals("a0", res[756].firstMatch("ba0"), 2094);
-  assertToStringEquals("a0", res[756].firstMatch("ba0\n"), 2095);
-  assertToStringEquals("a0", res[756].firstMatch("ba0\ncd   "), 2096);
-  assertNull(res[756].firstMatch("*** Failers"), 2097);
-  assertToStringEquals("abc", res[757].firstMatch("abc"), 2098);
-  assertToStringEquals("aBc", res[757].firstMatch("aBc"), 2099);
-  assertToStringEquals("ABC", res[757].firstMatch("ABC"), 2100);
-  assertToStringEquals("b", res[758].firstMatch("abcd"), 2101);
-  assertToStringEquals("abz", res[759].firstMatch("abz"), 2102);
-  assertToStringEquals("abb", res[759].firstMatch("abbz"), 2103);
-  assertToStringEquals("az", res[759].firstMatch("azz  "), 2104);
-  assertToStringEquals("yz", res[760].firstMatch("ayzq"), 2105);
-  assertToStringEquals("xyz", res[760].firstMatch("axyzq"), 2106);
-  assertToStringEquals("xxyz", res[760].firstMatch("axxyz"), 2107);
-  assertToStringEquals("xxxyz", res[760].firstMatch("axxxyzq"), 2108);
-  assertToStringEquals("xxxyz", res[760].firstMatch("axxxxyzq"), 2109);
-  assertNull(res[760].firstMatch("*** Failers"), 2110);
-  assertNull(res[760].firstMatch("ax"), 2111);
-  assertNull(res[760].firstMatch("axx     "), 2112);
-  assertNull(res[760].firstMatch("  "), 2113);
-  assertToStringEquals("xxxyz", res[761].firstMatch("axxxyzq"), 2114);
-  assertToStringEquals("xxxyz", res[761].firstMatch("axxxxyzq"), 2115);
-  assertNull(res[761].firstMatch("*** Failers"), 2116);
-  assertNull(res[761].firstMatch("ax"), 2117);
-  assertNull(res[761].firstMatch("axx     "), 2118);
-  assertNull(res[761].firstMatch("ayzq"), 2119);
-  assertNull(res[761].firstMatch("axyzq"), 2120);
-  assertNull(res[761].firstMatch("axxyz"), 2121);
-  assertNull(res[761].firstMatch("  "), 2122);
-  assertToStringEquals("xxyz", res[762].firstMatch("axxyz"), 2123);
-  assertToStringEquals("xxxyz", res[762].firstMatch("axxxyzq"), 2124);
-  assertToStringEquals("xxxyz", res[762].firstMatch("axxxxyzq"), 2125);
-  assertNull(res[762].firstMatch("*** Failers"), 2126);
-  assertNull(res[762].firstMatch("ax"), 2127);
-  assertNull(res[762].firstMatch("axx     "), 2128);
-  assertNull(res[762].firstMatch("ayzq"), 2129);
-  assertNull(res[762].firstMatch("axyzq"), 2130);
-  assertNull(res[762].firstMatch("  "), 2131);
-  assertToStringEquals("b", res[763].firstMatch("bac"), 2132);
-  assertToStringEquals("bcdef", res[763].firstMatch("bcdefax"), 2133);
-  assertToStringEquals("*** F", res[763].firstMatch("*** Failers"), 2134);
-  assertToStringEquals("   ", res[763].firstMatch("aaaaa   "), 2135);
-  assertToStringEquals("b", res[764].firstMatch("bac"), 2136);
-  assertToStringEquals("bcdef", res[764].firstMatch("bcdefax"), 2137);
-  assertToStringEquals("*** F", res[764].firstMatch("*** Failers"), 2138);
-  assertToStringEquals("", res[764].firstMatch("aaaaa   "), 2139);
-  assertToStringEquals("xyz", res[765].firstMatch("xyz"), 2140);
-  assertToStringEquals("wxyz", res[765].firstMatch("awxyza"), 2141);
-  assertToStringEquals("bcdef", res[765].firstMatch("abcdefa"), 2142);
-  assertToStringEquals("bcdef", res[765].firstMatch("abcdefghijk"), 2143);
-  assertToStringEquals("*** F", res[765].firstMatch("*** Failers"), 2144);
-  assertNull(res[765].firstMatch("axya"), 2145);
-  assertNull(res[765].firstMatch("axa"), 2146);
-  assertToStringEquals("     ", res[765].firstMatch("aaaaa         "), 2147);
-  assertToStringEquals("1234", res[766].firstMatch("1234b567"), 2148);
-  assertToStringEquals("", res[766].firstMatch("xyz"), 2149);
-  assertToStringEquals("a", res[767].firstMatch("a1234b567"), 2150);
-  assertToStringEquals("xyz", res[767].firstMatch("xyz"), 2151);
-  assertToStringEquals(" ", res[767].firstMatch(" "), 2152);
-  assertToStringEquals("1234", res[768].firstMatch("ab1234c56"), 2153);
-  assertNull(res[768].firstMatch("*** Failers"), 2154);
-  assertNull(res[768].firstMatch("xyz"), 2155);
-  assertToStringEquals("ab", res[769].firstMatch("ab123c56"), 2156);
-  assertToStringEquals("*** Failers", res[769].firstMatch("*** Failers"), 2157);
-  assertNull(res[769].firstMatch("789"), 2158);
-  assertToStringEquals("5A", res[770].firstMatch("045ABC"), 2159);
-  assertToStringEquals("A", res[770].firstMatch("ABC"), 2160);
-  assertNull(res[770].firstMatch("*** Failers"), 2161);
-  assertNull(res[770].firstMatch("XYZ"), 2162);
-  assertToStringEquals("A", res[771].firstMatch("ABC"), 2163);
-  assertToStringEquals("BA", res[771].firstMatch("BAC"), 2164);
-  assertToStringEquals("A", res[771].firstMatch("9ABC             "), 2165);
-  assertNull(res[771].firstMatch("*** Failers"), 2166);
-  assertToStringEquals("aaaa", res[772].firstMatch("aaaa"), 2167);
-  assertToStringEquals("xyz", res[773].firstMatch("xyz"), 2168);
-  assertToStringEquals("ggggggggxyz", res[773].firstMatch("ggggggggxyz"), 2169);
-  assertToStringEquals("abcdxyz", res[774].firstMatch("abcdxyz"), 2170);
-  assertToStringEquals("axyz", res[774].firstMatch("axyz"), 2171);
-  assertNull(res[774].firstMatch("*** Failers"), 2172);
-  assertNull(res[774].firstMatch("xyz"), 2173);
-  assertToStringEquals("xyz", res[775].firstMatch("xyz"), 2174);
-  assertToStringEquals("cxyz", res[775].firstMatch("cxyz       "), 2175);
-  assertToStringEquals("12X", res[776].firstMatch("12X"), 2176);
-  assertToStringEquals("123X", res[776].firstMatch("123X"), 2177);
-  assertNull(res[776].firstMatch("*** Failers"), 2178);
-  assertNull(res[776].firstMatch("X"), 2179);
-  assertNull(res[776].firstMatch("1X"), 2180);
-  assertNull(res[776].firstMatch("1234X     "), 2181);
-  assertToStringEquals("a4", res[777].firstMatch("a45"), 2182);
-  assertToStringEquals("b9", res[777].firstMatch("b93"), 2183);
-  assertToStringEquals("c9", res[777].firstMatch("c99z"), 2184);
-  assertToStringEquals("d0", res[777].firstMatch("d04"), 2185);
-  assertNull(res[777].firstMatch("*** Failers"), 2186);
-  assertNull(res[777].firstMatch("e45"), 2187);
-  assertNull(res[777].firstMatch("abcd      "), 2188);
-  assertNull(res[777].firstMatch("abcd1234"), 2189);
-  assertNull(res[777].firstMatch("1234  "), 2190);
-  assertToStringEquals("a4", res[778].firstMatch("a45"), 2191);
-  assertToStringEquals("b9", res[778].firstMatch("b93"), 2192);
-  assertToStringEquals("c9", res[778].firstMatch("c99z"), 2193);
-  assertToStringEquals("d0", res[778].firstMatch("d04"), 2194);
-  assertToStringEquals("abcd1", res[778].firstMatch("abcd1234"), 2195);
-  assertToStringEquals("1", res[778].firstMatch("1234  "), 2196);
-  assertNull(res[778].firstMatch("*** Failers"), 2197);
-  assertNull(res[778].firstMatch("e45"), 2198);
-  assertNull(res[778].firstMatch("abcd      "), 2199);
-  assertToStringEquals("a4", res[779].firstMatch("a45"), 2200);
-  assertToStringEquals("b9", res[779].firstMatch("b93"), 2201);
-  assertToStringEquals("c9", res[779].firstMatch("c99z"), 2202);
-  assertToStringEquals("d0", res[779].firstMatch("d04"), 2203);
-  assertToStringEquals("abcd1", res[779].firstMatch("abcd1234"), 2204);
-  assertNull(res[779].firstMatch("*** Failers"), 2205);
-  assertNull(res[779].firstMatch("1234  "), 2206);
-  assertNull(res[779].firstMatch("e45"), 2207);
-  assertNull(res[779].firstMatch("abcd      "), 2208);
-  assertToStringEquals("aX", res[780].firstMatch("aX"), 2209);
-  assertToStringEquals("aaX", res[780].firstMatch("aaX "), 2210);
-  assertToStringEquals("a4", res[781].firstMatch("a45"), 2211);
-  assertToStringEquals("b9", res[781].firstMatch("b93"), 2212);
-  assertToStringEquals("c9", res[781].firstMatch("c99z"), 2213);
-  assertToStringEquals("d0", res[781].firstMatch("d04"), 2214);
-  assertToStringEquals("1", res[781].firstMatch("1234  "), 2215);
-  assertNull(res[781].firstMatch("*** Failers"), 2216);
-  assertNull(res[781].firstMatch("abcd1234"), 2217);
-  assertNull(res[781].firstMatch("e45"), 2218);
-  assertToStringEquals("ab4", res[782].firstMatch("ab45"), 2219);
-  assertToStringEquals("bcd9", res[782].firstMatch("bcd93"), 2220);
-  assertNull(res[782].firstMatch("*** Failers"), 2221);
-  assertNull(res[782].firstMatch("1234 "), 2222);
-  assertNull(res[782].firstMatch("a36 "), 2223);
-  assertNull(res[782].firstMatch("abcd1234"), 2224);
-  assertNull(res[782].firstMatch("ee45"), 2225);
-  assertToStringEquals("abc4,abc", res[783].firstMatch("abc45"), 2226);
-  assertToStringEquals(
-      "abcabcabc4,abc", res[783].firstMatch("abcabcabc45"), 2227);
-  assertToStringEquals("4,", res[783].firstMatch("42xyz "), 2228);
-  assertNull(res[783].firstMatch("*** Failers"), 2229);
-  assertToStringEquals("abc4,abc", res[784].firstMatch("abc45"), 2230);
-  assertToStringEquals(
-      "abcabcabc4,abc", res[784].firstMatch("abcabcabc45"), 2231);
-  assertNull(res[784].firstMatch("*** Failers"), 2232);
-  assertNull(res[784].firstMatch("42xyz "), 2233);
-  assertToStringEquals("abc4,abc", res[785].firstMatch("abc45"), 2234);
-  assertToStringEquals("4,", res[785].firstMatch("42xyz "), 2235);
-  assertNull(res[785].firstMatch("*** Failers"), 2236);
-  assertNull(res[785].firstMatch("abcabcabc45"), 2237);
-  assertToStringEquals("abcabc4,abc", res[786].firstMatch("abcabc45"), 2238);
-  assertToStringEquals(
-      "abcabcabc4,abc", res[786].firstMatch("abcabcabc45"), 2239);
-  assertNull(res[786].firstMatch("*** Failers"), 2240);
-  assertNull(res[786].firstMatch("abcabcabcabc45"), 2241);
-  assertNull(res[786].firstMatch("abc45"), 2242);
-  assertNull(res[786].firstMatch("42xyz "), 2243);
-  assertNull(res[786].firstMatch("1abc2abc3456"), 2244);
-  assertNull(res[786].firstMatch("1abc2xyz3456 "), 2245);
-  assertToStringEquals("ab=ab,ab,ab", res[787].firstMatch("ab=ab"), 2246);
-  assertToStringEquals("ab=ab,ab,ab", res[787].firstMatch("ab=ab"), 2247);
-  assertNull(res[787].firstMatch("abc"), 2248);
-  assertNull(res[787].firstMatch("a(b)c"), 2249);
-  assertNull(res[787].firstMatch("a(b(c))d  "), 2250);
-  assertNull(res[787].firstMatch("*** Failers)"), 2251);
-  assertNull(res[787].firstMatch("a(b(c)d  "), 2252);
-  assertNull(res[787].firstMatch(">abc>123<xyz<"), 2253);
-  assertNull(res[787].firstMatch(">abc>1(2)3<xyz<"), 2254);
-  assertNull(res[787].firstMatch(">abc>(1(2)3)<xyz<"), 2255);
-  assertNull(
-      res[787].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876"),
-      2256);
-  assertNull(res[787].firstMatch("*** Failers "), 2257);
-  assertNull(
-      res[787].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      2258);
-  assertNull(res[787].firstMatch("<>"), 2259);
-  assertNull(res[787].firstMatch("<abcd>"), 2260);
-  assertNull(res[787].firstMatch("<abc <123> hij>"), 2261);
-  assertNull(res[787].firstMatch("<abc <def> hij>"), 2262);
-  assertNull(res[787].firstMatch("<abc<>def> "), 2263);
-  assertNull(res[787].firstMatch("<abc<>      "), 2264);
-  assertNull(res[787].firstMatch("*** Failers"), 2265);
-  assertNull(res[787].firstMatch("<abc"), 2266);
-  assertNull(res[787].firstMatch("abc:                          "), 2267);
-  assertNull(res[787].firstMatch("12                             "), 2268);
-  assertNull(res[787].firstMatch("*** Failers                     "), 2269);
-  assertNull(res[787].firstMatch("123                       "), 2270);
-  assertNull(res[787].firstMatch("xyz                        "), 2271);
-  assertNull(res[787].firstMatch("                            "), 2272);
-  assertNull(res[787].firstMatch("abc:                        "), 2273);
-  assertNull(res[787].firstMatch("12         "), 2274);
-  assertNull(res[787].firstMatch("*** Failers"), 2275);
-  assertNull(res[787].firstMatch("123"), 2276);
-  assertNull(res[787].firstMatch("xyz    "), 2277);
-  assertNull(res[788].firstMatch("abcde:                          "), 2278);
-  assertNull(res[788].firstMatch("*** Failers                     "), 2279);
-  assertNull(res[788].firstMatch("abc.. "), 2280);
-  assertNull(res[788].firstMatch("123                       "), 2281);
-  assertNull(res[788].firstMatch("vwxyz                        "), 2282);
-  assertNull(res[788].firstMatch("                            "), 2283);
-  assertNull(res[789].firstMatch("12         "), 2284);
-  assertNull(res[789].firstMatch("*** Failers"), 2285);
-  assertNull(res[789].firstMatch("abcde:"), 2286);
-  assertNull(res[789].firstMatch("abc..  "), 2287);
-  assertNull(res[789].firstMatch("123"), 2288);
-  assertNull(res[789].firstMatch("vwxyz    "), 2289);
-  assertNull(res[789].firstMatch("abc12345"), 2290);
-  assertNull(res[789].firstMatch("wxy123z"), 2291);
-  assertNull(res[789].firstMatch("*** Failers"), 2292);
-  assertNull(res[789].firstMatch("123abc"), 2293);
-  assertNull(res[789].firstMatch("123abc"), 2294);
-  assertNull(res[789].firstMatch("mno123456 "), 2295);
-  assertNull(res[789].firstMatch("*** Failers"), 2296);
-  assertNull(res[789].firstMatch("abc12345"), 2297);
-  assertNull(res[789].firstMatch("wxy123z"), 2298);
-  assertNull(res[789].firstMatch("abcxyz"), 2299);
-  assertNull(res[789].firstMatch("123abcxyz999 "), 2300);
-  assertToStringEquals("abc", res[791].firstMatch("abcdef"), 2301);
-  assertNull(res[791].firstMatch("*** Failers"), 2302);
-  assertToStringEquals("abc", res[791].firstMatch("abcdefB  "), 2303);
-  assertToStringEquals(",", res[792].firstMatch("bcd"), 2304);
-  assertToStringEquals("aaa,aaa", res[792].firstMatch("aaabcd"), 2305);
-  assertToStringEquals(",", res[792].firstMatch("xyz"), 2306);
-  assertToStringEquals(",", res[792].firstMatch("xyzN  "), 2307);
-  assertToStringEquals(",", res[792].firstMatch("*** Failers"), 2308);
-  assertToStringEquals(",", res[792].firstMatch("bcdN   "), 2309);
-  assertToStringEquals("xyz", res[793].firstMatch("xyz"), 2310);
-  assertNull(res[793].firstMatch("xyz\n"), 2311);
-  assertNull(res[793].firstMatch("*** Failers"), 2312);
-  assertNull(res[793].firstMatch("xyzZ"), 2313);
-  assertNull(res[793].firstMatch("xyz\nZ    "), 2314);
-  assertToStringEquals("xyz", res[794].firstMatch("xyz"), 2315);
-  assertToStringEquals("xyz", res[794].firstMatch("xyz\n "), 2316);
-  assertToStringEquals("xyz", res[794].firstMatch("abcxyz\npqr "), 2317);
-  assertToStringEquals("xyz", res[794].firstMatch("abcxyz\npqrZ "), 2318);
-  assertToStringEquals("xyz", res[794].firstMatch("xyz\nZ    "), 2319);
-  assertNull(res[794].firstMatch("*** Failers"), 2320);
-  assertNull(res[794].firstMatch("xyzZ"), 2321);
-  assertNull(res[795].firstMatch("abcdef"), 2322);
-  assertNull(res[795].firstMatch("defabcxyz>3 "), 2323);
-  assertNull(res[795].firstMatch("*** Failers "), 2324);
-  assertNull(res[795].firstMatch("defabcxyz"), 2325);
-  assertNull(res[796].firstMatch("abP"), 2326);
-  assertNull(res[796].firstMatch("abcdeP"), 2327);
-  assertToStringEquals("abcdef", res[796].firstMatch("abcdefP"), 2328);
-  assertNull(res[796].firstMatch("*** Failers"), 2329);
-  assertNull(res[796].firstMatch("abxP    "), 2330);
-  assertNull(res[797].firstMatch("aP"), 2331);
-  assertNull(res[797].firstMatch("aaP"), 2332);
-  assertNull(res[797].firstMatch("aa2P "), 2333);
-  assertNull(res[797].firstMatch("aaaP"), 2334);
-  assertNull(res[797].firstMatch("aaa23P "), 2335);
-  assertNull(res[797].firstMatch("aaaa12345P"), 2336);
-  assertToStringEquals("aa0z", res[797].firstMatch("aa0zP"), 2337);
-  assertToStringEquals(
-      "aaaa4444444444444z", res[797].firstMatch("aaaa4444444444444zP "), 2338);
-  assertNull(res[797].firstMatch("*** Failers"), 2339);
-  assertNull(res[797].firstMatch("azP "), 2340);
-  assertNull(res[797].firstMatch("aaaaaP "), 2341);
-  assertNull(res[797].firstMatch("a56P "), 2342);
-  assertNull(
-      res[799].firstMatch("adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkjPZ"),
-      2343);
-  assertNull(
-      res[799].firstMatch("lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefaPBZ"), 2344);
-  assertNull(res[799].firstMatch("cdabbbbbbbbPRBZ"), 2345);
-  assertNull(res[799].firstMatch("efabbbbbbbbbbbbbbbbPRBZ"), 2346);
-  assertNull(res[799].firstMatch("bbbbbbbbbbbbcdXyasdfadfPRBZ    "), 2347);
-  assertNull(res[799].firstMatch("abc"), 2348);
-  assertNull(res[799].firstMatch("** Failers"), 2349);
-  assertNull(res[799].firstMatch("def  "), 2350);
-  assertToStringEquals(
-      "the quick brown fox", res[800].firstMatch("the quick brown fox"), 2351);
-  assertNull(res[800].firstMatch("The quick brown FOX"), 2352);
-  assertToStringEquals("the quick brown fox",
-      res[800].firstMatch("What do you know about the quick brown fox?"), 2353);
-  assertNull(
-      res[800].firstMatch("What do you know about THE QUICK BROWN FOX?"), 2354);
-  assertToStringEquals(
-      "the quick brown fox", res[801].firstMatch("the quick brown fox"), 2355);
-  assertToStringEquals(
-      "The quick brown FOX", res[801].firstMatch("The quick brown FOX"), 2356);
-  assertToStringEquals("the quick brown fox",
-      res[801].firstMatch("What do you know about the quick brown fox?"), 2357);
-  assertToStringEquals("THE QUICK BROWN FOX",
-      res[801].firstMatch("What do you know about THE QUICK BROWN FOX?"), 2358);
-  assertToStringEquals("abcd\x09\n\x0d\x0cae9;\$\\?caxyz",
-      res[802].firstMatch("abcd\x09\n\x0d\x0cae9;\$\\?caxyz"), 2359);
-  assertToStringEquals("abxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("abxyzpqrrrabbxyyyypqAzz"), 2360);
-  assertToStringEquals("abxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("abxyzpqrrrabbxyyyypqAzz"), 2361);
-  assertToStringEquals("aabxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aabxyzpqrrrabbxyyyypqAzz"), 2362);
-  assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaabxyzpqrrrabbxyyyypqAzz"), 2363);
-  assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaaabxyzpqrrrabbxyyyypqAzz"), 2364);
-  assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("abcxyzpqrrrabbxyyyypqAzz"), 2365);
-  assertToStringEquals("aabcxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aabcxyzpqrrrabbxyyyypqAzz"), 2366);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypAzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypAzz"), 2367);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqAzz"), 2368);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqAzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqAzz"), 2369);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqAzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqAzz"), 2370);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqAzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqAzz"), 2371);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqAzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqqAzz"), 2372);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypqqqqqqAzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqqqAzz"), 2373);
-  assertToStringEquals("aaaabcxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaaabcxyzpqrrrabbxyyyypqAzz"), 2374);
-  assertToStringEquals("abxyzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("abxyzzpqrrrabbxyyyypqAzz"), 2375);
-  assertToStringEquals("aabxyzzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aabxyzzzpqrrrabbxyyyypqAzz"), 2376);
-  assertToStringEquals("aaabxyzzzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaabxyzzzzpqrrrabbxyyyypqAzz"), 2377);
-  assertToStringEquals("aaaabxyzzzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaaabxyzzzzpqrrrabbxyyyypqAzz"), 2378);
-  assertToStringEquals("abcxyzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("abcxyzzpqrrrabbxyyyypqAzz"), 2379);
-  assertToStringEquals("aabcxyzzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aabcxyzzzpqrrrabbxyyyypqAzz"), 2380);
-  assertToStringEquals("aaabcxyzzzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaabcxyzzzzpqrrrabbxyyyypqAzz"), 2381);
-  assertToStringEquals("aaaabcxyzzzzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch("aaaabcxyzzzzpqrrrabbxyyyypqAzz"), 2382);
-  assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyypqAzz",
-      res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyyypqAzz"), 2383);
-  assertToStringEquals("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz",
-      res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyyyypqAzz"), 2384);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypABzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypABzz"), 2385);
-  assertToStringEquals("aaabcxyzpqrrrabbxyyyypABBzz",
-      res[803].firstMatch("aaabcxyzpqrrrabbxyyyypABBzz"), 2386);
-  assertToStringEquals("aaabxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch(">>>aaabxyzpqrrrabbxyyyypqAzz"), 2387);
-  assertToStringEquals("aaaabxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch(">aaaabxyzpqrrrabbxyyyypqAzz"), 2388);
-  assertToStringEquals("abcxyzpqrrrabbxyyyypqAzz",
-      res[803].firstMatch(">>>>abcxyzpqrrrabbxyyyypqAzz"), 2389);
-  assertNull(res[803].firstMatch("*** Failers"), 2390);
-  assertNull(res[803].firstMatch("abxyzpqrrabbxyyyypqAzz"), 2391);
-  assertNull(res[803].firstMatch("abxyzpqrrrrabbxyyyypqAzz"), 2392);
-  assertNull(res[803].firstMatch("abxyzpqrrrabxyyyypqAzz"), 2393);
-  assertNull(res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz"), 2394);
-  assertNull(res[803].firstMatch("aaaabcxyzzzzpqrrrabbbxyyypqAzz"), 2395);
-  assertNull(res[803].firstMatch("aaabcxyzpqrrrabbxyyyypqqqqqqqAzz"), 2396);
-  assertToStringEquals("abczz,abc", res[804].firstMatch("abczz"), 2397);
-  assertToStringEquals("abcabczz,abc", res[804].firstMatch("abcabczz"), 2398);
-  assertNull(res[804].firstMatch("*** Failers"), 2399);
-  assertNull(res[804].firstMatch("zz"), 2400);
-  assertNull(res[804].firstMatch("abcabcabczz"), 2401);
-  assertNull(res[804].firstMatch(">>abczz"), 2402);
-  assertToStringEquals("bc,b", res[805].firstMatch("bc"), 2403);
-  assertToStringEquals("bbc,b", res[805].firstMatch("bbc"), 2404);
-  assertToStringEquals("bbbc,bb", res[805].firstMatch("bbbc"), 2405);
-  assertToStringEquals("bac,a", res[805].firstMatch("bac"), 2406);
-  assertToStringEquals("bbac,a", res[805].firstMatch("bbac"), 2407);
-  assertToStringEquals("aac,a", res[805].firstMatch("aac"), 2408);
-  assertToStringEquals(
-      "abbbbbbbbbbbc,bbbbbbbbbbb", res[805].firstMatch("abbbbbbbbbbbc"), 2409);
-  assertToStringEquals(
-      "bbbbbbbbbbbac,a", res[805].firstMatch("bbbbbbbbbbbac"), 2410);
-  assertNull(res[805].firstMatch("*** Failers"), 2411);
-  assertNull(res[805].firstMatch("aaac"), 2412);
-  assertNull(res[805].firstMatch("abbbbbbbbbbbac"), 2413);
-  assertToStringEquals("bc,b", res[806].firstMatch("bc"), 2414);
-  assertToStringEquals("bbc,bb", res[806].firstMatch("bbc"), 2415);
-  assertToStringEquals("bbbc,bbb", res[806].firstMatch("bbbc"), 2416);
-  assertToStringEquals("bac,a", res[806].firstMatch("bac"), 2417);
-  assertToStringEquals("bbac,a", res[806].firstMatch("bbac"), 2418);
-  assertToStringEquals("aac,a", res[806].firstMatch("aac"), 2419);
-  assertToStringEquals(
-      "abbbbbbbbbbbc,bbbbbbbbbbb", res[806].firstMatch("abbbbbbbbbbbc"), 2420);
-  assertToStringEquals(
-      "bbbbbbbbbbbac,a", res[806].firstMatch("bbbbbbbbbbbac"), 2421);
-  assertNull(res[806].firstMatch("*** Failers"), 2422);
-  assertNull(res[806].firstMatch("aaac"), 2423);
-  assertNull(res[806].firstMatch("abbbbbbbbbbbac"), 2424);
-  assertToStringEquals("bbc,bb", res[806].firstMatch("bbc"), 2425);
-  assertToStringEquals("babc,ba", res[807].firstMatch("babc"), 2426);
-  assertToStringEquals("bbabc,ba", res[807].firstMatch("bbabc"), 2427);
-  assertToStringEquals("bababc,ba", res[807].firstMatch("bababc"), 2428);
-  assertNull(res[807].firstMatch("*** Failers"), 2429);
-  assertNull(res[807].firstMatch("bababbc"), 2430);
-  assertNull(res[807].firstMatch("babababc"), 2431);
-  assertToStringEquals("babc,ba", res[808].firstMatch("babc"), 2432);
-  assertToStringEquals("bbabc,ba", res[808].firstMatch("bbabc"), 2433);
-  assertToStringEquals("bababc,ba", res[808].firstMatch("bababc"), 2434);
-  assertNull(res[808].firstMatch("*** Failers"), 2435);
-  assertNull(res[808].firstMatch("bababbc"), 2436);
-  assertNull(res[808].firstMatch("babababc"), 2437);
-  assertThrows(() => new RegExp(r"^\\ca\\cA\\c[\\c{\\c:"), 2438);
-  assertNull(res[808].firstMatch("\x01\x01e;z"), 2439);
-  assertToStringEquals("a", res[809].firstMatch("athing"), 2440);
-  assertToStringEquals("b", res[809].firstMatch("bthing"), 2441);
-  assertToStringEquals("]", res[809].firstMatch("]thing"), 2442);
-  assertToStringEquals("c", res[809].firstMatch("cthing"), 2443);
-  assertToStringEquals("d", res[809].firstMatch("dthing"), 2444);
-  assertToStringEquals("e", res[809].firstMatch("ething"), 2445);
-  assertNull(res[809].firstMatch("*** Failers"), 2446);
-  assertNull(res[809].firstMatch("fthing"), 2447);
-  assertNull(res[809].firstMatch("[thing"), 2448);
-  assertNull(res[809].firstMatch("\\thing"), 2449);
-  assertNull(res[810].firstMatch("]thing"), 2450);
-  assertNull(res[810].firstMatch("cthing"), 2451);
-  assertNull(res[810].firstMatch("dthing"), 2452);
-  assertNull(res[810].firstMatch("ething"), 2453);
-  assertNull(res[810].firstMatch("*** Failers"), 2454);
-  assertNull(res[810].firstMatch("athing"), 2455);
-  assertNull(res[810].firstMatch("fthing"), 2456);
-  assertToStringEquals("f", res[811].firstMatch("fthing"), 2457);
-  assertToStringEquals("[", res[811].firstMatch("[thing"), 2458);
-  assertToStringEquals("\\", res[811].firstMatch("\\thing"), 2459);
-  assertToStringEquals("*", res[811].firstMatch("*** Failers"), 2460);
-  assertNull(res[811].firstMatch("athing"), 2461);
-  assertNull(res[811].firstMatch("bthing"), 2462);
-  assertNull(res[811].firstMatch("]thing"), 2463);
-  assertNull(res[811].firstMatch("cthing"), 2464);
-  assertNull(res[811].firstMatch("dthing"), 2465);
-  assertNull(res[811].firstMatch("ething"), 2466);
-  assertNull(res[812].firstMatch("athing"), 2467);
-  assertNull(res[812].firstMatch("fthing"), 2468);
-  assertNull(res[812].firstMatch("*** Failers"), 2469);
-  assertNull(res[812].firstMatch("]thing"), 2470);
-  assertNull(res[812].firstMatch("cthing"), 2471);
-  assertNull(res[812].firstMatch("dthing"), 2472);
-  assertNull(res[812].firstMatch("ething"), 2473);
-  assertNull(res[812].firstMatch("\ufffd"), 2474);
-  assertNull(res[812].firstMatch("\ufffd"), 2475);
-  assertToStringEquals("0", res[813].firstMatch("0"), 2476);
-  assertToStringEquals("1", res[813].firstMatch("1"), 2477);
-  assertToStringEquals("2", res[813].firstMatch("2"), 2478);
-  assertToStringEquals("3", res[813].firstMatch("3"), 2479);
-  assertToStringEquals("4", res[813].firstMatch("4"), 2480);
-  assertToStringEquals("5", res[813].firstMatch("5"), 2481);
-  assertToStringEquals("6", res[813].firstMatch("6"), 2482);
-  assertToStringEquals("7", res[813].firstMatch("7"), 2483);
-  assertToStringEquals("8", res[813].firstMatch("8"), 2484);
-  assertToStringEquals("9", res[813].firstMatch("9"), 2485);
-  assertToStringEquals("10", res[813].firstMatch("10"), 2486);
-  assertToStringEquals("100", res[813].firstMatch("100"), 2487);
-  assertNull(res[813].firstMatch("*** Failers"), 2488);
-  assertNull(res[813].firstMatch("abc"), 2489);
-  assertToStringEquals("enter", res[814].firstMatch("enter"), 2490);
-  assertToStringEquals("inter", res[814].firstMatch("inter"), 2491);
-  assertToStringEquals("uponter", res[814].firstMatch("uponter"), 2492);
-  assertToStringEquals("xxx0", res[815].firstMatch("xxx0"), 2493);
-  assertToStringEquals("xxx1234", res[815].firstMatch("xxx1234"), 2494);
-  assertNull(res[815].firstMatch("*** Failers"), 2495);
-  assertNull(res[815].firstMatch("xxx"), 2496);
-  assertToStringEquals("x123", res[816].firstMatch("x123"), 2497);
-  assertToStringEquals("xx123", res[816].firstMatch("xx123"), 2498);
-  assertToStringEquals("123456", res[816].firstMatch("123456"), 2499);
-  assertNull(res[816].firstMatch("*** Failers"), 2500);
-  assertNull(res[816].firstMatch("123"), 2501);
-  assertToStringEquals("x1234", res[816].firstMatch("x1234"), 2502);
-  assertToStringEquals("x123", res[817].firstMatch("x123"), 2503);
-  assertToStringEquals("xx123", res[817].firstMatch("xx123"), 2504);
-  assertToStringEquals("123456", res[817].firstMatch("123456"), 2505);
-  assertNull(res[817].firstMatch("*** Failers"), 2506);
-  assertNull(res[817].firstMatch("123"), 2507);
-  assertToStringEquals("x1234", res[817].firstMatch("x1234"), 2508);
-  assertToStringEquals("abc!pqr=apquxz.ixr.zzz.ac.uk,abc,pqr",
-      res[818].firstMatch("abc!pqr=apquxz.ixr.zzz.ac.uk"), 2509);
-  assertNull(res[818].firstMatch("*** Failers"), 2510);
-  assertNull(res[818].firstMatch("!pqr=apquxz.ixr.zzz.ac.uk"), 2511);
-  assertNull(res[818].firstMatch("abc!=apquxz.ixr.zzz.ac.uk"), 2512);
-  assertNull(res[818].firstMatch("abc!pqr=apquxz:ixr.zzz.ac.uk"), 2513);
-  assertNull(res[818].firstMatch("abc!pqr=apquxz.ixr.zzz.ac.ukk"), 2514);
-  assertToStringEquals(
-      ":", res[819].firstMatch("Well, we need a colon: somewhere"), 2515);
-  assertNull(res[819].firstMatch("*** Fail if we don't"), 2516);
-  assertToStringEquals("0abc,0abc", res[820].firstMatch("0abc"), 2517);
-  assertToStringEquals("abc,abc", res[820].firstMatch("abc"), 2518);
-  assertToStringEquals("fed,fed", res[820].firstMatch("fed"), 2519);
-  assertToStringEquals("E,E", res[820].firstMatch("E"), 2520);
-  assertToStringEquals("::,::", res[820].firstMatch("::"), 2521);
-  assertToStringEquals("5f03:12C0::932e,5f03:12C0::932e",
-      res[820].firstMatch("5f03:12C0::932e"), 2522);
-  assertToStringEquals("def,def", res[820].firstMatch("fed def"), 2523);
-  assertToStringEquals("ff,ff", res[820].firstMatch("Any old stuff"), 2524);
-  assertNull(res[820].firstMatch("*** Failers"), 2525);
-  assertNull(res[820].firstMatch("0zzz"), 2526);
-  assertNull(res[820].firstMatch("gzzz"), 2527);
-  assertNull(res[820].firstMatch("fed "), 2528);
-  assertNull(res[820].firstMatch("Any old rubbish"), 2529);
-  assertToStringEquals(".1.2.3,1,2,3", res[821].firstMatch(".1.2.3"), 2530);
-  assertToStringEquals(
-      "A.12.123.0,12,123,0", res[821].firstMatch("A.12.123.0"), 2531);
-  assertNull(res[821].firstMatch("*** Failers"), 2532);
-  assertNull(res[821].firstMatch(".1.2.3333"), 2533);
-  assertNull(res[821].firstMatch("1.2.3"), 2534);
-  assertNull(res[821].firstMatch("1234.2.3"), 2535);
-  assertToStringEquals("1 IN SOA non-sp1 non-sp2(,1,non-sp1,non-sp2",
-      res[822].firstMatch("1 IN SOA non-sp1 non-sp2("), 2536);
-  assertToStringEquals(
-      "1    IN    SOA    non-sp1    non-sp2   (,1,non-sp1,non-sp2",
-      res[822].firstMatch("1    IN    SOA    non-sp1    non-sp2   ("),
-      2537);
-  assertNull(res[822].firstMatch("*** Failers"), 2538);
-  assertNull(res[822].firstMatch("1IN SOA non-sp1 non-sp2("), 2539);
-  assertToStringEquals("a.,", res[823].firstMatch("a."), 2540);
-  assertToStringEquals("Z.,", res[823].firstMatch("Z."), 2541);
-  assertToStringEquals("2.,", res[823].firstMatch("2."), 2542);
-  assertToStringEquals(
-      "ab-c.pq-r.,.pq-r", res[823].firstMatch("ab-c.pq-r."), 2543);
-  assertToStringEquals(
-      "sxk.zzz.ac.uk.,.uk", res[823].firstMatch("sxk.zzz.ac.uk."), 2544);
-  assertToStringEquals("x-.y-.,.y-", res[823].firstMatch("x-.y-."), 2545);
-  assertNull(res[823].firstMatch("*** Failers"), 2546);
-  assertNull(res[823].firstMatch("-abc.peq."), 2547);
-  assertToStringEquals("*.a,,,", res[824].firstMatch("*.a"), 2548);
-  assertToStringEquals("*.b0-a,0-a,,", res[824].firstMatch("*.b0-a"), 2549);
-  assertToStringEquals(
-      "*.c3-b.c,3-b,.c,", res[824].firstMatch("*.c3-b.c"), 2550);
-  assertToStringEquals(
-      "*.c-a.b-c,-a,.b-c,-c", res[824].firstMatch("*.c-a.b-c"), 2551);
-  assertNull(res[824].firstMatch("*** Failers"), 2552);
-  assertNull(res[824].firstMatch("*.0"), 2553);
-  assertNull(res[824].firstMatch("*.a-"), 2554);
-  assertNull(res[824].firstMatch("*.a-b.c-"), 2555);
-  assertNull(res[824].firstMatch("*.c-a.0-c"), 2556);
-  assertToStringEquals("abde,de,abd,e", res[825].firstMatch("abde"), 2557);
-  assertToStringEquals("abdf,,abd,f", res[826].firstMatch("abdf"), 2558);
-  assertToStringEquals("ab,abcd,cd,ab", res[827].firstMatch("abcd"), 2559);
-  assertToStringEquals("a.b.c.d,.d", res[828].firstMatch("a.b.c.d"), 2560);
-  assertToStringEquals("A.B.C.D,.D", res[828].firstMatch("A.B.C.D"), 2561);
-  assertToStringEquals(
-      "a.b.c.1.2.3.C,.C", res[828].firstMatch("a.b.c.1.2.3.C"), 2562);
-  assertToStringEquals("\"1234\",", res[829].firstMatch("\"1234\""), 2563);
-  assertToStringEquals("\"abcd\" ;,;", res[829].firstMatch("\"abcd\" ;"), 2564);
-  assertToStringEquals(
-      "\"\" ; rhubarb,; rhubarb", res[829].firstMatch("\"\" ; rhubarb"), 2565);
-  assertNull(res[829].firstMatch("*** Failers"), 2566);
-  assertNull(res[829].firstMatch("\"1234\" : things"), 2567);
-  assertNull(res[830].firstMatch("\\"), 2568);
-  assertNull(res[830].firstMatch("*** Failers"), 2569);
-  assertToStringEquals("ab c", res[831].firstMatch("ab c"), 2570);
-  assertNull(res[831].firstMatch("*** Failers"), 2571);
-  assertNull(res[831].firstMatch("abc"), 2572);
-  assertNull(res[831].firstMatch("ab cde"), 2573);
-  assertToStringEquals("ab c", res[831].firstMatch("ab c"), 2574);
-  assertNull(res[831].firstMatch("*** Failers"), 2575);
-  assertNull(res[831].firstMatch("abc"), 2576);
-  assertNull(res[831].firstMatch("ab cde"), 2577);
-  assertToStringEquals("a bcd", res[832].firstMatch("a bcd"), 2578);
-  assertNull(res[832].firstMatch("a b d"), 2579);
-  assertNull(res[832].firstMatch("*** Failers"), 2580);
-  assertNull(res[832].firstMatch("abcd"), 2581);
-  assertNull(res[832].firstMatch("ab d"), 2582);
-  assertToStringEquals("abcdefhijklm,abc,bc,c,def,ef,f,hij,ij,j,klm,lm,m",
-      res[833].firstMatch("abcdefhijklm"), 2583);
-  assertToStringEquals("abcdefhijklm,bc,c,ef,f,ij,j,lm,m",
-      res[834].firstMatch("abcdefhijklm"), 2584);
-  assertNull(res[835].firstMatch("a+ Z0+\x08\n\x1d\x12"), 2585);
-  assertNull(res[835].firstMatch(".^\$(*+)|{?,?}"), 2586);
-  assertToStringEquals("z", res[836].firstMatch("z"), 2587);
-  assertToStringEquals("az", res[836].firstMatch("az"), 2588);
-  assertToStringEquals("aaaz", res[836].firstMatch("aaaz"), 2589);
-  assertToStringEquals("a", res[836].firstMatch("a"), 2590);
-  assertToStringEquals("aa", res[836].firstMatch("aa"), 2591);
-  assertToStringEquals("aaaa", res[836].firstMatch("aaaa"), 2592);
-  assertToStringEquals("a", res[836].firstMatch("a+"), 2593);
-  assertToStringEquals("aa", res[836].firstMatch("aa+"), 2594);
-  assertToStringEquals("z", res[837].firstMatch("z"), 2595);
-  assertToStringEquals("a", res[837].firstMatch("az"), 2596);
-  assertToStringEquals("a", res[837].firstMatch("aaaz"), 2597);
-  assertToStringEquals("a", res[837].firstMatch("a"), 2598);
-  assertToStringEquals("a", res[837].firstMatch("aa"), 2599);
-  assertToStringEquals("a", res[837].firstMatch("aaaa"), 2600);
-  assertToStringEquals("a", res[837].firstMatch("a+"), 2601);
-  assertToStringEquals("a", res[837].firstMatch("aa+"), 2602);
-  assertToStringEquals("az", res[838].firstMatch("az"), 2603);
-  assertToStringEquals("aaaz", res[838].firstMatch("aaaz"), 2604);
-  assertToStringEquals("aa", res[838].firstMatch("aa"), 2605);
-  assertToStringEquals("aaaa", res[838].firstMatch("aaaa"), 2606);
-  assertToStringEquals("aa", res[838].firstMatch("aa+"), 2607);
-  assertToStringEquals("az", res[839].firstMatch("az"), 2608);
-  assertToStringEquals("aa", res[839].firstMatch("aaaz"), 2609);
-  assertToStringEquals("aa", res[839].firstMatch("aa"), 2610);
-  assertToStringEquals("aa", res[839].firstMatch("aaaa"), 2611);
-  assertToStringEquals("aa", res[839].firstMatch("aa+"), 2612);
-  assertToStringEquals("1234567890", res[840].firstMatch("1234567890"), 2613);
-  assertToStringEquals("12345678ab", res[840].firstMatch("12345678ab"), 2614);
-  assertToStringEquals("12345678__", res[840].firstMatch("12345678__"), 2615);
-  assertNull(res[840].firstMatch("*** Failers"), 2616);
-  assertNull(res[840].firstMatch("1234567"), 2617);
-  assertToStringEquals("uoie", res[841].firstMatch("uoie"), 2618);
-  assertToStringEquals("1234", res[841].firstMatch("1234"), 2619);
-  assertToStringEquals("12345", res[841].firstMatch("12345"), 2620);
-  assertToStringEquals("aaaaa", res[841].firstMatch("aaaaa"), 2621);
-  assertNull(res[841].firstMatch("*** Failers"), 2622);
-  assertNull(res[841].firstMatch("123456"), 2623);
-  assertToStringEquals("uoie", res[842].firstMatch("uoie"), 2624);
-  assertToStringEquals("1234", res[842].firstMatch("1234"), 2625);
-  assertToStringEquals("1234", res[842].firstMatch("12345"), 2626);
-  assertToStringEquals("aaaa", res[842].firstMatch("aaaaa"), 2627);
-  assertToStringEquals("1234", res[842].firstMatch("123456"), 2628);
-  assertToStringEquals("From abcd  Mon Sep 01 12:33,abcd",
-      res[843].firstMatch("From abcd  Mon Sep 01 12:33:02 1997"), 2629);
-  assertToStringEquals("From abcd  Mon Sep 01 12:33,Sep ",
-      res[844].firstMatch("From abcd  Mon Sep 01 12:33:02 1997"), 2630);
-  assertToStringEquals("From abcd  Mon Sep  1 12:33,Sep  ",
-      res[844].firstMatch("From abcd  Mon Sep  1 12:33:02 1997"), 2631);
-  assertNull(res[844].firstMatch("*** Failers"), 2632);
-  assertNull(res[844].firstMatch("From abcd  Sep 01 12:33:02 1997"), 2633);
-  assertNull(res[845].firstMatch("12\n34"), 2634);
-  assertNull(res[845].firstMatch("12\x0d34"), 2635);
-  assertToStringEquals(
-      "brown", res[846].firstMatch("the quick brown\x09 fox"), 2636);
-  assertToStringEquals("foolish see?,lish see?",
-      res[847].firstMatch("foobar is foolish see?"), 2637);
-  assertToStringEquals(
-      "rowbar etc, etc", res[848].firstMatch("foobar crowbar etc"), 2638);
-  assertToStringEquals("barrel,rel", res[848].firstMatch("barrel"), 2639);
-  assertToStringEquals("2barrel,rel", res[848].firstMatch("2barrel"), 2640);
-  assertToStringEquals("A barrel,rel", res[848].firstMatch("A barrel"), 2641);
-  assertToStringEquals("abc,abc", res[849].firstMatch("abc456"), 2642);
-  assertNull(res[849].firstMatch("*** Failers"), 2643);
-  assertNull(res[849].firstMatch("abc123"), 2644);
-  assertToStringEquals("1234", res[850].firstMatch("1234"), 2645);
-  assertToStringEquals("1234", res[851].firstMatch("1234"), 2646);
-  assertToStringEquals("abcd", res[852].firstMatch("abcd"), 2647);
-  assertToStringEquals("abcd", res[853].firstMatch("abcd"), 2648);
-  assertToStringEquals("abc", res[854].firstMatch("the abc"), 2649);
-  assertNull(res[854].firstMatch("*** Failers"), 2650);
-  assertNull(res[854].firstMatch("abc"), 2651);
-  assertToStringEquals("abc", res[855].firstMatch("abc"), 2652);
-  assertNull(res[855].firstMatch("*** Failers"), 2653);
-  assertNull(res[855].firstMatch("the abc"), 2654);
-  assertToStringEquals("aabb,b", res[856].firstMatch("aabbbbb"), 2655);
-  assertToStringEquals("aabbbbb,abbbbb", res[857].firstMatch("aabbbbb"), 2656);
-  assertToStringEquals("aa,a", res[858].firstMatch("aabbbbb"), 2657);
-  assertToStringEquals("aabb,b", res[859].firstMatch("aabbbbb"), 2658);
-  assertToStringEquals("Alan Other <user@dom.ain>",
-      res[860].firstMatch("Alan Other <user@dom.ain>"), 2659);
-  assertToStringEquals(
-      "user@dom.ain", res[860].firstMatch("<user@dom.ain>"), 2660);
-  assertToStringEquals(
-      "user@dom.ain", res[860].firstMatch("user@dom.ain"), 2661);
-  assertToStringEquals(
-      "\"A. Other\" <user.1234@dom.ain> (a comment)",
-      res[860].firstMatch("\"A. Other\" <user.1234@dom.ain> (a comment)"),
-      2662);
-  assertToStringEquals(" Other <user.1234@dom.ain> (a comment)",
-      res[860].firstMatch("A. Other <user.1234@dom.ain> (a comment)"), 2663);
-  assertToStringEquals(
-      "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay",
-      res[860].firstMatch(
-          "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"),
-      2664);
-  assertToStringEquals("user@some.where",
-      res[860].firstMatch("A missing angle <user@some.where"), 2665);
-  assertNull(res[860].firstMatch("*** Failers"), 2666);
-  assertNull(res[860].firstMatch("The quick brown fox"), 2667);
-  assertToStringEquals("Alan Other <user@dom.ain>",
-      res[861].firstMatch("Alan Other <user@dom.ain>"), 2668);
-  assertToStringEquals(
-      "user@dom.ain", res[861].firstMatch("<user@dom.ain>"), 2669);
-  assertToStringEquals(
-      "user@dom.ain", res[861].firstMatch("user@dom.ain"), 2670);
-  assertToStringEquals(
-      "\"A. Other\" <user.1234@dom.ain>",
-      res[861].firstMatch("\"A. Other\" <user.1234@dom.ain> (a comment)"),
-      2671);
-  assertToStringEquals(" Other <user.1234@dom.ain>",
-      res[861].firstMatch("A. Other <user.1234@dom.ain> (a comment)"), 2672);
-  assertToStringEquals(
-      "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay",
-      res[861].firstMatch(
-          "\"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"@x400-re.lay"),
-      2673);
-  assertToStringEquals("user@some.where",
-      res[861].firstMatch("A missing angle <user@some.where"), 2674);
-  assertNull(res[861].firstMatch("*** Failers"), 2675);
-  assertNull(res[861].firstMatch("The quick brown fox"), 2676);
-  assertNull(res[861].firstMatch("abc\x00def\x00pqr\x00xyz\x000AB"), 2677);
-  assertNull(
-      res[861].firstMatch("abc456 abc\x00def\x00pqr\x00xyz\x000ABCDE"), 2678);
-  assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB",
-      res[862].firstMatch("abc\x0def\x00pqr\x000xyz\x0000AB"), 2679);
-  assertToStringEquals("abc\x0def\x00pqr\x000xyz\x0000AB",
-      res[862].firstMatch("abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE"), 2680);
-  assertToStringEquals("\x00", res[863].firstMatch("\x00A"), 2681);
-  assertToStringEquals("\x01", res[863].firstMatch("\x01B"), 2682);
-  assertToStringEquals("\x1f", res[863].firstMatch("\x1fC"), 2683);
-  assertToStringEquals(
-      "\x00\x00\x00\x00", res[864].firstMatch("\x00\x00\x00\x00"), 2684);
-  assertNull(res[865].firstMatch("The Ax0x0Z"), 2685);
-  assertNull(res[865].firstMatch("An A\x00x0\x00Z"), 2686);
-  assertNull(res[865].firstMatch("*** Failers"), 2687);
-  assertNull(res[865].firstMatch("A\x00Z"), 2688);
-  assertNull(res[865].firstMatch("A\x00x0\x00x0Z"), 2689);
-  assertToStringEquals(" ", res[866].firstMatch(" abc"), 2690);
-  assertToStringEquals("\x0c", res[866].firstMatch("\x0cabc"), 2691);
-  assertToStringEquals("\n", res[866].firstMatch("\nabc"), 2692);
-  assertToStringEquals("\x0d", res[866].firstMatch("\x0dabc"), 2693);
-  assertToStringEquals("\x09", res[866].firstMatch("\x09abc"), 2694);
-  assertNull(res[866].firstMatch("*** Failers"), 2695);
-  assertNull(res[866].firstMatch("abc"), 2696);
-  assertToStringEquals("abc", res[867].firstMatch("abc"), 2697);
-  assertToStringEquals("abbbbc", res[868].firstMatch("abbbbc"), 2698);
-  assertToStringEquals("abbbc", res[868].firstMatch("abbbc"), 2699);
-  assertToStringEquals("abbc", res[868].firstMatch("abbc"), 2700);
-  assertNull(res[868].firstMatch("*** Failers"), 2701);
-  assertNull(res[868].firstMatch("abc"), 2702);
-  assertNull(res[868].firstMatch("abbbbbc"), 2703);
-  assertToStringEquals(
-      "track1.title:TBlah blah blah,track1,title,Blah blah blah",
-      res[869].firstMatch("track1.title:TBlah blah blah"),
-      2704);
-  assertToStringEquals(
-      "track1.title:TBlah blah blah,track1,title,Blah blah blah",
-      res[870].firstMatch("track1.title:TBlah blah blah"),
-      2705);
-  assertToStringEquals(
-      "track1.title:TBlah blah blah,track1,title,Blah blah blah",
-      res[871].firstMatch("track1.title:TBlah blah blah"),
-      2706);
-  assertToStringEquals("WXY_^abc", res[872].firstMatch("WXY_^abc"), 2707);
-  assertNull(res[872].firstMatch("*** Failers"), 2708);
-  assertNull(res[872].firstMatch("wxy"), 2709);
-  assertToStringEquals("WXY_^abc", res[873].firstMatch("WXY_^abc"), 2710);
-  assertToStringEquals("wxy_^ABC", res[873].firstMatch("wxy_^ABC"), 2711);
-  assertToStringEquals("WXY_^abc", res[874].firstMatch("WXY_^abc"), 2712);
-  assertToStringEquals("wxy_^ABC", res[874].firstMatch("wxy_^ABC"), 2713);
-  assertToStringEquals("abc", res[875].firstMatch("abc"), 2714);
-  assertToStringEquals("abc", res[875].firstMatch("qqq\nabc"), 2715);
-  assertToStringEquals("abc", res[875].firstMatch("abc\nzzz"), 2716);
-  assertToStringEquals("abc", res[875].firstMatch("qqq\nabc\nzzz"), 2717);
-  assertToStringEquals("abc", res[876].firstMatch("abc"), 2718);
-  assertNull(res[876].firstMatch("*** Failers"), 2719);
-  assertNull(res[876].firstMatch("qqq\nabc"), 2720);
-  assertNull(res[876].firstMatch("abc\nzzz"), 2721);
-  assertNull(res[876].firstMatch("qqq\nabc\nzzz"), 2722);
-  assertNull(res[877].firstMatch("abc"), 2723);
-  assertNull(res[877].firstMatch("abc\n "), 2724);
-  assertNull(res[877].firstMatch("*** Failers"), 2725);
-  assertNull(res[877].firstMatch("qqq\nabc"), 2726);
-  assertNull(res[877].firstMatch("abc\nzzz"), 2727);
-  assertNull(res[877].firstMatch("qqq\nabc\nzzz"), 2728);
-  assertNull(res[878].firstMatch("abc\ndef"), 2729);
-  assertNull(res[879].firstMatch("*** Failers"), 2730);
-  assertNull(res[879].firstMatch("abc\ndef"), 2731);
-  assertToStringEquals("b", res[880].firstMatch("b::c"), 2732);
-  assertToStringEquals("::", res[880].firstMatch("c::b"), 2733);
-  assertToStringEquals("az-", res[881].firstMatch("az-"), 2734);
-  assertToStringEquals("a", res[881].firstMatch("*** Failers"), 2735);
-  assertNull(res[881].firstMatch("b"), 2736);
-  assertToStringEquals("za-", res[882].firstMatch("za-"), 2737);
-  assertToStringEquals("a", res[882].firstMatch("*** Failers"), 2738);
-  assertNull(res[882].firstMatch("b"), 2739);
-  assertToStringEquals("a-z", res[883].firstMatch("a-z"), 2740);
-  assertToStringEquals("a", res[883].firstMatch("*** Failers"), 2741);
-  assertNull(res[883].firstMatch("b"), 2742);
-  assertToStringEquals("abcdxyz", res[884].firstMatch("abcdxyz"), 2743);
-  assertToStringEquals("12-34", res[885].firstMatch("12-34"), 2744);
-  assertNull(res[885].firstMatch("*** Failers"), 2745);
-  assertNull(res[885].firstMatch("aaa"), 2746);
-  assertToStringEquals("12-34z", res[886].firstMatch("12-34z"), 2747);
-  assertNull(res[886].firstMatch("*** Failers"), 2748);
-  assertNull(res[886].firstMatch("aaa"), 2749);
-  assertToStringEquals("\\", res[887].firstMatch("\\\\"), 2750);
-  assertToStringEquals(" Z", res[888].firstMatch("the Zoo"), 2751);
-  assertNull(res[888].firstMatch("*** Failers"), 2752);
-  assertNull(res[888].firstMatch("Zulu"), 2753);
-  assertToStringEquals("ab{3cd", res[889].firstMatch("ab{3cd"), 2754);
-  assertToStringEquals("ab{3,cd", res[890].firstMatch("ab{3,cd"), 2755);
-  assertToStringEquals("ab{3,4a}cd", res[891].firstMatch("ab{3,4a}cd"), 2756);
-  assertToStringEquals("{4,5a}bc", res[892].firstMatch("{4,5a}bc"), 2757);
-  assertNull(res[893].firstMatch("a\x0db"), 2758);
-  assertNull(res[893].firstMatch("*** Failers"), 2759);
-  assertNull(res[893].firstMatch("a\nb"), 2760);
-  assertToStringEquals("abc", res[894].firstMatch("abc"), 2761);
-  assertNull(res[894].firstMatch("abc\n"), 2762);
-  assertNull(res[894].firstMatch("*** Failers"), 2763);
-  assertNull(res[894].firstMatch("abc\ndef"), 2764);
-  assertToStringEquals("abcS,abc", res[895].firstMatch("abcS"), 2765);
-  assertToStringEquals("abc\x93,abc", res[896].firstMatch("abc\x93"), 2766);
-  assertToStringEquals("abc\xd3,abc", res[897].firstMatch("abc\xd3"), 2767);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@"), 2768);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@"), 2769);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@0"), 2770);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@0"), 2771);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@0"), 2772);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@0"), 2773);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@0"), 2774);
-  assertToStringEquals("abc@,abc", res[898].firstMatch("abc@0"), 2775);
-  assertNull(res[899].firstMatch("abc\x0081"), 2776);
-  assertNull(res[899].firstMatch("abc\x0081"), 2777);
-  assertNull(res[900].firstMatch("abc\x0091"), 2778);
-  assertNull(res[900].firstMatch("abc\x0091"), 2779);
-  assertToStringEquals("abcdefghijk\nS,a,b,c,d,e,f,g,h,i,j,k",
-      res[901].firstMatch("abcdefghijk\nS"), 2780);
-  assertToStringEquals("abidef", res[902].firstMatch("abidef"), 2781);
-  assertToStringEquals("bc", res[903].firstMatch("bc"), 2782);
-  assertToStringEquals("xyz,,", res[904].firstMatch("xyz"), 2783);
-  assertToStringEquals("abc\x08de", res[905].firstMatch("abc\x08de"), 2784);
-  assertToStringEquals("abc\x01de", res[906].firstMatch("abc\x01de"), 2785);
-  assertToStringEquals("abc\x01de,abc", res[907].firstMatch("abc\x01de"), 2786);
-  assertNull(res[907].firstMatch("a\nb"), 2787);
-  assertToStringEquals(
-      "baNOTcccc,b,a,NOT,cccc", res[908].firstMatch("baNOTccccd"), 2788);
-  assertToStringEquals(
-      "baNOTccc,b,a,NOT,ccc", res[908].firstMatch("baNOTcccd"), 2789);
-  assertToStringEquals(
-      "baNOTcc,b,a,NO,Tcc", res[908].firstMatch("baNOTccd"), 2790);
-  assertToStringEquals("baccc,b,a,,ccc", res[908].firstMatch("bacccd"), 2791);
-  assertToStringEquals(
-      "*** Failers,*,*,* Fail,ers", res[908].firstMatch("*** Failers"), 2792);
-  assertNull(res[908].firstMatch("anything"), 2793);
-  assertNull(res[908].firstMatch("b\x08c   "), 2794);
-  assertNull(res[908].firstMatch("baccd"), 2795);
-  assertToStringEquals("A", res[909].firstMatch("Abc"), 2796);
-  assertToStringEquals("b", res[910].firstMatch("Abc "), 2797);
-  assertToStringEquals("AAA", res[911].firstMatch("AAAaAbc"), 2798);
-  assertToStringEquals("bc ", res[912].firstMatch("AAAaAbc "), 2799);
-  assertToStringEquals("bbb\nccc", res[913].firstMatch("bbb\nccc"), 2800);
-  assertToStringEquals("c", res[914].firstMatch("abc"), 2801);
-  assertToStringEquals("s", res[914].firstMatch("*** Failers"), 2802);
-  assertToStringEquals(" ", res[914].firstMatch("abk   "), 2803);
-  assertToStringEquals("abc", res[915].firstMatch("abc"), 2804);
-  assertToStringEquals("bc", res[915].firstMatch("kbc"), 2805);
-  assertToStringEquals("bc ", res[915].firstMatch("kabc "), 2806);
-  assertToStringEquals("ers", res[915].firstMatch("*** Failers"), 2807);
-  assertNull(res[915].firstMatch("abk"), 2808);
-  assertNull(res[915].firstMatch("akb"), 2809);
-  assertNull(res[915].firstMatch("akk "), 2810);
-  assertToStringEquals(
-      "12345678@a.b.c.d", res[916].firstMatch("12345678@a.b.c.d"), 2811);
-  assertToStringEquals(
-      "123456789@x.y.z", res[916].firstMatch("123456789@x.y.z"), 2812);
-  assertNull(res[916].firstMatch("*** Failers"), 2813);
-  assertNull(res[916].firstMatch("12345678@x.y.uk"), 2814);
-  assertNull(res[916].firstMatch("1234567@a.b.c.d       "), 2815);
-  assertToStringEquals("b", res[917].firstMatch("aaaabcd"), 2816);
-  assertToStringEquals("A", res[917].firstMatch("aaAabcd "), 2817);
-  assertToStringEquals("b", res[918].firstMatch("aaaabcd"), 2818);
-  assertToStringEquals("b", res[918].firstMatch("aaAabcd "), 2819);
-  assertToStringEquals("b", res[919].firstMatch("aaaabcd"), 2820);
-  assertToStringEquals("A", res[919].firstMatch("aaAabcd "), 2821);
-  assertToStringEquals("b", res[920].firstMatch("aaaabcd"), 2822);
-  assertToStringEquals("b", res[920].firstMatch("aaAabcd "), 2823);
-  assertToStringEquals("PSTAIREISLL",
-      res[922].firstMatch("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2824);
-  assertToStringEquals("PSTAIREISLL",
-      res[923].firstMatch("xxxxxxxxxxxPSTAIREISLLxxxxxxxxx"), 2825);
-  assertToStringEquals(
-      ".230003938,.23", res[924].firstMatch("1.230003938"), 2826);
-  assertToStringEquals(
-      ".875000282,.875", res[924].firstMatch("1.875000282   "), 2827);
-  assertToStringEquals(".235,.23", res[924].firstMatch("1.235  "), 2828);
-  assertNull(res[924].firstMatch("              "), 2829);
-  assertToStringEquals(
-      ".23,.23,", res[925].firstMatch("1.230003938      "), 2830);
-  assertToStringEquals(".875,.875,5", res[925].firstMatch("1.875000282"), 2831);
-  assertNull(res[925].firstMatch("*** Failers "), 2832);
-  assertNull(res[925].firstMatch("1.235 "), 2833);
-  assertThrows(() => new RegExp(r"a(?)b"), 2834);
-  assertNull(res[925].firstMatch("ab "), 2835);
-  assertToStringEquals("foo table,foo,table",
-      res[926].firstMatch("Food is on the foo table"), 2836);
-  assertToStringEquals(
-      "food is under the bar in the bar,d is under the bar in the ",
-      res[927].firstMatch("The food is under the bar in the barn."),
-      2837);
-  assertToStringEquals("food is under the bar,d is under the ",
-      res[928].firstMatch("The food is under the bar in the barn."), 2838);
-  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 53147,",
-      res[929].firstMatch("I have 2 numbers: 53147"), 2839);
-  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7",
-      res[930].firstMatch("I have 2 numbers: 53147"), 2840);
-  assertToStringEquals(
-      ",,", res[931].firstMatch("I have 2 numbers: 53147"), 2841);
-  assertToStringEquals("I have 2,I have ,2",
-      res[932].firstMatch("I have 2 numbers: 53147"), 2842);
-  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: 5314,7",
-      res[933].firstMatch("I have 2 numbers: 53147"), 2843);
-  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147",
-      res[934].firstMatch("I have 2 numbers: 53147"), 2844);
-  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147",
-      res[935].firstMatch("I have 2 numbers: 53147"), 2845);
-  assertToStringEquals("I have 2 numbers: 53147,I have 2 numbers: ,53147",
-      res[936].firstMatch("I have 2 numbers: 53147"), 2846);
-  assertToStringEquals("AB", res[937].firstMatch("ABC123"), 2847);
-  assertToStringEquals(" ", res[937].firstMatch(" "), 2848);
-  assertToStringEquals("ABC,ABC", res[938].firstMatch("ABC445"), 2849);
-  assertNull(res[938].firstMatch("*** Failers"), 2850);
-  assertNull(res[938].firstMatch("ABC123"), 2851);
-  assertToStringEquals("W46]", res[939].firstMatch("W46]789 "), 2852);
-  assertToStringEquals("-46]", res[939].firstMatch("-46]789"), 2853);
-  assertNull(res[939].firstMatch("*** Failers"), 2854);
-  assertNull(res[939].firstMatch("Wall"), 2855);
-  assertNull(res[939].firstMatch("Zebra"), 2856);
-  assertNull(res[939].firstMatch("42"), 2857);
-  assertNull(res[939].firstMatch("[abcd] "), 2858);
-  assertNull(res[939].firstMatch("]abcd["), 2859);
-  assertNull(res[939].firstMatch("   "), 2860);
-  assertToStringEquals("W", res[940].firstMatch("W46]789 "), 2861);
-  assertToStringEquals("W", res[940].firstMatch("Wall"), 2862);
-  assertToStringEquals("Z", res[940].firstMatch("Zebra"), 2863);
-  assertToStringEquals("X", res[940].firstMatch("Xylophone  "), 2864);
-  assertToStringEquals("4", res[940].firstMatch("42"), 2865);
-  assertToStringEquals("[", res[940].firstMatch("[abcd] "), 2866);
-  assertToStringEquals("]", res[940].firstMatch("]abcd["), 2867);
-  assertToStringEquals("\\", res[940].firstMatch("\\backslash "), 2868);
-  assertNull(res[940].firstMatch("*** Failers"), 2869);
-  assertNull(res[940].firstMatch("-46]789"), 2870);
-  assertNull(res[940].firstMatch("well"), 2871);
-  assertToStringEquals("01/01/2000", res[941].firstMatch("01/01/2000"), 2872);
-  assertToStringEquals("01/01/2000", res[941].firstMatch("01/01/2000"), 2872);
-  assertToStringEquals(",", res[944].firstMatch("bcd"), 2873);
-  assertToStringEquals(",", res[944].firstMatch("abc"), 2874);
-  assertToStringEquals(",", res[944].firstMatch("aab     "), 2875);
-  assertToStringEquals(",", res[945].firstMatch("bcd"), 2876);
-  assertToStringEquals("a,a", res[945].firstMatch("abc"), 2877);
-  assertToStringEquals("a,a", res[945].firstMatch("aab  "), 2878);
-  assertToStringEquals(",", res[946].firstMatch("bcd"), 2879);
-  assertToStringEquals("a,a", res[946].firstMatch("abc"), 2880);
-  assertToStringEquals("aa,a", res[946].firstMatch("aab  "), 2881);
-  assertToStringEquals(",", res[947].firstMatch("bcd"), 2882);
-  assertToStringEquals("a,a", res[947].firstMatch("abc"), 2883);
-  assertToStringEquals("aa,a", res[947].firstMatch("aab"), 2884);
-  assertToStringEquals("aaa,a", res[947].firstMatch("aaa   "), 2885);
-  assertToStringEquals(",", res[948].firstMatch("bcd"), 2886);
-  assertToStringEquals("a,a", res[948].firstMatch("abc"), 2887);
-  assertToStringEquals("aa,a", res[948].firstMatch("aab"), 2888);
-  assertToStringEquals("aaa,a", res[948].firstMatch("aaa"), 2889);
-  assertToStringEquals("aaaaaaaa,a", res[948].firstMatch("aaaaaaaa    "), 2890);
-  assertNull(res[949].firstMatch("bcd"), 2891);
-  assertToStringEquals("a,a", res[949].firstMatch("abc"), 2892);
-  assertToStringEquals("a,a", res[949].firstMatch("aab  "), 2893);
-  assertNull(res[950].firstMatch("bcd"), 2894);
-  assertToStringEquals("a,a", res[950].firstMatch("abc"), 2895);
-  assertToStringEquals("aa,a", res[950].firstMatch("aab  "), 2896);
-  assertNull(res[951].firstMatch("bcd"), 2897);
-  assertToStringEquals("a,a", res[951].firstMatch("abc"), 2898);
-  assertToStringEquals("aa,a", res[951].firstMatch("aab"), 2899);
-  assertToStringEquals("aaa,a", res[951].firstMatch("aaa   "), 2900);
-  assertNull(res[952].firstMatch("bcd"), 2901);
-  assertToStringEquals("a,a", res[952].firstMatch("abc"), 2902);
-  assertToStringEquals("aa,a", res[952].firstMatch("aab"), 2903);
-  assertToStringEquals("aaa,a", res[952].firstMatch("aaa"), 2904);
-  assertToStringEquals("aaaaaaaa,a", res[952].firstMatch("aaaaaaaa    "), 2905);
-  assertToStringEquals(
-      "bib.gif", res[953].firstMatch("borfle\nbib.gif\nno"), 2906);
-  assertToStringEquals(
-      "bib.gif", res[954].firstMatch("borfle\nbib.gif\nno"), 2907);
-  assertToStringEquals(
-      "bib.gif", res[955].firstMatch("borfle\nbib.gif\nno"), 2908);
-  assertToStringEquals(
-      "bib.gif", res[956].firstMatch("borfle\nbib.gif\nno"), 2909);
-  assertToStringEquals(
-      "bib.gif", res[957].firstMatch("borfle\nbib.gif\nno"), 2910);
-  assertToStringEquals("no", res[958].firstMatch("borfle\nbib.gif\nno"), 2911);
-  assertToStringEquals(
-      "borfle", res[959].firstMatch("borfle\nbib.gif\nno"), 2912);
-  assertToStringEquals("no", res[960].firstMatch("borfle\nbib.gif\nno"), 2913);
-  assertToStringEquals(
-      "borfle", res[961].firstMatch("borfle\nbib.gif\nno"), 2914);
-  assertToStringEquals("", res[962].firstMatch("borfle\nbib.gif\nno\n"), 2915);
-  assertToStringEquals(
-      "borfle", res[963].firstMatch("borfle\nbib.gif\nno\n"), 2916);
-  assertToStringEquals("", res[964].firstMatch("borfle\nbib.gif\nno\n"), 2917);
-  assertToStringEquals(
-      "borfle", res[965].firstMatch("borfle\nbib.gif\nno\n"), 2918);
-  assertToStringEquals(
-      "1234X,1234X", res[966].firstMatch("abcde\n1234Xyz"), 2919);
-  assertToStringEquals("B,B", res[966].firstMatch("BarFoo "), 2920);
-  assertNull(res[966].firstMatch("*** Failers"), 2921);
-  assertNull(res[966].firstMatch("abcde\nBar  "), 2922);
-  assertToStringEquals(
-      "1234X,1234X", res[967].firstMatch("abcde\n1234Xyz"), 2923);
-  assertToStringEquals("B,B", res[967].firstMatch("BarFoo "), 2924);
-  assertToStringEquals("B,B", res[967].firstMatch("abcde\nBar  "), 2925);
-  assertToStringEquals(
-      "1234X,1234X", res[968].firstMatch("abcde\n1234Xyz"), 2926);
-  assertToStringEquals("B,B", res[968].firstMatch("BarFoo "), 2927);
-  assertNull(res[968].firstMatch("*** Failers"), 2928);
-  assertNull(res[968].firstMatch("abcde\nBar  "), 2929);
-  assertToStringEquals(
-      "1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2930);
-  assertToStringEquals("B,B", res[969].firstMatch("BarFoo "), 2931);
-  assertToStringEquals("B,B", res[969].firstMatch("abcde\nBar  "), 2932);
-  assertToStringEquals(
-      "1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2933);
-  assertToStringEquals("B,B", res[969].firstMatch("BarFoo "), 2934);
-  assertNull(res[969].firstMatch("*** Failers "), 2935);
-  assertToStringEquals("B,B", res[969].firstMatch("abcde\nBar  "), 2936);
-  assertToStringEquals(
-      "1234X,1234X", res[969].firstMatch("abcde\n1234Xyz"), 2937);
-  assertToStringEquals("B,B", res[969].firstMatch("BarFoo "), 2938);
-  assertNull(res[969].firstMatch("*** Failers "), 2939);
-  assertToStringEquals("B,B", res[969].firstMatch("abcde\nBar  "), 2940);
-  assertNull(res[970].firstMatch("**** Failers"), 2941);
-  assertNull(res[970].firstMatch("abc\nB"), 2942);
-  assertNull(res[970].firstMatch(" "), 2943);
-  assertNull(res[970].firstMatch("abc\nB"), 2944);
-  assertNull(res[970].firstMatch("abc\nB"), 2945);
-  assertNull(res[970].firstMatch(" "), 2946);
-  assertNull(res[970].firstMatch("abc\nB"), 2947);
-  assertNull(res[970].firstMatch("abc\nB"), 2948);
-  assertToStringEquals("B", res[970].firstMatch("B\n"), 2949);
-  assertToStringEquals(
-      "123456654321", res[971].firstMatch("123456654321"), 2950);
-  assertToStringEquals(
-      "123456654321", res[972].firstMatch("123456654321 "), 2951);
-  assertToStringEquals(
-      "123456654321", res[973].firstMatch("123456654321"), 2952);
-  assertToStringEquals(
-      "abcabcabcabc", res[974].firstMatch("abcabcabcabc"), 2953);
-  assertToStringEquals(
-      "abcabcabcabc", res[975].firstMatch("abcabcabcabc"), 2954);
-  assertToStringEquals(
-      "abcabcabcabc,c", res[976].firstMatch("abcabcabcabc "), 2955);
-  assertToStringEquals("n", res[977].firstMatch("n"), 2956);
-  assertNull(res[977].firstMatch("*** Failers "), 2957);
-  assertNull(res[977].firstMatch("z "), 2958);
-  assertToStringEquals("abcd", res[978].firstMatch("abcd"), 2959);
-  assertNull(res[978].firstMatch("*** Failers"), 2960);
-  assertNull(res[978].firstMatch("abce  "), 2961);
-  assertToStringEquals("abe", res[979].firstMatch("abe"), 2962);
-  assertNull(res[979].firstMatch("*** Failers"), 2963);
-  assertNull(res[979].firstMatch("abcde "), 2964);
-  assertToStringEquals("abd,", res[980].firstMatch("abd"), 2965);
-  assertNull(res[980].firstMatch("*** Failers"), 2966);
-  assertNull(res[980].firstMatch("abcd   "), 2967);
-  assertToStringEquals("a,", res[981].firstMatch("a"), 2968);
-  assertToStringEquals("ab,b", res[981].firstMatch("ab"), 2969);
-  assertToStringEquals("abbbb,bbbb", res[981].firstMatch("abbbb"), 2970);
-  assertToStringEquals("a,", res[981].firstMatch("*** Failers"), 2971);
-  assertNull(res[981].firstMatch("bbbbb    "), 2972);
-  assertToStringEquals("abe", res[982].firstMatch("abe"), 2973);
-  assertNull(res[982].firstMatch("*** Failers"), 2974);
-  assertNull(res[982].firstMatch("ab1e   "), 2975);
-  assertToStringEquals(
-      "\"quick\",quick", res[983].firstMatch("the \"quick\" brown fox"), 2976);
-  assertToStringEquals("\"the \\\"quick\\\" brown fox\", brown fox",
-      res[983].firstMatch("\"the \\\"quick\\\" brown fox\" "), 2977);
-  assertToStringEquals("", res[984].firstMatch("abc"), 2978);
-  assertToStringEquals("", res[985].firstMatch("abc "), 2979);
-  assertToStringEquals("", res[986].firstMatch("abc "), 2980);
-  // Dart does not have RegExp literals and thus no translatation of the below.
-  // assertThrows("var re = //;", 2981);
-  assertToStringEquals("", res[986].firstMatch("abc"), 2982);
-  assertToStringEquals("acb", res[988].firstMatch("acb"), 2983);
-  assertToStringEquals("a\nb", res[988].firstMatch("a\nb"), 2984);
-  assertToStringEquals("acb", res[989].firstMatch("acb"), 2985);
-  assertNull(res[989].firstMatch("*** Failers "), 2986);
-  assertNull(res[989].firstMatch("a\nb   "), 2987);
-  assertToStringEquals("acb", res[990].firstMatch("acb"), 2988);
-  assertToStringEquals("a\nb", res[990].firstMatch("a\nb  "), 2989);
-  assertToStringEquals("acb", res[991].firstMatch("acb"), 2990);
-  assertNull(res[991].firstMatch("a\nb  "), 2991);
-  assertToStringEquals("bac,a", res[992].firstMatch("bac"), 2992);
-  assertToStringEquals("bbac,a", res[992].firstMatch("bbac"), 2993);
-  assertToStringEquals("bbbac,a", res[992].firstMatch("bbbac"), 2994);
-  assertToStringEquals("bbbbac,a", res[992].firstMatch("bbbbac"), 2995);
-  assertToStringEquals("bbbbbac,a", res[992].firstMatch("bbbbbac "), 2996);
-  assertToStringEquals("bac,a", res[993].firstMatch("bac"), 2997);
-  assertToStringEquals("bbac,a", res[993].firstMatch("bbac"), 2998);
-  assertToStringEquals("bbbac,a", res[993].firstMatch("bbbac"), 2999);
-  assertToStringEquals("bbbbac,a", res[993].firstMatch("bbbbac"), 3000);
-  assertToStringEquals("bbbbbac,a", res[993].firstMatch("bbbbbac "), 3001);
-  assertToStringEquals("x", res[994].firstMatch("x\nb\n"), 3002);
-  assertToStringEquals("x", res[994].firstMatch("a\x08x\n  "), 3003);
-  assertNull(res[995].firstMatch("\x00{ab} "), 3004);
-  assertToStringEquals("CD,", res[996].firstMatch("CD "), 3005);
-  assertToStringEquals("CD,", res[997].firstMatch("CD "), 3006);
-  assertNull(res[997].firstMatch("foo"), 3007);
-  assertNull(res[997].firstMatch("catfood"), 3008);
-  assertNull(res[997].firstMatch("arfootle"), 3009);
-  assertNull(res[997].firstMatch("rfoosh"), 3010);
-  assertNull(res[997].firstMatch("*** Failers"), 3011);
-  assertNull(res[997].firstMatch("barfoo"), 3012);
-  assertNull(res[997].firstMatch("towbarfoo"), 3013);
-  assertNull(res[997].firstMatch("catfood"), 3014);
-  assertNull(res[997].firstMatch("*** Failers"), 3015);
-  assertNull(res[997].firstMatch("foo"), 3016);
-  assertNull(res[997].firstMatch("barfoo"), 3017);
-  assertNull(res[997].firstMatch("towbarfoo"), 3018);
-  assertNull(res[997].firstMatch("fooabar"), 3019);
-  assertNull(res[997].firstMatch("*** Failers"), 3020);
-  assertNull(res[997].firstMatch("bar"), 3021);
-  assertNull(res[997].firstMatch("foobbar"), 3022);
-  assertNull(res[997].firstMatch("  "), 3023);
-  assertNull(res[998].firstMatch("abc"), 3024);
-  assertNull(res[998].firstMatch("*** Failers"), 3025);
-  assertNull(res[998].firstMatch("abc\n   "), 3026);
-  assertNull(res[998].firstMatch("qqq\nabc"), 3027);
-  assertNull(res[998].firstMatch("abc\nzzz"), 3028);
-  assertNull(res[998].firstMatch("qqq\nabc\nzzz"), 3029);
-  assertNull(
-      res[998].firstMatch(
-          "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/"),
-      3030);
-  assertNull(
-      res[998].firstMatch(
-          "/this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo"),
-      3031);
-  assertNull(res[998].firstMatch("1.230003938"), 3032);
-  assertNull(res[998].firstMatch("1.875000282"), 3033);
-  assertNull(res[998].firstMatch("*** Failers "), 3034);
-  assertNull(res[998].firstMatch("1.235 "), 3035);
-  assertNull(
-      res[998].firstMatch(
-          "now is the time for all good men to come to the aid of the party"),
-      3036);
-  assertNull(res[998].firstMatch("*** Failers"), 3037);
-  assertNull(
-      res[998].firstMatch("this is not a line with only words and spaces!"),
-      3038);
-  assertToStringEquals("12345a,12345,a", res[999].firstMatch("12345a"), 3039);
-  assertToStringEquals("12345,1234,5", res[999].firstMatch("12345+ "), 3040);
-  assertToStringEquals("12345a,12345,a", res[999].firstMatch("12345a"), 3041);
-  assertNull(res[999].firstMatch("*** Failers"), 3042);
-  assertToStringEquals("12345,1234,5", res[999].firstMatch("12345+ "), 3043);
-  assertNull(res[999].firstMatch("aaab"), 3044);
-  assertNull(res[999].firstMatch("aaab"), 3045);
-  assertNull(res[999].firstMatch("aaab"), 3046);
-  assertNull(res[999].firstMatch("aaabbbccc"), 3047);
-  assertNull(res[999].firstMatch("aaabbbbccccd"), 3048);
-  assertToStringEquals(
-      "aaabbbbcccc,ccc", res[1000].firstMatch("aaabbbbccccd"), 3049);
-  assertToStringEquals(
-      "abc,b", res[1000].firstMatch("((abc(ade)ufh()()x"), 3050);
-  assertNull(res[1000].firstMatch(""), 3051);
-  assertToStringEquals("abc,b", res[1000].firstMatch("(abc)"), 3052);
-  assertToStringEquals("abc,b", res[1000].firstMatch("(abc(def)xyz)"), 3053);
-  assertNull(res[1000].firstMatch("*** Failers"), 3054);
-  assertNull(res[1000].firstMatch("ab"), 3055);
-  assertNull(res[1000].firstMatch("Ab"), 3056);
-  assertNull(res[1000].firstMatch("*** Failers "), 3057);
-  assertNull(res[1000].firstMatch("aB"), 3058);
-  assertNull(res[1000].firstMatch("AB"), 3059);
-  assertNull(res[1000].firstMatch("    "), 3060);
-  assertToStringEquals("bc,b", res[1000].firstMatch("a bcd e"), 3061);
-  assertNull(res[1000].firstMatch("*** Failers"), 3062);
-  assertToStringEquals("c,", res[1000].firstMatch("a b cd e"), 3063);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abcd e   "), 3064);
-  assertToStringEquals("bc,b", res[1000].firstMatch("a bcde "), 3065);
-  assertToStringEquals("bc,b", res[1000].firstMatch("a bcde f"), 3066);
-  assertNull(res[1000].firstMatch("*** Failers"), 3067);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abcdef  "), 3068);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abc"), 3069);
-  assertToStringEquals("c,", res[1000].firstMatch("aBc"), 3070);
-  assertNull(res[1000].firstMatch("*** Failers"), 3071);
-  assertNull(res[1000].firstMatch("abC"), 3072);
-  assertNull(res[1000].firstMatch("aBC  "), 3073);
-  assertToStringEquals("bc,b", res[1000].firstMatch("Abc"), 3074);
-  assertToStringEquals("c,", res[1000].firstMatch("ABc"), 3075);
-  assertNull(res[1000].firstMatch("ABC"), 3076);
-  assertNull(res[1000].firstMatch("AbC"), 3077);
-  assertNull(res[1000].firstMatch(""), 3078);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abc"), 3079);
-  assertToStringEquals("c,", res[1000].firstMatch("aBc"), 3080);
-  assertNull(res[1000].firstMatch("*** Failers "), 3081);
-  assertNull(res[1000].firstMatch("ABC"), 3082);
-  assertNull(res[1000].firstMatch("abC"), 3083);
-  assertNull(res[1000].firstMatch("aBC"), 3084);
-  assertNull(res[1000].firstMatch(""), 3085);
-  assertToStringEquals("c,", res[1000].firstMatch("aBc"), 3086);
-  assertToStringEquals("c,", res[1000].firstMatch("aBBc"), 3087);
-  assertNull(res[1000].firstMatch("*** Failers "), 3088);
-  assertNull(res[1000].firstMatch("aBC"), 3089);
-  assertNull(res[1000].firstMatch("aBBC"), 3090);
-  assertNull(res[1000].firstMatch(""), 3091);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abcd"), 3092);
-  assertNull(res[1000].firstMatch("abCd"), 3093);
-  assertNull(res[1000].firstMatch("*** Failers"), 3094);
-  assertNull(res[1000].firstMatch("aBCd"), 3095);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abcD     "), 3096);
-  assertNull(res[1000].firstMatch(""), 3097);
-  assertNull(res[1000].firstMatch("more than million"), 3098);
-  assertNull(res[1000].firstMatch("more than MILLION"), 3099);
-  assertNull(res[1000].firstMatch("more \n than Million "), 3100);
-  assertNull(res[1000].firstMatch("*** Failers"), 3101);
-  assertNull(res[1000].firstMatch("MORE THAN MILLION    "), 3102);
-  assertNull(res[1000].firstMatch("more \n than \n million "), 3103);
-  assertNull(res[1000].firstMatch("more than million"), 3104);
-  assertNull(res[1000].firstMatch("more than MILLION"), 3105);
-  assertNull(res[1000].firstMatch("more \n than Million "), 3106);
-  assertNull(res[1000].firstMatch("*** Failers"), 3107);
-  assertNull(res[1000].firstMatch("MORE THAN MILLION    "), 3108);
-  assertNull(res[1000].firstMatch("more \n than \n million "), 3109);
-  assertNull(res[1000].firstMatch(""), 3110);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abc"), 3111);
-  assertToStringEquals("bc,b", res[1000].firstMatch("aBbc"), 3112);
-  assertToStringEquals("c,", res[1000].firstMatch("aBBc "), 3113);
-  assertNull(res[1000].firstMatch("*** Failers"), 3114);
-  assertToStringEquals("bc,b", res[1000].firstMatch("Abc"), 3115);
-  assertNull(res[1000].firstMatch("abAb    "), 3116);
-  assertNull(res[1000].firstMatch("abbC "), 3117);
-  assertNull(res[1000].firstMatch(""), 3118);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abc"), 3119);
-  assertToStringEquals("c,", res[1000].firstMatch("aBc"), 3120);
-  assertNull(res[1000].firstMatch("*** Failers"), 3121);
-  assertNull(res[1000].firstMatch("Ab "), 3122);
-  assertNull(res[1000].firstMatch("abC"), 3123);
-  assertNull(res[1000].firstMatch("aBC     "), 3124);
-  assertNull(res[1000].firstMatch(""), 3125);
-  assertToStringEquals("c,", res[1000].firstMatch("abxxc"), 3126);
-  assertToStringEquals("c,", res[1000].firstMatch("aBxxc"), 3127);
-  assertNull(res[1000].firstMatch("*** Failers"), 3128);
-  assertToStringEquals("c,", res[1000].firstMatch("Abxxc"), 3129);
-  assertToStringEquals("c,", res[1000].firstMatch("ABxxc"), 3130);
-  assertNull(res[1000].firstMatch("abxxC      "), 3131);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abc:"), 3132);
-  assertNull(res[1000].firstMatch("12"), 3133);
-  assertNull(res[1000].firstMatch("*** Failers"), 3134);
-  assertNull(res[1000].firstMatch("123"), 3135);
-  assertNull(res[1000].firstMatch("xyz    "), 3136);
-  assertToStringEquals("abc,b", res[1000].firstMatch("abc:"), 3137);
-  assertNull(res[1000].firstMatch("12"), 3138);
-  assertNull(res[1000].firstMatch("*** Failers"), 3139);
-  assertNull(res[1000].firstMatch("123"), 3140);
-  assertNull(res[1000].firstMatch("xyz    "), 3141);
-  assertNull(res[1000].firstMatch(""), 3142);
-  assertNull(res[1000].firstMatch("foobar"), 3143);
-  assertToStringEquals("c,", res[1000].firstMatch("cat"), 3144);
-  assertToStringEquals("c,", res[1000].firstMatch("fcat"), 3145);
-  assertToStringEquals("c,", res[1000].firstMatch("focat   "), 3146);
-  assertNull(res[1000].firstMatch("*** Failers"), 3147);
-  assertToStringEquals("c,", res[1000].firstMatch("foocat  "), 3148);
-  assertNull(res[1000].firstMatch("foobar"), 3149);
-  assertToStringEquals("c,", res[1000].firstMatch("cat"), 3150);
-  assertToStringEquals("c,", res[1000].firstMatch("fcat"), 3151);
-  assertToStringEquals("c,", res[1000].firstMatch("focat   "), 3152);
-  assertNull(res[1000].firstMatch("*** Failers"), 3153);
-  assertToStringEquals("c,", res[1000].firstMatch("foocat  "), 3154);
-  assertNull(res[1000].firstMatch("a"), 3155);
-  assertNull(res[1000].firstMatch("aa"), 3156);
-  assertNull(res[1000].firstMatch("aaaa"), 3157);
-  assertNull(res[1000].firstMatch(""), 3158);
-  assertToStringEquals("abc,abc", res[1001].firstMatch("abc"), 3159);
-  assertToStringEquals("abcabc,abc", res[1001].firstMatch("abcabc"), 3160);
-  assertToStringEquals(
-      "abcabcabc,abc", res[1001].firstMatch("abcabcabc"), 3161);
-  assertToStringEquals(",", res[1001].firstMatch("xyz      "), 3162);
-  assertToStringEquals("a,a", res[1002].firstMatch("a"), 3163);
-  assertToStringEquals("aaaaa,aaaaa", res[1002].firstMatch("aaaaa "), 3164);
-  assertToStringEquals("a,a", res[1003].firstMatch("a"), 3165);
-  assertToStringEquals("b,b", res[1003].firstMatch("b"), 3166);
-  assertToStringEquals("ababab,ababab", res[1003].firstMatch("ababab"), 3167);
-  assertToStringEquals("aaaab,aaaab", res[1003].firstMatch("aaaabcde"), 3168);
-  assertToStringEquals("bbbb,bbbb", res[1003].firstMatch("bbbb    "), 3169);
-  assertToStringEquals("b,b", res[1004].firstMatch("b"), 3170);
-  assertToStringEquals("bbbb,bbbb", res[1004].firstMatch("bbbb"), 3171);
-  assertToStringEquals(",", res[1004].firstMatch("aaa   "), 3172);
-  assertToStringEquals("cccc,cccc", res[1005].firstMatch("cccc"), 3173);
-  assertToStringEquals(",", res[1005].firstMatch("abab  "), 3174);
-  assertToStringEquals("a,a", res[1006].firstMatch("a"), 3175);
-  assertToStringEquals("aaaa,a", res[1006].firstMatch("aaaa "), 3176);
-  assertToStringEquals("a,a", res[1007].firstMatch("a"), 3177);
-  assertToStringEquals("b,b", res[1007].firstMatch("b"), 3178);
-  assertToStringEquals("abab,b", res[1007].firstMatch("abab"), 3179);
-  assertToStringEquals("baba,a", res[1007].firstMatch("baba   "), 3180);
-  assertToStringEquals("b,b", res[1008].firstMatch("b"), 3181);
-  assertToStringEquals("bbbb,b", res[1008].firstMatch("bbbb"), 3182);
-  assertToStringEquals(",", res[1008].firstMatch("aaa   "), 3183);
-  assertToStringEquals("c,c", res[1009].firstMatch("c"), 3184);
-  assertToStringEquals("cccc,c", res[1009].firstMatch("cccc"), 3185);
-  assertToStringEquals(",", res[1009].firstMatch("baba   "), 3186);
-  assertToStringEquals(",", res[1009].firstMatch("a"), 3187);
-  assertToStringEquals(",", res[1009].firstMatch("aaabcde "), 3188);
-  assertToStringEquals(",", res[1009].firstMatch("aaaaa"), 3189);
-  assertToStringEquals(",", res[1009].firstMatch("aabbaa "), 3190);
-  assertToStringEquals(",", res[1009].firstMatch("aaaaa"), 3191);
-  assertToStringEquals(",", res[1009].firstMatch("aabbaa "), 3192);
-  assertToStringEquals("12-sep-98,8", res[1009].firstMatch("12-sep-98"), 3193);
-  assertToStringEquals("12-09-98,8", res[1009].firstMatch("12-09-98"), 3194);
-  assertToStringEquals("*** F,F", res[1009].firstMatch("*** Failers"), 3195);
-  assertToStringEquals("sep-12-98,8", res[1009].firstMatch("sep-12-98"), 3196);
-  assertToStringEquals("    , ", res[1009].firstMatch("    "), 3197);
-  assertToStringEquals("s,s", res[1009].firstMatch("saturday"), 3198);
-  assertToStringEquals("sund,d", res[1009].firstMatch("sunday"), 3199);
-  assertToStringEquals("S,S", res[1009].firstMatch("Saturday"), 3200);
-  assertToStringEquals("Sund,d", res[1009].firstMatch("Sunday"), 3201);
-  assertToStringEquals("SATURDAY,Y", res[1009].firstMatch("SATURDAY"), 3202);
-  assertToStringEquals("SUNDAY,Y", res[1009].firstMatch("SUNDAY"), 3203);
-  assertToStringEquals("SunD,D", res[1009].firstMatch("SunDay"), 3204);
-  assertToStringEquals(",", res[1009].firstMatch("abcx"), 3205);
-  assertToStringEquals(",", res[1009].firstMatch("aBCx"), 3206);
-  assertToStringEquals(",", res[1009].firstMatch("bbx"), 3207);
-  assertToStringEquals("BBx,x", res[1009].firstMatch("BBx"), 3208);
-  assertToStringEquals("*** F,F", res[1009].firstMatch("*** Failers"), 3209);
-  assertToStringEquals(",", res[1009].firstMatch("abcX"), 3210);
-  assertToStringEquals(",", res[1009].firstMatch("aBCX"), 3211);
-  assertToStringEquals(",", res[1009].firstMatch("bbX"), 3212);
-  assertToStringEquals(
-      "BBX               , ", res[1009].firstMatch("BBX               "), 3213);
-  assertToStringEquals(",", res[1009].firstMatch("ac"), 3214);
-  assertToStringEquals(",", res[1009].firstMatch("aC"), 3215);
-  assertToStringEquals(",", res[1009].firstMatch("bD"), 3216);
-  assertToStringEquals("eleph,h", res[1009].firstMatch("elephant"), 3217);
-  assertToStringEquals("Europe , ", res[1009].firstMatch("Europe "), 3218);
-  assertToStringEquals("frog,g", res[1009].firstMatch("frog"), 3219);
-  assertToStringEquals("Fr,r", res[1009].firstMatch("France"), 3220);
-  assertToStringEquals("*** F,F", res[1009].firstMatch("*** Failers"), 3221);
-  assertToStringEquals("Afric,c", res[1009].firstMatch("Africa     "), 3222);
-  assertToStringEquals(",", res[1009].firstMatch("ab"), 3223);
-  assertToStringEquals(",", res[1009].firstMatch("aBd"), 3224);
-  assertToStringEquals("xy,y", res[1009].firstMatch("xy"), 3225);
-  assertToStringEquals("xY,Y", res[1009].firstMatch("xY"), 3226);
-  assertToStringEquals("ze,e", res[1009].firstMatch("zebra"), 3227);
-  assertToStringEquals("Z,Z", res[1009].firstMatch("Zambesi"), 3228);
-  assertToStringEquals("*** F,F", res[1009].firstMatch("*** Failers"), 3229);
-  assertToStringEquals(",", res[1009].firstMatch("aCD  "), 3230);
-  assertToStringEquals("XY  , ", res[1009].firstMatch("XY  "), 3231);
-  assertToStringEquals("foo\n,\n", res[1009].firstMatch("foo\nbar"), 3232);
-  assertToStringEquals("*** F,F", res[1009].firstMatch("*** Failers"), 3233);
-  assertToStringEquals(",", res[1009].firstMatch("bar"), 3234);
-  assertToStringEquals(",", res[1009].firstMatch("baz\nbar   "), 3235);
-  assertToStringEquals(",", res[1009].firstMatch("barbaz"), 3236);
-  assertToStringEquals(",", res[1009].firstMatch("barbarbaz "), 3237);
-  assertToStringEquals("koo,o", res[1009].firstMatch("koobarbaz "), 3238);
-  assertToStringEquals("*** F,F", res[1009].firstMatch("*** Failers"), 3239);
-  assertToStringEquals(",", res[1009].firstMatch("baz"), 3240);
-  assertToStringEquals("foo,o", res[1009].firstMatch("foobarbaz "), 3241);
-  assertToStringEquals("abc", res[1012].firstMatch("abc"), 3242);
-  assertToStringEquals("abc", res[1012].firstMatch("xabcy"), 3243);
-  assertToStringEquals("abc", res[1012].firstMatch("ababc"), 3244);
-  assertNull(res[1012].firstMatch("*** Failers"), 3245);
-  assertNull(res[1012].firstMatch("xbc"), 3246);
-  assertNull(res[1012].firstMatch("axc"), 3247);
-  assertNull(res[1012].firstMatch("abx"), 3248);
-  assertToStringEquals("abc", res[1013].firstMatch("abc"), 3249);
-  assertToStringEquals("abc", res[1014].firstMatch("abc"), 3250);
-  assertToStringEquals("abbc", res[1014].firstMatch("abbc"), 3251);
-  assertToStringEquals("abbbbc", res[1014].firstMatch("abbbbc"), 3252);
-  assertToStringEquals("a", res[1015].firstMatch("abbbbc"), 3253);
-  assertToStringEquals("abbb", res[1016].firstMatch("abbbbc"), 3254);
-  assertToStringEquals("abbbbc", res[1017].firstMatch("abbbbc"), 3255);
-  assertToStringEquals("abbc", res[1018].firstMatch("abbc"), 3256);
-  assertNull(res[1018].firstMatch("*** Failers"), 3257);
-  assertNull(res[1018].firstMatch("abc"), 3258);
-  assertNull(res[1018].firstMatch("abq"), 3259);
-  assertToStringEquals("abbbbc", res[1020].firstMatch("abbbbc"), 3260);
-  assertToStringEquals("abbbbc", res[1021].firstMatch("abbbbc"), 3261);
-  assertToStringEquals("abbbbc", res[1022].firstMatch("abbbbc"), 3262);
-  assertToStringEquals("abbbbc", res[1023].firstMatch("abbbbc"), 3263);
-  assertNull(res[1024].firstMatch("*** Failers"), 3264);
-  assertNull(res[1024].firstMatch("abq"), 3265);
-  assertNull(res[1024].firstMatch("abbbbc"), 3266);
-  assertToStringEquals("abbc", res[1025].firstMatch("abbc"), 3267);
-  assertToStringEquals("abc", res[1025].firstMatch("abc"), 3268);
-  assertToStringEquals("abc", res[1026].firstMatch("abc"), 3269);
-  assertToStringEquals("abc", res[1028].firstMatch("abc"), 3270);
-  assertToStringEquals("abc", res[1029].firstMatch("abc"), 3271);
-  assertToStringEquals("abc", res[1030].firstMatch("abc"), 3272);
-  assertNull(res[1030].firstMatch("*** Failers"), 3273);
-  assertNull(res[1030].firstMatch("abbbbc"), 3274);
-  assertNull(res[1030].firstMatch("abcc"), 3275);
-  assertToStringEquals("abc", res[1031].firstMatch("abcc"), 3276);
-  assertToStringEquals("abc", res[1033].firstMatch("aabc"), 3277);
-  assertNull(res[1033].firstMatch("*** Failers"), 3278);
-  assertToStringEquals("abc", res[1033].firstMatch("aabc"), 3279);
-  assertNull(res[1033].firstMatch("aabcd"), 3280);
-  assertToStringEquals("", res[1034].firstMatch("abc"), 3281);
-  assertToStringEquals("", res[1035].firstMatch("abc"), 3282);
-  assertToStringEquals("abc", res[1036].firstMatch("abc"), 3283);
-  assertToStringEquals("axc", res[1036].firstMatch("axc"), 3284);
-  assertToStringEquals("axyzc", res[1037].firstMatch("axyzc"), 3285);
-  assertToStringEquals("abd", res[1038].firstMatch("abd"), 3286);
-  assertNull(res[1038].firstMatch("*** Failers"), 3287);
-  assertNull(res[1038].firstMatch("axyzd"), 3288);
-  assertNull(res[1038].firstMatch("abc"), 3289);
-  assertToStringEquals("ace", res[1039].firstMatch("ace"), 3290);
-  assertToStringEquals("ac", res[1040].firstMatch("aac"), 3291);
-  assertToStringEquals("a-", res[1041].firstMatch("a-"), 3292);
-  assertToStringEquals("a-", res[1042].firstMatch("a-"), 3293);
-  assertToStringEquals("a]", res[1043].firstMatch("a]"), 3294);
-  assertNull(res[1044].firstMatch("a]b"), 3295);
-  assertToStringEquals("aed", res[1045].firstMatch("aed"), 3296);
-  assertNull(res[1045].firstMatch("*** Failers"), 3297);
-  assertNull(res[1045].firstMatch("abd"), 3298);
-  assertNull(res[1045].firstMatch("abd"), 3299);
-  assertToStringEquals("adc", res[1046].firstMatch("adc"), 3300);
-  assertNull(res[1047].firstMatch("adc"), 3301);
-  assertNull(res[1047].firstMatch("*** Failers"), 3302);
-  assertNull(res[1047].firstMatch("a-c"), 3303);
-  assertNull(res[1047].firstMatch("a]c"), 3304);
-  assertToStringEquals("a", res[1048].firstMatch("a-"), 3305);
-  assertToStringEquals("a", res[1048].firstMatch("-a"), 3306);
-  assertToStringEquals("a", res[1048].firstMatch("-a-"), 3307);
-  assertNull(res[1049].firstMatch("*** Failers"), 3308);
-  assertNull(res[1049].firstMatch("xy"), 3309);
-  assertNull(res[1049].firstMatch("yz"), 3310);
-  assertNull(res[1049].firstMatch("xyz"), 3311);
-  assertToStringEquals("a", res[1050].firstMatch("*** Failers"), 3312);
-  assertNull(res[1050].firstMatch("a-"), 3313);
-  assertNull(res[1050].firstMatch("-a"), 3314);
-  assertNull(res[1050].firstMatch("-a-"), 3315);
-  assertToStringEquals("y", res[1051].firstMatch("xy"), 3316);
-  assertToStringEquals("y", res[1052].firstMatch("yz"), 3317);
-  assertToStringEquals("y", res[1053].firstMatch("xyz"), 3318);
-  assertToStringEquals("a", res[1054].firstMatch("a"), 3319);
-  assertToStringEquals("-", res[1055].firstMatch("-"), 3320);
-  assertToStringEquals("*", res[1055].firstMatch("*** Failers"), 3321);
-  assertToStringEquals("-", res[1055].firstMatch("-"), 3322);
-  assertNull(res[1055].firstMatch("a"), 3323);
-  assertToStringEquals("a b", res[1056].firstMatch("a b"), 3324);
-  assertToStringEquals("a-b", res[1057].firstMatch("a-b"), 3325);
-  assertNull(res[1057].firstMatch("*** Failers"), 3326);
-  assertToStringEquals("a-b", res[1057].firstMatch("a-b"), 3327);
-  assertNull(res[1057].firstMatch("a b"), 3328);
-  assertToStringEquals("1", res[1058].firstMatch("1"), 3329);
-  assertToStringEquals("-", res[1059].firstMatch("-"), 3330);
-  assertToStringEquals("*", res[1059].firstMatch("*** Failers"), 3331);
-  assertToStringEquals("-", res[1059].firstMatch("-"), 3332);
-  assertNull(res[1059].firstMatch("1"), 3333);
-  assertToStringEquals("a", res[1060].firstMatch("a"), 3334);
-  assertToStringEquals("-", res[1061].firstMatch("-"), 3335);
-  assertToStringEquals("*", res[1061].firstMatch("*** Failers"), 3336);
-  assertToStringEquals("-", res[1061].firstMatch("-"), 3337);
-  assertNull(res[1061].firstMatch("a"), 3338);
-  assertToStringEquals("a b", res[1062].firstMatch("a b"), 3339);
-  assertToStringEquals("a-b", res[1063].firstMatch("a-b"), 3340);
-  assertNull(res[1063].firstMatch("*** Failers"), 3341);
-  assertToStringEquals("a-b", res[1063].firstMatch("a-b"), 3342);
-  assertNull(res[1063].firstMatch("a b"), 3343);
-  assertToStringEquals("1", res[1064].firstMatch("1"), 3344);
-  assertToStringEquals("-", res[1065].firstMatch("-"), 3345);
-  assertToStringEquals("*", res[1065].firstMatch("*** Failers"), 3346);
-  assertToStringEquals("-", res[1065].firstMatch("-"), 3347);
-  assertNull(res[1065].firstMatch("1"), 3348);
-  assertToStringEquals("ab", res[1066].firstMatch("abc"), 3349);
-  assertToStringEquals("ab", res[1066].firstMatch("abcd"), 3350);
-  assertToStringEquals("ef,", res[1067].firstMatch("def"), 3351);
-  assertToStringEquals("a(b", res[1069].firstMatch("a(b"), 3352);
-  assertNull(res[1069].firstMatch("ab"), 3353);
-  assertNull(res[1069].firstMatch("a((b"), 3354);
-  assertNull(res[1070].firstMatch("a\x08"), 3355);
-  assertToStringEquals("a,a,a", res[1071].firstMatch("abc"), 3356);
-  assertToStringEquals("abc,a,c", res[1072].firstMatch("abc"), 3357);
-  assertToStringEquals("abc", res[1073].firstMatch("aabbabc"), 3358);
-  assertToStringEquals("abc", res[1074].firstMatch("aabbabc"), 3359);
-  assertToStringEquals("abc", res[1075].firstMatch("abcabc"), 3360);
-  assertToStringEquals("ab,b", res[1076].firstMatch("ab"), 3361);
-  assertToStringEquals("ab,b", res[1077].firstMatch("ab"), 3362);
-  assertToStringEquals("ab,b", res[1078].firstMatch("ab"), 3363);
-  assertToStringEquals("ab,b", res[1079].firstMatch("ab"), 3364);
-  assertToStringEquals("a,a", res[1080].firstMatch("ab"), 3365);
-  assertToStringEquals("a,a", res[1081].firstMatch("ab"), 3366);
-  assertToStringEquals("cde", res[1082].firstMatch("cde"), 3367);
-  assertNull(res[1083].firstMatch("*** Failers"), 3368);
-  assertNull(res[1083].firstMatch("b"), 3369);
-  assertToStringEquals("abbbcd,c", res[1085].firstMatch("abbbcd"), 3370);
-  assertToStringEquals("abcd,a", res[1086].firstMatch("abcd"), 3371);
-  assertToStringEquals("e", res[1087].firstMatch("e"), 3372);
-  assertToStringEquals("ef,e", res[1088].firstMatch("ef"), 3373);
-  assertToStringEquals("abcdefg", res[1089].firstMatch("abcdefg"), 3374);
-  assertToStringEquals("ab", res[1090].firstMatch("xabyabbbz"), 3375);
-  assertToStringEquals("a", res[1090].firstMatch("xayabbbz"), 3376);
-  assertToStringEquals("cde,cd", res[1091].firstMatch("abcde"), 3377);
-  assertToStringEquals("hij", res[1092].firstMatch("hij"), 3378);
-  assertToStringEquals("ef,", res[1094].firstMatch("abcdef"), 3379);
-  assertToStringEquals("bcd,b", res[1095].firstMatch("abcd"), 3380);
-  assertToStringEquals("abc,a", res[1096].firstMatch("abc"), 3381);
-  assertToStringEquals("abc,bc", res[1097].firstMatch("abc"), 3382);
-  assertToStringEquals("abcd,bc,d", res[1098].firstMatch("abcd"), 3383);
-  assertToStringEquals("abcd,bc,d", res[1099].firstMatch("abcd"), 3384);
-  assertToStringEquals("abcd,b,cd", res[1100].firstMatch("abcd"), 3385);
-  assertToStringEquals("adcdcde", res[1101].firstMatch("adcdcde"), 3386);
-  assertNull(res[1102].firstMatch("*** Failers"), 3387);
-  assertNull(res[1102].firstMatch("abcde"), 3388);
-  assertNull(res[1102].firstMatch("adcdcde"), 3389);
-  assertToStringEquals("abc,ab", res[1103].firstMatch("abc"), 3390);
-  assertToStringEquals("abcd,abc,a,b,d", res[1104].firstMatch("abcd"), 3391);
-  assertToStringEquals("alpha", res[1105].firstMatch("alpha"), 3392);
-  assertToStringEquals("bh,", res[1106].firstMatch("abh"), 3393);
-  assertToStringEquals("effgz,effgz,", res[1107].firstMatch("effgz"), 3394);
-  assertToStringEquals("ij,ij,j", res[1107].firstMatch("ij"), 3395);
-  assertToStringEquals("effgz,effgz,", res[1107].firstMatch("reffgz"), 3396);
-  assertNull(res[1107].firstMatch("*** Failers"), 3397);
-  assertNull(res[1107].firstMatch("effg"), 3398);
-  assertNull(res[1107].firstMatch("bcdd"), 3399);
-  assertToStringEquals(
-      "a,a,a,a,a,a,a,a,a,a,a", res[1108].firstMatch("a"), 3400);
-  assertToStringEquals("a,a,a,a,a,a,a,a,a,a", res[1109].firstMatch("a"), 3401);
-  assertNull(res[1110].firstMatch("*** Failers"), 3402);
-  assertNull(res[1110].firstMatch("aa"), 3403);
-  assertNull(res[1110].firstMatch("uh-uh"), 3404);
-  assertToStringEquals(
-      "multiple words", res[1111].firstMatch("multiple words, yeah"), 3405);
-  assertToStringEquals("abcde,ab,de", res[1112].firstMatch("abcde"), 3406);
-  assertToStringEquals("(a, b),a,b", res[1113].firstMatch("(a, b)"), 3407);
-  assertToStringEquals("abcd", res[1115].firstMatch("abcd"), 3408);
-  assertToStringEquals("abcd,bc", res[1116].firstMatch("abcd"), 3409);
-  assertToStringEquals("ac", res[1117].firstMatch("ac"), 3410);
-  assertToStringEquals("ABC", res[1118].firstMatch("ABC"), 3411);
-  assertToStringEquals("ABC", res[1118].firstMatch("XABCY"), 3412);
-  assertToStringEquals("ABC", res[1118].firstMatch("ABABC"), 3413);
-  assertNull(res[1118].firstMatch("*** Failers"), 3414);
-  assertNull(res[1118].firstMatch("aaxabxbaxbbx"), 3415);
-  assertNull(res[1118].firstMatch("XBC"), 3416);
-  assertNull(res[1118].firstMatch("AXC"), 3417);
-  assertNull(res[1118].firstMatch("ABX"), 3418);
-  assertToStringEquals("ABC", res[1119].firstMatch("ABC"), 3419);
-  assertToStringEquals("ABC", res[1120].firstMatch("ABC"), 3420);
-  assertToStringEquals("ABBC", res[1120].firstMatch("ABBC"), 3421);
-  assertToStringEquals("ABBBBC", res[1121].firstMatch("ABBBBC"), 3422);
-  assertToStringEquals("ABBBBC", res[1122].firstMatch("ABBBBC"), 3423);
-  assertToStringEquals("ABBC", res[1123].firstMatch("ABBC"), 3424);
-  assertNull(res[1124].firstMatch("*** Failers"), 3425);
-  assertNull(res[1124].firstMatch("ABC"), 3426);
-  assertNull(res[1124].firstMatch("ABQ"), 3427);
-  assertToStringEquals("ABBBBC", res[1126].firstMatch("ABBBBC"), 3428);
-  assertToStringEquals("ABBBBC", res[1127].firstMatch("ABBBBC"), 3429);
-  assertToStringEquals("ABBBBC", res[1128].firstMatch("ABBBBC"), 3430);
-  assertToStringEquals("ABBBBC", res[1129].firstMatch("ABBBBC"), 3431);
-  assertNull(res[1130].firstMatch("*** Failers"), 3432);
-  assertNull(res[1130].firstMatch("ABQ"), 3433);
-  assertNull(res[1130].firstMatch("ABBBBC"), 3434);
-  assertToStringEquals("ABBC", res[1131].firstMatch("ABBC"), 3435);
-  assertToStringEquals("ABC", res[1131].firstMatch("ABC"), 3436);
-  assertToStringEquals("ABC", res[1132].firstMatch("ABC"), 3437);
-  assertToStringEquals("ABC", res[1134].firstMatch("ABC"), 3438);
-  assertToStringEquals("ABC", res[1135].firstMatch("ABC"), 3439);
-  assertToStringEquals("ABC", res[1136].firstMatch("ABC"), 3440);
-  assertNull(res[1136].firstMatch("*** Failers"), 3441);
-  assertNull(res[1136].firstMatch("ABBBBC"), 3442);
-  assertNull(res[1136].firstMatch("ABCC"), 3443);
-  assertToStringEquals("ABC", res[1137].firstMatch("ABCC"), 3444);
-  assertToStringEquals("ABC", res[1139].firstMatch("AABC"), 3445);
-  assertToStringEquals("", res[1140].firstMatch("ABC"), 3446);
-  assertToStringEquals("", res[1141].firstMatch("ABC"), 3447);
-  assertToStringEquals("ABC", res[1142].firstMatch("ABC"), 3448);
-  assertToStringEquals("AXC", res[1142].firstMatch("AXC"), 3449);
-  assertToStringEquals("AXYZC", res[1143].firstMatch("AXYZC"), 3450);
-  assertNull(res[1144].firstMatch("*** Failers"), 3451);
-  assertToStringEquals("AABC", res[1144].firstMatch("AABC"), 3452);
-  assertNull(res[1144].firstMatch("AXYZD"), 3453);
-  assertToStringEquals("ABD", res[1145].firstMatch("ABD"), 3454);
-  assertToStringEquals("ACE", res[1146].firstMatch("ACE"), 3455);
-  assertNull(res[1146].firstMatch("*** Failers"), 3456);
-  assertNull(res[1146].firstMatch("ABC"), 3457);
-  assertNull(res[1146].firstMatch("ABD"), 3458);
-  assertToStringEquals("AC", res[1147].firstMatch("AAC"), 3459);
-  assertToStringEquals("A-", res[1148].firstMatch("A-"), 3460);
-  assertToStringEquals("A-", res[1149].firstMatch("A-"), 3461);
-  assertToStringEquals("A]", res[1150].firstMatch("A]"), 3462);
-  assertNull(res[1151].firstMatch("A]B"), 3463);
-  assertToStringEquals("AED", res[1152].firstMatch("AED"), 3464);
-  assertToStringEquals("ADC", res[1153].firstMatch("ADC"), 3465);
-  assertNull(res[1153].firstMatch("*** Failers"), 3466);
-  assertNull(res[1153].firstMatch("ABD"), 3467);
-  assertNull(res[1153].firstMatch("A-C"), 3468);
-  assertNull(res[1154].firstMatch("ADC"), 3469);
-  assertToStringEquals("AB", res[1155].firstMatch("ABC"), 3470);
-  assertToStringEquals("AB", res[1155].firstMatch("ABCD"), 3471);
-  assertToStringEquals("EF,", res[1156].firstMatch("DEF"), 3472);
-  assertNull(res[1157].firstMatch("*** Failers"), 3473);
-  assertNull(res[1157].firstMatch("A]C"), 3474);
-  assertNull(res[1157].firstMatch("B"), 3475);
-  assertToStringEquals("A(B", res[1158].firstMatch("A(B"), 3476);
-  assertNull(res[1158].firstMatch("AB"), 3477);
-  assertNull(res[1158].firstMatch("A((B"), 3478);
-  assertNull(res[1159].firstMatch("AB"), 3479);
-  assertToStringEquals("A,A,A", res[1160].firstMatch("ABC"), 3480);
-  assertToStringEquals("ABC,A,C", res[1161].firstMatch("ABC"), 3481);
-  assertToStringEquals("ABC", res[1162].firstMatch("AABBABC"), 3482);
-  assertToStringEquals("ABC", res[1163].firstMatch("AABBABC"), 3483);
-  assertToStringEquals("ABC", res[1164].firstMatch("ABCABC"), 3484);
-  assertToStringEquals("ABC", res[1165].firstMatch("ABCABC"), 3485);
-  assertToStringEquals("ABC", res[1166].firstMatch("ABCABC"), 3486);
-  assertToStringEquals("AB,B", res[1167].firstMatch("AB"), 3487);
-  assertToStringEquals("AB,B", res[1168].firstMatch("AB"), 3488);
-  assertToStringEquals("AB,B", res[1169].firstMatch("AB"), 3489);
-  assertToStringEquals("AB,B", res[1170].firstMatch("AB"), 3490);
-  assertToStringEquals("A,A", res[1171].firstMatch("AB"), 3491);
-  assertToStringEquals("A,A", res[1172].firstMatch("AB"), 3492);
-  assertToStringEquals(",", res[1173].firstMatch("AB"), 3493);
-  assertToStringEquals("CDE", res[1174].firstMatch("CDE"), 3494);
-  assertToStringEquals("ABBBCD,C", res[1177].firstMatch("ABBBCD"), 3495);
-  assertToStringEquals("ABCD,A", res[1178].firstMatch("ABCD"), 3496);
-  assertToStringEquals("E", res[1179].firstMatch("E"), 3497);
-  assertToStringEquals("EF,E", res[1180].firstMatch("EF"), 3498);
-  assertToStringEquals("ABCDEFG", res[1181].firstMatch("ABCDEFG"), 3499);
-  assertToStringEquals("AB", res[1182].firstMatch("XABYABBBZ"), 3500);
-  assertToStringEquals("A", res[1182].firstMatch("XAYABBBZ"), 3501);
-  assertToStringEquals("CDE,CD", res[1183].firstMatch("ABCDE"), 3502);
-  assertToStringEquals("HIJ", res[1184].firstMatch("HIJ"), 3503);
-  assertNull(res[1185].firstMatch("ABCDE"), 3504);
-  assertToStringEquals("EF,", res[1186].firstMatch("ABCDEF"), 3505);
-  assertToStringEquals("BCD,B", res[1187].firstMatch("ABCD"), 3506);
-  assertToStringEquals("ABC,A", res[1188].firstMatch("ABC"), 3507);
-  assertToStringEquals("ABC,BC", res[1189].firstMatch("ABC"), 3508);
-  assertToStringEquals("ABCD,BC,D", res[1190].firstMatch("ABCD"), 3509);
-  assertToStringEquals("ABCD,BC,D", res[1191].firstMatch("ABCD"), 3510);
-  assertToStringEquals("ABCD,B,CD", res[1192].firstMatch("ABCD"), 3511);
-  assertToStringEquals("ADCDCDE", res[1193].firstMatch("ADCDCDE"), 3512);
-  assertToStringEquals("ABC,AB", res[1195].firstMatch("ABC"), 3513);
-  assertToStringEquals("ABCD,ABC,A,B,D", res[1196].firstMatch("ABCD"), 3514);
-  assertToStringEquals("ALPHA", res[1197].firstMatch("ALPHA"), 3515);
-  assertToStringEquals("BH,", res[1198].firstMatch("ABH"), 3516);
-  assertToStringEquals("EFFGZ,EFFGZ,", res[1199].firstMatch("EFFGZ"), 3517);
-  assertToStringEquals("IJ,IJ,J", res[1199].firstMatch("IJ"), 3518);
-  assertToStringEquals("EFFGZ,EFFGZ,", res[1199].firstMatch("REFFGZ"), 3519);
-  assertNull(res[1199].firstMatch("*** Failers"), 3520);
-  assertNull(res[1199].firstMatch("ADCDCDE"), 3521);
-  assertNull(res[1199].firstMatch("EFFG"), 3522);
-  assertNull(res[1199].firstMatch("BCDD"), 3523);
-  assertToStringEquals(
-      "A,A,A,A,A,A,A,A,A,A,A", res[1200].firstMatch("A"), 3524);
-  assertToStringEquals("A,A,A,A,A,A,A,A,A,A", res[1201].firstMatch("A"), 3525);
-  assertToStringEquals("A,A", res[1202].firstMatch("A"), 3526);
-  assertToStringEquals("C,C", res[1203].firstMatch("C"), 3527);
-  assertNull(res[1204].firstMatch("*** Failers"), 3528);
-  assertNull(res[1204].firstMatch("AA"), 3529);
-  assertNull(res[1204].firstMatch("UH-UH"), 3530);
-  assertToStringEquals(
-      "MULTIPLE WORDS", res[1205].firstMatch("MULTIPLE WORDS, YEAH"), 3531);
-  assertToStringEquals("ABCDE,AB,DE", res[1206].firstMatch("ABCDE"), 3532);
-  assertToStringEquals("(A, B),A,B", res[1207].firstMatch("(A, B)"), 3533);
-  assertToStringEquals("ABCD", res[1209].firstMatch("ABCD"), 3534);
-  assertToStringEquals("ABCD,BC", res[1210].firstMatch("ABCD"), 3535);
-  assertToStringEquals("AC", res[1211].firstMatch("AC"), 3536);
-  assertToStringEquals("ad", res[1212].firstMatch("abad"), 3537);
-  assertToStringEquals("ad", res[1213].firstMatch("abad"), 3538);
-  assertToStringEquals("ad", res[1214].firstMatch("abad"), 3539);
-  assertToStringEquals("ace,e", res[1215].firstMatch("ace"), 3540);
-  assertToStringEquals("ace,e", res[1216].firstMatch("ace"), 3541);
-  assertToStringEquals("ace,e", res[1217].firstMatch("ace"), 3542);
-  assertToStringEquals("acd,d", res[1217].firstMatch("acdbcdbe"), 3543);
-  assertToStringEquals("acdbcdbe,e", res[1218].firstMatch("acdbcdbe"), 3544);
-  assertToStringEquals("acdb,b", res[1219].firstMatch("acdbcdbe"), 3545);
-  assertToStringEquals("acdbcdb,b", res[1220].firstMatch("acdbcdbe"), 3546);
-  assertToStringEquals("acdbcd,d", res[1221].firstMatch("acdbcdbe"), 3547);
-  assertToStringEquals("foobar,bar,,bar", res[1222].firstMatch("foobar"), 3548);
-  assertToStringEquals("acdbcdbe,e", res[1223].firstMatch("acdbcdbe"), 3549);
-  assertToStringEquals("acdbcdbe,e", res[1224].firstMatch("acdbcdbe"), 3550);
-  assertToStringEquals("acdbcdbe,e", res[1225].firstMatch("acdbcdbe"), 3551);
-  assertToStringEquals("acdbcdb,b", res[1226].firstMatch("acdbcdbe"), 3552);
-  assertToStringEquals("acdbcdbe,e", res[1227].firstMatch("acdbcdbe"), 3553);
-  assertToStringEquals("acdbcdb,b", res[1228].firstMatch("acdbcdbe"), 3554);
-  assertToStringEquals("ace,c,e", res[1229].firstMatch("ace"), 3555);
-  assertToStringEquals("AB,A", res[1230].firstMatch("AB"), 3556);
-  assertToStringEquals(".,.,", res[1231].firstMatch("."), 3557);
-  assertToStringEquals("<&", res[1232].firstMatch("<&OUT"), 3558);
-  assertToStringEquals("foobar,,,,b,a,r", res[1233].firstMatch("foobar"), 3559);
-  assertToStringEquals(",,,,,,", res[1233].firstMatch("ab"), 3560);
-  assertToStringEquals(",,,,,,", res[1233].firstMatch("*** Failers"), 3561);
-  assertToStringEquals(",,,,,,", res[1233].firstMatch("cb"), 3562);
-  assertToStringEquals(",,,,,,", res[1233].firstMatch("b"), 3563);
-  assertToStringEquals(",,,,,,", res[1233].firstMatch("ab"), 3564);
-  assertToStringEquals(",,,,,,", res[1233].firstMatch("b"), 3565);
-  assertToStringEquals(",,,,,,", res[1233].firstMatch("b"), 3566);
-  assertToStringEquals("aba", res[1234].firstMatch("aba"), 3567);
-  assertToStringEquals("a", res[1235].firstMatch("aba"), 3568);
-  assertToStringEquals(",", res[1236].firstMatch("abc"), 3569);
-  assertToStringEquals("aax,a", res[1237].firstMatch("aax"), 3570);
-  assertToStringEquals("aax,a,a", res[1238].firstMatch("aax"), 3571);
-  assertToStringEquals("aax,a,a", res[1239].firstMatch("aax"), 3572);
-  assertToStringEquals("ab,", res[1240].firstMatch("cab"), 3573);
-  assertToStringEquals("ab,", res[1241].firstMatch("cab"), 3574);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3575);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3576);
-  assertNull(res[1241].firstMatch("Ab"), 3577);
-  assertNull(res[1241].firstMatch("Ab"), 3578);
-  assertNull(res[1241].firstMatch("*** Failers"), 3579);
-  assertNull(res[1241].firstMatch("cb"), 3580);
-  assertNull(res[1241].firstMatch("aB"), 3581);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3582);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3583);
-  assertNull(res[1241].firstMatch("Ab"), 3584);
-  assertNull(res[1241].firstMatch("Ab"), 3585);
-  assertNull(res[1241].firstMatch("*** Failers"), 3586);
-  assertNull(res[1241].firstMatch("aB"), 3587);
-  assertNull(res[1241].firstMatch("aB"), 3588);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3589);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3590);
-  assertNull(res[1241].firstMatch("aB"), 3591);
-  assertNull(res[1241].firstMatch("aB"), 3592);
-  assertNull(res[1241].firstMatch("*** Failers"), 3593);
-  assertNull(res[1241].firstMatch("aB"), 3594);
-  assertNull(res[1241].firstMatch("Ab"), 3595);
-  assertNull(res[1241].firstMatch("aB"), 3596);
-  assertNull(res[1241].firstMatch("aB"), 3597);
-  assertNull(res[1241].firstMatch("*** Failers"), 3598);
-  assertNull(res[1241].firstMatch("Ab"), 3599);
-  assertNull(res[1241].firstMatch("AB"), 3600);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3601);
-  assertToStringEquals("ab,", res[1241].firstMatch("ab"), 3602);
-  assertNull(res[1241].firstMatch("aB"), 3603);
-  assertNull(res[1241].firstMatch("aB"), 3604);
-  assertNull(res[1241].firstMatch("*** Failers"), 3605);
-  assertNull(res[1241].firstMatch("AB"), 3606);
-  assertNull(res[1241].firstMatch("Ab"), 3607);
-  assertNull(res[1241].firstMatch("aB"), 3608);
-  assertNull(res[1241].firstMatch("aB"), 3609);
-  assertNull(res[1241].firstMatch("*** Failers"), 3610);
-  assertNull(res[1241].firstMatch("Ab"), 3611);
-  assertNull(res[1241].firstMatch("AB"), 3612);
-  assertNull(res[1241].firstMatch("*** Failers"), 3613);
-  assertNull(res[1241].firstMatch("AB"), 3614);
-  assertNull(res[1241].firstMatch("a\nB"), 3615);
-  assertNull(res[1241].firstMatch("a\nB"), 3616);
-  assertToStringEquals("cabbbb", res[1242].firstMatch("cabbbb"), 3617);
-  assertToStringEquals("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
-      res[1243].firstMatch("caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"), 3618);
-  assertToStringEquals(
-      "foobar1234baz", res[1244].firstMatch("foobar1234baz"), 3619);
-  assertToStringEquals("x~~,~~", res[1245].firstMatch("x~~"), 3620);
-  assertToStringEquals("aaac", res[1246].firstMatch("aaac"), 3621);
-  assertToStringEquals("aaac", res[1247].firstMatch("aaac"), 3622);
-  assertNull(res[1247].firstMatch("*** Failers"), 3623);
-  assertNull(res[1247].firstMatch("B\nB"), 3624);
-  assertNull(res[1247].firstMatch("dbcb"), 3625);
-  assertNull(res[1247].firstMatch("dbaacb"), 3626);
-  assertNull(res[1247].firstMatch("dbaacb"), 3627);
-  assertNull(res[1247].firstMatch("cdaccb"), 3628);
-  assertNull(res[1248].firstMatch("*** Failers"), 3629);
-  assertNull(res[1248].firstMatch("dbcb"), 3630);
-  assertNull(res[1248].firstMatch("a--"), 3631);
-  assertNull(res[1248].firstMatch("a\nb\nc\n"), 3632);
-  assertNull(res[1248].firstMatch("a\nb\nc\n"), 3633);
-  assertNull(res[1248].firstMatch("a\nb\n"), 3634);
-  assertNull(res[1248].firstMatch("a\nb\n"), 3635);
-  assertNull(res[1248].firstMatch("a\nb\n"), 3636);
-  assertNull(res[1248].firstMatch("a\nb\n"), 3637);
-  assertNull(res[1248].firstMatch("a\nb\nc\n"), 3638);
-  assertNull(res[1248].firstMatch("a\nb\nc\n"), 3639);
-  assertNull(res[1248].firstMatch("a\nb\nc\n"), 3640);
-  assertNull(res[1248].firstMatch("a\nb\nc\n"), 3641);
-  assertNull(res[1250].firstMatch("*** Failers"), 3642);
-  assertNull(res[1250].firstMatch("a\nb\nc\n"), 3643);
-  assertNull(res[1250].firstMatch("a\nb\nc\n"), 3644);
-  assertNull(res[1250].firstMatch("a\nb\nc\n"), 3645);
-  assertNull(res[1250].firstMatch("a"), 3646);
-  assertNull(res[1250].firstMatch("*** Failers"), 3647);
-  assertNull(res[1250].firstMatch("a"), 3648);
-  assertNull(res[1250].firstMatch("a"), 3649);
-  assertNull(res[1250].firstMatch("a"), 3650);
-  assertToStringEquals("one:,one:", res[1251].firstMatch("one:"), 3651);
-  assertNull(res[1251].firstMatch("a"), 3652);
-  assertToStringEquals("abcd,,abcd", res[1252].firstMatch("abcd"), 3653);
-  assertToStringEquals(
-      "xy:z:::abcd,xy:z:::,abcd", res[1252].firstMatch("xy:z:::abcd"), 3654);
-  assertToStringEquals("aexyc,c", res[1253].firstMatch("aexycd"), 3655);
-  assertToStringEquals("aab,aa", res[1254].firstMatch("caab"), 3656);
-  assertToStringEquals("abcd,,abcd", res[1255].firstMatch("abcd"), 3657);
-  assertToStringEquals(
-      "xy:z:::abcd,xy:z:::,abcd", res[1255].firstMatch("xy:z:::abcd"), 3658);
-  assertToStringEquals(
-      "Failers,,Failers", res[1255].firstMatch("*** Failers"), 3659);
-  assertNull(res[1255].firstMatch("abcd:"), 3660);
-  assertNull(res[1255].firstMatch("abcd:"), 3661);
-  assertToStringEquals("aexyc,c", res[1256].firstMatch("aexycd"), 3662);
-  assertNull(res[1257].firstMatch("aaab"), 3663);
-  assertToStringEquals(":[,:[", res[1258].firstMatch("a:[b]:"), 3664);
-  assertToStringEquals("=[,=[", res[1259].firstMatch("a=[b]="), 3665);
-  assertToStringEquals(".[,.[", res[1260].firstMatch("a.[b]."), 3666);
-  assertNull(res[1260].firstMatch("aaab"), 3667);
-  assertNull(res[1260].firstMatch("aaab"), 3668);
-  assertNull(res[1260].firstMatch("((abc(ade)ufh()()x"), 3669);
-  assertNull(res[1261].firstMatch("*** Failers"), 3670);
-  assertNull(res[1261].firstMatch("aaab"), 3671);
-  assertNull(res[1261].firstMatch("a\nb\n"), 3672);
-  assertNull(res[1262].firstMatch("a\nb\n"), 3673);
-  assertNull(res[1264].firstMatch("a\nb"), 3674);
-  assertNull(res[1265].firstMatch("a\nb"), 3675);
-  assertNull(res[1265].firstMatch("*** Failers"), 3676);
-  assertNull(res[1265].firstMatch("alphabetabcd"), 3677);
-  assertNull(res[1265].firstMatch("endingwxyz"), 3678);
-  assertNull(res[1265].firstMatch("*** Failers"), 3679);
-  assertNull(
-      res[1265]
-          .firstMatch("a rather long string that doesn't end with one of them"),
-      3680);
-  assertNull(
-      res[1265].firstMatch(
-          "word cat dog elephant mussel cow horse canary baboon snake shark otherword"),
-      3681);
-  assertNull(
-      res[1265].firstMatch(
-          "word cat dog elephant mussel cow horse canary baboon snake shark"),
-      3682);
-  assertNull(
-      res[1265].firstMatch(
-          "word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope"),
-      3683);
-  assertNull(res[1265].firstMatch("999foo"), 3684);
-  assertNull(res[1265].firstMatch("123999foo "), 3685);
-  assertNull(res[1265].firstMatch("*** Failers"), 3686);
-  assertNull(res[1265].firstMatch("123abcfoo"), 3687);
-  assertNull(res[1265].firstMatch("999foo"), 3688);
-  assertNull(res[1265].firstMatch("123999foo "), 3689);
-  assertNull(res[1265].firstMatch("*** Failers"), 3690);
-  assertNull(res[1265].firstMatch("123abcfoo"), 3691);
-  assertNull(res[1265].firstMatch("123abcfoo"), 3692);
-  assertNull(res[1265].firstMatch("123456foo "), 3693);
-  assertNull(res[1265].firstMatch("*** Failers"), 3694);
-  assertNull(res[1265].firstMatch("123999foo  "), 3695);
-  assertNull(res[1265].firstMatch("123abcfoo   "), 3696);
-  assertNull(res[1265].firstMatch("123456foo "), 3697);
-  assertNull(res[1265].firstMatch("*** Failers"), 3698);
-  assertNull(res[1265].firstMatch("123999foo  "), 3699);
-  assertToStringEquals("ZA,A,", res[1266].firstMatch("ZABCDEFG"), 3700);
-  assertToStringEquals("ZA,A,", res[1267].firstMatch("ZABCDEFG"), 3701);
-  assertToStringEquals("ZA,A,,", res[1268].firstMatch("ZABCDEFG"), 3702);
-  assertToStringEquals("ZA,A,,", res[1268].firstMatch("ZABCDEFG"), 3703);
-  assertToStringEquals("ZA,A,,", res[1268].firstMatch("ZABCDEFG"), 3704);
-  assertToStringEquals("a", res[1269].firstMatch("abbab"), 3705);
-  assertToStringEquals("a", res[1270].firstMatch("abcde"), 3711);
-  assertToStringEquals("-", res[1270].firstMatch("-things"), 3712);
-  assertToStringEquals("0", res[1270].firstMatch("0digit"), 3713);
-  assertNull(res[1270].firstMatch("*** Failers"), 3714);
-  assertNull(res[1270].firstMatch("bcdef    "), 3715);
-  assertNull(res[1271].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3716);
-  assertNull(res[1271].firstMatch(" "), 3717);
-  assertNull(res[1272].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3718);
-  assertNull(res[1272].firstMatch(" "), 3719);
-  assertToStringEquals(" \x09\n\x0c\x0d\x0b",
-      res[1273].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3720);
-  assertToStringEquals(" ", res[1273].firstMatch(" "), 3721);
-  assertToStringEquals(" \x09\n\x0c\x0d\x0b",
-      res[1274].firstMatch("> \x09\n\x0c\x0d\x0b<"), 3722);
-  assertToStringEquals(" ", res[1274].firstMatch(" "), 3723);
-  assertNull(res[1275].firstMatch("ab"), 3724);
-  assertNull(res[1278].firstMatch("abcabcabc"), 3725);
-  assertNull(res[1278].firstMatch("abc(*+|abc "), 3726);
-  assertNull(res[1279].firstMatch("abc abcabc"), 3727);
-  assertNull(res[1279].firstMatch("*** Failers"), 3728);
-  assertNull(res[1279].firstMatch("abcabcabc  "), 3729);
-  assertNull(res[1280].firstMatch("abc#not comment\n    literal     "), 3730);
-  assertNull(res[1281].firstMatch("abc#not comment\n    literal     "), 3731);
-  assertNull(res[1282].firstMatch("abc#not comment\n    literal     "), 3732);
-  assertNull(res[1283].firstMatch("abc#not comment\n    literal     "), 3733);
-  assertNull(res[1284].firstMatch("abc\\\$xyz"), 3734);
-  assertNull(res[1285].firstMatch("abc\\\$xyz"), 3735);
-  assertNull(res[1286].firstMatch("abc"), 3736);
-  assertNull(res[1286].firstMatch("*** Failers"), 3737);
-  assertNull(res[1286].firstMatch("xyzabc  "), 3738);
-  assertNull(res[1287].firstMatch("abc1abc2xyzabc3"), 3739);
-  assertToStringEquals("abc1", res[1288].firstMatch("abc1abc2xyzabc3 "), 3740);
-  assertNull(res[1288].firstMatch("*** Failers "), 3742);
-  assertNull(res[1288].firstMatch("Xa b c d Y "), 3743);
-  assertToStringEquals("abcY", res[1288].firstMatch("XabcY"), 3744);
-  assertNull(res[1288].firstMatch("AxyzB "), 3745);
-  assertNull(res[1288].firstMatch("XabCY"), 3746);
-  assertNull(res[1288].firstMatch("*** Failers"), 3747);
-  assertToStringEquals("abcY", res[1288].firstMatch("XabcY  "), 3748);
-  assertNull(res[1288].firstMatch("abCE"), 3749);
-  assertNull(res[1288].firstMatch("DE"), 3750);
-  assertNull(res[1288].firstMatch("*** Failers"), 3751);
-  assertToStringEquals("abcE", res[1288].firstMatch("abcE"), 3752);
-  assertNull(res[1288].firstMatch("abCe  "), 3753);
-  assertNull(res[1288].firstMatch("dE"), 3754);
-  assertNull(res[1288].firstMatch("De    "), 3755);
-  assertNull(res[1289].firstMatch("z"), 3756);
-  assertNull(res[1289].firstMatch("a"), 3757);
-  assertNull(res[1289].firstMatch("-"), 3758);
-  assertNull(res[1289].firstMatch("d"), 3759);
-  assertNull(res[1289].firstMatch("] "), 3760);
-  assertNull(res[1289].firstMatch("*** Failers"), 3761);
-  assertNull(res[1289].firstMatch("b     "), 3762);
-  assertToStringEquals("z", res[1290].firstMatch("z"), 3763);
-  assertToStringEquals("C", res[1290].firstMatch("C "), 3764);
-  assertToStringEquals("M", res[1291].firstMatch("M "), 3765);
-  assertNull(res[1292].firstMatch(""), 3766);
-  assertNull(res[1292].firstMatch("REGular"), 3767);
-  assertNull(res[1292].firstMatch("regulaer"), 3768);
-  assertNull(res[1292].firstMatch("Regex  "), 3769);
-  assertNull(res[1292].firstMatch("regul\ufffdr "), 3770);
-  assertNull(res[1292].firstMatch("\ufffd\ufffd\ufffd\ufffd\ufffd"), 3771);
-  assertNull(res[1292].firstMatch("\ufffd\ufffd\ufffd\ufffd\ufffd"), 3772);
-  assertNull(res[1292].firstMatch("\ufffd\ufffd\ufffd\ufffd\ufffd"), 3773);
-  assertNull(res[1292].firstMatch("\ufffd\ufffd\ufffd\ufffd\ufffd"), 3774);
-  assertNull(res[1292].firstMatch("\x84XAZXB"), 3775);
-  assertNull(res[1292].firstMatch("123a"), 3776);
-  assertNull(res[1292].firstMatch("ac"), 3777);
-  assertToStringEquals("b,", res[1292].firstMatch("bbbbc"), 3778);
-  assertToStringEquals("ab,a", res[1292].firstMatch("abc"), 3779);
-  assertNull(res[1292].firstMatch("*** Failers"), 3780);
-  assertToStringEquals("b,", res[1292].firstMatch("bca"), 3781);
-  assertNull(res[1292].firstMatch(""), 3782);
-  assertToStringEquals("ab,a", res[1292].firstMatch("abc"), 3783);
-  assertNull(res[1292].firstMatch("*** Failers"), 3784);
-  assertToStringEquals("b,", res[1292].firstMatch("bca"), 3785);
-  assertToStringEquals("ab,a", res[1292].firstMatch("abc"), 3786);
-  assertNull(res[1292].firstMatch("*** Failers"), 3787);
-  assertNull(res[1292].firstMatch("def  "), 3788);
-  assertNull(res[1292].firstMatch(""), 3789);
-  assertToStringEquals("ab,a", res[1292].firstMatch("abc"), 3790);
-  assertNull(res[1292].firstMatch("*** Failers"), 3791);
-  assertNull(res[1292].firstMatch("def  "), 3792);
-  assertNull(res[1292].firstMatch(""), 3793);
-  assertToStringEquals(
-      "line\nbreak", res[1293].firstMatch("this is a line\nbreak"), 3794);
-  assertToStringEquals(
-      "line\nbreak",
-      res[1293]
-          .firstMatch("line one\nthis is a line\nbreak in the second line "),
-      3795);
-  assertToStringEquals(
-      "line\nbreak", res[1294].firstMatch("this is a line\nbreak"), 3796);
-  assertNull(res[1294].firstMatch("** Failers "), 3797);
-  assertToStringEquals(
-      "line\nbreak",
-      res[1294]
-          .firstMatch("line one\nthis is a line\nbreak in the second line "),
-      3798);
-  assertToStringEquals(
-      "line\nbreak", res[1295].firstMatch("this is a line\nbreak"), 3799);
-  assertNull(res[1295].firstMatch("** Failers "), 3800);
-  assertToStringEquals(
-      "line\nbreak",
-      res[1295]
-          .firstMatch("line one\nthis is a line\nbreak in the second line "),
-      3801);
-  assertNull(res[1296].firstMatch("123P"), 3802);
-  assertNull(res[1296].firstMatch("a4PR"), 3803);
-  assertNull(res[1297].firstMatch("123P"), 3804);
-  assertNull(res[1297].firstMatch("4PR"), 3805);
-  assertToStringEquals("", res[1298].firstMatch("a\nb\nc\n"), 3806);
-  assertToStringEquals("", res[1298].firstMatch(" "), 3807);
-  assertToStringEquals("", res[1298].firstMatch("A\nC\nC\n "), 3808);
-  assertToStringEquals("", res[1298].firstMatch("AB"), 3809);
-  assertToStringEquals("", res[1298].firstMatch("aB  "), 3810);
-  assertToStringEquals("", res[1298].firstMatch("AB"), 3811);
-  assertToStringEquals("", res[1298].firstMatch("aB  "), 3812);
-  assertToStringEquals("", res[1298].firstMatch("AB"), 3813);
-  assertToStringEquals("", res[1298].firstMatch("aB  "), 3814);
-  assertToStringEquals("", res[1298].firstMatch("AB"), 3815);
-  assertToStringEquals("", res[1298].firstMatch("aB  "), 3816);
-  assertToStringEquals("Content-Type:xxxxxyyy ",
-      res[1299].firstMatch("Content-Type:xxxxxyyy "), 3817);
-  assertToStringEquals("Content-Type:xxxxxyyyz",
-      res[1300].firstMatch("Content-Type:xxxxxyyyz"), 3818);
-  assertToStringEquals("Content-Type:xxxyyy ",
-      res[1301].firstMatch("Content-Type:xxxyyy "), 3819);
-  assertToStringEquals("Content-Type:xxxyyyz",
-      res[1302].firstMatch("Content-Type:xxxyyyz"), 3820);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\nabc"), 3821);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\nabc<lf>"), 3822);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\x0d\nabc<lf>"), 3823);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\x0dabc<cr>"), 3824);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\x0d\nabc<crlf>"), 3825);
-  assertNull(res[1303].firstMatch("** Failers "), 3826);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\nabc<cr>"), 3827);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\x0d\nabc<cr>"), 3828);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\nabc<crlf>"), 3829);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\x0dabc<crlf>"), 3830);
-  assertToStringEquals("abc", res[1303].firstMatch("xyz\x0dabc<lf>"), 3831);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc"), 3832);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\n "), 3833);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\npqr "), 3834);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d<cr> "), 3835);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0dpqr<cr> "), 3836);
-  assertToStringEquals(
-      "abc", res[1304].firstMatch("xyzabc\x0d\n<crlf> "), 3837);
-  assertToStringEquals(
-      "abc", res[1304].firstMatch("xyzabc\x0d\npqr<crlf> "), 3838);
-  assertNull(res[1304].firstMatch("** Failers"), 3839);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d "), 3840);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0dpqr "), 3841);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d\n "), 3842);
-  assertToStringEquals("abc", res[1304].firstMatch("xyzabc\x0d\npqr "), 3843);
-  assertToStringEquals("abc", res[1305].firstMatch("xyz\x0dabcdef"), 3844);
-  assertToStringEquals("abc", res[1305].firstMatch("xyz\nabcdef<lf>"), 3845);
-  assertNull(res[1305].firstMatch("** Failers  "), 3846);
-  assertToStringEquals("abc", res[1305].firstMatch("xyz\nabcdef"), 3847);
-  assertNull(res[1305].firstMatch("   "), 3848);
-  assertToStringEquals("abc", res[1306].firstMatch("xyz\nabcdef"), 3849);
-  assertToStringEquals("abc", res[1306].firstMatch("xyz\x0dabcdef<cr>"), 3850);
-  assertNull(res[1306].firstMatch("** Failers  "), 3851);
-  assertToStringEquals("abc", res[1306].firstMatch("xyz\x0dabcdef"), 3852);
-  assertNull(res[1306].firstMatch("   "), 3853);
-  assertToStringEquals("abc", res[1307].firstMatch("xyz\x0d\nabcdef"), 3854);
-  assertToStringEquals("abc", res[1307].firstMatch("xyz\x0dabcdef<cr>"), 3855);
-  assertNull(res[1307].firstMatch("** Failers  "), 3856);
-  assertToStringEquals("abc", res[1307].firstMatch("xyz\x0dabcdef"), 3857);
-  assertToStringEquals("abc", res[1308].firstMatch("abc\ndef"), 3858);
-  assertToStringEquals("abc", res[1308].firstMatch("abc\x0ddef"), 3859);
-  assertToStringEquals("abc", res[1308].firstMatch("abc\x0d\ndef"), 3860);
-  assertToStringEquals("<cr>abc", res[1308].firstMatch("<cr>abc\ndef"), 3861);
-  assertToStringEquals("<cr>abc", res[1308].firstMatch("<cr>abc\x0ddef"), 3862);
-  assertToStringEquals(
-      "<cr>abc", res[1308].firstMatch("<cr>abc\x0d\ndef"), 3863);
-  assertToStringEquals(
-      "<crlf>abc", res[1308].firstMatch("<crlf>abc\ndef"), 3864);
-  assertToStringEquals(
-      "<crlf>abc", res[1308].firstMatch("<crlf>abc\x0ddef"), 3865);
-  assertToStringEquals(
-      "<crlf>abc", res[1308].firstMatch("<crlf>abc\x0d\ndef"), 3866);
-  assertNull(res[1309].firstMatch("abc\ndef"), 3867);
-  assertNull(res[1309].firstMatch("abc\x0ddef"), 3868);
-  assertNull(res[1309].firstMatch("abc\x0d\ndef"), 3869);
-  assertToStringEquals(
-      "abc=xyz\\,", res[1310].firstMatch("abc=xyz\\\npqr"), 3870);
-  assertToStringEquals("aaaa,a,", res[1311].firstMatch("aaaa"), 3871);
-  assertToStringEquals("aaaa", res[1312].firstMatch("aaaa"), 3872);
-  assertToStringEquals("aaaa,a,", res[1313].firstMatch("aaaa"), 3873);
-  assertToStringEquals("aaaa", res[1314].firstMatch("aaaa"), 3874);
-  assertNull(res[1317].firstMatch("a\x0db"), 3875);
-  assertNull(res[1317].firstMatch("a\nb<cr> "), 3876);
-  assertNull(res[1317].firstMatch("** Failers"), 3877);
-  assertNull(res[1317].firstMatch("a\nb"), 3878);
-  assertNull(res[1317].firstMatch("a\nb<any>"), 3879);
-  assertNull(res[1317].firstMatch("a\x0db<cr>   "), 3880);
-  assertNull(res[1317].firstMatch("a\x0db<any>   "), 3881);
-  assertToStringEquals(
-      "abc1",
-      res[1318].firstMatch(
-          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 \x85abc7 JUNK"),
-      3882);
-  assertToStringEquals(
-      "abc1",
-      res[1319].firstMatch(
-          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6\x85 abc9"),
-      3883);
-  assertNull(res[1320].firstMatch("a\nb"), 3884);
-  assertNull(res[1320].firstMatch("a\x0db"), 3885);
-  assertNull(res[1320].firstMatch("a\x0d\nb"), 3886);
-  assertNull(res[1320].firstMatch("a\x0bb"), 3887);
-  assertNull(res[1320].firstMatch("a\x0cb"), 3888);
-  assertNull(res[1320].firstMatch("a\x85b   "), 3889);
-  assertNull(res[1320].firstMatch("** Failers"), 3890);
-  assertNull(res[1320].firstMatch("a\n\x0db    "), 3891);
-  assertToStringEquals("ab", res[1321].firstMatch("ab"), 3892);
-  assertNull(res[1321].firstMatch("a\nb"), 3893);
-  assertNull(res[1321].firstMatch("a\x0db"), 3894);
-  assertNull(res[1321].firstMatch("a\x0d\nb"), 3895);
-  assertNull(res[1321].firstMatch("a\x0bb"), 3896);
-  assertNull(res[1321].firstMatch("a\x0cb"), 3897);
-  assertNull(res[1321].firstMatch("a\x85b   "), 3898);
-  assertNull(res[1321].firstMatch("a\n\x0db    "), 3899);
-  assertNull(res[1321].firstMatch("a\n\x0d\x85\x0cb "), 3900);
-  assertNull(res[1322].firstMatch("a\nb"), 3901);
-  assertNull(res[1322].firstMatch("a\x0db"), 3902);
-  assertNull(res[1322].firstMatch("a\x0d\nb"), 3903);
-  assertNull(res[1322].firstMatch("a\x0bb"), 3904);
-  assertNull(res[1322].firstMatch("a\x0cb"), 3905);
-  assertNull(res[1322].firstMatch("a\x85b   "), 3906);
-  assertNull(res[1322].firstMatch("a\n\x0db    "), 3907);
-  assertNull(res[1322].firstMatch("a\n\x0d\x85\x0cb "), 3908);
-  assertNull(res[1322].firstMatch("** Failers"), 3909);
-  assertNull(res[1322].firstMatch("ab  "), 3910);
-  assertNull(res[1323].firstMatch("a\nb"), 3911);
-  assertNull(res[1323].firstMatch("a\n\x0db"), 3912);
-  assertNull(res[1323].firstMatch("a\n\x0d\x85b"), 3913);
-  assertNull(res[1323].firstMatch("a\x0d\n\x0d\nb "), 3914);
-  assertNull(res[1323].firstMatch("a\x0d\n\x0d\n\x0d\nb "), 3915);
-  assertNull(res[1323].firstMatch("a\n\x0d\n\x0db"), 3916);
-  assertNull(res[1323].firstMatch("a\n\n\x0d\nb "), 3917);
-  assertNull(res[1323].firstMatch("** Failers"), 3918);
-  assertNull(res[1323].firstMatch("a\n\n\n\x0db"), 3919);
-  assertNull(res[1323].firstMatch("a\x0d"), 3920);
-  assertToStringEquals("aRb", res[1324].firstMatch("aRb"), 3921);
-  assertNull(res[1324].firstMatch("** Failers"), 3922);
-  assertNull(res[1324].firstMatch("a\nb  "), 3923);
-  assertToStringEquals("afoo", res[1325].firstMatch("afoo"), 3924);
-  assertNull(res[1325].firstMatch("** Failers "), 3925);
-  assertNull(res[1325].firstMatch("\x0d\nfoo "), 3926);
-  assertNull(res[1325].firstMatch("\nfoo "), 3927);
-  assertToStringEquals("afoo", res[1326].firstMatch("afoo"), 3928);
-  assertNull(res[1326].firstMatch("\nfoo "), 3929);
-  assertNull(res[1326].firstMatch("** Failers "), 3930);
-  assertNull(res[1326].firstMatch("\x0d\nfoo "), 3931);
-  assertToStringEquals("afoo", res[1327].firstMatch("afoo"), 3932);
-  assertNull(res[1327].firstMatch("** Failers "), 3933);
-  assertNull(res[1327].firstMatch("\nfoo "), 3934);
-  assertNull(res[1327].firstMatch("\x0d\nfoo "), 3935);
-  assertToStringEquals("afoo", res[1328].firstMatch("afoo"), 3936);
-  assertNull(res[1328].firstMatch("\x0d\nfoo "), 3937);
-  assertNull(res[1328].firstMatch("\nfoo "), 3938);
-  assertToStringEquals("", res[1329].firstMatch("abc\x0d\x0dxyz"), 3939);
-  assertToStringEquals("", res[1329].firstMatch("abc\n\x0dxyz  "), 3940);
-  assertNull(res[1329].firstMatch("** Failers "), 3941);
-  assertToStringEquals("", res[1329].firstMatch("abc\x0d\nxyz"), 3942);
-  assertToStringEquals("X", res[1330].firstMatch("XABC"), 3943);
-  assertNull(res[1330].firstMatch("** Failers "), 3944);
-  assertToStringEquals("X", res[1330].firstMatch("XABCB"), 3945);
-  assertNull(res[1330].firstMatch("abc\x0d\n\x0d\n"), 3946);
-  assertNull(res[1330].firstMatch("abc\x0d\n\x0d\n"), 3947);
-  assertNull(res[1330].firstMatch("abc\x0d\n\x0d\n"), 3948);
-  assertThrows(() => new RegExp(r"(?|(abc)|(xyz))"), 3949);
-  assertThrows(() => new RegExp(r"(x)(?|(abc)|(xyz))(x)"), 3950);
-  assertNull(res[1330].firstMatch("xabcx"), 3951);
-  assertNull(res[1330].firstMatch("xxyzx "), 3952);
-  assertThrows(() => new RegExp(r"(x)(?|(abc)(pqr)|(xyz))(x)"), 3953);
-  assertNull(res[1330].firstMatch("xabcpqrx"), 3954);
-  assertNull(res[1330].firstMatch("xxyzx "), 3955);
-  assertNull(res[1330].firstMatch("abcabc"), 3956);
-  assertNull(res[1330].firstMatch("xyzabc "), 3957);
-  assertNull(res[1330].firstMatch("** Failers "), 3958);
-  assertNull(res[1330].firstMatch("xyzxyz "), 3959);
-  assertNull(res[1331].firstMatch("X X\n"), 3960);
-  assertNull(res[1331].firstMatch("X\x09X\x0b"), 3961);
-  assertNull(res[1331].firstMatch("** Failers"), 3962);
-  assertNull(res[1331].firstMatch("\xa0 X\n   "), 3963);
-  assertNull(res[1332].firstMatch("\x09 \xa0X\n\x0b\x0c\x0d\n"), 3964);
-  assertNull(res[1332].firstMatch("\x09 \xa0\n\x0b\x0c\x0d\n"), 3965);
-  assertNull(res[1332].firstMatch("\x09 \xa0\n\x0b\x0c"), 3966);
-  assertNull(res[1332].firstMatch("** Failers "), 3967);
-  assertNull(res[1332].firstMatch("\x09 \xa0\n\x0b"), 3968);
-  assertNull(res[1332].firstMatch(" "), 3969);
-  assertNull(res[1333].firstMatch("XY  ABCDE"), 3970);
-  assertNull(res[1333].firstMatch("XY  PQR ST "), 3971);
-  assertNull(res[1334].firstMatch("XY  AB    PQRS"), 3972);
-  assertNull(res[1335].firstMatch(">XNNNYZ"), 3973);
-  assertNull(res[1335].firstMatch(">  X NYQZ"), 3974);
-  assertNull(res[1335].firstMatch("** Failers"), 3975);
-  assertNull(res[1335].firstMatch(">XYZ   "), 3976);
-  assertNull(res[1335].firstMatch(">  X NY Z"), 3977);
-  assertNull(res[1336].firstMatch(">XY\nZ\nA\x0bNN\x0c"), 3978);
-  assertNull(
-      res[1336].firstMatch(">\n\x0dX\nY\n\x0bZZZ\nAAA\x0bNNN\x0c"), 3979);
-  assertNull(res[1337].firstMatch("\x0d\nA"), 3980);
-  assertToStringEquals("\nA", res[1338].firstMatch("\x0d\nA "), 3981);
-  assertToStringEquals("\nA", res[1339].firstMatch("\x0d\nA "), 3982);
-  assertToStringEquals("\nA,\n", res[1340].firstMatch("\x0d\nA "), 3983);
-  assertNull(res[1341].firstMatch("a\x0db"), 3984);
-  assertNull(res[1341].firstMatch("a\nb"), 3985);
-  assertNull(res[1341].firstMatch("a\x0d\nb"), 3986);
-  assertNull(res[1341].firstMatch("** Failers"), 3987);
-  assertNull(res[1341].firstMatch("a\x85b"), 3988);
-  assertNull(res[1341].firstMatch("a\x0bb     "), 3989);
-  assertNull(res[1342].firstMatch("a\x0db"), 3990);
-  assertNull(res[1342].firstMatch("a\nb"), 3991);
-  assertNull(res[1342].firstMatch("a\x0d\nb"), 3992);
-  assertNull(res[1342].firstMatch("a\x85b"), 3993);
-  assertNull(res[1342].firstMatch("a\x0bb     "), 3994);
-  assertNull(res[1342].firstMatch("** Failers "), 3995);
-  assertNull(res[1342].firstMatch("a\x85b<bsr_anycrlf>"), 3996);
-  assertNull(res[1342].firstMatch("a\x0bb<bsr_anycrlf>"), 3997);
-  assertNull(res[1343].firstMatch("a\x0db"), 3998);
-  assertNull(res[1343].firstMatch("a\nb"), 3999);
-  assertNull(res[1343].firstMatch("a\x0d\nb"), 4000);
-  assertNull(res[1343].firstMatch("** Failers"), 4001);
-  assertNull(res[1343].firstMatch("a\x85b"), 4002);
-  assertNull(res[1343].firstMatch("a\x0bb     "), 4003);
-  assertNull(res[1344].firstMatch("a\x0db"), 4004);
-  assertNull(res[1344].firstMatch("a\nb"), 4005);
-  assertNull(res[1344].firstMatch("a\x0d\nb"), 4006);
-  assertNull(res[1344].firstMatch("a\x85b"), 4007);
-  assertNull(res[1344].firstMatch("a\x0bb     "), 4008);
-  assertNull(res[1344].firstMatch("** Failers "), 4009);
-  assertNull(res[1344].firstMatch("a\x85b<bsr_anycrlf>"), 4010);
-  assertNull(res[1344].firstMatch("a\x0bb<bsr_anycrlf>"), 4011);
-  assertNull(res[1345].firstMatch("a\x0d\n\nb"), 4012);
-  assertNull(res[1345].firstMatch("a\n\x0d\x0db"), 4013);
-  assertNull(res[1345].firstMatch("a\x0d\n\x0d\n\x0d\n\x0d\nb"), 4014);
-  assertNull(res[1345].firstMatch("** Failers"), 4015);
-  assertNull(res[1345].firstMatch("a\x8585b"), 4016);
-  assertNull(res[1345].firstMatch("a\x0b\x00bb     "), 4017);
-  assertNull(res[1346].firstMatch("a\x0d\x0db"), 4018);
-  assertNull(res[1346].firstMatch("a\n\n\nb"), 4019);
-  assertNull(res[1346].firstMatch("a\x0d\n\n\x0d\x0db"), 4020);
-  assertNull(res[1346].firstMatch("a\x8585b"), 4021);
-  assertNull(res[1346].firstMatch("a\x0b\x00bb     "), 4022);
-  assertNull(res[1346].firstMatch("** Failers "), 4023);
-  assertNull(res[1346].firstMatch("a\x0d\x0d\x0d\x0d\x0db "), 4024);
-  assertNull(res[1346].firstMatch("a\x8585b<bsr_anycrlf>"), 4025);
-  assertNull(res[1346].firstMatch("a\x0b\x00bb<bsr_anycrlf>"), 4026);
-  assertToStringEquals("abc", res[1347].firstMatch("abc "), 4027);
-  assertNull(res[1348].firstMatch("** Failers"), 4028);
-  assertNull(res[1348].firstMatch("ab"), 4029);
-  assertNull(res[1349].firstMatch("** Failers"), 4030);
-  assertNull(res[1349].firstMatch("ab "), 4031);
-  assertNull(res[1349].firstMatch("** Failers"), 4032);
-  assertNull(res[1349].firstMatch("ab "), 4033);
-  assertToStringEquals("aXb", res[1350].firstMatch("aXb"), 4034);
-  assertToStringEquals("a\nb", res[1350].firstMatch("a\nb "), 4035);
-  assertNull(res[1350].firstMatch("** Failers"), 4036);
-  assertNull(res[1350].firstMatch("ab  "), 4037);
-  assertToStringEquals("aXb", res[1351].firstMatch("aXb"), 4038);
-  assertToStringEquals("a\nX\nXb", res[1351].firstMatch("a\nX\nXb "), 4039);
-  assertNull(res[1351].firstMatch("** Failers"), 4040);
-  assertNull(res[1351].firstMatch("ab  "), 4041);
-  assertNull(res[1352].firstMatch("ab"), 4042);
-  assertNull(res[1352].firstMatch("ax{100}b  "), 4043);
-  assertNull(res[1352].firstMatch("ax{100}x{100}b  "), 4044);
-  assertNull(res[1352].firstMatch("ax{100}b  "), 4045);
-  assertNull(res[1352].firstMatch("ax{100}x{100}b  "), 4046);
-  assertNull(res[1352].firstMatch("*** Failers "), 4047);
-  assertNull(res[1352].firstMatch("ab"), 4048);
-  assertNull(res[1352].firstMatch(" "), 4049);
-  assertToStringEquals("X", res[1353].firstMatch("Xoanon"), 4050);
-  assertToStringEquals("X", res[1353].firstMatch("+Xoanon"), 4051);
-  assertToStringEquals("X", res[1353].firstMatch("x{300}Xoanon "), 4052);
-  assertNull(res[1353].firstMatch("*** Failers "), 4053);
-  assertNull(res[1353].firstMatch("YXoanon  "), 4054);
-  assertToStringEquals("X", res[1354].firstMatch("YXoanon"), 4055);
-  assertNull(res[1354].firstMatch("*** Failers"), 4056);
-  assertNull(res[1354].firstMatch("Xoanon"), 4057);
-  assertNull(res[1354].firstMatch("+Xoanon    "), 4058);
-  assertNull(res[1354].firstMatch("x{300}Xoanon "), 4059);
-  assertToStringEquals("X", res[1355].firstMatch("X+oanon"), 4060);
-  assertNull(res[1355].firstMatch("ZXx{300}oanon "), 4061);
-  assertToStringEquals("X", res[1355].firstMatch("FAX "), 4062);
-  assertNull(res[1355].firstMatch("*** Failers "), 4063);
-  assertNull(res[1355].firstMatch("Xoanon  "), 4064);
-  assertToStringEquals("X", res[1356].firstMatch("Xoanon  "), 4065);
-  assertNull(res[1356].firstMatch("*** Failers"), 4066);
-  assertNull(res[1356].firstMatch("X+oanon"), 4067);
-  assertToStringEquals("X", res[1356].firstMatch("ZXx{300}oanon "), 4068);
-  assertNull(res[1356].firstMatch("FAX "), 4069);
-  assertToStringEquals("b", res[1357].firstMatch("abcd"), 4070);
-  assertToStringEquals("x", res[1357].firstMatch("ax{100}   "), 4071);
-  assertToStringEquals("b", res[1357].firstMatch("ab99"), 4072);
-  assertToStringEquals("x", res[1357].firstMatch("x{123}x{123}45"), 4073);
-  assertToStringEquals(
-      "x", res[1357].firstMatch("x{400}x{401}x{402}6  "), 4074);
-  assertToStringEquals("*", res[1357].firstMatch("*** Failers"), 4075);
-  assertToStringEquals("d", res[1357].firstMatch("d99"), 4076);
-  assertToStringEquals("x", res[1357].firstMatch("x{123}x{122}4   "), 4077);
-  assertToStringEquals("x", res[1357].firstMatch("x{400}x{403}6  "), 4078);
-  assertToStringEquals(
-      "x", res[1357].firstMatch("x{400}x{401}x{402}x{402}6  "), 4079);
-  assertNull(res[1358].firstMatch("\ufffd]"), 4080);
-  assertNull(res[1358].firstMatch("\ufffd"), 4081);
-  assertNull(res[1358].firstMatch("\ufffd\ufffd\ufffd"), 4082);
-  assertNull(res[1358].firstMatch("\ufffd\ufffd\ufffd?"), 4083);
-  assertToStringEquals("acb", res[1359].firstMatch("acb"), 4084);
-  assertToStringEquals("ab", res[1359].firstMatch("ab"), 4085);
-  assertNull(res[1359].firstMatch("ax{100}b "), 4086);
-  assertNull(res[1359].firstMatch("*** Failers"), 4087);
-  assertNull(res[1359].firstMatch("a\nb  "), 4088);
-  assertNull(res[1360].firstMatch("ax{4000}xyb "), 4089);
-  assertNull(res[1360].firstMatch("ax{4000}yb "), 4090);
-  assertNull(res[1360].firstMatch("ax{4000}x{100}yb "), 4091);
-  assertNull(res[1360].firstMatch("*** Failers"), 4092);
-  assertNull(res[1360].firstMatch("ax{4000}b "), 4093);
-  assertNull(res[1360].firstMatch("ac\ncb "), 4094);
-  assertToStringEquals("a\xc0,,\xc0", res[1361].firstMatch("a\xc0\x88b"), 4095);
-  assertToStringEquals("ax,,x", res[1362].firstMatch("ax{100}b"), 4096);
-  assertToStringEquals(
-      "a\xc0\x88b,\xc0\x88,b", res[1363].firstMatch("a\xc0\x88b"), 4097);
-  assertToStringEquals(
-      "ax{100}b,x{100},b", res[1364].firstMatch("ax{100}b"), 4098);
-  assertToStringEquals(
-      "a\xc0\x92,\xc0,\x92", res[1365].firstMatch("a\xc0\x92bcd"), 4099);
-  assertToStringEquals("ax{,x,{", res[1366].firstMatch("ax{240}bcd"), 4100);
-  assertToStringEquals(
-      "a\xc0\x92,\xc0,\x92", res[1367].firstMatch("a\xc0\x92bcd"), 4101);
-  assertToStringEquals("ax{,x,{", res[1368].firstMatch("ax{240}bcd"), 4102);
-  assertToStringEquals(
-      "a\xc0,,\xc0", res[1369].firstMatch("a\xc0\x92bcd"), 4103);
-  assertToStringEquals("ax,,x", res[1370].firstMatch("ax{240}bcd"), 4104);
-  assertNull(res[1371].firstMatch("ax{1234}xyb "), 4105);
-  assertNull(res[1371].firstMatch("ax{1234}x{4321}yb "), 4106);
-  assertNull(res[1371].firstMatch("ax{1234}x{4321}x{3412}b "), 4107);
-  assertNull(res[1371].firstMatch("*** Failers"), 4108);
-  assertNull(res[1371].firstMatch("ax{1234}b "), 4109);
-  assertNull(res[1371].firstMatch("ac\ncb "), 4110);
-  assertToStringEquals(
-      "ax{1234}xyb,x{1234}xy", res[1372].firstMatch("ax{1234}xyb "), 4111);
-  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
-      res[1372].firstMatch("ax{1234}x{4321}yb "), 4112);
-  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
-      res[1372].firstMatch("ax{1234}x{4321}x{3412}b "), 4113);
-  assertToStringEquals("axxxxbcdefghijb,xxxxbcdefghij",
-      res[1372].firstMatch("axxxxbcdefghijb "), 4114);
-  assertToStringEquals(
-      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
-      res[1372].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
-      4115);
-  assertNull(res[1372].firstMatch("*** Failers"), 4116);
-  assertToStringEquals(
-      "ax{1234}b,x{1234}", res[1372].firstMatch("ax{1234}b "), 4117);
-  assertToStringEquals(
-      "ax{1234}xyb,x{1234}xy", res[1373].firstMatch("ax{1234}xyb "), 4118);
-  assertToStringEquals("ax{1234}x{4321}yb,x{1234}x{4321}y",
-      res[1373].firstMatch("ax{1234}x{4321}yb "), 4119);
-  assertToStringEquals("ax{1234}x{4321}x{3412}b,x{1234}x{4321}x{3412}",
-      res[1373].firstMatch("ax{1234}x{4321}x{3412}b "), 4120);
-  assertToStringEquals(
-      "axxxxb,xxxx", res[1373].firstMatch("axxxxbcdefghijb "), 4121);
-  assertToStringEquals(
-      "ax{1234}x{4321}x{3412}x{3421}b,x{1234}x{4321}x{3412}x{3421}",
-      res[1373].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "),
-      4122);
-  assertNull(res[1373].firstMatch("*** Failers"), 4123);
-  assertToStringEquals(
-      "ax{1234}b,x{1234}", res[1373].firstMatch("ax{1234}b "), 4124);
-  assertNull(res[1374].firstMatch("ax{1234}xyb "), 4125);
-  assertNull(res[1374].firstMatch("ax{1234}x{4321}yb "), 4126);
-  assertNull(res[1374].firstMatch("ax{1234}x{4321}x{3412}b "), 4127);
-  assertToStringEquals(
-      "axxxxb,xxxx", res[1374].firstMatch("axxxxbcdefghijb "), 4128);
-  assertNull(res[1374].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 4129);
-  assertToStringEquals(
-      "axbxxb,xbxx", res[1374].firstMatch("axbxxbcdefghijb "), 4130);
-  assertToStringEquals(
-      "axxxxxb,xxxxx", res[1374].firstMatch("axxxxxbcdefghijb "), 4131);
-  assertNull(res[1374].firstMatch("*** Failers"), 4132);
-  assertNull(res[1374].firstMatch("ax{1234}b "), 4133);
-  assertNull(res[1374].firstMatch("axxxxxxbcdefghijb "), 4134);
-  assertNull(res[1375].firstMatch("ax{1234}xyb "), 4135);
-  assertNull(res[1375].firstMatch("ax{1234}x{4321}yb "), 4136);
-  assertNull(res[1375].firstMatch("ax{1234}x{4321}x{3412}b "), 4137);
-  assertToStringEquals(
-      "axxxxb,xxxx", res[1375].firstMatch("axxxxbcdefghijb "), 4138);
-  assertNull(res[1375].firstMatch("ax{1234}x{4321}x{3412}x{3421}b "), 4139);
-  assertToStringEquals(
-      "axbxxb,xbxx", res[1375].firstMatch("axbxxbcdefghijb "), 4140);
-  assertToStringEquals(
-      "axxxxxb,xxxxx", res[1375].firstMatch("axxxxxbcdefghijb "), 4141);
-  assertNull(res[1375].firstMatch("*** Failers"), 4142);
-  assertNull(res[1375].firstMatch("ax{1234}b "), 4143);
-  assertNull(res[1375].firstMatch("axxxxxxbcdefghijb "), 4144);
-  assertNull(res[1375].firstMatch("*** Failers"), 4145);
-  assertNull(res[1375].firstMatch("x{100}"), 4146);
-  assertNull(res[1375].firstMatch("aXbcd"), 4147);
-  assertNull(res[1375].firstMatch("ax{100}bcd"), 4148);
-  assertNull(res[1375].firstMatch("ax{100000}bcd"), 4149);
-  assertNull(res[1375].firstMatch("x{100}x{100}x{100}b"), 4150);
-  assertNull(res[1375].firstMatch("*** Failers "), 4151);
-  assertNull(res[1375].firstMatch("x{100}x{100}b"), 4152);
-  assertNull(res[1375].firstMatch("x{ab} "), 4153);
-  assertNull(res[1375].firstMatch("\xc2\xab"), 4154);
-  assertNull(res[1375].firstMatch("*** Failers "), 4155);
-  assertNull(res[1375].firstMatch("\x00{ab}"), 4156);
-  assertNull(res[1375].firstMatch("WXYZ"), 4157);
-  assertNull(res[1375].firstMatch("x{256}XYZ "), 4158);
-  assertNull(res[1375].firstMatch("*** Failers"), 4159);
-  assertNull(res[1375].firstMatch("XYZ "), 4160);
-  assertToStringEquals("bcd", res[1376].firstMatch("bcd"), 4161);
-  assertToStringEquals("x{", res[1377].firstMatch("x{100}bc"), 4163);
-  assertToStringEquals("x{100}bcA", res[1378].firstMatch("x{100}bcAa"), 4164);
-  assertToStringEquals("x{", res[1379].firstMatch("x{100}bca"), 4165);
-  assertToStringEquals("bcd", res[1380].firstMatch("bcd"), 4166);
-  assertToStringEquals("x{", res[1381].firstMatch("x{100}bc"), 4168);
-  assertToStringEquals("x{100}bc", res[1382].firstMatch("x{100}bcAa"), 4169);
-  assertToStringEquals("x{", res[1383].firstMatch("x{100}bca"), 4170);
-  assertNull(res[1383].firstMatch("abcd"), 4171);
-  assertNull(res[1383].firstMatch("abcd"), 4172);
-  assertToStringEquals("x{", res[1383].firstMatch("x{100}x{100} "), 4173);
-  assertToStringEquals("x{", res[1383].firstMatch("x{100}x{100} "), 4174);
-  assertToStringEquals(
-      "x{", res[1383].firstMatch("x{100}x{100}x{100}x{100} "), 4175);
-  assertNull(res[1383].firstMatch("abce"), 4176);
-  assertToStringEquals(
-      "x{", res[1383].firstMatch("x{100}x{100}x{100}x{100} "), 4177);
-  assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100} "), 4178);
-  assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100} "), 4179);
-  assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}x{100} "), 4180);
-  assertNull(res[1383].firstMatch("abcdx{100}x{100}x{100}XX"), 4181);
-  assertNull(
-      res[1383].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
-      4182);
-  assertNull(
-      res[1383].firstMatch("abcdx{100}x{100}x{100}x{100}x{100}x{100}x{100}XX"),
-      4183);
-  assertToStringEquals(
-      "Xy", res[1383].firstMatch("Xyyyax{100}x{100}bXzzz"), 4184);
-  assertToStringEquals("X", res[1386].firstMatch("1X2"), 4185);
-  assertToStringEquals("x", res[1386].firstMatch("1x{100}2 "), 4186);
-  assertToStringEquals(">X", res[1387].firstMatch("> >X Y"), 4187);
-  assertToStringEquals(">x", res[1387].firstMatch("> >x{100} Y"), 4188);
-  assertToStringEquals("1", res[1388].firstMatch("x{100}3"), 4189);
-  assertToStringEquals(" ", res[1389].firstMatch("x{100} X"), 4190);
-  assertToStringEquals("abcd", res[1390].firstMatch("12abcd34"), 4191);
-  assertToStringEquals(
-      "*** Failers", res[1390].firstMatch("*** Failers"), 4192);
-  assertToStringEquals("  ", res[1390].firstMatch("1234  "), 4193);
-  assertToStringEquals("abc", res[1391].firstMatch("12abcd34"), 4194);
-  assertToStringEquals("ab", res[1391].firstMatch("12ab34"), 4195);
-  assertToStringEquals("***", res[1391].firstMatch("*** Failers  "), 4196);
-  assertNull(res[1391].firstMatch("1234"), 4197);
-  assertToStringEquals("  ", res[1391].firstMatch("12a34  "), 4198);
-  assertToStringEquals("ab", res[1392].firstMatch("12abcd34"), 4199);
-  assertToStringEquals("ab", res[1392].firstMatch("12ab34"), 4200);
-  assertToStringEquals("**", res[1392].firstMatch("*** Failers  "), 4201);
-  assertNull(res[1392].firstMatch("1234"), 4202);
-  assertToStringEquals("  ", res[1392].firstMatch("12a34  "), 4203);
-  assertToStringEquals("12", res[1393].firstMatch("12abcd34"), 4204);
-  assertNull(res[1393].firstMatch("*** Failers"), 4205);
-  assertToStringEquals("12", res[1394].firstMatch("12abcd34"), 4206);
-  assertToStringEquals("123", res[1394].firstMatch("1234abcd"), 4207);
-  assertNull(res[1394].firstMatch("*** Failers  "), 4208);
-  assertNull(res[1394].firstMatch("1.4 "), 4209);
-  assertToStringEquals("12", res[1395].firstMatch("12abcd34"), 4210);
-  assertToStringEquals("12", res[1395].firstMatch("1234abcd"), 4211);
-  assertNull(res[1395].firstMatch("*** Failers  "), 4212);
-  assertNull(res[1395].firstMatch("1.4 "), 4213);
-  assertToStringEquals("12abcd34", res[1396].firstMatch("12abcd34"), 4214);
-  assertToStringEquals("***", res[1396].firstMatch("*** Failers"), 4215);
-  assertNull(res[1396].firstMatch("     "), 4216);
-  assertToStringEquals("12a", res[1397].firstMatch("12abcd34"), 4217);
-  assertToStringEquals("123", res[1397].firstMatch("1234abcd"), 4218);
-  assertToStringEquals("***", res[1397].firstMatch("*** Failers"), 4219);
-  assertNull(res[1397].firstMatch("       "), 4220);
-  assertToStringEquals("12", res[1398].firstMatch("12abcd34"), 4221);
-  assertToStringEquals("12", res[1398].firstMatch("1234abcd"), 4222);
-  assertToStringEquals("**", res[1398].firstMatch("*** Failers"), 4223);
-  assertNull(res[1398].firstMatch("       "), 4224);
-  assertToStringEquals(">      <", res[1399].firstMatch("12>      <34"), 4225);
-  assertNull(res[1399].firstMatch("*** Failers"), 4226);
-  assertToStringEquals(">  <", res[1400].firstMatch("ab>  <cd"), 4227);
-  assertToStringEquals(">   <", res[1400].firstMatch("ab>   <ce"), 4228);
-  assertNull(res[1400].firstMatch("*** Failers"), 4229);
-  assertNull(res[1400].firstMatch("ab>    <cd "), 4230);
-  assertToStringEquals(">  <", res[1401].firstMatch("ab>  <cd"), 4231);
-  assertToStringEquals(">   <", res[1401].firstMatch("ab>   <ce"), 4232);
-  assertNull(res[1401].firstMatch("*** Failers"), 4233);
-  assertNull(res[1401].firstMatch("ab>    <cd "), 4234);
-  assertToStringEquals("12", res[1402].firstMatch("12      34"), 4235);
-  assertToStringEquals("Failers", res[1402].firstMatch("*** Failers"), 4236);
-  assertNull(res[1402].firstMatch("+++=*! "), 4237);
-  assertToStringEquals("ab", res[1403].firstMatch("ab  cd"), 4238);
-  assertToStringEquals("abc", res[1403].firstMatch("abcd ce"), 4239);
-  assertToStringEquals("Fai", res[1403].firstMatch("*** Failers"), 4240);
-  assertNull(res[1403].firstMatch("a.b.c"), 4241);
-  assertToStringEquals("ab", res[1404].firstMatch("ab  cd"), 4242);
-  assertToStringEquals("ab", res[1404].firstMatch("abcd ce"), 4243);
-  assertToStringEquals("Fa", res[1404].firstMatch("*** Failers"), 4244);
-  assertNull(res[1404].firstMatch("a.b.c"), 4245);
-  assertToStringEquals("====", res[1405].firstMatch("12====34"), 4246);
-  assertToStringEquals("*** ", res[1405].firstMatch("*** Failers"), 4247);
-  assertToStringEquals(" ", res[1405].firstMatch("abcd "), 4248);
-  assertToStringEquals("===", res[1406].firstMatch("ab====cd"), 4249);
-  assertToStringEquals("==", res[1406].firstMatch("ab==cd"), 4250);
-  assertToStringEquals("***", res[1406].firstMatch("*** Failers"), 4251);
-  assertNull(res[1406].firstMatch("a.b.c"), 4252);
-  assertToStringEquals("==", res[1407].firstMatch("ab====cd"), 4253);
-  assertToStringEquals("==", res[1407].firstMatch("ab==cd"), 4254);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4255);
-  assertNull(res[1407].firstMatch("a.b.c"), 4256);
-  assertNull(res[1407].firstMatch("x{100}"), 4257);
-  assertNull(res[1407].firstMatch("Zx{100}"), 4258);
-  assertNull(res[1407].firstMatch("x{100}Z"), 4259);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers "), 4260);
-  assertNull(res[1407].firstMatch("Zx{100}"), 4261);
-  assertNull(res[1407].firstMatch("x{100}"), 4262);
-  assertNull(res[1407].firstMatch("x{100}Z"), 4263);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers "), 4264);
-  assertNull(res[1407].firstMatch("abcx{200}X"), 4265);
-  assertNull(res[1407].firstMatch("abcx{100}X "), 4266);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4267);
-  assertToStringEquals("  ", res[1407].firstMatch("X  "), 4268);
-  assertNull(res[1407].firstMatch("abcx{200}X"), 4269);
-  assertNull(res[1407].firstMatch("abcx{100}X "), 4270);
-  assertNull(res[1407].firstMatch("abQX "), 4271);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4272);
-  assertToStringEquals("  ", res[1407].firstMatch("X  "), 4273);
-  assertNull(res[1407].firstMatch("abcx{100}x{200}x{100}X"), 4274);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4275);
-  assertNull(res[1407].firstMatch("abcx{200}X"), 4276);
-  assertToStringEquals("  ", res[1407].firstMatch("X  "), 4277);
-  assertNull(res[1407].firstMatch("AX"), 4278);
-  assertNull(res[1407].firstMatch("x{150}X"), 4279);
-  assertNull(res[1407].firstMatch("x{500}X "), 4280);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4281);
-  assertNull(res[1407].firstMatch("x{100}X"), 4282);
-  assertToStringEquals("  ", res[1407].firstMatch("x{200}X   "), 4283);
-  assertNull(res[1407].firstMatch("AX"), 4284);
-  assertNull(res[1407].firstMatch("x{150}X"), 4285);
-  assertNull(res[1407].firstMatch("x{500}X "), 4286);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4287);
-  assertNull(res[1407].firstMatch("x{100}X"), 4288);
-  assertToStringEquals("  ", res[1407].firstMatch("x{200}X   "), 4289);
-  assertNull(res[1407].firstMatch("QX "), 4290);
-  assertNull(res[1407].firstMatch("AX"), 4291);
-  assertNull(res[1407].firstMatch("x{500}X "), 4292);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4293);
-  assertNull(res[1407].firstMatch("x{100}X"), 4294);
-  assertNull(res[1407].firstMatch("x{150}X"), 4295);
-  assertToStringEquals("  ", res[1407].firstMatch("x{200}X   "), 4296);
-  assertNull(res[1407].firstMatch("z"), 4297);
-  assertNull(res[1407].firstMatch("Z "), 4298);
-  assertNull(res[1407].firstMatch("x{100}"), 4299);
-  assertToStringEquals("**", res[1407].firstMatch("*** Failers"), 4300);
-  assertNull(res[1407].firstMatch("x{102}"), 4301);
-  assertToStringEquals("  ", res[1407].firstMatch("y    "), 4302);
-  assertToStringEquals("\xff", res[1408].firstMatch(">\xff<"), 4303);
-  assertNull(res[1409].firstMatch(">x{ff}<"), 4304);
-  assertToStringEquals("X", res[1410].firstMatch("XYZ"), 4305);
-  assertToStringEquals("X", res[1411].firstMatch("XYZ"), 4306);
-  assertToStringEquals("x", res[1411].firstMatch("x{123} "), 4307);
-  assertToStringEquals(",", res[1416].firstMatch("catac"), 4308);
-  assertToStringEquals(",", res[1416].firstMatch("ax{256}a "), 4309);
-  assertToStringEquals(",", res[1416].firstMatch("x{85}"), 4310);
-  assertToStringEquals(
-      "abc1",
-      res[1417].firstMatch(
-          "abc1 \nabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\nabc6 x{0085}abc7 x{2028}abc8 x{2029}abc9 JUNK"),
-      4311);
-  assertToStringEquals(
-      "abc1",
-      res[1418].firstMatch(
-          "abc1\n abc2\x0b abc3\x0c abc4\x0d abc5\x0d\n abc6x{0085} abc7x{2028} abc8x{2029} abc9"),
-      4312);
-  assertNull(res[1419].firstMatch("a\nb"), 4313);
-  assertNull(res[1419].firstMatch("a\x0db"), 4314);
-  assertNull(res[1419].firstMatch("a\x0d\nb"), 4315);
-  assertNull(res[1419].firstMatch("a\x0bb"), 4316);
-  assertNull(res[1419].firstMatch("a\x0cb"), 4317);
-  assertNull(res[1419].firstMatch("ax{85}b   "), 4318);
-  assertNull(res[1419].firstMatch("ax{2028}b "), 4319);
-  assertNull(res[1419].firstMatch("ax{2029}b "), 4320);
-  assertNull(res[1419].firstMatch("** Failers"), 4321);
-  assertNull(res[1419].firstMatch("a\n\x0db    "), 4322);
-  assertToStringEquals("ab", res[1420].firstMatch("ab"), 4323);
-  assertNull(res[1420].firstMatch("a\nb"), 4324);
-  assertNull(res[1420].firstMatch("a\x0db"), 4325);
-  assertNull(res[1420].firstMatch("a\x0d\nb"), 4326);
-  assertNull(res[1420].firstMatch("a\x0bb"), 4327);
-  assertNull(res[1420].firstMatch("a\x0cx{2028}x{2029}b"), 4328);
-  assertNull(res[1420].firstMatch("ax{85}b   "), 4329);
-  assertNull(res[1420].firstMatch("a\n\x0db    "), 4330);
-  assertNull(res[1420].firstMatch("a\n\x0dx{85}\x0cb "), 4331);
-  assertNull(res[1421].firstMatch("a\nb"), 4332);
-  assertNull(res[1421].firstMatch("a\x0db"), 4333);
-  assertNull(res[1421].firstMatch("a\x0d\nb"), 4334);
-  assertNull(res[1421].firstMatch("a\x0bb"), 4335);
-  assertNull(res[1421].firstMatch("a\x0cx{2028}x{2029}b"), 4336);
-  assertNull(res[1421].firstMatch("ax{85}b   "), 4337);
-  assertNull(res[1421].firstMatch("a\n\x0db    "), 4338);
-  assertNull(res[1421].firstMatch("a\n\x0dx{85}\x0cb "), 4339);
-  assertNull(res[1421].firstMatch("** Failers"), 4340);
-  assertNull(res[1421].firstMatch("ab  "), 4341);
-  assertNull(res[1422].firstMatch("a\nb"), 4342);
-  assertNull(res[1422].firstMatch("a\n\x0db"), 4343);
-  assertNull(res[1422].firstMatch("a\n\x0dx{85}b"), 4344);
-  assertNull(res[1422].firstMatch("a\x0d\n\x0d\nb "), 4345);
-  assertNull(res[1422].firstMatch("a\x0d\n\x0d\n\x0d\nb "), 4346);
-  assertNull(res[1422].firstMatch("a\n\x0d\n\x0db"), 4347);
-  assertNull(res[1422].firstMatch("a\n\n\x0d\nb "), 4348);
-  assertNull(res[1422].firstMatch("** Failers"), 4349);
-  assertNull(res[1422].firstMatch("a\n\n\n\x0db"), 4350);
-  assertNull(res[1422].firstMatch("a\x0d"), 4351);
-  assertNull(res[1423].firstMatch("\x09 x{a0}X\n\x0b\x0c\x0d\n"), 4352);
-  assertNull(res[1424].firstMatch(" x{a0}X\n\x0b\x0c\x0d\n"), 4353);
-  assertNull(res[1425].firstMatch(">\x09 x{a0}X\n\n\n<"), 4354);
-  assertNull(res[1426].firstMatch(">\x09 x{a0}X\n\n\n<"), 4355);
-  assertNull(res[1427].firstMatch("X X\n"), 4356);
-  assertNull(res[1427].firstMatch("X\x09X\x0b"), 4357);
-  assertNull(res[1427].firstMatch("** Failers"), 4358);
-  assertNull(res[1427].firstMatch("x{a0} X\n   "), 4359);
-  assertNull(res[1428].firstMatch("\x09 x{a0}X\n\x0b\x0c\x0d\n"), 4360);
-  assertNull(res[1428].firstMatch("\x09 x{a0}\n\x0b\x0c\x0d\n"), 4361);
-  assertNull(res[1428].firstMatch("\x09 x{a0}\n\x0b\x0c"), 4362);
-  assertNull(res[1428].firstMatch("** Failers "), 4363);
-  assertNull(res[1428].firstMatch("\x09 x{a0}\n\x0b"), 4364);
-  assertNull(res[1428].firstMatch(" "), 4365);
-  assertNull(res[1429].firstMatch("x{3001}x{3000}x{2030}x{2028}"), 4366);
-  assertNull(res[1429].firstMatch("Xx{180e}Xx{85}"), 4367);
-  assertNull(res[1429].firstMatch("** Failers"), 4368);
-  assertNull(res[1429].firstMatch("x{2009} X\n   "), 4369);
-  assertNull(
-      res[1430].firstMatch("x{1680}x{180e}x{2007}Xx{2028}x{2029}\x0c\x0d\n"),
-      4370);
-  assertNull(
-      res[1430].firstMatch("\x09x{205f}x{a0}\nx{2029}\x0cx{2028}\n"), 4371);
-  assertNull(res[1430].firstMatch("\x09 x{202f}\n\x0b\x0c"), 4372);
-  assertNull(res[1430].firstMatch("** Failers "), 4373);
-  assertNull(res[1430].firstMatch("\x09x{200a}x{a0}x{2028}\x0b"), 4374);
-  assertNull(res[1430].firstMatch(" "), 4375);
-  assertNull(res[1431].firstMatch("a\x0db"), 4376);
-  assertNull(res[1431].firstMatch("a\nb"), 4377);
-  assertNull(res[1431].firstMatch("a\x0d\nb"), 4378);
-  assertNull(res[1431].firstMatch("** Failers"), 4379);
-  assertNull(res[1431].firstMatch("ax{85}b"), 4380);
-  assertNull(res[1431].firstMatch("a\x0bb     "), 4381);
-  assertNull(res[1432].firstMatch("a\x0db"), 4382);
-  assertNull(res[1432].firstMatch("a\nb"), 4383);
-  assertNull(res[1432].firstMatch("a\x0d\nb"), 4384);
-  assertNull(res[1432].firstMatch("ax{85}b"), 4385);
-  assertNull(res[1432].firstMatch("a\x0bb     "), 4386);
-  assertNull(res[1432].firstMatch("** Failers "), 4387);
-  assertNull(res[1432].firstMatch("ax{85}b<bsr_anycrlf>"), 4388);
-  assertNull(res[1432].firstMatch("a\x0bb<bsr_anycrlf>"), 4389);
-  assertNull(res[1433].firstMatch("a\x0db"), 4390);
-  assertNull(res[1433].firstMatch("a\nb"), 4391);
-  assertNull(res[1433].firstMatch("a\x0d\nb"), 4392);
-  assertNull(res[1433].firstMatch("** Failers"), 4393);
-  assertNull(res[1433].firstMatch("ax{85}b"), 4394);
-  assertNull(res[1433].firstMatch("a\x0bb     "), 4395);
-  assertNull(res[1434].firstMatch("a\x0db"), 4396);
-  assertNull(res[1434].firstMatch("a\nb"), 4397);
-  assertNull(res[1434].firstMatch("a\x0d\nb"), 4398);
-  assertNull(res[1434].firstMatch("ax{85}b"), 4399);
-  assertNull(res[1434].firstMatch("a\x0bb     "), 4400);
-  assertNull(res[1434].firstMatch("** Failers "), 4401);
-  assertNull(res[1434].firstMatch("ax{85}b<bsr_anycrlf>"), 4402);
-  assertNull(res[1434].firstMatch("a\x0bb<bsr_anycrlf>"), 4403);
-  assertToStringEquals("X", res[1435].firstMatch("Ax{1ec5}ABCXYZ"), 4404);
-  assertNull(res[1437].firstMatch("AB"), 4405);
-  assertNull(res[1437].firstMatch("*** Failers"), 4406);
-  assertNull(res[1437].firstMatch("A0"), 4407);
-  assertNull(res[1437].firstMatch("00   "), 4408);
-  assertNull(res[1438].firstMatch("AB"), 4409);
-  assertNull(res[1438].firstMatch("Ax{300}BC "), 4410);
-  assertNull(res[1438].firstMatch("Ax{300}x{301}x{302}BC "), 4411);
-  assertNull(res[1438].firstMatch("*** Failers"), 4412);
-  assertNull(res[1438].firstMatch("x{300}  "), 4413);
-  assertNull(res[1439].firstMatch("ABC"), 4414);
-  assertNull(res[1439].firstMatch("Ax{300}Bx{300}x{301}C "), 4415);
-  assertNull(res[1439].firstMatch("Ax{300}x{301}x{302}BC "), 4416);
-  assertNull(res[1439].firstMatch("*** Failers"), 4417);
-  assertNull(res[1439].firstMatch("x{300}  "), 4418);
-  assertNull(res[1440].firstMatch("abcd"), 4419);
-  assertNull(res[1440].firstMatch("a "), 4420);
-  assertNull(res[1440].firstMatch("*** Failers "), 4421);
-  assertNull(res[1441].firstMatch("1234"), 4422);
-  assertNull(res[1441].firstMatch("= "), 4423);
-  assertNull(res[1441].firstMatch("*** Failers "), 4424);
-  assertNull(res[1441].firstMatch("abcd "), 4425);
-  assertNull(res[1442].firstMatch("abcdAx{300}x{301}x{302}"), 4426);
-  assertNull(res[1442].firstMatch("Ax{300}x{301}x{302}"), 4427);
-  assertNull(
-      res[1442].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}"), 4428);
-  assertNull(res[1442].firstMatch("a "), 4429);
-  assertNull(res[1442].firstMatch("*** Failers "), 4430);
-  assertNull(res[1442].firstMatch("x{300}x{301}x{302}"), 4431);
-  assertToStringEquals("abc", res[1443].firstMatch("abc"), 4432);
-  assertToStringEquals("abc", res[1443].firstMatch("Ax{300}abc"), 4433);
-  assertToStringEquals(
-      "abc",
-      res[1443].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
-      4434);
-  assertToStringEquals("abc", res[1443].firstMatch("x{300}abc  "), 4435);
-  assertNull(res[1443].firstMatch("*** Failers"), 4436);
-  assertToStringEquals("abc", res[1444].firstMatch("abc"), 4437);
-  assertNull(res[1444].firstMatch("Ax{300}abc"), 4438);
-  assertNull(res[1444].firstMatch("*** Failers"), 4439);
-  assertNull(
-      res[1444].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
-      4440);
-  assertNull(res[1444].firstMatch("x{300}abc  "), 4441);
-  assertToStringEquals("abc", res[1445].firstMatch("abc"), 4442);
-  assertToStringEquals("abc", res[1445].firstMatch("Ax{300}abc"), 4443);
-  assertToStringEquals(
-      "abc",
-      res[1445].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
-      4444);
-  assertToStringEquals("abc", res[1445].firstMatch("x{300}abc  "), 4445);
-  assertNull(res[1445].firstMatch("*** Failers"), 4446);
-  assertToStringEquals("abc", res[1446].firstMatch("abc"), 4447);
-  assertNull(res[1446].firstMatch("Ax{300}abc"), 4448);
-  assertNull(
-      res[1446].firstMatch("Ax{300}x{301}x{302}Ax{300}Ax{300}Ax{300}abcxyz"),
-      4449);
-  assertNull(res[1446].firstMatch("*** Failers"), 4450);
-  assertNull(res[1446].firstMatch("x{300}abc  "), 4451);
-  assertNull(res[1447].firstMatch("A=b"), 4452);
-  assertNull(res[1447].firstMatch("=c "), 4453);
-  assertNull(res[1447].firstMatch("*** Failers"), 4454);
-  assertNull(res[1447].firstMatch("1=2 "), 4455);
-  assertNull(res[1447].firstMatch("AAAA=b  "), 4456);
-  assertNull(res[1448].firstMatch("AAAA=b"), 4457);
-  assertNull(res[1448].firstMatch("=c "), 4458);
-  assertNull(res[1448].firstMatch("*** Failers"), 4459);
-  assertNull(res[1448].firstMatch("1=2  "), 4460);
-  assertNull(
-      res[1449].firstMatch("Ax{300}x{301}x{302}Ax{300}x{301}x{302}X"), 4461);
-  assertNull(
-      res[1449].firstMatch(
-          "Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X "),
-      4462);
-  assertNull(res[1449].firstMatch("*** Failers"), 4463);
-  assertNull(res[1449].firstMatch("X"), 4464);
-  assertNull(res[1449].firstMatch("Ax{300}x{301}x{302}X"), 4465);
-  assertNull(
-      res[1449].firstMatch(
-          "Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}Ax{300}x{301}x{302}X"),
-      4466);
-  assertNull(
-      res[1450].firstMatch("x{c0}x{30f}x{660}x{66c}x{f01}x{1680}<"), 4467);
-  assertNull(res[1450].firstMatch("\npx{300}9!\$ < "), 4468);
-  assertNull(res[1450].firstMatch("** Failers "), 4469);
-  assertNull(res[1450].firstMatch("apx{300}9!\$ < "), 4470);
-  assertNull(res[1451].firstMatch("X"), 4471);
-  assertNull(res[1451].firstMatch("** Failers "), 4472);
-  assertNull(res[1451].firstMatch(""), 4473);
-  assertNull(res[1452].firstMatch("9"), 4474);
-  assertNull(res[1452].firstMatch("** Failers "), 4475);
-  assertNull(res[1452].firstMatch("x{c0}"), 4476);
-  assertNull(res[1453].firstMatch("X"), 4477);
-  assertNull(res[1453].firstMatch("** Failers "), 4478);
-  assertNull(res[1453].firstMatch("x{30f}"), 4479);
-  assertNull(res[1454].firstMatch("X"), 4480);
-  assertNull(res[1454].firstMatch("** Failers "), 4481);
-  assertNull(res[1454].firstMatch("x{660}"), 4482);
-  assertNull(res[1455].firstMatch("X"), 4483);
-  assertNull(res[1455].firstMatch("** Failers "), 4484);
-  assertNull(res[1455].firstMatch("x{66c}"), 4485);
-  assertNull(res[1456].firstMatch("X"), 4486);
-  assertNull(res[1456].firstMatch("** Failers "), 4487);
-  assertNull(res[1456].firstMatch("x{f01}"), 4488);
-  assertNull(res[1457].firstMatch("X"), 4489);
-  assertNull(res[1457].firstMatch("** Failers "), 4490);
-  assertNull(res[1457].firstMatch("x{1680}"), 4491);
-  assertNull(res[1458].firstMatch("x{017}"), 4492);
-  assertNull(res[1458].firstMatch("x{09f} "), 4493);
-  assertNull(res[1458].firstMatch("** Failers"), 4494);
-  assertNull(res[1458].firstMatch("x{0600} "), 4495);
-  assertNull(res[1459].firstMatch("x{601}"), 4496);
-  assertNull(res[1459].firstMatch("** Failers"), 4497);
-  assertNull(res[1459].firstMatch("x{09f} "), 4498);
-  assertNull(res[1460].firstMatch("** Failers"), 4499);
-  assertNull(res[1460].firstMatch("x{09f} "), 4500);
-  assertNull(res[1461].firstMatch("x{f8ff}"), 4501);
-  assertNull(res[1461].firstMatch("** Failers"), 4502);
-  assertNull(res[1461].firstMatch("x{09f} "), 4503);
-  assertNull(res[1462].firstMatch("?x{dfff}"), 4504);
-  assertNull(res[1462].firstMatch("** Failers"), 4505);
-  assertNull(res[1462].firstMatch("x{09f} "), 4506);
-  assertNull(res[1463].firstMatch("a"), 4507);
-  assertNull(res[1463].firstMatch("** Failers "), 4508);
-  assertNull(res[1463].firstMatch("Z"), 4509);
-  assertNull(res[1463].firstMatch("x{e000}  "), 4510);
-  assertNull(res[1464].firstMatch("x{2b0}"), 4511);
-  assertNull(res[1464].firstMatch("** Failers"), 4512);
-  assertNull(res[1464].firstMatch("a "), 4513);
-  assertNull(res[1465].firstMatch("x{1bb}"), 4514);
-  assertNull(res[1465].firstMatch("** Failers"), 4515);
-  assertNull(res[1465].firstMatch("a "), 4516);
-  assertNull(res[1465].firstMatch("x{2b0}"), 4517);
-  assertNull(res[1466].firstMatch("x{1c5}"), 4518);
-  assertNull(res[1466].firstMatch("** Failers"), 4519);
-  assertNull(res[1466].firstMatch("a "), 4520);
-  assertNull(res[1466].firstMatch("x{2b0}"), 4521);
-  assertNull(res[1467].firstMatch("A"), 4522);
-  assertNull(res[1467].firstMatch("** Failers"), 4523);
-  assertNull(res[1467].firstMatch("x{2b0}"), 4524);
-  assertNull(res[1468].firstMatch("x{903}"), 4525);
-  assertNull(res[1468].firstMatch("** Failers"), 4526);
-  assertNull(res[1468].firstMatch("X"), 4527);
-  assertNull(res[1468].firstMatch("x{300}"), 4528);
-  assertNull(res[1468].firstMatch("   "), 4529);
-  assertNull(res[1469].firstMatch("x{488}"), 4530);
-  assertNull(res[1469].firstMatch("** Failers"), 4531);
-  assertNull(res[1469].firstMatch("X"), 4532);
-  assertNull(res[1469].firstMatch("x{903}"), 4533);
-  assertNull(res[1469].firstMatch("x{300}"), 4534);
-  assertNull(res[1470].firstMatch("x{300}"), 4535);
-  assertNull(res[1470].firstMatch("** Failers"), 4536);
-  assertNull(res[1470].firstMatch("X"), 4537);
-  assertNull(res[1470].firstMatch("x{903}"), 4538);
-  assertNull(
-      res[1470].firstMatch(
-          "0123456789x{660}x{661}x{662}x{663}x{664}x{665}x{666}x{667}x{668}x{669}x{66a}"),
-      4539);
-  assertNull(
-      res[1470].firstMatch(
-          "x{6f0}x{6f1}x{6f2}x{6f3}x{6f4}x{6f5}x{6f6}x{6f7}x{6f8}x{6f9}x{6fa}"),
-      4540);
-  assertNull(
-      res[1470].firstMatch(
-          "x{966}x{967}x{968}x{969}x{96a}x{96b}x{96c}x{96d}x{96e}x{96f}x{970}"),
-      4541);
-  assertNull(res[1470].firstMatch("** Failers"), 4542);
-  assertNull(res[1470].firstMatch("X"), 4543);
-  assertNull(res[1471].firstMatch("x{16ee}"), 4544);
-  assertNull(res[1471].firstMatch("** Failers"), 4545);
-  assertNull(res[1471].firstMatch("X"), 4546);
-  assertNull(res[1471].firstMatch("x{966}"), 4547);
-  assertNull(res[1472].firstMatch("x{b2}"), 4548);
-  assertNull(res[1472].firstMatch("x{b3}"), 4549);
-  assertNull(res[1472].firstMatch("** Failers"), 4550);
-  assertNull(res[1472].firstMatch("X"), 4551);
-  assertNull(res[1472].firstMatch("x{16ee}"), 4552);
-  assertNull(res[1473].firstMatch("_"), 4553);
-  assertNull(res[1473].firstMatch("x{203f}"), 4554);
-  assertNull(res[1473].firstMatch("** Failers"), 4555);
-  assertNull(res[1473].firstMatch("X"), 4556);
-  assertNull(res[1473].firstMatch("-"), 4557);
-  assertNull(res[1473].firstMatch("x{58a}"), 4558);
-  assertNull(res[1474].firstMatch("-"), 4559);
-  assertNull(res[1474].firstMatch("x{58a}"), 4560);
-  assertNull(res[1474].firstMatch("** Failers"), 4561);
-  assertNull(res[1474].firstMatch("X"), 4562);
-  assertNull(res[1474].firstMatch("x{203f}"), 4563);
-  assertNull(res[1475].firstMatch(")"), 4564);
-  assertNull(res[1475].firstMatch("]"), 4565);
-  assertNull(res[1475].firstMatch("}"), 4566);
-  assertNull(res[1475].firstMatch("x{f3b}"), 4567);
-  assertNull(res[1475].firstMatch("** Failers"), 4568);
-  assertNull(res[1475].firstMatch("X"), 4569);
-  assertNull(res[1475].firstMatch("x{203f}"), 4570);
-  assertNull(res[1475].firstMatch("("), 4571);
-  assertNull(res[1475].firstMatch("["), 4572);
-  assertNull(res[1475].firstMatch("{"), 4573);
-  assertNull(res[1475].firstMatch("x{f3c}"), 4574);
-  assertNull(res[1476].firstMatch("x{bb}"), 4575);
-  assertNull(res[1476].firstMatch("x{2019}"), 4576);
-  assertNull(res[1476].firstMatch("** Failers"), 4577);
-  assertNull(res[1476].firstMatch("X"), 4578);
-  assertNull(res[1476].firstMatch("x{203f}"), 4579);
-  assertNull(res[1477].firstMatch("x{ab}"), 4580);
-  assertNull(res[1477].firstMatch("x{2018}"), 4581);
-  assertNull(res[1477].firstMatch("** Failers"), 4582);
-  assertNull(res[1477].firstMatch("X"), 4583);
-  assertNull(res[1477].firstMatch("x{203f}"), 4584);
-  assertNull(res[1478].firstMatch("!"), 4585);
-  assertNull(res[1478].firstMatch("x{37e}"), 4586);
-  assertNull(res[1478].firstMatch("** Failers"), 4587);
-  assertNull(res[1478].firstMatch("X"), 4588);
-  assertNull(res[1478].firstMatch("x{203f}"), 4589);
-  assertNull(res[1479].firstMatch("("), 4590);
-  assertNull(res[1479].firstMatch("["), 4591);
-  assertNull(res[1479].firstMatch("{"), 4592);
-  assertNull(res[1479].firstMatch("x{f3c}"), 4593);
-  assertNull(res[1479].firstMatch("** Failers"), 4594);
-  assertNull(res[1479].firstMatch("X"), 4595);
-  assertNull(res[1479].firstMatch(")"), 4596);
-  assertNull(res[1479].firstMatch("]"), 4597);
-  assertNull(res[1479].firstMatch("}"), 4598);
-  assertNull(res[1479].firstMatch("x{f3b}"), 4599);
-  assertNull(res[1479].firstMatch("\$x{a2}x{a3}x{a4}x{a5}x{a6}"), 4600);
-  assertNull(res[1479].firstMatch("x{9f2}"), 4601);
-  assertNull(res[1479].firstMatch("** Failers"), 4602);
-  assertNull(res[1479].firstMatch("X"), 4603);
-  assertNull(res[1479].firstMatch("x{2c2}"), 4604);
-  assertNull(res[1480].firstMatch("x{2c2}"), 4605);
-  assertNull(res[1480].firstMatch("** Failers"), 4606);
-  assertNull(res[1480].firstMatch("X"), 4607);
-  assertNull(res[1480].firstMatch("x{9f2}"), 4608);
-  assertNull(res[1480].firstMatch("+<|~x{ac}x{2044}"), 4609);
-  assertNull(res[1480].firstMatch("** Failers"), 4610);
-  assertNull(res[1480].firstMatch("X"), 4611);
-  assertNull(res[1480].firstMatch("x{9f2}"), 4612);
-  assertNull(res[1481].firstMatch("x{a6}"), 4613);
-  assertNull(res[1481].firstMatch("x{482} "), 4614);
-  assertNull(res[1481].firstMatch("** Failers"), 4615);
-  assertNull(res[1481].firstMatch("X"), 4616);
-  assertNull(res[1481].firstMatch("x{9f2}"), 4617);
-  assertNull(res[1482].firstMatch("x{2028}"), 4618);
-  assertNull(res[1482].firstMatch("** Failers"), 4619);
-  assertNull(res[1482].firstMatch("X"), 4620);
-  assertNull(res[1482].firstMatch("x{2029}"), 4621);
-  assertNull(res[1483].firstMatch("x{2029}"), 4622);
-  assertNull(res[1483].firstMatch("** Failers"), 4623);
-  assertNull(res[1483].firstMatch("X"), 4624);
-  assertNull(res[1483].firstMatch("x{2028}"), 4625);
-  assertNull(res[1484].firstMatch("\\ \\"), 4626);
-  assertNull(res[1484].firstMatch("x{a0}"), 4627);
-  assertNull(res[1484].firstMatch("x{1680}"), 4628);
-  assertNull(res[1484].firstMatch("x{180e}"), 4629);
-  assertNull(res[1484].firstMatch("x{2000}"), 4630);
-  assertNull(res[1484].firstMatch("x{2001}     "), 4631);
-  assertNull(res[1484].firstMatch("** Failers"), 4632);
-  assertNull(res[1484].firstMatch("x{2028}"), 4633);
-  assertNull(res[1484].firstMatch("x{200d} "), 4634);
-  assertNull(res[1484].firstMatch("  x{660}x{661}x{662}ABC"), 4635);
-  assertNull(res[1484].firstMatch("  x{660}x{661}x{662}ABC"), 4636);
-  assertNull(res[1485].firstMatch("  x{660}x{661}x{662}ABC"), 4637);
-  assertNull(res[1486].firstMatch("  x{660}x{661}x{662}ABC"), 4638);
-  assertNull(res[1487].firstMatch("  x{660}x{661}x{662}ABC"), 4639);
-  assertNull(res[1488].firstMatch("  x{660}x{661}x{662}ABC"), 4640);
-  assertNull(res[1489].firstMatch("  x{660}x{661}x{662}ABC"), 4641);
-  assertNull(res[1490].firstMatch("  x{660}x{661}x{662}ABC"), 4642);
-  assertNull(res[1491].firstMatch("  x{660}x{661}x{662}ABC"), 4643);
-  assertNull(res[1492].firstMatch("  x{660}x{661}x{662}ABC"), 4644);
-  assertNull(res[1493].firstMatch("  x{660}x{661}x{662}ABC"), 4645);
-  assertNull(res[1493].firstMatch("  x{660}x{661}x{662}ABC"), 4646);
-  assertNull(res[1493].firstMatch("  x{660}x{661}x{662}ABC"), 4647);
-  assertNull(res[1493].firstMatch("  ** Failers"), 4648);
-  assertNull(res[1493].firstMatch("  x{660}x{661}x{662}ABC"), 4649);
-  assertNull(res[1494].firstMatch("A"), 4650);
-  assertNull(res[1494].firstMatch("ax{10a0}B "), 4651);
-  assertNull(res[1494].firstMatch("** Failers "), 4652);
-  assertNull(res[1494].firstMatch("a"), 4653);
-  assertNull(res[1494].firstMatch("x{1d00}  "), 4654);
-  assertNull(res[1495].firstMatch("1234"), 4655);
-  assertNull(res[1495].firstMatch("** Failers"), 4656);
-  assertNull(res[1495].firstMatch("ABC "), 4657);
-  assertNull(res[1496].firstMatch("1234"), 4658);
-  assertNull(res[1496].firstMatch("** Failers"), 4659);
-  assertNull(res[1496].firstMatch("ABC "), 4660);
-  assertNull(res[1496].firstMatch("A2XYZ"), 4661);
-  assertNull(res[1496].firstMatch("123A5XYZPQR"), 4662);
-  assertNull(res[1496].firstMatch("ABAx{660}XYZpqr"), 4663);
-  assertNull(res[1496].firstMatch("** Failers"), 4664);
-  assertNull(res[1496].firstMatch("AXYZ"), 4665);
-  assertNull(res[1496].firstMatch("XYZ     "), 4666);
-  assertNull(res[1496].firstMatch("1XYZ"), 4667);
-  assertNull(res[1496].firstMatch("AB=XYZ.. "), 4668);
-  assertNull(res[1496].firstMatch("XYZ "), 4669);
-  assertNull(res[1496].firstMatch("** Failers"), 4670);
-  assertNull(res[1496].firstMatch("WXYZ "), 4671);
-  assertNull(res[1497].firstMatch("1234"), 4672);
-  assertNull(res[1497].firstMatch("1234"), 4673);
-  assertNull(res[1497].firstMatch("12-34"), 4674);
-  assertToStringEquals("{", res[1497].firstMatch("12+x{661}-34  "), 4675);
-  assertNull(res[1497].firstMatch("** Failers"), 4676);
-  assertToStringEquals("d", res[1497].firstMatch("abcd  "), 4677);
-  assertToStringEquals("d", res[1498].firstMatch("abcd"), 4678);
-  assertNull(res[1498].firstMatch("** Failers"), 4679);
-  assertNull(res[1498].firstMatch("1234"), 4680);
-  assertNull(
-      res[1499].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      4681);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[1499].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      4682);
-  assertToStringEquals(" ", res[1499].firstMatch(" "), 4683);
-  assertNull(
-      res[1499].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      4684);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[1499].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      4685);
-  assertNull(
-      res[1500].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      4686);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[1500].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      4687);
-  assertNull(
-      res[1501].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      4688);
-  assertNull(
-      res[1501].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      4689);
-  assertNull(
-      res[1502].firstMatch(
-          "11111111111111111111111111111111111111111111111111111111111111111111111"),
-      4690);
-  assertToStringEquals(
-      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
-      res[1502].firstMatch(
-          "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
-      4691);
-  assertNull(res[1503].firstMatch("a"), 4692);
-  assertNull(res[1503].firstMatch("A "), 4693);
-  assertNull(res[1504].firstMatch("a"), 4694);
-  assertNull(res[1504].firstMatch("A "), 4695);
-  assertNull(res[1505].firstMatch("A"), 4696);
-  assertNull(res[1505].firstMatch("aZ"), 4697);
-  assertNull(res[1505].firstMatch("** Failers"), 4698);
-  assertNull(res[1505].firstMatch("abc   "), 4699);
-  assertNull(res[1506].firstMatch("A"), 4700);
-  assertNull(res[1506].firstMatch("aZ"), 4701);
-  assertNull(res[1506].firstMatch("** Failers"), 4702);
-  assertNull(res[1506].firstMatch("abc   "), 4703);
-  assertNull(res[1507].firstMatch("a"), 4704);
-  assertNull(res[1507].firstMatch("Az"), 4705);
-  assertNull(res[1507].firstMatch("** Failers"), 4706);
-  assertNull(res[1507].firstMatch("ABC   "), 4707);
-  assertNull(res[1508].firstMatch("a"), 4708);
-  assertNull(res[1508].firstMatch("Az"), 4709);
-  assertNull(res[1508].firstMatch("** Failers"), 4710);
-  assertNull(res[1508].firstMatch("ABC   "), 4711);
-  assertNull(res[1508].firstMatch("x{c0}"), 4712);
-  assertNull(res[1508].firstMatch("x{e0} "), 4713);
-  assertNull(res[1508].firstMatch("x{c0}"), 4714);
-  assertNull(res[1508].firstMatch("x{e0} "), 4715);
-  assertNull(res[1508].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb0}"), 4716);
-  assertNull(res[1508].firstMatch("** Failers"), 4717);
-  assertNull(res[1508].firstMatch("ax{391}x{10427}x{ff3a}x{1fb0}   "), 4718);
-  assertNull(res[1508].firstMatch("Ax{3b1}x{10427}x{ff3a}x{1fb0}"), 4719);
-  assertNull(res[1508].firstMatch("Ax{391}x{1044F}x{ff3a}x{1fb0}"), 4720);
-  assertNull(res[1508].firstMatch("Ax{391}x{10427}x{ff5a}x{1fb0}"), 4721);
-  assertNull(res[1508].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb8}"), 4722);
-  assertNull(res[1508].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb0}"), 4723);
-  assertNull(res[1508].firstMatch("ax{391}x{10427}x{ff3a}x{1fb0}   "), 4724);
-  assertNull(res[1508].firstMatch("Ax{3b1}x{10427}x{ff3a}x{1fb0}"), 4725);
-  assertNull(res[1508].firstMatch("Ax{391}x{1044F}x{ff3a}x{1fb0}"), 4726);
-  assertNull(res[1508].firstMatch("Ax{391}x{10427}x{ff5a}x{1fb0}"), 4727);
-  assertNull(res[1508].firstMatch("Ax{391}x{10427}x{ff3a}x{1fb8}"), 4728);
-  assertNull(res[1508].firstMatch("x{391}x{3b1}x{3b1}x{3b1}x{391}"), 4729);
-  assertNull(res[1508].firstMatch("x{391}x{3b1}x{3b1}x{3b1}x{391}X"), 4730);
-  assertNull(res[1508].firstMatch("x{391}x{3b1}x{3b1}x{3b1}x{391}X"), 4731);
-  assertNull(res[1508].firstMatch("x{391}"), 4732);
-  assertNull(res[1508].firstMatch("x{ff3a}"), 4733);
-  assertNull(res[1508].firstMatch("x{3b1}"), 4734);
-  assertNull(res[1508].firstMatch("x{ff5a}   "), 4735);
-  assertNull(res[1508].firstMatch("x{c0}"), 4736);
-  assertNull(res[1508].firstMatch("x{e0} "), 4737);
-  assertNull(res[1508].firstMatch("x{104}"), 4738);
-  assertNull(res[1508].firstMatch("x{105}"), 4739);
-  assertNull(res[1508].firstMatch("x{109}  "), 4740);
-  assertNull(res[1508].firstMatch("** Failers"), 4741);
-  assertNull(res[1508].firstMatch("x{100}"), 4742);
-  assertNull(res[1508].firstMatch("x{10a} "), 4743);
-  assertNull(res[1508].firstMatch("Z"), 4744);
-  assertNull(res[1508].firstMatch("z"), 4745);
-  assertNull(res[1508].firstMatch("x{39c}"), 4746);
-  assertNull(res[1508].firstMatch("x{178}"), 4747);
-  assertNull(res[1508].firstMatch("|"), 4748);
-  assertNull(res[1508].firstMatch("x{80}"), 4749);
-  assertNull(res[1508].firstMatch("x{ff}"), 4750);
-  assertNull(res[1508].firstMatch("x{100}"), 4751);
-  assertNull(res[1508].firstMatch("x{101} "), 4752);
-  assertNull(res[1508].firstMatch("** Failers"), 4753);
-  assertNull(res[1508].firstMatch("x{102}"), 4754);
-  assertNull(res[1508].firstMatch("Y"), 4755);
-  assertNull(res[1508].firstMatch("y           "), 4756);
-  assertNull(res[1509].firstMatch("A"), 4757);
-  assertNull(res[1509].firstMatch("Ax{300}BC "), 4758);
-  assertNull(res[1509].firstMatch("Ax{300}x{301}x{302}BC "), 4759);
-  assertNull(res[1509].firstMatch("*** Failers"), 4760);
-  assertNull(res[1509].firstMatch("x{300}  "), 4761);
-  assertToStringEquals("X", res[1510].firstMatch("X123"), 4762);
-  assertNull(res[1510].firstMatch("*** Failers"), 4763);
-  assertNull(res[1510].firstMatch("AXYZ"), 4764);
-  assertNull(res[1511].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4765);
-  assertNull(
-      res[1511].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4766);
-  assertNull(res[1512].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4767);
-  assertNull(
-      res[1512].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4768);
-  assertToStringEquals("A,,A",
-      res[1513].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4769);
-  assertToStringEquals("A,,A",
-      res[1513].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4770);
-  assertToStringEquals("A,,A",
-      res[1514].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301} "), 4771);
-  assertToStringEquals("A,,A",
-      res[1514].firstMatch("Ax{300}x{301}x{302}BCAx{300}x{301}C "), 4772);
-  assertNull(res[1515].firstMatch("*** Failers"), 4773);
-  assertNull(res[1515].firstMatch("Ax{300}x{301}x{302}"), 4774);
-  assertNull(res[1516].firstMatch("Ax{300}x{301}Bx{300}X"), 4775);
-  assertNull(res[1516].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 4776);
-  assertNull(res[1516].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 4777);
-  assertNull(
-      res[1516].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 4778);
-  assertNull(res[1517].firstMatch("Ax{300}x{301}Bx{300}X"), 4779);
-  assertNull(res[1517].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}"), 4780);
-  assertNull(res[1517].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}X"), 4781);
-  assertNull(
-      res[1517].firstMatch("Ax{300}x{301}Bx{300}Cx{300}x{301}DAx{300}X"), 4782);
-  assertNull(res[1518].firstMatch("12X"), 4783);
-  assertNull(res[1518].firstMatch("123X"), 4784);
-  assertNull(res[1518].firstMatch("*** Failers"), 4785);
-  assertNull(res[1518].firstMatch("X"), 4786);
-  assertNull(res[1518].firstMatch("1X"), 4787);
-  assertNull(res[1518].firstMatch("1234X     "), 4788);
-  assertNull(res[1518].firstMatch("x{100}   "), 4789);
-  assertNull(res[1518].firstMatch("x{101} "), 4790);
-  assertNull(res[1518].firstMatch("x{2e81}x{3007}x{2f804}x{31a0}"), 4791);
-  assertNull(res[1518].firstMatch("** Failers"), 4792);
-  assertNull(res[1518].firstMatch("x{2e7f}  "), 4793);
-  assertNull(res[1518].firstMatch("x{3105}"), 4794);
-  assertNull(res[1518].firstMatch("** Failers"), 4795);
-  assertNull(res[1518].firstMatch("x{30ff}  "), 4796);
-  assertNull(res[1519].firstMatch("x{06e9}"), 4797);
-  assertNull(res[1519].firstMatch("x{060b}"), 4798);
-  assertNull(res[1519].firstMatch("** Failers"), 4799);
-  assertNull(res[1519].firstMatch("Xx{06e9}   "), 4800);
-  assertNull(res[1520].firstMatch("x{2f800}"), 4801);
-  assertNull(res[1520].firstMatch("** Failers"), 4802);
-  assertNull(res[1520].firstMatch("x{a014}"), 4803);
-  assertNull(res[1520].firstMatch("x{a4c6}   "), 4804);
-  assertNull(res[1521].firstMatch("AXYZ"), 4805);
-  assertNull(res[1521].firstMatch("x{1234}XYZ "), 4806);
-  assertNull(res[1521].firstMatch("** Failers"), 4807);
-  assertNull(res[1521].firstMatch("X  "), 4808);
-  assertNull(res[1522].firstMatch("** Failers"), 4809);
-  assertNull(res[1522].firstMatch("AX"), 4810);
-  assertNull(res[1523].firstMatch("XYZ"), 4811);
-  assertNull(res[1523].firstMatch("AXYZ"), 4812);
-  assertNull(res[1523].firstMatch("x{1234}XYZ "), 4813);
-  assertNull(res[1523].firstMatch("** Failers"), 4814);
-  assertNull(res[1523].firstMatch("ABXYZ   "), 4815);
-  assertNull(res[1524].firstMatch("XYZ"), 4816);
-  assertNull(res[1524].firstMatch("** Failers"), 4817);
-  assertNull(res[1524].firstMatch("AXYZ"), 4818);
-  assertNull(res[1524].firstMatch("x{1234}XYZ "), 4819);
-  assertNull(res[1524].firstMatch("ABXYZ   "), 4820);
-  assertNull(res[1524].firstMatch("AXYZ"), 4821);
-  assertNull(res[1524].firstMatch("x{1234}XYZ"), 4822);
-  assertNull(res[1524].firstMatch("Ax{1234}XYZ"), 4823);
-  assertNull(res[1524].firstMatch("** Failers"), 4824);
-  assertNull(res[1524].firstMatch("XYZ"), 4825);
-  assertNull(res[1524].firstMatch("** Failers"), 4826);
-  assertNull(res[1524].firstMatch("AXYZ"), 4827);
-  assertNull(res[1524].firstMatch("x{1234}XYZ"), 4828);
-  assertNull(res[1524].firstMatch("Ax{1234}XYZ"), 4829);
-  assertNull(res[1524].firstMatch("XYZ"), 4830);
-  assertNull(res[1525].firstMatch("XYZ"), 4831);
-  assertNull(res[1525].firstMatch("AXYZ"), 4832);
-  assertNull(res[1525].firstMatch("x{1234}XYZ"), 4833);
-  assertNull(res[1525].firstMatch("Ax{1234}XYZ"), 4834);
-  assertNull(res[1525].firstMatch("** Failers"), 4835);
-  assertNull(res[1526].firstMatch("XYZ"), 4836);
-  assertNull(res[1526].firstMatch("** Failers"), 4837);
-  assertNull(res[1526].firstMatch("AXYZ"), 4838);
-  assertNull(res[1526].firstMatch("x{1234}XYZ"), 4839);
-  assertNull(res[1526].firstMatch("Ax{1234}XYZ"), 4840);
-  assertToStringEquals("AX", res[1527].firstMatch("AXYZ"), 4841);
-  assertNull(res[1527].firstMatch("x{1234}XYZ "), 4842);
-  assertNull(res[1527].firstMatch("** Failers"), 4843);
-  assertNull(res[1527].firstMatch("X  "), 4844);
-  assertNull(res[1528].firstMatch("** Failers"), 4845);
-  assertToStringEquals("AX", res[1528].firstMatch("AX"), 4846);
-  assertToStringEquals("X", res[1529].firstMatch("XYZ"), 4847);
-  assertToStringEquals("AX", res[1529].firstMatch("AXYZ"), 4848);
-  assertNull(res[1529].firstMatch("x{1234}XYZ "), 4849);
-  assertNull(res[1529].firstMatch("** Failers"), 4850);
-  assertNull(res[1529].firstMatch("ABXYZ   "), 4851);
-  assertToStringEquals("X", res[1530].firstMatch("XYZ"), 4852);
-  assertNull(res[1530].firstMatch("** Failers"), 4853);
-  assertToStringEquals("AX", res[1530].firstMatch("AXYZ"), 4854);
-  assertNull(res[1530].firstMatch("x{1234}XYZ "), 4855);
-  assertNull(res[1530].firstMatch("ABXYZ   "), 4856);
-  assertToStringEquals("AX", res[1531].firstMatch("AXYZ"), 4857);
-  assertNull(res[1531].firstMatch("x{1234}XYZ"), 4858);
-  assertNull(res[1531].firstMatch("Ax{1234}XYZ"), 4859);
-  assertNull(res[1531].firstMatch("** Failers"), 4860);
-  assertNull(res[1531].firstMatch("XYZ"), 4861);
-  assertNull(res[1532].firstMatch("** Failers"), 4862);
-  assertToStringEquals("AX", res[1532].firstMatch("AXYZ"), 4863);
-  assertNull(res[1532].firstMatch("x{1234}XYZ"), 4864);
-  assertNull(res[1532].firstMatch("Ax{1234}XYZ"), 4865);
-  assertNull(res[1532].firstMatch("XYZ"), 4866);
-  assertToStringEquals("X", res[1533].firstMatch("XYZ"), 4867);
-  assertToStringEquals("AX", res[1533].firstMatch("AXYZ"), 4868);
-  assertNull(res[1533].firstMatch("x{1234}XYZ"), 4869);
-  assertNull(res[1533].firstMatch("Ax{1234}XYZ"), 4870);
-  assertNull(res[1533].firstMatch("** Failers"), 4871);
-  assertToStringEquals("X", res[1534].firstMatch("XYZ"), 4872);
-  assertNull(res[1534].firstMatch("** Failers"), 4873);
-  assertToStringEquals("AX", res[1534].firstMatch("AXYZ"), 4874);
-  assertNull(res[1534].firstMatch("x{1234}XYZ"), 4875);
-  assertNull(res[1534].firstMatch("Ax{1234}XYZ"), 4876);
-  assertNull(res[1535].firstMatch("abcdefgh"), 4877);
-  assertNull(res[1535].firstMatch("x{1234}\n\x0dx{3456}xyz "), 4878);
-  assertNull(res[1536].firstMatch("abcdefgh"), 4879);
-  assertNull(res[1536].firstMatch("x{1234}\n\x0dx{3456}xyz "), 4880);
-  assertNull(res[1537].firstMatch("** Failers"), 4881);
-  assertNull(res[1537].firstMatch("abcdefgh"), 4882);
-  assertNull(res[1537].firstMatch("x{1234}\n\x0dx{3456}xyz "), 4883);
-  assertNull(res[1538].firstMatch(" AXY"), 4884);
-  assertNull(res[1538].firstMatch(" aXY"), 4885);
-  assertNull(res[1538].firstMatch(" x{1c5}XY"), 4886);
-  assertNull(res[1538].firstMatch(" ** Failers"), 4887);
-  assertNull(res[1538].firstMatch(" x{1bb}XY"), 4888);
-  assertNull(res[1538].firstMatch(" x{2b0}XY"), 4889);
-  assertNull(res[1538].firstMatch(" !XY      "), 4890);
-  assertNull(res[1539].firstMatch(" AXY"), 4891);
-  assertNull(res[1539].firstMatch(" aXY"), 4892);
-  assertNull(res[1539].firstMatch(" x{1c5}XY"), 4893);
-  assertNull(res[1539].firstMatch(" ** Failers"), 4894);
-  assertNull(res[1539].firstMatch(" x{1bb}XY"), 4895);
-  assertNull(res[1539].firstMatch(" x{2b0}XY"), 4896);
-  assertNull(res[1539].firstMatch(" !XY      "), 4897);
-  assertNull(res[1539].firstMatch(" AXY"), 4898);
-  assertNull(res[1539].firstMatch(" aXY"), 4899);
-  assertNull(res[1539].firstMatch(" AbcdeXyz "), 4900);
-  assertNull(res[1539].firstMatch(" x{1c5}AbXY"), 4901);
-  assertNull(res[1539].firstMatch(" abcDEXypqreXlmn "), 4902);
-  assertNull(res[1539].firstMatch(" ** Failers"), 4903);
-  assertNull(res[1539].firstMatch(" x{1bb}XY"), 4904);
-  assertNull(res[1539].firstMatch(" x{2b0}XY"), 4905);
-  assertNull(res[1539].firstMatch(" !XY      "), 4906);
-  assertNull(res[1540].firstMatch(" AXY"), 4907);
-  assertNull(res[1540].firstMatch(" aXY"), 4908);
-  assertNull(res[1540].firstMatch(" AbcdeXyz "), 4909);
-  assertNull(res[1540].firstMatch(" x{1c5}AbXY"), 4910);
-  assertNull(res[1540].firstMatch(" abcDEXypqreXlmn "), 4911);
-  assertNull(res[1540].firstMatch(" ** Failers"), 4912);
-  assertNull(res[1540].firstMatch(" x{1bb}XY"), 4913);
-  assertNull(res[1540].firstMatch(" x{2b0}XY"), 4914);
-  assertNull(res[1540].firstMatch(" !XY      "), 4915);
-  assertNull(res[1540].firstMatch(" AXY"), 4916);
-  assertNull(res[1540].firstMatch(" aXY"), 4917);
-  assertNull(res[1540].firstMatch(" AbcdeXyz "), 4918);
-  assertNull(res[1540].firstMatch(" x{1c5}AbXY"), 4919);
-  assertNull(res[1540].firstMatch(" abcDEXypqreXlmn "), 4920);
-  assertNull(res[1540].firstMatch(" ** Failers"), 4921);
-  assertNull(res[1540].firstMatch(" x{1bb}XY"), 4922);
-  assertNull(res[1540].firstMatch(" x{2b0}XY"), 4923);
-  assertNull(res[1540].firstMatch(" !XY      "), 4924);
-  assertNull(res[1541].firstMatch(" AXY"), 4925);
-  assertNull(res[1541].firstMatch(" aXY"), 4926);
-  assertNull(res[1541].firstMatch(" AbcdeXyz "), 4927);
-  assertNull(res[1541].firstMatch(" x{1c5}AbXY"), 4928);
-  assertNull(res[1541].firstMatch(" abcDEXypqreXlmn "), 4929);
-  assertNull(res[1541].firstMatch(" ** Failers"), 4930);
-  assertNull(res[1541].firstMatch(" x{1bb}XY"), 4931);
-  assertNull(res[1541].firstMatch(" x{2b0}XY"), 4932);
-  assertNull(res[1541].firstMatch(" !XY      "), 4933);
-  assertNull(res[1542].firstMatch(" !XY"), 4934);
-  assertNull(res[1542].firstMatch(" x{1bb}XY"), 4935);
-  assertNull(res[1542].firstMatch(" x{2b0}XY"), 4936);
-  assertNull(res[1542].firstMatch(" ** Failers"), 4937);
-  assertNull(res[1542].firstMatch(" x{1c5}XY"), 4938);
-  assertNull(res[1542].firstMatch(" AXY      "), 4939);
-  assertNull(res[1543].firstMatch(" !XY"), 4940);
-  assertNull(res[1543].firstMatch(" x{1bb}XY"), 4941);
-  assertNull(res[1543].firstMatch(" x{2b0}XY"), 4942);
-  assertNull(res[1543].firstMatch(" ** Failers"), 4943);
-  assertNull(res[1543].firstMatch(" x{1c5}XY"), 4944);
-  assertNull(res[1543].firstMatch(" AXY      "), 4945);
-  assertNull(res[1543].firstMatch("x{c0}x{e0}x{116}x{117}"), 4946);
-  assertNull(res[1543].firstMatch("x{c0}x{e0}x{116}x{117}"), 4947);
-  assertNull(res[1545].firstMatch("123abcdefg"), 4948);
-  assertNull(res[1545].firstMatch("123abc\xc4\xc5zz"), 4949);
-  assertNull(
-      res[1546].firstMatch(
-          "x{102A4}x{AA52}x{A91D}x{1C46}x{10283}x{1092E}x{1C6B}x{A93B}x{A8BF}x{1BA0}x{A50A}===="),
-      4950);
-  assertNull(res[1546].firstMatch("x{a77d}x{1d79}"), 4951);
-  assertNull(res[1546].firstMatch("x{1d79}x{a77d} "), 4952);
-  assertNull(res[1546].firstMatch("x{a77d}x{1d79}"), 4953);
-  assertNull(res[1546].firstMatch("** Failers "), 4954);
-  assertNull(res[1546].firstMatch("x{1d79}x{a77d} "), 4955);
-  // Dart does not have RegExp literals and thus no translatation of the below.
-  // assertThrows("var re = //;", 4956);
-}
diff --git a/tests/corelib/regexp/quantified-assertions_test.dart b/tests/corelib/regexp/quantified-assertions_test.dart
deleted file mode 100644
index 43269fd..0000000
--- a/tests/corelib/regexp/quantified-assertions_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("This page tests assertions followed by quantifiers.");
-
-  var regexp;
-
-  regexp = new RegExp(r"(?=a){0}", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('a'));
-
-  regexp = new RegExp(r"(?=a){1}", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('a'));
-
-  regexp = new RegExp(r"(?!a){0}", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('b'));
-
-  regexp = new RegExp(r"(?!a){1}", multiLine: true);
-  shouldBeTrue(regexp.hasMatch('b'));
-
-  shouldBeTrue(new RegExp(r"^(?=a)?b$").hasMatch("b"));
-}
diff --git a/tests/corelib/regexp/range-bound-ffff_test.dart b/tests/corelib/regexp/range-bound-ffff_test.dart
deleted file mode 100644
index c9d8c62..0000000
--- a/tests/corelib/regexp/range-bound-ffff_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for rdar:/68455379, a case-insensitive regex containing a character class containing a range with an upper bound of \uFFFF can lead to an infinite-loop.');
-
-  shouldBe(
-      firstMatch("A", new RegExp(r"[\u0001-\uFFFF]", caseSensitive: false)),
-      ["A"]);
-}
diff --git a/tests/corelib/regexp/range-out-of-order_test.dart b/tests/corelib/regexp/range-out-of-order_test.dart
deleted file mode 100644
index 3535bdb..0000000
--- a/tests/corelib/regexp/range-out-of-order_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=16129">bug 16129</a>: REGRESSION (r27761-r27811): malloc error while visiting http://mysit.es (crashes release build).');
-
-  assertThrows(() => new RegExp(r"^[\s{-.\[\]\(\)]$"));
-}
diff --git a/tests/corelib/regexp/ranges-and-escaped-hyphens_test.dart b/tests/corelib/regexp/ranges-and-escaped-hyphens_test.dart
deleted file mode 100644
index 7c03503..0000000
--- a/tests/corelib/regexp/ranges-and-escaped-hyphens_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Tests for bug <a href="https://bugs.webkit.org/show_bug.cgi?id=21232">#21232</a>, and related range issues described in bug.');
-
-  // Basic test for ranges - one to three and five are in regexp, four is not, and '-' should not match
-  var regexp01 = new RegExp(r"[1-35]+").firstMatch("-12354");
-  shouldBe(regexp01, ["1235"]);
-  // Tests inserting an escape character class into the above pattern - where the spaces fall within the
-  // range it is no longer a range - hyphens should now match, two should not.
-  var regexp01a = new RegExp(r"[\s1-35]+").firstMatch("-123 54");
-  shouldBe(regexp01a, ["123 5"]);
-
-  // These are invalid ranges, according to ECMA-262, but we allow them.
-  var regexp01b = new RegExp(r"[1\s-35]+").firstMatch("21-3 54");
-  shouldBe(regexp01b, ["1-3 5"]);
-  var regexp01c = new RegExp(r"[1-\s35]+").firstMatch("21-3 54");
-  shouldBe(regexp01c, ["1-3 5"]);
-
-  var regexp01d = new RegExp(r"[1-3\s5]+").firstMatch("-123 54");
-  shouldBe(regexp01d, ["123 5"]);
-  var regexp01e = new RegExp(r"[1-35\s5]+").firstMatch("-123 54");
-  shouldBe(regexp01e, ["123 5"]);
-  // hyphens are normal characters if a range is not fully specified.
-  var regexp01f = new RegExp(r"[-3]+").firstMatch("2-34");
-  shouldBe(regexp01f, ["-3"]);
-  var regexp01g = new RegExp(r"[2-]+").firstMatch("12-3");
-  shouldBe(regexp01g, ["2-"]);
-
-  // Similar to the above tests, but where the hyphen is escaped this is never a range.
-  var regexp02 = new RegExp(r"[1\-35]+").firstMatch("21-354");
-  shouldBe(regexp02, ["1-35"]);
-  // As above.
-  var regexp02a = new RegExp(r"[\s1\-35]+").firstMatch("21-3 54");
-  shouldBe(regexp02a, ["1-3 5"]);
-  var regexp02b = new RegExp(r"[1\s\-35]+").firstMatch("21-3 54");
-  shouldBe(regexp02b, ["1-3 5"]);
-  var regexp02c = new RegExp(r"[1\-\s35]+").firstMatch("21-3 54");
-  shouldBe(regexp02c, ["1-3 5"]);
-  var regexp02d = new RegExp(r"[1\-3\s5]+").firstMatch("21-3 54");
-  shouldBe(regexp02d, ["1-3 5"]);
-  var regexp02e = new RegExp(r"[1\-35\s5]+").firstMatch("21-3 54");
-  shouldBe(regexp02e, ["1-3 5"]);
-
-  // Test that an escaped hyphen can be used as a bound on a range.
-  var regexp03a = new RegExp(r"[\--0]+").firstMatch(",-.01");
-  shouldBe(regexp03a, ["-.0"]);
-  var regexp03b = new RegExp(r"[+-\-]+").firstMatch("*+,-.");
-  shouldBe(regexp03b, ["+,-"]);
-
-  // The actual bug reported.
-  var bug21232 =
-      (new RegExp(r"^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$")).hasMatch('@');
-  shouldBeFalse(bug21232);
-}
diff --git a/tests/corelib/regexp/regexp_kde_test.dart b/tests/corelib/regexp/regexp_kde_test.dart
deleted file mode 100644
index 71d5b9c..0000000
--- a/tests/corelib/regexp/regexp_kde_test.dart
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description("KDE JS Test");
-
-  var ri = new RegExp(r"a", caseSensitive: false);
-  var rm = new RegExp(r"a", multiLine: true);
-  var rg = new RegExp(r"a");
-
-  shouldBe(new RegExp(r"(b)c").firstMatch('abcd'), ["bc", "b"]);
-
-  shouldBe(firstMatch('abcdefghi', new RegExp(r"(abc)def(ghi)")),
-      ['abcdefghi', 'abc', 'ghi']);
-  shouldBe(new RegExp(r"(abc)def(ghi)").firstMatch('abcdefghi'),
-      ['abcdefghi', 'abc', 'ghi']);
-
-  shouldBe(firstMatch('abcdefghi', new RegExp(r"(a(b(c(d(e)f)g)h)i)")),
-      ['abcdefghi', 'abcdefghi', 'bcdefgh', 'cdefg', 'def', 'e']);
-
-  shouldBe(
-      firstMatch('(100px 200px 150px 15px)',
-          new RegExp(r"\((\d+)(px)* (\d+)(px)* (\d+)(px)* (\d+)(px)*\)")),
-      [
-        '(100px 200px 150px 15px)',
-        '100',
-        'px',
-        '200',
-        'px',
-        '150',
-        'px',
-        '15',
-        'px'
-      ]);
-  shouldBeNull(firstMatch(
-      '', new RegExp(r"\((\d+)(px)* (\d+)(px)* (\d+)(px)* (\d+)(px)*\)")));
-
-  var invalidChars = new RegExp(r"[^@\.\w]"); // #47092
-  shouldBeTrue(firstMatch('faure@kde.org', invalidChars) == null);
-  shouldBeFalse(firstMatch('faure-kde@kde.org', invalidChars) == null);
-
-  assertEquals('test1test2'.replaceAll('test', 'X'), 'X1X2');
-  assertEquals('test1test2'.replaceAll(new RegExp(r"\d"), 'X'), 'testXtestX');
-  assertEquals('1test2test3'.replaceAll(new RegExp(r"\d"), ''), 'testtest');
-  assertEquals('test1test2'.replaceAll(new RegExp(r"test"), 'X'), 'X1X2');
-  assertEquals('1test2test3'.replaceAll(new RegExp(r"\d"), ''), 'testtest');
-  assertEquals('1test2test3'.replaceAll(new RegExp(r"x"), ''), '1test2test3');
-  assertEquals(
-      'test1test2'.replaceAllMapped(
-          new RegExp(r"(te)(st)"), (m) => "${m.group(2)}${m.group(1)}"),
-      'stte1stte2');
-  assertEquals('foo+bar'.replaceAll(new RegExp(r"\+"), '%2B'), 'foo%2Bbar');
-  var caught = false;
-  try {
-    new RegExp("+");
-  } catch (e) {
-    caught = true;
-  }
-  shouldBeTrue(caught); // #40435
-  assertEquals('foo'.replaceAll(new RegExp(r"z?"), 'x'), 'xfxoxox');
-  assertEquals(
-      'test test'.replaceAll(new RegExp(r"\s*"), ''), 'testtest'); // #50985
-  assertEquals(
-      'abc\$%@'.replaceAll(new RegExp(r"[^0-9a-z]*", caseSensitive: false), ''),
-      'abc'); // #50848
-  assertEquals(
-      'ab'.replaceAll(new RegExp(r"[^\d\.]*", caseSensitive: false), ''),
-      ''); // #75292
-  assertEquals(
-      '1ab'.replaceAll(new RegExp(r"[^\d\.]*", caseSensitive: false), ''),
-      '1'); // #75292
-
-  Expect.listEquals(
-      '1test2test3blah'.split(new RegExp(r"test")), ['1', '2', '3blah']);
-  var reg = new RegExp(r"(\d\d )");
-  var str = '98 76 blah';
-  shouldBe(reg.firstMatch(str), ['98 ', '98 ']);
-
-  str = "For more information, see Chapter 3.4.5.1";
-  var re = new RegExp(r"(chapter \d+(\.\d)*)", caseSensitive: false);
-  // This returns the array containing Chapter 3.4.5.1,Chapter 3.4.5.1,.1
-  // 'Chapter 3.4.5.1' is the first match and the first value remembered from (Chapter \d+(\.\d)*).
-  // '.1' is the second value remembered from (\.\d)
-  shouldBe(firstMatch(str, re), ['Chapter 3.4.5.1', 'Chapter 3.4.5.1', '.1']);
-
-  str = "abcDdcba";
-  // The returned array contains D, d.
-  re = new RegExp(r"d", caseSensitive: false);
-  var matches = re.allMatches(str);
-  Expect.listEquals(matches.map((m) => m.group(0)).toList(), ['D', 'd']);
-
-  // unicode escape sequence
-  shouldBe(firstMatch('abc', new RegExp(r"\u0062")), ['b']);
-}
diff --git a/tests/corelib/regexp/regexp_test.dart b/tests/corelib/regexp/regexp_test.dart
deleted file mode 100644
index aeea9c5..0000000
--- a/tests/corelib/regexp/regexp_test.dart
+++ /dev/null
@@ -1,622 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import "package:expect/expect.dart";
-
-void testEscape(str, regex) {
-  assertEquals("foo:bar:baz", str.split(regex).join(":"));
-}
-
-void assertEquals(actual, expected, [message]) =>
-    Expect.equals(actual, expected, message);
-void assertTrue(actual, [message]) => Expect.isTrue(actual, message);
-void assertFalse(actual, [message]) => Expect.isFalse(actual, message);
-void assertThrows(fn) => Expect.throws(fn);
-
-void main() {
-  testEscape("foo\nbar\nbaz", new RegExp(r"\n"));
-  testEscape("foo bar baz", new RegExp(r"\s"));
-  testEscape("foo\tbar\tbaz", new RegExp(r"\s"));
-  testEscape("foo-bar-baz", new RegExp(r"\u002D"));
-
-  // Test containing null char in regexp.
-  var s = '[' + new String.fromCharCode(0) + ']';
-  var re = new RegExp(s);
-  assertEquals(re.allMatches(s).length, 1);
-  assertEquals(re.stringMatch(s), new String.fromCharCode(0));
-
-  final _vmFrame = new RegExp(r'^#\d+\s+(\S.*) \((.+?):(\d+)(?::(\d+))?\)$');
-  final _traceLine =
-      "#0      Trace.Trace.parse (package:stack_trace/src/trace.dart:130:7)";
-  Expect.equals(_vmFrame.firstMatch(_traceLine).group(0), _traceLine);
-
-  // Test the UTF16 case insensitive comparison.
-  re = new RegExp(r"x(a)\1x", caseSensitive: false);
-  Expect.equals(re.firstMatch("xaAx\u1234").group(0), "xaAx");
-
-  // Test strings containing all line separators
-  s = 'aA\nbB\rcC\r\ndD\u2028eE\u2029fF';
-  // any non-newline character at the beginning of a line
-  re = new RegExp(r"^.", multiLine: true);
-  var result = re.allMatches(s).toList();
-  assertEquals(result.length, 6);
-  assertEquals(result[0][0], 'a');
-  assertEquals(result[1][0], 'b');
-  assertEquals(result[2][0], 'c');
-  assertEquals(result[3][0], 'd');
-  assertEquals(result[4][0], 'e');
-  assertEquals(result[5][0], 'f');
-
-  // any non-newline character at the end of a line
-  re = new RegExp(r".$", multiLine: true);
-  result = re.allMatches(s).toList();
-  assertEquals(result.length, 6);
-  assertEquals(result[0][0], 'A');
-  assertEquals(result[1][0], 'B');
-  assertEquals(result[2][0], 'C');
-  assertEquals(result[3][0], 'D');
-  assertEquals(result[4][0], 'E');
-  assertEquals(result[5][0], 'F');
-
-  // *any* character at the beginning of a line
-  re = new RegExp(r"^[^]", multiLine: true);
-  result = re.allMatches(s).toList();
-  assertEquals(result.length, 7);
-  assertEquals(result[0][0], 'a');
-  assertEquals(result[1][0], 'b');
-  assertEquals(result[2][0], 'c');
-  assertEquals(result[3][0], '\n');
-  assertEquals(result[4][0], 'd');
-  assertEquals(result[5][0], 'e');
-  assertEquals(result[6][0], 'f');
-
-  // *any* character at the end of a line
-  re = new RegExp(r"[^]$", multiLine: true);
-  result = re.allMatches(s).toList();
-  assertEquals(result.length, 7);
-  assertEquals(result[0][0], 'A');
-  assertEquals(result[1][0], 'B');
-  assertEquals(result[2][0], 'C');
-  assertEquals(result[3][0], '\r');
-  assertEquals(result[4][0], 'D');
-  assertEquals(result[5][0], 'E');
-  assertEquals(result[6][0], 'F');
-
-  // Some tests from the Mozilla tests, where our behavior used to differ
-  // from SpiderMonkey.
-  // From ecma_3/RegExp/regress-334158.js
-  assertTrue("\x01".contains(new RegExp(r"\ca")));
-  assertFalse("\\ca".contains(new RegExp(r"\ca")));
-  assertFalse("ca".contains(new RegExp(r"\ca")));
-  assertTrue("\\ca".contains(new RegExp(r"\c[a/]")));
-  assertTrue("\\c/".contains(new RegExp(r"\c[a/]")));
-
-  // Test \c in character class
-  re = r"^[\cM]$";
-  assertTrue("\r".contains(new RegExp(re)));
-  assertFalse("M".contains(new RegExp(re)));
-  assertFalse("c".contains(new RegExp(re)));
-  assertFalse("\\".contains(new RegExp(re)));
-  assertFalse("\x03".contains(new RegExp(re))); // I.e., read as \cc
-
-  re = r"^[\c]]$";
-  assertTrue("c]".contains(new RegExp(re)));
-  assertTrue("\\]".contains(new RegExp(re)));
-  assertFalse("\x1d".contains(new RegExp(re))); // ']' & 0x1f
-  assertFalse("\x03]".contains(new RegExp(re))); // I.e., read as \cc
-
-  // Digit control characters are masked in character classes.
-  re = r"^[\c1]$";
-  assertTrue("\x11".contains(new RegExp(re)));
-  assertFalse("\\".contains(new RegExp(re)));
-  assertFalse("c".contains(new RegExp(re)));
-  assertFalse("1".contains(new RegExp(re)));
-
-  // Underscore control character is masked in character classes.
-  re = r"^[\c_]$";
-  assertTrue("\x1f".contains(new RegExp(re)));
-  assertFalse("\\".contains(new RegExp(re)));
-  assertFalse("c".contains(new RegExp(re)));
-  assertFalse("_".contains(new RegExp(re)));
-
-  re = r"^[\c$]$"; // Other characters are interpreted literally.
-  assertFalse("\x04".contains(new RegExp(re)));
-  assertTrue("\\".contains(new RegExp(re)));
-  assertTrue("c".contains(new RegExp(re)));
-  assertTrue(r"$".contains(new RegExp(re)));
-
-  assertTrue("Z[\\cde".contains(new RegExp(r"^[Z-\c-e]*$")));
-
-  // Test that we handle \s and \S correctly on special Unicode characters.
-  re = r"\s";
-  assertTrue("\u2028".contains(new RegExp(re)));
-  assertTrue("\u2029".contains(new RegExp(re)));
-  assertTrue("\uFEFF".contains(new RegExp(re)));
-
-  re = r"\S";
-  assertFalse("\u2028".contains(new RegExp(re)));
-  assertFalse("\u2029".contains(new RegExp(re)));
-  assertFalse("\uFEFF".contains(new RegExp(re)));
-
-  // Test that we handle \s and \S correctly inside some bizarre
-  // character classes.
-  re = r"[\s-:]";
-  assertTrue('-'.contains(new RegExp(re)));
-  assertTrue(':'.contains(new RegExp(re)));
-  assertTrue(' '.contains(new RegExp(re)));
-  assertTrue('\t'.contains(new RegExp(re)));
-  assertTrue('\n'.contains(new RegExp(re)));
-  assertFalse('a'.contains(new RegExp(re)));
-  assertFalse('Z'.contains(new RegExp(re)));
-
-  re = r"[\S-:]";
-  assertTrue('-'.contains(new RegExp(re)));
-  assertTrue(':'.contains(new RegExp(re)));
-  assertFalse(' '.contains(new RegExp(re)));
-  assertFalse('\t'.contains(new RegExp(re)));
-  assertFalse('\n'.contains(new RegExp(re)));
-  assertTrue('a'.contains(new RegExp(re)));
-  assertTrue('Z'.contains(new RegExp(re)));
-
-  re = r"[^\s-:]";
-  assertFalse('-'.contains(new RegExp(re)));
-  assertFalse(':'.contains(new RegExp(re)));
-  assertFalse(' '.contains(new RegExp(re)));
-  assertFalse('\t'.contains(new RegExp(re)));
-  assertFalse('\n'.contains(new RegExp(re)));
-  assertTrue('a'.contains(new RegExp(re)));
-  assertTrue('Z'.contains(new RegExp(re)));
-
-  re = r"[^\S-:]";
-  assertFalse('-'.contains(new RegExp(re)));
-  assertFalse(':'.contains(new RegExp(re)));
-  assertTrue(' '.contains(new RegExp(re)));
-  assertTrue('\t'.contains(new RegExp(re)));
-  assertTrue('\n'.contains(new RegExp(re)));
-  assertFalse('a'.contains(new RegExp(re)));
-  assertFalse('Z'.contains(new RegExp(re)));
-
-  re = r"[\s]";
-  assertFalse('-'.contains(new RegExp(re)));
-  assertFalse(':'.contains(new RegExp(re)));
-  assertTrue(' '.contains(new RegExp(re)));
-  assertTrue('\t'.contains(new RegExp(re)));
-  assertTrue('\n'.contains(new RegExp(re)));
-  assertFalse('a'.contains(new RegExp(re)));
-  assertFalse('Z'.contains(new RegExp(re)));
-
-  re = r"[^\s]";
-  assertTrue('-'.contains(new RegExp(re)));
-  assertTrue(':'.contains(new RegExp(re)));
-  assertFalse(' '.contains(new RegExp(re)));
-  assertFalse('\t'.contains(new RegExp(re)));
-  assertFalse('\n'.contains(new RegExp(re)));
-  assertTrue('a'.contains(new RegExp(re)));
-  assertTrue('Z'.contains(new RegExp(re)));
-
-  re = r"[\S]";
-  assertTrue('-'.contains(new RegExp(re)));
-  assertTrue(':'.contains(new RegExp(re)));
-  assertFalse(' '.contains(new RegExp(re)));
-  assertFalse('\t'.contains(new RegExp(re)));
-  assertFalse('\n'.contains(new RegExp(re)));
-  assertTrue('a'.contains(new RegExp(re)));
-  assertTrue('Z'.contains(new RegExp(re)));
-
-  re = r"[^\S]";
-  assertFalse('-'.contains(new RegExp(re)));
-  assertFalse(':'.contains(new RegExp(re)));
-  assertTrue(' '.contains(new RegExp(re)));
-  assertTrue('\t'.contains(new RegExp(re)));
-  assertTrue('\n'.contains(new RegExp(re)));
-  assertFalse('a'.contains(new RegExp(re)));
-  assertFalse('Z'.contains(new RegExp(re)));
-
-  re = r"[\s\S]";
-  assertTrue('-'.contains(new RegExp(re)));
-  assertTrue(':'.contains(new RegExp(re)));
-  assertTrue(' '.contains(new RegExp(re)));
-  assertTrue('\t'.contains(new RegExp(re)));
-  assertTrue('\n'.contains(new RegExp(re)));
-  assertTrue('a'.contains(new RegExp(re)));
-  assertTrue('Z'.contains(new RegExp(re)));
-
-  re = r"[^\s\S]";
-  assertFalse('-'.contains(new RegExp(re)));
-  assertFalse(':'.contains(new RegExp(re)));
-  assertFalse(' '.contains(new RegExp(re)));
-  assertFalse('\t'.contains(new RegExp(re)));
-  assertFalse('\n'.contains(new RegExp(re)));
-  assertFalse('a'.contains(new RegExp(re)));
-  assertFalse('Z'.contains(new RegExp(re)));
-
-  // First - is treated as range operator, second as literal minus.
-  // This follows the specification in parsing, but doesn't throw on
-  // the \s at the beginning of the range.
-  re = r"[\s-0-9]";
-  assertTrue(' '.contains(new RegExp(re)));
-  assertTrue('\xA0'.contains(new RegExp(re)));
-  assertTrue('-'.contains(new RegExp(re)));
-  assertTrue('0'.contains(new RegExp(re)));
-  assertTrue('9'.contains(new RegExp(re)));
-  assertFalse('1'.contains(new RegExp(re)));
-
-  // Test beginning and end of line assertions with or without the
-  // multiline flag.
-  re = r"^\d+";
-  assertFalse("asdf\n123".contains(new RegExp(re)));
-  re = new RegExp(r"^\d+", multiLine: true);
-  assertTrue("asdf\n123".contains(re));
-
-  re = r"\d+$";
-  assertFalse("123\nasdf".contains(new RegExp(re)));
-  re = new RegExp(r"\d+$", multiLine: true);
-  assertTrue("123\nasdf".contains(re));
-
-  // Test that empty matches are handled correctly for multiline global
-  // regexps.
-  re = new RegExp(r"^(.*)", multiLine: true);
-  assertEquals(3, re.allMatches("a\n\rb").length);
-  assertEquals("*a\n*b\r*c\n*\r*d\r*\n*e",
-      "a\nb\rc\n\rd\r\ne".replaceAllMapped(re, (Match m) => "*${m.group(1)}"));
-
-  // Test that empty matches advance one character
-  re = new RegExp("");
-  assertEquals("xAx", "A".replaceAll(re, "x"));
-  assertEquals(3, new String.fromCharCode(161).replaceAll(re, "x").length);
-
-  // Check for lazy RegExp literal creation
-  lazyLiteral(doit) {
-    if (doit)
-      return "".replaceAll(new RegExp(r"foo(", caseSensitive: false), "");
-    return true;
-  }
-
-  assertTrue(lazyLiteral(false));
-  assertThrows(() => lazyLiteral(true));
-
-  // Check $01 and $10
-  re = new RegExp("(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)");
-  assertEquals(
-      "t", "123456789t".replaceAllMapped(re, (Match m) => m.group(10)));
-  assertEquals(
-      "15", "123456789t".replaceAllMapped(re, (Match m) => "${m.group(1)}5"));
-  assertEquals("1", "123456789t".replaceAllMapped(re, (Match m) => m.group(1)));
-
-  assertFalse("football".contains(new RegExp(r"()foo$\1")), "football1");
-  assertFalse("football".contains(new RegExp(r"foo$(?=ball)")), "football2");
-  assertFalse("football".contains(new RegExp(r"foo$(?!bar)")), "football3");
-  assertTrue("foo".contains(new RegExp(r"()foo$\1")), "football4");
-  assertTrue("foo".contains(new RegExp(r"foo$(?=(ball)?)")), "football5");
-  assertTrue("foo".contains(new RegExp(r"()foo$(?!bar)")), "football6");
-  assertFalse("football".contains(new RegExp(r"(x?)foo$\1")), "football7");
-  assertFalse("football".contains(new RegExp(r"foo$(?=ball)")), "football8");
-  assertFalse("football".contains(new RegExp(r"foo$(?!bar)")), "football9");
-  assertTrue("foo".contains(new RegExp(r"(x?)foo$\1")), "football10");
-  assertTrue("foo".contains(new RegExp(r"foo$(?=(ball)?)")), "football11");
-  assertTrue("foo".contains(new RegExp(r"foo$(?!bar)")), "football12");
-
-  // Check that the back reference has two successors.  See
-  // BackReferenceNode::PropagateForward.
-  assertFalse('foo'.contains(new RegExp(r"f(o)\b\1")));
-  assertTrue('foo'.contains(new RegExp(r"f(o)\B\1")));
-
-  // Back-reference, ignore case:
-  // ASCII
-  assertEquals(
-      "a",
-      new RegExp(r"x(a)\1x", caseSensitive: false).firstMatch("xaAx").group(1),
-      "backref-ASCII");
-  assertFalse("xaaaaa".contains(new RegExp(r"x(...)\1", caseSensitive: false)),
-      "backref-ASCII-short");
-  assertTrue("xx".contains(new RegExp(r"x((?:))\1\1x", caseSensitive: false)),
-      "backref-ASCII-empty");
-  assertTrue(
-      "xabcx".contains(new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)),
-      "backref-ASCII-uncaptured");
-  assertTrue(
-      "xabcABCx"
-          .contains(new RegExp(r"x(?:...|(...))\1x", caseSensitive: false)),
-      "backref-ASCII-backtrack");
-  assertEquals(
-      "aBc",
-      new RegExp(r"x(...)\1\1x", caseSensitive: false)
-          .firstMatch("xaBcAbCABCx")
-          .group(1),
-      "backref-ASCII-twice");
-
-  for (var i = 0; i < 128; i++) {
-    var testName = "backref-ASCII-char-$i,,${i^0x20}";
-    var test = new String.fromCharCodes([i, i ^ 0x20])
-        .contains(new RegExp(r"^(.)\1$", caseSensitive: false));
-    if (('A'.codeUnitAt(0) <= i && i <= 'Z'.codeUnitAt(0)) ||
-        ('a'.codeUnitAt(0) <= i && i <= 'z'.codeUnitAt(0))) {
-      assertTrue(test, testName);
-    } else {
-      assertFalse(test, testName);
-    }
-  }
-
-  assertFalse('foo'.contains(new RegExp(r"f(o)$\1")), "backref detects at_end");
-
-  // Check decimal escapes doesn't overflow.
-  // (Note: \214 is interpreted as octal).
-  assertEquals(
-      "\x8c7483648",
-      new RegExp(r"\2147483648").firstMatch("\x8c7483648").group(0),
-      "Overflow decimal escape");
-
-  // Check numbers in quantifiers doesn't overflow and doesn't throw on
-  // too large numbers.
-  assertFalse(
-      'b'.contains(
-          new RegExp(r"a{111111111111111111111111111111111111111111111}")),
-      "overlarge1");
-  assertFalse(
-      'b'.contains(
-          new RegExp(r"a{999999999999999999999999999999999999999999999}")),
-      "overlarge2");
-  assertFalse(
-      'b'.contains(
-          new RegExp(r"a{1,111111111111111111111111111111111111111111111}")),
-      "overlarge3");
-  assertFalse(
-      'b'.contains(
-          new RegExp(r"a{1,999999999999999999999999999999999999999999999}")),
-      "overlarge4");
-  assertFalse('b'.contains(new RegExp(r"a{2147483648}")), "overlarge5");
-  assertFalse('b'.contains(new RegExp(r"a{21474836471}")), "overlarge6");
-  assertFalse('b'.contains(new RegExp(r"a{1,2147483648}")), "overlarge7");
-  assertFalse('b'.contains(new RegExp(r"a{1,21474836471}")), "overlarge8");
-  assertFalse(
-      'b'.contains(new RegExp(r"a{2147483648,2147483648}")), "overlarge9");
-  assertFalse(
-      'b'.contains(new RegExp(r"a{21474836471,21474836471}")), "overlarge10");
-  assertFalse('b'.contains(new RegExp(r"a{2147483647}")), "overlarge11");
-  assertFalse('b'.contains(new RegExp(r"a{1,2147483647}")), "overlarge12");
-  assertTrue('a'.contains(new RegExp(r"a{1,2147483647}")), "overlarge13");
-  assertFalse(
-      'a'.contains(new RegExp(r"a{2147483647,2147483647}")), "overlarge14");
-
-  // Check that we don't read past the end of the string.
-  assertFalse('b'.contains(new RegExp(r"f")));
-  assertFalse('x'.contains(new RegExp(r"[abc]f")));
-  assertFalse('xa'.contains(new RegExp(r"[abc]f")));
-  assertFalse('x'.contains(new RegExp(r"[abc]<")));
-  assertFalse('xa'.contains(new RegExp(r"[abc]<")));
-  assertFalse('b'.contains(new RegExp(r"f", caseSensitive: false)));
-  assertFalse('x'.contains(new RegExp(r"[abc]f", caseSensitive: false)));
-  assertFalse('xa'.contains(new RegExp(r"[abc]f", caseSensitive: false)));
-  assertFalse('x'.contains(new RegExp(r"[abc]<", caseSensitive: false)));
-  assertFalse('xa'.contains(new RegExp(r"[abc]<", caseSensitive: false)));
-  assertFalse('x'.contains(new RegExp(r"f[abc]")));
-  assertFalse('xa'.contains(new RegExp(r"f[abc]")));
-  assertFalse('x'.contains(new RegExp(r"<[abc]")));
-  assertFalse('xa'.contains(new RegExp(r"<[abc]")));
-  assertFalse('x'.contains(new RegExp(r"f[abc]", caseSensitive: false)));
-  assertFalse('xa'.contains(new RegExp(r"f[abc]", caseSensitive: false)));
-  assertFalse('x'.contains(new RegExp(r"<[abc]", caseSensitive: false)));
-  assertFalse('xa'.contains(new RegExp(r"<[abc]", caseSensitive: false)));
-
-  // Test that merging of quick test masks gets it right.
-  assertFalse('x7%%y'.contains(new RegExp(r"x([0-7]%%x|[0-6]%%y)")), 'qt');
-  assertFalse(
-      'xy7%%%y'
-          .contains(new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")),
-      'qt2');
-  assertFalse(
-      'xy%%%y'
-          .contains(new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")),
-      'qt3');
-  assertFalse(
-      'xy7%%%y'.contains(new RegExp(r"()x\1y([0-7]%%%x|[0-6]%%%y)")), 'qt4');
-  assertFalse(
-      'xy%%%y'
-          .contains(new RegExp(r"()x\1(y([0-7]%%%x|[0-6]%%%y)|dkjasldkas)")),
-      'qt5');
-  assertFalse(
-      'xy7%%%y'.contains(new RegExp(r"()x\1y([0-7]%%%x|[0-6]%%%y)")), 'qt6');
-  assertFalse(
-      'xy7%%%y'.contains(new RegExp(r"xy([0-7]%%%x|[0-6]%%%y)")), 'qt7');
-  assertFalse('x7%%%y'.contains(new RegExp(r"x([0-7]%%%x|[0-6]%%%y)")), 'qt8');
-
-  // Don't hang on this one.
-  "".contains(new RegExp(r"[^\xfe-\xff]*"));
-
-  var longbuffer = new StringBuffer("a");
-  for (var i = 0; i < 100000; i++) {
-    longbuffer.write("a?");
-  }
-  var long = longbuffer.toString();
-
-  // Don't crash on this one, but maybe throw an exception.
-  try {
-    new RegExp(long).allMatches("a");
-  } catch (e) {
-    assertTrue(e.toString().indexOf("Stack overflow") >= 0, "overflow");
-  }
-
-  // Test boundary-checks.
-  void assertRegExpTest(re, input, test) {
-    assertEquals(
-        test, input.contains(new RegExp(re)), "test:" + re + ":" + input);
-  }
-
-  assertRegExpTest(r"b\b", "b", true);
-  assertRegExpTest(r"b\b$", "b", true);
-  assertRegExpTest(r"\bb", "b", true);
-  assertRegExpTest(r"^\bb", "b", true);
-  assertRegExpTest(r",\b", ",", false);
-  assertRegExpTest(r",\b$", ",", false);
-  assertRegExpTest(r"\b,", ",", false);
-  assertRegExpTest(r"^\b,", ",", false);
-
-  assertRegExpTest(r"b\B", "b", false);
-  assertRegExpTest(r"b\B$", "b", false);
-  assertRegExpTest(r"\Bb", "b", false);
-  assertRegExpTest(r"^\Bb", "b", false);
-  assertRegExpTest(r",\B", ",", true);
-  assertRegExpTest(r",\B$", ",", true);
-  assertRegExpTest(r"\B,", ",", true);
-  assertRegExpTest(r"^\B,", ",", true);
-
-  assertRegExpTest(r"b\b", "b,", true);
-  assertRegExpTest(r"b\b", "ba", false);
-  assertRegExpTest(r"b\B", "b,", false);
-  assertRegExpTest(r"b\B", "ba", true);
-
-  assertRegExpTest(r"b\Bb", "bb", true);
-  assertRegExpTest(r"b\bb", "bb", false);
-
-  assertRegExpTest(r"b\b[,b]", "bb", false);
-  assertRegExpTest(r"b\B[,b]", "bb", true);
-  assertRegExpTest(r"b\b[,b]", "b,", true);
-  assertRegExpTest(r"b\B[,b]", "b,", false);
-
-  assertRegExpTest(r"[,b]\bb", "bb", false);
-  assertRegExpTest(r"[,b]\Bb", "bb", true);
-  assertRegExpTest(r"[,b]\bb", ",b", true);
-  assertRegExpTest(r"[,b]\Bb", ",b", false);
-
-  assertRegExpTest(r"[,b]\b[,b]", "bb", false);
-  assertRegExpTest(r"[,b]\B[,b]", "bb", true);
-  assertRegExpTest(r"[,b]\b[,b]", ",b", true);
-  assertRegExpTest(r"[,b]\B[,b]", ",b", false);
-  assertRegExpTest(r"[,b]\b[,b]", "b,", true);
-  assertRegExpTest(r"[,b]\B[,b]", "b,", false);
-
-  // Skipped tests from V8:
-
-  // Test that caching of result doesn't share result objects.
-  // More iterations increases the chance of hitting a GC.
-
-  // Test that we perform the spec required conversions in the correct order.
-
-  // Check that properties of RegExp have the correct permissions.
-
-  // Check that end-anchored regexps are optimized correctly.
-  re = r"(?:a|bc)g$";
-  assertTrue("ag".contains(new RegExp(re)));
-  assertTrue("bcg".contains(new RegExp(re)));
-  assertTrue("abcg".contains(new RegExp(re)));
-  assertTrue("zimbag".contains(new RegExp(re)));
-  assertTrue("zimbcg".contains(new RegExp(re)));
-
-  assertFalse("g".contains(new RegExp(re)));
-  assertFalse("".contains(new RegExp(re)));
-
-  // Global regexp (non-zero start).
-  re = r"(?:a|bc)g$";
-  assertTrue("ag".contains(new RegExp(re)));
-  // Near start of string.
-  assertTrue(new RegExp(re).allMatches("zimbag", 1).isNotEmpty);
-  // At end of string.
-  assertTrue(new RegExp(re).allMatches("zimbag", 6).isEmpty);
-  // Near end of string.
-  assertTrue(new RegExp(re).allMatches("zimbag", 5).isEmpty);
-  assertTrue(new RegExp(re).allMatches("zimbag", 4).isNotEmpty);
-
-  // Anchored at both ends.
-  re = r"^(?:a|bc)g$";
-  assertTrue("ag".contains(new RegExp(re)));
-  assertTrue(new RegExp(re).allMatches("ag", 1).isEmpty);
-  assertTrue(new RegExp(re).allMatches("zag", 1).isEmpty);
-
-  // Long max_length of RegExp.
-  re = r"VeryLongRegExp!{1,1000}$";
-  assertTrue("BahoolaVeryLongRegExp!!!!!!".contains(new RegExp(re)));
-  assertFalse("VeryLongRegExp".contains(new RegExp(re)));
-  assertFalse("!".contains(new RegExp(re)));
-
-  // End anchor inside disjunction.
-  re = r"(?:a$|bc$)";
-  assertTrue("a".contains(new RegExp(re)));
-  assertTrue("bc".contains(new RegExp(re)));
-  assertTrue("abc".contains(new RegExp(re)));
-  assertTrue("zimzamzumba".contains(new RegExp(re)));
-  assertTrue("zimzamzumbc".contains(new RegExp(re)));
-  assertFalse("c".contains(new RegExp(re)));
-  assertFalse("".contains(new RegExp(re)));
-
-  // Only partially anchored.
-  re = r"(?:a|bc$)";
-  assertTrue("a".contains(new RegExp(re)));
-  assertTrue("bc".contains(new RegExp(re)));
-  assertEquals("a", new RegExp(re).firstMatch("abc").group(0));
-  assertEquals(4, new RegExp(re).firstMatch("zimzamzumba").start);
-  assertEquals("bc", new RegExp(re).firstMatch("zimzomzumbc").group(0));
-  assertFalse("c".contains(new RegExp(re)));
-  assertFalse("".contains(new RegExp(re)));
-
-  // Valid syntax in ES5.
-  re = new RegExp("(?:x)*");
-  re = new RegExp("(x)*");
-
-  // Syntax extension relative to ES5, for matching JSC (and ES3).
-  // Shouldn't throw.
-  re = new RegExp("(?=x)*");
-  re = new RegExp("(?!x)*");
-
-  // Should throw. Shouldn't hit asserts in debug mode.
-  assertThrows(() => new RegExp('(*)'));
-  assertThrows(() => new RegExp('(?:*)'));
-  assertThrows(() => new RegExp('(?=*)'));
-  assertThrows(() => new RegExp('(?!*)'));
-
-  // Test trimmed regular expression for RegExp.test().
-  assertTrue("abc".contains(new RegExp(r".*abc")));
-  assertFalse("q".contains(new RegExp(r".*\d+")));
-
-  // Tests skipped from V8:
-  // Test that RegExp.prototype.toString() throws TypeError for
-  // incompatible receivers (ES5 section 15.10.6 and 15.10.6.4).
-
-  testSticky();
-}
-
-testSticky() {
-  var re = new RegExp(r"foo.bar");
-  Expect.isNotNull(re.matchAsPrefix("foo_bar", 0));
-  Expect.isNull(re.matchAsPrefix("..foo_bar", 0));
-  Expect.isNotNull(re.matchAsPrefix("..foo_bar", 2));
-
-  re = new RegExp(r"^foo");
-  Expect.isNotNull(re.matchAsPrefix("foobar", 0));
-  Expect.isNull(re.matchAsPrefix("..foo", 0));
-  Expect.isNull(re.matchAsPrefix("..foo", 2));
-
-  re = new RegExp(r"^foo", multiLine: true);
-  Expect.isNotNull(re.matchAsPrefix("foobar", 0));
-  Expect.isNull(re.matchAsPrefix("..\nfoo", 0));
-  Expect.isNotNull(re.matchAsPrefix("..\nfoo", 3));
-  Expect.isNull(re.matchAsPrefix("..\nfoofoo", 6));
-
-  re = new RegExp(r"bar$");
-  Expect.isNull(re.matchAsPrefix("foobar", 0));
-  Expect.isNotNull(re.matchAsPrefix("foobar", 3));
-}
diff --git a/tests/corelib/regexp/regress-6-9-regexp_test.dart b/tests/corelib/regexp/regress-6-9-regexp_test.dart
deleted file mode 100644
index 3fbef87..0000000
--- a/tests/corelib/regexp/regress-6-9-regexp_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2009 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // Check that the perfect mask check isn't overly optimistic.
-
-  assertFalse(new RegExp(r"[6-9]").hasMatch('2'));
-}
diff --git a/tests/corelib/regexp/regress-regexp-codeflush_test.dart b/tests/corelib/regexp/regress-regexp-codeflush_test.dart
deleted file mode 100644
index 03b0804..0000000
--- a/tests/corelib/regexp/regress-regexp-codeflush_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2011 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // Flags: --gc_global
-
-  // Regression test for regexp that has multiple matches and which
-  // internally calls RegExpImpl::IrregexpExecOnce more than once without
-  // ensuring that the regexp is compiled.
-  // This can create a crash if the code was exchanged with the sweep
-  // generation (for code flushing support) in GC during the matching.
-
-  var re = new RegExp('(s)');
-
-  dynamic foo(Match m) {
-    return "42";
-  }
-
-  // Run enough times to get a number of GC's (all mark sweep because of the
-  // --gc_global) flag.
-  for (var i = 0; i < 10; i++) {
-    // Make a long string with plenty of matches for re.
-    var x = "s foo s bar s foo s bar s";
-    x = x + x;
-    x = x + x;
-    x = x + x;
-    x = x + x;
-    x = x + x;
-    x = x + x;
-    x = x + x;
-    x.replaceAllMapped(re, foo);
-  }
-}
diff --git a/tests/corelib/regexp/regress-regexp-construct-result_test.dart b/tests/corelib/regexp/regress-regexp-construct-result_test.dart
deleted file mode 100644
index ac9c032..0000000
--- a/tests/corelib/regexp/regress-regexp-construct-result_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // Create a huge regexp with many alternative capture groups, most of
-  // which do not capture anything, but the corresponding capture slot
-  // in the result object has to exist, even though filled with null.
-  // Having a large result array helps stressing GC.
-
-  var num_captures = 1000;
-  var regexp_string = "(a)";
-  for (var i = 0; i < num_captures - 1; i++) {
-    regexp_string += "|(b)";
-  }
-  var regexp = new RegExp(regexp_string);
-
-  for (var i = 0; i < 10; i++) {
-    var matches = regexp.firstMatch("a");
-    var count = 0;
-    assertEquals(num_captures + 1, matches.groupCount + 1);
-  }
-}
diff --git a/tests/corelib/regexp/repeat-match-waldemar_test.dart b/tests/corelib/regexp/repeat-match-waldemar_test.dart
deleted file mode 100644
index 3adc775..0000000
--- a/tests/corelib/regexp/repeat-match-waldemar_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // "Some test cases identified by Waldemar Horwat in response to this bug:
-  // https:new RegExp(r"/bugs.webkit.org")show_bug.cgi?id=48101"
-
-  shouldBe(new RegExp(r"(?:a*?){2,}").firstMatch("aa"), ["aa"]);
-  shouldBe(new RegExp(r"(?:a*?){2,}").firstMatch("a"), ["a"]);
-  shouldBe(new RegExp(r"(?:a*?){2,}").firstMatch(""), [""]);
-
-  shouldBe(new RegExp(r"(?:a*?)").firstMatch("aa"), [""]);
-  shouldBe(new RegExp(r"(?:a*?)").firstMatch("a"), [""]);
-  shouldBe(new RegExp(r"(?:a*?)").firstMatch(""), [""]);
-
-  shouldBe(new RegExp(r"(?:a*?)(?:a*?)(?:a*?)").firstMatch("aa"), [""]);
-  shouldBe(new RegExp(r"(?:a*?)(?:a*?)(?:a*?)").firstMatch("a"), [""]);
-  shouldBe(new RegExp(r"(?:a*?)(?:a*?)(?:a*?)").firstMatch(""), [""]);
-
-  shouldBe(new RegExp(r"(?:a*?){2}").firstMatch("aa"), [""]);
-  shouldBe(new RegExp(r"(?:a*?){2}").firstMatch("a"), [""]);
-  shouldBe(new RegExp(r"(?:a*?){2}").firstMatch(""), [""]);
-
-  shouldBe(new RegExp(r"(?:a*?){2,3}").firstMatch("aa"), ["a"]);
-  shouldBe(new RegExp(r"(?:a*?){2,3}").firstMatch("a"), ["a"]);
-  shouldBe(new RegExp(r"(?:a*?){2,3}").firstMatch(""), [""]);
-
-  shouldBe(new RegExp(r"(?:a*?)?").firstMatch("aa"), ["a"]);
-  shouldBe(new RegExp(r"(?:a*?)?").firstMatch("a"), ["a"]);
-  shouldBe(new RegExp(r"(?:a*?)?").firstMatch(""), [""]);
-
-  shouldBe(new RegExp(r"(?:a*?)*").firstMatch("aa"), ["aa"]);
-  shouldBe(new RegExp(r"(?:a*?)*").firstMatch("a"), ["a"]);
-  shouldBe(new RegExp(r"(?:a*?)*").firstMatch(""), [""]);
-}
diff --git a/tests/corelib/regexp/results-cache_test.dart b/tests/corelib/regexp/results-cache_test.dart
deleted file mode 100644
index 0ef0f40..0000000
--- a/tests/corelib/regexp/results-cache_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2012 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  // Long string to trigger caching.
-  var string = """Friends, Romans, countrymen, lend me your ears!  
-  I come to bury Caesar, not to praise him.        
-  The evil that men do lives after them,           
-  The good is oft interred with their bones;       
-  So let it be with Caesar. The noble Brutus       
-  Hath told you Caesar was ambitious;              
-  If it were so, it was a grievous fault,          
-  And grievously hath Caesar answer'd it.          
-  Here, under leave of Brutus and the rest-        
-  For Brutus is an honorable man;                  
-  So are they all, all honorable men-              
-  Come I to speak in Caesar's funeral.             
-  He was my friend, faithful and just to me;       
-  But Brutus says he was ambitious,                
-  And Brutus is an honorable man.                  
-  He hath brought many captives home to Rome,      
-  Whose ransoms did the general coffers fill.      
-  Did this in Caesar seem ambitious?               
-  When that the poor have cried, Caesar hath wept; 
-  Ambition should be made of sterner stuff:        
-  Yet Brutus says he was ambitious,                
-  And Brutus is an honorable man.                  
-  You all did see that on the Lupercal             
-  I thrice presented him a kingly crown,           
-  Which he did thrice refuse. Was this ambition?   
-  Yet Brutus says he was ambitious,                
-  And sure he is an honorable man.                 
-  I speak not to disprove what Brutus spoke,       
-  But here I am to speak what I do know.           
-  You all did love him once, not without cause;    
-  What cause withholds you then to mourn for him?  
-  O judgement, thou art fled to brutish beasts,    
-  And men have lost their reason. Bear with me;    
-  My heart is in the coffin there with Caesar,     
-  And I must pause till it come back to me.""";
-
-  var replaced = string.replaceAll(new RegExp(r"\b\w+\b"), "foo");
-  for (var i = 0; i < 3; i++) {
-    assertEquals(replaced, string.replaceAll(new RegExp(r"\b\w+\b"), "foo"));
-  }
-
-  // Check that the result is in a COW array.
-  var words = string.split(" ");
-  assertEquals("Friends,", words[0]);
-  words[0] = "Enemies,";
-  words = string.split(" ");
-  assertEquals("Friends,", words[0]);
-}
diff --git a/tests/corelib/regexp/stack-overflow2_test.dart b/tests/corelib/regexp/stack-overflow2_test.dart
deleted file mode 100644
index 9b61709..0000000
--- a/tests/corelib/regexp/stack-overflow2_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2014, 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 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-// Failing tests extracted from pcre_test.dart. Large generated functions
-// cause a stack overflow in DiscoverBlocks().
-
-void main() {
-  var res149 = new RegExp(
-      r"(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)",
-      caseSensitive: false);
-
-  assertToStringEquals(
-      "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,38 ,39 ,40 ,41 ,42 ,43 ,44 ,45 ,46 ,47 ,48 ,49 ,50 ,51 ,52 ,53 ,54 ,55 ,56 ,57 ,58 ,59 ,60 ,61 ,62 ,63 ,64 ,65 ,66 ,67 ,68 ,69 ,70 ,71 ,72 ,73 ,74 ,75 ,76 ,77 ,78 ,79 ,80 ,81 ,82 ,83 ,84 ,85 ,86 ,87 ,88 ,89 ,90 ,91 ,92 ,93 ,94 ,95 ,96 ,97 ,98 ,99 ,100 ,101 ,102 ,103 ,104 ,105 ,106 ,107 ,108 ,109 ,110 ,111 ,112 ,113 ,114 ,115 ,116 ,117 ,118 ,119 ,120 ,121 ,122 ,123 ,124 ,125 ,126 ,127 ,128 ,129 ,130 ,131 ,132 ,133 ,134 ,135 ,136 ,137 ,138 ,139 ,140 ,141 ,142 ,143 ,144 ,145 ,146 ,147 ,148 ,149 ,150 ,151 ,152 ,153 ,154 ,155 ,156 ,157 ,158 ,159 ,160 ,161 ,162 ,163 ,164 ,165 ,166 ,167 ,168 ,169 ,170 ,171 ,172 ,173 ,174 ,175 ,176 ,177 ,178 ,179 ,180 ,181 ,182 ,183 ,184 ,185 ,186 ,187 ,188 ,189 ,190 ,191 ,192 ,193 ,194 ,195 ,196 ,197 ,198 ,199 ,200 ,201 ,202 ,203 ,204 ,205 ,206 ,207 ,208 ,209 ,210 ,211 ,212 ,213 ,214 ,215 ,216 ,217 ,218 ,219 ,220 ,221 ,222 ,223 ,224 ,225 ,226 ,227 ,228 ,229 ,230 ,231 ,232 ,233 ,234 ,235 ,236 ,237 ,238 ,239 ,240 ,241 ,242 ,243 ,244 ,245 ,246 ,247 ,248 ,249 ,250 ,251 ,252 ,253 ,254 ,255 ,256 ,257 ,258 ,259 ,260 ,261 ,262 ,263 ,264 ,265 ,266 ,267 ,268 ,269 ,ABC,ABC",
-      res149.firstMatch(
-          "O900 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 ABC ABC"),
-      242);
-}
diff --git a/tests/corelib/regexp/stack-overflow_test.dart b/tests/corelib/regexp/stack-overflow_test.dart
deleted file mode 100644
index e00466f..0000000
--- a/tests/corelib/regexp/stack-overflow_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=8870">bug 8870</a>: Crash typing in Yahoo auto-complete widget.');
-
-  var re = new RegExp(
-      r'^(\s+|[,:{}\[\]]|"(\\["\\\/bfnrtu]|[^\u0000-\u001f"\\]+)*"|-?\d+(\.\d*)?([eE][+-]?\d+)?|true|false|null)+$');
-
-  var result = re.firstMatch(
-      '{"ResultSet":{"totalResultsAvailable":"101000000","totalResultsReturned":100,"firstResultPosition":1,"Result":[{"Title":"Solar Eclipses of Saros 132","Summary":"Solar Eclipses of Saros 132 Solar Eclipses of Saros 132 The periodicity and recurrence of solar (and lunar) eclipses is governed by the Saros cycle, a period of approximately 6,585. 3 days (18 years 11 days 8 hours). When two eclipses are ...","Url":"http:\\/\\/sunearth.gsfc.nasa.gov\\/eclipse\\/SEsaros\\/SEsaros132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBUBzdmMwF;_ylu=X3oDMTB2cXVjNTM5BGNvbG8DdwRsA1dTMQRwb3MDMQRzZWMDc3IEdnRpZAM-\\/SIG=19ip3vo9u\\/EXP=1147592336\\/**http%3a\\/\\/rdrw1.yahoo.com\\/click%3fu=http%3a\\/\\/sunearth.gsfc.nasa.gov\\/eclipse\\/SEsaros\\/SEsaros132.html%26y=0405DC60F30D6DD673%26i=482%26c=15685%26q=02%255ESSHPM%255BL7.,-6%26e=utf-8%26r=0%26d=wow%7eWBSV-en-us%26n=3O6KG7JU5PIK8T7I%26s=6%26t=%26m=44658D10%26x=05A6B5FDC2F29725CD6EE467684E0FE76D","ModificationDate":1146207600,"MimeType":"text\\/html"},{"Title":"Psalms 132 -Matthew Henry\'s Commentary - Bible Software by johnhurt.com","Summary":"Psalms 132 - Matthew Henry Commentary - Bible Software by johnhurt.com ... Henry\'s Psalms 131. Psalms 132. Outline of Psalms 132. David\'s care for the ark ...","Url":"http:\\/\\/www.htmlbible.com\\/kjv30\\/henry\\/H19C132.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBVhzdmMwF;_ylu=X3oDMTB2ZjQ4dDExBGNvbG8DdwRsA1dTMQRwb3MDMgRzZWMDc3IEdnRpZAM-\\/SIG=1246fjpfq\\/EXP=1147592336\\/**http%3a\\/\\/www.htmlbible.com\\/kjv30\\/henry\\/H19C132.htm","ModificationDate":1015660800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBWxzdmMwF;_ylu=X3oDMTBwZG5hOWwzBGNvbG8DdwRwb3MDMgRzZWMDc3IEdnRpZAM-\\/SIG=16llm3b1a\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.htmlbible.com\\/kjv30\\/henry\\/H19C132.htm%26w=132%26d=XlIIG0aqMlsm%26icp=1%26.intl=us","Size":"4160"}},{"Title":"General requirements. - 1910.132","Summary":"General%20requirements.%20-%201910.132 ... Regulations (Standards - 29 CFR) General requirements. - 1910.132 ... of any part of the body through absorption, inhalation or physical contact. 1910.132(b) Employee-owned equipment ...","Url":"http:\\/\\/www.osha.gov\\/pls\\/oshaweb\\/owadisp.show_document?p_table=STANDARDS&p_id=9777","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBXRzdmMwF;_ylu=X3oDMTB2M3MzdmZoBGNvbG8DdwRsA1dTMQRwb3MDMwRzZWMDc3IEdnRpZAM-\\/SIG=13916ebti\\/EXP=1147592336\\/**http%3a\\/\\/www.osha.gov\\/pls\\/oshaweb\\/owadisp.show_document%3fp_table=STANDARDS%26p_id=9777","ModificationDate":1147330800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBYhzdmMwF;_ylu=X3oDMTBwZ2dpZ2ZkBGNvbG8DdwRwb3MDMwRzZWMDc3IEdnRpZAM-\\/SIG=186osem1n\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.osha.gov\\/pls\\/oshaweb\\/owadisp.show_document%253Fp_table%253DSTANDARDS%2526p_id%253D9777%26w=132%26d=Ujn5sEaqMw88%26icp=1%26.intl=us","Size":"29922"}},{"Title":"USCCB - NAB - Psalm 132","Summary":"Chapter 132. 1. 1 A song of ascents. 2 LORD, remember David and all his anxious care; 2. 3 How he swore an oath to the LORD, vowed to the Mighty One of Jacob: 3. \\"I will not enter the house where I live, nor lie on the couch where I sleep; ... 1 [Psalm 132] A song for a liturgical ceremony in which the ark, the throne of Israel\'s God, was carried in ...","Url":"http:\\/\\/www.usccb.org\\/nab\\/bible\\/psalms\\/psalm132.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBZBzdmMwF;_ylu=X3oDMTB2OWM1MXQ5BGNvbG8DdwRsA1dTMQRwb3MDNARzZWMDc3IEdnRpZAM-\\/SIG=126n03p75\\/EXP=1147592336\\/**http%3a\\/\\/www.usccb.org\\/nab\\/bible\\/psalms\\/psalm132.htm","ModificationDate":1054623600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBaRzdmMwF;_ylu=X3oDMTBwYzFnNmkxBGNvbG8DdwRwb3MDNARzZWMDc3IEdnRpZAM-\\/SIG=16nvcm74b\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.usccb.org\\/nab\\/bible\\/psalms\\/psalm132.htm%26w=132%26d=FMBGyUaqMh-a%26icp=1%26.intl=us","Size":"8840"}},{"Title":"* City of Lost Dreams Mod *","Summary":"Mafia game modification","Url":"http:\\/\\/www.citizen-132.com\\/","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBaxzdmMwF;_ylu=X3oDMTB2NW50aG1hBGNvbG8DdwRsA1dTMQRwb3MDNQRzZWMDc3IEdnRpZAM-\\/SIG=11fnqlf31\\/EXP=1147592336\\/**http%3a\\/\\/www.citizen-132.com\\/","ModificationDate":1107676800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBcBzdmMwF;_ylu=X3oDMTBwdDJ0dDBoBGNvbG8DdwRwb3MDNQRzZWMDc3IEdnRpZAM-\\/SIG=160jdk4g3\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.citizen-132.com\\/%26w=132%26d=ZiSHAkaqMuny%26icp=1%26.intl=us","Size":"6861"}},{"Title":"BibleGateway.com: Search for a Bible passage in over 35 languages and 50 versions.","Summary":"English (EN) Espa\\u00f1ol (ES) Passage results ... Footnotes: Psalm 132:6 That is, Kiriath Jearim. Psalm 132:6 Or heard of it in ...","Url":"http:\\/\\/www.biblegateway.com\\/passage\\/?book_id=23&chapter=132&version=31","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBchzdmMwF;_ylu=X3oDMTB2azJrdmpwBGNvbG8DdwRsA1dTMQRwb3MDNgRzZWMDc3IEdnRpZAM-\\/SIG=1300p6cfh\\/EXP=1147592336\\/**http%3a\\/\\/www.biblegateway.com\\/passage\\/%3fbook_id=23%26chapter=132%26version=31","ModificationDate":1147158000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBdxzdmMwF;_ylu=X3oDMTBwYmwxdWo4BGNvbG8DdwRwb3MDNgRzZWMDc3IEdnRpZAM-\\/SIG=183q9adk2\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.biblegateway.com\\/passage\\/%253Fbook_id%253D23%2526chapter%253D132%2526version%253D31%26w=132%26d=XUM-1kaqMwKY%26icp=1%26.intl=us","Size":"27373"}},{"Title":"132 - Wikipedia, the free encyclopedia","Summary":"From Wikipedia, the free encyclopedia. This article is about the year. For other uses, see 132 (number). Events. Roman Empire. The Olympeion in Athens is completed ... Your continued donations keep Wikipedia running! 132. From Wikipedia, the free encyclopedia ... For other uses, see 132 (number). Years: 128 129 130 131 - 132 - 133 134 135 136 ...","Url":"http:\\/\\/en.wikipedia.org\\/wiki\\/132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBeRzdmMwF;_ylu=X3oDMTB2bDEyNXM5BGNvbG8DdwRsA1dTMQRwb3MDNwRzZWMDc3IEdnRpZAM-\\/SIG=11k81281i\\/EXP=1147592336\\/**http%3a\\/\\/en.wikipedia.org\\/wiki\\/132","ModificationDate":1145862000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBfhzdmMwF;_ylu=X3oDMTBwMTB0ZWFoBGNvbG8DdwRwb3MDNwRzZWMDc3IEdnRpZAM-\\/SIG=165kmnv8l\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=en.wikipedia.org\\/wiki\\/132%26w=132%26d=OcxF4UaqMuf2%26icp=1%26.intl=us","Size":"15956"}},{"Title":"BBC SPORT | Football | Internationals","Summary":"Visit BBC Sport for all the action as it happens - up-to-the-minute news, results, breaking news, video, audio and feature stories. BBC Sport covers the major events and all the professional football clubs in the UK, plus cricket, rugby, golf, ...","Url":"http:\\/\\/news.bbc.co.uk\\/sport1\\/hi\\/football\\/internationals\\/default.stm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBgBzdmMwF;_ylu=X3oDMTB2bTU4Zm85BGNvbG8DdwRsA1dTMQRwb3MDOARzZWMDc3IEdnRpZAM-\\/SIG=12n3aafin\\/EXP=1147592336\\/**http%3a\\/\\/news.bbc.co.uk\\/sport1\\/hi\\/football\\/internationals\\/default.stm","ModificationDate":1147417200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBhRzdmMwF;_ylu=X3oDMTBwYTZ1aGtmBGNvbG8DdwRwb3MDOARzZWMDc3IEdnRpZAM-\\/SIG=178rplb9d\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=news.bbc.co.uk\\/sport1\\/hi\\/football\\/internationals\\/default.stm%26w=132%26d=PmSx-kaqMw8o%26icp=1%26.intl=us","Size":"52634"}},{"Title":"Metro Route 132 Timetable, Weekday","Summary":"... Custom Print Help. 132. Weekday: Feb. 11 thru June 2, 2006 ...","Url":"http:\\/\\/transit.metrokc.gov\\/tops\\/bus\\/schedules\\/s132_0_.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBhxzdmMwF;_ylu=X3oDMTB2dW8yNmN0BGNvbG8DdwRsA1dTMQRwb3MDOQRzZWMDc3IEdnRpZAM-\\/SIG=12eusl28m\\/EXP=1147592336\\/**http%3a\\/\\/transit.metrokc.gov\\/tops\\/bus\\/schedules\\/s132_0_.html","ModificationDate":1146553200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBjBzdmMwF;_ylu=X3oDMTBwOTRzYmZlBGNvbG8DdwRwb3MDOQRzZWMDc3IEdnRpZAM-\\/SIG=16vd4gkvv\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=transit.metrokc.gov\\/tops\\/bus\\/schedules\\/s132_0_.html%26w=132%26d=Nvq_ekaqMulb%26icp=1%26.intl=us","Size":"27482"}},{"Title":"BBC NEWS | Politics | Bush arrives for state visit","Summary":"George Bush arrives in the UK for the first state visit by a US president amid some of the tightest security London has seen.","Url":"http:\\/\\/news.bbc.co.uk\\/1\\/hi\\/uk_politics\\/3279179.stm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBjhzdmMwF;_ylu=X3oDMTEwc3RuNTk4BGNvbG8DdwRsA1dTMQRwb3MDMTAEc2VjA3NyBHZ0aWQD\\/SIG=126am8694\\/EXP=1147592336\\/**http%3a\\/\\/news.bbc.co.uk\\/1\\/hi\\/uk_politics\\/3279179.stm","ModificationDate":1147417200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBkxzdmMwF;_ylu=X3oDMTBxNTUzbTg4BGNvbG8DdwRwb3MDMTAEc2VjA3NyBHZ0aWQD\\/SIG=16nt5u57o\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=news.bbc.co.uk\\/1\\/hi\\/uk_politics\\/3279179.stm%26w=132%26d=CxDE2UaqMw8U%26icp=1%26.intl=us","Size":"43537"}},{"Title":"132 (number) - Wikipedia, the free encyclopedia","Summary":"... you can make from 132, you get 132: 12 + 13 + 21 + 23 + 31 + 32 = 132. 132 is the smallest number ...","Url":"http:\\/\\/en.wikipedia.org\\/wiki\\/132_(number)","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBlRzdmMwF;_ylu=X3oDMTEwNXN0b3YwBGNvbG8DdwRsA1dTMQRwb3MDMTEEc2VjA3NyBHZ0aWQD\\/SIG=11thbnu67\\/EXP=1147592336\\/**http%3a\\/\\/en.wikipedia.org\\/wiki\\/132_(number)","ModificationDate":1145430000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBmhzdmMwF;_ylu=X3oDMTBxYnA3amlzBGNvbG8DdwRwb3MDMTEEc2VjA3NyBHZ0aWQD\\/SIG=16m4qjjlq\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=en.wikipedia.org\\/wiki\\/132_%2528number%2529%26w=132%26d=Ygdh6EaqMsBb%26icp=1%26.intl=us","Size":"13154"}},{"Title":"Psalms, Chapter 132","Summary":"King James Reference Suite - Bible Software by johnhurt.com ... Chapter 132. 1. Lord, remember David, and all his afflictions ... Notes on Chapter 132. 1. 2. 3 ...","Url":"http:\\/\\/www.htmlbible.com\\/kjv30\\/B19C132.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBnBzdmMwF;_ylu=X3oDMTEwNmgxNTZoBGNvbG8DdwRsA1dTMQRwb3MDMTIEc2VjA3NyBHZ0aWQD\\/SIG=11uujk8hq\\/EXP=1147592336\\/**http%3a\\/\\/www.htmlbible.com\\/kjv30\\/B19C132.htm","ModificationDate":1079942400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBoRzdmMwF;_ylu=X3oDMTBxN2cybDkwBGNvbG8DdwRwb3MDMTIEc2VjA3NyBHZ0aWQD\\/SIG=16fpgk3vj\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.htmlbible.com\\/kjv30\\/B19C132.htm%26w=132%26d=TaFtBUaqMwcr%26icp=1%26.intl=us","Size":"8721"}},{"Title":"SPACE.com -- Privately Funded SpaceShipOne Breaks Sound Barrier","Summary":"A privately financed passenger-carrying sub-orbital rocket plane screamed its way through the sound barrier today, the 100th anniversary of the Wright Brothers historic 12-second flight over Kitty Hawk, North Carolina.","Url":"http:\\/\\/www.space.com\\/businesstechnology\\/technology\\/rutan_update_031217.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBoxzdmMwF;_ylu=X3oDMTEwNHRmcnV0BGNvbG8DdwRsA1dTMQRwb3MDMTMEc2VjA3NyBHZ0aWQD\\/SIG=12vltjpcd\\/EXP=1147592336\\/**http%3a\\/\\/www.space.com\\/businesstechnology\\/technology\\/rutan_update_031217.html","ModificationDate":1147330800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBqBzdmMwF;_ylu=X3oDMTBxajcxM3AwBGNvbG8DdwRwb3MDMTMEc2VjA3NyBHZ0aWQD\\/SIG=17g6i6br5\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.space.com\\/businesstechnology\\/technology\\/rutan_update_031217.html%26w=132%26d=CklT2kaqMwqb%26icp=1%26.intl=us","Size":"39319"}},{"Title":"D&C 132","Summary":"THE DOCTRINE AND COVENANTS. SECTION 132 ... LDS HomeScriptures Doctrine and Covenants Sections Section 132. Prev | Next ... SECTION 132. Revelation given through Joseph Smith the Prophet, at Nauvoo, Illinois, recorded July 12, 1843 ...","Url":"http:\\/\\/scriptures.lds.org\\/dc\\/132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBqhzdmMwF;_ylu=X3oDMTEwamo4ZjVjBGNvbG8DdwRsA1dTMQRwb3MDMTQEc2VjA3NyBHZ0aWQD\\/SIG=11k67f7oi\\/EXP=1147592336\\/**http%3a\\/\\/scriptures.lds.org\\/dc\\/132","ModificationDate":1146985200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBrxzdmMwF;_ylu=X3oDMTBxcDhuOXFrBGNvbG8DdwRwb3MDMTQEc2VjA3NyBHZ0aWQD\\/SIG=165qbp40u\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=scriptures.lds.org\\/dc\\/132%26w=132%26d=KIW1S0aqMwF3%26icp=1%26.intl=us","Size":"51549"}},{"Title":"State Representative District 132","Summary":"State Representative District 132. State Representative District 132 is shaded area. SACO. BIDDEFORD. 127. 132. 133. 136. OLD ORCHARD BEACH. SACO","Url":"http:\\/\\/mainegov-images.informe.org\\/sos\\/cec\\/elec\\/apport\\/House\\/h132.pdf","ClickUrl":"http:\\/\\/mainegov-images.informe.org\\/sos\\/cec\\/elec\\/apport\\/House\\/h132.pdf#search=\'\'","ModificationDate":1075968000,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBtBzdmMwF;_ylu=X3oDMTBxbnZxbGc1BGNvbG8DdwRwb3MDMTUEc2VjA3NyBHZ0aWQD\\/SIG=17at7erej\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=mainegov-images.informe.org\\/sos\\/cec\\/elec\\/apport\\/House\\/h132.pdf%26w=132%26d=DsRim0aqMiIQ%26icp=1%26.intl=us","Size":"129767"}},{"Title":"BLB Psa 132","Summary":"We apologize, but the page layout is not visible because you are using an older browser. We recommend upgrading to a standards-compliant browser. Without such, this page will remain viewable, though unformatted.","Url":"http:\\/\\/www.blueletterbible.org\\/kjv\\/Psa\\/Psa132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBthzdmMwF;_ylu=X3oDMTEwdXRzN2p1BGNvbG8DdwRsA1dTMQRwb3MDMTYEc2VjA3NyBHZ0aWQD\\/SIG=126nkscdr\\/EXP=1147592336\\/**http%3a\\/\\/www.blueletterbible.org\\/kjv\\/Psa\\/Psa132.html","ModificationDate":1146985200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBuxzdmMwF;_ylu=X3oDMTBxdWpsMnAxBGNvbG8DdwRwb3MDMTYEc2VjA3NyBHZ0aWQD\\/SIG=16nmo95in\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.blueletterbible.org\\/kjv\\/Psa\\/Psa132.html%26w=132%26d=RzXlkkaqMwDE%26icp=1%26.intl=us","Size":"40835"}},{"Title":"ADL Found Guilty Of Spying By California Court","Summary":"ADL Found Guilty Of Spying. By California Court. By Barbara Ferguson. Arab News Correspondent. 4-27-2","Url":"http:\\/\\/www.rense.com\\/general24\\/adl.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBvRzdmMwF;_ylu=X3oDMTEwcm5pb3BuBGNvbG8DdwRsA1dTMQRwb3MDMTcEc2VjA3NyBHZ0aWQD\\/SIG=11qjguns4\\/EXP=1147592336\\/**http%3a\\/\\/www.rense.com\\/general24\\/adl.htm","ModificationDate":1019890800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBwhzdmMwF;_ylu=X3oDMTBxN2RrOGV1BGNvbG8DdwRwb3MDMTcEc2VjA3NyBHZ0aWQD\\/SIG=16bnmcrht\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.rense.com\\/general24\\/adl.htm%26w=132%26d=Xkre4EaqMuwO%26icp=1%26.intl=us","Size":"5916"}},{"Title":"FindLaw for Legal Professionals - Case Law, Federal and State Resources, Forms, and Code","Summary":"FindLaw for Legal Professionals is a free resource for attorneys that includes online case law, free state codes, free federal codes, free legal forms, and a directory of products and services for lawyers. This online legal Web site also includes...","Url":"http:\\/\\/caselaw.lp.findlaw.com\\/cgi-bin\\/getcase.pl?court=US&vol=391&invol=936","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBxBzdmMwF;_ylu=X3oDMTEwa2drb20xBGNvbG8DdwRsA1dTMQRwb3MDMTgEc2VjA3NyBHZ0aWQD\\/SIG=135rsl3q8\\/EXP=1147592336\\/**http%3a\\/\\/caselaw.lp.findlaw.com\\/cgi-bin\\/getcase.pl%3fcourt=US%26vol=391%26invol=936","ModificationDate":1147330800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcByRzdmMwF;_ylu=X3oDMTBxZGJndmNzBGNvbG8DdwRwb3MDMTgEc2VjA3NyBHZ0aWQD\\/SIG=188s7bq1v\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=caselaw.lp.findlaw.com\\/cgi-bin\\/getcase.pl%253Fcourt%253DUS%2526vol%253D391%2526invol%253D936%26w=132%26d=GCWYIUaqMwZK%26icp=1%26.intl=us","Size":"57332"}},{"Title":"Chapter 132","Summary":"... Public Records. \\u00a7 132\\u20101. \\" Public records\\" defined ... Public records, as defined in G.S. 132\\u20101, shall not include written communications (and copies thereof) to any public ...","Url":"http:\\/\\/www.ncleg.net\\/EnactedLegislation\\/Statutes\\/HTML\\/ByChapter\\/Chapter_132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcByxzdmMwF;_ylu=X3oDMTEwdjV0NWw0BGNvbG8DdwRsA1dTMQRwb3MDMTkEc2VjA3NyBHZ0aWQD\\/SIG=1349nldcc\\/EXP=1147592336\\/**http%3a\\/\\/www.ncleg.net\\/EnactedLegislation\\/Statutes\\/HTML\\/ByChapter\\/Chapter_132.html","ModificationDate":1141027200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB0BzdmMwF;_ylu=X3oDMTBxdDJjbXM4BGNvbG8DdwRwb3MDMTkEc2VjA3NyBHZ0aWQD\\/SIG=17lgm2hmb\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.ncleg.net\\/EnactedLegislation\\/Statutes\\/HTML\\/ByChapter\\/Chapter_132.html%26w=132%26d=akl3I0aqMt5y%26icp=1%26.intl=us","Size":"76411"}},{"Title":"oremus Bible Browser : Psalm 132","Summary":"Psalm 132. A Song of Ascents. 1O Lord, remember in David\'s favour. all the hardships he endured; 2how he swore to the Lord. and vowed to the Mighty One of Jacob, 3 I will not enter my house. or get into my bed;","Url":"http:\\/\\/bible.oremus.org\\/?passage=Psalm+132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB0hzdmMwF;_ylu=X3oDMTEwcDU0bmdlBGNvbG8DdwRsA1dTMQRwb3MDMjAEc2VjA3NyBHZ0aWQD\\/SIG=122hghelb\\/EXP=1147592336\\/**http%3a\\/\\/bible.oremus.org\\/%3fpassage=Psalm%2b132","ModificationDate":1138003200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB1xzdmMwF;_ylu=X3oDMTBxbjVuNnZxBGNvbG8DdwRwb3MDMjAEc2VjA3NyBHZ0aWQD\\/SIG=16ppk73gi\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=bible.oremus.org\\/%253Fpassage%253DPsalm%2b132%26w=132%26d=MBPBT0aqMkLR%26icp=1%26.intl=us","Size":"6083"}},{"Title":"Electronic Code of Federal Regulations:","Summary":"... Application of part 132 requirements in Great Lakes States and Tribes ... Appendix A to Part 132 --Great Lakes Water Quality Initiative Methodologies for Development of Aquatic Life ...","Url":"http:\\/\\/ecfr.gpoaccess.gov\\/cgi\\/t\\/text\\/text-idx?c=ecfr&tpl=\\/ecfrbrowse\\/Title40\\/40cfr132_main_02.tpl","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB2RzdmMwF;_ylu=X3oDMTEwMGRnbnZ2BGNvbG8DdwRsA1dTMQRwb3MDMjEEc2VjA3NyBHZ0aWQD\\/SIG=13p811gl2\\/EXP=1147592336\\/**http%3a\\/\\/ecfr.gpoaccess.gov\\/cgi\\/t\\/text\\/text-idx%3fc=ecfr%26tpl=\\/ecfrbrowse\\/Title40\\/40cfr132_main_02.tpl","ModificationDate":1147244400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB3hzdmMwF;_ylu=X3oDMTBxb2QzaXJsBGNvbG8DdwRwb3MDMjEEc2VjA3NyBHZ0aWQD\\/SIG=18m524f9v\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=ecfr.gpoaccess.gov\\/cgi\\/t\\/text\\/text-idx%253Fc%253Decfr%2526tpl%253D\\/ecfrbrowse\\/Title40\\/40cfr132_main_02.tpl%26w=132%26d=OC6Oa0aqMwQa%26icp=1%26.intl=us","Size":"24321"}},{"Title":"BibleGateway.com - Passage Lookup: Psalms 132;","Summary":"English (EN) Espa\\u00f1ol (ES) Passage results ... View commentary related to this passage : Psalm 132. Psalm 132 (Amplified Bible ...","Url":"http:\\/\\/www.biblegateway.com\\/passage?search=Psalms+132;&version=45;","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB4BzdmMwF;_ylu=X3oDMTEwMmJvNjYwBGNvbG8DdwRsA1dTMQRwb3MDMjIEc2VjA3NyBHZ0aWQD\\/SIG=12s5v8a5i\\/EXP=1147592336\\/**http%3a\\/\\/www.biblegateway.com\\/passage%3fsearch=Psalms%2b132;%26version=45;","ModificationDate":1139990400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB5RzdmMwF;_ylu=X3oDMTBxOTdwc3RpBGNvbG8DdwRwb3MDMjIEc2VjA3NyBHZ0aWQD\\/SIG=1810cufkn\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.biblegateway.com\\/passage%253Fsearch%253DPsalms%2b132%253B%2526version%253D45%253B%26w=132%26d=KJ4R3EaqMjLm%26icp=1%26.intl=us","Size":"27611"}},{"Title":"N-132: Wu-ftpd Buffer Overflow Vulnerability","Summary":"INFORMATION BULLETIN. N-132: Wu-ftpd Buffer Overflow Vulnerability. [Red Hat Security Advisory RHSA-2003:245-15] July 31, 2003 18:00 GMT. [Revised 13 Aug 2003] [Revised 14 Aug 2003] [Revised 5 Sept 2003] [Revised 8 Oct 2003]","Url":"http:\\/\\/www.ciac.org\\/ciac\\/bulletins\\/n-132.shtml","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB5xzdmMwF;_ylu=X3oDMTEwZXVqN2J0BGNvbG8DdwRsA1dTMQRwb3MDMjMEc2VjA3NyBHZ0aWQD\\/SIG=122msf6uh\\/EXP=1147592336\\/**http%3a\\/\\/www.ciac.org\\/ciac\\/bulletins\\/n-132.shtml","ModificationDate":1146812400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB7BzdmMwF;_ylu=X3oDMTBxbm8wZ2ZmBGNvbG8DdwRwb3MDMjMEc2VjA3NyBHZ0aWQD\\/SIG=16jq98ra6\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.ciac.org\\/ciac\\/bulletins\\/n-132.shtml%26w=132%26d=cBzeO0aqMu2t%26icp=1%26.intl=us","Size":"12337"}},{"Title":"Bumpy Objects","Summary":"Bumpy Objects","Url":"http:\\/\\/acm.uva.es\\/p\\/v1\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB7hzdmMwF;_ylu=X3oDMTEwZmNyM2VjBGNvbG8DdwRsA1dTMQRwb3MDMjQEc2VjA3NyBHZ0aWQD\\/SIG=11j1o5t64\\/EXP=1147592336\\/**http%3a\\/\\/acm.uva.es\\/p\\/v1\\/132.html","ModificationDate":1057820400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB8xzdmMwF;_ylu=X3oDMTBxNWw4M3FvBGNvbG8DdwRwb3MDMjQEc2VjA3NyBHZ0aWQD\\/SIG=164vlv52k\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=acm.uva.es\\/p\\/v1\\/132.html%26w=132%26d=ZSctVkaqMvQs%26icp=1%26.intl=us","Size":"2803"}},{"Title":"The Hayes memo is important\\u2014but bogus. By Daniel Benjamin","Summary":"When they published their \\" Case Closed\\" cover story three weeks ago on the relationship between Saddam Hussein\'s Iraq and al-Qaida, the editors of the Weekly Standard aimed to set off a bomb. The article was centered on a sizable leak\\u2014a gusher...","Url":"http:\\/\\/www.slate.com\\/id\\/2092180\\/","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB9RzdmMwF;_ylu=X3oDMTEwamxzbHY1BGNvbG8DdwRsA1dTMQRwb3MDMjUEc2VjA3NyBHZ0aWQD\\/SIG=11kj0d4q1\\/EXP=1147592336\\/**http%3a\\/\\/www.slate.com\\/id\\/2092180\\/","ModificationDate":1147071600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB.hzdmMwF;_ylu=X3oDMTBxdGc1MmltBGNvbG8DdwRwb3MDMjUEc2VjA3NyBHZ0aWQD\\/SIG=16507c1iu\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=slate.msn.com\\/id\\/2092180\\/%26w=132%26d=bWigBUaqMvyd%26icp=1%26.intl=us","Size":"40222"}},{"Title":"FNMOC WXMAP: North America","Summary":"UNCLASSIFIED. FNMOC WXMAP. Model: NOGAPS. Area: North America. DTG: 2006050500. UNCLASSIFIED","Url":"https:\\/\\/www.fnmoc.navy.mil\\/CGI\\/PUBLIC\\/wxmap_single.cgi?area=ngp_namer&prod=850&tau=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB_BzdmMwF;_ylu=X3oDMTEwNDNwbjA5BGNvbG8DdwRsA1dTMQRwb3MDMjYEc2VjA3NyBHZ0aWQD\\/SIG=13g43sejj\\/EXP=1147592336\\/**https%3a\\/\\/www.fnmoc.navy.mil\\/CGI\\/PUBLIC\\/wxmap_single.cgi%3farea=ngp_namer%26prod=850%26tau=132","ModificationDate":1146812400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBAR3dmMwF;_ylu=X3oDMTBxN2ZrcnVrBGNvbG8DdwRwb3MDMjYEc2VjA3NyBHZ0aWQD\\/SIG=18s7gc72v\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=https%3a\\/\\/www.fnmoc.navy.mil\\/CGI\\/PUBLIC\\/wxmap_single.cgi%253Farea%253Dngp_namer%2526prod%253D850%2526tau%253D132%26w=132%26d=KiW5fUaqMvIm%26icp=1%26.intl=us","Size":"9048"}},{"Title":"O-132: BEA WebLogic Server and Express Certificate Spoofing Vulnerability","Summary":"INFORMATION BULLETIN. O-132: BEA WebLogic Server and Express Certificate Spoofing Vulnerability. [BEA Security Advisory: BEA04-54.00] April 30, 2004 20:00 GMT. PROBLEM:","Url":"http:\\/\\/ciac.llnl.gov\\/ciac\\/bulletins\\/o-132.shtml","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBAx3dmMwF;_ylu=X3oDMTEwb2lhN21nBGNvbG8DdwRsA1dTMQRwb3MDMjcEc2VjA3NyBHZ0aWQD\\/SIG=1231gt787\\/EXP=1147592336\\/**http%3a\\/\\/ciac.llnl.gov\\/ciac\\/bulletins\\/o-132.shtml","ModificationDate":1142064000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBCB3dmMwF;_ylu=X3oDMTBxaGVsMDBlBGNvbG8DdwRwb3MDMjcEc2VjA3NyBHZ0aWQD\\/SIG=16k4puak0\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=ciac.llnl.gov\\/ciac\\/bulletins\\/o-132.shtml%26w=132%26d=ZZgzx0aqMjzn%26icp=1%26.intl=us","Size":"10701"}},{"Title":"NET Bible\\u00ae - Psalms 132","Summary":"... Psalms 132. Psalm 1321. A song of ascents.2. 132:1 O Lord, for David\'s sake remember ...","Url":"http:\\/\\/www.bible.org\\/netbible\\/psa132.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBCh3dmMwF;_ylu=X3oDMTEwYjBiNjdsBGNvbG8DdwRsA1dTMQRwb3MDMjgEc2VjA3NyBHZ0aWQD\\/SIG=11sp4034c\\/EXP=1147592336\\/**http%3a\\/\\/www.bible.org\\/netbible\\/psa132.htm","ModificationDate":1133769600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBDx3dmMwF;_ylu=X3oDMTBxOWNtc2JjBGNvbG8DdwRwb3MDMjgEc2VjA3NyBHZ0aWQD\\/SIG=16duuokm4\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.bible.org\\/netbible\\/psa132.htm%26w=132%26d=aVzzT0aqMwNl%26icp=1%26.intl=us","Size":"6048"}},{"Title":"HoustonChronicle.com - Sports: Fran Blinebury","Summary":"06, 2006. Column archive 2002. [an error occurred while processing this directive]","Url":"http:\\/\\/www.chron.com\\/content\\/chronicle\\/sports\\/blinebury\\/home","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBER3dmMwF;_ylu=X3oDMTEwcmlvNjMyBGNvbG8DdwRsA1dTMQRwb3MDMjkEc2VjA3NyBHZ0aWQD\\/SIG=12gac009r\\/EXP=1147592336\\/**http%3a\\/\\/www.chron.com\\/content\\/chronicle\\/sports\\/blinebury\\/home","ModificationDate":1146898800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBFh3dmMwF;_ylu=X3oDMTBxNTVsY25mBGNvbG8DdwRwb3MDMjkEc2VjA3NyBHZ0aWQD\\/SIG=171sgehbh\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.chron.com\\/content\\/chronicle\\/sports\\/blinebury\\/home%26w=132%26d=I3QMYEaqMuxa%26icp=1%26.intl=us","Size":"27335"}},{"Title":"FNMOC WXMAP: North America","Summary":"UNCLASSIFIED. FNMOC WXMAP. Model: NOGAPS. Area: North America. DTG: 2006050512. UNCLASSIFIED","Url":"https:\\/\\/www.fnmoc.navy.mil\\/CGI\\/PUBLIC\\/wxmap_single.cgi?area=ngp_namer&prod=prp&tau=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBGB3dmMwF;_ylu=X3oDMTEwN2g4ZWdqBGNvbG8DdwRsA1dTMQRwb3MDMzAEc2VjA3NyBHZ0aWQD\\/SIG=13g08kode\\/EXP=1147592336\\/**https%3a\\/\\/www.fnmoc.navy.mil\\/CGI\\/PUBLIC\\/wxmap_single.cgi%3farea=ngp_namer%26prod=prp%26tau=132","ModificationDate":1146812400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBHR3dmMwF;_ylu=X3oDMTBxaGdhODhjBGNvbG8DdwRwb3MDMzAEc2VjA3NyBHZ0aWQD\\/SIG=18solhmco\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=https%3a\\/\\/www.fnmoc.navy.mil\\/CGI\\/PUBLIC\\/wxmap_single.cgi%253Farea%253Dngp_namer%2526prod%253Dprp%2526tau%253D132%26w=132%26d=MKdCgkaqMuri%26icp=1%26.intl=us","Size":"9048"}},{"Title":"US CODE: Title 36,132. National School Lunch Week","Summary":"National School Lunch Week. Release date: 2005-10-11. (a) Designation.\\u2014. The week beginning on the second Sunday in October is National School Lunch Week. (b) Proclamation.\\u2014 ... TITLE 36 &gt; Subtitle I &gt; Part A &gt; CHAPTER 1 &gt; \\u00a7 132. Prev | Next. \\u00a7 132. National School Lunch Week ...","Url":"http:\\/\\/www4.law.cornell.edu\\/uscode\\/html\\/uscode36\\/usc_sec_36_00000132----000-.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBHx3dmMwF;_ylu=X3oDMTEwN3BsMm9vBGNvbG8DdwRsA1dTMQRwb3MDMzEEc2VjA3NyBHZ0aWQD\\/SIG=1359dp76s\\/EXP=1147592336\\/**http%3a\\/\\/www4.law.cornell.edu\\/uscode\\/html\\/uscode36\\/usc_sec_36_00000132----000-.html","ModificationDate":1145343600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBJB3dmMwF;_ylu=X3oDMTBxNG81cnMxBGNvbG8DdwRwb3MDMzEEc2VjA3NyBHZ0aWQD\\/SIG=17m1he9ur\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www4.law.cornell.edu\\/uscode\\/html\\/uscode36\\/usc_sec_36_00000132----000-.html%26w=132%26d=NTi8bUaqMpvs%26icp=1%26.intl=us","Size":"8976"}},{"Title":"ATel #132: IGR J17464-3213","Summary":"Outside. Other. Present Time: 7 May 2006; 4:08 UT. RSS. XML Gamma Ray Bursts. IGR J17464-3213 ... IGR J17464-3213. ATel #132; M. Revnivtsev (IKI, Moscow; MPA, Garching), M ... XTE J1746-322 = IGR J17464-3213 = H1743-322. 132. IGR J17464-3213 ...","Url":"http:\\/\\/www.astronomerstelegram.org\\/?read=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBJh3dmMwF;_ylu=X3oDMTEwYWI0N2o2BGNvbG8DdwRsA1dTMQRwb3MDMzIEc2VjA3NyBHZ0aWQD\\/SIG=122qvcsd1\\/EXP=1147592336\\/**http%3a\\/\\/www.astronomerstelegram.org\\/%3fread=132","ModificationDate":1146985200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBKx3dmMwF;_ylu=X3oDMTBxYmt2ZDZzBGNvbG8DdwRwb3MDMzIEc2VjA3NyBHZ0aWQD\\/SIG=16pipao89\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.astronomerstelegram.org\\/%253Fread%253D132%26w=132%26d=Pb4lcUaqMvBj%26icp=1%26.intl=us","Size":"9056"}},{"Title":"Vashegyite Mineral Data","Summary":"Vashegyite Mineral Data + General Vashegyite Information. Chemical Formula: Al11(PO4)9(OH)6\\u00b738(H2O) or Al6(PO4)5(OH)3\\u00b723(H2O) Composition: Molecular Weight = 1,938.16 gm. Aluminum 15.31 % Al 28.93 % Al2O3","Url":"http:\\/\\/www.webmineral.com\\/data\\/Vashegyite.shtml","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBLR3dmMwF;_ylu=X3oDMTEwNHFvMGppBGNvbG8DdwRsA1dTMQRwb3MDMzMEc2VjA3NyBHZ0aWQD\\/SIG=123ajp144\\/EXP=1147592336\\/**http%3a\\/\\/www.webmineral.com\\/data\\/Vashegyite.shtml","ModificationDate":1146898800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBMh3dmMwF;_ylu=X3oDMTBxNzAwNWY0BGNvbG8DdwRwb3MDMzMEc2VjA3NyBHZ0aWQD\\/SIG=16ktl9ibf\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.webmineral.com\\/data\\/Vashegyite.shtml%26w=132%26d=W38GQkaqMvCt%26icp=1%26.intl=us","Size":"29234"}},{"Title":"2003 CFR Title 40, Volume 19","Summary":"... CHAPTER I--ENVIRONMENTAL PROTECTION AGENCY. PART 132--WATER QUALITY GUIDANCE FOR THE GREAT LAKES SYSTEM. 132.1. Scope, purpose, and availability of documents ...","Url":"http:\\/\\/www.access.gpo.gov\\/nara\\/cfr\\/waisidx_03\\/40cfr132_03.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBNB3dmMwF;_ylu=X3oDMTEwdHZ0ZXZxBGNvbG8DdwRsA1dTMQRwb3MDMzQEc2VjA3NyBHZ0aWQD\\/SIG=12imj9jh5\\/EXP=1147592336\\/**http%3a\\/\\/www.access.gpo.gov\\/nara\\/cfr\\/waisidx_03\\/40cfr132_03.html","ModificationDate":1123916400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBOR3dmMwF;_ylu=X3oDMTBxcml1MjI5BGNvbG8DdwRwb3MDMzQEc2VjA3NyBHZ0aWQD\\/SIG=173ahs683\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.access.gpo.gov\\/nara\\/cfr\\/waisidx_03\\/40cfr132_03.html%26w=132%26d=c8h16UaqMjB2%26icp=1%26.intl=us","Size":"4704"}},{"Title":"Chapter HFS 132","Summary":"... 145. HFS 132.13. DEPARTMENT OF HEALTH AND FAMILY SERVICES ... Subchapter I \\u2014 General. HFS 132.11. Statutory authority. HFS 132.12 ...","Url":"http:\\/\\/www.legis.state.wi.us\\/rsb\\/code\\/hfs\\/hfs132.pdf","ClickUrl":"http:\\/\\/www.legis.state.wi.us\\/rsb\\/code\\/hfs\\/hfs132.pdf#search=\'\'","ModificationDate":1099033200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBPh3dmMwF;_ylu=X3oDMTBxaXI5cmVpBGNvbG8DdwRwb3MDMzUEc2VjA3NyBHZ0aWQD\\/SIG=16p8cmh99\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.legis.state.wi.us\\/rsb\\/code\\/hfs\\/hfs132.pdf%26w=132%26d=CN-yI0aqMkhi%26icp=1%26.intl=us","Size":"283151"}},{"Title":"U.S. Senate: Legislation & Records Home &gt; Votes &gt; Roll Call Vote","Summary":"... Vote Number: 132. Vote Date: June 8, 2005, 05:30 PM ...","Url":"http:\\/\\/www.senate.gov\\/legislative\\/LIS\\/roll_call_lists\\/roll_call_vote_cfm.cfm?congress=109&session=1&vote=00132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBQB3dmMwF;_ylu=X3oDMTEwdTlzNmU2BGNvbG8DdwRsA1dTMQRwb3MDMzYEc2VjA3NyBHZ0aWQD\\/SIG=148g3pmm4\\/EXP=1147592336\\/**http%3a\\/\\/www.senate.gov\\/legislative\\/LIS\\/roll_call_lists\\/roll_call_vote_cfm.cfm%3fcongress=109%26session=1%26vote=00132","ModificationDate":1143360000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBRR3dmMwF;_ylu=X3oDMTBxOTlsaWYxBGNvbG8DdwRwb3MDMzYEc2VjA3NyBHZ0aWQD\\/SIG=19b3rasjc\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.senate.gov\\/legislative\\/LIS\\/roll_call_lists\\/roll_call_vote_cfm.cfm%253Fcongress%253D109%2526session%253D1%2526vote%253D00132%26w=132%26d=dtev60aqMh1g%26icp=1%26.intl=us","Size":"51433"}},{"Title":"Storm Prediction Center Tornado Watch 132","Summary":"Severe weather, tornado, thunderstorm, fire weather, storm report, tornado watch, severe thunderstorm watch, mesoscale discussion, convective outlook products from the Storm Prediction Center. ... SEL2 URGENT - IMMEDIATE BROADCAST REQUESTED TORNADO WATCH NUMBER 132 NWS STORM PREDICTION CENTER NORMAN OK 325 PM CDT ...","Url":"http:\\/\\/www.spc.noaa.gov\\/products\\/watch\\/ww0132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBRx3dmMwF;_ylu=X3oDMTEwanQ3MzU2BGNvbG8DdwRsA1dTMQRwb3MDMzcEc2VjA3NyBHZ0aWQD\\/SIG=126urlun7\\/EXP=1147592336\\/**http%3a\\/\\/www.spc.noaa.gov\\/products\\/watch\\/ww0132.html","ModificationDate":1146812400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBTB3dmMwF;_ylu=X3oDMTBxNDRkc3R1BGNvbG8DdwRwb3MDMzcEc2VjA3NyBHZ0aWQD\\/SIG=16n3e4s74\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.spc.noaa.gov\\/products\\/watch\\/ww0132.html%26w=132%26d=N4g-pUaqMusz%26icp=1%26.intl=us","Size":"19990"}},{"Title":"PLANT PHYSIOLOGY ONLINE -- Table of Contents (132 [2])","Summary":"To see an article, click its [Full Text] link. To review many abstracts, check the boxes to the left of the titles you want, and click the \'Get All Checked Abstract(s)\' button. To see one abstract at a time, click its [Abstract] link.","Url":"http:\\/\\/www.plantphysiol.org\\/content\\/vol132\\/issue2\\/index.shtml","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBTh3dmMwF;_ylu=X3oDMTEwa2NtaWpsBGNvbG8DdwRsA1dTMQRwb3MDMzgEc2VjA3NyBHZ0aWQD\\/SIG=12hg0jpkp\\/EXP=1147592336\\/**http%3a\\/\\/www.plantphysiol.org\\/content\\/vol132\\/issue2\\/index.shtml","ModificationDate":1141804800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBUx3dmMwF;_ylu=X3oDMTBxYnZvM21yBGNvbG8DdwRwb3MDMzgEc2VjA3NyBHZ0aWQD\\/SIG=172cps28k\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.plantphysiol.org\\/content\\/vol132\\/issue2\\/index.shtml%26w=132%26d=Yvs4KUaqMjZc%26icp=1%26.intl=us","Size":"79038"}},{"Title":"AgGPS 132","Summary":"... The AgGPS 132 outputs sub- meter accuracy DGPS positions ... lightbar is connected to the. AgGPS 132. The AgGPS 132. can output positions up to 10 ...","Url":"http:\\/\\/www.farmgis.com\\/products\\/hardware\\/gps\\/aggps132.pdf","ClickUrl":"http:\\/\\/www.farmgis.com\\/products\\/hardware\\/gps\\/aggps132.pdf#search=\'\'","ModificationDate":1098169200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBWB3dmMwF;_ylu=X3oDMTBxcXNibWtvBGNvbG8DdwRwb3MDMzkEc2VjA3NyBHZ0aWQD\\/SIG=16us46bp9\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.farmgis.com\\/products\\/hardware\\/gps\\/aggps132.pdf%26w=132%26d=EvLM70aqMkiV%26icp=1%26.intl=us","Size":"162160"}},{"Title":"Chapter 132 \\u2014 Grand Jury, Indictments and Other Accusatory Instruments","Summary":"The text appearing in this database was produced from material provided by the Legislative Counsel Committee of the Oregon Legislative Assembly. The official record copy is the printed published copy of the Oregon Revised Statutes. ... 132.010 Composition. A grand jury is a body of seven persons drawn from the jurors in attendance ... 132.030 Challenge of juror prohibited; when juror may be excused. Neither ...","Url":"http:\\/\\/www.leg.state.or.us\\/ors\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBWh3dmMwF;_ylu=X3oDMTEwYTAzbTUxBGNvbG8DdwRsA1dTMQRwb3MDNDAEc2VjA3NyBHZ0aWQD\\/SIG=11r91jes0\\/EXP=1147592336\\/**http%3a\\/\\/www.leg.state.or.us\\/ors\\/132.html","ModificationDate":1144220400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBXx3dmMwF;_ylu=X3oDMTBxdGU5a2FhBGNvbG8DdwRwb3MDNDAEc2VjA3NyBHZ0aWQD\\/SIG=16cbqvrlb\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.leg.state.or.us\\/ors\\/132.html%26w=132%26d=MFh3EUaqMk41%26icp=1%26.intl=us","Size":"73717"}},{"Title":"Downloaded 19 Aug 2002 to 132.163.136.56. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip... ","Summary":"Downloaded 19 Aug 2002 to 132.163.136.56. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/japo\\/japcr.jsp. Downloaded 19 Aug 2002 to 132.163.136.56.","Url":"http:\\/\\/tf.nist.gov\\/general\\/pdf\\/550.pdf","ClickUrl":"http:\\/\\/tf.nist.gov\\/general\\/pdf\\/550.pdf#search=\'\'","ModificationDate":1029740400,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBZB3dmMwF;_ylu=X3oDMTBxcDdtZjJoBGNvbG8DdwRwb3MDNDEEc2VjA3NyBHZ0aWQD\\/SIG=16bgqks5e\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=tf.nist.gov\\/general\\/pdf\\/550.pdf%26w=132%26d=PNXPXkaqMkLS%26icp=1%26.intl=us","Size":"2485625"}},{"Title":"Father Tom Inspired Pflugerville #132 To Evolve Into A Strong Fraternal Society","Summary":"... Monsignor Tom Frank is presented with the 2002 Society #132. Service Award by President Ray Pokorney ... ach year Society #132. of Pflugerville honors ...","Url":"http:\\/\\/www.kjtnet.org\\/web\\/benefits\\/newsletter\\/march03.pdf","ClickUrl":"http:\\/\\/www.kjtnet.org\\/web\\/benefits\\/newsletter\\/march03.pdf#search=\'\'","ModificationDate":1105603200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBaR3dmMwF;_ylu=X3oDMTBxMWU2b2h1BGNvbG8DdwRwb3MDNDIEc2VjA3NyBHZ0aWQD\\/SIG=16u12rqgg\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.kjtnet.org\\/web\\/benefits\\/newsletter\\/march03.pdf%26w=132%26d=fjH4hEaqMwZd%26icp=1%26.intl=us","Size":"2791412"}},{"Title":"Alsakharovite-Zn Mineral Data","Summary":"Alsakharovite-Zn Mineral Data. [Log In] [Current Auction] [Register to Bid] [FAQ] [About Us] Tired of Ebay rip-offs, scams, and dishonest people?","Url":"http:\\/\\/www.webmineral.com\\/data\\/Alsakharovite-Zn.shtml","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBax3dmMwF;_ylu=X3oDMTEwN2JwMzlhBGNvbG8DdwRsA1dTMQRwb3MDNDMEc2VjA3NyBHZ0aWQD\\/SIG=129j54b3c\\/EXP=1147592336\\/**http%3a\\/\\/www.webmineral.com\\/data\\/Alsakharovite-Zn.shtml","ModificationDate":1147158000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBcB3dmMwF;_ylu=X3oDMTBxamhmc2lnBGNvbG8DdwRwb3MDNDMEc2VjA3NyBHZ0aWQD\\/SIG=16q6pnttb\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.webmineral.com\\/data\\/Alsakharovite-Zn.shtml%26w=132%26d=B_smj0aqMwJU%26icp=1%26.intl=us","Size":"38594"}},{"Title":"Psalm 132","Summary":"... Psalm 132. The Eternal Dwelling of God in Zion ...","Url":"http:\\/\\/www.hope.edu\\/academic\\/religion\\/bandstra\\/BIBLE\\/PSA\\/PSA132.HTM","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBch3dmMwF;_ylu=X3oDMTEwdXE2dm1tBGNvbG8DdwRsA1dTMQRwb3MDNDQEc2VjA3NyBHZ0aWQD\\/SIG=12n448u4t\\/EXP=1147592336\\/**http%3a\\/\\/www.hope.edu\\/academic\\/religion\\/bandstra\\/BIBLE\\/PSA\\/PSA132.HTM","ModificationDate":1114758000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBdx3dmMwF;_ylu=X3oDMTBxMjBjZXRuBGNvbG8DdwRwb3MDNDQEc2VjA3NyBHZ0aWQD\\/SIG=17829d5da\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.hope.edu\\/academic\\/religion\\/bandstra\\/BIBLE\\/PSA\\/PSA132.HTM%26w=132%26d=Gs9Yt0aqMhg_%26icp=1%26.intl=us","Size":"5137"}},{"Title":"Bug 132 - Heartbeat requires all nodes to be pre-configured in ha.cf","Summary":"... Bugzilla Bug 132. Heartbeat requires all nodes to be pre-configured in ha.cf ... Bug#: 132. Platform: All DEC HP Macintosh PC SGI Sun Other ...","Url":"http:\\/\\/www.osdl.org\\/developer_bugzilla\\/show_bug.cgi?id=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBeR3dmMwF;_ylu=X3oDMTEwa3QxajIyBGNvbG8DdwRsA1dTMQRwb3MDNDUEc2VjA3NyBHZ0aWQD\\/SIG=12g1vvd06\\/EXP=1147592336\\/**http%3a\\/\\/www.osdl.org\\/developer_bugzilla\\/show_bug.cgi%3fid=132","ModificationDate":1146553200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBfh3dmMwF;_ylu=X3oDMTBxbHY2NGw5BGNvbG8DdwRwb3MDNDUEc2VjA3NyBHZ0aWQD\\/SIG=177hj2go7\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.osdl.org\\/developer_bugzilla\\/show_bug.cgi%253Fid%253D132%26w=132%26d=Uzd0n0aqMtwg%26icp=1%26.intl=us","Size":"40101"}},{"Title":"Bug 132 - ChargeDispositionPlea and ChargeDispositionVerdict","Summary":"... Bugzilla Bug 132. ChargeDispositionPlea and ChargeDispositionVerdict ... Bug#: 132. Domain: AAMVA Corrections Courts Juvenile Law Enforcement Parole Probation Prosecution Other ...","Url":"http:\\/\\/justicexml.gtri.gatech.edu\\/feedback\\/show_bug.cgi?id=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBgB3dmMwF;_ylu=X3oDMTEwdmhtYjA4BGNvbG8DdwRsA1dTMQRwb3MDNDYEc2VjA3NyBHZ0aWQD\\/SIG=12klknku3\\/EXP=1147592336\\/**http%3a\\/\\/justicexml.gtri.gatech.edu\\/feedback\\/show_bug.cgi%3fid=132","ModificationDate":1143360000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBhR3dmMwF;_ylu=X3oDMTBxa2g2bWNnBGNvbG8DdwRwb3MDNDYEc2VjA3NyBHZ0aWQD\\/SIG=17bcs6mrt\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=justicexml.gtri.gatech.edu\\/feedback\\/show_bug.cgi%253Fid%253D132%26w=132%26d=e0Zoy0aqMjBn%26icp=1%26.intl=us","Size":"16410"}},{"Title":"Publications","Summary":"... Bulletin 132, Management of the California State Water Project, is a series of annual reports that describe the ... annual Appendix E to Bulletin 132 and the final edition of the ...","Url":"http:\\/\\/www.swpao.water.ca.gov\\/publications","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBhx3dmMwF;_ylu=X3oDMTEwZjVhYXMzBGNvbG8DdwRsA1dTMQRwb3MDNDcEc2VjA3NyBHZ0aWQD\\/SIG=11ud1cv0a\\/EXP=1147592336\\/**http%3a\\/\\/www.swpao.water.ca.gov\\/publications","ModificationDate":1143187200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBjB3dmMwF;_ylu=X3oDMTBxcjNocmY0BGNvbG8DdwRwb3MDNDcEc2VjA3NyBHZ0aWQD\\/SIG=16fvue890\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.swpao.water.ca.gov\\/publications%26w=132%26d=CDqKvkaqMhfi%26icp=1%26.intl=us","Size":"27835"}},{"Title":"Sampling at Head Crater and Bench Crater","Summary":"... 132:10:41 Bean: Boy, this Hand Tool Carrier is light and nice compared to carrying it around ... 132:11:20 Bean: I can see everything from fine-grain basalt ...","Url":"http:\\/\\/www.hq.nasa.gov\\/alsj\\/a12\\/a12.head_bench.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBjh3dmMwF;_ylu=X3oDMTEwYjFmcHI4BGNvbG8DdwRsA1dTMQRwb3MDNDgEc2VjA3NyBHZ0aWQD\\/SIG=127h6jrgp\\/EXP=1147592336\\/**http%3a\\/\\/www.hq.nasa.gov\\/alsj\\/a12\\/a12.head_bench.html","ModificationDate":1139731200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBkx3dmMwF;_ylu=X3oDMTBxazBuMTN2BGNvbG8DdwRwb3MDNDgEc2VjA3NyBHZ0aWQD\\/SIG=16of05gsq\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.hq.nasa.gov\\/alsj\\/a12\\/a12.head_bench.html%26w=132%26d=O2JTbEaqMul1%26icp=1%26.intl=us","Size":"91895"}},{"Title":"Psalms 132","Summary":"Psalms 132. 132:1 A Song of degrees.","Url":"http:\\/\\/www.masterstech-home.com\\/The_Library\\/The_Bible\\/Bible_Chapters\\/Psalms\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBlR3dmMwF;_ylu=X3oDMTEwOG85MWM5BGNvbG8DdwRsA1dTMQRwb3MDNDkEc2VjA3NyBHZ0aWQD\\/SIG=1381oeor0\\/EXP=1147592336\\/**http%3a\\/\\/www.masterstech-home.com\\/The_Library\\/The_Bible\\/Bible_Chapters\\/Psalms\\/132.html","ModificationDate":1135152000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBmh3dmMwF;_ylu=X3oDMTBxNWpuM3FoBGNvbG8DdwRwb3MDNDkEc2VjA3NyBHZ0aWQD\\/SIG=17p7bjs0u\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.masterstech-home.com\\/The_Library\\/The_Bible\\/Bible_Chapters\\/Psalms\\/132.html%26w=132%26d=TUYYg0aqMhg4%26icp=1%26.intl=us","Size":"11669"}},{"Title":"California Highways (www.cahighways.org): Routes 129 through 136","Summary":"... The 2005 Transportation Bill included \$14.4 million to widen Route 132 from Route 99 west to Dakota Avenue ... between Coulterville and Mariposa was cosigned as Route 49 and Route 132 ...","Url":"http:\\/\\/www.cahighways.org\\/129-136.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBnB3dmMwF;_ylu=X3oDMTEwaXBqZ2lxBGNvbG8DdwRsA1dTMQRwb3MDNTAEc2VjA3NyBHZ0aWQD\\/SIG=11q1ne7f6\\/EXP=1147592336\\/**http%3a\\/\\/www.cahighways.org\\/129-136.html","ModificationDate":1145689200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBoR3dmMwF;_ylu=X3oDMTBxbmZjMXVuBGNvbG8DdwRwb3MDNTAEc2VjA3NyBHZ0aWQD\\/SIG=16bhah065\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.cahighways.org\\/129-136.html%26w=132%26d=fRBtE0aqMqve%26icp=1%26.intl=us","Size":"49110"}},{"Title":"Downloaded 11 Nov 2002 to 132.64.1.37. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/... ","Summary":"Downloaded 11 Nov 2002 to 132.64.1.37. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/rsio\\/rsicr.jsp. Downloaded 11 Nov 2002 to 132.64.1.37.","Url":"http:\\/\\/chem.ch.huji.ac.il\\/~porath\\/NST2\\/Lecture%205\\/Kuk%20and%20Silverman%20Rev_Sci_Inst_60_165_1989.pdf","ClickUrl":"http:\\/\\/chem.ch.huji.ac.il\\/~porath\\/NST2\\/Lecture%205\\/Kuk%20and%20Silverman%20Rev_Sci_Inst_60_165_1989.pdf#search=\'\'","ModificationDate":1069660800,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBph3dmMwF;_ylu=X3oDMTBxZHJldXUyBGNvbG8DdwRwb3MDNTEEc2VjA3NyBHZ0aWQD\\/SIG=190pnnu1n\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=chem.ch.huji.ac.il\\/%257Eporath\\/NST2\\/Lecture%2525205\\/Kuk%252520and%252520Silverman%252520Rev_Sci_Inst_60_165_1989.pdf%26w=132%26d=F4c-T0aqMhfn%26icp=1%26.intl=us","Size":"3386219"}},{"Title":"Phelps Personnel Associates","Summary":"Welcome to Phelps Personnel Associates. Recruiting and Placing Engineers and Management Professionals since 1976. Concentration in the Carolinas and Southeastern job market. Permanent, Company fee-paid positions only. Confidential, courteous service","Url":"http:\\/\\/www.phelpspersonnel.com\\/","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBqB3dmMwF;_ylu=X3oDMTEwazlldjdwBGNvbG8DdwRsA1dTMQRwb3MDNTIEc2VjA3NyBHZ0aWQD\\/SIG=11j85rkug\\/EXP=1147592336\\/**http%3a\\/\\/www.phelpspersonnel.com\\/","ModificationDate":1060239600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBrR3dmMwF;_ylu=X3oDMTBxZWJqMW1lBGNvbG8DdwRwb3MDNTIEc2VjA3NyBHZ0aWQD\\/SIG=164jn86me\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.phelpspersonnel.com\\/%26w=132%26d=KRPdjUaqMwQa%26icp=1%26.intl=us","Size":"6288"}},{"Title":"132 - Loss and resumption of Australian citizenship - Declaration of desre to resume Australian citizenship under ... ","Summary":"... retain another citizenship \\u0096 be under the age of 25 years. 132 (Design date 0705) - Page 1 ... 23A, 23AA, 23AB or 23B. 132 (Design date 0705) - Page 2 ...","Url":"http:\\/\\/www.immi.gov.au\\/allforms\\/pdf\\/132.pdf","ClickUrl":"http:\\/\\/www.immi.gov.au\\/allforms\\/pdf\\/132.pdf#search=\'\'","ModificationDate":1141113600,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBsh3dmMwF;_ylu=X3oDMTBxYzdmNTNvBGNvbG8DdwRwb3MDNTMEc2VjA3NyBHZ0aWQD\\/SIG=16gtd8vkd\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.immi.gov.au\\/allforms\\/pdf\\/132.pdf%26w=132%26d=XLvxbUaqMvqk%26icp=1%26.intl=us","Size":"118238"}},{"Title":"Communication Workersof America Local 3808","Summary":"News Highlights and Headlines. Nominations for one (1) 402 Franklin Road Area Representative will be taken at the June 6, 2006 Membership Meeting. BellSouth CONTRACT INFO. Frequently asked Q&A","Url":"http:\\/\\/cwa3808.org\\/","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBtB3dmMwF;_ylu=X3oDMTEwMGJ0MmQ1BGNvbG8DdwRsA1dTMQRwb3MDNTQEc2VjA3NyBHZ0aWQD\\/SIG=117pqud0l\\/EXP=1147592336\\/**http%3a\\/\\/cwa3808.org\\/","ModificationDate":1147071600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBuR3dmMwF;_ylu=X3oDMTBxY3NiaDkyBGNvbG8DdwRwb3MDNTQEc2VjA3NyBHZ0aWQD\\/SIG=15od3j3p8\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=cwa3808.org\\/%26w=132%26d=ahqtKEaqMwC6%26icp=1%26.intl=us","Size":"53103"}},{"Title":"Mirabilis ICQ 98a Vulnerability","Summary":"... Bugtraq ID: 132. Class: Failure to Handle Exceptional Conditions ...","Url":"http:\\/\\/www.securityfocus.com\\/bid\\/132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBux3dmMwF;_ylu=X3oDMTEwNXIwZzI2BGNvbG8DdwRsA1dTMQRwb3MDNTUEc2VjA3NyBHZ0aWQD\\/SIG=11ocj9p23\\/EXP=1147592336\\/**http%3a\\/\\/www.securityfocus.com\\/bid\\/132","ModificationDate":1146034800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBwB3dmMwF;_ylu=X3oDMTBxbnNnYWFhBGNvbG8DdwRwb3MDNTUEc2VjA3NyBHZ0aWQD\\/SIG=169dn3s31\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.securityfocus.com\\/bid\\/132%26w=132%26d=bbuQiUaqMsU1%26icp=1%26.intl=us","Size":"11819"}},{"Title":"Downloaded 23 Dec 2001 to 132.76.33.15. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/... ","Summary":"Downloaded 23 Dec 2001 to 132.76.33.15. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/jcpo\\/jcpcr.jsp. Downloaded 23 Dec 2001 to 132.76.33.15.","Url":"http:\\/\\/theochem.weizmann.ac.il\\/AIPreprints\\/8.pdf","ClickUrl":"http:\\/\\/theochem.weizmann.ac.il\\/AIPreprints\\/8.pdf#search=\'\'","ModificationDate":1092294000,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBxR3dmMwF;_ylu=X3oDMTBxcjhpcTNrBGNvbG8DdwRwb3MDNTYEc2VjA3NyBHZ0aWQD\\/SIG=16l1r1fiu\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=theochem.weizmann.ac.il\\/AIPreprints\\/8.pdf%26w=132%26d=VrF160aqMjIt%26icp=1%26.intl=us","Size":"1754089"}},{"Title":"Chapter RL 132","Summary":"DEPARTMENT OF REGULATION AND LICENSING. Unofficial Text (See Printed Volume). Current through date and Register shown on Title Page. Register, July, 1999, No. 523. Chapter RL 132. APPLICATIONS. RL 132.01. Authority. RL 132.02 ... Note: Chapter RL 132 was created as an emergency rule effective 11\\u20131\\u201398 ...","Url":"http:\\/\\/www.legis.state.wi.us\\/rsb\\/code\\/rl\\/rl132.pdf","ClickUrl":"http:\\/\\/www.legis.state.wi.us\\/rsb\\/code\\/rl\\/rl132.pdf#search=\'\'","ModificationDate":1011859200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcByh3dmMwF;_ylu=X3oDMTBxZjI4aHZhBGNvbG8DdwRwb3MDNTcEc2VjA3NyBHZ0aWQD\\/SIG=16nps3tc2\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.legis.state.wi.us\\/rsb\\/code\\/rl\\/rl132.pdf%26w=132%26d=VTECeUaqMi-4%26icp=1%26.intl=us","Size":"8138"}},{"Title":"Rebuffing Bush, 132 Mayors Embrace Kyoto Rules - New York Times","Summary":"Greg Nickels of Seattle and 131 other like-minded mayors have joined a bipartisan coalition to fight global warming on the local level.","Url":"http:\\/\\/www.nytimes.com\\/2005\\/05\\/14\\/national\\/14kyoto.html?ex=1273723200&en=c02e1cce1ca43706&ei=5088","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBzB3dmMwF;_ylu=X3oDMTEwbm43bzM3BGNvbG8DdwRsA1dTMQRwb3MDNTgEc2VjA3NyBHZ0aWQD\\/SIG=13repbe72\\/EXP=1147592336\\/**http%3a\\/\\/www.nytimes.com\\/2005\\/05\\/14\\/national\\/14kyoto.html%3fex=1273723200%26en=c02e1cce1ca43706%26ei=5088","ModificationDate":1147330800,"MimeType":"text\\/html"},{"Title":"DHS-Revised Rule 132","Summary":"Easy access to Illinois services and information ... an e-mail address to pose questions regarding Rule 132. Please review the Rule 132 Q&A document posted on ...","Url":"http:\\/\\/www.dhs.state.il.us\\/revisedRule132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB0h3dmMwF;_ylu=X3oDMTEwMjl1dW84BGNvbG8DdwRsA1dTMQRwb3MDNTkEc2VjA3NyBHZ0aWQD\\/SIG=11tb4gcma\\/EXP=1147592336\\/**http%3a\\/\\/www.dhs.state.il.us\\/revisedRule132","ModificationDate":1147244400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB1x3dmMwF;_ylu=X3oDMTBxOWMyazRxBGNvbG8DdwRwb3MDNTkEc2VjA3NyBHZ0aWQD\\/SIG=16e8khp3d\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.dhs.state.il.us\\/revisedRule132%26w=132%26d=Oc4YikaqMwgM%26icp=1%26.intl=us","Size":"22903"}},{"Title":"211 CMR: DIVISION OF INSURANCE 6\\/27\\/97 211 CMR - 837 211 CMR 132.00: ACTUARIAL OPINION AND MEMORANDUM REGULATION ... ","Summary":"... 132.01: Purpose. 132.02: Authority. 132.03: Scope. 132.04: Definitions. 132.05: General Requirements. 132.06: Required Opinions. 132 ... Adequacy Analysis. 132.08: Statement of Actuarial ...","Url":"http:\\/\\/www.mass.gov\\/doi\\/Legal_Hearings\\/211_132.PDF","ClickUrl":"http:\\/\\/www.mass.gov\\/doi\\/Legal_Hearings\\/211_132.PDF#search=\'\'","ModificationDate":1003906800,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB3B3dmMwF;_ylu=X3oDMTBxdG9ldThsBGNvbG8DdwRwb3MDNjAEc2VjA3NyBHZ0aWQD\\/SIG=16no3ibvg\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.mass.gov\\/doi\\/Legal_Hearings\\/211_132.PDF%26w=132%26d=C4QXPkaqMjRM%26icp=1%26.intl=us","Size":"45945"}},{"Title":"Downloaded 22 Jul 2003 to 132.66.16.23. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/... ","Summary":"Downloaded 22 Jul 2003 to 132.66.16.23. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/jcpo\\/jcpcr.jsp. Downloaded 22 Jul 2003 to 132.66.16.23.","Url":"http:\\/\\/star.tau.ac.il\\/~andelman\\/reprints\\/021_JCP_1987_87_7229.pdf","ClickUrl":"http:\\/\\/star.tau.ac.il\\/~andelman\\/reprints\\/021_JCP_1987_87_7229.pdf#search=\'\'","ModificationDate":1058857200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB4R3dmMwF;_ylu=X3oDMTBxZzZxbDZiBGNvbG8DdwRwb3MDNjEEc2VjA3NyBHZ0aWQD\\/SIG=17adesqgt\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=star.tau.ac.il\\/%257Eandelman\\/reprints\\/021_JCP_1987_87_7229.pdf%26w=132%26d=Lvkyh0aqMh8L%26icp=1%26.intl=us","Size":"1798906"}},{"Title":"Special Troops Battalion, 4th Brigade, 10th Mountain Division Insignia","Summary":"The Institute of Heraldry\'s Special Troops Battalion Section, Special Troops Battalion, 4th Brigade, 10th Mountain Division Insignia Page","Url":"http:\\/\\/www.tioh.hqda.pentagon.mil\\/STB\\/STB4Brigade10MountainDivision.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB4x3dmMwF;_ylu=X3oDMTEwZjFqOHFiBGNvbG8DdwRsA1dTMQRwb3MDNjIEc2VjA3NyBHZ0aWQD\\/SIG=12rjb6bu4\\/EXP=1147592336\\/**http%3a\\/\\/www.tioh.hqda.pentagon.mil\\/STB\\/STB4Brigade10MountainDivision.htm","ModificationDate":1109923200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB6B3dmMwF;_ylu=X3oDMTBxZzN1cnRoBGNvbG8DdwRwb3MDNjIEc2VjA3NyBHZ0aWQD\\/SIG=17c61sq2b\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.tioh.hqda.pentagon.mil\\/STB\\/STB4Brigade10MountainDivision.htm%26w=132%26d=CjDx1kaqMwEn%26icp=1%26.intl=us","Size":"8896"}},{"Title":"NNSA\'s Brooks lauds partnership in nonproliferation","Summary":"... ite Way. U133. 132. A-4. 135. 134. 132. Fun With Science ...","Url":"http:\\/\\/www.llnl.gov\\/llnl\\/06news\\/employee\\/articles\\/2001\\/12.21.01newsline.pdf","ClickUrl":"http:\\/\\/www.llnl.gov\\/llnl\\/06news\\/employee\\/articles\\/2001\\/12.21.01newsline.pdf#search=\'\'","ModificationDate":1099555200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB7R3dmMwF;_ylu=X3oDMTBxZ25nbWN0BGNvbG8DdwRwb3MDNjMEc2VjA3NyBHZ0aWQD\\/SIG=17go91rgp\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.llnl.gov\\/llnl\\/06news\\/employee\\/articles\\/2001\\/12.21.01newsline.pdf%26w=132%26d=aLdSWEaqMjYB%26icp=1%26.intl=us","Size":"472758"}},{"Title":"Psalms 132. The Holy Bible: King James Version.","Summary":"... Reference &gt; The Bible &gt; The King James Version &gt; Psalms &gt; 132 ... The Psalms. 132. A Prayer for Blessing on the Sanctuary ...","Url":"http:\\/\\/www.bartleby.com\\/108\\/19\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB7x3dmMwF;_ylu=X3oDMTEwdm1iOTMzBGNvbG8DdwRsA1dTMQRwb3MDNjQEc2VjA3NyBHZ0aWQD\\/SIG=11rfct28r\\/EXP=1147592336\\/**http%3a\\/\\/www.bartleby.com\\/108\\/19\\/132.html","ModificationDate":1134460800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB9B3dmMwF;_ylu=X3oDMTBxa3RqY29tBGNvbG8DdwRwb3MDNjQEc2VjA3NyBHZ0aWQD\\/SIG=16ckhlf21\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.bartleby.com\\/108\\/19\\/132.html%26w=132%26d=Om0HPEaqMjyM%26icp=1%26.intl=us","Size":"26896"}},{"Title":"The Criterion Collection: Ruling Class, The","Summary":"Title Person. Film Info. 1972. 154 minutes. Color. 1.77:1. Dolby Digital Mono 1.0. Anamorphic. English. Release Info. Catalog Number: CC1575D. ISBN: 1-55940-922-3. UPC: 7-15515-0124-2-3. SRP: \$39.95. Synopsis","Url":"http:\\/\\/www.criterionco.com\\/asp\\/release.asp?id=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB9h3dmMwF;_ylu=X3oDMTEwcTRya2ltBGNvbG8DdwRsA1dTMQRwb3MDNjUEc2VjA3NyBHZ0aWQD\\/SIG=1272o9dh7\\/EXP=1147592336\\/**http%3a\\/\\/www.criterionco.com\\/asp\\/release.asp%3fid=132","ModificationDate":1147244400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB.x3dmMwF;_ylu=X3oDMTBxdDMwMGJvBGNvbG8DdwRwb3MDNjUEc2VjA3NyBHZ0aWQD\\/SIG=16u4fa0dg\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.criterionco.com\\/asp\\/release.asp%253Fid%253D132%26w=132%26d=L2PGVEaqMwN7%26icp=1%26.intl=us","Size":"16920"}},{"Title":"AJP Legacy -- Table of Contents (February 28 1941, 132 [2])","Summary":"Contents: February 28 1941, Volume 132, Issue 2 [Index by Author] Other Issues: To see an article, click its [Full Text] link.","Url":"http:\\/\\/ajplegacy.physiology.org\\/content\\/vol132\\/issue2\\/index.shtml","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB_R3dmMwF;_ylu=X3oDMTEwZWhkczJpBGNvbG8DdwRsA1dTMQRwb3MDNjYEc2VjA3NyBHZ0aWQD\\/SIG=12lf1ce7j\\/EXP=1147592336\\/**http%3a\\/\\/ajplegacy.physiology.org\\/content\\/vol132\\/issue2\\/index.shtml","ModificationDate":1141459200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBAh7dmMwF;_ylu=X3oDMTBxNzI0azAwBGNvbG8DdwRwb3MDNjYEc2VjA3NyBHZ0aWQD\\/SIG=176uub081\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=ajplegacy.physiology.org\\/content\\/vol132\\/issue2\\/index.shtml%26w=132%26d=Ms_vOEaqMj-H%26icp=1%26.intl=us","Size":"24095"}},{"Title":"released a letter (PDF)","Summary":"","Url":"http:\\/\\/www.house.gov\\/judiciary_democrats\\/letters\\/rovehrgrequestltr71405.pdf","ClickUrl":"http:\\/\\/www.house.gov\\/judiciary_democrats\\/letters\\/rovehrgrequestltr71405.pdf#search=\'\'","ModificationDate":1121410800,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBBx7dmMwF;_ylu=X3oDMTBxOXQ3MWF0BGNvbG8DdwRwb3MDNjcEc2VjA3NyBHZ0aWQD\\/SIG=17g69a880\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.house.gov\\/judiciary_democrats\\/letters\\/rovehrgrequestltr71405.pdf%26w=132%26d=LPrB50aqMqRY%26icp=1%26.intl=us","Size":"381000"}},{"Title":"NC General Statutes Chapter 132","Summary":"North Carolina. State Public Records Law. North Carolina General Statutes. Chapter 132. Public Records. Last updated December 10th, 1999. Contents. Section Title. 132-1. \\"Public records\\" defined. 132-1.1. ... Section Title. 132-1. \\"Public records\\" defined. 132-1.1. Confidential communications by legal counsel to public board or agency; State tax ...","Url":"http:\\/\\/www.ah.dcr.state.nc.us\\/e-records\\/ncgs\\/ncgs132.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBCR7dmMwF;_ylu=X3oDMTEwMjJmbW84BGNvbG8DdwRsA1dTMQRwb3MDNjgEc2VjA3NyBHZ0aWQD\\/SIG=12ctoo16c\\/EXP=1147592336\\/**http%3a\\/\\/www.ah.dcr.state.nc.us\\/e-records\\/ncgs\\/ncgs132.htm","ModificationDate":953625600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBDh7dmMwF;_ylu=X3oDMTBxYjJtcGphBGNvbG8DdwRwb3MDNjgEc2VjA3NyBHZ0aWQD\\/SIG=16t5vbni8\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.ah.dcr.state.nc.us\\/e-records\\/ncgs\\/ncgs132.htm%26w=132%26d=MyfGH0aqMwR0%26icp=1%26.intl=us","Size":"43695"}},{"Title":"Technical Introduction to CDMA","Summary":"Course 132. Technical. Introduction to CDMA. Technical. Introduction to CDMA. IS-95, CDMA2000 and a glimpse of 1xEV. February, 2005. 132 - 1. Technical Introduction to CDMA v4.0 (c) 2005 Scott Baxter. Course Outline. Basic CDMA Principles. Coding","Url":"http:\\/\\/www.howcdmaworks.com\\/intro\\/132v3.pdf","ClickUrl":"http:\\/\\/www.howcdmaworks.com\\/intro\\/132v3.pdf#search=\'\'","ModificationDate":1107590400,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBEx7dmMwF;_ylu=X3oDMTBxbTJnbmxhBGNvbG8DdwRwb3MDNjkEc2VjA3NyBHZ0aWQD\\/SIG=16ghr9cvr\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.howcdmaworks.com\\/intro\\/132v3.pdf%26w=132%26d=B6dAbEaqMu7t%26icp=1%26.intl=us","Size":"4342039"}},{"Title":"Thread Images Digitizing","Summary":"Free embroidery design. Specializes in providing custom quality embroidery designs to the professional embroiderer.","Url":"http:\\/\\/www.threadimages.com\\/","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBFR7dmMwF;_ylu=X3oDMTEwMmI2cWQzBGNvbG8DdwRsA1dTMQRwb3MDNzAEc2VjA3NyBHZ0aWQD\\/SIG=11gsp7523\\/EXP=1147592336\\/**http%3a\\/\\/www.threadimages.com\\/","ModificationDate":1147158000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBGx7dmMwF;_ylu=X3oDMTBxaml0dDF0BGNvbG8DdwRwb3MDNzAEc2VjA3NyBHZ0aWQD\\/SIG=161ukrsfh\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.threadimages.com\\/%26w=132%26d=BmPG10aqMwgW%26icp=1%26.intl=us","Size":"55861"}},{"Title":"Psalms Chapter 132:1-18.","Summary":"Read the Hebrew Transliteration Psalms 132:1-18 Online.","Url":"http:\\/\\/bibledbdata.org\\/onlinebibles\\/hebrew_translit\\/19_132.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBHR7dmMwF;_ylu=X3oDMTEwdXJnMnJuBGNvbG8DdwRsA1dTMQRwb3MDNzEEc2VjA3NyBHZ0aWQD\\/SIG=12i1mped7\\/EXP=1147592336\\/**http%3a\\/\\/bibledbdata.org\\/onlinebibles\\/hebrew_translit\\/19_132.htm","ModificationDate":1044172800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBIh7dmMwF;_ylu=X3oDMTBxNmJocG1iBGNvbG8DdwRwb3MDNzEEc2VjA3NyBHZ0aWQD\\/SIG=173o8ajtj\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=bibledbdata.org\\/onlinebibles\\/hebrew_translit\\/19_132.htm%26w=132%26d=dfiAJkaqMi1u%26icp=1%26.intl=us","Size":"9706"}},{"Title":"PRC-132","Summary":"K6ERO Portable and pedestrian mobile amateur radio. PRC-132 &amp; M50B. To the left is a Loral Terracom M50B. made in 1988 Serial#19 . Its 10 inches tall. with out battery box or external power. box , 3.5 inches wide and 5.25 inches. deep, weight 6.9 lbs . ... The M50B is the early issue version of the. PRC-132 special operations HF Radio ...","Url":"http:\\/\\/www.muttmotorpool.com\\/PRC-132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBJB7dmMwF;_ylu=X3oDMTEwYm80YTY1BGNvbG8DdwRsA1dTMQRwb3MDNzIEc2VjA3NyBHZ0aWQD\\/SIG=11ou3h7bi\\/EXP=1147592336\\/**http%3a\\/\\/www.muttmotorpool.com\\/PRC-132","ModificationDate":1146294000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBKR7dmMwF;_ylu=X3oDMTBxaDgzYWcxBGNvbG8DdwRwb3MDNzIEc2VjA3NyBHZ0aWQD\\/SIG=169r7ofhd\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.muttmotorpool.com\\/PRC-132%26w=132%26d=Utj0H0aqMs48%26icp=1%26.intl=us","Size":"19723"}},{"Title":"Firenze 132 \\/ 170","Summary":"Firenze 132 \\/ 170. Matte Presentation Paper. 132 gram 2-side coated. 170 gram single side coated. Magicl\\u00e9e\\u00ae Firenze 132 and Firenze 170 matte. papers are designed for poster applications and. have an impressive price performance ratio. The ... If using the 132 gram. paper for 2-sided imaging ink limit on ...","Url":"http:\\/\\/www.magicinkjet.com\\/client_data_pdf\\/guides\\/Firenze.pdf","ClickUrl":"http:\\/\\/www.magicinkjet.com\\/client_data_pdf\\/guides\\/Firenze.pdf#search=\'\'","ModificationDate":1081839600,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBLh7dmMwF;_ylu=X3oDMTBxbXY4b2luBGNvbG8DdwRwb3MDNzMEc2VjA3NyBHZ0aWQD\\/SIG=172sdum75\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.magicinkjet.com\\/client_data_pdf\\/guides\\/Firenze.pdf%26w=132%26d=Q4ILzEaqMh1n%26icp=1%26.intl=us","Size":"2152647"}},{"Title":"Museletter # 132 \\/ February 2003: The US and Eurasia: End Game for the Industrial Era?","Summary":"Defining democracy in the wake of the 2002 elections in the U.S.A..","Url":"http:\\/\\/www.museletter.com\\/archive\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBMB7dmMwF;_ylu=X3oDMTEwNGRiZ3FjBGNvbG8DdwRsA1dTMQRwb3MDNzQEc2VjA3NyBHZ0aWQD\\/SIG=11upr7v32\\/EXP=1147592336\\/**http%3a\\/\\/www.museletter.com\\/archive\\/132.html","ModificationDate":1108540800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBNR7dmMwF;_ylu=X3oDMTBxZTNpbG1nBGNvbG8DdwRwb3MDNzQEc2VjA3NyBHZ0aWQD\\/SIG=16fg9g4no\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.museletter.com\\/archive\\/132.html%26w=132%26d=SS0AQEaqMvuR%26icp=1%26.intl=us","Size":"47428"}},{"Title":"Downloaded 25 Oct 2002 to 132.66.16.12. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/... ","Summary":"Downloaded 25 Oct 2002 to 132.66.16.12. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/jcpo\\/jcpcr.jsp. Downloaded 25 Oct 2002 to 132.66.16.12.","Url":"http:\\/\\/star.tau.ac.il\\/~andelman\\/reprints\\/018_JCP_1987_86_3673.pdf","ClickUrl":"http:\\/\\/star.tau.ac.il\\/~andelman\\/reprints\\/018_JCP_1987_86_3673.pdf#search=\'\'","ModificationDate":1035529200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBOh7dmMwF;_ylu=X3oDMTBxbGZmanU1BGNvbG8DdwRwb3MDNzUEc2VjA3NyBHZ0aWQD\\/SIG=17a4s312u\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=star.tau.ac.il\\/%257Eandelman\\/reprints\\/018_JCP_1987_86_3673.pdf%26w=132%26d=YANT3kaqMhfd%26icp=1%26.intl=us","Size":"1204421"}},{"Title":"Hepatitis B Virus: A Comprehensive Strategy for Eliminating Transmission in the United States Through Universal ... ","Summary":"Hepatitis B Virus: A Comprehensive Strategy for Eliminating Transmission in the United States Through Universal Childhood Vaccination: Recommendations of the Immunization Practices Advisory Committee (ACIP)","Url":"http:\\/\\/www.cdc.gov\\/mmwr\\/preview\\/mmwrhtml\\/00033405.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBPB7dmMwF;_ylu=X3oDMTEwb2NlbHRuBGNvbG8DdwRsA1dTMQRwb3MDNzYEc2VjA3NyBHZ0aWQD\\/SIG=129kdm2n4\\/EXP=1147592336\\/**http%3a\\/\\/www.cdc.gov\\/mmwr\\/preview\\/mmwrhtml\\/00033405.htm","ModificationDate":1139990400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBQR7dmMwF;_ylu=X3oDMTBxZm44bG9sBGNvbG8DdwRwb3MDNzYEc2VjA3NyBHZ0aWQD\\/SIG=16qv48dkp\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.cdc.gov\\/mmwr\\/preview\\/mmwrhtml\\/00033405.htm%26w=132%26d=b-Kz6UaqMwIM%26icp=1%26.intl=us","Size":"87232"}},{"Title":"Tour de France 2005","Summary":"... QUICK STEP - INNERGETIC. 132 - CRETSKENS Wilfried (BEL) Born in 10\\/07\\/1976 \\u00e0 Herk-de-Stad (BEL ...","Url":"http:\\/\\/www.letour.fr\\/2005\\/TDF\\/RIDERS\\/us\\/coureurs\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBQx7dmMwF;_ylu=X3oDMTEwYjdwazg2BGNvbG8DdwRsA1dTMQRwb3MDNzcEc2VjA3NyBHZ0aWQD\\/SIG=12dpjmcf6\\/EXP=1147592336\\/**http%3a\\/\\/www.letour.fr\\/2005\\/TDF\\/RIDERS\\/us\\/coureurs\\/132.html","ModificationDate":1121583600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBSB7dmMwF;_ylu=X3oDMTBxa21laGFvBGNvbG8DdwRwb3MDNzcEc2VjA3NyBHZ0aWQD\\/SIG=16u0nn96f\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.letour.fr\\/2005\\/TDF\\/RIDERS\\/us\\/coureurs\\/132.html%26w=132%26d=BTTUC0aqMv4Z%26icp=1%26.intl=us","Size":"12171"}},{"Title":"This American Life | Father\'s Day \'99","Summary":"... 6\\/18\\/99. Episode 132. For Father\'s Day, stories about fathers going out of their way to protect their kids, and kids going ...","Url":"http:\\/\\/www.thisamericanlife.org\\/pages\\/descriptions\\/99\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBSh7dmMwF;_ylu=X3oDMTEwNDFvam42BGNvbG8DdwRsA1dTMQRwb3MDNzgEc2VjA3NyBHZ0aWQD\\/SIG=12iobnkgv\\/EXP=1147592336\\/**http%3a\\/\\/www.thisamericanlife.org\\/pages\\/descriptions\\/99\\/132.html","ModificationDate":1146466800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBTx7dmMwF;_ylu=X3oDMTBxZzFuNDV2BGNvbG8DdwRwb3MDNzgEc2VjA3NyBHZ0aWQD\\/SIG=1738d5fam\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.thisamericanlife.org\\/pages\\/descriptions\\/99\\/132.html%26w=132%26d=Ss_yvkaqMvWK%26icp=1%26.intl=us","Size":"8411"}},{"Title":"Downloaded 21 Jan 2004 to 132.66.16.34. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/... ","Summary":"Downloaded 21 Jan 2004 to 132.66.16.34. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/jcpo\\/jcpcr.jsp. Downloaded 21 Jan 2004 to 132.66.16.34.","Url":"http:\\/\\/femto.tau.ac.il\\/~nitzan\\/3.pdf","ClickUrl":"http:\\/\\/femto.tau.ac.il\\/~nitzan\\/3.pdf#search=\'\'","ModificationDate":1088665200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBVB7dmMwF;_ylu=X3oDMTBxdXJmcnJsBGNvbG8DdwRwb3MDNzkEc2VjA3NyBHZ0aWQD\\/SIG=16da99c2u\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=femto.tau.ac.il\\/%257Enitzan\\/3.pdf%26w=132%26d=b5Br7UaqMjB1%26icp=1%26.intl=us","Size":"1071954"}},{"Title":"CHAPTER 12 ENVIRONMENTAL REVIEW \\u2013 EAST 132","Summary":"Solid Waste Management Plan. 12-1. October2004. DEIS. CHAPTER 12. ENVIRONMENTAL REVIEW \\u2013 EAST 132. ND. STREET SITE. 12.1 Introduction. The East 132. nd. Street Site is currently permitted to handle 2,999 tpd of putrescible waste, with a","Url":"http:\\/\\/www.nyc.gov\\/html\\/dsny\\/downloads\\/pdf\\/pubnrpts\\/swmp-4oct\\/deis\\/chapter12.pdf","ClickUrl":"http:\\/\\/www.nyc.gov\\/html\\/dsny\\/downloads\\/pdf\\/pubnrpts\\/swmp-4oct\\/deis\\/chapter12.pdf#search=\'\'","ModificationDate":1099555200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBWR7dmMwF;_ylu=X3oDMTBxaHNlODZrBGNvbG8DdwRwb3MDODAEc2VjA3NyBHZ0aWQD\\/SIG=17llu5bkp\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.nyc.gov\\/html\\/dsny\\/downloads\\/pdf\\/pubnrpts\\/swmp-4oct\\/deis\\/chapter12.pdf%26w=132%26d=RPmqz0aqMiKh%26icp=1%26.intl=us","Size":"1417879"}},{"Title":"Psalms 132 \\/ Hebrew - English Bible \\/ Mechon-Mamre","Summary":"... 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 ... Psalms Chapter 132. \\u00e0 \\u00f9\\u00d1\\u00c4\\u00e9\\u00f8, \\u00e4\\u00c7\\u00ee\\u00cc\\u00c7\\u00f2\\u00c2\\u00ec\\u00e5\\u00c9\\u00fa ...","Url":"http:\\/\\/www.mechon-mamre.org\\/p\\/pt\\/pt26d2.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBWx7dmMwF;_ylu=X3oDMTEwc3RoZXBrBGNvbG8DdwRsA1dTMQRwb3MDODEEc2VjA3NyBHZ0aWQD\\/SIG=11vhbotpk\\/EXP=1147592336\\/**http%3a\\/\\/www.mechon-mamre.org\\/p\\/pt\\/pt26d2.htm","ModificationDate":1138694400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBYB7dmMwF;_ylu=X3oDMTBxNjUwMGs2BGNvbG8DdwRwb3MDODEEc2VjA3NyBHZ0aWQD\\/SIG=16gg7tf89\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.mechon-mamre.org\\/p\\/pt\\/pt26d2.htm%26w=132%26d=WTHLVUaqMu6s%26icp=1%26.intl=us","Size":"13881"}},{"Title":"US CODE: Title 28,132. Creation and composition of district courts","Summary":"Creation and composition of district courts. Release date: 2005-09-29. (a) There shall be in each judicial district a district court which shall be a court of record known as the United States District Court for the district.","Url":"http:\\/\\/www4.law.cornell.edu\\/uscode\\/28\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBYh7dmMwF;_ylu=X3oDMTEwcWlsMGMxBGNvbG8DdwRsA1dTMQRwb3MDODIEc2VjA3NyBHZ0aWQD\\/SIG=122ek55sr\\/EXP=1147592336\\/**http%3a\\/\\/www4.law.cornell.edu\\/uscode\\/28\\/132.html","ModificationDate":1143273600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBZx7dmMwF;_ylu=X3oDMTBxYWs1NmFvBGNvbG8DdwRwb3MDODIEc2VjA3NyBHZ0aWQD\\/SIG=16jb47dcg\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www4.law.cornell.edu\\/uscode\\/28\\/132.html%26w=132%26d=QQ2S7EaqMjbv%26icp=1%26.intl=us","Size":"9107"}},{"Title":"Fiscal Note","Summary":"... Bill, Resolutions and Memorial Documents. SB05-132 ... Final Act\\/ Resolutions or Memorial: 132_enr.pdfn. 132.enrn. Preamended Documents ...","Url":"http:\\/\\/www.leg.state.co.us\\/Clics2005a\\/csl.nsf\\/fsbillcont3\\/A4058D1E27570DC987256F7E0059EAA8?Open&file=132_enr.pdf","ClickUrl":"http:\\/\\/www.leg.state.co.us\\/Clics2005a\\/csl.nsf\\/fsbillcont3\\/A4058D1E27570DC987256F7E0059EAA8?Open&file=132_enr.pdf#search=\'\'","ModificationDate":1124521200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBbB7dmMwF;_ylu=X3oDMTBxbGJmNjEwBGNvbG8DdwRwb3MDODMEc2VjA3NyBHZ0aWQD\\/SIG=191n41l4b\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.leg.state.co.us\\/Clics2005a\\/csl.nsf\\/fsbillcont3\\/A4058D1E27570DC987256F7E0059EAA8%253FOpen%2526file%253D132_enr.pdf%26w=132%26d=LViIXUaqMkKL%26icp=1%26.intl=us","Size":"87930"}},{"Title":"Development -- Table of Contents (January 1 2005, 132 [1])","Summary":"To see an article, click its [Full Text] link. To review many abstracts, check the boxes to the left of the titles you want, and click the \'Get All Checked Abstract(s)\' button. To see one abstract at a time, click its [Abstract] link.","Url":"http:\\/\\/dev.biologists.org\\/content\\/vol132\\/issue1","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBbh7dmMwF;_ylu=X3oDMTEwdWdwcnIyBGNvbG8DdwRsA1dTMQRwb3MDODQEc2VjA3NyBHZ0aWQD\\/SIG=123019ojj\\/EXP=1147592336\\/**http%3a\\/\\/dev.biologists.org\\/content\\/vol132\\/issue1","ModificationDate":1147071600,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBcx7dmMwF;_ylu=X3oDMTBxczM2ZHFvBGNvbG8DdwRwb3MDODQEc2VjA3NyBHZ0aWQD\\/SIG=16kng2m03\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=dev.biologists.org\\/content\\/vol132\\/issue1%26w=132%26d=LFOVEUaqMwR5%26icp=1%26.intl=us","Size":"25711"}},{"Title":"Winter Carnival (1939)","Summary":"Winter Carnival - Cast, Crew, Reviews, Plot Summary, Comments, Discussion, Taglines, Trailers, Posters, Photos, Showtimes, Link to Official Site, Fan Sites","Url":"http:\\/\\/www.imdb.com\\/title\\/tt0032132\\/","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBdR7dmMwF;_ylu=X3oDMTEwb3IzajNvBGNvbG8DdwRsA1dTMQRwb3MDODUEc2VjA3NyBHZ0aWQD\\/SIG=11o6bhdhm\\/EXP=1147592336\\/**http%3a\\/\\/www.imdb.com\\/title\\/tt0032132\\/","ModificationDate":1147417200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBeh7dmMwF;_ylu=X3oDMTBxcG9jdDNjBGNvbG8DdwRwb3MDODUEc2VjA3NyBHZ0aWQD\\/SIG=1696d85k0\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.imdb.com\\/title\\/tt0032132\\/%26w=132%26d=OnC3HUaqMw5H%26icp=1%26.intl=us","Size":"44616"}},{"Title":"XM Radio - C-SPAN Radio","Summary":"... XM 132. &lt;Previous. Next ...","Url":"http:\\/\\/www.xmradio.com\\/programming\\/channel_page.jsp?ch=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBfB7dmMwF;_ylu=X3oDMTEwa3RyODBuBGNvbG8DdwRsA1dTMQRwb3MDODYEc2VjA3NyBHZ0aWQD\\/SIG=12gtfnvt7\\/EXP=1147592336\\/**http%3a\\/\\/www.xmradio.com\\/programming\\/channel_page.jsp%3fch=132","ModificationDate":1147158000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBgR7dmMwF;_ylu=X3oDMTBxN24xYzc0BGNvbG8DdwRwb3MDODYEc2VjA3NyBHZ0aWQD\\/SIG=1774en6i4\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.xmradio.com\\/programming\\/channel_page.jsp%253Fch%253D132%26w=132%26d=WS_5a0aqMwE5%26icp=1%26.intl=us","Size":"23601"}},{"Title":"Al-Qaeda tape says bin Laden alive, urges Iraqis to fight - theage.com.au","Summary":"Arabic television channel Al Arabiya has aired what it says is an audiotape from an al-Qaeda spokesman who says Osama bin Laden is alive and well. - The Age","Url":"http:\\/\\/www.theage.com.au\\/articles\\/2003\\/08\\/18\\/1061059775995.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBgx7dmMwF;_ylu=X3oDMTEwNXU4aDFlBGNvbG8DdwRsA1dTMQRwb3MDODcEc2VjA3NyBHZ0aWQD\\/SIG=12jscc3ng\\/EXP=1147592336\\/**http%3a\\/\\/www.theage.com.au\\/articles\\/2003\\/08\\/18\\/1061059775995.html","ModificationDate":1147158000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBiB7dmMwF;_ylu=X3oDMTBxZjFrNnYwBGNvbG8DdwRwb3MDODcEc2VjA3NyBHZ0aWQD\\/SIG=174fs4fo6\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.theage.com.au\\/articles\\/2003\\/08\\/18\\/1061059775995.html%26w=132%26d=VUVD3UaqMwJD%26icp=1%26.intl=us","Size":"25163"}},{"Title":"Psalms 132","Summary":"Psalms 132. 132:1. Lord, remember David, and all his afflictions: 132:2. How he sware unto the LORD, and vowed unto the mighty God of Jacob; 132:3 ... Psalms 132. Chapters: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ... 132:3. Surely I will not come into the tabernacle of my ...","Url":"http:\\/\\/www.maitreg.com\\/bible\\/view.asp?book=38&chapter=132","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBih7dmMwF;_ylu=X3oDMTEwZjVxcHI4BGNvbG8DdwRsA1dTMQRwb3MDODgEc2VjA3NyBHZ0aWQD\\/SIG=12hild8td\\/EXP=1147592336\\/**http%3a\\/\\/www.maitreg.com\\/bible\\/view.asp%3fbook=38%26chapter=132","ModificationDate":1117609200,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBjx7dmMwF;_ylu=X3oDMTBxb2JpMW5pBGNvbG8DdwRwb3MDODgEc2VjA3NyBHZ0aWQD\\/SIG=17elhve1h\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.maitreg.com\\/bible\\/view.asp%253Fbook%253D38%2526chapter%253D132%26w=132%26d=TMHn-UaqMjbU%26icp=1%26.intl=us","Size":"27216"}},{"Title":"132","Summary":"35 U.S.C. 132 Notice of rejection; reexamination. - Patent Laws. 35 U.S.C. 132 Notice of rejection; reexamination.","Url":"http:\\/\\/www.uspto.gov\\/web\\/offices\\/pac\\/mpep\\/documents\\/appxl_35_U_S_C_132.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBkR7dmMwF;_ylu=X3oDMTEwNTA2aTh1BGNvbG8DdwRsA1dTMQRwb3MDODkEc2VjA3NyBHZ0aWQD\\/SIG=12ucmimjn\\/EXP=1147592336\\/**http%3a\\/\\/www.uspto.gov\\/web\\/offices\\/pac\\/mpep\\/documents\\/appxl_35_U_S_C_132.htm","ModificationDate":1133942400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBlh7dmMwF;_ylu=X3oDMTBxNmVndjYxBGNvbG8DdwRwb3MDODkEc2VjA3NyBHZ0aWQD\\/SIG=17f2jjpsh\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.uspto.gov\\/web\\/offices\\/pac\\/mpep\\/documents\\/appxl_35_U_S_C_132.htm%26w=132%26d=Nil-N0aqMjBx%26icp=1%26.intl=us","Size":"8182"}},{"Title":"A CONCISE SUMMARY OF THE PUBLIC HEARINGS","Summary":"... hearing on Bill 132. It shows you who was for, who was ... Opposes BSL, pointed out many anomalies in Bill 132, for example you can\'t teach a pit bull to ...","Url":"http:\\/\\/www.dogwatch.net\\/bill132.pdf","ClickUrl":"http:\\/\\/www.dogwatch.net\\/bill132.pdf#search=\'\'","ModificationDate":1109232000,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBmx7dmMwF;_ylu=X3oDMTBxZ2gwNnM2BGNvbG8DdwRwb3MDOTAEc2VjA3NyBHZ0aWQD\\/SIG=168j23ta7\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.dogwatch.net\\/bill132.pdf%26w=132%26d=PkjRQEaqMuwO%26icp=1%26.intl=us","Size":"1982792"}},{"Title":"JPL News -- A Galaxy Far, Far Away Eyed by Linked Hawaiian Telescopes","Summary":"... Keck Observatory, Kamuela, Hawaii. 2003-132. Site Manager: Webmasters ...","Url":"http:\\/\\/www.jpl.nasa.gov\\/releases\\/2003\\/132.cfm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBnR7dmMwF;_ylu=X3oDMTEwaTAxcXV0BGNvbG8DdwRsA1dTMQRwb3MDOTEEc2VjA3NyBHZ0aWQD\\/SIG=12170u1vu\\/EXP=1147592336\\/**http%3a\\/\\/www.jpl.nasa.gov\\/releases\\/2003\\/132.cfm","ModificationDate":1136016000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBoh7dmMwF;_ylu=X3oDMTBxanNkbHBvBGNvbG8DdwRwb3MDOTEEc2VjA3NyBHZ0aWQD\\/SIG=16i2p31tn\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.jpl.nasa.gov\\/releases\\/2003\\/132.cfm%26w=132%26d=VNPrSUaqMkiG%26icp=1%26.intl=us","Size":"22198"}},{"Title":"(132) Justinian I","Summary":"(132) Justinian I - AV solidus, A.D. 527-545, 4.45 g. ( inv. 91.270). Obverse: Facing helmeted and cuirassed bust of Justinian, holding globus cruciger in r.; at l.","Url":"http:\\/\\/www.lawrence.edu\\/dept\\/art\\/buerger\\/catalogue\\/132.html","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBpB7dmMwF;_ylu=X3oDMTEwamM1Y3A2BGNvbG8DdwRsA1dTMQRwb3MDOTIEc2VjA3NyBHZ0aWQD\\/SIG=12f6r1r1h\\/EXP=1147592336\\/**http%3a\\/\\/www.lawrence.edu\\/dept\\/art\\/buerger\\/catalogue\\/132.html","ModificationDate":1006848000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBqR7dmMwF;_ylu=X3oDMTBxZWNpdmpnBGNvbG8DdwRwb3MDOTIEc2VjA3NyBHZ0aWQD\\/SIG=1709bh559\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.lawrence.edu\\/dept\\/art\\/buerger\\/catalogue\\/132.html%26w=132%26d=BJJDnkaqMjfk%26icp=1%26.intl=us","Size":"3186"}},{"Title":"131","Summary":"35 U.S.C. 131 Examination of application. - Patent Laws. 35 U.S.C. 131 Examination of application.","Url":"http:\\/\\/www.uspto.gov\\/web\\/offices\\/pac\\/mpep\\/documents\\/appxl_35_U_S_C_131.htm","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBqx7dmMwF;_ylu=X3oDMTEwdDUzZHBhBGNvbG8DdwRsA1dTMQRwb3MDOTMEc2VjA3NyBHZ0aWQD\\/SIG=12u6cdfcn\\/EXP=1147592336\\/**http%3a\\/\\/www.uspto.gov\\/web\\/offices\\/pac\\/mpep\\/documents\\/appxl_35_U_S_C_131.htm","ModificationDate":1133942400,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBsB7dmMwF;_ylu=X3oDMTBxdXZhZWxkBGNvbG8DdwRwb3MDOTMEc2VjA3NyBHZ0aWQD\\/SIG=17f8j8d98\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.uspto.gov\\/web\\/offices\\/pac\\/mpep\\/documents\\/appxl_35_U_S_C_131.htm%26w=132%26d=R2aGhUaqMj30%26icp=1%26.intl=us","Size":"7341"}},{"Title":"132 on Flickr - Photo Sharing!","Summary":"... 132. To take full advantage of Flickr, you should use a JavaScript-enabled browser and ...","Url":"http:\\/\\/www.flickr.com\\/photos\\/brettsky\\/53839790\\/","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBsh7dmMwF;_ylu=X3oDMTEwZ2lxZDhhBGNvbG8DdwRsA1dTMQRwb3MDOTQEc2VjA3NyBHZ0aWQD\\/SIG=123ojcbf0\\/EXP=1147592336\\/**http%3a\\/\\/www.flickr.com\\/photos\\/brettsky\\/53839790\\/","ModificationDate":1145862000,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBtx7dmMwF;_ylu=X3oDMTBxYTJvNGFhBGNvbG8DdwRwb3MDOTQEc2VjA3NyBHZ0aWQD\\/SIG=16ks6e563\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.flickr.com\\/photos\\/brettsky\\/53839790\\/%26w=132%26d=GA_4oEaqMq4P%26icp=1%26.intl=us","Size":"74392"}},{"Title":"Ag GPS 124 \\/ 132","Summary":"AgGPS 124 \\/ 132. Operation Manual. AgGPS Receiver Firmware Version 1.40, 1.41 and 1.42. Part Number 38747-00-ENG. Revision C. September 2000. T. Support Offices. Trimble Precision Agricultural Systems. 9290 Bond Street, Suite 102. Overland Park, KS 66214 U.S.A. ... describes how to install and configure the AgGPS_ 124, 132, and 132. Air receivers ...","Url":"http:\\/\\/www.linco.com\\/AG124132REVB.PDF","ClickUrl":"http:\\/\\/www.linco.com\\/AG124132REVB.PDF#search=\'\'","ModificationDate":986281200,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBvB7dmMwF;_ylu=X3oDMTBxbDgxOWxkBGNvbG8DdwRwb3MDOTUEc2VjA3NyBHZ0aWQD\\/SIG=16ajtq3hk\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.linco.com\\/AG124132REVB.PDF%26w=132%26d=FCohUkaqMjOV%26icp=1%26.intl=us","Size":"3610097"}},{"Title":"Tehillim - Chapter 132 | Chabad.org","Summary":"Please login for more site features. Tehillim - Chapter 132. 1. A song of ascents. Remember, O Lord, onto David all his affliction. 2. That he swore to the Lord, he vowed to the Mighty One of Jacob; ... Chabad.org \\" Library \\" Classic Texts \\" The Bible (with Rashi) \\" K\'tuvim \\" Tehillim \\" Chapter 132 ...","Url":"http:\\/\\/www.chabad.org\\/library\\/article.asp?AID=16353","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBvh7dmMwF;_ylu=X3oDMTEwam44NW9vBGNvbG8DdwRsA1dTMQRwb3MDOTYEc2VjA3NyBHZ0aWQD\\/SIG=129b821nj\\/EXP=1147592336\\/**http%3a\\/\\/www.chabad.org\\/library\\/article.asp%3fAID=16353","ModificationDate":1146898800,"MimeType":"text\\/html","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBwx7dmMwF;_ylu=X3oDMTBxczRxYWlqBGNvbG8DdwRwb3MDOTYEc2VjA3NyBHZ0aWQD\\/SIG=170gmib5a\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.chabad.org\\/library\\/article.asp%253FAID%253D16353%26w=132%26d=I-adaEaqMvld%26icp=1%26.intl=us","Size":"41051"}},{"Title":"Downloaded 19 Jan 2003 to 132.77.4.43. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/... ","Summary":"Downloaded 19 Jan 2003 to 132.77.4.43. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/jcpo\\/jcpcr.jsp. Downloaded 19 Jan 2003 to 132.77.4.43.","Url":"http:\\/\\/www.weizmann.ac.il\\/chemphys\\/Frydman_group\\/Publications\\/ExchDynamics-JCP90.pdf","ClickUrl":"http:\\/\\/www.weizmann.ac.il\\/chemphys\\/Frydman_group\\/Publications\\/ExchDynamics-JCP90.pdf#search=\'\'","ModificationDate":1061622000,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcByB7dmMwF;_ylu=X3oDMTBxZGVwcTFiBGNvbG8DdwRwb3MDOTcEc2VjA3NyBHZ0aWQD\\/SIG=17p1893is\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.weizmann.ac.il\\/chemphys\\/Frydman_group\\/Publications\\/ExchDynamics-JCP90.pdf%26w=132%26d=KPVdS0aqMkW1%26icp=1%26.intl=us","Size":"816603"}},{"Title":"Downloaded 19 May 2003 to 132.77.4.43. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/... ","Summary":"Downloaded 19 May 2003 to 132.77.4.43. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/japo\\/japcr.jsp. Downloaded 19 May 2003 to 132.77.4.43.","Url":"http:\\/\\/www.weizmann.ac.il\\/wagner\\/COURSES\\/Reading%20material%20(papers)\\/030_JAP_1990_ContactAngle.pdf","ClickUrl":"http:\\/\\/www.weizmann.ac.il\\/wagner\\/COURSES\\/Reading%20material%20(papers)\\/030_JAP_1990_ContactAngle.pdf#search=\'\'","ModificationDate":1136880000,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcBzR7dmMwF;_ylu=X3oDMTBxMjBxZ2VoBGNvbG8DdwRwb3MDOTgEc2VjA3NyBHZ0aWQD\\/SIG=18pfdig62\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=www.weizmann.ac.il\\/wagner\\/COURSES\\/Reading%252520material%252520%2528papers%2529\\/030_JAP_1990_ContactAngle.pdf%26w=132%26d=Nf5MWEaqMkV0%26icp=1%26.intl=us","Size":"784314"}},{"Title":"Downloaded 24 Jul 2002 to 132.163.135.12. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip... ","Summary":"Downloaded 24 Jul 2002 to 132.163.135.12. Redistribution subject to AIP license or copyright, see http:\\/\\/ojps.aip.org\\/japo\\/japcr.jsp. Downloaded 24 Jul 2002 to 132.163.135.12.","Url":"http:\\/\\/tf.nist.gov\\/general\\/pdf\\/569.pdf","ClickUrl":"http:\\/\\/tf.nist.gov\\/general\\/pdf\\/569.pdf#search=\'\'","ModificationDate":1027494000,"MimeType":"application\\/pdf","Cache":{"Url":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB0h7dmMwF;_ylu=X3oDMTBxNmJhcjNhBGNvbG8DdwRwb3MDOTkEc2VjA3NyBHZ0aWQD\\/SIG=16b31en6n\\/EXP=1147592336\\/**http%3a\\/\\/66.218.69.11\\/search\\/cache%3fei=UTF-8%26query=132%26output=json%26results=100%26appid=jennyhan_ac%26u=tf.nist.gov\\/general\\/pdf\\/569.pdf%26w=132%26d=IpdTwEaqMirR%26icp=1%26.intl=us","Size":"1002734"}},{"Title":"[DB] naruto 132","Summary":"","Url":"http:\\/\\/yhbt.mine.nu\\/t\\/n132.torrent","ClickUrl":"http:\\/\\/uk.wrs.yahoo.com\\/_ylt=A0Je5VwQjWVEsGcB1B7dmMwF;_ylu=X3oDMTExaW11dG45BGNvbG8DdwRsA1dTMQRwb3MDMTAwBHNlYwNzcgR2dGlkAw--\\/SIG=11m58k4sj\\/EXP=1147592336\\/**http%3a\\/\\/yhbt.mine.nu\\/t\\/n132.torrent","ModificationDate":1114671600,"MimeType":"unknown"}]}}');
-
-  assertEquals(result.groupCount + 1, 5);
-}
diff --git a/tests/corelib/regexp/standalones_test.dart b/tests/corelib/regexp/standalones_test.dart
deleted file mode 100644
index bdc0481..0000000
--- a/tests/corelib/regexp/standalones_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2008 the V8 project authors. All rights reserved.
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-//       notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-//       copyright notice, this list of conditions and the following
-//       disclaimer in the documentation and/or other materials provided
-//       with the distribution.
-//     * Neither the name of Google Inc. nor the names of its
-//       contributors may be used to endorse or promote products derived
-//       from this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  /* Many of the Mozilla regexp tests used 'toSource' to test their
-  * results.  Since we don't currently support toSource, those tests
-  * are disabled and standalone versions are included here.
-  */
-
-  // Tests from ecma_3/RegExp/regress-78156.js
-  var string = 'aaa\n789\r\nccc\r\n345';
-  var pattern = new RegExp(r"^\d", multiLine: true);
-  var result = pattern.allMatches(string).toList();
-  assertEquals(2, result.length, "1");
-  assertEquals('7', result[0].group(0), "2");
-  assertEquals('3', result[1].group(0), "3");
-
-  pattern = new RegExp(r"\d$", multiLine: true);
-  result = pattern.allMatches(string).toList();
-  assertEquals(2, result.length, "4");
-  assertEquals('9', result[0].group(0), "5");
-  assertEquals('5', result[1].group(0), "6");
-
-  string = 'aaa\n789\r\nccc\r\nddd';
-  pattern = new RegExp(r"^\d", multiLine: true);
-  result = pattern.allMatches(string).toList();
-  assertEquals(1, result.length, "7");
-  assertEquals('7', result[0].group(0), "8");
-
-  pattern = new RegExp(r"\d$", multiLine: true);
-  result = pattern.allMatches(string).toList();
-  assertEquals(1, result.length, "9");
-  assertEquals('9', result[0].group(0), "10");
-
-  // Tests from ecma_3/RegExp/regress-72964.js
-  pattern = new RegExp(r"[\S]+");
-  string = '\u00BF\u00CD\u00BB\u00A7';
-  result = pattern.firstMatch(string);
-  assertEquals(1, result.groupCount + 1, "11");
-  assertEquals(string, result.group(0), "12");
-
-  string = '\u00BF\u00CD \u00BB\u00A7';
-  result = pattern.firstMatch(string);
-  assertEquals(1, result.groupCount + 1, "13");
-  assertEquals('\u00BF\u00CD', result.group(0), "14");
-
-  string = '\u4e00\uac00\u4e03\u4e00';
-  result = pattern.firstMatch(string);
-  assertEquals(1, result.groupCount + 1, "15");
-  assertEquals(string, result.group(0), "16");
-
-  string = '\u4e00\uac00 \u4e03\u4e00';
-  result = pattern.firstMatch(string);
-  assertEquals(1, result.groupCount + 1, "17");
-  assertEquals('\u4e00\uac00', result.group(0), "18");
-}
diff --git a/tests/corelib/regexp/toString_test.dart b/tests/corelib/regexp/toString_test.dart
deleted file mode 100644
index 7664881..0000000
--- a/tests/corelib/regexp/toString_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  dynamic testForwardSlash(pattern, _string) {
-    var string = _string;
-
-    var re1 = new RegExp(pattern);
-
-    return re1.hasMatch(string);
-  }
-
-  dynamic testLineTerminator(pattern) {
-    var re1 = new RegExp(pattern);
-
-    return new RegExp(r"\n|\r|\u2028|\u2029").hasMatch(re1.toString());
-  }
-
-  // These strings are equivalent, since the '\' is identity escaping the '/' at the string level.
-  shouldBeTrue(testForwardSlash("^/\$", "/"));
-  shouldBeTrue(testForwardSlash("^\/\$", "/"));
-  // This string passes "^\/$" to the RegExp, so the '/' is escaped in the re!
-  shouldBeTrue(testForwardSlash("^\\/\$", "/"));
-  // These strings pass "^\\/$" and "^\\\/$" respectively to the RegExp, giving one '\' to match.
-  shouldBeTrue(testForwardSlash("^\\\\/\$", "\\/"));
-  shouldBeTrue(testForwardSlash("^\\\\\\/\$", "\\/"));
-  // These strings match two backslashes (the second with the '/' escaped).
-  shouldBeTrue(testForwardSlash("^\\\\\\\\/\$", "\\\\/"));
-  shouldBeTrue(testForwardSlash("^\\\\\\\\\\/\$", "\\\\/"));
-  // Test that nothing goes wrongif there are multiple forward slashes!
-  shouldBeTrue(testForwardSlash("x/x/x", "x/x/x"));
-  shouldBeTrue(testForwardSlash("x\\/x/x", "x/x/x"));
-  shouldBeTrue(testForwardSlash("x/x\\/x", "x/x/x"));
-  shouldBeTrue(testForwardSlash("x\\/x\\/x", "x/x/x"));
-
-  shouldBeFalse(testLineTerminator("\\n"));
-  shouldBeFalse(testLineTerminator("\\\\n"));
-  shouldBeFalse(testLineTerminator("\\r"));
-  shouldBeFalse(testLineTerminator("\\\\r"));
-  shouldBeFalse(testLineTerminator("\\u2028"));
-  shouldBeFalse(testLineTerminator("\\\\u2028"));
-  shouldBeFalse(testLineTerminator("\\u2029"));
-  shouldBeFalse(testLineTerminator("\\\\u2029"));
-}
diff --git a/tests/corelib/regexp/unicode-handling_test.dart b/tests/corelib/regexp/unicode-handling_test.dart
deleted file mode 100644
index 01685ec..0000000
--- a/tests/corelib/regexp/unicode-handling_test.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test for proper handling of Unicode RegExps and <a href="http://bugzilla.webkit.org/show_bug.cgi?id=7445">bug 7445</a>: Gmail puts wrong subject in replies.');
-
-  // Regex to match Re in various languages straight from Gmail source
-  var I3 = new RegExp(
-      r"^\s*(fwd|re|aw|antw|antwort|wg|sv|ang|odp|betreff|betr|transf|reenv\.|reenv|in|res|resp|resp\.|enc|\u8f6c\u53d1|\u56DE\u590D|\u041F\u0435\u0440\u0435\u0441\u043B|\u041E\u0442\u0432\u0435\u0442):\s*(.*)$",
-      caseSensitive: false);
-
-  // Other RegExs from Gmail source
-  var Ci = new RegExp(r"\s+");
-  var BC = new RegExp(r"^ ");
-  var BG = new RegExp(r" $");
-
-  // This function replaces consecutive whitespace with a single space
-  // then removes a leading and trailing space if they exist. (From Gmail)
-  dynamic Gn(a) {
-    return a.replaceAll(Ci, " ").replaceAll(BC, "").replaceAll(BG, "");
-  }
-
-  // Strips leading Re or similar (from Gmail source)
-  dynamic cy(a) {
-    //var b = I3.firstMatch(a);
-    var b = I3.firstMatch(a);
-
-    if (b != null) {
-      a = b.group(2);
-    }
-
-    return Gn(a);
-  }
-
-  assertEquals(cy('Re: Moose'), 'Moose');
-  assertEquals(cy('\u8f6c\u53d1: Moose'), 'Moose');
-
-  // Test handling of \u2820 (skull and crossbones)
-  var sample = "sample bm\u2820p cm\\u2820p";
-
-  var inlineRe = new RegExp(r".m\u2820p");
-  assertEquals(inlineRe.firstMatch(sample).group(0), 'bm\u2820p');
-
-  // Test handling of \u007c "|"
-  var bsample = "sample bm\u007cp cm\\u007cp";
-
-  var binlineRe = new RegExp(r".m\u007cp");
-
-  assertEquals(binlineRe.firstMatch(bsample).group(0), 'bm|p');
-}
diff --git a/tests/corelib/regexp/unicodeCaseInsensitive_test.dart b/tests/corelib/regexp/unicodeCaseInsensitive_test.dart
deleted file mode 100644
index a4c985b..0000000
--- a/tests/corelib/regexp/unicodeCaseInsensitive_test.dart
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  shouldBeTrue(
-      new RegExp(r"ΣΤΙΓΜΑΣ", caseSensitive: false).hasMatch("στιγμας"));
-  shouldBeTrue(new RegExp(r"ΔΣΔ", caseSensitive: false).hasMatch("δςδ"));
-  shouldBeTrue(new RegExp(r"ς", caseSensitive: false).hasMatch("σ"));
-  shouldBeTrue(new RegExp(r"σ", caseSensitive: false).hasMatch("ς"));
-
-  // Simple case, has no canonical equivalents
-  shouldBeTrue(new RegExp(r"\u1f16", caseSensitive: false).hasMatch("\u1f16"));
-
-  // Test the sets of USC2 code points that have more than one canonically equivalent value.
-  dynamic ucs2CodePoint(x) => new String.fromCharCode(x);
-  dynamic testSet(s) {
-    for (var i in s) {
-      for (var j in s) {
-        shouldBeTrue(new RegExp(ucs2CodePoint(i), caseSensitive: false)
-            .hasMatch(ucs2CodePoint(j)));
-        shouldBeTrue(new RegExp(
-                "[${ucs2CodePoint(i - 1)}-${ucs2CodePoint(i + 1)}]",
-                caseSensitive: false)
-            .hasMatch(ucs2CodePoint(j)));
-      }
-    }
-  }
-
-  testSet([0x01c4, 0x01c5, 0x01c6]);
-  testSet([0x01c7, 0x01c8, 0x01c9]);
-  testSet([0x01ca, 0x01cb, 0x01cc]);
-  testSet([0x01f1, 0x01f2, 0x01f3]);
-  testSet([0x0392, 0x03b2, 0x03d0]);
-  testSet([0x0395, 0x03b5, 0x03f5]);
-  testSet([0x0398, 0x03b8, 0x03d1]);
-  testSet([0x0345, 0x0399, 0x03b9, 0x1fbe]);
-  testSet([0x039a, 0x03ba, 0x03f0]);
-  testSet([0x00b5, 0x039c, 0x03bc]);
-  testSet([0x03a0, 0x03c0, 0x03d6]);
-  testSet([0x03a1, 0x03c1, 0x03f1]);
-  testSet([0x03a3, 0x03c2, 0x03c3]);
-  testSet([0x03a6, 0x03c6, 0x03d5]);
-  testSet([0x1e60, 0x1e61, 0x1e9b]);
-
-  // Test a couple of lo/hi pairs
-  shouldBeTrue(new RegExp(r"\u03cf", caseSensitive: false).hasMatch("\u03cf"));
-  shouldBeTrue(new RegExp(r"\u03d7", caseSensitive: false).hasMatch("\u03cf"));
-  shouldBeTrue(new RegExp(r"\u03cf", caseSensitive: false).hasMatch("\u03d7"));
-  shouldBeTrue(new RegExp(r"\u03d7", caseSensitive: false).hasMatch("\u03d7"));
-  shouldBeTrue(new RegExp(r"\u1f11", caseSensitive: false).hasMatch("\u1f11"));
-  shouldBeTrue(new RegExp(r"\u1f19", caseSensitive: false).hasMatch("\u1f11"));
-  shouldBeTrue(new RegExp(r"\u1f11", caseSensitive: false).hasMatch("\u1f19"));
-  shouldBeTrue(new RegExp(r"\u1f19", caseSensitive: false).hasMatch("\u1f19"));
-
-  // Test an aligned alternating capitalization pair.
-  shouldBeFalse(new RegExp(r"\u0489", caseSensitive: false).hasMatch("\u048a"));
-  shouldBeTrue(new RegExp(r"\u048a", caseSensitive: false).hasMatch("\u048a"));
-  shouldBeTrue(new RegExp(r"\u048b", caseSensitive: false).hasMatch("\u048a"));
-  shouldBeFalse(new RegExp(r"\u048c", caseSensitive: false).hasMatch("\u048a"));
-  shouldBeFalse(new RegExp(r"\u0489", caseSensitive: false).hasMatch("\u048b"));
-  shouldBeTrue(new RegExp(r"\u048a", caseSensitive: false).hasMatch("\u048b"));
-  shouldBeTrue(new RegExp(r"\u048b", caseSensitive: false).hasMatch("\u048b"));
-  shouldBeFalse(new RegExp(r"\u048c", caseSensitive: false).hasMatch("\u048b"));
-  shouldBeTrue(
-      new RegExp(r"[\u0489-\u048a]", caseSensitive: false).hasMatch("\u048b"));
-  shouldBeTrue(
-      new RegExp(r"[\u048b-\u048c]", caseSensitive: false).hasMatch("\u048a"));
-
-  // Test an unaligned alternating capitalization pair.
-  shouldBeFalse(new RegExp(r"\u04c4", caseSensitive: false).hasMatch("\u04c5"));
-  shouldBeTrue(new RegExp(r"\u04c5", caseSensitive: false).hasMatch("\u04c5"));
-  shouldBeTrue(new RegExp(r"\u04c6", caseSensitive: false).hasMatch("\u04c5"));
-  shouldBeFalse(new RegExp(r"\u04c7", caseSensitive: false).hasMatch("\u04c5"));
-  shouldBeFalse(new RegExp(r"\u04c4", caseSensitive: false).hasMatch("\u04c6"));
-  shouldBeTrue(new RegExp(r"\u04c5", caseSensitive: false).hasMatch("\u04c6"));
-  shouldBeTrue(new RegExp(r"\u04c6", caseSensitive: false).hasMatch("\u04c6"));
-  shouldBeFalse(new RegExp(r"\u04c7", caseSensitive: false).hasMatch("\u04c6"));
-  shouldBeTrue(
-      new RegExp(r"[\u04c4-\u04c5]", caseSensitive: false).hasMatch("\u04c6"));
-  shouldBeTrue(
-      new RegExp(r"[\u04c6-\u04c7]", caseSensitive: false).hasMatch("\u04c5"));
-
-  var successfullyParsed = true;
-}
diff --git a/tests/corelib/regexp/v8_regexp_utils.dart b/tests/corelib/regexp/v8_regexp_utils.dart
deleted file mode 100644
index cde750a..0000000
--- a/tests/corelib/regexp/v8_regexp_utils.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2014, 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 easily port V8 tests.
-
-import "package:expect/expect.dart";
-
-void assertEquals(actual, expected, [String message = null]) {
-  Expect.equals(actual, expected, message);
-}
-
-void assertTrue(actual, [String message = null]) {
-  Expect.isTrue(actual, message);
-}
-
-void assertFalse(actual, [String message = null]) {
-  Expect.isFalse(actual, message);
-}
-
-void assertThrows(fn, [num testid = null]) {
-  Expect.throws(fn, null, "Test $testid");
-}
-
-void assertNull(actual, [num testid = null]) {
-  Expect.isNull(actual, "Test $testid");
-}
-
-void assertToStringEquals(str, match, num testid) {
-  var actual = [];
-  for (int i = 0; i <= match.groupCount; i++) {
-    var g = match.group(i);
-    actual.add((g == null) ? "" : g);
-  }
-  Expect.equals(str, actual.join(","), "Test $testid");
-}
-
-void shouldBeTrue(actual) {
-  Expect.isTrue(actual);
-}
-
-void shouldBeFalse(actual) {
-  Expect.isFalse(actual);
-}
-
-void shouldBeNull(actual) {
-  Expect.isNull(actual);
-}
-
-void shouldBe(actual, expected, [String message = null]) {
-  if (expected == null) {
-    Expect.isNull(actual, message);
-  } else {
-    Expect.equals(expected.length, actual.groupCount + 1);
-    for (int i = 0; i <= actual.groupCount; i++) {
-      Expect.equals(expected[i], actual.group(i), message);
-    }
-  }
-}
-
-Match firstMatch(String str, RegExp pattern) => pattern.firstMatch(str);
-List<String> allStringMatches(String str, RegExp pattern) =>
-    pattern.allMatches(str).map((Match m) => m.group(0)).toList();
-
-void description(str) {}
diff --git a/tests/corelib/regexp/zero-length-alternatives_test.dart b/tests/corelib/regexp/zero-length-alternatives_test.dart
deleted file mode 100644
index 108b513..0000000
--- a/tests/corelib/regexp/zero-length-alternatives_test.dart
+++ /dev/null
@@ -1,279 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. All rights reserved.
-// Copyright 2013 the V8 project authors. All rights reserved.
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-// 1.  Redistributions of source code must retain the above copyright
-//     notice, this list of conditions and the following disclaimer.
-// 2.  Redistributions in binary form must reproduce the above copyright
-//     notice, this list of conditions and the following disclaimer in the
-//     documentation and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
-// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY
-// DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import 'v8_regexp_utils.dart';
-import 'package:expect/expect.dart';
-
-void main() {
-  description(
-      'Test regular expression processing with alternatives that match consuming no characters');
-
-  var emptyStr = "";
-  var s1 = "xxxx";
-  var s2 = "aaaa";
-  var s3 = "aax";
-  var s4 = "abab";
-  var s5 = "ab";
-  var s6 = "xabx";
-  var s7 = "g0";
-
-  // Non-capturing empty first alternative greedy '*'
-  var re1 = new RegExp(r"(?:|a|z)*");
-  shouldBe(firstMatch(emptyStr, re1), [""]);
-  shouldBe(firstMatch(s1, re1), [""]);
-  shouldBe(firstMatch(s2, re1), ["aaaa"]);
-  shouldBe(firstMatch(s3, re1), ["aa"]);
-
-  // Non-capturing empty middle alternative greedy '*'
-  var re2 = new RegExp(r"(?:a||z)*");
-  shouldBe(firstMatch(emptyStr, re2), [""]);
-  shouldBe(firstMatch(s1, re2), [""]);
-  shouldBe(firstMatch(s2, re2), ["aaaa"]);
-  shouldBe(firstMatch(s3, re2), ["aa"]);
-
-  // Non-capturing empty last alternative greedy '*'
-  var re3 = new RegExp(r"(?:a|z|)*");
-  shouldBe(firstMatch(emptyStr, re3), [""]);
-  shouldBe(firstMatch(s1, re3), [""]);
-  shouldBe(firstMatch(s2, re3), ["aaaa"]);
-  shouldBe(firstMatch(s3, re3), ["aa"]);
-
-  // Capturing empty first alternative greedy '*'
-  var re4 = new RegExp(r"(|a|z)*");
-  shouldBe(firstMatch(emptyStr, re4), ["", null]);
-  shouldBe(firstMatch(s1, re4), ["", null]);
-  shouldBe(firstMatch(s2, re4), ["aaaa", "a"]);
-  shouldBe(firstMatch(s3, re4), ["aa", "a"]);
-
-  // Capturing empty middle alternative greedy '*'
-  var re5 = new RegExp(r"(a||z)*");
-  shouldBe(firstMatch(emptyStr, re5), ["", null]);
-  shouldBe(firstMatch(s1, re5), ["", null]);
-  shouldBe(firstMatch(s2, re5), ["aaaa", "a"]);
-  shouldBe(firstMatch(s3, re5), ["aa", "a"]);
-
-  // Capturing empty last alternative greedy '*'
-  var re6 = new RegExp(r"(a|z|)*");
-  shouldBe(firstMatch(emptyStr, re6), ["", null]);
-  shouldBe(firstMatch(s1, re6), ["", null]);
-  shouldBe(firstMatch(s2, re6), ["aaaa", "a"]);
-  shouldBe(firstMatch(s3, re6), ["aa", "a"]);
-
-  // Non-capturing empty first alternative fixed-count
-  var re7 = new RegExp(r"(?:|a|z){2,5}");
-  shouldBe(firstMatch(emptyStr, re7), [""]);
-  shouldBe(firstMatch(s1, re7), [""]);
-  shouldBe(firstMatch(s2, re7), ["aaa"]);
-  shouldBe(firstMatch(s3, re7), ["aa"]);
-
-  // Non-capturing empty middle alternative fixed-count
-  var re8 = new RegExp(r"(?:a||z){2,5}");
-  shouldBe(firstMatch(emptyStr, re8), [""]);
-  shouldBe(firstMatch(s1, re8), [""]);
-  shouldBe(firstMatch(s2, re8), ["aaaa"]);
-  shouldBe(firstMatch(s3, re8), ["aa"]);
-
-  // Non-capturing empty last alternative fixed-count
-  var re9 = new RegExp(r"(?:a|z|){2,5}");
-  shouldBe(firstMatch(emptyStr, re9), [""]);
-  shouldBe(firstMatch(s1, re9), [""]);
-  shouldBe(firstMatch(s2, re9), ["aaaa"]);
-  shouldBe(firstMatch(s3, re9), ["aa"]);
-
-  // Non-capturing empty first alternative non-greedy '*'
-  var re10 = new RegExp(r"(?:|a|z)*?");
-  shouldBe(firstMatch(emptyStr, re10), [""]);
-  shouldBe(firstMatch(s1, re10), [""]);
-  shouldBe(firstMatch(s2, re10), [""]);
-  shouldBe(firstMatch(s3, re10), [""]);
-
-  // Non-capturing empty middle alternative non-greedy '*'
-  var re11 = new RegExp(r"(?:a||z)*?");
-  shouldBe(firstMatch(emptyStr, re11), [""]);
-  shouldBe(firstMatch(s1, re11), [""]);
-  shouldBe(firstMatch(s2, re11), [""]);
-  shouldBe(firstMatch(s3, re11), [""]);
-
-  // Non-capturing empty last alternative non-greedy '*'
-  var re12 = new RegExp(r"(?:a|z|)*?");
-  shouldBe(firstMatch(emptyStr, re12), [""]);
-  shouldBe(firstMatch(s1, re12), [""]);
-  shouldBe(firstMatch(s2, re12), [""]);
-  shouldBe(firstMatch(s3, re12), [""]);
-
-  // Capturing empty first alternative non-greedy '*'
-  var re13 = new RegExp(r"(|a|z)*?");
-  shouldBe(firstMatch(emptyStr, re13), ["", null]);
-  shouldBe(firstMatch(s1, re13), ["", null]);
-  shouldBe(firstMatch(s2, re13), ["", null]);
-  shouldBe(firstMatch(s3, re13), ["", null]);
-
-  // Capturing empty middle alternative non-greedy '*'
-  var re14 = new RegExp(r"(a||z)*?");
-  shouldBe(firstMatch(emptyStr, re14), ["", null]);
-  shouldBe(firstMatch(s1, re14), ["", null]);
-  shouldBe(firstMatch(s2, re14), ["", null]);
-  shouldBe(firstMatch(s3, re14), ["", null]);
-
-  // Capturing empty last alternative non-greedy '*'
-  var re15 = new RegExp(r"(a|z|)*?");
-  shouldBe(firstMatch(emptyStr, re15), ["", null]);
-  shouldBe(firstMatch(s1, re15), ["", null]);
-  shouldBe(firstMatch(s2, re15), ["", null]);
-  shouldBe(firstMatch(s3, re15), ["", null]);
-
-  // Non-capturing empty first alternative greedy '?'
-  var re16 = new RegExp(r"(?:|a|z)?");
-  shouldBe(firstMatch(emptyStr, re16), [""]);
-  shouldBe(firstMatch(s1, re16), [""]);
-  shouldBe(firstMatch(s2, re16), ["a"]);
-  shouldBe(firstMatch(s3, re16), ["a"]);
-
-  // Non-capturing empty middle alternative greedy '?'
-  var re17 = new RegExp(r"(?:a||z)?");
-  shouldBe(firstMatch(emptyStr, re17), [""]);
-  shouldBe(firstMatch(s1, re17), [""]);
-  shouldBe(firstMatch(s2, re17), ["a"]);
-  shouldBe(firstMatch(s3, re17), ["a"]);
-
-  // Non-capturing empty last alternative greedy '?'
-  var re18 = new RegExp(r"(?:a|z|)?");
-  shouldBe(firstMatch(emptyStr, re18), [""]);
-  shouldBe(firstMatch(s1, re18), [""]);
-  shouldBe(firstMatch(s2, re18), ["a"]);
-  shouldBe(firstMatch(s3, re18), ["a"]);
-
-  // Capturing empty first alternative greedy '?'
-  var re19 = new RegExp(r"(|a|z)?");
-  shouldBe(firstMatch(emptyStr, re19), ["", null]);
-  shouldBe(firstMatch(s1, re19), ["", null]);
-  shouldBe(firstMatch(s2, re19), ["a", "a"]);
-  shouldBe(firstMatch(s3, re19), ["a", "a"]);
-
-  // Capturing empty middle alternative greedy '?'
-  var re20 = new RegExp(r"(a||z)?");
-  shouldBe(firstMatch(emptyStr, re20), ["", null]);
-  shouldBe(firstMatch(s1, re20), ["", null]);
-  shouldBe(firstMatch(s2, re20), ["a", "a"]);
-  shouldBe(firstMatch(s3, re20), ["a", "a"]);
-
-  // Capturing empty last alternative greedy '?'
-  var re21 = new RegExp(r"(a|z|)?");
-  shouldBe(firstMatch(emptyStr, re21), ["", null]);
-  shouldBe(firstMatch(s1, re21), ["", null]);
-  shouldBe(firstMatch(s2, re21), ["a", "a"]);
-  shouldBe(firstMatch(s3, re21), ["a", "a"]);
-
-  // Non-capturing empty first alternative non-greedy '?'
-  var re22 = new RegExp(r"(?:|a|z)??");
-  shouldBe(firstMatch(emptyStr, re22), [""]);
-  shouldBe(firstMatch(s1, re22), [""]);
-  shouldBe(firstMatch(s2, re22), [""]);
-  shouldBe(firstMatch(s3, re22), [""]);
-
-  // Non-capturing empty middle alternative non-greedy '?'
-  var re23 = new RegExp(r"(?:a||z)??");
-  shouldBe(firstMatch(emptyStr, re23), [""]);
-  shouldBe(firstMatch(s1, re23), [""]);
-  shouldBe(firstMatch(s2, re23), [""]);
-  shouldBe(firstMatch(s3, re23), [""]);
-
-  // Non-capturing empty last alternative non-greedy '?'
-  var re24 = new RegExp(r"(?:a|z|)??");
-  shouldBe(firstMatch(emptyStr, re24), [""]);
-  shouldBe(firstMatch(s1, re24), [""]);
-  shouldBe(firstMatch(s2, re24), [""]);
-  shouldBe(firstMatch(s3, re24), [""]);
-
-  // Capturing empty first alternative non-greedy '?'
-  var re25 = new RegExp(r"(|a|z)??");
-  shouldBe(firstMatch(emptyStr, re25), ["", null]);
-  shouldBe(firstMatch(s1, re25), ["", null]);
-  shouldBe(firstMatch(s2, re25), ["", null]);
-  shouldBe(firstMatch(s3, re25), ["", null]);
-
-  // Capturing empty middle alternative non-greedy '?'
-  var re26 = new RegExp(r"(a||z)??");
-  shouldBe(firstMatch(emptyStr, re26), ["", null]);
-  shouldBe(firstMatch(s1, re26), ["", null]);
-  shouldBe(firstMatch(s2, re26), ["", null]);
-  shouldBe(firstMatch(s3, re26), ["", null]);
-
-  // Capturing empty last alternative non-greedy '?'
-  var re27 = new RegExp(r"(a|z|)??");
-  shouldBe(firstMatch(emptyStr, re27), ["", null]);
-  shouldBe(firstMatch(s1, re27), ["", null]);
-  shouldBe(firstMatch(s2, re27), ["", null]);
-  shouldBe(firstMatch(s3, re27), ["", null]);
-
-  // Non-capturing empty first alternative greedy '*' non-terminal
-  var re28 = new RegExp(r"(?:|a|z)*x");
-  shouldBe(firstMatch(emptyStr, re28), null);
-  shouldBe(firstMatch(s1, re28), ["x"]);
-  shouldBe(firstMatch(s2, re28), null);
-  shouldBe(firstMatch(s3, re28), ["aax"]);
-
-  // Non-capturing empty middle alternative greedy '*' non-terminal
-  var re29 = new RegExp(r"(?:a||z)*x");
-  shouldBe(firstMatch(emptyStr, re29), null);
-  shouldBe(firstMatch(s1, re29), ["x"]);
-  shouldBe(firstMatch(s2, re29), null);
-  shouldBe(firstMatch(s3, re29), ["aax"]);
-
-  // Non-capturing empty last alternative greedy '*' non-terminal
-  var re30 = new RegExp(r"(?:a|z|)*x");
-  shouldBe(firstMatch(emptyStr, re30), null);
-  shouldBe(firstMatch(s1, re30), ["x"]);
-  shouldBe(firstMatch(s2, re30), null);
-  shouldBe(firstMatch(s3, re30), ["aax"]);
-
-  // Non-capturing two possibly empty alternatives greedy '*'
-  var re31 = new RegExp(r"(?:a*|b*)*");
-  shouldBe(firstMatch(emptyStr, re31), [""]);
-  shouldBe(firstMatch(s1, re31), [""]);
-  shouldBe(firstMatch(s3, re31), ["aa"]);
-  shouldBe(firstMatch(s4, re31), ["abab"]);
-
-  // Non-capturing two possibly empty non-greedy alternatives non-greedy '*'
-  var re32 = new RegExp(r"(?:a*?|b*?)*");
-  shouldBe(firstMatch(emptyStr, re32), [""]);
-  shouldBe(firstMatch(s1, re32), [""]);
-  shouldBe(firstMatch(s2, re32), ["aaaa"]);
-  shouldBe(firstMatch(s4, re32), ["abab"]);
-  shouldBe(firstMatch(s5, re32), ["ab"]);
-  shouldBe(firstMatch(s6, re32), [""]);
-
-  // Three possibly empty alternatives with greedy +
-  var re33 = new RegExp(r"(?:(?:(?!))|g?|0*\*?)+");
-  shouldBe(firstMatch(emptyStr, re33), [""]);
-  shouldBe(firstMatch(s1, re33), [""]);
-  shouldBe(firstMatch(s7, re33), ["g0"]);
-
-  // first alternative zero length fixed count
-  var re34 = new RegExp(r"(?:|a)");
-  shouldBe(firstMatch(emptyStr, re34), [""]);
-  shouldBe(firstMatch(s1, re34), [""]);
-  shouldBe(firstMatch(s2, re34), [""]);
-  shouldBe(firstMatch(s3, re34), [""]);
-}
diff --git a/tests/corelib/regress_11099_test.dart b/tests/corelib/regress_11099_test.dart
deleted file mode 100644
index 2e6b8c1..0000000
--- a/tests/corelib/regress_11099_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-void main() {
-  var l = [new MyTest(1), new MyTest(5), new MyTest(3)];
-  l.sort();
-  if (l.toString() != "[d{1}, d{3}, d{5}]") throw 'Wrong result!';
-}
-
-class MyTest implements Comparable<MyTest> {
-  final int a;
-  MyTest(this.a);
-  int compareTo(MyTest b) => this.a - b.a;
-  String toString() => "d{$a}";
-}
diff --git a/tests/corelib/regress_r21715_test.dart b/tests/corelib/regress_r21715_test.dart
deleted file mode 100644
index 5a0ef73..0000000
--- a/tests/corelib/regress_r21715_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=5 --no-background_compilation
-
-import "package:expect/expect.dart";
-
-sll(x, shift) => x << shift;
-
-main() {
-  for (int i = 0; i < 10; i++) {
-    var x = 0x50000000;
-    var shift = 34;
-    Expect.equals(sll(x, shift), 0x14000000000000000);
-  }
-}
diff --git a/tests/corelib/safe_to_string_test.dart b/tests/corelib/safe_to_string_test.dart
deleted file mode 100644
index 0356e81..0000000
--- a/tests/corelib/safe_to_string_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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";
-
-main() {
-  Expect.stringEquals('1', Error.safeToString(1));
-  Expect.stringEquals('0.5', Error.safeToString(0.5));
-  Expect.stringEquals('"1"', Error.safeToString("1"));
-  Expect.stringEquals('"\'"', Error.safeToString("'"));
-  Expect.stringEquals('"\'\'"', Error.safeToString("''"));
-  Expect.stringEquals(r'"\""', Error.safeToString('"'));
-  Expect.stringEquals(r'"\"\""', Error.safeToString('""'));
-
-  Expect.stringEquals(r'"\\\"\n\r"', Error.safeToString('\\"\n\r'));
-
-  Expect.stringEquals(r'"\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007"',
-      Error.safeToString('\x00\x01\x02\x03\x04\x05\x06\x07'));
-  Expect.stringEquals(r'"\b\t\n\u000b\f\r\u000e\u000f"',
-      Error.safeToString('\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'));
-  Expect.stringEquals(r'"\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017"',
-      Error.safeToString('\x10\x11\x12\x13\x14\x15\x16\x17'));
-  Expect.stringEquals(r'"\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f"',
-      Error.safeToString('\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'));
-  Expect.stringEquals('" "', Error.safeToString(" "));
-
-  Expect.stringEquals('null', Error.safeToString(null));
-  Expect.stringEquals('true', Error.safeToString(true));
-  Expect.stringEquals('false', Error.safeToString(false));
-  // The class name may be minified.
-  String className = "$Object";
-  Expect.stringEquals(
-      "Instance of '$className'", Error.safeToString(new Object()));
-}
diff --git a/tests/corelib/set_containsAll_test.dart b/tests/corelib/set_containsAll_test.dart
deleted file mode 100644
index ccab046..0000000
--- a/tests/corelib/set_containsAll_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var set1 = new Set<B>();
-  set1.add(const B());
-  var set2 = new Set<B>();
-  var list = <B>[const B()];
-  var set3 = list.toSet();
-
-  var sets = [set1, set2, set3];
-  for (var setToTest in sets) {
-    Expect.isFalse(setToTest.containsAll(<A>[new A()]));
-  }
-}
diff --git a/tests/corelib/set_contains_test.dart b/tests/corelib/set_contains_test.dart
deleted file mode 100644
index c955374..0000000
--- a/tests/corelib/set_contains_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var set1 = new Set<B>();
-  set1.add(const B());
-  var set2 = new Set<B>();
-  var list = <B>[const B()];
-  var set3 = list.toSet();
-
-  var sets = [set1, set2, set3];
-  for (var setToTest in sets) {
-    // Test that the set accepts a value that is not of the same type
-    //   Set<B>.contains(A)
-    Expect.isFalse(setToTest.contains(new A()));
-  }
-}
diff --git a/tests/corelib/set_intersection_test.dart b/tests/corelib/set_intersection_test.dart
deleted file mode 100644
index 2cd8a65..0000000
--- a/tests/corelib/set_intersection_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var set1 = new Set<B>();
-  set1.add(const B());
-  var set2 = new Set<B>();
-  var list = <B>[const B()];
-  var set3 = list.toSet();
-
-  var setOther = new Set<A>();
-  setOther.add(new A());
-  var sets = [set1, set2, set3];
-  for (var setToTest in sets) {
-    // Test that the set accepts another set that is not of the same type:
-    //   Set<B>.intersection(Set<A>)
-    Set result = setToTest.intersection(setOther);
-    Expect.isTrue(result.isEmpty);
-  }
-}
diff --git a/tests/corelib/set_iterator_test.dart b/tests/corelib/set_iterator_test.dart
deleted file mode 100644
index 26d0dee..0000000
--- a/tests/corelib/set_iterator_test.dart
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class FixedHashCode {
-  final int _hashCode;
-  const FixedHashCode(this._hashCode);
-  int get hashCode {
-    return _hashCode;
-  }
-}
-
-class SetIteratorTest {
-  static testMain() {
-    testSmallSet();
-    testLargeSet();
-    testEmptySet();
-    testSetWithDeletedEntries();
-    testBug5116829();
-    testDifferentSizes();
-    testDifferentHashCodes();
-  }
-
-  static int sum(int expected, Iterator<int> it) {
-    int count = 0;
-    while (it.moveNext()) {
-      count += it.current;
-    }
-    Expect.equals(expected, count);
-  }
-
-  static void testSmallSet() {
-    Set<int> set = new Set<int>();
-    set.add(1);
-    set.add(2);
-    set.add(3);
-
-    Iterator<int> it = set.iterator;
-    sum(6, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-
-  static void testLargeSet() {
-    Set<int> set = new Set<int>();
-    int count = 0;
-    for (int i = 0; i < 100; i++) {
-      count += i;
-      set.add(i);
-    }
-    Iterator<int> it = set.iterator;
-    sum(count, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-
-  static void testEmptySet() {
-    Set<int> set = new Set<int>();
-    Iterator<int> it = set.iterator;
-    sum(0, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-
-  static void testSetWithDeletedEntries() {
-    Set<int> set = new Set<int>();
-    for (int i = 0; i < 100; i++) {
-      set.add(i);
-    }
-    for (int i = 0; i < 100; i++) {
-      set.remove(i);
-    }
-    Iterator<int> it = set.iterator;
-    Expect.isFalse(it.moveNext());
-    it = set.iterator;
-    sum(0, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-
-    int count = 0;
-    for (int i = 0; i < 100; i++) {
-      set.add(i);
-      if (i % 2 == 0)
-        set.remove(i);
-      else
-        count += i;
-    }
-    it = set.iterator;
-    sum(count, it);
-    Expect.isFalse(it.moveNext());
-    Expect.isNull(it.current);
-  }
-
-  static void testBug5116829() {
-    // During iteration we skipped slot 0 of the hashset's key list. "A" was
-    // hashed to slot 0 and therefore triggered the bug.
-    Set<String> mystrs = new Set<String>();
-    mystrs.add("A");
-    int seen = 0;
-    for (String elt in mystrs) {
-      seen++;
-      Expect.equals("A", elt);
-    }
-    Expect.equals(1, seen);
-  }
-
-  static void testDifferentSizes() {
-    for (int i = 1; i < 20; i++) {
-      Set set = new Set();
-      int sum = 0;
-      for (int j = 0; j < i; j++) {
-        set.add(j);
-        sum += j;
-      }
-      int count = 0;
-      int controlSum = 0;
-      for (int x in set) {
-        controlSum += x;
-        count++;
-      }
-      Expect.equals(i, count);
-      Expect.equals(sum, controlSum);
-    }
-  }
-
-  static void testDifferentHashCodes() {
-    for (int i = -20; i < 20; i++) {
-      Set set = new Set();
-      var element = new FixedHashCode(i);
-      set.add(element);
-      Expect.equals(1, set.length);
-      bool foundIt = false;
-      for (var x in set) {
-        foundIt = true;
-        Expect.equals(true, identical(x, element));
-      }
-      Expect.equals(true, foundIt);
-    }
-  }
-}
-
-main() {
-  SetIteratorTest.testMain();
-}
diff --git a/tests/corelib/set_removeAll_test.dart b/tests/corelib/set_removeAll_test.dart
deleted file mode 100644
index 12dfa39..0000000
--- a/tests/corelib/set_removeAll_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var set1 = new Set<B>();
-  set1.add(const B());
-  var set2 = new Set<B>();
-  var list = <B>[const B()];
-  var set3 = list.toSet();
-
-  var sets = [set1, set2, set3];
-  for (var setToTest in sets) {
-    // Test that the set accepts a list that is not of the same type:
-    //   Set<B>.removeAll(List<A>)
-    Expect.isNull(setToTest.removeAll(<A>[new A()]));
-  }
-}
diff --git a/tests/corelib/set_remove_test.dart b/tests/corelib/set_remove_test.dart
deleted file mode 100644
index 20f48e5..0000000
--- a/tests/corelib/set_remove_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var set1 = new Set<B>();
-  set1.add(const B());
-  var set2 = new Set<B>();
-  var list = <B>[const B()];
-  var set3 = list.toSet();
-
-  var sets = [set1, set2, set3];
-  for (var setToTest in sets) {
-    // Test that the set accepts a value that is not of the same type
-    //   Set<B>.remove(A)
-    Expect.isFalse(setToTest.remove(new A()));
-  }
-}
diff --git a/tests/corelib/set_retainAll_test.dart b/tests/corelib/set_retainAll_test.dart
deleted file mode 100644
index 7381095..0000000
--- a/tests/corelib/set_retainAll_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  var set1 = new Set<B>();
-  set1.add(const B());
-  var set2 = new Set<B>();
-  var list = <B>[const B()];
-  var set3 = list.toSet();
-
-  var sets = [set1, set2, set3];
-  for (var setToTest in sets) {
-    // Test that the set accepts a list that is not of the same type:
-    //   Set<B>.retainAll(List<A>)
-    setToTest.retainAll(<A>[new A()]);
-  }
-}
diff --git a/tests/corelib/set_test.dart b/tests/corelib/set_test.dart
deleted file mode 100644
index bfe4172..0000000
--- a/tests/corelib/set_test.dart
+++ /dev/null
@@ -1,550 +0,0 @@
-// Copyright (c) 2011, 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 set_test;
-
-import 'package:expect/expect.dart';
-import "dart:collection";
-
-void testMain(Set create()) {
-  testInts(create);
-  testStrings(create);
-  testInts(() => create().toSet());
-  testStrings(() => create().toSet());
-}
-
-void testInts(Set create()) {
-  Set set = create();
-
-  testLength(0, set);
-  Expect.isTrue(set.add(1));
-  testLength(1, set);
-  Expect.isTrue(set.contains(1));
-
-  Expect.isFalse(set.add(1));
-  testLength(1, set);
-  Expect.isTrue(set.contains(1));
-
-  Expect.isTrue(set.remove(1));
-  testLength(0, set);
-  Expect.isFalse(set.contains(1));
-
-  Expect.isFalse(set.remove(1));
-  testLength(0, set);
-  Expect.isFalse(set.contains(1));
-
-  for (int i = 0; i < 10; i++) {
-    set.add(i);
-  }
-
-  testLength(10, set);
-  for (int i = 0; i < 10; i++) {
-    Expect.isTrue(set.contains(i));
-  }
-
-  testLength(10, set);
-
-  for (int i = 10; i < 20; i++) {
-    Expect.isFalse(set.contains(i));
-  }
-
-  // Test Set.forEach.
-  int sum = 0;
-  testForEach(int val) {
-    sum += (val + 1);
-  }
-
-  set.forEach(testForEach);
-  Expect.equals(10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1, sum);
-
-  Expect.isTrue(set.containsAll(set));
-
-  // Test Set.map.
-  testMap(int val) {
-    return val * val;
-  }
-
-  Set mapped = set.map(testMap).toSet();
-  Expect.equals(10, mapped.length);
-
-  Expect.isTrue(mapped.contains(0));
-  Expect.isTrue(mapped.contains(1));
-  Expect.isTrue(mapped.contains(4));
-  Expect.isTrue(mapped.contains(9));
-  Expect.isTrue(mapped.contains(16));
-  Expect.isTrue(mapped.contains(25));
-  Expect.isTrue(mapped.contains(36));
-  Expect.isTrue(mapped.contains(49));
-  Expect.isTrue(mapped.contains(64));
-  Expect.isTrue(mapped.contains(81));
-
-  sum = 0;
-  set.forEach(testForEach);
-  Expect.equals(10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1, sum);
-
-  sum = 0;
-
-  mapped.forEach(testForEach);
-  Expect.equals(1 + 2 + 5 + 10 + 17 + 26 + 37 + 50 + 65 + 82, sum);
-
-  // Test Set.filter.
-  testFilter(int val) {
-    return val.isEven;
-  }
-
-  Set filtered = set.where(testFilter).toSet();
-
-  Expect.equals(5, filtered.length);
-
-  Expect.isTrue(filtered.contains(0));
-  Expect.isTrue(filtered.contains(2));
-  Expect.isTrue(filtered.contains(4));
-  Expect.isTrue(filtered.contains(6));
-  Expect.isTrue(filtered.contains(8));
-
-  sum = 0;
-  filtered.forEach(testForEach);
-  Expect.equals(1 + 3 + 5 + 7 + 9, sum);
-
-  Expect.isTrue(set.containsAll(filtered));
-
-  // Test Set.every.
-  testEvery(int val) {
-    return (val < 10);
-  }
-
-  Expect.isTrue(set.every(testEvery));
-  Expect.isTrue(filtered.every(testEvery));
-
-  filtered.add(10);
-  Expect.isFalse(filtered.every(testEvery));
-
-  // Test Set.some.
-  testSome(int val) {
-    return (val == 4);
-  }
-
-  Expect.isTrue(set.any(testSome));
-  Expect.isTrue(filtered.any(testSome));
-  filtered.remove(4);
-  Expect.isFalse(filtered.any(testSome));
-
-  // Test Set.intersection.
-  Set intersection = set.intersection(filtered);
-  Expect.isTrue(set.contains(0));
-  Expect.isTrue(set.contains(2));
-  Expect.isTrue(set.contains(6));
-  Expect.isTrue(set.contains(8));
-  Expect.isFalse(intersection.contains(1));
-  Expect.isFalse(intersection.contains(3));
-  Expect.isFalse(intersection.contains(4));
-  Expect.isFalse(intersection.contains(5));
-  Expect.isFalse(intersection.contains(7));
-  Expect.isFalse(intersection.contains(9));
-  Expect.isFalse(intersection.contains(10));
-  Expect.equals(4, intersection.length);
-
-  Expect.isTrue(set.containsAll(intersection));
-  Expect.isTrue(filtered.containsAll(intersection));
-
-  // Test Set.union.
-  Set twice = create()..addAll([0, 2, 4, 6, 8, 10, 12, 14]);
-  Set thrice = create()..addAll([0, 3, 6, 9, 12, 15]);
-  Set union = twice.union(thrice);
-  Expect.equals(11, union.length);
-  for (int i = 0; i < 16; i++) {
-    Expect.equals(i.isEven || (i % 3) == 0, union.contains(i));
-  }
-
-  // Test Set.difference.
-  Set difference = twice.difference(thrice);
-  Expect.equals(5, difference.length);
-  for (int i = 0; i < 16; i++) {
-    Expect.equals(i.isEven && (i % 3) != 0, difference.contains(i));
-  }
-  Expect.isTrue(twice.difference(thrice).difference(twice).isEmpty);
-
-  // Test Set.difference with non-element type.
-  Set diffSet = create()..addAll([0, 1, 2, 499, 999]);
-  Set<Object> objectSet = new Set<Object>();
-  objectSet.add("foo");
-  objectSet.add(499);
-  Set diffResult = diffSet.difference(objectSet);
-  Expect.equals(4, diffResult.length);
-  for (int value in [0, 1, 2, 999]) {
-    Expect.isTrue(diffResult.contains(value));
-  }
-
-  // Test Set.addAll.
-  List list = new List(10);
-  for (int i = 0; i < 10; i++) {
-    list[i] = i + 10;
-  }
-  set.addAll(list);
-  testLength(20, set);
-  for (int i = 0; i < 20; i++) {
-    Expect.isTrue(set.contains(i));
-  }
-
-  // Test Set.removeAll
-  set.removeAll(list);
-  testLength(10, set);
-  for (int i = 0; i < 10; i++) {
-    Expect.isTrue(set.contains(i));
-  }
-  for (int i = 10; i < 20; i++) {
-    Expect.isFalse(set.contains(i));
-  }
-
-  // Test Set.clear.
-  set.clear();
-  testLength(0, set);
-  Expect.isTrue(set.add(11));
-  testLength(1, set);
-
-  // Test Set.toSet.
-  set.add(1);
-  set.add(21);
-  testLength(3, set);
-  var set2 = set.toSet();
-  testLength(3, set2);
-  Expect.listEquals(set.toList(), set2.toList());
-  set.add(31);
-  testLength(4, set);
-  testLength(3, set2);
-
-  set2 = set.toSet()..clear();
-  testLength(0, set2);
-  Expect.isTrue(set2.add(11));
-  Expect.isTrue(set2.add(1));
-  Expect.isTrue(set2.add(21));
-  Expect.isTrue(set2.add(31));
-  testLength(4, set2);
-  Expect.listEquals(set.toList(), set2.toList());
-
-  set2 = (set.toSet()..clear()).toSet(); // Cloning empty set shouldn't fail.
-  testLength(0, set2);
-}
-
-void testLength(int length, Set set) {
-  Expect.equals(length, set.length);
-  (length == 0 ? Expect.isTrue : Expect.isFalse)(set.isEmpty);
-  (length != 0 ? Expect.isTrue : Expect.isFalse)(set.isNotEmpty);
-  if (length == 0) {
-    for (var e in set) {
-      Expect.fail("contains element when iterated: $e");
-    }
-  }
-  (length == 0 ? Expect.isFalse : Expect.isTrue)(set.iterator.moveNext());
-}
-
-void testStrings(Set create()) {
-  var set = create();
-  var strings = ["foo", "bar", "baz", "qux", "fisk", "hest", "svin", "pigvar"];
-  set.addAll(strings);
-  testLength(8, set);
-  set.removeAll(strings.where((x) => x.length == 3));
-  testLength(4, set);
-  Expect.isTrue(set.add("bar"));
-  Expect.isTrue(set.add("qux"));
-  testLength(6, set);
-  set.addAll(strings);
-  testLength(8, set);
-  set.removeWhere((x) => x.length != 3);
-  testLength(4, set);
-  set.retainWhere((x) => x[1] == "a");
-  testLength(2, set);
-  Expect.isTrue(set.containsAll(["baz", "bar"]));
-
-  set = set.union(strings.where((x) => x.length != 3).toSet());
-  testLength(6, set);
-  set = set.intersection(["qux", "baz", "fisk", "egern"].toSet());
-  testLength(2, set);
-  Expect.isTrue(set.containsAll(["baz", "fisk"]));
-}
-
-void testTypeAnnotations(Set<int> set) {
-  set.add(0);
-  set.add(999);
-  set.add(0x800000000);
-  set.add(0x20000000000000);
-  Expect.isFalse(set.contains("not an it"));
-  Expect.isFalse(set.remove("not an it"));
-  Expect.isFalse(set.containsAll(["Not an int", "Also no an int"]));
-
-  testLength(4, set);
-  set.removeAll(["Not an int", 999, "Also no an int"]);
-  testLength(3, set);
-  set.retainAll(["Not an int", 0, "Also no an int"]);
-  testLength(1, set);
-}
-
-void testRetainWhere(Set create([equals, hashCode, validKey, compare])) {
-  // The retainWhere method must not collapse the argument Iterable
-  // in a way that doesn't match the equality of the set.
-  // It must not throw away equal elements that are different in the
-  // equality of the set.
-  // It must not consider objects to be not there if they are equal
-  // in the equality of the set.
-
-  // If set equality is natural equality, using different but equal objects
-  // must work. Can't use an identity set internally (as was done at some point
-  // during development).
-  Set set = create();
-  set.addAll([new CE(0), new CE(1), new CE(2)]);
-  Expect.equals(3, set.length); // All different.
-  set.retainAll([new CE(0), new CE(2)]);
-  Expect.equals(2, set.length);
-  Expect.isTrue(set.contains(new CE(0)));
-  Expect.isTrue(set.contains(new CE(2)));
-
-  // If equality of set is identity, we can't internally use a non-identity
-  // based set because it might throw away equal objects that are not identical.
-  var elems = [new CE(0), new CE(1), new CE(2), new CE(0)];
-  set = create(identical, null, null, identityCompare);
-  set.addAll(elems);
-  Expect.equals(4, set.length);
-  set.retainAll([elems[0], elems[2], elems[3]]);
-  Expect.equals(3, set.length);
-  Expect.isTrue(set.contains(elems[0]));
-  Expect.isTrue(set.contains(elems[2]));
-  Expect.isTrue(set.contains(elems[3]));
-
-  // If set equality is less precise than equality, we must not use equality
-  // internally to see if the element is there:
-  set = create(customEq(3), customHash(3), validKey, customCompare(3));
-  set.addAll([new CE(0), new CE(1), new CE(2)]);
-  Expect.equals(3, set.length);
-  set.retainAll([new CE(3), new CE(5)]);
-  Expect.equals(2, set.length);
-  Expect.isTrue(set.contains(new CE(6)));
-  Expect.isTrue(set.contains(new CE(8)));
-
-  // It shouldn't matter if the input is a set.
-  set.clear();
-  set.addAll([new CE(0), new CE(1), new CE(2)]);
-  Expect.equals(3, set.length);
-  set.retainAll(new Set.from([new CE(3), new CE(5)]));
-  Expect.equals(2, set.length);
-  Expect.isTrue(set.contains(new CE(6)));
-  Expect.isTrue(set.contains(new CE(8)));
-}
-
-void testDifferenceIntersection(create([equals, hashCode, validKey, compare])) {
-  // Test that elements of intersection comes from receiver set.
-  CE ce1a = new CE(1);
-  CE ce1b = new CE(1);
-  CE ce2 = new CE(2);
-  CE ce3 = new CE(3);
-  Expect.equals(ce1a, ce1b); // Sanity check.
-
-  var set1 = create();
-  var set2 = create();
-  set1.add(ce1a);
-  set1.add(ce2);
-  set2.add(ce1b);
-  set2.add(ce3);
-
-  var difference = set1.difference(set2);
-  testLength(1, difference);
-  Expect.identical(ce2, difference.lookup(ce2));
-
-  difference = set2.difference(set1);
-  testLength(1, difference);
-  Expect.identical(ce3, difference.lookup(ce3));
-
-  // Difference uses other.contains to check for equality.
-  var set3 = create(identical, identityHashCode, null, identityCompare);
-  set3.add(ce1b);
-  difference = set1.difference(set3);
-  testLength(2, difference); // ce1a is not identical to element in set3.
-  Expect.identical(ce1a, difference.lookup(ce1a));
-  Expect.identical(ce2, difference.lookup(ce2));
-
-  // Intersection always takes elements from receiver set.
-  var intersection = set1.intersection(set2);
-  testLength(1, intersection);
-  Expect.identical(ce1a, intersection.lookup(ce1a));
-
-  intersection = set1.intersection(set3);
-  testLength(0, intersection);
-}
-
-// Objects that are equal based on data.
-class CE implements Comparable<CE> {
-  final int id;
-  const CE(this.id);
-  int get hashCode => id;
-  bool operator ==(Object other) => other is CE && id == (other as CE).id;
-  int compareTo(CE other) => id - other.id;
-  String toString() => "CE($id)";
-}
-
-// Equality of Id objects based on id modulo value.
-Function customEq(int mod) => (CE e1, CE e2) => ((e1.id - e2.id) % mod) == 0;
-Function customHash(int mod) => (CE e) => e.id % mod;
-Function customCompare(int mod) =>
-    (CE e1, CE e2) => (e1.id % mod) - (e2.id % mod);
-bool validKey(Object o) => o is CE;
-final customId = new Map.identity();
-int counter = 0;
-int identityCompare(e1, e2) {
-  if (identical(e1, e2)) return 0;
-  int i1 = customId.putIfAbsent(e1, () => ++counter);
-  int i2 = customId.putIfAbsent(e2, () => ++counter);
-  return i1 - i2;
-}
-
-void testIdentity(Set create()) {
-  Set set = create();
-  var e1 = new CE(0);
-  var e2 = new CE(0);
-  Expect.equals(e1, e2);
-  Expect.isFalse(identical(e1, e2));
-
-  testLength(0, set);
-  set.add(e1);
-  testLength(1, set);
-  Expect.isTrue(set.contains(e1));
-  Expect.isFalse(set.contains(e2));
-
-  set.add(e2);
-  testLength(2, set);
-  Expect.isTrue(set.contains(e1));
-  Expect.isTrue(set.contains(e2));
-
-  var set2 = set.toSet();
-  testLength(2, set2);
-  Expect.isTrue(set2.contains(e1));
-  Expect.isTrue(set2.contains(e2));
-}
-
-void testIntSetFrom(setFrom) {
-  List<num> numList = [2, 3, 5, 7, 11, 13];
-
-  Set<int> set1 = setFrom(numList);
-  Expect.listEquals(numList, set1.toList()..sort());
-
-  Set<num> numSet = numList.toSet();
-  Set<int> set2 = setFrom(numSet);
-  Expect.listEquals(numList, set2.toList()..sort());
-
-  Iterable<num> numIter = numList.where((x) => true);
-  Set<int> set3 = setFrom(numIter);
-  Expect.listEquals(numList, set3.toList()..sort());
-
-  Set<int> set4 = setFrom(new Iterable.generate(0));
-  Expect.isTrue(set4.isEmpty);
-}
-
-void testCESetFrom(setFrom) {
-  List<Object> ceList = [
-    new CE(2),
-    new CE(3),
-    new CE(5),
-    new CE(7),
-    new CE(11),
-    new CE(13)
-  ];
-
-  Set<CE> set1 = setFrom(ceList);
-  Expect.listEquals(ceList, set1.toList()..sort());
-
-  Set<CE> ceSet = ceList.toSet();
-  Set<CE> set2 = setFrom(ceSet);
-  Expect.listEquals(ceList, set2.toList()..sort());
-
-  Iterable<CE> ceIter = ceList.where((x) => true);
-  Set<CE> set3 = setFrom(ceIter);
-  Expect.listEquals(ceList, set3.toList()..sort());
-
-  Set<CE> set4 = setFrom(new Iterable.generate(0));
-  Expect.isTrue(set4.isEmpty);
-}
-
-class A {}
-
-class B {}
-
-class C implements A, B {}
-
-void testASetFrom(setFrom) {
-  List<B> bList = <B>[new C()];
-  // Set.from allows to cast elements.
-  Set<A> aSet = setFrom(bList);
-  Expect.isTrue(aSet.length == 1);
-}
-
-main() {
-  testMain(() => new HashSet());
-  testMain(() => new LinkedHashSet());
-  testMain(() => new HashSet.identity());
-  testMain(() => new LinkedHashSet.identity());
-  testMain(() => new HashSet(equals: identical));
-  testMain(() => new LinkedHashSet(equals: identical));
-  testMain(() => new HashSet(
-      equals: (a, b) => a == b,
-      hashCode: (a) => -a.hashCode,
-      isValidKey: (a) => true));
-  testMain(() => new LinkedHashSet(
-      equals: (a, b) => a == b,
-      hashCode: (a) => -a.hashCode,
-      isValidKey: (a) => true));
-  testMain(() => new SplayTreeSet());
-
-  testIdentity(() => new HashSet.identity());
-  testIdentity(() => new LinkedHashSet.identity());
-  testIdentity(() => new HashSet(equals: identical));
-  testIdentity(() => new LinkedHashSet(equals: identical));
-  testIdentity(() => new SplayTreeSet(identityCompare));
-
-  testTypeAnnotations(new HashSet<int>());
-  testTypeAnnotations(new LinkedHashSet<int>());
-  testTypeAnnotations(new HashSet<int>(equals: identical));
-  testTypeAnnotations(new LinkedHashSet<int>(equals: identical));
-  testTypeAnnotations(new HashSet<int>(
-      equals: (int a, int b) => a == b,
-      hashCode: (int a) => a.hashCode,
-      isValidKey: (a) => a is int));
-  testTypeAnnotations(new LinkedHashSet<int>(
-      equals: (int a, int b) => a == b,
-      hashCode: (int a) => a.hashCode,
-      isValidKey: (a) => a is int));
-  testTypeAnnotations(new SplayTreeSet<int>());
-
-  testRetainWhere(([equals, hashCode, validKey, comparator]) =>
-      new HashSet(equals: equals, hashCode: hashCode, isValidKey: validKey));
-  testRetainWhere(([equals, hashCode, validKey, comparator]) =>
-      new LinkedHashSet(
-          equals: equals, hashCode: hashCode, isValidKey: validKey));
-  testRetainWhere(([equals, hashCode, validKey, comparator]) =>
-      new SplayTreeSet(comparator, validKey));
-
-  testDifferenceIntersection(([equals, hashCode, validKey, comparator]) =>
-      new HashSet(equals: equals, hashCode: hashCode, isValidKey: validKey));
-  testDifferenceIntersection(([equals, hashCode, validKey, comparator]) =>
-      new LinkedHashSet(
-          equals: equals, hashCode: hashCode, isValidKey: validKey));
-  testDifferenceIntersection(([equals, hashCode, validKey, comparator]) =>
-      new SplayTreeSet(comparator, validKey));
-
-  testIntSetFrom((x) => new Set<int>.from(x));
-  testIntSetFrom((x) => new HashSet<int>.from(x));
-  testIntSetFrom((x) => new LinkedHashSet<int>.from(x));
-  testIntSetFrom((x) => new SplayTreeSet<int>.from(x));
-
-  testCESetFrom((x) => new Set<CE>.from(x));
-  testCESetFrom((x) => new HashSet<CE>.from(x));
-  testCESetFrom((x) => new LinkedHashSet<CE>.from(x));
-  testCESetFrom((x) => new SplayTreeSet<CE>.from(x));
-
-  testCESetFrom(
-      (x) => new SplayTreeSet<CE>.from(x, customCompare(20), validKey));
-  testCESetFrom((x) => new SplayTreeSet<CE>.from(x, identityCompare));
-
-  testASetFrom((x) => new Set<A>.from(x));
-  testASetFrom((x) => new HashSet<A>.from(x));
-  testASetFrom((x) => new LinkedHashSet<A>.from(x));
-  testASetFrom((x) => new SplayTreeSet<A>.from(x, identityCompare));
-}
diff --git a/tests/corelib/set_to_string_test.dart b/tests/corelib/set_to_string_test.dart
deleted file mode 100644
index f9833bd..0000000
--- a/tests/corelib/set_to_string_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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";
-import "dart:collection";
-
-void main() {
-  Set s = new HashSet();
-  s.add(1);
-  Expect.equals("{1}", s.toString());
-  s.remove(1);
-  s.add(s);
-  Expect.equals("{{...}}", s.toString());
-
-  Queue q = new ListQueue(4);
-  q.add(1);
-  q.add(2);
-  q.add(q);
-  q.add(s);
-
-  Expect.equals("{1, 2, {...}, {{...}}}", q.toString());
-
-  // Throwing in the middle of a toString does not leave the
-  // set as being visited
-  q.addLast(new ThrowOnToString());
-  Expect.throws(q.toString, (e) => e == "Bad!");
-  q.removeLast();
-  Expect.equals("{1, 2, {...}, {{...}}}", q.toString());
-}
-
-class ThrowOnToString {
-  String toString() {
-    throw "Bad!";
-  }
-}
diff --git a/tests/corelib/shuffle_test.dart b/tests/corelib/shuffle_test.dart
deleted file mode 100644
index 09281ef2..0000000
--- a/tests/corelib/shuffle_test.dart
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for List.shuffle.
-library shuffle_test;
-
-import "dart:typed_data";
-import "dart:math" show Random;
-import "package:expect/expect.dart";
-
-main() {
-  List mkList(int n) => new List.generate(n, (x) => x);
-
-  for (int size in [0, 1, 2, 3, 7, 15, 99, 1023]) {
-    List numbers = new List.generate(size, (x) => x);
-    testShuffle(numbers.toList(growable: true));
-    testShuffle(numbers.toList(growable: false));
-    testShuffle(new Uint32List(size)..setAll(0, numbers));
-    testShuffle(new Int32List(size)..setAll(0, numbers));
-    testShuffle(new Uint16List(size)..setAll(0, numbers));
-    testShuffle(new Int16List(size)..setAll(0, numbers));
-    // Some numbers will be truncated in the following two.
-    testShuffle(new Uint8List(size)..setAll(0, numbers));
-    testShuffle(new Int8List(size)..setAll(0, numbers));
-    testShuffle(numbers.map((x) => "$x").toList());
-  }
-
-  // Check that it actually can keep the same list (regression test).
-  List l = [1, 2];
-  success:
-  {
-    for (int i = 0; i < 266; i++) {
-      int first = l.first;
-      l.shuffle();
-      if (l.first == first) break success; // List didn't change.
-    }
-    // Chance of changing 266 times in a row should be < 1:1e80.
-    Expect.fail("List changes every time.");
-  }
-
-  testRandom();
-}
-
-void testShuffle(list) {
-  List copy = list.toList();
-  list.shuffle();
-  if (list.length < 2) {
-    Expect.listEquals(copy, list);
-    return;
-  }
-  // Test that the list after shuffling has the same elements as before,
-  // without considering order.
-  Map seen = {};
-  for (var e in list) {
-    seen[e] = seen.putIfAbsent(e, () => 0) + 1;
-  }
-  for (var e in copy) {
-    int remaining = seen[e];
-    remaining -= 1; // Throws if e was not in map at all.
-    if (remaining == 0) {
-      seen.remove(e);
-    } else {
-      seen[e] = remaining;
-    }
-  }
-  Expect.isTrue(seen.isEmpty);
-  // Test that shuffle actually does make a change. Repeat until the probability
-  // of a proper shuffling hitting the same list again is less than 10^80
-  // (arbitrary bignum - approx. number of atoms in the universe).
-  //
-  // The probablility of shuffling a list of length n into the same list is
-  // 1/n!. If one shuffle didn't change the list, repeat shuffling until
-  // probability of randomly hitting the same list every time is less than
-  // 1/1e80.
-
-  bool listsDifferent() {
-    for (int i = 0; i < list.length; i++) {
-      if (list[i] != copy[i]) return true;
-    }
-    return false;
-  }
-
-  if (list.length < 59) {
-    // 59! > 1e80.
-    double limit = 1e80;
-    double fact = 1.0;
-    for (int i = 2; i < list.length; i++) fact *= i;
-    double combos = fact;
-
-    while (!listsDifferent() && combos < limit) {
-      list.shuffle();
-      combos *= fact;
-    }
-  }
-  if (!listsDifferent()) {
-    Expect.fail("Didn't shuffle at all, p < 1:1e80: $list");
-  }
-}
-
-// Checks that the "random" argument to shuffle is used.
-testRandom() {
-  List randomNums = [37, 87, 42, 157, 252, 17];
-  List numbers = new List.generate(25, (x) => x);
-  List l1 = numbers.toList()..shuffle(new MockRandom(randomNums));
-  for (int i = 0; i < 50; i++) {
-    // With same random sequence, we get the same shuffling each time.
-    List l2 = numbers.toList()..shuffle(new MockRandom(randomNums));
-    Expect.listEquals(l1, l2);
-  }
-}
-
-class MockRandom implements Random {
-  final List<int> _values;
-  int index = 0;
-  MockRandom(this._values);
-
-  int get _next {
-    int next = _values[index];
-    index = (index + 1) % _values.length;
-    return next;
-  }
-
-  int nextInt(int limit) => _next % limit;
-
-  double nextDouble() => _next / 256.0;
-
-  bool nextBool() => _next.isEven;
-}
diff --git a/tests/corelib/sort_helper.dart b/tests/corelib/sort_helper.dart
deleted file mode 100644
index 9c73017..0000000
--- a/tests/corelib/sort_helper.dart
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2011, 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 sort_helper;
-
-import "package:expect/expect.dart";
-
-class SortHelper {
-  SortHelper(this.sortFunction, this.compareFunction) {}
-
-  void run() {
-    testSortIntLists();
-    testSortDoubleLists();
-  }
-
-  bool isSorted(List a) {
-    for (int i = 1; i < a.length; i++) {
-      if (compareFunction(a[i - 1], a[i]) > 0) {
-        return false;
-      }
-    }
-    return true;
-  }
-
-  void testSortIntLists() {
-    List a = new List(40);
-
-    for (int i = 0; i < a.length; i++) {
-      a[i] = i;
-    }
-    testSort(a);
-
-    for (int i = 0; i < a.length; i++) {
-      a[a.length - i - 1] = i;
-    }
-    testSort(a);
-
-    for (int i = 0; i < 21; i++) {
-      a[i] = 1;
-    }
-    for (int i = 21; i < a.length; i++) {
-      a[i] = 2;
-    }
-    testSort(a);
-
-    // Same with bad pivot-choices.
-    for (int i = 0; i < 21; i++) {
-      a[i] = 1;
-    }
-    for (int i = 21; i < a.length; i++) {
-      a[i] = 2;
-    }
-    a[6] = 1;
-    a[13] = 1;
-    a[19] = 1;
-    a[25] = 1;
-    a[33] = 2;
-    testSort(a);
-
-    for (int i = 0; i < 21; i++) {
-      a[i] = 2;
-    }
-    for (int i = 21; i < a.length; i++) {
-      a[i] = 1;
-    }
-    testSort(a);
-
-    // Same with bad pivot-choices.
-    for (int i = 0; i < 21; i++) {
-      a[i] = 2;
-    }
-    for (int i = 21; i < a.length; i++) {
-      a[i] = 1;
-    }
-    a[6] = 2;
-    a[13] = 2;
-    a[19] = 2;
-    a[25] = 2;
-    a[33] = 1;
-    testSort(a);
-
-    var a2 = new List(0);
-    testSort(a2);
-
-    var a3 = new List(1);
-    a3[0] = 1;
-    testSort(a3);
-
-    // --------
-    // Test insertion sort.
-    testInsertionSort(0, 1, 2, 3);
-    testInsertionSort(0, 1, 3, 2);
-    testInsertionSort(0, 3, 2, 1);
-    testInsertionSort(0, 3, 1, 2);
-    testInsertionSort(0, 2, 1, 3);
-    testInsertionSort(0, 2, 3, 1);
-    testInsertionSort(1, 0, 2, 3);
-    testInsertionSort(1, 0, 3, 2);
-    testInsertionSort(1, 2, 3, 0);
-    testInsertionSort(1, 2, 0, 3);
-    testInsertionSort(1, 3, 2, 0);
-    testInsertionSort(1, 3, 0, 2);
-    testInsertionSort(2, 0, 1, 3);
-    testInsertionSort(2, 0, 3, 1);
-    testInsertionSort(2, 1, 3, 0);
-    testInsertionSort(2, 1, 0, 3);
-    testInsertionSort(2, 3, 1, 0);
-    testInsertionSort(2, 3, 0, 1);
-    testInsertionSort(3, 0, 1, 2);
-    testInsertionSort(3, 0, 2, 1);
-    testInsertionSort(3, 1, 2, 0);
-    testInsertionSort(3, 1, 0, 2);
-    testInsertionSort(3, 2, 1, 0);
-    testInsertionSort(3, 2, 0, 1);
-  }
-
-  void testSort(List a) {
-    sortFunction(a);
-    Expect.isTrue(isSorted(a));
-  }
-
-  void testInsertionSort(int i1, int i2, int i3, int i4) {
-    var a = new List(4);
-    a[0] = i1;
-    a[1] = i2;
-    a[2] = i3;
-    a[3] = i4;
-    testSort(a);
-  }
-
-  void testSortDoubleLists() {
-    List a = new List(40);
-    for (int i = 0; i < a.length; i++) {
-      a[i] = 1.0 * i + 0.5;
-    }
-    testSort(a);
-
-    for (int i = 0; i < a.length; i++) {
-      a[i] = 1.0 * (a.length - i) + 0.5;
-    }
-    testSort(a);
-
-    for (int i = 0; i < a.length; i++) {
-      a[i] = 1.5;
-    }
-    testSort(a);
-  }
-
-  Function sortFunction;
-  Function compareFunction;
-}
diff --git a/tests/corelib/sort_test.dart b/tests/corelib/sort_test.dart
deleted file mode 100644
index 7229644..0000000
--- a/tests/corelib/sort_test.dart
+++ /dev/null
@@ -1,313 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for sort routines.
-library sort_test;
-
-import "package:expect/expect.dart";
-import 'sort_helper.dart';
-
-main() {
-  var compare = (a, b) => a.compareTo(b);
-  var sort = (list) => list.sort(compare);
-  new SortHelper(sort, compare).run();
-
-  compare = (a, b) => -a.compareTo(b);
-  new SortHelper(sort, compare).run();
-
-  compare = (a, b) => a.compareTo(b);
-
-  // Pivot-candidate indices: 7, 15, 22, 29, 37
-  // Test Dutch flag partitioning (candidates 2 and 4 are the same).
-  var list = [
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0 /**/,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    1 /**/,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1 /**/,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1 /**/,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2 /**/,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2
-  ];
-  list.sort(compare);
-  Expect.listEquals(list, [
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2
-  ]);
-
-  list = [
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    1 /**/,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0 /**/,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    0 /**/,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    0 /**/,
-    2 /**/,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2 /**/,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2
-  ];
-  list.sort(compare);
-  Expect.listEquals(list, [
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    0,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2
-  ]);
-
-  // Pivots: 1 and 8.
-  // The second partition will be big (more than 2/3 of the list), and an
-  // optimization kicks in that removes the pivots from the partition.
-  list = [
-    0,
-    9,
-    0,
-    9,
-    3,
-    9,
-    0,
-    1 /**/,
-    1,
-    0,
-    1,
-    9,
-    8,
-    2,
-    1,
-    1 /**/,
-    4,
-    5,
-    2,
-    5,
-    0,
-    1,
-    8 /**/,
-    8,
-    8,
-    5,
-    2,
-    2,
-    9,
-    8 /**/,
-    8,
-    4,
-    4,
-    1,
-    5,
-    3,
-    2,
-    8 /**/,
-    5,
-    1,
-    2,
-    8,
-    5,
-    6,
-    8
-  ];
-  list.sort(compare);
-  Expect.listEquals(list, [
-    0,
-    0,
-    0,
-    0,
-    0,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    1,
-    2,
-    2,
-    2,
-    2,
-    2,
-    2,
-    3,
-    3,
-    4,
-    4,
-    4,
-    5,
-    5,
-    5,
-    5,
-    5,
-    5,
-    6,
-    8,
-    8,
-    8,
-    8,
-    8,
-    8,
-    8,
-    8,
-    8,
-    9,
-    9,
-    9,
-    9,
-    9
-  ]);
-}
diff --git a/tests/corelib/splay_tree_from_iterable_test.dart b/tests/corelib/splay_tree_from_iterable_test.dart
deleted file mode 100644
index 5db4c1b..0000000
--- a/tests/corelib/splay_tree_from_iterable_test.dart
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright (c) 2011, 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";
-import 'dart:collection';
-
-main() {
-  defaultFunctionValuesTest();
-  defaultKeyFunctionTest();
-  defaultValueFunctionTest();
-  noDefaultValuesTest();
-  emptyIterableTest();
-  equalElementsTest();
-  genericTypeTest();
-  typedTest();
-}
-
-void defaultFunctionValuesTest() {
-  var map = new SplayTreeMap.fromIterable([1, 2, 3]);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(1, map[1]);
-  Expect.equals(2, map[2]);
-  Expect.equals(3, map[3]);
-}
-
-void defaultKeyFunctionTest() {
-  var map = new SplayTreeMap.fromIterable([1, 2, 3], value: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(2, map[1]);
-  Expect.equals(3, map[2]);
-  Expect.equals(4, map[3]);
-}
-
-void defaultValueFunctionTest() {
-  var map = new SplayTreeMap.fromIterable([1, 2, 3], key: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(1, map[2]);
-  Expect.equals(2, map[3]);
-  Expect.equals(3, map[4]);
-}
-
-void noDefaultValuesTest() {
-  var map = new SplayTreeMap.fromIterable([1, 2, 3],
-      key: (x) => x + 1, value: (x) => x - 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals(0, map[2]);
-  Expect.equals(1, map[3]);
-  Expect.equals(2, map[4]);
-}
-
-void emptyIterableTest() {
-  var map = new SplayTreeMap.fromIterable([]);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(0, map.length);
-  Expect.equals(0, map.keys.length);
-  Expect.equals(0, map.values.length);
-}
-
-void equalElementsTest() {
-  var map = new SplayTreeMap.fromIterable([1, 2, 2], key: (x) => x + 1);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(2, map.length);
-  Expect.equals(2, map.keys.length);
-  Expect.equals(2, map.values.length);
-
-  Expect.equals(1, map[2]);
-  Expect.equals(2, map[3]);
-}
-
-void genericTypeTest() {
-  var map =
-      new SplayTreeMap<int, String>.fromIterable([1, 2, 3], value: (x) => '$x');
-  Expect.isTrue(map is Map<int, String>);
-  Expect.isTrue(map is SplayTreeMap<int, String>);
-
-  // Make sure it is not just SplayTreeMap<dynamic, dynamic>.
-  Expect.isFalse(map is SplayTreeMap<String, dynamic>);
-  Expect.isFalse(map is SplayTreeMap<dynamic, int>);
-}
-
-// Test in checked mode with explicitly given types.
-void typedTest() {
-  if (!typeAssertionsEnabled) return;
-
-  // Assign functions to untyped function variables.
-  Function key = (int v) => "$v";
-  Function value = (int v) => v.isOdd;
-  Function id = (int i) => i;
-
-  Expect.throws(() {
-    new SplayTreeMap<String, bool>.fromIterable(<int>[1, 2, 3], key: key
-        // No "value" map, defaults to identity, which returns int, not bool.
-        );
-  });
-
-  Expect.throws(() {
-    new SplayTreeMap<String, bool>.fromIterable(<int>[1, 2, 3],
-        // No "key" map, defaults to identity, which returns int, not String.
-        value: value);
-  });
-
-  Expect.throws(() {
-    new SplayTreeMap<String, bool>.fromIterable(<int>[1, 2, 3],
-        key: id, //     wrong type.
-        value: value);
-  });
-
-  Expect.throws(() {
-    new SplayTreeMap<String, bool>.fromIterable(<int>[1, 2, 3],
-        key: key, value: id //    wrong type.
-        );
-  });
-
-  // But it works with explicit types when used correctly.
-  SplayTreeMap<String, bool> map = new SplayTreeMap<String, bool>.fromIterable(
-      <int>[1, 2, 3],
-      key: key, value: value);
-  Iterable<String> keys = map.keys;
-  Iterable<bool> values = map.values;
-  List<String> keyList = keys.toList();
-  List<bool> valueList = values.toList();
-  Expect.equals(3, keyList.length);
-  Expect.equals(3, valueList.length);
-  Expect.equals(keys.first, map.firstKey());
-  Expect.equals(keys.last, map.lastKey());
-}
diff --git a/tests/corelib/splay_tree_from_iterables_test.dart b/tests/corelib/splay_tree_from_iterables_test.dart
deleted file mode 100644
index 6e22ddf..0000000
--- a/tests/corelib/splay_tree_from_iterables_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2011, 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";
-import 'dart:collection';
-
-main() {
-  positiveTest();
-  emptyMapTest();
-  fewerKeysIterableTest();
-  fewerValuesIterableTest();
-  equalElementsTest();
-  genericTypeTest();
-}
-
-void positiveTest() {
-  var map = new SplayTreeMap.fromIterables([1, 2, 3], ["one", "two", "three"]);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("two", map[2]);
-  Expect.equals("three", map[3]);
-}
-
-void emptyMapTest() {
-  var map = new SplayTreeMap.fromIterables([], []);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(0, map.length);
-  Expect.equals(0, map.keys.length);
-  Expect.equals(0, map.values.length);
-}
-
-void fewerValuesIterableTest() {
-  Expect.throws(() => new SplayTreeMap.fromIterables([1, 2], [0]));
-}
-
-void fewerKeysIterableTest() {
-  Expect.throws(() => new SplayTreeMap.fromIterables([1], [0, 2]));
-}
-
-void equalElementsTest() {
-  var map = new SplayTreeMap.fromIterables([1, 2, 2], ["one", "two", "three"]);
-
-  Expect.isTrue(map is Map);
-  Expect.isTrue(map is SplayTreeMap);
-  Expect.isFalse(map is HashMap);
-
-  Expect.equals(2, map.length);
-  Expect.equals(2, map.keys.length);
-  Expect.equals(2, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("three", map[2]);
-}
-
-void genericTypeTest() {
-  var map = new SplayTreeMap<int, String>.fromIterables(
-      [1, 2, 3], ["one", "two", "three"]);
-  Expect.isTrue(map is Map<int, String>);
-  Expect.isTrue(map is SplayTreeMap<int, String>);
-
-  // Make sure it is not just SplayTreeMap<dynamic, dynamic>.
-  Expect.isFalse(map is SplayTreeMap<String, dynamic>);
-  Expect.isFalse(map is SplayTreeMap<dynamic, int>);
-
-  Expect.equals(3, map.length);
-  Expect.equals(3, map.keys.length);
-  Expect.equals(3, map.values.length);
-
-  Expect.equals("one", map[1]);
-  Expect.equals("two", map[2]);
-  Expect.equals("three", map[3]);
-}
diff --git a/tests/corelib/splay_tree_test.dart b/tests/corelib/splay_tree_test.dart
deleted file mode 100644
index f1064a3..0000000
--- a/tests/corelib/splay_tree_test.dart
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for Splaytrees.
-library splay_tree_test;
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-main() {
-  // Simple tests.
-  SplayTreeMap tree = new SplayTreeMap();
-  tree[1] = "first";
-  tree[3] = "third";
-  tree[5] = "fifth";
-  tree[2] = "second";
-  tree[4] = "fourth";
-
-  var correctSolution = ["first", "second", "third", "fourth", "fifth"];
-
-  tree.forEach((key, value) {
-    Expect.equals(true, key >= 1);
-    Expect.equals(true, key <= 5);
-    Expect.equals(value, correctSolution[key - 1]);
-  });
-
-  for (var v in ["first", "second", "third", "fourth", "fifth"]) {
-    Expect.isTrue(tree.containsValue(v));
-  }
-  ;
-  Expect.isFalse(tree.containsValue("sixth"));
-
-  tree[7] = "seventh";
-
-  Expect.equals(1, tree.firstKey());
-  Expect.equals(7, tree.lastKey());
-
-  Expect.equals(2, tree.lastKeyBefore(3));
-  Expect.equals(4, tree.firstKeyAfter(3));
-
-  Expect.equals(null, tree.lastKeyBefore(1));
-  Expect.equals(2, tree.firstKeyAfter(1));
-
-  Expect.equals(4, tree.lastKeyBefore(5));
-  Expect.equals(7, tree.firstKeyAfter(5));
-
-  Expect.equals(5, tree.lastKeyBefore(7));
-  Expect.equals(null, tree.firstKeyAfter(7));
-
-  Expect.equals(5, tree.lastKeyBefore(6));
-  Expect.equals(7, tree.firstKeyAfter(6));
-
-  testSetFrom();
-  regressRemoveWhere();
-  regressRemoveWhere2();
-  regressFromCompare();
-}
-
-void regressRemoveWhere() {
-  // Regression test. Fix in https://codereview.chromium.org/148523006/
-  var t = new SplayTreeSet();
-  t.addAll([1, 3, 5, 7, 2, 4, 6, 8, 0]);
-  var seen = new List<bool>.filled(9, false);
-  t.removeWhere((x) {
-    // Called only once per element.
-    Expect.isFalse(seen[x], "seen $x");
-    seen[x] = true;
-    return x.isOdd;
-  });
-}
-
-void regressRemoveWhere2() {
-  // Regression test for http://dartbug.com/18676
-  // Removing all elements with removeWhere causes error.
-
-  var t = new SplayTreeSet();
-  t.addAll([1, 2, 3, 4, 5]);
-  t.removeWhere((_) => true); // Should not throw.
-  Expect.isTrue(t.isEmpty);
-  t.addAll([1, 2, 3, 4, 5]);
-  t.retainWhere((_) => false); // Should not throw.
-  Expect.isTrue(t.isEmpty);
-}
-
-void testSetFrom() {
-  var set1 = new SplayTreeSet<num>()..addAll([1, 2, 3, 4, 5]);
-  var set2 = new SplayTreeSet<int>.from(set1);
-  Expect.equals(5, set2.length);
-  for (int i = 1; i <= 5; i++) {
-    Expect.isTrue(set2.contains(i));
-  }
-
-  set1 = new SplayTreeSet<num>()..addAll([0, 1, 2.4, 3.14, 5]);
-  set2 = new SplayTreeSet<int>.from(set1.where((x) => x is int));
-  Expect.equals(3, set2.length);
-}
-
-void regressFromCompare() {
-  // Regression test for http://dartbug.com/23387.
-  // The compare and isValidKey arguments to SplayTreeMap.from were ignored.
-
-  int compare(a, b) {
-    if (a is IncomparableKey && b is IncomparableKey) {
-      return b.id - a.id;
-    }
-    throw "isValidKey failure";
-  }
-
-  bool isValidKey(o) => o is IncomparableKey;
-  IncomparableKey key(int n) => new IncomparableKey(n);
-
-  var entries = {key(0): 0, key(1): 1, key(2): 2, key(0): 0};
-  Expect.equals(4, entries.length);
-  var map =
-      new SplayTreeMap<IncomparableKey, int>.from(entries, compare, isValidKey);
-  Expect.equals(3, map.length);
-  for (int i = 0; i < 3; i++) {
-    Expect.isTrue(map.containsKey(key(i)));
-    Expect.equals(i, map[key(i)]);
-  }
-  Expect.isFalse(map.containsKey(key(5)));
-  Expect.isFalse(map.containsKey(1));
-  Expect.isFalse(map.containsKey("string"));
-  Expect.equals(null, map[key(5)]);
-  Expect.equals(null, map[1]);
-  Expect.equals(null, map["string"]);
-  Expect.throws(() {
-    map[1] = 42;
-  });
-  Expect.throws(() {
-    map["string"] = 42;
-  });
-  map[key(5)] = 42;
-  Expect.equals(4, map.length);
-  Expect.equals(42, map[key(5)]);
-}
-
-class IncomparableKey {
-  final int id;
-  IncomparableKey(this.id);
-}
diff --git a/tests/corelib/stacktrace_current_test.dart b/tests/corelib/stacktrace_current_test.dart
deleted file mode 100644
index 6712e64..0000000
--- a/tests/corelib/stacktrace_current_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, 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:convert" show LineSplitter;
-
-import "package:expect/expect.dart";
-
-void main() {
-  var st0;
-  var st1;
-  // Primitive way to get stack trace,.
-  try {
-    throw 0;
-  } catch (_, s) {
-    st0 = s;
-  }
-  st1 = StackTrace.current;
-
-  var st0s = findMain(st0);
-  var st1s = findMain(st1);
-  // Stack traces are not equal (contains at least a different line number,
-  // and possible different frame numbers).
-  // They are *similar*, so check that they agree on everything but numbers.
-  var digits = new RegExp(r"\d+");
-  Expect.equals(st0s.replaceAll(digits, "0"), st1s.replaceAll(digits, "0"));
-}
-
-String findMain(StackTrace stack) {
-  var string = "$stack";
-  var lines = LineSplitter.split(string).toList();
-  while (lines.isNotEmpty && !lines.first.contains("main")) {
-    lines.removeAt(0);
-  }
-  return lines.join("\n");
-}
diff --git a/tests/corelib/stacktrace_fromstring_test.dart b/tests/corelib/stacktrace_fromstring_test.dart
deleted file mode 100644
index b42aba3..0000000
--- a/tests/corelib/stacktrace_fromstring_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-import "dart:async";
-
-void main() {
-  StackTrace stack;
-  try {
-    throw 0;
-  } catch (e, s) {
-    stack = s;
-  }
-  var string = "$stack";
-  StackTrace stringTrace = new StackTrace.fromString(string);
-  Expect.isTrue(stringTrace is StackTrace);
-  Expect.equals(stack.toString(), stringTrace.toString());
-
-  string = "some random string, nothing like a StackTrace";
-  stringTrace = new StackTrace.fromString(string);
-  Expect.isTrue(stringTrace is StackTrace);
-  Expect.equals(string, stringTrace.toString());
-
-  // Use stacktrace asynchronously.
-  asyncStart();
-  var c = new Completer();
-  c.completeError(0, stringTrace);
-  c.future.then((v) {
-    throw "Unexpected value: $v";
-  }, onError: (e, s) {
-    Expect.equals(string, s.toString());
-  }).then((_) {
-    var c = new StreamController();
-    c.stream.listen((v) {
-      throw "Unexpected value: $v";
-    }, onError: (e, s) {
-      Expect.equals(string, s.toString());
-      asyncEnd();
-    });
-    c.addError(0, stringTrace);
-    c.close();
-  });
-}
diff --git a/tests/corelib/stopwatch2_test.dart b/tests/corelib/stopwatch2_test.dart
deleted file mode 100644
index a95db46..0000000
--- a/tests/corelib/stopwatch2_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Dart test program for elapsed getters in stopwatch support.
-
-import "package:expect/expect.dart";
-
-main() {
-  Stopwatch sw = new Stopwatch()..start();
-  while (sw.elapsedMilliseconds < 2) {
-    /* do nothing. */
-  }
-  sw.stop();
-  Expect.equals(sw.elapsedMicroseconds, sw.elapsed.inMicroseconds);
-  Expect.equals(sw.elapsedMilliseconds, sw.elapsed.inMilliseconds);
-}
diff --git a/tests/corelib/stopwatch_test.dart b/tests/corelib/stopwatch_test.dart
deleted file mode 100644
index e6b8a97..0000000
--- a/tests/corelib/stopwatch_test.dart
+++ /dev/null
@@ -1,128 +0,0 @@
-// 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.
-
-// Dart test program for testing stopwatch support.
-
-library stopwatch_test;
-
-import "package:expect/expect.dart";
-
-class StopwatchTest {
-  static bool checkTicking(Stopwatch sw) {
-    Expect.isFalse(sw.isRunning);
-    sw.start();
-    Expect.isTrue(sw.isRunning);
-    for (int i = 0; i < 1000000; i++) {
-      int.parse(i.toString());
-      if (sw.elapsedTicks > 0) {
-        break;
-      }
-    }
-    return sw.elapsedTicks > 0;
-  }
-
-  static bool checkStopping(Stopwatch sw) {
-    sw.stop();
-    Expect.isFalse(sw.isRunning);
-    int v1 = sw.elapsedTicks;
-    Expect.isTrue(v1 > 0); // Expect a non-zero elapsed time.
-    Stopwatch sw2 = new Stopwatch(); // Used for verification.
-    sw2.start();
-    Expect.isTrue(sw2.isRunning);
-    int sw2LastElapsed = 0;
-    for (int i = 0; i < 100000; i++) {
-      int.parse(i.toString());
-      int v2 = sw.elapsedTicks;
-      if (v1 != v2) {
-        return false;
-      }
-      // If sw2 elapsed twice then sw must have advanced too if it wasn't
-      // stopped.
-      if (sw2LastElapsed > 0 && sw2.elapsedTicks > sw2LastElapsed) {
-        break;
-      }
-      sw2LastElapsed = sw2.elapsedTicks;
-    }
-    // The test only makes sense if measureable time elapsed and elapsed time
-    // on the stopped Stopwatch did not increase.
-    Expect.isTrue(sw2.elapsedTicks > 0);
-    return true;
-  }
-
-  static checkRestart() {
-    Stopwatch sw = new Stopwatch();
-    Expect.isFalse(sw.isRunning);
-    sw.start();
-    Expect.isTrue(sw.isRunning);
-    for (int i = 0; i < 100000; i++) {
-      int.parse(i.toString());
-      if (sw.elapsedTicks > 0) {
-        break;
-      }
-    }
-    sw.stop();
-    Expect.isFalse(sw.isRunning);
-    int initial = sw.elapsedTicks;
-    sw.start();
-    Expect.isTrue(sw.isRunning);
-    for (int i = 0; i < 100000; i++) {
-      int.parse(i.toString());
-      if (sw.elapsedTicks > initial) {
-        break;
-      }
-    }
-    sw.stop();
-    Expect.isFalse(sw.isRunning);
-    Expect.isTrue(sw.elapsedTicks > initial);
-  }
-
-  static checkReset() {
-    Stopwatch sw = new Stopwatch();
-    Expect.isFalse(sw.isRunning);
-    sw.start();
-    Expect.isTrue(sw.isRunning);
-    for (int i = 0; i < 100000; i++) {
-      int.parse(i.toString());
-      if (sw.elapsedTicks > 0) {
-        break;
-      }
-    }
-    sw.stop();
-    Expect.isFalse(sw.isRunning);
-    sw.reset();
-    Expect.isFalse(sw.isRunning);
-    Expect.equals(0, sw.elapsedTicks);
-    sw.start();
-    Expect.isTrue(sw.isRunning);
-    for (int i = 0; i < 100000; i++) {
-      int.parse(i.toString());
-      if (sw.elapsedTicks > 0) {
-        break;
-      }
-    }
-    sw.reset();
-    Expect.isTrue(sw.isRunning);
-    for (int i = 0; i < 100000; i++) {
-      int.parse(i.toString());
-      if (sw.elapsedTicks > 0) {
-        break;
-      }
-    }
-    sw.stop();
-    Expect.isFalse(sw.isRunning);
-    Expect.isTrue(sw.elapsedTicks > 0);
-  }
-
-  static testMain() {
-    Stopwatch sw = new Stopwatch();
-    Expect.isTrue(checkTicking(sw));
-    Expect.isTrue(checkStopping(sw));
-    checkRestart();
-    checkReset();
-  }
-}
-
-main() {
-  StopwatchTest.testMain();
-}
diff --git a/tests/corelib/string_base_vm_test.dart b/tests/corelib/string_base_vm_test.dart
deleted file mode 100644
index 76ff9ad..0000000
--- a/tests/corelib/string_base_vm_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// 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.
-// Dart test program for testing class 'StringBase' (currently VM specific).
-
-library string_base_test;
-
-import "package:expect/expect.dart";
-
-class StringBaseTest {
-  StringBaseTest() {}
-
-  toString() {
-    return "StringBase Tester";
-  }
-
-  static testInterpolation() {
-    var answer = 40 + 2;
-    var s = "The answer is $answer.";
-    Expect.equals("The answer is 42.", s);
-
-    int numBottles = 33;
-    String wall = "wall";
-    s = "${numBottles*3} bottles of beer on the $wall.";
-    Expect.equals("99 bottles of beer on the wall.", s);
-  }
-
-  static testCreation() {
-    String s = "Hello";
-    List<int> a = new List(s.length);
-    List<int> ga = new List();
-    bool exception_caught = false;
-    for (int i = 0; i < a.length; i++) {
-      a[i] = s.codeUnitAt(i);
-      ga.add(s.codeUnitAt(i));
-    }
-    try {
-      String s4 = new String.fromCharCodes([0.0]);
-    } on ArgumentError catch (ex) {
-      exception_caught = true;
-    } on TypeError catch (ex) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-    exception_caught = false;
-    try {
-      String s4 = new String.fromCharCodes([-1]);
-    } on ArgumentError catch (ex) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-  }
-
-  static testSubstring() {
-    String s = "Hello World";
-    Expect.equals("World", s.substring(6, s.length));
-    Expect.equals("", s.substring(8, 8));
-    bool exception_caught = false;
-    try {
-      s.substring(5, 12);
-    } on RangeError catch (ex) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-    exception_caught = false;
-    try {
-      s.substring(5, 4);
-    } on RangeError catch (ex) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-  }
-
-  static void testMain() {
-    testInterpolation();
-    testCreation();
-    testSubstring();
-  }
-}
-
-main() {
-  StringBaseTest.testMain();
-}
diff --git a/tests/corelib/string_buffer_test.dart b/tests/corelib/string_buffer_test.dart
deleted file mode 100644
index 669bde6..0000000
--- a/tests/corelib/string_buffer_test.dart
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// TODO(srdjan): Move StringBuffer to visible names.
-
-void testConstructor() {
-  StringBuffer bf = new StringBuffer("");
-  testBufferLength(0, bf);
-
-  bf = new StringBuffer("abc");
-  testBufferLength(3, bf);
-  Expect.equals("abc", bf.toString());
-
-  bf = new StringBuffer("\x00");
-}
-
-void testWrite() {
-  StringBuffer bf = new StringBuffer("");
-  Expect.equals(true, bf.isEmpty);
-
-  bf.write("a");
-  testBufferLength(1, bf);
-  Expect.equals("a", bf.toString());
-
-  bf = new StringBuffer("");
-  bf.write("a");
-  bf.write("b");
-  Expect.equals("ab", bf.toString());
-
-  bf = new StringBuffer("abc");
-  bf.write("d");
-  bf.write("e");
-  bf.write("f");
-  bf.write("g");
-  bf.write("h");
-  bf.write("i");
-  bf.write("j");
-  bf.write("k");
-  bf.write("l");
-  bf.write("m");
-  bf.write("n");
-  bf.write("o");
-  bf.write("p");
-  bf.write("q");
-  bf.write("r");
-  bf.write("s");
-  bf.write("t");
-  bf.write("u");
-  bf.write("v");
-  bf.write("w");
-  bf.write("x");
-  bf.write("y");
-  bf.write("z");
-  bf.write("\n");
-  bf.write("thequickbrownfoxjumpsoverthelazydog");
-  Expect.equals(
-      "abcdefghijklmnopqrstuvwxyz\n"
-      "thequickbrownfoxjumpsoverthelazydog",
-      bf.toString());
-
-  bf = new StringBuffer("");
-  for (int i = 0; i < 100000; i++) {
-    bf.write('');
-    bf.write("");
-  }
-  Expect.equals("", bf.toString());
-}
-
-void testLength() {
-  StringBuffer bf = new StringBuffer("");
-  testBufferLength(0, bf);
-  bf.write("foo");
-  testBufferLength(3, bf);
-  bf.write("bar");
-  testBufferLength(6, bf);
-  bf.write("");
-  testBufferLength(6, bf);
-}
-
-void testIsEmpty() {
-  StringBuffer bf = new StringBuffer("");
-  Expect.equals(true, bf.isEmpty);
-  bf.write("foo");
-  Expect.equals(false, bf.isEmpty);
-}
-
-void testWriteAll() {
-  StringBuffer bf = new StringBuffer("");
-  bf.writeAll(["foo", "bar", "a", "b", "c"]);
-  Expect.equals("foobarabc", bf.toString());
-
-  bf.writeAll([]);
-  Expect.equals("foobarabc", bf.toString());
-
-  bf.writeAll(["", "", ""]);
-  Expect.equals("foobarabc", bf.toString());
-
-  bf.writeAll(["", "", ""], "");
-  Expect.equals("foobarabc", bf.toString());
-
-  StringBuffer bf2 = new StringBuffer("");
-  bf2.writeAll([], "s");
-  Expect.equals("", bf2.toString());
-
-  StringBuffer bf3 = new StringBuffer("");
-  bf3.writeAll(["a"], "s");
-  Expect.equals("a", bf3.toString());
-
-  StringBuffer bf4 = new StringBuffer("");
-  bf4.writeAll(["a", "b"], "s");
-  Expect.equals("asb", bf4.toString());
-}
-
-void testWriteAll2() {
-  // Passing `null` for separator is an error that is checked when the iterable
-  // is not empty.  This is not specified in the documentation but we want
-  // implementations to be consistent.
-  StringBuffer bf1 = new StringBuffer("");
-  bf1.writeAll([], null);
-  Expect.equals("", bf1.toString());
-
-  StringBuffer bf2 = new StringBuffer("");
-  Expect.throws(() {
-    bf2.writeAll([1], null);
-  });
-}
-
-void testWriteln() {
-  StringBuffer bf1 = new StringBuffer("");
-  bf1.writeln("Hello");
-  Expect.equals("Hello\n", bf1.toString());
-
-  StringBuffer bf2 = new StringBuffer("");
-  bf2.writeln();
-  Expect.equals("\n", bf2.toString());
-
-  StringBuffer bf3 = new StringBuffer("");
-  bf3.writeln("\n");
-  bf3.writeln(null);
-  bf3.writeln(1);
-  Expect.equals("\n\nnull\n1\n", bf3.toString());
-}
-
-void testClear() {
-  StringBuffer bf = new StringBuffer("");
-  bf.write("foo");
-  bf.clear();
-  Expect.equals("", bf.toString());
-  testBufferLength(0, bf);
-
-  bf.write("bar");
-  Expect.equals("bar", bf.toString());
-  testBufferLength(3, bf);
-  bf.clear();
-  Expect.equals("", bf.toString());
-  testBufferLength(0, bf);
-}
-
-void testToString() {
-  StringBuffer bf = new StringBuffer("");
-  Expect.equals("", bf.toString());
-
-  bf = new StringBuffer("foo");
-  Expect.equals("foo", bf.toString());
-
-  bf = new StringBuffer("foo");
-  bf.write("bar");
-  Expect.equals("foobar", bf.toString());
-}
-
-void testChaining() {
-  StringBuffer bf = new StringBuffer("");
-  StringBuffer bf2 = new StringBuffer("");
-  bf2.write("bf2");
-  bf..write("foo")..write("bar")..write(bf2)..write(bf2)..write("toto");
-  Expect.equals("foobarbf2bf2toto", bf.toString());
-}
-
-void testWriteCharCode() {
-  StringBuffer bf1 = new StringBuffer();
-  StringBuffer bf2 = new StringBuffer();
-  bf1.write("a");
-  bf2.writeCharCode(0x61); // a
-  bf1.write("b");
-  bf2.writeCharCode(0x62); // b
-  bf1.write("c");
-  bf2.writeCharCode(0x63); // c
-  bf1.write(new String.fromCharCode(0xD823));
-  bf2.writeCharCode(0xD823);
-  bf1.write(new String.fromCharCode(0xDC23));
-  bf2.writeCharCode(0xDC23);
-  bf1.write("\u{1d49e}");
-  bf2.writeCharCode(0x1d49e);
-  bf1.write("\x00");
-  bf2.writeCharCode(0);
-  Expect.equals(bf1.toString(), bf2.toString());
-  Expect.equals("abc\u{18c23}\u{1d49e}\x00", bf2.toString());
-
-  // Mixing strings and char-codes.
-  bf1.clear();
-  bf1.write("abcde");
-  bf1.writeCharCode(0x61);
-  bf1.writeCharCode(0x62);
-  bf1.writeCharCode(0x63);
-  bf1.write("d");
-  bf1.writeCharCode(0x65);
-  Expect.equals("abcdeabcde", bf1.toString());
-
-  // Out-of-range character codes are not allowed.
-  Expect.throws(() {
-    bf2.writeCharCode(-1);
-  });
-  Expect.throws(() {
-    bf2.writeCharCode(0x110000);
-  });
-}
-
-void testBufferLength(int length, StringBuffer bf) {
-  Expect.equals(length, bf.length);
-  (length == 0 ? Expect.isTrue : Expect.isFalse)(bf.isEmpty);
-  (length != 0 ? Expect.isTrue : Expect.isFalse)(bf.isNotEmpty);
-}
-
-void main() {
-  testToString();
-  testConstructor();
-  testLength();
-  testIsEmpty();
-  testWrite();
-  testWriteCharCode();
-  testWriteAll();
-  testWriteAll2();
-  testWriteln();
-  testClear();
-  testChaining();
-}
diff --git a/tests/corelib/string_case_test.dart b/tests/corelib/string_case_test.dart
deleted file mode 100644
index b199de7..0000000
--- a/tests/corelib/string_case_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  testLowerUpper();
-  testSpecialCases();
-}
-
-void testLowerUpper() {
-  var a = "Stop! Smell the Roses.";
-  var allLower = "stop! smell the roses.";
-  var allUpper = "STOP! SMELL THE ROSES.";
-  Expect.equals(allUpper, a.toUpperCase());
-  Expect.equals(allLower, a.toLowerCase());
-}
-
-void testSpecialCases() {
-  // Letters in Latin-1 where the upper case is not in Latin-1.
-
-  // German sharp s. Upper case variant is "SS".
-  Expect.equals("SS", "\xdf".toUpperCase()); //                 //# 01: ok
-  Expect.equals("\xdf", "\xdf".toLowerCase());
-  Expect.equals("ss", "\xdf".toUpperCase().toLowerCase()); //   //# 01: continued
-  // Micro sign (not same as lower-case Greek letter mu, U+03BC).
-  Expect.equals("\u039c", "\xb5".toUpperCase()); //             //# 02: ok
-  Expect.equals("\xb5", "\xb5".toLowerCase());
-  Expect.equals("\u03Bc", //                                    //# 02: continued
-                "\xb5".toUpperCase().toLowerCase()); //         //# 02: continued
-  // Small letter y diaresis.
-  Expect.equals("\u0178", "\xff".toUpperCase()); //             //# 03: ok
-  Expect.equals("\xff", "\xff".toLowerCase());
-  Expect.equals("\xff", "\xff".toUpperCase().toLowerCase()); // //# 03: continued
-  // Zero.
-  Expect.equals("\x00", "\x00".toLowerCase());
-  Expect.equals("\x00", "\x00".toUpperCase());
-
-  // Test all combinations of ordering of lower-case, upper-case and
-  // special-when-upper-cased characters.
-  Expect.equals("AA\u0178", "Aa\xff".toUpperCase()); //         //# 03: continued
-  Expect.equals("AA\u0178", "aA\xff".toUpperCase()); //         //# 03: continued
-  Expect.equals("A\u0178A", "A\xffa".toUpperCase()); //         //# 03: continued
-  Expect.equals("A\u0178A", "a\xffA".toUpperCase()); //         //# 03: continued
-  Expect.equals("\u0178AA", "\xffAa".toUpperCase()); //         //# 03: continued
-  Expect.equals("\u0178AA", "\xffaA".toUpperCase()); //         //# 03: continued
-
-  Expect.equals("aa\xff", "Aa\xff".toLowerCase());
-  Expect.equals("aa\xff", "aA\xff".toLowerCase());
-  Expect.equals("a\xffa", "A\xffa".toLowerCase());
-  Expect.equals("a\xffa", "a\xffA".toLowerCase());
-  Expect.equals("\xffaa", "\xffAa".toLowerCase());
-  Expect.equals("\xffaa", "\xffaA".toLowerCase());
-}
diff --git a/tests/corelib/string_codeunits_test.dart b/tests/corelib/string_codeunits_test.dart
deleted file mode 100644
index 074b1ab..0000000
--- a/tests/corelib/string_codeunits_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  test(String s) {
-    List<int> units = s.codeUnits;
-    List<int> expectedUnits = <int>[];
-    for (int i = 0; i < s.length; i++) {
-      expectedUnits.add(s.codeUnitAt(i));
-    }
-
-    Expect.equals(s.length, units.length);
-    for (int i = 0; i < s.length; i++) {
-      Expect.equals(s.codeUnitAt(i), units.elementAt(i));
-    }
-
-    // for-in
-    var res = [];
-    for (int unit in units) {
-      res.add(unit);
-    }
-    Expect.listEquals(expectedUnits, res);
-
-    // .map
-    Expect.listEquals(expectedUnits.map((x) => x.toRadixString(16)).toList(),
-        units.map((x) => x.toRadixString(16)).toList());
-
-    if (s == "") {
-      Expect.throws(() => units.first, (e) => e is StateError);
-      Expect.throws(() => units.last, (e) => e is StateError);
-      Expect.throws(() => units[0], (e) => e is RangeError);
-      Expect.throws(() => units[0] = 499, (e) => e is UnsupportedError);
-      Expect.listEquals([], units.sublist(0, 0));
-      Expect.equals(-1, units.indexOf(42));
-      Expect.equals(-1, units.lastIndexOf(499));
-    } else {
-      Expect.equals(s.codeUnitAt(0), units.first);
-      Expect.equals(s.codeUnitAt(s.length - 1), units.last);
-      Expect.equals(s.codeUnitAt(0), units[0]);
-      Expect.throws(() {
-        units[0] = 499;
-      }, (e) => e is UnsupportedError);
-      List<int> sub = units.sublist(1);
-      Expect.listEquals(s.substring(1, s.length).codeUnits, sub);
-      Expect.equals(-1, units.indexOf(-1));
-      Expect.equals(0, units.indexOf(units[0]));
-      Expect.equals(-1, units.lastIndexOf(-1));
-      Expect.equals(
-          units.length - 1, units.lastIndexOf(units[units.length - 1]));
-    }
-
-    Iterable reversed = units.reversed;
-    int i = units.length - 1;
-    for (int codeUnit in reversed) {
-      Expect.equals(units[i--], codeUnit);
-    }
-  }
-
-  test("");
-  test("abc");
-  test("\x00\u0000\u{000000}");
-  test("\u{ffff}\u{10000}\u{10ffff}");
-  String string = new String.fromCharCodes(
-      [0xdc00, 0xd800, 61, 0xd9ab, 0xd9ab, 0xddef, 0xddef, 62, 0xdc00, 0xd800]);
-  test(string);
-  string = "\x00\x7f\xff\u0100\ufeff\uffef\uffff"
-      "\u{10000}\u{12345}\u{1d800}\u{1dc00}\u{1ffef}\u{1ffff}";
-  test(string);
-
-  // Reading each unit of a surrogate pair works.
-  var r = "\u{10000}".codeUnits;
-  var it = r.iterator;
-  Expect.isTrue(it.moveNext());
-  Expect.equals(0xD800, it.current);
-  Expect.isTrue(it.moveNext());
-  Expect.equals(0xDC00, it.current);
-}
diff --git a/tests/corelib/string_from_environment2_test.dart b/tests/corelib/string_from_environment2_test.dart
deleted file mode 100644
index b6d81b8..0000000
--- a/tests/corelib/string_from_environment2_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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.
-// SharedOptions=-Da=a -Da=bb -Db=bb -Dc=ccc -Da=ccc -Db=ccc
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals('ccc', const String.fromEnvironment('a'));
-  Expect.equals('ccc', const String.fromEnvironment('b'));
-  Expect.equals('ccc', const String.fromEnvironment('c'));
-}
diff --git a/tests/corelib/string_from_environment3_test.dart b/tests/corelib/string_from_environment3_test.dart
deleted file mode 100644
index 962f5f1..0000000
--- a/tests/corelib/string_from_environment3_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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.
-
-main() {
-  const String.fromEnvironment('NOT_FOUND', defaultValue: 1); // //# 01: compile-time error
-  const String.fromEnvironment('NOT_FOUND', defaultValue: true); // //# 02: compile-time error
-  const String.fromEnvironment(null); // //# 03: compile-time error
-  const String.fromEnvironment(1); // //# 04: compile-time error
-  const String.fromEnvironment([]); // //# 05: compile-time error
-}
diff --git a/tests/corelib/string_from_environment_test.dart b/tests/corelib/string_from_environment_test.dart
deleted file mode 100644
index 2134e44..0000000
--- a/tests/corelib/string_from_environment_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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.
-// SharedOptions=-Da=a -Db=bb -Dc=ccc -Dd=
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals('a', const String.fromEnvironment('a'));
-  Expect.equals('bb', const String.fromEnvironment('b'));
-  Expect.equals('ccc', const String.fromEnvironment('c'));
-  Expect.equals('', const String.fromEnvironment('d'));
-}
diff --git a/tests/corelib/string_from_list_test.dart b/tests/corelib/string_from_list_test.dart
deleted file mode 100644
index 062d6b6..0000000
--- a/tests/corelib/string_from_list_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2011, 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";
-
-void main() {
-  Expect.equals("", new String.fromCharCodes(new List(0)));
-  Expect.equals("", new String.fromCharCodes([]));
-  Expect.equals("", new String.fromCharCodes(const []));
-  Expect.equals("AB", new String.fromCharCodes([65, 66]));
-  Expect.equals("AB", new String.fromCharCodes(const [65, 66]));
-  Expect.equals("Ærø", new String.fromCharCodes(const [0xc6, 0x72, 0xf8]));
-  Expect.equals("\u{1234}", new String.fromCharCodes([0x1234]));
-  Expect.equals("\u{12345}*", new String.fromCharCodes([0x12345, 42]));
-  Expect.equals("", new String.fromCharCodes(new List()));
-  {
-    var a = new List();
-    a.add(65);
-    a.add(66);
-    Expect.equals("AB", new String.fromCharCodes(a));
-  }
-
-  // Long list (bug 6919).
-  for (int len in [499, 500, 501, 999, 100000]) {
-    List<int> list = new List(len);
-    for (int i = 0; i < len; i++) {
-      list[i] = 65 + (i % 26);
-    }
-    for (int i = len - 9; i < len; i++) {
-      list[i] = 48 + (len - i);
-    }
-    // We should not throw a stack overflow here.
-    String long = new String.fromCharCodes(list);
-    // Minimal sanity checking on the string.
-    Expect.isTrue(long.startsWith('ABCDE'));
-    Expect.isTrue(long.endsWith('987654321'));
-    int middle = len ~/ 2;
-    middle -= middle % 26;
-    Expect.equals('XYZABC', long.substring(middle - 3, middle + 3));
-    Expect.equals(len, long.length);
-  }
-
-  // Should work with iterables and non-default-lists (http://dartbug.com/8922)
-  Expect.equals("CBA", new String.fromCharCodes([65, 66, 67].reversed));
-  Expect.equals(
-      "BCD", new String.fromCharCodes([65, 66, 67].map((x) => x + 1)));
-  Expect.equals(
-      "AC", new String.fromCharCodes([0x41, 0x42, 0x43].where((x) => x.isOdd)));
-  Expect.equals(
-      "CE",
-      new String.fromCharCodes(
-          [0x41, 0x42, 0x43].where((x) => x.isOdd).map((x) => x + 2)));
-  Expect.equals(
-      "ABC", new String.fromCharCodes(new Iterable.generate(3, (x) => 65 + x)));
-  Expect.equals("ABC", new String.fromCharCodes("ABC".codeUnits));
-  Expect.equals(
-      "BCD", new String.fromCharCodes("ABC".codeUnits.map((x) => x + 1)));
-  Expect.equals("BCD", new String.fromCharCodes("ABC".runes.map((x) => x + 1)));
-
-  var nonBmpCharCodes = [0, 0xD812, 0xDC34, 0x14834, 0xDC34, 0xD812];
-  var nonBmp = new String.fromCharCodes(nonBmpCharCodes);
-  Expect.equals(7, nonBmp.length);
-  Expect.equals(0, nonBmp.codeUnitAt(0));
-  Expect.equals(0xD812, nonBmp.codeUnitAt(1)); // Separated surrogate pair
-  Expect.equals(0xDC34, nonBmp.codeUnitAt(2));
-  Expect.equals(0xD812, nonBmp.codeUnitAt(3)); // Single non-BMP code point.
-  Expect.equals(0xDC34, nonBmp.codeUnitAt(4));
-  Expect.equals(0xDC34, nonBmp.codeUnitAt(5)); // Unmatched surrogate.
-  Expect.equals(0xD812, nonBmp.codeUnitAt(6)); // Unmatched surrogate.
-
-  var reversedNonBmp = new String.fromCharCodes(nonBmpCharCodes.reversed);
-  Expect.equals(7, reversedNonBmp.length);
-  Expect.equals(0, reversedNonBmp.codeUnitAt(6));
-  Expect.equals(0xD812, reversedNonBmp.codeUnitAt(5));
-  Expect.equals(0xDC34, reversedNonBmp.codeUnitAt(4));
-  Expect.equals(0xDC34, reversedNonBmp.codeUnitAt(3));
-  Expect.equals(0xD812, reversedNonBmp.codeUnitAt(2));
-  Expect.equals(0xDC34, reversedNonBmp.codeUnitAt(1));
-  Expect.equals(0xD812, reversedNonBmp.codeUnitAt(0));
-
-  Expect.equals(nonBmp, new String.fromCharCodes(nonBmp.codeUnits));
-  Expect.equals(nonBmp, new String.fromCharCodes(nonBmp.runes));
-}
diff --git a/tests/corelib/string_fromcharcode_test.dart b/tests/corelib/string_fromcharcode_test.dart
deleted file mode 100644
index fcc874d..0000000
--- a/tests/corelib/string_fromcharcode_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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";
-
-main() {
-  Expect.equals("A", new String.fromCharCode(65));
-  Expect.equals("B", new String.fromCharCode(66));
-  var gClef = new String.fromCharCode(0x1D11E);
-  Expect.equals(2, gClef.length);
-  Expect.equals(0xD834, gClef.codeUnitAt(0));
-  Expect.equals(0xDD1E, gClef.codeUnitAt(1));
-
-  // Unmatched surrogates.
-  var unmatched = new String.fromCharCode(0xD800);
-  Expect.equals(1, unmatched.length);
-  Expect.equals(0xD800, unmatched.codeUnitAt(0));
-  unmatched = new String.fromCharCode(0xDC00);
-  Expect.equals(1, unmatched.length);
-  Expect.equals(0xDC00, unmatched.codeUnitAt(0));
-
-  Expect.throws(() => new String.fromCharCode(-1), (e) => e is ArgumentError);
-
-  // Invalid code point.
-  Expect.throws(
-      () => new String.fromCharCode(0x110000), (e) => e is ArgumentError);
-
-  Expect.throws(
-      () => new String.fromCharCode(0x110001), (e) => e is ArgumentError);
-}
diff --git a/tests/corelib/string_fromcharcodes_test.dart b/tests/corelib/string_fromcharcodes_test.dart
deleted file mode 100644
index c5b90a7..0000000
--- a/tests/corelib/string_fromcharcodes_test.dart
+++ /dev/null
@@ -1,292 +0,0 @@
-// 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";
-import "dart:typed_data";
-
-main() {
-  iter(count, [values]) => values is List
-      ? new Iterable.generate(count, (x) => values[x])
-      : new Iterable.generate(count, (x) => values);
-  test(expect, iter, [start = 0, end]) {
-    var actual = new String.fromCharCodes(iter, start, end);
-    Expect.equals(expect, actual);
-  }
-
-  testThrows(iterable, [start = 0, end]) {
-    Expect.throws(() {
-      new String.fromCharCodes(iterable, start, end);
-    });
-  }
-
-  test("", iter(0));
-  test("", []);
-  test("", const []);
-  test("", new List(0));
-  test("", new Uint8List(0));
-  test("", new Uint16List(0));
-  test("", new Uint32List(0));
-  test("", "".codeUnits);
-
-  test("\x00", iter(1, 0));
-  test("\x00", [0]);
-  test("\x00", const [0]);
-  test("\x00", new List(1)..[0] = 0);
-  test("\x00", new Uint8List(1));
-  test("\x00", new Uint16List(1));
-  test("\x00", new Uint32List(1));
-  test("\x00", "\x00".codeUnits);
-
-  test("\xff", iter(1, 255));
-  test("\xFF", [255]);
-  test("\xFF", const [255]);
-  test("\xFF", new List(1)..[0] = 255);
-  test("\xFF", new Uint8List(1)..[0] = 255);
-  test("\xFF", new Uint16List(1)..[0] = 255);
-  test("\xFF", new Uint32List(1)..[0] = 255);
-  test("\xFF", "\xFF".codeUnits);
-
-  test("\u0100", iter(1, 256));
-  test("\u0100", [256]);
-  test("\u0100", const [256]);
-  test("\u0100", new List(1)..[0] = 256);
-  test("\u0100", new Uint16List(1)..[0] = 256);
-  test("\u0100", new Uint32List(1)..[0] = 256);
-  test("\u0100", "\u0100".codeUnits);
-
-  test("\uffff", iter(1, 65535));
-  test("\uffff", [65535]);
-  test("\uffff", const [65535]);
-  test("\uffff", new List(1)..[0] = 65535);
-  test("\uffff", new Uint16List(1)..[0] = 65535);
-  test("\uffff", new Uint32List(1)..[0] = 65535);
-  test("\uffff", "\uffff".codeUnits);
-
-  test("\u{10000}", iter(1, 65536));
-  test("\u{10000}", [65536]);
-  test("\u{10000}", const [65536]);
-  test("\u{10000}", new List(1)..[0] = 65536);
-  test("\u{10000}", new Uint32List(1)..[0] = 65536);
-  test("\u{10000}", "\u{10000}".codeUnits);
-
-  test("\u{10FFFF}", iter(1, 0x10FFFF));
-  test("\u{10FFFF}", [0x10FFFF]);
-  test("\u{10FFFF}", const [0x10FFFF]);
-  test("\u{10FFFF}", new List(1)..[0] = 0x10FFFF);
-  test("\u{10FFFF}", new Uint32List(1)..[0] = 0x10FFFF);
-
-  test("\u{10ffff}", iter(2, [0xDBFF, 0xDFFF]));
-  test("\u{10ffff}", [0xDBFF, 0xDFFF]);
-  test("\u{10ffff}", const [0xDBFF, 0xDFFF]);
-  test(
-      "\u{10ffff}",
-      new List(2)
-        ..[0] = 0xDBFF
-        ..[1] = 0xDFFF);
-  test(
-      "\u{10ffff}",
-      new Uint16List(2)
-        ..[0] = 0xDBFF
-        ..[1] = 0xDFFF);
-  test(
-      "\u{10ffff}",
-      new Uint32List(2)
-        ..[0] = 0xDBFF
-        ..[1] = 0xDFFF);
-  test("\u{10FFFF}", "\u{10FFFF}".codeUnits);
-
-  var leadSurrogate = "\u{10ffff}"[0];
-  test(leadSurrogate, iter(1, 0xDBFF));
-  test(leadSurrogate, [0xDBFF]);
-  test(leadSurrogate, const [0xDBFF]);
-  test(leadSurrogate, new List(1)..[0] = 0xDBFF);
-  test(leadSurrogate, new Uint16List(1)..[0] = 0xDBFF);
-  test(leadSurrogate, new Uint32List(1)..[0] = 0xDBFF);
-  test(leadSurrogate, leadSurrogate.codeUnits);
-
-  var tailSurrogate = "\u{10ffff}"[1];
-  test(tailSurrogate, iter(1, 0xDFFF));
-  test(tailSurrogate, [0xDFFF]);
-  test(tailSurrogate, const [0xDFFF]);
-  test(tailSurrogate, new List(1)..[0] = 0xDFFF);
-  test(tailSurrogate, new Uint16List(1)..[0] = 0xDFFF);
-  test(tailSurrogate, new Uint32List(1)..[0] = 0xDFFF);
-  test(tailSurrogate, tailSurrogate.codeUnits);
-
-  testThrows(null);
-  testThrows("not an iterable");
-  testThrows(42);
-  testThrows([-1]);
-  testThrows(new List(1)..[0] = -1);
-  testThrows(const [-1]);
-  testThrows(new Int8List(1)..[0] = -1);
-  testThrows(new Int16List(1)..[0] = -1);
-  testThrows(new Int32List(1)..[0] = -1);
-  testThrows([0x110000]);
-  testThrows(new List(1)..[0] = 0x110000);
-  testThrows(const [0x110000]);
-  testThrows(new Int32List(1)..[0] = 0x110000);
-
-  // Check start/end
-  var list = const [0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48];
-  for (var iterable in [
-    iter(list.length, list),
-    list.toList(growable: true),
-    list.toList(growable: false),
-    list,
-    new Uint8List(8)..setRange(0, 8, list),
-    new Uint16List(8)..setRange(0, 8, list),
-    new Uint32List(8)..setRange(0, 8, list),
-    "ABCDEFGH".codeUnits,
-  ]) {
-    test("ABCDEFGH", iterable);
-    // start varies, end is null.
-    test("ABCDEFGH", iterable, 0);
-    test("BCDEFGH", iterable, 1);
-    test("H", iterable, 7);
-    test("", iterable, 8);
-    // start = 0, end varies.
-    test("ABCDEFGH", iterable, 0);
-    test("A", iterable, 0, 1);
-    test("AB", iterable, 0, 2);
-    test("ABCDEFG", iterable, 0, 7);
-    test("ABCDEFGH", iterable, 0, 8);
-    test("", iterable, 0, 0);
-    // Both varying.
-    test("ABCDEFGH", iterable, 0, 8);
-    test("AB", iterable, 0, 2);
-    test("GH", iterable, 6, 8);
-    test("DE", iterable, 3, 5);
-    test("", iterable, 3, 3);
-  }
-  // Can split surrogates in input, but not a single big code point.
-  test(leadSurrogate, [0xDBFF, 0xDFFF], 0, 1);
-  test(tailSurrogate, [0xDBFF, 0xDFFF], 1);
-  test("\u{10FFFF}", [0x10FFFF], 0, 1);
-
-  void testThrowsRange(iterable, [start = 0, end]) {
-    Expect.throws(() => new String.fromCharCodes(iterable, start, end),
-        (e) => e is RangeError);
-  }
-
-  // Test varying slices of the code units of a string.
-  testSubstring(string) {
-    var codes = string.codeUnits;
-    int length = string.length;
-    for (var iterable in [
-      iter(length, codes),
-      codes.toList(growable: true),
-      codes.toList(growable: false),
-      new Uint16List(length)..setRange(0, length, codes),
-      new Int32List(length)..setRange(0, length, codes),
-      new Uint32List(length)..setRange(0, length, codes),
-      codes,
-    ]) {
-      var newString = new String.fromCharCodes(iterable);
-      Expect.equals(string, newString);
-      for (int i = 0; i < length; i = i * 2 + 1) {
-        test(string.substring(i), iterable, i);
-        test(string.substring(0, i), iterable, 0, i);
-        for (int j = 0; i + j < length; j = j * 2 + 1) {
-          test(string.substring(i, i + j), iterable, i, i + j);
-        }
-      }
-
-      testThrowsRange(iterable, -1);
-      testThrowsRange(iterable, 0, -1);
-      testThrowsRange(iterable, 2, 1);
-      testThrowsRange(iterable, 0, length + 1);
-      testThrowsRange(iterable, length + 1);
-      testThrowsRange(iterable, length + 1, length + 2);
-    }
-  }
-
-  testSubstring("");
-  testSubstring("ABCDEFGH");
-  // length > 128
-  testSubstring("ABCDEFGH" * 33);
-  testSubstring("\x00" * 357);
-  // length > 128 and non-ASCII.
-  testSubstring("\uFFFD\uFFFE\u{10000}\u{10ffff}c\x00" * 37);
-
-  // Large List.
-  var megaList = ("abcde" * 200000).codeUnits.toList();
-  test("abcde" * 199998, megaList, 5, 999995);
-  // Large Uint8List.
-  test("abcde" * 199998, new Uint8List.fromList(megaList), 5, 999995);
-
-  const cLatin1 = const [0x00, 0xff];
-  const cUtf16 = const [0x00, 0xffff, 0xdfff, 0xdbff, 0xdfff, 0xdbff];
-  const cCodepoints = const [0x00, 0xffff, 0xdfff, 0x10ffff, 0xdbff];
-  List gLatin1 = cLatin1.toList(growable: true);
-  List gUtf16 = cUtf16.toList(growable: true);
-  List gCodepoints = cCodepoints.toList(growable: true);
-  List fLatin1 = cLatin1.toList(growable: false);
-  List fUtf16 = cUtf16.toList(growable: false);
-  List fCodepoints = cCodepoints.toList(growable: false);
-  Uint8List bLatin1 = new Uint8List(2)..setRange(0, 2, cLatin1);
-  Uint16List wLatin1 = new Uint16List(2)..setRange(0, 2, cLatin1);
-  Uint16List wUtf16 = new Uint16List(6)..setRange(0, 6, cUtf16);
-  Uint32List lLatin1 = new Uint32List(2)..setRange(0, 2, cLatin1);
-  Uint32List lUtf16 = new Uint32List(6)..setRange(0, 6, cUtf16);
-  Uint32List lCodepoints = new Uint32List(5)..setRange(0, 5, cCodepoints);
-  Uint8List bvLatin1 = new Uint8List.view(bLatin1.buffer);
-  Uint16List wvLatin1 = new Uint16List.view(wLatin1.buffer);
-  Uint16List wvUtf16 = new Uint16List.view(wUtf16.buffer);
-  Uint32List lvLatin1 = new Uint32List.view(lLatin1.buffer);
-  Uint32List lvUtf16 = new Uint32List.view(lUtf16.buffer);
-  Uint32List lvCodepoints = new Uint32List.view(lCodepoints.buffer);
-  var buffer = new Uint8List(200).buffer;
-  Uint8List bbLatin1 = new Uint8List.view(buffer, 3, 2)..setAll(0, bLatin1);
-  Uint16List wbLatin1 = new Uint16List.view(buffer, 8, 2)..setAll(0, wLatin1);
-  Uint16List wbUtf16 = new Uint16List.view(buffer, 16, 6)..setAll(0, wUtf16);
-  Uint32List lbLatin1 = new Uint32List.view(buffer, 32, 2)..setAll(0, lLatin1);
-  Uint32List lbUtf16 = new Uint32List.view(buffer, 64, 6)..setAll(0, lUtf16);
-  Uint32List lbCodepoints = new Uint32List.view(buffer, 128, 5)
-    ..setAll(0, lCodepoints);
-
-  String sLatin1 = "\x00\xff";
-  String sUnicode =
-      "\x00\uffff$tailSurrogate$leadSurrogate$tailSurrogate$leadSurrogate";
-  for (int i = 0; i < 2; i++) {
-    for (int j = i + 1; j < 2; j++) {
-      test(sLatin1.substring(i, j), cLatin1, i, j);
-      test(sLatin1.substring(i, j), gLatin1, i, j);
-      test(sLatin1.substring(i, j), fLatin1, i, j);
-      test(sLatin1.substring(i, j), bLatin1, i, j);
-      test(sLatin1.substring(i, j), wLatin1, i, j);
-      test(sLatin1.substring(i, j), lLatin1, i, j);
-      test(sLatin1.substring(i, j), bvLatin1, i, j);
-      test(sLatin1.substring(i, j), wvLatin1, i, j);
-      test(sLatin1.substring(i, j), lvLatin1, i, j);
-      test(sLatin1.substring(i, j), bbLatin1, i, j);
-      test(sLatin1.substring(i, j), wbLatin1, i, j);
-      test(sLatin1.substring(i, j), lbLatin1, i, j);
-    }
-  }
-  for (int i = 0; i < 6; i++) {
-    for (int j = i + 1; j < 6; j++) {
-      test(sUnicode.substring(i, j), cUtf16, i, j);
-      test(sUnicode.substring(i, j), gUtf16, i, j);
-      test(sUnicode.substring(i, j), fUtf16, i, j);
-      test(sUnicode.substring(i, j), wUtf16, i, j);
-      test(sUnicode.substring(i, j), lUtf16, i, j);
-      test(sUnicode.substring(i, j), wvUtf16, i, j);
-      test(sUnicode.substring(i, j), lvUtf16, i, j);
-      test(sUnicode.substring(i, j), wbUtf16, i, j);
-      test(sUnicode.substring(i, j), lbUtf16, i, j);
-    }
-  }
-  for (int i = 0; i < 5; i++) {
-    for (int j = i + 1; j < 5; j++) {
-      int stringEnd = j < 4 ? j : j + 1;
-      test(sUnicode.substring(i, stringEnd), cCodepoints, i, j);
-      test(sUnicode.substring(i, stringEnd), gCodepoints, i, j);
-      test(sUnicode.substring(i, stringEnd), fCodepoints, i, j);
-      test(sUnicode.substring(i, stringEnd), lCodepoints, i, j);
-      test(sUnicode.substring(i, stringEnd), lvCodepoints, i, j);
-      test(sUnicode.substring(i, stringEnd), lbCodepoints, i, j);
-    }
-  }
-}
diff --git a/tests/corelib/string_operations_with_null_test.dart b/tests/corelib/string_operations_with_null_test.dart
deleted file mode 100644
index a05b985..0000000
--- a/tests/corelib/string_operations_with_null_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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";
-
-@NoInline()
-@AssumeDynamic()
-returnStringOrNull() {
-  return new DateTime.now().millisecondsSinceEpoch == 0 ? 'foo' : null;
-}
-
-main() {
-  Expect.throws(() => 'foo' + returnStringOrNull(), (e) => e is ArgumentError);
-  Expect.throws(() => 'foo'.split(returnStringOrNull()),
-      (e) => e is ArgumentError || e is NoSuchMethodError);
-}
diff --git a/tests/corelib/string_pattern_test.dart b/tests/corelib/string_pattern_test.dart
deleted file mode 100644
index 9a4555e..0000000
--- a/tests/corelib/string_pattern_test.dart
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing String.allMatches.
-
-import "package:expect/expect.dart";
-
-String str = "this is a string with hello here and hello there";
-
-main() {
-  testNoMatch();
-  testOneMatch();
-  testTwoMatches();
-  testEmptyPattern();
-  testEmptyString();
-  testEmptyPatternAndString();
-  testMatchAsPrefix();
-  testAllMatchesStart();
-}
-
-testNoMatch() {
-  // Also tests that RegExp groups don't work.
-  String helloPattern = "with (hello)";
-  Iterable<Match> matches = helloPattern.allMatches(str);
-  Expect.isFalse(matches.iterator.moveNext());
-}
-
-testOneMatch() {
-  String helloPattern = "with hello";
-  Iterable<Match> matches = helloPattern.allMatches(str);
-  var iterator = matches.iterator;
-  Expect.isTrue(iterator.moveNext());
-  Match match = iterator.current;
-  Expect.isFalse(iterator.moveNext());
-  Expect.equals(str.indexOf('with', 0), match.start);
-  Expect.equals(str.indexOf('with', 0) + helloPattern.length, match.end);
-  Expect.equals(helloPattern, match.pattern);
-  Expect.equals(str, match.input);
-  Expect.equals(helloPattern, match[0]);
-  Expect.equals(0, match.groupCount);
-}
-
-testTwoMatches() {
-  String helloPattern = "hello";
-  Iterable<Match> matches = helloPattern.allMatches(str);
-
-  int count = 0;
-  int start = 0;
-  for (var match in matches) {
-    count++;
-    Expect.equals(str.indexOf('hello', start), match.start);
-    Expect.equals(str.indexOf('hello', start) + helloPattern.length, match.end);
-    Expect.equals(helloPattern, match.pattern);
-    Expect.equals(str, match.input);
-    Expect.equals(helloPattern, match[0]);
-    Expect.equals(0, match.groupCount);
-    start = match.end;
-  }
-  Expect.equals(2, count);
-}
-
-testEmptyPattern() {
-  String pattern = "";
-  Iterable<Match> matches = pattern.allMatches(str);
-  Expect.isTrue(matches.iterator.moveNext());
-}
-
-testEmptyString() {
-  String pattern = "foo";
-  String str = "";
-  Iterable<Match> matches = pattern.allMatches(str);
-  Expect.isFalse(matches.iterator.moveNext());
-}
-
-testEmptyPatternAndString() {
-  String pattern = "";
-  String str = "";
-  Iterable<Match> matches = pattern.allMatches(str);
-  Expect.isTrue(matches.iterator.moveNext());
-}
-
-testMatchAsPrefix() {
-  String pattern = "an";
-  String str = "banana";
-  Expect.isNull(pattern.matchAsPrefix(str));
-  Expect.isNull(pattern.matchAsPrefix(str, 0));
-  var m = pattern.matchAsPrefix(str, 1);
-  Expect.equals("an", m[0]);
-  Expect.equals(1, m.start);
-  Expect.isNull(pattern.matchAsPrefix(str, 2));
-  m = pattern.matchAsPrefix(str, 3);
-  Expect.equals("an", m[0]);
-  Expect.equals(3, m.start);
-  Expect.isNull(pattern.matchAsPrefix(str, 4));
-  Expect.isNull(pattern.matchAsPrefix(str, 5));
-  Expect.isNull(pattern.matchAsPrefix(str, 6));
-  Expect.throws(() => pattern.matchAsPrefix(str, -1));
-  Expect.throws(() => pattern.matchAsPrefix(str, 7));
-}
-
-testAllMatchesStart() {
-  String p = "ass";
-  String s = "assassin";
-  Expect.equals(2, p.allMatches(s).length);
-  Expect.equals(2, p.allMatches(s, 0).length);
-  Expect.equals(1, p.allMatches(s, 1).length);
-  Expect.equals(0, p.allMatches(s, 4).length);
-  Expect.equals(0, p.allMatches(s, s.length).length);
-  Expect.throws(() => p.allMatches(s, -1));
-  Expect.throws(() => p.allMatches(s, s.length + 1));
-}
diff --git a/tests/corelib/string_replace_all_test.dart b/tests/corelib/string_replace_all_test.dart
deleted file mode 100644
index 548ad62..0000000
--- a/tests/corelib/string_replace_all_test.dart
+++ /dev/null
@@ -1,140 +0,0 @@
-// 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";
-
-testReplaceAll() {
-  Expect.equals("aXXcaXXdae", "abcabdae".replaceAll("b", "XX"));
-
-  // Test with the replaced string at the beginning.
-  Expect.equals("XXbcXXbdXXe", "abcabdae".replaceAll("a", "XX"));
-
-  // Test with the replaced string at the end.
-  Expect.equals("abcabdaXX", "abcabdae".replaceAll("e", "XX"));
-
-  // Test when there are no occurence of the string to replace.
-  Expect.equals("abcabdae", "abcabdae".replaceAll("f", "XX"));
-
-  // Test when the string to change is the empty string.
-  Expect.equals("", "".replaceAll("from", "to"));
-
-  // Test when the string to change is a substring of the string to
-  // replace.
-  Expect.equals("fro", "fro".replaceAll("from", "to"));
-
-  // Test when the string to change is the replaced string.
-  Expect.equals("to", "from".replaceAll("from", "to"));
-
-  // Test when matches are adjacent
-  Expect.equals("toto", "fromfrom".replaceAll("from", "to"));
-
-  // Test when the string to change is the replacement string.
-  Expect.equals("to", "to".replaceAll("from", "to"));
-
-  // Test replacing by the empty string.
-  Expect.equals("bcbde", "abcabdae".replaceAll("a", ""));
-  Expect.equals("AB", "AfromB".replaceAll("from", ""));
-
-  // Test changing the empty string.
-  Expect.equals("to", "".replaceAll("", "to"));
-
-  // Test replacing the empty string.
-  Expect.equals("toAtoBtoCto", "ABC".replaceAll("", "to"));
-
-  // Pattern strings containing RegExp metacharacters - these are not
-  // interpreted as RegExps.
-  Expect.equals(r"$$", "||".replaceAll("|", r"$"));
-  Expect.equals(r"$$$$", "||".replaceAll("|", r"$$"));
-  Expect.equals(r"x$|x", "x|.|x".replaceAll("|.", r"$"));
-  Expect.equals(r"$$", "..".replaceAll(".", r"$"));
-  Expect.equals(r"[$$$$]", "[..]".replaceAll(".", r"$$"));
-  Expect.equals(r"[$]", "[..]".replaceAll("..", r"$"));
-  Expect.equals(r"$$", r"\\".replaceAll(r"\", r"$"));
-}
-
-testReplaceAllMapped() {
-  String mark(Match m) => "[${m[0]}]";
-  Expect.equals("a[b]ca[b]dae", "abcabdae".replaceAllMapped("b", mark));
-
-  // Test with the replaced string at the beginning.
-  Expect.equals("[a]bc[a]bd[a]e", "abcabdae".replaceAllMapped("a", mark));
-
-  // Test with the replaced string at the end.
-  Expect.equals("abcabda[e]", "abcabdae".replaceAllMapped("e", mark));
-
-  // Test when there are no occurence of the string to replace.
-  Expect.equals("abcabdae", "abcabdae".replaceAllMapped("f", mark));
-
-  // Test when the string to change is the empty string.
-  Expect.equals("", "".replaceAllMapped("from", mark));
-
-  // Test when the string to change is a substring of the string to
-  // replace.
-  Expect.equals("fro", "fro".replaceAllMapped("from", mark));
-
-  // Test when matches are adjacent
-  Expect.equals("[from][from]", "fromfrom".replaceAllMapped("from", mark));
-
-  // Test replacing by the empty string.
-  Expect.equals("bcbde", "abcabdae".replaceAllMapped("a", (m) => ""));
-  Expect.equals("AB", "AfromB".replaceAllMapped("from", (m) => ""));
-
-  // Test changing the empty string.
-  Expect.equals("[]", "".replaceAllMapped("", mark));
-
-  // Test replacing the empty string.
-  Expect.equals("[]A[]B[]C[]", "ABC".replaceAllMapped("", mark));
-}
-
-testSplitMapJoin() {
-  String mark(Match m) => "[${m[0]}]";
-  String wrap(String s) => "<${s}>";
-
-  Expect.equals("<a>[b]<ca>[b]<dae>",
-      "abcabdae".splitMapJoin("b", onMatch: mark, onNonMatch: wrap));
-
-  // Test with the replaced string at the beginning.
-  Expect.equals("<>[a]<bc>[a]<bd>[a]<e>",
-      "abcabdae".splitMapJoin("a", onMatch: mark, onNonMatch: wrap));
-
-  // Test with the replaced string at the end.
-  Expect.equals("<abcabda>[e]<>",
-      "abcabdae".splitMapJoin("e", onMatch: mark, onNonMatch: wrap));
-
-  // Test when there are no occurence of the string to replace.
-  Expect.equals("<abcabdae>",
-      "abcabdae".splitMapJoin("f", onMatch: mark, onNonMatch: wrap));
-
-  // Test when the string to change is the empty string.
-  Expect.equals("<>", "".splitMapJoin("from", onMatch: mark, onNonMatch: wrap));
-
-  // Test when the string to change is a substring of the string to
-  // replace.
-  Expect.equals(
-      "<fro>", "fro".splitMapJoin("from", onMatch: mark, onNonMatch: wrap));
-
-  // Test when matches are adjacent
-  Expect.equals("<>[from]<>[from]<>",
-      "fromfrom".splitMapJoin("from", onMatch: mark, onNonMatch: wrap));
-
-  // Test changing the empty string.
-  Expect.equals("<>[]<>", "".splitMapJoin("", onMatch: mark, onNonMatch: wrap));
-
-  // Test replacing the empty string.
-  Expect.equals("<>[]<A>[]<B>[]<C>[]<>",
-      "ABC".splitMapJoin("", onMatch: mark, onNonMatch: wrap));
-
-  // Test with only onMatch.
-  Expect.equals("[a]bc[a]bd[a]e", "abcabdae".splitMapJoin("a", onMatch: mark));
-
-  // Test with only onNonMatch
-  Expect.equals(
-      "<>a<bc>a<bd>a<e>", "abcabdae".splitMapJoin("a", onNonMatch: wrap));
-}
-
-main() {
-  testReplaceAll();
-  testReplaceAllMapped();
-  testSplitMapJoin();
-}
diff --git a/tests/corelib/string_replace_dollar_test.dart b/tests/corelib/string_replace_dollar_test.dart
deleted file mode 100644
index c0077a0..0000000
--- a/tests/corelib/string_replace_dollar_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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";
-
-main() {
-  String jsText = r"""'$'
-""";
-  String htmlStr = '%%DART';
-  String htmlOut = htmlStr.replaceAll("%%DART", jsText);
-  Expect.equals(jsText, htmlOut);
-  htmlOut = htmlStr.replaceFirst("%%DART", jsText);
-  Expect.equals(jsText, htmlOut);
-  htmlOut = htmlStr.replaceAll(new RegExp("%%DART"), jsText);
-  Expect.equals(jsText, htmlOut);
-  htmlOut = htmlStr.replaceFirst(new RegExp("%%DART"), jsText);
-  Expect.equals(jsText, htmlOut);
-
-  // Regression test, http://dartbug.com/17886
-  String doubleDollar = r"$'$`";
-  var string = r"flip-flip-flop";
-  var result = string.replaceFirst("flip", doubleDollar);
-  Expect.equals(r"$'$`-flip-flop", result);
-  result = string.replaceAll("flip", doubleDollar);
-  Expect.equals(r"$'$`-$'$`-flop", result);
-}
diff --git a/tests/corelib/string_replace_test.dart b/tests/corelib/string_replace_test.dart
deleted file mode 100644
index 80bbe4c..0000000
--- a/tests/corelib/string_replace_test.dart
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  // Test replaceFirst.
-  Expect.equals("AtoBtoCDtoE", "AfromBtoCDtoE".replaceFirst("from", "to"));
-
-  // Test with the replaced string at the beginning.
-  Expect.equals("toABtoCDtoE", "fromABtoCDtoE".replaceFirst("from", "to"));
-
-  // Test with the replaced string at the end.
-  Expect.equals("toABtoCDtoEto", "fromABtoCDtoEto".replaceFirst("from", "to"));
-
-  // Test when there are no occurence of the string to replace.
-  Expect.equals("ABC", "ABC".replaceFirst("from", "to"));
-
-  // Test when the string to change is the empty string.
-  Expect.equals("", "".replaceFirst("from", "to"));
-
-  // Test when the string to change is a substring of the string to
-  // replace.
-  Expect.equals("fro", "fro".replaceFirst("from", "to"));
-
-  // Test when the string to change is the replaced string.
-  Expect.equals("to", "from".replaceFirst("from", "to"));
-
-  // Test when the string to change is the replacement string.
-  Expect.equals("to", "to".replaceFirst("from", "to"));
-
-  // Test replacing by the empty string.
-  Expect.equals("", "from".replaceFirst("from", ""));
-  Expect.equals("AB", "AfromB".replaceFirst("from", ""));
-
-  // Test changing the empty string.
-  Expect.equals("to", "".replaceFirst("", "to"));
-
-  // Test replacing the empty string.
-  Expect.equals("toAtoBtoCto", "AtoBtoCto".replaceFirst("", "to"));
-
-  // Test startIndex.
-  Expect.equals(
-      "foo-AAA-foo-bar", "foo-bar-foo-bar".replaceFirst("bar", "AAA", 4));
-
-  // Test startIndex skipping one case at the beginning.
-  Expect.equals(
-      "foo-bar-AAA-bar", "foo-bar-foo-bar".replaceFirst("foo", "AAA", 1));
-
-  // Test startIndex skipping one case at the beginning.
-  Expect.equals(
-      "foo-bar-foo-AAA", "foo-bar-foo-bar".replaceFirst("bar", "AAA", 5));
-
-  // Test startIndex replacing with the empty string.
-  Expect.equals("foo-bar--bar", "foo-bar-foo-bar".replaceFirst("foo", "", 1));
-
-  // Test startIndex with a RegExp with carat
-  Expect.equals("foo-bar-foo-bar",
-      "foo-bar-foo-bar".replaceFirst(new RegExp(r"^foo"), "", 8));
-
-  // Test startIndex with a RegExp
-  Expect.equals(
-      "aaa{3}X{3}", "aaa{3}aaa{3}".replaceFirst(new RegExp(r"a{3}"), "X", 1));
-
-  // Test startIndex with regexp-looking String
-  Expect.equals("aaa{3}aaX", "aaa{3}aaa{3}".replaceFirst("a{3}", "X", 3));
-
-  // Test negative startIndex
-  Expect.throws(
-      () => "hello".replaceFirst("h", "X", -1), (e) => e is RangeError);
-
-  // Test startIndex too large
-  Expect.throws(
-      () => "hello".replaceFirst("h", "X", 6), (e) => e is RangeError);
-
-  // Test null startIndex
-  Expect.throws(
-      () => "hello".replaceFirst("h", "X", null), (e) => e is ArgumentError);
-
-  // Test object startIndex
-  Expect.throws(() => "hello".replaceFirst("h", "X", new Object()));
-
-  // Test replaceFirstMapped.
-
-  Expect.equals(
-      "AtoBtoCDtoE", "AfromBtoCDtoE".replaceFirstMapped("from", (_) => "to"));
-
-  // Test with the replaced string at the beginning.
-  Expect.equals(
-      "toABtoCDtoE", "fromABtoCDtoE".replaceFirstMapped("from", (_) => "to"));
-
-  // Test with the replaced string at the end.
-  Expect.equals("toABtoCDtoEto",
-      "fromABtoCDtoEto".replaceFirstMapped("from", (_) => "to"));
-
-  // Test when there are no occurence of the string to replace.
-  Expect.equals("ABC", "ABC".replaceFirstMapped("from", (_) => "to"));
-
-  // Test when the string to change is the empty string.
-  Expect.equals("", "".replaceFirstMapped("from", (_) => "to"));
-
-  // Test when the string to change is a substring of the string to
-  // replace.
-  Expect.equals("fro", "fro".replaceFirstMapped("from", (_) => "to"));
-
-  // Test when the string to change is the replaced string.
-  Expect.equals("to", "from".replaceFirstMapped("from", (_) => "to"));
-
-  // Test when the string to change is the replacement string.
-  Expect.equals("to", "to".replaceFirstMapped("from", (_) => "to"));
-
-  // Test replacing by the empty string.
-  Expect.equals("", "from".replaceFirstMapped("from", (_) => ""));
-  Expect.equals("AB", "AfromB".replaceFirstMapped("from", (_) => ""));
-
-  // Test changing the empty string.
-  Expect.equals("to", "".replaceFirstMapped("", (_) => "to"));
-
-  // Test replacing the empty string.
-  Expect.equals("toAtoBtoCto", "AtoBtoCto".replaceFirstMapped("", (_) => "to"));
-
-  // Test startIndex.
-  Expect.equals("foo-AAA-foo-bar",
-      "foo-bar-foo-bar".replaceFirstMapped("bar", (_) => "AAA", 4));
-
-  // Test startIndex skipping one case at the beginning.
-  Expect.equals("foo-bar-AAA-bar",
-      "foo-bar-foo-bar".replaceFirstMapped("foo", (_) => "AAA", 1));
-
-  // Test startIndex skipping one case at the beginning.
-  Expect.equals("foo-bar-foo-AAA",
-      "foo-bar-foo-bar".replaceFirstMapped("bar", (_) => "AAA", 5));
-
-  // Test startIndex replacing with the empty string.
-  Expect.equals("foo-bar--bar",
-      "foo-bar-foo-bar".replaceFirstMapped("foo", (_) => "", 1));
-
-  // Test startIndex with a RegExp with carat
-  Expect.equals("foo-bar-foo-bar",
-      "foo-bar-foo-bar".replaceFirstMapped(new RegExp(r"^foo"), (_) => "", 8));
-
-  // Test startIndex with a RegExp
-  Expect.equals("aaa{3}X{3}",
-      "aaa{3}aaa{3}".replaceFirstMapped(new RegExp(r"a{3}"), (_) => "X", 1));
-
-  // Test startIndex with regexp-looking String
-  Expect.equals(
-      "aaa{3}aaX", "aaa{3}aaa{3}".replaceFirstMapped("a{3}", (_) => "X", 3));
-
-  // Test negative startIndex
-  Expect.throws(() => "hello".replaceFirstMapped("h", (_) => "X", -1),
-      (e) => e is RangeError);
-
-  // Test startIndex too large
-  Expect.throws(() => "hello".replaceFirstMapped("h", (_) => "X", 6),
-      (e) => e is RangeError);
-
-  // Test null startIndex
-  Expect.throws(() => "hello".replaceFirstMapped("h", (_) => "X", null),
-      (e) => e is ArgumentError);
-
-  // Test object startIndex
-  Expect
-      .throws(() => "hello".replaceFirstMapped("h", (_) => "X", new Object()));
-
-  // Test replacement depending on argument.
-  Expect.equals("foo-BAR-foo-bar",
-      "foo-bar-foo-bar".replaceFirstMapped("bar", (v) => v[0].toUpperCase()));
-
-  Expect.equals("foo-[bar]-foo-bar",
-      "foo-bar-foo-bar".replaceFirstMapped("bar", (v) => "[${v[0]}]"));
-
-  Expect.equals("foo-foo-bar-foo-bar-foo-bar",
-      "foo-bar-foo-bar".replaceFirstMapped("bar", (v) => v.input));
-
-  // Test replacement throwing.
-  Expect.throws(() => "foo-bar".replaceFirstMapped("bar", (v) => throw 42),
-      (e) => e == 42);
-
-  // Test replacement returning non-String.
-  var o = new Object();
-  Expect.equals(
-      "foo-$o",
-      "foo-bar".replaceFirstMapped("bar", (v) {
-        return o;
-      }));
-
-  Expect.equals(
-      "foo-42",
-      "foo-bar".replaceFirstMapped("bar", (v) {
-        return 42;
-      }));
-
-  // Test replacement returning object throwing on string-conversion.
-  var n = new Naughty();
-  Expect.throws(() => "foo-bar".replaceFirstMapped("bar", (v) {
-        return n;
-      }));
-
-  for (var string in ["", "x", "foo", "x\u2000z"]) {
-    for (var replacement in ["", "foo", string]) {
-      for (int start = 0; start <= string.length; start++) {
-        var expect;
-        for (int end = start; end <= string.length; end++) {
-          expect =
-              string.substring(0, start) + replacement + string.substring(end);
-          Expect.equals(expect, string.replaceRange(start, end, replacement),
-              '"$string"[$start:$end]="$replacement"');
-        }
-        // Reuse expect from "end == string.length" case when omitting end.
-        Expect.equals(expect, string.replaceRange(start, null, replacement),
-            '"$string"[$start:]="$replacement"');
-      }
-    }
-    Expect.throws(() => string.replaceRange(0, 0, null));
-    Expect.throws(() => string.replaceRange(0, 0, 42));
-    Expect.throws(() => string.replaceRange(0, 0, ["x"]));
-    Expect.throws(() => string.replaceRange(-1, 0, "x"));
-    Expect.throws(() => string.replaceRange(0, string.length + 1, "x"));
-  }
-}
-
-// Fails to return a String on toString, throws if converted by "$naughty".
-class Naughty {
-  toString() => this;
-}
diff --git a/tests/corelib/string_runes_test.dart b/tests/corelib/string_runes_test.dart
deleted file mode 100644
index fd0f4f3..0000000
--- a/tests/corelib/string_runes_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  test(String s, List<int> expectedRunes) {
-    Runes runes = s.runes;
-    Expect.identical(s, runes.string);
-
-    // for-in
-    var res = [];
-    for (int rune in runes) {
-      res.add(rune);
-    }
-    Expect.listEquals(expectedRunes, res);
-
-    // manual iteration, backwards.
-    res = [];
-    for (var it = runes.iterator..reset(s.length); it.movePrevious();) {
-      res.add(it.current);
-    }
-    Expect.listEquals(expectedRunes.reversed.toList(), res);
-
-    // Setting rawIndex.
-    RuneIterator it = runes.iterator;
-    it.rawIndex = 1;
-    Expect.equals(expectedRunes[1], it.current);
-
-    it = runes.iterator;
-    it.moveNext();
-    Expect.equals(0, it.rawIndex);
-    it.moveNext();
-    Expect.equals(1, it.rawIndex);
-    it.moveNext();
-    Expect.isTrue(1 < it.rawIndex);
-    it.rawIndex = 1;
-    Expect.equals(1, it.rawIndex);
-    Expect.equals(expectedRunes[1], it.current);
-
-    // Reset, moveNext.
-    it.reset(1);
-    Expect.equals(null, it.rawIndex);
-    Expect.equals(null, it.current);
-    it.moveNext();
-    Expect.equals(1, it.rawIndex);
-    Expect.equals(expectedRunes[1], it.current);
-
-    // Reset, movePrevious.
-    it.reset(1);
-    Expect.equals(null, it.rawIndex);
-    Expect.equals(null, it.current);
-    it.movePrevious();
-    Expect.equals(0, it.rawIndex);
-    Expect.equals(expectedRunes[0], it.current);
-
-    // .map
-    Expect.listEquals(expectedRunes.map((x) => x.toRadixString(16)).toList(),
-        runes.map((x) => x.toRadixString(16)).toList());
-  }
-
-  // First character must be single-code-unit for test.
-  test("abc", [0x61, 0x62, 0x63]);
-  test("\x00\u0000\u{000000}", [0, 0, 0]);
-  test("\u{ffff}\u{10000}\u{10ffff}", [0xffff, 0x10000, 0x10ffff]);
-  String string = new String.fromCharCodes(
-      [0xdc00, 0xd800, 61, 0xd800, 0xdc00, 62, 0xdc00, 0xd800]);
-  test(string, [0xdc00, 0xd800, 61, 0x10000, 62, 0xdc00, 0xd800]);
-
-  // Setting position in the middle of a surrogate pair is not allowed.
-  var r = new Runes("\u{10000}");
-  var it = r.iterator;
-  it.moveNext();
-  Expect.equals(0x10000, it.current);
-
-  // Setting rawIndex inside surrogate pair.
-  Expect.throws(() {
-    it.rawIndex = 1;
-  }, (e) => e is Error);
-  Expect.throws(() {
-    it.reset(1);
-  }, (e) => e is Error);
-}
diff --git a/tests/corelib/string_source_test.dart b/tests/corelib/string_source_test.dart
deleted file mode 100644
index eb5a633..0000000
--- a/tests/corelib/string_source_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that different representations of the same string are all equal.
-
-import "dart:convert";
-
-import "package:expect/expect.dart";
-
-main() {
-  var base = "\u{10412}";
-  var strings = [
-    "\u{10412}",
-    "𐐒",
-    new String.fromCharCodes([0xd801, 0xdc12]),
-    base[0] + base[1],
-    "$base",
-    "${base[0]}${base[1]}",
-    "${base[0]}${base.substring(1)}",
-    new String.fromCharCodes([0x10412]),
-    ("a" + base).substring(1),
-    (new StringBuffer()..writeCharCode(0xd801)..writeCharCode(0xdc12))
-        .toString(),
-    (new StringBuffer()..writeCharCode(0x10412)).toString(),
-    JSON.decode('"\u{10412}"'),
-    (JSON.decode('{"\u{10412}":[]}') as Map).keys.first
-  ];
-  for (String string in strings) {
-    Expect.equals(base.length, string.length);
-    Expect.equals(base, string);
-    Expect.equals(base.hashCode, string.hashCode);
-    Expect.listEquals(base.codeUnits.toList(), string.codeUnits.toList());
-  }
-}
diff --git a/tests/corelib/string_split_test.dart b/tests/corelib/string_split_test.dart
deleted file mode 100644
index de7b249..0000000
--- a/tests/corelib/string_split_test.dart
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  testSplitString();
-  testSplitRegExp();
-  testSplitPattern();
-}
-
-testSplit(List expect, String string, Pattern pattern) {
-  String patternString;
-  if (pattern is String) {
-    patternString = '"$pattern"';
-  } else if (pattern is RegExp) {
-    patternString = "/${pattern.pattern}/";
-  } else {
-    patternString = pattern.toString();
-  }
-  Expect.listEquals(
-      expect, string.split(pattern), '"$string".split($patternString)');
-}
-
-/** String patterns. */
-void testSplitString() {
-  // Normal match.
-  testSplit(["a", "b", "c"], "a b c", " ");
-  testSplit(["a", "b", "c"], "adbdc", "d");
-  testSplit(["a", "b", "c"], "addbddc", "dd");
-  // No match.
-  testSplit(["abc"], "abc", " ");
-  testSplit(["a"], "a", "b");
-  testSplit([""], "", "b");
-  // Empty match matches everywhere except start/end.
-  testSplit(["a", "b", "c"], "abc", "");
-  // All empty parts.
-  testSplit(["", "", "", "", ""], "aaaa", "a");
-  testSplit(["", "", "", "", ""], "    ", " ");
-  testSplit(["", ""], "a", "a");
-  // No overlapping matches. Match as early as possible.
-  testSplit(["", "", "", "a"], "aaaaaaa", "aa");
-  // Cannot split the empty string.
-  testSplit([], "", ""); // Match.
-  testSplit([""], "", "a"); // No match.
-}
-
-/** RegExp patterns. */
-void testSplitRegExp() {
-  testSplitWithRegExp((s) => new RegExp(s));
-}
-
-/** Non-String, non-RegExp patterns. */
-void testSplitPattern() {
-  testSplitWithRegExp((s) => new RegExpWrap(s));
-}
-
-void testSplitWithRegExp(makePattern) {
-  testSplit(["a", "b", "c"], "a b c", makePattern(r" "));
-
-  testSplit(["a", "b", "c"], "adbdc", makePattern(r"[dz]"));
-
-  testSplit(["a", "b", "c"], "addbddc", makePattern(r"dd"));
-
-  testSplit(["abc"], "abc", makePattern(r"b$"));
-
-  testSplit(["a", "b", "c"], "abc", makePattern(r""));
-
-  testSplit(["", "", "", ""], "   ", makePattern(r"[ ]"));
-
-  // Non-zero-length match at end.
-  testSplit(["aa", ""], "aaa", makePattern(r"a$"));
-
-  // Zero-length match at end.
-  testSplit(["aaa"], "aaa", makePattern(r"$"));
-
-  // Non-zero-length match at start.
-  testSplit(["", "aa"], "aaa", makePattern(r"^a"));
-
-  // Zero-length match at start.
-  testSplit(["aaa"], "aaa", makePattern(r"^"));
-
-  // Picks first match, not longest or shortest.
-  testSplit(["", "", "", "a"], "aaaaaaa", makePattern(r"aa|aaa"));
-
-  testSplit(["", "", "", "a"], "aaaaaaa", makePattern(r"aa|"));
-
-  testSplit(["", "", "a"], "aaaaaaa", makePattern(r"aaa|aa"));
-
-  // Zero-width match depending on the following.
-  testSplit(["a", "bc"], "abc", makePattern(r"(?=[ab])"));
-
-  testSplit(["a", "b", "c"], "abc", makePattern(r"(?!^)"));
-
-  // Cannot split empty string.
-  testSplit([], "", makePattern(r""));
-
-  testSplit([], "", makePattern(r"(?:)"));
-
-  testSplit([], "", makePattern(r"$|(?=.)"));
-
-  testSplit([""], "", makePattern(r"a"));
-
-  // Can split singleton string if it matches.
-  testSplit(["", ""], "a", makePattern(r"a"));
-
-  testSplit(["a"], "a", makePattern(r"b"));
-
-  // Do not include captures.
-  testSplit(["a", "", "a"], "abba", makePattern(r"(b)"));
-
-  testSplit(["a", "a"], "abba", makePattern(r"(bb)"));
-
-  testSplit(["a", "a"], "abba", makePattern(r"(b*)"));
-
-  testSplit(["a", "a"], "aa", makePattern(r"(b*)"));
-
-  // But captures are still there, and do work with backreferences.
-  testSplit(["a", "cba"], "abcba", makePattern(r"([bc])(?=.*\1)"));
-}
-
-// A Pattern implementation with the same capabilities as a RegExp, but not
-// directly recognizable as a RegExp.
-class RegExpWrap implements Pattern {
-  final regexp;
-  RegExpWrap(String source) : regexp = new RegExp(source);
-  Iterable<Match> allMatches(String string, [int start = 0]) =>
-      regexp.allMatches(string, start);
-
-  Match matchAsPrefix(String string, [int start = 0]) =>
-      regexp.matchAsPrefix(string, start);
-
-  String toString() => "Wrap(/${regexp.pattern}/)";
-}
diff --git a/tests/corelib/string_substring_test.dart b/tests/corelib/string_substring_test.dart
deleted file mode 100644
index 883dd46..0000000
--- a/tests/corelib/string_substring_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  // Test that not providing an optional argument goes to the end.
-  Expect.equals("".substring(0), "");
-  Expect.throws(() => "".substring(1), (e) => e is RangeError);
-  Expect.throws(() => "".substring(-1), (e) => e is RangeError);
-
-  Expect.equals("abc".substring(0), "abc");
-  Expect.equals("abc".substring(1), "bc");
-  Expect.equals("abc".substring(2), "c");
-  Expect.equals("abc".substring(3), "");
-  Expect.throws(() => "abc".substring(4), (e) => e is RangeError);
-  Expect.throws(() => "abc".substring(-1), (e) => e is RangeError);
-
-  // Test that providing null goes to the end.
-  Expect.equals("".substring(0, null), "");
-  Expect.throws(() => "".substring(1, null), (e) => e is RangeError);
-  Expect.throws(() => "".substring(-1, null), (e) => e is RangeError);
-
-  Expect.equals("abc".substring(0, null), "abc");
-  Expect.equals("abc".substring(1, null), "bc");
-  Expect.equals("abc".substring(2, null), "c");
-  Expect.equals("abc".substring(3, null), "");
-  Expect.throws(() => "abc".substring(4, null), (e) => e is RangeError);
-  Expect.throws(() => "abc".substring(-1, null), (e) => e is RangeError);
-}
diff --git a/tests/corelib/string_test.dart b/tests/corelib/string_test.dart
deleted file mode 100644
index d51d88d..0000000
--- a/tests/corelib/string_test.dart
+++ /dev/null
@@ -1,494 +0,0 @@
-// Copyright (c) 2011, 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";
-
-void main() {
-  testOutOfRange();
-  testIllegalArgument();
-  testConcat();
-  testIndex();
-  testCodeUnitAt();
-  testEquals();
-  testEndsWith();
-  testStartsWith();
-  testIndexOf();
-  testLastIndexOf();
-  testContains();
-  testReplaceAll();
-  testCompareTo();
-  testCharCodes();
-  testRepeat();
-  testPadLeft();
-  testPadRight();
-}
-
-void testLength() {
-  String str = "";
-  for (var i = 0; i < 20; i++) {
-    testStringLength(i, str);
-    str += " ";
-  }
-}
-
-void testOutOfRange() {
-  String a = "Hello";
-  bool exception_caught = false;
-  try {
-    var c = a[20]; // Throw exception.
-  } on RangeError catch (e) {
-    exception_caught = true;
-  }
-  Expect.isTrue(exception_caught);
-}
-
-void testIllegalArgument() {
-  String a = "Hello";
-  bool exception_caught = false;
-  try {
-    var c = a[2.2]; // Throw exception.
-    Expect.fail("Accepting double as index");
-  } on ArgumentError catch (e) {
-    exception_caught = true;
-  } on TypeError catch (e) {
-    // Thrown in checked mode only.
-    exception_caught = true;
-  }
-  Expect.isTrue(exception_caught);
-}
-
-void testIndex() {
-  String str = "string";
-  for (int i = 0; i < str.length; i++) {
-    Expect.isTrue(str[i] is String);
-    testStringLength(1, str[i]);
-  }
-}
-
-void testCodeUnitAt() {
-  String str = "string";
-  for (int i = 0; i < str.length; i++) {
-    Expect.isTrue(str.codeUnitAt(i) is int);
-  }
-}
-
-void testConcat() {
-  var a = "One";
-  var b = "Four";
-  var c = a + b;
-  testStringLength(7, c);
-  Expect.equals("OneFour", c);
-}
-
-void testEquals() {
-  Expect.equals("str", "str");
-
-  Expect.equals("str", "s" + "t" + "r");
-  Expect.equals("s" + "t" + "r", "str");
-
-  Expect.isFalse("str" == "s");
-  Expect.isFalse("str" == "r");
-  Expect.isFalse("str" == "st");
-  Expect.isFalse("str" == "tr");
-
-  Expect.isFalse("s" == "str");
-  Expect.isFalse("r" == "str");
-  Expect.isFalse("st" == "str");
-  Expect.isFalse("tr" == "str");
-
-  Expect.isFalse("" == "s");
-  Expect.equals("", "");
-}
-
-void testEndsWith() {
-  Expect.isTrue("str".endsWith("r"));
-  Expect.isTrue("str".endsWith("tr"));
-  Expect.isTrue("str".endsWith("str"));
-
-  Expect.isFalse("str".endsWith("stri"));
-  Expect.isFalse("str".endsWith("t"));
-  Expect.isFalse("str".endsWith("st"));
-  Expect.isFalse("str".endsWith("s"));
-
-  Expect.isTrue("".endsWith(""));
-  Expect.isFalse("".endsWith("s"));
-}
-
-void testStartsWith() {
-  Expect.isTrue("str".startsWith("s"));
-  Expect.isTrue("str".startsWith("st"));
-  Expect.isTrue("str".startsWith("str"));
-
-  Expect.isFalse("str".startsWith("stri"));
-  Expect.isFalse("str".startsWith("r"));
-  Expect.isFalse("str".startsWith("tr"));
-  Expect.isFalse("str".startsWith("t"));
-
-  Expect.isTrue("".startsWith(""));
-  Expect.isFalse("".startsWith("s"));
-
-  Expect.isFalse("strstr".startsWith("s", 1));
-  Expect.isFalse("strstr".startsWith("s", 2));
-  Expect.isTrue("strstr".startsWith("s", 3));
-  Expect.isFalse("strstr".startsWith("s", 4));
-
-  Expect.isFalse("strstr".startsWith("st", 1));
-  Expect.isFalse("strstr".startsWith("st", 2));
-  Expect.isTrue("strstr".startsWith("st", 3));
-  Expect.isFalse("strstr".startsWith("st", 4));
-
-  Expect.isFalse("strstr".startsWith("str", 1));
-  Expect.isFalse("strstr".startsWith("str", 2));
-  Expect.isTrue("strstr".startsWith("str", 3));
-  Expect.isFalse("strstr".startsWith("str", 4));
-
-  Expect.isTrue("str".startsWith("", 0));
-  Expect.isTrue("str".startsWith("", 1));
-  Expect.isTrue("str".startsWith("", 2));
-  Expect.isTrue("str".startsWith("", 3));
-
-  Expect.throws(() => "str".startsWith("", -1));
-  Expect.throws(() => "str".startsWith("", 4));
-
-  var regexp = new RegExp("s(?:tr?)?");
-  Expect.isTrue("s".startsWith(regexp));
-  Expect.isTrue("st".startsWith(regexp));
-  Expect.isTrue("str".startsWith(regexp));
-  Expect.isTrue("sX".startsWith(regexp));
-  Expect.isTrue("stX".startsWith(regexp));
-  Expect.isTrue("strX".startsWith(regexp));
-
-  Expect.isFalse("".startsWith(regexp));
-  Expect.isFalse("astr".startsWith(regexp));
-
-  Expect.isTrue("".startsWith(new RegExp("")));
-  Expect.isTrue("".startsWith(new RegExp("a?")));
-
-  Expect.isFalse("strstr".startsWith(regexp, 1));
-  Expect.isFalse("strstr".startsWith(regexp, 2));
-  Expect.isTrue("strstr".startsWith(regexp, 3));
-  Expect.isFalse("strstr".startsWith(regexp, 4));
-
-  Expect.isTrue("str".startsWith(new RegExp(""), 0));
-  Expect.isTrue("str".startsWith(new RegExp(""), 1));
-  Expect.isTrue("str".startsWith(new RegExp(""), 2));
-  Expect.isTrue("str".startsWith(new RegExp(""), 3));
-  Expect.isTrue("str".startsWith(new RegExp("a?"), 0));
-  Expect.isTrue("str".startsWith(new RegExp("a?"), 1));
-  Expect.isTrue("str".startsWith(new RegExp("a?"), 2));
-  Expect.isTrue("str".startsWith(new RegExp("a?"), 3));
-
-  Expect.throws(() => "str".startsWith(regexp, -1));
-  Expect.throws(() => "str".startsWith(regexp, 4));
-
-  regexp = new RegExp("^str");
-  Expect.isTrue("strstr".startsWith(regexp));
-  Expect.isTrue("strstr".startsWith(regexp, 0));
-  Expect.isFalse("strstr".startsWith(regexp, 1));
-  Expect.isFalse("strstr".startsWith(regexp, 2));
-  Expect.isFalse("strstr".startsWith(regexp, 3)); // Second "str" isn't at ^.
-}
-
-void testIndexOf() {
-  Expect.equals(0, "str".indexOf("", 0));
-  Expect.equals(0, "".indexOf("", 0));
-  Expect.equals(-1, "".indexOf("a", 0));
-
-  Expect.equals(1, "str".indexOf("t", 0));
-  Expect.equals(1, "str".indexOf("tr", 0));
-  Expect.equals(0, "str".indexOf("str", 0));
-  Expect.equals(0, "str".indexOf("st", 0));
-  Expect.equals(0, "str".indexOf("s", 0));
-  Expect.equals(2, "str".indexOf("r", 0));
-  Expect.equals(-1, "str".indexOf("string", 0));
-
-  Expect.equals(1, "strstr".indexOf("t", 0));
-  Expect.equals(1, "strstr".indexOf("tr", 0));
-  Expect.equals(0, "strstr".indexOf("str", 0));
-  Expect.equals(0, "strstr".indexOf("st", 0));
-  Expect.equals(0, "strstr".indexOf("s", 0));
-  Expect.equals(2, "strstr".indexOf("r", 0));
-  Expect.equals(-1, "str".indexOf("string", 0));
-
-  Expect.equals(4, "strstr".indexOf("t", 2));
-  Expect.equals(4, "strstr".indexOf("tr", 2));
-  Expect.equals(3, "strstr".indexOf("str", 1));
-  Expect.equals(3, "strstr".indexOf("str", 2));
-  Expect.equals(3, "strstr".indexOf("str", 3));
-  Expect.equals(3, "strstr".indexOf("st", 1));
-  Expect.equals(3, "strstr".indexOf("s", 3));
-  Expect.equals(5, "strstr".indexOf("r", 3));
-  Expect.equals(5, "strstr".indexOf("r", 4));
-  Expect.equals(5, "strstr".indexOf("r", 5));
-
-  String str = "hello";
-  for (int i = 0; i < 10; i++) {
-    if (i > str.length) {
-      Expect.throws(() => str.indexOf("", i));
-    } else {
-      int result = str.indexOf("", i);
-      Expect.equals(i, result);
-    }
-  }
-
-  var re = new RegExp("an?");
-  Expect.equals(1, "banana".indexOf(re));
-  Expect.equals(1, "banana".indexOf(re, 0));
-  Expect.equals(1, "banana".indexOf(re, 1));
-  Expect.equals(3, "banana".indexOf(re, 2));
-  Expect.equals(3, "banana".indexOf(re, 3));
-  Expect.equals(5, "banana".indexOf(re, 4));
-  Expect.equals(5, "banana".indexOf(re, 5));
-  Expect.equals(-1, "banana".indexOf(re, 6));
-  Expect.throws(() => "banana".indexOf(re, -1));
-  Expect.throws(() => "banana".indexOf(re, 7));
-  re = new RegExp("x?");
-  for (int i = 0; i <= str.length; i++) {
-    Expect.equals(i, str.indexOf(re, i));
-  }
-}
-
-void testLastIndexOf() {
-  Expect.equals(2, "str".lastIndexOf("", 2));
-  Expect.equals(0, "".lastIndexOf("", 0));
-  Expect.equals(-1, "".lastIndexOf("a", 0));
-
-  Expect.equals(1, "str".lastIndexOf("t", 2));
-  Expect.equals(1, "str".lastIndexOf("tr", 2));
-  Expect.equals(0, "str".lastIndexOf("str", 2));
-  Expect.equals(0, "str".lastIndexOf("st", 2));
-  Expect.equals(0, "str".lastIndexOf("s", 2));
-  Expect.equals(2, "str".lastIndexOf("r", 2));
-  Expect.equals(-1, "str".lastIndexOf("string", 2));
-
-  Expect.equals(4, "strstr".lastIndexOf("t", 5));
-  Expect.equals(4, "strstr".lastIndexOf("tr", 5));
-  Expect.equals(3, "strstr".lastIndexOf("str", 5));
-  Expect.equals(3, "strstr".lastIndexOf("st", 5));
-  Expect.equals(3, "strstr".lastIndexOf("s", 5));
-  Expect.equals(5, "strstr".lastIndexOf("r", 5));
-  Expect.throws(() {
-    "str".lastIndexOf("string", 5);
-  });
-  Expect.equals(4, "strstr".lastIndexOf("t", 5));
-  Expect.equals(4, "strstr".lastIndexOf("tr", 5));
-  Expect.equals(3, "strstr".lastIndexOf("str", 5));
-  Expect.equals(3, "strstr".lastIndexOf("str", 5));
-  Expect.equals(3, "strstr".lastIndexOf("str", 5));
-  Expect.equals(3, "strstr".lastIndexOf("st", 5));
-  Expect.equals(3, "strstr".lastIndexOf("s", 5));
-  Expect.equals(5, "strstr".lastIndexOf("r", 5));
-  Expect.equals(2, "strstr".lastIndexOf("r", 4));
-  Expect.equals(2, "strstr".lastIndexOf("r", 3));
-  Expect.equals(5, "strstr".lastIndexOf("r"));
-  Expect.equals(5, "strstr".lastIndexOf("r", null));
-
-  String str = "hello";
-  for (int i = 0; i < 10; i++) {
-    if (i > str.length) {
-      Expect.throws(() => str.indexOf("", i));
-    } else {
-      int result = str.lastIndexOf("", i);
-      Expect.equals(i, result);
-    }
-  }
-
-  var re = new RegExp("an?");
-  Expect.equals(5, "banana".lastIndexOf(re));
-  Expect.equals(5, "banana".lastIndexOf(re, 6));
-  Expect.equals(5, "banana".lastIndexOf(re, 5));
-  Expect.equals(3, "banana".lastIndexOf(re, 4));
-  Expect.equals(3, "banana".lastIndexOf(re, 3));
-  Expect.equals(1, "banana".lastIndexOf(re, 2));
-  Expect.equals(1, "banana".lastIndexOf(re, 1));
-  Expect.equals(-1, "banana".lastIndexOf(re, 0));
-  Expect.throws(() => "banana".lastIndexOf(re, -1));
-  Expect.throws(() => "banana".lastIndexOf(re, 7));
-  re = new RegExp("x?");
-  for (int i = 0; i <= str.length; i++) {
-    Expect.equals(i, str.indexOf(re, i));
-  }
-}
-
-void testContains() {
-  Expect.isTrue("str".contains("s", 0));
-  Expect.isTrue("str".contains("st", 0));
-  Expect.isTrue("str".contains("str", 0));
-  Expect.isTrue("str".contains("t", 0));
-  Expect.isTrue("str".contains("r", 0));
-  Expect.isTrue("str".contains("tr", 0));
-
-  Expect.isFalse("str".contains("sr", 0));
-  Expect.isFalse("str".contains("string", 0));
-
-  Expect.isTrue("str".contains("", 0));
-  Expect.isTrue("".contains("", 0));
-  Expect.isFalse("".contains("s", 0));
-}
-
-void testReplaceAll() {
-  Expect.equals("AtoBtoCDtoE", "AfromBfromCDfromE".replaceAll("from", "to"));
-
-  // Test with the replaced string at the beginning.
-  Expect.equals("toABtoCDtoE", "fromABfromCDfromE".replaceAll("from", "to"));
-
-  // Test with the replaced string at the end.
-  Expect.equals(
-      "toABtoCDtoEto", "fromABfromCDfromEfrom".replaceAll("from", "to"));
-
-  // Test when there are no occurence of the string to replace.
-  Expect.equals("ABC", "ABC".replaceAll("from", "to"));
-
-  // Test when the string to change is the empty string.
-  Expect.equals("", "".replaceAll("from", "to"));
-
-  // Test when the string to change is a substring of the string to
-  // replace.
-  Expect.equals("fro", "fro".replaceAll("from", "to"));
-
-  // Test when the string to change is the replaced string.
-  Expect.equals("to", "from".replaceAll("from", "to"));
-
-  // Test when the string to change is the replacement string.
-  Expect.equals("to", "to".replaceAll("from", "to"));
-
-  // Test replacing by the empty string.
-  Expect.equals("", "from".replaceAll("from", ""));
-  Expect.equals("AB", "AfromB".replaceAll("from", ""));
-
-  // Test changing the empty string.
-  Expect.equals("to", "".replaceAll("", "to"));
-
-  // Test replacing the empty string.
-  Expect.equals("toAtoBtoCto", "ABC".replaceAll("", "to"));
-}
-
-void testCompareTo() {
-  Expect.equals(0, "".compareTo(""));
-  Expect.equals(0, "str".compareTo("str"));
-  Expect.equals(-1, "str".compareTo("string"));
-  Expect.equals(1, "string".compareTo("str"));
-  Expect.equals(1, "string".compareTo(""));
-  Expect.equals(-1, "".compareTo("string"));
-}
-
-void testCharCodes() {
-  test(str) {
-    var list = str.codeUnits;
-    Expect.equals(str.length, list.length);
-    for (int i = 0; i < str.length; i++) {
-      Expect.equals(str.codeUnitAt(i), list[i]);
-    }
-  }
-
-  test("abc");
-  test("");
-  test(" ");
-}
-
-void testStringLength(int length, String str) {
-  Expect.equals(length, str.length);
-  (length == 0 ? Expect.isTrue : Expect.isFalse)(str.isEmpty);
-  (length != 0 ? Expect.isTrue : Expect.isFalse)(str.isNotEmpty);
-}
-
-void testRepeat() {
-  List<String> testStrings = [
-    "",
-    "\x00",
-    "a",
-    "ab",
-    "\x80",
-    "\xff",
-    "\u2028",
-    "abcdef\u2028",
-    "\u{10002}",
-    "abcdef\u{10002}"
-  ];
-  List<int> counts = [
-    0,
-    1,
-    2,
-    3,
-    4,
-    5,
-    6,
-    7,
-    8,
-    9,
-    10,
-    11,
-    12,
-    13,
-    14,
-    15,
-    16,
-    17,
-    127,
-    128,
-    129
-  ];
-  void testRepeat(str, repeat) {
-    String expect;
-    if (repeat <= 0) {
-      expect = "";
-    } else if (repeat == 1) {
-      expect = str;
-    } else {
-      StringBuffer buf = new StringBuffer();
-      for (int i = 0; i < repeat; i++) {
-        buf.write(str);
-      }
-      expect = buf.toString();
-    }
-    String actual = str * repeat;
-    Expect.equals(expect, actual, "$str#${str.length} * $repeat");
-  }
-
-  for (String str in testStrings) {
-    for (int repeat in counts) {
-      testRepeat(str, repeat);
-    }
-  }
-}
-
-void testPadLeft() {
-  Expect.equals("    1", "1".padLeft(5, ' '));
-  Expect.equals("   11", "11".padLeft(5, ' '));
-  Expect.equals("  111", "111".padLeft(5, ' '));
-  Expect.equals(" 1111", "1111".padLeft(5, ' '));
-  Expect.equals("11111", "11111".padLeft(5, ' '));
-  Expect.equals("111111", "111111".padLeft(5, ' '));
-  Expect.equals("   \u{10002}", "\u{10002}".padLeft(5, ' '));
-  Expect.equals('', ''.padLeft(0, 'a'));
-  Expect.equals('a', ''.padLeft(1, 'a'));
-  Expect.equals('aaaaa', ''.padLeft(5, 'a'));
-  Expect.equals('', ''.padLeft(-2, 'a'));
-
-  Expect.equals('xyzxyzxyzxyzxyz', ''.padLeft(5, 'xyz'));
-  Expect.equals('xyzxyzxyzxyza', 'a'.padLeft(5, 'xyz'));
-  Expect.equals('xyzxyzxyzaa', 'aa'.padLeft(5, 'xyz'));
-  Expect.equals('\u{10002}\u{10002}\u{10002}aa', 'aa'.padLeft(5, '\u{10002}'));
-  Expect.equals('a', 'a'.padLeft(10, ''));
-}
-
-void testPadRight() {
-  Expect.equals("1    ", "1".padRight(5, ' '));
-  Expect.equals("11   ", "11".padRight(5, ' '));
-  Expect.equals("111  ", "111".padRight(5, ' '));
-  Expect.equals("1111 ", "1111".padRight(5, ' '));
-  Expect.equals("11111", "11111".padRight(5, ' '));
-  Expect.equals("111111", "111111".padRight(5, ' '));
-  Expect.equals("\u{10002}   ", "\u{10002}".padRight(5, ' '));
-  Expect.equals('', ''.padRight(0, 'a'));
-  Expect.equals('a', ''.padRight(1, 'a'));
-  Expect.equals('aaaaa', ''.padRight(5, 'a'));
-  Expect.equals('', ''.padRight(-2, 'a'));
-
-  Expect.equals('xyzxyzxyzxyzxyz', ''.padRight(5, 'xyz'));
-  Expect.equals('axyzxyzxyzxyz', 'a'.padRight(5, 'xyz'));
-  Expect.equals('aaxyzxyzxyz', 'aa'.padRight(5, 'xyz'));
-  Expect.equals('aa\u{10002}\u{10002}\u{10002}', 'aa'.padRight(5, '\u{10002}'));
-  Expect.equals('a', 'a'.padRight(10, ''));
-}
diff --git a/tests/corelib/string_to_lower_case_test.dart b/tests/corelib/string_to_lower_case_test.dart
deleted file mode 100644
index e761c1c..0000000
--- a/tests/corelib/string_to_lower_case_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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";
-
-void testOneByteSting() {
-  // Compare one-byte-string toLowerCase with a two-byte-string toLowerCase.
-  var oneByteString =
-      new String.fromCharCodes(new List.generate(256, (i) => i)).toLowerCase();
-  var twoByteString =
-      new String.fromCharCodes(new List.generate(512, (i) => i)).toLowerCase();
-  Expect.isTrue(twoByteString.codeUnits.any((u) => u >= 256));
-  Expect.equals(oneByteString, twoByteString.substring(0, 256));
-}
-
-void main() {
-  testOneByteSting();
-}
diff --git a/tests/corelib/string_trim2_test.dart b/tests/corelib/string_trim2_test.dart
deleted file mode 100644
index eb7956a..0000000
--- a/tests/corelib/string_trim2_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2013, 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";
-
-const WHITESPACE = const [
-  0x09,
-  0x0A,
-  0x0B,
-  0x0C,
-  0x0D,
-  0x20,
-  0x85,
-  0xA0,
-  0x1680,
-  0x2000,
-  0x2001,
-  0x2002,
-  0x2003,
-  0x2004,
-  0x2005,
-  0x2006,
-  0x2007,
-  0x2008,
-  0x2009,
-  0x200A,
-  0x202F,
-  0x205F,
-  0x3000,
-  0x2028,
-  0x2029,
-  0xFEFF,
-];
-
-main() {
-  for (var ws in WHITESPACE) {
-    var name = ws.toRadixString(16);
-    var c = new String.fromCharCode(ws);
-    Expect.equals("", c.trim(), "$name");
-    Expect.equals("a", ("a" + c).trim(), "a-$name");
-    Expect.equals("a", (c + "a").trim(), "$name-a");
-    Expect.equals("a", (c + c + "a" + c + c).trim(), "$name around");
-    Expect.equals(
-        "a" + c + "a", (c + c + "a" + c + "a" + c + c).trim(), "$name many");
-  }
-  Expect.equals("", new String.fromCharCodes(WHITESPACE).trim(), "ALL");
-}
diff --git a/tests/corelib/string_trim_test.dart b/tests/corelib/string_trim_test.dart
deleted file mode 100644
index 6049af9..0000000
--- a/tests/corelib/string_trim_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class StringTrimTest {
-  static testMain() {
-    Expect.equals("", " ".trim());
-    Expect.equals("", "     ".trim());
-    var a = "      lots of space on the left";
-    Expect.equals("lots of space on the left", a.trim());
-    a = "lots of space on the right           ";
-    Expect.equals("lots of space on the right", a.trim());
-    a = "         lots of space           ";
-    Expect.equals("lots of space", a.trim());
-    a = "  x  ";
-    Expect.equals("x", a.trim());
-    Expect.equals("", " \t \n \r ".trim());
-  }
-}
-
-main() {
-  StringTrimTest.testMain();
-}
diff --git a/tests/corelib/string_trimlr_test.dart b/tests/corelib/string_trimlr_test.dart
deleted file mode 100644
index 360b9e0..0000000
--- a/tests/corelib/string_trimlr_test.dart
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Characters with Whitespace property (Unicode 6.3).
-// 0009..000D    ; White_Space # Cc       <control-0009>..<control-000D>
-// 0020          ; White_Space # Zs       SPACE
-// 0085          ; White_Space # Cc       <control-0085>
-// 00A0          ; White_Space # Zs       NO-BREAK SPACE
-// 1680          ; White_Space # Zs       OGHAM SPACE MARK
-// 2000..200A    ; White_Space # Zs       EN QUAD..HAIR SPACE
-// 2028          ; White_Space # Zl       LINE SEPARATOR
-// 2029          ; White_Space # Zp       PARAGRAPH SEPARATOR
-// 202F          ; White_Space # Zs       NARROW NO-BREAK SPACE
-// 205F          ; White_Space # Zs       MEDIUM MATHEMATICAL SPACE
-// 3000          ; White_Space # Zs       IDEOGRAPHIC SPACE
-// And BOM:
-// FEFF          ; Byte order mark.
-const WHITESPACE = const [
-  0x09,
-  0x0A,
-  0x0B,
-  0x0C,
-  0x0D,
-  0x20,
-  0x85,
-  0xA0,
-  0x1680,
-  0x2000,
-  0x2001,
-  0x2002,
-  0x2003,
-  0x2004,
-  0x2005,
-  0x2006,
-  0x2007,
-  0x2008,
-  0x2009,
-  0x200A,
-  0x2028,
-  0x2029,
-  0x202F,
-  0x205F,
-  0x3000,
-  0xFEFF,
-];
-
-main() {
-  // Test the whitespace in different positions.
-  test(ws) {
-    // trimLeft
-    Expect.equals("", ws.trimLeft(), "K1");
-    Expect.equals("", (ws + ws).trimLeft(), "L2");
-    Expect.equals("a" + ws, ("a" + ws).trimLeft(), "L3");
-    Expect.equals("a", (ws + "a").trimLeft(), "L4");
-    Expect.equals("a" + ws + ws, (ws + ws + "a" + ws + ws).trimLeft(), "L5");
-    Expect.equals("a" + ws + "a", (ws + ws + "a" + ws + "a").trimLeft(), "L6");
-    var untrimmable = "a" + ws + "a";
-    Expect.identical(untrimmable, untrimmable.trimLeft(), "L7");
-    // trimRight
-    Expect.equals("", ws.trimRight(), "R1");
-    Expect.equals("", (ws + ws).trimRight(), "R2");
-    Expect.equals("a", ("a" + ws).trimRight(), "R3");
-    Expect.equals(ws + "a", (ws + "a").trimRight(), "R4");
-    Expect.equals(ws + ws + "a", (ws + ws + "a" + ws + ws).trimRight(), "R5");
-    Expect.equals("a" + ws + "a", ("a" + ws + "a" + ws + ws).trimRight(), "R6");
-    Expect.identical(untrimmable, untrimmable.trimRight(), "R7");
-  }
-
-  // Test each whitespace at different locations.
-  for (var ws in WHITESPACE) {
-    var c = new String.fromCharCode(ws);
-    test(c);
-  }
-  // Test all whitespaces at once at different locations.
-  test(new String.fromCharCodes(WHITESPACE));
-
-  // Empty strings.
-  Expect.identical("", "".trimLeft());
-  Expect.identical("", "".trimRight());
-
-  // Test all BMP chars and one surrogate pair.
-  for (int i = 0, j = 0; i <= 0x10000; i++) {
-    if (j < WHITESPACE.length && i == WHITESPACE[j]) {
-      j++;
-      continue;
-    }
-    // See below for these exceptions.
-    if (i == 0x180E) continue;
-    if (i == 0x200B) continue;
-
-    var s = new String.fromCharCode(i);
-    Expect.identical(s, s.trimLeft());
-    Expect.identical(s, s.trimRight());
-  }
-
-  // U+200b is currently being treated as whitespace by some JS engines.
-  // string_trimlr_test/01 fails on these engines.
-  // Should be fixed in tip-of-tree V8 per 2014-02-10.
-  var s200B = new String.fromCharCode(0x200B);
-  Expect.identical(s200B, s200B.trimLeft()); //    //# 01: ok
-  Expect.identical(s200B, s200B.trimRight()); //   //# 01: ok
-
-  // U+180E ceased to be whitespace in Unicode version 6.3.0
-  // string_trimlr_test/unicode63 fails on implementations using earlier
-  // versions.
-  var s180E = new String.fromCharCode(0x180E);
-  Expect.identical(s180E, s180E.trimLeft()); //    //# unicode63: ok
-  Expect.identical(s180E, s180E.trimRight()); //   //# unicode63: ok
-}
diff --git a/tests/corelib/strings_test.dart b/tests/corelib/strings_test.dart
deleted file mode 100644
index 9603b17..0000000
--- a/tests/corelib/strings_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing class 'Strings'.
-
-class StringsTest {
-  StringsTest() {}
-
-  toString() {
-    return "Strings Tester";
-  }
-
-  static testCreation() {
-    String s = "Hello";
-    List<int> l = new List(s.length);
-    for (int i = 0; i < l.length; i++) {
-      l[i] = s.codeUnitAt(i);
-    }
-    String s2 = new String.fromCharCodes(l);
-    Expect.equals(s, s2);
-  }
-
-  static void testMain() {
-    testCreation();
-  }
-}
-
-main() {
-  StringsTest.testMain();
-}
diff --git a/tests/corelib/symbol_map_helper.dart b/tests/corelib/symbol_map_helper.dart
deleted file mode 100644
index da9e7e5..0000000
--- a/tests/corelib/symbol_map_helper.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-library dart.test.symbol_map_helper;
-
-// TODO(ahe): Update map literals to avoid this method.
-Map<Symbol, dynamic> symbolMapToStringMap(Map<String, dynamic> map) {
-  if (map == null) return null;
-  Map<Symbol, dynamic> result = new Map<Symbol, dynamic>();
-  map.forEach((name, value) {
-    result[new Symbol(name)] = value;
-  });
-  return result;
-}
diff --git a/tests/corelib/symbol_operator_test.dart b/tests/corelib/symbol_operator_test.dart
deleted file mode 100644
index 1899f6f..0000000
--- a/tests/corelib/symbol_operator_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test of Symbol class for operators..
-
-var $ = new Symbolize();
-
-main() {
-  testSymbol(#+, $ + $, "+");
-  testSymbol(#-, $ - $, "-");
-  testSymbol(#*, $ * $, "*");
-  testSymbol(#/, $ / $, "/");
-  testSymbol(#~/, $ ~/ $, "~/");
-  testSymbol(#%, $ % $, "%");
-  testSymbol(#<<, $ << $, "<<");
-  testSymbol(#>>, $ >> $, ">>");
-  testSymbol(#~, ~$, "~");
-  testSymbol(#|, $ | $, "|");
-  testSymbol(#&, $ & $, "&");
-  testSymbol(#^, $ ^ $, "^");
-  testSymbol(#<, $ < $, "<");
-  testSymbol(#<=, $ <= $, "<=");
-  testSymbol(#>, $ > $, ">");
-  testSymbol(#>=, $ >= $, ">=");
-  testSymbol(#==, new Symbol("=="), "=="); // Can't hit noSuchMethod.
-  testSymbol(#[], $[$], "[]");
-  testSymbol(#[]=, ($[$] = $).lastMember, "[]=");
-  testSymbol(const Symbol("unary-"), -$, "unary-");
-
-  testSymbolThrows(">>>"); // //# 03: ok
-  testSymbolThrows("!"); //   //# 03: continued
-  testSymbolThrows("&&"); //  //# 03: continued
-  testSymbolThrows("||"); //  //# 03: continued
-  testSymbolThrows("?"); //   //# 03: continued
-  testSymbolThrows("?:"); //  //# 03: continued
-  testSymbolThrows("#"); //   //# 03: continued
-  testSymbolThrows("//"); //  //# 03: continued
-}
-
-void testSymbol(Symbol constSymbol, var mirrorSymbol, String name) {
-  Symbol dynamicSymbol = new Symbol(name);
-  if (constSymbol != mirrorSymbol) {
-    throw "Not equal #$name, \$$name: $constSymbol, $mirrorSymbol";
-  }
-  if (constSymbol != dynamicSymbol) {
-    throw "Not equal #$name, new Symbol('$name'): $constSymbol, $dynamicSymbol";
-  }
-  if (mirrorSymbol != dynamicSymbol) {
-    throw "Not equal \$$name, new Symbol('$name'): "
-        "$mirrorSymbol, $dynamicSymbol";
-  }
-  if (constSymbol.hashCode != mirrorSymbol.hashCode) {
-    throw "HashCode not equal #$name, \$$name: $constSymbol, $mirrorSymbol";
-  }
-  if (constSymbol.hashCode != dynamicSymbol.hashCode) {
-    throw "HashCode not equal #$name, new Symbol('$name'): "
-        "$constSymbol, $dynamicSymbol";
-  }
-  if (mirrorSymbol.hashCode != dynamicSymbol.hashCode) {
-    throw "HashCode not equal \$$name, new Symbol('$name'): "
-        "$mirrorSymbol, $dynamicSymbol";
-  }
-}
-
-void testSymbolThrows(name) {
-  bool fails = false;
-  try {
-    new Symbol(name);
-  } catch (e) {
-    fails = true;
-  }
-  if (!fails) {
-    throw "Didn't throw: $name";
-  }
-}
-
-class Symbolize {
-  Symbol lastMember;
-  noSuchMethod(m) => lastMember = m.memberName;
-}
diff --git a/tests/corelib/symbol_reserved_word_test.dart b/tests/corelib/symbol_reserved_word_test.dart
deleted file mode 100644
index c6a585b..0000000
--- a/tests/corelib/symbol_reserved_word_test.dart
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (c) 2014, 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";
-
-void checkBadSymbol(String s) {
-  Expect.throws(() => new Symbol(s), (e) => e is ArgumentError);
-}
-
-main() {
-  var x;
-
-  // 'void' is allowed as a symbol name.
-  x = const Symbol('void'); //     //# 01: ok
-  x = #void; //                    //# 02: ok
-  x = new Symbol('void'); //       //# 03: ok
-
-  // However, it is not allowed as a part of a symbol name.
-  x = const Symbol('void.foo'); // //# 04: compile-time error
-  Expect.throws(() { x = #void.foo; }, (e) => e is NoSuchMethodError); //# 05: static type warning
-  checkBadSymbol('void.foo'); //   //# 06: ok
-  x = const Symbol('foo.void'); // //# 07: compile-time error
-  x = #foo.void; //                //# 08: compile-time error
-  checkBadSymbol('foo.void'); //   //# 09: ok
-
-  // All other reserved words are disallowed.
-  x = const Symbol('assert'); //   //# 10: compile-time error
-  x = const Symbol('break'); //    //# 10: continued
-  x = const Symbol('case'); //     //# 10: continued
-  x = const Symbol('catch'); //    //# 10: continued
-  x = const Symbol('class'); //    //# 10: continued
-  x = const Symbol('const'); //    //# 10: continued
-  x = const Symbol('continue'); // //# 10: continued
-  x = const Symbol('default'); //  //# 10: continued
-  x = const Symbol('do'); //       //# 10: continued
-  x = const Symbol('else'); //     //# 10: continued
-  x = const Symbol('enum'); //     //# 10: continued
-  x = const Symbol('extends'); //  //# 10: continued
-  x = const Symbol('false'); //    //# 10: continued
-  x = const Symbol('final'); //    //# 10: continued
-  x = const Symbol('finally'); //  //# 10: continued
-  x = const Symbol('for'); //      //# 10: continued
-  x = const Symbol('if'); //       //# 10: continued
-  x = const Symbol('in'); //       //# 10: continued
-  x = const Symbol('is'); //       //# 10: continued
-  x = const Symbol('new'); //      //# 10: continued
-  x = const Symbol('null'); //     //# 10: continued
-  x = const Symbol('rethrow'); //  //# 10: continued
-  x = const Symbol('return'); //   //# 10: continued
-  x = const Symbol('super'); //    //# 10: continued
-  x = const Symbol('switch'); //   //# 10: continued
-  x = const Symbol('this'); //     //# 10: continued
-  x = const Symbol('throw'); //    //# 10: continued
-  x = const Symbol('true'); //     //# 10: continued
-  x = const Symbol('try'); //      //# 10: continued
-  x = const Symbol('var'); //      //# 10: continued
-  x = const Symbol('while'); //    //# 10: continued
-  x = const Symbol('with'); //     //# 10: continued
-  x = #assert; //                  //# 11: compile-time error
-  x = #break; //                   //# 11: continued
-  x = #case; //                    //# 11: continued
-  x = #catch; //                   //# 11: continued
-  x = #class; //                   //# 11: continued
-  x = #const; //                   //# 11: continued
-  x = #continue; //                //# 11: continued
-  x = #default; //                 //# 11: continued
-  x = #do; //                      //# 11: continued
-  x = #else; //                    //# 11: continued
-  x = #enum; //                    //# 11: continued
-  x = #extends; //                 //# 11: continued
-  x = #false; //                   //# 11: continued
-  x = #final; //                   //# 11: continued
-  x = #finally; //                 //# 11: continued
-  x = #for; //                     //# 11: continued
-  x = #if; //                      //# 11: continued
-  x = #in; //                      //# 11: continued
-  x = #is; //                      //# 11: continued
-  x = #new; //                     //# 11: continued
-  x = #null; //                    //# 11: continued
-  x = #rethrow; //                 //# 11: continued
-  x = #return; //                  //# 11: continued
-  x = #super; //                   //# 11: continued
-  x = #switch; //                  //# 11: continued
-  x = #this; //                    //# 11: continued
-  x = #throw; //                   //# 11: continued
-  x = #true; //                    //# 11: continued
-  x = #try; //                     //# 11: continued
-  x = #var; //                     //# 11: continued
-  x = #while; //                   //# 11: continued
-  x = #with; //                    //# 11: continued
-  checkBadSymbol('assert'); //     //# 12: ok
-  checkBadSymbol('break'); //      //# 12: continued
-  checkBadSymbol('case'); //       //# 12: continued
-  checkBadSymbol('catch'); //      //# 12: continued
-  checkBadSymbol('class'); //      //# 12: continued
-  checkBadSymbol('const'); //      //# 12: continued
-  checkBadSymbol('continue'); //   //# 12: continued
-  checkBadSymbol('default'); //    //# 12: continued
-  checkBadSymbol('do'); //         //# 12: continued
-  checkBadSymbol('else'); //       //# 12: continued
-  checkBadSymbol('enum'); //       //# 12: continued
-  checkBadSymbol('extends'); //    //# 12: continued
-  checkBadSymbol('false'); //      //# 12: continued
-  checkBadSymbol('final'); //      //# 12: continued
-  checkBadSymbol('finally'); //    //# 12: continued
-  checkBadSymbol('for'); //        //# 12: continued
-  checkBadSymbol('if'); //         //# 12: continued
-  checkBadSymbol('in'); //         //# 12: continued
-  checkBadSymbol('is'); //         //# 12: continued
-  checkBadSymbol('new'); //        //# 12: continued
-  checkBadSymbol('null'); //       //# 12: continued
-  checkBadSymbol('rethrow'); //    //# 12: continued
-  checkBadSymbol('return'); //     //# 12: continued
-  checkBadSymbol('super'); //      //# 12: continued
-  checkBadSymbol('switch'); //     //# 12: continued
-  checkBadSymbol('this'); //       //# 12: continued
-  checkBadSymbol('throw'); //      //# 12: continued
-  checkBadSymbol('true'); //       //# 12: continued
-  checkBadSymbol('try'); //        //# 12: continued
-  checkBadSymbol('var'); //        //# 12: continued
-  checkBadSymbol('while'); //      //# 12: continued
-  checkBadSymbol('with'); //       //# 12: continued
-}
diff --git a/tests/corelib/symbol_test.dart b/tests/corelib/symbol_test.dart
deleted file mode 100644
index 6b97092..0000000
--- a/tests/corelib/symbol_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Basic test of Symbol class.
-
-main() {
-  var x;
-  print(x = const Symbol('fisk'));
-
-  try {
-    print(const Symbol(0)); //# 01: compile-time error
-  } on NoSuchMethodError {
-    print('Caught NoSuchMethodError');
-  } on TypeError {
-    print('Caught TypeError');
-  }
-
-  try {
-    print(const Symbol('0')); //# 02: compile-time error
-  } on ArgumentError catch (e) {
-    print('Caught $e');
-  }
-
-  try {
-    print(const Symbol('_')); //# 03: compile-time error
-  } on ArgumentError catch (e) {
-    print('Caught $e');
-  }
-
-  try {
-    var y = 0;
-    print(new Symbol(y));
-    throw 'Expected a NoSuchMethodError or a TypeError';
-  } on NoSuchMethodError {
-    print('Caught NoSuchMethodError');
-  } on TypeError {
-    print('Caught TypeError');
-  }
-
-  try {
-    print(new Symbol('0'));
-    throw 'Expected an ArgumentError';
-  } on ArgumentError catch (e) {
-    print('Caught $e');
-  }
-
-  try {
-    print(new Symbol('_'));
-    throw 'Expected an ArgumentError';
-  } on ArgumentError catch (e) {
-    print('Caught $e');
-  }
-
-  if (!identical(const Symbol('fisk'), x)) {
-    throw 'Symbol constant is not canonicalized';
-  }
-
-  if (const Symbol('fisk') != x) {
-    throw 'Symbol constant is not equal to itself';
-  }
-
-  if (const Symbol('fisk') != new Symbol('fisk')) {
-    throw 'Symbol constant is not equal to its non-const equivalent';
-  }
-
-  if (new Symbol('fisk') != new Symbol('fisk')) {
-    throw 'new Symbol is not equal to its equivalent';
-  }
-
-  if (new Symbol('fisk') == new Symbol('hest')) {
-    throw 'unrelated Symbols are equal';
-  }
-
-  if (new Symbol('fisk') == new Object()) {
-    throw 'unrelated objects are equal';
-  }
-
-  x.hashCode as int;
-
-  new Symbol('fisk').hashCode as int;
-
-  if (new Symbol('fisk').hashCode != x.hashCode) {
-    throw "non-const Symbol's hashCode not equal to its const equivalent";
-  }
-
-  if (new Symbol('') != const Symbol('')) {
-    throw 'empty Symbol not equals to itself';
-  }
-}
diff --git a/tests/corelib/throw_half_surrogate_pair_test.dart b/tests/corelib/throw_half_surrogate_pair_test.dart
deleted file mode 100644
index f500cb1..0000000
--- a/tests/corelib/throw_half_surrogate_pair_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014, 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.
-
-main() {
-  var trebleClef = "\u{1D11E}";
-  if (trebleClef.length != 2) throw "String should be a surrogate pair";
-  // These uncaught exceptions should not cause the VM to crash attempting to
-  // print a malformed string.
-  throw trebleClef[0]; // //# 01: runtime error
-  throw trebleClef[1]; // //# 02: runtime error
-}
diff --git a/tests/corelib/toInt_test.dart b/tests/corelib/toInt_test.dart
deleted file mode 100644
index 0261d7d..0000000
--- a/tests/corelib/toInt_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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";
-
-main() {
-  Expect.equals(-0x80000001, (-0x80000001).toInt());
-  Expect.equals(-0x80000000, (-0x80000000 - 0.7).toInt());
-  Expect.equals(-0x80000000, (-0x80000000 - 0.3).toInt());
-  Expect.equals(-0x7FFFFFFF, (-0x80000000 + 0.3).toInt());
-  Expect.equals(-0x7FFFFFFF, (-0x80000000 + 0.7).toInt());
-  Expect.equals(-0x7FFFFFFF, (-0x7FFFFFFF).toInt());
-  Expect.equals(0x7FFFFFFE, (0x7FFFFFFE).toInt());
-  Expect.equals(0x7FFFFFFE, (0x7FFFFFFF - 0.7).toInt());
-  Expect.equals(0x7FFFFFFE, (0x7FFFFFFF - 0.3).toInt());
-  Expect.equals(0x7FFFFFFF, (0x7FFFFFFF + 0.3).toInt());
-  Expect.equals(0x7FFFFFFF, (0x7FFFFFFF + 0.7).toInt());
-  Expect.equals(0x80000000, 0x80000000.toInt());
-}
diff --git a/tests/corelib/unicode2_test.dart b/tests/corelib/unicode2_test.dart
deleted file mode 100755
index c939a1d..0000000
--- a/tests/corelib/unicode2_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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';
-
-const String testPhrase = "The quick brown fox jumps over the lazy dog.";
-
-const List<int> testCodepoints = const <int>[
-  84,
-  104,
-  101,
-  32,
-  113,
-  117,
-  105,
-  99,
-  107,
-  32,
-  98,
-  114,
-  111,
-  119,
-  110,
-  32,
-  102,
-  111,
-  120,
-  32,
-  106,
-  117,
-  109,
-  112,
-  115,
-  32,
-  111,
-  118,
-  101,
-  114,
-  32,
-  116,
-  104,
-  101,
-  32,
-  108,
-  97,
-  122,
-  121,
-  32,
-  100,
-  111,
-  103,
-  46
-];
-
-main() {
-  testCodepointsToString();
-  testStringCharCodes();
-  testEmptyStringFromCharCodes();
-  testEmptyStringCharCodes();
-}
-
-void testStringCharCodes() {
-  Expect.listEquals(testCodepoints, testPhrase.codeUnits);
-}
-
-void testCodepointsToString() {
-  Expect.stringEquals(testPhrase, new String.fromCharCodes(testCodepoints));
-}
-
-void testEmptyStringFromCharCodes() {
-  Expect.stringEquals("", new String.fromCharCodes(<int>[]));
-}
-
-void testEmptyStringCharCodes() {
-  Expect.listEquals([], "".codeUnits);
-}
diff --git a/tests/corelib/unicode_test.dart b/tests/corelib/unicode_test.dart
deleted file mode 100644
index 8b02913..0000000
--- a/tests/corelib/unicode_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class UnicodeTest {
-  static testMain() {
-    var lowerStrasse = new String.fromCharCodes([115, 116, 114, 97, 223, 101]);
-    Expect.equals("STRASSE", lowerStrasse.toUpperCase());
-  }
-}
-
-main() {
-  UnicodeTest.testMain();
-}
diff --git a/tests/corelib/uri_base_test.dart b/tests/corelib/uri_base_test.dart
deleted file mode 100644
index a54a287..0000000
--- a/tests/corelib/uri_base_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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";
-
-main() {
-  try {
-    Uri base = Uri.base;
-    Expect.isTrue(Uri.base.scheme == "file" || Uri.base.scheme == "http");
-  } on UnsupportedError catch (e) {
-    Expect.isTrue(e.toString().contains("'Uri.base' is not supported"));
-  }
-}
diff --git a/tests/corelib/uri_example_test.dart b/tests/corelib/uri_example_test.dart
deleted file mode 100644
index 388f717..0000000
--- a/tests/corelib/uri_example_test.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// 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.
-
-library uri.examples;
-
-// Examples from the Uri class documentation.
-// Get an error if the documentation starts to be wrong.
-// REMEMBER TO UPDATE BOTH.
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-main() {
-  // Uri.http
-  test("http://example.org/path?q=dart",
-      new Uri.http("example.org", "/path", {"q": "dart"}));
-  test("http://user:pass@localhost:8080",
-      new Uri.http("user:pass@localhost:8080", ""));
-  test("http://example.org/a%20b", new Uri.http("example.org", "a b"));
-  test("http://example.org/a%252F", new Uri.http("example.org", "/a%2F"));
-
-  // Uri.file
-  test("xxx/yyy", new Uri.file("xxx/yyy", windows: false));
-  test("xxx/yyy/", new Uri.file("xxx/yyy/", windows: false));
-  test("file:///xxx/yyy", new Uri.file("/xxx/yyy", windows: false));
-  test("file:///xxx/yyy/", new Uri.file("/xxx/yyy/", windows: false));
-  test("C%3A", new Uri.file("C:", windows: false));
-  test("xxx/yyy", new Uri.file(r"xxx\yyy", windows: true));
-  test("xxx/yyy/", new Uri.file(r"xxx\yyy\", windows: true));
-  test("file:///xxx/yyy", new Uri.file(r"\xxx\yyy", windows: true));
-  test("file:///xxx/yyy/", new Uri.file(r"\xxx\yyy/", windows: true));
-  test("file:///C:/xxx/yyy", new Uri.file(r"C:\xxx\yyy", windows: true));
-  test("file://server/share/file",
-      new Uri.file(r"\\server\share\file", windows: true));
-  Expect.throws(() => new Uri.file(r"C:", windows: true));
-  Expect.throws(() => new Uri.file(r"C:xxx\yyy", windows: true));
-
-  // isScheme.
-  var uri = Uri.parse("http://example.com/");
-  Expect.isTrue(uri.isScheme("HTTP"));
-
-  // toFilePath.
-  Expect.equals(r"xxx/yyy", Uri.parse("xxx/yyy").toFilePath(windows: false));
-  Expect.equals(r"xxx/yyy/", Uri.parse("xxx/yyy/").toFilePath(windows: false));
-  Expect.equals(
-      r"/xxx/yyy", Uri.parse("file:///xxx/yyy").toFilePath(windows: false));
-  Expect.equals(
-      r"/xxx/yyy/", Uri.parse("file:///xxx/yyy/").toFilePath(windows: false));
-  Expect.equals(r"/C:", Uri.parse("file:///C:").toFilePath(windows: false));
-  Expect.equals(r"/C:a", Uri.parse("file:///C:a").toFilePath(windows: false));
-
-  Expect.equals(r"xxx\yyy", Uri.parse("xxx/yyy").toFilePath(windows: true));
-  Expect.equals(r"xxx\yyy\", Uri.parse("xxx/yyy/").toFilePath(windows: true));
-  Expect.equals(
-      r"\xxx\yyy", Uri.parse("file:///xxx/yyy").toFilePath(windows: true));
-  Expect.equals(
-      r"\xxx\yyy\", Uri.parse("file:///xxx/yyy/").toFilePath(windows: true));
-  Expect.equals(
-      r"C:\xxx\yyy", Uri.parse("file:///C:/xxx/yyy").toFilePath(windows: true));
-  Expect.throws(() => Uri.parse("file:C:xxx/yyy").toFilePath(windows: true));
-  Expect.equals(r"\\server\share\file",
-      Uri.parse("file://server/share/file").toFilePath(windows: true)); //
-
-  // replace.
-  Uri uri1 = Uri.parse("a://b@c:4/d/e?f#g");
-  Uri uri2 = uri1.replace(scheme: "A", path: "D/E/E", fragment: "G");
-  Expect.equals("a://b@c:4/D/E/E?f#G", "$uri2");
-  Uri uri3 = new Uri(
-      scheme: "A",
-      userInfo: uri1.userInfo,
-      host: uri1.host,
-      port: uri1.port,
-      path: "D/E/E",
-      query: uri1.query,
-      fragment: "G");
-  Expect.equals("a://b@c:4/D/E/E?f#G", "$uri3");
-  Expect.equals(uri2, uri3);
-
-  // UriData.mimeType
-  var data = UriData.parse("data:text/plain;charset=utf-8,Hello%20World!");
-  Expect.equals("text/plain", data.mimeType);
-  Expect.equals("utf-8", data.charset);
-
-  // Uri.parseIPv6Address - shouldn't throw.
-  Uri.parseIPv6Address("::1");
-  Uri.parseIPv6Address("FEDC:BA98:7654:3210:FEDC:BA98:7654:3210");
-  Uri.parseIPv6Address("3ffe:2a00:100:7031::1");
-  Uri.parseIPv6Address("::FFFF:129.144.52.38");
-  Uri.parseIPv6Address("2010:836B:4179::836B:4179");
-}
-
-test(String result, Uri value) {
-  Expect.equals(Uri.parse(result), value);
-  Expect.equals(result, value.toString());
-}
diff --git a/tests/corelib/uri_file_test.dart b/tests/corelib/uri_file_test.dart
deleted file mode 100644
index 3550157..0000000
--- a/tests/corelib/uri_file_test.dart
+++ /dev/null
@@ -1,325 +0,0 @@
-// 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";
-
-testFileUri() {
-  final unsupported = new UnsupportedError("");
-
-  var tests = [
-    ["", "", ""],
-    ["relative", "relative", "relative"],
-    ["relative/", "relative/", "relative\\"],
-    ["a%20b", "a b", "a b"],
-    ["a%20b/", "a b/", "a b\\"],
-    ["a/b", "a/b", "a\\b"],
-    ["a/b/", "a/b/", "a\\b\\"],
-    ["a%20b/c%20d", "a b/c d", "a b\\c d"],
-    ["a%20b/c%20d/", "a b/c d/", "a b\\c d\\"],
-    ["file:///absolute", "/absolute", "\\absolute"],
-    ["file:///absolute", "/absolute", "\\absolute"],
-    ["file:///a/b", "/a/b", "\\a\\b"],
-    ["file:///a/b", "/a/b", "\\a\\b"],
-    ["file://server/a/b", unsupported, "\\\\server\\a\\b"],
-    ["file://server/a/b/", unsupported, "\\\\server\\a\\b\\"],
-    ["file:///C:/", "/C:/", "C:\\"],
-    ["file:///C:/a/b", "/C:/a/b", "C:\\a\\b"],
-    ["file:///C:/a/b/", "/C:/a/b/", "C:\\a\\b\\"],
-    ["http:/a/b", unsupported, unsupported],
-    ["https:/a/b", unsupported, unsupported],
-    ["urn:a:b", unsupported, unsupported],
-  ];
-
-  void check(String s, filePath, bool windows) {
-    Uri uri = Uri.parse(s);
-    if (filePath is Error) {
-      if (filePath is UnsupportedError) {
-        Expect.throws(() => uri.toFilePath(windows: windows),
-            (e) => e is UnsupportedError);
-      } else {
-        Expect.throws(() => uri.toFilePath(windows: windows));
-      }
-    } else {
-      Expect.equals(filePath, uri.toFilePath(windows: windows));
-      Expect.equals(s, new Uri.file(filePath, windows: windows).toString());
-    }
-  }
-
-  for (var test in tests) {
-    check(test[0], test[1], false);
-    check(test[0], test[2], true);
-  }
-
-  Uri uri;
-  uri = Uri.parse("file:a");
-  Expect.equals("/a", uri.toFilePath(windows: false));
-  Expect.equals("\\a", uri.toFilePath(windows: true));
-  uri = Uri.parse("file:a/");
-  Expect.equals("/a/", uri.toFilePath(windows: false));
-  Expect.equals("\\a\\", uri.toFilePath(windows: true));
-}
-
-testFileUriWindowsSlash() {
-  var tests = [
-    ["", "", ""],
-    ["relative", "relative", "relative"],
-    ["relative/", "relative/", "relative\\"],
-    ["a%20b", "a b", "a b"],
-    ["a%20b/", "a b/", "a b\\"],
-    ["a/b", "a/b", "a\\b"],
-    ["a/b/", "a/b/", "a\\b\\"],
-    ["a%20b/c%20d", "a b/c d", "a b\\c d"],
-    ["a%20b/c%20d/", "a b/c d/", "a b\\c d\\"],
-    ["file:///absolute", "/absolute", "\\absolute"],
-    ["file:///absolute", "/absolute", "\\absolute"],
-    ["file:///a/b", "/a/b", "\\a\\b"],
-    ["file:///a/b", "/a/b", "\\a\\b"],
-    ["file://server/a/b", "//server/a/b", "\\\\server\\a\\b"],
-    ["file://server/a/b/", "//server/a/b/", "\\\\server\\a\\b\\"],
-    ["file:///C:/", "C:/", "C:\\"],
-    ["file:///C:/a/b", "C:/a/b", "C:\\a\\b"],
-    ["file:///C:/a/b/", "C:/a/b/", "C:\\a\\b\\"],
-    ["file:///C:/xxx/yyy", "C:\\xxx\\yyy", "C:\\xxx\\yyy"],
-  ];
-
-  for (var test in tests) {
-    Uri uri = new Uri.file(test[1], windows: true);
-    Expect.equals(test[0], uri.toString());
-    Expect.equals(test[2], uri.toFilePath(windows: true));
-    bool couldBeDir = uri.path.isEmpty || uri.path.endsWith('\\');
-    Uri dirUri = new Uri.directory(test[1], windows: true);
-    Expect.isTrue(dirUri.path.isEmpty || dirUri.path.endsWith('/'));
-    if (couldBeDir) {
-      Expect.equals(uri, dirUri);
-    }
-  }
-}
-
-testFileUriWindowsWin32Namespace() {
-  var tests = [
-    ["\\\\?\\C:\\", "file:///C:/", "C:\\"],
-    ["\\\\?\\C:\\", "file:///C:/", "C:\\"],
-    [
-      "\\\\?\\UNC\\server\\share\\file",
-      "file://server/share/file",
-      "\\\\server\\share\\file"
-    ],
-  ];
-
-  for (var test in tests) {
-    Uri uri = new Uri.file(test[0], windows: true);
-    Expect.equals(test[1], uri.toString());
-    Expect.equals(test[2], uri.toFilePath(windows: true));
-  }
-
-  Expect.throws(() => new Uri.file("\\\\?\\file", windows: true),
-      (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Uri.file("\\\\?\\UNX\\server\\share\\file", windows: true),
-      (e) => e is ArgumentError);
-  Expect.throws(() => new Uri.directory("\\\\?\\file", windows: true),
-      (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Uri.directory("\\\\?\\UNX\\server\\share\\file", windows: true),
-      (e) => e is ArgumentError);
-}
-
-testFileUriDriveLetter() {
-  check(String s, String nonWindows, String windows) {
-    Uri uri;
-    uri = Uri.parse(s);
-    Expect.equals(nonWindows, uri.toFilePath(windows: false));
-    if (windows != null) {
-      Expect.equals(windows, uri.toFilePath(windows: true));
-    } else {
-      Expect.throws(
-          () => uri.toFilePath(windows: true), (e) => e is UnsupportedError);
-    }
-  }
-
-  check("file:///C:", "/C:", "C:\\");
-  check("file:///C:/", "/C:/", "C:\\");
-  check("file:///C:a", "/C:a", null);
-  check("file:///C:a/", "/C:a/", null);
-
-  Expect.throws(
-      () => new Uri.file("C:", windows: true), (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Uri.file("C:a", windows: true), (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Uri.file("C:a\b", windows: true), (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Uri.directory("C:", windows: true), (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Uri.directory("C:a", windows: true), (e) => e is ArgumentError);
-  Expect.throws(() => new Uri.directory("C:a\b", windows: true),
-      (e) => e is ArgumentError);
-}
-
-testFileUriResolve() {
-  var tests = [
-    ["file:///a", "/a", "", "\\a", ""],
-    ["file:///a/", "/a/", "", "\\a\\", ""],
-    ["file:///b", "/a", "b", "\\a", "b"],
-    ["file:///b/", "/a", "b/", "\\a", "b\\"],
-    ["file:///a/b", "/a/", "b", "\\a\\", "b"],
-    ["file:///a/b/", "/a/", "b/", "\\a\\", "b\\"],
-    ["file:///a/c/d", "/a/b", "c/d", "\\a\\b", "c\\d"],
-    ["file:///a/c/d/", "/a/b", "c/d/", "\\a\\b", "c\\d\\"],
-    ["file:///a/b/c/d", "/a/b/", "c/d", "\\a\\b\\", "c\\d"],
-    ["file:///a/b/c/d/", "/a/b/", "c/d/", "\\a\\b\\", "c\\d\\"],
-  ];
-
-  check(String s, String absolute, String relative, bool windows) {
-    Uri absoluteUri = new Uri.file(absolute, windows: windows);
-    Uri relativeUri = new Uri.file(relative, windows: windows);
-    String relativeString = windows ? relative.replaceAll("\\", "/") : relative;
-    Expect.equals(s, absoluteUri.resolve(relativeString).toString());
-    Expect.equals(s, absoluteUri.resolveUri(relativeUri).toString());
-  }
-
-  for (var test in tests) {
-    check(test[0], test[1], test[2], false);
-    check(test[0], test[1], test[2], true);
-    check(test[0], test[1], test[4], true);
-    check(test[0], test[3], test[2], true);
-    check(test[0], test[3], test[4], true);
-  }
-}
-
-testFileUriIllegalCharacters() {
-  // Slash is an invalid character in file names on both non-Windows
-  // and Windows.
-  Uri uri = Uri.parse("file:///a%2Fb");
-  Expect.throws(
-      () => uri.toFilePath(windows: false), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => uri.toFilePath(windows: true), (e) => e is UnsupportedError);
-
-  // Illegal characters in windows file names.
-  var illegalWindowsPaths = [
-    "a<b",
-    "a>b",
-    "a:b",
-    "a\"b",
-    "a|b",
-    "a?b",
-    "a*b",
-    "\\\\?\\c:\\a/b"
-  ];
-
-  for (var test in illegalWindowsPaths) {
-    Expect.throws(
-        () => new Uri.file(test, windows: true), (e) => e is ArgumentError);
-    Expect.throws(() => new Uri.file("\\$test", windows: true),
-        (e) => e is ArgumentError);
-    Expect.throws(() => new Uri.directory(test, windows: true),
-        (e) => e is ArgumentError);
-    Expect.throws(() => new Uri.directory("\\$test", windows: true),
-        (e) => e is ArgumentError);
-
-    // It is possible to create non-Windows URIs, but not Windows URIs.
-    Uri uri = new Uri.file(test, windows: false);
-    Uri absoluteUri = new Uri.file("/$test", windows: false);
-    Uri dirUri = new Uri.directory(test, windows: false);
-    Uri dirAbsoluteUri = new Uri.directory("/$test", windows: false);
-    Expect.throws(
-        () => new Uri.file(test, windows: true), (e) => e is ArgumentError);
-    Expect.throws(() => new Uri.file("\\$test", windows: true),
-        (e) => e is ArgumentError);
-    Expect.throws(() => new Uri.directory(test, windows: true),
-        (e) => e is ArgumentError);
-    Expect.throws(() => new Uri.directory("\\$test", windows: true),
-        (e) => e is ArgumentError);
-
-    // It is possible to extract non-Windows file path, but not
-    // Windows file path.
-    Expect.equals(test, uri.toFilePath(windows: false));
-    Expect.equals("/$test", absoluteUri.toFilePath(windows: false));
-    Expect.equals("$test/", dirUri.toFilePath(windows: false));
-    Expect.equals("/$test/", dirAbsoluteUri.toFilePath(windows: false));
-    Expect.throws(
-        () => uri.toFilePath(windows: true), (e) => e is UnsupportedError);
-    Expect.throws(() => absoluteUri.toFilePath(windows: true),
-        (e) => e is UnsupportedError);
-    Expect.throws(
-        () => dirUri.toFilePath(windows: true), (e) => e is UnsupportedError);
-    Expect.throws(() => dirAbsoluteUri.toFilePath(windows: true),
-        (e) => e is UnsupportedError);
-  }
-
-  // Backslash
-  illegalWindowsPaths = ["a\\b", "a\\b\\"];
-  for (var test in illegalWindowsPaths) {
-    // It is possible to create both non-Windows URIs, and Windows URIs.
-    Uri uri = new Uri.file(test, windows: false);
-    Uri absoluteUri = new Uri.file("/$test", windows: false);
-    Uri dirUri = new Uri.directory(test, windows: false);
-    Uri dirAbsoluteUri = new Uri.directory("/$test", windows: false);
-    new Uri.file(test, windows: true);
-    new Uri.file("\\$test", windows: true);
-
-    // It is possible to extract non-Windows file path, but not
-    // Windows file path from the non-Windows URI (it has a backslash
-    // in a path segment).
-    Expect.equals(test, uri.toFilePath(windows: false));
-    Expect.equals("/$test", absoluteUri.toFilePath(windows: false));
-    Expect.equals("$test/", dirUri.toFilePath(windows: false));
-    Expect.equals("/$test/", dirAbsoluteUri.toFilePath(windows: false));
-    Expect.throws(
-        () => uri.toFilePath(windows: true), (e) => e is UnsupportedError);
-    Expect.throws(() => absoluteUri.toFilePath(windows: true),
-        (e) => e is UnsupportedError);
-    Expect.throws(
-        () => dirUri.toFilePath(windows: true), (e) => e is UnsupportedError);
-    Expect.throws(() => dirAbsoluteUri.toFilePath(windows: true),
-        (e) => e is UnsupportedError);
-  }
-}
-
-testFileUriIllegalDriveLetter() {
-  Expect.throws(
-      () => new Uri.file("1:\\", windows: true), (e) => e is ArgumentError);
-  Expect.throws(() => new Uri.directory("1:\\", windows: true),
-      (e) => e is ArgumentError);
-  Uri uri = new Uri.file("1:\\", windows: false);
-  Uri dirUri = new Uri.directory("1:\\", windows: false);
-  Expect.equals("1:\\", uri.toFilePath(windows: false));
-  Expect.equals("1:\\/", dirUri.toFilePath(windows: false));
-  Expect.throws(
-      () => uri.toFilePath(windows: true), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => dirUri.toFilePath(windows: true), (e) => e is UnsupportedError);
-}
-
-testAdditionalComponents() {
-  check(String s, {bool windowsOk: false}) {
-    Uri uri = Uri.parse(s);
-    Expect.throws(
-        () => uri.toFilePath(windows: false), (e) => e is UnsupportedError);
-    if (windowsOk) {
-      Expect.isTrue(uri.toFilePath(windows: true) is String);
-    } else {
-      Expect.throws(
-          () => uri.toFilePath(windows: true), (e) => e is UnsupportedError);
-    }
-  }
-
-  check("file:///path?query");
-  check("file:///path#fragment");
-  check("file:///path?query#fragment");
-  check("file://host/path", windowsOk: true);
-  check("file://user:password@host/path", windowsOk: true);
-}
-
-main() {
-  testFileUri();
-  testFileUriWindowsSlash();
-  testFileUriDriveLetter();
-  testFileUriWindowsWin32Namespace();
-  testFileUriResolve();
-  testFileUriIllegalCharacters();
-  testFileUriIllegalDriveLetter();
-  testAdditionalComponents();
-}
diff --git a/tests/corelib/uri_http_test.dart b/tests/corelib/uri_http_test.dart
deleted file mode 100644
index 60d9732..0000000
--- a/tests/corelib/uri_http_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// 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";
-
-testHttpUri() {
-  void check(Uri uri, String expected) {
-    Expect.equals(expected, uri.toString());
-  }
-
-  check(new Uri.http("", ""), "http:");
-  check(new Uri.http("@:", ""), "http://");
-  check(new Uri.http("@:8080", ""), "http://:8080");
-  check(new Uri.http("@host:", ""), "http://host");
-  check(new Uri.http("@host:", ""), "http://host");
-  check(new Uri.http("xxx:yyy@host:8080", ""), "http://xxx:yyy@host:8080");
-  check(new Uri.http("host", "a"), "http://host/a");
-  check(new Uri.http("host", "/a"), "http://host/a");
-  check(new Uri.http("host", "a/"), "http://host/a/");
-  check(new Uri.http("host", "/a/"), "http://host/a/");
-  check(new Uri.http("host", "a/b"), "http://host/a/b");
-  check(new Uri.http("host", "/a/b"), "http://host/a/b");
-  check(new Uri.http("host", "a/b/"), "http://host/a/b/");
-  check(new Uri.http("host", "/a/b/"), "http://host/a/b/");
-  check(new Uri.http("host", "a b"), "http://host/a%20b");
-  check(new Uri.http("host", "/a b"), "http://host/a%20b");
-  check(new Uri.http("host", "/a b/"), "http://host/a%20b/");
-  check(new Uri.http("host", "/a%2F"), "http://host/a%252F");
-  check(new Uri.http("host", "/a%2F/"), "http://host/a%252F/");
-  check(new Uri.http("host", "/a/b", {"c": "d"}), "http://host/a/b?c=d");
-  check(
-      new Uri.http("host", "/a/b", {"c=": "&d"}), "http://host/a/b?c%3D=%26d");
-  check(new Uri.http("[::]", "a"), "http://[::]/a");
-  check(new Uri.http("[::127.0.0.1]", "a"), "http://[::127.0.0.1]/a");
-}
-
-testHttpsUri() {
-  void check(Uri uri, String expected) {
-    Expect.equals(expected, uri.toString());
-  }
-
-  check(new Uri.https("", ""), "https:");
-  check(new Uri.https("@:", ""), "https://");
-  check(new Uri.https("@:8080", ""), "https://:8080");
-  check(new Uri.https("@host:", ""), "https://host");
-  check(new Uri.https("@host:", ""), "https://host");
-  check(new Uri.https("xxx:yyy@host:8080", ""), "https://xxx:yyy@host:8080");
-  check(new Uri.https("host", "a"), "https://host/a");
-  check(new Uri.https("host", "/a"), "https://host/a");
-  check(new Uri.https("host", "a/"), "https://host/a/");
-  check(new Uri.https("host", "/a/"), "https://host/a/");
-  check(new Uri.https("host", "a/b"), "https://host/a/b");
-  check(new Uri.https("host", "/a/b"), "https://host/a/b");
-  check(new Uri.https("host", "a/b/"), "https://host/a/b/");
-  check(new Uri.https("host", "/a/b/"), "https://host/a/b/");
-  check(new Uri.https("host", "a b"), "https://host/a%20b");
-  check(new Uri.https("host", "/a b"), "https://host/a%20b");
-  check(new Uri.https("host", "/a b/"), "https://host/a%20b/");
-  check(new Uri.https("host", "/a%2F"), "https://host/a%252F");
-  check(new Uri.https("host", "/a%2F/"), "https://host/a%252F/");
-  check(new Uri.https("host", "/a/b", {"c": "d"}), "https://host/a/b?c=d");
-  check(new Uri.https("host", "/a/b", {"c=": "&d"}),
-      "https://host/a/b?c%3D=%26d");
-  check(new Uri.https("[::]", "a"), "https://[::]/a");
-  check(new Uri.https("[::127.0.0.1]", "a"), "https://[::127.0.0.1]/a");
-}
-
-testResolveHttpScheme() {
-  String s = "//myserver:1234/path/some/thing";
-  Uri uri = Uri.parse(s);
-  Uri http = new Uri(scheme: "http");
-  Uri https = new Uri(scheme: "https");
-  Expect.equals("http:$s", http.resolveUri(uri).toString());
-  Expect.equals("https:$s", https.resolveUri(uri).toString());
-}
-
-main() {
-  testHttpUri();
-  testHttpsUri();
-  testResolveHttpScheme();
-}
diff --git a/tests/corelib/uri_ipv4_test.dart b/tests/corelib/uri_ipv4_test.dart
deleted file mode 100644
index 830e9ef..0000000
--- a/tests/corelib/uri_ipv4_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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';
-
-void testParseIPv4Address() {
-  void pass(String host, List<int> out) {
-    Expect.listEquals(Uri.parseIPv4Address(host), out);
-  }
-
-  void fail(String host) {
-    Expect.throws(
-        () => Uri.parseIPv4Address(host), (e) => e is FormatException);
-  }
-
-  pass('127.0.0.1', [127, 0, 0, 1]);
-  pass('128.0.0.1', [128, 0, 0, 1]);
-  pass('255.255.255.255', [255, 255, 255, 255]);
-  pass('0.0.0.0', [0, 0, 0, 0]);
-  fail('127.0.0.-1');
-  fail('255.255.255.256');
-  fail('0.0.0.0.');
-  fail('0.0.0.0.0');
-  fail('a.0.0.0');
-  fail('0.0..0');
-}
-
-void main() {
-  testParseIPv4Address();
-}
diff --git a/tests/corelib/uri_ipv6_test.dart b/tests/corelib/uri_ipv6_test.dart
deleted file mode 100644
index 25e9957..0000000
--- a/tests/corelib/uri_ipv6_test.dart
+++ /dev/null
@@ -1,148 +0,0 @@
-// 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';
-
-void testValidIpv6Uri() {
-  var path = 'http://[::1]:1234/path?query=5#now';
-  var uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('::1', uri.host);
-  Expect.equals(1234, uri.port);
-  Expect.equals('/path', uri.path);
-  Expect.equals('query=5', uri.query);
-  Expect.equals('now', uri.fragment);
-  Expect.equals(path, uri.toString());
-
-  path = 'http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:8080/index.html';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('fedc:ba98:7654:3210:fedc:ba98:7654:3210', uri.host);
-  Expect.equals(8080, uri.port);
-  Expect.equals('/index.html', uri.path);
-  Expect.equals(path.toLowerCase(), uri.toString());
-
-  path = 'http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('fedc:ba98:7654:3210:fedc:ba98:7654:3210', uri.host);
-  Expect.equals(80, uri.port);
-  Expect.equals('/index.html', uri.path);
-  Expect.equals('http://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/index.html',
-      uri.toString());
-
-  path = 'https://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:443/index.html';
-  uri = Uri.parse(path);
-  Expect.equals('https', uri.scheme);
-  Expect.equals('fedc:ba98:7654:3210:fedc:ba98:7654:3210', uri.host);
-  Expect.equals(443, uri.port);
-  Expect.equals('/index.html', uri.path);
-  Expect.equals('https://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/index.html',
-      uri.toString());
-
-  path = 'http://[1080:0:0:0:8:800:200C:417A]/index.html';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('1080:0:0:0:8:800:200c:417a', uri.host);
-  Expect.equals(80, uri.port);
-  Expect.equals('/index.html', uri.path);
-  Expect.equals(path.toLowerCase(), uri.toString());
-
-  path = 'http://[3ffe:2a00:100:7031::1]';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('3ffe:2a00:100:7031::1', uri.host);
-  Expect.equals(80, uri.port);
-  Expect.equals('', uri.path);
-  Expect.equals(path, uri.toString());
-
-  path = 'http://[1080::8:800:200C:417A]/foo';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('1080::8:800:200c:417a', uri.host);
-  Expect.equals(80, uri.port);
-  Expect.equals('/foo', uri.path);
-  Expect.equals(path.toLowerCase(), uri.toString());
-
-  path = 'http://[::192.9.5.5]/ipng';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('::192.9.5.5', uri.host);
-  Expect.equals(80, uri.port);
-  Expect.equals('/ipng', uri.path);
-  Expect.equals(path, uri.toString());
-
-  path = 'http://[::FFFF:129.144.52.38]:8080/index.html';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('::ffff:129.144.52.38', uri.host);
-  Expect.equals(8080, uri.port);
-  Expect.equals('/index.html', uri.path);
-  Expect.equals(path.toLowerCase(), uri.toString());
-
-  path = 'http://[::FFFF:129.144.52.38]:80/index.html';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('::ffff:129.144.52.38', uri.host);
-  Expect.equals(80, uri.port);
-  Expect.equals('/index.html', uri.path);
-  Expect.equals('http://[::ffff:129.144.52.38]/index.html', uri.toString());
-
-  path = 'https://[::FFFF:129.144.52.38]:443/index.html';
-  uri = Uri.parse(path);
-  Expect.equals('https', uri.scheme);
-  Expect.equals('::ffff:129.144.52.38', uri.host);
-  Expect.equals(443, uri.port);
-  Expect.equals('/index.html', uri.path);
-  Expect.equals('https://[::ffff:129.144.52.38]/index.html', uri.toString());
-
-  path = 'http://[2010:836B:4179::836B:4179]';
-  uri = Uri.parse(path);
-  Expect.equals('http', uri.scheme);
-  Expect.equals('2010:836b:4179::836b:4179', uri.host);
-  Expect.equals(80, uri.port);
-  Expect.equals('', uri.path);
-  Expect.equals(path.toLowerCase(), uri.toString());
-}
-
-void testParseIPv6Address() {
-  void pass(String host, List<int> expected) {
-    Expect.listEquals(expected, Uri.parseIPv6Address(host));
-  }
-
-  void fail(String host) {
-    Expect.throws(
-        () => Uri.parseIPv6Address(host), (e) => e is FormatException);
-  }
-
-  pass('::127.0.0.1', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 1]);
-  pass('0::127.0.0.1', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 1]);
-  pass('::', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
-  pass('0::', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
-  fail(':0::127.0.0.1');
-  fail('0:::');
-  fail(':::');
-  fail('::0:');
-  fail('::0::');
-  fail('::0::0');
-  fail('00000::0');
-  fail('-1::0');
-  fail('-AAA::0');
-  fail('0::127.0.0.1:0');
-  fail('0::127.0.0');
-  pass('0::1111', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 17]);
-  pass('2010:836B:4179::836B:4179',
-      [32, 16, 131, 107, 65, 121, 0, 0, 0, 0, 0, 0, 131, 107, 65, 121]);
-  fail('2010:836B:4179:0000:127.0.0.1');
-  fail('2010:836B:4179:0000:0000:127.0.0.1');
-  fail('2010:836B:4179:0000:0000:0000::127.0.0.1');
-  fail('2010:836B:4179:0000:0000:0000:0000:127.0.0.1');
-  pass('2010:836B:4179:0000:0000:0000:127.0.0.1',
-      [32, 16, 131, 107, 65, 121, 0, 0, 0, 0, 0, 0, 127, 0, 0, 1]);
-}
-
-void main() {
-  testValidIpv6Uri();
-  testParseIPv6Address();
-}
diff --git a/tests/corelib/uri_normalize_path_test.dart b/tests/corelib/uri_normalize_path_test.dart
deleted file mode 100644
index 07b7c26..0000000
--- a/tests/corelib/uri_normalize_path_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// 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.
-
-library uriNormalizePathTest;
-
-import "package:expect/expect.dart";
-
-test(String path, String normalizedPath) {
-  for (var scheme in ["http", "file", "unknown"]) {
-    for (var auth in [
-      [null, "hostname", null],
-      ["userinfo", "hostname", 1234],
-      [null, null, null]
-    ]) {
-      for (var query in [null, "query"]) {
-        for (var fragment in [null, "fragment"]) {
-          var base = new Uri(
-              scheme: scheme,
-              userInfo: auth[0],
-              host: auth[1],
-              port: auth[2],
-              path: path,
-              query: query,
-              fragment: fragment);
-          var expected = base.replace(
-              path: (base.hasAuthority && normalizedPath.isEmpty)
-                  ? "/"
-                  : normalizedPath);
-          var actual = base.normalizePath();
-          Expect.equals(expected, actual, "$base");
-        }
-      }
-    }
-  }
-}
-
-testNoChange(String path) {
-  test(path, path);
-}
-
-main() {
-  testNoChange("foo/bar/baz");
-  testNoChange("/foo/bar/baz");
-  testNoChange("foo/bar/baz/");
-  test("foo/bar/..", "foo/");
-  test("foo/bar/.", "foo/bar/");
-  test("foo/./bar/../baz", "foo/baz");
-  test("../../foo", "foo");
-  test("./../foo", "foo");
-  test("./../", "");
-  test("./../.", "");
-  test("foo/bar/baz/../../../../qux", "/qux");
-  test("/foo/bar/baz/../../../../qux", "/qux");
-  test(".", "");
-  test("..", "");
-  test("/.", "/");
-  test("/..", "/");
-}
diff --git a/tests/corelib/uri_normalize_test.dart b/tests/corelib/uri_normalize_test.dart
deleted file mode 100644
index af97653..0000000
--- a/tests/corelib/uri_normalize_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2013, 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";
-
-testNormalizePath() {
-  test(String expected, String path, {String scheme, String host}) {
-    var uri = new Uri(scheme: scheme, host: host, path: path);
-    Expect.equals(expected, uri.toString());
-    if (scheme == null && host == null) {
-      Expect.equals(expected, uri.path);
-    }
-  }
-
-  var unreserved = "-._~0123456789"
-      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-      "abcdefghijklmnopqrstuvwxyz";
-
-  test("A", "%41");
-  test("AB", "%41%42");
-  test("%40AB", "%40%41%42");
-  test("a", "%61");
-  test("ab", "%61%62");
-  test("%60ab", "%60%61%62");
-  test(unreserved, unreserved);
-
-  var x = new StringBuffer();
-  for (int i = 32; i < 128; i++) {
-    if (unreserved.indexOf(new String.fromCharCode(i)) != -1) {
-      x.writeCharCode(i);
-    } else {
-      x.write("%");
-      x.write(i.toRadixString(16));
-    }
-  }
-  Expect.equals(x.toString().toUpperCase(),
-      new Uri(path: x.toString()).toString().toUpperCase());
-
-  // Normalized paths.
-
-  // Full absolute path normalization for absolute paths.
-  test("/a/b/c/", "/../a/./b/z/../c/d/..");
-  test("/a/b/c/", "/./a/b/c/");
-  test("/a/b/c/", "/./../a/b/c/");
-  test("/a/b/c/", "/./../a/b/c/.");
-  test("/a/b/c/", "/./../a/b/c/z/./..");
-  test("/", "/a/..");
-  // Full absolute path normalization for URIs with scheme.
-  test("s:a/b/c/", "../a/./b/z/../c/d/..", scheme: "s");
-  test("s:a/b/c/", "./a/b/c/", scheme: "s");
-  test("s:a/b/c/", "./../a/b/c/", scheme: "s");
-  test("s:a/b/c/", "./../a/b/c/.", scheme: "s");
-  test("s:a/b/c/", "./../a/b/c/z/./..", scheme: "s");
-  test("s:/", "/a/..", scheme: "s");
-  test("s:/", "a/..", scheme: "s");
-  // Full absolute path normalization for URIs with authority.
-  test("//h/a/b/c/", "../a/./b/z/../c/d/..", host: "h");
-  test("//h/a/b/c/", "./a/b/c/", host: "h");
-  test("//h/a/b/c/", "./../a/b/c/", host: "h");
-  test("//h/a/b/c/", "./../a/b/c/.", host: "h");
-  test("//h/a/b/c/", "./../a/b/c/z/./..", host: "h");
-  test("//h/", "/a/..", host: "h");
-  test("//h/", "a/..", host: "h");
-  // Partial relative normalization (allowing leading .. or ./ for current dir).
-  test("../a/b/c/", "../a/./b/z/../c/d/..");
-  test("a/b/c/", "./a/b/c/");
-  test("../a/b/c/", "./../a/b/c/");
-  test("../a/b/c/", "./../a/b/c/.");
-  test("../a/b/c/", "./../a/b/c/z/./..");
-  test("/", "/a/..");
-  test("./", "a/..");
-}
-
-main() {
-  testNormalizePath();
-}
diff --git a/tests/corelib/uri_parameters_all_test.dart b/tests/corelib/uri_parameters_all_test.dart
deleted file mode 100644
index f3f6dfc..0000000
--- a/tests/corelib/uri_parameters_all_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2015, 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";
-import 'dart:convert';
-
-main() {
-  testAll(["a", "b", "c"]);
-  testAll([""]);
-  testAll(["a"]);
-  testAll(["", ""]);
-  testAll(["baz"]);
-
-  testParse("z&y&w&z", {
-    "z": ["", ""],
-    "y": [""],
-    "w": [""]
-  });
-  testParse("x=42&y=42&x=37&y=37", {
-    "x": ["42", "37"],
-    "y": ["42", "37"]
-  });
-  testParse("x&x&x&x&x", {
-    "x": ["", "", "", "", ""]
-  });
-  testParse("x=&&y", {
-    "x": [""],
-    "y": [""]
-  });
-}
-
-testAll(List values) {
-  var uri =
-      new Uri(scheme: "foo", path: "bar", queryParameters: {"baz": values});
-  var list = uri.queryParametersAll["baz"];
-  Expect.listEquals(values, list);
-}
-
-testParse(query, results) {
-  var uri = new Uri(scheme: "foo", path: "bar", query: query);
-  var params = uri.queryParametersAll;
-  for (var k in results.keys) {
-    Expect.listEquals(results[k], params[k]);
-  }
-  uri = new Uri(scheme: "foo", path: "bar", queryParameters: results);
-  params = uri.queryParametersAll;
-  for (var k in results.keys) {
-    Expect.listEquals(results[k], params[k]);
-  }
-}
diff --git a/tests/corelib/uri_parse_test.dart b/tests/corelib/uri_parse_test.dart
deleted file mode 100644
index 4c93b2b..0000000
--- a/tests/corelib/uri_parse_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// 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";
-
-void testUriCombi() {
-  var schemes = ["", "file", "ws", "ftp"];
-  var fragments = ["", "#", "#f", "#fragment", "#l:?/"];
-  var queries = ["", "?", "?q", "?query", "?q:/"];
-  var paths = ["/", "/x", "/x/y", "/x/y/", "/x:y", "x", "x/y", "x/y/"];
-  var userInfos = ["", "x", "xxx", "x:4", "xxx:444", "x:4:x"];
-  var hosts = ["", "h", "hhh", "h:4", "hhh:444", "[::1.2.3.4]"];
-
-  void check(uriString, scheme, fragment, query, path, user, host) {
-    for (var uri in [
-      Uri.parse(uriString),
-      Uri.parse(">\u{10000}>$uriString<\u{10000}<", 4, uriString.length + 4),
-      Uri.parse(
-          "http://example.com/$uriString#?:/[]\"", 19, uriString.length + 19),
-      Uri.parse(uriString * 3, uriString.length, uriString.length * 2)
-    ]) {
-      String name = "$uriString -> $uri";
-      Expect.equals(scheme, uri.scheme, name);
-      var uriFragment = uri.fragment;
-      if (fragment.startsWith('#')) uriFragment = "#$uriFragment";
-      Expect.equals(fragment, uriFragment, name);
-      var uriQuery = uri.query;
-      if (query.startsWith('?')) uriQuery = "?$uriQuery";
-      Expect.equals(query, uriQuery, name);
-      Expect.equals(path, uri.path, name);
-      Expect.equals(user, uri.userInfo, name);
-      var uriHost = uri.host;
-      if (host.startsWith("[")) uriHost = "[$uriHost]";
-      if (uri.port != 0) uriHost += ":${uri.port}";
-      Expect.equals(host, uriHost, name);
-    }
-  }
-
-  for (var scheme in schemes) {
-    for (var fragment in fragments) {
-      for (var query in queries) {
-        for (var path in paths) {
-          // File scheme URIs always get a leading slash.
-          if (scheme == "file" && !path.startsWith('/')) continue;
-          for (var user in userInfos) {
-            for (var host in hosts) {
-              var auth = host;
-              var s = scheme;
-              if (user.isNotEmpty) auth = "$user@$auth";
-              if (auth.isNotEmpty) auth = "//$auth";
-              if (auth.isNotEmpty && !path.startsWith('/')) continue;
-              check(
-                  "$scheme${scheme.isEmpty ? "" : ":"}"
-                  "$auth$path$query$fragment",
-                  scheme,
-                  fragment,
-                  query,
-                  path,
-                  user,
-                  host);
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-void main() {
-  testUriCombi();
-}
diff --git a/tests/corelib/uri_path_test.dart b/tests/corelib/uri_path_test.dart
deleted file mode 100644
index d46c3a7..0000000
--- a/tests/corelib/uri_path_test.dart
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright (c) 2013, 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:collection";
-
-import "package:expect/expect.dart";
-
-void testInvalidArguments() {}
-
-void testPath() {
-  void test(s, uri) {
-    Expect.equals(s, uri.toString());
-    Expect.equals(uri, Uri.parse(s));
-  }
-
-  test("http:", new Uri(scheme: "http"));
-  test("http://host/xxx", new Uri(scheme: "http", host: "host", path: "xxx"));
-  test("http://host/xxx", new Uri(scheme: "http", host: "host", path: "/xxx"));
-  test("http://host/xxx",
-      new Uri(scheme: "http", host: "host", pathSegments: ["xxx"]));
-  test("http://host/xxx/yyy",
-      new Uri(scheme: "http", host: "host", path: "xxx/yyy"));
-  test("http://host/xxx/yyy",
-      new Uri(scheme: "http", host: "host", path: "/xxx/yyy"));
-  test("http://host/xxx/yyy",
-      new Uri(scheme: "http", host: "host", pathSegments: ["xxx", "yyy"]));
-
-  test("urn:", new Uri(scheme: "urn"));
-  test("urn:xxx", new Uri(scheme: "urn", path: "xxx"));
-  test("urn:xxx:yyy", new Uri(scheme: "urn", path: "xxx:yyy"));
-
-  Expect.equals(3, new Uri(path: "xxx/yyy/zzz").pathSegments.length);
-  Expect.equals(3, new Uri(path: "/xxx/yyy/zzz").pathSegments.length);
-  Expect.equals(3, Uri.parse("http://host/xxx/yyy/zzz").pathSegments.length);
-  Expect.equals(3, Uri.parse("file:///xxx/yyy/zzz").pathSegments.length);
-}
-
-void testPathSegments() {
-  void test(String path, List<String> segments) {
-    void check(uri) {
-      Expect.equals(path, uri.path);
-      Expect.equals(path, uri.toString());
-      Expect.listEquals(segments, uri.pathSegments);
-    }
-
-    var uri1 = new Uri(pathSegments: segments);
-    var uri2 = new Uri(path: path);
-    check(uri1);
-    check(uri2);
-    Expect.equals(uri1, uri2);
-  }
-
-  test("", []);
-  test("%20", [" "]);
-  test("%20/%20%20", [" ", "  "]);
-  test("A", ["A"]);
-  test("%C3%B8", ["ø"]);
-  test("%C3%B8/%C3%A5", ["ø", "å"]);
-  test("%C8%A4/%E5%B9%B3%E4%BB%AE%E5%90%8D", ["Ȥ", "平仮名"]);
-  test("A/b", ["A", "b"]);
-  test("A/%25", ["A", "%"]);
-  test("%2F/a%2Fb", ["/", "a/b"]);
-  test("name;v=1.1", ["name;v=1.1"]);
-  test("name,v=1.1", ["name,v=1.1"]);
-  test("name;v=1.1/name,v=1.1", ["name;v=1.1", "name,v=1.1"]);
-
-  var unreserved = "-._~0123456789"
-      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-      "abcdefghijklmnopqrstuvwxyz";
-  var subDelimiters = r"!$&'()*+,;=";
-  var additionalPathChars = ":@";
-  var pchar = unreserved + subDelimiters + additionalPathChars;
-
-  var encoded = new StringBuffer();
-  var unencoded = new StringBuffer();
-  for (int i = 32; i < 128; i++) {
-    if (pchar.indexOf(new String.fromCharCode(i)) != -1) {
-      encoded.writeCharCode(i);
-    } else {
-      encoded.write("%");
-      encoded.write(i.toRadixString(16).toUpperCase());
-    }
-    unencoded.writeCharCode(i);
-  }
-  encoded = encoded.toString();
-  unencoded = unencoded.toString();
-  test(encoded, [unencoded]);
-  test(encoded + "/" + encoded, [unencoded, unencoded]);
-
-  Uri uri;
-  List pathSegments = ["xxx", "yyy", "zzz"];
-
-  uri = new Uri(pathSegments: pathSegments);
-  Expect.equals(3, uri.pathSegments.length);
-  uri = new Uri(pathSegments: pathSegments.where((_) => true));
-  Expect.equals(3, uri.pathSegments.length);
-  uri = new Uri(pathSegments: new DoubleLinkedQueue.from(pathSegments));
-  Expect.equals(3, uri.pathSegments.length);
-
-  uri = new Uri(scheme: "http", host: "host", pathSegments: pathSegments);
-  Expect.equals(3, uri.pathSegments.length);
-  uri = new Uri(
-      scheme: "http",
-      host: "host",
-      pathSegments: pathSegments.where((_) => true));
-  Expect.equals(3, uri.pathSegments.length);
-  uri = new Uri(
-      scheme: "http",
-      host: "host",
-      pathSegments: new DoubleLinkedQueue.from(pathSegments));
-  Expect.equals(3, uri.pathSegments.length);
-
-  uri = new Uri(scheme: "file", pathSegments: pathSegments);
-  Expect.equals(3, uri.pathSegments.length);
-  uri = new Uri(scheme: "file", pathSegments: pathSegments.where((_) => true));
-  Expect.equals(3, uri.pathSegments.length);
-  uri = new Uri(
-      scheme: "file", pathSegments: new DoubleLinkedQueue.from(pathSegments));
-  Expect.equals(3, uri.pathSegments.length);
-}
-
-void testPathCompare() {
-  void test(Uri uri1, Uri uri2) {
-    Expect.equals(uri1, uri2);
-    Expect.equals(uri2, uri1);
-  }
-
-  test(new Uri(scheme: "http", host: "host", path: "xxx"),
-      new Uri(scheme: "http", host: "host", path: "/xxx"));
-  test(new Uri(scheme: "http", host: "host", pathSegments: ["xxx"]),
-      new Uri(scheme: "http", host: "host", path: "/xxx"));
-  test(new Uri(scheme: "http", host: "host", pathSegments: ["xxx"]),
-      new Uri(scheme: "http", host: "host", path: "xxx"));
-  test(new Uri(scheme: "file", path: "xxx"),
-      new Uri(scheme: "file", path: "/xxx"));
-  test(new Uri(scheme: "file", pathSegments: ["xxx"]),
-      new Uri(scheme: "file", path: "/xxx"));
-  test(new Uri(scheme: "file", pathSegments: ["xxx"]),
-      new Uri(scheme: "file", path: "xxx"));
-}
-
-testPathSegmentsUnmodifiableList() {
-  void test(list) {
-    bool isUnsupported(e) => e is UnsupportedError;
-
-    Expect.equals("a", list[0]);
-    Expect.throws(() => list[0] = "c", isUnsupported);
-    Expect.equals(2, list.length);
-    Expect.throws(() => list.length = 1, isUnsupported);
-    Expect.throws(() => list.add("c"), isUnsupported);
-    Expect.throws(() => list.addAll(["c", "d"]), isUnsupported);
-    Expect.listEquals(["b", "a"], list.reversed.toList());
-    Expect.throws(() => list.sort(), isUnsupported);
-    Expect.equals(0, list.indexOf("a"));
-    Expect.equals(0, list.lastIndexOf("a"));
-    Expect.throws(() => list.clear(), isUnsupported);
-    Expect.throws(() => list.insert(1, "c"), isUnsupported);
-    Expect.throws(() => list.insertAll(1, ["c", "d"]), isUnsupported);
-    Expect.throws(() => list.setAll(1, ["c", "d"]), isUnsupported);
-    Expect.throws(() => list.remove("a"), isUnsupported);
-    Expect.throws(() => list.removeAt(0), isUnsupported);
-    Expect.throws(() => list.removeLast(), isUnsupported);
-    Expect.throws(() => list.removeWhere((e) => true), isUnsupported);
-    Expect.throws(() => list.retainWhere((e) => false), isUnsupported);
-    Expect.listEquals(["a"], list.sublist(0, 1));
-    Expect.listEquals(["a"], list.getRange(0, 1).toList());
-    Expect.throws(() => list.setRange(0, 1, ["c"]), isUnsupported);
-    Expect.throws(() => list.removeRange(0, 1), isUnsupported);
-    Expect.throws(() => list.fillRange(0, 1, "c"), isUnsupported);
-    Expect.throws(() => list.replaceRange(0, 1, ["c"]), isUnsupported);
-    Map map = new Map();
-    map[0] = "a";
-    map[1] = "b";
-    Expect.mapEquals(list.asMap(), map);
-  }
-
-  test(Uri.parse("a/b").pathSegments);
-  test(new Uri(pathSegments: ["a", "b"]).pathSegments);
-}
-
-main() {
-  testInvalidArguments();
-  testPath();
-  testPathSegments();
-  testPathCompare();
-  testPathSegmentsUnmodifiableList();
-}
diff --git a/tests/corelib/uri_query_test.dart b/tests/corelib/uri_query_test.dart
deleted file mode 100644
index e015cb3..0000000
--- a/tests/corelib/uri_query_test.dart
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void testInvalidArguments() {}
-
-void testEncodeQueryComponent() {
-  // This exact data is from posting a form in Chrome 26 with the one
-  // exception that * is encoded as %30 and ~ is not encoded as %7E.
-  Expect.equals(
-      "%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F%"
-      "3A%3B%3C%3D%3E%3F%40%5B%5C%5D%5E_%60%7B%7C%7D~",
-      Uri.encodeQueryComponent("!\"#\$%&'()*+,-./:;<=>?@[\\]^_`{|}~"));
-  Expect.equals("+%2B+", Uri.encodeQueryComponent(" + "));
-  Expect.equals("%2B+%2B", Uri.encodeQueryComponent("+ +"));
-}
-
-void testQueryParameters() {
-  test(String query, Map<String, String> parameters, [String normalizedQuery]) {
-    if (normalizedQuery == null) normalizedQuery = query;
-    check(uri) {
-      Expect.isTrue(uri.hasQuery);
-      Expect.equals(normalizedQuery, uri.query);
-      Expect.equals("?$normalizedQuery", uri.toString());
-      if (parameters.containsValue(null)) {
-        var map = new Map.from(parameters);
-        map.forEach((k, v) {
-          if (v == null) map[k] = "";
-        });
-        Expect.mapEquals(map, uri.queryParameters);
-      } else {
-        Expect.mapEquals(parameters, uri.queryParameters);
-      }
-    }
-
-    var uri1 = new Uri(queryParameters: parameters);
-    var uri2 = new Uri(query: query);
-    var uri3 = Uri.parse("?$query");
-    check(uri1);
-    if (query != "") {
-      check(uri2);
-    } else {
-      Expect.isFalse(uri2.hasQuery);
-    }
-    check(uri3);
-    Expect.equals(uri1, uri3);
-    if (query != "") Expect.equals(uri2, uri3);
-    if (parameters.containsValue(null)) {
-      var map = new Map.from(parameters);
-      map.forEach((k, v) {
-        if (v == null) map[k] = "";
-      });
-      Expect.mapEquals(map, Uri.splitQueryString(query));
-    } else {
-      Expect.mapEquals(parameters, Uri.splitQueryString(query));
-    }
-  }
-
-  test("", {});
-  test("A", {"A": null});
-  test("%25", {"%": null});
-  test("%41", {"A": null}, "A");
-  test("%41A", {"AA": null}, "AA");
-  test("A", {"A": ""});
-  test("%25", {"%": ""});
-  test("%41", {"A": ""}, "A");
-  test("%41A", {"AA": ""}, "AA");
-  test("A=a", {"A": "a"});
-  test("%25=a", {"%": "a"});
-  test("%41=%61", {"A": "a"}, "A=a");
-  test("A=+", {"A": " "});
-  test("A=%2B", {"A": "+"});
-  test("A=a&B", {"A": "a", "B": null});
-  test("A=a&B", {"A": "a", "B": ""});
-  test("A=a&B=b", {"A": "a", "B": "b"});
-  test("%41=%61&%42=%62", {"A": "a", "B": "b"}, "A=a&B=b");
-
-  var unreserved = "-._~0123456789"
-      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-      "abcdefghijklmnopqrstuvwxyz";
-  var encoded = new StringBuffer();
-  var allEncoded = new StringBuffer();
-  var unencoded = new StringBuffer();
-  for (int i = 32; i < 128; i++) {
-    if (i == 32) {
-      encoded.write("+");
-    } else if (unreserved.indexOf(new String.fromCharCode(i)) != -1) {
-      encoded.writeCharCode(i);
-    } else {
-      encoded.write("%");
-      encoded.write(i.toRadixString(16).toUpperCase());
-    }
-    if (i == 32) {
-      allEncoded.write("+");
-    } else {
-      allEncoded.write("%");
-      allEncoded.write(i.toRadixString(16).toUpperCase());
-    }
-    unencoded.writeCharCode(i);
-  }
-  encoded = encoded.toString();
-  unencoded = unencoded.toString();
-  test("a=$encoded", {"a": unencoded});
-  test("a=$encoded&b=$encoded", {"a": unencoded, "b": unencoded});
-
-  var map = new Map();
-  map[unencoded] = unencoded;
-  test("$encoded=$encoded", map);
-  test("$encoded=$allEncoded", map, "$encoded=$encoded");
-  test("$allEncoded=$encoded", map, "$encoded=$encoded");
-  test("$allEncoded=$allEncoded", map, "$encoded=$encoded");
-  map[unencoded] = null;
-  test("$encoded", map);
-  map[unencoded] = "";
-  test("$encoded", map);
-}
-
-testInvalidQueryParameters() {
-  test(String query, Map<String, String> parameters) {
-    check(uri) {
-      Expect.equals(query, uri.query);
-      if (query.isEmpty) {
-        Expect.equals(query, uri.toString());
-      } else {
-        Expect.equals("?$query", uri.toString());
-      }
-      if (parameters.containsValue(null)) {} else {
-        Expect.mapEquals(parameters, uri.queryParameters);
-      }
-    }
-
-    var uri1 = new Uri(query: query);
-    var uri2 = Uri.parse("?$query");
-    check(uri1);
-    check(uri2);
-    Expect.equals(uri1, uri2);
-  }
-
-  test("=", {});
-  test("=xxx", {});
-  test("===", {});
-  test("=xxx=yyy=zzz", {});
-  test("=&=&=", {});
-  test("=xxx&=yyy&=zzz", {});
-  test("&=&=&", {});
-  test("&=xxx&=xxx&", {});
-}
-
-testQueryParametersImmutableMap() {
-  test(map) {
-    bool isUnsupported(e) => e is UnsupportedError;
-
-    Expect.isTrue(map.containsValue("b"));
-    Expect.isTrue(map.containsKey("a"));
-    Expect.equals("b", map["a"]);
-    Expect.throws(() => map["a"] = "c", isUnsupported);
-    Expect.throws(() => map.putIfAbsent("b", () => "e"), isUnsupported);
-    Expect.throws(() => map.remove("a"), isUnsupported);
-    Expect.throws(() => map.clear(), isUnsupported);
-    var count = 0;
-    map.forEach((key, value) => count++);
-    Expect.equals(2, count);
-    Expect.equals(2, map.keys.length);
-    Expect.equals(2, map.values.length);
-    Expect.equals(2, map.length);
-    Expect.isFalse(map.isEmpty);
-    Expect.isTrue(map.isNotEmpty);
-  }
-
-  test(Uri.parse("?a=b&c=d").queryParameters);
-  test(new Uri(queryParameters: {"a": "b", "c": "d"}).queryParameters);
-}
-
-main() {
-  testInvalidArguments();
-  testEncodeQueryComponent();
-  testQueryParameters();
-  testInvalidQueryParameters();
-  testQueryParametersImmutableMap();
-}
diff --git a/tests/corelib/uri_scheme_test.dart b/tests/corelib/uri_scheme_test.dart
deleted file mode 100644
index 1868ca6..0000000
--- a/tests/corelib/uri_scheme_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void testInvalidArguments() {
-  Expect.throws(() => new Uri(scheme: "_"), (e) => e is FormatException);
-  Expect.throws(() => new Uri(scheme: "http_s"), (e) => e is FormatException);
-  Expect.throws(
-      () => new Uri(scheme: "127.0.0.1:80"), (e) => e is FormatException);
-}
-
-void testScheme() {
-  test(String expectedScheme, String expectedUri, String scheme) {
-    var uri = new Uri(scheme: scheme);
-    Expect.equals(expectedScheme, uri.scheme);
-    Expect.equals(expectedUri, uri.toString());
-    uri = Uri.parse("$scheme:");
-    Expect.equals(expectedScheme, uri.scheme);
-    Expect.equals(expectedUri, uri.toString());
-  }
-
-  test("http", "http:", "http");
-  test("http", "http:", "HTTP");
-  test("http", "http:", "hTTP");
-  test("http", "http:", "Http");
-  test("http+ssl", "http+ssl:", "HTTP+ssl");
-  test("urn", "urn:", "urn");
-  test("urn", "urn:", "UrN");
-  test("a123.432", "a123.432:", "a123.432");
-}
-
-main() {
-  testInvalidArguments();
-  testScheme();
-}
diff --git a/tests/corelib/uri_test.dart b/tests/corelib/uri_test.dart
deleted file mode 100644
index 158037a..0000000
--- a/tests/corelib/uri_test.dart
+++ /dev/null
@@ -1,975 +0,0 @@
-// 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.
-
-library uriTest;
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-testUri(String uriText, bool isAbsolute) {
-  var uri = Uri.parse(uriText);
-
-  // Test that parsing a substring works the same as parsing the string.
-  String wrapper = "://@[]:/%?#";
-  var embeddedUri = Uri.parse(
-      "$wrapper$uri$wrapper", wrapper.length, uriText.length + wrapper.length);
-
-  Expect.equals(uri, embeddedUri);
-  Expect.equals(isAbsolute, uri.isAbsolute);
-  Expect.stringEquals(uriText, uri.toString());
-
-  // Test equals and hashCode members.
-  var uri2 = Uri.parse(uriText);
-  Expect.equals(uri, uri2);
-  Expect.equals(uri.hashCode, uri2.hashCode);
-
-  // Test that removeFragment doesn't change anything else.
-  if (uri.hasFragment) {
-    Expect.equals(Uri.parse(uriText.substring(0, uriText.indexOf('#'))),
-        uri.removeFragment());
-  } else {
-    Expect.equals(uri, Uri.parse(uriText + "#fragment").removeFragment());
-  }
-
-  Expect.isTrue(uri.isScheme(uri.scheme));
-  Expect.isTrue(uri.isScheme(uri.scheme.toLowerCase()));
-  Expect.isTrue(uri.isScheme(uri.scheme.toUpperCase()));
-  if (uri.hasScheme) {
-    // Capitalize
-    Expect.isTrue(
-        uri.isScheme(uri.scheme[0].toUpperCase() + uri.scheme.substring(1)));
-    Expect
-        .isFalse(uri.isScheme(uri.scheme.substring(0, uri.scheme.length - 1)));
-    Expect.isFalse(uri.isScheme(uri.scheme + ":"));
-    Expect.isFalse(uri.isScheme(uri.scheme + "\x00"));
-  } else {
-    Expect.isTrue(uri.isScheme(null));
-    Expect.isFalse(uri.isScheme(":"));
-  }
-}
-
-testEncodeDecode(String orig, String encoded) {
-  var e = Uri.encodeFull(orig);
-  Expect.stringEquals(encoded, e);
-  var d = Uri.decodeFull(encoded);
-  Expect.stringEquals(orig, d);
-}
-
-testEncodeDecodeComponent(String orig, String encoded) {
-  var e = Uri.encodeComponent(orig);
-  Expect.stringEquals(encoded, e);
-  var d = Uri.decodeComponent(encoded);
-  Expect.stringEquals(orig, d);
-}
-
-testEncodeDecodeQueryComponent(String orig, String encodedUTF8,
-    String encodedLatin1, String encodedAscii) {
-  var e, d;
-  e = Uri.encodeQueryComponent(orig);
-  Expect.stringEquals(encodedUTF8, e);
-  d = Uri.decodeQueryComponent(encodedUTF8);
-  Expect.stringEquals(orig, d);
-
-  e = Uri.encodeQueryComponent(orig, encoding: UTF8);
-  Expect.stringEquals(encodedUTF8, e);
-  d = Uri.decodeQueryComponent(encodedUTF8, encoding: UTF8);
-  Expect.stringEquals(orig, d);
-
-  e = Uri.encodeQueryComponent(orig, encoding: LATIN1);
-  Expect.stringEquals(encodedLatin1, e);
-  d = Uri.decodeQueryComponent(encodedLatin1, encoding: LATIN1);
-  Expect.stringEquals(orig, d);
-
-  if (encodedAscii != null) {
-    e = Uri.encodeQueryComponent(orig, encoding: ASCII);
-    Expect.stringEquals(encodedAscii, e);
-    d = Uri.decodeQueryComponent(encodedAscii, encoding: ASCII);
-    Expect.stringEquals(orig, d);
-  } else {
-    Expect.throws(() => Uri.encodeQueryComponent(orig, encoding: ASCII),
-        (e) => e is ArgumentError);
-  }
-}
-
-testUriPerRFCs() {
-  // Convert a Uri to a guaranteed "non simple" URI with the same content.
-  toComplex(Uri uri) {
-    Uri complex = new Uri(
-      scheme: uri.scheme,
-      userInfo: uri.hasAuthority ? uri.userInfo : null,
-      host: uri.hasAuthority ? uri.host : null,
-      port: uri.hasAuthority ? uri.port : null,
-      path: uri.path,
-      query: uri.hasQuery ? uri.query : null,
-      fragment: uri.hasFragment ? uri.fragment : null,
-    );
-    assert(complex.toString() == uri.toString());
-    return complex;
-  }
-
-  Uri base;
-  Uri complexBase;
-  // Sets the [base] and [complexBase] to the parse of the URI and a
-  // guaranteed non-simple version of the same URI.
-  setBase(String uri) {
-    base = Uri.parse(uri);
-    complexBase = toComplex(base);
-  }
-
-  testResolve(expect, relative) {
-    String name = "$base << $relative";
-    Expect.stringEquals(expect, base.resolve(relative).toString(), name);
-
-    Expect.stringEquals(expect, complexBase.resolve(relative).toString(),
-        name + " (complex base)");
-  }
-
-  // From RFC 3986.
-  final urisSample = "http://a/b/c/d;p?q";
-  setBase(urisSample);
-
-  testResolve("g:h", "g:h");
-  testResolve("http://a/b/c/g", "g");
-  testResolve("http://a/b/c/g", "./g");
-  testResolve("http://a/b/c/g/", "g/");
-  testResolve("http://a/g", "/g");
-  testResolve("http://g", "//g");
-  testResolve("http://a/b/c/d;p?y", "?y");
-  testResolve("http://a/b/c/g?y", "g?y");
-  testResolve("http://a/b/c/d;p?q#s", "#s");
-  testResolve("http://a/b/c/g#s", "g#s");
-  testResolve("http://a/b/c/g?y#s", "g?y#s");
-  testResolve("http://a/b/c/;x", ";x");
-  testResolve("http://a/b/c/g;x", "g;x");
-  testResolve("http://a/b/c/g;x?y#s", "g;x?y#s");
-  testResolve("http://a/b/c/d;p?q", "");
-  testResolve("http://a/b/c/", ".");
-  testResolve("http://a/b/c/", "./");
-  testResolve("http://a/b/", "..");
-  testResolve("http://a/b/", "../");
-  testResolve("http://a/b/g", "../g");
-  testResolve("http://a/", "../..");
-  testResolve("http://a/", "../../");
-  testResolve("http://a/g", "../../g");
-  testResolve("http://a/g", "../../../g");
-  testResolve("http://a/g", "../../../../g");
-  testResolve("http://a/g", "/./g");
-  testResolve("http://a/g", "/../g");
-  testResolve("http://a/b/c/g.", "g.");
-  testResolve("http://a/b/c/.g", ".g");
-  testResolve("http://a/b/c/g..", "g..");
-  testResolve("http://a/b/c/..g", "..g");
-  testResolve("http://a/b/g", "./../g");
-  testResolve("http://a/b/c/g/", "./g/.");
-  testResolve("http://a/b/c/g/h", "g/./h");
-  testResolve("http://a/b/c/h", "g/../h");
-  testResolve("http://a/b/c/g;x=1/y", "g;x=1/./y");
-  testResolve("http://a/b/c/y", "g;x=1/../y");
-  testResolve("http://a/b/c/g?y/./x", "g?y/./x");
-  testResolve("http://a/b/c/g?y/../x", "g?y/../x");
-  testResolve("http://a/b/c/g#s/./x", "g#s/./x");
-  testResolve("http://a/b/c/g#s/../x", "g#s/../x");
-  testResolve("http:g", "http:g");
-
-  // Additional tests (not from RFC 3986).
-  testResolve("http://a/b/g;p/h;s", "../g;p/h;s");
-
-  setBase("s:a/b");
-  testResolve("s:a/c", "c");
-  testResolve("s:/c", "../c");
-
-  setBase("S:a/b");
-  testResolve("s:a/c", "c");
-  testResolve("s:/c", "../c");
-
-  setBase("s:foo");
-  testResolve("s:bar", "bar");
-  testResolve("s:bar", "../bar");
-
-  setBase("S:foo");
-  testResolve("s:bar", "bar");
-  testResolve("s:bar", "../bar");
-
-  // Special-case (deliberate non-RFC behavior).
-  setBase("foo/bar");
-  testResolve("foo/baz", "baz");
-  testResolve("baz", "../baz");
-
-  setBase("s:/foo");
-  testResolve("s:/bar", "bar");
-  testResolve("s:/bar", "../bar");
-
-  setBase("S:/foo");
-  testResolve("s:/bar", "bar");
-  testResolve("s:/bar", "../bar");
-
-  // Test non-URI base (no scheme, no authority, relative path).
-  setBase("a/b/c?_#_");
-  testResolve("a/b/g?q#f", "g?q#f");
-  testResolve("./", "../..");
-  testResolve("../", "../../..");
-  testResolve("a/b/", ".");
-  testResolve("c", "../../c"); // Deliberate non-RFC behavior.
-  setBase("../../a/b/c?_#_"); // Initial ".." in base url.
-  testResolve("../../a/d", "../d");
-  testResolve("../../d", "../../d");
-  testResolve("../../../d", "../../../d");
-  setBase("../../a/b");
-  testResolve("../../a/d", "d");
-  testResolve("../../d", "../d");
-  testResolve("../../../d", "../../d");
-  setBase("../../a");
-  testResolve("../../d", "d");
-  testResolve("../../../d", "../d");
-  testResolve("../../../../d", "../../d");
-
-  // Absolute path, not scheme or authority.
-  setBase("/a");
-  testResolve("/b", "b");
-  testResolve("/b", "../b");
-  testResolve("/b", "../../b");
-  setBase("/a/b");
-  testResolve("/a/c", "c");
-  testResolve("/c", "../c");
-  testResolve("/c", "../../c");
-
-  setBase("s://h/p?q#f"); // A simple base.
-  // Simple references:
-  testResolve("s2://h2/P?Q#F", "s2://h2/P?Q#F");
-  testResolve("s://h2/P?Q#F", "//h2/P?Q#F");
-  testResolve("s://h/P?Q#F", "/P?Q#F");
-  testResolve("s://h/p?Q#F", "?Q#F");
-  testResolve("s://h/p?q#F", "#F");
-  testResolve("s://h/p?q", "");
-  // Non-simple references:
-  testResolve("s2://I@h2/P?Q#F%20", "s2://I@h2/P?Q#F%20");
-  testResolve("s://I@h2/P?Q#F%20", "//I@h2/P?Q#F%20");
-  testResolve("s://h2/P?Q#F%20", "//h2/P?Q#F%20");
-  testResolve("s://h/P?Q#F%20", "/P?Q#F%20");
-  testResolve("s://h/p?Q#F%20", "?Q#F%20");
-  testResolve("s://h/p?q#F%20", "#F%20");
-
-  setBase("s://h/p1/p2/p3"); // A simple base with a path.
-  testResolve("s://h/p1/p2/", ".");
-  testResolve("s://h/p1/p2/", "./");
-  testResolve("s://h/p1/", "..");
-  testResolve("s://h/p1/", "../");
-  testResolve("s://h/", "../..");
-  testResolve("s://h/", "../../");
-  testResolve("s://h/p1/%20", "../%20");
-  testResolve("s://h/", "../../../..");
-  testResolve("s://h/", "../../../../");
-
-  setBase("s://h/p?q#f%20"); // A non-simpe base.
-  // Simple references:
-  testResolve("s2://h2/P?Q#F", "s2://h2/P?Q#F");
-  testResolve("s://h2/P?Q#F", "//h2/P?Q#F");
-  testResolve("s://h/P?Q#F", "/P?Q#F");
-  testResolve("s://h/p?Q#F", "?Q#F");
-  testResolve("s://h/p?q#F", "#F");
-  testResolve("s://h/p?q", "");
-  // Non-simple references:
-  testResolve("s2://I@h2/P?Q#F%20", "s2://I@h2/P?Q#F%20");
-  testResolve("s://I@h2/P?Q#F%20", "//I@h2/P?Q#F%20");
-  testResolve("s://h2/P?Q#F%20", "//h2/P?Q#F%20");
-  testResolve("s://h/P?Q#F%20", "/P?Q#F%20");
-  testResolve("s://h/p?Q#F%20", "?Q#F%20");
-  testResolve("s://h/p?q#F%20", "#F%20");
-
-  setBase("S://h/p1/p2/p3"); // A non-simple base with a path.
-  testResolve("s://h/p1/p2/", ".");
-  testResolve("s://h/p1/p2/", "./");
-  testResolve("s://h/p1/", "..");
-  testResolve("s://h/p1/", "../");
-  testResolve("s://h/", "../..");
-  testResolve("s://h/", "../../");
-  testResolve("s://h/p1/%20", "../%20");
-  testResolve("s://h/", "../../../..");
-  testResolve("s://h/", "../../../../");
-
-  setBase("../../../"); // A simple relative path.
-  testResolve("../../../a", "a");
-  testResolve("../../../../a", "../a");
-  testResolve("../../../a%20", "a%20");
-  testResolve("../../../../a%20", "../a%20");
-
-  // Tests covering the branches of the merge algorithm in RFC 3986
-  // with both simple and complex base URIs.
-  for (var b in ["s://a/pa/pb?q#f", "s://a/pa/pb?q#f%20"]) {
-    setBase(b);
-
-    // if defined(R.scheme) then ...
-    testResolve("s2://a2/p2?q2#f2", "s2://a2/p2?q2#f2");
-    // else, if defined(R.authority) then ...
-    testResolve("s://a2/p2?q2#f2", "//a2/p2?q2#f2");
-    testResolve("s://a2/?q2#f2", "//a2/../?q2#f2");
-    testResolve("s://a2?q2#f2", "//a2?q2#f2");
-    testResolve("s://a2#f2", "//a2#f2");
-    testResolve("s://a2", "//a2");
-    // else, if (R.path == "") then ...
-    //   if defined(R.query) then
-    testResolve("s://a/pa/pb?q2#f2", "?q2#f2");
-    testResolve("s://a/pa/pb?q2", "?q2");
-    //   else
-    testResolve("s://a/pa/pb?q#f2", "#f2");
-    testResolve("s://a/pa/pb?q", "");
-    // else, if (R.path starts-with "/") then ...
-    testResolve("s://a/p2?q2#f2", "/p2?q2#f2");
-    testResolve("s://a/?q2#f2", "/?q2#f2");
-    testResolve("s://a/#f2", "/#f2");
-    testResolve("s://a/", "/");
-    testResolve("s://a/", "/../");
-    // else ... T.path = merge(Base.path, R.path)
-    // ... remove-dot-fragments(T.path) ...
-    // (Cover the merge function and the remove-dot-fragments functions too).
-
-    // If base has authority and empty path ...
-    var emptyPathBase = b.replaceFirst("/pa/pb", "");
-    setBase(emptyPathBase);
-    testResolve("s://a/p2?q2#f2", "p2?q2#f2");
-    testResolve("s://a/p2#f2", "p2#f2");
-    testResolve("s://a/p2", "p2");
-
-    setBase(b);
-    // otherwise
-    // (Cover both no authority and non-empty path and both).
-    var noAuthEmptyPathBase = b.replaceFirst("//a/pa/pb", "");
-    var noAuthAbsPathBase = b.replaceFirst("//a", "");
-    var noAuthRelPathBase = b.replaceFirst("//a/", "");
-    var noAuthRelSinglePathBase = b.replaceFirst("//a/pa/", "");
-
-    testResolve("s://a/pa/p2?q2#f2", "p2?q2#f2");
-    testResolve("s://a/pa/p2#f2", "p2#f2");
-    testResolve("s://a/pa/p2", "p2");
-
-    setBase(noAuthEmptyPathBase);
-    testResolve("s:p2?q2#f2", "p2?q2#f2");
-    testResolve("s:p2#f2", "p2#f2");
-    testResolve("s:p2", "p2");
-
-    setBase(noAuthAbsPathBase);
-    testResolve("s:/pa/p2?q2#f2", "p2?q2#f2");
-    testResolve("s:/pa/p2#f2", "p2#f2");
-    testResolve("s:/pa/p2", "p2");
-
-    setBase(noAuthRelPathBase);
-    testResolve("s:pa/p2?q2#f2", "p2?q2#f2");
-    testResolve("s:pa/p2#f2", "p2#f2");
-    testResolve("s:pa/p2", "p2");
-
-    setBase(noAuthRelSinglePathBase);
-    testResolve("s:p2?q2#f2", "p2?q2#f2");
-    testResolve("s:p2#f2", "p2#f2");
-    testResolve("s:p2", "p2");
-
-    // Then remove dot segments.
-
-    // A. if input buffer starts with "../" or "./".
-    // This only happens if base has only a single (may be empty) segment and
-    // no slash.
-    setBase(emptyPathBase);
-    testResolve("s://a/p2", "../p2");
-    testResolve("s://a/", "../");
-    testResolve("s://a/", "..");
-    testResolve("s://a/p2", "./p2");
-    testResolve("s://a/", "./");
-    testResolve("s://a/", ".");
-    testResolve("s://a/p2", "../../p2");
-    testResolve("s://a/p2", "../../././p2");
-
-    setBase(noAuthRelSinglePathBase);
-    testResolve("s:p2", "../p2");
-    testResolve("s:", "../");
-    testResolve("s:", "..");
-    testResolve("s:p2", "./p2");
-    testResolve("s:", "./");
-    testResolve("s:", ".");
-    testResolve("s:p2", "../../p2");
-    testResolve("s:p2", "../../././p2");
-
-    // B. if input buffer starts with "/./" or is "/.". replace with "/".
-    // (The URI implementation removes the "." path segments when parsing,
-    // so this case isn't handled by merge).
-    setBase(b);
-    testResolve("s://a/pa/p2", "./p2");
-
-    // C. if input buffer starts with "/../" or is "/..", replace with "/"
-    // and remove preceeding segment.
-    testResolve("s://a/p2", "../p2");
-    var longPathBase = b.replaceFirst("/pb", "/pb/pc/pd");
-    setBase(longPathBase);
-    testResolve("s://a/pa/pb/p2", "../p2");
-    testResolve("s://a/pa/p2", "../../p2");
-    testResolve("s://a/p2", "../../../p2");
-    testResolve("s://a/p2", "../../../../p2");
-    var noAuthRelLongPathBase = b.replaceFirst("//a/pa/pb", "pa/pb/pc/pd");
-    setBase(noAuthRelLongPathBase);
-    testResolve("s:pa/pb/p2", "../p2");
-    testResolve("s:pa/p2", "../../p2");
-    testResolve("s:/p2", "../../../p2");
-    testResolve("s:/p2", "../../../../p2");
-
-    // D. if the input buffer contains only ".." or ".", remove it.
-    setBase(noAuthEmptyPathBase);
-    testResolve("s:", "..");
-    testResolve("s:", ".");
-    setBase(noAuthRelSinglePathBase);
-    testResolve("s:", "..");
-    testResolve("s:", ".");
-  }
-}
-
-void testResolvePath(String expected, String path) {
-  Expect.equals(
-      expected, new Uri(path: '/').resolveUri(new Uri(path: path)).path);
-  Expect.equals("http://localhost$expected",
-      Uri.parse("http://localhost").resolveUri(new Uri(path: path)).toString());
-}
-
-const ALPHA = r"abcdefghijklmnopqrstuvwxuzABCDEFGHIJKLMNOPQRSTUVWXUZ";
-const DIGIT = r"0123456789";
-const PERCENT_ENCODED = "%00%ff";
-const SUBDELIM = r"!$&'()*+,;=";
-
-const SCHEMECHAR = "$ALPHA$DIGIT+-.";
-const UNRESERVED = "$ALPHA$DIGIT-._~";
-const REGNAMECHAR = "$UNRESERVED$SUBDELIM$PERCENT_ENCODED";
-const USERINFOCHAR = "$REGNAMECHAR:";
-
-const PCHAR_NC = "$UNRESERVED$SUBDELIM$PERCENT_ENCODED@";
-const PCHAR = "$PCHAR_NC:";
-const QUERYCHAR = "$PCHAR/?";
-
-void testValidCharacters() {
-  // test that all valid characters are accepted.
-
-  for (var scheme in ["", "$SCHEMECHAR$SCHEMECHAR:"]) {
-    for (var userinfo in [
-      "",
-      "@",
-      "$USERINFOCHAR$USERINFOCHAR@",
-      "$USERINFOCHAR:$DIGIT@"
-    ]) {
-      for (var host in [
-        "", "$REGNAMECHAR$REGNAMECHAR",
-        "255.255.255.256", // valid reg-name.
-        "[ffff::ffff:ffff]", "[ffff::255.255.255.255]"
-      ]) {
-        for (var port in ["", ":", ":$DIGIT$DIGIT"]) {
-          var auth = "$userinfo$host$port";
-          if (auth.isNotEmpty) auth = "//$auth";
-          var paths = ["", "/", "/$PCHAR", "/$PCHAR/"]; // Absolute or empty.
-          if (auth.isNotEmpty) {
-            // Initial segment may be empty.
-            paths..add("//$PCHAR");
-          } else {
-            // Path may begin with non-slash.
-            if (scheme.isEmpty) {
-              // Initial segment must not contain colon.
-              paths
-                ..add(PCHAR_NC)
-                ..add("$PCHAR_NC/$PCHAR")
-                ..add("$PCHAR_NC/$PCHAR/");
-            } else {
-              paths..add(PCHAR)..add("$PCHAR/$PCHAR")..add("$PCHAR/$PCHAR/");
-            }
-          }
-          for (var path in paths) {
-            for (var query in ["", "?", "?$QUERYCHAR"]) {
-              for (var fragment in ["", "#", "#$QUERYCHAR"]) {
-                var uri = "$scheme$auth$path$query$fragment";
-                // Should not throw.
-                var result = Uri.parse(uri);
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-}
-
-void testInvalidUrls() {
-  void checkInvalid(uri) {
-    try {
-      var result = Uri.parse(uri);
-      Expect.fail("Invalid URI `$uri` parsed to $result\n" + dump(result));
-    } on FormatException {
-      // Success.
-    }
-  }
-
-  checkInvalid("s%41://x.x/"); //      No escapes in scheme,
-  //                                   and no colon before slash in path.
-  checkInvalid("1a://x.x/"); //        Scheme must start with letter,
-  //                                   and no colon before slash in path.
-  checkInvalid(".a://x.x/"); //        Scheme must start with letter,
-  //                                   and no colon before slash in path.
-  checkInvalid("_:"); //               Character not valid in scheme,
-  //                                   and no colon before slash in path.
-  checkInvalid(":"); //                Scheme must start with letter,
-  //                                   and no colon before slash in path.
-
-  void checkInvalidReplaced(uri, invalid, replacement) {
-    var source = uri.replaceAll('{}', invalid);
-    var expected = uri.replaceAll('{}', replacement);
-    var result = Uri.parse(source);
-    Expect.equals(expected, "$result", "Source: $source\n${dump(result)}");
-  }
-
-  // Regression test for http://dartbug.com/16081
-  checkInvalidReplaced(
-      "http://www.example.org/red%09ros{}#red)", "\u00e9", "%C3%A9");
-  checkInvalidReplaced("http://r{}sum\{}.example.org", "\u00E9", "%C3%A9");
-
-  // Invalid characters. The characters must be rejected, even if normalizing
-  // the input would cause them to be valid (normalization happens after
-  // validation).
-  var invalidCharsAndReplacements = [
-    "\xe7", "%C3%A7", //            Arbitrary non-ASCII letter
-    " ", "%20", //                  Space, not allowed anywhere.
-    '"', "%22", //                  Quote, not allowed anywhere
-    "<>", "%3C%3E", //              Less/greater-than, not allowed anywhere.
-    "\x7f", "%7F", //               DEL, not allowed anywhere
-    "\xdf", "%C3%9F", //            German lower-case scharf-S.
-    //                              Becomes ASCII when upper-cased.
-    "\u0130", "%C4%B0", //          Latin capital dotted I,
-    //                              becomes ASCII lower-case in Turkish.
-    "%\uFB03", "%25%EF%AC%83", //   % + Ligature ffi,
-    //                              becomes ASCII when upper-cased,
-    //                              should not be read as "%FFI".
-    "\u212a", "%E2%84%AA", //       Kelvin sign. Becomes ASCII when lower-cased.
-    "%1g", "%251g", //              Invalid escape.
-    "\u{10000}", "%F0%90%80%80", // Non-BMP character as surrogate pair.
-  ];
-  for (int i = 0; i < invalidCharsAndReplacements.length; i += 2) {
-    var invalid = invalidCharsAndReplacements[i];
-    var valid = invalidCharsAndReplacements[i + 1];
-    checkInvalid("A{}b:///".replaceAll('{}', invalid));
-    checkInvalid("{}b:///".replaceAll('{}', invalid));
-    checkInvalidReplaced("s://user{}info@x.x/", invalid, valid);
-    checkInvalidReplaced("s://reg{}name/", invalid, valid);
-    checkInvalid("s://regname:12{}45/".replaceAll("{}", invalid));
-    checkInvalidReplaced("s://regname/p{}ath/", invalid, valid);
-    checkInvalidReplaced("/p{}ath/", invalid, valid);
-    checkInvalidReplaced("p{}ath/", invalid, valid);
-    checkInvalidReplaced("s://regname/path/?x{}x", invalid, valid);
-    checkInvalidReplaced("s://regname/path/#x{}x", invalid, valid);
-    checkInvalidReplaced("s://regname/path/??#x{}x", invalid, valid);
-  }
-
-  // At most one @ in userinfo.
-  checkInvalid("s://x@x@x.x/");
-  // No colon in host except before a port.
-  checkInvalid("s://x@x:x/");
-  // At most one port.
-  checkInvalid("s://x@x:9:9/");
-  // At most one #.
-  checkInvalid("s://x/x#foo#bar");
-  // @ not allowed in scheme.
-  checkInvalid("s@://x:9/x?x#x");
-  // ] not allowed alone in host.
-  checkInvalid("s://xx]/");
-  // ] not allowed anywhere except in host.
-  checkInvalid("s://xx/]");
-  checkInvalid("s://xx/?]");
-  checkInvalid("s://xx/#]");
-  checkInvalid("s:/]");
-  checkInvalid("s:/?]");
-  checkInvalid("s:/#]");
-  // IPv6 must be enclosed in [ and ] for Uri.parse.
-  // It is allowed un-enclosed as argument to `Uri(host:...)` because we don't
-  // need to delimit.
-  checkInvalid("s://ffff::ffff:1234/");
-}
-
-void testNormalization() {
-  // The Uri constructor and the Uri.parse function performs RFC-3986
-  // syntax based normalization.
-
-  var uri;
-
-  // Scheme: Only case normalization. Schemes cannot contain escapes.
-  uri = Uri.parse("A:");
-  Expect.equals("a", uri.scheme);
-  uri = Uri.parse("Z:");
-  Expect.equals("z", uri.scheme);
-  uri = Uri.parse("$SCHEMECHAR:");
-  Expect.equals(SCHEMECHAR.toLowerCase(), uri.scheme);
-
-  // Percent escape normalization.
-  // Escapes of unreserved characters are converted to the character,
-  // subject to case normalization in reg-name.
-  for (var i = 0; i < UNRESERVED.length; i++) {
-    var char = UNRESERVED[i];
-    var escape = "%" + char.codeUnitAt(0).toRadixString(16); // all > 0xf.
-
-    uri = Uri.parse("s://xX${escape}xX@yY${escape}yY/zZ${escape}zZ"
-        "?vV${escape}vV#wW${escape}wW");
-    Expect.equals("xX${char}xX", uri.userInfo);
-    Expect.equals("yY${char}yY".toLowerCase(), uri.host);
-    Expect.equals("/zZ${char}zZ", uri.path);
-    Expect.equals("vV${char}vV", uri.query);
-    Expect.equals("wW${char}wW", uri.fragment);
-
-    uri = Uri.parse("s://yY${escape}yY/zZ${escape}zZ"
-        "?vV${escape}vV#wW${escape}wW");
-    Expect.equals("yY${char}yY".toLowerCase(), uri.host);
-    Expect.equals("/zZ${char}zZ", uri.path);
-    Expect.equals("vV${char}vV", uri.query);
-    Expect.equals("wW${char}wW", uri.fragment);
-  }
-
-  // Escapes of reserved characters are kept, but upper-cased.
-  for (var escape in ["%00", "%1f", "%7F", "%fF"]) {
-    uri = Uri.parse("s://xX${escape}xX@yY${escape}yY/zZ${escape}zZ"
-        "?vV${escape}vV#wW${escape}wW");
-    var normalizedEscape = escape.toUpperCase();
-    Expect.equals("xX${normalizedEscape}xX", uri.userInfo);
-    Expect.equals("yy${normalizedEscape}yy", uri.host);
-    Expect.equals("/zZ${normalizedEscape}zZ", uri.path);
-    Expect.equals("vV${normalizedEscape}vV", uri.query);
-    Expect.equals("wW${normalizedEscape}wW", uri.fragment);
-  }
-
-  // Some host normalization edge cases.
-  uri = Uri.parse("x://x%61X%41x%41X%61x/");
-  Expect.equals("xaxaxaxax", uri.host);
-
-  uri = Uri.parse("x://Xxxxxxxx/");
-  Expect.equals("xxxxxxxx", uri.host);
-
-  uri = Uri.parse("x://xxxxxxxX/");
-  Expect.equals("xxxxxxxx", uri.host);
-
-  uri = Uri.parse("x://xxxxxxxx%61/");
-  Expect.equals("xxxxxxxxa", uri.host);
-
-  uri = Uri.parse("x://%61xxxxxxxx/");
-  Expect.equals("axxxxxxxx", uri.host);
-
-  uri = Uri.parse("x://X/");
-  Expect.equals("x", uri.host);
-
-  uri = Uri.parse("x://%61/");
-  Expect.equals("a", uri.host);
-
-  uri = new Uri(scheme: "x", path: "//y");
-  Expect.equals("//y", uri.path);
-  Expect.equals("x:////y", uri.toString());
-
-  uri = new Uri(scheme: "file", path: "//y");
-  Expect.equals("//y", uri.path);
-  Expect.equals("file:////y", uri.toString());
-
-  // File scheme noralizes to always showing authority, even if empty.
-  uri = new Uri(scheme: "file", path: "/y");
-  Expect.equals("file:///y", uri.toString());
-  uri = new Uri(scheme: "file", path: "y");
-  Expect.equals("file:///y", uri.toString());
-
-  // Empty host/query/fragment ensures the delimiter is there.
-  // Different from not being there.
-  Expect.equals("scheme:/", Uri.parse("scheme:/").toString());
-  Expect.equals("scheme:/", new Uri(scheme: "scheme", path: "/").toString());
-
-  Expect.equals("scheme:///?#", Uri.parse("scheme:///?#").toString());
-  Expect.equals(
-      "scheme:///#",
-      new Uri(scheme: "scheme", host: "", path: "/", query: "", fragment: "")
-          .toString());
-}
-
-void testReplace() {
-  var uris = [
-    Uri.parse(""),
-    Uri.parse("a://@:/?#"),
-    Uri.parse("a://:/?#"), // Parsed as simple URI.
-    Uri.parse("a://b@c:4/e/f?g#h"),
-    Uri.parse("a://c:4/e/f?g#h"), // Parsed as simple URI.
-    Uri.parse("$SCHEMECHAR://$REGNAMECHAR:$DIGIT/$PCHAR/$PCHAR"
-        "?$QUERYCHAR#$QUERYCHAR"), // Parsed as simple URI.
-    Uri.parse("$SCHEMECHAR://$USERINFOCHAR@$REGNAMECHAR:$DIGIT/$PCHAR/$PCHAR"
-        "?$QUERYCHAR#$QUERYCHAR"),
-  ];
-  for (var uri1 in uris) {
-    for (var uri2 in uris) {
-      if (identical(uri1, uri2)) continue;
-      var scheme = uri1.scheme;
-      var userInfo = uri1.hasAuthority ? uri1.userInfo : "";
-      var host = uri1.hasAuthority ? uri1.host : null;
-      var port = uri1.hasAuthority ? uri1.port : 0;
-      var path = uri1.path;
-      var query = uri1.hasQuery ? uri1.query : null;
-      var fragment = uri1.hasFragment ? uri1.fragment : null;
-
-      var tmp1 = uri1;
-
-      void test() {
-        var tmp2 = new Uri(
-            scheme: scheme,
-            userInfo: userInfo,
-            host: host,
-            port: port,
-            path: path,
-            query: query == "" ? null : query,
-            queryParameters: query == "" ? {} : null,
-            fragment: fragment);
-        Expect.equals(tmp1, tmp2);
-      }
-
-      test();
-
-      scheme = uri2.scheme;
-      tmp1 = tmp1.replace(scheme: scheme);
-      test();
-
-      if (uri2.hasAuthority) {
-        userInfo = uri2.userInfo;
-        host = uri2.host;
-        port = uri2.port;
-        tmp1 = tmp1.replace(userInfo: userInfo, host: host, port: port);
-        test();
-      }
-
-      path = uri2.path;
-      tmp1 = tmp1.replace(path: path);
-      test();
-
-      if (uri2.hasQuery) {
-        query = uri2.query;
-        tmp1 = tmp1.replace(query: query);
-        test();
-      }
-
-      if (uri2.hasFragment) {
-        fragment = uri2.fragment;
-        tmp1 = tmp1.replace(fragment: fragment);
-        test();
-      }
-    }
-  }
-
-  // Regression test, http://dartbug.com/20814
-  var uri = Uri.parse("/no-authorty/");
-  uri = uri.replace(fragment: "fragment");
-  Expect.isFalse(uri.hasAuthority);
-
-  uri = new Uri(scheme: "foo", path: "bar");
-  uri = uri.replace(queryParameters: {
-    "x": ["42", "37"],
-    "y": ["43", "38"]
-  });
-  var params = uri.queryParametersAll;
-  Expect.equals(2, params.length);
-  Expect.listEquals(["42", "37"], params["x"]);
-  Expect.listEquals(["43", "38"], params["y"]);
-
-  // Test replacing with empty strings.
-  uri = Uri.parse("s://a:1/b/c?d#e");
-  Expect.equals("s://a:1/b/c?d#", uri.replace(fragment: "").toString());
-  Expect.equals("s://a:1/b/c?#e", uri.replace(query: "").toString());
-  Expect.equals("s://a:1?d#e", uri.replace(path: "").toString());
-  Expect.equals("s://:1/b/c?d#e", uri.replace(host: "").toString());
-
-  // Test uri.replace on uri with fragment
-  uri = Uri.parse('http://hello.com/fake#fragment');
-  uri = uri.replace(path: "D/E/E");
-  Expect.stringEquals('http://hello.com/D/E/E#fragment', uri.toString());
-}
-
-void testRegression28359() {
-  var uri = new Uri(path: "//");
-  // This is an invalid path for a URI reference with no authority
-  // since it looks like an authority.
-  // Normalized to have an authority.
-  Expect.equals("////", "$uri");
-  Expect.equals("//", uri.path);
-  Expect.isTrue(uri.hasAuthority, "$uri has authority");
-
-  uri = new Uri(path: "file:///wat");
-  // This is an invalid path for a URI reference with no authority or scheme
-  // since the path looks like it starts with a scheme.
-  // Normalized by escaping the ":".
-  Expect.equals("file%3A///wat", uri.path);
-  Expect.equals("file%3A///wat", "$uri");
-  Expect.isFalse(uri.hasAuthority);
-  Expect.isFalse(uri.hasScheme);
-}
-
-main() {
-  testUri("http:", true);
-  testUri("file:///", true);
-  testUri("file", false);
-  testUri("http://user@example.com:8080/fisk?query=89&hest=silas", true);
-  testUri(
-      "http://user@example.com:8080/fisk?query=89&hest=silas#fragment", false);
-  Expect.stringEquals(
-      "http://user@example.com/a/b/c?query#fragment",
-      new Uri(
-              scheme: "http",
-              userInfo: "user",
-              host: "example.com",
-              port: 80,
-              path: "/a/b/c",
-              query: "query",
-              fragment: "fragment")
-          .toString());
-  Expect.stringEquals(
-      "/a/b/c/",
-      new Uri(
-              scheme: null,
-              userInfo: null,
-              host: null,
-              port: 0,
-              path: "/a/b/c/",
-              query: null,
-              fragment: null)
-          .toString());
-  Expect.stringEquals("file:///", Uri.parse("file:").toString());
-  Expect.stringEquals("file:///", Uri.parse("file:/").toString());
-  Expect.stringEquals("file:///", Uri.parse("file:").toString());
-  Expect.stringEquals("file:///foo", Uri.parse("file:foo").toString());
-  Expect.stringEquals("file:///foo", Uri.parse("file:/foo").toString());
-  Expect.stringEquals("file://foo/", Uri.parse("file://foo").toString());
-
-  testResolvePath("/a/g", "/a/b/c/./../../g");
-  testResolvePath("/a/g", "/a/b/c/./../../g");
-  testResolvePath("/mid/6", "mid/content=5/../6");
-  testResolvePath("/a/b/e", "a/b/c/d/../../e");
-  testResolvePath("/a/b/e", "../a/b/c/d/../../e");
-  testResolvePath("/a/b/e", "./a/b/c/d/../../e");
-  testResolvePath("/a/b/e", "../a/b/./c/d/../../e");
-  testResolvePath("/a/b/e", "./a/b/./c/d/../../e");
-  testResolvePath("/a/b/e/", "./a/b/./c/d/../../e/.");
-  testResolvePath("/a/b/e/", "./a/b/./c/d/../../e/./.");
-  testResolvePath("/a/b/e/", "./a/b/./c/d/../../e/././.");
-
-  testUriPerRFCs();
-
-  Expect.stringEquals(
-      "http://example.com", Uri.parse("http://example.com/a/b/c").origin);
-  Expect.stringEquals(
-      "https://example.com", Uri.parse("https://example.com/a/b/c").origin);
-  Expect.stringEquals("http://example.com:1234",
-      Uri.parse("http://example.com:1234/a/b/c").origin);
-  Expect.stringEquals("https://example.com:1234",
-      Uri.parse("https://example.com:1234/a/b/c").origin);
-  Expect.throws(() => Uri.parse("http:").origin, (e) {
-    return e is StateError;
-  }, "origin for URI with empty host should fail");
-  Expect.throws(
-      () => new Uri(
-              scheme: "http",
-              userInfo: null,
-              host: "",
-              port: 80,
-              path: "/a/b/c",
-              query: "query",
-              fragment: "fragment")
-          .origin, (e) {
-    return e is StateError;
-  }, "origin for URI with empty host should fail");
-  Expect.throws(
-      () => new Uri(
-              scheme: null,
-              userInfo: null,
-              host: "",
-              port: 80,
-              path: "/a/b/c",
-              query: "query",
-              fragment: "fragment")
-          .origin, (e) {
-    return e is StateError;
-  }, "origin for URI with empty scheme should fail");
-  Expect.throws(
-      () => new Uri(
-              scheme: "http",
-              userInfo: null,
-              host: null,
-              port: 80,
-              path: "/a/b/c",
-              query: "query",
-              fragment: "fragment")
-          .origin, (e) {
-    return e is StateError;
-  }, "origin for URI with empty host should fail");
-  Expect.throws(() => Uri.parse("http://:80").origin, (e) {
-    return e is StateError;
-  }, "origin for URI with empty host should fail");
-  Expect.throws(() => Uri.parse("file://localhost/test.txt").origin, (e) {
-    return e is StateError;
-  }, "origin for non-http/https uri should fail");
-
-  // URI encode tests
-  // Create a string with code point 0x10000 encoded as a surrogate pair.
-  var s = UTF8.decode([0xf0, 0x90, 0x80, 0x80]);
-
-  Expect.stringEquals("\u{10000}", s);
-
-  testEncodeDecode("A + B", "A%20+%20B");
-  testEncodeDecode("\uFFFE", "%EF%BF%BE");
-  testEncodeDecode("\uFFFF", "%EF%BF%BF");
-  testEncodeDecode("\uFFFE", "%EF%BF%BE");
-  testEncodeDecode("\uFFFF", "%EF%BF%BF");
-  testEncodeDecode("\x7f", "%7F");
-  testEncodeDecode("\x80", "%C2%80");
-  testEncodeDecode("\u0800", "%E0%A0%80");
-  // All characters not escaped by encodeFull.
-  var unescapedFull = r"abcdefghijklmnopqrstuvwxyz"
-      r"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-      r"0123456789!#$&'()*+,-./:;=?@_~";
-  // ASCII characters escaped by encodeFull:
-  var escapedFull =
-      "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
-      "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
-      r' "%<>[\]^`{|}'
-      "\x7f";
-  var escapedTo = "%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F"
-      "%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F"
-      "%20%22%25%3C%3E%5B%5C%5D%5E%60%7B%7C%7D%7F";
-  testEncodeDecode(unescapedFull, unescapedFull);
-  testEncodeDecode(escapedFull, escapedTo);
-  var nonAscii =
-      "\x80-\xff-\u{100}-\u{7ff}-\u{800}-\u{ffff}-\u{10000}-\u{10ffff}";
-  var nonAsciiEncoding = "%C2%80-%C3%BF-%C4%80-%DF%BF-%E0%A0%80-%EF%BF%BF-"
-      "%F0%90%80%80-%F4%8F%BF%BF";
-  testEncodeDecode(nonAscii, nonAsciiEncoding);
-  testEncodeDecode(s, "%F0%90%80%80");
-  testEncodeDecodeComponent("A + B", "A%20%2B%20B");
-  testEncodeDecodeComponent("\uFFFE", "%EF%BF%BE");
-  testEncodeDecodeComponent("\uFFFF", "%EF%BF%BF");
-  testEncodeDecodeComponent("\uFFFE", "%EF%BF%BE");
-  testEncodeDecodeComponent("\uFFFF", "%EF%BF%BF");
-  testEncodeDecodeComponent("\x7f", "%7F");
-  testEncodeDecodeComponent("\x80", "%C2%80");
-  testEncodeDecodeComponent("\u0800", "%E0%A0%80");
-  testEncodeDecodeComponent(":/@',;?&=+\$", "%3A%2F%40'%2C%3B%3F%26%3D%2B%24");
-  testEncodeDecodeComponent(s, "%F0%90%80%80");
-  testEncodeDecodeQueryComponent("A + B", "A+%2B+B", "A+%2B+B", "A+%2B+B");
-  testEncodeDecodeQueryComponent(
-      "æ ø å", "%C3%A6+%C3%B8+%C3%A5", "%E6+%F8+%E5", null);
-  testEncodeDecodeComponent(nonAscii, nonAsciiEncoding);
-
-  // Invalid URI - : and @ is swapped, port ("host") should be numeric.
-  Expect.throws(() => Uri.parse("file://user@password:host/path"),
-      (e) => e is FormatException);
-
-  testValidCharacters();
-  testInvalidUrls();
-  testNormalization();
-  testReplace();
-  testRegression28359();
-}
-
-String dump(Uri uri) {
-  return "URI: $uri\n"
-      "  Scheme:    ${uri.scheme} #${uri.scheme.length}\n"
-      "  User-info: ${uri.userInfo} #${uri.userInfo.length}\n"
-      "  Host:      ${uri.host} #${uri.host.length}\n"
-      "  Port:      ${uri.port}\n"
-      "  Path:      ${uri.path} #${uri.path.length}\n"
-      "  Query:     ${uri.query} #${uri.query.length}\n"
-      "  Fragment:  ${uri.fragment} #${uri.fragment.length}\n";
-}
diff --git a/tests/corelib_2/corelib_2.status b/tests/corelib_2/corelib_2.status
index 00d5d32..4af23ff 100644
--- a/tests/corelib_2/corelib_2.status
+++ b/tests/corelib_2/corelib_2.status
@@ -60,7 +60,12 @@
 string_from_environment3_test/03: Crash
 
 [ $compiler == dartkb ]
-bigint_test: Skip # Switching from non-intrinsic version to intrinsics on the fly causes invariants "assert(d0 == d1)" and "assert(d == _digitsPerStep)" in bigint_patch.dart to break, which leads to flaky RuntimeError / Timeout failures.
+bigint_from_test: RuntimeError, Pass # Issue 34901
+bigint_test: Skip # Issue 34901
+
+[ $compiler == fasta ]
+bool_from_environment2_test/03: MissingCompileTimeError
+string_from_environment3_test/03: MissingCompileTimeError
 
 [ $compiler == precompiler ]
 bigint_test: Pass, Timeout # --no_intrinsify
@@ -260,10 +265,6 @@
 [ $compiler == dart2js && !$strong ]
 *: SkipByDesign
 
-[ $compiler != dart2js && $fasta ]
-bool_from_environment2_test/03: MissingCompileTimeError
-string_from_environment3_test/03: MissingCompileTimeError
-
 [ $compiler == dartdevc && $runtime != none ]
 compare_to2_test: CompileTimeError # invalid test
 symbol_operator_test: RuntimeError # Issue 29921
diff --git a/tests/corelib_2/map_from_entries_test.dart b/tests/corelib_2/map_from_entries_test.dart
new file mode 100644
index 0000000..ef114a7
--- /dev/null
+++ b/tests/corelib_2/map_from_entries_test.dart
@@ -0,0 +1,47 @@
+// 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:collection';
+
+import 'package:expect/expect.dart';
+
+main() {
+  runTests(<K, V>(entries) => Map<K, V>.fromEntries(entries));
+  runTests(<K, V>(entries) => HashMap<K, V>.fromEntries(entries));
+  runTests(<K, V>(entries) => LinkedHashMap<K, V>.fromEntries(entries));
+}
+
+void runTests(Map<K, V> Function<K, V>(Iterable<MapEntry<K, V>>) ctor) {
+  fromEntriesTest(ctor);
+  emptyIterableTest(ctor);
+  equalElementsTest(ctor);
+}
+
+void fromEntriesTest(Map<K, V> Function<K, V>(Iterable<MapEntry<K, V>>) ctor) {
+  var map = ctor([MapEntry(1, "one"), MapEntry(2, "two")]);
+  Expect.equals(2, map.length);
+  Expect.equals(2, map.keys.length);
+  Expect.equals(2, map.values.length);
+  Expect.equals("one", map[1]);
+  Expect.equals("two", map[2]);
+}
+
+void emptyIterableTest(
+    Map<K, V> Function<K, V>(Iterable<MapEntry<K, V>>) ctor) {
+  var map = ctor([]);
+  Expect.equals(0, map.length);
+  Expect.equals(0, map.keys.length);
+  Expect.equals(0, map.values.length);
+}
+
+void equalElementsTest(
+    Map<K, V> Function<K, V>(Iterable<MapEntry<K, V>>) ctor) {
+  var map =
+      ctor([MapEntry(1, "one"), MapEntry(2, "two"), MapEntry(2, "other")]);
+  Expect.equals(2, map.length);
+  Expect.equals(2, map.keys.length);
+  Expect.equals(2, map.values.length);
+  Expect.equals("one", map[1]);
+  Expect.equals("other", map[2]);
+}
diff --git a/tests/html/Ahem.ttf b/tests/html/Ahem.ttf
deleted file mode 100644
index ac81cb0..0000000
--- a/tests/html/Ahem.ttf
+++ /dev/null
Binary files differ
diff --git a/tests/html/async_cancellingisolate.dart b/tests/html/async_cancellingisolate.dart
deleted file mode 100644
index 18581f0..0000000
--- a/tests/html/async_cancellingisolate.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-library async_cancellingisolate;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-main(message, replyTo) {
-  var command = message.first;
-  expect(command, 'START');
-  var shot = false;
-  var oneshot;
-  var periodic;
-  periodic = new Timer.periodic(const Duration(milliseconds: 10), (timer) {
-    expect(shot, isFalse);
-    shot = true;
-    expect(timer, same(periodic));
-    periodic.cancel();
-    oneshot.cancel();
-    // Wait some more time to be sure callbacks won't be invoked any
-    // more.
-    new Timer(const Duration(milliseconds: 50), () {
-      replyTo.send('DONE');
-    });
-  });
-  // We launch the oneshot timer after the periodic timer. Otherwise a
-  // (very long) context switch could make this test flaky: assume the
-  // oneshot timer is created first and then there is a 30ms context switch.
-  // when the periodic timer is scheduled it would execute after the oneshot.
-  oneshot = new Timer(const Duration(milliseconds: 30), () {
-    fail('Should never be invoked');
-  });
-}
diff --git a/tests/html/async_oneshot.dart b/tests/html/async_oneshot.dart
deleted file mode 100644
index b8c77c7..0000000
--- a/tests/html/async_oneshot.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-main(message, replyTo) {
-  var command = message.first;
-  expect(command, 'START');
-  new Timer(const Duration(milliseconds: 10), () {
-    replyTo.send('DONE');
-  });
-}
diff --git a/tests/html/async_periodictimer.dart b/tests/html/async_periodictimer.dart
deleted file mode 100644
index d01f4c4..0000000
--- a/tests/html/async_periodictimer.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-library async_periodictimer;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-main(message, replyTo) {
-  var command = message.first;
-  expect(command, 'START');
-  int counter = 0;
-  new Timer.periodic(const Duration(milliseconds: 10), (timer) {
-    if (counter == 3) {
-      counter = 1024;
-      timer.cancel();
-      // Wait some more time to be sure callback won't be invoked any
-      // more.
-      new Timer(const Duration(milliseconds: 30), () {
-        replyTo.send('DONE');
-      });
-      return;
-    }
-    assert(counter < 3);
-    counter++;
-  });
-}
diff --git a/tests/html/async_spawnuri_test.dart b/tests/html/async_spawnuri_test.dart
deleted file mode 100644
index 1175a3e..0000000
--- a/tests/html/async_spawnuri_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-library async_spawnuri_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-import 'dart:async';
-import 'dart:isolate';
-import 'dart:html';
-
-// OtherScripts=async_oneshot.dart async_periodictimer.dart async_cancellingisolate.dart
-main() {
-  useHtmlConfiguration();
-
-  test('one shot timer in pure isolate', () {
-    var response = new ReceivePort();
-    var remote = Isolate.spawnUri(
-        Uri.parse('async_oneshot.dart'), ['START'], response.sendPort);
-    remote.catchError((x) => expect("Error in oneshot isolate", x));
-    expect(remote.then((_) => response.first), completion('DONE'));
-  });
-
-  test('periodic timer in pure isolate', () {
-    var response = new ReceivePort();
-    var remote = Isolate.spawnUri(
-        Uri.parse('async_periodictimer.dart'), ['START'], response.sendPort);
-    remote.catchError((x) => expect("Error in periodic timer isolate", x));
-    expect(remote.then((_) => response.first), completion('DONE'));
-  });
-
-  test('cancellation in pure isolate', () {
-    var response = new ReceivePort();
-    var remote = Isolate.spawnUri(Uri.parse('async_cancellingisolate.dart'),
-        ['START'], response.sendPort);
-    remote.catchError((x) => expect("Error in cancelling isolate", x));
-    expect(remote.then((_) => response.first), completion('DONE'));
-  });
-}
diff --git a/tests/html/async_test.dart b/tests/html/async_test.dart
deleted file mode 100644
index f9ebb14..0000000
--- a/tests/html/async_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-library async_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-import 'dart:async';
-import 'dart:isolate';
-import 'dart:html';
-
-import 'async_oneshot.dart' as oneshot_test show main;
-import 'async_periodictimer.dart' as periodictimer_test show main;
-import 'async_cancellingisolate.dart' as cancelling_test show main;
-
-oneshot(message) => oneshot_test.main(message.first, message.last);
-periodicTimerIsolate(message) =>
-    periodictimer_test.main(message.first, message.last);
-cancellingIsolate(message) => cancelling_test.main(message.first, message.last);
-
-main() {
-  useHtmlConfiguration();
-
-  test('one shot timer in pure isolate', () {
-    var response = new ReceivePort();
-    var remote = Isolate.spawn(oneshot, [
-      ['START'],
-      response.sendPort
-    ]);
-    expect(remote.then((_) => response.first), completion('DONE'));
-  });
-
-  test('periodic timer in pure isolate', () {
-    var response = new ReceivePort();
-    var remote = Isolate.spawn(periodicTimerIsolate, [
-      ['START'],
-      response.sendPort
-    ]);
-    expect(remote.then((_) => response.first), completion('DONE'));
-  });
-
-  test('cancellation in pure isolate', () {
-    var response = new ReceivePort();
-    var remote = Isolate.spawn(cancellingIsolate, [
-      ['START'],
-      response.sendPort
-    ]);
-    expect(remote.then((_) => response.first), completion('DONE'));
-  });
-}
diff --git a/tests/html/audiobuffersourcenode_test.dart b/tests/html/audiobuffersourcenode_test.dart
deleted file mode 100644
index 7da731f..0000000
--- a/tests/html/audiobuffersourcenode_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-library AudioBufferSourceNodeTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:web_audio';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(AudioContext.supported, true);
-    });
-  });
-
-  group('functional', () {
-    test('createBuffer', () {
-      if (AudioContext.supported) {
-        var ctx = new AudioContext();
-        AudioBufferSourceNode node = ctx.createBufferSource();
-        expect(node is AudioBufferSourceNode, isTrue);
-        node.start(ctx.currentTime, 0, 2);
-        expect(node is AudioBufferSourceNode, isTrue);
-      }
-    });
-  });
-}
diff --git a/tests/html/audiocontext_test.dart b/tests/html/audiocontext_test.dart
deleted file mode 100644
index 3f84f8e..0000000
--- a/tests/html/audiocontext_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-library AudioContextTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-import 'dart:web_audio';
-import 'dart:async';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  var isAudioContext =
-      predicate((x) => x is AudioContext, 'is an AudioContext');
-
-  group('supported', () {
-    test('supported', () {
-      expect(AudioContext.supported, true);
-    });
-  });
-
-  group('functional', () {
-    var context;
-    if (AudioContext.supported) {
-      context = new AudioContext();
-    }
-
-    test('constructorTest', () {
-      if (AudioContext.supported) {
-        expect(context, isNotNull);
-        expect(context, isAudioContext);
-      }
-    });
-
-    test('audioRenames', () {
-      if (AudioContext.supported) {
-        GainNode gainNode = context.createGain();
-        gainNode.connectNode(context.destination);
-        expect(gainNode is GainNode, isTrue);
-
-        expect(context.createAnalyser() is AnalyserNode, isTrue);
-        expect(context.createChannelMerger() is AudioNode, isTrue);
-        expect(context.createChannelSplitter() is AudioNode, isTrue);
-        expect(context.createOscillator() is OscillatorNode, isTrue);
-        expect(context.createPanner() is PannerNode, isTrue);
-        expect(
-            context.createScriptProcessor(4096) is ScriptProcessorNode, isTrue);
-      }
-    });
-
-    // TODO(9322): This test times out.
-    /*
-    test('onAudioProcess', () {
-      if(AudioContext.supported) {
-        var completer = new Completer<bool>();
-        var context = new AudioContext();
-        var scriptProcessor = context.createScriptProcessor(1024, 1, 2);
-        scriptProcessor.connectNode(context.destination);
-        bool alreadyCalled = false;
-        scriptProcessor.onAudioProcess.listen((event) {
-          if (!alreadyCalled) {
-            completer.complete(true);
-          }
-          alreadyCalled = true;
-        });
-        return completer.future;
-      }
-    });
-    */
-
-    test('oscillatorTypes', () {
-      if (AudioContext.supported) {
-        OscillatorNode oscillator = context.createOscillator();
-        oscillator.connectNode(context.destination);
-
-        oscillator.type = 'sawtooth';
-        expect(oscillator.type, equals('sawtooth'));
-
-        oscillator.type = 'sine';
-        expect(oscillator.type, equals('sine'));
-
-        oscillator.type = 'square';
-        expect(oscillator.type, equals('square'));
-
-        oscillator.type = 'triangle';
-        expect(oscillator.type, equals('triangle'));
-
-        //expect(() => oscillator.type = 7, throws); Firefox does not throw, it
-        //simply ignores this value.
-        expect(oscillator.type, equals('triangle'));
-
-        // Firefox does not throw when it receives invalid values; it simply
-        // ignores them.
-        //expect(() => oscillator.type = ['heap object not a string'], throws);
-        expect(oscillator.type, equals('triangle'));
-      }
-    });
-  });
-}
diff --git a/tests/html/audioelement_test.dart b/tests/html/audioelement_test.dart
deleted file mode 100644
index 41d6326..0000000
--- a/tests/html/audioelement_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-library AudioElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('constructorTest1', () {
-    var audio = new AudioElement();
-    expect(audio, isNotNull);
-    expect(audio is AudioElement, isTrue);
-  });
-
-  test('constructorTest2', () {
-    var audio = new AudioElement('IntentionallyMissingFileURL');
-    expect(audio, isNotNull);
-    expect(audio is AudioElement, isTrue);
-    expect(audio.src, contains('IntentionallyMissingFileURL'));
-  });
-
-  test('canPlayTypeTest', () {
-    var audio = new AudioElement();
-    var canPlay = audio.canPlayType("audio/mp4");
-    expect(canPlay, isNotNull);
-    expect(canPlay is String, isTrue);
-  });
-}
diff --git a/tests/html/b_element_test.dart b/tests/html/b_element_test.dart
deleted file mode 100644
index 65c9dd4..0000000
--- a/tests/html/b_element_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-library BElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('create b', () {
-    new Element.tag('b');
-  });
-}
diff --git a/tests/html/blob_constructor_test.dart b/tests/html/blob_constructor_test.dart
deleted file mode 100644
index dfff981..0000000
--- a/tests/html/blob_constructor_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// 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.
-
-library blob_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  test('basic', () {
-    var b = new Blob([]);
-    expect(b.size, isZero);
-  });
-
-  test('type1', () {
-    // OPTIONALS var b = new Blob(['Harry'], type: 'text');
-    var b = new Blob(['Harry'], 'text');
-    expect(b.size, 5);
-    expect(b.type, 'text');
-  });
-
-  test('endings1', () {
-    // OPTIONALS var b = new Blob(['A\nB\n'], endings: 'transparent');
-    var b = new Blob(['A\nB\n'], null, 'transparent');
-    expect(b.size, 4);
-  });
-
-  test('endings2', () {
-    // OPTIONALS var b = new Blob(['A\nB\n'], endings: 'native');
-    var b = new Blob(['A\nB\n'], null, 'native');
-    expect(b.size, (x) => x == 4 || x == 6, reason: "b.size should be 4 or 6");
-  });
-
-  test('twoStrings', () {
-    // OPTIONALS var b = new Blob(['123', 'xyz'], type: 'text/plain;charset=UTF-8');
-    var b = new Blob(['123', 'xyz'], 'text/plain;charset=UTF-8');
-    expect(b.size, 6);
-  });
-
-  test('fromBlob1', () {
-    var b1 = new Blob([]);
-    var b2 = new Blob([b1]);
-    expect(b2.size, isZero);
-  });
-
-  test('fromBlob2', () {
-    var b1 = new Blob(['x']);
-    var b2 = new Blob([b1, b1]);
-    expect(b1.size, 1);
-    expect(b2.size, 2);
-  });
-
-  test('fromArrayBuffer', () {
-    var a = new Uint8List(100).buffer; // i.e. new ArrayBuffer(100);
-    var b = new Blob([a, a]);
-    expect(b.size, 200);
-  });
-}
diff --git a/tests/html/cache_test.dart b/tests/html/cache_test.dart
deleted file mode 100644
index 4175d46..0000000
--- a/tests/html/cache_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-library CacheTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(ApplicationCache.supported, true);
-    });
-  });
-
-  group('ApplicationCache', () {
-    test('ApplicationCache', () {
-      var expectation = ApplicationCache.supported ? returnsNormally : throws;
-      expect(() {
-        ApplicationCache appCache = window.applicationCache;
-        expect(cacheStatusToString(appCache.status), "UNCACHED");
-      }, expectation);
-    });
-  });
-}
-
-String cacheStatusToString(int status) {
-  switch (status) {
-    case ApplicationCache.UNCACHED: // UNCACHED == 0
-      return 'UNCACHED';
-    case ApplicationCache.IDLE: // IDLE == 1
-      return 'IDLE';
-    case ApplicationCache.CHECKING: // CHECKING == 2
-      return 'CHECKING';
-    case ApplicationCache.DOWNLOADING: // DOWNLOADING == 3
-      return 'DOWNLOADING';
-    case ApplicationCache.UPDATEREADY: // UPDATEREADY == 4
-      return 'UPDATEREADY';
-    case ApplicationCache.OBSOLETE: // OBSOLETE == 5
-      return 'OBSOLETE';
-    default:
-      return 'UNKNOWN CACHE STATUS';
-  }
-  ;
-}
diff --git a/tests/html/callbacks_test.dart b/tests/html/callbacks_test.dart
deleted file mode 100644
index c1e8539..0000000
--- a/tests/html/callbacks_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-library CallbacksTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-  test('RequestAnimationFrameCallback', () {
-    window.requestAnimationFrame((num time) => false);
-  });
-}
diff --git a/tests/html/canvas_pixel_array_type_alias_test.dart b/tests/html/canvas_pixel_array_type_alias_test.dart
deleted file mode 100644
index ecf4d06..0000000
--- a/tests/html/canvas_pixel_array_type_alias_test.dart
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2013, 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 CanvasTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-// We have aliased the legacy type CanvasPixelArray with the new type
-// Uint8ClampedArray by mapping the CanvasPixelArray type tag to
-// Uint8ClampedArray.  It is not a perfect match since CanvasPixelArray is
-// missing the ArrayBufferView members.  These should appear to be null.
-
-var inscrutable;
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  inscrutable = (x) => x;
-
-  int width = 100;
-  int height = 100;
-
-  CanvasElement canvas = new CanvasElement(width: width, height: height);
-  document.body.append(canvas);
-
-  CanvasRenderingContext2D context = canvas.context2D;
-
-  group('basic', () {
-    test('CreateImageData', () {
-      ImageData image = context.createImageData(canvas.width, canvas.height);
-      List<int> data = image.data;
-      // It is legal for the dart2js compiler to believe the type of the native
-      //   ImageData.data and elides the check, so check the type explicitly:
-      expect(inscrutable(data) is List<int>, isTrue,
-          reason: 'canvas array type');
-
-      expect(data, hasLength(40000));
-      checkPixel(data, 0, [0, 0, 0, 0]);
-      checkPixel(data, width * height - 1, [0, 0, 0, 0]);
-
-      data[100] = 200;
-      expect(data[100], equals(200));
-    });
-  });
-
-  group('types1', () {
-    test('isList', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect(inscrutable(data) is List, true);
-    });
-
-    test('isListT_pos', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect(inscrutable(data) is List<int>, true);
-    });
-  });
-
-  group('types2', () {
-    test('isListT_neg', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect(inscrutable(data) is List<String>, false);
-    });
-
-    test('isUint8ClampedList', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect(inscrutable(data) is Uint8ClampedList, true);
-    });
-
-    test('consistent_isUint8ClampedList', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      // Static and dynamic values consistent?  Type inference should be able to
-      // constant-fold 'data is Uint8ClampedList' to 'true'.
-      expect(inscrutable(data) is Uint8ClampedList == data is Uint8ClampedList,
-          isTrue);
-    });
-
-    // TODO(sra): Why does this fail on Dartium? There are two types with the
-    // same print string:
-    //
-    //     Expected: ?:<Uint8ClampedList> Actual: ?:<Uint8ClampedList>
-    /*
-    test('runtimeType', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect(inscrutable(data).runtimeType, Uint8ClampedList);
-    });
-    */
-
-    test('consistent_runtimeType', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect(inscrutable(data).runtimeType == data.runtimeType, isTrue);
-    });
-  });
-
-  group('types2_runtimeTypeName', () {
-    test('runtimeTypeName', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect('${inscrutable(data).runtimeType}', 'Uint8ClampedList');
-    });
-  });
-
-  group('typed_data', () {
-    test('elementSizeInBytes', () {
-      var data = context.createImageData(canvas.width, canvas.height).data;
-      expect(inscrutable(data).elementSizeInBytes, 1);
-    });
-  });
-}
-
-void checkPixel(List<int> data, int offset, List<int> rgba) {
-  offset *= 4;
-  for (var i = 0; i < 4; ++i) {
-    expect(rgba[i], equals(data[offset + i]));
-  }
-}
diff --git a/tests/html/canvas_test.dart b/tests/html/canvas_test.dart
deleted file mode 100644
index bcefc602..0000000
--- a/tests/html/canvas_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-library CanvasTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  CanvasElement canvas;
-  CanvasRenderingContext2D context;
-  int width = 100;
-  int height = 100;
-
-  canvas = new CanvasElement(width: width, height: height);
-  document.body.append(canvas);
-
-  context = canvas.context2D;
-
-  useHtmlConfiguration();
-  test('CreateImageData', () {
-    ImageData image = context.createImageData(canvas.width, canvas.height);
-    List<int> data = image.data;
-
-    expect(data, hasLength(40000));
-    checkPixel(data, 0, [0, 0, 0, 0]);
-    checkPixel(data, width * height - 1, [0, 0, 0, 0]);
-
-    data[100] = 200;
-    expect(data[100], equals(200));
-  });
-
-  test('toDataUrl', () {
-    var canvas = new CanvasElement(width: 100, height: 100);
-    var context = canvas.context2D;
-    context.fillStyle = 'red';
-    context.fill();
-
-    var url = canvas.toDataUrl();
-
-    var img = new ImageElement();
-    img.onLoad.listen(expectAsync((_) {
-      expect(img.complete, true);
-    }));
-    img.onError.listen((_) {
-      fail('URL failed to load.');
-    });
-    img.src = url;
-  });
-}
-
-void checkPixel(List<int> data, int offset, List<int> rgba) {
-  offset *= 4;
-  for (var i = 0; i < 4; ++i) {
-    expect(data[offset + i], equals(rgba[i]));
-  }
-}
diff --git a/tests/html/canvasrenderingcontext2d_test.dart b/tests/html/canvasrenderingcontext2d_test.dart
deleted file mode 100644
index 5bd7025..0000000
--- a/tests/html/canvasrenderingcontext2d_test.dart
+++ /dev/null
@@ -1,749 +0,0 @@
-// 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.
-
-library canvas_rendering_context_2d_test;
-
-import 'dart:html';
-import 'dart:math';
-
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-
-// Some rounding errors in the browsers.
-checkPixel(List<int> pixel, List<int> expected) {
-  expect(pixel[0], closeTo(expected[0], 2));
-  expect(pixel[1], closeTo(expected[1], 2));
-  expect(pixel[2], closeTo(expected[2], 2));
-  expect(pixel[3], closeTo(expected[3], 2));
-}
-
-var canvas;
-var context;
-var otherCanvas;
-var otherContext;
-var video;
-
-void createCanvas() {
-  canvas = new CanvasElement();
-  canvas.width = 100;
-  canvas.height = 100;
-
-  context = canvas.context2D;
-}
-
-void createOtherCanvas() {
-  otherCanvas = new CanvasElement();
-  otherCanvas.width = 10;
-  otherCanvas.height = 10;
-  otherContext = otherCanvas.context2D;
-  otherContext.fillStyle = "red";
-  otherContext.fillRect(0, 0, otherCanvas.width, otherCanvas.height);
-}
-
-void setupFunc() {
-  createCanvas();
-  createOtherCanvas();
-  video = new VideoElement();
-}
-
-void tearDownFunc() {
-  canvas = null;
-  context = null;
-  otherCanvas = null;
-  otherContext = null;
-  video = null;
-}
-
-List<int> readPixel(int x, int y) {
-  var imageData = context.getImageData(x, y, 1, 1);
-  return imageData.data;
-}
-
-/// Returns true if the pixel has some data in it, false otherwise.
-bool isPixelFilled(int x, int y) => readPixel(x, y).any((p) => p != 0);
-
-String pixelDataToString(List<int> data, int x, int y) {
-  return '[${data.join(", ")}]';
-}
-
-String _filled(bool v) => v ? "filled" : "unfilled";
-
-void expectPixelFilled(int x, int y, [bool filled = true]) {
-  expect(isPixelFilled(x, y), filled,
-      reason: 'Pixel at ($x, $y) was expected to'
-          ' be: <${_filled(filled)}> but was: <${_filled(!filled)}> with data: '
-          '${pixelDataToString(readPixel(x, y), x, y)}');
-}
-
-void expectPixelUnfilled(int x, int y) {
-  expectPixelFilled(x, y, false);
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('pixel_manipulation', () {
-    setUp(setupFunc);
-    tearDown(tearDownFunc);
-
-    test('setFillColorRgb', () {
-      context.setFillColorRgb(255, 0, 255, 1);
-      context.fillRect(0, 0, canvas.width, canvas.height);
-      expect(readPixel(2, 2), [255, 0, 255, 255]);
-    });
-
-    test('setFillColorHsl hue', () {
-      context.setFillColorHsl(0, 100, 50);
-      context.fillRect(0, 0, canvas.width, canvas.height);
-      checkPixel(readPixel(2, 2), [255, 0, 0, 255]);
-    });
-
-    test('setFillColorHsl hue 2', () {
-      context.setFillColorHsl(240, 100, 50);
-      context.fillRect(0, 0, canvas.width, canvas.height);
-      checkPixel(readPixel(2, 2), [0, 0, 255, 255]);
-    });
-
-    test('setFillColorHsl sat', () {
-      context.setFillColorHsl(0, 0, 50);
-      context.fillRect(0, 0, canvas.width, canvas.height);
-      checkPixel(readPixel(2, 2), [127, 127, 127, 255]);
-    });
-
-    test('setStrokeColorRgb', () {
-      context.setStrokeColorRgb(255, 0, 255, 1);
-      context.lineWidth = 10;
-      context.strokeRect(0, 0, canvas.width, canvas.height);
-      expect(readPixel(2, 2), [255, 0, 255, 255]);
-    });
-
-    test('setStrokeColorHsl hue', () {
-      context.setStrokeColorHsl(0, 100, 50);
-      context.lineWidth = 10;
-      context.strokeRect(0, 0, canvas.width, canvas.height);
-      expect(readPixel(2, 2), [255, 0, 0, 255]);
-    });
-
-    test('setStrokeColorHsl hue 2', () {
-      context.setStrokeColorHsl(240, 100, 50);
-      context.lineWidth = 10;
-      context.strokeRect(0, 0, canvas.width, canvas.height);
-      expect(readPixel(2, 2), [0, 0, 255, 255]);
-    });
-
-    test('setStrokeColorHsl sat', () {
-      context.setStrokeColorHsl(0, 0, 50);
-      context.lineWidth = 10;
-      context.strokeRect(0, 0, canvas.width, canvas.height);
-      checkPixel(readPixel(2, 2), [127, 127, 127, 255]);
-    });
-
-    test('fillStyle', () {
-      context.fillStyle = "red";
-      context.fillRect(0, 0, canvas.width, canvas.height);
-      checkPixel(readPixel(2, 2), [255, 0, 0, 255]);
-    });
-
-    test('strokeStyle', () {
-      context.strokeStyle = "blue";
-      context.lineWidth = 10;
-      context.strokeRect(0, 0, canvas.width, canvas.height);
-      expect(readPixel(2, 2), [0, 0, 255, 255]);
-    });
-
-    test('fillStyle linearGradient', () {
-      var gradient = context.createLinearGradient(0, 0, 20, 20);
-      gradient.addColorStop(0, 'red');
-      gradient.addColorStop(1, 'blue');
-      context.fillStyle = gradient;
-      context.fillRect(0, 0, canvas.width, canvas.height);
-      expect(context.fillStyle is CanvasGradient, isTrue);
-    });
-
-    test('putImageData', () {
-      context.fillStyle = 'green';
-      context.fillRect(0, 0, canvas.width, canvas.height);
-
-      ImageData expectedData = context.getImageData(0, 0, 10, 10);
-      expectedData.data[0] = 25;
-      expectedData.data[1] = 65;
-      expectedData.data[2] = 255;
-      // Set alpha to 255 to make the pixels show up.
-      expectedData.data[3] = 255;
-
-      context.putImageData(expectedData, 0, 0);
-
-      var resultingData = context.getImageData(0, 0, 10, 10);
-      // Make sure that we read back what we wrote.
-      expect(resultingData.data, expectedData.data);
-    });
-
-    test('putImageData dirty rectangle', () {
-      context.fillStyle = 'green';
-      context.fillRect(0, 0, canvas.width, canvas.height);
-
-      ImageData drawnData = context.getImageData(0, 0, 10, 10);
-      drawnData.data[0] = 25;
-      drawnData.data[1] = 65;
-      drawnData.data[2] = 255;
-      drawnData.data[3] = 255;
-
-      // Draw these pixels to the 2nd pixel.
-      drawnData.data[2 * 4 + 0] = 25;
-      drawnData.data[2 * 4 + 1] = 65;
-      drawnData.data[2 * 4 + 2] = 255;
-      drawnData.data[2 * 4 + 3] = 255;
-
-      // Draw these pixels to the 8th pixel.
-      drawnData.data[7 * 4 + 0] = 25;
-      drawnData.data[7 * 4 + 1] = 65;
-      drawnData.data[7 * 4 + 2] = 255;
-      drawnData.data[7 * 4 + 3] = 255;
-
-      // Use a dirty rectangle to limit what pixels are drawn.
-      context.putImageData(drawnData, 0, 0, 1, 0, 5, 5);
-
-      // Expect the data to be all green, as we skip all drawn pixels.
-      ImageData expectedData = context.createImageData(10, 10);
-      for (int i = 0; i < expectedData.data.length; i++) {
-        switch (i % 4) {
-          case 0:
-            expectedData.data[i] = 0;
-            break;
-          case 1:
-            expectedData.data[i] = 128;
-            break;
-          case 2:
-            expectedData.data[i] = 0;
-            break;
-          case 3:
-            expectedData.data[i] = 255;
-            break;
-        }
-      }
-      // Third pixel was copied.
-      expectedData.data[2 * 4 + 0] = 25;
-      expectedData.data[2 * 4 + 1] = 65;
-      expectedData.data[2 * 4 + 2] = 255;
-      expectedData.data[2 * 4 + 3] = 255;
-
-      // Make sure that our data is all green.
-      var resultingData = context.getImageData(0, 0, 10, 10);
-      expect(resultingData.data, expectedData.data);
-    });
-
-    test('putImageData throws with wrong number of arguments', () {
-      ImageData expectedData = context.getImageData(0, 0, 10, 10);
-
-      // TODO(antonm): in Dartium ArgumentError should be thrown too.
-      expect(() => context.putImageData(expectedData, 0, 0, 1), throws);
-      expect(() => context.putImageData(expectedData, 0, 0, 1, 1), throws);
-      expect(() => context.putImageData(expectedData, 0, 0, 1, 1, 5), throws);
-    });
-  });
-
-  group('arc', () {
-    setUp(setupFunc);
-    tearDown(tearDownFunc);
-
-    test('default arc should be clockwise', () {
-      context.beginPath();
-      final r = 10;
-
-      // Center of arc.
-      final cx = 20;
-      final cy = 20;
-      // Arc centered at (20, 20) with radius 10 will go clockwise
-      // from (20 + r, 20) to (20, 20 + r), which is 1/4 of a circle.
-      context.arc(cx, cy, r, 0, PI / 2);
-
-      context.strokeStyle = 'green';
-      context.lineWidth = 2;
-      context.stroke();
-
-      // Center should not be filled.
-      expectPixelUnfilled(cx, cy);
-
-      // (cx + r, cy) should be filled.
-      expectPixelFilled(cx + r, cy, true);
-      // (cx, cy + r) should be filled.
-      expectPixelFilled(cx, cy + r, true);
-      // (cx - r, cy) should be empty.
-      expectPixelFilled(cx - r, cy, false);
-      // (cx, cy - r) should be empty.
-      expectPixelFilled(cx, cy - r, false);
-
-      // (cx + r/SQRT2, cy + r/SQRT2) should be filled.
-      expectPixelFilled(
-          (cx + r / SQRT2).toInt(), (cy + r / SQRT2).toInt(), true);
-
-      // (cx - r/SQRT2, cy - r/SQRT2) should be empty.
-      expectPixelFilled(
-          (cx - r / SQRT2).toInt(), (cy + r / SQRT2).toInt(), false);
-
-      // (cx + r/SQRT2, cy + r/SQRT2) should be empty.
-      expectPixelFilled(
-          (cx - r / SQRT2).toInt(), (cy - r / SQRT2).toInt(), false);
-
-      // (cx - r/SQRT2, cy - r/SQRT2) should be empty.
-      expectPixelFilled(
-          (cx + r / SQRT2).toInt(), (cy - r / SQRT2).toInt(), false);
-    });
-
-    test('arc anticlockwise', () {
-      context.beginPath();
-      final r = 10;
-
-      // Center of arc.
-      final cx = 20;
-      final cy = 20;
-      // Arc centered at (20, 20) with radius 10 will go anticlockwise
-      // from (20 + r, 20) to (20, 20 + r), which is 3/4 of a circle.
-      // Because of the way arc work, when going anti-clockwise, the end points
-      // are not included, so small values are added to radius to make a little
-      // more than a 3/4 circle.
-      context.arc(cx, cy, r, .1, PI / 2 - .1, true);
-
-      context.strokeStyle = 'green';
-      context.lineWidth = 2;
-      context.stroke();
-
-      // Center should not be filled.
-      expectPixelUnfilled(cx, cy);
-
-      // (cx + r, cy) should be filled.
-      expectPixelFilled(cx + r, cy, true);
-      // (cx, cy + r) should be filled.
-      expectPixelFilled(cx, cy + r, true);
-      // (cx - r, cy) should be filled.
-      expectPixelFilled(cx - r, cy, true);
-      // (cx, cy - r) should be filled.
-      expectPixelFilled(cx, cy - r, true);
-
-      // (cx + r/SQRT2, cy + r/SQRT2) should be empty.
-      expectPixelFilled(
-          (cx + r / SQRT2).toInt(), (cy + r / SQRT2).toInt(), false);
-
-      // (cx - r/SQRT2, cy - r/SQRT2) should be filled.
-      expectPixelFilled(
-          (cx - r / SQRT2).toInt(), (cy + r / SQRT2).toInt(), true);
-
-      // (cx + r/SQRT2, cy + r/SQRT2) should be filled.
-      expectPixelFilled(
-          (cx - r / SQRT2).toInt(), (cy - r / SQRT2).toInt(), true);
-
-      // (cx - r/SQRT2, cy - r/SQRT2) should be filled.
-      expectPixelFilled(
-          (cx + r / SQRT2).toInt(), (cy - r / SQRT2).toInt(), true);
-    });
-  });
-
-  group('drawImage_image_element', () {
-    setUp(setupFunc);
-    tearDown(tearDownFunc);
-    // Draw an image to the canvas from an image element.
-    test('with 3 params', () {
-      var dataUrl = otherCanvas.toDataUrl('image/gif');
-      var img = new ImageElement();
-
-      img.onLoad.listen(expectAsync((_) {
-        context.drawImage(img, 50, 50);
-
-        expectPixelFilled(50, 50);
-        expectPixelFilled(55, 55);
-        expectPixelFilled(59, 59);
-        expectPixelUnfilled(60, 60);
-        expectPixelUnfilled(0, 0);
-        expectPixelUnfilled(70, 70);
-      }));
-      img.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-      img.src = dataUrl;
-    });
-
-    // Draw an image to the canvas from an image element and scale it.
-    test('with 5 params', () {
-      var dataUrl = otherCanvas.toDataUrl('image/gif');
-      var img = new ImageElement();
-
-      img.onLoad.listen(expectAsync((_) {
-        context.drawImageToRect(img, new Rectangle(50, 50, 20, 20));
-
-        expectPixelFilled(50, 50);
-        expectPixelFilled(55, 55);
-        expectPixelFilled(59, 59);
-        expectPixelFilled(60, 60);
-        expectPixelFilled(69, 69);
-        expectPixelUnfilled(70, 70);
-        expectPixelUnfilled(0, 0);
-        expectPixelUnfilled(80, 80);
-      }));
-      img.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-      img.src = dataUrl;
-    });
-
-    // Draw an image to the canvas from an image element and scale it.
-    test('with 9 params', () {
-      otherContext.fillStyle = "blue";
-      otherContext.fillRect(5, 5, 5, 5);
-      var dataUrl = otherCanvas.toDataUrl('image/gif');
-      var img = new ImageElement();
-
-      img.onLoad.listen(expectAsync((_) {
-        // This will take a 6x6 square from the first canvas from position 2,2
-        // and then scale it to a 20x20 square and place it to the second
-        // canvas at 50,50.
-        context.drawImageToRect(img, new Rectangle(50, 50, 20, 20),
-            sourceRect: new Rectangle(2, 2, 6, 6));
-
-        checkPixel(readPixel(50, 50), [255, 0, 0, 255]);
-        checkPixel(readPixel(55, 55), [255, 0, 0, 255]);
-        checkPixel(readPixel(60, 50), [255, 0, 0, 255]);
-        checkPixel(readPixel(65, 65), [0, 0, 255, 255]);
-        checkPixel(readPixel(69, 69), [0, 0, 255, 255]);
-
-        expectPixelFilled(50, 50);
-        expectPixelFilled(55, 55);
-        expectPixelFilled(59, 59);
-        expectPixelFilled(60, 60);
-        expectPixelFilled(69, 69);
-        expectPixelUnfilled(70, 70);
-        expectPixelUnfilled(0, 0);
-        expectPixelUnfilled(80, 80);
-      }));
-      img.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-      img.src = dataUrl;
-    });
-  });
-
-  // These videos and base64 strings are the same video, representing 2
-  // frames of 8x8 red pixels.
-  // The videos were created with:
-  //   convert -size 8x8 xc:red blank1.jpg
-  //   convert -size 8x8 xc:red blank2.jpg
-  //   avconv -f image2  -i "blank%d.jpg" -c:v libx264 small.mp4
-  //   avconv -i small.mp4 small.webm
-  //   python -m base64 -e small.mp4
-  //   python -m base64 -e small.webm
-  var mp4VideoUrl = '/root_dart/tests/html/small.mp4';
-  var webmVideoUrl = '/root_dart/tests/html/small.webm';
-  var mp4VideoDataUrl =
-      'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAA'
-      'AIZnJlZQAAAsdtZGF0AAACmwYF//+X3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlID'
-      'EyMCByMjE1MSBhM2Y0NDA3IC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZW'
-      'Z0IDIwMDMtMjAxMSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG'
-      '9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MToweD'
-      'ExMSBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj'
-      '0wIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MCBjcW09MC'
-      'BkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aH'
-      'JlYWRzPTE4IHNsaWNlZF90aHJlYWRzPTAgbnI9MCBkZWNpbWF0ZT0xIGludGVybGFjZW'
-      'Q9MCBibHVyYXlfY29tcGF0PTAgY29uc3RyYWluZWRfaW50cmE9MCBiZnJhbWVzPTMgYl'
-      '9weXJhbWlkPTAgYl9hZGFwdD0xIGJfYmlhcz0wIGRpcmVjdD0xIHdlaWdodGI9MCBvcG'
-      'VuX2dvcD0xIHdlaWdodHA9MiBrZXlpbnQ9MjUwIGtleWludF9taW49MjUgc2NlbmVjdX'
-      'Q9NDAgaW50cmFfcmVmcmVzaD0wIHJjX2xvb2thaGVhZD00MCByYz1jcmYgbWJ0cmVlPT'
-      'EgY3JmPTUxLjAgcWNvbXA9MC42MCBxcG1pbj0wIHFwbWF4PTY5IHFwc3RlcD00IGlwX3'
-      'JhdGlvPTEuMjUgYXE9MToxLjAwAIAAAAARZYiEB//3aoK5/tP9+8yeuIEAAAAHQZoi2P'
-      '/wgAAAAzxtb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAUAABAAABAAAAAAAAAA'
-      'AAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA'
-      'AAAAAAAAAAAAAAAAAAAAACAAAAGGlvZHMAAAAAEICAgAcAT/////7/AAACUHRyYWsAAA'
-      'BcdGtoZAAAAA8AAAAAAAAAAAAAAAEAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAQAAAA'
-      'AAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAACAAAAAgAAAAAACRlZHRzAAAAHG'
-      'Vsc3QAAAAAAAAAAQAAAFAAAAABAAEAAAAAAchtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAA'
-      'AAAAAZAAAAAlXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSG'
-      'FuZGxlcgAAAAFzbWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZg'
-      'AAAAAAAAABAAAADHVybCAAAAABAAABM3N0YmwAAACXc3RzZAAAAAAAAAABAAAAh2F2Yz'
-      'EAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAACAAIAEgAAABIAAAAAAAAAAEAAAAAAAAAAA'
-      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwFNQAr/4QAYZ01ACuiPyy'
-      '4C2QAAAwABAAADADIPEiUSAQAGaOvAZSyAAAAAGHN0dHMAAAAAAAAAAQAAAAIAAAABAA'
-      'AAFHN0c3MAAAAAAAAAAQAAAAEAAAAYY3R0cwAAAAAAAAABAAAAAgAAAAEAAAAcc3RzYw'
-      'AAAAAAAAABAAAAAQAAAAEAAAABAAAAHHN0c3oAAAAAAAAAAAAAAAIAAAK0AAAACwAAAB'
-      'hzdGNvAAAAAAAAAAIAAAAwAAAC5AAAAGB1ZHRhAAAAWG1ldGEAAAAAAAAAIWhkbHIAAA'
-      'AAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAAK2lsc3QAAAAjqXRvbwAAABtkYXRhAAAAAQ'
-      'AAAABMYXZmNTMuMjEuMQ==';
-  var webmVideoDataUrl =
-      'data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlY'
-      'm1Ch4ECQoWBAhhTgGcBAAAAAAAB/hFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua'
-      '1OsggEsTbuMU6uEHFO7a1OsggHk7AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
-      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
-      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
-      'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAA'
-      'EEq17GDD0JATYCLTGF2ZjUzLjIxLjFXQYtMYXZmNTMuMjEuMXOkkJatuHwTJ7cvFLSzB'
-      'Smxbp5EiYhAVAAAAAAAABZUrmsBAAAAAAAAR64BAAAAAAAAPteBAXPFgQGcgQAitZyDd'
-      'W5khoVWX1ZQOIOBASPjg4QCYloA4AEAAAAAAAASsIEIuoEIVLCBCFS6gQhUsoEDH0O2d'
-      'QEAAAAAAABZ54EAo72BAACA8AIAnQEqCAAIAABHCIWFiIWEiAICAnWqA/gD+gINTRgA/'
-      'v0hRf/kb+PnRv/I4//8WE8DijI//FRAo5WBACgAsQEAARAQABgAGFgv9AAIAAAcU7trA'
-      'QAAAAAAAA67jLOBALeH94EB8YIBfw==';
-  group('drawImage_video_element', () {
-    setUp(setupFunc);
-    tearDown(tearDownFunc);
-
-    test('with 3 params', () {
-      video.onCanPlay.listen(expectAsync((_) {
-        context.drawImage(video, 50, 50);
-
-        expectPixelFilled(50, 50);
-        expectPixelFilled(54, 54);
-        expectPixelFilled(57, 57);
-        expectPixelUnfilled(58, 58);
-        expectPixelUnfilled(0, 0);
-        expectPixelUnfilled(70, 70);
-      }));
-
-      video.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-
-      if (video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') {
-        video.src = webmVideoUrl;
-      } else if (video.canPlayType(
-              'video/mp4; codecs="avc1.4D401E, mp4a.40.2"', null) !=
-          '') {
-        video.src = mp4VideoUrl;
-      } else {
-        window.console.log('Video is not supported on this system.');
-      }
-    });
-
-    test('with 5 params', () {
-      video.onCanPlay.listen(expectAsync((_) {
-        context.drawImageToRect(video, new Rectangle(50, 50, 20, 20));
-
-        expectPixelFilled(50, 50);
-        expectPixelFilled(55, 55);
-        expectPixelFilled(59, 59);
-        expectPixelFilled(60, 60);
-        expectPixelFilled(69, 69);
-        expectPixelUnfilled(70, 70);
-        expectPixelUnfilled(0, 0);
-        expectPixelUnfilled(80, 80);
-      }));
-      video.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-
-      if (video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') {
-        video.src = webmVideoUrl;
-      } else if (video.canPlayType(
-              'video/mp4; codecs="avc1.4D401E, mp4a.40.2"', null) !=
-          '') {
-        video.src = mp4VideoUrl;
-      } else {
-        // TODO(amouravski): Better fallback?
-        window.console.log('Video is not supported on this system.');
-      }
-    });
-
-    test('with 9 params', () {
-      video.onCanPlay.listen(expectAsync((_) {
-        context.drawImageToRect(video, new Rectangle(50, 50, 20, 20),
-            sourceRect: new Rectangle(2, 2, 6, 6));
-
-        expectPixelFilled(50, 50);
-        expectPixelFilled(55, 55);
-        expectPixelFilled(59, 59);
-        expectPixelFilled(60, 60);
-        expectPixelFilled(69, 69);
-        expectPixelUnfilled(70, 70);
-        expectPixelUnfilled(0, 0);
-        expectPixelUnfilled(80, 80);
-      }));
-      video.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-
-      if (video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') {
-        video.src = webmVideoUrl;
-      } else if (video.canPlayType(
-              'video/mp4; codecs="avc1.4D401E, mp4a.40.2"', null) !=
-          '') {
-        video.src = mp4VideoUrl;
-      } else {
-        // TODO(amouravski): Better fallback?
-        window.console.log('Video is not supported on this system.');
-      }
-    });
-  });
-
-  group('drawImage_video_element_dataUrl', () {
-    setUp(setupFunc);
-    tearDown(tearDownFunc);
-
-    test('with 9 params', () {
-      video = new VideoElement();
-      canvas = new CanvasElement();
-      video.onCanPlay.listen(expectAsync((_) {
-        context.drawImageToRect(video, new Rectangle(50, 50, 20, 20),
-            sourceRect: new Rectangle(2, 2, 6, 6));
-
-        expectPixelFilled(50, 50);
-        expectPixelFilled(55, 55);
-        expectPixelFilled(59, 59);
-        expectPixelFilled(60, 60);
-        expectPixelFilled(69, 69);
-        expectPixelUnfilled(70, 70);
-        expectPixelUnfilled(0, 0);
-        expectPixelUnfilled(80, 80);
-      }));
-      video.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-
-      if (video.canPlayType('video/webm; codecs="vp8.0, vorbis"', '') != '') {
-        video.src = webmVideoDataUrl;
-      } else if (video.canPlayType(
-              'video/mp4; codecs="avc1.4D401E, mp4a.40.2"', null) !=
-          '') {
-        video.src = mp4VideoDataUrl;
-      } else {
-        // TODO(amouravski): Better fallback?
-        window.console.log('Video is not supported on this system.');
-      }
-    });
-  });
-
-  group('drawImage_canvas_element', () {
-    setUp(setupFunc);
-    tearDown(tearDownFunc);
-
-    test('with 3 params', () {
-      // Draw an image to the canvas from a canvas element.
-      context.drawImage(otherCanvas, 50, 50);
-
-      expectPixelFilled(50, 50);
-      expectPixelFilled(55, 55);
-      expectPixelFilled(59, 59);
-      expectPixelUnfilled(60, 60);
-      expectPixelUnfilled(0, 0);
-      expectPixelUnfilled(70, 70);
-    });
-    test('with 5 params', () {
-      // Draw an image to the canvas from a canvas element.
-      context.drawImageToRect(otherCanvas, new Rectangle(50, 50, 20, 20));
-
-      expectPixelFilled(50, 50);
-      expectPixelFilled(55, 55);
-      expectPixelFilled(59, 59);
-      expectPixelFilled(60, 60);
-      expectPixelFilled(69, 69);
-      expectPixelUnfilled(70, 70);
-      expectPixelUnfilled(0, 0);
-      expectPixelUnfilled(80, 80);
-    });
-    test('with 9 params', () {
-      // Draw an image to the canvas from a canvas element.
-      otherContext.fillStyle = "blue";
-      otherContext.fillRect(5, 5, 5, 5);
-      context.drawImageToRect(otherCanvas, new Rectangle(50, 50, 20, 20),
-          sourceRect: new Rectangle(2, 2, 6, 6));
-
-      checkPixel(readPixel(50, 50), [255, 0, 0, 255]);
-      checkPixel(readPixel(55, 55), [255, 0, 0, 255]);
-      checkPixel(readPixel(60, 50), [255, 0, 0, 255]);
-      checkPixel(readPixel(65, 65), [0, 0, 255, 255]);
-      checkPixel(readPixel(69, 69), [0, 0, 255, 255]);
-      expectPixelFilled(50, 50);
-      expectPixelFilled(55, 55);
-      expectPixelFilled(59, 59);
-      expectPixelFilled(60, 60);
-      expectPixelFilled(69, 69);
-      expectPixelUnfilled(70, 70);
-      expectPixelUnfilled(0, 0);
-      expectPixelUnfilled(80, 80);
-    });
-
-    test('createImageData', () {
-      var imageData = context.createImageData(15, 15);
-      expect(imageData.width, 15);
-      expect(imageData.height, 15);
-
-      var other = context.createImageDataFromImageData(imageData);
-      expect(other.width, 15);
-      expect(other.height, 15);
-    });
-
-    test('createPattern', () {
-      var pattern = context.createPattern(new CanvasElement(), '');
-      //var pattern2 = context.createPatternFromImage(new ImageElement(), '');
-    });
-  });
-
-  group('fillText', () {
-    setUp(setupFunc);
-    tearDown(tearDownFunc);
-
-    final x = 20;
-    final y = 20;
-
-    test('without maxWidth', () {
-      context.font = '40pt Garamond';
-      context.fillStyle = 'blue';
-
-      // Draw a blue box.
-      context.fillText('█', x, y);
-
-      var width = context.measureText('█').width.ceil();
-
-      checkPixel(readPixel(x, y), [0, 0, 255, 255]);
-      checkPixel(readPixel(x + 10, y), [0, 0, 255, 255]);
-
-      expectPixelUnfilled(x - 10, y);
-      expectPixelFilled(x, y);
-      expectPixelFilled(x + 10, y);
-
-      // The box does not draw after `width` pixels.
-      // Check -2 rather than -1 because this seems
-      // to run into a rounding error on Mac bots.
-      expectPixelFilled(x + width - 2, y);
-      expectPixelUnfilled(x + width + 1, y);
-    });
-
-    test('with maxWidth null', () {
-      context.font = '40pt Garamond';
-      context.fillStyle = 'blue';
-
-      // Draw a blue box with null maxWidth.
-      context.fillText('█', x, y, null);
-
-      var width = context.measureText('█').width.ceil();
-
-      checkPixel(readPixel(x, y), [0, 0, 255, 255]);
-      checkPixel(readPixel(x + 10, y), [0, 0, 255, 255]);
-
-      expectPixelUnfilled(x - 10, y);
-      expectPixelFilled(x, y);
-      expectPixelFilled(x + 10, y);
-
-      // The box does not draw after `width` pixels.
-      // Check -2 rather than -1 because this seems
-      // to run into a rounding error on Mac bots.
-      expectPixelFilled(x + width - 2, y);
-      expectPixelUnfilled(x + width + 1, y);
-    });
-
-    test('with maxWidth defined', () {
-      context.font = '40pt Garamond';
-      context.fillStyle = 'blue';
-
-      final maxWidth = 20;
-
-      // Draw a blue box that's at most 20 pixels wide.
-      context.fillText('█', x, y, maxWidth);
-
-      checkPixel(readPixel(x, y), [0, 0, 255, 255]);
-      checkPixel(readPixel(x + 10, y), [0, 0, 255, 255]);
-
-      // The box does not draw after 20 pixels.
-      expectPixelUnfilled(x - 10, y);
-      expectPixelUnfilled(x + maxWidth + 1, y);
-      expectPixelUnfilled(x + maxWidth + 20, y);
-      expectPixelFilled(x, y);
-      expectPixelFilled(x + 10, y);
-    });
-  });
-}
diff --git a/tests/html/cdata_test.dart b/tests/html/cdata_test.dart
deleted file mode 100644
index 5dc8414..0000000
--- a/tests/html/cdata_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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 cdata_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('remove', () {
-    var div = new Element.html('<div>content</div>');
-    var cdata = div.nodes[0];
-    expect(cdata is CharacterData, true);
-    expect(cdata, isNotNull);
-    expect(div.innerHtml, 'content');
-
-    cdata.remove();
-    expect(div.innerHtml, '');
-  });
-}
diff --git a/tests/html/client_rect_test.dart b/tests/html/client_rect_test.dart
deleted file mode 100644
index 7b086f3..0000000
--- a/tests/html/client_rect_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-library ClientRectTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  var isRectList = predicate((x) => x is DomRectList, 'is a DomRectList');
-
-  insertTestDiv() {
-    var element = new Element.tag('div');
-    element.innerHtml = r'''
-    A large block of text should go here. Click this
-    block of text multiple times to see each line
-    highlight with every click of the mouse button.
-    ''';
-    document.body.append(element);
-    return element;
-  }
-
-  useHtmlConfiguration();
-
-  test("ClientRectList test", () {
-    insertTestDiv();
-    var range = new Range();
-    var rects = range.getClientRects();
-    expect(rects, isRectList);
-  });
-}
diff --git a/tests/html/cross_domain_iframe_script.html b/tests/html/cross_domain_iframe_script.html
deleted file mode 100644
index 9b8ce84..0000000
--- a/tests/html/cross_domain_iframe_script.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-
-<html>
-  <head>
-  	<meta charset="utf-8">
-    <title>cross_domain_iframe_script</title>
-  </head>
-
-  <body>
-    <script type="application/javascript"
-            src="/root_dart/tests/html/cross_domain_iframe_script.js">
-    </script>
-  </body>
-</html>
diff --git a/tests/html/cross_domain_iframe_script.js b/tests/html/cross_domain_iframe_script.js
deleted file mode 100644
index 9dcdc75..0000000
--- a/tests/html/cross_domain_iframe_script.js
+++ /dev/null
@@ -1 +0,0 @@
-window.parent.postMessage('foobar', '*');
\ No newline at end of file
diff --git a/tests/html/cross_domain_iframe_test.dart b/tests/html/cross_domain_iframe_test.dart
deleted file mode 100644
index 9feee15..0000000
--- a/tests/html/cross_domain_iframe_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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 'dart:html';
-
-import 'package:unittest/unittest.dart';
-
-main() {
-  test('cross_domain_iframe', () {
-    var uri = Uri.parse(window.location.href);
-
-    var crossOriginPort = int.parse(uri.queryParameters['crossOriginPort']);
-    var crossOrigin = '${uri.scheme}://${uri.host}:$crossOriginPort';
-    var crossOriginUrl =
-        '$crossOrigin/root_dart/tests/html/cross_domain_iframe_script.html';
-
-    var iframe = new IFrameElement();
-    iframe.src = crossOriginUrl;
-    document.body.append(iframe);
-
-    window.onMessage
-        .where((MessageEvent event) {
-          return event.origin == crossOrigin;
-        })
-        .first
-        .then(expectAsync((MessageEvent event) {
-          expect(event.data, equals('foobar'));
-          expect(event.source, isNotNull);
-        }));
-  });
-}
diff --git a/tests/html/cross_frame_test.dart b/tests/html/cross_frame_test.dart
deleted file mode 100644
index c9f4d86..0000000
--- a/tests/html/cross_frame_test.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-library CrossFrameTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isWindowBase = predicate((x) => x is WindowBase, 'is a WindowBase');
-  var isWindow = predicate((x) => x is Window, 'is a Window');
-  var isLocationBase = predicate((x) => x is LocationBase, 'is a LocationBase');
-  var isLocation = predicate((x) => x is Location, 'is a Location');
-  var isHistoryBase = predicate((x) => x is HistoryBase, 'is a HistoryBase');
-  var isHistory = predicate((x) => x is History, 'is a History');
-
-  final iframe = new Element.tag('iframe');
-  document.body.append(iframe);
-
-  test('window', () {
-    expect(window, isWindow);
-    expect(window.document, document);
-  });
-
-  test('iframe', () {
-    final frameWindow = iframe.contentWindow;
-    expect(frameWindow, isWindowBase);
-    //TODO(gram) The next test should be written as:
-    //    expect(frameWindow, isNot(isWindow));
-    // but that will cause problems now until is/is! work
-    // properly in dart2js instead of always returning true.
-    expect(frameWindow is! Window, isTrue);
-    expect(frameWindow.parent, isWindow);
-
-    // Ensure that the frame's document is inaccessible via window.
-    expect(() => frameWindow.document, throws);
-  });
-
-  test('contentDocument', () {
-    // Ensure that the frame's document is inaccessible.
-    expect(() => iframe.contentDocument, throws);
-  });
-
-  test('location', () {
-    expect(window.location, isLocation);
-    final frameLocation = iframe.contentWindow.location;
-    expect(frameLocation, isLocationBase);
-    // TODO(gram) Similar to the above, the next test should be:
-    //     expect(frameLocation, isNot(isLocation));
-    expect(frameLocation is! Location, isTrue);
-
-    expect(() => frameLocation.href, throws);
-    expect(() => frameLocation.hash, throws);
-
-    final frameParentLocation = iframe.contentWindow.parent.location;
-    expect(frameParentLocation, isLocation);
-  });
-
-  test('history', () {
-    expect(window.history, isHistory);
-    final frameHistory = iframe.contentWindow.history;
-    expect(frameHistory, isHistoryBase);
-    // See earlier comments.
-    //expect(frameHistory, isNot(isHistory));
-    expect(frameHistory is! History, isTrue);
-
-    // Valid methods.
-    frameHistory.forward();
-
-    expect(() => frameHistory.length, throws);
-
-    final frameParentHistory = iframe.contentWindow.parent.history;
-    expect(frameParentHistory, isHistory);
-  });
-}
diff --git a/tests/html/crypto_test.dart b/tests/html/crypto_test.dart
deleted file mode 100644
index 1cdc5a9..0000000
--- a/tests/html/crypto_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2013, 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 crypto_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(Crypto.supported, true);
-    });
-  });
-
-  group('functional', () {
-    if (Crypto.supported) {
-      // This will actually pass on FF since it has a Crypto API, but it is
-      // incompatible.
-      test('exists', () {
-        var crypto = window.crypto;
-        expect(crypto is Crypto, isTrue);
-      });
-
-      test('successful call', () {
-        var crypto = window.crypto;
-        var data = new Uint8List(100);
-        expect(data.every((e) => e == 0), isTrue);
-        crypto.getRandomValues(data);
-        // In theory this is flaky. However, in practice you will get 100 zeroes
-        // in a row from a cryptographically secure random number generator so
-        // rarely that we don't have to worry about it.
-        expect(data.any((e) => e != 0), isTrue);
-      });
-
-      test('type mismatch', () {
-        var crypto = window.crypto;
-        var data = new Float32List(100);
-        expect(() {
-          crypto.getRandomValues(data);
-        }, throws, reason: 'Only typed array views with integer types allowed');
-      });
-    }
-  });
-}
diff --git a/tests/html/css_rule_list_test.dart b/tests/html/css_rule_list_test.dart
deleted file mode 100644
index 14c06b7..0000000
--- a/tests/html/css_rule_list_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-library CssRuleListTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  var isCssRuleList =
-      predicate((x) => x is List<CssRule>, 'is a List<CssRule>');
-
-  useHtmlConfiguration();
-
-  test("ClientRectList test", () {
-    var sheet = document.styleSheets[0];
-    List<CssRule> rulesList = sheet.cssRules;
-    expect(rulesList, isCssRuleList);
-  });
-}
diff --git a/tests/html/css_test.dart b/tests/html/css_test.dart
deleted file mode 100644
index ca74851..0000000
--- a/tests/html/css_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-library CssTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supportsPointConversions', () {
-    test('supported', () {
-      expect(Window.supportsPointConversions, true);
-    });
-  });
-
-  group('functional', () {
-    test('DomPoint', () {
-      var expectation =
-          Window.supportsPointConversions ? returnsNormally : throws;
-      expect(() {
-        Element element = new Element.tag('div');
-        element.attributes['style'] = '''
-          position: absolute;
-          width: 60px;
-          height: 100px;
-          left: 0px;
-          top: 0px;
-          background-color: red;
-          -webkit-transform: translate3d(250px, 100px, 0px);
-          -moz-transform: translate3d(250px, 100px, 0px);
-          ''';
-        document.body.append(element);
-
-        var elemRect = element.getBoundingClientRect();
-
-        checkPoint(250, 100, new Point(elemRect.left, elemRect.top));
-        checkPoint(310, 200, new Point(elemRect.right, elemRect.bottom));
-      }, expectation);
-    });
-  });
-}
-
-void checkPoint(expectedX, expectedY, Point point) {
-  expect(point.x.round(), equals(expectedX), reason: 'Wrong point.x');
-  expect(point.y.round(), equals(expectedY), reason: 'Wrong point.y');
-}
diff --git a/tests/html/cssstyledeclaration_test.dart b/tests/html/cssstyledeclaration_test.dart
deleted file mode 100644
index 9f69daf..0000000
--- a/tests/html/cssstyledeclaration_test.dart
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright (c) 2011, 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 CssStyleDeclarationTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:async';
-import 'utils.dart';
-
-main() {
-  useHtmlConfiguration();
-
-  createTestStyle() {
-    return new CssStyleDeclaration.css("""
-      color: blue;
-      width: 2px !important;
-    """);
-  }
-
-  ;
-
-  test('default constructor is empty', () {
-    var style = new CssStyleDeclaration();
-    expect(style.cssText, isEmpty);
-    expect(style.getPropertyPriority('color'), isEmpty);
-    expect(style.item(0), isEmpty);
-    expect(style, hasLength(0));
-    // These assertions throw a UnimplementedError in dartium:
-    // expect(style.parentRule, isNull);
-    // expect(style.getPropertyCssValue('color'), isNull);
-    // expect(style.getPropertyShorthand('color'), isNull);
-  });
-
-  test('length is wrapped', () {
-    expect(createTestStyle(), hasLength(2));
-  });
-
-  test('getPropertyPriority is wrapped', () {
-    var style = createTestStyle();
-    expect(style.getPropertyPriority("color"), isEmpty);
-    expect(style.getPropertyPriority("width"), equals("important"));
-  });
-
-  test('removeProperty is wrapped', () {
-    var style = createTestStyle();
-    style.removeProperty("width");
-    expect(style.cssText.trim(), equals("color: blue;"));
-  });
-
-  test('CSS property empty getters and setters', () {
-    var style = createTestStyle();
-    expect(style.border, equals(""));
-
-    style.border = "1px solid blue";
-    style.border = "";
-    expect(style.border, equals(""));
-
-    style.border = "1px solid blue";
-    style.border = null;
-    expect(style.border, equals(""));
-  });
-
-  test('CSS property getters and setters', () {
-    var style = createTestStyle();
-    expect(style.color, equals("blue"));
-    expect(style.width, equals("2px"));
-
-    style.color = "red";
-    style.transform = "translate(10px, 20px)";
-
-    expect(style.color, equals("red"));
-    expect(style.transform, equals("translate(10px, 20px)"));
-  });
-
-  test('Browser prefixes', () {
-    var element = new DivElement();
-    element.style.transform = 'translateX(10px)';
-    document.body.children.add(element);
-
-    var style = element.getComputedStyle();
-    // Some browsers will normalize this, so it'll be a matrix rather than
-    // the original string. Just check that it's something other than null.
-    expect(style.transform.length, greaterThan(3));
-  });
-
-  // IE9 requires an extra poke for some properties to get applied.
-  test('IE9 Invalidation', () {
-    var element = new DivElement();
-    document.body.children.add(element);
-
-    // Need to wait one tick after the element has been added to the page.
-    new Timer(const Duration(milliseconds: 10), expectAsync(() {
-      element.style.textDecoration = 'underline';
-      var style = element.getComputedStyle();
-      expect(style.textDecoration, contains('underline'));
-    }));
-  });
-
-  test('Invalid values', () {
-    var element = new DivElement();
-    // Should not throw an error.
-    element.style.background = 'some_bad_value';
-  });
-
-  test('css multi get', () {
-    var listElement = new Element.html(
-        '<ul class="foo">'
-        '<li class="bar" style="background-color: red; border-left: 10px;">'
-        '<li class="baz" style="background-color: black;>'
-        '<li class="baz classy" style="background-color: blue; ">'
-        '</ul>',
-        treeSanitizer: new NullTreeSanitizer());
-    document.documentElement.children.add(listElement);
-
-    var elements = document.querySelectorAll('li');
-    expect(elements.style.backgroundColor, equals('red'));
-    expect(elements.style.borderLeftWidth, equals('10px'));
-    elements = document.querySelectorAll('.baz');
-    expect(elements.style.backgroundColor, equals('black'));
-    expect(elements.style.borderLeftWidth, equals(''));
-    elements = document.querySelectorAll('.bar');
-    expect(elements.style.backgroundColor, equals('red'));
-  });
-
-  test('css multi set', () {
-    var listElement = new Element.html(
-        '<ul class="foo">'
-        '<li class="bar" style="background-color: red; border-left: 10px;">'
-        '<li class="baz" style="background-color: black;>'
-        '<li class="baz" id="wat" style="background-color: blue; ">'
-        '</ul>',
-        treeSanitizer: new NullTreeSanitizer());
-    document.documentElement.children.add(listElement);
-
-    var elements = document.querySelectorAll('li');
-    elements.style.backgroundColor = 'green';
-    expect(elements.style.backgroundColor, equals('green'));
-    expect(elements.style.borderLeftWidth, equals('10px'));
-
-    elements = document.querySelectorAll('.baz');
-    expect(elements.style.backgroundColor, equals('green'));
-    elements.style.backgroundColor = 'yellow';
-    expect(elements.style.backgroundColor, equals('yellow'));
-    expect(elements.style.borderLeftWidth, equals(''));
-
-    elements = document.querySelectorAll('.bar');
-    expect(elements.style.backgroundColor, equals('green'));
-    elements = document.querySelectorAll('#wat');
-    expect(elements.style.backgroundColor, equals('yellow'));
-
-    elements.style.borderLeftWidth = '18px';
-    expect(elements.style.borderLeftWidth, equals('18px'));
-    elements = document.querySelectorAll('li');
-    expect(elements.style.borderLeftWidth, equals('10px'));
-  });
-
-  test('supports property', () {
-    expect(document.body.style.supportsProperty('bogus-property'), false);
-    expect(document.body.style.supportsProperty('background'), true);
-    expect(document.body.style.supportsProperty('borderBottomWidth'), true);
-    expect(document.body.style.supportsProperty('animation'), true);
-  });
-}
diff --git a/tests/html/custom/attribute_changed_callback_test.dart b/tests/html/custom/attribute_changed_callback_test.dart
deleted file mode 100644
index 223408f..0000000
--- a/tests/html/custom/attribute_changed_callback_test.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2013, 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 attribute_changed_callback_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:js' as js;
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-import '../utils.dart';
-
-class A extends HtmlElement {
-  static final tag = 'x-a';
-  factory A() => new Element.tag(tag);
-  A.created() : super.created();
-
-  static var attributeChangedInvocations = 0;
-
-  void attributeChanged(name, oldValue, newValue) {
-    attributeChangedInvocations++;
-  }
-}
-
-class B extends HtmlElement {
-  static final tag = 'x-b';
-  factory B() => new Element.tag(tag);
-  B.created() : super.created() {
-    invocations.add('created');
-  }
-
-  static var invocations = [];
-
-  Completer completer;
-
-  void attributeChanged(name, oldValue, newValue) {
-    invocations.add('$name: $oldValue => $newValue');
-    if (completer != null) {
-      completer.complete('value changed to $newValue');
-      completer = null;
-    }
-  }
-}
-
-// Pump custom events polyfill events.
-void customElementsTakeRecords() {
-  if (js.context.hasProperty('CustomElements')) {
-    js.context['CustomElements'].callMethod('takeRecords');
-  }
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  // Adapted from Blink's fast/dom/custom/attribute-changed-callback test.
-
-  var registered = false;
-  setUp(() => customElementsReady.then((_) {
-        if (!registered) {
-          registered = true;
-          document.registerElement(A.tag, A);
-          document.registerElement(B.tag, B);
-        }
-      }));
-
-  group('fully_supported', () {
-    test('transfer attribute changed callback', () {
-      var element = new A();
-
-      element.attributes['a'] = 'b';
-      expect(A.attributeChangedInvocations, 1);
-    });
-
-    test('add, change and remove an attribute', () {
-      var b = new B();
-
-      B.invocations = [];
-      b.attributes['data-s'] = 't';
-      expect(B.invocations, ['data-s: null => t']);
-
-      b.attributes['data-v'] = 'w';
-      B.invocations = [];
-      b.attributes['data-v'] = 'x';
-      expect(B.invocations, ['data-v: w => x']);
-
-      B.invocations = [];
-      b.attributes['data-v'] = 'x';
-      expect(B.invocations, []);
-
-      b.attributes.remove('data-v');
-      expect(B.invocations, ['data-v: x => null']);
-    });
-
-    test('add, change ID', () {
-      B.invocations = [];
-
-      var b = new B();
-      var completer = new Completer();
-      b.completer = completer;
-      b.id = 'x';
-      return completer.future
-          .then((_) => expect(B.invocations, ['created', 'id: null => x']))
-          .then((_) {
-        B.invocations = [];
-        var secondCompleter = new Completer();
-        b.completer = secondCompleter;
-        b.attributes.remove('id');
-        return secondCompleter.future;
-      }).then((_) => expect(B.invocations, ['id: x => null']));
-    });
-  });
-
-  group('unsupported_on_polyfill', () {
-    // If these tests start passing, don't remove the status suppression. Move
-    // the tests to the fullYy_supported group.
-
-    test('add, change classes', () {
-      var b = new B();
-
-      B.invocations = [];
-      b.classes.toggle('u');
-      expect(B.invocations, ['class: null => u']);
-    });
-  });
-}
diff --git a/tests/html/custom/attribute_changed_callback_test.html b/tests/html/custom/attribute_changed_callback_test.html
deleted file mode 100644
index 8237473..0000000
--- a/tests/html/custom/attribute_changed_callback_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> attribute_changed_callback_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running attribute_changed_callback_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/constructor_calls_created_synchronously_test.dart b/tests/html/custom/constructor_calls_created_synchronously_test.dart
deleted file mode 100644
index 1aaa718..0000000
--- a/tests/html/custom/constructor_calls_created_synchronously_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2013, 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 constructor_calls_created_synchronously_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import '../utils.dart';
-import 'dart:mirrors';
-
-class A extends HtmlElement {
-  static final tag = 'x-a';
-  factory A() => new Element.tag(tag);
-  A.created() : super.created() {
-    ncallbacks++;
-  }
-
-  static int ncallbacks = 0;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Adapted from Blink's
-  // fast/dom/custom/constructor-calls-created-synchronously test.
-
-  var registered = false;
-  setUp(() {
-    return customElementsReady.then((_) {
-      if (!registered) {
-        registered = true;
-        document.registerElement(A.tag, A);
-      }
-    });
-  });
-
-  test('createdCallback', () {
-    var x = new A();
-    expect(A.ncallbacks, 1);
-  });
-
-  test('clone node', () {
-    A.ncallbacks = 0;
-
-    var a = new A();
-    expect(A.ncallbacks, 1);
-    var b = a.clone(false);
-    expect(A.ncallbacks, 2);
-    expect(b is A, isTrue);
-  });
-
-  test("can extend elements that don't have special prototypes", () {
-    document.registerElement('fancy-section', FancySection,
-        extendsTag: 'section');
-    var fancy = document.createElement('section', 'fancy-section');
-    expect(fancy is FancySection, true, reason: 'fancy-section was registered');
-    expect(fancy.wasCreated, true, reason: 'FancySection ctor was called');
-  });
-}
-
-class FancySection extends HtmlElement {
-  bool wasCreated = false;
-  FancySection.created() : super.created() {
-    wasCreated = true;
-  }
-}
diff --git a/tests/html/custom/constructor_calls_created_synchronously_test.html b/tests/html/custom/constructor_calls_created_synchronously_test.html
deleted file mode 100644
index c18be7d..0000000
--- a/tests/html/custom/constructor_calls_created_synchronously_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> entered_left_view_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running entered_left_view_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/created_callback_test.dart b/tests/html/custom/created_callback_test.dart
deleted file mode 100644
index 30602c9..0000000
--- a/tests/html/custom/created_callback_test.dart
+++ /dev/null
@@ -1,301 +0,0 @@
-// Copyright (c) 2013, 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 created_callback_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:js' as js;
-import '../utils.dart';
-
-class A extends HtmlElement {
-  static final tag = 'x-a';
-  factory A() => new Element.tag(tag);
-  A.created() : super.created() {
-    createdInvocations++;
-  }
-
-  static int createdInvocations = 0;
-}
-
-class B extends HtmlElement {
-  static final tag = 'x-b';
-  factory B() => new Element.tag(tag);
-  B.created() : super.created();
-}
-
-class C extends HtmlElement {
-  static final tag = 'x-c';
-  factory C() => new Element.tag(tag);
-  C.created() : super.created() {
-    createdInvocations++;
-
-    if (this.id != 'u') {
-      return;
-    }
-
-    var t = div.querySelector('#t');
-    var v = div.querySelector('#v');
-    var w = div.querySelector('#w');
-
-    expect(querySelector('x-b:not(:unresolved)'), this);
-    expect(querySelectorAll(':unresolved'), [v, w]);
-
-    // As per:
-    // http://www.w3.org/TR/2013/WD-custom-elements-20130514/#serializing-and-parsing
-    // creation order is t, u, v, w (postorder).
-    expect(t is C, isTrue);
-    // Note, this is different from JavaScript where this would be false.
-    expect(v is C, isTrue);
-  }
-
-  static int createdInvocations = 0;
-  static var div;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Adapted from Blink's
-  // fast/dom/custom/created-callback test.
-
-  var registered = false;
-  setUp(() {
-    return customElementsReady.then((_) {
-      if (!registered) {
-        registered = true;
-        document.registerElement(B.tag, B);
-        document.registerElement(C.tag, C);
-        ErrorConstructorElement.register();
-      }
-    });
-  });
-
-  test('transfer created callback', () {
-    document.registerElement(A.tag, A);
-    var x = new A();
-    expect(A.createdInvocations, 1);
-  });
-
-  test('unresolved and created callback timing', () {
-    var div = new DivElement();
-    C.div = div;
-    div.setInnerHtml(
-        """
-<x-c id="t"></x-c>
-<x-b id="u"></x-b>
-<x-c id="v"></x-c>
-<x-b id="w"></x-b>
-""",
-        treeSanitizer: NodeTreeSanitizer.trusted);
-
-    upgradeCustomElements(div);
-
-    expect(C.createdInvocations, 2);
-    expect(div.querySelector('#w') is B, isTrue);
-  });
-
-  test('nesting of constructors', NestedElement.test);
-
-  test('access while upgrading gets unupgraded element',
-      AccessWhileUpgradingElement.test);
-
-  test('cannot call created constructor', () {
-    expect(() {
-      new B.created();
-    }, throws);
-  });
-
-  test('cannot register without created', () {
-    expect(() {
-      document.registerElement(
-          MissingCreatedElement.tag, MissingCreatedElement);
-    }, throws);
-  });
-
-  test('throw on createElement does not upgrade', () {
-    ErrorConstructorElement.callCount = 0;
-
-    var e;
-    expectGlobalError(() {
-      e = new Element.tag(ErrorConstructorElement.tag);
-    });
-    expect(ErrorConstructorElement.callCount, 1);
-    expect(e is HtmlElement, isTrue);
-    expect(e is ErrorConstructorElement, isFalse);
-
-    var dummy = new DivElement();
-    dummy.append(e);
-    e = dummy.firstChild;
-    expect(ErrorConstructorElement.callCount, 1);
-  });
-
-  test('throw on innerHtml does not upgrade', () {
-    ErrorConstructorElement.callCount = 0;
-
-    var dummy = new DivElement();
-    var tag = ErrorConstructorElement.tag;
-    expectGlobalError(() {
-      dummy.setInnerHtml('<$tag></$tag>',
-          treeSanitizer: NodeTreeSanitizer.trusted);
-    });
-
-    expect(ErrorConstructorElement.callCount, 1);
-
-    var e = dummy.firstChild;
-    // Accessing should not re-run the constructor.
-    expect(ErrorConstructorElement.callCount, 1);
-    expect(e is HtmlElement, isTrue);
-    expect(e is ErrorConstructorElement, isFalse);
-  });
-
-  test('cannot register created with params', () {
-    expect(() {
-      document.registerElement(
-          'x-created-with-params', CreatedWithParametersElement);
-    }, throws);
-  });
-
-  test('created cannot be called from nested constructor',
-      NestedCreatedConstructorElement.test);
-
-  // TODO(vsm): Port additional test from upstream here:
-  // http://src.chromium.org/viewvc/blink/trunk/LayoutTests/fast/dom/custom/created-callback.html?r1=156141&r2=156185
-}
-
-class NestedElement extends HtmlElement {
-  static final tag = 'x-nested';
-
-  final Element b = new B();
-
-  factory NestedElement() => new Element.tag(tag);
-  NestedElement.created() : super.created();
-
-  static void register() {
-    document.registerElement(tag, NestedElement);
-  }
-
-  static void test() {
-    register();
-
-    var e = new NestedElement();
-    expect(e.b, isNotNull);
-    expect(e.b is B, isTrue);
-    expect(e is NestedElement, isTrue);
-  }
-}
-
-class AccessWhileUpgradingElement extends HtmlElement {
-  static final tag = 'x-access-while-upgrading';
-
-  static Element upgradingContext;
-  static Element upgradingContextChild;
-
-  final foo = runInitializerCode();
-
-  factory AccessWhileUpgradingElement() => new Element.tag(tag);
-  AccessWhileUpgradingElement.created() : super.created();
-
-  static runInitializerCode() {
-    upgradingContextChild = upgradingContext.firstChild;
-
-    return 666;
-  }
-
-  static void register() {
-    document.registerElement(tag, AccessWhileUpgradingElement);
-  }
-
-  static void test() {
-    register();
-
-    upgradingContext = new DivElement();
-    upgradingContext.setInnerHtml('<$tag></$tag>',
-        treeSanitizer: new NullTreeSanitizer());
-    var child = upgradingContext.firstChild;
-
-    expect(child.foo, 666);
-    expect(upgradingContextChild is HtmlElement, isFalse);
-    expect(upgradingContextChild is AccessWhileUpgradingElement, isFalse,
-        reason: 'Elements accessed while upgrading should not be upgraded.');
-  }
-}
-
-class MissingCreatedElement extends HtmlElement {
-  static final tag = 'x-missing-created';
-
-  factory MissingCreatedElement() => new Element.tag(tag);
-}
-
-class ErrorConstructorElement extends HtmlElement {
-  static final tag = 'x-throws-in-constructor';
-  static int callCount = 0;
-
-  factory ErrorConstructorElement() => new Element.tag(tag);
-
-  ErrorConstructorElement.created() : super.created() {
-    ++callCount;
-    throw new Exception('Just messin with ya');
-  }
-
-  static void register() {
-    document.registerElement(tag, ErrorConstructorElement);
-  }
-}
-
-class NestedCreatedConstructorElement extends HtmlElement {
-  static final tag = 'x-nested-created-constructor';
-
-  // Should not be able to call this here.
-  final B b = constructB();
-  static B constructedB;
-
-  factory NestedCreatedConstructorElement() => new Element.tag(tag);
-  NestedCreatedConstructorElement.created() : super.created();
-
-  static void register() {
-    document.registerElement(tag, NestedCreatedConstructorElement);
-  }
-
-  // Try to run the created constructor, and record the results.
-  static constructB() {
-    // This should throw an exception.
-    constructedB = new B.created();
-    return constructedB;
-  }
-
-  static void test() {
-    register();
-
-    // Exception should have occurred on upgrade.
-    var e;
-    expectGlobalError(() {
-      e = new Element.tag(tag);
-    });
-    expect(e is NestedCreatedConstructorElement, isFalse);
-    expect(e is HtmlElement, isTrue);
-    // Should not have been set.
-    expect(constructedB, isNull);
-  }
-}
-
-class CreatedWithParametersElement extends HtmlElement {
-  CreatedWithParametersElement.created(ignoredParam) : super.created();
-}
-
-void expectGlobalError(Function test) {
-  js.context['testExpectsGlobalError'] = true;
-  try {
-    test();
-  } catch (e) {
-    rethrow;
-  } finally {
-    js.context['testExpectsGlobalError'] = false;
-  }
-  var errors = js.context['testSuppressedGlobalErrors'];
-  expect(errors['length'], 1);
-  // Clear out the errors;
-  js.context['testSuppressedGlobalErrors']['length'] = 0;
-}
diff --git a/tests/html/custom/created_callback_test.html b/tests/html/custom/created_callback_test.html
deleted file mode 100644
index 892277b..0000000
--- a/tests/html/custom/created_callback_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> created_callback_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running created_callback_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/document_register_basic_test.dart b/tests/html/custom/document_register_basic_test.dart
deleted file mode 100644
index b416ed5..0000000
--- a/tests/html/custom/document_register_basic_test.dart
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright (c) 2013, 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 document_register_basic_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import '../utils.dart';
-
-class Foo extends HtmlElement {
-  static final tag = 'x-foo';
-  factory Foo() => new Element.tag(tag);
-  Foo.created() : super.created();
-
-  get thisIsACustomClass => true;
-}
-
-class Bar extends HtmlElement {
-  static final tag = 'x-bar';
-  factory Bar() => new Element.tag(tag);
-  Bar.created() : super.created();
-
-  get thisIsACustomClass => true;
-}
-
-class Baz extends Foo {
-  static final tag = 'x-baz';
-  factory Baz() => new Element.tag(tag);
-  Baz.created() : super.created();
-
-  get thisIsAlsoACustomClass => true;
-}
-
-class BadB {}
-
-abstract class BadC extends HtmlElement {
-  BadC.created() : super.created();
-}
-
-class BadF implements HtmlElement {
-  static final tag = 'x-tag-f';
-  factory BadF() => new Element.tag(tag);
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Adapted from Blink's fast/dom/custom/document-register-basic test.
-
-  setUp(() => customElementsReady);
-
-  test('Testing document.registerElement() basic behaviors', () {
-    document.registerElement(Foo.tag, Foo);
-
-    // Cannot register an existing dart:html type.
-    expect(() => document.registerElement('x-bad-a', HtmlElement), throws);
-
-    // Invalid user type.  Doesn't inherit from HtmlElement.
-    expect(() => document.registerElement('x-bad-b', BadB), throws);
-
-    // Cannot register abstract class.
-    expect(() => document.registerElement('x-bad-c', BadC), throws);
-
-    // Not a type.
-    expect(() => document.registerElement('x-bad-d', null), throws);
-
-    // Cannot register system type.
-    expect(() => document.registerElement('x-bad-e', Object), throws);
-
-    // Must extend HtmlElement, not just implement it.
-    expect(() => document.registerElement(BadF.tag, BadF), throws);
-
-    // Constructor initiated instantiation
-    var createdFoo = new Foo();
-    expect(createdFoo.thisIsACustomClass, isTrue);
-
-    // Dart type correctness
-    expect(createdFoo is HtmlElement, isTrue);
-    expect(createdFoo is Foo, isTrue);
-    expect(createdFoo.runtimeType, Foo);
-
-    // Native getter
-    expect(createdFoo.tagName, "X-FOO");
-
-    // Native setter
-    createdFoo.innerHtml = "Hello";
-    expect(createdFoo.text, "Hello");
-
-    // Native method
-    var childDiv = new DivElement();
-    createdFoo.append(childDiv);
-    expect(createdFoo.lastChild, childDiv);
-
-    // Parser initiated instantiation
-    var container = new DivElement()..id = "container";
-    document.body.append(container);
-    container.setInnerHtml("<x-foo></x-foo>",
-        treeSanitizer: new NullTreeSanitizer());
-    upgradeCustomElements(container);
-    var parsedFoo = container.firstChild;
-
-    expect(parsedFoo is Foo, isTrue);
-    expect(parsedFoo.tagName, "X-FOO");
-
-    // Ensuring the wrapper is retained
-    var someProperty = new Expando();
-    someProperty[parsedFoo] = "hello";
-    expect(container.firstChild, parsedFoo);
-    expect(someProperty[container.firstChild], someProperty[parsedFoo]);
-
-    // Having another constructor
-    document.registerElement(Bar.tag, Bar);
-    var createdBar = new Bar();
-    expect(createdBar is Bar, isTrue);
-    expect(createdBar is Foo, isFalse);
-    expect(createdBar.tagName, "X-BAR");
-
-    // Having a subclass
-    document.registerElement(Baz.tag, Baz);
-    var createdBaz = new Baz();
-    expect(createdBaz.tagName, "X-BAZ");
-    expect(createdBaz.thisIsACustomClass, isTrue);
-    expect(createdBaz.thisIsAlsoACustomClass, isTrue);
-
-    // With irregular cases
-    var createdUpperBar = new Element.tag("X-BAR");
-    var createdMixedBar = new Element.tag("X-Bar");
-    expect(createdUpperBar is Bar, isTrue);
-    expect(createdUpperBar.tagName, "X-BAR");
-    expect(createdMixedBar is Bar, isTrue);
-    expect(createdMixedBar.tagName, "X-BAR");
-
-    container.setInnerHtml("<X-BAR></X-BAR><X-Bar></X-Bar>",
-        treeSanitizer: new NullTreeSanitizer());
-    upgradeCustomElements(container);
-    expect(container.firstChild is Bar, isTrue);
-    expect(container.firstChild.tagName, "X-BAR");
-    expect(container.lastChild is Bar, isTrue);
-    expect(container.lastChild.tagName, "X-BAR");
-
-    // Constructors shouldn't interfere with each other
-    expect((new Foo()).tagName, "X-FOO");
-    expect((new Bar()).tagName, "X-BAR");
-    expect((new Baz()).tagName, "X-BAZ");
-  });
-}
diff --git a/tests/html/custom/document_register_basic_test.html b/tests/html/custom/document_register_basic_test.html
deleted file mode 100644
index 10041c9..0000000
--- a/tests/html/custom/document_register_basic_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> document_register_basic_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running document_register_basic_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/document_register_template_test.dart b/tests/html/custom/document_register_template_test.dart
deleted file mode 100644
index 6ac7b3b..0000000
--- a/tests/html/custom/document_register_template_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import '../utils.dart';
-
-main() {
-  useHtmlConfiguration();
-
-  setUp(() => customElementsReady);
-
-  test('can register custom template with webcomponents-lite polyfill', () {
-    document.registerElement('my-element', MyElement, extendsTag: 'template');
-    var e = new Element.tag('template', 'my-element');
-    document.body.append(e);
-    expect(e is TemplateElement, isTrue);
-    expect(e.method(), 'value');
-  });
-}
-
-class MyElement extends TemplateElement {
-  MyElement.created() : super.created();
-  method() => 'value';
-}
diff --git a/tests/html/custom/document_register_template_test.html b/tests/html/custom/document_register_template_test.html
deleted file mode 100644
index 26f59bf..0000000
--- a/tests/html/custom/document_register_template_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> document_register_basic_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents-lite.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running document_register_basic_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/document_register_type_extensions_test.dart b/tests/html/custom/document_register_type_extensions_test.dart
deleted file mode 100644
index 89bd4c2..0000000
--- a/tests/html/custom/document_register_type_extensions_test.dart
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright (c) 2013, 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 document_register_type_extensions_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import '../utils.dart';
-
-class Foo extends HtmlElement {
-  static const tag = 'x-foo';
-  static final List outerHtmlStrings = [
-    '<x-foo></x-foo>',
-    '<?XML:NAMESPACE PREFIX = PUBLIC NS = "URN:COMPONENT" /><x-foo></x-foo>'
-  ];
-  factory Foo() => new Element.tag(tag);
-  Foo.created() : super.created();
-}
-
-class Bar extends InputElement {
-  static const tag = 'x-bar';
-  static const outerHtmlString = '<input is="x-bar">';
-  factory Bar() => new Element.tag('input', tag);
-  Bar.created() : super.created();
-}
-
-class Baz extends Foo {
-  static const tag = 'x-baz';
-  static final List outerHtmlStrings = [
-    '<x-baz></x-baz>',
-    '<?XML:NAMESPACE PREFIX = PUBLIC NS = "URN:COMPONENT" /><x-baz></x-baz>'
-  ];
-  factory Baz() => new Element.tag(tag);
-  Baz.created() : super.created();
-}
-
-class Qux extends Bar {
-  static const tag = 'x-qux';
-  factory Qux() => new Element.tag('input', tag);
-  Qux.created() : super.created();
-}
-
-class FooBad extends DivElement {
-  static const tag = 'x-foo';
-  factory FooBad() => new Element.tag('div', tag);
-  FooBad.created() : super.created();
-}
-
-class MyCanvas extends CanvasElement {
-  static const tag = 'my-canvas';
-  factory MyCanvas() => new Element.tag('canvas', tag);
-
-  MyCanvas.created() : super.created();
-
-  void fillAsRed() {
-    width = 100;
-    height = 100;
-
-    var context = this.getContext('2d');
-    context.fillStyle = 'red';
-    context.fillRect(0, 0, width, height);
-    context.fill();
-
-    var data = context.getImageData(0, 0, 1, 1).data;
-    expect(data, [255, 0, 0, 255]);
-  }
-}
-
-class CustomDiv extends DivElement {
-  CustomDiv.created() : super.created();
-}
-
-class CustomCustomDiv extends CustomDiv {
-  static const tag = 'custom-custom';
-  CustomCustomDiv.created() : super.created();
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  // Adapted from Blink's fast/dom/custom/document-register-type-extension test.
-
-  var testForm = new FormElement()..id = 'testForm';
-  document.body.append(testForm);
-
-  var isFormControl = (element) {
-    testForm.append(element);
-    return element.form == testForm;
-  };
-
-  var registeredTypes = false;
-  void registerTypes() {
-    if (registeredTypes) {
-      return;
-    }
-    registeredTypes = true;
-    document.registerElement(Foo.tag, Foo);
-    document.registerElement(Bar.tag, Bar, extendsTag: 'input');
-    document.registerElement(Baz.tag, Baz);
-    document.registerElement(Qux.tag, Qux, extendsTag: 'input');
-    document.registerElement(MyCanvas.tag, MyCanvas, extendsTag: 'canvas');
-    document.registerElement(CustomCustomDiv.tag, CustomCustomDiv,
-        extendsTag: 'div');
-  }
-
-  setUp(() => customElementsReady);
-
-  group('registration', () {
-    setUp(registerTypes);
-
-    test('cannot register twice', () {
-      expect(() => document.registerElement(FooBad.tag, Foo, extendsTag: 'div'),
-          throws);
-    });
-
-    test('cannot register for non-matching tag', () {
-      expect(() {
-        document.registerElement('x-input-div', Bar, extendsTag: 'div');
-      }, throws);
-    });
-
-    test('cannot register type extension for custom tag', () {
-      expect(() {
-        document.registerElement('x-custom-tag', CustomCustomDiv);
-      }, throws);
-    });
-  });
-
-  group('construction', () {
-    setUp(registerTypes);
-
-    group('constructors', () {
-      test('custom tag', () {
-        var fooNewed = new Foo();
-        expect(fooNewed.outerHtml, anyOf(Foo.outerHtmlStrings));
-        expect(fooNewed is Foo, isTrue);
-        expect(fooNewed is HtmlElement, isTrue);
-        expect(fooNewed is UnknownElement, isFalse);
-      });
-
-      test('type extension', () {
-        var barNewed = new Bar();
-        expect(barNewed.outerHtml, Bar.outerHtmlString);
-        expect(barNewed is Bar, isTrue);
-        expect(barNewed is InputElement, isTrue);
-        expect(isFormControl(barNewed), isTrue);
-      });
-
-      test('custom tag deriving from custom tag', () {
-        var bazNewed = new Baz();
-        expect(bazNewed.outerHtml, anyOf(Baz.outerHtmlStrings));
-        expect(bazNewed is Baz, isTrue);
-        expect(bazNewed is HtmlElement, isTrue);
-        expect(bazNewed is UnknownElement, isFalse);
-      });
-
-      test('type extension deriving from custom tag', () {
-        var quxNewed = new Qux();
-        var quxOuterHtml = '<input is="x-qux">';
-        expect(quxNewed.outerHtml, quxOuterHtml);
-        expect(quxNewed is Qux, isTrue);
-        expect(quxNewed is InputElement, isTrue);
-        expect(isFormControl(quxNewed), isTrue);
-      });
-    });
-
-    group('single-parameter createElement', () {
-      test('custom tag', () {
-        var fooCreated = new Element.tag('x-foo');
-        expect(fooCreated.outerHtml, anyOf(Foo.outerHtmlStrings));
-        expect(fooCreated is Foo, isTrue);
-      });
-
-      test('does not upgrade type extension', () {
-        var barCreated = new Element.tag('x-bar');
-        expect(barCreated is Bar, isFalse);
-        expect(barCreated.outerHtml, "<x-bar></x-bar>");
-        expect(barCreated is UnknownElement, isFalse);
-        expect(barCreated is HtmlElement, isTrue);
-      });
-
-      test('custom tag deriving from custom tag', () {
-        var bazCreated = new Element.tag('x-baz');
-        expect(bazCreated.outerHtml, anyOf(Baz.outerHtmlStrings));
-        expect(bazCreated is Baz, isTrue);
-        expect(bazCreated is UnknownElement, isFalse);
-      });
-
-      test('type extension deriving from custom tag', () {
-        var quxCreated = new Element.tag('x-qux');
-        expect(quxCreated.outerHtml, "<x-qux></x-qux>");
-        expect(quxCreated is Qux, isFalse);
-        expect(quxCreated is UnknownElement, isFalse);
-        expect(quxCreated is HtmlElement, isTrue);
-      });
-    });
-
-    group('createElement with type extension', () {
-      test('does not upgrade extension of custom tag', () {
-        var divFooCreated = new Element.tag("div", Foo.tag);
-        expect(divFooCreated.outerHtml, '<div is="x-foo"></div>');
-        expect(divFooCreated is Foo, isFalse);
-        expect(divFooCreated is DivElement, isTrue);
-      });
-
-      test('upgrades valid extension', () {
-        var inputBarCreated = new Element.tag("input", Bar.tag);
-        expect(inputBarCreated.outerHtml, Bar.outerHtmlString);
-        expect(inputBarCreated is Bar, isTrue);
-        expect(inputBarCreated is UnknownElement, isFalse);
-        expect(isFormControl(inputBarCreated), isTrue);
-      });
-
-      test('type extension of incorrect tag', () {
-        var divBarCreated = new Element.tag("div", Bar.tag);
-        expect(divBarCreated.outerHtml, '<div is="x-bar"></div>');
-        expect(divBarCreated is Bar, isFalse);
-        expect(divBarCreated is DivElement, isTrue);
-      });
-
-      test('incorrect extension of custom tag', () {
-        var fooBarCreated = new Element.tag(Foo.tag, Bar.tag);
-        expect(
-            fooBarCreated.outerHtml,
-            anyOf(
-                '<x-foo is="x-bar"></x-foo>',
-                '<?XML:NAMESPACE PREFIX = PUBLIC NS = "URN:COMPONENT" />'
-                '<x-foo is="x-bar"></x-foo>'));
-        expect(fooBarCreated is Foo, isTrue);
-      });
-
-      test('incorrect extension of type extension', () {
-        var barFooCreated = new Element.tag(Bar.tag, Foo.tag);
-        expect(barFooCreated.outerHtml, '<x-bar is="x-foo"></x-bar>');
-        expect(barFooCreated is UnknownElement, isFalse);
-        expect(barFooCreated is HtmlElement, isTrue);
-      });
-
-      test('null type extension', () {
-        var fooCreatedNull = new Element.tag(Foo.tag, null);
-        expect(fooCreatedNull.outerHtml, anyOf(Foo.outerHtmlStrings));
-        expect(fooCreatedNull is Foo, isTrue);
-      });
-
-      test('empty type extension', () {
-        var fooCreatedEmpty = new Element.tag(Foo.tag, "");
-        expect(fooCreatedEmpty.outerHtml, anyOf(Foo.outerHtmlStrings));
-        expect(fooCreatedEmpty is Foo, isTrue);
-      });
-    });
-  });
-
-  group('namespaces', () {
-    setUp(registerTypes);
-
-    test('createElementNS', () {
-      var fooCreatedNS = document.createElementNS(
-          "http://www.w3.org/1999/xhtml", Foo.tag, null);
-      expect(fooCreatedNS.outerHtml, anyOf(Foo.outerHtmlStrings));
-      expect(fooCreatedNS is Foo, isTrue);
-
-      var barCreatedNS = document.createElementNS(
-          "http://www.w3.org/1999/xhtml", "input", Bar.tag);
-      expect(barCreatedNS.outerHtml, Bar.outerHtmlString);
-      expect(barCreatedNS is Bar, isTrue);
-      expect(isFormControl(barCreatedNS), isTrue);
-
-      expect(
-          () => document.createElementNS(
-              'http://example.com/2013/no-such-namespace', 'xml:lang', 'x-bar'),
-          throws);
-    });
-  });
-
-  group('parsing', () {
-    setUp(registerTypes);
-
-    test('parsing', () {
-      createElementFromHtml(html) {
-        var container = new DivElement()
-          ..setInnerHtml(html, treeSanitizer: new NullTreeSanitizer());
-        upgradeCustomElements(container);
-        return container.firstChild;
-      }
-
-      var fooParsed = createElementFromHtml('<x-foo>');
-      expect(fooParsed is Foo, isTrue);
-
-      var barParsed = createElementFromHtml('<input is=x-bar>');
-      expect(barParsed is Bar, isTrue);
-      expect(isFormControl(barParsed), isTrue);
-
-      var divFooParsed = createElementFromHtml('<div is=x-foo>');
-      expect(divFooParsed is Foo, isFalse);
-      expect(divFooParsed is DivElement, isTrue);
-
-      var namedBarParsed = createElementFromHtml('<x-bar>');
-      expect(namedBarParsed is Bar, isFalse);
-      // Polyfill does not convert parsed unregistered custom elements to
-      // HtmlElement.
-      // expect(namedBarParsed is UnknownElement, isFalse);
-      expect(namedBarParsed is HtmlElement, isTrue);
-
-      var divBarParsed = createElementFromHtml('<div is=x-bar>');
-      expect(divBarParsed is Bar, isFalse);
-      expect(divBarParsed is DivElement, isTrue);
-    });
-  });
-
-  group('functional', () {
-    setUp(registerTypes);
-
-    test('canvas', () {
-      var canvas = new MyCanvas();
-      canvas.fillAsRed();
-    });
-  });
-}
diff --git a/tests/html/custom/document_register_type_extensions_test.html b/tests/html/custom/document_register_type_extensions_test.html
deleted file mode 100644
index 75419cb..0000000
--- a/tests/html/custom/document_register_type_extensions_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> document_register_type_extensions_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running document_register_type_extensions_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/element_upgrade_test.dart b/tests/html/custom/element_upgrade_test.dart
deleted file mode 100644
index a8bdee1..0000000
--- a/tests/html/custom/element_upgrade_test.dart
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2014, 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 register_element_proxy_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:js' as js;
-import 'package:unittest/html_config.dart';
-import 'package:unittest/unittest.dart';
-import '../utils.dart';
-
-class FooElement extends HtmlElement {
-  static final tag = 'x-foo';
-
-  final int initializedField = 666;
-  js.JsObject _proxy;
-
-  factory FooElement() => new Element.tag(tag);
-  FooElement.created() : super.created() {
-    _proxy = new js.JsObject.fromBrowserObject(this);
-  }
-
-  String doSomething() => _proxy.callMethod('doSomething');
-
-  bool get fooCreated => _proxy['fooCreated'];
-}
-
-main() {
-  useHtmlConfiguration();
-
-  var registered = false;
-  var upgrader;
-  setUp(() => customElementsReady.then((_) {
-        if (!registered) {
-          registered = true;
-          upgrader = document.createElementUpgrader(FooElement);
-          js.context['upgradeListener'] = (e) {
-            upgrader.upgrade(e);
-          };
-
-          document.registerElement('custom-element', CustomElement);
-        }
-      }));
-
-  test('created gets proxied', () {
-    var element = document.createElement(FooElement.tag);
-    expect(element is FooElement, isTrue);
-    expect(element.initializedField, 666);
-    expect(element.text, 'constructed');
-
-    js.context.callMethod('validateIsFoo', [element]);
-
-    expect(element.doSomething(), 'didSomething');
-    expect(element.fooCreated, true);
-  });
-
-  test('dart constructor works', () {
-    var element = new FooElement();
-    expect(element is FooElement, isTrue);
-    expect(element.text, 'constructed');
-
-    js.context.callMethod('validateIsFoo', [element]);
-
-    expect(element.doSomething(), 'didSomething');
-  });
-
-  test('cannot create upgrader for interfaces', () {
-    expect(() {
-      document.createElementUpgrader(HtmlElementInterface);
-    }, throws);
-  });
-
-  test('cannot upgrade interfaces', () {
-    expect(() {
-      upgrader.upgrade(new HtmlElementInterface());
-    }, throws);
-  });
-
-  test('cannot upgrade more than once', () {
-    var fooElement = new FooElement();
-    expect(() {
-      upgrader.upgrade(fooElement);
-    }, throws);
-  });
-
-  test('cannot upgrade non-matching elements', () {
-    expect(() {
-      upgrader.upgrade(new DivElement());
-    }, throws);
-  });
-
-  test('cannot upgrade custom elements', () {
-    var custom = new CustomElement();
-    expect(() {
-      upgrader.upgrade(custom);
-    }, throws);
-  });
-
-  test('can upgrade with extendsTag', () {
-    var upgrader = document.createElementUpgrader(CustomDiv, extendsTag: 'div');
-    var div = new DivElement();
-    var customDiv = upgrader.upgrade(div);
-    expect(customDiv is CustomDiv, isTrue);
-
-    var htmlElement = document.createElement('not-registered');
-    expect(() {
-      upgrader.upgrade(htmlElement);
-    }, throws);
-  });
-
-  test('cannot create upgrader for built-in types', () {
-    expect(() {
-      document.createElementUpgrader(HtmlElement);
-    }, throws);
-  });
-}
-
-class HtmlElementInterface implements HtmlElement {
-  HtmlElementInterface.created();
-}
-
-class CustomDiv extends DivElement {
-  CustomDiv.created() : super.created();
-}
-
-class CustomElement extends HtmlElement {
-  factory CustomElement() => document.createElement('custom-element');
-  CustomElement.created() : super.created();
-}
diff --git a/tests/html/custom/element_upgrade_test.html b/tests/html/custom/element_upgrade_test.html
deleted file mode 100644
index 9ae03d3..0000000
--- a/tests/html/custom/element_upgrade_test.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE html>
-<meta name="dart.unittest" content="full-stack-traces">
-<title> element_upgrade_test </title>
-<style>
-   .unittest-table { font-family:monospace; border:1px; }
-   .unittest-pass { background: #6b3;}
-   .unittest-fail { background: #d55;}
-   .unittest-error { background: #a11;}
-</style>
-<script src="/packages/web_components/webcomponents.js"></script>
-<script src="/packages/web_components/dart_support.js"></script>
-
-<body>
-  <h1> Running element_upgrade_test </h1>
-
-<script>
-var Foo = function() {};
-Foo.prototype = Object.create(HTMLElement.prototype);
-Foo.prototype.createdCallback = function() {
-  this.fooCreated = true;
-  this.textContent = 'constructed';
-
-  // Tell the Dart side that this was created.
-  // For testing purposes, for real code this would use a different mechanism.
-  window.upgradeListener(this);
-};
-
-Foo.prototype.doSomething = function() {
-  this.textContent = 'didSomething';
-  return 'didSomething';
-};
-
-Foo = document.registerElement('x-foo', Foo);
-
-function validateIsFoo(element) {
-  if (!(element instanceof Foo)) {
-    throw Error('Element is not a Foo');
-  }
-
-  if (!element.fooCreated) {
-    throw Error('Expected fooCreated to be set');
-  }
-}
-</script>
-
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
diff --git a/tests/html/custom/entered_left_view_test.dart b/tests/html/custom/entered_left_view_test.dart
deleted file mode 100644
index 61de1b9..0000000
--- a/tests/html/custom/entered_left_view_test.dart
+++ /dev/null
@@ -1,311 +0,0 @@
-// Copyright (c) 2013, 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 entered_left_view_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:js' as js;
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-import '../utils.dart';
-
-var invocations = [];
-
-class Foo extends HtmlElement {
-  factory Foo() => null;
-  Foo.created() : super.created() {
-    invocations.add('created');
-  }
-
-  void attached() {
-    invocations.add('attached');
-  }
-
-  void enteredView() {
-    // Deprecated name. Should never be called since we override "attached".
-    invocations.add('enteredView');
-  }
-
-  void detached() {
-    invocations.add('detached');
-  }
-
-  void leftView() {
-    // Deprecated name. Should never be called since we override "detached".
-    invocations.add('leftView');
-  }
-
-  void attributeChanged(String name, String oldValue, String newValue) {
-    invocations.add('attribute changed');
-  }
-}
-
-// Test that the deprecated callbacks still work.
-class FooOldCallbacks extends HtmlElement {
-  factory FooOldCallbacks() => null;
-  FooOldCallbacks.created() : super.created() {
-    invocations.add('created');
-  }
-
-  void enteredView() {
-    invocations.add('enteredView');
-  }
-
-  void leftView() {
-    invocations.add('leftView');
-  }
-
-  void attributeChanged(String name, String oldValue, String newValue) {
-    invocations.add('attribute changed');
-  }
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  // Adapted from Blink's
-  // fast/dom/custom/attached-detached-document.html test.
-
-  var docA = document;
-  var docB = document.implementation.createHtmlDocument('');
-
-  var nullSanitizer = new NullTreeSanitizer();
-
-  var registeredTypes = false;
-  setUp(() => customElementsReady.then((_) {
-        if (registeredTypes) return;
-        registeredTypes = true;
-        document.registerElement('x-a', Foo);
-        document.registerElement('x-a-old', FooOldCallbacks);
-      }));
-
-  group('standard_events', () {
-    var a;
-    setUp(() {
-      invocations = [];
-    });
-
-    test('Created', () {
-      a = new Element.tag('x-a');
-      expect(invocations, ['created']);
-    });
-
-    test('attached', () {
-      document.body.append(a);
-      customElementsTakeRecords();
-      expect(invocations, ['attached']);
-    });
-
-    test('detached', () {
-      a.remove();
-      customElementsTakeRecords();
-      expect(invocations, ['detached']);
-    });
-
-    var div = new DivElement();
-    test('nesting does not trigger attached', () {
-      div.append(a);
-      customElementsTakeRecords();
-      expect(invocations, []);
-    });
-
-    test('nested entering triggers attached', () {
-      document.body.append(div);
-      customElementsTakeRecords();
-      expect(invocations, ['attached']);
-    });
-
-    test('nested leaving triggers detached', () {
-      div.remove();
-      customElementsTakeRecords();
-      expect(invocations, ['detached']);
-    });
-  });
-
-  // TODO(jmesserly): remove after deprecation period.
-  group('standard_events_old_callback_names', () {
-    var a;
-    setUp(() {
-      invocations = [];
-    });
-
-    test('Created', () {
-      a = new Element.tag('x-a-old');
-      expect(invocations, ['created']);
-    });
-
-    test('enteredView', () {
-      document.body.append(a);
-      customElementsTakeRecords();
-      expect(invocations, ['enteredView']);
-    });
-
-    test('leftView', () {
-      a.remove();
-      customElementsTakeRecords();
-      expect(invocations, ['leftView']);
-    });
-
-    var div = new DivElement();
-    test('nesting does not trigger enteredView', () {
-      div.append(a);
-      customElementsTakeRecords();
-      expect(invocations, []);
-    });
-
-    test('nested entering triggers enteredView', () {
-      document.body.append(div);
-      customElementsTakeRecords();
-      expect(invocations, ['enteredView']);
-    });
-
-    test('nested leaving triggers leftView', () {
-      div.remove();
-      customElementsTakeRecords();
-      expect(invocations, ['leftView']);
-    });
-  });
-
-  group('viewless_document', () {
-    var a;
-    setUp(() {
-      invocations = [];
-    });
-
-    test('Created, owned by a document without a view', () {
-      a = docB.createElement('x-a');
-      expect(a.ownerDocument, docB,
-          reason: 'new instance should be owned by the document the definition '
-              'was registered with');
-      expect(invocations, ['created'],
-          reason: 'calling the constructor should invoke the created callback');
-    });
-
-    test('Entered document without a view', () {
-      docB.body.append(a);
-      expect(invocations, [],
-          reason: 'attached callback should not be invoked when entering a '
-              'document without a view');
-    });
-
-    test('Attribute changed in document without a view', () {
-      a.setAttribute('data-foo', 'bar');
-      expect(invocations, ['attribute changed'],
-          reason: 'changing an attribute should invoke the callback, even in a '
-              'document without a view');
-    });
-
-    test('Entered document with a view', () {
-      document.body.append(a);
-      customElementsTakeRecords();
-      expect(invocations, ['attached'],
-          reason:
-              'attached callback should be invoked when entering a document '
-              'with a view');
-    });
-
-    test('Left document with a view', () {
-      a.remove();
-      customElementsTakeRecords();
-      expect(invocations, ['detached'],
-          reason: 'detached callback should be invoked when leaving a document '
-              'with a view');
-    });
-
-    test('Created in a document without a view', () {
-      docB.body.setInnerHtml('<x-a></x-a>', treeSanitizer: nullSanitizer);
-      upgradeCustomElements(docB.body);
-
-      expect(invocations, ['created'],
-          reason: 'only created callback should be invoked when parsing a '
-              'custom element in a document without a view');
-    });
-  });
-
-  group('shadow_dom', () {
-    var div;
-    var s;
-    setUp(() {
-      invocations = [];
-      div = new DivElement();
-      s = div.createShadowRoot();
-    });
-
-    tearDown(() {
-      customElementsTakeRecords();
-    });
-
-    test('Created in Shadow DOM that is not in a document', () {
-      s.setInnerHtml('<x-a></x-a>', treeSanitizer: nullSanitizer);
-      upgradeCustomElements(s);
-
-      expect(invocations, ['created'],
-          reason: 'the attached callback should not be invoked when entering a '
-              'Shadow DOM subtree not in the document');
-    });
-
-    test('Leaves Shadow DOM that is not in a document', () {
-      s.innerHtml = '';
-      expect(invocations, [],
-          reason: 'the detached callback should not be invoked when leaving a '
-              'Shadow DOM subtree not in the document');
-    });
-
-    test('Enters a document with a view as a constituent of Shadow DOM', () {
-      s.setInnerHtml('<x-a></x-a>', treeSanitizer: nullSanitizer);
-      upgradeCustomElements(s);
-
-      document.body.append(div);
-      customElementsTakeRecords();
-      expect(invocations, ['created', 'attached'],
-          reason: 'the attached callback should be invoked when inserted into '
-              'a document with a view as part of Shadow DOM');
-
-      div.remove();
-      customElementsTakeRecords();
-
-      expect(invocations, ['created', 'attached', 'detached'],
-          reason: 'the detached callback should be invoked when removed from a '
-              'document with a view as part of Shadow DOM');
-    });
-  });
-
-  group('disconnected_subtree', () {
-    var div = new DivElement();
-
-    setUp(() {
-      invocations = [];
-    });
-
-    test('Enters a disconnected subtree of DOM', () {
-      div.setInnerHtml('<x-a></x-a>', treeSanitizer: nullSanitizer);
-      upgradeCustomElements(div);
-
-      expect(invocations, ['created'],
-          reason: 'the attached callback should not be invoked when inserted '
-              'into a disconnected subtree');
-    });
-
-    test('Leaves a disconnected subtree of DOM', () {
-      div.innerHtml = '';
-      expect(invocations, [],
-          reason:
-              'the detached callback should not be invoked when removed from a '
-              'disconnected subtree');
-    });
-
-    test('Enters a document with a view as a constituent of a subtree', () {
-      div.setInnerHtml('<x-a></x-a>', treeSanitizer: nullSanitizer);
-      upgradeCustomElements(div);
-      invocations = [];
-      document.body.append(div);
-      customElementsTakeRecords();
-      expect(invocations, ['attached'],
-          reason:
-              'the attached callback should be invoked when inserted into a '
-              'document with a view as part of a subtree');
-    });
-  });
-}
diff --git a/tests/html/custom/entered_left_view_test.html b/tests/html/custom/entered_left_view_test.html
deleted file mode 100644
index c18be7d..0000000
--- a/tests/html/custom/entered_left_view_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> entered_left_view_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running entered_left_view_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/js_custom_test.dart b/tests/html/custom/js_custom_test.dart
deleted file mode 100644
index fc80ffa..0000000
--- a/tests/html/custom/js_custom_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2013, 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 js_custom_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import '../utils.dart';
-import 'dart:mirrors';
-
-class A extends HtmlElement {
-  static final tag = 'x-a';
-  factory A() => new Element.tag(tag);
-  A.created() : super.created() {
-    ncallbacks++;
-  }
-
-  static int ncallbacks = 0;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Adapted from Blink's
-  // fast/dom/custom/constructor-calls-created-synchronously test.
-
-  var registered = false;
-  setUp(() {
-    return customElementsReady.then((_) {
-      if (!registered) {
-        registered = true;
-        document.registerElement(A.tag, A);
-      }
-    });
-  });
-
-  test('accessing custom Dart element from JS', () {
-    var a = new A();
-    a.id = 'a';
-    document.body.append(a);
-
-    var script = '''
-      document.querySelector('#a').setAttribute('fromJS', 'true');
-    ''';
-    document.body.append(new ScriptElement()..text = script);
-
-    expect(a.attributes['fromJS'], 'true');
-  });
-
-  test('accessing custom JS element from Dart', () {
-    var script = '''
-    var Foo = document.registerElement('x-foo', {
-      prototype: Object.create(HTMLElement.prototype, {
-        createdCallback: {
-          value: function() {
-            this.setAttribute('fromJS', 'true');
-          }
-        }
-      })});
-    var foo = new Foo();
-    foo.id = 'b';
-    document.body.appendChild(foo);
-    ''';
-
-    document.body.append(new ScriptElement()..text = script);
-    var custom = document.querySelector('#b');
-    expect(custom is HtmlElement, isTrue);
-    expect(custom.attributes['fromJS'], 'true');
-  });
-}
diff --git a/tests/html/custom/js_custom_test.html b/tests/html/custom/js_custom_test.html
deleted file mode 100644
index 18e254c..0000000
--- a/tests/html/custom/js_custom_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> js_custom_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running js_custom_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/mirrors_2_test.dart b/tests/html/custom/mirrors_2_test.dart
deleted file mode 100644
index ebf804a..0000000
--- a/tests/html/custom/mirrors_2_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2013, 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 tests.html.mirrors_2_test;
-
-@MirrorsUsed(targets: "tests.html.mirrors_2_test")
-import 'dart:mirrors';
-import 'dart:html';
-import 'package:expect/expect.dart' show NoInline;
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import '../utils.dart';
-
-/// Regression test for http://dartbug/28196
-///
-/// The constructor of a mixin application of a subclass of a Html element is
-/// normally not used. With mirrors the constructor can become available. The
-/// body of the factory has a 'receiver' with an exact type that is the mixin
-/// application. The constructor body functions of the superclasses are called
-/// using the interceptor calling convention. This creates an interceptor
-/// constant of the mixin application type.  In issue 28196 the constant has a
-/// name containing '+' symbols, causing the program to crash during
-/// initializing the constant pool.
-
-main() {
-  useHtmlConfiguration();
-
-  var registered = false;
-  setUp(() => customElementsReady.then((_) {
-        if (!registered) {
-          registered = true;
-          document.registerElement(A.tag, A);
-          document.registerElement(B.tag, B);
-        }
-      }));
-
-  test('reflectClass', () {
-    expect('AA', new A().token());
-    expect('MM', new B().token());
-    reflectClass(B);
-  });
-}
-
-class A extends HtmlElement {
-  static final tag = 'x-a';
-  factory A() => new Element.tag(tag);
-
-  A.created() : super.created() {
-    // This function must not be inlined otherwise there is no reference to the
-    // interceptor constant. The `@NoInline()` annotation does not seem reliable
-    // on generative constructor bodies.
-    try {
-      uninlinedMethod();
-      uninlinedMethod();
-      uninlinedMethod();
-    } finally {
-      uninlinedMethod();
-      uninlinedMethod();
-      uninlinedMethod();
-    }
-  }
-  @NoInline()
-  uninlinedMethod() {}
-
-  token() => 'AA';
-}
-
-class B extends A with M {
-  static final tag = 'x-b';
-  factory B() => new Element.tag(tag);
-  B.created() : super.created();
-}
-
-class M {
-  token() => 'MM';
-}
diff --git a/tests/html/custom/mirrors_2_test.html b/tests/html/custom/mirrors_2_test.html
deleted file mode 100644
index bab6ba3..0000000
--- a/tests/html/custom/mirrors_2_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> mirrors_2_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running mirrors_2_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/mirrors_test.dart b/tests/html/custom/mirrors_test.dart
deleted file mode 100644
index 05f65c9..0000000
--- a/tests/html/custom/mirrors_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2013, 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 tests.html.mirrors_test;
-
-@MirrorsUsed(targets: const [A, B])
-import 'dart:mirrors';
-import 'dart:html';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import '../utils.dart';
-
-/// Regression test for a tricky mirrors+custom_elements issue:
-/// dart2js mirrors cache dispatch information on the Object's constructor.
-/// This was failing for custom elements on IE 10, because the constructor was
-/// HTMLUnknownElement for all of them. So mirrors called the wrong method.
-main() {
-  useHtmlConfiguration();
-
-  var registered = false;
-  setUp(() => customElementsReady.then((_) {
-        if (!registered) {
-          registered = true;
-          document.registerElement(A.tag, A);
-          document.registerElement(B.tag, B);
-        }
-      }));
-
-  test('dynamic dispatch', () {
-    var a = new A();
-    expect(a.fooBar, 1);
-    reflect(a).setField(#fooBar, 123);
-    expect(a.fooBar, 123);
-
-    // Even though A was set first, B.fooBar= should dispatch to B.
-    var b = new B();
-    expect(b.fooBar, 2);
-    expect(b._fooBarSet, 0);
-    reflect(b).setField(#fooBar, 123);
-    expect(b.fooBar, 123);
-    expect(b._fooBarSet, 1);
-  });
-}
-
-class A extends HtmlElement {
-  static final tag = 'x-a';
-  factory A() => new Element.tag(tag);
-  A.created() : super.created();
-
-  int fooBar = 1;
-}
-
-class B extends HtmlElement {
-  static final tag = 'x-b';
-  factory B() => new Element.tag(tag);
-  B.created() : super.created();
-
-  int _fooBar = 2;
-  int _fooBarSet = 0;
-
-  int get fooBar => _fooBar;
-  set fooBar(value) {
-    _fooBarSet++;
-    _fooBar = value;
-  }
-}
diff --git a/tests/html/custom/mirrors_test.html b/tests/html/custom/mirrors_test.html
deleted file mode 100644
index 76079b3..0000000
--- a/tests/html/custom/mirrors_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> mirrors_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running mirrors_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom/regress_194523002_test.dart b/tests/html/custom/regress_194523002_test.dart
deleted file mode 100644
index 33541df..0000000
--- a/tests/html/custom/regress_194523002_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for CL 194523002.
-
-library js_custom_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import '../utils.dart';
-
-class A extends HtmlElement {
-  static final tag = 'x-a';
-  factory A() => new Element.tag(tag);
-  A.created() : super.created();
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Adapted from Blink's
-  // fast/dom/custom/constructor-calls-created-synchronously test.
-
-  var registered = false;
-  setUp(() {
-    return customElementsReady.then((_) {
-      if (!registered) {
-        registered = true;
-        document.registerElement(A.tag, A);
-      }
-    });
-  });
-}
diff --git a/tests/html/custom_element_method_clash_test.dart b/tests/html/custom_element_method_clash_test.dart
deleted file mode 100644
index e088b65..0000000
--- a/tests/html/custom_element_method_clash_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2015, 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 custom_elements_method_clash;
-
-import 'dart:async';
-import 'dart:html';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-import 'utils.dart';
-
-class CustomElement extends HtmlElement {
-  factory CustomElement() => new Element.tag('x-custom');
-
-  CustomElement.created() : super.created() {}
-
-  // Try to clash with native 'appendChild' method.
-  void appendChild() {
-    throw 'Gotcha!';
-  }
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  setUp(() => customElementsReady);
-
-  group('test', () {
-    test('test', () {
-      document.registerElement('x-custom', CustomElement);
-      CustomElement custom = new CustomElement();
-      document.body.children.add(custom);
-
-      // Will call appendChild in JS.
-      custom.children.add(new DivElement()..text = 'Hello world!');
-
-      try {
-        custom.appendChild(); // Make sure method is not tree shaken.
-        fail('appendChild did not throw');
-      } catch (e) {
-        expect(e, equals('Gotcha!'));
-      }
-    });
-  });
-}
diff --git a/tests/html/custom_element_method_clash_test.html b/tests/html/custom_element_method_clash_test.html
deleted file mode 100644
index a5e9625..0000000
--- a/tests/html/custom_element_method_clash_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> custom_element_method_clash_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running custom_element_method_clash_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom_element_name_clash_test.dart b/tests/html/custom_element_name_clash_test.dart
deleted file mode 100644
index a11c565..0000000
--- a/tests/html/custom_element_name_clash_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, 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 custom_elements_name_clash;
-
-import 'dart:async';
-import 'dart:html';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-import 'utils.dart';
-
-class CustomElement extends HtmlElement {
-  factory CustomElement() => new Element.tag('x-custom');
-
-  CustomElement.created() : super.created() {}
-
-  // Try to clash with native 'appendChild' method.
-  var appendChild = 123;
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  setUp(() => customElementsReady);
-
-  group('test', () {
-    test('test', () {
-      document.registerElement('x-custom', CustomElement);
-      CustomElement custom = new CustomElement();
-      document.body.children.add(custom);
-      // Will call appendChild in JS.
-      custom.children.add(new DivElement()..text = 'Hello world!');
-    });
-  });
-}
diff --git a/tests/html/custom_element_name_clash_test.html b/tests/html/custom_element_name_clash_test.html
deleted file mode 100644
index f414794..0000000
--- a/tests/html/custom_element_name_clash_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> custom_element_name_clash_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running custom_element_name_clash_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom_elements_23127_test.dart b/tests/html/custom_elements_23127_test.dart
deleted file mode 100644
index 6595ea5..0000000
--- a/tests/html/custom_elements_23127_test.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for http://dartbug.com/23127
-// Tests super calls to a custom element upgrade constructor with various
-// combinations of parameters and type arguments.
-
-library custom_elements_23127_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-import 'utils.dart';
-
-abstract class B1 extends HtmlElement {
-  void action();
-
-  B1.created() : super.created() {
-    action();
-  }
-}
-
-abstract class B1T<T> extends HtmlElement {
-  void action();
-  var qq = false;
-  B1T.created() : super.created() {
-    action();
-    qq = this is T;
-  }
-}
-
-abstract class B2 extends HtmlElement {
-  void action();
-  var qq;
-  B2.created([a = 1, b = 2, c = 3])
-      : qq = callTwice(() => ++a * ++b), // [a] and [b] are boxed.
-        super.created() {
-    action();
-    qq = [qq, a, b, c];
-  }
-}
-
-abstract class B2T<T> extends HtmlElement {
-  void action();
-  var qq;
-  B2T.created([a = 1, b = 2, c = 3])
-      : qq = callTwice(() => ++a * ++b),
-        super.created() {
-    action();
-    qq = [this is T, qq, a, b, c];
-  }
-}
-
-class C1 extends B1 {
-  int z;
-  C1.created() : super.created();
-  action() => z = 3;
-}
-
-class C1T extends B1T {
-  int z;
-  C1T.created() : super.created();
-  action() => z = 3;
-}
-
-class C2 extends B2 {
-  int z;
-  C2.created() : super.created(20);
-  action() => z = 3;
-}
-
-class C2T extends B2T {
-  int z;
-  C2T.created() : super.created(20);
-  action() => z = 3;
-}
-
-var callTwice;
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  setUp(() => customElementsReady);
-
-  callTwice = (f) {
-    f();
-    return f();
-  };
-
-  group('baseline', () {
-    test('C1', () {
-      document.register('x-c1', C1);
-      C1 e = document.createElement('x-c1');
-      expect(e.z, 3);
-    });
-  });
-
-  group('c1t', () {
-    test('C1T', () {
-      document.register('x-c1t', C1T);
-      C1T e = document.createElement('x-c1t');
-      expect(e.z, 3);
-      expect(e.qq, true);
-    });
-  });
-
-  group('c2', () {
-    test('C2', () {
-      document.register('x-c2', C2);
-      C2 e = document.createElement('x-c2');
-      expect(e.z, 3);
-      expect(e.qq, [88, 22, 4, 3]);
-    });
-  });
-
-  group('c2t', () {
-    test('C2T', () {
-      document.register('x-c2t', C2T);
-      C2T e = document.createElement('x-c2t');
-      expect(e.z, 3);
-      expect(e.qq, [true, 88, 22, 4, 3]);
-    });
-  });
-}
diff --git a/tests/html/custom_elements_23127_test.html b/tests/html/custom_elements_23127_test.html
deleted file mode 100644
index b0b68b5..0000000
--- a/tests/html/custom_elements_23127_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> custom_elements_23127_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running custom_elements_23127_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom_elements_test.dart b/tests/html/custom_elements_test.dart
deleted file mode 100644
index 3b19e1b..0000000
--- a/tests/html/custom_elements_test.dart
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright (c) 2013, 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 custom_elements_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-import 'utils.dart';
-
-class CustomMixin {
-  var mixinMethodCalled;
-
-  void mixinMethod() {
-    mixinMethodCalled = true;
-  }
-}
-
-class CustomType extends HtmlElement with CustomMixin {
-  bool createdCalled = false;
-
-  factory CustomType() => null;
-  CustomType.created() : super.created() {
-    createdCalled = true;
-    customCreatedCount++;
-  }
-
-  void invokeMixinMethod() {
-    mixinMethod();
-  }
-}
-
-int customCreatedCount = 0;
-
-int nextTagId = 0;
-String get nextTag => 'x-type${nextTagId++}';
-
-class NotAnElement {}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  setUp(() => customElementsReady);
-
-  group('register', () {
-    test('register', () {
-      var tag = nextTag;
-      document.registerElement(tag, CustomType);
-
-      var element = new Element.tag(tag);
-      expect(element, isNotNull);
-      expect(element is CustomType, isTrue);
-      expect(element.createdCalled, isTrue);
-    });
-
-    test('register twice', () {
-      var tag = nextTag;
-      document.registerElement(tag, CustomType);
-      expect(() {
-        document.registerElement(tag, CustomType);
-      }, throws, reason: 'Cannot register a tag more than once.');
-
-      var newTag = nextTag;
-      document.registerElement(newTag, CustomType);
-
-      var element = new Element.tag(newTag);
-      expect(element, isNotNull);
-      expect(element is CustomType, isTrue);
-    });
-
-    test('register null', () {
-      expect(() {
-        document.registerElement(nextTag, null);
-      }, throws, reason: 'Cannot register a null type.');
-    });
-
-    test('register native', () {
-      expect(() {
-        document.registerElement(nextTag, BodyElement);
-      }, throws, reason: 'Cannot register a native element.');
-    });
-
-    test('register non-element', () {
-      expect(() {
-        document.registerElement(nextTag, NotAnElement);
-      }, throws, reason: 'Cannot register a non-element.');
-    });
-  });
-
-  // TODO(vsm): Modify this test once we agree on the proper semantics.
-  /*
-  group('preregister', () {
-
-    test('pre-registration construction', () {
-      var tag = nextTag;
-      var dom = new Element.html('<div><$tag></$tag></div>');
-
-      var preElement = dom.children[0];
-      expect(preElement, isNotNull);
-      expect(preElement is HtmlElement, isTrue);
-      expect(preElement is CustomType, isFalse);
-      var firedOnPre = false;
-      preElement.onFocus.listen((_) {
-        firedOnPre = true;
-      });
-
-      document.registerElement(tag, CustomType);
-      upgradeCustomElements(dom);
-
-      var postElement = dom.children[0];
-      expect(postElement, isNotNull);
-      expect(postElement is CustomType, isTrue);
-      expect(postElement.createdCalled, isTrue);
-
-      // Element from first query remains an UnknownElement.
-      expect(preElement is HtmlElement, isTrue);
-      expect(preElement.parent, dom);
-      expect(dom.children.length, 1);
-
-      var firedOnPost = false;
-      postElement.onFocus.listen((_) {
-        firedOnPost = true;
-      });
-      // Event handlers persist on old and new element.
-      postElement.dispatchEvent(new Event('focus'));
-      expect(firedOnPre, isTrue);
-      expect(firedOnPost, isTrue);
-    });
-  });*/
-
-  group('innerHtml', () {
-    test('query', () {
-      var tag = nextTag;
-      document.registerElement(tag, CustomType);
-      var element = new DivElement();
-      element.setInnerHtml('<$tag></$tag>',
-          treeSanitizer: new NullTreeSanitizer());
-      upgradeCustomElements(element);
-      document.body.nodes.add(element);
-      var queried = querySelector(tag);
-
-      expect(queried, isNotNull);
-      expect(queried is CustomType, isTrue);
-      expect(queried.createdCalled, isTrue);
-    });
-
-    test('query id', () {
-      var tag = nextTag;
-      document.registerElement(tag, CustomType);
-      var element = new DivElement();
-      element.setInnerHtml('<$tag id="someid"></$tag>',
-          treeSanitizer: new NullTreeSanitizer());
-      upgradeCustomElements(element);
-      document.body.nodes.add(element);
-      var queried = querySelector('#someid');
-
-      expect(queried, isNotNull);
-      expect(queried is CustomType, isTrue);
-      expect(queried.id, "someid");
-    });
-  });
-
-  group('lifecycle', () {
-    test('created', () {
-      int oldCount = customCreatedCount;
-      var tag = nextTag;
-      document.registerElement(tag, CustomType);
-      var element = new DivElement();
-      element.setInnerHtml('<$tag></$tag>',
-          treeSanitizer: new NullTreeSanitizer());
-      upgradeCustomElements(element);
-      document.body.nodes.add(element);
-      expect(customCreatedCount, oldCount + 1);
-    });
-  });
-
-  group('mixins', () {
-    test('can invoke mixin methods', () {
-      var tag = nextTag;
-      document.registerElement(tag, CustomType);
-
-      var element = new Element.tag(tag);
-      element.invokeMixinMethod();
-      expect(element.mixinMethodCalled, isTrue);
-    });
-  });
-}
diff --git a/tests/html/custom_elements_test.html b/tests/html/custom_elements_test.html
deleted file mode 100644
index 42c6ed6..0000000
--- a/tests/html/custom_elements_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> custom_elements_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-  <script src="/packages/web_components/webcomponents.js"></script>
-  <script src="/packages/web_components/dart_support.js"></script>
-</head>
-<body>
-  <h1> Running custom_elements_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/custom_tags_test.dart b/tests/html/custom_tags_test.dart
deleted file mode 100644
index 1010d76..0000000
--- a/tests/html/custom_tags_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2013, 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 custom_tags_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'utils.dart';
-
-main() {
-  useHtmlConfiguration();
-
-  test('create via custom tag', () {
-    var element = new Element.tag('x-basic1')..id = 'basic1';
-    document.body.nodes.add(element);
-
-    var queryById = querySelector('#basic1');
-    expect(queryById, equals(element));
-
-    var queryByTag = querySelectorAll('x-basic1');
-    expect(queryByTag.length, equals(1));
-    expect(queryByTag[0], equals(element));
-  });
-
-  test('custom inner html', () {
-    var element = new DivElement();
-    element.setInnerHtml("<x-basic2 id='basic2'></x-basic2>",
-        treeSanitizer: new NullTreeSanitizer());
-    document.body.nodes.add(element);
-
-    var queryById = querySelector('#basic2');
-    expect(queryById is Element, isTrue);
-
-    var queryByTag = querySelectorAll('x-basic2');
-    expect(queryByTag.length, equals(1));
-    expect(queryByTag[0], equals(queryById));
-  });
-
-  test('type extension inner html', () {
-    var element = new DivElement();
-    element.setInnerHtml("<div is='x-basic3' id='basic3'></div>",
-        treeSanitizer: new NullTreeSanitizer());
-    document.body.nodes.add(element);
-
-    var queryById = querySelector('#basic3');
-    expect(queryById is DivElement, isTrue);
-  });
-}
diff --git a/tests/html/dart_object_local_storage_test.dart b/tests/html/dart_object_local_storage_test.dart
deleted file mode 100644
index 2213ab7..0000000
--- a/tests/html/dart_object_local_storage_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-library DartObjectLocalStorageTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-// TODO(vsm): Rename this to wrapper_caching_test or similar.  It's
-// basically a port of dom/dart_object_local_storage_test.dart.  For
-// wrapping implementation of dart:html (i.e., the dartium one), it is
-// effectively testing dart_object_local_storage in the underlying dom
-// object.
-main() {
-  useHtmlConfiguration();
-
-  BodyElement body = document.body;
-  Storage localStorage = window.localStorage;
-  Storage sessionStorage = window.sessionStorage;
-  var element = new Element.tag('canvas');
-  element.id = 'test';
-  body.append(element);
-
-  test('body', () {
-    expect(body, equals(document.body));
-  });
-  test('localStorage', () {
-    expect(localStorage, equals(window.localStorage));
-  });
-  test('sessionStorage', () {
-    expect(sessionStorage, equals(window.sessionStorage));
-  });
-  test('unknown', () {
-    var test = document.querySelector('#test');
-    expect(element, equals(test));
-  });
-}
diff --git a/tests/html/datalistelement_test.dart b/tests/html/datalistelement_test.dart
deleted file mode 100644
index 131ceb1..0000000
--- a/tests/html/datalistelement_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// 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.
-
-library datalistelement_dataview_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isDataListElement =
-      predicate((x) => x is DataListElement, 'is a DataListElement');
-
-  var div;
-
-  setUp(() {
-    div = new DivElement();
-    document.body.append(div);
-    div.innerHtml = """
-<input id="input" list="browsers" />
-<datalist id="browsers">
-  <option value="Chrome">
-  <option value="Firefox">
-  <option value="Internet Explorer">
-  <option value="Opera">
-  <option value="Safari">
-</datalist>
-""";
-  });
-
-  tearDown(() {
-    document.body.nodes.removeLast();
-  });
-
-  // Support is checked in element_types test.
-  var expectation = DataListElement.supported ? returnsNormally : throws;
-
-  test('is', () {
-    expect(() {
-      var list = document.querySelector('#browsers');
-      expect(list, isDataListElement);
-    }, expectation);
-  });
-
-  test('list', () {
-    expect(() {
-      var list = document.querySelector('#browsers');
-      var input = document.querySelector('#input');
-      expect(input.list, list);
-    }, expectation);
-  });
-
-  test('options', () {
-    expect(() {
-      var options = document.querySelector('#browsers').options;
-      expect(options.length, 5);
-    }, expectation);
-  });
-
-  test('create', () {
-    expect(() {
-      var list = new DataListElement();
-      expect(list, isDataListElement);
-    }, expectation);
-  });
-}
diff --git a/tests/html/document_test.dart b/tests/html/document_test.dart
deleted file mode 100644
index a315263..0000000
--- a/tests/html/document_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-library DocumentTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  var isElement = predicate((x) => x is Element, 'is an Element');
-  var isDivElement = predicate((x) => x is DivElement, 'is a DivElement');
-  var isAnchorElement =
-      predicate((x) => x is AnchorElement, 'is an AnchorElement');
-  var isUnknownElement =
-      predicate((x) => x is UnknownElement, 'is UnknownElement');
-
-  var inscrutable;
-
-  test('CreateElement', () {
-    // FIXME: nifty way crashes, do it boring way.
-    expect(new Element.tag('span'), isElement);
-    expect(new Element.tag('div'), isDivElement);
-    expect(new Element.tag('a'), isAnchorElement);
-    expect(new Element.tag('bad_name'), isUnknownElement);
-  });
-
-  group('document', () {
-    inscrutable = (x) => x;
-
-    test('Document.query', () {
-      Document doc = new DomParser().parseFromString(
-          '''<ResultSet>
-           <Row>A</Row>
-           <Row>B</Row>
-           <Row>C</Row>
-         </ResultSet>''',
-          'text/xml');
-
-      var rs = doc.querySelector('ResultSet');
-      expect(rs, isNotNull);
-    });
-
-    test('CreateElement', () {
-      // FIXME: nifty way crashes, do it boring way.
-      expect(new Element.tag('span'), isElement);
-      expect(new Element.tag('div'), isDivElement);
-      expect(new Element.tag('a'), isAnchorElement);
-      expect(new Element.tag('bad_name'), isUnknownElement);
-    });
-
-    test('adoptNode', () {
-      var div = new Element.html('<div><div id="foo">bar</div></div>');
-      var doc = document.implementation.createHtmlDocument('');
-      expect(doc.adoptNode(div), div);
-      expect(div.ownerDocument, doc);
-      doc.body.nodes.add(div);
-      expect(doc.querySelector('#foo').text, 'bar');
-    });
-
-    test('importNode', () {
-      var div = new Element.html('<div><div id="foo">bar</div></div>');
-      var doc = document.implementation.createHtmlDocument('');
-      var div2 = doc.importNode(div, true);
-      expect(div2, isNot(equals(div)));
-      expect(div2.ownerDocument, doc);
-      doc.body.nodes.add(div2);
-      expect(doc.querySelector('#foo').text, 'bar');
-    });
-
-    test('typeTest1', () {
-      inscrutable = inscrutable(inscrutable);
-      var doc1 = document;
-      expect(doc1 is HtmlDocument, true);
-      expect(inscrutable(doc1) is HtmlDocument, true);
-      var doc2 = document.implementation.createHtmlDocument('');
-      expect(doc2 is HtmlDocument, true);
-      expect(inscrutable(doc2) is HtmlDocument, true);
-    });
-
-    test('typeTest2', () {
-      inscrutable = inscrutable(inscrutable);
-      // XML document.
-      var doc3 = document.implementation.createDocument(null, 'report', null);
-      expect(doc3 is HtmlDocument, false);
-      expect(inscrutable(doc3) is HtmlDocument, false);
-    });
-  });
-}
diff --git a/tests/html/documentfragment_test.dart b/tests/html/documentfragment_test.dart
deleted file mode 100644
index 70a4a3f..0000000
--- a/tests/html/documentfragment_test.dart
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright (c) 2011, 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 DocumentFragmentTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'util.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isAnchorElement =
-      predicate((x) => x is AnchorElement, 'is an AnchorElement');
-
-  List<String> _nodeStrings(Iterable<Node> input) {
-    var out = new List<String>();
-    for (Node n in input) {
-      if (n is Element) {
-        Element e = n;
-        out.add(e.tagName);
-      } else {
-        out.add(n.text);
-      }
-    }
-    return out;
-  }
-
-  ;
-
-  assertConstError(void fn()) {
-    try {
-      fn();
-    } catch (e) {
-      if (e is UnsupportedError) {
-        return;
-      }
-    }
-    expect(true, isFalse, reason: 'Expected immutability error');
-  }
-
-  ;
-
-  void expectEmptyStyleDeclaration(CssStyleDeclaration style) {
-    expect(style.cssText, equals(''));
-    expect(style.getPropertyPriority('color'), equals(''));
-    expect(style.item(0), equals(''));
-    expect(style.length, isZero);
-    // TODO(jacobr): these checks throw UnimplementedErrors in dartium.
-    // expect(style.parentRule, isNull);
-    // expect(style.getPropertyCssValue('color'), isNull);
-    // expect(style.getPropertyShorthand('color'), isNull);
-    // expect(style.isPropertyImplicit('color'), isFalse);
-
-    // Ideally these would throw errors, but it's not possible to create a class
-    // that'll intercept these calls without implementing the entire
-    // CssStyleDeclaration interface, so we'll settle for them being no-ops.
-    style.cssText = '* {color: blue}';
-    style.removeProperty('color');
-    style.setProperty('color', 'blue');
-  }
-
-  group('constructors', () {
-    test('0-argument makes an empty fragment', () {
-      final fragment = new DocumentFragment();
-      expect(fragment.children, equals([]));
-    });
-
-    test('.html parses input as HTML', () {
-      final fragment = new DocumentFragment.html('<a>foo</a>');
-      expect(fragment.children[0], isAnchorElement);
-    });
-
-    // test('.svg parses input as SVG', () {
-    //   final fragment = new DocumentFragment.svg('<a>foo</a>');
-    //   expect(fragment.children[0] is SVGAElement, isTrue);
-    // });
-
-    // TODO(nweiz): enable this once XML is ported.
-    // test('.xml parses input as XML', () {
-    //   final fragment = new DocumentFragment.xml('<a>foo</a>');
-    //   expect(fragment.children[0] is XMLElement, isTrue);
-    // });
-  });
-
-  group('children', () {
-    var fragment;
-    var children;
-
-    init() {
-      fragment = new DocumentFragment();
-      children = fragment.children;
-      fragment.nodes.addAll([
-        new Text("1"),
-        new Element.tag("A"),
-        new Element.tag("B"),
-        new Text("2"),
-        new Element.tag("I"),
-        new Text("3"),
-        new Element.tag("U")
-      ]);
-    }
-
-    ;
-
-    test('is initially empty', () {
-      children = new DocumentFragment().children;
-      expect(children, equals([]));
-      expect(children.isEmpty, isTrue);
-    });
-
-    test('filters out non-element nodes', () {
-      init();
-      expect(_nodeStrings(fragment.nodes),
-          orderedEquals(["1", "A", "B", "2", "I", "3", "U"]));
-      expect(_nodeStrings(children), orderedEquals(["A", "B", "I", "U"]));
-    });
-
-    test('only indexes children, not other nodes', () {
-      init();
-      children[1] = new Element.tag("BR");
-      expect(_nodeStrings(fragment.nodes),
-          orderedEquals(["1", "A", "BR", "2", "I", "3", "U"]));
-      expect(_nodeStrings(children), orderedEquals(["A", "BR", "I", "U"]));
-    });
-
-    test('adds to both children and nodes', () {
-      init();
-      children.add(new Element.tag("UL"));
-      expect(_nodeStrings(fragment.nodes),
-          orderedEquals(["1", "A", "B", "2", "I", "3", "U", "UL"]));
-      expect(_nodeStrings(children), orderedEquals(["A", "B", "I", "U", "UL"]));
-    });
-
-    test('removes only children, from both children and nodes', () {
-      init();
-      expect(children.removeLast().tagName, equals('U'));
-      expect(_nodeStrings(fragment.nodes),
-          orderedEquals(["1", "A", "B", "2", "I", "3"]));
-      expect(_nodeStrings(children), orderedEquals(["A", "B", "I"]));
-
-      expect(children.removeLast().tagName, "I");
-      expect(_nodeStrings(fragment.nodes), equals(["1", "A", "B", "2", "3"]));
-      expect(_nodeStrings(children), equals(["A", "B"]));
-    });
-
-    test('accessors are wrapped', () {
-      init();
-      expect(children[0].tagName, "A");
-      expect(_nodeStrings(children.where((e) => e.tagName == "I")), ["I"]);
-      expect(children.every((e) => e is Element), isTrue);
-      expect(children.any((e) => e.tagName == "U"), isTrue);
-      expect(children.isEmpty, isFalse);
-      expect(children.length, 4);
-      expect(children[2].tagName, "I");
-      expect(children.last.tagName, "U");
-    });
-
-    test('setting children overwrites nodes as well', () {
-      init();
-      fragment.children = [new Element.tag("DIV"), new Element.tag("HEAD")];
-      expect(_nodeStrings(fragment.nodes), equals(["DIV", "HEAD"]));
-    });
-  });
-
-  test('setting innerHtml works', () {
-    var fragment = new DocumentFragment();
-    fragment.append(new Text("foo"));
-    fragment.innerHtml = "<a>bar</a>baz";
-    expect(_nodeStrings(fragment.nodes), equals(["A", "baz"]));
-  });
-
-  test('getting innerHtml works', () {
-    var fragment = new DocumentFragment();
-    fragment.nodes.addAll([new Text("foo"), new Element.html("<A>bar</A>")]);
-    expect(fragment.innerHtml, "foo<a>bar</a>");
-  });
-
-  test('query searches the fragment', () {
-    var fragment = new DocumentFragment.html(
-        "<div class='foo'><a>foo</a><b>bar</b></div>");
-    expect(fragment.querySelector(".foo a").tagName, "A");
-    expect(
-        _nodeStrings(fragment.querySelectorAll(".foo *")), equals(["A", "B"]));
-  });
-}
diff --git a/tests/html/dom_constructors_test.dart b/tests/html/dom_constructors_test.dart
deleted file mode 100644
index a6ceac1..0000000
--- a/tests/html/dom_constructors_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-library DOMConstructorsTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-  test('FileReader', () {
-    FileReader fileReader = new FileReader();
-    expect(fileReader.readyState, equals(FileReader.EMPTY));
-  });
-}
diff --git a/tests/html/dom_isolates_test.dart.child_isolate.dart b/tests/html/dom_isolates_test.dart.child_isolate.dart
deleted file mode 100644
index 31e97d2..0000000
--- a/tests/html/dom_isolates_test.dart.child_isolate.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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:html';
-import 'dart:isolate';
-
-main() {
-  port.receive((msg, replyTo) {
-    if (msg != 'check') {
-      replyTo.send('wrong msg: $msg');
-    }
-    replyTo.send('${window.location}');
-    port.close();
-  });
-}
diff --git a/tests/html/domparser_test.dart b/tests/html/domparser_test.dart
deleted file mode 100644
index ef7f0d2..0000000
--- a/tests/html/domparser_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-library DOMParserTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isDomParser = predicate((x) => x is DomParser, 'is a DomParser');
-
-  test('constructorTest', () {
-    var ctx = new DomParser();
-    expect(ctx, isNotNull);
-    expect(ctx, isDomParser);
-  });
-}
diff --git a/tests/html/element_add_test.dart b/tests/html/element_add_test.dart
deleted file mode 100644
index b58ad00..0000000
--- a/tests/html/element_add_test.dart
+++ /dev/null
@@ -1,270 +0,0 @@
-// 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
-
-library ElementAddTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'util.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isSpanElement = predicate((x) => x is SpanElement, 'is a SpanElemt');
-  var isDivElement = predicate((x) => x is DivElement, 'is a DivElement');
-  var isText = predicate((x) => x is Text, 'is a Text');
-
-  void expectNoSuchMethod(void fn()) => expect(fn, throwsNoSuchMethodError);
-
-  group('append', () {
-    test('htmlelement', () {
-      var el = new DivElement();
-      el.append(new SpanElement());
-      expect(el.children.length, equals(1));
-      var span = el.children[0];
-      expect(span, isSpanElement);
-
-      el.append(new DivElement());
-      expect(el.children.length, equals(2));
-      // Validate that the first item is still first.
-      expect(el.children[0], equals(span));
-      expect(el.children[1], isDivElement);
-    });
-
-    test('documentFragment', () {
-      var fragment = new DocumentFragment();
-      fragment.append(new SpanElement());
-      expect(fragment.children.length, equals(1));
-      expect(fragment.children[0], isSpanElement);
-    });
-  });
-
-  group('appendHtml', () {
-    test('htmlelement', () {
-      var el = new DivElement();
-      el.appendHtml('<span></span>');
-      expect(el.children.length, equals(1));
-      var span = el.children[0];
-      expect(span, isSpanElement);
-
-      el.appendHtml('<div></div>');
-      expect(el.children.length, equals(2));
-      // Validate that the first item is still first.
-      expect(el.children[0], equals(span));
-      expect(el.children[1], isDivElement);
-    });
-
-    test('documentFragment', () {
-      var fragment = new DocumentFragment();
-      fragment.appendHtml('<span>something</span>');
-      expect(fragment.children.length, equals(1));
-      expect(fragment.children[0], isSpanElement);
-    });
-
-    test('html interpreted in correct context', () {
-      // appendHtml, in order to sanitize, needs to create a document fragment,
-      // but it needs to be created in the right context. If we try to append
-      // table components then the document fragment needs the table context
-      // or it will fail to create them.
-      var el = new TableElement();
-      el.appendHtml('<tr><td>foo</td></tr>');
-      expect(el.children.length, 1);
-      var section = el.children.first;
-      expect(section is TableSectionElement, isTrue);
-      var row = section.children.first;
-      expect(row is TableRowElement, isTrue);
-      var item = row.children.first;
-      expect(item is TableCellElement, isTrue);
-      expect(item.innerHtml, 'foo');
-    });
-
-    test("use body context for elements that are don't support it", () {
-      // Some elements can't be used as context for createContextualFragment,
-      // often because it doesn't make any sense. So adding children to a
-      // <br> has no real effect on the page, but we can do it. But the
-      // document fragment will have to be created in the body context. Verify
-      // that this doesn't throw and that the children show up.
-      var el = new BRElement();
-      el.appendHtml("<p>Stuff</p>");
-      expect(el.children.length, 1);
-      expect(el.children[0].outerHtml, "<p>Stuff</p>");
-    });
-  });
-
-  group('appendText', () {
-    test('htmlelement', () {
-      var el = new DivElement();
-      el.appendText('foo');
-      // No children were created.
-      expect(el.children.length, equals(0));
-      // One text node was added.
-      expect(el.nodes.length, equals(1));
-    });
-
-    test('htmlelement', () {
-      var el = new DivElement();
-      var twoNewLines = "\n\n";
-      el.appendText(twoNewLines);
-      // No children were created.
-      expect(el.children.length, equals(0));
-      // One text node was added.
-      expect(el.nodes.length, equals(1));
-      expect(el.nodes[0], isText);
-      expect(el.nodes[0].text, equals(twoNewLines));
-      expect(el.text, equals(twoNewLines));
-    });
-
-    test('documentFragment', () {
-      var fragment = new DocumentFragment();
-      fragment.appendText('foo');
-      // No children were created.
-      expect(fragment.children.length, equals(0));
-      // One text node was added.
-      expect(fragment.nodes.length, equals(1));
-    });
-  });
-
-  group('insertAdjacentElement', () {
-    test('beforebegin', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      var newChild = new SpanElement();
-      parent.children.add(child);
-
-      child.insertAdjacentElement('beforebegin', newChild);
-
-      expect(parent.children.length, 2);
-      expect(parent.children[0], isSpanElement);
-    });
-
-    test('afterend', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      var newChild = new SpanElement();
-      parent.children.add(child);
-
-      child.insertAdjacentElement('afterend', newChild);
-
-      expect(parent.children.length, 2);
-      expect(parent.children[1], isSpanElement);
-    });
-
-    test('afterbegin', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      var newChild = new SpanElement();
-      parent.children.add(child);
-
-      parent.insertAdjacentElement('afterbegin', newChild);
-
-      expect(parent.children.length, 2);
-      expect(parent.children[0], isSpanElement);
-    });
-
-    test('beforeend', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      var newChild = new SpanElement();
-      parent.children.add(child);
-
-      parent.insertAdjacentElement('beforeend', newChild);
-
-      expect(parent.children.length, 2);
-      expect(parent.children[1], isSpanElement);
-    });
-  });
-
-  group('insertAdjacentHtml', () {
-    test('beforebegin', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      child.insertAdjacentHtml('beforebegin', '<span></span>');
-
-      expect(parent.children.length, 2);
-      expect(parent.children[0], isSpanElement);
-    });
-
-    test('afterend', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      child.insertAdjacentHtml('afterend', '<span></span>');
-
-      expect(parent.children.length, 2);
-      expect(parent.children[1], isSpanElement);
-    });
-
-    test('afterbegin', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      parent.insertAdjacentHtml('afterbegin', '<span></span>');
-
-      expect(parent.children.length, 2);
-      expect(parent.children[0], isSpanElement);
-    });
-
-    test('beforeend', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      parent.insertAdjacentHtml('beforeend', '<span></span>');
-
-      expect(parent.children.length, 2);
-      expect(parent.children[1], isSpanElement);
-    });
-  });
-
-  group('insertAdjacentText', () {
-    test('beforebegin', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      child.insertAdjacentText('beforebegin', 'test');
-
-      expect(parent.nodes.length, 2);
-      expect(parent.nodes[0], isText);
-    });
-
-    test('afterend', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      child.insertAdjacentText('afterend', 'test');
-
-      expect(parent.nodes.length, 2);
-      expect(parent.nodes[1], isText);
-    });
-
-    test('afterbegin', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      parent.insertAdjacentText('afterbegin', 'test');
-
-      expect(parent.nodes.length, 2);
-      expect(parent.nodes[0], isText);
-    });
-
-    test('beforeend', () {
-      var parent = new DivElement();
-      var child = new DivElement();
-      parent.children.add(child);
-
-      parent.insertAdjacentText('beforeend', 'test');
-
-      expect(parent.nodes.length, 2);
-      expect(parent.nodes[1], isText);
-    });
-  });
-}
diff --git a/tests/html/element_animate_test.dart b/tests/html/element_animate_test.dart
deleted file mode 100644
index 99d4149..0000000
--- a/tests/html/element_animate_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2015, 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 element_animate_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('animate_supported', () {
-    test('supported', () {
-      expect(Animation.supported, isTrue);
-    });
-  });
-
-  group('simple_timing', () {
-    test('simple timing', () {
-      var body = document.body;
-      var opacity = num.parse(body.getComputedStyle().opacity);
-      body.animate([
-        {"opacity": 100},
-        {"opacity": 0}
-      ], 100);
-      var newOpacity = num.parse(body.getComputedStyle().opacity);
-      expect(newOpacity == opacity, isTrue);
-    });
-  });
-
-  group('timing_dict', () {
-    test('timing dict', () {
-      var body = document.body;
-      // Animate different characteristics so the tests can run concurrently.
-      var fontSize = body.getComputedStyle().fontSize;
-      var player = body.animate([
-        {"font-size": "500px"},
-        {"font-size": fontSize}
-      ], {
-        "duration": 100
-      });
-      var newFontSize = body.getComputedStyle().fontSize;
-      // Don't bother to parse to numbers, as long as it's changed that
-      // indicates something is happening.
-      expect(newFontSize == fontSize, isFalse);
-      player.on['finish'].listen(expectAsync((_) => 'done'));
-    });
-  });
-
-  group('omit_timing', () {
-    test('omit timing', () {
-      var body = document.body;
-      var player = body.animate([
-        {"transform": "translate(100px, -100%)"},
-        {"transform": "translate(400px, 500px)"}
-      ]);
-      player.on['finish'].listen(expectAsync((_) => 'done'));
-    });
-  });
-}
diff --git a/tests/html/element_classes_svg_test.dart b/tests/html/element_classes_svg_test.dart
deleted file mode 100644
index cf1d8e3..0000000
--- a/tests/html/element_classes_svg_test.dart
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright (c) 2015, 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 ElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:collection';
-import 'dart:html';
-import 'dart:svg' as svg;
-
-// Test for `querySelectorAll(xxx).classes.op()` where the query returns mixed
-// Html and Svg elements.
-
-Element makeElementsContainer() {
-  var e = new Element.html('<ul class="yes foo">'
-      '<li class="yes quux qux">'
-      '</ul>');
-  final svgContent = r"""
-<svg version="1.1">
-  <circle class="yes qux"></circle>
-  <path class="yes classy"></path>
-</svg>""";
-  final svgElement = new svg.SvgElement.svg(svgContent);
-  e.append(svgElement);
-  return e;
-}
-
-Element elementsContainer;
-
-ElementList<Element> elementsSetup() {
-  elementsContainer = makeElementsContainer();
-  document.documentElement.children.add(elementsContainer);
-  var elements = document.querySelectorAll('.yes');
-  expect(elements.length, 4);
-  return elements;
-}
-
-void elementsTearDown() {
-  if (elementsContainer != null) {
-    document.documentElement.children.remove(elementsContainer);
-    elementsContainer = null;
-  }
-}
-
-/// Returns a canonical string for Set<String> and lists of Element's classes.
-String view(var e) {
-  if (e is Set) return '${e.toList()..sort()}';
-  if (e is Element) return view(e.classes);
-  if (e is Iterable) return '${e.map(view).toList()}';
-  throw new ArgumentError('Cannot make canonical view string for: $e}');
-}
-
-main() {
-  useHtmlConfiguration();
-
-  Set<String> extractClasses(Element el) {
-    final match = new RegExp('class="([^"]+)"').firstMatch(el.outerHtml);
-    return new LinkedHashSet.from(match[1].split(' '));
-  }
-
-  tearDown(elementsTearDown);
-
-  test('list_view', () {
-    // Test that the 'view' helper function is behaving.
-    var elements = elementsSetup();
-    expect(view(elements.classes), '[classy, foo, quux, qux, yes]');
-    expect(view(elements),
-        '[[foo, yes], [quux, qux, yes], [qux, yes], [classy, yes]]');
-  });
-
-  test('listClasses=', () {
-    var elements = elementsSetup();
-
-    elements.classes = ['foo', 'qux'];
-    expect(view(elements.classes), '[foo, qux]');
-    expect(view(elements), '[[foo, qux], [foo, qux], [foo, qux], [foo, qux]]');
-
-    var elements2 = document.querySelectorAll('.qux');
-    expect(view(elements2.classes), '[foo, qux]');
-    expect(view(elements2), '[[foo, qux], [foo, qux], [foo, qux], [foo, qux]]');
-
-    for (Element e in elements2) {
-      expect(e.classes, orderedEquals(['foo', 'qux']));
-      expect(extractClasses(e), orderedEquals(['foo', 'qux']));
-    }
-
-    elements.classes = [];
-    expect(view(elements2.classes), '[]');
-    expect(view(elements2), '[[], [], [], []]');
-  });
-
-  test('listMap', () {
-    var elements = elementsSetup();
-    expect(elements.classes.map((c) => c.toUpperCase()).toList(),
-        unorderedEquals(['YES', 'FOO', 'QUX', 'QUUX', 'CLASSY']));
-  });
-
-  test('listContains', () {
-    var elements = elementsSetup();
-    expect(elements.classes.contains('classy'), isTrue);
-    expect(elements.classes.contains('troll'), isFalse);
-  });
-
-  test('listAdd', () {
-    var elements = elementsSetup();
-    var added = elements.classes.add('lassie');
-    expect(added, isNull);
-
-    expect(view(elements.classes), '[classy, foo, lassie, quux, qux, yes]');
-    expect(
-        view(elements),
-        '[[foo, lassie, yes], [lassie, quux, qux, yes], '
-        '[lassie, qux, yes], [classy, lassie, yes]]');
-  });
-
-  test('listRemove', () {
-    var elements = elementsSetup();
-    expect(elements.classes.remove('lassi'), isFalse);
-    expect(view(elements.classes), '[classy, foo, quux, qux, yes]');
-    expect(view(elements),
-        '[[foo, yes], [quux, qux, yes], [qux, yes], [classy, yes]]');
-
-    expect(elements.classes.remove('qux'), isTrue);
-    expect(view(elements.classes), '[classy, foo, quux, yes]');
-    expect(view(elements), '[[foo, yes], [quux, yes], [yes], [classy, yes]]');
-  });
-
-  test('listToggle', () {
-    var elements = elementsSetup();
-    elements.classes.toggle('qux');
-    expect(view(elements.classes), '[classy, foo, quux, qux, yes]');
-    expect(view(elements),
-        '[[foo, qux, yes], [quux, yes], [yes], [classy, qux, yes]]');
-  });
-
-  test('listAddAll', () {
-    var elements = elementsSetup();
-    elements.classes.addAll(['qux', 'lassi', 'sassy']);
-    expect(
-        view(elements.classes), '[classy, foo, lassi, quux, qux, sassy, yes]');
-    expect(
-        view(elements),
-        '[[foo, lassi, qux, sassy, yes], [lassi, quux, qux, sassy, yes], '
-        '[lassi, qux, sassy, yes], [classy, lassi, qux, sassy, yes]]');
-  });
-
-  test('listRemoveAll', () {
-    var elements = elementsSetup();
-    elements.classes.removeAll(['qux', 'classy', 'mumble']);
-    expect(view(elements.classes), '[foo, quux, yes]');
-    expect(view(elements), '[[foo, yes], [quux, yes], [yes], [yes]]');
-
-    elements.classes.removeAll(['foo', 'yes']);
-    expect(view(elements.classes), '[quux]');
-    expect(view(elements), '[[], [quux], [], []]');
-  });
-
-  test('listToggleAll', () {
-    var elements = elementsSetup();
-    elements.classes.toggleAll(['qux', 'mornin']);
-    expect(view(elements.classes), '[classy, foo, mornin, quux, qux, yes]');
-    expect(
-        view(elements),
-        '[[foo, mornin, qux, yes], [mornin, quux, yes], '
-        '[mornin, yes], [classy, mornin, qux, yes]]');
-  });
-
-  test('listRetainAll', () {
-    var elements = elementsSetup();
-    elements.classes.retainAll(['bar', 'baz', 'classy', 'qux']);
-    expect(view(elements.classes), '[classy, qux]');
-    expect(view(elements), '[[], [qux], [qux], [classy]]');
-  });
-
-  test('listRemoveWhere', () {
-    var elements = elementsSetup();
-    elements.classes.removeWhere((s) => s.startsWith('q'));
-    expect(view(elements.classes), '[classy, foo, yes]');
-    expect(view(elements), '[[foo, yes], [yes], [yes], [classy, yes]]');
-  });
-
-  test('listRetainWhere', () {
-    var elements = elementsSetup();
-    elements.classes.retainWhere((s) => s.startsWith('q'));
-    expect(view(elements.classes), '[quux, qux]');
-    expect(view(elements), '[[], [quux, qux], [qux], []]');
-  });
-
-  test('listContainsAll', () {
-    var elements = elementsSetup();
-    expect(elements.classes.containsAll(['qux', 'mornin']), isFalse);
-    expect(elements.classes.containsAll(['qux', 'classy']), isTrue);
-  });
-}
diff --git a/tests/html/element_classes_test.dart b/tests/html/element_classes_test.dart
deleted file mode 100644
index d9341b9..0000000
--- a/tests/html/element_classes_test.dart
+++ /dev/null
@@ -1,395 +0,0 @@
-// Copyright (c) 2011, 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 ElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:collection';
-import 'dart:html';
-
-Element makeElement() => new Element.tag('div');
-
-Element makeElementWithClasses() =>
-    new Element.html('<div class="foo bar baz"></div>');
-
-Set<String> makeClassSet() => makeElementWithClasses().classes;
-
-Element makeListElement() => new Element.html('<ul class="foo bar baz">'
-    '<li class="quux qux">'
-    '<li class="meta">'
-    '<li class="classy lassy">'
-    '<li class="qux lassy">'
-    '</ul>');
-
-Element listElement;
-
-ElementList<Element> listElementSetup() {
-  listElement = makeListElement();
-  document.documentElement.children.add(listElement);
-  return document.querySelectorAll('li');
-}
-
-void listElementTearDown() {
-  if (listElement != null) {
-    document.documentElement.children.remove(listElement);
-    listElement = null;
-  }
-}
-
-/// Returns a canonical string for Set<String> and lists of Element's classes.
-String view(var e) {
-  if (e is Set) return '${e.toList()..sort()}';
-  if (e is Element) return view(e.classes);
-  if (e is Iterable) return '${e.map(view).toList()}';
-  throw new ArgumentError('Cannot make canonical view string for: $e}');
-}
-
-main() {
-  useHtmlConfiguration();
-
-  Set<String> extractClasses(Element el) {
-    final match = new RegExp('class="([^"]+)"').firstMatch(el.outerHtml);
-    return new LinkedHashSet.from(match[1].split(' '));
-  }
-
-  test('affects the "class" attribute', () {
-    final el = makeElementWithClasses();
-    el.classes.add('qux');
-    expect(extractClasses(el), orderedEquals(['foo', 'bar', 'baz', 'qux']));
-  });
-
-  test('is affected by the "class" attribute', () {
-    final el = makeElementWithClasses();
-    el.attributes['class'] = 'foo qux';
-    expect(el.classes, orderedEquals(['foo', 'qux']));
-  });
-
-  test('classes=', () {
-    final el = makeElementWithClasses();
-    el.classes = ['foo', 'qux'];
-    expect(el.classes, orderedEquals(['foo', 'qux']));
-    expect(extractClasses(el), orderedEquals(['foo', 'qux']));
-  });
-
-  test('toString', () {
-    expect(makeClassSet().toString().split(' '),
-        orderedEquals(['foo', 'bar', 'baz']));
-    expect(makeElement().classes.toString(), '');
-  });
-
-  test('forEach', () {
-    final classes = <String>[];
-    makeClassSet().forEach(classes.add);
-    expect(classes, orderedEquals(['foo', 'bar', 'baz']));
-  });
-
-  test('iterator', () {
-    final classes = <String>[];
-    for (var el in makeClassSet()) {
-      classes.add(el);
-    }
-    expect(classes, orderedEquals(['foo', 'bar', 'baz']));
-  });
-
-  test('map', () {
-    expect(makeClassSet().map((c) => c.toUpperCase()).toList(),
-        orderedEquals(['FOO', 'BAR', 'BAZ']));
-  });
-
-  test('where', () {
-    expect(makeClassSet().where((c) => c.contains('a')).toList(),
-        orderedEquals(['bar', 'baz']));
-  });
-
-  test('every', () {
-    expect(makeClassSet().every((c) => c is String), isTrue);
-    expect(makeClassSet().every((c) => c.contains('a')), isFalse);
-  });
-
-  test('any', () {
-    expect(makeClassSet().any((c) => c.contains('a')), isTrue);
-    expect(makeClassSet().any((c) => c is num), isFalse);
-  });
-
-  test('isEmpty', () {
-    expect(makeClassSet().isEmpty, isFalse);
-    expect(makeElement().classes.isEmpty, isTrue);
-  });
-
-  test('length', () {
-    expect(makeClassSet().length, 3);
-    expect(makeElement().classes.length, 0);
-  });
-
-  test('contains', () {
-    expect(makeClassSet().contains('foo'), isTrue);
-    expect(makeClassSet().contains('qux'), isFalse);
-  });
-
-  test('contains-bad', () {
-    // Non-strings return `false`.
-    // Strings need to be valid tokens.
-    final classes = makeClassSet();
-    expect(classes.contains(1), isFalse);
-    expect(() => classes.contains(''), throws);
-    expect(() => classes.contains('foo bar'), throws);
-  });
-
-  test('add', () {
-    final classes = makeClassSet();
-    var added = classes.add('qux');
-    expect(added, isTrue);
-    expect(classes, orderedEquals(['foo', 'bar', 'baz', 'qux']));
-
-    added = classes.add('qux');
-    expect(added, isFalse);
-    final list = new List.from(classes);
-    list.sort((a, b) => a.compareTo(b));
-    expect(list, orderedEquals(['bar', 'baz', 'foo', 'qux']),
-        reason: "The class set shouldn't have duplicate elements.");
-  });
-
-  test('add-bad', () {
-    final classes = makeClassSet();
-    expect(() => classes.add(''), throws);
-    expect(() => classes.add('foo bar'), throws);
-  });
-
-  test('remove', () {
-    final classes = makeClassSet();
-    classes.remove('bar');
-    expect(classes, orderedEquals(['foo', 'baz']));
-    classes.remove('qux');
-    expect(classes, orderedEquals(['foo', 'baz']));
-  });
-
-  test('remove-bad', () {
-    final classes = makeClassSet();
-    expect(() => classes.remove(''), throws);
-    expect(() => classes.remove('foo bar'), throws);
-  });
-
-  test('toggle', () {
-    final classes = makeClassSet();
-    classes.toggle('bar');
-    expect(classes, orderedEquals(['foo', 'baz']));
-    classes.toggle('qux');
-    expect(classes, orderedEquals(['foo', 'baz', 'qux']));
-
-    classes.toggle('qux', true);
-    expect(classes, orderedEquals(['foo', 'baz', 'qux']));
-    classes.toggle('qux', false);
-    expect(classes, orderedEquals(['foo', 'baz']));
-    classes.toggle('qux', false);
-    expect(classes, orderedEquals(['foo', 'baz']));
-    classes.toggle('qux', true);
-    expect(classes, orderedEquals(['foo', 'baz', 'qux']));
-  });
-
-  test('toggle-bad', () {
-    final classes = makeClassSet();
-    expect(() => classes.toggle(''), throws);
-    expect(() => classes.toggle('', true), throws);
-    expect(() => classes.toggle('', false), throws);
-    expect(() => classes.toggle('foo bar'), throws);
-    expect(() => classes.toggle('foo bar', true), throws);
-    expect(() => classes.toggle('foo bar', false), throws);
-  });
-
-  test('addAll', () {
-    final classes = makeClassSet();
-    classes.addAll(['bar', 'qux', 'bip']);
-    expect(classes, orderedEquals(['foo', 'bar', 'baz', 'qux', 'bip']));
-  });
-
-  test('removeAll', () {
-    final classes = makeClassSet();
-    classes.removeAll(['bar', 'baz', 'qux']);
-    expect(classes, orderedEquals(['foo']));
-  });
-
-  test('toggleAll', () {
-    final classes = makeClassSet();
-    classes.toggleAll(['bar', 'foo']);
-    expect(classes, orderedEquals(['baz']));
-    classes.toggleAll(['qux', 'quux']);
-    expect(classes, orderedEquals(['baz', 'qux', 'quux']));
-    classes.toggleAll(['bar', 'foo'], true);
-    expect(classes, orderedEquals(['baz', 'qux', 'quux', 'bar', 'foo']));
-    classes.toggleAll(['baz', 'quux'], false);
-    expect(classes, orderedEquals(['qux', 'bar', 'foo']));
-  });
-
-  test('retainAll', () {
-    final classes = makeClassSet();
-    classes.retainAll(['bar', 'baz', 'qux']);
-    expect(classes, orderedEquals(['bar', 'baz']));
-  });
-
-  test('removeWhere', () {
-    final classes = makeClassSet();
-    classes.removeWhere((s) => s.startsWith('b'));
-    expect(classes, orderedEquals(['foo']));
-  });
-
-  test('retainWhere', () {
-    final classes = makeClassSet();
-    classes.retainWhere((s) => s.startsWith('b'));
-    expect(classes, orderedEquals(['bar', 'baz']));
-  });
-
-  test('containsAll', () {
-    final classes = makeClassSet();
-    expect(classes.containsAll(['foo', 'baz']), isTrue);
-    expect(classes.containsAll(['foo', 'qux']), isFalse);
-    expect(classes.containsAll(['foo', 'baz'].toSet()), isTrue);
-    expect(classes.containsAll(['foo', 'qux'].toSet()), isFalse);
-  });
-
-  test('intersection', () {
-    final classes = makeClassSet();
-    expect(classes.intersection(['foo', 'qux', 'baz'].toSet()),
-        unorderedEquals(['foo', 'baz']));
-  });
-
-  test('clear', () {
-    final classes = makeClassSet();
-    classes.clear();
-    expect(classes, equals([]));
-  });
-
-  test('order', () {
-    var classes = makeClassSet();
-    classes.add('aardvark');
-    expect(classes, orderedEquals(['foo', 'bar', 'baz', 'aardvark']));
-    classes.toggle('baz');
-    expect(classes, orderedEquals(['foo', 'bar', 'aardvark']));
-    classes.toggle('baz');
-    expect(classes, orderedEquals(['foo', 'bar', 'aardvark', 'baz']));
-  });
-
-  tearDown(listElementTearDown);
-
-  test('list_view', () {
-    // Test that the 'view' helper function is behaving.
-    var elements = listElementSetup();
-    expect(view(elements.classes), '[classy, lassy, meta, quux, qux]');
-    expect(
-        view(elements), '[[quux, qux], [meta], [classy, lassy], [lassy, qux]]');
-  });
-
-  test('listClasses=', () {
-    var elements = listElementSetup();
-    elements.classes = ['foo', 'qux'];
-    elements = document.querySelectorAll('li');
-    for (Element e in elements) {
-      expect(e.classes, orderedEquals(['foo', 'qux']));
-      expect(extractClasses(e), orderedEquals(['foo', 'qux']));
-    }
-
-    elements.classes = [];
-    expect(view(elements.classes), '[]');
-    expect(view(elements), '[[], [], [], []]');
-  });
-
-  test('listMap', () {
-    var elements = listElementSetup();
-    expect(elements.classes.map((c) => c.toUpperCase()).toList(),
-        unorderedEquals(['QUX', 'QUUX', 'META', 'CLASSY', 'LASSY']));
-  });
-
-  test('listContains', () {
-    var elements = listElementSetup();
-    expect(elements.classes.contains('lassy'), isTrue);
-    expect(elements.classes.contains('foo'), isFalse);
-  });
-
-  test('listAdd', () {
-    var elements = listElementSetup();
-    var added = elements.classes.add('lassie');
-    expect(added, isNull);
-
-    expect(view(elements.classes), '[classy, lassie, lassy, meta, quux, qux]');
-    expect(
-        view(elements),
-        '[[lassie, quux, qux], [lassie, meta], [classy, lassie, lassy], '
-        '[lassie, lassy, qux]]');
-  });
-
-  test('listRemove', () {
-    var elements = listElementSetup();
-    expect(elements.classes.remove('lassi'), isFalse);
-    expect(view(elements.classes), '[classy, lassy, meta, quux, qux]');
-    expect(
-        view(elements), '[[quux, qux], [meta], [classy, lassy], [lassy, qux]]');
-
-    expect(elements.classes.remove('qux'), isTrue);
-    expect(view(elements.classes), '[classy, lassy, meta, quux]');
-    expect(view(elements), '[[quux], [meta], [classy, lassy], [lassy]]');
-  });
-
-  test('listToggle', () {
-    var elements = listElementSetup();
-    elements.classes.toggle('qux');
-    expect(view(elements.classes), '[classy, lassy, meta, quux, qux]');
-    expect(
-        view(elements), '[[quux], [meta, qux], [classy, lassy, qux], [lassy]]');
-  });
-
-  test('listAddAll', () {
-    var elements = listElementSetup();
-    elements.classes.addAll(['qux', 'lassi', 'sassy']);
-    expect(view(elements.classes),
-        '[classy, lassi, lassy, meta, quux, qux, sassy]');
-    expect(
-        view(elements),
-        '[[lassi, quux, qux, sassy], [lassi, meta, qux, sassy], '
-        '[classy, lassi, lassy, qux, sassy], [lassi, lassy, qux, sassy]]');
-  });
-
-  test('listRemoveAll', () {
-    var elements = listElementSetup();
-    elements.classes.removeAll(['qux', 'lassy', 'meta']);
-    expect(view(elements.classes), '[classy, quux]');
-    expect(view(elements), '[[quux], [], [classy], []]');
-  });
-
-  test('listToggleAll', () {
-    var elements = listElementSetup();
-    elements.classes.toggleAll(['qux', 'meta', 'mornin']);
-    expect(view(elements.classes), '[classy, lassy, meta, mornin, quux, qux]');
-    expect(
-        view(elements),
-        '[[meta, mornin, quux], [mornin, qux], '
-        '[classy, lassy, meta, mornin, qux], [lassy, meta, mornin]]');
-  });
-
-  test('listRetainAll', () {
-    var elements = listElementSetup();
-    elements.classes.retainAll(['bar', 'baz', 'qux']);
-    expect(view(elements.classes), '[qux]');
-    expect(view(elements), '[[qux], [], [], [qux]]');
-  });
-
-  test('listRemoveWhere', () {
-    var elements = listElementSetup();
-    elements.classes.removeWhere((s) => s.startsWith('q'));
-    expect(view(elements.classes), '[classy, lassy, meta]');
-    expect(view(elements), '[[], [meta], [classy, lassy], [lassy]]');
-  });
-
-  test('listRetainWhere', () {
-    var elements = listElementSetup();
-    elements.classes.retainWhere((s) => s.startsWith('q'));
-    expect(view(elements.classes), '[quux, qux]');
-    expect(view(elements), '[[quux, qux], [], [], [qux]]');
-  });
-
-  test('listContainsAll', () {
-    var elements = listElementSetup();
-    expect(elements.classes.containsAll(['qux', 'meta', 'mornin']), isFalse);
-    expect(elements.classes.containsAll(['qux', 'lassy', 'classy']), isTrue);
-  });
-}
diff --git a/tests/html/element_constructor_1_test.dart b/tests/html/element_constructor_1_test.dart
deleted file mode 100644
index 7d5ee05..0000000
--- a/tests/html/element_constructor_1_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Put universally passing event constructors in this file.
-// Move constructors that fail on some configuration to their own
-// element_constructor_foo_test.dart file.
-
-library ElementConstructorTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isAnchorElement =
-      predicate((x) => x is AnchorElement, 'is an AnchorElement');
-  var isAreaElement = predicate((x) => x is AreaElement, 'is an AreaElement');
-  var isDivElement = predicate((x) => x is DivElement, 'is a DivElement');
-  var isCanvasElement =
-      predicate((x) => x is CanvasElement, 'is a CanvasElement');
-  var isParagraphElement =
-      predicate((x) => x is ParagraphElement, 'is a ParagraphElement');
-  var isSpanElement = predicate((x) => x is SpanElement, 'is a SpanElement');
-  var isSelectElement =
-      predicate((x) => x is SelectElement, 'is a SelectElement');
-
-  test('anchor1', () {
-    var e = new AnchorElement();
-    expect(e, isAnchorElement);
-  });
-
-  test('anchor2', () {
-    var e = new AnchorElement(href: '#blah');
-    expect(e, isAnchorElement);
-    expect(e.href, endsWith('#blah'));
-  });
-
-  test('area', () {
-    var e = new AreaElement();
-    expect(e, isAreaElement);
-  });
-
-  // AudioElement tested in audioelement_test.dart
-
-  test('div', () {
-    var e = new DivElement();
-    expect(e, isDivElement);
-  });
-
-  test('canvas1', () {
-    var e = new CanvasElement();
-    expect(e, isCanvasElement);
-  });
-
-  test('canvas2', () {
-    var e = new CanvasElement(height: 100, width: 200);
-    expect(e, isCanvasElement);
-    expect(e.width, 200);
-    expect(e.height, 100);
-  });
-
-  test('p', () {
-    var e = new ParagraphElement();
-    expect(e, isParagraphElement);
-  });
-
-  test('span', () {
-    var e = new SpanElement();
-    expect(e, isSpanElement);
-  });
-
-  test('select', () {
-    var e = new SelectElement();
-    expect(e, isSelectElement);
-  });
-}
diff --git a/tests/html/element_dimensions_test.dart b/tests/html/element_dimensions_test.dart
deleted file mode 100644
index 32df16b..0000000
--- a/tests/html/element_dimensions_test.dart
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright (c) 2013, 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 element_dimensions_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isElement = predicate((x) => x is Element, 'is an Element');
-  var isCanvasElement =
-      predicate((x) => x is CanvasElement, 'is a CanvasElement');
-  var isDivElement = predicate((x) => x is DivElement, 'is a isDivElement');
-
-  var div = new DivElement();
-  div.id = 'test';
-  document.body.nodes.add(div);
-
-  void initDiv() {
-    var style = div.style;
-    style
-      ..padding = '4px'
-      ..border = '0px solid #fff'
-      ..margin = '6px'
-      ..height = '10px'
-      ..width = '11px'
-      ..boxSizing = 'content-box'
-      ..overflow = 'visible';
-  }
-
-  div.nodes.addAll([
-    new DivElement(),
-    new CanvasElement(),
-    new DivElement(),
-    new Text('Hello'),
-    new DivElement(),
-    new Text('World'),
-    new CanvasElement()
-  ]);
-
-  group('dimensions', () {
-    setUp(initDiv);
-
-    test('contentEdge.height', () {
-      var all1 = querySelectorAll('#test');
-
-      expect(all1.contentEdge.height, 10);
-      expect(all1[0].getComputedStyle().getPropertyValue('height'), '10px');
-
-      all1.contentEdge.height = new Dimension.px(600);
-      all1.contentEdge.height = 600;
-      expect(all1.contentEdge.height, 600);
-      expect(all1[0].getComputedStyle().getPropertyValue('height'), '600px');
-      all1[0].style.visibility = 'hidden';
-      expect(all1.contentEdge.height, 600);
-      all1[0].style.visibility = 'visible';
-
-      // If user passes in a negative number, set height to 0.
-      all1.contentEdge.height = new Dimension.px(-1);
-      expect(all1.contentEdge.height, 0);
-
-      // Adding padding or border shouldn't affect the height for
-      // non-box-sizing.
-      div.style.padding = '20pc';
-      expect(all1.contentEdge.height, 0);
-      div.style.border = '2px solid #fff';
-      expect(all1.contentEdge.height, 0);
-    });
-
-    test('contentEdge.height with border-box', () {
-      var all1 = querySelectorAll('#test');
-      div.style.boxSizing = 'border-box';
-      expect(all1.contentEdge.height, 2);
-      div.style.padding = '20pc';
-      expect(all1.contentEdge.height, 0);
-      div.style.border = '2px solid #fff';
-      expect(all1.contentEdge.height, 0);
-    });
-
-    test('contentEdge.width', () {
-      var all1 = querySelectorAll('#test');
-      expect(all1.contentEdge.width, 11);
-      expect(all1[0].getComputedStyle().getPropertyValue('width'), '11px');
-
-      all1.contentEdge.width = new Dimension.px(600);
-      expect(all1.contentEdge.width, 600);
-      expect(all1[0].getComputedStyle().getPropertyValue('width'), '600px');
-      all1[0].style.visibility = 'hidden';
-      expect(all1.contentEdge.width, 600);
-      all1[0].style.visibility = 'visible';
-
-      // If user passes in a negative number, set width to 0.
-      all1.contentEdge.width = new Dimension.px(-1);
-      expect(all1.contentEdge.width, 0);
-
-      // Adding padding or border shouldn't affect the width.
-      div.style.padding = '20pc';
-      expect(all1.contentEdge.width, 0);
-      div.style.border = '2px solid #fff';
-      expect(all1.contentEdge.width, 0);
-    });
-
-    test('contentEdge.width with border-box', () {
-      var all1 = querySelectorAll('#test');
-      div.style.boxSizing = 'border-box';
-      expect(all1.contentEdge.width, 3);
-      div.style.padding = '20pc';
-      expect(all1.contentEdge.width, 0);
-      div.style.border = '2px solid #fff';
-      expect(all1.contentEdge.width, 0);
-    });
-
-    test('paddingEdge.height', () {
-      var all1 = querySelectorAll('#test');
-      expect(all1.paddingEdge.height, 18);
-      all1[0].style.visibility = 'hidden';
-      expect(all1.paddingEdge.height, 18);
-      all1[0].style.visibility = 'visible';
-
-      // Adding border shouldn't affect the paddingEdge.height.
-      div.style.border = '2px solid #fff';
-      expect(all1.paddingEdge.height, 18);
-      // Adding padding should affect the paddingEdge.height.
-      div.style.padding = '20pc';
-      expect(all1.paddingEdge.height, 650);
-    });
-
-    test('paddingEdge.height with border-box', () {
-      var all1 = querySelectorAll('#test');
-      div.style.boxSizing = 'border-box';
-      expect(all1.paddingEdge.height, 10);
-      div.style.padding = '20pc';
-      expect(all1.paddingEdge.height, 640);
-      div.style.border = '2px solid #fff';
-      expect(all1.paddingEdge.height, 640);
-    });
-
-    test('paddingEdge.width', () {
-      var all1 = querySelectorAll('#test');
-      expect(all1.paddingEdge.width, 19);
-      all1[0].style.visibility = 'hidden';
-      expect(all1.paddingEdge.width, 19);
-      all1[0].style.visibility = 'visible';
-
-      // Adding border shouldn't affect the width.
-      div.style.border = '2px solid #fff';
-      expect(all1.paddingEdge.width, 19);
-
-      // Adding padding should affect the paddingEdge.width.
-      div.style.padding = '20pc';
-      expect(all1.paddingEdge.width, 651);
-    });
-
-    test('paddingEdge.width with border-box', () {
-      var all1 = querySelectorAll('#test');
-      div.style.boxSizing = 'border-box';
-      expect(all1.paddingEdge.width, 11);
-      div.style.padding = '20pc';
-      expect(all1.paddingEdge.width, 640);
-      div.style.border = '2px solid #fff';
-      expect(all1.paddingEdge.width, 640);
-    });
-
-    test('borderEdge.height and marginEdge.height', () {
-      var all1 = querySelectorAll('#test');
-      expect(div.borderEdge.height, 18);
-      expect(div.marginEdge.height, 30);
-      expect(all1.borderEdge.height, 18);
-      expect(all1.marginEdge.height, 30);
-      all1[0].style.visibility = 'hidden';
-      expect(all1.borderEdge.height, 18);
-      all1[0].style.visibility = 'visible';
-
-      // Adding border should affect the borderEdge.height.
-      div.style.border = '2px solid #fff';
-      expect(all1.borderEdge.height, 22);
-      // Adding padding should affect the borderEdge.height.
-      div.style.padding = '20pc';
-      expect(all1.borderEdge.height, 654);
-      expect(all1.marginEdge.height, 666);
-    });
-
-    test('borderEdge.height and marginEdge.height with border-box', () {
-      var all1 = querySelectorAll('#test');
-      div.style.boxSizing = 'border-box';
-      expect(all1.borderEdge.height, 10);
-      expect(all1.marginEdge.height, 22);
-      div.style.padding = '20pc';
-      expect(all1.borderEdge.height, 640);
-      expect(all1.marginEdge.height, 652);
-      div.style.border = '2px solid #fff';
-      expect(all1.borderEdge.height, 644);
-      expect(all1.marginEdge.height, 656);
-    });
-
-    test('borderEdge.width and marginEdge.width', () {
-      var all1 = querySelectorAll('#test');
-      expect(all1.borderEdge.width, 19);
-      expect(all1.marginEdge.width, 31);
-
-      // Adding border should affect the width.
-      div.style.border = '2px solid #fff';
-      expect(all1.borderEdge.width, 23);
-
-      // Adding padding should affect the borderEdge.width.
-      div.style.padding = '20pc';
-      expect(all1.borderEdge.width, 655);
-      expect(all1.marginEdge.width, 667);
-    });
-
-    test('borderEdge.width and marginEdge.width with border-box', () {
-      var all1 = querySelectorAll('#test');
-      div.style.boxSizing = 'border-box';
-      expect(all1.borderEdge.width, 11);
-      expect(all1.marginEdge.width, 23);
-      div.style.padding = '20pc';
-      expect(all1.borderEdge.width, 640);
-      expect(all1.marginEdge.width, 652);
-      div.style.border = '2px solid #fff';
-      expect(all1.borderEdge.width, 644);
-      expect(all1.marginEdge.width, 656);
-    });
-
-    test('left and top', () {
-      div.style.border = '1px solid #fff';
-      div.style.margin = '6px 7px';
-      div.style.padding = '4px 5px';
-      var all1 = querySelectorAll('#test');
-
-      expect(all1.borderEdge.left, all1[0].getBoundingClientRect().left);
-      expect(all1.borderEdge.top, all1[0].getBoundingClientRect().top);
-
-      expect(
-          all1.contentEdge.left, all1[0].getBoundingClientRect().left + 1 + 5);
-      expect(all1.contentEdge.top, all1[0].getBoundingClientRect().top + 1 + 4);
-
-      expect(all1.marginEdge.left, all1[0].getBoundingClientRect().left - 7);
-      expect(all1.marginEdge.top, all1[0].getBoundingClientRect().top - 6);
-
-      expect(all1.paddingEdge.left, all1[0].getBoundingClientRect().left + 1);
-      expect(all1.paddingEdge.top, all1[0].getBoundingClientRect().top + 1);
-    });
-
-    test('setHeight ElementList', () {
-      div.style.border = '1px solid #fff';
-      div.style.margin = '6px 7px';
-      div.style.padding = '4px 5px';
-      var all1 = querySelectorAll('div');
-      all1.contentEdge.height = new Dimension.px(200);
-      all1.contentEdge.height = 200;
-      for (Element elem in all1) {
-        expect(elem.contentEdge.height, 200);
-      }
-      all1.contentEdge.height = new Dimension.px(10);
-      for (Element elem in all1) {
-        expect(elem.contentEdge.height, 10);
-      }
-    });
-  });
-}
diff --git a/tests/html/element_offset_test.dart b/tests/html/element_offset_test.dart
deleted file mode 100644
index 567e464..0000000
--- a/tests/html/element_offset_test.dart
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2013, 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 element_offset_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:async';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-  void initPage() {
-    var level1 = new UListElement()
-      ..classes.add('level-1')
-      ..children.add(new LIElement()..innerHtml = 'I');
-    var itemii = new LIElement()
-      ..classes.add('item-ii')
-      ..style.position = 'relative'
-      ..style.top = '4px'
-      ..innerHtml = 'II';
-    level1.children.add(itemii);
-    var level2 = new UListElement();
-    itemii.children.add(level2);
-    var itema = new LIElement()
-      ..classes.add('item-a')
-      ..innerHtml = 'A';
-    var item1 = new LIElement()
-      ..classes.add('item-1')
-      ..innerHtml = '1';
-    var item2 = new LIElement()
-      ..classes.add('item-2')
-      ..innerHtml = '2';
-    var level3 = new UListElement()..children.addAll([item1, item2]);
-    var itemb = new LIElement()
-      ..classes.add('item-b')
-      ..style.position = 'relative'
-      ..style.top = '20px'
-      ..style.left = '150px'
-      ..innerHtml = 'B'
-      ..children.add(level3);
-    level2.children.addAll([itema, itemb, new LIElement()..innerHtml = 'C']);
-    document.body.append(level1);
-    document.body.style.whiteSpace = 'nowrap';
-
-    var bar = new DivElement()..classes.add('bar');
-    var style = bar.style;
-    style
-      ..position = 'absolute'
-      ..top = '8px'
-      ..left = '90px';
-    var baz = new DivElement()..classes.add('baz');
-    style = baz.style;
-    style
-      ..position = 'absolute'
-      ..top = '600px'
-      ..left = '7000px';
-    bar.children.add(baz);
-
-    var quux = new DivElement()..classes.add('quux');
-    var qux = new DivElement()..classes.add('qux')..children.add(quux);
-
-    document.body.append(bar);
-    document.body.append(qux);
-  }
-
-  group('offset', () {
-    setUp(initPage);
-
-    test('offsetTo', () {
-      var itema = querySelector('.item-a');
-      var itemb = querySelector('.item-b');
-      var item1 = querySelector('.item-1');
-      var itemii = querySelector('.item-ii');
-      var level1 = querySelector('.level-1');
-      var baz = querySelector('.baz');
-      var bar = querySelector('.bar');
-      var qux = querySelector('.qux');
-      var quux = querySelector('.quux');
-
-      var point = itema.offsetTo(itemii);
-      expect(point.x, 40);
-      expect(point.y, inInclusiveRange(16, 20));
-
-      expect(baz.offsetTo(bar).x, 7000);
-      expect(baz.offsetTo(bar).y, inInclusiveRange(599, 604));
-
-      qux.style.position = 'fixed';
-      expect(quux.offsetTo(qux).x, 0);
-      expect(quux.offsetTo(qux).y, 0);
-
-      point = item1.offsetTo(itemb);
-      expect(point.x, 40);
-      expect(point.y, inInclusiveRange(16, 20));
-      point = itemb.offsetTo(itemii);
-      expect(point.x, 190);
-      expect(point.y, inInclusiveRange(52, 60));
-      point = item1.offsetTo(itemii);
-      expect(point.x, 230);
-      expect(point.y, inInclusiveRange(68, 80));
-    });
-
-    test('documentOffset', () {
-      var bar = querySelector('.bar');
-      var baz = querySelector('.baz');
-      var qux = querySelector('.qux');
-      var quux = querySelector('.quux');
-      var itema = querySelector('.item-a');
-      var itemb = querySelector('.item-b');
-      var item1 = querySelector('.item-1');
-      var itemii = querySelector('.item-ii');
-
-      expect(itema.documentOffset.x, 88);
-      expect(itema.documentOffset.y, inInclusiveRange(111, 160));
-
-      expect(itemii.documentOffset.x, 48);
-      expect(itemii.documentOffset.y, inInclusiveRange(95, 145));
-
-      expect(itemb.documentOffset.x, 238);
-      expect(itemb.documentOffset.y, inInclusiveRange(147, 205));
-
-      expect(item1.documentOffset.x, 278);
-      expect(item1.documentOffset.y, inInclusiveRange(163, 222));
-
-      expect(bar.documentOffset.x, 90);
-      expect(bar.documentOffset.y, 8);
-
-      expect(baz.documentOffset.x, 7090);
-      expect(baz.documentOffset.y, 608);
-
-      expect(qux.documentOffset.x, 8);
-      expect(qux.documentOffset.y, inInclusiveRange(203, 240));
-
-      expect(quux.documentOffset.x, 8);
-      expect(quux.documentOffset.y, inInclusiveRange(203, 240));
-    });
-  });
-}
diff --git a/tests/html/element_test.dart b/tests/html/element_test.dart
deleted file mode 100644
index af0ec74..0000000
--- a/tests/html/element_test.dart
+++ /dev/null
@@ -1,1005 +0,0 @@
-// Copyright (c) 2011, 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 ElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:async';
-import 'dart:html';
-import 'dart:svg' as svg;
-import 'utils.dart';
-
-expectLargeRect(Rectangle rect) {
-  expect(rect.top, 0);
-  expect(rect.left, 0);
-  expect(rect.width, greaterThan(100));
-  expect(rect.height, greaterThan(100));
-  expect(rect.bottom, rect.top + rect.height);
-  expect(rect.right, rect.left + rect.width);
-}
-
-void testUnsupported(String name, void f()) {
-  test(name, () {
-    expect(f, throwsUnsupportedError);
-  });
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  var isHRElement = predicate((x) => x is HRElement, 'is a HRElement');
-  var isBRElement = predicate((x) => x is BRElement, 'is a BRElement');
-  var isInputElement =
-      predicate((x) => x is InputElement, 'is an InputElement');
-  var isImageElement =
-      predicate((x) => x is ImageElement, 'is an ImageElement');
-  var isSpanElement = predicate((x) => x is SpanElement, 'is a SpanElement');
-  var isAnchorElement =
-      predicate((x) => x is AnchorElement, 'is an AnchorElement');
-  var isElementList =
-      predicate((x) => x is List<Element>, 'is a List<Element>');
-  var isElementIterable =
-      predicate((x) => x is Iterable<Element>, 'is an Iterable<Element>');
-  var isHeadingElement =
-      predicate((x) => x is HeadingElement, 'is a HeadingElement');
-
-  Element makeElement() => new Element.tag('div');
-
-  Element makeElementWithChildren() =>
-      new Element.html("<div><br/><img/><input/></div>");
-
-  group('position', () {
-    test('computedStyle', () {
-      final element = document.body;
-      var style = element.getComputedStyle();
-      expect(style.getPropertyValue('left'), 'auto');
-    });
-
-    test('client position synchronous', () {
-      final container = new Element.tag("div");
-      container.style.position = 'absolute';
-      container.style.top = '8px';
-      container.style.left = '9px';
-      final element = new Element.tag("div");
-      element.style.width = '200px';
-      element.style.height = '200px';
-      container.children.add(element);
-      document.body.children.add(container);
-
-      expect(element.client.width, greaterThan(100));
-      expect(element.client.height, greaterThan(100));
-      expect(element.offset.width, greaterThan(100));
-      expect(element.offset.height, greaterThan(100));
-      expect(element.scrollWidth, greaterThan(100));
-      expect(element.scrollHeight, greaterThan(100));
-      expect(element.getBoundingClientRect().left, 9);
-      expect(element.getBoundingClientRect().top, 8);
-
-      expect(element.documentOffset.x, 9);
-      expect(element.documentOffset.y, 8);
-      container.remove();
-    });
-  });
-
-  group('constructors', () {
-    test('error', () {
-      expect(() => new Element.html('<br/><br/>'), throwsStateError);
-    });
-
-    test('.html has no parent',
-        () => expect(new Element.html('<br/>').parent, isNull));
-
-    test('.html table', () {
-      // http://developers.whatwg.org/tabular-data.html#tabular-data
-      var node = new Element.html('''
-<table>
- <caption>Characteristics with positive and negative sides</caption>
- <thead>
-  <tr>
-   <th id="n"> Negative
-   <th> Characteristic
-   <th> Positive
- <tbody>
-  <tr>
-   <td headers="n r1"> Sad
-   <th id="r1"> Mood
-   <td> Happy
-  <tr>
-   <td headers="n r2"> Failing
-   <th id="r2"> Grade
-   <td> Passing
-</table>''');
-      expect(node, predicate((x) => x is TableElement, 'is a TableElement'));
-      expect(node.tagName, 'TABLE');
-      expect(node.parent, isNull);
-      expect(node.caption.innerHtml,
-          'Characteristics with positive and negative sides');
-      expect(node.tHead.rows.length, 1);
-      expect(node.tHead.rows[0].cells.length, 3);
-      expect(node.tBodies.length, 1);
-      expect(node.tBodies[0].rows.length, 2);
-      expect(node.tBodies[0].rows[1].cells.map((c) => c.innerHtml),
-          [' Failing\n   ', ' Grade\n   ', ' Passing\n']);
-    });
-
-    test('.html caption', () {
-      var table = new TableElement();
-      var node = table.createFragment('<caption><p>Table 1.').nodes.single;
-      expect(
-          node,
-          predicate(
-              (x) => x is TableCaptionElement, 'is a TableCaptionElement'));
-      expect(node.tagName, 'CAPTION');
-      expect(node.parent, isNull);
-      expect(node.innerHtml, '<p>Table 1.</p>');
-    });
-
-    test('.html colgroup', () {
-      var table = new TableElement();
-      var node =
-          table.createFragment('<colgroup> <col> <col> <col>').nodes.single;
-      expect(
-          node, predicate((x) => x is TableColElement, 'is a TableColElement'));
-      expect(node.tagName, 'COLGROUP');
-      expect(node.parent, isNull);
-      expect(node.innerHtml, ' <col> <col> <col>');
-    });
-
-    test('.html tbody', () {
-      var innerHtml = '<tr><td headers="n r1">Sad</td><td>Happy</td></tr>';
-      var table = new TableElement();
-      var node = table.createFragment('<tbody>$innerHtml').nodes.single;
-      expect(
-          node,
-          predicate(
-              (x) => x is TableSectionElement, 'is a TableSectionElement'));
-      expect(node.tagName, 'TBODY');
-      expect(node.parent, isNull);
-      expect(node.rows.length, 1);
-      expect(node.rows[0].cells.length, 2);
-      expect(node.innerHtml, innerHtml);
-    });
-
-    test('.html thead', () {
-      var innerHtml = '<tr><th id="n">Negative</th><th>Positive</th></tr>';
-      var table = new TableElement();
-      var node = table.createFragment('<thead>$innerHtml').nodes.single;
-      expect(
-          node,
-          predicate(
-              (x) => x is TableSectionElement, 'is a TableSectionElement'));
-      expect(node.tagName, 'THEAD');
-      expect(node.parent, isNull);
-      expect(node.rows.length, 1);
-      expect(node.rows[0].cells.length, 2);
-      expect(node.innerHtml, innerHtml);
-    });
-
-    test('.html tfoot', () {
-      var innerHtml = '<tr><th>percentage</th><td>34.3%</td></tr>';
-      var table = new TableElement();
-      var node = table.createFragment('<tfoot>$innerHtml').nodes.single;
-      expect(
-          node,
-          predicate(
-              (x) => x is TableSectionElement, 'is a TableSectionElement'));
-      expect(node.tagName, 'TFOOT');
-      expect(node.parent, isNull);
-      expect(node.rows.length, 1);
-      expect(node.rows[0].cells.length, 2);
-      expect(node.innerHtml, innerHtml);
-    });
-
-    test('.html tr', () {
-      var table = new TableElement();
-      document.body.append(table);
-      var tBody = table.createTBody();
-      var node = tBody.createFragment('<tr><td>foo<td>bar').nodes.single;
-      expect(
-          node, predicate((x) => x is TableRowElement, 'is a TableRowElement'));
-      expect(node.tagName, 'TR');
-      expect(node.parent, isNull);
-      expect(node.cells.map((c) => c.innerHtml), ['foo', 'bar']);
-    });
-
-    test('.html td', () {
-      var table = new TableElement();
-      document.body.append(table);
-      var tBody = table.createTBody();
-      var tRow = tBody.addRow();
-      var node = tRow.createFragment('<td>foobar').nodes.single;
-      expect(node,
-          predicate((x) => x is TableCellElement, 'is a TableCellElement'));
-      expect(node.tagName, 'TD');
-      expect(node.parent, isNull);
-      expect(node.innerHtml, 'foobar');
-    });
-
-    test('.html th', () {
-      var table = new TableElement();
-      document.body.append(table);
-      var tBody = table.createTBody();
-      var tRow = tBody.addRow();
-      var node = tRow.createFragment('<th>foobar').nodes.single;
-      expect(node,
-          predicate((x) => x is TableCellElement, 'is a TableCellElement'));
-      expect(node.tagName, 'TH');
-      expect(node.parent, isNull);
-      expect(node.innerHtml, 'foobar');
-    });
-
-    test('.html can fire events', () {
-      var e = new Element.html('<button>aha</button>');
-      var gotEvent = false;
-      e.onClick.listen((_) {
-        gotEvent = true;
-      });
-      e.click();
-      expect(gotEvent, isTrue, reason: 'click should have raised click event');
-    });
-  });
-
-  group('eventListening', () {
-    test('streams', () {
-      final target = new TextAreaElement();
-
-      void testEvent(Stream stream, String type, [createEvent(String type)]) {
-        var firedOnEvent = false;
-        stream.listen((e) {
-          firedOnEvent = true;
-        });
-        expect(firedOnEvent, isFalse);
-        var event = createEvent != null ? createEvent(type) : new Event(type);
-        target.dispatchEvent(event);
-
-        expect(firedOnEvent, isTrue);
-      }
-
-      testEvent(target.onAbort, 'abort');
-      testEvent(target.onBeforeCopy, 'beforecopy');
-      testEvent(target.onBeforeCut, 'beforecut');
-      testEvent(target.onBeforePaste, 'beforepaste');
-      testEvent(target.onBlur, 'blur');
-      testEvent(target.onChange, 'change');
-      testEvent(
-          target.onContextMenu, 'contextmenu', (type) => new MouseEvent(type));
-      // We cannot test dispatching a true ClipboardEvent as the DOM does not
-      // provide a way to create a fake ClipboardEvent.
-      testEvent(target.onCopy, 'copy');
-      testEvent(target.onCut, 'cut');
-      testEvent(target.onPaste, 'paste');
-
-      testEvent(
-          target.onDoubleClick, 'dblclick', (type) => new MouseEvent(type));
-      testEvent(target.onDrag, 'drag', (type) => new MouseEvent(type));
-      testEvent(target.onDragEnd, 'dragend', (type) => new MouseEvent(type));
-      testEvent(
-          target.onDragEnter, 'dragenter', (type) => new MouseEvent(type));
-      testEvent(
-          target.onDragLeave, 'dragleave', (type) => new MouseEvent(type));
-      testEvent(target.onDragOver, 'dragover', (type) => new MouseEvent(type));
-      testEvent(
-          target.onDragStart, 'dragstart', (type) => new MouseEvent(type));
-      testEvent(target.onDrop, 'drop', (type) => new MouseEvent(type));
-      testEvent(target.onError, 'error');
-      testEvent(target.onFocus, 'focus');
-      testEvent(target.onFullscreenChange, 'webkitfullscreenchange');
-      testEvent(target.onInput, 'input');
-      testEvent(target.onInvalid, 'invalid');
-      testEvent(target.onKeyDown, 'keydown', (type) => new KeyboardEvent(type));
-      testEvent(
-          target.onKeyPress, 'keypress', (type) => new KeyboardEvent(type));
-      testEvent(target.onKeyUp, 'keyup', (type) => new KeyboardEvent(type));
-      testEvent(target.onLoad, 'load');
-      testEvent(
-          target.onMouseDown, 'mousedown', (type) => new MouseEvent(type));
-      testEvent(
-          target.onMouseMove, 'mousemove', (type) => new MouseEvent(type));
-      testEvent(target.onMouseOut, 'mouseout', (type) => new MouseEvent(type));
-      testEvent(
-          target.onMouseOver, 'mouseover', (type) => new MouseEvent(type));
-      testEvent(target.onMouseUp, 'mouseup', (type) => new MouseEvent(type));
-      testEvent(target.onReset, 'reset');
-      testEvent(target.onScroll, 'scroll');
-      testEvent(target.onSearch, 'search');
-      testEvent(target.onSelect, 'select');
-      testEvent(target.onSelectStart, 'selectstart');
-      testEvent(target.onSubmit, 'submit');
-      // We would prefer to create new touch events for this test via
-      // new TouchEvent(null, null, null, type)
-      // but that fails on desktop browsers as touch is not enabled.
-      testEvent(target.onTouchCancel, 'touchcancel');
-      testEvent(target.onTouchEnd, 'touchend');
-      testEvent(target.onTouchLeave, 'touchleave');
-      testEvent(target.onTouchMove, 'touchmove');
-      testEvent(target.onTouchStart, 'touchstart');
-    });
-  });
-
-  group('click', () {
-    test('clickEvent', () {
-      var e = new DivElement();
-      var firedEvent = false;
-      e.onClick.listen((event) {
-        firedEvent = true;
-      });
-      expect(firedEvent, false);
-      e.click();
-      expect(firedEvent, true);
-
-      var e2 = new DivElement();
-      var firedEvent2 = false;
-      e2.onClick.matches('.foo').listen((event) {
-        firedEvent2 = true;
-      });
-      e2.click();
-      expect(firedEvent2, false);
-      e2.classes.add('foo');
-      e2.click();
-      expect(firedEvent2, true);
-    });
-  });
-
-  group('attributes', () {
-    test('manipulation', () {
-      final element = new Element.html(
-          '''<div class="foo" style="overflow: hidden" data-foo="bar"
-                   data-foo2="bar2" dir="rtl">
-               </div>''',
-          treeSanitizer: new NullTreeSanitizer());
-      final attributes = element.attributes;
-      expect(attributes['class'], 'foo');
-      expect(attributes['style'], startsWith('overflow: hidden'));
-      expect(attributes['data-foo'], 'bar');
-      expect(attributes['data-foo2'], 'bar2');
-      expect(attributes.length, 5);
-      expect(element.dataset.length, 2);
-      element.dataset['foo'] = 'baz';
-      expect(element.dataset['foo'], 'baz');
-      expect(attributes['data-foo'], 'baz');
-      attributes['data-foo2'] = 'baz2';
-      expect(attributes['data-foo2'], 'baz2');
-      expect(element.dataset['foo2'], 'baz2');
-      expect(attributes['dir'], 'rtl');
-
-      final dataset = element.dataset;
-      dataset.remove('foo2');
-      expect(attributes.length, 4);
-      expect(dataset.length, 1);
-      attributes.remove('style');
-      expect(attributes.length, 3);
-      dataset['foo3'] = 'baz3';
-      expect(dataset.length, 2);
-      expect(attributes.length, 4);
-      attributes['style'] = 'width: 300px;';
-      expect(attributes.length, 5);
-    });
-
-    test('namespaces', () {
-      var element =
-          new svg.SvgElement.svg('''<svg xmlns="http://www.w3.org/2000/svg"
-                  xmlns:xlink="http://www.w3.org/1999/xlink">
-            <image xlink:href="foo" data-foo="bar"/>
-          </svg>''').children[0];
-
-      var attributes = element.attributes;
-      expect(attributes.length, 1);
-      expect(attributes['data-foo'], 'bar');
-
-      var xlinkAttrs =
-          element.getNamespacedAttributes('http://www.w3.org/1999/xlink');
-      expect(xlinkAttrs.length, 1);
-      expect(xlinkAttrs['href'], 'foo');
-
-      xlinkAttrs.remove('href');
-      expect(xlinkAttrs.length, 0);
-
-      xlinkAttrs['href'] = 'bar';
-      expect(xlinkAttrs['href'], 'bar');
-
-      var randomAttrs = element.getNamespacedAttributes('http://example.com');
-      expect(randomAttrs.length, 0);
-      randomAttrs['href'] = 'bar';
-      expect(randomAttrs.length, 1);
-    });
-  });
-
-  group('children', () {
-    test('is a subset of nodes', () {
-      var el = new Element.html("<div>Foo<br/><img/></div>");
-      expect(el.nodes.length, 3);
-      expect(el.children.length, 2);
-      expect(el.nodes[1], el.children[0]);
-      expect(el.nodes[2], el.children[1]);
-    });
-
-    test('changes when an element is added to nodes', () {
-      var el = new Element.html("<div>Foo<br/><img/></div>");
-      el.nodes.add(new Element.tag('hr'));
-      expect(el.children.length, 3);
-      expect(el.children[2], isHRElement);
-      expect(el.nodes[3], el.children[2]);
-    });
-
-    test('changes nodes when an element is added', () {
-      var el = new Element.html("<div>Foo<br/><img/></div>");
-      el.children.add(new Element.tag('hr'));
-      expect(el.nodes.length, 4);
-      expect(el.nodes[3], isHRElement);
-      expect(el.children[2], el.nodes[3]);
-    });
-
-    test('last', () {
-      var el = makeElementWithChildren();
-      expect(el.children.last, isInputElement);
-    });
-
-    test('forEach', () {
-      var els = [];
-      var el = makeElementWithChildren();
-      el.children.forEach((n) => els.add(n));
-      expect(els[0], isBRElement);
-      expect(els[1], isImageElement);
-      expect(els[2], isInputElement);
-    });
-
-    test('where', () {
-      var filtered =
-          makeElementWithChildren().children.where((n) => n is ImageElement);
-      expect(1, filtered.length);
-      expect(filtered.first, isImageElement);
-      expect(filtered, isElementIterable);
-    });
-
-    test('every', () {
-      var el = makeElementWithChildren();
-      expect(el.children.every((n) => n is Element), isTrue);
-      expect(el.children.every((n) => n is InputElement), isFalse);
-    });
-
-    test('any', () {
-      var el = makeElementWithChildren();
-      expect(el.children.any((n) => n is InputElement), isTrue);
-      expect(el.children.any((n) => n is svg.SvgElement), isFalse);
-    });
-
-    test('isEmpty', () {
-      expect(makeElement().children.isEmpty, isTrue);
-      expect(makeElementWithChildren().children.isEmpty, isFalse);
-    });
-
-    test('length', () {
-      expect(makeElement().children.length, 0);
-      expect(makeElementWithChildren().children.length, 3);
-    });
-
-    test('[]', () {
-      var el = makeElementWithChildren();
-      expect(el.children[0], isBRElement);
-      expect(el.children[1], isImageElement);
-      expect(el.children[2], isInputElement);
-    });
-
-    test('[]=', () {
-      var el = makeElementWithChildren();
-      el.children[1] = new Element.tag('hr');
-      expect(el.children[0], isBRElement);
-      expect(el.children[1], isHRElement);
-      expect(el.children[2], isInputElement);
-    });
-
-    test('add', () {
-      var el = makeElement();
-      el.children.add(new Element.tag('hr'));
-      expect(el.children.last, isHRElement);
-    });
-
-    test('iterator', () {
-      var els = [];
-      var el = makeElementWithChildren();
-      for (var subel in el.children) {
-        els.add(subel);
-      }
-      expect(els[0], isBRElement);
-      expect(els[1], isImageElement);
-      expect(els[2], isInputElement);
-    });
-
-    test('addAll', () {
-      var el = makeElementWithChildren();
-      el.children.addAll([
-        new Element.tag('span'),
-        new Element.tag('a'),
-        new Element.tag('h1')
-      ]);
-      expect(el.children[0], isBRElement);
-      expect(el.children[1], isImageElement);
-      expect(el.children[2], isInputElement);
-      expect(el.children[3], isSpanElement);
-      expect(el.children[4], isAnchorElement);
-      expect(el.children[5], isHeadingElement);
-    });
-
-    test('insert', () {
-      var element = new DivElement();
-      element.children.insert(0, new BRElement());
-      expect(element.children[0], isBRElement);
-      element.children.insert(0, new HRElement());
-      expect(element.children[0], isHRElement);
-      element.children.insert(1, new ImageElement());
-      expect(element.children[1], isImageElement);
-      element.children.insert(element.children.length, new InputElement());
-      expect(element.children.last, isInputElement);
-    });
-
-    test('clear', () {
-      var el = makeElementWithChildren();
-      el.children.clear();
-      expect(el.children, equals([]));
-    });
-
-    test('removeLast', () {
-      var el = makeElementWithChildren();
-      expect(el.children.removeLast(), isInputElement);
-      expect(el.children.length, 2);
-      expect(el.children.removeLast(), isImageElement);
-      expect(el.children.length, 1);
-    });
-
-    test('sublist', () {
-      var el = makeElementWithChildren();
-      expect(el.children.sublist(1, 2), isElementList);
-    });
-
-    test('getRange', () {
-      var el = makeElementWithChildren();
-      expect(el.children.getRange(1, 2).length, 1);
-    });
-
-    test('retainWhere', () {
-      var el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.retainWhere((e) => true);
-      expect(el.children.length, 3);
-
-      el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.retainWhere((e) => false);
-      expect(el.children.length, 0);
-
-      el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.retainWhere((e) => e.localName == 'input');
-      expect(el.children.length, 1);
-
-      el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.retainWhere((e) => e.localName == 'br');
-      expect(el.children.length, 1);
-    });
-
-    test('removeWhere', () {
-      var el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.removeWhere((e) => true);
-      expect(el.children.length, 0);
-
-      el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.removeWhere((e) => false);
-      expect(el.children.length, 3);
-
-      el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.removeWhere((e) => e.localName == 'input');
-      expect(el.children.length, 2);
-
-      el = makeElementWithChildren();
-      expect(el.children.length, 3);
-      el.children.removeWhere((e) => e.localName == 'br');
-      expect(el.children.length, 2);
-    });
-
-    testUnsupported('sort', () {
-      var l = makeElementWithChildren().children;
-      l.sort();
-    });
-
-    testUnsupported('setRange', () {
-      var l = makeElementWithChildren().children;
-      l.setRange(0, 0, []);
-    });
-
-    testUnsupported('replaceRange', () {
-      var l = makeElementWithChildren().children;
-      l.replaceRange(0, 0, []);
-    });
-
-    testUnsupported('removeRange', () {
-      var l = makeElementWithChildren().children;
-      l.removeRange(0, 1);
-    });
-
-    testUnsupported('insertAll', () {
-      var l = makeElementWithChildren().children;
-      l.insertAll(0, []);
-    });
-  });
-
-  group('matches', () {
-    test('matches', () {
-      var element = new DivElement();
-      document.body.append(element);
-      element.classes.add('test');
-
-      expect(element.matches('div'), true);
-      expect(element.matches('span'), false);
-      expect(element.matches('.test'), true);
-    });
-  });
-
-  group('queryAll', () {
-    List<Element> getquerySelectorAll() {
-      return new Element.html("""
-<div>
-  <hr/>
-  <a class='q' href='http://dartlang.org'>Dart!</a>
-  <p>
-    <span class='q'>Hello</span>,
-    <em>world</em>!
-  </p>
-  <hr class='q'/>
-</div>
-""").querySelectorAll('.q');
-    }
-
-    List<Element> getEmptyquerySelectorAll() =>
-        new Element.tag('div').querySelectorAll('img');
-
-    test('last', () {
-      expect(getquerySelectorAll().last, isHRElement);
-    });
-
-    test('forEach', () {
-      var els = [];
-      getquerySelectorAll().forEach((el) => els.add(el));
-      expect(els[0], isAnchorElement);
-      expect(els[1], isSpanElement);
-      expect(els[2], isHRElement);
-    });
-
-    test('map', () {
-      var texts = getquerySelectorAll().map((el) => el.text).toList();
-      expect(texts, equals(['Dart!', 'Hello', '']));
-    });
-
-    test('where', () {
-      var filtered =
-          getquerySelectorAll().where((n) => n is SpanElement).toList();
-      expect(filtered.length, 1);
-      expect(filtered[0], isSpanElement);
-      expect(filtered, isElementList);
-    });
-
-    test('every', () {
-      var el = getquerySelectorAll();
-      expect(el.every((n) => n is Element), isTrue);
-      expect(el.every((n) => n is SpanElement), isFalse);
-    });
-
-    test('any', () {
-      var el = getquerySelectorAll();
-      expect(el.any((n) => n is SpanElement), isTrue);
-      expect(el.any((n) => n is svg.SvgElement), isFalse);
-    });
-
-    test('isEmpty', () {
-      expect(getEmptyquerySelectorAll().isEmpty, isTrue);
-      expect(getquerySelectorAll().isEmpty, isFalse);
-    });
-
-    test('length', () {
-      expect(getEmptyquerySelectorAll().length, 0);
-      expect(getquerySelectorAll().length, 3);
-    });
-
-    test('[]', () {
-      var els = getquerySelectorAll();
-      expect(els[0], isAnchorElement);
-      expect(els[1], isSpanElement);
-      expect(els[2], isHRElement);
-    });
-
-    test('iterator', () {
-      var els = [];
-      for (var subel in getquerySelectorAll()) {
-        els.add(subel);
-      }
-      expect(els[0], isAnchorElement);
-      expect(els[1], isSpanElement);
-      expect(els[2], isHRElement);
-    });
-
-    test('sublist', () {
-      expect(getquerySelectorAll().sublist(1, 2) is List<Element>, isTrue);
-    });
-
-    testUnsupported(
-        '[]=', () => getquerySelectorAll()[1] = new Element.tag('br'));
-    testUnsupported(
-        'add', () => getquerySelectorAll().add(new Element.tag('br')));
-
-    testUnsupported('addAll', () {
-      getquerySelectorAll().addAll([
-        new Element.tag('span'),
-        new Element.tag('a'),
-        new Element.tag('h1')
-      ]);
-    });
-
-    testUnsupported('sort', () => getquerySelectorAll().sort((a1, a2) => true));
-
-    testUnsupported('setRange', () {
-      getquerySelectorAll().setRange(0, 1, [new BRElement()]);
-    });
-
-    testUnsupported(
-        'removeRange', () => getquerySelectorAll().removeRange(0, 1));
-
-    testUnsupported('clear', () => getquerySelectorAll().clear());
-
-    testUnsupported('removeLast', () => getquerySelectorAll().removeLast());
-  });
-
-  group('functional', () {
-    test('toString', () {
-      final elems = makeElementWithChildren().children;
-      expect(elems.toString(), "[br, img, input]");
-      final elem = makeElement().children;
-      expect(elem.toString(), '[]');
-    });
-
-    test('scrollIntoView', () {
-      var child = new DivElement();
-      document.body.append(child);
-
-      child.scrollIntoView(ScrollAlignment.TOP);
-      child.scrollIntoView(ScrollAlignment.BOTTOM);
-      child.scrollIntoView(ScrollAlignment.CENTER);
-      child.scrollIntoView();
-    });
-  });
-
-  group('_ElementList', () {
-    List<Element> makeElList() => makeElementWithChildren().children;
-
-    test('where', () {
-      var filtered = makeElList().where((n) => n is ImageElement);
-      expect(filtered.length, 1);
-      expect(filtered.first, isImageElement);
-      expect(filtered, isElementIterable);
-    });
-
-    test('sublist', () {
-      var range = makeElList().sublist(1, 3);
-      expect(range, isElementList);
-      expect(range[0], isImageElement);
-      expect(range[1], isInputElement);
-    });
-  });
-
-  group('eventDelegation', () {
-    test('matches', () {
-      Element clickOne = new Element.a();
-      Element selectorOne = new Element.div()
-        ..classes.add('selector')
-        ..children.add(clickOne);
-
-      Element clickTwo = new Element.a();
-      Element selectorTwo = new Element.div()
-        ..classes.add('selector')
-        ..children.add(clickTwo);
-      document.body.append(selectorOne);
-      document.body.append(selectorTwo);
-
-      document.body.onClick
-          .matches('.selector')
-          .listen(expectAsync((Event event) {
-        expect(event.currentTarget, document.body);
-        expect(event.target, clickOne);
-        expect(event.matchingTarget, selectorOne);
-      }));
-
-      selectorOne.onClick
-          .matches('.selector')
-          .listen(expectAsync((Event event) {
-        expect(event.currentTarget, selectorOne);
-        expect(event.target, clickOne);
-        expect(event.matchingTarget, selectorOne);
-      }));
-      clickOne.click();
-
-      Element elem = new Element.div()..classes.addAll(['a', 'b']);
-      Element img = new Element.img()
-        ..classes.addAll(['b', 'a', 'd'])
-        ..id = 'cookie';
-      Element input = new InputElement()..classes.addAll(['c', 'd']);
-      var div = new Element.div()
-        ..classes.add('a')
-        ..id = 'wat';
-      document.body.append(elem);
-      document.body.append(img);
-      document.body.append(input);
-      document.body.append(div);
-
-      Element elem4 = new Element.div()..classes.addAll(['i', 'j']);
-      Element elem5 = new Element.div()
-        ..classes.addAll(['g', 'h'])
-        ..children.add(elem4);
-      Element elem6 = new Element.div()
-        ..classes.addAll(['e', 'f'])
-        ..children.add(elem5);
-      document.body.append(elem6);
-
-      var firedEvent = false;
-      var elems = querySelectorAll('.a');
-      querySelectorAll('.a').onClick.listen((event) {
-        firedEvent = true;
-      });
-      expect(firedEvent, false);
-      querySelector('.c').click();
-      expect(firedEvent, false);
-      querySelector('#wat').click();
-      expect(firedEvent, true);
-
-      var firedEvent4 = false;
-      querySelectorAll('.a').onClick.matches('.d').listen((event) {
-        firedEvent4 = true;
-      });
-      expect(firedEvent4, false);
-      querySelector('.c').click();
-      expect(firedEvent4, false);
-      querySelector('#wat').click();
-      expect(firedEvent4, false);
-      querySelector('#cookie').click();
-      expect(firedEvent4, true);
-
-      var firedEvent2 = false;
-      querySelectorAll('.a').onClick.listen((event) {
-        firedEvent2 = true;
-      });
-      Element elem2 = new Element.html('<div class="a"><br/>');
-      document.body.append(elem2);
-      elem2.click();
-      expect(firedEvent2, false);
-      elem2.classes.add('a');
-      elem2.click();
-      expect(firedEvent2, false);
-
-      var firedEvent3 = false;
-      querySelectorAll(':root').onClick.matches('.a').listen((event) {
-        firedEvent3 = true;
-      });
-      Element elem3 = new Element.html('<div class="d"><br/>');
-      document.body.append(elem3);
-      elem3.click();
-      expect(firedEvent3, false);
-      elem3.classes.add('a');
-      elem3.click();
-      expect(firedEvent3, true);
-
-      var firedEvent5 = false;
-      querySelectorAll(':root').onClick.matches('.e').listen((event) {
-        firedEvent5 = true;
-      });
-      expect(firedEvent5, false);
-      querySelector('.i').click();
-      expect(firedEvent5, true);
-    });
-
-    test('event ordering', () {
-      var a = new DivElement();
-      var b = new DivElement();
-      a.append(b);
-      var c = new DivElement();
-      b.append(c);
-
-      var eventOrder = [];
-
-      a.on['custom_event'].listen((_) {
-        eventOrder.add('a no-capture');
-      });
-
-      a.on['custom_event'].capture((_) {
-        eventOrder.add('a capture');
-      });
-
-      b.on['custom_event'].listen((_) {
-        eventOrder.add('b no-capture');
-      });
-
-      b.on['custom_event'].capture((_) {
-        eventOrder.add('b capture');
-      });
-
-      document.body.append(a);
-
-      var event = new Event('custom_event', canBubble: true);
-      c.dispatchEvent(event);
-      expect(eventOrder,
-          ['a capture', 'b capture', 'b no-capture', 'a no-capture']);
-    });
-  });
-
-  group('ElementList', () {
-    // Tests for methods on the DOM class 'NodeList'.
-    //
-    // There are two interesting things that are checked here from the viewpoint
-    // of the dart2js implementation of a 'native' class:
-    //
-    //   1. Some methods are implemented from by 'Object' or 'Interceptor';
-    //      some of these tests simply check that a method can be called.
-    //   2. Some methods are implemented by mixins.
-
-    ElementList<Element> makeElementList() =>
-        (new Element.html("<div>Foo<br/><!--baz--><br/><br/></div>"))
-            .querySelectorAll('br');
-
-    test('hashCode', () {
-      var nodes = makeElementList();
-      var hash = nodes.hashCode;
-      final int N = 1000;
-      int matchCount = 0;
-      for (int i = 0; i < N; i++) {
-        if (makeElementList().hashCode == hash) matchCount++;
-      }
-      expect(matchCount, lessThan(N));
-    });
-
-    test('operator==', () {
-      var a = [makeElementList(), makeElementList(), null];
-      for (int i = 0; i < a.length; i++) {
-        for (int j = 0; j < a.length; j++) {
-          expect(i == j, a[i] == a[j]);
-        }
-      }
-    });
-
-    test('runtimeType', () {
-      var nodes1 = makeElementList();
-      var nodes2 = makeElementList();
-      var type1 = nodes1.runtimeType;
-      var type2 = nodes2.runtimeType;
-      expect(type1 == type2, true);
-      String name = '$type1';
-      if (name.length > 3) {
-        expect(name.contains('ElementList'), true);
-      }
-    });
-
-    test('first', () {
-      var nodes = makeElementList();
-      expect(nodes.first, isBRElement);
-    });
-
-    test('last', () {
-      var nodes = makeElementList();
-      expect(nodes.last, isBRElement);
-    });
-
-    test('where', () {
-      var filtered = makeElementList().where((n) => n is BRElement).toList();
-      expect(filtered.length, 3);
-      expect(filtered[0], isBRElement);
-    });
-
-    test('sublist', () {
-      var range = makeElementList().sublist(1, 3);
-      expect(range.length, 2);
-      expect(range[0], isBRElement);
-      expect(range[1], isBRElement);
-    });
-  });
-}
diff --git a/tests/html/element_types_constructors1_test.dart b/tests/html/element_types_constructors1_test.dart
deleted file mode 100644
index 60d95c5..0000000
--- a/tests/html/element_types_constructors1_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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.
-
-library element_types_constructors1_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  check(String name, bool fn(), [bool supported = true]) {
-    test(name, () {
-      var expectation = supported ? returnsNormally : throws;
-      expect(() {
-        expect(fn(), isTrue);
-      }, expectation);
-    });
-  }
-
-  group('constructors', () {
-    check('a', () => new AnchorElement() is AnchorElement);
-    check('area', () => new AreaElement() is AreaElement);
-    check('audio', () => new AudioElement() is AudioElement);
-    check('body', () => new BodyElement() is BodyElement);
-    check('br', () => new BRElement() is BRElement);
-    check('base', () => new BaseElement() is BaseElement);
-    check('button', () => new ButtonElement() is ButtonElement);
-    check('canvas', () => new CanvasElement() is CanvasElement);
-    check('caption', () => new TableCaptionElement() is TableCaptionElement);
-    check('content', () => new ContentElement() is ContentElement,
-        ContentElement.supported);
-    check('details', () => new DetailsElement() is DetailsElement,
-        DetailsElement.supported);
-    check('datalist', () => new DataListElement() is DataListElement,
-        DataListElement.supported);
-    check('dl', () => new DListElement() is DListElement);
-    check('div', () => new DivElement() is DivElement);
-    check('embed', () => new EmbedElement() is EmbedElement,
-        EmbedElement.supported);
-  });
-}
diff --git a/tests/html/element_types_constructors2_test.dart b/tests/html/element_types_constructors2_test.dart
deleted file mode 100644
index a714031..0000000
--- a/tests/html/element_types_constructors2_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-
-library element_types_constructors2_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  check(String name, bool fn(), [bool supported = true]) {
-    test(name, () {
-      var expectation = supported ? returnsNormally : throws;
-      expect(() {
-        expect(fn(), isTrue);
-      }, expectation);
-    });
-  }
-
-  group('constructors', () {
-    check('fieldset', () => new FieldSetElement() is FieldSetElement);
-    check('form', () => new FormElement() is FormElement);
-    check('head', () => new HeadElement() is HeadElement);
-    check('hr', () => new HRElement() is HRElement);
-    check('html', () => new HtmlHtmlElement() is HtmlHtmlElement);
-    check('h1', () => new HeadingElement.h1() is HeadingElement);
-    check('h2', () => new HeadingElement.h2() is HeadingElement);
-    check('h3', () => new HeadingElement.h3() is HeadingElement);
-    check('h4', () => new HeadingElement.h4() is HeadingElement);
-    check('h5', () => new HeadingElement.h5() is HeadingElement);
-    check('h6', () => new HeadingElement.h6() is HeadingElement);
-    check('iframe', () => new IFrameElement() is IFrameElement);
-    check('img', () => new ImageElement() is ImageElement);
-    check('input', () => new InputElement() is InputElement);
-  });
-}
diff --git a/tests/html/element_types_constructors3_test.dart b/tests/html/element_types_constructors3_test.dart
deleted file mode 100644
index 94fc47e..0000000
--- a/tests/html/element_types_constructors3_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-
-library element_types_constructors3_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  check(String name, bool fn(), [bool supported = true]) {
-    test(name, () {
-      var expectation = supported ? returnsNormally : throws;
-      expect(() {
-        expect(fn(), isTrue);
-      }, expectation);
-    });
-  }
-
-  group('constructors', () {
-    check('li', () => new LIElement() is LIElement);
-    check('label', () => new LabelElement() is LabelElement);
-    check('legen', () => new LegendElement() is LegendElement);
-    check('link', () => new LinkElement() is LinkElement);
-    check('map', () => new MapElement() is MapElement);
-    check('menu', () => new MenuElement() is MenuElement);
-    check('meta', () => new MetaElement() is MetaElement);
-    check('meter', () => new MeterElement() is MeterElement,
-        MeterElement.supported);
-    check('del', () => new Element.tag('del') is ModElement);
-    check('ins', () => new Element.tag('ins') is ModElement);
-    check('object', () => new ObjectElement() is ObjectElement,
-        ObjectElement.supported);
-    check('ol', () => new OListElement() is OListElement);
-    check('optgroup', () => new OptGroupElement() is OptGroupElement);
-    check('option', () => new OptionElement() is OptionElement);
-    check('output', () => new OutputElement() is OutputElement,
-        OutputElement.supported);
-  });
-}
diff --git a/tests/html/element_types_constructors4_test.dart b/tests/html/element_types_constructors4_test.dart
deleted file mode 100644
index 0088d96..0000000
--- a/tests/html/element_types_constructors4_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-
-library element_types_constructors_test4;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  check(String name, bool fn(), [bool supported = true]) {
-    test(name, () {
-      var expectation = supported ? returnsNormally : throws;
-      expect(() {
-        expect(fn(), isTrue);
-      }, expectation);
-    });
-  }
-
-  group('constructors', () {
-    check('p', () => new ParagraphElement() is ParagraphElement);
-    check('param', () => new ParamElement() is ParamElement);
-    check('pre', () => new PreElement() is PreElement);
-    check('progress', () => new ProgressElement() is ProgressElement,
-        ProgressElement.supported);
-    check('q', () => new QuoteElement() is QuoteElement);
-    check('script', () => new ScriptElement() is ScriptElement);
-    check('select', () => new SelectElement() is SelectElement);
-    check('shadow', () => new ShadowElement() is ShadowElement,
-        ShadowElement.supported);
-    check('source', () => new SourceElement() is SourceElement);
-    check('span', () => new SpanElement() is SpanElement);
-    check('style', () => new StyleElement() is StyleElement);
-  });
-}
diff --git a/tests/html/element_types_constructors5_test.dart b/tests/html/element_types_constructors5_test.dart
deleted file mode 100644
index e930ac1..0000000
--- a/tests/html/element_types_constructors5_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-
-library element_types_constructors5_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  check(String name, bool fn(), [bool supported = true]) {
-    test(name, () {
-      var expectation = supported ? returnsNormally : throws;
-      expect(() {
-        expect(fn(), isTrue);
-      }, expectation);
-    });
-  }
-
-  group('constructors', () {
-    check('table', () => new TableElement() is TableElement);
-    check('template', () => new TemplateElement() is TemplateElement,
-        TemplateElement.supported);
-    check('textarea', () => new TextAreaElement() is TextAreaElement);
-    check('title', () => new TitleElement() is TitleElement);
-    check('td', () => new TableCellElement() is TableCellElement);
-    check('col', () => new TableColElement() is TableColElement);
-    check('colgroup', () => new Element.tag('colgroup') is TableColElement);
-    check('tr', () => new TableRowElement() is TableRowElement);
-    check('tbody', () => new Element.tag('tbody') is TableSectionElement);
-    check('tfoot', () => new Element.tag('tfoot') is TableSectionElement);
-    check('thead', () => new Element.tag('thead') is TableSectionElement);
-    check('track', () => new TrackElement() is TrackElement,
-        TrackElement.supported);
-  });
-}
diff --git a/tests/html/element_types_constructors6_test.dart b/tests/html/element_types_constructors6_test.dart
deleted file mode 100644
index 6049ffc..0000000
--- a/tests/html/element_types_constructors6_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-library element_types_constructors6_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  check(String name, bool fn(), [bool supported = true]) {
-    test(name, () {
-      var expectation = supported ? returnsNormally : throws;
-      expect(() {
-        expect(fn(), isTrue);
-      }, expectation);
-    });
-  }
-
-  group('ul', () {
-    check('ul', () => new UListElement() is UListElement);
-
-    test('accepts li', () {
-      var ul = new UListElement();
-      var li = new LIElement();
-      ul.append(li);
-    });
-  });
-  group('constructors', () {
-    check('video', () => new VideoElement() is VideoElement);
-    check('unknown', () => new Element.tag('someunknown') is UnknownElement);
-  });
-}
diff --git a/tests/html/element_types_test.dart b/tests/html/element_types_test.dart
deleted file mode 100644
index 6f434b9..0000000
--- a/tests/html/element_types_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// 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.
-
-library element_types;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported_content', () {
-    test('supported', () {
-      expect(ContentElement.supported, true);
-    });
-  });
-
-  group('supported_datalist', () {
-    test('supported', () {
-      expect(DataListElement.supported, true);
-    });
-  });
-
-  group('supported_details', () {
-    test('supported', () {
-      expect(DetailsElement.supported, true);
-    });
-  });
-
-  group('supported_embed', () {
-    test('supported', () {
-      expect(EmbedElement.supported, true);
-    });
-  });
-
-  group('supported_meter', () {
-    test('supported', () {
-      expect(MeterElement.supported, true);
-    });
-  });
-
-  group('supported_object', () {
-    test('supported', () {
-      expect(ObjectElement.supported, true);
-    });
-  });
-
-  group('supported_output', () {
-    test('supported', () {
-      expect(OutputElement.supported, true);
-    });
-  });
-
-  group('supported_progress', () {
-    test('supported', () {
-      expect(ProgressElement.supported, true);
-    });
-  });
-
-  group('supported_shadow', () {
-    test('supported', () {
-      expect(ShadowElement.supported, true);
-    });
-  });
-
-  group('supported_template', () {
-    test('supported', () {
-      expect(TemplateElement.supported, true);
-    });
-  });
-
-  group('supported_track', () {
-    test('supported', () {
-      expect(TrackElement.supported, true);
-    });
-  });
-}
diff --git a/tests/html/event_customevent_test.dart b/tests/html/event_customevent_test.dart
deleted file mode 100644
index 457715b..0000000
--- a/tests/html/event_customevent_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// 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.
-
-library EventCustomEventTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:js' as js;
-
-class DartPayloadData {
-  final dartValue;
-
-  DartPayloadData(this.dartValue);
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('custom events', () {
-    var provider = new EventStreamProvider<CustomEvent>('foo');
-    var el = new DivElement();
-
-    var fired = false;
-    provider.forTarget(el).listen((ev) {
-      fired = true;
-      expect(ev.detail, {'type': 'detail'});
-    });
-
-    var ev = new CustomEvent('foo',
-        canBubble: false, cancelable: false, detail: {'type': 'detail'});
-    el.dispatchEvent(ev);
-    expect(fired, isTrue);
-  });
-
-  test('custom events from JS', () {
-    var scriptContents = '''
-      var event = document.createEvent("CustomEvent");
-      event.initCustomEvent("js_custom_event", true, true, {type: "detail"});
-      window.dispatchEvent(event);
-    ''';
-
-    var fired = false;
-    window.on['js_custom_event'].listen((ev) {
-      fired = true;
-      expect(ev.detail, {'type': 'detail'});
-    });
-
-    var script = new ScriptElement();
-    script.text = scriptContents;
-    document.body.append(script);
-
-    expect(fired, isTrue);
-  });
-
-  test('custom events to JS', () {
-    expect(js.context['gotDartEvent'], isNull);
-    var scriptContents = '''
-      window.addEventListener('dart_custom_event', function(e) {
-        if (e.detail == 'dart_message') {
-          e.preventDefault();
-          window.gotDartEvent = true;
-        }
-        window.console.log('here' + e.detail);
-      }, false);''';
-
-    document.body.append(new ScriptElement()..text = scriptContents);
-
-    var event = new CustomEvent('dart_custom_event', detail: 'dart_message');
-    window.dispatchEvent(event);
-    expect(js.context['gotDartEvent'], isTrue);
-  });
-
-  test('custom data to Dart', () {
-    var data = new DartPayloadData(666);
-    var event = new CustomEvent('dart_custom_data_event', detail: data);
-
-    var future = window.on['dart_custom_data_event'].first.then((_) {
-      expect(event.detail.dartValue, 666);
-    });
-
-    document.body.dispatchEvent(event);
-    return future;
-  });
-}
diff --git a/tests/html/event_test.dart b/tests/html/event_test.dart
deleted file mode 100644
index 6243e64..0000000
--- a/tests/html/event_test.dart
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (c) 2011, 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 EventTest;
-
-import "package:expect/expect.dart";
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-// TODO(nweiz): Make this private to testEvents when Frog supports closures with
-// optional arguments.
-eventTest(String name, Event eventFn(), void validate(Event),
-    [String type = 'foo']) {
-  test(name, () {
-    final el = new Element.tag('div');
-    var fired = false;
-    el.on[type].listen((ev) {
-      fired = true;
-      validate(ev);
-    });
-    el.dispatchEvent(eventFn());
-    expect(fired, isTrue, reason: 'Expected event to be dispatched.');
-  });
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Issue 1005.
-  // eventTest('AnimationEvent', () => new AnimationEvent('foo', 'color', 0.5),
-  //     (ev) {
-  //   expect(ev.animationName, 'color');
-  //   expect(ev.elapsedTime, 0.5);
-  // });
-
-  // Issue 1005.
-  // eventTest('BeforeLoadEvent',
-  //    () => new BeforeLoadEvent('foo', 'http://example.url'),
-  //    (ev) { expect(ev.url, 'http://example.url'); });
-
-  // Issue 1005.
-  // eventTest('CloseEvent',
-  //     () => new CloseEvent('foo', 5, 'reason', wasClean: true),
-  //     (ev) {
-  //   expect(ev.code, 5);
-  //   expect(ev.reason, 'reason');
-  //   expect(ev.wasClean, isTrue);
-  // });
-
-  eventTest(
-      'CompositionEvent',
-      () =>
-          new CompositionEvent('compositionstart', view: window, data: 'data'),
-      (ev) {
-    expect(ev.data, 'data');
-  }, 'compositionstart');
-
-  // initCustomEvent is not yet implemented
-  // eventTest('CustomEvent',
-  //     () => new CustomEvent('foo', false, false, 'detail'),
-  //     (ev) { expect(ev.detail, 'detail'); });
-
-  // DeviceMotionEvent has no properties to itself, so just test that it doesn't
-  // error out on creation and can be dispatched.
-  // Suppress. DeviceMotion has no constructor, and I don't think it can be
-  // created on a non-mobile device. Issue 23321
-  // eventTest('DeviceMotionEvent', () => new DeviceMotionEvent('foo'), (ev) {});
-
-  // initDeviceOrientationEvent is not yet implemented
-  // eventTest('DeviceOrientationEvent',
-  //     () => new DeviceOrientationEvent('foo', 0.1, 0.2, 0.3),
-  //     (ev) {
-  //   expect(ev.alpha, 0.1);
-  //   expect(ev.beta, 0.2);
-  //   expect(ev.gamma, 0.3);
-  // });
-
-  // Issue 1005.
-  // eventTest('ErrorEvent',
-  //     () => new ErrorEvent('foo', 'message', 'filename', 10),
-  //     (ev) {
-  //   expect('message', ev.message);
-  //   expect('filename', ev.filename);
-  //   expect(ev.lineno, 10);
-  // });
-
-  eventTest(
-      'Event', () => new Event('foo', canBubble: false, cancelable: false),
-      (ev) {
-    expect(ev.type, equals('foo'));
-    expect(ev.bubbles, isFalse);
-    expect(ev.cancelable, isFalse);
-  });
-
-  eventTest(
-      'HashChangeEvent',
-      () => new HashChangeEvent('foo',
-          oldUrl: 'http://old.url', newUrl: 'http://new.url'), (ev) {
-    expect(ev.oldUrl, equals('http://old.url'));
-    expect(ev.newUrl, equals('http://new.url'));
-  });
-
-  // KeyboardEvent has its own test file, and has cross-browser issues.
-
-  eventTest(
-      'MouseEvent',
-      () => new MouseEvent('foo',
-          view: window,
-          detail: 1,
-          screenX: 2,
-          screenY: 3,
-          clientX: 4,
-          clientY: 5,
-          button: 6,
-          ctrlKey: true,
-          altKey: true,
-          shiftKey: true,
-          metaKey: true,
-          relatedTarget: document.body), (ev) {
-    expect(ev.detail, 1);
-    expect(ev.screen.x, 2);
-    expect(ev.screen.y, 3);
-    expect(ev.client.x, 4);
-    expect(ev.client.y, 5);
-    expect(ev.offset.x, 4); // Same as clientX.
-    expect(ev.offset.y, 5); // Same as clientY.
-    expect(ev.button, 6);
-    expect(ev.ctrlKey, isTrue);
-    expect(ev.altKey, isTrue);
-    expect(ev.shiftKey, isTrue);
-    expect(ev.metaKey, isTrue);
-    // TODO(alanknight): The target does not seem to get correctly set.
-    // Issue 23438
-    //  expect(ev.relatedTarget, document.body);
-  });
-
-  // Issue 1005.
-  // eventTest('OverflowEvent',
-  //     () => new OverflowEvent(OverflowEvent.BOTH, true, true),
-  //     (ev) {
-  //   expect(ev.orient, OverflowEvent.BOTH);
-  //   expect(ev.horizontalOverflow, isTrue);
-  //   expect(ev.verticalOverflow, isTrue);
-  // }, type: 'overflowchanged');
-
-  // Issue 1005.
-  // eventTest('PageTransitionEvent',
-  //     () => new PageTransitionEvent('foo', persisted: true),
-  //     (ev) { expect(ev.persisted, isTrue); });
-
-  // initPopStateEvent is not yet implemented
-  // eventTest('PopStateEvent', () => new PopStateEvent('foo', 'state'),
-  //     (ev) { expect(ev.state, 'state'); }
-
-  // Issue 1005.
-  // eventTest('ProgressEvent',
-  //     // canBubble and cancelable are currently required to avoid dartc
-  //     // complaining about the types of the named arguments.
-  //     () => new ProgressEvent('foo', 5, canBubble: true, cancelable: true,
-  //         lengthComputable: true, total: 10),
-  //     (ev) {
-  //   expect(ev.loaded, 5);
-  //   expect(ev.lengthComputable, isTrue);
-  //   expect(ev.total, 10);
-  // });
-
-  eventTest(
-      'StorageEvent',
-      () => new StorageEvent('foo',
-          key: 'key',
-          url: 'http://example.url',
-          storageArea: window.localStorage,
-          canBubble: true,
-          cancelable: true,
-          oldValue: 'old',
-          newValue: 'new'), (ev) {
-    expect(ev.key, 'key');
-    expect(ev.url, 'http://example.url');
-    // Equality isn't preserved for storageArea
-    expect(ev.storageArea, isNotNull);
-    expect(ev.oldValue, 'old');
-    expect(ev.newValue, 'new');
-  });
-
-  // Issue 1005.
-  // eventTest('TransitionEvent', () => new TransitionEvent('foo', 'color', 0.5),
-  //     (ev) {
-  //   expect(ev.propertyName, 'color');
-  //   expect(ev.elapsedTime, 0.5);
-  // });
-
-  eventTest('UIEvent', () => new UIEvent('foo', view: window, detail: 12),
-      (ev) {
-    expect(window, ev.view);
-    expect(12, ev.detail);
-  });
-
-  eventTest(
-      'WheelEvent',
-      // TODO(alanknight): Can't pass window on Dartium. Add view: window
-      // once going through JS.
-      () => new WheelEvent("mousewheel",
-          deltaX: 1,
-          deltaY: 0,
-          detail: 4,
-          screenX: 3,
-          screenY: 4,
-          clientX: 5,
-          clientY: 6,
-          ctrlKey: true,
-          altKey: true,
-          shiftKey: true,
-          metaKey: true), (ev) {
-    expect(ev.deltaX, 1);
-    expect(ev.deltaY, 0);
-    expect(ev.screen.x, 3);
-    expect(ev.screen.y, 4);
-    expect(ev.client.x, 5);
-    expect(ev.client.y, 6);
-    expect(ev.ctrlKey, isTrue);
-    expect(ev.altKey, isTrue);
-    expect(ev.shiftKey, isTrue);
-    expect(ev.metaKey, isTrue);
-  }, 'mousewheel');
-}
diff --git a/tests/html/events_test.dart b/tests/html/events_test.dart
deleted file mode 100644
index 14e3ede..0000000
--- a/tests/html/events_test.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2013, 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 tests.html.events_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-main() {
-  useHtmlConfiguration();
-
-  test('TimeStamp', () {
-    Event event = new Event('test');
-
-    num timeStamp = event.timeStamp;
-    expect(timeStamp, greaterThan(0));
-  });
-
-  test('Event canBubble and cancelable', () {
-    // Try every combination of canBubble and cancelable
-    for (var i = 0; i < 4; i++) {
-      var bubble = (i & 1) != 0;
-      var cancel = (i & 2) != 0;
-      var e = new Event('input', canBubble: bubble, cancelable: cancel);
-      expect(e.bubbles, bubble, reason: 'canBubble was set to $bubble');
-      expect(e.cancelable, cancel, reason: 'cancelable was set to $cancel');
-    }
-  });
-
-  // The next test is not asynchronous because [on['test'].dispatch(event)] fires the event
-  // and event listener synchronously.
-  test('EventTarget', () {
-    Element element = new Element.tag('test');
-    element.id = 'eventtarget';
-    window.document.body.append(element);
-
-    int invocationCounter = 0;
-    void handler(Event e) {
-      expect(e.type, equals('test'));
-      Element target = e.target;
-      expect(element, equals(target));
-      invocationCounter++;
-    }
-
-    Event event = new Event('test');
-
-    invocationCounter = 0;
-    element.dispatchEvent(event);
-    expect(invocationCounter, isZero);
-
-    var provider = new EventStreamProvider<Event>('test');
-
-    var sub = provider.forTarget(element).listen(handler);
-    invocationCounter = 0;
-    element.dispatchEvent(event);
-    expect(invocationCounter, 1);
-
-    sub.cancel();
-    invocationCounter = 0;
-    element.dispatchEvent(event);
-    expect(invocationCounter, isZero);
-
-    provider.forTarget(element).listen(handler);
-    invocationCounter = 0;
-    element.dispatchEvent(event);
-    expect(invocationCounter, 1);
-
-    provider.forTarget(element).listen(handler);
-    invocationCounter = 0;
-    element.dispatchEvent(event);
-
-    // NOTE: when run in a custom zone, the handler is wrapped
-    // The logic for html events which ensures identical handlers are added only
-    // once is therefor muted by the wrapped handlers.
-    // Hence, we get different behavior depending on the current zone.
-    if (Zone.current == Zone.root) {
-      expect(invocationCounter, 1);
-    } else {
-      expect(invocationCounter, 2);
-    }
-  });
-
-  test('InitMouseEvent', () {
-    DivElement div = new Element.tag('div');
-    MouseEvent event = new MouseEvent('zebra', relatedTarget: div);
-  });
-
-  test('DOM event callbacks are associated with the correct zone', () {
-    var callbacks = [];
-
-    final element = new Element.tag('test');
-    element.id = 'eventtarget';
-    document.body.append(element);
-
-    // runZoned executes the function synchronously, but we don't want to
-    // rely on this. We therefore wrap it into an expectAsync.
-    runZoned(expectAsync(() {
-      Zone zone = Zone.current;
-      expect(zone, isNot(equals(Zone.root)));
-
-      var sub;
-
-      void handler(Event e) {
-        expect(Zone.current, equals(zone));
-
-        scheduleMicrotask(expectAsync(() {
-          expect(Zone.current, equals(zone));
-          sub.cancel();
-        }));
-      }
-
-      sub = element.on['test'].listen(expectAsync(handler));
-    }));
-    element.dispatchEvent(new Event('test'));
-  });
-}
diff --git a/tests/html/exceptions_test.dart b/tests/html/exceptions_test.dart
deleted file mode 100644
index cc60d42..0000000
--- a/tests/html/exceptions_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-library ExceptionsTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('EventException', () {
-    final event = new Event('Event');
-    // Intentionally do not initialize it!
-    try {
-      document.dispatchEvent(event);
-    } on DomException catch (e) {
-      expect(e.name, DomException.INVALID_STATE);
-    }
-  });
-}
diff --git a/tests/html/fileapi_test.dart b/tests/html/fileapi_test.dart
deleted file mode 100644
index a867c92..0000000
--- a/tests/html/fileapi_test.dart
+++ /dev/null
@@ -1,183 +0,0 @@
-library fileapi;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:async';
-
-class FileAndDir {
-  FileEntry file;
-  DirectoryEntry dir;
-  FileAndDir(this.file, this.dir);
-}
-
-FileSystem fs;
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(FileSystem.supported, true);
-    });
-  });
-
-  getFileSystem() {
-    return window.requestFileSystem(100).then((FileSystem fileSystem) {
-      fs = fileSystem;
-    });
-  }
-
-  group('unsupported_throws', () {
-    test('requestFileSystem', () {
-      var expectation = FileSystem.supported ? returnsNormally : throws;
-      expect(() {
-        window.requestFileSystem(100);
-      }, expectation);
-    });
-  });
-
-  group('getDirectory', () {
-    if (FileSystem.supported) {
-      test('getFileSystem', getFileSystem);
-
-      test('directoryDoesntExist', () {
-        return fs.root.getDirectory('directory2').catchError((error) {
-          expect(error.code, equals(DomException.NOT_FOUND));
-        }, test: (e) => e is DomError);
-      });
-
-      test('directoryCreate', () {
-        return fs.root.createDirectory('directory3').then((DirectoryEntry e) {
-          expect(e.name, equals('directory3'));
-        });
-      });
-    }
-  });
-
-  group('getFile', () {
-    if (FileSystem.supported) {
-      test('getFileSystem', getFileSystem);
-
-      test('fileDoesntExist', () {
-        return fs.root.getFile('file2').catchError((error) {
-          expect(error.code, equals(DomException.NOT_FOUND));
-        }, test: (e) => e is DomError);
-      });
-
-      test('fileCreate', () {
-        return fs.root.createFile('file4').then((FileEntry e) {
-          expect(e.name, equals('file4'));
-          expect(e.isFile, isTrue);
-          return e.getMetadata();
-        }).then((Metadata metadata) {
-          var changeTime = metadata.modificationTime;
-          // Upped because our Windows buildbots can sometimes be particularly
-          // slow.
-          expect(
-              new DateTime.now().difference(changeTime).inMinutes, lessThan(4));
-          expect(metadata.size, equals(0));
-        });
-      });
-    }
-  });
-
-  // Do the boilerplate to get several files and directories created to then
-  // test the functions that use those items.
-  Future doDirSetup(String testName) {
-    return fs.root.createFile('file_$testName').then((FileEntry file) {
-      return fs.root
-          .createDirectory('dir_$testName')
-          .then((DirectoryEntry dir) {
-        return new Future.value(new FileAndDir(file, dir));
-      });
-    });
-  }
-
-  group('directoryReader', () {
-    if (FileSystem.supported) {
-      test('getFileSystem', getFileSystem);
-
-      test('readEntries', () {
-        return doDirSetup('readEntries').then((fileAndDir) {
-          var reader = fileAndDir.dir.createReader();
-          return reader.readEntries();
-        }).then((entries) {
-          expect(entries is List, true);
-        });
-      });
-    }
-  });
-
-  group('entry', () {
-    if (FileSystem.supported) {
-      test('getFileSystem', getFileSystem);
-
-      test('copyTo', () {
-        return doDirSetup('copyTo').then((fileAndDir) {
-          return fileAndDir.file.copyTo(fileAndDir.dir, name: 'copiedFile');
-        }).then((entry) {
-          expect(entry.isFile, true);
-          expect(entry.name, 'copiedFile');
-        });
-      });
-
-      test('getParent', () {
-        return doDirSetup('getParent').then((fileAndDir) {
-          return fileAndDir.file.getParent();
-        }).then((entry) {
-          expect(entry.name, '');
-          expect(entry.isFile, false);
-        });
-      });
-
-      test('moveTo', () {
-        return doDirSetup('moveTo').then((fileAndDir) {
-          return fileAndDir.file.moveTo(fileAndDir.dir, name: 'movedFile');
-        }).then((entry) {
-          expect(entry.name, 'movedFile');
-          expect(entry.fullPath, '/dir_moveTo/movedFile');
-          return fs.root.getFile('file4');
-        }).catchError((error) {
-          expect(error.code, equals(DomException.NOT_FOUND));
-        }, test: (e) => e is DomError);
-      });
-
-      test('remove', () {
-        return doDirSetup('remove').then((fileAndDir) {
-          return fileAndDir.file.remove().then((_) {});
-        });
-      });
-    }
-  });
-
-  group('fileEntry', () {
-    if (FileSystem.supported) {
-      test('getFileSystem', getFileSystem);
-
-      test('createWriter', () {
-        return doDirSetup('createWriter').then((fileAndDir) {
-          return fileAndDir.file.createWriter();
-        }).then((writer) {
-          expect(writer.position, 0);
-          expect(writer.readyState, FileWriter.INIT);
-          expect(writer.length, 0);
-        });
-      });
-
-      test('file', () {
-        return doDirSetup('file').then((fileAndDir) {
-          return fileAndDir.file.file().then((fileObj) {
-            expect(fileObj.name, fileAndDir.file.name);
-            expect(fileObj.relativePath, '');
-            expect(
-                new DateTime.now()
-                    .difference(fileObj.lastModifiedDate)
-                    .inSeconds,
-                lessThan(60));
-          });
-        });
-      });
-    }
-  });
-}
diff --git a/tests/html/filereader_test.dart b/tests/html/filereader_test.dart
deleted file mode 100644
index 18c49d1..0000000
--- a/tests/html/filereader_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2014, 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 filereader_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  test('readAsText', () {
-    var reader = new FileReader();
-    reader.onLoad.listen(expectAsync((event) {
-      var result = reader.result;
-      expect(result, equals('hello world'));
-    }));
-    reader.readAsText(new Blob(['hello ', 'world']));
-  });
-
-  test('readAsArrayBuffer', () {
-    var reader = new FileReader();
-    reader.onLoad.listen(expectAsync((event) {
-      var result = reader.result;
-      expect(result is Uint8List, isTrue);
-      expect(result, orderedEquals([65, 66, 67]));
-    }));
-    reader.readAsArrayBuffer(new Blob(['ABC']));
-  });
-
-  test('readDataUrl', () {
-    var reader = new FileReader();
-    reader.onLoad.listen(expectAsync((event) {
-      var result = reader.result;
-      expect(result is String, isTrue);
-      expect(result.startsWith('data:'), isTrue);
-    }));
-    reader.readAsDataUrl(new Blob(['ABC']));
-  });
-}
diff --git a/tests/html/filteredelementlist_test.dart b/tests/html/filteredelementlist_test.dart
deleted file mode 100644
index 594cc49..0000000
--- a/tests/html/filteredelementlist_test.dart
+++ /dev/null
@@ -1,108 +0,0 @@
-library filteredelementlist_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:html_common';
-
-main() {
-  var t1 = new Text('T1'),
-      t2 = new Text('T2'),
-      t3 = new Text('T3'),
-      t4 = new Text('T4');
-
-  var d1 = new DivElement(), d2 = new DivElement(), d3 = new DivElement();
-
-  createTestDiv() {
-    var testDiv = new DivElement();
-    testDiv
-      ..append(t1)
-      ..append(d1)
-      ..append(t2)
-      ..append(d2)
-      ..append(t3)
-      ..append(d3)
-      ..append(t4);
-    return testDiv;
-  }
-
-  useHtmlConfiguration();
-
-  test('FilteredElementList.insert test', () {
-    var i = new DivElement();
-
-    // Insert before first element
-    var nodeList = createTestDiv();
-    var elementList = new FilteredElementList(nodeList);
-    elementList.insert(0, i);
-    expect(nodeList.childNodes[0], t1);
-    expect(nodeList.childNodes[1], i);
-    expect(nodeList.childNodes[2], d1);
-
-    // Insert in middle
-    nodeList = createTestDiv();
-    elementList = new FilteredElementList(nodeList);
-    elementList.insert(1, i);
-    expect(nodeList.childNodes[2], t2);
-    expect(nodeList.childNodes[3], i);
-    expect(nodeList.childNodes[4], d2);
-
-    // Insert before last element
-    nodeList = createTestDiv();
-    elementList = new FilteredElementList(nodeList);
-    elementList.insert(2, i);
-    expect(nodeList.childNodes[4], t3);
-    expect(nodeList.childNodes[5], i);
-    expect(nodeList.childNodes[6], d3);
-  });
-
-  test('FilteredElementList.insertAll test', () {
-    var i1 = new DivElement(), i2 = new DivElement();
-
-    var it = [i1, i2];
-
-    // Insert before first element
-    var nodeList = createTestDiv();
-    var elementList = new FilteredElementList(nodeList);
-    elementList.insertAll(0, it);
-    expect(nodeList.childNodes[0], t1);
-    expect(nodeList.childNodes[1], i1);
-    expect(nodeList.childNodes[2], i2);
-    expect(nodeList.childNodes[3], d1);
-
-    // Insert in middle
-    nodeList = createTestDiv();
-    elementList = new FilteredElementList(nodeList);
-    elementList.insertAll(1, it);
-    expect(nodeList.childNodes[2], t2);
-    expect(nodeList.childNodes[3], i1);
-    expect(nodeList.childNodes[4], i2);
-    expect(nodeList.childNodes[5], d2);
-
-    // Insert before last element
-    nodeList = createTestDiv();
-    elementList = new FilteredElementList(nodeList);
-    elementList.insertAll(2, it);
-    expect(nodeList.childNodes[4], t3);
-    expect(nodeList.childNodes[5], i1);
-    expect(nodeList.childNodes[6], i2);
-    expect(nodeList.childNodes[7], d3);
-  });
-
-  test('FilteredElementList.insertAndRemove', () {
-    var emptyDiv = new DivElement();
-    var elementList = new FilteredElementList(emptyDiv);
-    expect(() => elementList[0], throwsA(isRangeError));
-    expect(() => elementList.insert(2, new BRElement()), throwsA(isRangeError));
-    var br = new BRElement();
-    elementList.insert(0, br);
-    expect(elementList.removeLast(), br);
-    elementList.add(br);
-    expect(elementList.remove(br), isTrue);
-    var br2 = new BRElement();
-    elementList.add(br);
-    expect(elementList.remove(br2), isFalse);
-    expect(elementList[0], br);
-    expect(() => elementList[1], throwsA(isRangeError));
-  });
-}
diff --git a/tests/html/fontface_loaded_test.dart b/tests/html/fontface_loaded_test.dart
deleted file mode 100644
index 8a80f5d..0000000
--- a/tests/html/fontface_loaded_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-library fontface_loaded_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-import 'dart:async';
-import 'dart:isolate';
-import 'dart:html';
-
-class NullTreeSanitizer implements NodeTreeSanitizer {
-  void sanitizeTree(Node node) {}
-}
-
-main() {
-  useHtmlConfiguration();
-
-  var style = new Element.html(
-      '''
-      <style>
-      @font-face {
-        font-family: 'Ahem';
-        src: url(/root_dart/tests/html/Ahem.ttf);
-        font-style: italic;
-        font-weight: 300;
-        unicode-range: U+0-3FF;
-        font-variant: small-caps;
-        -webkit-font-feature-settings: "dlig" 1;
-        /* font-stretch property is not supported */
-      }
-      </style>
-      ''',
-      treeSanitizer: new NullTreeSanitizer());
-  document.head.append(style);
-
-  test('document fonts - temporary', () {
-    var atLeastOneFont = false;
-    var loaded = [];
-    document.fonts.forEach((FontFace fontFace, _, __) {
-      atLeastOneFont = true;
-      Future f1 = fontFace.loaded;
-      Future f2 = fontFace.loaded;
-      loaded.add(fontFace.load());
-      loaded.add(f1);
-      loaded.add(f2);
-    });
-    expect(atLeastOneFont, isTrue);
-    return Future.wait(loaded).then(expectAsync((_) {
-      document.fonts.forEach((fontFace, _, __) {
-        expect(fontFace.status, 'loaded');
-      });
-    }));
-  });
-}
diff --git a/tests/html/fontface_test.dart b/tests/html/fontface_test.dart
deleted file mode 100644
index b57b7f9..0000000
--- a/tests/html/fontface_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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 fontface_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test("Creation with parameters", () {
-    var font = new FontFace('Ahem', 'url(Ahem.ttf)', {'variant': 'small-caps'});
-    expect(font is FontFace, isTrue);
-    expect(font.family, 'Ahem');
-    expect(font.variant, 'small-caps');
-  });
-}
diff --git a/tests/html/form_data_test.dart b/tests/html/form_data_test.dart
deleted file mode 100644
index 825b545..0000000
--- a/tests/html/form_data_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// 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.
-
-library FormDataTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-void main() {
-  // TODO(efortuna): This is a bad test. Revisit when we have tests that can run
-  // both a server and fire up a browser.
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(FormData.supported, isTrue);
-    });
-  });
-
-  group('functional', () {
-    test('unsupported throws', () {
-      var expectation = FormData.supported ? returnsNormally : throws;
-      expect(() {
-        new FormData();
-      }, expectation);
-    });
-
-    var isFormData = predicate((x) => x is FormData, 'is a FormData');
-
-    if (FormData.supported) {
-      test('constructorTest1', () {
-        var form = new FormData();
-        expect(form, isNotNull);
-        expect(form, isFormData);
-      });
-
-      test('constructorTest2', () {
-        var form = new FormData(new FormElement());
-        expect(form, isNotNull);
-        expect(form, isFormData);
-      });
-
-      test('appendTest', () {
-        var form = new FormData();
-        form.append('test', '1');
-        form.append('username', 'Elmo');
-        form.append('address', '1 Sesame Street');
-        form.append('password', '123456');
-        expect(form, isNotNull);
-      });
-
-      test('appendBlob', () {
-        var form = new FormData();
-        var blob = new Blob(
-            ['Indescribable... Indestructible! Nothing can stop it!'],
-            'text/plain');
-        form.appendBlob('theBlob', blob, 'theBlob.txt');
-      });
-
-      test('send', () {
-        var form = new FormData();
-        var blobString =
-            'Indescribable... Indestructible! Nothing can stop it!';
-        var blob = new Blob([blobString], 'text/plain');
-        form.appendBlob('theBlob', blob, 'theBlob.txt');
-
-        var xhr = new HttpRequest();
-        xhr.open('POST',
-            '${window.location.protocol}//${window.location.host}/echo');
-
-        xhr.onLoad.listen(expectAsync((e) {
-          expect(xhr.responseText, contains(blobString));
-        }));
-        xhr.onError.listen((e) {
-          fail('$e');
-        });
-        xhr.send(form);
-      });
-    }
-  });
-}
diff --git a/tests/html/form_element_test.dart b/tests/html/form_element_test.dart
deleted file mode 100644
index 97bb379..0000000
--- a/tests/html/form_element_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// 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.
-
-library FormElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-void main() {
-  useHtmlConfiguration();
-
-  var isFormElement = predicate((x) => x is FormElement, 'is a FormElement');
-
-  test('constructorTest1', () {
-    var form = new FormElement();
-    expect(form, isNotNull);
-    expect(form, isFormElement);
-  });
-
-  test('checkValidityTest', () {
-    var form = new FormElement();
-    form.innerHtml = '<label>Google: <input type="search" name="q"></label> '
-        '<input type="submit" value="Search...">';
-    expect(form.checkValidity(), isTrue);
-    // TODO(efortuna): Issue 4832.
-    form.innerHtml = '<input type="email" value="notemail" blaber="test"'
-        ' required>';
-    expect(form.checkValidity(), isFalse);
-  });
-
-  var form = new FormElement();
-  test('acceptCharsetTest', () {
-    var charset = 'abc';
-    form.acceptCharset = charset;
-    expect(form.acceptCharset, charset);
-  });
-
-  test('actionTest', () {
-    var action = 'http://dartlang.org/';
-    form.action = action;
-    expect(form.action, action);
-  });
-
-  test('autocompleteTest', () {
-    var auto = 'on';
-    form.autocomplete = auto;
-    expect(form.autocomplete, auto);
-  });
-
-  test('encodingAndEnctypeTest', () {
-    expect(form.enctype, form.encoding);
-  });
-
-  test('lengthTest', () {
-    expect(form.length, 0);
-    form.innerHtml = '<label>Google: <input type="search" name="q"></label> '
-        '<input type="submit" value="Search...">';
-    expect(form.length, 2);
-  });
-
-  test('methodTest', () {
-    var method = 'post';
-    form.method = method;
-    expect(form.method, method);
-  });
-
-  test('nameTest', () {
-    var name = 'aname';
-    form.name = name;
-    expect(form.name, name);
-  });
-
-  test('noValidateTest', () {
-    form.noValidate = true;
-    expect(form.noValidate, true);
-  });
-
-  test('targetTest', () {
-    var target = 'target';
-    form.target = target;
-    expect(form.target, target);
-  });
-}
diff --git a/tests/html/gamepad_test.dart b/tests/html/gamepad_test.dart
deleted file mode 100644
index 6bbef59..0000000
--- a/tests/html/gamepad_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  var isGamepadList =
-      predicate((x) => x is List<Gamepad>, 'is a List<Gamepad>');
-
-  insertTestDiv() {
-    var element = new Element.tag('div');
-    element.innerHtml = r'''
-    A large block of text should go here. Click this
-    block of text multiple times to see each line
-    highlight with every click of the mouse button.
-    ''';
-    document.body.append(element);
-    return element;
-  }
-
-  useHtmlConfiguration();
-
-  test("getGamepads", () {
-    insertTestDiv();
-    var gamepads = window.navigator.getGamepads();
-    expect(gamepads, isGamepadList);
-    for (var gamepad in gamepads) {
-      if (gamepad != null) {
-        expect(gamepad.id, isNotNull);
-      }
-    }
-  });
-}
diff --git a/tests/html/geolocation_test.dart b/tests/html/geolocation_test.dart
deleted file mode 100644
index fcf858b..0000000
--- a/tests/html/geolocation_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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 geolocation_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  // Actual tests require browser interaction. This just makes sure the API
-  // is present.
-  test('is not null', () {
-    expect(window.navigator.geolocation, isNotNull);
-  });
-}
diff --git a/tests/html/hidden_dom_1_test.dart b/tests/html/hidden_dom_1_test.dart
deleted file mode 100644
index e511440..0000000
--- a/tests/html/hidden_dom_1_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-library HiddenDom1Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-// Test that the dart:html API does not leak native jsdom methods:
-//   onfocus setter.
-
-main() {
-  useHtmlConfiguration();
-
-  test('test1', () {
-    document.body.children.add(new Element.html(r'''
-<div id='div1'>
-Hello World!
-</div>'''));
-    Element e = document.querySelector('#div1');
-    expect(e, isNotNull);
-
-    checkNoSuchMethod(() {
-      confuse(e).onfocus = null;
-    });
-  });
-}
-
-class Decoy {
-  void set onfocus(x) {
-    throw 'dead code';
-  }
-}
-
-confuse(x) => opaqueTrue() ? x : (opaqueTrue() ? new Object() : new Decoy());
-
-/** Returns [:true:], but in a way that confuses the compiler. */
-opaqueTrue() => true; // Expand as needed.
-
-checkNoSuchMethod(action()) {
-  var ex = null;
-  try {
-    action();
-  } catch (e) {
-    ex = e;
-  }
-  if (ex == null)
-    expect(false, isTrue, reason: 'Action should have thrown exception');
-
-  expect(ex, isNoSuchMethodError);
-}
diff --git a/tests/html/hidden_dom_2_test.dart b/tests/html/hidden_dom_2_test.dart
deleted file mode 100644
index 10bb07c..0000000
--- a/tests/html/hidden_dom_2_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-library HiddenDom2Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-// Test that the dart:html API does not leak native jsdom methods:
-//   appendChild operation.
-
-main() {
-  useHtmlConfiguration();
-
-  test('test1', () {
-    document.body.children.add(new Element.html(r'''
-<div id='div1'>
-Hello World!
-</div>'''));
-    Element e = document.querySelector('#div1');
-    Element e2 = new Element.html(r"<div id='xx'>XX</div>");
-    expect(e, isNotNull);
-
-    checkNoSuchMethod(() {
-      confuse(e).appendChild(e2);
-    });
-  });
-}
-
-class Decoy {
-  void appendChild(x) {
-    throw 'dead code';
-  }
-}
-
-confuse(x) => opaqueTrue() ? x : (opaqueTrue() ? new Object() : new Decoy());
-
-/** Returns [:true:], but in a way that confuses the compiler. */
-opaqueTrue() => true; // Expand as needed.
-
-checkNoSuchMethod(action()) {
-  var ex = null;
-  bool threw = false;
-  try {
-    action();
-  } catch (e) {
-    threw = true;
-    ex = e;
-  }
-  if (!threw)
-    expect(false, isTrue, reason: 'Action should have thrown exception');
-
-  expect(ex, isNoSuchMethodError);
-}
diff --git a/tests/html/history_test.dart b/tests/html/history_test.dart
deleted file mode 100644
index 907fa7c..0000000
--- a/tests/html/history_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-library HistoryTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:async';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported_state', () {
-    test('supportsState', () {
-      expect(History.supportsState, true);
-    });
-  });
-
-  group('supported_HashChangeEvent', () {
-    test('supported', () {
-      expect(HashChangeEvent.supported, true);
-    });
-  });
-
-  var expectation = History.supportsState ? returnsNormally : throws;
-
-  group('history', () {
-    test('pushState', () {
-      expect(() {
-        window.history.pushState(null, document.title, '?dummy');
-        var length = window.history.length;
-
-        window.history.pushState(null, document.title, '?foo=bar');
-
-        expect(window.location.href.endsWith('foo=bar'), isTrue);
-      }, expectation);
-    });
-
-    test('pushState with data', () {
-      expect(() {
-        window.history.pushState({'one': 1}, document.title, '?dummy');
-        expect(window.history.state, equals({'one': 1}));
-        window.history.pushState(null, document.title, '?foo=bar');
-
-        expect(window.location.href.endsWith('foo=bar'), isTrue);
-      }, expectation);
-    });
-
-    test('back', () {
-      expect(() {
-        window.history.pushState(null, document.title, '?dummy1');
-        window.history.pushState(null, document.title, '?dummy2');
-        var length = window.history.length;
-
-        expect(window.location.href.endsWith('dummy2'), isTrue);
-
-        // Need to wait a frame or two to let the pushState events occur.
-        new Timer(const Duration(milliseconds: 100), expectAsync(() {
-          window.onPopState.first.then(expectAsync((_) {
-            expect(window.history.length, length);
-            expect(window.location.href.endsWith('dummy1'), isTrue);
-          }));
-
-          window.history.back();
-        }));
-      }, expectation);
-    });
-
-    test('replaceState', () {
-      expect(() {
-        var length = window.history.length;
-
-        window.history.replaceState(null, document.title, '?foo=baz');
-        expect(window.history.length, length);
-        expect(window.location.href.endsWith('foo=baz'), isTrue);
-      }, expectation);
-    });
-
-    test('popstatevent', () {
-      expect(() {
-        var event = new Event.eventType('PopStateEvent', 'popstate');
-        expect(event is PopStateEvent, true);
-      }, expectation);
-    });
-
-    test('hashchangeevent', () {
-      var expectation = HashChangeEvent.supported ? returnsNormally : throws;
-      expect(() {
-        var event = new HashChangeEvent('change', oldUrl: 'old', newUrl: 'new');
-        expect(event is HashChangeEvent, true);
-        expect(event.oldUrl, 'old');
-        expect(event.newUrl, 'new');
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/html/html.status b/tests/html/html.status
deleted file mode 100644
index c05e1b0..0000000
--- a/tests/html/html.status
+++ /dev/null
@@ -1,526 +0,0 @@
-# Copyright (c) 2013, 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.
-cross_frame_test: Skip # Test reloads itself. Issue 18558
-interactive_test: Skip # Must be run manually.
-
-[ $compiler == dart2analyzer ]
-custom/document_register_basic_test: StaticWarning
-custom/element_upgrade_test: StaticWarning
-datalistelement_test: StaticWarning
-documentfragment_test: StaticWarning
-element_add_test: StaticWarning
-element_test: StaticWarning
-events_test: StaticWarning
-htmlelement_test: StaticWarning
-js_function_getter_trust_types_test: Skip # dart2js specific flags.
-js_typed_interop_default_arg_test/default_value: MissingCompileTimeError # Issue #25759
-localstorage_test: StaticWarning
-mutationobserver_test: StaticWarning
-track_element_constructor_test: StaticWarning
-transferables_test: StaticWarning
-typed_arrays_range_checks_test: StaticWarning
-typing_test: StaticWarning
-webgl_1_test: StaticWarning
-window_nosuchmethod_test: StaticWarning
-
-[ $compiler == dart2js ]
-async_spawnuri_test: SkipByDesign
-async_test: SkipByDesign
-custom/document_register_type_extensions_test/construction: Pass, Timeout # Roll 50 failure
-custom/document_register_type_extensions_test/registration: Pass, Timeout # Roll 50 failure
-custom/entered_left_view_test/shadow_dom: Pass, Timeout # Roll 50 failure
-custom/mirrors_2_test: RuntimeError
-custom/mirrors_test: RuntimeError
-fileapi_test/directoryReader: Pass, Timeout # Roll 50 failure
-fileapi_test/entry: Pass, Timeout # Roll 50 failure
-fileapi_test/entry: RuntimeError
-fileapi_test/fileEntry: Pass, Timeout # Roll 50 failure
-fileapi_test/getDirectory: Pass, Timeout # Roll 50 failure
-fileapi_test/getFile: Pass, Timeout # Roll 50 failure
-indexeddb_1_test/functional: Pass, Timeout # Roll 50 failure
-indexeddb_1_test/functional: RuntimeError
-indexeddb_2_test: Pass, Timeout # Roll 50 failure
-indexeddb_3_test: Pass, Timeout # Roll 50 failure
-indexeddb_3_test: RuntimeError
-indexeddb_4_test: Pass, Timeout # Roll 50 failure
-indexeddb_5_test: Pass, Timeout # Roll 50 failure
-indexeddb_5_test: RuntimeError
-input_element_test/attributes: Fail # Issue 21555
-isolates_test: SkipByDesign
-js_typed_interop_default_arg_test/default_value: MissingCompileTimeError # Issue #25759
-js_typed_interop_default_arg_test/explicit_argument: RuntimeError
-js_typed_interop_side_cast_exp_test: Pass, RuntimeError # Roll 50 failure
-js_typed_interop_test/static_method_tearoff_1: RuntimeError
-mirrors_js_typed_interop_test: Pass, Slow
-mirrors_js_typed_interop_test: SkipByDesign
-svgelement_test/PathElement: Pass, RuntimeError # Roll 50 failure
-worker_api_test: SkipByDesign
-wrapping_collections_test: SkipByDesign # Testing an issue that is only relevant to Dartium
-xhr_test/xhr: Pass, RuntimeError # Roll 50 failure
-
-[ $compiler == fasta ]
-*: Skip # TODO(ahe): Support dart:html in Fasta.
-
-[ $runtime == ie11 ]
-audiobuffersourcenode_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-audiocontext_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-canvasrenderingcontext2d_test/arc: Pass, Fail # Pixel unexpected value. Please triage this failure.
-canvasrenderingcontext2d_test/drawImage_video_element: Fail # IE does not support drawImage w/ video element
-canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Fail # IE does not support drawImage w/ video element
-crypto_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-css_test/supportsPointConversions: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-custom/document_register_type_extensions_test/single-parameter: Fail # Issue 13193.
-element_animate_test: Fail # Element.animate not supported on these browsers.
-element_test/click: Fail # IE does not support firing this event.
-element_types_test/supported_content: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_details: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_keygen: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_meter: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_output: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_shadow: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_template: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-event_test: RuntimeError # Issue 23437. Only three failures, but hard to break them out.
-fileapi_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-gamepad_test: Fail # IE does not support Navigator.getGamepads()
-history_test/supported_HashChangeEvent: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-indexeddb_5_test: Fail # Issue 12893
-input_element_test/supported_date: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-input_element_test/supported_datetime-local: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-input_element_test/supported_month: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-input_element_test/supported_time: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-input_element_test/supported_week: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-js_test/transferrables: RuntimeError # Issue 14246
-js_util_test/callConstructor: RuntimeError # Issue 26978
-localstorage_test: Pass, RuntimeError # Issue 22166
-media_stream_test/supported_MediaStreamEvent: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-media_stream_test/supported_MediaStreamTrackEvent: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-media_stream_test/supported_media: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-mediasource_test/functional: Pass, Fail # Fails on Windows 8
-mediasource_test/supported: Pass, Fail # Should pass on Windows 8
-notification_test/supported_notification: Fail # Notification not supported on IE
-postmessage_structured_test/more_primitives: Fail # Does not support the MessageEvent constructor.
-request_animation_frame_test: Skip # Times out. Issue 22167
-rtc_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-serialized_script_value_test: Fail
-shadow_dom_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-speechrecognition_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-storage_test: Pass, RuntimeError # Issue 22166
-svgelement_test/supported_altGlyph: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-svgelement_test/supported_animate: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-svgelement_test/supported_animateMotion: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-svgelement_test/supported_animateTransform: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-svgelement_test/supported_foreignObject: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-svgelement_test/supported_set: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-text_event_test: RuntimeError # Issue 23437
-touchevent_test/supported: Fail # IE does not support TouchEvents
-transferables_test: Pass, Fail # Issues 20659.
-transition_event_test/functional: Skip # Times out. Issue 22167
-webgl_1_test/functional: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-websocket_test/websocket: Fail # Issue 7875. Closed with "working as intended".
-websql_test: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-wheelevent_test: RuntimeError # Issue 23437
-worker_test/functional: Pass, Fail # Issues 20659.
-xhr_test/json: Fail # IE10 returns string, not JSON object
-xsltprocessor_test/supported: Fail # IE11 Feature support statuses - These results not yet noted in platform support annotations. All changes should be accompanied by platform support annotation changes.
-
-[ $runtime == safari ]
-audiobuffersourcenode_test/functional: RuntimeError
-canvasrenderingcontext2d_test/drawImage_video_element: Fail # Safari does not support drawImage w/ video element
-canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Fail # Safari does not support drawImage w/ video element
-element_animate_test: Fail # Element.animate not supported on these browsers.
-element_test: Pass, Fail # Issue 21434
-element_types_test/supported_content: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_datalist: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_shadow: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-fileapi_test/supported: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-gamepad_test: Fail # Safari does not support Navigator.getGamepads()
-indexeddb_1_test/functional: Skip # Times out. Issue 21433
-indexeddb_2_test: RuntimeError # Issue 21433
-indexeddb_3_test: Skip # Times out 1 out of 10.
-indexeddb_4_test: RuntimeError # Issue 21433
-indexeddb_5_test: RuntimeError # Issue 21433
-input_element_test/supported_date: Fail
-input_element_test/supported_datetime-local: Fail
-input_element_test/supported_month: RuntimeError
-input_element_test/supported_time: RuntimeError
-input_element_test/supported_week: RuntimeError
-media_stream_test/supported_MediaStreamEvent: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-media_stream_test/supported_MediaStreamTrackEvent: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-media_stream_test/supported_media: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-mediasource_test: Pass, Fail # MediaSource only available on Safari 8 desktop, we can't express that.
-notification_test/constructors: Fail # Safari doesn't let us access the fields of the Notification to verify them.
-rtc_test/supported: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-shadow_dom_test/supported: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-speechrecognition_test/supported: Fail # Safari Feature support statuses - All changes should be accompanied by platform support annotation changes.
-touchevent_test/supported: Fail # Safari does not support TouchEvents
-webgl_1_test: Pass, Fail # Issue 8219
-
-[ $system == windows ]
-xhr_test/xhr: Skip # Times out.  Issue 21527
-
-# The html tests were moved to lib_2/html, and there they should be made strong
-# mode compliant. There's no sense in running the old versions here.
-[ $strong ]
-*: SkipByDesign
-
-[ $compiler == dart2js && $runtime == chrome ]
-element_animate_test/timing_dict: RuntimeError # Issue 26730
-element_classes_test: RuntimeError # Issue 30291
-element_types_test/supported_keygen: RuntimeError # Issue 29055
-fileapi_test/entry: Pass, Fail # TODO(dart2js-team): Please triage this failure.
-fileapi_test/getDirectory: Fail # TODO(dart2js-team): Please triage this failure.
-fileapi_test/getFile: Fail # TODO(dart2js-team): Please triage this failure.
-media_stream_test/supported_MediaStreamEvent: RuntimeError # Please triage.
-media_stream_test/supported_MediaStreamTrackEvent: RuntimeError # Please triage.
-speechrecognition_test/types: RuntimeError # Please triage.
-svgelement_test/supported_altGlyph: RuntimeError # Issue 25787
-touchevent_test/supported: Fail # Touch events are only supported on touch devices
-
-[ $compiler == dart2js && $runtime == chromeOnAndroid ]
-audiobuffersourcenode_test/supported: Fail # TODO(dart2js-team): Please triage this failure.
-audiocontext_test/supported: RuntimeError # TODO(dart2js-team): Please triage this failure.
-canvasrenderingcontext2d_test/drawImage_video_element: Fail # TODO(dart2js-team): Please triage this failure.
-canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Fail # TODO(dart2js-team): Please triage this failure.
-canvasrenderingcontext2d_test/fillText: Fail # TODO(dart2js-team): Please triage this failure.
-crypto_test/functional: Pass, Slow # TODO(dart2js-team): Please triage this failure.
-element_types_test/supported_datalist: Fail # TODO(dart2js-team): Please triage this failure.
-fileapi_test/entry: Fail, Pass # TODO(dart2js-team): Please triage this failure.
-fileapi_test/fileEntry: Fail, Pass # TODO(dart2js-team): Please triage this failure.
-fileapi_test/getDirectory: Fail, Pass # TODO(dart2js-team): Please triage this failure.
-fileapi_test/getFile: Fail, Pass # TODO(dart2js-team): Please triage this failure.
-input_element_test/supported_datetime-local: Pass, Slow # TODO(dart2js-team): Please triage this failure.
-input_element_test/supported_week: Fail # TODO(dart2js-team): Please triage this failure.
-media_stream_test/supported_media: Fail # TODO(dart2js-team): Please triage this failure.
-rtc_test/supported: Fail # TODO(dart2js-team): Please triage this failure.
-speechrecognition_test/supported: Fail # TODO(dart2js-team): Please triage this failure.
-speechrecognition_test/types: Fail # TODO(dart2js-team): Please triage this failure.
-xhr_test/json: Fail # TODO(dart2js-team): Please triage this failure.
-
-[ $compiler == dart2js && $runtime == d8 ]
-async_spawnuri_test: RuntimeError
-audiobuffersourcenode_test: RuntimeError
-audiocontext_test: RuntimeError
-audioelement_test: RuntimeError
-b_element_test: RuntimeError
-blob_constructor_test: RuntimeError
-cache_test: RuntimeError
-callbacks_test: RuntimeError
-canvas_pixel_array_type_alias_test: RuntimeError
-canvas_test: RuntimeError
-canvasrenderingcontext2d_test: RuntimeError
-cdata_test: RuntimeError
-client_rect_test: RuntimeError
-cross_domain_iframe_test: RuntimeError
-crypto_test: RuntimeError
-css_rule_list_test: RuntimeError
-css_test: RuntimeError
-cssstyledeclaration_test: RuntimeError
-custom/attribute_changed_callback_test: RuntimeError
-custom/constructor_calls_created_synchronously_test: RuntimeError
-custom/created_callback_test: RuntimeError
-custom/document_register_basic_test: RuntimeError
-custom/document_register_template_test: RuntimeError
-custom/document_register_type_extensions_test: RuntimeError
-custom/element_upgrade_test: RuntimeError
-custom/entered_left_view_test: RuntimeError
-custom/js_custom_test: RuntimeError
-custom_element_method_clash_test: RuntimeError
-custom_element_name_clash_test: RuntimeError
-custom_elements_23127_test: RuntimeError
-custom_elements_test: RuntimeError
-custom_tags_test: RuntimeError
-dart_object_local_storage_test: RuntimeError
-datalistelement_test: RuntimeError
-document_test: RuntimeError
-documentfragment_test: RuntimeError
-dom_constructors_test: RuntimeError
-domparser_test: RuntimeError
-element_add_test: RuntimeError
-element_animate_test: RuntimeError
-element_classes_svg_test: RuntimeError
-element_classes_test: RuntimeError
-element_constructor_1_test: RuntimeError
-element_dimensions_test: RuntimeError
-element_offset_test: RuntimeError
-element_test: RuntimeError
-element_types_constructors1_test: RuntimeError
-element_types_constructors2_test: RuntimeError
-element_types_constructors3_test: RuntimeError
-element_types_constructors4_test: RuntimeError
-element_types_constructors5_test: RuntimeError
-element_types_constructors6_test: RuntimeError
-element_types_test: RuntimeError
-event_customevent_test: RuntimeError
-event_test: RuntimeError
-events_test: RuntimeError
-exceptions_test: RuntimeError
-fileapi_test: RuntimeError
-filereader_test: RuntimeError
-filteredelementlist_test: RuntimeError
-fontface_test: RuntimeError
-form_data_test: RuntimeError
-form_element_test: RuntimeError
-gamepad_test: RuntimeError
-geolocation_test: RuntimeError
-hidden_dom_1_test: RuntimeError
-hidden_dom_2_test: RuntimeError
-history_test: RuntimeError
-htmlcollection_test: RuntimeError
-htmlelement_test: RuntimeError
-htmloptionscollection_test: RuntimeError
-indexeddb_1_test: RuntimeError
-indexeddb_2_test: RuntimeError
-indexeddb_4_test: RuntimeError
-input_element_test: RuntimeError
-instance_of_test: RuntimeError
-isolates_test: RuntimeError
-js_array_test: RuntimeError
-js_dart_to_string_test: RuntimeError
-js_dispatch_property_test: RuntimeError
-js_function_getter_test: RuntimeError
-js_function_getter_trust_types_test: RuntimeError
-js_interop_1_test: RuntimeError
-js_interop_constructor_name_test: RuntimeError
-js_test: RuntimeError
-js_type_test: RuntimeError
-js_typed_interop_anonymous2_exp_test: RuntimeError
-js_typed_interop_anonymous2_test: RuntimeError
-js_typed_interop_anonymous_exp_test: RuntimeError
-js_typed_interop_anonymous_test: RuntimeError
-js_typed_interop_anonymous_unreachable_exp_test: RuntimeError
-js_typed_interop_anonymous_unreachable_test: RuntimeError
-js_typed_interop_bind_this_test: RuntimeError
-js_typed_interop_callable_object_test: RuntimeError
-js_typed_interop_default_arg_test/none: RuntimeError
-js_typed_interop_side_cast_test: RuntimeError
-js_typed_interop_test: RuntimeError
-js_typed_interop_type1_test/01: RuntimeError
-js_typed_interop_type1_test/none: RuntimeError
-js_typed_interop_type3_test/01: RuntimeError
-js_typed_interop_type3_test/02: RuntimeError
-js_typed_interop_type3_test/none: RuntimeError
-js_typed_interop_type_test: RuntimeError
-js_typed_interop_window_property_test: RuntimeError
-js_util_test: RuntimeError
-keyboard_event_test: RuntimeError
-localstorage_test: RuntimeError
-location_test: RuntimeError
-media_stream_test: RuntimeError
-mediasource_test: RuntimeError
-messageevent_test: RuntimeError
-mouse_event_test: RuntimeError
-mutationobserver_test: RuntimeError
-native_gc_test: RuntimeError
-navigator_test: RuntimeError
-node_test: RuntimeError
-node_validator_important_if_you_suppress_make_the_bug_critical_test: RuntimeError
-non_instantiated_is_test: RuntimeError
-notification_test: RuntimeError
-performance_api_test: RuntimeError
-postmessage_structured_test: RuntimeError
-query_test: RuntimeError
-queryall_test: RuntimeError
-range_test: RuntimeError
-request_animation_frame_test: RuntimeError
-rtc_test: RuntimeError
-selectelement_test: RuntimeError
-serialized_script_value_test: RuntimeError
-shadow_dom_test: RuntimeError
-shadowroot_test: RuntimeError
-speechrecognition_test: RuntimeError
-storage_test: RuntimeError
-svg_test: RuntimeError
-svgelement_test: RuntimeError
-table_test: RuntimeError
-text_event_test: RuntimeError
-touchevent_test: RuntimeError
-track_element_constructor_test: RuntimeError
-transferables_test: RuntimeError
-transition_event_test: RuntimeError
-trusted_html_tree_sanitizer_test: RuntimeError
-typed_arrays_1_test: RuntimeError
-typed_arrays_2_test: RuntimeError
-typed_arrays_3_test: RuntimeError
-typed_arrays_4_test: RuntimeError
-typed_arrays_5_test: RuntimeError
-typed_arrays_arraybuffer_test: RuntimeError
-typed_arrays_dataview_test: RuntimeError
-typed_arrays_range_checks_test: RuntimeError
-typed_arrays_simd_test: RuntimeError
-typing_test: RuntimeError
-unknownelement_test: RuntimeError
-uri_test: RuntimeError
-url_test: RuntimeError
-webgl_1_test: RuntimeError
-webgl_extensions_test: RuntimeError
-websocket_test: RuntimeError
-websql_test: RuntimeError
-wheelevent_test: RuntimeError
-window_eq_test: RuntimeError
-window_mangling_test: RuntimeError
-window_nosuchmethod_test: RuntimeError
-window_test: RuntimeError
-worker_api_test: RuntimeError
-worker_test: RuntimeError
-xhr_cross_origin_test: RuntimeError
-xhr_test: RuntimeError
-xsltprocessor_test: RuntimeError
-
-[ $compiler == dart2js && $runtime == d8 && $minified ]
-fontface_loaded_test: RuntimeError
-streams_test: RuntimeError
-
-[ $compiler == dart2js && $runtime == ff ]
-dart_object_local_storage_test: Skip # sessionStorage NS_ERROR_DOM_NOT_SUPPORTED_ERR
-element_animate_test/timing_dict: RuntimeError # Issue 26730
-element_classes_test: RuntimeError # Issue 27535
-element_types_test/supported_content: Pass, RuntimeError # Issue 28983
-element_types_test/supported_keygen: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-element_types_test/supported_shadow: Pass, RuntimeError # Issue 28983
-fileapi_test/supported: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-history_test/history: Skip # Issue 22050
-input_element_test/supported_datetime-local: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-input_element_test/supported_month: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-input_element_test/supported_week: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-media_stream_test/supported_MediaStreamEvent: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-media_stream_test/supported_MediaStreamTrackEvent: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-messageevent_test: Pass, RuntimeError # Issue 28983
-request_animation_frame_test: Skip # Async test hangs.
-serialized_script_value_test: Pass, RuntimeError # Issue 28983
-shadow_dom_test/supported: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-speechrecognition_test/supported: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-text_event_test: Fail # Issue 17893
-touchevent_test/supported: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-webgl_1_test: Pass, Fail # Issue 8219
-websql_test: Fail # Firefox Feature support statuses - All changes should be accompanied by platform support annotation changes.
-xhr_test/xhr: Pass, Fail # Issue 11602
-
-[ $compiler == dart2js && $runtime == ff && $system == windows ]
-websql_test: Pass # Triage, seen some double reporting on windows.
-
-[ $compiler == dart2js && $browser ]
-custom/created_callback_test: Fail # Support for created constructor. Issue 14835
-
-[ $compiler == dart2js && $browser && $csp ]
-custom/element_upgrade_test: Fail # Issue 17298
-custom/js_custom_test: Fail # Issue 14643
-
-[ $compiler == dart2js && $checked ]
-canvasrenderingcontext2d_test/drawImage_image_element: Timeout
-canvasrenderingcontext2d_test/drawImage_video_element: Timeout
-canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Timeout
-custom/attribute_changed_callback_test/fully_supported: RuntimeError
-custom/attribute_changed_callback_test/unsupported_on_polyfill: RuntimeError
-custom/document_register_type_extensions_test/construction: RuntimeError
-custom/document_register_type_extensions_test/functional: RuntimeError
-custom/document_register_type_extensions_test/namespaces: RuntimeError
-custom/document_register_type_extensions_test/parsing: RuntimeError
-custom/document_register_type_extensions_test/registration: RuntimeError
-custom/entered_left_view_test/disconnected_subtree: RuntimeError
-custom/entered_left_view_test/shadow_dom: RuntimeError
-custom/entered_left_view_test/standard_events: RuntimeError
-custom/entered_left_view_test/standard_events_old_callback_names: RuntimeError
-custom/entered_left_view_test/viewless_document: RuntimeError
-custom_element_method_clash_test/test: RuntimeError
-custom_element_name_clash_test/test: RuntimeError
-custom_elements_23127_test/baseline: RuntimeError
-custom_elements_23127_test/c1t: RuntimeError
-custom_elements_23127_test/c2: RuntimeError
-custom_elements_23127_test/c2t: RuntimeError
-custom_elements_test/innerHtml: RuntimeError
-custom_elements_test/lifecycle: RuntimeError
-custom_elements_test/mixins: RuntimeError
-custom_elements_test/register: RuntimeError
-element_animate_test/omit_timing: Timeout
-element_test/click: RuntimeError
-element_test/eventDelegation: RuntimeError
-fileapi_test/directoryReader: RuntimeError
-fileapi_test/fileEntry: RuntimeError
-form_data_test/functional: Timeout
-history_test/history: Timeout
-indexeddb_1_test/functional: RuntimeError
-indexeddb_2_test: RuntimeError
-indexeddb_4_test: RuntimeError
-js_function_getter_trust_types_test: Skip # --trust-type-annotations incompatible with --checked
-js_test/JsObject.fromBrowserObject(): RuntimeError
-js_test/JsObject.jsify(): RuntimeError
-js_util_test/js_util.jsify(): RuntimeError
-mirrors_js_typed_interop_test: RuntimeError
-mutationobserver_test/childList: Timeout
-postmessage_structured_test/iframe: RuntimeError
-postmessage_structured_test/primitives: Timeout
-postmessage_structured_test/typed_arrays: Timeout
-transition_event_test/functional: Timeout
-websocket_test/websocket: RuntimeError
-websql_test/functional: RuntimeError
-worker_test/functional: Timeout
-xhr_cross_origin_test/functional: Timeout
-xhr_test/headers: RuntimeError
-xhr_test/json: Timeout
-xhr_test/xhr: Timeout
-xhr_test/xhr_requestBlob: RuntimeError
-xhr_test/xhr_requestBlob/xhr_requestBlob: Pass
-
-# Note: these tests are all injecting scripts by design.  This is not allowed under CSP.
-# TODO(sra): Change these tests to use a same-origin JavaScript script file.
-[ $compiler == dart2js && $csp && ($runtime == chrome || $runtime == chromeOnAndroid || $runtime == ff || $runtime == safari) ]
-event_customevent_test: SkipByDesign
-js_array_test: SkipByDesign
-js_dart_to_string_test: SkipByDesign
-js_function_getter_test: SkipByDesign
-js_function_getter_trust_types_test: SkipByDesign
-js_interop_1_test: SkipByDesign
-js_test: SkipByDesign
-js_typed_interop_bind_this_test: SkipByDesign
-js_typed_interop_callable_object_test: SkipByDesign
-js_typed_interop_default_arg_test: SkipByDesign
-js_typed_interop_test: SkipByDesign
-js_typed_interop_type1_test: SkipByDesign
-js_typed_interop_type3_test: SkipByDesign
-js_typed_interop_type_test: SkipByDesign
-js_typed_interop_window_property_test: SkipByDesign
-js_util_test: SkipByDesign
-mirrors_js_typed_interop_test: SkipByDesign
-postmessage_structured_test: SkipByDesign
-
-[ $compiler == dart2js && $fast_startup ]
-custom/mirrors_2_test: Fail # mirrors not supported
-custom/mirrors_test: Fail # mirrors not supported
-mirrors_js_typed_interop_test: Fail # mirrors not supported
-
-[ $compiler == dart2js && $host_checked ]
-fontface_loaded_test: RuntimeError
-streams_test: RuntimeError
-
-[ $compiler == dart2js && $minified ]
-canvas_pixel_array_type_alias_test/types2_runtimeTypeName: Fail, OK # Issue 12605
-
-[ $compiler == dart2js && ($runtime == ff || $runtime == safari || $ie) ]
-custom/attribute_changed_callback_test/unsupported_on_polyfill: Fail # Polyfill does not support
-custom/entered_left_view_test/viewless_document: Fail # Polyfill does not handle this
-fontface_test: Fail # Fontface not supported on these.
-
-[ $compiler == dart2js && ($runtime == safari || $ie) ]
-fontface_loaded_test: Fail # Not supported on these.
-
-[ $runtime == chrome && $system == macos ]
-canvasrenderingcontext2d_test/drawImage_video_element: Skip # Times out. Please triage this failure.
-canvasrenderingcontext2d_test/drawImage_video_element_dataUrl: Skip # Times out. Please triage this failure.
-custom/*: Pass, Timeout # Issue 26789
-custom_element_method_clash_test: Pass, Timeout # Issue 26789
-custom_element_name_clash_test: Pass, Timeout # Issue 26789
-custom_elements_test: Pass, Timeout # Issue 26789
-request_animation_frame_test: Skip # Times out. Issue 22167
-transition_event_test/functional: Skip # Times out. Issue 22167
-
-[ $runtime == chrome && $csp ]
-worker_test/functional: SkipByDesign # starts worker with inline script
-
-[ $runtime == chrome || $runtime == chromeOnAndroid ]
-webgl_1_test: Pass, Fail # Issue 8219
-
-# 'html' tests import the HTML library, so they only make sense in
-# a browser environment.
-[ $runtime == dart_precompiled || $runtime == vm ]
-*: Skip
diff --git a/tests/html/htmlcollection_test.dart b/tests/html/htmlcollection_test.dart
deleted file mode 100644
index 53da995..0000000
--- a/tests/html/htmlcollection_test.dart
+++ /dev/null
@@ -1,256 +0,0 @@
-library ElementListTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-// Test that List<Element> implements List<T>
-main() {
-  Element insertTestDiv() {
-    Element element = new Element.tag('div');
-    element.innerHtml = r"""
-<div id='allChecked'>
-<input type="checkbox" name="c1" value="1" checked="yes">
-<input type="checkbox" name="c2" value="2" checked="yes">
-<input type="checkbox" name="c3" value="3" checked="yes">
-<input type="checkbox" name="c4" value="4" checked="yes">
-</div>
-<div id='someChecked'>
-<input type="checkbox" name="s1" value="1" checked="yes">
-<input type="checkbox" name="s2" value="2">
-<input type="checkbox" name="s3" value="3" checked="yes">
-<input type="checkbox" name="s4" value="4">
-</div>
-<div id='noneChecked'>
-<input type="checkbox" name="n1" value="1">
-<input type="checkbox" name="n2" value="2">
-<input type="checkbox" name="n3" value="3">
-<input type="checkbox" name="n4" value="4">
-</div>
-<div id='emptyDiv'></div>
-""";
-    document.body.append(element);
-    return element;
-  }
-
-  useHtmlConfiguration();
-
-  test('IsList', () {
-    Element root = insertTestDiv();
-
-    List<Element> eachChecked = document.querySelector('#allChecked').children;
-
-    expect(eachChecked, isList);
-
-    root.remove();
-  });
-  test('Every', () {
-    Element root = insertTestDiv();
-
-    List<Element> eachChecked = document.querySelector('#allChecked').children;
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> noneChecked = document.querySelector('#noneChecked').children;
-
-    expect(eachChecked.length, 4);
-    expect(someChecked.length, 4);
-    expect(noneChecked.length, 4);
-
-    expect(eachChecked.every((x) => x.checked), isTrue);
-    expect(eachChecked.every((x) => !x.checked), isFalse);
-    expect(someChecked.every((x) => x.checked), isFalse);
-    expect(someChecked.every((x) => !x.checked), isFalse);
-    expect(noneChecked.every((x) => x.checked), isFalse);
-    expect(noneChecked.every((x) => !x.checked), isTrue);
-
-    root.remove();
-  });
-  test('Some', () {
-    Element root = insertTestDiv();
-
-    List<Element> eachChecked = document.querySelector('#allChecked').children;
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> noneChecked = document.querySelector('#noneChecked').children;
-
-    expect(eachChecked.length, 4);
-    expect(someChecked.length, 4);
-    expect(noneChecked.length, 4);
-
-    expect(eachChecked.any((x) => x.checked), isTrue);
-    expect(eachChecked.any((x) => !x.checked), isFalse);
-    expect(someChecked.any((x) => x.checked), isTrue);
-    expect(someChecked.any((x) => !x.checked), isTrue);
-    expect(noneChecked.any((x) => x.checked), isFalse);
-    expect(noneChecked.any((x) => !x.checked), isTrue);
-
-    root.remove();
-  });
-  test('Filter', () {
-    Element root = insertTestDiv();
-
-    List<Element> eachChecked = document.querySelector('#allChecked').children;
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> noneChecked = document.querySelector('#noneChecked').children;
-
-    expect(eachChecked.length, 4);
-    expect(someChecked.length, 4);
-    expect(noneChecked.length, 4);
-
-    expect(eachChecked.where((x) => x.checked).length, 4);
-    expect(eachChecked.where((x) => !x.checked).length, 0);
-    expect(someChecked.where((x) => x.checked).length, 2);
-    expect(someChecked.where((x) => !x.checked).length, 2);
-    expect(noneChecked.where((x) => x.checked).length, 0);
-    expect(noneChecked.where((x) => !x.checked).length, 4);
-
-    root.remove();
-  });
-  test('IsEmpty', () {
-    Element root = insertTestDiv();
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> emptyDiv = document.querySelector('#emptyDiv').children;
-
-    expect(someChecked.length, 4);
-    expect(emptyDiv.length, 0);
-
-    expect(someChecked.isEmpty, isFalse);
-    expect(emptyDiv.isEmpty, isTrue);
-
-    root.remove();
-  });
-
-  int countWithForEach(collection, predicate) {
-    int count = 0;
-    collection.forEach((element) {
-      if (predicate(element)) count++;
-    });
-    return count;
-  }
-
-  test('ForEach', () {
-    Element root = insertTestDiv();
-
-    List<Element> eachChecked = document.querySelector('#allChecked').children;
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> noneChecked = document.querySelector('#noneChecked').children;
-
-    expect(eachChecked.length, 4);
-    expect(someChecked.length, 4);
-    expect(noneChecked.length, 4);
-
-    expect(countWithForEach(eachChecked, (x) => x.checked), 4);
-    expect(countWithForEach(eachChecked, (x) => !x.checked), 0);
-    expect(countWithForEach(someChecked, (x) => x.checked), 2);
-    expect(countWithForEach(someChecked, (x) => !x.checked), 2);
-    expect(countWithForEach(noneChecked, (x) => x.checked), 0);
-    expect(countWithForEach(noneChecked, (x) => !x.checked), 4);
-
-    root.remove();
-  });
-
-  int countWithForLoop(collection, predicate) {
-    int count = 0;
-    for (var element in collection) {
-      if (predicate(element)) count++;
-    }
-    return count;
-  }
-
-  test('ForLoop', () {
-    // Uses iterator.
-    Element root = insertTestDiv();
-
-    List<Element> eachChecked = document.querySelector('#allChecked').children;
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> noneChecked = document.querySelector('#noneChecked').children;
-
-    expect(eachChecked.length, 4);
-    expect(someChecked.length, 4);
-    expect(noneChecked.length, 4);
-
-    expect(countWithForLoop(eachChecked, (x) => x.checked), 4);
-    expect(countWithForLoop(eachChecked, (x) => !x.checked), 0);
-    expect(countWithForLoop(someChecked, (x) => x.checked), 2);
-    expect(countWithForLoop(someChecked, (x) => !x.checked), 2);
-    expect(countWithForLoop(noneChecked, (x) => x.checked), 0);
-    expect(countWithForLoop(noneChecked, (x) => !x.checked), 4);
-
-    root.remove();
-  });
-  test('Last', () {
-    Element root = insertTestDiv();
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    expect(someChecked.length, 4);
-
-    expect(someChecked.last, equals(someChecked[3]));
-
-    root.remove();
-  });
-  test('IndexOf', () {
-    Element root = insertTestDiv();
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> noneChecked = document.querySelector('#noneChecked').children;
-
-    expect(someChecked.length, 4);
-    expect(noneChecked.length, 4);
-
-    expect(someChecked.indexOf(someChecked[0], 0), 0);
-    expect(someChecked.indexOf(someChecked[1], 0), 1);
-    expect(someChecked.indexOf(someChecked[2], 0), 2);
-    expect(someChecked.indexOf(someChecked[3], 0), 3);
-
-    expect(someChecked.indexOf(someChecked[0], 1), -1);
-    expect(someChecked.indexOf(someChecked[1], 2), -1);
-    expect(someChecked.indexOf(someChecked[2], 3), -1);
-    expect(someChecked.indexOf(someChecked[3], 4), -1);
-
-    expect(someChecked.indexOf(noneChecked[0], 0), -1);
-    expect(noneChecked.indexOf(someChecked[0], 0), -1);
-    expect(someChecked.indexOf(noneChecked[1], 0), -1);
-    expect(noneChecked.indexOf(someChecked[1], 0), -1);
-
-    root.remove();
-  });
-  test('LastIndexOf', () {
-    Element root = insertTestDiv();
-
-    List<Element> someChecked = document.querySelector('#someChecked').children;
-
-    List<Element> noneChecked = document.querySelector('#noneChecked').children;
-
-    expect(someChecked.length, 4);
-    expect(noneChecked.length, 4);
-
-    expect(someChecked.lastIndexOf(someChecked[0], 3), 0);
-    expect(someChecked.lastIndexOf(someChecked[1], 3), 1);
-    expect(someChecked.lastIndexOf(someChecked[2], 3), 2);
-    expect(someChecked.lastIndexOf(someChecked[3], 3), 3);
-
-    expect(someChecked.lastIndexOf(someChecked[0], -1), -1);
-    expect(someChecked.lastIndexOf(someChecked[1], 0), -1);
-    expect(someChecked.lastIndexOf(someChecked[2], 1), -1);
-    expect(someChecked.lastIndexOf(someChecked[3], 2), -1);
-
-    expect(someChecked.lastIndexOf(noneChecked[0], 3), -1);
-    expect(noneChecked.lastIndexOf(someChecked[0], 3), -1);
-    expect(someChecked.lastIndexOf(noneChecked[1], 3), -1);
-    expect(noneChecked.lastIndexOf(someChecked[1], 3), -1);
-
-    root.remove();
-  });
-}
diff --git a/tests/html/htmlelement_test.dart b/tests/html/htmlelement_test.dart
deleted file mode 100644
index 4942482..0000000
--- a/tests/html/htmlelement_test.dart
+++ /dev/null
@@ -1,103 +0,0 @@
-library ElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'utils.dart';
-
-main() {
-  useHtmlConfiguration();
-  test('InnerHTML', () {
-    Element element = new Element.tag('div');
-    element.id = 'test';
-    element.innerHtml = 'Hello World';
-    document.body.append(element);
-
-    element = document.querySelector('#test');
-    expect(element.innerHtml, 'Hello World');
-    element.remove();
-  });
-  test('HTMLTable', () {
-    Element table = new Element.tag('table');
-
-    TableRowElement row = new Element.tag('tr');
-    table.append(row);
-
-    row.append(new Element.tag('td'));
-    row.append(new Element.tag('td'));
-
-    expect(row.cells.length, 2);
-
-    TableRowElement headerRow = table.rows[0];
-    expect(headerRow.cells.length, 2);
-  });
-  test('dataset', () {
-    Element div = new Element.tag('div');
-
-    expect(div.dataset.isEmpty, isTrue);
-    expect(div.dataset['foo'], isNull);
-    expect(div.dataset.isEmpty, isTrue);
-
-    div.dataset['foo'] = 'foo-value';
-    expect(div.dataset['foo'], 'foo-value');
-    expect(div.dataset.isEmpty, isFalse);
-
-    expect(div.dataset.containsValue('foo-value'), isTrue);
-    expect(div.dataset.containsValue('bar-value'), isFalse);
-    expect(div.dataset.containsKey('foo'), isTrue);
-    expect(div.dataset.containsKey('bar'), isFalse);
-
-    bool hasBeenInvoked;
-    String f() {
-      hasBeenInvoked = true;
-      return 'bar-value';
-    }
-
-    hasBeenInvoked = false;
-    expect(div.dataset.putIfAbsent('bar', f), 'bar-value');
-    expect(hasBeenInvoked, isTrue);
-
-    hasBeenInvoked = false;
-    expect(div.dataset.putIfAbsent('bar', f), 'bar-value');
-    expect(hasBeenInvoked, isFalse);
-
-    final keys = <String>[];
-    final values = <String>[];
-    div.dataset.forEach((String key, String value) {
-      keys.add(key);
-      values.add(value);
-    });
-    expect(keys, unorderedEquals(['foo', 'bar']));
-    expect(values, unorderedEquals(['foo-value', 'bar-value']));
-
-    expect(new List<String>.from(div.dataset.keys),
-        unorderedEquals(['foo', 'bar']));
-    expect(new List<String>.from(div.dataset.values),
-        unorderedEquals(['foo-value', 'bar-value']));
-
-    expect(div.dataset.length, 2);
-    expect(div.dataset.isEmpty, isFalse);
-
-    expect(div.dataset.remove('qux'), isNull);
-    expect(div.dataset.length, 2);
-    expect(div.dataset.isEmpty, isFalse);
-
-    expect(div.dataset.remove('foo'), 'foo-value');
-    expect(div.dataset.length, 1);
-    expect(div.dataset.isEmpty, isFalse);
-
-    div.dataset.clear();
-    expect(div.dataset.length, 0);
-    expect(div.dataset.isEmpty, isTrue);
-
-    Element otherDiv = new Element.html(
-        '<div id="dataDiv" data-my-message="Hello World"></div>',
-        treeSanitizer: new NullTreeSanitizer());
-    expect(otherDiv.dataset.containsKey('myMessage'), isTrue);
-
-    Element anotherDiv = new Element.html(
-        '<div id="dataDiv" data-eggs="bacon"></div>',
-        treeSanitizer: new NullTreeSanitizer());
-    expect(anotherDiv.dataset.containsKey('eggs'), isTrue);
-  });
-}
diff --git a/tests/html/htmloptionscollection_test.dart b/tests/html/htmloptionscollection_test.dart
deleted file mode 100644
index 46f7edd..0000000
--- a/tests/html/htmloptionscollection_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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.
-
-library HTMLOptionsCollectionTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('indexedAccessTest', () {
-    // FIXME: we need some massaging to dart:html to enable HTMLOptionsCollection.add
-    // and hence programatic building of collection.
-    final selectElement = new Element.html('''
-      <select>
-        <option value="0">Option0</option>
-        <option value="1">Option1</option>
-        <option value="2">Option2</option>
-      ''');
-    final optionsCollection = selectElement.options;
-
-    expect(optionsCollection[0].value, equals('0'));
-    expect(optionsCollection[1].value, equals('1'));
-    expect(optionsCollection[2].value, equals('2'));
-
-    expect(optionsCollection[0].text, equals('Option0'));
-    expect(optionsCollection[1].text, equals('Option1'));
-    expect(optionsCollection[2].text, equals('Option2'));
-
-    expect(() {
-      optionsCollection[0] = 1;
-    }, throws);
-
-    // OPTIONALS optionsCollection[0] = new OptionElement(value: '42', data: 'Option42');
-    expect(() {
-      optionsCollection[0] = new OptionElement(data: 'Option42', value: '42');
-    }, throws);
-  });
-}
diff --git a/tests/html/indexeddb_1_test.dart b/tests/html/indexeddb_1_test.dart
deleted file mode 100644
index 17d4ff8..0000000
--- a/tests/html/indexeddb_1_test.dart
+++ /dev/null
@@ -1,189 +0,0 @@
-library IndexedDB1Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:async';
-import 'dart:html' as html;
-import 'dart:math' as math;
-import 'dart:indexed_db' as idb;
-
-const String STORE_NAME = 'TEST';
-const int VERSION = 1;
-
-var databaseNameIndex = 0;
-String nextDatabaseName() {
-  return 'Test1_${databaseNameIndex++}';
-}
-
-Future testUpgrade() {
-  var dbName = nextDatabaseName();
-  var upgraded = false;
-
-  // Delete any existing DBs.
-  return html.window.indexedDB.deleteDatabase(dbName).then((_) {
-    return html.window.indexedDB
-        .open(dbName, version: 1, onUpgradeNeeded: (e) {});
-  }).then((db) {
-    db.close();
-  }).then((_) {
-    return html.window.indexedDB.open(dbName, version: 2, onUpgradeNeeded: (e) {
-      expect(e.oldVersion, 1);
-      expect(e.newVersion, 2);
-      upgraded = true;
-    });
-  }).then((_) {
-    expect(upgraded, isTrue);
-  });
-}
-
-testReadWrite(key, value, matcher,
-        [dbName,
-        storeName = STORE_NAME,
-        version = VERSION,
-        stringifyResult = false]) =>
-    () {
-      if (dbName == null) {
-        dbName = nextDatabaseName();
-      }
-      createObjectStore(e) {
-        var store = e.target.result.createObjectStore(storeName);
-        expect(store, isNotNull);
-      }
-
-      var db;
-      return html.window.indexedDB.deleteDatabase(dbName).then((_) {
-        return html.window.indexedDB
-            .open(dbName, version: version, onUpgradeNeeded: createObjectStore);
-      }).then((result) {
-        db = result;
-        var transaction = db.transactionList([storeName], 'readwrite');
-        transaction.objectStore(storeName).put(value, key);
-        return transaction.completed;
-      }).then((_) {
-        var transaction = db.transaction(storeName, 'readonly');
-        return transaction.objectStore(storeName).getObject(key);
-      }).then((object) {
-        db.close();
-        if (stringifyResult) {
-          // Stringify the numbers to verify that we're correctly returning ints
-          // as ints vs doubles.
-          expect(object.toString(), matcher);
-        } else {
-          expect(object, matcher);
-        }
-      }).whenComplete(() {
-        if (db != null) {
-          db.close();
-        }
-        return html.window.indexedDB.deleteDatabase(dbName);
-      });
-    };
-
-testReadWriteTyped(key, value, matcher,
-        [dbName,
-        storeName = STORE_NAME,
-        version = VERSION,
-        stringifyResult = false]) =>
-    () {
-      if (dbName == null) {
-        dbName = nextDatabaseName();
-      }
-      void createObjectStore(e) {
-        var store = e.target.result.createObjectStore(storeName);
-        expect(store, isNotNull);
-      }
-
-      idb.Database db;
-      // Delete any existing DBs.
-      return html.window.indexedDB.deleteDatabase(dbName).then((_) {
-        return html.window.indexedDB
-            .open(dbName, version: version, onUpgradeNeeded: createObjectStore);
-      }).then((idb.Database result) {
-        db = result;
-        idb.Transaction transaction =
-            db.transactionList([storeName], 'readwrite');
-        transaction.objectStore(storeName).put(value, key);
-
-        return transaction.completed;
-      }).then((idb.Database result) {
-        idb.Transaction transaction = db.transaction(storeName, 'readonly');
-        return transaction.objectStore(storeName).getObject(key);
-      }).then((object) {
-        db.close();
-        if (stringifyResult) {
-          // Stringify the numbers to verify that we're correctly returning ints
-          // as ints vs doubles.
-          expect(object.toString(), matcher);
-        } else {
-          expect(object, matcher);
-        }
-      }).whenComplete(() {
-        if (db != null) {
-          db.close();
-        }
-        return html.window.indexedDB.deleteDatabase(dbName);
-      });
-    };
-
-void testTypes(testFunction) {
-  test('String', testFunction(123, 'Hoot!', equals('Hoot!')));
-  test('int', testFunction(123, 12345, equals(12345)));
-  test('List', testFunction(123, [1, 2, 3], equals([1, 2, 3])));
-  test('List 2', testFunction(123, [2, 3, 4], equals([2, 3, 4])));
-  test('bool', testFunction(123, [true, false], equals([true, false])));
-  test(
-      'largeInt',
-      testFunction(123, 1371854424211, equals("1371854424211"), null,
-          STORE_NAME, VERSION, true));
-  test(
-      'largeDoubleConvertedToInt',
-      testFunction(123, 1371854424211.0, equals("1371854424211"), null,
-          STORE_NAME, VERSION, true));
-  test(
-      'largeIntInMap',
-      testFunction(123, {'time': 4503599627370492},
-          equals("{time: 4503599627370492}"), null, STORE_NAME, VERSION, true));
-  var now = new DateTime.now();
-  test(
-      'DateTime',
-      testFunction(
-          123,
-          now,
-          predicate((date) =>
-              date.millisecondsSinceEpoch == now.millisecondsSinceEpoch)));
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  // Test that indexed_db is properly flagged as supported or not.
-  // Note that the rest of the indexed_db tests assume that this has been
-  // checked.
-  group('supported', () {
-    test('supported', () {
-      expect(idb.IdbFactory.supported, true);
-    });
-  });
-
-  group('functional', () {
-    test('throws when unsupported', () {
-      var expectation = idb.IdbFactory.supported ? returnsNormally : throws;
-
-      expect(() {
-        var db = html.window.indexedDB;
-        db.open('random_db');
-      }, expectation);
-    });
-
-    // Don't bother with these tests if it's unsupported.
-    if (idb.IdbFactory.supported) {
-      test('upgrade', testUpgrade);
-      group('dynamic', () {
-        testTypes(testReadWrite);
-      });
-      group('typed', () {
-        testTypes(testReadWriteTyped);
-      });
-    }
-  });
-}
diff --git a/tests/html/indexeddb_2_test.dart b/tests/html/indexeddb_2_test.dart
deleted file mode 100644
index 5b12887..0000000
--- a/tests/html/indexeddb_2_test.dart
+++ /dev/null
@@ -1,125 +0,0 @@
-library IndexedDB1Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:async';
-import 'dart:html' as html;
-import 'dart:indexed_db' as idb;
-import 'dart:collection';
-import 'utils.dart';
-
-// Write and re-read Maps: simple Maps; Maps with DAGs; Maps with cycles.
-
-const String DB_NAME = 'Test2';
-const String STORE_NAME = 'TEST';
-const int VERSION = 1;
-
-testReadWrite(key, value, check,
-    [dbName = DB_NAME, storeName = STORE_NAME, version = VERSION]) {
-  createObjectStore(e) {
-    var store = e.target.result.createObjectStore(storeName);
-    expect(store, isNotNull);
-  }
-
-  var db;
-  // Delete any existing DBs.
-  return html.window.indexedDB.deleteDatabase(dbName).then(expectAsync((_) {
-    return html.window.indexedDB
-        .open(dbName, version: version, onUpgradeNeeded: createObjectStore);
-  })).then(expectAsync((result) {
-    db = result;
-    var transaction = db.transactionList([storeName], 'readwrite');
-    transaction.objectStore(storeName).put(value, key);
-
-    return transaction.completed;
-  })).then(expectAsync((db) {
-    var transaction = db.transaction(storeName, 'readonly');
-    return transaction.objectStore(storeName).getObject(key);
-  })).then(expectAsync((object) {
-    db.close();
-    check(value, object);
-  })).catchError((e) {
-    if (db != null) {
-      db.close();
-    }
-    throw e;
-  });
-}
-
-List<String> get nonNativeListData {
-  var list = new List<String>();
-  list.add("data");
-  list.add("clone");
-  list.add("error");
-  list.add("test");
-  return list;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  var obj1 = {'a': 100, 'b': 's'};
-  var obj2 = {'x': obj1, 'y': obj1}; // DAG.
-
-  var obj3 = {};
-  obj3['a'] = 100;
-  obj3['b'] = obj3; // Cycle.
-
-  var obj4 = new SplayTreeMap<String, dynamic>(); // Different implementation.
-  obj4['a'] = 100;
-  obj4['b'] = 's';
-
-  var cyclic_list = [1, 2, 3];
-  cyclic_list[1] = cyclic_list;
-
-  go(name, data) => test(name, () => testReadWrite(123, data, verifyGraph));
-
-  test('test_verifyGraph', () {
-    // Nice to know verifyGraph is working before we rely on it.
-    verifyGraph(obj4, obj4);
-    verifyGraph(obj1, new Map.from(obj1));
-    verifyGraph(obj4, new Map.from(obj4));
-
-    var l1 = [1, 2, 3];
-    var l2 = [
-      const [1, 2, 3],
-      const [1, 2, 3]
-    ];
-    verifyGraph([l1, l1], l2);
-    expect(
-        () => verifyGraph([
-              [1, 2, 3],
-              [1, 2, 3]
-            ], l2),
-        throws);
-
-    verifyGraph(cyclic_list, cyclic_list);
-  });
-
-  // Don't bother with these tests if it's unsupported.
-  // Support is tested in indexeddb_1_test
-  if (idb.IdbFactory.supported) {
-    go('test_simple', obj1);
-    go('test_DAG', obj2);
-    go('test_cycle', obj3);
-    go('test_simple_splay', obj4);
-    go('const_array_1', const [
-      const [1],
-      const [2]
-    ]);
-    go('const_array_dag', const [
-      const [1],
-      const [1]
-    ]);
-    go('array_deferred_copy', [1, 2, 3, obj3, obj3, 6]);
-    go('array_deferred_copy_2', [
-      1,
-      2,
-      3,
-      [4, 5, obj3],
-      [obj3, 6]
-    ]);
-    go('cyclic_list', cyclic_list);
-    go('non-native lists', nonNativeListData);
-  }
-}
diff --git a/tests/html/indexeddb_3_test.dart b/tests/html/indexeddb_3_test.dart
deleted file mode 100644
index 50a4d85..0000000
--- a/tests/html/indexeddb_3_test.dart
+++ /dev/null
@@ -1,112 +0,0 @@
-library IndexedDB3Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:async';
-import 'dart:html' as html;
-import 'dart:indexed_db';
-
-// Read with cursor.
-
-const String DB_NAME = 'Test3';
-const String STORE_NAME = 'TEST';
-const int VERSION = 1;
-
-Future<Database> createAndOpenDb() {
-  return html.window.indexedDB.deleteDatabase(DB_NAME).then((_) {
-    return html.window.indexedDB.open(DB_NAME, version: VERSION,
-        onUpgradeNeeded: (e) {
-      var db = e.target.result;
-      db.createObjectStore(STORE_NAME);
-    });
-  });
-}
-
-Future<Database> writeItems(Database db) {
-  Future<Object> write(index) {
-    var transaction = db.transaction(STORE_NAME, 'readwrite');
-    transaction.objectStore(STORE_NAME).put('Item $index', index);
-    return transaction.completed;
-  }
-
-  var future = write(0);
-  for (var i = 1; i < 100; ++i) {
-    future = future.then((_) => write(i));
-  }
-
-  // Chain on the DB so we return it at the end.
-  return future.then((_) => db);
-}
-
-Future<Database> setupDb() {
-  return createAndOpenDb().then(writeItems);
-}
-
-Future<Database> readAllViaCursor(Database db) {
-  Transaction txn = db.transaction(STORE_NAME, 'readonly');
-  ObjectStore objectStore = txn.objectStore(STORE_NAME);
-  int itemCount = 0;
-  int sumKeys = 0;
-  var lastKey = null;
-
-  var cursors = objectStore.openCursor().asBroadcastStream();
-  cursors.listen((cursor) {
-    ++itemCount;
-    lastKey = cursor.key;
-    sumKeys += cursor.key;
-    expect(cursor.value, 'Item ${cursor.key}');
-    cursor.next();
-  });
-  cursors.last.then((cursor) {
-    expect(lastKey, 99);
-    expect(sumKeys, (100 * 99) ~/ 2);
-    expect(itemCount, 100);
-  });
-
-  return cursors.last.then((_) => db);
-}
-
-Future<Database> readAllReversedViaCursor(Database db) {
-  Transaction txn = db.transaction(STORE_NAME, 'readonly');
-  ObjectStore objectStore = txn.objectStore(STORE_NAME);
-  int itemCount = 0;
-  int sumKeys = 0;
-  var lastKey = null;
-
-  var cursors = objectStore.openCursor(direction: 'prev').asBroadcastStream();
-  cursors.listen((cursor) {
-    ++itemCount;
-    lastKey = cursor.key;
-    sumKeys += cursor.key;
-    expect(cursor.value, 'Item ${cursor.key}');
-    cursor.next();
-  });
-  cursors.last.then((cursor) {
-    expect(lastKey, 0);
-    expect(sumKeys, (100 * 99) ~/ 2);
-    expect(itemCount, 100);
-  });
-  return cursors.last.then((_) => db);
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Don't bother with these tests if it's unsupported.
-  // Support is tested in indexeddb_1_test
-  if (IdbFactory.supported) {
-    var db;
-    test('prepare', () {
-      return setupDb().then((result) {
-        db = result;
-      });
-    });
-    test('readAll1', () {
-      return readAllViaCursor(db);
-    });
-
-    test('readAll2', () {
-      return readAllReversedViaCursor(db);
-    });
-  }
-}
diff --git a/tests/html/indexeddb_4_test.dart b/tests/html/indexeddb_4_test.dart
deleted file mode 100644
index 45bd313..0000000
--- a/tests/html/indexeddb_4_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-library IndexedDB4Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:async';
-import 'dart:html' as html;
-import 'dart:indexed_db';
-
-// Test for KeyRange and Cursor.
-
-const String DB_NAME = 'Test4';
-const String STORE_NAME = 'TEST';
-const int VERSION = 1;
-
-Future<Database> createAndOpenDb() {
-  return html.window.indexedDB.deleteDatabase(DB_NAME).then((_) {
-    return html.window.indexedDB.open(DB_NAME, version: VERSION,
-        onUpgradeNeeded: (e) {
-      var db = e.target.result;
-      db.createObjectStore(STORE_NAME);
-    });
-  });
-}
-
-Future<Database> writeItems(Database db) {
-  Future<Object> write(index) {
-    var transaction = db.transaction(STORE_NAME, 'readwrite');
-    return transaction
-        .objectStore(STORE_NAME)
-        .put({'content': 'Item $index'}, index);
-  }
-
-  var future = write(0);
-  for (var i = 1; i < 100; ++i) {
-    future = future.then((_) => write(i));
-  }
-
-  // Chain on the DB so we return it at the end.
-  return future.then((_) => db);
-}
-
-Future<Database> setupDb() {
-  return createAndOpenDb().then(writeItems);
-}
-
-testRange(db, range, expectedFirst, expectedLast) {
-  Transaction txn = db.transaction(STORE_NAME, 'readonly');
-  ObjectStore objectStore = txn.objectStore(STORE_NAME);
-  var cursors = objectStore
-      .openCursor(range: range, autoAdvance: true)
-      .asBroadcastStream();
-
-  int lastKey;
-  cursors.listen((cursor) {
-    lastKey = cursor.key;
-    var value = cursor.value;
-    expect(value['content'], 'Item ${cursor.key}');
-  });
-
-  if (expectedFirst != null) {
-    cursors.first.then((cursor) {
-      expect(cursor.key, expectedFirst);
-    });
-  }
-  if (expectedLast != null) {
-    cursors.last.then((cursor) {
-      expect(lastKey, expectedLast);
-    });
-  }
-
-  return cursors.length.then((length) {
-    if (expectedFirst == null) {
-      expect(length, isZero);
-    } else {
-      expect(length, expectedLast - expectedFirst + 1);
-    }
-  });
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Don't bother with these tests if it's unsupported.
-  // Support is tested in indexeddb_1_test
-  if (IdbFactory.supported) {
-    var db;
-    setUp(() {
-      if (db == null) {
-        return setupDb().then((result) {
-          db = result;
-        });
-      }
-    });
-    test('only1', () => testRange(db, new KeyRange.only(55), 55, 55));
-    test('only2', () => testRange(db, new KeyRange.only(100), null, null));
-    test('only3', () => testRange(db, new KeyRange.only(-1), null, null));
-
-    test('lower1', () => testRange(db, new KeyRange.lowerBound(40), 40, 99));
-    // OPTIONALS lower2() => testRange(db, new KeyRange.lowerBound(40, open: true), 41, 99);
-    test('lower2',
-        () => testRange(db, new KeyRange.lowerBound(40, true), 41, 99));
-    // OPTIONALS lower3() => testRange(db, new KeyRange.lowerBound(40, open: false), 40, 99);
-    test('lower3',
-        () => testRange(db, new KeyRange.lowerBound(40, false), 40, 99));
-
-    test('upper1', () => testRange(db, new KeyRange.upperBound(40), 0, 40));
-    // OPTIONALS upper2() => testRange(db, new KeyRange.upperBound(40, open: true), 0, 39);
-    test('upper2',
-        () => testRange(db, new KeyRange.upperBound(40, true), 0, 39));
-    // upper3() => testRange(db, new KeyRange.upperBound(40, open: false), 0, 40);
-    test('upper3',
-        () => testRange(db, new KeyRange.upperBound(40, false), 0, 40));
-
-    test('bound1', () => testRange(db, new KeyRange.bound(20, 30), 20, 30));
-
-    test('bound2', () => testRange(db, new KeyRange.bound(-100, 200), 0, 99));
-
-    bound3() =>
-        // OPTIONALS testRange(db, new KeyRange.bound(20, 30, upperOpen: true),
-        testRange(db, new KeyRange.bound(20, 30, false, true), 20, 29);
-
-    bound4() =>
-        // OPTIONALS testRange(db, new KeyRange.bound(20, 30, lowerOpen: true),
-        testRange(db, new KeyRange.bound(20, 30, true), 21, 30);
-
-    bound5() =>
-        // OPTIONALS testRange(db, new KeyRange.bound(20, 30, lowerOpen: true, upperOpen: true),
-        testRange(db, new KeyRange.bound(20, 30, true, true), 21, 29);
-  }
-}
diff --git a/tests/html/indexeddb_5_test.dart b/tests/html/indexeddb_5_test.dart
deleted file mode 100644
index b61b90f..0000000
--- a/tests/html/indexeddb_5_test.dart
+++ /dev/null
@@ -1,174 +0,0 @@
-library IndexedDB1Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:async';
-import 'dart:html' as html;
-import 'dart:indexed_db' as idb;
-
-main() {
-  useHtmlConfiguration();
-
-  if (!idb.IdbFactory.supported) {
-    return;
-  }
-
-  var dbName = 'test_db_5';
-  var storeName = 'test_store';
-  var indexName = 'name_index';
-  var db;
-
-  test('init', () {
-    return html.window.indexedDB.deleteDatabase(dbName).then((_) {
-      return html.window.indexedDB.open(dbName, version: 1,
-          onUpgradeNeeded: (e) {
-        var db = e.target.result;
-        var objectStore = db.createObjectStore(storeName, autoIncrement: true);
-        var index =
-            objectStore.createIndex(indexName, 'name_index', unique: false);
-      });
-    }).then((database) {
-      db = database;
-    });
-  });
-
-  var value = {'name_index': 'one', 'value': 'add_value'};
-  test('add/delete', () {
-    var transaction = db.transaction(storeName, 'readwrite');
-    var key;
-    return transaction.objectStore(storeName).add(value).then((addedKey) {
-      key = addedKey;
-    }).then((_) {
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transaction(storeName, 'readonly');
-      return transaction.objectStore(storeName).getObject(key);
-    }).then((readValue) {
-      expect(readValue['value'], value['value']);
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transactionList([storeName], 'readwrite');
-      return transaction.objectStore(storeName).delete(key);
-    }).then((_) {
-      return transaction.completed;
-    }).then((_) {
-      var transaction = db.transactionList([storeName], 'readonly');
-      return transaction.objectStore(storeName).count();
-    }).then((count) {
-      expect(count, 0);
-    });
-  });
-
-  test('clear/count', () {
-    var transaction = db.transaction(storeName, 'readwrite');
-    transaction.objectStore(storeName).add(value);
-
-    return transaction.completed.then((_) {
-      transaction = db.transaction(storeName, 'readonly');
-      return transaction.objectStore(storeName).count();
-    }).then((count) {
-      expect(count, 1);
-    }).then((_) {
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transactionList([storeName], 'readwrite');
-      transaction.objectStore(storeName).clear();
-      return transaction.completed;
-    }).then((_) {
-      var transaction = db.transactionList([storeName], 'readonly');
-      return transaction.objectStore(storeName).count();
-    }).then((count) {
-      expect(count, 0);
-    });
-  });
-
-  test('index', () {
-    var transaction = db.transaction(storeName, 'readwrite');
-    transaction.objectStore(storeName).add(value);
-    transaction.objectStore(storeName).add(value);
-    transaction.objectStore(storeName).add(value);
-    transaction.objectStore(storeName).add(value);
-
-    return transaction.completed.then((_) {
-      transaction = db.transactionList([storeName], 'readonly');
-      var index = transaction.objectStore(storeName).index(indexName);
-      return index.count();
-    }).then((count) {
-      expect(count, 4);
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transaction(storeName, 'readonly');
-      var index = transaction.objectStore(storeName).index(indexName);
-      return index.openCursor(autoAdvance: true).length;
-    }).then((cursorsLength) {
-      expect(cursorsLength, 4);
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transaction(storeName, 'readonly');
-      var index = transaction.objectStore(storeName).index(indexName);
-      return index.openKeyCursor(autoAdvance: true).length;
-    }).then((cursorsLength) {
-      expect(cursorsLength, 4);
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transaction(storeName, 'readonly');
-      var index = transaction.objectStore(storeName).index(indexName);
-      return index.get('one');
-    }).then((readValue) {
-      expect(readValue['value'], value['value']);
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transaction(storeName, 'readwrite');
-      transaction.objectStore(storeName).clear();
-      return transaction.completed;
-    });
-  });
-
-  var deleteValue = {'name_index': 'two', 'value': 'delete_value'};
-  var updateValue = {'name_index': 'three', 'value': 'update_value'};
-  var updatedValue = {'name_index': 'three', 'value': 'updated_value'};
-  test('cursor', () {
-    var transaction = db.transaction(storeName, 'readwrite');
-    transaction.objectStore(storeName).add(value);
-    transaction.objectStore(storeName).add(deleteValue);
-    transaction.objectStore(storeName).add(updateValue);
-
-    return transaction.completed.then((_) {
-      transaction = db.transactionList([storeName], 'readwrite');
-      var index = transaction.objectStore(storeName).index(indexName);
-      var cursors = index.openCursor().asBroadcastStream();
-
-      cursors.listen((cursor) {
-        var value = cursor.value;
-        if (value['value'] == 'delete_value') {
-          cursor.delete().then((_) {
-            cursor.next();
-          });
-        } else if (value['value'] == 'update_value') {
-          cursor.update(updatedValue).then((_) {
-            cursor.next();
-          });
-        } else {
-          cursor.next();
-        }
-      });
-      return cursors.last;
-    }).then((_) {
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transaction(storeName, 'readonly');
-      var index = transaction.objectStore(storeName).index(indexName);
-      return index.get('three');
-    }).then((readValue) {
-      expect(readValue['value'], 'updated_value');
-      return transaction.completed;
-    }).then((_) {
-      transaction = db.transaction(storeName, 'readonly');
-      var index = transaction.objectStore(storeName).index(indexName);
-      return index.get('two');
-    }).then((readValue) {
-      expect(readValue, isNull);
-      return transaction.completed;
-    });
-  });
-}
diff --git a/tests/html/input_element_test.dart b/tests/html/input_element_test.dart
deleted file mode 100644
index 30bb817..0000000
--- a/tests/html/input_element_test.dart
+++ /dev/null
@@ -1,196 +0,0 @@
-library input_element_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-void check(InputElement element, String type, [bool supported = true]) {
-  expect(element is InputElement, true);
-  if (supported) {
-    expect(element.type, type);
-  } else {
-    expect(element.type, 'text');
-  }
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported_search', () {
-    test('supported', () {
-      expect(SearchInputElement.supported, true);
-    });
-  });
-
-  group('supported_url', () {
-    test('supported', () {
-      expect(UrlInputElement.supported, true);
-    });
-  });
-
-  group('supported_tel', () {
-    test('supported', () {
-      expect(TelephoneInputElement.supported, true);
-    });
-  });
-
-  group('supported_email', () {
-    test('supported', () {
-      expect(EmailInputElement.supported, true);
-    });
-  });
-
-  group('supported_date', () {
-    test('supported', () {
-      expect(DateInputElement.supported, true);
-    });
-  });
-
-  group('supported_month', () {
-    test('supported', () {
-      expect(MonthInputElement.supported, true);
-    });
-  });
-
-  group('supported_week', () {
-    test('supported', () {
-      expect(WeekInputElement.supported, true);
-    });
-  });
-
-  group('supported_time', () {
-    test('supported', () {
-      expect(TimeInputElement.supported, true);
-    });
-  });
-
-  group('supported_datetime-local', () {
-    test('supported', () {
-      expect(LocalDateTimeInputElement.supported, true);
-    });
-  });
-
-  group('supported_number', () {
-    test('supported', () {
-      expect(NumberInputElement.supported, true);
-    });
-  });
-
-  group('supported_range', () {
-    test('supported', () {
-      expect(RangeInputElement.supported, true);
-    });
-  });
-
-  group('constructors', () {
-    test('hidden', () {
-      check(new HiddenInputElement(), 'hidden');
-    });
-
-    test('search', () {
-      check(new SearchInputElement(), 'search', SearchInputElement.supported);
-    });
-
-    test('text', () {
-      check(new TextInputElement(), 'text');
-    });
-
-    test('url', () {
-      check(new UrlInputElement(), 'url', UrlInputElement.supported);
-    });
-
-    test('telephone', () {
-      check(
-          new TelephoneInputElement(), 'tel', TelephoneInputElement.supported);
-    });
-
-    test('email', () {
-      check(new EmailInputElement(), 'email', EmailInputElement.supported);
-    });
-
-    test('password', () {
-      check(new PasswordInputElement(), 'password');
-    });
-
-    test('date', () {
-      check(new DateInputElement(), 'date', DateInputElement.supported);
-    });
-
-    test('month', () {
-      check(new MonthInputElement(), 'month', MonthInputElement.supported);
-    });
-
-    test('week', () {
-      check(new WeekInputElement(), 'week', WeekInputElement.supported);
-    });
-
-    test('time', () {
-      check(new TimeInputElement(), 'time', TimeInputElement.supported);
-      if (TimeInputElement.supported) {
-        var element = new TimeInputElement();
-        var now = new DateTime.now();
-        element.valueAsDate = now;
-        expect(element.valueAsDate is DateTime, isTrue);
-
-        // Bug 8813, setting it is just going to the epoch.
-        //expect(element.valueAsDate, now);
-      }
-    });
-
-    test('datetime-local', () {
-      check(new LocalDateTimeInputElement(), 'datetime-local',
-          LocalDateTimeInputElement.supported);
-    });
-
-    test('number', () {
-      check(new NumberInputElement(), 'number', NumberInputElement.supported);
-    });
-
-    test('range', () {
-      check(new RangeInputElement(), 'range', RangeInputElement.supported);
-    });
-
-    test('checkbox', () {
-      check(new CheckboxInputElement(), 'checkbox');
-    });
-
-    test('radio', () {
-      check(new RadioButtonInputElement(), 'radio');
-    });
-
-    test('file', () {
-      check(new FileUploadInputElement(), 'file');
-    });
-
-    test('submit', () {
-      check(new SubmitButtonInputElement(), 'submit');
-    });
-
-    test('image', () {
-      check(new ImageButtonInputElement(), 'image');
-    });
-
-    test('reset', () {
-      check(new ResetButtonInputElement(), 'reset');
-    });
-
-    test('button', () {
-      check(new ButtonInputElement(), 'button');
-    });
-  });
-
-  group('attributes', () {
-    test('valueSetNull', () {
-      final e = new TextInputElement();
-      e.value = null;
-      expect(e.value, '');
-    });
-    test('valueSetNullProxy', () {
-      final e = new TextInputElement();
-      e.value = _undefined;
-      expect(e.value, '');
-    });
-  });
-}
-
-var _undefined = (() => new List(5)[0])();
diff --git a/tests/html/instance_of_test.dart b/tests/html/instance_of_test.dart
deleted file mode 100644
index e92d880..0000000
--- a/tests/html/instance_of_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-library InstanceOfTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  CanvasElement canvas;
-
-  canvas = new Element.tag('canvas');
-  canvas.attributes['width'] = '100';
-  canvas.attributes['height'] = '100';
-  document.body.append(canvas);
-
-  var isCanvasRenderingContext = predicate(
-      (x) => x is CanvasRenderingContext, 'is a CanvasRenderingContext');
-  var isCanvasRenderingContext2D = predicate(
-      (x) => x is CanvasRenderingContext2D, 'is a CanvasRenderingContext2D');
-  var isElement = predicate((x) => x is Element, 'is an Element');
-  var isCanvasElement =
-      predicate((x) => x is CanvasElement, 'is a CanvasElement');
-  var isImageData = predicate((x) => x is ImageData, 'is an ImageData');
-  //var isUint8ClampedArray =
-  //  predicate((x) => x is Uint8ClampedArray, 'is a Uint8ClampedArray');
-  var isIntList = predicate((x) => x is List<int>, 'is a List<int>');
-
-  useHtmlConfiguration();
-  test('Instanceof', () {
-    expect(canvas, isNot(isCanvasRenderingContext));
-    expect(canvas, isNot(isCanvasRenderingContext2D));
-    expect(canvas, isElement);
-    expect(canvas, isCanvasElement);
-    expect(canvas, isNot(isImageData));
-    // expect(canvas, isNot(isCanvasPixelArray));
-
-    CanvasRenderingContext2D context = canvas.getContext('2d');
-    expect(context, isCanvasRenderingContext);
-    expect(context, isCanvasRenderingContext2D);
-    expect(context, isNot(isElement));
-    expect(context, isNot(isCanvasElement));
-    expect(context, isNot(isImageData));
-    // expect(context, isNot(isCanvasPixelArray));
-
-    // FIXME(b/5286633): Interface injection type check workaround.
-    var image = context.createImageData(
-        canvas.width as dynamic, canvas.height as dynamic);
-    expect(image, isNot(isCanvasRenderingContext));
-    expect(image, isNot(isCanvasRenderingContext2D));
-    expect(image, isNot(isElement));
-    expect(image, isNot(isCanvasElement));
-    expect(image, isImageData);
-    // expect(image, isNot(isCanvasPixelArray));
-
-    // Include CanvasPixelArray since constructor and prototype are not
-    // available until one is created.
-    var bytes = image.data;
-    expect(bytes, isNot(isCanvasRenderingContext));
-    expect(bytes, isNot(isCanvasRenderingContext2D));
-    expect(bytes, isNot(isElement));
-    expect(bytes, isNot(isCanvasElement));
-    expect(bytes, isNot(isImageData));
-    expect(bytes, isIntList);
-
-    // FIXME: Ensure this is an SpanElement when we next update
-    // WebKit IDL.
-    var span = new Element.tag('span');
-    expect(span, isElement);
-  });
-}
diff --git a/tests/html/interactive_test.dart b/tests/html/interactive_test.dart
deleted file mode 100644
index 796b95c..0000000
--- a/tests/html/interactive_test.dart
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright (c) 2013, 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 interactive_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'utils.dart';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('Geolocation', () {
-    test('getCurrentPosition', () {
-      return window.navigator.geolocation.getCurrentPosition().then((position) {
-        expect(position.coords.latitude, isNotNull);
-        expect(position.coords.longitude, isNotNull);
-        expect(position.coords.accuracy, isNotNull);
-      });
-    });
-
-    test('watchPosition', () {
-      return window.navigator.geolocation
-          .watchPosition()
-          .first
-          .then((position) {
-        expect(position.coords.latitude, isNotNull);
-        expect(position.coords.longitude, isNotNull);
-        expect(position.coords.accuracy, isNotNull);
-      });
-    });
-  });
-
-  group('MediaStream', () {
-    if (MediaStream.supported) {
-      test('getUserMedia', () {
-        return window.navigator.getUserMedia(video: true).then((stream) {
-          expect(stream, isNotNull);
-
-          var url = Url.createObjectUrlFromStream(stream);
-          expect(url, isNotNull);
-
-          var video = new VideoElement()..autoplay = true;
-
-          var completer = new Completer();
-          video.onError.listen((e) {
-            completer.completeError(e);
-          });
-          video.onPlaying.first.then((e) {
-            completer.complete(video);
-          });
-
-          document.body.append(video);
-          video.src = url;
-
-          return completer.future;
-        });
-      });
-
-      test('getUserMediaComplexConstructor', () {
-        return window.navigator.getUserMedia(video: {
-          'mandatory': {'minAspectRatio': 1.333, 'maxAspectRatio': 1.334},
-          'optional': [
-            {'minFrameRate': 60},
-            {'maxWidth': 640}
-          ]
-        }).then((stream) {
-          expect(stream, isNotNull);
-
-          var url = Url.createObjectUrlFromStream(stream);
-          expect(url, isNotNull);
-
-          var video = new VideoElement()..autoplay = true;
-
-          var completer = new Completer();
-          video.onError.listen((e) {
-            completer.completeError(e);
-          });
-          video.onPlaying.first.then((e) {
-            completer.complete(video);
-          });
-
-          document.body.append(video);
-          video.src = url;
-
-          return completer.future;
-        });
-      });
-    }
-  });
-
-  group('KeyEvent', () {
-    keydownHandlerTest(KeyEvent e) {
-      document.body.innerHtml =
-          '${document.body.innerHtml}KeyDOWN: CharCode: ${e.charCode}, KeyCode:'
-          ' ${e.keyCode}<br />';
-      expect(e.charCode, 0);
-    }
-
-    keypressHandlerTest(KeyEvent e) {
-      document.body.innerHtml =
-          '${document.body.innerHtml}KeyPRESS: CharCode: ${e.charCode}, '
-          'KeyCode: ${e.keyCode}<br />';
-    }
-
-    keyupHandlerTest(KeyEvent e) {
-      document.body.innerHtml =
-          '${document.body.innerHtml}KeyUP: CharCode: ${e.charCode}, KeyCode:'
-          ' ${e.keyCode}<br />';
-      expect(e.charCode, 0);
-    }
-
-    keyupHandlerTest2(KeyEvent e) {
-      document.body.innerHtml =
-          '${document.body.innerHtml}A second KeyUP handler: CharCode: '
-          '${e.charCode}, KeyCode: ${e.keyCode}<br />';
-      expect(e.charCode, 0);
-    }
-
-    test('keys', () {
-      document.body.innerHtml =
-          '${document.body.innerHtml}To test keyboard event values, press some '
-          'keys on your keyboard.<br /><br />The charcode for keydown and keyup'
-          ' should be 0, and the keycode should (generally) be populated with a'
-          ' value. Keycode and charcode should both have values for the '
-          'keypress event.';
-      KeyboardEventStream.onKeyDown(document.body).listen(keydownHandlerTest);
-      KeyboardEventStream.onKeyPress(document.body).listen(keypressHandlerTest);
-      KeyboardEventStream.onKeyUp(document.body).listen(keyupHandlerTest);
-      KeyboardEventStream.onKeyUp(document.body).listen(keyupHandlerTest2);
-    });
-  });
-}
diff --git a/tests/html/isolates_test.dart b/tests/html/isolates_test.dart
deleted file mode 100644
index a1444bf..0000000
--- a/tests/html/isolates_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-library IsolatesTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:async';
-import 'dart:html';
-import 'dart:convert';
-import 'dart:isolate' as isolate;
-
-String responseFor(message) => 'response for $message';
-
-void isolateEntry(isolate.SendPort initialReplyTo) {
-  var port = new isolate.ReceivePort();
-  initialReplyTo.send(port.sendPort);
-
-  bool wasThrown = false;
-  try {
-    window.alert('Test');
-  } catch (e) {
-    wasThrown = true;
-  }
-  // If wasn't thrown, do not listen to messages to make test fail.
-  if (!wasThrown) {
-    return;
-  }
-
-  // Check that convert library was loaded to isolate.
-  json.encode([1, 2, 3]);
-
-  port.listen((message) {
-    var data = message[0];
-    var replyTo = message[1];
-    replyTo.send(responseFor(data));
-  });
-}
-
-Future sendReceive(isolate.SendPort port, msg) {
-  var response = new isolate.ReceivePort();
-  port.send([msg, response.sendPort]);
-  return response.first;
-}
-
-main() {
-  useHtmlConfiguration();
-  test('IsolateSpawn', () {
-    var port = new isolate.ReceivePort();
-    isolate.Isolate.spawn(isolateEntry, port.sendPort);
-    port.close();
-  });
-  test('NonDOMIsolates', () {
-    var callback = expectAsync(() {});
-    var response = new isolate.ReceivePort();
-    var remote = isolate.Isolate.spawn(isolateEntry, response.sendPort);
-    response.first.then((port) {
-      final msg1 = 'foo';
-      final msg2 = 'bar';
-      sendReceive(port, msg1).then((response) {
-        expect(response, equals(responseFor(msg1)));
-        sendReceive(port, msg2).then((response) {
-          expect(response, equals(responseFor(msg2)));
-          callback();
-        });
-      });
-    });
-  });
-}
diff --git a/tests/html/js_array_test.dart b/tests/html/js_array_test.dart
deleted file mode 100644
index d4d086b..0000000
--- a/tests/html/js_array_test.dart
+++ /dev/null
@@ -1,677 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS("ArrayTest.Util")
-library js_array_test;
-
-import 'dart:html';
-
-import 'dart:js' as js;
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'json_helper.dart' as json_helper;
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-ArrayTest = {};
-ArrayTest.Util = {
-  callJsMethod: function(jsObj, jsMethodName, args) {
-    return jsObj[jsMethodName].apply(jsObj, args);
-  },
-
-  jsEnumerateIndices: function(obj) {
-    var ret = [];
-    for(var i in obj) {
-      ret.push(i);
-    }
-    return ret;
-  },
-
-  checkIsArray: function(obj) {
-    return Array.isArray(obj);
-  },
-
-  concatValues: function(obj) {
-    return obj.concat("a", "b", ["c", "d"], 42, {foo: 10});
-  },
-
-  concatOntoArray: function(obj) {
-    return [1,2,3].concat(obj, "foo");
-  },
-
-  repeatedConcatOntoArray: function(obj) {
-    return [1,2,3].concat(obj, obj);
-  },
-
-  everyGreaterThanZero: function(obj) {
-    return obj.every(function(currentValue, index, array) {
-      return currentValue > 0;
-    });
-  },
-
-  everyGreaterThanZeroCheckThisArg: function(obj) {
-    var j = 0;
-    return obj.every(function(currentValue, index, array) {
-      if (j != index) {
-        throw "Unxpected index";
-      }
-      j++;
-      if (array !== obj) {
-        throw "Array argument doesn't match obj";
-      }
-      return currentValue > 0;
-    });
-  },
-
-  filterGreater42: function(obj) {
-    return obj.filter(function(currentValue, index, array) {
-      return currentValue > 42;
-    });
-  },
-
-  forEachCollectResult: function(array) {
-    var result = [];
-    array.forEach(function(currentValue) {
-      result.push(currentValue * 2);
-    });
-    return result;
-  },
-
-  someEqual42: function(array) {
-    return array.some(function(currentValue) {
-      return currentValue == 42;
-    });
-  },
-
-  sortNumbersBackwards: function(array) {
-    return array.sort(function(a, b) {
-      return b - a;
-    });
-  },
-
-  spliceDummyItems: function(array) {
-    return array.splice(1, 2, "quick" ,"brown", "fox");
-  },
-
-  spliceTestStringArgs: function(array) {
-    return array.splice("1.2", "2.01", "quick" ,"brown", "fox");
-  },
-
-  splicePastEnd: function(array) {
-    return array.splice(1, 5332, "quick" ,"brown", "fox");
-  },
-
-  callJsToString: function(array) {
-    return array.toString();
-  },
-
-  mapAddIndexToEachElement: function(array) {
-    return array.map(function(currentValue, index) {
-      return currentValue + index;
-    });
-  },
-
-  reduceSumDoubledElements: function(array) {
-    return array.reduce(function(previousValue, currentValue) {
-          return previousValue + currentValue*2;
-        },
-        0);
-  },
-
-  // TODO(jacobr): add a test that distinguishes reduce from reduceRight.
-  reduceRightSumDoubledElements: function(array) {
-    return array.reduceRight(function(previousValue, currentValue) {
-          return previousValue + currentValue*2;
-        },
-        0);
-  },
-
-  getOwnPropertyDescriptor: function(array, property) {
-    return Object.getOwnPropertyDescriptor(array, property);
-  },
-
-  setLength: function(array, len) {
-    return array.length = len;
-  },
-
-  getValue: function(obj, index) {
-    return obj[index];
-  },
-
-  setValue: function(obj, index, value) {
-    return obj[index] = value;
-  },
-
-  // Calling a method from Dart List on an arbitrary target object.
-  callListMethodOnTarget: function(dartArray, target, methodName, args) {
-    return dartArray[methodName].apply(target, args);
-  },
-
-  newArray: function() { return []; },
-
-  newLiteral: function() { return {}; },
-
-};
-""");
-}
-
-@JS()
-class PropertyDescriptor {
-  external get value;
-  external bool get writable;
-  external bool get enumerable;
-  external bool get configurable;
-}
-
-@JS()
-class SimpleJsLiteralClass {
-  external get foo;
-}
-
-class Foo {}
-
-@JS()
-external callJsMethod(List array, String methodName, List args);
-
-callIndexOf(List array, value) => callJsMethod(array, "indexOf", [value]);
-callLastIndexOf(List array, value) =>
-    callJsMethod(array, "lastIndexOf", [value]);
-
-callPop(List array) => callJsMethod(array, "pop", []);
-callPush(List array, element) => callJsMethod(array, "push", [element]);
-callShift(List array) => callJsMethod(array, "shift", []);
-callReverse(List array) => callJsMethod(array, "reverse", []);
-
-callListMethodOnObject(object, String methodName, List args) =>
-    callListMethodOnTarget([], object, methodName, args);
-
-@JS()
-external jsEnumerateIndices(obj);
-@JS()
-external bool checkIsArray(obj);
-@JS()
-external concatValues(obj);
-
-@JS()
-external concatOntoArray(obj);
-
-@JS()
-external repeatedConcatOntoArray(obj);
-@JS()
-external bool everyGreaterThanZero(obj);
-@JS()
-external bool everyGreaterThanZeroCheckThisArg(obj);
-
-@JS()
-external filterGreater42(obj);
-
-@JS()
-external forEachCollectResult(List array);
-@JS()
-external someEqual42(List array);
-@JS()
-external sortNumbersBackwards(List array);
-
-@JS()
-external List spliceDummyItems(List array);
-
-@JS()
-external List spliceTestStringArgs(List array);
-
-@JS()
-external List splicePastEnd(List array);
-
-@JS()
-external String callJsToString(List array);
-
-@JS()
-external mapAddIndexToEachElement(List array);
-@JS()
-external reduceSumDoubledElements(List array);
-
-// TODO(jacobr): add a test that distinguishes reduce from reduceRight.
-@JS()
-external reduceRightSumDoubledElements(List array);
-
-@JS()
-external PropertyDescriptor getOwnPropertyDescriptor(obj, property);
-
-@JS("setLength")
-external callSetLength(List array, length);
-
-@JS()
-external getValue(obj, index);
-
-@JS()
-external setValue(obj, index, value);
-
-@JS()
-external callListMethodOnTarget(
-    List target, object, String methodName, List args);
-
-@JS()
-external newArray();
-
-@JS()
-external newLiteral();
-
-main() {
-  _injectJs();
-  useHtmlConfiguration();
-
-  group('indexOf', () {
-    var div = new DivElement();
-    var list = [3, 42, "foo", 42, div];
-    test('found', () {
-      expect(callIndexOf(list, 3), equals(0));
-      expect(callIndexOf(list, 42), equals(1));
-      expect(callIndexOf(list, "foo"), equals(2));
-      expect(callIndexOf(list, div), equals(4));
-    });
-
-    test('missing', () {
-      expect(callIndexOf(list, 31), equals(-1));
-      expect(callIndexOf(list, "42"), equals(-1));
-      expect(callIndexOf(list, null), equals(-1));
-    });
-  });
-
-  group('set length', () {
-    test('larger', () {
-      var list = ["a", "b", "c", "d"];
-      expect(callSetLength(list, 10), equals(10));
-      expect(list.length, equals(10));
-      expect(list.last, equals(null));
-      expect(list[3], equals("d"));
-    });
-
-    test('smaller', () {
-      var list = ["a", "b", "c", "d"];
-      expect(callSetLength(list, 2), equals(2));
-      expect(list.first, equals("a"));
-      expect(list.last, equals("b"));
-      expect(list.length, equals(2));
-      expect(callSetLength(list, 0), equals(0));
-      expect(list.length, equals(0));
-      expect(callSetLength(list, 2), equals(2));
-      expect(list.first, equals(null));
-    });
-
-    test('invalid', () {
-      var list = ["a", "b", "c", "d"];
-      expect(() => callSetLength(list, 2.3), throws);
-      expect(list.length, equals(4));
-      expect(() => callSetLength(list, -1), throws);
-      expect(list.length, equals(4));
-      // Make sure we are coercing to a JS number.
-      expect(callSetLength(list, "2"), equals("2"));
-      expect(list.length, equals(2));
-    });
-  });
-
-  group('join', () {
-    var list = [3, 42, "foo"];
-    var listWithDartClasses = [3, new Foo(), 42, "foo", new Object()];
-    test('default', () {
-      expect(callJsMethod(list, "join", []), equals("3,42,foo"));
-      expect(callJsMethod(listWithDartClasses, "join", []),
-          equals("3,${new Foo()},42,foo,${new Object()}"));
-    });
-
-    test('custom separator', () {
-      expect(callJsMethod(list, "join", ["##"]), equals("3##42##foo"));
-    });
-  });
-
-  group('lastIndexOf', () {
-    var list = [3, 42, "foo", 42];
-    test('found', () {
-      expect(callLastIndexOf(list, 3), equals(0));
-      expect(callLastIndexOf(list, 42), equals(3));
-      expect(callLastIndexOf(list, "foo"), equals(2));
-    });
-
-    test('missing', () {
-      expect(callLastIndexOf(list, 31), equals(-1));
-      expect(callLastIndexOf(list, "42"), equals(-1));
-      expect(callLastIndexOf(list, null), equals(-1));
-    });
-  });
-
-  group('pop', () {
-    test('all', () {
-      var foo = new Foo();
-      var div = new DivElement();
-      var list = [3, 42, "foo", foo, div];
-      expect(callPop(list), equals(div));
-      expect(list.length, equals(4));
-      expect(callPop(list), equals(foo));
-      expect(list.length, equals(3));
-      expect(callPop(list), equals("foo"));
-      expect(list.length, equals(2));
-      expect(callPop(list), equals(42));
-      expect(list.length, equals(1));
-      expect(callPop(list), equals(3));
-      expect(list.length, equals(0));
-      expect(callPop(list), equals(null));
-      expect(list.length, equals(0));
-    });
-  });
-
-  group('push', () {
-    test('strings', () {
-      var list = [];
-      var div = new DivElement();
-      expect(callPush(list, "foo"), equals(1));
-      expect(callPush(list, "bar"), equals(2));
-      // Calling push with 0 elements should do nothing.
-      expect(callJsMethod(list, "push", []), equals(2));
-      expect(callPush(list, "baz"), equals(3));
-      expect(callPush(list, div), equals(4));
-      expect(callJsMethod(list, "push", ["a", "b"]), equals(6));
-      expect(list, equals(["foo", "bar", "baz", div, "a", "b"]));
-    });
-  });
-
-  group('shift', () {
-    test('all', () {
-      var foo = new Foo();
-      var div = new DivElement();
-      var list = [3, 42, "foo", foo, div];
-      expect(callShift(list), equals(3));
-      expect(list.length, equals(4));
-      expect(callShift(list), equals(42));
-      expect(list.length, equals(3));
-      expect(callShift(list), equals("foo"));
-      expect(list.length, equals(2));
-      expect(callShift(list), equals(foo));
-      expect(list.length, equals(1));
-      expect(callShift(list), equals(div));
-      expect(list.length, equals(0));
-      expect(callShift(list), equals(null));
-      expect(list.length, equals(0));
-    });
-  });
-
-  group('reverse', () {
-    test('simple', () {
-      var foo = new Foo();
-      var div = new DivElement();
-      var list = [div, 42, foo];
-      callReverse(list);
-      expect(list, equals([foo, 42, div]));
-      list = [3, 42];
-      callReverse(list);
-      expect(list, equals([42, 3]));
-    });
-  });
-
-  group('slice', () {
-    test('copy', () {
-      var foo = new Foo();
-      var div = new DivElement();
-      var list = [3, 42, "foo", foo, div];
-      var copy = callJsMethod(list, "slice", []);
-      expect(identical(list, copy), isFalse);
-      expect(copy.length, equals(list.length));
-      for (var i = 0; i < list.length; i++) {
-        expect(list[i], equals(copy[i]));
-      }
-      expect(identical(list[3], copy[3]), isTrue);
-      expect(identical(list[4], copy[4]), isTrue);
-
-      copy.add("dummy");
-      expect(list.length + 1, equals(copy.length));
-    });
-
-    test('specify start', () {
-      var list = [3, 42, "foo"];
-      var copy = callJsMethod(list, "slice", [1]);
-      expect(copy.first, equals(42));
-    });
-
-    test('specify start and end', () {
-      var list = [3, 42, 92, "foo"];
-      var copy = callJsMethod(list, "slice", [1, 3]);
-      expect(copy.first, equals(42));
-      expect(copy.last, equals(92));
-    });
-
-    test('from end', () {
-      var list = [3, 42, 92, "foo"];
-      expect(callJsMethod(list, "slice", [-2]), equals([92, "foo"]));
-
-      // Past the end of the front of the array.
-      expect(callJsMethod(list, "slice", [-2, 3]), equals([92]));
-
-      // Past the end of the front of the array.
-      expect(callJsMethod(list, "slice", [-10, 2]), equals([3, 42]));
-    });
-  });
-
-  group("js snippet tests", () {
-    test("enumerate indices", () {
-      var list = ["a", "b", "c", "d"];
-      var indices = jsEnumerateIndices(list);
-      expect(indices.length, equals(4));
-      for (int i = 0; i < 4; i++) {
-        expect(indices[i], equals('$i'));
-      }
-    });
-
-    test("set element", () {
-      var list = ["a", "b", "c", "d"];
-      setValue(list, 0, 42);
-      expect(list[0], equals(42));
-      setValue(list, 1, 84);
-      expect(list[1], equals(84));
-      setValue(list, 6, 100); // Off the end of the list.
-      expect(list.length, equals(7));
-      expect(list[4], equals(null));
-      expect(list[6], equals(100));
-
-      // These tests have to be commented out because we don't persist
-      // JS proxies for Dart objects like we could/should.
-      // setValue(list, -1, "foo"); // Not a valid array index
-      // expect(getValue(list, -1), equals("foo"));
-      // expect(getValue(list, "-1"), equals("foo"));
-    });
-
-    test("get element", () {
-      var list = ["a", "b", "c", "d"];
-      expect(getValue(list, 0), equals("a"));
-      expect(getValue(list, 1), equals("b"));
-      expect(getValue(list, 6), equals(null));
-      expect(getValue(list, -1), equals(null));
-
-      expect(getValue(list, "0"), equals("a"));
-      expect(getValue(list, "1"), equals("b"));
-    });
-
-    test("is array", () {
-      var list = ["a", "b"];
-      expect(checkIsArray(list), isTrue);
-    });
-
-    test("property descriptors", () {
-      // This test matters to make behavior consistent with JS native arrays
-      // and to make devtools integration work well.
-      var list = ["a", "b"];
-      var descriptor = getOwnPropertyDescriptor(list, 0);
-
-      expect(descriptor.value, equals("a"));
-      expect(descriptor.writable, isTrue);
-      // TODO(jacobr): commented out until https://github.com/dart-lang/sdk/issues/26128
-      // is fixed.
-      // expect(descriptor.enumerable, isTrue);
-      // expect(descriptor.configurable, isTrue);
-
-      descriptor = getOwnPropertyDescriptor(list, "length");
-      expect(descriptor.value, equals(2));
-      expect(descriptor.writable, isTrue);
-      expect(descriptor.enumerable, isFalse);
-      expect(descriptor.configurable, isFalse);
-    });
-
-    test("concat js arrays", () {
-      var list = ["1", "2"];
-      // Tests that calling the concat method from JS will flatten out JS arrays
-      // We concat the array with "a", "b", ["c", "d"], 42, {foo: 10}
-      // which should generate ["1", "2", "a", "b", ["c", "d"], 42, {foo: 10}]
-      var ret = concatValues(list);
-      expect(list.length, equals(2));
-      expect(ret.length, equals(8));
-      expect(ret[0], equals("1"));
-      expect(ret[3], equals("b"));
-      expect(ret[5], equals("d"));
-      expect(ret[6], equals(42));
-      SimpleJsLiteralClass item = ret[7];
-      expect(item.foo, equals(10));
-    });
-
-    test("concat onto arrays", () {
-      // This test only passes if we have monkey patched the core Array object
-      // prototype to handle Dart Lists.
-      var list = ["a", "b"];
-      var ret = concatOntoArray(list);
-      expect(list.length, equals(2));
-      expect(ret, equals([1, 2, 3, "a", "b", "foo"]));
-    });
-
-    test("dart arrays on dart arrays", () {
-      // This test only passes if we have monkey patched the core Array object
-      // prototype to handle Dart Lists.
-      var list = ["a", "b"];
-      var ret = callJsMethod(list, "concat", [
-        ["c", "d"],
-        "e",
-        ["f", "g"]
-      ]);
-      expect(list.length, equals(2));
-      expect(ret, equals(["a", "b", "c", "d", "e", "f", "g"]));
-    });
-
-    test("every greater than zero", () {
-      expect(everyGreaterThanZero([1, 5]), isTrue);
-      expect(everyGreaterThanZeroCheckThisArg([1, 5]), isTrue);
-      expect(everyGreaterThanZero([1, 0]), isFalse);
-      expect(everyGreaterThanZero([]), isTrue);
-    });
-
-    test("filter greater than 42", () {
-      expect(filterGreater42([1, 5]), equals([]));
-      expect(filterGreater42([43, 5, 49]), equals([43, 49]));
-      expect(filterGreater42(["43", "5", "49"]), equals(["43", "49"]));
-    });
-
-    test("for each collect result", () {
-      expect(forEachCollectResult([1, 5, 7]), equals([2, 10, 14]));
-    });
-
-    test("some", () {
-      expect(someEqual42([1, 5, 9]), isFalse);
-      expect(someEqual42([1, 42, 9]), isTrue);
-    });
-
-    test("sort backwards", () {
-      var arr = [1, 5, 9];
-      var ret = sortNumbersBackwards(arr);
-      expect(identical(arr, ret), isTrue);
-      expect(ret, equals([9, 5, 1]));
-    });
-
-    test("splice dummy items", () {
-      var list = [1, 2, 3, 4];
-      var removed = spliceDummyItems(list);
-      expect(removed.length, equals(2));
-      expect(removed[0], equals(2));
-      expect(removed[1], equals(3));
-      expect(list.first, equals(1));
-      expect(list[1], equals("quick"));
-      expect(list[2], equals("brown"));
-      expect(list[3], equals("fox"));
-      expect(list.last, equals(4));
-    });
-
-    test("splice string args", () {
-      var list = [1, 2, 3, 4];
-      var removed = spliceTestStringArgs(list);
-      expect(removed.length, equals(2));
-      expect(removed[0], equals(2));
-      expect(removed[1], equals(3));
-      expect(list.first, equals(1));
-      expect(list[1], equals("quick"));
-      expect(list[2], equals("brown"));
-      expect(list[3], equals("fox"));
-      expect(list.last, equals(4));
-    });
-
-    test("splice pastEndOfArray", () {
-      var list = [1, 2, 3, 4];
-      var removed = splicePastEnd(list);
-      expect(removed.length, equals(3));
-      expect(list.first, equals(1));
-      expect(list.length, equals(4));
-      expect(list[1], equals("quick"));
-      expect(list[2], equals("brown"));
-      expect(list[3], equals("fox"));
-    });
-
-    test("splice both bounds past end of array", () {
-      var list = [1];
-      var removed = splicePastEnd(list);
-      expect(removed.length, equals(0));
-      expect(list.first, equals(1));
-      expect(list.length, equals(4));
-      expect(list[1], equals("quick"));
-      expect(list[2], equals("brown"));
-      expect(list[3], equals("fox"));
-    });
-
-    test("call List method on JavaScript object", () {
-      var jsObject = newLiteral();
-      callListMethodOnObject(jsObject, 'push', ["a"]);
-      callListMethodOnObject(jsObject, 'push', ["b"]);
-      callListMethodOnObject(jsObject, 'push', ["c", "d"]);
-      callListMethodOnObject(jsObject, 'push', []);
-
-      expect(json_helper.stringify(jsObject),
-          equals('{"0":"a","1":"b","2":"c","3":"d","length":4}'));
-
-      expect(callListMethodOnObject(jsObject, 'pop', []), equals("d"));
-      expect(callListMethodOnObject(jsObject, 'join', ["#"]), equals("a#b#c"));
-
-      var jsArray = newArray();
-      callListMethodOnObject(jsArray, 'push', ["a"]);
-      callListMethodOnObject(jsArray, 'push', ["b"]);
-      callListMethodOnObject(jsArray, 'push', ["c", "d"]);
-      callListMethodOnObject(jsArray, 'push', []);
-
-      expect(json_helper.stringify(jsArray), equals('["a","b","c","d"]'));
-    });
-  });
-
-  // This test group is disabled until we figure out an efficient way to
-  // distinguish between "array" Dart List types and non-array Dart list types.
-  /*
-  group('Non-array Lists', () {
-    test('opaque proxy', () {
-      // Dartium could easily support making LinkedList and all other classes
-      // implementing List behave like a JavaScript array but that would
-      // be challenging to implement in dart2js until browsers support ES6.
-      var list = ["a", "b", "c", "d"];
-      var listView = new UnmodifiableListView(list.getRange(1,3));
-      expect(listView is List, isTrue);
-      expect(listView.length, equals(2));
-      expect(checkIsArray(listView), isFalse);
-      expect(checkIsArray(listView.toList()), isTrue);
-      expect(getOwnPropertyDescriptor(
-          listView, "length"), equals(null));
-    });
-  });
-  */
-}
diff --git a/tests/html/js_dart_to_string_test.dart b/tests/html/js_dart_to_string_test.dart
deleted file mode 100644
index ed984c2..0000000
--- a/tests/html/js_dart_to_string_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_dart_to_string_test;
-
-import 'dart:html';
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-
-  function jsToStringViaCoercion(a) {
-    return a + '';
-  };
-""");
-}
-
-@JS()
-external String jsToStringViaCoercion(obj);
-
-class ExampleClassWithCustomToString {
-  var x;
-  ExampleClassWithCustomToString(this.x);
-  String toString() => "#$x#";
-}
-
-main() {
-  _injectJs();
-
-  useHtmlConfiguration();
-
-  group('toString', () {
-    test('custom dart', () {
-      var x = new ExampleClassWithCustomToString("fooBar");
-      expect(jsToStringViaCoercion(x), equals("#fooBar#"));
-      expect(jsToStringViaCoercion({'a': 1, 'b': 2}), equals("{a: 1, b: 2}"));
-    });
-  });
-}
diff --git a/tests/html/js_dispatch_property_test.dart b/tests/html/js_dispatch_property_test.dart
deleted file mode 100644
index 27030b0..0000000
--- a/tests/html/js_dispatch_property_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-// Test for dart2js initialization of dispatchPropertyName.
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-import 'package:expect/expect.dart' show NoInline, AssumeDynamic;
-
-import 'js_dispatch_property_test_lib.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-main() {
-  useHtmlConfiguration();
-
-  group('group', () {
-    test('test', () {
-      // Force dynamic interceptor dispatch.
-      var a = confuse(create());
-      expect(a.foo('A'), equals('Foo A'));
-    });
-  });
-}
diff --git a/tests/html/js_dispatch_property_test.html b/tests/html/js_dispatch_property_test.html
deleted file mode 100644
index c17424b..0000000
--- a/tests/html/js_dispatch_property_test.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<--
-// 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.
--->
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> js_type_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-</head>
-<body>
-  <h1> Running js_type_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tests/html/js_dispatch_property_test_js.js"></script>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/js_dispatch_property_test_js.js b/tests/html/js_dispatch_property_test_js.js
deleted file mode 100644
index 8f10dcc..0000000
--- a/tests/html/js_dispatch_property_test_js.js
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-self.create = function() {
-  return {
-    // If the dispatch property name is uninitialized, it will be `undefined` or
-    // `null`, which will match these properties on dispatch record
-    // lookup. These properties map to malformed dispatch records to force an
-    // error.
-
-    'undefined': {p: false},
-    'null': {p: false},
-
-    foo: function(x) { return 'Foo ' + x; },
-  };
-}
diff --git a/tests/html/js_dispatch_property_test_lib.dart b/tests/html/js_dispatch_property_test_lib.dart
deleted file mode 100644
index 80a87a1..0000000
--- a/tests/html/js_dispatch_property_test_lib.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-@JS()
-library js_dispatch_property_test_lib;
-
-import 'package:js/js.dart';
-
-@JS()
-external A create();
-
-@JS()
-@anonymous
-class A {
-  external String foo(String x);
-}
diff --git a/tests/html/js_function_getter_test.dart b/tests/html/js_function_getter_test.dart
deleted file mode 100644
index adcf270..0000000
--- a/tests/html/js_function_getter_test.dart
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_function_getter_test;
-
-import 'dart:html';
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/html_individual_config.dart';
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  var bar = { };
-
-  bar.instanceMember = function() {
-    if (this !== bar) {
-      throw 'Unexpected this!';
-    }
-    return arguments.length;
-  };
-
-  bar.staticMember = function() {
-    return arguments.length * 2;
-  };
-
-  bar.dynamicStatic = function() {
-    return arguments.length;
-  };
-
-  bar.add = function(a, b) {
-    return a + b;
-  };
-
-  var foo = { 'bar' : bar };
-""");
-}
-
-typedef int AddFn(int x, int y);
-
-@JS()
-abstract class Bar {
-  external Function get staticMember;
-  external Function get instanceMember;
-  external AddFn get add;
-  external get dynamicStatic;
-  external num get nonFunctionStatic;
-}
-
-@JS()
-abstract class Foo {
-  external Bar get bar;
-}
-
-@JS()
-external Foo get foo;
-
-main() {
-  _injectJs();
-
-  useHtmlIndividualConfiguration();
-
-  group('call getter as function', () {
-    test('member function', () {
-      expect(foo.bar.instanceMember(), equals(0));
-      expect(foo.bar.instanceMember(0), equals(1));
-      expect(foo.bar.instanceMember(0, 0), equals(2));
-      expect(foo.bar.instanceMember(0, 0, 0, 0, 0, 0), equals(6));
-      var instanceMember = foo.bar.instanceMember;
-      expect(() => instanceMember(), throws);
-      expect(() => instanceMember(0), throws);
-      expect(() => instanceMember(0, 0), throws);
-      expect(() => instanceMember(0, 0, 0, 0, 0, 0), throws);
-    });
-
-    test('static function', () {
-      expect(foo.bar.staticMember(), equals(0));
-      expect(foo.bar.staticMember(0), equals(2));
-      expect(foo.bar.staticMember(0, 0), equals(4));
-      expect(foo.bar.staticMember(0, 0, 0, 0, 0, 0), equals(12));
-      var staticMember = foo.bar.staticMember;
-      expect(staticMember(), equals(0));
-      expect(staticMember(0), equals(2));
-      expect(staticMember(0, 0), equals(4));
-      expect(staticMember(0, 0, 0, 0, 0, 0), equals(12));
-    });
-
-    test('static dynamicStatic', () {
-      expect(foo.bar.dynamicStatic(), equals(0));
-      expect(foo.bar.dynamicStatic(0), equals(1));
-      expect(foo.bar.dynamicStatic(0, 0), equals(2));
-      expect(foo.bar.dynamicStatic(0, 0, 0, 0, 0, 0), equals(6));
-      var dynamicStatic = foo.bar.dynamicStatic;
-      expect(dynamicStatic(), equals(0));
-      expect(dynamicStatic(0), equals(1));
-      expect(dynamicStatic(0, 0), equals(2));
-      expect(dynamicStatic(0, 0, 0, 0, 0, 0), equals(6));
-    });
-
-    test('typedef function', () {
-      expect(foo.bar.add(4, 5), equals(9));
-    });
-  });
-}
diff --git a/tests/html/js_function_getter_trust_types_test.dart b/tests/html/js_function_getter_trust_types_test.dart
deleted file mode 100644
index c5c1419..0000000
--- a/tests/html/js_function_getter_trust_types_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// SharedOptions=--trust-type-annotations
-@JS()
-library js_function_getter_trust_types_test;
-
-import 'dart:html';
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/html_individual_config.dart';
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  var bar = { };
-
-  bar.nonFunctionStatic = function() {
-    return arguments.length * 2;
-  };
-
-  bar.add = function(a, b) {
-    return a + b;
-  };
-
-  var foo = { 'bar' : bar };
-""");
-}
-
-typedef int AddFn(int x, int y);
-
-@JS()
-class NotAFn {}
-
-@JS()
-abstract class Bar {
-  external AddFn get add;
-  external NotAFn get nonFunctionStatic;
-}
-
-@JS()
-abstract class Foo {
-  external Bar get bar;
-}
-
-@JS()
-external Foo get foo;
-
-main() {
-  _injectJs();
-
-  useHtmlIndividualConfiguration();
-
-  group('trust types', () {
-    test('static nonFunctionStatic', () {
-      expect(() => foo.bar.nonFunctionStatic(), throws);
-      expect(() => foo.bar.nonFunctionStatic(0), throws);
-      expect(() => foo.bar.nonFunctionStatic(0, 0), throws);
-      expect(() => foo.bar.nonFunctionStatic(0, 0, 0, 0, 0, 0), throws);
-    });
-
-    test('typedef function', () {
-      expect(() => foo.bar.add(4), throws);
-      expect(() => foo.bar.add(4, 5, 10), throws);
-      expect(foo.bar.add(4, 5), equals(9));
-    });
-  });
-}
diff --git a/tests/html/js_interop_1_test.dart b/tests/html/js_interop_1_test.dart
deleted file mode 100644
index 4168fcb..0000000
--- a/tests/html/js_interop_1_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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
-
-library JsInterop1Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-injectSource(code) {
-  final script = new ScriptElement();
-  script.type = 'text/javascript';
-  script.innerHtml = code;
-  document.body.append(script);
-}
-
-main() {
-  useHtmlConfiguration();
-  var callback;
-
-  test('js-to-dart-post-message', () {
-    var subscription = null;
-    var complete = false;
-    subscription = window.onMessage.listen(expectAsyncUntil((e) {
-      if (e.data == 'hello') {
-        subscription.cancel();
-        complete = true;
-      }
-    }, () => complete));
-    injectSource("window.postMessage('hello', '*');");
-  });
-}
diff --git a/tests/html/js_interop_constructor_name_test.dart b/tests/html/js_interop_constructor_name_test.dart
deleted file mode 100644
index 6ed93e4..0000000
--- a/tests/html/js_interop_constructor_name_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013, 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 jsTest;
-
-import 'dart:async';
-import 'dart:html' as html;
-import 'dart:js';
-import 'package:js/js.dart';
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'package:expect/expect.dart' show NoInline, AssumeDynamic;
-
-@JS()
-external makeDiv(String text);
-
-@JS()
-class HTMLDivElement {
-  external String bar();
-}
-
-@NoInline()
-@AssumeDynamic()
-dynamic confuse(dynamic x) => x;
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('HTMLDivElement-types', () {
-    test('dom-is-dom', () {
-      var e = confuse(new html.DivElement());
-      expect(e is html.DivElement, isTrue);
-    });
-
-    test('js-is-dom', () {
-      var e = confuse(makeDiv('hello'));
-      expect(e is html.DivElement, isFalse);
-    });
-
-    test('js-is-js', () {
-      var e = confuse(makeDiv('hello'));
-      expect(e is HTMLDivElement, isTrue);
-    });
-    test('dom-is-js', () {
-      var e = confuse(new html.DivElement());
-      // Currently, HTML types are not [JavaScriptObject]s. We could change that
-      // by having HTML types extend JavaScriptObject, in which case we would
-      // change this expectation.
-      expect(e is HTMLDivElement, isFalse);
-    });
-    test('String-is-not-js', () {
-      var e = confuse('kombucha');
-      // A String should not be a JS interop type. The type test flags are added
-      // to Interceptor, but should be added to the class that implements all
-      // the JS-interop methods.
-      expect(e is HTMLDivElement, isFalse);
-    });
-  });
-
-  group('HTMLDivElement-methods', () {
-    test('js-call-js-method', () {
-      var e = confuse(makeDiv('hello'));
-      expect(e.bar(), equals('hello'));
-    });
-
-    test('dom-call-js-method', () {
-      var e = confuse(new html.DivElement());
-      expect(() => e.bar(), throws);
-    });
-
-    test('js-call-dom-method', () {
-      var e = confuse(makeDiv('hello'));
-      expect(() => e.clone(false), throws);
-    });
-
-    test('dom-call-dom-method', () {
-      var e = confuse(new html.DivElement());
-      expect(e.clone(false), new isInstanceOf<html.DivElement>());
-    });
-  });
-}
diff --git a/tests/html/js_interop_constructor_name_test.html b/tests/html/js_interop_constructor_name_test.html
deleted file mode 100644
index 4b21d8b..0000000
--- a/tests/html/js_interop_constructor_name_test.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> js_interop_constructor_name_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-</head>
-<body>
-  <h1> Running js_interop_constructor_name_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tests/html/js_interop_constructor_name_test_js.js"></script>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/js_interop_constructor_name_test_js.js b/tests/html/js_interop_constructor_name_test_js.js
deleted file mode 100644
index 828cbc9..0000000
--- a/tests/html/js_interop_constructor_name_test_js.js
+++ /dev/null
@@ -1,20 +0,0 @@
-(function() {
-
-  // A constructor function with the same name as a HTML element.
-  function HTMLDivElement(a) {
-    this.a = a;
-  }
-
-  HTMLDivElement.prototype.bar = function() {
-    return this.a;
-  }
-
-  HTMLDivElement.prototype.toString = function() {
-    return "HTMLDivElement(" + this.a + ")";
-  }
-
-  self.makeDiv = function(text) {
-    return new HTMLDivElement(text);
-  };
-
-})();
diff --git a/tests/html/js_test.dart b/tests/html/js_test.dart
deleted file mode 100644
index 2141ee4..0000000
--- a/tests/html/js_test.dart
+++ /dev/null
@@ -1,1014 +0,0 @@
-// Copyright (c) 2013, 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 jsTest;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:typed_data' show ByteBuffer, Int32List;
-import 'dart:indexed_db' show IdbFactory, KeyRange;
-import 'dart:js';
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-
-_injectJs() {
-  final script = new ScriptElement();
-  script.type = 'text/javascript';
-  script.innerHtml = r"""
-var x = 42;
-
-var _x = 123;
-
-var myArray = ["value1"];
-
-var foreignDoc = (function(){
-  var doc = document.implementation.createDocument("", "root", null);
-  var element = doc.createElement('element');
-  element.setAttribute('id', 'abc');
-  doc.documentElement.appendChild(element);
-  return doc;
-})();
-
-function razzle() {
-  return x;
-}
-
-function returnThis() {
-  return this;
-}
-
-function getTypeOf(o) {
-  return typeof(o);
-}
-
-function varArgs() {
-  var args = arguments;
-  var sum = 0;
-  for (var i = 0; i < args.length; ++i) {
-    sum += args[i];
-  }
-  return sum;
-}
-
-function Foo(a) {
-  this.a = a;
-}
-
-Foo.b = 38;
-
-Foo.prototype.bar = function() {
-  return this.a;
-}
-Foo.prototype.toString = function() {
-  return "I'm a Foo a=" + this.a;
-}
-
-var container = new Object();
-container.Foo = Foo;
-
-function isArray(a) {
-  return a instanceof Array;
-}
-
-function checkMap(m, key, value) {
-  if (m.hasOwnProperty(key))
-    return m[key] == value;
-  else
-    return false;
-}
-
-function invokeCallback() {
-  return callback();
-}
-
-function invokeCallbackWith11params() {
-  return callbackWith11params(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11);
-}
-
-function returnElement(element) {
-  return element;
-}
-
-function getElementAttribute(element, attr) {
-  return element.getAttribute(attr);
-}
-
-function addClassAttributes(list) {
-  var result = "";
-  for (var i=0; i < list.length; i++) {
-    result += list[i].getAttribute("class");
-  }
-  return result;
-}
-
-function getNewDate() {
-  return new Date(1995, 11, 17);
-}
-
-function getNewDivElement() {
-  return document.createElement("div");
-}
-
-function getNewEvent() {
-  return new CustomEvent('test');
-}
-
-function getNewBlob() {
-  var fileParts = ['<a id="a"><b id="b">hey!</b></a>'];
-  return new Blob(fileParts, {type : 'text/html'});
-}
-
-function getNewIDBKeyRange() {
-  return IDBKeyRange.only(1);
-}
-
-function getNewImageData() {
-  var canvas = document.createElement('canvas');
-  var context = canvas.getContext('2d');
-  return context.createImageData(1, 1);
-}
-
-function getNewInt32Array() {
-  return new Int32Array([1, 2, 3, 4, 5, 6, 7, 8]);
-}
-
-function getNewArrayBuffer() {
-  return new ArrayBuffer(8);
-}
-
-function isPropertyInstanceOf(property, type) {
-  return window[property] instanceof type;
-}
-
-function testJsMap(callback) {
-  var result = callback();
-  return result['value'];
-}
-
-function addTestProperty(o) {
-  o.testProperty = "test";
-}
-
-function fireClickEvent(w) {
-  var event = w.document.createEvent('Events');
-  event.initEvent('click', true, false);
-  w.document.dispatchEvent(event);
-}
-
-function Bar() {
-  return "ret_value";
-}
-Bar.foo = "property_value";
-
-function Baz(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11) {
-  this.f1 = p1;
-  this.f2 = p2;
-  this.f3 = p3;
-  this.f4 = p4;
-  this.f5 = p5;
-  this.f6 = p6;
-  this.f7 = p7;
-  this.f8 = p8;
-  this.f9 = p9;
-  this.f10 = p10;
-  this.f11 = p11;
-}
-
-function Liar(){}
-
-Liar.prototype.toString = function() {
-  return 1;
-}
-
-function identical(o1, o2) {
-  return o1 === o2;
-}
-
-var someProto = { role: "proto" };
-var someObject = Object.create(someProto);
-someObject.role = "object";
-
-""";
-  document.body.append(script);
-}
-
-typedef bool StringToBool(String s);
-
-// Some test are either causing other test to fail in IE9, or they are failing
-// for unknown reasons
-// useHtmlConfiguration+ImageData bug: dartbug.com/14355
-skipIE9_test(String description, t()) {
-  if (Platform.supportsTypedData) {
-    test(description, t);
-  }
-}
-
-class Foo {
-  final JsObject _proxy;
-
-  Foo(num a) : this._proxy = new JsObject(context['Foo'], [a]);
-
-  JsObject toJs() => _proxy;
-
-  num get a => _proxy['a'];
-  num bar() => _proxy.callMethod('bar');
-}
-
-class Color {
-  static final RED = new Color._("red");
-  static final BLUE = new Color._("blue");
-  String _value;
-  Color._(this._value);
-  String toJs() => this._value;
-}
-
-class TestDartObject {}
-
-class Callable {
-  call() => 'called';
-}
-
-main() {
-  _injectJs();
-  useHtmlIndividualConfiguration();
-
-  group('identity', () {
-    test('context instances should be identical', () {
-      var c1 = context;
-      var c2 = context;
-      expect(identical(c1, c2), isTrue);
-    });
-
-    test('identical JS objects should have identical proxies', () {
-      var o1 = new JsObject(context['Foo'], [1]);
-      context['f1'] = o1;
-      var o2 = context['f1'];
-      expect(identical(o1, o2), isTrue);
-    });
-
-/*
- TODO(jacobr): enable this test when dartium supports maintaining proxy
-    equality.
-    test('identical Dart objects should have identical proxies', () {
-      var o1 = new TestDartObject();
-      expect(context.callMethod('identical', [o1, o1]), isTrue);
-    });
-    */
-
-    test('identical Dart functions should have identical proxies', () {
-      var f1 = allowInterop(() => print("I'm a Function!"));
-      expect(context.callMethod('identical', [f1, f1]), isTrue);
-    });
-
-    test('identical JS functions should have identical proxies', () {
-      var f1 = context['Object'];
-      var f2 = context['Object'];
-      expect(identical(f1, f2), isTrue);
-    });
-
-    // TODO(justinfagnani): old tests duplicate checks above, remove
-    // on test next cleanup pass
-    test('test proxy equality', () {
-      var foo1 = new JsObject(context['Foo'], [1]);
-      var foo2 = new JsObject(context['Foo'], [2]);
-      context['foo1'] = foo1;
-      context['foo2'] = foo2;
-      expect(foo1, isNot(equals(context['foo2'])));
-      expect(foo2, equals(context['foo2']));
-      context.deleteProperty('foo1');
-      context.deleteProperty('foo2');
-    });
-
-    test('retrieve same dart Object', () {
-      final obj = new Object();
-      context['obj'] = obj;
-      expect(context['obj'], same(obj));
-      context.deleteProperty('obj');
-    });
-
-    group('caching', () {
-      test('JS->Dart', () {
-        // Test that we are not pulling cached proxy from the prototype
-        // when asking for a proxy for the object.
-        final proto = context['someProto'];
-        expect(proto['role'], equals('proto'));
-        final obj = context['someObject'];
-        expect(obj['role'], equals('object'));
-      });
-    });
-  });
-
-  group('context', () {
-    test('read global field', () {
-      expect(context['x'], equals(42));
-      expect(context['y'], isNull);
-    });
-
-    test('read global field with underscore', () {
-      expect(context['_x'], equals(123));
-      expect(context['y'], isNull);
-    });
-
-    test('write global field', () {
-      context['y'] = 42;
-      expect(context['y'], equals(42));
-    });
-  });
-
-  group('new_JsObject', () {
-    test('new Foo()', () {
-      var foo = new JsObject(context['Foo'], [42]);
-      expect(foo['a'], equals(42));
-      expect(foo.callMethod('bar'), equals(42));
-      expect(() => foo.callMethod('baz'), throwsA(isNoSuchMethodError));
-    });
-
-    test('new container.Foo()', () {
-      final Foo2 = context['container']['Foo'];
-      final foo = new JsObject(Foo2, [42]);
-      expect(foo['a'], 42);
-      expect(Foo2['b'], 38);
-    });
-
-    test('new Array()', () {
-      var a = new JsObject(context['Array']);
-      expect(a, new isInstanceOf<JsArray>());
-
-      // Test that the object still behaves via the base JsObject interface.
-      // JsArray specific tests are below.
-      expect(a['length'], 0);
-
-      a.callMethod('push', ["value 1"]);
-      expect(a['length'], 1);
-      expect(a[0], "value 1");
-
-      a.callMethod('pop');
-      expect(a['length'], 0);
-    });
-
-    test('new Date()', () {
-      final a = new JsObject(context['Date']);
-      expect(a.callMethod('getTime'), isNotNull);
-    });
-
-    test('new Date(12345678)', () {
-      final a = new JsObject(context['Date'], [12345678]);
-      expect(a.callMethod('getTime'), equals(12345678));
-    });
-
-    test('new Date("December 17, 1995 03:24:00 GMT")', () {
-      final a =
-          new JsObject(context['Date'], ["December 17, 1995 03:24:00 GMT"]);
-      expect(a.callMethod('getTime'), equals(819170640000));
-    });
-
-    test('new Date(1995,11,17)', () {
-      // Note: JS Date counts months from 0 while Dart counts from 1.
-      final a = new JsObject(context['Date'], [1995, 11, 17]);
-      final b = new DateTime(1995, 12, 17);
-      expect(a.callMethod('getTime'), equals(b.millisecondsSinceEpoch));
-    });
-
-    test('new Date(1995,11,17,3,24,0)', () {
-      // Note: JS Date counts months from 0 while Dart counts from 1.
-      final a = new JsObject(context['Date'], [1995, 11, 17, 3, 24, 0]);
-      final b = new DateTime(1995, 12, 17, 3, 24, 0);
-      expect(a.callMethod('getTime'), equals(b.millisecondsSinceEpoch));
-    });
-
-    test('new Object()', () {
-      final a = new JsObject(context['Object']);
-      expect(a, isNotNull);
-
-      a['attr'] = "value";
-      expect(a['attr'], equals("value"));
-    });
-
-    test(r'new RegExp("^\w+$")', () {
-      final a = new JsObject(context['RegExp'], [r'^\w+$']);
-      expect(a, isNotNull);
-      expect(a.callMethod('test', ['true']), isTrue);
-      expect(a.callMethod('test', [' false']), isFalse);
-    });
-
-    test('js instantiation via map notation : new Array()', () {
-      final a = new JsObject(context['Array']);
-      expect(a, isNotNull);
-      expect(a['length'], equals(0));
-
-      a.callMethod('push', ["value 1"]);
-      expect(a['length'], equals(1));
-      expect(a[0], equals("value 1"));
-
-      a.callMethod('pop');
-      expect(a['length'], equals(0));
-    });
-
-    test('js instantiation via map notation : new Date()', () {
-      final a = new JsObject(context['Date']);
-      expect(a.callMethod('getTime'), isNotNull);
-    });
-
-    test('typed array', () {
-      if (Platform.supportsTypedData) {
-        // Safari's ArrayBuffer is not a Function and so doesn't support bind
-        // which JsObject's constructor relies on.
-        // bug: https://bugs.webkit.org/show_bug.cgi?id=122976
-        if (context['ArrayBuffer']['bind'] != null) {
-          final codeUnits = "test".codeUnits;
-          final buf = new JsObject(context['ArrayBuffer'], [codeUnits.length]);
-          final bufView = new JsObject(context['Uint8Array'], [buf]);
-          for (var i = 0; i < codeUnits.length; i++) {
-            bufView[i] = codeUnits[i];
-          }
-        }
-      }
-    });
-
-    test('>10 parameters', () {
-      final o =
-          new JsObject(context['Baz'], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]);
-      for (var i = 1; i <= 11; i++) {
-        expect(o["f$i"], i);
-      }
-      expect(o['constructor'], equals(context['Baz']));
-    });
-  });
-
-  group('JsFunction and callMethod', () {
-    test('new JsObject can return a JsFunction', () {
-      var f = new JsObject(context['Function']);
-      expect(f, new isInstanceOf<JsFunction>());
-    });
-
-    test('JsFunction.apply on a function defined in JS', () {
-      expect(context['razzle'].apply([]), equals(42));
-    });
-
-    test('JsFunction.apply on a function that uses this', () {
-      var object = new Object();
-      expect(context['returnThis'].apply([], thisArg: object), same(object));
-    });
-
-    test('JsObject.callMethod on a function defined in JS', () {
-      expect(context.callMethod('razzle'), equals(42));
-      expect(() => context.callMethod('dazzle'), throwsA(isNoSuchMethodError));
-    });
-
-    test('callMethod with many arguments', () {
-      expect(context.callMethod('varArgs', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
-          equals(55));
-    });
-
-    test('access a property of a function', () {
-      expect(context.callMethod('Bar'), "ret_value");
-      expect(context['Bar']['foo'], "property_value");
-    });
-/*
- TODO(jacobr): evaluate whether we should be in the business of throwing
- ArgumentError outside of checked mode. In unchecked mode this should just
- return a NoSuchMethodError as the class lacks a method "true".
-
-    test('callMethod throws if name is not a String or num', () {
-      expect(() => context.callMethod(true),
-          throwsA(new isInstanceOf<ArgumentError>()));
-    });
-*/
-  });
-
-  group('JsArray', () {
-    test('new JsArray()', () {
-      var array = new JsArray();
-      var arrayType = context['Array'];
-      expect(array.instanceof(arrayType), true);
-      expect(array, []);
-      // basic check that it behaves like a List
-      array.addAll([1, 2, 3]);
-      expect(array, [1, 2, 3]);
-    });
-
-    test('new JsArray.from()', () {
-      var array = new JsArray.from([1, 2, 3]);
-      var arrayType = context['Array'];
-      expect(array.instanceof(arrayType), true);
-      expect(array, [1, 2, 3]);
-    });
-
-    test('get Array from JS', () {
-      context['a'] = new JsObject(context['Array'], [1, 2, 3]);
-      expect(
-          context.callMethod('isPropertyInstanceOf', ['a', context['Array']]),
-          isTrue);
-      var a = context['a'];
-      expect(a, new isInstanceOf<JsArray>());
-      expect(a, [1, 2, 3]);
-      context.deleteProperty('a');
-    });
-
-    test('pass Array to JS', () {
-      context['a'] = [1, 2, 3];
-      var a = context['a'];
-      expect(a, new isInstanceOf<List>());
-      expect(a, isNot(new isInstanceOf<JsArray>()));
-      expect(a, [1, 2, 3]);
-      context.deleteProperty('a');
-    });
-
-    test('[]', () {
-      var array = new JsArray.from([1, 2]);
-      expect(array[0], 1);
-      expect(array[1], 2);
-      expect(() => array[-1], throwsA(isRangeError));
-      expect(() => array[2], throwsA(isRangeError));
-    });
-
-    test('[]=', () {
-      var array = new JsArray.from([1, 2]);
-      array[0] = 'd';
-      array[1] = 'e';
-      expect(array, ['d', 'e']);
-      expect(() => array[-1] = 3, throwsA(isRangeError));
-      expect(() => array[2] = 3, throwsA(isRangeError));
-    });
-
-    test('length', () {
-      var array = new JsArray.from([1, 2, 3]);
-      expect(array.length, 3);
-      array.add(4);
-      expect(array.length, 4);
-      array.length = 2;
-      expect(array, [1, 2]);
-      array.length = 3;
-      expect(array, [1, 2, null]);
-    });
-
-    test('add', () {
-      var array = new JsArray();
-      array.add('a');
-      expect(array, ['a']);
-      array.add('b');
-      expect(array, ['a', 'b']);
-    });
-
-    test('addAll', () {
-      var array = new JsArray();
-      array.addAll(['a', 'b']);
-      expect(array, ['a', 'b']);
-      // make sure addAll can handle Iterables
-      array.addAll(new Set.from(['c']));
-      expect(array, ['a', 'b', 'c']);
-    });
-
-    test('insert', () {
-      var array = new JsArray.from([]);
-      array.insert(0, 'b');
-      expect(array, ['b']);
-      array.insert(0, 'a');
-      expect(array, ['a', 'b']);
-      array.insert(2, 'c');
-      expect(array, ['a', 'b', 'c']);
-      expect(() => array.insert(4, 'e'), throwsA(isRangeError));
-      expect(() => array.insert(-1, 'e'), throwsA(isRangeError));
-    });
-
-    test('removeAt', () {
-      var array = new JsArray.from(['a', 'b', 'c']);
-      expect(array.removeAt(1), 'b');
-      expect(array, ['a', 'c']);
-      expect(() => array.removeAt(2), throwsA(isRangeError));
-      expect(() => array.removeAt(-1), throwsA(isRangeError));
-    });
-
-    test('removeLast', () {
-      var array = new JsArray.from(['a', 'b', 'c']);
-      expect(array.removeLast(), 'c');
-      expect(array, ['a', 'b']);
-      array.length = 0;
-      expect(() => array.removeLast(), throwsA(isRangeError));
-    });
-
-    test('removeRange', () {
-      var array = new JsArray.from(['a', 'b', 'c', 'd']);
-      array.removeRange(1, 3);
-      expect(array, ['a', 'd']);
-      expect(() => array.removeRange(-1, 2), throwsA(isRangeError));
-      expect(() => array.removeRange(0, 3), throwsA(isRangeError));
-      expect(() => array.removeRange(2, 1), throwsA(isRangeError));
-    });
-
-    test('setRange', () {
-      var array = new JsArray.from(['a', 'b', 'c', 'd']);
-      array.setRange(1, 3, ['e', 'f']);
-      expect(array, ['a', 'e', 'f', 'd']);
-      array.setRange(3, 4, ['g', 'h', 'i'], 1);
-      expect(array, ['a', 'e', 'f', 'h']);
-    });
-
-    test('sort', () {
-      var array = new JsArray.from(['c', 'a', 'b']);
-      array.sort();
-      expect(array, ['a', 'b', 'c']);
-    });
-
-    test('sort with a Comparator', () {
-      var array = new JsArray.from(['c', 'a', 'b']);
-      array.sort((a, b) => -(a.compareTo(b)));
-      expect(array, ['c', 'b', 'a']);
-    });
-  });
-
-  group('JsObject.fromBrowserObject()', () {
-    test('Nodes are proxied', () {
-      var node = new JsObject.fromBrowserObject(new DivElement());
-      context.callMethod('addTestProperty', [node]);
-      expect(node is JsObject, isTrue);
-      // TODO(justinfagnani): make this work in IE9
-      // expect(node.instanceof(context['HTMLDivElement']), isTrue);
-      expect(node['testProperty'], 'test');
-    });
-
-    test('primitives and null throw ArgumentError', () {
-      for (var v in ['a', 1, 2.0, true, null]) {
-        expect(() => new JsObject.fromBrowserObject(v),
-            throwsA(new isInstanceOf<ArgumentError>()));
-      }
-    });
-  });
-
-  group('Dart_functions', () {
-    test('invoke Dart callback from JS', () {
-      expect(() => context.callMethod('invokeCallback'), throws);
-
-      context['callback'] = () => 42;
-      expect(context.callMethod('invokeCallback'), equals(42));
-
-      context.deleteProperty('callback');
-    });
-
-    test('callback as parameter', () {
-      expect(context.callMethod('getTypeOf', [context['razzle']]),
-          equals("function"));
-    });
-
-    test('invoke Dart callback from JS with this', () {
-      // A JavaScript constructor function implemented in Dart which
-      // uses 'this'
-      final constructor = new JsFunction.withThis(($this, arg1) {
-        var t = $this;
-        $this['a'] = 42;
-      });
-      var o = new JsObject(constructor, ["b"]);
-      expect(o['a'], equals(42));
-    });
-
-    test('invoke Dart callback from JS with 11 parameters', () {
-      context['callbackWith11params'] =
-          (p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) =>
-              '$p1$p2$p3$p4$p5$p6$p7$p8$p9$p10$p11';
-      expect(context.callMethod('invokeCallbackWith11params'),
-          equals('1234567891011'));
-    });
-
-    test('return a JS proxy to JavaScript', () {
-      var result = context.callMethod('testJsMap', [
-        () => new JsObject.jsify({'value': 42})
-      ]);
-      expect(result, 42);
-    });
-
-    test('emulated functions should be callable in JS', () {
-      context['callable'] = new Callable();
-      var result = context.callMethod('callable');
-      expect(result, 'called');
-      context.deleteProperty('callable');
-    });
-  });
-
-  group('JsObject.jsify()', () {
-    test('convert a List', () {
-      final list = [1, 2, 3, 4, 5, 6, 7, 8];
-      var array = new JsObject.jsify(list);
-      expect(context.callMethod('isArray', [array]), isTrue);
-      expect(array['length'], equals(list.length));
-      for (var i = 0; i < list.length; i++) {
-        expect(array[i], equals(list[i]));
-      }
-    });
-
-    test('convert an Iterable', () {
-      final set = new Set.from([1, 2, 3, 4, 5, 6, 7, 8]);
-      var array = new JsObject.jsify(set);
-      expect(context.callMethod('isArray', [array]), isTrue);
-      expect(array['length'], equals(set.length));
-      for (var i = 0; i < array['length']; i++) {
-        expect(set.contains(array[i]), isTrue);
-      }
-    });
-
-    test('convert a Map', () {
-      var map = {'a': 1, 'b': 2, 'c': 3};
-      var jsMap = new JsObject.jsify(map);
-      expect(!context.callMethod('isArray', [jsMap]), isTrue);
-      for (final key in map.keys) {
-        expect(context.callMethod('checkMap', [jsMap, key, map[key]]), isTrue);
-      }
-    });
-
-    test('deep convert a complex object', () {
-      final object = {
-        'a': [
-          1,
-          [2, 3]
-        ],
-        'b': {
-          'c': 3,
-          'd': new JsObject(context['Foo'], [42])
-        },
-        'e': null
-      };
-      var jsObject = new JsObject.jsify(object);
-      expect(jsObject['a'][0], equals(object['a'][0]));
-      expect(jsObject['a'][1][0], equals(object['a'][1][0]));
-      expect(jsObject['a'][1][1], equals(object['a'][1][1]));
-      expect(jsObject['b']['c'], equals(object['b']['c']));
-      expect(jsObject['b']['d'], equals(object['b']['d']));
-      expect(jsObject['b']['d'].callMethod('bar'), equals(42));
-      expect(jsObject['e'], isNull);
-    });
-
-    test('throws if object is not a Map or Iterable', () {
-      expect(() => new JsObject.jsify('a'),
-          throwsA(new isInstanceOf<ArgumentError>()));
-    });
-  });
-
-  group('JsObject_methods', () {
-    test('hashCode and ==', () {
-      final o1 = context['Object'];
-      final o2 = context['Object'];
-      expect(o1 == o2, isTrue);
-      expect(o1.hashCode == o2.hashCode, isTrue);
-      final d = context['document'];
-      expect(o1 == d, isFalse);
-    });
-
-    test('toString', () {
-      var foo = new JsObject(context['Foo'], [42]);
-      expect(foo.toString(), equals("I'm a Foo a=42"));
-      var container = context['container'];
-      expect(container.toString(), equals("[object Object]"));
-    });
-
-    test('toString returns a String even if the JS object does not', () {
-      var foo = new JsObject(context['Liar']);
-      expect(foo.callMethod('toString'), 1);
-      expect(foo.toString(), '1');
-    });
-
-    test('instanceof', () {
-      var foo = new JsObject(context['Foo'], [1]);
-      expect(foo.instanceof(context['Foo']), isTrue);
-      expect(foo.instanceof(context['Object']), isTrue);
-      expect(foo.instanceof(context['String']), isFalse);
-    });
-
-    test('deleteProperty', () {
-      var object = new JsObject.jsify({});
-      object['a'] = 1;
-      expect(context['Object'].callMethod('keys', [object])['length'], 1);
-      expect(context['Object'].callMethod('keys', [object])[0], "a");
-      object.deleteProperty("a");
-      expect(context['Object'].callMethod('keys', [object])['length'], 0);
-    });
-
-/* TODO(jacobr): this is another test that is inconsistent with JS semantics.
-    test('deleteProperty throws if name is not a String or num', () {
-      var object = new JsObject.jsify({});
-      expect(() => object.deleteProperty(true),
-          throwsA(new isInstanceOf<ArgumentError>()));
-    });
-  */
-
-    test('hasProperty', () {
-      var object = new JsObject.jsify({});
-      object['a'] = 1;
-      expect(object.hasProperty('a'), isTrue);
-      expect(object.hasProperty('b'), isFalse);
-    });
-
-/* TODO(jacobr): is this really the correct unchecked mode behavior?
-    test('hasProperty throws if name is not a String or num', () {
-      var object = new JsObject.jsify({});
-      expect(() => object.hasProperty(true),
-          throwsA(new isInstanceOf<ArgumentError>()));
-    });
-*/
-
-    test('[] and []=', () {
-      final myArray = context['myArray'];
-      expect(myArray['length'], equals(1));
-      expect(myArray[0], equals("value1"));
-      myArray[0] = "value2";
-      expect(myArray['length'], equals(1));
-      expect(myArray[0], equals("value2"));
-
-      final foo = new JsObject(context['Foo'], [1]);
-      foo["getAge"] = () => 10;
-      expect(foo.callMethod('getAge'), equals(10));
-    });
-
-/* TODO(jacobr): remove as we should only throw this in checked mode.
-    test('[] and []= throw if name is not a String or num', () {
-      var object = new JsObject.jsify({});
-      expect(() => object[true],
-          throwsA(new isInstanceOf<ArgumentError>()));
-      expect(() => object[true] = 1,
-          throwsA(new isInstanceOf<ArgumentError>()));
-    });
-*/
-  });
-
-  group('transferrables', () {
-    group('JS->Dart', () {
-      test('DateTime', () {
-        var date = context.callMethod('getNewDate');
-        expect(date is DateTime, isTrue);
-      });
-
-      test('window', () {
-        expect(context['window'] is Window, isTrue);
-      });
-
-      // Bug: dartbug.com/24520
-      /*
-      test('foreign browser objects should be proxied', () {
-        var iframe = new IFrameElement();
-        document.body.children.add(iframe);
-        var proxy = new JsObject.fromBrowserObject(iframe);
-
-        // Window
-        var contentWindow = proxy['contentWindow'];
-        expect(contentWindow, isNot(new isInstanceOf<Window>()));
-        expect(contentWindow, new isInstanceOf<JsObject>());
-
-        // Node
-        var foreignDoc = contentWindow['document'];
-        expect(foreignDoc, isNot(new isInstanceOf<Node>()));
-        expect(foreignDoc, new isInstanceOf<JsObject>());
-
-        // Event
-        var clicked = false;
-        foreignDoc['onclick'] = (e) {
-          expect(e, isNot(new isInstanceOf<Event>()));
-          expect(e, new isInstanceOf<JsObject>());
-          clicked = true;
-        };
-
-        context.callMethod('fireClickEvent', [contentWindow]);
-        expect(clicked, isTrue);
-      });
-      */
-
-      test('document', () {
-        expect(context['document'] is Document, isTrue);
-      });
-
-      skipIE9_test('Blob', () {
-        var blob = context.callMethod('getNewBlob');
-        expect(blob is Blob, isTrue);
-        expect(blob.type, equals('text/html'));
-      });
-
-      test('unattached DivElement', () {
-        var node = context.callMethod('getNewDivElement');
-        expect(node is DivElement, isTrue);
-      });
-
-      test('Event', () {
-        var event = context.callMethod('getNewEvent');
-        expect(event is Event, true);
-      });
-
-      test('KeyRange', () {
-        if (IdbFactory.supported) {
-          var node = context.callMethod('getNewIDBKeyRange');
-          expect(node is KeyRange, isTrue);
-        }
-      });
-
-      test('ImageData', () {
-        var node = context.callMethod('getNewImageData');
-        expect(node is ImageData, isTrue);
-      });
-
-      test('typed data: Int32Array', () {
-        if (Platform.supportsTypedData) {
-          var list = context.callMethod('getNewInt32Array');
-          print(list);
-          expect(list is Int32List, isTrue);
-          expect(list, orderedEquals([1, 2, 3, 4, 5, 6, 7, 8]));
-        }
-      });
-    });
-
-    group('JavaScriptFunction', () {
-      test('is check', () {
-        var fn = (String s) => true;
-        var jsFn = allowInterop(fn);
-        expect(fn is StringToBool, isTrue);
-        expect(jsFn is StringToBool, isTrue);
-        expect(jsFn is Function, isTrue);
-        expect(jsFn is List, isFalse);
-      });
-    });
-
-    group('Dart->JS', () {
-      test('Date', () {
-        context['o'] = new DateTime(1995, 12, 17);
-        var dateType = context['Date'];
-        expect(context.callMethod('isPropertyInstanceOf', ['o', dateType]),
-            isTrue);
-        context.deleteProperty('o');
-      });
-
-      skipIE9_test('window', () {
-        context['o'] = window;
-        var windowType = context['Window'];
-        expect(context.callMethod('isPropertyInstanceOf', ['o', windowType]),
-            isTrue);
-        context.deleteProperty('o');
-      });
-
-      skipIE9_test('document', () {
-        context['o'] = document;
-        var documentType = context['Document'];
-        expect(context.callMethod('isPropertyInstanceOf', ['o', documentType]),
-            isTrue);
-        context.deleteProperty('o');
-      });
-
-      skipIE9_test('Blob', () {
-        var fileParts = ['<a id="a"><b id="b">hey!</b></a>'];
-        context['o'] = new Blob(fileParts, 'text/html');
-        var blobType = context['Blob'];
-        expect(context.callMethod('isPropertyInstanceOf', ['o', blobType]),
-            isTrue);
-        context.deleteProperty('o');
-      });
-
-      test('unattached DivElement', () {
-        context['o'] = new DivElement();
-        var divType = context['HTMLDivElement'];
-        expect(
-            context.callMethod('isPropertyInstanceOf', ['o', divType]), isTrue);
-        context.deleteProperty('o');
-      });
-
-      test('Event', () {
-        context['o'] = new CustomEvent('test');
-        var eventType = context['Event'];
-        expect(context.callMethod('isPropertyInstanceOf', ['o', eventType]),
-            isTrue);
-        context.deleteProperty('o');
-      });
-
-      test('KeyRange', () {
-        if (IdbFactory.supported) {
-          context['o'] = new KeyRange.only(1);
-          var keyRangeType = context['IDBKeyRange'];
-          expect(
-              context.callMethod('isPropertyInstanceOf', ['o', keyRangeType]),
-              isTrue);
-          context.deleteProperty('o');
-        }
-      });
-
-      // this test fails in IE9 for very weird, but unknown, reasons
-      // the expression context['ImageData'] fails if useHtmlConfiguration()
-      // is called, or if the other tests in this file are enabled
-      skipIE9_test('ImageData', () {
-        var canvas = new CanvasElement();
-        var ctx = canvas.getContext('2d');
-        context['o'] = ctx.createImageData(1, 1);
-        var imageDataType = context['ImageData'];
-        expect(context.callMethod('isPropertyInstanceOf', ['o', imageDataType]),
-            isTrue);
-        context.deleteProperty('o');
-      });
-
-      test('typed data: Int32List', () {
-        if (Platform.supportsTypedData) {
-          context['o'] = new Int32List.fromList([1, 2, 3, 4]);
-          var listType = context['Int32Array'];
-          // TODO(jacobr): make this test pass. Currently some type information
-          // is lost when typed arrays are passed between JS and Dart.
-          // expect(context.callMethod('isPropertyInstanceOf', ['o', listType]),
-          //    isTrue);
-          context.deleteProperty('o');
-        }
-      });
-    });
-  });
-}
diff --git a/tests/html/js_type_test.dart b/tests/html/js_type_test.dart
deleted file mode 100644
index 7ab3097..0000000
--- a/tests/html/js_type_test.dart
+++ /dev/null
@@ -1,146 +0,0 @@
-// 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 jsTest;
-
-import 'dart:html';
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'package:expect/expect.dart' show NoInline, AssumeDynamic;
-
-import 'js_type_test_lib.dart';
-
-class Bar {}
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-class Is<T> {
-  const Is();
-  check(o) => o is T;
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  new Is<Foo>().check(new Bar()); // Bar is instantiated by this code.
-  new Is<Foo>().check([]);
-  new Is<List>().check([]);
-
-  group('static', () {
-    test('not-String', () {
-      Foo e = new Foo();
-      expect(e is String, isFalse);
-    });
-
-    test('not-int', () {
-      Foo e = new Foo();
-      expect(e is int, isFalse);
-    });
-
-    test('not-Null', () {
-      Foo e = new Foo();
-      expect(e is Null, isFalse);
-    });
-
-    test('not-Bar', () {
-      Foo e = new Foo();
-      expect(e is Bar, isFalse);
-    });
-
-    test('is-Foo', () {
-      Foo e = new Foo();
-      expect(e is Foo, isTrue);
-    });
-
-    test('String-not-Foo', () {
-      String e = 'hello';
-      expect(e is Foo, isFalse);
-    });
-  });
-
-  group('dynamic', () {
-    test('not-String', () {
-      var e = confuse(new Foo());
-      expect(e is String, isFalse);
-    });
-
-    test('not-int', () {
-      var e = confuse(new Foo());
-      expect(e is int, isFalse);
-    });
-
-    test('not-Null', () {
-      var e = confuse(new Foo());
-      expect(e is Null, isFalse);
-    });
-
-    test('not-Bar', () {
-      var e = confuse(new Foo());
-      expect(e is Bar, isFalse);
-    });
-
-    test('is-Foo', () {
-      var e = confuse(new Foo());
-      expect(e is Foo, isTrue);
-    });
-  });
-
-  group('dynamic-String-not-Foo', () {
-    test('test', () {
-      var e = confuse('hello');
-      expect(e is Foo, isFalse);
-    });
-  });
-
-  group('dynamic-null-not-Foo', () {
-    test('test', () {
-      var e = confuse(null);
-      expect(e is Foo, isFalse);
-    });
-  });
-
-  group('dynamic-type', () {
-    test('not-String', () {
-      var e = confuse(new Foo());
-      expect(const Is<String>().check(e), isFalse);
-    });
-
-    test('not-int', () {
-      var e = confuse(new Foo());
-      expect(const Is<int>().check(e), isFalse);
-    });
-
-    test('not-Null', () {
-      var e = confuse(new Foo());
-      expect(const Is<Null>().check(e), isFalse);
-    });
-
-    test('not-Bar', () {
-      var e = confuse(new Foo());
-      expect(const Is<Bar>().check(e), isFalse);
-    });
-
-    test('is-Foo', () {
-      var e = confuse(new Foo());
-      expect(const Is<Foo>().check(e), isTrue);
-    });
-  });
-
-  group('dynamic-String-not-dynamic-Foo', () {
-    test('test', () {
-      var e = confuse('hello');
-      expect(const Is<Foo>().check(e), isFalse);
-    });
-  });
-
-  group('dynamic-null-not-dynamic-Foo', () {
-    test('test', () {
-      var e = confuse(null);
-      expect(const Is<Foo>().check(e), isFalse);
-    });
-  });
-}
diff --git a/tests/html/js_type_test.html b/tests/html/js_type_test.html
deleted file mode 100644
index 69628ed..0000000
--- a/tests/html/js_type_test.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<--
-// 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.
--->
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> js_type_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-</head>
-<body>
-  <h1> Running js_type_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tests/html/js_type_test_js.js"></script>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/html/js_type_test_js.js b/tests/html/js_type_test_js.js
deleted file mode 100644
index 1f12f38..0000000
--- a/tests/html/js_type_test_js.js
+++ /dev/null
@@ -1,5 +0,0 @@
-// 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.
-
-function Foo() {}
diff --git a/tests/html/js_type_test_lib.dart b/tests/html/js_type_test_lib.dart
deleted file mode 100644
index 6b7113c..0000000
--- a/tests/html/js_type_test_lib.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-@JS()
-library js_type_test_lib;
-
-import 'package:js/js.dart';
-
-@JS()
-class Foo {
-  external factory Foo();
-}
diff --git a/tests/html/js_typed_interop_anonymous2_exp_test.dart b/tests/html/js_typed_interop_anonymous2_exp_test.dart
deleted file mode 100644
index f5708fe..0000000
--- a/tests/html/js_typed_interop_anonymous2_exp_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// SharedOptions=--experimental-trust-js-interop-type-annotations
-
-// Same test as js_typed_interop_anonymous2, but using the
-// --experimental-trust-js-interop-type-annotations flag.
-@JS()
-library js_typed_interop_anonymous2_exp_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class A {
-  external factory A({B b});
-
-  external B get b;
-}
-
-@JS()
-@anonymous
-class B {
-  external factory B({C c});
-
-  external C get c;
-}
-
-@JS()
-@anonymous
-class C {
-  external factory C();
-}
-
-// D is unreachable, and that is OK
-@JS()
-@anonymous
-class D {
-  external factory D();
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('simple', () {
-    var b = new B();
-    var a = new A(b: b);
-    expect(a.b, equals(b));
-    expect(b.c, isNull);
-  });
-}
diff --git a/tests/html/js_typed_interop_anonymous2_test.dart b/tests/html/js_typed_interop_anonymous2_test.dart
deleted file mode 100644
index 2de59d0..0000000
--- a/tests/html/js_typed_interop_anonymous2_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_typed_interop_anonymous2_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class A {
-  external factory A({B b});
-
-  external B get b;
-}
-
-@JS()
-@anonymous
-class B {
-  external factory B({C c});
-
-  external C get c;
-}
-
-@JS()
-@anonymous
-class C {
-  external factory C();
-}
-
-// D is unreachable, and that is OK
-@JS()
-@anonymous
-class D {
-  external factory D();
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('simple', () {
-    var b = new B();
-    var a = new A(b: b);
-    expect(a.b, equals(b));
-    expect(b.c, isNull);
-  });
-}
diff --git a/tests/html/js_typed_interop_anonymous_exp_test.dart b/tests/html/js_typed_interop_anonymous_exp_test.dart
deleted file mode 100644
index 9bbcf8d..0000000
--- a/tests/html/js_typed_interop_anonymous_exp_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// SharedOptions=--experimental-trust-js-interop-type-annotations
-
-// Same test as js_typed_interop_anonymous, but using the
-// --experimental-trust-js-interop-type-annotations flag.
-@JS()
-library js_typed_interop_anonymous_exp_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class Literal {
-  external factory Literal({int x, String y, num z});
-
-  external int get x;
-  external String get y;
-  external num get z;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('simple', () {
-    var l = new Literal(x: 3, y: "foo");
-    expect(l.x, equals(3));
-    expect(l.y, equals("foo"));
-    expect(l.z, isNull);
-  });
-}
diff --git a/tests/html/js_typed_interop_anonymous_test.dart b/tests/html/js_typed_interop_anonymous_test.dart
deleted file mode 100644
index 3a18bb2..0000000
--- a/tests/html/js_typed_interop_anonymous_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_typed_interop_anonymous_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class Literal {
-  external factory Literal({int x, String y, num z});
-
-  external int get x;
-  external String get y;
-  external num get z;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('simple', () {
-    var l = new Literal(x: 3, y: "foo");
-    expect(l.x, equals(3));
-    expect(l.y, equals("foo"));
-    expect(l.z, isNull);
-  });
-}
diff --git a/tests/html/js_typed_interop_anonymous_unreachable_exp_test.dart b/tests/html/js_typed_interop_anonymous_unreachable_exp_test.dart
deleted file mode 100644
index ee8a506..0000000
--- a/tests/html/js_typed_interop_anonymous_unreachable_exp_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// SharedOptions=--experimental-trust-js-interop-type-annotations
-
-// Same test as js_typed_interop_anonymous_unreachable, but using the
-// --experimental-trust-js-interop-type-annotations flag.
-@JS()
-library js_typed_interop_anonymous_unreachable_exp_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class Literal {
-  external factory Literal({int x, String y, num z});
-
-  external int get x;
-  external String get y;
-  external num get z;
-}
-
-main() {
-  useHtmlConfiguration();
-  test('nothing to do', () {
-    // This test is empty, but it is a regression for Issue# 24974: dart2js
-    // would crash trying to compile code that used @anonymous and that was
-    // not reachable from main.
-  });
-}
diff --git a/tests/html/js_typed_interop_anonymous_unreachable_test.dart b/tests/html/js_typed_interop_anonymous_unreachable_test.dart
deleted file mode 100644
index 7aaa521..0000000
--- a/tests/html/js_typed_interop_anonymous_unreachable_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_typed_interop_anonymous_unreachable_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class Literal {
-  external factory Literal({int x, String y, num z});
-
-  external int get x;
-  external String get y;
-  external num get z;
-}
-
-main() {
-  useHtmlConfiguration();
-  test('nothing to do', () {
-    // This test is empty, but it is a regression for Issue# 24974: dart2js
-    // would crash trying to compile code that used @anonymous and that was
-    // not reachable from main.
-  });
-}
diff --git a/tests/html/js_typed_interop_bind_this_test.dart b/tests/html/js_typed_interop_bind_this_test.dart
deleted file mode 100644
index d241cb9..0000000
--- a/tests/html/js_typed_interop_bind_this_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// 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.
-
-@JS()
-library js_typed_interop_bind_this_test;
-
-import 'dart:html';
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/html_individual_config.dart';
-
-// This is a regression test for https://github.com/dart-lang/sdk/issues/25658
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  "use strict";
-
-  function JsTest() {
-  }
-
-  JsTest.returnThis = function(name, value) {
-    return this;
-  };
-""");
-}
-
-@JS('JsTest.returnThis')
-external returnThis([name, value]);
-
-@JS('JsTest')
-external get jsTestObject;
-
-@JS('window')
-external get jsWindow;
-
-main() {
-  _injectJs();
-
-  useHtmlIndividualConfiguration();
-
-  group('bind this', () {
-    test('simple', () {
-      expect(identical(returnThis(), jsWindow), isFalse);
-      expect(identical(returnThis(), null), isFalse);
-      expect(identical(returnThis(), jsTestObject), isTrue);
-    });
-  });
-}
diff --git a/tests/html/js_typed_interop_callable_object_test.dart b/tests/html/js_typed_interop_callable_object_test.dart
deleted file mode 100644
index 4456459..0000000
--- a/tests/html/js_typed_interop_callable_object_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// 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.
-
-@JS()
-library js_typed_interop_callable_object_test;
-
-import 'dart:html';
-
-import 'package:expect/expect.dart' show NoInline, AssumeDynamic;
-import 'package:js/js.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-
-// This is a regression test for https://github.com/dart-lang/sdk/issues/25658
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  "use strict";
-
-  window.callableObject = function (a, b) { return a + b; };
-  window.callableObject.foo = function() { return "bar"; };
-  window.callableObject.bar = 42;
-
-""");
-}
-
-@JS()
-@anonymous
-class CallableObject {
-  /// If a @JS class implements `call`, the underlying representation must be
-  /// a JavaScript callable (i.e. function).
-  external num call(num a, num b);
-  external int get bar;
-  external String foo();
-}
-
-@JS()
-external CallableObject get callableObject;
-
-main() {
-  _injectJs();
-
-  useHtmlIndividualConfiguration();
-
-  group('callable object', () {
-    test('simple', () {
-      var obj = callableObject;
-      expect(obj(4, 5), equals(9));
-      expect(obj.bar, equals(42));
-      expect(obj.foo(), equals("bar"));
-
-      expect(callableObject(4, 5), equals(9));
-      expect(callableObject.bar, equals(42));
-      expect(callableObject.foo(), equals("bar"));
-    });
-
-    test('dynamic', () {
-      var obj = confuse(callableObject);
-      expect(obj(4, 5), equals(9));
-      expect(obj.bar, equals(42));
-      expect(obj.foo(), equals("bar"));
-    });
-  });
-}
diff --git a/tests/html/js_typed_interop_default_arg_test.dart b/tests/html/js_typed_interop_default_arg_test.dart
deleted file mode 100644
index 590f441..0000000
--- a/tests/html/js_typed_interop_default_arg_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_typed_interop_test;
-
-import 'dart:html';
-
-import 'package:expect/expect.dart' show NoInline;
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  var Foo = {
-    get42: function(b) { return arguments.length >= 1 ? b : 42; },
-    get43: function(b) { return arguments.length >= 1 ? b : 43; }
-  };
-""");
-}
-
-@JS()
-class Foo {
-  // Note: it's invalid to provide a default value.
-  external static num get42([num b
-      = 3 // //# default_value: compile-time error
-      ]);
-  external static num get43([num b]);
-}
-
-main() {
-  _injectJs();
-  useHtmlConfiguration();
-
-  test('call directly from dart', () {
-    expect(Foo.get42(2), 2);
-    expect(Foo.get42(), 42);
-  });
-
-  test('call tearoff from dart with arg', () {
-    var f = Foo.get42;
-    expect(f(2), 2); //# explicit_argument: ok
-  });
-
-  test('call tearoff from dart with default', () {
-    var f = Foo.get42;
-    // Note: today both SSA and CPS remove the extra argument on static calls,
-    // but they fail to do so on tearoffs.
-    expect(f(), 3); //# default_value: continued
-
-    f = Foo.get43;
-    expect(f(), 43);
-  });
-}
diff --git a/tests/html/js_typed_interop_side_cast_exp_test.dart b/tests/html/js_typed_interop_side_cast_exp_test.dart
deleted file mode 100644
index 1d1a708..0000000
--- a/tests/html/js_typed_interop_side_cast_exp_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// SharedOptions=--experimental-trust-js-interop-type-annotations
-
-// Similar test to js_typed_interop_side_cast, but because we are using the
-// --experimental-trust-js-interop-type-annotations flag, we test a slighly
-// different behavior.
-@JS()
-library js_typed_interop_side_cast_exp_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class A {
-  external int get x;
-  external factory A({int x});
-}
-
-@JS()
-@anonymous
-class B {
-  external int get x;
-  external factory B({int x});
-}
-
-@JS()
-@anonymous
-class C {
-  external int get x;
-  external factory C({int x});
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('side-casts work for reachable types', () {
-    new C(x: 3); // make C reachable
-    var a = new A(x: 3);
-    expect(a is C, isTrue);
-    C c = a;
-    expect(c.x, equals(3));
-  });
-
-  // Note: this test would fail without the experimental flag.
-  test('side-casts do not work for unreachable types', () {
-    var a = new A(x: 3);
-    expect(a is B, isFalse);
-  });
-}
diff --git a/tests/html/js_typed_interop_side_cast_test.dart b/tests/html/js_typed_interop_side_cast_test.dart
deleted file mode 100644
index 6266abd..0000000
--- a/tests/html/js_typed_interop_side_cast_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_typed_interop_anonymous2_test;
-
-import 'dart:html';
-import 'dart:js' as js;
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-@JS()
-@anonymous
-class A {
-  external int get x;
-  external factory A({int x});
-}
-
-@JS()
-@anonymous
-class C {
-  external int get x;
-  external factory C({int x});
-}
-
-@JS()
-@anonymous
-class B {
-  external int get x;
-  external factory B({int x});
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('side-casts work for reachable types', () {
-    new C(x: 3); // make C reachable
-    var a = new A(x: 3);
-    expect(a is C, isTrue);
-    C c = a;
-    expect(c.x, equals(3));
-  });
-
-  test('side-casts work for otherwise unreachable types', () {
-    var a = new A(x: 3);
-    expect(a is B, isTrue);
-  });
-}
diff --git a/tests/html/js_typed_interop_test.dart b/tests/html/js_typed_interop_test.dart
deleted file mode 100644
index 3c05ffe..0000000
--- a/tests/html/js_typed_interop_test.dart
+++ /dev/null
@@ -1,583 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library js_typed_interop_test;
-
-import 'dart:html';
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/html_individual_config.dart';
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  var Foo = {
-    multiplyDefault2: function(a, b) {
-      if (arguments.length >= 2) return a *b;
-      return a * 2;
-    }
-  };
-
-  var foo = {
-    x: 3,
-    z: 40, // Not specified in typed Dart API so should fail in checked mode.
-    multiplyByX: function(arg) { return arg * this.x; },
-    // This function can be torn off without having to bind this.
-    multiplyBy2: function(arg) { return arg * 2; },
-    multiplyDefault2Function: function(a, b) {
-      if (arguments.length >= 2) return a * b;
-      return a * 2;
-    },
-    callClosureWithArg1: function(closure, arg) {
-      return closure(arg);
-    },
-    callClosureWithArg2: function(closure, arg1, arg2) {
-      return closure(arg1, arg2);
-    },
-    callClosureWithArgAndThis: function(closure, arg) {
-      return closure.apply(this, [arg]);
-    },
-
-    getBar: function() {
-      return bar;
-    }
-  };
-
-  var foob = {
-    x: 8,
-    y: "why",
-    multiplyByX: function(arg) { return arg * this.x; }
-  };
-
-  var bar = {
-    x: "foo",
-    multiplyByX: true,
-    getFoo: function() {
-      return foo;
-    }
-  };
-
-  function ClassWithConstructor(a, b) {
-    this.a = a;
-    this.b = b;
-  };
-
-  ClassWithConstructor.prototype = {
-    getA: function() { return this.a;}
-  };
-
-  function _PrivateClass(a, b) {
-    this._a = a;
-    this._b = b;
-  };
-
-  _PrivateClass.prototype = {
-    _getA: function() { return this._a;}
-  };
-
-  var selection = ["a", "b", "c", foo, bar];
-
-  function returnNumArgs() { return arguments.length; };
-  function returnLastArg() { return arguments[arguments.length-1]; };
-
-  function confuse(obj) { return obj; }
-
-  window['class'] = function() { return 42; };
-  window['delete'] = 100;
-  window['JS$hasJsInName'] = 'unicorn';
-  window['JS$hasJsInNameMethod'] = function(x) { return x*5; };
-
-  function JS$ClassWithJSInName(x) {
-    this.x = x;
-    this.JS$hasJsInName = 73;
-    this.$JS$doesNotNeedEscape = 103;
-  };
-
-  JS$ClassWithJSInName.prototype = {
-    JS$getXwithJsInName: function() { return this.x;}
-  };
-
-  JS$ClassWithJSInName.JS$staticMethod = function(x) { return x * 3; };
-
-  function StringWrapper(str) {
-    this.str = str;
-  }
-  StringWrapper.prototype = {
-    charCodeAt: function(index) {
-      return this.str.charCodeAt(index);
-    }
-  };
-  function getCanvasContext() {
-    return document.createElement('canvas').getContext('2d');
-  }
-  window.windowProperty = 42;
-  document.documentProperty = 45;
-""");
-}
-
-class RegularClass {
-  factory RegularClass(a) {
-    return new RegularClass.fooConstructor(a);
-  }
-  RegularClass.fooConstructor(this.a);
-  var a;
-}
-
-@JS()
-class ClassWithConstructor {
-  external ClassWithConstructor(aParam, bParam);
-  external getA();
-  external get a;
-  external get b;
-}
-
-@JS('ClassWithConstructor')
-class _ClassWithConstructor {
-  external _ClassWithConstructor(aParam, bParam);
-  external getA();
-  external get a;
-  external get b;
-}
-
-@JS('ClassWithConstructor')
-class ClassWithFactory {
-  external factory ClassWithFactory(aParam, bParam);
-  external getA();
-  external get a;
-  external get b;
-}
-
-@JS()
-class JS$_PrivateClass {
-  external JS$_PrivateClass(aParam, bParam);
-  external JS$_getA();
-  external get JS$_a;
-  external get JS$_b;
-  // Equivalent to JS$_a but only visible within
-  // the class.
-  external get _a;
-}
-
-@JS()
-external String get JS$JS$hasJsInName;
-
-@JS()
-external int JS$JS$hasJsInNameMethod(int x);
-
-// This is the preferred way to handle static or top level members that start
-// with JS$. We verify that JS$JS$ works purely to prevent bugs.
-@JS(r'JS$hasJsInName')
-external String get JS$hasJsInName;
-
-@JS(r'JS$hasJsInNameMethod')
-external int JS$hasJsInNameMethod(int x);
-
-@JS()
-class JS$JS$ClassWithJSInName {
-  external JS$JS$ClassWithJSInName(x);
-  external int get x;
-  external int get JS$JS$hasJsInName;
-  external int get $JS$doesNotNeedEscape;
-  external int JS$JS$getXwithJsInName();
-  external static int JS$JS$staticMethod(x);
-}
-
-typedef num MultiplyWithDefault(num a, [num b]);
-
-@JS()
-class Foo {
-  external int get x;
-  external set x(int v);
-  external num multiplyByX(num y);
-  external num multiplyBy2(num y);
-  external num JS$multiplyBy2(num y);
-  external MultiplyWithDefault get multiplyDefault2Function;
-
-  external callClosureWithArgAndThis(Function closure, arg);
-  external callClosureWithArg1(Function closure, arg1);
-  external callClosureWithArg2(Function closure, arg1, arg2);
-  external Bar getBar();
-
-  external static num multiplyDefault2(num a, [num b]);
-  // Should desugar to multiplyDefault2.
-  external static num JS$multiplyDefault2(num a, [num b]);
-}
-
-@anonymous
-@JS()
-class ExampleLiteral {
-  external factory ExampleLiteral({int x, String y, num z, JS$class});
-
-  external int get x;
-  external int get JS$class;
-  external String get y;
-  external num get z;
-}
-
-@anonymous
-@JS()
-class EmptyLiteral {
-  external factory EmptyLiteral();
-}
-
-@JS('Foob')
-class Foob extends Foo {
-  external String get y;
-}
-
-@JS('Bar')
-class Bar {
-  external String get x;
-  external bool get multiplyByX;
-  external Foo getFoo();
-}
-
-// No @JS is required for these external methods as the library is
-// annotated with Js.
-external Foo get foo;
-external Foob get foob;
-external Bar get bar;
-external Selection get selection;
-
-addWithDefault(a, [b = 100]) => a + b;
-
-external Function get returnNumArgs;
-external Function get returnLastArg;
-
-const STRINGIFY_LOCATION = "JSON.stringify";
-@JS(STRINGIFY_LOCATION)
-external String stringify(obj);
-
-@JS()
-class StringWrapper {
-  external StringWrapper(String str);
-  external int charCodeAt(int i);
-}
-
-// Defeat JS type inference by calling through JavaScript interop.
-@JS()
-external confuse(obj);
-
-/// Desugars to calling the js method named class.
-@JS()
-external JS$class();
-
-@JS()
-external get JS$delete;
-
-@JS()
-external CanvasRenderingContext2D getCanvasContext();
-
-@JS('window.window.document.documentProperty')
-external num get propertyOnDocument;
-
-@JS('window.self.window.window.windowProperty')
-external num get propertyOnWindow;
-
-@JS()
-@anonymous
-class Simple {
-  external List<int> get numbers;
-  external set numbers(List<int> numbers);
-
-  external factory Simple({List<int> numbers});
-}
-
-main() {
-  _injectJs();
-
-  useHtmlIndividualConfiguration();
-
-  group('object literal', () {
-    test('simple', () {
-      var l = new ExampleLiteral(x: 3, y: "foo");
-      expect(l.x, equals(3));
-      expect(l.y, equals("foo"));
-      expect(l.z, isNull);
-      expect(stringify(l), equals('{"x":3,"y":"foo"}'));
-      l = new ExampleLiteral(z: 100);
-      expect(l.x, isNull);
-      expect(l.y, isNull);
-      expect(l.z, equals(100));
-      expect(stringify(l), equals('{"z":100}'));
-    });
-
-    test('with array', () {
-      // Repro for https://github.com/dart-lang/sdk/issues/26768
-      var simple = new Simple(numbers: [1, 2, 3]);
-      expect(stringify(simple), equals('{"numbers":[1,2,3]}'));
-    });
-
-    test(r'JS$ escaped name', () {
-      var l = new ExampleLiteral(JS$class: 3, y: "foo");
-      expect(l.JS$class, equals(3));
-    });
-
-    test('empty', () {
-      var l = new EmptyLiteral();
-      expect(stringify(l), equals('{}'));
-    });
-  });
-
-  group('constructor', () {
-    test('simple', () {
-      var o = new ClassWithConstructor("foo", "bar");
-      expect(o.a, equals("foo"));
-      expect(o.b, equals("bar"));
-      expect(o.getA(), equals("foo"));
-    });
-    test('external factory', () {
-      var o = new ClassWithFactory("foo", "bar");
-      expect(o.a, equals("foo"));
-      expect(o.b, equals("bar"));
-      expect(o.getA(), equals("foo"));
-    });
-  });
-
-  group('private class', () {
-    test('simple', () {
-      var o = new _ClassWithConstructor("foo", "bar");
-      expect(o.a, equals("foo"));
-      expect(o.b, equals("bar"));
-      expect(o.getA(), equals("foo"));
-    });
-  });
-
-  group('private class', () {
-    test('simple', () {
-      var o = new JS$_PrivateClass("foo", "bar");
-      expect(o.JS$_a, equals("foo"));
-      expect(o.JS$_b, equals("bar"));
-      expect(o._a, equals("foo"));
-      expect(o.JS$_getA(), equals("foo"));
-    });
-  });
-
-  group('property', () {
-    test('get', () {
-      expect(foo.x, equals(3));
-      expect(foob.x, equals(8));
-      expect(foob.y, equals("why"));
-
-      // Exists in JS but not in API.
-      expect(() => (foo as dynamic).zSomeInvalidName, throws);
-      expect(bar.multiplyByX, isTrue);
-    });
-    test('set', () {
-      foo.x = 42;
-      expect(foo.x, equals(42));
-      // Property tagged as read only in typed API.
-      expect(() => (foob as dynamic).y = "bla", throws);
-      expect(() => (foo as dynamic).unknownName = 42, throws);
-    });
-  });
-
-  group('method', () {
-    test('call', () {
-      foo.x = 100;
-      expect(foo.multiplyByX(4), equals(400));
-      foob.x = 10;
-      expect(foob.multiplyByX(4), equals(40));
-    });
-
-    test('tearoff', () {
-      foo.x = 10;
-      Function multiplyBy2 = foo.multiplyBy2;
-      expect(multiplyBy2(5), equals(10));
-      Function multiplyByX = foo.multiplyByX;
-      // Tearing off a JS closure doesn't bind this.
-      // You will need to use the new method tearoff syntax to bind this.
-      expect(multiplyByX(4), isNaN);
-
-      MultiplyWithDefault multiplyWithDefault = foo.multiplyDefault2Function;
-      expect(multiplyWithDefault(6, 6), equals(36));
-      expect(multiplyWithDefault(6), equals(12));
-      Function untypedFunction = foo.multiplyDefault2Function;
-      // Calling with extra bogus arguments has no impact for JavaScript
-      // methods.
-      expect(untypedFunction(6, 6, "ignored", "ignored"), equals(36));
-      expect(
-          untypedFunction(6, 6, "ignored", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-              0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
-          equals(36));
-      // Calling a JavaScript method with too few arguments is also fine and
-      // defaults to JavaScript behavior of setting all unspecified arguments
-      // to undefined resulting in multiplying undefined by 2 == NAN.
-      expect(untypedFunction(), isNaN);
-    });
-
-    test(r'JS$ escaped name', () {
-      foo.x = 10;
-      expect(foo.JS$multiplyBy2(5), equals(10));
-
-      Function multiplyBy2 = foo.JS$multiplyBy2;
-      expect(multiplyBy2(5), equals(10));
-    });
-
-    test(r'JS$ double escaped name', () {
-      var obj = new JS$JS$ClassWithJSInName(42);
-      expect(obj.x, equals(42));
-      expect(obj.JS$JS$getXwithJsInName(), equals(42));
-      expect(obj.JS$JS$hasJsInName, equals(73));
-      expect(obj.$JS$doesNotNeedEscape, equals(103));
-    });
-  });
-
-  group('static_method_call', () {
-    test('call directly from dart', () {
-      expect(Foo.multiplyDefault2(6, 7), equals(42));
-      expect(Foo.multiplyDefault2(6), equals(12));
-    });
-
-    test(r'JS$ escaped name', () {
-      expect(Foo.JS$multiplyDefault2(6, 7), equals(42));
-      expect(Foo.JS$multiplyDefault2(6), equals(12));
-    });
-
-    test(r'JS$ double escaped name', () {
-      expect(JS$JS$ClassWithJSInName.JS$JS$staticMethod(4), equals(12));
-    });
-  });
-
-  // Note: these extra groups are added to be able to mark each test
-  // individually in status files. This should be split as separate test files.
-  group('static_method_tearoff_1', () {
-    test('call tearoff from dart', () {
-      MultiplyWithDefault tearOffMethod = Foo.multiplyDefault2;
-      expect(tearOffMethod(6, 6), equals(36));
-    });
-  });
-
-  group('static_method_tearoff_2', () {
-    test('call tearoff from dart', () {
-      MultiplyWithDefault tearOffMethod = Foo.multiplyDefault2;
-      expect(tearOffMethod(6), equals(12));
-    });
-  });
-
-  group('closure', () {
-    test('call from js', () {
-      localClosure(x) => x * 10;
-      var wrappedLocalClosure = allowInterop(localClosure);
-      expect(
-          identical(allowInterop(localClosure), wrappedLocalClosure), isTrue);
-      expect(foo.callClosureWithArg1(wrappedLocalClosure, 10), equals(100));
-      expect(foo.callClosureWithArg1(wrappedLocalClosure, "a"),
-          equals("aaaaaaaaaa"));
-      expect(foo.callClosureWithArg1(allowInterop(addWithDefault), 10),
-          equals(110));
-      expect(foo.callClosureWithArg2(allowInterop(addWithDefault), 10, 20),
-          equals(30));
-      addThisXAndArg(Foo that, int arg) {
-        return foo.x + arg;
-      }
-
-      var wrappedCaptureThisClosure = allowInteropCaptureThis(addThisXAndArg);
-      foo.x = 20;
-      expect(foo.callClosureWithArgAndThis(wrappedCaptureThisClosure, 10),
-          equals(30));
-      foo.x = 50;
-      expect(foo.callClosureWithArgAndThis(wrappedCaptureThisClosure, 10),
-          equals(60));
-      expect(
-          identical(allowInteropCaptureThis(addThisXAndArg),
-              wrappedCaptureThisClosure),
-          isTrue);
-
-      ExampleLiteral addXValues(that, ExampleLiteral arg) {
-        return new ExampleLiteral(x: that.x + arg.x);
-      }
-
-      // Check to make sure returning a JavaScript value from a Dart closure
-      // works as expected.
-      expect(
-          foo
-              .callClosureWithArg2(allowInterop(addXValues),
-                  new ExampleLiteral(x: 20), new ExampleLiteral(x: 10))
-              .x,
-          equals(30));
-
-      foo.x = 50;
-      expect(
-          foo
-              .callClosureWithArgAndThis(allowInteropCaptureThis(addXValues),
-                  new ExampleLiteral(x: 10))
-              .x,
-          equals(60));
-    });
-
-    test('call from dart', () {
-      var returnNumArgsFn = returnNumArgs;
-      var returnLastArgFn = returnLastArg;
-      expect(returnNumArgsFn(), equals(0));
-      expect(returnNumArgsFn("a", "b", "c"), equals(3));
-      expect(returnNumArgsFn("a", "b", "c", null, null), equals(5));
-      expect(returnNumArgsFn(1, 2, 3, 4, 5, 6, null), equals(7));
-      expect(returnNumArgsFn(1, 2, 3, 4, 5, 6, 7, 8), equals(8));
-      expect(returnLastArgFn(1, 2, "foo"), equals("foo"));
-      expect(returnLastArgFn(1, 2, 3, 4, 5, 6, "foo"), equals("foo"));
-    });
-  });
-
-  group('chain calls', () {
-    test("method calls", () {
-      // In dart2js make sure we still use interceptors when making nested
-      // calls to objects.
-      var bar = foo.getBar().getFoo().getBar().getFoo().getBar();
-      expect(bar.x, equals("foo"));
-    });
-  });
-
-  group('avoid leaks on dart core', () {
-    test('String', () {
-      var s = confuse('Hello');
-      var stringWrapper = confuse(new StringWrapper('Hello'));
-      // Make sure we don't allow calling JavaScript methods on String.
-      expect(() => s.charCodeAt(0), throws);
-      expect(stringWrapper.charCodeAt(0), equals(72));
-    });
-  });
-
-  group(r'JS$ escaped', () {
-    test('top level', () {
-      expect(JS$class(), equals(42));
-      expect(JS$delete, equals(100));
-    });
-    test('top level double escaped', () {
-      expect(JS$JS$hasJsInName, equals('unicorn'));
-      expect(JS$JS$hasJsInNameMethod(4), equals(20));
-    });
-  });
-
-  group('type check', () {
-    test('js interfaces', () {
-      // Is checks return true for all  JavaScript interfaces.
-      expect(foo is Bar, isTrue);
-      expect(foo is Foob, isTrue);
-
-      expect(selection is List, isTrue);
-
-      // We do know at runtime whether something is a JsArray or not.
-      expect(foo is List, isFalse);
-    });
-
-    test('dart interfaces', () {
-      expect(foo is Function, isFalse);
-      expect(selection is List, isTrue);
-    });
-  });
-  group('html', () {
-    test('return html type', () {
-      expect(getCanvasContext() is CanvasRenderingContext2D, isTrue);
-    });
-    test('js path contains html types', () {
-      expect(propertyOnWindow, equals(42));
-      expect(propertyOnDocument, equals(45));
-    });
-  });
-}
diff --git a/tests/html/js_typed_interop_type1_test.dart b/tests/html/js_typed_interop_type1_test.dart
deleted file mode 100644
index f1663dc..0000000
--- a/tests/html/js_typed_interop_type1_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-import 'dart:html';
-import 'package:js/js.dart';
-import 'package:expect/expect.dart';
-
-@JS()
-class A {
-  external get foo;
-
-  external A(var foo);
-}
-
-class F {
-  final foo;
-
-  F(this.foo);
-}
-
-@NoInline()
-testA(A o) {
-  return o.foo;
-}
-
-@NoInline()
-testF(F o) {
-  return o.foo;
-}
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-function A(foo) {
-  this.foo = foo;
-}
-""");
-}
-
-void expectValueOrTypeError(f(), value) {
-  try {
-    var i = 0;
-    String s = i; // Test for checked mode.
-    Expect.equals(f(), value);
-  } on TypeError catch (error) {
-    Expect.throws(f, (ex) => ex is TypeError);
-  }
-}
-
-main() {
-  _injectJs();
-
-  var a = new A(1);
-  var f = new F(6);
-
-  Expect.equals(testA(a), 1);
-  Expect.equals(testF(f), 6); //# 01: ok
-}
diff --git a/tests/html/js_typed_interop_type2_test.dart b/tests/html/js_typed_interop_type2_test.dart
deleted file mode 100644
index 65713b0..0000000
--- a/tests/html/js_typed_interop_type2_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-import 'dart:html';
-import 'package:js/js.dart';
-import 'package:expect/expect.dart';
-
-@JS()
-@anonymous
-class C {
-  final foo;
-
-  external factory C({foo});
-}
-
-@JS()
-@anonymous
-class D {
-  final foo;
-
-  external factory D({foo});
-}
-
-class F {
-  final foo;
-
-  F(this.foo);
-}
-
-@NoInline()
-testC(C o) {
-  return o.foo;
-}
-
-@NoInline()
-testF(F o) {
-  return o.foo;
-}
-
-void expectValueOrTypeError(f(), value) {
-  try {
-    var i = 0;
-    String s = i; // Test for checked mode.
-  } on TypeError catch (error) {
-    Expect.throws(f, (ex) => ex is TypeError);
-  }
-}
-
-main() {
-  var d = new D(foo: 4);
-  var f = new F(6);
-  Expect.equals(testC(d), 4);
-  Expect.equals(testF(f), 6); //# 01: ok
-}
diff --git a/tests/html/js_typed_interop_type3_test.dart b/tests/html/js_typed_interop_type3_test.dart
deleted file mode 100644
index 77f5ee7..0000000
--- a/tests/html/js_typed_interop_type3_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-import 'dart:html';
-import 'package:js/js.dart';
-import 'package:expect/expect.dart';
-
-@JS()
-class A {
-  external get foo;
-
-  external A(var foo);
-}
-
-@JS()
-@anonymous
-class C {
-  final foo;
-
-  external factory C({foo});
-}
-
-@JS()
-@anonymous
-class D {
-  final foo;
-
-  external factory D({foo});
-}
-
-class F {
-  final foo;
-
-  F(this.foo);
-}
-
-@NoInline()
-testA(A o) {
-  return o.foo;
-}
-
-@NoInline()
-testC(C o) {
-  return o.foo;
-}
-
-@NoInline()
-testD(D o) {
-  return o.foo;
-}
-
-@NoInline()
-testF(F o) {
-  return o.foo;
-}
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-function A(foo) {
-  this.foo = foo;
-}
-""");
-}
-
-void expectValueOrTypeError(f(), value) {
-  try {
-    var i = 0;
-    String s = i; // Test for checked mode.
-    Expect.equals(f(), value);
-  } on TypeError catch (error) {
-    Expect.throws(f, (ex) => ex is TypeError);
-  }
-}
-
-main() {
-  _injectJs();
-
-  var a = new A(1);
-  var d = new D(foo: 4);
-
-  Expect.equals(testA(a), 1); //# 01: ok
-  Expect.equals(testA(a), 1); //# 02: ok
-  Expect.equals(testA(d), 4);
-  Expect.equals(testD(d), 4); //# 02: continued
-}
diff --git a/tests/html/js_typed_interop_type_test.dart b/tests/html/js_typed_interop_type_test.dart
deleted file mode 100644
index 093d934..0000000
--- a/tests/html/js_typed_interop_type_test.dart
+++ /dev/null
@@ -1,159 +0,0 @@
-// 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.
-
-@JS()
-library js_typed_interop_type_test;
-
-import 'dart:html';
-import 'package:js/js.dart';
-import 'package:expect/expect.dart';
-
-@JS()
-class A {
-  var foo;
-
-  external A(var foo);
-}
-
-@JS()
-class B {
-  var foo;
-
-  external B(var foo);
-}
-
-@JS()
-@anonymous
-class C {
-  final foo;
-
-  external factory C({foo});
-}
-
-@JS()
-@anonymous
-class D {
-  final foo;
-
-  external factory D({foo});
-}
-
-class E {
-  final foo;
-
-  E(this.foo);
-}
-
-class F {
-  final foo;
-
-  F(this.foo);
-}
-
-@NoInline()
-testA(A o) {
-  return o.foo;
-}
-
-@NoInline()
-testB(B o) {
-  return o.foo;
-}
-
-@NoInline()
-testC(C o) {
-  return o.foo;
-}
-
-@NoInline()
-testD(D o) {
-  return o.foo;
-}
-
-@NoInline()
-testE(E o) {
-  return o.foo;
-}
-
-@NoInline()
-testF(F o) {
-  return o.foo;
-}
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-function A(foo) {
-  this.foo = foo;
-}
-
-function B(foo) {
-  this.foo = foo;
-}
-""");
-}
-
-void expectValueOrTypeError(f(), value) {
-  try {
-    var i = 0;
-    String s = i; // Test for checked mode.
-    Expect.equals(f(), value);
-  } on TypeError catch (error) {
-    Expect.throws(f, (ex) => ex is TypeError);
-  }
-}
-
-main() {
-  _injectJs();
-
-  var a = new A(1);
-  var b = new B(2);
-  var c = new C(foo: 3);
-  var d = new D(foo: 4);
-  var e = new E(5);
-  var f = new F(6);
-
-  Expect.equals(testA(a), 1);
-  Expect.equals(testA(b), 2);
-  Expect.equals(testA(c), 3);
-  Expect.equals(testA(d), 4);
-  expectValueOrTypeError(() => testA(e), 5);
-  expectValueOrTypeError(() => testA(f), 6);
-
-  Expect.equals(testB(a), 1);
-  Expect.equals(testB(b), 2);
-  Expect.equals(testB(c), 3);
-  Expect.equals(testB(d), 4);
-  expectValueOrTypeError(() => testB(e), 5);
-  expectValueOrTypeError(() => testB(f), 6);
-
-  Expect.equals(testC(a), 1);
-  Expect.equals(testC(b), 2);
-  Expect.equals(testC(c), 3);
-  Expect.equals(testC(d), 4);
-  expectValueOrTypeError(() => testC(e), 5);
-  expectValueOrTypeError(() => testC(f), 6);
-
-  Expect.equals(testD(a), 1);
-  Expect.equals(testD(b), 2);
-  Expect.equals(testD(c), 3);
-  Expect.equals(testD(d), 4);
-  expectValueOrTypeError(() => testD(e), 5);
-  expectValueOrTypeError(() => testD(f), 6);
-
-  expectValueOrTypeError(() => testE(a), 1);
-  expectValueOrTypeError(() => testE(b), 2);
-  expectValueOrTypeError(() => testE(c), 3);
-  expectValueOrTypeError(() => testE(d), 4);
-  Expect.equals(testE(e), 5);
-  expectValueOrTypeError(() => testE(f), 6);
-
-  expectValueOrTypeError(() => testF(a), 1);
-  expectValueOrTypeError(() => testF(b), 2);
-  expectValueOrTypeError(() => testF(c), 3);
-  expectValueOrTypeError(() => testF(d), 4);
-  expectValueOrTypeError(() => testF(e), 5);
-  Expect.equals(testF(f), 6);
-}
diff --git a/tests/html/js_typed_interop_window_property_test.dart b/tests/html/js_typed_interop_window_property_test.dart
deleted file mode 100644
index 0f2bdc6..0000000
--- a/tests/html/js_typed_interop_window_property_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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.
-
-@JS()
-library js_typed_interop_window_property_test;
-
-import 'dart:html';
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'package:unittest/html_individual_config.dart';
-
-// This is a regression test for https://github.com/dart-lang/sdk/issues/24817
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  "use strict";
-
-  window.foo = [function() { return 42; }];
-""");
-}
-
-@JS("window.foo")
-external List<Function> get foo;
-
-main() {
-  _injectJs();
-
-  useHtmlIndividualConfiguration();
-
-  group('bind this', () {
-    test('simple', () {
-      expect(foo[0](), equals(42));
-    });
-  });
-}
diff --git a/tests/html/js_util_test.dart b/tests/html/js_util_test.dart
deleted file mode 100644
index 8938fd9..0000000
--- a/tests/html/js_util_test.dart
+++ /dev/null
@@ -1,347 +0,0 @@
-// Copyright (c) 2013, 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.
-
-@JS()
-library js_native_test;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:typed_data' show ByteBuffer, Int32List;
-import 'dart:indexed_db' show IdbFactory, KeyRange;
-
-import 'package:js/js.dart';
-import 'package:js/js_util.dart' as js_util;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-
-_injectJs() {
-  final script = new ScriptElement();
-  script.type = 'text/javascript';
-  script.innerHtml = r"""
-var x = 42;
-
-var _x = 123;
-
-var myArray = ["value1"];
-
-function returnThis() {
-  return this;
-}
-
-function getTypeOf(o) {
-  return typeof(o);
-}
-
-function Foo(a) {
-  this.a = a;
-}
-
-Foo.b = 38;
-
-Foo.prototype.bar = function() {
-  return this.a;
-}
-Foo.prototype.toString = function() {
-  return "I'm a Foo a=" + this.a;
-}
-
-var container = new Object();
-container.Foo = Foo;
-
-function checkMap(m, key, value) {
-  if (m.hasOwnProperty(key))
-    return m[key] == value;
-  else
-    return false;
-}
-
-""";
-  document.body.append(script);
-}
-
-@JS()
-external bool checkMap(m, String, value);
-
-@JS('JSON.stringify')
-external String stringify(o);
-
-@JS('Node')
-external get JSNodeType;
-
-@JS('Element')
-external get JSElementType;
-
-@JS('Text')
-external get JSTextType;
-
-@JS('HTMLCanvasElement')
-external get JSHtmlCanvasElementType;
-
-@JS()
-class Foo {
-  external Foo(num a);
-
-  external num get a;
-  external num bar();
-}
-
-@JS('Foo')
-external get JSFooType;
-
-@JS()
-@anonymous
-class ExampleTypedLiteral {
-  external factory ExampleTypedLiteral({a, b, JS$_c, JS$class});
-
-  external get a;
-  external get b;
-  external get JS$_c;
-  external set JS$_c(v);
-  // Identical to JS$_c but only accessible within the library.
-  external get _c;
-  external get JS$class;
-  external set JS$class(v);
-}
-
-@JS("Object.prototype.hasOwnProperty")
-external get _hasOwnProperty;
-
-bool hasOwnProperty(o, String name) {
-  return js_util.callMethod(_hasOwnProperty, 'call', [o, name]);
-}
-
-main() {
-  _injectJs();
-  useHtmlIndividualConfiguration();
-
-  group('js_util.jsify()', () {
-    test('convert a List', () {
-      final list = [1, 2, 3, 4, 5, 6, 7, 8];
-      var array = js_util.jsify(list);
-      expect(array is List, isTrue);
-      expect(identical(array, list), isFalse);
-      expect(array.length, equals(list.length));
-      for (var i = 0; i < list.length; i++) {
-        expect(array[i], equals(list[i]));
-      }
-    });
-
-    test('convert an Iterable', () {
-      final set = new Set.from([1, 2, 3, 4, 5, 6, 7, 8]);
-      var array = js_util.jsify(set);
-      expect(array is List, isTrue);
-      expect(array.length, equals(set.length));
-      for (var i = 0; i < array.length; i++) {
-        expect(set.contains(array[i]), isTrue);
-      }
-    });
-
-    test('convert a Map', () {
-      var map = {'a': 1, 'b': 2, 'c': 3};
-      var jsMap = js_util.jsify(map);
-      expect(jsMap is! List, isTrue);
-      for (var key in map.keys) {
-        expect(checkMap(jsMap, key, map[key]), isTrue);
-      }
-    });
-
-    test('deep convert a complex object', () {
-      final object = {
-        'a': [
-          1,
-          [2, 3]
-        ],
-        'b': {'c': 3, 'd': new Foo(42)},
-        'e': null
-      };
-      var jsObject = js_util.jsify(object);
-      expect(js_util.getProperty(jsObject, 'a')[0], equals(object['a'][0]));
-      expect(
-          js_util.getProperty(jsObject, 'a')[1][0], equals(object['a'][1][0]));
-      expect(
-          js_util.getProperty(jsObject, 'a')[1][1], equals(object['a'][1][1]));
-      expect(js_util.getProperty(js_util.getProperty(jsObject, 'b'), 'c'),
-          equals(object['b']['c']));
-      expect(js_util.getProperty(js_util.getProperty(jsObject, 'b'), 'd'),
-          equals(object['b']['d']));
-      expect(
-          js_util.callMethod(
-              js_util.getProperty(js_util.getProperty(jsObject, 'b'), 'd'),
-              'bar', []),
-          equals(42));
-      expect(js_util.getProperty(jsObject, 'e'), isNull);
-    });
-
-    test('throws if object is not a Map or Iterable', () {
-      expect(
-          () => js_util.jsify('a'), throwsA(new isInstanceOf<ArgumentError>()));
-    });
-  });
-
-  group('js_util.newObject', () {
-    test('create', () {
-      expect(identical(js_util.newObject(), js_util.newObject()), isFalse);
-    });
-
-    test('callMethod', () {
-      var o = js_util.newObject();
-      expect(js_util.callMethod(o, 'toString', []), equals('[object Object]'));
-      expect(stringify(o), equals('{}'));
-    });
-
-    test('properties', () {
-      var o = js_util.newObject();
-      expect(js_util.hasProperty(o, 'foo bar'), isFalse);
-      expect(js_util.hasProperty(o, 'toString'), isTrue);
-      expect(hasOwnProperty(o, 'toString'), isFalse);
-      expect(hasOwnProperty(o, 'foo bar'), isFalse);
-      js_util.setProperty(o, 'foo bar', 42);
-      expect(hasOwnProperty(o, 'foo bar'), isTrue);
-      expect(js_util.getProperty(o, 'foo bar'), equals(42));
-      expect(js_util.hasProperty(o, 'foo bar'), isTrue);
-      expect(stringify(o), equals('{"foo bar":42}'));
-    });
-  });
-
-  group('hasProperty', () {
-    test('typed object', () {
-      var f = new Foo(42);
-      expect(js_util.hasProperty(f, 'a'), isTrue);
-      expect(js_util.hasProperty(f, 'toString'), isTrue);
-      js_util.setProperty(f, '__proto__', null);
-      expect(js_util.hasProperty(f, 'toString'), isFalse);
-    });
-    test('typed literal', () {
-      var l =
-          new ExampleTypedLiteral(a: 'x', b: 42, JS$_c: null, JS$class: true);
-      expect(js_util.hasProperty(l, 'a'), isTrue);
-      expect(js_util.hasProperty(l, 'b'), isTrue);
-      expect(js_util.hasProperty(l, '_c'), isTrue);
-      expect(l.JS$_c, isNull);
-      expect(js_util.hasProperty(l, 'class'), isTrue);
-      // JS$_c escapes to _c so the property JS$_c will not exist on the object.
-      expect(js_util.hasProperty(l, r'JS$_c'), isFalse);
-      expect(js_util.hasProperty(l, r'JS$class'), isFalse);
-      expect(l.JS$class, isTrue);
-
-      l = new ExampleTypedLiteral(a: null);
-      expect(js_util.hasProperty(l, 'a'), isTrue);
-      expect(js_util.hasProperty(l, 'b'), isFalse);
-      expect(js_util.hasProperty(l, '_c'), isFalse);
-      expect(js_util.hasProperty(l, 'class'), isFalse);
-
-      l = new ExampleTypedLiteral(JS$_c: 74);
-      expect(js_util.hasProperty(l, '_c'), isTrue);
-      expect(l.JS$_c, equals(74));
-    });
-  });
-
-  group('getProperty', () {
-    test('typed object', () {
-      var f = new Foo(42);
-      expect(js_util.getProperty(f, 'a'), equals(42));
-      expect(js_util.getProperty(f, 'toString') is Function, isTrue);
-      js_util.setProperty(f, '__proto__', null);
-      expect(js_util.getProperty(f, 'toString'), isNull);
-    });
-
-    test('typed literal', () {
-      var l = new ExampleTypedLiteral(a: 'x', b: 42, JS$_c: 7, JS$class: true);
-      expect(js_util.getProperty(l, 'a'), equals('x'));
-      expect(js_util.getProperty(l, 'b'), equals(42));
-      expect(js_util.getProperty(l, '_c'), equals(7));
-      expect(l.JS$_c, equals(7));
-      expect(js_util.getProperty(l, 'class'), isTrue);
-      expect(js_util.getProperty(l, r'JS$_c'), isNull);
-      expect(js_util.getProperty(l, r'JS$class'), isNull);
-    });
-  });
-
-  group('setProperty', () {
-    test('typed object', () {
-      var f = new Foo(42);
-      expect(js_util.getProperty(f, 'a'), equals(42));
-      js_util.setProperty(f, 'a', 100);
-      expect(f.a, equals(100));
-      expect(js_util.getProperty(f, 'a'), equals(100));
-    });
-
-    test('typed literal', () {
-      var l = new ExampleTypedLiteral();
-      js_util.setProperty(l, 'a', 'foo');
-      expect(js_util.getProperty(l, 'a'), equals('foo'));
-      expect(l.a, equals('foo'));
-      js_util.setProperty(l, 'a', l);
-      expect(identical(l.a, l), isTrue);
-      var list = ['arr'];
-      js_util.setProperty(l, 'a', list);
-      expect(identical(l.a, list), isTrue);
-      l.JS$class = 42;
-      expect(l.JS$class, equals(42));
-      js_util.setProperty(l, 'class', 100);
-      expect(l.JS$class, equals(100));
-    });
-  });
-
-  group('callMethod', () {
-    test('html object', () {
-      var canvas = new Element.tag('canvas');
-      expect(
-          identical(canvas.getContext('2d'),
-              js_util.callMethod(canvas, 'getContext', ['2d'])),
-          isTrue);
-    });
-
-    test('typed object', () {
-      var f = new Foo(42);
-      expect(js_util.callMethod(f, 'bar', []), equals(42));
-    });
-  });
-
-  group('instanceof', () {
-    test('html object', () {
-      var canvas = new Element.tag('canvas');
-      expect(js_util.instanceof(canvas, JSNodeType), isTrue);
-      expect(js_util.instanceof(canvas, JSTextType), isFalse);
-      expect(js_util.instanceof(canvas, JSElementType), isTrue);
-      expect(js_util.instanceof(canvas, JSHtmlCanvasElementType), isTrue);
-      var div = new Element.tag('div');
-      expect(js_util.instanceof(div, JSNodeType), isTrue);
-      expect(js_util.instanceof(div, JSTextType), isFalse);
-      expect(js_util.instanceof(div, JSElementType), isTrue);
-      expect(js_util.instanceof(div, JSHtmlCanvasElementType), isFalse);
-
-      var text = new Text('foo');
-      expect(js_util.instanceof(text, JSNodeType), isTrue);
-      expect(js_util.instanceof(text, JSTextType), isTrue);
-      expect(js_util.instanceof(text, JSElementType), isFalse);
-    });
-
-    test('typed object', () {
-      var f = new Foo(42);
-      expect(js_util.instanceof(f, JSFooType), isTrue);
-      expect(js_util.instanceof(f, JSNodeType), isFalse);
-    });
-
-    test('typed literal', () {
-      var l = new ExampleTypedLiteral();
-      expect(js_util.instanceof(l, JSFooType), isFalse);
-    });
-  });
-
-  group('callConstructor', () {
-    test('html object', () {
-      var textNode = js_util.callConstructor(JSTextType, ['foo']);
-      expect(js_util.instanceof(textNode, JSTextType), isTrue);
-      expect(textNode is Text, isTrue);
-      expect(textNode.text, equals('foo'));
-    });
-
-    test('typed object', () {
-      Foo f = js_util.callConstructor(JSFooType, [42]);
-      expect(f.a, equals(42));
-    });
-  });
-}
diff --git a/tests/html/json_helper.dart b/tests/html/json_helper.dart
deleted file mode 100644
index 7d037ae..0000000
--- a/tests/html/json_helper.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS("JSON")
-library json_helper;
-
-import 'package:js/js.dart';
-
-external String stringify(object);
diff --git a/tests/html/keyboard_event_test.dart b/tests/html/keyboard_event_test.dart
deleted file mode 100644
index c3f0c9b..0000000
--- a/tests/html/keyboard_event_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-library KeyboardEventTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-// Test that we are correctly determining keyCode and charCode uniformly across
-// browsers.
-
-main() {
-  useHtmlConfiguration();
-
-  keydownHandlerTest(KeyEvent e) {
-    expect(e.charCode, 0);
-  }
-
-  test('keyboardEvent constructor', () {
-    var event = new KeyboardEvent('keyup');
-  });
-  test('keys', () {
-    var subscription =
-        KeyboardEventStream.onKeyDown(document.body).listen(keydownHandlerTest);
-    var subscription2 = KeyEvent.keyDownEvent
-        .forTarget(document.body)
-        .listen(keydownHandlerTest);
-    var subscription3 =
-        document.body.onKeyDown.listen((e) => print('regular listener'));
-    subscription.cancel();
-    subscription2.cancel();
-    subscription3.cancel();
-  });
-
-  test('constructKeyEvent', () {
-    var stream = KeyEvent.keyPressEvent.forTarget(document.body);
-    var subscription = stream.listen(expectAsync((keyEvent) {
-      expect(keyEvent.charCode, 97);
-      expect(keyEvent.keyCode, 65);
-    }));
-    var k = new KeyEvent('keypress', keyCode: 65, charCode: 97);
-    stream.add(k);
-    subscription.cancel();
-    // Capital "A":
-    stream.add(new KeyEvent('keydown', keyCode: 16, charCode: 0));
-
-    subscription = stream.listen(expectAsync((keyEvent) {
-      expect(keyEvent.charCode, 65);
-      expect(keyEvent.keyCode, 65);
-    }));
-    stream.add(new KeyEvent('keypress', keyCode: 65, charCode: 65));
-    subscription.cancel();
-  });
-
-  test('KeyEventSequence', () {
-    // Press "?" by simulating "shift" and then the key that has "/" and "?" on
-    // it.
-    var streamDown = KeyEvent.keyDownEvent.forTarget(document.body);
-    var streamPress = KeyEvent.keyPressEvent.forTarget(document.body);
-    var streamUp = KeyEvent.keyUpEvent.forTarget(document.body);
-
-    var subscription = streamDown.listen(expectAsync((keyEvent) {
-      expect(keyEvent.keyCode, isIn([16, 191]));
-      expect(keyEvent.charCode, 0);
-    }, count: 2));
-
-    var subscription2 = streamPress.listen(expectAsync((keyEvent) {
-      expect(keyEvent.keyCode, 23);
-      expect(keyEvent.charCode, 63);
-    }));
-
-    var subscription3 = streamUp.listen(expectAsync((keyEvent) {
-      expect(keyEvent.keyCode, isIn([16, 191]));
-      expect(keyEvent.charCode, 0);
-    }, count: 2));
-
-    streamDown.add(new KeyEvent('keydown', keyCode: 16, charCode: 0));
-    streamDown.add(new KeyEvent('keydown', keyCode: 191, charCode: 0));
-
-    streamPress.add(new KeyEvent('keypress', keyCode: 23, charCode: 63));
-
-    streamUp.add(new KeyEvent('keyup', keyCode: 191, charCode: 0));
-    streamUp.add(new KeyEvent('keyup', keyCode: 16, charCode: 0));
-    subscription.cancel();
-    subscription2.cancel();
-    subscription3.cancel();
-  });
-
-  test('KeyEventKeyboardEvent', () {
-    window.onKeyDown.listen(expectAsync((KeyboardEvent event) {
-      expect(event.keyCode, 16);
-    }));
-    var streamDown = KeyEvent.keyDownEvent.forTarget(document.body);
-    streamDown.add(new KeyEvent('keydown', keyCode: 16, charCode: 0));
-  });
-}
diff --git a/tests/html/localstorage_test.dart b/tests/html/localstorage_test.dart
deleted file mode 100644
index 6647436..0000000
--- a/tests/html/localstorage_test.dart
+++ /dev/null
@@ -1,111 +0,0 @@
-// 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.
-
-library LocalStorageTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  void testWithLocalStorage(String name, fn()) {
-    test(name, () {
-      window.localStorage['key1'] = 'val1';
-      window.localStorage['key2'] = 'val2';
-      window.localStorage['key3'] = 'val3';
-
-      try {
-        fn();
-      } finally {
-        window.localStorage.clear();
-      }
-    });
-  }
-
-  testWithLocalStorage('containsValue', () {
-    expect(window.localStorage.containsValue('does not exist'), isFalse);
-    expect(window.localStorage.containsValue('key1'), isFalse);
-    expect(window.localStorage.containsValue('val1'), isTrue);
-    expect(window.localStorage.containsValue('val3'), isTrue);
-  });
-
-  testWithLocalStorage('containsKey', () {
-    expect(window.localStorage.containsKey('does not exist'), isFalse);
-    expect(window.localStorage.containsKey('val1'), isFalse);
-    expect(window.localStorage.containsKey('key1'), isTrue);
-    expect(window.localStorage.containsKey('key3'), isTrue);
-  });
-
-  testWithLocalStorage('[]', () {
-    expect(window.localStorage['does not exist'], isNull);
-    expect(window.localStorage['key1'], 'val1');
-    expect(window.localStorage['key3'], 'val3');
-  });
-
-  testWithLocalStorage('[]=', () {
-    expect(window.localStorage['key4'], isNull);
-    window.localStorage['key4'] = 'val4';
-    expect(window.localStorage['key4'], 'val4');
-
-    expect(window.localStorage['key3'], 'val3');
-    window.localStorage['key3'] = 'val3-new';
-    expect(window.localStorage['key3'], 'val3-new');
-  });
-
-  testWithLocalStorage('putIfAbsent', () {
-    expect(window.localStorage['key4'], isNull);
-    expect(window.localStorage.putIfAbsent('key4', () => 'val4'), 'val4');
-    expect(window.localStorage['key4'], 'val4');
-
-    expect(window.localStorage['key3'], 'val3');
-    expect(
-        window.localStorage.putIfAbsent('key3',
-            () => expect(false, isTrue, reason: 'should not be called')),
-        'val3');
-    expect(window.localStorage['key3'], 'val3');
-  });
-
-  testWithLocalStorage('remove', () {
-    expect(window.localStorage.remove('does not exist'), isNull);
-    expect(window.localStorage.remove('key3'), 'val3');
-    expect(window.localStorage, equals({'key1': 'val1', 'key2': 'val2'}));
-  });
-
-  testWithLocalStorage('clear', () {
-    window.localStorage.clear();
-    expect(window.localStorage, equals({}));
-  });
-
-  testWithLocalStorage('forEach', () {
-    Map<String, String> results = {};
-    window.localStorage.forEach((k, v) {
-      results[k] = v;
-    });
-    expect(results, equals({'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}));
-  });
-
-  testWithLocalStorage('getKeys', () {
-    expect(window.localStorage.keys.toList(),
-        unorderedEquals(['key1', 'key2', 'key3']));
-  });
-
-  testWithLocalStorage('getVals', () {
-    expect(window.localStorage.values.toList(),
-        unorderedEquals(['val1', 'val2', 'val3']));
-  });
-
-  testWithLocalStorage('length', () {
-    expect(window.localStorage.length, 3);
-    window.localStorage.clear();
-    expect(window.localStorage.length, 0);
-  });
-
-  testWithLocalStorage('isEmpty', () {
-    expect(window.localStorage.isEmpty, isFalse);
-    window.localStorage.clear();
-    expect(window.localStorage.isEmpty, isTrue);
-  });
-}
diff --git a/tests/html/location_test.dart b/tests/html/location_test.dart
deleted file mode 100644
index c3c4029..0000000
--- a/tests/html/location_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-library LocationTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isLocation = predicate((x) => x is Location, 'is a Location');
-
-  test('location hash', () {
-    final location = window.location;
-    expect(location, isLocation);
-
-    // The only navigation we dare try is hash.
-    location.hash = 'hello';
-    var h = location.hash;
-    expect(h, '#hello');
-  });
-
-  test('location.origin', () {
-    var origin = window.location.origin;
-
-    // We build up the origin from Uri, then make sure that it matches.
-    var uri = Uri.parse(window.location.href);
-    var reconstructedOrigin = '${uri.scheme}://${uri.host}';
-    if (uri.port != 0) {
-      reconstructedOrigin = '$reconstructedOrigin:${uri.port}';
-    }
-
-    expect(origin, reconstructedOrigin);
-  });
-}
diff --git a/tests/html/media_stream_test.dart b/tests/html/media_stream_test.dart
deleted file mode 100644
index aa2d93ab..0000000
--- a/tests/html/media_stream_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011, 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 media_stream_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported_media', () {
-    test('supported', () {
-      expect(MediaStream.supported, true);
-    });
-  });
-
-  group('supported_MediaStreamEvent', () {
-    test('supported', () {
-      expect(MediaStreamEvent.supported, true);
-    });
-  });
-
-  group('supported_MediaStreamTrackEvent', () {
-    test('supported', () {
-      expect(MediaStreamTrackEvent.supported, true);
-    });
-  });
-
-  group('constructors', () {
-    test('MediaStreamEvent', () {
-      var expectation = MediaStreamEvent.supported ? returnsNormally : throws;
-      expect(() {
-        var event = new Event.eventType('MediaStreamEvent', 'media');
-        expect(event is MediaStreamEvent, isTrue);
-      }, expectation);
-    });
-
-    test('MediaStreamTrackEvent', () {
-      var expectation =
-          MediaStreamTrackEvent.supported ? returnsNormally : throws;
-      expect(() {
-        var event = new Event.eventType('MediaStreamTrackEvent', 'media');
-        expect(event is MediaStreamTrackEvent, isTrue);
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/html/mediasource_test.dart b/tests/html/mediasource_test.dart
deleted file mode 100644
index 7db8af8..0000000
--- a/tests/html/mediasource_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-library mediasource_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-import 'dart:async';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  var isMediaSource = predicate((x) => x is MediaSource, 'is a MediaSource');
-
-  group('supported', () {
-    test('supported', () {
-      expect(MediaSource.supported, true);
-    });
-  });
-
-  // TODO(alanknight): Actually exercise this, right now the tests are trivial.
-  group('functional', () {
-    var source;
-    if (MediaSource.supported) {
-      source = new MediaSource();
-    }
-
-    test('constructorTest', () {
-      if (MediaSource.supported) {
-        expect(source, isNotNull);
-        expect(source, isMediaSource);
-      }
-    });
-
-    test('media types', () {
-      if (MediaSource.supported) {
-        expect(MediaSource.isTypeSupported('text/html'), false);
-        expect(MediaSource.isTypeSupported('video/webm;codecs="vp8,vorbis"'),
-            true);
-      }
-    });
-  });
-}
diff --git a/tests/html/messageevent_test.dart b/tests/html/messageevent_test.dart
deleted file mode 100644
index f1e5119..0000000
--- a/tests/html/messageevent_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-library SerializedScriptValueTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('new MessageEvent', () {
-    final event = new MessageEvent('type',
-        cancelable: true,
-        data: 'data',
-        origin: 'origin',
-        lastEventId: 'lastEventId');
-
-    expect(event.type, equals('type'));
-    expect(event.bubbles, isFalse);
-    expect(event.cancelable, isTrue);
-    expect(event.data, equals('data'));
-    expect(event.origin, equals('origin'));
-    // IE allows setting this but just ignores it.
-    // expect(event.lastEventId, equals('lastEventId'));
-    expect(event.source, window);
-    // TODO(antonm): accessing ports is not supported yet.
-  });
-}
diff --git a/tests/html/mirrors_js_typed_interop_test.dart b/tests/html/mirrors_js_typed_interop_test.dart
deleted file mode 100644
index f4b30a6..0000000
--- a/tests/html/mirrors_js_typed_interop_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@JS()
-library tests.html.mirrors_js_typed_interop_test;
-
-import 'dart:mirrors';
-import 'dart:html';
-
-import 'package:js/js.dart';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-_injectJs() {
-  document.body.append(new ScriptElement()
-    ..type = 'text/javascript'
-    ..innerHtml = r"""
-  window.foo = {
-    x: 3,
-    z: 100,
-    multiplyBy2: function(arg) { return arg * 2; },
-  };
-""");
-}
-
-@JS()
-external Foo get foo;
-
-@JS()
-class Foo {
-  external int get x;
-  external set x(v);
-  external num multiplyBy2(num y);
-}
-
-main() {
-  _injectJs();
-
-  useHtmlConfiguration();
-
-  test('dynamic dispatch', () {
-    var f = foo;
-    expect(f.x, 3);
-    // JsInterop methods are not accessible using reflection.
-    expect(() => reflect(f).setField(#x, 123), throws);
-    expect(f.x, 3);
-  });
-}
diff --git a/tests/html/mouse_event_test.dart b/tests/html/mouse_event_test.dart
deleted file mode 100644
index bf24c2f..0000000
--- a/tests/html/mouse_event_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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 mouse_event_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('relatedTarget', () {
-    var event = new MouseEvent('mouseout');
-    expect(event.relatedTarget, isNull);
-
-    event = new MouseEvent('mouseout', relatedTarget: document.body);
-    expect(event.relatedTarget, document.body);
-  });
-}
diff --git a/tests/html/mutationobserver_test.dart b/tests/html/mutationobserver_test.dart
deleted file mode 100644
index 7ef574a..0000000
--- a/tests/html/mutationobserver_test.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright (c) 2011, 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 mutationobserver_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-// Due to https://code.google.com/p/chromium/issues/detail?id=329103
-// mutationObservers sometimes do not fire if the node being observed is GCed
-// so we keep around references to all nodes we have created mutation
-// observers for.
-var keepAlive = [];
-
-/**
- * Test suite for Mutation Observers. This is just a small set of sanity
- * checks, not a complete test suite.
- */
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(MutationObserver.supported, true);
-    });
-  });
-
-  var expectation = MutationObserver.supported ? returnsNormally : throws;
-
-  group('childList', () {
-    mutationCallback(count, expectation) {
-      var done = false;
-      var nodes = [];
-
-      callback(mutations, observer) {
-        for (MutationRecord mutation in mutations) {
-          for (Node node in mutation.addedNodes) {
-            nodes.add(node);
-          }
-        }
-        if (nodes.length >= count) {
-          done = true;
-          expect(nodes.length, count);
-          expect(nodes, expectation);
-        }
-      }
-
-      // If it's not supported, don't block waiting for it.
-      if (!MutationObserver.supported) {
-        return () => done;
-      }
-
-      return expectAsyncUntil(callback, () => done);
-    }
-
-    test('empty options is syntax error', () {
-      expect(() {
-        var mutationObserver = new MutationObserver((mutations, observer) {
-          expect(false, isTrue, reason: 'Should not be reached');
-        });
-        expect(() {
-          mutationObserver.observe(document, {});
-        }, throws);
-      }, expectation);
-    });
-
-    test('direct-parallel options-named', () {
-      expect(() {
-        var container = new DivElement();
-        keepAlive.add(container);
-        var div1 = new DivElement();
-        var div2 = new DivElement();
-        var mutationObserver = new MutationObserver(
-            mutationCallback(2, orderedEquals([div1, div2])));
-        mutationObserver.observe(container, childList: true);
-
-        container.append(div1);
-        container.append(div2);
-      }, expectation);
-    });
-
-    test('direct-nested options-named', () {
-      expect(() {
-        var container = new DivElement();
-        keepAlive.add(container);
-        var div1 = new DivElement();
-        var div2 = new DivElement();
-        var mutationObserver =
-            new MutationObserver(mutationCallback(1, orderedEquals([div1])));
-        mutationObserver.observe(container, childList: true);
-
-        container.append(div1);
-        div1.append(div2);
-      }, expectation);
-    });
-
-    test('subtree options-named', () {
-      expect(() {
-        var container = new DivElement();
-        keepAlive.add(container);
-        var div1 = new DivElement();
-        var div2 = new DivElement();
-        var mutationObserver = new MutationObserver(
-            mutationCallback(2, orderedEquals([div1, div2])));
-        mutationObserver.observe(container, childList: true, subtree: true);
-
-        container.append(div1);
-        div1.append(div2);
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/html/native_gc_test.dart b/tests/html/native_gc_test.dart
deleted file mode 100644
index d13ea36..0000000
--- a/tests/html/native_gc_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-library NativeGCTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-var testEvent = new EventStreamProvider<Event>('test');
-
-main() {
-  useHtmlConfiguration();
-
-  test('EventListener', () {
-    final int N = 1000000;
-    final int M = 1000;
-
-    var div;
-    for (int i = 0; i < M; ++i) {
-      // This memory should be freed when the listener below is
-      // collected.
-      List l = new List(N);
-
-      // Record the iteration number.
-      l[N - 1] = i;
-
-      div = new Element.tag('div');
-      testEvent.forTarget(div).listen((_) {
-        // Only the final iteration's listener should be invoked.
-        // Note: the reference to l keeps the entire list alive.
-        expect(l[N - 1], M - 1);
-      });
-    }
-
-    final event = new Event('test');
-    div.dispatchEvent(event);
-  });
-
-  test('WindowEventListener', () {
-    String message = 'WindowEventListenerTestPingMessage';
-
-    Element testDiv = new DivElement();
-    testDiv.id = '#TestDiv';
-    document.body.append(testDiv);
-    window.onMessage.listen((e) {
-      if (e.data == message) testDiv.click();
-    });
-
-    for (int i = 0; i < 100; ++i) {
-      triggerMajorGC();
-    }
-
-    testDiv.onClick.listen(expectAsync((e) {}));
-    window.postMessage(message, '*');
-  });
-}
-
-void triggerMajorGC() {
-  List list = new List(1000000);
-  Element div = new DivElement();
-  div.onClick.listen((e) => print(list[0]));
-}
diff --git a/tests/html/navigator_test.dart b/tests/html/navigator_test.dart
deleted file mode 100644
index df858d5..0000000
--- a/tests/html/navigator_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-library NavigatorTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('language never returns null', () {
-    expect(window.navigator.language, isNotNull);
-  });
-}
diff --git a/tests/html/node_test.dart b/tests/html/node_test.dart
deleted file mode 100644
index 5b62f63..0000000
--- a/tests/html/node_test.dart
+++ /dev/null
@@ -1,345 +0,0 @@
-// Copyright (c) 2011, 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 NodeTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:svg' as svg;
-
-Node makeNode() => new Element.tag('div');
-Node makeNodeWithChildren() =>
-    new Element.html("<div>Foo<br/><!--baz--></div>");
-
-void testUnsupported(String name, void f()) {
-  test(name, () {
-    expect(f, throwsUnsupportedError);
-  });
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  var isText = predicate((x) => x is Text, 'is a Text');
-  var isComment = predicate((x) => x is Comment, 'is a Comment');
-  var isBRElement = predicate((x) => x is BRElement, 'is a BRElement');
-  var isHRElement = predicate((x) => x is HRElement, 'is a HRElement');
-  var isNodeList = predicate((x) => x is List<Node>, 'is a List<Node>');
-  var isImageElement =
-      predicate((x) => x is ImageElement, 'is an ImageElement');
-  var isInputElement =
-      predicate((x) => x is InputElement, 'is an InputElement');
-
-  group('functional', () {
-    test('toString', () {
-      final nodes = makeNodeWithChildren();
-      // TODO(efortuna): Update this test when you have actual toString methods
-      // for the items in the node List as well.
-      expect(nodes.nodes.toString(), "[Foo, br, baz]");
-      final node = makeNode();
-      expect(node.nodes.toString(), '[]');
-    });
-
-    test('replaceWith', () {
-      final node = makeNodeWithChildren();
-      final subnode = node.nodes[1];
-      final out = subnode.replaceWith(new Text('Bar'));
-      expect(out, equals(subnode), reason: '#replaceWith should be chainable');
-      expect(node.nodes.length, 3);
-      expect(node.nodes[0], isText);
-      expect(node.nodes[0].text, 'Foo');
-      expect(node.nodes[1], isText);
-      expect(node.nodes[1].text, 'Bar');
-      expect(node.nodes[2], isComment);
-    });
-
-    test('append', () {
-      var node = makeNode();
-      node.append(new Element.tag('hr'));
-      expect(node.nodes.last, isHRElement);
-    });
-
-    test('remove', () {
-      final node = makeNodeWithChildren();
-      final subnode = node.nodes[1];
-      subnode.remove();
-      expect(node.nodes.length, 2);
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isComment);
-    });
-
-    test('contains', () {
-      final Node node =
-          new Element.html("<div>Foo<span><div>Bar<div></span></div>");
-      // IE10 returns false for contains of nodes.
-      //expect(node.contains(node.nodes.first), isTrue);
-      expect(node.contains(node.nodes[1].nodes.first), isTrue);
-      expect(node.contains(new Text('Foo')), isFalse);
-    });
-
-    test('insertAllBefore', () {
-      var node = makeNodeWithChildren();
-      var b = new DivElement();
-      b.nodes.addAll([new HRElement(), new ImageElement(), new InputElement()]);
-      node.insertAllBefore(b.nodes, node.nodes[1]);
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isHRElement);
-      expect(node.nodes[2], isImageElement);
-      expect(node.nodes[3], isInputElement);
-      expect(node.nodes[4], isBRElement);
-      expect(node.nodes[5], isComment);
-
-      var nodes = [new HRElement(), new ImageElement(), new InputElement()];
-      node.insertAllBefore(nodes, node.nodes[5]);
-
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isHRElement);
-      expect(node.nodes[2], isImageElement);
-      expect(node.nodes[3], isInputElement);
-      expect(node.nodes[4], isBRElement);
-      expect(node.nodes[5], isHRElement);
-      expect(node.nodes[6], isImageElement);
-      expect(node.nodes[7], isInputElement);
-      expect(node.nodes[8], isComment);
-    });
-  });
-
-  group('nodes', () {
-    test('is a NodeList', () {
-      expect(makeNodeWithChildren().nodes, isNodeList);
-    });
-
-    test('indexer', () {
-      var node = new DivElement();
-      expect(() {
-        node.nodes[0];
-      }, throwsRangeError);
-
-      expect(() {
-        node.nodes[-1];
-      }, throwsRangeError);
-    });
-
-    test('first', () {
-      var node = makeNodeWithChildren();
-      expect(node.nodes.first, isText);
-
-      node = new DivElement();
-      expect(() {
-        node = node.nodes.first;
-      }, throwsStateError);
-    });
-
-    test('last', () {
-      var node = makeNodeWithChildren();
-      expect(node.nodes.last, isComment);
-    });
-
-    test('forEach', () {
-      var nodes = [];
-      var node = makeNodeWithChildren();
-      node.nodes.forEach((n) => nodes.add(n));
-      expect(nodes[0], isText);
-      expect(nodes[1], isBRElement);
-      expect(nodes[2], isComment);
-    });
-
-    test('where', () {
-      var filtered =
-          makeNodeWithChildren().nodes.where((n) => n is BRElement).toList();
-      expect(filtered.length, 1);
-      expect(filtered[0], isBRElement);
-      expect(filtered, isNodeList);
-    });
-
-    test('every', () {
-      var node = makeNodeWithChildren();
-      expect(node.nodes.every((n) => n is Node), isTrue);
-      expect(node.nodes.every((n) => n is Comment), isFalse);
-    });
-
-    test('any', () {
-      var node = makeNodeWithChildren();
-      expect(node.nodes.any((n) => n is Comment), isTrue);
-      expect(node.nodes.any((n) => n is svg.SvgElement), isFalse);
-    });
-
-    test('isEmpty', () {
-      expect(makeNode().nodes.isEmpty, isTrue);
-      expect(makeNodeWithChildren().nodes.isEmpty, isFalse);
-    });
-
-    test('length', () {
-      expect(makeNode().nodes.length, 0);
-      expect(makeNodeWithChildren().nodes.length, 3);
-    });
-
-    test('[]', () {
-      var node = makeNodeWithChildren();
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isBRElement);
-      expect(node.nodes[2], isComment);
-    });
-
-    test('[]=', () {
-      var node = makeNodeWithChildren();
-      node.nodes[1] = new Element.tag('hr');
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isHRElement);
-      expect(node.nodes[2], isComment);
-    });
-
-    test('add', () {
-      var node = makeNode();
-      node.nodes.add(new Element.tag('hr'));
-      expect(node.nodes.last, isHRElement);
-    });
-
-    test('iterator', () {
-      var nodes = [];
-      var node = makeNodeWithChildren();
-      for (var subnode in node.nodes) {
-        nodes.add(subnode);
-      }
-      expect(nodes[0], isText);
-      expect(nodes[1], isBRElement);
-      expect(nodes[2], isComment);
-    });
-
-    test('addAll', () {
-      var node = makeNodeWithChildren();
-      node.nodes.addAll([
-        new Element.tag('hr'),
-        new Element.tag('img'),
-        new Element.tag('input')
-      ]);
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isBRElement);
-      expect(node.nodes[2], isComment);
-      expect(node.nodes[3], isHRElement);
-      expect(node.nodes[4], isImageElement);
-      expect(node.nodes[5], isInputElement);
-
-      var a = makeNodeWithChildren();
-      var b = makeNodeWithChildren();
-      var childrenLength = a.children.length + b.children.length;
-      var nodesLength = a.nodes.length + b.nodes.length;
-
-      a.children.addAll(b.children);
-      expect(b.children.length, 0);
-      expect(a.children.length, childrenLength);
-
-      b.nodes.addAll(a.children);
-      expect(a.children.length, 0);
-      expect(b.children.length, childrenLength);
-
-      a.nodes.addAll(b.nodes);
-      expect(b.nodes.length, 0);
-      expect(a.nodes.length, nodesLength);
-    });
-
-    test('insert', () {
-      var node = new DivElement();
-      node.nodes.insert(0, new BRElement());
-      expect(node.nodes[0], isBRElement);
-      node.nodes.insert(0, new HRElement());
-      expect(node.nodes[0], isHRElement);
-      node.nodes.insert(1, new ImageElement());
-      expect(node.nodes[1], isImageElement);
-      node.nodes.insert(node.nodes.length, new InputElement());
-      expect(node.nodes.last, isInputElement);
-    });
-
-    test('clear', () {
-      var node = makeNodeWithChildren();
-      node.nodes.clear();
-      expect(node.nodes, []);
-    });
-
-    test('removeLast', () {
-      var node = makeNodeWithChildren();
-      expect(node.nodes.removeLast(), isComment);
-      expect(node.nodes.length, 2);
-      expect(node.nodes.removeLast(), isBRElement);
-      expect(node.nodes.length, 1);
-    });
-
-    test('getRange', () {
-      var items = makeNodeWithChildren().nodes.getRange(0, 1);
-      expect(items.length, 1);
-      expect(items.first, isText);
-    });
-
-    test('sublist', () {
-      var node = makeNodeWithChildren();
-      expect(node.nodes.sublist(1, 3), isNodeList);
-    });
-
-    test('insertAll', () {
-      var node = makeNodeWithChildren();
-      var b = new DivElement();
-      b.nodes.addAll([new HRElement(), new ImageElement(), new InputElement()]);
-      node.nodes.insertAll(1, b.nodes);
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isHRElement);
-      expect(node.nodes[2], isImageElement);
-      expect(node.nodes[3], isInputElement);
-      expect(node.nodes[4], isBRElement);
-      expect(node.nodes[5], isComment);
-
-      var nodes = [new HRElement(), new ImageElement(), new InputElement()];
-      node.nodes.insertAll(5, nodes);
-
-      expect(node.nodes[0], isText);
-      expect(node.nodes[1], isHRElement);
-      expect(node.nodes[2], isImageElement);
-      expect(node.nodes[3], isInputElement);
-      expect(node.nodes[4], isBRElement);
-      expect(node.nodes[5], isHRElement);
-      expect(node.nodes[6], isImageElement);
-      expect(node.nodes[7], isInputElement);
-      expect(node.nodes[8], isComment);
-
-      var d = new DivElement();
-      var ns = d.nodes;
-      // `insertAll` should work when positioned at end.
-      ns.insertAll(ns.length, [new HRElement()]);
-      expect(ns.length, 1);
-      expect(ns[0], isHRElement);
-    });
-
-    testUnsupported('removeRange', () {
-      makeNodeWithChildren().nodes.removeRange(0, 1);
-    });
-
-    testUnsupported('replaceRange', () {
-      makeNodeWithChildren().nodes.replaceRange(0, 1, [new InputElement()]);
-    });
-
-    testUnsupported('fillRange', () {
-      makeNodeWithChildren().nodes.fillRange(0, 1, null);
-    });
-
-    testUnsupported('setAll', () {
-      makeNodeWithChildren().nodes.setAll(0, [new InputElement()]);
-    });
-  });
-
-  group('iterating', () {
-    test('NodeIterator', () {
-      var root = makeNodeWithChildren();
-      var nodeIterator = new NodeIterator(root, NodeFilter.SHOW_COMMENT);
-      expect(nodeIterator.nextNode(), isComment);
-      expect(nodeIterator.nextNode(), isNull);
-    });
-
-    test('TreeWalker', () {
-      var root = makeNodeWithChildren();
-      var treeWalker = new TreeWalker(root, NodeFilter.SHOW_COMMENT);
-      expect(treeWalker.nextNode(), isComment);
-      expect(treeWalker.nextNode(), isNull);
-    });
-  });
-}
diff --git a/tests/html/node_validator_important_if_you_suppress_make_the_bug_critical_test.dart b/tests/html/node_validator_important_if_you_suppress_make_the_bug_critical_test.dart
deleted file mode 100644
index f5c4fdf7..0000000
--- a/tests/html/node_validator_important_if_you_suppress_make_the_bug_critical_test.dart
+++ /dev/null
@@ -1,484 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// This tests HTML validation and sanitization, which is very important
-/// for prevent XSS or other attacks. If you suppress this, or parts of it
-/// please make it a critical bug and bring it to the attention of the
-/// dart:html maintainers.
-library node_validator_test;
-
-import 'dart:html';
-import 'dart:svg' as svg;
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'utils.dart';
-
-void validateHtml(String html, String reference, NodeValidator validator) {
-  var a = document.body.createFragment(html, validator: validator);
-  var b = document.body
-      .createFragment(reference, treeSanitizer: NodeTreeSanitizer.trusted);
-
-  // Prevent a false pass when both the html and the reference both get entirely
-  // deleted, which is technically a match, but unlikely to be what we meant.
-  if (reference != '') {
-    expect(b.childNodes.length > 0, isTrue);
-  }
-  validateNodeTree(a, b);
-}
-
-class RecordingUriValidator implements UriPolicy {
-  final List<String> calls = <String>[];
-
-  bool allowsUri(String uri) {
-    calls.add('$uri');
-    return false;
-  }
-
-  void reset() {
-    calls.clear();
-  }
-}
-
-void testHtml(String name, NodeValidator validator, String html,
-    [String reference]) {
-  test(name, () {
-    if (reference == null) {
-      reference = html;
-    }
-
-    validateHtml(html, reference, validator);
-  });
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('DOM_sanitization', () {
-    var validator = new NodeValidatorBuilder.common();
-
-    testHtml('allows simple constructs', validator,
-        '<div class="baz">something</div>');
-
-    testHtml('blocks unknown attributes', validator,
-        '<div foo="baz">something</div>', '<div>something</div>');
-
-    testHtml('blocks custom element', validator,
-        '<x-my-element>something</x-my-element>', '');
-
-    testHtml('blocks custom is element', validator,
-        '<div is="x-my-element">something</div>', '');
-
-    testHtml(
-        'blocks body elements', validator, '<body background="s"></body>', '');
-
-    testHtml(
-        'allows select elements',
-        validator,
-        '<select>'
-        '<option>a</option>'
-        '</select>');
-
-    testHtml('blocks sequential script elements', validator,
-        '<div><script></script><script></script></div>', '<div></div>');
-
-    testHtml('blocks inline styles', validator,
-        '<div style="background: red"></div>', '<div></div>');
-
-    testHtml('blocks namespaced attributes', validator,
-        '<div ns:foo="foo"></div>', '<div></div>');
-
-    testHtml('blocks namespaced common attributes', validator,
-        '<div ns:class="foo"></div>', '<div></div>');
-
-    testHtml('blocks namespaced common elements', validator,
-        '<ns:div></ns:div>', '');
-
-    testHtml('allows CDATA sections', validator,
-        '<span>![CDATA[ some text ]]></span>');
-
-    testHtml('backquotes not removed', validator,
-        '<img src="dice.png" alt="``onload=xss()" />');
-
-    testHtml('0x3000 not removed', validator,
-        '<a href="&#x3000;javascript:alert(1)">CLICKME</a>');
-
-    test('sanitizes template contents', () {
-      if (!TemplateElement.supported) return;
-
-      var html = '<template>'
-          '<div></div>'
-          '<script></script>'
-          '<img src="http://example.com/foo"/>'
-          '</template>';
-
-      var fragment = document.body.createFragment(html, validator: validator);
-      var template = fragment.nodes.single;
-
-      var expectedContent = document.body.createFragment('<div></div>'
-          '<img/>');
-
-      validateNodeTree(template.content, expectedContent);
-    });
-
-    test("appendHtml is sanitized", () {
-      var html = '<body background="s"></body><div></div>';
-      document.body.appendHtml('<div id="stuff"></div>');
-      var stuff = document.querySelector("#stuff");
-      stuff.appendHtml(html);
-      expect(stuff.childNodes.length, 1);
-      stuff.remove();
-    });
-
-    test("documentFragment.appendHtml is sanitized", () {
-      var html = '<div id="things></div>';
-      var fragment = new DocumentFragment.html(html);
-      fragment.appendHtml('<div id="bad"><script></script></div>');
-      expect(fragment.childNodes.length, 1);
-      expect(fragment.childNodes[0].id, "bad");
-      expect(fragment.childNodes[0].childNodes.length, 0);
-    });
-
-    testHtml(
-        "sanitizes embed",
-        validator,
-        "<div><embed src='' type='application/x-shockwave-flash'></embed></div>",
-        "<div></div>");
-  });
-
-  group('URI_sanitization', () {
-    var recorder = new RecordingUriValidator();
-    var validator = new NodeValidatorBuilder()..allowHtml5(uriPolicy: recorder);
-
-    checkUriPolicyCalls(String name, String html, String reference,
-        List<String> expectedCalls) {
-      test(name, () {
-        recorder.reset();
-
-        validateHtml(html, reference, validator);
-        expect(recorder.calls, expectedCalls);
-      });
-    }
-
-    checkUriPolicyCalls('a::href', '<a href="s"></a>', '<a></a>', ['s']);
-
-    checkUriPolicyCalls(
-        'area::href', '<area href="s"></area>', '<area></area>', ['s']);
-
-    checkUriPolicyCalls(
-        'blockquote::cite',
-        '<blockquote cite="s"></blockquote>',
-        '<blockquote></blockquote>',
-        ['s']);
-    checkUriPolicyCalls(
-        'command::icon', '<command icon="s"/>', '<command/>', ['s']);
-    checkUriPolicyCalls('img::src', '<img src="s"/>', '<img/>', ['s']);
-    checkUriPolicyCalls('input::src', '<input src="s"/>', '<input/>', ['s']);
-    checkUriPolicyCalls(
-        'ins::cite', '<ins cite="s"></ins>', '<ins></ins>', ['s']);
-    checkUriPolicyCalls('q::cite', '<q cite="s"></q>', '<q></q>', ['s']);
-    checkUriPolicyCalls(
-        'video::poster', '<video poster="s"/>', '<video/>', ['s']);
-  });
-
-  group('allowNavigation', () {
-    var validator = new NodeValidatorBuilder()..allowNavigation();
-
-    testHtml('allows anchor tags', validator, '<a href="#foo">foo</a>');
-
-    testHtml('allows form elements', validator,
-        '<form method="post" action="/foo"></form>');
-
-    testHtml('disallows script navigation', validator,
-        '<a href="javascript:foo = 1">foo</a>', '<a>foo</a>');
-
-    testHtml('disallows cross-site navigation', validator,
-        '<a href="http://example.com">example.com</a>', '<a>example.com</a>');
-
-    testHtml('blocks other elements', validator,
-        '<a href="#foo"><b>foo</b></a>', '<a href="#foo"></a>');
-
-    testHtml('blocks tag extension', validator, '<a is="x-foo"></a>', '');
-  });
-
-  group('allowImages', () {
-    var validator = new NodeValidatorBuilder()..allowImages();
-
-    testHtml('allows images', validator,
-        '<img src="/foo.jpg" alt="something" width="100" height="100"/>');
-
-    testHtml('blocks onerror', validator,
-        '<img src="/foo.jpg" onerror="something"/>', '<img src="/foo.jpg"/>');
-
-    testHtml('enforces same-origin', validator,
-        '<img src="http://example.com/foo.jpg"/>', '<img/>');
-  });
-
-  group('allowCustomElement', () {
-    var validator = new NodeValidatorBuilder()
-      ..allowCustomElement('x-foo', attributes: ['bar'], uriAttributes: ['baz'])
-      ..allowHtml5();
-
-    testHtml('allows custom elements', validator,
-        '<x-foo bar="something" baz="/foo.jpg"></x-foo>');
-
-    testHtml('validates custom tag URIs', validator,
-        '<x-foo baz="http://example.com/foo.jpg"></x-foo>', '<x-foo></x-foo>');
-
-    testHtml('blocks type extensions', validator, '<div is="x-foo"></div>', '');
-
-    testHtml('blocks tags on non-matching elements', validator,
-        '<div bar="foo"></div>', '<div></div>');
-  });
-
-  group('identify Uri attributes listed as attributes', () {
-    var validator = new NodeValidatorBuilder()
-      ..allowElement('a', attributes: ['href']);
-
-    testHtml(
-        'reject different-origin link',
-        validator,
-        '<a href="http://www.google.com/foo">Google-Foo</a>',
-        '<a>Google-Foo</a>');
-  });
-
-  group('allowTagExtension', () {
-    var validator = new NodeValidatorBuilder()
-      ..allowTagExtension('x-foo', 'div',
-          attributes: ['bar'], uriAttributes: ['baz'])
-      ..allowHtml5();
-
-    testHtml('allows tag extensions', validator,
-        '<div is="x-foo" bar="something" baz="/foo.jpg"></div>');
-
-    testHtml('blocks custom elements', validator, '<x-foo></x-foo>', '');
-
-    testHtml(
-        'validates tag extension URIs',
-        validator,
-        '<div is="x-foo" baz="http://example.com/foo.jpg"></div>',
-        '<div is="x-foo"></div>');
-
-    testHtml('blocks tags on non-matching elements', validator,
-        '<div bar="foo"></div>', '<div></div>');
-
-    testHtml('blocks non-matching tags', validator,
-        '<span is="x-foo">something</span>', '');
-
-    validator = new NodeValidatorBuilder()
-      ..allowTagExtension('x-foo', 'div',
-          attributes: ['bar'], uriAttributes: ['baz'])
-      ..allowTagExtension('x-else', 'div');
-
-    testHtml('blocks tags on non-matching custom elements', validator,
-        '<div bar="foo" is="x-else"></div>', '<div is="x-else"></div>');
-  });
-
-  group('allowTemplating', () {
-    var validator = new NodeValidatorBuilder()
-      ..allowTemplating()
-      ..allowHtml5();
-
-    testHtml(
-        'allows templates', validator, '<template bind="{{a}}"></template>');
-
-    testHtml('allows template attributes', validator,
-        '<template bind="{{a}}" ref="foo" repeat="{{}}" if="{{}}" syntax="foo"></template>');
-
-    testHtml('allows template attribute', validator,
-        '<div template repeat="{{}}"></div>');
-
-    testHtml('blocks illegal template attribute', validator,
-        '<div template="foo" repeat="{{}}"></div>', '<div></div>');
-  });
-
-  group('allowSvg', () {
-    var validator = new NodeValidatorBuilder()
-      ..allowSvg()
-      ..allowTextElements();
-
-    testHtml(
-        'allows basic SVG',
-        validator,
-        '<svg xmlns="http://www.w3.org/2000/svg'
-        'xmlns:xlink="http://www.w3.org/1999/xlink">'
-        '<image xlink:href="foo" data-foo="bar"/>'
-        '</svg>');
-
-    testHtml(
-        'blocks script elements',
-        validator,
-        '<svg xmlns="http://www.w3.org/2000/svg>'
-        '<script></script>'
-        '</svg>',
-        '');
-
-    testHtml(
-        'blocks script elements but allows other',
-        validator,
-        '<svg xmlns="http://www.w3.org/2000/svg>'
-        '<script></script><ellipse cx="200" cy="80" rx="100" ry="50"></ellipse>'
-        '</svg>',
-        '<svg xmlns="http://www.w3.org/2000/svg>'
-        '<ellipse cx="200" cy="80" rx="100" ry="50"></ellipse>'
-        '</svg>');
-
-    testHtml(
-        'blocks script handlers',
-        validator,
-        '<svg xmlns="http://www.w3.org/2000/svg'
-        'xmlns:xlink="http://www.w3.org/1999/xlink">'
-        '<image xlink:href="foo" onerror="something"/>'
-        '</svg>',
-        '<svg xmlns="http://www.w3.org/2000/svg'
-        'xmlns:xlink="http://www.w3.org/1999/xlink">'
-        '<image xlink:href="foo"/>'
-        '</svg>');
-
-    testHtml(
-        'blocks foreignObject content',
-        validator,
-        '<svg xmlns="http://www.w3.org/2000/svg">'
-        '<foreignobject width="100" height="150">'
-        '<body xmlns="http://www.w3.org/1999/xhtml">'
-        '<div>Some content</div>'
-        '</body>'
-        '</foreignobject>'
-        '<b>42</b>'
-        '</svg>',
-        '<svg xmlns="http://www.w3.org/2000/svg">'
-        '<b>42</b>'
-        '</svg>');
-  });
-
-  group('allowInlineStyles', () {
-    var validator = new NodeValidatorBuilder()
-      ..allowTextElements()
-      ..allowInlineStyles();
-
-    testHtml('allows inline styles', validator,
-        '<span style="background-color:red">text</span>');
-
-    testHtml('blocks other attributes', validator,
-        '<span class="red-span"></span>', '<span></span>');
-
-    validator = new NodeValidatorBuilder()
-      ..allowTextElements()
-      ..allowInlineStyles(tagName: 'span');
-
-    testHtml('scoped allows inline styles on spans', validator,
-        '<span style="background-color:red">text</span>');
-
-    testHtml('scoped blocks inline styles on LIs', validator,
-        '<li style="background-color:red">text</li>', '<li>text</li>');
-  });
-
-  group('throws', () {
-    var validator = new NodeValidator.throws(new NodeValidatorBuilder.common());
-
-    var validationError = throwsArgumentError;
-
-    test('does not throw on valid syntax', () {
-      expect(() {
-        document.body.createFragment('<div></div>', validator: validator);
-      }, returnsNormally);
-    });
-
-    test('throws on invalid elements', () {
-      expect(() {
-        document.body.createFragment('<foo></foo>', validator: validator);
-      }, validationError);
-    });
-
-    test('throws on invalid attributes', () {
-      expect(() {
-        document.body
-            .createFragment('<div foo="bar"></div>', validator: validator);
-      }, validationError);
-    });
-
-    test('throws on invalid attribute values', () {
-      expect(() {
-        document.body.createFragment('<img src="http://example.com/foo.jpg"/>',
-            validator: validator);
-      }, validationError);
-    });
-  });
-
-  group('svg', () {
-    test('parsing', () {
-      var svgText = '<svg xmlns="http://www.w3.org/2000/svg'
-          'xmlns:xlink="http://www.w3.org/1999/xlink">'
-          '<image xlink:href="foo" data-foo="bar"/>'
-          '</svg>';
-
-      var fragment = new DocumentFragment.svg(svgText);
-      var element = fragment.nodes.first;
-      expect(element is svg.SvgSvgElement, isTrue);
-      expect(element.children[0] is svg.ImageElement, isTrue);
-    });
-  });
-
-  group('dom_clobbering', () {
-    var validator = new NodeValidatorBuilder.common();
-
-    testHtml(
-        'DOM clobbering of attributes with single node',
-        validator,
-        "<form id='single_node_clobbering' onmouseover='alert(1)'><input name='attributes'>",
-        "");
-
-    testHtml(
-        'DOM clobbering of attributes with multiple nodes',
-        validator,
-        "<form onmouseover='alert(1)'><input name='attributes'>"
-        "<input name='attributes'>",
-        "");
-
-    testHtml('DOM clobbering of lastChild', validator,
-        "<form><input name='lastChild'><input onmouseover='alert(1)'>", "");
-
-    testHtml(
-        'DOM clobbering of both children and lastChild',
-        validator,
-        "<form><input name='lastChild'><input name='children'>"
-        "<input id='children'><input onmouseover='alert(1)'>",
-        "");
-
-    testHtml(
-        'DOM clobbering of both children and lastChild, different order',
-        validator,
-        "<form><input name='children'><input name='children'>"
-        "<input id='children' name='lastChild'>"
-        "<input id='bad' onmouseover='alert(1)'>",
-        "");
-
-    test('tagName makes containing form invalid', () {
-      var fragment = document.body.createFragment(
-          "<form onmouseover='alert(2)'><input name='tagName'>",
-          validator: validator);
-      var form = fragment.lastChild;
-      // If the tagName was clobbered, the sanitizer should have removed
-      // the whole thing and form is null.
-      // If the tagName was not clobbered, then there will be content,
-      // but the tagName should be the normal value. IE11 has started
-      // doing this.
-      if (form != null) {
-        expect(form.tagName, 'FORM');
-      }
-    });
-
-    test('tagName without mouseover', () {
-      var fragment = document.body
-          .createFragment("<form><input name='tagName'>", validator: validator);
-      var form = fragment.lastChild;
-      // If the tagName was clobbered, the sanitizer should have removed
-      // the whole thing and form is null.
-      // If the tagName was not clobbered, then there will be content,
-      // but the tagName should be the normal value.
-      if (form != null) {
-        expect(form.tagName, 'FORM');
-      }
-    });
-  });
-}
diff --git a/tests/html/non_instantiated_is_test.dart b/tests/html/non_instantiated_is_test.dart
deleted file mode 100644
index b226ea7..0000000
--- a/tests/html/non_instantiated_is_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js, that used to emit wrong code on is
-// checks of native classes that are not instantiated.
-
-import 'dart:html';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-var a = [new Object()];
-
-main() {
-  useHtmlConfiguration();
-
-  test('is', () {
-    expect(a[0] is Node, isFalse);
-  });
-}
diff --git a/tests/html/notification_test.dart b/tests/html/notification_test.dart
deleted file mode 100644
index 077ea54..0000000
--- a/tests/html/notification_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2015, 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 notification_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported_notification', () {
-    test('supported', () {
-      expect(Notification.supported, true);
-    });
-  });
-
-  group('constructors', () {
-    // Test that we create the notification and that the parameters have
-    // the expected values. Note that these won't actually display, because
-    // we haven't asked for permission, which would have to be done
-    // interactively, so can't run on a bot.
-    test('Notification', () {
-      var expectation = Notification.supported ? returnsNormally : throws;
-      expect(() {
-        var allDefaults = new Notification("Hello world");
-        var allSpecified = new Notification("Deluxe notification",
-            dir: "rtl",
-            body: 'All parameters set',
-            icon: 'icon.png',
-            tag: 'tag',
-            lang: 'en_US');
-        expect(allDefaults is Notification, isTrue);
-        expect(allSpecified is Notification, isTrue);
-        expect(allDefaults.title, "Hello world");
-        expect(allSpecified.title, "Deluxe notification");
-        expect(allSpecified.dir, "rtl");
-        expect(allSpecified.body, "All parameters set");
-        var icon = allSpecified.icon;
-        var tail = Uri.parse(icon).pathSegments.last;
-        expect(tail, "icon.png");
-        expect(allSpecified.tag, "tag");
-        expect(allSpecified.lang, "en_US");
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/html/performance_api_test.dart b/tests/html/performance_api_test.dart
deleted file mode 100644
index 631711f..0000000
--- a/tests/html/performance_api_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-library PerformanceApiTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(Performance.supported, true);
-    });
-  });
-
-  group('performance', () {
-    test('PerformanceApi', () {
-      // Check that code below will not throw exceptions if supported.
-      var expectation = Performance.supported ? returnsNormally : throws;
-      expect(() {
-        var requestStart = window.performance.timing.requestStart;
-        var responseStart = window.performance.timing.responseStart;
-        var responseEnd = window.performance.timing.responseEnd;
-
-        var loading = window.performance.timing.domLoading;
-        var loadedStart = window.performance.timing.domContentLoadedEventStart;
-        var loadedEnd = window.performance.timing.domContentLoadedEventEnd;
-        var complete = window.performance.timing.domComplete;
-
-        var loadEventStart = window.performance.timing.loadEventStart;
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/html/postmessage_structured_test.dart b/tests/html/postmessage_structured_test.dart
deleted file mode 100644
index c4a6a4f..0000000
--- a/tests/html/postmessage_structured_test.dart
+++ /dev/null
@@ -1,198 +0,0 @@
-// 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
-
-library postmessage_js_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:collection'; // SplayTreeMap
-import 'dart:typed_data';
-import 'utils.dart';
-
-injectSource(code) {
-  final script = new ScriptElement();
-  script.type = 'text/javascript';
-  script.innerHtml = code;
-  document.body.append(script);
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  go(testName, value) => test(testName, () {
-        // Round-trip graph from Dart to JavaScript and back.
-
-        final JS_CODE = """
-            window.addEventListener('message', handler);
-            function handler(e) {
-              var data = e.data;
-              if (typeof data == 'string') return;
-              if (data.recipient != 'JS') return;
-              window.console.log(data.data);
-              var response = {recipient: 'DART', data: data.data};
-              window.removeEventListener('message', handler);
-              window.postMessage(response, '*');
-            }
-            """;
-        var completed = false;
-        var subscription = null;
-        subscription = window.onMessage.listen(expectAsyncUntil((e) {
-          var data = e.data;
-          if (data is String) return; // Messages from unit test protocol.
-          if (data['recipient'] != 'DART') return; // Not for me.
-          completed = true;
-          subscription.cancel();
-          expect(data, isMap);
-          var returnedValue = data['data'];
-          expect(returnedValue, isNot(same(value)));
-          verifyGraph(value, returnedValue);
-        }, () => completed));
-        injectSource(JS_CODE);
-        window.postMessage({'recipient': 'JS', 'data': value}, '*');
-      });
-
-  group('primitives', () {
-    test('js-to-dart-postmessage', () {
-      // Pass an object literal from JavaScript. It should be seen as a Dart
-      // Map.
-
-      final JS_CODE = """
-        window.postMessage({eggs: 3}, '*');
-        """;
-      var completed = false;
-      var subscription = null;
-      subscription = window.onMessage.listen(expectAsyncUntil((e) {
-        var data = e.data;
-        if (data is String) return; //    Messages from unit test protocol.
-        completed = true;
-        subscription.cancel();
-        expect(data, isMap);
-        expect(data['eggs'], equals(3));
-      }, () => completed));
-      injectSource(JS_CODE);
-    });
-
-    test('dart-to-js-to-dart-postmessage', () {
-      // Pass dictionaries between Dart and JavaScript.
-
-      final JS_CODE = """
-        window.addEventListener('message', handler);
-        function handler(e) {
-          var data = e.data;
-          if (typeof data == 'string') return;
-          if (data.recipient != 'JS') return;
-          var response = {recipient: 'DART'};
-          response[data['curry']] = 50;
-          window.removeEventListener('message', handler);
-          window.postMessage(response, '*');
-        }
-        """;
-      var completed = false;
-      var subscription = null;
-      subscription = window.onMessage.listen(expectAsyncUntil((e) {
-        var data = e.data;
-        if (data is String) return; //    Messages from unit test protocol.
-        if (data['recipient'] != 'DART') return; // Hearing the sent message.
-        completed = true;
-        subscription.cancel();
-        expect(data, isMap);
-        expect(data['peas'], equals(50));
-      }, () => completed));
-      injectSource(JS_CODE);
-      window.postMessage({'recipient': 'JS', 'curry': 'peas'}, '*');
-    });
-
-    var obj1 = {'a': 100, 'b': 's'};
-    var obj2 = {'x': obj1, 'y': obj1}; // DAG.
-
-    var obj3 = {};
-    obj3['a'] = 100;
-    obj3['b'] = obj3; // Cycle.
-
-    var obj4 = new SplayTreeMap<String, dynamic>(); // Different implementation.
-    obj4['a'] = 100;
-    obj4['b'] = 's';
-
-    var cyclic_list = [1, 2, 3];
-    cyclic_list[1] = cyclic_list;
-
-    go('test_simple_list', [1, 2, 3]);
-    go('test_map', obj1);
-    go('test_DAG', obj2);
-    go('test_cycle', obj3);
-    go('test_simple_splay', obj4);
-    go('const_array_1', const [
-      const [1],
-      const [2]
-    ]);
-    go('const_array_dag', const [
-      const [1],
-      const [1]
-    ]);
-    go('array_deferred_copy', [1, 2, 3, obj3, obj3, 6]);
-    go('array_deferred_copy_2', [
-      1,
-      2,
-      3,
-      [4, 5, obj3],
-      [obj3, 6]
-    ]);
-    go('cyclic_list', cyclic_list);
-  });
-
-  group('more_primitives', () {
-    test('js-to-dart-null-prototype-eventdata', () {
-      // Pass an object with a null prototype from JavaScript.
-      // It should be seen as a Dart Map.
-      final JS_CODE = """
-       // Call anonymous function to create a local scope.
-       (function() {
-          var o = Object.create(null);
-          o.eggs = 3;
-          var foo = new MessageEvent('stuff', {data: o});
-          window.dispatchEvent(foo);
-        })();
-      """;
-      var completed = false;
-      var subscription = null;
-      subscription =
-          window.on['stuff'].listen(expectAsyncUntil((MessageEvent e) {
-        var data = e.data;
-        if (data is String) return; //    Messages from unit test protocol.
-        completed = true;
-        subscription.cancel();
-        expect(data, isMap);
-        expect(data['eggs'], equals(3));
-      }, () => completed));
-      injectSource(JS_CODE);
-    });
-  });
-
-  group('typed_arrays', () {
-    var array_buffer = new Uint8List(16).buffer;
-    var view_a = new Float32List.view(array_buffer, 0, 4);
-    var view_b = new Uint8List.view(array_buffer, 1, 13);
-    var typed_arrays_list = [view_a, array_buffer, view_b];
-
-    // Note that FF is failing this test because in the sent message:
-    // view_a.buffer == array_buffer
-    // But in the response:
-    // view_a.buffer != array_buffer
-    go('typed_arrays_list', typed_arrays_list);
-  });
-
-  group('iframe', () {
-    test('postMessage clones data', () {
-      var iframe = new IFrameElement();
-      var future = iframe.onLoad.first.then((_) {
-        iframe.contentWindow.postMessage(new HashMap<String, num>(), '*');
-      });
-      iframe.src = 'about:blank';
-      document.body.append(iframe);
-
-      return future;
-    });
-  });
-}
diff --git a/tests/html/query_test.dart b/tests/html/query_test.dart
deleted file mode 100644
index 26bacbe..0000000
--- a/tests/html/query_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2011, 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 QueryTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  final div = new DivElement();
-  final canvas = new CanvasElement(width: 200, height: 200);
-  canvas.id = 'testcanvas';
-  final element = new Element.html("<div><br/><img/><input/><img/></div>");
-  document.body.nodes.addAll([div, canvas, element]);
-
-  var isCanvasElement =
-      predicate((x) => x is CanvasElement, 'is a CanvasElement');
-  var isImageElement =
-      predicate((x) => x is ImageElement, 'is an ImageElement');
-
-  test('query', () {
-    Element e = querySelector('#testcanvas');
-    expect(e, isNotNull);
-    expect(e.id, 'testcanvas');
-    expect(e, isCanvasElement);
-    expect(e, canvas);
-  });
-
-  test('query (None)', () {
-    Element e = querySelector('#nothere');
-    expect(e, isNull);
-  });
-
-  test('queryAll (One)', () {
-    List l = querySelectorAll('canvas');
-    expect(l.length, 1);
-    expect(l[0], canvas);
-  });
-
-  test('queryAll (Multiple)', () {
-    List l = querySelectorAll('img');
-    expect(l.length, 2);
-    expect(l[0], isImageElement);
-    expect(l[1], isImageElement);
-    expect(l[0], isNot(equals(l[1])));
-  });
-
-  test('queryAll (None)', () {
-    List l = querySelectorAll('video');
-    expect(l.isEmpty, isTrue);
-  });
-}
diff --git a/tests/html/queryall_test.dart b/tests/html/queryall_test.dart
deleted file mode 100644
index 5749a04..0000000
--- a/tests/html/queryall_test.dart
+++ /dev/null
@@ -1,91 +0,0 @@
-// 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
-
-library NodeListTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isElement = predicate((x) => x is Element, 'is an Element');
-  var isCanvasElement =
-      predicate((x) => x is CanvasElement, 'is a CanvasElement');
-  var isDivElement = predicate((x) => x is DivElement, 'is a isDivElement');
-
-  var div = new DivElement();
-  div.id = 'test';
-  document.body.append(div);
-
-  div.nodes.addAll([
-    new DivElement(),
-    new CanvasElement(),
-    new DivElement(),
-    new Text('Hello'),
-    new DivElement(),
-    new Text('World'),
-    new CanvasElement()
-  ]);
-
-  test('queryAll', () {
-    List<Node> all = querySelectorAll('*');
-    for (var e in all) {
-      expect(e, isElement);
-    }
-  });
-
-  test('document.queryAll', () {
-    List<Element> all1 = querySelectorAll('*');
-    List<Element> all2 = document.querySelectorAll('*');
-    expect(all1.length, equals(all2.length));
-    for (var i = 0; i < all1.length; ++i) {
-      expect(all1[i], equals(all2[i]));
-    }
-  });
-
-  test('queryAll-canvas', () {
-    List<CanvasElement> all = querySelectorAll('canvas');
-    for (var e in all) {
-      expect(e, isCanvasElement);
-    }
-    expect(all.length, equals(2));
-  });
-
-  test('queryAll-contains', () {
-    List<Element> all = querySelectorAll('*');
-    for (var e in all) {
-      expect(all.contains(e), isTrue);
-    }
-  });
-
-  test('queryAll-where', () {
-    List<Element> all = querySelectorAll('*');
-    Iterable<CanvasElement> canvases = all.where((e) => e is CanvasElement);
-    for (var e in canvases) {
-      expect(e is CanvasElement, isTrue);
-    }
-    expect(canvases.length, equals(2));
-  });
-
-  test('node.queryAll', () {
-    List<Element> list = div.querySelectorAll('*');
-    expect(list.length, equals(5));
-    expect(list[0], isDivElement);
-    expect(list[1], isCanvasElement);
-    expect(list[2], isDivElement);
-    expect(list[3], isDivElement);
-    expect(list[4], isCanvasElement);
-  });
-
-  test('immutable', () {
-    List<Element> list = div.querySelectorAll('*');
-    int len = list.length;
-    expect(() {
-      list.add(new DivElement());
-    }, throwsUnsupportedError);
-    expect(list.length, equals(len));
-  });
-}
diff --git a/tests/html/range_test.dart b/tests/html/range_test.dart
deleted file mode 100644
index 5ff9e90..0000000
--- a/tests/html/range_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-library range_test;
-
-import 'dart:html';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supports_createContextualFragment', () {
-      expect(Range.supportsCreateContextualFragment, isTrue);
-    });
-  });
-
-  group('functional', () {
-    test('supported works', () {
-      var range = new Range();
-      range.selectNode(document.body);
-
-      var expectation =
-          Range.supportsCreateContextualFragment ? returnsNormally : throws;
-
-      expect(() {
-        range.createContextualFragment('<div></div>');
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/html/request_animation_frame_test.dart b/tests/html/request_animation_frame_test.dart
deleted file mode 100644
index 00f1d8a..0000000
--- a/tests/html/request_animation_frame_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-
-library RequestAnimationFrameTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('oneShot', () {
-    var frame = window.requestAnimationFrame(expectAsync((timestamp) {}));
-  });
-
-  test('twoShot', () {
-    var frame = window.requestAnimationFrame(expectAsync((timestamp1) {
-      window.requestAnimationFrame(expectAsync((timestamp2) {
-        // Not monotonic on Safari and IE.
-        // expect(timestamp2, greaterThan(timestamp1),
-        //    reason: 'timestamps ordered');
-      }));
-    }));
-  });
-
-  // How do we test that a callback is never called?  We can't wrap the uncalled
-  // callback with 'expectAsync'.  Will request several frames and try
-  // cancelling the one that is not the last.
-  test('cancel1', () {
-    var frame1 = window.requestAnimationFrame((timestamp1) {
-      throw new Exception('Should have been cancelled');
-    });
-    var frame2 = window.requestAnimationFrame(expectAsync((timestamp2) {}));
-    window.cancelAnimationFrame(frame1);
-  });
-
-  test('cancel2', () {
-    var frame1 = window.requestAnimationFrame(expectAsync((timestamp1) {}));
-    var frame2 = window.requestAnimationFrame((timestamp2) {
-      throw new Exception('Should have been cancelled');
-    });
-    var frame3 = window.requestAnimationFrame(expectAsync((timestamp3) {}));
-    window.cancelAnimationFrame(frame2);
-  });
-}
diff --git a/tests/html/rtc_test.dart b/tests/html/rtc_test.dart
deleted file mode 100644
index 38b3096..0000000
--- a/tests/html/rtc_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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 RealTimeCommunicationTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(RtcPeerConnection.supported, true);
-    });
-  });
-
-  group('functionality', () {
-    // More thorough testing of this API requires the user to
-    // explicitly click "allow this site to access my camera and/or microphone."
-    // or particularly allow that site to always have those permission on each
-    // computer the test is run. For more through tests, see
-    // interactive_test.dart.
-    if (RtcPeerConnection.supported) {
-      test('peer connection', () {
-        var pc = new RtcPeerConnection({
-          'iceServers': [
-            {'url': 'stun:216.93.246.18:3478'}
-          ]
-        });
-        expect(pc is RtcPeerConnection, isTrue);
-        // TODO(efortuna): Uncomment this test when RTCPeerConnection correctly
-        // implements EventListener in Firefox (works correctly in nightly, so
-        // it's coming!).
-        //pc.onIceCandidate.listen((candidate) {});
-      });
-
-      test('ice candidate', () {
-        var candidate =
-            new RtcIceCandidate({'sdpMLineIndex': 1, 'candidate': 'hello'});
-        expect(candidate is RtcIceCandidate, isTrue);
-      });
-
-      test('session description', () {
-        var description =
-            new RtcSessionDescription({'sdp': 'foo', 'type': 'offer'});
-        expect(description is RtcSessionDescription, isTrue);
-      });
-    }
-  });
-}
diff --git a/tests/html/selectelement_test.dart b/tests/html/selectelement_test.dart
deleted file mode 100644
index 5944f36..0000000
--- a/tests/html/selectelement_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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.
-
-library selectelement_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('selectedOptions', () {
-    var element = new SelectElement();
-    element.multiple = false;
-    var options = [
-      new OptionElement(),
-      new DivElement(),
-      new OptionElement(data: 'data', value: 'two', selected: true),
-      new DivElement(),
-      new OptionElement(data: 'data', value: 'two', selected: true),
-      new OptionElement(),
-    ];
-    element.children.addAll(options);
-    expect(element.selectedOptions.length, 1);
-    expect(element.selectedOptions[0], equals(options[4]));
-  });
-
-  test('multiple selectedOptions', () {
-    var element = new SelectElement();
-    element.multiple = true;
-    var options = [
-      new OptionElement(),
-      new DivElement(),
-      new OptionElement(data: 'data', value: 'two', selected: true),
-      new DivElement(),
-      new OptionElement(data: 'data', value: 'two', selected: true),
-      new OptionElement(),
-      new OptionElement(data: 'data', value: 'two', selected: false),
-    ];
-    element.children.addAll(options);
-    expect(element.selectedOptions.length, 2);
-    expect(element.selectedOptions[0], equals(options[2]));
-    expect(element.selectedOptions[1], equals(options[4]));
-  });
-
-  test('options', () {
-    var element = new SelectElement();
-    var options = [
-      new OptionElement(),
-      new OptionElement(data: 'data', value: 'two', selected: true),
-      new OptionElement(data: 'data', value: 'two', selected: true),
-      new OptionElement(),
-    ];
-    element.children.addAll(options);
-    // Use last to make sure that the list was correctly wrapped.
-    expect(element.options.last, equals(options[3]));
-  });
-
-  test('optgroup', () {
-    var element = new Element.html('<select>'
-        '<option>1</option>'
-        '<optgroup>'
-        '<option>2</option>'
-        '</optgroup>'
-        '</select>');
-
-    expect(element.options.length, 2);
-    element.selectedIndex = 1;
-
-    var optGroup = element.children[1];
-    expect(optGroup is OptGroupElement, isTrue);
-    expect(optGroup.children.single.selected, isTrue);
-    expect(element.selectedOptions, optGroup.children);
-  });
-}
diff --git a/tests/html/serialized_script_value_test.dart b/tests/html/serialized_script_value_test.dart
deleted file mode 100644
index cdaeb0b..0000000
--- a/tests/html/serialized_script_value_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-library SerializedScriptValueTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'utils.dart';
-
-serializationTest(name, value) => test(name, () {
-      // To check how value is serialized and deserialized, we create a
-      // MessageEvent.
-      final event =
-          new MessageEvent('', data: value, origin: '', lastEventId: '');
-      verifyGraph(value, event.data);
-    });
-
-main() {
-  useHtmlConfiguration();
-
-  serializationTest('null', null);
-  serializationTest('int', 1);
-  serializationTest('double', 2.39);
-  serializationTest('string', 'hey!');
-
-  final simpleMap = {'a': 100, 'b': 's'};
-  final dagMap = {'x': simpleMap, 'y': simpleMap};
-  final cyclicMap = {'b': dagMap};
-  cyclicMap['a'] = cyclicMap;
-  serializationTest('simple map', simpleMap);
-  serializationTest('dag map', dagMap);
-  serializationTest('cyclic map', cyclicMap);
-
-  final simpleList = [100, 's'];
-  final dagList = [simpleList, simpleList];
-  final cyclicList = [dagList];
-  cyclicList.add(cyclicList);
-  serializationTest('simple list', simpleList);
-  serializationTest('dag list', dagList);
-  serializationTest('cyclic list', cyclicList);
-
-  serializationTest('datetime', [new DateTime.now()]);
-
-  var blob = new Blob(
-      ['Indescribable... Indestructible! Nothing can stop it!'], 'text/plain');
-  serializationTest('blob', [blob]);
-
-  var canvas = new CanvasElement();
-  canvas.width = 100;
-  canvas.height = 100;
-  var imageData = canvas.context2D.getImageData(0, 0, 1, 1);
-  serializationTest('imagedata', [imageData]);
-}
diff --git a/tests/html/shadow_dom_test.dart b/tests/html/shadow_dom_test.dart
deleted file mode 100644
index 9efa5c6..0000000
--- a/tests/html/shadow_dom_test.dart
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2011, 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 ShadowDOMTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(ShadowRoot.supported, true);
-    });
-  });
-
-  group('ShadowDOM_tests', () {
-    var div1, div2, shadowRoot, paragraph1, paragraph2;
-
-    init() {
-      paragraph1 = new ParagraphElement();
-      paragraph2 = new ParagraphElement();
-      [paragraph1, paragraph2].forEach((p) {
-        p.classes.add('foo');
-      });
-      div1 = new DivElement();
-      div2 = new DivElement();
-      div1.classes.add('foo');
-      shadowRoot = div2.createShadowRoot();
-      shadowRoot.append(paragraph1);
-      shadowRoot.append(new ContentElement());
-      div2.append(paragraph2);
-      document.body.append(div1);
-      document.body.append(div2);
-    }
-
-    var expectation = ShadowRoot.supported ? returnsNormally : throws;
-
-    test("Shadowed nodes aren't visible to queries from outside ShadowDOM", () {
-      expect(() {
-        init();
-
-        expect(querySelectorAll('.foo'), equals([div1, paragraph2]));
-      }, expectation);
-    });
-
-    test('Parent node of a shadow root must be null.', () {
-      expect(() {
-        init();
-
-        expect(shadowRoot.parent, isNull);
-      }, expectation);
-    });
-
-    // TODO(samhop): test that <content> and <content select="foo"> and
-    // <shadow>
-    // work properly. This is blocked on having a good way to do browser
-    // rendering tests.
-
-    test('Querying in shadowed fragment respects the shadow boundary.', () {
-      expect(() {
-        init();
-
-        expect(shadowRoot.querySelectorAll('.foo'), equals([paragraph1]));
-      }, expectation);
-    });
-
-    if (ShadowRoot.supported) {
-      test('Shadowroot contents are distributed', () {
-        var div = new DivElement();
-
-        var box1 = new DivElement()..classes.add('foo');
-        div.append(box1);
-
-        var box2 = new DivElement();
-        div.append(box2);
-
-        var sRoot = div.createShadowRoot();
-        var content1 = new ContentElement()..select = ".foo";
-        sRoot.append(content1);
-
-        var content2 = new ContentElement();
-        sRoot.append(content2);
-
-        expect(content1.getDistributedNodes(), [box1]);
-        expect(content2.getDistributedNodes(), [box2]);
-      });
-    }
-  });
-}
diff --git a/tests/html/shadowroot_test.dart b/tests/html/shadowroot_test.dart
deleted file mode 100644
index 685f57d..0000000
--- a/tests/html/shadowroot_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-library ShadowRootTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isShadowRoot = predicate((x) => x is ShadowRoot, 'is a ShadowRoot');
-
-  test('ShadowRoot supported', () {
-    var isSupported = ShadowRoot.supported;
-
-    // If it's supported, then it should work. Otherwise should fail.
-    if (isSupported) {
-      var div = new DivElement();
-      var shadowRoot = div.createShadowRoot();
-      expect(shadowRoot, isShadowRoot);
-      expect(div.shadowRoot, shadowRoot);
-    } else {
-      expect(() => new DivElement().createShadowRoot(), throws);
-    }
-  });
-}
diff --git a/tests/html/small.mp4 b/tests/html/small.mp4
deleted file mode 100644
index 5bb2780..0000000
--- a/tests/html/small.mp4
+++ /dev/null
Binary files differ
diff --git a/tests/html/small.webm b/tests/html/small.webm
deleted file mode 100644
index ff01e61..0000000
--- a/tests/html/small.webm
+++ /dev/null
Binary files differ
diff --git a/tests/html/speechrecognition_test.dart b/tests/html/speechrecognition_test.dart
deleted file mode 100644
index 2a5cbc8..0000000
--- a/tests/html/speechrecognition_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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 speech_recognition_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(SpeechRecognition.supported, true);
-    });
-  });
-
-  group('types', () {
-    var expectation = SpeechRecognition.supported ? returnsNormally : throws;
-
-    test('SpeechRecognition', () {
-      expect(() {
-        new SpeechRecognition();
-      }, expectation);
-    });
-/*
-    https://code.google.com/p/dart/issues/detail?id=11825
-    test('SpeechRecognitionEvent', () {
-      expect(() {
-        var e = new Event.eventType('SpeechRecognitionEvent', 'speech');
-        expect(e is SpeechRecognitionEvent, true);
-      }, expectation);
-    });
-*/
-    test('SpeechRecognitionError', () {
-      expect(() {
-        var e = new Event.eventType('SpeechRecognitionError', 'speech');
-        expect(e is SpeechRecognitionError, true);
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/html/storage_test.dart b/tests/html/storage_test.dart
deleted file mode 100644
index fd3e8a7..0000000
--- a/tests/html/storage_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-library StorageTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-  test('GetItem', () {
-    final value = window.localStorage['does not exist'];
-    expect(value, isNull);
-  });
-  test('SetItem', () {
-    final key = 'foo';
-    final value = 'bar';
-    window.localStorage[key] = value;
-    final stored = window.localStorage[key];
-    expect(stored, value);
-  });
-
-  test('event', () {
-    // Bug 8076 that not all optional params are optional in Dartium.
-    var event = new StorageEvent('something',
-        oldValue: 'old', newValue: 'new', url: 'url', key: 'key');
-    expect(event is StorageEvent, isTrue);
-    expect(event.oldValue, 'old');
-    expect(event.newValue, 'new');
-  });
-}
diff --git a/tests/html/streams_test.dart b/tests/html/streams_test.dart
deleted file mode 100644
index 31840d0..0000000
--- a/tests/html/streams_test.dart
+++ /dev/null
@@ -1,278 +0,0 @@
-library streams_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:async';
-import 'dart:html';
-
-class StreamHelper {
-  var _a;
-  StreamHelper() {
-    _a = new TextInputElement();
-    document.body.append(_a);
-  }
-
-  Element get element => _a;
-  Stream<Event> get stream => _a.onFocus;
-
-  // Causes an event on a to be fired.
-  void pulse() {
-    var event = new Event('focus');
-    _a.dispatchEvent(event);
-  }
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('simple', () {
-    var helper = new StreamHelper();
-
-    var callCount = 0;
-    helper.stream.listen((Event e) {
-      ++callCount;
-    });
-
-    helper.pulse();
-    expect(callCount, 1);
-  });
-
-  test('broadcast', () {
-    var stream = new DivElement().onClick;
-    expect(stream.asBroadcastStream(), stream);
-    expect(stream.isBroadcast, isTrue);
-  });
-
-  // Validates that capturing events fire on parent before child.
-  test('capture', () {
-    var parent = new DivElement();
-    document.body.append(parent);
-
-    var helper = new StreamHelper();
-    parent.append(helper.element);
-
-    var childCallCount = 0;
-    var parentCallCount = 0;
-    Element.focusEvent.forTarget(parent, useCapture: true).listen((Event e) {
-      ++parentCallCount;
-      expect(childCallCount, 0);
-    });
-
-    Element.focusEvent
-        .forTarget(helper.element, useCapture: true)
-        .listen((Event e) {
-      ++childCallCount;
-      expect(parentCallCount, 1);
-    });
-
-    helper.pulse();
-    expect(childCallCount, 1);
-    expect(parentCallCount, 1);
-  });
-
-  test('cancel', () {
-    var helper = new StreamHelper();
-
-    var callCount = 0;
-    var subscription = helper.stream.listen((_) {
-      ++callCount;
-    });
-
-    helper.pulse();
-    expect(callCount, 1);
-
-    subscription.cancel();
-    helper.pulse();
-    expect(callCount, 1);
-
-    expect(() {
-      subscription.onData((_) {});
-    }, throws);
-
-    // Calling these after a cancel does nothing.
-    subscription.cancel();
-    subscription.pause();
-    subscription.resume();
-  });
-
-  test('pause/resume', () {
-    var helper = new StreamHelper();
-
-    var callCount = 0;
-    var subscription = helper.stream.listen((_) {
-      ++callCount;
-    });
-
-    helper.pulse();
-    expect(callCount, 1);
-
-    subscription.pause();
-    helper.pulse();
-    expect(callCount, 1);
-
-    subscription.resume();
-    helper.pulse();
-    expect(callCount, 2);
-
-    var completer = new Completer<int>.sync();
-    subscription.pause(completer.future);
-    helper.pulse();
-    expect(callCount, 2);
-
-    // Paused, should have no impact.
-    subscription.pause();
-    helper.pulse();
-    subscription.resume();
-    helper.pulse();
-    expect(callCount, 2);
-
-    completer.complete(0);
-    helper.pulse();
-    expect(callCount, 3);
-
-    // Not paused, but resuming once too often is ok.
-    subscription.resume();
-  });
-
-  test('onData', () {
-    var helper = new StreamHelper();
-
-    var callCountOne = 0;
-    var subscription = helper.stream.listen((_) {
-      ++callCountOne;
-    });
-
-    helper.pulse();
-    expect(callCountOne, 1);
-
-    var callCountTwo = 0;
-    subscription.onData((_) {
-      ++callCountTwo;
-    });
-
-    helper.pulse();
-    expect(callCountOne, 1);
-    expect(callCountTwo, 1);
-  });
-
-  test('null onData', () {
-    var helper = new StreamHelper();
-
-    var subscription = helper.stream.listen(null);
-    helper.pulse();
-
-    var callCountOne = 0;
-    subscription.onData((_) {
-      ++callCountOne;
-    });
-    helper.pulse();
-    expect(callCountOne, 1);
-
-    subscription.onData(null);
-    helper.pulse();
-    expect(callCountOne, 1);
-  });
-
-  var stream = new StreamHelper().stream;
-  // Streams have had some type-checking issues, these tests just validate that
-  // those are OK.
-  test('first', () {
-    stream.first.then((_) {});
-  });
-
-  test('asBroadcastStream', () {
-    stream.asBroadcastStream().listen((_) {});
-  });
-
-  test('where', () {
-    stream.where((_) => true).listen((_) {});
-  });
-
-  test('map', () {
-    stream.map((_) => null).listen((_) {});
-  });
-
-  test('reduce', () {
-    stream.reduce((a, b) => null).then((_) {});
-  });
-
-  test('fold', () {
-    stream.fold(null, (a, b) => null).then((_) {});
-  });
-
-  test('contains', () {
-    stream.contains((_) => true).then((_) {});
-  });
-
-  test('every', () {
-    stream.every((_) => true).then((_) {});
-  });
-
-  test('any', () {
-    stream.any((_) => true).then((_) {});
-  });
-
-  test('length', () {
-    stream.length.then((_) {});
-  });
-
-  test('isEmpty', () {
-    stream.isEmpty.then((_) {});
-  });
-
-  test('toList', () {
-    stream.toList().then((_) {});
-  });
-
-  test('toSet', () {
-    stream.toSet().then((_) {});
-  });
-
-  test('take', () {
-    stream.take(1).listen((_) {});
-  });
-
-  test('takeWhile', () {
-    stream.takeWhile((_) => false).listen((_) {});
-  });
-
-  test('skip', () {
-    stream.skip(0).listen((_) {});
-  });
-
-  test('skipWhile', () {
-    stream.skipWhile((_) => false).listen((_) {});
-  });
-
-  test('distinct', () {
-    stream.distinct((a, b) => false).listen((_) {});
-  });
-
-  test('first', () {
-    stream.first.then((_) {});
-  });
-
-  test('last', () {
-    stream.last.then((_) {});
-  });
-
-  test('single', () {
-    stream.single.then((_) {});
-  });
-
-  test('firstWhere', () {
-    stream.firstWhere((_) => true).then((_) {});
-  });
-
-  test('lastWhere', () {
-    stream.lastWhere((_) => true).then((_) {});
-  });
-
-  test('singleWhere', () {
-    stream.singleWhere((_) => true).then((_) {});
-  });
-
-  test('elementAt', () {
-    stream.elementAt(0).then((_) {});
-  });
-}
diff --git a/tests/html/svg_test.dart b/tests/html/svg_test.dart
deleted file mode 100644
index a837e39..0000000
--- a/tests/html/svg_test.dart
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (c) 2013, 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 SVGTest;
-
-import 'dart:html';
-import 'dart:svg' as svg;
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('svgPresence', () {
-    var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement');
-
-    test('simpleRect', () {
-      var div = new Element.tag('div');
-      document.body.append(div);
-      div.setInnerHtml(
-          r'''
-<svg id='svg1' width='200' height='100'>
-<rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect>
-</svg>
-''',
-          validator: new NodeValidatorBuilder()..allowSvg());
-
-      var e = document.querySelector('#svg1');
-      expect(e, isNotNull);
-
-      svg.RectElement r = document.querySelector('#rect1');
-      expect(r.x.baseVal.value, 10);
-      expect(r.y.baseVal.value, 20);
-      expect(r.height.baseVal.value, 40);
-      expect(r.width.baseVal.value, 130);
-      expect(r.rx.baseVal.value, 5);
-    });
-
-    test('trailing newline', () {
-      // Ensures that we handle SVG with trailing newlines.
-      var logo = new svg.SvgElement.svg("""
-        <svg xmlns='http://www.w3.org/2000/svg' version='1.1'>
-          <path/>
-        </svg>
-        """);
-
-      expect(logo, isSvgElement);
-    });
-  });
-
-  group('svgInterfaceMatch', () {
-    // Test that SVG elements explicitly implement the IDL interfaces (is-checks
-    // only, see SVGTest3 for behavioural tests).
-    insertTestDiv() {
-      var element = new Element.tag('div');
-      element.setInnerHtml(
-          r'''
-<svg id='svg1' width='200' height='100'>
-<rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect>
-</svg>
-''',
-          validator: new NodeValidatorBuilder()..allowSvg());
-      document.body.append(element);
-      return element;
-    }
-
-    var isElement = predicate((x) => x is Element, 'is an Element');
-    var isSvgElement = predicate((x) => x is svg.SvgElement, 'is a SvgElement');
-    var isSvgSvgElement =
-        predicate((x) => x is svg.SvgSvgElement, 'is a SvgSvgElement');
-    var isNode = predicate((x) => x is Node, 'is a Node');
-    var isSvgNumber = predicate((x) => x is svg.Number, 'is a svg.Number');
-    var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect');
-
-    test('rect_isChecks', () {
-      var div = insertTestDiv();
-      var r = document.querySelector('#rect1');
-
-      // Direct inheritance chain
-      expect(r, isSvgElement);
-      expect(r, isElement);
-      expect(r, isNode);
-
-      // Interfaces not implemented.
-      expect(r, isNot(isSvgNumber));
-      expect(r, isNot(isSvgRect));
-      expect(r, isNot(isSvgSvgElement));
-
-      div.remove();
-    });
-  });
-
-  insertTestDiv() {
-    var element = new Element.tag('div');
-    element.innerHtml = r'''
-<svg id='svg1' width='200' height='100'>
-<rect id='rect1' x='10' y='20' width='130' height='40' rx='5'fill='blue'></rect>
-</svg>
-''';
-    document.body.append(element);
-    return element;
-  }
-
-  group('svgBehavioral', () {
-    // Test that SVG elements have the operations advertised through all the IDL
-    // interfaces.  This is a 'duck typing' test, and does not explicitly use
-    // 'is' checks on the expected interfaces (that is in the test group above).
-
-    var isString = predicate((x) => x is String, 'is a String');
-    var isStringList = predicate((x) => x is List<String>, 'is a List<String>');
-    var isSvgMatrix = predicate((x) => x is svg.Matrix, 'is a svg.Matrix');
-    var isSvgAnimatedBoolean =
-        predicate((x) => x is svg.AnimatedBoolean, 'is an svg.AnimatedBoolean');
-    var isSvgAnimatedString =
-        predicate((x) => x is svg.AnimatedString, 'is an svg.AnimatedString');
-    var isSvgRect = predicate((x) => x is svg.Rect, 'is a svg.Rect');
-    var isSvgAnimatedTransformList = predicate(
-        (x) => x is svg.AnimatedTransformList,
-        'is an svg.AnimatedTransformList');
-    var isCssStyleDeclaration =
-        predicate((x) => x is CssStyleDeclaration, 'is a CssStyleDeclaration');
-
-    testRect(name, checker) {
-      test(name, () {
-        var div = insertTestDiv();
-        var r = document.querySelector('#rect1');
-        checker(r);
-        div.remove();
-      });
-    }
-  });
-}
diff --git a/tests/html/svgelement_test.dart b/tests/html/svgelement_test.dart
deleted file mode 100644
index e1301f8..0000000
--- a/tests/html/svgelement_test.dart
+++ /dev/null
@@ -1,483 +0,0 @@
-// Copyright (c) 2011, 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 SvgElementTest;
-
-import 'dart:html';
-import 'dart:svg' as svg;
-import 'package:expect/expect.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  var isSvgSvgElement =
-      predicate((x) => x is svg.SvgSvgElement, 'is a SvgSvgElement');
-
-  List<String> _nodeStrings(Iterable<Node> input) {
-    final out = new List<String>();
-    for (Node n in input) {
-      if (n is Element) {
-        Element e = n;
-        out.add(e.tagName);
-      } else {
-        out.add(n.text);
-      }
-    }
-    return out;
-  }
-
-  ;
-
-  testConstructor(String tagName, Function isExpectedClass,
-      [bool expectation = true, allowsInnerHtml = true]) {
-    test(tagName, () {
-      expect(isExpectedClass(new svg.SvgElement.tag(tagName)), expectation);
-      if (allowsInnerHtml) {
-        expect(isExpectedClass(new svg.SvgElement.svg('<$tagName></$tagName>')),
-            expectation && allowsInnerHtml);
-      }
-    });
-  }
-
-  group('additionalConstructors', () {
-    test('valid', () {
-      final svgContent = "<svg version=\"1.1\">\n"
-          "  <circle></circle>\n"
-          "  <path></path>\n"
-          "</svg>";
-      final el = new svg.SvgElement.svg(svgContent);
-      expect(el, isSvgSvgElement);
-      expect(
-          el.innerHtml,
-          anyOf(
-              "<circle></circle><path></path>",
-              '<circle '
-              'xmlns="http://www.w3.org/2000/svg" /><path '
-              'xmlns="http://www.w3.org/2000/svg" />'));
-      expect(
-          el.outerHtml,
-          anyOf(
-              svgContent,
-              '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">\n  '
-              '<circle />\n  <path />\n</svg>'));
-    });
-
-    test('has no parent',
-        () => expect(new svg.SvgElement.svg('<circle/>').parent, isNull));
-
-    test('empty', () {
-      expect(() => new svg.SvgElement.svg(""), throwsStateError);
-    });
-
-    test('too many elements', () {
-      expect(() => new svg.SvgElement.svg("<circle></circle><path></path>"),
-          throwsStateError);
-    });
-  });
-
-  // Unfortunately, because the filtering mechanism in unittest is a regex done
-  group('supported_animate', () {
-    test('supported', () {
-      expect(svg.AnimateElement.supported, true);
-    });
-  });
-
-  group('supported_animateMotion', () {
-    test('supported', () {
-      expect(svg.AnimateMotionElement.supported, true);
-    });
-  });
-
-  group('supported_animateTransform', () {
-    test('supported', () {
-      expect(svg.AnimateTransformElement.supported, true);
-    });
-  });
-
-  group('supported_feBlend', () {
-    test('supported', () {
-      expect(svg.FEBlendElement.supported, true);
-    });
-  });
-
-  group('supported_feColorMatrix', () {
-    test('supported', () {
-      expect(svg.FEColorMatrixElement.supported, true);
-    });
-  });
-
-  group('supported_feComponentTransfer', () {
-    test('supported', () {
-      expect(svg.FEComponentTransferElement.supported, true);
-    });
-  });
-
-  group('supported_feConvolveMatrix', () {
-    test('supported', () {
-      expect(svg.FEConvolveMatrixElement.supported, true);
-    });
-  });
-
-  group('supported_feDiffuseLighting', () {
-    test('supported', () {
-      expect(svg.FEDiffuseLightingElement.supported, true);
-    });
-  });
-
-  group('supported_feDisplacementMap', () {
-    test('supported', () {
-      expect(svg.FEDisplacementMapElement.supported, true);
-    });
-  });
-
-  group('supported_feDistantLight', () {
-    test('supported', () {
-      expect(svg.FEDistantLightElement.supported, true);
-    });
-  });
-
-  group('supported_feFlood', () {
-    test('supported', () {
-      expect(svg.FEFloodElement.supported, true);
-    });
-  });
-
-  group('supported_feFuncA', () {
-    test('supported', () {
-      expect(svg.FEFuncAElement.supported, true);
-    });
-  });
-
-  group('supported_feFuncB', () {
-    test('supported', () {
-      expect(svg.FEFuncBElement.supported, true);
-    });
-  });
-
-  group('supported_feFuncG', () {
-    test('supported', () {
-      expect(svg.FEFuncGElement.supported, true);
-    });
-  });
-
-  group('supported_feFuncR', () {
-    test('supported', () {
-      expect(svg.FEFuncRElement.supported, true);
-    });
-  });
-
-  group('supported_feGaussianBlur', () {
-    test('supported', () {
-      expect(svg.FEGaussianBlurElement.supported, true);
-    });
-  });
-
-  group('supported_feImage', () {
-    test('supported', () {
-      expect(svg.FEImageElement.supported, true);
-    });
-  });
-
-  group('supported_feMerge', () {
-    test('supported', () {
-      expect(svg.FEMergeElement.supported, true);
-    });
-  });
-
-  group('supported_feMergeNode', () {
-    test('supported', () {
-      expect(svg.FEMergeNodeElement.supported, true);
-    });
-  });
-
-  group('supported_feOffset', () {
-    test('supported', () {
-      expect(svg.FEOffsetElement.supported, true);
-    });
-  });
-
-  group('supported_feComponentTransfer', () {
-    test('supported', () {
-      expect(svg.FEPointLightElement.supported, true);
-    });
-  });
-
-  group('supported_feSpecularLighting', () {
-    test('supported', () {
-      expect(svg.FESpecularLightingElement.supported, true);
-    });
-  });
-
-  group('supported_feComponentTransfer', () {
-    test('supported', () {
-      expect(svg.FESpotLightElement.supported, true);
-    });
-  });
-
-  group('supported_feTile', () {
-    test('supported', () {
-      expect(svg.FETileElement.supported, true);
-    });
-  });
-
-  group('supported_feTurbulence', () {
-    test('supported', () {
-      expect(svg.FETurbulenceElement.supported, true);
-    });
-  });
-
-  group('supported_filter', () {
-    test('supported', () {
-      expect(svg.FilterElement.supported, true);
-    });
-  });
-
-  group('supported_foreignObject', () {
-    test('supported', () {
-      expect(svg.ForeignObjectElement.supported, true);
-    });
-  });
-
-  group('supported_set', () {
-    test('supported', () {
-      expect(svg.SetElement.supported, true);
-    });
-  });
-
-  group('constructors', () {
-    testConstructor('a', (e) => e is svg.AElement);
-    testConstructor('circle', (e) => e is svg.CircleElement);
-    testConstructor('clipPath', (e) => e is svg.ClipPathElement);
-    testConstructor('defs', (e) => e is svg.DefsElement);
-    testConstructor('desc', (e) => e is svg.DescElement);
-    testConstructor('ellipse', (e) => e is svg.EllipseElement);
-    testConstructor('g', (e) => e is svg.GElement);
-    testConstructor('image', (e) => e is svg.ImageElement);
-    testConstructor('line', (e) => e is svg.LineElement);
-    testConstructor('linearGradient', (e) => e is svg.LinearGradientElement);
-    testConstructor('marker', (e) => e is svg.MarkerElement);
-    testConstructor('mask', (e) => e is svg.MaskElement);
-    testConstructor('path', (e) => e is svg.PathElement);
-    testConstructor('pattern', (e) => e is svg.PatternElement);
-    testConstructor('polygon', (e) => e is svg.PolygonElement);
-    testConstructor('polyline', (e) => e is svg.PolylineElement);
-    testConstructor('radialGradient', (e) => e is svg.RadialGradientElement);
-    testConstructor('rect', (e) => e is svg.RectElement);
-    test('script', () {
-      expect(new svg.SvgElement.tag('script') is svg.ScriptElement, isTrue);
-    });
-    testConstructor('stop', (e) => e is svg.StopElement);
-    testConstructor('style', (e) => e is svg.StyleElement);
-    testConstructor('switch', (e) => e is svg.SwitchElement);
-    testConstructor('symbol', (e) => e is svg.SymbolElement);
-    testConstructor('tspan', (e) => e is svg.TSpanElement);
-    testConstructor('text', (e) => e is svg.TextElement);
-    testConstructor('textPath', (e) => e is svg.TextPathElement);
-    testConstructor('title', (e) => e is svg.TitleElement);
-    testConstructor('use', (e) => e is svg.UseElement);
-    testConstructor('view', (e) => e is svg.ViewElement);
-    // TODO(alanknight): Issue 23144
-    testConstructor('animate', (e) => e is svg.AnimateElement,
-        svg.AnimateElement.supported);
-    testConstructor('animateMotion', (e) => e is svg.AnimateMotionElement,
-        svg.AnimateMotionElement.supported);
-    testConstructor('animateTransform', (e) => e is svg.AnimateTransformElement,
-        svg.AnimateTransformElement.supported);
-    testConstructor('feBlend', (e) => e is svg.FEBlendElement,
-        svg.FEBlendElement.supported);
-    testConstructor('feColorMatrix', (e) => e is svg.FEColorMatrixElement,
-        svg.FEColorMatrixElement.supported);
-    testConstructor(
-        'feComponentTransfer',
-        (e) => e is svg.FEComponentTransferElement,
-        svg.FEComponentTransferElement.supported);
-    testConstructor('feConvolveMatrix', (e) => e is svg.FEConvolveMatrixElement,
-        svg.FEConvolveMatrixElement.supported);
-    testConstructor(
-        'feDiffuseLighting',
-        (e) => e is svg.FEDiffuseLightingElement,
-        svg.FEDiffuseLightingElement.supported);
-    testConstructor(
-        'feDisplacementMap',
-        (e) => e is svg.FEDisplacementMapElement,
-        svg.FEDisplacementMapElement.supported);
-    testConstructor('feDistantLight', (e) => e is svg.FEDistantLightElement,
-        svg.FEDistantLightElement.supported);
-    testConstructor('feFlood', (e) => e is svg.FEFloodElement,
-        svg.FEFloodElement.supported);
-    testConstructor('feFuncA', (e) => e is svg.FEFuncAElement,
-        svg.FEFuncAElement.supported);
-    testConstructor('feFuncB', (e) => e is svg.FEFuncBElement,
-        svg.FEFuncBElement.supported);
-    testConstructor('feFuncG', (e) => e is svg.FEFuncGElement,
-        svg.FEFuncGElement.supported);
-    testConstructor('feFuncR', (e) => e is svg.FEFuncRElement,
-        svg.FEFuncRElement.supported);
-    testConstructor('feGaussianBlur', (e) => e is svg.FEGaussianBlurElement,
-        svg.FEGaussianBlurElement.supported);
-    testConstructor('feImage', (e) => e is svg.FEImageElement,
-        svg.FEImageElement.supported);
-    testConstructor('feMerge', (e) => e is svg.FEMergeElement,
-        svg.FEMergeElement.supported);
-    testConstructor('feMergeNode', (e) => e is svg.FEMergeNodeElement,
-        svg.FEMergeNodeElement.supported);
-    testConstructor('feOffset', (e) => e is svg.FEOffsetElement,
-        svg.FEOffsetElement.supported);
-    testConstructor('fePointLight', (e) => e is svg.FEPointLightElement,
-        svg.FEPointLightElement.supported);
-    testConstructor(
-        'feSpecularLighting',
-        (e) => e is svg.FESpecularLightingElement,
-        svg.FESpecularLightingElement.supported);
-    testConstructor('feSpotLight', (e) => e is svg.FESpotLightElement,
-        svg.FESpotLightElement.supported);
-    testConstructor(
-        'feTile', (e) => e is svg.FETileElement, svg.FETileElement.supported);
-    testConstructor('feTurbulence', (e) => e is svg.FETurbulenceElement,
-        svg.FETurbulenceElement.supported);
-    testConstructor(
-        'filter', (e) => e is svg.FilterElement, svg.FilterElement.supported);
-    testConstructor('foreignObject', (e) => e is svg.ForeignObjectElement,
-        svg.ForeignObjectElement.supported, false);
-    testConstructor('metadata', (e) => e is svg.MetadataElement);
-    testConstructor(
-        'set', (e) => e is svg.SetElement, svg.SetElement.supported);
-  });
-
-  group('outerHtml', () {
-    test('outerHtml', () {
-      final el = new svg.SvgSvgElement();
-      el.children.add(new svg.CircleElement());
-      el.children.add(new svg.PathElement());
-      expect(
-          [
-            '<svg version="1.1"><circle></circle><path></path></svg>',
-            '<svg xmlns="http://www.w3.org/2000/svg" version="1.1">'
-                '<circle /><path /></svg>',
-          ].contains(el.outerHtml),
-          true);
-    });
-  });
-
-  group('innerHtml', () {
-    test('get', () {
-      final el = new svg.SvgSvgElement();
-      el.children.add(new svg.CircleElement());
-      el.children.add(new svg.PathElement());
-      // Allow for odd IE serialization.
-      expect(
-          [
-            '<circle></circle><path></path>',
-            '<circle xmlns="http://www.w3.org/2000/svg" />'
-                '<path xmlns="http://www.w3.org/2000/svg" />'
-          ].contains(el.innerHtml),
-          true);
-    });
-
-    test('set', () {
-      final el = new svg.SvgSvgElement();
-      el.children.add(new svg.CircleElement());
-      el.children.add(new svg.PathElement());
-      el.innerHtml = '<rect></rect><a></a>';
-      expect(_nodeStrings(el.children), ["rect", "a"]);
-    });
-  });
-
-  group('elementget', () {
-    test('get', () {
-      final el = new svg.SvgElement.svg("""
-<svg version="1.1">
-  <circle></circle>
-  <path></path>
-  text
-</svg>""");
-      expect(_nodeStrings(el.children), ["circle", "path"]);
-    });
-
-    test('resize', () {
-      var el = new svg.SvgSvgElement();
-      var items = [new svg.CircleElement(), new svg.RectElement()];
-      el.children = items;
-      expect(el.children.length, 2);
-      el.children.length = 1;
-      expect(el.children.length, 1);
-      expect(el.children.contains(items[0]), true);
-      expect(el.children.contains(items[1]), false);
-
-      el.children.length = 0;
-      expect(el.children.contains(items[0]), false);
-    });
-  });
-
-  group('elementset', () {
-    test('set', () {
-      final el = new svg.SvgSvgElement();
-      el.children = [
-        new svg.SvgElement.tag("circle"),
-        new svg.SvgElement.tag("path")
-      ];
-      expect(el.nodes.length, 2);
-      expect(el.nodes[0] is svg.CircleElement, true);
-      expect(el.nodes[1] is svg.PathElement, true);
-    });
-  });
-
-  group('css', () {
-    test('classes', () {
-      var el = new svg.CircleElement();
-      var classes = el.classes;
-      expect(el.classes.length, 0);
-      classes.toggle('foo');
-      expect(el.classes.length, 1);
-      classes.toggle('foo');
-      expect(el.classes.length, 0);
-    });
-
-    test('classes-add-bad', () {
-      var el = new svg.CircleElement();
-      expect(() => el.classes.add(''), throws);
-      expect(() => el.classes.add('foo bar'), throws);
-    });
-    test('classes-remove-bad', () {
-      var el = new svg.CircleElement();
-      expect(() => el.classes.remove(''), throws);
-      expect(() => el.classes.remove('foo bar'), throws);
-    });
-    test('classes-toggle-token', () {
-      var el = new svg.CircleElement();
-      expect(() => el.classes.toggle(''), throws);
-      expect(() => el.classes.toggle('', true), throws);
-      expect(() => el.classes.toggle('', false), throws);
-      expect(() => el.classes.toggle('foo bar'), throws);
-      expect(() => el.classes.toggle('foo bar', true), throws);
-      expect(() => el.classes.toggle('foo bar', false), throws);
-    });
-    test('classes-contains-bad', () {
-      var el = new svg.CircleElement();
-      // Non-strings => false, strings must be valid tokens.
-      expect(el.classes.contains(1), isFalse);
-      expect(() => el.classes.contains(''), throws);
-      expect(() => el.classes.contains('foo bar'), throws);
-    });
-  });
-
-  group('getBoundingClientRect', () {
-    test('is a Rectangle', () {
-      var element = new svg.RectElement();
-      element.attributes['width'] = '100';
-      element.attributes['height'] = '100';
-      var root = new svg.SvgSvgElement();
-      root.append(element);
-
-      document.body.append(root);
-
-      var rect = element.getBoundingClientRect();
-      expect(rect is Rectangle, isTrue);
-      expect(rect.width, closeTo(100, 1));
-      expect(rect.height, closeTo(100, 1));
-    });
-  });
-}
diff --git a/tests/html/table_test.dart b/tests/html/table_test.dart
deleted file mode 100644
index b1f1b09..0000000
--- a/tests/html/table_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// 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.
-
-library TableTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('createTBody', () {
-    var table = new TableElement();
-    var head = table.createTHead();
-    expect(table.tHead, head);
-
-    var headerRow = head.addRow();
-    var headerCell = headerRow.addCell();
-    headerCell.text = 'Header Cell';
-
-    var caption = table.createCaption();
-    expect(table.caption, caption);
-
-    var body = table.createTBody();
-    expect(table.tBodies.length, 1);
-    expect(table.tBodies[0], body);
-
-    var bodyRow = body.addRow();
-    expect(body.rows.length, 1);
-    expect(body.rows[0], bodyRow);
-
-    var bodyCell = bodyRow.addCell();
-    bodyCell.text = 'Body Cell';
-    expect(bodyRow.cells.length, 1);
-    expect(bodyRow.cells[0], bodyCell);
-
-    var foot = table.createTFoot();
-    expect(table.tFoot, foot);
-
-    var footerRow = foot.addRow();
-    expect(foot.rows.length, 1);
-    expect(foot.rows[0], footerRow);
-
-    var footerCell = footerRow.addCell();
-    footerCell.text = 'Footer Cell';
-    expect(footerRow.cells.length, 1);
-    expect(footerRow.cells[0], footerCell);
-
-    var body2 = table.createTBody();
-    var bodyRow2 = body2.addRow();
-    var bodyCell2 = bodyRow2.addCell();
-    bodyCell2.text = 'Body Cell2';
-
-    expect(body2.rows.length, 1);
-
-    expect(table.tBodies.length, 2);
-    expect(table.tBodies[1], body2);
-  });
-}
diff --git a/tests/html/text_event_test.dart b/tests/html/text_event_test.dart
deleted file mode 100644
index aa8f14a..0000000
--- a/tests/html/text_event_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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 text_event_test;
-
-import "package:expect/expect.dart";
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-import 'event_test.dart';
-
-main() {
-  useHtmlConfiguration();
-
-  eventTest('TextEvent', () => new TextEvent('foo', view: window, data: 'data'),
-      (ev) {
-    expect(ev.data, 'data');
-  });
-}
diff --git a/tests/html/touchevent_test.dart b/tests/html/touchevent_test.dart
deleted file mode 100644
index b1a92e8..0000000
--- a/tests/html/touchevent_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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 touch_event_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('functional', () {
-    test('Basic TouchEvent', () {
-      if (TouchEvent.supported) {
-        var e = new TouchEvent('touch');
-        expect(e is TouchEvent, isTrue);
-      }
-    });
-  });
-}
diff --git a/tests/html/track_element_constructor_test.dart b/tests/html/track_element_constructor_test.dart
deleted file mode 100644
index 088eb27..0000000
--- a/tests/html/track_element_constructor_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// A regression test for dart2js generating illegal JavaScript code
-// dynamically in non-csp mode.  The name of the field "defaultValue"
-// in JavaScript is "default".  This meant that dart2js would create a
-// constructor function that looked like this:
-//
-// function TrackElement(default) { this.default = default; }
-
-import 'dart:html';
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-void main() {
-  useHtmlConfiguration();
-  test('', () {
-    if (!TrackElement.supported) return;
-    document.body.append(new TrackElement()..defaultValue = true);
-    if (!document.querySelector('track').defaultValue) {
-      throw 'Expected default value to be true';
-    }
-    document.querySelector('track').defaultValue = false;
-    if (document.querySelector('track').defaultValue) {
-      throw 'Expected default value to be false';
-    }
-  });
-}
diff --git a/tests/html/transferables_test.dart b/tests/html/transferables_test.dart
deleted file mode 100644
index 24d148f..0000000
--- a/tests/html/transferables_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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.
-
-library TransferableTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  var isByteBuffer = predicate((x) => x is ByteBuffer, 'is an ByteBuffer');
-
-  test('TransferableTest', () {
-    if (!Platform.supportsTypedData) {
-      return;
-    }
-
-    final buffer = (new Float32List(3)).buffer;
-    window.postMessage(
-        {'id': 'transferable data', 'buffer': buffer}, '*', [buffer]);
-
-    return window.onMessage.firstWhere((e) {
-      return e.data is Map && e.data['id'] == 'transferable data';
-    }).then((messageEvent) {
-      expect(messageEvent.data['buffer'], isByteBuffer);
-    });
-  });
-}
diff --git a/tests/html/transition_event_test.dart b/tests/html/transition_event_test.dart
deleted file mode 100644
index 61663c3..0000000
--- a/tests/html/transition_event_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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 transition_event_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:async';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(CssStyleDeclaration.supportsTransitions, true);
-    });
-  });
-
-  group('functional', () {
-    test('transitionEnd', () {
-      if (CssStyleDeclaration.supportsTransitions) {
-        var element = new DivElement();
-        document.body.append(element);
-
-        element.style.opacity = '0';
-        element.style.width = '100px';
-        element.style.height = '100px';
-        element.style.background = 'red';
-        element.style.transition = 'opacity .1s';
-
-        new Timer(const Duration(milliseconds: 100), expectAsync(() {
-          element.onTransitionEnd.first.then(expectAsync((e) {
-            expect(e is TransitionEvent, isTrue);
-            expect(e.propertyName, 'opacity');
-          }));
-
-          element.style.opacity = '1';
-        }));
-      }
-    });
-  });
-}
diff --git a/tests/html/trusted_html_tree_sanitizer_test.dart b/tests/html/trusted_html_tree_sanitizer_test.dart
deleted file mode 100644
index d0cc88a..0000000
--- a/tests/html/trusted_html_tree_sanitizer_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// This tests HTML validation and sanitization, which is very important
-/// for prevent XSS or other attacks. If you suppress this, or parts of it
-/// please make it a critical bug and bring it to the attention of the
-/// dart:html maintainers.
-library trusted_html_tree_sanitizer_test;
-
-import 'dart:html';
-import 'dart:svg' as svg;
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'utils.dart';
-import 'dart:js' as js;
-
-var oldAdoptNode;
-var jsDocument;
-
-/// We want to verify that with the trusted sanitizer we are not
-/// creating a document fragment. So make DocumentFragment operation
-/// throw.
-makeDocumentFragmentAdoptionThrow() {
-  var document = js.context['document'];
-  jsDocument = new js.JsObject.fromBrowserObject(document);
-  oldAdoptNode = jsDocument['adoptNode'];
-  jsDocument['adoptNode'] = null;
-}
-
-restoreOldAdoptNode() {
-  jsDocument['adoptNode'] = oldAdoptNode;
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('not_create_document_fragment', () {
-    setUp(makeDocumentFragmentAdoptionThrow);
-    tearDown(restoreOldAdoptNode);
-
-    test('setInnerHtml', () {
-      document.body.setInnerHtml('<div foo="baz">something</div>',
-          treeSanitizer: NodeTreeSanitizer.trusted);
-      expect(document.body.innerHtml, '<div foo="baz">something</div>');
-    });
-
-    test("appendHtml", () {
-      var oldStuff = document.body.innerHtml;
-      var newStuff = '<div rumplestiltskin="value">content</div>';
-      document.body
-          .appendHtml(newStuff, treeSanitizer: NodeTreeSanitizer.trusted);
-      expect(document.body.innerHtml, oldStuff + newStuff);
-    });
-  });
-
-  group('untrusted', () {
-    setUp(makeDocumentFragmentAdoptionThrow);
-    tearDown(restoreOldAdoptNode);
-    test('untrusted', () {
-      expect(() => document.body.innerHtml = "<p>anything</p>", throws);
-    });
-  });
-}
diff --git a/tests/html/typed_arrays_1_test.dart b/tests/html/typed_arrays_1_test.dart
deleted file mode 100644
index e899612..0000000
--- a/tests/html/typed_arrays_1_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// 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.
-
-library TypedArrays1Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  var isnumList = predicate((x) => x is List<num>, 'is a List<num>');
-  var isStringList = predicate((x) => x is List<String>, 'is a List<String>');
-  var expectation = Platform.supportsTypedData ? returnsNormally : throws;
-
-  group('supported', () {
-    test('supported', () {
-      expect(Platform.supportsTypedData, true);
-    });
-  });
-
-  group('arrays', () {
-    test('createByLengthTest', () {
-      expect(() {
-        var a = new Float32List(10);
-        expect(a.length, 10);
-        expect(a.lengthInBytes, 40);
-        expect(a[4], 0);
-      }, expectation);
-    });
-
-    test('aliasTest', () {
-      expect(() {
-        var a1 = new Uint8List.fromList([0, 0, 1, 0x45]);
-        var a2 = new Float32List.view(a1.buffer);
-
-        expect(a1.lengthInBytes, a2.lengthInBytes);
-
-        expect(a2.length, 1);
-
-        // 0x45010000 = 2048+16
-        expect(a2[0], 2048 + 16);
-
-        a1[2] = 0;
-        // 0x45000000 = 2048
-        expect(a2[0], 2048);
-
-        a1[3]--;
-        a1[2] += 128;
-        // 0x44800000 = 1024
-        expect(a2[0], 1024);
-      }, expectation);
-    });
-
-    // Generic type checking is not available in dart2js, so use this check to
-    // see if we should check for it.
-    var supportsTypeTest = !(new List<String>() is List<int>);
-
-    if (supportsTypeTest) {
-      test('typeTests', () {
-        expect(() {
-          var a = new Float32List(10);
-          expect(a, isList);
-          expect(a, isnumList);
-          expect(a, isNot(isStringList));
-        }, expectation);
-      });
-    }
-  });
-}
diff --git a/tests/html/typed_arrays_2_test.dart b/tests/html/typed_arrays_2_test.dart
deleted file mode 100644
index 83355f0..0000000
--- a/tests/html/typed_arrays_2_test.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// 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.
-
-library TypedArrays2Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('viewTest_dynamic', () {
-    var a1 = new Uint8List(1024);
-    for (int i = 0; i < a1.length; i++) {
-      a1[i] = i; // 0,1,2,...,254,255,0,1,2,...
-    }
-
-    var a2 = new Uint32List.view(a1.buffer);
-    expect(1024 ~/ 4, a2.length);
-    expect(a2[0], 0x03020100);
-    expect(a2[1], 0x07060504);
-    expect(a2[2], 0x0B0A0908);
-    expect(a2[50], 0xCBCAC9C8);
-    expect(a2[51], 0xCFCECDCC);
-    expect(a2[64], 0x03020100);
-
-    a2 = new Uint32List.view(a1.buffer, 200);
-    expect(a2.length, (1024 - 200) ~/ 4);
-    expect(a2[0], 0xCBCAC9C8);
-    expect(a2[1], 0xCFCECDCC);
-    expect(a2[14], 0x03020100);
-
-    a2 = new Uint32List.view(a1.buffer, 456, 20);
-    expect(a2.length, 20);
-    expect(a2[0], 0xCBCAC9C8);
-    expect(a2[1], 0xCFCECDCC);
-    expect(a2[14], 0x03020100);
-
-    // OPTIONALS a2 = new Uint32List.view(a1.buffer, length: 30, byteOffset: 456);
-    a2 = new Uint32List.view(a1.buffer, 456, 30);
-    expect(a2.length, 30);
-    expect(a2[0], 0xCBCAC9C8);
-    expect(a2[1], 0xCFCECDCC);
-    expect(a2[14], 0x03020100);
-  });
-
-  test('viewTest_typed', () {
-    Uint8List a1 = new Uint8List(1024);
-    for (int i = 0; i < a1.length; i++) {
-      a1[i] = i;
-    }
-
-    Uint32List a2 = new Uint32List.view(a1.buffer);
-    expect(a2.length, 1024 ~/ 4);
-    expect(a2[0], 0x03020100);
-    expect(a2[50], 0xCBCAC9C8);
-    expect(a2[51], 0xCFCECDCC);
-    expect(a2[64], 0x03020100);
-
-    a2 = new Uint32List.view(a1.buffer, 200);
-    expect(a2.length, (1024 - 200) ~/ 4);
-    expect(a2[0], 0xCBCAC9C8);
-    expect(a2[1], 0xCFCECDCC);
-    expect(a2[14], 0x03020100);
-
-    a2 = new Uint32List.view(a1.buffer, 456, 20);
-    expect(20, a2.length);
-    expect(a2[0], 0xCBCAC9C8);
-    expect(a2[1], 0xCFCECDCC);
-    expect(a2[14], 0x03020100);
-
-    // OPTIONALS a2 = new Uint32List.view(a1.buffer, length: 30, byteOffset: 456);
-    a2 = new Uint32List.view(a1.buffer, 456, 30);
-    expect(a2.length, 30);
-    expect(a2[0], 0xCBCAC9C8);
-    expect(a2[1], 0xCFCECDCC);
-    expect(a2[14], 0x03020100);
-  });
-}
diff --git a/tests/html/typed_arrays_3_test.dart b/tests/html/typed_arrays_3_test.dart
deleted file mode 100644
index b523c4c..0000000
--- a/tests/html/typed_arrays_3_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-
-library TypedArrays3Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('setElementsTest_dynamic', () {
-    var a1 = new Int8List(1024);
-
-    a1.setRange(4, 7, [0x50, 0x60, 0x70]);
-
-    var a2 = new Uint32List.view(a1.buffer);
-    expect(a2[0], 0x00000000);
-    expect(a2[1], 0x00706050);
-
-    a2.setRange(2, 3, [0x01020304]);
-    expect(a1[8], 0x04);
-    expect(a1[11], 0x01);
-  });
-
-  test('setElementsTest_typed', () {
-    Int8List a1 = new Int8List(1024);
-
-    a1.setRange(4, 7, [0x50, 0x60, 0x70]);
-
-    Uint32List a2 = new Uint32List.view(a1.buffer);
-    expect(a2[0], 0x00000000);
-    expect(a2[1], 0x00706050);
-
-    a2.setRange(2, 3, [0x01020304]);
-    expect(a1[8], 0x04);
-    expect(a1[11], 0x01);
-  });
-}
diff --git a/tests/html/typed_arrays_4_test.dart b/tests/html/typed_arrays_4_test.dart
deleted file mode 100644
index 3967d2b..0000000
--- a/tests/html/typed_arrays_4_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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.
-
-library TypedArrays4Test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('indexOf_dynamic', () {
-    var a1 = new Uint8List(1024);
-    for (int i = 0; i < a1.length; i++) {
-      a1[i] = i;
-    }
-
-    expect(a1.indexOf(50), 50);
-    expect(a1.indexOf(50, 50), 50);
-    expect(a1.indexOf(50, 51), 256 + 50);
-
-    expect(a1.lastIndexOf(50), 768 + 50);
-    expect(a1.lastIndexOf(50, 768 + 50), 768 + 50);
-    expect(a1.lastIndexOf(50, 768 + 50 - 1), 512 + 50);
-  });
-
-  test('indexOf_typed', () {
-    Uint8List a1 = new Uint8List(1024);
-    for (int i = 0; i < a1.length; i++) {
-      a1[i] = i;
-    }
-
-    expect(a1.indexOf(50), 50);
-    expect(a1.indexOf(50, 50), 50);
-    expect(a1.indexOf(50, 51), 256 + 50);
-
-    expect(a1.lastIndexOf(50), 768 + 50);
-    expect(a1.lastIndexOf(50, 768 + 50), 768 + 50);
-    expect(a1.lastIndexOf(50, 768 + 50 - 1), 512 + 50);
-  });
-}
diff --git a/tests/html/typed_arrays_5_test.dart b/tests/html/typed_arrays_5_test.dart
deleted file mode 100644
index 1e7578b..0000000
--- a/tests/html/typed_arrays_5_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.
-
-library typed_arrays_5_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('filter_dynamic', () {
-    var a = new Float32List(1024);
-    for (int i = 0; i < a.length; i++) {
-      a[i] = i.toDouble();
-    }
-
-    expect(a.where((x) => x >= 1000).length, equals(24));
-  });
-
-  test('filter_typed', () {
-    Float32List a = new Float32List(1024);
-    for (int i = 0; i < a.length; i++) {
-      a[i] = i.toDouble();
-    }
-
-    expect(a.where((x) => x >= 1000).length, equals(24));
-  });
-
-  test('contains', () {
-    var a = new Int16List(1024);
-    for (int i = 0; i < a.length; i++) {
-      a[i] = i;
-    }
-    expect(a.contains(0), isTrue);
-    expect(a.contains(5), isTrue);
-    expect(a.contains(1023), isTrue);
-
-    expect(a.contains(-5), isFalse);
-    expect(a.contains(-1), isFalse);
-    expect(a.contains(1024), isFalse);
-  });
-}
diff --git a/tests/html/typed_arrays_arraybuffer_test.dart b/tests/html/typed_arrays_arraybuffer_test.dart
deleted file mode 100644
index 13bd275..0000000
--- a/tests/html/typed_arrays_arraybuffer_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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.
-
-library typed_arrays_arraybuffer_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('constructor', () {
-    var a = new Int8List(100);
-    expect(a.lengthInBytes, 100);
-  });
-
-  test('sublist1', () {
-    var a = new Int8List(100);
-    var s = a.sublist(10, 40);
-    expect(s.length, 30);
-  });
-
-  test('sublist2', () {
-    var a = new Int8List(100);
-    expect(() => a.sublist(10, 400), throwsRangeError);
-  });
-
-  test('sublist3', () {
-    var a = new Int8List(100);
-    expect(() => a.sublist(50, 10), throwsRangeError);
-  });
-
-  test('sublist4', () {
-    var a = new Int8List(100);
-    expect(() => a.sublist(-90, -30), throwsRangeError);
-  });
-}
diff --git a/tests/html/typed_arrays_dataview_test.dart b/tests/html/typed_arrays_dataview_test.dart
deleted file mode 100644
index e704961..0000000
--- a/tests/html/typed_arrays_dataview_test.dart
+++ /dev/null
@@ -1,92 +0,0 @@
-// 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.
-
-library typed_arrays_dataview_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('create', () {
-    var bd = new ByteData(100);
-    expect(bd.lengthInBytes, 100);
-    expect(bd.offsetInBytes, 0);
-
-    var a1 = new Uint8List.fromList([1, 2, 3, 4, 5, 6, 7, 8]);
-
-    var bd2 = new ByteData.view(a1.buffer);
-    expect(bd2.lengthInBytes, 8);
-    expect(bd2.offsetInBytes, 0);
-
-    var bd3 = new ByteData.view(a1.buffer, 2);
-    expect(bd3.lengthInBytes, 6);
-    expect(bd3.offsetInBytes, 2);
-
-    var bd4 = new ByteData.view(a1.buffer, 3, 4);
-    expect(bd4.lengthInBytes, 4);
-    expect(bd4.offsetInBytes, 3);
-  });
-
-  test('access8', () {
-    var a1 = new Uint8List.fromList([0, 0, 3, 255, 0, 0, 0, 0, 0, 0]);
-
-    var bd = new ByteData.view(a1.buffer, 2, 6);
-
-    expect(bd.getInt8(0), equals(3));
-    expect(bd.getInt8(1), equals(-1));
-    expect(bd.getUint8(0), equals(3));
-    expect(bd.getUint8(1), equals(255));
-
-    bd.setInt8(2, -56);
-    expect(bd.getInt8(2), equals(-56));
-    expect(bd.getUint8(2), equals(200));
-
-    bd.setUint8(3, 200);
-    expect(bd.getInt8(3), equals(-56));
-    expect(bd.getUint8(3), equals(200));
-  });
-
-  test('access16', () {
-    var a1 = new Uint8List.fromList([0, 0, 3, 255, 0, 0, 0, 0, 0, 0]);
-
-    var bd = new ByteData.view(a1.buffer, 2);
-
-    expect(bd.lengthInBytes, equals(10 - 2));
-
-    expect(bd.getInt16(0), equals(1023));
-    expect(bd.getInt16(0, Endian.big), equals(1023));
-    expect(bd.getInt16(0, Endian.little), equals(-253));
-
-    expect(bd.getUint16(0), equals(1023));
-    expect(bd.getUint16(0, Endian.big), equals(1023));
-    expect(bd.getUint16(0, Endian.little), equals(0xFF03));
-
-    bd.setInt16(2, -1);
-    expect(bd.getInt16(2), equals(-1));
-    expect(bd.getUint16(2), equals(0xFFFF));
-  });
-
-  test('access32', () {
-    var a1 = new Uint8List.fromList([0, 0, 3, 255, 0, 0, 0, 0, 0, 0]);
-
-    var bd = new ByteData.view(a1.buffer);
-
-    expect(bd.getInt32(0), equals(1023));
-    expect(bd.getInt32(0, Endian.big), equals(1023));
-    expect(bd.getInt32(0, Endian.little), equals(-0xFD0000));
-
-    expect(bd.getUint32(0), equals(1023));
-    expect(bd.getUint32(0, Endian.big), equals(1023));
-    expect(bd.getUint32(0, Endian.little), equals(0xFF030000));
-  });
-}
diff --git a/tests/html/typed_arrays_range_checks_test.dart b/tests/html/typed_arrays_range_checks_test.dart
deleted file mode 100644
index 7c3b3b6..0000000
--- a/tests/html/typed_arrays_range_checks_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// 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.
-
-library TypedArraysRangeCheckTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-const N = 1024;
-
-class _TestList {
-  _TestList(int n);
-
-  operator [](int i) => i;
-  operator []=(int i, v) {}
-}
-
-_obfuscatedList() {
-  var a = new Uint8List(N);
-  var b = new _TestList(N);
-  var k = 0;
-  for (int i = 0; i < 10; ++i) {
-    k += i;
-  }
-  return (k == 45) ? a : b;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('outOfRangeAccess_dynamic', () {
-    var a = _obfuscatedList();
-
-    expect(() => a[a.length], throws);
-    expect(() => a[a.length + 1], throws);
-    expect(() => a[a.length + N], throws);
-
-    expect(() => a[-1], throws);
-    expect(() => a[1.5], throws);
-    expect(() => a['length'], throws);
-
-    expect(() => a[a.length] = 0xdeadbeef, throws);
-    expect(() => a[a.length + 1] = 0xdeadbeef, throws);
-    expect(() => a[a.length + N] = 0xdeadbeef, throws);
-
-    expect(() => a[-1] = 0xdeadbeef, throws);
-    expect(() => a[1.5] = 0xdeadbeef, throws);
-    expect(() => a['length'] = 1, throws);
-  });
-
-  test('outOfRange_typed', () {
-    Uint8List a = new Uint8List(N);
-
-    expect(() => a[a.length], throws);
-    expect(() => a[a.length + 1], throws);
-    expect(() => a[a.length + N], throws);
-
-    expect(() => a[-1], throws);
-    expect(() => a[1.5], throws);
-    expect(() => a['length'], throws);
-
-    expect(() => a[a.length] = 0xdeadbeef, throws);
-    expect(() => a[a.length + 1] = 0xdeadbeef, throws);
-    expect(() => a[a.length + N] = 0xdeadbeef, throws);
-
-    expect(() => a[-1] = 0xdeadbeef, throws);
-    expect(() => a[1.5] = 0xdeadbeef, throws);
-    expect(() => a['length'] = 1, throws);
-  });
-}
diff --git a/tests/html/typed_arrays_simd_test.dart b/tests/html/typed_arrays_simd_test.dart
deleted file mode 100644
index 67fc0c1..0000000
--- a/tests/html/typed_arrays_simd_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// 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.
-
-library TypedArraysSimdTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-const _FLOATING_POINT_ERROR = 0.0000000001;
-floatEquals(value) => closeTo(value, _FLOATING_POINT_ERROR);
-
-class MyFloat32x4 {
-  num x = 0.0;
-  num y = 0.0;
-  num z = 0.0;
-  num w = 0.0;
-}
-
-main() {
-  useHtmlConfiguration();
-
-  // Only perform tests if ArrayBuffer is supported.
-  if (!Platform.supportsTypedData) {
-    return;
-  }
-
-  test('test Float32x4', () {
-    if (Platform.supportsSimd) {
-      final val = new Float32x4(1.0, 2.0, 3.0, 4.0);
-      expect(val.x, floatEquals(1.0));
-      expect(val.y, floatEquals(2.0));
-      expect(val.z, floatEquals(3.0));
-      expect(val.w, floatEquals(4.0));
-      final val2 = val + val;
-      expect(val2.x, floatEquals(2.0));
-      expect(val2.y, floatEquals(4.0));
-      expect(val2.z, floatEquals(6.0));
-      expect(val2.w, floatEquals(8.0));
-    }
-  });
-
-  test('test Float32x4List', () {
-    var counter;
-    final list = new Float32List(12);
-    for (int i = 0; i < list.length; ++i) {
-      list[i] = i * 1.0;
-    }
-    if (Platform.supportsSimd) {
-      counter = new Float32x4.zero();
-      final simdlist = new Float32x4List.view(list.buffer);
-      for (int i = 0; i < simdlist.length; ++i) {
-        counter += simdlist[i];
-      }
-    } else {
-      counter = new MyFloat32x4();
-      for (int i = 0; i < list.length; i += 4) {
-        counter.x += list[i];
-        counter.y += list[i + 1];
-        counter.z += list[i + 2];
-        counter.w += list[i + 3];
-      }
-    }
-    expect(counter.x, floatEquals(12.0));
-    expect(counter.y, floatEquals(15.0));
-    expect(counter.z, floatEquals(18.0));
-    expect(counter.w, floatEquals(21.0));
-  });
-
-  test('test Int32x4', () {
-    if (Platform.supportsSimd) {
-      final val = new Int32x4(1, 2, 3, 4);
-      expect(val.x, equals(1));
-      expect(val.y, equals(2));
-      expect(val.z, equals(3));
-      expect(val.w, equals(4));
-      final val2 = val ^ val;
-      expect(val2.x, equals(0));
-      expect(val2.y, equals(0));
-      expect(val2.z, equals(0));
-      expect(val2.w, equals(0));
-    }
-  });
-}
diff --git a/tests/html/typing_test.dart b/tests/html/typing_test.dart
deleted file mode 100644
index 084de8c..0000000
--- a/tests/html/typing_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-library TypingTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isStyleSheetList =
-      predicate((x) => x is List<StyleSheet>, 'is a List<StyleSheet>');
-
-  test('NodeList', () {
-    List<Node> asList = window.document.querySelectorAll('body');
-    // Check it's Iterable
-    int counter = 0;
-    for (Node node in window.document.querySelectorAll('body')) {
-      counter++;
-    }
-    expect(counter, 1);
-    counter = 0;
-    window.document.querySelectorAll('body').forEach((e) {
-      counter++;
-    });
-    expect(counter, 1);
-  });
-
-  test('StyleSheetList', () {
-    List<StyleSheet> asList = window.document.styleSheets;
-    expect(asList, isStyleSheetList);
-    // Check it's Iterable.
-    int counter = 0;
-    for (StyleSheet styleSheet in window.document.styleSheets) {
-      counter++;
-    }
-
-    // There is one style sheet from the unittest framework.
-    expect(counter, 1);
-  });
-}
diff --git a/tests/html/unknownelement_test.dart b/tests/html/unknownelement_test.dart
deleted file mode 100644
index 0c97858..0000000
--- a/tests/html/unknownelement_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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
-
-library UnknownElementTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  var isUnknownElement =
-      predicate((x) => x is UnknownElement, 'is an UnknownELement');
-
-  var foo = new Element.tag('foo');
-  foo.id = 'foo';
-  var bar = new Element.tag('bar');
-  bar.id = 'bar';
-  document.body.nodes.addAll([foo, bar]);
-
-  test('type-check', () {
-    expect(foo, isUnknownElement);
-    expect(bar, isUnknownElement);
-    expect(querySelector('#foo'), equals(foo));
-    expect(querySelector('#bar'), equals(bar));
-  });
-
-  test('dispatch-fail', () {
-    expect(() => foo.method1(), throwsNoSuchMethodError);
-    expect(() => foo.field1, throwsNoSuchMethodError);
-    expect(() {
-      foo.field1 = 42;
-    }, throwsNoSuchMethodError);
-  });
-}
diff --git a/tests/html/uri_test.dart b/tests/html/uri_test.dart
deleted file mode 100644
index 90798849..0000000
--- a/tests/html/uri_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('Uri.base', () {
-    expect(Uri.base.scheme, "http");
-    expect(Uri.base.toString(), window.location.href);
-  });
-}
diff --git a/tests/html/url_test.dart b/tests/html/url_test.dart
deleted file mode 100644
index aa61fe5..0000000
--- a/tests/html/url_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// 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.
-
-library url_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-
-main() {
-  useHtmlConfiguration();
-
-  Blob createImageBlob() {
-    var canvas = new CanvasElement();
-    canvas.width = 100;
-    canvas.height = 100;
-
-    var context = canvas.context2D;
-    context.fillStyle = 'red';
-    context.fillRect(0, 0, canvas.width, canvas.height);
-
-    var dataUri = canvas.toDataUrl('image/png');
-    var byteString = window.atob(dataUri.split(',')[1]);
-    var mimeString = dataUri.split(',')[0].split(':')[1].split(';')[0];
-
-    var arrayBuffer = new Uint8List(byteString.length);
-    var dataArray = new Uint8List.view(arrayBuffer.buffer);
-    for (var i = 0; i < byteString.length; i++) {
-      dataArray[i] = byteString.codeUnitAt(i);
-    }
-
-    var blob = new Blob([arrayBuffer], 'image/png');
-    return blob;
-  }
-
-  group('blob', () {
-    test('createObjectUrlFromBlob', () {
-      var blob = createImageBlob();
-      var url = Url.createObjectUrlFromBlob(blob);
-      expect(url.length, greaterThan(0));
-      expect(url, startsWith('blob:'));
-
-      var img = new ImageElement();
-      img.onLoad.listen(expectAsync((_) {
-        expect(img.complete, true);
-      }));
-      img.onError.listen((_) {
-        fail('URL failed to load.');
-      });
-      img.src = url;
-    });
-
-    test('revokeObjectUrl', () {
-      var blob = createImageBlob();
-      var url = Url.createObjectUrlFromBlob(blob);
-      expect(url, startsWith('blob:'));
-      Url.revokeObjectUrl(url);
-
-      var img = new ImageElement();
-      // Image should fail to load since the URL was revoked.
-      img.onError.listen(expectAsync((_) {}));
-      img.onLoad.listen((_) {
-        fail('URL should not have loaded.');
-      });
-      img.src = url;
-    });
-  });
-}
diff --git a/tests/html/util.dart b/tests/html/util.dart
deleted file mode 100644
index 52735f2..0000000
--- a/tests/html/util.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-library test.html.util;
-
-import 'dart:html';
-import 'package:unittest/unittest.dart';
-
-void expectUnsupported(f) => expect(f, throwsUnsupportedError);
-
-void expectEmptyRect(ClientRect rect) {
-  expect(rect.bottom, isZero);
-  expect(rect.top, isZero);
-  expect(rect.left, isZero);
-  expect(rect.right, isZero);
-  expect(rect.height, isZero);
-  expect(rect.width, isZero);
-}
diff --git a/tests/html/utils.dart b/tests/html/utils.dart
deleted file mode 100644
index 4209f9b..0000000
--- a/tests/html/utils.dart
+++ /dev/null
@@ -1,219 +0,0 @@
-library TestUtils;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:js' as js;
-import 'dart:typed_data';
-import 'package:unittest/unittest.dart';
-
-/**
- * Verifies that [actual] has the same graph structure as [expected].
- * Detects cycles and DAG structure in Maps and Lists.
- */
-verifyGraph(expected, actual) {
-  var eItems = [];
-  var aItems = [];
-
-  message(path, reason) => path == ''
-      ? reason
-      : reason == null ? "path: $path" : "path: $path, $reason";
-
-  walk(path, expected, actual) {
-    if (expected is String || expected is num || expected == null) {
-      expect(actual, equals(expected), reason: message(path, 'not equal'));
-      return;
-    }
-
-    // Cycle or DAG?
-    for (int i = 0; i < eItems.length; i++) {
-      if (identical(expected, eItems[i])) {
-        expect(actual, same(aItems[i]),
-            reason: message(path, 'missing back or side edge'));
-        return;
-      }
-    }
-    for (int i = 0; i < aItems.length; i++) {
-      if (identical(actual, aItems[i])) {
-        expect(expected, same(eItems[i]),
-            reason: message(path, 'extra back or side edge'));
-        return;
-      }
-    }
-    eItems.add(expected);
-    aItems.add(actual);
-
-    if (expected is Blob) {
-      expect(actual is Blob, isTrue, reason: '$actual is Blob');
-      expect(expected.type, equals(actual.type),
-          reason: message(path, '.type'));
-      expect(expected.size, equals(actual.size),
-          reason: message(path, '.size'));
-      return;
-    }
-
-    if (expected is ByteBuffer) {
-      expect(actual is ByteBuffer, isTrue, reason: '$actual is ByteBuffer');
-      expect(expected.lengthInBytes, equals(actual.lengthInBytes),
-          reason: message(path, '.lengthInBytes'));
-      // TODO(antonm): one can create a view on top of those
-      // and check if contents identical.  Let's do it later.
-      return;
-    }
-
-    if (expected is DateTime) {
-      expect(actual is DateTime, isTrue, reason: '$actual is DateTime');
-      expect(expected.millisecondsSinceEpoch,
-          equals(actual.millisecondsSinceEpoch),
-          reason: message(path, '.millisecondsSinceEpoch'));
-      return;
-    }
-
-    if (expected is ImageData) {
-      expect(actual is ImageData, isTrue, reason: '$actual is ImageData');
-      expect(expected.width, equals(actual.width),
-          reason: message(path, '.width'));
-      expect(expected.height, equals(actual.height),
-          reason: message(path, '.height'));
-      walk('$path.data', expected.data, actual.data);
-      return;
-    }
-
-    if (expected is TypedData) {
-      expect(actual is TypedData, isTrue, reason: '$actual is TypedData');
-      walk('$path/.buffer', expected.buffer, actual.buffer);
-      expect(expected.offsetInBytes, equals(actual.offsetInBytes),
-          reason: message(path, '.offsetInBytes'));
-      expect(expected.lengthInBytes, equals(actual.lengthInBytes),
-          reason: message(path, '.lengthInBytes'));
-      // And also fallback to elements check below.
-    }
-
-    if (expected is List) {
-      expect(actual, isList, reason: message(path, '$actual is List'));
-      expect(actual.length, expected.length,
-          reason: message(path, 'different list lengths'));
-      for (var i = 0; i < expected.length; i++) {
-        walk('$path[$i]', expected[i], actual[i]);
-      }
-      return;
-    }
-
-    if (expected is Map) {
-      expect(actual, isMap, reason: message(path, '$actual is Map'));
-      for (var key in expected.keys) {
-        if (!actual.containsKey(key)) {
-          expect(false, isTrue, reason: message(path, 'missing key "$key"'));
-        }
-        walk('$path["$key"]', expected[key], actual[key]);
-      }
-      for (var key in actual.keys) {
-        if (!expected.containsKey(key)) {
-          expect(false, isTrue, reason: message(path, 'extra key "$key"'));
-        }
-      }
-      return;
-    }
-
-    expect(false, isTrue, reason: 'Unhandled type: $expected');
-  }
-
-  walk('', expected, actual);
-}
-
-/**
- * Sanitizer which does nothing.
- */
-class NullTreeSanitizer implements NodeTreeSanitizer {
-  void sanitizeTree(Node node) {}
-}
-
-/**
- * Validate that two DOM trees are equivalent.
- */
-void validateNodeTree(Node a, Node b, [String path = '']) {
-  path = '${path}${a.runtimeType}';
-  expect(a.nodeType, b.nodeType, reason: '$path nodeTypes differ');
-  expect(a.nodeValue, b.nodeValue, reason: '$path nodeValues differ');
-  expect(a.text, b.text, reason: '$path texts differ');
-  expect(a.nodes.length, b.nodes.length, reason: '$path nodes.lengths differ');
-
-  if (a is Element) {
-    Element bE = b;
-    Element aE = a;
-
-    expect(aE.tagName, bE.tagName, reason: '$path tagNames differ');
-    expect(aE.attributes.length, bE.attributes.length,
-        reason: '$path attributes.lengths differ');
-    for (var key in aE.attributes.keys) {
-      expect(aE.attributes[key], bE.attributes[key],
-          reason: '$path attribute [$key] values differ');
-    }
-  }
-  for (var i = 0; i < a.nodes.length; ++i) {
-    validateNodeTree(a.nodes[i], b.nodes[i], '$path[$i].');
-  }
-}
-
-/**
- * Upgrade all custom elements in the subtree which have not been upgraded.
- *
- * This is needed to cover timing scenarios which the custom element polyfill
- * does not cover.
- */
-void upgradeCustomElements(Node node) {
-  if (js.context.hasProperty('CustomElements') &&
-      js.context['CustomElements'].hasProperty('upgradeAll')) {
-    js.context['CustomElements'].callMethod('upgradeAll', [node]);
-  }
-}
-
-/**
- * A future that completes once all custom elements in the initial HTML page
- * have been upgraded.
- *
- * This is needed because the native implementation can update the elements
- * while parsing the HTML document, but the custom element polyfill cannot,
- * so it completes this future once all elements are upgraded.
- */
-// TODO(jmesserly): rename to webComponentsReady to match the event?
-Future customElementsReady = () {
-  if (_isReady) return new Future.value();
-
-  // Not upgraded. Wait for the polyfill to fire the WebComponentsReady event.
-  // Note: we listen on document (not on document.body) to allow this polyfill
-  // to be loaded in the HEAD element.
-  return document.on['WebComponentsReady'].first;
-}();
-
-// Return true if we are using the polyfill and upgrade is complete, or if we
-// have native document.register and therefore the browser took care of it.
-// Otherwise return false, including the case where we can't find the polyfill.
-bool get _isReady {
-  // If we don't have dart:js, assume things are ready
-  if (js.context == null) return true;
-
-  var customElements = js.context['CustomElements'];
-  if (customElements == null) {
-    // Return true if native document.register, otherwise false.
-    // (Maybe the polyfill isn't loaded yet. Wait for it.)
-    return document.supportsRegisterElement;
-  }
-
-  return customElements['ready'] == true;
-}
-
-/**
- * *Note* this API is primarily intended for tests. In other code it is better
- * to write it in a style that works with or without the polyfill, rather than
- * using this method.
- *
- * Synchronously trigger evaluation of pending lifecycle events, which otherwise
- * need to wait for a [MutationObserver] to signal the changes in the polyfill.
- * This method can be used to resolve differences in timing between native and
- * polyfilled custom elements.
- */
-void customElementsTakeRecords([Node node]) {
-  var customElements = js.context['CustomElements'];
-  if (customElements == null) return;
-  customElements.callMethod('takeRecords', [node]);
-}
diff --git a/tests/html/webgl_1_test.dart b/tests/html/webgl_1_test.dart
deleted file mode 100644
index 822683f..0000000
--- a/tests/html/webgl_1_test.dart
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright (c) 2013, 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 web_gl_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-import 'dart:web_gl';
-import 'dart:web_gl' as gl;
-
-// Test that WebGL is present in dart:web_gl API
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(RenderingContext.supported, isTrue);
-    });
-  });
-
-  group('functional', () {
-    test('unsupported fails', () {
-      var canvas = new CanvasElement();
-      var context = canvas.getContext3d();
-      if (RenderingContext.supported) {
-        expect(context, isNotNull);
-        expect(context, new isInstanceOf<RenderingContext>());
-      } else {
-        expect(context, isNull);
-      }
-    });
-
-    if (RenderingContext.supported) {
-      test('simple', () {
-        var canvas = new CanvasElement();
-        var context = canvas.getContext('experimental-webgl');
-        var shader = context.createShader(gl.VERTEX_SHADER);
-        context.shaderSource(shader, 'void main() { }');
-        context.compileShader(shader);
-        var success = context.getShaderParameter(shader, gl.COMPILE_STATUS);
-        expect(success, isTrue);
-      });
-
-      test('getContext3d', () {
-        var canvas = new CanvasElement();
-        var context = canvas.getContext3d();
-        expect(context, isNotNull);
-        expect(context, new isInstanceOf<RenderingContext>());
-
-        context = canvas.getContext3d(depth: false);
-        expect(context, isNotNull);
-        expect(context, new isInstanceOf<RenderingContext>());
-      });
-
-      test('texImage2D', () {
-        var canvas = new CanvasElement();
-        var context = canvas.getContext3d();
-        var pixels = new Uint8List.fromList([0, 0, 3, 255, 0, 0, 0, 0, 0, 0]);
-        context.texImage2DUntyped(1, 1, 1, 1, 10, 10, 1, 1, pixels);
-
-        canvas = new CanvasElement();
-        document.body.children.add(canvas);
-        var context2 = canvas.getContext('2d');
-        context.texImage2DData(
-            1, 1, 1, 1, 10, context2.getImageData(10, 10, 10, 10));
-
-        context.texImage2DImage(1, 1, 1, 1, 10, new ImageElement());
-        context.texImage2DCanvas(1, 1, 1, 1, 10, new CanvasElement());
-        context.texImage2DVideo(1, 1, 1, 1, 10, new VideoElement());
-      });
-
-      test('texSubImage2D', () {
-        var canvas = new CanvasElement();
-        var context = canvas.getContext3d();
-        var pixels = new Uint8List.fromList([0, 0, 3, 255, 0, 0, 0, 0, 0, 0]);
-        context.texSubImage2DUntyped(1, 1, 1, 1, 10, 10, 1, 1, pixels);
-
-        canvas = new CanvasElement();
-        document.body.children.add(canvas);
-        var context2 = canvas.getContext('2d');
-        context.texSubImage2DData(
-            1, 1, 1, 1, 1, 10, context2.getImageData(10, 10, 10, 10));
-
-        context.texSubImage2DImage(1, 1, 1, 1, 1, 10, new ImageElement());
-        context.texSubImage2DCanvas(1, 1, 1, 1, 1, 10, new CanvasElement());
-        context.texSubImage2DVideo(1, 1, 1, 1, 1, 10, new VideoElement());
-      });
-
-      test('getContextAttributes', () {
-        var canvas = new CanvasElement();
-        var context = canvas.getContext3d();
-        var attributes = context.getContextAttributes();
-
-        expect(attributes, isNotNull);
-        expect(attributes, new isInstanceOf<gl.ContextAttributes>());
-
-        expect(attributes.alpha, isBoolean);
-        expect(attributes.antialias, isBoolean);
-        expect(attributes.depth, isBoolean);
-        expect(attributes.premultipliedAlpha, isBoolean);
-        expect(attributes.preserveDrawingBuffer, isBoolean);
-        expect(attributes.stencil, isBoolean);
-      });
-    }
-  });
-}
-
-Matcher isBoolean = anyOf(isTrue, isFalse);
diff --git a/tests/html/webgl_extensions_test.dart b/tests/html/webgl_extensions_test.dart
deleted file mode 100644
index 20ee731..0000000
--- a/tests/html/webgl_extensions_test.dart
+++ /dev/null
@@ -1,198 +0,0 @@
-// 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 web_gl_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import 'dart:typed_data';
-import 'dart:web_gl';
-import 'dart:web_gl' as gl;
-
-// Test that various webgl extensions are available. Only test advertised
-// supported extensions. If the extension has methods, we just test the presence
-// of some methods - we don't test if functionality works.
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  if (!RenderingContext.supported) return;
-
-  const allExtensions = const [
-    'ANGLE_instanced_arrays',
-    'EXT_blend_minmax',
-    'EXT_color_buffer_float',
-    'EXT_color_buffer_half_float',
-    'EXT_disjoint_timer_query',
-    'EXT_frag_depth',
-    'EXT_sRGB',
-    'EXT_shader_texture_lod',
-    'EXT_texture_filter_anisotropic',
-    'OES_element_index_uint',
-    'OES_standard_derivatives',
-    'OES_texture_float',
-    'OES_texture_float_linear',
-    'OES_texture_half_float',
-    'OES_texture_half_float_linear',
-    'OES_vertex_array_object',
-    'WEBGL_color_buffer_float',
-    'WEBGL_compressed_texture_atc',
-    'WEBGL_compressed_texture_es3',
-    'WEBGL_compressed_texture_etc1',
-    'WEBGL_compressed_texture_pvrtc',
-    'WEBGL_compressed_texture_s3tc',
-    'WEBGL_debug_renderer_info',
-    'WEBGL_debug_shaders',
-    'WEBGL_depth_texture',
-    'WEBGL_draw_buffers',
-    'WEBGL_lose_context',
-  ];
-
-  getExtension(String name) {
-    expect(name, isIn(allExtensions), reason: 'unknown extension');
-    var canvas = new CanvasElement();
-    var context = canvas.getContext3d();
-    var supportedExtensions = context.getSupportedExtensions();
-    if (supportedExtensions.contains(name)) {
-      var extension = context.getExtension(name);
-      expect(extension, isNotNull);
-      return extension;
-    }
-    return null;
-  }
-
-  testType(name, typeMatcher) {
-    test('type', () {
-      var extension = getExtension(name);
-      if (extension == null) return;
-      expect(extension, typeMatcher);
-      // Ensure that isInstanceOf<X> is not instantiated for an erroneous type
-      // X.  If X is erroneous, there is only a warning at compile time and X is
-      // treated as dynamic, which would make the above line pass.
-      expect(1, isNot(typeMatcher), reason: 'invalid typeMatcher');
-    });
-  }
-
-  group('ANGLE_instanced_arrays', () {
-    const name = 'ANGLE_instanced_arrays';
-    testType(name, const isInstanceOf<AngleInstancedArrays>());
-    test('vertexAttribDivisorAngle', () {
-      var extension = getExtension(name);
-      if (extension == null) return;
-      expect(extension.vertexAttribDivisorAngle, isFunction);
-    });
-  });
-
-  group('EXT_blend_minmax', () {
-    testType('EXT_blend_minmax', const isInstanceOf<ExtBlendMinMax>());
-  });
-
-  group('EXT_frag_depth', () {
-    testType('EXT_frag_depth', const isInstanceOf<ExtFragDepth>());
-  });
-
-  group('EXT_sRGB', () {
-    testType('EXT_sRGB', const isInstanceOf<EXTsRgb>());
-  });
-
-  group('EXT_shader_texture_lod', () {
-    testType(
-        'EXT_shader_texture_lod', const isInstanceOf<ExtShaderTextureLod>());
-  });
-
-  group('EXT_texture_filter_anisotropic', () {
-    testType('EXT_texture_filter_anisotropic',
-        const isInstanceOf<ExtTextureFilterAnisotropic>());
-  });
-
-  group('OES_element_index_uint', () {
-    testType(
-        'OES_element_index_uint', const isInstanceOf<OesElementIndexUint>());
-  });
-
-  group('OES_standard_derivatives', () {
-    testType('OES_standard_derivatives',
-        const isInstanceOf<OesStandardDerivatives>());
-  });
-
-  group('OES_texture_float', () {
-    testType('OES_texture_float', const isInstanceOf<OesTextureFloat>());
-  });
-
-  group('OES_texture_float_linear', () {
-    testType('OES_texture_float_linear',
-        const isInstanceOf<OesTextureFloatLinear>());
-  });
-
-  group('OES_texture_half_float', () {
-    testType(
-        'OES_texture_half_float', const isInstanceOf<OesTextureHalfFloat>());
-  });
-
-  group('OES_texture_half_float_linear', () {
-    testType('OES_texture_half_float_linear',
-        const isInstanceOf<OesTextureHalfFloatLinear>());
-  });
-
-  group('OES_vertex_array_object', () {
-    testType(
-        'OES_vertex_array_object', const isInstanceOf<OesVertexArrayObject>());
-  });
-
-  group('WEBGL_compressed_texture_atc', () {
-    testType('WEBGL_compressed_texture_atc',
-        const isInstanceOf<CompressedTextureAtc>());
-  });
-
-  group('WEBGL_compressed_texture_etc1', () {
-    testType('WEBGL_compressed_texture_etc1',
-        const isInstanceOf<CompressedTextureETC1>());
-  });
-
-  group('WEBGL_compressed_texture_pvrtc', () {
-    testType('WEBGL_compressed_texture_pvrtc',
-        const isInstanceOf<CompressedTexturePvrtc>());
-  });
-
-  group('WEBGL_compressed_texture_s3tc', () {
-    testType('WEBGL_compressed_texture_s3tc',
-        const isInstanceOf<CompressedTextureS3TC>());
-  });
-
-  group('WEBGL_debug_renderer_info', () {
-    testType(
-        'WEBGL_debug_renderer_info', const isInstanceOf<DebugRendererInfo>());
-  });
-
-  group('WEBGL_debug_shaders', () {
-    testType('WEBGL_debug_shaders', const isInstanceOf<DebugShaders>());
-  });
-
-  group('WEBGL_depth_texture', () {
-    testType('WEBGL_depth_texture', const isInstanceOf<DepthTexture>());
-  });
-
-  group('WEBGL_draw_buffers', () {
-    const name = 'WEBGL_draw_buffers';
-    testType(name, const isInstanceOf<DrawBuffers>());
-    test('drawBuffersWebgl', () {
-      var extension = getExtension(name);
-      if (extension == null) return;
-      expect(extension.drawBuffersWebgl, isFunction);
-    });
-  });
-
-  group('WEBGL_lose_context', () {
-    const name = 'WEBGL_lose_context';
-    testType(name, const isInstanceOf<LoseContext>());
-    test('loseContext', () {
-      var extension = getExtension(name);
-      if (extension == null) return;
-      expect(extension.loseContext, isFunction);
-    });
-  });
-}
-
-Matcher isFunction = const isInstanceOf<Function>();
diff --git a/tests/html/websocket_test.dart b/tests/html/websocket_test.dart
deleted file mode 100644
index 73b78ca..0000000
--- a/tests/html/websocket_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-library WebSocketTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(WebSocket.supported, true);
-    });
-  });
-
-  group('websocket', () {
-    var isWebSocket = predicate((x) => x is WebSocket, 'is a WebSocket');
-    var expectation = WebSocket.supported ? returnsNormally : throws;
-
-    test('constructorTest', () {
-      expect(() {
-        var socket = new WebSocket('ws://localhost/ws', 'chat');
-        expect(socket, isNotNull);
-        expect(socket, isWebSocket);
-      }, expectation);
-    });
-
-    if (WebSocket.supported) {
-      test('echo', () {
-        var socket = new WebSocket('ws://${window.location.host}/ws');
-
-        socket.onOpen.first.then((_) {
-          socket.send('hello!');
-        });
-
-        return socket.onMessage.first.then((MessageEvent e) {
-          expect(e.data, 'hello!');
-          socket.close();
-        });
-      });
-
-      test('error handling', () {
-        var socket = new WebSocket('ws://${window.location.host}/ws');
-        socket.onOpen.first.then((_) => socket.send('close-with-error'));
-        return socket.onError.first.then((e) {
-          print('$e was caught, yay!');
-          socket.close();
-        });
-      });
-    }
-  });
-}
diff --git a/tests/html/websql_test.dart b/tests/html/websql_test.dart
deleted file mode 100644
index 3e98cc5..0000000
--- a/tests/html/websql_test.dart
+++ /dev/null
@@ -1,128 +0,0 @@
-library WebDBTest;
-
-import 'dart:async';
-import 'dart:html';
-import 'dart:web_sql';
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'package:async_helper/async_helper.dart';
-
-Future<SqlResultSet> createTable(
-    SqlTransaction transaction, String tableName, String columnName) async {
-  return transaction.executeSql('CREATE TABLE $tableName ($columnName)', []);
-}
-
-Future<SqlResultSet> insertTable(SqlTransaction transaction, String tableName,
-    String columnName, value) async {
-  final sql = 'INSERT INTO $tableName ($columnName) VALUES (?)';
-  return transaction.executeSql(sql, [value]);
-}
-
-Future<SqlResultSet> queryTable(
-    SqlTransaction transaction, String tableName) async {
-  final sql = 'SELECT * FROM $tableName';
-  return transaction.executeSql(sql, []);
-}
-
-Future<SqlResultSet> dropTable(SqlTransaction transaction, String tableName,
-    [bool ignoreFailure = false]) async {
-  try {
-    var result = await transaction.executeSql('DROP TABLE $tableName', []);
-    return result;
-  } catch (error) {
-    if (!ignoreFailure) throw error;
-  }
-}
-
-final tableName = 'test_table';
-final columnName = 'test_data';
-
-SqlDatabase db;
-SqlTransaction tx;
-
-Future setup() async {
-  if (SqlDatabase.supported) {
-    db = await window.openDatabase('test_db', '1.0', 'test_db', 1024 * 1024);
-    expect(db, isNotNull, reason: 'Unable to open database');
-
-    tx = await db.transaction_future();
-    expect(tx, isNotNull, reason: "Transaction not ready");
-  }
-}
-
-main() async {
-  useHtmlIndividualConfiguration();
-
-  await setup();
-
-  group('Database', () {
-    test('supported', () {
-      expect(SqlDatabase.supported, true);
-    });
-  });
-
-  group('Database', () {
-    test('Open/Transaction', () async {
-      if (!SqlDatabase.supported) return;
-
-      expect(tx, isNotNull, reason: "Transaction not ready");
-
-      // Should not succeed table doesn't exist to be dropped.
-      try {
-        await dropTable(tx, tableName);
-        expect(false, true, reason: "dropTable should fail");
-      } catch (error) {
-        expect(error.message,
-            "could not prepare statement (1 no such table: test_table)");
-      }
-    });
-
-    test('create', () async {
-      if (!SqlDatabase.supported) return;
-
-      expect(tx, isNotNull, reason: "Transaction not ready");
-      try {
-        SqlResultSet createResult =
-            await createTable(tx, tableName, columnName);
-        expect(createResult.insertId, 0);
-      } catch (error) {
-        expect(false, true, reason: "createTable failed - ${error.message}");
-      }
-    });
-
-    test('insert', () async {
-      if (!SqlDatabase.supported) return;
-
-      expect(tx, isNotNull, reason: "Transaction not ready");
-      try {
-        SqlResultSet insertResult =
-            await insertTable(tx, tableName, columnName, 'Some text data');
-        expect(insertResult.insertId, 1);
-        expect(insertResult.rowsAffected, 1);
-      } catch (error) {
-        expect(false, true, reason: "insert failed - ${error.message}");
-      }
-    });
-
-    test('query', () async {
-      if (!SqlDatabase.supported) return;
-
-      expect(tx, isNotNull, reason: "Transaction not ready");
-      try {
-        SqlResultSet queryResult = await queryTable(tx, tableName);
-        expect(queryResult.rows.length, 1);
-        expect(queryResult.rows[0]['test_data'], "Some text data");
-      } catch (error) {
-        expect(false, true, reason: "queryTable failed - ${error.message}");
-      }
-    });
-
-    test('cleanup', () async {
-      if (!SqlDatabase.supported) return;
-
-      expect(tx, isNotNull, reason: "Transaction not ready");
-      await dropTable(tx, tableName, true);
-    });
-  });
-}
diff --git a/tests/html/wheelevent_test.dart b/tests/html/wheelevent_test.dart
deleted file mode 100644
index 78db308c..0000000
--- a/tests/html/wheelevent_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2013, 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 wheel_event_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('wheelEvent', () {
-    var element = new DivElement();
-    var eventType = Element.mouseWheelEvent.getEventType(element);
-
-    element.onMouseWheel.listen(expectAsync((e) {
-      expect(e.screen.x, 100);
-      expect(e.deltaX, 0);
-      expect(e.deltaY.toDouble(), 240.0);
-      expect(e.deltaMode, WheelEvent.DOM_DELTA_PAGE);
-    }));
-    var event = new WheelEvent(eventType,
-        deltaX: 0,
-        deltaY: 240,
-        deltaMode: WheelEvent.DOM_DELTA_PAGE,
-        screenX: 100);
-    element.dispatchEvent(event);
-  });
-
-  test('wheelEvent with deltaZ', () {
-    var element = new DivElement();
-    var eventType = Element.mouseWheelEvent.getEventType(element);
-
-    element.onMouseWheel.listen(expectAsync((e) {
-      expect(e.deltaX, 0);
-      expect(e.deltaY, 0);
-      expect(e.screen.x, 0);
-      expect(e.deltaZ.toDouble(), 1.0);
-    }));
-    var event = new WheelEvent(eventType, deltaZ: 1.0);
-    element.dispatchEvent(event);
-  });
-
-  test('wheelEvent Stream', () {
-    var element = new DivElement();
-    var eventType = Element.mouseWheelEvent.getEventType(element);
-
-    element.onMouseWheel.listen(expectAsync((e) {
-      expect(e.screen.x, 100);
-      expect(e.deltaX.toDouble(), 240.0);
-      expect(e.deltaY, 0);
-    }));
-    var event = new WheelEvent(eventType, deltaX: 240, deltaY: 0, screenX: 100);
-    element.dispatchEvent(event);
-  });
-}
diff --git a/tests/html/window_eq_test.dart b/tests/html/window_eq_test.dart
deleted file mode 100644
index cfd9cb7..0000000
--- a/tests/html/window_eq_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-library WindowEqualityTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-  var obfuscated = null;
-
-  test('notNull', () {
-    expect(window, isNotNull);
-    expect(window, isNot(equals(obfuscated)));
-  });
-}
diff --git a/tests/html/window_mangling_test.dart b/tests/html/window_mangling_test.dart
deleted file mode 100644
index e06bee0..0000000
--- a/tests/html/window_mangling_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-library WindowManglingTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html' as dom;
-
-// Defined in dom.Window.
-get navigator => "Dummy";
-
-$eq(x, y) => false;
-$eq$(x, y) => false;
-
-main() {
-  useHtmlConfiguration();
-  var win = dom.window;
-
-  test('windowMethod', () {
-    final message = navigator;
-    final x = win.navigator;
-    expect(x, isNot(equals(message)));
-  });
-
-  test('windowEquals', () {
-    expect($eq(win, win), isFalse);
-    expect(win == win, isTrue);
-  });
-
-  test('windowEquals', () {
-    expect($eq$(win, win), isFalse);
-    expect(win == win, isTrue);
-  });
-}
diff --git a/tests/html/window_nosuchmethod_test.dart b/tests/html/window_nosuchmethod_test.dart
deleted file mode 100644
index a5acb03..0000000
--- a/tests/html/window_nosuchmethod_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-
-library WindowNSMETest;
-
-import "package:expect/expect.dart";
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html' as dom;
-
-// Not defined in dom.Window.
-foo(x) => x;
-
-class Unused {
-  foo(x) => 'not $x';
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-main() {
-  useHtmlConfiguration();
-  var things = [new Unused(), dom.window];
-
-  test('windowNonMethod', () {
-    var win = things[inscrutable(1)];
-    final message = foo("Hello World");
-    try {
-      String x = win.foo(message);
-      expect(false, isTrue, reason: 'Should not reach here: $x');
-    } on NoSuchMethodError catch (e) {
-      // Expected exception.
-    } on Exception catch (e) {
-      expect(false, isTrue, reason: 'Wrong exception: $e');
-    }
-  });
-
-  test('foo', () {
-    var win = things[inscrutable(0)];
-    String x = win.foo('bar');
-    expect(x, 'not bar');
-  });
-
-  // Use dom.window directly in case the compiler does type inference.
-  test('windowNonMethod2', () {
-    final message = foo("Hello World");
-    try {
-      String x = dom.window.foo(message);
-      expect(false, isTrue, reason: 'Should not reach here: $x');
-    } on NoSuchMethodError catch (e) {
-      // Expected exception.
-    } on Exception catch (e) {
-      expect(false, isTrue, reason: 'Wrong exception: $e');
-    }
-  });
-}
diff --git a/tests/html/window_test.dart b/tests/html/window_test.dart
deleted file mode 100644
index d3470d2..0000000
--- a/tests/html/window_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-library WindowTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlConfiguration();
-
-  test('scrollXY', () {
-    expect(window.scrollX, 0);
-    expect(window.scrollY, 0);
-  });
-}
diff --git a/tests/html/worker_api_test.dart b/tests/html/worker_api_test.dart
deleted file mode 100644
index 97103ab..0000000
--- a/tests/html/worker_api_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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 'dart:html';
-import 'dart:isolate';
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-worker(message) {
-  var uri = message[0];
-  var replyTo = message[1];
-  try {
-    var url = Url.createObjectUrl(new Blob([''], 'application/javascript'));
-    Url.revokeObjectUrl(url);
-    replyTo.send('Hello from Worker');
-  } catch (e) {
-    replyTo.send('Error: $e');
-  }
-}
-
-main() {
-  useHtmlConfiguration();
-
-  test('Use Worker API in Worker', () {
-    var response = new ReceivePort();
-    var remote = Isolate.spawn(worker, ['', response.sendPort]);
-    remote.then((_) => response.first).then(
-        expectAsync((reply) => expect(reply, equals('Hello from Worker'))));
-  });
-}
diff --git a/tests/html/worker_test.dart b/tests/html/worker_test.dart
deleted file mode 100644
index 783fcf0..0000000
--- a/tests/html/worker_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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 worker_test;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(Worker.supported, isTrue);
-    });
-  });
-
-  var workerScript = '''postMessage('WorkerMessage');''';
-
-  group('functional', () {
-    test('unsupported', () {
-      if (!Worker.supported) {
-        expect(() => new Worker('worker.js'), throws);
-      } else {
-        new Worker('worker.js').onError.first.then(expectAsync((e) {
-          // This event is expected, "worker.js" doesn't exist.  But the event
-          // *sometimes* propagates to window.onerror in Firefox which causes
-          // this test to fail, so let's stop any further propagation:
-          e.preventDefault();
-          e.stopImmediatePropagation();
-        }));
-      }
-    });
-
-    if (!Worker.supported) {
-      return;
-    }
-
-    test('works', () {
-      // Use Blob to make a local URL so we don't have to have a separate file.
-      var blob = new Blob([workerScript], 'text/javascript');
-      var url = Url.createObjectUrl(blob);
-      var worker = new Worker(url);
-      var test = expectAsync((e) {
-        expect(e.data, 'WorkerMessage');
-      });
-      worker.onMessage.first.then(test);
-    });
-  });
-}
diff --git a/tests/html/wrapping_collections_test.dart b/tests/html/wrapping_collections_test.dart
deleted file mode 100644
index 51e71e6..0000000
--- a/tests/html/wrapping_collections_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-library wrapping_collection_test;
-
-import 'dart:html';
-import 'dart:html_common';
-import 'dart:js' as js;
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-/// Test that if we access objects through JS-interop we get the
-/// appropriate objects, even if dart:html maps them.
-main() {
-  test("Access through JS-interop", () {
-    var performance = js.context['performance'];
-    var entries = performance.callMethod('getEntries', const []);
-    entries.forEach((x) {
-      expect(x is js.JsObject, isTrue);
-    });
-  });
-
-  test("Access through dart:html", () {
-    var dartPerformance = window.performance;
-    var dartEntries = dartPerformance.getEntries();
-    dartEntries.forEach((x) {
-      expect(x is PerformanceEntry, isTrue);
-    });
-  });
-}
diff --git a/tests/html/xhr_cross_origin_data.txt b/tests/html/xhr_cross_origin_data.txt
deleted file mode 100644
index 5872d96..0000000
--- a/tests/html/xhr_cross_origin_data.txt
+++ /dev/null
@@ -1 +0,0 @@
-{"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$openSearch":"http://a9.com/-/spec/opensearch/1.1/","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$issues":"http://schemas.google.com/projecthosting/issues/2009","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full"},"updated":{"$t":"2012-10-17T19:55:25.326Z"},"title":{"$t":"Issues - dart"},"subtitle":{"$t":"Issues - dart"},"link":[{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/list"},{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full"},{"rel":"http://schemas.google.com/g/2005#post","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full?alt=json&max-results=25"},{"rel":"next","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full?alt=json&start-index=26&max-results=25"}],"generator":{"$t":"ProjectHosting","version":"1.0","uri":"http://code.google.com/feeds/issues"},"openSearch$totalResults":{"$t":6004},"openSearch$startIndex":{"$t":1},"openSearch$itemsPerPage":{"$t":25},"entry":[{"gd$etag":"W/\"CE8DRX47eCl7ImA9WhdaEEw.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/1"},"published":{"$t":"2011-10-06T15:11:23.000Z"},"updated":{"$t":"2011-10-19T08:27:54.000Z"},"title":{"$t":"Process tests sometimes cause timeout on Linux"},"content":{"$t":"Either of the process tests\r\n\r\n  ProcessExitTest.dart\r\n  ProcessSegfaultTest.dart\r\n  ProcessStartExceptionTest.dart\r\n  ProcessStderrTest.dart\r\n  ProcessStdoutTest.dart\r\n\r\ncan hang on Linux. It happens once every ~25 runs.","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/1/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=1"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/1"}],"author":[{"name":{"$t":"sgjesse@google.com"},"uri":{"$t":"/u/sgjesse@google.com/"}}],"issues$cc":[{"issues$uri":{"$t":"/u/100337825224881731112/"},"issues$username":{"$t":"fmal...@google.com"}}],"issues$closedDate":{"$t":"2011-10-19T08:27:54.000Z"},"issues$id":{"$t":1},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$owner":{"issues$uri":{"$t":"/u/sgjesse@google.com/"},"issues$username":{"$t":"sgjesse@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"DUUAQH47eCl7ImA9WhdUGUU.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/2"},"published":{"$t":"2011-10-07T07:53:55.000Z"},"updated":{"$t":"2011-10-07T11:34:01.000Z"},"title":{"$t":"EchoServer tests occasionally crash on Windows"},"content":{"$t":"The EchoServer tests occasionally hits what should be an unreachable path.","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/2/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=2"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/2"}],"author":[{"name":{"$t":"ager@google.com"},"uri":{"$t":"/u/ager@google.com/"}}],"issues$cc":[{"issues$uri":{"$t":"/u/sgjesse@google.com/"},"issues$username":{"$t":"sgjesse@google.com"}}],"issues$closedDate":{"$t":"2011-10-07T11:34:01.000Z"},"issues$id":{"$t":2},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-High"},{"$t":"OpSys-Windows"}],"issues$owner":{"issues$uri":{"$t":"/u/ager@google.com/"},"issues$username":{"$t":"ager@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"DUYMQH47eCl7ImA9WhdbFE8.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/3"},"published":{"$t":"2011-10-10T10:34:32.000Z"},"updated":{"$t":"2011-10-12T13:46:21.000Z"},"title":{"$t":"Dart_Snapshot conflicting uses"},"content":{"$t":"Trying to build Dart after clean checkout from SVN gives me :\r\n\r\nruntime/vm/dart_api_impl.cc: In function ‘void* dart::Dart_CreateIsolate(void*, void*)’:\r\nruntime/vm/dart_api_impl.cc:38:71: error: declaration of ‘void* dart::Dart_CreateIsolate(void*, void*)’ with C language linkage\r\nruntime/include/dart_api.h:185:26: error: conflicts with previous declaration ‘void* Dart_CreateIsolate(const Dart_Snapshot*, void*)’\r\n\r\nI ended up changing the dart_api_impl.cc declaration to use const Dart_Snapshot* and did a cast to (void*) in order to call Dart::CreateIsolate((void*)snapshot, data);","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/3/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=3"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/3"}],"author":[{"name":{"$t":"nelson.s...@gmail.com"},"uri":{"$t":"/u/114313790760784276282/"}}],"issues$closedDate":{"$t":"2011-10-11T15:43:38.000Z"},"issues$id":{"$t":3},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$owner":{"issues$uri":{"$t":"/u/asiva@google.com/"},"issues$username":{"$t":"asiva@google.com"}},"issues$stars":{"$t":13},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"Dk4MRn47eCl7ImA9WhdbEkk.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/4"},"published":{"$t":"2011-10-10T10:44:36.000Z"},"updated":{"$t":"2011-10-10T11:09:47.000Z"},"title":{"$t":"Not-implemented iteration for objects"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n\r\n  main() {\r\n    var obj = {&quot;a&quot;: 1, &quot;b&quot;: 2};\r\n    for (var key in obj) {\r\n      print(key);\r\n    }\r\n  }\r\nhttp://try-dart-lang.appspot.com/s/EmEO\r\n\r\nWhat is the expected output?\r\na\r\nb\r\n\r\nWhat do you see instead?\r\nNoSuchMethodException - receiver: '' function name: 'iterator$named' arguments: []]\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\nOnline dart compiler.\r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\n\r\nIn the specification it says that &quot;for in&quot; construct is desugared into var n0 = e.iterator(); while (n0.hasNext()) { finalVarOrType id = n0.next();\r\nIt is not working because obj.iterator does not exist.","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/4/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=4"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/4"}],"author":[{"name":{"$t":"vjeuxx"},"uri":{"$t":"/u/vjeuxx/"}}],"issues$closedDate":{"$t":"2011-10-10T11:09:47.000Z"},"issues$id":{"$t":4},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Invalid"}},{"gd$etag":"W/\"AkIGQH47eCl7ImA9WhdbEks.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/5"},"published":{"$t":"2011-10-10T11:03:05.000Z"},"updated":{"$t":"2011-10-10T17:42:01.000Z"},"title":{"$t":"Variables in single/double quotes."},"content":{"$t":"Can we use the PHP view that single quotes don't contain variables, but double quotes do... this may help the parser in speed, but more importantly it means the programmer doesn't have to check for and escape variables in single quoted strings.","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/5/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=5"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/5"}],"author":[{"name":{"$t":"cr...@craigfrancis.co.uk"},"uri":{"$t":"/u/105349735893558381122/"}}],"issues$closedDate":{"$t":"2011-10-10T17:42:01.000Z"},"issues$id":{"$t":5},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$stars":{"$t":3},"issues$state":{"$t":"closed"},"issues$status":{"$t":"WontFix"}},{"gd$etag":"W/\"DEIGQX47eCl7ImA9WhRTEUg.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/6"},"published":{"$t":"2011-10-10T11:38:13.000Z"},"updated":{"$t":"2011-11-01T14:08:40.000Z"},"title":{"$t":"Type checking is broken"},"content":{"$t":"Use dartc_test to run:\r\n\r\nbool foo(bool bar()) =&gt; bar();\r\n\r\nbool bar() {}\r\n\r\nmain() {\r\n  foo(bar);\r\n}\r\n\r\nwith --enable_type_checks.\r\n\r\nAn error is thrown because the type of bar is not bool.\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/6/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=6"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/6"}],"author":[{"name":{"$t":"benl@google.com"},"uri":{"$t":"/u/benl@google.com/"}}],"issues$closedDate":{"$t":"2011-11-01T14:08:40.000Z"},"issues$id":{"$t":6},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Area-Compiler"}],"issues$owner":{"issues$uri":{"$t":"/u/jat@google.com/"},"issues$username":{"$t":"jat@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"DEEAQH47eCl7ImA9WhdbFE8.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/7"},"published":{"$t":"2011-10-10T12:32:40.000Z"},"updated":{"$t":"2011-10-12T13:37:21.000Z"},"title":{"$t":"declaredIndentifier typos in Dart Language Specification, Draft Version 0.01, October 10th, 2011"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n1. Open http://www.dartlang.org/docs/spec/dartLangSpec.pdf\r\n2. Search for &quot;indent&quot; (without the quotes)\r\n3. Notice how this should rather read ident instead.\r\n\r\n\u003cb\u003eWhat is the expected output? What do you see instead?\u003c/b\u003e\n\r\nI see what must be a typo.\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\n\r\nDart Programming Language Specification\r\nDraft Version 0.01\r\nThe Dart Team\r\nOctober 10th, 2011\r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\n\r\nHere is a copy/paste from the pdf (with the fi ligature manually reapaired). See my (sic) annotations for where I think the typos are:\r\n\r\n11.9\r\n\r\nTry\r\n\r\nThe try statement supports the definition of exception handling code in a struc-\r\ntured way.\r\n\r\ntryStatement:\r\ntry block (catchPart+ finallyPart? | finallyPart)\r\n;\r\n\r\ncatchPart:\r\ncatch ‘(’ declaredIndentifier (sic) (‘, ’ declaredIndentifier (sic))? ‘)’ block\r\n;\r\n\r\nfinallyPart:\r\nfinally block\r\n;\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/7/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=7"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/7"}],"author":[{"name":{"$t":"adrian.a...@gmail.com"},"uri":{"$t":"/u/114973624116584041537/"}}],"issues$closedDate":{"$t":"2011-10-12T13:37:21.000Z"},"issues$id":{"$t":7},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Component-Docs"}],"issues$owner":{"issues$uri":{"$t":"/u/102708310591662789853/"},"issues$username":{"$t":"gbra...@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Done"}},{"gd$etag":"W/\"D0QNQ347eCl7ImA9WhdbEkg.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/8"},"published":{"$t":"2011-10-10T12:46:09.000Z"},"updated":{"$t":"2011-10-10T14:03:12.000Z"},"title":{"$t":"Build Failure for standalone VM"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n&gt; Follow steps to build VM mentioned at http://code.google.com/p/dart/wiki/Building#Building_the_standalone_VM\r\n\r\n\u003cb\u003eWhat is the expected output? What do you see instead?\u003c/b\u003e\nBuild should be success, but it fails.\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\nLatest version.\r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\n\r\nError output:\r\n~/dart/runtime$ ../tools/build.py --arch=ia32\r\nmake -j 1 BUILDTYPE=Debug_ia32 all\r\n  CXX(target) out/Debug_ia32/obj.target/libdart/runtime/vm/dart_api_impl.o\r\ncc1plus: warnings being treated as errors\r\n../runtime/vm/dart_api_impl.cc: In function ‘void* dart::Dart_CreateIsolate(void*, void*)’:\r\n../runtime/vm/dart_api_impl.cc:38:71: error: declaration of ‘void* dart::Dart_CreateIsolate(void*, void*)’ with C language linkage\r\n../runtime/include/dart_api.h:185:26: error: conflicts with previous declaration ‘void* Dart_CreateIsolate(const Dart_Snapshot*, void*)’\r\nmake: *** [out/Debug_ia32/obj.target/libdart/runtime/vm/dart_api_impl.o] Error 1\r\nBUILD FAILED\r\n\r\n\r\nIs this a known issue? or am I doing something wrong?\r\n\r\nthanks,\r\nswarup","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/8/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=8"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/8"}],"author":[{"name":{"$t":"me.s...@gmail.com"},"uri":{"$t":"/u/112564033093352645938/"}}],"issues$closedDate":{"$t":"2011-10-10T14:03:12.000Z"},"issues$id":{"$t":8},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$mergedInto":{"issues$id":{"$t":3},"issues$project":{"$t":"dart"}},"issues$stars":{"$t":2},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Duplicate"}},{"gd$etag":"W/\"CEMMQH47eCl7ImA9WhdbE0g.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/9"},"published":{"$t":"2011-10-10T13:08:33.000Z"},"updated":{"$t":"2011-10-11T17:01:21.000Z"},"title":{"$t":"\"variable set but not used\" error during build of VM"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n1. &gt; Follow steps to build VM mentioned at http://code.google.com/p/dart/wiki/Building#Building_the_standalone_VM\r\n\r\n\u003cb\u003eWhat is the expected output? What do you see instead?\u003c/b\u003e\nI get some &quot;variable X set but not used&quot;-type warnings, that -Werror escalates to errors, halting the build.\r\nAs a temporary measure, I removed -Werror from all *.mk files, which allows me to build the standalone VM successfully.\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\nRecent svn on arch linux using gcc version 4.6.1 20110819 (prerelease) \r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\nHere is a full list of the warnings (without -Werror and therefor not turned to errors)\r\n\r\n\r\nthird_party/v8/src/ia32/full-codegen-ia32.cc: In member function ‘virtual void v8::internal::FullCodeGenerator::VisitCompareOperation(v8::internal::CompareOperation*)’:\r\nthird_party/v8/src/ia32/full-codegen-ia32.cc:4085:12: warning: variable ‘strict’ set but not used [-Wunused-but-set-variable]\r\n  CXX(host) out/Debug_ia32/obj.host/v8_base/third_party/v8/src/ia32/lithium-gap-resolver-ia32.o\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc: In member function ‘void v8::internal::LCodeGen::DoLoadKeyedFastDoubleElement(v8::internal::LLoadKeyedFastDoubleElement*)’:\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc:2235:12: warning: variable ‘elements’ set but not used [-Wunused-but-set-variable]\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc: In member function ‘void v8::internal::LCodeGen::DoStoreKeyedFastDoubleElement(v8::internal::LStoreKeyedFastDoubleElement*)’:\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc:3100:12: warning: variable ‘elements’ set but not used [-Wunused-but-set-variable]\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc:3101:12: warning: variable ‘key’ set but not used [-Wunused-but-set-variable]\r\n\r\n\r\nthird_party/v8/src/ia32/full-codegen-ia32.cc: In member function ‘virtual void v8::internal::FullCodeGenerator::VisitCompareOperation(v8::internal::CompareOperation*)’:\r\nthird_party/v8/src/ia32/full-codegen-ia32.cc:4085:12: warning: variable ‘strict’ set but not used [-Wunused-but-set-variable]\r\n  CXX(target) out/Debug_ia32/obj.target/v8_base/third_party/v8/src/ia32/lithium-gap-resolver-ia32.o\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc: In member function ‘void v8::internal::LCodeGen::DoLoadKeyedFastDoubleElement(v8::internal::LLoadKeyedFastDoubleElement*)’:\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc:2235:12: warning: variable ‘elements’ set but not used [-Wunused-but-set-variable]\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc: In member function ‘void v8::internal::LCodeGen::DoStoreKeyedFastDoubleElement(v8::internal::LStoreKeyedFastDoubleElement*)’:\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc:3100:12: warning: variable ‘elements’ set but not used [-Wunused-but-set-variable]\r\nthird_party/v8/src/ia32/lithium-codegen-ia32.cc:3101:12: warning: variable ‘key’ set but not used [-Wunused-but-set-variable]\r\n\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/9/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=9"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/9"}],"author":[{"name":{"$t":"waq...@gmail.com"},"uri":{"$t":"/u/110067472520212772478/"}}],"issues$closedDate":{"$t":"2011-10-10T13:20:54.000Z"},"issues$id":{"$t":9},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$mergedInto":{"issues$id":{"$t":43},"issues$project":{"$t":"dart"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Duplicate"}},{"gd$etag":"W/\"DE4GRX47eCl7ImA9WhdbGEo.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/10"},"published":{"$t":"2011-10-10T13:21:56.000Z"},"updated":{"$t":"2011-10-17T18:42:04.000Z"},"title":{"$t":"dartc build failure: private DartNode.setParent()"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n1. build dart compiler\r\n\r\n\u003cb\u003eWhat is the expected output? What do you see instead?\u003c/b\u003e\ndart/compiler/java/com/google/dart/compiler/ast/DartNode.java fails to compile with the following error:\r\n    [javac] /data/down/devel/dart/dart/compiler/java/com/google/dart/compiler/ast/DartNode.java:122: error: setParent(DartNode) has private access in DartNode\r\n    [javac]        child.setParent(this);\r\n    [javac]             ^\r\n\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\ndart svn, javac 1.7.0 on arch linux\r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\nMaking setParent() protected instead of private fixes the issue for me, allowing it to be called from protected method becomeParentOf() of the same class.\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/10/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=10"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/10"}],"author":[{"name":{"$t":"waq...@gmail.com"},"uri":{"$t":"/u/110067472520212772478/"}}],"issues$closedDate":{"$t":"2011-10-17T18:42:04.000Z"},"issues$id":{"$t":10},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Area-Compiler"}],"issues$owner":{"issues$uri":{"$t":"/u/116010686905328984286/"},"issues$username":{"$t":"johnl...@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"D0MCRH47eCl7ImA9WhdbEks.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/11"},"published":{"$t":"2011-10-10T14:07:17.000Z"},"updated":{"$t":"2011-10-10T16:51:05.000Z"},"title":{"$t":"Error in first online tutorial"},"content":{"$t":"\r\n1. Enter any 3 russian symbols instead of &quot;World&quot;\r\n2. Run.\r\n3. Program prints &quot;Hello, хуй!&quot;\r\n\r\nхуй - russian dirty word. Do you have russian programmers? ;)\r\n\r\nI'm using google chrome 14 to try this tutorial.\r\nIn some cases (when number of russian symbols is more then 3) it prints squares instead of letters (it's encoding problems i think ;)\r\n\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/11/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=11"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/11"}],"author":[{"name":{"$t":"podg...@gmail.com"},"uri":{"$t":"/u/105898658743680019064/"}}],"issues$closedDate":{"$t":"2011-10-10T16:51:05.000Z"},"issues$id":{"$t":11},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$owner":{"issues$uri":{"$t":"/u/100337825224881731112/"},"issues$username":{"$t":"fmal...@google.com"}},"issues$stars":{"$t":2},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"A0UBSH47eCl7ImA9WhdbE04.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/12"},"published":{"$t":"2011-10-10T14:28:03.000Z"},"updated":{"$t":"2011-10-11T13:20:59.000Z"},"title":{"$t":"compiler should be be independant of browser code"},"content":{"$t":"Request: Make the Dart-&gt;JS compiler as a seperate file from the browser checking code so that the project can be included in other projects such as Node.JS\r\n\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/12/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=12"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/12"}],"author":[{"name":{"$t":"xdr...@gmail.com"},"uri":{"$t":"/u/117476521218063886204/"}}],"issues$closedDate":{"$t":"2011-10-11T13:20:59.000Z"},"issues$id":{"$t":12},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$stars":{"$t":3},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Invalid"}},{"gd$etag":"W/\"CkEHQ347eCl7ImA9WhJSEkk.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/13"},"published":{"$t":"2011-10-10T14:33:33.000Z"},"updated":{"$t":"2012-07-02T14:50:32.000Z"},"title":{"$t":"Add C#-style extension methods"},"content":{"$t":"Unless I'm reading the spec and examples wrong, it looks as if Dart uses the horrific Java approach of providing utility methods that operate on a interface, by putting them as static methods within some class with a name like 'Arrays' or 'Collections'. This is nonsense, especially when Linq and extension methods in C# have demonstrated a far superior approach, and Dart should provide an equivalent mechanism.\r\n\r\nAn obvious, easy way to add this would be that top level functions can optionally be called on an object using the dot operator, in which case the calling instance is passed as the first function parameter.\r\n\r\nE.g. to write a generic first method that operates over an iterator for a supplied predicate:\r\n\r\nT first&lt;T&gt;(Iterator&lt;T&gt; iterator, bool predicate(T obj)) {\r\n    while (iterator.hasNext()) {\r\n        if (predicate(iterator.next()) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n\r\nThis could be called on an instance of an iterator as follows:\r\n\r\nvar jon = peopleIterator.first((p) =&gt; p.name == 'Jon');\r\n\r\nUsing extension methods that also return iterators, they can then chained together to form fluent expressions:\r\n\r\nvar fiveOldestJons = peopleInterator.where((p) =&gt; p.name == 'Jon').orderBy((p) =&gt; p.age).take(5);\r\n\r\nIt's worrying looking through the language design that you don't seem to looked much beyond JavaScript and Java for your inspiration in Dart. I can't speak for users of other languages, but I strongly doubt C# developers will be particularly impressed by a lot of the Java style anachronisms, and I'd urge you to cast your net a little more widely in general.","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/13/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=13"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/13"}],"author":[{"name":{"$t":"jon.rimmer"},"uri":{"$t":"/u/jon.rimmer/"}}],"issues$closedDate":{"$t":"2011-10-12T13:44:38.000Z"},"issues$id":{"$t":13},"issues$label":[{"$t":"Type-Enhancement"},{"$t":"Priority-Medium"},{"$t":"Area-Language"}],"issues$stars":{"$t":25},"issues$state":{"$t":"closed"},"issues$status":{"$t":"WontFix"}},{"gd$etag":"W/\"Ck4BRn47eCl7ImA9WhRaF04.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/14"},"published":{"$t":"2011-10-10T15:34:16.000Z"},"updated":{"$t":"2012-02-20T09:42:37.000Z"},"title":{"$t":"Add Tau constant to core Math class"},"content":{"$t":"With a new language, we are taking the opportunity to introduce better concepts, right? So please add Tau, the ratio of a circle's circumference to its radius (i.e. 2pi), to the Math class.\r\n\r\nLeave Math.PI as is, but please add Math.TAU\r\n\r\nThis is a safe addition with no side effects and minimal impact to the language and runtime.\r\n\r\nTau manifesto: http://tauday.com/\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/14/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=14"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/14"}],"author":[{"name":{"$t":"peter.ge...@gmail.com"},"uri":{"$t":"/u/116327704440122793403/"}}],"issues$closedDate":{"$t":"2012-02-16T00:26:22.000Z"},"issues$id":{"$t":14},"issues$label":[{"$t":"Type-Enhancement"},{"$t":"Priority-Medium"},{"$t":"Area-Library"}],"issues$owner":{"issues$uri":{"$t":"/u/jjb@google.com/"},"issues$username":{"$t":"jjb@google.com"}},"issues$stars":{"$t":17},"issues$state":{"$t":"closed"},"issues$status":{"$t":"WontFix"}},{"gd$etag":"W/\"DE8BQH47eCl7ImA9WhdaEkw.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/15"},"published":{"$t":"2011-10-10T15:36:24.000Z"},"updated":{"$t":"2011-10-21T17:07:31.000Z"},"title":{"$t":"jQuery integration"},"content":{"$t":"I may be mis-understanding dart, but I would like to put in a request that Google's engineers/someone smarter than me add jQuery as a possible library.\r\n\r\nFor instance, how would I accomplish the following using dart?\r\n\r\n&lt;pre&gt;\r\n$(&quot;p&quot;).click({function(){ alert(&quot;You clicked a paragraph tag!&quot;); });\r\n&lt;/pre&gt;\r\n\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/15/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=15"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/15"}],"author":[{"name":{"$t":"bri...@dearing-group.com"},"uri":{"$t":"/u/108006530617416183710/"}}],"issues$closedDate":{"$t":"2011-10-21T16:26:31.000Z"},"issues$id":{"$t":15},"issues$label":[{"$t":"Type-Enhancement"},{"$t":"Priority-Medium"},{"$t":"Area-UI"}],"issues$stars":{"$t":10},"issues$state":{"$t":"closed"},"issues$status":{"$t":"WontFix"}},{"gd$etag":"W/\"CUQNQ347eCl7ImA9WhdbE0g.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/16"},"published":{"$t":"2011-10-10T16:04:28.000Z"},"updated":{"$t":"2011-10-11T17:16:32.000Z"},"title":{"$t":"Generics disappear on try.dartlang.org"},"content":{"$t":"Go to try.dartlang.org, then insert and execute this code:\r\nclass PointlessValueWrapper {\r\n  PointlessValueWrapper(Type pointlessArgument);\r\n}\r\nmain() {\r\n  new PointlessValueWrapper(5);\r\n  new PointlessValueWrapper(&quot;Hello!&quot;);\r\n}\r\n\r\nAs expected, line 6 raises a warning.\r\n\r\nNow, open the link on the top right in a new tab. You'll see the same code, except the type parameters are missing. Because of this, line 2 now produces an error.\r\n\r\nI expect a tokeniser somewhere is misbehaving.\r\n\r\nUsing Firefox/Nightly (which is at version 10, at the moment).","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/16/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=16"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/16"}],"author":[{"name":{"$t":"pimmhoge...@gmail.com"},"uri":{"$t":"/u/117820825527967972339/"}}],"issues$closedDate":{"$t":"2011-10-11T17:16:32.000Z"},"issues$id":{"$t":16},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Area-Dartboard"}],"issues$owner":{"issues$uri":{"$t":"/u/103267283189406017873/"},"issues$username":{"$t":"knor...@google.com"}},"issues$stars":{"$t":0},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Verified"}},{"gd$etag":"W/\"D0UDRH47eCl7ImA9WhdbEks.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/17"},"published":{"$t":"2011-10-10T16:11:37.000Z"},"updated":{"$t":"2011-10-10T16:47:55.000Z"},"title":{"$t":"Can't build editor"},"content":{"$t":"In editor/build/README.txt:\r\n\r\n---\r\nTo begin, make sure the Dart plugin and feature sources are checked out from\r\nSVN. Edit rcpinit.sh to define the location of the TRUNK directory that was\r\nchecked out. Also checkout the usage profile plugin and feature from perforce.\r\nDefine that directory in rcpinit.sh as GDT_PROF. You only the the usage\r\nprofiler, not all of GPE.\r\n---\r\n\r\nBut google plugin for eclipse is not open-sourced yet:\r\nhttp://code.google.com/eclipse/docs/faq.html#source\r\n\r\nWhere can I find smth like /src/prof-git5/google3/third_party/java/google_plugin_eclipse/opensource/trunk\r\nfor building editor?","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/17/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=17"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/17"}],"author":[{"name":{"$t":"bats...@gmail.com"},"uri":{"$t":"/u/108382165757819799147/"}}],"issues$closedDate":{"$t":"2011-10-10T16:23:46.000Z"},"issues$id":{"$t":17},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Done"}},{"gd$etag":"W/\"CEYMRn47eCl7ImA9WhJbFU0.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/18"},"published":{"$t":"2011-10-10T16:31:10.000Z"},"updated":{"$t":"2012-09-24T15:56:27.000Z"},"title":{"$t":"Building dart on Mac OS X Lion with xcode 4"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n1. checkout source code\r\n2. run tools/build.py\r\n\r\nResult:\r\n=== BUILD NATIVE TARGET v8_base OF PROJECT v8 WITH CONFIGURATION Debug_x64 ===\r\n** BUILD FAILED **\r\n\r\nThe problem is in macosx sdk version. Google Dart needs 10.5 for building, but there are no macosx10.5 sdk in XCode 4 in Lion.\r\n\r\nWorkaround: specify sdk manually in build.py:\r\nIndex: tools/build.py\r\n===================================================================\r\n--- tools/build.py  (revision 296)\r\n+++ tools/build.py  (working copy)\r\n@@ -106,6 +106,8 @@\r\n         if os.path.exists('dart-%s.gyp' % CurrentDirectoryBaseName()):\r\n           project_file = 'dart-%s.xcodeproj' % CurrentDirectoryBaseName()\r\n         args = ['xcodebuild',\r\n+                '-sdk',\r\n+                'macosx10.6',\r\n                 '-project',\r\n                 project_file,\r\n                 '-target',\r\n\r\nFull instruction for workaround on Lion:\r\nhttp://batsuev.com/2011/10/building-google-dart-on-os-x-lion-with-xcode-4/\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/18/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=18"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/18"}],"author":[{"name":{"$t":"bats...@gmail.com"},"uri":{"$t":"/u/108382165757819799147/"}}],"issues$cc":[{"issues$uri":{"$t":"/u/efortuna@google.com/"},"issues$username":{"$t":"efortuna@google.com"}},{"issues$uri":{"$t":"/u/dgrove@google.com/"},"issues$username":{"$t":"dgrove@google.com"}}],"issues$id":{"$t":18},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Area-Build"},{"$t":"Milestone-M2"}],"issues$owner":{"issues$uri":{"$t":"/u/iposva@google.com/"},"issues$username":{"$t":"iposva@google.com"}},"issues$stars":{"$t":22},"issues$state":{"$t":"open"},"issues$status":{"$t":"Accepted"}},{"gd$etag":"W/\"D0EBSH47eCl7ImA9WhdbEko.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/19"},"published":{"$t":"2011-10-10T17:36:20.000Z"},"updated":{"$t":"2011-10-10T19:40:59.000Z"},"title":{"$t":"Integration with Eclipse"},"content":{"$t":"There should be a good integration towards common IDE's like Eclipse. ","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/19/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=19"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/19"}],"author":[{"name":{"$t":"ad...@trollweb.no"},"uri":{"$t":"/u/108751899022404107859/"}}],"issues$closedDate":{"$t":"2011-10-10T19:40:59.000Z"},"issues$id":{"$t":19},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$stars":{"$t":0},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Invalid"}},{"gd$etag":"W/\"DE4BRX47eCl7ImA9WhdbE0k.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/20"},"published":{"$t":"2011-10-10T17:48:37.000Z"},"updated":{"$t":"2011-10-11T15:29:14.000Z"},"title":{"$t":"typo in initial example on try-dart-lang.appspot.com"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n1. Visit http://try-dart-lang.appspot.com/\r\n\r\n\u003cb\u003eWhat is the expected output? What do you see instead?\u003c/b\u003e\n\r\nI expected to see coherent wording. Instead, I see &quot;When you run the code … it it submitted to AppEngine&quot;. I believe the intended wording was &quot;When you run the code, it is submitted to AppEngine&quot;.\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\n\r\nThe live version on Chrome and Fedora.\r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\n\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/20/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=20"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/20"}],"author":[{"name":{"$t":"mich...@ficarra.me"},"uri":{"$t":"/u/111990041337538184628/"}}],"issues$closedDate":{"$t":"2011-10-11T14:01:40.000Z"},"issues$id":{"$t":20},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Component-Docs"}],"issues$owner":{"issues$uri":{"$t":"/u/pdr@google.com/"},"issues$username":{"$t":"pdr@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"Ck8AQH47eCl7ImA9WhdbE0k.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/21"},"published":{"$t":"2011-10-10T17:55:20.000Z"},"updated":{"$t":"2011-10-11T13:47:21.000Z"},"title":{"$t":"Include Open Sans Bold web font in dartlang.org pages"},"content":{"$t":"The pages on dartlang.org use this tag to load Open Sans:\r\n\r\n&lt;link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'&gt;\r\n\r\nThis doesn't load the boldface file, while some parts like .intro &gt; dl &gt; dt are set in boldface. Currently this means that the regular font is made bold programmatically at these places, which looks very bad.\r\n\r\nInstead, please use this tag:\r\n\r\n&lt;link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'&gt;","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/21/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=21"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/21"}],"author":[{"name":{"$t":"sander.d...@gmail.com"},"uri":{"$t":"/u/117653750014788020856/"}}],"issues$closedDate":{"$t":"2011-10-11T13:47:21.000Z"},"issues$id":{"$t":21},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Component-Docs"}],"issues$owner":{"issues$uri":{"$t":"/u/drfibonacci@google.com/"},"issues$username":{"$t":"drfibonacci@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}},{"gd$etag":"W/\"CE4DR347eCl7ImA9WhJaEko.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/22"},"published":{"$t":"2011-10-10T18:47:48.000Z"},"updated":{"$t":"2012-10-03T14:02:56.000Z"},"title":{"$t":"Support non-nullable types."},"content":{"$t":"Short version: Null pointers are a really good way to mess up a program at runtime, and I'd like the Dart team to reevaluate whether they're absolutely required.\r\n\r\nSlightly longer version: I would say the #1 cause of issues in my programs (excluding logical errors/requirements errors) are NPEs. Having a language support NPE removal, be it via some clever compiler warning or simply removing null altogether, would be wonderful. I'm personally partial to Scala's method of null removal, but I'm sure PL gurus like yourselves have seen many others.\r\n\r\nDart has a stated goal of avoiding the creation of programs that &quot;are difficult to debug or maintain.&quot; NPEs are a huge pain point in this regard. I'd be really happy if the Dart team reevaluated whether they are absolutely required to achieve the other aims.","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/22/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=22"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/22"}],"author":[{"name":{"$t":"cfle...@gmail.com"},"uri":{"$t":"/u/117457048271408990845/"}}],"issues$id":{"$t":22},"issues$label":[{"$t":"Type-Enhancement"},{"$t":"Priority-Medium"},{"$t":"Area-Language"},{"$t":"Milestone-Later"}],"issues$owner":{"issues$uri":{"$t":"/u/102708310591662789853/"},"issues$username":{"$t":"gbra...@google.com"}},"issues$stars":{"$t":110},"issues$state":{"$t":"open"},"issues$status":{"$t":"Triaged"}},{"gd$etag":"W/\"A0YNSH47eCl7ImA9WhdbE04.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/23"},"published":{"$t":"2011-10-10T19:00:32.000Z"},"updated":{"$t":"2011-10-11T13:19:59.000Z"},"title":{"$t":"The example Fibonacci is not responsive most of the times"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n1. At dartland.org, choose the example Fibonacci.\r\n2. Instead of 20, as a parameter for the function Fib, use 50.\r\n\r\n\u003cb\u003eWhat is the expected output? What do you see instead?\u003c/b\u003e\nI was expecting a numeric output generated by the function. Instead, the page freezes or crashes.\r\n\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\nn/a. Google Chrome on Windows 7\r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\n\r\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/23/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=23"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/23"}],"author":[{"name":{"$t":"guilherm...@gmail.com"},"uri":{"$t":"/u/117803371227799387793/"}}],"issues$closedDate":{"$t":"2011-10-11T13:19:59.000Z"},"issues$id":{"$t":23},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$stars":{"$t":0},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Invalid"}},{"gd$etag":"W/\"CU8BSH47eCl7ImA9WhdbEko.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/24"},"published":{"$t":"2011-10-10T19:01:19.000Z"},"updated":{"$t":"2011-10-10T19:10:59.000Z"},"title":{"$t":"Allowing null pointers is undesirable"},"content":{"$t":"Short version: Null pointers are a really good way to mess up a program at runtime, and I'd like the Dart team to reevaluate whether they're absolutely required.\r\n\r\nSlightly longer version: I would say the #1 cause of issues in my programs (excluding logical errors/requirements errors) are NPEs. Having a language support NPE removal, be it via some clever compiler warning or simply removing null altogether, would be wonderful. I'm personally partial to Scala's method of null removal, but I'm sure PL gurus like yourselves have seen many others.\r\n\r\nDart has a stated goal of avoiding the creation of programs that &quot;are difficult to debug or maintain.&quot; NPEs are a huge pain point in this regard. I'd be really happy if the Dart team reevaluated whether they are absolutely required to achieve the other aims.","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/24/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=24"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/24"}],"author":[{"name":{"$t":"cfle...@gmail.com"},"uri":{"$t":"/u/117457048271408990845/"}}],"issues$closedDate":{"$t":"2011-10-10T19:10:59.000Z"},"issues$id":{"$t":24},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"}],"issues$mergedInto":{"issues$id":{"$t":22},"issues$project":{"$t":"dart"}},"issues$stars":{"$t":2},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Duplicate"}},{"gd$etag":"W/\"C0EBRX47eCl7ImA9WhdbE0k.\"","id":{"$t":"http://code.google.com/feeds/issues/p/dart/issues/full/25"},"published":{"$t":"2011-10-10T19:50:14.000Z"},"updated":{"$t":"2011-10-11T14:00:54.000Z"},"title":{"$t":"Another typo in http://try-dart-lang.appspot.com/ code comments"},"content":{"$t":"\u003cb\u003eWhat steps will reproduce the problem?\u003c/b\u003e\n1. Visit http://try-dart-lang.appspot.com/\r\n\r\n\u003cb\u003eWhat is the expected output? What do you see instead?\u003c/b\u003e\n\r\nIn addition to issue20, I spotted another typo, marked with (sic) below.\r\n\r\nThe first or second &quot;of&quot; can be deleted, whichever you prefer :-)\r\n\r\n&quot;// Here you can try out the Dart Language from the comfort of of (sic) your own&quot;\r\n\r\n\u003cb\u003eWhat version of the product are you using? On what operating system?\u003c/b\u003e\n\r\nAbove URL at the time of this issue submission.\r\n\r\n\u003cb\u003ePlease provide any additional information below.\u003c/b\u003e\n","type":"html"},"link":[{"rel":"replies","type":"application/atom+xml","href":"http://code.google.com/feeds/issues/p/dart/issues/25/comments/full"},{"rel":"alternate","type":"text/html","href":"http://code.google.com/p/dart/issues/detail?id=25"},{"rel":"self","type":"application/atom+xml","href":"https://code.google.com/feeds/issues/p/dart/issues/full/25"}],"author":[{"name":{"$t":"adrian.a...@gmail.com"},"uri":{"$t":"/u/114973624116584041537/"}}],"issues$closedDate":{"$t":"2011-10-11T14:00:54.000Z"},"issues$id":{"$t":25},"issues$label":[{"$t":"Type-Defect"},{"$t":"Priority-Medium"},{"$t":"Component-Docs"}],"issues$owner":{"issues$uri":{"$t":"/u/pdr@google.com/"},"issues$username":{"$t":"pdr@google.com"}},"issues$stars":{"$t":1},"issues$state":{"$t":"closed"},"issues$status":{"$t":"Fixed"}}]}}
diff --git a/tests/html/xhr_cross_origin_test.dart b/tests/html/xhr_cross_origin_test.dart
deleted file mode 100644
index b4d9f07..0000000
--- a/tests/html/xhr_cross_origin_test.dart
+++ /dev/null
@@ -1,110 +0,0 @@
-// 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.
-
-library XHRCrossOriginTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-import "dart:convert";
-
-/**
- * Examine the value of "crossOriginPort" as passed in from the url from
- * [window.location] to determine what the cross-origin port is for
- * this test.
- */
-// TODO(efortuna): If we need to use this function frequently, make a
-// url_analyzer library that is part of test.dart that these tests can import.
-int get crossOriginPort {
-  var searchUrl = window.location.search;
-  var crossOriginStr = 'crossOriginPort=';
-  var index = searchUrl.indexOf(crossOriginStr);
-  var nextArg = searchUrl.indexOf('&', index);
-  return int.parse(searchUrl.substring(index + crossOriginStr.length,
-      nextArg == -1 ? searchUrl.length : nextArg));
-}
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(HttpRequest.supportsCrossOrigin, isTrue);
-    });
-  });
-
-  group('functional', () {
-    var port = crossOriginPort;
-    var host = '${window.location.protocol}//${window.location.hostname}:$port';
-
-    test('XHR.get Cross-domain', () {
-      var gotError = false;
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
-      return HttpRequest.request(url).then((xhr) {
-        var data = json.decode(xhr.response);
-        expect(data, contains('feed'));
-        expect(data['feed'], contains('entry'));
-        expect(data, isMap);
-      }).catchError((error) {}, test: (error) {
-        gotError = true;
-        // Consume errors when not supporting cross origin.
-        return !HttpRequest.supportsCrossOrigin;
-      }).whenComplete(() {
-        // Expect that we got an error when cross origin is not supported.
-        expect(gotError, !HttpRequest.supportsCrossOrigin);
-      });
-    });
-
-    test('XHR.requestCrossOrigin', () {
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
-      return HttpRequest.requestCrossOrigin(url).then((response) {
-        expect(response, contains('feed'));
-      });
-    });
-
-    test('XHR.requestCrossOrigin errors', () {
-      var gotError = false;
-      return HttpRequest.requestCrossOrigin('does_not_exist').then((response) {
-        expect(true, isFalse, reason: '404s should fail request.');
-      }).catchError((error) {}, test: (error) {
-        gotError = true;
-        return true;
-      }).whenComplete(() {
-        expect(gotError, isTrue);
-      });
-    });
-
-    // Skip the rest if not supported.
-    if (!HttpRequest.supportsCrossOrigin) {
-      return;
-    }
-
-    test('XHR Cross-domain', () {
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
-      var xhr = new HttpRequest();
-      xhr.open('GET', url, async: true);
-      var validate = expectAsync((data) {
-        expect(data, contains('feed'));
-        expect(data['feed'], contains('entry'));
-        expect(data, isMap);
-      });
-      xhr.onReadyStateChange.listen((e) {
-        if (xhr.readyState == HttpRequest.DONE) {
-          validate(json.decode(xhr.response));
-        }
-      });
-      xhr.send();
-    });
-
-    test('XHR.getWithCredentials Cross-domain', () {
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
-      return HttpRequest.request(url, withCredentials: true).then((xhr) {
-        var data = json.decode(xhr.response);
-        expect(data, contains('feed'));
-        expect(data['feed'], contains('entry'));
-        expect(data, isMap);
-      });
-    });
-  });
-}
diff --git a/tests/html/xhr_test.dart b/tests/html/xhr_test.dart
deleted file mode 100644
index 4354461..0000000
--- a/tests/html/xhr_test.dart
+++ /dev/null
@@ -1,256 +0,0 @@
-// 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.
-
-library XHRTest;
-
-import 'dart:async';
-import 'dart:convert';
-import 'dart:html';
-import 'dart:typed_data';
-import 'package:unittest/html_individual_config.dart';
-import 'package:unittest/unittest.dart';
-
-main() {
-  useHtmlIndividualConfiguration();
-  // Cache blocker is a workaround for:
-  // https://code.google.com/p/dart/issues/detail?id=11834
-  var cacheBlocker = new DateTime.now().millisecondsSinceEpoch;
-  var url = '/root_dart/tests/html/xhr_cross_origin_data.txt?'
-      'cacheBlock=$cacheBlocker';
-
-  void validate200Response(xhr) {
-    expect(xhr.status, equals(200));
-    var data = json.decode(xhr.responseText);
-    expect(data, contains('feed'));
-    expect(data['feed'], contains('entry'));
-    expect(data, isMap);
-  }
-
-  void validate404(xhr) {
-    expect(xhr.status, equals(404));
-    // We cannot say much about xhr.responseText, most HTTP servers will
-    // include an HTML page explaining the error to a human.
-    String responseText = xhr.responseText;
-    expect(responseText, isNotNull);
-  }
-
-  group('supported_onProgress', () {
-    test('supported', () {
-      expect(HttpRequest.supportsProgressEvent, isTrue);
-    });
-  });
-
-  group('supported_onLoadEnd', () {
-    test('supported', () {
-      expect(HttpRequest.supportsLoadEndEvent, isTrue);
-    });
-  });
-
-  group('supported_overrideMimeType', () {
-    test('supported', () {
-      expect(HttpRequest.supportsOverrideMimeType, isTrue);
-    });
-  });
-
-  group('xhr', () {
-    test('XHR No file', () {
-      HttpRequest xhr = new HttpRequest();
-      xhr.open("GET", "NonExistingFile", async: true);
-      xhr.onReadyStateChange.listen(expectAsyncUntil((event) {
-        if (xhr.readyState == HttpRequest.DONE) {
-          validate404(xhr);
-        }
-      }, () => xhr.readyState == HttpRequest.DONE));
-      xhr.send();
-    });
-
-    test('XHR_file', () {
-      var loadEndCalled = false;
-
-      var xhr = new HttpRequest();
-      xhr.open('GET', url, async: true);
-      xhr.onReadyStateChange.listen(expectAsyncUntil((e) {
-        if (xhr.readyState == HttpRequest.DONE) {
-          validate200Response(xhr);
-
-          Timer.run(expectAsync(() {
-            expect(loadEndCalled, HttpRequest.supportsLoadEndEvent);
-          }));
-        }
-      }, () => xhr.readyState == HttpRequest.DONE));
-
-      xhr.onLoadEnd.listen((ProgressEvent e) {
-        loadEndCalled = true;
-      });
-      xhr.send();
-    });
-
-    test('XHR.request No file', () {
-      HttpRequest.request('NonExistingFile').then((_) {
-        fail('Request should not have succeeded.');
-      }, onError: expectAsync((error) {
-        var xhr = error.target;
-        expect(xhr.readyState, equals(HttpRequest.DONE));
-        validate404(xhr);
-      }));
-    });
-
-    test('XHR.request file', () {
-      HttpRequest.request(url).then(expectAsync((xhr) {
-        expect(xhr.readyState, equals(HttpRequest.DONE));
-        validate200Response(xhr);
-      }));
-    });
-
-    test('XHR.request onProgress', () {
-      var progressCalled = false;
-      HttpRequest.request(url, onProgress: (_) {
-        progressCalled = true;
-      }).then(expectAsync((xhr) {
-        expect(xhr.readyState, equals(HttpRequest.DONE));
-        expect(progressCalled, HttpRequest.supportsProgressEvent);
-        validate200Response(xhr);
-      }));
-    });
-
-    test('XHR.request withCredentials No file', () {
-      HttpRequest.request('NonExistingFile', withCredentials: true).then((_) {
-        fail('Request should not have succeeded.');
-      }, onError: expectAsync((error) {
-        var xhr = error.target;
-        expect(xhr.readyState, equals(HttpRequest.DONE));
-        validate404(xhr);
-      }));
-    });
-
-    test('XHR.request withCredentials file', () {
-      HttpRequest.request(url, withCredentials: true).then(expectAsync((xhr) {
-        expect(xhr.readyState, equals(HttpRequest.DONE));
-        validate200Response(xhr);
-      }));
-    });
-
-    test('XHR.getString file', () {
-      HttpRequest.getString(url).then(expectAsync((str) {}));
-    });
-
-    test('XHR.getString No file', () {
-      HttpRequest.getString('NonExistingFile').then((_) {
-        fail('Succeeded for non-existing file.');
-      }, onError: expectAsync((error) {
-        validate404(error.target);
-      }));
-    });
-
-    test('XHR.request responseType arraybuffer', () {
-      if (Platform.supportsTypedData) {
-        HttpRequest.request(url, responseType: 'arraybuffer', requestHeaders: {
-          'Content-Type': 'text/xml'
-        }).then(expectAsync((xhr) {
-          expect(xhr.status, equals(200));
-          var byteBuffer = xhr.response;
-          expect(byteBuffer, new isInstanceOf<ByteBuffer>());
-          expect(byteBuffer, isNotNull);
-        }));
-      }
-    });
-
-    test('overrideMimeType', () {
-      var expectation =
-          HttpRequest.supportsOverrideMimeType ? returnsNormally : throws;
-
-      expect(() {
-        HttpRequest.request(url, mimeType: 'application/binary');
-      }, expectation);
-    });
-
-    if (Platform.supportsTypedData) {
-      test('xhr upload', () {
-        var xhr = new HttpRequest();
-        var progressCalled = false;
-        xhr.upload.onProgress.listen((e) {
-          progressCalled = true;
-        });
-
-        xhr.open('POST',
-            '${window.location.protocol}//${window.location.host}/echo');
-
-        // 10MB of payload data w/ a bit of data to make sure it
-        // doesn't get compressed to nil.
-        var data = new Uint8List(1 * 1024 * 1024);
-        for (var i = 0; i < data.length; ++i) {
-          data[i] = i & 0xFF;
-        }
-        xhr.send(new Uint8List.view(data.buffer));
-
-        return xhr.onLoad.first.then((_) {
-          expect(progressCalled, isTrue, reason: 'onProgress should be fired');
-        });
-      });
-    }
-
-    test('xhr postFormData', () {
-      var data = {'name': 'John', 'time': '2 pm'};
-
-      var parts = [];
-      for (var key in data.keys) {
-        parts.add('${Uri.encodeQueryComponent(key)}='
-            '${Uri.encodeQueryComponent(data[key])}');
-      }
-      var encodedData = parts.join('&');
-
-      return HttpRequest
-          .postFormData(
-              '${window.location.protocol}//${window.location.host}/echo', data)
-          .then((xhr) {
-        expect(xhr.responseText, encodedData);
-      });
-    });
-  });
-
-  group('xhr_requestBlob', () {
-    test('XHR.request responseType blob', () {
-      if (Platform.supportsTypedData) {
-        return HttpRequest.request(url, responseType: 'blob').then((xhr) {
-          expect(xhr.status, equals(200));
-          var blob = xhr.response;
-          expect(blob is Blob, isTrue);
-          expect(blob, isNotNull);
-        });
-      }
-    });
-  });
-
-  group('json', () {
-    test('xhr responseType json', () {
-      var url = '${window.location.protocol}//${window.location.host}/echo';
-      var data = {
-        'key': 'value',
-        'a': 'b',
-        'one': 2,
-      };
-
-      HttpRequest
-          .request(url,
-              method: 'POST', sendData: json.encode(data), responseType: 'json')
-          .then(expectAsync((xhr) {
-        expect(xhr.status, equals(200));
-        var json = xhr.response;
-        expect(json, equals(data));
-      }));
-    });
-  });
-
-  group('headers', () {
-    test('xhr responseHeaders', () {
-      return HttpRequest.request(url).then((xhr) {
-        var contentTypeHeader = xhr.responseHeaders['content-type'];
-        expect(contentTypeHeader, isNotNull);
-        // Should be like: 'text/plain; charset=utf-8'
-        expect(contentTypeHeader.contains('text/plain'), isTrue);
-        expect(contentTypeHeader.contains('charset=utf-8'), isTrue);
-      });
-    });
-  });
-}
diff --git a/tests/html/xsltprocessor_test.dart b/tests/html/xsltprocessor_test.dart
deleted file mode 100644
index d70ce48..0000000
--- a/tests/html/xsltprocessor_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-library XSLTProcessorTest;
-
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_individual_config.dart';
-import 'dart:html';
-
-main() {
-  useHtmlIndividualConfiguration();
-
-  group('supported', () {
-    test('supported', () {
-      expect(XsltProcessor.supported, true);
-    });
-  });
-
-  group('functional', () {
-    var isXsltProcessor =
-        predicate((x) => x is XsltProcessor, 'is an XsltProcessor');
-
-    var expectation = XsltProcessor.supported ? returnsNormally : throws;
-
-    test('constructorTest', () {
-      expect(() {
-        var processor = new XsltProcessor();
-        expect(processor, isNotNull);
-        expect(processor, isXsltProcessor);
-      }, expectation);
-    });
-  });
-}
diff --git a/tests/isolate/bool_from_environment_default_value_test.dart b/tests/isolate/bool_from_environment_default_value_test.dart
deleted file mode 100644
index 1095e0e..0000000
--- a/tests/isolate/bool_from_environment_default_value_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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:isolate";
-
-import "package:expect/expect.dart";
-
-void test(port) {
-  Expect.isFalse(const bool.fromEnvironment('NOT_FOUND'));
-  Expect.isTrue(const bool.fromEnvironment('NOT_FOUND', defaultValue: true));
-  Expect.isFalse(const bool.fromEnvironment('NOT_FOUND', defaultValue: false));
-  Expect.isNull(const bool.fromEnvironment('NOT_FOUND', defaultValue: null));
-  if (port != null) port.send(null);
-}
-
-main() {
-  test(null);
-  var port = new ReceivePort();
-  Isolate.spawn(test, port.sendPort);
-  port.listen((_) => port.close());
-}
diff --git a/tests/isolate/browser/compute_this_script_browser_test.dart b/tests/isolate/browser/compute_this_script_browser_test.dart
deleted file mode 100644
index b7464fc..0000000
--- a/tests/isolate/browser/compute_this_script_browser_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-// Test that spawn works even when there are many script files in the page.
-// This requires computing correctly the URL to the orignal script, so we can
-// pass it to the web worker APIs.
-library compute_this_script;
-
-import 'dart:html';
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-import "../remote_unittest_helper.dart";
-
-child(var message) {
-  var data = message[0];
-  var reply = message[1];
-  reply.send('re: $data');
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  useHtmlConfiguration();
-  var script = new ScriptElement();
-  document.body.append(script);
-  test('spawn with other script tags in page', () {
-    ReceivePort port = new ReceivePort();
-    port.listen(expectAsync((msg) {
-      expect(msg, equals('re: hi'));
-      port.close();
-    }));
-
-    Isolate.spawn(child, ['hi', port.sendPort]);
-  });
-}
diff --git a/tests/isolate/browser/issue_12474_child.dart b/tests/isolate/browser/issue_12474_child.dart
deleted file mode 100644
index 510fdbb..0000000
--- a/tests/isolate/browser/issue_12474_child.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-import 'package:issue_12474_lib.dart';
-
-void main([args, port]) {
-  testPackageRoot(args);
-}
diff --git a/tests/isolate/browser/issue_12474_test.dart b/tests/isolate/browser/issue_12474_test.dart
deleted file mode 100644
index 2040bac..0000000
--- a/tests/isolate/browser/issue_12474_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=issue_12474_child.dart
-// OtherScripts=package/issue_12474_lib.dart
-
-import 'dart:isolate';
-
-final SPAWN_PACKAGE_ROOT = Uri.parse(".");
-
-void main([args, port]) {
-  var p = new ReceivePort();
-  Isolate.spawnUri(Uri.parse("issue_12474_child.dart"), [p.sendPort], {},
-      packageRoot: SPAWN_PACKAGE_ROOT);
-  p.listen((msg) {
-    print("Received message");
-    p.close();
-  });
-}
diff --git a/tests/isolate/browser/package/issue_12474_lib.dart b/tests/isolate/browser/package/issue_12474_lib.dart
deleted file mode 100644
index f9beb27..0000000
--- a/tests/isolate/browser/package/issue_12474_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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.
-
-void testPackageRoot(args) {
-  args[0].send(null);
-}
diff --git a/tests/isolate/browser/package_resolve_browser_hook2_test.dart b/tests/isolate/browser/package_resolve_browser_hook2_test.dart
deleted file mode 100644
index f87a9d8..0000000
--- a/tests/isolate/browser/package_resolve_browser_hook2_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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:js';
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-main() async {
-  useHtmlConfiguration();
-
-  setUp(() {
-    context['defaultPackagesBase'] = 'path1/';
-  });
-
-  test('hook overrides package-uri resolution', () async {
-    var uri = await Isolate.resolvePackageUri(Uri.parse('package:foo/bar.txt'));
-    expect(uri, Uri.base.resolve('path1/foo/bar.txt'));
-  });
-
-  test('hook is read once, on the first use of resolvePackageUri', () async {
-    await Isolate.resolvePackageUri(Uri.parse('package:foo/bar.txt'));
-    context['defaultPackagesBase'] = 'path2/';
-    var uri = await Isolate.resolvePackageUri(Uri.parse('package:foo/bar.txt'));
-    expect(uri, Uri.base.resolve('path1/foo/bar.txt'));
-  });
-}
diff --git a/tests/isolate/browser/package_resolve_browser_hook_test.dart b/tests/isolate/browser/package_resolve_browser_hook_test.dart
deleted file mode 100644
index 5c90474..0000000
--- a/tests/isolate/browser/package_resolve_browser_hook_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-main() async {
-  useHtmlConfiguration();
-
-  test('defaultPackagesBase hook overrides package-uri resolution', () async {
-    var uri = await Isolate.resolvePackageUri(Uri.parse('package:foo/bar.txt'));
-    expect(uri, Uri.base.resolve('path/set/from/hook/foo/bar.txt'));
-  });
-}
diff --git a/tests/isolate/browser/package_resolve_browser_hook_test.html b/tests/isolate/browser/package_resolve_browser_hook_test.html
deleted file mode 100644
index a3b67b6..0000000
--- a/tests/isolate/browser/package_resolve_browser_hook_test.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> mirrors_test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-</head>
-<body>
-  <h1> Running mirrors_test </h1>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  <script>
-  // Dart2js exposes this hook to override the default base path where resource
-  // package uris are resolved from.
-  defaultPackagesBase = 'path/set/from/hook/';
-  </script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/isolate/browser/package_resolve_browser_test.dart b/tests/isolate/browser/package_resolve_browser_test.dart
deleted file mode 100644
index 49ced93..0000000
--- a/tests/isolate/browser/package_resolve_browser_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-main() {
-  useHtmlConfiguration();
-
-  test('by default package-uri resolve under base/packages/', () async {
-    var uri = await Isolate.resolvePackageUri(Uri.parse('package:foo/bar.txt'));
-    expect(uri, Uri.base.resolve('packages/foo/bar.txt'));
-  });
-}
diff --git a/tests/isolate/browser/typed_data_message_test.dart b/tests/isolate/browser/typed_data_message_test.dart
deleted file mode 100644
index cf18958..0000000
--- a/tests/isolate/browser/typed_data_message_test.dart
+++ /dev/null
@@ -1,113 +0,0 @@
-// 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.
-
-// Dart test program for testing serialization of messages.
-// VMOptions=--enable_type_checks --enable_asserts
-
-library TypedDataMessageTest;
-
-import 'dart:isolate';
-import 'dart:typed_data';
-import 'package:unittest/unittest.dart';
-import "../remote_unittest_helper.dart";
-
-// ---------------------------------------------------------------------------
-// Message passing test.
-// ---------------------------------------------------------------------------
-
-List elements;
-
-void initializeList() {
-  elements = new List(3);
-  elements[0] = new Int8List(10);
-  for (int j = 0; j < 10; j++) {
-    elements[0][j] = j;
-  }
-  elements[1] = new ByteData.view(elements[0].buffer, 0, 10);
-  for (int j = 0; j < 10; j++) {
-    elements[1].setInt8(j, j + 100);
-  }
-  elements[2] = new Int8List.view(new Int8List(100).buffer, 50, 10);
-  for (int j = 0; j < 10; j++) {
-    elements[2][j] = j + 250;
-  }
-}
-
-void VerifyList(List expected, List actual) {
-  for (int i = 0; i < expected.length; i++) {
-    expect(actual[i], expected[i]);
-  }
-}
-
-void VerifyBytedata(ByteData expected, ByteData actual) {
-  for (int i = 0; i < expected.length; i++) {
-    expect(actual.getInt8(i), expected.getInt8(i));
-  }
-}
-
-void VerifyObject(int index, var actual) {
-  var expected = elements[index];
-  if (expected is List) {
-    expect(actual, isList);
-    VerifyList(expected, actual);
-  } else {
-    expect(true, actual is ByteData);
-    VerifyBytedata(expected, actual);
-  }
-  expect(actual.length, expected.length);
-}
-
-pingPong(SendPort initialReplyTo) {
-  var port = new ReceivePort();
-  initialReplyTo.send(port.sendPort);
-  initializeList();
-  int count = 0;
-  port.listen((var message) {
-    var data = message[0];
-    SendPort replyTo = message[1];
-    if (data == -1) {
-      port.close();
-      replyTo.send(count);
-    } else {
-      // Check if the received object is correct.
-      if (count < elements.length) {
-        VerifyObject(count, data);
-      }
-      // Bounce the received object back so that the sender
-      // can make sure that the object matches.
-      replyTo.send(data);
-      count++;
-    }
-  });
-}
-
-Future sendReceive(SendPort port, msg) {
-  ReceivePort response = new ReceivePort();
-  port.send([msg, response.sendPort]);
-  return response.first;
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  initializeList();
-  test("send objects and receive them back", () {
-    ReceivePort response = new ReceivePort();
-    Isolate.spawn(pingPong, response.sendPort);
-    response.first.then((SendPort remote) {
-      // Send objects and receive them back.
-      for (int i = 0; i < elements.length; i++) {
-        var sentObject = elements[i];
-        var idx = i;
-        sendReceive(remote, sentObject).then(expectAsync((var receivedObject) {
-          VerifyObject(idx, receivedObject);
-        }));
-      }
-
-      // Shutdown the MessageServer.
-      sendReceive(remote, -1).then(expectAsync((int message) {
-        expect(message, elements.length);
-      }));
-    });
-  });
-}
diff --git a/tests/isolate/capability_test.dart b/tests/isolate/capability_test.dart
deleted file mode 100644
index 589c5c6..0000000
--- a/tests/isolate/capability_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-void main() {
-  asyncStart();
-
-  test(c1, c2) {
-    asyncStart();
-    Expect.notEquals(c1, c2);
-    var receive = new RawReceivePort();
-    receive.sendPort.send(c1);
-    receive.handler = (c3) {
-      Expect.equals(c3, c1);
-      Expect.notEquals(c3, c2);
-      receive.close();
-      asyncEnd();
-    };
-  }
-
-  Capability c1 = new Capability();
-  Capability c2 = new Capability();
-  Capability c3 = (new RawReceivePort()..close()).sendPort;
-  Capability c4 = (new RawReceivePort()..close()).sendPort;
-  test(c1, c2);
-  test(c3, c4);
-  test(c1, c3);
-  asyncEnd();
-}
diff --git a/tests/isolate/checked_test.dart b/tests/isolate/checked_test.dart
deleted file mode 100644
index e807e17..0000000
--- a/tests/isolate/checked_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-void main([args, message]) {
-  if (message != null) return isolateMain(message);
-
-  bool isChecked = false;
-  assert((isChecked = true));
-  if (isChecked) return; // Skip this test in checked mode.
-
-  var responses = {};
-  var port = new RawReceivePort();
-  port.handler = (pair) {
-    responses[pair[0]] = pair[1];
-    if (responses.length == 3) {
-      port.close();
-      Expect.isTrue(responses[true], "true @ $isChecked");
-      Expect.isTrue(responses[false], "false @ $isChecked");
-      Expect.isTrue(responses[null], "null @ $isChecked");
-    }
-  };
-  test(checked) {
-    Isolate.spawnUri(
-        Uri.parse("checked_test.dart"), [], [checked, isChecked, port.sendPort],
-        checked: checked);
-  }
-
-  test(true);
-  test(false);
-  test(null);
-}
-
-void isolateMain(args) {
-  var checkedFlag = args[0];
-  var parentIsChecked = args[1];
-  var responsePort = args[2];
-  bool isChecked = false;
-  assert((isChecked = true));
-  bool expected = checkedFlag;
-  if (checkedFlag == null) expected = parentIsChecked;
-  responsePort.send([checkedFlag, expected == isChecked]);
-}
diff --git a/tests/isolate/compile_time_error_test.dart b/tests/isolate/compile_time_error_test.dart
deleted file mode 100644
index c81fb5e..0000000
--- a/tests/isolate/compile_time_error_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-// Dart test program for testing that errors thrown from isolates are
-// processed correctly and don't result in crashes.
-
-library Isolate3NegativeTest;
-
-import 'dart:isolate';
-import 'dart:async';
-import "package:async_helper/async_helper.dart";
-
-class TestClass {
-  TestClass.named(num this.fld1)
-  // Should cause a compilation error (for the spawned isolate). It is a
-  // runtime error for the test.
-    : fld2 = this.fld1 // //# 01: compile-time error
-  ;
-  num fld1;
-  num fld2;
-}
-
-void entry(SendPort replyTo) {
-  var tmp = new TestClass.named(10);
-  replyTo.send("done");
-}
-
-main() {
-  asyncStart();
-  ReceivePort response = new ReceivePort();
-  Isolate.spawn(entry, response.sendPort);
-  response.first.then((_) {
-    asyncEnd();
-  });
-}
diff --git a/tests/isolate/count_test.dart b/tests/isolate/count_test.dart
deleted file mode 100644
index d2a203c..0000000
--- a/tests/isolate/count_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// 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.
-
-library CountTest;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-void countMessages(replyTo) {
-  int count = 0;
-  var port = new ReceivePort();
-  replyTo.send(["init", port.sendPort]);
-  port.listen((message) {
-    if (message == -1) {
-      expect(count, 10);
-      replyTo.send(["done"]);
-      port.close();
-      return;
-    }
-    count++;
-    expect(message, count);
-    replyTo.send(["count", message * 2]);
-  });
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("count 10 consecutive messages", () {
-    ReceivePort local = new ReceivePort();
-    Isolate.spawn(countMessages, local.sendPort);
-    SendPort remote;
-    int count = 0;
-    var done = expectAsync(() {});
-    local.listen((msg) {
-      switch (msg[0]) {
-        case "init":
-          expect(remote, null);
-          remote = msg[1];
-          remote.send(++count);
-          break;
-        case "count":
-          expect(msg[1], count * 2);
-          if (count == 10) {
-            remote.send(-1);
-          } else {
-            remote.send(++count);
-          }
-          break;
-        case "done":
-          expect(count, 10);
-          local.close();
-          done();
-          break;
-        default:
-          fail("unreachable: ${msg[0]}");
-      }
-    });
-  });
-}
diff --git a/tests/isolate/cross_isolate_message_test.dart b/tests/isolate/cross_isolate_message_test.dart
deleted file mode 100644
index 683ecb3..0000000
--- a/tests/isolate/cross_isolate_message_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// 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.
-
-// Dart test program for testing that isolates can communicate to isolates
-// other than the main isolate.
-
-library CrossIsolateMessageTest;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-/*
- * Everything starts in the main-isolate (in the main-method).
- * The main isolate spawns two isolates: isolate1 (with entry point
- * 'crossIsolate1') and isolate2 (with entry point 'crossIsolate2').
- *
- * The main isolate creates two isolates, isolate1 and isolate2.
- * The second isolate is created with a send-port being listened on by
- * isolate1. A message is passed along this from isolate2 to isolate1.
- * Isolate1 then sends the result back to the main isolate for final checking.
- */
-
-void crossIsolate1(SendPort mainIsolate) {
-  ReceivePort local = new ReceivePort();
-  mainIsolate.send(["ready1", local.sendPort]);
-  local.first.then((msg) {
-    // Message from crossIsolate2
-    expect(msg[0], "fromIsolate2");
-    mainIsolate.send(["fromIsolate1", msg[1] + 58]); // 100.
-  });
-}
-
-void crossIsolate2(SendPort toIsolate1) {
-  toIsolate1.send(["fromIsolate2", 42]);
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("send message cross isolates ", () {
-    ReceivePort fromIsolate1 = new ReceivePort();
-    Isolate.spawn(crossIsolate1, fromIsolate1.sendPort);
-    var done = expectAsync(() {});
-    fromIsolate1.listen((msg) {
-      switch (msg[0]) {
-        case "ready1":
-          SendPort toIsolate1 = msg[1];
-          Isolate.spawn(crossIsolate2, toIsolate1);
-          break;
-        case "fromIsolate1":
-          expect(msg[1], 100);
-          fromIsolate1.close();
-          break;
-        default:
-          fail("unreachable! Tag: ${msg[0]}");
-      }
-    }, onDone: done);
-  });
-}
diff --git a/tests/isolate/deferred_in_isolate2_lib.dart b/tests/isolate/deferred_in_isolate2_lib.dart
deleted file mode 100644
index e3fea39..0000000
--- a/tests/isolate/deferred_in_isolate2_lib.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Used by deferred_in_isolate2_test.
-library deferred_in_isolate2_lib;
-
-String f() => "hi";
diff --git a/tests/isolate/deferred_in_isolate2_test.dart b/tests/isolate/deferred_in_isolate2_test.dart
deleted file mode 100644
index 50ef3d2..0000000
--- a/tests/isolate/deferred_in_isolate2_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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 deferred_in_isolate2_test;
-
-import 'dart:isolate';
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-import 'deferred_in_isolate2_lib.dart' deferred as lib;
-
-loadDeferred(port) {
-  lib.loadLibrary().then((_) {
-    port.send(lib.f());
-  });
-}
-
-main() {
-  test("Deferred loading in isolate", () {
-    ReceivePort port = new ReceivePort();
-    port.first.then(expectAsync((msg) {
-      expect(msg, equals("hi"));
-    }));
-    Isolate.spawn(loadDeferred, port.sendPort);
-  });
-}
diff --git a/tests/isolate/deferred_in_isolate_app.dart b/tests/isolate/deferred_in_isolate_app.dart
deleted file mode 100644
index 3c1f9dc..0000000
--- a/tests/isolate/deferred_in_isolate_app.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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 'deferred_in_isolate_lib.dart' deferred as test;
-
-void main(args, msg) {
-  assert(args != null);
-  assert(args.length == 1);
-  assert(msg != null);
-  assert(msg.length == 1);
-
-  var expectedMsg = args[0];
-  var replyPort = msg[0];
-
-  try {
-    print("BeforeLibraryLoading");
-
-    test.loadLibrary().then((_) {
-      var obj = new test.DeferredObj(expectedMsg);
-      replyPort.send(obj.toString());
-    }).catchError((error) {
-      replyPort.send("Error from isolate:\n$error");
-    });
-  } catch (exception, stacktrace) {
-    replyPort.send("Exception from isolate:\n$exception\n$stacktrace");
-  }
-}
diff --git a/tests/isolate/deferred_in_isolate_lib.dart b/tests/isolate/deferred_in_isolate_lib.dart
deleted file mode 100644
index ed7e475..0000000
--- a/tests/isolate/deferred_in_isolate_lib.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014, 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 deferred_in_isolate_lib;
-
-class DeferredObj {
-  DeferredObj(this._val);
-  toString() => "$_val";
-
-  var _val;
-}
diff --git a/tests/isolate/deferred_in_isolate_test.dart b/tests/isolate/deferred_in_isolate_test.dart
deleted file mode 100644
index 496b064..0000000
--- a/tests/isolate/deferred_in_isolate_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that deferred libraries are supported from isolates other than the root
-// isolate.
-
-import 'dart:isolate';
-
-main() {
-  try {
-    var receivePort = new RawReceivePort();
-    var expectedMsg = "Deferred Loaded.";
-
-    receivePort.handler = (msg) {
-      if (msg != expectedMsg) {
-        print("Test failed.");
-        throw msg; // Fail the test if the message is not expected.
-      }
-      print('Test done.');
-      receivePort.close();
-    };
-
-    var stopwatch = new Stopwatch()..start();
-    Isolate.spawnUri(new Uri(path: 'deferred_in_isolate_app.dart'),
-        [expectedMsg], [receivePort.sendPort]).then((isolate) {
-      print('Isolate spawn: ${stopwatch.elapsedMilliseconds}ms');
-    }).catchError((error) {
-      print(error);
-    });
-  } catch (exception, stackTrace) {
-    print('Test failed.');
-    print(exception);
-    print(stackTrace);
-    rethrow;
-  }
-}
diff --git a/tests/isolate/deferred_loaded_lib.dart b/tests/isolate/deferred_loaded_lib.dart
deleted file mode 100644
index 4fcc2d0..0000000
--- a/tests/isolate/deferred_loaded_lib.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2015, 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 FromChildIsolate {
-  String toString() => 'from child isolate';
-  int get fld => 10;
-}
diff --git a/tests/isolate/enum_const_test.dart b/tests/isolate/enum_const_test.dart
deleted file mode 100644
index 292ba89..0000000
--- a/tests/isolate/enum_const_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "package:expect/expect.dart";
-
-enum Foo { BAR, BAZ }
-
-verify(val) {
-  Expect.identical(Foo.BAR, val);
-}
-
-main() {
-  test1(); //# 01: ok
-  test2(); //# 02: ok
-}
-
-test1() => verify(Foo.BAR);
-
-test2() {
-  var rp;
-  rp = new RawReceivePort((val) {
-    verify(val);
-    rp.close();
-  });
-  rp.sendPort.send(Foo.BAR);
-}
diff --git a/tests/isolate/error_at_spawn_test.dart b/tests/isolate/error_at_spawn_test.dart
deleted file mode 100644
index 4f5b373..0000000
--- a/tests/isolate/error_at_spawn_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2015, 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 error_at_spawn;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-isomain(args) {
-  throw new ArgumentError("fast error");
-}
-
-main() {
-  asyncStart();
-
-  // Capture errors from other isolate as raw messages.
-  RawReceivePort errorPort = new RawReceivePort();
-  errorPort.handler = (message) {
-    String error = message[0];
-    String stack = message[1];
-    Expect.equals(new ArgumentError("fast error").toString(), "$error");
-    errorPort.close();
-    asyncEnd();
-  };
-
-  Isolate.spawn(isomain, null,
-      // Setup handler as part of spawn.
-      errorsAreFatal: false,
-      onError: errorPort.sendPort);
-}
diff --git a/tests/isolate/error_at_spawnuri_iso.dart b/tests/isolate/error_at_spawnuri_iso.dart
deleted file mode 100644
index b165051..0000000
--- a/tests/isolate/error_at_spawnuri_iso.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2015, 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 error_at_spawnuri_iso;
-
-main() {
-  throw new ArgumentError("fast error");
-}
diff --git a/tests/isolate/error_at_spawnuri_test.dart b/tests/isolate/error_at_spawnuri_test.dart
deleted file mode 100644
index d33ac09..0000000
--- a/tests/isolate/error_at_spawnuri_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// OtherScripts=error_at_spawnuri_iso.dart
-
-library error_at_spawnuri;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-main() {
-  asyncStart();
-
-  // Capture errors from other isolate as raw messages.
-  RawReceivePort errorPort = new RawReceivePort();
-  errorPort.handler = (message) {
-    String error = message[0];
-    String stack = message[1];
-    Expect.equals(new ArgumentError("fast error").toString(), "$error");
-    errorPort.close();
-    asyncEnd();
-  };
-
-  Isolate.spawnUri(Uri.parse("error_at_spawnuri_iso.dart"), [], null,
-      // Setup handler as part of spawn.
-      errorsAreFatal: false,
-      onError: errorPort.sendPort);
-}
diff --git a/tests/isolate/error_exit_at_spawn_test.dart b/tests/isolate/error_exit_at_spawn_test.dart
deleted file mode 100644
index c2d79fb..0000000
--- a/tests/isolate/error_exit_at_spawn_test.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2015, 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 error_exit_at_spawn;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-isomain(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    switch (v) {
-      case 0:
-        replyPort.send(42);
-        break;
-      case 1:
-        throw new ArgumentError("whoops");
-      case 2:
-        throw new RangeError.value(37);
-      case 3:
-        port.close();
-    }
-  };
-  replyPort.send(port.sendPort);
-}
-
-main() {
-  asyncStart();
-  // Setup the port for communication with the newly spawned isolate.
-  RawReceivePort reply = new RawReceivePort(null);
-  SendPort sendPort;
-  int state = 0;
-  reply.handler = (port) {
-    sendPort = port;
-    port.send(state);
-    reply.handler = (v) {
-      Expect.equals(0, state);
-      Expect.equals(42, v);
-      state++;
-      sendPort.send(state);
-    };
-  };
-
-  // Capture errors from other isolate as raw messages.
-  RawReceivePort errorPort = new RawReceivePort();
-  errorPort.handler = (message) {
-    String error = message[0];
-    String stack = message[1];
-    switch (state) {
-      case 1:
-        Expect.equals(new ArgumentError("whoops").toString(), "$error");
-        state++;
-        sendPort.send(state);
-        break;
-      case 2:
-        Expect.equals(new RangeError.value(37).toString(), "$error");
-        state++;
-        sendPort.send(state);
-        reply.close();
-        errorPort.close();
-        break;
-      default:
-        throw "Bad state for error: $state: $error";
-    }
-  };
-
-  // Get exit notifications from other isolate as raw messages.
-  RawReceivePort exitPort = new RawReceivePort();
-  exitPort.handler = (message) {
-    // onExit ports registered at spawn cannot have a particular message
-    // associated.
-    Expect.equals(null, message);
-    // Only exit after sending the termination message.
-    Expect.equals(3, state);
-    exitPort.close();
-    asyncEnd();
-  };
-
-  Isolate.spawn(isomain, reply.sendPort,
-      // Setup handlers as part of spawn.
-      errorsAreFatal: false,
-      onError: errorPort.sendPort,
-      onExit: exitPort.sendPort);
-}
diff --git a/tests/isolate/error_exit_at_spawnuri_iso.dart b/tests/isolate/error_exit_at_spawnuri_iso.dart
deleted file mode 100644
index 4c968f8..0000000
--- a/tests/isolate/error_exit_at_spawnuri_iso.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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 error_exit_at_spawnuri_iso;
-
-import "dart:isolate";
-
-main(args, replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    switch (v) {
-      case 0:
-        replyPort.send(42);
-        break;
-      case 1:
-        throw new ArgumentError("whoops");
-      case 2:
-        throw new RangeError.value(37);
-      case 3:
-        port.close();
-    }
-  };
-  replyPort.send(port.sendPort);
-}
diff --git a/tests/isolate/error_exit_at_spawnuri_test.dart b/tests/isolate/error_exit_at_spawnuri_test.dart
deleted file mode 100644
index b5bc362..0000000
--- a/tests/isolate/error_exit_at_spawnuri_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// OtherScripts=error_exit_at_spawnuri_iso.dart
-
-library error_exit_at_spawnuri;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-main() {
-  asyncStart();
-  // Setup the port for communication with the newly spawned isolate.
-  RawReceivePort reply = new RawReceivePort(null);
-  SendPort sendPort;
-  int state = 0;
-  reply.handler = (port) {
-    sendPort = port;
-    port.send(state);
-    reply.handler = (v) {
-      Expect.equals(0, state);
-      Expect.equals(42, v);
-      state++;
-      sendPort.send(state);
-    };
-  };
-
-  // Capture errors from other isolate as raw messages.
-  RawReceivePort errorPort = new RawReceivePort();
-  errorPort.handler = (message) {
-    String error = message[0];
-    String stack = message[1];
-    switch (state) {
-      case 1:
-        Expect.equals(new ArgumentError("whoops").toString(), "$error");
-        state++;
-        sendPort.send(state);
-        break;
-      case 2:
-        Expect.equals(new RangeError.value(37).toString(), "$error");
-        state++;
-        sendPort.send(state);
-        reply.close();
-        errorPort.close();
-        break;
-      default:
-        throw "Bad state for error: $state: $error";
-    }
-  };
-
-  // Get exit notifications from other isolate as raw messages.
-  RawReceivePort exitPort = new RawReceivePort();
-  exitPort.handler = (message) {
-    // onExit ports registered at spawn cannot have a particular message
-    // associated.
-    Expect.equals(null, message);
-    // Only exit after sending the termination message.
-    Expect.equals(3, state);
-    exitPort.close();
-    asyncEnd();
-  };
-
-  Isolate.spawnUri(
-      Uri.parse("error_exit_at_spawnuri_iso.dart"), [], reply.sendPort,
-      // Setup handlers as part of spawn.
-      errorsAreFatal: false,
-      onError: errorPort.sendPort,
-      onExit: exitPort.sendPort);
-}
diff --git a/tests/isolate/exit_at_spawn_test.dart b/tests/isolate/exit_at_spawn_test.dart
deleted file mode 100644
index 24bd819..0000000
--- a/tests/isolate/exit_at_spawn_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2015, 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 exit_at_spawn;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-// Isolate exiting immediately.
-isomain(args) {}
-
-// Isolate exiting after running microtasks.
-isomain2(args) {
-  scheduleMicrotask(() {});
-}
-
-// Isolate exiting after running timers.
-isomain3(args) {
-  new Timer(Duration.zero, () {});
-}
-
-main() {
-  asyncStart();
-
-  test(isomain);
-  test(isomain2);
-  test(isomain3);
-
-  asyncEnd();
-}
-
-void test(mainFunction) {
-  asyncStart();
-
-  RawReceivePort exitPort = new RawReceivePort();
-  exitPort.handler = (message) {
-    Expect.equals(null, message);
-    exitPort.close();
-    asyncEnd();
-  };
-
-  Isolate.spawn(mainFunction, null,
-      // Setup handler as part of spawn.
-      errorsAreFatal: false,
-      onExit: exitPort.sendPort);
-}
diff --git a/tests/isolate/exit_at_spawnuri_iso.dart b/tests/isolate/exit_at_spawnuri_iso.dart
deleted file mode 100644
index 9bc892e..0000000
--- a/tests/isolate/exit_at_spawnuri_iso.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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 exit_at_spawn_iso;
-
-main() {}
diff --git a/tests/isolate/exit_at_spawnuri_test.dart b/tests/isolate/exit_at_spawnuri_test.dart
deleted file mode 100644
index 68b3923..0000000
--- a/tests/isolate/exit_at_spawnuri_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// OtherScripts=exit_at_spawnuri_iso.dart
-
-library exit_at_spawn;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-main() {
-  asyncStart();
-
-  RawReceivePort exitPort = new RawReceivePort();
-  exitPort.handler = (message) {
-    Expect.equals(null, message);
-    exitPort.close();
-    asyncEnd();
-  };
-
-  Isolate.spawnUri(Uri.parse("exit_at_spawnuri_iso.dart"), [], null,
-      // Setup handler as part of spawn.
-      errorsAreFatal: false,
-      onExit: exitPort.sendPort);
-}
diff --git a/tests/isolate/function_send1_test.dart b/tests/isolate/function_send1_test.dart
deleted file mode 100644
index d766656..0000000
--- a/tests/isolate/function_send1_test.dart
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright (c) 2015, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-void toplevel(port, message) {
-  port.send("toplevel:$message");
-}
-
-Function createFuncToplevel() => (p, m) {
-      p.send(m);
-    };
-
-class C {
-  Function initializer;
-  Function body;
-  C()
-      : initializer = ((p, m) {
-          throw "initializer";
-        }) {
-    body = (p, m) {
-      throw "body";
-    };
-  }
-  static void staticFunc(port, message) {
-    port.send("static:$message");
-  }
-
-  static Function createFuncStatic() => (p, m) {
-        throw "static expr";
-      };
-  void instanceMethod(p, m) {
-    throw "instanceMethod";
-  }
-
-  Function createFuncMember() => (p, m) {
-        throw "instance expr";
-      };
-  void call(n, p) {
-    throw "C";
-  }
-}
-
-class Callable {
-  void call(p, m) {
-    p.send(["callable", m]);
-  }
-}
-
-void main() {
-  asyncStart();
-
-  // top-level functions, static functions, closures, instance methods
-  // or function expressions are not sendable to an isolate spawned using
-  // spawnUri.
-  testUnsendable("toplevel", toplevel);
-  testUnsendable("static", C.staticFunc);
-  var c = new C();
-  testUnsendable("instance method", c.instanceMethod);
-  testUnsendable("static context expression", createFuncToplevel());
-  testUnsendable("static context expression", C.createFuncStatic());
-  testUnsendable("initializer context expression", c.initializer);
-  testUnsendable("constructor context expression", c.body);
-  testUnsendable("instance method context expression", c.createFuncMember());
-  testUnsendable("toplevel", toplevel.call);
-  testUnsendable("static", C.staticFunc.call);
-  testUnsendable("callable object", new Callable().call);
-
-  asyncEnd();
-  return;
-}
-
-// Create a receive port that expects exactly one message.
-// Pass the message to `callback` and return the sendPort.
-SendPort singleMessagePort(callback) {
-  var p;
-  p = new RawReceivePort((v) {
-    p.close();
-    callback(v);
-  });
-  return p.sendPort;
-}
-
-// A singleMessagePort that expects the message to be a specific value.
-SendPort expectMessagePort(message) {
-  asyncStart();
-  return singleMessagePort((v) {
-    Expect.equals(message, v);
-    asyncEnd();
-  });
-}
-
-// Creates a new isolate and a pair of ports that expect a single message
-// to be sent to the other isolate and back to the callback function.
-Future<SendPort> echoPort(callback(value)) {
-  Completer<SendPort> completer = new Completer<SendPort>();
-  SendPort replyPort = singleMessagePort(callback);
-  RawReceivePort initPort;
-  initPort = new RawReceivePort((p) {
-    completer.complete(p);
-    initPort.close();
-  });
-  return Isolate.spawn(_echo, [replyPort, initPort.sendPort]).then(
-      (isolate) => completer.future);
-}
-
-void _echo(msg) {
-  var replyPort = msg[0];
-  RawReceivePort requestPort;
-  requestPort = new RawReceivePort((msg) {
-    replyPort.send(msg);
-    requestPort.close(); // Single echo only.
-  });
-  msg[1].send(requestPort.sendPort);
-}
-
-// Creates other isolate that waits for a single message, `msg`, on the returned
-// port, and executes it as `msg[0](msg[1],msg[2])` in the other isolate.
-Future<SendPort> callPort() {
-  Completer<SendPort> completer = new Completer<SendPort>();
-  SendPort initPort = singleMessagePort(completer.complete);
-  return Isolate.spawn(_call, initPort).then((_) => completer.future);
-}
-
-void _call(initPort) {
-  initPort.send(singleMessagePort(callFunc));
-}
-
-void testUnsendable(name, func) {
-  asyncStart();
-  Isolate
-      .spawnUri(Uri.parse("function_send_test.dart"), [], func)
-      .then((v) => throw "allowed spawn direct?", onError: (e, s) {
-    asyncEnd();
-  });
-  asyncStart();
-  Isolate.spawnUri(Uri.parse("function_send_test.dart"), [], [func]).then(
-      (v) => throw "allowed spawn wrapped?", onError: (e, s) {
-    asyncEnd();
-  });
-}
-
-void callFunc(message) {
-  message[0](message[1], message[2]);
-}
diff --git a/tests/isolate/function_send_test.dart b/tests/isolate/function_send_test.dart
deleted file mode 100644
index 4fbe3a4..0000000
--- a/tests/isolate/function_send_test.dart
+++ /dev/null
@@ -1,220 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-void toplevel(port, message) {
-  port.send("toplevel:$message");
-}
-
-Function createFuncToplevel() => (p, m) {
-      p.send(m);
-    };
-
-class C {
-  Function initializer;
-  Function body;
-  C()
-      : initializer = ((p, m) {
-          throw "initializer";
-        }) {
-    body = (p, m) {
-      throw "body";
-    };
-  }
-  static void staticFunc(port, message) {
-    port.send("static:$message");
-  }
-
-  static Function createFuncStatic() => (p, m) {
-        throw "static expr";
-      };
-  void instanceMethod(p, m) {
-    throw "instanceMethod";
-  }
-
-  Function createFuncMember() => (p, m) {
-        throw "instance expr";
-      };
-  void call(n, p) {
-    throw "C";
-  }
-}
-
-class Callable {
-  void call(p, m) {
-    p.send(["callable", m]);
-  }
-}
-
-void main() {
-  asyncStart();
-
-  // Sendables are top-level functions and static functions only.
-  testSendable("toplevel", toplevel);
-  testSendable("static", C.staticFunc);
-  // Unsendables are any closure - instance methods or function expression.
-  var c = new C();
-  testUnsendable("instance method", c.instanceMethod);
-  testUnsendable("static context expression", createFuncToplevel());
-  testUnsendable("static context expression", C.createFuncStatic());
-  testUnsendable("initializer context expression", c.initializer);
-  testUnsendable("constructor context expression", c.body);
-  testUnsendable("instance method context expression", c.createFuncMember());
-
-  // The result of `toplevel.call` and `staticFunc.call` may or may not be
-  // identical to `toplevel` and `staticFunc` respectively. If they are not
-  // equal, they may or may not be considered toplevel/static functions anyway,
-  // and therefore sendable. The VM and dart2js currently disagree on whether
-  // `toplevel` and `toplevel.call` are identical, both allow them to be sent.
-  // If this is ever specified to something else, use:
-  //     testUnsendable("toplevel.call", toplevel.call);
-  //     testUnsendable("static.call", C.staticFunc.call);
-  // instead.
-  // These two tests should be considered canaries for accidental behavior
-  // change rather than requirements.
-  testSendable("toplevel", toplevel.call);
-  testSendable("static", C.staticFunc.call);
-
-  // Callable objects are sendable if general objects are (VM yes, dart2js no).
-  // It's unspecified whether arbitrary objects can be sent. If it is specified,
-  // add a test that `new Callable()` is either sendable or unsendable.
-
-  // The call method of a callable object is a closure holding the object,
-  // not a top-level or static function, so it should be blocked, just as
-  // a normal method.
-  testUnsendable("callable object", new Callable().call);
-
-  asyncEnd();
-  return;
-}
-
-// Create a receive port that expects exactly one message.
-// Pass the message to `callback` and return the sendPort.
-SendPort singleMessagePort(callback) {
-  var p;
-  p = new RawReceivePort((v) {
-    p.close();
-    callback(v);
-  });
-  return p.sendPort;
-}
-
-// A singleMessagePort that expects the message to be a specific value.
-SendPort expectMessagePort(message) {
-  asyncStart();
-  return singleMessagePort((v) {
-    Expect.equals(message, v);
-    asyncEnd();
-  });
-}
-
-void testSendable(name, func) {
-  // Function as spawn message.
-  Isolate.spawn(callFunc, [func, expectMessagePort("$name:spawn"), "spawn"]);
-
-  // Send function to same isolate.
-  var reply = expectMessagePort("$name:direct");
-  singleMessagePort(callFunc).send([func, reply, "direct"]);
-
-  // Send function to other isolate, call it there.
-  reply = expectMessagePort("$name:other isolate");
-  callPort().then((p) {
-    p.send([func, reply, "other isolate"]);
-  });
-
-  // Round-trip function trough other isolate.
-  echoPort((roundtripFunc) {
-    Expect.identical(func, roundtripFunc, "$name:send through isolate");
-  }).then((port) {
-    port.send(func);
-  });
-}
-
-// Creates a new isolate and a pair of ports that expect a single message
-// to be sent to the other isolate and back to the callback function.
-Future<SendPort> echoPort(callback(value)) {
-  Completer<SendPort> completer = new Completer<SendPort>();
-  SendPort replyPort = singleMessagePort(callback);
-  RawReceivePort initPort;
-  initPort = new RawReceivePort((p) {
-    completer.complete(p);
-    initPort.close();
-  });
-  return Isolate.spawn(_echo, [replyPort, initPort.sendPort]).then(
-      (isolate) => completer.future);
-}
-
-void _echo(msg) {
-  var replyPort = msg[0];
-  RawReceivePort requestPort;
-  requestPort = new RawReceivePort((msg) {
-    replyPort.send(msg);
-    requestPort.close(); // Single echo only.
-  });
-  msg[1].send(requestPort.sendPort);
-}
-
-// Creates other isolate that waits for a single message, `msg`, on the returned
-// port, and executes it as `msg[0](msg[1],msg[2])` in the other isolate.
-Future<SendPort> callPort() {
-  Completer<SendPort> completer = new Completer<SendPort>();
-  SendPort initPort = singleMessagePort(completer.complete);
-  return Isolate.spawn(_call, initPort).then((_) => completer.future);
-}
-
-void _call(initPort) {
-  initPort.send(singleMessagePort(callFunc));
-}
-
-void testUnsendable(name, func) {
-  asyncStart();
-  Isolate.spawn(nop, func).then((v) => throw "allowed spawn direct?",
-      onError: (e, s) {
-    asyncEnd();
-  });
-  asyncStart();
-  Isolate.spawn(nop, [func]).then((v) => throw "allowed spawn wrapped?",
-      onError: (e, s) {
-    asyncEnd();
-  });
-
-  asyncStart();
-  var noReply = new RawReceivePort((_) {
-    throw "Unexpected message: $_";
-  });
-  Expect.throws(() {
-    noReply.sendPort.send(func);
-  }, null, "send direct");
-  Expect.throws(() {
-    noReply.sendPort.send([func]);
-  }, null, "send wrapped");
-  scheduleMicrotask(() {
-    noReply.close();
-    asyncEnd();
-  });
-
-  // Try sending through other isolate.
-  asyncStart();
-  echoPort((v) {
-    Expect.equals(0, v);
-  }).then((p) {
-    try {
-      p.send(func);
-    } finally {
-      p.send(0); //   Closes echo port.
-    }
-  }).then((p) => throw "unreachable 2", onError: (e, s) {
-    asyncEnd();
-  });
-}
-
-void nop(_) {}
-
-void callFunc(message) {
-  message[0](message[1], message[2]);
-}
diff --git a/tests/isolate/handle_error2_test.dart b/tests/isolate/handle_error2_test.dart
deleted file mode 100644
index 5a9b908..0000000
--- a/tests/isolate/handle_error2_test.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2014, 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 handle_error_test;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    switch (v) {
-      case 0:
-        replyPort.send(42);
-        break;
-      case 1:
-        throw new ArgumentError("whoops");
-      case 2:
-        throw new RangeError.value(37);
-      case 3:
-        port.close();
-    }
-  };
-  replyPort.send(port.sendPort);
-}
-
-/// Do Isolate.spawn(entry) and get a sendPort from the isolate that it
-/// expects commands on.
-/// The isolate has errors set to non-fatal.
-/// Returns a list of `[isolate, commandPort]` in a future.
-Future spawn(entry) {
-  ReceivePort reply = new ReceivePort();
-  Future<Isolate> isolate = Isolate.spawn(entry, reply.sendPort, paused: true);
-  return isolate.then((Isolate isolate) {
-    isolate.setErrorsFatal(false);
-    isolate.resume(isolate.pauseCapability);
-    Future result = reply.first.then((sendPort) {
-      return [isolate, sendPort];
-    });
-    return result;
-  });
-}
-
-main() {
-  asyncStart();
-  RawReceivePort reply = new RawReceivePort(null);
-  // Create two isolates waiting for commands, with errors non-fatal.
-  Future iso1 = spawn(isomain1);
-  Future iso2 = spawn(isomain1);
-  Future.wait([iso1, iso2]).then((l) {
-    var isolate1 = l[0][0];
-    var sendPort1 = l[0][1];
-    var isolate2 = l[1][0];
-    var sendPort2 = l[1][1];
-    Stream errors = isolate1.errors; // Broadcast stream, never a done message.
-    int state = 1;
-    var subscription;
-    subscription = errors.listen(null, onError: (error, stack) {
-      switch (state) {
-        case 1:
-          Expect.equals(new ArgumentError("whoops").toString(), "$error");
-          state++;
-          break;
-        case 2:
-          Expect.equals(new RangeError.value(37).toString(), "$error");
-          state++;
-          reply.close();
-          subscription.cancel();
-          asyncEnd();
-          break;
-        default:
-          throw "Bad state for error: $state: $error";
-      }
-    });
-    sendPort1.send(0);
-    sendPort2.send(0);
-    sendPort1.send(1);
-    sendPort2.send(1);
-    sendPort1.send(2);
-    sendPort2.send(2);
-    sendPort1.send(3);
-    sendPort2.send(3);
-  });
-}
diff --git a/tests/isolate/handle_error3_test.dart b/tests/isolate/handle_error3_test.dart
deleted file mode 100644
index 580f19c..0000000
--- a/tests/isolate/handle_error3_test.dart
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright (c) 2014, 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 handle_error_test;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    switch (v) {
-      case 0:
-        replyPort.send(42);
-        break;
-      case 1:
-        throw new ArgumentError("whoops");
-      case 2:
-        throw new RangeError.value(37);
-      case 3:
-        port.close();
-    }
-  };
-  replyPort.send(port.sendPort);
-}
-
-/// Do Isolate.spawn(entry) and get a sendPort from the isolate that it
-/// expects commands on.
-/// The isolate has errors set to non-fatal.
-/// Returns a list of `[isolate, commandPort]` in a future.
-Future spawn(entry) {
-  ReceivePort reply = new ReceivePort();
-  Future<Isolate> isolate = Isolate.spawn(entry, reply.sendPort, paused: true);
-  return isolate.then((Isolate isolate) {
-    isolate.setErrorsFatal(false);
-    isolate.resume(isolate.pauseCapability);
-    Future result = reply.first.then((sendPort) {
-      return [isolate, sendPort];
-    });
-    return result;
-  });
-}
-
-main() {
-  asyncStart();
-  asyncStart();
-  RawReceivePort reply = new RawReceivePort(null);
-  RawReceivePort reply2 = new RawReceivePort(null);
-  // Create two isolates waiting for commands, with errors non-fatal.
-  Future iso1 = spawn(isomain1);
-  Future iso2 = spawn(isomain1);
-  Future.wait([iso1, iso2]).then((l) {
-    var isolate1 = l[0][0];
-    var sendPort1 = l[0][1];
-    var isolate2 = l[1][0];
-    var sendPort2 = l[1][1];
-    // Capture errors from one isolate as stream.
-    Stream errors = isolate1.errors; // Broadcast stream, never a done message.
-    int state = 1;
-    var subscription;
-    subscription = errors.listen(null, onError: (error, stack) {
-      switch (state) {
-        case 1:
-          Expect.equals(new ArgumentError("whoops").toString(), "$error");
-          state++;
-          break;
-        case 2:
-          Expect.equals(new RangeError.value(37).toString(), "$error");
-          state++;
-          reply.close();
-          subscription.cancel();
-          asyncEnd();
-          break;
-        default:
-          throw "Bad state for error: $state: $error";
-      }
-    });
-    // Capture errors from other isolate as raw messages.
-    RawReceivePort errorPort2 = new RawReceivePort();
-    int state2 = 1;
-    errorPort2.handler = (message) {
-      String error = message[0];
-      String stack = message[1];
-      switch (state2) {
-        case 1:
-          Expect.equals(new ArgumentError("whoops").toString(), "$error");
-          state2++;
-          break;
-        case 2:
-          Expect.equals(new RangeError.value(37).toString(), "$error");
-          state2++;
-          reply2.close();
-          isolate2.removeErrorListener(errorPort2.sendPort);
-          errorPort2.close();
-          asyncEnd();
-          break;
-        default:
-          throw "Bad state-2 for error: $state: $error";
-      }
-    };
-    isolate2.addErrorListener(errorPort2.sendPort);
-
-    sendPort1.send(0);
-    sendPort2.send(0);
-    sendPort1.send(1);
-    sendPort2.send(1);
-    sendPort1.send(2);
-    sendPort2.send(2);
-    sendPort1.send(3);
-    sendPort2.send(3);
-  });
-}
diff --git a/tests/isolate/handle_error_test.dart b/tests/isolate/handle_error_test.dart
deleted file mode 100644
index d7e27dc1..0000000
--- a/tests/isolate/handle_error_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2014, 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 handle_error_test;
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    switch (v) {
-      case 0:
-        replyPort.send(42);
-        break;
-      case 1:
-        throw new ArgumentError("whoops");
-      case 2:
-        throw new RangeError.value(37);
-      case 3:
-        port.close();
-    }
-  };
-  replyPort.send(port.sendPort);
-}
-
-main() {
-  asyncStart();
-  RawReceivePort reply = new RawReceivePort(null);
-  // Start paused so we have time to set up the error handler.
-  Isolate.spawn(isomain1, reply.sendPort, paused: true).then((Isolate isolate) {
-    isolate.setErrorsFatal(false);
-    Stream errors = isolate.errors; // Broadcast stream, never a done message.
-    SendPort sendPort;
-    StreamSubscription subscription;
-    int state = 0;
-    reply.handler = (port) {
-      sendPort = port;
-      port.send(state);
-      reply.handler = (v) {
-        Expect.equals(0, state);
-        Expect.equals(42, v);
-        state++;
-        sendPort.send(state);
-      };
-    };
-    subscription = errors.listen(null, onError: (error, stack) {
-      switch (state) {
-        case 1:
-          Expect.equals(new ArgumentError("whoops").toString(), "$error");
-          state++;
-          sendPort.send(state);
-          break;
-        case 2:
-          Expect.equals(new RangeError.value(37).toString(), "$error");
-          state++;
-          sendPort.send(state);
-          reply.close();
-          subscription.cancel();
-          asyncEnd();
-          break;
-        default:
-          throw "Bad state for error: $state: $error";
-      }
-    });
-    isolate.resume(isolate.pauseCapability);
-  });
-}
diff --git a/tests/isolate/illegal_msg_function_test.dart b/tests/isolate/illegal_msg_function_test.dart
deleted file mode 100644
index 95d409f..0000000
--- a/tests/isolate/illegal_msg_function_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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.
-
-library illegal_msg_function_test;
-
-import "dart:isolate";
-import "dart:async" show Future;
-import "package:unittest/unittest.dart";
-import "remote_unittest_helper.dart";
-
-echo(sendPort) {
-  var port = new ReceivePort();
-  sendPort.send(port.sendPort);
-  port.listen((msg) {
-    sendPort.send("echoing ${msg(1)}}");
-  });
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("msg_function", () {
-    var function = (x) => x + 2;
-    ReceivePort port = new ReceivePort();
-    Future spawn = Isolate.spawn(echo, port.sendPort);
-    var caught_exception = false;
-    var stream = port.asBroadcastStream();
-    stream.first.then(expectAsync((snd) {
-      try {
-        snd.send(function);
-      } catch (e) {
-        caught_exception = true;
-      }
-
-      if (caught_exception) {
-        port.close();
-      } else {
-        stream.first.then(expectAsync((msg) {
-          print("from worker ${msg}");
-        }));
-      }
-      expect(caught_exception, isTrue);
-    }));
-  });
-}
diff --git a/tests/isolate/illegal_msg_mirror_test.dart b/tests/isolate/illegal_msg_mirror_test.dart
deleted file mode 100644
index c739256..0000000
--- a/tests/isolate/illegal_msg_mirror_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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 illegal_msg_mirror_test;
-
-import "dart:isolate";
-import "dart:async" show Future;
-@MirrorsUsed(targets: "Class")
-import "dart:mirrors";
-import "package:unittest/unittest.dart";
-import "remote_unittest_helper.dart";
-
-class Class {
-  method() {}
-}
-
-echo(sendPort) {
-  var port = new ReceivePort();
-  sendPort.send(port.sendPort);
-  port.listen((msg) {
-    sendPort.send("echoing ${msg(1)}}");
-  });
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("msg-mirror", () {
-    var methodMirror = reflectClass(Class).declarations[#method];
-
-    ReceivePort port = new ReceivePort();
-    Future spawn = Isolate.spawn(echo, port.sendPort);
-    var caught_exception = false;
-    var stream = port.asBroadcastStream();
-    stream.first.then(expectAsync((snd) {
-      try {
-        snd.send(methodMirror);
-      } catch (e) {
-        caught_exception = true;
-      }
-
-      if (caught_exception) {
-        port.close();
-      } else {
-        stream.first.then(expectAsync((msg) {
-          print("from worker ${msg}");
-        }));
-      }
-      expect(caught_exception, isTrue);
-    }));
-  });
-}
diff --git a/tests/isolate/int_from_environment_default_value_test.dart b/tests/isolate/int_from_environment_default_value_test.dart
deleted file mode 100644
index 8c825d7..0000000
--- a/tests/isolate/int_from_environment_default_value_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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:isolate";
-
-import "package:expect/expect.dart";
-
-void test(port) {
-  Expect.isNull(const int.fromEnvironment('NOT_FOUND'));
-  Expect.equals(
-      12345, const int.fromEnvironment('NOT_FOUND', defaultValue: 12345));
-  if (port != null) port.send(null);
-}
-
-main() {
-  test(null);
-  var port = new ReceivePort();
-  Isolate.spawn(test, port.sendPort);
-  port.listen((_) => port.close());
-}
diff --git a/tests/isolate/isolate.status b/tests/isolate/isolate.status
deleted file mode 100644
index a9613eb..0000000
--- a/tests/isolate/isolate.status
+++ /dev/null
@@ -1,5 +0,0 @@
-# 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.
-
-*: SkipByDesign # Deprecating all Dart1 mode tests
diff --git a/tests/isolate/isolate_complex_messages_test.dart b/tests/isolate/isolate_complex_messages_test.dart
deleted file mode 100644
index 0a4155f..0000000
--- a/tests/isolate/isolate_complex_messages_test.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// 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.
-
-// Dart test program for testing isolate communication with
-// complex messages.
-
-library IsolateComplexMessagesTest;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("complex messages are serialized correctly", () {
-    ReceivePort local = new ReceivePort();
-    Isolate.spawn(logMessages, local.sendPort);
-    var done = expectAsync(() {});
-    local.listen(expectAsync((msg) {
-      switch (msg[0]) {
-        case "init":
-          var remote = msg[1];
-          remote.send(1);
-          remote.send("Hello");
-          remote.send("World");
-          remote.send(const [null, 1, 2, 3, 4]);
-          remote.send(const [1, 2.0, true, false, 0xffffffffff]);
-          remote.send(const ["Hello", "World", 0xffffffffff]);
-          // Shutdown the LogRunner.
-          remote.send(-1);
-          break;
-        case "done":
-          local.close();
-          expect(msg[1], 6);
-          done();
-      }
-    }, count: 2));
-  });
-}
-
-void logMessages(mainPort) {
-  int count = 0;
-  ReceivePort port = new ReceivePort();
-  mainPort.send(["init", port.sendPort]);
-  port.listen((var message) {
-    if (message == -1) {
-      port.close();
-      mainPort.send(["done", count]);
-    } else {
-      switch (count) {
-        case 0:
-          expect(message, 1);
-          break;
-        case 1:
-          expect(message, "Hello");
-          break;
-        case 2:
-          expect(message, "World");
-          break;
-        case 3:
-          expect(message.length, 5);
-          expect(message[0], null);
-          expect(message[1], 1);
-          expect(message[2], 2);
-          expect(message[3], 3);
-          expect(message[4], 4);
-          break;
-        case 4:
-          expect(message.length, 5);
-          expect(message[0], 1);
-          expect(message[1], 2.0);
-          expect(message[2], true);
-          expect(message[3], false);
-          expect(message[4], 0xffffffffff);
-          break;
-        case 5:
-          expect(message.length, 3);
-          expect(message[0], "Hello");
-          expect(message[1], "World");
-          expect(message[2], 0xffffffffff);
-          break;
-      }
-      count++;
-    }
-  });
-}
diff --git a/tests/isolate/isolate_current_test.dart b/tests/isolate/isolate_current_test.dart
deleted file mode 100644
index a277897..0000000
--- a/tests/isolate/isolate_current_test.dart
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright (c) 2014, 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 isolate_current_test;
-
-import "dart:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-void main() {
-  asyncStart();
-
-  Expect.isNotNull(Isolate.current);
-
-  // Sending controlPort and capabilities as list.
-  testSend(i2l, l2i);
-  testSpawnReturnVsCurrent(true);
-  testSpawnReturnVsCurrent2(true);
-
-  // Sending Isolate itself.
-  testSend(id, id);
-  testSpawnReturnVsCurrent(false);
-  testSpawnReturnVsCurrent2(false);
-
-  asyncEnd();
-}
-
-/** Test sending the isolate data or isolate through a [SendPort]. */
-void testSend(i2l, l2i) {
-  asyncStart();
-  RawReceivePort p = new RawReceivePort();
-  Isolate isolate = Isolate.current;
-  p.handler = (list) {
-    var isolate2 = l2i(list);
-    Expect.equals(isolate.controlPort, isolate2.controlPort);
-    Expect.equals(isolate.pauseCapability, isolate2.pauseCapability);
-    Expect.equals(isolate.terminateCapability, isolate2.terminateCapability);
-    p.close();
-    asyncEnd();
-  };
-  p.sendPort.send(i2l(isolate));
-}
-
-/**
- * Test that the isolate returned by [Isolate.spawn] is the same as
- * the one returned by [Isolate.current] in the spawned isolate.
- * Checked in the spawning isolate.
- */
-void testSpawnReturnVsCurrent(bool asList) {
-  asyncStart();
-  Function transform = asList ? l2i : id;
-  Completer<Isolate> response = new Completer<Isolate>();
-  var p = new RawReceivePort();
-  p.handler = (v) {
-    response.complete(transform(v));
-    p.close();
-  };
-
-  Isolate.spawn(replyCurrent, [p.sendPort, asList]).then((Isolate isolate) {
-    return response.future.then((Isolate isolate2) {
-      expectIsolateEquals(isolate, isolate2);
-      asyncEnd();
-    });
-  });
-}
-
-void replyCurrent(args) {
-  SendPort responsePort = args[0];
-  Function transform = args[1] ? i2l : id;
-  responsePort.send(transform(Isolate.current));
-}
-
-/**
- * Test that the isolate returned by [Isolate.spawn] is the same as
- * the one returned by [Isolate.current] in the spawned isolate.
- * Checked in the spawned isolate.
- */
-void testSpawnReturnVsCurrent2(bool asList) {
-  asyncStart();
-  Function transform = asList ? i2l : id;
-
-  Completer<SendPort> response = new Completer<SendPort>();
-  var p = new RawReceivePort();
-  int state = 0;
-  p.handler = (v) {
-    switch (state) {
-      case 0:
-        response.complete(v);
-        state++;
-        break;
-      case 1:
-        p.close();
-        Expect.isTrue(v);
-        asyncEnd();
-    }
-  };
-
-  Isolate.spawn(expectCurrent, [p.sendPort, asList]).then((Isolate isolate) {
-    return response.future.then((SendPort port) {
-      port.send(transform(isolate));
-    });
-  });
-}
-
-void expectCurrent(args) {
-  SendPort responsePort = args[0];
-  Function transform = args[1] ? l2i : id;
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (isoData) {
-    Isolate isolate2 = transform(isoData);
-    port.close();
-    Isolate isolate = Isolate.current;
-    expectIsolateEquals(isolate, isolate2);
-    responsePort.send(true);
-  };
-  responsePort.send(port.sendPort);
-}
-
-/** Convert isolate to list (of control port and capabilities). */
-i2l(Isolate isolate) =>
-    [isolate.controlPort, isolate.pauseCapability, isolate.terminateCapability];
-/** Convert list to isolate. */
-l2i(List list) => new Isolate(list[0],
-    pauseCapability: list[1], terminateCapability: list[2]);
-
-/** Identity transformation. */
-id(Isolate isolate) => isolate;
-
-void expectIsolateEquals(Isolate expect, Isolate actual) {
-  Expect.equals(expect.controlPort, actual.controlPort);
-  Expect.equals(expect.pauseCapability, actual.pauseCapability);
-  Expect.equals(expect.terminateCapability, actual.terminateCapability);
-}
diff --git a/tests/isolate/isolate_import_test.dart b/tests/isolate/isolate_import_test.dart
deleted file mode 100644
index 7a9801b..0000000
--- a/tests/isolate/isolate_import_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-library IsolateImportNegativeTest;
-
-// Omitting the following import is an error:
-/* // //# 01: runtime error, static type warning
-import 'dart:isolate';
-*/ // //# 01: continued
-import 'package:async_helper/async_helper.dart';
-
-void entry(msg) {}
-
-main() {
-  asyncStart();
-  Isolate.spawn(entry, null).whenComplete(asyncEnd);
-}
diff --git a/tests/isolate/isolate_stress_test.dart b/tests/isolate/isolate_stress_test.dart
deleted file mode 100644
index 8a76b02..0000000
--- a/tests/isolate/isolate_stress_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// This test creates a lot of isolates.  This is meant to exhaust
-// resources if the isolates aren't closed correctly (which happened
-// in dart2js).
-
-import 'dart:async';
-import 'dart:isolate';
-
-// TODO(12588): Remove this import when we have wrapper-less testing.
-import 'dart:html';
-
-worker(SendPort replyTo) {
-  replyTo.send('Hello from Worker');
-}
-
-main() {
-  try {
-    // Create a Worker to confuse broken isolate implementation in dart2js.
-    new Worker('data:application/javascript,').terminate();
-  } catch (e) {
-    // Ignored.
-  }
-  var doneClosure;
-  int isolateCount = 0;
-  spawnMany(reply) {
-    if (reply != 'Hello from Worker') {
-      throw new Exception('Unexpected reply from worker: $reply');
-    }
-    if (++isolateCount > 200) {
-      window.postMessage('unittest-suite-success', '*');
-      return;
-    }
-    ReceivePort response = new ReceivePort();
-    var remote = Isolate.spawn(worker, response.sendPort);
-    remote.then((_) => response.first).then(spawnMany);
-    print('isolateCount = $isolateCount');
-  }
-
-  spawnMany('Hello from Worker');
-  window.postMessage('unittest-suite-wait-for-done', '*');
-}
diff --git a/tests/isolate/issue_21398_child_isolate.dart b/tests/isolate/issue_21398_child_isolate.dart
deleted file mode 100644
index c35fcb2..0000000
--- a/tests/isolate/issue_21398_child_isolate.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-import "package:expect/expect.dart";
-
-class FromChildIsolate {
-  String toString() => 'from child isolate';
-}
-
-main(List<String> args, message) {
-  var sendPort = message;
-  try {
-    sendPort.send(new FromChildIsolate());
-  } catch (error) {
-    Expect.isTrue(error is ArgumentError);
-    sendPort.send("Invalid Argument(s).");
-  }
-}
diff --git a/tests/isolate/issue_21398_child_isolate1.dart b/tests/isolate/issue_21398_child_isolate1.dart
deleted file mode 100644
index 1a720bd..0000000
--- a/tests/isolate/issue_21398_child_isolate1.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-import "package:expect/expect.dart";
-
-main(List<String> args, message) {
-  var sendPort1 = args[0] as SendPort;
-  var sendPort2 = args[1] as SendPort;
-  sendPort2.send(sendPort1);
-}
diff --git a/tests/isolate/issue_21398_child_isolate11.dart b/tests/isolate/issue_21398_child_isolate11.dart
deleted file mode 100644
index fd19d60..0000000
--- a/tests/isolate/issue_21398_child_isolate11.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-import "package:expect/expect.dart";
-
-class FromChildIsolate {
-  String toString() => 'from child isolate';
-}
-
-main(List<String> args, message) {
-  var receivePort = new ReceivePort();
-  var sendPort = message;
-  sendPort.send(receivePort.sendPort);
-  receivePort.listen((msg) {
-    Expect.isTrue(msg is SendPort);
-    try {
-      msg.send(new FromChildIsolate());
-    } catch (error) {
-      Expect.isTrue(error is ArgumentError);
-      msg.send("Invalid Argument(s).");
-    }
-  }, onError: (e) => print('$e'));
-}
diff --git a/tests/isolate/issue_21398_parent_isolate1_test.dart b/tests/isolate/issue_21398_parent_isolate1_test.dart
deleted file mode 100644
index 5681cf3..0000000
--- a/tests/isolate/issue_21398_parent_isolate1_test.dart
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=issue_21398_child_isolate1.dart
-// OtherScripts=issue_21398_child_isolate11.dart
-
-import 'dart:isolate';
-import 'dart:async';
-import "package:expect/expect.dart";
-import 'package:async_helper/async_helper.dart';
-
-class FromMainIsolate {
-  String toString() => 'from main isolate';
-  int get fld => 10;
-}
-
-func1Child(args) {
-  var receivePort = new ReceivePort();
-  var sendPort = args[0];
-  sendPort.send(receivePort.sendPort);
-  receivePort.listen((msg) {
-    Expect.isTrue(msg is FromMainIsolate);
-    Expect.equals(10, msg.fld);
-    receivePort.close();
-    sendPort.send("done");
-  }, onError: (e) => print('$e'));
-}
-
-func2Child(args) {
-  var receivePort = new ReceivePort();
-  var sendPort = args[0];
-  sendPort.send(receivePort.sendPort);
-  receivePort.listen((msg) {
-    Expect.isTrue(msg is SendPort);
-    msg.send(new FromMainIsolate());
-    receivePort.close();
-  }, onError: (e) => print('$e'));
-}
-
-spawnFuncTest() {
-  var receive1 = new ReceivePort();
-  var receive2 = new ReceivePort();
-
-  var spawnFunctionIsolate1SendPort;
-  var spawnFunctionIsolate2SendPort;
-
-  // First spawn the first isolate using spawnFunction, this isolate will
-  // create a receivePort and send it's sendPort back and then it will just
-  // sit there listening for a message from the second isolate spawned
-  // using spawnFunction.
-  asyncStart();
-  return Isolate.spawn(func1Child, [receive1.sendPort]).then((isolate) {
-    receive1.listen((msg) {
-      if (msg is SendPort) {
-        spawnFunctionIsolate1SendPort = msg;
-
-        // Now spawn the second isolate using spawnFunction, this isolate
-        // will create a receivePort and send it's sendPort back and then
-        // wait for the third isolate spawned using spawnUri to send it
-        // a sendPort to which it will try and send a non "literal-like"
-        // object.
-        Isolate.spawn(func2Child, [receive2.sendPort]).then((isolate) {
-          receive2.listen((msg) {
-            spawnFunctionIsolate2SendPort = msg;
-            receive2.close();
-
-            // Now spawn an isolate using spawnUri and send these send
-            // ports over to it. This isolate will send one of the
-            // sendports over to the other.
-            Isolate.spawnUri(
-                Uri.parse('issue_21398_child_isolate1.dart'),
-                [spawnFunctionIsolate1SendPort, spawnFunctionIsolate2SendPort],
-                "no-msg");
-          }, onError: (e) => print('$e'));
-        });
-      } else if (msg == "done") {
-        receive1.close();
-        asyncEnd();
-      } else {
-        Expect.fail("Invalid message received: $msg");
-      }
-    }, onError: (e) => print('$e'));
-  });
-}
-
-uriChild(args) {
-  var receivePort = new ReceivePort();
-  var sendPort = args[0];
-  sendPort.send(receivePort.sendPort);
-  receivePort.listen((msg) {
-    Expect.isTrue(msg is String);
-    Expect.equals("Invalid Argument(s).", msg);
-    receivePort.close();
-    sendPort.send("done");
-  }, onError: (e) => print('$e'));
-}
-
-spawnUriTest() {
-  var receive1 = new ReceivePort();
-  var receive2 = new ReceivePort();
-
-  var spawnFunctionIsolateSendPort;
-  var spawnUriIsolateSendPort;
-
-  // First spawn the first isolate using spawnFunction, this isolate will
-  // create a receivePort and send it's sendPort back and then it will just
-  // sit there listening for a message from the second isolate spawned
-  // using spawnFunction.
-  asyncStart();
-  Isolate.spawn(uriChild, [receive1.sendPort]).then((isolate) {
-    receive1.listen((msg) {
-      if (msg is SendPort) {
-        spawnFunctionIsolateSendPort = msg;
-
-        // Now spawn the second isolate using spawnUri, this isolate
-        // will create a receivePort and send it's sendPort back and then
-        // wait for the third isolate spawned using spawnUri to send it
-        // a sendPort to which it will try and send a non "literal-like"
-        // object.
-        Isolate
-            .spawnUri(Uri.parse('issue_21398_child_isolate11.dart'), [],
-                receive2.sendPort)
-            .then((isolate) {
-          receive2.listen((msg) {
-            spawnUriIsolateSendPort = msg;
-            receive2.close();
-
-            // Now spawn an isolate using spawnUri and send these send
-            // ports over to it. This isolate will send one of the
-            // sendports over to the other.
-            Isolate.spawnUri(
-                Uri.parse('issue_21398_child_isolate1.dart'),
-                [spawnFunctionIsolateSendPort, spawnUriIsolateSendPort],
-                "no-msg");
-          }, onError: (e) => print('$e'));
-        });
-      } else if (msg == "done") {
-        receive1.close();
-        asyncEnd();
-      } else {
-        Expect.fail("Invalid message received: $msg");
-      }
-    }, onError: (e) => print('$e'));
-  });
-}
-
-main() {
-  spawnFuncTest();
-  spawnUriTest();
-}
diff --git a/tests/isolate/issue_21398_parent_isolate2_test.dart b/tests/isolate/issue_21398_parent_isolate2_test.dart
deleted file mode 100644
index 27d49b9..0000000
--- a/tests/isolate/issue_21398_parent_isolate2_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=deferred_loaded_lib.dart
-
-import 'dart:isolate';
-import 'dart:async';
-import "package:expect/expect.dart";
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_loaded_lib.dart" deferred as lib;
-
-// In this test case we send an object created from a deferred library
-// that is loaded in the child isolate but not the parent isolate. The
-// parent isolate does not know about the type of this object and throws
-// an unhandled exception.
-funcChild(args) {
-  var replyPort = args[0];
-  // Deferred load a library, create an object from that library and send
-  // it over to the parent isolate which has not yet loaded that library.
-  lib.loadLibrary().then((_) {
-    replyPort.send(new lib.FromChildIsolate());
-  });
-}
-
-void helperFunction() {
-  var receivePort = new ReceivePort();
-  asyncStart();
-
-  // Spawn an isolate using spawnFunction.
-  Isolate.spawn(funcChild, [receivePort.sendPort]).then((isolate) {
-    receivePort.listen((msg) {
-      // We don't expect to receive any valid messages.
-      Expect.fail("We don't expect to receive any valid messages");
-      receivePort.close();
-      asyncEnd();
-    }, onError: (e) {
-      // We don't expect to receive any error messages, per spec listen
-      // does not receive an error object.
-      Expect.fail("We don't expect to receive any error messages");
-      receivePort.close();
-      asyncEnd();
-    });
-  });
-}
-
-main() {
-  helperFunction(); //# 01: runtime error
-}
diff --git a/tests/isolate/issue_21398_parent_isolate_test.dart b/tests/isolate/issue_21398_parent_isolate_test.dart
deleted file mode 100644
index 967d25f..0000000
--- a/tests/isolate/issue_21398_parent_isolate_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=issue_21398_child_isolate.dart
-
-import 'dart:isolate';
-import 'dart:async';
-import "package:expect/expect.dart";
-import 'package:async_helper/async_helper.dart';
-
-class FromMainIsolate {
-  String toString() => 'from main isolate';
-  int get fld => 10;
-}
-
-funcChild(args) {
-  var reply = args[1];
-  var obj = args[0];
-  Expect.isTrue(obj is FromMainIsolate);
-  Expect.equals(10, obj.fld);
-  reply.send(new FromMainIsolate());
-}
-
-main() {
-  var receive1 = new ReceivePort();
-  var receive2 = new ReceivePort();
-
-  // First spawn an isolate using spawnURI and have it
-  // send back a "non-literal" like object.
-  asyncStart();
-  Isolate.spawnUri(Uri.parse('issue_21398_child_isolate.dart'), [],
-      [new FromMainIsolate(), receive1.sendPort]).catchError((error) {
-    Expect.isTrue(error is ArgumentError);
-    asyncEnd();
-  });
-  asyncStart();
-  Isolate
-      .spawnUri(
-          Uri.parse('issue_21398_child_isolate.dart'), [], receive1.sendPort)
-      .then((isolate) {
-    receive1.listen((msg) {
-      Expect.stringEquals(msg, "Invalid Argument(s).");
-      receive1.close();
-      asyncEnd();
-    }, onError: (e) => print('$e'));
-  });
-
-  // Now spawn an isolate using spawnFunction and send it a "non-literal"
-  // like object and also have the child isolate send back a "non-literal"
-  // like object.
-  asyncStart();
-  Isolate.spawn(funcChild, [new FromMainIsolate(), receive2.sendPort]).then(
-      (isolate) {
-    receive2.listen((msg) {
-      Expect.isTrue(msg is FromMainIsolate);
-      Expect.equals(10, msg.fld);
-      receive2.close();
-      asyncEnd();
-    }, onError: (e) => print('$e'));
-  });
-}
diff --git a/tests/isolate/issue_22778_test.dart b/tests/isolate/issue_22778_test.dart
deleted file mode 100644
index ed6b5c6..0000000
--- a/tests/isolate/issue_22778_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2015, 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:isolate";
-import "package:expect/expect.dart";
-
-func() {}
-
-main() {
-  var r = new RawReceivePort();
-  r.handler = (v) {
-    Expect.isTrue(v[0] == v[1]);
-    r.close();
-  };
-  r.sendPort.send([func, func]);
-}
diff --git a/tests/isolate/issue_24243_child1_isolate.dart b/tests/isolate/issue_24243_child1_isolate.dart
deleted file mode 100644
index 4565cd16..0000000
--- a/tests/isolate/issue_24243_child1_isolate.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-
-main(List<String> args, message) {
-  var sendPort = message;
-  try {
-    var list0 = <int>[1, 2, 3];
-    var list1 = <int>[4, 5, 6];
-    var list2 = <int>[7, 8, 9];
-    var list = new List<List<int>>.from([list0, list1, list2]);
-    sendPort.send(list);
-  } catch (error) {
-    sendPort.send("Invalid Argument(s).");
-  }
-}
diff --git a/tests/isolate/issue_24243_child2_isolate.dart b/tests/isolate/issue_24243_child2_isolate.dart
deleted file mode 100644
index a603309..0000000
--- a/tests/isolate/issue_24243_child2_isolate.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2015, 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:isolate';
-
-main(List<String> args, message) {
-  var sendPort = message;
-  try {
-    var map0 = <int, String>{1: 'one', 2: 'two', 3: 'three'};
-    var map1 = <int, String>{4: 'four', 5: 'five', 6: 'six'};
-    var map2 = <int, String>{7: 'seven', 8: 'eight', 9: 'nine'};
-    var map = new Map<int, Map<int, String>>.from({0: map0, 1: map1, 2: map2});
-    sendPort.send(map);
-  } catch (error) {
-    sendPort.send("Invalid Argument(s).");
-  }
-}
diff --git a/tests/isolate/issue_24243_child3_isolate.dart b/tests/isolate/issue_24243_child3_isolate.dart
deleted file mode 100644
index e45930c..0000000
--- a/tests/isolate/issue_24243_child3_isolate.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2015, 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:collection';
-import 'dart:isolate';
-
-main(List<String> args, message) {
-  var sendPort = message;
-  try {
-    var map0 = new LinkedHashMap<int, String>();
-    map0[1] = 'one';
-    map0[2] = 'two';
-    map0[3] = 'three';
-    var map1 = new LinkedHashMap<int, String>();
-    map1[4] = 'four';
-    map1[5] = 'five';
-    map1[6] = 'size';
-    var map2 = new LinkedHashMap<int, String>();
-    map2[7] = 'seven';
-    map2[8] = 'eight';
-    map2[9] = 'nine';
-
-    var map = new Map<int, LinkedHashMap<int, String>>.from(
-        {0: map0, 1: map1, 2: map2});
-    sendPort.send(map);
-  } catch (error) {
-    sendPort.send("Invalid Argument(s).");
-  }
-}
diff --git a/tests/isolate/issue_24243_parent_isolate_test.dart b/tests/isolate/issue_24243_parent_isolate_test.dart
deleted file mode 100644
index f7c122d..0000000
--- a/tests/isolate/issue_24243_parent_isolate_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=issue_24243_child1_isolate.dart
-// OtherScripts=issue_24243_child2_isolate.dart
-// OtherScripts=issue_24243_child3_isolate.dart
-// VMOptions=--checked
-
-import 'dart:collection';
-import 'dart:isolate';
-
-import "package:expect/expect.dart";
-
-main() {
-  // First spawn an isolate using spawnURI and have it
-  // send back a "literal" like list object.
-  var receive1 = new ReceivePort();
-  Isolate
-      .spawnUri(
-          Uri.parse('issue_24243_child1_isolate.dart'), [], receive1.sendPort)
-      .then((isolate) {
-    receive1.listen((msg) {
-      var list0 = <int>[1, 2, 3];
-      var list1 = <int>[4, 5, 6];
-      var list2 = <int>[7, 8, 9];
-      Expect.isTrue(msg is List<List<int>>);
-      Expect.listEquals(msg[0], list0);
-      Expect.listEquals(msg[1], list1);
-      Expect.listEquals(msg[2], list2);
-      Expect.throws(() => msg[0] = "throw an exception");
-      receive1.close();
-    }, onError: (e) => print('$e'));
-  });
-
-  // Now spawn an isolate using spawnURI and have it
-  // send back a "literal" like map object.
-  var receive2 = new ReceivePort();
-  Isolate
-      .spawnUri(
-          Uri.parse('issue_24243_child2_isolate.dart'), [], receive2.sendPort)
-      .then((isolate) {
-    receive2.listen((msg) {
-      var map0 = <int, String>{1: 'one', 2: 'two', 3: 'three'};
-      var map1 = <int, String>{4: 'four', 5: 'five', 6: 'six'};
-      var map2 = <int, String>{7: 'seven', 8: 'eight', 9: 'nine'};
-      Expect.isTrue(msg is Map<int, Map<int, String>>);
-      Expect.mapEquals(msg[0], map0);
-      Expect.mapEquals(msg[1], map1);
-      Expect.mapEquals(msg[2], map2);
-      Expect.throws(() => msg[0] = "throw an exception");
-      receive2.close();
-    }, onError: (e) => print('$e'));
-  });
-
-  // Now spawn an isolate using spawnURI and have it
-  // send back a "literal" like LinkedHashMap object.
-  var receive3 = new ReceivePort();
-  Isolate
-      .spawnUri(
-          Uri.parse('issue_24243_child3_isolate.dart'), [], receive3.sendPort)
-      .then((isolate) {
-    receive3.listen((msg) {
-      var map0 = new LinkedHashMap<int, String>();
-      map0[1] = 'one';
-      map0[2] = 'two';
-      map0[3] = 'three';
-      var map1 = new LinkedHashMap<int, String>();
-      map1[4] = 'four';
-      map1[5] = 'five';
-      map1[6] = 'size';
-      var map2 = new LinkedHashMap<int, String>();
-      map2[7] = 'seven';
-      map2[8] = 'eight';
-      map2[9] = 'nine';
-      Expect.isTrue(msg is Map<int, LinkedHashMap<int, String>>);
-      Expect.mapEquals(msg[0], map0);
-      Expect.mapEquals(msg[1], map1);
-      Expect.mapEquals(msg[2], map2);
-      Expect.throws(() => msg[0] = "throw an exception");
-      receive3.close();
-    }, onError: (e) => print('$e'));
-  });
-}
diff --git a/tests/isolate/kill2_test.dart b/tests/isolate/kill2_test.dart
deleted file mode 100644
index 204c5a1..0000000
--- a/tests/isolate/kill2_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    replyPort.send(v);
-    if (v == 0) port.close();
-  };
-  replyPort.send(port.sendPort);
-}
-
-void main() {
-  asyncStart();
-  var completer = new Completer(); // Completed by first reply from isolate.
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  Isolate.spawn(isomain1, reply.sendPort).then((Isolate isolate) {
-    List result = [];
-    completer.future.then((echoPort) {
-      reply.handler = (v) {
-        result.add(v);
-        if (v == 2) {
-          isolate.kill(priority: Isolate.BEFORE_NEXT_EVENT);
-        }
-        echoPort.send(v - 1);
-      };
-      RawReceivePort exitSignal;
-      exitSignal = new RawReceivePort((_) {
-        Expect.listEquals([4, 3, 2], result);
-        exitSignal.close();
-        reply.close();
-        asyncEnd();
-      });
-      isolate.addOnExitListener(exitSignal.sendPort);
-      echoPort.send(4);
-    });
-  });
-}
diff --git a/tests/isolate/kill_self_synchronously_test.dart b/tests/isolate/kill_self_synchronously_test.dart
deleted file mode 100644
index cf60fa4..0000000
--- a/tests/isolate/kill_self_synchronously_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-
-import "dart:isolate";
-import "dart:io";
-
-void main(List<String> args) {
-  if (args.contains("--child")) {
-    new RawReceivePort(); // Hang if not killed.
-    Isolate.current.kill(priority: Isolate.IMMEDIATE);
-    // No intervening call.
-    throw "QQQ Should not be reached";
-  } else {
-    var exec = Platform.resolvedExecutable;
-    var args = new List<String>();
-    args.addAll(Platform.executableArguments);
-    args.add(Platform.script.toFilePath());
-    args.add("--child");
-    var result = Process.runSync(exec, args);
-    if (result.exitCode != 255) {
-      throw "Wrong exit code: ${result.exitCode}";
-    }
-    if (result.stderr.contains("QQQ Should not be reached")) {
-      print(result.stderr);
-      throw "Not killed synchronously";
-    }
-    if (!result.stderr.contains("isolate terminated by Isolate.kill")) {
-      print(result.stderr);
-      throw "Missing killed message";
-    }
-  }
-}
diff --git a/tests/isolate/kill_self_test.dart b/tests/isolate/kill_self_test.dart
deleted file mode 100644
index 93cf0f6..0000000
--- a/tests/isolate/kill_self_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  bool firstEvent = true;
-  port.handler = (v) {
-    if (!firstEvent) {
-      throw "Survived suicide";
-    }
-    var controlPort = v[0];
-    var killCapability = v[1];
-    firstEvent = false;
-    var isolate = new Isolate(controlPort, terminateCapability: killCapability);
-    isolate.kill(priority: Isolate.IMMEDIATE);
-  };
-  replyPort.send(port.sendPort);
-}
-
-void main() {
-  asyncStart();
-  var completer = new Completer(); // Completed by first reply from isolate.
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  Isolate.spawn(isomain1, reply.sendPort).then((Isolate isolate) {
-    completer.future.then((isolatePort) {
-      RawReceivePort exitSignal;
-      exitSignal = new RawReceivePort((_) {
-        exitSignal.close();
-        asyncEnd();
-      });
-      isolate.addOnExitListener(exitSignal.sendPort);
-      isolatePort.send([isolate.controlPort, isolate.terminateCapability]);
-      reply.close();
-    });
-  });
-}
diff --git a/tests/isolate/kill_test.dart b/tests/isolate/kill_test.dart
deleted file mode 100644
index 44d55ad..0000000
--- a/tests/isolate/kill_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    replyPort.send(v);
-    if (v == 0) port.close();
-  };
-  replyPort.send(port.sendPort);
-}
-
-void main() {
-  asyncStart();
-  // Completed by first reply from isolate.
-  var completer = new Completer<SendPort>();
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  Isolate.spawn(isomain1, reply.sendPort).then((Isolate isolate) {
-    completer.future.then((SendPort echoPort) {
-      List result = [];
-      reply.handler = (v) {
-        result.add(v);
-        if (v == 2) {
-          isolate.kill(priority: Isolate.IMMEDIATE);
-        }
-        echoPort.send(v - 1);
-      };
-      RawReceivePort exitSignal;
-      exitSignal = new RawReceivePort((_) {
-        Expect.listEquals([4, 3, 2], result);
-        exitSignal.close();
-        reply.close();
-        asyncEnd();
-      });
-      isolate.addOnExitListener(exitSignal.sendPort);
-      echoPort.send(4);
-    });
-  });
-}
diff --git a/tests/isolate/mandel_isolate_test.dart b/tests/isolate/mandel_isolate_test.dart
deleted file mode 100644
index ee21f1e..0000000
--- a/tests/isolate/mandel_isolate_test.dart
+++ /dev/null
@@ -1,159 +0,0 @@
-// 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.
-
-library MandelIsolateTest;
-
-import 'dart:async';
-import 'dart:isolate';
-import 'dart:math';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-const TERMINATION_MESSAGE = -1;
-const N = 100;
-const ISOLATES = 20;
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  // Test is really slow in debug builds of the VM.
-  var configuration = unittestConfiguration;
-  configuration.timeout = const Duration(seconds: 480);
-  test("Render Mandelbrot in parallel", () {
-    final state = new MandelbrotState();
-    state._validated.future.then(expectAsync((result) {
-      expect(result, isTrue);
-    }));
-    for (int i = 0; i < min(ISOLATES, N); i++) state.startClient(i);
-  });
-}
-
-class MandelbrotState {
-  MandelbrotState() {
-    _result = new List<List<int>>(N);
-    _lineProcessedBy = new List<LineProcessorClient>(N);
-    _sent = 0;
-    _missing = N;
-    _validated = new Completer<bool>();
-  }
-
-  void startClient(int id) {
-    assert(_sent < N);
-    int line = _sent++;
-    LineProcessorClient.create(this, id).then((final client) {
-      client.processLine(line);
-    });
-  }
-
-  void notifyProcessedLine(LineProcessorClient client, int y, List<int> line) {
-    assert(_result[y] == null);
-    _result[y] = line;
-    _lineProcessedBy[y] = client;
-
-    if (_sent != N) {
-      client.processLine(_sent++);
-    } else {
-      client.shutdown();
-    }
-
-    // If all lines have been computed, validate the result.
-    if (--_missing == 0) {
-      _printResult();
-      _validateResult();
-    }
-  }
-
-  void _validateResult() {
-    // TODO(ngeoffray): Implement this.
-    _validated.complete(true);
-  }
-
-  void _printResult() {
-    var output = new StringBuffer();
-    for (int i = 0; i < _result.length; i++) {
-      List<int> line = _result[i];
-      for (int j = 0; j < line.length; j++) {
-        if (line[j] < 10) output.write("0");
-        output.write(line[j]);
-      }
-      output.write("\n");
-    }
-    // print(output);
-  }
-
-  List<List<int>> _result;
-  List<LineProcessorClient> _lineProcessedBy;
-  int _sent;
-  int _missing;
-  Completer<bool> _validated;
-}
-
-class LineProcessorClient {
-  MandelbrotState _state;
-  int _id;
-  SendPort _port;
-
-  LineProcessorClient(this._state, this._id, this._port);
-
-  static Future<LineProcessorClient> create(MandelbrotState state, int id) {
-    ReceivePort reply = new ReceivePort();
-    return Isolate.spawn(processLines, reply.sendPort).then((_) {
-      return reply.first.then((port) {
-        return new LineProcessorClient(state, id, port);
-      });
-    });
-  }
-
-  void processLine(int y) {
-    ReceivePort reply = new ReceivePort();
-    _port.send([y, reply.sendPort]);
-    reply.first.then((message) {
-      _state.notifyProcessedLine(this, y, message as List<int>);
-    });
-  }
-
-  void shutdown() {
-    _port.send(TERMINATION_MESSAGE);
-  }
-}
-
-List<int> processLine(int y) {
-  double inverseN = 2.0 / N;
-  double Civ = y * inverseN - 1.0;
-  List<int> result = new List<int>(N);
-  for (int x = 0; x < N; x++) {
-    double Crv = x * inverseN - 1.5;
-
-    double Zrv = Crv;
-    double Ziv = Civ;
-
-    double Trv = Crv * Crv;
-    double Tiv = Civ * Civ;
-
-    int i = 49;
-    do {
-      Ziv = (Zrv * Ziv) + (Zrv * Ziv) + Civ;
-      Zrv = Trv - Tiv + Crv;
-
-      Trv = Zrv * Zrv;
-      Tiv = Ziv * Ziv;
-    } while (((Trv + Tiv) <= 4.0) && (--i > 0));
-
-    result[x] = i;
-  }
-  return result;
-}
-
-void processLines(SendPort replyPort) {
-  ReceivePort port = new ReceivePort();
-  port.listen((message) {
-    if (message != TERMINATION_MESSAGE) {
-      int line = message[0];
-      SendPort replyTo = message[1];
-      replyTo.send(processLine(line));
-    } else {
-      port.close();
-    }
-  });
-  replyPort.send(port.sendPort);
-}
diff --git a/tests/isolate/message2_test.dart b/tests/isolate/message2_test.dart
deleted file mode 100644
index 6bf10be..0000000
--- a/tests/isolate/message2_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// 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.
-
-// Dart test program for testing serialization of messages.
-// VMOptions=--enable_type_checks --enable_asserts
-
-library Message2Test;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-// ---------------------------------------------------------------------------
-// Message passing test 2.
-// ---------------------------------------------------------------------------
-
-class MessageTest {
-  static void mapEqualsDeep(Map expected, Map actual) {
-    expect(expected, isMap);
-    expect(actual, isMap);
-    expect(actual.length, expected.length);
-    testForEachMap(key, value) {
-      if (value is List) {
-        listEqualsDeep(value, actual[key]);
-      } else {
-        expect(actual[key], value);
-      }
-    }
-
-    expected.forEach(testForEachMap);
-  }
-
-  static void listEqualsDeep(List expected, List actual) {
-    for (int i = 0; i < expected.length; i++) {
-      if (expected[i] is List) {
-        listEqualsDeep(expected[i], actual[i]);
-      } else if (expected[i] is Map) {
-        mapEqualsDeep(expected[i], actual[i]);
-      } else {
-        expect(actual[i], expected[i]);
-      }
-    }
-  }
-}
-
-void pingPong(replyPort) {
-  ReceivePort port = new ReceivePort();
-  port.listen((message) {
-    if (message == null) {
-      port.close();
-    } else {
-      // Bounce the received object back so that the sender
-      // can make sure that the object matches.
-      message[1].send(message[0]);
-    }
-  });
-  replyPort.send(port.sendPort);
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("map is equal after it is sent back and forth", () {
-    ReceivePort port = new ReceivePort();
-    Isolate.spawn(pingPong, port.sendPort);
-    port.first.then(expectAsync((remote) {
-      Map m = new Map();
-      m[1] = "eins";
-      m[2] = "deux";
-      m[3] = "tre";
-      m[4] = "four";
-      ReceivePort replyPort = new ReceivePort();
-      remote.send([m, replyPort.sendPort]);
-      replyPort.first.then(expectAsync((var received) {
-        MessageTest.mapEqualsDeep(m, received);
-        remote.send(null);
-      }));
-    }));
-  });
-}
diff --git a/tests/isolate/message3_test.dart b/tests/isolate/message3_test.dart
deleted file mode 100644
index 7d10afc..0000000
--- a/tests/isolate/message3_test.dart
+++ /dev/null
@@ -1,468 +0,0 @@
-// 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.
-
-// Dart test program for testing serialization of messages.
-// VMOptions=--enable_type_checks --enable_asserts
-
-library MessageTest;
-
-import 'dart:async';
-import 'dart:collection';
-import 'dart:isolate';
-import 'package:async_helper/async_helper.dart';
-import 'package:expect/expect.dart';
-import 'dart:typed_data';
-
-void echoMain(msg) {
-  SendPort replyTo = msg[0];
-  SendPort pong = msg[1];
-  ReceivePort port = new ReceivePort();
-  replyTo.send(port.sendPort);
-  port.listen((msg) {
-    if (msg == "halt") {
-      port.close();
-    } else {
-      pong.send(msg);
-    }
-  });
-}
-
-class A {
-  var field = 499;
-
-  A();
-  A.named(this.field);
-}
-
-class B extends A {
-  final field2;
-  B() : field2 = 99;
-  B.named(this.field2, x) : super.named(x);
-}
-
-class C extends B {
-  dynamic field = 33;
-
-  get superField => super.field;
-  get superField2 => super.field2;
-}
-
-class M {
-  get field2 => 11;
-}
-
-class D extends C with M {
-  var gee = 123;
-}
-
-class E {
-  Function fun;
-  E(this.fun);
-
-  static fooFun() => 499;
-  instanceFun() => 1234;
-}
-
-barFun() => 42;
-
-class F {
-  final field = "field";
-  const F();
-}
-
-class G {
-  final field;
-  const G(this.field);
-}
-
-class Value {
-  final val;
-  Value(this.val);
-
-  operator ==(other) {
-    if (other is! Value) return false;
-    return other.val == val;
-  }
-
-  get hashCode => val;
-}
-
-void runTests(SendPort ping, Queue checks) {
-  ping.send("abc");
-  checks.add((x) => Expect.equals("abc", x));
-
-  ping.send([1, 2]);
-  checks.add((x) {
-    Expect.isTrue(x is List);
-    Expect.listEquals([1, 2], x);
-    // Make sure the list is mutable.
-    x[0] = 0;
-    Expect.equals(0, x[0]);
-    // List must be extendable.
-    x.add(3);
-    Expect.equals(3, x[2]);
-  });
-
-  List fixed = new List(2);
-  fixed[0] = 0;
-  fixed[1] = 1;
-  ping.send(fixed);
-  checks.add((x) {
-    Expect.isTrue(x is List);
-    Expect.listEquals([0, 1], x);
-    // List must be mutable.
-    x[0] = 3;
-    Expect.equals(3, x[0]);
-    // List must be fixed length.
-    Expect.throws(() {
-      x.add(5);
-    });
-  });
-
-  List cyclic = [];
-  cyclic.add(cyclic);
-  ping.send(cyclic);
-  checks.add((x) {
-    Expect.isTrue(x is List);
-    Expect.equals(1, x.length);
-    Expect.identical(x, x[0]);
-    // List must be mutable.
-    x[0] = 55;
-    Expect.equals(55, x[0]);
-    // List must be extendable.
-    x.add(42);
-    Expect.equals(42, x[1]);
-  });
-
-  List cyclic2 = new List(1);
-  cyclic2[0] = cyclic2;
-  ping.send(cyclic2);
-  checks.add((x) {
-    Expect.isTrue(x is List);
-    Expect.equals(1, x.length);
-    Expect.identical(x, x[0]);
-    // List must be mutable.
-    x[0] = 55;
-    Expect.equals(55, x[0]);
-    // List must be fixed.
-    Expect.throws(() => x.add(42));
-  });
-
-  List constList = const [1, 2];
-  ping.send(constList);
-  checks.add((x) {
-    Expect.isTrue(x is List);
-    Expect.listEquals([1, 2], x);
-    // Make sure the list is immutable.
-    Expect.throws(() => x[0] = 0); // //# constList: ok
-    // List must not be extendable.
-    Expect.throws(() => x.add(3));
-    Expect.identical(x, constList); // //# constList_identical: ok
-  });
-
-  Uint8List uint8 = new Uint8List(2);
-  uint8[0] = 0;
-  uint8[1] = 1;
-  ping.send(uint8);
-  checks.add((x) {
-    Expect.isTrue(x is Uint8List);
-    Expect.equals(2, x.length);
-    Expect.equals(0, x[0]);
-    Expect.equals(1, x[1]);
-  });
-
-  Uint16List uint16 = new Uint16List(2);
-  uint16[0] = 0;
-  uint16[1] = 1;
-  ByteBuffer byteBuffer = uint16.buffer;
-  ping.send(byteBuffer); // //# byteBuffer: ok
-  checks.add( //            //# byteBuffer: ok
-  (x) {
-    Expect.isTrue(x is ByteBuffer);
-    Uint16List uint16View = new Uint16List.view(x);
-    Expect.equals(2, uint16View.length);
-    Expect.equals(0, uint16View[0]);
-    Expect.equals(1, uint16View[1]);
-  }
-  ) //                      //# byteBuffer: ok
-      ;
-
-  Int32x4List list32x4 = new Int32x4List(2);
-  list32x4[0] = new Int32x4(1, 2, 3, 4);
-  list32x4[1] = new Int32x4(5, 6, 7, 8);
-  ping.send(list32x4); //   //# int32x4: ok
-  checks.add( //            //# int32x4: ok
-  (x) {
-    Expect.isTrue(x is Int32x4List);
-    Expect.equals(2, x.length);
-    Int32x4 entry1 = x[0];
-    Int32x4 entry2 = x[1];
-    Expect.equals(1, entry1.x);
-    Expect.equals(2, entry1.y);
-    Expect.equals(3, entry1.z);
-    Expect.equals(4, entry1.w);
-    Expect.equals(5, entry2.x);
-    Expect.equals(6, entry2.y);
-    Expect.equals(7, entry2.z);
-    Expect.equals(8, entry2.w);
-  }
-  ) //                    //# int32x4: ok
-      ;
-
-  ping.send({"foo": 499, "bar": 32});
-  checks.add((x) {
-    Expect.isTrue(x is LinkedHashMap);
-    Expect.listEquals(["foo", "bar"], x.keys.toList());
-    Expect.listEquals([499, 32], x.values.toList());
-    Expect.equals(499, x["foo"]);
-    Expect.equals(32, x["bar"]);
-    // Must be mutable.
-    x["foo"] = 22;
-    Expect.equals(22, x["foo"]);
-    // Must be extendable.
-    x["gee"] = 499;
-    Expect.equals(499, x["gee"]);
-  });
-
-  Map<String, int> mapWithRemovedKey = {"foo": 499, "bar": 32};
-  mapWithRemovedKey.remove("foo");
-  ping.send(mapWithRemovedKey);
-  checks.add((x) {
-    Expect.isTrue(x is LinkedHashMap);
-    Expect.listEquals(["bar"], x.keys.toList());
-    Expect.listEquals([32], x.values.toList());
-    Expect.equals(32, x["bar"]);
-  });
-
-  // Test map where a key does not define ==/hashCode.
-  Map<A, int> mapWithIdentityKey = new Map<A, int>();
-  mapWithIdentityKey[new A()] = 499;
-  ping.send(mapWithIdentityKey);
-  checks.add((x) {
-    Expect.isTrue(x is LinkedHashMap);
-    int value = x.values.first;
-    Expect.equals(499, value);
-    A key = x.keys.first;
-    Expect.equals(499, x[key]);
-  });
-
-  ping.send({0: 499, 1: 32});
-  checks.add((x) {
-    Expect.isTrue(x is LinkedHashMap);
-    Expect.listEquals([0, 1], x.keys.toList());
-    Expect.listEquals([499, 32], x.values.toList());
-    // Must be mutable.
-    x[0] = 22;
-    Expect.equals(22, x[0]);
-    // Must be extendable.
-    x["gee"] = 499;
-    Expect.equals(499, x["gee"]);
-  });
-
-  Map cyclicMap = {};
-  cyclicMap["cycle"] = cyclicMap;
-  ping.send(cyclicMap);
-  checks.add((x) {
-    Expect.isTrue(x is LinkedHashMap);
-    Expect.identical(x, x["cycle"]);
-    // Must be mutable.
-    x["cycle"] = 22;
-    Expect.equals(22, x["cycle"]);
-    // Must be extendable.
-    x["gee"] = 499;
-    Expect.equals(499, x["gee"]);
-  });
-
-  Map constMap = const {'foo': 499};
-  ping.send(constMap);
-  checks.add((x) {
-    Expect.isTrue(x is Map);
-    print(x.length);
-    Expect.equals(1, x.length);
-    Expect.equals(499, x['foo']);
-    Expect.identical(constMap, x); // //# constMap: ok
-    Expect.throws(() => constMap['bar'] = 42);
-  });
-
-  ping.send(new A());
-  checks.add((x) {
-    Expect.isTrue(x is A);
-    Expect.equals(499, x.field);
-  });
-
-  ping.send(new A.named(42));
-  checks.add((x) {
-    Expect.isTrue(x is A);
-    Expect.equals(42, x.field);
-  });
-
-  ping.send(new B());
-  checks.add((x) {
-    Expect.isTrue(x is A);
-    Expect.isTrue(x is B);
-    Expect.equals(499, x.field);
-    Expect.equals(99, x.field2);
-    Expect.throws(() => x.field2 = 22);
-  });
-
-  ping.send(new B.named(1, 2));
-  checks.add((x) {
-    Expect.isTrue(x is A);
-    Expect.isTrue(x is B);
-    Expect.equals(2, x.field);
-    Expect.equals(1, x.field2);
-    Expect.throws(() => x.field2 = 22);
-  });
-
-  ping.send(new C());
-  checks.add((x) {
-    Expect.isTrue(x is A);
-    Expect.isTrue(x is B);
-    Expect.isTrue(x is C);
-    Expect.equals(33, x.field);
-    Expect.equals(99, x.field2);
-    Expect.equals(499, x.superField);
-    Expect.throws(() => x.field2 = 22);
-  });
-
-  ping.send(new D());
-  checks.add((x) {
-    Expect.isTrue(x is A);
-    Expect.isTrue(x is B);
-    Expect.isTrue(x is C);
-    Expect.isTrue(x is D);
-    Expect.isTrue(x is M);
-    Expect.equals(33, x.field);
-    Expect.equals(11, x.field2);
-    Expect.equals(499, x.superField);
-    Expect.equals(99, x.superField2);
-    Expect.throws(() => x.field2 = 22);
-  });
-
-  D cyclicD = new D();
-  cyclicD.field = cyclicD;
-  ping.send(cyclicD);
-  checks.add((x) {
-    Expect.isTrue(x is A);
-    Expect.isTrue(x is B);
-    Expect.isTrue(x is C);
-    Expect.isTrue(x is D);
-    Expect.isTrue(x is M);
-    Expect.identical(x, x.field);
-    Expect.equals(11, x.field2);
-    Expect.equals(499, x.superField);
-    Expect.equals(99, x.superField2);
-    Expect.throws(() => x.field2 = 22);
-  });
-
-  ping.send(new E(E.fooFun)); //       //# fun: ok
-  checks.add((x) { //                  //# fun: continued
-    Expect.equals(E.fooFun, x.fun); // //# fun: continued
-    Expect.equals(499, x.fun()); //    //# fun: continued
-  }); //                               //# fun: continued
-
-  ping.send(new E(barFun)); //         //# fun: continued
-  checks.add((x) { //                  //# fun: continued
-    Expect.equals(barFun, x.fun); //   //# fun: continued
-    Expect.equals(42, x.fun()); //     //# fun: continued
-  }); //                               //# fun: continued
-
-  Expect.throws(() => ping.send(new E(new E(null).instanceFun)));
-
-  F nonConstF = new F();
-  ping.send(nonConstF);
-  checks.add((x) {
-    Expect.equals("field", x.field);
-    Expect.isFalse(identical(nonConstF, x));
-  });
-
-  const F constF = const F();
-  ping.send(constF);
-  checks.add((x) {
-    Expect.equals("field", x.field);
-    Expect.identical(constF, x); // //# constInstance: ok
-  });
-
-  G g1 = new G(nonConstF);
-  G g2 = new G(constF);
-  G g3 = const G(constF);
-  ping.send(g1);
-  ping.send(g2);
-  ping.send(g3);
-
-  checks.add((x) {
-    // g1.
-    Expect.isTrue(x is G);
-    Expect.isFalse(identical(g1, x));
-    F f = x.field;
-    Expect.equals("field", f.field);
-    Expect.isFalse(identical(nonConstF, f));
-  });
-  checks.add((x) {
-    // g2.
-    Expect.isTrue(x is G);
-    Expect.isFalse(identical(g1, x));
-    F f = x.field;
-    Expect.equals("field", f.field);
-    Expect.identical(constF, f); // //# constInstance: continued
-  });
-  checks.add((x) {
-    // g3.
-    Expect.isTrue(x is G);
-    Expect.identical(g3, x); // //# constInstance: continued
-    F f = x.field;
-    Expect.equals("field", f.field);
-    Expect.identical(constF, f); // //# constInstance: continued
-  });
-
-  // Make sure objects in a map are serialized and deserialized in the correct
-  // order.
-  Map m = new Map();
-  Value val1 = new Value(1);
-  Value val2 = new Value(2);
-  m[val1] = val2;
-  m[val2] = val1;
-  // Possible bug we want to catch:
-  // serializer runs through keys first, and then the values:
-  //    - id1 = val1, id2 = val2, ref[id2], ref[id1]
-  // deserializer runs through the keys and values in order:
-  //    - val1;  // id1.
-  //    - ref[id2];  // boom. Wasn't deserialized yet.
-  ping.send(m);
-  checks.add((x) {
-    Expect.isTrue(x is Map);
-    Expect.equals(2, x.length);
-    Expect.equals(val2, x[val1]);
-    Expect.equals(val1, x[val2]);
-    Expect.identical(x.keys.elementAt(0), x.values.elementAt(1));
-    Expect.identical(x.keys.elementAt(1), x.values.elementAt(0));
-  });
-}
-
-void main() {
-  asyncStart();
-  Queue checks = new Queue();
-  ReceivePort testPort = new ReceivePort();
-  Completer completer = new Completer();
-
-  testPort.listen((msg) {
-    Function check = checks.removeFirst();
-    check(msg);
-    if (checks.isEmpty) {
-      completer.complete();
-      testPort.close();
-    }
-  });
-
-  ReceivePort initialReplyPort = new ReceivePort();
-  Isolate
-      .spawn(echoMain, [initialReplyPort.sendPort, testPort.sendPort])
-      .then((_) => initialReplyPort.first)
-      .then((arg) {
-        SendPort ping = arg as SendPort;
-        runTests(ping, checks);
-        Expect.isTrue(checks.length > 0);
-        completer.future.then((_) => ping.send("halt")).then((_) => asyncEnd());
-      });
-}
diff --git a/tests/isolate/message4_test.dart b/tests/isolate/message4_test.dart
deleted file mode 100644
index 7b2edc2..0000000
--- a/tests/isolate/message4_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// 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.
-
-// Dart test program for testing serialization of messages with static
-// native functions.
-
-library MessageTest;
-
-import 'dart:async';
-import 'dart:collection';
-import 'dart:isolate';
-import 'package:async_helper/async_helper.dart';
-import 'package:expect/expect.dart';
-
-void echoMain(msg) {
-  SendPort replyTo = msg[0];
-  SendPort pong = msg[1];
-  ReceivePort port = new ReceivePort();
-  replyTo.send(port.sendPort);
-  port.listen((msg) {
-    if (msg == "halt") {
-      port.close();
-    } else {
-      pong.send(msg);
-    }
-  });
-}
-
-void runTests(SendPort ping, Queue checks) {
-  ping.send("abc");
-  checks.add((x) => Expect.equals("abc", x));
-
-  ping.send(int.parse);
-  checks.add((x) => Expect.identical(int.parse, x));
-
-  ping.send(identityHashCode);
-  checks.add((x) => Expect.identical(identityHashCode, x));
-
-  ping.send(identical);
-  checks.add((x) => Expect.identical(identical, x));
-}
-
-main() async {
-  asyncStart();
-  Queue checks = new Queue();
-  ReceivePort testPort = new ReceivePort();
-  Completer completer = new Completer();
-
-  testPort.listen((msg) {
-    Function check = checks.removeFirst();
-    check(msg);
-    if (checks.isEmpty) {
-      completer.complete();
-      testPort.close();
-    }
-  });
-
-  ReceivePort initialReplyPort = new ReceivePort();
-
-  Isolate i = await Isolate
-      .spawn(echoMain, [initialReplyPort.sendPort, testPort.sendPort]);
-  SendPort ping = await initialReplyPort.first;
-  runTests(ping, checks);
-  Expect.isTrue(checks.length > 0);
-  await completer.future;
-  ping.send("halt");
-  asyncEnd();
-}
diff --git a/tests/isolate/message_enum_test.dart b/tests/isolate/message_enum_test.dart
deleted file mode 100644
index 5cf11a1..0000000
--- a/tests/isolate/message_enum_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-import "dart:isolate";
-
-enum Foo { BAR, BAZ }
-
-main() {
-  var p;
-  p = new RawReceivePort((map) {
-    Expect.equals(1, map.keys.length);
-    Expect.equals(42, map.values.first);
-    var key = map.keys.first;
-    Expect.equals(42, map[key]);
-    p.close();
-  });
-  asyncStart();
-  Isolate.spawn(sendIt, p.sendPort).whenComplete(asyncEnd);
-}
-
-void sendIt(port) {
-  var map = {Foo.BAR: 42};
-  port.send(map);
-}
diff --git a/tests/isolate/message_test.dart b/tests/isolate/message_test.dart
deleted file mode 100644
index fb1314b..0000000
--- a/tests/isolate/message_test.dart
+++ /dev/null
@@ -1,149 +0,0 @@
-// 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.
-
-// Dart test program for testing serialization of messages.
-// VMOptions=--enable_type_checks --enable_asserts
-
-library MessageTest;
-
-import 'dart:isolate';
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-// ---------------------------------------------------------------------------
-// Message passing test.
-// ---------------------------------------------------------------------------
-
-class MessageTest {
-  static const List list1 = const ["Hello", "World", "Hello", 0xfffffffffff];
-  static const List list2 = const [null, list1, list1, list1, list1];
-  static const List list3 = const [list2, 2.0, true, false, 0xfffffffffff];
-  static const Map map1 = const {
-    "a=1": 1,
-    "b=2": 2,
-    "c=3": 3,
-  };
-  static const Map map2 = const {
-    "list1": list1,
-    "list2": list2,
-    "list3": list3,
-  };
-  static const List list4 = const [map1, map2];
-  static const List elms = const [
-    list1,
-    list2,
-    list3,
-    list4,
-  ];
-
-  static void VerifyMap(Map expected, Map actual) {
-    expect(expected, isMap);
-    expect(actual, isMap);
-    expect(actual.length, expected.length);
-    testForEachMap(key, value) {
-      if (value is List) {
-        VerifyList(value, actual[key]);
-      } else {
-        expect(actual[key], value);
-      }
-    }
-
-    expected.forEach(testForEachMap);
-  }
-
-  static void VerifyList(List expected, List actual) {
-    for (int i = 0; i < expected.length; i++) {
-      if (expected[i] is List) {
-        VerifyList(expected[i], actual[i]);
-      } else if (expected[i] is Map) {
-        VerifyMap(expected[i], actual[i]);
-      } else {
-        expect(actual[i], expected[i]);
-      }
-    }
-  }
-
-  static void VerifyObject(int index, var actual) {
-    var expected = elms[index];
-    expect(expected, isList);
-    expect(actual, isList);
-    expect(actual.length, expected.length);
-    VerifyList(expected, actual);
-  }
-}
-
-pingPong(replyTo) {
-  ReceivePort port = new ReceivePort();
-  int count = 0;
-  port.listen((pair) {
-    var message = pair[0];
-    var replyTo = pair[1];
-    if (message == -1) {
-      port.close();
-      replyTo.send(count);
-    } else {
-      // Check if the received object is correct.
-      if (count < MessageTest.elms.length) {
-        MessageTest.VerifyObject(count, message);
-      }
-      // Bounce the received object back so that the sender
-      // can make sure that the object matches.
-      replyTo.send(message);
-      count++;
-    }
-  });
-  replyTo.send(port.sendPort);
-}
-
-Future remoteCall(SendPort port, message) {
-  ReceivePort receivePort = new ReceivePort();
-  port.send([message, receivePort.sendPort]);
-  return receivePort.first;
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("send objects and receive them back", () {
-    ReceivePort port = new ReceivePort();
-    Isolate.spawn(pingPong, port.sendPort);
-    port.first.then(expectAsync((remote) {
-      // Send objects and receive them back.
-      for (int i = 0; i < MessageTest.elms.length; i++) {
-        var sentObject = MessageTest.elms[i];
-        remoteCall(remote, sentObject).then(expectAsync((var receivedObject) {
-          MessageTest.VerifyObject(i, receivedObject);
-        }));
-      }
-
-      // Send recursive objects and receive them back.
-      List local_list1 = ["Hello", "World", "Hello", 0xffffffffff];
-      List local_list2 = [null, local_list1, local_list1];
-      List local_list3 = [local_list2, 2.0, true, false, 0xffffffffff];
-      List sendObject = new List(5);
-      sendObject[0] = local_list1;
-      sendObject[1] = sendObject;
-      sendObject[2] = local_list2;
-      sendObject[3] = sendObject;
-      sendObject[4] = local_list3;
-      remoteCall(remote, sendObject).then((var replyObject) {
-        expect(sendObject, isList);
-        expect(replyObject, isList);
-        expect(sendObject.length, equals(replyObject.length));
-        expect(replyObject[1], same(replyObject));
-        expect(replyObject[3], same(replyObject));
-        expect(replyObject[0], same(replyObject[2][1]));
-        expect(replyObject[0], same(replyObject[2][2]));
-        expect(replyObject[2], same(replyObject[4][0]));
-        expect(replyObject[0][0], same(replyObject[0][2]));
-        expect(replyObject[0][3], equals(replyObject[4][4]));
-      });
-
-      // Shutdown the MessageServer.
-      remoteCall(remote, -1).then(expectAsync((int message) {
-        expect(message, MessageTest.elms.length + 1);
-      }));
-    }));
-  });
-}
diff --git a/tests/isolate/mint_maker_test.dart b/tests/isolate/mint_maker_test.dart
deleted file mode 100644
index f906beb..0000000
--- a/tests/isolate/mint_maker_test.dart
+++ /dev/null
@@ -1,186 +0,0 @@
-// 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.
-
-library MintMakerTest;
-
-import 'dart:async';
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-class Mint {
-  Map<SendPort, Purse> _registry;
-  SendPort port;
-
-  Mint() : _registry = new Map<SendPort, Purse>() {
-    ReceivePort mintPort = new ReceivePort();
-    port = mintPort.sendPort;
-    serveMint(mintPort);
-  }
-
-  void serveMint(ReceivePort port) {
-    port.listen((message) {
-      int balance = message[0];
-      Purse purse = createPurse(balance);
-      message[1].send(purse.port);
-    });
-  }
-
-  Purse createPurse(int balance) {
-    Purse purse = new Purse(this, balance);
-    _registry[purse.port] = purse;
-    return purse;
-  }
-
-  Purse lookupPurse(SendPort port) {
-    return _registry[port];
-  }
-}
-
-class MintWrapper {
-  SendPort _mint;
-  MintWrapper(SendPort this._mint) {}
-
-  void createPurse(int balance, handlePurse(PurseWrapper purse)) {
-    ReceivePort reply = new ReceivePort();
-    reply.first.then((purse) {
-      handlePurse(new PurseWrapper(purse as SendPort));
-    });
-    _mint.send([balance, reply.sendPort]);
-  }
-}
-
-class Purse {
-  Mint mint;
-  int balance;
-  SendPort port;
-
-  Purse(this.mint, this.balance) {
-    ReceivePort recipient = new ReceivePort();
-    port = recipient.sendPort;
-    servePurse(recipient);
-  }
-
-  void servePurse(ReceivePort recipient) {
-    recipient.listen((message) {
-      String command = message[0];
-      if (command == "balance") {
-        SendPort replyTo = message.last;
-        replyTo.send(queryBalance());
-      } else if (command == "deposit") {
-        Purse source = mint.lookupPurse(message[2]);
-        deposit(message[1], source);
-      } else if (command == "sprout") {
-        SendPort replyTo = message.last;
-        Purse result = sproutPurse();
-        replyTo.send(result.port);
-      } else {
-        // TODO: Send an exception back.
-        throw new UnsupportedError("Unsupported commend: $command");
-      }
-    });
-  }
-
-  int queryBalance() {
-    return balance;
-  }
-
-  Purse sproutPurse() {
-    return mint.createPurse(0);
-  }
-
-  void deposit(int amount, Purse source) {
-    // TODO: Throw an exception if the source purse doesn't hold
-    // enough dough.
-    balance += amount;
-    source.balance -= amount;
-  }
-}
-
-class PurseWrapper {
-  SendPort _purse;
-
-  PurseWrapper(this._purse) {}
-
-  void _sendReceive(message, replyHandler(reply)) {
-    ReceivePort reply = new ReceivePort();
-    _purse.send([message, reply.sendPort]);
-    reply.first.then(replyHandler);
-  }
-
-  void queryBalance(handleBalance(int balance)) {
-    _sendReceive("balance", handleBalance);
-  }
-
-  void sproutPurse(handleSprouted(PurseWrapper sprouted)) {
-    _sendReceive("sprout", (sprouted) {
-      handleSprouted(new PurseWrapper(sprouted as SendPort));
-    });
-  }
-
-  void deposit(PurseWrapper source, int amount) {
-    _purse.send(["deposit", amount, source._purse]);
-  }
-}
-
-mintMakerWrapper(SendPort replyPort) {
-  ReceivePort receiver = new ReceivePort();
-  replyPort.send(receiver.sendPort);
-  receiver.listen((replyTo) {
-    Mint mint = new Mint();
-    (replyTo as SendPort).send(mint.port);
-  });
-}
-
-class MintMakerWrapper {
-  final SendPort _port;
-
-  static Future<MintMakerWrapper> create() {
-    ReceivePort reply = new ReceivePort();
-    return Isolate
-        .spawn(mintMakerWrapper, reply.sendPort)
-        .then((_) => reply.first.then((port) => new MintMakerWrapper._(port)));
-  }
-
-  MintMakerWrapper._(this._port);
-
-  void makeMint(handleMint(MintWrapper mint)) {
-    ReceivePort reply = new ReceivePort();
-    reply.first.then((mint) {
-      handleMint(new MintWrapper(mint as SendPort));
-    });
-    _port.send(reply.sendPort);
-  }
-}
-
-_checkBalance(PurseWrapper wrapper, expected) {
-  wrapper.queryBalance(expectAsync((int balance) {
-    expect(balance, equals(expected));
-  }));
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("creating purse, deposit, and query balance", () {
-    MintMakerWrapper.create().then(expectAsync((mintMaker) {
-      mintMaker.makeMint(expectAsync((MintWrapper mint) {
-        mint.createPurse(100, expectAsync((PurseWrapper purse) {
-          _checkBalance(purse, 100);
-          purse.sproutPurse(expectAsync((PurseWrapper sprouted) {
-            _checkBalance(sprouted, 0);
-            _checkBalance(purse, 100);
-
-            sprouted.deposit(purse, 5);
-            _checkBalance(sprouted, 0 + 5);
-            _checkBalance(purse, 100 - 5);
-
-            sprouted.deposit(purse, 42);
-            _checkBalance(sprouted, 0 + 5 + 42);
-            _checkBalance(purse, 100 - 5 - 42);
-          }));
-        }));
-      }));
-    }));
-  });
-}
diff --git a/tests/isolate/nested_spawn2_test.dart b/tests/isolate/nested_spawn2_test.dart
deleted file mode 100644
index 0500d7b..0000000
--- a/tests/isolate/nested_spawn2_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// 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.
-
-// Dart test program for testing that isolates can spawn other isolates and
-// that the nested isolates can communicate with the main once the spawner has
-// disappeared.
-
-library NestedSpawn2Test;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-void isolateA(SendPort init) {
-  ReceivePort port = new ReceivePort();
-  init.send(port.sendPort);
-  port.first.then((message) {
-    expect(message[0], "launch nested!");
-    SendPort replyTo = message[1];
-    Isolate.spawn(isolateB, replyTo);
-  });
-}
-
-String msg0 = "0 there?";
-String msg1 = "1 Yes.";
-String msg2 = "2 great. Think the other one is already dead?";
-String msg3 = "3 Give him some time.";
-String msg4 = "4 now?";
-String msg5 = "5 Now.";
-String msg6 = "6 Great. Bye";
-
-void _call(SendPort p, msg, void onreceive(m, replyTo)) {
-  final replyTo = new ReceivePort();
-  p.send([msg, replyTo.sendPort]);
-  replyTo.first.then((m) {
-    onreceive(m[0], m[1]);
-  });
-}
-
-void isolateB(SendPort mainPort) {
-  // Do a little ping-pong dance to give the intermediate isolate
-  // time to die.
-  _call(mainPort, msg0, ((msg, replyTo) {
-    expect(msg[0], "1");
-    _call(replyTo, msg2, ((msg, replyTo) {
-      expect(msg[0], "3");
-      _call(replyTo, msg4, ((msg, replyTo) {
-        expect(msg[0], "5");
-        replyTo.send([msg6, null]);
-      }));
-    }));
-  }));
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("spawned isolate can spawn other isolates", () {
-    ReceivePort init = new ReceivePort();
-    Isolate.spawn(isolateA, init.sendPort);
-    return init.first.then(expectAsync((port) {
-      _call(port, "launch nested!", expectAsync((msg, replyTo) {
-        expect(msg[0], "0");
-        _call(replyTo, msg1, expectAsync((msg, replyTo) {
-          expect(msg[0], "2");
-          _call(replyTo, msg3, expectAsync((msg, replyTo) {
-            expect(msg[0], "4");
-            _call(replyTo, msg5, expectAsync((msg, _) {
-              expect(msg[0], "6");
-            }));
-          }));
-        }));
-      }));
-    }));
-  });
-}
diff --git a/tests/isolate/nested_spawn_test.dart b/tests/isolate/nested_spawn_test.dart
deleted file mode 100644
index f72493b..0000000
--- a/tests/isolate/nested_spawn_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-
-// Dart test program for testing that isolates can spawn other isolates.
-
-library NestedSpawnTest;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-void isolateA(message) {
-  message.add("isolateA");
-  Isolate.spawn(isolateB, message);
-}
-
-void isolateB(message) {
-  message.add("isolateB");
-  message[0].send(message);
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("spawned isolates can spawn nested isolates", () {
-    ReceivePort port = new ReceivePort();
-    Isolate.spawn(isolateA, [port.sendPort, "main"]);
-    return port.first.then((message) {
-      expect("main", message[1]);
-      expect("isolateA", message[2]);
-      expect("isolateB", message[3]);
-    });
-  });
-}
diff --git a/tests/isolate/non_fatal_exception_in_timer_callback_test.dart b/tests/isolate/non_fatal_exception_in_timer_callback_test.dart
deleted file mode 100644
index 4568afe..0000000
--- a/tests/isolate/non_fatal_exception_in_timer_callback_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-
-import 'dart:async';
-import 'dart:isolate';
-import 'dart:io';
-
-main() async {
-  Isolate.current.setErrorsFatal(false);
-
-  new Timer(const Duration(milliseconds: 10), () {
-    print("Timer 1");
-
-    // This unhandled exception should not prevent the second timer from firing.
-    throw "Oh no!";
-  });
-
-  new Timer.periodic(const Duration(milliseconds: 20), (_) {
-    print("Timer 2");
-    exit(0);
-  });
-
-  sleep(const Duration(milliseconds: 30)); //# sleep: ok
-  // With sleep: both timers are due at the same wakeup event.
-  // Without sleep: the timers get separate wakeup events.
-}
diff --git a/tests/isolate/object_leak_test.dart b/tests/isolate/object_leak_test.dart
deleted file mode 100644
index 8bbd8f4..0000000
--- a/tests/isolate/object_leak_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Regression test for http://dartbug.com/18942
-
-library LeakTest;
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-import 'dart:isolate';
-import 'dart:async';
-
-class A {
-  var x = 0;
-}
-
-fun(msg) {
-  var a = msg[0];
-  var replyTo = msg[1];
-  print("received: ${a.x}");
-  a.x = 1;
-  print("done updating: ${a.x}");
-  replyTo.send("done");
-}
-
-main() {
-  asyncStart();
-  var a = new A();
-  ReceivePort rp = new ReceivePort();
-  Isolate.spawn(fun, [a, rp.sendPort]);
-  rp.first.then((msg) {
-    Expect.equals("done", msg);
-    // Changes in other isolate must not reach here.
-    Expect.equals(0, a.x);
-    asyncEnd();
-  });
-}
diff --git a/tests/isolate/ondone_test.dart b/tests/isolate/ondone_test.dart
deleted file mode 100644
index 6b247c7..0000000
--- a/tests/isolate/ondone_test.dart
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
-// for details. All rights reserved. Use of this source is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import "dart:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-
-void isomain(SendPort replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    if (v == 0) {
-      // Shut down when receiving the 0 message.
-      port.close();
-    } else {
-      replyPort.send(v);
-    }
-  };
-  replyPort.send(port.sendPort);
-}
-
-void main() {
-  testExit();
-  testCancelExit();
-  testOverrideResponse();
-}
-
-void testExit() {
-  bool mayComplete = false;
-  asyncStart();
-  var completer = new Completer(); // Completed by first reply from isolate.
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  RawReceivePort onExitPort;
-  onExitPort = new RawReceivePort((v) {
-    if (v != "RESPONSE") throw "WRONG RESPONSE: $v";
-    reply.close();
-    onExitPort.close();
-    if (!mayComplete) throw "COMPLETED EARLY";
-    asyncEnd();
-  });
-  Isolate.spawn(isomain, reply.sendPort).then((Isolate isolate) {
-    isolate.addOnExitListener(onExitPort.sendPort, response: "RESPONSE");
-    return completer.future;
-  }).then((echoPort) {
-    int counter = 4;
-    reply.handler = (v) {
-      if (v != counter) throw "WRONG REPLY";
-      if (v == 0) throw "REPLY INSTEAD OF SHUTDOWN";
-      counter--;
-      mayComplete = (counter == 0);
-      echoPort.send(counter);
-    };
-    echoPort.send(counter);
-  });
-}
-
-void testCancelExit() {
-  bool mayComplete = false;
-  asyncStart();
-  var completer = new Completer(); // Completed by first reply from isolate.
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  RawReceivePort onExitPort2 = new RawReceivePort((_) {
-    throw "RECEIVED EXIT MESSAGE";
-  });
-  RawReceivePort onExitPort1;
-  onExitPort1 = new RawReceivePort((_) {
-    reply.close();
-    onExitPort1.close();
-    if (!mayComplete) throw "COMPLETED EARLY";
-    new Timer(const Duration(milliseconds: 0), () {
-      onExitPort2.close();
-      asyncEnd();
-    });
-  });
-  Isolate.spawn(isomain, reply.sendPort).then((Isolate isolate) {
-    isolate.addOnExitListener(onExitPort2.sendPort);
-    isolate.addOnExitListener(onExitPort1.sendPort);
-    return completer.future.then((echoPort) {
-      int counter = 4;
-      reply.handler = (v) {
-        if (v != counter) throw "WRONG REPLY";
-        if (v == 0) throw "REPLY INSTEAD OF SHUTDOWN";
-        counter--;
-        mayComplete = (counter == 0);
-        if (counter == 1) {
-          // Remove listener 2, keep listener 1.
-          isolate.removeOnExitListener(onExitPort2.sendPort);
-        }
-        echoPort.send(counter);
-      };
-      echoPort.send(counter);
-    });
-  });
-}
-
-void testOverrideResponse() {
-  bool mayComplete = false;
-  asyncStart();
-  var completer = new Completer(); // Completed by first reply from isolate.
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  RawReceivePort onExitPort;
-  onExitPort = new RawReceivePort((v) {
-    if (v != "RESPONSE2") throw "WRONG RESPONSE: $v";
-    reply.close();
-    onExitPort.close();
-    if (!mayComplete) throw "COMPLETED EARLY";
-    asyncEnd();
-  });
-  Isolate.spawn(isomain, reply.sendPort).then((Isolate isolate) {
-    isolate.addOnExitListener(onExitPort.sendPort, response: "RESPONSE");
-    isolate.addOnExitListener(onExitPort.sendPort, response: "RESPONSE2");
-    return completer.future;
-  }).then((echoPort) {
-    int counter = 4;
-    reply.handler = (v) {
-      if (v != counter) throw "WRONG REPLY";
-      if (v == 0) throw "REPLY INSTEAD OF SHUTDOWN";
-      counter--;
-      mayComplete = (counter == 0);
-      echoPort.send(counter);
-    };
-    echoPort.send(counter);
-  });
-}
diff --git a/tests/isolate/package_config_test.dart b/tests/isolate/package_config_test.dart
deleted file mode 100644
index 2b2c9cb..0000000
--- a/tests/isolate/package_config_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2015, 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=--trace_shutdown
-import 'dart:io';
-import 'dart:isolate';
-
-final SPAWN_PACKAGE_CONFIG = "foobar:///no/such/file/";
-
-main([args, port]) async {
-  if (port != null) {
-    testPackageConfig(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort,
-      packageConfig: Uri.parse(SPAWN_PACKAGE_CONFIG));
-  p.handler = (msg) {
-    p.close();
-    if (msg[0] != SPAWN_PACKAGE_CONFIG) {
-      throw "Bad package config in child isolate: ${msg[0]}";
-    }
-    if (msg[1] != null) {
-      throw "Non-null loaded package config in isolate: ${msg[1]}";
-    }
-    print("SUCCESS");
-  };
-  print("Spawning isolate's package config: ${await Isolate.packageConfig}");
-}
-
-testPackageConfig(port) async {
-  var packageConfigStr = Platform.packageConfig;
-  var packageConfig = await Isolate.packageConfig;
-  print("Spawned isolate's package config flag: $packageConfigStr");
-  print("Spawned isolate's loaded package config: $packageConfig");
-  port.send([packageConfigStr, packageConfig?.toString()]);
-}
diff --git a/tests/isolate/package_resolve_test.dart b/tests/isolate/package_resolve_test.dart
deleted file mode 100644
index 89b22ea..0000000
--- a/tests/isolate/package_resolve_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2015, 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 'dart:isolate';
-
-final SPAWN_PACKAGE_ROOT = "file:///no/such/package/root/";
-final PACKAGE_URI = "package:foo/bar.dart";
-final PACKAGE_PATH = "file:///no/such/package/root/foo/bar.dart";
-
-main([args, port]) async {
-  if (port != null) {
-    testPackageResolution(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort,
-      packageRoot: Uri.parse(SPAWN_PACKAGE_ROOT));
-  p.handler = (msg) {
-    p.close();
-    if (msg is! List) {
-      print(msg.runtimeType);
-      throw "Failure return from spawned isolate:\n\n$msg";
-    }
-    if (msg[0] != null) {
-      throw "Bad package root in child isolate: ${msg[0]}";
-    }
-    if (msg[1] != null) {
-      throw "Package path not matching: ${msg[1]}";
-    }
-    print("SUCCESS");
-  };
-  print("Spawning isolate's package root: ${await Isolate.packageRoot}");
-}
-
-testPackageResolution(port) async {
-  try {
-    var packageRootStr = Platform.packageRoot;
-    var packageRoot = await Isolate.packageRoot;
-    var resolvedPkg = await Isolate.resolvePackageUri(Uri.parse(PACKAGE_URI));
-    print("Spawned isolate's package root flag: $packageRootStr");
-    print("Spawned isolate's loaded package root: $packageRoot");
-    print("Spawned isolate's resolved package path: $resolvedPkg");
-    port.send([packageRoot?.toString(), resolvedPkg?.toString()]);
-  } catch (e, s) {
-    port.send("$e\n$s\n");
-  }
-}
diff --git a/tests/isolate/package_root_test.dart b/tests/isolate/package_root_test.dart
deleted file mode 100644
index 7d6e7b6..0000000
--- a/tests/isolate/package_root_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2015, 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 'dart:isolate';
-
-final SPAWN_PACKAGE_ROOT = "file:///no/such/file/";
-
-main([args, port]) async {
-  if (port != null) {
-    testPackageRoot(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort,
-      packageRoot: Uri.parse(SPAWN_PACKAGE_ROOT));
-  p.handler = (msg) {
-    p.close();
-    if (msg != null) {
-      throw "Bad package root in child isolate: $msg";
-    }
-    print("SUCCESS");
-  };
-  print("Spawning isolate's package root: ${await Isolate.packageRoot}");
-}
-
-testPackageRoot(port) async {
-  var packageRoot = await Isolate.packageRoot;
-  print("Spawned isolate's package root: $packageRoot");
-  port.send(packageRoot);
-}
diff --git a/tests/isolate/pause_test.dart b/tests/isolate/pause_test.dart
deleted file mode 100644
index 23a0526..0000000
--- a/tests/isolate/pause_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    replyPort.send(v);
-    port.close();
-  };
-  replyPort.send(port.sendPort);
-}
-
-main() {
-  asyncStart();
-  RawReceivePort reply = new RawReceivePort();
-  Isolate isolate;
-  Capability resume;
-  var completer = new Completer(); // Completed by first reply from isolate.
-  reply.handler = completer.complete;
-  Isolate.spawn(isomain1, reply.sendPort).then((Isolate iso) {
-    isolate = iso;
-    return completer.future;
-  }).then((echoPort) {
-    // Isolate has been created, and first response has been returned.
-    resume = isolate.pause();
-    echoPort.send(24);
-    reply.handler = (v) {
-      throw "RESPONSE WHILE PAUSED?!?";
-    };
-    return new Future.delayed(const Duration(milliseconds: 250));
-  }).then((_) {
-    reply.handler = (v) {
-      if (v != 24) throw "WRONG ANSWER!";
-      reply.close();
-      asyncEnd();
-    };
-    isolate.resume(resume);
-  });
-}
diff --git a/tests/isolate/ping_pause_test.dart b/tests/isolate/ping_pause_test.dart
deleted file mode 100644
index 6522c09..0000000
--- a/tests/isolate/ping_pause_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    replyPort.send(v);
-    if (v == 0) port.close();
-  };
-  replyPort.send(port.sendPort);
-}
-
-void main() {
-  asyncStart();
-  var completer = new Completer(); // Completed by first reply from isolate.
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  Isolate.spawn(isomain1, reply.sendPort).then((Isolate isolate) {
-    List result = [];
-    completer.future.then((echoPort) {
-      reply.handler = (v) {
-        result.add(v);
-        if (v == 0) {
-          Expect.listEquals([4, 3, 2, 1, 0], result);
-          reply.close();
-          asyncEnd();
-        }
-      };
-      echoPort.send(4);
-      echoPort.send(3);
-      Capability resume = isolate.pause();
-      var pingPort = new RawReceivePort();
-      pingPort.handler = (_) {
-        Expect.isTrue(result.length <= 2);
-        echoPort.send(0);
-        isolate.resume(resume);
-        pingPort.close();
-      };
-      isolate.ping(pingPort.sendPort, priority: Isolate.BEFORE_NEXT_EVENT);
-      echoPort.send(2);
-      echoPort.send(1);
-    });
-  });
-}
diff --git a/tests/isolate/ping_test.dart b/tests/isolate/ping_test.dart
deleted file mode 100644
index ac18faf..0000000
--- a/tests/isolate/ping_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2014, 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:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-isomain1(replyPort) {
-  RawReceivePort port = new RawReceivePort();
-  port.handler = (v) {
-    replyPort.send(v);
-    if (v == 0) port.close();
-  };
-  replyPort.send(port.sendPort);
-}
-
-void main() {
-  asyncStart();
-  var completer = new Completer(); // Completed by first reply from isolate.
-  RawReceivePort reply = new RawReceivePort(completer.complete);
-  Isolate.spawn(isomain1, reply.sendPort).then((Isolate isolate) {
-    List result = [];
-    completer.future.then((echoPort) {
-      reply.handler = (v) {
-        result.add(v);
-        if (v == 0) {
-          Expect.listEquals(["alive", "control"],
-              result.where((x) => x is String).toList(), "control events");
-          Expect.listEquals([3, 2, 1, 0],
-              result.where((x) => x is int).toList(), "data events");
-          Expect.isTrue(
-              result.indexOf("alive") < result.indexOf(2), "alive index < 2");
-          Expect.isTrue(result.indexOf("control") < result.indexOf(1),
-              "control index < 1");
-          reply.close();
-          asyncEnd();
-        }
-      };
-      var pingPort = new RawReceivePort();
-      int pingCount = 0;
-      pingPort.handler = (response) {
-        result.add(response);
-        pingCount++;
-        if (pingCount == 2) pingPort.close();
-      };
-      ping(message, priority) {
-        isolate.ping(pingPort.sendPort, response: message, priority: priority);
-      }
-
-      echoPort.send(3);
-      ping("alive", Isolate.IMMEDIATE);
-      echoPort.send(2);
-      ping("control", Isolate.BEFORE_NEXT_EVENT);
-      echoPort.send(1);
-      echoPort.send(0);
-    });
-  });
-}
diff --git a/tests/isolate/port_test.dart b/tests/isolate/port_test.dart
deleted file mode 100644
index cff9027..0000000
--- a/tests/isolate/port_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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.
-
-// Test properties of ports.
-// Note: unittest.dart depends on ports, in particular on the behaviour tested
-// here. To keep things simple, we don't use the unittest library here.
-
-library PortTest;
-
-import "package:expect/expect.dart";
-import 'dart:isolate';
-
-main() {
-  testHashCode();
-  testEquals();
-  testMap();
-}
-
-void testHashCode() {
-  ReceivePort rp0 = new ReceivePort();
-  ReceivePort rp1 = new ReceivePort();
-  Expect.equals(rp0.sendPort.hashCode, rp0.sendPort.hashCode);
-  Expect.equals(rp1.sendPort.hashCode, rp1.sendPort.hashCode);
-  rp0.close();
-  rp1.close();
-}
-
-void testEquals() {
-  ReceivePort rp0 = new ReceivePort();
-  ReceivePort rp1 = new ReceivePort();
-  Expect.equals(rp0.sendPort, rp0.sendPort);
-  Expect.equals(rp1.sendPort, rp1.sendPort);
-  Expect.isFalse(rp0.sendPort == rp1.sendPort);
-  rp0.close();
-  rp1.close();
-}
-
-void testMap() {
-  ReceivePort rp0 = new ReceivePort();
-  ReceivePort rp1 = new ReceivePort();
-  final map = new Map<SendPort, int>();
-  map[rp0.sendPort] = 42;
-  map[rp1.sendPort] = 87;
-  Expect.equals(map[rp0.sendPort], 42);
-  Expect.equals(map[rp1.sendPort], 87);
-
-  map[rp0.sendPort] = 99;
-  Expect.equals(map[rp0.sendPort], 99);
-  Expect.equals(map[rp1.sendPort], 87);
-
-  map.remove(rp0.sendPort);
-  Expect.isFalse(map.containsKey(rp0.sendPort));
-  Expect.equals(map[rp1.sendPort], 87);
-
-  map.remove(rp1.sendPort);
-  Expect.isFalse(map.containsKey(rp0.sendPort));
-  Expect.isFalse(map.containsKey(rp1.sendPort));
-
-  rp0.close();
-  rp1.close();
-}
diff --git a/tests/isolate/raw_port_test.dart b/tests/isolate/raw_port_test.dart
deleted file mode 100644
index 5b946cb..0000000
--- a/tests/isolate/raw_port_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// 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.
-
-// Test RawReceivePort.
-
-library raw_port_test;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import 'remote_unittest_helper.dart';
-
-void remote(SendPort port) {
-  port.send("reply");
-}
-
-void remote2(SendPort port) {
-  port.send("reply 1");
-  port.send("reply 2");
-}
-
-main([args, port]) {
-  if (testRemote(main, port)) return;
-
-  test("raw receive", () {
-    RawReceivePort port = new RawReceivePort();
-    Isolate.spawn(remote, port.sendPort);
-    port.handler = expectAsync((v) {
-      expect(v, "reply");
-      port.close();
-    });
-  });
-
-  test("raw receive hashCode", () {
-    RawReceivePort port = new RawReceivePort();
-    expect(port.hashCode is int, true);
-    port.close();
-  });
-
-  test("raw receive twice - change handler", () {
-    RawReceivePort port = new RawReceivePort();
-    Isolate.spawn(remote2, port.sendPort);
-    port.handler = expectAsync((v) {
-      expect(v, "reply 1");
-      port.handler = expectAsync((v) {
-        expect(v, "reply 2");
-        port.close();
-      });
-    });
-  });
-
-  test("from-raw-port", () {
-    RawReceivePort rawPort = new RawReceivePort();
-    Isolate.spawn(remote, rawPort.sendPort);
-    rawPort.handler = expectAsync((v) {
-      expect(v, "reply");
-      ReceivePort port = new ReceivePort.fromRawReceivePort(rawPort);
-      Isolate.spawn(remote, rawPort.sendPort);
-      Isolate.spawn(remote, port.sendPort);
-      int ctr = 2;
-      port.listen(
-          expectAsync((v) {
-            expect(v, "reply");
-            ctr--;
-            if (ctr == 0) port.close();
-          }, count: 2),
-          onDone: expectAsync(() {}));
-    });
-  });
-}
diff --git a/tests/isolate/remote_unittest_helper.dart b/tests/isolate/remote_unittest_helper.dart
deleted file mode 100644
index 85bee87..0000000
--- a/tests/isolate/remote_unittest_helper.dart
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Helper functions and classes for running a set of unittests in a
-// remote isolate.
-// Used to test Isolate.spawn because dartium/drt does not allow it in the DOM
-// isolate.
-
-import "dart:isolate";
-import "package:unittest/unittest.dart";
-@MirrorsUsed(symbols: "main", targets: "main", override: "*")
-import "dart:mirrors";
-
-/**
- * Use this function at the beginning of the main method:
- *
- *     void main([args, port]) {
- *       if (testRemote(main, port)) return;
- *       // the usual test.
- *     }
- *
- * Remember to import unittest using the URI `package:inittest/unittest.dart`.
- * Otherwise it won't be sharing the `unittestConfiguration` with this library,
- * and the override set below won't work.
- *
- * Returns `true` if the tests are being run remotely, and
- * `false` if the tests should be run locally.
- */
-bool testRemote(Function main, SendPort port) {
-  if (port != null) {
-    unittestConfiguration = new RemoteConfiguration(port);
-    return false;
-  }
-  var testResponses = new Map<String, List>();
-
-  ClosureMirror closure = reflect(main);
-  LibraryMirror library = closure.function.owner;
-
-  var receivePort = new ReceivePort();
-  void remoteAction(message) {
-    switch (message[0]) {
-      case "testStart":
-        String name = message[1];
-        testResponses[name] = null;
-        break;
-      case "testResult":
-      case "testResultChanged":
-        String name = message[1];
-        testResponses[name] = message;
-        break;
-      case "logMessage":
-        break; // Ignore.
-      case "summary":
-        throw message[1]; // Uncaught error.
-      case "done":
-        receivePort.close();
-        _simulateTests(testResponses);
-        break;
-    }
-  }
-
-  try {
-    Isolate.spawnUri(library.uri, null, receivePort.sendPort);
-    receivePort.listen(remoteAction);
-    return true;
-  } catch (e) {
-    // spawnUri is only supported by dart2js if web workers are available.
-    // If the spawnUri fails, run the tests locally instead, since we are
-    // not in a browser anyway.
-    //
-    // That is, we assume that either Isolate.spawn or Isolate.spawnUri must
-    // work, so if spawnUri doesn't work, we can run the tests directly.
-    receivePort.close();
-    return false;
-  }
-}
-
-class RemoteConfiguration implements Configuration {
-  final SendPort _port;
-  Duration timeout = const Duration(minutes: 2);
-
-  RemoteConfiguration(this._port);
-
-  bool get autoStart => true;
-
-  void onInit() {}
-
-  void onStart() {}
-
-  void onTestStart(TestCase testCase) {
-    _port.send(["testStart", testCase.description]);
-  }
-
-  void onTestResult(TestCase testCase) {
-    _port.send([
-      "testResult",
-      testCase.description,
-      testCase.result,
-      testCase.message
-    ]);
-  }
-
-  void onTestResultChanged(TestCase testCase) {
-    _port.send([
-      "testResultChanged",
-      testCase.description,
-      testCase.result,
-      testCase.message
-    ]);
-  }
-
-  void onLogMessage(TestCase testCase, String message) {
-    _port.send(["logMessage", testCase.description, message]);
-  }
-
-  void onDone(bool success) {
-    _port.send(["done", success]);
-  }
-
-  void onSummary(int passed, int failed, int errors, List<TestCase> results,
-      String uncaughtError) {
-    if (uncaughtError != null) {
-      _port.send(["summary", uncaughtError]);
-    }
-  }
-}
-
-void _simulateTests(Map<String, List> responses) {
-  // Start all unit tests in the same event.
-  responses.forEach((name, response) {
-    test(name, () {
-      var result = response[2];
-      var message = response[3];
-      if (result == FAIL) {
-        fail(message);
-      } else if (result == ERROR) {
-        throw message;
-      }
-    });
-  });
-}
diff --git a/tests/isolate/request_reply_test.dart b/tests/isolate/request_reply_test.dart
deleted file mode 100644
index caeba64..0000000
--- a/tests/isolate/request_reply_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-library RequestReplyTest;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-void entry(initPort) {
-  ReceivePort port = new ReceivePort();
-  initPort.send(port.sendPort);
-  port.listen((pair) {
-    var message = pair[0];
-    SendPort replyTo = pair[1];
-    replyTo.send(message + 87);
-    port.close();
-  });
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test("send", () {
-    ReceivePort init = new ReceivePort();
-    Isolate.spawn(entry, init.sendPort);
-    init.first.then(expectAsync((port) {
-      ReceivePort reply = new ReceivePort();
-      port.send([99, reply.sendPort]);
-      reply.listen(expectAsync((message) {
-        expect(message, 99 + 87);
-        reply.close();
-      }));
-    }));
-  });
-}
diff --git a/tests/isolate/resolve_package_uri_test.dart b/tests/isolate/resolve_package_uri_test.dart
deleted file mode 100644
index 7aa387a..0000000
--- a/tests/isolate/resolve_package_uri_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-// Regression test for faulty encoding of `Isolate.resolvePackageUri` by
-// dart2js.
-
-import 'dart:async';
-import 'dart:isolate';
-
-main() {
-  Future<Uri> uri = Isolate.resolvePackageUri(Uri.parse('memory:main.dart'));
-  print(uri);
-}
diff --git a/tests/isolate/scenarios/automatic_resolution_root/package_resolve_test.dart b/tests/isolate/scenarios/automatic_resolution_root/package_resolve_test.dart
deleted file mode 100644
index bbcb3d3..0000000
--- a/tests/isolate/scenarios/automatic_resolution_root/package_resolve_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.
-
-import 'dart:io';
-import 'dart:isolate';
-
-final PACKAGE_URI = "package:foo/bar.dart";
-
-main([args, port]) async {
-  if (port != null) {
-    testPackageResolution(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort,
-      automaticPackageResolution: true);
-  p.handler = (msg) {
-    p.close();
-    if (msg is! List) {
-      print(msg.runtimeType);
-      throw "Failure return from spawned isolate:\n\n$msg";
-    }
-    if (msg[0] != null) {
-      throw "Bad package root in child isolate: ${msg[0]}.\n"
-          "Expected: null";
-    }
-    if (msg[1] != null) {
-      throw "Package path not matching: ${msg[1]}\n"
-          "Expected null";
-    }
-    print("SUCCESS");
-  };
-  print("Spawning isolate's package root: ${await Isolate.packageRoot}");
-}
-
-testPackageResolution(port) async {
-  try {
-    var packageRootStr = Platform.packageRoot;
-    var packageConfigStr = Platform.packageConfig;
-    var packageRoot = await Isolate.packageRoot;
-    var resolvedPkg = await Isolate.resolvePackageUri(Uri.parse(PACKAGE_URI));
-    print("Spawned isolate's package root flag: $packageRootStr");
-    print("Spawned isolate's package config flag: $packageConfigStr");
-    print("Spawned isolate's loaded package root: $packageRoot");
-    print("Spawned isolate's resolved package path: $resolvedPkg");
-    port.send([packageRoot?.toString(), resolvedPkg?.toString()]);
-  } catch (e, s) {
-    port.send("$e\n$s\n");
-  }
-}
diff --git a/tests/isolate/scenarios/automatic_resolution_root/packages/empty_file b/tests/isolate/scenarios/automatic_resolution_root/packages/empty_file
deleted file mode 100644
index e69de29..0000000
--- a/tests/isolate/scenarios/automatic_resolution_root/packages/empty_file
+++ /dev/null
diff --git a/tests/isolate/scenarios/automatic_resolution_spec/.packages b/tests/isolate/scenarios/automatic_resolution_spec/.packages
deleted file mode 100644
index 79bcf43..0000000
--- a/tests/isolate/scenarios/automatic_resolution_spec/.packages
+++ /dev/null
@@ -1 +0,0 @@
-foo:file:///no/such/directory/
diff --git a/tests/isolate/scenarios/automatic_resolution_spec/package_resolve_test.dart b/tests/isolate/scenarios/automatic_resolution_spec/package_resolve_test.dart
deleted file mode 100644
index dee6d10..0000000
--- a/tests/isolate/scenarios/automatic_resolution_spec/package_resolve_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// 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.
-
-import 'dart:io';
-import 'dart:isolate';
-
-final PACKAGE_URI = "package:foo/bar.dart";
-final PACKAGE_PATH = "file:///no/such/directory/bar.dart";
-
-main([args, port]) async {
-  if (port != null) {
-    testPackageResolution(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort,
-      automaticPackageResolution: true);
-  p.handler = (msg) {
-    p.close();
-    if (msg is! List) {
-      print(msg.runtimeType);
-      throw "Failure return from spawned isolate:\n\n$msg";
-    }
-    var child_pkg_config = Platform.script.resolve(".packages");
-    if (msg[0] != child_pkg_config.toString()) {
-      throw "Bad package config in child isolate: ${msg[0]}\n"
-          "Expected: $child_pkg_config";
-    }
-    if (msg[1] != PACKAGE_PATH) {
-      throw "Package path not matching: ${msg[1]}";
-    }
-    print("SUCCESS");
-  };
-  print("Spawning isolate's package root: ${await Isolate.packageRoot}");
-}
-
-testPackageResolution(port) async {
-  try {
-    var packageRootStr = Platform.packageRoot;
-    var packageConfigStr = Platform.packageConfig;
-    var packageConfig = await Isolate.packageConfig;
-    var resolvedPkg = await Isolate.resolvePackageUri(Uri.parse(PACKAGE_URI));
-    print("Spawned isolate's package root flag: $packageRootStr");
-    print("Spawned isolate's package config flag: $packageConfigStr");
-    print("Spawned isolate's loaded package config: $packageConfig");
-    print("Spawned isolate's resolved package path: $resolvedPkg");
-    port.send([packageConfig?.toString(), resolvedPkg?.toString()]);
-  } catch (e, s) {
-    port.send("$e\n$s\n");
-  }
-}
diff --git a/tests/isolate/scenarios/bad_resolve_package/.packages b/tests/isolate/scenarios/bad_resolve_package/.packages
deleted file mode 100644
index 5acc702..0000000
--- a/tests/isolate/scenarios/bad_resolve_package/.packages
+++ /dev/null
@@ -1 +0,0 @@
-# Intentionally left blank to ensure no packages are resolved.
diff --git a/tests/isolate/scenarios/bad_resolve_package/bad_resolve_package_test.dart b/tests/isolate/scenarios/bad_resolve_package/bad_resolve_package_test.dart
deleted file mode 100644
index d0be07e..0000000
--- a/tests/isolate/scenarios/bad_resolve_package/bad_resolve_package_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-
-// PackageRoot=none
-
-import 'dart:io';
-import 'dart:isolate';
-
-main([args, port]) async {
-  if (port != null) {
-    testBadResolvePackage(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort);
-  p.handler = (msg) {
-    p.close();
-    if (msg is! List) {
-      print(msg.runtimeType);
-      throw "Failure return from spawned isolate:\n\n$msg";
-    }
-    // Expecting a null resolution for inexistent package mapping.
-    if (msg[0] != null) {
-      throw "Bad package config in child isolate: ${msg[0]}\n"
-          "Expected: 'Foo'";
-    }
-    print("SUCCESS");
-  };
-}
-
-testBadResolvePackage(port) async {
-  try {
-    var packageRootStr = Platform.packageRoot;
-    var packageConfigStr = Platform.packageConfig;
-    var packageConfig = await Isolate.packageConfig;
-    var badPackageUri = Uri.parse("package:asdf/qwerty.dart");
-    var resolvedPkg = await Isolate.resolvePackageUri(badPackageUri);
-    print("Spawned isolate's package root flag: $packageRootStr");
-    print("Spawned isolate's package config flag: $packageConfigStr");
-    print("Spawned isolate's loaded package config: $packageConfig");
-    print("Spawned isolate's resolved package path: $resolvedPkg");
-    port.send([resolvedPkg]);
-  } catch (e, s) {
-    port.send("$e\n$s\n");
-  }
-}
diff --git a/tests/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart b/tests/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
deleted file mode 100644
index ddb77c4..0000000
--- a/tests/isolate/scenarios/package_data_uri_spec/package_resolve_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-
-import 'dart:io';
-import 'dart:isolate';
-
-final PACKAGE_URI = "package:foo/bar.dart";
-final PACKAGE_PATH = "file:///no/such/directory/bar.dart";
-
-final PACKAGE_SPEC = """
-# This is the content of a .packages file.
-foo:file:///no/such/directory/
-""";
-
-main([args, port]) async {
-  if (port != null) {
-    testPackageResolution(port);
-    return;
-  }
-  var data = new Uri.dataFromString(PACKAGE_SPEC);
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort, packageConfig: data);
-  p.handler = (msg) {
-    p.close();
-    if (msg is! List) {
-      print(msg.runtimeType);
-      throw "Failure return from spawned isolate:\n\n$msg";
-    }
-    if (msg[0] != data.toString()) {
-      throw "Bad package config in child isolate: ${msg[0]}\n"
-          "Expected: $data";
-    }
-    if (msg[1] != PACKAGE_PATH) {
-      throw "Package path not matching: ${msg[1]}";
-    }
-    print("SUCCESS");
-  };
-  print("Spawning isolate's package root: ${await Isolate.packageRoot}");
-}
-
-testPackageResolution(port) async {
-  try {
-    var packageRootStr = Platform.packageRoot;
-    var packageConfigStr = Platform.packageConfig;
-    var packageConfig = await Isolate.packageConfig;
-    var resolvedPkg = await Isolate.resolvePackageUri(Uri.parse(PACKAGE_URI));
-    print("Spawned isolate's package root flag: $packageRootStr");
-    print("Spawned isolate's package config flag: $packageConfigStr");
-    print("Spawned isolate's loaded package config: $packageConfig");
-    print("Spawned isolate's resolved package path: $resolvedPkg");
-    port.send([packageConfig?.toString(), resolvedPkg?.toString()]);
-  } catch (e, s) {
-    port.send("$e\n$s\n");
-  }
-}
diff --git a/tests/isolate/scenarios/package_relative_root/package_relative_root_test.dart b/tests/isolate/scenarios/package_relative_root/package_relative_root_test.dart
deleted file mode 100644
index 3e28d99..0000000
--- a/tests/isolate/scenarios/package_relative_root/package_relative_root_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// 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.
-
-// PackageRoot=none
-
-import 'dart:io';
-import 'dart:isolate';
-
-import "package:foo/foo.dart";
-import "package:bar/bar.dart";
-
-var CONFIG_URI = "package:bar/spawned_packages/";
-
-main([args, port]) async {
-  if (port != null) {
-    testCorrectBarPackage(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort,
-      packageRoot: Uri.parse(CONFIG_URI));
-  p.handler = (msg) {
-    p.close();
-    if (msg is! List) {
-      print(msg.runtimeType);
-      throw "Failure return from spawned isolate:\n\n$msg";
-    }
-    if (msg[0] != "Foo") {
-      throw "Bad package config in child isolate: ${msg[0]}\n"
-          "Expected: 'Foo'";
-    }
-    if (msg[1] != "Bar1") {
-      throw "Package path not matching: ${msg[1]}\n"
-          "Expected: 'Bar1'";
-    }
-    print("SUCCESS");
-  };
-  if (Bar.value != "Bar1") {
-    throw "Spawning isolate package:bar invalid.";
-  }
-  print("Spawned isolate resolved $CONFIG_URI to: "
-      "${await Isolate.resolvePackageUri(Uri.parse(CONFIG_URI))}");
-}
-
-testCorrectBarPackage(port) async {
-  try {
-    var packageRootStr = Platform.packageRoot;
-    var packageConfigStr = Platform.packageConfig;
-    var packageConfig = await Isolate.packageConfig;
-    var resolvedPkg = await Isolate.resolvePackageUri(Uri.parse(CONFIG_URI));
-    print("Spawned isolate's package root flag: $packageRootStr");
-    print("Spawned isolate's package config flag: $packageConfigStr");
-    print("Spawned isolate's loaded package config: $packageConfig");
-    print("Spawned isolate's resolved package path: $resolvedPkg");
-    port.send([Foo.value, Bar.value]);
-  } catch (e, s) {
-    port.send("$e\n$s\n");
-  }
-}
diff --git a/tests/isolate/scenarios/package_relative_root/packages/bar/bar.dart b/tests/isolate/scenarios/package_relative_root/packages/bar/bar.dart
deleted file mode 100644
index 7fb99e2..0000000
--- a/tests/isolate/scenarios/package_relative_root/packages/bar/bar.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Bar {
-  static var value = "Bar1";
-}
diff --git a/tests/isolate/scenarios/package_relative_root/packages/bar/spawned_packages/bar/bar.dart b/tests/isolate/scenarios/package_relative_root/packages/bar/spawned_packages/bar/bar.dart
deleted file mode 100644
index cd6723a..0000000
--- a/tests/isolate/scenarios/package_relative_root/packages/bar/spawned_packages/bar/bar.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Bar {
-  static var value = "Bar2";
-}
diff --git a/tests/isolate/scenarios/package_relative_root/packages/bar/spawned_packages/foo/foo.dart b/tests/isolate/scenarios/package_relative_root/packages/bar/spawned_packages/foo/foo.dart
deleted file mode 100644
index ba907d1..0000000
--- a/tests/isolate/scenarios/package_relative_root/packages/bar/spawned_packages/foo/foo.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Foo {
-  static var value = "Foo";
-}
diff --git a/tests/isolate/scenarios/package_relative_root/packages/foo/foo.dart b/tests/isolate/scenarios/package_relative_root/packages/foo/foo.dart
deleted file mode 100644
index ba907d1..0000000
--- a/tests/isolate/scenarios/package_relative_root/packages/foo/foo.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Foo {
-  static var value = "Foo";
-}
diff --git a/tests/isolate/scenarios/package_relative_spec/.packages b/tests/isolate/scenarios/package_relative_spec/.packages
deleted file mode 100644
index d7a0d92..0000000
--- a/tests/isolate/scenarios/package_relative_spec/.packages
+++ /dev/null
@@ -1,4 +0,0 @@
-# This is the package spec for the spawning isolate.
-
-foo:foo_package/
-bar:bar1_package/
diff --git a/tests/isolate/scenarios/package_relative_spec/bar1_package/bar.dart b/tests/isolate/scenarios/package_relative_spec/bar1_package/bar.dart
deleted file mode 100644
index 7fb99e2..0000000
--- a/tests/isolate/scenarios/package_relative_spec/bar1_package/bar.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Bar {
-  static var value = "Bar1";
-}
diff --git a/tests/isolate/scenarios/package_relative_spec/bar1_package/package.config b/tests/isolate/scenarios/package_relative_spec/bar1_package/package.config
deleted file mode 100644
index b580fe3..0000000
--- a/tests/isolate/scenarios/package_relative_spec/bar1_package/package.config
+++ /dev/null
@@ -1,4 +0,0 @@
-# This is the package spec for the spawned isolate.
-
-foo:../foo_package/
-bar:../bar2_package/
diff --git a/tests/isolate/scenarios/package_relative_spec/bar2_package/bar.dart b/tests/isolate/scenarios/package_relative_spec/bar2_package/bar.dart
deleted file mode 100644
index cd6723a..0000000
--- a/tests/isolate/scenarios/package_relative_spec/bar2_package/bar.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Bar {
-  static var value = "Bar2";
-}
diff --git a/tests/isolate/scenarios/package_relative_spec/foo_package/foo.dart b/tests/isolate/scenarios/package_relative_spec/foo_package/foo.dart
deleted file mode 100644
index ba907d1..0000000
--- a/tests/isolate/scenarios/package_relative_spec/foo_package/foo.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Foo {
-  static var value = "Foo";
-}
diff --git a/tests/isolate/scenarios/package_relative_spec/package_relative_spec_test.dart b/tests/isolate/scenarios/package_relative_spec/package_relative_spec_test.dart
deleted file mode 100644
index 22c65cca..0000000
--- a/tests/isolate/scenarios/package_relative_spec/package_relative_spec_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// 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.
-
-// PackageRoot=none
-
-import 'dart:io';
-import 'dart:isolate';
-
-import "package:foo/foo.dart";
-import "package:bar/bar.dart";
-
-var CONFIG_URI = "package:bar/package.config";
-
-main([args, port]) async {
-  if (port != null) {
-    testCorrectBarPackage(port);
-    return;
-  }
-  var p = new RawReceivePort();
-  Isolate.spawnUri(Platform.script, [], p.sendPort,
-      packageConfig: Uri.parse(CONFIG_URI));
-  p.handler = (msg) {
-    p.close();
-    if (msg is! List) {
-      print(msg.runtimeType);
-      throw "Failure return from spawned isolate:\n\n$msg";
-    }
-    if (msg[0] != "Foo") {
-      throw "Bad package config in child isolate: ${msg[0]}\n"
-          "Expected: 'Foo'";
-    }
-    if (msg[1] != "Bar2") {
-      throw "Package path not matching: ${msg[1]}\n"
-          "Expected: 'Bar2'";
-    }
-    print("SUCCESS");
-  };
-  if (Bar.value != "Bar1") {
-    throw "Spawning isolate package:bar invalid.";
-  }
-  print("Spawned isolate resolved $CONFIG_URI to: "
-      "${await Isolate.resolvePackageUri(Uri.parse(CONFIG_URI))}");
-}
-
-testCorrectBarPackage(port) async {
-  try {
-    var packageRootStr = Platform.packageRoot;
-    var packageConfigStr = Platform.packageConfig;
-    var packageConfig = await Isolate.packageConfig;
-    var resolvedPkg = await Isolate.resolvePackageUri(Uri.parse(CONFIG_URI));
-    print("Spawned isolate's package root flag: $packageRootStr");
-    print("Spawned isolate's package config flag: $packageConfigStr");
-    print("Spawned isolate's loaded package config: $packageConfig");
-    print("Spawned isolate's resolved package path: $resolvedPkg");
-    port.send([Foo.value, Bar.value]);
-  } catch (e, s) {
-    port.send("$e\n$s\n");
-  }
-}
diff --git a/tests/isolate/scenarios/short_package/.packages b/tests/isolate/scenarios/short_package/.packages
deleted file mode 100644
index 324934c..0000000
--- a/tests/isolate/scenarios/short_package/.packages
+++ /dev/null
@@ -1 +0,0 @@
-flu:flu_package/
diff --git a/tests/isolate/scenarios/short_package/flu_package/flu.dart b/tests/isolate/scenarios/short_package/flu_package/flu.dart
deleted file mode 100644
index 5e33f7c..0000000
--- a/tests/isolate/scenarios/short_package/flu_package/flu.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-class Flu {
-  static var value = "Flu";
-}
diff --git a/tests/isolate/scenarios/short_package/flu_package/flu.text b/tests/isolate/scenarios/short_package/flu_package/flu.text
deleted file mode 100644
index d9d3a9a..0000000
--- a/tests/isolate/scenarios/short_package/flu_package/flu.text
+++ /dev/null
@@ -1 +0,0 @@
-Bar
\ No newline at end of file
diff --git a/tests/isolate/scenarios/short_package/short_package_test.dart b/tests/isolate/scenarios/short_package/short_package_test.dart
deleted file mode 100644
index 8538e1d..0000000
--- a/tests/isolate/scenarios/short_package/short_package_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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.
-
-// PackageRoot=none
-
-import 'dart:io';
-import 'dart:isolate';
-
-import "package:flu";
-
-var PACKAGE_FLU = "package:flu";
-var FLU_TEXT = "flu.text";
-
-testShortResolution(package_uri) async {
-  var fluPackage = await Isolate.resolvePackageUri(Uri.parse(package_uri));
-  print("Resolved $package_uri to $fluPackage");
-  var fluText = fluPackage.resolve(FLU_TEXT);
-  print("Resolved $FLU_TEXT from $package_uri to $fluText");
-  var fluFile = new File.fromUri(fluText);
-  var fluString = await fluFile.readAsString();
-  if (fluString != "Bar") {
-    throw "Contents of $FLU_TEXT not matching.\n"
-        "Got: $fluString\n"
-        "Expected: Bar";
-  }
-}
-
-main([args, port]) async {
-  if (Flu.value != "Flu") {
-    throw "Import of wrong Flu package.";
-  }
-  await testShortResolution(PACKAGE_FLU);
-  await testShortResolution(PACKAGE_FLU + "/");
-  await testShortResolution(PACKAGE_FLU + "/abc.def");
-  print("SUCCESS");
-}
diff --git a/tests/isolate/send_private_test.dart b/tests/isolate/send_private_test.dart
deleted file mode 100644
index 57df312..0000000
--- a/tests/isolate/send_private_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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.
-
-import "dart:isolate";
-import "package:expect/expect.dart";
-
-class _Private {
-  String data;
-  _Private(this.data);
-}
-
-void child(message) {
-  print("Got message: $message");
-  SendPort replyPort = message[0];
-  _Private object = message[1];
-  Expect.isTrue(object is _Private);
-  Expect.equals("XYZ", object.data);
-  replyPort.send(object);
-}
-
-void main() {
-  var port;
-  port = new RawReceivePort((message) {
-    print("Got reply: $message");
-    Expect.isTrue(message is _Private);
-    Expect.equals("XYZ", message.data);
-    port.close();
-  });
-
-  Isolate.spawn(child, [port.sendPort, new _Private("XYZ")]);
-}
diff --git a/tests/isolate/simple_message_test.dart b/tests/isolate/simple_message_test.dart
deleted file mode 100644
index 2ca65cb..0000000
--- a/tests/isolate/simple_message_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-
-// Dart test program for testing that isolates are spawned.
-
-library IsolateNegativeTest;
-
-import "package:expect/expect.dart";
-import 'dart:isolate';
-import "package:async_helper/async_helper.dart";
-
-void entry(SendPort replyTo) {
-  var message = "foo";
-  message = "bar"; // //# 01: runtime error
-  replyTo.send(message);
-}
-
-main() {
-  asyncStart();
-  ReceivePort response = new ReceivePort();
-  Isolate.spawn(entry, response.sendPort);
-  response.first.then((message) {
-    Expect.equals("foo", message);
-    asyncEnd();
-  });
-}
diff --git a/tests/isolate/spawn_function_custom_class_test.dart b/tests/isolate/spawn_function_custom_class_test.dart
deleted file mode 100644
index 515c973..0000000
--- a/tests/isolate/spawn_function_custom_class_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-
-// Create a user-defined class in a new isolate.
-//
-// Regression test for vm bug 2235: We were forgetting to finalize
-// classes in new isolates started using the v2 api.
-
-library spawn_tests;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-class MyClass {
-  var myVar = 'there';
-  myFunc(msg) {
-    return '$msg $myVar';
-  }
-}
-
-child(args) {
-  var reply = args[1];
-  var msg = args[0];
-  reply.send('re: ${new MyClass().myFunc(msg)}');
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test('message - reply chain', () {
-    ReceivePort port = new ReceivePort();
-    Isolate.spawn(child, ['hi', port.sendPort]);
-    port.listen((msg) {
-      port.close();
-      expect(msg, equals('re: hi there'));
-    });
-  });
-}
diff --git a/tests/isolate/spawn_function_test.dart b/tests/isolate/spawn_function_test.dart
deleted file mode 100644
index eba1bfa..0000000
--- a/tests/isolate/spawn_function_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-// Example of spawning an isolate from a function.
-library spawn_tests;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-child(args) {
-  var msg = args[0];
-  var reply = args[1];
-  reply.send('re: $msg');
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  test('message - reply chain', () {
-    ReceivePort port = new ReceivePort();
-    Isolate.spawn(child, ['hi', port.sendPort]);
-    port.listen(expectAsync((msg) {
-      port.close();
-      expect(msg, equals('re: hi'));
-    }));
-  });
-}
diff --git a/tests/isolate/spawn_uri_child_isolate.dart b/tests/isolate/spawn_uri_child_isolate.dart
deleted file mode 100644
index 81f40f9..0000000
--- a/tests/isolate/spawn_uri_child_isolate.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-// Child isolate code to be spawned from a URI to this file.
-library SpawnUriChildIsolate;
-
-void main(List<String> args, replyTo) {
-  var data = args[0];
-  replyTo.send('re: $data');
-}
diff --git a/tests/isolate/spawn_uri_exported_main.dart b/tests/isolate/spawn_uri_exported_main.dart
deleted file mode 100644
index afd0122..0000000
--- a/tests/isolate/spawn_uri_exported_main.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-export "spawn_uri_exported_main_lib.dart";
-
-maine() {
-  print("This is not the maine you are looking for.");
-}
diff --git a/tests/isolate/spawn_uri_exported_main_lib.dart b/tests/isolate/spawn_uri_exported_main_lib.dart
deleted file mode 100644
index 7500465..0000000
--- a/tests/isolate/spawn_uri_exported_main_lib.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-library spawn_uri_exported_main_lib;
-
-main(args, msg) {
-  print("From main!");
-  msg.send(50);
-}
diff --git a/tests/isolate/spawn_uri_exported_main_test.dart b/tests/isolate/spawn_uri_exported_main_test.dart
deleted file mode 100644
index e556dc6..0000000
--- a/tests/isolate/spawn_uri_exported_main_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-import "dart:async";
-import "dart:isolate";
-import "package:expect/expect.dart";
-
-main() {
-  print("Spawning isolate.");
-  var t = new Timer(new Duration(seconds: 5), () {
-    Expect.fail("Isolate was not spawned successfully.");
-  });
-  var rp = new RawReceivePort();
-  rp.handler = (msg) {
-    print("Spawned main called.");
-    Expect.equals(msg, 50);
-    rp.close();
-  };
-  Isolate
-      .spawnUri(Uri.parse("spawn_uri_exported_main.dart"), null, rp.sendPort)
-      .then((_) {
-    print("Loaded");
-    t.cancel();
-  });
-}
diff --git a/tests/isolate/spawn_uri_fail_test.dart b/tests/isolate/spawn_uri_fail_test.dart
deleted file mode 100644
index 8d46548..0000000
--- a/tests/isolate/spawn_uri_fail_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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.
-
-import "dart:io";
-import "dart:isolate";
-import "package:expect/expect.dart";
-
-main() async {
-  var pkgRoot = Uri.parse("file:///no/such/directory/");
-  var pkgConfig = Uri.parse("file:///no/such/.packages");
-  try {
-    var i = await Isolate.spawnUri(Platform.script, [], null,
-        packageRoot: pkgRoot, packageConfig: pkgConfig);
-  } catch (e) {
-    print(e);
-    Expect.isTrue(e is ArgumentError);
-  }
-  try {
-    var i = await Isolate.spawnUri(Platform.script, [], null,
-        packageRoot: pkgRoot, automaticPackageResolution: true);
-  } catch (e) {
-    print(e);
-    Expect.isTrue(e is ArgumentError);
-  }
-  try {
-    var i = await Isolate.spawnUri(Platform.script, [], null,
-        packageConfig: pkgConfig, automaticPackageResolution: true);
-  } catch (e) {
-    print(e);
-    Expect.isTrue(e is ArgumentError);
-  }
-  try {
-    var i = await Isolate.spawnUri(Platform.script, [], null,
-        packageRoot: pkgRoot,
-        packageConfig: pkgConfig,
-        automaticPackageResolution: true);
-  } catch (e) {
-    print(e);
-    Expect.isTrue(e is ArgumentError);
-  }
-}
diff --git a/tests/isolate/spawn_uri_missing_from_isolate_test.dart b/tests/isolate/spawn_uri_missing_from_isolate_test.dart
deleted file mode 100644
index 445edc1..0000000
--- a/tests/isolate/spawn_uri_missing_from_isolate_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2014, 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.
-
-/// Tests that Isolate.spawnUri completes with an error when the given URI
-/// doesn't resolve to an existing resource.
-///
-/// This test is similar to spawn_uri_missing_test.dart, but tests what happens
-/// when Isolate.spawnUri is called from an a spawned isolate.  In dart2js,
-/// these two situations are different.
-library test.isolate.spawn_uri_missing_from_isolate_test;
-
-import 'dart:isolate';
-
-import 'dart:async';
-
-import 'package:async_helper/async_helper.dart';
-
-import 'spawn_uri_missing_test.dart';
-
-const String SUCCESS = 'Test worked.';
-
-void isolate(SendPort port) {
-  doTest().then((_) => port.send(SUCCESS),
-      onError: (error, stack) => port.send('Test failed: $error\n$stack'));
-}
-
-main() {
-  ReceivePort port = new ReceivePort();
-  Isolate.spawn(isolate, port.sendPort);
-  Completer completer = new Completer();
-  port.first.then((message) {
-    if (message == SUCCESS) {
-      completer.complete(null);
-    } else {
-      completer.completeError(message);
-    }
-  });
-
-  asyncTest(() => completer.future);
-}
diff --git a/tests/isolate/spawn_uri_missing_test.dart b/tests/isolate/spawn_uri_missing_test.dart
deleted file mode 100644
index 2bb5078..0000000
--- a/tests/isolate/spawn_uri_missing_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2014, 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.
-
-/// Tests that Isolate.spanUri completes with an error when the given URI
-/// doesn't resolve to an existing resource.
-library test.isolate.spawn_uri_missing_test;
-
-import 'dart:isolate';
-
-import 'dart:async';
-
-import 'package:async_helper/async_helper.dart';
-
-const UNEXPECTED_MESSAGE = 'Created isolate from missing file.';
-
-Future doTest() {
-  return Isolate
-      .spawnUri(Uri.base.resolve('no_such_file'), [], null)
-      .then((Isolate isolate) {
-    throw UNEXPECTED_MESSAGE;
-  }).catchError((error) {
-    if (error == UNEXPECTED_MESSAGE) throw error;
-    print('An error was thrown as expected');
-    return null;
-  });
-}
-
-main() {
-  asyncTest(doTest);
-}
diff --git a/tests/isolate/spawn_uri_multi_test.dart b/tests/isolate/spawn_uri_multi_test.dart
deleted file mode 100644
index efd711c..0000000
--- a/tests/isolate/spawn_uri_multi_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.
-
-// Negative test to make sure that we are reaching all assertions.
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=spawn_uri_child_isolate.dart
-library spawn_tests;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-
-/* Dummy import so multi-test copies the file.
-import 'spawn_uri_child_isolate.dart';
-*/
-
-main() {
-  test('isolate fromUri - negative test', () {
-    ReceivePort port = new ReceivePort();
-    port.first.then(expectAsync((msg) {
-      String expectedMessage = 're: hi';
-      // Should be hi, not hello.
-      expectedMessage = 're: hello'; //# 01: runtime error
-      expect(msg, equals(expectedMessage));
-    }));
-
-    Isolate.spawnUri(
-        Uri.parse('spawn_uri_child_isolate.dart'), ['hi'], port.sendPort);
-  });
-}
diff --git a/tests/isolate/spawn_uri_nested_child1_vm_isolate.dart b/tests/isolate/spawn_uri_nested_child1_vm_isolate.dart
deleted file mode 100644
index 6008357..0000000
--- a/tests/isolate/spawn_uri_nested_child1_vm_isolate.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-// Example of nested spawning of isolates from a URI
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-library NestedSpawnUriChild1Library;
-
-import 'dart:isolate';
-
-main(List<String> args, message) {
-  ReceivePort port2 = new ReceivePort();
-  port2.listen((msg) {
-    if (msg != "re: hi") throw "Bad response: $msg";
-    port2.close();
-  });
-
-  Isolate.spawnUri(Uri.parse('spawn_uri_nested_child2_vm_isolate.dart'), ['hi'],
-      port2.sendPort);
-
-  var data = message[0];
-  var replyTo = message[1];
-  replyTo.send(data);
-}
diff --git a/tests/isolate/spawn_uri_nested_child2_vm_isolate.dart b/tests/isolate/spawn_uri_nested_child2_vm_isolate.dart
deleted file mode 100644
index a6c90b8f..0000000
--- a/tests/isolate/spawn_uri_nested_child2_vm_isolate.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-// Child isolate code to be spawned from a URI to this file.
-library NestedSpawnUriChild2Library;
-
-import 'dart:isolate';
-
-void main(List<String> args, SendPort replyTo) {
-  var data = args[0];
-  replyTo.send('re: $data');
-}
diff --git a/tests/isolate/spawn_uri_nested_vm_test.dart b/tests/isolate/spawn_uri_nested_vm_test.dart
deleted file mode 100644
index b231fb8..0000000
--- a/tests/isolate/spawn_uri_nested_vm_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// Example of nested spawning of isolates from a URI
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=spawn_uri_nested_child1_vm_isolate.dart spawn_uri_nested_child2_vm_isolate.dart
-library NestedSpawnUriLibrary;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-
-main() {
-  test('isolate fromUri - nested send and reply', () {
-    ReceivePort port = new ReceivePort();
-    Isolate.spawnUri(Uri.parse('spawn_uri_nested_child1_vm_isolate.dart'), [], [
-      [1, 2],
-      port.sendPort
-    ]);
-    port.first.then(expectAsync((result) => print(result)));
-  });
-}
diff --git a/tests/isolate/spawn_uri_test.dart b/tests/isolate/spawn_uri_test.dart
deleted file mode 100644
index c2687cb..0000000
--- a/tests/isolate/spawn_uri_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-// Example of spawning an isolate from a URI
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=spawn_uri_child_isolate.dart
-library spawn_tests;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-
-main() {
-  test('isolate fromUri - send and reply', () {
-    ReceivePort port = new ReceivePort();
-    port.listen(expectAsync((msg) {
-      expect(msg, equals('re: hi'));
-      port.close();
-    }));
-
-    Isolate.spawnUri(
-        Uri.parse('spawn_uri_child_isolate.dart'), ['hi'], port.sendPort);
-  });
-}
diff --git a/tests/isolate/spawn_uri_vm_test.dart b/tests/isolate/spawn_uri_vm_test.dart
deleted file mode 100644
index 094f325..0000000
--- a/tests/isolate/spawn_uri_vm_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-
-// Example of spawning an isolate from a URI
-// Note: the following comment is used by test.dart to additionally compile the
-// other isolate's code.
-// OtherScripts=spawn_uri_child_isolate.dart
-library spawn_tests;
-
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-
-main() {
-  test('isolate fromUri - send and reply', () {
-    ReceivePort port = new ReceivePort();
-    port.first.then(expectAsync((msg) {
-      expect(msg, equals('re: hi'));
-    }));
-
-    Isolate.spawnUri(
-        Uri.parse('spawn_uri_child_isolate.dart'), ['hi'], port.sendPort);
-  });
-}
diff --git a/tests/isolate/stacktrace_message_test.dart b/tests/isolate/stacktrace_message_test.dart
deleted file mode 100644
index 41a0820..0000000
--- a/tests/isolate/stacktrace_message_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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:isolate';
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-// Test that StackTrace objects can be sent between isolates spawned from
-// the same isolate using Isolate.spawn.
-
-void main() {
-  asyncStart();
-  ReceivePort reply = new ReceivePort();
-  Isolate.spawn(runTest, reply.sendPort);
-  reply.first.then((pair) {
-    StackTrace stack = pair[0];
-    String stackString = pair[1];
-    if (stack == null) {
-      print("Failed to send stack-trace");
-      print(stackString);
-      Expect.fail("Sending stack-trace");
-    }
-    Expect.equals(stackString, "!$stack");
-    print(stack);
-    asyncEnd();
-  });
-}
-
-runTest(SendPort sendport) {
-  try {
-    throw 'sorry';
-  } catch (e, stack) {
-    try {
-      sendport.send([stack, "$stack"]);
-      print("Stacktrace sent");
-    } catch (e, s) {
-      print("Stacktrace not sent");
-      sendport.send([null, "$e\n$s"]);
-    }
-  }
-}
diff --git a/tests/isolate/start_paused_test.dart b/tests/isolate/start_paused_test.dart
deleted file mode 100644
index 843e7b1..0000000
--- a/tests/isolate/start_paused_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2014, 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 start_paused_test;
-
-import "dart:isolate";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-void isomain(SendPort p) {
-  p.send("DONE");
-}
-
-void notyet(_) {
-  throw "NOT YET";
-}
-
-void main() {
-  asyncStart();
-  test1();
-  test2();
-  asyncEnd();
-}
-
-void test1() {
-  // Test that a paused isolate doesn't send events.
-  // We start two isolates, one paused and one not.
-  // The unpaused one must send an event, after which
-  // we resume that paused isolate, and expect the second event.
-  // This is not a guaranteed test, since it can succeede even if the
-  // paused isolate isn't really paused.
-  // However, it must never fail, since that would mean that a paused
-  // isolate sends a message.
-  asyncStart();
-  RawReceivePort p1 = new RawReceivePort(notyet);
-  Isolate.spawn(isomain, p1.sendPort, paused: true).then((isolate) {
-    RawReceivePort p2;
-    p2 = new RawReceivePort((x) {
-      Expect.equals("DONE", x);
-      p2.close();
-      p1.handler = (x) {
-        Expect.equals("DONE", x);
-        p1.close();
-        asyncEnd();
-      };
-      isolate.resume(isolate.pauseCapability);
-    });
-    Isolate.spawn(isomain, p2.sendPort);
-  });
-}
-
-void test2() {
-  // Test that a paused isolate doesn't send events.
-  // Like the test above, except that we change the pause capability
-  // of the paused isolate by pausing it using another capability and
-  // then resuming the initial pause. This must not cause it to send
-  // a message before the second pause is resumed as well.
-  asyncStart();
-  RawReceivePort p1 = new RawReceivePort(notyet);
-  Isolate.spawn(isomain, p1.sendPort, paused: true).then((isolate) {
-    RawReceivePort p2;
-    Capability c2 = new Capability();
-    // Switch to another pause capability.
-    isolate.pause(c2);
-    isolate.resume(isolate.pauseCapability);
-    p2 = new RawReceivePort((x) {
-      Expect.equals("DONE", x);
-      p2.close();
-      p1.handler = (x) {
-        Expect.equals("DONE", x);
-        p1.close();
-        asyncEnd();
-      };
-      isolate.resume(c2);
-    });
-    Isolate.spawn(isomain, p2.sendPort);
-  });
-}
diff --git a/tests/isolate/static_function_lib.dart b/tests/isolate/static_function_lib.dart
deleted file mode 100644
index 886284f..0000000
--- a/tests/isolate/static_function_lib.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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.
-
-library static_function_testlib;
-
-import "dart:isolate" show SendPort;
-
-// Used by static_function_test.dart.
-
-void function(port) {
-  port.send("LIBTOP");
-}
-
-void _function(port) {
-  port.send("_LIBTOP");
-}
-
-Function get privateFunction => _function;
-
-class C {
-  static void function(SendPort port) {
-    port.send("LIB");
-  }
-
-  static void _function(SendPort port) {
-    port.send("LIBPRIVATE");
-  }
-
-  static Function get privateFunction => _function;
-}
-
-Function get privateClassFunction => _C.function;
-Function get privateClassAndFunction => _C._function;
-
-class _C {
-  static void function(SendPort port) {
-    port.send("_LIB");
-  }
-
-  static void _function(SendPort port) {
-    port.send("_LIBPRIVATE");
-  }
-}
diff --git a/tests/isolate/static_function_test.dart b/tests/isolate/static_function_test.dart
deleted file mode 100644
index 297fb85..0000000
--- a/tests/isolate/static_function_test.dart
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test starting isolate with static functions (and toplevel ones, for sanity).
-
-library static_function_test;
-
-import 'dart:isolate';
-import 'dart:async';
-import 'static_function_lib.dart' as lib;
-import 'package:unittest/unittest.dart';
-import 'remote_unittest_helper.dart';
-
-void function(SendPort port) {
-  port.send("TOP");
-}
-
-void _function(SendPort port) {
-  port.send("_TOP");
-}
-
-// A closure created at top-level (not inside a method), but not by a top-level
-// function declaration.
-var staticClosure = (SendPort port) {
-  port.send("WHAT?");
-};
-
-// An unnamed closure created inside a function.
-get dynamicClosure => (SendPort port) {
-      port.send("WHAT??");
-    };
-
-// A named closure created inside a function.
-get namedDynamicClosure {
-  void foo(SendPort port) {
-    port.send("WHAT FOO??");
-  }
-
-  ;
-  return foo;
-}
-
-class C {
-  // Unnamed closure created during object initialization, but not inside
-  // a method or constructor.
-  final Function instanceClosure = (SendPort port) {
-    port.send("C WHAT?");
-  };
-  // Unnamed closure created during object initializer list evaluation.
-  final Function constructorInitializerClosure;
-  // Unnamed closure created inside constructor body.
-  Function constructorBodyClosure;
-  // Named closure created inside constructor body.
-  Function namedConstructorBodyClosure;
-
-  C()
-      : constructorInitializerClosure = ((SendPort port) {
-          port.send("Init?");
-        }) {
-    constructorBodyClosure = (SendPort port) {
-      port.send("bodyClosure?");
-    };
-    void foo(SendPort port) {
-      port.send("namedBodyClosure?");
-    }
-
-    namedConstructorBodyClosure = foo;
-  }
-
-  static void function(SendPort port) {
-    port.send("YES");
-  }
-
-  static void _function(SendPort port) {
-    port.send("PRIVATE");
-  }
-
-  void instanceMethod(SendPort port) {
-    port.send("INSTANCE WHAT?");
-  }
-}
-
-class _C {
-  static void function(SendPort port) {
-    port.send("_YES");
-  }
-
-  static void _function(SendPort port) {
-    port.send("_PRIVATE");
-  }
-}
-
-void spawnTest(name, function, response) {
-  test(name, () {
-    ReceivePort r = new ReceivePort();
-    Isolate.spawn(function, r.sendPort);
-    r.listen(expectAsync((v) {
-      expect(v, response);
-      r.close();
-    }));
-  });
-}
-
-void functionFailTest(name, function) {
-  test("throws on $name", () {
-    Isolate.spawn(function, null).catchError(expectAsync((e) {
-      /* do nothing */
-    }));
-  });
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  // Sanity check.
-  spawnTest("function", function, "TOP");
-  spawnTest("_function", _function, "_TOP");
-  spawnTest("lib.function", lib.function, "LIBTOP");
-  spawnTest("lib._function", lib.privateFunction, "_LIBTOP");
-
-  // Local static functions.
-  spawnTest("class.function", C.function, "YES");
-  spawnTest("class._function", C._function, "PRIVATE");
-  spawnTest("_class._function", _C.function, "_YES");
-  spawnTest("_class._function", _C._function, "_PRIVATE");
-
-  // Imported static functions.
-  spawnTest("lib.class.function", lib.C.function, "LIB");
-  spawnTest("lib.class._function", lib.C.privateFunction, "LIBPRIVATE");
-  spawnTest("lib._class._function", lib.privateClassFunction, "_LIB");
-  spawnTest("lib._class._function", lib.privateClassAndFunction, "_LIBPRIVATE");
-
-  // Negative tests
-  functionFailTest("static closure", staticClosure);
-  functionFailTest("dynamic closure", dynamicClosure);
-  functionFailTest("named dynamic closure", namedDynamicClosure);
-  functionFailTest("instance closure", new C().instanceClosure);
-  functionFailTest(
-      "initializer closure", new C().constructorInitializerClosure);
-  functionFailTest("constructor closure", new C().constructorBodyClosure);
-  functionFailTest(
-      "named constructor closure", new C().namedConstructorBodyClosure);
-  functionFailTest("instance method", new C().instanceMethod);
-}
diff --git a/tests/isolate/string_from_environment_default_value_test.dart b/tests/isolate/string_from_environment_default_value_test.dart
deleted file mode 100644
index 2a34459..0000000
--- a/tests/isolate/string_from_environment_default_value_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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:isolate";
-
-import "package:expect/expect.dart";
-
-void test(port) {
-  Expect.isNull(const String.fromEnvironment('NOT_FOUND'));
-  Expect.equals(
-      'x', const String.fromEnvironment('NOT_FOUND', defaultValue: 'x'));
-  if (port != null) port.send(null);
-}
-
-main() {
-  test(null);
-  var port = new ReceivePort();
-  Isolate.spawn(test, port.sendPort);
-  port.listen((_) => port.close());
-}
diff --git a/tests/isolate/timer_isolate_test.dart b/tests/isolate/timer_isolate_test.dart
deleted file mode 100644
index df2dc6a..0000000
--- a/tests/isolate/timer_isolate_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-
-library multiple_timer_test;
-
-import 'dart:isolate';
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-const Duration TIMEOUT = const Duration(milliseconds: 100);
-
-// Some browsers (Firefox and IE so far) can trigger too early. Add a safety
-// margin. We use identical(1, 1.0) as an easy way to know if the test is
-// compiled by dart2js.
-int get safetyMargin => identical(1, 1.0) ? 100 : 0;
-
-createTimer(replyTo) {
-  new Timer(TIMEOUT, () {
-    replyTo.send("timer_fired");
-  });
-}
-
-main() {
-  test("timer in isolate", () {
-    Stopwatch stopwatch = new Stopwatch();
-    ReceivePort port = new ReceivePort();
-
-    port.first.then(expectAsync((msg) {
-      expect("timer_fired", msg);
-      expect(stopwatch.elapsedMilliseconds + safetyMargin,
-          greaterThanOrEqualTo(TIMEOUT.inMilliseconds));
-    }));
-
-    stopwatch.start();
-    var remote = Isolate.spawn(createTimer, port.sendPort);
-  });
-}
diff --git a/tests/isolate/timer_multiple_isolates_test.dart b/tests/isolate/timer_multiple_isolates_test.dart
deleted file mode 100644
index 68a5006..0000000
--- a/tests/isolate/timer_multiple_isolates_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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.
-
-library timer_multiple_isolates_test;
-
-import 'dart:isolate';
-import 'dart:async';
-
-child(msg) {
-  var i = msg[0];
-  var reponsePort = msg[1];
-  print("Starting child $i");
-
-  // Keep this isolate running to prevent its shutdown from touching the event
-  // handler.
-  new RawReceivePort();
-
-  // Try to get separate wakeups for each isolate.
-  new Timer(new Duration(milliseconds: 100 * (i + 1)), () {
-    print("Timer fired $i");
-    reponsePort.send(null);
-  });
-}
-
-main() {
-  var port;
-  var replies = 0;
-  var n = 3;
-  port = new RawReceivePort((reply) {
-    replies++;
-    print("Got reply $replies");
-    if (replies == n) {
-      print("Done");
-      port.close();
-    }
-  });
-
-  for (var i = 0; i < n; i++) {
-    Isolate.spawn(child, [i, port.sendPort]);
-  }
-}
diff --git a/tests/isolate/typed_message_test.dart b/tests/isolate/typed_message_test.dart
deleted file mode 100644
index 859284f..0000000
--- a/tests/isolate/typed_message_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.
-// Dart test program for testing isolate communication with
-// typed objects.
-// VMOptions=--checked
-
-library TypedMessageTest;
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-import "dart:isolate";
-
-void logMessages(SendPort replyTo) {
-  print("Starting log server.");
-  ReceivePort port = new ReceivePort();
-  replyTo.send(port.sendPort);
-  port.first.then((List<int> message) {
-    print("Log $message");
-    Expect.equals(5, message.length);
-    Expect.equals(0, message[0]);
-    Expect.equals(1, message[1]);
-    Expect.equals(2, message[2]);
-    Expect.equals(3, message[3]);
-    Expect.equals(4, message[4]);
-    port.close();
-    replyTo.send(1);
-    print("Stopping log server.");
-  });
-}
-
-main() {
-  asyncStart();
-  ReceivePort receivePort = new ReceivePort();
-  Future<Isolate> remote = Isolate.spawn(logMessages, receivePort.sendPort);
-  List<int> msg = new List<int>(5);
-  for (int i = 0; i < 5; i++) {
-    msg[i] = i;
-  }
-  StreamIterator iterator = new StreamIterator(receivePort);
-  iterator.moveNext().then((b) {
-    SendPort sendPort = iterator.current;
-    sendPort.send(msg);
-    return iterator.moveNext();
-  }).then((b) {
-    Expect.equals(1, iterator.current);
-    receivePort.close();
-    asyncEnd();
-  });
-}
diff --git a/tests/isolate/unresolved_ports_test.dart b/tests/isolate/unresolved_ports_test.dart
deleted file mode 100644
index b6ca58d..0000000
--- a/tests/isolate/unresolved_ports_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// 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.
-
-// spawns multiple isolates and sends unresolved ports between them.
-library unresolved_ports;
-
-import 'dart:async';
-import 'dart:isolate';
-import 'package:unittest/unittest.dart';
-import "remote_unittest_helper.dart";
-
-// This test does the following:
-//  - main spawns two isolates: 'tim' and 'beth'
-//  - 'tim' spawns an isolate: 'bob'
-//  - main starts a message chain:
-//       main -> beth -> tim -> bob -> main
-//    by giving 'beth' a send-port to 'tim'.
-
-bethIsolate(init) {
-  ReceivePort port = initIsolate(init);
-  // TODO(sigmund): use expectAsync when it is OK to use it within an isolate
-  // (issue #6856)
-  port.first.then((msg) => msg[1]
-      .send(['${msg[0]}\nBeth says: Tim are you coming? And Bob?', msg[2]]));
-}
-
-timIsolate(init) {
-  ReceivePort port = initIsolate(init);
-  spawnFunction(bobIsolate).then((bob) {
-    port.first.then((msg) => bob.send([
-          '${msg[0]}\nTim says: Can you tell "main" that we are all coming?',
-          msg[1]
-        ]));
-  });
-}
-
-bobIsolate(init) {
-  ReceivePort port = initIsolate(init);
-  port.first
-      .then((msg) => msg[1].send('${msg[0]}\nBob says: we are all coming!'));
-}
-
-Future<SendPort> spawnFunction(function) {
-  ReceivePort init = new ReceivePort();
-  Isolate.spawn(function, init.sendPort);
-  return init.first;
-}
-
-ReceivePort initIsolate(SendPort starter) {
-  ReceivePort port = new ReceivePort();
-  starter.send(port.sendPort);
-  return port;
-}
-
-baseTest({bool failForNegativeTest: false}) {
-  test('Message chain with unresolved ports', () {
-    ReceivePort port = new ReceivePort();
-    port.listen(expectAsync((msg) {
-      expect(
-          msg,
-          equals('main says: Beth, find out if Tim is coming.'
-              '\nBeth says: Tim are you coming? And Bob?'
-              '\nTim says: Can you tell "main" that we are all coming?'
-              '\nBob says: we are all coming!'));
-      expect(failForNegativeTest, isFalse);
-      port.close();
-    }));
-
-    spawnFunction(timIsolate).then((tim) {
-      spawnFunction(bethIsolate).then((beth) {
-        beth.send([
-          'main says: Beth, find out if Tim is coming.',
-          tim,
-          port.sendPort
-        ]);
-      });
-    });
-  });
-}
-
-void main([args, port]) {
-  if (testRemote(main, port)) return;
-  baseTest();
-}
diff --git a/tests/language/aborting_switch_case_test.dart b/tests/language/aborting_switch_case_test.dart
deleted file mode 100644
index b8c7fe4..0000000
--- a/tests/language/aborting_switch_case_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to be confused when inlining
-// method that always aborts in a switch case.
-
-import "package:expect/expect.dart";
-
-foo() {
-  throw 42;
-}
-
-main() {
-  var exception;
-  try {
-    switch (42) {
-      case 42:
-        foo();
-        foo();
-        break;
-    }
-  } catch (e) {
-    exception = e;
-  }
-  Expect.equals(42, exception);
-}
diff --git a/tests/language/abstract_beats_arguments2_test.dart b/tests/language/abstract_beats_arguments2_test.dart
deleted file mode 100644
index fcda10d..0000000
--- a/tests/language/abstract_beats_arguments2_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-abstract //# 01: static type warning
-class Abstract {
-  Abstract(_);
-}
-
-void main() {
-  Expect.throws(() => new Abstract(throw "argument"), (e) => e == "argument");
-}
diff --git a/tests/language/abstract_beats_arguments_test.dart b/tests/language/abstract_beats_arguments_test.dart
deleted file mode 100644
index d90a196..0000000
--- a/tests/language/abstract_beats_arguments_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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";
-
-// When an instantiation of an abstract class has the wrong arguments, an
-// AbstractClassInstantiationError is thrown, not a NoSuchMethodError.
-
-abstract class A {
-  A() {}
-}
-
-class B {
-  B() {}
-}
-
-bool isAbstractClassInstantiationError(e) =>
-    e is AbstractClassInstantiationError;
-
-bool isNoSuchMethodError(e) => e is NoSuchMethodError;
-
-void main() {
-  Expect.throws(() => new A(), isAbstractClassInstantiationError);
-
-  Expect.throws(() => new B(1), isNoSuchMethodError);
-  Expect.throws(() => new A(1), isAbstractClassInstantiationError);
-}
diff --git a/tests/language/abstract_exact_selector_test.dart b/tests/language/abstract_exact_selector_test.dart
deleted file mode 100644
index a44811d..0000000
--- a/tests/language/abstract_exact_selector_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to duplicate some `Object`
-// methods to handle `noSuchMethod`.
-
-import "package:expect/expect.dart";
-import "compiler_annotations.dart";
-
-abstract //# 01: static type warning
-class Foo {
-  noSuchMethod(im) => 42;
-}
-
-@DontInline()
-returnFoo() {
-  (() => 42)();
-  return new Foo();
-}
-
-class Bar {
-  operator ==(other) => false;
-}
-
-var a = [false, true, new Object(), new Bar()];
-
-main() {
-  if (a[0]) {
-    // This `==` call will make the compiler create a selector with an
-    // exact `TypeMask` of `Foo`. Since `Foo` is abstract, such a call
-    // cannot happen, but we still used to generate a `==` method on
-    // the `Object` class to handle `noSuchMethod`.
-    print(returnFoo() == 42);
-  } else {
-    Expect.isFalse(a[2] == 42);
-  }
-}
diff --git a/tests/language/abstract_factory_constructor_test.dart b/tests/language/abstract_factory_constructor_test.dart
deleted file mode 100644
index e610494..0000000
--- a/tests/language/abstract_factory_constructor_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.
-// Dart test program for constructors and initializers.
-
-// Exercises issue 2282, factory constructors in abstract classes should
-// not emit a static type warning
-
-class B extends A1 {
-  B() {}
-  method() {}
-}
-
-abstract class A1 {
-  A1() {}
-  method(); // Abstract.
-  factory A1.make() {
-    return new B();
-  }
-}
-
-class A2 {
-  // Intentionally abstract method.
-  method(); // //# 00: static type warning
-  A2.make() {}
-}
-
-main() {
-  new A1.make();
-  new A2.make();              //# 00: continued
-}
diff --git a/tests/language/abstract_getter_test.dart b/tests/language/abstract_getter_test.dart
deleted file mode 100644
index c859d7e..0000000
--- a/tests/language/abstract_getter_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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";
-
-// Test to ensure that an abstract getter is not mistaken for a field.
-
-class Foo {
-  // Intentionally abstract:
-  get i; // //# 01: static type warning
-}
-
-class Bar {}
-
-noMethod(e) => e is NoSuchMethodError;
-
-checkIt(f) {
-  Expect.throws(() { f.i = 'hi'; }, noMethod); // //# 01: continued
-  Expect.throws(() { print(f.i); }, noMethod); // //# 01: continued
-  Expect.throws(() { print(f.i()); }, noMethod); // //# 01: continued
-}
-
-main() {
-  checkIt(new Foo());
-  checkIt(new Bar());
-}
diff --git a/tests/language/abstract_method_test.dart b/tests/language/abstract_method_test.dart
deleted file mode 100644
index 0f2cd04..0000000
--- a/tests/language/abstract_method_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, 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";
-
-// Checks that abstract instance methods are correctly resolved.
-
-int get length => throw "error: top-level getter called";
-set height(x) {
-  throw "error: top-level setter called";
-}
-
-width() {
-  throw "error: top-level function called";
-}
-
-abstract class A {
-  int get length; //     Abstract instance getter.
-  set height(x); //      Abstract instance setter.
-  int width(); //        Abstract instance method.
-
-  // Must resolve to non-abstract length getter in subclass.
-  get useLength => length;
-  // Must resolve to non-abstract height setter in subclass.
-  setHeight(x) => height = x;
-  // Must resolve to non-abstract width() method in subclass.
-  useWidth() => width();
-}
-
-class A1 extends A {
-  int length; // Implies a length getter.
-  int height; // Implies a height setter.
-  int width() => 345;
-  A1(this.length);
-}
-
-main() {
-  var a = new A1(123);
-  Expect.equals(123, a.useLength);
-  a.setHeight(234);
-  Expect.equals(234, a.height);
-  Expect.equals(345, a.useWidth());
-  print([a.useLength, a.height, a.useWidth()]);
-}
diff --git a/tests/language/abstract_object_method_test.dart b/tests/language/abstract_object_method_test.dart
deleted file mode 100644
index 2d4af77c..0000000
--- a/tests/language/abstract_object_method_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  noSuchMethod(_) {
-    Expect.fail('Should not reach here');
-  }
-}
-
-class B extends A {
-  operator ==(other);
-}
-
-class C extends B {}
-
-var a = [new C()];
-
-main() {
-  C c = a[0];
-  a.add(c);
-  Expect.isTrue(c == a[1]);
-}
diff --git a/tests/language/abstract_runtime_error_test.dart b/tests/language/abstract_runtime_error_test.dart
deleted file mode 100644
index a34791f..0000000
--- a/tests/language/abstract_runtime_error_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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";
-
-// Test various conditions around instantiating an abstract class.
-
-// From The Dart Programming Language Specification, 11.11.1 "New":
-//   If q is a constructor of an abstract class then an
-//   AbstractClassInstantiation- Error is thrown.
-
-abstract class Interface {
-  void foo(); //# 03: static type warning
-}
-
-abstract class AbstractClass {
-  toString() => 'AbstractClass';
-}
-
-class ConcreteSubclass extends AbstractClass {
-  toString() => 'ConcreteSubclass';
-}
-
-class NonAbstractClass implements Interface {
-  toString() => 'NonAbstractClass';
-}
-
-Interface interface() => new Interface(); //# 01: static type warning
-
-AbstractClass abstractClass() => new AbstractClass(); //# 02: static type warning
-
-bool isAbstractClassInstantiationError(e) {
-  return e is AbstractClassInstantiationError;
-}
-
-void main() {
-  Expect.throws(interface, isAbstractClassInstantiationError, //     //# 01: continued
-                "expected AbstractClassInstantiationError"); //      //# 01: continued
-  Expect.throws(abstractClass, isAbstractClassInstantiationError, // //# 02: continued
-                "expected AbstractClassInstantiationError"); //      //# 02: continued
-  Expect.stringEquals('ConcreteSubclass', '${new ConcreteSubclass()}');
-  Expect.stringEquals('NonAbstractClass', '${new NonAbstractClass()}');
-}
diff --git a/tests/language/abstract_syntax_test.dart b/tests/language/abstract_syntax_test.dart
deleted file mode 100644
index dda5c64..0000000
--- a/tests/language/abstract_syntax_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-main() {
-  var b = new B();
-  Expect.equals(42, b.foo());
-}
-
-class A {
-  foo(); // //# 00: static type warning
-  static bar(); // //# 01: compile-time error
-}
-
-class B extends A {
-  foo() => 42;
-  bar() => 87;
-}
diff --git a/tests/language/accessor_conflict_export2_helper.dart b/tests/language/accessor_conflict_export2_helper.dart
deleted file mode 100644
index a6cf7e0..0000000
--- a/tests/language/accessor_conflict_export2_helper.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// 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.
-
-export "accessor_conflict_setter.dart";
-export "accessor_conflict_getter.dart";
diff --git a/tests/language/accessor_conflict_export2_test.dart b/tests/language/accessor_conflict_export2_test.dart
deleted file mode 100644
index 725f8e0..0000000
--- a/tests/language/accessor_conflict_export2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-// Verify that a getter and its corresponding setter can be imported from two
-// different files via a common export.  In this test the setter is imported
-// first.
-
-import "package:expect/expect.dart";
-
-import "accessor_conflict_export2_helper.dart";
-
-main() {
-  getValue = 123;
-  Expect.equals(x, 123);
-  x = 456;
-  Expect.equals(setValue, 456);
-}
diff --git a/tests/language/accessor_conflict_export_helper.dart b/tests/language/accessor_conflict_export_helper.dart
deleted file mode 100644
index ff065ec..0000000
--- a/tests/language/accessor_conflict_export_helper.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// 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.
-
-export "accessor_conflict_getter.dart";
-export "accessor_conflict_setter.dart";
diff --git a/tests/language/accessor_conflict_export_test.dart b/tests/language/accessor_conflict_export_test.dart
deleted file mode 100644
index bac516c..0000000
--- a/tests/language/accessor_conflict_export_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-// Verify that a getter and its corresponding setter can be imported from two
-// different files via a common export.  In this test the getter is imported
-// first.
-
-import "package:expect/expect.dart";
-
-import "accessor_conflict_export_helper.dart";
-
-main() {
-  getValue = 123;
-  Expect.equals(x, 123);
-  x = 456;
-  Expect.equals(setValue, 456);
-}
diff --git a/tests/language/accessor_conflict_getter.dart b/tests/language/accessor_conflict_getter.dart
deleted file mode 100644
index 5b8d72f..0000000
--- a/tests/language/accessor_conflict_getter.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-var getValue;
-
-get x => getValue;
diff --git a/tests/language/accessor_conflict_import2_test.dart b/tests/language/accessor_conflict_import2_test.dart
deleted file mode 100644
index 99a4007..0000000
--- a/tests/language/accessor_conflict_import2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-// Verify that a getter and its corresponding setter can be imported from two
-// different files.  In this test the setter is imported first.
-
-import "package:expect/expect.dart";
-
-import "accessor_conflict_setter.dart";
-import "accessor_conflict_getter.dart";
-
-main() {
-  getValue = 123;
-  Expect.equals(x, 123);
-  x = 456;
-  Expect.equals(setValue, 456);
-}
diff --git a/tests/language/accessor_conflict_import_prefixed2_test.dart b/tests/language/accessor_conflict_import_prefixed2_test.dart
deleted file mode 100644
index 88ab758..0000000
--- a/tests/language/accessor_conflict_import_prefixed2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-// Verify that a getter and its corresponding setter can be imported from two
-// different files.  In this test the setter is imported first.
-
-import "package:expect/expect.dart";
-
-import "accessor_conflict_setter.dart" as p;
-import "accessor_conflict_getter.dart" as p;
-
-main() {
-  p.getValue = 123;
-  Expect.equals(p.x, 123);
-  p.x = 456;
-  Expect.equals(p.setValue, 456);
-}
diff --git a/tests/language/accessor_conflict_import_prefixed_test.dart b/tests/language/accessor_conflict_import_prefixed_test.dart
deleted file mode 100644
index 0c286cb..0000000
--- a/tests/language/accessor_conflict_import_prefixed_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-// Verify that a getter and its corresponding setter can be imported from two
-// different files.  In this test the getter is imported first.
-
-import "package:expect/expect.dart";
-
-import "accessor_conflict_getter.dart" as p;
-import "accessor_conflict_setter.dart" as p;
-
-main() {
-  p.getValue = 123;
-  Expect.equals(p.x, 123);
-  p.x = 456;
-  Expect.equals(p.setValue, 456);
-}
diff --git a/tests/language/accessor_conflict_import_test.dart b/tests/language/accessor_conflict_import_test.dart
deleted file mode 100644
index 0b485ce..0000000
--- a/tests/language/accessor_conflict_import_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-// Verify that a getter and its corresponding setter can be imported from two
-// different files.  In this test the getter is imported first.
-
-import "package:expect/expect.dart";
-
-import "accessor_conflict_getter.dart";
-import "accessor_conflict_setter.dart";
-
-main() {
-  getValue = 123;
-  Expect.equals(x, 123);
-  x = 456;
-  Expect.equals(setValue, 456);
-}
diff --git a/tests/language/accessor_conflict_setter.dart b/tests/language/accessor_conflict_setter.dart
deleted file mode 100644
index c3d383b..0000000
--- a/tests/language/accessor_conflict_setter.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-var setValue;
-
-set x(value) {
-  setValue = value;
-}
diff --git a/tests/language/ackermann_test.dart b/tests/language/ackermann_test.dart
deleted file mode 100644
index 87cadeb..0000000
--- a/tests/language/ackermann_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart version of two-argument Ackermann-Peter function.
-
-import "package:expect/expect.dart";
-
-class AckermannTest {
-  static ack(m, n) {
-    return m == 0
-        ? n + 1
-        : ((n == 0) ? ack(m - 1, 1) : ack(m - 1, ack(m, n - 1)));
-  }
-
-  static testMain() {
-    Expect.equals(253, ack(3, 5));
-  }
-}
-
-main() {
-  AckermannTest.testMain();
-}
diff --git a/tests/language/adjacent_const_string_literals_test.dart b/tests/language/adjacent_const_string_literals_test.dart
deleted file mode 100644
index 0af09ba..0000000
--- a/tests/language/adjacent_const_string_literals_test.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// 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";
-
-class Conster {
-  const Conster(this.value);
-
-  final value;
-
-  toString() {
-    return value.toString();
-  }
-}
-
-main() {
-  testEmpty();
-  testInterpolation();
-  testMultiline();
-}
-
-testEmpty() {
-  Expect.equals("", (const Conster("" "" "")).toString());
-  Expect.equals("", (const Conster("" '' "")).toString());
-  Expect.equals("", (const Conster("" "" r"")).toString());
-
-  Expect.equals("a", (const Conster("a" "")).toString());
-  Expect.equals("a", (const Conster("a" '')).toString());
-  Expect.equals("a", (const Conster("a" r'')).toString());
-
-  Expect.equals("b", (const Conster('b' "")).toString());
-  Expect.equals("b", (const Conster('b' '')).toString());
-  Expect.equals("b", (const Conster('b' r'')).toString());
-
-  Expect.equals("c", (const Conster(r'c' "")).toString());
-  Expect.equals("c", (const Conster(r'c' '')).toString());
-  Expect.equals("c", (const Conster(r'c' r'')).toString());
-
-  Expect.equals("a", (const Conster("" "a")).toString());
-  Expect.equals("a", (const Conster("" 'a')).toString());
-  Expect.equals("a", (const Conster("" r'a')).toString());
-
-  Expect.equals("b", (const Conster('' "b")).toString());
-  Expect.equals("b", (const Conster('' 'b')).toString());
-  Expect.equals("b", (const Conster('' r'b')).toString());
-
-  Expect.equals("c", (const Conster(r'' "c")).toString());
-  Expect.equals("c", (const Conster(r'' 'c')).toString());
-  Expect.equals("c", (const Conster(r'' r'c')).toString());
-}
-
-const s = "a";
-
-testInterpolation() {
-  Expect.equals(r"ab", (const Conster("$s" "b")).toString());
-  Expect.equals(r"ab", (const Conster('$s' "b")).toString());
-  Expect.equals(r"$sb", (const Conster(r'$s' "b")).toString());
-
-  Expect.equals(r"-a-b", (const Conster("-$s-" "b")).toString());
-  Expect.equals(r"-a-b", (const Conster('-$s-' "b")).toString());
-  Expect.equals(r"-$s-b", (const Conster(r'-$s-' "b")).toString());
-
-  Expect.equals(r"ba", (const Conster('b' "$s")).toString());
-  Expect.equals(r"ba", (const Conster('b' '$s')).toString());
-  Expect.equals(r"b$s", (const Conster('b' r'$s')).toString());
-
-  Expect.equals(r"b-a-", (const Conster('b' "-$s-")).toString());
-  Expect.equals(r"b-a-", (const Conster('b' '-$s-')).toString());
-  Expect.equals(r"b-$s-", (const Conster('b' r'-$s-')).toString());
-}
-
-testMultiline() {
-  Expect.equals(
-      "abe",
-      (const Conster("a"
-              "b"
-              "e"))
-          .toString());
-  Expect.equals(
-      "a b e",
-      (const Conster("a "
-              "b "
-              "e"))
-          .toString());
-  Expect.equals(
-      "a b e",
-      (const Conster("a"
-              " b"
-              " e"))
-          .toString());
-
-  Expect.equals(
-      "abe",
-      (const Conster("""
-a"""
-              "b"
-              "e"))
-          .toString());
-  Expect.equals(
-      "a b e",
-      (const Conster("""
-a"""
-              " b"
-              " e"))
-          .toString());
-
-  Expect.equals(
-      "abe",
-      (const Conster("""
-a"""
-              """
-b"""
-              """
-e"""))
-          .toString());
-}
diff --git a/tests/language/adjacent_string_literals_test.dart b/tests/language/adjacent_string_literals_test.dart
deleted file mode 100644
index 48f8ba2..0000000
--- a/tests/language/adjacent_string_literals_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// 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";
-
-main() {
-  testEmpty();
-  testInterpolation();
-  testMultiline();
-}
-
-testEmpty() {
-  Expect.equals("", "" "" "");
-  Expect.equals("", "" '' "");
-  Expect.equals("", "" "" r"");
-
-  Expect.equals("a", "a" "");
-  Expect.equals("a", "a" '');
-  Expect.equals("a", "a" r'');
-
-  Expect.equals("b", 'b' "");
-  Expect.equals("b", 'b' '');
-  Expect.equals("b", 'b' r'');
-
-  Expect.equals("c", r'c' "");
-  Expect.equals("c", r'c' '');
-  Expect.equals("c", r'c' r'');
-
-  Expect.equals("a", "" "a");
-  Expect.equals("a", "" 'a');
-  Expect.equals("a", "" r'a');
-
-  Expect.equals("b", '' "b");
-  Expect.equals("b", '' 'b');
-  Expect.equals("b", '' r'b');
-
-  Expect.equals("c", r'' "c");
-  Expect.equals("c", r'' 'c');
-  Expect.equals("c", r'' r'c');
-}
-
-testInterpolation() {
-  var s = "a";
-  Expect.equals(r"ab", "$s" "b");
-  Expect.equals(r"ab", '$s' "b");
-  Expect.equals(r"$sb", r'$s' "b");
-
-  Expect.equals(r"-a-b", "-$s-" "b");
-  Expect.equals(r"-a-b", '-$s-' "b");
-  Expect.equals(r"-$s-b", r'-$s-' "b");
-
-  Expect.equals(r"ba", 'b' "$s");
-  Expect.equals(r"ba", 'b' '$s');
-  Expect.equals(r"b$s", 'b' r'$s');
-
-  Expect.equals(r"b-a-", 'b' "-$s-");
-  Expect.equals(r"b-a-", 'b' '-$s-');
-  Expect.equals(r"b-$s-", 'b' r'-$s-');
-}
-
-testMultiline() {
-  Expect.equals(
-      "abe",
-      "a"
-      "b"
-      "e");
-  Expect.equals(
-      "a b e",
-      "a "
-      "b "
-      "e");
-  Expect.equals(
-      "a b e",
-      "a"
-      " b"
-      " e");
-
-  Expect.equals(
-      "abe",
-      """
-a"""
-      "b"
-      "e");
-  Expect.equals(
-      "a b e",
-      """
-a"""
-      " b"
-      " e");
-
-  Expect.equals(
-      "abe",
-      """
-a"""
-      """
-b"""
-      """
-e""");
-}
diff --git a/tests/language/allocate_large_object_test.dart b/tests/language/allocate_large_object_test.dart
deleted file mode 100644
index 5873daa..0000000
--- a/tests/language/allocate_large_object_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  int a;
-  double d1;
-  double d2;
-  double d3;
-  double d4;
-  double d5;
-  double d6;
-  double d7;
-  double d8;
-  double d9;
-  double d10;
-  double d11;
-  double d12;
-  double d13;
-  double d14;
-  static var s;
-
-  static foo() {
-    return s;
-  }
-
-  A(this.a) {}
-
-  value() {
-    return a + foo();
-  }
-}
-
-class AllocateLargeObject {
-  static testMain() {
-    var a = new A(1);
-    A.s = 4;
-    Expect.equals(5, a.value());
-  }
-}
-
-main() {
-  AllocateLargeObject.testMain();
-}
diff --git a/tests/language/allocate_test.dart b/tests/language/allocate_test.dart
deleted file mode 100644
index 2ab25c5..0000000
--- a/tests/language/allocate_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class MyAllocate {
-  const MyAllocate([int value = 0]) : value_ = value;
-  int getValue() {
-    return value_;
-  }
-
-  final int value_;
-}
-
-class AllocateTest {
-  static testMain() {
-    Expect.equals(900, (new MyAllocate(900)).getValue());
-  }
-}
-
-main() {
-  AllocateTest.testMain();
-}
diff --git a/tests/language/allocation_sinking_inlining_test.dart b/tests/language/allocation_sinking_inlining_test.dart
deleted file mode 100644
index 6ed5501..0000000
--- a/tests/language/allocation_sinking_inlining_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-// Test allocation sinking with polymorphic inlining.
-
-import "package:expect/expect.dart";
-
-class A {
-  foo(x) => ++x.f;
-}
-
-class B {
-  foo(x) => --x.f;
-}
-
-class C {
-  int f = 0;
-}
-
-test(obj) {
-  var c = new C();
-  return obj.foo(c);
-}
-
-main() {
-  var a = new A();
-  var b = new B();
-  Expect.equals(1, test(a));
-  Expect.equals(-1, test(b));
-  for (var i = 0; i < 20; i++) test(a);
-  Expect.equals(1, test(a));
-  Expect.equals(-1, test(b));
-}
diff --git a/tests/language/application_negative_test.dart b/tests/language/application_negative_test.dart
deleted file mode 100644
index d8c9e79..0000000
--- a/tests/language/application_negative_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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 application_negative_test.dart;
-
-part 'failing_main.dart';
diff --git a/tests/language/application_test.dart b/tests/language/application_test.dart
deleted file mode 100644
index e9de1de..0000000
--- a/tests/language/application_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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 ApplicationTest.dart;
-
-part 'empty_main.dart';
diff --git a/tests/language/arg_param_trailing_comma_test.dart b/tests/language/arg_param_trailing_comma_test.dart
deleted file mode 100644
index 5406767..0000000
--- a/tests/language/arg_param_trailing_comma_test.dart
+++ /dev/null
@@ -1,562 +0,0 @@
-// 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.
-// Dart test program for testing params.
-
-// Convenience values.
-var c = new C();
-var x = 42;
-var y = 42;
-var z = 42;
-
-// Trailing comma in parameter litss.
-
-// Typedefs.
-typedef fx(x, ); //                                     //# none: ok
-typedef fy([y,]); //                                    //# none: continued
-typedef fxy(x, [y, ]); //                               //# none: continued
-typedef fz({z,}); //                                    //# none: continued
-typedef fxz(x, {z, }); //                               //# none: continued
-
-// As arguments type.
-argfx(void f(x, )) {} //                                //# none: continued
-argfy(void f([y, ])) {} //                              //# none: continued
-argfxy(void f(x, [y, ])) {} //                          //# none: continued
-argfz(void f({z, })) {} //                              //# none: continued
-argfxz(void f(x, {z, })) {} //                          //# none: continued
-
-// Top level functions
-void topx(x,) {} //                                     //# none: continued
-void topy([y, ]) {} //                                  //# none: continued
-void topxy(x, [y, ]) {} //                              //# none: continued
-void topz({z, }) {} //                                  //# none: continued
-void topxz(x, {z, }) {} //                              //# none: continued
-
-void set topsetx(x, ) {} //                             //# none: continued
-
-// After specific parameter formats.
-void afterDefaultValueY([int y = 42, ]) {} //           //# none: continued
-void afterDefaultValueZ({int z : 42, }) {} //           //# none: continued
-void afterFunsigX(void f(),) {} //                      //# none: continued
-void afterFunsigY([void f(),]) {} //                    //# none: continued
-void afterFunsigZ({void f(),}) {} //                    //# none: continued
-void afterFunsigDefaultValueY([void f() = topy,]) {} // //# none: continued
-void afterFunsigDefaultValueZ({void f() : topz,}) {} // //# none: continued
-
-class C {
-  C();
-
-  // Constructors.
-  C.x(x, ); //                                          //# none: continued
-  C.y([y, ]); //                                        //# none: continued
-  C.xy(x, [y, ]); //                                    //# none: continued
-  C.z({z, }); //                                        //# none: continued
-  C.xz(x, {z, }); //                                    //# none: continued
-
-  // Static members
-  static void staticx(x,) {} //                         //# none: continued
-  static void staticy([y, ]) {} //                      //# none: continued
-  static void staticxy(x, [y, ]) {} //                  //# none: continued
-  static void staticz({z, }) {} //                      //# none: continued
-  static void staticxz(x, {z, }) {} //                  //# none: continued
-
-  static void set staticsetx(x, ) {} //                 //# none: continued
-
-  // Instance members
-  void instancex(x,) {} //                              //# none: continued
-  void instancey([y, ]) {} //                           //# none: continued
-  void instancexy(x, [y, ]) {} //                       //# none: continued
-  void instancez({z, }) {} //                           //# none: continued
-  void instancexz(x, {z, }) {} //                       //# none: continued
-
-  void set instancesetx(x, ) {} //                      //# none: continued
-
-  operator +(x, ) => this; //                           //# none: continued
-  operator []=(x, y, ) {} //                            //# none: continued
-}
-
-main() {
-  testCalls(); //                                       //# none: continued
-  // Make sure the cases are checked.
-  testBadCalls();
-}
-
-void testCalls() {
-  // Check that all functions can be called normally
-  topx(x); //                                           //# none: continued
-  topy(y); //                                           //# none: continued
-  topxy(x, y); //                                       //# none: continued
-  topz(); //                                            //# none: continued
-  topz(z: z); //                                        //# none: continued
-  topxz(x); //                                          //# none: continued
-  topxz(x, z: z); //                                    //# none: continued
-  topsetx = x; //                                       //# none: continued
-  afterDefaultValueY(); //                              //# none: continued
-  afterDefaultValueY(y); //                             //# none: continued
-  afterDefaultValueZ(); //                              //# none: continued
-  afterDefaultValueZ(z: z); //                          //# none: continued
-  new C.x(x); //                                        //# none: continued
-  new C.xy(x); //                                       //# none: continued
-  new C.xy(x, y); //                                    //# none: continued
-  new C.y(y); //                                        //# none: continued
-  new C.xz(x); //                                       //# none: continued
-  new C.xz(x, z: z); //                                 //# none: continued
-  new C.z(z: z); //                                     //# none: continued
-  C.staticx(x); //                                      //# none: continued
-  C.staticy(y); //                                      //# none: continued
-  C.staticxy(x); //                                     //# none: continued
-  C.staticxy(x, y); //                                  //# none: continued
-  C.staticz(); //                                       //# none: continued
-  C.staticz(z: z); //                                   //# none: continued
-  C.staticxz(x); //                                     //# none: continued
-  C.staticxz(x, z: z); //                               //# none: continued
-  C.staticsetx = x; //                                  //# none: continued
-  c.instancex(x); //                                    //# none: continued
-  c.instancey(); //                                     //# none: continued
-  c.instancey(y); //                                    //# none: continued
-  c.instancexy(x); //                                   //# none: continued
-  c.instancexy(x, y); //                                //# none: continued
-  c.instancez(); //                                     //# none: continued
-  c.instancez(z: z); //                                 //# none: continued
-  c.instancexz(x); //                                   //# none: continued
-  c.instancexz(x, z: z); //                             //# none: continued
-  c.instancesetx = x; //                                //# none: continued
-  c + x; //                                             //# none: continued
-  c[x] = y; //                                          //# none: continued
-
-  // Call with extra comma (not possible for setters and operators).
-  topx(x, ); //                                         //# none: continued
-  topy(y, ); //                                         //# none: continued
-  topxy(x, y, ); //                                     //# none: continued
-  topxy(x, ); //                                        //# none: continued
-  topz(z: z, ); //                                      //# none: continued
-  topxz(x, ); //                                        //# none: continued
-  topxz(x, z: z, ); //                                  //# none: continued
-  new C.x(x, ); //                                      //# none: continued
-  new C.xy(x, y, ); //                                  //# none: continued
-  new C.xy(x, ); //                                     //# none: continued
-  new C.y(y, ); //                                      //# none: continued
-  new C.xz(x, ); //                                     //# none: continued
-  new C.xz(x, z: z, ); //                               //# none: continued
-  new C.z(z: z, ); //                                   //# none: continued
-  C.staticx(x, ); //                                    //# none: continued
-  C.staticy(y, ); //                                    //# none: continued
-  C.staticxy(x, y, ); //                                //# none: continued
-  C.staticxy(x, ); //                                   //# none: continued
-  C.staticz(z: z, ); //                                 //# none: continued
-  C.staticxz(x, ); //                                   //# none: continued
-  C.staticxz(x, z: z, ); //                             //# none: continued
-  c.instancex(x, ); //                                  //# none: continued
-  c.instancey(y, ); //                                  //# none: continued
-  c.instancexy(x, y, ); //                              //# none: continued
-  c.instancexy(x, ); //                                 //# none: continued
-  c.instancez(z: z, ); //                               //# none: continued
-  c.instancexz(x, ); //                                 //# none: continued
-  c.instancexz(x, z: z, ); //                           //# none: continued
-
-  // Typedefs work as expected.
-  if (topx is! fx) throw "Bad type: $fx"; //            //# none: continued
-  if (topy is! fy) throw "Bad type: $fy"; //            //# none: continued
-  if (topxy is! fxy) throw "Bad type: $fxy"; //         //# none: continued
-  if (topz is! fz) throw "Bad type: $fz"; //            //# none: continued
-  if (topxz is! fxz) throw "Bad type: $fxz"; //         //# none: continued
-
-  // Parameter types work (checked mode only test).
-  argfx(topx); //                                       //# none: continued
-  argfy(topy); //                                       //# none: continued
-  argfxy(topxy); //                                     //# none: continued
-  argfz(topz); //                                       //# none: continued
-  argfxz(topxz); //                                     //# none: continued
-}
-
-// Invalid syntax. This was invalid syntax before the addition of trailing
-// commas too, and should stay that way.
-void topBadEmpty(,) {} //                          //# 1: syntax error
-void topBadStart(, a) {} //                        //# 2: syntax error
-void topBadEnd(a,,) {} //                          //# 3: syntax error
-void topBadMiddle(a,, b) {} //                     //# 4: syntax error
-void topBadPosEmpty([]) {} //                      //# 5: syntax error
-void topBadPosEmpty(,[]) {} //                     //# 6: syntax error
-void topBadPosEmpty([,]) {} //                     //# 7: syntax error
-void topBadPosEmpty([],) {} //                     //# 8: syntax error
-void topBadPosStart(,[a]) {} //                    //# 9: syntax error
-void topBadPosStart([, a]) {} //                   //# 10: syntax error
-void topBadPosEnd([a,,]) {} //                     //# 11: syntax error
-void topBadPosStart([a],) {} //                    //# 12: syntax error
-void topBadPosMiddle([a,, b]) {} //                //# 13: syntax error
-void topBadNamEmpty({}) {} //                      //# 14: syntax error
-void topBadNamEmpty(,{}) {} //                     //# 15: syntax error
-void topBadNamEmpty({,}) {} //                     //# 16: syntax error
-void topBadNamEmpty({},) {} //                     //# 17: syntax error
-void topBadNamStart(,{a}) {} //                    //# 18: syntax error
-void topBadNamStart({, a}) {} //                   //# 19: syntax error
-void topBadNamEnd({a,,}) {} //                     //# 20: syntax error
-void topBadNamStart({a},) {} //                    //# 21: syntax error
-void topBadNamMiddle({a,, b}) {} //                //# 22: syntax error
-void set topSetBadEmpty(,) {} //                   //# 23: syntax error
-void set topSetBadStart(, a) {} //                 //# 24: syntax error
-void set topSetBadEnd(a,,) {} //                   //# 25: syntax error
-void set topSetBadMiddle(a,, b) {} //              //# 26: syntax error
-class Bad {
-  Bad() {}
-  Bad.empty(,) {} //                               //# 27: syntax error
-  Bad.start(, a) {} //                             //# 28: syntax error
-  Bad.end(a,,) {} //                               //# 29: syntax error
-  Bad.middle(a,, b) {} //                          //# 30: syntax error
-  Bad.posEmpty([]) {} //                           //# 31: syntax error
-  Bad.posEmpty(,[]) {} //                          //# 32: syntax error
-  Bad.posEmpty([,]) {} //                          //# 33: syntax error
-  Bad.posEmpty([],) {} //                          //# 34: syntax error
-  Bad.posStart(,[a]) {} //                         //# 35: syntax error
-  Bad.posStart([, a]) {} //                        //# 36: syntax error
-  Bad.posEnd([a,,]) {} //                          //# 37: syntax error
-  Bad.posStart([a],) {} //                         //# 38: syntax error
-  Bad.PosMiddle([a,, b]) {} //                     //# 39: syntax error
-  Bad.namEmpty({}) {} //                           //# 40: syntax error
-  Bad.namEmpty(,{}) {} //                          //# 41: syntax error
-  Bad.namEmpty({,}) {} //                          //# 42: syntax error
-  Bad.namEmpty({},) {} //                          //# 43: syntax error
-  Bad.namStart(,{a}) {} //                         //# 44: syntax error
-  Bad.namStart({, a}) {} //                        //# 45: syntax error
-  Bad.namEnd({a,,}) {} //                          //# 46: syntax error
-  Bad.namStart({a},) {} //                         //# 47: syntax error
-  Bad.namMiddle({a,, b}) {} //                     //# 48: syntax error
-  static void staticBadEmpty(,) {} //              //# 49: syntax error
-  static void staticBadStart(, a) {} //            //# 50: syntax error
-  static void staticBadEnd(a,,) {} //              //# 51: syntax error
-  static void staticBadMiddle(a,, b) {} //         //# 52: syntax error
-  static void staticBadPosEmpty([]) {} //          //# 53: syntax error
-  static void staticBadPosEmpty(,[]) {} //         //# 54: syntax error
-  static void staticBadPosEmpty([,]) {} //         //# 55: syntax error
-  static void staticBadPosEmpty([],) {} //         //# 56: syntax error
-  static void staticBadPosStart(,[a]) {} //        //# 57: syntax error
-  static void staticBadPosStart([, a]) {} //       //# 58: syntax error
-  static void staticBadPosEnd([a,,]) {} //         //# 59: syntax error
-  static void staticBadPosStart([a],) {} //        //# 60: syntax error
-  static void staticBadPosMiddle([a,, b]) {} //    //# 61: syntax error
-  static void staticBadNamEmpty({}) {} //          //# 62: syntax error
-  static void staticBadNamEmpty(,{}) {} //         //# 63: syntax error
-  static void staticBadNamEmpty({,}) {} //         //# 64: syntax error
-  static void staticBadNamEmpty({},) {} //         //# 65: syntax error
-  static void staticBadNamStart(,{a}) {} //        //# 66: syntax error
-  static void staticBadNamStart({, a}) {} //       //# 67: syntax error
-  static void staticBadNamEnd({a,,}) {} //         //# 68: syntax error
-  static void staticBadNamStart({a},) {} //        //# 69: syntax error
-  static void staticBadNamMiddle({a,, b}) {} //    //# 70: syntax error
-  static void set staticSetBadEmpty(,) {} //       //# 71: syntax error
-  static void set staticSetBadStart(, a) {} //     //# 72: syntax error
-  static void set staticSetBadEnd(a,,) {} //       //# 73: syntax error
-  static void set staticSetBadMiddle(a,, b) {} //  //# 74: syntax error
-  void instanceBadEmpty(,) {} //                   //# 75: syntax error
-  void instanceBadStart(, a) {} //                 //# 76: syntax error
-  void instanceBadEnd(a,,) {} //                   //# 77: syntax error
-  void instanceBadMiddle(a,, b) {} //              //# 78: syntax error
-  void instanceBadPosEmpty([]) {} //               //# 79: syntax error
-  void instanceBadPosEmpty(,[]) {} //              //# 80: syntax error
-  void instanceBadPosEmpty([,]) {} //              //# 81: syntax error
-  void instanceBadPosEmpty([],) {} //              //# 82: syntax error
-  void instanceBadPosStart(,[a]) {} //             //# 83: syntax error
-  void instanceBadPosStart([, a]) {} //            //# 84: syntax error
-  void instanceBadPosEnd([a,,]) {} //              //# 85: syntax error
-  void instanceBadPosStart([a],) {} //             //# 86: syntax error
-  void instanceBadPosMiddle([a,, b]) {} //         //# 87: syntax error
-  void instanceBadNamEmpty({}) {} //               //# 88: syntax error
-  void instanceBadNamEmpty(,{}) {} //              //# 89: syntax error
-  void instanceBadNamEmpty({,}) {} //              //# 90: syntax error
-  void instanceBadNamEmpty({},) {} //              //# 91: syntax error
-  void instanceBadNamStart(,{a}) {} //             //# 92: syntax error
-  void instanceBadNamStart({, a}) {} //            //# 93: syntax error
-  void instanceBadNamEnd({a,,}) {} //              //# 94: syntax error
-  void instanceBadNamStart({a},) {} //             //# 95: syntax error
-  void instanceBadNamMiddle({a,, b}) {} //         //# 96: syntax error
-  void set instanceSetBadEmpty(,) {} //            //# 97: syntax error
-  void set instanceSetBadStart(, a) {} //          //# 98: syntax error
-  void set instanceSetBadEnd(a,,) {} //            //# 99: syntax error
-  void set instanceSetBadMiddle(a,, b) {} //       //# 100: syntax error
-  void operator *(,); //                           //# 101: syntax error
-  void operator *(, a); //                         //# 102: syntax error
-  void operator *(a,,); //                         //# 103: syntax error
-  void operator []=(, a); //                       //# 104: syntax error
-  void operator []=(a,,); //                       //# 105: syntax error
-  void operator []=(a,, b); //                     //# 106: syntax error
-  void operator []=(a,); //                        //# 107: compile-time error
-
-  method() {
-    // Local methods.
-    void localBadEmpty(,) {} //                    //# 108: syntax error
-    void localBadStart(, a) {} //                  //# 109: syntax error
-    void localBadEnd(a,,) {} //                    //# 110: syntax error
-    void localBadMiddle(a,, b) {} //               //# 111: syntax error
-    void localBadPosEmpty([]) {} //                //# 112: syntax error
-    void localBadPosEmpty(,[]) {} //               //# 113: syntax error
-    void localBadPosEmpty([,]) {} //               //# 114: syntax error
-    void localBadPosEmpty([],) {} //               //# 115: syntax error
-    void localBadPosStart(,[a]) {} //              //# 116: syntax error
-    void localBadPosStart([, a]) {} //             //# 117: syntax error
-    void localBadPosEnd([a,,]) {} //               //# 118: syntax error
-    void localBadPosStart([a],) {} //              //# 119: syntax error
-    void localBadPosMiddle([a,, b]) {} //          //# 120: syntax error
-    void localBadNamEmpty({}) {} //                //# 121: syntax error
-    void localBadNamEmpty(,{}) {} //               //# 122: syntax error
-    void localBadNamEmpty({,}) {} //               //# 123: syntax error
-    void localBadNamEmpty({},) {} //               //# 124: syntax error
-    void localBadNamStart(,{a}) {} //              //# 125: syntax error
-    void localBadNamStart({, a}) {} //             //# 126: syntax error
-    void localBadNamEnd({a,,}) {} //               //# 127: syntax error
-    void localBadNamStart({a},) {} //              //# 128: syntax error
-    void localBadNamMiddle({a,, b}) {} //          //# 129: syntax error
-
-    // invalid calls.
-
-    topx(,); //                                    //# 130: syntax error
-    topy(,); //                                    //# 131: syntax error
-    topz(,); //                                    //# 132: syntax error
-    topx(, x); //                                  //# 133: syntax error
-    topz(, z:z); //                                //# 134: syntax error
-    topxy(x,, y); //                               //# 135: syntax error
-    topxz(x,, z:z); //                             //# 136: syntax error
-    topx(x,,); //                                  //# 137: syntax error
-    topz(z:z,,); //                                //# 138: syntax error
-
-    new C.x(,); //                                 //# 139: syntax error
-    new C.y(,); //                                 //# 140: syntax error
-    new C.z(,); //                                 //# 141: syntax error
-    new C.x(, x); //                               //# 142: syntax error
-    new C.z(, z:z); //                             //# 143: syntax error
-    new C.xy(x,, y); //                            //# 144: syntax error
-    new C.xz(x,, z:z); //                          //# 145: syntax error
-    new C.x(x,,); //                               //# 146: syntax error
-    new C.z(z:z,,); //                             //# 147: syntax error
-
-    C.staticx(,); //                               //# 148: syntax error
-    C.staticy(,); //                               //# 149: syntax error
-    C.staticz(,); //                               //# 150: syntax error
-    C.staticx(, x); //                             //# 151: syntax error
-    C.staticz(, z:z); //                           //# 152: syntax error
-    C.staticxy(x,, y); //                          //# 153: syntax error
-    C.staticxz(x,, z:z); //                        //# 154: syntax error
-    C.staticx(x,,); //                             //# 155: syntax error
-    C.staticz(z:z,,); //                           //# 156: syntax error
-
-    c.instancex(,); //                             //# 157: syntax error
-    c.instancey(,); //                             //# 158: syntax error
-    c.instancez(,); //                             //# 159: syntax error
-    c.instancex(, x); //                           //# 160: syntax error
-    c.instancez(, z:z); //                         //# 161: syntax error
-    c.instancexy(x,, y); //                        //# 162: syntax error
-    c.instancexz(x,, z:z); //                      //# 163: syntax error
-    c.instancex(x,,); //                           //# 164: syntax error
-    c.instancez(z:z,,); //                         //# 165: syntax error
-
-    c[x,] = y; //                                  //# 166: syntax error
-  }
-
-  // As parameters:
-  void f(void topBadEmpty(,)) {} //                //# 167: syntax error
-  void f(void topBadStart(, a)) {} //              //# 168: syntax error
-  void f(void topBadEnd(a,,)) {} //                //# 169: syntax error
-  void f(void topBadMiddle(a,, b)) {} //           //# 170: syntax error
-  void f(void topBadPosEmpty([])) {} //            //# 171: syntax error
-  void f(void topBadPosEmpty(,[])) {} //           //# 172: syntax error
-  void f(void topBadPosEmpty([,])) {} //           //# 173: syntax error
-  void f(void topBadPosEmpty([],)) {} //           //# 174: syntax error
-  void f(void topBadPosStart(,[a])) {} //          //# 175: syntax error
-  void f(void topBadPosStart([, a])) {} //         //# 176: syntax error
-  void f(void topBadPosEnd([a,,])) {} //           //# 177: syntax error
-  void f(void topBadPosStart([a],)) {} //          //# 178: syntax error
-  void f(void topBadPosMiddle([a,, b])) {} //      //# 179: syntax error
-  void f(void topBadNamEmpty({})) {} //            //# 180: syntax error
-  void f(void topBadNamEmpty(,{})) {} //           //# 181: syntax error
-  void f(void topBadNamEmpty({,})) {} //           //# 182: syntax error
-  void f(void topBadNamEmpty({},)) {} //           //# 183: syntax error
-  void f(void topBadNamStart(,{a})) {} //          //# 184: syntax error
-  void f(void topBadNamStart({, a})) {} //         //# 185: syntax error
-  void f(void topBadNamEnd({a,,})) {} //           //# 186: syntax error
-  void f(void topBadNamStart({a},)) {} //          //# 187: syntax error
-  void f(void topBadNamMiddle({a,, b})) {} //      //# 188: syntax error
-}
-
-// As typedefs
-typedef void BadEmpty(,); //                       //# 189: syntax error
-typedef void BadStart(, a); //                     //# 190: syntax error
-typedef void BadEnd(a,,); //                       //# 191: syntax error
-typedef void BadMiddle(a,, b); //                  //# 192: syntax error
-typedef void BadPosEmpty([]); //                   //# 193: syntax error
-typedef void BadPosEmpty(,[]); //                  //# 194: syntax error
-typedef void BadPosEmpty([,]); //                  //# 195: syntax error
-typedef void BadPosEmpty([],); //                  //# 196: syntax error
-typedef void BadPosStart(,[a]); //                 //# 197: syntax error
-typedef void BadPosStart([, a]); //                //# 198: syntax error
-typedef void BadPosEnd([a,,]); //                  //# 199: syntax error
-typedef void BadPosStart([a],); //                 //# 200: syntax error
-typedef void BadPosMiddle([a,, b]); //             //# 201: syntax error
-typedef void BadNamEmpty({}); //                   //# 202: syntax error
-typedef void BadNamEmpty(,{}); //                  //# 203: syntax error
-typedef void BadNamEmpty({,}); //                  //# 204: syntax error
-typedef void BadNamEmpty({},); //                  //# 205: syntax error
-typedef void BadNamStart(,{a}); //                 //# 206: syntax error
-typedef void BadNamStart({, a}); //                //# 207: syntax error
-typedef void BadNamEnd({a,,}); //                  //# 208: syntax error
-typedef void BadNamStart({a},); //                 //# 209: syntax error
-typedef void BadNamMiddle({a,, b}); //             //# 210: syntax error
-
-void testBadCalls() {
-  topBadEmpty(); //                                //# 1: continued
-  topBadStart(); //                                //# 2: continued
-  topBadEnd(); //                                  //# 3: continued
-  topBadMiddle(); //                               //# 4: continued
-  topBadPosEmpty(); //                             //# 5: continued
-  topBadPosEmpty(); //                             //# 6: continued
-  topBadPosEmpty(); //                             //# 7: continued
-  topBadPosEmpty(); //                             //# 8: continued
-  topBadPosStart(); //                             //# 9: continued
-  topBadPosStart(); //                             //# 10: continued
-  topBadPosEnd(); //                               //# 11: continued
-  topBadPosStart(); //                             //# 12: continued
-  topBadPosMiddle(); //                            //# 13: continued
-  topBadNamEmpty(); //                             //# 14: continued
-  topBadNamEmpty(); //                             //# 15: continued
-  topBadNamEmpty(); //                             //# 16: continued
-  topBadNamEmpty(); //                             //# 17: continued
-  topBadNamStart(); //                             //# 18: continued
-  topBadNamStart(); //                             //# 19: continued
-  topBadNamEnd(); //                               //# 20: continued
-  topBadNamStart(); //                             //# 21: continued
-  topBadNamMiddle(); //                            //# 22: continued
-  topSetBadEmpty = 1; //                           //# 23: continued
-  topSetBadStart = 1; //                           //# 24: continued
-  topSetBadEnd = 1; //                             //# 25: continued
-  topSetBadMiddle = 1; //                          //# 26: continued
-  new Bad.empty(); //                              //# 27: continued
-  new Bad.start(); //                              //# 28: continued
-  new Bad.end(); //                                //# 29: continued
-  new Bad.middle(); //                             //# 30: continued
-  new Bad.posEmpty(); //                           //# 31: continued
-  new Bad.posEmpty(); //                           //# 32: continued
-  new Bad.posEmpty(); //                           //# 33: continued
-  new Bad.posEmpty(); //                           //# 34: continued
-  new Bad.posStart(); //                           //# 35: continued
-  new Bad.posStart(); //                           //# 36: continued
-  new Bad.posEnd(); //                             //# 37: continued
-  new Bad.posStart(); //                           //# 38: continued
-  new Bad.PosMiddle(); //                          //# 39: continued
-  new Bad.namEmpty(); //                           //# 40: continued
-  new Bad.namEmpty(); //                           //# 41: continued
-  new Bad.namEmpty(); //                           //# 42: continued
-  new Bad.namEmpty(); //                           //# 43: continued
-  new Bad.namStart(); //                           //# 44: continued
-  new Bad.namStart(); //                           //# 45: continued
-  new Bad.namEnd(); //                             //# 46: continued
-  new Bad.namStart(); //                           //# 47: continued
-  new Bad.namMiddle(); //                          //# 48: continued
-  Bad.staticBadEmpty(); //                         //# 49: continued
-  Bad.staticBadStart(); //                         //# 50: continued
-  Bad.staticBadEnd(); //                           //# 51: continued
-  Bad.staticBadMiddle(); //                        //# 52: continued
-  Bad.staticBadPosEmpty(); //                      //# 53: continued
-  Bad.staticBadPosEmpty(); //                      //# 54: continued
-  Bad.staticBadPosEmpty(); //                      //# 55: continued
-  Bad.staticBadPosEmpty(); //                      //# 56: continued
-  Bad.staticBadPosStart(); //                      //# 57: continued
-  Bad.staticBadPosStart(); //                      //# 58: continued
-  Bad.staticBadPosEnd(); //                        //# 59: continued
-  Bad.staticBadPosStart(); //                      //# 60: continued
-  Bad.staticBadPosMiddle(); //                     //# 61: continued
-  Bad.staticBadNamEmpty(); //                      //# 62: continued
-  Bad.staticBadNamEmpty(); //                      //# 63: continued
-  Bad.staticBadNamEmpty(); //                      //# 64: continued
-  Bad.staticBadNamEmpty(); //                      //# 65: continued
-  Bad.staticBadNamStart(); //                      //# 66: continued
-  Bad.staticBadNamStart(); //                      //# 67: continued
-  Bad.staticBadNamEnd(); //                        //# 68: continued
-  Bad.staticBadNamStart(); //                      //# 69: continued
-  Bad.staticBadNamMiddle(); //                     //# 70: continued
-  Bad.staticSetBadEmpty = 1; //                    //# 71: continued
-  Bad.staticSetBadStart = 1; //                    //# 72: continued
-  Bad.staticSetBadEnd = 1; //                      //# 73: continued
-  Bad.staticSetBadMiddle = 1; //                   //# 74: continued
-
-  var bad = new Bad();
-  bad.instanceBadEmpty(); //                       //# 75: continued
-  bad.instanceBadStart(); //                       //# 76: continued
-  bad.instanceBadEnd(); //                         //# 77: continued
-  bad.instanceBadMiddle(); //                      //# 78: continued
-  bad.instanceBadPosEmpty(); //                    //# 79: continued
-  bad.instanceBadPosEmpty(); //                    //# 80: continued
-  bad.instanceBadPosEmpty(); //                    //# 81: continued
-  bad.instanceBadPosEmpty(); //                    //# 82: continued
-  bad.instanceBadPosStart(); //                    //# 83: continued
-  bad.instanceBadPosStart(); //                    //# 84: continued
-  bad.instanceBadPosEnd(); //                      //# 85: continued
-  bad.instanceBadPosStart(); //                    //# 86: continued
-  bad.instanceBadPosMiddle(); //                   //# 87: continued
-  bad.instanceBadNamEmpty(); //                    //# 88: continued
-  bad.instanceBadNamEmpty(); //                    //# 89: continued
-  bad.instanceBadNamEmpty(); //                    //# 90: continued
-  bad.instanceBadNamEmpty(); //                    //# 91: continued
-  bad.instanceBadNamStart(); //                    //# 92: continued
-  bad.instanceBadNamStart(); //                    //# 93: continued
-  bad.instanceBadNamEnd(); //                      //# 94: continued
-  bad.instanceBadNamStart(); //                    //# 95: continued
-  bad.instanceBadNamMiddle(); //                   //# 96: continued
-  bad.instanceSetBadEmpty = 1; //                  //# 97: continued
-  bad.instanceSetBadStart = 1; //                  //# 98: continued
-  bad.instanceSetBadEnd = 1; //                    //# 99: continued
-  bad.instanceSetBadMiddle = 1; //                 //# 100: continued
-  bad * bad; //                                    //# 101: continued
-  bad * bad; //                                    //# 102: continued
-  bad * bad; //                                    //# 103: continued
-  bad[1] = 1; //                                   //# 104: continued
-  bad[1] = 1; //                                   //# 105: continued
-  bad[1] = 1; //                                   //# 106: continued
-  bad[1] = 1; //                                   //# 107: continued
-
-  // This covers tests 108-166
-  bad.method();
-
-  bad.f(() {}); //                                 //# 167: continued
-  bad.f(() {}); //                                 //# 168: continued
-  bad.f(() {}); //                                 //# 169: continued
-  bad.f(() {}); //                                 //# 170: continued
-  bad.f(() {}); //                                 //# 171: continued
-  bad.f(() {}); //                                 //# 172: continued
-  bad.f(() {}); //                                 //# 173: continued
-  bad.f(() {}); //                                 //# 174: continued
-  bad.f(() {}); //                                 //# 175: continued
-  bad.f(() {}); //                                 //# 176: continued
-  bad.f(() {}); //                                 //# 177: continued
-  bad.f(() {}); //                                 //# 178: continued
-  bad.f(() {}); //                                 //# 179: continued
-  bad.f(() {}); //                                 //# 180: continued
-  bad.f(() {}); //                                 //# 181: continued
-  bad.f(() {}); //                                 //# 182: continued
-  bad.f(() {}); //                                 //# 183: continued
-  bad.f(() {}); //                                 //# 184: continued
-  bad.f(() {}); //                                 //# 185: continued
-  bad.f(() {}); //                                 //# 186: continued
-  bad.f(() {}); //                                 //# 187: continued
-  bad.f(() {}); //                                 //# 188: continued
-
-  BadEmpty x; //                                   //# 189: continued
-  BadStart x; //                                   //# 190: continued
-  BadEnd x; //                                     //# 191: continued
-  BadMiddle x; //                                  //# 192: continued
-  BadPosEmpty x; //                                //# 193: continued
-  BadPosEmpty x; //                                //# 194: continued
-  BadPosEmpty x; //                                //# 195: continued
-  BadPosEmpty x; //                                //# 196: continued
-  BadPosStart x; //                                //# 197: continued
-  BadPosStart x; //                                //# 198: continued
-  BadPosEnd x; //                                  //# 199: continued
-  BadPosStart x; //                                //# 200: continued
-  BadPosMiddle x; //                               //# 201: continued
-  BadNamEmpty x; //                                //# 202: continued
-  BadNamEmpty x; //                                //# 203: continued
-  BadNamEmpty x; //                                //# 204: continued
-  BadNamEmpty x; //                                //# 205: continued
-  BadNamStart x; //                                //# 206: continued
-  BadNamStart x; //                                //# 207: continued
-  BadNamEnd x; //                                  //# 208: continued
-  BadNamStart x; //                                //# 209: continued
-  BadNamMiddle x; //                               //# 210: continued
-}
diff --git a/tests/language/argument_definition_test.dart b/tests/language/argument_definition_test.dart
deleted file mode 100644
index 67f63ad..0000000
--- a/tests/language/argument_definition_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-// Dart test program for testing that the argument definition test has been
-// removed.
-
-import "package:expect/expect.dart";
-
-int test(a, {b, c}) {
-  if (?b) return b; // //# 01: syntax error
-  return a + b + c;
-}
-
-main() {
-  Expect.equals(6, test(1, b: 2, c: 3));
-}
diff --git a/tests/language/arithmetic2_test.dart b/tests/language/arithmetic2_test.dart
deleted file mode 100644
index 65655da..0000000
--- a/tests/language/arithmetic2_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// 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.
-// Dart test program to test arithmetic operations.
-
-import "package:expect/expect.dart";
-
-class A {
-  static foo() => 499;
-}
-
-bool throwsNoSuchMethod(f) {
-  try {
-    f();
-    return false;
-  } on NoSuchMethodError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-bool throwsBecauseOfBadArgument(f) {
-  try {
-    f();
-    return false;
-  } on NoSuchMethodError catch (e) {
-    return true;
-  } on ArgumentError catch (e) {
-    return true;
-  } on TypeError catch (e) {
-    // In type checked mode.
-    return true;
-  }
-  return false;
-}
-
-numberOpBadSecondArgument(f) {
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f(true)));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f(new A())));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f("foo")));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f("5")));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f(() => 499)));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f(null)));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f(false)));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f([])));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f({})));
-  Expect.isTrue(throwsBecauseOfBadArgument(() => f(A.foo)));
-}
-
-badOperations(b) {
-  Expect.isTrue(throwsNoSuchMethod(() => b - 3));
-  Expect.isTrue(throwsNoSuchMethod(() => b * 3));
-  Expect.isTrue(throwsNoSuchMethod(() => b ~/ 3));
-  Expect.isTrue(throwsNoSuchMethod(() => b / 3));
-  Expect.isTrue(throwsNoSuchMethod(() => b % 3));
-  Expect.isTrue(throwsNoSuchMethod(() => b + 3));
-  Expect.isTrue(throwsNoSuchMethod(() => b[3]));
-  Expect.isTrue(throwsNoSuchMethod(() => ~b));
-  Expect.isTrue(throwsNoSuchMethod(() => -b));
-}
-
-main() {
-  numberOpBadSecondArgument((x) => 3 + x);
-  numberOpBadSecondArgument((x) => 3 - x);
-  numberOpBadSecondArgument((x) => 3 * x);
-  numberOpBadSecondArgument((x) => 3 / x);
-  numberOpBadSecondArgument((x) => 3 ~/ x);
-  numberOpBadSecondArgument((x) => 3 % x);
-  badOperations(true);
-  badOperations(false);
-  badOperations(() => 499);
-  badOperations(A.foo);
-}
diff --git a/tests/language/arithmetic_canonicalization_test.dart b/tests/language/arithmetic_canonicalization_test.dart
deleted file mode 100644
index 23567ca..0000000
--- a/tests/language/arithmetic_canonicalization_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test canonicalization of simple arithmetic equivalences.
-// VMOptions=--optimization-counter-threshold=20 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  for (var i = 0; i < 50; i++) {
-    Expect.isTrue(mul1double(i) is double);
-    Expect.equals(i.toDouble(), mul1double(i));
-    Expect.equals(0.0, mul0double(i));
-    Expect.equals(i.toDouble(), add0double(i));
-
-    Expect.equals(i, mul1int(i));
-    Expect.equals(i, add0int(i));
-    Expect.equals(0, mul0int(i));
-    Expect.equals(0, and0(i));
-    Expect.equals(i, and1(i));
-    Expect.equals(i, or0(i));
-    Expect.equals(i, xor0(i));
-  }
-
-  Expect.isTrue(mul0double(double.NAN).isNaN);
-  Expect.isFalse(add0double(-0.0).isNegative);
-}
-
-mul1double(x) => 1.0 * x;
-mul0double(x) => 0.0 * x;
-add0double(x) => 0.0 + x;
-
-mul1int(x) => 1 * x;
-mul0int(x) => 0 * x;
-add0int(x) => 0 + x;
-and0(x) => 0 & x;
-or0(x) => 0 | x;
-xor0(x) => 0 ^ x;
-and1(x) => (-1) & x;
diff --git a/tests/language/arithmetic_smi_overflow_test.dart b/tests/language/arithmetic_smi_overflow_test.dart
deleted file mode 100644
index 1a4eec1..0000000
--- a/tests/language/arithmetic_smi_overflow_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-// Dart test program to test arithmetic operations.
-
-// VMOptions=--optimization_counter_threshold=5 --no-background_compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  for (var i = 0; i < 10; i++) {
-    Expect.equals(0x40000000, (i - i) - -1073741824);
-    Expect.equals(0x4000000000000000, (i - i) - -4611686018427387904);
-  }
-}
diff --git a/tests/language/arithmetic_test.dart b/tests/language/arithmetic_test.dart
deleted file mode 100644
index 79db606..0000000
--- a/tests/language/arithmetic_test.dart
+++ /dev/null
@@ -1,558 +0,0 @@
-// 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.
-// Dart test program to test arithmetic operations.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-library arithmetic_test;
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-class ArithmeticTest {
-  static bool exceptionCaughtParseInt(String s) {
-    try {
-      int.parse(s);
-      return false;
-    } on FormatException catch (e) {
-      return true;
-    }
-  }
-
-  static bool exceptionCaughtParseDouble(String s) {
-    try {
-      double.parse(s);
-      return false;
-    } on FormatException catch (e) {
-      return true;
-    }
-  }
-
-  static bool toIntThrowsUnsupportedError(String str) {
-    // No exception allowed for parse double.
-    double d = double.parse(str);
-    try {
-      var a = d.toInt();
-      return false;
-    } on UnsupportedError catch (e) {
-      return true;
-    }
-  }
-
-  static runOne() {
-    var a = 22;
-    var b = 4;
-    // Smi & smi.
-    Expect.equals(26, a + b);
-    Expect.equals(18, a - b);
-    Expect.equals(88, a * b);
-    Expect.equals(5, a ~/ b);
-    Expect.equals(5.5, a / b);
-    Expect.equals(2.0, 10 / 5);
-    Expect.equals(2, a % b);
-    Expect.equals(2, a.remainder(b));
-    // Smi corner cases.
-    for (int i = 0; i < 80; i++) {
-      a = -(1 << i);
-      b = -1;
-      Expect.equals(1 << i, a ~/ b);
-    }
-    a = 22;
-    b = 4.0;
-    // Smi & double.
-    Expect.equals(26.0, a + b);
-    Expect.equals(18.0, a - b);
-    Expect.equals(88.0, a * b);
-    Expect.equals(5, a ~/ b);
-    Expect.equals(5.5, a / b);
-    Expect.equals(2.0, a % b);
-    Expect.equals(2.0, a.remainder(b));
-    a = 22.0;
-    b = 4;
-    // Double & smi.
-    Expect.equals(26.0, a + b);
-    Expect.equals(18.0, a - b);
-    Expect.equals(88.0, a * b);
-    Expect.equals(5, a ~/ b);
-    Expect.equals(5.5, a / b);
-    Expect.equals(2.0, a % b);
-    Expect.equals(2.0, a.remainder(b));
-    a = 22.0;
-    b = 4.0;
-    // Double & double.
-    Expect.equals(26.0, a + b);
-    Expect.equals(18.0, a - b);
-    Expect.equals(88.0, a * b);
-    Expect.equals(5, a ~/ b);
-    Expect.equals(5.5, a / b);
-    Expect.equals(2.0, a % b);
-    Expect.equals(2.0, a.remainder(b));
-
-    // Special int operations.
-    Expect.equals(2, (2).floor());
-    Expect.equals(2, (2).ceil());
-    Expect.equals(2, (2).round());
-    Expect.equals(2, (2).truncate());
-
-    Expect.equals(-2, (-2).floor());
-    Expect.equals(-2, (-2).ceil());
-    Expect.equals(-2, (-2).round());
-    Expect.equals(-2, (-2).truncate());
-
-    // Note that this number fits into 53 bits of a double.
-    int big = 123456789012345;
-
-    Expect.equals(big, big.floor());
-    Expect.equals(big, big.ceil());
-    Expect.equals(big, big.round());
-    Expect.equals(big, big.truncate());
-    big = -big;
-    Expect.equals(big, big.floor());
-    Expect.equals(big, big.ceil());
-    Expect.equals(big, big.round());
-    Expect.equals(big, big.truncate());
-
-    // Test if double is contagious. The assignment will check the type.
-    {
-      double d = 1 + 1.0;
-    }
-    {
-      double d = 1.0 + 1;
-    }
-    {
-      double d = 1 * 1.0;
-    }
-    {
-      double d = 0 * 1.0;
-    }
-    {
-      double d = 1.0 * 0;
-    }
-    {
-      double d = 1 / 1.0;
-    }
-    {
-      double d = 1.0 / 0;
-    }
-    {
-      double d = 1 - 1.0;
-    }
-    {
-      double d = 1.0 - 1;
-    }
-    {
-      double d = big * 1.0;
-    }
-    {
-      double d = 1.0 * big;
-    }
-
-    // Reset big to positive value.
-    big = 123456789012345;
-    // -- isNegative --.
-    // Smi.
-    Expect.equals(false, (0).isNegative);
-    Expect.equals(false, (1).isNegative);
-    Expect.equals(true, (-1).isNegative);
-    // Big.
-    Expect.equals(false, big.isNegative);
-    Expect.equals(true, (-big).isNegative);
-    // Double.
-    // TODO(srdjan): enable the following test once isNegative works.
-    // Expect.equals(true, (-0.0).isNegative);
-    Expect.equals(false, (0.0).isNegative);
-    Expect.equals(false, (2.0).isNegative);
-    Expect.equals(true, (-2.0).isNegative);
-
-    double negateDouble(double x) {
-      return -x;
-    }
-
-    Expect.isTrue(negateDouble(0.0).isNegative);
-    Expect.isFalse(negateDouble(-0.0).isNegative);
-    Expect.isTrue(negateDouble(3.5e3).isNegative);
-    Expect.isFalse(negateDouble(-3.5e3).isNegative);
-
-    // Constants.
-    final nan = 0.0 / 0.0;
-    final infinity = 1.0 / 0.0;
-
-    // -- isInfinite --.
-    // Smi.
-    Expect.equals(false, (0).isInfinite);
-    Expect.equals(false, (1).isInfinite);
-    Expect.equals(false, (-1).isInfinite);
-    // Big.
-    Expect.equals(false, big.isInfinite);
-    Expect.equals(false, (-big).isInfinite);
-    // Double.
-    Expect.equals(false, (0.0).isInfinite);
-    Expect.equals(true, infinity.isInfinite);
-    Expect.equals(true, (-infinity).isInfinite);
-    Expect.equals(false, (12.0).isInfinite);
-    Expect.equals(false, (-12.0).isInfinite);
-    Expect.equals(false, nan.isInfinite);
-
-    // -- isNaN --.
-    // Smi.
-    Expect.equals(false, (0).isNaN);
-    Expect.equals(false, (1).isNaN);
-    Expect.equals(false, (-1).isNaN);
-    // Big.
-    Expect.equals(false, big.isNaN);
-    Expect.equals(false, (-big).isNaN);
-    // Double.
-    Expect.equals(true, nan.isNaN);
-    Expect.equals(false, (12.0).isNaN);
-    Expect.equals(false, infinity.isNaN);
-
-    // -- abs --.
-    // Smi.
-    Expect.equals(0, (0).abs());
-    Expect.equals(2, (2).abs());
-    Expect.equals(2, (-2).abs());
-    // Big.
-    Expect.equals(big, big.abs());
-    Expect.equals(big, (-big).abs());
-    // Double.
-    Expect.equals(false, (0.0).abs().isNegative);
-    Expect.equals(false, (-0.0).abs().isNegative);
-    Expect.equals(2.0, (2.0).abs());
-    Expect.equals(2.0, (-2.0).abs());
-
-    // -- ceil --.
-    // Smi.
-    Expect.equals(0, (0).ceil());
-    Expect.equals(1, (1).ceil());
-    Expect.equals(-1, (-1).ceil());
-    // Big.
-    Expect.equals(big, big.ceil());
-    Expect.equals(-big, (-big).ceil());
-    // Double.
-    Expect.equals(0, (0.0).ceil());
-    Expect.equals(false, (0.0).ceil().isNegative);
-    Expect.equals(1, (0.1).ceil());
-    Expect.equals(1, double.MIN_POSITIVE.ceil());
-    Expect.equals(1, (0.49999999999999994).ceil());
-    Expect.equals(0, (-0.0).ceil());
-    Expect.equals(0, (-0.3).ceil());
-    Expect.isTrue((-0.0).ceil() is int);
-    Expect.isTrue((-0.3).ceil() is int);
-    Expect.equals(0, (-0.49999999999999994).ceil());
-    Expect.equals(3, (2.1).ceil());
-    Expect.equals(-2, (-2.1).ceil());
-
-    // -- floor --.
-    // Smi.
-    Expect.equals(0, (0).floor());
-    Expect.equals(1, (1).floor());
-    Expect.equals(-1, (-1).floor());
-    // Big.
-    Expect.equals(big, big.floor());
-    Expect.equals(-big, (-big).floor());
-    // Double.
-    Expect.equals(0, (0.0).floor());
-    Expect.equals(0, (0.1).floor());
-    Expect.equals(0, (0.49999999999999994).floor());
-    Expect.equals(0, double.MIN_POSITIVE.floor());
-    Expect.isTrue((0.0).floor() is int);
-    Expect.isTrue((0.1).floor() is int);
-    Expect.equals(0, (-0.0).floor());
-    Expect.isTrue((-0.0).floor() is int);
-    Expect.equals(-1, (-0.1).floor());
-    Expect.equals(2, (2.1).floor());
-    Expect.equals(-3, (-2.1).floor());
-    Expect.equals(-1.0, (-0.49999999999999994).floor());
-    Expect.equals(-3.0, (-2.1).floor());
-
-    // -- truncate --.
-    // Smi.
-    Expect.equals(0, (0).truncate());
-    Expect.equals(1, (1).truncate());
-    Expect.equals(-1, (-1).truncate());
-    // Big.
-    Expect.equals(big, big.truncate());
-    Expect.equals(-big, (-big).truncate());
-    // Double.
-    Expect.equals(0, (0.0).truncate());
-    Expect.equals(0, (0.1).truncate());
-    Expect.isTrue((0.0).truncate() is int);
-    Expect.isTrue((0.1).truncate() is int);
-    Expect.equals(0, (-0.0).truncate());
-    Expect.equals(0, (-0.3).truncate());
-    Expect.isTrue((-0.0).truncate() is int);
-    Expect.isTrue((-0.3).truncate() is int);
-    Expect.equals(2, (2.1).truncate());
-    Expect.equals(-2, (-2.1).truncate());
-
-    int b1 = (1234567890123.0).truncate();
-    int b2 = (1234567890124.0).truncate();
-    Expect.equals(b2, b1 + 1.0);
-
-    // -- round --.
-    // Smi.
-    Expect.equals(0, (0).round());
-    Expect.equals(1, (1).round());
-    Expect.equals(-1, (-1).round());
-    // Big.
-    Expect.equals(big, big.round());
-    Expect.equals(-big, (-big).round());
-    // Double.
-    Expect.equals(3, (2.6).round());
-    Expect.equals(-3, (-2.6).round());
-    Expect.equals(0, (0.0).round());
-    Expect.equals(0, (0.1).round());
-    Expect.equals(3, (2.5).round());
-    Expect.equals(-3, (-2.5).round());
-    Expect.isFalse((0.0).round().isNegative);
-    Expect.isFalse((0.1).round().isNegative);
-    Expect.equals(0, (-0.0).round());
-    Expect.equals(0, (-0.3).round());
-    Expect.equals(2, (2.1).round());
-    Expect.equals(-2, (-2.1).round());
-    Expect.equals(1, (0.5).round());
-    Expect.equals(-1, (-0.5).round());
-    Expect.isTrue((-0.0).round() is int);
-    Expect.isTrue((-0.3).round() is int);
-    Expect.isTrue((-0.5).round() is int);
-    Expect.equals(2, (1.5).round());
-    Expect.equals(-2, (-1.5).round());
-    Expect.equals(1, (0.99).round());
-
-    // -- toInt --.
-    // Smi.
-    Expect.equals(0, (0).toInt());
-    Expect.equals(1, (1).toInt());
-    Expect.equals(-1, (-1).toInt());
-    // Type checks.
-    {
-      int i = (0).toInt();
-    }
-    {
-      int i = (1).toInt();
-    }
-    {
-      int i = (-1).toInt();
-    }
-    // Big.
-    Expect.equals(big, big.toInt());
-    Expect.equals(-big, (-big).toInt());
-    {
-      int i = big.toInt();
-    }
-    {
-      int i = (-big).toInt();
-    }
-    // Double.
-    Expect.equals(1234567890123, (1234567890123.0).toInt());
-    Expect.equals(-1234567890123, (-1234567890123.0).toInt());
-    {
-      int i = (1234567890123.0).toInt();
-    }
-    {
-      int i = (-1234567890123.0).toInt();
-    }
-    // 32bit Smi border cases.
-    Expect.equals(-1073741824, (-1073741824.0).toInt());
-    Expect.equals(-1073741825, (-1073741825.0).toInt());
-    Expect.equals(1073741823, (1073741823.0).toInt());
-    Expect.equals(1073741824, (1073741824.0).toInt());
-
-    {
-      int i = (-1073741824.0).toInt();
-    }
-    {
-      int i = (-1073741825.0).toInt();
-    }
-    {
-      int i = (1073741823.0).toInt();
-    }
-    {
-      int i = (1073741824.0).toInt();
-    }
-
-    // -- toDouble --.
-    // Smi.
-    Expect.equals(0.0, (0).toDouble());
-    Expect.equals(1.0, (1).toDouble());
-    Expect.equals(-1.0, (-1).toDouble());
-    // Type checks.
-    {
-      double d = (0).toDouble();
-    }
-    {
-      double d = (1).toDouble();
-    }
-    {
-      double d = (-1).toDouble();
-    }
-    // Big.
-    Expect.equals(big, big.toInt());
-    Expect.equals(-big, (-big).toInt());
-    {
-      int i = big.toInt();
-    }
-    {
-      int i = (-big).toInt();
-    }
-
-    // Math functions.
-    Expect.equals(2.0, sqrt(4.0));
-    Expect.approxEquals(1.0, sin(3.14159265 / 2.0));
-    Expect.approxEquals(-1.0, cos(3.14159265));
-
-    Expect.equals(12, int.parse("12"));
-    Expect.equals(-12, int.parse("-12"));
-    Expect.equals(12345678901234567890, int.parse("12345678901234567890"));
-    Expect.equals(-12345678901234567890, int.parse("-12345678901234567890"));
-    // Type checks.
-    {
-      int i = int.parse("12");
-    }
-    {
-      int i = int.parse("-12");
-    }
-    {
-      int i = int.parse("12345678901234567890");
-    }
-    {
-      int i = int.parse("-12345678901234567890");
-    }
-
-    Expect.equals(1.2, double.parse("1.2"));
-    Expect.equals(-1.2, double.parse("-1.2"));
-    // Type checks.
-    {
-      double d = double.parse("1.2");
-    }
-    {
-      double d = double.parse("-1.2");
-    }
-    {
-      double d = double.parse("0");
-    }
-
-    // Random
-    {
-      Random rand = new Random();
-      double d = rand.nextDouble();
-    }
-
-    Expect.equals(false, exceptionCaughtParseInt("22"));
-    Expect.equals(true, exceptionCaughtParseInt("alpha"));
-    Expect.equals(true, exceptionCaughtParseInt("-alpha"));
-    Expect.equals(false, exceptionCaughtParseDouble("22.2"));
-    Expect.equals(true, exceptionCaughtParseDouble("alpha"));
-    Expect.equals(true, exceptionCaughtParseDouble("-alpha"));
-
-    Expect.equals(false, double.parse("1.2").isNaN);
-    Expect.equals(false, double.parse("1.2").isInfinite);
-
-    Expect.equals(true, double.parse("NaN").isNaN);
-    Expect.equals(true, double.parse("Infinity").isInfinite);
-    Expect.equals(true, double.parse("-Infinity").isInfinite);
-
-    Expect.equals(false, double.parse("NaN").isNegative);
-    Expect.equals(false, double.parse("Infinity").isNegative);
-    Expect.equals(true, double.parse("-Infinity").isNegative);
-
-    Expect.equals("NaN", double.parse("NaN").toString());
-    Expect.equals("Infinity", double.parse("Infinity").toString());
-    Expect.equals("-Infinity", double.parse("-Infinity").toString());
-
-    Expect.equals(false, toIntThrowsUnsupportedError("1.2"));
-    Expect.equals(true, toIntThrowsUnsupportedError("Infinity"));
-    Expect.equals(true, toIntThrowsUnsupportedError("-Infinity"));
-    Expect.equals(true, toIntThrowsUnsupportedError("NaN"));
-
-    // Min/max
-    Expect.equals(1, min(1, 12));
-    Expect.equals(12, max(1, 12));
-    Expect.equals(1.0, min(1.0, 12.0));
-    Expect.equals(12.0, max(1.0, 12.0));
-    Expect.equals(false, 1.0 < min(1.0, 12.0));
-    Expect.equals(true, 1.0 < max(1.0, 12.0));
-
-    // Hashcode
-    Expect.equals(false, (3.4).hashCode == (1.2).hashCode);
-    Expect.equals(true, (1.2).hashCode == (1.2).hashCode);
-    Expect.equals(false, (3).hashCode == (1).hashCode);
-    Expect.equals(true, (10).hashCode == (10).hashCode);
-  }
-
-  static int div(a, b) => a ~/ b;
-
-  static void testSmiDivDeopt() {
-    var a = -0x40000000;
-    var b = -1;
-    for (var i = 0; i < 10; i++) Expect.equals(0x40000000, div(a, b));
-  }
-
-  static int divMod(a, b) => a ~/ b + a % b;
-
-  static void testSmiDivModDeopt() {
-    var a = -0x40000000;
-    var b = -1;
-    for (var i = 0; i < 10; i++) Expect.equals(0x40000000, divMod(a, b));
-  }
-
-  static double sinCosSub(double a) => sin(a) - cos(a);
-
-  static double sinCosAddCos(double a) => sin(a) * cos(a) + cos(a);
-
-  static void testSinCos() {
-    var e = sin(1.234) - cos(1.234);
-    var f = sin(1.234) * cos(1.234) + cos(1.234);
-
-    for (var i = 0; i < 20; i++) {
-      Expect.approxEquals(e, sinCosSub(1.234));
-      Expect.approxEquals(f, sinCosAddCos(1.234));
-    }
-    Expect.approxEquals(1.0, sinCosSub(3.14159265));
-    Expect.approxEquals(1.0, sinCosSub(3.14159265 / 2.0));
-  }
-
-  // Test fix for issue 16592.
-  static void testSinCosNoUse() {
-    for (var i = 0; i < 20; i++) {
-      sin(i);
-      cos(i);
-    }
-  }
-
-  static mySqrt(var x) => sqrt(x);
-
-  static testSqrtDeopt() {
-    for (var i = 0; i < 10; i++) mySqrt(4.0);
-    Expect.equals(2.0, mySqrt(4.0));
-    Expect.throws(() => mySqrt("abc"));
-  }
-
-  static self_equality(x) {
-    return x == x;
-  }
-
-  static testDoubleEquality() {
-    Expect.isFalse(self_equality(double.NAN));
-    for (int i = 0; i < 20; i++) {
-      self_equality(3.0);
-    }
-    Expect.isFalse(self_equality(double.NAN));
-  }
-
-  static testMain() {
-    for (int i = 0; i < 20; i++) {
-      runOne();
-      testSmiDivDeopt();
-      testSmiDivModDeopt();
-      testSqrtDeopt();
-      testDoubleEquality();
-      testSinCos();
-      testSinCosNoUse();
-    }
-  }
-}
-
-main() {
-  ArithmeticTest.testMain();
-}
diff --git a/tests/language/assert_assignable_type_test.dart b/tests/language/assert_assignable_type_test.dart
deleted file mode 100644
index 9721bf2..0000000
--- a/tests/language/assert_assignable_type_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program to test arithmetic operations.
-// VMOptions=--optimization-counter-threshold=10 --checked --no-background-compilation
-
-// This test crashes if we recompute type of AssertAssignableInstr based on its
-// output types. By doing that we would eliminate not only the unnecessary
-// AssertAssignableInstr but also the trailing class check.
-
-main() {
-  // Foul up  IC data in integer's unary minus.
-  var y = -0x80000000;
-  testInt64List();
-}
-
-testInt64List() {
-  var array = new List(10);
-  testInt64ListImpl(array);
-}
-
-testInt64ListImpl(array) {
-  for (int i = 0; i < 10; ++i) {}
-  int sum = 0;
-  for (int i = 0; i < 10; ++i) {
-    array[i] = -0x80000000000000 + i;
-  }
-}
diff --git a/tests/language/assert_initializer_test.dart b/tests/language/assert_initializer_test.dart
deleted file mode 100644
index aef6a82..0000000
--- a/tests/language/assert_initializer_test.dart
+++ /dev/null
@@ -1,228 +0,0 @@
-// Copyright (c) 2011, 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=--assert_initializer
-import "package:expect/expect.dart";
-
-bool assertsEnabled = false;
-
-main() {
-  assert((assertsEnabled = true));
-  runtimeAsserts(); // //# none: ok
-
-  // Passing const expressions.
-  const c00 = const AssertArgument.constFirst(true, 0, 1);
-  const c01 = const AssertArgument.constLast(true, 0, 1);
-  const c02 = const AssertArgument.constMiddle(true, 0, 1);
-  const c03 = const AssertArgument.constMulti(true, 0, 1);
-  const c04 = const AssertArgument.constFirstSuper(true, 0, 1);
-  const c05 = const AssertArgument.constLastSuper(true, 0, 1);
-  const c06 = const AssertArgument.constMiddleSuper(true, 0, 1);
-  const c07 = const AssertArgument.constMultiSuper(true, 0, 1);
-
-  const c08 = const AssertCompare.constFirst(1, 2);
-  const c09 = const AssertCompare.constLast(1, 2);
-  const c10 = const AssertCompare.constMiddle(1, 2);
-  const c11 = const AssertCompare.constMulti(1, 2);
-  const c12 = const AssertCompare.constFirstSuper(1, 2);
-  const c13 = const AssertCompare.constLastSuper(1, 2);
-  const c14 = const AssertCompare.constMiddleSuper(1, 2);
-  const c15 = const AssertCompare.constMultiSuper(1, 2);
-
-  // Failing const expressions
-
-  const c = const AssertArgument.constFirst(false, 0, 1); //       //# 01: checked mode compile-time error
-  const c = const AssertArgument.constLast(false, 0, 1); //        //# 02: checked mode compile-time error
-  const c = const AssertArgument.constMiddle(false, 0, 1); //      //# 03: checked mode compile-time error
-  const c = const AssertArgument.constMulti(false, 0, 1); //       //# 04: checked mode compile-time error
-  const c = const AssertArgument.constFirstSuper(false, 0, 1); //  //# 05: checked mode compile-time error
-  const c = const AssertArgument.constLastSuper(false, 0, 1); //   //# 06: checked mode compile-time error
-  const c = const AssertArgument.constMiddleSuper(false, 0, 1); // //# 07: checked mode compile-time error
-  const c = const AssertArgument.constMultiSuper(false, 0, 1); //  //# 08: checked mode compile-time error
-
-  const c = const AssertArgument.constFirst("str", 0, 1); //       //# 11: checked mode compile-time error
-  const c = const AssertArgument.constLast("str", 0, 1); //        //# 12: checked mode compile-time error
-  const c = const AssertArgument.constMiddle("str", 0, 1); //      //# 13: checked mode compile-time error
-  const c = const AssertArgument.constMulti("str", 0, 1); //       //# 14: checked mode compile-time error
-  const c = const AssertArgument.constFirstSuper("str", 0, 1); //  //# 15: checked mode compile-time error
-  const c = const AssertArgument.constLastSuper("str", 0, 1); //   //# 16: checked mode compile-time error
-  const c = const AssertArgument.constMiddleSuper("str", 0, 1); // //# 17: checked mode compile-time error
-  const c = const AssertArgument.constMultiSuper("str", 0, 1); //  //# 18: checked mode compile-time error
-
-  const c = const AssertCompare.constFirst(3, 2); //               //# 21: checked mode compile-time error
-  const c = const AssertCompare.constLast(3, 2); //                //# 22: checked mode compile-time error
-  const c = const AssertCompare.constMiddle(3, 2); //              //# 23: checked mode compile-time error
-  const c = const AssertCompare.constMulti(3, 2); //               //# 24: checked mode compile-time error
-  const c = const AssertCompare.constFirstSuper(3, 2); //          //# 25: checked mode compile-time error
-  const c = const AssertCompare.constLastSuper(3, 2); //           //# 26: checked mode compile-time error
-  const c = const AssertCompare.constMiddleSuper(3, 2); //         //# 27: checked mode compile-time error
-  const c = const AssertCompare.constMultiSuper(3, 2); //          //# 28: checked mode compile-time error
-
-  // Functions not allowed in asserts in const execution.
-  const c = const AssertArgument.constFirst(kTrue, 0, 1); //       //# 31: checked mode compile-time error
-  const c = const AssertArgument.constLast(kTrue, 0, 1); //        //# 32: checked mode compile-time error
-  const c = const AssertArgument.constMiddle(kTrue, 0, 1); //      //# 33: checked mode compile-time error
-  const c = const AssertArgument.constMulti(kTrue, 0, 1); //       //# 34: checked mode compile-time error
-  const c = const AssertArgument.constFirstSuper(kTrue, 0, 1); //  //# 35: checked mode compile-time error
-  const c = const AssertArgument.constLastSuper(kTrue, 0, 1); //   //# 36: checked mode compile-time error
-  const c = const AssertArgument.constMiddleSuper(kTrue, 0, 1); // //# 37: checked mode compile-time error
-  const c = const AssertArgument.constMultiSuper(kTrue, 0, 1); //  //# 38: checked mode compile-time error
-
-  const cTrue = const TrickCompare(true);
-  // Value must be integer for potential-const expression to be actually const.
-  const c = const AssertCompare.constFirst(cTrue, 2); //           //# 41: checked mode compile-time error
-  const c = const AssertCompare.constLast(cTrue, 2); //            //# 42: checked mode compile-time error
-  const c = const AssertCompare.constMiddle(cTrue, 2); //          //# 43: checked mode compile-time error
-  const c = const AssertCompare.constMulti(cTrue, 2); //           //# 44: checked mode compile-time error
-  const c = const AssertCompare.constFirstSuper(cTrue, 2); //      //# 45: checked mode compile-time error
-  const c = const AssertCompare.constLastSuper(cTrue, 2); //       //# 46: checked mode compile-time error
-  const c = const AssertCompare.constMiddleSuper(cTrue, 2); //     //# 47: checked mode compile-time error
-  const c = const AssertCompare.constMultiSuper(cTrue, 2); //      //# 48: checked mode compile-time error
-}
-
-
-void runtimeAsserts() {
-
-  testAssertArgumentCombinations(value, test, [testConst]) {
-    test(() => new AssertArgument.first(value, 0, 1));
-    test(() => new AssertArgument.last(value, 0, 1));
-    test(() => new AssertArgument.middle(value, 0, 1));
-    test(() => new AssertArgument.multi(value, 0, 1));
-    test(() => new AssertArgument.firstSuper(value, 0, 1));
-    test(() => new AssertArgument.lastSuper(value, 0, 1));
-    test(() => new AssertArgument.middleSuper(value, 0, 1));
-    test(() => new AssertArgument.multiSuper(value, 0, 1));
-    testConst ??= test;
-    testConst(() => new AssertArgument.constFirst(value, 0, 1));
-    testConst(() => new AssertArgument.constLast(value, 0, 1));
-    testConst(() => new AssertArgument.constMiddle(value, 0, 1));
-    testConst(() => new AssertArgument.constMulti(value, 0, 1));
-    testConst(() => new AssertArgument.constFirstSuper(value, 0, 1));
-    testConst(() => new AssertArgument.constLastSuper(value, 0, 1));
-    testConst(() => new AssertArgument.constMiddleSuper(value, 0, 1));
-    testConst(() => new AssertArgument.constMultiSuper(value, 0, 1));
-  }
-
-  testAssertCompareCombinations(v1, v2, test, [testConst]) {
-    test(() => new AssertCompare.first(v1, v2));
-    test(() => new AssertCompare.last(v1, v2));
-    test(() => new AssertCompare.middle(v1, v2));
-    test(() => new AssertCompare.multi(v1, v2));
-    test(() => new AssertCompare.firstSuper(v1, v2));
-    test(() => new AssertCompare.lastSuper(v1, v2));
-    test(() => new AssertCompare.middleSuper(v1, v2));
-    test(() => new AssertCompare.multiSuper(v1, v2));
-    testConst ??= test;
-    testConst(() => new AssertCompare.constFirst(v1, v2));
-    testConst(() => new AssertCompare.constLast(v1, v2));
-    testConst(() => new AssertCompare.constMiddle(v1, v2));
-    testConst(() => new AssertCompare.constMulti(v1, v2));
-    testConst(() => new AssertCompare.constFirstSuper(v1, v2));
-    testConst(() => new AssertCompare.constLastSuper(v1, v2));
-    testConst(() => new AssertCompare.constMiddleSuper(v1, v2));
-    testConst(() => new AssertCompare.constMultiSuper(v1, v2));
-  }
-
-  testAssertArgumentCombinations(true, pass);
-  testAssertArgumentCombinations(kTrue, pass, failType);
-  testAssertArgumentCombinations(false, failAssert);
-  testAssertArgumentCombinations(kFalse, failAssert, failType);
-  testAssertArgumentCombinations(42, failType);
-  testAssertArgumentCombinations(null, failAssert);
-
-  testAssertCompareCombinations(1, 2, pass);
-  testAssertCompareCombinations(3, 2, failAssert);
-  var TrickCompareInt = const TrickCompare(42);
-  testAssertCompareCombinations(TrickCompareInt, 0, failType);
-  var TrickCompareTrueFun = const TrickCompare(kTrue);
-  testAssertCompareCombinations(TrickCompareTrueFun, 0, pass, failType);
-  var TrickCompareFalseFun = const TrickCompare(kFalse);
-  testAssertCompareCombinations(TrickCompareFalseFun, 0, failAssert, failType);
-}
-
-
-void pass(void action()) {
-  action();
-}
-
-void failAssert(void action()) {
-  if (assertsEnabled) {
-    Expect.throws(action, (e) => e is AssertionError && e is! TypeError);
-  } else {
-    action();
-  }
-}
-
-void failType(void action()) {
-  if (assertsEnabled) {
-    Expect.throws(action, (e) => e is TypeError);
-  } else {
-    action();
-  }
-}
-
-bool kTrue() => true;
-bool kFalse() => false;
-
-class AssertArgument {
-  final y;
-  final z;
-  AssertArgument.first(x, y, z) : assert(x), y = y, z = z;
-  AssertArgument.last(x, y, z) : y = y, z = z, assert(x);
-  AssertArgument.middle(x, y, z) : y = y, assert(x), z = z;
-  AssertArgument.multi(x, y, z)
-      : assert(x), y = y, assert(x), z = z, assert(x);
-  AssertArgument.firstSuper(x, y, z) : assert(x), y = y, z = z, super();
-  AssertArgument.lastSuper(x, y, z) : y = y, z = z, assert(x), super();
-  AssertArgument.middleSuper(x, y, z) : y = y, assert(x), z = z, super();
-  AssertArgument.multiSuper(x, y, z)
-      : assert(x), y = y, assert(x), z = z, assert(x), super();
-  const AssertArgument.constFirst(x, y, z) : assert(x), y = y, z = z;
-  const AssertArgument.constLast(x, y, z) : y = y, z = z, assert(x);
-  const AssertArgument.constMiddle(x, y, z) : y = y, assert(x), z = z;
-  const AssertArgument.constMulti(x, y, z)
-      : assert(x), y = y, assert(x), z = z, assert(x);
-  const AssertArgument.constFirstSuper(x, y, z)
-      : assert(x), y = y, z = z, super();
-  const AssertArgument.constLastSuper(x, y, z)
-      : y = y, z = z, assert(x), super();
-  const AssertArgument.constMiddleSuper(x, y, z)
-      : y = y, assert(x), z = z, super();
-  const AssertArgument.constMultiSuper(x, y, z)
-      : assert(x), y = y, assert(x), z = z, assert(x), super();
-}
-
-class AssertCompare {
-  final y;
-  final z;
-  AssertCompare.first(y, z) : assert(y < z), y = y, z = z;
-  AssertCompare.last(y, z) : y = y, z = z, assert(y < z);
-  AssertCompare.middle(y, z) : y = y, assert(y < z), z = z;
-  AssertCompare.multi(y, z)
-      : assert(y < z), y = y, assert(y < z), z = z, assert(y < z);
-  AssertCompare.firstSuper(y, z) : assert(y < z), y = y, z = z, super();
-  AssertCompare.lastSuper(y, z) : y = y, z = z, assert(y < z), super();
-  AssertCompare.middleSuper(y, z) : y = y, assert(y < z), z = z, super();
-  AssertCompare.multiSuper(y, z)
-      : assert(y < z), y = y, assert(y < z), z = z, assert(y < z), super();
-  const AssertCompare.constFirst(y, z) : assert(y < z), y = y, z = z;
-  const AssertCompare.constLast(y, z) : y = y, z = z, assert(y < z);
-  const AssertCompare.constMiddle(y, z) : y = y, assert(y < z), z = z;
-  const AssertCompare.constMulti(y, z)
-      : assert(y < z), y = y, assert(y < z), z = z, assert(y < z);
-  const AssertCompare.constFirstSuper(y, z)
-      : assert(y < z), y = y, z = z, super();
-  const AssertCompare.constLastSuper(y, z)
-      : y = y, z = z, assert(y < z), super();
-  const AssertCompare.constMiddleSuper(y, z)
-      : y = y, assert(y < z), z = z, super();
-  const AssertCompare.constMultiSuper(y, z)
-      : assert(y < z), y = y, assert(y < z), z = z, assert(y < z), super();
-}
-
-class TrickCompare {
-  final result;
-  const TrickCompare(this.result);
-  operator<(other) => result;  // Nyah-nyah!
-}
diff --git a/tests/language/assert_message_test.dart b/tests/language/assert_message_test.dart
deleted file mode 100644
index 38c5d31..0000000
--- a/tests/language/assert_message_test.dart
+++ /dev/null
@@ -1,105 +0,0 @@
-// 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.
-
-// SharedOptions=--assert-message
-
-import "dart:async";
-
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-main() {
-  // Only run with asserts enabled mode.
-  bool assertsEnabled = false;
-  assert(assertsEnabled = true);
-  if (!assertsEnabled) return;
-
-  // Basics.
-  assert(true, "");
-  assert(() => true, "");
-
-  int x = null;
-  // Successful asserts won't execute message.
-  assert(true, x + 42);
-  assert(true, throw "unreachable");
-
-  // Can use any value as message.
-  try {
-    assert(false, 42);
-  } on AssertionError catch (e) {
-    Expect.equals(42, e.message);
-  }
-
-  try {
-    assert(false, "");
-  } on AssertionError catch (e) {
-    Expect.equals("", e.message);
-  }
-
-  try {
-    assert(false, null);
-  } on AssertionError catch (e) {
-    Expect.equals(null, e.message);
-  }
-
-  // Test expression can throw.
-  try {
-    assert(throw "test", throw "message");
-  } on String catch (e) {
-    Expect.equals("test", e);
-  }
-
-  // Message expression can throw.
-  try {
-    assert(false, throw "message");
-  } on String catch (e) {
-    Expect.equals("message", e);
-  }
-
-  // Failing asserts evaluate message after test.
-  var list = [];
-  try {
-    assert((list..add(1)).isEmpty, (list..add(3)).length);
-  } on AssertionError catch (e) {
-    Expect.equals(2, e.message);
-    Expect.listEquals([1, 3], list);
-  }
-
-  asyncStart();
-  asyncTests().then((_) {
-    asyncEnd();
-  });
-}
-
-Future asyncTests() async {
-  // You can await in both condition and message.
-  assert(true, await 0);
-  assert(await true, 1);
-  assert(await true, await 2);
-
-  // Successful asserts won't await/evaluate message.
-  void unreachable() => throw "unreachable";
-  assert(await true, await unreachable());
-
-  try {
-    assert(false, await 3);
-  } on AssertionError catch (e) {
-    Expect.equals(3, e.message);
-  }
-
-  var falseFuture = new Future.value(false);
-  var numFuture = new Future.value(4);
-
-  try {
-    assert(await falseFuture, await numFuture);
-  } on AssertionError catch (e) {
-    Expect.equals(4, e.message);
-  }
-
-  try {
-    assert(await falseFuture, await new Future.error("error"));
-  } on String catch (e) {
-    Expect.equals("error", e);
-  }
-}
diff --git a/tests/language/assert_trailing_comma_test.dart b/tests/language/assert_trailing_comma_test.dart
deleted file mode 100644
index e99c2af..0000000
--- a/tests/language/assert_trailing_comma_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-main() {
-  assert(true);
-  assert(true,);
-  assert(true,"message");
-  assert(true,"message",);
-  assert(true,"message",extra);  //# 01: syntax error
-  assert(true,"message",,);  //# 02: syntax error
-}
diff --git a/tests/language/assert_with_type_test_or_cast_test.dart b/tests/language/assert_with_type_test_or_cast_test.dart
deleted file mode 100644
index 85a18ec..0000000
--- a/tests/language/assert_with_type_test_or_cast_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-// Issue 3741: generic type tests and casts fail in assertion statements
-// when run in production mode.
-//
-// The cause was incomplete generic type skipping, so each of the assert
-// statements below would fail.
-//
-// VMOptions=
-// VMOptions=--enable_asserts
-
-main() {
-  var names = new List<int>();
-
-  // Generic type test.
-  assert(names is List<int>);
-
-  // Negated generic type test.
-  assert(names is! List<String>);
-
-  // Generic type cast.
-  assert((names as List<num>).length == 0);
-
-  // Generic type test inside expression.
-  assert((names is List<int>));
-}
diff --git a/tests/language/assertion_initializer_const_error2_test.dart b/tests/language/assertion_initializer_const_error2_test.dart
deleted file mode 100644
index abe75e3..0000000
--- a/tests/language/assertion_initializer_const_error2_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 201, 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=--assert_initializer
-//
-// Dart test program testing assert statements.
-
-import "package:expect/expect.dart";
-
-class C {
-  final int x;
-  // Const constructors.
-  const C.cc01(this.x, y)
-      : assert(x < y)  //# cc01: checked mode compile-time error
-      ;
-  const C.cc02(x, y) : x = x
-      , assert(x < y)  //# cc02: checked mode compile-time error
-      ;
-  const C.cc03(x, y) :
-      assert(x < y),  //# cc03: checked mode compile-time error
-      x = x;
-  const C.cc04(this.x, y) : super()
-      , assert(x < y)  //# cc04: checked mode compile-time error
-      ;
-  const C.cc05(this.x, y) :
-      assert(x < y),   //# cc05: checked mode compile-time error
-      super();
-  const C.cc06(x, y) : x = x, super()
-      , assert(x < y)  //# cc06: checked mode compile-time error
-      ;
-  const C.cc07(x, y) :
-      assert(x < y),  //# cc07: checked mode compile-time error
-      super(), x = x;
-  const C.cc08(x, y) :
-      assert(x < y),  //# cc08: checked mode compile-time error
-      super(), x = x
-      , assert(y > x)  //# cc08: continued
-      ;
-  const C.cc09(this.x, y)
-      : assert(x < y, "$x < $y")  //# cc09: checked mode compile-time error
-      ;
-  const C.cc10(this.x, y)
-      : assert(x < y,)  //# cc10: checked mode compile-time error
-      ;
-  const C.cc11(this.x, y)
-      : assert(x < y, "$x < $y",)  //# cc11: checked mode compile-time error
-      ;
-}
-
-
-main() {
-  const C.cc01(2, 1);  //# cc01: continued
-  const C.cc02(2, 1);  //# cc02: continued
-  const C.cc03(2, 1);  //# cc03: continued
-  const C.cc04(2, 1);  //# cc04: continued
-  const C.cc05(2, 1);  //# cc05: continued
-  const C.cc06(2, 1);  //# cc06: continued
-  const C.cc07(2, 1);  //# cc07: continued
-  const C.cc08(2, 1);  //# cc08: continued
-  const C.cc09(2, 1);  //# cc09: continued
-  const C.cc10(2, 1);  //# cc10: continued
-  const C.cc11(2, 1);  //# cc11: continued
-}
diff --git a/tests/language/assertion_initializer_const_error_test.dart b/tests/language/assertion_initializer_const_error_test.dart
deleted file mode 100644
index 896fee9..0000000
--- a/tests/language/assertion_initializer_const_error_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 201, 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=--assert_initializer
-
-class C {
-  static bool check(x, y) => x < y;
-  final int x;
-  const C(this.x);
-  // The expression is not a potentially constant expression.
-  // This is a compile-time error even in production mode.
-  const C.bc03(this.x, y)
-      : assert(check(x, y))  //# 01: compile-time error
-      ;
-}
-
-main() {
-  var c = new C.bc03(1, 2);
-  if (c.x != 1) throw "non-trivial use of c";
-}
diff --git a/tests/language/assertion_initializer_const_function_error_test.dart b/tests/language/assertion_initializer_const_function_error_test.dart
deleted file mode 100644
index d150673..0000000
--- a/tests/language/assertion_initializer_const_function_error_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-// VMOptions=--assert_initializer
-//
-// Dart test program testing assert statements.
-
-import "package:expect/expect.dart";
-
-class C {
-  static bool staticTrue() => true;
-  final int x;
-  const C(this.x);
-  // The expression *is* a compile-time constant, but not a bool value.
-  // Static warning, assertion throws which makes it a compile-time error.
-  const C.bc02(this.x, y)
-      : assert(staticTrue) //# 01: static type warning
-      ;
-}
-
-
-main() {
-  // Assertion fails, so in checked mode it's a compile-time error.
-  // Production mode will succeed because the assertion isn't evaluated.
-  var c = const C(1);
-  c = const C.bc02(1, 2);  //# 01: compile-time error
-  if (c.x != 1) throw "non-trivial use of c";
-  Expect.identical(const C(1), c);
-}
diff --git a/tests/language/assertion_initializer_const_function_test.dart b/tests/language/assertion_initializer_const_function_test.dart
deleted file mode 100644
index 681aa4b..0000000
--- a/tests/language/assertion_initializer_const_function_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-// VMOptions=--assert_initializer
-//
-// Dart test program testing assert statements.
-
-import "package:expect/expect.dart";
-
-class C {
-  static bool staticTrue() => true;
-  final int x;
-  const C(this.x);
-  // The expression *is* compile-time constant, but not a bool value.
-  // Static warning, runtime always fails assertion.
-  const C.bc01(this.x, y)
-      : assert(staticTrue)  //# 01: static type warning
-      ;
-}
-
-main() {
-  bool checkedMode = false;
-  assert(checkedMode = true);
-  if (checkedMode) {                                              //# 01: continued
-    Expect.throws(() => new C.bc01(1, 2), (e) => e is TypeError); //# 01: continued
-  } else {                                                        //# 01: continued
-    Expect.equals(1, new C.bc01(1, 2).x);
-  }                                                               //# 01: continued
-}
diff --git a/tests/language/assertion_initializer_test.dart b/tests/language/assertion_initializer_test.dart
deleted file mode 100644
index 4536980..0000000
--- a/tests/language/assertion_initializer_test.dart
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright (c) 201, 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=--assert_initializer
-//
-// Dart test program testing assert statements.
-
-import "package:expect/expect.dart";
-
-class C {
-  static bool check(x, y) => x < y;
-  static bool staticTrue() => true;
-  final int x;
-  const C(this.x);
-
-  C.c01(this.x, y) : assert(x < y);
-  C.c02(x, y) : x = x, assert(x < y);
-  C.c03(x, y) : assert(x < y), x = x;
-  C.c04(this.x, y) : super(), assert(x < y);
-  C.c05(this.x, y) : assert(x < y), super();
-  C.c06(x, y) : x = x, super(), assert(x < y);
-  C.c07(x, y) : assert(x < y), super(), x = x;
-  C.c08(x, y) : assert(x < y), super(), x = x, assert(y > x);
-  C.c09(this.x, y) : assert(x < y, "$x < $y");
-  C.c10(this.x, y) : assert(x < y,);
-  C.c11(this.x, y) : assert(x < y, "$x < $y",);
-
-  const C.cc01(this.x, y) : assert(x < y);
-  const C.cc02(x, y) : x = x, assert(x < y);
-  const C.cc03(x, y) : assert(x < y), x = x;
-  const C.cc04(this.x, y) : super(), assert(x < y);
-  const C.cc05(this.x, y) : assert(x < y), super();
-  const C.cc06(x, y) : x = x, super(), assert(x < y);
-  const C.cc07(x, y) : assert(x < y), super(), x = x;
-  const C.cc08(x, y) : assert(x < y), super(), x = x, assert(y > x);
-  const C.cc09(this.x, y) : assert(x < y, "$x < $y");
-  const C.cc10(this.x, y) : assert(x < y,);
-  const C.cc11(this.x, y) : assert(x < y, "$x < $y",);
-
-  C.nc01(this.x, y) : assert(check(x, y));
-  C.nc02(x, y) : x = x, assert(check(x, y));
-  C.nc03(x, y) : assert(check(x, y)), x = x;
-  C.nc04(this.x, y) : super(), assert(check(x, y));
-  C.nc05(this.x, y) : assert(check(x, y)), super();
-  C.nc06(x, y) : x = x, super(), assert(check(x, y));
-  C.nc07(x, y) : assert(check(x, y)), super(), x = x;
-  C.nc08(x, y) : assert(check(x, y)), super(), x = x, assert(y > x);
-  C.nc09(this.x, y) : assert(check(x, y), "$x < $y");
-  C.nc10(this.x, y) : assert(check(x, y),);
-  C.nc11(this.x, y) : assert(check(x, y), "$x < $y",);
-
-  C.fc01(this.x, y) : assert(() => x < y);
-  C.fc02(x, y) : x = x, assert(() => x < y);
-  C.fc03(x, y) : assert(() => x < y), x = x;
-  C.fc04(this.x, y) : super(), assert(() => x < y);
-  C.fc05(this.x, y) : assert(() => x < y), super();
-  C.fc06(x, y) : x = x, super(), assert(() => x < y);
-  C.fc07(x, y) : assert(() => x < y), super(), x = x;
-  C.fc08(x, y) : assert(() => x < y), super(), x = x, assert(y > x);
-  C.fc09(this.x, y) : assert(() => x < y, "$x < $y");
-  C.fc10(this.x, y) : assert(() => x < y,);
-  C.fc11(this.x, y) : assert(() => x < y, "$x < $y",);
-}
-
-
-main() {
-  // Test all constructors with both succeeding and failing asserts.
-  test(1, 2);
-  test(2, 1);
-
-  const c1 = const C(1);
-
-  // Asserts do not affect canonization.
-  Expect.identical(c1, const C.cc01(1, 2));
-  Expect.identical(c1, const C.cc02(1, 2));
-  Expect.identical(c1, const C.cc03(1, 2));
-  Expect.identical(c1, const C.cc04(1, 2));
-  Expect.identical(c1, const C.cc05(1, 2));
-  Expect.identical(c1, const C.cc06(1, 2));
-  Expect.identical(c1, const C.cc07(1, 2));
-  Expect.identical(c1, const C.cc08(1, 2));
-  Expect.identical(c1, const C.cc09(1, 2));
-  Expect.identical(c1, const C.cc10(1, 2));
-  Expect.identical(c1, const C.cc11(1, 2));
-}
-
-void test(int x, int y) {
-  bool checkedMode = false;
-  assert(checkedMode = true);
-
-  bool Function(C Function()) doTest = (checkedMode && x >= y)
-    ? (f) { Expect.throws(f, (e) => e is AssertionError); }
-    : (f) { Expect.equals(x, f().x); };
-
-  doTest(() => new C.c01(x, y));
-  doTest(() => new C.c02(x, y));
-  doTest(() => new C.c03(x, y));
-  doTest(() => new C.c04(x, y));
-  doTest(() => new C.c05(x, y));
-  doTest(() => new C.c06(x, y));
-  doTest(() => new C.c07(x, y));
-  doTest(() => new C.c08(x, y));
-  doTest(() => new C.c09(x, y));
-  doTest(() => new C.c10(x, y));
-  doTest(() => new C.c11(x, y));
-  doTest(() => new C.cc01(x, y));
-  doTest(() => new C.cc02(x, y));
-  doTest(() => new C.cc03(x, y));
-  doTest(() => new C.cc04(x, y));
-  doTest(() => new C.cc05(x, y));
-  doTest(() => new C.cc06(x, y));
-  doTest(() => new C.cc07(x, y));
-  doTest(() => new C.cc08(x, y));
-  doTest(() => new C.cc09(x, y));
-  doTest(() => new C.cc10(x, y));
-  doTest(() => new C.cc11(x, y));
-  doTest(() => new C.nc01(x, y));
-  doTest(() => new C.nc02(x, y));
-  doTest(() => new C.nc03(x, y));
-  doTest(() => new C.nc04(x, y));
-  doTest(() => new C.nc05(x, y));
-  doTest(() => new C.nc06(x, y));
-  doTest(() => new C.nc07(x, y));
-  doTest(() => new C.nc08(x, y));
-  doTest(() => new C.nc09(x, y));
-  doTest(() => new C.nc10(x, y));
-  doTest(() => new C.nc11(x, y));
-  doTest(() => new C.fc01(x, y));
-  doTest(() => new C.fc02(x, y));
-  doTest(() => new C.fc03(x, y));
-  doTest(() => new C.fc04(x, y));
-  doTest(() => new C.fc05(x, y));
-  doTest(() => new C.fc06(x, y));
-  doTest(() => new C.fc07(x, y));
-  doTest(() => new C.fc08(x, y));
-  doTest(() => new C.fc09(x, y));
-  doTest(() => new C.fc10(x, y));
-  doTest(() => new C.fc11(x, y));
-}
-
diff --git a/tests/language/assertion_test.dart b/tests/language/assertion_test.dart
deleted file mode 100644
index 2f0a12d..0000000
--- a/tests/language/assertion_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2011, 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=--enable_asserts
-//
-// Dart test program testing assert statements.
-
-import "package:expect/expect.dart";
-
-class AssertionTest {
-  static testTrue() {
-    int i = 0;
-    try {
-      assert(true);
-    } on AssertionError catch (error) {
-      i = 1;
-    }
-    return i;
-  }
-
-  static testFalse() {
-    int i = 0;
-    try {
-      assert(false);
-    } on AssertionError catch (error) {
-      i = 1;
-    }
-    return i;
-  }
-
-  static unknown(var a) {
-    return (a) ? true : false;
-  }
-
-  static testUnknown() {
-    var x = unknown(false);
-    int i = 0;
-    try {
-      assert(x);
-    } on AssertionError catch (error) {
-      i = 1;
-    }
-    return i;
-  }
-
-  static testClosure() {
-    int i = 0;
-    try {
-      assert(() => false);
-    } on AssertionError catch (error) {
-      i = 1;
-    }
-    return i;
-  }
-
-  static testClosure2() {
-    int i = 0;
-    try {
-      var x = () => false;
-      assert(x);
-    } on AssertionError catch (error) {
-      i = 1;
-    }
-    return i;
-  }
-
-  static testMain() {
-    Expect.equals(0, testTrue());
-    Expect.equals(1, testFalse());
-    Expect.equals(1, testClosure());
-    Expect.equals(1, testClosure2());
-  }
-}
-
-main() {
-  AssertionTest.testMain();
-}
diff --git a/tests/language/assign_instance_method_negative_test.dart b/tests/language/assign_instance_method_negative_test.dart
deleted file mode 100644
index 0e17f16..0000000
--- a/tests/language/assign_instance_method_negative_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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 {
-  A() {}
-  imethod() {
-    return 0;
-  }
-}
-
-main() {
-  var a = new A();
-  // Illegal, can't change a member method
-  a.imethod = () {
-    return 1;
-  };
-}
diff --git a/tests/language/assign_op_test.dart b/tests/language/assign_op_test.dart
deleted file mode 100644
index 9ee3eae..0000000
--- a/tests/language/assign_op_test.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing assign operators.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class AssignOpTest {
-  AssignOpTest() {}
-
-  static testMain() {
-    var b = 0;
-    b += 1;
-    Expect.equals(1, b);
-    b *= 5;
-    Expect.equals(5, b);
-    b -= 1;
-    Expect.equals(4, b);
-    b ~/= 2;
-    Expect.equals(2, b);
-
-    f = 0;
-    f += 1;
-    Expect.equals(1, f);
-    f *= 5;
-    Expect.equals(5, f);
-    f -= 1;
-    Expect.equals(4, f);
-    f ~/= 2;
-    Expect.equals(2, f);
-    f /= 4;
-    Expect.equals(.5, f);
-
-    AssignOpTest.f = 0;
-    AssignOpTest.f += 1;
-    Expect.equals(1, AssignOpTest.f);
-    AssignOpTest.f *= 5;
-    Expect.equals(5, AssignOpTest.f);
-    AssignOpTest.f -= 1;
-    Expect.equals(4, AssignOpTest.f);
-    AssignOpTest.f ~/= 2;
-    Expect.equals(2, AssignOpTest.f);
-    AssignOpTest.f /= 4;
-    Expect.equals(.5, f);
-
-    var o = new AssignOpTest();
-    o.instf = 0;
-    o.instf += 1;
-    Expect.equals(1, o.instf);
-    o.instf *= 5;
-    Expect.equals(5, o.instf);
-    o.instf -= 1;
-    Expect.equals(4, o.instf);
-    o.instf ~/= 2;
-    Expect.equals(2, o.instf);
-    o.instf /= 4;
-    Expect.equals(.5, o.instf);
-
-    var x = 0xFF;
-    x >>= 3;
-    Expect.equals(0x1F, x);
-    x <<= 3;
-    Expect.equals(0xF8, x);
-    x |= 0xF00;
-    Expect.equals(0xFF8, x);
-    x &= 0xF0;
-    Expect.equals(0xF0, x);
-    x ^= 0x11;
-    Expect.equals(0xE1, x);
-
-    var y = 100;
-    y += 1 << 3;
-    Expect.equals(108, y);
-    y *= 2 + 1;
-    Expect.equals(324, y);
-    y -= 3 - 2;
-    Expect.equals(323, y);
-    y += 3 * 4;
-    Expect.equals(335, y);
-
-    var a = [1, 2, 3];
-    var ix = 0;
-    a[ix] |= 12;
-    Expect.equals(13, a[ix]);
-  }
-
-  static var f;
-  var instf;
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    AssignOpTest.testMain();
-  }
-}
diff --git a/tests/language/assign_static_type_test.dart b/tests/language/assign_static_type_test.dart
deleted file mode 100644
index 90b653d..0000000
--- a/tests/language/assign_static_type_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-
-// This test insures that statically initialized variables, fields, and parameters
-// report static type warnings.
-
-int a = "String"; // //# 01: static type warning, dynamic type error
-
-class A {
-  static const int c = "String"; //# 02: static type warning, checked mode compile-time error
-  final int d = "String"; //# 03: static type warning, dynamic type error
-  int e = "String"; //# 04: static type warning, dynamic type error
-  A() {
-     int f = "String"; //# 05: static type warning, dynamic type error
-  }
-  method(
-      [
-     int // //# 06: static type warning
-      g = "String"]) {
-    return g;
-  }
-}
-
-int main() {
-  var w = a; //# 01: continued
-  var x;
-  x = A.c; // //# 02: continued
-  var v = new A();
-  x = v.d; // //# 03: continued
-  x = v.e; // //# 04: continued
-      x = v.method(1); //# 06: continued
-}
diff --git a/tests/language/assign_to_type_test.dart b/tests/language/assign_to_type_test.dart
deleted file mode 100644
index 7ecd74b..0000000
--- a/tests/language/assign_to_type_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify that an attempt to assign to a class, enum, typedef, or type
-// parameter produces a static warning and runtime error.
-
-import "package:expect/expect.dart";
-
-noMethod(e) => e is NoSuchMethodError;
-
-class C<T> {
-  f() {
-    Expect.throws(() => T = null, noMethod); //# 01: static type warning
-  }
-}
-
-class D {}
-
-enum E { e0 }
-
-typedef void F();
-
-main() {
-  new C<D>().f();
-  Expect.throws(() => D = null, noMethod); //# 02: static type warning
-  Expect.throws(() => E = null, noMethod); //# 03: static type warning
-  Expect.throws(() => F = null, noMethod); //# 04: static type warning
-}
diff --git a/tests/language/assign_top_method_test.dart b/tests/language/assign_top_method_test.dart
deleted file mode 100644
index d5042a7..0000000
--- a/tests/language/assign_top_method_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-method() {
-  return 0;
-}
-
-main() {
-  // Illegal, can't change a top level method
-  Expect.throws(() { method = () { return 1; }; }, // //# 01: static type warning
-                (e) => e is NoSuchMethodError); //    //# 01: continued
-}
diff --git a/tests/language/assignable_expression_test.dart b/tests/language/assignable_expression_test.dart
deleted file mode 100644
index 96ca2c6..0000000
--- a/tests/language/assignable_expression_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test to detect syntactically illegal left-hand-side (assignable)
-// expressions.
-
-class C {
-  static var static_field = 0;
-}
-
-var tl_static_var = 0;
-
-main() {
-  tl_static_var = 0;
-  (tl_static_var) = 0; //   //# 01: syntax error
-  (tl_static_var)++; //     //# 02: syntax error
-  ++(tl_static_var); //     //# 03: syntax error
-
-  C.static_field = 0;
-  (C.static_field) = 0; //  //# 11: syntax error
-  (C.static_field)++; //    //# 12: syntax error
-  ++(C.static_field); //    //# 13: syntax error
-
-  tl_static_var = [1, 2, 3];
-  tl_static_var[0] = 0;
-  (tl_static_var)[0] = 0;
-  (tl_static_var[0]) = 0; //   //# 21: syntax error
-  (tl_static_var[0])++; //     //# 22: syntax error
-  ++(tl_static_var[0]); //     //# 23: syntax error
-
-  C.static_field = [1, 2, 3];
-  (C.static_field[0]) = 0; //  //# 31: syntax error
-  (C.static_field[0])++; //    //# 32: syntax error
-  ++(C.static_field[0]); //    //# 33: syntax error
-
-  var a = 0;
-  (a) = 0; //  //# 41: syntax error
-  (a)++; //    //# 42: syntax error
-  ++(a); //    //# 43: syntax error
-
-  // Neat palindrome expression. x is assignable, ((x)) is not.
-  var funcnuf = (x) => ((x))=((x)) <= (x); // //# 50: syntax error
-}
diff --git a/tests/language/async_and_or_test.dart b/tests/language/async_and_or_test.dart
deleted file mode 100644
index 6d1e858..0000000
--- a/tests/language/async_and_or_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) {
-  return x;
-}
-
-test1() async {
-  Expect.isFalse(await confuse(false) && await confuse(false));
-  Expect.isFalse(await confuse(false) && await confuse(true));
-  Expect.isFalse(await confuse(true) && await confuse(false));
-  Expect.isTrue(await confuse(true) && await confuse(true));
-
-  Expect.isFalse(await confuse(false) || await confuse(false));
-  Expect.isTrue(await confuse(false) || await confuse(true));
-  Expect.isTrue(await confuse(true) || await confuse(false));
-  Expect.isTrue(await confuse(true) || await confuse(true));
-}
-
-String trace;
-
-traceA(x) {
-  trace += "a";
-  return x;
-}
-
-traceB(x) {
-  trace += "b";
-  return x;
-}
-
-testEvaluation(void fn()) async {
-  trace = "";
-  await fn();
-}
-
-test2() async {
-  await testEvaluation(() async {
-    Expect
-        .isFalse(await confuse(traceA(false)) && await confuse(traceB(false)));
-    Expect.equals("a", trace);
-  });
-  await testEvaluation(() async {
-    Expect.isFalse(await confuse(traceA(false)) && await confuse(traceB(true)));
-    Expect.equals("a", trace);
-  });
-  await testEvaluation(() async {
-    Expect.isFalse(await confuse(traceA(true)) && await confuse(traceB(false)));
-    Expect.equals("ab", trace);
-  });
-  await testEvaluation(() async {
-    Expect.isTrue(await confuse(traceA(true)) && await confuse(traceB(true)));
-    Expect.equals("ab", trace);
-  });
-
-  await testEvaluation(() async {
-    Expect
-        .isFalse(await confuse(traceA(false)) || await confuse(traceB(false)));
-    Expect.equals("ab", trace);
-  });
-  await testEvaluation(() async {
-    Expect.isTrue(await confuse(traceA(false)) || await confuse(traceB(true)));
-    Expect.equals("ab", trace);
-  });
-  await testEvaluation(() async {
-    Expect.isTrue(await confuse(traceA(true)) || await confuse(traceB(false)));
-    Expect.equals("a", trace);
-  });
-  await testEvaluation(() async {
-    Expect.isTrue(await confuse(traceA(true)) || await confuse(traceB(true)));
-    Expect.equals("a", trace);
-  });
-}
-
-test() async {
-  await test1();
-  await test2();
-}
-
-main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_await_catch_regression_test.dart b/tests/language/async_await_catch_regression_test.dart
deleted file mode 100644
index b83b0b1..0000000
--- a/tests/language/async_await_catch_regression_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-
-foo() async {
-  throw 42;
-}
-
-test() async {
-  var exception;
-  try {
-    await foo();
-  } catch (e) {
-    print(await (e));
-    await (exception = await e);
-  }
-  Expect.equals(42, exception);
-}
-
-main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_await_syntax_test.dart b/tests/language/async_await_syntax_test.dart
deleted file mode 100644
index b8db1ca..0000000
--- a/tests/language/async_await_syntax_test.dart
+++ /dev/null
@@ -1,301 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test async/await syntax.
-
-import 'dart:async' show Stream;
-
-var yield = 0;
-var await = 0;
-get st => new Stream.fromIterable([]);
-
-a01a() async => null; //                       //# a01a: ok
-a01b() async* => null; //                      //# a01b: syntax error
-a01c() sync* => null; //                       //# a01c: syntax error
-a01d() async => yield 5; //                    //# a01d: syntax error
-a02a() async {} //                             //# a02a: ok
-a03a() async* {} //                            //# a03a: ok
-a03b() async * {} //                           //# a03b: ok
-a04a() sync* {} //                             //# a04a: ok
-a04b() sync {} //                              //# a04b: syntax error
-a04c() sync * {} //                            //# a04c: ok
-a05a() async { await 0; } //                   //# a05a: ok
-a05b() async { //                              //# a05b: ok
-  await(a) {}; //                              //# a05b: continued
-  await(0); //                                 //# a05b: continued
-} //                                           //# a05b: continued
-a05c() { //                                    //# a05c: ok
-  await(a) {}; //                              //# a05c: continued
-  await(0); //                                 //# a05c: continued
-} //                                           //# a05c: continued
-a05d() async { //                              //# a05d: syntax error
-  await(a) {} //                               //# a05d: continued
-  await(0); //                                 //# a05d: continued
-} //                                           //# a05d: continued
-a05e() { //                                    //# a05e: ok
-  await(a) {} //                               //# a05e: continued
-  await(0); //                                 //# a05e: continued
-} //                                           //# a05e: continued
-a05f() async { //                              //# a05f: syntax error
-  var await = (a) {}; //                       //# a05f: continued
-  await(0); //                                 //# a05f: continued
-} //                                           //# a05f: continued
-a05g() async { //                              //# a05g: continued
-    yield 5; //                                //# a05g: compile-time error
-} //                                           //# a05g: continued
-a05h() async { //                              //# a05h: continued
-    yield* st; //                              //# a05h: compile-time error
-} //                                           //# a05h: continued
-a06a() async { await for (var o in st) {} } // //# a06a: ok
-a06b() sync* { await for (var o in st) {} } // //# a06b: compile-time error
-a07a() sync* { yield 0; } //                   //# a07a: ok
-a07b() sync { yield 0; } //                    //# a07b: syntax error
-a08a() sync* { yield* []; } //                 //# a08a: ok
-a08b() sync { yield 0; } //                    //# a08b: syntax error
-a09a() async* { yield 0; } //                  //# a09a: ok
-a10a() async* { yield* []; } //                //# a10a: static type warning
-
-get sync sync {} //                            //# a11a: syntax error
-get sync sync* {} //                           //# a11b: ok
-get async async {} //                          //# a11c: ok
-get async async* {} //                         //# a11d: ok
-
-get sync {} //                                 //# a12a: ok
-get sync* {} //                                //# a12b: syntax error
-get async {} //                                //# a12c: ok
-get async* {} //                               //# a12d: syntax error
-get a12e sync* => null; //                     //# a12e: syntax error
-get a12f async* => null; //                    //# a12f: syntax error
-get a12g async => null; //                     //# a12g: ok
-
-int sync; //                                   //# a13a: ok
-int sync*; //                                  //# a13b: syntax error
-int async; //                                  //# a13c: ok
-int async*; //                                 //# a13d: syntax error
-
-var sync; //                                   //# a14a: ok
-var sync*; //                                  //# a14b: syntax error
-var async; //                                  //# a14c: ok
-var async*; //                                 //# a14d: syntax error
-
-sync() {} //                                   //# a15a: ok
-sync*() {} //                                  //# a15b: syntax error
-async() {} //                                  //# a15c: ok
-async*() {} //                                 //# a15d: syntax error
-
-abstract class B {
-  b00a() async; //  //# b00a: syntax error
-  b00b() async*; // //# b00b: syntax error
-  b00c() sync*; //  //# b00c: syntax error
-  b00d() sync; //   //# b00d: syntax error
-}
-
-class C extends B {
-  C();
-
-  factory C.e1() async { return null; } //  //# e1: compile-time error
-  factory C.e2() async* { return null; } // //# e2: compile-time error
-  factory C.e3() sync* { return null; } //  //# e3: compile-time error
-  factory C.e4() async = C; //              //# e4: syntax error
-  factory C.e5() async* = C; //             //# e5: syntax error
-  factory C.e6() sync* = C; //              //# e6: syntax error
-  C.e7() async {} //                        //# e7: compile-time error
-  C.e8() async* {} //                       //# e8: compile-time error
-  C.e9() sync* {} //                        //# e9: compile-time error
-
-  b00a() {} //  //# b00a: continued
-  b00b() {} //  //# b00b: continued
-  b00c() {} //  //# b00c: continued
-  b00d() {} //  //# b00d: continued
-
-  b01a() async => null; //                       //# b01a: ok
-  b01b() async* => null; //                      //# b01b: syntax error
-  b01c() sync* => null; //                       //# b01c: syntax error
-  b02a() async {} //                             //# b02a: ok
-  b03a() async* {} //                            //# b03a: ok
-  b04a() sync* {} //                             //# b04a: ok
-  b04b() sync {} //                              //# b04b: syntax error
-  b05a() async { await 0; } //                   //# b05a: ok
-  b06a() async { await for (var o in st) {} } // //# b06a: ok
-  b06b() async { await for ( ; ; ) {} } //       //# b06b: compile-time error
-  b07a() sync* { yield 0; } //                   //# b07a: ok
-  b08a() sync* { yield* []; } //                 //# b08a: ok
-  b09a() async* { yield 0; } //                  //# b09a: ok
-  b10a() async* { yield* []; } //                //# b10a: static type warning
-  b10b() async { yield 0; } //                   //# b10b: compile-time error
-
-  get sync sync {} //                            //# b11a: syntax error
-  get sync sync* {} //                           //# b11b: ok
-  get async async {} //                          //# b11c: ok
-  get async async* {} //                         //# b11d: ok
-
-  get sync {} //                                 //# b12a: ok
-  get sync* {} //                                //# b12b: syntax error
-  get async {} //                                //# b12c: ok
-  get async* {} //                               //# b12d: syntax error
-  get b12e sync* => null; //                     //# b12e: syntax error
-  get b12f async* => null; //                    //# b12f: syntax error
-  get b12g async => null; //                     //# b12g: ok
-
-  int sync; //                                   //# b13a: ok
-  int sync*; //                                  //# b13b: syntax error
-  int async; //                                  //# b13c: ok
-  int async*; //                                 //# b13d: syntax error
-
-  var sync; //                                   //# b14a: ok
-  var sync*; //                                  //# b14b: syntax error
-  var async; //                                  //# b14c: ok
-  var async*; //                                 //# b14d: syntax error
-
-  sync() {} //                                   //# b15a: ok
-  sync*() {} //                                  //# b15b: syntax error
-  async() {} //                                  //# b15c: ok
-  async*() {} //                                 //# b15d: syntax error
-}
-
-method1() {
-  c01a() async => null; c01a(); //                       //# c01a: ok
-  c01b() async* => null; c01b(); //                      //# c01b: syntax error
-  c01c() sync* => null; c01c(); //                       //# c01c: syntax error
-  c02a() async {} c02a(); //                             //# c02a: ok
-  c03a() async* {} c03a(); //                            //# c03a: ok
-  c04a() sync* {} c04a(); //                             //# c04a: ok
-  c04b() sync {} c04b(); //                              //# c04b: syntax error
-  c05a() async { await 0; } c05a(); //                   //# c05a: ok
-  c06a() async { await for (var o in st) {} } c06a(); // //# c06a: ok
-  c07a() sync* { yield 0; } c07a(); //                   //# c07a: ok
-  c08a() sync* { yield* []; } c08a(); //                 //# c08a: ok
-  c09a() async* { yield 0; } c09a(); //                  //# c09a: ok
-  c10a() async* { yield* []; } c10a(); //                //# c10a: static type warning
-  c11a() async { yield -5; } c11a(); //                  //# c11a: compile-time error
-  c11b() async { yield* st; } c11b(); //                 //# c11b: compile-time error
-}
-
-method2() {
-  var d01a = () async => null; d01a(); //                        //# d01a: ok
-  var d01b = () async* => null; d01b(); //                       //# d01b: syntax error
-  var d01c = () sync* => null; d01c(); //                        //# d01c: syntax error
-  var d02a = () async {}; d02a(); //                             //# d02a: ok
-  var d03a = () async* {}; d03a(); //                            //# d03a: ok
-  var d04a = () sync* {}; d04a(); //                             //# d04a: ok
-  var d04b = () sync {}; d04b(); //                              //# d04b: syntax error
-  var d05a = () async { await 0; }; d05a(); //                   //# d05a: ok
-  var d06a = () async { await for (var o in st) {} }; d06a(); // //# d06a: ok
-  var d07a = () sync* { yield 0; }; d07a(); //                   //# d07a: ok
-  var d08a = () sync* { yield* []; }; d08a(); //                 //# d08a: ok
-  var d08b = () sync* { yield*0+1; }; d08b(); //                 //# d08b: static type warning
-  var d08c = () { yield*0+1; }; d08c(); //                       //# d08c: ok
-  var d09a = () async* { yield 0; }; d09a(); //                  //# d09a: ok
-  var d10a = () async* { yield* []; }; d10a(); //                //# d10a: static type warning
-}
-
-void main() {
-  var a;
-  var c = new C();
-  c = new C.e1(); //# e1: continued
-  c = new C.e2(); //# e2: continued
-  c = new C.e3(); //# e3: continued
-  c = new C.e4(); //# e4: continued
-  c = new C.e5(); //# e5: continued
-  c = new C.e6(); //# e6: continued
-  c = new C.e7(); //# e7: continued
-  c = new C.e8(); //# e8: continued
-  c = new C.e9(); //# e9: continued
-
-  a01a(); //    //# a01a: continued
-  a01b(); //    //# a01b: continued
-  a01c(); //    //# a01c: continued
-  a01d(); //    //# a01d: continued
-  a02a(); //    //# a02a: continued
-  a03a(); //    //# a03a: continued
-  a03b(); //    //# a03b: continued
-  a04a(); //    //# a04a: continued
-  a04b(); //    //# a04b: continued
-  a04c(); //    //# a04c: continued
-  a05a(); //    //# a05a: continued
-  a05b(); //    //# a05b: continued
-  a05c(); //    //# a05c: continued
-  a05d(); //    //# a05d: continued
-  a05e(); //    //# a05e: continued
-  a05f(); //    //# a05f: continued
-  a05g(); //    //# a05g: continued
-  a05h(); //    //# a05h: continued
-  a06a(); //    //# a06a: continued
-  a06b(); //    //# a06b: continued
-  a07a(); //    //# a07a: continued
-  a07b(); //    //# a07b: continued
-  a08a(); //    //# a08a: continued
-  a08b(); //    //# a08b: continued
-  a09a(); //    //# a09a: continued
-  a10a(); //    //# a10a: continued
-  a = sync; //  //# a11a: continued
-  a = sync; //  //# a11b: continued
-  a = async; // //# a11c: continued
-  a = async; // //# a11d: continued
-  a = sync; //  //# a12a: continued
-  a = sync; //  //# a12b: continued
-  a = async; // //# a12c: continued
-  a = async; // //# a12d: continued
-  a = a12e; //  //# a12e: continued
-  a = a12f; //  //# a12f: continued
-  a = a12g; //  //# a12g: continued
-  a = sync; //  //# a13a: continued
-  a = sync; //  //# a13b: continued
-  a = async; // //# a13c: continued
-  a = async; // //# a13d: continued
-  a = sync; //  //# a14a: continued
-  a = sync; //  //# a14b: continued
-  a = async; // //# a14c: continued
-  a = async; // //# a14d: continued
-  sync(); //    //# a15a: continued
-  sync(); //    //# a15b: continued
-  async(); //   //# a15c: continued
-  async(); //   //# a15d: continued
-
-  c.b00a(); //  //# b00a: continued
-  c.b00b(); //  //# b00b: continued
-  c.b00c(); //  //# b00c: continued
-  c.b00d(); //  //# b00d: continued
-  c.b01a(); //  //# b01a: continued
-  c.b01b(); //  //# b01b: continued
-  c.b01c(); //  //# b01c: continued
-  c.b02a(); //  //# b02a: continued
-  c.b03a(); //  //# b03a: continued
-  c.b04a(); //  //# b04a: continued
-  c.b04b(); //  //# b04b: continued
-  c.b05a(); //  //# b05a: continued
-  c.b06a(); //  //# b06a: continued
-  c.b06b(); //  //# b06b: continued
-  c.b07a(); //  //# b07a: continued
-  c.b08a(); //  //# b08a: continued
-  c.b09a(); //  //# b09a: continued
-  c.b10a(); //  //# b10a: continued
-  c.b10b(); //  //# b10b: continued
-  a = c.sync; //  //# b11a: continued
-  a = c.sync; //  //# b11b: continued
-  a = c.async; // //# b11c: continued
-  a = c.async; // //# b11d: continued
-  a = c.sync; //  //# b12a: continued
-  a = c.sync; //  //# b12b: continued
-  a = c.async; // //# b12c: continued
-  a = c.async; // //# b12d: continued
-  a = c.b12e; //  //# b12e: continued
-  a = c.b12f; //  //# b12f: continued
-  a = c.b12g; //  //# b12g: continued
-  a = c.sync; //  //# b13a: continued
-  a = c.sync; //  //# b13b: continued
-  a = c.async; // //# b13c: continued
-  a = c.async; // //# b13d: continued
-  a = c.sync; //  //# b14a: continued
-  a = c.sync; //  //# b14b: continued
-  a = c.async; // //# b14c: continued
-  a = c.async; // //# b14d: continued
-  c.sync(); //    //# b15a: continued
-  c.sync(); //    //# b15b: continued
-  c.async(); //   //# b15c: continued
-  c.async(); //   //# b15d: continued
-
-  method1();
-  method2();
-}
diff --git a/tests/language/async_await_test.dart b/tests/language/async_await_test.dart
deleted file mode 100644
index fe76505..0000000
--- a/tests/language/async_await_test.dart
+++ /dev/null
@@ -1,2251 +0,0 @@
-// Copyright (c) 2015, 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 async_await_test;
-
-// Use of package:unittest and package:test is deprecated in sdk/tests.
-// Do not add any more uses of this package.
-import "package:unittest/unittest.dart";
-import "dart:async";
-
-main() {
-  bool checkedMode = false;
-  assert((checkedMode = true));
-
-  group("basic", () {
-    test("async w/o await", () {
-      f() async {
-        return id(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("async waits", () {
-      // Calling an "async" function won't do anything immediately.
-      var result = [];
-      f() async {
-        result.add(1);
-        return id(42);
-      }
-
-      ;
-      var future = f();
-      result.add(0);
-      return future.whenComplete(() {
-        expect(result, equals([0, 1]));
-      });
-    });
-
-    test("async throws", () {
-      f() async {
-        throw "err";
-        return id(42);
-      }
-
-      return throwsErr(f());
-    });
-
-    test("await future", () {
-      f() async {
-        var v = await new Future.value(42);
-        return v;
-      }
-
-      ;
-      return expect42(f());
-    });
-
-    test("await value", () {
-      f() async {
-        var v = await id(42);
-        return v;
-      }
-
-      ;
-      return expect42(f());
-    });
-
-    test("await null", () {
-      f() async {
-        var v = await null;
-        expect(v, equals(null));
-      }
-
-      ;
-      return f();
-    });
-
-    test("await await", () {
-      f() async {
-        return await await new Future.value(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("await fake value future", () {
-      f() async {
-        return await new FakeValueFuture(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("await fake error future", () {
-      f() async {
-        return await new FakeErrorFuture("err");
-      }
-
-      return throwsErr(f());
-    });
-
-    test("await value is delayed", () {
-      f() async {
-        bool x = false;
-        scheduleMicrotask(() {
-          x = true;
-        });
-        var y = await true;
-        expect(x, equals(y));
-      }
-
-      return f();
-    });
-
-    test("await throw", () {
-      f() async {
-        await (throw "err"); // Check grammar: Are parentheses necessary?
-        return id(42);
-      }
-
-      return throwsErr(f());
-    });
-
-    test("throw before await", () {
-      f() async {
-        var x = throw "err";
-        await x; // Check grammar: Are parentheses necessary?
-        return id(42);
-      }
-
-      return throwsErr(f());
-    });
-
-    if (checkedMode) {
-      test("assert before await", () {
-        f(v) async {
-          assert(v == 87);
-          return await new Future.microtask(() => 42);
-        }
-
-        return f(42).then((_) {
-          fail("assert didn't throw");
-        }, onError: (e, s) {
-          expect(e is AssertionError, isTrue);
-        });
-      });
-
-      test("assert after await", () {
-        f(v) async {
-          var x = await new Future.microtask(() => 42);
-          assert(v == 87);
-          return x;
-        }
-
-        return f(42).then((_) {
-          fail("assert didn't throw");
-        }, onError: (e, s) {
-          expect(e is AssertionError, isTrue);
-        });
-      });
-    }
-
-    test("async await error", () {
-      f() async {
-        await new Future.error("err");
-        return id(42);
-      }
-
-      return throwsErr(f());
-    });
-
-    test("async flattens futures", () {
-      f() async {
-        return new Future.value(42); // Not awaited.
-      }
-
-      ;
-      return f().then((v) {
-        expect(v, equals(42)); // And not a Future with value 42.
-      });
-    });
-
-    test("async flattens futures, error", () {
-      f() async {
-        return new Future.error("err"); // Not awaited.
-      }
-
-      ;
-      return throwsErr(f());
-    });
-
-    test("await for", () {
-      f(s) async {
-        int i = 0;
-        await for (int v in s) {
-          i += v;
-        }
-        return i;
-      }
-
-      return f(mkStream()).then((v) {
-        expect(v, equals(45)); // 0 + 1 + ... + 9
-      });
-    });
-
-    test("await for w/ await", () {
-      f(s) async {
-        int i = 0;
-        await for (int v in s) {
-          i += await new Future.value(v);
-        }
-        return i;
-      }
-
-      return f(mkStream()).then((v) {
-        expect(v, equals(45)); // 0 + 1 + ... + 9
-      });
-    });
-
-    test("await for empty", () {
-      f(s) async {
-        int v = 0;
-        await for (int i in s) {
-          v += i;
-        }
-        return v;
-      }
-
-      var s = (new StreamController()..close()).stream;
-      return f(s).then((v) {
-        expect(v, equals(0));
-      });
-    });
-
-    if (checkedMode) {
-      test("await for w/ await, asseert", () {
-        f(s) async {
-          int i = 0;
-          await for (int v in s) {
-            i += await new Future.microtask(() => v);
-            assert(v < 8);
-          }
-          return i;
-        }
-
-        return f(mkStream()).then((v) {
-          fail("assert didn't throw");
-        }, onError: (e, s) {
-          expect(e is AssertionError, isTrue);
-        });
-      });
-    }
-  });
-
-  group("for", () {
-    test("await in for-loop", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 10; i++) {
-          v += await new Future.value(42);
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * id(42)));
-      });
-    });
-
-    test("await in for-init", () {
-      f() async {
-        int v = 0;
-        for (int i = await new Future.value(42); i >= 0; i -= 10) {
-          v += 10;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * 5));
-      });
-    });
-
-    test("await in for-test", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < await new Future.value(42); i += 10) {
-          v += 10;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * 5));
-      });
-    });
-
-    test("await in for-incr", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 100; i += await new Future.value(42)) {
-          v += 10;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * 3));
-      });
-    });
-
-    test("await err in for-loop", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 10; i++) {
-          v += await new Future.error("err");
-        }
-        return v;
-      }
-
-      return throwsErr(f());
-    });
-
-    test("await err in for-init", () {
-      f() async {
-        int v = 0;
-        for (int i = await new Future.error("err"); i >= 0; i -= 10) {
-          v += 10;
-        }
-        return v;
-      }
-
-      return throwsErr(f());
-    });
-
-    test("await err in for-test", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < await new Future.error("err"); i += 10) {
-          v += 10;
-        }
-        return v;
-      }
-
-      return throwsErr(f());
-    });
-
-    test("await err in for-incr", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 100; i += await new Future.error("err")) {
-          v += 10;
-        }
-        return v;
-      }
-
-      return throwsErr(f());
-    });
-
-    test("await in empty for-loop", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i > 0; i += 1) {
-          v += await new Future.value(42);
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(0));
-      });
-    });
-
-    test("await in empty for-loop 2", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i > 0; i += await new Future.value(1)) {
-          v += 1;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(0));
-      });
-    });
-
-    test("break before await in for-loop", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 10; i += 1) {
-          if (i == 2) break;
-          v += await new Future.value(42);
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 2));
-      });
-    });
-
-    test("break before await in for-loop 2", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 10; i += await new Future.value(1)) {
-          if (i == 2) break;
-          v += id(42);
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 2));
-      });
-    });
-
-    test("continue before await", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 10; i += 1) {
-          if (i == 2) continue;
-          v += await new Future.value(42);
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 9));
-      });
-    });
-
-    test("continue after await", () {
-      f() async {
-        int v = 0;
-        for (int i = 0; i < 10; i += 1) {
-          var j = await new Future.value(42);
-          if (i == 2) continue;
-          v += j;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 9));
-      });
-    });
-  });
-
-  group("while", () {
-    test("await in while-loop", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < 10) {
-          v += await new Future.value(42);
-          i++;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * id(42)));
-      });
-    });
-
-    test("await in while-test", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < await new Future.value(42)) {
-          v += 10;
-          i += 10;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * 5));
-      });
-    });
-
-    test("await err in loop", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < 10) {
-          v += await new Future.error("err");
-          i++;
-        }
-        return v;
-      }
-
-      return throwsErr(f());
-    });
-
-    test("await err in test", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < await new Future.error("err")) {
-          v += 10;
-          i += 10;
-        }
-        return v;
-      }
-
-      return throwsErr(f());
-    });
-
-    test("break before await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < 10) {
-          if (i == 2) break;
-          v += await new Future.value(42);
-          i += 1;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 2));
-      });
-    });
-
-    test("break after await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < 10) {
-          v += await new Future.value(42);
-          if (i == 2) break;
-          i += 1;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 3));
-      });
-    });
-
-    test("continue before await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < 10) {
-          i += 1;
-          if (i == 2) continue;
-          v += await new Future.value(42);
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 9));
-      });
-    });
-
-    test("continue after await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        while (i < 10) {
-          i += 1;
-          int j = await new Future.value(42);
-          if (i == 2) continue;
-          v += j;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 9));
-      });
-    });
-  });
-
-  group("do-while", () {
-    test("await in loop", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          v += await new Future.value(42);
-          i++;
-        } while (i < 10);
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * id(42)));
-      });
-    });
-
-    test("await in test", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          v += 10;
-          i += 10;
-        } while (i < await new Future.value(42));
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(10 * 5));
-      });
-    });
-
-    test("await err in loop", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          v += await new Future.error("err");
-          i++;
-        } while (i < 10);
-        return v;
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("await err in test", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          v += 10;
-          i += 10;
-        } while (i < await new Future.error("err"));
-        return v;
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("break before await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          if (i == 2) break;
-          v += await new Future.value(42);
-          i += 1;
-        } while (i < 10);
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 2));
-      });
-    });
-
-    test("break after await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          v += await new Future.value(42);
-          if (i == 2) break;
-          i += 1;
-        } while (i < 10);
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 3));
-      });
-    });
-
-    test("continue before await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          i += 1;
-          if (i == 2) continue;
-          v += await new Future.value(42);
-        } while (i < 10);
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 9));
-      });
-    });
-
-    test("continue after await", () {
-      f() async {
-        int v = 0;
-        int i = 0;
-        do {
-          i += 1;
-          int j = await new Future.value(42);
-          if (i == 2) continue;
-          v += j;
-        } while (i < 10);
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42 * 9));
-      });
-    });
-  });
-
-  group("for-in", () {
-    test("await in for-in", () {
-      f() async {
-        var v = 0;
-        for (var fut in [1, 2, 3].map((v) => new Future.value(v))) {
-          v += await fut;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(6));
-      });
-    });
-
-    test("await in for-in iterable", () {
-      f() async {
-        var v = 0;
-        for (var i in await new Future.value([1, 2, 3])) {
-          v += i;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(6));
-      });
-    });
-
-    test("await err in for-in", () {
-      f() async {
-        var v = 0;
-        for (var fut in [1, 2, 3].map(
-            (v) => (v != 1) ? new Future.value(v) : new Future.error("err"))) {
-          v += await fut;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("await err in for-in iterable", () {
-      f() async {
-        var v = 0;
-        for (var i in await new Future.error("err")) {
-          v += i;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("break before await in for-in", () {
-      f() async {
-        var v = 0;
-        for (var fut in [1, 2, 3].map((v) => new Future.value(v))) {
-          if (v == 3) break;
-          v += await fut;
-        }
-        return v;
-      }
-
-      return f().then((v) {
-        expect(v, equals(3));
-      });
-    });
-  });
-
-  group("try-catch", () {
-    test("try-no-catch", () {
-      f() async {
-        try {
-          return await id(42);
-        } catch (e) {
-          return 37;
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("await in body", () {
-      f() async {
-        try {
-          await new Future.error(42);
-        } catch (e) {
-          return e;
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("throw before await in body", () {
-      int i = id(0);
-      f() async {
-        try {
-          if (i >= 0) throw id(42);
-          return await new Future.value(10);
-        } catch (e) {
-          return e;
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("try-catch await in catch", () {
-      f() async {
-        try {
-          throw id(42);
-        } catch (e) {
-          return await new Future.value(e);
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("try-catch await error in catch", () {
-      f() async {
-        try {
-          throw id(42);
-        } catch (e) {
-          await new Future.error("err");
-        }
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("try-catch-rethrow", () {
-      f() async {
-        try {
-          await new Future.error("err");
-        } catch (e) {
-          if (e == id(42)) return;
-          rethrow;
-        }
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-  });
-
-  group("try-finally", () {
-    test("await in body", () {
-      f() async {
-        try {
-          return await new Future.value(42);
-        } finally {
-          // Don't do anything.
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("await in finally", () {
-      var x = 0;
-      f() async {
-        try {
-          return id(42);
-        } finally {
-          x = await new Future.value(37);
-        }
-      }
-
-      return f().then((v) {
-        expect(v, equals(42));
-        expect(x, equals(37));
-      });
-    });
-
-    test("await err in body", () {
-      f() async {
-        try {
-          return await new Future.error("err");
-        } finally {
-          // Don't do anything.
-        }
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("await err in finally", () {
-      f() async {
-        try {
-          return id(42);
-        } finally {
-          await new Future.error("err");
-        }
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("await err in both", () {
-      f() async {
-        try {
-          await new Future.error("not err");
-        } finally {
-          await new Future.error("err");
-        }
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-      });
-    });
-
-    test("await err in body, override in finally", () {
-      f() async {
-        try {
-          return await new Future.error("err");
-        } finally {
-          return id(42);
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("await in body, override in finally", () {
-      f() async {
-        label:
-        try {
-          return await new Future.value(37);
-        } finally {
-          break label;
-        }
-        return id(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("await, override in finally", () {
-      var x = 0;
-      f() async {
-        label:
-        try {
-          return 87;
-        } finally {
-          x = await new Future.value(37);
-          break label;
-        }
-        return id(42);
-      }
-
-      return f().then((v) {
-        expect(v, equals(42));
-        expect(x, equals(37));
-      });
-    });
-
-    test("throw in body, await, override in finally 3", () {
-      var x = 0;
-      f() async {
-        label:
-        try {
-          throw "err";
-        } finally {
-          x = await new Future.value(37);
-          break label;
-        }
-        return id(42);
-      }
-
-      return f().then((v) {
-        expect(v, equals(42));
-        expect(x, equals(37));
-      });
-    });
-
-    test("await err in body, override in finally 2", () {
-      f() async {
-        label:
-        try {
-          return await new Future.error("err");
-        } finally {
-          break label;
-        }
-        return id(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("await in body, no-exit in finally", () {
-      f() async {
-        for (int i = 0; i < 10; i++) {
-          try {
-            return await i;
-          } finally {
-            continue;
-          }
-        }
-        return id(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("no-exit after await in finally", () {
-      f() async {
-        int i = 0;
-        for (; i < 10; i++) {
-          try {
-            break;
-          } finally {
-            await new Future.value(42);
-            continue;
-          }
-        }
-        return id(i);
-      }
-
-      return f().then((v) {
-        expect(v, equals(10));
-      });
-    });
-
-    test("exit after continue, await in finally", () {
-      f() async {
-        int i = 0;
-        for (; i < 10; i++) {
-          try {
-            continue;
-          } finally {
-            await new Future.value(42);
-            break;
-          }
-        }
-        return id(i);
-      }
-
-      return f().then((v) {
-        expect(v, equals(0));
-      });
-    });
-
-    test("no-exit before await in finally 2", () {
-      f() async {
-        for (int i = 0; i < 10; i++) {
-          try {
-            return i;
-          } finally {
-            if (i >= 0) continue;
-            await new Future.value(42);
-          }
-        }
-        return id(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("no-exit after await in finally", () {
-      f() async {
-        for (int i = 0; i < 10; i++) {
-          try {
-            return i;
-          } finally {
-            await new Future.value(42);
-            continue;
-          }
-        }
-        return id(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("nested finallies", () {
-      var x = 0;
-      f() async {
-        try {
-          try {
-            return 42;
-          } finally {
-            x = await new Future.value(37);
-          }
-        } finally {
-          x += await new Future.value(37);
-        }
-      }
-
-      return f().then((v) {
-        expect(v, equals(42));
-        expect(x, equals(74));
-      });
-    });
-
-    test("nested finallies 2", () {
-      var x = 0;
-      f() async {
-        label:
-        try {
-          try {
-            break label;
-          } finally {
-            x = await new Future.value(37);
-          }
-        } finally {
-          x += await new Future.value(37);
-        }
-        return 42;
-      }
-
-      return f().then((v) {
-        expect(v, equals(42));
-        expect(x, equals(74));
-      });
-    });
-
-    test("nested finallies 3", () {
-      var x = 0;
-      f() async {
-        label:
-        try {
-          try {
-            break label;
-          } finally {
-            return await new Future.value(42);
-          }
-        } finally {
-          break label;
-        }
-        return 42;
-      }
-
-      return expect42(f());
-    });
-
-    test("nested finallies, throw", () {
-      var x = 0;
-      f() async {
-        try {
-          try {
-            throw "err";
-          } finally {
-            x = await new Future.value(37);
-          }
-        } finally {
-          x += await new Future.value(37);
-        }
-      }
-
-      return f().then((v) {
-        fail("didn't throw");
-      }, onError: (e) {
-        expect(e, equals("err"));
-        expect(x, equals(2 * 37));
-      });
-    });
-  });
-
-  group("try-catch-finally", () {
-    test("await in body", () {
-      f() async {
-        try {
-          return await new Future.value(42);
-        } catch (e) {
-          throw null;
-        } finally {
-          if (id(42) == id(10)) return 10;
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("await in catch, not hit", () {
-      f() async {
-        try {
-          return id(42);
-        } catch (e) {
-          await new Future.error("err");
-        } finally {
-          if (id(42) == id(10)) return 10;
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("await in catch, hit", () {
-      f() async {
-        try {
-          return throw id(42);
-        } catch (e) {
-          return await new Future.value(e);
-        } finally {
-          if (id(42) == id(10)) return 10;
-        }
-      }
-
-      return expect42(f());
-    });
-
-    test("await in finally", () {
-      var x = 0;
-      f() async {
-        try {
-          return id(42);
-        } catch (e) {
-          throw null;
-        } finally {
-          x = await new Future.value(37);
-          if (id(42) == id(10)) return 10;
-        }
-      }
-
-      return f().then((v) {
-        expect(v, equals(42));
-        expect(x, equals(37));
-      });
-    });
-  });
-
-  group("switch", () {
-    test("await in expression", () {
-      f(v) async {
-        switch (await new Future.value(v)) {
-          case 1:
-            return 1;
-          case 2:
-            return 42;
-          default:
-            return 3;
-        }
-        return null;
-      }
-
-      return expect42(f(2));
-    });
-
-    test("await err in expression", () {
-      f(v) async {
-        switch (await new Future.error("err")) {
-          case 1:
-            return 1;
-          case 2:
-            return 42;
-          default:
-            return 3;
-        }
-        return null;
-      }
-
-      return throwsErr(f(2));
-    });
-
-    test("await in case", () {
-      f(v) async {
-        switch (v) {
-          case 1:
-            return 1;
-          case 2:
-            return await new Future.value(42);
-          default:
-            return 3;
-        }
-        return null;
-      }
-
-      return expect42(f(2));
-    });
-
-    test("await err in case", () {
-      f(v) async {
-        switch (v) {
-          case 1:
-            return 1;
-          case 2:
-            return await new Future.error("err");
-          default:
-            return 3;
-        }
-        return null;
-      }
-
-      return throwsErr(f(2));
-    });
-
-    test("continue before await in case", () {
-      f(v) async {
-        switch (v) {
-          label:
-          case 1:
-            return 42;
-          case 2:
-            if (v <= 2) continue label;
-            return await new Future.value(10);
-          default:
-            return 3;
-        }
-        return null;
-      }
-
-      return expect42(f(2));
-    });
-
-    test("continue after await in case", () {
-      f(v) async {
-        switch (v) {
-          label:
-          case 1:
-            return 42;
-          case 2:
-            await new Future.value(10);
-            continue label;
-          default:
-            return 3;
-        }
-        return null;
-      }
-
-      return expect42(f(2));
-    });
-  });
-
-  group("if", () {
-    test("await in test", () {
-      f(v) async {
-        if (await new Future.value(v)) {
-          return 42;
-        } else {
-          return 37;
-        }
-      }
-
-      return expect42(f(true));
-    });
-
-    test("await err in test", () {
-      f(v) async {
-        if (await new Future.error("err")) {
-          return 42;
-        } else {
-          return 37;
-        }
-      }
-
-      return throwsErr(f(true));
-    });
-
-    test("await in then", () {
-      f(v) async {
-        if (v) {
-          return await new Future.value(42);
-        }
-        return 37;
-      }
-
-      return expect42(f(true));
-    });
-
-    test("await err in then", () {
-      f(v) async {
-        if (v) {
-          return await new Future.error("err");
-        }
-        return 37;
-      }
-
-      return throwsErr(f(true));
-    });
-
-    test("await in then with else", () {
-      f(v) async {
-        if (v) {
-          return await new Future.value(42);
-        } else {
-          return 87;
-        }
-        return 37;
-      }
-
-      return expect42(f(true));
-    });
-
-    test("await err in then with else", () {
-      f(v) async {
-        if (v) {
-          return await new Future.error("err");
-        } else {
-          return 87;
-        }
-        return 37;
-      }
-
-      return throwsErr(f(true));
-    });
-
-    test("await in else", () {
-      f(v) async {
-        if (v) {
-          return 37;
-        } else {
-          return await new Future.value(42);
-        }
-        return 87;
-      }
-
-      return expect42(f(false));
-    });
-
-    test("await err in else", () {
-      f(v) async {
-        if (v) {
-          return 37;
-        } else {
-          return await new Future.error("err");
-        }
-        return 87;
-      }
-
-      return throwsErr(f(false));
-    });
-
-    test("await in else-if test", () {
-      f(v) async {
-        if (v) {
-          return 37;
-        } else if (!await new Future.value(v)) {
-          return 42;
-        } else {
-          return 37;
-        }
-        return 87;
-      }
-
-      return expect42(f(false));
-    });
-
-    test("await in else-if then", () {
-      f(v) async {
-        if (v) {
-          return 37;
-        } else if (!v) {
-          return await new Future.value(42);
-        } else {
-          return 37;
-        }
-        return 87;
-      }
-
-      return expect42(f(false));
-    });
-  });
-
-  group("conditional operator", () {
-    test("await in test", () {
-      f(v) async {
-        return (await new Future.value(v)) ? 42 : 37;
-      }
-
-      return expect42(f(true));
-    });
-
-    test("await err in test", () {
-      f(v) async {
-        return (await new Future.error("err")) ? 42 : 37;
-      }
-
-      return throwsErr(f(true));
-    });
-
-    test("await in then", () {
-      f(v) async {
-        return v ? (await new Future.value(42)) : 37;
-      }
-
-      return expect42(f(true));
-    });
-
-    test("await err in then", () {
-      f(v) async {
-        return v ? (await new Future.error("err")) : 37;
-      }
-
-      return throwsErr(f(true));
-    });
-
-    test("await in else", () {
-      f(v) async {
-        return v ? 37 : (await new Future.value(42));
-      }
-
-      return expect42(f(false));
-    });
-
-    test("await err in else", () {
-      f(v) async {
-        return v ? 37 : (await new Future.error("err"));
-      }
-
-      return throwsErr(f(false));
-    });
-  });
-
-  group("async declarations", () {
-    var f42 = new Future.value(42);
-
-    // Top-level declarations or local declarations in top-level functions.
-    test("topMethod", () {
-      return expect42(topMethod(f42));
-    });
-
-    test("topArrowMethod", () {
-      return expect42(topArrowMethod(f42));
-    });
-
-    test("topGetter", () {
-      return expect42(topGetter);
-    });
-
-    test("topArrowGetter", () {
-      return expect42(topArrowGetter);
-    });
-
-    test("topLocal", () {
-      return expect42(topLocal(f42));
-    });
-
-    test("topArrowLocal", () {
-      return expect42(topArrowLocal(f42));
-    });
-
-    test("topExpression", () {
-      return expect42(topExpression(f42));
-    });
-
-    test("topArrowExpression", () {
-      return expect42(topArrowExpression(f42));
-    });
-
-    test("topVarExpression", () {
-      return expect42(topVarExpression(f42));
-    });
-
-    test("topVarArrowExpression", () {
-      return expect42(topVarArrowExpression(f42));
-    });
-
-    // Static declarations or local declarations in static functions.
-    test("staticMethod", () {
-      return expect42(Async.staticMethod(f42));
-    });
-
-    test("staticArrowMethod", () {
-      return expect42(Async.staticArrowMethod(f42));
-    });
-
-    test("staticGetter", () {
-      return expect42(Async.staticGetter);
-    });
-
-    test("staticArrowGetter", () {
-      return expect42(Async.staticArrowGetter);
-    });
-
-    test("staticLocal", () {
-      return expect42(Async.staticLocal(f42));
-    });
-
-    test("staticArrowLocal", () {
-      return expect42(Async.staticArrowLocal(f42));
-    });
-
-    test("staticExpression", () {
-      return expect42(Async.staticExpression(f42));
-    });
-
-    test("staticArrowExpression", () {
-      return expect42(Async.staticArrowExpression(f42));
-    });
-
-    test("staticVarExpression", () {
-      return expect42(Async.staticVarExpression(f42));
-    });
-
-    test("staticVarArrowExpression", () {
-      return expect42(Async.staticVarArrowExpression(f42));
-    });
-
-    // Instance declarations or local declarations in instance functions.
-    var async = new Async();
-
-    test("instanceMethod", () {
-      return expect42(async.instanceMethod(f42));
-    });
-
-    test("instanceArrowMethod", () {
-      return expect42(async.instanceArrowMethod(f42));
-    });
-
-    test("instanceGetter", () {
-      return expect42(async.instanceGetter);
-    });
-
-    test("instanceArrowGetter", () {
-      return expect42(async.instanceArrowGetter);
-    });
-
-    test("instanceLocal", () {
-      return expect42(async.instanceLocal(f42));
-    });
-
-    test("instanceArrowLocal", () {
-      return expect42(async.instanceArrowLocal(f42));
-    });
-
-    test("instanceExpression", () {
-      return expect42(async.instanceExpression(f42));
-    });
-
-    test("instanceArrowExpression", () {
-      return expect42(async.instanceArrowExpression(f42));
-    });
-
-    test("instanceVarExpression", () {
-      return expect42(async.instanceVarExpression(f42));
-    });
-
-    test("instanceVarArrowExpression", () {
-      return expect42(async.instanceVarArrowExpression(f42));
-    });
-
-    // Local functions in constructor initializer list.
-    test("initializerExpression", () {
-      var async = new Async.initializer(f42);
-      return expect42(async.initValue);
-    });
-
-    test("initializerArrowExpression", () {
-      var async = new Async.initializerArrow(f42);
-      return expect42(async.initValue);
-    });
-
-    test("async in async", () {
-      return expect42(asyncInAsync(f42));
-    });
-
-    test("sync in async", () {
-      return expect42(syncInAsync(f42));
-    });
-
-    test("async in sync", () {
-      return expect42(asyncInSync(f42));
-    });
-
-    // Equality and identity.
-    test("Identical and equals", () {
-      expect(async.instanceMethod, equals(async.instanceMethod));
-      expect(Async.staticMethod, same(Async.staticMethod));
-      expect(topMethod, same(topMethod));
-    });
-  });
-
-  group("await expression", () {
-    const c42 = 42;
-    final v42 = 42;
-
-    test("local variable", () {
-      var l42 = 42;
-      f() async {
-        return await l42;
-      }
-
-      return expect42(f());
-    });
-
-    test("parameter", () {
-      f(p) async {
-        return await p;
-      }
-
-      return expect42(f(42));
-    });
-
-    test("final local variable", () {
-      f() async {
-        return await v42;
-      }
-
-      return expect42(f());
-    });
-
-    test("const local variable", () {
-      f() async {
-        return await c42;
-      }
-
-      return expect42(f());
-    });
-
-    test("unary prefix operator", () {
-      f() async {
-        return -await -42;
-      }
-
-      return expect42(f());
-    });
-
-    test("suffix operator", () {
-      f() async {
-        var v = [42];
-        return await v[0];
-      }
-
-      return expect42(f());
-    });
-
-    test("unary postfix operator", () {
-      f() async {
-        var x = 42;
-        return await x++;
-      }
-
-      return expect42(f());
-    });
-
-    test("suffix operator + increment", () {
-      f() async {
-        var v = [42];
-        return await v[0]++;
-      }
-
-      return expect42(f());
-    });
-
-    test("suffix operator + increment 2", () {
-      f() async {
-        var v = [42];
-        return await v[await 0]++;
-      }
-
-      return expect42(f());
-    });
-
-    test("unary pre-increment operator", () {
-      f() async {
-        var x = 41;
-        return await ++x;
-      }
-
-      return expect42(f());
-    });
-
-    test("suffix operator + pre-increment", () {
-      f() async {
-        var v = [41];
-        return await ++v[0];
-      }
-
-      return expect42(f());
-    });
-
-    test("assignment operator", () {
-      f() async {
-        var x = 37;
-        return await (x = 42);
-      }
-
-      return expect42(f());
-    });
-
-    test("assignment-op operator", () {
-      f() async {
-        var x = 37;
-        return await (x += 5);
-      }
-
-      return expect42(f());
-    });
-
-    test("binary operator", () {
-      f() async {
-        return await (10 + 11) + await (10 + 11);
-      }
-
-      return expect42(f());
-    });
-
-    test("ternary operator", () {
-      f(v) async {
-        return await ((v == 10) ? new Future.value(42) : 37);
-      }
-
-      return expect42(f(10));
-    });
-
-    test("top-level function call", () {
-      f() async {
-        return await topMethod(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("static function call", () {
-      f() async {
-        return await Async.staticMethod(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("instance function call", () {
-      f() async {
-        var a = new Async();
-        return await a.instanceMethod(42);
-      }
-
-      return expect42(f());
-    });
-
-    test("top-level function call w/ await", () {
-      f() async {
-        return await topMethod(await 42);
-      }
-
-      return expect42(f());
-    });
-
-    test("static function call w/ await", () {
-      f() async {
-        return await Async.staticMethod(await 42);
-      }
-
-      return expect42(f());
-    });
-
-    test("instance function call w/ await", () {
-      f() async {
-        var a = new Async();
-        return await a.instanceMethod(await 42);
-      }
-
-      return expect42(f());
-    });
-
-    test("top-level getter call", () {
-      f() async {
-        return await topGetter;
-      }
-
-      return expect42(f());
-    });
-
-    test("static getter call", () {
-      f() async {
-        return await Async.staticGetter;
-      }
-
-      return expect42(f());
-    });
-
-    test("top-level getter call", () {
-      f() async {
-        var a = new Async();
-        return await a.instanceGetter;
-      }
-
-      return expect42(f());
-    });
-
-    if (!checkedMode) return;
-
-    test("inside assert, true", () {
-      f() async {
-        assert(await new Future.microtask(() => true));
-        return 42;
-      }
-
-      return expect42(f());
-    });
-
-    test("inside assert, false", () {
-      f() async {
-        assert(await new Future.microtask(() => false));
-        return 42;
-      }
-
-      return f().then((_) {
-        fail("assert didn't throw");
-      }, onError: (e, s) {
-        expect(e is AssertionError, isTrue);
-      });
-    });
-
-    test("inside assert, function -> false", () {
-      f() async {
-        assert(await new Future.microtask(() => false));
-        return 42;
-      }
-
-      return f().then((_) {
-        fail("assert didn't throw");
-      }, onError: (e, s) {
-        expect(e is AssertionError, isTrue);
-      });
-    });
-  });
-
-  group("syntax", () {
-    test("async as variable", () {
-      // Valid identifiers outside of async function.
-      var async = 42;
-      expect(async, equals(42));
-    });
-
-    test("await as variable", () {
-      // Valid identifiers outside of async function.
-      var await = 42;
-      expect(await, equals(42));
-    });
-
-    test("yield as variable", () {
-      // Valid identifiers outside of async function.
-      var yield = 42;
-      expect(yield, equals(42));
-    });
-  });
-}
-
-// Attempt to obfuscates value to avoid too much constant folding.
-id(v) {
-  try {
-    if (v != null) throw v;
-  } catch (e) {
-    return e;
-  }
-  return null;
-}
-
-// Create a stream for testing "async for-in".
-Stream mkStream() {
-  var c;
-  int i = 0;
-  next() {
-    c.add(i++);
-    if (i == 10) {
-      c.close();
-    } else {
-      scheduleMicrotask(next);
-    }
-  }
-
-  c = new StreamController(onListen: () {
-    scheduleMicrotask(next);
-  });
-  return c.stream;
-}
-
-// Check that future contains the error "err".
-Future throwsErr(Future future) {
-  return future.then((v) {
-    fail("didn't throw");
-  }, onError: (e) {
-    expect(e, equals("err"));
-  });
-}
-
-// Check that future contains the value 42.
-Future expect42(Future future) {
-  return future.then((v) {
-    expect(v, equals(42));
-  });
-}
-
-// Various async declarations.
-
-Future topMethod(f) async {
-  return await f;
-}
-
-Future topArrowMethod(f) async => await f;
-
-Future get topGetter async {
-  return await new Future.value(42);
-}
-
-Future get topArrowGetter async => await new Future.value(42);
-
-Future topLocal(f) {
-  local() async {
-    return await f;
-  }
-
-  return local();
-}
-
-Future topArrowLocal(f) {
-  local() async => await f;
-  return local();
-}
-
-Future topExpression(f) {
-  return () async {
-    return await f;
-  }();
-}
-
-Future topArrowExpression(f) {
-  return (() async => await f)();
-}
-
-var topVarExpression = (f) async {
-  return await f;
-};
-
-var topVarArrowExpression = (f) async => await f;
-
-class Async {
-  var initValue;
-  Async();
-
-  Async.initializer(f)
-      : initValue = (() async {
-          return await f;
-        }());
-
-  Async.initializerArrow(f) : initValue = ((() async => await f)());
-
-  /* static */
-  static Future staticMethod(f) async {
-    return await f;
-  }
-
-  static Future staticArrowMethod(f) async => await f;
-
-  static Future get staticGetter async {
-    return await new Future.value(42);
-  }
-
-  static Future get staticArrowGetter async => await new Future.value(42);
-
-  static Future staticLocal(f) {
-    local() async {
-      return await f;
-    }
-
-    return local();
-  }
-
-  static Future staticArrowLocal(f) {
-    local() async => await f;
-    return local();
-  }
-
-  static Future staticExpression(f) {
-    return () async {
-      return await f;
-    }();
-  }
-
-  static Future staticArrowExpression(f) {
-    return (() async => await f)();
-  }
-
-  static var staticVarExpression = (f) async {
-    return await f;
-  };
-
-  static var staticVarArrowExpression = (f) async => await f;
-
-  /* instance */
-  Future instanceMethod(f) async {
-    return await f;
-  }
-
-  Future instanceArrowMethod(f) async => await f;
-
-  Future get instanceGetter async {
-    return await new Future.value(42);
-  }
-
-  Future get instanceArrowGetter async => await new Future.value(42);
-
-  Future instanceLocal(f) {
-    local() async {
-      return await f;
-    }
-
-    return local();
-  }
-
-  Future instanceArrowLocal(f) {
-    local() async => await f;
-    return local();
-  }
-
-  Future instanceExpression(f) {
-    return () async {
-      return await f;
-    }();
-  }
-
-  Future instanceArrowExpression(f) {
-    return (() async => await f)();
-  }
-
-  var instanceVarExpression = (f) async {
-    return await f;
-  };
-
-  var instanceVarArrowExpression = (f) async => await f;
-}
-
-Future asyncInAsync(f) async {
-  inner(f) async {
-    return await f;
-  }
-
-  return await inner(f);
-}
-
-Future asyncInSync(f) {
-  inner(f) async {
-    return await f;
-  }
-
-  return inner(f);
-}
-
-Future syncInAsync(f) async {
-  inner(f) {
-    return f;
-  }
-
-  return await inner(f);
-}
-
-/**
- * A non-standard implementation of Future with a value.
- */
-class FakeValueFuture implements Future {
-  final _value;
-  FakeValueFuture(this._value);
-  Future then(callback(value), {Function onError}) {
-    return new Future.microtask(() => callback(_value));
-  }
-
-  Future whenComplete(callback()) {
-    return new Future.microtask(() {
-      callback();
-    });
-  }
-
-  Future catchError(Function onError, {bool test(error)}) => this;
-  Stream asStream() => (new StreamController()
-        ..add(_value)
-        ..close())
-      .stream;
-  Future timeout(Duration duration, {onTimeout}) => this;
-}
-
-typedef BinaryFunction(a, b);
-
-/**
- * A non-standard implementation of Future with an error.
- */
-class FakeErrorFuture implements Future {
-  final _error;
-  FakeErrorFuture(this._error);
-  Future then(callback(value), {Function onError}) {
-    if (onError != null) {
-      if (onError is BinaryFunction) {
-        return new Future.microtask(() => onError(_error, null));
-      }
-      return new Future.microtask(() => onError(_error));
-    }
-    return this;
-  }
-
-  Future whenComplete(callback()) {
-    return new Future.microtask(() {
-      callback();
-    }).then((_) => this);
-  }
-
-  Future catchError(Function onError, {bool test(error)}) {
-    return new Future.microtask(() {
-      if (test != null && !test(_error)) return this;
-      if (onError is BinaryFunction) {
-        return onError(_error, null);
-      }
-      return onError(_error);
-    });
-  }
-
-  Stream asStream() => (new StreamController()
-        ..addError(_error)
-        ..close())
-      .stream;
-  Future timeout(Duration duration, {onTimeout}) => this;
-}
diff --git a/tests/language/async_backwards_compatibility_1_test.dart b/tests/language/async_backwards_compatibility_1_test.dart
deleted file mode 100644
index 9390879..0000000
--- a/tests/language/async_backwards_compatibility_1_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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:async';
-import 'async_helper_lib.dart' as async;
-
-class A {
-  async.async get async => null;
-}
-
-async.async topLevel() => null;
-
-main() {
-  var a = new A();
-  var b = a.async;
-  var c = topLevel();
-}
diff --git a/tests/language/async_backwards_compatibility_2_test.dart b/tests/language/async_backwards_compatibility_2_test.dart
deleted file mode 100644
index 7fe1a9e..0000000
--- a/tests/language/async_backwards_compatibility_2_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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.
-
-int get async {
-  return 1;
-}
-
-class A {
-  async() => null;
-}
-
-main() {
-  var a = async;
-  var b = new A();
-  var c = b.async();
-}
diff --git a/tests/language/async_break_in_finally_test.dart b/tests/language/async_break_in_finally_test.dart
deleted file mode 100644
index c7af117..0000000
--- a/tests/language/async_break_in_finally_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-
-then43() async {
-  label:
-  try {
-    return await 42;
-  } finally {
-    break label;
-  }
-  return await 43;
-}
-
-then42() async {
-  label:
-  try {
-    return await 42;
-  } finally {}
-  return await 43;
-}
-
-now43() {
-  label:
-  try {
-    return 42;
-  } finally {
-    break label;
-  }
-  return 43;
-}
-
-now42() {
-  label:
-  try {
-    return 42;
-  } finally {}
-  return 43;
-}
-
-test() async {
-  Expect.equals(42, await then42());
-  Expect.equals(43, await then43());
-  Expect.equals(42, now42());
-  Expect.equals(43, now43());
-}
-
-main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_continue_label_test.dart b/tests/language/async_continue_label_test.dart
deleted file mode 100644
index c33fa53..0000000
--- a/tests/language/async_continue_label_test.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-
-// Two loop variables
-test1() async {
-  var r = 0;
-  label:
-  for (var i = 1,
-          j =
-      await //# await_in_init: ok
-              10;
-      i < 10 &&
-          j >
-      await //# await_in_condition: ok
-              -5;
-      j--,
-      i +=
-      await //# await_in_update: ok
-          1) {
-    if (i <
-        await //# await_in_body: ok
-            5 ||
-        j < -5) {
-      continue label;
-    }
-    r++;
-  }
-  Expect.equals(5, r);
-}
-
-// One loop variable
-test2() async {
-  var r = 0;
-  label:
-  for (var i =
-     await //# await_in_init: ok
-          0;
-      i <
-     await //# await_in_condition: ok
-          10;
-      i +=
-     await //# await_in_update: ok
-          1) {
-    if (i <
-        await //# await_in_body: ok
-        5) {
-      continue label;
-    }
-    r++;
-  }
-  Expect.equals(5, r);
-}
-
-// Variable not declared in initializer;
-test3() async {
-  var r = 0, i, j;
-  label:
-  for (i =
-      await //# await_in_init: ok
-          0;
-      i <
-      await //# await_in_condition: ok
-          10;
-      i +=
-      await //# await_in_update: ok
-          1) {
-    if (i <
-        await //# await_in_body: ok
-        5) {
-      continue label;
-    }
-    r++;
-  }
-  Expect.equals(5, r);
-}
-
-// Nested loop
-test4() async {
-  var r = 0;
-  label:
-  for (var i =
-      await //# await_in_init: ok
-          0;
-      i <
-      await //# await_in_condition: ok
-          10;
-      i +=
-      await //# await_in_update: ok
-          1) {
-    if (i <
-        await //# await_in_body: ok
-        5) {
-      for (int i = 0; i < 10; i++) {
-        continue label;
-      }
-    }
-    r++;
-  }
-  Expect.equals(5, r);
-}
-
-test() async {
-  await test1();
-  await test2();
-  await test3();
-  await test4();
-}
-
-main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_control_structures_test.dart b/tests/language/async_control_structures_test.dart
deleted file mode 100644
index 592ff5a..0000000
--- a/tests/language/async_control_structures_test.dart
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import 'package:expect/expect.dart';
-
-import 'dart:async';
-
-expectThenValue(future, value) {
-  Expect.isTrue(future is Future);
-  future.then((result) {
-    Expect.equals(value, result);
-  });
-}
-
-asyncIf(condition) async {
-  if (condition) {
-    return 1;
-  } else {
-    return 2;
-  }
-  // This return is never reached as the finally block returns from the
-  // function.
-  return 3;
-}
-
-asyncFor(condition) async {
-  for (int i = 0; i < 10; i++) {
-    if (i == 5 && condition) {
-      return 1;
-    }
-  }
-  return 2;
-}
-
-asyncTryCatchFinally(overrideInFinally, doThrow) async {
-  try {
-    if (doThrow) throw 444;
-    return 1;
-  } catch (e) {
-    return e;
-  } finally {
-    if (overrideInFinally) return 3;
-  }
-}
-
-asyncTryCatchLoop() async {
-  var i = 0;
-  var throws = 13;
-  while (true) {
-    try {
-      throw throws;
-    } catch (e) {
-      if (i == throws) {
-        return e;
-      }
-    } finally {
-      i++;
-    }
-  }
-}
-
-asyncImplicitReturn() async {
-  try {} catch (e) {} finally {}
-}
-
-main() {
-  var asyncReturn;
-
-  for (int i = 0; i < 10; i++) {
-    asyncReturn = asyncIf(true);
-    expectThenValue(asyncReturn, 1);
-    asyncReturn = asyncIf(false);
-    expectThenValue(asyncReturn, 2);
-
-    asyncReturn = asyncFor(true);
-    expectThenValue(asyncReturn, 1);
-    asyncReturn = asyncFor(false);
-    expectThenValue(asyncReturn, 2);
-
-    asyncReturn = asyncTryCatchFinally(true, false);
-    expectThenValue(asyncReturn, 3);
-    asyncReturn = asyncTryCatchFinally(false, false);
-    expectThenValue(asyncReturn, 1);
-    asyncReturn = asyncTryCatchFinally(true, true);
-    expectThenValue(asyncReturn, 3);
-    asyncReturn = asyncTryCatchFinally(false, true);
-    expectThenValue(asyncReturn, 444);
-    asyncReturn = asyncTryCatchLoop();
-    expectThenValue(asyncReturn, 13);
-
-    asyncReturn = asyncImplicitReturn();
-    expectThenValue(asyncReturn, null);
-  }
-}
diff --git a/tests/language/async_finally_rethrow_test.dart b/tests/language/async_finally_rethrow_test.dart
deleted file mode 100644
index 50b1cb3..0000000
--- a/tests/language/async_finally_rethrow_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-
-foo() async {
-  try {
-    await 1;
-    throw "error";
-  } on String catch (e) {
-    await 2;
-    throw e;
-  } finally {
-    await 3;
-  }
-}
-
-main() async {
-  var error = "no error";
-  try {
-    await foo();
-  } catch (e) {
-    error = e;
-  }
-  Expect.equals("error", error);
-}
diff --git a/tests/language/async_helper_lib.dart b/tests/language/async_helper_lib.dart
deleted file mode 100644
index e91efac..0000000
--- a/tests/language/async_helper_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, 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 async;
-
-class async {}
diff --git a/tests/language/async_or_generator_return_type_stacktrace_test.dart b/tests/language/async_or_generator_return_type_stacktrace_test.dart
deleted file mode 100644
index 272e110..0000000
--- a/tests/language/async_or_generator_return_type_stacktrace_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2015, 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";
-
-void badReturnTypeAsync() async {} // //# 01: static type warning
-void badReturnTypeAsyncStar() async* {} // //# 02: static type warning
-void badReturnTypeSyncStar() sync* {} // //# 03: static type warning
-
-main() {
-  try {
-    badReturnTypeAsync(); // //# 01: continued
-  } catch (e, st) {
-    Expect.isTrue(e is TypeError, "wrong exception type");
-    Expect.isTrue(
-        st.toString().contains("badReturnTypeAsync"), "missing frame");
-  }
-
-  try {
-    badReturnTypeAsyncStar(); // //# 02: continued
-  } catch (e, st) {
-    Expect.isTrue(e is TypeError, "wrong exception type");
-    Expect.isTrue(
-        st.toString().contains("badReturnTypeAsyncStar"), "missing frame");
-  }
-
-  try {
-    badReturnTypeSyncStar(); // //# 03: continued
-  } catch (e, st) {
-    Expect.isTrue(e is TypeError, "wrong exception type");
-    Expect.isTrue(
-        st.toString().contains("badReturnTypeSyncStar"), "missing frame");
-  }
-}
diff --git a/tests/language/async_regression_23058_test.dart b/tests/language/async_regression_23058_test.dart
deleted file mode 100644
index 088dac6..0000000
--- a/tests/language/async_regression_23058_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 23058.
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-class A {
-  var x = new B();
-
-  foo() async {
-    return x.foo == 2 ? 42 : x.foo;
-  }
-}
-
-class B {
-  var x = 0;
-
-  get foo {
-    if (x == -1) {
-      return 0;
-    } else {
-      return x++;
-    }
-  }
-}
-
-main() {
-  asyncStart();
-  new A().foo().then((result) {
-    Expect.equals(1, result);
-    asyncEnd();
-  });
-}
diff --git a/tests/language/async_rethrow_test.dart b/tests/language/async_rethrow_test.dart
deleted file mode 100644
index 9ed117c..0000000
--- a/tests/language/async_rethrow_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-
-const String exceptionString = "exceptionalString";
-
-throwString() async {
-  try {
-    throw exceptionString;
-  } catch (e) {
-    await 1;
-    throw e;
-  }
-}
-
-rethrowString() async {
-  try {
-    throw exceptionString;
-  } catch (e) {
-    await 1;
-    rethrow;
-  }
-}
-
-testThrow() {
-  Future f = throwString();
-  f.then((v) {
-    Expect.fail("Exception not thrown");
-  }, onError: (e) {
-    Expect.equals(exceptionString, e);
-  });
-}
-
-testRethrow() {
-  Future f = rethrowString();
-  f.then((v) {
-    Expect.fail("Exception not thrown");
-  }, onError: (e) {
-    Expect.equals(exceptionString, e);
-  });
-}
-
-main() {
-  testThrow();
-  testRethrow();
-}
diff --git a/tests/language/async_return_types_test.dart b/tests/language/async_return_types_test.dart
deleted file mode 100644
index 5e1c223..0000000
--- a/tests/language/async_return_types_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-Future foo1() async {
-  return 3;
-}
-
-Future<int> foo2() async {
-  return 3;
-}
-
-Future<int> //# wrongTypeParameter: static type warning, dynamic type error
-foo3() async {
-  return "String";
-}
-
-// Future<int, String> is treated like Future<dynamic>
-Future<int, String> //# tooManyTypeParameters: static type warning
-foo4() async {
-  return "String";
-}
-
-int //# wrongReturnType: static type warning, dynamic type error
-foo5() async {
-  return 3;
-}
-
-Future<int> foo6() async {
-  // This is fine, the future is flattened
-  return new Future<int>.value(3);
-}
-
-Future<Future<int>> //# nestedFuture: static type warning, dynamic type error
-foo7() async {
-  return new Future<int>.value(3);
-}
-
-Iterable<int> foo8() sync* {
-  yield 1;
-  // Can only have valueless return in sync* functions.
-  return
-      8 //# return_value_sync_star: compile-time error
-      ;
-}
-
-Stream<int> foo9() async* {
-  yield 1;
-  // Can only have valueless return in async* functions.
-  return
-      8 //# return_value_sync_star: compile-time error
-      ;
-}
-
-test() async {
-  Expect.equals(3, await foo1());
-  Expect.equals(3, await foo2());
-  Expect.equals("String", await foo3());
-  Expect.equals("String", await foo4());
-  Expect.equals(3, await foo5());
-  Expect.equals(3, await await foo6());
-  Expect.equals(3, await await foo7());
-  Expect.listEquals([1], foo8().toList());
-  Expect.listEquals([1], await foo9().toList());
-}
-
-main() {
-  asyncTest(test);
-}
diff --git a/tests/language/async_star_cancel_and_throw_in_finally_test.dart b/tests/language/async_star_cancel_and_throw_in_finally_test.dart
deleted file mode 100644
index cd7a68a..0000000
--- a/tests/language/async_star_cancel_and_throw_in_finally_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-// When an exception is thrown in the finally block cleaning up after a cancel,
-// the future returned from cancel should complete with an error.
-
-foo() async* {
-  try {
-    int i = 0;
-    while (true) {
-      yield i++;
-    }
-  } finally {
-    throw "Error";
-  }
-}
-
-test() async {
-  var completer = new Completer();
-  var s;
-  s = foo().listen((e) async {
-    Expect.equals(0, e);
-    try {
-      await s.cancel();
-      Expect.fail("Did not throw");
-    } catch (e) {
-      Expect.equals("Error", e);
-      completer.complete();
-    }
-  });
-  await completer.future;
-}
-
-main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_star_cancel_while_paused_test.dart b/tests/language/async_star_cancel_while_paused_test.dart
deleted file mode 100644
index b23d758..0000000
--- a/tests/language/async_star_cancel_while_paused_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// This is a regression test for issue 22853.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-main() {
-  var list = [];
-  var sync = new Sync();
-  f() async* {
-    list.add("*1");
-    yield 1;
-    await sync.wait();
-    sync.release();
-    list.add("*2");
-    yield 2;
-    list.add("*3");
-  }
-
-  ;
-  var stream = f();
-  var sub = stream.listen(list.add);
-
-  asyncStart();
-  return sync.wait().whenComplete(() {
-    Expect.listEquals(list, ["*1", 1]);
-    sub.pause();
-    return sync.wait();
-  }).whenComplete(() {
-    Expect.listEquals(list, ["*1", 1, "*2"]);
-    sub.cancel();
-    new Future.delayed(new Duration(milliseconds: 200), () {
-      // Should not have yielded 2 or added *3 while paused.
-      Expect.listEquals(list, ["*1", 1, "*2"]);
-      asyncEnd();
-    });
-  });
-}
-
-/**
- * Allows two asynchronous executions to synchronize.
- *
- * Calling [wait] and waiting for the returned future to complete will
- * wait for the other executions to call [wait] again. At that point,
- * the waiting execution is allowed to continue (the returned future completes),
- * and the more recent call to [wait] is now the waiting execution.
- */
-class Sync {
-  Completer _completer = null;
-  // Release whoever is currently waiting and start waiting yourself.
-  Future wait([v]) {
-    if (_completer != null) _completer.complete(v);
-    _completer = new Completer();
-    return _completer.future;
-  }
-
-  // Release whoever is currently waiting.
-  void release([v]) {
-    if (_completer != null) {
-      _completer.complete(v);
-      _completer = null;
-    }
-  }
-}
diff --git a/tests/language/async_star_no_cancel2_test.dart b/tests/language/async_star_no_cancel2_test.dart
deleted file mode 100644
index d98b158..0000000
--- a/tests/language/async_star_no_cancel2_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// 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.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-var events = [];
-
-var timer;
-ticker(period) async* {
-  var sc;
-  sc = new StreamController(onListen: () {
-    events.add("listen");
-    timer = new Timer.periodic(period, (_) {
-      sc.add(null);
-    });
-  }, onCancel: () {
-    events.add("cancel");
-    timer.cancel();
-  });
-
-  try {
-    var counter = 0;
-    await for (var tick in sc.stream) {
-      counter++;
-    }
-  } finally {
-    events.add("finally");
-  }
-}
-
-void main() {
-  asyncStart();
-  events.add("main");
-  final subscription =
-      ticker(const Duration(milliseconds: 20)).listen((val) {});
-
-  bool cancelFinished = false;
-  new Timer(const Duration(milliseconds: 100), () async {
-    // Despite the cancel call below, the stream doesn't stop.
-    // The async* function is not blocked at any await (since the inner timer
-    // continuously ticks), but since there/ is no yield-point in the function
-    // it won't cancel.
-    new Timer(const Duration(milliseconds: 30), () {
-      Expect.isFalse(cancelFinished);
-      Expect.listEquals(["main", "listen", "invoke cancel"], events);
-      timer.cancel();
-      asyncEnd();
-    });
-
-    events.add("invoke cancel");
-    await subscription.cancel();
-    // This line should never be reached, since the cancel-future doesn't
-    // complete.
-    cancelFinished = true;
-  });
-}
diff --git a/tests/language/async_star_no_cancel_test.dart b/tests/language/async_star_no_cancel_test.dart
deleted file mode 100644
index 453005f..0000000
--- a/tests/language/async_star_no_cancel_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-var events = [];
-
-ticker() async* {
-  var sc;
-  var sentTickCount = 0;
-  sc = new StreamController(onListen: () {
-    events.add("listen");
-  }, onCancel: () {
-    events.add("cancel");
-  });
-
-  try {
-    var counter = 0;
-    await for (var tick in sc.stream) {
-      counter++;
-    }
-  } finally {
-    events.add("finally");
-  }
-}
-
-void main() {
-  asyncStart();
-  events.add("main");
-  final subscription = ticker().listen((val) {});
-
-  bool cancelFinished = false;
-  // Cancel the subscription.
-  // The async* function is blocked on an `await` (the inner stream) and won't
-  // be able to complete.
-  Timer.run(() {
-    events.add("invoke cancel");
-    subscription.cancel().then((_) => cancelFinished = true);
-  });
-
-  new Timer(const Duration(milliseconds: 100), () {
-    Expect.isFalse(cancelFinished);
-    Expect.listEquals(["main", "listen", "invoke cancel"], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/language/async_star_pause_test.dart b/tests/language/async_star_pause_test.dart
deleted file mode 100644
index d8cabd6..0000000
--- a/tests/language/async_star_pause_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2015, 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 async_star_pause_test;
-
-import "package:unittest/unittest.dart";
-import "dart:async";
-
-main() {
-  test("await for pauses stream during body", () async {
-    // Assumes await-for uses streamIterator.
-    var log = [];
-    var s = () async* {
-      for (int i = 0; i < 3; i++) {
-        log.add("$i-");
-        yield i;
-        // Should pause here until next iteration of await-for loop.
-        log.add("$i+");
-      }
-    }();
-    await for (var i in s) {
-      log.add("$i?");
-      await nextMicrotask();
-      log.add("$i!");
-    }
-    expect(log, [
-      "0-",
-      "0?",
-      "0!",
-      "0+",
-      "1-",
-      "1?",
-      "1!",
-      "1+",
-      "2-",
-      "2?",
-      "2!",
-      "2+"
-    ]);
-  });
-}
-
-Future nextMicrotask() => new Future.microtask(() {});
diff --git a/tests/language/async_star_regression_2238_test.dart b/tests/language/async_star_regression_2238_test.dart
deleted file mode 100644
index 9cfffa6..0000000
--- a/tests/language/async_star_regression_2238_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// This is a regression test for issue 2238
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-main() {
-  f() async* {
-    label1:
-    label2:
-    yield 0;
-  }
-
-  asyncStart();
-  f().toList().then((list) {
-    Expect.listEquals([0], list);
-    asyncEnd();
-  });
-}
diff --git a/tests/language/async_star_regression_23116_test.dart b/tests/language/async_star_regression_23116_test.dart
deleted file mode 100644
index d1c6390..0000000
--- a/tests/language/async_star_regression_23116_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for https://code.google.com/p/dart/issues/detail?id=23116
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-import 'dart:async';
-
-Stream<int> foo(Completer completer, Future future) async* {
-  completer.complete(100);
-  int x = await future;
-  Expect.equals(42, x);
-}
-
-test() async {
-  Completer completer1 = new Completer();
-  Completer completer2 = new Completer();
-  StreamSubscription s = foo(completer1, completer2.future).listen((v) => null);
-  await completer1.future;
-  // At this moment foo is waiting on the given future.
-  s.pause();
-  // Ensure that execution of foo is not resumed - the future is not completed
-  // yet.
-  s.resume();
-  completer2.complete(42);
-}
-
-main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_star_regression_fisk_test.dart b/tests/language/async_star_regression_fisk_test.dart
deleted file mode 100644
index 6651c92..0000000
--- a/tests/language/async_star_regression_fisk_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// This test may crash dart2js.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-main() {
-  var res = [];
-  fisk() async* {
-    res.add("+fisk");
-    try {
-      for (int i = 0; i < 2; i++) {
-        yield await new Future.microtask(() => i);
-      }
-    } finally {
-      res.add("-fisk");
-    }
-  }
-
-  fugl(int count) async {
-    res.add("fisk $count");
-    try {
-      await for (int i in fisk().take(count)) res.add(i);
-    } finally {
-      res.add("done");
-    }
-  }
-
-  asyncStart();
-  fugl(3)
-      .whenComplete(() => fugl(2))
-      .whenComplete(() => fugl(1))
-      .whenComplete(() {
-    Expect.listEquals([
-      "fisk 3",
-      "+fisk",
-      0,
-      1,
-      "-fisk",
-      "done",
-      "fisk 2",
-      "+fisk",
-      0,
-      1,
-      "-fisk",
-      "done",
-      "fisk 1",
-      "+fisk",
-      0,
-      "-fisk",
-      "done"
-    ], res);
-    asyncEnd();
-  });
-}
diff --git a/tests/language/async_star_stream_take_test.dart b/tests/language/async_star_stream_take_test.dart
deleted file mode 100644
index 8fd3a77..0000000
--- a/tests/language/async_star_stream_take_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-Stream makeStream(int n) async* {
-  for (int i = 0; i < n; i++) yield i;
-}
-
-main() {
-  f(Stream s) async {
-    var r = 0;
-    await for (var v in s.take(5)) r += v;
-    return r;
-  }
-
-  asyncStart();
-  f(makeStream(10)).then((v) {
-    Expect.equals(10, v);
-    asyncEnd();
-  });
-}
diff --git a/tests/language/async_star_take_reyield_test.dart b/tests/language/async_star_take_reyield_test.dart
deleted file mode 100644
index eede029..0000000
--- a/tests/language/async_star_take_reyield_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-expectList(stream, list) {
-  return stream.toList().then((v) {
-    Expect.listEquals(v, list);
-  });
-}
-
-Stream makeStream(int n) async* {
-  for (int i = 0; i < n; i++) yield i;
-}
-
-main() {
-  fivePartialSums(Stream s) async* {
-    var r = 0;
-    await for (var v in s.take(5)) yield r += v;
-  }
-
-  asyncStart();
-  expectList(fivePartialSums(makeStream(10)), [0, 1, 3, 6, 10])
-      .then(asyncSuccess);
-}
diff --git a/tests/language/async_star_test.dart b/tests/language/async_star_test.dart
deleted file mode 100644
index 691890f..0000000
--- a/tests/language/async_star_test.dart
+++ /dev/null
@@ -1,886 +0,0 @@
-// Copyright (c) 2015, 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 async_star_test;
-
-import "package:unittest/unittest.dart";
-import "dart:async";
-
-main() {
-  group("basic", () {
-    test("empty", () {
-      f() async* {}
-      return f().toList().then((v) {
-        expect(v, equals([]));
-      });
-    });
-
-    test("single", () {
-      f() async* {
-        yield 42;
-      }
-
-      return f().toList().then((v) {
-        expect(v, equals([42]));
-      });
-    });
-
-    test("call delays", () {
-      var list = [];
-      f() async* {
-        list.add(1);
-        yield 2;
-      }
-
-      var res = f().forEach(list.add);
-      list.add(0);
-      return res.whenComplete(() {
-        expect(list, equals([0, 1, 2]));
-      });
-    });
-
-    test("throws", () {
-      f() async* {
-        yield 1;
-        throw 2;
-      }
-
-      var completer = new Completer();
-      var list = [];
-      f().listen(list.add,
-          onError: (v) => list.add("$v"), onDone: completer.complete);
-      return completer.future.whenComplete(() {
-        expect(list, equals([1, "2"]));
-      });
-    });
-
-    test("multiple", () {
-      f() async* {
-        for (int i = 0; i < 10; i++) {
-          yield i;
-        }
-      }
-
-      return expectList(f(), new List.generate(10, id));
-    });
-
-    test("allows await", () {
-      f() async* {
-        var x = await new Future.value(42);
-        yield x;
-        x = await new Future.value(42);
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("allows await in loop", () {
-      f() async* {
-        for (int i = 0; i < 10; i++) {
-          yield await i;
-        }
-      }
-
-      return expectList(f(), new List.generate(10, id));
-    });
-
-    test("allows yield*", () {
-      f() async* {
-        yield* new Stream.fromIterable([1, 2, 3]);
-      }
-
-      return expectList(f(), [1, 2, 3]);
-    });
-
-    test("allows yield* of async*", () {
-      f(n) async* {
-        yield n;
-        if (n == 0) return;
-        yield* f(n - 1);
-        yield n;
-      }
-
-      return expectList(f(3), [3, 2, 1, 0, 1, 2, 3]);
-    });
-
-    test("Cannot yield* non-stream", () {
-      f(s) async* {
-        yield* s;
-      }
-
-      return f(42).transform(getErrors).single.then((v) {
-        // Not implementing Stream.
-        expect(v is Error, isTrue);
-      });
-    });
-
-    test("Cannot yield* non-stream", () {
-      f(s) async* {
-        yield* s;
-      }
-
-      return f(new NotAStream()).transform(getErrors).single.then((v) {
-        // Not implementing Stream.
-        expect(v is Error, isTrue);
-      });
-    });
-  });
-
-  group("yield statement context", () {
-    test("plain", () {
-      f() async* {
-        yield 0;
-      }
-
-      return expectList(f(), [0]);
-    });
-
-    test("if-then-else", () {
-      f(b) async* {
-        if (b)
-          yield 0;
-        else
-          yield 1;
-      }
-
-      return expectList(f(true), [0]).whenComplete(() {
-        expectList(f(false), [1]);
-      });
-    });
-
-    test("block", () {
-      f() async* {
-        yield 0;
-        {
-          yield 1;
-        }
-        yield 2;
-      }
-
-      return expectList(f(), [0, 1, 2]);
-    });
-
-    test("labeled", () {
-      f() async* {
-        label1:
-        yield 0;
-      }
-
-      return expectList(f(), [0]);
-    });
-
-    test("for-loop", () {
-      f() async* {
-        for (int i = 0; i < 3; i++) yield i;
-      }
-
-      return expectList(f(), [0, 1, 2]);
-    });
-
-    test("for-in-loop", () {
-      f() async* {
-        for (var i in [0, 1, 2]) yield i;
-      }
-
-      return expectList(f(), [0, 1, 2]);
-    });
-
-    test("await for-in-loop", () {
-      f() async* {
-        await for (var i in new Stream.fromIterable([0, 1, 2])) yield i;
-      }
-
-      return expectList(f(), [0, 1, 2]);
-    });
-
-    test("while-loop", () {
-      f() async* {
-        int i = 0;
-        while (i < 3) yield i++;
-      }
-
-      return expectList(f(), [0, 1, 2]);
-    });
-
-    test("do-while-loop", () {
-      f() async* {
-        int i = 0;
-        do yield i++; while (i < 3);
-      }
-
-      return expectList(f(), [0, 1, 2]);
-    });
-
-    test("try-catch-finally", () {
-      f() async* {
-        try {
-          yield 0;
-        } catch (e) {
-          yield 1;
-        } finally {
-          yield 2;
-        }
-      }
-
-      return expectList(f(), [0, 2]);
-    });
-
-    test("try-catch-finally 2", () {
-      f() async* {
-        try {
-          yield throw 0;
-        } catch (e) {
-          yield 1;
-        } finally {
-          yield 2;
-        }
-      }
-
-      return expectList(f(), [1, 2]);
-    });
-
-    test("switch-case", () {
-      f(v) async* {
-        switch (v) {
-          case 0:
-            yield 0;
-            continue label1;
-          label1:
-          case 1:
-            yield 1;
-            break;
-          default:
-            yield 2;
-        }
-      }
-
-      return expectList(f(0), [0, 1]).whenComplete(() {
-        return expectList(f(1), [1]);
-      }).whenComplete(() {
-        return expectList(f(2), [2]);
-      });
-    });
-
-    test("dead-code return", () {
-      f() async* {
-        return;
-        yield 1;
-      }
-
-      return expectList(f(), []);
-    });
-
-    test("dead-code throw", () {
-      f() async* {
-        try {
-          throw 0;
-          yield 1;
-        } catch (_) {}
-      }
-
-      return expectList(f(), []);
-    });
-
-    test("dead-code break", () {
-      f() async* {
-        while (true) {
-          break;
-          yield 1;
-        }
-      }
-
-      return expectList(f(), []);
-    });
-
-    test("dead-code break 2", () {
-      f() async* {
-        label:
-        {
-          break label;
-          yield 1;
-        }
-      }
-
-      return expectList(f(), []);
-    });
-
-    test("dead-code continue", () {
-      f() async* {
-        do {
-          continue;
-          yield 1;
-        } while (false);
-      }
-
-      return expectList(f(), []);
-    });
-  });
-
-  group("yield expressions", () {
-    test("local variable", () {
-      f() async* {
-        var x = 42;
-        yield x;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("constant variable", () {
-      f() async* {
-        const x = 42;
-        yield x;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("function call", () {
-      g() => 42;
-      f() async* {
-        yield g();
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("unary operator", () {
-      f() async* {
-        var x = -42;
-        yield -x;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("binary operator", () {
-      f() async* {
-        var x = 21;
-        yield x + x;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("ternary operator", () {
-      f() async* {
-        var x = 21;
-        yield x == 21 ? x + x : x;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("suffix post-increment", () {
-      f() async* {
-        var x = 42;
-        yield x++;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("suffix pre-increment", () {
-      f() async* {
-        var x = 41;
-        yield ++x;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("assignment", () {
-      f() async* {
-        var x = 37;
-        yield x = 42;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("assignment op", () {
-      f() async* {
-        var x = 41;
-        yield x += 1;
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("await", () {
-      f() async* {
-        yield await new Future.value(42);
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("index operator", () {
-      f() async* {
-        var x = [42];
-        yield x[0];
-      }
-
-      return expectList(f(), [42]);
-    });
-
-    test("function expression block", () {
-      var o = new Object();
-      f() async* {
-        yield () {
-          return o;
-        };
-      }
-
-      return f().first.then((v) {
-        expect(v(), same(o));
-      });
-    });
-
-    test("function expression arrow", () {
-      var o = new Object();
-      f() async* {
-        yield () => o;
-      }
-
-      return f().first.then((v) {
-        expect(v(), same(o));
-      });
-    });
-
-    test("function expression block async", () {
-      var o = new Object();
-      f() async* {
-        yield () async {
-          return o;
-        };
-      }
-
-      return f().first.then((v) => v()).then((v) {
-        expect(v, same(o));
-      });
-    });
-
-    test("function expression arrow async", () {
-      var o = new Object();
-      f() async* {
-        yield () async => o;
-      }
-
-      return f().first.then((v) => v()).then((v) {
-        expect(v, same(o));
-      });
-    });
-
-    test("function expression block async*", () {
-      var o = new Object();
-      f() async* {
-        yield () async* {
-          yield o;
-        };
-      }
-
-      return f().first.then((v) => v().first).then((v) {
-        expect(v, same(o));
-      });
-    });
-  });
-
-  group("loops", () {
-    test("simple yield", () {
-      f() async* {
-        for (int i = 0; i < 3; i++) {
-          yield i;
-        }
-      }
-
-      return expectList(f(), [0, 1, 2]);
-    });
-
-    test("yield in double loop", () {
-      f() async* {
-        for (int i = 0; i < 3; i++) {
-          for (int j = 0; j < 2; j++) {
-            yield i * 2 + j;
-          }
-        }
-      }
-
-      return expectList(f(), [0, 1, 2, 3, 4, 5]);
-    });
-
-    test("yield in try body", () {
-      var list = [];
-      f() async* {
-        for (int i = 0; i < 3; i++) {
-          try {
-            yield i;
-          } finally {
-            list.add("$i");
-          }
-        }
-      }
-
-      return expectList(f(), [0, 1, 2]).whenComplete(() {
-        expect(list, equals(["0", "1", "2"]));
-      });
-    });
-
-    test("yield in catch", () {
-      var list = [];
-      f() async* {
-        for (int i = 0; i < 3; i++) {
-          try {
-            throw i;
-          } catch (e) {
-            yield e;
-          } finally {
-            list.add("$i");
-          }
-        }
-      }
-
-      return expectList(f(), [0, 1, 2]).whenComplete(() {
-        expect(list, equals(["0", "1", "2"]));
-      });
-    });
-
-    test("yield in finally", () {
-      var list = [];
-      f() async* {
-        for (int i = 0; i < 3; i++) {
-          try {
-            throw i;
-          } finally {
-            yield i;
-            list.add("$i");
-            continue;
-          }
-        }
-      }
-
-      return expectList(f(), [0, 1, 2]).whenComplete(() {
-        expect(list, equals(["0", "1", "2"]));
-      });
-    });
-
-    test("keep yielding after cancel", () {
-      f() async* {
-        for (int i = 0; i < 10; i++) {
-          try {
-            yield i;
-          } finally {
-            continue;
-          }
-        }
-      }
-
-      return expectList(f().take(3), [0, 1, 2]);
-    });
-  });
-
-  group("canceling", () {
-    // Stream.take(n) automatically cancels after seeing the n'th value.
-
-    test("cancels at yield", () {
-      Completer exits = new Completer();
-      var list = [];
-      f() async* {
-        try {
-          list.add(0);
-          yield list.add(1);
-          list.add(2);
-        } finally {
-          exits.complete(3);
-        }
-      }
-
-      // No events must be fired synchronously in response to a listen.
-      var subscription = f().listen((v) {
-        fail("Received event $v");
-      }, onDone: () {
-        fail("Received done");
-      });
-      // No events must be delivered after a cancel.
-      subscription.cancel();
-      return exits.future.then((v) {
-        expect(v, equals(3));
-        expect(list, equals([0, 1]));
-      });
-    });
-
-    test("does cancel eventually", () {
-      var exits = new Completer();
-      var list = [];
-      f() async* {
-        int i = 0;
-        try {
-          while (true) yield i++;
-        } finally {
-          list.add("a");
-          exits.complete(i);
-        }
-      }
-
-      return expectList(f().take(5), [0, 1, 2, 3, 4])
-          .then((_) => exits.future)
-          .then((v) {
-        expect(v, greaterThan(4));
-        expect(list, ["a"]);
-      });
-    });
-
-    group("at index", () {
-      f() async* {
-        try {
-          yield await new Future.microtask(() => 1);
-        } finally {
-          try {
-            yield await new Future.microtask(() => 2);
-          } finally {
-            yield await new Future.microtask(() => 3);
-          }
-        }
-      }
-
-      test("- all, sanity check", () {
-        return expectList(f(), [1, 2, 3]);
-      });
-      test("after end", () {
-        return expectList(f().take(4), [1, 2, 3]);
-      });
-      test("at end", () {
-        return expectList(f().take(3), [1, 2, 3]);
-      });
-      test("before end", () {
-        return expectList(f().take(2), [1, 2]);
-      });
-      test("early", () {
-        return expectList(f().take(1), [1]);
-      });
-      test("at start", () {
-        return expectList(f().take(0), []);
-      });
-    });
-  });
-
-  group("pausing", () {
-    test("pauses execution at yield for at least a microtask", () {
-      var list = [];
-      f() async* {
-        list.add(1);
-        yield 2;
-        list.add(3);
-        yield 4;
-        list.add(5);
-      }
-
-      var done = new Completer();
-      var sub = f().listen((v) {
-        if (v == 2) {
-          expect(list, equals([1]));
-        } else if (v == 4) {
-          expect(list, equals([1, 3]));
-        } else {
-          fail("Unexpected value $v");
-        }
-      }, onDone: () {
-        expect(list, equals([1, 3, 5]));
-        done.complete();
-      });
-      return done.future;
-    });
-
-    test("pause stops execution at yield", () {
-      var list = [];
-      f() async* {
-        list.add(1);
-        yield 2;
-        list.add(3);
-        yield 4;
-        list.add(5);
-      }
-
-      var done = new Completer();
-      var sub;
-      sub = f().listen((v) {
-        if (v == 2) {
-          expect(list, equals([1]));
-          sub.pause();
-          new Timer(MS * 300, () {
-            expect(list.length, lessThan(3));
-            sub.resume();
-          });
-        } else if (v == 4) {
-          expect(list, equals([1, 3]));
-        } else {
-          fail("Unexpected value $v");
-        }
-      }, onDone: () {
-        expect(list, equals([1, 3, 5]));
-        done.complete();
-      });
-      return done.future;
-    });
-
-    test("pause stops execution at yield 2", () {
-      var list = [];
-      f() async* {
-        int i = 0;
-        while (true) {
-          yield i;
-          list.add(i);
-          i++;
-        }
-      }
-
-      int expected = 0;
-      var done = new Completer();
-      var sub;
-      sub = f().listen((v) {
-        expect(v, equals(expected++));
-        if (v % 5 == 0) {
-          sub.pause(new Future.delayed(MS * 300));
-        } else if (v == 17) {
-          sub.cancel();
-          done.complete();
-        }
-      }, onDone: () {
-        fail("Unexpected done!");
-      });
-      return done.future.whenComplete(() {
-        expect(list.length == 18 || list.length == 19, isTrue);
-      });
-    });
-  });
-
-  group("await for", () {
-    mkStream(int n) async* {
-      for (int i = 0; i < n; i++) yield i;
-    }
-
-    test("simple stream", () {
-      f(s) async {
-        var r = 0;
-        await for (var v in s) r += v;
-        return r;
-      }
-
-      return f(mkStream(5)).then((v) {
-        expect(v, equals(10));
-      });
-    });
-
-    test("simple stream, await", () {
-      f(s) async {
-        var r = 0;
-        await for (var v in s) r += await new Future.microtask(() => v);
-        return r;
-      }
-
-      return f(mkStream(5)).then((v) {
-        expect(v, equals(10));
-      });
-    });
-
-    test("simple stream reyield", () {
-      f(s) async* {
-        var r = 0;
-        await for (var v in s) yield r += v;
-      }
-
-      return expectList(f(mkStream(5)), [0, 1, 3, 6, 10]);
-    });
-
-    test("simple stream, await, reyield", () {
-      f(s) async* {
-        var r = 0;
-        await for (var v in s) yield r += await new Future.microtask(() => v);
-      }
-
-      return expectList(f(mkStream(5)), [0, 1, 3, 6, 10]);
-    });
-
-    test("nested", () {
-      f() async {
-        var r = 0;
-        await for (var i in mkStream(5)) {
-          await for (var j in mkStream(3)) {
-            r += i * j;
-          }
-        }
-        return r;
-      }
-
-      return f().then((v) {
-        expect(v, equals((1 + 2 + 3 + 4) * (1 + 2)));
-      });
-    });
-
-    test("nested, await", () {
-      f() async {
-        var r = 0;
-        await for (var i in mkStream(5)) {
-          await for (var j in mkStream(3)) {
-            r += await new Future.microtask(() => i * j);
-          }
-        }
-        return r;
-      }
-
-      return f().then((v) {
-        expect(v, equals((1 + 2 + 3 + 4) * (1 + 2)));
-      });
-    });
-
-    test("nested, await * 2", () {
-      f() async {
-        var r = 0;
-        await for (var i in mkStream(5)) {
-          var ai = await new Future.microtask(() => i);
-          await for (var j in mkStream(3)) {
-            r += await new Future.microtask(() => ai * j);
-          }
-        }
-        return r;
-      }
-
-      return f().then((v) {
-        expect(v, equals((1 + 2 + 3 + 4) * (1 + 2)));
-      });
-    });
-  });
-}
-
-// Obscuring identity function.
-id(x) {
-  try {
-    if (x != null) throw x;
-  } catch (e) {
-    return e;
-  }
-  return null;
-}
-
-expectList(stream, list) {
-  return stream.toList().then((v) {
-    expect(v, equals(list));
-  });
-}
-
-const MS = const Duration(milliseconds: 1);
-
-var getErrors = new StreamTransformer.fromHandlers(handleData: (data, sink) {
-  fail("Unexpected value");
-}, handleError: (e, s, sink) {
-  sink.add(e);
-}, handleDone: (sink) {
-  sink.close();
-});
-
-class NotAStream {
-  listen(oData, {onError, onDone, cancelOnError}) {
-    fail("Not implementing Stream.");
-  }
-}
diff --git a/tests/language/async_switch_test.dart b/tests/language/async_switch_test.dart
deleted file mode 100644
index dc9bf75..0000000
--- a/tests/language/async_switch_test.dart
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-foo1(a) async {
-  int k = 0;
-  switch (a) {
-    case 1:
-      await 3;
-      k += 1;
-      break;
-    case 2:
-      k += a;
-      return k + 2;
-    default: k = 2; //# withDefault: ok
-  }
-  return k;
-}
-
-foo2(a) async {
-  int k = 0;
-  switch (await a) {
-    case 1:
-      await 3;
-      k += 1;
-      break;
-    case 2:
-      k += await a;
-      return k + 2;
-    default: k = 2; //# withDefault: ok
-  }
-  return k;
-}
-
-foo3(a) async {
-  int k = 0;
-  switch (a) {
-    case 1:
-      k += 1;
-      break;
-    case 2:
-      k += a;
-      return k + 2;
-    default: k = 2; //# withDefault: ok
-  }
-  return k;
-}
-
-foo4(value) async {
-  int k = 0;
-  switch (await value) {
-    case 1:
-      k += 1;
-      break;
-    case 2:
-      k += 2;
-      return 2 + k;
-    default: k = 2; //# withDefault: ok
-  }
-  return k;
-}
-
-futureOf(a) async => await a;
-
-test() async {
-  Expect.equals(1, await foo1(1));
-  Expect.equals(4, await foo1(2));
-  Expect.equals(2, await foo1(3)); //# withDefault: ok
-  Expect.equals(0, await foo1(3)); //# none: ok
-  Expect.equals(1, await foo2(futureOf(1)));
-  Expect.equals(4, await foo2(futureOf(2)));
-  Expect.equals(2, await foo2(futureOf(3))); //# withDefault: ok
-  Expect.equals(0, await foo2(futureOf(3))); //# none: ok
-  Expect.equals(1, await foo3(1));
-  Expect.equals(4, await foo3(2));
-  Expect.equals(2, await foo3(3)); //# withDefault: ok
-  Expect.equals(0, await foo3(3)); //# none: ok
-  Expect.equals(1, await foo4(futureOf(1)));
-  Expect.equals(4, await foo4(futureOf(2)));
-  Expect.equals(2, await foo4(futureOf(3))); //# withDefault: ok
-  Expect.equals(0, await foo4(futureOf(3))); //# none: ok
-}
-
-void main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_test.dart b/tests/language/async_test.dart
deleted file mode 100644
index 89f2625..0000000
--- a/tests/language/async_test.dart
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2014, 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';
-
-import 'dart:async';
-
-topLevelFunction() async {}
-
-Future<int> topLevelWithParameter(int a) async {
-  return 7 + a;
-}
-
-int //# type-mismatch2: static type warning, dynamic type error
-topLevelWithParameterWrongType(int a) async {
-  return 7 + a;
-}
-
-var what = 'async getter';
-Future<String> get topLevelGetter async {
-  return 'I want to be an ${what}';
-}
-
-class A {
-  static int staticVar = 1;
-
-  static staticMethod(int param) async => staticVar + param;
-  static get staticGetter async => staticVar + 3;
-
-  int _x;
-  A(this._x);
-
-  A.fail() async; // //# constructor2: syntax error
-  factory A.create() async {return null; } //# constructor3: compile-time error
-
-  int someMethod(int param1, int param2, int param3) async => _x + param2; //# type-mismatch3: static type warning, dynamic type error
-  int get getter async { return 5 + _x; } //# type-mismatch4: static type warning, dynamic type error
-  operator +(A other) async {
-    return new A(_x + other._x);
-  }
-
-  get value => _x;
-}
-
-class B {
-  final _y;
-  const B._internal(this._y);
-  const factory B.createConst(int y) async = A._internal; // //# constructor4: syntax error
-
-  B() : _y = null;
-
-  set dontDoThat(value) async {} // //# setter1: compile-time error
-}
-
-main() {
-  var asyncReturn;
-
-  asyncReturn = topLevelFunction();
-  Expect.isTrue(asyncReturn is Future);
-
-  int a1 = topLevelWithParameter(2); // //# type-mismatch1: static type warning, dynamic type error
-  int a2 = topLevelWithParameterWrongType(2); // //# type-mismatch2: continued
-  asyncReturn = topLevelWithParameter(4);
-  Expect.isTrue(asyncReturn is Future);
-  asyncReturn.then((int result) => Expect.equals(result, 11));
-
-  asyncReturn = topLevelGetter;
-  Expect.isTrue(asyncReturn is Future);
-  asyncReturn.then((String result) =>
-      Expect.stringEquals(result, 'I want to be an async getter'));
-
-  asyncReturn = A.staticMethod(2);
-  Expect.isTrue(asyncReturn is Future);
-  asyncReturn.then((int result) => Expect.equals(result, 3));
-
-  asyncReturn = A.staticGetter;
-  Expect.isTrue(asyncReturn is Future);
-  asyncReturn.then((int result) => Expect.equals(result, 4));
-
-  A a = new A(13);
-
-  asyncReturn = a.someMethod(1,2,3); // //# type-mismatch3: continued
-  Expect.isTrue(asyncReturn is Future); // //# type-mismatch3: continued
-  asyncReturn.then((int result) => Expect.equals(result, 15)); // //# type-mismatch3: continued
-
-  asyncReturn = a.getter; // //# type-mismatch4: continued
-  Expect.isTrue(asyncReturn is Future); // //# type-mismatch4: continued
-  asyncReturn.then((int result) => Expect.equals(result, 18)); // //# type-mismatch4: continued
-
-  var b = new A(9);
-  asyncReturn = a + b;
-  Expect.isTrue(asyncReturn is Future);
-  asyncReturn.then((A result) => Expect.equals(result.value, 22));
-
-  var foo = 17;
-  bar(int p1, p2) async {
-    var z = 8;
-    return p2 + z + foo;
-  }
-
-  asyncReturn = bar(1, 2);
-  Expect.isTrue(asyncReturn is Future);
-  asyncReturn.then((int result) => Expect.equals(result, 27));
-
-  var moreNesting = (int shadowP1, String p2, num p3) {
-    var z = 3;
-    aa(int shadowP1) async {
-      return foo + z + p3 + shadowP1;
-    }
-
-    return aa(6);
-  };
-  asyncReturn = moreNesting(1, "ignore", 2);
-  Expect.isTrue(asyncReturn is Future);
-  asyncReturn.then((int result) => Expect.equals(result, 28));
-
-  var b1 = const B.createConst(4); // //# constructor4: compile-time error
-  var b2 = new B();
-  b2.dontDoThat = 4; // //# setter1: compile-time error
-
-  var checkAsync = (var someFunc) {
-    var toTest = someFunc();
-    Expect.isTrue(toTest is Future);
-    toTest.then((int result) => Expect.equals(result, 4));
-  };
-  checkAsync(() async => 4);
-
-  new A.fail(); //# constructor2: continued
-  new A.create(); //# constructor3: continued
-}
diff --git a/tests/language/async_this_bound_test.dart b/tests/language/async_this_bound_test.dart
deleted file mode 100644
index b71a597..0000000
--- a/tests/language/async_this_bound_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-
-class A {
-  int a = -1;
-
-  @NoInline()
-  foo(ignored, val) {
-    Expect.equals(val, this.a);
-  }
-}
-
-testA() async {
-  var a = new A();
-  a.foo(await false, -1);
-  a.a = 0;
-  a.foo(await false, 0);
-}
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-class B {
-  var f;
-  @NoInline()
-  var b = 10;
-  B(this.f);
-
-  bar(x) => b;
-}
-
-foo(x) => 499;
-bar(x) => 42;
-
-change(x) {
-  x.f = (x) => 99;
-}
-
-testB() async {
-  var b = confuse(new B(foo));
-  Expect.equals(99, b.f(await change(b)));
-  var b2 = confuse(new B(bar));
-  Expect.equals(10, b2.f(await (b2.f = b2.bar)));
-}
-
-test() async {
-  await testA();
-  await testB();
-}
-
-void main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/async_throw_in_catch_test.dart b/tests/language/async_throw_in_catch_test.dart
deleted file mode 100644
index f6c8f0d..0000000
--- a/tests/language/async_throw_in_catch_test.dart
+++ /dev/null
@@ -1,474 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-class Tracer {
-  final String expected;
-  final String name;
-  int counter = 0;
-
-  Tracer(this.expected, [this.name]);
-
-  void trace(msg) {
-    if (name != null) {
-      print("Tracing $name: $msg");
-    }
-    Expect.equals(expected[counter], msg);
-    counter++;
-  }
-
-  void done() {
-    Expect.equals(expected.length, counter, "Received too few traces");
-  }
-}
-
-foo1(Tracer tracer) async {
-  try {
-    tracer.trace("a");
-    // This await forces dart2js to rewrite the try into a state machine
-    // instead of relying on the existing structure.
-    await new Future.value(3); //# forceAwait: ok
-    tracer.trace("b");
-    throw "Error";
-  } catch (error) {
-    tracer.trace("c");
-    Expect.equals("Error", error);
-    throw "Error2";
-    tracer.trace("d");
-  } finally {
-    tracer.trace("e");
-  }
-  tracer.trace("f");
-}
-
-foo2(Tracer tracer) async {
-  try {
-    tracer.trace("a");
-    await new Future.value(3); //# forceAwait: continued
-    tracer.trace("b");
-    throw "Error";
-    tracer.trace("c");
-  } catch (error) {
-    tracer.trace("d");
-    Expect.equals("Error", error);
-    await new Future.error("Error2");
-  } finally {
-    tracer.trace("e");
-  }
-  tracer.trace("f");
-}
-
-foo3(Tracer tracer) async {
-  try {
-    tracer.trace("a");
-    await new Future.value(3); //# forceAwait: continued
-    tracer.trace("b");
-    throw "Error";
-    tracer.trace("c");
-  } catch (error) {
-    Expect.equals("Error", error);
-    tracer.trace("d");
-    return;
-  } finally {
-    tracer.trace("e");
-  }
-  tracer.trace("f");
-}
-
-foo4(Tracer tracer) async {
-  try {
-    try {
-      await new Future.value(3); //# forceAwait: continued
-      tracer.trace("a");
-      throw "Error";
-    } catch (error) {
-      tracer.trace("b");
-      Expect.equals("Error", error);
-      throw "Error2";
-    }
-  } catch (error) {
-    Expect.equals("Error2", error);
-    tracer.trace("c");
-  }
-  tracer.trace("d");
-}
-
-foo5(Tracer tracer) async {
-  try {
-    tracer.trace("a");
-    try {
-      await new Future.value(3); //# forceAwait: continued
-      tracer.trace("b");
-      throw "Error";
-    } catch (error) {
-      tracer.trace("c");
-      Expect.equals("Error", error);
-      throw "Error2";
-    }
-  } finally {
-    tracer.trace("d");
-  }
-  tracer.trace("e");
-}
-
-foo6(Tracer tracer) async {
-  try {
-    try {
-      await new Future.value(3); //# forceAwait: continued
-      tracer.trace("a");
-      throw "Error";
-    } catch (error) {
-      tracer.trace("b");
-      Expect.equals("Error", error);
-      throw "Error2";
-    } finally {
-      tracer.trace("c");
-      throw "Error3";
-    }
-  } catch (error) {
-    tracer.trace("d");
-    Expect.equals("Error3", error);
-  }
-  tracer.trace("e");
-}
-
-foo7(Tracer tracer) async {
-  try {
-    try {
-      await new Future.value(3); //# forceAwait: continued
-      tracer.trace("a");
-      throw "Error";
-    } catch (error) {
-      Expect.equals("Error", error);
-      tracer.trace("b");
-      throw "Error2";
-    } finally {
-      tracer.trace("c");
-      throw "Error3";
-    }
-  } finally {
-    tracer.trace("d");
-  }
-  tracer.trace("e");
-}
-
-foo8(Tracer tracer) async {
-  try {
-    try {
-      await new Future.value(3); //# forceAwait: continued
-      tracer.trace("a");
-      throw "Error";
-    } catch (error) {
-      Expect.equals("Error", error);
-      tracer.trace("b");
-      return;
-    } finally {
-      tracer.trace("c");
-      throw "Error3";
-    }
-  } finally {
-    tracer.trace("d");
-  }
-  tracer.trace("e");
-}
-
-foo9(Tracer tracer) async {
-  try {
-    while (true) {
-      try {
-        await new Future.value(3); //# forceAwait: continued
-        tracer.trace("a");
-        throw "Error";
-      } catch (error) {
-        Expect.equals("Error", error);
-        tracer.trace("b");
-        return;
-      } finally {
-        tracer.trace("c");
-        break;
-      }
-      tracer.trace("d");
-    }
-  } finally {
-    tracer.trace("e");
-  }
-  tracer.trace("f");
-}
-
-foo10(Tracer tracer) async {
-  try {
-    int i = 0;
-    while (true) {
-      try {
-        try {
-          tracer.trace("a");
-          throw "Error";
-        } catch (error) {
-          tracer.trace("b");
-          try {
-            await new Future.value(3); // //# forceAwait: continued
-            throw "Error2";
-          } catch (error) {
-            tracer.trace("c");
-          } finally {
-            tracer.trace("d");
-          }
-          tracer.trace("e");
-          throw "Error3";
-        } finally {
-          tracer.trace("f");
-          // Continue and breaks 'eats' Error3.
-          if (i == 0) continue;
-          if (i == 1) break;
-        }
-      } finally {
-        tracer.trace("g");
-        i++;
-      }
-    }
-  } finally {
-    tracer.trace("h");
-  }
-  tracer.trace("i");
-}
-
-foo11(Tracer tracer) async {
-  try {
-    bool firstTime = true;
-    while (true) {
-      tracer.trace("a");
-      if (firstTime) {
-        try {
-          await new Future.value(3); //# forceAwait: continued
-          tracer.trace("b");
-          throw "Error";
-        } catch (error) {
-          Expect.equals("Error", error);
-          tracer.trace("c");
-          firstTime = false;
-          continue;
-        } finally {
-          tracer.trace("d");
-        }
-      } else {
-        tracer.trace("e");
-        return;
-      }
-    }
-  } finally {
-    tracer.trace("f");
-  }
-  tracer.trace("g");
-}
-
-foo12(Tracer tracer) async {
-  try {
-    bool firstTime = true;
-    while (true) {
-      tracer.trace("a");
-      if (firstTime) {
-        try {
-          await new Future.value(3); //# forceAwait: continued
-          tracer.trace("b");
-          throw "Error";
-        } catch (error) {
-          Expect.equals("Error", error);
-          tracer.trace("c");
-          firstTime = false;
-          continue;
-        } finally {
-          tracer.trace("d");
-          break;
-        }
-      } else {
-        tracer.trace("e");
-        return;
-      }
-    }
-  } finally {
-    tracer.trace("f");
-  }
-  tracer.trace("g");
-}
-
-foo13(Tracer tracer) async {
-  try {
-    try {
-      tracer.trace("a");
-      return;
-    } catch (error) {
-      tracer.trace("b");
-    } finally {
-      tracer.trace("c");
-      try {
-        try {
-          await new Future.value(3); // //# forceAwait: continued
-          tracer.trace("d");
-          throw "Error";
-        } finally {
-          tracer.trace("e");
-        }
-      } finally {
-        tracer.trace("f");
-      }
-    }
-  } finally {
-    tracer.trace("g");
-  }
-  tracer.trace("h");
-}
-
-foo14(Tracer tracer) async {
-  try {
-    try {
-      tracer.trace("a");
-      throw "Error";
-    } catch (error) {
-      tracer.trace("b");
-      try {
-        await new Future.value(3); // //# forceAwait: continued
-        throw "Error2";
-      } catch (error) {
-        tracer.trace("c");
-      } finally {
-        tracer.trace("d");
-      }
-      tracer.trace("e");
-      throw "Error3";
-    } finally {
-      tracer.trace("f");
-    }
-  } finally {
-    tracer.trace("g");
-  }
-  tracer.trace("h");
-}
-
-foo15(Tracer tracer) async {
-  try {
-    try {
-      tracer.trace("a");
-      throw "Error";
-    } catch (error) {
-      tracer.trace("b");
-      try {
-        await new Future.value(3); // //# forceAwait: continued
-        throw "Error2";
-      } catch (error) {
-        tracer.trace("c");
-      } finally {
-        tracer.trace("d");
-      }
-      tracer.trace("e");
-      throw "Error3";
-    } finally {
-      tracer.trace("f");
-      return;
-    }
-  } finally {
-    tracer.trace("g");
-  }
-  tracer.trace("h");
-}
-
-foo16(Tracer tracer) async {
-  try {
-    try {
-      tracer.trace("a");
-      throw "Error";
-    } catch (error) {
-      tracer.trace("b");
-      try {
-        await new Future.value(3); // //# forceAwait: continued
-        throw "Error2";
-      } catch (error) {
-        tracer.trace("c");
-      } finally {
-        tracer.trace("d");
-        return;
-      }
-      tracer.trace("e");
-      throw "Error3";
-    } finally {
-      tracer.trace("f");
-    }
-  } finally {
-    tracer.trace("g");
-  }
-  tracer.trace("h");
-}
-
-foo17(Tracer tracer) async {
-  try {
-    tracer.trace("a");
-  } finally {
-    try {
-      tracer.trace("b");
-      throw "Error";
-    } catch (error) {
-      await new Future.value(3); // //# forceAwait: continued
-      Expect.equals("Error", error);
-      tracer.trace("c");
-    } finally {
-      tracer.trace("d");
-    }
-    tracer.trace("e");
-  }
-  tracer.trace("f");
-}
-
-foo18(Tracer tracer) async {
-  try {
-    tracer.trace("a");
-  } finally {
-    try {
-      tracer.trace("b");
-    } finally {
-      await new Future.value(3); // //# forceAwait: continued
-      tracer.trace("c");
-    }
-    tracer.trace("d");
-  }
-  tracer.trace("e");
-}
-
-runTest(expectedTrace, fun, [expectedError]) async {
-  Tracer tracer = new Tracer(expectedTrace, expectedTrace);
-  try {
-    await fun(tracer);
-  } catch (error) {
-    Expect.equals(expectedError, error);
-    tracer.trace("X");
-  }
-  tracer.done();
-}
-
-test() async {
-  await runTest("abceX", foo1, "Error2");
-  await runTest("abdeX", foo2, "Error2");
-  await runTest("abde", foo3);
-  await runTest("abcd", foo4);
-  await runTest("abcdX", foo5, "Error2");
-  await runTest("abcde", foo6);
-  await runTest("abcdX", foo7, "Error3");
-  await runTest("abcdX", foo8, "Error3");
-  await runTest("abcef", foo9);
-  await runTest("abcdefgabcdefghi", foo10);
-  await runTest("abcdaef", foo11);
-  await runTest("abcdfg", foo12);
-  await runTest("acdefgX", foo13, "Error");
-  await runTest("abcdefgX", foo14, "Error3");
-  await runTest("abcdefgX", foo14, "Error3");
-  await runTest("abcdefg", foo15);
-  await runTest("abcdfg", foo16);
-  await runTest("abcdef", foo17);
-  await runTest("abcde", foo18);
-}
-
-void main() {
-  asyncTest(test);
-}
diff --git a/tests/language/asyncstar_concat_test.dart b/tests/language/asyncstar_concat_test.dart
deleted file mode 100644
index 222e3cf..0000000
--- a/tests/language/asyncstar_concat_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-
-range(start, end) async* {
-  for (int i = start; i < end; i++) {
-    yield i;
-  }
-}
-
-concat(a, b) async* {
-  yield* a;
-  yield* b;
-}
-
-test() async {
-  Expect.listEquals(
-      [1, 2, 3, 11, 12, 13], await concat(range(1, 4), range(11, 14)).toList());
-}
-
-main() {
-  asyncStart();
-  test().then((_) {
-    asyncEnd();
-  });
-}
diff --git a/tests/language/asyncstar_throw_in_catch_test.dart b/tests/language/asyncstar_throw_in_catch_test.dart
deleted file mode 100644
index 503d3ba..0000000
--- a/tests/language/asyncstar_throw_in_catch_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-class Tracer {
-  final String expected;
-  final String name;
-  String _trace = "";
-  int counter = 0;
-
-  Tracer(this.expected, [this.name]);
-
-  void trace(msg) {
-    if (name != null) {
-      print("Tracing $name: $msg");
-    }
-    _trace += msg;
-    counter++;
-  }
-
-  void done() {
-    Expect.equals(expected, _trace);
-  }
-}
-
-foo1(Tracer tracer) async* {
-  try {
-    tracer.trace("a");
-    await new Future.value(3);
-    tracer.trace("b");
-    throw "Error";
-  } catch (e) {
-    Expect.equals("Error", e);
-    tracer.trace("c");
-    yield 1;
-    tracer.trace("d");
-    yield 2;
-    tracer.trace("e");
-    yield 3;
-    tracer.trace("f");
-  } finally {
-    tracer.trace("f");
-  }
-  tracer.trace("g");
-}
-
-foo2(Tracer tracer) async* {
-  try {
-    tracer.trace("a");
-    throw "Error";
-  } catch (error) {
-    Expect.equals("Error", error);
-    tracer.trace("b");
-    rethrow;
-  } finally {
-    tracer.trace("c");
-  }
-}
-
-foo3(Tracer tracer) async* {
-  try {
-    tracer.trace("a");
-    throw "Error";
-  } catch (error) {
-    Expect.equals("Error", error);
-    tracer.trace("b");
-    rethrow;
-  } finally {
-    tracer.trace("c");
-    yield 1;
-  }
-}
-
-foo4(Tracer tracer) async* {
-  try {
-    tracer.trace("a");
-    await new Future.value(3);
-    tracer.trace("b");
-    throw "Error";
-  } catch (e) {
-    Expect.equals("Error", e);
-    tracer.trace("c");
-    yield 1;
-    tracer.trace("d");
-    yield 2;
-    tracer.trace("e");
-    await new Future.error("Error2");
-  } finally {
-    tracer.trace("f");
-  }
-  tracer.trace("g");
-}
-
-runTest(test, expectedTrace, expectedError, shouldCancel) {
-  Tracer tracer = new Tracer(expectedTrace, expectedTrace);
-  Completer done = new Completer();
-  var subscription;
-  subscription = test(tracer).listen((event) async {
-    tracer.trace("Y");
-    if (shouldCancel) {
-      await subscription.cancel();
-      tracer.trace("C");
-      done.complete(null);
-    }
-  }, onError: (error) {
-    Expect.equals(expectedError, error);
-    tracer.trace("X");
-  }, onDone: () {
-    tracer.done();
-    done.complete(null);
-  });
-  return done.future.then((_) => tracer.done());
-}
-
-test() async {
-  // TODO(sigurdm): These tests are too dependent on scheduling, and buffering
-  // behavior.
-  await runTest(foo1, "abcdYefC", null, true);
-  await runTest(foo2, "abcX", "Error", false);
-  await runTest(foo3, "abcYX", "Error", false);
-  await runTest(foo4, "abcdYeYfX", "Error2", false);
-}
-
-void main() {
-  asyncTest(test);
-}
diff --git a/tests/language/asyncstar_yield_test.dart b/tests/language/asyncstar_yield_test.dart
deleted file mode 100644
index 1ead715..0000000
--- a/tests/language/asyncstar_yield_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-Stream<int> foo1() async* {
-  yield 1;
-  var p = await new Future.value(10);
-  yield p + 10;
-}
-
-Stream<int> foo2() async* {
-  int i = 0;
-  while (true) {
-    await (new Future.delayed(new Duration(milliseconds: 0), () {}));
-    if (i > 10) return;
-    yield i;
-    i++;
-  }
-}
-
-Stream<int> foo3(p) async* {
-  int i = 0;
-  bool t = false;
-  yield null;
-  while (true) {
-    i++;
-    a:
-    for (int i = 0; i < p; i++) {
-      if (!t) {
-        for (int j = 0; j < 3; j++) {
-          yield -1;
-          t = true;
-          break a;
-        }
-      }
-      await 4;
-      yield i;
-    }
-  }
-}
-
-Completer<bool> finalized = new Completer<bool>();
-
-Stream<int> foo4() async* {
-  int i = 0;
-  try {
-    while (true) {
-      yield i;
-      i++;
-    }
-  } finally {
-    // Canceling the stream-subscription should run the finalizer.
-    finalized.complete(true);
-  }
-}
-
-test() async {
-  Expect.listEquals([1, 20], await (foo1().toList()));
-  Expect.listEquals([0, 1, 2, 3], await (foo2().take(4).toList()));
-  Expect.listEquals(
-      [null, -1, 0, 1, 2, 3, 0, 1, 2, 3], await (foo3(4).take(10).toList()));
-  Expect.listEquals(
-      [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], await (foo4().take(10).toList()));
-  Expect.isTrue(await (finalized.future));
-}
-
-main() {
-  asyncStart();
-  test().then((_) {
-    asyncEnd();
-  });
-}
diff --git a/tests/language/asyncstar_yieldstar_test.dart b/tests/language/asyncstar_yieldstar_test.dart
deleted file mode 100644
index 55130d7..0000000
--- a/tests/language/asyncstar_yieldstar_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-Stream<int> subStream(p) async* {
-  yield p;
-  yield p + 1;
-}
-
-Stream foo(Completer<bool> finalized) async* {
-  int i = 0;
-  try {
-    while (true) {
-      yield "outer";
-      yield* subStream(i);
-      i++;
-    }
-  } finally {
-    // See that we did not run too many iterations.
-    Expect.isTrue(i < 10);
-    // Canceling the stream-subscription should run the finalizer.
-    finalized.complete(true);
-  }
-}
-
-foo2(Stream subStream) async* {
-  yield* subStream;
-}
-
-test() async {
-  Expect.listEquals([0, 1], await (subStream(0).toList()));
-  Completer<bool> finalized = new Completer<bool>();
-  Expect.listEquals(["outer", 0, 1, "outer", 1, 2, "outer", 2],
-      await (foo(finalized).take(8).toList()));
-  Expect.isTrue(await (finalized.future));
-
-  finalized = new Completer<bool>();
-  // Canceling the stream while it is yield*-ing from the sub-stream.
-  Expect.listEquals(["outer", 0, 1, "outer", 1, 2, "outer"],
-      await (foo(finalized).take(7).toList()));
-  Expect.isTrue(await (finalized.future));
-  finalized = new Completer<bool>();
-
-  Completer<bool> pausedCompleter = new Completer<bool>();
-  Completer<bool> resumedCompleter = new Completer<bool>();
-  Completer<bool> canceledCompleter = new Completer<bool>();
-
-  StreamController controller;
-  int i = 0;
-  addNext() {
-    if (i >= 10) return;
-    controller.add(i);
-    i++;
-    if (!controller.isPaused) {
-      scheduleMicrotask(addNext);
-    }
-  }
-
-  controller = new StreamController(onListen: () {
-    scheduleMicrotask(addNext);
-  }, onPause: () {
-    pausedCompleter.complete(true);
-  }, onResume: () {
-    resumedCompleter.complete(true);
-    scheduleMicrotask(addNext);
-  }, onCancel: () {
-    canceledCompleter.complete(true);
-  });
-
-  StreamSubscription subscription;
-  // Test that the yield*'ed stream is paused and resumed.
-  subscription = foo2(controller.stream).listen((event) {
-    if (event == 2) {
-      subscription.pause();
-      scheduleMicrotask(() {
-        subscription.resume();
-      });
-    }
-    if (event == 5) {
-      subscription.cancel();
-    }
-  });
-  // Test that the yield*'ed streamSubscription is paused, resumed and canceled
-  // by the async* stream.
-  Expect.isTrue(await pausedCompleter.future);
-  Expect.isTrue(await resumedCompleter.future);
-  Expect.isTrue(await canceledCompleter.future);
-}
-
-main() {
-  asyncStart();
-  test().then((_) {
-    asyncEnd();
-  });
-}
diff --git a/tests/language/await_backwards_compatibility_test.dart b/tests/language/await_backwards_compatibility_test.dart
deleted file mode 100644
index 0d9b248..0000000
--- a/tests/language/await_backwards_compatibility_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2014, 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:async';
-
-import 'package:expect/expect.dart';
-
-get await => 4;
-
-// For functions that are declared with the async modifier we treat await as
-// keyword.
-
-test0() async {
-  var x = await 7;
-  Expect.equals(7, x);
-  var await = 1; // //# await1: syntax error
-}
-
-test1() async {
-  var x = await 9;
-  Expect.equals(9, x);
-  var y = await; // //# await2: syntax error
-}
-
-// For functions that are not declared with the async modifier we allow await to
-// be used as an identifier.
-
-test2() {
-  var y = await;
-  Expect.equals(4, y);
-  var x = await 1; // //# await3: compile-time error
-}
-
-test3() {
-  var await = 3;
-  Expect.equals(3, await);
-  var x = await 1; // //# await4: compile-time error
-}
-
-main() {
-  test0();
-  test1();
-  test2();
-  test3();
-}
diff --git a/tests/language/await_exceptions_test.dart b/tests/language/await_exceptions_test.dart
deleted file mode 100644
index 8d59710..0000000
--- a/tests/language/await_exceptions_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=5 --no-background-compilation
-// VMOptions=--optimization-counter-threshold=5 --no-background-compilation --stress-async-stacks
-
-import 'package:expect/expect.dart';
-import "package:async_helper/async_helper.dart";
-
-import 'dart:async';
-
-// It does not matter where a future is generated.
-bar(p) async => p;
-baz(p) => new Future(() => p);
-
-test0_1() async {
-  throw 1;
-}
-
-test0() async {
-  try {
-    await test0_1();
-  } catch (e) {
-    Expect.equals(1, e);
-  }
-}
-
-test1_1() async {
-  throw 1;
-}
-
-test1_2() async {
-  try {
-    await test1_1();
-  } catch (e) {
-    throw e + 1;
-  }
-}
-
-test1() async {
-  try {
-    await test1_2();
-  } catch (e) {
-    Expect.equals(2, e);
-  }
-}
-
-test2() async {
-  var x;
-  var test2_1 = () async {
-    try {
-      throw 'a';
-    } catch (e) {
-      throw e + 'b';
-    }
-  };
-  try {
-    try {
-      await test2_1();
-    } catch (e) {
-      var y = await bar(e + 'c');
-      throw y;
-    }
-  } catch (e) {
-    x = e + 'd';
-    return '?';
-  } finally {
-    return x;
-  }
-  return '!';
-}
-
-test() async {
-  var result;
-  for (int i = 0; i < 10; i++) {
-    await test0();
-    await test1();
-    result = await test2();
-    Expect.equals('abcd', result);
-  }
-  await 1;
-}
-
-foo() {
-  throw "Error";
-}
-
-awaitFoo() async {
-  await foo();
-}
-
-main() {
-  asyncStart();
-  test()
-      .then((_) => awaitFoo().then((_) => Expect.fail("Should have thrown"),
-          onError: (error) => Expect.equals("Error", error)))
-      .whenComplete(asyncEnd);
-}
diff --git a/tests/language/await_for_cancel_test.dart b/tests/language/await_for_cancel_test.dart
deleted file mode 100644
index c308b4f5..0000000
--- a/tests/language/await_for_cancel_test.dart
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2014, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-bool canceled;
-
-test1() async {
-  canceled = false;
-  try {
-    StreamController controller = infiniteStreamController();
-    outer:
-    while (true) {
-      await for (var x in controller.stream) {
-        for (int j = 0; j < 10; j++) {
-          if (j == 5) break outer;
-        }
-      }
-    }
-  } finally {
-    Expect.isTrue(canceled);
-  }
-}
-
-test2() async {
-  canceled = false;
-  try {
-    StreamController controller = infiniteStreamController();
-    bool first = true;
-    outer:
-    while (true) {
-      if (first) {
-        first = false;
-      } else {
-        break;
-      }
-      await for (var x in controller.stream) {
-        for (int j = 0; j < 10; j++) {
-          if (j == 5) continue outer;
-        }
-      }
-    }
-  } finally {
-    Expect.isTrue(canceled);
-  }
-}
-
-test() async {
-  await test1();
-  await test2();
-}
-
-main() {
-  asyncStart();
-  test().then((_) {
-    asyncEnd();
-  });
-}
-
-// Create a stream that produces numbers [1, 2, ... ]
-StreamController infiniteStreamController() {
-  StreamController controller;
-  Timer timer;
-  int counter = 0;
-
-  void tick() {
-    if (controller.isPaused) {
-      return;
-    }
-    if (canceled) {
-      return;
-    }
-    counter++;
-    controller.add(counter); // Ask stream to send counter values as event.
-    Timer.run(tick);
-  }
-
-  void startTimer() {
-    Timer.run(tick);
-  }
-
-  controller = new StreamController(
-      onListen: startTimer,
-      onResume: startTimer,
-      onCancel: () {
-        canceled = true;
-      });
-
-  return controller;
-}
diff --git a/tests/language/await_for_test.dart b/tests/language/await_for_test.dart
deleted file mode 100644
index 9e97e98..0000000
--- a/tests/language/await_for_test.dart
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright (c) 2014, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-class Trace {
-  String trace;
-  Trace(this.trace);
-  void record(x) {
-    trace += x.toString();
-  }
-
-  String toString() => trace;
-}
-
-Stream makeMeAStream() {
-  return timedCounter(5);
-}
-
-consumeOne(trace) async {
-  // Equivalent to await for (x in makeMeAStream()) { ... }
-  var s = makeMeAStream();
-  var it = new StreamIterator(s);
-  while (await it.moveNext()) {
-    var x = it.current;
-    trace.record(x);
-  }
-  trace.record("X");
-}
-
-consumeTwo(trace) async {
-  await for (var x in makeMeAStream()) {
-    trace.record(x);
-  }
-  trace.record("Y");
-}
-
-consumeNested(trace) async {
-  await for (var x in makeMeAStream()) {
-    trace.record(x);
-    await for (var y in makeMeAStream()) {
-      trace.record(y);
-    }
-    trace.record("|");
-  }
-  trace.record("Z");
-}
-
-consumeSomeOfInfinite(trace) async {
-  int i = 0;
-  await for (var x in infiniteStream()) {
-    i++;
-    if (i > 10) break;
-    trace.record(x);
-  }
-  trace.record("U");
-}
-
-const String cancelError =
-    "ERROR: Error in future returned by .cancel() must be caught";
-
-/// Creates a stream that yields integers forever, but throws when canceled.
-///
-/// The thrown error should end up in the future returned by `cancel`.
-Stream<int> errorOnCancelStream(int n) async* {
-  try {
-    while (true) yield n++;
-  } finally {
-    throw cancelError;
-  }
-}
-
-// Sanity-check that the errorOnCancelStream behaves as expected.
-testErrorOnCancel() {
-  var stream = errorOnCancelStream(0);
-  var subscription = stream.listen(null);
-  return subscription.cancel().then((_) {
-    Expect.fail("Cancel future did not contain error");
-  }, onError: (e) {
-    Expect.equals(cancelError, e);
-  });
-}
-
-testCancelAwaited() async {
-  return runZoned(() async {
-    var stream = errorOnCancelStream(0);
-    try {
-      var n = 0;
-      await for (var x in stream) {
-        Expect.equals(n++, x);
-        if (x == 5) break;
-      }
-      Expect.fail("Didn't await the cancel future.");
-    } on String catch (e) {
-      Expect.equals(cancelError, e);
-    }
-  }, onError: (e) {
-    // Catch the error if it's uncaught.
-    if (cancelError == e) {
-      Expect.fail("Error in cancel is considered uncaught");
-    }
-    throw e;
-  });
-}
-
-main() {
-  Trace t1 = new Trace("T1:");
-  var f1 = consumeOne(t1);
-
-  Trace t2 = new Trace("T2:");
-  var f2 = consumeTwo(t2);
-
-  Trace t3 = new Trace("T3:");
-  var f3 = consumeNested(t3);
-
-  Trace t4 = new Trace("T4:");
-  var f4 = consumeSomeOfInfinite(t4);
-
-  var f5 = testErrorOnCancel();
-
-  var f6 = testCancelAwaited();
-
-  asyncStart();
-  Future.wait([f1, f2, f3, f4, f5, f6]).then((_) {
-    Expect.equals("T1:12345X", t1.toString());
-    Expect.equals("T2:12345Y", t2.toString());
-    Expect.equals("T3:112345|212345|312345|412345|512345|Z", t3.toString());
-    Expect.equals("T4:12345678910U", t4.toString());
-    asyncEnd();
-  });
-}
-
-// Create a stream that produces numbers [1, 2, ... maxCount]
-Stream timedCounter(int maxCount) {
-  StreamController controller;
-  Timer timer;
-  int counter = 0;
-
-  void tick(_) {
-    counter++;
-    controller.add(counter); // Ask stream to send counter values as event.
-    if (counter >= maxCount) {
-      timer.cancel();
-      controller.close(); //    Ask stream to shut down and tell listeners.
-    }
-  }
-
-  void startTimer() {
-    timer = new Timer.periodic(const Duration(milliseconds: 10), tick);
-  }
-
-  void stopTimer() {
-    if (timer != null) {
-      timer.cancel();
-      timer = null;
-    }
-  }
-
-  controller = new StreamController(
-      onListen: startTimer,
-      onPause: stopTimer,
-      onResume: startTimer,
-      onCancel: stopTimer);
-
-  return controller.stream;
-}
-
-// Create a stream that produces numbers [1, 2, ... ]
-Stream infiniteStream() {
-  StreamController controller;
-  Timer timer;
-  int counter = 0;
-
-  void tick(_) {
-    counter++;
-    controller.add(counter); // Ask stream to send counter values as event.
-  }
-
-  void startTimer() {
-    timer = new Timer.periodic(const Duration(milliseconds: 10), tick);
-  }
-
-  void stopTimer() {
-    if (timer != null) {
-      timer.cancel();
-      timer = null;
-    }
-  }
-
-  controller = new StreamController(
-      onListen: startTimer,
-      onPause: stopTimer,
-      onResume: startTimer,
-      onCancel: stopTimer);
-
-  return controller.stream;
-}
diff --git a/tests/language/await_for_use_local_test.dart b/tests/language/await_for_use_local_test.dart
deleted file mode 100644
index a8df068..0000000
--- a/tests/language/await_for_use_local_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-sumStream(s) async {
-  int accum = 0;
-  await for (var v in s) {
-    accum += v;
-  }
-  return accum;
-}
-
-test() async {
-  var countStreamController;
-  int i = 0;
-  void tick() {
-    if (i < 10) {
-      countStreamController.add(i);
-      i++;
-      scheduleMicrotask(tick);
-    } else {
-      countStreamController.close();
-    }
-  }
-
-  countStreamController = new StreamController(onListen: () {
-    scheduleMicrotask(tick);
-  });
-  Expect.equals(45, await sumStream(countStreamController.stream));
-}
-
-void main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/await_future_test.dart b/tests/language/await_future_test.dart
deleted file mode 100644
index 9d0c17e..0000000
--- a/tests/language/await_future_test.dart
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=5 --no-background-compilation
-// VMOptions=--optimization-counter-threshold=5 --no-background-compilation --stress-async-stacks
-
-import 'package:expect/expect.dart';
-import "package:async_helper/async_helper.dart";
-
-import 'dart:async';
-
-// It does not matter where a future is generated.
-bar(p) async => p;
-baz(p) => new Future(() => p);
-
-foo() async {
-  var b = 0;
-  for (int i = 0; i < 10; i++) {
-    b += (await bar(1)) + (await baz(2));
-  }
-  return b;
-}
-
-faa() async => (await bar('faa')).length;
-
-quaz(p) async {
-  var x = 0;
-  try {
-    for (var j = 0; j < 10; j++) {
-      x += await baz(j);
-    }
-    return x;
-  } finally {
-    Expect.equals(x, 45);
-    return p;
-  }
-}
-
-quazz() async {
-  var x = 0;
-  try {
-    try {
-      x = await bar(1);
-      throw x;
-    } catch (e1) {
-      var y = await baz(e1 + 1);
-      throw y;
-    }
-  } catch (e2) {
-    return e2;
-  }
-}
-
-nesting() async {
-  try {
-    try {
-      var x = 1;
-      var y = () async {
-        try {
-          var z = (await bar(3)) + x;
-          throw z;
-        } catch (e1) {
-          return e1;
-        }
-      };
-      var a = await y();
-      throw a;
-    } catch (e2) {
-      throw e2 + 1;
-    }
-  } catch (e3) {
-    return e3;
-  }
-}
-
-awaitAsUnary(a, b) async {
-  return await a + await b;
-}
-
-awaitIf(p) async {
-  if (p < (await bar(5))) {
-    return "p<5";
-  } else {
-    return "p>=5";
-  }
-}
-
-awaitNestedIf(p, q) async {
-  if (p == (await bar(5))) {
-    if (q < (await bar(7))) {
-      return "q<7";
-    } else {
-      return "q>=7";
-    }
-  } else {
-    return "p!=5";
-  }
-  return "!";
-}
-
-awaitElseIf(p) async {
-  if (p > (await bar(5))) {
-    return "p>5";
-  } else if (p < (await bar(5))) {
-    return "p<5";
-  } else {
-    return "p==5";
-  }
-  return "!";
-}
-
-awaitReturn() async {
-  return await bar(17);
-}
-
-awaitSwitch() async {
-  switch (await bar(3)) {
-    case 1:
-      return 1;
-      break;
-    case 3:
-      return 3;
-      break;
-    default:
-      return -1;
-  }
-}
-
-awaitNestedWhile(int i, int j) async {
-  int savedJ = j;
-  var decI = () async {
-    return i--;
-  };
-  var decJ = () async {
-    return j--;
-  };
-  var k = 0;
-  while ((await decI()) > 0) {
-    j = savedJ;
-    while (0 < (await decJ())) {
-      k++;
-    }
-  }
-  return k;
-}
-
-awaitNestedDoWhile(int i, int j) async {
-  int savedJ = j;
-  var decI = () async {
-    return i--;
-  };
-  var decJ = () async {
-    return j--;
-  };
-  var k = 0;
-  do {
-    do {
-      k++;
-    } while (0 < (await decI()));
-  } while ((await decJ()) > 0);
-  return k;
-}
-
-awaitFor() async {
-  var asyncInc = (p) async => p + 1;
-  var k = 0;
-  for (int j = (await bar(0)), i = (await bar(1));
-      j < (await bar(5));
-      j = (await asyncInc(j)), i = (await asyncInc(i))) {
-    k += i;
-    k += j;
-  }
-  return k;
-}
-
-awaitForIn() async {
-  var list = ['a', 'b', 'c'];
-  var k = '';
-  for (var c in (await bar(list))) {
-    k += c;
-  }
-  return k;
-}
-
-test() async {
-  var result;
-  for (int i = 0; i < 10; i++) {
-    result = await foo();
-    Expect.equals(30, result);
-    result = await faa();
-    Expect.equals(3, result);
-    result = await quaz(17);
-    Expect.equals(17, result);
-    result = await quazz();
-    Expect.equals(2, result);
-    result = await nesting();
-    Expect.equals(5, result);
-    result = await awaitIf(3);
-    Expect.equals("p<5", result);
-    result = await awaitIf(5);
-    Expect.equals("p>=5", result);
-    result = await awaitNestedIf(5, 3);
-    Expect.equals("q<7", result);
-    result = await awaitNestedIf(5, 8);
-    Expect.equals("q>=7", result);
-    result = await awaitNestedIf(3, 8);
-    Expect.equals("p!=5", result);
-    result = await awaitReturn();
-    Expect.equals(17, result);
-    result = await awaitSwitch();
-    Expect.equals(3, result);
-    result = await awaitElseIf(6);
-    Expect.equals("p>5", result);
-    result = await awaitElseIf(4);
-    Expect.equals("p<5", result);
-    result = await awaitElseIf(5);
-    Expect.equals("p==5", result);
-    result = await awaitNestedWhile(5, 3);
-    Expect.equals(15, result);
-    result = await awaitNestedWhile(4, 6);
-    Expect.equals(24, result);
-    result = await awaitAsUnary(bar(1), bar(2));
-    Expect.equals(3, result);
-    result = await awaitFor();
-    Expect.equals(25, result);
-    result = await awaitForIn();
-    Expect.equals('abc', result);
-  }
-}
-
-main() {
-  asyncStart();
-  test().then((_) {
-    asyncEnd();
-  });
-}
diff --git a/tests/language/await_nonfuture_test.dart b/tests/language/await_nonfuture_test.dart
deleted file mode 100644
index 8079ff5..0000000
--- a/tests/language/await_nonfuture_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=5 --no-background-compilation
-
-import 'package:expect/expect.dart';
-
-var X = 0;
-
-foo() async {
-  Expect.equals(X, 10); // foo runs after main returns.
-  return await 5;
-}
-
-main() {
-  var f = foo();
-  f.then((res) => print("f completed with $res"));
-  X = 10;
-}
diff --git a/tests/language/await_not_started_immediately_test.dart b/tests/language/await_not_started_immediately_test.dart
deleted file mode 100644
index 5101c58..0000000
--- a/tests/language/await_not_started_immediately_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that an async function does not start immediately.
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-var x = 0;
-
-foo() async {
-  x++;
-  await 1;
-  x++;
-}
-
-void main() {
-  asyncStart();
-  foo().then((_) => Expect.equals(2, x)).whenComplete(asyncEnd);
-  Expect.equals(0, x);
-}
diff --git a/tests/language/await_null_aware_test.dart b/tests/language/await_null_aware_test.dart
deleted file mode 100644
index 483d9dd..0000000
--- a/tests/language/await_null_aware_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue dartbug.com/24392
-
-import 'package:expect/expect.dart';
-import 'dart:async';
-
-Future<int> f() async {
-  // Unreachable.
-  Expect.isTrue(false);
-}
-
-main() async {
-  int x = 1;
-  x ??= await f();
-  Expect.equals(1, x);
-
-  int y = 1;
-  y = y ?? await f();
-  Expect.equals(1, y);
-}
diff --git a/tests/language/await_postfix_expr_test.dart b/tests/language/await_postfix_expr_test.dart
deleted file mode 100644
index e0037f4..0000000
--- a/tests/language/await_postfix_expr_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-post0(a) async {
-  return await a++;
-}
-
-post1(a) async {
-  return await a++ + await a++;
-}
-
-pref0(a) async {
-  return await ++a;
-}
-
-pref1(a) async {
-  return await ++a + await ++a;
-}
-
-sum(a) async {
-  var s = 0;
-  for (int i = 0; i < a.length; /* nothing */) {
-    s += a[await i++];
-  }
-  return s;
-}
-
-// Adapted from repro case for issue 22875.
-sum2(n) async {
-  int i, s = 0;
-  for (i = 1; i <= n; await i++) {
-    // The loop-local variable j was necessary for the crash in 22785.
-    var j = await i;
-    s += j;
-  }
-  return s;
-}
-
-test() async {
-  Expect.equals(10, await post0(10));
-  Expect.equals(21, await post1(10));
-  Expect.equals(11, await pref0(10));
-  Expect.equals(23, await pref1(10));
-  Expect.equals(10, await sum([1, 2, 3, 4]));
-  Expect.equals(10, await sum2(4));
-}
-
-main() {
-  asyncStart();
-  test().then((_) {
-    asyncEnd();
-  });
-}
diff --git a/tests/language/await_regression_test.dart b/tests/language/await_regression_test.dart
deleted file mode 100644
index 44031d8..0000000
--- a/tests/language/await_regression_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2014, 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:async';
-import 'package:expect/expect.dart';
-
-later(vodka) => new Future.value(vodka);
-
-manana(tequila) async => tequila;
-
-// Regression test for issue 21536.
-testNestedFunctions() async {
-  var a = await later('Asterix').then((tonic) {
-    return later(tonic);
-  });
-  var o = await manana('Obelix').then(manana);
-  Expect.equals("$a and $o", "Asterix and Obelix");
-}
-
-addLater({a, b}) => new Future.value(a + b);
-
-// Regression test for issue 21480.
-testNamedArguments() async {
-  var sum = await addLater(a: 5, b: 10);
-  Expect.equals(sum, 15);
-  sum = await addLater(b: 11, a: -11);
-  Expect.equals(sum, 0);
-}
-
-testSideEffects() async {
-  Future foo(int a1, int a2) {
-    Expect.equals(10, a1);
-    Expect.equals(11, a2);
-    return new Future.value();
-  }
-
-  int a = 10;
-  await foo(a++, a++);
-  Expect.equals(12, a);
-}
-
-main() async {
-  testNestedFunctions();
-  testNamedArguments();
-  testSideEffects();
-}
diff --git a/tests/language/await_test.dart b/tests/language/await_test.dart
deleted file mode 100644
index b07428c..0000000
--- a/tests/language/await_test.dart
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation --stress-async-stacks
-
-import 'package:expect/expect.dart';
-
-import 'dart:async';
-
-int globalVariable = 1;
-int topLevelFoo(int param) => 1;
-int get topLevelGetter => globalVariable;
-void set topLevelSetter(val) {
-  globalVariable = val;
-}
-
-class C {
-  static int staticField = 1;
-  static int get staticGetter => staticField;
-  static void set staticSetter(val) {
-    staticField = val;
-  }
-
-  static int staticFoo(int param) => param;
-
-  int field = 1;
-  int get getter => field;
-  void set setter(val) {
-    field = val;
-  }
-
-  int foo(int param) => param;
-}
-
-dummy() => 1;
-
-staticMembers() async {
-  var a = C.staticField + await dummy();
-  Expect.equals(a, 2);
-  var f = (C.staticField = 1) + await dummy();
-  Expect.equals(f, 2);
-  var b = C.staticGetter + await dummy();
-  Expect.equals(b, 2);
-  var c = (C.staticSetter = 1) + await dummy();
-  Expect.equals(c, 2);
-  var d = C.staticFoo(2) + await dummy();
-  Expect.equals(d, 3);
-  var e = C.staticField +
-      C.staticGetter +
-      (C.staticSetter = 1) +
-      C.staticFoo(1) +
-      await dummy();
-  Expect.equals(e, 5);
-}
-
-topLevelMembers() async {
-  var a = globalVariable + await dummy();
-  Expect.equals(a, 2);
-  var b = topLevelGetter + await dummy();
-  Expect.equals(b, 2);
-  var c = (topLevelSetter = 1) + await dummy();
-  Expect.equals(c, 2);
-  var d = topLevelFoo(1) + await dummy();
-  Expect.equals(d, 2);
-  var e = globalVariable +
-      topLevelGetter +
-      (topLevelSetter = 1) +
-      topLevelFoo(1) +
-      await dummy();
-  Expect.equals(e, 5);
-}
-
-instanceMembers() async {
-  var inst = new C();
-  var a = inst.field + await dummy();
-  Expect.equals(a, 2);
-  var b = inst.getter + await dummy();
-  Expect.equals(b, 2);
-  var c = (inst.setter = 1) + await dummy();
-  Expect.equals(c, 2);
-  var d = inst.foo(1) + await dummy();
-  Expect.equals(d, 2);
-  var e = inst.field +
-      inst.getter +
-      (inst.setter = 1) +
-      inst.foo(1) +
-      await dummy();
-  Expect.equals(e, 5);
-}
-
-await() => 4;
-nonAsyncFunction() => await();
-
-others() async {
-  var a = "${globalVariable} ${await dummy()} " + await "someString";
-  Expect.equals(a, "1 1 someString");
-  try {
-    var c = new C();
-    var d = c.nooooo() + await dummy();
-  } catch (e) {}
-  var cnt = 2;
-  var b = [1, 2, 3];
-  b[cnt] = await dummy();
-  Expect.equals(b[cnt], 1);
-  var e = b[0] + await dummy();
-  Expect.equals(e, 2);
-  Expect.equals(nonAsyncFunction(), 4);
-}
-
-conditionals() async {
-  var a = false;
-  var b = true;
-  var c = (a || b) || await dummy();
-  Expect.isTrue(c);
-  var d = (a || b) ? a : await dummy();
-  Expect.isFalse(d);
-  var e = (a is int) ? await dummy() : 2;
-  Expect.equals(e, 2);
-  try {
-    var f = (a is int) ? await dummy() : 2;
-  } catch (e) {}
-}
-
-main() {
-  for (int i = 0; i < 10; i++) {
-    staticMembers();
-    topLevelMembers();
-    instanceMembers();
-    conditionals();
-    others();
-  }
-}
diff --git a/tests/language/bad_constructor_test.dart b/tests/language/bad_constructor_test.dart
deleted file mode 100644
index 968f789..0000000
--- a/tests/language/bad_constructor_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-
-class A {
-  // Constructor may not be static.
-  static A(); // //# 00: compile-time error
-
-  // Factory may not be static.
-  static factory A() { return null; } // //# 01: syntax error
-
-  // Named constructor may not conflict with names of methods and fields.
-  var m;
-  A.m() { m = 0; } // //# 04: compile-time error
-
-  set q(var value) {
-    m = 0;
-  } // No name conflict with q=.
-  A.q(); //  //# 05: ok
-  A(); //    //# 05: ok
-
-  A.foo() : m = 0; // //# 06: compile-time error
-  int foo(int a, int b) => a + b * m;
-}
-
-class B {
-  // Constructor may not be static.
-  static B(){} // //# 07: compile-time error
-}
-
-main() {
-  new A();
-  new B();
-}
diff --git a/tests/language/bad_initializer1_negative_test.dart b/tests/language/bad_initializer1_negative_test.dart
deleted file mode 100644
index 0258dd1..0000000
--- a/tests/language/bad_initializer1_negative_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-// Variable initializer must not reference the initialized variable.
-
-class BadInitializer1NegativeTest {
-  static testMain() {
-    final List elems = const [
-      const [1, 2.0, true, false, 0xffffffffff, elems],
-      "a",
-      "b"
-    ];
-  }
-}
-
-main() {
-  BadInitializer1NegativeTest.testMain();
-}
diff --git a/tests/language/bad_initializer2_negative_test.dart b/tests/language/bad_initializer2_negative_test.dart
deleted file mode 100644
index 33a977a..0000000
--- a/tests/language/bad_initializer2_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Variable initializer must not reference the initialized variable.
-
-import "package:expect/expect.dart";
-
-class BadInitializer2NegativeTest {
-  static testMain() {
-    var foo = (int n) {
-      if (n == 0) {
-        return 0;
-      } else {
-        return 1 + foo(n - 1); // <-- self-reference to closure foo.
-      }
-    };
-    Expect.equals(4, foo(4));
-  }
-}
-
-main() {
-  BadInitializer2NegativeTest.testMain();
-}
diff --git a/tests/language/bad_named_constructor_negative_test.dart b/tests/language/bad_named_constructor_negative_test.dart
deleted file mode 100644
index a28b37d..0000000
--- a/tests/language/bad_named_constructor_negative_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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 BadNamedConstructorNegativeTest {
-  A.foo() {}
-}
-
-main() {
-  BadNamedConstructorNegativeTest.testMain();
-}
diff --git a/tests/language/bad_named_parameters2_test.dart b/tests/language/bad_named_parameters2_test.dart
deleted file mode 100644
index cda1790..0000000
--- a/tests/language/bad_named_parameters2_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-// Dart test program for testing bad named parameters.
-
-import "package:expect/expect.dart";
-
-class BadNamedParameters2Test {
-  int foo(int a) {
-    // Although no optional named parameters are declared, we must check that
-    // no named arguments are passed in, either here or in the resolving stub.
-    return a;
-  }
-
-  static testMain() {
-    BadNamedParameters2Test np = new BadNamedParameters2Test();
-
-    // Verify that NoSuchMethod is called after an error is detected.
-    bool caught;
-    try {
-      caught = false;
-      // No formal parameter named b.
-      np.foo(b:25); // //# 01: static type warning
-    } on NoSuchMethodError catch (e) {
-      caught = true;
-    }
-    Expect.equals(true, caught); //# 01: continued
-  }
-}
-
-main() {
-  BadNamedParameters2Test.testMain();
-}
diff --git a/tests/language/bad_named_parameters_test.dart b/tests/language/bad_named_parameters_test.dart
deleted file mode 100644
index 8a24592..0000000
--- a/tests/language/bad_named_parameters_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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.
-// Dart test program for testing bad named parameters.
-
-import "package:expect/expect.dart";
-
-class BadNamedParametersTest {
-  int f42(int a, {int b: 20, int c: 30}) {
-    return 100 * (100 * a + b) + c;
-  }
-
-  int f52(int a, {int b: 20, int c, int d: 40}) {
-    return 100 * (100 * (100 * a + b) + (c == null ? 0 : c)) + d;
-  }
-
-  static testMain() {
-    BadNamedParametersTest np = new BadNamedParametersTest();
-
-    // Verify that NoSuchMethod is called after an error is detected.
-    bool caught;
-    try {
-      caught = false;
-      // Parameter b passed twice.
-      np.f42(10, 25, b:25); //# 01: static type warning
-    } on NoSuchMethodError catch (e) {
-      caught = true;
-    }
-    Expect.equals(true, caught); //# 01: continued
-    try {
-      caught = false;
-      // Parameter x does not exist.
-      np.f42(10, 25, x:99); //# 02: static type warning
-    } on NoSuchMethodError catch (e) {
-      caught = true;
-    }
-    Expect.equals(true, caught); //# 02: continued
-    try {
-      caught = false;
-      // Parameter b1 does not exist.
-      np.f52(10, b:25, b1:99, c:35); //# 03: static type warning
-    } on NoSuchMethodError catch (e) {
-      caught = true;
-    }
-    Expect.equals(true, caught); //# 03: continued
-    try {
-      caught = false;
-      // Too many parameters.
-      np.f42(10, 20, 30, 40); //# 04: static type warning
-    } on NoSuchMethodError catch (e) {
-      caught = true;
-    }
-    Expect.equals(true, caught); //# 04: continued
-    try {
-      caught = false;
-      // Too few parameters.
-      np.f42(b:25); //# 05: static type warning
-    } on NoSuchMethodError catch (e) {
-      caught = true;
-    }
-    Expect.equals(true, caught); //# 05: continued
-  }
-}
-
-main() {
-  BadNamedParametersTest.testMain();
-}
diff --git a/tests/language/bad_override_test.dart b/tests/language/bad_override_test.dart
deleted file mode 100644
index 8a405b2..0000000
--- a/tests/language/bad_override_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-
-class Fisk {
-  get fisk => null;
-  static //           //# 01: static type warning
-  set fisk(x) {}
-
-  static //           //# 02: static type warning
-  get hest => null;
-  set hest(x) {}
-
-  foo() {}
-  var field;
-  method() {}
-  nullary() {}
-}
-
-class Hest extends Fisk {
-  static foo() {} //  //# 03: compile-time error
-  field() {} //       //# 04: compile-time error
-  var method; //      //# 05: compile-time error
-  nullary(x) {} //    //# 06: static type warning
-}
-
-main() {
-  new Fisk();
-  new Hest();
-}
diff --git a/tests/language/bad_raw_string_test.dart b/tests/language/bad_raw_string_test.dart
deleted file mode 100644
index e40d8e2..0000000
--- a/tests/language/bad_raw_string_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-main() {
-  // Raw String may not contain newline (may not be multi-line).
-  String x = ''
-    r' // //# 01: syntax error
-' //      //# 01: continued
-    r" // //# 02: syntax error
-" //      //# 02: continued
-      // Test that a raw string containing just one character, a \n char, fails.
-      // Enclose the test string in a bigger multiline string, except in case 03:
-    ''' // //# 03: syntax error
-      """
-    ''' // //# 03: continued
-    r'
-'
-    ''' // //# 03: continued
-    """
-    ''' // //# 03: continued
-      ;
-}
diff --git a/tests/language/bad_typedef_test.dart b/tests/language/bad_typedef_test.dart
deleted file mode 100644
index 0c005ba..0000000
--- a/tests/language/bad_typedef_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-// Dart test for a function type test that cannot be eliminated at compile time.
-
-import "package:expect/expect.dart";
-
-typedef int H(
-    Function
-    Function //  //# 00: syntax error
-        x);
-
-main() {
-  bool b = true;
-  Expect.isFalse(b is H);
-}
diff --git a/tests/language/bailout2_test.dart b/tests/language/bailout2_test.dart
deleted file mode 100644
index 1f2b76d..0000000
--- a/tests/language/bailout2_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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";
-
-var a;
-
-main() {
-  // Write a loop to force a bailout method on [A.foo].
-  for (int i = 0; i < 10; i++) {
-    if (a != null) new A().foo([]);
-    Expect.equals(42, new A().foo(new A()));
-  }
-}
-
-class A {
-  // In dart2js, the optimized version of foo tries to optimize the
-  // uses of a.length (which is used two times here: for the index,
-  // and for the bounds check), and that optmization used to crash
-  // the compiler.
-  foo(a) => a[a.length];
-
-  int get length => 42;
-  operator [](index) => 42;
-}
diff --git a/tests/language/bailout3_test.dart b/tests/language/bailout3_test.dart
deleted file mode 100644
index 6fc0923..0000000
--- a/tests/language/bailout3_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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";
-
-// Test that the return type of a method is being registered for both
-// its bailout and optimized version in dart2js.
-
-var a;
-
-bar() {
-  if (a[0] == 0) {
-    // Force bailout version.
-    bar();
-    // Avoid inlining.
-    throw 0;
-  }
-  for (int i = 0; i < 10; i++) {
-    a[0] = 42;
-  }
-  // This return should say that bar can return an array or unknown.
-  return a;
-}
-
-foo() {
-  if (a[0] == 0) {
-    // Avoid inlining.
-    throw 0;
-  }
-  var b = bar();
-  // This check used to fail because dart2js was assuming [b] was an
-  // array.
-  Expect.equals(1, b.length);
-}
-
-main() {
-  a = new Map();
-  bar();
-  foo();
-}
diff --git a/tests/language/bailout4_test.dart b/tests/language/bailout4_test.dart
deleted file mode 100644
index 2985e96..0000000
--- a/tests/language/bailout4_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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";
-
-// Test that dart2s computes the right bailout environment in presence
-// of nested loops.
-
-class A {
-  operator [](index) => 42;
-}
-
-var a = new A();
-var b = new List(4);
-int count = 0;
-
-main() {
-  // Make the method recursive to make sure it gets an optimized
-  // version.
-  if (b[0] != null) main();
-
-  for (int i = 0; i < 2; i++) {
-    for (int j = 0; j < 2; j++) {
-      for (int k = 0; k < 2; k++) {
-        Expect.equals(42, a[i + j + k]);
-        count++;
-      }
-    }
-  }
-  Expect.equals(8, count);
-}
diff --git a/tests/language/bailout5_test.dart b/tests/language/bailout5_test.dart
deleted file mode 100644
index 1d9c233..0000000
--- a/tests/language/bailout5_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Test to make sure the bailout environment in dart2js is correct.
-
-var global;
-
-class A {
-  var array;
-
-  initArray() {
-    return global[0] == null ? [null] : new Map();
-  }
-
-  bar() {
-    array = initArray();
-    do {
-      var element = array[0]; // bailout here
-      if (element is Map) continue;
-      if (element == null) break;
-    } while (true);
-    return global[0]; // bailout here
-  }
-
-  baz() {
-    do {
-      var element = bar();
-      if (element == null) return global[0]; // bailout here
-      if (element is Map) continue;
-      if (element is num) break;
-    } while (true);
-    return global[0]; // bailout here
-  }
-}
-
-void main() {
-  global = [1];
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(1, new A().baz());
-    Expect.equals(1, new A().bar());
-  }
-  global = new Map();
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(null, new A().baz());
-    Expect.equals(null, new A().bar());
-  }
-
-  global[0] = 42;
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(42, new A().baz());
-    Expect.equals(42, new A().bar());
-  }
-}
diff --git a/tests/language/bailout6_test.dart b/tests/language/bailout6_test.dart
deleted file mode 100644
index 38b84db..0000000
--- a/tests/language/bailout6_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Test for dart2js to make sure the computed bailout environment is
-// correct.
-
-var global;
-
-class A {
-  var array;
-
-  foo() {
-    do {
-      var element = global;
-      if (element is Map) continue;
-      if (element is num) break;
-    } while (true);
-    return array[0]; // bailout here.
-  }
-}
-
-void main() {
-  var a = new A();
-  a.array = [42];
-  global = 42;
-
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(42, a.foo());
-  }
-
-  a.array = new Map();
-  a.array[0] = 42;
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(42, a.foo());
-  }
-  global = null;
-}
diff --git a/tests/language/bailout7_test.dart b/tests/language/bailout7_test.dart
deleted file mode 100644
index b71fe72..0000000
--- a/tests/language/bailout7_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Test to make sure the do/while loop exit condition is generated.
-
-var global;
-
-class A {
-  var array;
-
-  initArray() {
-    if (global[0] == null) {
-      return [2];
-    } else {
-      var map = new Map();
-      map[0] = 2;
-      return map;
-    }
-  }
-
-  bar() {
-    array = initArray();
-    var element;
-    do {
-      element = array[0]; // bailout here
-      if (element is Map) continue;
-      if (element == null) break;
-    } while (element != 2);
-    return global[0]; // bailout here
-  }
-}
-
-void main() {
-  global = [2];
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(2, new A().bar());
-  }
-
-  global = new Map();
-  global[0] = 2;
-  for (int i = 0; i < 2; i++) {
-    Expect.equals(2, new A().bar());
-  }
-}
diff --git a/tests/language/bailout_container_type_test.dart b/tests/language/bailout_container_type_test.dart
deleted file mode 100644
index 7b58f69..0000000
--- a/tests/language/bailout_container_type_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to generate bad code for the
-// non-bailout version of [main].
-
-var a = [
-  false,
-  [1, 2, 3]
-];
-var b;
-
-main() {
-  // Defeat type inferencing for [b].
-  b = new Object();
-  b = 42;
-  b = [];
-
-  // Make the function recursive to force a bailout version.
-  if (a[0]) main();
-
-  // We used to ask [b] to be of the same type as [a], but not
-  // checking that the length and element type are the same.
-  var arrayPhi = a[0] ? a : b;
-
-  if (arrayPhi.length != 0) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/bailout_test.dart b/tests/language/bailout_test.dart
deleted file mode 100644
index a88780d..0000000
--- a/tests/language/bailout_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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";
-
-// Test that a call to a bailout method in dart2js resolves to the
-// right method.
-
-var reachedAfoo = new C();
-
-class A {
-  foo() {
-    // Using '++' makes sure there is a type guard.
-    reachedAfoo++;
-  }
-}
-
-class B extends A {
-  foo() {
-    reachedAfoo++;
-    // Call the Expect method after the type guard.
-    Expect.fail('Should never reach B.foo');
-  }
-
-  bar() {
-    super.foo();
-  }
-}
-
-class C {
-  int value = 0;
-  operator +(val) {
-    value += val;
-    return this;
-  }
-}
-
-main() {
-  // Using a loop makes sure the 'foo' methods will have an optimized
-  // version.
-  while (reachedAfoo.value != 0) {
-    new A().foo();
-    new B().foo();
-  }
-  new B().bar();
-  Expect.equals(1, reachedAfoo.value);
-}
diff --git a/tests/language/bind_test.dart b/tests/language/bind_test.dart
deleted file mode 100644
index 3617af3..0000000
--- a/tests/language/bind_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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";
-
-class Bound {
-  run() {
-    return 42;
-  }
-}
-
-void main() {
-  var runner = new Bound().run;
-  Expect.equals(42, runner());
-}
diff --git a/tests/language/bit_operations_test.dart b/tests/language/bit_operations_test.dart
deleted file mode 100644
index 3c2dc93..0000000
--- a/tests/language/bit_operations_test.dart
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing bitwise operations.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation --enable-inlining-annotations
-
-import "package:expect/expect.dart";
-
-const neverInline = "NeverInline";
-
-void main() {
-  for (int i = 0; i < 4; i++) {
-    test();
-  }
-}
-
-void test() {
-  Expect.equals(3, (3 & 7));
-  Expect.equals(7, (3 | 7));
-  Expect.equals(4, (3 ^ 7));
-  Expect.equals(25, (100 >> 2));
-  Expect.equals(400, (100 << 2));
-  Expect.equals(-25, (-100 >> 2));
-  Expect.equals(-101, ~100);
-  Expect.equals(0x10000000000000000, 1 << 64);
-  Expect.equals(-0x10000000000000000, -1 << 64);
-  Expect.equals(0x40000000, 0x04000000 << 4);
-  Expect.equals(0x4000000000000000, 0x0400000000000000 << 4);
-  Expect.equals(0, ~ -1);
-  Expect.equals(-1, ~0);
-
-  Expect.equals(0, 1 >> 160);
-  Expect.equals(-1, -1 >> 160);
-
-  Expect.equals(
-      0x100000000000000001, 0x100000000000000001 & 0x100000100F00000001);
-  Expect.equals(0x1, 0x1 & 0x100000100F00000001);
-  Expect.equals(0x1, 0x100000100F00000001 & 0x1);
-
-  Expect.equals(
-      0x100000100F00000001, 0x100000000000000001 | 0x100000100F00000001);
-  Expect.equals(0x100000100F00000011, 0x11 | 0x100000100F00000001);
-  Expect.equals(0x100000100F00000011, 0x100000100F00000001 | 0x11);
-
-  Expect.equals(
-      0x0F000F00000000000000, 0x0F00F00000000000001 ^ 0xFF00000000000000001);
-  Expect.equals(0x31, 0xF00F00000000000001 ^ 0xF00F00000000000030);
-  Expect.equals(0xF00F00000000000031, 0xF00F00000000000001 ^ 0x30);
-  Expect.equals(0xF00F00000000000031, 0x30 ^ 0xF00F00000000000001);
-
-  Expect.equals(0xF0000000000000000F, 0xF0000000000000000F7 >> 4);
-  Expect.equals(15, 0xF00000000 >> 32);
-  Expect.equals(1030792151040, 16492674416655 >> 4);
-
-  Expect.equals(0xF0000000000000000F0, 0xF0000000000000000F << 4);
-  Expect.equals(0xF00000000, 15 << 32);
-
-  testNegativeValueShifts();
-  testPositiveValueShifts();
-  testNoMaskingOfShiftCount();
-  testNegativeCountShifts();
-  for (int i = 0; i < 20; i++) {
-    testCornerCasesRightShifts();
-    testRightShift64Bit();
-    testLeftShift64Bit();
-    testLeftShift64BitWithOverflow1();
-    testLeftShift64BitWithOverflow2();
-    testLeftShift64BitWithOverflow3();
-  }
-
-  // Test precedence.
-  testPrecedence(4, 5, 3, 1);
-  testPrecedence(3, 4, 5, 9);
-  testPrecedence(0x5c71, 0x6b92, 0x7654, 0x7d28);
-
-  // Test more special cases.
-  testRightShift65();
-}
-
-void testCornerCasesRightShifts() {
-  var v32 = 0xFF000000;
-  var v64 = 0xFF00000000000000;
-  Expect.equals(0x3, v32 >> 0x1E);
-  Expect.equals(0x1, v32 >> 0x1F);
-  Expect.equals(0x0, v32 >> 0x20);
-  Expect.equals(0x3, v64 >> 0x3E);
-  Expect.equals(0x1, v64 >> 0x3F);
-  Expect.equals(0x0, v64 >> 0x40);
-}
-
-void testRightShift64Bit() {
-  var t = 0x1ffffffff;
-  Expect.equals(0xffffffff, t >> 1);
-}
-
-void testLeftShift64Bit() {
-  var t = 0xffffffff;
-  Expect.equals(0xffffffff, t << 0);
-  Expect.equals(0x1fffffffe, t << 1);
-  Expect.equals(0x7fffffff80000000, t << 31);
-  Expect.equals(0x10000000000000000, 2*(t+1) << 31); //# 01: static type warning
-  Expect.equals(0x20000000000000000, 4*(t+1) << 31); //# 02: static type warning
-  Expect.equals(0x8000000000000000, (t + 1) << 31);
-}
-
-void testLeftShift64BitWithOverflow1() {
-  var t = 0xffffffff;
-  Expect.equals(0x10000000000000000, 2*(t+1) << 31); //# 03: static type warning
-}
-
-void testLeftShift64BitWithOverflow2() {
-  var t = 0xffffffff;
-  Expect.equals(0x20000000000000000, 4*(t+1) << 31); //# 04: static type warning
-}
-
-void testLeftShift64BitWithOverflow3() {
-  var t = 0xffffffff;
-  Expect.equals(0x8000000000000000, (t + 1) << 31);
-}
-
-void testNegativeCountShifts() {
-  bool throwOnLeft(a, b) {
-    try {
-      var x = a << b;
-      return false;
-    } catch (e) {
-      return true;
-    }
-  }
-
-  bool throwOnRight(a, b) {
-    try {
-      var x = a >> b;
-      return false;
-    } catch (e) {
-      return true;
-    }
-  }
-
-  Expect.isTrue(throwOnLeft(12, -3));
-  Expect.isTrue(throwOnRight(12, -3));
-  for (int i = 0; i < 20; i++) {
-    Expect.isFalse(throwOnLeft(12, 3));
-    Expect.isFalse(throwOnRight(12, 3));
-  }
-}
-
-void testNegativeValueShifts() {
-  for (int value = 0; value > -100; value--) {
-    for (int i = 0; i < 300; i++) {
-      int b = (value << i) >> i;
-      Expect.equals(value, b);
-    }
-  }
-}
-
-void testPositiveValueShifts() {
-  for (int value = 0; value < 100; value++) {
-    for (int i = 0; i < 300; i++) {
-      int b = (value << i) >> i;
-      Expect.equals(value, b);
-    }
-  }
-}
-
-void testNoMaskingOfShiftCount() {
-  // Shifts which would behave differently if shift count was masked into a
-  // range.
-  Expect.equals(0, 0 >> 256);
-  Expect.equals(0, 1 >> 256);
-  Expect.equals(0, 2 >> 256);
-  Expect.equals(0, shiftRight(0, 256));
-  Expect.equals(0, shiftRight(1, 256));
-  Expect.equals(0, shiftRight(2, 256));
-
-  for (int shift = 1; shift <= 256; shift++) {
-    Expect.equals(0, shiftRight(1, shift));
-    Expect.equals(-1, shiftRight(-1, shift));
-    Expect.equals(true, shiftLeft(1, shift) > shiftLeft(1, shift - 1));
-  }
-}
-
-int shiftLeft(int a, int b) {
-  return a << b;
-}
-
-int shiftRight(int a, int b) {
-  return a >> b;
-}
-
-void testPrecedence(int a, int b, int c, int d) {
-  // & binds stronger than ^, which binds stronger than |.
-  int result = a & b ^ c | d & b ^ c;
-  Expect.equals(((a & b) ^ c) | ((d & b) ^ c), result); //     &^|
-  Expect.notEquals((a & (b ^ c)) | (d & (b ^ c)), result); //  ^&|
-  Expect.notEquals((a & b) ^ (c | (d & b)) ^ c, result); //    &|^
-  Expect.notEquals((a & b) ^ ((c | d) & b) ^ c, result); //    |&^
-  Expect.notEquals(a & (b ^ (c | d)) & (b ^ c), result); //    |^&
-  Expect.notEquals(a & ((b ^ c) | d) & (b ^ c), result); //    ^|&
-  // Binds stronger than relational operators.
-  Expect.equals((a & b) < (c & d), a & b < c & d);
-  // Binds weaker than shift operators.
-  Expect.equals((a & (b << c)) ^ d, a & b << c ^ d);
-  Expect.notEquals((a & b) << (c ^ d), a & b << c ^ d);
-}
-
-@neverInline
-rightShift65Noinline(a) => a >> 65;
-
-testRightShift65() {
-  var a = 0x5f22334455667788;
-  var b = -0x5f22334455667788;
-
-  for (var i = 0; i < 20; ++i) {
-    Expect.equals(0, rightShift65Noinline(a));
-    Expect.equals(-1, rightShift65Noinline(b));
-  }
-}
diff --git a/tests/language/bit_shift_test.dart b/tests/language/bit_shift_test.dart
deleted file mode 100644
index 4c4e8f6..0000000
--- a/tests/language/bit_shift_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Note: in Dart 2 mode all integers are 64-bit already.
-// Still, it is harmless to apply _uint64Mask because (1 << 64) is 0 (all bits
-// are shifted out), so _uint64Mask is -1 (its bit pattern is 0xffffffffffffffff).
-const _uint64Mask = (1 << 64) - 1;
-
-constants() {
-  Expect.equals(0, 499 >> 33);
-  Expect.equals(0, (499 << 33) & 0xFFFFFFFF);
-  Expect.equals(0, (499 << 32) >> 65);
-  Expect.equals(0, ((499 << 32) << 65) & _uint64Mask);
-}
-
-foo(i) {
-  if (i != 0) {
-    y--;
-    foo(i - 1);
-    y++;
-  }
-}
-
-var y;
-
-// id returns [x] in a way that should be difficult to predict statically.
-id(x) {
-  y = x;
-  foo(10);
-  return y;
-}
-
-interceptors() {
-  Expect.equals(0, id(499) >> 33);
-  Expect.equals(0, (id(499) << 33) & 0xFFFFFFFF);
-  Expect.equals(0, id(499 << 32) >> 65);
-  Expect.equals(0, (id(499 << 32) << 65) & _uint64Mask);
-}
-
-speculative() {
-  var a = id(499);
-  var b = id(499 << 32);
-  for (int i = 0; i < 1; i++) {
-    Expect.equals(0, a >> 33);
-    Expect.equals(0, (a << 33) & 0xFFFFFFFF);
-    Expect.equals(0, b >> 65);
-    Expect.equals(0, (b << 65) & _uint64Mask);
-  }
-}
-
-// JavaScript shifts by the amount modulo 32. That is x << y is equivalent to
-// x << (y & 0x1F). Dart does not.
-main() {
-  for (var i = 0; i < 10; ++i) {
-    constants();
-    interceptors();
-    speculative();
-  }
-}
diff --git a/tests/language/black_listed_test.dart b/tests/language/black_listed_test.dart
deleted file mode 100644
index fc94444..0000000
--- a/tests/language/black_listed_test.dart
+++ /dev/null
@@ -1,137 +0,0 @@
-// 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.
-// Dart test checking that static/instance field shadowing do not conflict.
-
-import 'package:expect/expect.dart' show Expect;
-
-// Test that certain interfaces/classes are blacklisted from being
-// implemented or extended.
-
-class MyBool
-    extends bool             //# 01a: compile-time error
-    implements bool          //# 01b: compile-time error
-    extends Object with bool //# 01c: compile-time error
-{
-  factory MyBool() => throw "bad";
-}
-
-abstract class MyBoolInterface
-    extends bool             //# 02a: compile-time error
-    implements bool          //# 02b: compile-time error
-    extends Object with bool //# 02c: compile-time error
-{
-  factory MyBoolInterface() => throw "bad";
-}
-
-class MyNum
-    extends num             //# 03a: compile-time error
-    implements num          //# 03b: compile-time error
-    extends Object with num //# 03c: compile-time error
-{
-  factory MyNum() => throw "bad";
-}
-
-abstract class MyNumInterface
-    extends num             //# 04a: compile-time error
-    implements num          //# 04b: compile-time error
-    extends Object with num //# 04c: compile-time error
-{
-  factory MyNumInterface() => throw "bad";
-}
-
-class MyInt
-    extends int             //# 05a: compile-time error
-    implements int          //# 05b: compile-time error
-    extends Object with int //# 05c: compile-time error
-{
-  factory MyInt() => throw "bad";
-}
-
-abstract class MyIntInterface
-    extends int             //# 06a: compile-time error
-    implements int          //# 06b: compile-time error
-    extends Object with int //# 06c: compile-time error
-{
-  factory MyIntInterface() => throw "bad";
-}
-
-class MyDouble
-    extends double             //# 07a: compile-time error
-    implements double          //# 07b: compile-time error
-    extends Object with double //# 07c: compile-time error
-{
-  factory MyDouble() => throw "bad";
-}
-
-abstract class MyDoubleInterface
-    extends double             //# 08a: compile-time error
-    implements double          //# 08b: compile-time error
-    extends Object with double //# 08c: compile-time error
-{
-  factory MyDoubleInterface() => throw "bad";
-}
-
-class MyString
-    extends String             //# 09a: compile-time error
-    implements String          //# 09b: compile-time error
-    extends Object with String //# 09c: compile-time error
-{
-  factory MyString() => throw "bad";
-}
-
-abstract class MyStringInterface
-    extends String             //# 10a: compile-time error
-    implements String          //# 10b: compile-time error
-    extends Object with String //# 10c: compile-time error
-{
-  factory MyStringInterface() => throw "bad";
-}
-
-class MyFunction implements Function {
-  factory MyFunction() => throw "bad";
-}
-
-class MyOtherFunction extends Function {
-  factory MyOtherFunction() => throw "bad";
-}
-
-abstract class MyFunctionInterface implements Function {
-  factory MyFunctionInterface() => throw "bad";
-}
-
-class MyDynamic
-    extends dynamic             //# 13a: compile-time error
-    implements dynamic          //# 13b: compile-time error
-    extends Object with dynamic //# 13c: compile-time error
-{
-  factory MyDynamic() => throw "bad";
-}
-
-abstract class MyDynamicInterface
-    extends dynamic             //# 14a: compile-time error
-    implements dynamic          //# 14b: compile-time error
-    extends Object with dynamic //# 14c: compile-time error
-{
-  factory MyDynamicInterface() => throw "bad";
-}
-
-bool isBadString(e) => identical("bad", e);
-
-main() {
-  Expect.throws(() => new MyBool(), isBadString);
-  Expect.throws(() => new MyBoolInterface(), isBadString);
-  Expect.throws(() => new MyNum(), isBadString);
-  Expect.throws(() => new MyNumInterface(), isBadString);
-  Expect.throws(() => new MyInt(), isBadString);
-  Expect.throws(() => new MyIntInterface(), isBadString);
-  Expect.throws(() => new MyDouble(), isBadString);
-  Expect.throws(() => new MyDoubleInterface(), isBadString);
-  Expect.throws(() => new MyString(), isBadString);
-  Expect.throws(() => new MyStringInterface(), isBadString);
-  Expect.throws(() => new MyFunction(), isBadString);
-  Expect.throws(() => new MyOtherFunction(), isBadString);
-  Expect.throws(() => new MyFunctionInterface(), isBadString);
-  Expect.throws(() => new MyDynamic(), isBadString);
-  Expect.throws(() => new MyDynamicInterface(), isBadString);
-}
diff --git a/tests/language/body_less_constructor_wrong_arg_negative_test.dart b/tests/language/body_less_constructor_wrong_arg_negative_test.dart
deleted file mode 100644
index f0becab..0000000
--- a/tests/language/body_less_constructor_wrong_arg_negative_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-main() {
-  C o = const C(1);
-}
-
-class Base {
-  final String name;
-  const Base(this.name);
-}
-
-class C extends Base {
-  const C(var x) : super(); // call super constructor with wrong argument count.
-}
diff --git a/tests/language/bool_check_test.dart b/tests/language/bool_check_test.dart
deleted file mode 100644
index d01f6bf..0000000
--- a/tests/language/bool_check_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2014, 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";
-
-bool typeChecksEnabled() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-bool assertionsEnabled() {
-  try {
-    assert(false);
-    return false;
-  } on AssertionError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-final bool typeChecksOn = typeChecksEnabled();
-final bool assertionsOn = assertionsEnabled();
-
-ifExpr(e) {
-  if (e)
-    return true;
-  else
-    return false;
-}
-
-bool ifNull() => ifExpr(null);
-bool ifString() => ifExpr("true");
-
-main() {
-  print("type checks: $typeChecksOn");
-  print("assertions:  $assertionsOn");
-
-  if (typeChecksOn) {
-    Expect.throws(ifNull, (e) => e is AssertionError);
-  }
-  if (assertionsOn && !typeChecksOn) {
-    Expect.throws(ifNull, (e) => e is AssertionError);
-  }
-  if (!typeChecksOn && !assertionsOn) {
-    Expect.identical(false, ifNull());
-  }
-
-  if (!typeChecksOn) {
-    Expect.identical(false, ifString());
-  }
-  if (typeChecksOn) {
-    Expect.throws(ifString, (e) => e is TypeError);
-  }
-}
diff --git a/tests/language/bool_condition_check_test.dart b/tests/language/bool_condition_check_test.dart
deleted file mode 100644
index c3db7ff..0000000
--- a/tests/language/bool_condition_check_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Check that passing `null` for a boolean typed parameter will still cause
-// a boolean conversion error when used in a condition in checked mode.
-
-import 'package:expect/expect.dart';
-
-@NoInline()
-String check({bool a, bool b}) {
-  String a_string = a ? 'a' : '';
-  String b_string = b ? 'b' : '';
-  return '$a_string$b_string';
-}
-
-class Class {
-  final String field;
-  Class({bool a: false, bool b: true}) : this.field = check(a: a, b: b);
-}
-
-main() {
-  Expect.equals('', new Class(a: null, b: null).field); //# 01: dynamic type error
-}
diff --git a/tests/language/bool_test.dart b/tests/language/bool_test.dart
deleted file mode 100644
index 51d4d9f..0000000
--- a/tests/language/bool_test.dart
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class BoolTest {
-  static void testEquality() {
-    Expect.equals(true, true);
-    Expect.equals(false, false);
-    Expect.isTrue(identical(true, true));
-    Expect.isFalse(identical(true, false));
-    Expect.isTrue(identical(false, false));
-    Expect.isFalse(identical(false, true));
-    Expect.isFalse(!identical(true, true));
-    Expect.isTrue(!identical(true, false));
-    Expect.isFalse(!identical(false, false));
-    Expect.isTrue(!identical(false, true));
-    Expect.isTrue(true == true);
-    Expect.isFalse(true == false);
-    Expect.isTrue(false == false);
-    Expect.isFalse(false == true);
-    Expect.isFalse(true != true);
-    Expect.isTrue(true != false);
-    Expect.isFalse(false != false);
-    Expect.isTrue(false != true);
-    Expect.isTrue(identical(true, (true == true)));
-    Expect.isTrue(identical(false, (true == false)));
-    Expect.isTrue(identical(true, (false == false)));
-    Expect.isTrue(identical(false, (false == true)));
-    Expect.isFalse(!identical(true, (true == true)));
-    Expect.isFalse(!identical(false, (true == false)));
-    Expect.isFalse(!identical(true, (false == false)));
-    Expect.isFalse(!identical(false, (false == true)));
-    Expect.isFalse(identical(false, (true == true)));
-    Expect.isFalse(identical(true, (true == false)));
-    Expect.isFalse(identical(false, (false == false)));
-    Expect.isFalse(identical(true, (false == true)));
-    Expect.isTrue(!identical(false, (true == true)));
-    Expect.isTrue(!identical(true, (true == false)));
-    Expect.isTrue(!identical(false, (false == false)));
-    Expect.isTrue(!identical(true, (false == true)));
-    // Expect.equals could rely on a broken boolean equality.
-    if (true == false) {
-      throw "Expect.equals broken";
-    }
-    if (false == true) {
-      throw "Expect.equals broken";
-    }
-    if (identical(true, false)) {
-      throw "Expect.equals broken";
-    }
-    if (identical(false, true)) {
-      throw "Expect.equals broken";
-    }
-    if (true == true) {} else {
-      throw "Expect.equals broken";
-    }
-    if (false == false) {} else {
-      throw "Expect.equals broken";
-    }
-    if (identical(true, true)) {} else {
-      throw "Expect.equals broken";
-    }
-    if (identical(false, false)) {} else {
-      throw "Expect.equals broken";
-    }
-    if (true != false) {} else {
-      throw "Expect.equals broken";
-    }
-    if (false != true) {} else {
-      throw "Expect.equals broken";
-    }
-    if (!identical(true, false)) {} else {
-      throw "Expect.equals broken";
-    }
-    if (!identical(false, true)) {} else {
-      throw "Expect.equals broken";
-    }
-    if (true != true) {
-      throw "Expect.equals broken";
-    }
-    if (false != false) {
-      throw "Expect.equals broken";
-    }
-    if (!identical(true, true)) {
-      throw "Expect.equals broken";
-    }
-    if (!identical(false, false)) {
-      throw "Expect.equals broken";
-    }
-  }
-
-  static void testToString() {
-    Expect.equals("true", true.toString());
-    Expect.equals("false", false.toString());
-  }
-
-  static void testNegate(isTrue, isFalse) {
-    Expect.equals(true, !false);
-    Expect.equals(false, !true);
-    Expect.equals(true, !isFalse);
-    Expect.equals(false, !isTrue);
-  }
-
-  static void testLogicalOp() {
-    testOr(a, b, onTypeError) {
-      try {
-        return a || b;
-      } on TypeError catch (t) {
-        return onTypeError;
-      }
-    }
-
-    testAnd(a, b, onTypeError) {
-      try {
-        return a && b;
-      } on TypeError catch (t) {
-        return onTypeError;
-      }
-    }
-
-    var isTrue = true;
-    var isFalse = false;
-    Expect.equals(true, testAnd(isTrue, isTrue, false));
-    Expect.equals(false, testAnd(isTrue, 0, false));
-    Expect.equals(false, testAnd(isTrue, 1, false));
-    Expect.equals(false, testAnd(isTrue, "true", false));
-    Expect.equals(false, testAnd(0, isTrue, false));
-    Expect.equals(false, testAnd(1, isTrue, false));
-
-    Expect.equals(true, testOr(isTrue, isTrue, false));
-    Expect.equals(true, testOr(isFalse, isTrue, false));
-    Expect.equals(true, testOr(isTrue, isFalse, false));
-    Expect.equals(true, testOr(isTrue, 0, true));
-    Expect.equals(true, testOr(isTrue, 1, true));
-    Expect.equals(false, testOr(isFalse, 0, false));
-    Expect.equals(false, testOr(isFalse, 1, false));
-    Expect.equals(true, testOr(0, isTrue, true));
-    Expect.equals(true, testOr(1, isTrue, true));
-    Expect.equals(false, testOr(0, isFalse, false));
-    Expect.equals(false, testOr(1, isFalse, false));
-
-    // Test side effects.
-    int trueCount = 0, falseCount = 0;
-
-    trueFunc() {
-      trueCount++;
-      return true;
-    }
-
-    falseFunc() {
-      falseCount++;
-      return false;
-    }
-
-    Expect.equals(0, trueCount);
-    Expect.equals(0, falseCount);
-
-    trueFunc() && trueFunc();
-    Expect.equals(2, trueCount);
-    Expect.equals(0, falseCount);
-
-    trueCount = falseCount = 0;
-    falseFunc() && trueFunc();
-    Expect.equals(0, trueCount);
-    Expect.equals(1, falseCount);
-
-    trueCount = falseCount = 0;
-    trueFunc() && falseFunc();
-    Expect.equals(1, trueCount);
-    Expect.equals(1, falseCount);
-
-    trueCount = falseCount = 0;
-    falseFunc() && falseFunc();
-    Expect.equals(0, trueCount);
-    Expect.equals(1, falseCount);
-
-    trueCount = falseCount = 0;
-    trueFunc() || trueFunc();
-    Expect.equals(1, trueCount);
-    Expect.equals(0, falseCount);
-
-    trueCount = falseCount = 0;
-    falseFunc() || trueFunc();
-    Expect.equals(1, trueCount);
-    Expect.equals(1, falseCount);
-
-    trueCount = falseCount = 0;
-    trueFunc() || falseFunc();
-    Expect.equals(1, trueCount);
-    Expect.equals(0, falseCount);
-
-    trueCount = falseCount = 0;
-    falseFunc() || falseFunc();
-    Expect.equals(0, trueCount);
-    Expect.equals(2, falseCount);
-  }
-
-  static void testMain() {
-    testEquality();
-    testNegate(true, false);
-    testToString();
-    testLogicalOp();
-  }
-}
-
-main() {
-  BoolTest.testMain();
-}
diff --git a/tests/language/bootstrap_test.dart b/tests/language/bootstrap_test.dart
deleted file mode 100644
index 6b56a65..0000000
--- a/tests/language/bootstrap_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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 BootstrapTest {
-  static testMain() {
-    var obj = new Object();
-
-    return obj;
-  }
-}
-
-main() {
-  BootstrapTest.testMain();
-}
diff --git a/tests/language/bound_closure_equality_test.dart b/tests/language/bound_closure_equality_test.dart
deleted file mode 100644
index e68c4b0..0000000
--- a/tests/language/bound_closure_equality_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  const A();
-  foo() => 42;
-}
-
-class B {
-  foo() => 42;
-}
-
-main() {
-  // Use an array to defeat type inferencing.
-  var array = [new A(), new A(), new B(), new B()];
-  var set = new Set.from(array.map((a) => a.foo));
-  Expect.equals(array.length, set.length);
-  set.addAll(array.map((a) => a.foo));
-  Expect.equals(array.length, set.length);
-
-  for (int i = 0; i < array.length; i += 2) {
-    Expect.isTrue(set.contains(array[i].foo));
-    Expect.equals(array[i], array[i]);
-    Expect.equals(array[i].foo, array[i].foo);
-    Expect.equals(array[i].foo.hashCode, array[i].foo.hashCode);
-    for (int j = 0; j < array.length; j++) {
-      if (i == j) continue;
-      Expect.notEquals(array[i].foo, array[j].foo);
-    }
-  }
-
-  // Try with dart2js intercepted types.
-  array = ['foo', 'bar', [], [], const []];
-  set = new Set.from(array.map((a) => a.indexOf));
-  Expect.equals(array.length, set.length);
-  set.addAll(array.map((a) => a.indexOf));
-  Expect.equals(array.length, set.length);
-
-  for (int i = 0; i < array.length; i += 2) {
-    Expect.isTrue(set.contains(array[i].indexOf));
-    Expect.equals(array[i], array[i]);
-    Expect.equals(array[i].indexOf, array[i].indexOf);
-    Expect.equals(array[i].indexOf.hashCode, array[i].indexOf.hashCode);
-    for (int j = 0; j < array.length; j++) {
-      if (i == j) continue;
-      Expect.notEquals(array[i].indexOf, array[j].indexOf);
-    }
-  }
-
-  array = [const A(), const A()];
-  set = new Set.from(array.map((a) => a.foo));
-  Expect.equals(1, set.length);
-  set.addAll(array.map((a) => a.foo));
-  Expect.equals(1, set.length);
-
-  Expect.isTrue(set.contains(array[0].foo));
-  Expect.equals(array[0].foo, array[0].foo);
-  Expect.equals(array[0].foo.hashCode, array[0].foo.hashCode);
-  Expect.equals(array[0].foo, array[1].foo);
-  Expect.equals(array[0].foo.hashCode, array[1].foo.hashCode);
-
-  array = [const [], const []];
-  set = new Set.from(array.map((a) => a.indexOf));
-  Expect.equals(1, set.length);
-  set.addAll(array.map((a) => a.indexOf));
-  Expect.equals(1, set.length);
-
-  Expect.isTrue(set.contains(array[0].indexOf));
-  Expect.equals(array[0].indexOf, array[0].indexOf);
-  Expect.equals(array[0].indexOf.hashCode, array[0].indexOf.hashCode);
-  Expect.equals(array[0].indexOf, array[1].indexOf);
-  Expect.equals(array[0].indexOf.hashCode, array[1].indexOf.hashCode);
-}
diff --git a/tests/language/bound_closure_primitives_test.dart b/tests/language/bound_closure_primitives_test.dart
deleted file mode 100644
index 83ffe79..0000000
--- a/tests/language/bound_closure_primitives_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test to make sure dart2js does not try to use the same
-// BoundClosureClass between an intercepted method and a
-// non-intercepted method.
-
-import "package:expect/expect.dart";
-
-class A {
-  // Make dart2js try to share a bound closure for [foo] with a bound
-  // closure for [List.add], by having same number of arguments.
-  foo(a) => a;
-}
-
-main() {
-  var array = [[], new A()];
-  var method = array[0].add;
-  method(42);
-
-  method = array[1].foo;
-  Expect.equals(42, method(42));
-
-  Expect.equals(1, array[0].length);
-  Expect.isTrue(array[0].contains(42));
-}
diff --git a/tests/language/branch_canonicalization_test.dart b/tests/language/branch_canonicalization_test.dart
deleted file mode 100644
index dfb35f6..0000000
--- a/tests/language/branch_canonicalization_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that branch fusion correctly sets branch environment for comparisons
-// that require unboxing and does not fuse branches that can deoptimize.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-var sideEffect = true;
-
-barDouble(a, b) {
-  sideEffect = false;
-  final result = (a == b);
-  sideEffect = !sideEffect;
-  return result;
-}
-
-fooDouble(a, b) => barDouble(a, b) ? 1 : 0;
-
-barMint(a, b) {
-  sideEffect = false;
-  final result = (a == b);
-  sideEffect = !sideEffect;
-  return result;
-}
-
-fooMint(a, b) => barMint(a, b) ? 1 : 0;
-
-class A {
-  operator ==(other) => identical(this, other);
-}
-
-class B extends A {}
-
-class C extends A {}
-
-barPoly(a, b) {
-  sideEffect = false;
-  final result = a == b;
-  sideEffect = !sideEffect;
-  return result;
-}
-
-fooPoly(a, b) => barPoly(a, b) ? 1 : 0;
-
-main() {
-  final a = 1.0;
-  final b = 1 << 62;
-  final x = new A(), y = new B(), z = new C();
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(1, fooDouble(a, a));
-    Expect.isTrue(sideEffect);
-    Expect.equals(0, fooMint(b, 0));
-    Expect.isTrue(sideEffect);
-    Expect.equals(1, fooPoly(x, x));
-    Expect.equals(0, fooPoly(y, x));
-  }
-  Expect.equals(1, fooDouble(z, z));
-  Expect.isTrue(sideEffect);
-  Expect.equals(1, fooMint(z, z));
-  Expect.isTrue(sideEffect);
-  Expect.equals(1, fooPoly(z, z));
-  Expect.isTrue(sideEffect);
-}
diff --git a/tests/language/branches_test.dart b/tests/language/branches_test.dart
deleted file mode 100644
index b459176..0000000
--- a/tests/language/branches_test.dart
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for branches. Make sure that shortcuts work, even if they have
-// to jump over several expressions.
-
-import "package:expect/expect.dart";
-
-class BranchesTest {
-  static bool f() {
-    Expect.equals("Never reached", 0);
-    return true;
-  }
-
-  static void testMain() {
-    int checkPointCounter = 1;
-    int checkPoint1 = 0;
-    int checkPoint2 = 0;
-    int checkPoint3 = 0;
-    int checkPoint4 = 0;
-    int checkPoint5 = 0;
-    int checkPoint6 = 0;
-    int i = 0;
-    for (int i = 0; i < 2; i++) {
-      if (i == 0) {
-        checkPoint1 += checkPointCounter++;
-        if (true || // Test branch-if-true.
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f() ||
-            f()) {
-          checkPoint2 += checkPointCounter++;
-        }
-      } else {
-        // Test branch (jumping over the else branch).
-        checkPoint3 += checkPointCounter++;
-        if (false) {
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-          checkPoint4 = checkPointCounter++; // Never reached.
-        }
-      }
-      checkPoint5 += checkPointCounter++;
-    }
-    checkPoint6 += checkPointCounter++;
-    Expect.equals(1, checkPoint1);
-    Expect.equals(2, checkPoint2);
-    Expect.equals(4, checkPoint3);
-    Expect.equals(0, checkPoint4);
-    Expect.equals(8, checkPoint5);
-    Expect.equals(6, checkPoint6);
-  }
-}
-
-main() {
-  BranchesTest.testMain();
-}
diff --git a/tests/language/break_test.dart b/tests/language/break_test.dart
deleted file mode 100644
index ca79675..0000000
--- a/tests/language/break_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for breaks in for, do/while and while loops.
-
-import "package:expect/expect.dart";
-
-class BreakTest {
-  static testMain() {
-    int i;
-    int forCounter = 0;
-    for (i = 0; i < 10; i++) {
-      forCounter++;
-      if (i > 3) break;
-    }
-    Expect.equals(5, forCounter);
-    Expect.equals(4, i);
-
-    i = 0;
-    int doWhileCounter = 0;
-    do {
-      i++;
-      doWhileCounter++;
-      if (i > 3) break;
-    } while (i < 10);
-    Expect.equals(4, doWhileCounter);
-    Expect.equals(4, i);
-
-    i = 0;
-    int whileCounter = 0;
-    while (i < 10) {
-      i++;
-      whileCounter++;
-      if (i > 3) break;
-    }
-    Expect.equals(4, whileCounter);
-    Expect.equals(4, i);
-
-    // Use a label to break to the outer loop.
-    i = 0;
-    L:
-    while (i < 10) {
-      i++;
-      while (i > 5) {
-        break L;
-      }
-    }
-    Expect.equals(6, i);
-  }
-}
-
-main() {
-  BreakTest.testMain();
-}
diff --git a/tests/language/built_in_identifier_illegal_test.dart b/tests/language/built_in_identifier_illegal_test.dart
deleted file mode 100644
index d3bb320..0000000
--- a/tests/language/built_in_identifier_illegal_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-// Check that we cannot use a pseudo keyword at the class level code.
-
-// Pseudo keywords are not allowed to be used as class names.
-class abstract { } //   //# 01: syntax error
-class as { } //         //# 19: syntax error
-class dynamic { } //    //# 04: compile-time error
-class export { } //     //# 17: syntax error
-class external { } //   //# 20: syntax error
-class factory { } //    //# 05: syntax error
-class get { } //        //# 06: syntax error
-class implements { } // //# 07: syntax error
-class import { } //     //# 08: syntax error
-class library { } //    //# 10: syntax error
-class operator { } //   //# 12: syntax error
-class part { } //       //# 18: syntax error
-class set { } //        //# 13: syntax error
-class static { } //     //# 15: syntax error
-class typedef { } //    //# 16: syntax error
-
-main() {}
diff --git a/tests/language/built_in_identifier_prefix_library_abstract.dart b/tests/language/built_in_identifier_prefix_library_abstract.dart
deleted file mode 100644
index cdcabb4..0000000
--- a/tests/language/built_in_identifier_prefix_library_abstract.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library abstract;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_as.dart b/tests/language/built_in_identifier_prefix_library_as.dart
deleted file mode 100644
index 6e5a581..0000000
--- a/tests/language/built_in_identifier_prefix_library_as.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library as;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_dynamic.dart b/tests/language/built_in_identifier_prefix_library_dynamic.dart
deleted file mode 100644
index 3d54eee..0000000
--- a/tests/language/built_in_identifier_prefix_library_dynamic.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library dynamic;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_export.dart b/tests/language/built_in_identifier_prefix_library_export.dart
deleted file mode 100644
index 6f068eb..0000000
--- a/tests/language/built_in_identifier_prefix_library_export.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library export;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_external.dart b/tests/language/built_in_identifier_prefix_library_external.dart
deleted file mode 100644
index 68d2ba5..0000000
--- a/tests/language/built_in_identifier_prefix_library_external.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library external;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_factory.dart b/tests/language/built_in_identifier_prefix_library_factory.dart
deleted file mode 100644
index a2416f8..0000000
--- a/tests/language/built_in_identifier_prefix_library_factory.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library factory;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_get.dart b/tests/language/built_in_identifier_prefix_library_get.dart
deleted file mode 100644
index f3edee6..0000000
--- a/tests/language/built_in_identifier_prefix_library_get.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library get;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_implements.dart b/tests/language/built_in_identifier_prefix_library_implements.dart
deleted file mode 100644
index c7ab2ce..0000000
--- a/tests/language/built_in_identifier_prefix_library_implements.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library implements;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_import.dart b/tests/language/built_in_identifier_prefix_library_import.dart
deleted file mode 100644
index 6ed83cc..0000000
--- a/tests/language/built_in_identifier_prefix_library_import.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library import;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_library.dart b/tests/language/built_in_identifier_prefix_library_library.dart
deleted file mode 100644
index 6565cec..0000000
--- a/tests/language/built_in_identifier_prefix_library_library.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library library;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_operator.dart b/tests/language/built_in_identifier_prefix_library_operator.dart
deleted file mode 100644
index d64f0b8..0000000
--- a/tests/language/built_in_identifier_prefix_library_operator.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library operator;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_part.dart b/tests/language/built_in_identifier_prefix_library_part.dart
deleted file mode 100644
index 2193a45..0000000
--- a/tests/language/built_in_identifier_prefix_library_part.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library part;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_set.dart b/tests/language/built_in_identifier_prefix_library_set.dart
deleted file mode 100644
index 5b4d49b..0000000
--- a/tests/language/built_in_identifier_prefix_library_set.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library set;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_static.dart b/tests/language/built_in_identifier_prefix_library_static.dart
deleted file mode 100644
index 74bb77d..0000000
--- a/tests/language/built_in_identifier_prefix_library_static.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library static;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_prefix_library_typedef.dart b/tests/language/built_in_identifier_prefix_library_typedef.dart
deleted file mode 100644
index c27c96c..0000000
--- a/tests/language/built_in_identifier_prefix_library_typedef.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library typedef;
-
-class A {}
-
-class B<T> {}
-
-class C<T, S> {}
diff --git a/tests/language/built_in_identifier_test.dart b/tests/language/built_in_identifier_test.dart
deleted file mode 100644
index 83b16d7..0000000
--- a/tests/language/built_in_identifier_test.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// 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.
-// Check that we can use pseudo keywords as names in function level code.
-
-import "package:expect/expect.dart";
-
-class PseudoKWTest {
-  static testMain() {
-    // This is a list of built-in identifiers from the Dart spec.
-    // It sanity checks that these pseudo-keywords are legal identifiers.
-
-    var abstract = 0; // //# 01: ok
-    var as = 0;
-    var dynamic = 0;
-    var export = 0;
-    var external = 0; // //# 01: ok
-    var factory = 0;
-    var get = 0;
-    var implements = 0;
-    var import = 0;
-    var library = 0;
-    var operator = 0;
-    var part = 0;
-    var set = 0;
-    var static = 0; // //# 01: ok
-    var typedef = 0;
-
-    // "native" is a per-implementation extension that is not a part of the
-    // Dart language.  While it is not an official built-in identifier, it
-    // is useful to ensure that it remains a legal identifier.
-    var native = 0;
-
-    // The code below adds a few additional variants of usage without any
-    // attempt at complete coverage.
-    {
-      void factory(set) {
-        return; // //# 01: ok
-      }
-    }
-
-    get:
-    while (import > 0) {
-      break get;
-    }
-
-    return
-        static + // //# 01: ok
-        library * operator;
-  }
-}
-
-typedef(x) => "typedef $x"; // //# 01: ok
-
-static(abstract) { // //# 01: ok
-  return abstract == true; // //# 01: ok
-} // //# 01: ok
-
-class A {
-  var typedef = 0;
-  final operator = "smooth";
-
-  set(x) {
-    typedef = x;
-  }
-
-  get() => typedef - 5;
-
-  static static() { // //# 01: ok
-    return 1; // //# 01: ok
-  } // //# 01: ok
-  static check() {
-    var o = new A();
-    o.set(55);
-    Expect.equals(50, o.get());
-    static(); // //# 01: ok
-  }
-}
-
-class B {
-  var set = 100;
-  get get => set;
-  set get(get) => set = 2 * get.get;
-
-  static() { // //# 01: ok
-    var set = new B(); // //# 01: ok
-    set.get = set; // //# 01: ok
-    Expect.equals(200, set.get); // //# 01: ok
-  } // //# 01: ok
-  int operator() {
-    return 1;
-  }
-}
-
-class C {
-  static int operator = (5);
-  static var get;
-  static get set => 111;
-  static set set(set) {}
-}
-
-main() {
-  PseudoKWTest.testMain();
-  A.check();
-  new B().static(); // //# 01: ok
-  Expect.equals(1, new B().operator());
-  Expect.equals(1, A.static()); // //# 01: ok
-  typedef("T"); // //# 01: ok
-  Expect.equals("typedef T", typedef("T")); // //# 01: ok
-  static("true"); // //# 01: ok
-  Expect.equals(false, static("true")); // //# 01: ok
-  Expect.equals(5, C.operator);
-  Expect.equals(null, C.get);
-  C.set = 0;
-  Expect.equals(111, C.set);
-}
diff --git a/tests/language/call_argument_inference_test.dart b/tests/language/call_argument_inference_test.dart
deleted file mode 100644
index 0af5537..0000000
--- a/tests/language/call_argument_inference_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  call(a) => a is num;
-}
-
-main() {
-  Expect.isTrue(new A().call(42));
-  Expect.isFalse(new A()('foo'));
-}
diff --git a/tests/language/call_closurization_test.dart b/tests/language/call_closurization_test.dart
deleted file mode 100644
index ae323b1..0000000
--- a/tests/language/call_closurization_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  bar(a) {
-    return a is String;
-  }
-
-  var bar_tearOff = bar.call;
-
-  for (var i = 0; i < 20; i++) {
-    Expect.isFalse(bar_tearOff(1));
-    Expect.isTrue(bar_tearOff.call('foo'));
-    Expect.isFalse(bar_tearOff.call(1));
-    Expect.isTrue(bar_tearOff('foo'));
-  }
-
-  opt_arg([a = "a"]) => a is String;
-  var opt_arg_tearOff = opt_arg.call;
-
-  for (var i = 0; i < 20; i++) {
-    Expect.isFalse(opt_arg_tearOff(1));
-    Expect.isFalse(opt_arg_tearOff.call(1));
-    Expect.isTrue(opt_arg_tearOff());
-    Expect.isTrue(opt_arg_tearOff.call());
-    Expect.isTrue(opt_arg_tearOff("b"));
-    Expect.isTrue(opt_arg_tearOff.call("b"));
-  }
-
-  named_arg({x: 11, y: 22}) => "$x$y";
-  var named_arg_tearOff = named_arg.call;
-
-  for (var i = 0; i < 20; i++) {
-    Expect.equals("1122", named_arg_tearOff());
-    Expect.equals("1122", named_arg_tearOff.call());
-    Expect.equals("4455", named_arg_tearOff(y: 55, x: 44));
-    Expect.equals("4455", named_arg_tearOff.call(y: 55, x: 44));
-    Expect.equals("4455", named_arg_tearOff(x: 44, y: 55));
-    Expect.equals("4455", named_arg_tearOff.call(x: 44, y: 55));
-  }
-
-  Expect.throws(() => bar_tearOff.call(), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => opt_arg_tearOff.call(x: "p"), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => named_arg_tearOff.call("p", "q"), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/call_constructor_on_unresolvable_class_test.dart b/tests/language/call_constructor_on_unresolvable_class_test.dart
deleted file mode 100644
index caf9b0c..0000000
--- a/tests/language/call_constructor_on_unresolvable_class_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-
-// Check that calling a constructor of a class that cannot be resolved causes
-// a runtime error.
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-never() {
-  Random r = new Random();
-  int r1 = r.nextInt(1000);
-  int r2 = r.nextInt(1000);
-  int r3 = r.nextInt(1000);
-  return (r1 > r3) && (r2 > r3) && (r3 > r1 + r2);
-}
-
-main() {
-  if (never()) {
-    // These should not produce errors because the calls are never executed.
-    new A(); //        //# 01: static type warning
-    new A.foo(); //    //# 02: static type warning
-    new lib.A(); //    //# 03: static type warning
-  }
-
-  new A(); //        //# 04: static type warning, runtime error
-  new A.foo(); //    //# 05: static type warning, runtime error
-  new lib.A(); //    //# 06: static type warning, runtime error
-
-  var ex; //                   //# 07: static type warning
-  try { //                     //# 07: continued
-    new A(); //                //# 07: continued
-  } catch (e) { //             //# 07: continued
-    ex = e; //                 //# 07: continued
-  } //                         //# 07: continued
-  Expect.isTrue(ex != null); //# 07: continued
-}
diff --git a/tests/language/call_function_apply_test.dart b/tests/language/call_function_apply_test.dart
deleted file mode 100644
index 935cfaf..0000000
--- a/tests/language/call_function_apply_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class A {
-  call({a: 42}) {
-    return 499 + a;
-  }
-}
-
-main() {
-  Expect.equals(497, Function.apply(new A(), [], {#a: -2}));
-}
diff --git a/tests/language/call_non_method_field_test.dart b/tests/language/call_non_method_field_test.dart
deleted file mode 100644
index a3d9b87..0000000
--- a/tests/language/call_non_method_field_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-// Tests calling an object's field which is not a method.
-
-class Fisk {
-  int i;
-}
-
-class Hest extends Fisk {}
-
-main() {
-  Fisk x1 = new Fisk();
-  if (false) {
-    x1.i(); // //# 01: static type warning
-  }
-  Hest x2 = new Hest();
-  if (false) {
-    x2.i(); // //# 02: static type warning
-  }
-}
diff --git a/tests/language/call_nonexistent_constructor_test.dart b/tests/language/call_nonexistent_constructor_test.dart
deleted file mode 100644
index aa0d75a..0000000
--- a/tests/language/call_nonexistent_constructor_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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";
-
-// When attempting to call a nonexistent constructor, check that a
-// NoSuchMethodError is thrown.
-
-foo() {
-  throw 'hest';
-}
-
-class A {
-  A.foo(var x) {}
-}
-
-main() {
-  int i = 0;
-  new A.foo(42);
-  try {
-    // Args are evaluated before throwing NoSuchMethodError:
-    new A.bar(foo()); //# 01: static type warning
-  } on NoSuchMethodError catch (e) {
-    i = -1;
-  } on String catch (e) {
-    i = 1;
-  }
-  Expect.equals(1, i); //# 01: continued
-  try {
-    new A(); //# 02: static type warning
-  } on NoSuchMethodError catch (e) {
-    i = 2;
-  }
-  Expect.equals(2, i); //# 02: continued
-}
diff --git a/tests/language/call_nonexistent_static_test.dart b/tests/language/call_nonexistent_static_test.dart
deleted file mode 100644
index d68935b..0000000
--- a/tests/language/call_nonexistent_static_test.dart
+++ /dev/null
@@ -1,102 +0,0 @@
-// 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";
-
-// When attempting to call a nonexistent static method, getter or setter, check
-// that a NoSuchMethodError is thrown.
-
-class C {}
-
-class D {
-  get hest => 1; // //# 04: continued
-  set hest(val) {} // //# 05: continued
-}
-
-get fisk => 2; //# 09: continued
-set fisk(val) {} //# 10: continued
-
-expectNsme([void fun()]) {
-  if (fun != null) {
-    Expect.throws(fun, (e) => e is NoSuchMethodError);
-  }
-}
-
-alwaysThrows() {
-  throw new NoSuchMethodError(null, const Symbol('foo'), [], {});
-}
-
-test01() {
-  C.hest = 1; // //# 01: static type warning
-}
-
-test02() {
-  C.hest; // //# 02: static type warning
-}
-
-test03() {
-  C.hest(); // //# 03: static type warning
-}
-
-test04() {
-  D.hest = 1; // //# 04: static type warning
-}
-
-test05() {
-  D.hest; // //# 05: static type warning
-}
-
-test06() {
-  fisk = 1; // //# 06: static type warning
-}
-
-test07() {
-  fisk; // //# 07: static type warning
-}
-
-test08() {
-  fisk(); // //# 08: static type warning
-}
-
-test09() {
-  fisk = 1; // //# 09: static type warning
-}
-
-test10() {
-  fisk; // //# 10: static type warning
-}
-
-main() {
-  expectNsme(alwaysThrows);
-  expectNsme(
-    test01 // //# 01: continued
-      );
-  expectNsme(
-    test02 // //# 02: continued
-      );
-  expectNsme(
-    test03 // //# 03: continued
-      );
-  expectNsme(
-    test04 // //# 04: continued
-      );
-  expectNsme(
-    test05 // //# 05: continued
-      );
-  expectNsme(
-    test06 // //# 06: continued
-      );
-  expectNsme(
-    test07 // //# 07: continued
-      );
-  expectNsme(
-    test08 // //# 08: continued
-      );
-  expectNsme(
-    test09 // //# 09: continued
-      );
-  expectNsme(
-    test10 // //# 10: continued
-      );
-}
diff --git a/tests/language/call_operator_test.dart b/tests/language/call_operator_test.dart
deleted file mode 100644
index 6709ac7..0000000
--- a/tests/language/call_operator_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// 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";
-
-// simple test with no types in signature
-class A1 {
-  call() => 42;
-}
-
-// same test, include return type
-class A2 {
-  int call() => 35;
-}
-
-class B {
-  call() => 28;
-}
-
-// A call() operator can have any arity
-class C {
-  call(arg) => 7 * arg;
-}
-
-// Test named arguments
-class D {
-  call([arg = 6]) => 7 * arg;
-}
-
-// Non-trivial method body combination of positional and named.
-class E {
-  String call(String str, {int count: 1}) {
-    StringBuffer buffer = new StringBuffer();
-    for (var i = 0; i < count; i++) {
-      buffer.write(str);
-      if (i < count - 1) {
-        buffer.write(":");
-      }
-    }
-    return buffer.toString();
-  }
-}
-
-main() {
-  var a1 = new A1();
-  Expect.equals(42, a1());
-  Expect.equals(42, a1.call());
-
-  var a2 = new A2();
-  Expect.equals(35, a2());
-  Expect.equals(35, a2.call());
-
-  var b = new B();
-  Expect.equals(28, b());
-  Expect.equals(28, b.call());
-
-  var c = new C();
-  Expect.equals(42, c(6));
-  Expect.equals(42, c.call(6));
-
-  var d = new D();
-  Expect.equals(42, d());
-  Expect.equals(7, d(1));
-  Expect.equals(14, d(2));
-  Expect.equals(42, d.call());
-  Expect.equals(7, d.call(1));
-  Expect.equals(14, d.call(2));
-
-  var e = new E();
-  Expect.equals("foo", e("foo"));
-  Expect.equals("foo:foo", e("foo", count: 2));
-  Expect.equals("foo:foo:foo", e("foo", count: 3));
-  Expect.equals("foo", e.call("foo"));
-  Expect.equals("foo:foo", e.call("foo", count: 2));
-  Expect.equals("foo:foo:foo", e.call("foo", count: 3));
-
-  Expect.isTrue(a1 is Function);
-  Expect.isTrue(e is Function);
-}
diff --git a/tests/language/call_property_test.dart b/tests/language/call_property_test.dart
deleted file mode 100644
index 87407c3..0000000
--- a/tests/language/call_property_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a class with a [call] property does not implement [Function] or
-// a typedef of function type.
-
-import 'package:expect/expect.dart';
-
-class Call {
-  int get call => 0;
-}
-
-typedef void F();
-
-main() {
-  Expect.isFalse(new Call() is Function);
-  Expect.isFalse(new Call() is F);
-}
diff --git a/tests/language/call_test.dart b/tests/language/call_test.dart
deleted file mode 100644
index 629f7d5..0000000
--- a/tests/language/call_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  bar(a) {
-    return a is String;
-  }
-
-  for (var i = 0; i < 20; i++) {
-    Expect.isFalse(bar(1));
-    Expect.isTrue(bar.call('foo'));
-  }
-
-  opt_arg([a = "a"]) => a is String;
-
-  for (var i = 0; i < 20; i++) {
-    Expect.isFalse(opt_arg(1));
-    Expect.isFalse(opt_arg.call(1));
-    Expect.isTrue(opt_arg());
-    Expect.isTrue(opt_arg.call());
-    Expect.isTrue(opt_arg("b"));
-    Expect.isTrue(opt_arg.call("b"));
-  }
-
-  named_arg({x: 11, y: 22}) => "$x$y";
-
-  for (var i = 0; i < 20; i++) {
-    Expect.equals("1122", named_arg());
-    Expect.equals("1122", named_arg.call());
-    Expect.equals("4455", named_arg(y: 55, x: 44));
-    Expect.equals("4455", named_arg.call(y: 55, x: 44));
-    Expect.equals("4455", named_arg(x: 44, y: 55));
-    Expect.equals("4455", named_arg.call(x: 44, y: 55));
-  }
-
-  Expect.throws(() => bar.call(), (e) => e is NoSuchMethodError);
-  Expect.throws(() => opt_arg.call(x: "p"), (e) => e is NoSuchMethodError);
-  Expect.throws(() => named_arg.call("p", "q"), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/call_this_test.dart b/tests/language/call_this_test.dart
deleted file mode 100644
index 55e7ccd..0000000
--- a/tests/language/call_this_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that dart2js treats [:this():] as a closure send.
-
-import "package:expect/expect.dart";
-
-class A {
-  call() => 42;
-  test1() => this();
-  test2() => (this)();
-}
-
-main() {
-  Expect.equals(42, (new A()).test1());
-  Expect.equals(42, (new A()).test2());
-}
diff --git a/tests/language/call_through_getter_test.dart b/tests/language/call_through_getter_test.dart
deleted file mode 100644
index e7eac4a..0000000
--- a/tests/language/call_through_getter_test.dart
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests that we can call functions through getters.
-
-const TOP_LEVEL_CONST = 1;
-const TOP_LEVEL_CONST_REF = TOP_LEVEL_CONST;
-const TOP_LEVEL_NULL = null;
-
-var topLevel;
-
-class CallThroughGetterTest {
-  static void testMain() {
-    testTopLevel();
-    testField();
-    testGetter();
-    testMethod();
-    testEvaluationOrder();
-  }
-
-  static void testTopLevel() {
-    topLevel = () {
-      return 2;
-    };
-    Expect.equals(1, TOP_LEVEL_CONST);
-    Expect.equals(1, TOP_LEVEL_CONST_REF);
-    Expect.equals(2, topLevel());
-
-    expectThrowsNoSuchMethod(() {
-      TOP_LEVEL_CONST(); //# static type warning
-    });
-    expectThrowsNoSuchMethod(() {
-      (TOP_LEVEL_CONST)(); // //# static type warning
-    });
-  }
-
-  static void testField() {
-    A a = new A();
-    a.field = () => 42;
-    Expect.equals(42, a.field());
-    Expect.equals(42, (a.field)());
-
-    a.field = () => 87;
-    Expect.equals(87, a.field());
-    Expect.equals(87, (a.field)());
-
-    a.field = 99;
-    expectThrowsNoSuchMethod(() {
-      a.field();
-    });
-    expectThrowsNoSuchMethod(() {
-      (a.field)();
-    });
-  }
-
-  static void testGetter() {
-    A a = new A();
-    a.field = () => 42;
-    Expect.equals(42, a.getter());
-    Expect.equals(42, (a.getter)());
-
-    a.field = () => 87;
-    Expect.equals(87, a.getter());
-    Expect.equals(87, (a.getter)());
-
-    a.field = 99;
-    expectThrowsNoSuchMethod(() {
-      a.getter();
-    });
-    expectThrowsNoSuchMethod(() {
-      (a.getter)();
-    });
-  }
-
-  static void testMethod() {
-    A a = new A();
-    a.field = () => 42;
-    Expect.equals(true, a.method() is Function);
-    Expect.equals(42, a.method()());
-
-    a.field = () => 87;
-    Expect.equals(true, a.method() is Function);
-    Expect.equals(87, a.method()());
-
-    a.field = null;
-    Expect.equals(null, a.method());
-  }
-
-  static void testEvaluationOrder() {
-    B b = new B();
-    Expect.equals("gf", b.g0());
-    b = new B();
-    Expect.equals("gf", (b.g0)());
-
-    b = new B();
-    Expect.equals("xgf", b.g1(b.x));
-    b = new B();
-    Expect.equals("gxf", (b.g1)(b.x));
-
-    b = new B();
-    Expect.equals("xygf", b.g2(b.x, b.y));
-    b = new B();
-    Expect.equals("gxyf", (b.g2)(b.x, b.y));
-
-    b = new B();
-    Expect.equals("xyzgf", b.g3(b.x, b.y, b.z));
-    b = new B();
-    Expect.equals("gxyzf", (b.g3)(b.x, b.y, b.z));
-
-    b = new B();
-    Expect.equals("yzxgf", b.g3(b.y, b.z, b.x));
-    b = new B();
-    Expect.equals("gyzxf", (b.g3)(b.y, b.z, b.x));
-  }
-
-  static expectThrowsNoSuchMethod(fn) {
-    var exception = catchException(fn);
-    if (exception is! NoSuchMethodError) {
-      Expect.fail("Wrong exception.  Expected: NoSuchMethodError"
-          " got: ${exception}");
-    }
-  }
-
-  static catchException(fn) {
-    bool caught = false;
-    var result = null;
-    try {
-      fn();
-      Expect.equals(true, false); // Shouldn't reach this.
-    } catch (e) {
-      caught = true;
-      result = e;
-    }
-    Expect.equals(true, caught);
-    return result;
-  }
-}
-
-class A {
-  A() {}
-  var field;
-  get getter {
-    return field;
-  }
-
-  method() {
-    return field;
-  }
-}
-
-class B {
-  B() : _order = new StringBuffer("") {}
-
-  get g0 {
-    _mark('g');
-    return () {
-      return _mark('f');
-    };
-  }
-
-  get g1 {
-    _mark('g');
-    return (x) {
-      return _mark('f');
-    };
-  }
-
-  get g2 {
-    _mark('g');
-    return (x, y) {
-      return _mark('f');
-    };
-  }
-
-  get g3 {
-    _mark('g');
-    return (x, y, z) {
-      return _mark('f');
-    };
-  }
-
-  get x {
-    _mark('x');
-    return 0;
-  }
-
-  get y {
-    _mark('y');
-    return 1;
-  }
-
-  get z {
-    _mark('z');
-    return 2;
-  }
-
-  _mark(m) {
-    _order.write(m);
-    return _order.toString();
-  }
-
-  StringBuffer _order;
-}
-
-main() {
-  CallThroughGetterTest.testMain();
-}
diff --git a/tests/language/call_through_null_getter_test.dart b/tests/language/call_through_null_getter_test.dart
deleted file mode 100644
index 803f685..0000000
--- a/tests/language/call_through_null_getter_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests that we can call functions through getters which return null.
-
-const TOP_LEVEL_NULL = null;
-
-var topLevel;
-
-class CallThroughNullGetterTest {
-  static void testMain() {
-    testTopLevel();
-    testField();
-    testGetter();
-    testMethod();
-  }
-
-  static void testTopLevel() {
-    topLevel = null;
-    expectThrowsNoSuchMethodError(() {
-      topLevel();
-    });
-    expectThrowsNoSuchMethodError(() {
-      (topLevel)();
-    });
-    expectThrowsNoSuchMethodError(() {
-      TOP_LEVEL_NULL();
-    });
-    expectThrowsNoSuchMethodError(() {
-      (TOP_LEVEL_NULL)();
-    });
-  }
-
-  static void testField() {
-    A a = new A();
-
-    a.field = null;
-    expectThrowsNoSuchMethodError(() {
-      a.field();
-    });
-    expectThrowsNoSuchMethodError(() {
-      (a.field)();
-    });
-  }
-
-  static void testGetter() {
-    A a = new A();
-
-    a.field = null;
-    expectThrowsNoSuchMethodError(() {
-      a.getter();
-    });
-    expectThrowsNoSuchMethodError(() {
-      (a.getter)();
-    });
-  }
-
-  static void testMethod() {
-    A a = new A();
-
-    a.field = null;
-    expectThrowsNoSuchMethodError(() {
-      a.method()();
-    });
-  }
-
-  static void expectThrowsNoSuchMethodError(fn) {
-    Expect.throws(
-        fn, (e) => e is NoSuchMethodError, "Should throw NoSuchMethodError");
-  }
-}
-
-class A {
-  A() {}
-  var field;
-  get getter {
-    return field;
-  }
-
-  method() {
-    return field;
-  }
-}
-
-main() {
-  CallThroughNullGetterTest.testMain();
-}
diff --git a/tests/language/call_type_literal_test.dart b/tests/language/call_type_literal_test.dart
deleted file mode 100644
index fc8f044..0000000
--- a/tests/language/call_type_literal_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class C {
-  void a() {}
-}
-
-void main() {
-  Expect.throws(() => C().a(), (e) => e is NoSuchMethodError); //# 01: static type warning
-}
diff --git a/tests/language/call_with_no_such_method_test.dart b/tests/language/call_with_no_such_method_test.dart
deleted file mode 100644
index 53792bb..0000000
--- a/tests/language/call_with_no_such_method_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class F {
-  call() => null;
-  noSuchMethod(Invocation i) {
-    if (i.memberName == #call && i.isMethod) {
-      return i.positionalArguments[0];
-    }
-    return super.noSuchMethod(i);
-  }
-}
-
-main() {
-  var result = Function.apply(new F(), ['a', 'b', 'c', 'd']);
-  Expect.equals('a', result);
-}
diff --git a/tests/language/callable_test.dart b/tests/language/callable_test.dart
deleted file mode 100644
index 1dcb5e6..0000000
--- a/tests/language/callable_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-
-class X {
-  call() => 42;
-}
-
-class Y {
-  call(int x) => 87;
-}
-
-typedef F(int x);
-typedef G(String y);
-
-main() {
-  X x = new X();
-  Function f = x; // Should pass checked mode test
-  Y y = new Y();
-  Function g = y; // Should pass checked mode test
-  F f0 = y; // Should pass checked mode test
-  F f1 = x; // //# 00: dynamic type error, static type warning
-  G g0 = y; // //# 01: dynamic type error, static type warning
-}
diff --git a/tests/language/canonical_const2_test.dart b/tests/language/canonical_const2_test.dart
deleted file mode 100644
index fbad2cd..0000000
--- a/tests/language/canonical_const2_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Check that compile-time constants are correctly canonicalized.
-
-main() {
-  Expect.isFalse(identical(const <num>[1, 2], const <num>[1.0, 2.0]));
-}
diff --git a/tests/language/canonical_const3_test.dart b/tests/language/canonical_const3_test.dart
deleted file mode 100644
index 938f0db..0000000
--- a/tests/language/canonical_const3_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-//
-// Check proper canonicalization (fields must be canonicalized as well).
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.isFalse(identical(new Duration(days: 1), new Duration(days: 1)));
-  Expect.isTrue(identical(const Duration(days: 2), const Duration(days: 2)));
-  Expect.isTrue(identical(const B(3.0), const B(3.0)));
-  Expect.isTrue(identical(const F(main), const F(main)));
-}
-
-class A {
-  final a;
-  const A(v) : a = v + 3.4;
-}
-
-class B extends A {
-  final b;
-  const B(v)
-      : super(v),
-        b = v + 1.0;
-}
-
-class F {
-  final f;
-  const F(v) : f = v;
-}
diff --git a/tests/language/canonical_const_test.dart b/tests/language/canonical_const_test.dart
deleted file mode 100644
index 14041a8..0000000
--- a/tests/language/canonical_const_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that initializers of static const fields are compile time constants.
-
-import "package:expect/expect.dart";
-
-class CanonicalConstTest {
-  static const A = const C1();
-  static const B = const C2();
-
-  static testMain() {
-    Expect.identical(null, null);
-    Expect.isFalse(identical(null, 0));
-    Expect.identical(1, 1);
-    Expect.isFalse(identical(1, 2));
-    Expect.identical(true, true);
-    Expect.identical("so", "so");
-    Expect.identical(const Object(), const Object());
-    Expect.isFalse(identical(const Object(), const C1()));
-    Expect.identical(const C1(), const C1());
-    Expect.identical(A, const C1());
-    Expect.isFalse(identical(const C1(), const C2()));
-    Expect.identical(B, const C2());
-    // TODO(johnlenz): these two values don't currently have the same type
-    // Expect.identical(const [1,2], const List[1,2]);
-    Expect.isFalse(identical(const [2, 1], const [1, 2]));
-    Expect.identical(const <int>[1, 2], const <int>[1, 2]);
-    Expect.identical(const <Object>[1, 2], const <Object>[1, 2]);
-    Expect.isFalse(identical(const <int>[1, 2], const <double>[1.0, 2.0]));
-    Expect.identical(const {"a": 1, "b": 2}, const {"a": 1, "b": 2});
-    Expect.isFalse(identical(const {"a": 1, "b": 2}, const {"a": 2, "b": 2}));
-  }
-}
-
-class C1 {
-  const C1();
-}
-
-class C2 extends C1 {
-  const C2() : super();
-}
-
-main() {
-  CanonicalConstTest.testMain();
-}
diff --git a/tests/language/cascade2_test.dart b/tests/language/cascade2_test.dart
deleted file mode 100644
index 3f6277e..0000000
--- a/tests/language/cascade2_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to hit an assertion in the
-// container tracer visitor in the presence of cascaded calls.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo;
-
-  add(list) {
-    foo = list;
-    list.add(2.5);
-    return this;
-  }
-
-  call(arg) => arg;
-}
-
-main() {
-  var foo = [42, 0];
-  var a = new A();
-  var bar = a..add(foo)('WHAT');
-  a..foo[0] = new Object();
-  Expect.throws(() => foo[0] + 2, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/cascade_2_test.dart b/tests/language/cascade_2_test.dart
deleted file mode 100644
index 1742f48..0000000
--- a/tests/language/cascade_2_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// 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";
-
-// Test cascades, issues 7494 (vm), 7689 (dart2js).
-
-main() {
-  var a = new Element(null);
-  Expect.equals(1, a.path0.length);
-  Expect.equals(a, a.path0[0]);
-
-  // Issue 7693: e0 ? e1 : e2..f() parses as (e0 ? e1 : e2)..f().
-  Expect.equals(2, a.path1.length);
-  Expect.equals(a, a.path1[0]);
-  Expect.equals(a, a.path1[1]);
-
-  Expect.equals(1, a.path2.length); // NPE.
-
-  var b = new Element(a);
-  Expect.equals(2, b.path0.length);
-  Expect.equals(a, b.path0[0]);
-  Expect.equals(b, b.path0[1]);
-
-  Expect.equals(3, b.path1.length);
-  Expect.equals(a, b.path1[0]);
-  Expect.equals(a, b.path1[1]);
-  Expect.equals(b, b.path1[2]);
-
-  Expect.equals(2, b.path2.length); // NPE.
-}
-
-class Element {
-  final Element parent;
-
-  Element(this.parent);
-
-  List<Element> get path0 {
-    if (parent == null) {
-      return <Element>[this];
-    } else {
-      return parent.path0..add(this);
-    }
-  }
-
-  List<Element> get path1 {
-    return (parent == null) ? <Element>[this] : parent.path1
-      ..add(this);
-  }
-
-  List<Element> get path2 {
-    return (parent == null) ? <Element>[this] : (parent.path2..add(this));
-  }
-}
diff --git a/tests/language/cascade_in_expression_function_test.dart b/tests/language/cascade_in_expression_function_test.dart
deleted file mode 100644
index 88f9529..0000000
--- a/tests/language/cascade_in_expression_function_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-makeMap() => new Map()
-  ..[3] = 4
-  ..[0] = 11;
-
-class MyClass {
-  foo() => this
-    ..bar(3)
-    ..baz(4);
-  bar(x) => x;
-  baz(y) => y * 2;
-}
-
-main() {
-  var o = new MyClass();
-  Expect.equals(o.foo(), o);
-  var g = makeMap();
-  Expect.equals(g[3], 4);
-  Expect.equals(g[0], 11);
-}
diff --git a/tests/language/cascade_in_initializer_list_test.dart b/tests/language/cascade_in_initializer_list_test.dart
deleted file mode 100644
index 37da002..0000000
--- a/tests/language/cascade_in_initializer_list_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  foo() {}
-  bar() {}
-}
-
-class B {
-  var x;
-  final y;
-
-  B(a)
-      : x = a
-          ..foo()
-          ..bar(),
-        y = a
-          ..foo()
-          ..bar() {}
-}
-
-main() {
-  var a = new A(), b = new B(a);
-  Expect.equals(a, b.x);
-  Expect.equals(a, b.y);
-}
diff --git a/tests/language/cascade_precedence_test.dart b/tests/language/cascade_precedence_test.dart
deleted file mode 100644
index 3ddf252..0000000
--- a/tests/language/cascade_precedence_test.dart
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  int value;
-  A(this.value);
-  void set(int value) {
-    this.value = value;
-  }
-
-  int get() => value;
-  int operator [](int index) => value + index;
-  void operator []=(int index, int newValue) {
-    value += -index + newValue;
-  }
-
-  void test(int expected) {
-    Expect.equals(expected, value);
-  }
-
-  Function limp(int n) {
-    if (n == 0) return set;
-    return () => limp(n - 1);
-  }
-
-  A get self => this;
-  A operator +(A other) {
-    this.value += other.value;
-    return this;
-  }
-}
-
-class Box {
-  A value;
-  Box(this.value);
-  A operator [](int pos) => value;
-  void operator []=(int pos, A a) {
-    value = a;
-  }
-
-  A get x => value;
-  void set x(A a) {
-    value = a;
-  }
-}
-
-// Subset of grammar being tested.
-//
-// expression:
-//       assignableExpression assignmentOperator expression
-//     | conditionalExpression cascadeSection*
-//     ;
-// expressionWithoutCascade:
-//       assignableExpression assignmentOperator expressionWithoutCascade
-//     | conditionalExpression
-//     ;
-// expressionList:
-//       expression (',' expression)*
-//     ;
-// assignableExpression:
-//       primary (arguments* assignableSelector)+
-//     | super assignableSelector
-//     | identifier
-//     ;
-// conditionalExpression:
-//     logicalOrExpression ('?' expressionWithoutCascade ':' expressionWithoutCascade)?
-//     ;
-// primary:
-//       thisExpression
-//     | super assignableSelector
-//     | functionExpression
-//     | literal
-//     | identifier
-//     | newExpression
-//     | constObjectExpression
-//     | '(' expression ')'
-//     ;
-// assignableSelector:
-//       '[' expression ']'
-//     | '.' identifier
-//     ;
-//
-// In words:
-//  An assignableExpression is either a variable or something ending in
-//  [expression] or .identifier.
-
-main() {
-  A a = new A(42);
-  A original = a;
-  A b = new A(87);
-  fa() => a;
-  Box box = new Box(a);
-  // Different expressions on the left-hand side of '..'.
-  //  conditionalExpression >> postfixExpression > primary selector*
-  Expect.equals(
-      a,
-      a
-        ..set(37)
-        ..get());
-  a.test(37);
-  Expect.equals(
-      a,
-      fa()
-        ..set(42)
-        ..get());
-  a.test(42);
-  Expect.equals(
-      a,
-      box.x
-        ..set(37)
-        ..get());
-  a.test(37);
-  // '..' binds to 'b + a', i.e., to the 'b' object, not to 'a'.
-  Expect.equals(
-      b,
-      b + a
-        ..test(124)
-        ..set(117)
-        ..get());
-  b.test(117);
-  a.test(37);
-
-  // expression :: conditionalExpression cascadeSection
-  // and conditionalExpression ends in expressionWithoutCascade.
-  // I.e., '..' binds to the entire condition expression, not to 'b'.
-  (a.value == 37) ? a : b
-    ..set(42);
-  a.test(42);
-
-  // This binds .. to 'a', not 'c=a', and performs assignment after reading
-  // c.get().
-  A c = new A(21);
-  c = a..set(c.get()); // FAILING.
-  Expect.equals(a, c);
-  Expect.equals(original, a);
-  a.test(21); // Fails as 42 if above is parsed as (c = a)..set(c.get()).
-
-  // Should be parsed as (box..x = (c = a))..x.test(21).
-  c = null;
-  box
-    ..x = c = a
-    ..x.test(21);
-  c.test(21);
-  // Other variants
-  c = null;
-  box
-    ..x = c = (a..test(21))
-    ..x.test(21);
-  c.test(21);
-
-  c = null;
-  box
-    ..x = (c = a..test(21))
-    ..x.test(21);
-  c.test(21);
-
-  // Should work the same:
-  (a..set(42))..test(42);
-  a
-    ..set(21)
-    ..test(21);
-
-  c = null;
-  Box originalBox = box;
-  // Should parse as:
-  // box = (box..x = (a.value == 21 ? b : c)..x.test(117));
-  box = box
-    ..x = a.value == 21 ? b : c
-    ..x.test(117);
-  Expect.equals(originalBox, box);
-  Expect.equals(box.value, b);
-
-  // New cascades are allowed inside an expressionWithoutCascade if properly
-  // delimited.
-  box
-    ..x = (a
-      ..set(42)
-      ..test(42))
-    ..x.test(42);
-}
diff --git a/tests/language/cascade_test.dart b/tests/language/cascade_test.dart
deleted file mode 100644
index dca880d..0000000
--- a/tests/language/cascade_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// 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";
-
-// Test cascades.
-
-class A {
-  int x;
-  int y;
-
-  A(this.x, this.y);
-
-  A setX(int x) {
-    this.x = x;
-    return this;
-  }
-
-  void setY(int y) {
-    this.y = y;
-  }
-
-  Function swap() {
-    int tmp = x;
-    x = y;
-    y = tmp;
-    return this.swap;
-  }
-
-  void check(int x, int y) {
-    Expect.equals(x, this.x);
-    Expect.equals(y, this.y);
-  }
-
-  operator [](var i) {
-    if (i == 0) return x;
-    if (i == 1) return y;
-    if (i == "swap") return this.swap;
-    return null;
-  }
-
-  int operator []=(int i, int value) {
-    if (i == 0) {
-      x = value;
-    } else if (i == 1) {
-      y = value;
-    }
-  }
-
-  /**
-   * A pseudo-keyword.
-   */
-  import() {
-    x++;
-  }
-}
-
-main() {
-  A a = new A(1, 2);
-  a
-    ..check(1, 2)
-    ..swap()
-    ..check(2, 1)
-    ..x = 4
-    ..y = 9
-    ..check(4, 9)
-    ..setX(10)
-    ..check(10, 9)
-    ..y = 5
-    ..check(10, 5)
-    ..swap()()()
-    ..check(5, 10)
-    ..[0] = 2
-    ..check(2, 10)
-    ..setX(10).setY(3)
-    ..check(10, 3)
-    ..setX(7)["swap"]()
-    ..check(3, 7)
-    ..import()
-    ..check(4, 7)
-    ..["swap"]()()()
-    ..check(7, 4);
-  a.check(7, 4);
-  a..(42); // //# 01: syntax error
-  a..37; // //# 02: syntax error
-  a.."foo"; // //# 03: syntax error
-}
diff --git a/tests/language/case_expression_with_assignment_test.dart b/tests/language/case_expression_with_assignment_test.dart
deleted file mode 100644
index aa78629..0000000
--- a/tests/language/case_expression_with_assignment_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-// Regression test for crash in VM parser (issue 29370).
-
-import "package:expect/expect.dart";
-
-const ERROR_A = 0;
-const ERROR_B = 1;
-
-errorToString(error) {
-  switch (error) {
-    case ERROR_A:
-      return "ERROR_A";
-    case ERROR_B = 1: //# 01: compile-time error
-    case ERROR_B: //# none: ok
-      return "ERROR_B";
-    default:
-      return "Unknown error";
-  }
-}
-
-main() {
-  Expect.equals(errorToString(ERROR_A), "ERROR_A");
-  Expect.equals(errorToString(ERROR_B), "ERROR_B");
-  Expect.equals(errorToString(55), "Unknown error");
-}
diff --git a/tests/language/cast2_test.dart b/tests/language/cast2_test.dart
deleted file mode 100644
index 78b200a..0000000
--- a/tests/language/cast2_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Test 'expression as Type' casts.
-
-class C {
-  final int foo = 42;
-
-  int val = 0;
-  void inc() {
-    ++val;
-  }
-}
-
-class D extends C {
-  final int bar = 37;
-}
-
-main() {
-  C oc = new C();
-  D od = new D();
-
-  (oc as dynamic).bar; // //# 01: runtime error
-
-  // Casts should always evaluate the left-hand side, if only for its effects.
-  oc.inc() as dynamic;
-  Expect.equals(1, oc.val);
-  oc.inc() as Object;
-  Expect.equals(2, oc.val);
-}
diff --git a/tests/language/cast_test.dart b/tests/language/cast_test.dart
deleted file mode 100644
index abc3707..0000000
--- a/tests/language/cast_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Test 'expression as Type' casts.
-
-class C {
-  final int foo = 42;
-}
-
-class D extends C {
-  final int bar = 37;
-}
-
-Object createC() => new C();
-Object createD() => new D();
-Object getNull() => null;
-Object createList() => <int>[2];
-Object createInt() => 87;
-Object createString() => "a string";
-
-main() {
-  Object oc = createC();
-  Object od = createD();
-  Object on = getNull();
-  Object ol = createList();
-  Object oi = createInt();
-  Object os = createString();
-
-  Expect.equals(42, (oc as C).foo);
-  Expect.equals(42, (od as C).foo);
-  Expect.equals(42, (od as D).foo);
-  Expect.equals(37, (od as D).bar);
-  Expect.equals(37, ((od as C) as D).bar);
-  (oc as D).foo; // //# 01: runtime error
-  (on as D).toString();
-  (on as D).foo; // //# 02: runtime error
-  (on as C).foo; // //# 03: runtime error
-  oc.foo; // //# 04: static type warning
-  od.foo; // //# 05: static type warning
-  (on as Object).toString();
-  (oc as Object).toString();
-  (od as Object).toString();
-  (on as dynamic).toString();
-  (on as dynamic).foo; // //# 07: runtime error
-  (oc as dynamic).foo;
-  (od as dynamic).foo;
-  (oc as dynamic).bar; // //# 08: runtime error
-  (od as dynamic).bar;
-  C c = oc as C;
-  c = od as C;
-  c = oc;
-  D d = od as D;
-  d = oc as D; // //# 10: runtime error
-  d = od;
-
-  (ol as List)[0];
-  (ol as List<int>)[0];
-  (ol as dynamic)[0];
-  (ol as String).length; // //# 12: runtime error
-  int x = (ol as List<int>)[0];
-  (ol as List<int>)[0] = (oi as int);
-
-  (os as String).length;
-  (os as dynamic).length;
-  (oi as String).length; // //# 13: runtime error
-  (os as List).length; // //# 14: runtime error
-
-  (oi as int) + 2;
-  (oi as List).length; // //# 15: runtime error
-}
diff --git a/tests/language/catch_liveness_test.dart b/tests/language/catch_liveness_test.dart
deleted file mode 100644
index 59e13a7..0000000
--- a/tests/language/catch_liveness_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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";
-
-@AssumeDynamic()
-@NoInline()
-foo() => 1;
-
-@AssumeDynamic()
-@NoInline()
-throwException() => throw 'x';
-
-main() {
-  var x = 10;
-  var e2 = null;
-  try {
-    var t = foo();
-    throwException();
-    print(t);
-    x = 3;
-  } catch (e) {
-    Expect.equals(10, x);
-    e2 = e;
-  }
-  Expect.equals(10, x);
-  Expect.equals('x', e2);
-}
diff --git a/tests/language/cha_deopt1_deferred_lib.dart b/tests/language/cha_deopt1_deferred_lib.dart
deleted file mode 100644
index 7add3ed..0000000
--- a/tests/language/cha_deopt1_deferred_lib.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2014, 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 "cha_deopt1_lib.dart";
-
-class U extends T {
-  m() => "good horse";
-}
-
-make_u() => new U();
diff --git a/tests/language/cha_deopt1_lib.dart b/tests/language/cha_deopt1_lib.dart
deleted file mode 100644
index 72a86f3..0000000
--- a/tests/language/cha_deopt1_lib.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, 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 mylib;
-
-class T {
-  m() => 42;
-}
diff --git a/tests/language/cha_deopt1_test.dart b/tests/language/cha_deopt1_test.dart
deleted file mode 100644
index 7cb2a88..0000000
--- a/tests/language/cha_deopt1_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=100 --no-background-compilation
-
-// Test lazy deoptimization at field guards with deferred loading.
-
-import "package:expect/expect.dart";
-import "cha_deopt1_lib.dart";
-import "cha_deopt1_deferred_lib.dart" deferred as d;
-
-var loaded = false;
-
-main() {
-  for (var i = 0; i < 2000; i++) bla();
-  Expect.equals(42, bla());
-  d.loadLibrary().then((_) {
-    loaded = true;
-    Expect.equals("good horse", bla());
-  });
-}
-
-make_t() {
-  try {
-    if (loaded) {
-      return d.make_u();
-    } else {
-      return new T();
-    }
-  } catch (e) {}
-}
-
-bla() {
-  var x = new X();
-  x.test(make_t());
-  return x.fld.m();
-}
-
-class X {
-  T fld = new T();
-
-  test(T t) {
-    if (t != null) {
-      T tmp = t;
-      fld = tmp;
-    }
-  }
-}
diff --git a/tests/language/cha_deopt2_deferred_lib.dart b/tests/language/cha_deopt2_deferred_lib.dart
deleted file mode 100644
index 53bf9a8..0000000
--- a/tests/language/cha_deopt2_deferred_lib.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, 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 "cha_deopt2_lib.dart";
-
-class U extends T {}
-
-make_u() => new U();
diff --git a/tests/language/cha_deopt2_lib.dart b/tests/language/cha_deopt2_lib.dart
deleted file mode 100644
index 922cf9a..0000000
--- a/tests/language/cha_deopt2_lib.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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 mylib;
-
-class A {}
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E {}
-
-class T {}
diff --git a/tests/language/cha_deopt2_test.dart b/tests/language/cha_deopt2_test.dart
deleted file mode 100644
index 7372f5e..0000000
--- a/tests/language/cha_deopt2_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=100 --no-background-compilation
-// VMOptions=--optimization-counter-threshold=100 --no-background-compilation --no-use-field-guards
-
-// Test lazy deoptimization at type checks with deferred loading.
-
-import "package:expect/expect.dart";
-import "cha_deopt2_lib.dart";
-import "cha_deopt2_deferred_lib.dart" deferred as d;
-
-var loaded = false;
-
-main() {
-  for (var i = 0; i < 2000; i++) bla();
-  Expect.equals(1, bla());
-  d.loadLibrary().then((_) {
-    loaded = true;
-    Expect.equals(1, bla());
-  });
-}
-
-make_array() {
-  try {
-    if (loaded) {
-      return [new A(), new B(), new C(), new D(), new E(), d.make_u()];
-    } else {
-      return [new A(), new B(), new C(), new D(), new E(), new T()];
-    }
-  } catch (e) {}
-}
-
-bla() {
-  var count = 0;
-  for (var x in make_array()) {
-    if (x is T) count++;
-  }
-  return count;
-}
diff --git a/tests/language/cha_deopt3_deferred_lib.dart b/tests/language/cha_deopt3_deferred_lib.dart
deleted file mode 100644
index 31ad3d2..0000000
--- a/tests/language/cha_deopt3_deferred_lib.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, 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 "cha_deopt3_lib.dart";
-
-class U implements T {}
-
-make_u() => new U();
diff --git a/tests/language/cha_deopt3_lib.dart b/tests/language/cha_deopt3_lib.dart
deleted file mode 100644
index 922cf9a..0000000
--- a/tests/language/cha_deopt3_lib.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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 mylib;
-
-class A {}
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E {}
-
-class T {}
diff --git a/tests/language/cha_deopt3_test.dart b/tests/language/cha_deopt3_test.dart
deleted file mode 100644
index dfcd7af..0000000
--- a/tests/language/cha_deopt3_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=100 --no-background-compilation
-// VMOptions=--optimization-counter-threshold=100 --no-background-compilation --no-use-field-guards
-
-// Test lazy deoptimization at type checks with interface implementation.
-
-import "package:expect/expect.dart";
-import "cha_deopt3_lib.dart";
-import "cha_deopt3_deferred_lib.dart" deferred as d;
-
-var loaded = false;
-
-main() {
-  for (var i = 0; i < 2000; i++) bla();
-  Expect.equals(1, bla());
-  d.loadLibrary().then((_) {
-    loaded = true;
-    Expect.equals(1, bla());
-  });
-}
-
-make_array() {
-  try {
-    if (loaded) {
-      return [new A(), new B(), new C(), new D(), new E(), d.make_u()];
-    } else {
-      return [new A(), new B(), new C(), new D(), new E(), new T()];
-    }
-  } catch (e) {}
-}
-
-bla() {
-  var count = 0;
-  for (var x in make_array()) {
-    if (x is T) count++;
-  }
-  return count;
-}
diff --git a/tests/language/char_escape_test.dart b/tests/language/char_escape_test.dart
deleted file mode 100644
index 7b87fbe..0000000
--- a/tests/language/char_escape_test.dart
+++ /dev/null
@@ -1,533 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for reading escape sequences in string literals
-
-import "package:expect/expect.dart";
-
-class CharEscapeTest {
-  static testMain() {
-    var x00 = "\x00";
-    var u0000 = "\u0000";
-    var v0 = "\u{0}";
-    var v00 = "\u{00}";
-    var v000 = "\u{000}";
-    var v0000 = "\u{0000}";
-    var v00000 = "\u{00000}";
-    var v000000 = "\u{000000}";
-    Expect.equals(1, x00.length);
-    Expect.equals(1, u0000.length);
-    Expect.equals(1, v0.length);
-    Expect.equals(1, v00.length);
-    Expect.equals(1, v000.length);
-    Expect.equals(1, v0000.length);
-    Expect.equals(1, v00000.length);
-    Expect.equals(1, v000000.length);
-    Expect.equals(0, x00.codeUnitAt(0));
-    Expect.equals(0, u0000.codeUnitAt(0));
-    Expect.equals(0, v0.codeUnitAt(0));
-    Expect.equals(0, v00.codeUnitAt(0));
-    Expect.equals(0, v000.codeUnitAt(0));
-    Expect.equals(0, v0000.codeUnitAt(0));
-    Expect.equals(0, v00000.codeUnitAt(0));
-    Expect.equals(0, v000000.codeUnitAt(0));
-    Expect.equals("\x00", new String.fromCharCodes([0]));
-    Expect.equals("\u0000", new String.fromCharCodes([0]));
-    Expect.equals("\u{0}", new String.fromCharCodes([0]));
-    Expect.equals("\u{00}", new String.fromCharCodes([0]));
-    Expect.equals("\u{000}", new String.fromCharCodes([0]));
-    Expect.equals("\u{0000}", new String.fromCharCodes([0]));
-    Expect.equals("\u{00000}", new String.fromCharCodes([0]));
-    Expect.equals("\u{000000}", new String.fromCharCodes([0]));
-
-    var x01 = "\x01";
-    var u0001 = "\u0001";
-    var v1 = "\u{1}";
-    var v01 = "\u{01}";
-    var v001 = "\u{001}";
-    var v0001 = "\u{0001}";
-    var v00001 = "\u{00001}";
-    var v000001 = "\u{000001}";
-    Expect.equals(1, x01.length);
-    Expect.equals(1, u0001.length);
-    Expect.equals(1, v1.length);
-    Expect.equals(1, v01.length);
-    Expect.equals(1, v001.length);
-    Expect.equals(1, v0001.length);
-    Expect.equals(1, v00001.length);
-    Expect.equals(1, v000001.length);
-    Expect.equals(1, x01.codeUnitAt(0));
-    Expect.equals(1, u0001.codeUnitAt(0));
-    Expect.equals(1, v1.codeUnitAt(0));
-    Expect.equals(1, v01.codeUnitAt(0));
-    Expect.equals(1, v001.codeUnitAt(0));
-    Expect.equals(1, v0001.codeUnitAt(0));
-    Expect.equals(1, v00001.codeUnitAt(0));
-    Expect.equals(1, v000001.codeUnitAt(0));
-    Expect.equals("\x01", new String.fromCharCodes([1]));
-    Expect.equals("\u0001", new String.fromCharCodes([1]));
-    Expect.equals("\u{1}", new String.fromCharCodes([1]));
-    Expect.equals("\u{01}", new String.fromCharCodes([1]));
-    Expect.equals("\u{001}", new String.fromCharCodes([1]));
-    Expect.equals("\u{0001}", new String.fromCharCodes([1]));
-    Expect.equals("\u{00001}", new String.fromCharCodes([1]));
-    Expect.equals("\u{000001}", new String.fromCharCodes([1]));
-
-    var x55 = "\x55";
-    var u0055 = "\u0055";
-    var v55 = "\u{55}";
-    var v055 = "\u{055}";
-    var v0055 = "\u{0055}";
-    var v00055 = "\u{00055}";
-    var v000055 = "\u{000055}";
-    Expect.equals(1, x55.length);
-    Expect.equals(1, u0055.length);
-    Expect.equals(1, v55.length);
-    Expect.equals(1, v055.length);
-    Expect.equals(1, v0055.length);
-    Expect.equals(1, v00055.length);
-    Expect.equals(1, v000055.length);
-    Expect.equals(0x55, x55.codeUnitAt(0));
-    Expect.equals(0x55, u0055.codeUnitAt(0));
-    Expect.equals(0x55, v55.codeUnitAt(0));
-    Expect.equals(0x55, v055.codeUnitAt(0));
-    Expect.equals(0x55, v0055.codeUnitAt(0));
-    Expect.equals(0x55, v00055.codeUnitAt(0));
-    Expect.equals(0x55, v000055.codeUnitAt(0));
-    Expect.equals("\x55", new String.fromCharCodes([0x55]));
-    Expect.equals("\u0055", new String.fromCharCodes([0x55]));
-    Expect.equals("\u{55}", new String.fromCharCodes([0x55]));
-    Expect.equals("\u{055}", new String.fromCharCodes([0x55]));
-    Expect.equals("\u{0055}", new String.fromCharCodes([0x55]));
-    Expect.equals("\u{00055}", new String.fromCharCodes([0x55]));
-    Expect.equals("\u{000055}", new String.fromCharCodes([0x55]));
-
-    var x7F = "\x7F";
-    var u007F = "\u007F";
-    var v7F = "\u{7F}";
-    var v07F = "\u{07F}";
-    var v007F = "\u{007F}";
-    var v0007F = "\u{0007F}";
-    var v00007F = "\u{00007F}";
-    Expect.equals(1, x7F.length);
-    Expect.equals(1, u007F.length);
-    Expect.equals(1, v7F.length);
-    Expect.equals(1, v07F.length);
-    Expect.equals(1, v007F.length);
-    Expect.equals(1, v0007F.length);
-    Expect.equals(1, v00007F.length);
-    Expect.equals(0x7F, x7F.codeUnitAt(0));
-    Expect.equals(0x7F, u007F.codeUnitAt(0));
-    Expect.equals(0x7F, v7F.codeUnitAt(0));
-    Expect.equals(0x7F, v07F.codeUnitAt(0));
-    Expect.equals(0x7F, v007F.codeUnitAt(0));
-    Expect.equals(0x7F, v0007F.codeUnitAt(0));
-    Expect.equals(0x7F, v00007F.codeUnitAt(0));
-    Expect.equals("\x7F", new String.fromCharCodes([0x7F]));
-    Expect.equals("\u007F", new String.fromCharCodes([0x7F]));
-    Expect.equals("\u{7F}", new String.fromCharCodes([0x7F]));
-    Expect.equals("\u{07F}", new String.fromCharCodes([0x7F]));
-    Expect.equals("\u{007F}", new String.fromCharCodes([0x7F]));
-    Expect.equals("\u{0007F}", new String.fromCharCodes([0x7F]));
-    Expect.equals("\u{00007F}", new String.fromCharCodes([0x7F]));
-
-    var x80 = "\x80";
-    var u0080 = "\u0080";
-    var v80 = "\u{80}";
-    var v080 = "\u{080}";
-    var v0080 = "\u{0080}";
-    var v00080 = "\u{00080}";
-    var v000080 = "\u{000080}";
-    Expect.equals(1, x80.length);
-    Expect.equals(1, u0080.length);
-    Expect.equals(1, v80.length);
-    Expect.equals(1, v080.length);
-    Expect.equals(1, v0080.length);
-    Expect.equals(1, v00080.length);
-    Expect.equals(1, v000080.length);
-    Expect.equals(0x80, x80.codeUnitAt(0));
-    Expect.equals(0x80, u0080.codeUnitAt(0));
-    Expect.equals(0x80, v80.codeUnitAt(0));
-    Expect.equals(0x80, v080.codeUnitAt(0));
-    Expect.equals(0x80, v0080.codeUnitAt(0));
-    Expect.equals(0x80, v00080.codeUnitAt(0));
-    Expect.equals(0x80, v000080.codeUnitAt(0));
-    Expect.equals("\x80", new String.fromCharCodes([0x80]));
-    Expect.equals("\u0080", new String.fromCharCodes([0x80]));
-    Expect.equals("\u{80}", new String.fromCharCodes([0x80]));
-    Expect.equals("\u{080}", new String.fromCharCodes([0x80]));
-    Expect.equals("\u{0080}", new String.fromCharCodes([0x80]));
-    Expect.equals("\u{00080}", new String.fromCharCodes([0x80]));
-    Expect.equals("\u{000080}", new String.fromCharCodes([0x80]));
-
-    var xAA = "\xAA";
-    var u00AA = "\u00AA";
-    var vAA = "\u{AA}";
-    var v0AA = "\u{0AA}";
-    var v00AA = "\u{00AA}";
-    var v000AA = "\u{000AA}";
-    var v0000AA = "\u{0000AA}";
-    Expect.equals(1, xAA.length);
-    Expect.equals(1, u00AA.length);
-    Expect.equals(1, vAA.length);
-    Expect.equals(1, v0AA.length);
-    Expect.equals(1, v00AA.length);
-    Expect.equals(1, v000AA.length);
-    Expect.equals(1, v0000AA.length);
-    Expect.equals(0xAA, xAA.codeUnitAt(0));
-    Expect.equals(0xAA, u00AA.codeUnitAt(0));
-    Expect.equals(0xAA, vAA.codeUnitAt(0));
-    Expect.equals(0xAA, v0AA.codeUnitAt(0));
-    Expect.equals(0xAA, v00AA.codeUnitAt(0));
-    Expect.equals(0xAA, v000AA.codeUnitAt(0));
-    Expect.equals(0xAA, v0000AA.codeUnitAt(0));
-    Expect.equals("\xAA", new String.fromCharCodes([0xAA]));
-    Expect.equals("\u00AA", new String.fromCharCodes([0xAA]));
-    Expect.equals("\u{AA}", new String.fromCharCodes([0xAA]));
-    Expect.equals("\u{0AA}", new String.fromCharCodes([0xAA]));
-    Expect.equals("\u{00AA}", new String.fromCharCodes([0xAA]));
-    Expect.equals("\u{000AA}", new String.fromCharCodes([0xAA]));
-    Expect.equals("\u{0000AA}", new String.fromCharCodes([0xAA]));
-
-    var xFE = "\xFE";
-    var u00FE = "\u00FE";
-    var vFE = "\u{FE}";
-    var v0FE = "\u{0FE}";
-    var v00FE = "\u{00FE}";
-    var v000FE = "\u{000FE}";
-    var v0000FE = "\u{0000FE}";
-    Expect.equals(1, xFE.length);
-    Expect.equals(1, u00FE.length);
-    Expect.equals(1, vFE.length);
-    Expect.equals(1, v0FE.length);
-    Expect.equals(1, v00FE.length);
-    Expect.equals(1, v000FE.length);
-    Expect.equals(1, v0000FE.length);
-    Expect.equals(0xFE, xFE.codeUnitAt(0));
-    Expect.equals(0xFE, u00FE.codeUnitAt(0));
-    Expect.equals(0xFE, vFE.codeUnitAt(0));
-    Expect.equals(0xFE, v0FE.codeUnitAt(0));
-    Expect.equals(0xFE, v00FE.codeUnitAt(0));
-    Expect.equals(0xFE, v000FE.codeUnitAt(0));
-    Expect.equals(0xFE, v0000FE.codeUnitAt(0));
-    Expect.equals("\xFE", new String.fromCharCodes([0xFE]));
-    Expect.equals("\u00FE", new String.fromCharCodes([0xFE]));
-    Expect.equals("\u{FE}", new String.fromCharCodes([0xFE]));
-    Expect.equals("\u{0FE}", new String.fromCharCodes([0xFE]));
-    Expect.equals("\u{00FE}", new String.fromCharCodes([0xFE]));
-    Expect.equals("\u{000FE}", new String.fromCharCodes([0xFE]));
-    Expect.equals("\u{0000FE}", new String.fromCharCodes([0xFE]));
-
-    var xFF = "\xFF";
-    var u00FF = "\u00FF";
-    var vFF = "\u{FF}";
-    var v0FF = "\u{0FF}";
-    var v00FF = "\u{00FF}";
-    var v000FF = "\u{000FF}";
-    var v0000FF = "\u{0000FF}";
-    Expect.equals(1, xFF.length);
-    Expect.equals(1, u00FF.length);
-    Expect.equals(1, vFF.length);
-    Expect.equals(1, v0FF.length);
-    Expect.equals(1, v00FF.length);
-    Expect.equals(1, v000FF.length);
-    Expect.equals(1, v0000FF.length);
-    Expect.equals(0xFF, xFF.codeUnitAt(0));
-    Expect.equals(0xFF, u00FF.codeUnitAt(0));
-    Expect.equals(0xFF, vFF.codeUnitAt(0));
-    Expect.equals(0xFF, v0FF.codeUnitAt(0));
-    Expect.equals(0xFF, v00FF.codeUnitAt(0));
-    Expect.equals(0xFF, v000FF.codeUnitAt(0));
-    Expect.equals(0xFF, v0000FF.codeUnitAt(0));
-    Expect.equals("\xFF", new String.fromCharCodes([0xFF]));
-    Expect.equals("\u00FF", new String.fromCharCodes([0xFF]));
-    Expect.equals("\u{FF}", new String.fromCharCodes([0xFF]));
-    Expect.equals("\u{0FF}", new String.fromCharCodes([0xFF]));
-    Expect.equals("\u{00FF}", new String.fromCharCodes([0xFF]));
-    Expect.equals("\u{000FF}", new String.fromCharCodes([0xFF]));
-    Expect.equals("\u{0000FF}", new String.fromCharCodes([0xFF]));
-
-    var u1000 = "\u1000";
-    var v1000 = "\u{1000}";
-    var v01000 = "\u{01000}";
-    var v001000 = "\u{001000}";
-    Expect.equals(1, u1000.length);
-    Expect.equals(1, v1000.length);
-    Expect.equals(1, v01000.length);
-    Expect.equals(1, v001000.length);
-    Expect.equals(0x1000, u1000.codeUnitAt(0));
-    Expect.equals(0x1000, v1000.codeUnitAt(0));
-    Expect.equals(0x1000, v01000.codeUnitAt(0));
-    Expect.equals(0x1000, v001000.codeUnitAt(0));
-    Expect.equals("\u1000", new String.fromCharCodes([0x1000]));
-    Expect.equals("\u{1000}", new String.fromCharCodes([0x1000]));
-    Expect.equals("\u{01000}", new String.fromCharCodes([0x1000]));
-    Expect.equals("\u{001000}", new String.fromCharCodes([0x1000]));
-
-    var u5555 = "\u5555";
-    var v5555 = "\u{5555}";
-    var v05555 = "\u{05555}";
-    var v005555 = "\u{005555}";
-    Expect.equals(1, u5555.length);
-    Expect.equals(1, v5555.length);
-    Expect.equals(1, v05555.length);
-    Expect.equals(1, v005555.length);
-    Expect.equals(0x5555, u5555.codeUnitAt(0));
-    Expect.equals(0x5555, v5555.codeUnitAt(0));
-    Expect.equals(0x5555, v05555.codeUnitAt(0));
-    Expect.equals(0x5555, v005555.codeUnitAt(0));
-    Expect.equals("\u5555", new String.fromCharCodes([0x5555]));
-    Expect.equals("\u{5555}", new String.fromCharCodes([0x5555]));
-    Expect.equals("\u{05555}", new String.fromCharCodes([0x5555]));
-    Expect.equals("\u{005555}", new String.fromCharCodes([0x5555]));
-
-    var u7FFF = "\u7FFF";
-    var v7FFF = "\u{7FFF}";
-    var v07FFF = "\u{07FFF}";
-    var v007FFF = "\u{007FFF}";
-    Expect.equals(1, u7FFF.length);
-    Expect.equals(1, v7FFF.length);
-    Expect.equals(1, v07FFF.length);
-    Expect.equals(1, v007FFF.length);
-    Expect.equals(0x7FFF, u7FFF.codeUnitAt(0));
-    Expect.equals(0x7FFF, v7FFF.codeUnitAt(0));
-    Expect.equals(0x7FFF, v07FFF.codeUnitAt(0));
-    Expect.equals(0x7FFF, v007FFF.codeUnitAt(0));
-    Expect.equals("\u7FFF", new String.fromCharCodes([0x7FFF]));
-    Expect.equals("\u{7FFF}", new String.fromCharCodes([0x7FFF]));
-    Expect.equals("\u{07FFF}", new String.fromCharCodes([0x7FFF]));
-    Expect.equals("\u{007FFF}", new String.fromCharCodes([0x7FFF]));
-
-    var u8000 = "\u8000";
-    var v8000 = "\u{8000}";
-    var v08000 = "\u{08000}";
-    var v008000 = "\u{008000}";
-    Expect.equals(1, u8000.length);
-    Expect.equals(1, v8000.length);
-    Expect.equals(1, v08000.length);
-    Expect.equals(1, v008000.length);
-    Expect.equals(0x8000, u8000.codeUnitAt(0));
-    Expect.equals(0x8000, v8000.codeUnitAt(0));
-    Expect.equals(0x8000, v08000.codeUnitAt(0));
-    Expect.equals(0x8000, v008000.codeUnitAt(0));
-    Expect.equals("\u8000", new String.fromCharCodes([0x8000]));
-    Expect.equals("\u{8000}", new String.fromCharCodes([0x8000]));
-    Expect.equals("\u{08000}", new String.fromCharCodes([0x8000]));
-    Expect.equals("\u{008000}", new String.fromCharCodes([0x8000]));
-
-    var uAAAA = "\uAAAA";
-    var vAAAA = "\u{AAAA}";
-    var v0AAAA = "\u{0AAAA}";
-    var v00AAAA = "\u{00AAAA}";
-    Expect.equals(1, uAAAA.length);
-    Expect.equals(1, vAAAA.length);
-    Expect.equals(1, v0AAAA.length);
-    Expect.equals(1, v00AAAA.length);
-    Expect.equals(0xAAAA, uAAAA.codeUnitAt(0));
-    Expect.equals(0xAAAA, vAAAA.codeUnitAt(0));
-    Expect.equals(0xAAAA, v0AAAA.codeUnitAt(0));
-    Expect.equals(0xAAAA, v00AAAA.codeUnitAt(0));
-    Expect.equals("\uAAAA", new String.fromCharCodes([0xAAAA]));
-    Expect.equals("\u{AAAA}", new String.fromCharCodes([0xAAAA]));
-    Expect.equals("\u{0AAAA}", new String.fromCharCodes([0xAAAA]));
-    Expect.equals("\u{00AAAA}", new String.fromCharCodes([0xAAAA]));
-
-    var uFFFE = "\uFFFE";
-    var vFFFE = "\u{FFFE}";
-    var v0FFFE = "\u{0FFFE}";
-    var v00FFFE = "\u{00FFFE}";
-    Expect.equals(1, uFFFE.length);
-    Expect.equals(1, vFFFE.length);
-    Expect.equals(1, v0FFFE.length);
-    Expect.equals(1, v00FFFE.length);
-    Expect.equals(0xFFFE, uFFFE.codeUnitAt(0));
-    Expect.equals(0xFFFE, vFFFE.codeUnitAt(0));
-    Expect.equals(0xFFFE, v0FFFE.codeUnitAt(0));
-    Expect.equals(0xFFFE, v00FFFE.codeUnitAt(0));
-    Expect.equals("\uFFFE", new String.fromCharCodes([0xFFFE]));
-    Expect.equals("\u{FFFE}", new String.fromCharCodes([0xFFFE]));
-    Expect.equals("\u{0FFFE}", new String.fromCharCodes([0xFFFE]));
-    Expect.equals("\u{00FFFE}", new String.fromCharCodes([0xFFFE]));
-
-    var uFFFF = "\uFFFF";
-    var vFFFF = "\u{FFFF}";
-    var v0FFFF = "\u{0FFFF}";
-    var v00FFFF = "\u{00FFFF}";
-    Expect.equals(1, uFFFF.length);
-    Expect.equals(1, vFFFF.length);
-    Expect.equals(1, v0FFFF.length);
-    Expect.equals(1, v00FFFF.length);
-    Expect.equals(0xFFFF, uFFFF.codeUnitAt(0));
-    Expect.equals(0xFFFF, vFFFF.codeUnitAt(0));
-    Expect.equals(0xFFFF, v0FFFF.codeUnitAt(0));
-    Expect.equals(0xFFFF, v00FFFF.codeUnitAt(0));
-    Expect.equals("\uFFFF", new String.fromCharCodes([0xFFFF]));
-    Expect.equals("\u{FFFF}", new String.fromCharCodes([0xFFFF]));
-    Expect.equals("\u{0FFFF}", new String.fromCharCodes([0xFFFF]));
-    Expect.equals("\u{00FFFF}", new String.fromCharCodes([0xFFFF]));
-
-    var v10000 = "\u{10000}";
-    var v010000 = "\u{010000}";
-    Expect.equals(2, v10000.length);
-    Expect.equals(2, v010000.length);
-    Expect.equals("\u{10000}", new String.fromCharCodes([0x10000]));
-    Expect.equals("\u{010000}", new String.fromCharCodes([0x10000]));
-
-    var v1FFFF = "\u{1FFFF}";
-    var v01FFFF = "\u{01FFFF}";
-    Expect.equals(2, v1FFFF.length);
-    Expect.equals(2, v01FFFF.length);
-    Expect.equals("\u{1FFFF}", new String.fromCharCodes([0x1FFFF]));
-    Expect.equals("\u{01FFFF}", new String.fromCharCodes([0x1FFFF]));
-
-    var v105555 = "\u{105555}";
-    Expect.equals(2, v105555.length);
-    Expect.equals("\u{105555}", new String.fromCharCodes([0x105555]));
-
-    var v10FFFF = "\u{10FFFF}";
-    Expect.equals(2, v10FFFF.length);
-    Expect.equals("\u{10FFFF}", new String.fromCharCodes([0x10FFFF]));
-
-    var bs = "\b";
-    Expect.isTrue(bs != "b");
-    Expect.equals(1, bs.length);
-    Expect.equals(0x08, bs.codeUnitAt(0));
-    Expect.equals(bs, new String.fromCharCodes([0x08]));
-    Expect.equals("\x08", bs);
-    Expect.equals("\u0008", bs);
-    Expect.equals("\u{8}", bs);
-    Expect.equals("\u{08}", bs);
-    Expect.equals("\u{008}", bs);
-    Expect.equals("\u{0008}", bs);
-    Expect.equals("\u{00008}", bs);
-    Expect.equals("\u{000008}", bs);
-
-    var ht = "\t";
-    Expect.isTrue(ht != "t");
-    Expect.equals(1, ht.length);
-    Expect.equals(0x09, ht.codeUnitAt(0));
-    Expect.equals(ht, new String.fromCharCodes([0x09]));
-    Expect.equals("\x09", ht);
-    Expect.equals("\u0009", ht);
-    Expect.equals("\u{9}", ht);
-    Expect.equals("\u{09}", ht);
-    Expect.equals("\u{009}", ht);
-    Expect.equals("\u{0009}", ht);
-    Expect.equals("\u{00009}", ht);
-    Expect.equals("\u{000009}", ht);
-
-    var lf = "\n";
-    Expect.isTrue(lf != "n");
-    Expect.equals(1, lf.length);
-    Expect.equals(0x0A, lf.codeUnitAt(0));
-    Expect.equals(lf, new String.fromCharCodes([0x0A]));
-    Expect.equals("\x0A", lf);
-    Expect.equals("\u000A", lf);
-    Expect.equals("\u{A}", lf);
-    Expect.equals("\u{0A}", lf);
-    Expect.equals("\u{00A}", lf);
-    Expect.equals("\u{000A}", lf);
-    Expect.equals("\u{0000A}", lf);
-    Expect.equals("\u{00000A}", lf);
-
-    var vt = "\v";
-    Expect.isTrue(vt != "v");
-    Expect.equals(1, vt.length);
-    Expect.equals(0x0B, vt.codeUnitAt(0));
-    Expect.equals(vt, new String.fromCharCodes([0x0B]));
-    Expect.equals("\x0B", vt);
-    Expect.equals("\u000B", vt);
-    Expect.equals("\u{B}", vt);
-    Expect.equals("\u{0B}", vt);
-    Expect.equals("\u{00B}", vt);
-    Expect.equals("\u{000B}", vt);
-    Expect.equals("\u{0000B}", vt);
-    Expect.equals("\u{00000B}", vt);
-
-    var ff = "\f";
-    Expect.isTrue(ff != "f");
-    Expect.equals(1, ff.length);
-    Expect.equals(0x0C, ff.codeUnitAt(0));
-    Expect.equals(ff, new String.fromCharCodes([0x0C]));
-    Expect.equals("\x0C", ff);
-    Expect.equals("\u000C", ff);
-    Expect.equals("\u{C}", ff);
-    Expect.equals("\u{0C}", ff);
-    Expect.equals("\u{00C}", ff);
-    Expect.equals("\u{000C}", ff);
-    Expect.equals("\u{0000C}", ff);
-    Expect.equals("\u{00000C}", ff);
-
-    var cr = "\r";
-    Expect.isTrue(cr != "r");
-    Expect.equals(1, cr.length);
-    Expect.equals(0x0D, cr.codeUnitAt(0));
-    Expect.equals(cr, new String.fromCharCodes([0x0D]));
-    Expect.equals("\x0D", cr);
-    Expect.equals("\u000D", cr);
-    Expect.equals("\u{D}", cr);
-    Expect.equals("\u{0D}", cr);
-    Expect.equals("\u{00D}", cr);
-    Expect.equals("\u{000D}", cr);
-    Expect.equals("\u{0000D}", cr);
-    Expect.equals("\u{00000D}", cr);
-
-    Expect.equals("\a", "a");
-    // \b U+0006 BS
-    Expect.equals("\c", "c");
-    Expect.equals("\d", "d");
-    Expect.equals("\e", "e");
-    // \f U+000C FF
-    Expect.equals("\g", "g");
-    Expect.equals("\h", "h");
-    Expect.equals("\i", "i");
-    Expect.equals("\j", "j");
-    Expect.equals("\k", "k");
-    Expect.equals("\l", "l");
-    Expect.equals("\m", "m");
-    // \n U+000A LF
-    Expect.equals("\o", "o");
-    Expect.equals("\p", "p");
-    Expect.equals("\q", "q");
-    // \r U+000D CR
-    Expect.equals("\s", "s");
-    // \t U+0009 HT
-    // \u code point escape
-    // \v U+000B VT
-    Expect.equals("\w", "w");
-    // \x code point escape
-    Expect.equals("\y", "y");
-    Expect.equals("\z", "z");
-
-    Expect.equals("\A", "A");
-    Expect.equals("\B", "B");
-    Expect.equals("\C", "C");
-    Expect.equals("\D", "D");
-    Expect.equals("\E", "E");
-    Expect.equals("\F", "F");
-    Expect.equals("\G", "G");
-    Expect.equals("\H", "H");
-    Expect.equals("\I", "I");
-    Expect.equals("\J", "J");
-    Expect.equals("\K", "K");
-    Expect.equals("\L", "L");
-    Expect.equals("\M", "M");
-    Expect.equals("\N", "N");
-    Expect.equals("\O", "O");
-    Expect.equals("\P", "P");
-    Expect.equals("\Q", "Q");
-    Expect.equals("\R", "R");
-    Expect.equals("\S", "S");
-    Expect.equals("\T", "T");
-    Expect.equals("\U", "U");
-    Expect.equals("\V", "V");
-    Expect.equals("\W", "W");
-    Expect.equals("\X", "X");
-    Expect.equals("\Y", "Y");
-    Expect.equals("\Z", "Z");
-  }
-}
-
-main() {
-  CharEscapeTest.testMain();
-}
diff --git a/tests/language/check_member_static_test.dart b/tests/language/check_member_static_test.dart
deleted file mode 100644
index c0b5032..0000000
--- a/tests/language/check_member_static_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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 a;
-  var b;
-}
-
-class B extends A {}
-
-class C extends B {
-  var a; //# 01: static type warning
-  static var b; //# 02: compile-time error
-}
-
-void main() {
-  new C();
-}
diff --git a/tests/language/check_method_override_test.dart b/tests/language/check_method_override_test.dart
deleted file mode 100644
index bf5b8ae..0000000
--- a/tests/language/check_method_override_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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 {
-  f([var x]) {}
-  foo(var a, [x, y]) {}
-}
-
-class C extends A {
-  f() {} //# 01: static type warning
-  foo(var a, [x]) {} //# 02: static type warning
-}
-
-main() {
-  new A().foo(2);
-  new C().foo(1);
-}
diff --git a/tests/language/checked_mode_helper.dart b/tests/language/checked_mode_helper.dart
deleted file mode 100644
index 72ad80af..0000000
--- a/tests/language/checked_mode_helper.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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 checked_mode_helper;
-
-import 'package:expect/expect.dart';
-
-/// Returns `true` if the program is running in checked mode.
-bool inCheckedMode() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-/// Checks that a dynamic type error is thrown if and only if [f] is executed in
-/// checked mode and [expectTypeError] is `true`.
-void testDynamicTypeError(bool expectTypeError, f(), [String message]) {
-  if (expectTypeError) {
-    checkDynamicTypeError(f, message);
-  } else {
-    checkNoDynamicTypeError(f, message);
-  }
-}
-
-/// Checks that a dynamic type error is thrown if and only if [f] is executed in
-/// checked mode.
-void checkDynamicTypeError(f(), [String message]) {
-  message = message != null ? ': $message' : '';
-  try {
-    f();
-    Expect.isFalse(
-        inCheckedMode(), 'Missing type error in checked mode$message.');
-  } on TypeError catch (e) {
-    Expect.isTrue(inCheckedMode(), 'Unexpected type error in production mode.');
-  }
-}
-
-/// Checks that no dynamic type error is thrown when [f] is executed regardless
-/// of execution mode.
-void checkNoDynamicTypeError(f(), [String message]) {
-  message = message != null ? ': $message' : '';
-  try {
-    f();
-  } on TypeError catch (e) {
-    String mode = inCheckedMode() ? 'checked mode' : 'production mode';
-    Expect.fail('Unexpected type error in $mode$message.');
-  }
-}
diff --git a/tests/language/checked_null_test.dart b/tests/language/checked_null_test.dart
deleted file mode 100644
index b86f00e..0000000
--- a/tests/language/checked_null_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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";
-
-class A {
-  Map a;
-  Comparator b;
-  // This code exhibited a bug in dart2js checked mode, where the type
-  // of [a] was inferred to be [Comparator] or null;
-  A()
-      : b = null,
-        a = null;
-}
-
-main() {
-  Expect.throws(bar); //# 01: continued
-}
-
-bar() {
-  // We would create a typed selector for the call to foo, where the
-  // receiver type is a typedef. Some code in the dart2js backend were
-  // not dealing correctly with typedefs and lead the compiler to
-  // crash.
-  new A().a.foo(); //# 01: static type warning
-}
diff --git a/tests/language/checked_setter2_test.dart b/tests/language/checked_setter2_test.dart
deleted file mode 100644
index 970d505..0000000
--- a/tests/language/checked_setter2_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that implicit setters in checked mode do a type check generic types.
-
-import "package:expect/expect.dart";
-
-class A {
-  C<int> c;
-}
-
-class B extends A {}
-
-class C<T> {}
-
-var array = [new B()];
-
-main() {
-  array[0].c = new C();
-  bool inCheckedMode = false;
-  try {
-    var i = 42;
-    String a = i;
-  } catch (e) {
-    inCheckedMode = true;
-  }
-  if (inCheckedMode) {
-    Expect.throws(() => array[0].c = new C<bool>(), (e) => e is TypeError);
-  }
-}
diff --git a/tests/language/checked_setter3_test.dart b/tests/language/checked_setter3_test.dart
deleted file mode 100644
index 21585f6..0000000
--- a/tests/language/checked_setter3_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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";
-
-bool get inCheckedMode {
-  try {
-    var i = 42;
-    String a = i;
-  } catch (e) {
-    return true;
-  }
-  return false;
-}
-
-class A<T> {
-  T field;
-}
-
-class B<T> {
-  T field = 42; //# 01: static type warning
-}
-
-class C<T> {
-  T field = 42; //# 02: static type warning
-}
-
-main() {
-  var a = new A<String>();
-  var c = new C<int>();
-  var i = 42;
-  var s = 'foo';
-  if (inCheckedMode) {
-    Expect.throws(() => a.field = i, (e) => e is TypeError);
-    Expect.throws(() => new B<String>(), (e) => e is TypeError); //# 01: continued
-    Expect.throws(() => c.field = s, (e) => e is TypeError); //# 02: continued
-  } else {
-    a.field = i;
-    new B<String>(); //# 01: continued
-    c.field = s; //# 02: continued
-  }
-}
diff --git a/tests/language/checked_setter_test.dart b/tests/language/checked_setter_test.dart
deleted file mode 100644
index 6d45d8b..0000000
--- a/tests/language/checked_setter_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that implicit setters in checked mode do a type check.
-
-import "package:expect/expect.dart";
-
-class A {
-  C c;
-}
-
-class B extends A {}
-
-class C {}
-
-var array = [new B()];
-
-main() {
-  array[0].c = new C();
-  bool inCheckedMode = false;
-  try {
-    var i = 42;
-    String a = i;
-  } catch (e) {
-    inCheckedMode = true;
-  }
-  if (inCheckedMode) {
-    Expect.throws(() => array[0].c = new B(), (e) => e is TypeError);
-  }
-}
diff --git a/tests/language/class_codegen_test.dart b/tests/language/class_codegen_test.dart
deleted file mode 100644
index cbece1d..0000000
--- a/tests/language/class_codegen_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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";
-
-class A {
-  A() : x = 3;
-  foo() => x;
-  var x;
-}
-
-class B extends A {
-  bar() => 499;
-}
-
-class C extends A {
-  bar() => 42;
-}
-
-main() {
-  // We don't instantiate A, but the codegen still needs to emit (parts of) it
-  // for inheritance purposes.
-  var b = new B();
-  var c = new C();
-  Expect.equals(3, b.foo());
-  Expect.equals(3, c.foo());
-  Expect.equals(499, b.bar());
-  Expect.equals(42, c.bar());
-}
diff --git a/tests/language/class_cycle2_test.dart b/tests/language/class_cycle2_test.dart
deleted file mode 100644
index 2b1bb65..0000000
--- a/tests/language/class_cycle2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check fail because of cycles in super class relationship.
-
-class C extends B {}
-
-class A extends B {}
-
-class B
-  extends A // //# 01: compile-time error
-  extends A // //# 02: compile-time error
-{}
-
-main() {
-  new C(); // //# 01: continued
-  new List<C>(); // //# 02: continued
-}
diff --git a/tests/language/class_cycle_test.dart b/tests/language/class_cycle_test.dart
deleted file mode 100644
index dbc11a0..0000000
--- a/tests/language/class_cycle_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.
-// Check fail because of cycles in super class relationship.
-
-import "package:expect/expect.dart";
-
-class Foo implements Bar {}
-
-class C {}
-
-class Bar
-    extends Foo // //# 00: compile-time error
-    implements Foo // //# 01: compile-time error
-{}
-
-class ImplementsC implements C
-, C // //# 02: compile-time error
-{}
-
-// Spec says: It is a compile-time error if the superclass
-// of a class C appears in the implements clause of C.
-class ExtendsC extends C
-implements C // //# 03: compile-time error
-{}
-
-main() {
-  Expect.isTrue(new Foo() is Foo);
-  Expect.isTrue(new ImplementsC() is C);
-  Expect.isTrue(new ExtendsC() is C);
-}
diff --git a/tests/language/class_keyword_test.dart b/tests/language/class_keyword_test.dart
deleted file mode 100644
index 9d42e82..0000000
--- a/tests/language/class_keyword_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test that "class" cannot be used as identifier.
-
-class foo {}
-
-void main() {
-  int class = 10; //# 01: syntax error
-  print("$class"); //# 02: compile-time error
-}
diff --git a/tests/language/class_literal_test.dart b/tests/language/class_literal_test.dart
deleted file mode 100644
index aa10945..0000000
--- a/tests/language/class_literal_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test class literal expressions.
-
-class Class {
-  static fisk() => 42;
-}
-
-foo(x) {}
-
-main() {
-  Expect.equals(42, Class.fisk());
-  Expect.equals(null, foo(Class.fisk()));
-
-  // Verify references to a class literal are allowed.
-  Class;
-  var x = Class;
-  foo(Class);
-  Expect.isFalse(Class == null);
-
-  // Verify that dereferencing a class literal is a runtime error.
-  Expect.throws(() { Class(); }, (e) => e is NoSuchMethodError); //# 01: static type warning
-  Expect.throws(() { Class[0]; }, (e) => e is NoSuchMethodError); //# 02: static type warning
-  Expect.throws(() { var x = Class(); }, (e) => e is NoSuchMethodError); //# 03: static type warning
-  Expect.throws(() { var x = Class[0]; }, (e) => e is NoSuchMethodError); //# 04: static type warning
-  Expect.throws(() { var x = Class[0].field; }, (e) => e is NoSuchMethodError); //# 05: static type warning
-  Expect.throws(() { var x = Class[0].method(); }, (e) => e is NoSuchMethodError); //# 06: static type warning
-  Expect.throws(() { foo(Class()); }, (e) => e is NoSuchMethodError); //# 07: static type warning
-  Expect.throws(() { foo(Class[0]); }, (e) => e is NoSuchMethodError); //# 08: static type warning
-  Expect.throws(() { foo(Class[0].field); }, (e) => e is NoSuchMethodError); //# 09: static type warning
-  Expect.throws(() { foo(Class[0].method()); }, (e) => e is NoSuchMethodError); //# 10: static type warning
-  Expect.throws(() { Class[0] = 91; }, (e) => e is NoSuchMethodError); //# 11: static type warning
-  Expect.throws(() { Class++; }, (e) => e is NoSuchMethodError); //# 12: static type warning
-  Expect.throws(() { ++Class; }, (e) => e is NoSuchMethodError); //# 13: static type warning
-  Expect.throws(() { Class[0] += 3; }, (e) => e is NoSuchMethodError); //# 14: static type warning
-  Expect.throws(() { ++Class[0]; }, (e) => e is NoSuchMethodError); //# 15: static type warning
-  Expect.throws(() { Class[0]++; }, (e) => e is NoSuchMethodError); //# 16: static type warning
-  Expect.throws(() { Class.method(); }, (e) => e is NoSuchMethodError); //# 17: static type warning
-  Expect.throws(() { Class.field; }, (e) => e is NoSuchMethodError); //# 18: static type warning
-  Expect.throws(() { var x = Class.method(); }, (e) => e is NoSuchMethodError); //# 19: static type warning
-  Expect.throws(() { var x = Class.field; }, (e) => e is NoSuchMethodError); //# 20: static type warning
-  Expect.throws(() { foo(Class.method()); }, (e) => e is NoSuchMethodError); //# 21: static type warning
-  Expect.throws(() { foo(Class.field); }, (e) => e is NoSuchMethodError); //# 22: static type warning
-  Expect.throws(() { Class / 3; }, (e) => e is NoSuchMethodError); //# 23: static type warning
-  Expect.throws(() { Class += 3; }, (e) => e is NoSuchMethodError); //# 24: static type warning
-
-  // Verify that a class literal isn't a string literal.
-  Expect.notEquals(Class, "Class");
-
-  // Verify toString() works for class literals.
-  Expect.isTrue((Class).toString() is String);
-  var y = Class;
-  Expect.isTrue(y.toString() is String);
-
-  Expect.throws(() { Class.toString(); }, (e) => e is NoSuchMethodError); //# 25: static type warning
-}
diff --git a/tests/language/class_override_test.dart b/tests/language/class_override_test.dart
deleted file mode 100644
index 011e64a..0000000
--- a/tests/language/class_override_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// It is a static warning if a method m1 overrides a method m2 and has a
-// different number of required parameters.
-
-class A {
-  foo() {}
-}
-
-class B extends A {
-  foo(a) {} // //# 00: static type warning
-}
-
-main() {
-  B instance = new B();
-  try {
-    instance.foo();
-  } on NoSuchMethodError catch (error) { // //# 00: continued
-  } finally {}
-  print("Success");
-}
diff --git a/tests/language/class_syntax2_test.dart b/tests/language/class_syntax2_test.dart
deleted file mode 100644
index e884c23..0000000
--- a/tests/language/class_syntax2_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js bug http://dartbug.com/11570.
-
-import 'package:expect/expect.dart';
-
-void main() {
-  var c = new Cool(true);
-  Expect.stringEquals('{}', '${c.thing}');
-
-  c = new Cool(false);
-  Expect.stringEquals('[]', '${c.thing}');
-
-  c = new Cool.alt(true);
-  Expect.stringEquals('{}', '${c.thing}');
-
-  c = new Cool.alt(false);
-  Expect.stringEquals('[]', '${c.thing}');
-}
-
-class Cool {
-  final thing;
-
-  Cool(bool option) : thing = option ? <String, String>{} : <String>[];
-  Cool.alt(bool option) : thing = !option ? <String>[] : <String, String>{};
-}
diff --git a/tests/language/class_syntax_test.dart b/tests/language/class_syntax_test.dart
deleted file mode 100644
index e5a2e9b..0000000
--- a/tests/language/class_syntax_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-main() {
-  new ClassSyntaxTest();
-}
-
-class ClassSyntaxTest {
-  /* //# 01: syntax error
-}
-*/ //# 01: continued
diff --git a/tests/language/class_test.dart b/tests/language/class_test.dart
deleted file mode 100644
index 0436393..0000000
--- a/tests/language/class_test.dart
+++ /dev/null
@@ -1,177 +0,0 @@
-// 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";
-
-// Tests basic classes and methods.
-class ClassTest {
-  ClassTest() {}
-
-  static testMain() {
-    var test = new ClassTest();
-    test.testSuperCalls();
-    test.testVirtualCalls();
-    test.testStaticCalls();
-    test.testInheritedField();
-    test.testMemberRefInClosure();
-    test.testFactory();
-    test.testNamedConstructors();
-    test.testDefaultImplementation();
-    test.testFunctionParameter((int a) {
-      return a;
-    });
-  }
-
-  testFunctionParameter(int func(int a)) {
-    Expect.equals(1, func(1));
-  }
-
-  testSuperCalls() {
-    var sub = new Sub();
-    Expect.equals(43, sub.methodX());
-    Expect.equals(84, sub.methodK());
-  }
-
-  testVirtualCalls() {
-    var sub = new Sub();
-    Expect.equals(41, sub.method2());
-    Expect.equals(41, sub.method3());
-  }
-
-  testStaticCalls() {
-    var sub = new Sub();
-    Expect.equals(-42, Sub.method4());
-    Expect.equals(-41, sub.method5());
-  }
-
-  testInheritedField() {
-    var sub = new Sub();
-    Expect.equals(42, sub.method6());
-  }
-
-  testMemberRefInClosure() {
-    var sub = new Sub();
-    Expect.equals(1, sub.closureRef());
-    Expect.equals(2, sub.closureRef());
-    // Make sure it is actually on the object, not the global 'this'.
-    sub = new Sub();
-    Expect.equals(1, sub.closureRef());
-    Expect.equals(2, sub.closureRef());
-  }
-
-  testFactory() {
-    var sup = new Sup.named();
-    Expect.equals(43, sup.methodX());
-    Expect.equals(84, sup.methodK());
-  }
-
-  testNamedConstructors() {
-    var sup = new Sup.fromInt(4);
-    Expect.equals(4, sup.methodX());
-    Expect.equals(0, sup.methodK());
-  }
-
-  testDefaultImplementation() {
-    var x = new Inter(4);
-    Expect.equals(4, x.methodX());
-    Expect.equals(8, x.methodK());
-
-    x = new Inter.fromInt(4);
-    Expect.equals(4, x.methodX());
-    Expect.equals(0, x.methodK());
-
-    x = new Inter.named();
-    Expect.equals(43, x.methodX());
-    Expect.equals(84, x.methodK());
-
-    x = new Inter.factory();
-    Expect.equals(43, x.methodX());
-    Expect.equals(84, x.methodK());
-  }
-}
-
-abstract class Inter {
-  factory Inter.named() = Sup.named;
-  factory Inter.fromInt(int x) = Sup.fromInt;
-  factory Inter(int x) = Sup;
-  factory Inter.factory() = Sup.factory;
-  int methodX();
-  int methodK();
-  int x_;
-}
-
-class Sup implements Inter {
-  int x_;
-  int k_;
-
-  factory Sup.named() {
-    return new Sub();
-  }
-
-  factory Sup.factory() {
-    return new Sub();
-  }
-
-  Sup.fromInt(int x) {
-    x_ = x;
-    k_ = 0;
-  }
-
-  int methodX() {
-    return x_;
-  }
-
-  int methodK() {
-    return k_;
-  }
-
-  Sup(int x) : this.x_ = x {
-    k_ = x * 2;
-  }
-
-  int method2() {
-    return x_ - 1;
-  }
-}
-
-class Sub extends Sup {
-  int y_;
-
-  // Override
-  int methodX() {
-    return super.methodX() + 1;
-  }
-
-  int method3() {
-    return method2();
-  }
-
-  static int method4() {
-    return -42;
-  }
-
-  int method5() {
-    return method4() + 1;
-  }
-
-  int method6() {
-    return x_ + y_;
-  }
-
-  int closureRef() {
-    var f = () {
-      y_ += 1;
-      return y_;
-    };
-    return f();
-  }
-
-  Sub() : super(42) {
-    y_ = 0;
-  }
-}
-
-main() {
-  ClassTest.testMain();
-}
diff --git a/tests/language/classes_static_method_clash_test.dart b/tests/language/classes_static_method_clash_test.dart
deleted file mode 100644
index 985a0c8..0000000
--- a/tests/language/classes_static_method_clash_test.dart
+++ /dev/null
@@ -1,8167 +0,0 @@
-// Copyright (c) 2015, 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";
-
-// This methods needs a stub method (because it is used in Function.apply, where
-// we can't see all possible uses).
-// The stub-method(s) must not clash with other global names (like classes).
-foo({a: 499}) => a;
-
-bar(f) {
-  return f();
-  return null;
-}
-
-int confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) confuse(x + 1);
-  return x;
-}
-
-main() {
-  Expect.equals(42, Function.apply(foo, [], {#a: 42}));
-  Expect.equals(499, Function.apply(foo, [], null));
-  print(objects[confuse(0)]);
-}
-
-/*
-The following code has been generated with the following script:
-
-get chars sync* {
-  for (int i = "a".codeUnitAt(0); i <= "z".codeUnitAt(0); i++) {
-    yield new String.fromCharCodes([i]);
-  }
-  for (int i = "A".codeUnitAt(0); i <= "Z".codeUnitAt(0); i++) {
-    yield new String.fromCharCodes([i]);
-  }
-}
-
-main() {
-  StringBuffer classes = new StringBuffer();
-  print("var objects = [");
-  for (String c1 in chars) {
-    for (String c2 in chars) {
-      print("  new C$c1$c2(),");
-      classes.writeln("class C$c1$c2{}");
-    }
-  }
-  print("];");
-  print(classes.toString());
-}
-*/
-
-var objects = [
-  new Caa(),
-  new Cab(),
-  new Cac(),
-  new Cad(),
-  new Cae(),
-  new Caf(),
-  new Cag(),
-  new Cah(),
-  new Cai(),
-  new Caj(),
-  new Cak(),
-  new Cal(),
-  new Cam(),
-  new Can(),
-  new Cao(),
-  new Cap(),
-  new Caq(),
-  new Car(),
-  new Cas(),
-  new Cat(),
-  new Cau(),
-  new Cav(),
-  new Caw(),
-  new Cax(),
-  new Cay(),
-  new Caz(),
-  new CaA(),
-  new CaB(),
-  new CaC(),
-  new CaD(),
-  new CaE(),
-  new CaF(),
-  new CaG(),
-  new CaH(),
-  new CaI(),
-  new CaJ(),
-  new CaK(),
-  new CaL(),
-  new CaM(),
-  new CaN(),
-  new CaO(),
-  new CaP(),
-  new CaQ(),
-  new CaR(),
-  new CaS(),
-  new CaT(),
-  new CaU(),
-  new CaV(),
-  new CaW(),
-  new CaX(),
-  new CaY(),
-  new CaZ(),
-  new Cba(),
-  new Cbb(),
-  new Cbc(),
-  new Cbd(),
-  new Cbe(),
-  new Cbf(),
-  new Cbg(),
-  new Cbh(),
-  new Cbi(),
-  new Cbj(),
-  new Cbk(),
-  new Cbl(),
-  new Cbm(),
-  new Cbn(),
-  new Cbo(),
-  new Cbp(),
-  new Cbq(),
-  new Cbr(),
-  new Cbs(),
-  new Cbt(),
-  new Cbu(),
-  new Cbv(),
-  new Cbw(),
-  new Cbx(),
-  new Cby(),
-  new Cbz(),
-  new CbA(),
-  new CbB(),
-  new CbC(),
-  new CbD(),
-  new CbE(),
-  new CbF(),
-  new CbG(),
-  new CbH(),
-  new CbI(),
-  new CbJ(),
-  new CbK(),
-  new CbL(),
-  new CbM(),
-  new CbN(),
-  new CbO(),
-  new CbP(),
-  new CbQ(),
-  new CbR(),
-  new CbS(),
-  new CbT(),
-  new CbU(),
-  new CbV(),
-  new CbW(),
-  new CbX(),
-  new CbY(),
-  new CbZ(),
-  new Cca(),
-  new Ccb(),
-  new Ccc(),
-  new Ccd(),
-  new Cce(),
-  new Ccf(),
-  new Ccg(),
-  new Cch(),
-  new Cci(),
-  new Ccj(),
-  new Cck(),
-  new Ccl(),
-  new Ccm(),
-  new Ccn(),
-  new Cco(),
-  new Ccp(),
-  new Ccq(),
-  new Ccr(),
-  new Ccs(),
-  new Cct(),
-  new Ccu(),
-  new Ccv(),
-  new Ccw(),
-  new Ccx(),
-  new Ccy(),
-  new Ccz(),
-  new CcA(),
-  new CcB(),
-  new CcC(),
-  new CcD(),
-  new CcE(),
-  new CcF(),
-  new CcG(),
-  new CcH(),
-  new CcI(),
-  new CcJ(),
-  new CcK(),
-  new CcL(),
-  new CcM(),
-  new CcN(),
-  new CcO(),
-  new CcP(),
-  new CcQ(),
-  new CcR(),
-  new CcS(),
-  new CcT(),
-  new CcU(),
-  new CcV(),
-  new CcW(),
-  new CcX(),
-  new CcY(),
-  new CcZ(),
-  new Cda(),
-  new Cdb(),
-  new Cdc(),
-  new Cdd(),
-  new Cde(),
-  new Cdf(),
-  new Cdg(),
-  new Cdh(),
-  new Cdi(),
-  new Cdj(),
-  new Cdk(),
-  new Cdl(),
-  new Cdm(),
-  new Cdn(),
-  new Cdo(),
-  new Cdp(),
-  new Cdq(),
-  new Cdr(),
-  new Cds(),
-  new Cdt(),
-  new Cdu(),
-  new Cdv(),
-  new Cdw(),
-  new Cdx(),
-  new Cdy(),
-  new Cdz(),
-  new CdA(),
-  new CdB(),
-  new CdC(),
-  new CdD(),
-  new CdE(),
-  new CdF(),
-  new CdG(),
-  new CdH(),
-  new CdI(),
-  new CdJ(),
-  new CdK(),
-  new CdL(),
-  new CdM(),
-  new CdN(),
-  new CdO(),
-  new CdP(),
-  new CdQ(),
-  new CdR(),
-  new CdS(),
-  new CdT(),
-  new CdU(),
-  new CdV(),
-  new CdW(),
-  new CdX(),
-  new CdY(),
-  new CdZ(),
-  new Cea(),
-  new Ceb(),
-  new Cec(),
-  new Ced(),
-  new Cee(),
-  new Cef(),
-  new Ceg(),
-  new Ceh(),
-  new Cei(),
-  new Cej(),
-  new Cek(),
-  new Cel(),
-  new Cem(),
-  new Cen(),
-  new Ceo(),
-  new Cep(),
-  new Ceq(),
-  new Cer(),
-  new Ces(),
-  new Cet(),
-  new Ceu(),
-  new Cev(),
-  new Cew(),
-  new Cex(),
-  new Cey(),
-  new Cez(),
-  new CeA(),
-  new CeB(),
-  new CeC(),
-  new CeD(),
-  new CeE(),
-  new CeF(),
-  new CeG(),
-  new CeH(),
-  new CeI(),
-  new CeJ(),
-  new CeK(),
-  new CeL(),
-  new CeM(),
-  new CeN(),
-  new CeO(),
-  new CeP(),
-  new CeQ(),
-  new CeR(),
-  new CeS(),
-  new CeT(),
-  new CeU(),
-  new CeV(),
-  new CeW(),
-  new CeX(),
-  new CeY(),
-  new CeZ(),
-  new Cfa(),
-  new Cfb(),
-  new Cfc(),
-  new Cfd(),
-  new Cfe(),
-  new Cff(),
-  new Cfg(),
-  new Cfh(),
-  new Cfi(),
-  new Cfj(),
-  new Cfk(),
-  new Cfl(),
-  new Cfm(),
-  new Cfn(),
-  new Cfo(),
-  new Cfp(),
-  new Cfq(),
-  new Cfr(),
-  new Cfs(),
-  new Cft(),
-  new Cfu(),
-  new Cfv(),
-  new Cfw(),
-  new Cfx(),
-  new Cfy(),
-  new Cfz(),
-  new CfA(),
-  new CfB(),
-  new CfC(),
-  new CfD(),
-  new CfE(),
-  new CfF(),
-  new CfG(),
-  new CfH(),
-  new CfI(),
-  new CfJ(),
-  new CfK(),
-  new CfL(),
-  new CfM(),
-  new CfN(),
-  new CfO(),
-  new CfP(),
-  new CfQ(),
-  new CfR(),
-  new CfS(),
-  new CfT(),
-  new CfU(),
-  new CfV(),
-  new CfW(),
-  new CfX(),
-  new CfY(),
-  new CfZ(),
-  new Cga(),
-  new Cgb(),
-  new Cgc(),
-  new Cgd(),
-  new Cge(),
-  new Cgf(),
-  new Cgg(),
-  new Cgh(),
-  new Cgi(),
-  new Cgj(),
-  new Cgk(),
-  new Cgl(),
-  new Cgm(),
-  new Cgn(),
-  new Cgo(),
-  new Cgp(),
-  new Cgq(),
-  new Cgr(),
-  new Cgs(),
-  new Cgt(),
-  new Cgu(),
-  new Cgv(),
-  new Cgw(),
-  new Cgx(),
-  new Cgy(),
-  new Cgz(),
-  new CgA(),
-  new CgB(),
-  new CgC(),
-  new CgD(),
-  new CgE(),
-  new CgF(),
-  new CgG(),
-  new CgH(),
-  new CgI(),
-  new CgJ(),
-  new CgK(),
-  new CgL(),
-  new CgM(),
-  new CgN(),
-  new CgO(),
-  new CgP(),
-  new CgQ(),
-  new CgR(),
-  new CgS(),
-  new CgT(),
-  new CgU(),
-  new CgV(),
-  new CgW(),
-  new CgX(),
-  new CgY(),
-  new CgZ(),
-  new Cha(),
-  new Chb(),
-  new Chc(),
-  new Chd(),
-  new Che(),
-  new Chf(),
-  new Chg(),
-  new Chh(),
-  new Chi(),
-  new Chj(),
-  new Chk(),
-  new Chl(),
-  new Chm(),
-  new Chn(),
-  new Cho(),
-  new Chp(),
-  new Chq(),
-  new Chr(),
-  new Chs(),
-  new Cht(),
-  new Chu(),
-  new Chv(),
-  new Chw(),
-  new Chx(),
-  new Chy(),
-  new Chz(),
-  new ChA(),
-  new ChB(),
-  new ChC(),
-  new ChD(),
-  new ChE(),
-  new ChF(),
-  new ChG(),
-  new ChH(),
-  new ChI(),
-  new ChJ(),
-  new ChK(),
-  new ChL(),
-  new ChM(),
-  new ChN(),
-  new ChO(),
-  new ChP(),
-  new ChQ(),
-  new ChR(),
-  new ChS(),
-  new ChT(),
-  new ChU(),
-  new ChV(),
-  new ChW(),
-  new ChX(),
-  new ChY(),
-  new ChZ(),
-  new Cia(),
-  new Cib(),
-  new Cic(),
-  new Cid(),
-  new Cie(),
-  new Cif(),
-  new Cig(),
-  new Cih(),
-  new Cii(),
-  new Cij(),
-  new Cik(),
-  new Cil(),
-  new Cim(),
-  new Cin(),
-  new Cio(),
-  new Cip(),
-  new Ciq(),
-  new Cir(),
-  new Cis(),
-  new Cit(),
-  new Ciu(),
-  new Civ(),
-  new Ciw(),
-  new Cix(),
-  new Ciy(),
-  new Ciz(),
-  new CiA(),
-  new CiB(),
-  new CiC(),
-  new CiD(),
-  new CiE(),
-  new CiF(),
-  new CiG(),
-  new CiH(),
-  new CiI(),
-  new CiJ(),
-  new CiK(),
-  new CiL(),
-  new CiM(),
-  new CiN(),
-  new CiO(),
-  new CiP(),
-  new CiQ(),
-  new CiR(),
-  new CiS(),
-  new CiT(),
-  new CiU(),
-  new CiV(),
-  new CiW(),
-  new CiX(),
-  new CiY(),
-  new CiZ(),
-  new Cja(),
-  new Cjb(),
-  new Cjc(),
-  new Cjd(),
-  new Cje(),
-  new Cjf(),
-  new Cjg(),
-  new Cjh(),
-  new Cji(),
-  new Cjj(),
-  new Cjk(),
-  new Cjl(),
-  new Cjm(),
-  new Cjn(),
-  new Cjo(),
-  new Cjp(),
-  new Cjq(),
-  new Cjr(),
-  new Cjs(),
-  new Cjt(),
-  new Cju(),
-  new Cjv(),
-  new Cjw(),
-  new Cjx(),
-  new Cjy(),
-  new Cjz(),
-  new CjA(),
-  new CjB(),
-  new CjC(),
-  new CjD(),
-  new CjE(),
-  new CjF(),
-  new CjG(),
-  new CjH(),
-  new CjI(),
-  new CjJ(),
-  new CjK(),
-  new CjL(),
-  new CjM(),
-  new CjN(),
-  new CjO(),
-  new CjP(),
-  new CjQ(),
-  new CjR(),
-  new CjS(),
-  new CjT(),
-  new CjU(),
-  new CjV(),
-  new CjW(),
-  new CjX(),
-  new CjY(),
-  new CjZ(),
-  new Cka(),
-  new Ckb(),
-  new Ckc(),
-  new Ckd(),
-  new Cke(),
-  new Ckf(),
-  new Ckg(),
-  new Ckh(),
-  new Cki(),
-  new Ckj(),
-  new Ckk(),
-  new Ckl(),
-  new Ckm(),
-  new Ckn(),
-  new Cko(),
-  new Ckp(),
-  new Ckq(),
-  new Ckr(),
-  new Cks(),
-  new Ckt(),
-  new Cku(),
-  new Ckv(),
-  new Ckw(),
-  new Ckx(),
-  new Cky(),
-  new Ckz(),
-  new CkA(),
-  new CkB(),
-  new CkC(),
-  new CkD(),
-  new CkE(),
-  new CkF(),
-  new CkG(),
-  new CkH(),
-  new CkI(),
-  new CkJ(),
-  new CkK(),
-  new CkL(),
-  new CkM(),
-  new CkN(),
-  new CkO(),
-  new CkP(),
-  new CkQ(),
-  new CkR(),
-  new CkS(),
-  new CkT(),
-  new CkU(),
-  new CkV(),
-  new CkW(),
-  new CkX(),
-  new CkY(),
-  new CkZ(),
-  new Cla(),
-  new Clb(),
-  new Clc(),
-  new Cld(),
-  new Cle(),
-  new Clf(),
-  new Clg(),
-  new Clh(),
-  new Cli(),
-  new Clj(),
-  new Clk(),
-  new Cll(),
-  new Clm(),
-  new Cln(),
-  new Clo(),
-  new Clp(),
-  new Clq(),
-  new Clr(),
-  new Cls(),
-  new Clt(),
-  new Clu(),
-  new Clv(),
-  new Clw(),
-  new Clx(),
-  new Cly(),
-  new Clz(),
-  new ClA(),
-  new ClB(),
-  new ClC(),
-  new ClD(),
-  new ClE(),
-  new ClF(),
-  new ClG(),
-  new ClH(),
-  new ClI(),
-  new ClJ(),
-  new ClK(),
-  new ClL(),
-  new ClM(),
-  new ClN(),
-  new ClO(),
-  new ClP(),
-  new ClQ(),
-  new ClR(),
-  new ClS(),
-  new ClT(),
-  new ClU(),
-  new ClV(),
-  new ClW(),
-  new ClX(),
-  new ClY(),
-  new ClZ(),
-  new Cma(),
-  new Cmb(),
-  new Cmc(),
-  new Cmd(),
-  new Cme(),
-  new Cmf(),
-  new Cmg(),
-  new Cmh(),
-  new Cmi(),
-  new Cmj(),
-  new Cmk(),
-  new Cml(),
-  new Cmm(),
-  new Cmn(),
-  new Cmo(),
-  new Cmp(),
-  new Cmq(),
-  new Cmr(),
-  new Cms(),
-  new Cmt(),
-  new Cmu(),
-  new Cmv(),
-  new Cmw(),
-  new Cmx(),
-  new Cmy(),
-  new Cmz(),
-  new CmA(),
-  new CmB(),
-  new CmC(),
-  new CmD(),
-  new CmE(),
-  new CmF(),
-  new CmG(),
-  new CmH(),
-  new CmI(),
-  new CmJ(),
-  new CmK(),
-  new CmL(),
-  new CmM(),
-  new CmN(),
-  new CmO(),
-  new CmP(),
-  new CmQ(),
-  new CmR(),
-  new CmS(),
-  new CmT(),
-  new CmU(),
-  new CmV(),
-  new CmW(),
-  new CmX(),
-  new CmY(),
-  new CmZ(),
-  new Cna(),
-  new Cnb(),
-  new Cnc(),
-  new Cnd(),
-  new Cne(),
-  new Cnf(),
-  new Cng(),
-  new Cnh(),
-  new Cni(),
-  new Cnj(),
-  new Cnk(),
-  new Cnl(),
-  new Cnm(),
-  new Cnn(),
-  new Cno(),
-  new Cnp(),
-  new Cnq(),
-  new Cnr(),
-  new Cns(),
-  new Cnt(),
-  new Cnu(),
-  new Cnv(),
-  new Cnw(),
-  new Cnx(),
-  new Cny(),
-  new Cnz(),
-  new CnA(),
-  new CnB(),
-  new CnC(),
-  new CnD(),
-  new CnE(),
-  new CnF(),
-  new CnG(),
-  new CnH(),
-  new CnI(),
-  new CnJ(),
-  new CnK(),
-  new CnL(),
-  new CnM(),
-  new CnN(),
-  new CnO(),
-  new CnP(),
-  new CnQ(),
-  new CnR(),
-  new CnS(),
-  new CnT(),
-  new CnU(),
-  new CnV(),
-  new CnW(),
-  new CnX(),
-  new CnY(),
-  new CnZ(),
-  new Coa(),
-  new Cob(),
-  new Coc(),
-  new Cod(),
-  new Coe(),
-  new Cof(),
-  new Cog(),
-  new Coh(),
-  new Coi(),
-  new Coj(),
-  new Cok(),
-  new Col(),
-  new Com(),
-  new Con(),
-  new Coo(),
-  new Cop(),
-  new Coq(),
-  new Cor(),
-  new Cos(),
-  new Cot(),
-  new Cou(),
-  new Cov(),
-  new Cow(),
-  new Cox(),
-  new Coy(),
-  new Coz(),
-  new CoA(),
-  new CoB(),
-  new CoC(),
-  new CoD(),
-  new CoE(),
-  new CoF(),
-  new CoG(),
-  new CoH(),
-  new CoI(),
-  new CoJ(),
-  new CoK(),
-  new CoL(),
-  new CoM(),
-  new CoN(),
-  new CoO(),
-  new CoP(),
-  new CoQ(),
-  new CoR(),
-  new CoS(),
-  new CoT(),
-  new CoU(),
-  new CoV(),
-  new CoW(),
-  new CoX(),
-  new CoY(),
-  new CoZ(),
-  new Cpa(),
-  new Cpb(),
-  new Cpc(),
-  new Cpd(),
-  new Cpe(),
-  new Cpf(),
-  new Cpg(),
-  new Cph(),
-  new Cpi(),
-  new Cpj(),
-  new Cpk(),
-  new Cpl(),
-  new Cpm(),
-  new Cpn(),
-  new Cpo(),
-  new Cpp(),
-  new Cpq(),
-  new Cpr(),
-  new Cps(),
-  new Cpt(),
-  new Cpu(),
-  new Cpv(),
-  new Cpw(),
-  new Cpx(),
-  new Cpy(),
-  new Cpz(),
-  new CpA(),
-  new CpB(),
-  new CpC(),
-  new CpD(),
-  new CpE(),
-  new CpF(),
-  new CpG(),
-  new CpH(),
-  new CpI(),
-  new CpJ(),
-  new CpK(),
-  new CpL(),
-  new CpM(),
-  new CpN(),
-  new CpO(),
-  new CpP(),
-  new CpQ(),
-  new CpR(),
-  new CpS(),
-  new CpT(),
-  new CpU(),
-  new CpV(),
-  new CpW(),
-  new CpX(),
-  new CpY(),
-  new CpZ(),
-  new Cqa(),
-  new Cqb(),
-  new Cqc(),
-  new Cqd(),
-  new Cqe(),
-  new Cqf(),
-  new Cqg(),
-  new Cqh(),
-  new Cqi(),
-  new Cqj(),
-  new Cqk(),
-  new Cql(),
-  new Cqm(),
-  new Cqn(),
-  new Cqo(),
-  new Cqp(),
-  new Cqq(),
-  new Cqr(),
-  new Cqs(),
-  new Cqt(),
-  new Cqu(),
-  new Cqv(),
-  new Cqw(),
-  new Cqx(),
-  new Cqy(),
-  new Cqz(),
-  new CqA(),
-  new CqB(),
-  new CqC(),
-  new CqD(),
-  new CqE(),
-  new CqF(),
-  new CqG(),
-  new CqH(),
-  new CqI(),
-  new CqJ(),
-  new CqK(),
-  new CqL(),
-  new CqM(),
-  new CqN(),
-  new CqO(),
-  new CqP(),
-  new CqQ(),
-  new CqR(),
-  new CqS(),
-  new CqT(),
-  new CqU(),
-  new CqV(),
-  new CqW(),
-  new CqX(),
-  new CqY(),
-  new CqZ(),
-  new Cra(),
-  new Crb(),
-  new Crc(),
-  new Crd(),
-  new Cre(),
-  new Crf(),
-  new Crg(),
-  new Crh(),
-  new Cri(),
-  new Crj(),
-  new Crk(),
-  new Crl(),
-  new Crm(),
-  new Crn(),
-  new Cro(),
-  new Crp(),
-  new Crq(),
-  new Crr(),
-  new Crs(),
-  new Crt(),
-  new Cru(),
-  new Crv(),
-  new Crw(),
-  new Crx(),
-  new Cry(),
-  new Crz(),
-  new CrA(),
-  new CrB(),
-  new CrC(),
-  new CrD(),
-  new CrE(),
-  new CrF(),
-  new CrG(),
-  new CrH(),
-  new CrI(),
-  new CrJ(),
-  new CrK(),
-  new CrL(),
-  new CrM(),
-  new CrN(),
-  new CrO(),
-  new CrP(),
-  new CrQ(),
-  new CrR(),
-  new CrS(),
-  new CrT(),
-  new CrU(),
-  new CrV(),
-  new CrW(),
-  new CrX(),
-  new CrY(),
-  new CrZ(),
-  new Csa(),
-  new Csb(),
-  new Csc(),
-  new Csd(),
-  new Cse(),
-  new Csf(),
-  new Csg(),
-  new Csh(),
-  new Csi(),
-  new Csj(),
-  new Csk(),
-  new Csl(),
-  new Csm(),
-  new Csn(),
-  new Cso(),
-  new Csp(),
-  new Csq(),
-  new Csr(),
-  new Css(),
-  new Cst(),
-  new Csu(),
-  new Csv(),
-  new Csw(),
-  new Csx(),
-  new Csy(),
-  new Csz(),
-  new CsA(),
-  new CsB(),
-  new CsC(),
-  new CsD(),
-  new CsE(),
-  new CsF(),
-  new CsG(),
-  new CsH(),
-  new CsI(),
-  new CsJ(),
-  new CsK(),
-  new CsL(),
-  new CsM(),
-  new CsN(),
-  new CsO(),
-  new CsP(),
-  new CsQ(),
-  new CsR(),
-  new CsS(),
-  new CsT(),
-  new CsU(),
-  new CsV(),
-  new CsW(),
-  new CsX(),
-  new CsY(),
-  new CsZ(),
-  new Cta(),
-  new Ctb(),
-  new Ctc(),
-  new Ctd(),
-  new Cte(),
-  new Ctf(),
-  new Ctg(),
-  new Cth(),
-  new Cti(),
-  new Ctj(),
-  new Ctk(),
-  new Ctl(),
-  new Ctm(),
-  new Ctn(),
-  new Cto(),
-  new Ctp(),
-  new Ctq(),
-  new Ctr(),
-  new Cts(),
-  new Ctt(),
-  new Ctu(),
-  new Ctv(),
-  new Ctw(),
-  new Ctx(),
-  new Cty(),
-  new Ctz(),
-  new CtA(),
-  new CtB(),
-  new CtC(),
-  new CtD(),
-  new CtE(),
-  new CtF(),
-  new CtG(),
-  new CtH(),
-  new CtI(),
-  new CtJ(),
-  new CtK(),
-  new CtL(),
-  new CtM(),
-  new CtN(),
-  new CtO(),
-  new CtP(),
-  new CtQ(),
-  new CtR(),
-  new CtS(),
-  new CtT(),
-  new CtU(),
-  new CtV(),
-  new CtW(),
-  new CtX(),
-  new CtY(),
-  new CtZ(),
-  new Cua(),
-  new Cub(),
-  new Cuc(),
-  new Cud(),
-  new Cue(),
-  new Cuf(),
-  new Cug(),
-  new Cuh(),
-  new Cui(),
-  new Cuj(),
-  new Cuk(),
-  new Cul(),
-  new Cum(),
-  new Cun(),
-  new Cuo(),
-  new Cup(),
-  new Cuq(),
-  new Cur(),
-  new Cus(),
-  new Cut(),
-  new Cuu(),
-  new Cuv(),
-  new Cuw(),
-  new Cux(),
-  new Cuy(),
-  new Cuz(),
-  new CuA(),
-  new CuB(),
-  new CuC(),
-  new CuD(),
-  new CuE(),
-  new CuF(),
-  new CuG(),
-  new CuH(),
-  new CuI(),
-  new CuJ(),
-  new CuK(),
-  new CuL(),
-  new CuM(),
-  new CuN(),
-  new CuO(),
-  new CuP(),
-  new CuQ(),
-  new CuR(),
-  new CuS(),
-  new CuT(),
-  new CuU(),
-  new CuV(),
-  new CuW(),
-  new CuX(),
-  new CuY(),
-  new CuZ(),
-  new Cva(),
-  new Cvb(),
-  new Cvc(),
-  new Cvd(),
-  new Cve(),
-  new Cvf(),
-  new Cvg(),
-  new Cvh(),
-  new Cvi(),
-  new Cvj(),
-  new Cvk(),
-  new Cvl(),
-  new Cvm(),
-  new Cvn(),
-  new Cvo(),
-  new Cvp(),
-  new Cvq(),
-  new Cvr(),
-  new Cvs(),
-  new Cvt(),
-  new Cvu(),
-  new Cvv(),
-  new Cvw(),
-  new Cvx(),
-  new Cvy(),
-  new Cvz(),
-  new CvA(),
-  new CvB(),
-  new CvC(),
-  new CvD(),
-  new CvE(),
-  new CvF(),
-  new CvG(),
-  new CvH(),
-  new CvI(),
-  new CvJ(),
-  new CvK(),
-  new CvL(),
-  new CvM(),
-  new CvN(),
-  new CvO(),
-  new CvP(),
-  new CvQ(),
-  new CvR(),
-  new CvS(),
-  new CvT(),
-  new CvU(),
-  new CvV(),
-  new CvW(),
-  new CvX(),
-  new CvY(),
-  new CvZ(),
-  new Cwa(),
-  new Cwb(),
-  new Cwc(),
-  new Cwd(),
-  new Cwe(),
-  new Cwf(),
-  new Cwg(),
-  new Cwh(),
-  new Cwi(),
-  new Cwj(),
-  new Cwk(),
-  new Cwl(),
-  new Cwm(),
-  new Cwn(),
-  new Cwo(),
-  new Cwp(),
-  new Cwq(),
-  new Cwr(),
-  new Cws(),
-  new Cwt(),
-  new Cwu(),
-  new Cwv(),
-  new Cww(),
-  new Cwx(),
-  new Cwy(),
-  new Cwz(),
-  new CwA(),
-  new CwB(),
-  new CwC(),
-  new CwD(),
-  new CwE(),
-  new CwF(),
-  new CwG(),
-  new CwH(),
-  new CwI(),
-  new CwJ(),
-  new CwK(),
-  new CwL(),
-  new CwM(),
-  new CwN(),
-  new CwO(),
-  new CwP(),
-  new CwQ(),
-  new CwR(),
-  new CwS(),
-  new CwT(),
-  new CwU(),
-  new CwV(),
-  new CwW(),
-  new CwX(),
-  new CwY(),
-  new CwZ(),
-  new Cxa(),
-  new Cxb(),
-  new Cxc(),
-  new Cxd(),
-  new Cxe(),
-  new Cxf(),
-  new Cxg(),
-  new Cxh(),
-  new Cxi(),
-  new Cxj(),
-  new Cxk(),
-  new Cxl(),
-  new Cxm(),
-  new Cxn(),
-  new Cxo(),
-  new Cxp(),
-  new Cxq(),
-  new Cxr(),
-  new Cxs(),
-  new Cxt(),
-  new Cxu(),
-  new Cxv(),
-  new Cxw(),
-  new Cxx(),
-  new Cxy(),
-  new Cxz(),
-  new CxA(),
-  new CxB(),
-  new CxC(),
-  new CxD(),
-  new CxE(),
-  new CxF(),
-  new CxG(),
-  new CxH(),
-  new CxI(),
-  new CxJ(),
-  new CxK(),
-  new CxL(),
-  new CxM(),
-  new CxN(),
-  new CxO(),
-  new CxP(),
-  new CxQ(),
-  new CxR(),
-  new CxS(),
-  new CxT(),
-  new CxU(),
-  new CxV(),
-  new CxW(),
-  new CxX(),
-  new CxY(),
-  new CxZ(),
-  new Cya(),
-  new Cyb(),
-  new Cyc(),
-  new Cyd(),
-  new Cye(),
-  new Cyf(),
-  new Cyg(),
-  new Cyh(),
-  new Cyi(),
-  new Cyj(),
-  new Cyk(),
-  new Cyl(),
-  new Cym(),
-  new Cyn(),
-  new Cyo(),
-  new Cyp(),
-  new Cyq(),
-  new Cyr(),
-  new Cys(),
-  new Cyt(),
-  new Cyu(),
-  new Cyv(),
-  new Cyw(),
-  new Cyx(),
-  new Cyy(),
-  new Cyz(),
-  new CyA(),
-  new CyB(),
-  new CyC(),
-  new CyD(),
-  new CyE(),
-  new CyF(),
-  new CyG(),
-  new CyH(),
-  new CyI(),
-  new CyJ(),
-  new CyK(),
-  new CyL(),
-  new CyM(),
-  new CyN(),
-  new CyO(),
-  new CyP(),
-  new CyQ(),
-  new CyR(),
-  new CyS(),
-  new CyT(),
-  new CyU(),
-  new CyV(),
-  new CyW(),
-  new CyX(),
-  new CyY(),
-  new CyZ(),
-  new Cza(),
-  new Czb(),
-  new Czc(),
-  new Czd(),
-  new Cze(),
-  new Czf(),
-  new Czg(),
-  new Czh(),
-  new Czi(),
-  new Czj(),
-  new Czk(),
-  new Czl(),
-  new Czm(),
-  new Czn(),
-  new Czo(),
-  new Czp(),
-  new Czq(),
-  new Czr(),
-  new Czs(),
-  new Czt(),
-  new Czu(),
-  new Czv(),
-  new Czw(),
-  new Czx(),
-  new Czy(),
-  new Czz(),
-  new CzA(),
-  new CzB(),
-  new CzC(),
-  new CzD(),
-  new CzE(),
-  new CzF(),
-  new CzG(),
-  new CzH(),
-  new CzI(),
-  new CzJ(),
-  new CzK(),
-  new CzL(),
-  new CzM(),
-  new CzN(),
-  new CzO(),
-  new CzP(),
-  new CzQ(),
-  new CzR(),
-  new CzS(),
-  new CzT(),
-  new CzU(),
-  new CzV(),
-  new CzW(),
-  new CzX(),
-  new CzY(),
-  new CzZ(),
-  new CAa(),
-  new CAb(),
-  new CAc(),
-  new CAd(),
-  new CAe(),
-  new CAf(),
-  new CAg(),
-  new CAh(),
-  new CAi(),
-  new CAj(),
-  new CAk(),
-  new CAl(),
-  new CAm(),
-  new CAn(),
-  new CAo(),
-  new CAp(),
-  new CAq(),
-  new CAr(),
-  new CAs(),
-  new CAt(),
-  new CAu(),
-  new CAv(),
-  new CAw(),
-  new CAx(),
-  new CAy(),
-  new CAz(),
-  new CAA(),
-  new CAB(),
-  new CAC(),
-  new CAD(),
-  new CAE(),
-  new CAF(),
-  new CAG(),
-  new CAH(),
-  new CAI(),
-  new CAJ(),
-  new CAK(),
-  new CAL(),
-  new CAM(),
-  new CAN(),
-  new CAO(),
-  new CAP(),
-  new CAQ(),
-  new CAR(),
-  new CAS(),
-  new CAT(),
-  new CAU(),
-  new CAV(),
-  new CAW(),
-  new CAX(),
-  new CAY(),
-  new CAZ(),
-  new CBa(),
-  new CBb(),
-  new CBc(),
-  new CBd(),
-  new CBe(),
-  new CBf(),
-  new CBg(),
-  new CBh(),
-  new CBi(),
-  new CBj(),
-  new CBk(),
-  new CBl(),
-  new CBm(),
-  new CBn(),
-  new CBo(),
-  new CBp(),
-  new CBq(),
-  new CBr(),
-  new CBs(),
-  new CBt(),
-  new CBu(),
-  new CBv(),
-  new CBw(),
-  new CBx(),
-  new CBy(),
-  new CBz(),
-  new CBA(),
-  new CBB(),
-  new CBC(),
-  new CBD(),
-  new CBE(),
-  new CBF(),
-  new CBG(),
-  new CBH(),
-  new CBI(),
-  new CBJ(),
-  new CBK(),
-  new CBL(),
-  new CBM(),
-  new CBN(),
-  new CBO(),
-  new CBP(),
-  new CBQ(),
-  new CBR(),
-  new CBS(),
-  new CBT(),
-  new CBU(),
-  new CBV(),
-  new CBW(),
-  new CBX(),
-  new CBY(),
-  new CBZ(),
-  new CCa(),
-  new CCb(),
-  new CCc(),
-  new CCd(),
-  new CCe(),
-  new CCf(),
-  new CCg(),
-  new CCh(),
-  new CCi(),
-  new CCj(),
-  new CCk(),
-  new CCl(),
-  new CCm(),
-  new CCn(),
-  new CCo(),
-  new CCp(),
-  new CCq(),
-  new CCr(),
-  new CCs(),
-  new CCt(),
-  new CCu(),
-  new CCv(),
-  new CCw(),
-  new CCx(),
-  new CCy(),
-  new CCz(),
-  new CCA(),
-  new CCB(),
-  new CCC(),
-  new CCD(),
-  new CCE(),
-  new CCF(),
-  new CCG(),
-  new CCH(),
-  new CCI(),
-  new CCJ(),
-  new CCK(),
-  new CCL(),
-  new CCM(),
-  new CCN(),
-  new CCO(),
-  new CCP(),
-  new CCQ(),
-  new CCR(),
-  new CCS(),
-  new CCT(),
-  new CCU(),
-  new CCV(),
-  new CCW(),
-  new CCX(),
-  new CCY(),
-  new CCZ(),
-  new CDa(),
-  new CDb(),
-  new CDc(),
-  new CDd(),
-  new CDe(),
-  new CDf(),
-  new CDg(),
-  new CDh(),
-  new CDi(),
-  new CDj(),
-  new CDk(),
-  new CDl(),
-  new CDm(),
-  new CDn(),
-  new CDo(),
-  new CDp(),
-  new CDq(),
-  new CDr(),
-  new CDs(),
-  new CDt(),
-  new CDu(),
-  new CDv(),
-  new CDw(),
-  new CDx(),
-  new CDy(),
-  new CDz(),
-  new CDA(),
-  new CDB(),
-  new CDC(),
-  new CDD(),
-  new CDE(),
-  new CDF(),
-  new CDG(),
-  new CDH(),
-  new CDI(),
-  new CDJ(),
-  new CDK(),
-  new CDL(),
-  new CDM(),
-  new CDN(),
-  new CDO(),
-  new CDP(),
-  new CDQ(),
-  new CDR(),
-  new CDS(),
-  new CDT(),
-  new CDU(),
-  new CDV(),
-  new CDW(),
-  new CDX(),
-  new CDY(),
-  new CDZ(),
-  new CEa(),
-  new CEb(),
-  new CEc(),
-  new CEd(),
-  new CEe(),
-  new CEf(),
-  new CEg(),
-  new CEh(),
-  new CEi(),
-  new CEj(),
-  new CEk(),
-  new CEl(),
-  new CEm(),
-  new CEn(),
-  new CEo(),
-  new CEp(),
-  new CEq(),
-  new CEr(),
-  new CEs(),
-  new CEt(),
-  new CEu(),
-  new CEv(),
-  new CEw(),
-  new CEx(),
-  new CEy(),
-  new CEz(),
-  new CEA(),
-  new CEB(),
-  new CEC(),
-  new CED(),
-  new CEE(),
-  new CEF(),
-  new CEG(),
-  new CEH(),
-  new CEI(),
-  new CEJ(),
-  new CEK(),
-  new CEL(),
-  new CEM(),
-  new CEN(),
-  new CEO(),
-  new CEP(),
-  new CEQ(),
-  new CER(),
-  new CES(),
-  new CET(),
-  new CEU(),
-  new CEV(),
-  new CEW(),
-  new CEX(),
-  new CEY(),
-  new CEZ(),
-  new CFa(),
-  new CFb(),
-  new CFc(),
-  new CFd(),
-  new CFe(),
-  new CFf(),
-  new CFg(),
-  new CFh(),
-  new CFi(),
-  new CFj(),
-  new CFk(),
-  new CFl(),
-  new CFm(),
-  new CFn(),
-  new CFo(),
-  new CFp(),
-  new CFq(),
-  new CFr(),
-  new CFs(),
-  new CFt(),
-  new CFu(),
-  new CFv(),
-  new CFw(),
-  new CFx(),
-  new CFy(),
-  new CFz(),
-  new CFA(),
-  new CFB(),
-  new CFC(),
-  new CFD(),
-  new CFE(),
-  new CFF(),
-  new CFG(),
-  new CFH(),
-  new CFI(),
-  new CFJ(),
-  new CFK(),
-  new CFL(),
-  new CFM(),
-  new CFN(),
-  new CFO(),
-  new CFP(),
-  new CFQ(),
-  new CFR(),
-  new CFS(),
-  new CFT(),
-  new CFU(),
-  new CFV(),
-  new CFW(),
-  new CFX(),
-  new CFY(),
-  new CFZ(),
-  new CGa(),
-  new CGb(),
-  new CGc(),
-  new CGd(),
-  new CGe(),
-  new CGf(),
-  new CGg(),
-  new CGh(),
-  new CGi(),
-  new CGj(),
-  new CGk(),
-  new CGl(),
-  new CGm(),
-  new CGn(),
-  new CGo(),
-  new CGp(),
-  new CGq(),
-  new CGr(),
-  new CGs(),
-  new CGt(),
-  new CGu(),
-  new CGv(),
-  new CGw(),
-  new CGx(),
-  new CGy(),
-  new CGz(),
-  new CGA(),
-  new CGB(),
-  new CGC(),
-  new CGD(),
-  new CGE(),
-  new CGF(),
-  new CGG(),
-  new CGH(),
-  new CGI(),
-  new CGJ(),
-  new CGK(),
-  new CGL(),
-  new CGM(),
-  new CGN(),
-  new CGO(),
-  new CGP(),
-  new CGQ(),
-  new CGR(),
-  new CGS(),
-  new CGT(),
-  new CGU(),
-  new CGV(),
-  new CGW(),
-  new CGX(),
-  new CGY(),
-  new CGZ(),
-  new CHa(),
-  new CHb(),
-  new CHc(),
-  new CHd(),
-  new CHe(),
-  new CHf(),
-  new CHg(),
-  new CHh(),
-  new CHi(),
-  new CHj(),
-  new CHk(),
-  new CHl(),
-  new CHm(),
-  new CHn(),
-  new CHo(),
-  new CHp(),
-  new CHq(),
-  new CHr(),
-  new CHs(),
-  new CHt(),
-  new CHu(),
-  new CHv(),
-  new CHw(),
-  new CHx(),
-  new CHy(),
-  new CHz(),
-  new CHA(),
-  new CHB(),
-  new CHC(),
-  new CHD(),
-  new CHE(),
-  new CHF(),
-  new CHG(),
-  new CHH(),
-  new CHI(),
-  new CHJ(),
-  new CHK(),
-  new CHL(),
-  new CHM(),
-  new CHN(),
-  new CHO(),
-  new CHP(),
-  new CHQ(),
-  new CHR(),
-  new CHS(),
-  new CHT(),
-  new CHU(),
-  new CHV(),
-  new CHW(),
-  new CHX(),
-  new CHY(),
-  new CHZ(),
-  new CIa(),
-  new CIb(),
-  new CIc(),
-  new CId(),
-  new CIe(),
-  new CIf(),
-  new CIg(),
-  new CIh(),
-  new CIi(),
-  new CIj(),
-  new CIk(),
-  new CIl(),
-  new CIm(),
-  new CIn(),
-  new CIo(),
-  new CIp(),
-  new CIq(),
-  new CIr(),
-  new CIs(),
-  new CIt(),
-  new CIu(),
-  new CIv(),
-  new CIw(),
-  new CIx(),
-  new CIy(),
-  new CIz(),
-  new CIA(),
-  new CIB(),
-  new CIC(),
-  new CID(),
-  new CIE(),
-  new CIF(),
-  new CIG(),
-  new CIH(),
-  new CII(),
-  new CIJ(),
-  new CIK(),
-  new CIL(),
-  new CIM(),
-  new CIN(),
-  new CIO(),
-  new CIP(),
-  new CIQ(),
-  new CIR(),
-  new CIS(),
-  new CIT(),
-  new CIU(),
-  new CIV(),
-  new CIW(),
-  new CIX(),
-  new CIY(),
-  new CIZ(),
-  new CJa(),
-  new CJb(),
-  new CJc(),
-  new CJd(),
-  new CJe(),
-  new CJf(),
-  new CJg(),
-  new CJh(),
-  new CJi(),
-  new CJj(),
-  new CJk(),
-  new CJl(),
-  new CJm(),
-  new CJn(),
-  new CJo(),
-  new CJp(),
-  new CJq(),
-  new CJr(),
-  new CJs(),
-  new CJt(),
-  new CJu(),
-  new CJv(),
-  new CJw(),
-  new CJx(),
-  new CJy(),
-  new CJz(),
-  new CJA(),
-  new CJB(),
-  new CJC(),
-  new CJD(),
-  new CJE(),
-  new CJF(),
-  new CJG(),
-  new CJH(),
-  new CJI(),
-  new CJJ(),
-  new CJK(),
-  new CJL(),
-  new CJM(),
-  new CJN(),
-  new CJO(),
-  new CJP(),
-  new CJQ(),
-  new CJR(),
-  new CJS(),
-  new CJT(),
-  new CJU(),
-  new CJV(),
-  new CJW(),
-  new CJX(),
-  new CJY(),
-  new CJZ(),
-  new CKa(),
-  new CKb(),
-  new CKc(),
-  new CKd(),
-  new CKe(),
-  new CKf(),
-  new CKg(),
-  new CKh(),
-  new CKi(),
-  new CKj(),
-  new CKk(),
-  new CKl(),
-  new CKm(),
-  new CKn(),
-  new CKo(),
-  new CKp(),
-  new CKq(),
-  new CKr(),
-  new CKs(),
-  new CKt(),
-  new CKu(),
-  new CKv(),
-  new CKw(),
-  new CKx(),
-  new CKy(),
-  new CKz(),
-  new CKA(),
-  new CKB(),
-  new CKC(),
-  new CKD(),
-  new CKE(),
-  new CKF(),
-  new CKG(),
-  new CKH(),
-  new CKI(),
-  new CKJ(),
-  new CKK(),
-  new CKL(),
-  new CKM(),
-  new CKN(),
-  new CKO(),
-  new CKP(),
-  new CKQ(),
-  new CKR(),
-  new CKS(),
-  new CKT(),
-  new CKU(),
-  new CKV(),
-  new CKW(),
-  new CKX(),
-  new CKY(),
-  new CKZ(),
-  new CLa(),
-  new CLb(),
-  new CLc(),
-  new CLd(),
-  new CLe(),
-  new CLf(),
-  new CLg(),
-  new CLh(),
-  new CLi(),
-  new CLj(),
-  new CLk(),
-  new CLl(),
-  new CLm(),
-  new CLn(),
-  new CLo(),
-  new CLp(),
-  new CLq(),
-  new CLr(),
-  new CLs(),
-  new CLt(),
-  new CLu(),
-  new CLv(),
-  new CLw(),
-  new CLx(),
-  new CLy(),
-  new CLz(),
-  new CLA(),
-  new CLB(),
-  new CLC(),
-  new CLD(),
-  new CLE(),
-  new CLF(),
-  new CLG(),
-  new CLH(),
-  new CLI(),
-  new CLJ(),
-  new CLK(),
-  new CLL(),
-  new CLM(),
-  new CLN(),
-  new CLO(),
-  new CLP(),
-  new CLQ(),
-  new CLR(),
-  new CLS(),
-  new CLT(),
-  new CLU(),
-  new CLV(),
-  new CLW(),
-  new CLX(),
-  new CLY(),
-  new CLZ(),
-  new CMa(),
-  new CMb(),
-  new CMc(),
-  new CMd(),
-  new CMe(),
-  new CMf(),
-  new CMg(),
-  new CMh(),
-  new CMi(),
-  new CMj(),
-  new CMk(),
-  new CMl(),
-  new CMm(),
-  new CMn(),
-  new CMo(),
-  new CMp(),
-  new CMq(),
-  new CMr(),
-  new CMs(),
-  new CMt(),
-  new CMu(),
-  new CMv(),
-  new CMw(),
-  new CMx(),
-  new CMy(),
-  new CMz(),
-  new CMA(),
-  new CMB(),
-  new CMC(),
-  new CMD(),
-  new CME(),
-  new CMF(),
-  new CMG(),
-  new CMH(),
-  new CMI(),
-  new CMJ(),
-  new CMK(),
-  new CML(),
-  new CMM(),
-  new CMN(),
-  new CMO(),
-  new CMP(),
-  new CMQ(),
-  new CMR(),
-  new CMS(),
-  new CMT(),
-  new CMU(),
-  new CMV(),
-  new CMW(),
-  new CMX(),
-  new CMY(),
-  new CMZ(),
-  new CNa(),
-  new CNb(),
-  new CNc(),
-  new CNd(),
-  new CNe(),
-  new CNf(),
-  new CNg(),
-  new CNh(),
-  new CNi(),
-  new CNj(),
-  new CNk(),
-  new CNl(),
-  new CNm(),
-  new CNn(),
-  new CNo(),
-  new CNp(),
-  new CNq(),
-  new CNr(),
-  new CNs(),
-  new CNt(),
-  new CNu(),
-  new CNv(),
-  new CNw(),
-  new CNx(),
-  new CNy(),
-  new CNz(),
-  new CNA(),
-  new CNB(),
-  new CNC(),
-  new CND(),
-  new CNE(),
-  new CNF(),
-  new CNG(),
-  new CNH(),
-  new CNI(),
-  new CNJ(),
-  new CNK(),
-  new CNL(),
-  new CNM(),
-  new CNN(),
-  new CNO(),
-  new CNP(),
-  new CNQ(),
-  new CNR(),
-  new CNS(),
-  new CNT(),
-  new CNU(),
-  new CNV(),
-  new CNW(),
-  new CNX(),
-  new CNY(),
-  new CNZ(),
-  new COa(),
-  new COb(),
-  new COc(),
-  new COd(),
-  new COe(),
-  new COf(),
-  new COg(),
-  new COh(),
-  new COi(),
-  new COj(),
-  new COk(),
-  new COl(),
-  new COm(),
-  new COn(),
-  new COo(),
-  new COp(),
-  new COq(),
-  new COr(),
-  new COs(),
-  new COt(),
-  new COu(),
-  new COv(),
-  new COw(),
-  new COx(),
-  new COy(),
-  new COz(),
-  new COA(),
-  new COB(),
-  new COC(),
-  new COD(),
-  new COE(),
-  new COF(),
-  new COG(),
-  new COH(),
-  new COI(),
-  new COJ(),
-  new COK(),
-  new COL(),
-  new COM(),
-  new CON(),
-  new COO(),
-  new COP(),
-  new COQ(),
-  new COR(),
-  new COS(),
-  new COT(),
-  new COU(),
-  new COV(),
-  new COW(),
-  new COX(),
-  new COY(),
-  new COZ(),
-  new CPa(),
-  new CPb(),
-  new CPc(),
-  new CPd(),
-  new CPe(),
-  new CPf(),
-  new CPg(),
-  new CPh(),
-  new CPi(),
-  new CPj(),
-  new CPk(),
-  new CPl(),
-  new CPm(),
-  new CPn(),
-  new CPo(),
-  new CPp(),
-  new CPq(),
-  new CPr(),
-  new CPs(),
-  new CPt(),
-  new CPu(),
-  new CPv(),
-  new CPw(),
-  new CPx(),
-  new CPy(),
-  new CPz(),
-  new CPA(),
-  new CPB(),
-  new CPC(),
-  new CPD(),
-  new CPE(),
-  new CPF(),
-  new CPG(),
-  new CPH(),
-  new CPI(),
-  new CPJ(),
-  new CPK(),
-  new CPL(),
-  new CPM(),
-  new CPN(),
-  new CPO(),
-  new CPP(),
-  new CPQ(),
-  new CPR(),
-  new CPS(),
-  new CPT(),
-  new CPU(),
-  new CPV(),
-  new CPW(),
-  new CPX(),
-  new CPY(),
-  new CPZ(),
-  new CQa(),
-  new CQb(),
-  new CQc(),
-  new CQd(),
-  new CQe(),
-  new CQf(),
-  new CQg(),
-  new CQh(),
-  new CQi(),
-  new CQj(),
-  new CQk(),
-  new CQl(),
-  new CQm(),
-  new CQn(),
-  new CQo(),
-  new CQp(),
-  new CQq(),
-  new CQr(),
-  new CQs(),
-  new CQt(),
-  new CQu(),
-  new CQv(),
-  new CQw(),
-  new CQx(),
-  new CQy(),
-  new CQz(),
-  new CQA(),
-  new CQB(),
-  new CQC(),
-  new CQD(),
-  new CQE(),
-  new CQF(),
-  new CQG(),
-  new CQH(),
-  new CQI(),
-  new CQJ(),
-  new CQK(),
-  new CQL(),
-  new CQM(),
-  new CQN(),
-  new CQO(),
-  new CQP(),
-  new CQQ(),
-  new CQR(),
-  new CQS(),
-  new CQT(),
-  new CQU(),
-  new CQV(),
-  new CQW(),
-  new CQX(),
-  new CQY(),
-  new CQZ(),
-  new CRa(),
-  new CRb(),
-  new CRc(),
-  new CRd(),
-  new CRe(),
-  new CRf(),
-  new CRg(),
-  new CRh(),
-  new CRi(),
-  new CRj(),
-  new CRk(),
-  new CRl(),
-  new CRm(),
-  new CRn(),
-  new CRo(),
-  new CRp(),
-  new CRq(),
-  new CRr(),
-  new CRs(),
-  new CRt(),
-  new CRu(),
-  new CRv(),
-  new CRw(),
-  new CRx(),
-  new CRy(),
-  new CRz(),
-  new CRA(),
-  new CRB(),
-  new CRC(),
-  new CRD(),
-  new CRE(),
-  new CRF(),
-  new CRG(),
-  new CRH(),
-  new CRI(),
-  new CRJ(),
-  new CRK(),
-  new CRL(),
-  new CRM(),
-  new CRN(),
-  new CRO(),
-  new CRP(),
-  new CRQ(),
-  new CRR(),
-  new CRS(),
-  new CRT(),
-  new CRU(),
-  new CRV(),
-  new CRW(),
-  new CRX(),
-  new CRY(),
-  new CRZ(),
-  new CSa(),
-  new CSb(),
-  new CSc(),
-  new CSd(),
-  new CSe(),
-  new CSf(),
-  new CSg(),
-  new CSh(),
-  new CSi(),
-  new CSj(),
-  new CSk(),
-  new CSl(),
-  new CSm(),
-  new CSn(),
-  new CSo(),
-  new CSp(),
-  new CSq(),
-  new CSr(),
-  new CSs(),
-  new CSt(),
-  new CSu(),
-  new CSv(),
-  new CSw(),
-  new CSx(),
-  new CSy(),
-  new CSz(),
-  new CSA(),
-  new CSB(),
-  new CSC(),
-  new CSD(),
-  new CSE(),
-  new CSF(),
-  new CSG(),
-  new CSH(),
-  new CSI(),
-  new CSJ(),
-  new CSK(),
-  new CSL(),
-  new CSM(),
-  new CSN(),
-  new CSO(),
-  new CSP(),
-  new CSQ(),
-  new CSR(),
-  new CSS(),
-  new CST(),
-  new CSU(),
-  new CSV(),
-  new CSW(),
-  new CSX(),
-  new CSY(),
-  new CSZ(),
-  new CTa(),
-  new CTb(),
-  new CTc(),
-  new CTd(),
-  new CTe(),
-  new CTf(),
-  new CTg(),
-  new CTh(),
-  new CTi(),
-  new CTj(),
-  new CTk(),
-  new CTl(),
-  new CTm(),
-  new CTn(),
-  new CTo(),
-  new CTp(),
-  new CTq(),
-  new CTr(),
-  new CTs(),
-  new CTt(),
-  new CTu(),
-  new CTv(),
-  new CTw(),
-  new CTx(),
-  new CTy(),
-  new CTz(),
-  new CTA(),
-  new CTB(),
-  new CTC(),
-  new CTD(),
-  new CTE(),
-  new CTF(),
-  new CTG(),
-  new CTH(),
-  new CTI(),
-  new CTJ(),
-  new CTK(),
-  new CTL(),
-  new CTM(),
-  new CTN(),
-  new CTO(),
-  new CTP(),
-  new CTQ(),
-  new CTR(),
-  new CTS(),
-  new CTT(),
-  new CTU(),
-  new CTV(),
-  new CTW(),
-  new CTX(),
-  new CTY(),
-  new CTZ(),
-  new CUa(),
-  new CUb(),
-  new CUc(),
-  new CUd(),
-  new CUe(),
-  new CUf(),
-  new CUg(),
-  new CUh(),
-  new CUi(),
-  new CUj(),
-  new CUk(),
-  new CUl(),
-  new CUm(),
-  new CUn(),
-  new CUo(),
-  new CUp(),
-  new CUq(),
-  new CUr(),
-  new CUs(),
-  new CUt(),
-  new CUu(),
-  new CUv(),
-  new CUw(),
-  new CUx(),
-  new CUy(),
-  new CUz(),
-  new CUA(),
-  new CUB(),
-  new CUC(),
-  new CUD(),
-  new CUE(),
-  new CUF(),
-  new CUG(),
-  new CUH(),
-  new CUI(),
-  new CUJ(),
-  new CUK(),
-  new CUL(),
-  new CUM(),
-  new CUN(),
-  new CUO(),
-  new CUP(),
-  new CUQ(),
-  new CUR(),
-  new CUS(),
-  new CUT(),
-  new CUU(),
-  new CUV(),
-  new CUW(),
-  new CUX(),
-  new CUY(),
-  new CUZ(),
-  new CVa(),
-  new CVb(),
-  new CVc(),
-  new CVd(),
-  new CVe(),
-  new CVf(),
-  new CVg(),
-  new CVh(),
-  new CVi(),
-  new CVj(),
-  new CVk(),
-  new CVl(),
-  new CVm(),
-  new CVn(),
-  new CVo(),
-  new CVp(),
-  new CVq(),
-  new CVr(),
-  new CVs(),
-  new CVt(),
-  new CVu(),
-  new CVv(),
-  new CVw(),
-  new CVx(),
-  new CVy(),
-  new CVz(),
-  new CVA(),
-  new CVB(),
-  new CVC(),
-  new CVD(),
-  new CVE(),
-  new CVF(),
-  new CVG(),
-  new CVH(),
-  new CVI(),
-  new CVJ(),
-  new CVK(),
-  new CVL(),
-  new CVM(),
-  new CVN(),
-  new CVO(),
-  new CVP(),
-  new CVQ(),
-  new CVR(),
-  new CVS(),
-  new CVT(),
-  new CVU(),
-  new CVV(),
-  new CVW(),
-  new CVX(),
-  new CVY(),
-  new CVZ(),
-  new CWa(),
-  new CWb(),
-  new CWc(),
-  new CWd(),
-  new CWe(),
-  new CWf(),
-  new CWg(),
-  new CWh(),
-  new CWi(),
-  new CWj(),
-  new CWk(),
-  new CWl(),
-  new CWm(),
-  new CWn(),
-  new CWo(),
-  new CWp(),
-  new CWq(),
-  new CWr(),
-  new CWs(),
-  new CWt(),
-  new CWu(),
-  new CWv(),
-  new CWw(),
-  new CWx(),
-  new CWy(),
-  new CWz(),
-  new CWA(),
-  new CWB(),
-  new CWC(),
-  new CWD(),
-  new CWE(),
-  new CWF(),
-  new CWG(),
-  new CWH(),
-  new CWI(),
-  new CWJ(),
-  new CWK(),
-  new CWL(),
-  new CWM(),
-  new CWN(),
-  new CWO(),
-  new CWP(),
-  new CWQ(),
-  new CWR(),
-  new CWS(),
-  new CWT(),
-  new CWU(),
-  new CWV(),
-  new CWW(),
-  new CWX(),
-  new CWY(),
-  new CWZ(),
-  new CXa(),
-  new CXb(),
-  new CXc(),
-  new CXd(),
-  new CXe(),
-  new CXf(),
-  new CXg(),
-  new CXh(),
-  new CXi(),
-  new CXj(),
-  new CXk(),
-  new CXl(),
-  new CXm(),
-  new CXn(),
-  new CXo(),
-  new CXp(),
-  new CXq(),
-  new CXr(),
-  new CXs(),
-  new CXt(),
-  new CXu(),
-  new CXv(),
-  new CXw(),
-  new CXx(),
-  new CXy(),
-  new CXz(),
-  new CXA(),
-  new CXB(),
-  new CXC(),
-  new CXD(),
-  new CXE(),
-  new CXF(),
-  new CXG(),
-  new CXH(),
-  new CXI(),
-  new CXJ(),
-  new CXK(),
-  new CXL(),
-  new CXM(),
-  new CXN(),
-  new CXO(),
-  new CXP(),
-  new CXQ(),
-  new CXR(),
-  new CXS(),
-  new CXT(),
-  new CXU(),
-  new CXV(),
-  new CXW(),
-  new CXX(),
-  new CXY(),
-  new CXZ(),
-  new CYa(),
-  new CYb(),
-  new CYc(),
-  new CYd(),
-  new CYe(),
-  new CYf(),
-  new CYg(),
-  new CYh(),
-  new CYi(),
-  new CYj(),
-  new CYk(),
-  new CYl(),
-  new CYm(),
-  new CYn(),
-  new CYo(),
-  new CYp(),
-  new CYq(),
-  new CYr(),
-  new CYs(),
-  new CYt(),
-  new CYu(),
-  new CYv(),
-  new CYw(),
-  new CYx(),
-  new CYy(),
-  new CYz(),
-  new CYA(),
-  new CYB(),
-  new CYC(),
-  new CYD(),
-  new CYE(),
-  new CYF(),
-  new CYG(),
-  new CYH(),
-  new CYI(),
-  new CYJ(),
-  new CYK(),
-  new CYL(),
-  new CYM(),
-  new CYN(),
-  new CYO(),
-  new CYP(),
-  new CYQ(),
-  new CYR(),
-  new CYS(),
-  new CYT(),
-  new CYU(),
-  new CYV(),
-  new CYW(),
-  new CYX(),
-  new CYY(),
-  new CYZ(),
-  new CZa(),
-  new CZb(),
-  new CZc(),
-  new CZd(),
-  new CZe(),
-  new CZf(),
-  new CZg(),
-  new CZh(),
-  new CZi(),
-  new CZj(),
-  new CZk(),
-  new CZl(),
-  new CZm(),
-  new CZn(),
-  new CZo(),
-  new CZp(),
-  new CZq(),
-  new CZr(),
-  new CZs(),
-  new CZt(),
-  new CZu(),
-  new CZv(),
-  new CZw(),
-  new CZx(),
-  new CZy(),
-  new CZz(),
-  new CZA(),
-  new CZB(),
-  new CZC(),
-  new CZD(),
-  new CZE(),
-  new CZF(),
-  new CZG(),
-  new CZH(),
-  new CZI(),
-  new CZJ(),
-  new CZK(),
-  new CZL(),
-  new CZM(),
-  new CZN(),
-  new CZO(),
-  new CZP(),
-  new CZQ(),
-  new CZR(),
-  new CZS(),
-  new CZT(),
-  new CZU(),
-  new CZV(),
-  new CZW(),
-  new CZX(),
-  new CZY(),
-  new CZZ(),
-];
-
-class Caa {}
-
-class Cab {}
-
-class Cac {}
-
-class Cad {}
-
-class Cae {}
-
-class Caf {}
-
-class Cag {}
-
-class Cah {}
-
-class Cai {}
-
-class Caj {}
-
-class Cak {}
-
-class Cal {}
-
-class Cam {}
-
-class Can {}
-
-class Cao {}
-
-class Cap {}
-
-class Caq {}
-
-class Car {}
-
-class Cas {}
-
-class Cat {}
-
-class Cau {}
-
-class Cav {}
-
-class Caw {}
-
-class Cax {}
-
-class Cay {}
-
-class Caz {}
-
-class CaA {}
-
-class CaB {}
-
-class CaC {}
-
-class CaD {}
-
-class CaE {}
-
-class CaF {}
-
-class CaG {}
-
-class CaH {}
-
-class CaI {}
-
-class CaJ {}
-
-class CaK {}
-
-class CaL {}
-
-class CaM {}
-
-class CaN {}
-
-class CaO {}
-
-class CaP {}
-
-class CaQ {}
-
-class CaR {}
-
-class CaS {}
-
-class CaT {}
-
-class CaU {}
-
-class CaV {}
-
-class CaW {}
-
-class CaX {}
-
-class CaY {}
-
-class CaZ {}
-
-class Cba {}
-
-class Cbb {}
-
-class Cbc {}
-
-class Cbd {}
-
-class Cbe {}
-
-class Cbf {}
-
-class Cbg {}
-
-class Cbh {}
-
-class Cbi {}
-
-class Cbj {}
-
-class Cbk {}
-
-class Cbl {}
-
-class Cbm {}
-
-class Cbn {}
-
-class Cbo {}
-
-class Cbp {}
-
-class Cbq {}
-
-class Cbr {}
-
-class Cbs {}
-
-class Cbt {}
-
-class Cbu {}
-
-class Cbv {}
-
-class Cbw {}
-
-class Cbx {}
-
-class Cby {}
-
-class Cbz {}
-
-class CbA {}
-
-class CbB {}
-
-class CbC {}
-
-class CbD {}
-
-class CbE {}
-
-class CbF {}
-
-class CbG {}
-
-class CbH {}
-
-class CbI {}
-
-class CbJ {}
-
-class CbK {}
-
-class CbL {}
-
-class CbM {}
-
-class CbN {}
-
-class CbO {}
-
-class CbP {}
-
-class CbQ {}
-
-class CbR {}
-
-class CbS {}
-
-class CbT {}
-
-class CbU {}
-
-class CbV {}
-
-class CbW {}
-
-class CbX {}
-
-class CbY {}
-
-class CbZ {}
-
-class Cca {}
-
-class Ccb {}
-
-class Ccc {}
-
-class Ccd {}
-
-class Cce {}
-
-class Ccf {}
-
-class Ccg {}
-
-class Cch {}
-
-class Cci {}
-
-class Ccj {}
-
-class Cck {}
-
-class Ccl {}
-
-class Ccm {}
-
-class Ccn {}
-
-class Cco {}
-
-class Ccp {}
-
-class Ccq {}
-
-class Ccr {}
-
-class Ccs {}
-
-class Cct {}
-
-class Ccu {}
-
-class Ccv {}
-
-class Ccw {}
-
-class Ccx {}
-
-class Ccy {}
-
-class Ccz {}
-
-class CcA {}
-
-class CcB {}
-
-class CcC {}
-
-class CcD {}
-
-class CcE {}
-
-class CcF {}
-
-class CcG {}
-
-class CcH {}
-
-class CcI {}
-
-class CcJ {}
-
-class CcK {}
-
-class CcL {}
-
-class CcM {}
-
-class CcN {}
-
-class CcO {}
-
-class CcP {}
-
-class CcQ {}
-
-class CcR {}
-
-class CcS {}
-
-class CcT {}
-
-class CcU {}
-
-class CcV {}
-
-class CcW {}
-
-class CcX {}
-
-class CcY {}
-
-class CcZ {}
-
-class Cda {}
-
-class Cdb {}
-
-class Cdc {}
-
-class Cdd {}
-
-class Cde {}
-
-class Cdf {}
-
-class Cdg {}
-
-class Cdh {}
-
-class Cdi {}
-
-class Cdj {}
-
-class Cdk {}
-
-class Cdl {}
-
-class Cdm {}
-
-class Cdn {}
-
-class Cdo {}
-
-class Cdp {}
-
-class Cdq {}
-
-class Cdr {}
-
-class Cds {}
-
-class Cdt {}
-
-class Cdu {}
-
-class Cdv {}
-
-class Cdw {}
-
-class Cdx {}
-
-class Cdy {}
-
-class Cdz {}
-
-class CdA {}
-
-class CdB {}
-
-class CdC {}
-
-class CdD {}
-
-class CdE {}
-
-class CdF {}
-
-class CdG {}
-
-class CdH {}
-
-class CdI {}
-
-class CdJ {}
-
-class CdK {}
-
-class CdL {}
-
-class CdM {}
-
-class CdN {}
-
-class CdO {}
-
-class CdP {}
-
-class CdQ {}
-
-class CdR {}
-
-class CdS {}
-
-class CdT {}
-
-class CdU {}
-
-class CdV {}
-
-class CdW {}
-
-class CdX {}
-
-class CdY {}
-
-class CdZ {}
-
-class Cea {}
-
-class Ceb {}
-
-class Cec {}
-
-class Ced {}
-
-class Cee {}
-
-class Cef {}
-
-class Ceg {}
-
-class Ceh {}
-
-class Cei {}
-
-class Cej {}
-
-class Cek {}
-
-class Cel {}
-
-class Cem {}
-
-class Cen {}
-
-class Ceo {}
-
-class Cep {}
-
-class Ceq {}
-
-class Cer {}
-
-class Ces {}
-
-class Cet {}
-
-class Ceu {}
-
-class Cev {}
-
-class Cew {}
-
-class Cex {}
-
-class Cey {}
-
-class Cez {}
-
-class CeA {}
-
-class CeB {}
-
-class CeC {}
-
-class CeD {}
-
-class CeE {}
-
-class CeF {}
-
-class CeG {}
-
-class CeH {}
-
-class CeI {}
-
-class CeJ {}
-
-class CeK {}
-
-class CeL {}
-
-class CeM {}
-
-class CeN {}
-
-class CeO {}
-
-class CeP {}
-
-class CeQ {}
-
-class CeR {}
-
-class CeS {}
-
-class CeT {}
-
-class CeU {}
-
-class CeV {}
-
-class CeW {}
-
-class CeX {}
-
-class CeY {}
-
-class CeZ {}
-
-class Cfa {}
-
-class Cfb {}
-
-class Cfc {}
-
-class Cfd {}
-
-class Cfe {}
-
-class Cff {}
-
-class Cfg {}
-
-class Cfh {}
-
-class Cfi {}
-
-class Cfj {}
-
-class Cfk {}
-
-class Cfl {}
-
-class Cfm {}
-
-class Cfn {}
-
-class Cfo {}
-
-class Cfp {}
-
-class Cfq {}
-
-class Cfr {}
-
-class Cfs {}
-
-class Cft {}
-
-class Cfu {}
-
-class Cfv {}
-
-class Cfw {}
-
-class Cfx {}
-
-class Cfy {}
-
-class Cfz {}
-
-class CfA {}
-
-class CfB {}
-
-class CfC {}
-
-class CfD {}
-
-class CfE {}
-
-class CfF {}
-
-class CfG {}
-
-class CfH {}
-
-class CfI {}
-
-class CfJ {}
-
-class CfK {}
-
-class CfL {}
-
-class CfM {}
-
-class CfN {}
-
-class CfO {}
-
-class CfP {}
-
-class CfQ {}
-
-class CfR {}
-
-class CfS {}
-
-class CfT {}
-
-class CfU {}
-
-class CfV {}
-
-class CfW {}
-
-class CfX {}
-
-class CfY {}
-
-class CfZ {}
-
-class Cga {}
-
-class Cgb {}
-
-class Cgc {}
-
-class Cgd {}
-
-class Cge {}
-
-class Cgf {}
-
-class Cgg {}
-
-class Cgh {}
-
-class Cgi {}
-
-class Cgj {}
-
-class Cgk {}
-
-class Cgl {}
-
-class Cgm {}
-
-class Cgn {}
-
-class Cgo {}
-
-class Cgp {}
-
-class Cgq {}
-
-class Cgr {}
-
-class Cgs {}
-
-class Cgt {}
-
-class Cgu {}
-
-class Cgv {}
-
-class Cgw {}
-
-class Cgx {}
-
-class Cgy {}
-
-class Cgz {}
-
-class CgA {}
-
-class CgB {}
-
-class CgC {}
-
-class CgD {}
-
-class CgE {}
-
-class CgF {}
-
-class CgG {}
-
-class CgH {}
-
-class CgI {}
-
-class CgJ {}
-
-class CgK {}
-
-class CgL {}
-
-class CgM {}
-
-class CgN {}
-
-class CgO {}
-
-class CgP {}
-
-class CgQ {}
-
-class CgR {}
-
-class CgS {}
-
-class CgT {}
-
-class CgU {}
-
-class CgV {}
-
-class CgW {}
-
-class CgX {}
-
-class CgY {}
-
-class CgZ {}
-
-class Cha {}
-
-class Chb {}
-
-class Chc {}
-
-class Chd {}
-
-class Che {}
-
-class Chf {}
-
-class Chg {}
-
-class Chh {}
-
-class Chi {}
-
-class Chj {}
-
-class Chk {}
-
-class Chl {}
-
-class Chm {}
-
-class Chn {}
-
-class Cho {}
-
-class Chp {}
-
-class Chq {}
-
-class Chr {}
-
-class Chs {}
-
-class Cht {}
-
-class Chu {}
-
-class Chv {}
-
-class Chw {}
-
-class Chx {}
-
-class Chy {}
-
-class Chz {}
-
-class ChA {}
-
-class ChB {}
-
-class ChC {}
-
-class ChD {}
-
-class ChE {}
-
-class ChF {}
-
-class ChG {}
-
-class ChH {}
-
-class ChI {}
-
-class ChJ {}
-
-class ChK {}
-
-class ChL {}
-
-class ChM {}
-
-class ChN {}
-
-class ChO {}
-
-class ChP {}
-
-class ChQ {}
-
-class ChR {}
-
-class ChS {}
-
-class ChT {}
-
-class ChU {}
-
-class ChV {}
-
-class ChW {}
-
-class ChX {}
-
-class ChY {}
-
-class ChZ {}
-
-class Cia {}
-
-class Cib {}
-
-class Cic {}
-
-class Cid {}
-
-class Cie {}
-
-class Cif {}
-
-class Cig {}
-
-class Cih {}
-
-class Cii {}
-
-class Cij {}
-
-class Cik {}
-
-class Cil {}
-
-class Cim {}
-
-class Cin {}
-
-class Cio {}
-
-class Cip {}
-
-class Ciq {}
-
-class Cir {}
-
-class Cis {}
-
-class Cit {}
-
-class Ciu {}
-
-class Civ {}
-
-class Ciw {}
-
-class Cix {}
-
-class Ciy {}
-
-class Ciz {}
-
-class CiA {}
-
-class CiB {}
-
-class CiC {}
-
-class CiD {}
-
-class CiE {}
-
-class CiF {}
-
-class CiG {}
-
-class CiH {}
-
-class CiI {}
-
-class CiJ {}
-
-class CiK {}
-
-class CiL {}
-
-class CiM {}
-
-class CiN {}
-
-class CiO {}
-
-class CiP {}
-
-class CiQ {}
-
-class CiR {}
-
-class CiS {}
-
-class CiT {}
-
-class CiU {}
-
-class CiV {}
-
-class CiW {}
-
-class CiX {}
-
-class CiY {}
-
-class CiZ {}
-
-class Cja {}
-
-class Cjb {}
-
-class Cjc {}
-
-class Cjd {}
-
-class Cje {}
-
-class Cjf {}
-
-class Cjg {}
-
-class Cjh {}
-
-class Cji {}
-
-class Cjj {}
-
-class Cjk {}
-
-class Cjl {}
-
-class Cjm {}
-
-class Cjn {}
-
-class Cjo {}
-
-class Cjp {}
-
-class Cjq {}
-
-class Cjr {}
-
-class Cjs {}
-
-class Cjt {}
-
-class Cju {}
-
-class Cjv {}
-
-class Cjw {}
-
-class Cjx {}
-
-class Cjy {}
-
-class Cjz {}
-
-class CjA {}
-
-class CjB {}
-
-class CjC {}
-
-class CjD {}
-
-class CjE {}
-
-class CjF {}
-
-class CjG {}
-
-class CjH {}
-
-class CjI {}
-
-class CjJ {}
-
-class CjK {}
-
-class CjL {}
-
-class CjM {}
-
-class CjN {}
-
-class CjO {}
-
-class CjP {}
-
-class CjQ {}
-
-class CjR {}
-
-class CjS {}
-
-class CjT {}
-
-class CjU {}
-
-class CjV {}
-
-class CjW {}
-
-class CjX {}
-
-class CjY {}
-
-class CjZ {}
-
-class Cka {}
-
-class Ckb {}
-
-class Ckc {}
-
-class Ckd {}
-
-class Cke {}
-
-class Ckf {}
-
-class Ckg {}
-
-class Ckh {}
-
-class Cki {}
-
-class Ckj {}
-
-class Ckk {}
-
-class Ckl {}
-
-class Ckm {}
-
-class Ckn {}
-
-class Cko {}
-
-class Ckp {}
-
-class Ckq {}
-
-class Ckr {}
-
-class Cks {}
-
-class Ckt {}
-
-class Cku {}
-
-class Ckv {}
-
-class Ckw {}
-
-class Ckx {}
-
-class Cky {}
-
-class Ckz {}
-
-class CkA {}
-
-class CkB {}
-
-class CkC {}
-
-class CkD {}
-
-class CkE {}
-
-class CkF {}
-
-class CkG {}
-
-class CkH {}
-
-class CkI {}
-
-class CkJ {}
-
-class CkK {}
-
-class CkL {}
-
-class CkM {}
-
-class CkN {}
-
-class CkO {}
-
-class CkP {}
-
-class CkQ {}
-
-class CkR {}
-
-class CkS {}
-
-class CkT {}
-
-class CkU {}
-
-class CkV {}
-
-class CkW {}
-
-class CkX {}
-
-class CkY {}
-
-class CkZ {}
-
-class Cla {}
-
-class Clb {}
-
-class Clc {}
-
-class Cld {}
-
-class Cle {}
-
-class Clf {}
-
-class Clg {}
-
-class Clh {}
-
-class Cli {}
-
-class Clj {}
-
-class Clk {}
-
-class Cll {}
-
-class Clm {}
-
-class Cln {}
-
-class Clo {}
-
-class Clp {}
-
-class Clq {}
-
-class Clr {}
-
-class Cls {}
-
-class Clt {}
-
-class Clu {}
-
-class Clv {}
-
-class Clw {}
-
-class Clx {}
-
-class Cly {}
-
-class Clz {}
-
-class ClA {}
-
-class ClB {}
-
-class ClC {}
-
-class ClD {}
-
-class ClE {}
-
-class ClF {}
-
-class ClG {}
-
-class ClH {}
-
-class ClI {}
-
-class ClJ {}
-
-class ClK {}
-
-class ClL {}
-
-class ClM {}
-
-class ClN {}
-
-class ClO {}
-
-class ClP {}
-
-class ClQ {}
-
-class ClR {}
-
-class ClS {}
-
-class ClT {}
-
-class ClU {}
-
-class ClV {}
-
-class ClW {}
-
-class ClX {}
-
-class ClY {}
-
-class ClZ {}
-
-class Cma {}
-
-class Cmb {}
-
-class Cmc {}
-
-class Cmd {}
-
-class Cme {}
-
-class Cmf {}
-
-class Cmg {}
-
-class Cmh {}
-
-class Cmi {}
-
-class Cmj {}
-
-class Cmk {}
-
-class Cml {}
-
-class Cmm {}
-
-class Cmn {}
-
-class Cmo {}
-
-class Cmp {}
-
-class Cmq {}
-
-class Cmr {}
-
-class Cms {}
-
-class Cmt {}
-
-class Cmu {}
-
-class Cmv {}
-
-class Cmw {}
-
-class Cmx {}
-
-class Cmy {}
-
-class Cmz {}
-
-class CmA {}
-
-class CmB {}
-
-class CmC {}
-
-class CmD {}
-
-class CmE {}
-
-class CmF {}
-
-class CmG {}
-
-class CmH {}
-
-class CmI {}
-
-class CmJ {}
-
-class CmK {}
-
-class CmL {}
-
-class CmM {}
-
-class CmN {}
-
-class CmO {}
-
-class CmP {}
-
-class CmQ {}
-
-class CmR {}
-
-class CmS {}
-
-class CmT {}
-
-class CmU {}
-
-class CmV {}
-
-class CmW {}
-
-class CmX {}
-
-class CmY {}
-
-class CmZ {}
-
-class Cna {}
-
-class Cnb {}
-
-class Cnc {}
-
-class Cnd {}
-
-class Cne {}
-
-class Cnf {}
-
-class Cng {}
-
-class Cnh {}
-
-class Cni {}
-
-class Cnj {}
-
-class Cnk {}
-
-class Cnl {}
-
-class Cnm {}
-
-class Cnn {}
-
-class Cno {}
-
-class Cnp {}
-
-class Cnq {}
-
-class Cnr {}
-
-class Cns {}
-
-class Cnt {}
-
-class Cnu {}
-
-class Cnv {}
-
-class Cnw {}
-
-class Cnx {}
-
-class Cny {}
-
-class Cnz {}
-
-class CnA {}
-
-class CnB {}
-
-class CnC {}
-
-class CnD {}
-
-class CnE {}
-
-class CnF {}
-
-class CnG {}
-
-class CnH {}
-
-class CnI {}
-
-class CnJ {}
-
-class CnK {}
-
-class CnL {}
-
-class CnM {}
-
-class CnN {}
-
-class CnO {}
-
-class CnP {}
-
-class CnQ {}
-
-class CnR {}
-
-class CnS {}
-
-class CnT {}
-
-class CnU {}
-
-class CnV {}
-
-class CnW {}
-
-class CnX {}
-
-class CnY {}
-
-class CnZ {}
-
-class Coa {}
-
-class Cob {}
-
-class Coc {}
-
-class Cod {}
-
-class Coe {}
-
-class Cof {}
-
-class Cog {}
-
-class Coh {}
-
-class Coi {}
-
-class Coj {}
-
-class Cok {}
-
-class Col {}
-
-class Com {}
-
-class Con {}
-
-class Coo {}
-
-class Cop {}
-
-class Coq {}
-
-class Cor {}
-
-class Cos {}
-
-class Cot {}
-
-class Cou {}
-
-class Cov {}
-
-class Cow {}
-
-class Cox {}
-
-class Coy {}
-
-class Coz {}
-
-class CoA {}
-
-class CoB {}
-
-class CoC {}
-
-class CoD {}
-
-class CoE {}
-
-class CoF {}
-
-class CoG {}
-
-class CoH {}
-
-class CoI {}
-
-class CoJ {}
-
-class CoK {}
-
-class CoL {}
-
-class CoM {}
-
-class CoN {}
-
-class CoO {}
-
-class CoP {}
-
-class CoQ {}
-
-class CoR {}
-
-class CoS {}
-
-class CoT {}
-
-class CoU {}
-
-class CoV {}
-
-class CoW {}
-
-class CoX {}
-
-class CoY {}
-
-class CoZ {}
-
-class Cpa {}
-
-class Cpb {}
-
-class Cpc {}
-
-class Cpd {}
-
-class Cpe {}
-
-class Cpf {}
-
-class Cpg {}
-
-class Cph {}
-
-class Cpi {}
-
-class Cpj {}
-
-class Cpk {}
-
-class Cpl {}
-
-class Cpm {}
-
-class Cpn {}
-
-class Cpo {}
-
-class Cpp {}
-
-class Cpq {}
-
-class Cpr {}
-
-class Cps {}
-
-class Cpt {}
-
-class Cpu {}
-
-class Cpv {}
-
-class Cpw {}
-
-class Cpx {}
-
-class Cpy {}
-
-class Cpz {}
-
-class CpA {}
-
-class CpB {}
-
-class CpC {}
-
-class CpD {}
-
-class CpE {}
-
-class CpF {}
-
-class CpG {}
-
-class CpH {}
-
-class CpI {}
-
-class CpJ {}
-
-class CpK {}
-
-class CpL {}
-
-class CpM {}
-
-class CpN {}
-
-class CpO {}
-
-class CpP {}
-
-class CpQ {}
-
-class CpR {}
-
-class CpS {}
-
-class CpT {}
-
-class CpU {}
-
-class CpV {}
-
-class CpW {}
-
-class CpX {}
-
-class CpY {}
-
-class CpZ {}
-
-class Cqa {}
-
-class Cqb {}
-
-class Cqc {}
-
-class Cqd {}
-
-class Cqe {}
-
-class Cqf {}
-
-class Cqg {}
-
-class Cqh {}
-
-class Cqi {}
-
-class Cqj {}
-
-class Cqk {}
-
-class Cql {}
-
-class Cqm {}
-
-class Cqn {}
-
-class Cqo {}
-
-class Cqp {}
-
-class Cqq {}
-
-class Cqr {}
-
-class Cqs {}
-
-class Cqt {}
-
-class Cqu {}
-
-class Cqv {}
-
-class Cqw {}
-
-class Cqx {}
-
-class Cqy {}
-
-class Cqz {}
-
-class CqA {}
-
-class CqB {}
-
-class CqC {}
-
-class CqD {}
-
-class CqE {}
-
-class CqF {}
-
-class CqG {}
-
-class CqH {}
-
-class CqI {}
-
-class CqJ {}
-
-class CqK {}
-
-class CqL {}
-
-class CqM {}
-
-class CqN {}
-
-class CqO {}
-
-class CqP {}
-
-class CqQ {}
-
-class CqR {}
-
-class CqS {}
-
-class CqT {}
-
-class CqU {}
-
-class CqV {}
-
-class CqW {}
-
-class CqX {}
-
-class CqY {}
-
-class CqZ {}
-
-class Cra {}
-
-class Crb {}
-
-class Crc {}
-
-class Crd {}
-
-class Cre {}
-
-class Crf {}
-
-class Crg {}
-
-class Crh {}
-
-class Cri {}
-
-class Crj {}
-
-class Crk {}
-
-class Crl {}
-
-class Crm {}
-
-class Crn {}
-
-class Cro {}
-
-class Crp {}
-
-class Crq {}
-
-class Crr {}
-
-class Crs {}
-
-class Crt {}
-
-class Cru {}
-
-class Crv {}
-
-class Crw {}
-
-class Crx {}
-
-class Cry {}
-
-class Crz {}
-
-class CrA {}
-
-class CrB {}
-
-class CrC {}
-
-class CrD {}
-
-class CrE {}
-
-class CrF {}
-
-class CrG {}
-
-class CrH {}
-
-class CrI {}
-
-class CrJ {}
-
-class CrK {}
-
-class CrL {}
-
-class CrM {}
-
-class CrN {}
-
-class CrO {}
-
-class CrP {}
-
-class CrQ {}
-
-class CrR {}
-
-class CrS {}
-
-class CrT {}
-
-class CrU {}
-
-class CrV {}
-
-class CrW {}
-
-class CrX {}
-
-class CrY {}
-
-class CrZ {}
-
-class Csa {}
-
-class Csb {}
-
-class Csc {}
-
-class Csd {}
-
-class Cse {}
-
-class Csf {}
-
-class Csg {}
-
-class Csh {}
-
-class Csi {}
-
-class Csj {}
-
-class Csk {}
-
-class Csl {}
-
-class Csm {}
-
-class Csn {}
-
-class Cso {}
-
-class Csp {}
-
-class Csq {}
-
-class Csr {}
-
-class Css {}
-
-class Cst {}
-
-class Csu {}
-
-class Csv {}
-
-class Csw {}
-
-class Csx {}
-
-class Csy {}
-
-class Csz {}
-
-class CsA {}
-
-class CsB {}
-
-class CsC {}
-
-class CsD {}
-
-class CsE {}
-
-class CsF {}
-
-class CsG {}
-
-class CsH {}
-
-class CsI {}
-
-class CsJ {}
-
-class CsK {}
-
-class CsL {}
-
-class CsM {}
-
-class CsN {}
-
-class CsO {}
-
-class CsP {}
-
-class CsQ {}
-
-class CsR {}
-
-class CsS {}
-
-class CsT {}
-
-class CsU {}
-
-class CsV {}
-
-class CsW {}
-
-class CsX {}
-
-class CsY {}
-
-class CsZ {}
-
-class Cta {}
-
-class Ctb {}
-
-class Ctc {}
-
-class Ctd {}
-
-class Cte {}
-
-class Ctf {}
-
-class Ctg {}
-
-class Cth {}
-
-class Cti {}
-
-class Ctj {}
-
-class Ctk {}
-
-class Ctl {}
-
-class Ctm {}
-
-class Ctn {}
-
-class Cto {}
-
-class Ctp {}
-
-class Ctq {}
-
-class Ctr {}
-
-class Cts {}
-
-class Ctt {}
-
-class Ctu {}
-
-class Ctv {}
-
-class Ctw {}
-
-class Ctx {}
-
-class Cty {}
-
-class Ctz {}
-
-class CtA {}
-
-class CtB {}
-
-class CtC {}
-
-class CtD {}
-
-class CtE {}
-
-class CtF {}
-
-class CtG {}
-
-class CtH {}
-
-class CtI {}
-
-class CtJ {}
-
-class CtK {}
-
-class CtL {}
-
-class CtM {}
-
-class CtN {}
-
-class CtO {}
-
-class CtP {}
-
-class CtQ {}
-
-class CtR {}
-
-class CtS {}
-
-class CtT {}
-
-class CtU {}
-
-class CtV {}
-
-class CtW {}
-
-class CtX {}
-
-class CtY {}
-
-class CtZ {}
-
-class Cua {}
-
-class Cub {}
-
-class Cuc {}
-
-class Cud {}
-
-class Cue {}
-
-class Cuf {}
-
-class Cug {}
-
-class Cuh {}
-
-class Cui {}
-
-class Cuj {}
-
-class Cuk {}
-
-class Cul {}
-
-class Cum {}
-
-class Cun {}
-
-class Cuo {}
-
-class Cup {}
-
-class Cuq {}
-
-class Cur {}
-
-class Cus {}
-
-class Cut {}
-
-class Cuu {}
-
-class Cuv {}
-
-class Cuw {}
-
-class Cux {}
-
-class Cuy {}
-
-class Cuz {}
-
-class CuA {}
-
-class CuB {}
-
-class CuC {}
-
-class CuD {}
-
-class CuE {}
-
-class CuF {}
-
-class CuG {}
-
-class CuH {}
-
-class CuI {}
-
-class CuJ {}
-
-class CuK {}
-
-class CuL {}
-
-class CuM {}
-
-class CuN {}
-
-class CuO {}
-
-class CuP {}
-
-class CuQ {}
-
-class CuR {}
-
-class CuS {}
-
-class CuT {}
-
-class CuU {}
-
-class CuV {}
-
-class CuW {}
-
-class CuX {}
-
-class CuY {}
-
-class CuZ {}
-
-class Cva {}
-
-class Cvb {}
-
-class Cvc {}
-
-class Cvd {}
-
-class Cve {}
-
-class Cvf {}
-
-class Cvg {}
-
-class Cvh {}
-
-class Cvi {}
-
-class Cvj {}
-
-class Cvk {}
-
-class Cvl {}
-
-class Cvm {}
-
-class Cvn {}
-
-class Cvo {}
-
-class Cvp {}
-
-class Cvq {}
-
-class Cvr {}
-
-class Cvs {}
-
-class Cvt {}
-
-class Cvu {}
-
-class Cvv {}
-
-class Cvw {}
-
-class Cvx {}
-
-class Cvy {}
-
-class Cvz {}
-
-class CvA {}
-
-class CvB {}
-
-class CvC {}
-
-class CvD {}
-
-class CvE {}
-
-class CvF {}
-
-class CvG {}
-
-class CvH {}
-
-class CvI {}
-
-class CvJ {}
-
-class CvK {}
-
-class CvL {}
-
-class CvM {}
-
-class CvN {}
-
-class CvO {}
-
-class CvP {}
-
-class CvQ {}
-
-class CvR {}
-
-class CvS {}
-
-class CvT {}
-
-class CvU {}
-
-class CvV {}
-
-class CvW {}
-
-class CvX {}
-
-class CvY {}
-
-class CvZ {}
-
-class Cwa {}
-
-class Cwb {}
-
-class Cwc {}
-
-class Cwd {}
-
-class Cwe {}
-
-class Cwf {}
-
-class Cwg {}
-
-class Cwh {}
-
-class Cwi {}
-
-class Cwj {}
-
-class Cwk {}
-
-class Cwl {}
-
-class Cwm {}
-
-class Cwn {}
-
-class Cwo {}
-
-class Cwp {}
-
-class Cwq {}
-
-class Cwr {}
-
-class Cws {}
-
-class Cwt {}
-
-class Cwu {}
-
-class Cwv {}
-
-class Cww {}
-
-class Cwx {}
-
-class Cwy {}
-
-class Cwz {}
-
-class CwA {}
-
-class CwB {}
-
-class CwC {}
-
-class CwD {}
-
-class CwE {}
-
-class CwF {}
-
-class CwG {}
-
-class CwH {}
-
-class CwI {}
-
-class CwJ {}
-
-class CwK {}
-
-class CwL {}
-
-class CwM {}
-
-class CwN {}
-
-class CwO {}
-
-class CwP {}
-
-class CwQ {}
-
-class CwR {}
-
-class CwS {}
-
-class CwT {}
-
-class CwU {}
-
-class CwV {}
-
-class CwW {}
-
-class CwX {}
-
-class CwY {}
-
-class CwZ {}
-
-class Cxa {}
-
-class Cxb {}
-
-class Cxc {}
-
-class Cxd {}
-
-class Cxe {}
-
-class Cxf {}
-
-class Cxg {}
-
-class Cxh {}
-
-class Cxi {}
-
-class Cxj {}
-
-class Cxk {}
-
-class Cxl {}
-
-class Cxm {}
-
-class Cxn {}
-
-class Cxo {}
-
-class Cxp {}
-
-class Cxq {}
-
-class Cxr {}
-
-class Cxs {}
-
-class Cxt {}
-
-class Cxu {}
-
-class Cxv {}
-
-class Cxw {}
-
-class Cxx {}
-
-class Cxy {}
-
-class Cxz {}
-
-class CxA {}
-
-class CxB {}
-
-class CxC {}
-
-class CxD {}
-
-class CxE {}
-
-class CxF {}
-
-class CxG {}
-
-class CxH {}
-
-class CxI {}
-
-class CxJ {}
-
-class CxK {}
-
-class CxL {}
-
-class CxM {}
-
-class CxN {}
-
-class CxO {}
-
-class CxP {}
-
-class CxQ {}
-
-class CxR {}
-
-class CxS {}
-
-class CxT {}
-
-class CxU {}
-
-class CxV {}
-
-class CxW {}
-
-class CxX {}
-
-class CxY {}
-
-class CxZ {}
-
-class Cya {}
-
-class Cyb {}
-
-class Cyc {}
-
-class Cyd {}
-
-class Cye {}
-
-class Cyf {}
-
-class Cyg {}
-
-class Cyh {}
-
-class Cyi {}
-
-class Cyj {}
-
-class Cyk {}
-
-class Cyl {}
-
-class Cym {}
-
-class Cyn {}
-
-class Cyo {}
-
-class Cyp {}
-
-class Cyq {}
-
-class Cyr {}
-
-class Cys {}
-
-class Cyt {}
-
-class Cyu {}
-
-class Cyv {}
-
-class Cyw {}
-
-class Cyx {}
-
-class Cyy {}
-
-class Cyz {}
-
-class CyA {}
-
-class CyB {}
-
-class CyC {}
-
-class CyD {}
-
-class CyE {}
-
-class CyF {}
-
-class CyG {}
-
-class CyH {}
-
-class CyI {}
-
-class CyJ {}
-
-class CyK {}
-
-class CyL {}
-
-class CyM {}
-
-class CyN {}
-
-class CyO {}
-
-class CyP {}
-
-class CyQ {}
-
-class CyR {}
-
-class CyS {}
-
-class CyT {}
-
-class CyU {}
-
-class CyV {}
-
-class CyW {}
-
-class CyX {}
-
-class CyY {}
-
-class CyZ {}
-
-class Cza {}
-
-class Czb {}
-
-class Czc {}
-
-class Czd {}
-
-class Cze {}
-
-class Czf {}
-
-class Czg {}
-
-class Czh {}
-
-class Czi {}
-
-class Czj {}
-
-class Czk {}
-
-class Czl {}
-
-class Czm {}
-
-class Czn {}
-
-class Czo {}
-
-class Czp {}
-
-class Czq {}
-
-class Czr {}
-
-class Czs {}
-
-class Czt {}
-
-class Czu {}
-
-class Czv {}
-
-class Czw {}
-
-class Czx {}
-
-class Czy {}
-
-class Czz {}
-
-class CzA {}
-
-class CzB {}
-
-class CzC {}
-
-class CzD {}
-
-class CzE {}
-
-class CzF {}
-
-class CzG {}
-
-class CzH {}
-
-class CzI {}
-
-class CzJ {}
-
-class CzK {}
-
-class CzL {}
-
-class CzM {}
-
-class CzN {}
-
-class CzO {}
-
-class CzP {}
-
-class CzQ {}
-
-class CzR {}
-
-class CzS {}
-
-class CzT {}
-
-class CzU {}
-
-class CzV {}
-
-class CzW {}
-
-class CzX {}
-
-class CzY {}
-
-class CzZ {}
-
-class CAa {}
-
-class CAb {}
-
-class CAc {}
-
-class CAd {}
-
-class CAe {}
-
-class CAf {}
-
-class CAg {}
-
-class CAh {}
-
-class CAi {}
-
-class CAj {}
-
-class CAk {}
-
-class CAl {}
-
-class CAm {}
-
-class CAn {}
-
-class CAo {}
-
-class CAp {}
-
-class CAq {}
-
-class CAr {}
-
-class CAs {}
-
-class CAt {}
-
-class CAu {}
-
-class CAv {}
-
-class CAw {}
-
-class CAx {}
-
-class CAy {}
-
-class CAz {}
-
-class CAA {}
-
-class CAB {}
-
-class CAC {}
-
-class CAD {}
-
-class CAE {}
-
-class CAF {}
-
-class CAG {}
-
-class CAH {}
-
-class CAI {}
-
-class CAJ {}
-
-class CAK {}
-
-class CAL {}
-
-class CAM {}
-
-class CAN {}
-
-class CAO {}
-
-class CAP {}
-
-class CAQ {}
-
-class CAR {}
-
-class CAS {}
-
-class CAT {}
-
-class CAU {}
-
-class CAV {}
-
-class CAW {}
-
-class CAX {}
-
-class CAY {}
-
-class CAZ {}
-
-class CBa {}
-
-class CBb {}
-
-class CBc {}
-
-class CBd {}
-
-class CBe {}
-
-class CBf {}
-
-class CBg {}
-
-class CBh {}
-
-class CBi {}
-
-class CBj {}
-
-class CBk {}
-
-class CBl {}
-
-class CBm {}
-
-class CBn {}
-
-class CBo {}
-
-class CBp {}
-
-class CBq {}
-
-class CBr {}
-
-class CBs {}
-
-class CBt {}
-
-class CBu {}
-
-class CBv {}
-
-class CBw {}
-
-class CBx {}
-
-class CBy {}
-
-class CBz {}
-
-class CBA {}
-
-class CBB {}
-
-class CBC {}
-
-class CBD {}
-
-class CBE {}
-
-class CBF {}
-
-class CBG {}
-
-class CBH {}
-
-class CBI {}
-
-class CBJ {}
-
-class CBK {}
-
-class CBL {}
-
-class CBM {}
-
-class CBN {}
-
-class CBO {}
-
-class CBP {}
-
-class CBQ {}
-
-class CBR {}
-
-class CBS {}
-
-class CBT {}
-
-class CBU {}
-
-class CBV {}
-
-class CBW {}
-
-class CBX {}
-
-class CBY {}
-
-class CBZ {}
-
-class CCa {}
-
-class CCb {}
-
-class CCc {}
-
-class CCd {}
-
-class CCe {}
-
-class CCf {}
-
-class CCg {}
-
-class CCh {}
-
-class CCi {}
-
-class CCj {}
-
-class CCk {}
-
-class CCl {}
-
-class CCm {}
-
-class CCn {}
-
-class CCo {}
-
-class CCp {}
-
-class CCq {}
-
-class CCr {}
-
-class CCs {}
-
-class CCt {}
-
-class CCu {}
-
-class CCv {}
-
-class CCw {}
-
-class CCx {}
-
-class CCy {}
-
-class CCz {}
-
-class CCA {}
-
-class CCB {}
-
-class CCC {}
-
-class CCD {}
-
-class CCE {}
-
-class CCF {}
-
-class CCG {}
-
-class CCH {}
-
-class CCI {}
-
-class CCJ {}
-
-class CCK {}
-
-class CCL {}
-
-class CCM {}
-
-class CCN {}
-
-class CCO {}
-
-class CCP {}
-
-class CCQ {}
-
-class CCR {}
-
-class CCS {}
-
-class CCT {}
-
-class CCU {}
-
-class CCV {}
-
-class CCW {}
-
-class CCX {}
-
-class CCY {}
-
-class CCZ {}
-
-class CDa {}
-
-class CDb {}
-
-class CDc {}
-
-class CDd {}
-
-class CDe {}
-
-class CDf {}
-
-class CDg {}
-
-class CDh {}
-
-class CDi {}
-
-class CDj {}
-
-class CDk {}
-
-class CDl {}
-
-class CDm {}
-
-class CDn {}
-
-class CDo {}
-
-class CDp {}
-
-class CDq {}
-
-class CDr {}
-
-class CDs {}
-
-class CDt {}
-
-class CDu {}
-
-class CDv {}
-
-class CDw {}
-
-class CDx {}
-
-class CDy {}
-
-class CDz {}
-
-class CDA {}
-
-class CDB {}
-
-class CDC {}
-
-class CDD {}
-
-class CDE {}
-
-class CDF {}
-
-class CDG {}
-
-class CDH {}
-
-class CDI {}
-
-class CDJ {}
-
-class CDK {}
-
-class CDL {}
-
-class CDM {}
-
-class CDN {}
-
-class CDO {}
-
-class CDP {}
-
-class CDQ {}
-
-class CDR {}
-
-class CDS {}
-
-class CDT {}
-
-class CDU {}
-
-class CDV {}
-
-class CDW {}
-
-class CDX {}
-
-class CDY {}
-
-class CDZ {}
-
-class CEa {}
-
-class CEb {}
-
-class CEc {}
-
-class CEd {}
-
-class CEe {}
-
-class CEf {}
-
-class CEg {}
-
-class CEh {}
-
-class CEi {}
-
-class CEj {}
-
-class CEk {}
-
-class CEl {}
-
-class CEm {}
-
-class CEn {}
-
-class CEo {}
-
-class CEp {}
-
-class CEq {}
-
-class CEr {}
-
-class CEs {}
-
-class CEt {}
-
-class CEu {}
-
-class CEv {}
-
-class CEw {}
-
-class CEx {}
-
-class CEy {}
-
-class CEz {}
-
-class CEA {}
-
-class CEB {}
-
-class CEC {}
-
-class CED {}
-
-class CEE {}
-
-class CEF {}
-
-class CEG {}
-
-class CEH {}
-
-class CEI {}
-
-class CEJ {}
-
-class CEK {}
-
-class CEL {}
-
-class CEM {}
-
-class CEN {}
-
-class CEO {}
-
-class CEP {}
-
-class CEQ {}
-
-class CER {}
-
-class CES {}
-
-class CET {}
-
-class CEU {}
-
-class CEV {}
-
-class CEW {}
-
-class CEX {}
-
-class CEY {}
-
-class CEZ {}
-
-class CFa {}
-
-class CFb {}
-
-class CFc {}
-
-class CFd {}
-
-class CFe {}
-
-class CFf {}
-
-class CFg {}
-
-class CFh {}
-
-class CFi {}
-
-class CFj {}
-
-class CFk {}
-
-class CFl {}
-
-class CFm {}
-
-class CFn {}
-
-class CFo {}
-
-class CFp {}
-
-class CFq {}
-
-class CFr {}
-
-class CFs {}
-
-class CFt {}
-
-class CFu {}
-
-class CFv {}
-
-class CFw {}
-
-class CFx {}
-
-class CFy {}
-
-class CFz {}
-
-class CFA {}
-
-class CFB {}
-
-class CFC {}
-
-class CFD {}
-
-class CFE {}
-
-class CFF {}
-
-class CFG {}
-
-class CFH {}
-
-class CFI {}
-
-class CFJ {}
-
-class CFK {}
-
-class CFL {}
-
-class CFM {}
-
-class CFN {}
-
-class CFO {}
-
-class CFP {}
-
-class CFQ {}
-
-class CFR {}
-
-class CFS {}
-
-class CFT {}
-
-class CFU {}
-
-class CFV {}
-
-class CFW {}
-
-class CFX {}
-
-class CFY {}
-
-class CFZ {}
-
-class CGa {}
-
-class CGb {}
-
-class CGc {}
-
-class CGd {}
-
-class CGe {}
-
-class CGf {}
-
-class CGg {}
-
-class CGh {}
-
-class CGi {}
-
-class CGj {}
-
-class CGk {}
-
-class CGl {}
-
-class CGm {}
-
-class CGn {}
-
-class CGo {}
-
-class CGp {}
-
-class CGq {}
-
-class CGr {}
-
-class CGs {}
-
-class CGt {}
-
-class CGu {}
-
-class CGv {}
-
-class CGw {}
-
-class CGx {}
-
-class CGy {}
-
-class CGz {}
-
-class CGA {}
-
-class CGB {}
-
-class CGC {}
-
-class CGD {}
-
-class CGE {}
-
-class CGF {}
-
-class CGG {}
-
-class CGH {}
-
-class CGI {}
-
-class CGJ {}
-
-class CGK {}
-
-class CGL {}
-
-class CGM {}
-
-class CGN {}
-
-class CGO {}
-
-class CGP {}
-
-class CGQ {}
-
-class CGR {}
-
-class CGS {}
-
-class CGT {}
-
-class CGU {}
-
-class CGV {}
-
-class CGW {}
-
-class CGX {}
-
-class CGY {}
-
-class CGZ {}
-
-class CHa {}
-
-class CHb {}
-
-class CHc {}
-
-class CHd {}
-
-class CHe {}
-
-class CHf {}
-
-class CHg {}
-
-class CHh {}
-
-class CHi {}
-
-class CHj {}
-
-class CHk {}
-
-class CHl {}
-
-class CHm {}
-
-class CHn {}
-
-class CHo {}
-
-class CHp {}
-
-class CHq {}
-
-class CHr {}
-
-class CHs {}
-
-class CHt {}
-
-class CHu {}
-
-class CHv {}
-
-class CHw {}
-
-class CHx {}
-
-class CHy {}
-
-class CHz {}
-
-class CHA {}
-
-class CHB {}
-
-class CHC {}
-
-class CHD {}
-
-class CHE {}
-
-class CHF {}
-
-class CHG {}
-
-class CHH {}
-
-class CHI {}
-
-class CHJ {}
-
-class CHK {}
-
-class CHL {}
-
-class CHM {}
-
-class CHN {}
-
-class CHO {}
-
-class CHP {}
-
-class CHQ {}
-
-class CHR {}
-
-class CHS {}
-
-class CHT {}
-
-class CHU {}
-
-class CHV {}
-
-class CHW {}
-
-class CHX {}
-
-class CHY {}
-
-class CHZ {}
-
-class CIa {}
-
-class CIb {}
-
-class CIc {}
-
-class CId {}
-
-class CIe {}
-
-class CIf {}
-
-class CIg {}
-
-class CIh {}
-
-class CIi {}
-
-class CIj {}
-
-class CIk {}
-
-class CIl {}
-
-class CIm {}
-
-class CIn {}
-
-class CIo {}
-
-class CIp {}
-
-class CIq {}
-
-class CIr {}
-
-class CIs {}
-
-class CIt {}
-
-class CIu {}
-
-class CIv {}
-
-class CIw {}
-
-class CIx {}
-
-class CIy {}
-
-class CIz {}
-
-class CIA {}
-
-class CIB {}
-
-class CIC {}
-
-class CID {}
-
-class CIE {}
-
-class CIF {}
-
-class CIG {}
-
-class CIH {}
-
-class CII {}
-
-class CIJ {}
-
-class CIK {}
-
-class CIL {}
-
-class CIM {}
-
-class CIN {}
-
-class CIO {}
-
-class CIP {}
-
-class CIQ {}
-
-class CIR {}
-
-class CIS {}
-
-class CIT {}
-
-class CIU {}
-
-class CIV {}
-
-class CIW {}
-
-class CIX {}
-
-class CIY {}
-
-class CIZ {}
-
-class CJa {}
-
-class CJb {}
-
-class CJc {}
-
-class CJd {}
-
-class CJe {}
-
-class CJf {}
-
-class CJg {}
-
-class CJh {}
-
-class CJi {}
-
-class CJj {}
-
-class CJk {}
-
-class CJl {}
-
-class CJm {}
-
-class CJn {}
-
-class CJo {}
-
-class CJp {}
-
-class CJq {}
-
-class CJr {}
-
-class CJs {}
-
-class CJt {}
-
-class CJu {}
-
-class CJv {}
-
-class CJw {}
-
-class CJx {}
-
-class CJy {}
-
-class CJz {}
-
-class CJA {}
-
-class CJB {}
-
-class CJC {}
-
-class CJD {}
-
-class CJE {}
-
-class CJF {}
-
-class CJG {}
-
-class CJH {}
-
-class CJI {}
-
-class CJJ {}
-
-class CJK {}
-
-class CJL {}
-
-class CJM {}
-
-class CJN {}
-
-class CJO {}
-
-class CJP {}
-
-class CJQ {}
-
-class CJR {}
-
-class CJS {}
-
-class CJT {}
-
-class CJU {}
-
-class CJV {}
-
-class CJW {}
-
-class CJX {}
-
-class CJY {}
-
-class CJZ {}
-
-class CKa {}
-
-class CKb {}
-
-class CKc {}
-
-class CKd {}
-
-class CKe {}
-
-class CKf {}
-
-class CKg {}
-
-class CKh {}
-
-class CKi {}
-
-class CKj {}
-
-class CKk {}
-
-class CKl {}
-
-class CKm {}
-
-class CKn {}
-
-class CKo {}
-
-class CKp {}
-
-class CKq {}
-
-class CKr {}
-
-class CKs {}
-
-class CKt {}
-
-class CKu {}
-
-class CKv {}
-
-class CKw {}
-
-class CKx {}
-
-class CKy {}
-
-class CKz {}
-
-class CKA {}
-
-class CKB {}
-
-class CKC {}
-
-class CKD {}
-
-class CKE {}
-
-class CKF {}
-
-class CKG {}
-
-class CKH {}
-
-class CKI {}
-
-class CKJ {}
-
-class CKK {}
-
-class CKL {}
-
-class CKM {}
-
-class CKN {}
-
-class CKO {}
-
-class CKP {}
-
-class CKQ {}
-
-class CKR {}
-
-class CKS {}
-
-class CKT {}
-
-class CKU {}
-
-class CKV {}
-
-class CKW {}
-
-class CKX {}
-
-class CKY {}
-
-class CKZ {}
-
-class CLa {}
-
-class CLb {}
-
-class CLc {}
-
-class CLd {}
-
-class CLe {}
-
-class CLf {}
-
-class CLg {}
-
-class CLh {}
-
-class CLi {}
-
-class CLj {}
-
-class CLk {}
-
-class CLl {}
-
-class CLm {}
-
-class CLn {}
-
-class CLo {}
-
-class CLp {}
-
-class CLq {}
-
-class CLr {}
-
-class CLs {}
-
-class CLt {}
-
-class CLu {}
-
-class CLv {}
-
-class CLw {}
-
-class CLx {}
-
-class CLy {}
-
-class CLz {}
-
-class CLA {}
-
-class CLB {}
-
-class CLC {}
-
-class CLD {}
-
-class CLE {}
-
-class CLF {}
-
-class CLG {}
-
-class CLH {}
-
-class CLI {}
-
-class CLJ {}
-
-class CLK {}
-
-class CLL {}
-
-class CLM {}
-
-class CLN {}
-
-class CLO {}
-
-class CLP {}
-
-class CLQ {}
-
-class CLR {}
-
-class CLS {}
-
-class CLT {}
-
-class CLU {}
-
-class CLV {}
-
-class CLW {}
-
-class CLX {}
-
-class CLY {}
-
-class CLZ {}
-
-class CMa {}
-
-class CMb {}
-
-class CMc {}
-
-class CMd {}
-
-class CMe {}
-
-class CMf {}
-
-class CMg {}
-
-class CMh {}
-
-class CMi {}
-
-class CMj {}
-
-class CMk {}
-
-class CMl {}
-
-class CMm {}
-
-class CMn {}
-
-class CMo {}
-
-class CMp {}
-
-class CMq {}
-
-class CMr {}
-
-class CMs {}
-
-class CMt {}
-
-class CMu {}
-
-class CMv {}
-
-class CMw {}
-
-class CMx {}
-
-class CMy {}
-
-class CMz {}
-
-class CMA {}
-
-class CMB {}
-
-class CMC {}
-
-class CMD {}
-
-class CME {}
-
-class CMF {}
-
-class CMG {}
-
-class CMH {}
-
-class CMI {}
-
-class CMJ {}
-
-class CMK {}
-
-class CML {}
-
-class CMM {}
-
-class CMN {}
-
-class CMO {}
-
-class CMP {}
-
-class CMQ {}
-
-class CMR {}
-
-class CMS {}
-
-class CMT {}
-
-class CMU {}
-
-class CMV {}
-
-class CMW {}
-
-class CMX {}
-
-class CMY {}
-
-class CMZ {}
-
-class CNa {}
-
-class CNb {}
-
-class CNc {}
-
-class CNd {}
-
-class CNe {}
-
-class CNf {}
-
-class CNg {}
-
-class CNh {}
-
-class CNi {}
-
-class CNj {}
-
-class CNk {}
-
-class CNl {}
-
-class CNm {}
-
-class CNn {}
-
-class CNo {}
-
-class CNp {}
-
-class CNq {}
-
-class CNr {}
-
-class CNs {}
-
-class CNt {}
-
-class CNu {}
-
-class CNv {}
-
-class CNw {}
-
-class CNx {}
-
-class CNy {}
-
-class CNz {}
-
-class CNA {}
-
-class CNB {}
-
-class CNC {}
-
-class CND {}
-
-class CNE {}
-
-class CNF {}
-
-class CNG {}
-
-class CNH {}
-
-class CNI {}
-
-class CNJ {}
-
-class CNK {}
-
-class CNL {}
-
-class CNM {}
-
-class CNN {}
-
-class CNO {}
-
-class CNP {}
-
-class CNQ {}
-
-class CNR {}
-
-class CNS {}
-
-class CNT {}
-
-class CNU {}
-
-class CNV {}
-
-class CNW {}
-
-class CNX {}
-
-class CNY {}
-
-class CNZ {}
-
-class COa {}
-
-class COb {}
-
-class COc {}
-
-class COd {}
-
-class COe {}
-
-class COf {}
-
-class COg {}
-
-class COh {}
-
-class COi {}
-
-class COj {}
-
-class COk {}
-
-class COl {}
-
-class COm {}
-
-class COn {}
-
-class COo {}
-
-class COp {}
-
-class COq {}
-
-class COr {}
-
-class COs {}
-
-class COt {}
-
-class COu {}
-
-class COv {}
-
-class COw {}
-
-class COx {}
-
-class COy {}
-
-class COz {}
-
-class COA {}
-
-class COB {}
-
-class COC {}
-
-class COD {}
-
-class COE {}
-
-class COF {}
-
-class COG {}
-
-class COH {}
-
-class COI {}
-
-class COJ {}
-
-class COK {}
-
-class COL {}
-
-class COM {}
-
-class CON {}
-
-class COO {}
-
-class COP {}
-
-class COQ {}
-
-class COR {}
-
-class COS {}
-
-class COT {}
-
-class COU {}
-
-class COV {}
-
-class COW {}
-
-class COX {}
-
-class COY {}
-
-class COZ {}
-
-class CPa {}
-
-class CPb {}
-
-class CPc {}
-
-class CPd {}
-
-class CPe {}
-
-class CPf {}
-
-class CPg {}
-
-class CPh {}
-
-class CPi {}
-
-class CPj {}
-
-class CPk {}
-
-class CPl {}
-
-class CPm {}
-
-class CPn {}
-
-class CPo {}
-
-class CPp {}
-
-class CPq {}
-
-class CPr {}
-
-class CPs {}
-
-class CPt {}
-
-class CPu {}
-
-class CPv {}
-
-class CPw {}
-
-class CPx {}
-
-class CPy {}
-
-class CPz {}
-
-class CPA {}
-
-class CPB {}
-
-class CPC {}
-
-class CPD {}
-
-class CPE {}
-
-class CPF {}
-
-class CPG {}
-
-class CPH {}
-
-class CPI {}
-
-class CPJ {}
-
-class CPK {}
-
-class CPL {}
-
-class CPM {}
-
-class CPN {}
-
-class CPO {}
-
-class CPP {}
-
-class CPQ {}
-
-class CPR {}
-
-class CPS {}
-
-class CPT {}
-
-class CPU {}
-
-class CPV {}
-
-class CPW {}
-
-class CPX {}
-
-class CPY {}
-
-class CPZ {}
-
-class CQa {}
-
-class CQb {}
-
-class CQc {}
-
-class CQd {}
-
-class CQe {}
-
-class CQf {}
-
-class CQg {}
-
-class CQh {}
-
-class CQi {}
-
-class CQj {}
-
-class CQk {}
-
-class CQl {}
-
-class CQm {}
-
-class CQn {}
-
-class CQo {}
-
-class CQp {}
-
-class CQq {}
-
-class CQr {}
-
-class CQs {}
-
-class CQt {}
-
-class CQu {}
-
-class CQv {}
-
-class CQw {}
-
-class CQx {}
-
-class CQy {}
-
-class CQz {}
-
-class CQA {}
-
-class CQB {}
-
-class CQC {}
-
-class CQD {}
-
-class CQE {}
-
-class CQF {}
-
-class CQG {}
-
-class CQH {}
-
-class CQI {}
-
-class CQJ {}
-
-class CQK {}
-
-class CQL {}
-
-class CQM {}
-
-class CQN {}
-
-class CQO {}
-
-class CQP {}
-
-class CQQ {}
-
-class CQR {}
-
-class CQS {}
-
-class CQT {}
-
-class CQU {}
-
-class CQV {}
-
-class CQW {}
-
-class CQX {}
-
-class CQY {}
-
-class CQZ {}
-
-class CRa {}
-
-class CRb {}
-
-class CRc {}
-
-class CRd {}
-
-class CRe {}
-
-class CRf {}
-
-class CRg {}
-
-class CRh {}
-
-class CRi {}
-
-class CRj {}
-
-class CRk {}
-
-class CRl {}
-
-class CRm {}
-
-class CRn {}
-
-class CRo {}
-
-class CRp {}
-
-class CRq {}
-
-class CRr {}
-
-class CRs {}
-
-class CRt {}
-
-class CRu {}
-
-class CRv {}
-
-class CRw {}
-
-class CRx {}
-
-class CRy {}
-
-class CRz {}
-
-class CRA {}
-
-class CRB {}
-
-class CRC {}
-
-class CRD {}
-
-class CRE {}
-
-class CRF {}
-
-class CRG {}
-
-class CRH {}
-
-class CRI {}
-
-class CRJ {}
-
-class CRK {}
-
-class CRL {}
-
-class CRM {}
-
-class CRN {}
-
-class CRO {}
-
-class CRP {}
-
-class CRQ {}
-
-class CRR {}
-
-class CRS {}
-
-class CRT {}
-
-class CRU {}
-
-class CRV {}
-
-class CRW {}
-
-class CRX {}
-
-class CRY {}
-
-class CRZ {}
-
-class CSa {}
-
-class CSb {}
-
-class CSc {}
-
-class CSd {}
-
-class CSe {}
-
-class CSf {}
-
-class CSg {}
-
-class CSh {}
-
-class CSi {}
-
-class CSj {}
-
-class CSk {}
-
-class CSl {}
-
-class CSm {}
-
-class CSn {}
-
-class CSo {}
-
-class CSp {}
-
-class CSq {}
-
-class CSr {}
-
-class CSs {}
-
-class CSt {}
-
-class CSu {}
-
-class CSv {}
-
-class CSw {}
-
-class CSx {}
-
-class CSy {}
-
-class CSz {}
-
-class CSA {}
-
-class CSB {}
-
-class CSC {}
-
-class CSD {}
-
-class CSE {}
-
-class CSF {}
-
-class CSG {}
-
-class CSH {}
-
-class CSI {}
-
-class CSJ {}
-
-class CSK {}
-
-class CSL {}
-
-class CSM {}
-
-class CSN {}
-
-class CSO {}
-
-class CSP {}
-
-class CSQ {}
-
-class CSR {}
-
-class CSS {}
-
-class CST {}
-
-class CSU {}
-
-class CSV {}
-
-class CSW {}
-
-class CSX {}
-
-class CSY {}
-
-class CSZ {}
-
-class CTa {}
-
-class CTb {}
-
-class CTc {}
-
-class CTd {}
-
-class CTe {}
-
-class CTf {}
-
-class CTg {}
-
-class CTh {}
-
-class CTi {}
-
-class CTj {}
-
-class CTk {}
-
-class CTl {}
-
-class CTm {}
-
-class CTn {}
-
-class CTo {}
-
-class CTp {}
-
-class CTq {}
-
-class CTr {}
-
-class CTs {}
-
-class CTt {}
-
-class CTu {}
-
-class CTv {}
-
-class CTw {}
-
-class CTx {}
-
-class CTy {}
-
-class CTz {}
-
-class CTA {}
-
-class CTB {}
-
-class CTC {}
-
-class CTD {}
-
-class CTE {}
-
-class CTF {}
-
-class CTG {}
-
-class CTH {}
-
-class CTI {}
-
-class CTJ {}
-
-class CTK {}
-
-class CTL {}
-
-class CTM {}
-
-class CTN {}
-
-class CTO {}
-
-class CTP {}
-
-class CTQ {}
-
-class CTR {}
-
-class CTS {}
-
-class CTT {}
-
-class CTU {}
-
-class CTV {}
-
-class CTW {}
-
-class CTX {}
-
-class CTY {}
-
-class CTZ {}
-
-class CUa {}
-
-class CUb {}
-
-class CUc {}
-
-class CUd {}
-
-class CUe {}
-
-class CUf {}
-
-class CUg {}
-
-class CUh {}
-
-class CUi {}
-
-class CUj {}
-
-class CUk {}
-
-class CUl {}
-
-class CUm {}
-
-class CUn {}
-
-class CUo {}
-
-class CUp {}
-
-class CUq {}
-
-class CUr {}
-
-class CUs {}
-
-class CUt {}
-
-class CUu {}
-
-class CUv {}
-
-class CUw {}
-
-class CUx {}
-
-class CUy {}
-
-class CUz {}
-
-class CUA {}
-
-class CUB {}
-
-class CUC {}
-
-class CUD {}
-
-class CUE {}
-
-class CUF {}
-
-class CUG {}
-
-class CUH {}
-
-class CUI {}
-
-class CUJ {}
-
-class CUK {}
-
-class CUL {}
-
-class CUM {}
-
-class CUN {}
-
-class CUO {}
-
-class CUP {}
-
-class CUQ {}
-
-class CUR {}
-
-class CUS {}
-
-class CUT {}
-
-class CUU {}
-
-class CUV {}
-
-class CUW {}
-
-class CUX {}
-
-class CUY {}
-
-class CUZ {}
-
-class CVa {}
-
-class CVb {}
-
-class CVc {}
-
-class CVd {}
-
-class CVe {}
-
-class CVf {}
-
-class CVg {}
-
-class CVh {}
-
-class CVi {}
-
-class CVj {}
-
-class CVk {}
-
-class CVl {}
-
-class CVm {}
-
-class CVn {}
-
-class CVo {}
-
-class CVp {}
-
-class CVq {}
-
-class CVr {}
-
-class CVs {}
-
-class CVt {}
-
-class CVu {}
-
-class CVv {}
-
-class CVw {}
-
-class CVx {}
-
-class CVy {}
-
-class CVz {}
-
-class CVA {}
-
-class CVB {}
-
-class CVC {}
-
-class CVD {}
-
-class CVE {}
-
-class CVF {}
-
-class CVG {}
-
-class CVH {}
-
-class CVI {}
-
-class CVJ {}
-
-class CVK {}
-
-class CVL {}
-
-class CVM {}
-
-class CVN {}
-
-class CVO {}
-
-class CVP {}
-
-class CVQ {}
-
-class CVR {}
-
-class CVS {}
-
-class CVT {}
-
-class CVU {}
-
-class CVV {}
-
-class CVW {}
-
-class CVX {}
-
-class CVY {}
-
-class CVZ {}
-
-class CWa {}
-
-class CWb {}
-
-class CWc {}
-
-class CWd {}
-
-class CWe {}
-
-class CWf {}
-
-class CWg {}
-
-class CWh {}
-
-class CWi {}
-
-class CWj {}
-
-class CWk {}
-
-class CWl {}
-
-class CWm {}
-
-class CWn {}
-
-class CWo {}
-
-class CWp {}
-
-class CWq {}
-
-class CWr {}
-
-class CWs {}
-
-class CWt {}
-
-class CWu {}
-
-class CWv {}
-
-class CWw {}
-
-class CWx {}
-
-class CWy {}
-
-class CWz {}
-
-class CWA {}
-
-class CWB {}
-
-class CWC {}
-
-class CWD {}
-
-class CWE {}
-
-class CWF {}
-
-class CWG {}
-
-class CWH {}
-
-class CWI {}
-
-class CWJ {}
-
-class CWK {}
-
-class CWL {}
-
-class CWM {}
-
-class CWN {}
-
-class CWO {}
-
-class CWP {}
-
-class CWQ {}
-
-class CWR {}
-
-class CWS {}
-
-class CWT {}
-
-class CWU {}
-
-class CWV {}
-
-class CWW {}
-
-class CWX {}
-
-class CWY {}
-
-class CWZ {}
-
-class CXa {}
-
-class CXb {}
-
-class CXc {}
-
-class CXd {}
-
-class CXe {}
-
-class CXf {}
-
-class CXg {}
-
-class CXh {}
-
-class CXi {}
-
-class CXj {}
-
-class CXk {}
-
-class CXl {}
-
-class CXm {}
-
-class CXn {}
-
-class CXo {}
-
-class CXp {}
-
-class CXq {}
-
-class CXr {}
-
-class CXs {}
-
-class CXt {}
-
-class CXu {}
-
-class CXv {}
-
-class CXw {}
-
-class CXx {}
-
-class CXy {}
-
-class CXz {}
-
-class CXA {}
-
-class CXB {}
-
-class CXC {}
-
-class CXD {}
-
-class CXE {}
-
-class CXF {}
-
-class CXG {}
-
-class CXH {}
-
-class CXI {}
-
-class CXJ {}
-
-class CXK {}
-
-class CXL {}
-
-class CXM {}
-
-class CXN {}
-
-class CXO {}
-
-class CXP {}
-
-class CXQ {}
-
-class CXR {}
-
-class CXS {}
-
-class CXT {}
-
-class CXU {}
-
-class CXV {}
-
-class CXW {}
-
-class CXX {}
-
-class CXY {}
-
-class CXZ {}
-
-class CYa {}
-
-class CYb {}
-
-class CYc {}
-
-class CYd {}
-
-class CYe {}
-
-class CYf {}
-
-class CYg {}
-
-class CYh {}
-
-class CYi {}
-
-class CYj {}
-
-class CYk {}
-
-class CYl {}
-
-class CYm {}
-
-class CYn {}
-
-class CYo {}
-
-class CYp {}
-
-class CYq {}
-
-class CYr {}
-
-class CYs {}
-
-class CYt {}
-
-class CYu {}
-
-class CYv {}
-
-class CYw {}
-
-class CYx {}
-
-class CYy {}
-
-class CYz {}
-
-class CYA {}
-
-class CYB {}
-
-class CYC {}
-
-class CYD {}
-
-class CYE {}
-
-class CYF {}
-
-class CYG {}
-
-class CYH {}
-
-class CYI {}
-
-class CYJ {}
-
-class CYK {}
-
-class CYL {}
-
-class CYM {}
-
-class CYN {}
-
-class CYO {}
-
-class CYP {}
-
-class CYQ {}
-
-class CYR {}
-
-class CYS {}
-
-class CYT {}
-
-class CYU {}
-
-class CYV {}
-
-class CYW {}
-
-class CYX {}
-
-class CYY {}
-
-class CYZ {}
-
-class CZa {}
-
-class CZb {}
-
-class CZc {}
-
-class CZd {}
-
-class CZe {}
-
-class CZf {}
-
-class CZg {}
-
-class CZh {}
-
-class CZi {}
-
-class CZj {}
-
-class CZk {}
-
-class CZl {}
-
-class CZm {}
-
-class CZn {}
-
-class CZo {}
-
-class CZp {}
-
-class CZq {}
-
-class CZr {}
-
-class CZs {}
-
-class CZt {}
-
-class CZu {}
-
-class CZv {}
-
-class CZw {}
-
-class CZx {}
-
-class CZy {}
-
-class CZz {}
-
-class CZA {}
-
-class CZB {}
-
-class CZC {}
-
-class CZD {}
-
-class CZE {}
-
-class CZF {}
-
-class CZG {}
-
-class CZH {}
-
-class CZI {}
-
-class CZJ {}
-
-class CZK {}
-
-class CZL {}
-
-class CZM {}
-
-class CZN {}
-
-class CZO {}
-
-class CZP {}
-
-class CZQ {}
-
-class CZR {}
-
-class CZS {}
-
-class CZT {}
-
-class CZU {}
-
-class CZV {}
-
-class CZW {}
-
-class CZX {}
-
-class CZY {}
-
-class CZZ {}
diff --git a/tests/language/closure2_test.dart b/tests/language/closure2_test.dart
deleted file mode 100644
index bf3cf01..0000000
--- a/tests/language/closure2_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for closures.
-
-import "package:expect/expect.dart";
-
-bounce(fn) {
-  return fn();
-}
-
-demo(s) {
-  var i, a = bounce(() => s);
-  return a;
-}
-
-main() {
-  Expect.equals("Bounce!", demo("Bounce!"));
-}
diff --git a/tests/language/closure3_test.dart b/tests/language/closure3_test.dart
deleted file mode 100644
index f8053c4..0000000
--- a/tests/language/closure3_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-// Test that a NoSuchMethodError is thrown even when an expression
-// seems to be free of side-effects.
-
-test(x, y) {
-  (() {
-    x - y;
-  })();
-}
-
-main() {
-  Expect.throws(() {
-    test(null, 2);
-  }, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/closure4_test.dart b/tests/language/closure4_test.dart
deleted file mode 100644
index 5445b7d..0000000
--- a/tests/language/closure4_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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";
-
-// Dart2js failed when a declared function was captured inside itself.
-
-foo(f) => f(499);
-
-main() {
-  fun(x) {
-    if (x < 3) {
-      return foo((x) => fun(x));
-    } else {
-      return x;
-    }
-  }
-
-  Expect.equals(499, fun(499));
-}
diff --git a/tests/language/closure5_test.dart b/tests/language/closure5_test.dart
deleted file mode 100644
index bf698b6..0000000
--- a/tests/language/closure5_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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";
-
-// Dart2js failed when a declared function was captured inside itself.
-
-foo(f) => f(499);
-
-main() {
-  fun(x) {
-    if (x < 3) {
-      return foo((x) => fun(x));
-    } else {
-      return x;
-    }
-  }
-
-  Expect.equals(499, foo((x) => fun(x)));
-}
diff --git a/tests/language/closure6_test.dart b/tests/language/closure6_test.dart
deleted file mode 100644
index ea37454..0000000
--- a/tests/language/closure6_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-// Test that captured final variables are correctly mangled.
-
-class A {
-  foo() {
-    length() => 400;
-    final box_0 = 28;
-    var x = 29;
-    var f = () => length() + box_0 + x + bar();
-    return f();
-  }
-
-  bar() => 42;
-}
-
-main() {
-  Expect.equals(499, new A().foo());
-}
diff --git a/tests/language/closure7_test.dart b/tests/language/closure7_test.dart
deleted file mode 100644
index 91b8f7b..0000000
--- a/tests/language/closure7_test.dart
+++ /dev/null
@@ -1,97 +0,0 @@
-// 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";
-
-// Test that implicitly bound closures work correctly
-
-class A {
-  foo() => 499;
-  fooo() => 4999; // Implicit closure class can be shared with foo.
-  bar(x, {y: 8, z: 10}) => "1 $x $y $z";
-  gee(x, {y: 9, z: 11}) => "2 $x $y $z"; // Must not be shared with "bar".
-  toto(x, {y: 8, z: 10}) => "3 $x $y $z"; // Could be shared with "bar".
-
-  fisk(x, {y: 8, zz: 10}) => "4 $x $y $zz";
-  titi(x, {y: 8, zz: 77}) => "5 $x $y $zz"; // Could be shared with "fisk",
-  // because default-val is never used.
-}
-
-class B {
-  // All implicit closures of B can be shared with their equivalent functions
-  // of A.
-  foo() => 4990;
-  fooo() => 49990;
-  bar(x, {y: 8, z: 10}) => "1B $x $y $z";
-  gee(x, {y: 9, z: 11}) => "2B $x $y $z";
-  toto(x, {y: 8, z: 10}) => "3B $x $y $z";
-  fisk(x, {y: 8, zz: 10}) => "4B $x $y $zz";
-  titi(x, {y: 8, zz: 77}) => "5B $x $y $zz";
-}
-
-tearOffFoo(o) => o.foo;
-tearOffFooo(o) => o.fooo;
-tearOffBar(o) => o.bar;
-tearOffGee(o) => o.gee;
-tearOffToto(o) => o.toto;
-tearOffFisk(o) => o.fisk;
-tearOffTiti(o) => o.titi;
-
-main() {
-  var a = new A();
-  var b = new B();
-  Expect.equals(499, tearOffFoo(a)());
-  Expect.equals(4990, tearOffFoo(b)());
-  Expect.equals(4999, tearOffFooo(a)());
-  Expect.equals(49990, tearOffFooo(b)());
-
-  var barA = tearOffBar(a);
-  var barB = tearOffBar(b);
-  var geeA = tearOffGee(a);
-  var geeB = tearOffGee(b);
-  var totoA = tearOffToto(a);
-  var totoB = tearOffToto(b);
-  Expect.equals("1 33 8 10", barA(33));
-  Expect.equals("1B 33 8 10", barB(33));
-  Expect.equals("2 33 9 11", geeA(33));
-  Expect.equals("2B 33 9 11", geeB(33));
-  Expect.equals("3 33 8 10", totoA(33));
-  Expect.equals("3B 33 8 10", totoB(33));
-
-  Expect.equals("1 35 8 10", barA(35));
-  Expect.equals("1B 35 8 10", barB(35));
-  Expect.equals("2 35 9 11", geeA(35));
-  Expect.equals("2B 35 9 11", geeB(35));
-  Expect.equals("3 35 8 10", totoA(35));
-  Expect.equals("3B 35 8 10", totoB(35));
-
-  Expect.equals("1 35 8 77", barA(35, z: 77));
-  Expect.equals("1B 35 8 77", barB(35, z: 77));
-  Expect.equals("2 35 9 77", geeA(35, z: 77));
-  Expect.equals("2B 35 9 77", geeB(35, z: 77));
-  Expect.equals("3 35 8 77", totoA(35, z: 77));
-  Expect.equals("3B 35 8 77", totoB(35, z: 77));
-
-  Expect.equals("1 35 8 77", barA(35, z: 77));
-  Expect.equals("1B 35 8 77", barB(35, z: 77));
-  Expect.equals("2 35 9 77", geeA(35, z: 77));
-  Expect.equals("2B 35 9 77", geeB(35, z: 77));
-  Expect.equals("3 35 8 77", totoA(35, z: 77));
-  Expect.equals("3B 35 8 77", totoB(35, z: 77));
-
-  var fiskA = tearOffFisk(a);
-  var fiskB = tearOffFisk(b);
-  var titiA = tearOffTiti(a);
-  var titiB = tearOffTiti(b);
-
-  Expect.equals("4 311 8 987", fiskA(311, zz: 987));
-  Expect.equals("4B 311 8 987", fiskB(311, zz: 987));
-  Expect.equals("5 311 8 987", titiA(311, zz: 987));
-  Expect.equals("5B 311 8 987", titiB(311, zz: 987));
-
-  Expect.equals("4 311 765 987", fiskA(311, y: 765, zz: 987));
-  Expect.equals("4B 311 765 987", fiskB(311, y: 765, zz: 987));
-  Expect.equals("5 311 765 987", titiA(311, y: 765, zz: 987));
-  Expect.equals("5B 311 765 987", titiB(311, y: 765, zz: 987));
-}
diff --git a/tests/language/closure8_test.dart b/tests/language/closure8_test.dart
deleted file mode 100644
index 211c722..0000000
--- a/tests/language/closure8_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Regression test for issue 6353.
-
-class A<E> {}
-
-class C<E> extends A<E> {
-  forEach(callback(E element)) {}
-}
-
-class D<E> {
-  lala(E element) {}
-}
-
-main() {
-  var c = new C<int>();
-  c.forEach(new D<int>().lala);
-}
diff --git a/tests/language/closure_break1_test.dart b/tests/language/closure_break1_test.dart
deleted file mode 100644
index 8522fae..0000000
--- a/tests/language/closure_break1_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for closures.
-
-import "package:expect/expect.dart";
-
-class ClosureBreak1 {
-  ClosureBreak1(this.field);
-  int field;
-}
-
-class ClosureBreak1Test {
-  static testMain() {
-    var o1 = new ClosureBreak1(3);
-    String newstr = "abcdefgh";
-    foo() {
-      o1.field++;
-      Expect.equals(8, newstr.length);
-    }
-
-    bool loop = true;
-    L:
-    while (loop) {
-      String newstr1 = "abcd";
-      var o2 = new ClosureBreak1(3);
-      foo1() {
-        o2.field++;
-        Expect.equals(4, newstr1.length);
-      }
-
-      Expect.equals(4, newstr1.length);
-      while (loop) {
-        int newint = 0;
-        var o3 = new ClosureBreak1(3);
-        foo2() {
-          o3.field++;
-          Expect.equals(0, newint);
-        }
-
-        foo2();
-        break L;
-      }
-    }
-    foo();
-    Expect.equals(4, o1.field);
-  }
-}
-
-main() {
-  ClosureBreak1Test.testMain();
-}
diff --git a/tests/language/closure_break2_test.dart b/tests/language/closure_break2_test.dart
deleted file mode 100644
index 5742620..0000000
--- a/tests/language/closure_break2_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for closures.
-
-import "package:expect/expect.dart";
-
-class ClosureBreak2 {
-  ClosureBreak2(this.field);
-  int field;
-}
-
-class ClosureBreak2Test {
-  static testMain() {
-    var o1 = new ClosureBreak2(3);
-    String newstr = "abcdefgh";
-    foo() {
-      o1.field++;
-      Expect.equals(8, newstr.length);
-    }
-
-    bool loop = true;
-    L:
-    while (loop) {
-      String newstr1 = "abcd";
-      Expect.equals(4, newstr1.length);
-      while (loop) {
-        int newint = 0;
-        Expect.equals(4, newstr1.length);
-        break L;
-      }
-    }
-    foo();
-    Expect.equals(4, o1.field);
-  }
-}
-
-main() {
-  ClosureBreak2Test.testMain();
-}
diff --git a/tests/language/closure_break_test.dart b/tests/language/closure_break_test.dart
deleted file mode 100644
index ae99035..0000000
--- a/tests/language/closure_break_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for closures.
-
-import "package:expect/expect.dart";
-
-class ClosureBreak {
-  ClosureBreak(this.field);
-  int field;
-}
-
-class ClosureBreakTest {
-  static testMain() {
-    var o1 = new ClosureBreak(3);
-    String newstr = "abcdefgh";
-    foo() {
-      o1.field++;
-      Expect.equals(8, newstr.length);
-    }
-
-    bool loop = true;
-    L1:
-    while (loop) {
-      String newstr1 = "abcd";
-      var o2 = new ClosureBreak(3);
-      foo1() {
-        o2.field++;
-        Expect.equals(4, newstr1.length);
-      }
-
-      Expect.equals(4, newstr1.length);
-      L2:
-      while (loop) {
-        int newint = 0;
-        var o3 = new ClosureBreak(3);
-        foo2() {
-          o3.field++;
-          Expect.equals(0, newint);
-        }
-
-        foo2();
-        break L2;
-      }
-      foo1();
-      Expect.equals(4, newstr1.length);
-      break L1;
-    }
-    foo();
-    Expect.equals(4, o1.field);
-  }
-}
-
-main() {
-  ClosureBreakTest.testMain();
-}
diff --git a/tests/language/closure_call_wrong_argument_count_negative_test.dart b/tests/language/closure_call_wrong_argument_count_negative_test.dart
deleted file mode 100644
index fe1c77c..0000000
--- a/tests/language/closure_call_wrong_argument_count_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test mismatch in argument counts.
-
-class ClosureCallWrongArgumentCountNegativeTest {
-  static int melke(var f) {
-    return f(1, 2, 3);
-  }
-
-  static void testMain() {
-    kuh(int a, int b) {
-      return a + b;
-    }
-
-    melke(kuh);
-  }
-}
-
-main() {
-  ClosureCallWrongArgumentCountNegativeTest.testMain();
-}
diff --git a/tests/language/closure_cycles_test.dart b/tests/language/closure_cycles_test.dart
deleted file mode 100644
index e66a391..0000000
--- a/tests/language/closure_cycles_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2011, 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.
-// Based on dartbug.com/7681
-// Verify that context chains do not lead to unintended memory being held.
-
-library closure_cycles_test;
-
-import "dart:async";
-
-class X {
-  Function onX;
-  X() {
-    Timer.run(() => onX(new Y()));
-  }
-}
-
-class Y {
-  Function onY;
-  var heavyMemory;
-  static var count = 0;
-  Y() {
-    // Consume large amounts of memory per iteration to fail/succeed quicker.
-    heavyMemory = new List(10 * 1024 * 1024);
-    // Terminate the test if we allocated enough memory without running out.
-    if (count++ > 100) return;
-    Timer.run(() => onY());
-  }
-}
-
-void doIt() {
-  var x = new X();
-  x.onX = (y) {
-    y.onY = () {
-      y; // Capturing y can lead to endless context chains!
-      doIt();
-    };
-  };
-}
-
-void main() {
-  doIt();
-}
diff --git a/tests/language/closure_in_constructor_test.dart b/tests/language/closure_in_constructor_test.dart
deleted file mode 100644
index 66ee970..0000000
--- a/tests/language/closure_in_constructor_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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";
-
-class A<T> {
-  var closure;
-
-  factory A.factory() => new A(() => new List<T>());
-
-  A([this.closure]) {
-    if (closure == null) {
-      closure = () => new List<T>();
-    }
-  }
-}
-
-main() {
-  Expect.isTrue((new A.factory()).closure() is List);
-  Expect.isTrue((new A()).closure() is List);
-  Expect.isTrue((new A<int>.factory()).closure() is List<int>);
-  Expect.isTrue((new A<int>()).closure() is List<int>);
-  Expect.isFalse((new A<int>.factory()).closure() is List<String>);
-  Expect.isFalse((new A<int>()).closure() is List<String>);
-}
diff --git a/tests/language/closure_in_field_initializer_test.dart b/tests/language/closure_in_field_initializer_test.dart
deleted file mode 100644
index b193180..0000000
--- a/tests/language/closure_in_field_initializer_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Foo {
-  var closures = {'a': (x, y) => x + y};
-}
-
-main() {
-  var closures = new Foo().closures;
-  Expect.equals(6, closures['a'](4, 2));
-}
diff --git a/tests/language/closure_in_field_test.dart b/tests/language/closure_in_field_test.dart
deleted file mode 100644
index 95a7bd5..0000000
--- a/tests/language/closure_in_field_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-// Test handling of type variable in field initializers.
-
-import 'package:expect/expect.dart';
-
-class Mixin<S> {
-  var field = (S s) => null;
-}
-
-class Class<T> extends Object with Mixin<T> {}
-
-void main() {
-  Expect.isTrue(test(new Mixin<int>()));
-  Expect.isFalse(test(new Mixin<String>())); //# 01: ok
-  Expect.isTrue(test(new Class<int>()));
-  Expect.isFalse(test(new Class<String>())); //# 02: ok
-}
-
-test(o) => o.field is dynamic Function(int);
diff --git a/tests/language/closure_in_initializer2_test.dart b/tests/language/closure_in_initializer2_test.dart
deleted file mode 100644
index a782c64..0000000
--- a/tests/language/closure_in_initializer2_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-
-// Test that a parameter used in a closure is properly boxed.
-
-import "package:expect/expect.dart";
-
-abstract class S {
-  S() {
-    Expect.equals(2, this.f());
-  }
-
-  get f;
-}
-
-class A extends S {
-  var f;
-  A(a) : f = (() => ++a) {
-    Expect.equals(a, 2);
-  }
-}
-
-main() {
-  var a = new A(1);
-  Expect.equals(a.f(), 3);
-}
diff --git a/tests/language/closure_in_initializer_test.dart b/tests/language/closure_in_initializer_test.dart
deleted file mode 100644
index aad2e5e..0000000
--- a/tests/language/closure_in_initializer_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.
-
-// Test that a parameter used in two different closures defined in a
-// constructor initializer, is properly boxed.
-
-import "package:expect/expect.dart";
-
-class A {
-  var f;
-  var g;
-  A(a)
-      : f = (() => 42 + a),
-        g = (() => ++a) {
-    a = 4;
-  }
-}
-
-class B extends A {
-  B() : super(42);
-}
-
-class C extends A {
-  var h;
-  C(a)
-      : super(42),
-        h = (() => ++a);
-}
-
-main() {
-  var a = new A(1);
-  Expect.equals(46, a.f());
-  Expect.equals(5, a.g());
-  Expect.equals(47, a.f());
-
-  a = new B();
-  Expect.equals(46, a.f());
-  Expect.equals(5, a.g());
-  Expect.equals(47, a.f());
-
-  a = new C(0);
-  Expect.equals(46, a.f());
-  Expect.equals(5, a.g());
-  Expect.equals(47, a.f());
-  Expect.equals(1, a.h());
-  Expect.equals(2, a.h());
-  Expect.equals(47, a.f());
-  Expect.equals(6, a.g());
-  Expect.equals(48, a.f());
-}
diff --git a/tests/language/closure_internals_test.dart b/tests/language/closure_internals_test.dart
deleted file mode 100644
index 587be33..0000000
--- a/tests/language/closure_internals_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class C {
-  foo() => 123;
-}
-
-main() {
-  var f = new C().foo;
-  Expect.throws(() => f.target, (e) => e is NoSuchMethodError);
-  Expect.throws(() => f.self, (e) => e is NoSuchMethodError);
-  Expect.throws(() => f.receiver, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/closure_parameter_types_test.dart b/tests/language/closure_parameter_types_test.dart
deleted file mode 100644
index 3fa1521..0000000
--- a/tests/language/closure_parameter_types_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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";
-
-// Regression test for dart2js, where the optimizer was too aggressive
-// about parameter types of closures.
-
-class A {
-  Function f;
-  A(this.f);
-  _do() => f(1);
-}
-
-main() {
-  int invokeCount = 0;
-  closure(a) {
-    if (invokeCount++ == 1) {
-      Expect.isTrue(a is int);
-    }
-  }
-
-  closure('s');
-  new A(closure)._do();
-  Expect.equals(2, invokeCount);
-}
diff --git a/tests/language/closure_self_reference_test.dart b/tests/language/closure_self_reference_test.dart
deleted file mode 100644
index a47b1bf..0000000
--- a/tests/language/closure_self_reference_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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';
-
-// Tests a self-reference of a closure inside a try/catch.
-// Dart2js must not try to box the closure-reference.
-
-main() {
-  var counter = 0;
-  inner(value) {
-    if (value == 0) return 0;
-    try {
-      return inner(value - 1);
-    } finally {
-      counter++;
-    }
-  }
-
-  Expect.equals(0, inner(199));
-  Expect.equals(199, counter);
-}
diff --git a/tests/language/closure_shared_state_test.dart b/tests/language/closure_shared_state_test.dart
deleted file mode 100644
index 85c9908..0000000
--- a/tests/language/closure_shared_state_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests for closures sharing mutable bindings.
-
-var f;
-var g;
-
-setupPlain() {
-  int j = 1000;
-  // Two closures sharing variable 'j'; j initially is 1000.
-  f = (int x) {
-    var q = j;
-    j = x;
-    return q;
-  };
-  g = (int x) {
-    var q = j;
-    j = x;
-    return q;
-  };
-}
-
-setupLoop() {
-  for (int i = 0; i < 2; i++) {
-    int j = i * 1000; // The last stored closure has j initially 1000.
-    // Two closures sharing variable 'j'.
-    f = (int x) {
-      var q = j;
-      j = x;
-      return q;
-    };
-    g = (int x) {
-      var q = j;
-      j = x;
-      return q;
-    };
-  }
-}
-
-setupNestedLoop() {
-  for (int outer = 0; outer < 2; outer++) {
-    int j = outer * 1000;
-    for (int i = 0; i < 2; i++) {
-      // Two closures sharing variable 'j' in a loop at different nesting.
-      f = (int x) {
-        var q = j;
-        j = x;
-        return q;
-      };
-      g = (int x) {
-        var q = j;
-        j = x;
-        return q;
-      };
-    }
-  }
-}
-
-test(setup) {
-  setup();
-  Expect.equals(1000, f(100));
-  Expect.equals(100, f(200));
-  Expect.equals(200, f(300));
-  Expect.equals(300, g(400));
-  Expect.equals(400, g(500));
-}
-
-main() {
-  test(setupPlain);
-  test(setupLoop);
-  test(setupNestedLoop);
-}
diff --git a/tests/language/closure_side_effect_test.dart b/tests/language/closure_side_effect_test.dart
deleted file mode 100644
index 95fb941..0000000
--- a/tests/language/closure_side_effect_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, 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";
-
-var b;
-var a = () {
-  b = 42;
-};
-
-var c = [new C()];
-
-class C {
-  nonInlinable1() {
-    a();
-  }
-
-  nonInlinable2() {
-    var a = () {
-      b = 42;
-    };
-    a();
-  }
-}
-
-testClosureInStaticField() {
-  var temp = c[0];
-  Expect.isNull(b);
-  temp.nonInlinable1();
-  Expect.equals(42, b);
-  b = null;
-}
-
-testLocalClosure() {
-  var temp = c[0];
-  Expect.isNull(b);
-  temp.nonInlinable2();
-  Expect.equals(42, b);
-}
-
-main() {
-  testClosureInStaticField();
-  testLocalClosure();
-}
diff --git a/tests/language/closure_test.dart b/tests/language/closure_test.dart
deleted file mode 100644
index 9dc3a90..0000000
--- a/tests/language/closure_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for closures.
-
-import "package:expect/expect.dart";
-
-class A {
-  var field;
-  A(this.field) {}
-}
-
-class ClosureTest {
-  static testMain() {
-    var o = new A(3);
-    foo() => o.field++;
-    Expect.equals(3, foo());
-    Expect.equals(4, o.field);
-  }
-}
-
-main() {
-  ClosureTest.testMain();
-}
diff --git a/tests/language/closure_type_test.dart b/tests/language/closure_type_test.dart
deleted file mode 100644
index 09d6c97..0000000
--- a/tests/language/closure_type_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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.
-
-// Dart test for a closure result type test that cannot be eliminated at compile
-// time.
-
-library closure_type_test;
-
-import "package:expect/expect.dart";
-import 'dart:math' as math;
-
-class Math {
-  static
-  int // //# 01: static type warning
-      sqrt(x) => math.sqrt(x);
-}
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-void test(int func(int value), int value) {
-  bool got_type_error = false;
-  try {
-    // Because of function subtyping rules, the static return type of a closure
-    // call cannot be relied upon for static type analysis. For example, a
-    // function returning dynamic (function 'root') can be assigned to a closure
-    // variable declared to return int (closure 'func') and may actually return
-    // a double at run-time.
-    // Therefore, eliminating the run-time type check would be wrong.
-    int x = func(value);
-    Expect.equals(value, x * x);
-  } on TypeError catch (error) {
-    got_type_error = true;
-  }
-  // Type error expected in checked mode only.
-  Expect.isTrue(got_type_error == isCheckedMode());
-}
-
-root(x) => Math.sqrt(x);
-
-main() => test(root, 4);
diff --git a/tests/language/closure_type_variable_test.dart b/tests/language/closure_type_variable_test.dart
deleted file mode 100644
index 2ed61c2..0000000
--- a/tests/language/closure_type_variable_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that the type argument is available inside a closure.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  foo() {
-    bar() => T;
-    return bar();
-  }
-}
-
-main() {
-  Expect.equals(new A<int>().foo(), int);
-}
diff --git a/tests/language/closure_type_variables_test.dart b/tests/language/closure_type_variables_test.dart
deleted file mode 100644
index 9c39a70..0000000
--- a/tests/language/closure_type_variables_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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";
-
-// Test that type variables are available in closures.
-
-class A<T> {
-  A();
-
-  A.bar() {
-    g() {
-      new A<T>();
-    }
-
-    g();
-  }
-
-  foo() {
-    g() {
-      return new A<T>();
-    }
-
-    return g();
-  }
-}
-
-main() {
-  Expect.isTrue(new A<int>().foo() is A<int>);
-  Expect.isTrue(new A<int>.bar().foo() is A<int>);
-}
diff --git a/tests/language/closure_variable_shadow_test.dart b/tests/language/closure_variable_shadow_test.dart
deleted file mode 100644
index 4b1edb4..0000000
--- a/tests/language/closure_variable_shadow_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2014, 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";
-
-// The intermediate variable 'y' must either be preserved
-// or parameters must be renamed.
-
-foo(x) {
-  var y = x;
-  bar(x) {
-    return y - x;
-  }
-
-  return bar;
-}
-
-main() {
-  Expect.equals(-10, foo(10)(20));
-}
diff --git a/tests/language/closure_with_super_field_test.dart b/tests/language/closure_with_super_field_test.dart
deleted file mode 100644
index 603c0f6..0000000
--- a/tests/language/closure_with_super_field_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-class A {
-  int a;
-  A() : a = 42;
-}
-
-class B extends A {
-  int get a => 54;
-  returnSuper() => super.a;
-  returnSuperInClosure() => () => super.a;
-}
-
-main() {
-  B b = new B();
-  Expect.equals(54, b.a);
-  Expect.equals(42, b.returnSuper());
-  Expect.equals(42, b.returnSuperInClosure()());
-}
diff --git a/tests/language/closure_with_super_send_test.dart b/tests/language/closure_with_super_send_test.dart
deleted file mode 100644
index bcaae49..0000000
--- a/tests/language/closure_with_super_send_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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";
-
-// Test a closurized super send.
-
-class Super {
-  m() => "super";
-}
-
-class Sub extends Super {
-  m() => "sub";
-
-  test() {
-    var x;
-    [0].forEach((e) => x = super.m());
-    return x;
-  }
-}
-
-main() {
-  Expect.equals("super", new Sub().test());
-  Expect.equals("super", new Super().m());
-  Expect.equals("sub", new Sub().m());
-}
diff --git a/tests/language/closures_initializer2_test.dart b/tests/language/closures_initializer2_test.dart
deleted file mode 100644
index 337639b..0000000
--- a/tests/language/closures_initializer2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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<T> {
-  var t;
-  A() : t = (() => T);
-}
-
-expect(result, expected) {
-  if (result != expected) {
-    throw 'Expected $expected, got $result';
-  }
-}
-
-main() {
-  for (var i = 0; i < int.parse("1"); i++) {
-    expect(new A<int>().t() is Type, true);
-  }
-}
diff --git a/tests/language/closures_initializer_test.dart b/tests/language/closures_initializer_test.dart
deleted file mode 100644
index 1a2f1273..0000000
--- a/tests/language/closures_initializer_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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<T> {
-  var t;
-  A() : t = (() => new List<T>());
-}
-
-class B<T> {
-  var t;
-  B() : t = (() => T);
-}
-
-expect(result, expected) {
-  if (result != expected) {
-    throw 'Expected $expected, got $result';
-  }
-}
-
-main() {
-  expect(new A<int>().t() is List<int>, true);
-  expect(new A<String>().t() is List<int>, false);
-  expect(new B<int>().t() is Type, true);
-  expect(new B<int>().t(), int);
-}
diff --git a/tests/language/closures_with_complex_params_test.dart b/tests/language/closures_with_complex_params_test.dart
deleted file mode 100644
index c3c65ee..0000000
--- a/tests/language/closures_with_complex_params_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests for parsing closures with complex parameter types.
-
-main() {
-  test1();
-  test2();
-  test3();
-}
-
-class Pair<A, B> {
-  final A fst;
-  final B snd;
-  Pair(A this.fst, B this.snd);
-}
-
-test1() {
-  // Closures with nested parameterized types.
-  var cdar1 = (Pair<int, Pair<int, int>> pr) => pr.snd.fst;
-  var cdar2 = (Pair<int, Pair<int, int>> pr) => pr.snd.fst;
-
-  var e = new Pair<int, Pair<int, int>>(100, new Pair<int, int>(200, 300));
-
-  Expect.equals(200, cdar1(e));
-  Expect.equals(200, cdar2(e));
-}
-
-test2() {
-  // Closures with nested parameterized types in optional position
-  var cdar1 = ([Pair<int, Pair<int, int>> pr = null]) => pr.snd.fst;
-  var cdar2 = ([Pair<int, Pair<int, int>> pr = null]) => pr.snd.fst;
-
-  var e = new Pair<int, Pair<int, int>>(100, new Pair<int, int>(200, 300));
-
-  Expect.equals(200, cdar1(e));
-  Expect.equals(200, cdar2(e));
-}
-
-test3() {
-  // Closures with nested parameterized types.
-  var f1 = (Pair<int, Pair<int, int>> pr) => pr.snd.fst + 1;
-  var f2 = (Pair<int, Pair<int, int>> pr) => pr.snd.fst + 2;
-
-  // Closures with function type with nested parameterized types.
-  var ap1 = (f(Pair<int, Pair<int, int>> pr1), Pair<int, Pair<int, int>> pr) =>
-      f(pr) * 10;
-  var ap2 = (f(Pair<int, Pair<int, int>> pr1), Pair<int, Pair<int, int>> pr) =>
-      f(pr) * 100;
-
-  var e = new Pair<int, Pair<int, int>>(100, new Pair<int, int>(200, 300));
-
-  Expect.equals(2010, ap1(f1, e));
-  Expect.equals(2020, ap1(f2, e));
-  Expect.equals(20100, ap2(f1, e));
-  Expect.equals(20200, ap2(f2, e));
-}
diff --git a/tests/language/code_after_try_is_executed_test.dart b/tests/language/code_after_try_is_executed_test.dart
deleted file mode 100644
index 57ffd84..0000000
--- a/tests/language/code_after_try_is_executed_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-// Test that the runtime still runs the code after a try/catch. The
-// test cannot use Expect.throws, because Expect.throws uses the same
-// pattern.
-
-import "package:expect/expect.dart";
-
-main() {
-  var exception;
-  try {
-    throw 'foo';
-  } on String catch (ex) {
-    exception = ex;
-  }
-  Expect.isTrue(exception is String);
-  throw 'foo'; //# 01: runtime error
-}
diff --git a/tests/language/code_motion_crash_test.dart b/tests/language/code_motion_crash_test.dart
deleted file mode 100644
index f0d30b8..0000000
--- a/tests/language/code_motion_crash_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to crash during the
-// [SsaCodeMotion] phase on this code.
-
-class A {
-  final finalField;
-  var field = 2;
-  foo() {
-    new A().field = 42;
-  }
-
-  A._() : finalField = 42;
-  A() : finalField = [new A._(), new B(), new Object()][1];
-}
-
-class B {
-  foo() {}
-  bar() {}
-}
-
-main() {
-  var a = new A();
-  // Create a new block for SsaCodeMotion: the phase will want to move
-  // field access on [a] to this block.
-  if (true) {
-    var b = a.finalField;
-    var d = a.field;
-    b.bar();
-
-    // [c] gets GVN'ed with [b]. As a consequence, the type propagator
-    // that runs after GVN sees that [c] can only be a [B] because of
-    // the call to [bar].
-    var c = a.finalField;
-    c.foo();
-
-    // [e] does not get GVN'ed because the GVN phase sees [c.foo()] as
-    // having side effects.
-    var e = a.field;
-    if (d + e != 4) throw 'Test failed';
-  }
-}
diff --git a/tests/language/comparison_test.dart b/tests/language/comparison_test.dart
deleted file mode 100644
index 59d7005..0000000
--- a/tests/language/comparison_test.dart
+++ /dev/null
@@ -1,325 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing comparison operators.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static bool STRICT_EQ(a, b) {
-    return identical(a, b);
-  }
-
-  static bool STRICT_NE(a, b) {
-    return !identical(a, b);
-  }
-
-  static bool EQ(a, b) {
-    return a == b;
-  }
-
-  static bool NE(a, b) {
-    return a != b;
-  }
-
-  static bool LT(a, b) {
-    return a < b;
-  }
-
-  static bool LE(a, b) {
-    return a <= b;
-  }
-
-  static bool GT(a, b) {
-    return a > b;
-  }
-
-  static bool GE(a, b) {
-    return a >= b;
-  }
-}
-
-class A {
-  var b;
-
-  A(x) : b = x {}
-}
-
-class ComparisonTest {
-  static testMain() {
-    var a = new A(0);
-    var b = new A(1);
-    Expect.isTrue(Helper.STRICT_EQ(a, a));
-    Expect.isFalse(Helper.STRICT_EQ(a, b));
-    Expect.isFalse(Helper.STRICT_EQ(b, a));
-    Expect.isTrue(Helper.STRICT_EQ(b, b));
-
-    Expect.isFalse(Helper.STRICT_NE(a, a));
-    Expect.isTrue(Helper.STRICT_NE(a, b));
-    Expect.isTrue(Helper.STRICT_NE(b, a));
-    Expect.isFalse(Helper.STRICT_NE(b, b));
-
-    Expect.isTrue(Helper.STRICT_EQ(false, false));
-    Expect.isFalse(Helper.STRICT_EQ(false, true));
-    Expect.isFalse(Helper.STRICT_EQ(true, false));
-    Expect.isTrue(Helper.STRICT_EQ(true, true));
-
-    Expect.isFalse(Helper.STRICT_NE(false, false));
-    Expect.isTrue(Helper.STRICT_NE(false, true));
-    Expect.isTrue(Helper.STRICT_NE(true, false));
-    Expect.isFalse(Helper.STRICT_NE(true, true));
-
-    Expect.isTrue(Helper.STRICT_EQ(false, false));
-    Expect.isFalse(Helper.STRICT_EQ(false, true));
-    Expect.isFalse(Helper.STRICT_EQ(true, false));
-    Expect.isTrue(Helper.STRICT_EQ(true, true));
-
-    Expect.isFalse(Helper.STRICT_NE(false, false));
-    Expect.isTrue(Helper.STRICT_NE(false, true));
-    Expect.isTrue(Helper.STRICT_NE(true, false));
-    Expect.isFalse(Helper.STRICT_NE(true, true));
-
-    Expect.isTrue(Helper.EQ(false, false));
-    Expect.isFalse(Helper.EQ(false, true));
-    Expect.isFalse(Helper.EQ(true, false));
-    Expect.isTrue(Helper.EQ(true, true));
-
-    Expect.isFalse(Helper.NE(false, false));
-    Expect.isTrue(Helper.NE(false, true));
-    Expect.isTrue(Helper.NE(true, false));
-    Expect.isFalse(Helper.NE(true, true));
-
-    Expect.isTrue(Helper.STRICT_EQ(-1, -1));
-    Expect.isTrue(Helper.STRICT_EQ(0, 0));
-    Expect.isTrue(Helper.STRICT_EQ(1, 1));
-    Expect.isFalse(Helper.STRICT_EQ(-1, 0));
-    Expect.isFalse(Helper.STRICT_EQ(-1, 1));
-    Expect.isFalse(Helper.STRICT_EQ(0, 1));
-
-    Expect.isFalse(Helper.STRICT_NE(-1, -1));
-    Expect.isFalse(Helper.STRICT_NE(0, 0));
-    Expect.isFalse(Helper.STRICT_NE(1, 1));
-    Expect.isTrue(Helper.STRICT_NE(-1, 0));
-    Expect.isTrue(Helper.STRICT_NE(-1, 1));
-    Expect.isTrue(Helper.STRICT_NE(0, 1));
-
-    Expect.isTrue(Helper.EQ(-1, -1));
-    Expect.isTrue(Helper.EQ(0, 0));
-    Expect.isTrue(Helper.EQ(1, 1));
-    Expect.isFalse(Helper.EQ(-1, 0));
-    Expect.isFalse(Helper.EQ(-1, 1));
-    Expect.isFalse(Helper.EQ(0, 1));
-
-    Expect.isFalse(Helper.NE(-1, -1));
-    Expect.isFalse(Helper.NE(0, 0));
-    Expect.isFalse(Helper.NE(1, 1));
-    Expect.isTrue(Helper.NE(-1, 0));
-    Expect.isTrue(Helper.NE(-1, 1));
-    Expect.isTrue(Helper.NE(0, 1));
-
-    Expect.isFalse(Helper.LT(-1, -1));
-    Expect.isFalse(Helper.LT(0, 0));
-    Expect.isFalse(Helper.LT(1, 1));
-    Expect.isTrue(Helper.LT(-1, 0));
-    Expect.isTrue(Helper.LT(-1, 1));
-    Expect.isTrue(Helper.LT(0, 1));
-    Expect.isFalse(Helper.LT(0, -1));
-    Expect.isFalse(Helper.LT(1, -1));
-    Expect.isFalse(Helper.LT(1, 0));
-
-    Expect.isTrue(Helper.LE(-1, -1));
-    Expect.isTrue(Helper.LE(0, 0));
-    Expect.isTrue(Helper.LE(1, 1));
-    Expect.isTrue(Helper.LE(-1, 0));
-    Expect.isTrue(Helper.LE(-1, 1));
-    Expect.isTrue(Helper.LE(0, 1));
-    Expect.isFalse(Helper.LE(0, -1));
-    Expect.isFalse(Helper.LE(1, -1));
-    Expect.isFalse(Helper.LE(1, 0));
-
-    Expect.isFalse(Helper.GT(-1, -1));
-    Expect.isFalse(Helper.GT(0, 0));
-    Expect.isFalse(Helper.GT(1, 1));
-    Expect.isFalse(Helper.GT(-1, 0));
-    Expect.isFalse(Helper.GT(-1, 1));
-    Expect.isFalse(Helper.GT(0, 1));
-    Expect.isTrue(Helper.GT(0, -1));
-    Expect.isTrue(Helper.GT(1, -1));
-    Expect.isTrue(Helper.GT(1, 0));
-
-    Expect.isTrue(Helper.GE(-1, -1));
-    Expect.isTrue(Helper.GE(0, 0));
-    Expect.isTrue(Helper.GE(1, 1));
-    Expect.isFalse(Helper.GE(-1, 0));
-    Expect.isFalse(Helper.GE(-1, 1));
-    Expect.isFalse(Helper.GE(0, 1));
-    Expect.isTrue(Helper.GE(0, -1));
-    Expect.isTrue(Helper.GE(1, -1));
-    Expect.isTrue(Helper.GE(1, 0));
-
-    Expect.isTrue(Helper.STRICT_EQ(-1.0, -1.0));
-    Expect.isTrue(Helper.STRICT_EQ(0.0, 0.0));
-    Expect.isTrue(Helper.STRICT_EQ(1.0, 1.0));
-    Expect.isFalse(Helper.STRICT_EQ(-1.0, 0.0));
-    Expect.isFalse(Helper.STRICT_EQ(-1.0, 1.0));
-    Expect.isFalse(Helper.STRICT_EQ(0.0, 1.0));
-
-    Expect.isFalse(Helper.STRICT_NE(-1.0, -1.0));
-    Expect.isFalse(Helper.STRICT_NE(0.0, 0.0));
-    Expect.isFalse(Helper.STRICT_NE(1.0, 1.0));
-    Expect.isTrue(Helper.STRICT_NE(-1.0, 0.0));
-    Expect.isTrue(Helper.STRICT_NE(-1.0, 1.0));
-    Expect.isTrue(Helper.STRICT_NE(0.0, 1.0));
-
-    Expect.isTrue(Helper.EQ(-1.0, -1.0));
-    Expect.isTrue(Helper.EQ(0.0, 0.0));
-    Expect.isTrue(Helper.EQ(1.0, 1.0));
-    Expect.isFalse(Helper.EQ(-1.0, 0.0));
-    Expect.isFalse(Helper.EQ(-1.0, 1.0));
-    Expect.isFalse(Helper.EQ(0.0, 1.0));
-
-    Expect.isFalse(Helper.NE(-1.0, -1.0));
-    Expect.isFalse(Helper.NE(0.0, 0.0));
-    Expect.isFalse(Helper.NE(1.0, 1.0));
-    Expect.isTrue(Helper.NE(-1.0, 0.0));
-    Expect.isTrue(Helper.NE(-1.0, 1.0));
-    Expect.isTrue(Helper.NE(0.0, 1.0));
-
-    Expect.isFalse(Helper.LT(-1.0, -1.0));
-    Expect.isFalse(Helper.LT(0.0, 0.0));
-    Expect.isFalse(Helper.LT(1.0, 1.0));
-    Expect.isTrue(Helper.LT(-1.0, 0.0));
-    Expect.isTrue(Helper.LT(-1.0, 1.0));
-    Expect.isTrue(Helper.LT(0.0, 1.0));
-    Expect.isFalse(Helper.LT(0.0, -1.0));
-    Expect.isFalse(Helper.LT(1.0, -1.0));
-    Expect.isFalse(Helper.LT(1.0, 0.0));
-
-    Expect.isTrue(Helper.LE(-1.0, -1.0));
-    Expect.isTrue(Helper.LE(0.0, 0.0));
-    Expect.isTrue(Helper.LE(1.0, 1.0));
-    Expect.isTrue(Helper.LE(-1.0, 0.0));
-    Expect.isTrue(Helper.LE(-1.0, 1.0));
-    Expect.isTrue(Helper.LE(0.0, 1.0));
-    Expect.isFalse(Helper.LE(0.0, -1.0));
-    Expect.isFalse(Helper.LE(1.0, -1.0));
-    Expect.isFalse(Helper.LE(1.0, 0.0));
-
-    Expect.isFalse(Helper.GT(-1.0, -1.0));
-    Expect.isFalse(Helper.GT(0.0, 0.0));
-    Expect.isFalse(Helper.GT(1.0, 1.0));
-    Expect.isFalse(Helper.GT(-1.0, 0.0));
-    Expect.isFalse(Helper.GT(-1.0, 1.0));
-    Expect.isFalse(Helper.GT(0.0, 1.0));
-    Expect.isTrue(Helper.GT(0.0, -1.0));
-    Expect.isTrue(Helper.GT(1.0, -1.0));
-    Expect.isTrue(Helper.GT(1.0, 0.0));
-
-    Expect.isTrue(Helper.GE(-1.0, -1.0));
-    Expect.isTrue(Helper.GE(0.0, 0.0));
-    Expect.isTrue(Helper.GE(1.0, 1.0));
-    Expect.isFalse(Helper.GE(-1.0, 0.0));
-    Expect.isFalse(Helper.GE(-1.0, 1.0));
-    Expect.isFalse(Helper.GE(0.0, 1.0));
-    Expect.isTrue(Helper.GE(0.0, -1.0));
-    Expect.isTrue(Helper.GE(1.0, -1.0));
-    Expect.isTrue(Helper.GE(1.0, 0.0));
-
-    Expect.isTrue(Helper.EQ(null, null));
-    Expect.isFalse(Helper.EQ(null, "Str"));
-    Expect.isTrue(Helper.NE(null, 2));
-    Expect.isFalse(Helper.NE(null, null));
-
-    Expect.isTrue(Helper.STRICT_EQ(null, null));
-    Expect.isFalse(Helper.STRICT_EQ(null, "Str"));
-    Expect.isTrue(Helper.STRICT_NE(null, 2));
-    Expect.isFalse(Helper.STRICT_NE(null, null));
-
-    Expect.isFalse(Helper.GT(1, 1.2));
-    Expect.isTrue(Helper.GT(3, 1.2));
-    Expect.isTrue(Helper.GT(2.0, 1));
-    Expect.isFalse(Helper.GT(3.1, 4));
-
-    Expect.isFalse(Helper.GE(1, 1.2));
-    Expect.isTrue(Helper.GE(3, 1.2));
-    Expect.isTrue(Helper.GE(2.0, 1));
-    Expect.isFalse(Helper.GE(3.1, 4));
-    Expect.isTrue(Helper.GE(2.0, 2));
-    Expect.isTrue(Helper.GE(2, 2.0));
-
-    Expect.isTrue(Helper.LT(1, 1.2));
-    Expect.isFalse(Helper.LT(3, 1.2));
-    Expect.isFalse(Helper.LT(2.0, 1));
-    Expect.isTrue(Helper.LT(3.1, 4));
-
-    Expect.isTrue(Helper.LE(1, 1.2));
-    Expect.isFalse(Helper.LE(3, 1.2));
-    Expect.isFalse(Helper.LE(2.0, 1));
-    Expect.isTrue(Helper.LE(3.1, 4));
-    Expect.isTrue(Helper.LE(2.0, 2));
-    Expect.isTrue(Helper.LE(2, 2.0));
-
-    // Bignums.
-    Expect.isTrue(Helper.LE(0xF00000000005, 0xF00000000006));
-    Expect.isTrue(Helper.LE(0xF00000000005, 0xF00000000005));
-    Expect.isFalse(Helper.LE(0xF00000000006, 0xF00000000005));
-    Expect.isTrue(Helper.LE(12, 0xF00000000005));
-    Expect.isTrue(Helper.LE(12.2, 0xF00000000005));
-
-    Expect.isTrue(Helper.EQ(4294967295, 4.294967295e9));
-    Expect.isTrue(Helper.EQ(4.294967295e9, 4294967295));
-    Expect.isFalse(Helper.EQ(4.294967295e9, 42));
-    Expect.isFalse(Helper.EQ(42, 4.294967295e9));
-    Expect.isFalse(Helper.EQ(4294967295, 42));
-    Expect.isFalse(Helper.EQ(42, 4294967295));
-
-    // Fractions & mixed
-    Expect.isTrue(Helper.EQ(1.0, 1));
-    Expect.isTrue(Helper.EQ(1.0, 1));
-    Expect.isTrue(Helper.EQ(1, 1.0));
-    Expect.isTrue(Helper.EQ(1, 1.0));
-    Expect.isTrue(Helper.EQ(1.1, 1.1));
-    Expect.isTrue(Helper.EQ(1.1, 1.1));
-    Expect.isTrue(Helper.EQ(1.1, 1.1));
-
-    Expect.isFalse(Helper.GT(1, 1.2));
-    Expect.isTrue(Helper.GT(1.2, 1));
-    Expect.isTrue(Helper.GT(1.2, 1.1));
-    Expect.isTrue(Helper.GT(1.2, 1.1));
-    Expect.isTrue(Helper.GT(1.2, 1.1));
-
-    Expect.isTrue(Helper.LT(1, 1.2));
-    Expect.isFalse(Helper.LT(1.2, 1));
-    Expect.isFalse(Helper.LT(1.2, 1.1));
-    Expect.isFalse(Helper.LT(1.2, 1.1));
-    Expect.isFalse(Helper.LT(1.2, 1.1));
-
-    Expect.isFalse(Helper.GE(1.1, 1.2));
-    Expect.isFalse(Helper.GE(1.1, 1.2));
-    Expect.isTrue(Helper.GE(1.2, 1.2));
-    Expect.isTrue(Helper.GE(1.2, 1.2));
-
-    // With non-number classes.
-    Expect.isFalse(Helper.EQ(1, "eeny"));
-    Expect.isFalse(Helper.EQ("meeny", 1));
-    Expect.isFalse(Helper.EQ(1.1, "miny"));
-    Expect.isFalse(Helper.EQ("moe", 1.1));
-    Expect.isFalse(Helper.EQ(1.1, "catch"));
-    Expect.isFalse(Helper.EQ("the", 1.1));
-
-    // With null.
-    Expect.isFalse(Helper.EQ(1, null));
-    Expect.isFalse(Helper.EQ(null, 1));
-    Expect.isFalse(Helper.EQ(1.1, null));
-    Expect.isFalse(Helper.EQ(null, 1.1));
-    Expect.isFalse(Helper.EQ(1.1, null));
-    Expect.isFalse(Helper.EQ(null, 1.1));
-
-    // TODO(srdjan): Clarify behaviour of greater/less comparisons
-    // between numbers and non-numbers.
-  }
-}
-
-main() {
-  ComparisonTest.testMain();
-}
diff --git a/tests/language/compile_time_constant10_test.dart b/tests/language/compile_time_constant10_test.dart
deleted file mode 100644
index 387d4eb..0000000
--- a/tests/language/compile_time_constant10_test.dart
+++ /dev/null
@@ -1,110 +0,0 @@
-// 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";
-
-// Test that 'identical(a,b)' is a compile-time constant.
-
-class C {
-  final x;
-  const C(this.x);
-  static f3() {}
-  static f4() {}
-}
-
-const i1 = 1;
-const i2 = 2;
-const d1 = 1.5;
-const d2 = 2.5;
-const b1 = true;
-const b2 = false;
-const s1 = "1";
-const s2 = "2";
-const l1 = const [1, 2];
-const l2 = const [2, 3];
-const m1 = const {"x": 1};
-const m2 = const {"x": 2};
-const c1 = const C(1);
-const c2 = const C(2);
-f1() {}
-f2() {}
-const id = identical;
-
-class CT {
-  final x1;
-  final x2;
-  final bool id;
-  const CT(var x1, var x2)
-      : this.x1 = x1,
-        this.x2 = x2,
-        this.id = identical(x1, x2);
-  void test(void expect(a, b), name) {
-    expect(id, "$name: identical($x1,$x2)");
-  }
-}
-
-const trueTests = const [
-  const CT(2 - 1, i1),
-  const CT(1 + 1, i2),
-  const CT(2.5 - 1.0, d1),
-  const CT(1.5 + 1.0, d2),
-  const CT(false || true, b1),
-  const CT(true && false, b2),
-  const CT('$i1', s1),
-  const CT('$i2', s2),
-  const CT(const [i1, 2], l1),
-  const CT(const [i2, 3], l2),
-  const CT(const {"x": i1}, m1),
-  const CT(const {"x": i2}, m2),
-  const CT(const C(i1), c1),
-  const CT(const C(i2), c2),
-  const CT(f1, f1),
-  const CT(f2, f2),
-  const CT(C.f3, C.f3),
-  const CT(C.f4, C.f4),
-  const CT(id, identical),
-];
-
-const falseTests = const [
-  const CT(i1, i2),
-  const CT(d1, d2),
-  const CT(b1, b2),
-  const CT(s1, s2),
-  const CT(l1, l2),
-  const CT(m1, m2),
-  const CT(c1, c2),
-  const CT(f1, f2),
-  const CT(i1, d1),
-  const CT(d1, b1),
-  const CT(b1, s1),
-  const CT(s1, l1),
-  const CT(l1, m1),
-  const CT(m1, c1),
-  const CT(c1, f1),
-  const CT(f1, C.f3),
-  const CT(C.f3, identical),
-  const CT(identical, i1),
-];
-
-// Not a constant if it's not written 'identical'.
-const idtest = id(i1, i2); // //# 01: compile-time error
-
-// Not a constant if aliased? (Current interpretation, waiting for
-// confirmation).
-class T { //                                    //# 02: compile-time error
-  static const identical = id; //               //# 02: continued
-  static const idtest2 = identical(i1, i2); //  //# 02: continued
-} //                                            //# 02: continued
-
-main() {
-  for (int i = 0; i < trueTests.length; i++) {
-    trueTests[i].test(Expect.isTrue, "true[$i]");
-  }
-  for (int i = 0; i < falseTests.length; i++) {
-    falseTests[i].test(Expect.isFalse, "false[$i]");
-  }
-
-  var x = idtest; // //# 01: continued
-  var x = T.idtest2; // //# 02: continued
-}
diff --git a/tests/language/compile_time_constant11_test.dart b/tests/language/compile_time_constant11_test.dart
deleted file mode 100644
index 67ff3fe..0000000
--- a/tests/language/compile_time_constant11_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-// Check that conditional expression can be a compile-time constant.
-
-import "package:expect/expect.dart";
-
-const C1 = true;
-const C2 = false;
-
-const nephew = C1 ? C2 ? "Tick" : "Trick" : "Track";
-
-main() {
-  const a = true ? 5 : 10;
-  const b = C2 ? "Track" : C1 ? "Trick" : "Tick";
-
-  Expect.equals(5, a);
-  Expect.equals("Trick", nephew);
-  Expect.equals(nephew, b);
-  Expect.identical(nephew, b);
-  var s = const Symbol(nephew);
-  var msg = "Donald is $nephew's uncle.";
-  Expect.equals("Donald is Trick's uncle.", msg);
-}
diff --git a/tests/language/compile_time_constant12_test.dart b/tests/language/compile_time_constant12_test.dart
deleted file mode 100644
index 0acf8b0..0000000
--- a/tests/language/compile_time_constant12_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-const String s = "foo";
-const int i = s.length;
-const int l = "foo".length + 1;
-
-use(x) => x;
-
-main() {
-  use(s);
-  use(i);
-  use(l);
-}
diff --git a/tests/language/compile_time_constant13_test.dart b/tests/language/compile_time_constant13_test.dart
deleted file mode 100644
index 970e805..0000000
--- a/tests/language/compile_time_constant13_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2014, 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 {
-  final x; //      //# 01: ok
-  /// 02: compile-time error
-  var x; //        //# 03: compile-time error
-  get x => null; //# 04: compile-time error
-  set x(v) {} //   //# 05: compile-time error
-
-  const A()
-    : x = 'foo' // //# 01: continued
-    : x = 'foo' // //# 02: continued
-    : x = 'foo' // //# 03: continued
-    : x = 'foo' // //# 04: continued
-    : x = 'foo' // //# 05: continued
-  ;
-}
-
-use(x) => x;
-
-A a = const A();
-
-main() {
-  use(a);
-}
diff --git a/tests/language/compile_time_constant2_test.dart b/tests/language/compile_time_constant2_test.dart
deleted file mode 100644
index 132a93b..0000000
--- a/tests/language/compile_time_constant2_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// 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";
-
-const x = 19;
-const y = 3;
-const z = -5;
-const g1 = x + y;
-const g2 = x * y;
-const g3 = x / y;
-const g4 = x ~/ y;
-const g5 = x << y;
-const g6 = x >> y;
-const g7 = ~z;
-const g8 = -x;
-const g9 = x < y;
-const g10 = x <= y;
-const g11 = x <= x;
-const g12 = x > y;
-const g13 = x >= y;
-const g14 = x >= x;
-const g15 = x == y;
-const g16 = x == x;
-const g17 = x != y;
-const g18 = x != x;
-const g19 = x | y;
-const g20 = x & y;
-const g21 = x ^ y;
-const g22 = g1 + g2 + g4 + g5 + g6 + g7 + g8;
-const g23 = x % y;
-
-main() {
-  Expect.equals(22, g1);
-  Expect.equals(57, g2);
-  Expect.equals(6.333333333333333333333333333, g3);
-  Expect.equals(6, g4);
-  Expect.equals(152, g5);
-  Expect.equals(2, g6);
-  Expect.equals(4, g7);
-  Expect.equals(-19, g8);
-  Expect.equals(false, g9);
-  Expect.equals(false, g10);
-  Expect.equals(true, g11);
-  Expect.equals(true, g12);
-  Expect.equals(true, g13);
-  Expect.equals(true, g14);
-  Expect.equals(false, g15);
-  Expect.equals(true, g16);
-  Expect.equals(true, g17);
-  Expect.equals(false, g18);
-  Expect.equals(19, g19);
-  Expect.equals(3, g20);
-  Expect.equals(16, g21);
-  Expect.equals(224, g22);
-  Expect.equals(1, g23);
-}
diff --git a/tests/language/compile_time_constant3_test.dart b/tests/language/compile_time_constant3_test.dart
deleted file mode 100644
index 1723086..0000000
--- a/tests/language/compile_time_constant3_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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";
-
-const x = 19.5;
-const y = 3.3;
-const g1 = x + y;
-const g2 = x * y;
-const g3 = x / y;
-const g4 = x ~/ y;
-const g5 = -x;
-const g6 = x < y;
-const g7 = x <= y;
-const g8 = x <= x;
-const g9 = x > y;
-const g10 = x >= y;
-const g11 = x >= x;
-const g12 = x == y;
-const g13 = x == x;
-const g14 = x != y;
-const g15 = x != x;
-const g16 = g1 + g2 + g3 + g4 + g5;
-const g17 = x % y;
-
-main() {
-  Expect.equals(22.8, g1);
-  Expect.equals(64.35, g2);
-  Expect.equals(5.909090909090909, g3);
-  Expect.equals(5.0, g4);
-  Expect.equals(-19.5, g5);
-  Expect.equals(false, g6);
-  Expect.equals(false, g7);
-  Expect.equals(true, g8);
-  Expect.equals(true, g9);
-  Expect.equals(true, g10);
-  Expect.equals(true, g11);
-  Expect.equals(false, g12);
-  Expect.equals(true, g13);
-  Expect.equals(true, g14);
-  Expect.equals(false, g15);
-  Expect.equals(78.5590909090909, g16);
-  Expect.equals(3.000000000000001, g17);
-}
diff --git a/tests/language/compile_time_constant5_test.dart b/tests/language/compile_time_constant5_test.dart
deleted file mode 100644
index 5136b29..0000000
--- a/tests/language/compile_time_constant5_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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";
-
-const x = true;
-const g1 = !true;
-const g2 = !g1;
-
-main() {
-  Expect.equals(false, g1);
-  Expect.equals(true, g2);
-}
diff --git a/tests/language/compile_time_constant6_test.dart b/tests/language/compile_time_constant6_test.dart
deleted file mode 100644
index b30b2b6..0000000
--- a/tests/language/compile_time_constant6_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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";
-
-const g1 = true;
-const g2 = 499;
-const g3 = "foo";
-const g4 = 3.3;
-const g5 = g1 == g2;
-const g6 = g1 == g3;
-const g7 = g1 == g4;
-const g8 = g2 == g3;
-const g9 = g2 == g4;
-const g10 = g3 == g4;
-const g11 = g1 == g1;
-const g12 = g2 == g2;
-const g13 = g3 == g3;
-const g14 = g4 == g4;
-
-main() {
-  Expect.isFalse(g5);
-  Expect.isFalse(g6);
-  Expect.isFalse(g7);
-  Expect.isFalse(g8);
-  Expect.isFalse(g9);
-  Expect.isFalse(g10);
-  Expect.isTrue(g11);
-  Expect.isTrue(g12);
-  Expect.isTrue(g13);
-  Expect.isTrue(g14);
-}
diff --git a/tests/language/compile_time_constant7_test.dart b/tests/language/compile_time_constant7_test.dart
deleted file mode 100644
index 4780b47..0000000
--- a/tests/language/compile_time_constant7_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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";
-
-class A {
-  const A();
-  toString() => "a";
-}
-
-const a = const A();
-
-main() {
-  Expect.equals("a", a.toString());
-}
diff --git a/tests/language/compile_time_constant8_test.dart b/tests/language/compile_time_constant8_test.dart
deleted file mode 100644
index 9e1172e..0000000
--- a/tests/language/compile_time_constant8_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-class A<T> {
-  const A();
-  toString() => "a";
-}
-
-const a = const A<int>();
-const b = const A<double>();
-
-const list1 = const <int>[1, 2];
-const list2 = const [1, 2];
-main() {
-  Expect.isFalse(identical(a, b));
-  Expect.isFalse(identical(list1, list2));
-}
diff --git a/tests/language/compile_time_constant9_test.dart b/tests/language/compile_time_constant9_test.dart
deleted file mode 100644
index 96cf41a..0000000
--- a/tests/language/compile_time_constant9_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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";
-
-class B {
-  const B();
-}
-
-class A {
-  var x = const B();
-  A();
-}
-
-main() {
-  Expect.isTrue(identical(new A().x, new A().x));
-}
diff --git a/tests/language/compile_time_constant_a_test.dart b/tests/language/compile_time_constant_a_test.dart
deleted file mode 100644
index 63174a1..0000000
--- a/tests/language/compile_time_constant_a_test.dart
+++ /dev/null
@@ -1,122 +0,0 @@
-// 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";
-
-const m1 = const {'a': 400 + 99};
-const m2 = const {'a': 499, 'b': 42};
-const m3 = const {'m1': m1, 'm2': m2};
-const m4 = const {'z': 9, 'a': 8, 'm': 7};
-const m5 = const {'': 499};
-const m6 = const {'a': 499};
-const m7 = const {};
-
-bool isUnsupportedError(o) => o is UnsupportedError;
-
-main() {
-  Expect.equals(499, m1['a']);
-  Expect.equals(null, m1['b']);
-  Expect.listEquals(['a'], m1.keys.toList());
-  Expect.listEquals([499], m1.values.toList());
-  Expect.isTrue(m1.containsKey('a'));
-  Expect.isFalse(m1.containsKey('toString'));
-  Expect.isTrue(m1.containsValue(499));
-  Expect.isFalse(m1.containsValue(42));
-  Expect.isFalse(m1.containsValue(null));
-  var seenKeys = [];
-  var seenValues = [];
-  m1.forEach((key, value) {
-    seenKeys.add(key);
-    seenValues.add(value);
-  });
-  Expect.listEquals(['a'], seenKeys);
-  Expect.listEquals([499], seenValues);
-  Expect.isFalse(m1.isEmpty);
-  Expect.equals(1, m1.length);
-  Expect.throws(() => m1.remove('a'), isUnsupportedError);
-  Expect.throws(() => m1.remove('b'), isUnsupportedError);
-  Expect.throws(() => m1.clear(), isUnsupportedError);
-  Expect.throws(() => m1['b'] = 42, isUnsupportedError);
-  Expect.throws(() => m1['a'] = 499, isUnsupportedError);
-  Expect.throws(() => m1.putIfAbsent('a', () => 499), isUnsupportedError);
-  Expect.throws(() => m1.putIfAbsent('z', () => 499), isUnsupportedError);
-
-  Expect.equals(499, m2['a']);
-  Expect.equals(42, m2['b']);
-  Expect.equals(null, m2['c']);
-  Expect.listEquals(['a', 'b'], m2.keys.toList());
-  Expect.listEquals([499, 42], m2.values.toList());
-  Expect.isTrue(m2.containsKey('a'));
-  Expect.isTrue(m2.containsKey('b'));
-  Expect.isFalse(m2.containsKey('toString'));
-  Expect.isTrue(m2.containsValue(499));
-  Expect.isTrue(m2.containsValue(42));
-  Expect.isFalse(m2.containsValue(99));
-  Expect.isFalse(m2.containsValue(null));
-  seenKeys = [];
-  seenValues = [];
-  m2.forEach((key, value) {
-    seenKeys.add(key);
-    seenValues.add(value);
-  });
-  Expect.listEquals(['a', 'b'], seenKeys);
-  Expect.listEquals([499, 42], seenValues);
-  Expect.isFalse(m2.isEmpty);
-  Expect.equals(2, m2.length);
-  Expect.throws(() => m2.remove('a'), isUnsupportedError);
-  Expect.throws(() => m2.remove('b'), isUnsupportedError);
-  Expect.throws(() => m2.remove('c'), isUnsupportedError);
-  Expect.throws(() => m2.clear(), isUnsupportedError);
-  Expect.throws(() => m2['a'] = 499, isUnsupportedError);
-  Expect.throws(() => m2['b'] = 42, isUnsupportedError);
-  Expect.throws(() => m2['c'] = 499, isUnsupportedError);
-  Expect.throws(() => m2.putIfAbsent('a', () => 499), isUnsupportedError);
-  Expect.throws(() => m2.putIfAbsent('z', () => 499), isUnsupportedError);
-  Expect.throws(() => m2['a'] = 499, isUnsupportedError);
-
-  Expect.identical(m3['m1'], m1);
-  Expect.identical(m3['m2'], m2);
-
-  Expect.listEquals(['z', 'a', 'm'], m4.keys.toList());
-  Expect.listEquals([9, 8, 7], m4.values.toList());
-  seenKeys = [];
-  seenValues = [];
-  m4.forEach((key, value) {
-    seenKeys.add(key);
-    seenValues.add(value);
-  });
-  Expect.listEquals(['z', 'a', 'm'], seenKeys);
-  Expect.listEquals([9, 8, 7], seenValues);
-
-  Expect.equals(499, m5['']);
-  Expect.isTrue(m5.containsKey(''));
-  Expect.equals(1, m5.length);
-
-  Expect.identical(m1, m6);
-
-  Expect.isTrue(m7.isEmpty);
-  Expect.equals(0, m7.length);
-  Expect.equals(null, m7['b']);
-  Expect.listEquals([], m7.keys.toList());
-  Expect.listEquals([], m7.values.toList());
-  Expect.isFalse(m7.containsKey('a'));
-  Expect.isFalse(m7.containsKey('toString'));
-  Expect.isFalse(m7.containsValue(499));
-  Expect.isFalse(m7.containsValue(null));
-  seenKeys = [];
-  seenValues = [];
-  m7.forEach((key, value) {
-    seenKeys.add(key);
-    seenValues.add(value);
-  });
-  Expect.listEquals([], seenKeys);
-  Expect.listEquals([], seenValues);
-  Expect.throws(() => m7.remove('a'), isUnsupportedError);
-  Expect.throws(() => m7.remove('b'), isUnsupportedError);
-  Expect.throws(() => m7.clear(), isUnsupportedError);
-  Expect.throws(() => m7['b'] = 42, isUnsupportedError);
-  Expect.throws(() => m7['a'] = 499, isUnsupportedError);
-  Expect.throws(() => m7.putIfAbsent('a', () => 499), isUnsupportedError);
-  Expect.throws(() => m7.putIfAbsent('z', () => 499), isUnsupportedError);
-}
diff --git a/tests/language/compile_time_constant_arguments_test.dart b/tests/language/compile_time_constant_arguments_test.dart
deleted file mode 100644
index 891457c..0000000
--- a/tests/language/compile_time_constant_arguments_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-class A {
-  const A(a);
-  const A.named({a: 42});
-  const A.optional([a]);
-}
-
-main() {
-  const A(1);
-  const A(); //# 01: compile-time error, static type warning
-  const A(1, 2); //# 02: compile-time error, static type warning
-  const A.named();
-  const A.named(b: 1); //# 03: compile-time error, static type warning
-  const A.named(a: 1, a: 2); //# 04: compile-time error, static type warning
-  const A.named(a: 1, b: 2); //# 05: compile-time error, static type warning
-  const A.optional();
-  const A.optional(42);
-  const A.optional(42, 54); //# 06: compile-time error, static type warning
-}
diff --git a/tests/language/compile_time_constant_b_test.dart b/tests/language/compile_time_constant_b_test.dart
deleted file mode 100644
index 575ed56..0000000
--- a/tests/language/compile_time_constant_b_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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";
-
-const m1 = const {'__proto__': 400 + 99};
-const m2 = const {'a': 499, 'b': 42};
-const m3 = const {'__proto__': 499};
-
-bool isUnsupportedError(o) => o is UnsupportedError;
-
-main() {
-  Expect.equals(499, m1['__proto__']);
-  Expect.equals(null, m1['b']);
-  Expect.listEquals(['__proto__'], m1.keys.toList());
-  Expect.listEquals([499], m1.values.toList());
-  Expect.isTrue(m1.containsKey('__proto__'));
-  Expect.isFalse(m1.containsKey('toString'));
-  Expect.isTrue(m1.containsValue(499));
-  Expect.isFalse(m1.containsValue(null));
-  var seenKeys = [];
-  var seenValues = [];
-  m1.forEach((key, value) {
-    seenKeys.add(key);
-    seenValues.add(value);
-  });
-  Expect.listEquals(['__proto__'], seenKeys);
-  Expect.listEquals([499], seenValues);
-  Expect.isFalse(m1.isEmpty);
-  Expect.equals(1, m1.length);
-  Expect.throws(() => m1.remove('__proto__'), isUnsupportedError);
-  Expect.throws(() => m1.remove('b'), isUnsupportedError);
-  Expect.throws(() => m1.clear(), isUnsupportedError);
-  Expect.throws(() => m1['b'] = 42, isUnsupportedError);
-  Expect.throws(() => m1['__proto__'] = 499, isUnsupportedError);
-  Expect.throws(
-      () => m1.putIfAbsent('__proto__', () => 499), isUnsupportedError);
-  Expect.throws(() => m1.putIfAbsent('z', () => 499), isUnsupportedError);
-
-  Expect.equals(499, m2['a']);
-  Expect.equals(42, m2['b']);
-  Expect.equals(null, m2['c']);
-  Expect.equals(null, m2['__proto__']);
-  Expect.listEquals(['a', 'b'], m2.keys.toList());
-  Expect.listEquals([499, 42], m2.values.toList());
-  Expect.isTrue(m2.containsKey('a'));
-  Expect.isTrue(m2.containsKey('b'));
-  Expect.isFalse(m2.containsKey('toString'));
-  Expect.isFalse(m2.containsKey('__proto__'));
-  Expect.isTrue(m2.containsValue(499));
-  Expect.isTrue(m2.containsValue(42));
-  Expect.isFalse(m2.containsValue(null));
-  seenKeys = [];
-  seenValues = [];
-  m2.forEach((key, value) {
-    seenKeys.add(key);
-    seenValues.add(value);
-  });
-  Expect.listEquals(['a', 'b'], seenKeys);
-  Expect.listEquals([499, 42], seenValues);
-  Expect.isFalse(m2.isEmpty);
-  Expect.equals(2, m2.length);
-  Expect.throws(() => m2.remove('a'), isUnsupportedError);
-  Expect.throws(() => m2.remove('b'), isUnsupportedError);
-  Expect.throws(() => m2.remove('__proto__'), isUnsupportedError);
-  Expect.throws(() => m2.clear(), isUnsupportedError);
-  Expect.throws(() => m2['a'] = 499, isUnsupportedError);
-  Expect.throws(() => m2['b'] = 42, isUnsupportedError);
-  Expect.throws(() => m2['__proto__'] = 499, isUnsupportedError);
-  Expect.throws(() => m2.putIfAbsent('a', () => 499), isUnsupportedError);
-  Expect.throws(
-      () => m2.putIfAbsent('__proto__', () => 499), isUnsupportedError);
-  Expect.throws(() => m2['a'] = 499, isUnsupportedError);
-
-  Expect.isTrue(identical(m1, m3));
-}
diff --git a/tests/language/compile_time_constant_c_test.dart b/tests/language/compile_time_constant_c_test.dart
deleted file mode 100644
index 3ebc2e7..0000000
--- a/tests/language/compile_time_constant_c_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-const m0 = const {499: 400 + 99};
-const m1 = const {
-  "foo" + "bar": 42 //           //# 01: ok
-};
-const m2 = const {
-  "foo" * 4: 42 //               //# 02: compile-time error
-};
-const m3 = const {
-  "foo".codeUnitAt(0): 42 //     //# 03: compile-time error
-};
-
-use(x) => x;
-
-main() {
-  use(m0);
-  use(m1);
-  use(m2);
-  use(m3);
-}
diff --git a/tests/language/compile_time_constant_checked2_test.dart b/tests/language/compile_time_constant_checked2_test.dart
deleted file mode 100644
index 3a9a55e..0000000
--- a/tests/language/compile_time_constant_checked2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-class A {
-  final int x;
-  const A.a1() : x = 'foo'; //# 01: continued
-  const A.a2(this.x);
-  const A.a3([this.x = 'foo']); //# 03: continued
-  const A.a4(String this.x); //# 04: continued
-  const A.a5(String x) : this.x = x; //# 05: continued
-  const A.a6(int x) : this.x = x;
-}
-
-const a1 = const A.a1(); //# 01: static type warning, checked mode compile-time error
-const a2 = const A.a2('foo'); //# 02: static type warning, checked mode compile-time error
-const a3 = const A.a3(); //# 03: static type warning, checked mode compile-time error
-const a4 = const A.a4('foo'); //# 04: static type warning, checked mode compile-time error
-const a5 = const A.a5('foo'); //# 05: static type warning, checked mode compile-time error
-const a6 = const A.a6('foo'); //# 06: static type warning, checked mode compile-time error
-
-main() {
-  print(a1); //# 01: continued
-  print(a2); //# 02: continued
-  print(a3); //# 03: continued
-  print(a4); //# 04: continued
-  print(a5); //# 05: continued
-  print(a6); //# 06: continued
-}
diff --git a/tests/language/compile_time_constant_checked3_test.dart b/tests/language/compile_time_constant_checked3_test.dart
deleted file mode 100644
index 8b9e04c..0000000
--- a/tests/language/compile_time_constant_checked3_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-class A {
-  final int x;
-  const A.a1() : x = 'foo'; //# 01: continued
-  const A.a2(this.x);
-  const A.a3([this.x = 'foo']); //# 03: continued
-  const A.a4(String this.x); //# 04: continued
-  const A.a5(String x) : this.x = x; //# 05: continued
-  const A.a6(int x) : this.x = x;
-}
-
-var a1 = const A.a1(); //# 01: static type warning, checked mode compile-time error
-var a2 = const A.a2('foo'); //# 02: static type warning, checked mode compile-time error
-var a3 = const A.a3(); //# 03: static type warning, checked mode compile-time error
-var a4 = const A.a4('foo'); //# 04: static type warning, checked mode compile-time error
-var a5 = const A.a5('foo'); //# 05: static type warning, checked mode compile-time error
-var a6 = const A.a6('foo'); //# 06: static type warning, checked mode compile-time error
-
-main() {
-  print(a1); //# 01: continued
-  print(a2); //# 02: continued
-  print(a3); //# 03: continued
-  print(a4); //# 04: continued
-  print(a5); //# 05: continued
-  print(a6); //# 06: continued
-}
diff --git a/tests/language/compile_time_constant_checked4_test.dart b/tests/language/compile_time_constant_checked4_test.dart
deleted file mode 100644
index 5f6226e..0000000
--- a/tests/language/compile_time_constant_checked4_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2014, 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 {
-  final _x;
-  const A.a1(
-    String //# 01: checked mode compile-time error, static type warning
-      x)
-      : this.a2(x);
-  const A.a2(
-    String //# 02: checked mode compile-time error
-      x)
-      : this.a3(x);
-  const A.a3(
-    String //# 03: checked mode compile-time error
-      x)
-      : _x = x;
-}
-
-use(x) => x;
-
-main() {
-  use(const A.a1(0));
-}
diff --git a/tests/language/compile_time_constant_checked5_test.dart b/tests/language/compile_time_constant_checked5_test.dart
deleted file mode 100644
index d370dd2..0000000
--- a/tests/language/compile_time_constant_checked5_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2014, 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 {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-class C extends A {
-  const C();
-  const factory C.d() = D;
-}
-
-class D extends B implements C {
-  const D();
-}
-
-class Test1 {
-  final A x = const A(); //# 01: ok
-  final A x = const B(); //# 02: ok
-  final B x = const A(); //# 03: checked mode compile-time error
-  final B x = const C(); //# 04: checked mode compile-time error, static type warning
-  final B x = const C.d(); //# 05: static type warning
-  const Test1();
-}
-
-// Will be instantiated with U=A and V=B.
-class Test2<U, V> {
-  final U x = const A(); //# 06: static type warning
-  final U x = const B(); //# 07: static type warning
-  final V x = const A(); //# 08: checked mode compile-time error, static type warning
-  final V x = const C(); //# 09: checked mode compile-time error, static type warning
-  final V x = const C.d(); //# 10: static type warning
-  const Test2();
-}
-
-// Will be instantiated with U=A and V=B.
-class Test3<U extends A, V extends B> {
-  final U x = const A(); //# 11: ok
-  final U x = const B(); //# 12: static type warning
-  final V x = const A(); //# 13: checked mode compile-time error
-  final V x = const C(); //# 14: checked mode compile-time error, static type warning
-  final V x = const C.d(); //# 15: static type warning
-  const Test3();
-}
-
-// Will be instantiated with U=A and V=B.
-class Test4<U extends A, V extends A> {
-  final U x = const A(); //# 16: ok
-  final U x = const B(); //# 17: static type warning
-  final V x = const A(); //# 18: checked mode compile-time error
-  final V x = const C(); //# 19: checked mode compile-time error, static type warning
-  final V x = const C.d(); //# 20: static type warning
-  const Test4();
-}
-
-// Will be instantiated with U=dynamic and V=dynamic.
-class Test5<U extends A, V extends B> {
-  final U x = const A(); //# 21: ok
-  final U x = const B(); //# 22: static type warning
-  final V x = const A(); //# 23: ok
-  final V x = const C(); //# 24: static type warning
-  final V x = const C.d(); //# 25: static type warning
-  const Test5();
-}
-
-use(x) => x;
-
-main() {
-  use(const Test1());
-  use(const Test2<A, B>());
-  use(const Test3<A, B>());
-  use(const Test4<A, B>());
-  use(const Test5());
-}
diff --git a/tests/language/compile_time_constant_checked_test.dart b/tests/language/compile_time_constant_checked_test.dart
deleted file mode 100644
index bff157e..0000000
--- a/tests/language/compile_time_constant_checked_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-final int x = 'foo'; //# 01: static type warning, dynamic type error
-const int y = 'foo'; //# 02: static type warning, checked mode compile-time error
-int z = 'foo'; //# 03: static type warning, dynamic type error
-
-main() {
-  print(x); //# 01: continued
-  print(y); //# 02: continued
-  print(z); //# 03: continued
-}
diff --git a/tests/language/compile_time_constant_d_test.dart b/tests/language/compile_time_constant_d_test.dart
deleted file mode 100644
index e00c822..0000000
--- a/tests/language/compile_time_constant_d_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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";
-
-class A {
-  final x;
-  final y;
-  final z;
-  final t;
-
-  const A(this.z, tt)
-      : y = 499,
-        t = tt,
-        x = 3;
-  const A.named(z, this.t)
-      : y = 400 + z,
-        this.z = z,
-        x = 3;
-  const A.named2(t, z, y, x)
-      : x = t,
-        y = z,
-        z = y,
-        t = x;
-
-  toString() => "A $x $y $z $t";
-}
-
-const a1 = const A(99, 100);
-const a2 = const A.named(99, 100);
-const a3 = const A.named2(1, 2, 3, 4);
-
-main() {
-  Expect.equals(3, a1.x);
-  Expect.equals(499, a1.y);
-  Expect.equals(99, a1.z);
-  Expect.equals(100, a1.t);
-  Expect.equals("A 3 499 99 100", a1.toString());
-
-  Expect.isTrue(identical(a1, a2));
-
-  Expect.equals(1, a3.x);
-  Expect.equals(2, a3.y);
-  Expect.equals(3, a3.z);
-  Expect.equals(4, a3.t);
-  Expect.equals("A 1 2 3 4", a3.toString());
-}
diff --git a/tests/language/compile_time_constant_e_test.dart b/tests/language/compile_time_constant_e_test.dart
deleted file mode 100644
index f7d4e18..0000000
--- a/tests/language/compile_time_constant_e_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// 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";
-
-class A {
-  final x;
-  final y;
-  final z;
-  final t;
-
-  const A([this.z = 99, tt = 100])
-      : y = 499,
-        t = tt,
-        x = 3;
-  const A.n({this.z: 99, tt: 100})
-      : y = 499,
-        t = tt,
-        x = 3;
-  const A.named({z, this.t})
-      : y = 400 + z,
-        this.z = z,
-        x = 3;
-  const A.named2({t, z, y, x})
-      : x = t,
-        y = z,
-        z = y,
-        t = x;
-
-  toString() => "A $x $y $z $t";
-}
-
-const a1 = const A(99, 100);
-const a2 = const A.named(z: 99, t: 100);
-const a3 = const A.named2(t: 1, z: 2, y: 3, x: 4);
-const a4 = const A();
-const a5 = const A(99, 100);
-const a5n = const A.n(tt: 100, z: 99);
-const a6 = const A(1, 2);
-const a6n = const A.n(z: 1, tt: 2);
-const a7 = const A.named(z: 7);
-const a8 = const A.named2();
-const a9 = const A.named2(x: 4, y: 3, z: 2, t: 1);
-const a10 = const A.named2(x: 1, y: 2, z: 3, t: 4);
-
-main() {
-  Expect.equals(3, a1.x);
-  Expect.equals(499, a1.y);
-  Expect.equals(99, a1.z);
-  Expect.equals(100, a1.t);
-  Expect.equals("A 3 499 99 100", a1.toString());
-  Expect.isTrue(identical(a1, a2));
-  Expect.isTrue(identical(a1, a4));
-  Expect.isTrue(identical(a1, a5));
-
-  Expect.equals(1, a3.x);
-  Expect.equals(2, a3.y);
-  Expect.equals(3, a3.z);
-  Expect.equals(4, a3.t);
-  Expect.equals("A 1 2 3 4", a3.toString());
-
-  Expect.equals(3, a6.x);
-  Expect.equals(499, a6.y);
-  Expect.equals(1, a6.z);
-  Expect.equals(2, a6.t);
-  Expect.equals("A 3 499 1 2", a6.toString());
-
-  Expect.equals(3, a7.x);
-  Expect.equals(407, a7.y);
-  Expect.equals(7, a7.z);
-  Expect.equals(null, a7.t);
-  Expect.equals("A 3 407 7 null", a7.toString());
-
-  Expect.equals(null, a8.x);
-  Expect.equals(null, a8.y);
-  Expect.equals(null, a8.y);
-  Expect.equals(null, a8.t);
-  Expect.equals("A null null null null", a8.toString());
-
-  Expect.isTrue(identical(a3, a9));
-
-  Expect.equals(4, a10.x);
-  Expect.equals(3, a10.y);
-  Expect.equals(2, a10.z);
-  Expect.equals(1, a10.t);
-  Expect.equals("A 4 3 2 1", a10.toString());
-}
diff --git a/tests/language/compile_time_constant_f_test.dart b/tests/language/compile_time_constant_f_test.dart
deleted file mode 100644
index 21c215e..0000000
--- a/tests/language/compile_time_constant_f_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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";
-
-class A {
-  final x;
-  const A(this.x);
-  const A.named([this.x]);
-  const A.named2([this.x = 2]);
-}
-
-const a1 = const A(0);
-const a2 = const A.named();
-const a3 = const A.named(1);
-const a4 = const A.named2();
-const a5 = const A.named2(3);
-
-main() {
-  Expect.equals(0, a1.x);
-  Expect.equals(null, a2.x);
-  Expect.equals(1, a3.x);
-  Expect.equals(2, a4.x);
-  Expect.equals(3, a5.x);
-}
diff --git a/tests/language/compile_time_constant_g_test.dart b/tests/language/compile_time_constant_g_test.dart
deleted file mode 100644
index 1be8936..0000000
--- a/tests/language/compile_time_constant_g_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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";
-
-class A {
-  final x;
-  const A(this.x);
-  const A.named([this.x]);
-  const A.named2([this.x = 2]);
-}
-
-class B extends A {
-  const B(x) : super(x + 10);
-  const B.named_() : super.named();
-  const B.named(x) : super.named(x + 10);
-  const B.named2_() : super.named2();
-  const B.named2(x) : super.named2(x + 10);
-}
-
-const b1 = const B(0);
-const b2 = const B.named_();
-const b3 = const B.named(1);
-const b4 = const B.named2_();
-const b5 = const B.named2(3);
-
-main() {
-  Expect.equals(10, b1.x);
-  Expect.equals(null, b2.x);
-  Expect.equals(11, b3.x);
-  Expect.equals(2, b4.x);
-  Expect.equals(13, b5.x);
-}
diff --git a/tests/language/compile_time_constant_h_test.dart b/tests/language/compile_time_constant_h_test.dart
deleted file mode 100644
index 3409882..0000000
--- a/tests/language/compile_time_constant_h_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-class A implements B {
-  final x;
-  const A(this.x);
-}
-
-abstract class B {
-  const factory B(x) = A;
-}
-
-const b1 = const B(499);
-
-main() {
-  Expect.equals(499, b1.x);
-}
diff --git a/tests/language/compile_time_constant_i_test.dart b/tests/language/compile_time_constant_i_test.dart
deleted file mode 100644
index e802356..0000000
--- a/tests/language/compile_time_constant_i_test.dart
+++ /dev/null
@@ -1,113 +0,0 @@
-// 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";
-
-class A {
-  final x;
-  const A(this.x);
-  const A.redirect(x) : this(x + 1);
-  const A.optional([this.x = 5]);
-}
-
-class B extends A {
-  const B(x, this.y) : super(x);
-  const B.redirect(x, y) : this(x + 22, y + 22);
-  const B.redirect2(x, y) : this.redirect3(x + 122, y + 122);
-  const B.redirect3(x, y)
-      : this.y = y,
-        super.redirect(x);
-  const B.optional(x, [this.y]) : super(x);
-  const B.optional2([x, this.y]) : super(x);
-  final y;
-}
-
-class C extends B {
-  const C(x, y, this.z) : super(x, y);
-  const C.redirect(x, y, z) : this(x + 33, y + 33, z + 33);
-  const C.redirect2(x, y, z) : this.redirect3(x + 333, y + 333, z + 333);
-  const C.redirect3(x, y, z)
-      : this.z = z,
-        super.redirect2(x, y);
-  const C.optional(x, [y, this.z]) : super(x, y);
-  const C.optional2([x, y, z])
-      : this.z = z,
-        super(x, y);
-  const C.optional3([this.z]) : super.optional2();
-  final z;
-}
-
-const a1 = const A(499);
-const a2 = const A.redirect(10499);
-const a3 = const A.optional();
-const a1b = const A.redirect(498);
-const a3b = const A(5);
-
-const b1 = const B(99499, -99499);
-const b2 = const B.redirect(1234, 5678);
-const b3 = const B.redirect2(112233, 556677);
-const b4 = const B.redirect3(332211, 776655);
-const b5 = const B.optional(43526);
-const b6 = const B.optional2(8642, 9753);
-const b3b = const B(112233 + 122 + 1, 556677 + 122);
-const b6b = const B(8642, 9753);
-
-const c1 = const C(121, 232, 343);
-const c2 = const C.redirect(12321, 23432, 34543);
-const c3 = const C.redirect2(32123, 43234, 54345);
-const c4 = const C.redirect3(313, 424, 535);
-const c5 = const C.optional(191, 181, 171);
-const c6 = const C.optional(-191);
-const c7 = const C.optional2();
-const c8 = const C.optional3(9911);
-const c3b = const C(32123 + 333 + 122 + 1, 43234 + 333 + 122, 54345 + 333);
-
-main() {
-  Expect.equals(499, a1.x);
-  Expect.equals(10500, a2.x);
-  Expect.equals(5, a3.x);
-  Expect.identical(a1, a1b);
-  Expect.identical(a3, a3b);
-
-  Expect.equals(99499, b1.x);
-  Expect.equals(-99499, b1.y);
-  Expect.equals(1256, b2.x);
-  Expect.equals(5700, b2.y);
-  Expect.equals(112233 + 122 + 1, b3.x);
-  Expect.equals(556677 + 122, b3.y);
-  Expect.equals(332211 + 1, b4.x);
-  Expect.equals(776655, b4.y);
-  Expect.equals(43526, b5.x);
-  Expect.equals(null, b5.y);
-  Expect.equals(8642, b6.x);
-  Expect.equals(9753, b6.y);
-  Expect.identical(b3, b3b);
-  Expect.identical(b6, b6b);
-
-  Expect.equals(121, c1.x);
-  Expect.equals(232, c1.y);
-  Expect.equals(343, c1.z);
-  Expect.equals(12321 + 33, c2.x);
-  Expect.equals(23432 + 33, c2.y);
-  Expect.equals(34543 + 33, c2.z);
-  Expect.equals(32123 + 333 + 122 + 1, c3.x);
-  Expect.equals(43234 + 333 + 122, c3.y);
-  Expect.equals(54345 + 333, c3.z);
-  Expect.equals(313 + 122 + 1, c4.x);
-  Expect.equals(424 + 122, c4.y);
-  Expect.equals(535, c4.z);
-  Expect.equals(191, c5.x);
-  Expect.equals(181, c5.y);
-  Expect.equals(171, c5.z);
-  Expect.equals(-191, c6.x);
-  Expect.equals(null, c6.y);
-  Expect.equals(null, c6.z);
-  Expect.equals(null, c7.x);
-  Expect.equals(null, c7.y);
-  Expect.equals(null, c7.z);
-  Expect.equals(null, c8.x);
-  Expect.equals(null, c8.y);
-  Expect.equals(9911, c8.z);
-  Expect.identical(c3, c3b);
-}
diff --git a/tests/language/compile_time_constant_j_test.dart b/tests/language/compile_time_constant_j_test.dart
deleted file mode 100644
index 8a5ed24..0000000
--- a/tests/language/compile_time_constant_j_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-class A {
-  final field;
-  const A() : field = 499;
-}
-
-const x = (((1 + 2)));
-const y = (((((x)))));
-const z = (((const A())));
-
-main() {
-  Expect.equals(3, x);
-  Expect.equals(3, y);
-  Expect.equals(499, z.field);
-}
diff --git a/tests/language/compile_time_constant_k_test.dart b/tests/language/compile_time_constant_k_test.dart
deleted file mode 100644
index 63cfdca..0000000
--- a/tests/language/compile_time_constant_k_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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";
-
-const x = const {
-  'a': 3, // //# 01: static type warning
-  'a': 4
-};
-const y = const { 'a': 10, 'b': 11, 'a': 12, // //# 02: static type warning
-                  'b': 13, 'a': 14 }; //        //# 02: continued
-const z = const {
-  '__proto__': 496, // //# 03: static type warning
-  '__proto__': 497, // //# 03: continued
-  '__proto__': 498, // //# 03: continued
-  '__proto__': 499
-};
-
-const x2 = const {'a': 4};
-const y2 = const {'a': 14, 'b': 13};
-const z2 = const {'__proto__': 499};
-
-main() {
-  Expect.identical(x2, x);
-  Expect.identical(y2, y); // //# 02: continued
-  Expect.identical(z2, z);
-}
diff --git a/tests/language/compile_time_constant_l_test.dart b/tests/language/compile_time_constant_l_test.dart
deleted file mode 100644
index 1f6bc50..0000000
--- a/tests/language/compile_time_constant_l_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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";
-
-class A {
-  final x;
-  const A([x = 499]) : this.x = x;
-}
-
-class B extends A {
-  const B();
-  final z = 99;
-}
-
-class C extends B {
-  const C(this.y);
-  final y;
-}
-
-const v = const C(42);
-
-main() {
-  Expect.equals(42, v.y);
-  Expect.equals(499, v.x);
-  Expect.equals(99, v.z);
-}
diff --git a/tests/language/compile_time_constant_m_test.dart b/tests/language/compile_time_constant_m_test.dart
deleted file mode 100644
index 0ae096ea..0000000
--- a/tests/language/compile_time_constant_m_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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";
-
-class A {
-  const A();
-  foo([x = const A()]) => x;
-}
-
-const x = const A();
-
-foo([x = const A()]) => x;
-
-main() {
-  Expect.identical(x, foo());
-  Expect.identical(x, x.foo());
-}
diff --git a/tests/language/compile_time_constant_n_test.dart b/tests/language/compile_time_constant_n_test.dart
deleted file mode 100644
index 3f621b2..0000000
--- a/tests/language/compile_time_constant_n_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-class A {
-  const A();
-  operator ==(x) => x == 499;
-}
-
-var a = const A();
-
-main() {
-  if (const A() != 499) Expect.isTrue("const equality failed");
-  Expect.isTrue(a == 499);
-}
diff --git a/tests/language/compile_time_constant_o_test.dart b/tests/language/compile_time_constant_o_test.dart
deleted file mode 100644
index cbc9dfd..0000000
--- a/tests/language/compile_time_constant_o_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-// Test compile-time constants with string-interpolation.
-
-import "package:expect/expect.dart";
-
-const str = "foo";
-const m1 = const {"foo": 499};
-const m2 = const {"$str": 499};
-const m3 = const {
-                   "$str": 42, //# 01: static type warning
-  "foo": 499
-};
-const m4 = const {
-                   "foo": 42, //# 02: static type warning
-  "$str": 499
-};
-const m5 = const {"f" "o" "o": 499};
-
-const mm1 = const {"afoo#foo": 499};
-const mm2 = const {"a$str#$str": 499};
-const mm3 = const {"a" "$str" "#" "foo": 499};
-const mm4 = const {"a$str" "#$str": 499};
-
-main() {
-  Expect.equals(1, m1.length);
-  Expect.equals(499, m1["foo"]);
-  Expect.identical(m1, m2);
-  Expect.identical(m1, m3);
-  Expect.identical(m1, m4);
-  Expect.identical(m1, m5);
-
-  Expect.equals(1, mm1.length);
-  Expect.equals(499, mm1["afoo#foo"]);
-  Expect.identical(mm1, mm2);
-  Expect.identical(mm1, mm3);
-  Expect.identical(mm1, mm4);
-}
diff --git a/tests/language/compile_time_constant_p_test.dart b/tests/language/compile_time_constant_p_test.dart
deleted file mode 100644
index b5389ec..0000000
--- a/tests/language/compile_time_constant_p_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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";
-
-class A {
-  const A(
-    this.x // //# 01: compile-time error
-      );
-  final x = null;
-}
-
-class B extends A {
-  const B();
-}
-
-var b = const B();
-
-main() {
-  Expect.equals(null, b.x);
-}
diff --git a/tests/language/compile_time_constant_q_test.dart b/tests/language/compile_time_constant_q_test.dart
deleted file mode 100644
index 3b38e3c..0000000
--- a/tests/language/compile_time_constant_q_test.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// 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.
-
-const double x = 14.0;
-main() {
-  print(x);
-}
diff --git a/tests/language/compile_time_constant_r_test.dart b/tests/language/compile_time_constant_r_test.dart
deleted file mode 100644
index 40e651a..0000000
--- a/tests/language/compile_time_constant_r_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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.
-
-const x =
-          throw // //# 01: compile-time error
-    "x";
-
-const y = const {
-  0:
-                    throw // //# 02: compile-time error
-      "y"
-};
-
-main() {
-  print(x);
-  print(y);
-  const z =
-            throw // //# 03: compile-time error
-      1 + 1 + 1;
-  print(z);
-}
diff --git a/tests/language/compile_time_constant_test.dart b/tests/language/compile_time_constant_test.dart
deleted file mode 100644
index 8c641bd..0000000
--- a/tests/language/compile_time_constant_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-class Bad {
-  int foo;
-  final int bar =
-      foo //# 01: compile-time error
-      -1;
-  static const int toto =
-      bar //# 02: compile-time error
-      -3;
-}
-
-void use(x) {}
-
-main() {
-  use(new Bad().bar);
-  use(Bad.toto);
-}
diff --git a/tests/language/compiler_annotations.dart b/tests/language/compiler_annotations.dart
deleted file mode 100644
index c920add..0000000
--- a/tests/language/compiler_annotations.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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 compiler_annotations;
-
-// This library contains annotations useful for testing.
-
-// TODO(ngeoffray): Implement in dart2js.
-class DontInline {
-  const DontInline();
-}
diff --git a/tests/language/compound_assignment_operator_test.dart b/tests/language/compound_assignment_operator_test.dart
deleted file mode 100644
index 1b507c9..0000000
--- a/tests/language/compound_assignment_operator_test.dart
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright (c) 2011, 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.
-// Tests that lhs of a compound assignment is executed only once.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class Indexed {
-  Indexed()
-      : _f = new List(10),
-        count = 0 {
-    _f[0] = 100;
-    _f[1] = 200;
-  }
-  operator [](i) {
-    count++;
-    return _f;
-  }
-
-  var count;
-  var _f;
-}
-
-var result;
-
-class A {
-  get field {
-    result.add(1);
-    return 1;
-  }
-
-  set field(value) {}
-
-  static get static_field {
-    result.add(0);
-    return 1;
-  }
-
-  static set static_field(value) {
-    result.add(1);
-  }
-}
-
-class CompoundAssignmentOperatorTest {
-  static void testIndexed() {
-    Indexed indexed = new Indexed();
-    Expect.equals(0, indexed.count);
-    var tmp = indexed[0];
-    Expect.equals(1, indexed.count);
-    Expect.equals(100, indexed[4][0]);
-    Expect.equals(2, indexed.count);
-    Expect.equals(100, indexed[4][0]++);
-    Expect.equals(3, indexed.count);
-    Expect.equals(101, indexed[4][0]);
-    Expect.equals(4, indexed.count);
-    indexed[4][0] += 10;
-    Expect.equals(5, indexed.count);
-    Expect.equals(111, indexed[4][0]);
-    var i = 0;
-    indexed[3][i++] += 1;
-    Expect.equals(1, i);
-  }
-
-  static testIndexedMore() {
-    result = [];
-    array() {
-      result.add(0);
-      return [0];
-    }
-
-    index() {
-      result.add(1);
-      return 0;
-    }
-
-    middle() {
-      result.add(2);
-    }
-
-    sequence(a, b, c) {
-      result.add(3);
-    }
-
-    sequence(array()[index()] += 1, middle(), array()[index()] += 1);
-    Expect.listEquals([0, 1, 2, 0, 1, 3], result);
-  }
-
-  static testIndexedMoreMore() {
-    result = [];
-    middle() {
-      result.add(2);
-    }
-
-    obj() {
-      result.add(0);
-      return new A();
-    }
-
-    sequence(a, b, c) {
-      result.add(3);
-    }
-
-    sequence(obj().field += 1, middle(), obj().field += 1);
-    Expect.listEquals([0, 1, 2, 0, 1, 3], result);
-
-    result = [];
-    sequence(A.static_field++, middle(), A.static_field++);
-    Expect.listEquals([0, 1, 2, 0, 1, 3], result);
-  }
-
-  static void testMain() {
-    for (int i = 0; i < 20; i++) {
-      testIndexed();
-      testIndexedMore();
-      testIndexedMoreMore();
-    }
-  }
-}
-
-main() {
-  CompoundAssignmentOperatorTest.testMain();
-}
diff --git a/tests/language/cond_expr_test.dart b/tests/language/cond_expr_test.dart
deleted file mode 100644
index 7bcc477..0000000
--- a/tests/language/cond_expr_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that conditional expressions can contain assignment expressions.
-
-import "package:expect/expect.dart";
-
-var e1, e2;
-
-f(a) => a < 0 ? e1 = -1 : e2 = 1;
-
-main() {
-  e1 = 0;
-  e2 = 0;
-  var r = f(-100);
-  Expect.equals(-1, r);
-  Expect.equals(-1, e1);
-  Expect.equals(0, e2);
-
-  e1 = 0;
-  e2 = 0;
-  r = f(100);
-  Expect.equals(1, r);
-  Expect.equals(0, e1);
-  Expect.equals(1, e2);
-}
diff --git a/tests/language/condition_bailout_test.dart b/tests/language/condition_bailout_test.dart
deleted file mode 100644
index d5d08e1..0000000
--- a/tests/language/condition_bailout_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-// Dart test program testing closures.
-
-import "package:expect/expect.dart";
-
-class A {
-  operator -() => this;
-
-  foo(x) {
-    -a;
-    if (x) return true;
-    return false;
-  }
-
-  loop1(x) {
-    -a;
-    while (x) return true;
-    return false;
-  }
-
-  loop2(x) {
-    -a;
-    for (; x;) return true;
-    return false;
-  }
-
-  loop3(x) {
-    -a;
-    var i = 0;
-    do {
-      if (i++ == 1) return false;
-    } while (!x);
-    return true;
-  }
-}
-
-var a;
-
-main() {
-  a = new A();
-  Expect.isTrue(a.foo(true));
-  Expect.isTrue(a.loop1(true));
-  Expect.isTrue(a.loop2(true));
-  Expect.isTrue(a.loop3(true));
-}
diff --git a/tests/language/conditional_access_helper.dart b/tests/language/conditional_access_helper.dart
deleted file mode 100644
index 530615d..0000000
--- a/tests/language/conditional_access_helper.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2015, 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 used by conditional_property_assignment_test.dart,
-// conditional_property_access_test.dart, and
-// conditional_method_invocation_test.dart, all of which import it using the
-// prefix "h.".
-
-library lib;
-
-var topLevelVar;
-
-void topLevelFunction() {}
-
-class C {
-  static int staticInt;
-  static staticF(callback()) => callback();
-  static int staticG(int callback()) => callback();
-}
-
-C nullC() => null;
-
-class D {
-  static E staticE;
-}
-
-class E {
-  G operator +(int i) => new I();
-  G operator -(int i) => new I();
-}
-
-class F {}
-
-class G extends E implements F {}
-
-class H {}
-
-class I extends G implements H {}
diff --git a/tests/language/conditional_import_string_test.dart b/tests/language/conditional_import_string_test.dart
deleted file mode 100644
index f972c2b..0000000
--- a/tests/language/conditional_import_string_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-// All three libraries have an HttpRequest class.
-import "conditional_import_string_test.dart"
-    if (dart.library.io == "true") "dart:io"
-    if (dart.library.html == "true") "dart:html" deferred as d show HttpRequest;
-
-class HttpRequest {}
-
-void main() {
-  asyncStart();
-  var io = const String.fromEnvironment("dart.library.io");
-  var html = const String.fromEnvironment("dart.library.html");
-  () async {
-    // Shouldn't fail. Shouldn't time out.
-    await d.loadLibrary().timeout(const Duration(seconds: 5));
-    if (io == "true") {
-      print("io");
-      Expect.throws(() => new d.HttpRequest()); // Class is abstract in dart:io
-    } else if (html == "true") {
-      print("html");
-      dynamic r = new d.HttpRequest(); // Shouldn't throw
-      var o = r.open; // Shouldn't fail, the open method is there.
-    } else {
-      print("none");
-      dynamic r = new d.HttpRequest();
-      Expect.isTrue(r is HttpRequest);
-    }
-    asyncEnd();
-  }();
-}
diff --git a/tests/language/conditional_import_test.dart b/tests/language/conditional_import_test.dart
deleted file mode 100644
index 4aa3b31..0000000
--- a/tests/language/conditional_import_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-// All three libraries have an HttpRequest class.
-import "conditional_import_test.dart"
-    if (dart.library.io) "dart:io"
-    if (dart.library.html) "dart:html" deferred as d show HttpRequest;
-
-class HttpRequest {}
-
-void main() {
-  asyncStart();
-  var io = const bool.fromEnvironment("dart.library.io");
-  var html = const bool.fromEnvironment("dart.library.html");
-  () async {
-    // Shouldn't fail. Shouldn't time out.
-    await d.loadLibrary().timeout(const Duration(seconds: 5));
-    if (io) {
-      print("io");
-      Expect.throws(() => new d.HttpRequest()); // Class is abstract in dart:io
-    } else if (html) {
-      print("html");
-      dynamic r = new d.HttpRequest(); // Shouldn't throw
-      var o = r.open; // Shouldn't fail, the open method is there.
-    } else {
-      print("none");
-      dynamic r = new d.HttpRequest();
-      Expect.isTrue(r is HttpRequest);
-    }
-    asyncEnd();
-  }();
-}
diff --git a/tests/language/conditional_method_invocation_test.dart b/tests/language/conditional_method_invocation_test.dart
deleted file mode 100644
index 5131d25..0000000
--- a/tests/language/conditional_method_invocation_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify semantics of the ?. operator when it is used to invoke a method.
-
-import "package:expect/expect.dart";
-import "conditional_access_helper.dart" as h;
-
-bad() {
-  Expect.fail('Should not be executed');
-}
-
-noMethod(e) => e is NoSuchMethodError;
-
-class B {}
-
-class C extends B {
-  f(callback()) => callback();
-  int g(int callback()) => callback();
-  static staticF(callback()) => callback();
-  static int staticG(int callback()) => callback();
-}
-
-C nullC() => null;
-
-main() {
-  // Make sure the "none" test fails if method invocation using "?." is not
-  // implemented.  This makes status files easier to maintain.
-  nullC()?.f(null);
-
-  // o?.m(...) is equivalent to ((x) => x == null ? null : x.m(...))(o).
-  Expect.equals(null, nullC()?.f(bad())); //# 01: ok
-  Expect.equals(1, new C()?.f(() => 1)); //# 02: ok
-
-  // C?.m(...) is equivalent to C.m(...).
-  Expect.equals(1, C?.staticF(() => 1)); //# 14: ok
-  Expect.equals(1, h.C?.staticF(() => 1)); //# 15: ok
-
-  // The static type of o?.m(...) is the same as the static type of
-  // o.m(...).
-  { int i = nullC()?.g(bad()); Expect.equals(null, i); } //# 03: ok
-  { int i = new C()?.g(() => 1); Expect.equals(1, i); } //# 04: ok
-  { String s = nullC()?.g(bad()); Expect.equals(null, s); } //# 05: static type warning
-  { String s = new C()?.g(() => null); Expect.equals(null, s); } //# 06: static type warning
-  { int i = C?.staticG(() => 1); Expect.equals(1, i); } //# 16: ok
-  { int i = h.C?.staticG(() => 1); Expect.equals(1, i); } //# 17: ok
-  { String s = C?.staticG(() => null); Expect.equals(null, s); } //# 18: static type warning
-  { String s = h.C?.staticG(() => null); Expect.equals(null, s); } //# 19: static type warning
-
-  // Let T be the static type of o and let y be a fresh variable of type T.
-  // Exactly the same static warnings that would be caused by y.m(...) are also
-  // generated in the case of o?.m(...).
-  { B b = new C(); Expect.equals(1, b?.f(() => 1)); } //# 07: static type warning
-  { int i = 1; Expect.equals(null, nullC()?.f(i)); } //# 08: static type warning
-
-  // '?.' can't be used to access toplevel functions in libraries imported via
-  // prefix.
-  h?.topLevelFunction(); //# 11: compile-time error
-
-  // Nor can it be used to access the toString method on the class Type.
-  Expect.throws(() => C?.toString(), noMethod); //# 12: static type warning
-  Expect.throws(() => h.C?.toString(), noMethod); //# 13: static type warning
-}
diff --git a/tests/language/conditional_property_access_test.dart b/tests/language/conditional_property_access_test.dart
deleted file mode 100644
index d841a0c..0000000
--- a/tests/language/conditional_property_access_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify semantics of the ?. operator when it does not appear on the LHS of an
-// assignment.
-
-import "package:expect/expect.dart";
-import "conditional_access_helper.dart" as h;
-
-noMethod(e) => e is NoSuchMethodError;
-
-class B {}
-
-class C extends B {
-  int v;
-  C(this.v);
-  static int staticInt;
-}
-
-C nullC() => null;
-
-main() {
-  // Make sure the "none" test fails if property access using "?." is not
-  // implemented.  This makes status files easier to maintain.
-  nullC()?.v;
-
-  // e1?.id is equivalent to ((x) => x == null ? null : x.id)(e1).
-  Expect.equals(null, nullC()?.v); //# 01: ok
-  Expect.equals(1, new C(1)?.v); //# 02: ok
-
-  // C?.id is equivalent to C.id.
-  { C.staticInt = 1; Expect.equals(1, C?.staticInt); } //# 12: ok
-  { h.C.staticInt = 1; Expect.equals(1, h.C?.staticInt); } //# 13: ok
-
-  // The static type of e1?.d is the static type of e1.id.
-  { int i = new C(1)?.v; Expect.equals(1, i); } //# 03: ok
-  { String s = new C(null)?.v; Expect.equals(null, s); } //# 04: static type warning
-  { C.staticInt = 1; int i = C?.staticInt; Expect.equals(1, i); } //# 14: ok
-  { h.C.staticInt = 1; int i = h.C?.staticInt; Expect.equals(1, i); } //# 15: ok
-  { C.staticInt = null; String s = C?.staticInt; Expect.equals(null, s); } //# 16: static type warning
-  { h.C.staticInt = null; String s = h.C?.staticInt; Expect.equals(null, s); } //# 17: static type warning
-
-  // Let T be the static type of e1 and let y be a fresh variable of type T.
-  // Exactly the same static warnings that would be caused by y.id are also
-  // generated in the case of e1?.id.
-  Expect.equals(null, nullC()?.bad); //# 05: static type warning
-  { B b = new C(1); Expect.equals(1, b?.v); } //# 06: static type warning
-
-  // '?.' cannot be used to access toplevel properties in libraries imported via
-  // prefix.
-  var x = h?.topLevelVar; //# 09: compile-time error
-
-  // Nor can it be used to access the hashCode getter on the class Type.
-  Expect.throws(() => C?.hashCode, noMethod); //# 10: static type warning
-  Expect.throws(() => h.C?.hashCode, noMethod); //# 11: static type warning
-}
diff --git a/tests/language/conditional_property_assignment_test.dart b/tests/language/conditional_property_assignment_test.dart
deleted file mode 100644
index 34f9a9d1..0000000
--- a/tests/language/conditional_property_assignment_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify semantics of the ?. operator when it appears on the LHS of an
-// assignment.
-
-import "package:expect/expect.dart";
-import "conditional_access_helper.dart" as h;
-
-bad() {
-  Expect.fail('Should not be executed');
-}
-
-noMethod(e) => e is NoSuchMethodError;
-
-class B {}
-
-class C extends B {
-  int v;
-  C(this.v);
-  static int staticInt;
-}
-
-class D {
-  E v;
-  D(this.v);
-  static E staticE;
-}
-
-class E {
-  G operator +(int i) => new I();
-}
-
-class F {}
-
-class G extends E implements F {}
-
-class H {}
-
-class I extends G implements H {}
-
-C nullC() => null;
-
-main() {
-  // Make sure the "none" test fails if assignment to "?." is not implemented.
-  // This makes status files easier to maintain.
-  nullC()?.v = 1;
-
-  // e1?.v = e2 is equivalent to ((x) => x == null ? null : x.v = e2)(e1).
-  Expect.equals(null, nullC()?.v = bad()); //# 01: ok
-  { C c = new C(1); Expect.equals(2, c?.v = 2); Expect.equals(2, c.v); } //# 02: ok
-
-  // C?.v = e2 is equivalent to C.v = e2.
-  { C.staticInt = 1; Expect.equals(2, C?.staticInt = 2); Expect.equals(2, C.staticInt); } //# 23: ok
-  { h.C.staticInt = 1; Expect.equals(2, h.C?.staticInt = 2); Expect.equals(2, h.C.staticInt); } //# 24: ok
-
-  // The static type of e1?.v = e2 is the static type of e2.
-  { D d = new D(new E()); G g = new G(); F f = (d?.v = g); Expect.identical(f, g); } //# 03: ok
-  { D d = new D(new E()); E e = new G(); F f = (d?.v = e); Expect.identical(f, e); } //# 04: static type warning
-  { D.staticE = new E(); G g = new G(); F f = (D?.staticE = g); Expect.identical(f, g); } //# 25: ok
-  { h.D.staticE = new h.E(); h.G g = new h.G(); h.F f = (h.D?.staticE = g); Expect.identical(f, g); } //# 26: ok
-  { D.staticE = new E(); E e = new G(); F f = (D?.staticE = e); Expect.identical(f, e); } //# 27: static type warning
-  { h.D.staticE = new h.E(); h.E e = new h.G(); h.F f = (h.D?.staticE = e); Expect.identical(f, e); } //# 28: static type warning
-
-  // Exactly the same static warnings that would be caused by e1.v = e2 are
-  // also generated in the case of e1?.v = e2.
-  Expect.equals(null, nullC()?.bad = bad()); //# 05: static type warning
-  { B b = new C(1); Expect.equals(2, b?.v = 2); Expect.equals(2, (b as C).v); } //# 06: static type warning
-
-  // e1?.v op= e2 is equivalent to ((x) => x?.v = x.v op e2)(e1).
-  Expect.equals(null, nullC()?.v += bad()); //# 07: ok
-  { C c = new C(1); Expect.equals(3, c?.v += 2); Expect.equals(3, c.v); } //# 08: ok
-
-  // C?.v op= e2 is equivalent to C.v op= e2.
-  { C.staticInt = 1; Expect.equals(3, C?.staticInt += 2); Expect.equals(3, C?.staticInt); } //# 29: ok
-
-  // The static type of e1?.v op= e2 is the static type of e1.v op e2.
-  { D d = new D(new E()); F f = (d?.v += 1); Expect.identical(d.v, f); } //# 09: ok
-  { D.staticE = new E(); F f = (D?.staticE += 1); Expect.identical(D.staticE, f); } //# 30: ok
-  { h.D.staticE = new h.E(); h.F f = (h.D?.staticE += 1); Expect.identical(h.D.staticE, f); } //# 31: ok
-
-  // Let T be the static type of e1 and let y be a fresh variable of type T.
-  // Exactly the same static warnings that would be caused by y.v op e2 are
-  // also generated in the case of e1?.v op= e2.
-  Expect.equals(null, nullC()?.bad = bad()); //# 10: static type warning
-  { B b = new C(1); Expect.equals(3, b?.v += 2); Expect.equals(3, (b as C).v); } //# 11: static type warning
-  { D d = new D(new E()); F f = (d?.v += nullC()); Expect.identical(d.v, f); } //# 12: static type warning
-  { D d = new D(new E()); H h = (d?.v += 1); Expect.identical(d.v, h); } //# 13: static type warning
-  { D.staticE = new E(); F f = (D?.staticE += nullC()); Expect.identical(D.staticE, f); } //# 32: static type warning
-  { h.D.staticE = new h.E(); h.F f = (h.D?.staticE += h.nullC()); Expect.identical(h.D.staticE, f); } //# 33: static type warning
-  { D.staticE = new E(); H h = (D?.staticE += 1); Expect.identical(D.staticE, h); } //# 34: static type warning
-  { h.D.staticE = new h.E(); h.H hh = (h.D?.staticE += 1); Expect.identical(h.D.staticE, hh); } //# 35: static type warning
-
-  // '?.' cannot be used to assign to toplevel properties in libraries imported
-  // via prefix.
-  h?.topLevelVar = null; //# 20: compile-time error
-  h?.topLevelVar += null; //# 21: compile-time error
-  h?.topLevelVar ??= null; //# 22: compile-time error
-}
diff --git a/tests/language/conditional_property_increment_decrement_test.dart b/tests/language/conditional_property_increment_decrement_test.dart
deleted file mode 100644
index a50e8d7..0000000
--- a/tests/language/conditional_property_increment_decrement_test.dart
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify semantics of the ?. operator when it appears in a postincrement or
-// preincrement expression (or a postdecrement or predecrement expression).
-
-import "package:expect/expect.dart";
-import "conditional_access_helper.dart" as h;
-
-class C {
-  int v;
-  C(this.v);
-  static int staticInt;
-}
-
-class D {
-  E v;
-  D(this.v);
-  static E staticE;
-}
-
-class E {
-  G operator +(int i) => new I();
-  G operator -(int i) => new I();
-}
-
-class F {}
-
-class G extends E implements F {}
-
-class H {}
-
-class I extends G implements H {}
-
-C nullC() => null;
-
-main() {
-  // Make sure the "none" test fails if assignment to "?." is not implemented.
-  // This makes status files easier to maintain.
-  nullC()?.v = 1;
-
-  // e1?.v++ is equivalent to ((x) => x == null ? null : x.v++)(e1).
-  Expect.equals(null, nullC()?.v++); //# 01: ok
-  { C c = new C(1); Expect.equals(1, c?.v++); Expect.equals(2, c.v); } //# 02: ok
-
-  // C?.v++ is equivalent to C.v++.
-  { C.staticInt = 1; Expect.equals(1, C?.staticInt++); Expect.equals(2, C.staticInt); } //# 17: ok
-  { h.C.staticInt = 1; Expect.equals(1, h.C?.staticInt++); Expect.equals(2, h.C.staticInt); } //# 18: ok
-
-  // The static type of e1?.v++ is the same as the static type of e1.v.
-  { E e1 = new E(); D d = new D(e1); E e2 = d?.v++; Expect.identical(e1, e2); } //# 03: ok
-  { G g = new G(); D d = new D(g); F f = d?.v++; Expect.identical(f, g); } //# 04: static type warning
-  { E e1 = new E(); D.staticE = e1; E e2 = D?.staticE++; Expect.identical(e1, e2); } //# 19: ok
-  { h.E e1 = new h.E(); h.D.staticE = e1; h.E e2 = h.D?.staticE++; Expect.identical(e1, e2); } //# 20: ok
-  { G g = new G(); D.staticE = g; F f = D?.staticE++; Expect.identical(f, g); } //# 21: static type warning
-  { h.G g = new h.G(); h.D.staticE = g; h.F f = h.D?.staticE++; Expect.identical(f, g); } //# 22: static type warning
-
-  // e1?.v-- is equivalent to ((x) => x == null ? null : x.v--)(e1).
-  Expect.equals(null, nullC()?.v--); //# 05: ok
-  { C c = new C(1); Expect.equals(1, c?.v--); Expect.equals(0, c.v); } //# 06: ok
-
-  // C?.v-- is equivalent to C.v--.
-  { C.staticInt = 1; Expect.equals(1, C?.staticInt--); Expect.equals(0, C.staticInt); } //# 23: ok
-  { h.C.staticInt = 1; Expect.equals(1, h.C?.staticInt--); Expect.equals(0, h.C.staticInt); } //# 24: ok
-
-  // The static type of e1?.v-- is the same as the static type of e1.v.
-  { E e1 = new E(); D d = new D(e1); E e2 = d?.v--; Expect.identical(e1, e2); } //# 07: ok
-  { G g = new G(); D d = new D(g); F f = d?.v--; Expect.identical(f, g); } //# 08: static type warning
-  { E e1 = new E(); D.staticE = e1; E e2 = D?.staticE--; Expect.identical(e1, e2); } //# 25: ok
-  { h.E e1 = new h.E(); h.D.staticE = e1; h.E e2 = h.D?.staticE--; Expect.identical(e1, e2); } //# 26: ok
-  { G g = new G(); D.staticE = g; F f = D?.staticE--; Expect.identical(f, g); } //# 27: static type warning
-  { h.G g = new h.G(); h.D.staticE = g; h.F f = h.D?.staticE--; Expect.identical(f, g); } //# 28: static type warning
-
-  // ++e1?.v is equivalent to e1?.v += 1.
-  Expect.equals(null, ++nullC()?.v); //# 09: ok
-  { C c = new C(1); Expect.equals(2, ++c?.v); Expect.equals(2, c.v); } //# 10: ok
-
-  // ++C?.v is equivalent to C?.v += 1.
-  { C.staticInt = 1; Expect.equals(2, ++C?.staticInt); Expect.equals(2, C.staticInt); } //# 29: ok
-  { h.C.staticInt = 1; Expect.equals(2, ++h.C?.staticInt); Expect.equals(2, h.C.staticInt); } //# 30: ok
-
-  // The static type of ++e1?.v is the same as the static type of e1.v + 1.
-  { D d = new D(new E()); F f = ++d?.v; Expect.identical(d.v, f); } //# 11: ok
-  { D d = new D(new E()); H h = ++d?.v; Expect.identical(d.v, h); } //# 12: static type warning
-  { D.staticE = new E(); F f = ++D?.staticE; Expect.identical(D.staticE, f); } //# 31: ok
-  { h.D.staticE = new h.E(); h.F f = ++h.D?.staticE; Expect.identical(h.D.staticE, f); } //# 32: ok
-  { D.staticE = new E(); H h = ++D?.staticE; Expect.identical(D.staticE, h); } //# 33: static type warning
-  { h.D.staticE = new h.E(); h.H hh = ++h.D?.staticE; Expect.identical(h.D.staticE, hh); } //# 34: static type warning
-
-  // --e1?.v is equivalent to e1?.v -= 1.
-  Expect.equals(null, --nullC()?.v); //# 13: ok
-  { C c = new C(1); Expect.equals(0, --c?.v); Expect.equals(0, c.v); } //# 14: ok
-
-  // --C?.v is equivalent to C?.v -= 1.
-  { C.staticInt = 1; Expect.equals(0, --C?.staticInt); Expect.equals(0, C.staticInt); } //# 35: ok
-  { h.C.staticInt = 1; Expect.equals(0, --h.C?.staticInt); Expect.equals(0, h.C.staticInt); } //# 36: ok
-
-  // The static type of --e1?.v is the same as the static type of e1.v - 1.
-  { D d = new D(new E()); F f = --d?.v; Expect.identical(d.v, f); } //# 15: ok
-  { D d = new D(new E()); H h = --d?.v; Expect.identical(d.v, h); } //# 16: static type warning
-  { D.staticE = new E(); F f = --D?.staticE; Expect.identical(D.staticE, f); } //# 37: ok
-  { h.D.staticE = new h.E(); h.F f = --h.D?.staticE; Expect.identical(h.D.staticE, f); } //# 38: ok
-  { D.staticE = new E(); H h = --D?.staticE; Expect.identical(D.staticE, h); } //# 39: static type warning
-  { h.D.staticE = new h.E(); h.H hh = --h.D?.staticE; Expect.identical(h.D.staticE, hh); } //# 40: static type warning
-}
diff --git a/tests/language/conditional_rewrite_test.dart b/tests/language/conditional_rewrite_test.dart
deleted file mode 100644
index 69a6398..0000000
--- a/tests/language/conditional_rewrite_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2015, 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";
-
-// Test that dart2js does not rewrite conditional into logical operators
-// in cases where it changes which falsy value is returned.
-
-posFalse(x, y) => x != null ? y : false;
-negFalse(x, y) => x != null ? !y : false;
-posNull(x, y) => x != null ? y : null;
-negNull(x, y) => x != null ? !y : null;
-
-main() {
-  bool isCheckedMode = false;
-  assert((isCheckedMode = true));
-
-  Expect.equals(false, posFalse(null, false));
-  Expect.equals(false, negFalse(null, false));
-  Expect.equals(null, posNull(null, false));
-  Expect.equals(null, negNull(null, false));
-
-  Expect.equals(false, posFalse(null, true));
-  Expect.equals(false, negFalse(null, true));
-  Expect.equals(null, posNull(null, true));
-  Expect.equals(null, negNull(null, true));
-
-  Expect.equals(false, posFalse([], false));
-  Expect.equals(true, negFalse([], false));
-  Expect.equals(false, posNull([], false));
-  Expect.equals(true, negNull([], false));
-
-  Expect.equals(true, posFalse([], true));
-  Expect.equals(false, negFalse([], true));
-  Expect.equals(true, posNull([], true));
-  Expect.equals(false, negNull([], true));
-
-  if (!isCheckedMode) {
-    Expect.equals(null, posFalse([], null));
-    Expect.equals(true, negFalse([], null));
-    Expect.equals(null, posNull([], null));
-    Expect.equals(true, negNull([], null));
-
-    var y = {};
-    Expect.identical(y, posFalse([], y));
-    Expect.equals(true, negFalse([], y));
-    Expect.identical(y, posNull([], y));
-    Expect.equals(true, negNull([], y));
-  }
-}
diff --git a/tests/language/config_import_corelib_general.dart b/tests/language/config_import_corelib_general.dart
deleted file mode 100644
index 04d3b5c..0000000
--- a/tests/language/config_import_corelib_general.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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 Classy {
-  String get name => "classy general";
-}
-
-bool general() => true;
-final String name = "general";
diff --git a/tests/language/config_import_corelib_http.dart b/tests/language/config_import_corelib_http.dart
deleted file mode 100644
index 292e091..0000000
--- a/tests/language/config_import_corelib_http.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2015, 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:http";
-
-class Classy {
-  String get name => "classy http";
-  String httpSpecific() => "classy http";
-}
-
-bool general() => true;
-bool httpSpecific() => true;
-final String name = "http";
diff --git a/tests/language/config_import_corelib_io.dart b/tests/language/config_import_corelib_io.dart
deleted file mode 100644
index d5b594a..0000000
--- a/tests/language/config_import_corelib_io.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class Classy {
-  String get name => "classy io";
-  String ioSpecific() => "classy io";
-}
-
-bool general() => true;
-bool ioSpecific() => true;
-final String name = "io";
diff --git a/tests/language/config_import_corelib_test.dart b/tests/language/config_import_corelib_test.dart
deleted file mode 100644
index 1428bd5..0000000
--- a/tests/language/config_import_corelib_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2015, 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';
-
-import 'config_import_corelib_general.dart'
-    if (dart.library.io) 'config_import_corelib_io.dart'
-    if (dart.library.http) 'config_import_corelib_http.dart' as lib;
-
-class SubClassy extends lib.Classy {
-  String get superName => super.name;
-}
-
-main() {
-  var io = const bool.fromEnvironment("dart.library.io");
-  var http = const bool.fromEnvironment("dart.library.http");
-
-  var cy = new SubClassy();
-
-  if (io) {
-    Expect.isTrue(lib.general());
-    Expect.equals("io", lib.name);
-    Expect.equals("classy io", cy.name);
-
-    Expect.isTrue(lib.ioSpecific());
-    Expect.equals("classy io", cy.ioSpecific());
-
-    Expect.throws(() {
-      lib.httpSpecific();
-    });
-    Expect.throws(() {
-      cy.httpSpecific();
-    });
-  } else if (http) {
-    Expect.isTrue(lib.general());
-    Expect.equals("http", lib.name);
-    Expect.equals("classy http", cy.name);
-
-    Expect.throws(() {
-      lib.ioSpecific();
-    });
-    Expect.throws(() {
-      cy.ioSpecific();
-    });
-
-    Expect.isTrue(lib.httpSpecific());
-    Expect.equals("classy http", cy.httpSpecific());
-  } else {
-    Expect.isTrue(lib.general());
-    Expect.equals("general", lib.name);
-    Expect.equals("classy general", cy.name);
-
-    Expect.throws(() {
-      lib.ioSpecific();
-    });
-    Expect.throws(() {
-      cy.ioSpecific();
-    });
-
-    Expect.throws(() {
-      lib.httpSpecific();
-    });
-    Expect.throws(() {
-      cy.httpSpecific();
-    });
-  }
-}
diff --git a/tests/language/config_import_lib1a.dart b/tests/language/config_import_lib1a.dart
deleted file mode 100644
index 814c15e..0000000
--- a/tests/language/config_import_lib1a.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib1() => "a";
diff --git a/tests/language/config_import_lib1b.dart b/tests/language/config_import_lib1b.dart
deleted file mode 100644
index 59212de..0000000
--- a/tests/language/config_import_lib1b.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib1() => "b";
diff --git a/tests/language/config_import_lib1c.dart b/tests/language/config_import_lib1c.dart
deleted file mode 100644
index 86fd9e9..0000000
--- a/tests/language/config_import_lib1c.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib1() => "c";
diff --git a/tests/language/config_import_lib2a.dart b/tests/language/config_import_lib2a.dart
deleted file mode 100644
index 00665dd..0000000
--- a/tests/language/config_import_lib2a.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib2() => "a";
diff --git a/tests/language/config_import_lib2b.dart b/tests/language/config_import_lib2b.dart
deleted file mode 100644
index 6d91daf..0000000
--- a/tests/language/config_import_lib2b.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib2() => "b";
diff --git a/tests/language/config_import_lib2c.dart b/tests/language/config_import_lib2c.dart
deleted file mode 100644
index 6ed0235..0000000
--- a/tests/language/config_import_lib2c.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib2() => "c";
diff --git a/tests/language/config_import_lib3a.dart b/tests/language/config_import_lib3a.dart
deleted file mode 100644
index c2f9fec..0000000
--- a/tests/language/config_import_lib3a.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib3() => "a";
diff --git a/tests/language/config_import_lib3b.dart b/tests/language/config_import_lib3b.dart
deleted file mode 100644
index b6d5afc..0000000
--- a/tests/language/config_import_lib3b.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib3() => "b";
diff --git a/tests/language/config_import_lib3c.dart b/tests/language/config_import_lib3c.dart
deleted file mode 100644
index b984783..0000000
--- a/tests/language/config_import_lib3c.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib3() => "c";
diff --git a/tests/language/config_import_lib4a.dart b/tests/language/config_import_lib4a.dart
deleted file mode 100644
index 1607f07..0000000
--- a/tests/language/config_import_lib4a.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib4() => "a";
diff --git a/tests/language/config_import_lib4b.dart b/tests/language/config_import_lib4b.dart
deleted file mode 100644
index 9e2f08c..0000000
--- a/tests/language/config_import_lib4b.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib4() => "b";
diff --git a/tests/language/config_import_lib4c.dart b/tests/language/config_import_lib4c.dart
deleted file mode 100644
index f4a1972..0000000
--- a/tests/language/config_import_lib4c.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-String lib4() => "c";
diff --git a/tests/language/config_import_test.dart b/tests/language/config_import_test.dart
deleted file mode 100644
index 6aab223..0000000
--- a/tests/language/config_import_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2015, 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.
-//
-// DartOptions=-Did=true -Ddotted.id=some_string -Dlots.of.dots.In.id=false
-// VMOptions=-Did=true -Ddotted.id=some_string -Dlots.of.dots.In.id=false
-
-import 'package:expect/expect.dart';
-
-import 'config_import_lib1a.dart'
-    if (id) 'config_import_lib1b.dart'
-    if (not.set.id) 'config_import_lib1c.dart';
-
-import 'config_import_lib2a.dart'
-    if (not.set.id) 'config_import_lib2b.dart'
-    if (not.set.either) 'config_import_lib2c.dart';
-
-import 'config_import_lib3a.dart'
-    if (dotted.id == "some_string") 'config_import_lib3b.dart'
-    if (id) 'config_import_lib3c.dart';
-
-import 'config_import_lib4a.dart'
-    if (lots.of.dots.In.id == "other") 'config_import_lib4b.dart'
-    if (lots.of.dots.In.id == "false") 'config_import_lib4c.dart';
-
-main() {
-  Expect.equals("b", lib1());
-  Expect.equals("a", lib2());
-  Expect.equals("b", lib3());
-  Expect.equals("c", lib4());
-}
diff --git a/tests/language/conflicting_type_variable_and_setter_test.dart b/tests/language/conflicting_type_variable_and_setter_test.dart
deleted file mode 100644
index 2aca0c3..0000000
--- a/tests/language/conflicting_type_variable_and_setter_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class C<D> {
-  void set D(int value) {
-    field = value;
-  }
-
-  int field;
-}
-
-main() {
-  C<int> c = new C<int>();
-  c.D = 1;
-  Expect.equals(c.field, 1);
-}
diff --git a/tests/language/const_conditional_test.dart b/tests/language/const_conditional_test.dart
deleted file mode 100644
index b214af9..0000000
--- a/tests/language/const_conditional_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for conditionals as compile-time constants.
-
-import 'package:expect/expect.dart';
-
-class Marker {
-  final field;
-  const Marker(this.field);
-}
-
-var var0 = const Marker(0);
-var var1 = const Marker(1);
-const const0 = const Marker(0);
-const const1 = const Marker(1);
-
-const trueConst = true;
-const falseConst = false;
-var nonConst = true;
-const zeroConst = 0;
-
-const cond1 = trueConst ? const0 : const1;
-const cond1a = trueConst ? nonConst : const1; //# 01: compile-time error
-const cond1b = trueConst ? const0 : nonConst; //# 02: compile-time error
-
-const cond2 = falseConst ? const0 : const1;
-const cond2a = falseConst ? nonConst : const1; //# 03: compile-time error
-const cond2b = falseConst ? const0 : nonConst; //# 04: compile-time error
-
-const cond3 = nonConst ? const0 : const1; //# 05: compile-time error
-const cond3a = nonConst ? nonConst : const1; //# 06: compile-time error
-const cond3b = nonConst ? const0 : nonConst; //# 07: compile-time error
-
-const cond4 = zeroConst ? const0 : const1; //# 08: compile-time error
-const cond4a = zeroConst ? nonConst : const1; //# 09: compile-time error
-const cond4b = zeroConst ? const0 : nonConst; //# 10: compile-time error
-
-void main() {
-  Expect.identical(var0, cond1);
-  Expect.identical(nonConst, cond1a); //# 01: continued
-  Expect.identical(var0, cond1b); //# 02: continued
-
-  Expect.identical(var1, cond2);
-  Expect.identical(var1, cond2a); //# 03: continued
-  Expect.identical(nonConst, cond2b); //# 04: continued
-
-  Expect.identical(var0, cond3); // //# 05: continued
-  Expect.identical(nonConst, cond3a); //# 06: continued
-  Expect.identical(var0, cond3b); //# 07: continued
-
-  Expect.identical(var1, cond4); // //# 08: continued
-  Expect.identical(var1, cond4a); //# 09: continued
-  Expect.identical(nonConst, cond4b); //# 10: continued
-}
diff --git a/tests/language/const_constructor2_test.dart b/tests/language/const_constructor2_test.dart
deleted file mode 100644
index 57c7024..0000000
--- a/tests/language/const_constructor2_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 14348.
-
-class A<T> {
-  const A();
-}
-
-class B<S> extends A<S> {
-  const B();
-}
-
-class C<U> {
-  final A<U> a;
-
-  const C(A<U> this.a);
-  const C.optional([A<U> this.a]);
-  const C.named({A<U> this.a});
-  const C.untyped(this.a);
-  const C.subtyped(B<U> this.a);
-  const factory C.redirecting(B<U> a) = D;
-}
-
-class D extends C {
-  const D(B b) : super(b);
-}
-
-class E {
-  const factory E.redirecting1(var a) = F<int>;
-  const factory E.redirecting2(var a) = F<int>.redirecting;
-  const factory E.redirecting3(var a) = F<double>.redirecting;
-}
-
-class F<V> implements E {
-  final V field;
-
-  const F(this.field);
-  const factory F.redirecting(V field) = G<int>;
-}
-
-class G<W> implements F {
-  final W field;
-  const G(field) : this.field = field;
-}
-
-main() {
-  const A<int> a = const B<int>();
-
-  const C c1 = const C(a); //# 01: ok
-  const C c2 = const C.optional(a); //# 02: ok
-  const C c3 = const C.named(a: a); //# 03: ok
-  const C c4 = const C.untyped(a); //# 04: ok
-  const C c5 = const C.subtyped(a); //# 05: ok
-  const C c5m = const C.redirecting(a); //# 06: ok
-
-  const C c6 = const C<int>(a); //# 07: ok
-  const C c7 = const C<int>.optional(a); //# 08: ok
-  const C c8 = const C<int>.named(a: a); //# 09: ok
-  const C c9 = const C<int>.untyped(a); //# 10: ok
-  const C c10 = const C<int>.subtyped(a); //# 11: ok
-  const C c10m = const C<int>.redirecting(a); //# 12: ok
-
-  const C c11 = const C<double>(a); //# 13: static type warning, checked mode compile-time error
-  const C c12 = const C<double>.optional(a); //# 14: static type warning, checked mode compile-time error
-  const C c13 = const C<double>.named(a: a); //# 15: static type warning, checked mode compile-time error
-  const C c14 = const C<double>.untyped(a); //# 16: static type warning, checked mode compile-time error
-  const C c15 = const C<double>.subtyped(a); //# 17: static type warning, checked mode compile-time error
-  const C c15m = const C<double>.redirecting(a); //# 18: static type warning
-
-  const E e1 = const E.redirecting1(0); //# 19: ok
-  const E e2 = const E.redirecting1(''); //# 20: checked mode compile-time error
-  const E e3 = const E.redirecting2(0); //# 21: ok
-  const E e4 = const E.redirecting2(''); //# 22: checked mode compile-time error
-  const E e5 = const E.redirecting3(0); //# 23: ok
-  const E e6 = const E.redirecting3(''); //# 24: checked mode compile-time error
-}
diff --git a/tests/language/const_constructor3_test.dart b/tests/language/const_constructor3_test.dart
deleted file mode 100644
index 5b9dcbc..0000000
--- a/tests/language/const_constructor3_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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 C {
-  final double d;
-  const C(this.d);
-}
-
-class D extends C {
-  const D(var d) : super(d);
-}
-
-const c = const C(0.0); //# 01: ok
-const d = const C(0); //# 02: static type warning, checked mode compile-time error
-const e = const D(0.0); //# 03: ok
-const f = const D(0); //# 04: checked mode compile-time error
-
-main() {
-  print(c); //# 01: continued
-  print(d); //# 02: continued
-  print(e); //# 03: continued
-  print(f); //# 04: continued
-}
diff --git a/tests/language/const_constructor_mixin2_test.dart b/tests/language/const_constructor_mixin2_test.dart
deleted file mode 100644
index 283a49c..0000000
--- a/tests/language/const_constructor_mixin2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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 Mixin {
-  var nonFinalField;
-}
-
-class A {
-  const A(foo);
-}
-
-class B extends A
-    with Mixin // //# 01: compile-time error
-{
-  const B(foo) : super(foo);
-}
-
-main() {
-  var a = const B(42);
-  a.nonFinalField = 54; //# 01: continued
-}
diff --git a/tests/language/const_constructor_mixin3_test.dart b/tests/language/const_constructor_mixin3_test.dart
deleted file mode 100644
index d92a8ac..0000000
--- a/tests/language/const_constructor_mixin3_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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 Mixin {}
-
-class A {
-  const A();
-}
-
-class B extends A
-    with Mixin //# 01: compile-time error
-{
-  const B();
-}
-
-main() {
-  var a = const B();
-}
diff --git a/tests/language/const_constructor_mixin_test.dart b/tests/language/const_constructor_mixin_test.dart
deleted file mode 100644
index 58dc68f..0000000
--- a/tests/language/const_constructor_mixin_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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 Mixin {}
-
-class A {
-  const A(foo);
-}
-
-class B extends A
-    with Mixin // //# 01: compile-time error
-{
-  const B(foo) : super(foo);
-}
-
-main() {
-  var a = const B(42);
-}
diff --git a/tests/language/const_constructor_nonconst_field_test.dart b/tests/language/const_constructor_nonconst_field_test.dart
deleted file mode 100644
index dbd3755..0000000
--- a/tests/language/const_constructor_nonconst_field_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class A {
-  final int i = f(); //# 01: compile-time error
-  final int j = 1;
-  const A();
-}
-
-int f() {
-  return 3;
-}
-
-main() {
-  Expect.equals(const A().j, 1);
-}
diff --git a/tests/language/const_constructor_super2_test.dart b/tests/language/const_constructor_super2_test.dart
deleted file mode 100644
index 6ec4fa3..0000000
--- a/tests/language/const_constructor_super2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-class A {
-  final a;
-
-  const A(this.a);
-}
-
-class B extends A {
-  final b;
-
-  const B(a, this.b) : super(a);
-}
-
-@NoInline()
-foo() => const B(1, 2);
-
-@NoInline()
-bar() => const B(2, 2);
-
-void main() {
-  Expect.notEquals(foo(), bar());
-  Expect.notEquals(foo().a, bar().a);
-  Expect.equals(foo().b, bar().b);
-}
diff --git a/tests/language/const_constructor_super_test.dart b/tests/language/const_constructor_super_test.dart
deleted file mode 100644
index b8bb9e2..0000000
--- a/tests/language/const_constructor_super_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  final a;
-  A(this.a); // Not const.
-  const A.five() : a = 5;
-}
-
-class B extends A {
-  final b;
-  B(x)
-      : b = x + 1,
-        super(x);
-
-  // Const constructor cannot call non-const super constructor.
-  const B.zerofive() : b = 0, super(5); // //# 01: compile-time error
-}
-
-class C extends A {
-  C() : super(0);
-  // Implicit call to non-const constructor A(x).
-  const C.named(x); // //# 02: compile-time error
-}
-
-main() {
-  var b = new B.zerofive(); // //# 01: continued
-  var b1 = new B(0);
-  var c = new C.named(""); // //# 02: continued
-}
diff --git a/tests/language/const_constructor_syntax_test.dart b/tests/language/const_constructor_syntax_test.dart
deleted file mode 100644
index f4ae9aa..0000000
--- a/tests/language/const_constructor_syntax_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-
-main() {
-  var c0 = const C0(); //# 01: compile-time error
-  var i0 = const I0(); //# 02: compile-time error
-  var c1 = const C1();
-  var c2 = const C2(); //# 03: compile-time error
-  var c3 = const C3();
-}
-
-abstract class I0 {
-  factory I0() = C0;
-}
-
-class C0 implements I0 {
-  C0();
-}
-
-class C1 {
-  const C1();
-  var modifiable; //# 04: compile-time error
-}
-
-class C2 {
-  C2();
-}
-
-class C3 {
-  const C3()
-      : field = new C0() //# 05: compile-time error
-  ;
-  final field = null;
-}
diff --git a/tests/language/const_constructor_test.dart b/tests/language/const_constructor_test.dart
deleted file mode 100644
index ae84d73..0000000
--- a/tests/language/const_constructor_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-class A<T> {
-  final int x;
-  const A.named() : x = 42;
-  A() : x = null;
-}
-
-main() {
-  Expect.equals(42, (const A<int>.named()).x);
-  Expect.equals(42, (new A<int>.named()).x);
-  const A<int>(); //# 01: compile-time error
-}
diff --git a/tests/language/const_counter_negative_test.dart b/tests/language/const_counter_negative_test.dart
deleted file mode 100644
index 6f6adb1..0000000
--- a/tests/language/const_counter_negative_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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.
-// Bug: 4254106 Constant constructors must have (implicit) const parameters.
-
-import "package:expect/expect.dart";
-
-class ConstCounter {
-  // Incorrect assignment of a non const function to a final field.
-  const ConstCounter(int i) : nextValue_ = (() => i++);
-
-  final nextValue_;
-
-  int nextValue() {
-    return nextValue_();
-  }
-}
-
-class ConstCounterNegativeTest {
-  static testMain() {
-    ConstCounter cc = const ConstCounter(3);
-    Expect.equals(3, cc.nextValue());
-  }
-}
-
-main() {
-  ConstCounterNegativeTest.testMain();
-}
diff --git a/tests/language/const_dynamic_type_literal_test.dart b/tests/language/const_dynamic_type_literal_test.dart
deleted file mode 100644
index e35eea2..0000000
--- a/tests/language/const_dynamic_type_literal_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that 'dynamic' can be used in const expressions and has the expected
-// behavior.
-
-import "package:expect/expect.dart";
-
-const d = dynamic;
-const i = int;
-
-void main() {
-  Expect.isTrue(identical(d, dynamic)); //# 01: ok
-  Expect.equals(1, const { d: 1, d: 2 }.length); //# 02: static type warning
-  Expect.equals(2, const { d: 1, i: 2 }.length); //# 03: ok
-}
diff --git a/tests/language/const_error_multiply_initialized_test.dart b/tests/language/const_error_multiply_initialized_test.dart
deleted file mode 100644
index be132da..0000000
--- a/tests/language/const_error_multiply_initialized_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class C {
-  // Since this field is final and already initialized, the specification says
-  // that a runtime error occurs when attempting to initialize it in the
-  // constructor. When used as a compile-time constant, this causes a
-  // compile-time error.
-  final x = 1;
-
-  const C(
-      this. //# 01: compile-time error
-      this. //# 02: compile-time error 
-      x
-    )
-    : x = 2 //# 03: compile-time error
-    : x = 2 //# 04: compile-time error
-    ;
-}
-
-instantiateC() {
-  const C(0); //# 01: continued
-  const C(0); //# 03: continued
-  new C(0);
-}
-
-main() {
-  bool shouldThrow = false;
-  shouldThrow = true; //# 02: continued
-  shouldThrow = true; //# 04: continued
-  if (shouldThrow) {
-    Expect.throws(instantiateC());
-  } else {
-    instantiateC();
-  }
-}
diff --git a/tests/language/const_escape_frog_test.dart b/tests/language/const_escape_frog_test.dart
deleted file mode 100644
index 4a1f76d..0000000
--- a/tests/language/const_escape_frog_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test division by power of two.
-// Test that results before and after optimization are the same.
-
-import "package:expect/expect.dart";
-
-class Foo {
-  final Bar<Foo> bar = const Bar /* comment here used to trigger bug 323 */ ();
-}
-
-class Bar<T extends Foo> {
-  const Bar();
-}
-
-main() {
-  Expect.equals(new Foo().bar, const Bar());
-}
diff --git a/tests/language/const_evaluation_test.dart b/tests/language/const_evaluation_test.dart
deleted file mode 100644
index fafbb21..0000000
--- a/tests/language/const_evaluation_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Check that compile-time evaluation of constants is consistent with runtime
-// evaluation.
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-const top_const = identical(-0.0, 0);
-final top_final = identical(-0.0, 0);
-var top_var = identical(-0.0, 0);
-
-@top_const
-class C {
-  static const static_const = identical(-0.0, 0);
-  static final static_final = identical(-0.0, 0);
-  static var static_var = identical(-0.0, 0);
-
-  final instance_final = identical(-0.0, 0);
-  var instance_var = identical(-0.0, 0);
-
-  void test() {
-    const local_const = identical(-0.0, 0);
-    final local_final = identical(-0.0, 0);
-    var local_var = identical(-0.0, 0);
-
-    Expect.equals(identical(-0.0, 0), top_const);
-    Expect.equals(top_const, top_final);
-    Expect.equals(top_final, top_var);
-    Expect.equals(top_var, static_const);
-    Expect.equals(static_const, static_final);
-    Expect.equals(static_final, static_var);
-    Expect.equals(static_var, instance_final);
-    Expect.equals(instance_final, instance_var);
-    Expect.equals(instance_var, local_const);
-    Expect.equals(local_const, local_final);
-    Expect.equals(local_final, local_var);
-    var metadata = reflectClass(C).metadata[0].reflectee; //# 01: ok
-    Expect.equals(top_const, metadata); //                  //# 01: continued
-    Expect.equals(local_var, metadata); //                  //# 01: continued
-  }
-}
-
-void main() {
-  new C().test();
-}
diff --git a/tests/language/const_factory_redirection_test.dart b/tests/language/const_factory_redirection_test.dart
deleted file mode 100644
index 3d2fdea..0000000
--- a/tests/language/const_factory_redirection_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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";
-
-// Test that factory redirections work for compile-time constants, and
-// that abstract classes can redirect.
-
-abstract class C {
-  const factory C(int x) = D;
-}
-
-class D implements C {
-  final int i;
-  const D(this.i);
-  m() => 'called m';
-}
-
-main() {
-  const C c = const C(42);
-  D d = c;
-  Expect.equals(42, d.i);
-  Expect.equals('called m', d.m());
-  d = new C(42);
-  Expect.equals(42, d.i);
-  Expect.equals('called m', d.m());
-}
diff --git a/tests/language/const_factory_with_body_test.dart b/tests/language/const_factory_with_body_test.dart
deleted file mode 100644
index 19f28b5..0000000
--- a/tests/language/const_factory_with_body_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Tests that a "const factory" with body produces a compile-time error.
-
-class ConstFactoryWithBody {
-  const factory ConstFactoryWithBody.one() { } // //# 01: syntax error
-}
-
-main() {
-  const ConstFactoryWithBody.one(); // //# 01: continued
-}
diff --git a/tests/language/const_for_in_variable_test.dart b/tests/language/const_for_in_variable_test.dart
deleted file mode 100644
index dc12639a..0000000
--- a/tests/language/const_for_in_variable_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2015, 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.
-
-main() {
-  for (
-      const //                          //# 01: compile-time error
-      final //                          //# 02: ok
-      int x in const [1, 2, 3]) {
-    break;
-  }
-}
diff --git a/tests/language/const_getter_test.dart b/tests/language/const_getter_test.dart
deleted file mode 100644
index 26ac3a6..0000000
--- a/tests/language/const_getter_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Check that const getters are not allowed.
-
-import 'package:expect/expect.dart';
-
-class C {
-  const C();
-
-  const //# 01: syntax error
-  get x => 1;
-}
-
-const //# 02: syntax error
-get y => 2;
-
-main() {
-  Expect.equals(1, const C().x);
-  Expect.equals(2, y);
-}
diff --git a/tests/language/const_global_test.dart b/tests/language/const_global_test.dart
deleted file mode 100644
index 99143d4..0000000
--- a/tests/language/const_global_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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";
-
-const a = 1;
-
-main() {
-  Expect.equals(1, a);
-  Expect.equals(1, const A(a).a);
-  Expect.equals(1, const [const A(a)][0].a);
-}
-
-class A {
-  final a;
-  const A(this.a);
-}
diff --git a/tests/language/const_init2_test.dart b/tests/language/const_init2_test.dart
deleted file mode 100644
index ada367f..0000000
--- a/tests/language/const_init2_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2014, 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.
-
-const double c = 0.0; //# 01: ok
-const double d = 0; //# 02: static type warning, checked mode compile-time error
-
-main() {
-  print(c); //# 01: continued
-  print(d); //# 02: continued
-}
diff --git a/tests/language/const_init_test.dart b/tests/language/const_init_test.dart
deleted file mode 100644
index 714f9e1..0000000
--- a/tests/language/const_init_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that initializers of static const fields are compile time constants.
-
-import "package:expect/expect.dart";
-
-class Point {
-  final x_;
-  final y_;
-  const Point(x, y)
-      : x_ = x,
-        y_ = y;
-}
-
-class ConstInitTest {
-  static const N = 1;
-  static const O = 1 + 3;
-  static const P = 2 * (O - N);
-  static const Q = const Point(0, 0);
-
-  static const Q2 = const Point(0, 0);
-  static const P2 = 2 * (O - N);
-  static const O2 = 1 + 3;
-  static const N2 = 1;
-
-  static testMain() {
-    Expect.equals(1, N);
-    Expect.equals(4, O);
-    Expect.equals(6, P);
-    Expect.equals(0, Q.x_);
-    Expect.equals(0, Q.y_);
-  }
-}
-
-main() {
-  ConstInitTest.testMain();
-}
diff --git a/tests/language/const_instance_field_test.dart b/tests/language/const_instance_field_test.dart
deleted file mode 100644
index 1584887..0000000
--- a/tests/language/const_instance_field_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that const instance fields are compile-time errors.
-
-class C {
-  const field = 0; //# 01: syntax error
-}
-
-void main() {
-  new C();
-}
diff --git a/tests/language/const_list_test.dart b/tests/language/const_list_test.dart
deleted file mode 100644
index 924ba8a..0000000
--- a/tests/language/const_list_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class ConstListTest {
-  static testConstructors() {
-    List fixedList = new List(4);
-    List fixedList2 = new List(4);
-    List growableList = new List();
-    List growableList2 = new List();
-    for (int i = 0; i < 4; i++) {
-      fixedList[i] = i;
-      fixedList2[i] = i;
-      growableList.add(i);
-      growableList2.add(i);
-    }
-    Expect.equals(true, growableList == growableList);
-    Expect.equals(false, growableList == growableList2);
-    Expect.equals(true, fixedList == fixedList);
-    Expect.equals(false, fixedList == fixedList2);
-    Expect.equals(false, fixedList == growableList);
-    growableList.add(4);
-    Expect.equals(false, fixedList == growableList);
-    Expect.equals(4, growableList.removeLast());
-    Expect.equals(false, fixedList == growableList);
-    fixedList[3] = 0;
-    Expect.equals(false, fixedList == growableList);
-  }
-
-  static testLiterals() {
-    var a = [1, 2, 3.1];
-    var b = [1, 2, 3.1];
-    Expect.equals(false, a == b);
-    a = const [1, 2, 3.1];
-    b = const [1, 2, 3.1];
-    Expect.equals(true, a == b);
-    a = const <num>[1, 2, 3.1];
-    b = const [1, 2, 3.1];
-    Expect.equals(false, a == b);
-    a = const <dynamic>[1, 2, 3.1];
-    b = const [1, 2, 3.1];
-    Expect.equals(true, a == b);
-  }
-}
-
-main() {
-  ConstListTest.testConstructors();
-  ConstListTest.testLiterals();
-}
diff --git a/tests/language/const_local_test.dart b/tests/language/const_local_test.dart
deleted file mode 100644
index f5288ed..0000000
--- a/tests/language/const_local_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  const a = 1;
-  Expect.equals(1, a);
-  Expect.equals(1, const A(a).a);
-  Expect.equals(1, const [const A(a)][0].a);
-}
-
-class A {
-  final a;
-  const A(this.a);
-}
diff --git a/tests/language/const_locals_test.dart b/tests/language/const_locals_test.dart
deleted file mode 100644
index 00fc637..0000000
--- a/tests/language/const_locals_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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";
-
-// Test of compile time constant local variables.
-
-const N = 8;
-
-class ConstFoo {
-  final x;
-  const ConstFoo(this.x);
-}
-
-main() {
-  const MIN = 2 - 1;
-  const MAX = N * 2;
-  const MASK = (1 << (MAX - MIN + 1)) - 1; // 65535.
-  Expect.equals(1, MIN);
-  Expect.equals(16, MAX);
-  Expect.equals(65535, MASK);
-  const s = 'MIN = $MIN  MAX = $MAX  MASK = $MASK';
-  Expect.identical(s, 'MIN = $MIN  MAX = $MAX  MASK = $MASK');
-  Expect.equals("MIN = 1  MAX = 16  MASK = 65535", s);
-  var cf1 = const ConstFoo(MASK);
-  var cf2 = const ConstFoo(s);
-  var cf3 = const ConstFoo('MIN = $MIN  MAX = $MAX  MASK = $MASK');
-  Expect.identical(cf2, cf3);
-  Expect.isFalse(identical(cf2, cf1));
-}
diff --git a/tests/language/const_map2_test.dart b/tests/language/const_map2_test.dart
deleted file mode 100644
index dccddb0..0000000
--- a/tests/language/const_map2_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class A {
-  const factory A() = B;
-}
-
-class B implements A {
-  const B();
-
-  operator ==(o) => true; // //# 00: compile-time error
-}
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-main() {
-  // It is a compile-time error if the key type overrides operator ==.
-  var m = const {const A(): 42};
-  Expect.equals(42, m[confuse(const B())]);
-
-  m = const {"foo": 99, const A(): 499};
-  Expect.equals(499, m[confuse(const B())]);
-}
diff --git a/tests/language/const_map3_test.dart b/tests/language/const_map3_test.dart
deleted file mode 100644
index 0d799f0..0000000
--- a/tests/language/const_map3_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class A {
-  static const b = const B();
-}
-
-class B implements A {
-  const B();
-
-  operator ==(o) => true; // //# 00: compile-time error
-}
-
-main() {
-  // It is a compile-time error if the key type overrides operator ==.
-  var m = const {A.b: 42};
-  Expect.equals(42, m[const B()]);
-
-  m = const {"foo": 99, A.b: 499};
-  Expect.equals(499, m[const B()]);
-}
diff --git a/tests/language/const_map4_test.dart b/tests/language/const_map4_test.dart
deleted file mode 100644
index 2198b6e..0000000
--- a/tests/language/const_map4_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  var a = {1: 'a', 2: 'b', 3: 'c'};
-  var b = {1: 'a', 2: 'b', 3: 'c'};
-  Expect.equals(false, a == b);
-
-  a = const {1: 'a', 2: 'b', 3: 'c'};
-  b = const {1: 'a', 2: 'b', 3: 'c'};
-  Expect.equals(true, a == b);
-
-  a = const <num, String>{1: 'a', 2: 'b', 3: 'c'};
-  b = const {1: 'a', 2: 'b', 3: 'c'};
-  Expect.equals(false, a == b);
-
-  a = const <dynamic, dynamic>{1: 'a', 2: 'b', 3: 'c'};
-  b = const {1: 'a', 2: 'b', 3: 'c'};
-  Expect.equals(true, a == b);
-}
diff --git a/tests/language/const_map_test.dart b/tests/language/const_map_test.dart
deleted file mode 100644
index 8e93140..0000000
--- a/tests/language/const_map_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2014, 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";
-
-/// Returns its argument.
-///
-/// Prevents static optimizations and inlining.
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-main() {
-  // Make sure that const maps use the == operator and not identical. The
-  // specification does not explicitly require it, but otherwise ints and
-  // Strings wouldn't make much sense as keys.
-  var m = const {1: 42, "foo": 499};
-  Expect.equals(42, m[confuse(1.0)]);
-  Expect.equals(499, m[confuse(new String.fromCharCodes("foo".runes))]);
-}
diff --git a/tests/language/const_named_test.dart b/tests/language/const_named_test.dart
deleted file mode 100644
index 94b5598..0000000
--- a/tests/language/const_named_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that const constructors work with named arguments.
-
-import "package:expect/expect.dart";
-
-main() {
-  var d = const Duration(milliseconds: 499);
-  Expect.equals(499, d.inMilliseconds);
-}
diff --git a/tests/language/const_native_factory_test.dart b/tests/language/const_native_factory_test.dart
deleted file mode 100644
index 2187bf9..0000000
--- a/tests/language/const_native_factory_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-class Cake {
-  final name;
-  const Cake(this.name);
-  const factory BakeMeACake() native "Cake_BakeMeACake"; // //# 01: compile-time error
-}
-
-main() {
-  var c = const Cake("Sacher");
-}
diff --git a/tests/language/const_nested_test.dart b/tests/language/const_nested_test.dart
deleted file mode 100644
index bf52d67..0000000
--- a/tests/language/const_nested_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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";
-
-// Test of compile time constant local variables in outer function levels.
-
-const N = 8;
-
-class ConstFoo {
-  final x;
-  const ConstFoo(this.x);
-}
-
-getClosure() {
-  const MIN = 2 - 1;
-  const MAX = N * 2;
-  const MASK = (1 << (MAX - MIN + 1)) - 1; // 65535.
-
-  void foo() {
-    Expect.equals(1, MIN);
-    Expect.equals(16, MAX);
-    Expect.equals(65535, MASK);
-    // Refer to compile time constant local variables in outer scope.
-    const s = 'MIN = $MIN  MAX = $MAX  MASK = $MASK';
-    Expect.isTrue(identical(s, 'MIN = $MIN  MAX = $MAX  MASK = $MASK'));
-    Expect.equals("MIN = 1  MAX = 16  MASK = 65535", s);
-    var cf1 = const ConstFoo(MASK);
-    var cf2 = const ConstFoo(s);
-    var cf3 = const ConstFoo('MIN = $MIN  MAX = $MAX  MASK = $MASK');
-    Expect.isTrue(identical(cf2, cf3));
-    Expect.isFalse(identical(cf2, cf1));
-  }
-
-  return foo;
-}
-
-main() {
-  var f = getClosure();
-  f();
-}
diff --git a/tests/language/const_objects_are_immutable_test.dart b/tests/language/const_objects_are_immutable_test.dart
deleted file mode 100644
index 3daa082..0000000
--- a/tests/language/const_objects_are_immutable_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that const objects (including literals) are immutable.
-
-import "package:expect/expect.dart";
-
-class A {
-  const A(this.x, this.y);
-  final num x, y;
-}
-
-main() {
-  var list = const [1, 2];
-  Expect.throws(() => list[0] = 3);
-  Expect.equals(1, list[0]);
-
-  var m = const {'foo': 499};
-  Expect.throws(() => m['foo'] = 42);
-  Expect.equals(499, m['foo']);
-
-  var a1 = const A(1, 2);
-  Expect.throws(() => a1.x = 499);
-  Expect.equals(1, a1.x);
-
-  A a2 = const A(1, 2);
-  Expect.throws(() => a2.x = 499); //# 01: static type warning
-  Expect.equals(1, a2.x);
-}
diff --git a/tests/language/const_optional_args_negative_test.dart b/tests/language/const_optional_args_negative_test.dart
deleted file mode 100644
index ac0cbe9..0000000
--- a/tests/language/const_optional_args_negative_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that const objects (including literals) are immutable.
-
-// should be 'const {}'
-invalid([var p = {}]) {}
-
-main() {
-  invalid();
-}
diff --git a/tests/language/const_qq_test.dart b/tests/language/const_qq_test.dart
deleted file mode 100644
index 7b91c96..0000000
--- a/tests/language/const_qq_test.dart
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Check that ?? is compile-time constant.
-
-import "package:expect/expect.dart";
-
-const theNull = null;
-const notNull = const Object();
-
-// Top-level const field initializer.
-const test1 = theNull ?? notNull;
-const test2 = notNull ?? theNull;
-const test3 = theNull ?? theNull ?? notNull;
-const test4 = theNull ?? theNull ?? theNull;
-
-class P {
-  final v;
-  const P(this.v);
-}
-
-// Annotation parameter (not checked by test!)
-@P(theNull ?? notNull)
-@P(notNull ?? theNull)
-@P(theNull ?? theNull ?? notNull)
-@P(theNull ?? theNull ?? theNull)
-class C {
-  // Static const field initializer.
-  static const test5 = theNull ?? notNull;
-  static const test6 = notNull ?? theNull;
-  static const test7 = theNull ?? theNull ?? notNull;
-  static const test8 = theNull ?? theNull ?? theNull;
-
-  // (Constructor) parameter defaults.
-  final test9;
-  final test10;
-  final test11;
-  final test12;
-
-  // Const constructor initializer list.
-  final test13;
-  final test14;
-  final test15;
-  final test16;
-  final test17;
-
-  const C(x,
-      [this.test9 = theNull ?? notNull,
-      this.test10 = notNull ?? theNull,
-      this.test11 = theNull ?? theNull ?? notNull,
-      this.test12 = theNull ?? theNull ?? theNull])
-      : test13 = theNull ?? x,
-        test14 = notNull ?? x,
-        test15 = x ?? notNull,
-        test16 = theNull ?? theNull ?? x,
-        test17 = theNull ?? x ?? notNull;
-
-  List methodLocal() {
-    // Method local const variable initializer.
-    const test18 = theNull ?? notNull;
-    const test19 = notNull ?? theNull;
-    const test20 = theNull ?? theNull ?? notNull;
-    const test21 = theNull ?? theNull ?? theNull;
-
-    return const [test18, test19, test20, test21];
-  }
-
-  List expressionLocal() {
-    // Constant expression sub-expression.
-    return const [
-      theNull ?? notNull,
-      notNull ?? theNull,
-      theNull ?? theNull ?? notNull,
-      theNull ?? theNull ?? theNull
-    ];
-  }
-}
-
-main() {
-  Expect.identical(notNull, test1, "test1");
-  Expect.identical(notNull, test2, "test2");
-  Expect.identical(notNull, test3, "test3");
-  Expect.identical(theNull, test4, "test4");
-
-  Expect.identical(notNull, C.test5, "test5");
-  Expect.identical(notNull, C.test6, "test6");
-  Expect.identical(notNull, C.test7, "test7");
-  Expect.identical(theNull, C.test8, "test8");
-
-  const c1 = const C(null);
-  Expect.identical(notNull, c1.test9, "test9");
-  Expect.identical(notNull, c1.test10, "test10");
-  Expect.identical(notNull, c1.test11, "test11");
-  Expect.identical(theNull, c1.test12, "test12");
-
-  Expect.identical(theNull, c1.test13, "test13");
-  Expect.identical(notNull, c1.test14, "test14");
-  Expect.identical(notNull, c1.test15, "test15");
-  Expect.identical(theNull, c1.test16, "test16");
-  Expect.identical(notNull, c1.test17, "test17");
-
-  var list = c1.methodLocal();
-  Expect.identical(notNull, list[0], "test18");
-  Expect.identical(notNull, list[1], "test19");
-  Expect.identical(notNull, list[2], "test20");
-  Expect.identical(theNull, list[3], "test21");
-
-  list = c1.expressionLocal();
-  Expect.identical(notNull, list[0], "test22");
-  Expect.identical(notNull, list[1], "test23");
-  Expect.identical(notNull, list[2], "test24");
-  Expect.identical(theNull, list[3], "test25");
-
-  const c2 = const C(42);
-  Expect.identical(notNull, c2.test9, "test26");
-  Expect.identical(notNull, c2.test10, "test27");
-  Expect.identical(notNull, c2.test11, "test28");
-  Expect.identical(theNull, c2.test12, "test29");
-
-  Expect.identical(42, c2.test13, "test30");
-  Expect.identical(notNull, c2.test14, "test31");
-  Expect.identical(42, c2.test15, "test32");
-  Expect.identical(42, c2.test16, "test33");
-  Expect.identical(42, c2.test17, "test34");
-
-  list = c2.methodLocal();
-  Expect.identical(notNull, list[0], "test35");
-  Expect.identical(notNull, list[1], "test36");
-  Expect.identical(notNull, list[2], "test37");
-  Expect.identical(theNull, list[3], "test38");
-
-  list = c2.expressionLocal();
-  Expect.identical(notNull, list[0], "test39");
-  Expect.identical(notNull, list[1], "test40");
-  Expect.identical(notNull, list[2], "test41");
-  Expect.identical(theNull, list[3], "test42");
-}
diff --git a/tests/language/const_redirect_skips_supertype_test.dart b/tests/language/const_redirect_skips_supertype_test.dart
deleted file mode 100644
index f79ad5a..0000000
--- a/tests/language/const_redirect_skips_supertype_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// Since C redirects to C.named, it doesn't implicitly refer to B's
-// unnamed constructor.  Therefore there is no cycle.
-
-class B {
-  final x;
-  const B() : x = y;
-  const B.named() : x = null;
-}
-
-class C extends B {
-  const C() : this.named();
-  const C.named() : super.named();
-}
-
-const y = const C();
-
-main() {
-  print(y);
-}
diff --git a/tests/language/const_redirecting_factory_test.dart b/tests/language/const_redirecting_factory_test.dart
deleted file mode 100644
index a8ab57a..0000000
--- a/tests/language/const_redirecting_factory_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class K implements L {
-  final field1;
-  final field2;
-  const K({this.field1: 42, this.field2: true});
-}
-
-class L {
-  const factory L() = K;
-  const factory L.named1({field1, field2}) = K;
-  const factory L.named2({field2, field1}) = K;
-}
-
-const l1 = const L();
-
-const l2a = const L.named1();
-const l2b = const L.named1(field1: 87);
-const l2c = const L.named1(field2: false);
-const l2d = const L.named1(field1: 87, field2: false);
-const l2e = const L.named1(field2: false, field1: 87);
-
-const l3a = const L.named2();
-const l3b = const L.named2(field1: 87);
-const l3c = const L.named2(field2: false);
-const l3d = const L.named2(field1: 87, field2: false);
-const l3e = const L.named2(field2: false, field1: 87);
-
-main() {
-  Expect.equals(42, l1.field1);
-  Expect.equals(true, l1.field2);
-
-  Expect.equals(42, l2a.field1);
-  Expect.equals(true, l2a.field2);
-  Expect.equals(87, l2b.field1);
-  Expect.equals(true, l2b.field2);
-  Expect.equals(42, l2c.field1);
-  Expect.equals(false, l2c.field2);
-  Expect.equals(87, l2d.field1);
-  Expect.equals(false, l2d.field2);
-  Expect.equals(87, l2e.field1);
-  Expect.equals(false, l2e.field2);
-
-  Expect.equals(42, l3a.field1);
-  Expect.equals(true, l3a.field2);
-  Expect.equals(87, l3b.field1);
-  Expect.equals(true, l3b.field2);
-  Expect.equals(42, l3c.field1);
-  Expect.equals(false, l3c.field2);
-  Expect.equals(87, l3d.field1);
-  Expect.equals(false, l3d.field2);
-  Expect.equals(87, l3e.field1);
-  Expect.equals(false, l3e.field2);
-}
diff --git a/tests/language/const_string_test.dart b/tests/language/const_string_test.dart
deleted file mode 100644
index 13f1a9c..0000000
--- a/tests/language/const_string_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Exercises compile-time string constants
-
-const yz = "y" + "z";
-
-main() {
-  // Constant comparisons are independent of the quotes used.
-  Expect.isTrue(identical("abcd", 'abcd'));
-  Expect.isTrue(identical('abcd', "abcd"));
-  Expect.isTrue(identical("ab\"cd", 'ab"cd'));
-  Expect.isTrue(identical('ab\'cd', "ab'cd"));
-
-  // String concatenation works even when quotes are different.
-  Expect.isTrue(identical("abcd", "ab" "cd"));
-  Expect.isTrue(identical("abcd", "ab" 'cd'));
-  Expect.isTrue(identical("abcd", 'ab' 'cd'));
-  Expect.isTrue(identical("abcd", 'ab' "cd"));
-
-  // Or when there are more than 2 contatenations.
-  Expect.isTrue(identical("abcd", "a" "b" "cd"));
-  Expect.isTrue(identical("abcd", "a" "b" "c" "d"));
-  Expect.isTrue(identical('abcd', 'a' 'b' 'c' 'd'));
-  Expect.isTrue(identical("abcd", "a" "b" 'c' "d"));
-  Expect.isTrue(identical("abcd", 'a' 'b' 'c' 'd'));
-  Expect.isTrue(identical("abcd", 'a' "b" 'c' "d"));
-
-  Expect.isTrue(identical("a'b'cd", "a" "'b'" 'c' "d"));
-  Expect.isTrue(identical("a\"b\"cd", "a" '"b"' 'c' "d"));
-  Expect.isTrue(identical("a\"b\"cd", "a" '"b"' 'c' "d"));
-  Expect.isTrue(identical("a'b'cd", 'a' "'b'" 'c' "d"));
-  Expect.isTrue(identical('a\'b\'cd', "a" "'b'" 'c' "d"));
-  Expect.isTrue(identical('a"b"cd', 'a' '"b"' 'c' "d"));
-  Expect.isTrue(identical("a\"b\"cd", 'a' '"b"' 'c' "d"));
-
-  const a = identical("ab", "a" + "b");
-  Expect.isTrue(a);
-
-  const b = identical("xyz", "x" + yz);
-  Expect.isTrue(b);
-
-  const c = identical("12", "1" "2");
-  Expect.isTrue(c);
-
-  const d = identical("zyz", "z$yz");
-  Expect.isTrue(d);
-}
diff --git a/tests/language/const_switch2_test.dart b/tests/language/const_switch2_test.dart
deleted file mode 100644
index 3cf5177..0000000
--- a/tests/language/const_switch2_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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';
-
-int main() {
-  var a = [1, 2, 3][2];
-  switch (a) {
-    case 0.0: //           //# 01: compile-time error
-      print("illegal"); // //# 01: continued
-    case 1:
-      print("OK");
-  }
-}
diff --git a/tests/language/const_switch_test.dart b/tests/language/const_switch_test.dart
deleted file mode 100644
index 8e2890b..0000000
--- a/tests/language/const_switch_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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';
-
-class C {
-  final field;
-  const C(this.field);
-}
-
-const c1 = const C(0.0);
-const c2 = const C(0);
-const c3 = const C(0.5 + 0.5);
-const c4 = const C(1);
-
-main() {
-  Expect.equals('0.0', test(c1)); //# 01: ok
-  Expect.equals('0', test(c2)); //  //# 02: ok
-  Expect.equals('1.0', test(c3)); //# 03: ok
-  Expect.equals('1', test(c4)); //  //# 04: ok
-}
-
-String test(C c) {
-  switch (c) {
-    case const C(0.0):
-      return '0.0';
-    case const C(0):
-      return '0';
-    case const C(1.0):
-      return '1.0';
-    case const C(1):
-      return '1';
-  }
-  return null;
-}
diff --git a/tests/language/const_syntax_test.dart b/tests/language/const_syntax_test.dart
deleted file mode 100644
index ffbcb08..0000000
--- a/tests/language/const_syntax_test.dart
+++ /dev/null
@@ -1,89 +0,0 @@
-// 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";
-
-main() {
-  const f0 = 42;
-  const f1; //# 01: compile-time error
-  const int f2 = 87;
-  const int f3; //# 02: compile-time error
-  Expect.equals(42, f0);
-  Expect.equals(87, f2);
-
-  Expect.equals(42, F0);
-  Expect.equals(null, F1); //# 03: continued
-  Expect.equals(87, F2);
-  Expect.equals(null, F3); //# 04: continued
-
-  Expect.isTrue(P0 is Point);
-  Expect.isTrue(P1 is int); //  //# 05: compile-time error
-  Expect.isTrue(P2 is Point); //# 06: compile-time error
-  Expect.isTrue(P3 is int); //  //# 07: compile-time error
-
-  Expect.isTrue(A0 is int);
-  Expect.isTrue(A1 is int);
-  Expect.isTrue(A2 is int); //# 08: compile-time error
-  Expect.isTrue(A3 is int); //# 08: continued
-
-  Expect.isTrue(C0.X is C1);
-  Expect.isTrue(C0.X.x is C1); //# 09: compile-time error
-
-  Expect.equals("Hello 42", B2);
-  Expect.equals("42Hello", B3); //# 10: compile-time error
-
-  const cf1 = identical(const Point(1, 2), const Point(1, 2));
-
-  const cf2 = identical(const Point(1, 2), new Point(1, 2)); // //# 11: compile-time error
-
-  var f4 = B4; //  //# 12: compile-time error
-  var f5 = B5;
-}
-
-const F0 = 42;
-const F1; //                //# 03: syntax error
-const int F2 = 87;
-const int F3; //            //# 04: syntax error
-
-class Point {
-  final x, y;
-  const Point(this.x, this.y);
-  operator +(int other) => x;
-}
-
-// Check that compile time expressions can include invocations of
-// user-defined const constructors.
-const P0 = const Point(0, 0);
-const P1 = const Point(0, 0) + 1; //# 05: continued
-const P2 = new Point(0, 0); //      //# 06: continued
-const P3 = new Point(0, 0) + 1; //  //# 07: continued
-
-// Check that we cannot have cyclic references in compile time
-// expressions.
-const A0 = 42;
-const A1 = A0 + 1;
-const A2 = A3 + 1; //# 08: continued
-const A3 = A2 + 1; //# 08: continued
-
-class C0 {
-  static const X = const C1();
-}
-
-class C1 {
-  const C1()
-      : x = C0.X //# 09: continued
-  ;
-  final x = null;
-}
-
-// Check that sub-expressions of binary + are numeric.
-const B0 = 42;
-const B1 = "Hello";
-const B2 = "$B1 $B0";
-const B3 = B0 + B1; //# 10: continued
-
-// Check identical.
-
-const B4 = identical(1, new Point(1,2)); // //# 12: compile-time error
-const B5 = identical(1, const Point(1, 2));
diff --git a/tests/language/const_test.dart b/tests/language/const_test.dart
deleted file mode 100644
index d97f547..0000000
--- a/tests/language/const_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-// Check const classes.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class AConst {
-  const AConst() : b_ = 3;
-  final int b_;
-}
-
-class BConst {
-  const BConst();
-  set foo(value) {}
-  get foo {
-    return 5;
-  }
-
-  operator [](ix) {
-    return ix;
-  }
-
-  operator []=(ix, value) {}
-}
-
-testMain() {
-  var o = const AConst();
-  Expect.equals(3, o.b_);
-
-  var x = (const BConst()).foo++;
-  Expect.equals(5, x);
-
-  var y = (const BConst())[5]++;
-  Expect.equals(5, y);
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    testMain();
-  }
-}
diff --git a/tests/language/const_types_test.dart b/tests/language/const_types_test.dart
deleted file mode 100644
index 0269eae..0000000
--- a/tests/language/const_types_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test handling of malformed types in constant expressions.
-
-use(x) {}
-
-class Class<T> implements Superclass {
-  const Class();
-  const Class.named();
-
-  void test() {
-    use(const []);
-    use(const <Class>[]);
-    use(const <Class<int>>[]);
-    use(const <Class<Unresolved>>[]); //# 01: static type warning
-    use(const <Unresolved>[]); //# 02: static type warning
-
-    use(const {});
-    use(const <Class>{}); //# 03: static type warning
-    use(const <String, Class>{});
-    use(const <String, Class<int>>{});
-    use(const <String, Class<Unresolved>>{}); //# 04: static type warning
-    use(const <String, Unresolved>{}); //# 05: static type warning
-
-    use(const Class());
-    use(const Class<int>());
-    use(const Class<Unresolved>()); //# 06: static type warning
-    use(const Class<T>()); //# 07: compile-time error
-    use(const Class<Class<T>>()); //# 08: compile-time error
-
-    use(const Unresolved()); //# 09: compile-time error
-    use(const Unresolved<int>()); //# 10: compile-time error
-    use(const prefix.Unresolved()); //# 11: compile-time error
-    use(const prefix.Unresolved<int>()); //# 12: compile-time error
-
-    use(const Class.named());
-    use(const Class<int>.named());
-    use(const Class<Unresolved>.named()); //# 13: static type warning
-    use(const Class<T>.named()); //# 14: compile-time error
-    use(const Class<Class<T>>.named()); //# 15: compile-time error
-
-    use(const Class.nonamed()); //# 16: compile-time error
-    use(const Class<int>.nonamed()); //# 17: compile-time error
-    use(const Class<Unresolved>.nonamed()); //# 18: compile-time error
-    use(const Class<T>.nonamed()); //# 19: compile-time error
-    use(const Class<Class<T>>.nonamed()); //# 20: compile-time error
-
-    use(const Unresolved.named()); //# 21: compile-time error
-    use(const Unresolved<int>.named()); //# 22: compile-time error
-  }
-}
-
-class Superclass<T> {
-  const factory Superclass() = Unresolved; //# 23: compile-time error
-  const factory Superclass() = Unresolved<int>; //# 24: compile-time error
-  const factory Superclass() = Unresolved.named; //# 25: compile-time error
-  const factory Superclass() = Unresolved<int>.named; //# 26: compile-time error
-
-  const factory Superclass() = prefix.Unresolved; //# 27: compile-time error
-  const factory Superclass() = prefix.Unresolved<int>; //# 28: compile-time error
-  const factory Superclass() = prefix.Unresolved.named; //# 29: compile-time error
-  const factory Superclass() = prefix.Unresolved<int>.named; //# 30: compile-time error
-
-  const factory Superclass() = Class; //# 31: ok
-  const factory Superclass() = Class<int>; //# 32: ok
-  const factory Superclass() = Class<T>; //# 33: ok
-  const factory Superclass() = Class<Class<T>>; //# 34: ok
-  const factory Superclass() = Class<Unresolved>; //# 35: static type warning
-
-  const factory Superclass() = Class.named; //# 36: ok
-  const factory Superclass() = Class<int>.named; //# 37: ok
-  const factory Superclass() = Class<T>.named; //# 38: ok
-  const factory Superclass() = Class<Class<T>>.named; //# 39: ok
-  const factory Superclass() = Class<Unresolved>.named; //# 40: static type warning
-
-  const factory Superclass() = T; //# 41: compile-time error
-}
-
-void main() {
-  new Class().test();
-  new Superclass();
-}
diff --git a/tests/language/const_var_helper.dart b/tests/language/const_var_helper.dart
deleted file mode 100644
index 5fb3dca..0000000
--- a/tests/language/const_var_helper.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-// All things regarding constant variables.
-
-/** Helper library for 'const_var_test.dart' */
-library const_var_helper;
-
-class Foo<E> {
-  const Foo();
-}
diff --git a/tests/language/const_var_test.dart b/tests/language/const_var_test.dart
deleted file mode 100644
index 21c808d..0000000
--- a/tests/language/const_var_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-// All things regarding constant variables.
-
-library const_var;
-
-import 'const_var_helper.dart' as foo;
-
-const untypedTopLevel = 1;
-const int typedTopLevel = 2;
-const Map<String, String> genericTopLevel = const <String, String>{};
-
-main() {
-  const untypedLocal = 3;
-  const int typedLocal = 4;
-  const Map<String, String> genericLocal = const <String, String>{};
-  const [];
-  const {};
-  const <int>[];
-  const <String, int>{};
-  const Foo();
-  const Foo<int>();
-  const foo.Foo();
-  const foo.Foo<int>();
-}
-
-class Foo<E> {
-  const Foo();
-}
diff --git a/tests/language/constant_fold_equals_test.dart b/tests/language/constant_fold_equals_test.dart
deleted file mode 100644
index 48a11d1..0000000
--- a/tests/language/constant_fold_equals_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-main() {
-  var a = 'foo';
-  for (int i = 0; i < 10; i++) {
-    if (i == 0) {
-      Expect.isTrue(identical(a, 'foo'));
-    } else {
-      Expect.isTrue(a == 2);
-    }
-    a = 2;
-  }
-}
diff --git a/tests/language/constant_locals_test.dart b/tests/language/constant_locals_test.dart
deleted file mode 100644
index f5aa080..0000000
--- a/tests/language/constant_locals_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that constant local variables have constant initializers.
-
-import "package:expect/expect.dart";
-
-void main() {
-  const c1; //# 01: compile-time error
-  const c2 = 0;
-  const c3 = field; //# 02: compile-time error
-  const c4 = finalField; //# 03: compile-time error
-  const c5 = constField;
-  const c6 = method(); //# 04: compile-time error
-  const c7 = new Class(); //# 05: compile-time error
-  const c8 = const Class();
-}
-
-var field = 0;
-
-final finalField = 0;
-
-const constField = 0;
-
-method() => 0;
-
-class Class {
-  const Class();
-}
diff --git a/tests/language/constant_propagation_phis_test.dart b/tests/language/constant_propagation_phis_test.dart
deleted file mode 100644
index 0ba7d72..0000000
--- a/tests/language/constant_propagation_phis_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test that constant propagation correctly updates phis when predecessor's
-// reachability changes.
-
-final keys = const ["keyA"];
-final values = const ["a"];
-
-main() {
-  for (var i = 0; i < 20; i++) test(keys[0]);
-}
-
-test(key) {
-  var ref = key2value(key);
-  Expect.equals("a", (ref == null) ? "-" : ref);
-}
-
-key2value(key) {
-  var index = indexOf(keys, key);
-  return (index == -1) ? null : values[index];
-}
-
-indexOf(keys, key) {
-  for (var i = keys.length - 1; i >= 0; i--) {
-    var equals = keys[i] == key;
-    if (equals) return i;
-  }
-  return -1;
-}
diff --git a/tests/language/constant_string_interpolation2_test.dart b/tests/language/constant_string_interpolation2_test.dart
deleted file mode 100644
index 4033d8e3..0000000
--- a/tests/language/constant_string_interpolation2_test.dart
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2015, 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";
-
-// Regression test for issue #24839 - http://dartbug.com/24839
-
-const u1 = null;
-const int u2 = null;
-const List u3 = null;
-const u4 = const String.fromEnvironment("XXXXX");
-const u5 = const int.fromEnvironment("XXXXX");
-const u6 = const bool.fromEnvironment("XXXXX", defaultValue: null);
-const n1 = 42;
-const n2 = 3.1415;
-const int n3 = 37;
-const double n4 = 4.6692;
-const num n5 = b3 ? 1 : 2.71828;
-const n6 = const int.fromEnvironment("XXXXX", defaultValue: 87);
-const s1 = "s1";
-const String s2 = "s2";
-const String s3 = "$s1$s2";
-const s4 = const String.fromEnvironment("XXXXX", defaultValue: "s4");
-const b1 = true;
-const b2 = false;
-const b3 = b1 && (b2 || !b1);
-const b4 = const bool.fromEnvironment("XXXXX", defaultValue: true);
-
-// Individually
-const su1 = "$u1";
-const su2 = "$u2";
-const su3 = "$u3";
-const su4 = "$u4";
-const su5 = "$u5";
-const su6 = "$u6";
-const sn1 = "$n1";
-const sn2 = "$n2";
-const sn3 = "$n3";
-const sn4 = "$n4";
-const sn5 = "$n5";
-const sn6 = "$n6";
-const ss1 = "$s1";
-const ss2 = "$s2";
-const ss3 = "$s3";
-const ss4 = "$s4";
-const sb1 = "$b1";
-const sb2 = "$b2";
-const sb3 = "$b3";
-const sb4 = "$b4";
-
-// Constant variables in interpolation.
-const interpolation1 =
-    "$u1 $u2 $u3 $u4 $u5 $u6 $n1 $n2 $n3 $n4 $n5 $n6 $s1 $s2 $s3 $s4 $b1 $b2 $b3 $b4";
-// Constant expressions in interpolation.
-// (Single string, the linebreak to fit this into 80 chars is inside an
-// interpolation, which is allowed, even for single-line strings).
-const interpolation2 =
-    "${u1} ${u2} ${u3} ${u4} ${u5} ${u6} ${n1} ${n2} ${n3} ${n4} ${n5} ${n6} ${
-     s1} ${s2} ${s3} ${s4} ${b1} ${b2} ${b3} ${b4}";
-// Adjacent string literals are combined.
-const interpolation3 = "$u1 $u2 $u3 $u4 $u5 "
-    '$u6 $n1 $n2 $n3 $n4 '
-    """$n5 $n6 $s1 $s2 $s3 """
-    '''$s4 $b1 $b2 $b3 $b4''';
-// Nested interpolations.
-const interpolation4 = "${"$u1 $u2 $u3 $u4 $u5 " '$u6 $n1 $n2 $n3 $n4'} ${
-     """$n5 $n6 $s1 $s2 $s3 """ '''$s4 $b1 $b2 $b3 $b4'''}";
-
-main() {
-  Expect.equals(u1.toString(), su1);
-  Expect.equals(u2.toString(), su2);
-  Expect.equals(u3.toString(), su3);
-  Expect.equals(u4.toString(), su4);
-  Expect.equals(u5.toString(), su5);
-  Expect.equals(u6.toString(), su6);
-  Expect.equals(n1.toString(), sn1);
-  Expect.equals(n2.toString(), sn2);
-  Expect.equals(n3.toString(), sn3);
-  Expect.equals(n4.toString(), sn4);
-  Expect.equals(n5.toString(), sn5);
-  Expect.equals(n6.toString(), sn6);
-  Expect.equals(s1.toString(), ss1);
-  Expect.equals(s2.toString(), ss2);
-  Expect.equals(s3.toString(), ss3);
-  Expect.equals(s4.toString(), ss4);
-  Expect.equals(b1.toString(), sb1);
-  Expect.equals(b2.toString(), sb2);
-  Expect.equals(b3.toString(), sb3);
-  Expect.equals(b4.toString(), sb4);
-  var expect = "null null null null null null 42 3.1415 37 4.6692 2.71828 87 "
-      "s1 s2 s1s2 s4 true false false true";
-  Expect.equals(expect, interpolation1);
-  Expect.equals(expect, interpolation2);
-  Expect.equals(expect, interpolation3);
-  Expect.equals(expect, interpolation4);
-}
diff --git a/tests/language/constant_string_interpolation_test.dart b/tests/language/constant_string_interpolation_test.dart
deleted file mode 100644
index 16121c9..0000000
--- a/tests/language/constant_string_interpolation_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  final a = new A();
-  for (int i = 0; i < 20; i++) {
-    final r = interpolIt(a);
-    Expect.stringEquals("hello home", r);
-  }
-  final b = new B();
-  // Deoptimize "interpolIt".
-  final r = interpolIt(b);
-  Expect.stringEquals("hello world", r);
-}
-
-String interpolIt(v) {
-  // String interpolation will be constant folded.
-  return "hello ${v.foo()}";
-}
-
-class A {
-  foo() => "home";
-}
-
-class B {
-  foo() => "world";
-}
diff --git a/tests/language/constant_type_literal_test.dart b/tests/language/constant_type_literal_test.dart
deleted file mode 100644
index f3b910b..0000000
--- a/tests/language/constant_type_literal_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for type literals as compile-time constants.
-
-class C<T> {
-  void m() {
-    const List lst = const [
-      T //# 01: compile-time error
-    ];
-  }
-}
-
-main() {
-  new C().m();
-}
diff --git a/tests/language/constants_test.dart b/tests/language/constants_test.dart
deleted file mode 100644
index 98442d8..0000000
--- a/tests/language/constants_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-
-class C {
-  factory C() => null;
-}
-
-const //# 01: syntax error
-t() => null;
-
-const //# 02: syntax error
-get v => null;
-
-main() {
-  const //# 03: compile-time error
-      dynamic x = t();
-  const y = const C(); //# 04: compile-time error
-  const //# 05: compile-time error
-      dynamic z = v;
-}
diff --git a/tests/language/constructor10_test.dart b/tests/language/constructor10_test.dart
deleted file mode 100644
index 87d28d7..0000000
--- a/tests/language/constructor10_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Check that the implicit super call for synthetic constructors are checked.
-
-class A {
-  final x;
-  A(this.x);
-}
-
-class B extends A {
-  /* // //# 00: compile-time error
-  B() : super(null);
-  */ // //# 00: continued
-}
-
-// ==========
-
-class Y extends A {
-  /* // //# 01: compile-time error
-  Y() : super(null);
-  */ // //# 01: continued
-}
-
-class Z extends Y {
-  Z() : super();
-}
-
-// ==============
-
-class G extends A {
-  /* // //# 02: compile-time error
-  G() : super(null);
-  */ // //# 02: continued
-}
-
-class H extends G {}
-
-main() {
-  new B().x;
-  new Z().x;
-  new H().x;
-}
diff --git a/tests/language/constructor11_test.dart b/tests/language/constructor11_test.dart
deleted file mode 100644
index 73d08a3..0000000
--- a/tests/language/constructor11_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Check that the implicit super call for synthetic constructors are checked.
-
-import "package:expect/expect.dart";
-
-class A {
-  final x;
-  A([this.x = 499]);
-}
-
-class B extends A {}
-
-// ==========
-
-class X {
-  final x;
-  X([this.x = 42]);
-}
-
-class Y extends X {}
-
-class Z extends Y {
-  Z() : super();
-}
-
-// ==============
-
-class F {
-  final x;
-  F([this.x = 99]);
-}
-
-class G extends F {}
-
-class H extends G {}
-
-main() {
-  Expect.equals(499, new B().x);
-  Expect.equals(42, new Z().x);
-  Expect.equals(99, new H().x);
-}
diff --git a/tests/language/constructor12_test.dart b/tests/language/constructor12_test.dart
deleted file mode 100644
index 81b2525..0000000
--- a/tests/language/constructor12_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class B {
-  final z;
-  B(this.z);
-
-  foo() => this.z;
-}
-
-class A<T> extends B {
-  var captured, captured2;
-  var typedList;
-
-  // p must be inside a box (in dart2js).
-  A(p)
-      : captured = (() => p),
-        super(p++) {
-    // Make non-inlinable.
-    try {} catch (e) {}
-
-    captured2 = () => p++;
-
-    // In the current implementation of dart2js makes the generic type an
-    // argument to the body.
-    typedList = <T>[];
-  }
-
-  foo() => captured();
-  bar() => captured2();
-}
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-main() {
-  var a = confuse(new A<int>(1));
-  var a2 = confuse(new A(2));
-  var b = confuse(new B(3));
-  Expect.equals(2, a.foo());
-  Expect.equals(3, a2.foo());
-  Expect.equals(3, b.foo());
-  Expect.equals(1, a.z);
-  Expect.equals(2, a2.z);
-  Expect.equals(3, b.z);
-  Expect.isTrue(a is A<int>);
-  Expect.isFalse(a is A<String>);
-  Expect.isTrue(a2 is A<int>);
-  Expect.isTrue(a2 is A<String>);
-  Expect.equals(2, a.bar());
-  Expect.equals(3, a2.bar());
-  Expect.equals(3, a.foo());
-  Expect.equals(4, a2.foo());
-  Expect.equals(0, a.typedList.length);
-  Expect.equals(0, a2.typedList.length);
-  a.typedList.add(499);
-  Expect.equals(1, a.typedList.length);
-  Expect.equals(0, a2.typedList.length);
-  Expect.isTrue(a.typedList is List<int>);
-  Expect.isTrue(a2.typedList is List<int>);
-  Expect.isFalse(a.typedList is List<String>);
-  Expect.isTrue(a2.typedList is List<String>);
-}
diff --git a/tests/language/constructor2_test.dart b/tests/language/constructor2_test.dart
deleted file mode 100644
index 7a13045..0000000
--- a/tests/language/constructor2_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Expect the initializer expressions E(i) to be evaluated
-// in the order 1, 2, 3, ...
-// Each expression must be evaluated exactly once.
-
-String trace = "";
-
-int E(int i) {
-  trace += "$i-";
-  return i;
-}
-
-class A {
-  var a1;
-  A(x, y) : a1 = E(4) {
-    Expect.equals(2, x);
-    Expect.equals(3, y);
-    Expect.equals(4, a1);
-    E(6);
-  }
-}
-
-class B extends A {
-  var b1, b2;
-
-  B(x)
-      : b1 = E(1),
-        super(E(2), E(3)),
-        b2 = E(5) {
-    Expect.equals(1, b1);
-    Expect.equals(5, b2);
-    E(7);
-  }
-}
-
-main() {
-  var b = new B(0);
-  Expect.equals("1-2-3-4-5-6-7-", trace);
-}
diff --git a/tests/language/constructor3_negative_test.dart b/tests/language/constructor3_negative_test.dart
deleted file mode 100644
index 7c58b39..0000000
--- a/tests/language/constructor3_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Check that there's no crash when constructor called with wrong
-// number of args.
-
-class Klass {
-  Klass(var v) {}
-}
-
-main() {
-  var k = new Klass();
-  var l = new Klass(1, 2);
-}
diff --git a/tests/language/constructor3_test.dart b/tests/language/constructor3_test.dart
deleted file mode 100644
index 86c5111..0000000
--- a/tests/language/constructor3_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Expect the initializer expressions E(i) to be evaluated
-// in the order 1, 2, 3, ...
-// Each expression must be evaluated exactly once.
-
-String trace = "";
-
-int E(int i) {
-  trace += "$i-";
-  return i;
-}
-
-class A {
-  var a1;
-  A(x, y) : a1 = E(3) {
-    Expect.equals(1, x);
-    Expect.equals(2, y);
-    E(5);
-  }
-}
-
-class B extends A {
-  var b1;
-  B(x)
-      : super(E(1), E(2)),
-        b1 = E(4) {
-    // Implicit super call to A's body happens here.
-    Expect.equals(4, b1);
-    E(6);
-  }
-}
-
-main() {
-  var b = new B(0);
-  Expect.equals("1-2-3-4-5-6-", trace);
-}
diff --git a/tests/language/constructor4_test.dart b/tests/language/constructor4_test.dart
deleted file mode 100644
index b4df9b0..0000000
--- a/tests/language/constructor4_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Expect the initializer expressions E(i) to be evaluated
-// in the order 1, 2, 3, ...
-// Each expression must be evaluated exactly once.
-
-String trace = "";
-
-int E(int i) {
-  trace += "$i-";
-  return i;
-}
-
-class A {
-  var a1;
-  A() : a1 = E(2) {
-    E(3);
-  }
-}
-
-class B extends A {
-  var b1;
-  B(x) : b1 = E(1) /* Implicit super call to A's initializers happens here. */ {
-    // Implicit super call to A's body happens here.
-    E(4);
-  }
-}
-
-main() {
-  var b = new B(0);
-  Expect.equals("1-2-3-4-", trace);
-}
diff --git a/tests/language/constructor5_test.dart b/tests/language/constructor5_test.dart
deleted file mode 100644
index e92c360..0000000
--- a/tests/language/constructor5_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Super initializer and super constructor body are executed in with the same
-// bindings.
-
-String trace = "";
-
-int E(int i) {
-  trace = "$trace$i-";
-  return i;
-}
-
-class A {
-  A({arg1: 100, arg2: 200})
-      : a1 = E(arg1++),
-        a2 = E(arg2++) {
-    // b2 should be initialized between the above initializers and the following
-    // statements.
-    E(arg1); // 101
-    E(arg2); // 51
-  }
-  var a1;
-  var a2;
-}
-
-class B extends A {
-  // Initializers in order: b1, super, b2.
-  B(x, y)
-      : b1 = E(x++),
-        super(arg2: 50),
-        b2 = E(y++) {
-    // Implicit super call to A's body happens here.
-    E(x); // 11
-    E(y); // 21
-  }
-  var b1;
-  var b2;
-}
-
-class C extends B {
-  C() : super(10, 20);
-}
-
-main() {
-  var c = new C();
-  Expect.equals(100, c.a1);
-  Expect.equals(50, c.a2);
-  Expect.equals(10, c.b1);
-  Expect.equals(20, c.b2);
-
-  Expect.equals("10-100-50-20-101-51-11-21-", trace);
-}
diff --git a/tests/language/constructor6_test.dart b/tests/language/constructor6_test.dart
deleted file mode 100644
index ebd1aca..0000000
--- a/tests/language/constructor6_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Super initializer and super constructor body are executed in with the same
-// bindings.
-
-String trace = "";
-
-int E(int i) {
-  trace = "$trace$i-";
-  return i;
-}
-
-class A {
-  // f closes-over arg.  arg needs to be preserved while b2 is initialized.
-  A(arg)
-      : a = E(arg += 1),
-        f = (() => E(arg += 10)) {
-    // b2 should be initialized between the above initializers and the following
-    // statements.
-    var r1 = f();
-    E(arg += 100); // If this is the same arg as closed by f, ...
-    var r2 = f(); //  .. the effect of +=100 will be seen here.
-  }
-  final a;
-  final f;
-}
-
-class B extends A {
-  // Initializers in order: b1, super, b2.
-  B(x, y)
-      : b1 = E(x++),
-        super(1000),
-        b2 = E(y++) {
-    // Implicit super call to A's body happens here.
-    E(x);
-    E(y);
-    f();
-  }
-  var b1;
-  var b2;
-}
-
-class C extends B {
-  C() : super(10, 20);
-}
-
-main() {
-  var c = new C();
-  Expect.equals("10-1001-20-1011-1111-1121-11-21-1131-", trace);
-}
diff --git a/tests/language/constructor7_test.dart b/tests/language/constructor7_test.dart
deleted file mode 100644
index 131dbd0..0000000
--- a/tests/language/constructor7_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-// Expect the initializer expressions E(i) to be evaluated
-// in the order 1, 2, 3, ...
-// This test has no inheritance but many fields to flush out issues with
-// ordering of fields.
-
-String trace = "";
-
-int E(int i) {
-  trace += "$i-";
-  return i;
-}
-
-class A {
-  var j; //      Names are in reverse order to detect sorting by name...
-  var i = 0; // Initialized odd/even to detect these inits affecting order.
-  var h;
-  var g = 0;
-  var f;
-  var e = 0;
-  var d;
-  var c = 0;
-  var b;
-  var a = 0;
-
-  A()
-      : a = E(1), // Initializations in different order to decls.  Ascending...
-        b = E(2),
-        c = E(3),
-        f = E(4), // Descending to be perverse...
-        e = E(5),
-        d = E(6),
-        g = E(7), // Ascending again.
-        h = E(8),
-        i = E(9),
-        j = E(10) {
-    Expect.equals(1, a);
-    Expect.equals(2, b);
-    Expect.equals(3, c);
-
-    Expect.equals(4, f);
-    Expect.equals(5, e);
-    Expect.equals(6, d);
-
-    Expect.equals(7, g);
-    Expect.equals(8, h);
-    Expect.equals(9, i);
-    Expect.equals(10, j);
-  }
-}
-
-main() {
-  var x = new A();
-  Expect.equals('1-2-3-4-5-6-7-8-9-10-', trace);
-}
diff --git a/tests/language/constructor8_test.dart b/tests/language/constructor8_test.dart
deleted file mode 100644
index 9fb3762..0000000
--- a/tests/language/constructor8_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Regression test for dart2js that used to crash on this program.
-
-class A {
-  var b;
-
-  // The closure in the constructor body used to confuse the SSA builder
-  // when it created the call to the constructor body.
-  A.withClosure(Map a) {
-    var c;
-    var f = () {
-      return c = 42;
-    };
-    b = f();
-    Expect.equals(42, b);
-    Expect.equals(42, c);
-  }
-}
-
-main() {
-  new A.withClosure(null);
-  new A.withClosure({});
-}
diff --git a/tests/language/constructor9_test.dart b/tests/language/constructor9_test.dart
deleted file mode 100644
index fc13e5b..0000000
--- a/tests/language/constructor9_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Check that all final instance fields of a class are initialized by
-// constructors.
-
-class Klass {
-  Klass(var v) : field_ = v {}
-  final uninitializedFinalField_; // //# 01: static type warning
-  var field_;
-}
-
-main() {
-  new Klass(5);
-}
diff --git a/tests/language/constructor_body_test.dart b/tests/language/constructor_body_test.dart
deleted file mode 100644
index d64d61f..0000000
--- a/tests/language/constructor_body_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors without function bodies.
-
-import "package:expect/expect.dart";
-
-// Test a non-const constructor works without a body.
-class First {
-  First(int this.value);
-  First.named(int this.value);
-  int value;
-}
-
-// Test a const constructor works without a body.
-class Second {
-  const Second(int this.value);
-  const Second.named(int this.value);
-  final int value;
-}
-
-class ConstructorBodyTest {
-  static testMain() {
-    Expect.equals(4, new First(4).value);
-    Expect.equals(5, new First.named(5).value);
-    Expect.equals(6, new Second(6).value);
-    Expect.equals(7, new Second.named(7).value);
-  }
-}
-
-main() {
-  ConstructorBodyTest.testMain();
-}
diff --git a/tests/language/constructor_call_as_function_test.dart b/tests/language/constructor_call_as_function_test.dart
deleted file mode 100644
index 515c235..0000000
--- a/tests/language/constructor_call_as_function_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to make sure we catch missing new or const
-// when allocating a new object.
-
-class Point {
-  const Point(this.x, this.y);
-  final int x;
-  final int y;
-}
-
-main() {
-  Point p = Point(1, 2); // //# 01: static type warning, runtime error
-}
diff --git a/tests/language/constructor_call_wrong_argument_count_negative_test.dart b/tests/language/constructor_call_wrong_argument_count_negative_test.dart
deleted file mode 100644
index 183a640..0000000
--- a/tests/language/constructor_call_wrong_argument_count_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test mismatch in argument counts.
-
-class ConstructorCallWrongArgumentCountNegativeTest {
-  static void testMain() {
-    Stockhorn nh = new Stockhorn(1);
-    nh.goodCall(1, 2, 3);
-    nh = new Stockhorn();
-  }
-}
-
-class Stockhorn {
-  Stockhorn(int a) {}
-  int goodCall(int a, int b, int c) {
-    return a + b;
-  }
-}
-
-main() {
-  ConstructorCallWrongArgumentCountNegativeTest.testMain();
-}
diff --git a/tests/language/constructor_default_test.dart b/tests/language/constructor_default_test.dart
deleted file mode 100644
index aae9c52..0000000
--- a/tests/language/constructor_default_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for default constructors.
-
-import "package:expect/expect.dart";
-
-class A {
-  A() : a = 499;
-
-  var a;
-}
-
-class B extends A {
-  B() {
-    Expect.equals(499, a);
-  }
-}
-
-main() {
-  new B();
-}
diff --git a/tests/language/constructor_duplicate_final_test.dart b/tests/language/constructor_duplicate_final_test.dart
deleted file mode 100644
index 93c72f2..0000000
--- a/tests/language/constructor_duplicate_final_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Check that duplicate initialization of a final field is a runtime error.
-
-class Class {
-  final f = 10;
-
-  Class(v) : f = v; // //# 01: runtime error, static type warning
-
-  Class(this.f); // //# 02: runtime error, static type warning
-
-  // If a field is initialized multiple times in the initializer
-  // list, it's a compile time error.
-  Class(this.f) : f = 0; // //# 03: compile-time error
-}
-
-main() {
-  new Class(5); // //# 01: continued
-  new Class(5); // //# 02: continued
-  new Class(5); // //# 03: continued
-}
diff --git a/tests/language/constructor_duplicate_initializers_test.dart b/tests/language/constructor_duplicate_initializers_test.dart
deleted file mode 100644
index 9c873b1..0000000
--- a/tests/language/constructor_duplicate_initializers_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that initializers are not duplicated
-
-class Class {
-  Class(var v) : field_ = v
-  // Test against duplicate final field initialization in initializing list.
-    , field_ = 2 // //# 01: compile-time error
-  ;
-  Class.field(this.field_)
-  // Test against duplicate final field initialization between initializing
-  // formals and initializer list.
-    : field_ = 2 // //# 02: compile-time error
-  ;
-  // Test against duplicate final field initialization in initializing formals.
-  Class.two_fields(this.field_
-    , this.field_ //# 03: compile-time error
-      );
-  final field_;
-}
-
-main() {
-  new Class(42);
-  new Class.field(42);
-  new Class.two_fields(42
-    , 42 //  //# 03: continued
-      );
-}
diff --git a/tests/language/constructor_initializer_test.dart b/tests/language/constructor_initializer_test.dart
deleted file mode 100644
index 4fac57b..0000000
--- a/tests/language/constructor_initializer_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  var _x, _y;
-  A(x, [y = 10])
-      : _x = x++,
-        _y = y++ {
-    // Check that value of modified constructor parameters
-    // is remembered in the constructor body.
-    Expect.equals(x, _x + 1);
-    Expect.equals(y, _y + 1);
-    Expect.isFalse(?y); // //# 01: syntax error
-  }
-}
-
-class B extends A {
-  var _a, _b;
-  // The super call in the middle of the initializer list conceptually
-  // forces two super call chains, one for initializer list and a second
-  // one for the constructor bodies.
-  B(a, b)
-      : _a = a++,
-        super(a + b++),
-        _b = b++ {
-    Expect.equals(a, _a + 1);
-    Expect.equals(b, _b + 1);
-    Expect.equals(a + (b - 2), _x);
-  }
-}
-
-main() {
-  var o = new B(3, 5);
-  Expect.equals(3, o._a);
-  Expect.equals(6, o._b);
-  Expect.equals(9, o._x);
-  Expect.equals(10, o._y);
-  o = new A(3);
-  Expect.equals(3, o._x);
-  Expect.equals(10, o._y);
-}
diff --git a/tests/language/constructor_name_clash_lib.dart b/tests/language/constructor_name_clash_lib.dart
deleted file mode 100644
index ff52f3b..0000000
--- a/tests/language/constructor_name_clash_lib.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2015, 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 lib;
-
-var global = 0;
-
-class A {
-  A() {
-    global += 10;
-    try {} catch (e) {} // no inline
-  }
-}
diff --git a/tests/language/constructor_name_clash_test.dart b/tests/language/constructor_name_clash_test.dart
deleted file mode 100644
index 25432ec..0000000
--- a/tests/language/constructor_name_clash_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2015, 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';
-import 'constructor_name_clash_lib.dart' as lib;
-
-class A extends lib.A {
-  A() {
-    lib.global += 100;
-    try {} catch (e) {} // no inline
-  }
-}
-
-main() {
-  new A();
-  Expect.equals(110, lib.global);
-}
diff --git a/tests/language/constructor_name_test.dart b/tests/language/constructor_name_test.dart
deleted file mode 100644
index 43e764f..0000000
--- a/tests/language/constructor_name_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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 Foo {
-  Bar.Foo(); //# 01: compile-time error
-  factory Bar(); //# 02: syntax error
-  factory Bar.Baz(); //# 03: syntax error
-}
-
-void main() {
-  new Foo();
-  new Foo.Foo(); //# 01: continued
-  new Foo.Baz(); //# 03: continued
-}
diff --git a/tests/language/constructor_named_arguments_test.dart b/tests/language/constructor_named_arguments_test.dart
deleted file mode 100644
index 4bd51f7..0000000
--- a/tests/language/constructor_named_arguments_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// 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.
-// Dart test program for default constructors.
-
-import "package:expect/expect.dart";
-
-String message;
-
-foo() {
-  message += 'foo';
-  return 1;
-}
-
-bar() {
-  message += 'bar';
-  return 2;
-}
-
-class X {
-  var i;
-  var j;
-  X({a: 'defa', b: 'defb'})
-      : this.i = a,
-        this.j = b;
-  X.foo() : this(b: 1, a: 2);
-  X.bar()
-      : this(
-                     1, // //# 01: static type warning, runtime error
-            a: 2);
-  X.baz() : this(a: 1, b: 2);
-  X.qux() : this(b: 2);
-  X.hest() : this();
-  X.fisk() : this(b: bar(), a: foo());
-  X.naebdyr() : this(a: foo(), b: bar());
-}
-
-test(x, a, b) {
-  Expect.equals(x.i, a);
-  Expect.equals(x.j, b);
-}
-
-main() {
-  test(new X.foo(), 2, 1);
-  test(new X.bar(), 2, 'defb');
-  test(new X.baz(), 1, 2);
-  test(new X.qux(), 'defa', 2);
-  test(new X.hest(), 'defa', 'defb');
-
-  message = '';
-  new X.fisk();
-  Expect.equals('barfoo', message);
-
-  message = '';
-  new X.naebdyr();
-  Expect.equals('foobar', message);
-}
diff --git a/tests/language/constructor_redirect1_negative_test.dart b/tests/language/constructor_redirect1_negative_test.dart
deleted file mode 100644
index f2972cc..0000000
--- a/tests/language/constructor_redirect1_negative_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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.
-// Redirection constructors must not be cyclic.
-
-class A {
-  var x;
-  A(x) : this.named(x, 0);
-  A.named(x, int y) : this(x + y);
-}
-
-class ConstructorRedirect1NegativeTest {
-  static testMain() {
-    new A(10);
-  }
-}
-
-main() {
-  ConstructorRedirect1NegativeTest.testMain();
-}
diff --git a/tests/language/constructor_redirect2_negative_test.dart b/tests/language/constructor_redirect2_negative_test.dart
deleted file mode 100644
index bbb03c6..0000000
--- a/tests/language/constructor_redirect2_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Redirection constructors must not be cyclic.
-
-class A {
-  var x;
-  A(x) : this(0);
-}
-
-class ConstructorRedirect2NegativeTest {
-  static testMain() {
-    new A(10);
-  }
-}
-
-main() {
-  ConstructorRedirect2NegativeTest.testMain();
-}
diff --git a/tests/language/constructor_redirect2_test.dart b/tests/language/constructor_redirect2_test.dart
deleted file mode 100644
index 9c726e1..0000000
--- a/tests/language/constructor_redirect2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-// Redirection constructors must not have a function body.
-
-class A {
-  var x;
-  A(this.x) {}
-
-  // Redirecting constructor must not have a function body.
-  A.illegalBody(x) : this(3) {} //     //# 01: syntax error
-
-  // Redirecting constructor must not initialize any fields.
-  A.illegalInit() : this(3), x = 5; // //# 02: syntax error
-
-  // Redirecting constructor must not have initializing formal parameters.
-  A.illegalFormal(this.x) : this(3); // //# 03: compile-time error
-
-  // Redirection constructors must not call super constructor.
-  A.illegalSuper() : this(3), super(3); // //# 04: syntax error
-}
-
-main() {
-  new A(3);
-  new A.illegalBody(10); //        //# 01: continued
-  new A.illegalInit(); //          //# 02: continued
-  new A.illegalFormal(10); //      //# 03: continued
-  new A.illegalSuper(); //         //# 04: continued
-}
diff --git a/tests/language/constructor_redirect_test.dart b/tests/language/constructor_redirect_test.dart
deleted file mode 100644
index 64616c9..0000000
--- a/tests/language/constructor_redirect_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for redirection constructors.
-
-import "package:expect/expect.dart";
-
-class A {
-  var x;
-  A(this.x) {}
-  A.named(x, int y) : this(x + y);
-  A.named2(int x, int y, z) : this.named(staticFun(x, y), z);
-
-  // The following is a bit tricky. It is a compile-time error to
-  // refer to this (implicitly or explicitly) from an initializer.
-  // When we remove the line with moreStaticFun, staticFun is really a
-  // static function and it is legal to call it. This is what will
-  // happen in the /none version of this test. However, in /01,
-  // staticFun isn't really a static function and should cause a
-  // compile-time error.
-  static
-  moreStaticFun() {} //# 01: compile-time error
-      int staticFun(int v1, int v2) {
-    return v1 * v2;
-  }
-}
-
-class B extends A {
-  B(y) : super(y + 1) {}
-  B.named(y) : super.named(y, y + 1) {}
-}
-
-class C {
-  final x;
-  const C(this.x);
-  const C.named(x, int y) : this(x + y);
-}
-
-class D extends C {
-  const D(y) : super(y + 1);
-  const D.named(y) : super.named(y, y + 1);
-}
-
-class ConstructorRedirectTest {
-  static testMain() {
-    var a = new A(499);
-    Expect.equals(499, a.x);
-    a = new A.named(349, 499);
-    Expect.equals(349 + 499, a.x);
-    a = new A.named2(11, 42, 99);
-    Expect.equals(11 * 42 + 99, a.x);
-
-    var b = new B(498);
-    Expect.equals(499, b.x);
-    b = new B.named(249);
-    Expect.equals(499, b.x);
-
-    C c = const C(499);
-    Expect.equals(499, c.x);
-    c = const C.named(249, 250);
-    Expect.equals(499, c.x);
-
-    D d = const D(498);
-    Expect.equals(499, d.x);
-    d = const D.named(249);
-    Expect.equals(499, d.x);
-  }
-}
-
-main() {
-  ConstructorRedirectTest.testMain();
-}
diff --git a/tests/language/constructor_return_test.dart b/tests/language/constructor_return_test.dart
deleted file mode 100644
index 2f03e58..0000000
--- a/tests/language/constructor_return_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart spec 0.03, section 11.10 - generative constructors can only have return
-// statements in the form 'return;'.
-class A {
-  int x;
-  A(this.x) {
-    return;
-  }
-  A.test1(this.x) {
-    return this; // //# 01: compile-time error
-  }
-  A.test2(this.x) {
-    return null; // //# 02: compile-time error
-  }
-  int foo(int y) => x + y;
-}
-
-class B {
-  B() => null; // //# 03: compile-time error
-}
-
-class C {
-  int value;
-  C() : value = 1 { return null; } // //# 04: compile-time error
-}
-
-class D {
-  int value;
-  D(): value = 1 => null; // //# 05: compile-time error
-}
-
-main() {
-  Expect.equals((new A(1)).foo(10), 11);
-  Expect.equals((new A.test1(1)).foo(10), 11);
-  Expect.equals((new A.test2(1)).foo(10), 11);
-  new B();
-  new C();
-  new D();
-}
diff --git a/tests/language/constructor_setter_negative_test.dart b/tests/language/constructor_setter_negative_test.dart
deleted file mode 100644
index cdd7cfc..0000000
--- a/tests/language/constructor_setter_negative_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that setters are not invokable in the initializer list.
-
-class A {
-  A() : a = 499; // <==== Error here.
-
-  set a(val) {}
-}
-
-main() {
-  new A();
-}
diff --git a/tests/language/constructor_test.dart b/tests/language/constructor_test.dart
deleted file mode 100644
index b1cd81b..0000000
--- a/tests/language/constructor_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for constructors and initializers.
-
-import "package:expect/expect.dart";
-
-class A extends B {
-  A(x, y)
-      : super(y),
-        a = x {}
-
-  var a;
-}
-
-class B {
-  var b;
-
-  B(x) : b = x {}
-
-  B.namedB(var x) : b = x {}
-}
-
-// Test the order of initialization: first the instance variable then
-// the super constructor.
-abstract class Alpha {
-  Alpha(v) {
-    this.foo(v);
-  }
-  foo(v) => throw 'Alpha.foo should never be called.';
-}
-
-class Beta extends Alpha {
-  Beta(v)
-      : super(v),
-        b = 1 {}
-
-  foo(v) {
-    // Check that 'b' was initialized.
-    Expect.equals(1, b);
-    b = v;
-  }
-
-  var b;
-}
-
-class ConstructorTest {
-  static testMain() {
-    var o = new A(10, 2);
-    Expect.equals(10, o.a);
-    Expect.equals(2, o.b);
-
-    var o1 = new B.namedB(10);
-    Expect.equals(10, o1.b);
-
-    Expect.equals(22, o.a + o.b + o1.b);
-
-    var beta = new Beta(3);
-    Expect.equals(3, beta.b);
-  }
-}
-
-main() {
-  ConstructorTest.testMain();
-}
diff --git a/tests/language/constructor_with_mixin_test.dart b/tests/language/constructor_with_mixin_test.dart
deleted file mode 100644
index 97a9a16..0000000
--- a/tests/language/constructor_with_mixin_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test super constructor invocation with mixins.
-// Regression test for issue dartbug.com/22604
-
-import "package:expect/expect.dart";
-
-var a_count = 0;
-var b_count = 0;
-
-class A {
-  final int x;
-  A(int this.x) {
-    a_count++;
-  }
-}
-
-class I {}
-
-class B extends A with I {
-  int y;
-
-  B(int xx)
-      : super(xx),
-        y = 13 {
-    b_count++;
-  }
-}
-
-void main() {
-  var b = new B(17);
-  Expect.equals(1, a_count);
-  Expect.equals(1, b_count);
-}
diff --git a/tests/language/context2_test.dart b/tests/language/context2_test.dart
deleted file mode 100644
index 1db17ff..0000000
--- a/tests/language/context2_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-// Dart test for capturing.
-
-import "package:expect/expect.dart";
-
-// Regression test for issue 5991015.
-
-class V {
-  notCalled(Function x) {
-    return x();
-  }
-
-  foofoo(x) {
-    return x;
-  }
-
-  hoop(input, n) {
-    while (n-- > 0) {
-      Expect.equals(5, input);
-      continue; // This continue statement must properly unchain the context.
-      switch (input) {
-        case 3:
-          var values = foofoo;
-          notCalled(() => values(input));
-      }
-    }
-  }
-}
-
-main() {
-  new V().hoop(5, 3);
-}
diff --git a/tests/language/context_args_with_defaults_test.dart b/tests/language/context_args_with_defaults_test.dart
deleted file mode 100644
index 21c89a6..0000000
--- a/tests/language/context_args_with_defaults_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class ContextArgsWithDefaultsTest {
-  static void testMain() {
-    crasher(1, 'foo')();
-  }
-
-  static crasher(int fixed, [String optional = '']) {
-    return () {
-      Expect.equals(1, fixed);
-      Expect.equals('foo', optional);
-    };
-  }
-}
-
-main() {
-  ContextArgsWithDefaultsTest.testMain();
-}
diff --git a/tests/language/context_test.dart b/tests/language/context_test.dart
deleted file mode 100644
index f2b96b1..0000000
--- a/tests/language/context_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for capturing.
-
-import "package:expect/expect.dart";
-
-class ContextTest {
-  static foo(Function f) {
-    return f();
-  }
-
-  static void testMain() {
-    int x = 42;
-    bar() {
-      return x;
-    }
-
-    x++;
-    Expect.equals(43, foo(bar));
-  }
-}
-
-main() {
-  ContextTest.testMain();
-}
diff --git a/tests/language/continue_test.dart b/tests/language/continue_test.dart
deleted file mode 100644
index 4587241..0000000
--- a/tests/language/continue_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for continue in for, do/while and while loops.
-
-import "package:expect/expect.dart";
-
-class ContinueTest {
-  static testMain() {
-    int i;
-    int forCounter = 0;
-    for (i = 0; i < 10; i++) {
-      if (i > 3) continue;
-      forCounter++;
-    }
-    Expect.equals(4, forCounter);
-    Expect.equals(10, i);
-
-    i = 0;
-    int doWhileCounter = 0;
-    do {
-      i++;
-      if (i > 3) continue;
-      doWhileCounter++;
-    } while (i < 10);
-    Expect.equals(3, doWhileCounter);
-    Expect.equals(10, i);
-
-    i = 0;
-    int whileCounter = 0;
-    while (i < 10) {
-      i++;
-      if (i > 3) continue;
-      whileCounter++;
-    }
-    Expect.equals(3, whileCounter);
-    Expect.equals(10, i);
-
-    // Use a label to continue to the outer loop.
-    i = 0;
-    L:
-    while (i < 50) {
-      i += 3;
-      while (i < 30) {
-        i += 2;
-        if (i < 10) {
-          continue L;
-        } else {
-          i++;
-          break;
-        }
-      }
-      break;
-    }
-    Expect.equals(11, i);
-
-    // continue without label inside switch continues to innermost loop.
-    do {
-      i = 20;
-      switch (0) {
-        case 0:
-          i = 22;
-          continue;
-        default:
-          i = 25;
-          break;
-      }
-      i = 30;
-    } while (false);
-    Expect.equals(22, i);
-  }
-}
-
-main() {
-  ContinueTest.testMain();
-}
diff --git a/tests/language/core_type_check_test.dart b/tests/language/core_type_check_test.dart
deleted file mode 100644
index e20d8cb..0000000
--- a/tests/language/core_type_check_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// 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";
-
-check(value, expectComparable, expectPattern) {
-  Expect.equals(expectComparable, value is Comparable);
-  Expect.equals(expectPattern, value is Pattern);
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-class A implements Comparable {
-  int compareTo(o) => 0;
-}
-
-class B {}
-
-class C implements Pattern {
-  matchAsPrefix(String s, [int start = 0]) => null;
-  allMatches(String s, [int start = 0]) => null;
-}
-
-class D implements Pattern, Comparable {
-  int compareTo(o) => 0;
-  matchAsPrefix(String s, [int start = 0]) => null;
-  allMatches(String s, [int start = 0]) => null;
-}
-
-main() {
-  var things = [
-    [],
-    4,
-    4.2,
-    'foo',
-    new Object(),
-    new A(),
-    new B(),
-    new C(),
-    new D()
-  ];
-
-  check(things[inscrutable(0)], false, false); // List
-  check(things[inscrutable(1)], true, false); // int
-  check(things[inscrutable(2)], true, false); // num
-  check(things[inscrutable(3)], true, true); // string
-  check(things[inscrutable(4)], false, false); // Object
-  check(things[inscrutable(5)], true, false); // A
-  check(things[inscrutable(6)], false, false); // B
-  check(things[inscrutable(7)], false, true); // C
-  check(things[inscrutable(8)], true, true); // D
-}
diff --git a/tests/language/covariant_override_test.dart b/tests/language/covariant_override_test.dart
deleted file mode 100644
index ee463df..0000000
--- a/tests/language/covariant_override_test.dart
+++ /dev/null
@@ -1,91 +0,0 @@
-// 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.
-
-library covariant_override_test;
-
-// This test contains cases where `covariant` is used as intended.
-
-abstract class A {
-  A(this.f1, this.f2, this.f3);
-
-  // Normal usage, "by design": superclass requests covariance.
-  void m1(covariant Object o);
-
-  // Normal usage, "ad hoc": subclass requests covariance.
-  void m2(Object o);
-
-  // Syntactic special case: omit the type in subclass.
-  void m3(Object o);
-
-  // Positional optional arguments.
-  void m4([covariant Object o]);
-  void m5([Object o]);
-  void m6([Object o]);
-
-  // Named arguments.
-  void m7({covariant Object arg});
-  void m8({Object arg});
-  void m9({Object arg});
-
-  // Normal usage on field, "by design": superclass requests covariance.
-  covariant Object f1;
-
-  // Normal usage on field, "ad hoc": subclass requests covariance.
-  Object f2;
-
-  // Syntactic special case.
-  Object f3;
-}
-
-abstract class B extends A {
-  B(num f1, num f2, num f3) : super(f1, f2, f3);
-
-  void m1(num n);
-  void m2(covariant num n);
-  void m3(covariant n);
-  void m4([num n]);
-  void m5([covariant num n]);
-  void m6([covariant n]);
-  void m7({num arg});
-  void m8({covariant num arg});
-  void m9({covariant arg});
-  void set f1(num n);
-  void set f2(covariant num n);
-  void set f3(covariant n);
-}
-
-class C extends B {
-  C(int f1, int f2, int f3) : super(f1, f2, f3);
-
-  void m1(int i) {}
-  void m2(int i) {}
-  void m3(int i) {}
-  void m4([int i]) {}
-  void m5([int i]) {}
-  void m6([int i]) {}
-  void m7({int arg}) {}
-  void m8({int arg}) {}
-  void m9({int arg}) {}
-  void set f1(int i) {}
-  void set f2(int i) {}
-  void set f3(int i) {}
-}
-
-main() {
-  // For Dart 1.x, `covariant` has no runtime semantics; we just ensure
-  // that the code is not unused, such that we know it will be parsed.
-  A a = new C(39, 40, 41);
-  a.m1(42);
-  a.m2(42);
-  a.m3(42);
-  a.m4(42);
-  a.m5(42);
-  a.m6(42);
-  a.m7(arg: 42);
-  a.m8(arg: 42);
-  a.m9(arg: 42);
-  a.f1 = 42;
-  a.f2 = 42;
-  a.f3 = 42;
-}
diff --git a/tests/language/covariant_test.dart b/tests/language/covariant_test.dart
deleted file mode 100644
index 998213b..0000000
--- a/tests/language/covariant_test.dart
+++ /dev/null
@@ -1,431 +0,0 @@
-// 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.
-
-// Test that `covariant` can be parsed (and ignored) by
-// dart2js and the VM.
-// This test only checks for non-strong mode behavior.
-//
-// Generally, `covariant` should be ignored, when it is used in the right
-// places.
-
-import 'package:expect/expect.dart';
-
-// Top level field may not have a covariant.
-// Would be considered a minor (acceptable) bug, if it was accepted here too.
-covariant // //# 00: syntax error
-int x0;
-
-covariant int covariant; // //# 00b: syntax error
-
-int covariant; // //# 00c: ok
-
-// Getters may never have `covariant`. (Neither on the top-level nor as members)
-covariant // //# 01: syntax error
-int get x1 => 499;
-
-// Top level setters may not have a covariant.
-// Would be considered a minor (acceptable) bug, if it was accepted here too.
-void set x2(
-    covariant //# 02: compile-time error
-    int val) {}
-
-// Same as above, but with `covariant` in different positions.
-// The `covariant` is just wrong there.
-
-int
-covariant // //# 03: syntax error
-    x3;
-
-int
-covariant // //# 04: syntax error
-    get x4 => 499;
-
-void set x5(
-    int
-    covariant //# 05: syntax error
-        val) {}
-
-// Same without types.
-
-// Since `covariant` is a built-in identifier, it is not allowed here.
-covariant x6; // //# 06: syntax error
-
-covariant covariant; // //# 06b: syntax error
-
-// Getters may never have `covariant`.
-covariant // //# 07: syntax error
-get x7 => 499;
-
-// Top level setters may not have a covariant.
-// Would be considered a minor (acceptable) bug, if it was accepted here too.
-void set x8(
-    covariant //# 08: compile-time error
-    val) {}
-
-// If there is no type, then `covariant` is simply the parameter name:
-void set x9(covariant) {}
-
-// Covariant won't work on return types.
-covariant // //# 10: syntax error
-int f10() => 499;
-
-// Covariant won't work as a return type.
-covariant // //# 11: syntax error
-f11() => 499;
-
-// Covariant should not work on top-level methods.
-// It's a minor (acceptable) bug to not error out here.
-int f12(
-    covariant //# 12: compile-time error
-        int x) =>
-    499;
-
-// `Covariant` must be in front of the types.
-int f13(
-        int
-    covariant //# 13: syntax error
-            x) =>
-    499;
-
-// Covariant should not work on top-level methods.
-// It's a minor (acceptable) bug to not error out here.
-int f14(
-    covariant //# 14: compile-time error
-        final x) =>
-    499;
-
-// `Covariant` must be in front of modifiers.
-int f15(
-        final
-    covariant //# 15: syntax error
-            x) =>
-    499;
-
-// Covariant should not work on top-level methods.
-// It's a minor (acceptable) bug to not error out here.
-int f16(
-    covariant //# 16: compile-time error
-        final int x) =>
-    499;
-
-// `Covariant` must be in front of modifiers.
-int f17(
-        final
-    covariant //# 17: syntax error
-            int
-            x) =>
-    499;
-
-// On its own, `covariant` is just a parameter name.
-int f18(covariant) => covariant;
-
-covariant; // //# 19: syntax error
-
-// All of the above as statics in a class.
-class A {
-  // Static fields may not have a covariant.
-  // Would be considered a minor (acceptable) bug, if it was accepted here too.
-  static
-  covariant // //# 20: syntax error
-      int x20;
-
-  static covariant int covariant; // //# 20b: syntax error
-
-  static int covariant; // //# 20c: ok
-
-  // Getters may never have `covariant`.
-  static
-  covariant // //# 21: syntax error
-      int get x21 => 499;
-
-  // Getters may never have `covariant`.
-  covariant // //# 21b: syntax error
-  static int get x21b => 499;
-
-  // Static setters may not have a covariant.
-  // Would be considered a minor (acceptable) bug, if it was accepted here too.
-  static void set x22(
-      covariant //# 22: compile-time error
-      int val) {}
-
-  // Same as above, but with `covariant` in different positions.
-  // The `covariant` is just wrong there.
-
-  static int
-  covariant // //# 23: syntax error
-      x23;
-
-  static int
-  covariant // //# 24: syntax error
-      get x24 => 499;
-
-  static void set x25(
-      int
-    covariant //# 25: syntax error
-          val) {}
-
-  // Since `covariant` is a built-in identifier, it is not allowed here.
-  static covariant x26; //# 26: syntax error
-  static covariant covariant; //# 26b: syntax error
-
-  // Getters may never have `covariant`.
-  static
-  covariant // //# 27: syntax error
-      get x27 => 499;
-
-  covariant // //# 27b: syntax error
-  static get x27b => 499;
-
-  // Static setters may not have a covariant.
-  // Would be considered a minor (acceptable) bug, if it was accepted here too.
-  static void set x28(
-      covariant //# 28: compile-time error
-      val) {}
-
-  // If there is no type, then `covariant` is simply the parameter name:
-  static void set x29(covariant) {}
-
-  // Covariant won't work on return types.
-  static
-  covariant // //# 30: syntax error
-      int f30() => 499;
-
-  covariant // //# 30b: syntax error
-  static int f30b() => 499;
-
-  // Covariant won't work as a return type.
-  static
-  covariant // //# 31: syntax error
-      f31() => 499;
-
-  covariant // //# 31b: syntax error
-  static f31b() => 499;
-
-  // Covariant should not work on static methods.
-  // It's a minor (acceptable) bug to not error out here.
-  static int f32(
-      covariant //# 32: compile-time error
-          int x) =>
-      499;
-
-  // `Covariant` must be in front of the types.
-  static int f33(
-          int
-      covariant //# 33: syntax error
-              x) =>
-      499;
-
-  // Covariant should not work on top-level methods.
-  // It's a minor (acceptable) bug to not error out here.
-  static int f34(
-      covariant //# 34: compile-time error
-          final x) =>
-      499;
-
-  // `Covariant` must be in front of modifiers.
-  static int f35(
-          final
-      covariant //# 35: syntax error
-              x) =>
-      499;
-
-  // Covariant should not work on top-level methods.
-  // It's a minor (acceptable) bug to not error out here.
-  static int f36(
-      covariant //# 36: compile-time error
-          final int x) =>
-      499;
-
-  // `Covariant` must be in front of modifiers.
-  static int f37(
-          final
-      covariant //# 37: syntax error
-              int
-              x) =>
-      499;
-
-  // `Covariant` on its own is just a parameter name.
-  static int f38(covariant) => covariant;
-
-  static covariant; // //# 39: syntax error
-
-}
-
-// All of the above as instance members in a class.
-class B {
-  covariant // //# 40: ok
-  int x40;
-
-  covariant int covariant; // //# 40b: ok
-
-  int covariant; //           //# 40c: ok
-
-  // Getters may never have `covariant`.
-  covariant // //# 41: syntax error
-  int get x41 => 499;
-
-  void set x42(
-      covariant // //# 42: ok
-      int val) {}
-
-  // `covariant` in the wrong position.
-  int
-  covariant // //# 43: syntax error
-      x43;
-
-  // `covariant` in the wrong position.
-  int
-  covariant // //# 44: syntax error
-      get x44 => 499;
-
-  void set x45(
-      int
-    covariant //# 45: syntax error
-          val) {}
-
-  // Since `covariant` is a built-in identifier, it is not allowed here.
-  covariant x46; //# 46: syntax error
-  covariant covariant; //# 46b: syntax error
-
-  // Getters may never have `covariant`.
-  covariant // //# 47: syntax error
-  get x47 => 499;
-
-  void set x48(
-      covariant // //# 48: ok
-      val) {}
-
-  // If there is no type, then `covariant` is simply the parameter name:
-  void set x49(covariant) {}
-
-  // Covariant won't work on return types.
-  covariant // //# 50: syntax error
-  int f50() => 499;
-
-  // Covariant won't work as a return type.
-  covariant // //# 51: syntax error
-  f51() => 499;
-
-  int f52(
-      covariant // //# 52: ok
-          int x) =>
-      499;
-
-  // `Covariant` must be in front of the types.
-  int f53(
-          int
-      covariant //# 53: syntax error
-              x) =>
-      499;
-
-  int f54(
-      covariant // //# 54: ok
-          final x) =>
-      499;
-
-  // `Covariant` must be in front of modifiers.
-  int f55(
-          final
-      covariant //# 55: syntax error
-              x) =>
-      499;
-
-  int f56(
-      covariant // //# 56: ok
-          final int x) =>
-      499;
-
-  // `Covariant` must be in front of modifiers.
-  int f57(
-          final
-      covariant //# 57: syntax error
-              int
-              x) =>
-      499;
-
-  // `Covariant` on its own is just a parameter name.
-  int f58(covariant) => covariant;
-
-  covariant; // //# 59: syntax error
-}
-
-void use(x) {}
-
-main() {
-  x0 = 0;
-  covariant = 0; // //# 00b: continued
-  covariant = 0; // //# 00c: continued
-  use(x1);
-  x2 = 499;
-  use(x3);
-  use(x4);
-  x5 = 42;
-  x6 = 0; //# 06: continued
-  covariant = 0; //# 06b: continued
-  use(x7);
-  x8 = 11;
-  x9 = 12;
-  use(f10());
-  use(f11());
-  use(f12(2));
-  use(f13(3));
-  use(f14(3));
-  use(f15(3));
-  use(f16(3));
-  use(f17(3));
-  Expect.equals(123, f18(123));
-  use(covariant); // //# 19: continued
-
-  A.x20 = 0;
-  A.covariant = 0; // //# 20b: continued
-  A.covariant = 0; // //# 20c: continued
-  use(A.x21);
-  use(A.x21b);
-  A.x22 = 499;
-  use(A.x23);
-  use(A.x24);
-  A.x25 = 42;
-  A.x26 = 0; //# 26: continued
-  A.covariant = 0; //# 26b: continued
-  use(A.x27);
-  use(A.x27b);
-  A.x28 = 11;
-  A.x29 = 12;
-  use(A.f30());
-  use(A.f31());
-  use(A.f31b());
-  use(A.f32(2));
-  use(A.f33(3));
-  use(A.f34(3));
-  use(A.f35(3));
-  use(A.f36(3));
-  use(A.f37(3));
-  Expect.equals(1234, A.f38(1234));
-  use(A.covariant); // //# 39: continued
-
-  var b = new B();
-  b.x40 = 0;
-  b.covariant = 0; // //# 40b: continued
-  b.covariant = 0; // //# 40c: continued
-  use(b.x41);
-  b.x42 = 499;
-  use(b.x43);
-  use(b.x44);
-  b.x45 = 42;
-  b.x46 = 0; //# 46: continued
-  b.covariant = 0; //# 46b: continued
-  use(b.x47);
-  b.x48 = 11;
-  b.x49 = 12;
-  use(b.f50());
-  use(b.f51());
-  use(b.f52(2));
-  use(b.f53(2));
-  use(b.f54(3));
-  use(b.f55(3));
-  use(b.f56(3));
-  use(b.f57(3));
-  Expect.equals(12345, b.f58(12345));
-  use(B.covariant); // //# 59: continued
-}
diff --git a/tests/language/crash_12118_test.dart b/tests/language/crash_12118_test.dart
deleted file mode 100644
index fea6996..0000000
--- a/tests/language/crash_12118_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for issue 12118 which caused a crash in dart2js.
-
-const X = 42;
-
-class A {
-  final x;
-  A({this.x: X});
-}
-
-class B extends A {}
-
-void main() {
-  if (new B().x != 42) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/crash_6725_part.dart b/tests/language/crash_6725_part.dart
deleted file mode 100644
index 8687837..0000000
--- a/tests/language/crash_6725_part.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for a crash in dart2js.
-
-part of crash_6725;
-
-class Fisk {
-  it1(x) {
-    // "key" is unresolved and caused a crash in dart2js.
-    // This is the original example the user reported.
-    for (key in x) {
-      print(key);
-    }
-  }
-
-  it2(x) {
-    // "length" is "intercepted" and handled differently from other
-    // names when an instance of list is observed.
-    for (length in x) {
-      print(length);
-    }
-  }
-
-  it3(x) {
-    // We're pretty sure that there's no "fisk" that is "intercepted".
-    for (fisk in x) {
-      print(fisk);
-    }
-  }
-}
-
-class SubFisk extends Fisk {
-  var key;
-  var length;
-  var fisk;
-}
-
-test() {
-  Fisk f = new SubFisk();
-  var m = (x) {
-    for (undeclared in x) {
-      print(undeclared);
-    }
-  };
-  if (new DateTime.now().millisecondsSinceEpoch == 42) {
-    f = null;
-    m = (x) {};
-  }
-
-  f.it1([87, 42]);
-  if (f.key != 42) {
-    throw 'f.key != 42 (${f.key})';
-  }
-
-  f.it2([87, 42]);
-  if (f.length != 42) {
-    throw 'f.length != 42 (${f.length})';
-  }
-
-  f.it3([87, 42]);
-  if (f.fisk != 42) {
-    throw 'f.fisk != 42 (${f.fisk})';
-  }
-
-  try {
-    m([87, 42]);
-    throw 'NoSuchMethodError expected';
-  } on NoSuchMethodError {
-    // Expected.
-  }
-}
diff --git a/tests/language/crash_6725_test.dart b/tests/language/crash_6725_test.dart
deleted file mode 100644
index 54de50b..0000000
--- a/tests/language/crash_6725_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for a crash in dart2js.
-
-library crash_6725;
-
-part 'crash_6725_part.dart'; //# 01: static type warning
-
-main() {
-  test(); //# 01: continued
-}
diff --git a/tests/language/create_unresolved_type_test.dart b/tests/language/create_unresolved_type_test.dart
deleted file mode 100644
index c9fda0e..0000000
--- a/tests/language/create_unresolved_type_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2013, 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.
-
-main() {
-  new F<int>(); // //# 01: runtime error, static type warning
-}
diff --git a/tests/language/critical_edge2_test.dart b/tests/language/critical_edge2_test.dart
deleted file mode 100644
index 75e3f13..0000000
--- a/tests/language/critical_edge2_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// This test broke dart2js.
-// A compiler must not construct a critical edge on this program.
-//
-// See critical_edge_test.dart for a description of the problem.
-
-import "package:expect/expect.dart";
-
-String parse(String uri) {
-  int index = 0;
-  int char = -1;
-
-  void parseAuth() {
-    index;
-    char;
-  }
-
-  while (index < 1000) {
-    char = uri.codeUnitAt(index);
-    if (char == 1234) {
-      break;
-    }
-    if (char == 0x3A) {
-      return "good";
-    }
-    index++;
-  }
-
-  print(char);
-  return "bad";
-}
-
-main() {
-  Expect.equals("good", parse("dart:_foreign_helper"));
-}
diff --git a/tests/language/critical_edge_test.dart b/tests/language/critical_edge_test.dart
deleted file mode 100644
index 28c7fd4..0000000
--- a/tests/language/critical_edge_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// This test broke dart2js.
-// A compiler must not construct a critical edge on this program.
-//
-// In particular we have to watch out for:
-//  - the while-loop branch going to the body-block and to the exit-block, and
-//  - the exit-block having as incoming the condition-block and the
-//    break-blocks.
-//
-// Triggering the bug is relatively hard, since pushing instructions back the
-// exit-block to the incoming blocks is not guaranteed to trigger an error.
-// Dart2js frequently ended up with update-assignments just before the
-// condition:
-//    for (int i = 0; state = state0, i < 10; i++) {
-//      if (..) { state = 1; }
-//      ...
-//    }
-//    use(state);
-//
-// In this case the "state" variable was assigned before the loop and then
-// reassigned before the break. The exit-block pushed the assignment back
-// to its incoming blocks and that's why the "state = state0" assignment ended
-// up just before the condition.
-// Note that the assignment was executed at every iteration instead of just
-// when exiting the loop.
-// This repeated assignments don't have any negative effect unless the state
-// variable is also assigned and used inside the loop-body. It turns out that
-// this is very rare and needs some tricks to make happen.
-
-import "package:expect/expect.dart";
-
-String parse(String uri) {
-  int index = 0;
-  int char = -1;
-
-  void parseAuth() {
-    index;
-    char;
-  }
-
-  int state = 0;
-  while (true) {
-    char = uri.codeUnitAt(index);
-    if (char == 1234) {
-      state = (index == 0) ? 1 : 2;
-      break;
-    }
-    if (char == 0x3A) {
-      return "good";
-    }
-    index++;
-  }
-
-  if (state == 1) {
-    print(char == 1234);
-    print(index == uri.length);
-  }
-  return "bad";
-}
-
-main() {
-  Expect.equals("good", parse("dart:_foreign_helper"));
-}
diff --git a/tests/language/ct_const2_test.dart b/tests/language/ct_const2_test.dart
deleted file mode 100644
index 6a9f94e..0000000
--- a/tests/language/ct_const2_test.dart
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright (c) 2011, 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=
-// VMOptions=--compile_all
-
-// Exercises language constructs that require compile time constants
-
-// Initialize with different literal types
-const b = true;
-const s = "apple";
-const i = 1;
-const d = 3.3;
-const h = 0xf;
-const n = null;
-const aList = const [1, 2, 3]; // array literal
-const aMap = const {"1": "one", "2": "banana"}; // map literal
-
-const INT_LIT = 5;
-const INT_LIT_REF = INT_LIT;
-const DOUBLE_LIT = 1.5;
-const BOOL_LIT = true;
-const STRING_LIT = "Hello";
-
-const BOP1_0 = INT_LIT + 1;
-const BOP1_1 = 1 + INT_LIT;
-const BOP1_2 = INT_LIT - 1;
-const BOP1_3 = 1 - INT_LIT;
-const BOP1_4 = INT_LIT * 1;
-const BOP1_5 = 1 * INT_LIT;
-const BOP1_6 = INT_LIT / 1;
-const BOP1_7 = 1 / INT_LIT;
-const BOP2_0 = DOUBLE_LIT + 1.5;
-const BOP2_1 = 1.5 + DOUBLE_LIT;
-const BOP2_2 = DOUBLE_LIT - 1.5;
-const BOP2_3 = 1.5 - DOUBLE_LIT;
-const BOP2_4 = DOUBLE_LIT * 1.5;
-const BOP2_5 = 1.5 * DOUBLE_LIT;
-const BOP2_6 = DOUBLE_LIT / 1.5;
-const BOP2_7 = 1.5 / DOUBLE_LIT;
-const BOP3_0 = 2 < INT_LIT;
-const BOP3_1 = INT_LIT < 2;
-const BOP3_2 = 2 > INT_LIT;
-const BOP3_3 = INT_LIT > 2;
-const BOP3_4 = 2 < DOUBLE_LIT;
-const BOP3_5 = DOUBLE_LIT < 2;
-const BOP3_6 = 2 > DOUBLE_LIT;
-const BOP3_7 = DOUBLE_LIT > 2;
-const BOP3_8 = 2 <= INT_LIT;
-const BOP3_9 = INT_LIT <= 2;
-const BOP3_10 = 2 >= INT_LIT;
-const BOP3_11 = INT_LIT >= 2;
-const BOP3_12 = 2.0 <= DOUBLE_LIT;
-const BOP3_13 = DOUBLE_LIT <= 2.0;
-const BOP3_14 = 2.0 >= DOUBLE_LIT;
-const BOP3_15 = DOUBLE_LIT >= 2;
-const BOP4_0 = 5 % INT_LIT;
-const BOP4_1 = INT_LIT % 5;
-const BOP4_2 = 5.0 % DOUBLE_LIT;
-const BOP4_3 = DOUBLE_LIT % 5.0;
-const BOP5_0 = 0x80 & 0x04;
-const BOP5_1 = 0x80 | 0x04;
-const BOP5_2 = 0x80 << 0x04;
-const BOP5_3 = 0x80 >> 0x04;
-const BOP5_4 = 0x80 ~/ 0x04;
-const BOP5_5 = 0x80 ^ 0x04;
-const BOP6 = BOOL_LIT && true;
-const BOP7 = false || BOOL_LIT;
-const BOP8 = STRING_LIT == "World!";
-const BOP9 = "Hello" != STRING_LIT;
-const BOP10 = INT_LIT == INT_LIT_REF;
-const BOP11 = BOOL_LIT != true;
-
-// Multiple binary expressions
-const BOP20 = 1 * INT_LIT / 3 + INT_LIT + 9;
-
-// Parenthised expressions
-const BOP30 = (1 > 2);
-const BOP31 = (1 * 2) + 3;
-const BOP32 = 3 + (1 * 2);
-
-// Unary expressions
-const UOP1_0 = !BOOL_LIT;
-const UOP1_1 = BOOL_LIT || !true;
-const UOP1_2 = !BOOL_LIT || true;
-const UOP1_3 = !(BOOL_LIT && true);
-const UOP2_0 = ~0xf0;
-const UOP2_1 = ~INT_LIT;
-const UOP2_2 = ~INT_LIT & 123;
-const UOP2_3 = ~(INT_LIT | 0xff);
-const UOP3_0 = -0xf0;
-const UOP3_1 = -INT_LIT;
-const UOP3_2 = -INT_LIT + 123;
-const UOP3_3 = -(INT_LIT * 0xff);
-const UOP3_4 = -0xf0;
-const UOP3_5 = -DOUBLE_LIT;
-const UOP3_6 = -DOUBLE_LIT + 123;
-const UOP3_7 = -(DOUBLE_LIT * 0xff);
-
-class A {
-  const A();
-  static const a = const A(); // Assignment from Constant constructor OK
-}
-
-main() {}
diff --git a/tests/language/ct_const3_test.dart b/tests/language/ct_const3_test.dart
deleted file mode 100644
index 0758057..0000000
--- a/tests/language/ct_const3_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that initializers of const fields can be declared out of order.
-
-import "package:expect/expect.dart";
-
-const P = 2 * (O - N);
-const N = 1;
-const O = 1 + 3;
-
-int main() {
-  Expect.equals(1, N);
-  Expect.equals(4, O);
-  Expect.equals(6, P);
-}
diff --git a/tests/language/ct_const4_lib.dart b/tests/language/ct_const4_lib.dart
deleted file mode 100644
index c9d2840..0000000
--- a/tests/language/ct_const4_lib.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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.
-// See CTConst4Test.dart
-
-library CTConst4Lib;
-
-const B = 1;
diff --git a/tests/language/ct_const4_test.dart b/tests/language/ct_const4_test.dart
deleted file mode 100644
index bdfeddb..0000000
--- a/tests/language/ct_const4_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check compile-time constant library references with prefixes
-
-library CTConst4Test;
-
-import "package:expect/expect.dart";
-import "ct_const4_lib.dart" as mylib;
-
-const A = mylib.B;
-
-main() {
-  Expect.equals(1, A);
-}
diff --git a/tests/language/ct_const_test.dart b/tests/language/ct_const_test.dart
deleted file mode 100644
index 71c7b28..0000000
--- a/tests/language/ct_const_test.dart
+++ /dev/null
@@ -1,131 +0,0 @@
-// 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.
-// All things regarding compile time constant expressions.
-
-import "package:expect/expect.dart";
-
-abstract class Roman {
-  static const I = 1;
-  static const II = 2;
-  static const III = 3;
-  static const IV = 4;
-  static const V = 5;
-
-  static const VivaItalia = const {"green": 1, "red": 3, "white": 2};
-}
-
-class Point {
-  static const int zero = 0;
-
-  static const origin = const Point(0, 0);
-  static const origin2 = const Point(zero, Roman.IV - 4);
-
-  const Point(x, y)
-      : x_ = x,
-        y_ = y;
-  const Point.X(x)
-      : x_ = x,
-        y_ = Roman.V - Roman.II - 3;
-
-  bool operator ==(final Point other) {
-    return (this.x_ == other.x_) && (this.y_ == other.y_);
-  }
-
-  final int x_, y_;
-}
-
-class Line {
-  const Line(Point begin, Point end)
-      : beg_ = begin,
-        end_ = end;
-  final Point beg_;
-  final Point end_;
-}
-
-class CTConstTest {
-  static int getZero() {
-    return 0;
-  }
-
-  static const naught = null;
-
-  static testMain() {
-    Expect.equals(0, Point.zero);
-    Expect.equals(0, Point.origin.x_);
-    Expect.equals(true, identical(Point.origin, Point.origin2));
-    var p1 = const Point(0, 0);
-    Expect.equals(true, identical(Point.origin, p1));
-
-    Expect.equals(false, Point.origin == const Point(1, 1));
-    Expect.equals(false, identical(Point.origin, const Point(1, 1)));
-
-    var p2 = new Point(0, getZero());
-    Expect.equals(true, Point.origin == p2); // Point.operator==
-
-    Expect.equals(true, identical(const Point.X(5), const Point(5, 0)));
-
-    Line l1 = const Line(Point.origin, const Point(1, 1));
-    Line l2 = const Line(const Point(0, 0), const Point(1, 1));
-    Line l3 = new Line(const Point(0, 0), const Point(1, 1));
-    Expect.equals(true, identical(l1, l2));
-
-    final evenNumbers = const <int>[2, 2 * 2, 2 * 3, 2 * 4, 2 * 5];
-    Expect.equals(true, !identical(evenNumbers, const [2, 4, 6, 8, 10]));
-
-    final c11dGermany1 = const {"black": 1, "red": 2, "yellow": 3};
-    Expect.equals(true,
-        identical(c11dGermany1, const {"black": 1, "red": 2, "yellow": 3}));
-
-    final c11dGermany2 = const {"black": 1, "red": 2, "yellow": 3};
-    Expect.equals(true, identical(c11dGermany1, c11dGermany2));
-
-    final c11dBelgium = const {"black": 1, "yellow": 2, "red": 3};
-    Expect.equals(false, c11dGermany1 == c11dBelgium);
-    Expect.equals(false, identical(c11dGermany1, c11dBelgium));
-
-    final c11dItaly = const {"green": 1, "red": 3, "white": 2};
-    Expect.equals(
-        true, identical(c11dItaly, const {"green": 1, "red": 3, "white": 2}));
-    Expect.equals(true, identical(c11dItaly, Roman.VivaItalia));
-
-    Expect.equals(3, c11dItaly.length);
-    Expect.equals(3, c11dItaly.keys.length);
-    Expect.equals(true, c11dItaly.containsKey("white"));
-    Expect.equals(false, c11dItaly.containsKey("black"));
-
-    // Make sure the map object is immutable.
-    bool caughtException = false;
-    try {
-      c11dItaly["green"] = 0;
-    } on UnsupportedError catch (e) {
-      caughtException = true;
-    }
-    Expect.equals(true, caughtException);
-    Expect.equals(1, c11dItaly["green"]);
-
-    caughtException = false;
-    try {
-      c11dItaly.clear();
-    } on UnsupportedError catch (e) {
-      caughtException = true;
-    }
-    Expect.equals(true, caughtException);
-    Expect.equals(1, c11dItaly["green"]);
-
-    caughtException = false;
-    try {
-      c11dItaly.remove("orange");
-    } on UnsupportedError catch (e) {
-      caughtException = true;
-    }
-    Expect.equals(true, caughtException);
-    Expect.equals(1, c11dItaly["green"]);
-
-    Expect.equals(true, null == naught);
-  }
-}
-
-main() {
-  CTConstTest.testMain();
-}
diff --git a/tests/language/custom_await_stack_trace_test.dart b/tests/language/custom_await_stack_trace_test.dart
deleted file mode 100644
index dfcb429..0000000
--- a/tests/language/custom_await_stack_trace_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-import "dart:async";
-import "package:expect/expect.dart";
-
-class Blah implements StackTrace {
-  Blah(this._trace);
-
-  toString() {
-    return "Blah " + _trace.toString();
-  }
-
-  var _trace;
-}
-
-foo() {
-  var x = "\nBloop\nBleep\n";
-  return new Future.error(42, new Blah(x));
-}
-
-main() async {
-  try {
-    var x = await foo();
-    Expect.fail("Should not reach here.");
-  } on int catch (e, s) {
-    Expect.equals(42, e);
-    Expect.equals("Blah \nBloop\nBleep\n", s.toString());
-    return;
-  }
-  Expect.fail("Unreachable.");
-}
diff --git a/tests/language/cyclic_class_member_test.dart b/tests/language/cyclic_class_member_test.dart
deleted file mode 100644
index d33d896..0000000
--- a/tests/language/cyclic_class_member_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that class with a cyclic hierarchy doesn't cause a loop in dart2js.
-
-class A
-    extends A //# 01: compile-time error
-{
-  // When checking that foo isn't overriding an instance method in the
-  // superclass, dart2js might loop.
-  static foo() {}
-}
-
-main() {
-  new A();
-}
diff --git a/tests/language/cyclic_constructor_test.dart b/tests/language/cyclic_constructor_test.dart
deleted file mode 100644
index 5a83edd..0000000
--- a/tests/language/cyclic_constructor_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-class A {
-  A.a() : this.b();
-  A.b()
-    : this.a() // //# 01: compile-time error
-  ;
-  A.c() : this.b();
-}
-
-main() {
-  new A.a();
-  new A.b();
-  new A.c();
-}
diff --git a/tests/language/cyclic_default_values_test.dart b/tests/language/cyclic_default_values_test.dart
deleted file mode 100644
index 9d7f664..0000000
--- a/tests/language/cyclic_default_values_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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";
-
-bar([x = foo]) => x((_) => "bar");
-foo([y = bar]) => y((_) => "foo");
-
-foo2({f: bar2}) => f(f: ({f}) => "foo2");
-bar2({f: foo2}) => f(f: ({f}) => "bar2");
-
-main() {
-  var f = bar;
-  Expect.equals("bar", Function.apply(f, []));
-  Expect.equals("main", Function.apply(f, [(_) => "main"]));
-
-  f = bar2;
-  Expect.equals("bar2", Function.apply(f, []));
-  Expect.equals("main2", Function.apply(f, [], {#f: ({f}) => "main2"}));
-}
diff --git a/tests/language/cyclic_import_test.dart b/tests/language/cyclic_import_test.dart
deleted file mode 100644
index d266b87..0000000
--- a/tests/language/cyclic_import_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-library CyclicImportTest;
-
-import 'sub/sub.dart';
-
-var value = 42;
-
-main() {
-  subMain();
-}
diff --git a/tests/language/cyclic_metadata_test.dart b/tests/language/cyclic_metadata_test.dart
deleted file mode 100644
index 6ff4798..0000000
--- a/tests/language/cyclic_metadata_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Check that metadata on a class 'Super' using subtypes of 'Super' are not
-// considered as cyclic inheritance or lead to crashes.
-
-@Sub1(0) //# 01: ok
-class Super {
-  final field;
-  @Sub2(1) //# 02: ok
-  const Super(this.field);
-}
-
-class Sub1 extends Super {
-  const Sub1(var field) : super(field);
-}
-
-class Sub2 extends Super {
-  const Sub2(var field) : super(field);
-}
-
-void main() {
-  print(new Super(1));
-}
diff --git a/tests/language/cyclic_type2_test.dart b/tests/language/cyclic_type2_test.dart
deleted file mode 100644
index c90cf23..0000000
--- a/tests/language/cyclic_type2_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Tests self referencing types.
-
-import "package:expect/expect.dart";
-
-class Base<U, V> {
-  get u => U;
-  get v => V;
-}
-
-class Derived1<U, V>
-    extends Base<Derived1<U, V>, Derived1<Derived2<V, U>, Derived2>> {}
-
-class Derived2<U, V>
-    extends Base<Derived2<U, V>, Derived2<Derived1<V, U>, Derived1>> {}
-
-main() {
-  var d = new Derived1<Derived1, Derived2>();
-  Expect.equals("Derived1<Derived1, Derived2>", d.u.toString());
-  Expect.equals(
-      "Derived1<Derived2<Derived2, Derived1>, Derived2>", d.v.toString());
-  Expect.isTrue(d is Derived1<Derived1, Derived2>);
-  Expect.isFalse(d is Derived1<Derived1, Derived1>);
-  Expect.isTrue(d is Base<Derived1<Derived1, Derived2>,
-      Derived1<Derived2<Derived2, Derived1>, Derived2>>);
-  Expect.isFalse(d is Base<Derived1<Derived1, Derived2>,
-      Derived1<Derived2<Derived2, Derived2>, Derived2>>);
-}
diff --git a/tests/language/cyclic_type_test.dart b/tests/language/cyclic_type_test.dart
deleted file mode 100644
index 216f1eb..0000000
--- a/tests/language/cyclic_type_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Tests self referencing types.
-
-import "package:expect/expect.dart";
-
-class Base<T> {
-  get t => T;
-}
-
-// Derived<T> is contractive.
-class Derived<T> extends Base<Derived<T>> {} // //# 00: ok
-
-// Derived<T> is contractive.
-class Derived<T> extends Base<Derived<Derived<int>>> {} // //# 01: ok
-
-// Derived<T> is non-contractive.
-class Derived<T> extends Base<Derived<Derived<T>>> {} // //# 02: ok
-
-// Derived1<U> and Derived2<V> are contractive.
-class Derived1<U> extends Base<Derived2<U>> {} //  //# 03: ok
-class Derived2<V> extends Base<Derived1<V>> {} //  //# 03: ok
-
-// Derived1<U> and Derived2<V> are non-contractive.
-class Derived1<U> extends Base<Derived2<U>> {} //  //# 04: ok
-class Derived2<V> extends Base<Derived1<Derived2<V>>> {} //  //# 04: ok
-
-main() {
-  // In the tests below we test that we get "int" and "bool" when calling
-  // toString() on the int and bool type respectively. This is not required
-  // behavior. However, we want to keep the original names for the most common
-  // core types so we make sure to handle these specifically in the compiler.
-
-  var d;
-  d = new Derived(); // //# 00: continued
-  Expect.equals("Derived", d.t.toString()); // //# 00: continued
-  d = new Derived<bool>(); // //# 00: continued
-  Expect.equals("Derived<bool>", d.t.toString()); // //# 00: continued
-  d = new Derived<Derived>(); // //# 00: continued
-  Expect.equals("Derived<Derived>", d.t.toString()); // //# 00: continued
-
-  d = new Derived(); // //# 01: continued
-
-  Expect.equals("Derived<Derived<int>>", d.t.toString()); // //# 01: continued
-  d = new Derived<bool>(); // //# 01: continued
-  Expect.equals("Derived<Derived<int>>", d.t.toString()); // //# 01: continued
-  d = new Derived<Derived>(); // //# 01: continued
-  Expect.equals("Derived<Derived<int>>", d.t.toString()); // //# 01: continued
-
-  d = new Derived(); // //# 02: continued
-  Expect.equals("Derived<Derived>", d.t.toString()); // //# 02: continued
-  d = new Derived<bool>(); // //# 02: continued
-  Expect.equals("Derived<Derived<bool>>", d.t.toString()); // //# 02: continued
-  d = new Derived<Derived>(); // //# 02: continued
-  Expect.equals("Derived<Derived<Derived>>", d.t.toString()); // //# 02: continued
-
-  d = new Derived1(); // //# 03: continued
-  Expect.equals("Derived2", d.t.toString()); // //# 03: continued
-  d = new Derived2(); // //# 03: continued
-  Expect.equals("Derived1", d.t.toString()); // //# 03: continued
-  d = new Derived2<Derived1<int>>(); // //# 03: continued
-  Expect.equals("Derived1<Derived1<int>>", d.t.toString()); // //# 03: continued
-
-  d = new Derived1(); // //# 04: continued
-  Expect.equals("Derived2", d.t.toString()); // //# 04: continued
-  d = new Derived2(); // //# 04: continued
-  Expect.equals("Derived1<Derived2>", d.t.toString()); // //# 04: continued
-  d = new Derived2<Derived1<int>>(); // //# 04: continued
-  Expect.equals("Derived1<Derived2<Derived1<int>>>", d.t.toString()); // //# 04: continued
-}
diff --git a/tests/language/cyclic_type_variable_test.dart b/tests/language/cyclic_type_variable_test.dart
deleted file mode 100644
index 47e0095..0000000
--- a/tests/language/cyclic_type_variable_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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.
-
-// Tests cyclic reference to type variables in type expressions
-
-class Base<T> {}
-
-class Derived extends Base<Derived> {} // legal
-
-typedef void funcType<
-    T
-extends T //# 01: static type warning
-    >(T arg);
-
-class DerivedFunc extends Base<funcType<DerivedFunc>> {}
-
-abstract class A<
-    S
-extends S //# 02: static type warning
-    > {
-  S field;
-}
-
-abstract class B<U extends Base<U>> {
-  // legal
-  U field;
-}
-
-class C1<
-    V
-extends V // //# 03: static type warning
-    > {
-  V field;
-}
-
-class C2<
-    V
-extends V // //# 04: static type warning
-    > implements A<V> {
-  V field;
-}
-
-class D1<W extends Base<W>> {
-  // legal
-  W field;
-}
-
-class D2<W extends Base<W>> implements B<W> {
-  //   legal
-  W field;
-}
-
-class E<X extends Base<funcType<X>>> {
-  // legal
-
-  X field;
-}
-
-main() {
-  new C1<int>();
-  new C2<int>();
-  new D1<Derived>();
-  new D2<Derived>();
-  new E<DerivedFunc>();
-  funcType<Object> val = null;
-}
diff --git a/tests/language/cyclic_typedef_test.dart b/tests/language/cyclic_typedef_test.dart
deleted file mode 100644
index 6b96707..0000000
--- a/tests/language/cyclic_typedef_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Check that cyclic reference of a typedef is a compile-time error.
-
-// To test various cyclic references the definition of the [:typedef A():] is
-// split over several lines:
-typedef
-
-// Cyclic through return type.
-A //# 01: compile-time error
-
-    A // The name of the typedef
-
-// Cyclic through type variable bound.
-<T extends A> //# 10: compile-time error
-
-// Cyclic through generic type variable bound.
-<T extends List<A>> //# 11: compile-time error
-
-    (// The left parenthesis of the typedef arguments.
-
-// Cyclic through parameter type.
-A a //# 02: compile-time error
-
-// Cyclic through optional parameter type.
-[A a] //# 03: compile-time error
-
-// Cyclic through named parameter type.
-{A a} //# 04: compile-time error
-
-// Cyclic through generic parameter type.
-List<A> a //# 05: compile-time error
-
-// Cyclic through return type of function typed parameter.
-A f() //# 06: compile-time error
-
-// Cyclic through parameter type of function typed parameter.
-f(A a) //# 07: compile-time error
-
-// Cyclic through another typedef.
-B b //# 08: compile-time error
-
-// Cyclic through another more typedefs.
-C c //# 09: compile-time error
-
-// Reference through a class is not a cyclic self-reference.
-Class c //# 12: ok
-
-// Reference through a class type bound is not a cyclic self-reference.
-Class c //# 13: ok
-
-    ); // The right parenthesis of the typedef arguments.
-
-typedef B(A a);
-typedef C(B b);
-
-class Class
-<T extends A> //# 13: continued
-{
-  A a; //# 12: continued
-}
-
-void testA(A a) {}
-
-void main() {
-  testA(null);
-}
diff --git a/tests/language/dangling_else_test.dart b/tests/language/dangling_else_test.dart
deleted file mode 100644
index a1b4afb..0000000
--- a/tests/language/dangling_else_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// 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.
-// Tests dangling else. The VM should not have any problems, but dart2js could
-// get this wrong.
-
-import "package:expect/expect.dart";
-
-nestedIf1(notTrue) {
-  if (notTrue) return 'bad input';
-  if (notTrue) {
-    if (notTrue) {
-      return 'bad';
-    }
-  } else {
-    return 'good';
-  }
-  return 'bug';
-}
-
-nestedIf2(notTrue) {
-  if (notTrue) return 'bad input';
-  if (notTrue) {
-    if (notTrue) {
-      return 'bad';
-    } else {
-      if (notTrue) {
-        return 'bad';
-      }
-    }
-  } else {
-    return 'good';
-  }
-  return 'bug';
-}
-
-nestedWhile(notTrue) {
-  if (notTrue) return 'bad input';
-  if (notTrue) {
-    while (notTrue) {
-      if (notTrue) {
-        return 'bad';
-      }
-    }
-  } else {
-    return 'good';
-  }
-  return 'bug';
-}
-
-nestedFor(notTrue) {
-  if (notTrue) return 'bad input';
-  if (notTrue) {
-    for (int i = 0; i < 3; i++) {
-      if (i == 0) {
-        return 'bad';
-      }
-    }
-  } else {
-    return 'good';
-  }
-  return 'bug';
-}
-
-nestedLabeledStatement(notTrue) {
-  if (notTrue) return 'bad input';
-  if (notTrue) {
-    label:
-    if (notTrue) {
-      break label;
-    }
-  } else {
-    return 'good';
-  }
-  return 'bug';
-}
-
-main() {
-  Expect.equals('good', nestedIf1(false));
-  Expect.equals('good', nestedIf2(false));
-  Expect.equals('good', nestedWhile(false));
-  Expect.equals('good', nestedFor(false));
-  Expect.equals('good', nestedLabeledStatement(false));
-}
diff --git a/tests/language/dead_field_access_test.dart b/tests/language/dead_field_access_test.dart
deleted file mode 100644
index e3fc11b..0000000
--- a/tests/language/dead_field_access_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class Foo {
-  var field = 10;
-}
-
-@NoInline()
-getField(x) {
-  x.field;
-  return 34;
-}
-
-main() {
-  Expect.equals(34, getField(new Foo()));
-  Expect.throws(() => getField(null));
-}
diff --git a/tests/language/deep_nesting1_negative_test.dart b/tests/language/deep_nesting1_negative_test.dart
deleted file mode 100644
index e85c11c..0000000
--- a/tests/language/deep_nesting1_negative_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-// Deeply nested expression must not crash compiler due to stack overflow.
-
-main() {
-  var x =
-[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
-  print('okay');
-}
diff --git a/tests/language/deep_nesting2_negative_test.dart b/tests/language/deep_nesting2_negative_test.dart
deleted file mode 100644
index cd49a07..0000000
--- a/tests/language/deep_nesting2_negative_test.dart
+++ /dev/null
@@ -1,10012 +0,0 @@
-// 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.
-
-// Deeply nested statements must not crash compiler due to stack overflow.
-
-var x = 0;
-
-main() {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  if (x == 0) {
-  }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
-  print("survived!");
-}
diff --git a/tests/language/default_class_implicit_constructor_test.dart b/tests/language/default_class_implicit_constructor_test.dart
deleted file mode 100644
index 30d48a5..0000000
--- a/tests/language/default_class_implicit_constructor_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-// An abstract class with a redirecting factory to a class with no declared
-// constructor should use the implicit default constructor.
-
-abstract class A {
-  factory A() = B;
-}
-
-class B implements A {}
-
-main() {
-  var val = new A();
-  Expect.equals(true, val is A);
-  Expect.equals(true, val is B);
-}
diff --git a/tests/language/default_factory2_test.dart b/tests/language/default_factory2_test.dart
deleted file mode 100644
index de04b8f..0000000
--- a/tests/language/default_factory2_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-// Check type bounds when invoking a redirecting factory method
-
-abstract class Foo {}
-
-abstract class IA<T> {
-  factory IA() = A<T>;
-}
-
-class A<T extends Foo> implements IA<T> {
-  factory A() {}
-}
-
-main() {
-  var result = new IA<String>(); // //# 01: static type warning, dynamic type error
-}
diff --git a/tests/language/default_factory3_test.dart b/tests/language/default_factory3_test.dart
deleted file mode 100644
index 5178a15..0000000
--- a/tests/language/default_factory3_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// Check possibly still unresolved upper bounds of default factory class.
-
-abstract class A<T extends Foo> {
-  factory A() = _AImpl<T>;
-}
-
-class Moo extends Foo {}
-
-class Foo extends Bar {}
-
-class Bar {}
-
-class _AImpl<T extends Foo> implements A<T> {
-  factory _AImpl() {}
-}
-
-main() {
-  var result = new A<Moo>();
-}
diff --git a/tests/language/default_factory_library.dart b/tests/language/default_factory_library.dart
deleted file mode 100644
index a7cd293..0000000
--- a/tests/language/default_factory_library.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-// Dart test program for testing default factories defined across libraries
-
-library lib;
-
-import "default_factory_library_test.dart" as test;
-
-// References a factory class in another library
-abstract class A {
-  factory A() = test.C.A;
-  int methodA();
-}
diff --git a/tests/language/default_factory_library_test.dart b/tests/language/default_factory_library_test.dart
deleted file mode 100644
index 31c09a0..0000000
--- a/tests/language/default_factory_library_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-
-// Dart test program for testing factories defined across libraries
-
-library test;
-
-import "package:expect/expect.dart";
-import "default_factory_library.dart" as lib;
-
-class B implements lib.A, C {
-  int methodA() {
-    return 1;
-  }
-
-  int methodB() {
-    return 2;
-  }
-}
-
-abstract class C implements lib.A {
-  // Referenced from an abstract class in another library
-  factory C.A() {
-    return new B();
-  }
-}
-
-main() {
-  var val = new lib.A();
-  Expect.equals(true, (val is B));
-  Expect.equals(1, val.methodA());
-  Expect.equals(2, val.methodB());
-}
diff --git a/tests/language/default_factory_test.dart b/tests/language/default_factory_test.dart
deleted file mode 100644
index 83682bb..0000000
--- a/tests/language/default_factory_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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";
-
-// Dart test program for testing default factories.
-
-abstract class Vehicle {
-  factory Vehicle() = GoogleOne.Vehicle; //# 01: static type warning
-}
-
-class Bike implements Vehicle, GoogleOne {
-  Bike.redOne() {}
-}
-
-abstract class SpaceShip {
-  factory SpaceShip() = GoogleOne;
-}
-
-class GoogleOne implements SpaceShip {
-  GoogleOne.internal_() {}
-  factory GoogleOne() {
-    return new GoogleOne.internal_();
-  }
-  factory GoogleOne.Vehicle() {
-    return new Bike.redOne();
-  }
-}
-
-main() {
-  Expect.equals(true, (new Bike.redOne()) is Bike);
-  Expect.equals(true, (new SpaceShip()) is GoogleOne);
-  Expect.equals(true, (new Vehicle()) is Bike); //# 01: continued
-}
diff --git a/tests/language/default_implementation2_test.dart b/tests/language/default_implementation2_test.dart
deleted file mode 100644
index 2336935..0000000
--- a/tests/language/default_implementation2_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-// Dart test to verify incompatible constructor types
-
-abstract class Point {
-  factory Point(x, y) = PointImplementation;
-}
-
-class PointImplementation implements Point {
-   PointImplementation(int x, int y) {} //# static type warning
-}
-
-main() {
-  new Point(1, 2);
-}
diff --git a/tests/language/default_implementation_test.dart b/tests/language/default_implementation_test.dart
deleted file mode 100644
index a05f5dd..0000000
--- a/tests/language/default_implementation_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-// Dart test to verify that factory classes are working.
-
-import "package:expect/expect.dart";
-
-abstract class Point {
-  factory Point(int x, int y) = PointImplementation;
-
-  final int x;
-  final int y;
-}
-
-class PointImplementation implements Point {
-  const PointImplementation(int x, int y)
-      : this.x = x,
-        this.y = y;
-  final int x;
-  final int y;
-}
-
-class DefaultImplementationTest {
-  static void testMain() {
-    Point point = new Point(4, 2);
-    Expect.equals(4, point.x);
-    Expect.equals(2, point.y);
-  }
-}
-
-main() {
-  DefaultImplementationTest.testMain();
-}
diff --git a/tests/language/default_init_test.dart b/tests/language/default_init_test.dart
deleted file mode 100644
index cff4a2e7..0000000
--- a/tests/language/default_init_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests static and instance fields initialization.
-class DefaultInitTest {
-  static testMain() {
-    Expect.equals(0, A.a);
-    Expect.equals(2, A.b);
-    Expect.equals(null, A.c);
-
-    A a1 = new A(42);
-    Expect.equals(42, a1.d);
-    Expect.equals(null, a1.e);
-
-    A a2 = new A.named(43);
-    Expect.equals(null, a2.d);
-    Expect.equals(43, a2.e);
-
-    Expect.equals(42, B.instance.x);
-    Expect.equals(3, C.instance.z);
-  }
-}
-
-class A {
-  static const int a = 0;
-  static const int b = 2;
-  static int c;
-  int d;
-  int e;
-
-  A(int val) {
-    d = val;
-  }
-
-  A.named(int val) {
-    e = val;
-  }
-}
-
-// The following tests cover cases described in b/4101270
-
-class B {
-  static const B instance = const B();
-  // by putting this field after the static initializer above, the JS code gen
-  // was calling the constructor before the setter of this property was defined.
-  final int x;
-  const B() : this.x = (41 + 1);
-}
-
-class C {
-  // forward reference to another class
-  static const D instance = const D();
-  C() {}
-}
-
-class D {
-  const D() : this.z = 3;
-  final int z;
-}
-
-main() {
-  DefaultInitTest.testMain();
-}
diff --git a/tests/language/deferred_call_empty_before_load_lib.dart b/tests/language/deferred_call_empty_before_load_lib.dart
deleted file mode 100644
index 32dd376..0000000
--- a/tests/language/deferred_call_empty_before_load_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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.
-
-thefun() {}
diff --git a/tests/language/deferred_call_empty_before_load_test.dart b/tests/language/deferred_call_empty_before_load_test.dart
deleted file mode 100644
index c241c6a9..0000000
--- a/tests/language/deferred_call_empty_before_load_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that calling a function, even though it itself has no effect, will
-// trigger an error if the corresponding deferred library has not been loaded.
-
-import "package:expect/expect.dart";
-import "deferred_call_empty_before_load_lib.dart" deferred as lib1;
-
-main() {
-  Expect.throws(() => lib1.thefun());
-}
diff --git a/tests/language/deferred_closurize_load_library_lib.dart b/tests/language/deferred_closurize_load_library_lib.dart
deleted file mode 100644
index 9878ae9..0000000
--- a/tests/language/deferred_closurize_load_library_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2014, 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.
-
-var trueVar = true;
diff --git a/tests/language/deferred_closurize_load_library_test.dart b/tests/language/deferred_closurize_load_library_test.dart
deleted file mode 100644
index 6c90cb6..0000000
--- a/tests/language/deferred_closurize_load_library_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_closurize_load_library_lib.dart" deferred as lib;
-
-void main() {
-  var x = lib.loadLibrary;
-  asyncStart();
-  x().then((_) {
-    Expect.isTrue(lib.trueVar);
-    asyncEnd();
-  });
-}
diff --git a/tests/language/deferred_constant_list_lib.dart b/tests/language/deferred_constant_list_lib.dart
deleted file mode 100644
index 93a6740..0000000
--- a/tests/language/deferred_constant_list_lib.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2014, 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.
-
-final finalConstList = const [1, 2];
-var nonFinalConstList = const [3, 4];
diff --git a/tests/language/deferred_constant_list_test.dart b/tests/language/deferred_constant_list_test.dart
deleted file mode 100644
index ec3dc10..0000000
--- a/tests/language/deferred_constant_list_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_constant_list_lib.dart" deferred as lib;
-
-void main() {
-  asyncStart();
-  lib.loadLibrary().then((_) {
-    Expect.equals("[1, 2]", lib.finalConstList.toString());
-    Expect.equals("[3, 4]", lib.nonFinalConstList.toString());
-    asyncEnd();
-  });
-}
diff --git a/tests/language/deferred_constraints_constants_lib.dart b/tests/language/deferred_constraints_constants_lib.dart
deleted file mode 100644
index cdeec47..0000000
--- a/tests/language/deferred_constraints_constants_lib.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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 C {
-  static int staticMethod() => 42;
-}
-
-class G<T> {}
-
-class Const {
-  const Const();
-  const Const.namedConstructor();
-  static const instance = const Const();
-}
-
-const constantInstance = const Const();
diff --git a/tests/language/deferred_constraints_constants_test.dart b/tests/language/deferred_constraints_constants_test.dart
deleted file mode 100644
index c975f51..0000000
--- a/tests/language/deferred_constraints_constants_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:mirrors';
-
-import "deferred_constraints_constants_lib.dart" deferred as lib;
-
-const myConst1 =
-  lib.constantInstance; //# reference1: compile-time error
-  /* //                   //# reference1: continued
-    499;
-  */ //                   //# reference1: continued
-const myConst2 =
-  lib.Const.instance; //# reference2: compile-time error
-  /* //                 //# reference2: continued
-    499;
-  */ //                 //# reference2: continued
-
-void f1(
-    {a:
-  const lib.Const() //# default_argument1: compile-time error
-  /* //                  //# default_argument1: continued
-        499
-  */ //                  //# default_argument1: continued
-    }) {}
-
-void f2(
-    {a:
-  lib.constantInstance //# default_argument2: compile-time error
-  /* //                        //# default_argument2: continued
-        499
-  */ //                        //# default_argument2: continued
-    }) {}
-
-@lib.Const() //# metadata1: compile-time error
-class H1 {}
-
-@lib.Const.instance //# metadata2: compile-time error
-class H2 {}
-
-@lib.Const.namedConstructor() //# metadata3: compile-time error
-class H3 {}
-
-void main() {
-  var a1 = myConst1;
-  var a2 = myConst2;
-
-  asyncStart();
-  lib.loadLibrary().then((_) {
-    var instance = lib.constantInstance;
-    var c1 = const lib.Const(); //# constructor1: compile-time error
-    var c2 = const lib.Const.namedConstructor(); //# constructor2: compile-time error
-    f1();
-    f2();
-    var constInstance = lib.constantInstance; //# reference_after_load: ok
-    var h1 = new H1();
-    var h2 = new H2();
-    var h3 = new H3();
-
-    // Need to access the metadata to trigger the expected compilation error.
-    reflectClass(H1).metadata; // metadata1: continued
-    reflectClass(H2).metadata; // metadata2: continued
-    reflectClass(H3).metadata; // metadata3: continued
-
-    asyncEnd();
-  });
-}
diff --git a/tests/language/deferred_constraints_lib.dart b/tests/language/deferred_constraints_lib.dart
deleted file mode 100644
index 0bf3cc9..0000000
--- a/tests/language/deferred_constraints_lib.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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 C {
-  static int staticMethod() => 42;
-}
-
-class G<T> {}
-
-class Const {
-  const Const();
-  const Const.otherConstructor();
-  static const instance = const Const();
-}
-
-const constantInstance = const Const();
diff --git a/tests/language/deferred_constraints_lib2.dart b/tests/language/deferred_constraints_lib2.dart
deleted file mode 100644
index 830705f..0000000
--- a/tests/language/deferred_constraints_lib2.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, 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.
-
-foo() => 42;
-
-class C {}
diff --git a/tests/language/deferred_constraints_type_annotation_test.dart b/tests/language/deferred_constraints_type_annotation_test.dart
deleted file mode 100644
index 574a2eb..0000000
--- a/tests/language/deferred_constraints_type_annotation_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_constraints_lib.dart" deferred as lib;
-import "deferred_constraints_lib.dart" as lib2; //# type_annotation_non_deferred: ok
-
-class F {}
-
-class G2<T> {}
-
-main() {
-  lib.C a = null; //# type_annotation_null: static type warning
-  Expect.throws(() { //# new_before_load: static type warning
-    lib.C a = new lib.C(); //# new_before_load: continued
-  }, (e) => e is Error); //# new_before_load: continued
-
-  // In this case we do not defer C.
-  lib2.C a1 = new lib2.C(); //# type_annotation_non_deferred: continued
-  asyncStart();
-  lib.loadLibrary().then((_) {
-    lib.C a2 = new lib.C(); //# type_annotation1: dynamic type error, static type warning
-    lib.G<F> a3 = new lib.G<F>(); //# type_annotation_generic1: dynamic type error, static type warning
-    G2<lib.C> a4 = new G2(); //# type_annotation_generic2: static type warning
-    G2<lib.C> a5 = new G2<lib.C>(); //# type_annotation_generic3: static type warning
-    lib.G<lib.C> a = new lib.G<lib.C>(); //# type_annotation_generic4: dynamic type error, static type warning
-    var a6 = new lib.C(); //# new: ok
-    var g1 = new lib.G<F>(); //# new_generic1: ok
-    // new G2<lib.C>() does not give a dynamic type error because a malformed
-    // type used as type-parameter is treated as dynamic.
-    var g2 = new G2<lib.C>(); //# new_generic2: static type warning
-    var g3 = new lib.G<lib.C>(); //# new_generic3: static type warning
-    var instance = lib.constantInstance;
-    Expect.throws(() { //# is_check: static type warning
-      bool a7 = instance is lib.Const; //# is_check: continued
-    }, (e) => e is TypeError); //# is_check: continued
-    Expect.throws(() { //# as_operation: static type warning
-      instance as lib.Const; //# as_operation: continued
-    }, (e) => e is TypeError); //# as_operation: continued
-    Expect.throws(() { //# catch_check: static type warning
-      try { throw instance; } on lib.Const {} //# catch_check: continued
-    }, (e) => e is TypeError); //# catch_check: continued
-    int i = lib.C.staticMethod(); //# static_method: ok
-    asyncEnd();
-  });
-}
-
-lib.C a9 = null; //# type_annotation_top_level: static type warning
diff --git a/tests/language/deferred_duplicate_prefix1_test.dart b/tests/language/deferred_duplicate_prefix1_test.dart
deleted file mode 100644
index 1807e92..0000000
--- a/tests/language/deferred_duplicate_prefix1_test.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2014, 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 "deferred_prefix_constraints_lib2.dart" as lib;
-import "deferred_prefix_constraints_lib.dart" deferred as lib; //# 01: compile-time error
-
-void main() {}
diff --git a/tests/language/deferred_duplicate_prefix2_test.dart b/tests/language/deferred_duplicate_prefix2_test.dart
deleted file mode 100644
index 1edfeca..0000000
--- a/tests/language/deferred_duplicate_prefix2_test.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2014, 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 "deferred_prefix_constraints_lib.dart" deferred as lib; // //# 01: compile-time error
-import "deferred_prefix_constraints_lib2.dart" as lib;
-
-void main() {}
diff --git a/tests/language/deferred_duplicate_prefix3_test.dart b/tests/language/deferred_duplicate_prefix3_test.dart
deleted file mode 100644
index 08d8bd1..0000000
--- a/tests/language/deferred_duplicate_prefix3_test.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2014, 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 "deferred_prefix_constraints_lib.dart" deferred as lib; //# 01: compile-time error
-import "deferred_prefix_constraints_lib2.dart" deferred as lib; //# 01: continued
-
-void main() {}
diff --git a/tests/language/deferred_function_type_lib.dart b/tests/language/deferred_function_type_lib.dart
deleted file mode 100644
index f73a822..0000000
--- a/tests/language/deferred_function_type_lib.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class T {
-  A foo(int x) {}
-}
-
-class A {}
-
-typedef A F(int x);
-
-use(x) => x;
-
-runTest() {
-  use(new A());
-  Expect.isTrue(new T().foo is F);
-}
diff --git a/tests/language/deferred_function_type_test.dart b/tests/language/deferred_function_type_test.dart
deleted file mode 100644
index 8957a73..0000000
--- a/tests/language/deferred_function_type_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, 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 'deferred_function_type_lib.dart' deferred as lib;
-
-main() {
-  lib.loadLibrary().then((_) {
-    lib.runTest();
-  });
-}
diff --git a/tests/language/deferred_global_lib.dart b/tests/language/deferred_global_lib.dart
deleted file mode 100644
index d4f3f05..0000000
--- a/tests/language/deferred_global_lib.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, 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.
-
-var sideEffectCounter = 0;
-
-final finalConstGlobal = "finalConstGlobal";
-final finalNonConstGlobal = (() {
-  sideEffectCounter++;
-  return "finalNonConstGlobal";
-}());
-
-var lazyConstGlobal = "lazyConstGlobal";
-// Regression test for bug #21840.
-var const1Global = const {};
-final lazyConstGlobal2 = const1Global;
-
-var lazyNonConstGlobal = (() {
-  sideEffectCounter++;
-  return "lazyNonConstGlobal";
-}());
-
-readFinalConstGlobal() => finalConstGlobal;
-readFinalNonConstGlobal() => finalNonConstGlobal;
-readLazyConstGlobal() => lazyConstGlobal;
-readLazyNonConstGlobal() => lazyNonConstGlobal;
-writeLazyConstGlobal(x) {
-  lazyConstGlobal = x;
-}
-
-writeLazyNonConstGlobal(x) {
-  lazyNonConstGlobal = x;
-}
diff --git a/tests/language/deferred_global_test.dart b/tests/language/deferred_global_test.dart
deleted file mode 100644
index 21ef619..0000000
--- a/tests/language/deferred_global_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_global_lib.dart" deferred as lib;
-
-var nonDeferredGlobal = const {};
-
-void main() {
-  nonDeferredGlobal = null;
-  asyncStart();
-  lib.loadLibrary().then((_) {
-    // Ensure non-deferred globals are not reset when loading a deferred
-    // library.
-    Expect.equals(null, nonDeferredGlobal);
-
-    Expect.equals("finalConstGlobal", lib.finalConstGlobal);
-    Expect.equals(0, lib.sideEffectCounter);
-    Expect.equals("finalNonConstGlobal", lib.finalNonConstGlobal);
-    Expect.equals(1, lib.sideEffectCounter);
-    Expect.equals("finalConstGlobal", lib.finalConstGlobal);
-    Expect.equals("finalNonConstGlobal", lib.finalNonConstGlobal);
-    Expect.equals("lazyConstGlobal", lib.lazyConstGlobal);
-    Expect.equals(1, lib.sideEffectCounter);
-    Expect.equals("lazyNonConstGlobal", lib.lazyNonConstGlobal);
-    Expect.equals(2, lib.sideEffectCounter);
-    Expect.equals("finalConstGlobal", lib.readFinalConstGlobal());
-    Expect.equals("finalNonConstGlobal", lib.readFinalNonConstGlobal());
-    Expect.equals("lazyConstGlobal", lib.readLazyConstGlobal());
-    Expect.equals("lazyNonConstGlobal", lib.readLazyNonConstGlobal());
-
-    lib.lazyConstGlobal = "lazyConstGlobal_mutated";
-    lib.lazyNonConstGlobal = "lazyNonConstGlobal_mutated";
-    Expect.equals("lazyConstGlobal_mutated", lib.lazyConstGlobal);
-    Expect.equals("lazyNonConstGlobal_mutated", lib.lazyNonConstGlobal);
-    Expect.equals("lazyConstGlobal_mutated", lib.readLazyConstGlobal());
-    Expect.equals("lazyNonConstGlobal_mutated", lib.readLazyNonConstGlobal());
-    Expect.equals(2, lib.sideEffectCounter);
-
-    lib.writeLazyConstGlobal("lazyConstGlobal_mutated2");
-    lib.writeLazyNonConstGlobal("lazyNonConstGlobal_mutated2");
-    Expect.equals("lazyConstGlobal_mutated2", lib.lazyConstGlobal);
-    Expect.equals("lazyNonConstGlobal_mutated2", lib.lazyNonConstGlobal);
-    Expect.equals("lazyConstGlobal_mutated2", lib.readLazyConstGlobal());
-    Expect.equals("lazyNonConstGlobal_mutated2", lib.readLazyNonConstGlobal());
-
-    Expect.mapEquals({}, lib.lazyConstGlobal2);
-    lib.const1Global = 0;
-    Expect.equals(2, lib.sideEffectCounter);
-    Expect.equals(0, lib.const1Global);
-    // Try loading the deferred library again, should not reset the globals.
-    lib.loadLibrary().then((_) {
-      Expect.equals(0, lib.const1Global);
-      asyncEnd();
-    });
-  });
-}
diff --git a/tests/language/deferred_import_core_test.dart b/tests/language/deferred_import_core_test.dart
deleted file mode 100644
index f3d6644..0000000
--- a/tests/language/deferred_import_core_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-// Nothing in the language spec explicitly prohibits a deferred import of
-// 'dart:core'.  Make sure it doesn't lead to any strange behavior.
-
-import "dart:core" deferred as core;
-
-main() {
-  core.loadLibrary().then((_) => null);
-}
diff --git a/tests/language/deferred_inheritance_constraints_lib.dart b/tests/language/deferred_inheritance_constraints_lib.dart
deleted file mode 100644
index 38d3e68..0000000
--- a/tests/language/deferred_inheritance_constraints_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, 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 Foo {}
-
-class Foo2 {}
diff --git a/tests/language/deferred_inheritance_constraints_test.dart b/tests/language/deferred_inheritance_constraints_test.dart
deleted file mode 100644
index c94528e..0000000
--- a/tests/language/deferred_inheritance_constraints_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2014, 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";
-import "deferred_inheritance_constraints_lib.dart" deferred as lib;
-
-class Foo {}
-
-class Foo2 extends D {}
-
-class A extends
-  lib. //# extends: compile-time error
-    Foo {}
-
-class B
-    implements
-  lib. //# implements: compile-time error
-        Foo {}
-
-class C1 {}
-
-class C = C1
-    with
-  lib. //# mixin: compile-time error
-        Foo;
-
-class D {
-  D();
-  factory D.factory() =
-    lib. //# redirecting_constructor: static type warning
-      Foo2;
-}
-
-void main() {
-  new A();
-  new B();
-  new C();
-  Expect.throws(() { //# redirecting_constructor: continued
-  new D.factory();
-  }); //# redirecting_constructor: continued
-}
diff --git a/tests/language/deferred_inlined_test.dart b/tests/language/deferred_inlined_test.dart
deleted file mode 100644
index ee9b652..0000000
--- a/tests/language/deferred_inlined_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Declares foo that returns 42.
-import "deferred_constraints_lib2.dart" deferred as lib;
-
-import 'package:expect/expect.dart';
-
-bool libLoaded = false;
-
-main() {
-  Expect.equals(88, heyhey());
-
-  // Trigger optimization of 'hehey' which inlines 'barbar'.
-  for (int i = 0; i < 30000; i++) {
-    heyhey();
-  }
-
-  lib.loadLibrary().then((_) {
-    libLoaded = true;
-    Expect.equals(42, heyhey());
-  });
-}
-
-// Inline bar in optimized code.
-heyhey() => barbar();
-
-barbar() {
-  if (libLoaded) {
-    // Returns 42.
-    return lib.foo();
-  }
-  return 88;
-}
diff --git a/tests/language/deferred_load_constants.dart b/tests/language/deferred_load_constants.dart
deleted file mode 100644
index a67bd03..0000000
--- a/tests/language/deferred_load_constants.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, 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.
-// Dart version of two-argument Ackermann-Peter function.
-
-library deferred_load_constants;
-
-// Constant declaration.
-const c = const C();
-
-// Class declaration (`C` is a constant expression).
-class C {
-  const C();
-  static int staticfun(int x) => x;
-}
-
-// Function type definition.
-typedef int funtype(int x);
-// Top-level function.
-int toplevel(int x) => x;
diff --git a/tests/language/deferred_load_constants_test.dart b/tests/language/deferred_load_constants_test.dart
deleted file mode 100644
index f56414c..0000000
--- a/tests/language/deferred_load_constants_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2015, 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.
-// Dart version of two-argument Ackermann-Peter function.
-
-library deferred_load_constants;
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-import "deferred_load_constants.dart" deferred as foo;
-import "deferred_load_constants.dart";
-
-main() {
-  asyncStart();
-  Expect.throws(() => foo.c);
-  Expect.throws(() => foo.C);
-  Expect.throws(() => foo.funtype);
-  Expect.throws(() => foo.toplevel);
-  foo.loadLibrary().whenComplete(() {
-    // Reading constant declarations through deferred prefix works.
-    Expect.identical(c, foo.c);
-    Expect.identical(C, foo.C);
-    Expect.identical(funtype, foo.funtype);
-    Expect.identical(toplevel, foo.toplevel);
-    Expect.identical(C.staticfun, foo.C.staticfun);
-    // Access through deferred prefix is not a constant expression.
-    Expect.throws(() => const [foo.c]); //           //# 01: compile-time error
-    Expect.throws(() => const [foo.C]); //           //# 02: compile-time error
-    Expect.throws(() => const [foo.funtype]); //     //# 03: compile-time error
-    Expect.throws(() => const [foo.toplevel]); //    //# 04: compile-time error
-    Expect.throws(() => const [foo.C.staticfun]); // //# 05: compile-time error
-
-    asyncEnd();
-  });
-}
diff --git a/tests/language/deferred_load_inval_code_lib.dart b/tests/language/deferred_load_inval_code_lib.dart
deleted file mode 100644
index 512a8b3..0000000
--- a/tests/language/deferred_load_inval_code_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, 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.
-
-foo() {
-  return "foo from library";
-}
diff --git a/tests/language/deferred_load_inval_code_test.dart b/tests/language/deferred_load_inval_code_test.dart
deleted file mode 100644
index e97497c..0000000
--- a/tests/language/deferred_load_inval_code_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=100 --no-background-compilation
-
-import "deferred_load_inval_code_lib.dart" deferred as d;
-
-bool loaded = false;
-
-var x = 0;
-
-bla() {
-  if (loaded) {
-    // Loading the library should have invalidated the optimized
-    // code containing the NSME. Now expect this call to succeed.
-    d.foo();
-  } else {
-    // Do some "busy work" to trigger optimization.
-    for (var i = 0; i < 100; i++) {
-      x++;
-    }
-  }
-}
-
-warmup() {
-  for (int i = 1; i < 1000; i++) {
-    bla();
-  }
-}
-
-main() {
-  warmup();
-  d.loadLibrary().then((_) {
-    loaded = true;
-    bla();
-  });
-}
diff --git a/tests/language/deferred_load_library_wrong_args_lib.dart b/tests/language/deferred_load_library_wrong_args_lib.dart
deleted file mode 100644
index 0f02e43..0000000
--- a/tests/language/deferred_load_library_wrong_args_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2014, 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.
-
-foo() => 42;
diff --git a/tests/language/deferred_load_library_wrong_args_test.dart b/tests/language/deferred_load_library_wrong_args_test.dart
deleted file mode 100644
index 9055eae..0000000
--- a/tests/language/deferred_load_library_wrong_args_test.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-import "deferred_load_library_wrong_args_lib.dart" deferred as lib;
-
-void main() {
-  // Loadlibrary should be called without arguments.
-  lib.loadLibrary(
-      10 //# 01: runtime error
-      );
-}
diff --git a/tests/language/deferred_mixin_lib1.dart b/tests/language/deferred_mixin_lib1.dart
deleted file mode 100644
index 37ebd10..0000000
--- a/tests/language/deferred_mixin_lib1.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2014, 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 lib1;
-
-import "deferred_mixin_shared.dart";
-import "deferred_mixin_test.dart";
-
-class Mixin {
-  foo() => "lib1.Mixin";
-}
-
-class A extends Object with NonDeferredMixin {
-  foo() {
-    return "A with " + super.foo();
-  }
-}
-
-class B extends Object with Mixin {
-  foo() {
-    return "B with " + super.foo();
-  }
-}
-
-class C extends Object with Mixin, NonDeferredMixin1 {
-  foo() {
-    return "C with " + super.foo();
-  }
-}
-
-class D extends Object with NonDeferredMixin2, Mixin {
-  foo() {
-    return "D with " + super.foo();
-  }
-}
-
-class E extends Object with SharedMixin {
-  foo() {
-    return "E with " + super.foo();
-  }
-}
diff --git a/tests/language/deferred_mixin_lib2.dart b/tests/language/deferred_mixin_lib2.dart
deleted file mode 100644
index f937fc5..0000000
--- a/tests/language/deferred_mixin_lib2.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2014, 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 lib2;
-
-import "deferred_mixin_shared.dart";
-
-class A extends Object with SharedMixin {
-  foo() {
-    return "lib2.A with " + super.foo();
-  }
-}
diff --git a/tests/language/deferred_mixin_shared.dart b/tests/language/deferred_mixin_shared.dart
deleted file mode 100644
index 8b6a293..0000000
--- a/tests/language/deferred_mixin_shared.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, 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 shared;
-
-class SharedMixin {
-  foo() => "SharedMixin";
-}
diff --git a/tests/language/deferred_mixin_test.dart b/tests/language/deferred_mixin_test.dart
deleted file mode 100644
index 1a46fbc..0000000
--- a/tests/language/deferred_mixin_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_mixin_lib1.dart" deferred as lib1;
-import "deferred_mixin_lib2.dart" deferred as lib2;
-
-class NonDeferredMixin {
-  foo() => "NonDeferredMixin";
-}
-
-class NonDeferredMixin1 {
-  foo() => "NonDeferredMixin1";
-}
-
-class NonDeferredMixin2 {
-  foo() => "NonDeferredMixin2";
-}
-
-main() {
-  Expect.equals("NonDeferredMixin", new NonDeferredMixin().foo());
-  Expect.equals("NonDeferredMixin1", new NonDeferredMixin1().foo());
-  Expect.equals("NonDeferredMixin2", new NonDeferredMixin2().foo());
-  asyncStart();
-  lib1.loadLibrary().then((_) {
-    Expect.equals("lib1.Mixin", new lib1.Mixin().foo());
-    Expect.equals("A with NonDeferredMixin", new lib1.A().foo());
-    Expect.equals("B with lib1.Mixin", new lib1.B().foo());
-    Expect.equals("C with NonDeferredMixin1", new lib1.C().foo());
-    Expect.equals("D with lib1.Mixin", new lib1.D().foo());
-    Expect.equals("E with SharedMixin", new lib1.E().foo());
-    lib2.loadLibrary().then((_) {
-      Expect.equals("lib2.A with SharedMixin", new lib2.A().foo());
-      asyncEnd();
-    });
-  });
-}
diff --git a/tests/language/deferred_no_prefix_test.dart b/tests/language/deferred_no_prefix_test.dart
deleted file mode 100644
index b54356c..0000000
--- a/tests/language/deferred_no_prefix_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Loading a deferred library without prefix is not allowed.
-import "deferred_constraints_lib2.dart"
-  deferred //# 01: syntax error
-    ;
-
-void main() {}
diff --git a/tests/language/deferred_no_such_method_lib.dart b/tests/language/deferred_no_such_method_lib.dart
deleted file mode 100644
index ccb0091..0000000
--- a/tests/language/deferred_no_such_method_lib.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2014, 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.
-
-@proxy
-class C {
-  noSuchMethod(Invocation invocation) => 42;
-}
diff --git a/tests/language/deferred_no_such_method_test.dart b/tests/language/deferred_no_such_method_test.dart
deleted file mode 100644
index 6476a4f..0000000
--- a/tests/language/deferred_no_such_method_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_no_such_method_lib.dart" deferred as lib;
-
-void main() {
-  asyncStart();
-  lib.loadLibrary().then((_) {
-    Expect.equals(42, new lib.C().nonExisting());
-    asyncEnd();
-  });
-}
diff --git a/tests/language/deferred_not_loaded_check_lib.dart b/tests/language/deferred_not_loaded_check_lib.dart
deleted file mode 100644
index c767c9e..0000000
--- a/tests/language/deferred_not_loaded_check_lib.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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.
-
-foo(int arg) {}
-
-class C {
-  C(int arg) {}
-  static foo(int arg) {}
-}
-
-var a;
-
-int get getter => 42;
-
-void set setter(int arg) {
-  a = 10;
-}
-
-var list = new List();
-
-var closure = (int arg) => 3;
diff --git a/tests/language/deferred_not_loaded_check_test.dart b/tests/language/deferred_not_loaded_check_test.dart
deleted file mode 100644
index 964ab47..0000000
--- a/tests/language/deferred_not_loaded_check_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-
-import "deferred_not_loaded_check_lib.dart" deferred as lib;
-
-// Test that we give appropriate errors when accessing an element that is not
-// yet loaded.
-
-var c;
-
-expectSideEffect(test) {
-  c = 0;
-  test();
-  Expect.isTrue(c == 1);
-}
-
-expectNoSideEffect(test) {
-  c = 0;
-  test();
-  Expect.isTrue(c == 0);
-}
-
-expectThrowsNotLoaded(test) {
-  Expect.throws(test, (e) => e is Error);
-}
-
-int sideEffect() {
-  c = 1;
-  return 10;
-}
-
-void main() {
-  expectSideEffect(() {
-    expectThrowsNotLoaded(() {
-      lib.foo(sideEffect());
-    });
-  });
-  expectNoSideEffect(() {
-    expectThrowsNotLoaded(() {
-      lib.C.foo(sideEffect());
-    });
-  });
-  expectSideEffect(() {
-    expectThrowsNotLoaded(() {
-      new lib.C(sideEffect());
-    });
-  });
-  expectThrowsNotLoaded(() {
-    lib.a;
-  });
-  expectSideEffect(() {
-    expectThrowsNotLoaded(() {
-      lib.a = sideEffect();
-    });
-  });
-  expectThrowsNotLoaded(() {
-    lib.getter;
-  });
-  expectSideEffect(() {
-    expectThrowsNotLoaded(() {
-      lib.setter = sideEffect();
-    });
-  });
-  expectNoSideEffect(() {
-    expectThrowsNotLoaded(() {
-      lib.list[sideEffect()] = sideEffect();
-    });
-  });
-  expectSideEffect(() {
-    expectThrowsNotLoaded(() {
-      lib.closure(sideEffect());
-    });
-  });
-}
diff --git a/tests/language/deferred_only_constant_lib.dart b/tests/language/deferred_only_constant_lib.dart
deleted file mode 100644
index 1c84126..0000000
--- a/tests/language/deferred_only_constant_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2014, 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.
-
-const constant = const ["a", "b", "c"];
diff --git a/tests/language/deferred_only_constant_test.dart b/tests/language/deferred_only_constant_test.dart
deleted file mode 100644
index cc3f500..0000000
--- a/tests/language/deferred_only_constant_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Testing import of only constants from a deferred library.
-
-import 'package:expect/expect.dart';
-
-import "deferred_only_constant_lib.dart" deferred as lib;
-
-void main() {
-  lib.loadLibrary().then((_) {
-    Expect.equals(lib.constant, const ["a", "b", "c"]);
-  });
-}
diff --git a/tests/language/deferred_optimized_test.dart b/tests/language/deferred_optimized_test.dart
deleted file mode 100644
index e2de2bf..0000000
--- a/tests/language/deferred_optimized_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --compiler-passes=-Inlining --no-background-compilation
-
-// Declares foo that returns 42.
-import "deferred_constraints_lib2.dart" deferred as lib;
-
-import 'package:expect/expect.dart';
-
-bool libLoaded = false;
-
-main() {
-  Expect.equals(88, heyhey());
-
-  for (int i = 0; i < 30; i++) {
-    heyhey();
-  }
-
-  lib.loadLibrary().then((_) {
-    libLoaded = true;
-    Expect.equals(42, heyhey());
-  });
-}
-
-heyhey() => barbar();
-
-barbar() {
-  if (libLoaded) {
-    // Returns 42.
-    return lib.foo();
-  }
-  return 88;
-}
diff --git a/tests/language/deferred_prefix_constraints_lib.dart b/tests/language/deferred_prefix_constraints_lib.dart
deleted file mode 100644
index c79d4e5..0000000
--- a/tests/language/deferred_prefix_constraints_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2014, 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.
-
-foo() => 24;
diff --git a/tests/language/deferred_prefix_constraints_lib2.dart b/tests/language/deferred_prefix_constraints_lib2.dart
deleted file mode 100644
index c79d4e5..0000000
--- a/tests/language/deferred_prefix_constraints_lib2.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2014, 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.
-
-foo() => 24;
diff --git a/tests/language/deferred_redirecting_factory_lib1.dart b/tests/language/deferred_redirecting_factory_lib1.dart
deleted file mode 100644
index 170c516..0000000
--- a/tests/language/deferred_redirecting_factory_lib1.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2015, 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 lib1;
-
-import "deferred_redirecting_factory_lib2.dart" deferred as lib2;
-import "deferred_redirecting_factory_test.dart" as main;
-
-loadLib2() {
-  return lib2.loadLibrary();
-}
-
-class C extends main.C {
-  String get foo => "lib1";
-  C();
-  factory C.a() = lib2.C;
-}
diff --git a/tests/language/deferred_redirecting_factory_lib2.dart b/tests/language/deferred_redirecting_factory_lib2.dart
deleted file mode 100644
index ec33ce4..0000000
--- a/tests/language/deferred_redirecting_factory_lib2.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, 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 lib2;
-
-import "deferred_redirecting_factory_lib1.dart" as lib1;
-
-class C extends lib1.C {
-  String get foo => "lib2";
-}
diff --git a/tests/language/deferred_redirecting_factory_test.dart b/tests/language/deferred_redirecting_factory_test.dart
deleted file mode 100644
index 5431f50..0000000
--- a/tests/language/deferred_redirecting_factory_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2015, 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 main;
-
-import "deferred_redirecting_factory_lib1.dart" deferred as lib1;
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-class C {
-  String get foo => "main";
-  C();
-  factory C.a() = lib1.C;
-  factory C.b() = lib1.C.a;
-}
-
-test1() async {
-  Expect.throws(() {
-    new C.a();
-  });
-  Expect.throws(() {
-    new C.b();
-  });
-}
-
-test2() async {
-  await lib1.loadLibrary();
-  Expect.equals("lib1", new C.a().foo);
-  Expect.throws(() {
-    new C.b();
-  });
-}
-
-test3() async {
-  await lib1.loadLibrary();
-  await lib1.loadLib2();
-  Expect.equals("lib1", new C.a().foo);
-  Expect.equals("lib2", new C.b().foo);
-}
-
-test() async {
-  await test1();
-  await test2();
-  await test3();
-}
-
-void main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/deferred_regression_22995_lib.dart b/tests/language/deferred_regression_22995_lib.dart
deleted file mode 100644
index d4efaf6..0000000
--- a/tests/language/deferred_regression_22995_lib.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, 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 'deferred_regression_22995_test.dart';
-
-foofoo() {
-  new A();
-  new B();
-  new C();
-}
diff --git a/tests/language/deferred_regression_22995_test.dart b/tests/language/deferred_regression_22995_test.dart
deleted file mode 100644
index f05b6fe..0000000
--- a/tests/language/deferred_regression_22995_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that closurizing a function implies a dependency on its type.
-
-import "package:expect/expect.dart";
-
-import 'deferred_regression_22995_lib.dart' deferred as lib;
-
-class A {}
-
-class B {}
-
-class C {}
-
-typedef Ti(int x);
-typedef TB(B x);
-typedef TTi(Ti x);
-typedef Tg<T>(T x);
-
-class T {
-  fA(A a) => null;
-  fTB(TB a) => null;
-  fTgC(Tg<C> a) => null;
-}
-
-main() {
-  Expect.isFalse(new T().fA is Ti);
-  Expect.isFalse(new T().fTB is TTi);
-  Expect.isFalse(new T().fTgC is TTi);
-  lib.loadLibrary().then((_) {
-    lib.foofoo();
-  });
-}
diff --git a/tests/language/deferred_regression_28678_lib.dart b/tests/language/deferred_regression_28678_lib.dart
deleted file mode 100644
index d985e0a..0000000
--- a/tests/language/deferred_regression_28678_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-var v;
-
-class Clazz {}
diff --git a/tests/language/deferred_regression_28678_test.dart b/tests/language/deferred_regression_28678_test.dart
deleted file mode 100644
index 5051e72..0000000
--- a/tests/language/deferred_regression_28678_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-// Test that await after deferred loading works as expected.
-
-import 'dart:async';
-import "package:expect/expect.dart";
-import 'deferred_regression_28678_lib.dart' deferred as lib;
-
-class A {
-  m() => "here";
-}
-
-f(a, b) => new Future.microtask(() {});
-
-class R {
-  Future test_deferred() async {
-    var a = new A();
-    await lib.loadLibrary();
-    await f(lib.Clazz, lib.v);
-    Expect.equals("here", a.m());
-  }
-}
-
-main() async {
-  await new R().test_deferred();
-}
diff --git a/tests/language/deferred_shadow_load_library_lib.dart b/tests/language/deferred_shadow_load_library_lib.dart
deleted file mode 100644
index e7811aa..0000000
--- a/tests/language/deferred_shadow_load_library_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, 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.
-
-loadLibrary() => 42;
-
-var trueVar = true;
diff --git a/tests/language/deferred_shadow_load_library_test.dart b/tests/language/deferred_shadow_load_library_test.dart
deleted file mode 100644
index 7fd3f74..0000000
--- a/tests/language/deferred_shadow_load_library_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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:async";
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-
-// This library contains a member loadLibrary.
-// Check that we shadow this member.
-import "deferred_shadow_load_library_lib.dart" deferred as lib;
-
-void main() {
-  var x = lib.loadLibrary();
-  Expect.isTrue(x is Future);
-  asyncStart();
-  x.then((_) {
-    Expect.isTrue(lib.trueVar);
-    // Check that shadowing still is in place after loading the library.
-    Expect.isTrue(lib.loadLibrary() is Future);
-    asyncEnd();
-  });
-}
diff --git a/tests/language/deferred_shared_and_unshared_classes_lib1.dart b/tests/language/deferred_shared_and_unshared_classes_lib1.dart
deleted file mode 100644
index 4799e70..0000000
--- a/tests/language/deferred_shared_and_unshared_classes_lib1.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2015, 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 lib1;
-
-import "deferred_shared_and_unshared_classes_lib_shared.dart";
-
-foo() {
-  print(new C1());
-  print(new CShared());
-}
diff --git a/tests/language/deferred_shared_and_unshared_classes_lib2.dart b/tests/language/deferred_shared_and_unshared_classes_lib2.dart
deleted file mode 100644
index fc57e7e..0000000
--- a/tests/language/deferred_shared_and_unshared_classes_lib2.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2015, 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 lib2;
-
-import "deferred_shared_and_unshared_classes_lib_shared.dart";
-
-foo() {
-  print(new C2());
-  print(new CShared());
-}
diff --git a/tests/language/deferred_shared_and_unshared_classes_lib_shared.dart b/tests/language/deferred_shared_and_unshared_classes_lib_shared.dart
deleted file mode 100644
index a2c5665..0000000
--- a/tests/language/deferred_shared_and_unshared_classes_lib_shared.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2015, 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 shared;
-
-class CShared {
-  toString() => "shared";
-}
-
-class C1 {
-  toString() => "C1";
-}
-
-class C2 {
-  toString() => "C2";
-}
diff --git a/tests/language/deferred_shared_and_unshared_classes_test.dart b/tests/language/deferred_shared_and_unshared_classes_test.dart
deleted file mode 100644
index 9fd47dc..0000000
--- a/tests/language/deferred_shared_and_unshared_classes_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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";
-import "package:async_helper/async_helper.dart";
-import "deferred_shared_and_unshared_classes_lib1.dart" deferred as lib1;
-import "deferred_shared_and_unshared_classes_lib2.dart" deferred as lib2;
-import "dart:async";
-
-void main() {
-  asyncTest(() {
-    return Future.wait([
-      lib1.loadLibrary().then((_) {
-        lib1.foo();
-      }),
-      lib2.loadLibrary().then((_) {
-        lib2.foo();
-      })
-    ]);
-  });
-}
diff --git a/tests/language/deferred_static_seperate_lib1.dart b/tests/language/deferred_static_seperate_lib1.dart
deleted file mode 100644
index f8205d8..0000000
--- a/tests/language/deferred_static_seperate_lib1.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2014, 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 lib1;
-
-class ConstClass {
-  final x;
-  const ConstClass(this.x);
-}
-
-var x = const ConstClass(const ConstClass(1));
-
-class C {
-  static foo() {
-    () {}(); // Hack to avoid inlining.
-    return 1;
-  }
-
-  bar() {
-    () {}(); // Hack to avoid inlining.
-    return 1;
-  }
-}
-
-class C1 {
-  static var foo = const {};
-  var bar = const {};
-}
-
-class C2 {
-  static var foo = new Map.from({1: 2});
-  var bar = new Map.from({1: 2});
-}
-
-class C3 {
-  static final foo = const ConstClass(const ConstClass(1));
-  final bar = const ConstClass(const ConstClass(1));
-}
-
-class C4 {
-  static final foo = new Map.from({x: x});
-  final bar = new Map.from({x: x});
-}
-
-class C5 {
-  static const foo = const [
-    const {1: 3}
-  ];
-  bar() {
-    () {}(); // Hack to avoid inlining.
-    return 1;
-  }
-}
diff --git a/tests/language/deferred_static_seperate_lib2.dart b/tests/language/deferred_static_seperate_lib2.dart
deleted file mode 100644
index db07dd7..0000000
--- a/tests/language/deferred_static_seperate_lib2.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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 lib2;
-
-import "package:expect/expect.dart";
-import "deferred_static_seperate_lib1.dart";
-
-foo() {
-  Expect.equals(1, C.foo());
-  Expect.mapEquals({}, C1.foo);
-
-  Expect.mapEquals({1: 2}, C2.foo);
-  C2.foo = {1: 2};
-  Expect.mapEquals({1: 2}, C2.foo);
-
-  Expect.equals(x, C3.foo);
-  Expect.mapEquals({x: x}, C4.foo);
-  Expect.listEquals([
-    const {1: 3}
-  ], C5.foo);
-}
diff --git a/tests/language/deferred_static_seperate_test.dart b/tests/language/deferred_static_seperate_test.dart
deleted file mode 100644
index 5089927..0000000
--- a/tests/language/deferred_static_seperate_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, 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 class lib1.C is referenced via lib1
-// The static function lib1.C.foo is referenced via lib2
-// Dart2js will put them in seperate hunks.
-// Similarly for C2, ..., C5.
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-import "deferred_static_seperate_lib1.dart" deferred as lib1;
-import "deferred_static_seperate_lib2.dart" deferred as lib2;
-
-void main() {
-  asyncStart();
-  Expect.throws(() => new lib1.C());
-  lib1.loadLibrary().then((_) {
-    lib2.loadLibrary().then((_) {
-      print("HERE");
-      Expect.equals(1, new lib1.C().bar());
-      var x = new lib1.C2();
-      Expect.mapEquals({1: 2}, x.bar);
-      x.bar = {2: 3};
-      Expect.mapEquals({2: 3}, x.bar);
-
-      Expect.equals(lib1.x, new lib1.C3().bar);
-      Expect.mapEquals({lib1.x: lib1.x}, new lib1.C4().bar);
-      Expect.equals(1, new lib1.C5().bar());
-
-      lib2.foo();
-      asyncEnd();
-    });
-  });
-}
diff --git a/tests/language/deferred_super_dependency_lib.dart b/tests/language/deferred_super_dependency_lib.dart
deleted file mode 100644
index 8638a4f..0000000
--- a/tests/language/deferred_super_dependency_lib.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, 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 {}
-
-class C extends A {
-  foo() {
-    super.foo = 3;
-  }
-}
diff --git a/tests/language/deferred_super_dependency_test.dart b/tests/language/deferred_super_dependency_test.dart
deleted file mode 100644
index 2f2065b..0000000
--- a/tests/language/deferred_super_dependency_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test.
-// lib.C.foo has code that references `super.foo=` that does not exist. This
-// used to cause a crash.
-
-import "package:expect/expect.dart";
-import "deferred_super_dependency_lib.dart" deferred as lib; //# 01: static type warning
-
-main() async {
-  await lib.loadLibrary(); //# 01: continued
-  Expect.throws(() => new lib.C().foo(), (e) => e is NoSuchMethodError); //# 01: continued
-}
diff --git a/tests/language/deferred_type_dependency_lib1.dart b/tests/language/deferred_type_dependency_lib1.dart
deleted file mode 100644
index a3c92c0..0000000
--- a/tests/language/deferred_type_dependency_lib1.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, the Dart Team. All rights reserved. Use of this
-// source code is governed by a BSD-style license that can be found in
-// the LICENSE file.
-
-library lib1;
-
-import "deferred_type_dependency_lib3.dart";
-
-bool fooIs(x) {
-  return x is A;
-}
-
-bool fooAs(x) {
-  try {
-    return (x as A).p;
-  } on CastError catch (e) {
-    return false;
-  }
-}
-
-bool fooAnnotation(x) {
-  try {
-    A y = x;
-    return y is! String;
-  } on TypeError catch (e) {
-    return false;
-  }
-}
diff --git a/tests/language/deferred_type_dependency_lib2.dart b/tests/language/deferred_type_dependency_lib2.dart
deleted file mode 100644
index 694d15f..0000000
--- a/tests/language/deferred_type_dependency_lib2.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, the Dart Team. All rights reserved. Use of this
-// source code is governed by a BSD-style license that can be found in
-// the LICENSE file.
-
-library lib2;
-
-import "deferred_type_dependency_lib3.dart";
-
-getInstance() {
-  return new A();
-}
diff --git a/tests/language/deferred_type_dependency_lib3.dart b/tests/language/deferred_type_dependency_lib3.dart
deleted file mode 100644
index ae8c258..0000000
--- a/tests/language/deferred_type_dependency_lib3.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2015, 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 lib3;
-
-class A {
-  var p = true;
-}
diff --git a/tests/language/deferred_type_dependency_test.dart b/tests/language/deferred_type_dependency_test.dart
deleted file mode 100644
index 9cb6f4a..0000000
--- a/tests/language/deferred_type_dependency_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, the Dart Team. All rights reserved. Use of this
-// source code is governed by a BSD-style license that can be found in
-// the LICENSE file.
-
-/// Checks that lib1.fooX's dependencies on [A] via is-checks, as-expressions
-/// and type-annotations(in checked-mode) is correctly tracked.
-
-import "deferred_type_dependency_lib1.dart" deferred as lib1;
-import "deferred_type_dependency_lib2.dart" deferred as lib2;
-import "package:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-runTest() async {
-  await lib1.loadLibrary();
-  // Split the cases into a multi-test to test each feature separately.
-  Expect.isFalse(
-      lib1.fooIs //# is: ok
-      lib1.fooAs //# as: ok
-      lib1.fooAnnotation //# type_annotation: ok
-      ("string")
-      is! String //# none: ok
-      );
-  await lib2.loadLibrary();
-  Expect.isTrue(
-      lib1.fooIs //# is: ok
-      lib1.fooAs //# as: ok
-      lib1.fooAnnotation //# type_annotation: ok
-      (lib2.getInstance())
-      is! String //# none: ok
-      );
-}
-
-main() {
-  asyncStart();
-  runTest().then((_) => asyncEnd());
-}
diff --git a/tests/language/deopt_inlined_function_lazy_test.dart b/tests/language/deopt_inlined_function_lazy_test.dart
deleted file mode 100644
index 3912f39..0000000
--- a/tests/language/deopt_inlined_function_lazy_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-// Test lazy deoptimization from within an inlined function.
-// VMOptions=--deoptimize_alot --optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-call_native(x) {
-  // Wrap in try to avoid inlining.
-  // Use a large int so the intrinsifier does not fire.
-  try {
-    return x + 12342353257893275483274832;
-  } finally {}
-}
-
-bar(x) {
-  if (x < 0) call_native(x);
-  x = 42;
-  return x;
-}
-
-foo(x) {
-  x = bar(x);
-  return x;
-}
-
-main() {
-  Expect.equals(42, foo(1));
-  for (var i = 0; i < 20; i++) foo(7);
-  Expect.equals(42, foo(2));
-  // Call the runtime to trigger lazy deopt with foo/bar on the stack.
-  Expect.equals(42, foo(-1));
-}
diff --git a/tests/language/deopt_inlined_function_test.dart b/tests/language/deopt_inlined_function_test.dart
deleted file mode 100644
index f8fa79a..0000000
--- a/tests/language/deopt_inlined_function_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-// Test deoptimization from within an inlined function.
-
-import "package:expect/expect.dart";
-
-class A {
-  deopt_here() => 1;
-}
-
-class B {
-  deopt_here() => 2;
-}
-
-var obj = new A();
-
-bar(x) {
-  x = 42;
-  obj.deopt_here();
-  return x;
-}
-
-foo(x) {
-  x = bar(x);
-  return x;
-}
-
-main() {
-  Expect.equals(42, foo(1));
-  for (var i = 0; i < 2000; i++) foo(7);
-  Expect.equals(42, foo(2));
-  obj = new B();
-  Expect.equals(42, foo(3)); // <-- deoptimization via foo/bar/obj.deopt_here
-}
diff --git a/tests/language/deopt_lazy_finalization_test.dart b/tests/language/deopt_lazy_finalization_test.dart
deleted file mode 100644
index 250650c..0000000
--- a/tests/language/deopt_lazy_finalization_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// 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.
-// Test deoptimziation caused by lazy finalization.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals(20000, part1());
-  // Trigger lazy finalization of class B, which should invalidate
-  // optimized code for A.loop.
-  Expect.equals(-20000, part2());
-}
-
-part1() {
-  var a = new A();
-  a.loop();
-  // Second invocation calls optimized code.
-  return a.loop();
-}
-
-part2() {
-  var b = new B();
-  b.loop();
-  // Second invocation calls optimized code.
-  return b.loop();
-}
-
-class A {
-  foo() => 2;
-
-  loop() {
-    var sum = 0;
-    for (int i = 0; i < 10000; i++) {
-      sum += foo();
-    }
-    return sum;
-  }
-}
-
-class Aa extends A {}
-
-class B extends Aa {
-  foo() => -2;
-}
diff --git a/tests/language/deopt_no_feedback_test.dart b/tests/language/deopt_no_feedback_test.dart
deleted file mode 100644
index 31aa121..0000000
--- a/tests/language/deopt_no_feedback_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test deoptimization caused by running code that did not collect type
-// feedback before.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-testStoreIndexed() {
-  test(a, i, v, flag) {
-    if (flag) {
-      // No type feedback in first pass
-      return a[i] = v;
-    } else {
-      return a[i] = i;
-    }
-  }
-
-  var a = new List(10);
-  for (var i = 0; i < 20; i++) {
-    var r = test(a, 3, 888, false);
-    Expect.equals(3, r);
-    Expect.equals(3, a[3]);
-  }
-  // Deopt.
-  var r = test(a, 3, 888, true);
-  Expect.equals(888, r);
-  Expect.equals(888, a[3]);
-}
-
-testIncrLocal() {
-  test(a, flag) {
-    if (flag) {
-      a++;
-      return a;
-    } else {
-      return -1;
-    }
-  }
-
-  for (var i = 0; i < 20; i++) {
-    var r = test(10, false);
-    Expect.equals(-1, r);
-  }
-  // Deopt.
-  var r = test(10, true);
-  Expect.equals(11, r);
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {}
-  testStoreIndexed();
-  testIncrLocal();
-}
diff --git a/tests/language/deopt_smi_op_test.dart b/tests/language/deopt_smi_op_test.dart
deleted file mode 100644
index caf08df..0000000
--- a/tests/language/deopt_smi_op_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test hoisted (loop-invariant) smi operations with deoptimization.
-
-test_mul(h) {
-  var x;
-  for (var i = 0; i < 3; i++) {
-    x = h * 100000;
-  }
-  return x;
-}
-
-test_neg(h) {
-  var x;
-  for (var i = 0; i < 3; i++) {
-    x = -h;
-  }
-  return x;
-}
-
-main() {
-  for (var i = 0; i < 20; i++) test_mul(10);
-  Expect.equals(1000000, test_mul(10));
-  Expect.equals(100000000000, test_mul(1000000));
-  Expect.equals(100000 * 0x3fffffffffffffff, test_mul(0x3fffffffffffffff));
-
-  for (var i = 0; i < 20; i++) test_neg(10);
-  Expect.equals(-10, test_neg(10));
-  Expect.equals(0x40000000, test_neg(-0x40000000));
-  Expect.equals(0x4000000000000000, test_neg(-0x4000000000000000));
-}
diff --git a/tests/language/deoptimized_function_on_stack_test.dart b/tests/language/deoptimized_function_on_stack_test.dart
deleted file mode 100644
index bc207d0..0000000
--- a/tests/language/deoptimized_function_on_stack_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2011, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// This is a test for deoptimization infrastructure and to reproduce the
-// failure from bug 5442338.
-
-main() {
-  warmup();
-  runTest();
-}
-
-// Create a situation where method 'call' is optimized for using class A
-// when calling foo.
-warmup() {
-  List a = [new A(), new A(), new A(), new A()];
-  var res = 0;
-  for (int i = 0; i < 20; i++) {
-    res = call(a, 0);
-  }
-  Expect.equals(10, res);
-}
-
-// Create a situation where several optimized frames of 'call' are on stack
-// when deoptimization occurs because B.foo is called. After the first
-// deoptimization, several optimized frames of 'call' are still on stack and
-// some of them will be deoptimized.
-runTest() {
-  List a = [new A(), new A(), new B(), new A(), new B(), new B()];
-  var res = call(a, 0);
-  Expect.equals(35, res);
-}
-
-// This method will be optimized for using class A when calling 'foo' and
-// later will be deoptimized because B.foo is required.
-call(List a, int n) {
-  if (n < a.length) {
-    var sum = call(a, n + 1);
-    for (int i = n; i < a.length; i++) {
-      sum += a[i].foo();
-    }
-    return sum;
-  }
-  return 0;
-}
-
-class A {
-  foo() {
-    return 1;
-  }
-}
-
-class B {
-  foo() {
-    return 2;
-  }
-}
diff --git a/tests/language/disassemble_test.dart b/tests/language/disassemble_test.dart
deleted file mode 100644
index 870b888..0000000
--- a/tests/language/disassemble_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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.
-// Dart test program for testing isolate communication with
-// typed objects.
-// VMOptions=--disassemble --no-background-compilation --enable-malloc-hooks=false
-// VMOptions=--disassemble --print-variable-descriptors --no-background-compilation --enable-malloc-hooks=false
-
-// Tests proper object recognition in disassembler.
-
-f(x) {
-  return "foo";
-}
-
-main() {
-  print(f(0));
-}
diff --git a/tests/language/div_by_zero_test.dart b/tests/language/div_by_zero_test.dart
deleted file mode 100644
index cb67d68..0000000
--- a/tests/language/div_by_zero_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to test integer div by zero.
-
-import "package:expect/expect.dart";
-
-class DivByZeroTest {
-  static double divBy(int a, int b) {
-    var result = a / b;
-    return 1.0 * result;
-  }
-
-  static bool moustacheDivBy(int a, int b) {
-    var val = null;
-    try {
-      val = a ~/ b;
-    } catch (e) {
-      return true;
-    }
-    print("Should not have gotten: $val");
-    return false;
-  }
-
-  static void testMain() {
-    Expect.isTrue(divBy(0, 0).isNaN);
-    Expect.isTrue(moustacheDivBy(0, 0));
-  }
-}
-
-main() {
-  DivByZeroTest.testMain();
-}
diff --git a/tests/language/div_with_power_of_two2_test.dart b/tests/language/div_with_power_of_two2_test.dart
deleted file mode 100644
index 05e8580..0000000
--- a/tests/language/div_with_power_of_two2_test.dart
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test division by power of two.
-// Test that results before and after optimization are the same.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// [function, [list of tuples argument/result]].
-var expectedResults = [
-  [
-    divBy1,
-    [
-      [134217730, 134217730],
-      [-134217730, -134217730],
-      [10, 10],
-      [-10, -10]
-    ]
-  ],
-  [
-    divByNeg1,
-    [
-      [134217730, -134217730],
-      [-134217730, 134217730],
-      [10, -10],
-      [-10, 10]
-    ]
-  ],
-  [
-    divBy2,
-    [
-      [134217730, 67108865],
-      [-134217730, -67108865],
-      [10, 5],
-      [-10, -5]
-    ]
-  ],
-  [
-    divByNeg2,
-    [
-      [134217730, -67108865],
-      [-134217730, 67108865],
-      [10, -5],
-      [-10, 5]
-    ]
-  ],
-  [
-    divBy4,
-    [
-      [134217730, 33554432],
-      [-134217730, -33554432],
-      [10, 2],
-      [-10, -2]
-    ]
-  ],
-  [
-    divByNeg4,
-    [
-      [134217730, -33554432],
-      [-134217730, 33554432],
-      [10, -2],
-      [-10, 2]
-    ]
-  ],
-  [
-    divBy134217728,
-    [
-      [134217730, 1],
-      [-134217730, -1],
-      [10, 0],
-      [-10, 0]
-    ]
-  ],
-  [
-    divByNeg134217728,
-    [
-      [134217730, -1],
-      [-134217730, 1],
-      [10, 0],
-      [-10, 0]
-    ]
-  ],
-  // Use different functions for 64 bit arguments.
-  [
-    divBy4_,
-    [
-      [549755813990, 137438953497],
-      [-549755813990, -137438953497],
-      [288230925907525632, 72057731476881408],
-      [-288230925907525632, -72057731476881408]
-    ]
-  ],
-  [
-    divByNeg4_,
-    [
-      [549755813990, -137438953497],
-      [-549755813990, 137438953497],
-      [288230925907525632, -72057731476881408],
-      [-288230925907525632, 72057731476881408]
-    ]
-  ],
-  [
-    divBy549755813888,
-    [
-      [549755813990, 1],
-      [-549755813990, -1],
-      [288230925907525632, 524289],
-      [-288230925907525632, -524289]
-    ]
-  ],
-  [
-    divByNeg549755813888,
-    [
-      [549755813990, -1],
-      [-549755813990, 1],
-      [288230925907525632, -524289],
-      [-288230925907525632, 524289]
-    ]
-  ],
-];
-
-divBy0(a) => a ~/ 0;
-divBy1(a) => a ~/ 1;
-divByNeg1(a) => a ~/ -1;
-divBy2(a) => a ~/ 2;
-divByNeg2(a) => a ~/ -2;
-divBy4(a) => a ~/ 4;
-divByNeg4(a) => a ~/ -4;
-divBy134217728(a) => a ~/ 134217728;
-divByNeg134217728(a) => a ~/ -134217728;
-
-divBy4_(a) => a ~/ 4;
-divByNeg4_(a) => a ~/ -4;
-divBy549755813888(a) => a ~/ 549755813888;
-divByNeg549755813888(a) => a ~/ -549755813888;
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    for (var e in expectedResults) {
-      Function f = e[0];
-      List values = e[1];
-      for (var v in values) {
-        int arg = v[0];
-        int res = v[1];
-        Expect.equals(res, f(arg));
-      }
-    }
-    Expect.throws(() => divBy0(4),
-        (e) => e is IntegerDivisionByZeroException || e is UnsupportedError);
-  }
-}
diff --git a/tests/language/div_with_power_of_two_test.dart b/tests/language/div_with_power_of_two_test.dart
deleted file mode 100644
index e9d8234..0000000
--- a/tests/language/div_with_power_of_two_test.dart
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test division by power of two.
-// Test that results before and after optimization are the same.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// [function, [list of tuples argument/result]].
-var expectedResults = [
-  [
-    divBy1,
-    [
-      [134217730, 134217730],
-      [-134217730, -134217730],
-      [10, 10],
-      [-10, -10]
-    ]
-  ],
-  [
-    divByNeg1,
-    [
-      [134217730, -134217730],
-      [-134217730, 134217730],
-      [10, -10],
-      [-10, 10]
-    ]
-  ],
-  [
-    divBy2,
-    [
-      [134217730, 67108865],
-      [-134217730, -67108865],
-      [10, 5],
-      [-10, -5]
-    ]
-  ],
-  [
-    divByNeg2,
-    [
-      [134217730, -67108865],
-      [-134217730, 67108865],
-      [10, -5],
-      [-10, 5]
-    ]
-  ],
-  [
-    divBy4,
-    [
-      [134217730, 33554432],
-      [-134217730, -33554432],
-      [10, 2],
-      [-10, -2]
-    ]
-  ],
-  [
-    divByNeg4,
-    [
-      [134217730, -33554432],
-      [-134217730, 33554432],
-      [10, -2],
-      [-10, 2]
-    ]
-  ],
-  [
-    divBy134217728,
-    [
-      [134217730, 1],
-      [-134217730, -1],
-      [10, 0],
-      [-10, 0]
-    ]
-  ],
-  [
-    divByNeg134217728,
-    [
-      [134217730, -1],
-      [-134217730, 1],
-      [10, 0],
-      [-10, 0]
-    ]
-  ],
-  // Use different functions for 64 bit arguments.
-  [
-    divBy4_,
-    [
-      [549755813990, 137438953497],
-      [-549755813990, -137438953497],
-      [288230925907525632, 72057731476881408],
-      [-288230925907525632, -72057731476881408]
-    ]
-  ],
-  [
-    divByNeg4_,
-    [
-      [549755813990, -137438953497],
-      [-549755813990, 137438953497],
-      [288230925907525632, -72057731476881408],
-      [-288230925907525632, 72057731476881408]
-    ]
-  ],
-  [
-    divBy549755813888,
-    [
-      [549755813990, 1],
-      [-549755813990, -1],
-      [288230925907525632, 524289],
-      [-288230925907525632, -524289]
-    ]
-  ],
-  [
-    divByNeg549755813888,
-    [
-      [549755813990, -1],
-      [-549755813990, 1],
-      [288230925907525632, -524289],
-      [-288230925907525632, 524289]
-    ]
-  ],
-];
-
-divBy0(a) => a ~/ 0;
-divBy1(a) => a ~/ 1;
-divByNeg1(a) => a ~/ -1;
-divBy2(a) => a ~/ 2;
-divByNeg2(a) => a ~/ -2;
-divBy4(a) => a ~/ 4;
-divByNeg4(a) => a ~/ -4;
-divBy134217728(a) => a ~/ 134217728;
-divByNeg134217728(a) => a ~/ -134217728;
-
-divBy4_(a) => a ~/ 4;
-divByNeg4_(a) => a ~/ -4;
-divBy549755813888(a) => a ~/ 549755813888;
-divByNeg549755813888(a) => a ~/ -549755813888;
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    for (var e in expectedResults) {
-      Function f = e[0];
-      List values = e[1];
-      for (var v in values) {
-        int arg = v[0];
-        int res = v[1];
-        Expect.equals(res, f(arg));
-      }
-    }
-  }
-}
diff --git a/tests/language/do_while2_test.dart b/tests/language/do_while2_test.dart
deleted file mode 100644
index 9243e94..0000000
--- a/tests/language/do_while2_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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";
-
-var a = 42;
-
-foo1() {
-  var i = 0;
-  var saved;
-  do {
-    saved = i;
-    i = a;
-  } while (i == saved);
-  Expect.equals(0, saved);
-  Expect.equals(42, i);
-}
-
-foo2() {
-  var i = 0;
-  var saved;
-  do {
-    saved = i;
-    i = a;
-  } while (i != saved);
-  Expect.equals(42, saved);
-  Expect.equals(42, i);
-}
-
-foo3() {
-  var i = 0;
-  var saved;
-  do {
-    saved = i;
-    i = a;
-    if (i == saved) continue;
-  } while (i != saved);
-  Expect.equals(42, saved);
-  Expect.equals(42, i);
-}
-
-main() {
-  foo1();
-  foo2();
-  foo3();
-}
diff --git a/tests/language/do_while3_test.dart b/tests/language/do_while3_test.dart
deleted file mode 100644
index 4026ec9..0000000
--- a/tests/language/do_while3_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-// Test that a condition is only evaluated once in a loop.
-
-main() {
-  int c = 0;
-  do {
-    c++;
-  } while (c++ < 2);
-  Expect.equals(4, c);
-}
diff --git a/tests/language/do_while4_test.dart b/tests/language/do_while4_test.dart
deleted file mode 100644
index 9b7115a..0000000
--- a/tests/language/do_while4_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to crash in the presence of
-// do/while, break and a local variable declared after the break.
-
-import "package:expect/expect.dart";
-
-var a = false;
-main() {
-  do {
-    if (!a) break;
-    var c = main();
-    a = true;
-  } while (true);
-  Expect.isFalse(a);
-}
diff --git a/tests/language/do_while_test.dart b/tests/language/do_while_test.dart
deleted file mode 100644
index 435fab5..0000000
--- a/tests/language/do_while_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing do while statement.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int f1(bool b) {
-    do return 1; while (b);
-    return 2;
-  }
-
-  static int f2(bool b) {
-    do {
-      return 1;
-    } while (b);
-    return 2;
-  }
-
-  static int f3(bool b) {
-    do ; while (b);
-    return 2;
-  }
-
-  static int f4(bool b) {
-    do {} while (b);
-    return 2;
-  }
-
-  static int f5(int n) {
-    int i = 0;
-    do {
-      i++;
-    } while (i < n);
-    return i;
-  }
-}
-
-class DoWhileTest {
-  static testMain() {
-    Expect.equals(1, Helper.f1(true));
-    Expect.equals(1, Helper.f1(false));
-    Expect.equals(1, Helper.f2(true));
-    Expect.equals(1, Helper.f2(false));
-    Expect.equals(2, Helper.f3(false));
-    Expect.equals(2, Helper.f4(false));
-    Expect.equals(1, Helper.f5(-2));
-    Expect.equals(1, Helper.f5(-1));
-    Expect.equals(1, Helper.f5(0));
-    Expect.equals(1, Helper.f5(1));
-    Expect.equals(2, Helper.f5(2));
-    Expect.equals(3, Helper.f5(3));
-  }
-}
-
-main() {
-  DoWhileTest.testMain();
-}
diff --git a/tests/language/double_comparison_test.dart b/tests/language/double_comparison_test.dart
deleted file mode 100644
index cf00962..0000000
--- a/tests/language/double_comparison_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-// Tests VM optimizing compiler negate condition for doubles (bug 5376516).
-
-loop() {
-  for (double d = 0.0; d < 1100.0; d++) {}
-  for (double d = 0.0; d <= 1100.0; d++) {}
-  for (double d = 1000.0; d > 0.0; d--) {}
-  for (double d = 1000.0; d >= 0.0; d--) {}
-}
-
-main() {
-  loop();
-  loop();
-}
diff --git a/tests/language/double_int_addition_test.dart b/tests/language/double_int_addition_test.dart
deleted file mode 100644
index bd3f62b..0000000
--- a/tests/language/double_int_addition_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test that optimized code does not silently convert integers to doubles.
-
-main() {
-  // Optimize add-op
-  for (int i = 0; i < 20; i++) {
-    addOp(1.1, 2.1);
-  }
-
-  Expect.isTrue(addOp(1.1, 2.1) is double);
-  Expect.isTrue(addOp(1, 2) is int);
-}
-
-addOp(a, b) => a + b;
diff --git a/tests/language/double_int_to_string_test.dart b/tests/language/double_int_to_string_test.dart
deleted file mode 100644
index 04c7ef7..0000000
--- a/tests/language/double_int_to_string_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals("0.0", (0.0).toString());
-  Expect.equals("9.0", (9.0).toString());
-  Expect.equals("90.0", (90.0).toString());
-  Expect.equals(
-      "111111111111111110000.0", (111111111111111111111.0).toString());
-  Expect.equals("-9.0", (-9.0).toString());
-  Expect.equals("-90.0", (-90.0).toString());
-  Expect.equals(
-      "-111111111111111110000.0", (-111111111111111111111.0).toString());
-  Expect.equals("1000.0", (1000.0).toString());
-  Expect.equals("1000000000000000100.0", (1000000000000000128.0).toString());
-}
diff --git a/tests/language/double_modulo_test.dart b/tests/language/double_modulo_test.dart
deleted file mode 100644
index 54e9fef..0000000
--- a/tests/language/double_modulo_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test optimization of modulo operator on Double.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  double k = -0.33333;
-  double firstResPos = doMod(k, 1.0);
-  double firstResNeg = doMod(k, -1.0);
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(firstResPos, doMod(k, 1.0));
-    Expect.equals(firstResNeg, doMod(k, -1.0));
-  }
-}
-
-doMod(a, b) => a % b;
diff --git a/tests/language/double_nan_comparison_test.dart b/tests/language/double_nan_comparison_test.dart
deleted file mode 100644
index 4946952..0000000
--- a/tests/language/double_nan_comparison_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-// Tests double comparisons with NaN in different contexts.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-test_expr(a, b) => a != b;
-
-test_conditional(a, b) => a != b ? true : false;
-
-test_branch(a, b) {
-  if (a != b) {
-    return true;
-  }
-  return false;
-}
-
-main() {
-  Expect.equals(true, test_expr(0.5, double.NAN));
-  for (var i = 0; i < 20; i++) test_expr(0.5, double.NAN);
-  Expect.equals(true, test_expr(0.5, double.NAN));
-
-  Expect.equals(true, test_conditional(0.5, double.NAN));
-  for (var i = 0; i < 20; i++) test_conditional(0.5, double.NAN);
-  Expect.equals(true, test_conditional(0.5, double.NAN));
-
-  Expect.equals(true, test_branch(0.5, double.NAN));
-  for (var i = 0; i < 20; i++) test_branch(0.5, double.NAN);
-  Expect.equals(true, test_branch(0.5, double.NAN));
-}
diff --git a/tests/language/double_to_string_as_exponential2_test.dart b/tests/language/double_to_string_as_exponential2_test.dart
deleted file mode 100644
index 2179eb0..0000000
--- a/tests/language/double_to_string_as_exponential2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  var v = 1.0;
-  Expect.throws(() => v.toStringAsExponential(-1), (e) => e is RangeError);
-  Expect.throws(() => v.toStringAsExponential(21), (e) => e is RangeError);
-  Expect.throws(() => v.toStringAsExponential(1.5),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => v.toStringAsExponential("string"),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => v.toStringAsExponential("3"),
-      (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/language/double_to_string_as_exponential3_test.dart b/tests/language/double_to_string_as_exponential3_test.dart
deleted file mode 100644
index 7300013..0000000
--- a/tests/language/double_to_string_as_exponential3_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals("1.00000000000000000000e+0", (1.0).toStringAsExponential(20));
-  Expect.equals("1.00000000000000005551e-1", (0.1).toStringAsExponential(20));
-  Expect.equals(1.00000000000000005551e-1, 0.1);
-}
diff --git a/tests/language/double_to_string_as_exponential_test.dart b/tests/language/double_to_string_as_exponential_test.dart
deleted file mode 100644
index c44bbd1..0000000
--- a/tests/language/double_to_string_as_exponential_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals("1e+0", (1.0).toStringAsExponential());
-  Expect.equals("1.1e+1", (11.0).toStringAsExponential());
-  Expect.equals("1.12e+2", (112.0).toStringAsExponential());
-  Expect.equals("1e+0", (1.0).toStringAsExponential(null));
-  Expect.equals("1.1e+1", (11.0).toStringAsExponential(null));
-  Expect.equals("1.12e+2", (112.0).toStringAsExponential(null));
-  Expect.equals("1e+0", (1.0).toStringAsExponential(0));
-  Expect.equals("1e+1", (11.0).toStringAsExponential(0));
-  Expect.equals("1e+2", (112.0).toStringAsExponential(0));
-  Expect.equals("1.0e+0", (1.0).toStringAsExponential(1));
-  Expect.equals("1.1e+1", (11.0).toStringAsExponential(1));
-  Expect.equals("1.1e+2", (112.0).toStringAsExponential(1));
-  Expect.equals("1.00e+0", (1.0).toStringAsExponential(2));
-  Expect.equals("1.10e+1", (11.0).toStringAsExponential(2));
-  Expect.equals("1.12e+2", (112.0).toStringAsExponential(2));
-  Expect.equals("1.000e+0", (1.0).toStringAsExponential(3));
-  Expect.equals("1.100e+1", (11.0).toStringAsExponential(3));
-  Expect.equals("1.120e+2", (112.0).toStringAsExponential(3));
-  Expect.equals("1e-1", (0.1).toStringAsExponential());
-  Expect.equals("1.1e-1", (0.11).toStringAsExponential());
-  Expect.equals("1.12e-1", (0.112).toStringAsExponential());
-  Expect.equals("1e-1", (0.1).toStringAsExponential(null));
-  Expect.equals("1.1e-1", (0.11).toStringAsExponential(null));
-  Expect.equals("1.12e-1", (0.112).toStringAsExponential(null));
-  Expect.equals("1e-1", (0.1).toStringAsExponential(0));
-  Expect.equals("1e-1", (0.11).toStringAsExponential(0));
-  Expect.equals("1e-1", (0.112).toStringAsExponential(0));
-  Expect.equals("1.0e-1", (0.1).toStringAsExponential(1));
-  Expect.equals("1.1e-1", (0.11).toStringAsExponential(1));
-  Expect.equals("1.1e-1", (0.112).toStringAsExponential(1));
-  Expect.equals("1.00e-1", (0.1).toStringAsExponential(2));
-  Expect.equals("1.10e-1", (0.11).toStringAsExponential(2));
-  Expect.equals("1.12e-1", (0.112).toStringAsExponential(2));
-  Expect.equals("1.000e-1", (0.1).toStringAsExponential(3));
-  Expect.equals("1.100e-1", (0.11).toStringAsExponential(3));
-  Expect.equals("1.120e-1", (0.112).toStringAsExponential(3));
-
-  Expect.equals("-0e+0", (-0.0).toStringAsExponential());
-  Expect.equals("-1e+0", (-1.0).toStringAsExponential());
-  Expect.equals("-1.1e+1", (-11.0).toStringAsExponential());
-  Expect.equals("-1.12e+2", (-112.0).toStringAsExponential());
-  Expect.equals("-0e+0", (-0.0).toStringAsExponential(null));
-  Expect.equals("-1e+0", (-1.0).toStringAsExponential(null));
-  Expect.equals("-1.1e+1", (-11.0).toStringAsExponential(null));
-  Expect.equals("-1.12e+2", (-112.0).toStringAsExponential(null));
-  Expect.equals("-1e+0", (-1.0).toStringAsExponential(0));
-  Expect.equals("-1e+1", (-11.0).toStringAsExponential(0));
-  Expect.equals("-1e+2", (-112.0).toStringAsExponential(0));
-  Expect.equals("-1.0e+0", (-1.0).toStringAsExponential(1));
-  Expect.equals("-1.1e+1", (-11.0).toStringAsExponential(1));
-  Expect.equals("-1.1e+2", (-112.0).toStringAsExponential(1));
-  Expect.equals("-1.00e+0", (-1.0).toStringAsExponential(2));
-  Expect.equals("-1.10e+1", (-11.0).toStringAsExponential(2));
-  Expect.equals("-1.12e+2", (-112.0).toStringAsExponential(2));
-  Expect.equals("-1.000e+0", (-1.0).toStringAsExponential(3));
-  Expect.equals("-1.100e+1", (-11.0).toStringAsExponential(3));
-  Expect.equals("-1.120e+2", (-112.0).toStringAsExponential(3));
-  Expect.equals("-1e-1", (-0.1).toStringAsExponential());
-  Expect.equals("-1.1e-1", (-0.11).toStringAsExponential());
-  Expect.equals("-1.12e-1", (-0.112).toStringAsExponential());
-  Expect.equals("-1e-1", (-0.1).toStringAsExponential(null));
-  Expect.equals("-1.1e-1", (-0.11).toStringAsExponential(null));
-  Expect.equals("-1.12e-1", (-0.112).toStringAsExponential(null));
-  Expect.equals("-1e-1", (-0.1).toStringAsExponential(0));
-  Expect.equals("-1e-1", (-0.11).toStringAsExponential(0));
-  Expect.equals("-1e-1", (-0.112).toStringAsExponential(0));
-  Expect.equals("-1.0e-1", (-0.1).toStringAsExponential(1));
-  Expect.equals("-1.1e-1", (-0.11).toStringAsExponential(1));
-  Expect.equals("-1.1e-1", (-0.112).toStringAsExponential(1));
-  Expect.equals("-1.00e-1", (-0.1).toStringAsExponential(2));
-  Expect.equals("-1.10e-1", (-0.11).toStringAsExponential(2));
-  Expect.equals("-1.12e-1", (-0.112).toStringAsExponential(2));
-  Expect.equals("-1.000e-1", (-0.1).toStringAsExponential(3));
-  Expect.equals("-1.100e-1", (-0.11).toStringAsExponential(3));
-  Expect.equals("-1.120e-1", (-0.112).toStringAsExponential(3));
-
-  Expect.equals("NaN", (double.NAN).toStringAsExponential(2));
-  Expect.equals("Infinity", (double.INFINITY).toStringAsExponential(2));
-  Expect.equals("-Infinity", (-double.INFINITY).toStringAsExponential(2));
-  Expect.equals("1e+0", (1.0).toStringAsExponential(0));
-  Expect.equals("0e+0", (0.0).toStringAsExponential());
-  Expect.equals("0e+0", (0.0).toStringAsExponential(null));
-  Expect.equals("0.00e+0", (0.0).toStringAsExponential(2));
-  Expect.equals("1e+1", (11.2356).toStringAsExponential(0));
-  Expect.equals("1.1236e+1", (11.2356).toStringAsExponential(4));
-  Expect.equals("1.1236e-4", (0.000112356).toStringAsExponential(4));
-  Expect.equals("-1.1236e-4", (-0.000112356).toStringAsExponential(4));
-  Expect.equals("1.12356e-4", (0.000112356).toStringAsExponential());
-  Expect.equals("-1.12356e-4", (-0.000112356).toStringAsExponential());
-  Expect.equals("1.12356e-4", (0.000112356).toStringAsExponential(null));
-  Expect.equals("-1.12356e-4", (-0.000112356).toStringAsExponential(null));
-}
diff --git a/tests/language/double_to_string_as_fixed2_test.dart b/tests/language/double_to_string_as_fixed2_test.dart
deleted file mode 100644
index d01e894..0000000
--- a/tests/language/double_to_string_as_fixed2_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  var v = 0.0;
-  Expect.throws(() => v.toStringAsFixed(-1), (e) => e is RangeError);
-  Expect.throws(() => v.toStringAsFixed(21), (e) => e is RangeError);
-  Expect.throws(() => v.toStringAsFixed(null), (e) => e is ArgumentError);
-  Expect.throws(() => v.toStringAsFixed(1.5),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => v.toStringAsFixed("string"),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => v.toStringAsFixed("3"),
-      (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/language/double_to_string_as_fixed_test.dart b/tests/language/double_to_string_as_fixed_test.dart
deleted file mode 100644
index 6e0aed2..0000000
--- a/tests/language/double_to_string_as_fixed_test.dart
+++ /dev/null
@@ -1,104 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-class ToStringAsFixedTest {
-  static void testMain() {
-    Expect.equals("2.000", 2.0.toStringAsFixed(3));
-    Expect.equals("2.100", 2.1.toStringAsFixed(3));
-    Expect.equals("2.120", 2.12.toStringAsFixed(3));
-    Expect.equals("2.123", 2.123.toStringAsFixed(3));
-    Expect.equals("2.124", 2.1239.toStringAsFixed(3));
-    Expect.equals("NaN", (0.0 / 0.0).toStringAsFixed(3));
-    Expect.equals("Infinity", (1.0 / 0.0).toStringAsFixed(3));
-    Expect.equals("-Infinity", (-1.0 / 0.0).toStringAsFixed(3));
-    Expect.equals(
-        "1.1111111111111111e+21", 1111111111111111111111.0.toStringAsFixed(8));
-    Expect.equals("0.1", 0.1.toStringAsFixed(1));
-    Expect.equals("0.10", 0.1.toStringAsFixed(2));
-    Expect.equals("0.100", 0.1.toStringAsFixed(3));
-    Expect.equals("0.01", 0.01.toStringAsFixed(2));
-    Expect.equals("0.010", 0.01.toStringAsFixed(3));
-    Expect.equals("0.0100", 0.01.toStringAsFixed(4));
-    Expect.equals("0.00", 0.001.toStringAsFixed(2));
-    Expect.equals("0.001", 0.001.toStringAsFixed(3));
-    Expect.equals("0.0010", 0.001.toStringAsFixed(4));
-    Expect.equals("1.0000", 1.0.toStringAsFixed(4));
-    Expect.equals("1.0", 1.0.toStringAsFixed(1));
-    Expect.equals("1", 1.0.toStringAsFixed(0));
-    Expect.equals("12", 12.0.toStringAsFixed(0));
-    Expect.equals("1", 1.1.toStringAsFixed(0));
-    Expect.equals("12", 12.1.toStringAsFixed(0));
-    Expect.equals("1", 1.12.toStringAsFixed(0));
-    Expect.equals("12", 12.12.toStringAsFixed(0));
-    Expect.equals("0.0000006", 0.0000006.toStringAsFixed(7));
-    Expect.equals("0.00000006", 0.00000006.toStringAsFixed(8));
-    Expect.equals("0.000000060", 0.00000006.toStringAsFixed(9));
-    Expect.equals("0.0000000600", 0.00000006.toStringAsFixed(10));
-    Expect.equals("0", 0.0.toStringAsFixed(0));
-    Expect.equals("0.0", 0.0.toStringAsFixed(1));
-    Expect.equals("0.00", 0.0.toStringAsFixed(2));
-
-    Expect.equals("-0.1", (-0.1).toStringAsFixed(1));
-    Expect.equals("-0.10", (-0.1).toStringAsFixed(2));
-    Expect.equals("-0.100", (-0.1).toStringAsFixed(3));
-    Expect.equals("-0.01", (-0.01).toStringAsFixed(2));
-    Expect.equals("-0.010", (-0.01).toStringAsFixed(3));
-    Expect.equals("-0.0100", (-0.01).toStringAsFixed(4));
-    Expect.equals("-0.00", (-0.001).toStringAsFixed(2));
-    Expect.equals("-0.001", (-0.001).toStringAsFixed(3));
-    Expect.equals("-0.0010", (-0.001).toStringAsFixed(4));
-    Expect.equals("-1.0000", (-1.0).toStringAsFixed(4));
-    Expect.equals("-1.0", (-1.0).toStringAsFixed(1));
-    Expect.equals("-1", (-1.0).toStringAsFixed(0));
-    Expect.equals("-1", (-1.1).toStringAsFixed(0));
-    Expect.equals("-12", (-12.1).toStringAsFixed(0));
-    Expect.equals("-1", (-1.12).toStringAsFixed(0));
-    Expect.equals("-12", (-12.12).toStringAsFixed(0));
-    Expect.equals("-0.0000006", (-0.0000006).toStringAsFixed(7));
-    Expect.equals("-0.00000006", (-0.00000006).toStringAsFixed(8));
-    Expect.equals("-0.000000060", (-0.00000006).toStringAsFixed(9));
-    Expect.equals("-0.0000000600", (-0.00000006).toStringAsFixed(10));
-    Expect.equals("-0", (-0.0).toStringAsFixed(0));
-    Expect.equals("-0.0", (-0.0).toStringAsFixed(1));
-    Expect.equals("-0.00", (-0.0).toStringAsFixed(2));
-
-    Expect.equals("1000", 1000.0.toStringAsFixed(0));
-    Expect.equals("0", 0.00001.toStringAsFixed(0));
-    Expect.equals("0.00001", 0.00001.toStringAsFixed(5));
-    Expect.equals(
-        "0.00000000000000000010", 0.0000000000000000001.toStringAsFixed(20));
-    Expect.equals("0.00001000000000000", 0.00001.toStringAsFixed(17));
-    Expect.equals("1.00000000000000000", 1.0.toStringAsFixed(17));
-    Expect.equals(
-        "1000000000000000128", 1000000000000000128.0.toStringAsFixed(0));
-    Expect.equals(
-        "100000000000000128.0", 100000000000000128.0.toStringAsFixed(1));
-    Expect.equals(
-        "10000000000000128.00", 10000000000000128.0.toStringAsFixed(2));
-    Expect.equals("10000000000000128.00000000000000000000",
-        10000000000000128.0.toStringAsFixed(20));
-    Expect.equals("0", 0.0.toStringAsFixed(0));
-    Expect.equals("-42.000", (-42.0).toStringAsFixed(3));
-    Expect.equals(
-        "-1000000000000000128", (-1000000000000000128.0).toStringAsFixed(0));
-    Expect.equals("-0.00000000000000000010",
-        (-0.0000000000000000001).toStringAsFixed(20));
-    Expect.equals(
-        "0.12312312312312299889", 0.123123123123123.toStringAsFixed(20));
-    // Test that we round up even when the last digit generated is even.
-    // dtoa does not do this in its original form.
-    Expect.equals("1", 0.5.toStringAsFixed(0));
-    Expect.equals("-1", (-0.5).toStringAsFixed(0));
-    Expect.equals("1.3", 1.25.toStringAsFixed(1));
-    Expect.equals("234.2040", 234.20405.toStringAsFixed(4));
-    Expect.equals("234.2041", 234.2040506.toStringAsFixed(4));
-  }
-}
-
-main() {
-  ToStringAsFixedTest.testMain();
-}
diff --git a/tests/language/double_to_string_as_precision2_test.dart b/tests/language/double_to_string_as_precision2_test.dart
deleted file mode 100644
index 1c6f58d..0000000
--- a/tests/language/double_to_string_as_precision2_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  var v = 0.0;
-  Expect.throws(() => v.toStringAsPrecision(0), (e) => e is RangeError);
-  Expect.throws(() => v.toStringAsPrecision(22), (e) => e is RangeError);
-  Expect.throws(() => v.toStringAsPrecision(null), (e) => e is ArgumentError);
-  Expect.throws(() => v.toStringAsPrecision(1.5),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => v.toStringAsPrecision("string"),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => v.toStringAsPrecision("3"),
-      (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/language/double_to_string_as_precision3_test.dart b/tests/language/double_to_string_as_precision3_test.dart
deleted file mode 100644
index 19f390ca..0000000
--- a/tests/language/double_to_string_as_precision3_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals(
-      "0.000555000000000000046248", (0.000555).toStringAsPrecision(21));
-  Expect.equals(0.000555000000000000046248, 0.000555);
-  Expect.equals(
-      "5.54999999999999980179e-7", (0.000000555).toStringAsPrecision(21));
-  Expect.equals(5.54999999999999980179e-7, 0.000000555);
-  Expect.equals(
-      "-5.54999999999999980179e-7", (-0.000000555).toStringAsPrecision(21));
-  Expect.equals(-5.54999999999999980179e-7, -0.000000555);
-}
diff --git a/tests/language/double_to_string_as_precision_test.dart b/tests/language/double_to_string_as_precision_test.dart
deleted file mode 100644
index 4f159f9..0000000
--- a/tests/language/double_to_string_as_precision_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals("NaN", (double.NAN).toStringAsPrecision(1));
-  Expect.equals("Infinity", (double.INFINITY).toStringAsPrecision(2));
-  Expect.equals("-Infinity", (-double.INFINITY).toStringAsPrecision(2));
-  Expect.equals("0.000555000000000000", (0.000555).toStringAsPrecision(15));
-  Expect.equals("5.55000000000000e-7", (0.000000555).toStringAsPrecision(15));
-  Expect.equals("-5.55000000000000e-7", (-0.000000555).toStringAsPrecision(15));
-  Expect.equals("1e+8", (123456789.0).toStringAsPrecision(1));
-  Expect.equals("123456789", (123456789.0).toStringAsPrecision(9));
-  Expect.equals("1.2345679e+8", (123456789.0).toStringAsPrecision(8));
-  Expect.equals("1.234568e+8", (123456789.0).toStringAsPrecision(7));
-  Expect.equals("-1.234568e+8", (-123456789.0).toStringAsPrecision(7));
-  Expect.equals("-1.2e-9", (-.0000000012345).toStringAsPrecision(2));
-  Expect.equals("-1.2e-8", (-.000000012345).toStringAsPrecision(2));
-  Expect.equals("-1.2e-7", (-.00000012345).toStringAsPrecision(2));
-  Expect.equals("-0.0000012", (-.0000012345).toStringAsPrecision(2));
-  Expect.equals("-0.000012", (-.000012345).toStringAsPrecision(2));
-  Expect.equals("-0.00012", (-.00012345).toStringAsPrecision(2));
-  Expect.equals("-0.0012", (-.0012345).toStringAsPrecision(2));
-  Expect.equals("-0.012", (-.012345).toStringAsPrecision(2));
-  Expect.equals("-0.12", (-.12345).toStringAsPrecision(2));
-  Expect.equals("-1.2", (-1.2345).toStringAsPrecision(2));
-  Expect.equals("-12", (-12.345).toStringAsPrecision(2));
-  Expect.equals("-1.2e+2", (-123.45).toStringAsPrecision(2));
-  Expect.equals("-1.2e+3", (-1234.5).toStringAsPrecision(2));
-  Expect.equals("-1.2e+4", (-12345.0).toStringAsPrecision(2));
-  Expect.equals("-1.235e+4", (-12345.67).toStringAsPrecision(4));
-  Expect.equals("-1.234e+4", (-12344.67).toStringAsPrecision(4));
-  Expect.equals("-0.0", (-0.0).toStringAsPrecision(2));
-  Expect.equals("-0", (-0.0).toStringAsPrecision(1));
-  // Test that we round up even when the last digit generated is even.
-  // dtoa does not do this in its original form.
-  Expect.equals("1.3", 1.25.toStringAsPrecision(2));
-  Expect.equals("1.4", 1.35.toStringAsPrecision(2));
-}
diff --git a/tests/language/double_to_string_test.dart b/tests/language/double_to_string_test.dart
deleted file mode 100644
index 5b0c4cd..0000000
--- a/tests/language/double_to_string_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals("NaN", (double.NAN).toString());
-  Expect.equals("Infinity", (1 / 0).toString());
-  Expect.equals("-Infinity", (-1 / 0).toString());
-  Expect.equals("90.12", (90.12).toString());
-  Expect.equals("0.1", (0.1).toString());
-  Expect.equals("0.01", (0.01).toString());
-  Expect.equals("0.0123", (0.0123).toString());
-  Expect.equals(
-      "1.1111111111111111e+21", (1111111111111111111111.0).toString());
-  Expect.equals(
-      "1.1111111111111111e+22", (11111111111111111111111.0).toString());
-  Expect.equals("0.00001", (0.00001).toString());
-  Expect.equals("0.000001", (0.000001).toString());
-  Expect.equals("1e-7", (0.0000001).toString());
-  Expect.equals("1.2e-7", (0.00000012).toString());
-  Expect.equals("1.23e-7", (0.000000123).toString());
-  Expect.equals("1e-8", (0.00000001).toString());
-  Expect.equals("1.2e-8", (0.000000012).toString());
-  Expect.equals("1.23e-8", (0.0000000123).toString());
-
-  Expect.equals("-0.0", (-0.0).toString());
-  Expect.equals("-90.12", (-90.12).toString());
-  Expect.equals("-0.1", (-0.1).toString());
-  Expect.equals("-0.01", (-0.01).toString());
-  Expect.equals("-0.0123", (-0.0123).toString());
-  Expect.equals(
-      "-1.1111111111111111e+21", (-1111111111111111111111.0).toString());
-  Expect.equals(
-      "-1.1111111111111111e+22", (-11111111111111111111111.0).toString());
-  Expect.equals("-0.00001", (-0.00001).toString());
-  Expect.equals("-0.000001", (-0.000001).toString());
-  Expect.equals("-1e-7", (-0.0000001).toString());
-  Expect.equals("-1.2e-7", (-0.00000012).toString());
-  Expect.equals("-1.23e-7", (-0.000000123).toString());
-  Expect.equals("-1e-8", (-0.00000001).toString());
-  Expect.equals("-1.2e-8", (-0.000000012).toString());
-  Expect.equals("-1.23e-8", (-0.0000000123).toString());
-
-  Expect.equals("0.00001", (0.00001).toString());
-  Expect.equals("1e+21", (1000000000000000012800.0).toString());
-  Expect.equals("-1e+21", (-1000000000000000012800.0).toString());
-  Expect.equals("1e-7", (0.0000001).toString());
-  Expect.equals("-1e-7", (-0.0000001).toString());
-  Expect.equals(
-      "1.0000000000000001e+21", (1000000000000000128000.0).toString());
-  Expect.equals("0.000001", (0.000001).toString());
-  Expect.equals("1e-7", (0.0000001).toString());
-}
diff --git a/tests/language/duplicate_constructor_test.dart b/tests/language/duplicate_constructor_test.dart
deleted file mode 100644
index 45b344a..0000000
--- a/tests/language/duplicate_constructor_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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 Foo {
-  Foo();
-  Foo(); //# 01: compile-time error
-}
-
-main() {
-  new Foo();
-}
diff --git a/tests/language/duplicate_export_liba.dart b/tests/language/duplicate_export_liba.dart
deleted file mode 100644
index 7b68d42..0000000
--- a/tests/language/duplicate_export_liba.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2013, 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 export_liba;
-
-export 'duplicate_import_liba.dart';
diff --git a/tests/language/duplicate_export_negative_test.dart b/tests/language/duplicate_export_negative_test.dart
deleted file mode 100644
index 4cda438..0000000
--- a/tests/language/duplicate_export_negative_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-library duplicate_export_negative_test;
-
-import 'duplicate_import_libd.dart';
-
-void main() {}
diff --git a/tests/language/duplicate_export_test.dart b/tests/language/duplicate_export_test.dart
deleted file mode 100644
index de4512e..0000000
--- a/tests/language/duplicate_export_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that it is not a compile-time error to reexport the same elements
-// through different paths.
-
-library duplicate_export_test;
-
-export 'duplicate_import_liba.dart';
-export 'duplicate_export_liba.dart'; // reexports 'duplicate_import_liba.dart'.
-
-void main() {}
diff --git a/tests/language/duplicate_implements_test.dart b/tests/language/duplicate_implements_test.dart
deleted file mode 100644
index 41c10fa..0000000
--- a/tests/language/duplicate_implements_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-// Check that duplicate types in implements/extends list are
-// compile-time errors.
-
-abstract class I {}
-
-abstract class J {}
-
-abstract class K<T> {}
-
-class X implements I, J, I { } //              //# 01: compile-time error
-class X implements J, I, K<int>, K<int> { } // //# 02: compile-time error
-
-abstract class Z implements I, J, J { } //             //# 03: compile-time error
-abstract class Z implements K<int>, K<int> { } //      //# 04: compile-time error
-
-main() {
-  X x = new X(); // //# 01: continued
-  X x = new X(); // //# 02: continued
-  Z z = new Z(); // //# 03: continued
-  Z z = new Z(); // //# 04: continued
-}
diff --git a/tests/language/duplicate_import_liba.dart b/tests/language/duplicate_import_liba.dart
deleted file mode 100644
index b8af1a7..0000000
--- a/tests/language/duplicate_import_liba.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-library liba;
-
-var field;
-
-void method() {}
-
-class Class {}
-
-void methodOrClass() {}
diff --git a/tests/language/duplicate_import_libb.dart b/tests/language/duplicate_import_libb.dart
deleted file mode 100644
index 456147f..0000000
--- a/tests/language/duplicate_import_libb.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-library libb;
-
-var field;
-
-void method() {}
-
-class Class {}
-
-class methodOrClass {}
diff --git a/tests/language/duplicate_import_libc.dart b/tests/language/duplicate_import_libc.dart
deleted file mode 100644
index d1f1b41..0000000
--- a/tests/language/duplicate_import_libc.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library libc;
-
-var field;
-
-void method() {}
-
-class Class {}
diff --git a/tests/language/duplicate_import_libd.dart b/tests/language/duplicate_import_libd.dart
deleted file mode 100644
index ccec81e..0000000
--- a/tests/language/duplicate_import_libd.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-library libd;
-
-import 'duplicate_import_liba.dart';
-import 'duplicate_import_libb.dart';
-import 'duplicate_import_libc.dart';
-
-export 'duplicate_import_liba.dart';
-export 'duplicate_import_libb.dart';
-export 'duplicate_import_libc.dart';
diff --git a/tests/language/duplicate_import_prefix_test.dart b/tests/language/duplicate_import_prefix_test.dart
deleted file mode 100644
index 9c28802..0000000
--- a/tests/language/duplicate_import_prefix_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Importing with a duplicate prefix is allowed.
-
-import "duplicate_import_liba.dart" as a;
-import "duplicate_import_libb.dart" as a;
-
-void main() {}
diff --git a/tests/language/duplicate_interface_lib.dart b/tests/language/duplicate_interface_lib.dart
deleted file mode 100644
index b369b3a..0000000
--- a/tests/language/duplicate_interface_lib.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2013, 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.
-// Check fail because of cycles in super class relationship.
-
-library Interface_Lib;
-
-class InterfA {}
-
-class InterfB {}
diff --git a/tests/language/duplicate_interface_negative_test.dart b/tests/language/duplicate_interface_negative_test.dart
deleted file mode 100644
index b83a8fd..0000000
--- a/tests/language/duplicate_interface_negative_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-// Check fail because of cycles in super class relationship.
-
-library duplicateInterfaceNegativeTest;
-
-import "duplicate_interface_lib.dart" as alib;
-import "duplicate_interface_lib.dart" show InterfA;
-
-// Expect error since InterfA and alib.InterfA refer to the same interface.
-class Foo implements InterfA, alib.InterfA { } //# compile-time error
-
-main() {
-  Expect.isTrue(new Foo() is InterfA);
-  Expect.isTrue(new Foo() is alib.InterfA);
-}
diff --git a/tests/language/duplicate_interface_test.dart b/tests/language/duplicate_interface_test.dart
deleted file mode 100644
index d957be9..0000000
--- a/tests/language/duplicate_interface_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-// Check fail because of cycles in super class relationship.
-
-library duplicateInterfaceTest;
-
-import 'package:expect/expect.dart';
-import "duplicate_interface_lib.dart" as alib;
-
-class InterfB {}
-
-// Ok since InterfB and alib.InterfB are not the same interface
-class Foo implements InterfB, alib.InterfB {}
-
-main() {
-  Expect.isTrue(new Foo() is InterfB);
-  Expect.isTrue(new Foo() is alib.InterfB);
-}
diff --git a/tests/language/dynamic2_test.dart b/tests/language/dynamic2_test.dart
deleted file mode 100644
index fdefa40..0000000
--- a/tests/language/dynamic2_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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.
-//
-// Test the prohibited use of 'dynamic' in extending and implementing classes.
-
-class A
-  extends dynamic // //# 00: compile-time error
-  implements dynamic // //# 01: compile-time error
-{}
-
-main() {
-  new A();
-}
diff --git a/tests/language/dynamic_call_test.dart b/tests/language/dynamic_call_test.dart
deleted file mode 100644
index f7a760c..0000000
--- a/tests/language/dynamic_call_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing dynamic calls.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  Helper() {}
-  int foo(int i) {
-    return i;
-  }
-}
-
-class DynamicCallTest {
-  static int testMain() {
-    Helper obj = new Helper();
-    Expect.equals(1, obj.foo(1));
-  }
-}
-
-main() {
-  DynamicCallTest.testMain();
-}
diff --git a/tests/language/dynamic_field_test.dart b/tests/language/dynamic_field_test.dart
deleted file mode 100644
index 557c674..0000000
--- a/tests/language/dynamic_field_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.
-//
-// Test that ensures that fields can be accessed dynamically.
-
-import "package:expect/expect.dart";
-
-class A extends C {
-  var a;
-  var b;
-}
-
-class C {
-  foo() {
-    print(a); //# 01: static type warning
-    return a; //# 01: continued
-  }
-  bar() {
-    print(b.a); //# 02: static type warning
-    return b.a; //# 02: continued
-  }
-}
-
-main() {
-  var a = new A();
-  a.a = 1;
-  a.b = a;
-  Expect.equals(1, a.foo()); //# 01: continued
-  Expect.equals(1, a.bar()); //# 02: continued
-}
diff --git a/tests/language/dynamic_prefix_core_test.dart b/tests/language/dynamic_prefix_core_test.dart
deleted file mode 100644
index d28ca9e..0000000
--- a/tests/language/dynamic_prefix_core_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-// Test explicit import of dart:core in the source code..
-
-library DynamicPrefixCoreTest.dart;
-
-import "package:expect/expect.dart";
-import "dart:core" as mycore;
-
-void main() {
-  // Should still be available because it is not a member of dart:core.
-  Expect.isTrue(dynamic is mycore.Type);
-
-  Expect.throws(() => mycore.dynamic is mycore.Type, //    //# 01: static type warning
-                (e) => e is mycore.NoSuchMethodError, //   //# 01: continued
-                'dynamic is not a member of dart:core'); //# 01: continued
-}
diff --git a/tests/language/dynamic_test.dart b/tests/language/dynamic_test.dart
deleted file mode 100644
index 97e97bf..0000000
--- a/tests/language/dynamic_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// 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.
-//
-// Dart test program testing the use of 'dynamic' in generic types.
-
-import "package:expect/expect.dart";
-
-abstract class Iface<K, V> {}
-
-class M1<K, V> implements Iface<K, V> {}
-
-class M2<K> implements Iface<K, dynamic> {}
-
-class M3 implements Iface<String, dynamic> {}
-
-typedef dynamic F1<T>(dynamic x, T y);
-
-class HasFieldDynamic {
-  HasFieldDynamic() : dynamic = "dynamic" {}
-  var dynamic; // Field named dynamic is allowed.
-}
-
-class HasMethodDynamic {
-  dynamic() => "dynamic"; // Method named dynamic is allowed.
-}
-
-main() {
-  Expect.isTrue(dynamic is Type);
-  Expect.equals(dynamic, dynamic);
-
-  M1<dynamic, dynamic> m1 = new M1<dynamic, dynamic>();
-  Expect.isTrue(m1 is Iface<dynamic, num>);
-  Expect.isTrue(m1 is Iface<String, dynamic>);
-  Expect.isTrue(m1 is Iface<String, num>);
-  Expect.isTrue(m1 is Iface<num, String>);
-
-  M2<dynamic> m2 = new M2<dynamic>();
-  Expect.isTrue(m2 is Iface<dynamic, num>);
-  Expect.isTrue(m2 is Iface<String, dynamic>);
-  Expect.isTrue(m2 is Iface<String, num>);
-  Expect.isTrue(m2 is Iface<num, String>);
-
-  M3 m3 = new M3();
-  Expect.isTrue(m3 is Iface<dynamic, num>);
-  Expect.isTrue(m3 is Iface<String, dynamic>);
-  Expect.isTrue(m3 is Iface<String, num>);
-  Expect.isTrue(m3 is! Iface<num, String>);
-
-  F1<int> f1 = (String s, int i) => s[i];
-  Expect.isTrue(f1 is F1<int>);
-
-  HasFieldDynamic has_field = new HasFieldDynamic();
-  Expect.equals("dynamic", has_field.dynamic);
-
-  HasMethodDynamic has_method = new HasMethodDynamic();
-  Expect.equals("dynamic", has_method.dynamic());
-
-  {
-    int dynamic = 0; // Local variable named dynamic is allowed.
-    Expect.equals(0, dynamic);
-  }
-}
diff --git a/tests/language/dynamic_type_literal_test.dart b/tests/language/dynamic_type_literal_test.dart
deleted file mode 100644
index 335e9ae..0000000
--- a/tests/language/dynamic_type_literal_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test generation of 'dynamic' type literals.
-
-import "package:expect/expect.dart";
-
-void main() {
-  Expect.isTrue(dynamic is Type);
-  Expect.isFalse(dynamic == Type);
-}
diff --git a/tests/language/efficient_length_warning_test.dart b/tests/language/efficient_length_warning_test.dart
deleted file mode 100644
index 5ba2c6f..0000000
--- a/tests/language/efficient_length_warning_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-// Third dart test program.
-
-import "dart:math";
-
-main() {
-  // This should no longer cause a warning because the least-upper-bound
-  // of List<int> and Set<int> is Object.
-  // The LUB is now EfficientLengthIterable and it extends Iterable.
-  var x = (new Random().nextBool() // Unpredictable condition.
-          ? <int>[1]
-          : new Set<int>.from([1]))
-      .first;
-  if (x != 1) throw "Wat?";
-}
diff --git a/tests/language/emit_const_fields_test.dart b/tests/language/emit_const_fields_test.dart
deleted file mode 100644
index 1a3d7a5..0000000
--- a/tests/language/emit_const_fields_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test that used static consts are emitted.
-
-import "package:expect/expect.dart";
-
-class Guide {
-  static const LTUAE = 42;
-  static const TITLE = "Life, the Universe and Everything";
-  static const EARTH = const {
-    "Sector": "ZZ9 Plural Z Alpha",
-    "Status": const ["Scheduled for demolition", "1978-03-08"],
-    "Description": "Mostly harmless"
-  };
-}
-
-main() {
-  Expect.isTrue(42 == Guide.LTUAE);
-  Expect.isTrue("1978-03-08" == Guide.EARTH["Status"][1]);
-}
diff --git a/tests/language/empty_block_case_test.dart b/tests/language/empty_block_case_test.dart
deleted file mode 100644
index 7443918..0000000
--- a/tests/language/empty_block_case_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test that a case with an empty block does not fall through.
-
-class EmptyBlockCaseTest {
-  static testMain() {
-    var exception = null;
-    try {
-      switch (1) {
-        case 1:
-          {}
-        case 2:
-          Expect.equals(true, false);
-      }
-    } on FallThroughError catch (e) {
-      exception = e;
-    }
-    Expect.equals(true, exception != null);
-  }
-}
-
-main() {
-  EmptyBlockCaseTest.testMain();
-}
diff --git a/tests/language/empty_library.dart b/tests/language/empty_library.dart
deleted file mode 100644
index fe101dc..0000000
--- a/tests/language/empty_library.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2015, 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 empty_library;
diff --git a/tests/language/empty_main.dart b/tests/language/empty_main.dart
deleted file mode 100644
index 0946204..0000000
--- a/tests/language/empty_main.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of ApplicationTest.dart;
-
-main() {}
diff --git a/tests/language/enum_duplicate_lib.dart b/tests/language/enum_duplicate_lib.dart
deleted file mode 100644
index b9c84f5..0000000
--- a/tests/language/enum_duplicate_lib.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2015, 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 enum_duplicate_lib;
-
-enum Enum1 {
-  A,
-  B,
-}
-
-class Enum2 {
-  static Iterable get values => ['Enum2.A', 'Enum2.B'];
-}
diff --git a/tests/language/enum_duplicate_test.dart b/tests/language/enum_duplicate_test.dart
deleted file mode 100644
index 256d98c..0000000
--- a/tests/language/enum_duplicate_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test for duplicate enums.
-
-library enum_duplicate_test;
-
-import 'package:expect/expect.dart';
-
-import 'enum_duplicate_lib.dart' as lib; //# 01: ok
-import 'enum_duplicate_lib.dart' as lib; //# 02: ok
-
-enum Enum1 {
-  A,
-  B,
-}
-
-enum Enum2 {
-  A,
-  B,
-}
-
-main() {
-  Expect.equals('Enum1.A,Enum1.B', Enum1.values.join(','));
-  Expect.equals('Enum1.A,Enum1.B', lib.Enum1.values.join(',')); //# 01: continued
-  Expect.equals('Enum2.A,Enum2.B', Enum2.values.join(','));
-  Expect.equals('Enum2.A,Enum2.B', lib.Enum2.values.join(',')); //# 02: continued
-}
diff --git a/tests/language/enum_index_test.dart b/tests/language/enum_index_test.dart
deleted file mode 100644
index ce6994b..0000000
--- a/tests/language/enum_index_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test index access for enums.
-
-library enum_index_test;
-
-import 'package:expect/expect.dart';
-
-enum Enum {
-  A,
-  B,
-}
-
-class Class {
-  var index;
-}
-
-main() {
-  test(null, new Class());
-  test(0, Enum.A);
-  test(1, Enum.B);
-}
-
-test(expected, object) {
-  Expect.equals(expected, object.index);
-}
diff --git a/tests/language/enum_is_keyword_test.dart b/tests/language/enum_is_keyword_test.dart
deleted file mode 100644
index 09db3d9..0000000
--- a/tests/language/enum_is_keyword_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that `enum` is considered a keyword and therefore invalid as the name of
-// declarations.
-
-main() {
-  var enum; //# 01: syntax error
-}
diff --git a/tests/language/enum_mirror_test.dart b/tests/language/enum_mirror_test.dart
deleted file mode 100644
index 00de84b..0000000
--- a/tests/language/enum_mirror_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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:mirrors';
-
-import 'package:expect/expect.dart';
-
-enum Foo { BAR, BAZ }
-
-main() {
-  Expect.equals('Foo.BAR', Foo.BAR.toString());
-  var name = reflect(Foo.BAR).invoke(#toString, []).reflectee;
-  Expect.equals('Foo.BAR', name);
-}
diff --git a/tests/language/enum_private_lib.dart b/tests/language/enum_private_lib.dart
deleted file mode 100644
index c8fb00f..0000000
--- a/tests/language/enum_private_lib.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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 enum_private_lib;
-
-enum Enum2 {
-  _A,
-  _B,
-}
diff --git a/tests/language/enum_private_test.dart b/tests/language/enum_private_test.dart
deleted file mode 100644
index cc4dce4..0000000
--- a/tests/language/enum_private_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test privacy issue for enums.
-
-library enum_private_test;
-
-import 'package:expect/expect.dart';
-
-import 'enum_private_lib.dart';
-
-enum Enum1 {
-  _A,
-  _B,
-}
-
-main() {
-  Expect.equals('Enum1._A,Enum1._B', Enum1.values.join(','));
-  Expect.equals('Enum2._A,Enum2._B', Enum2.values.join(',')); //# 01: ok
-  Expect.throws(() => Enum2._A, (e) => e is NoSuchMethodError); //# 02: static type warning
-}
diff --git a/tests/language/enum_syntax_test.dart b/tests/language/enum_syntax_test.dart
deleted file mode 100644
index f08fca3..0000000
--- a/tests/language/enum_syntax_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Basic syntax test for enumeration types
-
-import 'package:expect/expect.dart';
-
-enum Color { red, orange, yellow, green }
-
-// Additional comma at end of list is ok.
-enum Veggies {
-  carrot,
-  bean,
-  broccolo,
-}
-
-// Need at least one enumeration identifier.
-enum Nada {} // //# 01: syntax error
-
-// Duplicate entries are a compile-time error
-enum ComeAgain { ahau, knust, zipfel, knust, gupf } // //# 02: compile-time error
-
-// Enum entries must not collide with implicitly defined members.
-enum ComeAgain { ahau, knust, zipfel, index } //# 03: compile-time error
-
-enum ComeAgain { ahau, knust, zipfel, values } //# 04: compile-time error
-
-enum ComeAgain { ahau, knust, zipfel, toString } //# 05: compile-time error
-
-// Enum entry must not collide with enum type name.
-enum ComeAgain { ahau, knust, zipfel, ComeAgain } //# 06: compile-time error
-
-// Missing comma.
-enum Numbers { one, two, three four, five } // //# 07: syntax error
-
-// Missing enum type name.
-enum { eins, zwei, drei } // //# 08: syntax error
-
-// Duplicate name in library scope.
-topLevelFunction() => null;
-enum topLevelFunction { bla, blah } // //# 09: compile-time error
-
-class C {}
-enum C { bla, blah } // //# 10: compile-time error
-
-var zzTop;
-enum zzTop { Billy, Dusty, Frank } // //# 11: compile-time error
-
-// Enum type cannot be super type or interface type.
-class Rainbow extends Color {} // //# 20: compile-time error
-class Rainbow implements Color {} // //# 21: compile-time error
-class Rainbow extends List with Color {} // //# 22: compile-time error
-
-main() {
-  Nada x; //# 01: continued
-  var x = ComeAgain.zipfel; // //# 02: continued
-  var x = ComeAgain.zipfel; // //# 03: continued
-  var x = ComeAgain.zipfel; // //# 04: continued
-  var x = ComeAgain.zipfel; // //# 05: continued
-  var x = ComeAgain.zipfel; // //# 06: continued
-  var x = Numbers.four; // //# 07: continued
-  var x = topLevelFunction.bla; // //# 09: continued
-  var x = C.bla; // //# 10: continued
-  var x = zzTop.Frank; // //# 11: continued
-
-  var x = new Rainbow(); // //# 20: continued
-  var x = new Rainbow(); // //# 21: continued
-  var x = new Rainbow(); // //# 22: continued
-
-  // It is a compile-time error to explicitly instantiate an enum instance.
-  var x = new Color(); // //# 30: compile-time error
-}
diff --git a/tests/language/enum_test.dart b/tests/language/enum_test.dart
deleted file mode 100644
index fd63654..0000000
--- a/tests/language/enum_test.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright (c) 2014, 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';
-
-enum Enum1 { _ }
-enum Enum2 { A }
-enum Enum3 { B, C }
-enum Enum4 {
-  D,
-  E,
-}
-enum Enum5 { F, G, H }
-enum _Enum6 { I, _J }
-
-main() {
-  Expect.equals('Enum1._', Enum1._.toString());
-  Expect.equals(0, Enum1._.index);
-  Expect.listEquals([Enum1._], Enum1.values);
-  Enum1.values.forEach(test1);
-
-  Expect.equals('Enum2.A', Enum2.A.toString());
-  Expect.equals(0, Enum2.A.index);
-  Expect.listEquals([Enum2.A], Enum2.values);
-  Expect.identical(const <Enum2>[Enum2.A], Enum2.values);
-  Enum2.values.forEach(test2);
-
-  Expect.equals('Enum3.B', Enum3.B.toString());
-  Expect.equals('Enum3.C', Enum3.C.toString());
-  Expect.equals(0, Enum3.B.index);
-  Expect.equals(1, Enum3.C.index);
-  Expect.listEquals([Enum3.B, Enum3.C], Enum3.values);
-  Enum3.values.forEach(test3);
-
-  Expect.equals('Enum4.D', Enum4.D.toString());
-  Expect.equals('Enum4.E', Enum4.E.toString());
-  Expect.equals(0, Enum4.D.index);
-  Expect.equals(1, Enum4.E.index);
-  Expect.listEquals([Enum4.D, Enum4.E], Enum4.values);
-  Enum4.values.forEach(test4);
-
-  Expect.equals('Enum5.F', Enum5.F.toString());
-  Expect.equals('Enum5.G', Enum5.G.toString());
-  Expect.equals('Enum5.H', Enum5.H.toString());
-  Expect.equals(0, Enum5.F.index);
-  Expect.equals(1, Enum5.G.index);
-  Expect.equals(2, Enum5.H.index);
-  Expect.listEquals([Enum5.F, Enum5.G, Enum5.H], Enum5.values);
-  Enum5.values.forEach(test5);
-
-  Expect.equals('_Enum6.I', _Enum6.I.toString());
-  Expect.equals('_Enum6._J', _Enum6._J.toString());
-}
-
-test1(Enum1 e) {
-  int index;
-  switch (e) {
-    case Enum1._:
-      index = 0;
-      break;
-  }
-  Expect.equals(e.index, index);
-}
-
-test2(Enum2 e) {
-  int index;
-  switch (e) {
-    case Enum2.A:
-      index = 0;
-      break;
-  }
-  Expect.equals(e.index, index);
-}
-
-test3(Enum3 e) {
-  int index;
-  switch (e) {
-    case Enum3.C:
-      index = 1;
-      break;
-    case Enum3.B:
-      index = 0;
-      break;
-  }
-  Expect.equals(e.index, index);
-}
-
-test4(Enum4 e) {
-  int index;
-  switch (e) {
-    case Enum4.D:
-      index = 0;
-      break;
-    case Enum4.E:
-      index = 1;
-      break;
-  }
-  Expect.equals(e.index, index);
-}
-
-test5(Enum5 e) {
-  int index;
-  switch (e) {
-    case Enum5.H:
-      index = 2;
-      break;
-    case Enum5.F:
-      index = 0;
-      break;
-    case Enum5.G:
-      index = 1;
-      break;
-  }
-  Expect.equals(e.index, index);
-}
diff --git a/tests/language/equality_test.dart b/tests/language/equality_test.dart
deleted file mode 100644
index 6b8a920..0000000
--- a/tests/language/equality_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  bool _result;
-  A(this._result);
-  operator ==(x) {
-    return _result;
-  }
-}
-
-opaque(x) => [x, 1, 'y'][0]; // confuse the optimizers.
-
-class Death {
-  operator ==(x) {
-    throw 'Dead!';
-  }
-}
-
-death() => opaque(new Death());
-nullFn() => opaque(null);
-
-tests() {
-  var alwaysTrue = new A(true);
-  var alwaysFalse = new A(false);
-  Expect.isFalse(alwaysFalse == alwaysFalse);
-  Expect.isTrue(alwaysFalse != alwaysFalse);
-  Expect.isTrue(alwaysTrue == alwaysTrue);
-  Expect.isTrue(alwaysTrue == 5);
-  Expect.isFalse(alwaysTrue == null);
-  Expect.isFalse(null == alwaysTrue);
-  Expect.isTrue(alwaysTrue != null);
-  Expect.isTrue(null != alwaysTrue);
-  Expect.isTrue(null == null);
-  Expect.isFalse(null != null);
-
-  Expect.throws(() => death() == 5);
-  Expect.isFalse(death() == nullFn());
-  Expect.isFalse(nullFn() == death());
-  Expect.isTrue(nullFn() == nullFn());
-  Expect.isTrue(death() != nullFn());
-  Expect.isTrue(nullFn() != death());
-  Expect.isFalse(nullFn() != nullFn());
-
-  if (death() == nullFn()) {
-    throw "failed";
-  }
-  if (death() != nullFn()) {} else {
-    throw "failed";
-  }
-}
-
-boolEqualityPositiveA(a) => a == true;
-boolEqualityNegativeA(a) => a != true;
-
-boolEqualityPositiveB(a) => true == a;
-boolEqualityNegativeB(a) => true != a;
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    tests();
-    // Do not inline calls to prevent constant folding.
-    Expect.isTrue(boolEqualityPositiveA(true));
-    Expect.isFalse(boolEqualityPositiveA(false));
-    Expect.isFalse(boolEqualityNegativeA(true));
-    Expect.isTrue(boolEqualityNegativeA(false));
-
-    Expect.isTrue(boolEqualityPositiveB(true));
-    Expect.isFalse(boolEqualityPositiveB(false));
-    Expect.isFalse(boolEqualityNegativeB(true));
-    Expect.isTrue(boolEqualityNegativeB(false));
-  }
-
-  // Deoptimize.
-  Expect.isFalse(boolEqualityPositiveA(1));
-  Expect.isTrue(boolEqualityNegativeA("hi"));
-  Expect.isFalse(boolEqualityPositiveB(2.0));
-  Expect.isTrue(boolEqualityNegativeB([]));
-}
diff --git a/tests/language/error_stacktrace_test.dart b/tests/language/error_stacktrace_test.dart
deleted file mode 100644
index 4ec5dbd..0000000
--- a/tests/language/error_stacktrace_test.dart
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException {
-  const MyException(String message) : message_ = message;
-  final String message_;
-}
-
-class Helper1 {
-  static int func1() {
-    return func2();
-  }
-
-  static int func2() {
-    return func3();
-  }
-
-  static int func3() {
-    return func4();
-  }
-
-  static int func4() {
-    var i = 0;
-    try {
-      i = 10;
-      func5();
-    } on ArgumentError catch (e) {
-      i = 100;
-      Expect.isNotNull(e.stackTrace, "Errors need a stackTrace on throw");
-    }
-    return i;
-  }
-
-  static void func5() {
-    // Throw an Error.
-    throw new ArgumentError("ArgumentError in func5");
-  }
-}
-
-class Helper2 {
-  static int func1() {
-    return func2();
-  }
-
-  static int func2() {
-    return func3();
-  }
-
-  static int func3() {
-    return func4();
-  }
-
-  static int func4() {
-    var i = 0;
-    try {
-      i = 10;
-      func5();
-    } on ArgumentError catch (e, s) {
-      i = 200;
-      Expect.isNotNull(e.stackTrace, "Errors need a stackTrace on throw");
-      Expect.equals(e.stackTrace.toString(), s.toString());
-    }
-    return i;
-  }
-
-  static List func5() {
-    // Throw an Error.
-    throw new ArgumentError("ArgumentError in func5");
-  }
-}
-
-class Helper3 {
-  static int func1() {
-    return func2();
-  }
-
-  static int func2() {
-    return func3();
-  }
-
-  static int func3() {
-    return func4();
-  }
-
-  static int func4() {
-    var i = 0;
-    try {
-      i = 10;
-      func5();
-    } on MyException catch (e) {
-      i = 300;
-      try {
-        // There should be no stackTrace in this normal exception object.
-        // We should get a NoSuchMethodError.
-        var trace = e.stackTrace; //# static type warning
-      } on NoSuchMethodError catch (e) {
-        Expect.isNotNull(e.stackTrace, "Error needs a stackTrace on throw");
-      }
-    }
-    return i;
-  }
-
-  static List func5() {
-    // Throw an Exception (any random object).
-    throw new MyException("MyException in func5");
-  }
-}
-
-class ErrorStackTraceTest {
-  static testMain() {
-    Expect.equals(100, Helper1.func1());
-    Expect.equals(200, Helper2.func1());
-    Expect.equals(300, Helper3.func1());
-  }
-}
-
-main() {
-  ErrorStackTraceTest.testMain();
-}
diff --git a/tests/language/evaluation_redirecting_constructor_test.dart b/tests/language/evaluation_redirecting_constructor_test.dart
deleted file mode 100644
index 6236c0a..0000000
--- a/tests/language/evaluation_redirecting_constructor_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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";
-
-int counter = 0;
-
-class Bar {
-  Bar() {
-    counter++;
-  }
-}
-
-class A {
-  var _bar = new Bar();
-  A() : this._();
-  A._() {
-    () => 42;
-  }
-}
-
-main() {
-  new A();
-  Expect.equals(1, counter);
-}
diff --git a/tests/language/example_constructor_test.dart b/tests/language/example_constructor_test.dart
deleted file mode 100644
index b8a2c66..0000000
--- a/tests/language/example_constructor_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing order of constructor invocation.
-
-import "package:expect/expect.dart";
-
-var trace = "";
-
-int rec(int i) {
-  trace += "$i ";
-  return i;
-}
-
-class A {
-  A(int x) : x = rec(2) {
-    Expect.equals(1, x); // Parameter x
-    Expect.equals(2, this.x);
-    rec(5);
-  }
-  final int x;
-}
-
-class B extends A {
-  B(this.a, int y, int z)
-      : super(rec(1)),
-        z = rec(3),
-        y = rec(4) {
-    rec(6);
-  }
-  int a;
-  int y;
-  int z;
-}
-
-main() {
-  var test = new B(rec(0), 0, 0);
-  Expect.equals(0, test.a);
-  Expect.equals(2, test.x);
-  Expect.equals(4, test.y);
-  Expect.equals(3, test.z);
-  Expect.equals("0 1 2 3 4 5 6 ", trace);
-}
diff --git a/tests/language/exception_identity_test.dart b/tests/language/exception_identity_test.dart
deleted file mode 100644
index 2b16607..0000000
--- a/tests/language/exception_identity_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test that an object when thrown stays the same.
-
-class A {
-  A();
-}
-
-check(exception) {
-  try {
-    throw exception;
-  } catch (e) {
-    Expect.equals(exception, e);
-  }
-}
-
-main() {
-  check("str");
-  check(new A());
-  check(1);
-  check(1.2);
-}
diff --git a/tests/language/exception_in_increment_test.dart b/tests/language/exception_in_increment_test.dart
deleted file mode 100644
index 6c65391..0000000
--- a/tests/language/exception_in_increment_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-// Test throws exception in the middle of the increment operation, the setter
-// part of the instance field increment never completes.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-main() {
-  var a = new A();
-  a.field = new A();
-  for (int i = 0; i < 20; i++) {
-    try {
-      a.foo(i);
-    } catch (e) {
-      // Ignore.
-    }
-  }
-}
-
-class A {
-  var field;
-  foo(i) {
-    field++; // throw exception
-  }
-}
diff --git a/tests/language/exception_test.dart b/tests/language/exception_test.dart
deleted file mode 100644
index 2cdab5e..0000000
--- a/tests/language/exception_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class ExceptionTest {
-  static testMain() {
-    int i = 0;
-    try {
-      throw "Hello";
-    } on String catch (s) {
-      print(s);
-      i += 10;
-    }
-
-    try {
-      throw "bye";
-    } on String catch (s) {
-      print(s);
-      i += 10;
-    }
-    Expect.equals(20, i);
-
-    bool correctCatch = false;
-    try {
-      // This throws NullThrownError
-      throw null;
-    } on String catch (s) {
-      correctCatch = false;
-    } on NullThrownError catch (e) {
-      correctCatch = true;
-    } catch (x) {
-      correctCatch = false;
-    }
-    Expect.isTrue(correctCatch);
-  }
-}
-
-main() {
-  ExceptionTest.testMain();
-}
diff --git a/tests/language/execute_finally10_test.dart b/tests/language/execute_finally10_test.dart
deleted file mode 100644
index dfe47b5..0000000
--- a/tests/language/execute_finally10_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not treat the finally
-// block as a successor of a catch block that throws.
-
-import "package:expect/expect.dart";
-
-class A {
-  var field;
-  start() {}
-  stop() {
-    field = 42;
-  }
-}
-
-class B {
-  var totalCompileTime = new A();
-  var runCompiler = new Object();
-
-  run() {
-    totalCompileTime.start();
-    try {
-      throw 'foo';
-    } catch (exception) {
-      // Use [runCompiler] twice to ensure it will have a local
-      // variable.
-      runCompiler.toString();
-      runCompiler.toString();
-      rethrow;
-    } finally {
-      totalCompileTime.stop();
-    }
-  }
-}
-
-main() {
-  var b = new B();
-  try {
-    b.run();
-    throw 'Expected exception';
-  } catch (exception) {
-    // Expected exception.
-  }
-
-  Expect.equals(42, b.totalCompileTime.field);
-}
diff --git a/tests/language/execute_finally11_test.dart b/tests/language/execute_finally11_test.dart
deleted file mode 100644
index dbe7288..0000000
--- a/tests/language/execute_finally11_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not treat the finally
-// block as a successor of a nested try block.
-
-import "package:expect/expect.dart";
-
-class A {
-  var field;
-  start() {}
-  stop() {
-    field = 42;
-  }
-}
-
-class B {
-  var totalCompileTime = new A();
-  var runCompiler = new Object();
-
-  run() {
-    totalCompileTime.start();
-    try {
-      throw 'foo';
-    } catch (exception) {
-      try {
-        // Use [runCompiler] twice to ensure it will have a local
-        // variable.
-        runCompiler.toString();
-        runCompiler.toString();
-      } catch (exception) {}
-      rethrow;
-    } finally {
-      totalCompileTime.stop();
-    }
-  }
-}
-
-main() {
-  var b = new B();
-  try {
-    b.run();
-    throw 'Expected exception';
-  } catch (exception) {
-    // Expected exception.
-  }
-
-  Expect.equals(42, b.totalCompileTime.field);
-}
diff --git a/tests/language/execute_finally12_test.dart b/tests/language/execute_finally12_test.dart
deleted file mode 100644
index e4f56a0..0000000
--- a/tests/language/execute_finally12_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not treat the finally
-// block as a successor of a nested try block.
-
-import "package:expect/expect.dart";
-
-var a;
-
-foo() {
-  var b = a == 8; // This should not be GVN'ed.
-  while (!b) {
-    try {
-      try {} finally {
-        a = 8;
-        break;
-      }
-    } finally {
-      return a == 8;
-    }
-  }
-}
-
-main() {
-  Expect.isTrue(foo());
-}
diff --git a/tests/language/execute_finally1_test.dart b/tests/language/execute_finally1_test.dart
deleted file mode 100644
index 0e8510a..0000000
--- a/tests/language/execute_finally1_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing execution of finally blocks on
-// control flow breaks because of 'return', 'continue' etc.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1() {
-    try {
-      int j;
-      j = func();
-      i = 1;
-      return i; // Value of i on return is 1.
-    } finally {
-      i = i + 800; // Should get executed on return.
-    }
-    return i + 200; // Should not get executed.
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class ExecuteFinally1Test {
-  static testMain() {
-    Helper obj = new Helper();
-    Expect.equals(1, obj.f1());
-    Expect.equals(801, obj.i);
-  }
-}
-
-main() {
-  ExecuteFinally1Test.testMain();
-}
diff --git a/tests/language/execute_finally2_test.dart b/tests/language/execute_finally2_test.dart
deleted file mode 100644
index fd64f69..0000000
--- a/tests/language/execute_finally2_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing execution of finally blocks on
-// control flow breaks because of 'return', 'continue' etc.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1() {
-    try {
-      int j;
-      j = func();
-      try {
-        i = 1;
-        return i; // Value of i is 1 on return.
-      } finally {
-        i = i + 400; // Should get executed when we return.
-      }
-      i = 2; // Should not get executed.
-      return i;
-    } finally {
-      i = i + 800; // Should get executed when we return.
-    }
-    return i + 200; // Should not get executed.
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class ExecuteFinally2Test {
-  static testMain() {
-    Helper obj = new Helper();
-    Expect.equals(1, obj.f1());
-    Expect.equals(1201, obj.i);
-  }
-}
-
-main() {
-  ExecuteFinally2Test.testMain();
-}
diff --git a/tests/language/execute_finally3_test.dart b/tests/language/execute_finally3_test.dart
deleted file mode 100644
index c36ba0f..0000000
--- a/tests/language/execute_finally3_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing execution of finally blocks on
-// control flow breaks because of 'return', 'continue' etc.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1() {
-    try {
-      try {
-        int j;
-        j = func();
-        L1:
-        while (i <= 0) {
-          if (i == 0) {
-            try {
-              i = 1;
-              func();
-              try {
-                int j;
-                j = func();
-                while (j < 50) {
-                  j += func();
-                  if (j > 30) {
-                    continue L1; // Break out of nested try blocks.
-                  }
-                }
-                i = 200000; // Should not get executed.
-              } finally {
-                i = i + 200; // Should get executed when we break out.
-              }
-            } finally {
-              i = i + 400; // Should get executed when we break out.
-            }
-          }
-        }
-      } finally {
-        i = i + 800; // Should get executed as normal control flow.
-      }
-      return i; // Value of i should be 1401.
-    } finally {
-      i = i + 1600; // Should get executed as part of return above.
-    }
-    i = i + 2000000; // Should not get executed.
-    return 1;
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class ExecuteFinally3Test {
-  static testMain() {
-    Helper obj = new Helper();
-    Expect.equals(1401, obj.f1());
-    Expect.equals(3001, obj.i);
-  }
-}
-
-main() {
-  ExecuteFinally3Test.testMain();
-}
diff --git a/tests/language/execute_finally4_test.dart b/tests/language/execute_finally4_test.dart
deleted file mode 100644
index fcc308c..0000000
--- a/tests/language/execute_finally4_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing execution of finally blocks on
-// control flow breaks because of 'return', 'continue' etc.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1() {
-    try {
-      int j;
-      j = func();
-      i = 1;
-    } finally {
-      i = i + 10;
-    }
-    return i + 200; // Should return here with i = 211.
-    try {
-      int j;
-      j = func();
-    } finally {
-      i = i + 10; // Should not get executed as part of return above.
-    }
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class ExecuteFinally4Test {
-  static testMain() {
-    Helper obj = new Helper();
-    Expect.equals(211, obj.f1());
-    Expect.equals(11, obj.i);
-  }
-}
-
-main() {
-  ExecuteFinally4Test.testMain();
-}
diff --git a/tests/language/execute_finally5_test.dart b/tests/language/execute_finally5_test.dart
deleted file mode 100644
index 09cbdc15..0000000
--- a/tests/language/execute_finally5_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing execution of finally blocks on
-// control flow breaks because of 'return', 'continue' etc.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1(int param) {
-    if (param == 0) {
-      try {
-        int j;
-        j = func();
-        try {
-          i = 1;
-          return i; // Value of i is 1 on return.
-        } finally {
-          i = i + 400; // Should get executed when we return.
-        }
-        i = 2; // Should not get executed.
-        return i;
-      } finally {
-        i = i + 800; // Should get executed when we return.
-      }
-      return i + 200; // Should not get executed.
-    }
-    try {
-      int j;
-      j = func();
-      try {
-        i = 4;
-        return i; // Value of i is 1 on return.
-      } finally {
-        i = i + 100; // Should get executed when we return.
-      }
-      i = 2; // Should not get executed.
-      return i;
-    } finally {
-      i = i + 200; // Should get executed when we return.
-    }
-    return i + 200; // Should not get executed.
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class ExecuteFinally5Test {
-  static testMain() {
-    Helper obj = new Helper();
-    Expect.equals(1, obj.f1(0));
-    Expect.equals(1201, obj.i);
-    Expect.equals(4, obj.f1(1));
-    Expect.equals(304, obj.i);
-  }
-}
-
-main() {
-  ExecuteFinally5Test.testMain();
-}
diff --git a/tests/language/execute_finally6_test.dart b/tests/language/execute_finally6_test.dart
deleted file mode 100644
index e9c5ea5..0000000
--- a/tests/language/execute_finally6_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing execution of finally blocks on
-// control flow breaks because of 'return', 'continue' etc.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1() {
-    try {
-      try {
-        int j;
-        j = func();
-        L1:
-        while (i <= 0) {
-          if (i == 0) {
-            try {
-              i = 1;
-              func();
-              try {
-                int j;
-                j = func();
-                L1:
-                while (j < 50) {
-                  j += func();
-                  if (j > 30) {
-                    break L1; // Break out of nested try blocks.
-                  }
-                }
-                i += 200000; // Should get executed.
-              } finally {
-                i = i + 200; // Should get executed as normal control flow.
-              }
-            } finally {
-              i = i + 400; // Should get executed as normal control flow.
-            }
-          }
-        }
-      } finally {
-        i = i + 800; // Should get executed as normal control flow.
-      }
-      return i; // Value of i should be 201401.
-    } finally {
-      i = i + 1600; // Should get executed as part of return above.
-    }
-    i = i + 2000000; // Should not get executed.
-    return 1;
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class ExecuteFinally6Test {
-  static testMain() {
-    Helper obj = new Helper();
-    Expect.equals(201401, obj.f1());
-    Expect.equals(203001, obj.i);
-  }
-}
-
-main() {
-  ExecuteFinally6Test.testMain();
-}
diff --git a/tests/language/execute_finally7_test.dart b/tests/language/execute_finally7_test.dart
deleted file mode 100644
index 51e524f..0000000
--- a/tests/language/execute_finally7_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing execution of finally blocks after an exception
-// is thrown from inside a local function capturing a variable.
-
-import "package:expect/expect.dart";
-
-class MyException {
-  const MyException(String message) : message_ = message;
-  final String message_;
-}
-
-class Helper {
-  static int f1(int k) {
-    var b;
-    try {
-      var a = new List(10);
-      int i = 0;
-      while (i < 10) {
-        int j = i;
-        a[i] = () {
-          if (j == 5) {
-            throw new MyException("Test for exception being thrown");
-          }
-          k += 10;
-          return j;
-        };
-        if (i == 0) {
-          b = a[i];
-        }
-        i++;
-      }
-      for (int i = 0; i < 10; i++) {
-        a[i]();
-      }
-    } on MyException catch (exception) {
-      k += 100;
-      print(exception.message_);
-      b();
-    } finally {
-      k += 1000;
-      b();
-    }
-    return k;
-  }
-}
-
-class ExecuteFinally7Test {
-  static testMain() {
-    Expect.equals(1171, Helper.f1(1));
-  }
-}
-
-main() {
-  ExecuteFinally7Test.testMain();
-}
diff --git a/tests/language/execute_finally8_test.dart b/tests/language/execute_finally8_test.dart
deleted file mode 100644
index c697eee..0000000
--- a/tests/language/execute_finally8_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2011, 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.
-// This test ensures that the finally block executes correctly when
-// there are throw, break and return statements in the finally block.
-
-import "package:expect/expect.dart";
-
-class Hello {
-  static var sum;
-
-  static foo() {
-    sum = 0;
-    try {
-      sum += 1;
-      return 'hi';
-    } finally {
-      sum += 1;
-      throw 'ball';
-      sum += 1;
-    }
-  }
-
-  static foo1() {
-    bool loop = true;
-    sum = 0;
-    L:
-    while (loop) {
-      try {
-        sum += 1;
-        return 'hi';
-      } finally {
-        sum += 1;
-        break L;
-        sum += 1;
-      }
-    }
-  }
-
-  static foo2() {
-    bool loop = true;
-    sum = 0;
-    try {
-      sum += 1;
-      return 'hi';
-    } finally {
-      sum += 1;
-      return 10;
-      sum += 1;
-    }
-  }
-
-  static foo3() {
-    sum = 0;
-    try {
-      sum += 1;
-      return 'hi';
-    } finally {
-      sum += 1;
-      return 10;
-      sum += 1;
-    }
-  }
-
-  static void main() {
-    foo1();
-    Expect.equals(2, sum);
-    foo2();
-    Expect.equals(2, sum);
-    foo3();
-    Expect.equals(2, sum);
-    try {
-      foo();
-    } catch (e) {}
-    Expect.equals(2, sum);
-  }
-}
-
-main() {
-  Hello.main();
-}
diff --git a/tests/language/execute_finally9_test.dart b/tests/language/execute_finally9_test.dart
deleted file mode 100644
index 5513466..0000000
--- a/tests/language/execute_finally9_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2011, 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.
-// This test ensures that the finally block executes correctly when
-// there are throw, break and return statements in the finally block.
-
-import "package:expect/expect.dart";
-
-class Hello {
-  static var sum;
-
-  static foo() {
-    sum = 0;
-    try {
-      sum += 1;
-      return 'hi';
-    } catch (e) {
-      sum += 1;
-      throw 'ball';
-      sum += 1;
-    } finally {
-      sum += 1;
-      throw 'ball';
-      sum += 1;
-    }
-  }
-
-  static foo1() {
-    bool loop = true;
-    sum = 0;
-    L:
-    while (loop) {
-      try {
-        sum += 1;
-        return 'hi';
-      } catch (ex) {
-        sum += 1;
-      } finally {
-        try {
-          L1:
-          while (loop) {
-            sum += 1;
-            break L;
-            sum += 1;
-          }
-        } catch (ex) {
-          sum += 1;
-        } finally {
-          sum += 1;
-        }
-      }
-    }
-  }
-
-  static void main() {
-    foo1();
-    Expect.equals(3, sum);
-    try {
-      foo();
-    } catch (e) {
-      // Ignore.
-    }
-    Expect.equals(2, sum);
-  }
-}
-
-main() {
-  Hello.main();
-}
diff --git a/tests/language/exhaustive_for_test.dart b/tests/language/exhaustive_for_test.dart
deleted file mode 100644
index a88d2d7..0000000
--- a/tests/language/exhaustive_for_test.dart
+++ /dev/null
@@ -1,808 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for testing for statement.
-
-import "package:expect/expect.dart";
-
-// Test several variations of for loops:
-//   * With or without an initializer.
-//   * With or without a test.
-//   * With or without an update.
-//   * With or without a continue.
-//   * With or without a fall through exit from the body.
-//   * With or without a break.
-
-// Note that some possibilities are infinite loops and so not tested.
-// Combinations that do not have a break or a test but do have a
-// fall through from the body or a continue will never exit the loop.
-
-// Each loop test function sets a status containing a bit for each part of
-// the loop that is present, and then clears the bit as that part of the
-// loop is executed.  The test expectation should be 0 (all present parts
-// were executed), except for a few cases where an update expression is
-// unreachable due to a break or return in the loop body.
-
-const int INIT = 1;
-const int TEST = 2;
-const int UPDATE = 4;
-const int CONTINUE = 8;
-const int FALL = 16;
-const int BREAK = 32;
-
-var status;
-
-void loop0() {
-  status = 0;
-  for (;;) {
-    return;
-  }
-}
-
-void loop1() {
-  status = INIT;
-  for (status &= ~INIT;;) {
-    return;
-  }
-}
-
-void loop2() {
-  status = TEST;
-  for (; (status &= ~TEST) != 0;) {
-    return;
-  }
-}
-
-void loop3() {
-  status = INIT | TEST;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    return;
-  }
-}
-
-void loop4() {
-  status = UPDATE;
-  for (;; status &= ~UPDATE) {
-    return;
-  }
-}
-
-void loop5() {
-  status = INIT | UPDATE;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    return;
-  }
-}
-
-void loop6() {
-  status = TEST | UPDATE;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    return;
-  }
-}
-
-void loop7() {
-  status = INIT | TEST | UPDATE;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    return;
-  }
-}
-
-// Infinite loop not tested.
-void loop8() {
-  status = CONTINUE;
-  for (;;) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-// Infinite loop not tested.
-void loop9() {
-  status = INIT | CONTINUE;
-  for (status &= ~INIT;;) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-void loop10() {
-  status = TEST | CONTINUE;
-  for (; (status &= ~TEST) != 0;) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-void loop11() {
-  status = INIT | TEST | CONTINUE;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-// Infinite loop.
-void loop12() {
-  status = UPDATE | CONTINUE;
-  for (;; status &= ~UPDATE) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-// Infinite loop.
-void loop13() {
-  status = INIT | UPDATE | CONTINUE;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-void loop14() {
-  status = TEST | UPDATE | CONTINUE;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-void loop15() {
-  status = INIT | TEST | UPDATE | CONTINUE;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    status &= ~CONTINUE;
-    continue;
-  }
-}
-
-// Infinite loop.
-void loop16() {
-  status = FALL;
-  for (;;) {
-    status &= ~FALL;
-  }
-}
-
-// Infinite loop.
-void loop17() {
-  status = INIT | FALL;
-  for (status &= ~INIT;;) {
-    status &= ~FALL;
-  }
-}
-
-void loop18() {
-  status = TEST | FALL;
-  for (; (status &= ~TEST) != 0;) {
-    status &= ~FALL;
-  }
-}
-
-void loop19() {
-  status = INIT | TEST | FALL;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    status &= ~FALL;
-  }
-}
-
-// Infinite loop.
-void loop20() {
-  status = UPDATE | FALL;
-  for (;; status &= ~UPDATE) {
-    status &= ~FALL;
-  }
-}
-
-// Infinite loop.
-void loop21() {
-  status = INIT | UPDATE | FALL;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    status &= ~FALL;
-  }
-}
-
-void loop22() {
-  status = TEST | UPDATE | FALL;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    status &= ~FALL;
-  }
-}
-
-void loop23() {
-  status = INIT | TEST | UPDATE | FALL;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    status &= ~FALL;
-  }
-}
-
-// Infinite loop.
-void loop24() {
-  status = CONTINUE | FALL;
-  for (;;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-// Infinite loop.
-void loop25() {
-  status = INIT | CONTINUE | FALL;
-  for (status &= ~INIT;;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-void loop26() {
-  status = TEST | CONTINUE | FALL;
-  for (; (status &= ~TEST) != 0;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-void loop27() {
-  status = INIT | TEST | CONTINUE | FALL;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-// Infinite loop.
-void loop28() {
-  status = UPDATE | CONTINUE | FALL;
-  for (;; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-// Infinite loop.
-void loop29() {
-  status = INIT | UPDATE | CONTINUE | FALL;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-void loop30() {
-  status = TEST | UPDATE | CONTINUE | FALL;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-void loop31() {
-  status = INIT | TEST | UPDATE | CONTINUE | FALL;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~FALL;
-  }
-}
-
-void loop32() {
-  status = BREAK;
-  for (;;) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop33() {
-  status = INIT | BREAK;
-  for (status &= ~INIT;;) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop34() {
-  status = TEST | BREAK;
-  for (; (status &= ~TEST) != 0;) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop35() {
-  status = INIT | TEST | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop36() {
-  status = UPDATE | BREAK;
-  for (;; status &= ~UPDATE) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop37() {
-  status = INIT | UPDATE | BREAK;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop38() {
-  status = TEST | UPDATE | BREAK;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop39() {
-  status = INIT | TEST | UPDATE | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop40() {
-  status = CONTINUE | BREAK;
-  for (;;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop41() {
-  status = INIT | CONTINUE | BREAK;
-  for (status &= ~INIT;;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop42() {
-  status = TEST | CONTINUE | BREAK;
-  for (; (status &= ~TEST) != 0;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop43() {
-  status = INIT | TEST | CONTINUE | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop44() {
-  status = UPDATE | CONTINUE | BREAK;
-  for (;; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop45() {
-  status = INIT | UPDATE | CONTINUE | BREAK;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop46() {
-  status = TEST | UPDATE | CONTINUE | BREAK;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop47() {
-  status = INIT | TEST | UPDATE | CONTINUE | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    status &= ~BREAK;
-    break;
-  }
-}
-
-void loop48() {
-  status = FALL | BREAK;
-  for (;;) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop49() {
-  status = INIT | FALL | BREAK;
-  for (status &= ~INIT;;) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop50() {
-  status = TEST | FALL | BREAK;
-  for (; (status &= ~TEST) != 0;) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop51() {
-  status = INIT | TEST | FALL | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop52() {
-  status = UPDATE | FALL | BREAK;
-  for (;; status &= ~UPDATE) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop53() {
-  status = INIT | UPDATE | FALL | BREAK;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop54() {
-  status = TEST | UPDATE | FALL | BREAK;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop55() {
-  status = INIT | TEST | UPDATE | FALL | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop56() {
-  status = CONTINUE | FALL | BREAK;
-  for (;;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop57() {
-  status = INIT | CONTINUE | FALL | BREAK;
-  for (status &= ~INIT;;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop58() {
-  status = TEST | CONTINUE | FALL | BREAK;
-  for (; (status &= ~TEST) != 0;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop59() {
-  status = INIT | TEST | CONTINUE | FALL | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0;) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop60() {
-  status = UPDATE | CONTINUE | FALL | BREAK;
-  for (;; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop61() {
-  status = INIT | UPDATE | CONTINUE | FALL | BREAK;
-  for (status &= ~INIT;; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop62() {
-  status = TEST | UPDATE | CONTINUE | FALL | BREAK;
-  for (; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void loop63() {
-  status = INIT | TEST | UPDATE | CONTINUE | FALL | BREAK;
-  for (status &= ~INIT; (status &= ~TEST) != 0; status &= ~UPDATE) {
-    if ((status & CONTINUE) == CONTINUE) {
-      status &= ~CONTINUE;
-      continue;
-    }
-    if ((status & FALL) == FALL) {
-      status &= ~FALL;
-    } else {
-      status &= ~BREAK;
-      break;
-    }
-  }
-}
-
-void main() {
-  loop0();
-  Expect.equals(0, status);
-  loop1();
-  Expect.equals(0, status);
-  loop2();
-  Expect.equals(0, status);
-  loop3();
-  Expect.equals(0, status);
-
-  // The next four tests return with status UPDATE because they return
-  // before the update expression is reached.
-  loop4();
-  Expect.equals(UPDATE, status);
-  loop5();
-  Expect.equals(UPDATE, status);
-  loop6();
-  Expect.equals(UPDATE, status);
-  loop7();
-  Expect.equals(UPDATE, status);
-
-  loop10();
-  Expect.equals(0, status);
-  loop11();
-  Expect.equals(0, status);
-  loop14();
-  Expect.equals(0, status);
-  loop15();
-  Expect.equals(0, status);
-  loop18();
-  Expect.equals(0, status);
-  loop19();
-  Expect.equals(0, status);
-  loop22();
-  Expect.equals(0, status);
-  loop23();
-  Expect.equals(0, status);
-  loop26();
-  Expect.equals(0, status);
-  loop27();
-  Expect.equals(0, status);
-  loop30();
-  Expect.equals(0, status);
-  loop31();
-  Expect.equals(0, status);
-  loop32();
-  Expect.equals(0, status);
-  loop33();
-  Expect.equals(0, status);
-  loop34();
-  Expect.equals(0, status);
-  loop35();
-  Expect.equals(0, status);
-
-  // The next four tests return with status UPDATE because they break from
-  // the loop before the update expression is reached.
-  loop36();
-  Expect.equals(4, status);
-  loop37();
-  Expect.equals(4, status);
-  loop38();
-  Expect.equals(4, status);
-  loop39();
-  Expect.equals(4, status);
-
-  loop40();
-  Expect.equals(0, status);
-  loop41();
-  Expect.equals(0, status);
-  loop42();
-  Expect.equals(0, status);
-  loop43();
-  Expect.equals(0, status);
-  loop44();
-  Expect.equals(0, status);
-  loop45();
-  Expect.equals(0, status);
-  loop46();
-  Expect.equals(0, status);
-  loop47();
-  Expect.equals(0, status);
-  loop48();
-  Expect.equals(0, status);
-  loop49();
-  Expect.equals(0, status);
-  loop50();
-  Expect.equals(0, status);
-  loop51();
-  Expect.equals(0, status);
-  loop52();
-  Expect.equals(0, status);
-  loop53();
-  Expect.equals(0, status);
-  loop54();
-  Expect.equals(0, status);
-  loop55();
-  Expect.equals(0, status);
-  loop56();
-  Expect.equals(0, status);
-  loop57();
-  Expect.equals(0, status);
-  loop58();
-  Expect.equals(0, status);
-  loop59();
-  Expect.equals(0, status);
-  loop60();
-  Expect.equals(0, status);
-  loop61();
-  Expect.equals(0, status);
-  loop62();
-  Expect.equals(0, status);
-  loop63();
-  Expect.equals(0, status);
-}
diff --git a/tests/language/expect_test.dart b/tests/language/expect_test.dart
deleted file mode 100644
index 48b1a35..0000000
--- a/tests/language/expect_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2011, 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.
-// Testing the Expect class.
-
-import "package:expect/expect.dart";
-
-class ExpectTest {
-  static testEquals(a) {
-    try {
-      Expect.equals("AB", a, "within testEquals");
-    } on Exception catch (msg) {
-      print(msg);
-      return;
-    }
-    Expect.equals("AB", "${a}B");
-    throw "Expect.equals did not fail";
-  }
-
-  static testIsTrue(f) {
-    try {
-      Expect.isTrue(f);
-    } on Exception catch (msg) {
-      print(msg);
-      return;
-    }
-    Expect.isFalse(f);
-    throw "Expect.isTrue did not fail";
-  }
-
-  static testIsFalse(t) {
-    try {
-      Expect.isFalse(t);
-    } on Exception catch (msg) {
-      print(msg);
-      return;
-    }
-    Expect.isTrue(t);
-    throw "Expect.isFalse did not fail";
-  }
-
-  static testIdentical(a) {
-    var ab = "${a}B";
-    try {
-      Expect.identical("AB", ab);
-    } on Exception catch (msg) {
-      print(msg);
-      return;
-    }
-    Expect.equals("AB", ab);
-    throw "Expect.identical did not fail";
-  }
-
-  static testFail() {
-    try {
-      Expect.fail("fail now");
-    } on Exception catch (msg) {
-      print(msg);
-      return;
-    }
-    throw "Expect.fail did not fail";
-  }
-
-  static void testMain() {
-    testEquals("A");
-    testIsTrue(false);
-    testIsTrue(1);
-    testIsFalse(true);
-    testIsFalse(0);
-    testIdentical("A");
-    testFail();
-  }
-}
-
-main() {
-  ExpectTest.testMain();
-}
diff --git a/tests/language/export1_lib.dart b/tests/language/export1_lib.dart
deleted file mode 100644
index 77768c1..0000000
--- a/tests/language/export1_lib.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-library export1_lib;
-
-export "dart:math" show LN10, LN2, E;
-
-var E = "E"; // Hides constant E from math lib.
diff --git a/tests/language/export_ambiguous_main_a.dart b/tests/language/export_ambiguous_main_a.dart
deleted file mode 100644
index 4a7b820..0000000
--- a/tests/language/export_ambiguous_main_a.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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 export_ambiguous_main_a;
-
-main() {
-  print('export_ambiguous_main_a');
-}
diff --git a/tests/language/export_ambiguous_main_b.dart b/tests/language/export_ambiguous_main_b.dart
deleted file mode 100644
index 734a620..0000000
--- a/tests/language/export_ambiguous_main_b.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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 export_ambiguous_main_b;
-
-main() {
-  print('export_ambiguous_main_b');
-}
diff --git a/tests/language/export_ambiguous_main_negative_test.dart b/tests/language/export_ambiguous_main_negative_test.dart
deleted file mode 100644
index 6087c67..0000000
--- a/tests/language/export_ambiguous_main_negative_test.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2013, 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.
-
-export 'export_ambiguous_main_a.dart';
-export 'export_ambiguous_main_b.dart';
diff --git a/tests/language/export_cyclic_helper1.dart b/tests/language/export_cyclic_helper1.dart
deleted file mode 100644
index 4e8a68b..0000000
--- a/tests/language/export_cyclic_helper1.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-library export_cyclic_helper1;
-
-import 'export_cyclic_helper2.dart';
-export 'export_cyclic_helper2.dart';
-
-class B {
-  A a;
-  B b;
-  C c;
-  D d;
-}
diff --git a/tests/language/export_cyclic_helper2.dart b/tests/language/export_cyclic_helper2.dart
deleted file mode 100644
index c602467..0000000
--- a/tests/language/export_cyclic_helper2.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-library export_cyclic_helper2;
-
-import 'export_cyclic_test.dart';
-import 'export_cyclic_helper3.dart';
-export 'export_cyclic_test.dart';
-export 'export_cyclic_helper3.dart';
-
-class C {
-  A a;
-  B b;
-  C c;
-  D d;
-}
diff --git a/tests/language/export_cyclic_helper3.dart b/tests/language/export_cyclic_helper3.dart
deleted file mode 100644
index 17b9ff9..0000000
--- a/tests/language/export_cyclic_helper3.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-library export_cyclic_helper3;
-
-class D {}
diff --git a/tests/language/export_cyclic_test.dart b/tests/language/export_cyclic_test.dart
deleted file mode 100644
index a971fc06..0000000
--- a/tests/language/export_cyclic_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-
-// Test cyclic export and re-export.
-
-/**
- * export_cyclic_test re-exports export_cyclic_helper1 which declares B
- * export_cyclic_helper1 re-exports export_cyclic_helper2 which declares C
- * export_cyclic_helper2 re-exports export_cyclic_test which declares A
- * export_cyclic_helper2 re-exports export_cyclic_helper3 which declares D
- */
-
-library export_cyclic_test;
-
-import 'export_cyclic_helper1.dart';
-export 'export_cyclic_helper1.dart';
-
-class A {}
-
-void main() {
-  print(new A());
-  print(new B());
-  print(new C());
-  print(new D());
-}
diff --git a/tests/language/export_double_same_main_test.dart b/tests/language/export_double_same_main_test.dart
deleted file mode 100644
index 68ad600..0000000
--- a/tests/language/export_double_same_main_test.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2013, 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.
-
-export 'top_level_entry_test.dart';
-export 'export_main_test.dart' show main;
diff --git a/tests/language/export_helper1.dart b/tests/language/export_helper1.dart
deleted file mode 100644
index 4f42ae8..0000000
--- a/tests/language/export_helper1.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-library export_helper1;
-
-import 'export_helper2.dart';
-export 'export_helper2.dart';
-
-class Exported extends ReExported {}
diff --git a/tests/language/export_helper2.dart b/tests/language/export_helper2.dart
deleted file mode 100644
index 50dcc3d..0000000
--- a/tests/language/export_helper2.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-library export_helper2;
-
-class ReExported {}
diff --git a/tests/language/export_helper3.dart b/tests/language/export_helper3.dart
deleted file mode 100644
index b10f0b3..0000000
--- a/tests/language/export_helper3.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-library export_helper3;
-
-import 'export_helper4.dart';
-export 'export_helper4.dart';
-
-class Exported extends ReExported {}
diff --git a/tests/language/export_helper4.dart b/tests/language/export_helper4.dart
deleted file mode 100644
index 3ca68ec..0000000
--- a/tests/language/export_helper4.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-library export_helper4;
-
-class ReExported {}
diff --git a/tests/language/export_main_override_test.dart b/tests/language/export_main_override_test.dart
deleted file mode 100644
index 6578288..0000000
--- a/tests/language/export_main_override_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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.
-
-export 'top_level_entry_test.dart';
-
-main() {
-  print('export_main_override');
-}
diff --git a/tests/language/export_main_test.dart b/tests/language/export_main_test.dart
deleted file mode 100644
index 1e920a7..0000000
--- a/tests/language/export_main_test.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// Copyright (c) 2013, 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.
-
-export 'top_level_entry_test.dart';
diff --git a/tests/language/export_not_shadowed_by_prefix_helper.dart b/tests/language/export_not_shadowed_by_prefix_helper.dart
deleted file mode 100644
index 3dcd016..0000000
--- a/tests/language/export_not_shadowed_by_prefix_helper.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// 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.
-
-export "export_not_shadowed_by_prefix_helper2.dart";
-import "dart:core" as f;
diff --git a/tests/language/export_not_shadowed_by_prefix_helper2.dart b/tests/language/export_not_shadowed_by_prefix_helper2.dart
deleted file mode 100644
index ae2dca5..0000000
--- a/tests/language/export_not_shadowed_by_prefix_helper2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-void f() {
-  f_called = true;
-}
-
-bool f_called = false;
diff --git a/tests/language/export_not_shadowed_by_prefix_test.dart b/tests/language/export_not_shadowed_by_prefix_test.dart
deleted file mode 100644
index 3af1b48..0000000
--- a/tests/language/export_not_shadowed_by_prefix_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-// Verify that import prefixes within an imported library don't shadow
-// names re-exported by that library.
-
-import "package:expect/expect.dart";
-import "export_not_shadowed_by_prefix_helper.dart";
-
-main() {
-  f();
-  Expect.isTrue(f_called);
-}
diff --git a/tests/language/export_private_test.dart b/tests/language/export_private_test.dart
deleted file mode 100644
index 2828f45..0000000
--- a/tests/language/export_private_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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.
-// Check that private dart:_ libraries cannot be imported.
-
-export "dart:_internal"; // //# 01: compile-time error
-
-main() {
-  print("Done.");
-}
diff --git a/tests/language/export_test.dart b/tests/language/export_test.dart
deleted file mode 100644
index 790ff94..0000000
--- a/tests/language/export_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-// Test export and re-export.
-
-library export_test;
-
-import 'export_helper1.dart';
-import 'export_helper3.dart' as lib;
-
-void main() {
-  print(new Exported());
-  print(new ReExported());
-  print(new lib.Exported());
-  print(new lib.ReExported());
-}
diff --git a/tests/language/extend_type_parameter2_negative_test.dart b/tests/language/extend_type_parameter2_negative_test.dart
deleted file mode 100644
index 6a45370..0000000
--- a/tests/language/extend_type_parameter2_negative_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-// Extending a type parameter is not allowed.
-
-abstract class A<T> extends T {}
-
-main() {
-  A a = new A();
-}
diff --git a/tests/language/extend_type_parameter_negative_test.dart b/tests/language/extend_type_parameter_negative_test.dart
deleted file mode 100644
index b8fa5ba..0000000
--- a/tests/language/extend_type_parameter_negative_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-// Extending a type parameter is not allowed.
-
-class A<T> extends T {}
-
-main() {
-  A a = new A();
-}
diff --git a/tests/language/extends_test.dart b/tests/language/extends_test.dart
deleted file mode 100644
index 44c1c18..0000000
--- a/tests/language/extends_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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 ExtendsTestMain;
-
-import "extends_test_lib.dart";
-import "package:expect/expect.dart";
-
-// S should extend class A from below, not the one imported
-// from the library.
-class S extends A {}
-
-class A {
-  var y = "class A from main script";
-}
-
-main() {
-  var s = new S();
-  Expect.equals("class A from main script", s.y);
-}
diff --git a/tests/language/extends_test_lib.dart b/tests/language/extends_test_lib.dart
deleted file mode 100644
index d62ca8f..0000000
--- a/tests/language/extends_test_lib.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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 ExtendsTestLib;
-
-class A {
-  var y = "class A from library";
-}
diff --git a/tests/language/external_test.dart b/tests/language/external_test.dart
deleted file mode 100644
index 53b5ef8..0000000
--- a/tests/language/external_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// 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.
-
-class Bar {
-  Bar(val);
-}
-
-class Foo {
-  var x;
-  f() {}
-
-  Foo() : x = 0;
-
-  external var x01; // //# 01: syntax error
-  external int x02; // //# 02: syntax error
-
-  external f10(); //  //# 10: runtime error
-  external f11() { } // //# 11: syntax error
-  external f12() => 1; // //# 12: syntax error
-  external static f13(); // //# 13: runtime error
-  static external f14(); // //# 14: syntax error
-  int external f16(); // //# 16: syntax error
-
-  external Foo.n20(val); // //# 20: runtime error
-  external Foo.n21(val) : x = 1; // //# 21: syntax error
-  external Foo.n22(val) { x = 1; } // //# 22: syntax error
-  external factory Foo.n23(val) => new Foo(); // //# 23: syntax error
-  external Foo.n24(this.x); // //# 24: compile-time error
-  external factory Foo.n25(val) = Bar; // //# 25: syntax error
-}
-
-external int t06(int i) { } // //# 30: syntax error
-external int t07(int i) => i + 1; // //# 31: syntax error
-
-main() {
-  // Ensure Foo class is compiled.
-  var foo = new Foo();
-
-  // Try calling an unpatched external function.
-  new Foo().f10(); //                                   //# 10: continued
-  new Foo().f11(); //                                   //# 11: continued
-  new Foo().f12(); //                                   //# 12: continued
-  Foo.f13(); //                                         //# 13: continued
-  Foo.f14(); //                                         //# 14: continued
-  new Foo().f16(); //                                   //# 16: continued
-
-  // Try calling an unpatched external constructor.
-  new Foo.n20(1); //                                     //# 20: continued
-  new Foo.n21(1); //                                     //# 21: continued
-  new Foo.n22(1); //                                     //# 22: continued
-  new Foo.n23(1); //                                     //# 23: continued
-  new Foo.n24(1); //                                     //# 24: continued
-  new Foo.n25(1); //                                     //# 25: continued
-
-  t06(1); //                                            //# 30: continued
-  t07(1); //                                            //# 31: continued
-}
diff --git a/tests/language/f_bounded_equality_test.dart b/tests/language/f_bounded_equality_test.dart
deleted file mode 100644
index 43fadfc..0000000
--- a/tests/language/f_bounded_equality_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Magnitude<T> {
-  get t => T;
-}
-
-class Real extends Magnitude<Real> {}
-
-class FBound<F extends FBound<F>> {
-  get f => F;
-}
-
-class Bar extends FBound<Bar> {}
-
-main() {
-  var r = new Real();
-  Expect.equals(r.runtimeType, Real);
-  Expect.equals(r.t, Real);
-  Expect.equals(r.runtimeType, r.t);
-
-  var b = new Bar();
-  Expect.equals(b.runtimeType, Bar);
-  Expect.equals(b.f, Bar);
-  Expect.equals(b.runtimeType, b.f);
-}
diff --git a/tests/language/f_bounded_quantification2_test.dart b/tests/language/f_bounded_quantification2_test.dart
deleted file mode 100644
index a376190..0000000
--- a/tests/language/f_bounded_quantification2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for F-Bounded Quantification. Regression test for issue 9291.
-
-class Entities<T extends ConceptEntity<T>> implements EntitiesApi<T> {}
-
-class ConceptEntity<T extends ConceptEntity<T>> implements EntityApi {}
-
-abstract class EntityApi<T extends EntityApi<T>> {}
-
-abstract class EntitiesApi<T extends EntityApi<T>> {}
-
-class Concept extends ConceptEntity<Concept> {}
-
-main() {
-  new ConceptEntity<Concept>();
-  new ConceptEntity<ConceptEntity>();
-}
diff --git a/tests/language/f_bounded_quantification3_test.dart b/tests/language/f_bounded_quantification3_test.dart
deleted file mode 100644
index 6c6f81c..0000000
--- a/tests/language/f_bounded_quantification3_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for F-Bounded Quantification.
-
-class FBound1<F1 extends FBound1<F1, F2>, F2 extends FBound2<F1, F2>> {
-  Test() {
-    new FBound1<F1, F2>();
-    new FBound2<F1, F2>();
-  }
-}
-
-class FBound2<F1 extends FBound1<F1, F2>, F2 extends FBound2<F1, F2>> {
-  Test() {
-    new FBound1<F1, F2>();
-    new FBound2<F1, F2>();
-  }
-}
-
-class Bar extends FBound1<Bar, Baz> {}
-
-class Baz extends FBound2<Bar, Baz> {}
-
-main() {
-  new FBound1<Bar, Baz>().Test();
-  new FBound2<Bar, Baz>().Test();
-}
diff --git a/tests/language/f_bounded_quantification4_test.dart b/tests/language/f_bounded_quantification4_test.dart
deleted file mode 100644
index ddd6258..0000000
--- a/tests/language/f_bounded_quantification4_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for F-Bounded Quantification.
-
-import "package:expect/expect.dart";
-
-class A<T extends B<T>> {}
-
-class B<T> extends A<T> {}
-
-main() {
-  Expect.equals("B<B>", new B<B>().runtimeType.toString());
-}
diff --git a/tests/language/f_bounded_quantification5_test.dart b/tests/language/f_bounded_quantification5_test.dart
deleted file mode 100644
index ddc407f..0000000
--- a/tests/language/f_bounded_quantification5_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for F-Bounded Quantification.
-
-import "package:expect/expect.dart";
-
-class A<T extends B<T>> {}
-
-class B<T extends A<T>> {}
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-main() {
-  bool got_type_error = false;
-  try {
-    // Getting "int" when calling toString() on the int type is not required.
-    // However, we want to keep the original names for the most common core
-    // types so we make sure to handle these specifically in the compiler.
-    Expect.equals("A<B<int>>", new A<B<int>>().runtimeType.toString());
-  } on TypeError catch (error) {
-    got_type_error = true;
-  }
-  // Type error expected in checked mode only.
-  Expect.isTrue(got_type_error == isCheckedMode());
-}
diff --git a/tests/language/f_bounded_quantification_test.dart b/tests/language/f_bounded_quantification_test.dart
deleted file mode 100644
index c4ff9f0..0000000
--- a/tests/language/f_bounded_quantification_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test for F-Bounded Quantification.
-
-class FBound<F extends FBound<F>> {}
-
-class Bar extends FBound<Bar> {}
-
-class SubBar extends Bar {}
-
-class Baz<T> extends FBound<Baz<T>> {}
-
-class SubBaz<T> extends Baz<T> {}
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-main() {
-  FBound<Bar> fb = new FBound<Bar>();
-  {
-    bool got_type_error = false;
-    try {
-      FBound<SubBar> fsb = new FBound<SubBar>(); // //# 01: static type warning
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // Type error in checked mode only.
-    Expect.isTrue(got_type_error == isCheckedMode()); // //# 01: continued
-  }
-  FBound<Baz<Bar>> fbb = new FBound<Baz<Bar>>();
-  {
-    bool got_type_error = false;
-    try {
-      FBound<SubBaz<Bar>> fsb = new FBound<SubBaz<Bar>>(); // //# 02: static type warning
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // Type error in checked mode only.
-    Expect.isTrue(got_type_error == isCheckedMode()); // //# 02: continued
-  }
-}
diff --git a/tests/language/factory1_test.dart b/tests/language/factory1_test.dart
deleted file mode 100644
index 05c3eb4..0000000
--- a/tests/language/factory1_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-// Dart test program for testing factory generic result types.
-
-class A<T> {
-  A() {}
-  factory A.factory() {
-    return new A<String>();
-  }
-}
-
-class B<T> extends A<T> {
-  B() {}
-  factory B.factory() {
-    return new B<String>();
-  }
-}
-
-main() {
-  new A<String>.factory();
-  new A<int>.factory(); // //# 00: dynamic type error
-  new B<String>.factory();
-  new B<int>.factory(); // //# 01: dynamic type error
-}
diff --git a/tests/language/factory2_negative_test.dart b/tests/language/factory2_negative_test.dart
deleted file mode 100644
index 3029aed..0000000
--- a/tests/language/factory2_negative_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-// Test compile time error for factories with parameterized types.
-
-abstract class Link<T> {
-  factory Link.create() = LinkFactory<T>.create;
-}
-
-class LinkFactory {
-  //   Compile time error: should be LinkFactory<T> to match abstract class above
-  factory Link.create() {
-    return null;
-  }
-}
-
-main() {
-  var a = new Link.create(); // Equivalent to new Link<dynamic>.create().
-}
diff --git a/tests/language/factory2_test.dart b/tests/language/factory2_test.dart
deleted file mode 100644
index af6c6b6..0000000
--- a/tests/language/factory2_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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 "dart:collection";
-
-abstract class Link<T> extends IterableBase<T> {
-  // does not match constructor for LinkFactory
-  factory Link(T head, [Link<T> tail]) = LinkFactory<T>; //# static type warning
-  Link<T> prepend(T element);
-}
-
-abstract class EmptyLink<T> extends Link<T> {
-  const factory EmptyLink() = LinkTail<T>;
-}
-
-class LinkFactory<T> {
-  factory LinkFactory(head, [Link tail]) {}
-}
-
-// Does not implement all of Iterable
-class AbstractLink<T> implements Link<T> {
-  const AbstractLink();
-  Link<T> prepend(T element) {
-    return new Link<T>(element, this);
-  }
-}
-
-// Does not implement all of Iterable
-class LinkTail<T> extends AbstractLink<T> implements EmptyLink<T> {
-  const LinkTail();
-}
-
-// Does not implement all of Iterable
-class LinkEntry<T> extends AbstractLink<T> {
-  LinkEntry(T head, Link<T> realTail);
-}
-
-class Fisk {
-  // instantiation of abstract class
-  Link<String> nodes = const EmptyLink(); // //# static type warning
-}
-
-main() {
-  new Fisk();
-  // instantiation of abstract class
-  new EmptyLink<String>().prepend('hest'); //# static type warning
-  // instantiation of abstract class
-  const EmptyLink<String>().prepend('fisk'); //# static type warning
-}
diff --git a/tests/language/factory3_negative_test.dart b/tests/language/factory3_negative_test.dart
deleted file mode 100644
index 02821b1..0000000
--- a/tests/language/factory3_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-// Test compile time error for factories with parameterized types.
-
-abstract class Link<T> default LinkFactory {
-  Link.create();
-}
-
-class A<T> { }
-
-// Compile time error: should be LinkFactory<T> to match abstract class above
-class LinkFactory extends A<int> {
-  factory Link.create() {
-    return null;
-  }
-}
-
-main() {
-  var a = new Link<int>.create();
-}
diff --git a/tests/language/factory3_test.dart b/tests/language/factory3_test.dart
deleted file mode 100644
index 9c7c89b..0000000
--- a/tests/language/factory3_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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.
-// VMOptions=--enable_checked_mode
-
-import "dart:collection";
-
-abstract class Link<T> extends IterableBase<T> {
-  factory Link(T head, [Link<T> tail]) = LinkEntry<T>;
-  Link<T> prepend(T element);
-}
-
-abstract class EmptyLink<T> extends Link<T> {
-  const factory EmptyLink() = LinkTail<T>;
-}
-
-class AbstractLink<T> implements Link<T> {
-  const AbstractLink();
-  Link<T> prepend(T element) {
-    print("$element");
-    if (0 is T) {
-      throw "0 is not a T";
-    }
-    return new Link<T>(element, this);
-  }
-}
-
-class LinkTail<T> extends AbstractLink<T> implements EmptyLink<T> {
-  const LinkTail();
-}
-
-class LinkEntry<T> extends AbstractLink<T> {
-  LinkEntry(T head, [Link<T> Tail]);
-}
-
-class Fisk {
-  Link<Fisk> nodes = const EmptyLink<Fisk>();
-  final int id;
-  Fisk(this.id);
-  toString() => id.toString();
-}
-
-main() {
-  new Fisk(0).nodes.prepend(new Fisk(1)).prepend(new Fisk(2));
-}
diff --git a/tests/language/factory4_test.dart b/tests/language/factory4_test.dart
deleted file mode 100644
index 9b7fe5c..0000000
--- a/tests/language/factory4_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-abstract class Link<T> {
-  factory Link.create() = LinkFactory.create;
-}
-
-class A<T> {}
-
-class LinkFactory<T> extends A<T> {
-  factory LinkFactory.create() {
-    return null;
-  }
-}
-
-main() {
-  var a = new Link<int>.create();
-}
diff --git a/tests/language/factory5_test.dart b/tests/language/factory5_test.dart
deleted file mode 100644
index aa963a6..0000000
--- a/tests/language/factory5_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-abstract class Link<T> {
-  factory Link.create() = LinkFactory<T>.create;
-}
-
-class LinkFactory<T> implements Link<T> {
-  factory LinkFactory.create() {
-    return null;
-  }
-}
-
-main() {
-  var a = new Link<int>.create();
-}
diff --git a/tests/language/factory6_test.dart b/tests/language/factory6_test.dart
deleted file mode 100644
index 3d06b0d..0000000
--- a/tests/language/factory6_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-abstract class Link<T> {
-  factory Link.Foo() = LinkFactory<T>.Foo; // //# 00: static type warning
-}
-
-class LinkFactory<T> {
-  factory LinkFactory.Foo() = Foo<T>; // //# 00: continued
-}
-
-main() {
-  Expect.throws(() => new Link<int>.Foo()); //# 00: continued
-}
diff --git a/tests/language/factory_arrow_test.dart b/tests/language/factory_arrow_test.dart
deleted file mode 100644
index d2cf528..0000000
--- a/tests/language/factory_arrow_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  A.foo() {}
-  factory A() => new A.foo();
-}
-
-main() {
-  Expect.isTrue(new A() is A);
-}
diff --git a/tests/language/factory_implementation_test.dart b/tests/language/factory_implementation_test.dart
deleted file mode 100644
index 442b9da..0000000
--- a/tests/language/factory_implementation_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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";
-
-abstract class A {
-  factory A(int x, int y) = B;
-}
-
-abstract class X {
-  factory X(int x, int y) = B.X;
-}
-
-class XImpl implements X {
-  final int x;
-  final int y;
-  XImpl(this.x, this.y);
-}
-
-class B implements A {
-  final int x;
-  final int y;
-
-  B(this.x, this.y);
-  // This factory will never be invoked.
-  // TODO(ahe): Is this a compile time error?
-  factory B.A(int a, int b) {
-    return new B(0, 0);
-  }
-
-  factory B.X(int a, int b) {
-    return new XImpl(a * 10, b * 10);
-  }
-}
-
-main() {
-  var a = new A(1, 2);
-  // Check that constructor B is invoked and not factory B.A.
-  Expect.equals(1, a.x);
-  Expect.equals(2, a.y);
-
-  var x = new X(11, 22); // //# 00: dynamic type error
-  // Check that factory is invoked.
-  Expect.equals(110, x.x); // //# 00: continued
-  Expect.equals(220, x.y); // //# 00: continued
-}
diff --git a/tests/language/factory_negative_test.dart b/tests/language/factory_negative_test.dart
deleted file mode 100644
index 20b4b98..0000000
--- a/tests/language/factory_negative_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-// Test compile time error for factories with parameterized types.
-
-abstract class Link<T> {
-  factory Link.create() = LinkFactory<T>.create;
-}
-
-class LinkFactory {
-  //   Compile time error: should be LinkFactory<T> to match abstract class above
-  factory Link.create() {
-    return null;
-  }
-}
-
-main() {
-  var a = new Link<int>.create();
-}
diff --git a/tests/language/factory_redirection2_test.dart b/tests/language/factory_redirection2_test.dart
deleted file mode 100644
index 39a1abb..0000000
--- a/tests/language/factory_redirection2_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-// Test that it is a compile-time error to have a redirection in a
-// non-factory constructor.
-
-class Foo {
-  Foo()
-  = Bar //# 01: syntax error
-  ;
-}
-
-class Bar extends Foo {
-  factory Bar() => null;
-}
-
-main() {
-  Expect.isTrue(new Foo() is Foo);
-  Expect.isFalse(new Foo() is Bar);
-}
diff --git a/tests/language/factory_redirection3_cyclic_test.dart b/tests/language/factory_redirection3_cyclic_test.dart
deleted file mode 100644
index 0407262..0000000
--- a/tests/language/factory_redirection3_cyclic_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a cycle in redirecting factories leads to a compile-time error.
-
-class A {
-  factory A.foo() = B;
-}
-
-class B implements A {
-  factory B() = C.bar;
-}
-
-class C implements B {
-  factory C.bar() = C.foo;
-  factory C.foo() = C
-    .bar //# 01: compile-time error
-  ;
-  C();
-}
-
-main() {
-  new A.foo();
-}
diff --git a/tests/language/factory_redirection_test.dart b/tests/language/factory_redirection_test.dart
deleted file mode 100644
index e359dd6..0000000
--- a/tests/language/factory_redirection_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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";
-
-class A<T> {
-  A() : x = null;
-
-  const A.constant(this.x);
-
-  factory A.factory() {
-    return new B<Set>();
-  }
-
-  factory A.test01() = T; // //# 01: runtime error
-
-  factory A.test02() = dynamic; // //# 02: runtime error
-
-  factory A.test03() = Undefined; // //# 03: runtime error
-
-  factory A.test04() = C.test04; // //# 04: compile-time error
-
-  final T x;
-}
-
-class B<T> extends A<T> {
-  B();
-
-  factory B.A() = A<T>;
-
-  const factory B.A_constant(T x) = A<T>.constant;
-
-  factory B.A_factory() = A<T>.factory;
-
-  factory B.test04() = A.test04; // //# 04: continued
-
-  factory B.test05(int incompatible) = A<T>.factory; // //# 05: runtime error
-
-  factory B.test05(int incompatible) = A<T>.factory; // //# 06: runtime error
-}
-
-class C<K, V> extends B<V> {
-  C();
-
-  factory C.A() = A<V>;
-
-  factory C.A_factory() = A<V>.factory;
-
-  const factory C.B_constant(V x) = B<V>.A_constant;
-
-  factory C.test04() = B.test04; // //# 04: continued
-
-  factory C.test06(int incompatible) = B<K>.test05; // //# 06: continued
-
-  const factory C.test07(V x) = B<V>.A; // //# 07: compile-time error
-}
-
-main() {
-  new A<List>.test01(); // //# 01: continued
-  new A<List>.test02(); // //# 02: continued
-  new A<List>.test03(); // //# 03: continued
-  new C.test04(); // //# 04: continued
-  new B.test05(0); // //# 05: continued
-  new C<int, int>.test06(0); // //# 06: continued
-  new C<int, int>.test07(0); // //# 07: continued
-  Expect.isTrue(new A<List>() is A<List>);
-  Expect.isTrue(new A<bool>.constant(true).x);
-  Expect.isTrue(new A<Set>.factory() is B<Set>);
-  Expect.isTrue(new B<List>.A() is A<List>); // //# 08: dynamic type error
-  Expect.isFalse(new B<List>.A() is A<Set>); // //# 09: dynamic type error
-  Expect.isTrue(new B<bool>.A_constant(true).x); // //# 10: dynamic type error
-  Expect.isTrue(new B<List>.A_factory() is B<Set>); // //# 11: dynamic type error
-  Expect.isTrue(new C<String, num>.A() is A<num>); // //# 12: dynamic type error
-  Expect.isTrue(new C<String, num>.A_factory() is B<Set>); // //# 13: dynamic type error
-  Expect.isTrue(new C<String, bool>.B_constant(true).x); // //# 14: dynamic type error
-}
diff --git a/tests/language/factory_return_type_checked_test.dart b/tests/language/factory_return_type_checked_test.dart
deleted file mode 100644
index dc46145..0000000
--- a/tests/language/factory_return_type_checked_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  factory A() => 42;
-}
-
-main() {
-  bool isCheckedMode = false;
-  try {
-    String a = 42;
-  } catch (e) {
-    isCheckedMode = true;
-  }
-  if (isCheckedMode) {
-    Expect.throws(() => new A(), (e) => e is TypeError);
-  } else {
-    Expect.equals(42, new A());
-  }
-}
diff --git a/tests/language/factory_test.dart b/tests/language/factory_test.dart
deleted file mode 100644
index b0441ea..0000000
--- a/tests/language/factory_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing factories.
-
-import "package:expect/expect.dart";
-
-class A {
-  factory A(n) {
-    return new A.internal(n);
-  }
-  A.internal(n) : n_ = n {}
-  var n_;
-}
-
-class B {
-  factory B.my() {
-    return new B(3);
-  }
-  B(n) : n_ = n {}
-  var n_;
-}
-
-class FactoryTest {
-  static testMain() {
-    new B.my();
-    var b = new B.my();
-    Expect.equals(3, b.n_);
-    var a = new A(5);
-    Expect.equals(5, a.n_);
-  }
-}
-
-main() {
-  FactoryTest.testMain();
-}
diff --git a/tests/language/factory_type_parameter2_test.dart b/tests/language/factory_type_parameter2_test.dart
deleted file mode 100644
index 6536be8..0000000
--- a/tests/language/factory_type_parameter2_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that type variables are correctly set in instances created by factories.
-
-import 'package:expect/expect.dart';
-
-var p;
-bool done = false;
-
-class D {}
-
-abstract class I<T> {
-  factory I.name() {
-    return new C<T>.name();
-  }
-}
-
-class C<T> implements I<T> {
-  C.name() {
-    Expect.isTrue(p is T);
-    done = true;
-  }
-}
-
-main() {
-  p = new D();
-  new I<D>.name();
-  Expect.equals(true, done);
-}
diff --git a/tests/language/factory_type_parameter_test.dart b/tests/language/factory_type_parameter_test.dart
deleted file mode 100644
index c9e7a0b..0000000
--- a/tests/language/factory_type_parameter_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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";
-
-class A<T> {
-  factory A.factory() {
-    return new B<T>();
-  }
-
-  A();
-
-  build() {
-    return new A<T>();
-  }
-}
-
-class B<T> extends A<T> {
-  B();
-
-  build() {
-    return new B<T>();
-  }
-}
-
-main() {
-  Expect.isTrue(new A<List>() is A<List>);
-  Expect.isTrue(new A<List>.factory() is B<List>);
-
-  // Check that we don't always return true for is checks with
-  // generics.
-  Expect.isFalse(new A<List>() is A<Set>);
-  Expect.isFalse(new A<List>.factory() is B<Set>);
-
-  Expect.isTrue(new A<List>().build() is A<List>);
-  Expect.isFalse(new A<List>().build() is A<Set>);
-
-  Expect.isTrue(new A<List>.factory().build() is B<List>);
-  Expect.isFalse(new A<List>.factory().build() is B<Set>);
-
-  Expect.isTrue(new B<List>().build() is B<List>);
-  Expect.isFalse(new B<List>().build() is B<Set>);
-}
diff --git a/tests/language/failing_main.dart b/tests/language/failing_main.dart
deleted file mode 100644
index 3b92277..0000000
--- a/tests/language/failing_main.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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.
-
-main() {
-  Expect.equals(true, false);
-}
diff --git a/tests/language/fannkuch_test.dart b/tests/language/fannkuch_test.dart
deleted file mode 100644
index 4aac0f5..0000000
--- a/tests/language/fannkuch_test.dart
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright (c) 2011, 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 Great Computer Language Shootout
-// http://shootout.alioth.debian.org/
-// Ported from JavaScript contributed by Isaac Gouy.
-// Description: Repeatedly access a tiny integer-sequence.
-
-import "package:expect/expect.dart";
-
-class FannkuchTest {
-  static fannkuch(n) {
-    var p = new List(n), q = new List(n), s = new List(n);
-    var sign = 1, maxflips = 0, sum = 0, m = n - 1;
-    for (var i = 0; i < n; i++) {
-      p[i] = i;
-      q[i] = i;
-      s[i] = i;
-    }
-    do {
-      // Copy and flip.
-      var q0 = p[0]; // Cache 0th element.
-      if (q0 != 0) {
-        for (var i = 1; i < n; i++) q[i] = p[i]; // Work on a copy.
-        var flips = 1;
-        do {
-          var qq = q[q0];
-          if (qq == 0) {
-            // ... until 0th element is 0.
-            sum += sign * flips;
-            if (flips > maxflips) maxflips = flips; // New maximum?
-            break;
-          }
-          q[q0] = q0;
-          if (q0 >= 3) {
-            var i = 1, j = q0 - 1, t;
-            do {
-              t = q[i];
-              q[i] = q[j];
-              q[j] = t;
-              i++;
-              j--;
-            } while (i < j);
-          }
-          q0 = qq;
-          flips++;
-        } while (true);
-      }
-      if (sign == 1) {
-        var t = p[1];
-        p[1] = p[0];
-        p[0] = t;
-        sign = -1; // Rotate 0<-1.
-      } else {
-        // Rotate 0<-1 and 0<-1<-2.
-        var t = p[1];
-        p[1] = p[2];
-        p[2] = t;
-        sign = 1;
-        for (var i = 2; i < n; i++) {
-          var sx = s[i];
-          if (sx != 0) {
-            s[i] = sx - 1;
-            break;
-          }
-          if (i == m) {
-            return [sum, maxflips];
-          }
-          s[i] = i;
-          // Rotate 0<-...<-i+1.
-          t = p[0];
-          for (var j = 0; j <= i; j++) {
-            p[j] = p[j + 1];
-          }
-          p[i + 1] = t;
-        }
-      }
-    } while (true);
-  }
-
-  static testMain() {
-    var n = 6;
-    var pf = fannkuch(n);
-    Expect.equals(49, pf[0]);
-    Expect.equals(10, pf[1]);
-    print("${pf[0]}\nPfannkuchen($n) = ${pf[1]}");
-  }
-}
-
-main() {
-  FannkuchTest.testMain();
-}
diff --git a/tests/language/fast_method_extraction_test.dart b/tests/language/fast_method_extraction_test.dart
deleted file mode 100644
index 99daf46..0000000
--- a/tests/language/fast_method_extraction_test.dart
+++ /dev/null
@@ -1,106 +0,0 @@
-// 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.
-// Test that fast method extraction returns correct closure.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  var f;
-  A(this.f);
-  foo() => 40 + f;
-}
-
-class B {
-  var f;
-  B(this.f);
-  foo() => -40 - f;
-}
-
-class X {}
-
-class C<T> {
-  foo(v) => v is T;
-}
-
-class ChaA {
-  final magic;
-  ChaA(magic) : this.magic = magic;
-
-  foo() {
-    Expect.isTrue(this is ChaA);
-    Expect.equals("magicA", magic);
-    return "A";
-  }
-
-  bar() => foo;
-}
-
-class ChaB extends ChaA {
-  ChaB(magic) : super(magic);
-
-  foo() {
-    Expect.isTrue(this is ChaB);
-    Expect.equals("magicB", magic);
-    return "B";
-  }
-}
-
-mono(a) {
-  var f = a.foo;
-  return f();
-}
-
-poly(a) {
-  var f = a.foo;
-  return f();
-}
-
-types(a, b) {
-  var f = a.foo;
-  Expect.isTrue(f(b));
-}
-
-cha(a) {
-  var f = a.bar();
-  return f();
-}
-
-extractFromNull() {
-  var f = (null).toString;
-  Expect.equals("null", f());
-}
-
-main() {
-  var a = new A(2);
-  var b = new B(2);
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(42, mono(a));
-  }
-
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(42, poly(a));
-    Expect.equals(-42, poly(b));
-  }
-
-  var c = new C<X>();
-  var x = new X();
-  for (var i = 0; i < 20; i++) {
-    types(c, x);
-  }
-
-  var chaA = new ChaA("magicA");
-  for (var i = 0; i < 20; i++) {
-    Expect.equals("A", cha(chaA));
-  }
-
-  var chaB = new ChaB("magicB");
-  for (var i = 0; i < 20; i++) {
-    Expect.equals("B", cha(chaB));
-  }
-
-  for (var i = 0; i < 20; i++) {
-    extractFromNull();
-  }
-}
diff --git a/tests/language/fauxverride_test.dart b/tests/language/fauxverride_test.dart
deleted file mode 100644
index fa2ee5b..0000000
--- a/tests/language/fauxverride_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test the semantics of static members mixed with instance members.
-
-// Following are relevant quotes from Dart Programming Language
-// Specification, Draft Version 0.10, June 7, 2012.
-
-// 7 Classes:
-
-// "It is a compile-time error if a class has an instance method and a
-// static member method with the same name."
-
-// 7.1 Instance Methods:
-
-// "Instance methods are functions (6) whose declarations are
-// immediately contained within a class declaration and that are not
-// declared static. The instance methods of a class C are those
-// instance methods declared by C and the instance methods inherited
-// by C from its superclass."
-
-// 7.6 Static Methods
-
-// "Static methods are functions whose declarations are immediately
-// contained within a class declaration and that are declared
-// static. The static methods of a class C are those static methods
-// declared by C."
-
-// 7.7 Static Variables
-
-// "Static variables are variables whose declarations are immediately
-// contained within a class declaration and that are declared
-// static. The static variables of a class C are those static
-// variables declared by C."
-
-// "A static variable declaration of one of the forms static T v;,
-// static T v = e; , static const T v = e; or static final T v = e;
-// always induces an implicit static getter function (7.2) with
-// signature static T get v whose invocation evaluates as described
-// below (7.7.1)."
-
-m() => 'top level';
-
-class Super {
-  // No error from hiding.
-  static m() => 'super';
-
-  static var i = 'super';
-
-  static var i2 = 'super';
-
-  instanceMethod() => m();
-
-  instanceMethod2() => m();
-}
-
-class Sub extends Super {
-  // According to 7.6, static methods are not inherited.
-  static m() => 'sub';
-
-  // According to 7.7, static variables are not inherited.
-  static var i = 'sub';
-
-  // According to 7.1, instance methods include those of the
-  // superclass, and according to 7, it is a compile-time to have an
-  // instance method and static method with the same name.
-  static //# 03: compile-time error
-  instanceMethod() => m();
-
-  // According to 7.7, static variables are not inherited.
-  static i2() => m();
-
-  // According to 7.1, instance methods include those of the
-  // superclass, and according to 7, it is a compile-time to have an
-  // instance method and static method with the same
-  // name. Furthermore, according to 7.7 a static variable induces an
-  // implicit getter function (a static method).
-  static var instanceMethod2; //# 05: compile-time error
-
-  foo() => 'foo';
-}
-
-main() {
-  Expect.equals('foo', new Sub().foo());
-  Expect.equals('top level', m());
-  Expect.equals('super', Super.m());
-  Expect.equals('sub', Sub.m());
-  Expect.equals('super', Super.i);
-  Expect.equals('sub', Sub.i);
-  Expect.equals('super', Super.i2);
-  Expect.equals('sub', Sub.i2());
-  Expect.equals('super', new Super().instanceMethod());
-  Expect.equals('sub', new Sub().instanceMethod());
-  Expect.equals('super', new Super().instanceMethod2());
-  Expect.equals('super', new Sub().instanceMethod2());
-}
diff --git a/tests/language/fibo_test.dart b/tests/language/fibo_test.dart
deleted file mode 100644
index e6f13bd..0000000
--- a/tests/language/fibo_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program calculating the Fibonacci sequence.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int fibonacci(int n) {
-    int a = 0, b = 1, i = 0;
-    while (i++ < n) {
-      a = a + b;
-      b = a - b;
-    }
-    return a;
-  }
-}
-
-class FiboTest {
-  static testMain() {
-    Expect.equals(0, Helper.fibonacci(0));
-    Expect.equals(1, Helper.fibonacci(1));
-    Expect.equals(1, Helper.fibonacci(2));
-    Expect.equals(2, Helper.fibonacci(3));
-    Expect.equals(3, Helper.fibonacci(4));
-    Expect.equals(5, Helper.fibonacci(5));
-    Expect.equals(102334155, Helper.fibonacci(40));
-  }
-}
-
-main() {
-  FiboTest.testMain();
-}
diff --git a/tests/language/field1_negative_test.dart b/tests/language/field1_negative_test.dart
deleted file mode 100644
index 467e7ab..0000000
--- a/tests/language/field1_negative_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-// Should be an error because we have setter/getter functions and fields
-// in the class.
-
-class C {
-  var a;
-
-  get a {
-    return 1;
-  }
-
-  set a(int val) {
-    var x = val;
-  }
-
-  get b {
-    return 2;
-  }
-
-  set b(int val) {
-    var x = val;
-  }
-}
-
-class Field1NegativeTest {
-  static testMain() {
-    var c = new C();
-  }
-}
-
-main() {
-  Field1NegativeTest.testMain();
-}
diff --git a/tests/language/field2_negative_test.dart b/tests/language/field2_negative_test.dart
deleted file mode 100644
index 2523b9e..0000000
--- a/tests/language/field2_negative_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-// Should be an error because we have setter/getter functions and fields
-// in the class.
-
-class C {
-  get a {
-    return 1;
-  }
-
-  set a(int val) {
-    var x = val;
-  }
-
-  get b {
-    return 2;
-  }
-
-  set b(int val) {
-    var x = val;
-  }
-
-  var a;
-}
-
-class Field2NegativeTest {
-  static testMain() {
-    var c = new C();
-  }
-}
-
-main() {
-  Field2NegativeTest.testMain();
-}
diff --git a/tests/language/field3_negative_test.dart b/tests/language/field3_negative_test.dart
deleted file mode 100644
index 4ee13ba..0000000
--- a/tests/language/field3_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-
-import "package:expect/expect.dart";
-
-class C {
-  final var a = 0;  // illegal: var cannot follow final.
-}
-
-main() {
-  var val = new C();
-  Expect.equals(val.a, 0);
-}
diff --git a/tests/language/field3a_negative_test.dart b/tests/language/field3a_negative_test.dart
deleted file mode 100644
index 0b00d49..0000000
--- a/tests/language/field3a_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-
-import "package:expect/expect.dart";
-
-class C {
-  final a; // illegal field declaration - must be initialized
-}
-
-main() {
-  var val = new C();
-  Expect.equals(val.a, 0);
-}
diff --git a/tests/language/field4_negative_test.dart b/tests/language/field4_negative_test.dart
deleted file mode 100644
index 9d8ae45..0000000
--- a/tests/language/field4_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-// Should be an error because we have a field overriding a function name.
-
-class A {
-  int a() {
-    return 1;
-  }
-
-  var a;
-}
-
-class Field4NegativeTest {
-  static testMain() {
-    var a = new A();
-  }
-}
-
-main() {
-  Field4NegativeTest.testMain();
-}
diff --git a/tests/language/field5_negative_test.dart b/tests/language/field5_negative_test.dart
deleted file mode 100644
index 3ba641b..0000000
--- a/tests/language/field5_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-// Should be an error because we have a function overriding a field name.
-
-class A {
-  var a;
-  int a() {
-    return 1;
-  }
-}
-
-class Field5NegativeTest {
-  static testMain() {
-    var a = new A();
-  }
-}
-
-main() {
-  Field5NegativeTest.testMain();
-}
diff --git a/tests/language/field6_negative_test.dart b/tests/language/field6_negative_test.dart
deleted file mode 100644
index 688a091..0000000
--- a/tests/language/field6_negative_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-// Should be an error because we have a getter overriding a function name.
-
-class A {
-  int a() {
-    return 1;
-  }
-
-  int get a {
-    return 10;
-  }
-}
-
-class Field6NegativeTest {
-  static testMain() {
-    var a = new A();
-  }
-}
-
-main() {
-  Field6NegativeTest.testMain();
-}
diff --git a/tests/language/field6a_negative_test.dart b/tests/language/field6a_negative_test.dart
deleted file mode 100644
index 53c4874..0000000
--- a/tests/language/field6a_negative_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-// Should be an error because we have a function overriding a getter.
-
-class A {
-  int get a {
-    return 10;
-  }
-
-  int a() {
-    return 1;
-  }
-}
-
-class Field6aNegativeTest {
-  static testMain() {
-    var a = new A();
-  }
-}
-
-main() {
-  Field6aNegativeTest.testMain();
-}
diff --git a/tests/language/field_decl_missing_var_type_test.dart b/tests/language/field_decl_missing_var_type_test.dart
deleted file mode 100644
index 19cdd55..0000000
--- a/tests/language/field_decl_missing_var_type_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-// Dart test program for constructors and initializers.
-
-// Exercises issue 2997, missing var or type on field declarations should
-// generate a compile-time error.
-
-class A {
-  _this; //                     //# 01: syntax error
-  A(x) : this._this = x; //     //# 01: continued
-}
-
-main() {
-  new A(0); //                  //# 01: continued
-}
diff --git a/tests/language/field_increment_bailout_test.dart b/tests/language/field_increment_bailout_test.dart
deleted file mode 100644
index 7275f67..0000000
--- a/tests/language/field_increment_bailout_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// dart2js regression test for issue 8781.
-
-import "dart:mirrors" show reflect;
-import "package:expect/expect.dart";
-
-class N {
-  var outgoing;
-  var incoming;
-  N(this.outgoing, this.incoming);
-}
-
-class A {
-  int offset = 0;
-  var list;
-  var node;
-
-  A(node)
-      : node = node,
-        list = node.outgoing;
-
-  next() {
-    // dart2js used to update [offset] twice: once in the optimized
-    // version, which would bailout to the non-optimized version
-    // because [list] is not an Array, and once in the non-optimized
-    // version.
-    var edge = list[offset++];
-    if (list == node.outgoing) {
-      list = node.incoming;
-      offset = 0;
-    } else
-      list = null;
-    return edge;
-  }
-}
-
-class L {
-  final list;
-  L(this.list);
-  // Use noSuchMethod to defeat type inferencing.
-  noSuchMethod(mirror) => reflect(list).delegate(mirror);
-}
-
-main() {
-  var o = new A(new N(new L([1]), new L([2])));
-
-  for (var i = 1; i <= 2; i++) Expect.equals(i, o.next());
-
-  Expect.equals(null, o.list);
-}
diff --git a/tests/language/field_inference_test.dart b/tests/language/field_inference_test.dart
deleted file mode 100644
index 7a0132b..0000000
--- a/tests/language/field_inference_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js and its SsaConstructionFieldTypes
-// phase.
-
-import "package:expect/expect.dart";
-
-class A {
-  var _field;
-  final other;
-  get field => _field;
-  A(this._field) : other = null;
-  A.fromOther(this.other) {
-    _field = other.field;
-  }
-}
-
-class B {
-  var a;
-  B() {
-    try {
-      // Defeat inlining.
-      // An inlined generative constructor call used to confuse
-      // dart2js.
-      a = new A(42);
-    } catch (e) {
-      rethrow;
-    }
-  }
-}
-
-var array = [new A(42), new B()];
-
-main() {
-  // Surround the call to [analyzeAfterB] by two [: new B() :] calls
-  // to ensure the [B] constructor will be analyzed first.
-  new B();
-  var a = analyzeAfterB();
-  new B();
-  Expect.equals(42, a._field);
-}
-
-analyzeAfterB() {
-  try {
-    // Defeat inlining.
-    return new A.fromOther(array[0]);
-  } catch (e) {
-    rethrow;
-  }
-}
diff --git a/tests/language/field_initialization_order_test.dart b/tests/language/field_initialization_order_test.dart
deleted file mode 100644
index 36167e8..0000000
--- a/tests/language/field_initialization_order_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// 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";
-
-// Test that field initializers are evaluated in the right order.
-
-int counter = 0;
-
-class Mark {
-  static StringBuffer buffer;
-  Mark(value) {
-    buffer.write('$value.');
-  }
-}
-
-class OneField {
-  var a = new Mark('a');
-
-  OneField();
-
-  OneField.init() : a = new Mark('ai');
-}
-
-class TwoFields {
-  var b = new Mark('b');
-  var a = new Mark('a');
-
-  TwoFields();
-
-  TwoFields.initA() : a = new Mark('ai');
-
-  TwoFields.initB() : b = new Mark('bi');
-
-  TwoFields.initBoth()
-      : a = new Mark('ai'),
-        b = new Mark('bi');
-}
-
-class InheritOneField extends OneField {
-  var b = new Mark('b');
-
-  InheritOneField() : super();
-
-  InheritOneField.init()
-      : b = new Mark('bi'),
-        super();
-
-  InheritOneField.superWithInit() : super.init();
-
-  InheritOneField.initWithSuperInit()
-      : b = new Mark('bi'),
-        super.init();
-
-  InheritOneField.initWithSuperInit2()
-      : super.init(),
-        b = new Mark('bi');
-}
-
-String run(callback) {
-  Mark.buffer = new StringBuffer();
-  callback();
-  return Mark.buffer.toString();
-}
-
-main() {
-  Expect.equals('a.', run(() => new OneField()));
-  Expect.equals('a.ai.', run(() => new OneField.init()));
-
-  Expect.equals('b.a.', run(() => new TwoFields()));
-  Expect.equals('b.a.ai.', run(() => new TwoFields.initA()));
-  Expect.equals('b.a.bi.', run(() => new TwoFields.initB()));
-  Expect.equals('b.a.ai.bi.', run(() => new TwoFields.initBoth()));
-
-  Expect.equals('b.a.', run(() => new InheritOneField()));
-  Expect.equals('b.bi.a.', run(() => new InheritOneField.init()));
-  Expect.equals('b.a.ai.', run(() => new InheritOneField.superWithInit()));
-  Expect.equals(
-      'b.bi.a.ai.', run(() => new InheritOneField.initWithSuperInit()));
-  Expect.equals(
-      'b.a.ai.bi.', run(() => new InheritOneField.initWithSuperInit2()));
-}
diff --git a/tests/language/field_method4_negative_test.dart b/tests/language/field_method4_negative_test.dart
deleted file mode 100644
index 94755db..0000000
--- a/tests/language/field_method4_negative_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs when using a field like a method.
-
-class A {
-  var foo;
-  A() {
-    foo = () {};
-  }
-  void bar(var a) {
-    a.foo(); // Tries to invoke the non-existing method 'foo'.
-    /*
-    'a.foo()' is a "Regular instance-method invocation". The guide says:
-    "If no method is found, the result of the invocation expression is
-    equivalent to: $0.noSuchMethod(r"id", [$1, ..., $N])."
-    Invoking noSuchMethod on an instance of A will invoke Object's
-    noSuchMethod (because A doesn't override that method). Object's
-    noSuchMethod will throw an error.
-    */
-  }
-}
-
-class FieldMethod4NegativeTest {
-  static testMain() {
-    var a = new A();
-    a.bar();
-  }
-}
-
-main() {
-  FieldMethod4NegativeTest.testMain();
-}
diff --git a/tests/language/field_method_test.dart b/tests/language/field_method_test.dart
deleted file mode 100644
index 012b60a..0000000
--- a/tests/language/field_method_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test. Fields can be invoked directly if they are unqualified.
-
-class A {
-  var foo;
-  A() {
-    foo = () {};
-  }
-  void bar() {
-    foo(); // <= foo is a field, but can still be invoked without parenthesis.
-  }
-}
-
-class FieldMethodTest {
-  static testMain() {
-    new A().bar();
-  }
-}
-
-main() {
-  FieldMethodTest.testMain();
-}
diff --git a/tests/language/field_optimization2_test.dart b/tests/language/field_optimization2_test.dart
deleted file mode 100644
index d0ee6bd..0000000
--- a/tests/language/field_optimization2_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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";
-
-// Dart test program to test type-based optimization on fields.
-
-class A {
-  var x;
-  A() : x = new B();
-  foo() {
-    x++;
-  }
-}
-
-class B {
-  operator +(other) => 498;
-}
-
-main() {
-  var a = new A();
-  a.foo();
-  a.foo();
-  Expect.equals(499, a.x);
-}
diff --git a/tests/language/field_optimization3_test.dart b/tests/language/field_optimization3_test.dart
deleted file mode 100644
index fa9f899..0000000
--- a/tests/language/field_optimization3_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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";
-
-// Dart test program to test type-based optimization on fields.
-
-class A {
-  var a = 0;
-  var b = 0;
-  foo() {
-    var c = b + 27;
-    for (var i = 0; i < 1; i++) {
-      for (var j = 0; j < 1; j++) {
-        Expect.equals(50, c + 23);
-      }
-    }
-    return a > 0.2;
-  }
-
-  setA(value) {
-    a = value;
-  }
-
-  setB(value) {
-    b = value;
-  }
-
-  operator >(other) => other == 0.2;
-}
-
-main() {
-  var a = new A();
-  Expect.isFalse(a.foo());
-  a.setA(new A());
-  a.setB(0);
-  Expect.isTrue(a.foo());
-}
diff --git a/tests/language/field_optimization_test.dart b/tests/language/field_optimization_test.dart
deleted file mode 100644
index 58a1461..0000000
--- a/tests/language/field_optimization_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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";
-
-// Dart test program to test type-based optimization on fields.
-
-class A {
-  var x;
-  A() : x = 0;
-  foo() {
-    x++;
-  }
-
-  toto() {
-    x = 99;
-  }
-
-  bar(y) {
-    x = y;
-  }
-}
-
-class B {
-  operator +(other) => "ok";
-}
-
-main() {
-  var a = new A();
-  a.foo();
-  a.toto();
-  a.bar("str");
-  a.bar(new B());
-  a.foo();
-  Expect.equals("ok", a.x);
-}
diff --git a/tests/language/field_override2_test.dart b/tests/language/field_override2_test.dart
deleted file mode 100644
index 620667eb..0000000
--- a/tests/language/field_override2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we are accessing the right field in a method of a super
-// class, when that field is overridden.
-
-import "package:expect/expect.dart";
-
-class A {
-  final a = [42];
-  foo() => a[0];
-}
-
-class B extends A {
-  final a = new Map();
-}
-
-main() {
-  Expect.equals(null, new B().foo());
-  Expect.equals(42, new A().foo());
-}
diff --git a/tests/language/field_override3_test.dart b/tests/language/field_override3_test.dart
deleted file mode 100644
index 9b100be..0000000
--- a/tests/language/field_override3_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we report a compile-time error when a static field conflicts with
-// an inherited instance member of the same name.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: compile-time error
-  get foo => 42; // //# 01: compile-time error
-  foo() => 42; // //# 02: compile-time error
-  set foo(value) { } // //# 03: compile-time error
-}
-
-class B extends A {
-  static var foo = 42;
-}
-
-main() {
-  Expect.equals(42, B.foo);
-}
diff --git a/tests/language/field_override4_test.dart b/tests/language/field_override4_test.dart
deleted file mode 100644
index 08fde79..0000000
--- a/tests/language/field_override4_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we report a compile-time error when an instance field conflicts
-// with an inherited instance method of the same name.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: ok
-  get foo => 42; // //# 01: ok
-  foo() => 42; // //# 02: compile-time error
-  set foo(value) { } // //# 03: ok
-}
-
-class B extends A {
-  var foo = 42;
-}
-
-main() {
-  Expect.equals(42, new B().foo);
-}
diff --git a/tests/language/field_override_test.dart b/tests/language/field_override_test.dart
deleted file mode 100644
index 665a690..0000000
--- a/tests/language/field_override_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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.
-// Test overriding of fields.
-
-import "package:expect/expect.dart";
-
-class A {}
-
-class B1 extends A {}
-
-class B2 extends A {}
-
-class Super {
-  Super() : super();
-
-  B1 field;
-}
-
-class Sub extends Super {
-  Sub() : super();
-
-  A field;
-}
-
-class SubSub extends Super {
-  SubSub() : super();
-
-  // B2 not assignable to B1
-  B2 field; // //# 01: static type warning
-}
-
-main() {
-  SubSub val1 = new SubSub();
-  val1.field = new B2(); //# 02: static type warning, dynamic type error
-  Expect.equals(true, val1.field is B2); //# 02: continued
-
-  Sub val2 = new Sub();
-  val2.field = new A();
-  Expect.equals(true, val2.field is A);
-  Expect.equals(false, val2.field is B1);
-  Expect.equals(false, val2.field is B2);
-
-  Super val3 = new Super();
-  val3.field = new B1();
-  Expect.equals(true, val3.field is B1);
-  Expect.equals(false, val3.field is B2);
-}
diff --git a/tests/language/field_parameter_test.dart b/tests/language/field_parameter_test.dart
deleted file mode 100644
index 8363eb0..0000000
--- a/tests/language/field_parameter_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-// Dart test program for testing setting/getting of instance fields.
-
-import "package:expect/expect.dart";
-
-class A {
-  var x = 4;
-  A(this.x);
-  A.named([this.x]);
-  A.named2([this.x = 2]);
-  A.named3();
-}
-
-class B extends A {
-  B(x) : super(x + 10);
-  B.named_() : super.named();
-  B.named(x) : super.named(x + 10);
-  B.named2_() : super.named2();
-  B.named2(x) : super.named2(x + 10);
-  B.named3() : super.named3();
-}
-
-main() {
-  Expect.equals(0, new A(0).x);
-  Expect.equals(null, new A.named().x);
-  Expect.equals(1, new A.named(1).x);
-  Expect.equals(2, new A.named2().x);
-  Expect.equals(3, new A.named2(3).x);
-  Expect.equals(4, new A.named3().x);
-
-  Expect.equals(10, new B(0).x);
-  Expect.equals(null, new B.named_().x);
-  Expect.equals(11, new B.named(1).x);
-  Expect.equals(2, new B.named2_().x);
-  Expect.equals(13, new B.named2(3).x);
-  Expect.equals(4, new B.named3().x);
-}
diff --git a/tests/language/field_test.dart b/tests/language/field_test.dart
deleted file mode 100644
index 64704ea..0000000
--- a/tests/language/field_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing setting/getting of instance fields.
-
-import "package:expect/expect.dart";
-
-class First {
-  First() {}
-  var a;
-  var b;
-
-  addFields() {
-    return a + b;
-  }
-
-  setValues() {
-    a = 24;
-    b = 10;
-    return a + b;
-  }
-}
-
-class Second extends First {
-  // TODO: consider removing once http://b/4254120 is fixed.
-  Second() : super() {}
-  var c;
-  get a {
-    return -12;
-  }
-
-  set b(a) {
-    a.c = 12;
-  }
-}
-
-class FieldTest {
-  static one() {
-    var f = new First();
-    f.a = 3;
-    f.b = f.a;
-    Expect.equals(3, f.a);
-    Expect.equals(f.a, f.b);
-    f.b = (f.a = 10);
-    Expect.equals(10, f.a);
-    Expect.equals(10, f.b);
-    f.b = f.a = 15;
-    Expect.equals(15, f.a);
-    Expect.equals(15, f.b);
-    Expect.equals(30, f.addFields());
-    Expect.equals(34, f.setValues());
-    Expect.equals(24, f.a);
-    Expect.equals(10, f.b);
-  }
-
-  static two() {
-    // The tests below are a little cumbersome because not
-    // everything is implemented yet.
-    var o = new Second();
-    // 'a' getter is overridden, always returns -12.
-    Expect.equals(-12, o.a);
-    o.a = 2;
-    Expect.equals(-12, o.a);
-    // 'b' setter is overridden to write 12 to field 'c'.
-    o.b = o;
-    Expect.equals(12, o.c);
-  }
-
-  static testMain() {
-    // FieldTest.one();
-    FieldTest.two();
-  }
-}
-
-main() {
-  FieldTest.testMain();
-}
diff --git a/tests/language/field_type_check2_test.dart b/tests/language/field_type_check2_test.dart
deleted file mode 100644
index 8fa8752..0000000
--- a/tests/language/field_type_check2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-class A {
-  A a;
-
-  bar(c) {
-    c.a = 2; //# 01: dynamic type error
-  }
-}
-
-class B {
-  int a;
-}
-
-main() {
-  new A().bar(new A()); //# 01: continued
-  new A().bar(new B());
-}
diff --git a/tests/language/field_type_check_test.dart b/tests/language/field_type_check_test.dart
deleted file mode 100644
index f1c3d43..0000000
--- a/tests/language/field_type_check_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-class A {
-  int e;
-}
-
-int main() {
-  new A().e = "String"; //# 01: static type warning, dynamic type error
-}
diff --git a/tests/language/field_wierd_name_test.dart b/tests/language/field_wierd_name_test.dart
deleted file mode 100644
index 7f65010..0000000
--- a/tests/language/field_wierd_name_test.dart
+++ /dev/null
@@ -1,149 +0,0 @@
-// 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.
-// Dart test program for testing setting/getting of instance fields.
-
-import "package:expect/expect.dart";
-
-// dart2js used to have a bug where a local called '_' in the constructor
-// shadowed the parameter named after a field. This lead to the field being
-// initialized to 'this' (a cycle) rather than the correct initializer value.
-//
-// This test is in the language tests rather than dart2js specific tests since
-// the dart2js specific tests are not run in all configurations that coudl
-// tickle this issue.
-
-int ii = 0;
-
-class Thing {
-  var _;
-  var $_;
-  // Extra fields to make use of local in constructor benficial and to exhaust
-  // single-character names.
-  var a = ++ii, b = ++ii, c = ++ii, d = ++ii, e = ++ii;
-  var f = ++ii, g = ++ii, h = ++ii, i = ++ii, j = ++ii;
-  var k = ++ii, l = ++ii, m = ++ii, n = ++ii, o = ++ii;
-  var p = ++ii, q = ++ii, r = ++ii, s = ++ii, t = ++ii;
-  var u = ++ii, v = ++ii, w = ++ii, x = ++ii, y = ++ii;
-  var z = ++ii;
-  var A = ++ii, B = ++ii, C = ++ii, D = ++ii, E = ++ii;
-  var F = ++ii, G = ++ii, H = ++ii, I = ++ii, J = ++ii;
-  var K = ++ii, L = ++ii, M = ++ii, N = ++ii, O = ++ii;
-  var P = ++ii, Q = ++ii, R = ++ii, S = ++ii, T = ++ii;
-  var U = ++ii, V = ++ii, W = ++ii, X = ++ii, Y = ++ii;
-  var Z = ++ii;
-  var $ = ++ii;
-
-  var f30 = ++ii, f31 = ++ii, f32 = ++ii, f33 = ++ii, f34 = ++ii;
-  var f35 = ++ii, f36 = ++ii, f37 = ++ii, f38 = ++ii, f39 = ++ii;
-  var f40 = ++ii, f41 = ++ii, f42 = ++ii, f43 = ++ii, f44 = ++ii;
-  var f45 = ++ii, f46 = ++ii, f47 = ++ii, f48 = ++ii, f49 = ++ii;
-  var f50 = ++ii, f51 = ++ii, f52 = ++ii, f53 = ++ii, f54 = ++ii;
-  var f55 = ++ii, f56 = ++ii, f57 = ++ii, f58 = ++ii, f59 = ++ii;
-
-  @NoInline()
-  Thing(this._, this.$_);
-  toString() {
-    if (depth > 0) return 'recursion!';
-    try {
-      ++depth;
-      var sum = a +
-          b +
-          c +
-          d +
-          e +
-          f +
-          g +
-          h +
-          i +
-          j +
-          k +
-          l +
-          m +
-          n +
-          o +
-          p +
-          q +
-          r +
-          s +
-          t +
-          u +
-          v +
-          w +
-          x +
-          y +
-          z +
-          A +
-          B +
-          C +
-          D +
-          E +
-          F +
-          G +
-          H +
-          I +
-          J +
-          K +
-          L +
-          M +
-          N +
-          O +
-          P +
-          Q +
-          R +
-          S +
-          T +
-          U +
-          V +
-          W +
-          X +
-          Y +
-          Z +
-          $ +
-          f30 +
-          f31 +
-          f32 +
-          f33 +
-          f34 +
-          f35 +
-          f36 +
-          f37 +
-          f38 +
-          f39 +
-          f40 +
-          f41 +
-          f42 +
-          f43 +
-          f44 +
-          f45 +
-          f46 +
-          f47 +
-          f48 +
-          f49 +
-          f50 +
-          f51 +
-          f52 +
-          f53 +
-          f54 +
-          f55 +
-          f56 +
-          f57 +
-          f58 +
-          f59;
-      return 'Thing(${_}, ${$_}, ${sum})';
-    } finally {
-      --depth;
-    }
-  }
-
-  static int depth = 0;
-}
-
-main() {
-  var t1 = new Thing(1, 2);
-  var t2 = new Thing(3, 4);
-  var t3 = [];
-
-  Expect.equals(
-      '[Thing(1, 2, 3486), Thing(3, 4, 10375), []]', '${[t1, t2, t3]}');
-}
diff --git a/tests/language/final_attempt_reinitialization_test.dart b/tests/language/final_attempt_reinitialization_test.dart
deleted file mode 100644
index a5a8be2..0000000
--- a/tests/language/final_attempt_reinitialization_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-class Foo {
-  Foo(this.x); //# 01: compile-time error
-  final int x = 42; //# 01: compile-time error
-}
-
-class CoffeeShop {
-  final String shopName = "Coffee Lab"; //# 02: compile-time error
-  CoffeeShop.name(String shopName) //# 02: compile-time error
-      : this.shopName = shopName; //# 02: compile-time error
-}
-
-void main() {
-  Foo f = new Foo(10); //# 01: compile-time error
-  CoffeeShop presidentialCoffee = //# 02: compile-time error
-      new CoffeeShop.name("Covfefe Lab"); //# 02: compile-time error
-}
diff --git a/tests/language/final_field_initialization_order_test.dart b/tests/language/final_field_initialization_order_test.dart
deleted file mode 100644
index 9368a40..0000000
--- a/tests/language/final_field_initialization_order_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// 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";
-
-// Test that initializers for final fields are evaluated in the right
-// order.
-
-int counter = 0;
-
-class Mark {
-  static StringBuffer buffer;
-  Mark(value) {
-    buffer.write('$value.');
-  }
-}
-
-class OneField {
-  final a = new Mark('a');
-  OneField();
-}
-
-class TwoFields {
-  final a = new Mark('a');
-  final b = new Mark('b');
-  TwoFields();
-}
-
-class InheritOneField extends OneField {
-  final b = new Mark('b');
-  InheritOneField();
-}
-
-class MixedFields extends OneField {
-  final b = new Mark('b');
-  var c = new Mark('c');
-  final d = new Mark('d');
-  MixedFields();
-  MixedFields.c0() : c = new Mark('cc');
-  MixedFields.c1()
-      : c = new Mark('cc'),
-        super();
-  MixedFields.c2()
-      : super(),
-        c = new Mark('cc');
-}
-
-String run(callback) {
-  Mark.buffer = new StringBuffer();
-  callback();
-  return Mark.buffer.toString();
-}
-
-main() {
-  Expect.equals('a.', run(() => new OneField()));
-  Expect.equals('a.b.', run(() => new TwoFields()));
-  Expect.equals('b.a.', run(() => new InheritOneField()));
-
-  Expect.equals('b.c.d.a.', run(() => new MixedFields()));
-  Expect.equals('b.c.d.cc.a.', run(() => new MixedFields.c0()));
-  Expect.equals('b.c.d.cc.a.', run(() => new MixedFields.c1()));
-  Expect.equals('b.c.d.a.cc.', run(() => new MixedFields.c2()));
-}
diff --git a/tests/language/final_for_in_variable_test.dart b/tests/language/final_for_in_variable_test.dart
deleted file mode 100644
index 8649aef..0000000
--- a/tests/language/final_for_in_variable_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-main() {
-  for (final i in [1, 2, 3]) {
-    i = 4; //# 01: static type warning, runtime error
-  }
-}
diff --git a/tests/language/final_initializer_instance_reference_test.dart b/tests/language/final_initializer_instance_reference_test.dart
deleted file mode 100644
index 7e4da6d..0000000
--- a/tests/language/final_initializer_instance_reference_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-// Dart2js regression test. Error in initializer might be report with the wrong
-// current element.
-
-class C {
-  const C();
-
-  final x = 1;
-  final y = x; //# 01: compile-time error
-}
-
-main() {
-  const C().y; //# 01: continued
-}
diff --git a/tests/language/final_is_not_const_test.dart b/tests/language/final_is_not_const_test.dart
deleted file mode 100644
index 433d4d0..0000000
--- a/tests/language/final_is_not_const_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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";
-
-final F0 = 42;
-const C0 = F0; // //# 01: compile-time error
-
-main() {
-  Expect.equals(42, F0);
-  Expect.equals(42, C0); // //# 01: continued
-}
diff --git a/tests/language/final_param_test.dart b/tests/language/final_param_test.dart
deleted file mode 100644
index e9cdda1..0000000
--- a/tests/language/final_param_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-// Disallow assignment of parameters marked as final.
-
-class A {
-  static void test(final x) {
-    x = 2; // //# 01: static type warning, runtime error
-  }
-}
-
-main() {
-  A.test(1);
-}
diff --git a/tests/language/final_super_field_set_test.dart b/tests/language/final_super_field_set_test.dart
deleted file mode 100644
index 38a64f6..0000000
--- a/tests/language/final_super_field_set_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class SuperClass {
-  final field = 0;
-  noSuchMethod(_) => 42;
-}
-
-class Class extends SuperClass {
-  m() {
-    super.field = 87; //# 01: static type warning
-  }
-}
-
-main() {
-  new Class().m(); //# 01: continued
-}
diff --git a/tests/language/final_syntax_test.dart b/tests/language/final_syntax_test.dart
deleted file mode 100644
index f4a2a3b..0000000
--- a/tests/language/final_syntax_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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";
-
-main() {
-  final f0 = 42;
-  final f1; //# 01: compile-time error
-  final int f2 = 87;
-  final int f3; //# 02: compile-time error
-  Expect.equals(42, f0);
-  Expect.equals(87, f2);
-
-  Expect.equals(42, F0);
-  Expect.equals(null, F1); //# 03: continued
-  Expect.equals(87, F2);
-  Expect.equals(null, F3); //# 04: continued
-
-  Expect.isTrue(P0 is Point);
-  Expect.isTrue(P1 is int);
-  Expect.isTrue(P2 is Point);
-  Expect.isTrue(P3 is int);
-
-  Expect.isTrue(A0 is int);
-  Expect.isTrue(A1 is int);
-  Expect.isTrue(A2 is int); //# 08: runtime error
-  Expect.isTrue(A3 is int); //# 08: continued
-
-  Expect.isTrue(C0.X is C1);
-  Expect.isTrue(C0.X.x is C1); //# 09: compile-time error
-
-  Expect.equals("Hello 42", B2);
-  Expect.equals("42Hello", B3); //# 10: runtime error
-}
-
-final F0 = 42;
-final F1; //                //# 03: syntax error
-final int F2 = 87;
-final int F3; //            //# 04: syntax error
-
-class Point {
-  final x, y;
-  const Point(this.x, this.y);
-  operator +(int other) => x;
-}
-
-// Check that compile time expressions can include invocations of
-// user-defined final constructors.
-final P0 = const Point(0, 0);
-final P1 = const Point(0, 0) + 1;
-final P2 = new Point(0, 0);
-final P3 = new Point(0, 0) + 1;
-
-// Check that we cannot have cyclic references in compile time
-// expressions.
-final A0 = 42;
-final A1 = A0 + 1;
-final A2 = A3 + 1; //# 08: continued
-final A3 = A2 + 1; //# 08: continued
-
-class C0 {
-  static final X = const C1();
-}
-
-class C1 {
-  const C1()
-      : x = C0.X //# 09: continued
-  ;
-  final x = null;
-}
-
-// Check that sub-expressions of binary + are numeric.
-final B0 = 42;
-final B1 = "Hello";
-final B2 = "$B1 $B0";
-final B3 = B0 + B1; //# 10: continued
diff --git a/tests/language/final_used_in_try_test.dart b/tests/language/final_used_in_try_test.dart
deleted file mode 100644
index 259ba8d..0000000
--- a/tests/language/final_used_in_try_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-main() {
-  while (true) {
-    final a = 'fff'.substring(1, 2);
-    try {
-      Expect.equals('f', a);
-    } catch (e) {
-      rethrow;
-    }
-    break;
-  }
-}
diff --git a/tests/language/final_variable_assignment_test.dart b/tests/language/final_variable_assignment_test.dart
deleted file mode 100644
index 59c275a..0000000
--- a/tests/language/final_variable_assignment_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-// Test to make sure we catch assignments to final local variables.
-
-main() {
-  final x = 30;
-  x = 0; //   //# 01: static type warning, runtime error
-  x += 1; //  //# 02: static type warning, runtime error
-  ++x; //     //# 03: static type warning, runtime error
-  x++; //     //# 04: static type warning, runtime error
-}
diff --git a/tests/language/finally_test.dart b/tests/language/finally_test.dart
deleted file mode 100644
index 9277416..0000000
--- a/tests/language/finally_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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";
-
-// Test for a bug in dart2js where the update of a field in a try
-// block would not be seen by the finally block. See dartbug.com/5517.
-
-class A {
-  int i;
-  A() : i = 42;
-
-  foo() {
-    bool executedFinally = false;
-    if (i == 42) {
-      try {
-        i = 12;
-      } finally {
-        Expect.equals(12, i);
-        executedFinally = true;
-      }
-    }
-    Expect.isTrue(executedFinally);
-  }
-}
-
-main() {
-  new A().foo();
-}
diff --git a/tests/language/first_class_types_constants_test.dart b/tests/language/first_class_types_constants_test.dart
deleted file mode 100644
index 5dfa136..0000000
--- a/tests/language/first_class_types_constants_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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";
-
-class C<T> {
-  final T t;
-  const C(this.t);
-}
-
-typedef int Fun(bool, String);
-
-const c0 = C;
-const c1 = const C(C);
-const c2 = Fun;
-const c3 = const C(Fun);
-
-main() {
-  Expect.identical(C, C);
-  Expect.identical(C, c0);
-  Expect.identical(c1, c1);
-  Expect.notEquals(c0, c1);
-  Expect.notEquals(c1, c2);
-  Expect.identical(c1.t, c0);
-  Expect.notEquals(C, Fun);
-  Expect.identical(Fun, Fun);
-  Expect.identical(Fun, c2);
-  Expect.identical(c3.t, c2);
-}
diff --git a/tests/language/first_class_types_lib1.dart b/tests/language/first_class_types_lib1.dart
deleted file mode 100644
index baadc66..0000000
--- a/tests/language/first_class_types_lib1.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-library lib1;
-
-class A {}
diff --git a/tests/language/first_class_types_lib2.dart b/tests/language/first_class_types_lib2.dart
deleted file mode 100644
index de943b7..0000000
--- a/tests/language/first_class_types_lib2.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-library lib2;
-
-class A {}
diff --git a/tests/language/first_class_types_libraries_test.dart b/tests/language/first_class_types_libraries_test.dart
deleted file mode 100644
index ad5f552..0000000
--- a/tests/language/first_class_types_libraries_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-library firstClassLibrariestest;
-
-import "package:expect/expect.dart";
-import 'first_class_types_lib1.dart' as lib1;
-import 'first_class_types_lib2.dart' as lib2;
-
-class C<X> {}
-
-sameType(a, b) {
-  Expect.equals(a.runtimeType, b.runtimeType);
-}
-
-differentType(a, b) {
-  Expect.notEquals(a.runtimeType, b.runtimeType);
-}
-
-main() {
-  sameType(new lib1.A(), new lib1.A());
-  differentType(new lib1.A(), new lib2.A());
-  differentType(new C<lib1.A>(), new C<lib2.A>());
-}
diff --git a/tests/language/first_class_types_literals_test.dart b/tests/language/first_class_types_literals_test.dart
deleted file mode 100644
index 0375245..0000000
--- a/tests/language/first_class_types_literals_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// 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";
-
-class C<T, U, V> {}
-
-class D {}
-
-typedef int Foo(bool b);
-
-sameType(a, b) {
-  Expect.equals(a.runtimeType, b.runtimeType);
-}
-
-main() {
-  void foo(a) {}
-
-  // Test that literals can be used in different contexts.
-  [int];
-  ([int]);
-  foo([int]);
-  [int].length;
-  ({1: int});
-  foo({1: int});
-  ({1: int}).keys;
-
-  // Test type literals.
-  Expect.equals(int, int);
-  Expect.notEquals(int, num);
-  Expect.equals(Foo, Foo);
-  Expect.equals(dynamic, dynamic);
-
-  // Test that class literals return instances of Type.
-  Expect.isTrue((D).runtimeType is Type);
-  Expect.isTrue((dynamic).runtimeType is Type);
-
-  // Test that types from runtimeType and literals agree.
-  Expect.equals(int, 1.runtimeType);
-  Expect.equals(String, 'hest'.runtimeType);
-  Expect.equals(double, (0.5).runtimeType);
-  Expect.equals(bool, true.runtimeType);
-  Expect.equals(C, new C().runtimeType); // //# 01: ok
-  Expect.equals(D, new D().runtimeType); // //# 02: ok
-
-  // runtimeType on type is idempotent.
-  Expect.equals((D).runtimeType, (D).runtimeType.runtimeType);
-
-  // Test that operator calls on class literals go to Type.
-  Expect.throws(() => C = 1, (e) => e is NoSuchMethodError); //# 03: static type warning
-  Expect.throws(() => C++, (e) => e is NoSuchMethodError); //# 04: static type warning
-  Expect.throws(() => C + 1, (e) => e is NoSuchMethodError); //# 05: static type warning
-  Expect.throws(() => C[2], (e) => e is NoSuchMethodError); //# 06: static type warning
-  Expect.throws(() => C[2] = 'hest', (e) => e is NoSuchMethodError); //# 07: static type warning
-  Expect.throws(() => dynamic = 1, (e) => e is NoSuchMethodError); //# 08: static type warning
-  Expect.throws(() => dynamic++, (e) => e is NoSuchMethodError); //# 09: static type warning
-  Expect.throws(() => dynamic + 1, (e) => e is NoSuchMethodError); //# 10: static type warning
-  Expect.throws(() => dynamic[2], (e) => e is NoSuchMethodError); //# 11: static type warning
-  Expect.throws(() => dynamic[2] = 'hest', (e) => e is NoSuchMethodError); //# 12: static type warning
-
-  Expect.equals((dynamic).toString(), 'dynamic');
-}
diff --git a/tests/language/first_class_types_test.dart b/tests/language/first_class_types_test.dart
deleted file mode 100644
index 6b65f5a..0000000
--- a/tests/language/first_class_types_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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";
-
-class C<T> {}
-
-sameType(a, b) {
-  Expect.equals(a.runtimeType, b.runtimeType);
-}
-
-differentType(a, b) {
-  Expect.isFalse(a.runtimeType == b.runtimeType);
-}
-
-main() {
-  // Test types obtained by calling runtimeType.
-  var v1 = new C<int>();
-  var v2 = new C<int>();
-  sameType(v1, v2);
-
-  var v3 = new C<num>();
-  differentType(v1, v3);
-
-  var i = 1;
-  var s = 'string';
-  var d = 3.14;
-  var b = true;
-  sameType(2, i);
-  sameType('hest', s);
-  sameType(1.2, d);
-  sameType(false, b);
-
-  var l = [1, 2, 3];
-  var m = {'a': 1, 'b': 2};
-  sameType([], l);
-  sameType({}, m);
-
-  // Test parameterized lists.
-  sameType(new List<int>(), new List<int>());
-  differentType(new List<int>(), new List<num>());
-  differentType(new List<int>(), new List());
-}
diff --git a/tests/language/first_test.dart b/tests/language/first_test.dart
deleted file mode 100644
index 783dd2e..0000000
--- a/tests/language/first_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-// First dart test program.
-
-class FirstTest {
-  static testMain() {
-    return 42;
-  }
-}
-
-main() {
-  FirstTest.testMain();
-}
diff --git a/tests/language/fixed_length_test.dart b/tests/language/fixed_length_test.dart
deleted file mode 100644
index 97a93f0..0000000
--- a/tests/language/fixed_length_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Regression test for https://code.google.com/p/dart/issues/detail?id=7994.
-
-void main() {
-  Expect.equals(-1, foo());
-}
-
-int foo() {
-  var list = new List<int>(1024);
-
-  for (int i = 0; i < list.length; i++) list[i] = -i;
-
-  for (int n = list.length; n > 1; n--) {
-    for (int i = 0; i < n - 1; i++) {
-      if (list[i] > list[i + 1]) {
-        return list[i + 1];
-      }
-    }
-  }
-}
diff --git a/tests/language/fixed_type_variable2_test.dart b/tests/language/fixed_type_variable2_test.dart
deleted file mode 100644
index 73e211c0..0000000
--- a/tests/language/fixed_type_variable2_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that type variables are passed on from subtypes that fixed the type
-// variable in inheritance.
-
-import 'package:expect/expect.dart';
-
-class A<T> {
-  B<T> createB() => new B<T>();
-}
-
-class NumA extends A<num> {}
-
-class B<T> {
-  T value;
-
-  void test(var o, bool expect) {
-    Expect.equals(expect, o is T);
-  }
-}
-
-class StringB extends B<String> {}
-
-class C<T> extends A<T> {}
-
-class IntC extends C<int> {}
-
-void main() {
-  testA(); //# 01: ok
-  testNumA(); //# 02: ok
-  testB(); //# 03: ok
-  testStringB(); //# 04: ok
-  testC(); //# 05: ok
-  testIntC(); //# 06: ok
-}
-
-void testA() {
-  var instanceA = new A<String>();
-  var instanceB = instanceA.createB();
-  instanceB.test(0.5, false);
-  instanceB.test(0, false);
-  instanceB.test('', true);
-}
-
-void testNumA() {
-  var instanceA = new NumA();
-  var instanceB = instanceA.createB();
-  instanceB.test(0.5, true);
-  instanceB.test(0, true);
-  instanceB.test('', false);
-}
-
-void testB() {
-  var instanceB = new B<int>();
-  instanceB.test(0.5, false);
-  instanceB.test(0, true);
-  instanceB.test('', false);
-}
-
-void testStringB() {
-  var instanceB = new StringB();
-  instanceB.test(0.5, false);
-  instanceB.test(0, false);
-  instanceB.test('', true);
-}
-
-void testC() {
-  var instanceA = new C<String>();
-  var instanceB = instanceA.createB();
-  instanceB.test(0.5, false);
-  instanceB.test(0, false);
-  instanceB.test('', true);
-}
-
-void testIntC() {
-  var instanceA = new IntC();
-  var instanceB = instanceA.createB();
-  instanceB.test(0.5, false);
-  instanceB.test(0, true);
-  instanceB.test('', false);
-}
diff --git a/tests/language/fixed_type_variable_test.dart b/tests/language/fixed_type_variable_test.dart
deleted file mode 100644
index cbe9e2b..0000000
--- a/tests/language/fixed_type_variable_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that type variables are passed on from subtypes that fixed the type
-// variable in inheritance.
-
-import 'package:expect/expect.dart';
-
-class A<T> {
-  B<T> createB() => new B<T>();
-}
-
-class NumA extends A<num> {}
-
-class B<T> {
-  T value;
-
-  void test(var type, bool expect) {
-    Expect.equals(expect, T == type);
-  }
-}
-
-class StringB extends B<String> {}
-
-class C<T> extends A<T> {}
-
-class IntC extends C<int> {}
-
-void main() {
-  testA(); //# 01: ok
-  testNumA(); //# 02: ok
-  testB(); //# 03: ok
-  testStringB(); //# 04: ok
-  testC(); //# 05: ok
-  testIntC(); //# 06: ok
-}
-
-void testA() {
-  var instanceA = new A<String>();
-  var instanceB = instanceA.createB();
-  instanceB.test(num, false);
-  instanceB.test(int, false);
-  instanceB.test(String, true);
-}
-
-void testNumA() {
-  var instanceA = new NumA();
-  var instanceB = instanceA.createB();
-  instanceB.test(num, true);
-  instanceB.test(int, false);
-  instanceB.test(String, false);
-}
-
-void testB() {
-  var instanceB = new B<int>();
-  instanceB.test(num, false);
-  instanceB.test(int, true);
-  instanceB.test(String, false);
-}
-
-void testStringB() {
-  var instanceB = new StringB();
-  instanceB.test(num, false);
-  instanceB.test(int, false);
-  instanceB.test(String, true);
-}
-
-void testC() {
-  var instanceA = new C<String>();
-  var instanceB = instanceA.createB();
-  instanceB.test(num, false);
-  instanceB.test(int, false);
-  instanceB.test(String, true);
-}
-
-void testIntC() {
-  var instanceA = new IntC();
-  var instanceB = instanceA.createB();
-  instanceB.test(num, false);
-  instanceB.test(int, true);
-  instanceB.test(String, false);
-}
diff --git a/tests/language/flatten_test.dart b/tests/language/flatten_test.dart
deleted file mode 100644
index 2ff13e9..0000000
--- a/tests/language/flatten_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2015, 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:async';
-
-class Derived<T> implements Future<T> {
-  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-class FixedPoint<T> implements Future<FixedPoint<T>> {
-  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-class Divergent<T> implements Future<Divergent<Divergent<T>>> {
-  noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation);
-}
-
-test() async {
-  // flatten(Derived<int>) = int
-  int x = await new Derived<int>(); //# 01: runtime error
-  Future<int> f() async => new Derived<int>(); //# 02: ok
-  Future<int> f() async { return new Derived<int>(); } //# 03: ok
-  Future<int> x = (() async => new Derived<int>())(); //# 04: runtime error
-
-  // flatten(FixedPoint<int>) = FixedPoint<int>
-  FixedPoint<int> x = await new FixedPoint<int>(); //# 05: runtime error
-  Future<FixedPoint<int>> f() async => new FixedPoint<int>(); //# 06: ok
-  Future<FixedPoint<int>> f() async { return new FixedPoint<int>(); } //# 07: ok
-  Future<FixedPoint<int>> x = (() async => new FixedPoint<int>())(); //# 08: runtime error
-
-  // flatten(Divergent<int>) = Divergent<Divergent<int>>
-  Divergent<Divergent<int>> x = await new Divergent<int>(); //# 09: runtime error
-  Future<Divergent<Divergent<int>>> f() async => new Divergent<int>(); //# 10: ok
-  Future<Divergent<Divergent<int>>> f() async { return new Divergent<int>(); } //# 11: ok
-  Future<Divergent<Divergent<int>>> x = (() async => new Divergent<int>())(); //# 12: runtime error
-}
-
-main() {
-  test();
-}
diff --git a/tests/language/for2_test.dart b/tests/language/for2_test.dart
deleted file mode 100644
index 52686e2..0000000
--- a/tests/language/for2_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing for statement which captures loop variable.
-
-import "package:expect/expect.dart";
-
-var f;
-
-main() {
-  // Capture the loop variable, ensure we capture the right value.
-  for (int i = 0; i < 10; i++) {
-    if (i == 7) {
-      f = () => "i = $i";
-    }
-  }
-  Expect.equals("i = 7", f());
-
-  // There is only one instance of k. The captured variable continues
-  // to change.
-  int k;
-  for (k = 0; k < 10; k++) {
-    if (k == 7) {
-      f = () => "k = $k";
-    }
-  }
-  Expect.equals("k = 10", f());
-
-  // l gets modified after it's captured. n++ is executed on the
-  // newly introduced instance of n (i.e. the instance of the loop
-  // iteration after the value is captured).
-  for (int n = 0; n < 10; n++) {
-    var l = n;
-    if (l == 7) {
-      f = () => "l = $l, n = $n";
-    }
-    l++;
-  }
-  Expect.equals("l = 8, n = 7", f());
-
-  // Loop variable is incremented in loop body instead of the increment.
-  // expression. Thus, the captured value is incremented by one before
-  // a new loop variable instance is created.
-  for (int i = 0; i < 10; /*nothing*/) {
-    if (i == 7) {
-      f = () => "i = $i";
-    }
-    i++;
-  }
-  Expect.equals("i = 8", f());
-
-  // Make sure continue still ensures the loop variable is captured correctly.
-  for (int i = 0; i < 10; i++) {
-    if (i == 7) {
-      f = () => "i = $i";
-    }
-    continue;
-    i++;
-  }
-  Expect.equals("i = 7", f());
-
-  // Nested loops with captured variables.
-  for (int k = 0; k < 5; k++) {
-    for (int i = 0; i < 10; i++) {
-      if (k == 3 && i == 7) {
-        f = () => "k = $k, i = $i";
-      }
-    }
-  }
-  Expect.equals("k = 3, i = 7", f());
-}
diff --git a/tests/language/for_in2_test.dart b/tests/language/for_in2_test.dart
deleted file mode 100644
index bf3e26a..0000000
--- a/tests/language/for_in2_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that using a field or a global variable for a for/in variable
-// works.
-
-import "package:expect/expect.dart";
-
-Set<int> set = new Set.from([1, 2]);
-var x;
-
-class A {
-  var field;
-  test() {
-    int count = 0;
-    for (field in set) {
-      count += field;
-    }
-    Expect.equals(3, count);
-
-    count = 0;
-    for (x in set) {
-      count += x;
-    }
-    Expect.equals(3, count);
-  }
-}
-
-void main() {
-  new A().test();
-}
diff --git a/tests/language/for_in3_test.dart b/tests/language/for_in3_test.dart
deleted file mode 100644
index 75ee485..0000000
--- a/tests/language/for_in3_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-// Dart test for testing that strings aren't iterable.
-
-main() {
-  Expect.throws(() {
-    var chars = [];
-    for (var c in "foo") chars.add(c);
-  }, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/for_in_side_effects_test.dart b/tests/language/for_in_side_effects_test.dart
deleted file mode 100644
index e0dfd4b..0000000
--- a/tests/language/for_in_side_effects_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not see side effects of
-// iterator calls made in a "for in".
-
-import "package:expect/expect.dart";
-
-var global = 42;
-var array = [new A()];
-
-class A {
-  get iterator {
-    global = 54;
-    return this;
-  }
-
-  moveNext() => false;
-
-  bar(a) {
-    for (var a in this) {}
-  }
-}
-
-main() {
-  array[0].bar(global);
-  Expect.equals(54, global);
-}
diff --git a/tests/language/for_in_test.dart b/tests/language/for_in_test.dart
deleted file mode 100644
index 6090dc3..0000000
--- a/tests/language/for_in_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test for testing for in on a list literal.
-
-class ForInTest {
-  static testMain() {
-    testSimple();
-    testGenericSyntax1();
-    testGenericSyntax2();
-    testGenericSyntax3();
-    testGenericSyntax4();
-  }
-
-  static void testSimple() {
-    var list = [1, 3, 5];
-    var sum = 0;
-    for (var i in list) {
-      sum += i;
-    }
-    Expect.equals(9, sum);
-  }
-
-  static void testGenericSyntax1() {
-    List<List<String>> aCollection = [];
-    for (List<String> strArrArr in aCollection) {}
-  }
-
-  static void testGenericSyntax2() {
-    List<List<String>> aCollection = [];
-    List<String> strArrArr;
-    for (strArrArr in aCollection) {}
-  }
-
-  static void testGenericSyntax3() {
-    List<List<List<String>>> aCollection = [];
-    for (List<List<String>> strArrArr in aCollection) {}
-  }
-
-  static void testGenericSyntax4() {
-    List<List<List<String>>> aCollection = [];
-    List<List<String>> strArrArr;
-    for (strArrArr in aCollection) {}
-  }
-}
-
-main() {
-  ForInTest.testMain();
-}
diff --git a/tests/language/for_inlining_test.dart b/tests/language/for_inlining_test.dart
deleted file mode 100644
index 6615c1e..0000000
--- a/tests/language/for_inlining_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to emit an invalid JS
-// variable declaration initializer in a for initializer.
-
-import "package:expect/expect.dart";
-
-var global;
-
-inlineMe() {
-  global = 42;
-  return 54;
-}
-
-main() {
-  for (var t = inlineMe(); t < 42; t++) {}
-  Expect.equals(42, global);
-}
diff --git a/tests/language/for_test.dart b/tests/language/for_test.dart
deleted file mode 100644
index ef52832..0000000
--- a/tests/language/for_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing for statement.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int f1() {
-    for (;;) return 1;
-  }
-
-  static int f2(var n) {
-    int i = 0;
-    for (; i < n; i++);
-    return i;
-  }
-
-  static int f3(int n) {
-    int i = 0;
-    for (int j = 0; j < n; j++) i = i + j + 1;
-    return i;
-  }
-
-  static int f4(n) {
-    int i = 0;
-    for (bool stop = false; (i < n) && !stop; i++) {
-      if (i >= 5) {
-        stop = true;
-      }
-    }
-    return i;
-  }
-
-  static var status;
-  static void f5() {
-    status = 0;
-    for (var stop = false;;) {
-      if (stop) {
-        break;
-      } else {
-        stop = true;
-        continue;
-      }
-    }
-    status = 1;
-  }
-
-  static int f6() {
-    // Verify that side effects in the condition are visible after the loop.
-    int i = 0;
-    for (; ++i < 3;) {}
-    return i;
-  }
-}
-
-class ForTest {
-  static testMain() {
-    Expect.equals(1, Helper.f1());
-    Expect.equals(0, Helper.f2(-1));
-    Expect.equals(0, Helper.f2(0));
-    Expect.equals(10, Helper.f2(10));
-    Expect.equals(0, Helper.f3(-1));
-    Expect.equals(0, Helper.f3(0));
-    Expect.equals(1, Helper.f3(1));
-    Expect.equals(3, Helper.f3(2));
-    Expect.equals(6, Helper.f3(3));
-    Expect.equals(10, Helper.f3(4));
-    Expect.equals(0, Helper.f4(-1));
-    Expect.equals(0, Helper.f4(0));
-    Expect.equals(1, Helper.f4(1));
-    Expect.equals(6, Helper.f4(6));
-    Expect.equals(6, Helper.f4(10));
-
-    Helper.f5();
-    Expect.equals(1, Helper.status);
-
-    Expect.equals(3, Helper.f6());
-  }
-}
-
-main() {
-  ForTest.testMain();
-}
diff --git a/tests/language/for_variable_capture_test.dart b/tests/language/for_variable_capture_test.dart
deleted file mode 100644
index 97a0626..0000000
--- a/tests/language/for_variable_capture_test.dart
+++ /dev/null
@@ -1,302 +0,0 @@
-// Copyright (c) 2014, 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";
-
-run(callback) => callback();
-
-initializer() {
-  var closure;
-  for (var i = 0, fn = () => i; i < 3; i++) {
-    i += 1;
-    closure = fn;
-  }
-  Expect.equals(1, closure());
-}
-
-condition() {
-  var closures = [];
-  check(callback) {
-    closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0; check(() => ++i) < 8; ++i) {
-    values.add(i);
-  }
-  Expect.listEquals([1, 3, 5, 7], values);
-  Expect.listEquals([2, 4, 6, 8, 10], closures.map(run).toList());
-}
-
-body() {
-  var closures = [];
-  for (var i = 0, j = 0; i < 3; i++) {
-    j++;
-    closures.add(() => i);
-    closures.add(() => j);
-  }
-  Expect.listEquals([0, 1, 1, 2, 2, 3], closures.map(run).toList());
-}
-
-update() {
-  var closures = [];
-  check(callback) {
-    closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0; i < 4; check(() => ++i)) {
-    values.add(i);
-  }
-  Expect.listEquals([0, 1, 2, 3], values);
-  Expect.listEquals([2, 3, 4, 5], closures.map(run).toList());
-}
-
-initializer_condition() {
-  var values = [];
-  for (var i = 0, fn = () => i; run(() => ++i) < 3;) {
-    values.add(i);
-    values.add(fn());
-  }
-  Expect.listEquals([1, 1, 2, 1], values);
-}
-
-initializer_update() {
-  var update_closures = [];
-  update(callback) {
-    update_closures.add(callback);
-    return callback();
-  }
-
-  var init_closure;
-  for (var i = 0, fn = () => i; i < 4; update(() => ++i)) {
-    init_closure = fn;
-    if (i == 0) {
-      ++i; // Mutate copy of 'i' from first iteration.
-    }
-  }
-  Expect.equals(1, init_closure());
-  Expect.listEquals([3, 4, 5], update_closures.map(run).toList());
-  Expect.equals(1, init_closure());
-}
-
-initializer_body() {
-  var closures = [];
-  for (var i = 0, fn = () => i; i < 3; i++) {
-    closures.add(() => i);
-    closures.add(fn);
-    fn = () => i;
-  }
-  Expect.listEquals([0, 0, 1, 0, 2, 1], closures.map(run).toList());
-}
-
-condition_update() {
-  var cond_closures = [];
-  check(callback) {
-    cond_closures.add(callback);
-    return callback();
-  }
-
-  var update_closures = [];
-  update(callback) {
-    update_closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0; check(() => i) < 4; update(() => ++i)) {
-    values.add(i);
-  }
-  Expect.listEquals([0, 1, 2, 3], values);
-
-  Expect.listEquals([0, 1, 2, 3, 4], cond_closures.map(run).toList());
-  Expect.listEquals([2, 3, 4, 5], update_closures.map(run).toList());
-  Expect.listEquals([0, 2, 3, 4, 5], cond_closures.map(run).toList());
-}
-
-condition_body() {
-  var cond_closures = [];
-  check(callback) {
-    cond_closures.add(callback);
-    return callback();
-  }
-
-  var body_closures = [];
-  do_body(callback) {
-    body_closures.add(callback);
-    return callback();
-  }
-
-  for (var i = 0; check(() => i) < 4; ++i) {
-    do_body(() => i);
-  }
-  Expect.listEquals([0, 1, 2, 3, 4], cond_closures.map(run).toList());
-  Expect.listEquals([0, 1, 2, 3], body_closures.map(run).toList());
-}
-
-initializer_condition_update() {
-  var init;
-  var cond_closures = [];
-  check(callback) {
-    cond_closures.add(callback);
-    return callback();
-  }
-
-  var update_closures = [];
-  update(callback) {
-    update_closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0, fn = () => i; check(() => ++i) < 8; update(() => ++i)) {
-    init = fn;
-    values.add(i);
-  }
-  Expect.listEquals([1, 3, 5, 7], values);
-  Expect.equals(1, init());
-
-  Expect.listEquals([2, 4, 6, 8, 10], cond_closures.map(run).toList());
-  Expect.listEquals([5, 7, 9, 11], update_closures.map(run).toList());
-}
-
-initializer_condition_body() {
-  var init;
-  var cond_closures = [];
-  check(callback) {
-    cond_closures.add(callback);
-    return callback();
-  }
-
-  var body_closures = [];
-  do_body(callback) {
-    body_closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0, fn = () => i; check(() => ++i) < 8;) {
-    init = fn;
-    do_body(() => ++i);
-    values.add(i);
-  }
-  Expect.listEquals([2, 4, 6, 8], values);
-  Expect.equals(2, init());
-
-  Expect.listEquals([3, 5, 7, 9, 10], cond_closures.map(run).toList());
-  Expect.listEquals([4, 6, 8, 10], body_closures.map(run).toList());
-}
-
-initializer_update_body() {
-  var init;
-  var update_closures = [];
-  update(callback) {
-    update_closures.add(callback);
-    return callback();
-  }
-
-  var body_closures = [];
-  do_body(callback) {
-    body_closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0, fn = () => i; i < 8; update(() => ++i)) {
-    init = fn;
-    do_body(() => ++i);
-    values.add(i);
-  }
-  Expect.listEquals([1, 3, 5, 7], values);
-  Expect.equals(1, init());
-
-  Expect.listEquals([4, 6, 8, 9], update_closures.map(run).toList());
-  Expect.listEquals([2, 5, 7, 9], body_closures.map(run).toList());
-}
-
-condition_update_body() {
-  var cond_closures = [];
-  check(callback) {
-    cond_closures.add(callback);
-    return callback();
-  }
-
-  var update_closures = [];
-  update(callback) {
-    update_closures.add(callback);
-    return callback();
-  }
-
-  var body_closures = [];
-  do_body(callback) {
-    body_closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0; check(() => i) < 8; update(() => ++i)) {
-    do_body(() => ++i);
-    values.add(i);
-  }
-  Expect.listEquals([1, 3, 5, 7], values);
-
-  Expect.listEquals([1, 3, 5, 7, 8], cond_closures.map(run).toList());
-  Expect.listEquals([4, 6, 8, 9], update_closures.map(run).toList());
-  Expect.listEquals([2, 5, 7, 9], body_closures.map(run).toList());
-  Expect.listEquals([2, 5, 7, 9, 9], cond_closures.map(run).toList());
-}
-
-initializer_condition_update_body() {
-  var init;
-  var cond_closures = [];
-  check(callback) {
-    cond_closures.add(callback);
-    return callback();
-  }
-
-  var update_closures = [];
-  update(callback) {
-    update_closures.add(callback);
-    return callback();
-  }
-
-  var body_closures = [];
-  do_body(callback) {
-    body_closures.add(callback);
-    return callback();
-  }
-
-  var values = [];
-  for (var i = 0, fn = () => i; check(() => i) < 8; update(() => ++i)) {
-    init = fn;
-    do_body(() => ++i);
-    values.add(i);
-  }
-  Expect.listEquals([1, 3, 5, 7], values);
-  Expect.equals(1, init());
-
-  Expect.listEquals([1, 3, 5, 7, 8], cond_closures.map(run).toList());
-  Expect.listEquals([4, 6, 8, 9], update_closures.map(run).toList());
-  Expect.listEquals([2, 5, 7, 9], body_closures.map(run).toList());
-  Expect.listEquals([2, 5, 7, 9, 9], cond_closures.map(run).toList());
-}
-
-main() {
-  initializer();
-  condition();
-  update();
-  body();
-  initializer_condition();
-  initializer_update();
-  initializer_body();
-  condition_update();
-  condition_body();
-  initializer_condition_update();
-  initializer_condition_body();
-  initializer_update_body();
-  condition_update_body();
-  initializer_condition_update_body();
-}
diff --git a/tests/language/for_without_condition_test.dart b/tests/language/for_without_condition_test.dart
deleted file mode 100644
index b63739d..0000000
--- a/tests/language/for_without_condition_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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";
-
-main() {
-  int i = 0;
-  for (;; i++) {
-    if (i == 0) break;
-    Expect.fail("Should not enter here");
-  }
-  Expect.equals(0, i);
-}
diff --git a/tests/language/forwarding_factory_constructor_default_values_test.dart b/tests/language/forwarding_factory_constructor_default_values_test.dart
deleted file mode 100644
index 70738fe..0000000
--- a/tests/language/forwarding_factory_constructor_default_values_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for dart2js bug 18257: Properly infer types for forwarding
-// factory constructors with optional parameters with default values.
-
-main() {
-  A a = new A.a1();
-  a.test();
-}
-
-class A {
-  final bool condition;
-
-  A({this.condition: true});
-
-  factory A.a1({condition}) = _A1.boo;
-
-  test() {
-    if (condition != true) {
-      throw "FAILED";
-    }
-  }
-}
-
-class _A1 extends A {
-  _A1.boo({condition: true}) : super(condition: condition);
-}
diff --git a/tests/language/full_stacktrace1_test.dart b/tests/language/full_stacktrace1_test.dart
deleted file mode 100644
index ca213e2..0000000
--- a/tests/language/full_stacktrace1_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// (c) 2013, 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";
-
-void func1() {
-  throw new Exception("Test full stacktrace");
-}
-
-void func2() {
-  func1();
-}
-
-void func3() {
-  try {
-    func2();
-  } on Object catch (e, s) {
-    var fullTrace = s.toString();
-    print(fullTrace);
-    Expect.isTrue(fullTrace.contains("func1"));
-    Expect.isTrue(fullTrace.contains("func2"));
-    Expect.isTrue(fullTrace.contains("func3"));
-    Expect.isTrue(fullTrace.contains("func4"));
-    Expect.isTrue(fullTrace.contains("func5"));
-    Expect.isTrue(fullTrace.contains("func6"));
-    Expect.isTrue(fullTrace.contains("main"));
-  }
-}
-
-int func4() {
-  func3();
-  return 1;
-}
-
-int func5() {
-  func4();
-  return 1;
-}
-
-int func6() {
-  func5();
-  return 1;
-}
-
-main() {
-  var i = func6();
-  Expect.equals(1, i);
-}
diff --git a/tests/language/full_stacktrace2_test.dart b/tests/language/full_stacktrace2_test.dart
deleted file mode 100644
index cad00f2..0000000
--- a/tests/language/full_stacktrace2_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// (c) 2013, 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";
-
-void func1() {
-  throw new Exception("Test full stacktrace");
-}
-
-void func2() {
-  func1();
-}
-
-void func3() {
-  try {
-    func2();
-  } on Object catch (e, s) {
-    var fullTrace = s.toString();
-    print(fullTrace);
-    Expect.isTrue(fullTrace.contains("func1"));
-    Expect.isTrue(fullTrace.contains("func2"));
-    Expect.isTrue(fullTrace.contains("func3"));
-    Expect.isTrue(fullTrace.contains("func4"));
-    Expect.isTrue(fullTrace.contains("func5"));
-    Expect.isTrue(fullTrace.contains("func6"));
-    Expect.isTrue(fullTrace.contains("func7"));
-    Expect.isTrue(fullTrace.contains("main"));
-
-    rethrow; // This is a rethrow.
-  }
-}
-
-int func4() {
-  func3();
-  return 1;
-}
-
-int func5() {
-  try {
-    func4();
-  } on Object catch (e, s) {
-    var fullTrace = s.toString();
-    print(fullTrace);
-    Expect.isTrue(fullTrace.contains("func1"));
-    Expect.isTrue(fullTrace.contains("func2"));
-    Expect.isTrue(fullTrace.contains("func3"));
-    Expect.isTrue(fullTrace.contains("func4"));
-    Expect.isTrue(fullTrace.contains("func5"));
-    Expect.isTrue(fullTrace.contains("func6"));
-    Expect.isTrue(fullTrace.contains("func7"));
-    Expect.isTrue(fullTrace.contains("main"));
-  }
-  return 1;
-}
-
-int func6() {
-  func5();
-  return 1;
-}
-
-int func7() {
-  func6();
-  return 1;
-}
-
-main() {
-  var i = func7();
-  Expect.equals(1, i);
-}
diff --git a/tests/language/full_stacktrace3_test.dart b/tests/language/full_stacktrace3_test.dart
deleted file mode 100644
index 81a4ed0..0000000
--- a/tests/language/full_stacktrace3_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// (c) 2013, 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";
-
-void func1() {
-  throw new Exception("Test full stacktrace");
-}
-
-void func2() {
-  func1();
-}
-
-void func3() {
-  try {
-    func2();
-  } on Object catch (e, s) {
-    var fullTrace = s.toString();
-    print(fullTrace);
-    Expect.isTrue(fullTrace.contains("func1"));
-    Expect.isTrue(fullTrace.contains("func2"));
-    Expect.isTrue(fullTrace.contains("func3"));
-    Expect.isTrue(fullTrace.contains("func4"));
-    Expect.isTrue(fullTrace.contains("func5"));
-    Expect.isTrue(fullTrace.contains("func6"));
-    Expect.isTrue(fullTrace.contains("func7"));
-    Expect.isTrue(fullTrace.contains("main"));
-    throw new Exception("This is not a rethrow");
-  }
-}
-
-int func4() {
-  func3();
-  return 1;
-}
-
-int func5() {
-  try {
-    func4();
-  } on Object catch (e, s) {
-    var fullTrace = s.toString();
-    print(fullTrace);
-    Expect.isFalse(fullTrace.contains("func1"));
-    Expect.isFalse(fullTrace.contains("func2"));
-    Expect.isTrue(fullTrace.contains("func3"));
-    Expect.isTrue(fullTrace.contains("func4"));
-    Expect.isTrue(fullTrace.contains("func5"));
-    Expect.isTrue(fullTrace.contains("func6"));
-    Expect.isTrue(fullTrace.contains("func7"));
-    Expect.isTrue(fullTrace.contains("main"));
-  }
-  return 1;
-}
-
-int func6() {
-  func5();
-  return 1;
-}
-
-int func7() {
-  func6();
-  return 1;
-}
-
-main() {
-  var i = func7();
-  Expect.equals(1, i);
-}
diff --git a/tests/language/function_argument_test.dart b/tests/language/function_argument_test.dart
deleted file mode 100644
index f56861a..0000000
--- a/tests/language/function_argument_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for function passing.
-
-import "package:expect/expect.dart";
-
-class FunctionArgumentTest {
-  static testMe(Function f) {
-    return f();
-  }
-
-  static void testMain() {
-    Expect.equals(42, testMe(() {
-      return 42;
-    }));
-  }
-}
-
-main() {
-  FunctionArgumentTest.testMain();
-}
diff --git a/tests/language/function_field_test.dart b/tests/language/function_field_test.dart
deleted file mode 100644
index 60f699e..0000000
--- a/tests/language/function_field_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Test of calling Function, which is field of some class.
-
-import "package:expect/expect.dart";
-
-class Wrapper {
-  Function f;
-}
-
-main() {
-  Wrapper w = new Wrapper();
-  w.f = () {
-    return 42;
-  };
-  Expect.equals(42, w.f());
-}
diff --git a/tests/language/function_getter_test.dart b/tests/language/function_getter_test.dart
deleted file mode 100644
index efc483e..0000000
--- a/tests/language/function_getter_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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";
-
-class A {
-  a() => 42;
-}
-
-main() {
-  Expect.equals(new A().a(), (new A().a)());
-}
diff --git a/tests/language/function_literals2_test.dart b/tests/language/function_literals2_test.dart
deleted file mode 100644
index 451a0a0..0000000
--- a/tests/language/function_literals2_test.dart
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Dart test for new function type alias.
-
-import "package:expect/expect.dart";
-
-class FunctionLiteralsTest {
-  static void testMain() {
-    f(x) {
-      return x * 2;
-    }
-
-    f(42); // make sure it is parsed as a function call
-    Expect.equals(20, f(10));
-
-    int g(x) {
-      return x * 2;
-    }
-
-    g(42); // make sure it is parsed as a function call
-    Expect.equals(20, g(10));
-
-    h(x) {
-      return x * 2;
-    }
-
-    h(42); // make sure it is parsed as a function call
-    Expect.equals(20, h(10));
-
-    var a = (x) {
-      return x + 2;
-    };
-    Expect.equals(7, a(5));
-
-    Expect.equals(
-        10,
-        apply((k) {
-          return k << 1;
-        }, 5));
-    Expect.equals(20, apply((k) => k << 1, 10));
-
-    a = new A(3);
-    Expect.equals(-1, a.f);
-    Expect.equals(-3, a.f2);
-
-    a = new A.n(5);
-    Expect.equals(-2, a.f);
-    Expect.equals(2, a.f2);
-
-    Expect.equals(true, isOdd(5));
-    Expect.equals(false, isOdd(8));
-
-    var b = new B(10);
-    Expect.equals(10, b.n);
-    Expect.equals(100, (b.f)(10));
-
-    b = new B.withZ(10);
-    Expect.equals(10, b.n);
-    Expect.equals(101, (b.f)(10));
-
-    var c = new C(5);
-    Expect.equals("2*x is 10", c.s);
-
-    int x = 0;
-    int y = 1;
-    // make sure this isn't parsed as a generic type
-    Expect.isTrue(x < y, "foo");
-  }
-}
-
-apply(f, n) {
-  return f(n);
-}
-
-bool isOdd(b) => b % 2 == 1;
-
-class A {
-  int f;
-  int f2;
-  A(p) : f = apply((j) => 2 - j, p) {
-    /* constr. body */
-    f2 = -p;
-  }
-  A.n(p) : f = 1 + apply((j) => 2 - j, p) {
-    /* constr. body */
-    f2 = -f;
-  }
-}
-
-class B {
-  var f;
-  int n;
-  B(z) : f = ((x) => x * x) {
-    n = z;
-  }
-  B.withZ(z)
-      : f = ((x) {
-          return x * x + 1;
-        }) {
-    n = z;
-  }
-}
-
-class C {
-  String s;
-  C(x) : s = "2*x is ${() { return 2*x; }()}";
-}
-
-main() {
-  FunctionLiteralsTest.testMain();
-}
diff --git a/tests/language/function_literals_test.dart b/tests/language/function_literals_test.dart
deleted file mode 100644
index 40dc333..0000000
--- a/tests/language/function_literals_test.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// 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";
-
-/**
- * Test various forms of function literals.
- */
-typedef int IntFunc(int);
-
-class FunctionLiteralsTest {
-  static void checkIntFunction(expected, int f(x), arg) {
-    Expect.equals(expected, f(arg));
-  }
-
-  static void checkIntFuncFunction(expected, IntFunc f(x), arg) {
-    Expect.equals(expected, f(arg)(arg));
-  }
-
-  int func1(int x) => x;
-
-  int func2(x) => x;
-
-  int func3(int x) {
-    return x;
-  }
-
-  int func4(x) {
-    return x;
-  }
-
-  FunctionLiteralsTest() {}
-
-  static void testMain() {
-    var test = new FunctionLiteralsTest();
-    test.testArrow();
-    test.testArrowArrow();
-    test.testArrowBlock();
-    test.testBlock();
-    test.testBlockArrow();
-    test.testBlockBlock();
-    test.testFunctionRef();
-  }
-
-  void testArrow() {
-    checkIntFunction(42, (x) => x, 42);
-    checkIntFunction(42, (int x) => x, 42);
-  }
-
-  void testArrowArrow() {
-    checkIntFuncFunction(84, (x) => (y) => x + y, 42);
-    checkIntFuncFunction(84, (int x) => (y) => x + y, 42);
-    checkIntFuncFunction(84, (x) => (y) => x + y, 42);
-    checkIntFuncFunction(84, (int x) => (y) => x + y, 42);
-  }
-
-  void testArrowBlock() {
-    checkIntFuncFunction(
-        84,
-        (x) => (y) {
-              return x + y;
-            },
-        42);
-    checkIntFuncFunction(
-        84,
-        (int x) => (y) {
-              return x + y;
-            },
-        42);
-  }
-
-  void testBlock() {
-    checkIntFunction(42, (x) {
-      return x;
-    }, 42);
-    checkIntFunction(42, (int x) {
-      return x;
-    }, 42);
-  }
-
-  void testBlockArrow() {
-    checkIntFuncFunction(84, (x) {
-      return (y) => x + y;
-    }, 42);
-    checkIntFuncFunction(84, (int x) {
-      return (y) => x + y;
-    }, 42);
-  }
-
-  void testBlockBlock() {
-    checkIntFuncFunction(84, (x) {
-      return (y) {
-        return x + y;
-      };
-    }, 42);
-    checkIntFuncFunction(84, (int x) {
-      return (y) {
-        return x + y;
-      };
-    }, 42);
-  }
-
-  void testFunctionRef() {
-    checkIntFunction(42, func1, 42);
-    checkIntFunction(42, func2, 42);
-    checkIntFunction(42, func3, 42);
-    checkIntFunction(42, func4, 42);
-  }
-}
-
-main() {
-  FunctionLiteralsTest.testMain();
-}
diff --git a/tests/language/function_malformed_result_type_test.dart b/tests/language/function_malformed_result_type_test.dart
deleted file mode 100644
index 2895975..0000000
--- a/tests/language/function_malformed_result_type_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-
-// Dart test for a function with a malformed result type.
-
-import "package:expect/expect.dart";
-
-class C<T, U> {}
-
-main() {
-  {
-    C<int> f() => null;
-    bool got_type_error = false;
-    try {
-      f();
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // No type error expected, since returned null is not type checked.
-    Expect.isFalse(got_type_error);
-  }
-  {
-    C<int> f() => new C<int, String>();
-    bool got_type_error = false;
-    try {
-      f();
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // Type error not expected in production nor checked mode since C<int>
-    // is handled like C<dynamic,dynamic>.
-    Expect.isFalse(got_type_error);
-  }
-}
diff --git a/tests/language/function_propagation_test.dart b/tests/language/function_propagation_test.dart
deleted file mode 100644
index afb4a1c..0000000
--- a/tests/language/function_propagation_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class A {
-  int call(String str) => 499;
-}
-
-typedef int F(String str);
-
-main() {
-  var a = new A();
-  if (a is Function) {
-    Expect.isTrue(a is A);
-  } else {
-    Expect.fail("a should be a Function");
-  }
-
-  var a2 = new A();
-  if (a2 is F) {
-    Expect.isTrue(a2 is A);
-  } else {
-    Expect.fail("a2 should be an F");
-  }
-
-  Function a3 = new A();
-  // Dart2Js mistakenly assumed that Function and A couldn't be related and
-  // returned false for a is A.
-  Expect.isTrue(a3 is A);
-
-  F a4 = new A();
-  Expect.isTrue(a4 is A);
-}
diff --git a/tests/language/function_subtype0_test.dart b/tests/language/function_subtype0_test.dart
deleted file mode 100644
index 4cc4809..0000000
--- a/tests/language/function_subtype0_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping.
-
-import 'package:expect/expect.dart';
-
-typedef t__();
-typedef void t_void_();
-typedef void t_void_2();
-typedef int t_int_();
-typedef int t_int_2();
-typedef Object t_Object_();
-typedef double t_double_();
-typedef void t_void__int(int i);
-typedef int t_int__int(int i);
-typedef int t_int__int2(int i);
-typedef int t_int__Object(Object o);
-typedef Object t_Object__int(int i);
-typedef int t_int__double(double d);
-typedef int t_int__int_int(int i1, int i2);
-typedef void t_inline_void_(void f());
-typedef void t_inline_void__int(void f(int i));
-
-void _() => null;
-void void_() {}
-void void_2() {}
-int int_() => 0;
-int int_2() => 0;
-Object Object_() => null;
-double double_() => 0.0;
-void void__int(int i) {}
-int int__int(int i) => 0;
-int int__int2(int i) => 0;
-int int__Object(Object o) => 0;
-Object Object__int(int i) => null;
-void void__Object(Object o) => null;
-int int__double(double d) => 0;
-int int__int_int(int i1, int i2) => 0;
-void inline_void_(void f()) {}
-void inline_void__int(void f(int i)) {}
-
-main() {
-  // () -> int <: Function
-  Expect.isTrue(int_ is Function);
-  // () -> dynamic <: () -> dynamic
-  Expect.isTrue(_ is t__);
-  // () -> dynamic <: () -> void
-  Expect.isTrue(_ is t_void_);
-  // () -> void <: () -> dynamic
-  Expect.isTrue(void_ is t__);
-  // () -> int <: () -> void
-  Expect.isTrue(int_ is t_void_);
-  // () -> void <: () -> int
-  Expect.isFalse(void_ is t_int_);
-  // () -> void <: () -> void
-  Expect.isTrue(void_ is t_void_2);
-  // () -> int <: () -> int
-  Expect.isTrue(int_ is t_int_2);
-  // () -> int <: () -> Object
-  Expect.isTrue(int_ is t_Object_);
-  // () -> int <: () -> double
-  Expect.isFalse(int_ is t_double_);
-  // () -> int <: (int) -> void
-  Expect.isFalse(int_ is t_void__int);
-  // () -> void <: (int) -> int
-  Expect.isFalse(void_ is t_int__int);
-  // () -> void <: (int) -> void
-  Expect.isFalse(void_ is t_void__int);
-  // (int) -> int <: (int) -> int
-  Expect.isTrue(int__int is t_int__int2);
-  // (Object) -> int <: (int) -> Object
-  Expect.isTrue(int__Object is t_Object__int);
-  // (int) -> int <: (double) -> int
-  Expect.isFalse(int__int is t_int__double);
-  // () -> int <: (int) -> int
-  Expect.isFalse(int_ is t_int__int);
-  // (int) -> int <: (int,int) -> int
-  Expect.isFalse(int__int is t_int__int_int);
-  // (int,int) -> int <: (int) -> int
-  Expect.isFalse(int__int_int is t_int__int);
-  // (()->void) -> void <: ((int)->void) -> void
-  Expect.isFalse(inline_void_ is t_inline_void__int);
-  // (Object) -> void <: ((int)->void) -> void
-  Expect.isTrue(void__Object is t_inline_void__int);
-  // ((int)->void) -> void <: (()->void) -> void
-  Expect.isFalse(inline_void__int is t_inline_void_);
-}
diff --git a/tests/language/function_subtype1_test.dart b/tests/language/function_subtype1_test.dart
deleted file mode 100644
index 1938ebe..0000000
--- a/tests/language/function_subtype1_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping.
-
-import 'package:expect/expect.dart';
-
-class C<T> {}
-
-typedef _();
-typedef void void_();
-typedef void void_2();
-typedef int int_();
-typedef int int_2();
-typedef Object Object_();
-typedef double double_();
-typedef void void__int(int i);
-typedef void void__Object(Object o);
-typedef int int__int(int i);
-typedef int int__int2(int i);
-typedef int int__Object(Object o);
-typedef Object Object__int(int i);
-typedef int int__double(double d);
-typedef int int__int_int(int i1, int i2);
-typedef void inline_void_(void f());
-typedef void inline_void__int(void f(int i));
-
-main() {
-  // () -> int <: Function
-  Expect.isTrue(new C<int_>() is C<Function>);
-  // Function <: () -> int
-  Expect.isFalse(new C<Function>() is C<int_>);
-  // () -> dynamic <: () -> dynamic
-  Expect.isTrue(new C<_>() is C<_>);
-  // () -> dynamic <: () -> void
-  Expect.isTrue(new C<_>() is C<void_>);
-  // () -> void <: () -> dynamic
-  Expect.isTrue(new C<void_>() is C<_>);
-  // () -> int <: () -> void
-  Expect.isTrue(new C<int_>() is C<void_>);
-  // () -> void <: () -> int
-  Expect.isFalse(new C<void_>() is C<int_>);
-  // () -> void <: () -> void
-  Expect.isTrue(new C<void_>() is C<void_2>);
-  // () -> int <: () -> int
-  Expect.isTrue(new C<int_>() is C<int_2>);
-  // () -> int <: () -> Object
-  Expect.isTrue(new C<int_>() is C<Object_>);
-  // () -> int <: () -> double
-  Expect.isFalse(new C<int_>() is C<double_>);
-  // () -> int <: (int) -> void
-  Expect.isFalse(new C<int_>() is C<void__int>);
-  // () -> void <: (int) -> int
-  Expect.isFalse(new C<void_>() is C<int__int>);
-  // () -> void <: (int) -> void
-  Expect.isFalse(new C<void_>() is C<void__int>);
-  // (int) -> int <: (int) -> int
-  Expect.isTrue(new C<int__int>() is C<int__int2>);
-  // (Object) -> int <: (int) -> Object
-  Expect.isTrue(new C<int__Object>() is C<Object__int>);
-  // (int) -> int <: (double) -> int
-  Expect.isFalse(new C<int__int>() is C<int__double>);
-  // () -> int <: (int) -> int
-  Expect.isFalse(new C<int_>() is C<int__int>);
-  // (int) -> int <: (int,int) -> int
-  Expect.isFalse(new C<int__int>() is C<int__int_int>);
-  // (int,int) -> int <: (int) -> int
-  Expect.isFalse(new C<int__int_int>() is C<int__int>);
-  // (()->void) -> void <: ((int)->void) -> void
-  Expect.isFalse(new C<inline_void_>() is C<inline_void__int>);
-  // (Object) -> void <: ((int)->void) -> void
-  Expect.isTrue(new C<void__Object>() is C<inline_void__int>);
-  // ((int)->void) -> void <: (()->void) -> void
-  Expect.isFalse(new C<inline_void__int>() is C<inline_void_>);
-}
diff --git a/tests/language/function_subtype2_test.dart b/tests/language/function_subtype2_test.dart
deleted file mode 100644
index 01a15f1..0000000
--- a/tests/language/function_subtype2_test.dart
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for optional parameters.
-
-import 'package:expect/expect.dart';
-
-typedef void T1(int a, int b);
-typedef void T2(int a, [int b]);
-typedef void T3([int a, int b]);
-typedef void T4(int a, [int b, int c]);
-typedef void T5([int a, int b, int c]);
-
-class C<T, S, U> {
-  void m1(T a, S b) {}
-  void m2(T a, [S b]) {}
-  void m3([T a, S b]) {}
-  void m4(T a, [S b, U c]) {}
-  void m5([T a, S b, U c]) {}
-}
-
-main() {
-  var c1 = new C<int, int, int>();
-  Expect.isTrue(c1.m1 is T1, "(int,int)->void is (int,int)->void");
-  Expect.isFalse(c1.m1 is T2, "(int,int)->void is not (int,[int])->void");
-  Expect.isFalse(c1.m1 is T3, "(int,int)->void is not ([int,int])->void");
-  Expect.isFalse(c1.m1 is T4, "(int,int)->void is not (int,[int,int])->void");
-  Expect.isFalse(c1.m1 is T5, "(int,int)->void is not ([int,int,int])->void");
-
-  Expect.isTrue(c1.m2 is T1, "(int,[int])->void is (int,int)->void");
-  Expect.isTrue(c1.m2 is T2, "(int,[int])->void is (int,[int])->void");
-  Expect.isFalse(c1.m2 is T3, "(int,[int])->void is not ([int,int])->void");
-  Expect.isFalse(c1.m2 is T4, "(int,[int])->void is not (int,[int,int])->void");
-  Expect.isFalse(c1.m2 is T5, "(int,[int])->void is not ([int,int,int])->void");
-
-  Expect.isTrue(c1.m3 is T1, "([int,int])->void is (int,int)->void");
-  Expect.isTrue(c1.m3 is T2, "([int,int])->void is (int,[int])->void");
-  Expect.isTrue(c1.m3 is T3, "([int,int])->void is ([int,int])->void");
-  Expect.isFalse(c1.m3 is T4, "([int,int])->void is not (int,[int,int])->void");
-  Expect.isFalse(c1.m3 is T5, "([int,int])->void is not ([int,int,int])->void");
-
-  Expect.isTrue(c1.m4 is T1, "(int,[int,int])->void is (int,int)->void");
-  Expect.isTrue(c1.m4 is T2, "(int,[int,int])->void is (int,[int])->void");
-  Expect.isFalse(c1.m4 is T3, "(int,[int,int])->void is not ([int,int])->void");
-  Expect.isTrue(c1.m4 is T4, "(int,[int,int])->void is (int,[int,int])->void");
-  Expect.isFalse(
-      c1.m4 is T5, "(int,[int,int])->void is not ([int,int,int])->void");
-
-  Expect.isTrue(c1.m5 is T1, "([int,int,int])->void is (int,int)->void");
-  Expect.isTrue(c1.m5 is T2, "([int,int,int])->void is (int,[int])->void");
-  Expect.isTrue(c1.m5 is T3, "([int,int,int])->void is ([int,int])->void");
-  Expect.isTrue(c1.m5 is T4, "([int,int,int])->void is (int,[int,int])->void");
-  Expect.isTrue(c1.m5 is T5, "([int,int,int])->void is ([int,int,int])->void");
-
-  var c2 = new C<int, double, int>();
-  Expect.isFalse(c2.m1 is T1, "(int,double)->void is not (int,int)->void");
-  Expect.isFalse(
-      c2.m1 is T2, "(int,double)->void is not not (int,[int])->void");
-  Expect.isFalse(c2.m1 is T3, "(int,double)->void is not ([int,int])->void");
-  Expect.isFalse(
-      c2.m1 is T4, "(int,double)->void is not (int,[int,int])->void");
-  Expect.isFalse(
-      c2.m1 is T5, "(int,double)->void is not ([int,int,int])->void");
-
-  Expect.isFalse(c2.m2 is T1, "(int,[double])->void is not (int,int)->void");
-  Expect.isFalse(c2.m2 is T2, "(int,[double])->void is not (int,[int])->void");
-  Expect.isFalse(c2.m2 is T3, "(int,[double])->void is not ([int,int])->void");
-  Expect.isFalse(
-      c2.m2 is T4, "(int,[double])->void is not (int,[int,int])->void");
-  Expect.isFalse(
-      c2.m2 is T5, "(int,[double])->void is not ([int,int,int])->void");
-
-  Expect.isFalse(c2.m3 is T1, "([int,double])->void is not (int,int)->void");
-  Expect.isFalse(c2.m3 is T2, "([int,double])->void is not (int,[int])->void");
-  Expect.isFalse(c2.m3 is T3, "([int,double])->void is not ([int,int])->void");
-  Expect.isFalse(
-      c2.m3 is T4, "([int,double])->void is not (int,[int,int])->void");
-  Expect.isFalse(
-      c2.m3 is T5, "([int,double])->void is not ([int,int,int])->void");
-
-  Expect.isFalse(
-      c2.m4 is T1, "(int,[double,int])->void is not (int,int)->void");
-  Expect.isFalse(
-      c2.m4 is T2, "(int,[double,int])->void is not (int,[int])->void");
-  Expect.isFalse(
-      c2.m4 is T3, "(int,[double,int])->void is not ([int,int])->void");
-  Expect.isFalse(
-      c2.m4 is T4, "(int,[double,int])->void is (int,[int,int])->void");
-  Expect.isFalse(
-      c2.m4 is T5, "(int,[double,int])->void is ([int,int,int])->void");
-
-  Expect.isFalse(
-      c2.m5 is T1, "([int,double,int])->void is not (int,int)->void");
-  Expect.isFalse(
-      c2.m5 is T2, "([int,double,int])->void is not (int,[int])->void");
-  Expect.isFalse(
-      c2.m5 is T3, "([int,double,int])->void is not ([int,int])->void");
-  Expect.isFalse(
-      c2.m5 is T4, "([int,double,int])->void is (int,[int,int])->void");
-  Expect.isFalse(
-      c2.m5 is T5, "([int,double,int])->void is ([int,int,int])->void");
-
-  var c3 = new C<int, int, double>();
-  Expect.isTrue(c3.m1 is T1, "(int,int)->void is (int,int)->void");
-  Expect.isFalse(c3.m1 is T2, "(int,int)->void is not (int,[int])->void");
-  Expect.isFalse(c3.m1 is T3, "(int,int)->void is not ([int,int])->void");
-  Expect.isFalse(c3.m1 is T4, "(int,int)->void is not (int,[int,int])->void");
-  Expect.isFalse(c3.m1 is T5, "(int,int)->void is not ([int,int,int])->void");
-
-  Expect.isTrue(c3.m2 is T1, "(int,[int])->void is (int,int)->void");
-  Expect.isTrue(c3.m2 is T2, "(int,[int])->void is (int,[int])->void");
-  Expect.isFalse(c3.m2 is T3, "(int,[int])->void is not ([int,int])->void");
-  Expect.isFalse(c3.m2 is T4, "(int,[int])->void is not (int,[int,int])->void");
-  Expect.isFalse(c3.m2 is T5, "(int,[int])->void is not ([int,int,int])->void");
-
-  Expect.isTrue(c3.m3 is T1, "([int,int])->void is (int,int)->void");
-  Expect.isTrue(c3.m3 is T2, "([int,int])->void is (int,[int])->void");
-  Expect.isTrue(c3.m3 is T3, "([int,int])->void is ([int,int])->void");
-  Expect.isFalse(c3.m3 is T4, "([int,int])->void is not (int,[int,int])->void");
-  Expect.isFalse(c3.m3 is T5, "([int,int])->void is not ([int,int,int])->void");
-
-  Expect.isTrue(c3.m4 is T1, "(int,[int,double])->void is (int,int)->void");
-  Expect.isTrue(c3.m4 is T2, "(int,[int,double])->void is (int,[int])->void");
-  Expect.isFalse(
-      c3.m4 is T3, "(int,[int,double])->void is not ([int,int])->void");
-  Expect.isFalse(
-      c3.m4 is T4, "(int,[int,double])->void is (int,[int,int])->void");
-  Expect.isFalse(
-      c3.m4 is T5, "(int,[int,double])->void is ([int,int,int])->void");
-
-  Expect.isTrue(c3.m5 is T1, "([int,int,double])->void is (int,int)->void");
-  Expect.isTrue(c3.m5 is T2, "([int,int,double])->void is (int,[int])->void");
-  Expect.isTrue(c3.m5 is T3, "([int,int,double])->void is ([int,int])->void");
-  Expect.isFalse(
-      c3.m5 is T4, "([int,int,double])->void is (int,[int,int])->void");
-  Expect.isFalse(
-      c3.m5 is T5, "([int,int,double])->void is ([int,int,int])->void");
-}
diff --git a/tests/language/function_subtype3_test.dart b/tests/language/function_subtype3_test.dart
deleted file mode 100644
index 7b2acc3..0000000
--- a/tests/language/function_subtype3_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class FunctionLike<T> {
-  call(T arg) {
-    return arg;
-  }
-}
-
-class Foo<T> {
-  testString() => new FunctionLike<String>() is T;
-  testInt() => new FunctionLike<int>() is T;
-}
-
-typedef TakeString(String arg);
-typedef TakeInt(int arg);
-
-main() {
-  Foo<TakeString> stringFoo = new Foo<TakeString>();
-  Foo<TakeInt> intFoo = new Foo<TakeInt>();
-
-  Expect.isTrue(stringFoo.testString());
-  Expect.isFalse(stringFoo.testInt());
-
-  Expect.isFalse(intFoo.testString());
-  Expect.isTrue(intFoo.testInt());
-}
diff --git a/tests/language/function_subtype_bound_closure0_test.dart b/tests/language/function_subtype_bound_closure0_test.dart
deleted file mode 100644
index fc993e02..0000000
--- a/tests/language/function_subtype_bound_closure0_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for bound closures.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo(bool a, [String b]);
-typedef int Bar(bool a, [String b]);
-typedef int Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-class C {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-  int boz(bool a, {int b}) => null;
-}
-
-main() {
-  var c = new C();
-  var foo = c.foo;
-  Expect.isTrue(foo is Foo, 'foo is Foo');
-  Expect.isTrue(foo is Bar, 'foo is Bar');
-  Expect.isFalse(foo is Baz, 'foo is Baz');
-  Expect.isTrue(foo is Boz, 'foo is Boz');
-
-  var baz = c.baz;
-  Expect.isFalse(baz is Foo, 'baz is Foo');
-  Expect.isFalse(baz is Bar, 'baz is Bar');
-  Expect.isTrue(baz is Baz, 'baz is Baz');
-  Expect.isTrue(baz is Boz, 'baz is Boz');
-
-  var boz = c.boz;
-  Expect.isFalse(boz is Foo, 'boz is Foo');
-  Expect.isFalse(boz is Bar, 'boz is Bar');
-  Expect.isFalse(boz is Baz, 'boz is Baz');
-  Expect.isTrue(boz is Boz, 'boz is Boz');
-}
diff --git a/tests/language/function_subtype_bound_closure1_test.dart b/tests/language/function_subtype_bound_closure1_test.dart
deleted file mode 100644
index c55a741..0000000
--- a/tests/language/function_subtype_bound_closure1_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for bound closures against generic typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-
-class C {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-}
-
-main() {
-  var c = new C();
-  var foo = c.foo;
-  Expect.isTrue(foo is Foo<bool>, 'foo is Foo<bool>');
-  Expect.isTrue(foo is Bar<bool>, 'foo is Bar<bool>');
-  Expect.isFalse(foo is Baz<bool>, 'foo is Baz<bool>');
-  Expect.isTrue(foo is Boz<bool>, 'foo is Boz<bool>');
-
-  Expect.isFalse(foo is Foo<int>, 'foo is Foo<int>');
-  Expect.isFalse(foo is Bar<int>, 'foo is Bar<int>');
-  Expect.isFalse(foo is Baz<int>, 'foo is Baz<int>');
-  Expect.isFalse(foo is Boz<int>, 'foo is Boz<int>');
-
-  Expect.isTrue(foo is Foo, 'foo is Foo');
-  Expect.isTrue(foo is Bar, 'foo is Bar');
-  Expect.isFalse(foo is Baz, 'foo is Baz');
-  Expect.isTrue(foo is Boz, 'foo is Boz');
-
-  var baz = c.baz;
-  Expect.isFalse(baz is Foo<bool>, 'baz is Foo<bool>');
-  Expect.isFalse(baz is Bar<bool>, 'baz is Bar<bool>');
-  Expect.isTrue(baz is Baz<bool>, 'baz is Baz<bool>');
-  Expect.isTrue(baz is Boz<bool>, 'baz is Boz<bool>');
-
-  Expect.isFalse(baz is Foo<int>, 'baz is Foo<int>');
-  Expect.isFalse(baz is Bar<int>, 'baz is Bar<int>');
-  Expect.isFalse(baz is Baz<int>, 'baz is Baz<int>');
-  Expect.isFalse(baz is Boz<int>, 'baz is Boz<int>');
-
-  Expect.isFalse(baz is Foo, 'baz is Foo');
-  Expect.isFalse(baz is Bar, 'baz is Bar');
-  Expect.isTrue(baz is Baz, 'baz is Baz');
-  Expect.isTrue(baz is Boz, 'baz is Boz');
-}
diff --git a/tests/language/function_subtype_bound_closure2_test.dart b/tests/language/function_subtype_bound_closure2_test.dart
deleted file mode 100644
index 9a7da9c..0000000
--- a/tests/language/function_subtype_bound_closure2_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for bound closures on generic type against generic
-// typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-typedef int Biz<T>(T a, int b);
-
-class C<T> {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-
-  void test(String nameOfT, bool expectedResult) {
-    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
-    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
-
-    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
-    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
-    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
-    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
-    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_bound_closure3_test.dart b/tests/language/function_subtype_bound_closure3_test.dart
deleted file mode 100644
index 1af7b97..0000000
--- a/tests/language/function_subtype_bound_closure3_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for generic bound closures.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-class C<T> {
-  void foo(T a, [String b]) {}
-  void baz(T a, {String b}) {}
-
-  void test(String nameOfT, bool expectedResult) {
-    Expect.equals(expectedResult, foo is Foo, 'C<$nameOfT>.foo is Foo');
-    Expect.equals(expectedResult, foo is Bar, 'C<$nameOfT>.foo is Bar');
-    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
-    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
-
-    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
-    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
-    Expect.equals(expectedResult, baz is Baz, 'C<$nameOfT>.baz is Baz');
-    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_bound_closure4_test.dart b/tests/language/function_subtype_bound_closure4_test.dart
deleted file mode 100644
index 99cd743..0000000
--- a/tests/language/function_subtype_bound_closure4_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for generic bound closures.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-class C<T> {
-  void foo(T a, [String b]) {}
-  void baz(T a, {String b}) {}
-
-  void test(String nameOfT, bool expectedResult) {
-    Expect.equals(expectedResult, foo is Foo, 'C<$nameOfT>.foo is Foo');
-    Expect.equals(expectedResult, foo is Bar, 'C<$nameOfT>.foo is Bar');
-    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
-    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
-
-    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
-    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
-    Expect.equals(expectedResult, baz is Baz, 'C<$nameOfT>.baz is Baz');
-    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
-  }
-}
-
-class D<S, T> extends C<T> {}
-
-main() {
-  new D<String, bool>().test('bool', true);
-  new D<bool, int>().test('int', false);
-  new D().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_bound_closure5_test.dart b/tests/language/function_subtype_bound_closure5_test.dart
deleted file mode 100644
index 39cfba8..0000000
--- a/tests/language/function_subtype_bound_closure5_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for bound closures on generic type against generic
-// typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-typedef int Biz<T>(T a, int b);
-
-class C<T> {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-
-  void test(String nameOfT, bool expectedResult) {
-    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
-    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
-
-    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
-    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
-    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
-    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
-    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
-  }
-}
-
-class D<S, T> extends C<T> {}
-
-main() {
-  new D<String, bool>().test('bool', true);
-  new D<bool, int>().test('int', false);
-  new D().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_bound_closure5a_test.dart b/tests/language/function_subtype_bound_closure5a_test.dart
deleted file mode 100644
index 7f4d209..0000000
--- a/tests/language/function_subtype_bound_closure5a_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for bound closures on generic type against generic
-// typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-typedef int Biz<T>(T a, int b);
-
-class C<T> {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-
-  void test(String nameOfT, bool expectedResult) {
-    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
-    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
-
-    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
-    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
-    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
-    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
-    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
-  }
-}
-
-class Cm<T> extends C<T> {}
-
-class D<S, T> extends Cm<T> {}
-
-main() {
-  new D<String, bool>().test('bool', true);
-  new D<bool, int>().test('int', false);
-  new D().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_bound_closure6_test.dart b/tests/language/function_subtype_bound_closure6_test.dart
deleted file mode 100644
index 78651e3..0000000
--- a/tests/language/function_subtype_bound_closure6_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for bound closures on generic type against generic
-// typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-typedef int Biz<T>(T a, int b);
-
-class C<T> {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-
-  void test(String nameOfT, bool expectedResult) {
-    void localMethod() {
-      Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
-      Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
-      Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
-      Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
-      Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
-
-      Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
-      Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
-      Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
-      Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
-      Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
-    }
-
-    localMethod();
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_bound_closure7_test.dart b/tests/language/function_subtype_bound_closure7_test.dart
deleted file mode 100644
index 4f975ac..0000000
--- a/tests/language/function_subtype_bound_closure7_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for bound closures.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-
-class Class<T> {
-  foo(Foo<T> o) => o is Foo<T>;
-}
-
-void bar(int i) {}
-
-void main() {
-  bool inCheckedMode = false;
-  try {
-    String a = 42;
-  } catch (e) {
-    inCheckedMode = true;
-  }
-
-  var f = new Class<int>().foo;
-  Expect.isTrue(f(bar));
-  if (inCheckedMode) {
-    Expect.throws(() => f(f), (e) => true);
-  } else {
-    Expect.isFalse(f(f));
-  }
-}
diff --git a/tests/language/function_subtype_call0_test.dart b/tests/language/function_subtype_call0_test.dart
deleted file mode 100644
index d862683..0000000
--- a/tests/language/function_subtype_call0_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for classes with call functions.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef void Boz(bool a);
-
-class C1 {
-  void call(bool a, [String b]) {}
-}
-
-class C2 {
-  void call(bool a, {String b}) {}
-}
-
-class C3 {
-  void call(bool a, {int b}) {}
-}
-
-main() {
-  Expect.isTrue(new C1() is Foo, 'new C1() is Foo');
-  Expect.isTrue(new C1() is Bar, 'new C1() is Bar');
-  Expect.isFalse(new C1() is Baz, 'new C1() is Baz');
-  Expect.isTrue(new C1() is Boz, 'new C1() is Boz');
-
-  Expect.isFalse(new C2() is Foo, 'new C2() is Foo');
-  Expect.isFalse(new C2() is Bar, 'new C2() is Bar');
-  Expect.isTrue(new C2() is Baz, 'new C2() is Baz');
-  Expect.isTrue(new C2() is Boz, 'new C2() is Boz');
-
-  Expect.isFalse(new C3() is Foo, 'new C3() is Foo');
-  Expect.isFalse(new C3() is Bar, 'new C3() is Bar');
-  Expect.isFalse(new C3() is Baz, 'new C3() is Baz');
-  Expect.isTrue(new C3() is Boz, 'new C3() is Boz');
-}
diff --git a/tests/language/function_subtype_call1_test.dart b/tests/language/function_subtype_call1_test.dart
deleted file mode 100644
index 2ac5e43..0000000
--- a/tests/language/function_subtype_call1_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for classes with call functions.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef void Boz(bool a);
-
-class C1<T> {
-  void call(T a, [String b]) {}
-}
-
-class C2<T> {
-  void call(T a, {String b}) {}
-}
-
-main() {
-  Expect.isTrue(new C1<bool>() is Foo, 'new C1<bool>() is Foo');
-  Expect.isTrue(new C1<bool>() is Bar, 'new C1<bool>() is Bar');
-  Expect.isFalse(new C1<bool>() is Baz, 'new C1<bool>() is Baz');
-  Expect.isTrue(new C1<bool>() is Boz, 'new C1<bool>() is Boz');
-
-  Expect.isFalse(new C1<int>() is Foo, 'new C1<int>() is Foo');
-  Expect.isFalse(new C1<int>() is Bar, 'new C1<int>() is Bar');
-  Expect.isFalse(new C1<int>() is Baz, 'new C1<int>() is Baz');
-  Expect.isFalse(new C1<int>() is Boz, 'new C1<int>() is Boz');
-
-  Expect.isTrue(new C1() is Foo, 'new C1() is Foo');
-  Expect.isTrue(new C1() is Bar, 'new C1() is Bar');
-  Expect.isFalse(new C1() is Baz, 'new C1() is Baz');
-  Expect.isTrue(new C1() is Boz, 'new C1() is Boz');
-
-  Expect.isFalse(new C2<bool>() is Foo, 'new C2<bool>() is Foo');
-  Expect.isFalse(new C2<bool>() is Bar, 'new C2<bool>() is Bar');
-  Expect.isTrue(new C2<bool>() is Baz, 'new C2<bool>() is Baz');
-  Expect.isTrue(new C2<bool>() is Boz, 'new C2<bool>() is Boz');
-
-  Expect.isFalse(new C2<int>() is Foo, 'new C2<int>() is Foo');
-  Expect.isFalse(new C2<int>() is Bar, 'new C2<int>() is Bar');
-  Expect.isFalse(new C2<int>() is Baz, 'new C2<int>() is Baz');
-  Expect.isFalse(new C2<int>() is Boz, 'new C2<int>() is Boz');
-
-  Expect.isFalse(new C2() is Foo, 'new C2() is Foo');
-  Expect.isFalse(new C2() is Bar, 'new C2() is Bar');
-  Expect.isTrue(new C2() is Baz, 'new C2() is Baz');
-  Expect.isTrue(new C2() is Boz, 'new C2() is Boz');
-}
diff --git a/tests/language/function_subtype_call2_test.dart b/tests/language/function_subtype_call2_test.dart
deleted file mode 100644
index 12487d2..0000000
--- a/tests/language/function_subtype_call2_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for classes with call functions.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef void Boz(bool a);
-
-class C1<T> {
-  void call(T a, [String b]) {}
-}
-
-class D1<S, T> extends C1<T> {}
-
-class C2<T> {
-  void call(T a, {String b}) {}
-}
-
-class D2<S, T> extends C2<T> {}
-
-main() {
-  Expect.isTrue(new D1<String, bool>() is Foo, 'new D1<String, bool>() is Foo');
-  Expect.isTrue(new D1<String, bool>() is Bar, 'new D1<String, bool>() is Bar');
-  Expect.isFalse(
-      new D1<String, bool>() is Baz, 'new D1<String, bool>() is Baz');
-  Expect.isTrue(new D1<String, bool>() is Boz, 'new D1<String, bool>() is Boz');
-
-  Expect.isFalse(new D1<bool, int>() is Foo, 'new D1<bool, int>() is Foo');
-  Expect.isFalse(new D1<bool, int>() is Bar, 'new D1<bool, int>() is Bar');
-  Expect.isFalse(new D1<bool, int>() is Baz, 'new D1<bool, int>() is Baz');
-  Expect.isFalse(new D1<bool, int>() is Boz, 'new D1<bool, int>() is Boz');
-
-  Expect.isTrue(new D1() is Foo, 'new D1() is Foo');
-  Expect.isTrue(new D1() is Bar, 'new D1() is Bar');
-  Expect.isFalse(new D1() is Baz, 'new D1() is Baz');
-  Expect.isTrue(new D1() is Boz, 'new D1() is Boz');
-
-  Expect.isFalse(
-      new D2<String, bool>() is Foo, 'new D2<String, bool>() is Foo');
-  Expect.isFalse(
-      new D2<String, bool>() is Bar, 'new D2<String, bool>() is Bar');
-  Expect.isTrue(new D2<String, bool>() is Baz, 'new D2<String, bool>() is Baz');
-  Expect.isTrue(new D2<String, bool>() is Boz, 'new D2<String, bool>() is Boz');
-
-  Expect.isFalse(new D2<bool, int>() is Foo, 'new D2<bool, int>() is Foo');
-  Expect.isFalse(new D2<bool, int>() is Bar, 'new D2<bool, int>() is Bar');
-  Expect.isFalse(new D2<bool, int>() is Baz, 'new D2<bool, int>() is Baz');
-  Expect.isFalse(new D2<bool, int>() is Boz, 'new D2<bool, int>() is Boz');
-
-  Expect.isFalse(new D2() is Foo, 'new D2() is Foo');
-  Expect.isFalse(new D2() is Bar, 'new D2() is Bar');
-  Expect.isTrue(new D2() is Baz, 'new D2() is Baz');
-  Expect.isTrue(new D2() is Boz, 'new D2() is Boz');
-}
diff --git a/tests/language/function_subtype_cast0_test.dart b/tests/language/function_subtype_cast0_test.dart
deleted file mode 100644
index 1e669f1..0000000
--- a/tests/language/function_subtype_cast0_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping casts.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-void bar(int i) {}
-
-void main() {
-  Expect.isNotNull(bar as Foo);
-  Expect.throws(() => bar as Foo<bool>, (e) => true);
-  Expect.isNotNull(bar as Foo<int>);
-  Expect.isNotNull(bar as Bar);
-}
diff --git a/tests/language/function_subtype_cast1_test.dart b/tests/language/function_subtype_cast1_test.dart
deleted file mode 100644
index d2ff180..0000000
--- a/tests/language/function_subtype_cast1_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping casts.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-class Class<T> {
-  void bar(T i) {}
-}
-
-void main() {
-  Expect.isNotNull(new Class().bar as Foo);
-  Expect.isNotNull(new Class().bar as Foo<bool>);
-  Expect.isNotNull(new Class().bar as Foo<int>);
-  Expect.isNotNull(new Class().bar as Bar);
-
-  Expect.isNotNull(new Class<int>().bar as Foo);
-  Expect.throws(() => new Class<int>().bar as Foo<bool>, (e) => true);
-  Expect.isNotNull(new Class<int>().bar as Foo<int>);
-  Expect.isNotNull(new Class<int>().bar as Bar);
-
-  Expect.isNotNull(new Class<bool>().bar as Foo);
-  Expect.isNotNull(new Class<bool>().bar as Foo<bool>);
-  Expect.throws(() => new Class<bool>().bar as Foo<int>, (e) => true);
-  Expect.throws(() => new Class<bool>().bar as Bar, (e) => true);
-}
diff --git a/tests/language/function_subtype_cast2_test.dart b/tests/language/function_subtype_cast2_test.dart
deleted file mode 100644
index 6f16bb0..0000000
--- a/tests/language/function_subtype_cast2_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping casts.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-class Class<T> {
-  test(bool expectedResult, var o, String typeName) {
-    if (expectedResult) {
-      Expect.isNotNull(o as Foo<T>, "bar as Foo<$typeName>");
-    } else {
-      Expect.throws(() => o as Foo<T>, (e) => true, "bar as Foo<$typeName>");
-    }
-    Expect.isNotNull(o as Bar, "bar as Bar");
-  }
-}
-
-void bar(int i) {}
-
-void main() {
-  new Class().test(true, bar, "dynamic");
-  new Class<int>().test(true, bar, "int");
-  new Class<bool>().test(false, bar, "bool");
-}
diff --git a/tests/language/function_subtype_cast3_test.dart b/tests/language/function_subtype_cast3_test.dart
deleted file mode 100644
index edcc4e8..0000000
--- a/tests/language/function_subtype_cast3_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping casts.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-class Class<T> {
-  test(bool expectedResult, var o, String typeName) {
-    void local() {
-      if (expectedResult) {
-        Expect.isNotNull(o as Foo<T>, "bar as Foo<$typeName>");
-      } else {
-        Expect.throws(() => o as Foo<T>, (e) => true, "bar as Foo<$typeName>");
-      }
-      Expect.isNotNull(o as Bar, "bar as Bar");
-    }
-
-    local();
-  }
-}
-
-void bar(int i) {}
-
-void main() {
-  new Class().test(true, bar, "dynamic");
-  new Class<int>().test(true, bar, "int");
-  new Class<bool>().test(false, bar, "bool");
-}
diff --git a/tests/language/function_subtype_checked0_test.dart b/tests/language/function_subtype_checked0_test.dart
deleted file mode 100644
index ee293d6..0000000
--- a/tests/language/function_subtype_checked0_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of typedef vs. inlined function types.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-
-int foo(bool a, [String b]) => null;
-int baz(bool a, {String b}) => null;
-int boz(bool a, {int b}) => null;
-
-class C<T> {
-  void test1a(Foo<T> f) {}
-  void test1b(Bar<T> f) {}
-  void test1c(int f(T a, [String b])) {}
-
-  void test2a(Baz<T> f) {}
-  void test2b(int f(T a, {String b})) {}
-
-  void test3a(Boz<T> f) {}
-  void test3b(int f(T a)) {}
-
-  void test(String nameOfT, bool expectedResult) {
-    check(bool expectedResult, f()) {
-      if (inCheckedMode() && !expectedResult) {
-        Expect.throws(f, (e) => true);
-      } else {
-        f();
-      }
-    }
-
-    check(expectedResult, () => test1a(foo));
-    check(expectedResult, () => test1b(foo));
-    check(expectedResult, () => test1b(foo));
-    check(false, () => test2a(foo));
-    check(false, () => test2b(foo));
-    check(expectedResult, () => test3a(foo));
-    check(expectedResult, () => test3b(foo));
-
-    check(false, () => test1a(baz));
-    check(false, () => test1b(baz));
-    check(false, () => test1b(baz));
-    check(expectedResult, () => test2a(baz));
-    check(expectedResult, () => test2b(baz));
-    check(expectedResult, () => test3a(baz));
-    check(expectedResult, () => test3b(baz));
-
-    check(false, () => test1a(boz));
-    check(false, () => test1b(boz));
-    check(false, () => test1b(boz));
-    check(false, () => test2a(boz));
-    check(false, () => test2b(boz));
-    check(expectedResult, () => test3a(boz));
-    check(expectedResult, () => test3b(boz));
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
-
-bool inCheckedMode() {
-  try {
-    var x = 42;
-    String a = x;
-  } catch (e) {
-    return true;
-  }
-  return false;
-}
diff --git a/tests/language/function_subtype_closure0_test.dart b/tests/language/function_subtype_closure0_test.dart
deleted file mode 100644
index 47ace66..0000000
--- a/tests/language/function_subtype_closure0_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of static functions.
-
-import 'package:expect/expect.dart';
-
-typedef I<T> f2<T>();
-
-class X {
-  static J<bool> f1() => null;
-}
-
-class C<T> {
-  C(f2<T> f);
-}
-
-class I<T> {}
-
-class J<T> extends I<int> {}
-
-main() {
-  bool inCheckedMode = false;
-  try {
-    String a = 42;
-  } catch (e) {
-    inCheckedMode = true;
-  }
-
-  new C<int>(X.f1);
-  if (inCheckedMode) {
-    Expect.throws(() => new C<bool>(X.f1), (e) => true);
-  }
-}
diff --git a/tests/language/function_subtype_closure1_test.dart b/tests/language/function_subtype_closure1_test.dart
deleted file mode 100644
index aeb31b3..0000000
--- a/tests/language/function_subtype_closure1_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of dynamic closures.
-
-import 'package:expect/expect.dart';
-
-typedef I<T> f2<T>();
-
-class X {
-  J<bool> f1() => null;
-}
-
-class C<T> {
-  C(f2<T> f);
-}
-
-class I<T> {}
-
-class J<T> extends I<int> {}
-
-main() {
-  bool inCheckedMode = false;
-  try {
-    String a = 42;
-  } catch (e) {
-    inCheckedMode = true;
-  }
-
-  new C<int>(new X().f1);
-  if (inCheckedMode) {
-    Expect.throws(() => new C<bool>(new X().f1), (e) => true);
-  }
-}
diff --git a/tests/language/function_subtype_factory0_test.dart b/tests/language/function_subtype_factory0_test.dart
deleted file mode 100644
index 91d6056..0000000
--- a/tests/language/function_subtype_factory0_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping with type variables in factory constructors.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-
-class C<T> {
-  factory C(foo) {
-    if (foo is Foo<T>) {
-      return new C.internal();
-    }
-    return null;
-  }
-  C.internal();
-}
-
-void method(String s) {}
-
-void main() {
-  Expect.isNotNull(new C<String>(method));
-  Expect.isNull(new C<bool>(method));
-}
diff --git a/tests/language/function_subtype_factory1_test.dart b/tests/language/function_subtype_factory1_test.dart
deleted file mode 100644
index 4fb8ab0..0000000
--- a/tests/language/function_subtype_factory1_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping with type variables in factory constructors.
-
-import 'package:expect/expect.dart';
-
-class C<T> {
-  factory C(void foo(T t)) => new C.internal();
-  C.internal();
-}
-
-void method(String s) {}
-
-void main() {
-  Expect.isNotNull(new C<String>(method));
-  try {
-    new C<bool>(method);
-    Expect.isFalse(isCheckedMode());
-  } catch (e) {
-    Expect.isTrue(isCheckedMode());
-  }
-}
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
diff --git a/tests/language/function_subtype_inline0_test.dart b/tests/language/function_subtype_inline0_test.dart
deleted file mode 100644
index dca9e6b..0000000
--- a/tests/language/function_subtype_inline0_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for generic bound closures.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-class C<T> {
-  void test(String nameOfT, bool expectedResult) {
-    Expect.equals(expectedResult, (T a, [String b]) {} is Foo,
-        '($nameOfT,[String])->void is Foo');
-    Expect.equals(expectedResult, (T a, [String b]) {} is Bar,
-        '($nameOfT,[String])->void is Bar');
-    Expect.isFalse(
-        (T a, [String b]) {} is Baz, '($nameOfT,[String])->void is Baz');
-    Expect.equals(expectedResult, (T a, [String b]) {} is Boz,
-        '($nameOfT,[String])->void is Boz');
-
-    Expect.isFalse(
-        (T a, {String b}) {} is Foo, '($nameOfT,{b:String})->void is Foo');
-    Expect.isFalse(
-        (T a, {String b}) {} is Bar, '($nameOfT,{b:String})->void is Bar');
-    Expect.equals(expectedResult, (T a, {String b}) {} is Baz,
-        '($nameOfT,{b:String})->void is Baz');
-    Expect.equals(expectedResult, (T a, {String b}) {} is Boz,
-        '($nameOfT,{b:String})->void is Boz');
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_inline1_test.dart b/tests/language/function_subtype_inline1_test.dart
deleted file mode 100644
index 90103d5..0000000
--- a/tests/language/function_subtype_inline1_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping.
-
-import 'package:expect/expect.dart';
-
-class A {}
-
-class B extends A {}
-
-class C extends A {}
-
-class Class<K, V> {
-  void forEach(void f(K k, V v)) {}
-}
-
-main() {
-  Class<B, C> c = new Class<B, C>();
-  c.forEach((A a, A b) {});
-  c.forEach((B a, C b) {});
-  try {
-    c.forEach((A a, B b) {});
-    Expect.isFalse(isCheckedMode());
-  } catch (e) {
-    Expect.isTrue(isCheckedMode());
-  }
-}
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
diff --git a/tests/language/function_subtype_inline2_test.dart b/tests/language/function_subtype_inline2_test.dart
deleted file mode 100644
index 546d628..0000000
--- a/tests/language/function_subtype_inline2_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of inlined function typed parameters.
-
-import 'checked_mode_helper.dart';
-
-class C {
-  var field;
-  C.c1(int this.field());
-  C.c2({int this.field()});
-  C.c3({int field(): null});
-  C.c4({int this.field(): null});
-  C.c5([int this.field()]);
-  C.c6([int field() = null]);
-  C.c7([int this.field() = null]);
-}
-
-void test(var f, String constructorName) {
-  testDynamicTypeError(false, () => f(m1), "'new C.$constructorName(m1)'");
-  testDynamicTypeError(true, () => f(m2), "'new C.$constructorName(m2)'");
-  testDynamicTypeError(false, () => f(m3), "'new C.$constructorName(m3)'");
-  testDynamicTypeError(true, () => f(m4), "'new C.$constructorName(m4)'");
-}
-
-int m1() => null;
-String m2() => null;
-m3() => null;
-m4(int i) => null;
-
-main() {
-  test((m) => new C.c1(m), 'c1');
-  test((m) => new C.c2(field: m), 'c2');
-  test((m) => new C.c3(field: m), 'c3');
-  test((m) => new C.c4(field: m), 'c4');
-  test((m) => new C.c5(m), 'c5');
-  test((m) => new C.c6(m), 'c6');
-  test((m) => new C.c7(m), 'c7');
-}
diff --git a/tests/language/function_subtype_local0_test.dart b/tests/language/function_subtype_local0_test.dart
deleted file mode 100644
index 51d3269..0000000
--- a/tests/language/function_subtype_local0_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for local functions.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo(bool a, [String b]);
-typedef int Bar(bool a, [String b]);
-typedef int Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-main() {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-  int boz(bool a, {int b}) => null;
-
-  Expect.isTrue(foo is Foo, 'foo is Foo');
-  Expect.isTrue(foo is Bar, 'foo is Bar');
-  Expect.isFalse(foo is Baz, 'foo is Baz');
-  Expect.isTrue(foo is Boz, 'foo is Boz');
-
-  Expect.isFalse(baz is Foo, 'baz is Foo');
-  Expect.isFalse(baz is Bar, 'baz is Bar');
-  Expect.isTrue(baz is Baz, 'baz is Baz');
-  Expect.isTrue(baz is Boz, 'baz is Boz');
-
-  Expect.isFalse(boz is Foo, 'boz is Foo');
-  Expect.isFalse(boz is Bar, 'boz is Bar');
-  Expect.isFalse(boz is Baz, 'boz is Baz');
-  Expect.isTrue(boz is Boz, 'boz is Boz');
-}
diff --git a/tests/language/function_subtype_local1_test.dart b/tests/language/function_subtype_local1_test.dart
deleted file mode 100644
index d41b360..0000000
--- a/tests/language/function_subtype_local1_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for local functions against generic typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-
-main() {
-  int foo(bool a, [String b]) => null;
-  int baz(bool a, {String b}) => null;
-
-  Expect.isTrue(foo is Foo<bool>, 'foo is Foo<bool>');
-  Expect.isTrue(foo is Bar<bool>, 'foo is Bar<bool>');
-  Expect.isFalse(foo is Baz<bool>, 'foo is Baz<bool>');
-  Expect.isTrue(foo is Boz<bool>, 'foo is Boz<bool>');
-
-  Expect.isFalse(foo is Foo<int>, 'foo is Foo<int>');
-  Expect.isFalse(foo is Bar<int>, 'foo is Bar<int>');
-  Expect.isFalse(foo is Baz<int>, 'foo is Baz<int>');
-  Expect.isFalse(foo is Boz<int>, 'foo is Boz<int>');
-
-  Expect.isTrue(foo is Foo, 'foo is Foo');
-  Expect.isTrue(foo is Bar, 'foo is Bar');
-  Expect.isFalse(foo is Baz, 'foo is Baz');
-  Expect.isTrue(foo is Boz, 'foo is Boz');
-
-  Expect.isFalse(baz is Foo<bool>, 'baz is Foo<bool>');
-  Expect.isFalse(baz is Bar<bool>, 'baz is Bar<bool>');
-  Expect.isTrue(baz is Baz<bool>, 'baz is Baz<bool>');
-  Expect.isTrue(baz is Boz<bool>, 'baz is Boz<bool>');
-
-  Expect.isFalse(baz is Foo<int>, 'baz is Foo<int>');
-  Expect.isFalse(baz is Bar<int>, 'baz is Bar<int>');
-  Expect.isFalse(baz is Baz<int>, 'baz is Baz<int>');
-  Expect.isFalse(baz is Boz<int>, 'baz is Boz<int>');
-
-  Expect.isFalse(baz is Foo, 'baz is Foo');
-  Expect.isFalse(baz is Bar, 'baz is Bar');
-  Expect.isTrue(baz is Baz, 'baz is Baz');
-  Expect.isTrue(baz is Boz, 'baz is Boz');
-}
diff --git a/tests/language/function_subtype_local2_test.dart b/tests/language/function_subtype_local2_test.dart
deleted file mode 100644
index 65d470d..0000000
--- a/tests/language/function_subtype_local2_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for local functions on generic type against generic
-// typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-typedef int Biz<T>(T a, int b);
-
-class C<T> {
-  void test(String nameOfT, bool expectedResult) {
-    int foo(bool a, [String b]) => null;
-    int baz(bool a, {String b}) => null;
-
-    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
-    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
-
-    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
-    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
-    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
-    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
-    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_local3_test.dart b/tests/language/function_subtype_local3_test.dart
deleted file mode 100644
index 344f7c2..0000000
--- a/tests/language/function_subtype_local3_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for generic bound closures.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-class C<T> {
-  void test(String nameOfT, bool expectedResult) {
-    void foo(T a, [String b]) {}
-    void baz(T a, {String b}) {}
-
-    Expect.equals(expectedResult, foo is Foo, 'C<$nameOfT>.foo is Foo');
-    Expect.equals(expectedResult, foo is Bar, 'C<$nameOfT>.foo is Bar');
-    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
-    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
-
-    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
-    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
-    Expect.equals(expectedResult, baz is Baz, 'C<$nameOfT>.baz is Baz');
-    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_local4_test.dart b/tests/language/function_subtype_local4_test.dart
deleted file mode 100644
index 5219757..0000000
--- a/tests/language/function_subtype_local4_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for generic bound closures. This also tests
-// type argument substitution.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo(bool a, [String b]);
-typedef void Bar(bool a, [String b]);
-typedef void Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-class C<T> {
-  void test(String nameOfT, bool expectedResult) {
-    void foo(T a, [String b]) {}
-    void baz(T a, {String b}) {}
-
-    Expect.equals(expectedResult, foo is Foo, 'C<$nameOfT>.foo is Foo');
-    Expect.equals(expectedResult, foo is Bar, 'C<$nameOfT>.foo is Bar');
-    Expect.isFalse(foo is Baz, 'C<$nameOfT>.foo is Baz');
-    Expect.isFalse(foo is Boz, 'C<$nameOfT>.foo is Boz');
-
-    Expect.isFalse(baz is Foo, 'C<$nameOfT>.baz is Foo');
-    Expect.isFalse(baz is Bar, 'C<$nameOfT>.baz is Bar');
-    Expect.equals(expectedResult, baz is Baz, 'C<$nameOfT>.baz is Baz');
-    Expect.isFalse(baz is Boz, 'C<$nameOfT>.baz is Boz');
-  }
-}
-
-class D<S, T> extends C<T> {}
-
-main() {
-  new D<String, bool>().test('bool', true);
-  new D<bool, int>().test('int', false);
-  new D().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_local5_test.dart b/tests/language/function_subtype_local5_test.dart
deleted file mode 100644
index be742bf..0000000
--- a/tests/language/function_subtype_local5_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for local functions on generic type against generic
-// typedefs.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-typedef int Biz<T>(T a, int b);
-
-class C<T> {
-  void test(String nameOfT, bool expectedResult) {
-    int foo(bool a, [String b]) => null;
-    int baz(bool a, {String b}) => null;
-
-    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
-    Expect.isFalse(foo is Biz<T>, 'foo is Biz<$nameOfT>');
-
-    Expect.isFalse(baz is Foo<T>, 'baz is Foo<$nameOfT>');
-    Expect.isFalse(baz is Bar<T>, 'baz is Bar<$nameOfT>');
-    Expect.equals(expectedResult, baz is Baz<T>, 'baz is Baz<$nameOfT>');
-    Expect.equals(expectedResult, baz is Boz<T>, 'baz is Boz<$nameOfT>');
-    Expect.isFalse(baz is Biz<T>, 'bar is Biz<$nameOfT>');
-  }
-}
-
-class D<S, T> extends C<T> {}
-
-main() {
-  new D<String, bool>().test('bool', true);
-  new D<bool, int>().test('int', false);
-  new D().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_local6_test.dart b/tests/language/function_subtype_local6_test.dart
deleted file mode 100644
index 95817d1..0000000
--- a/tests/language/function_subtype_local6_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-// VMOptions=--no-eliminate-type-checks
-
-// Regression test for issue 12127.
-
-class C<T> {
-  void test() {
-    void foo(T a) {}
-  }
-}
-
-main() {
-  new C<bool>().test();
-}
diff --git a/tests/language/function_subtype_named1_test.dart b/tests/language/function_subtype_named1_test.dart
deleted file mode 100644
index ed3c9d5..0000000
--- a/tests/language/function_subtype_named1_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping.
-
-import 'package:expect/expect.dart';
-
-void void_() {}
-void void__int(int i) {}
-void void___a_int({int a}) {}
-void void___a_int2({int a}) {}
-void void___b_int({int b}) {}
-void void___a_Object({Object a}) {}
-void void__int__a_int(int i1, {int a}) {}
-void void__int__a_int2(int i1, {int a}) {}
-void void___a_double({double a}) {}
-void void___a_int_b_int({int a, int b}) {}
-void void___a_int_b_int_c_int({int a, int b, int c}) {}
-void void___a_int_c_int({int a, int c}) {}
-void void___b_int_c_int({int b, int c}) {}
-void void___c_int({int c}) {}
-
-typedef void t_void_();
-typedef void t_void__int(int i);
-typedef void t_void___a_int({int a});
-typedef void t_void___a_int2({int a});
-typedef void t_void___b_int({int b});
-typedef void t_void___a_Object({Object a});
-typedef void t_void__int__a_int(int i1, {int a});
-typedef void t_void__int__a_int2(int i1, {int a});
-typedef void t_void___a_double({double a});
-typedef void t_void___a_int_b_int({int a, int b});
-typedef void t_void___a_int_b_int_c_int({int a, int b, int c});
-typedef void t_void___a_int_c_int({int a, int c});
-typedef void t_void___b_int_c_int({int b, int c});
-typedef void t_void___c_int({int c});
-
-main() {
-  // Test ({int a})->void <: ()->void.
-  Expect.isTrue(void___a_int is t_void_);
-  // Test ({int a})->void <: (int)->void.
-  Expect.isFalse(void___a_int is t_void__int);
-  // Test (int)->void <: ({int a})->void.
-  Expect.isFalse(void__int is t_void___a_int);
-  // Test ({int a})->void <: ({int a})->void.
-  Expect.isTrue(void___a_int is t_void___a_int2);
-  // Test ({int a})->void <: ({int b})->void.
-  Expect.isFalse(void___a_int is t_void___b_int);
-  // Test ({Object a})->void <: ({int a})->void.
-  Expect.isTrue(void___a_Object is t_void___a_int);
-  // Test ({int a})->void <: ({Object a})->void.
-  Expect.isTrue(void___a_int is t_void___a_Object);
-  // Test (int,{int a})->void <: (int,{int a})->void.
-  Expect.isTrue(void__int__a_int is t_void__int__a_int2);
-  // Test ({int a})->void <: ({double a})->void.
-  Expect.isFalse(void___a_int is t_void___a_double);
-  // Test ({int a})->void <: ({int a,int b})->void.
-  Expect.isFalse(void___a_int is t_void___a_int_b_int);
-  // Test ({int a,int b})->void <: ({int a})->void.
-  Expect.isTrue(void___a_int_b_int is t_void___a_int);
-  // Test ({int a,int b,int c})->void <: ({int a,int c})->void.
-  Expect.isTrue(void___a_int_b_int_c_int is t_void___a_int_c_int);
-  // Test ({int a,int b,int c})->void <: ({int b,int c})->void.
-  Expect.isTrue(void___a_int_b_int_c_int is t_void___b_int_c_int);
-  // Test ({int a,int b,int c})->void <: ({int c})->void.
-  Expect.isTrue(void___a_int_b_int_c_int is t_void___c_int);
-}
diff --git a/tests/language/function_subtype_named2_test.dart b/tests/language/function_subtype_named2_test.dart
deleted file mode 100644
index 324f9bd..0000000
--- a/tests/language/function_subtype_named2_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping.
-
-import 'package:expect/expect.dart';
-
-class C<T> {}
-
-typedef void void_();
-typedef void void__int(int i);
-typedef void void___a_int({int a});
-typedef void void___a_int2({int a});
-typedef void void___b_int({int b});
-typedef void void___a_Object({Object a});
-typedef void void__int__a_int(int i1, {int a});
-typedef void void__int__a_int2(int i1, {int a});
-typedef void void___a_double({double a});
-typedef void void___a_int_b_int({int a, int b});
-typedef void void___a_int_b_int_c_int({int a, int b, int c});
-typedef void void___a_int_c_int({int a, int c});
-typedef void void___b_int_c_int({int b, int c});
-typedef void void___c_int({int c});
-
-main() {
-  // Test ({int a})->void <: ()->void.
-  Expect.isTrue(new C<void___a_int>() is C<void_>);
-  // Test ({int a})->void <: (int)->void.
-  Expect.isFalse(new C<void___a_int>() is C<void__int>);
-  // Test (int)->void <: ({int a})->void.
-  Expect.isFalse(new C<void__int>() is C<void___a_int>);
-  // Test ({int a})->void <: ({int a})->void.
-  Expect.isTrue(new C<void___a_int>() is C<void___a_int2>);
-  // Test ({int a})->void <: ({int b})->void.
-  Expect.isFalse(new C<void___a_int>() is C<void___b_int>);
-  // Test ({Object a})->void <: ({int a})->void.
-  Expect.isTrue(new C<void___a_Object>() is C<void___a_int>);
-  // Test ({int a})->void <: ({Object a})->void.
-  Expect.isTrue(new C<void___a_int>() is C<void___a_Object>);
-  // Test (int,{int a})->void <: (int,{int a})->void.
-  Expect.isTrue(new C<void__int__a_int>() is C<void__int__a_int2>);
-  // Test ({int a})->void <: ({double a})->void.
-  Expect.isFalse(new C<void___a_int>() is C<void___a_double>);
-  // Test ({int a})->void <: ({int a,int b})->void.
-  Expect.isFalse(new C<void___a_int>() is C<void___a_int_b_int>);
-  // Test ({int a,int b})->void <: ({int a})->void.
-  Expect.isTrue(new C<void___a_int_b_int>() is C<void___a_int>);
-  // Test ({int a,int b,int c})->void <: ({int a,int c})->void.
-  Expect.isTrue(new C<void___a_int_b_int_c_int>() is C<void___a_int_c_int>);
-  // Test ({int a,int b,int c})->void <: ({int b,int c})->void.
-  Expect.isTrue(new C<void___a_int_b_int_c_int>() is C<void___b_int_c_int>);
-  // Test ({int a,int b,int c})->void <: ({int c})->void.
-  Expect.isTrue(new C<void___a_int_b_int_c_int>() is C<void___c_int>);
-}
diff --git a/tests/language/function_subtype_not0_test.dart b/tests/language/function_subtype_not0_test.dart
deleted file mode 100644
index 60ab4c7..0000000
--- a/tests/language/function_subtype_not0_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check negative function subtyping tests.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-void bar(int i) {}
-
-void main() {
-  Expect.isFalse(bar is! Foo);
-  Expect.isTrue(bar is! Foo<bool>);
-  Expect.isFalse(bar is! Foo<int>);
-  Expect.isFalse(bar is! Bar);
-}
diff --git a/tests/language/function_subtype_not1_test.dart b/tests/language/function_subtype_not1_test.dart
deleted file mode 100644
index 13227a1..0000000
--- a/tests/language/function_subtype_not1_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check negative function subtyping tests.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-class Class<T> {
-  void bar(T i) {}
-}
-
-void main() {
-  Expect.isFalse(new Class().bar is! Foo);
-  Expect.isFalse(new Class().bar is! Foo<bool>);
-  Expect.isFalse(new Class().bar is! Foo<int>);
-  Expect.isFalse(new Class().bar is! Bar);
-
-  Expect.isFalse(new Class<int>().bar is! Foo);
-  Expect.isTrue(new Class<int>().bar is! Foo<bool>);
-  Expect.isFalse(new Class<int>().bar is! Foo<int>);
-  Expect.isFalse(new Class<int>().bar is! Bar);
-
-  Expect.isFalse(new Class<bool>().bar is! Foo);
-  Expect.isFalse(new Class<bool>().bar is! Foo<bool>);
-  Expect.isTrue(new Class<bool>().bar is! Foo<int>);
-  Expect.isTrue(new Class<bool>().bar is! Bar);
-}
diff --git a/tests/language/function_subtype_not2_test.dart b/tests/language/function_subtype_not2_test.dart
deleted file mode 100644
index 5481a8c..0000000
--- a/tests/language/function_subtype_not2_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check negative function subtyping tests.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-class Class<T> {
-  test(bool expectedResult, var o, String typeName) {
-    Expect.equals(expectedResult, o is! Foo<T>, "bar is! Foo<$typeName>");
-    Expect.isFalse(o is! Bar, "bar is! Bar");
-  }
-}
-
-void bar(int i) {}
-
-void main() {
-  new Class().test(false, bar, "dynamic");
-  new Class<int>().test(false, bar, "int");
-  new Class<bool>().test(true, bar, "bool");
-}
diff --git a/tests/language/function_subtype_not3_test.dart b/tests/language/function_subtype_not3_test.dart
deleted file mode 100644
index 0c8d2bb..0000000
--- a/tests/language/function_subtype_not3_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check negative function subtyping tests.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo<T>(T t);
-typedef void Bar(int i);
-
-class Class<T> {
-  test(bool expectedResult, var o, String typeName) {
-    void local() {
-      Expect.equals(expectedResult, o is! Foo<T>, "bar is! Foo<$typeName>");
-      Expect.isFalse(o is! Bar, "bar is! Bar");
-    }
-
-    local();
-  }
-}
-
-void bar(int i) {}
-
-void main() {
-  new Class().test(false, bar, "dynamic");
-  new Class<int>().test(false, bar, "int");
-  new Class<bool>().test(true, bar, "bool");
-}
diff --git a/tests/language/function_subtype_null.dart b/tests/language/function_subtype_null.dart
deleted file mode 100644
index 44bdec4..0000000
--- a/tests/language/function_subtype_null.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for null.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo(bool a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-
-main() {
-  Expect.isFalse(null is Foo, 'null is Foo');
-  Expect.isFalse(null is Bar<bool>, 'null is Bar<bool>');
-  Expect.isFalse(null is Bar, 'null is Bar');
-}
diff --git a/tests/language/function_subtype_optional1_test.dart b/tests/language/function_subtype_optional1_test.dart
deleted file mode 100644
index 5cc84af..0000000
--- a/tests/language/function_subtype_optional1_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping.
-
-import 'package:expect/expect.dart';
-
-void void_() {}
-void void__int(int i) {}
-void void___int([int i]) {}
-void void___int2([int i]) {}
-void void___Object([Object o]) {}
-void void__int__int(int i1, [int i2]) {}
-void void__int__int2(int i1, [int i2]) {}
-void void__int__int_int(int i1, [int i2, int i3]) {}
-void void___double(double d) {}
-void void___int_int([int i1, int i2]) {}
-void void___int_int_int([int i1, int i2, int i3]) {}
-void void___Object_int([Object o, int i]) {}
-
-typedef void t_void_();
-typedef void t_void__int(int i);
-typedef void t_void___int([int i]);
-typedef void t_void___int2([int i]);
-typedef void t_void___Object([Object o]);
-typedef void t_void__int__int(int i1, [int i2]);
-typedef void t_void__int__int2(int i1, [int i2]);
-typedef void t_void__int__int_int(int i1, [int i2, int i3]);
-typedef void t_void___double(double d);
-typedef void t_void___int_int([int i1, int i2]);
-typedef void t_void___int_int_int([int i1, int i2, int i3]);
-typedef void t_void___Object_int([Object o, int i]);
-
-main() {
-  // Test ([int])->void <: ()->void.
-  Expect.isTrue(void___int is t_void_);
-  // Test ([int])->void <: (int)->void.
-  Expect.isTrue(void___int is t_void__int);
-  // Test (int)->void <: ([int])->void.
-  Expect.isFalse(void__int is t_void___int);
-  // Test ([int])->void <: ([int])->void.
-  Expect.isTrue(void___int is t_void___int2);
-  // Test ([Object])->void <: ([int])->void.
-  Expect.isTrue(void___Object is t_void___int);
-  // Test ([int])->void <: ([Object])->void.
-  Expect.isTrue(void___int is t_void___Object);
-  // Test (int,[int])->void <: (int)->void.
-  Expect.isTrue(void__int__int is t_void__int);
-  // Test (int,[int])->void <: (int,[int])->void.
-  Expect.isTrue(void__int__int is t_void__int__int2);
-  // Test (int)->void <: ([int])->void.
-  Expect.isFalse(void__int is t_void___int);
-  // Test ([int,int])->void <: (int)->void.
-  Expect.isTrue(void___int_int is t_void__int);
-  // Test ([int,int])->void <: (int,[int])->void.
-  Expect.isTrue(void___int_int is t_void__int__int);
-  // Test ([int,int])->void <: (int,[int,int])->void.
-  Expect.isFalse(void___int_int is t_void__int__int_int);
-  // Test ([int,int,int])->void <: (int,[int,int])->void.
-  Expect.isTrue(void___int_int_int is t_void__int__int_int);
-  // Test ([int])->void <: ([double])->void.
-  Expect.isFalse(void___int is t_void___double);
-  // Test ([int])->void <: ([int,int])->void.
-  Expect.isFalse(void___int is t_void___int_int);
-  // Test ([int,int])->void <: ([int])->void.
-  Expect.isTrue(void___int_int is t_void___int);
-  // Test ([Object,int])->void <: ([int])->void.
-  Expect.isTrue(void___Object_int is t_void___int);
-}
diff --git a/tests/language/function_subtype_optional2_test.dart b/tests/language/function_subtype_optional2_test.dart
deleted file mode 100644
index 5e2ca86..0000000
--- a/tests/language/function_subtype_optional2_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping.
-
-import 'package:expect/expect.dart';
-
-class C<T> {}
-
-typedef void void_();
-typedef void void__int(int i);
-typedef void void___int([int i]);
-typedef void void___int2([int i]);
-typedef void void___Object([Object o]);
-typedef void void__int__int(int i1, [int i2]);
-typedef void void__int__int2(int i1, [int i2]);
-typedef void void__int__int_int(int i1, [int i2, int i3]);
-typedef void void___double(double d);
-typedef void void___int_int([int i1, int i2]);
-typedef void void___int_int_int([int i1, int i2, int i3]);
-typedef void void___Object_int([Object o, int i]);
-
-main() {
-  // Test ([int])->void <: ()->void.
-  Expect.isTrue(new C<void___int>() is C<void_>);
-  // Test ([int])->void <: (int)->void.
-  Expect.isTrue(new C<void___int>() is C<void__int>);
-  // Test (int)->void <: ([int])->void.
-  Expect.isFalse(new C<void__int>() is C<void___int>);
-  // Test ([int])->void <: ([int])->void.
-  Expect.isTrue(new C<void___int>() is C<void___int2>);
-  // Test ([Object])->void <: ([int])->void.
-  Expect.isTrue(new C<void___Object>() is C<void___int>);
-  // Test ([int])->void <: ([Object])->void.
-  Expect.isTrue(new C<void___int>() is C<void___Object>);
-  // Test (int,[int])->void <: (int)->void.
-  Expect.isTrue(new C<void__int__int>() is C<void__int>);
-  // Test (int,[int])->void <: (int,[int])->void.
-  Expect.isTrue(new C<void__int__int>() is C<void__int__int2>);
-  // Test (int)->void <: ([int])->void.
-  Expect.isFalse(new C<void__int>() is C<void___int>);
-  // Test ([int,int])->void <: (int)->void.
-  Expect.isTrue(new C<void___int_int>() is C<void__int>);
-  // Test ([int,int])->void <: (int,[int])->void.
-  Expect.isTrue(new C<void___int_int>() is C<void__int__int>);
-  // Test ([int,int])->void <: (int,[int,int])->void.
-  Expect.isFalse(new C<void___int_int>() is C<void__int__int_int>);
-  // Test ([int,int,int])->void <: (int,[int,int])->void.
-  Expect.isTrue(new C<void___int_int_int>() is C<void__int__int_int>);
-  // Test ([int])->void <: ([double])->void.
-  Expect.isFalse(new C<void___int>() is C<void___double>);
-  // Test ([int])->void <: ([int,int])->void.
-  Expect.isFalse(new C<void___int>() is C<void___int_int>);
-  // Test ([int,int])->void <: ([int])->void.
-  Expect.isTrue(new C<void___int_int>() is C<void___int>);
-  // Test ([Object,int])->void <: ([int])->void.
-  Expect.isTrue(new C<void___Object_int>() is C<void___int>);
-}
diff --git a/tests/language/function_subtype_setter0_test.dart b/tests/language/function_subtype_setter0_test.dart
deleted file mode 100644
index 322a8cb..0000000
--- a/tests/language/function_subtype_setter0_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for implicit setters.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo();
-
-class A<T> {}
-
-class C {
-  Foo foo;
-  A<int> bar;
-}
-
-class D {
-  Foo foo;
-  A<int> bar;
-}
-
-test(var c) {
-  bool inCheckedMode = false;
-  try {
-    var x = 42;
-    String a = x;
-  } catch (e) {
-    inCheckedMode = true;
-  }
-  if (inCheckedMode) {
-    Expect.throws(() => c.foo = 1, (e) => true);
-  }
-  c.foo = () {};
-}
-
-void main() {
-  test(new C());
-  test(new D());
-}
diff --git a/tests/language/function_subtype_simple0_test.dart b/tests/language/function_subtype_simple0_test.dart
deleted file mode 100644
index 929be52..0000000
--- a/tests/language/function_subtype_simple0_test.dart
+++ /dev/null
@@ -1,316 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of simple function types.
-
-import 'package:expect/expect.dart';
-
-typedef Args0();
-typedef Args1(a);
-typedef Args2(a, b);
-typedef Args3(a, b, c);
-typedef Args4(a, b, c, d);
-typedef Args5(a, b, c, d, e);
-typedef Args6(a, b, c, d, e, f);
-typedef Args7(a, b, c, d, e, f, g);
-typedef Args8(a, b, c, d, e, f, g, h);
-typedef Args9(a, b, c, d, e, f, g, h, i);
-typedef Args10(a, b, c, d, e, f, g, h, i, j);
-typedef Args11(a, b, c, d, e, f, g, h, i, j, k);
-typedef Args12(a, b, c, d, e, f, g, h, i, j, k, l);
-typedef Args13(a, b, c, d, e, f, g, h, i, j, k, l, m);
-typedef Args14(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
-typedef Args15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
-
-args0() {}
-args1(a) {}
-args2(a, b) {}
-args3(a, b, c) {}
-args4(a, b, c, d) {}
-args5(a, b, c, d, e) {}
-args6(a, b, c, d, e, f) {}
-args7(a, b, c, d, e, f, g) {}
-args8(a, b, c, d, e, f, g, h) {}
-args9(a, b, c, d, e, f, g, h, i) {}
-args10(a, b, c, d, e, f, g, h, i, j) {}
-args11(a, b, c, d, e, f, g, h, i, j, k) {}
-args12(a, b, c, d, e, f, g, h, i, j, k, l) {}
-args13(a, b, c, d, e, f, g, h, i, j, k, l, m) {}
-args14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) {}
-args15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) {}
-
-main() {
-  Expect.isTrue(args0 is Args0);
-  Expect.isFalse(args0 is Args1);
-  Expect.isFalse(args0 is Args2);
-  Expect.isFalse(args0 is Args3);
-  Expect.isFalse(args0 is Args4);
-  Expect.isFalse(args0 is Args5);
-  Expect.isFalse(args0 is Args6);
-  Expect.isFalse(args0 is Args7);
-  Expect.isFalse(args0 is Args8);
-  Expect.isFalse(args0 is Args9);
-  Expect.isFalse(args0 is Args10);
-  Expect.isFalse(args0 is Args11);
-  Expect.isFalse(args0 is Args12);
-  Expect.isFalse(args0 is Args13);
-  Expect.isFalse(args0 is Args14);
-  Expect.isFalse(args0 is Args15);
-
-  Expect.isFalse(args1 is Args0);
-  Expect.isTrue(args1 is Args1);
-  Expect.isFalse(args1 is Args2);
-  Expect.isFalse(args1 is Args3);
-  Expect.isFalse(args1 is Args4);
-  Expect.isFalse(args1 is Args5);
-  Expect.isFalse(args1 is Args6);
-  Expect.isFalse(args1 is Args7);
-  Expect.isFalse(args1 is Args8);
-  Expect.isFalse(args1 is Args9);
-  Expect.isFalse(args1 is Args10);
-  Expect.isFalse(args1 is Args11);
-  Expect.isFalse(args1 is Args12);
-  Expect.isFalse(args1 is Args13);
-  Expect.isFalse(args1 is Args14);
-  Expect.isFalse(args1 is Args15);
-
-  Expect.isFalse(args2 is Args0);
-  Expect.isFalse(args2 is Args1);
-  Expect.isTrue(args2 is Args2);
-  Expect.isFalse(args2 is Args3);
-  Expect.isFalse(args2 is Args4);
-  Expect.isFalse(args2 is Args5);
-  Expect.isFalse(args2 is Args6);
-  Expect.isFalse(args2 is Args7);
-  Expect.isFalse(args2 is Args8);
-  Expect.isFalse(args2 is Args9);
-  Expect.isFalse(args2 is Args10);
-  Expect.isFalse(args2 is Args11);
-  Expect.isFalse(args2 is Args12);
-  Expect.isFalse(args2 is Args13);
-  Expect.isFalse(args2 is Args14);
-  Expect.isFalse(args2 is Args15);
-
-  Expect.isFalse(args3 is Args0);
-  Expect.isFalse(args3 is Args1);
-  Expect.isFalse(args3 is Args2);
-  Expect.isTrue(args3 is Args3);
-  Expect.isFalse(args3 is Args4);
-  Expect.isFalse(args3 is Args5);
-  Expect.isFalse(args3 is Args6);
-  Expect.isFalse(args3 is Args7);
-  Expect.isFalse(args3 is Args8);
-  Expect.isFalse(args3 is Args9);
-  Expect.isFalse(args3 is Args10);
-  Expect.isFalse(args3 is Args11);
-  Expect.isFalse(args3 is Args12);
-  Expect.isFalse(args3 is Args13);
-  Expect.isFalse(args3 is Args14);
-  Expect.isFalse(args3 is Args15);
-
-  Expect.isFalse(args4 is Args0);
-  Expect.isFalse(args4 is Args1);
-  Expect.isFalse(args4 is Args2);
-  Expect.isFalse(args4 is Args3);
-  Expect.isTrue(args4 is Args4);
-  Expect.isFalse(args4 is Args5);
-  Expect.isFalse(args4 is Args6);
-  Expect.isFalse(args4 is Args7);
-  Expect.isFalse(args4 is Args8);
-  Expect.isFalse(args4 is Args9);
-  Expect.isFalse(args4 is Args10);
-  Expect.isFalse(args4 is Args11);
-  Expect.isFalse(args4 is Args12);
-  Expect.isFalse(args4 is Args13);
-  Expect.isFalse(args4 is Args14);
-  Expect.isFalse(args4 is Args15);
-
-  Expect.isFalse(args5 is Args0);
-  Expect.isFalse(args5 is Args1);
-  Expect.isFalse(args5 is Args2);
-  Expect.isFalse(args5 is Args3);
-  Expect.isFalse(args5 is Args4);
-  Expect.isTrue(args5 is Args5);
-  Expect.isFalse(args5 is Args6);
-  Expect.isFalse(args5 is Args7);
-  Expect.isFalse(args5 is Args8);
-  Expect.isFalse(args5 is Args9);
-  Expect.isFalse(args5 is Args10);
-  Expect.isFalse(args5 is Args11);
-  Expect.isFalse(args5 is Args12);
-  Expect.isFalse(args5 is Args13);
-  Expect.isFalse(args5 is Args14);
-  Expect.isFalse(args5 is Args15);
-
-  Expect.isFalse(args6 is Args0);
-  Expect.isFalse(args6 is Args1);
-  Expect.isFalse(args6 is Args2);
-  Expect.isFalse(args6 is Args3);
-  Expect.isFalse(args6 is Args4);
-  Expect.isFalse(args6 is Args5);
-  Expect.isTrue(args6 is Args6);
-  Expect.isFalse(args6 is Args7);
-  Expect.isFalse(args6 is Args8);
-  Expect.isFalse(args6 is Args9);
-  Expect.isFalse(args6 is Args10);
-  Expect.isFalse(args6 is Args11);
-  Expect.isFalse(args6 is Args12);
-  Expect.isFalse(args6 is Args13);
-  Expect.isFalse(args6 is Args14);
-  Expect.isFalse(args6 is Args15);
-
-  Expect.isFalse(args7 is Args0);
-  Expect.isFalse(args7 is Args1);
-  Expect.isFalse(args7 is Args2);
-  Expect.isFalse(args7 is Args3);
-  Expect.isFalse(args7 is Args4);
-  Expect.isFalse(args7 is Args5);
-  Expect.isFalse(args7 is Args6);
-  Expect.isTrue(args7 is Args7);
-  Expect.isFalse(args7 is Args8);
-  Expect.isFalse(args7 is Args9);
-  Expect.isFalse(args7 is Args10);
-  Expect.isFalse(args7 is Args11);
-  Expect.isFalse(args7 is Args12);
-  Expect.isFalse(args7 is Args13);
-  Expect.isFalse(args7 is Args14);
-  Expect.isFalse(args7 is Args15);
-
-  Expect.isFalse(args8 is Args0);
-  Expect.isFalse(args8 is Args1);
-  Expect.isFalse(args8 is Args2);
-  Expect.isFalse(args8 is Args3);
-  Expect.isFalse(args8 is Args4);
-  Expect.isFalse(args8 is Args5);
-  Expect.isFalse(args8 is Args6);
-  Expect.isFalse(args8 is Args7);
-  Expect.isTrue(args8 is Args8);
-  Expect.isFalse(args8 is Args9);
-  Expect.isFalse(args8 is Args10);
-  Expect.isFalse(args8 is Args11);
-  Expect.isFalse(args8 is Args12);
-  Expect.isFalse(args8 is Args13);
-  Expect.isFalse(args8 is Args14);
-  Expect.isFalse(args8 is Args15);
-
-  Expect.isFalse(args9 is Args0);
-  Expect.isFalse(args9 is Args1);
-  Expect.isFalse(args9 is Args2);
-  Expect.isFalse(args9 is Args3);
-  Expect.isFalse(args9 is Args4);
-  Expect.isFalse(args9 is Args5);
-  Expect.isFalse(args9 is Args6);
-  Expect.isFalse(args9 is Args7);
-  Expect.isFalse(args9 is Args8);
-  Expect.isTrue(args9 is Args9);
-  Expect.isFalse(args9 is Args10);
-  Expect.isFalse(args9 is Args11);
-  Expect.isFalse(args9 is Args12);
-  Expect.isFalse(args9 is Args13);
-  Expect.isFalse(args9 is Args14);
-  Expect.isFalse(args9 is Args15);
-
-  Expect.isFalse(args10 is Args0);
-  Expect.isFalse(args10 is Args1);
-  Expect.isFalse(args10 is Args2);
-  Expect.isFalse(args10 is Args3);
-  Expect.isFalse(args10 is Args4);
-  Expect.isFalse(args10 is Args5);
-  Expect.isFalse(args10 is Args6);
-  Expect.isFalse(args10 is Args7);
-  Expect.isFalse(args10 is Args8);
-  Expect.isFalse(args10 is Args9);
-  Expect.isTrue(args10 is Args10);
-  Expect.isFalse(args10 is Args11);
-  Expect.isFalse(args10 is Args12);
-  Expect.isFalse(args10 is Args13);
-  Expect.isFalse(args10 is Args14);
-  Expect.isFalse(args10 is Args15);
-
-  Expect.isFalse(args11 is Args0);
-  Expect.isFalse(args11 is Args1);
-  Expect.isFalse(args11 is Args2);
-  Expect.isFalse(args11 is Args3);
-  Expect.isFalse(args11 is Args4);
-  Expect.isFalse(args11 is Args5);
-  Expect.isFalse(args11 is Args6);
-  Expect.isFalse(args11 is Args7);
-  Expect.isFalse(args11 is Args8);
-  Expect.isFalse(args11 is Args9);
-  Expect.isFalse(args11 is Args10);
-  Expect.isTrue(args11 is Args11);
-  Expect.isFalse(args11 is Args12);
-  Expect.isFalse(args11 is Args13);
-  Expect.isFalse(args11 is Args14);
-  Expect.isFalse(args11 is Args15);
-
-  Expect.isFalse(args12 is Args0);
-  Expect.isFalse(args12 is Args1);
-  Expect.isFalse(args12 is Args2);
-  Expect.isFalse(args12 is Args3);
-  Expect.isFalse(args12 is Args4);
-  Expect.isFalse(args12 is Args5);
-  Expect.isFalse(args12 is Args6);
-  Expect.isFalse(args12 is Args7);
-  Expect.isFalse(args12 is Args8);
-  Expect.isFalse(args12 is Args9);
-  Expect.isFalse(args12 is Args10);
-  Expect.isFalse(args12 is Args11);
-  Expect.isTrue(args12 is Args12);
-  Expect.isFalse(args12 is Args13);
-  Expect.isFalse(args12 is Args14);
-  Expect.isFalse(args12 is Args15);
-
-  Expect.isFalse(args13 is Args0);
-  Expect.isFalse(args13 is Args1);
-  Expect.isFalse(args13 is Args2);
-  Expect.isFalse(args13 is Args3);
-  Expect.isFalse(args13 is Args4);
-  Expect.isFalse(args13 is Args5);
-  Expect.isFalse(args13 is Args6);
-  Expect.isFalse(args13 is Args7);
-  Expect.isFalse(args13 is Args8);
-  Expect.isFalse(args13 is Args9);
-  Expect.isFalse(args13 is Args10);
-  Expect.isFalse(args13 is Args11);
-  Expect.isFalse(args13 is Args12);
-  Expect.isTrue(args13 is Args13);
-  Expect.isFalse(args13 is Args14);
-  Expect.isFalse(args13 is Args15);
-
-  Expect.isFalse(args14 is Args0);
-  Expect.isFalse(args14 is Args1);
-  Expect.isFalse(args14 is Args2);
-  Expect.isFalse(args14 is Args3);
-  Expect.isFalse(args14 is Args4);
-  Expect.isFalse(args14 is Args5);
-  Expect.isFalse(args14 is Args6);
-  Expect.isFalse(args14 is Args7);
-  Expect.isFalse(args14 is Args8);
-  Expect.isFalse(args14 is Args9);
-  Expect.isFalse(args14 is Args10);
-  Expect.isFalse(args14 is Args11);
-  Expect.isFalse(args14 is Args12);
-  Expect.isFalse(args14 is Args13);
-  Expect.isTrue(args14 is Args14);
-  Expect.isFalse(args14 is Args15);
-
-  Expect.isFalse(args15 is Args0);
-  Expect.isFalse(args15 is Args1);
-  Expect.isFalse(args15 is Args2);
-  Expect.isFalse(args15 is Args3);
-  Expect.isFalse(args15 is Args4);
-  Expect.isFalse(args15 is Args5);
-  Expect.isFalse(args15 is Args6);
-  Expect.isFalse(args15 is Args7);
-  Expect.isFalse(args15 is Args8);
-  Expect.isFalse(args15 is Args9);
-  Expect.isFalse(args15 is Args10);
-  Expect.isFalse(args15 is Args11);
-  Expect.isFalse(args15 is Args12);
-  Expect.isFalse(args15 is Args13);
-  Expect.isFalse(args15 is Args14);
-  Expect.isTrue(args15 is Args15);
-}
diff --git a/tests/language/function_subtype_simple1_test.dart b/tests/language/function_subtype_simple1_test.dart
deleted file mode 100644
index dc276c5..0000000
--- a/tests/language/function_subtype_simple1_test.dart
+++ /dev/null
@@ -1,322 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of simple function types.
-
-import 'package:expect/expect.dart';
-
-typedef Args0();
-typedef Args1(a);
-typedef Args2(a, b);
-typedef Args3(a, b, c);
-typedef Args4(a, b, c, d);
-typedef Args5(a, b, c, d, e);
-typedef Args6(a, b, c, d, e, f);
-typedef Args7(a, b, c, d, e, f, g);
-typedef Args8(a, b, c, d, e, f, g, h);
-typedef Args9(a, b, c, d, e, f, g, h, i);
-typedef Args10(a, b, c, d, e, f, g, h, i, j);
-typedef Args11(a, b, c, d, e, f, g, h, i, j, k);
-typedef Args12(a, b, c, d, e, f, g, h, i, j, k, l);
-typedef Args13(a, b, c, d, e, f, g, h, i, j, k, l, m);
-typedef Args14(a, b, c, d, e, f, g, h, i, j, k, l, m, n);
-typedef Args15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
-
-void args0() {}
-void args1(int a) {}
-void args2(int a, int b) {}
-void args3(int a, int b, int c) {}
-void args4(int a, int b, int c, int d) {}
-void args5(int a, int b, int c, int d, int e) {}
-void args6(int a, int b, int c, int d, int e, int f) {}
-void args7(int a, int b, int c, int d, int e, int f, int g) {}
-void args8(int a, int b, int c, int d, int e, int f, int g, int h) {}
-void args9(int a, int b, int c, int d, int e, int f, int g, int h, int i) {}
-void args10(
-    int a, int b, int c, int d, int e, int f, int g, int h, int i, int j) {}
-void args11(int a, int b, int c, int d, int e, int f, int g, int h, int i,
-    int j, int k) {}
-void args12(int a, int b, int c, int d, int e, int f, int g, int h, int i,
-    int j, int k, int l) {}
-void args13(int a, int b, int c, int d, int e, int f, int g, int h, int i,
-    int j, int k, int l, int m) {}
-void args14(int a, int b, int c, int d, int e, int f, int g, int h, int i,
-    int j, int k, int l, int m, int n) {}
-void args15(int a, int b, int c, int d, int e, int f, int g, int h, int i,
-    int j, int k, int l, int m, int n, int o) {}
-
-main() {
-  Expect.isTrue(args0 is Args0);
-  Expect.isFalse(args0 is Args1);
-  Expect.isFalse(args0 is Args2);
-  Expect.isFalse(args0 is Args3);
-  Expect.isFalse(args0 is Args4);
-  Expect.isFalse(args0 is Args5);
-  Expect.isFalse(args0 is Args6);
-  Expect.isFalse(args0 is Args7);
-  Expect.isFalse(args0 is Args8);
-  Expect.isFalse(args0 is Args9);
-  Expect.isFalse(args0 is Args10);
-  Expect.isFalse(args0 is Args11);
-  Expect.isFalse(args0 is Args12);
-  Expect.isFalse(args0 is Args13);
-  Expect.isFalse(args0 is Args14);
-  Expect.isFalse(args0 is Args15);
-
-  Expect.isFalse(args1 is Args0);
-  Expect.isTrue(args1 is Args1);
-  Expect.isFalse(args1 is Args2);
-  Expect.isFalse(args1 is Args3);
-  Expect.isFalse(args1 is Args4);
-  Expect.isFalse(args1 is Args5);
-  Expect.isFalse(args1 is Args6);
-  Expect.isFalse(args1 is Args7);
-  Expect.isFalse(args1 is Args8);
-  Expect.isFalse(args1 is Args9);
-  Expect.isFalse(args1 is Args10);
-  Expect.isFalse(args1 is Args11);
-  Expect.isFalse(args1 is Args12);
-  Expect.isFalse(args1 is Args13);
-  Expect.isFalse(args1 is Args14);
-  Expect.isFalse(args1 is Args15);
-
-  Expect.isFalse(args2 is Args0);
-  Expect.isFalse(args2 is Args1);
-  Expect.isTrue(args2 is Args2);
-  Expect.isFalse(args2 is Args3);
-  Expect.isFalse(args2 is Args4);
-  Expect.isFalse(args2 is Args5);
-  Expect.isFalse(args2 is Args6);
-  Expect.isFalse(args2 is Args7);
-  Expect.isFalse(args2 is Args8);
-  Expect.isFalse(args2 is Args9);
-  Expect.isFalse(args2 is Args10);
-  Expect.isFalse(args2 is Args11);
-  Expect.isFalse(args2 is Args12);
-  Expect.isFalse(args2 is Args13);
-  Expect.isFalse(args2 is Args14);
-  Expect.isFalse(args2 is Args15);
-
-  Expect.isFalse(args3 is Args0);
-  Expect.isFalse(args3 is Args1);
-  Expect.isFalse(args3 is Args2);
-  Expect.isTrue(args3 is Args3);
-  Expect.isFalse(args3 is Args4);
-  Expect.isFalse(args3 is Args5);
-  Expect.isFalse(args3 is Args6);
-  Expect.isFalse(args3 is Args7);
-  Expect.isFalse(args3 is Args8);
-  Expect.isFalse(args3 is Args9);
-  Expect.isFalse(args3 is Args10);
-  Expect.isFalse(args3 is Args11);
-  Expect.isFalse(args3 is Args12);
-  Expect.isFalse(args3 is Args13);
-  Expect.isFalse(args3 is Args14);
-  Expect.isFalse(args3 is Args15);
-
-  Expect.isFalse(args4 is Args0);
-  Expect.isFalse(args4 is Args1);
-  Expect.isFalse(args4 is Args2);
-  Expect.isFalse(args4 is Args3);
-  Expect.isTrue(args4 is Args4);
-  Expect.isFalse(args4 is Args5);
-  Expect.isFalse(args4 is Args6);
-  Expect.isFalse(args4 is Args7);
-  Expect.isFalse(args4 is Args8);
-  Expect.isFalse(args4 is Args9);
-  Expect.isFalse(args4 is Args10);
-  Expect.isFalse(args4 is Args11);
-  Expect.isFalse(args4 is Args12);
-  Expect.isFalse(args4 is Args13);
-  Expect.isFalse(args4 is Args14);
-  Expect.isFalse(args4 is Args15);
-
-  Expect.isFalse(args5 is Args0);
-  Expect.isFalse(args5 is Args1);
-  Expect.isFalse(args5 is Args2);
-  Expect.isFalse(args5 is Args3);
-  Expect.isFalse(args5 is Args4);
-  Expect.isTrue(args5 is Args5);
-  Expect.isFalse(args5 is Args6);
-  Expect.isFalse(args5 is Args7);
-  Expect.isFalse(args5 is Args8);
-  Expect.isFalse(args5 is Args9);
-  Expect.isFalse(args5 is Args10);
-  Expect.isFalse(args5 is Args11);
-  Expect.isFalse(args5 is Args12);
-  Expect.isFalse(args5 is Args13);
-  Expect.isFalse(args5 is Args14);
-  Expect.isFalse(args5 is Args15);
-
-  Expect.isFalse(args6 is Args0);
-  Expect.isFalse(args6 is Args1);
-  Expect.isFalse(args6 is Args2);
-  Expect.isFalse(args6 is Args3);
-  Expect.isFalse(args6 is Args4);
-  Expect.isFalse(args6 is Args5);
-  Expect.isTrue(args6 is Args6);
-  Expect.isFalse(args6 is Args7);
-  Expect.isFalse(args6 is Args8);
-  Expect.isFalse(args6 is Args9);
-  Expect.isFalse(args6 is Args10);
-  Expect.isFalse(args6 is Args11);
-  Expect.isFalse(args6 is Args12);
-  Expect.isFalse(args6 is Args13);
-  Expect.isFalse(args6 is Args14);
-  Expect.isFalse(args6 is Args15);
-
-  Expect.isFalse(args7 is Args0);
-  Expect.isFalse(args7 is Args1);
-  Expect.isFalse(args7 is Args2);
-  Expect.isFalse(args7 is Args3);
-  Expect.isFalse(args7 is Args4);
-  Expect.isFalse(args7 is Args5);
-  Expect.isFalse(args7 is Args6);
-  Expect.isTrue(args7 is Args7);
-  Expect.isFalse(args7 is Args8);
-  Expect.isFalse(args7 is Args9);
-  Expect.isFalse(args7 is Args10);
-  Expect.isFalse(args7 is Args11);
-  Expect.isFalse(args7 is Args12);
-  Expect.isFalse(args7 is Args13);
-  Expect.isFalse(args7 is Args14);
-  Expect.isFalse(args7 is Args15);
-
-  Expect.isFalse(args8 is Args0);
-  Expect.isFalse(args8 is Args1);
-  Expect.isFalse(args8 is Args2);
-  Expect.isFalse(args8 is Args3);
-  Expect.isFalse(args8 is Args4);
-  Expect.isFalse(args8 is Args5);
-  Expect.isFalse(args8 is Args6);
-  Expect.isFalse(args8 is Args7);
-  Expect.isTrue(args8 is Args8);
-  Expect.isFalse(args8 is Args9);
-  Expect.isFalse(args8 is Args10);
-  Expect.isFalse(args8 is Args11);
-  Expect.isFalse(args8 is Args12);
-  Expect.isFalse(args8 is Args13);
-  Expect.isFalse(args8 is Args14);
-  Expect.isFalse(args8 is Args15);
-
-  Expect.isFalse(args9 is Args0);
-  Expect.isFalse(args9 is Args1);
-  Expect.isFalse(args9 is Args2);
-  Expect.isFalse(args9 is Args3);
-  Expect.isFalse(args9 is Args4);
-  Expect.isFalse(args9 is Args5);
-  Expect.isFalse(args9 is Args6);
-  Expect.isFalse(args9 is Args7);
-  Expect.isFalse(args9 is Args8);
-  Expect.isTrue(args9 is Args9);
-  Expect.isFalse(args9 is Args10);
-  Expect.isFalse(args9 is Args11);
-  Expect.isFalse(args9 is Args12);
-  Expect.isFalse(args9 is Args13);
-  Expect.isFalse(args9 is Args14);
-  Expect.isFalse(args9 is Args15);
-
-  Expect.isFalse(args10 is Args0);
-  Expect.isFalse(args10 is Args1);
-  Expect.isFalse(args10 is Args2);
-  Expect.isFalse(args10 is Args3);
-  Expect.isFalse(args10 is Args4);
-  Expect.isFalse(args10 is Args5);
-  Expect.isFalse(args10 is Args6);
-  Expect.isFalse(args10 is Args7);
-  Expect.isFalse(args10 is Args8);
-  Expect.isFalse(args10 is Args9);
-  Expect.isTrue(args10 is Args10);
-  Expect.isFalse(args10 is Args11);
-  Expect.isFalse(args10 is Args12);
-  Expect.isFalse(args10 is Args13);
-  Expect.isFalse(args10 is Args14);
-  Expect.isFalse(args10 is Args15);
-
-  Expect.isFalse(args11 is Args0);
-  Expect.isFalse(args11 is Args1);
-  Expect.isFalse(args11 is Args2);
-  Expect.isFalse(args11 is Args3);
-  Expect.isFalse(args11 is Args4);
-  Expect.isFalse(args11 is Args5);
-  Expect.isFalse(args11 is Args6);
-  Expect.isFalse(args11 is Args7);
-  Expect.isFalse(args11 is Args8);
-  Expect.isFalse(args11 is Args9);
-  Expect.isFalse(args11 is Args10);
-  Expect.isTrue(args11 is Args11);
-  Expect.isFalse(args11 is Args12);
-  Expect.isFalse(args11 is Args13);
-  Expect.isFalse(args11 is Args14);
-  Expect.isFalse(args11 is Args15);
-
-  Expect.isFalse(args12 is Args0);
-  Expect.isFalse(args12 is Args1);
-  Expect.isFalse(args12 is Args2);
-  Expect.isFalse(args12 is Args3);
-  Expect.isFalse(args12 is Args4);
-  Expect.isFalse(args12 is Args5);
-  Expect.isFalse(args12 is Args6);
-  Expect.isFalse(args12 is Args7);
-  Expect.isFalse(args12 is Args8);
-  Expect.isFalse(args12 is Args9);
-  Expect.isFalse(args12 is Args10);
-  Expect.isFalse(args12 is Args11);
-  Expect.isTrue(args12 is Args12);
-  Expect.isFalse(args12 is Args13);
-  Expect.isFalse(args12 is Args14);
-  Expect.isFalse(args12 is Args15);
-
-  Expect.isFalse(args13 is Args0);
-  Expect.isFalse(args13 is Args1);
-  Expect.isFalse(args13 is Args2);
-  Expect.isFalse(args13 is Args3);
-  Expect.isFalse(args13 is Args4);
-  Expect.isFalse(args13 is Args5);
-  Expect.isFalse(args13 is Args6);
-  Expect.isFalse(args13 is Args7);
-  Expect.isFalse(args13 is Args8);
-  Expect.isFalse(args13 is Args9);
-  Expect.isFalse(args13 is Args10);
-  Expect.isFalse(args13 is Args11);
-  Expect.isFalse(args13 is Args12);
-  Expect.isTrue(args13 is Args13);
-  Expect.isFalse(args13 is Args14);
-  Expect.isFalse(args13 is Args15);
-
-  Expect.isFalse(args14 is Args0);
-  Expect.isFalse(args14 is Args1);
-  Expect.isFalse(args14 is Args2);
-  Expect.isFalse(args14 is Args3);
-  Expect.isFalse(args14 is Args4);
-  Expect.isFalse(args14 is Args5);
-  Expect.isFalse(args14 is Args6);
-  Expect.isFalse(args14 is Args7);
-  Expect.isFalse(args14 is Args8);
-  Expect.isFalse(args14 is Args9);
-  Expect.isFalse(args14 is Args10);
-  Expect.isFalse(args14 is Args11);
-  Expect.isFalse(args14 is Args12);
-  Expect.isFalse(args14 is Args13);
-  Expect.isTrue(args14 is Args14);
-  Expect.isFalse(args14 is Args15);
-
-  Expect.isFalse(args15 is Args0);
-  Expect.isFalse(args15 is Args1);
-  Expect.isFalse(args15 is Args2);
-  Expect.isFalse(args15 is Args3);
-  Expect.isFalse(args15 is Args4);
-  Expect.isFalse(args15 is Args5);
-  Expect.isFalse(args15 is Args6);
-  Expect.isFalse(args15 is Args7);
-  Expect.isFalse(args15 is Args8);
-  Expect.isFalse(args15 is Args9);
-  Expect.isFalse(args15 is Args10);
-  Expect.isFalse(args15 is Args11);
-  Expect.isFalse(args15 is Args12);
-  Expect.isFalse(args15 is Args13);
-  Expect.isFalse(args15 is Args14);
-  Expect.isTrue(args15 is Args15);
-}
diff --git a/tests/language/function_subtype_simple2_test.dart b/tests/language/function_subtype_simple2_test.dart
deleted file mode 100644
index 119869b..0000000
--- a/tests/language/function_subtype_simple2_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of simple function types.
-
-import 'package:expect/expect.dart';
-
-typedef Args0();
-typedef Args1(a);
-typedef Args2(a, b);
-typedef Args3(a, b, c);
-typedef Args4(a, b, c, d);
-
-args0_1([a]) {}
-args1_2(a, [b]) {}
-args0_2([a, b]) {}
-args1_3(a, [b, c]) {}
-
-args0_1_named({a}) {}
-args1_2_named(a, {b}) {}
-args0_2_named({a, b}) {}
-args1_3_named(a, {b, c}) {}
-
-main() {
-  Expect.isTrue(args0_1 is Args0);
-  Expect.isTrue(args0_1 is Args1);
-  Expect.isFalse(args0_1 is Args2);
-  Expect.isFalse(args0_1 is Args3);
-  Expect.isFalse(args0_1 is Args4);
-
-  Expect.isFalse(args1_2 is Args0);
-  Expect.isTrue(args1_2 is Args1);
-  Expect.isTrue(args1_2 is Args2);
-  Expect.isFalse(args1_2 is Args3);
-  Expect.isFalse(args1_2 is Args4);
-
-  Expect.isTrue(args0_2 is Args0);
-  Expect.isTrue(args0_2 is Args1);
-  Expect.isTrue(args0_2 is Args2);
-  Expect.isFalse(args0_2 is Args3);
-  Expect.isFalse(args0_2 is Args4);
-
-  Expect.isFalse(args1_3 is Args0);
-  Expect.isTrue(args1_3 is Args1);
-  Expect.isTrue(args1_3 is Args2);
-  Expect.isTrue(args1_3 is Args3);
-  Expect.isFalse(args1_3 is Args4);
-
-  Expect.isTrue(args0_1_named is Args0);
-  Expect.isFalse(args0_1_named is Args1);
-  Expect.isFalse(args0_1_named is Args2);
-  Expect.isFalse(args0_1_named is Args3);
-  Expect.isFalse(args0_1_named is Args4);
-
-  Expect.isFalse(args1_2_named is Args0);
-  Expect.isTrue(args1_2_named is Args1);
-  Expect.isFalse(args1_2_named is Args2);
-  Expect.isFalse(args1_2_named is Args3);
-  Expect.isFalse(args1_2_named is Args4);
-
-  Expect.isTrue(args0_2_named is Args0);
-  Expect.isFalse(args0_2_named is Args1);
-  Expect.isFalse(args0_2_named is Args2);
-  Expect.isFalse(args0_2_named is Args3);
-  Expect.isFalse(args0_2_named is Args4);
-
-  Expect.isFalse(args1_3_named is Args0);
-  Expect.isTrue(args1_3_named is Args1);
-  Expect.isFalse(args1_3_named is Args2);
-  Expect.isFalse(args1_3_named is Args3);
-  Expect.isFalse(args1_3_named is Args4);
-}
diff --git a/tests/language/function_subtype_top_level0_test.dart b/tests/language/function_subtype_top_level0_test.dart
deleted file mode 100644
index ddc66f3..0000000
--- a/tests/language/function_subtype_top_level0_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for top level functions.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo(bool a, [String b]);
-typedef int Bar(bool a, [String b]);
-typedef int Baz(bool a, {String b});
-typedef int Boz(bool a);
-
-int foo(bool a, [String b]) => null;
-int baz(bool a, {String b}) => null;
-int boz(bool a, {int b}) => null;
-
-main() {
-  Expect.isTrue(foo is Foo, 'foo is Foo');
-  Expect.isTrue(foo is Bar, 'foo is Bar');
-  Expect.isFalse(foo is Baz, 'foo is Baz');
-  Expect.isTrue(foo is Boz, 'foo is Boz');
-
-  Expect.isFalse(baz is Foo, 'foo is Foo');
-  Expect.isFalse(baz is Bar, 'foo is Bar');
-  Expect.isTrue(baz is Baz, 'foo is Baz');
-  Expect.isTrue(baz is Boz, 'foo is Boz');
-
-  Expect.isFalse(boz is Foo, 'foo is Foo');
-  Expect.isFalse(boz is Bar, 'foo is Bar');
-  Expect.isFalse(boz is Baz, 'foo is Baz');
-  Expect.isTrue(boz is Boz, 'foo is Boz');
-}
diff --git a/tests/language/function_subtype_top_level1_test.dart b/tests/language/function_subtype_top_level1_test.dart
deleted file mode 100644
index bc89332..0000000
--- a/tests/language/function_subtype_top_level1_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping for top level functions.
-
-import 'package:expect/expect.dart';
-
-typedef int Foo<T>(T a, [String b]);
-typedef int Bar<T>(T a, [String b]);
-typedef int Baz<T>(T a, {String b});
-typedef int Boz<T>(T a);
-
-int foo(bool a, [String b]) => null;
-int baz(bool a, {String b}) => null;
-int boz(bool a, {int b}) => null;
-
-class C<T> {
-  void test(String nameOfT, bool expectedResult) {
-    Expect.equals(expectedResult, foo is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.equals(expectedResult, foo is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.isFalse(foo is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, foo is Boz<T>, 'foo is Boz<$nameOfT>');
-
-    Expect.isFalse(baz is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.isFalse(baz is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.equals(expectedResult, baz is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, baz is Boz<T>, 'foo is Boz<$nameOfT>');
-
-    Expect.isFalse(boz is Foo<T>, 'foo is Foo<$nameOfT>');
-    Expect.isFalse(boz is Bar<T>, 'foo is Bar<$nameOfT>');
-    Expect.isFalse(boz is Baz<T>, 'foo is Baz<$nameOfT>');
-    Expect.equals(expectedResult, boz is Boz<T>, 'foo is Boz<$nameOfT>');
-  }
-}
-
-main() {
-  new C<bool>().test('bool', true);
-  new C<int>().test('int', false);
-  new C().test('dynamic', true);
-}
diff --git a/tests/language/function_subtype_typearg0_test.dart b/tests/language/function_subtype_typearg0_test.dart
deleted file mode 100644
index ef39ba9..0000000
--- a/tests/language/function_subtype_typearg0_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping with type variables in factory constructors.
-
-import 'package:expect/expect.dart';
-
-typedef void Foo();
-
-class A<T> {
-  bool foo(a) => a is T;
-}
-
-void bar1() {}
-void bar2(i) {}
-
-void main() {
-  void bar3() {}
-  void bar4(i) {}
-
-  Expect.isTrue(new A<Foo>().foo(bar1));
-  Expect.isFalse(new A<Foo>().foo(bar2));
-  Expect.isTrue(new A<Foo>().foo(bar3));
-  Expect.isFalse(new A<Foo>().foo(bar4));
-  Expect.isTrue(new A<Foo>().foo(() {}));
-  Expect.isFalse(new A<Foo>().foo((i) {}));
-}
diff --git a/tests/language/function_subtype_typearg1_test.dart b/tests/language/function_subtype_typearg1_test.dart
deleted file mode 100644
index 1d6e473..0000000
--- a/tests/language/function_subtype_typearg1_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of type arguments.
-
-import 'package:expect/expect.dart';
-
-class C<T> {}
-
-class I {}
-
-class J extends I {}
-
-typedef void f1(C<J> c);
-typedef void f2(C<I> c);
-
-main() {
-  Expect.isTrue(new C<f2>() is C<f1>);
-}
diff --git a/tests/language/function_subtype_typearg2_test.dart b/tests/language/function_subtype_typearg2_test.dart
deleted file mode 100644
index c8d0f7a..0000000
--- a/tests/language/function_subtype_typearg2_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of type arguments.
-
-import 'package:expect/expect.dart';
-
-class C<T> {}
-
-class I {}
-
-class J extends I {}
-
-typedef void f1(C<J> c);
-typedef void f2(C<I> c);
-
-main() {
-  Expect.isTrue(new C<f1>() is C<f2>);
-}
diff --git a/tests/language/function_subtype_typearg3_test.dart b/tests/language/function_subtype_typearg3_test.dart
deleted file mode 100644
index e39c2ed..0000000
--- a/tests/language/function_subtype_typearg3_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of type arguments.
-
-import 'package:expect/expect.dart';
-
-class C<T> {}
-
-class I {}
-
-class J extends I {}
-
-typedef J f1();
-typedef I f2();
-
-main() {
-  Expect.isTrue(new C<f1>() is C<f2>);
-}
diff --git a/tests/language/function_subtype_typearg4_test.dart b/tests/language/function_subtype_typearg4_test.dart
deleted file mode 100644
index 1c5e786..0000000
--- a/tests/language/function_subtype_typearg4_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for constructors and initializers.
-
-// Check function subtyping of type arguments.
-
-import 'package:expect/expect.dart';
-
-class C<T> {}
-
-class I {}
-
-class J extends I {}
-
-typedef I f1();
-typedef J f2();
-
-main() {
-  Expect.isTrue(new C<f1>() is C<f2>);
-}
diff --git a/tests/language/function_subtype_typearg5_test.dart b/tests/language/function_subtype_typearg5_test.dart
deleted file mode 100644
index 03529e7..0000000
--- a/tests/language/function_subtype_typearg5_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// 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.
-
-// Check function subtyping of type arguments. These cases use typedefs as type
-// arguments, and the typedefs have type parameters that are used more than
-// once.
-
-import 'package:expect/expect.dart';
-
-typedef A F<A>(A arg1, A arg2);
-typedef B G<A, B>(B arg1, B arg2);
-
-typedef Set<A> FS<A>(Set<A> arg1, Set<A> arg2);
-
-@NoInline()
-@AssumeDynamic()
-dyn(x) => x;
-
-class CheckEnv<X, Y> {
-  test(bool intX) {
-    Expect.isTrue(<F<X>>[] is List<F>);
-    Expect.isTrue(<F<X>>[] is List<F<X>>);
-    Expect.isTrue(<F<X>>[] is List<G<Y, X>>);
-
-    Expect.isTrue(dyn(<F<X>>[]) is List<F>);
-    Expect.isTrue(dyn(<F<X>>[]) is List<F<X>>);
-    Expect.isTrue(dyn(<F<X>>[]) is List<G<Y, X>>);
-
-    Expect.isTrue(<F<X>>[] is! List<F<Y>>);
-    Expect.isTrue(<F<X>>[] is! List<G<X, Y>>);
-
-    Expect.isTrue(dyn(<F<X>>[]) is! List<F<Y>>);
-    Expect.isTrue(dyn(<F<X>>[]) is! List<G<X, Y>>);
-
-    Expect.isTrue(dyn(<FS<X>>[]) is List<FS>);
-    Expect.isTrue(dyn(<FS<X>>[]) is List<FS<X>>);
-    if (intX) {
-      Expect.isTrue(dyn(<FS<X>>[]) is List<FS<int>>);
-      Expect.isTrue(dyn(<FS<int>>[]) is List<FS<X>>);
-      Expect.isTrue(dyn(<FS<Y>>[]) is! List<FS<int>>);
-      Expect.isTrue(dyn(<FS<int>>[]) is! List<FS<Y>>);
-    }
-  }
-}
-
-main() {
-  Expect.isTrue(<F<int>>[] is List<F<int>>);
-  Expect.isTrue(dyn(<F<int>>[]) is List<F<int>>);
-  Expect.isTrue(<F<int>>[] is List<G<bool, int>>);
-  Expect.isTrue(dyn(<F<int>>[]) is List<G<bool, int>>);
-
-  new CheckEnv<int, String>().test(true);
-  new CheckEnv<String, int>().test(false);
-}
diff --git a/tests/language/function_syntax_test.dart b/tests/language/function_syntax_test.dart
deleted file mode 100644
index 3baf2df..0000000
--- a/tests/language/function_syntax_test.dart
+++ /dev/null
@@ -1,733 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests function statement and expression syntax.
-
-class FunctionSyntaxTest {
-  static void testMain
-/* //# 00: syntax error
-      ()
-*/ //# 00: continued
-  {
-    testNestedFunctions();
-    testFunctionExpressions();
-    testPrecedence();
-    testInitializers();
-    testFunctionParameter();
-    testFunctionIdentifierExpression();
-    testFunctionIdentifierStatement();
-  }
-
-  static void testNestedFunctions
-/* //# 01: syntax error
-      ()
-*/ //# 01: continued
-  {
-    // No types - braces.
-    nb0
-/* //# 02: syntax error
-        ()
-*/ //# 02: continued
-    {
-      return 42;
-    }
-
-    nb1
-/* //# 03: syntax error
-        (a)
-*/ //# 03: continued
-    {
-      return a;
-    }
-
-    nb2
-/* //# 04: syntax error
-        (a, b)
-*/ //# 04: continued
-    {
-      return a + b;
-    }
-
-    Expect.equals(42, nb0());
-    Expect.equals(87, nb1(87));
-    Expect.equals(1 + 2, nb2(1, 2));
-
-    // No types - arrows.
-    na0
-/* //# 05: syntax error
-        ()
-*/ //# 05: continued
-            =>
-            42;
-    na1
-/* //# 06: syntax error
-        (a)
-*/ //# 06: continued
-            =>
-            a;
-    na2
-/* //# 07: syntax error
-        (a, b)
-*/ //# 07: continued
-            =>
-            a + b;
-    Expect.equals(42, na0());
-    Expect.equals(87, na1(87));
-    Expect.equals(1 + 2, na2(1, 2));
-
-    // Return type - braces.
-    int rb0
-/* //# 08: syntax error
-        ()
-*/ //# 08: continued
-    {
-      return 42;
-    }
-
-    int rb1
-/* //# 09: syntax error
-        (a)
-*/ //# 09: continued
-    {
-      return a;
-    }
-
-    int rb2
-/* //# 10: syntax error
-        (a, b)
-*/ //# 10: continued
-    {
-      return a + b;
-    }
-
-    Expect.equals(42, rb0());
-    Expect.equals(87, rb1(87));
-    Expect.equals(1 + 2, rb2(1, 2));
-
-    // Return type - arrows.
-    int ra0
-/* //# 11: syntax error
-        ()
-*/ //# 11: continued
-            =>
-            42;
-    int ra1
-/* //# 12: syntax error
-        (a)
-*/ //# 12: continued
-            =>
-            a;
-    int ra2
-/* //# 13: syntax error
-        (a, b)
-*/ //# 13: continued
-            =>
-            a + b;
-    Expect.equals(42, ra0());
-    Expect.equals(87, ra1(87));
-    Expect.equals(1 + 2, ra2(1, 2));
-
-    // Fully typed - braces.
-    int fb1
-/* //# 14: syntax error
-        (int a)
-*/ //# 14: continued
-    {
-      return a;
-    }
-
-    int fb2
-/* //# 15: syntax error
-        (int a, int b)
-*/ //# 15: continued
-    {
-      return a + b;
-    }
-
-    Expect.equals(42, rb0());
-    Expect.equals(87, rb1(87));
-    Expect.equals(1 + 2, rb2(1, 2));
-
-    // Fully typed - arrows.
-    int fa1
-/* //# 16: syntax error
-        (int a)
-*/ //# 16: continued
-            =>
-            a;
-    int fa2
-/* //# 17: syntax error
-        (int a, int b)
-*/ //# 17: continued
-            =>
-            a + b;
-    Expect.equals(42, ra0());
-    Expect.equals(87, ra1(87));
-    Expect.equals(1 + 2, ra2(1, 2));
-
-    // Generic types - braces.
-    List<int> gb0
-/* //# 18: syntax error
-        ()
-*/ //# 18: continued
-    {
-      return [42];
-    }
-
-    List<int> gb1
-/* //# 19: syntax error
-        (List<int> a)
-*/ //# 19: continued
-    {
-      return a;
-    }
-
-    Expect.equals(42, gb0()[0]);
-    Expect.equals(87, gb1([87])[0]);
-
-    // Generic types - arrows.
-    List<int> ga0
-/* //# 20: syntax error
-        ()
-*/ //# 20: continued
-            =>
-            [42];
-    List<int> ga1
-/* //# 21: syntax error
-        (List<int> a)
-*/ //# 21: continued
-            =>
-            a;
-    Expect.equals(42, ga0()[0]);
-    Expect.equals(87, ga1([87])[0]);
-  }
-
-  static void testFunctionExpressions
-/* //# 22: syntax error
-      ()
-*/ //# 22: continued
-  {
-    eval0
-/* //# 23: syntax error
-        (fn)
-*/ //# 23: continued
-            =>
-            fn();
-    eval1
-/* //# 24: syntax error
-        (fn, a)
-*/ //# 24: continued
-            =>
-            fn(a);
-    eval2
-/* //# 25: syntax error
-        (fn, a, b)
-*/ //# 25: continued
-            =>
-            fn(a, b);
-
-    // No types - braces.
-    Expect.equals(42, eval0(
-/* //# 26: syntax error
-        ()
-*/ //# 26: continued
-        {
-      return 42;
-    }));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 27: syntax error
-            (a)
-*/ //# 27: continued
-            {
-          return a;
-        }, 87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 28: syntax error
-            (a, b)
-*/ //# 28: continued
-            {
-          return a + b;
-        }, 1, 2));
-    Expect.equals(42, eval0(
-/* //# 29: syntax error
-        ()
-*/ //# 29: continued
-        {
-      return 42;
-    }));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 30: syntax error
-            (a)
-*/ //# 30: continued
-            {
-          return a;
-        }, 87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 31: syntax error
-            (a, b)
-*/ //# 31: continued
-            {
-          return a + b;
-        }, 1, 2));
-
-    // No types - arrows.
-    Expect.equals(
-        42,
-        eval0(
-/* //# 32: syntax error
-            ()
-*/ //# 32: continued
-                =>
-                42));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 33: syntax error
-            (a)
-*/ //# 33: continued
-                =>
-                a,
-            87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 34: syntax error
-            (a, b)
-*/ //# 34: continued
-                =>
-                a + b,
-            1,
-            2));
-    Expect.equals(
-        42,
-        eval0(
-/* //# 35: syntax error
-            ()
-*/ //# 35: continued
-                =>
-                42));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 36: syntax error
-            (a)
-*/ //# 36: continued
-                =>
-                a,
-            87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 37: syntax error
-            (a, b)
-*/ //# 37: continued
-                =>
-                a + b,
-            1,
-            2));
-
-    // Argument types - braces.
-    Expect.equals(42, eval0(
-/* //# 44: syntax error
-        ()
-*/ //# 44: continued
-        {
-      return 42;
-    }));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 45: syntax error
-            (int a)
-*/ //# 45: continued
-            {
-          return a;
-        }, 87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 46: syntax error
-            (int a, int b)
-*/ //# 46: continued
-            {
-          return a + b;
-        }, 1, 2));
-    Expect.equals(42, eval0(
-/* //# 47: syntax error
-        ()
-*/ //# 47: continued
-        {
-      return 42;
-    }));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 48: syntax error
-            (int a)
-*/ //# 48: continued
-            {
-          return a;
-        }, 87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 49: syntax error
-            (int a, int b)
-*/ //# 49: continued
-            {
-          return a + b;
-        }, 1, 2));
-
-    // Argument types - arrows.
-    Expect.equals(
-        42,
-        eval0(
-/* //# 50: syntax error
-            ()
-*/ //# 50: continued
-                =>
-                42));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 51: syntax error
-            (int a)
-*/ //# 51: continued
-                =>
-                a,
-            87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 52: syntax error
-            (int a, int b)
-*/ //# 52: continued
-                =>
-                a + b,
-            1,
-            2));
-    Expect.equals(
-        42,
-        eval0(
-/* //# 53: syntax error
-            ()
-*/ //# 53: continued
-                =>
-                42));
-    Expect.equals(
-        87,
-        eval1(
-/* //# 54: syntax error
-            (int a)
-*/ //# 54: continued
-                =>
-                a,
-            87));
-    Expect.equals(
-        1 + 2,
-        eval2(
-/* //# 55: syntax error
-            (int a, int b)
-*/ //# 55: continued
-                =>
-                a + b,
-            1,
-            2));
-  }
-
-  static void testPrecedence
-/* //# 64: syntax error
-      ()
-*/ //# 64: continued
-  {
-    expectEvaluatesTo
-/* //# 65: syntax error
-        (value, fn)
-*/ //# 65: continued
-    {
-      Expect.equals(value, fn());
-    }
-
-    // Assignment.
-    var x;
-    expectEvaluatesTo(42, () => x = 42);
-    Expect.equals(42, x);
-    x = 1;
-    expectEvaluatesTo(100, () => x += 99);
-    Expect.equals(100, x);
-    x = 1;
-    expectEvaluatesTo(87, () => x *= 87);
-    Expect.equals(87, x);
-
-    // Conditional.
-    expectEvaluatesTo(42, () => true ? 42 : 87);
-    expectEvaluatesTo(87, () => false ? 42 : 87);
-
-    // Logical or.
-    expectEvaluatesTo(true, () => true || true);
-    expectEvaluatesTo(true, () => true || false);
-    expectEvaluatesTo(true, () => false || true);
-    expectEvaluatesTo(false, () => false || false);
-
-    // Logical and.
-    expectEvaluatesTo(true, () => true && true);
-    expectEvaluatesTo(false, () => true && false);
-    expectEvaluatesTo(false, () => false && true);
-    expectEvaluatesTo(false, () => false && false);
-
-    // Bitwise operations.
-    expectEvaluatesTo(3, () => 1 | 2);
-    expectEvaluatesTo(2, () => 3 ^ 1);
-    expectEvaluatesTo(1, () => 3 & 1);
-
-    // Equality.
-    expectEvaluatesTo(true, () => 1 == 1);
-    expectEvaluatesTo(false, () => 1 != 1);
-    expectEvaluatesTo(true, () => identical(1, 1));
-    expectEvaluatesTo(false, () => !identical(1, 1));
-
-    // Relational.
-    expectEvaluatesTo(true, () => 1 <= 1);
-    expectEvaluatesTo(false, () => 1 < 1);
-    expectEvaluatesTo(false, () => 1 > 1);
-    expectEvaluatesTo(true, () => 1 >= 1);
-
-    // Is.
-    expectEvaluatesTo(true, () => 1 is int);
-    expectEvaluatesTo(true, () => 1.0 is double);
-
-    // Shift.
-    expectEvaluatesTo(2, () => 1 << 1);
-    expectEvaluatesTo(1, () => 2 >> 1);
-
-    // Additive.
-    expectEvaluatesTo(2, () => 1 + 1);
-    expectEvaluatesTo(1, () => 2 - 1);
-
-    // Multiplicative.
-    expectEvaluatesTo(2, () => 1 * 2);
-    expectEvaluatesTo(2.0, () => 4 / 2);
-    expectEvaluatesTo(2, () => 4 ~/ 2);
-    expectEvaluatesTo(0, () => 4 % 2);
-
-    // Negate.
-    expectEvaluatesTo(false, () => !true);
-
-    // Postfix / prefix.
-    var y = 0;
-    expectEvaluatesTo(0, () => y++);
-    expectEvaluatesTo(2, () => ++y);
-    expectEvaluatesTo(1, () => --y);
-    expectEvaluatesTo(1, () => y--);
-    Expect.equals(0, y);
-
-    // Selector.
-    fn
-/* //# 66: syntax error
-        ()
-*/ //# 66: continued
-            =>
-            42;
-    var list = [87];
-    expectEvaluatesTo(42, () => fn());
-    expectEvaluatesTo(1, () => list.length);
-    expectEvaluatesTo(87, () => list[0]);
-    expectEvaluatesTo(87, () => list.removeLast());
-  }
-
-  static void testInitializers
-/* //# 67: syntax error
-      ()
-*/ //# 67: continued
-  {
-    Expect.equals(42, (new C.cb0().fn)());
-    Expect.equals(43, (new C.ca0().fn)());
-    Expect.equals(44, (new C.cb1().fn)());
-    Expect.equals(45, (new C.ca1().fn)());
-    Expect.equals(46, (new C.cb2().fn)());
-    Expect.equals(47, (new C.ca2().fn)());
-    Expect.equals(48, (new C.cb3().fn)());
-    Expect.equals(49, (new C.ca3().fn)());
-
-    Expect.equals(52, (new C.nb0().fn)());
-    Expect.equals(53, (new C.na0().fn)());
-    Expect.equals(54, (new C.nb1().fn)());
-    Expect.equals(55, (new C.na1().fn)());
-    Expect.equals(56, (new C.nb2().fn)());
-    Expect.equals(57, (new C.na2().fn)());
-    Expect.equals(58, (new C.nb3().fn)());
-    Expect.equals(59, (new C.na3().fn)());
-
-    Expect.equals(62, (new C.rb0().fn)());
-    Expect.equals(63, (new C.ra0().fn)());
-    Expect.equals(64, (new C.rb1().fn)());
-    Expect.equals(65, (new C.ra1().fn)());
-    Expect.equals(66, (new C.rb2().fn)());
-    Expect.equals(67, (new C.ra2().fn)());
-    Expect.equals(68, (new C.rb3().fn)());
-    Expect.equals(69, (new C.ra3().fn)());
-  }
-
-  static void testFunctionParameter
-/* //# 68: syntax error
-      ()
-*/ //# 68: continued
-  {
-    f0(fn()) => fn();
-    Expect.equals(42, f0(() => 42));
-
-    f1(int fn()) => fn();
-    Expect.equals(87, f1(() => 87));
-
-    f2(fn(a)) => fn(42);
-    Expect.equals(43, f2((a) => a + 1));
-
-    f3(fn(int a)) => fn(42);
-    Expect.equals(44, f3((int a) => a + 2));
-  }
-
-  static void testFunctionIdentifierExpression
-/* //# 69: syntax error
-      ()
-*/ //# 69: continued
-  {
-    Expect.equals(
-        87,
-        (
-/* //# 70: syntax error
-            ()
-*/ //# 70: continued
-                =>
-                87)());
-  }
-
-  static void testFunctionIdentifierStatement
-/* //# 71: syntax error
-      ()
-*/ //# 71: continued
-  {
-    function
-/* //# 72: syntax error
-        ()
-*/ //# 72: continued
-            =>
-            42;
-    Expect.equals(42, function());
-    Expect.equals(true, function is Function);
-  }
-}
-
-class C {
-  C.cb0()
-      : fn = (() {
-          return 42;
-        }) {}
-  C.ca0() : fn = (() => 43) {}
-
-  C.cb1()
-      : fn = wrap(() {
-          return 44;
-        }) {}
-  C.ca1() : fn = wrap(() => 45) {}
-
-  C.cb2()
-      : fn = [
-          () {
-            return 46;
-          }
-        ][0] {}
-  C.ca2() : fn = [() => 47][0] {}
-
-  C.cb3()
-      : fn = {
-          'x': () {
-            return 48;
-          }
-        }['x'] {}
-  C.ca3() : fn = {'x': () => 49}['x'] {}
-
-  C.nb0()
-      : fn = (() {
-          return 52;
-        }) {}
-  C.na0() : fn = (() => 53) {}
-
-  C.nb1()
-      : fn = wrap(() {
-          return 54;
-        }) {}
-  C.na1() : fn = wrap(() => 55) {}
-
-  C.nb2()
-      : fn = [
-          () {
-            return 56;
-          }
-        ][0] {}
-  C.na2() : fn = [() => 57][0] {}
-
-  C.nb3()
-      : fn = {
-          'x': () {
-            return 58;
-          }
-        }['x'] {}
-  C.na3() : fn = {'x': () => 59}['x'] {}
-
-  C.rb0()
-      : fn = (() {
-          return 62;
-        }) {}
-  C.ra0() : fn = (() => 63) {}
-
-  C.rb1()
-      : fn = wrap(() {
-          return 64;
-        }) {}
-  C.ra1() : fn = wrap(() => 65) {}
-
-  C.rb2()
-      : fn = [
-          () {
-            return 66;
-          }
-        ][0] {}
-  C.ra2() : fn = [() => 67][0] {}
-
-  C.rb3()
-      : fn = {
-          'x': () {
-            return 68;
-          }
-        }['x'] {}
-  C.ra3() : fn = {'x': () => 69}['x'] {}
-
-  static wrap
-/* //# 73: syntax error
-      (fn)
-*/ //# 73: continued
-  {
-    return fn;
-  }
-
-  final fn;
-}
-
-main
-/* //# 74: syntax error
-    ()
-*/ //# 74: continued
-{
-  FunctionSyntaxTest.testMain();
-}
diff --git a/tests/language/function_test.dart b/tests/language/function_test.dart
deleted file mode 100644
index e1dd788..0000000
--- a/tests/language/function_test.dart
+++ /dev/null
@@ -1,375 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests function statements and expressions.
-
-class Bug4089219 {
-  int x;
-  var f;
-
-  Bug4089219(int i) : this.x = i {
-    f = () => x;
-  }
-}
-
-class Bug4342163 {
-  final m;
-  Bug4342163(int a) : this.m = (() => a) {}
-}
-
-class StaticFunctionDef {
-  static const int one = 1;
-  static var fn1;
-  static var fn2;
-  static var fn3;
-
-  static init() {
-    fn1 = () {
-      return one;
-    };
-    fn2 = () {
-      return (() {
-        return one;
-      })();
-    };
-    fn3 = () {
-      final local = 1;
-      return (() {
-        return local;
-      })();
-    };
-  }
-}
-
-class A {
-  var ma;
-  A(a) {
-    ma = a;
-  }
-}
-
-class B1 extends A {
-  final mfn;
-  B1(int a)
-      : super(a),
-        this.mfn = (() {
-          return a;
-        }) {}
-}
-
-class B2 extends A {
-  final mfn;
-  B2(int a)
-      : super(2),
-        this.mfn = (() {
-          return a;
-        }) {}
-}
-
-class B3 extends A {
-  final mfn;
-  B3(int a)
-      : super(() {
-          return a;
-        }),
-        this.mfn = (() {
-          return a;
-        }) {}
-}
-
-typedef void Fisk();
-
-class FunctionTest {
-  FunctionTest() {}
-
-  static void testMain() {
-    var test = new FunctionTest();
-    test.testForEach();
-    test.testVarOrder1();
-    test.testVarOrder2();
-    test.testLexicalClosureRef1();
-    test.testLexicalClosureRef2();
-    test.testLexicalClosureRef3();
-    test.testLexicalClosureRef4();
-    test.testLexicalClosureRef5();
-    test.testDefaultParametersOrder();
-    test.testParametersOrder();
-    test.testFunctionDefaults1();
-    test.testFunctionDefaults2();
-    test.testEscapingFunctions();
-    test.testThisBinding();
-    test.testFnBindingInStatics();
-    test.testFnBindingInInitLists();
-    test.testSubclassConstructorScopeAlias();
-  }
-
-  void testSubclassConstructorScopeAlias() {
-    var b1 = new B1(10);
-    Expect.equals(10, (b1.mfn)());
-    Expect.equals(10, b1.ma);
-
-    var b2 = new B2(11);
-    Expect.equals(11, (b2.mfn)());
-    Expect.equals(2, b2.ma);
-
-    var b3 = new B3(12);
-    Expect.equals(12, (b3.mfn)());
-    Expect.equals(12, (b3.ma)());
-  }
-
-  void testFnBindingInInitLists() {
-    Expect.equals(1, (new Bug4342163(1).m)());
-  }
-
-  void testFnBindingInStatics() {
-    StaticFunctionDef.init();
-    Expect.equals(1, ((StaticFunctionDef.fn1)()));
-    Expect.equals(1, ((StaticFunctionDef.fn2)()));
-    Expect.equals(1, ((StaticFunctionDef.fn3)()));
-  }
-
-  Fisk testReturnVoidFunction() {
-    void f() {}
-    Fisk x = f;
-    return f;
-  }
-
-  void testVarOrder1() {
-    var a = 0, b = a++, c = a++;
-
-    Expect.equals(a, 2);
-    Expect.equals(b, 0);
-    Expect.equals(c, 1);
-  }
-
-  void testVarOrder2() {
-    var a = 0;
-    f() {
-      return a++;
-    }
-
-    ;
-    var b = f(), c = f();
-
-    Expect.equals(a, 2);
-    Expect.equals(b, 0);
-    Expect.equals(c, 1);
-  }
-
-  void testLexicalClosureRef1() {
-    var a = 1;
-    var f, g;
-    {
-      var b = 2;
-      f = () {
-        return b - a;
-      };
-    }
-
-    {
-      var b = 3;
-      g = () {
-        return b - a;
-      };
-    }
-    Expect.equals(1, f());
-    Expect.equals(2, g());
-  }
-
-  void testLexicalClosureRef2() {
-    var a = 1;
-    var f, g;
-    {
-      var b = 2;
-      f = () {
-        return (() {
-          return b - a;
-        })();
-      };
-    }
-
-    {
-      var b = 3;
-      g = () {
-        return (() {
-          return b - a;
-        })();
-      };
-    }
-    Expect.equals(1, f());
-    Expect.equals(2, g());
-  }
-
-  void testLexicalClosureRef3() {
-    var a = new List();
-    for (int i = 0; i < 10; i++) {
-      var x = i;
-      a.add(() {
-        return x;
-      });
-    }
-
-    var sum = 0;
-    for (int i = 0; i < a.length; i++) {
-      sum += (a[i])();
-    }
-
-    Expect.equals(45, sum);
-  }
-
-  void testLexicalClosureRef5() {
-    {
-      var a;
-      Expect.equals(null, a);
-      a = 1;
-      Expect.equals(1, a);
-    }
-
-    {
-      var a;
-      Expect.equals(null, a);
-      a = 1;
-      Expect.equals(1, a);
-    }
-  }
-
-  // Make sure labels are preserved, and a second 'i' does influence the first.
-  void testLexicalClosureRef4() {
-    var a = new List();
-    x:
-    for (int i = 0; i < 10; i++) {
-      a.add(() {
-        return i;
-      });
-      continue x;
-    }
-
-    var sum = 0;
-    for (int i = 0; i < a.length; i++) {
-      sum += (a[i])();
-    }
-
-    Expect.equals(45, sum);
-  }
-
-  int tempField;
-
-  void testForEach() {
-    List<int> vals = [1, 2, 3];
-    int total = 0;
-    vals.forEach((int v) {
-      total += v;
-    });
-    Expect.equals(6, total);
-  }
-
-  void testDefaultParametersOrder() {
-    f([a = 1, b = 3]) {
-      return a - b;
-    }
-
-    Expect.equals(-2, f());
-  }
-
-  void testParametersOrder() {
-    f(a, b) {
-      return a - b;
-    }
-
-    Expect.equals(-2, f(1, 3));
-  }
-
-  void testFunctionDefaults1() {
-    // TODO(jimhug): This return null shouldn't be necessary.
-    f() {
-      return null;
-    }
-
-    ;
-    (([a = 10]) {
-      Expect.equals(10, a);
-    })();
-    ((a, [b = 10]) {
-      Expect.equals(10, b);
-    })(1);
-    (([a = 10]) {
-      Expect.equals(null, a);
-    })(f());
-    // FAILS: (([a = 10]) { Expect.equals(null ,a); })( f() );
-  }
-
-  void testFunctionDefaults2() {
-    Expect.equals(10, helperFunctionDefaults2());
-    Expect.equals(1, helperFunctionDefaults2(1));
-  }
-
-  num helperFunctionDefaults2([a = 10]) {
-    return (() {
-      return a;
-    })();
-  }
-
-  void testEscapingFunctions() {
-    f() {
-      return 42;
-    }
-
-    ;
-    (() {
-      Expect.equals(42, f());
-    })();
-    var o = new Bug4089219(42);
-    Expect.equals(42, (o.f)());
-  }
-
-  void testThisBinding() {
-    Expect.equals(this, () {
-      return this;
-    }());
-  }
-}
-
-typedef void Foo<A, B>(A a, B b);
-
-class Bar<A, B> {
-  Foo<A, B> field;
-  Bar(A a, B b) : this.field = ((A a1, B b2) {}) {
-    field(a, b);
-  }
-}
-
-typedef UntypedFunction(arg);
-typedef UntypedFunction2(arg);
-
-class UseFunctionTypes {
-  void test() {
-    Function f = null;
-    UntypedFunction uf = null;
-    UntypedFunction2 uf2 = null;
-    Foo foo = null;
-    Foo<int, String> fooIntString = null;
-
-    f = uf;
-    f = uf2;
-    f = foo;
-    f = fooIntString;
-
-    uf = f;
-    uf2 = f;
-    foo = f;
-    fooIntString = f;
-
-    foo = fooIntString;
-    fooIntString = foo;
-
-    uf = uf2;
-    uf2 = uf;
-  }
-}
-
-main() {
-  FunctionTest.testMain();
-}
diff --git a/tests/language/function_type/function_type0_test.dart b/tests/language/function_type/function_type0_test.dart
deleted file mode 100644
index 9b8ca4d..0000000
--- a/tests/language/function_type/function_type0_test.dart
+++ /dev/null
@@ -1,941 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x);
-typedef F1<T> = Function Function(List<T> x);
-typedef F2<T> = core.List<core.int> Function(int y, {List<Function> x});
-typedef F3<T> = Function(int x0, {Function x});
-typedef F4<T> = Function Function<A>(int x);
-typedef F5<T> = int Function(int x0, {int x}) Function();
-typedef F6<T> = int Function([core.List<core.int> x]) Function();
-typedef F7<T> = Function Function(int y, [int x]) Function();
-typedef F8<T> = Function Function(int x1, [List<Function> x2]) Function();
-typedef F9<T> = Function Function(int x0, {List<T> x}) Function();
-typedef F10<T> = List<Function> Function(List<Function> x) Function();
-typedef F11<T> = List<Function> Function(int y, [List<T> x]) Function();
-typedef F12<T> = core.List<core.int> Function([Function x1]) Function();
-typedef F13<T> = core.List<core.int> Function({core.List<core.int> x})
-    Function();
-typedef F14<T> = List<T> Function(int y, {int x}) Function();
-typedef F15<T> = List<T> Function(int x0, [core.List<core.int> x]) Function();
-typedef F16<T> = Function(int x0) Function();
-typedef F17<T> = Function(int x, [List<Function> x2]) Function();
-typedef F18<T> = Function(int y, {List<T> x}) Function();
-typedef F19<T> = void Function([List<Function> x]) Function();
-typedef F20<T> = void Function(List<T> x0) Function();
-typedef F21<T> = List<Function> Function<A>(Function x) Function();
-typedef F22<T> = Function<A>(List<Function> x) Function();
-typedef F23<T> = void Function<A>(core.List<core.int> x) Function();
-
-int f0(int x) => null;
-Function f1(List<int> x) => null;
-core.List<core.int> f2(int y, {List<Function> x}) => null;
-f3(int x0, {Function x}) => null;
-Function f4<A>(int x) => null;
-int Function(int x0, {int x}) f5() => null;
-int Function([core.List<core.int> x]) f6() => null;
-Function Function(int y, [int x]) f7() => null;
-Function Function(int x0, [List<Function> x1]) f8() => null;
-Function Function(int x0, {List<int> x}) f9() => null;
-List<Function> Function(List<Function> x) f10() => null;
-List<Function> Function(int y, [List<int> x]) f11() => null;
-core.List<core.int> Function([Function x0]) f12() => null;
-core.List<core.int> Function({core.List<core.int> x}) f13() => null;
-List<int> Function(int y, {int x}) f14() => null;
-List<int> Function(int x0, [core.List<core.int> x]) f15() => null;
-Function(int x0) f16() => null;
-Function(int x, [List<Function> x0]) f17() => null;
-Function(int y, {List<int> x}) f18() => null;
-void Function([List<Function> x]) f19() => null;
-void Function(List<int> x0) f20() => null;
-List<Function> Function<A>(Function x) f21() => null;
-Function<A>(List<Function> x) f22() => null;
-void Function<A>(core.List<core.int> x) f23() => null;
-
-class U0<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x) x0;
-  Function Function(List<T> x) x1;
-  core.List<core.int> Function(int y, {List<Function> x}) x2;
-  Function(int x0, {Function x}) x3;
-  Function Function<A>(int x) x4;
-  int Function(int x0, {int x}) Function() x5;
-  int Function([core.List<core.int> x]) Function() x6;
-  Function Function(int y, [int x]) Function() x7;
-  Function Function(int x1, [List<Function> x2]) Function() x8;
-  Function Function(int x0, {List<T> x}) Function() x9;
-  List<Function> Function(List<Function> x) Function() x10;
-  List<Function> Function(int y, [List<T> x]) Function() x11;
-  core.List<core.int> Function([Function x1]) Function() x12;
-  core.List<core.int> Function({core.List<core.int> x}) Function() x13;
-  List<T> Function(int y, {int x}) Function() x14;
-  List<T> Function(int x0, [core.List<core.int> x]) Function() x15;
-  Function(int x0) Function() x16;
-  Function(int x, [List<Function> x2]) Function() x17;
-  Function(int y, {List<T> x}) Function() x18;
-  void Function([List<Function> x]) Function() x19;
-  void Function(List<T> x0) Function() x20;
-  List<Function> Function<A>(Function x) Function() x21;
-  Function<A>(List<Function> x) Function() x22;
-  void Function<A>(core.List<core.int> x) Function() x23;
-
-  U0({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x) => null;
-  Function m1(List<T> x) => null;
-  core.List<core.int> m2(int y, {List<Function> x}) => null;
-  m3(int x0, {Function x}) => null;
-  Function m4<A>(int x) => null;
-  int Function(int x0, {int x}) m5() => null;
-  int Function([core.List<core.int> x]) m6() => null;
-  Function Function(int y, [int x]) m7() => null;
-  Function Function(int x0, [List<Function> x1]) m8() => null;
-  Function Function(int x0, {List<T> x}) m9() => null;
-  List<Function> Function(List<Function> x) m10() => null;
-  List<Function> Function(int y, [List<T> x]) m11() => null;
-  core.List<core.int> Function([Function x0]) m12() => null;
-  core.List<core.int> Function({core.List<core.int> x}) m13() => null;
-  List<T> Function(int y, {int x}) m14() => null;
-  List<T> Function(int x0, [core.List<core.int> x]) m15() => null;
-  Function(int x0) m16() => null;
-  Function(int x, [List<Function> x0]) m17() => null;
-  Function(int y, {List<T> x}) m18() => null;
-  void Function([List<Function> x]) m19() => null;
-  void Function(List<T> x0) m20() => null;
-  List<Function> Function<A>(Function x) m21() => null;
-  Function<A>(List<Function> x) m22() => null;
-  void Function<A>(core.List<core.int> x) m23() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(List<T> x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(List<T> x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(List<T> x) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(List<T> x) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, {List<Function> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<Function> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect
-        .isTrue(m2 is core.List<core.int> Function(int y, {List<Function> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int x0, {Function x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x0, {Function x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x0, {Function x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x0, {int x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x0, {int x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x0, {int x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [int x]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [int x]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [int x]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [List<Function> x2]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<Function> x2]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x1, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int x0, {List<T> x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {List<T> x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int x0, {List<T> x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int x0, {List<T> x}) Function() l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int x0, {List<T> x}) Function() l9 = m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function(List<Function> x) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<Function> x) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, [List<T> x]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<T> x]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect
-        .isTrue(m11 is List<Function> Function(int y, [List<T> x]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, [List<T> x]) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, [List<T> x]) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([Function x1]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x1]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect
-        .isTrue(m12 is core.List<core.int> Function([Function x1]) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({core.List<core.int> x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({core.List<core.int> x}) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function({core.List<core.int> x})
-        Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int y, {int x}) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {int x}) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {int x}) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {int x}) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {int x}) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x0, [core.List<core.int> x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [core.List<core.int> x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(int x0, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x0, [core.List<core.int> x]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x0, [core.List<core.int> x]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x0) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x0) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x0) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<Function> x2]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<Function> x2]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function(int y, {List<T> x}) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function(int y, {List<T> x}) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is Function(int y, {List<T> x}) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-    if (!tIsBool) {
-      Expect.isTrue(f18 is F18<int>);
-      Expect.isFalse(f18 is F18<bool>);
-      Expect.isTrue(confuse(f18) is F18<int>);
-      Expect.isFalse(confuse(f18) is F18<bool>);
-      Expect.equals(tIsDynamic, m18 is F18<bool>);
-      Expect.equals(tIsDynamic, confuse(m18) is F18<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          x18 = confuse(f18);
-        });
-        Function(int y, {List<T> x}) Function() l18;
-        Expect.throws(() {
-          l18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          l18 = confuse(f18);
-        });
-      }
-      Function(int y, {List<T> x}) Function() l18 = m18;
-      // In checked mode, verifies the type.
-      x18 = m18;
-      x18 = confuse(m18);
-    }
-  }
-
-  /// void Function([List<Function> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(List<T> x0) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(List<T> x0) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(List<T> x0) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(List<T> x0) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(List<T> x0) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(Function x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(Function x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<Function> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<Function> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(core.List<core.int> x) Function()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(core.List<core.int> x) Function() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U0().runTests();
-  new U0<int>(tIsInt: true).runTests();
-  new U0<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type10_test.dart b/tests/language/function_type/function_type10_test.dart
deleted file mode 100644
index 9746f50..0000000
--- a/tests/language/function_type/function_type10_test.dart
+++ /dev/null
@@ -1,957 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, {int x});
-typedef F1<T> = Function Function(int y, {List<T> x});
-typedef F2<T> = core.List<core.int> Function(int x0, {core.List<core.int> x});
-typedef F3<T> = Function({List<Function> x});
-typedef F4<T> = List<Function> Function<A>(List<Function> x);
-typedef F5<T> = int Function(Function x) Function<B extends core.int>();
-typedef F6<T> = int Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function([int x1]) Function<B extends core.int>();
-typedef F8<T> = Function Function({List<Function> x})
-    Function<B extends core.int>();
-typedef F9<T> = Function Function() Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x1, [List<Function> x])
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function([List<T> x1])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x, [Function x1])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function([Function x]) Function<B extends core.int>();
-typedef F15<T> = List<T> Function(core.List<core.int> x1)
-    Function<B extends core.int>();
-typedef F16<T> = Function(int x2, [int x3]) Function<B extends core.int>();
-typedef F17<T> = Function(int x1, {List<Function> x})
-    Function<B extends core.int>();
-typedef F18<T> = void Function(int x) Function<B extends core.int>();
-typedef F19<T> = void Function(int y, [List<Function> x])
-    Function<B extends core.int>();
-typedef F20<T> = void Function(int x2, [List<T> x3])
-    Function<B extends core.int>();
-typedef F21<T> = List<Function> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F22<T> = Function<A>(List<T> x) Function<B extends core.int>();
-typedef F23<T> = void Function<A>() Function<B extends core.int>();
-
-int f0(int y, {int x}) => null;
-Function f1(int y, {List<int> x}) => null;
-core.List<core.int> f2(int x0, {core.List<core.int> x}) => null;
-f3({List<Function> x}) => null;
-List<Function> f4<A>(List<Function> x) => null;
-int Function(Function x) f5<B extends core.int>() => null;
-int Function(int y, [core.List<core.int> x]) f6<B extends core.int>() => null;
-Function Function([int x0]) f7<B extends core.int>() => null;
-Function Function({List<Function> x}) f8<B extends core.int>() => null;
-Function Function() f9<B extends core.int>() => null;
-List<Function> Function(int x0, [List<Function> x]) f10<B extends core.int>() =>
-    null;
-List<Function> Function([List<int> x0]) f11<B extends core.int>() => null;
-core.List<core.int> Function(int x, [Function x0]) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int y, {core.List<core.int> x})
-    f13<B extends core.int>() => null;
-List<int> Function([Function x]) f14<B extends core.int>() => null;
-List<int> Function(core.List<core.int> x0) f15<B extends core.int>() => null;
-Function(int x0, [int x1]) f16<B extends core.int>() => null;
-Function(int x0, {List<Function> x}) f17<B extends core.int>() => null;
-void Function(int x) f18<B extends core.int>() => null;
-void Function(int y, [List<Function> x]) f19<B extends core.int>() => null;
-void Function(int x0, [List<int> x1]) f20<B extends core.int>() => null;
-List<Function> Function<A>(core.List<core.int> x) f21<B extends core.int>() =>
-    null;
-Function<A>(List<int> x) f22<B extends core.int>() => null;
-void Function<A>() f23<B extends core.int>() => null;
-
-class U10<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, {int x}) x0;
-  Function Function(int y, {List<T> x}) x1;
-  core.List<core.int> Function(int x0, {core.List<core.int> x}) x2;
-  Function({List<Function> x}) x3;
-  List<Function> Function<A>(List<Function> x) x4;
-  int Function(Function x) Function<B extends core.int>() x5;
-  int Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-      x6;
-  Function Function([int x1]) Function<B extends core.int>() x7;
-  Function Function({List<Function> x}) Function<B extends core.int>() x8;
-  Function Function() Function<B extends core.int>() x9;
-  List<Function> Function(int x1, [List<Function> x])
-      Function<B extends core.int>() x10;
-  List<Function> Function([List<T> x1]) Function<B extends core.int>() x11;
-  core.List<core.int> Function(int x, [Function x1])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function(int y, {core.List<core.int> x})
-      Function<B extends core.int>() x13;
-  List<T> Function([Function x]) Function<B extends core.int>() x14;
-  List<T> Function(core.List<core.int> x1) Function<B extends core.int>() x15;
-  Function(int x2, [int x3]) Function<B extends core.int>() x16;
-  Function(int x1, {List<Function> x}) Function<B extends core.int>() x17;
-  void Function(int x) Function<B extends core.int>() x18;
-  void Function(int y, [List<Function> x]) Function<B extends core.int>() x19;
-  void Function(int x2, [List<T> x3]) Function<B extends core.int>() x20;
-  List<Function> Function<A>(core.List<core.int> x)
-      Function<B extends core.int>() x21;
-  Function<A>(List<T> x) Function<B extends core.int>() x22;
-  void Function<A>() Function<B extends core.int>() x23;
-
-  U10({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, {int x}) => null;
-  Function m1(int y, {List<T> x}) => null;
-  core.List<core.int> m2(int x0, {core.List<core.int> x}) => null;
-  m3({List<Function> x}) => null;
-  List<Function> m4<A>(List<Function> x) => null;
-  int Function(Function x) m5<B extends core.int>() => null;
-  int Function(int y, [core.List<core.int> x]) m6<B extends core.int>() => null;
-  Function Function([int x0]) m7<B extends core.int>() => null;
-  Function Function({List<Function> x}) m8<B extends core.int>() => null;
-  Function Function() m9<B extends core.int>() => null;
-  List<Function> Function(int x0, [List<Function> x])
-      m10<B extends core.int>() => null;
-  List<Function> Function([List<T> x0]) m11<B extends core.int>() => null;
-  core.List<core.int> Function(int x, [Function x0])
-      m12<B extends core.int>() => null;
-  core.List<core.int> Function(int y, {core.List<core.int> x})
-      m13<B extends core.int>() => null;
-  List<T> Function([Function x]) m14<B extends core.int>() => null;
-  List<T> Function(core.List<core.int> x0) m15<B extends core.int>() => null;
-  Function(int x0, [int x1]) m16<B extends core.int>() => null;
-  Function(int x0, {List<Function> x}) m17<B extends core.int>() => null;
-  void Function(int x) m18<B extends core.int>() => null;
-  void Function(int y, [List<Function> x]) m19<B extends core.int>() => null;
-  void Function(int x0, [List<T> x1]) m20<B extends core.int>() => null;
-  List<Function> Function<A>(core.List<core.int> x) m21<B extends core.int>() =>
-      null;
-  Function<A>(List<T> x) m22<B extends core.int>() => null;
-  void Function<A>() m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, {int x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, {int x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, {int x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(int y, {List<T> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<T> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(int y, {List<T> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(int y, {List<T> x}) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(int y, {List<T> x}) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(int x0, {core.List<core.int> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {core.List<core.int> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(
-        m2 is core.List<core.int> Function(int x0, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function({List<Function> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function({List<Function> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function({List<Function> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(Function x) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect
-        .isTrue(m5 is int Function(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([int x1]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([int x1]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function([int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<Function> x}) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<Function> x}) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function() Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function() Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [List<Function> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<Function> x])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function([List<T> x1]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x1]) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function([List<T> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function([List<T> x1]) Function<B extends core.int>()
-            l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function([List<T> x1]) Function<B extends core.int>() l11 =
-          m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x, [Function x1]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [Function x1])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x, [Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y,
-            {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function([Function x]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function([Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x]) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x]) Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x1) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x1) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(core.List<core.int> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(core.List<core.int> x1) Function<B extends core.int>()
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(core.List<core.int> x1) Function<B extends core.int>()
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x2, [int x3]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [int x3]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x2, [int x3]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {List<Function> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {List<Function> x}) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<Function> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<Function> x]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x2, [List<T> x3]) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x2, [List<T> x3]) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x2, [List<T> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x2, [List<T> x3]) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x2, [List<T> x3]) Function<B extends core.int>() l20 =
-          m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<T> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<T> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        Function<A>(List<T> x) Function<B extends core.int>() l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      Function<A>(List<T> x) Function<B extends core.int>() l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// void Function<A>() Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>() Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U10().runTests();
-  new U10<int>(tIsInt: true).runTests();
-  new U10<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type11_test.dart b/tests/language/function_type/function_type11_test.dart
deleted file mode 100644
index f468490..0000000
--- a/tests/language/function_type/function_type11_test.dart
+++ /dev/null
@@ -1,954 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(Function x);
-typedef F1<T> = Function Function();
-typedef F2<T> = core.List<core.int> Function(int y, {core.List<core.int> x});
-typedef F3<T> = Function(int x0, {List<Function> x});
-typedef F4<T> = List<Function> Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function(Function x) Function<B extends core.int>(int x);
-typedef F6<T> = int Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function([int x1]) Function<B extends core.int>(int x);
-typedef F8<T> = Function Function({List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F9<T> = Function Function() Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x1, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function([List<T> x1])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x, [Function x1])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function([Function x]) Function<B extends core.int>(
-    int x);
-typedef F15<T> = List<T> Function(core.List<core.int> x1)
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(int x2, [int x3]) Function<B extends core.int>(int x);
-typedef F17<T> = Function(int x1, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int x) Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int y, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F20<T> = void Function(int x2, [List<T> x3])
-    Function<B extends core.int>(int x);
-typedef F21<T> = List<Function> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = Function<A>(List<T> x) Function<B extends core.int>(int x);
-typedef F23<T> = void Function<A>() Function<B extends core.int>(int x);
-
-int f0(Function x) => null;
-Function f1() => null;
-core.List<core.int> f2(int y, {core.List<core.int> x}) => null;
-f3(int x0, {List<Function> x}) => null;
-List<Function> f4<A>(core.List<core.int> x) => null;
-int Function(Function x) f5<B extends core.int>(int x) => null;
-int Function(int y, [core.List<core.int> x]) f6<B extends core.int>(int x) =>
-    null;
-Function Function([int x0]) f7<B extends core.int>(int x) => null;
-Function Function({List<Function> x}) f8<B extends core.int>(int x) => null;
-Function Function() f9<B extends core.int>(int x) => null;
-List<Function> Function(int x0, [List<Function> x]) f10<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function([List<int> x0]) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x, [Function x0]) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int y, {core.List<core.int> x})
-    f13<B extends core.int>(int x) => null;
-List<int> Function([Function x]) f14<B extends core.int>(int x) => null;
-List<int> Function(core.List<core.int> x0) f15<B extends core.int>(int x) =>
-    null;
-Function(int x0, [int x1]) f16<B extends core.int>(int x) => null;
-Function(int x0, {List<Function> x}) f17<B extends core.int>(int x) => null;
-void Function(int x) f18<B extends core.int>(int x) => null;
-void Function(int y, [List<Function> x]) f19<B extends core.int>(int x) => null;
-void Function(int x0, [List<int> x1]) f20<B extends core.int>(int x) => null;
-List<Function> Function<A>(core.List<core.int> x) f21<B extends core.int>(
-        int x) =>
-    null;
-Function<A>(List<int> x) f22<B extends core.int>(int x) => null;
-void Function<A>() f23<B extends core.int>(int x) => null;
-
-class U11<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(Function x) x0;
-  Function Function() x1;
-  core.List<core.int> Function(int y, {core.List<core.int> x}) x2;
-  Function(int x0, {List<Function> x}) x3;
-  List<Function> Function<A>(core.List<core.int> x) x4;
-  int Function(Function x) Function<B extends core.int>(int x) x5;
-  int Function(int y, [core.List<core.int> x]) Function<B extends core.int>(
-      int x) x6;
-  Function Function([int x1]) Function<B extends core.int>(int x) x7;
-  Function Function({List<Function> x}) Function<B extends core.int>(int x) x8;
-  Function Function() Function<B extends core.int>(int x) x9;
-  List<Function> Function(int x1, [List<Function> x])
-      Function<B extends core.int>(int x) x10;
-  List<Function> Function([List<T> x1]) Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(int x, [Function x1])
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function(int y, {core.List<core.int> x})
-      Function<B extends core.int>(int x) x13;
-  List<T> Function([Function x]) Function<B extends core.int>(int x) x14;
-  List<T> Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-      x15;
-  Function(int x2, [int x3]) Function<B extends core.int>(int x) x16;
-  Function(int x1, {List<Function> x}) Function<B extends core.int>(int x) x17;
-  void Function(int x) Function<B extends core.int>(int x) x18;
-  void Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-      x19;
-  void Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) x20;
-  List<Function> Function<A>(core.List<core.int> x)
-      Function<B extends core.int>(int x) x21;
-  Function<A>(List<T> x) Function<B extends core.int>(int x) x22;
-  void Function<A>() Function<B extends core.int>(int x) x23;
-
-  U11({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(Function x) => null;
-  Function m1() => null;
-  core.List<core.int> m2(int y, {core.List<core.int> x}) => null;
-  m3(int x0, {List<Function> x}) => null;
-  List<Function> m4<A>(core.List<core.int> x) => null;
-  int Function(Function x) m5<B extends core.int>(int x) => null;
-  int Function(int y, [core.List<core.int> x]) m6<B extends core.int>(int x) =>
-      null;
-  Function Function([int x0]) m7<B extends core.int>(int x) => null;
-  Function Function({List<Function> x}) m8<B extends core.int>(int x) => null;
-  Function Function() m9<B extends core.int>(int x) => null;
-  List<Function> Function(int x0, [List<Function> x]) m10<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function([List<T> x0]) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x, [Function x0]) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int y, {core.List<core.int> x})
-      m13<B extends core.int>(int x) => null;
-  List<T> Function([Function x]) m14<B extends core.int>(int x) => null;
-  List<T> Function(core.List<core.int> x0) m15<B extends core.int>(int x) =>
-      null;
-  Function(int x0, [int x1]) m16<B extends core.int>(int x) => null;
-  Function(int x0, {List<Function> x}) m17<B extends core.int>(int x) => null;
-  void Function(int x) m18<B extends core.int>(int x) => null;
-  void Function(int y, [List<Function> x]) m19<B extends core.int>(int x) =>
-      null;
-  void Function(int x0, [List<T> x1]) m20<B extends core.int>(int x) => null;
-  List<Function> Function<A>(core.List<core.int> x) m21<B extends core.int>(
-          int x) =>
-      null;
-  Function<A>(List<T> x) m22<B extends core.int>(int x) => null;
-  void Function<A>() m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(Function x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(Function x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(Function x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function()
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function() l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function());
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(int y, {core.List<core.int> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {core.List<core.int> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(
-        m2 is core.List<core.int> Function(int y, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int x0, {List<Function> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x0, {List<Function> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x0, {List<Function> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(Function x) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(Function x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [core.List<core.int> x]) Function<B extends core.int>(
-        int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([int x1]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([int x1]) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function([int x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<Function> x}) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<Function> x}) Function<B extends core.int>(int x)
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function() Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function() Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is Function Function() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function([List<T> x1]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x1]) Function<B extends core.int>(int x)
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function([List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function([List<T> x1]) Function<B extends core.int>(
-            int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function([List<T> x1]) Function<B extends core.int>(int x)
-          l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x, [Function x1]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [Function x1])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x, [Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y,
-            {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function([Function x]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x]) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x]) Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x]) Function<B extends core.int>(int x) l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(core.List<core.int> x1) Function<B extends core.int>(
-            int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(core.List<core.int> x1) Function<B extends core.int>(
-          int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x2, [int x3]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [int x3]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x2, [int x3]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-            l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-          l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<T> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is Function<A>(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        Function<A>(List<T> x) Function<B extends core.int>(int x) l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      Function<A>(List<T> x) Function<B extends core.int>(int x) l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// void Function<A>() Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>() Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect
-        .isTrue(m23 is void Function<A>() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U11().runTests();
-  new U11<int>(tIsInt: true).runTests();
-  new U11<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type12_test.dart b/tests/language/function_type/function_type12_test.dart
deleted file mode 100644
index 5782192..0000000
--- a/tests/language/function_type/function_type12_test.dart
+++ /dev/null
@@ -1,965 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([Function x]);
-typedef F1<T> = List<Function> Function(int x);
-typedef F2<T> = core.List<core.int> Function(List<T> x);
-typedef F3<T> = Function(int y, {List<Function> x});
-typedef F4<T> = List<Function> Function<A>(List<T> x);
-typedef F5<T> = int Function([Function x]) Function();
-typedef F6<T> = int Function(core.List<core.int> x0) Function();
-typedef F7<T> = Function Function(int x1, [int x2]) Function();
-typedef F8<T> = Function Function(int x0, {List<Function> x}) Function();
-typedef F9<T> = List<Function> Function(int x) Function();
-typedef F10<T> = List<Function> Function(int y, [List<Function> x]) Function();
-typedef F11<T> = List<Function> Function(int x1, [List<T> x2]) Function();
-typedef F12<T> = core.List<core.int> Function({Function x}) Function();
-typedef F13<T> = core.List<core.int> Function(List<T> x) Function();
-typedef F14<T> = List<T> Function(int x0, [Function x]) Function();
-typedef F15<T> = List<T> Function([core.List<core.int> x1]) Function();
-typedef F16<T> = Function(int x, [int x2]) Function();
-typedef F17<T> = Function(int y, {List<Function> x}) Function();
-typedef F18<T> = void Function([int x]) Function();
-typedef F19<T> = void Function(List<Function> x0) Function();
-typedef F20<T> = void Function(int x, [List<T> x2]) Function();
-typedef F21<T> = List<Function> Function<A>(List<T> x) Function();
-typedef F22<T> = Function<A>() Function();
-typedef F23<T> = void Function<A>(A x) Function();
-
-int f0([Function x]) => null;
-List<Function> f1(int x) => null;
-core.List<core.int> f2(List<int> x) => null;
-f3(int y, {List<Function> x}) => null;
-List<Function> f4<A>(List<int> x) => null;
-int Function([Function x]) f5() => null;
-int Function(core.List<core.int> x0) f6() => null;
-Function Function(int x0, [int x1]) f7() => null;
-Function Function(int x0, {List<Function> x}) f8() => null;
-List<Function> Function(int x) f9() => null;
-List<Function> Function(int y, [List<Function> x]) f10() => null;
-List<Function> Function(int x0, [List<int> x1]) f11() => null;
-core.List<core.int> Function({Function x}) f12() => null;
-core.List<core.int> Function(List<int> x) f13() => null;
-List<int> Function(int x0, [Function x]) f14() => null;
-List<int> Function([core.List<core.int> x0]) f15() => null;
-Function(int x, [int x0]) f16() => null;
-Function(int y, {List<Function> x}) f17() => null;
-void Function([int x]) f18() => null;
-void Function(List<Function> x0) f19() => null;
-void Function(int x, [List<int> x0]) f20() => null;
-List<Function> Function<A>(List<int> x) f21() => null;
-Function<A>() f22() => null;
-void Function<A>(A x) f23() => null;
-
-class U12<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([Function x]) x0;
-  List<Function> Function(int x) x1;
-  core.List<core.int> Function(List<T> x) x2;
-  Function(int y, {List<Function> x}) x3;
-  List<Function> Function<A>(List<T> x) x4;
-  int Function([Function x]) Function() x5;
-  int Function(core.List<core.int> x0) Function() x6;
-  Function Function(int x1, [int x2]) Function() x7;
-  Function Function(int x0, {List<Function> x}) Function() x8;
-  List<Function> Function(int x) Function() x9;
-  List<Function> Function(int y, [List<Function> x]) Function() x10;
-  List<Function> Function(int x1, [List<T> x2]) Function() x11;
-  core.List<core.int> Function({Function x}) Function() x12;
-  core.List<core.int> Function(List<T> x) Function() x13;
-  List<T> Function(int x0, [Function x]) Function() x14;
-  List<T> Function([core.List<core.int> x1]) Function() x15;
-  Function(int x, [int x2]) Function() x16;
-  Function(int y, {List<Function> x}) Function() x17;
-  void Function([int x]) Function() x18;
-  void Function(List<Function> x0) Function() x19;
-  void Function(int x, [List<T> x2]) Function() x20;
-  List<Function> Function<A>(List<T> x) Function() x21;
-  Function<A>() Function() x22;
-  void Function<A>(A x) Function() x23;
-
-  U12({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([Function x]) => null;
-  List<Function> m1(int x) => null;
-  core.List<core.int> m2(List<T> x) => null;
-  m3(int y, {List<Function> x}) => null;
-  List<Function> m4<A>(List<T> x) => null;
-  int Function([Function x]) m5() => null;
-  int Function(core.List<core.int> x0) m6() => null;
-  Function Function(int x0, [int x1]) m7() => null;
-  Function Function(int x0, {List<Function> x}) m8() => null;
-  List<Function> Function(int x) m9() => null;
-  List<Function> Function(int y, [List<Function> x]) m10() => null;
-  List<Function> Function(int x0, [List<T> x1]) m11() => null;
-  core.List<core.int> Function({Function x}) m12() => null;
-  core.List<core.int> Function(List<T> x) m13() => null;
-  List<T> Function(int x0, [Function x]) m14() => null;
-  List<T> Function([core.List<core.int> x0]) m15() => null;
-  Function(int x, [int x0]) m16() => null;
-  Function(int y, {List<Function> x}) m17() => null;
-  void Function([int x]) m18() => null;
-  void Function(List<Function> x0) m19() => null;
-  void Function(int x, [List<T> x0]) m20() => null;
-  List<Function> Function<A>(List<T> x) m21() => null;
-  Function<A>() m22() => null;
-  void Function<A>(A x) m23() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([Function x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([Function x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([Function x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(List<T> x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(List<T> x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(List<T> x) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(List<T> x) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int y, {List<Function> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int y, {List<Function> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int y, {List<Function> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<Function> Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<Function> Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function([Function x]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([Function x]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(core.List<core.int> x0) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x0) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(core.List<core.int> x0) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1, [int x2]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [int x2]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, [int x2]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x0, {List<Function> x}) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {List<Function> x}) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect
-        .isTrue(m8 is Function Function(int x0, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [List<Function> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<Function> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(int y, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x1, [List<T> x2]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<T> x2]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function(int x1, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x1, [List<T> x2]) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x1, [List<T> x2]) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function({Function x}) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({Function x}) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function({Function x}) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(List<T> x) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x0, [Function x]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [Function x]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x0, [Function x]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x0, [Function x]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x0, [Function x]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x1]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x1]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([core.List<core.int> x1]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([core.List<core.int> x1]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([core.List<core.int> x1]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [int x2]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [int x2]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x, [int x2]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {List<Function> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {List<Function> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([int x]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<Function> x0) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x0) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(List<Function> x0) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x, [List<T> x2]) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<T> x2]) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x, [List<T> x2]) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x, [List<T> x2]) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<T> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<T> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<Function> Function<A>(List<T> x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<Function> Function<A>(List<T> x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// Function<A>() Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>() Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>() Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(A x) Function()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(A x) Function() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(A x) Function());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U12().runTests();
-  new U12<int>(tIsInt: true).runTests();
-  new U12<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type13_test.dart b/tests/language/function_type/function_type13_test.dart
deleted file mode 100644
index 2b0ff50..0000000
--- a/tests/language/function_type/function_type13_test.dart
+++ /dev/null
@@ -1,942 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, [Function x]);
-typedef F1<T> = List<Function> Function([int x]);
-typedef F2<T> = core.List<core.int> Function([List<T> x]);
-typedef F3<T> = Function(core.List<core.int> x);
-typedef F4<T> = List<Function> Function<A>();
-typedef F5<T> = int Function([Function x]) Function(int x);
-typedef F6<T> = int Function(core.List<core.int> x1) Function(int x);
-typedef F7<T> = Function Function(int x2, [int x3]) Function(int x);
-typedef F8<T> = Function Function(int x1, {List<Function> x}) Function(int x);
-typedef F9<T> = List<Function> Function(int x) Function(int x);
-typedef F10<T> = List<Function> Function(int y, [List<Function> x]) Function(
-    int x);
-typedef F11<T> = List<Function> Function(int x2, [List<T> x3]) Function(int x);
-typedef F12<T> = core.List<core.int> Function({Function x}) Function(int x);
-typedef F13<T> = core.List<core.int> Function(List<T> x) Function(int x);
-typedef F14<T> = List<T> Function(int x1, [Function x]) Function(int x);
-typedef F15<T> = List<T> Function([core.List<core.int> x1]) Function(int x);
-typedef F16<T> = Function(int x, [int x1]) Function(int x);
-typedef F17<T> = Function(int y, {List<Function> x}) Function(int x);
-typedef F18<T> = void Function([int x]) Function(int x);
-typedef F19<T> = void Function(List<Function> x1) Function(int x);
-typedef F20<T> = void Function(int x, [List<T> x1]) Function(int x);
-typedef F21<T> = List<Function> Function<A>(List<T> x) Function(int x);
-typedef F22<T> = Function<A>() Function(int x);
-typedef F23<T> = void Function<A>(A x) Function(int x);
-
-int f0(int x0, [Function x]) => null;
-List<Function> f1([int x]) => null;
-core.List<core.int> f2([List<int> x]) => null;
-f3(core.List<core.int> x) => null;
-List<Function> f4<A>() => null;
-int Function([Function x]) f5(int x) => null;
-int Function(core.List<core.int> x0) f6(int x) => null;
-Function Function(int x0, [int x1]) f7(int x) => null;
-Function Function(int x0, {List<Function> x}) f8(int x) => null;
-List<Function> Function(int x) f9(int x) => null;
-List<Function> Function(int y, [List<Function> x]) f10(int x) => null;
-List<Function> Function(int x0, [List<int> x1]) f11(int x) => null;
-core.List<core.int> Function({Function x}) f12(int x) => null;
-core.List<core.int> Function(List<int> x) f13(int x) => null;
-List<int> Function(int x0, [Function x]) f14(int x) => null;
-List<int> Function([core.List<core.int> x0]) f15(int x) => null;
-Function(int x, [int x0]) f16(int x) => null;
-Function(int y, {List<Function> x}) f17(int x) => null;
-void Function([int x]) f18(int x) => null;
-void Function(List<Function> x0) f19(int x) => null;
-void Function(int x, [List<int> x0]) f20(int x) => null;
-List<Function> Function<A>(List<int> x) f21(int x) => null;
-Function<A>() f22(int x) => null;
-void Function<A>(A x) f23(int x) => null;
-
-class U13<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, [Function x]) x0;
-  List<Function> Function([int x]) x1;
-  core.List<core.int> Function([List<T> x]) x2;
-  Function(core.List<core.int> x) x3;
-  List<Function> Function<A>() x4;
-  int Function([Function x]) Function(int x) x5;
-  int Function(core.List<core.int> x1) Function(int x) x6;
-  Function Function(int x2, [int x3]) Function(int x) x7;
-  Function Function(int x1, {List<Function> x}) Function(int x) x8;
-  List<Function> Function(int x) Function(int x) x9;
-  List<Function> Function(int y, [List<Function> x]) Function(int x) x10;
-  List<Function> Function(int x2, [List<T> x3]) Function(int x) x11;
-  core.List<core.int> Function({Function x}) Function(int x) x12;
-  core.List<core.int> Function(List<T> x) Function(int x) x13;
-  List<T> Function(int x1, [Function x]) Function(int x) x14;
-  List<T> Function([core.List<core.int> x1]) Function(int x) x15;
-  Function(int x, [int x1]) Function(int x) x16;
-  Function(int y, {List<Function> x}) Function(int x) x17;
-  void Function([int x]) Function(int x) x18;
-  void Function(List<Function> x1) Function(int x) x19;
-  void Function(int x, [List<T> x1]) Function(int x) x20;
-  List<Function> Function<A>(List<T> x) Function(int x) x21;
-  Function<A>() Function(int x) x22;
-  void Function<A>(A x) Function(int x) x23;
-
-  U13({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [Function x]) => null;
-  List<Function> m1([int x]) => null;
-  core.List<core.int> m2([List<T> x]) => null;
-  m3(core.List<core.int> x) => null;
-  List<Function> m4<A>() => null;
-  int Function([Function x]) m5(int x) => null;
-  int Function(core.List<core.int> x0) m6(int x) => null;
-  Function Function(int x0, [int x1]) m7(int x) => null;
-  Function Function(int x0, {List<Function> x}) m8(int x) => null;
-  List<Function> Function(int x) m9(int x) => null;
-  List<Function> Function(int y, [List<Function> x]) m10(int x) => null;
-  List<Function> Function(int x0, [List<T> x1]) m11(int x) => null;
-  core.List<core.int> Function({Function x}) m12(int x) => null;
-  core.List<core.int> Function(List<T> x) m13(int x) => null;
-  List<T> Function(int x0, [Function x]) m14(int x) => null;
-  List<T> Function([core.List<core.int> x0]) m15(int x) => null;
-  Function(int x, [int x0]) m16(int x) => null;
-  Function(int y, {List<Function> x}) m17(int x) => null;
-  void Function([int x]) m18(int x) => null;
-  void Function(List<Function> x0) m19(int x) => null;
-  void Function(int x, [List<T> x0]) m20(int x) => null;
-  List<Function> Function<A>(List<T> x) m21(int x) => null;
-  Function<A>() m22(int x) => null;
-  void Function<A>(A x) m23(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, [Function x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, [Function x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, [Function x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([int x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([int x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function([List<T> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function([List<T> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function([List<T> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function([List<T> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(core.List<core.int> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(core.List<core.int> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([Function x]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([Function x]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(core.List<core.int> x1) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x1) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(core.List<core.int> x1) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x2, [int x3]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [int x3]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x2, [int x3]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, {List<Function> x}) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {List<Function> x}) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x1, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [List<Function> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<Function> x]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, [List<Function> x])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x2, [List<T> x3]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [List<T> x3]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function(int x2, [List<T> x3]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x2, [List<T> x3]) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x2, [List<T> x3]) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function({Function x}) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({Function x}) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function({Function x}) Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect
-        .isTrue(m13 is core.List<core.int> Function(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, [Function x]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [Function x]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int x1, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [Function x]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [Function x]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x1]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x1]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function([core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([core.List<core.int> x1]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([core.List<core.int> x1]) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [int x1]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [int x1]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x, [int x1]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {List<Function> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {List<Function> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([int x]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<Function> x1) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x1) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(List<Function> x1) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x, [List<T> x1]) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<T> x1]) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x, [List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x, [List<T> x1]) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x, [List<T> x1]) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<T> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<T> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<Function> Function<A>(List<T> x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<Function> Function<A>(List<T> x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// Function<A>() Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>() Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>() Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(A x) Function(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(A x) Function(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U13().runTests();
-  new U13<int>(tIsInt: true).runTests();
-  new U13<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type14_test.dart b/tests/language/function_type/function_type14_test.dart
deleted file mode 100644
index 593a2a0..0000000
--- a/tests/language/function_type/function_type14_test.dart
+++ /dev/null
@@ -1,987 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, [Function x]);
-typedef F1<T> = List<Function> Function(int x0, [int x]);
-typedef F2<T> = core.List<core.int> Function(int x0, [List<T> x]);
-typedef F3<T> = Function([core.List<core.int> x]);
-typedef F4<T> = List<Function> Function<A>(A x);
-typedef F5<T> = int Function([Function x]) Function<B extends core.int>();
-typedef F6<T> = int Function(core.List<core.int> x1)
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(int x2, [int x3])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x1, {List<Function> x})
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x) Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int y, [List<Function> x])
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function(int x2, [List<T> x3])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function({Function x})
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(List<T> x)
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x1, [Function x])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function([core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F16<T> = Function(int x, [int x1]) Function<B extends core.int>();
-typedef F17<T> = Function(int y, {List<Function> x})
-    Function<B extends core.int>();
-typedef F18<T> = void Function([int x]) Function<B extends core.int>();
-typedef F19<T> = void Function(List<Function> x1)
-    Function<B extends core.int>();
-typedef F20<T> = void Function(int x, [List<T> x1])
-    Function<B extends core.int>();
-typedef F21<T> = List<Function> Function<A>(List<T> x)
-    Function<B extends core.int>();
-typedef F22<T> = Function<A>() Function<B extends core.int>();
-typedef F23<T> = void Function<A>(A x) Function<B extends core.int>();
-
-int f0(int y, [Function x]) => null;
-List<Function> f1(int x0, [int x]) => null;
-core.List<core.int> f2(int x0, [List<int> x]) => null;
-f3([core.List<core.int> x]) => null;
-List<Function> f4<A>(A x) => null;
-int Function([Function x]) f5<B extends core.int>() => null;
-int Function(core.List<core.int> x0) f6<B extends core.int>() => null;
-Function Function(int x0, [int x1]) f7<B extends core.int>() => null;
-Function Function(int x0, {List<Function> x}) f8<B extends core.int>() => null;
-List<Function> Function(int x) f9<B extends core.int>() => null;
-List<Function> Function(int y, [List<Function> x]) f10<B extends core.int>() =>
-    null;
-List<Function> Function(int x0, [List<int> x1]) f11<B extends core.int>() =>
-    null;
-core.List<core.int> Function({Function x}) f12<B extends core.int>() => null;
-core.List<core.int> Function(List<int> x) f13<B extends core.int>() => null;
-List<int> Function(int x0, [Function x]) f14<B extends core.int>() => null;
-List<int> Function([core.List<core.int> x0]) f15<B extends core.int>() => null;
-Function(int x, [int x0]) f16<B extends core.int>() => null;
-Function(int y, {List<Function> x}) f17<B extends core.int>() => null;
-void Function([int x]) f18<B extends core.int>() => null;
-void Function(List<Function> x0) f19<B extends core.int>() => null;
-void Function(int x, [List<int> x0]) f20<B extends core.int>() => null;
-List<Function> Function<A>(List<int> x) f21<B extends core.int>() => null;
-Function<A>() f22<B extends core.int>() => null;
-void Function<A>(A x) f23<B extends core.int>() => null;
-
-class U14<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, [Function x]) x0;
-  List<Function> Function(int x0, [int x]) x1;
-  core.List<core.int> Function(int x0, [List<T> x]) x2;
-  Function([core.List<core.int> x]) x3;
-  List<Function> Function<A>(A x) x4;
-  int Function([Function x]) Function<B extends core.int>() x5;
-  int Function(core.List<core.int> x1) Function<B extends core.int>() x6;
-  Function Function(int x2, [int x3]) Function<B extends core.int>() x7;
-  Function Function(int x1, {List<Function> x}) Function<B extends core.int>()
-      x8;
-  List<Function> Function(int x) Function<B extends core.int>() x9;
-  List<Function> Function(int y, [List<Function> x])
-      Function<B extends core.int>() x10;
-  List<Function> Function(int x2, [List<T> x3]) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function({Function x}) Function<B extends core.int>() x12;
-  core.List<core.int> Function(List<T> x) Function<B extends core.int>() x13;
-  List<T> Function(int x1, [Function x]) Function<B extends core.int>() x14;
-  List<T> Function([core.List<core.int> x1]) Function<B extends core.int>() x15;
-  Function(int x, [int x1]) Function<B extends core.int>() x16;
-  Function(int y, {List<Function> x}) Function<B extends core.int>() x17;
-  void Function([int x]) Function<B extends core.int>() x18;
-  void Function(List<Function> x1) Function<B extends core.int>() x19;
-  void Function(int x, [List<T> x1]) Function<B extends core.int>() x20;
-  List<Function> Function<A>(List<T> x) Function<B extends core.int>() x21;
-  Function<A>() Function<B extends core.int>() x22;
-  void Function<A>(A x) Function<B extends core.int>() x23;
-
-  U14({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, [Function x]) => null;
-  List<Function> m1(int x0, [int x]) => null;
-  core.List<core.int> m2(int x0, [List<T> x]) => null;
-  m3([core.List<core.int> x]) => null;
-  List<Function> m4<A>(A x) => null;
-  int Function([Function x]) m5<B extends core.int>() => null;
-  int Function(core.List<core.int> x0) m6<B extends core.int>() => null;
-  Function Function(int x0, [int x1]) m7<B extends core.int>() => null;
-  Function Function(int x0, {List<Function> x}) m8<B extends core.int>() =>
-      null;
-  List<Function> Function(int x) m9<B extends core.int>() => null;
-  List<Function> Function(int y, [List<Function> x])
-      m10<B extends core.int>() => null;
-  List<Function> Function(int x0, [List<T> x1]) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function({Function x}) m12<B extends core.int>() => null;
-  core.List<core.int> Function(List<T> x) m13<B extends core.int>() => null;
-  List<T> Function(int x0, [Function x]) m14<B extends core.int>() => null;
-  List<T> Function([core.List<core.int> x0]) m15<B extends core.int>() => null;
-  Function(int x, [int x0]) m16<B extends core.int>() => null;
-  Function(int y, {List<Function> x}) m17<B extends core.int>() => null;
-  void Function([int x]) m18<B extends core.int>() => null;
-  void Function(List<Function> x0) m19<B extends core.int>() => null;
-  void Function(int x, [List<T> x0]) m20<B extends core.int>() => null;
-  List<Function> Function<A>(List<T> x) m21<B extends core.int>() => null;
-  Function<A>() m22<B extends core.int>() => null;
-  void Function<A>(A x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, [Function x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, [Function x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, [Function x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, [int x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [int x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, [int x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(int x0, [List<T> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [List<T> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(int x0, [List<T> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(int x0, [List<T> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(int x0, [List<T> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function([core.List<core.int> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function([core.List<core.int> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([Function x]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function([Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(core.List<core.int> x1) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x1) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(core.List<core.int> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x2, [int x3]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [int x3]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x2, [int x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, {List<Function> x}) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {List<Function> x}) Function<B extends core.int>()
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [List<Function> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<Function> x])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x2, [List<T> x3]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [List<T> x3]) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int x2, [List<T> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x2, [List<T> x3])
-            Function<B extends core.int>() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x2, [List<T> x3])
-          Function<B extends core.int>() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function({Function x}) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({Function x}) Function<B extends core.int>()
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function({Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(List<T> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x) Function<B extends core.int>()
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x) Function<B extends core.int>()
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, [Function x]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [Function x]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [Function x]) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [Function x]) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x1]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x1]) Function<B extends core.int>()
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([core.List<core.int> x1])
-            Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([core.List<core.int> x1]) Function<B extends core.int>()
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [int x1]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [int x1]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x, [int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {List<Function> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {List<Function> x}) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<Function> x1) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x1) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(List<Function> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x, [List<T> x1]) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<T> x1]) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x, [List<T> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x, [List<T> x1]) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x, [List<T> x1]) Function<B extends core.int>() l20 =
-          m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<T> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<T> x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<T> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<Function> Function<A>(List<T> x) Function<B extends core.int>()
-            l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<Function> Function<A>(List<T> x) Function<B extends core.int>() l21 =
-          m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// Function<A>() Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>() Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(A x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(A x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U14().runTests();
-  new U14<int>(tIsInt: true).runTests();
-  new U14<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type15_test.dart b/tests/language/function_type/function_type15_test.dart
deleted file mode 100644
index b6c9acd..0000000
--- a/tests/language/function_type/function_type15_test.dart
+++ /dev/null
@@ -1,1009 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(Function x0);
-typedef F1<T> = List<Function> Function(int y, [int x]);
-typedef F2<T> = core.List<core.int> Function(int y, [List<T> x]);
-typedef F3<T> = Function(int x0, [core.List<core.int> x]);
-typedef F4<T> = List<Function> Function<A>(List<A> x);
-typedef F5<T> = int Function([Function x]) Function<B extends core.int>(int x);
-typedef F6<T> = int Function(core.List<core.int> x1)
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x2, [int x3])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int x1, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int x) Function<B extends core.int>(
-    int x);
-typedef F10<T> = List<Function> Function(int y, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function(int x2, [List<T> x3])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function({Function x})
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(List<T> x)
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int x1, [Function x])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function([core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(int x, [int x1]) Function<B extends core.int>(int x);
-typedef F17<T> = Function(int y, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function([int x]) Function<B extends core.int>(int x);
-typedef F19<T> = void Function(List<Function> x1) Function<B extends core.int>(
-    int x);
-typedef F20<T> = void Function(int x, [List<T> x1])
-    Function<B extends core.int>(int x);
-typedef F21<T> = List<Function> Function<A>(List<T> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = Function<A>() Function<B extends core.int>(int x);
-typedef F23<T> = void Function<A>(A x) Function<B extends core.int>(int x);
-
-int f0(Function x0) => null;
-List<Function> f1(int y, [int x]) => null;
-core.List<core.int> f2(int y, [List<int> x]) => null;
-f3(int x0, [core.List<core.int> x]) => null;
-List<Function> f4<A>(List<A> x) => null;
-int Function([Function x]) f5<B extends core.int>(int x) => null;
-int Function(core.List<core.int> x0) f6<B extends core.int>(int x) => null;
-Function Function(int x0, [int x1]) f7<B extends core.int>(int x) => null;
-Function Function(int x0, {List<Function> x}) f8<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int x) f9<B extends core.int>(int x) => null;
-List<Function> Function(int y, [List<Function> x]) f10<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function(int x0, [List<int> x1]) f11<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function({Function x}) f12<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(List<int> x) f13<B extends core.int>(int x) =>
-    null;
-List<int> Function(int x0, [Function x]) f14<B extends core.int>(int x) => null;
-List<int> Function([core.List<core.int> x0]) f15<B extends core.int>(int x) =>
-    null;
-Function(int x, [int x0]) f16<B extends core.int>(int x) => null;
-Function(int y, {List<Function> x}) f17<B extends core.int>(int x) => null;
-void Function([int x]) f18<B extends core.int>(int x) => null;
-void Function(List<Function> x0) f19<B extends core.int>(int x) => null;
-void Function(int x, [List<int> x0]) f20<B extends core.int>(int x) => null;
-List<Function> Function<A>(List<int> x) f21<B extends core.int>(int x) => null;
-Function<A>() f22<B extends core.int>(int x) => null;
-void Function<A>(A x) f23<B extends core.int>(int x) => null;
-
-class U15<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(Function x0) x0;
-  List<Function> Function(int y, [int x]) x1;
-  core.List<core.int> Function(int y, [List<T> x]) x2;
-  Function(int x0, [core.List<core.int> x]) x3;
-  List<Function> Function<A>(List<A> x) x4;
-  int Function([Function x]) Function<B extends core.int>(int x) x5;
-  int Function(core.List<core.int> x1) Function<B extends core.int>(int x) x6;
-  Function Function(int x2, [int x3]) Function<B extends core.int>(int x) x7;
-  Function Function(int x1, {List<Function> x}) Function<B extends core.int>(
-      int x) x8;
-  List<Function> Function(int x) Function<B extends core.int>(int x) x9;
-  List<Function> Function(int y, [List<Function> x])
-      Function<B extends core.int>(int x) x10;
-  List<Function> Function(int x2, [List<T> x3]) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function({Function x}) Function<B extends core.int>(int x)
-      x12;
-  core.List<core.int> Function(List<T> x) Function<B extends core.int>(int x)
-      x13;
-  List<T> Function(int x1, [Function x]) Function<B extends core.int>(int x)
-      x14;
-  List<T> Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-      x15;
-  Function(int x, [int x1]) Function<B extends core.int>(int x) x16;
-  Function(int y, {List<Function> x}) Function<B extends core.int>(int x) x17;
-  void Function([int x]) Function<B extends core.int>(int x) x18;
-  void Function(List<Function> x1) Function<B extends core.int>(int x) x19;
-  void Function(int x, [List<T> x1]) Function<B extends core.int>(int x) x20;
-  List<Function> Function<A>(List<T> x) Function<B extends core.int>(int x) x21;
-  Function<A>() Function<B extends core.int>(int x) x22;
-  void Function<A>(A x) Function<B extends core.int>(int x) x23;
-
-  U15({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(Function x0) => null;
-  List<Function> m1(int y, [int x]) => null;
-  core.List<core.int> m2(int y, [List<T> x]) => null;
-  m3(int x0, [core.List<core.int> x]) => null;
-  List<Function> m4<A>(List<A> x) => null;
-  int Function([Function x]) m5<B extends core.int>(int x) => null;
-  int Function(core.List<core.int> x0) m6<B extends core.int>(int x) => null;
-  Function Function(int x0, [int x1]) m7<B extends core.int>(int x) => null;
-  Function Function(int x0, {List<Function> x}) m8<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x) m9<B extends core.int>(int x) => null;
-  List<Function> Function(int y, [List<Function> x]) m10<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function(int x0, [List<T> x1]) m11<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function({Function x}) m12<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(List<T> x) m13<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int x0, [Function x]) m14<B extends core.int>(int x) => null;
-  List<T> Function([core.List<core.int> x0]) m15<B extends core.int>(int x) =>
-      null;
-  Function(int x, [int x0]) m16<B extends core.int>(int x) => null;
-  Function(int y, {List<Function> x}) m17<B extends core.int>(int x) => null;
-  void Function([int x]) m18<B extends core.int>(int x) => null;
-  void Function(List<Function> x0) m19<B extends core.int>(int x) => null;
-  void Function(int x, [List<T> x0]) m20<B extends core.int>(int x) => null;
-  List<Function> Function<A>(List<T> x) m21<B extends core.int>(int x) => null;
-  Function<A>() m22<B extends core.int>(int x) => null;
-  void Function<A>(A x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(Function x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(Function x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(Function x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, [int x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [int x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, [int x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(int y, [List<T> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<T> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(int y, [List<T> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(int y, [List<T> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(int y, [List<T> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x0, [core.List<core.int> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x0, [core.List<core.int> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x0, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([Function x]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function([Function x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x1) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x2, [int x3]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [int x3]) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x2, [int x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {List<Function> x}) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x) Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [List<T> x3]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x2, [List<T> x3])
-            Function<B extends core.int>(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x2, [List<T> x3])
-          Function<B extends core.int>(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function({Function x}) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({Function x}) Function<B extends core.int>(
-        int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function({Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x) Function<B extends core.int>(int x)
-        l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(List<T> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x) Function<B extends core.int>(
-            int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x) Function<B extends core.int>(
-          int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, [Function x]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [Function x]) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [Function x]) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [Function x]) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x1]) Function<B extends core.int>(
-        int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([core.List<core.int> x1]) Function<B extends core.int>(
-            int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([core.List<core.int> x1]) Function<B extends core.int>(
-          int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [int x1]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [int x1]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x, [int x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {List<Function> x}) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function([int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<Function> x1) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x1) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(List<Function> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<T> x1]) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-            l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-          l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<T> x) Function<B extends core.int>(int x)
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<T> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<Function> Function<A>(List<T> x) Function<B extends core.int>(
-            int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<Function> Function<A>(List<T> x) Function<B extends core.int>(int x)
-          l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// Function<A>() Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>() Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(A x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(A x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is void Function<A>(A x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U15().runTests();
-  new U15<int>(tIsInt: true).runTests();
-  new U15<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type16_test.dart b/tests/language/function_type/function_type16_test.dart
deleted file mode 100644
index fec44f8..0000000
--- a/tests/language/function_type/function_type16_test.dart
+++ /dev/null
@@ -1,910 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([Function x1]);
-typedef F1<T> = List<Function> Function(int x0);
-typedef F2<T> = core.List<core.int> Function(List<T> x0);
-typedef F3<T> = Function(int y, [core.List<core.int> x]);
-typedef F4<T> = core.List<core.int> Function<A>(int x);
-typedef F5<T> = int Function(int x0, [Function x]) Function();
-typedef F6<T> = int Function([core.List<core.int> x1]) Function();
-typedef F7<T> = Function Function(int x, [int x2]) Function();
-typedef F8<T> = Function Function(int y, {List<Function> x}) Function();
-typedef F9<T> = List<Function> Function([int x]) Function();
-typedef F10<T> = List<Function> Function(List<Function> x0) Function();
-typedef F11<T> = List<Function> Function(int x, [List<T> x2]) Function();
-typedef F12<T> = core.List<core.int> Function(int x0, {Function x}) Function();
-typedef F13<T> = core.List<core.int> Function([List<T> x]) Function();
-typedef F14<T> = List<T> Function(int y, [Function x]) Function();
-typedef F15<T> = List<T> Function(int x1, [core.List<core.int> x2]) Function();
-typedef F16<T> = Function({int x}) Function();
-typedef F17<T> = Function(core.List<core.int> x) Function();
-typedef F18<T> = void Function(int x0, [int x]) Function();
-typedef F19<T> = void Function([List<Function> x1]) Function();
-typedef F20<T> = void Function({List<T> x}) Function();
-typedef F21<T> = List<Function> Function<A>() Function();
-typedef F22<T> = Function<A>(A x) Function();
-typedef F23<T> = void Function<A>(List<A> x) Function();
-
-int f0([Function x0]) => null;
-List<Function> f1(int x0) => null;
-core.List<core.int> f2(List<int> x0) => null;
-f3(int y, [core.List<core.int> x]) => null;
-core.List<core.int> f4<A>(int x) => null;
-int Function(int x0, [Function x]) f5() => null;
-int Function([core.List<core.int> x0]) f6() => null;
-Function Function(int x, [int x0]) f7() => null;
-Function Function(int y, {List<Function> x}) f8() => null;
-List<Function> Function([int x]) f9() => null;
-List<Function> Function(List<Function> x0) f10() => null;
-List<Function> Function(int x, [List<int> x0]) f11() => null;
-core.List<core.int> Function(int x0, {Function x}) f12() => null;
-core.List<core.int> Function([List<int> x]) f13() => null;
-List<int> Function(int y, [Function x]) f14() => null;
-List<int> Function(int x0, [core.List<core.int> x1]) f15() => null;
-Function({int x}) f16() => null;
-Function(core.List<core.int> x) f17() => null;
-void Function(int x0, [int x]) f18() => null;
-void Function([List<Function> x0]) f19() => null;
-void Function({List<int> x}) f20() => null;
-List<Function> Function<A>() f21() => null;
-Function<A>(A x) f22() => null;
-void Function<A>(List<A> x) f23() => null;
-
-class U16<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([Function x1]) x0;
-  List<Function> Function(int x0) x1;
-  core.List<core.int> Function(List<T> x0) x2;
-  Function(int y, [core.List<core.int> x]) x3;
-  core.List<core.int> Function<A>(int x) x4;
-  int Function(int x0, [Function x]) Function() x5;
-  int Function([core.List<core.int> x1]) Function() x6;
-  Function Function(int x, [int x2]) Function() x7;
-  Function Function(int y, {List<Function> x}) Function() x8;
-  List<Function> Function([int x]) Function() x9;
-  List<Function> Function(List<Function> x0) Function() x10;
-  List<Function> Function(int x, [List<T> x2]) Function() x11;
-  core.List<core.int> Function(int x0, {Function x}) Function() x12;
-  core.List<core.int> Function([List<T> x]) Function() x13;
-  List<T> Function(int y, [Function x]) Function() x14;
-  List<T> Function(int x1, [core.List<core.int> x2]) Function() x15;
-  Function({int x}) Function() x16;
-  Function(core.List<core.int> x) Function() x17;
-  void Function(int x0, [int x]) Function() x18;
-  void Function([List<Function> x1]) Function() x19;
-  void Function({List<T> x}) Function() x20;
-  List<Function> Function<A>() Function() x21;
-  Function<A>(A x) Function() x22;
-  void Function<A>(List<A> x) Function() x23;
-
-  U16({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([Function x0]) => null;
-  List<Function> m1(int x0) => null;
-  core.List<core.int> m2(List<T> x0) => null;
-  m3(int y, [core.List<core.int> x]) => null;
-  core.List<core.int> m4<A>(int x) => null;
-  int Function(int x0, [Function x]) m5() => null;
-  int Function([core.List<core.int> x0]) m6() => null;
-  Function Function(int x, [int x0]) m7() => null;
-  Function Function(int y, {List<Function> x}) m8() => null;
-  List<Function> Function([int x]) m9() => null;
-  List<Function> Function(List<Function> x0) m10() => null;
-  List<Function> Function(int x, [List<T> x0]) m11() => null;
-  core.List<core.int> Function(int x0, {Function x}) m12() => null;
-  core.List<core.int> Function([List<T> x]) m13() => null;
-  List<T> Function(int y, [Function x]) m14() => null;
-  List<T> Function(int x0, [core.List<core.int> x1]) m15() => null;
-  Function({int x}) m16() => null;
-  Function(core.List<core.int> x) m17() => null;
-  void Function(int x0, [int x]) m18() => null;
-  void Function([List<Function> x0]) m19() => null;
-  void Function({List<T> x}) m20() => null;
-  List<Function> Function<A>() m21() => null;
-  Function<A>(A x) m22() => null;
-  void Function<A>(List<A> x) m23() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([Function x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([Function x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([Function x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(List<T> x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(List<T> x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(List<T> x0) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(List<T> x0) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int y, [core.List<core.int> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int y, [core.List<core.int> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int y, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x0, [Function x]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x0, [Function x]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x0, [Function x]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x1]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x1]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x1]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x, [int x2]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [int x2]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x, [int x2]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {List<Function> x}) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<Function> x}) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect
-        .isTrue(m8 is Function Function(int y, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([int x]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<Function> x0) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x0) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<Function> x0) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x, [List<T> x2]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<T> x2]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect
-        .isTrue(m11 is List<Function> Function(int x, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x, [List<T> x2]) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x, [List<T> x2]) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x0, {Function x}) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {Function x}) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(int x0, {Function x}) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function([List<T> x]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [Function x]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [Function x]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, [Function x]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [Function x]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [Function x]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [core.List<core.int> x2]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [core.List<core.int> x2]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(int x1, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [core.List<core.int> x2]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [core.List<core.int> x2]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({int x}) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({int x}) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function({int x}) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x0, [int x]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x0, [int x]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x0, [int x]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<Function> x1]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x1]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x1]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function({List<T> x}) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function({List<T> x}) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function({List<T> x}) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function({List<T> x}) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function({List<T> x}) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>() Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>() Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>() Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(A x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(A x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(A x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<A> x) Function()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<A> x) Function() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U16().runTests();
-  new U16<int>(tIsInt: true).runTests();
-  new U16<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type17_test.dart b/tests/language/function_type/function_type17_test.dart
deleted file mode 100644
index 241cf39..0000000
--- a/tests/language/function_type/function_type17_test.dart
+++ /dev/null
@@ -1,915 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x1, [Function x2]);
-typedef F1<T> = List<Function> Function([int x1]);
-typedef F2<T> = core.List<core.int> Function([List<T> x1]);
-typedef F3<T> = Function(core.List<core.int> x0);
-typedef F4<T> = core.List<core.int> Function<A>(Function x);
-typedef F5<T> = int Function(int x1, [Function x]) Function(int x);
-typedef F6<T> = int Function([core.List<core.int> x1]) Function(int x);
-typedef F7<T> = Function Function(int x, [int x1]) Function(int x);
-typedef F8<T> = Function Function(int y, {List<Function> x}) Function(int x);
-typedef F9<T> = List<Function> Function([int x]) Function(int x);
-typedef F10<T> = List<Function> Function(List<Function> x1) Function(int x);
-typedef F11<T> = List<Function> Function(int x, [List<T> x1]) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, {Function x}) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function([List<T> x]) Function(int x);
-typedef F14<T> = List<T> Function(int y, [Function x]) Function(int x);
-typedef F15<T> = List<T> Function(int x2, [core.List<core.int> x3]) Function(
-    int x);
-typedef F16<T> = Function({int x}) Function(int x);
-typedef F17<T> = Function(core.List<core.int> x) Function(int x);
-typedef F18<T> = void Function(int x1, [int x]) Function(int x);
-typedef F19<T> = void Function([List<Function> x1]) Function(int x);
-typedef F20<T> = void Function({List<T> x}) Function(int x);
-typedef F21<T> = List<Function> Function<A>() Function(int x);
-typedef F22<T> = Function<A>(A x) Function(int x);
-typedef F23<T> = void Function<A>(List<A> x) Function(int x);
-
-int f0(int x0, [Function x1]) => null;
-List<Function> f1([int x0]) => null;
-core.List<core.int> f2([List<int> x0]) => null;
-f3(core.List<core.int> x0) => null;
-core.List<core.int> f4<A>(Function x) => null;
-int Function(int x0, [Function x]) f5(int x) => null;
-int Function([core.List<core.int> x0]) f6(int x) => null;
-Function Function(int x, [int x0]) f7(int x) => null;
-Function Function(int y, {List<Function> x}) f8(int x) => null;
-List<Function> Function([int x]) f9(int x) => null;
-List<Function> Function(List<Function> x0) f10(int x) => null;
-List<Function> Function(int x, [List<int> x0]) f11(int x) => null;
-core.List<core.int> Function(int x0, {Function x}) f12(int x) => null;
-core.List<core.int> Function([List<int> x]) f13(int x) => null;
-List<int> Function(int y, [Function x]) f14(int x) => null;
-List<int> Function(int x0, [core.List<core.int> x1]) f15(int x) => null;
-Function({int x}) f16(int x) => null;
-Function(core.List<core.int> x) f17(int x) => null;
-void Function(int x0, [int x]) f18(int x) => null;
-void Function([List<Function> x0]) f19(int x) => null;
-void Function({List<int> x}) f20(int x) => null;
-List<Function> Function<A>() f21(int x) => null;
-Function<A>(A x) f22(int x) => null;
-void Function<A>(List<A> x) f23(int x) => null;
-
-class U17<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x1, [Function x2]) x0;
-  List<Function> Function([int x1]) x1;
-  core.List<core.int> Function([List<T> x1]) x2;
-  Function(core.List<core.int> x0) x3;
-  core.List<core.int> Function<A>(Function x) x4;
-  int Function(int x1, [Function x]) Function(int x) x5;
-  int Function([core.List<core.int> x1]) Function(int x) x6;
-  Function Function(int x, [int x1]) Function(int x) x7;
-  Function Function(int y, {List<Function> x}) Function(int x) x8;
-  List<Function> Function([int x]) Function(int x) x9;
-  List<Function> Function(List<Function> x1) Function(int x) x10;
-  List<Function> Function(int x, [List<T> x1]) Function(int x) x11;
-  core.List<core.int> Function(int x1, {Function x}) Function(int x) x12;
-  core.List<core.int> Function([List<T> x]) Function(int x) x13;
-  List<T> Function(int y, [Function x]) Function(int x) x14;
-  List<T> Function(int x2, [core.List<core.int> x3]) Function(int x) x15;
-  Function({int x}) Function(int x) x16;
-  Function(core.List<core.int> x) Function(int x) x17;
-  void Function(int x1, [int x]) Function(int x) x18;
-  void Function([List<Function> x1]) Function(int x) x19;
-  void Function({List<T> x}) Function(int x) x20;
-  List<Function> Function<A>() Function(int x) x21;
-  Function<A>(A x) Function(int x) x22;
-  void Function<A>(List<A> x) Function(int x) x23;
-
-  U17({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [Function x1]) => null;
-  List<Function> m1([int x0]) => null;
-  core.List<core.int> m2([List<T> x0]) => null;
-  m3(core.List<core.int> x0) => null;
-  core.List<core.int> m4<A>(Function x) => null;
-  int Function(int x0, [Function x]) m5(int x) => null;
-  int Function([core.List<core.int> x0]) m6(int x) => null;
-  Function Function(int x, [int x0]) m7(int x) => null;
-  Function Function(int y, {List<Function> x}) m8(int x) => null;
-  List<Function> Function([int x]) m9(int x) => null;
-  List<Function> Function(List<Function> x0) m10(int x) => null;
-  List<Function> Function(int x, [List<T> x0]) m11(int x) => null;
-  core.List<core.int> Function(int x0, {Function x}) m12(int x) => null;
-  core.List<core.int> Function([List<T> x]) m13(int x) => null;
-  List<T> Function(int y, [Function x]) m14(int x) => null;
-  List<T> Function(int x0, [core.List<core.int> x1]) m15(int x) => null;
-  Function({int x}) m16(int x) => null;
-  Function(core.List<core.int> x) m17(int x) => null;
-  void Function(int x0, [int x]) m18(int x) => null;
-  void Function([List<Function> x0]) m19(int x) => null;
-  void Function({List<T> x}) m20(int x) => null;
-  List<Function> Function<A>() m21(int x) => null;
-  Function<A>(A x) m22(int x) => null;
-  void Function<A>(List<A> x) m23(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x1, [Function x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x1, [Function x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x1, [Function x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([int x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([int x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function([List<T> x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function([List<T> x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function([List<T> x1]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function([List<T> x1]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(core.List<core.int> x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(core.List<core.int> x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [Function x]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [Function x]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x1]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x1]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x, [int x1]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [int x1]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x, [int x1]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {List<Function> x}) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<Function> x}) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int y, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([int x]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<Function> x1) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x1) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(List<Function> x1) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x, [List<T> x1]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<T> x1]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function(int x, [List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x, [List<T> x1]) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x, [List<T> x1]) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, {Function x}) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {Function x}) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1, {Function x})
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function([List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [Function x]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [Function x]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [Function x]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [Function x]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x2, [core.List<core.int> x3]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [core.List<core.int> x3]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x2, [core.List<core.int> x3])
-        Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x2, [core.List<core.int> x3]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x2, [core.List<core.int> x3]) Function(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({int x}) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({int x}) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function({int x}) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1, [int x]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [int x]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, [int x]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<Function> x1]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x1]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function({List<T> x}) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function({List<T> x}) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function({List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function({List<T> x}) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function({List<T> x}) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>() Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>() Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>() Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(A x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(A x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<A> x) Function(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<A> x) Function(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U17().runTests();
-  new U17<int>(tIsInt: true).runTests();
-  new U17<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type18_test.dart b/tests/language/function_type/function_type18_test.dart
deleted file mode 100644
index 879edbb..0000000
--- a/tests/language/function_type/function_type18_test.dart
+++ /dev/null
@@ -1,958 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x, [Function x2]);
-typedef F1<T> = List<Function> Function(int x1, [int x2]);
-typedef F2<T> = core.List<core.int> Function(int x1, [List<T> x2]);
-typedef F3<T> = Function([core.List<core.int> x1]);
-typedef F4<T> = core.List<core.int> Function<A>(List<Function> x);
-typedef F5<T> = int Function(int x1, [Function x])
-    Function<B extends core.int>();
-typedef F6<T> = int Function([core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(int x, [int x1])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int y, {List<Function> x})
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function([int x]) Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(List<Function> x1)
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function(int x, [List<T> x1])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x1, {Function x})
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function([List<T> x])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int y, [Function x])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>();
-typedef F16<T> = Function({int x}) Function<B extends core.int>();
-typedef F17<T> = Function(core.List<core.int> x) Function<B extends core.int>();
-typedef F18<T> = void Function(int x1, [int x]) Function<B extends core.int>();
-typedef F19<T> = void Function([List<Function> x1])
-    Function<B extends core.int>();
-typedef F20<T> = void Function({List<T> x}) Function<B extends core.int>();
-typedef F21<T> = List<Function> Function<A>() Function<B extends core.int>();
-typedef F22<T> = Function<A>(A x) Function<B extends core.int>();
-typedef F23<T> = void Function<A>(List<A> x) Function<B extends core.int>();
-
-int f0(int x, [Function x0]) => null;
-List<Function> f1(int x0, [int x1]) => null;
-core.List<core.int> f2(int x0, [List<int> x1]) => null;
-f3([core.List<core.int> x0]) => null;
-core.List<core.int> f4<A>(List<Function> x) => null;
-int Function(int x0, [Function x]) f5<B extends core.int>() => null;
-int Function([core.List<core.int> x0]) f6<B extends core.int>() => null;
-Function Function(int x, [int x0]) f7<B extends core.int>() => null;
-Function Function(int y, {List<Function> x}) f8<B extends core.int>() => null;
-List<Function> Function([int x]) f9<B extends core.int>() => null;
-List<Function> Function(List<Function> x0) f10<B extends core.int>() => null;
-List<Function> Function(int x, [List<int> x0]) f11<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x0, {Function x}) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function([List<int> x]) f13<B extends core.int>() => null;
-List<int> Function(int y, [Function x]) f14<B extends core.int>() => null;
-List<int> Function(int x0, [core.List<core.int> x1])
-    f15<B extends core.int>() => null;
-Function({int x}) f16<B extends core.int>() => null;
-Function(core.List<core.int> x) f17<B extends core.int>() => null;
-void Function(int x0, [int x]) f18<B extends core.int>() => null;
-void Function([List<Function> x0]) f19<B extends core.int>() => null;
-void Function({List<int> x}) f20<B extends core.int>() => null;
-List<Function> Function<A>() f21<B extends core.int>() => null;
-Function<A>(A x) f22<B extends core.int>() => null;
-void Function<A>(List<A> x) f23<B extends core.int>() => null;
-
-class U18<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x, [Function x2]) x0;
-  List<Function> Function(int x1, [int x2]) x1;
-  core.List<core.int> Function(int x1, [List<T> x2]) x2;
-  Function([core.List<core.int> x1]) x3;
-  core.List<core.int> Function<A>(List<Function> x) x4;
-  int Function(int x1, [Function x]) Function<B extends core.int>() x5;
-  int Function([core.List<core.int> x1]) Function<B extends core.int>() x6;
-  Function Function(int x, [int x1]) Function<B extends core.int>() x7;
-  Function Function(int y, {List<Function> x}) Function<B extends core.int>()
-      x8;
-  List<Function> Function([int x]) Function<B extends core.int>() x9;
-  List<Function> Function(List<Function> x1) Function<B extends core.int>() x10;
-  List<Function> Function(int x, [List<T> x1]) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function(int x1, {Function x})
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function([List<T> x]) Function<B extends core.int>() x13;
-  List<T> Function(int y, [Function x]) Function<B extends core.int>() x14;
-  List<T> Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>() x15;
-  Function({int x}) Function<B extends core.int>() x16;
-  Function(core.List<core.int> x) Function<B extends core.int>() x17;
-  void Function(int x1, [int x]) Function<B extends core.int>() x18;
-  void Function([List<Function> x1]) Function<B extends core.int>() x19;
-  void Function({List<T> x}) Function<B extends core.int>() x20;
-  List<Function> Function<A>() Function<B extends core.int>() x21;
-  Function<A>(A x) Function<B extends core.int>() x22;
-  void Function<A>(List<A> x) Function<B extends core.int>() x23;
-
-  U18({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x, [Function x0]) => null;
-  List<Function> m1(int x0, [int x1]) => null;
-  core.List<core.int> m2(int x0, [List<T> x1]) => null;
-  m3([core.List<core.int> x0]) => null;
-  core.List<core.int> m4<A>(List<Function> x) => null;
-  int Function(int x0, [Function x]) m5<B extends core.int>() => null;
-  int Function([core.List<core.int> x0]) m6<B extends core.int>() => null;
-  Function Function(int x, [int x0]) m7<B extends core.int>() => null;
-  Function Function(int y, {List<Function> x}) m8<B extends core.int>() => null;
-  List<Function> Function([int x]) m9<B extends core.int>() => null;
-  List<Function> Function(List<Function> x0) m10<B extends core.int>() => null;
-  List<Function> Function(int x, [List<T> x0]) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, {Function x})
-      m12<B extends core.int>() => null;
-  core.List<core.int> Function([List<T> x]) m13<B extends core.int>() => null;
-  List<T> Function(int y, [Function x]) m14<B extends core.int>() => null;
-  List<T> Function(int x0, [core.List<core.int> x1])
-      m15<B extends core.int>() => null;
-  Function({int x}) m16<B extends core.int>() => null;
-  Function(core.List<core.int> x) m17<B extends core.int>() => null;
-  void Function(int x0, [int x]) m18<B extends core.int>() => null;
-  void Function([List<Function> x0]) m19<B extends core.int>() => null;
-  void Function({List<T> x}) m20<B extends core.int>() => null;
-  List<Function> Function<A>() m21<B extends core.int>() => null;
-  Function<A>(A x) m22<B extends core.int>() => null;
-  void Function<A>(List<A> x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x, [Function x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x, [Function x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x, [Function x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x1, [int x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [int x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x1, [int x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<T> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<T> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(int x1, [List<T> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(int x1, [List<T> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(int x1, [List<T> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function([core.List<core.int> x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function([core.List<core.int> x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [Function x]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [Function x]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x1]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x1]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x, [int x1]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [int x1]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x, [int x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {List<Function> x}) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<Function> x}) Function<B extends core.int>()
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function([int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<Function> x1) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x1) Function<B extends core.int>()
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<Function> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x, [List<T> x1]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<T> x1]) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int x, [List<T> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x, [List<T> x1])
-            Function<B extends core.int>() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x, [List<T> x1])
-          Function<B extends core.int>() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, {Function x}) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {Function x})
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x]) Function<B extends core.int>()
-        l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function([List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x]) Function<B extends core.int>()
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x]) Function<B extends core.int>()
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [Function x]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [Function x]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [Function x]) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [Function x]) Function<B extends core.int>() l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x2, [core.List<core.int> x3])
-            Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x2, [core.List<core.int> x3])
-          Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({int x}) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({int x}) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function({int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(core.List<core.int> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1, [int x]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [int x]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int x1, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<Function> x1]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x1]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function({List<T> x}) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function({List<T> x}) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is void Function({List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function({List<T> x}) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function({List<T> x}) Function<B extends core.int>() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>() Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>() Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<Function> Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(A x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(A x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<A> x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<A> x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is void Function<A>(List<A> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U18().runTests();
-  new U18<int>(tIsInt: true).runTests();
-  new U18<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type19_test.dart b/tests/language/function_type/function_type19_test.dart
deleted file mode 100644
index 42d317c..0000000
--- a/tests/language/function_type/function_type19_test.dart
+++ /dev/null
@@ -1,977 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function({Function x});
-typedef F1<T> = List<Function> Function(int x, [int x2]);
-typedef F2<T> = core.List<core.int> Function(int x, [List<T> x2]);
-typedef F3<T> = Function(int x1, [core.List<core.int> x2]);
-typedef F4<T> = core.List<core.int> Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function(int x1, [Function x]) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function([core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x, [int x1]) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function(int y, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function([int x]) Function<B extends core.int>(
-    int x);
-typedef F10<T> = List<Function> Function(List<Function> x1)
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function(int x, [List<T> x1])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, {Function x})
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function([List<T> x])
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int y, [Function x])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function({int x}) Function<B extends core.int>(int x);
-typedef F17<T> = Function(core.List<core.int> x) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function(int x1, [int x]) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function([List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F20<T> = void Function({List<T> x}) Function<B extends core.int>(int x);
-typedef F21<T> = List<Function> Function<A>() Function<B extends core.int>(
-    int x);
-typedef F22<T> = Function<A>(A x) Function<B extends core.int>(int x);
-typedef F23<T> = void Function<A>(List<A> x) Function<B extends core.int>(
-    int x);
-
-int f0({Function x}) => null;
-List<Function> f1(int x, [int x0]) => null;
-core.List<core.int> f2(int x, [List<int> x0]) => null;
-f3(int x0, [core.List<core.int> x1]) => null;
-core.List<core.int> f4<A>(core.List<core.int> x) => null;
-int Function(int x0, [Function x]) f5<B extends core.int>(int x) => null;
-int Function([core.List<core.int> x0]) f6<B extends core.int>(int x) => null;
-Function Function(int x, [int x0]) f7<B extends core.int>(int x) => null;
-Function Function(int y, {List<Function> x}) f8<B extends core.int>(int x) =>
-    null;
-List<Function> Function([int x]) f9<B extends core.int>(int x) => null;
-List<Function> Function(List<Function> x0) f10<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int x, [List<int> x0]) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int x0, {Function x}) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function([List<int> x]) f13<B extends core.int>(int x) =>
-    null;
-List<int> Function(int y, [Function x]) f14<B extends core.int>(int x) => null;
-List<int> Function(int x0, [core.List<core.int> x1]) f15<B extends core.int>(
-        int x) =>
-    null;
-Function({int x}) f16<B extends core.int>(int x) => null;
-Function(core.List<core.int> x) f17<B extends core.int>(int x) => null;
-void Function(int x0, [int x]) f18<B extends core.int>(int x) => null;
-void Function([List<Function> x0]) f19<B extends core.int>(int x) => null;
-void Function({List<int> x}) f20<B extends core.int>(int x) => null;
-List<Function> Function<A>() f21<B extends core.int>(int x) => null;
-Function<A>(A x) f22<B extends core.int>(int x) => null;
-void Function<A>(List<A> x) f23<B extends core.int>(int x) => null;
-
-class U19<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function({Function x}) x0;
-  List<Function> Function(int x, [int x2]) x1;
-  core.List<core.int> Function(int x, [List<T> x2]) x2;
-  Function(int x1, [core.List<core.int> x2]) x3;
-  core.List<core.int> Function<A>(core.List<core.int> x) x4;
-  int Function(int x1, [Function x]) Function<B extends core.int>(int x) x5;
-  int Function([core.List<core.int> x1]) Function<B extends core.int>(int x) x6;
-  Function Function(int x, [int x1]) Function<B extends core.int>(int x) x7;
-  Function Function(int y, {List<Function> x}) Function<B extends core.int>(
-      int x) x8;
-  List<Function> Function([int x]) Function<B extends core.int>(int x) x9;
-  List<Function> Function(List<Function> x1) Function<B extends core.int>(int x)
-      x10;
-  List<Function> Function(int x, [List<T> x1]) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function(int x1, {Function x})
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function([List<T> x]) Function<B extends core.int>(int x)
-      x13;
-  List<T> Function(int y, [Function x]) Function<B extends core.int>(int x) x14;
-  List<T> Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>(int x) x15;
-  Function({int x}) Function<B extends core.int>(int x) x16;
-  Function(core.List<core.int> x) Function<B extends core.int>(int x) x17;
-  void Function(int x1, [int x]) Function<B extends core.int>(int x) x18;
-  void Function([List<Function> x1]) Function<B extends core.int>(int x) x19;
-  void Function({List<T> x}) Function<B extends core.int>(int x) x20;
-  List<Function> Function<A>() Function<B extends core.int>(int x) x21;
-  Function<A>(A x) Function<B extends core.int>(int x) x22;
-  void Function<A>(List<A> x) Function<B extends core.int>(int x) x23;
-
-  U19({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0({Function x}) => null;
-  List<Function> m1(int x, [int x0]) => null;
-  core.List<core.int> m2(int x, [List<T> x0]) => null;
-  m3(int x0, [core.List<core.int> x1]) => null;
-  core.List<core.int> m4<A>(core.List<core.int> x) => null;
-  int Function(int x0, [Function x]) m5<B extends core.int>(int x) => null;
-  int Function([core.List<core.int> x0]) m6<B extends core.int>(int x) => null;
-  Function Function(int x, [int x0]) m7<B extends core.int>(int x) => null;
-  Function Function(int y, {List<Function> x}) m8<B extends core.int>(int x) =>
-      null;
-  List<Function> Function([int x]) m9<B extends core.int>(int x) => null;
-  List<Function> Function(List<Function> x0) m10<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x, [List<T> x0]) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(int x0, {Function x}) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function([List<T> x]) m13<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int y, [Function x]) m14<B extends core.int>(int x) => null;
-  List<T> Function(int x0, [core.List<core.int> x1]) m15<B extends core.int>(
-          int x) =>
-      null;
-  Function({int x}) m16<B extends core.int>(int x) => null;
-  Function(core.List<core.int> x) m17<B extends core.int>(int x) => null;
-  void Function(int x0, [int x]) m18<B extends core.int>(int x) => null;
-  void Function([List<Function> x0]) m19<B extends core.int>(int x) => null;
-  void Function({List<T> x}) m20<B extends core.int>(int x) => null;
-  List<Function> Function<A>() m21<B extends core.int>(int x) => null;
-  Function<A>(A x) m22<B extends core.int>(int x) => null;
-  void Function<A>(List<A> x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function({Function x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function({Function x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function({Function x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x, [int x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [int x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x, [int x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(int x, [List<T> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<T> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(int x, [List<T> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(int x, [List<T> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(int x, [List<T> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x1, [core.List<core.int> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x1, [core.List<core.int> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x1, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [Function x]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [Function x]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x, [int x1]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [int x1]) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x, [int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<Function> x}) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x]) Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<Function> x1) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x1) Function<B extends core.int>(
-        int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<Function> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<T> x1]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x, [List<T> x1])
-            Function<B extends core.int>(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x, [List<T> x1]) Function<B extends core.int>(
-          int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, {Function x}) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {Function x})
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x]) Function<B extends core.int>(
-        int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function([List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x]) Function<B extends core.int>(
-            int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x]) Function<B extends core.int>(
-          int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [Function x]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [Function x]) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [Function x]) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [Function x]) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x2, [core.List<core.int> x3])
-            Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x2, [core.List<core.int> x3])
-          Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({int x}) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({int x}) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function({int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1, [int x]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [int x]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<Function> x1]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x1]) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function({List<T> x}) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function({List<T> x}) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is void Function({List<T> x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function({List<T> x}) Function<B extends core.int>(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function({List<T> x}) Function<B extends core.int>(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>() Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>() Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>()
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(A x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(A x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(A x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<A> x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is void Function<A>(List<A> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U19().runTests();
-  new U19<int>(tIsInt: true).runTests();
-  new U19<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type1_test.dart b/tests/language/function_type/function_type1_test.dart
deleted file mode 100644
index b445f11..0000000
--- a/tests/language/function_type/function_type1_test.dart
+++ /dev/null
@@ -1,945 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([int x]);
-typedef F1<T> = Function Function([List<T> x]);
-typedef F2<T> = core.List<core.int> Function(core.List<core.int> x);
-typedef F3<T> = Function(int y, {Function x});
-typedef F4<T> = Function Function<A>(Function x);
-typedef F5<T> = int Function(int x1, {int x}) Function(int x);
-typedef F6<T> = int Function([core.List<core.int> x]) Function(int x);
-typedef F7<T> = Function Function(int y, [int x]) Function(int x);
-typedef F8<T> = Function Function(int x2, [List<Function> x3]) Function(int x);
-typedef F9<T> = Function Function(int x1, {List<T> x}) Function(int x);
-typedef F10<T> = List<Function> Function(List<Function> x) Function(int x);
-typedef F11<T> = List<Function> Function(int y, [List<T> x]) Function(int x);
-typedef F12<T> = core.List<core.int> Function([Function x1]) Function(int x);
-typedef F13<T> = core.List<core.int> Function({core.List<core.int> x}) Function(
-    int x);
-typedef F14<T> = List<T> Function(int y, {int x}) Function(int x);
-typedef F15<T> = List<T> Function(int x1, [core.List<core.int> x]) Function(
-    int x);
-typedef F16<T> = Function(int x1) Function(int x);
-typedef F17<T> = Function(int x, [List<Function> x1]) Function(int x);
-typedef F18<T> = Function(int y, {List<T> x}) Function(int x);
-typedef F19<T> = void Function([List<Function> x]) Function(int x);
-typedef F20<T> = void Function(List<T> x1) Function(int x);
-typedef F21<T> = List<Function> Function<A>(Function x) Function(int x);
-typedef F22<T> = Function<A>(List<Function> x) Function(int x);
-typedef F23<T> = void Function<A>(core.List<core.int> x) Function(int x);
-
-int f0([int x]) => null;
-Function f1([List<int> x]) => null;
-core.List<core.int> f2(core.List<core.int> x) => null;
-f3(int y, {Function x}) => null;
-Function f4<A>(Function x) => null;
-int Function(int x0, {int x}) f5(int x) => null;
-int Function([core.List<core.int> x]) f6(int x) => null;
-Function Function(int y, [int x]) f7(int x) => null;
-Function Function(int x0, [List<Function> x1]) f8(int x) => null;
-Function Function(int x0, {List<int> x}) f9(int x) => null;
-List<Function> Function(List<Function> x) f10(int x) => null;
-List<Function> Function(int y, [List<int> x]) f11(int x) => null;
-core.List<core.int> Function([Function x0]) f12(int x) => null;
-core.List<core.int> Function({core.List<core.int> x}) f13(int x) => null;
-List<int> Function(int y, {int x}) f14(int x) => null;
-List<int> Function(int x0, [core.List<core.int> x]) f15(int x) => null;
-Function(int x0) f16(int x) => null;
-Function(int x, [List<Function> x0]) f17(int x) => null;
-Function(int y, {List<int> x}) f18(int x) => null;
-void Function([List<Function> x]) f19(int x) => null;
-void Function(List<int> x0) f20(int x) => null;
-List<Function> Function<A>(Function x) f21(int x) => null;
-Function<A>(List<Function> x) f22(int x) => null;
-void Function<A>(core.List<core.int> x) f23(int x) => null;
-
-class U1<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([int x]) x0;
-  Function Function([List<T> x]) x1;
-  core.List<core.int> Function(core.List<core.int> x) x2;
-  Function(int y, {Function x}) x3;
-  Function Function<A>(Function x) x4;
-  int Function(int x1, {int x}) Function(int x) x5;
-  int Function([core.List<core.int> x]) Function(int x) x6;
-  Function Function(int y, [int x]) Function(int x) x7;
-  Function Function(int x2, [List<Function> x3]) Function(int x) x8;
-  Function Function(int x1, {List<T> x}) Function(int x) x9;
-  List<Function> Function(List<Function> x) Function(int x) x10;
-  List<Function> Function(int y, [List<T> x]) Function(int x) x11;
-  core.List<core.int> Function([Function x1]) Function(int x) x12;
-  core.List<core.int> Function({core.List<core.int> x}) Function(int x) x13;
-  List<T> Function(int y, {int x}) Function(int x) x14;
-  List<T> Function(int x1, [core.List<core.int> x]) Function(int x) x15;
-  Function(int x1) Function(int x) x16;
-  Function(int x, [List<Function> x1]) Function(int x) x17;
-  Function(int y, {List<T> x}) Function(int x) x18;
-  void Function([List<Function> x]) Function(int x) x19;
-  void Function(List<T> x1) Function(int x) x20;
-  List<Function> Function<A>(Function x) Function(int x) x21;
-  Function<A>(List<Function> x) Function(int x) x22;
-  void Function<A>(core.List<core.int> x) Function(int x) x23;
-
-  U1({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([int x]) => null;
-  Function m1([List<T> x]) => null;
-  core.List<core.int> m2(core.List<core.int> x) => null;
-  m3(int y, {Function x}) => null;
-  Function m4<A>(Function x) => null;
-  int Function(int x0, {int x}) m5(int x) => null;
-  int Function([core.List<core.int> x]) m6(int x) => null;
-  Function Function(int y, [int x]) m7(int x) => null;
-  Function Function(int x0, [List<Function> x1]) m8(int x) => null;
-  Function Function(int x0, {List<T> x}) m9(int x) => null;
-  List<Function> Function(List<Function> x) m10(int x) => null;
-  List<Function> Function(int y, [List<T> x]) m11(int x) => null;
-  core.List<core.int> Function([Function x0]) m12(int x) => null;
-  core.List<core.int> Function({core.List<core.int> x}) m13(int x) => null;
-  List<T> Function(int y, {int x}) m14(int x) => null;
-  List<T> Function(int x0, [core.List<core.int> x]) m15(int x) => null;
-  Function(int x0) m16(int x) => null;
-  Function(int x, [List<Function> x0]) m17(int x) => null;
-  Function(int y, {List<T> x}) m18(int x) => null;
-  void Function([List<Function> x]) m19(int x) => null;
-  void Function(List<T> x0) m20(int x) => null;
-  List<Function> Function<A>(Function x) m21(int x) => null;
-  Function<A>(List<Function> x) m22(int x) => null;
-  void Function<A>(core.List<core.int> x) m23(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([int x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([int x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([int x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function([List<T> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function([List<T> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function([List<T> x]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function([List<T> x]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(core.List<core.int> x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int y, {Function x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int y, {Function x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int y, {Function x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {int x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {int x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, {int x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [int x]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [int x]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [int x]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [List<Function> x3]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [List<Function> x3]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x2, [List<Function> x3]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int x1, {List<T> x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {List<T> x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int x1, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int x1, {List<T> x}) Function(int x) l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int x1, {List<T> x}) Function(int x) l9 = m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function(List<Function> x) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, [List<T> x]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<T> x]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function(int y, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, [List<T> x]) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, [List<T> x]) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([Function x1]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x1]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function([Function x1]) Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({core.List<core.int> x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({core.List<core.int> x}) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function({core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int y, {int x}) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {int x}) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {int x}) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {int x}) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {int x}) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [core.List<core.int> x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [core.List<core.int> x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [core.List<core.int> x]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [core.List<core.int> x]) Function(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<Function> x1]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<Function> x1]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function(int y, {List<T> x}) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function(int y, {List<T> x}) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is Function(int y, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-    if (!tIsBool) {
-      Expect.isTrue(f18 is F18<int>);
-      Expect.isFalse(f18 is F18<bool>);
-      Expect.isTrue(confuse(f18) is F18<int>);
-      Expect.isFalse(confuse(f18) is F18<bool>);
-      Expect.equals(tIsDynamic, m18 is F18<bool>);
-      Expect.equals(tIsDynamic, confuse(m18) is F18<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          x18 = confuse(f18);
-        });
-        Function(int y, {List<T> x}) Function(int x) l18;
-        Expect.throws(() {
-          l18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          l18 = confuse(f18);
-        });
-      }
-      Function(int y, {List<T> x}) Function(int x) l18 = m18;
-      // In checked mode, verifies the type.
-      x18 = m18;
-      x18 = confuse(m18);
-    }
-  }
-
-  /// void Function([List<Function> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(List<T> x1) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(List<T> x1) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(List<T> x1) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(List<T> x1) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(List<T> x1) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(Function x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(Function x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect
-        .isTrue(m21 is List<Function> Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<Function> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<Function> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(core.List<core.int> x) Function(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(core.List<core.int> x) Function(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect
-        .isTrue(m23 is void Function<A>(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U1().runTests();
-  new U1<int>(tIsInt: true).runTests();
-  new U1<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type20_test.dart b/tests/language/function_type/function_type20_test.dart
deleted file mode 100644
index ec3f9e5..0000000
--- a/tests/language/function_type/function_type20_test.dart
+++ /dev/null
@@ -1,939 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, {Function x});
-typedef F1<T> = List<Function> Function({int x});
-typedef F2<T> = core.List<core.int> Function({List<T> x});
-typedef F3<T> = Function(int x, [core.List<core.int> x2]);
-typedef F4<T> = core.List<core.int> Function<A>(List<T> x);
-typedef F5<T> = int Function(int y, [Function x]) Function();
-typedef F6<T> = int Function(int x1, [core.List<core.int> x2]) Function();
-typedef F7<T> = Function Function({int x}) Function();
-typedef F8<T> = Function Function(core.List<core.int> x) Function();
-typedef F9<T> = List<Function> Function(int x0, [int x]) Function();
-typedef F10<T> = List<Function> Function([List<Function> x1]) Function();
-typedef F11<T> = List<Function> Function({List<T> x}) Function();
-typedef F12<T> = core.List<core.int> Function(int y, {Function x}) Function();
-typedef F13<T> = core.List<core.int> Function(int x0, [List<T> x]) Function();
-typedef F14<T> = List<T> Function(Function x0) Function();
-typedef F15<T> = List<T> Function(int x, [core.List<core.int> x2]) Function();
-typedef F16<T> = Function(int x0, {int x}) Function();
-typedef F17<T> = Function([core.List<core.int> x]) Function();
-typedef F18<T> = void Function(int y, [int x]) Function();
-typedef F19<T> = void Function(int x1, [List<Function> x2]) Function();
-typedef F20<T> = void Function(int x0, {List<T> x}) Function();
-typedef F21<T> = List<Function> Function<A>(A x) Function();
-typedef F22<T> = Function<A>(List<A> x) Function();
-typedef F23<T> = int Function(B x) Function<B extends core.int>();
-
-int f0(int x0, {Function x}) => null;
-List<Function> f1({int x}) => null;
-core.List<core.int> f2({List<int> x}) => null;
-f3(int x, [core.List<core.int> x0]) => null;
-core.List<core.int> f4<A>(List<int> x) => null;
-int Function(int y, [Function x]) f5() => null;
-int Function(int x0, [core.List<core.int> x1]) f6() => null;
-Function Function({int x}) f7() => null;
-Function Function(core.List<core.int> x) f8() => null;
-List<Function> Function(int x0, [int x]) f9() => null;
-List<Function> Function([List<Function> x0]) f10() => null;
-List<Function> Function({List<int> x}) f11() => null;
-core.List<core.int> Function(int y, {Function x}) f12() => null;
-core.List<core.int> Function(int x0, [List<int> x]) f13() => null;
-List<int> Function(Function x0) f14() => null;
-List<int> Function(int x, [core.List<core.int> x0]) f15() => null;
-Function(int x0, {int x}) f16() => null;
-Function([core.List<core.int> x]) f17() => null;
-void Function(int y, [int x]) f18() => null;
-void Function(int x0, [List<Function> x1]) f19() => null;
-void Function(int x0, {List<int> x}) f20() => null;
-List<Function> Function<A>(A x) f21() => null;
-Function<A>(List<A> x) f22() => null;
-int Function(B x) f23<B extends core.int>() => null;
-
-class U20<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, {Function x}) x0;
-  List<Function> Function({int x}) x1;
-  core.List<core.int> Function({List<T> x}) x2;
-  Function(int x, [core.List<core.int> x2]) x3;
-  core.List<core.int> Function<A>(List<T> x) x4;
-  int Function(int y, [Function x]) Function() x5;
-  int Function(int x1, [core.List<core.int> x2]) Function() x6;
-  Function Function({int x}) Function() x7;
-  Function Function(core.List<core.int> x) Function() x8;
-  List<Function> Function(int x0, [int x]) Function() x9;
-  List<Function> Function([List<Function> x1]) Function() x10;
-  List<Function> Function({List<T> x}) Function() x11;
-  core.List<core.int> Function(int y, {Function x}) Function() x12;
-  core.List<core.int> Function(int x0, [List<T> x]) Function() x13;
-  List<T> Function(Function x0) Function() x14;
-  List<T> Function(int x, [core.List<core.int> x2]) Function() x15;
-  Function(int x0, {int x}) Function() x16;
-  Function([core.List<core.int> x]) Function() x17;
-  void Function(int y, [int x]) Function() x18;
-  void Function(int x1, [List<Function> x2]) Function() x19;
-  void Function(int x0, {List<T> x}) Function() x20;
-  List<Function> Function<A>(A x) Function() x21;
-  Function<A>(List<A> x) Function() x22;
-  int Function(B x) Function<B extends core.int>() x23;
-
-  U20({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, {Function x}) => null;
-  List<Function> m1({int x}) => null;
-  core.List<core.int> m2({List<T> x}) => null;
-  m3(int x, [core.List<core.int> x0]) => null;
-  core.List<core.int> m4<A>(List<T> x) => null;
-  int Function(int y, [Function x]) m5() => null;
-  int Function(int x0, [core.List<core.int> x1]) m6() => null;
-  Function Function({int x}) m7() => null;
-  Function Function(core.List<core.int> x) m8() => null;
-  List<Function> Function(int x0, [int x]) m9() => null;
-  List<Function> Function([List<Function> x0]) m10() => null;
-  List<Function> Function({List<T> x}) m11() => null;
-  core.List<core.int> Function(int y, {Function x}) m12() => null;
-  core.List<core.int> Function(int x0, [List<T> x]) m13() => null;
-  List<T> Function(Function x0) m14() => null;
-  List<T> Function(int x, [core.List<core.int> x0]) m15() => null;
-  Function(int x0, {int x}) m16() => null;
-  Function([core.List<core.int> x]) m17() => null;
-  void Function(int y, [int x]) m18() => null;
-  void Function(int x0, [List<Function> x1]) m19() => null;
-  void Function(int x0, {List<T> x}) m20() => null;
-  List<Function> Function<A>(A x) m21() => null;
-  Function<A>(List<A> x) m22() => null;
-  int Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, {Function x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, {Function x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, {Function x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function({int x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function({int x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function({int x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function({List<T> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<T> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function({List<T> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function({List<T> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function({List<T> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x, [core.List<core.int> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x, [core.List<core.int> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        core.List<core.int> Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      core.List<core.int> Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(int y, [Function x]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [Function x]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, [Function x]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [core.List<core.int> x2]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [core.List<core.int> x2]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x1, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function({int x}) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({int x}) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function({int x}) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x0, [int x]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [int x]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x0, [int x]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<Function> x1]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x1]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect
-        .isTrue(m10 is List<Function> Function([List<Function> x1]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function({List<T> x}) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<T> x}) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function({List<T> x}) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function({List<T> x}) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function({List<T> x}) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, {Function x}) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {Function x}) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(int y, {Function x}) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x0, [List<T> x]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [List<T> x]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function(int x0, [List<T> x]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x0, [List<T> x]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x0, [List<T> x]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(Function x0) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x0) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(Function x0) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x0) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x0) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [core.List<core.int> x2]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [core.List<core.int> x2]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(int x, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [core.List<core.int> x2]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [core.List<core.int> x2]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x0, {int x}) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x0, {int x}) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x0, {int x}) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, [int x]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [int x]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, [int x]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [List<Function> x2]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<Function> x2]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x0, {List<T> x}) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x0, {List<T> x}) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x0, {List<T> x}) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x0, {List<T> x}) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x0, {List<T> x}) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(A x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(A x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(A x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<A> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<A> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// int Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    int Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is int Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U20().runTests();
-  new U20<int>(tIsInt: true).runTests();
-  new U20<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type21_test.dart b/tests/language/function_type/function_type21_test.dart
deleted file mode 100644
index 3d38783..0000000
--- a/tests/language/function_type/function_type21_test.dart
+++ /dev/null
@@ -1,919 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, {Function x});
-typedef F1<T> = List<Function> Function(int x0, {int x});
-typedef F2<T> = core.List<core.int> Function(int x0, {List<T> x});
-typedef F3<T> = Function({core.List<core.int> x});
-typedef F4<T> = core.List<core.int> Function<A>();
-typedef F5<T> = int Function(int y, [Function x]) Function(int x);
-typedef F6<T> = int Function(int x2, [core.List<core.int> x3]) Function(int x);
-typedef F7<T> = Function Function({int x}) Function(int x);
-typedef F8<T> = Function Function(core.List<core.int> x) Function(int x);
-typedef F9<T> = List<Function> Function(int x1, [int x]) Function(int x);
-typedef F10<T> = List<Function> Function([List<Function> x1]) Function(int x);
-typedef F11<T> = List<Function> Function({List<T> x}) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int y, {Function x}) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function(int x1, [List<T> x]) Function(
-    int x);
-typedef F14<T> = List<T> Function(Function x1) Function(int x);
-typedef F15<T> = List<T> Function(int x, [core.List<core.int> x1]) Function(
-    int x);
-typedef F16<T> = Function(int x1, {int x}) Function(int x);
-typedef F17<T> = Function([core.List<core.int> x]) Function(int x);
-typedef F18<T> = void Function(int y, [int x]) Function(int x);
-typedef F19<T> = void Function(int x2, [List<Function> x3]) Function(int x);
-typedef F20<T> = void Function(int x1, {List<T> x}) Function(int x);
-typedef F21<T> = List<Function> Function<A>(A x) Function(int x);
-typedef F22<T> = Function<A>(List<A> x) Function(int x);
-typedef F23<T> = int Function(B x) Function<B extends core.int>(int x);
-
-int f0(int y, {Function x}) => null;
-List<Function> f1(int x0, {int x}) => null;
-core.List<core.int> f2(int x0, {List<int> x}) => null;
-f3({core.List<core.int> x}) => null;
-core.List<core.int> f4<A>() => null;
-int Function(int y, [Function x]) f5(int x) => null;
-int Function(int x0, [core.List<core.int> x1]) f6(int x) => null;
-Function Function({int x}) f7(int x) => null;
-Function Function(core.List<core.int> x) f8(int x) => null;
-List<Function> Function(int x0, [int x]) f9(int x) => null;
-List<Function> Function([List<Function> x0]) f10(int x) => null;
-List<Function> Function({List<int> x}) f11(int x) => null;
-core.List<core.int> Function(int y, {Function x}) f12(int x) => null;
-core.List<core.int> Function(int x0, [List<int> x]) f13(int x) => null;
-List<int> Function(Function x0) f14(int x) => null;
-List<int> Function(int x, [core.List<core.int> x0]) f15(int x) => null;
-Function(int x0, {int x}) f16(int x) => null;
-Function([core.List<core.int> x]) f17(int x) => null;
-void Function(int y, [int x]) f18(int x) => null;
-void Function(int x0, [List<Function> x1]) f19(int x) => null;
-void Function(int x0, {List<int> x}) f20(int x) => null;
-List<Function> Function<A>(A x) f21(int x) => null;
-Function<A>(List<A> x) f22(int x) => null;
-int Function(B x) f23<B extends core.int>(int x) => null;
-
-class U21<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, {Function x}) x0;
-  List<Function> Function(int x0, {int x}) x1;
-  core.List<core.int> Function(int x0, {List<T> x}) x2;
-  Function({core.List<core.int> x}) x3;
-  core.List<core.int> Function<A>() x4;
-  int Function(int y, [Function x]) Function(int x) x5;
-  int Function(int x2, [core.List<core.int> x3]) Function(int x) x6;
-  Function Function({int x}) Function(int x) x7;
-  Function Function(core.List<core.int> x) Function(int x) x8;
-  List<Function> Function(int x1, [int x]) Function(int x) x9;
-  List<Function> Function([List<Function> x1]) Function(int x) x10;
-  List<Function> Function({List<T> x}) Function(int x) x11;
-  core.List<core.int> Function(int y, {Function x}) Function(int x) x12;
-  core.List<core.int> Function(int x1, [List<T> x]) Function(int x) x13;
-  List<T> Function(Function x1) Function(int x) x14;
-  List<T> Function(int x, [core.List<core.int> x1]) Function(int x) x15;
-  Function(int x1, {int x}) Function(int x) x16;
-  Function([core.List<core.int> x]) Function(int x) x17;
-  void Function(int y, [int x]) Function(int x) x18;
-  void Function(int x2, [List<Function> x3]) Function(int x) x19;
-  void Function(int x1, {List<T> x}) Function(int x) x20;
-  List<Function> Function<A>(A x) Function(int x) x21;
-  Function<A>(List<A> x) Function(int x) x22;
-  int Function(B x) Function<B extends core.int>(int x) x23;
-
-  U21({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, {Function x}) => null;
-  List<Function> m1(int x0, {int x}) => null;
-  core.List<core.int> m2(int x0, {List<T> x}) => null;
-  m3({core.List<core.int> x}) => null;
-  core.List<core.int> m4<A>() => null;
-  int Function(int y, [Function x]) m5(int x) => null;
-  int Function(int x0, [core.List<core.int> x1]) m6(int x) => null;
-  Function Function({int x}) m7(int x) => null;
-  Function Function(core.List<core.int> x) m8(int x) => null;
-  List<Function> Function(int x0, [int x]) m9(int x) => null;
-  List<Function> Function([List<Function> x0]) m10(int x) => null;
-  List<Function> Function({List<T> x}) m11(int x) => null;
-  core.List<core.int> Function(int y, {Function x}) m12(int x) => null;
-  core.List<core.int> Function(int x0, [List<T> x]) m13(int x) => null;
-  List<T> Function(Function x0) m14(int x) => null;
-  List<T> Function(int x, [core.List<core.int> x0]) m15(int x) => null;
-  Function(int x0, {int x}) m16(int x) => null;
-  Function([core.List<core.int> x]) m17(int x) => null;
-  void Function(int y, [int x]) m18(int x) => null;
-  void Function(int x0, [List<Function> x1]) m19(int x) => null;
-  void Function(int x0, {List<T> x}) m20(int x) => null;
-  List<Function> Function<A>(A x) m21(int x) => null;
-  Function<A>(List<A> x) m22(int x) => null;
-  int Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, {Function x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, {Function x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, {Function x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, {int x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {int x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, {int x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(int x0, {List<T> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {List<T> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(int x0, {List<T> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(int x0, {List<T> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(int x0, {List<T> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function({core.List<core.int> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function({core.List<core.int> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function({core.List<core.int> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, [Function x]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [Function x]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x2, [core.List<core.int> x3]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x2, [core.List<core.int> x3]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x2, [core.List<core.int> x3]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function({int x}) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({int x}) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function({int x}) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect
-        .isTrue(m8 is Function Function(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1, [int x]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [int x]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int x1, [int x]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<Function> x1]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x1]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function([List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function({List<T> x}) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<T> x}) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function({List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function({List<T> x}) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function({List<T> x}) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, {Function x}) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {Function x}) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, {Function x})
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<T> x]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<T> x]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1, [List<T> x])
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x1, [List<T> x]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x1, [List<T> x]) Function(int x) l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(Function x1) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x1) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(Function x1) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x1) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x1) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [core.List<core.int> x1]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [core.List<core.int> x1]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x, [core.List<core.int> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [core.List<core.int> x1]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [core.List<core.int> x1]) Function(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, {int x}) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, {int x}) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, {int x}) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, [int x]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [int x]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, [int x]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x2, [List<Function> x3]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x2, [List<Function> x3]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x2, [List<Function> x3]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x1, {List<T> x}) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x1, {List<T> x}) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x1, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x1, {List<T> x}) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x1, {List<T> x}) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(A x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(A x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<A> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<A> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// int Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    int Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is int Function(B x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U21().runTests();
-  new U21<int>(tIsInt: true).runTests();
-  new U21<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type22_test.dart b/tests/language/function_type/function_type22_test.dart
deleted file mode 100644
index 718c00e..0000000
--- a/tests/language/function_type/function_type22_test.dart
+++ /dev/null
@@ -1,960 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(List<Function> x);
-typedef F1<T> = List<Function> Function(int y, {int x});
-typedef F2<T> = core.List<core.int> Function(int y, {List<T> x});
-typedef F3<T> = Function(int x0, {core.List<core.int> x});
-typedef F4<T> = core.List<core.int> Function<A>(A x);
-typedef F5<T> = int Function(int y, [Function x])
-    Function<B extends core.int>();
-typedef F6<T> = int Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function({int x}) Function<B extends core.int>();
-typedef F8<T> = Function Function(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x1, [int x])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function([List<Function> x1])
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function({List<T> x})
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int y, {Function x})
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int x1, [List<T> x])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(Function x1) Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F16<T> = Function(int x1, {int x}) Function<B extends core.int>();
-typedef F17<T> = Function([core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F18<T> = void Function(int y, [int x]) Function<B extends core.int>();
-typedef F19<T> = void Function(int x2, [List<Function> x3])
-    Function<B extends core.int>();
-typedef F20<T> = void Function(int x1, {List<T> x})
-    Function<B extends core.int>();
-typedef F21<T> = List<Function> Function<A>(A x) Function<B extends core.int>();
-typedef F22<T> = Function<A>(List<A> x) Function<B extends core.int>();
-typedef F23<T> = Function Function(B x) Function<B extends core.int>();
-
-int f0(List<Function> x) => null;
-List<Function> f1(int y, {int x}) => null;
-core.List<core.int> f2(int y, {List<int> x}) => null;
-f3(int x0, {core.List<core.int> x}) => null;
-core.List<core.int> f4<A>(A x) => null;
-int Function(int y, [Function x]) f5<B extends core.int>() => null;
-int Function(int x0, [core.List<core.int> x1]) f6<B extends core.int>() => null;
-Function Function({int x}) f7<B extends core.int>() => null;
-Function Function(core.List<core.int> x) f8<B extends core.int>() => null;
-List<Function> Function(int x0, [int x]) f9<B extends core.int>() => null;
-List<Function> Function([List<Function> x0]) f10<B extends core.int>() => null;
-List<Function> Function({List<int> x}) f11<B extends core.int>() => null;
-core.List<core.int> Function(int y, {Function x}) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x0, [List<int> x]) f13<B extends core.int>() =>
-    null;
-List<int> Function(Function x0) f14<B extends core.int>() => null;
-List<int> Function(int x, [core.List<core.int> x0]) f15<B extends core.int>() =>
-    null;
-Function(int x0, {int x}) f16<B extends core.int>() => null;
-Function([core.List<core.int> x]) f17<B extends core.int>() => null;
-void Function(int y, [int x]) f18<B extends core.int>() => null;
-void Function(int x0, [List<Function> x1]) f19<B extends core.int>() => null;
-void Function(int x0, {List<int> x}) f20<B extends core.int>() => null;
-List<Function> Function<A>(A x) f21<B extends core.int>() => null;
-Function<A>(List<A> x) f22<B extends core.int>() => null;
-Function Function(B x) f23<B extends core.int>() => null;
-
-class U22<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(List<Function> x) x0;
-  List<Function> Function(int y, {int x}) x1;
-  core.List<core.int> Function(int y, {List<T> x}) x2;
-  Function(int x0, {core.List<core.int> x}) x3;
-  core.List<core.int> Function<A>(A x) x4;
-  int Function(int y, [Function x]) Function<B extends core.int>() x5;
-  int Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-      x6;
-  Function Function({int x}) Function<B extends core.int>() x7;
-  Function Function(core.List<core.int> x) Function<B extends core.int>() x8;
-  List<Function> Function(int x1, [int x]) Function<B extends core.int>() x9;
-  List<Function> Function([List<Function> x1]) Function<B extends core.int>()
-      x10;
-  List<Function> Function({List<T> x}) Function<B extends core.int>() x11;
-  core.List<core.int> Function(int y, {Function x})
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function(int x1, [List<T> x])
-      Function<B extends core.int>() x13;
-  List<T> Function(Function x1) Function<B extends core.int>() x14;
-  List<T> Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>() x15;
-  Function(int x1, {int x}) Function<B extends core.int>() x16;
-  Function([core.List<core.int> x]) Function<B extends core.int>() x17;
-  void Function(int y, [int x]) Function<B extends core.int>() x18;
-  void Function(int x2, [List<Function> x3]) Function<B extends core.int>() x19;
-  void Function(int x1, {List<T> x}) Function<B extends core.int>() x20;
-  List<Function> Function<A>(A x) Function<B extends core.int>() x21;
-  Function<A>(List<A> x) Function<B extends core.int>() x22;
-  Function Function(B x) Function<B extends core.int>() x23;
-
-  U22({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(List<Function> x) => null;
-  List<Function> m1(int y, {int x}) => null;
-  core.List<core.int> m2(int y, {List<T> x}) => null;
-  m3(int x0, {core.List<core.int> x}) => null;
-  core.List<core.int> m4<A>(A x) => null;
-  int Function(int y, [Function x]) m5<B extends core.int>() => null;
-  int Function(int x0, [core.List<core.int> x1]) m6<B extends core.int>() =>
-      null;
-  Function Function({int x}) m7<B extends core.int>() => null;
-  Function Function(core.List<core.int> x) m8<B extends core.int>() => null;
-  List<Function> Function(int x0, [int x]) m9<B extends core.int>() => null;
-  List<Function> Function([List<Function> x0]) m10<B extends core.int>() =>
-      null;
-  List<Function> Function({List<T> x}) m11<B extends core.int>() => null;
-  core.List<core.int> Function(int y, {Function x}) m12<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, [List<T> x]) m13<B extends core.int>() =>
-      null;
-  List<T> Function(Function x0) m14<B extends core.int>() => null;
-  List<T> Function(int x, [core.List<core.int> x0]) m15<B extends core.int>() =>
-      null;
-  Function(int x0, {int x}) m16<B extends core.int>() => null;
-  Function([core.List<core.int> x]) m17<B extends core.int>() => null;
-  void Function(int y, [int x]) m18<B extends core.int>() => null;
-  void Function(int x0, [List<Function> x1]) m19<B extends core.int>() => null;
-  void Function(int x0, {List<T> x}) m20<B extends core.int>() => null;
-  List<Function> Function<A>(A x) m21<B extends core.int>() => null;
-  Function<A>(List<A> x) m22<B extends core.int>() => null;
-  Function Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(List<Function> x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(List<Function> x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, {int x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {int x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, {int x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function(int y, {List<T> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<T> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(int y, {List<T> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        core.List<core.int> Function(int y, {List<T> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      core.List<core.int> Function(int y, {List<T> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x0, {core.List<core.int> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x0, {core.List<core.int> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x0, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, [Function x]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [Function x]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(int y, [Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function({int x}) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({int x}) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function({int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1, [int x]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [int x]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, [int x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<Function> x1]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x1]) Function<B extends core.int>()
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function({List<T> x}) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<T> x}) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function({List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function({List<T> x}) Function<B extends core.int>() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function({List<T> x}) Function<B extends core.int>() l11 =
-          m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, {Function x}) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {Function x})
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<T> x]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<T> x])
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x1, [List<T> x])
-            Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x1, [List<T> x])
-          Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(Function x1) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x1) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(Function x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x1) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x1) Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [core.List<core.int> x1])
-            Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [core.List<core.int> x1])
-          Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, {int x}) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, {int x}) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x1, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, [int x]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [int x]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int y, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x2, [List<Function> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x1, {List<T> x}) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x1, {List<T> x}) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x1, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x1, {List<T> x}) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x1, {List<T> x}) Function<B extends core.int>() l20 =
-          m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(A x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(A x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<Function> Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<A> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<A> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<A> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// Function Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    Function Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is Function Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U22().runTests();
-  new U22<int>(tIsInt: true).runTests();
-  new U22<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type23_test.dart b/tests/language/function_type/function_type23_test.dart
deleted file mode 100644
index 2db154a..0000000
--- a/tests/language/function_type/function_type23_test.dart
+++ /dev/null
@@ -1,959 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([List<Function> x]);
-typedef F1<T> = List<Function> Function(Function x);
-typedef F2<T> = core.List<core.int> Function();
-typedef F3<T> = Function(int y, {core.List<core.int> x});
-typedef F4<T> = core.List<core.int> Function<A>(List<A> x);
-typedef F5<T> = int Function(int y, [Function x]) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function({int x}) Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int x1, [int x])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function([List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function({List<T> x})
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int y, {Function x})
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int x1, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(Function x1) Function<B extends core.int>(
-    int x);
-typedef F15<T> = List<T> Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(int x1, {int x}) Function<B extends core.int>(int x);
-typedef F17<T> = Function([core.List<core.int> x]) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function(int y, [int x]) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function(int x2, [List<Function> x3])
-    Function<B extends core.int>(int x);
-typedef F20<T> = void Function(int x1, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F21<T> = List<Function> Function<A>(A x) Function<B extends core.int>(
-    int x);
-typedef F22<T> = Function<A>(List<A> x) Function<B extends core.int>(int x);
-typedef F23<T> = Function Function(B x) Function<B extends core.int>(int x);
-
-int f0([List<Function> x]) => null;
-List<Function> f1(Function x) => null;
-core.List<core.int> f2() => null;
-f3(int y, {core.List<core.int> x}) => null;
-core.List<core.int> f4<A>(List<A> x) => null;
-int Function(int y, [Function x]) f5<B extends core.int>(int x) => null;
-int Function(int x0, [core.List<core.int> x1]) f6<B extends core.int>(int x) =>
-    null;
-Function Function({int x}) f7<B extends core.int>(int x) => null;
-Function Function(core.List<core.int> x) f8<B extends core.int>(int x) => null;
-List<Function> Function(int x0, [int x]) f9<B extends core.int>(int x) => null;
-List<Function> Function([List<Function> x0]) f10<B extends core.int>(int x) =>
-    null;
-List<Function> Function({List<int> x}) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(int y, {Function x}) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x0, [List<int> x]) f13<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(Function x0) f14<B extends core.int>(int x) => null;
-List<int> Function(int x, [core.List<core.int> x0]) f15<B extends core.int>(
-        int x) =>
-    null;
-Function(int x0, {int x}) f16<B extends core.int>(int x) => null;
-Function([core.List<core.int> x]) f17<B extends core.int>(int x) => null;
-void Function(int y, [int x]) f18<B extends core.int>(int x) => null;
-void Function(int x0, [List<Function> x1]) f19<B extends core.int>(int x) =>
-    null;
-void Function(int x0, {List<int> x}) f20<B extends core.int>(int x) => null;
-List<Function> Function<A>(A x) f21<B extends core.int>(int x) => null;
-Function<A>(List<A> x) f22<B extends core.int>(int x) => null;
-Function Function(B x) f23<B extends core.int>(int x) => null;
-
-class U23<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([List<Function> x]) x0;
-  List<Function> Function(Function x) x1;
-  core.List<core.int> Function() x2;
-  Function(int y, {core.List<core.int> x}) x3;
-  core.List<core.int> Function<A>(List<A> x) x4;
-  int Function(int y, [Function x]) Function<B extends core.int>(int x) x5;
-  int Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(
-      int x) x6;
-  Function Function({int x}) Function<B extends core.int>(int x) x7;
-  Function Function(core.List<core.int> x) Function<B extends core.int>(int x)
-      x8;
-  List<Function> Function(int x1, [int x]) Function<B extends core.int>(int x)
-      x9;
-  List<Function> Function([List<Function> x1]) Function<B extends core.int>(
-      int x) x10;
-  List<Function> Function({List<T> x}) Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(int y, {Function x})
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function(int x1, [List<T> x])
-      Function<B extends core.int>(int x) x13;
-  List<T> Function(Function x1) Function<B extends core.int>(int x) x14;
-  List<T> Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>(int x) x15;
-  Function(int x1, {int x}) Function<B extends core.int>(int x) x16;
-  Function([core.List<core.int> x]) Function<B extends core.int>(int x) x17;
-  void Function(int y, [int x]) Function<B extends core.int>(int x) x18;
-  void Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-      x19;
-  void Function(int x1, {List<T> x}) Function<B extends core.int>(int x) x20;
-  List<Function> Function<A>(A x) Function<B extends core.int>(int x) x21;
-  Function<A>(List<A> x) Function<B extends core.int>(int x) x22;
-  Function Function(B x) Function<B extends core.int>(int x) x23;
-
-  U23({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([List<Function> x]) => null;
-  List<Function> m1(Function x) => null;
-  core.List<core.int> m2() => null;
-  m3(int y, {core.List<core.int> x}) => null;
-  core.List<core.int> m4<A>(List<A> x) => null;
-  int Function(int y, [Function x]) m5<B extends core.int>(int x) => null;
-  int Function(int x0, [core.List<core.int> x1]) m6<B extends core.int>(
-          int x) =>
-      null;
-  Function Function({int x}) m7<B extends core.int>(int x) => null;
-  Function Function(core.List<core.int> x) m8<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x0, [int x]) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function([List<Function> x0]) m10<B extends core.int>(int x) =>
-      null;
-  List<Function> Function({List<T> x}) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int y, {Function x}) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x0, [List<T> x]) m13<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(Function x0) m14<B extends core.int>(int x) => null;
-  List<T> Function(int x, [core.List<core.int> x0]) m15<B extends core.int>(
-          int x) =>
-      null;
-  Function(int x0, {int x}) m16<B extends core.int>(int x) => null;
-  Function([core.List<core.int> x]) m17<B extends core.int>(int x) => null;
-  void Function(int y, [int x]) m18<B extends core.int>(int x) => null;
-  void Function(int x0, [List<Function> x1]) m19<B extends core.int>(int x) =>
-      null;
-  void Function(int x0, {List<T> x}) m20<B extends core.int>(int x) => null;
-  List<Function> Function<A>(A x) m21<B extends core.int>(int x) => null;
-  Function<A>(List<A> x) m22<B extends core.int>(int x) => null;
-  Function Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([List<Function> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([List<Function> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(Function x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(Function x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// core.List<core.int> Function()
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function() l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function());
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int y, {core.List<core.int> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int y, {core.List<core.int> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int y, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// core.List<core.int> Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is core.List<core.int> Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, [Function x]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [Function x]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(
-        int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function({int x}) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({int x}) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function({int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x) Function<B extends core.int>(int x)
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1, [int x]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [int x]) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<Function> x1]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x1]) Function<B extends core.int>(
-        int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function({List<T> x}) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<T> x}) Function<B extends core.int>(int x)
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function({List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function({List<T> x}) Function<B extends core.int>(int x)
-            l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function({List<T> x}) Function<B extends core.int>(int x)
-          l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, {Function x}) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {Function x})
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x1, [List<T> x])
-            Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x1, [List<T> x])
-          Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(Function x1) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x1) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(Function x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x1) Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x1) Function<B extends core.int>(int x) l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [core.List<core.int> x1])
-            Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [core.List<core.int> x1])
-          Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, {int x}) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, {int x}) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x1, {int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, [int x]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [int x]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x2, [List<Function> x3]) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x1, {List<T> x}) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-            l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-          l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(A x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(A x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(A x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<A> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is Function<A>(List<A> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// Function Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    Function Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is Function Function(B x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U23().runTests();
-  new U23<int>(tIsInt: true).runTests();
-  new U23<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type24_test.dart b/tests/language/function_type/function_type24_test.dart
deleted file mode 100644
index 65e6559..0000000
--- a/tests/language/function_type/function_type24_test.dart
+++ /dev/null
@@ -1,969 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, [List<Function> x]);
-typedef F1<T> = List<Function> Function([Function x]);
-typedef F2<T> = List<T> Function(int x);
-typedef F3<T> = Function(List<T> x);
-typedef F4<T> = List<T> Function<A>(int x);
-typedef F5<T> = int Function(Function x0) Function();
-typedef F6<T> = int Function(int x, [core.List<core.int> x2]) Function();
-typedef F7<T> = Function Function(int x0, {int x}) Function();
-typedef F8<T> = Function Function([core.List<core.int> x]) Function();
-typedef F9<T> = List<Function> Function(int y, [int x]) Function();
-typedef F10<T> = List<Function> Function(int x1, [List<Function> x2])
-    Function();
-typedef F11<T> = List<Function> Function(int x0, {List<T> x}) Function();
-typedef F12<T> = core.List<core.int> Function(List<Function> x) Function();
-typedef F13<T> = core.List<core.int> Function(int y, [List<T> x]) Function();
-typedef F14<T> = List<T> Function([Function x1]) Function();
-typedef F15<T> = List<T> Function({core.List<core.int> x}) Function();
-typedef F16<T> = Function(int y, {int x}) Function();
-typedef F17<T> = Function(int x0, [core.List<core.int> x]) Function();
-typedef F18<T> = void Function(int x0) Function();
-typedef F19<T> = void Function(int x, [List<Function> x2]) Function();
-typedef F20<T> = void Function(int y, {List<T> x}) Function();
-typedef F21<T> = List<Function> Function<A>(List<A> x) Function();
-typedef F22<T> = A Function<A>(int x) Function();
-typedef F23<T> = List<Function> Function(B x) Function<B extends core.int>();
-
-int f0(int x0, [List<Function> x]) => null;
-List<Function> f1([Function x]) => null;
-List<int> f2(int x) => null;
-f3(List<int> x) => null;
-List<int> f4<A>(int x) => null;
-int Function(Function x0) f5() => null;
-int Function(int x, [core.List<core.int> x0]) f6() => null;
-Function Function(int x0, {int x}) f7() => null;
-Function Function([core.List<core.int> x]) f8() => null;
-List<Function> Function(int y, [int x]) f9() => null;
-List<Function> Function(int x0, [List<Function> x1]) f10() => null;
-List<Function> Function(int x0, {List<int> x}) f11() => null;
-core.List<core.int> Function(List<Function> x) f12() => null;
-core.List<core.int> Function(int y, [List<int> x]) f13() => null;
-List<int> Function([Function x0]) f14() => null;
-List<int> Function({core.List<core.int> x}) f15() => null;
-Function(int y, {int x}) f16() => null;
-Function(int x0, [core.List<core.int> x]) f17() => null;
-void Function(int x0) f18() => null;
-void Function(int x, [List<Function> x0]) f19() => null;
-void Function(int y, {List<int> x}) f20() => null;
-List<Function> Function<A>(List<A> x) f21() => null;
-A Function<A>(int x) f22() => null;
-List<Function> Function(B x) f23<B extends core.int>() => null;
-
-class U24<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, [List<Function> x]) x0;
-  List<Function> Function([Function x]) x1;
-  List<T> Function(int x) x2;
-  Function(List<T> x) x3;
-  List<T> Function<A>(int x) x4;
-  int Function(Function x0) Function() x5;
-  int Function(int x, [core.List<core.int> x2]) Function() x6;
-  Function Function(int x0, {int x}) Function() x7;
-  Function Function([core.List<core.int> x]) Function() x8;
-  List<Function> Function(int y, [int x]) Function() x9;
-  List<Function> Function(int x1, [List<Function> x2]) Function() x10;
-  List<Function> Function(int x0, {List<T> x}) Function() x11;
-  core.List<core.int> Function(List<Function> x) Function() x12;
-  core.List<core.int> Function(int y, [List<T> x]) Function() x13;
-  List<T> Function([Function x1]) Function() x14;
-  List<T> Function({core.List<core.int> x}) Function() x15;
-  Function(int y, {int x}) Function() x16;
-  Function(int x0, [core.List<core.int> x]) Function() x17;
-  void Function(int x0) Function() x18;
-  void Function(int x, [List<Function> x2]) Function() x19;
-  void Function(int y, {List<T> x}) Function() x20;
-  List<Function> Function<A>(List<A> x) Function() x21;
-  A Function<A>(int x) Function() x22;
-  List<Function> Function(B x) Function<B extends core.int>() x23;
-
-  U24({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [List<Function> x]) => null;
-  List<Function> m1([Function x]) => null;
-  List<T> m2(int x) => null;
-  m3(List<T> x) => null;
-  List<T> m4<A>(int x) => null;
-  int Function(Function x0) m5() => null;
-  int Function(int x, [core.List<core.int> x0]) m6() => null;
-  Function Function(int x0, {int x}) m7() => null;
-  Function Function([core.List<core.int> x]) m8() => null;
-  List<Function> Function(int y, [int x]) m9() => null;
-  List<Function> Function(int x0, [List<Function> x1]) m10() => null;
-  List<Function> Function(int x0, {List<T> x}) m11() => null;
-  core.List<core.int> Function(List<Function> x) m12() => null;
-  core.List<core.int> Function(int y, [List<T> x]) m13() => null;
-  List<T> Function([Function x0]) m14() => null;
-  List<T> Function({core.List<core.int> x}) m15() => null;
-  Function(int y, {int x}) m16() => null;
-  Function(int x0, [core.List<core.int> x]) m17() => null;
-  void Function(int x0) m18() => null;
-  void Function(int x, [List<Function> x0]) m19() => null;
-  void Function(int y, {List<T> x}) m20() => null;
-  List<Function> Function<A>(List<A> x) m21() => null;
-  A Function<A>(int x) m22() => null;
-  List<Function> Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, [List<Function> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, [List<Function> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, [List<Function> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([Function x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([Function x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(List<T> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(List<T> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(List<T> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(List<T> x) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(List<T> x) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>(int x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>(int x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(Function x0) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x0) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(Function x0) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [core.List<core.int> x2]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [core.List<core.int> x2]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function(int x, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x0, {int x}) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {int x}) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x0, {int x}) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, [int x]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [int x]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, [int x]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [List<Function> x2]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<Function> x2]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(int x1, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x0, {List<T> x}) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {List<T> x}) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect
-        .isTrue(m11 is List<Function> Function(int x0, {List<T> x}) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x0, {List<T> x}) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x0, {List<T> x}) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(List<Function> x) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(List<Function> x) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, [List<T> x]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<T> x]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function(int y, [List<T> x]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, [List<T> x]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, [List<T> x]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([Function x1]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x1]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([Function x1]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x1]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x1]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({core.List<core.int> x}) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({core.List<core.int> x}) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function({core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({core.List<core.int> x}) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({core.List<core.int> x}) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {int x}) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {int x}) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, {int x}) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x0, [core.List<core.int> x]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x0, [core.List<core.int> x]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x0, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x0) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x0) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x0) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [List<Function> x2]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<Function> x2]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int y, {List<T> x}) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<T> x}) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int y, {List<T> x}) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int y, {List<T> x}) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int y, {List<T> x}) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<A> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<A> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(int x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(int x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(int x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// List<Function> Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    List<Function> Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is List<Function> Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U24().runTests();
-  new U24<int>(tIsInt: true).runTests();
-  new U24<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type25_test.dart b/tests/language/function_type/function_type25_test.dart
deleted file mode 100644
index 189104a..0000000
--- a/tests/language/function_type/function_type25_test.dart
+++ /dev/null
@@ -1,977 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, [List<Function> x]);
-typedef F1<T> = List<Function> Function(int x0, [Function x]);
-typedef F2<T> = List<T> Function([int x]);
-typedef F3<T> = Function([List<T> x]);
-typedef F4<T> = List<T> Function<A>(Function x);
-typedef F5<T> = int Function(Function x1) Function(int x);
-typedef F6<T> = int Function(int x, [core.List<core.int> x1]) Function(int x);
-typedef F7<T> = Function Function(int x1, {int x}) Function(int x);
-typedef F8<T> = Function Function([core.List<core.int> x]) Function(int x);
-typedef F9<T> = List<Function> Function(int y, [int x]) Function(int x);
-typedef F10<T> = List<Function> Function(int x2, [List<Function> x3]) Function(
-    int x);
-typedef F11<T> = List<Function> Function(int x1, {List<T> x}) Function(int x);
-typedef F12<T> = core.List<core.int> Function(List<Function> x) Function(int x);
-typedef F13<T> = core.List<core.int> Function(int y, [List<T> x]) Function(
-    int x);
-typedef F14<T> = List<T> Function([Function x1]) Function(int x);
-typedef F15<T> = List<T> Function({core.List<core.int> x}) Function(int x);
-typedef F16<T> = Function(int y, {int x}) Function(int x);
-typedef F17<T> = Function(int x1, [core.List<core.int> x]) Function(int x);
-typedef F18<T> = void Function(int x1) Function(int x);
-typedef F19<T> = void Function(int x, [List<Function> x1]) Function(int x);
-typedef F20<T> = void Function(int y, {List<T> x}) Function(int x);
-typedef F21<T> = List<Function> Function<A>(List<A> x) Function(int x);
-typedef F22<T> = A Function<A>(int x) Function(int x);
-typedef F23<T> = List<Function> Function(B x) Function<B extends core.int>(
-    int x);
-
-int f0(int y, [List<Function> x]) => null;
-List<Function> f1(int x0, [Function x]) => null;
-List<int> f2([int x]) => null;
-f3([List<int> x]) => null;
-List<int> f4<A>(Function x) => null;
-int Function(Function x0) f5(int x) => null;
-int Function(int x, [core.List<core.int> x0]) f6(int x) => null;
-Function Function(int x0, {int x}) f7(int x) => null;
-Function Function([core.List<core.int> x]) f8(int x) => null;
-List<Function> Function(int y, [int x]) f9(int x) => null;
-List<Function> Function(int x0, [List<Function> x1]) f10(int x) => null;
-List<Function> Function(int x0, {List<int> x}) f11(int x) => null;
-core.List<core.int> Function(List<Function> x) f12(int x) => null;
-core.List<core.int> Function(int y, [List<int> x]) f13(int x) => null;
-List<int> Function([Function x0]) f14(int x) => null;
-List<int> Function({core.List<core.int> x}) f15(int x) => null;
-Function(int y, {int x}) f16(int x) => null;
-Function(int x0, [core.List<core.int> x]) f17(int x) => null;
-void Function(int x0) f18(int x) => null;
-void Function(int x, [List<Function> x0]) f19(int x) => null;
-void Function(int y, {List<int> x}) f20(int x) => null;
-List<Function> Function<A>(List<A> x) f21(int x) => null;
-A Function<A>(int x) f22(int x) => null;
-List<Function> Function(B x) f23<B extends core.int>(int x) => null;
-
-class U25<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, [List<Function> x]) x0;
-  List<Function> Function(int x0, [Function x]) x1;
-  List<T> Function([int x]) x2;
-  Function([List<T> x]) x3;
-  List<T> Function<A>(Function x) x4;
-  int Function(Function x1) Function(int x) x5;
-  int Function(int x, [core.List<core.int> x1]) Function(int x) x6;
-  Function Function(int x1, {int x}) Function(int x) x7;
-  Function Function([core.List<core.int> x]) Function(int x) x8;
-  List<Function> Function(int y, [int x]) Function(int x) x9;
-  List<Function> Function(int x2, [List<Function> x3]) Function(int x) x10;
-  List<Function> Function(int x1, {List<T> x}) Function(int x) x11;
-  core.List<core.int> Function(List<Function> x) Function(int x) x12;
-  core.List<core.int> Function(int y, [List<T> x]) Function(int x) x13;
-  List<T> Function([Function x1]) Function(int x) x14;
-  List<T> Function({core.List<core.int> x}) Function(int x) x15;
-  Function(int y, {int x}) Function(int x) x16;
-  Function(int x1, [core.List<core.int> x]) Function(int x) x17;
-  void Function(int x1) Function(int x) x18;
-  void Function(int x, [List<Function> x1]) Function(int x) x19;
-  void Function(int y, {List<T> x}) Function(int x) x20;
-  List<Function> Function<A>(List<A> x) Function(int x) x21;
-  A Function<A>(int x) Function(int x) x22;
-  List<Function> Function(B x) Function<B extends core.int>(int x) x23;
-
-  U25({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, [List<Function> x]) => null;
-  List<Function> m1(int x0, [Function x]) => null;
-  List<T> m2([int x]) => null;
-  m3([List<T> x]) => null;
-  List<T> m4<A>(Function x) => null;
-  int Function(Function x0) m5(int x) => null;
-  int Function(int x, [core.List<core.int> x0]) m6(int x) => null;
-  Function Function(int x0, {int x}) m7(int x) => null;
-  Function Function([core.List<core.int> x]) m8(int x) => null;
-  List<Function> Function(int y, [int x]) m9(int x) => null;
-  List<Function> Function(int x0, [List<Function> x1]) m10(int x) => null;
-  List<Function> Function(int x0, {List<T> x}) m11(int x) => null;
-  core.List<core.int> Function(List<Function> x) m12(int x) => null;
-  core.List<core.int> Function(int y, [List<T> x]) m13(int x) => null;
-  List<T> Function([Function x0]) m14(int x) => null;
-  List<T> Function({core.List<core.int> x}) m15(int x) => null;
-  Function(int y, {int x}) m16(int x) => null;
-  Function(int x0, [core.List<core.int> x]) m17(int x) => null;
-  void Function(int x0) m18(int x) => null;
-  void Function(int x, [List<Function> x0]) m19(int x) => null;
-  void Function(int y, {List<T> x}) m20(int x) => null;
-  List<Function> Function<A>(List<A> x) m21(int x) => null;
-  A Function<A>(int x) m22(int x) => null;
-  List<Function> Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, [List<Function> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<Function> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, [List<Function> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, [Function x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [Function x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, [Function x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([int x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([int x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([int x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([int x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([int x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function([List<T> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function([List<T> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function([List<T> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function([List<T> x]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function([List<T> x]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>(Function x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>(Function x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(Function x1) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x1) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(Function x1) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [core.List<core.int> x1]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [core.List<core.int> x1]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x, [core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1, {int x}) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {int x}) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, {int x}) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function([core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, [int x]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [int x]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int y, [int x]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x2, [List<Function> x3]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [List<Function> x3]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x2, [List<Function> x3])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x1, {List<T> x}) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {List<T> x}) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function(int x1, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x1, {List<T> x}) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x1, {List<T> x}) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(List<Function> x) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, [List<T> x]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<T> x]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y, [List<T> x])
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, [List<T> x]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, [List<T> x]) Function(int x) l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([Function x1]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x1]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([Function x1]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x1]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x1]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({core.List<core.int> x}) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({core.List<core.int> x}) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function({core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({core.List<core.int> x}) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({core.List<core.int> x}) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {int x}) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {int x}) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, {int x}) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [core.List<core.int> x]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [core.List<core.int> x]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x1, [core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [List<Function> x1]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<Function> x1]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x, [List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int y, {List<T> x}) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<T> x}) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int y, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int y, {List<T> x}) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int y, {List<T> x}) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<A> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<A> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(int x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(int x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// List<Function> Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    List<Function> Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is List<Function> Function(B x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U25().runTests();
-  new U25<int>(tIsInt: true).runTests();
-  new U25<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type26_test.dart b/tests/language/function_type/function_type26_test.dart
deleted file mode 100644
index 7721e94..0000000
--- a/tests/language/function_type/function_type26_test.dart
+++ /dev/null
@@ -1,1023 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(List<Function> x0);
-typedef F1<T> = List<Function> Function(int y, [Function x]);
-typedef F2<T> = List<T> Function(int x0, [int x]);
-typedef F3<T> = Function(int x0, [List<T> x]);
-typedef F4<T> = List<T> Function<A>(List<Function> x);
-typedef F5<T> = int Function(Function x1) Function<B extends core.int>();
-typedef F6<T> = int Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(int x1, {int x})
-    Function<B extends core.int>();
-typedef F8<T> = Function Function([core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int y, [int x])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x2, [List<Function> x3])
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function(int x1, {List<T> x})
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(List<Function> x)
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int y, [List<T> x])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function([Function x1]) Function<B extends core.int>();
-typedef F15<T> = List<T> Function({core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F16<T> = Function(int y, {int x}) Function<B extends core.int>();
-typedef F17<T> = Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F18<T> = void Function(int x1) Function<B extends core.int>();
-typedef F19<T> = void Function(int x, [List<Function> x1])
-    Function<B extends core.int>();
-typedef F20<T> = void Function(int y, {List<T> x})
-    Function<B extends core.int>();
-typedef F21<T> = List<Function> Function<A>(List<A> x)
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>(int x) Function<B extends core.int>();
-typedef F23<T> = core.List<core.int> Function(B x)
-    Function<B extends core.int>();
-
-int f0(List<Function> x0) => null;
-List<Function> f1(int y, [Function x]) => null;
-List<int> f2(int x0, [int x]) => null;
-f3(int x0, [List<int> x]) => null;
-List<int> f4<A>(List<Function> x) => null;
-int Function(Function x0) f5<B extends core.int>() => null;
-int Function(int x, [core.List<core.int> x0]) f6<B extends core.int>() => null;
-Function Function(int x0, {int x}) f7<B extends core.int>() => null;
-Function Function([core.List<core.int> x]) f8<B extends core.int>() => null;
-List<Function> Function(int y, [int x]) f9<B extends core.int>() => null;
-List<Function> Function(int x0, [List<Function> x1])
-    f10<B extends core.int>() => null;
-List<Function> Function(int x0, {List<int> x}) f11<B extends core.int>() =>
-    null;
-core.List<core.int> Function(List<Function> x) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int y, [List<int> x]) f13<B extends core.int>() =>
-    null;
-List<int> Function([Function x0]) f14<B extends core.int>() => null;
-List<int> Function({core.List<core.int> x}) f15<B extends core.int>() => null;
-Function(int y, {int x}) f16<B extends core.int>() => null;
-Function(int x0, [core.List<core.int> x]) f17<B extends core.int>() => null;
-void Function(int x0) f18<B extends core.int>() => null;
-void Function(int x, [List<Function> x0]) f19<B extends core.int>() => null;
-void Function(int y, {List<int> x}) f20<B extends core.int>() => null;
-List<Function> Function<A>(List<A> x) f21<B extends core.int>() => null;
-A Function<A>(int x) f22<B extends core.int>() => null;
-core.List<core.int> Function(B x) f23<B extends core.int>() => null;
-
-class U26<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(List<Function> x0) x0;
-  List<Function> Function(int y, [Function x]) x1;
-  List<T> Function(int x0, [int x]) x2;
-  Function(int x0, [List<T> x]) x3;
-  List<T> Function<A>(List<Function> x) x4;
-  int Function(Function x1) Function<B extends core.int>() x5;
-  int Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-      x6;
-  Function Function(int x1, {int x}) Function<B extends core.int>() x7;
-  Function Function([core.List<core.int> x]) Function<B extends core.int>() x8;
-  List<Function> Function(int y, [int x]) Function<B extends core.int>() x9;
-  List<Function> Function(int x2, [List<Function> x3])
-      Function<B extends core.int>() x10;
-  List<Function> Function(int x1, {List<T> x}) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function(List<Function> x) Function<B extends core.int>()
-      x12;
-  core.List<core.int> Function(int y, [List<T> x])
-      Function<B extends core.int>() x13;
-  List<T> Function([Function x1]) Function<B extends core.int>() x14;
-  List<T> Function({core.List<core.int> x}) Function<B extends core.int>() x15;
-  Function(int y, {int x}) Function<B extends core.int>() x16;
-  Function(int x1, [core.List<core.int> x]) Function<B extends core.int>() x17;
-  void Function(int x1) Function<B extends core.int>() x18;
-  void Function(int x, [List<Function> x1]) Function<B extends core.int>() x19;
-  void Function(int y, {List<T> x}) Function<B extends core.int>() x20;
-  List<Function> Function<A>(List<A> x) Function<B extends core.int>() x21;
-  A Function<A>(int x) Function<B extends core.int>() x22;
-  core.List<core.int> Function(B x) Function<B extends core.int>() x23;
-
-  U26({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(List<Function> x0) => null;
-  List<Function> m1(int y, [Function x]) => null;
-  List<T> m2(int x0, [int x]) => null;
-  m3(int x0, [List<T> x]) => null;
-  List<T> m4<A>(List<Function> x) => null;
-  int Function(Function x0) m5<B extends core.int>() => null;
-  int Function(int x, [core.List<core.int> x0]) m6<B extends core.int>() =>
-      null;
-  Function Function(int x0, {int x}) m7<B extends core.int>() => null;
-  Function Function([core.List<core.int> x]) m8<B extends core.int>() => null;
-  List<Function> Function(int y, [int x]) m9<B extends core.int>() => null;
-  List<Function> Function(int x0, [List<Function> x1])
-      m10<B extends core.int>() => null;
-  List<Function> Function(int x0, {List<T> x}) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(List<Function> x) m12<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int y, [List<T> x]) m13<B extends core.int>() =>
-      null;
-  List<T> Function([Function x0]) m14<B extends core.int>() => null;
-  List<T> Function({core.List<core.int> x}) m15<B extends core.int>() => null;
-  Function(int y, {int x}) m16<B extends core.int>() => null;
-  Function(int x0, [core.List<core.int> x]) m17<B extends core.int>() => null;
-  void Function(int x0) m18<B extends core.int>() => null;
-  void Function(int x, [List<Function> x0]) m19<B extends core.int>() => null;
-  void Function(int y, {List<T> x}) m20<B extends core.int>() => null;
-  List<Function> Function<A>(List<A> x) m21<B extends core.int>() => null;
-  A Function<A>(int x) m22<B extends core.int>() => null;
-  core.List<core.int> Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(List<Function> x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(List<Function> x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, [Function x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [Function x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, [Function x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, [int x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [int x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, [int x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, [int x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, [int x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x0, [List<T> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x0, [List<T> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x0, [List<T> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(int x0, [List<T> x]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(int x0, [List<T> x]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>(List<Function> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>(List<Function> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(Function x1) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x1) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect
-        .isTrue(m5 is int Function(Function x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1, {int x}) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {int x}) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, {int x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x]) Function<B extends core.int>()
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, [int x]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [int x]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, [int x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x1, {List<T> x}) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {List<T> x}) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int x1, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x1, {List<T> x})
-            Function<B extends core.int>() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x1, {List<T> x})
-          Function<B extends core.int>() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(List<Function> x) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x)
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, [List<T> x]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<T> x])
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, [List<T> x])
-            Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, [List<T> x])
-          Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([Function x1]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x1]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function([Function x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x1]) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x1]) Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({core.List<core.int> x}) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({core.List<core.int> x}) Function<B extends core.int>()
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function({core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({core.List<core.int> x}) Function<B extends core.int>()
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({core.List<core.int> x}) Function<B extends core.int>()
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {int x}) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {int x}) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect
-        .isTrue(m16 is Function(int y, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [List<Function> x1]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<Function> x1]) Function<B extends core.int>()
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x, [List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int y, {List<T> x}) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<T> x}) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int y, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int y, {List<T> x}) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int y, {List<T> x}) Function<B extends core.int>() l20 =
-          m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<A> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<A> x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<A> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(int x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(int x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// core.List<core.int> Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is core.List<core.int> Function(B x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U26().runTests();
-  new U26<int>(tIsInt: true).runTests();
-  new U26<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type27_test.dart b/tests/language/function_type/function_type27_test.dart
deleted file mode 100644
index 90be78b..0000000
--- a/tests/language/function_type/function_type27_test.dart
+++ /dev/null
@@ -1,1049 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([List<Function> x1]);
-typedef F1<T> = List<Function> Function(Function x0);
-typedef F2<T> = List<T> Function(int y, [int x]);
-typedef F3<T> = Function(int y, [List<T> x]);
-typedef F4<T> = List<T> Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function(Function x1) Function<B extends core.int>(int x);
-typedef F6<T> = int Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x1, {int x}) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function([core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int y, [int x])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x2, [List<Function> x3])
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function(int x1, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int y, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function([Function x1]) Function<B extends core.int>(
-    int x);
-typedef F15<T> = List<T> Function({core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(int y, {int x}) Function<B extends core.int>(int x);
-typedef F17<T> = Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int x1) Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int x, [List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F20<T> = void Function(int y, {List<T> x}) Function<B extends core.int>(
-    int x);
-typedef F21<T> = List<Function> Function<A>(List<A> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = A Function<A>(int x) Function<B extends core.int>(int x);
-typedef F23<T> = core.List<core.int> Function(B x) Function<B extends core.int>(
-    int x);
-
-int f0([List<Function> x0]) => null;
-List<Function> f1(Function x0) => null;
-List<int> f2(int y, [int x]) => null;
-f3(int y, [List<int> x]) => null;
-List<int> f4<A>(core.List<core.int> x) => null;
-int Function(Function x0) f5<B extends core.int>(int x) => null;
-int Function(int x, [core.List<core.int> x0]) f6<B extends core.int>(int x) =>
-    null;
-Function Function(int x0, {int x}) f7<B extends core.int>(int x) => null;
-Function Function([core.List<core.int> x]) f8<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int y, [int x]) f9<B extends core.int>(int x) => null;
-List<Function> Function(int x0, [List<Function> x1]) f10<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function(int x0, {List<int> x}) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(List<Function> x) f12<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int y, [List<int> x]) f13<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function([Function x0]) f14<B extends core.int>(int x) => null;
-List<int> Function({core.List<core.int> x}) f15<B extends core.int>(int x) =>
-    null;
-Function(int y, {int x}) f16<B extends core.int>(int x) => null;
-Function(int x0, [core.List<core.int> x]) f17<B extends core.int>(int x) =>
-    null;
-void Function(int x0) f18<B extends core.int>(int x) => null;
-void Function(int x, [List<Function> x0]) f19<B extends core.int>(int x) =>
-    null;
-void Function(int y, {List<int> x}) f20<B extends core.int>(int x) => null;
-List<Function> Function<A>(List<A> x) f21<B extends core.int>(int x) => null;
-A Function<A>(int x) f22<B extends core.int>(int x) => null;
-core.List<core.int> Function(B x) f23<B extends core.int>(int x) => null;
-
-class U27<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([List<Function> x1]) x0;
-  List<Function> Function(Function x0) x1;
-  List<T> Function(int y, [int x]) x2;
-  Function(int y, [List<T> x]) x3;
-  List<T> Function<A>(core.List<core.int> x) x4;
-  int Function(Function x1) Function<B extends core.int>(int x) x5;
-  int Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(
-      int x) x6;
-  Function Function(int x1, {int x}) Function<B extends core.int>(int x) x7;
-  Function Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-      x8;
-  List<Function> Function(int y, [int x]) Function<B extends core.int>(int x)
-      x9;
-  List<Function> Function(int x2, [List<Function> x3])
-      Function<B extends core.int>(int x) x10;
-  List<Function> Function(int x1, {List<T> x}) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function(List<Function> x) Function<B extends core.int>(
-      int x) x12;
-  core.List<core.int> Function(int y, [List<T> x]) Function<B extends core.int>(
-      int x) x13;
-  List<T> Function([Function x1]) Function<B extends core.int>(int x) x14;
-  List<T> Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-      x15;
-  Function(int y, {int x}) Function<B extends core.int>(int x) x16;
-  Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-      x17;
-  void Function(int x1) Function<B extends core.int>(int x) x18;
-  void Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-      x19;
-  void Function(int y, {List<T> x}) Function<B extends core.int>(int x) x20;
-  List<Function> Function<A>(List<A> x) Function<B extends core.int>(int x) x21;
-  A Function<A>(int x) Function<B extends core.int>(int x) x22;
-  core.List<core.int> Function(B x) Function<B extends core.int>(int x) x23;
-
-  U27({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([List<Function> x0]) => null;
-  List<Function> m1(Function x0) => null;
-  List<T> m2(int y, [int x]) => null;
-  m3(int y, [List<T> x]) => null;
-  List<T> m4<A>(core.List<core.int> x) => null;
-  int Function(Function x0) m5<B extends core.int>(int x) => null;
-  int Function(int x, [core.List<core.int> x0]) m6<B extends core.int>(int x) =>
-      null;
-  Function Function(int x0, {int x}) m7<B extends core.int>(int x) => null;
-  Function Function([core.List<core.int> x]) m8<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int y, [int x]) m9<B extends core.int>(int x) => null;
-  List<Function> Function(int x0, [List<Function> x1]) m10<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function(int x0, {List<T> x}) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(List<Function> x) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int y, [List<T> x]) m13<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function([Function x0]) m14<B extends core.int>(int x) => null;
-  List<T> Function({core.List<core.int> x}) m15<B extends core.int>(int x) =>
-      null;
-  Function(int y, {int x}) m16<B extends core.int>(int x) => null;
-  Function(int x0, [core.List<core.int> x]) m17<B extends core.int>(int x) =>
-      null;
-  void Function(int x0) m18<B extends core.int>(int x) => null;
-  void Function(int x, [List<Function> x0]) m19<B extends core.int>(int x) =>
-      null;
-  void Function(int y, {List<T> x}) m20<B extends core.int>(int x) => null;
-  List<Function> Function<A>(List<A> x) m21<B extends core.int>(int x) => null;
-  A Function<A>(int x) m22<B extends core.int>(int x) => null;
-  core.List<core.int> Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([List<Function> x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([List<Function> x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(Function x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(Function x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, [int x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [int x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, [int x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, [int x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, [int x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int y, [List<T> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int y, [List<T> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int y, [List<T> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(int y, [List<T> x]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(int y, [List<T> x]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>(core.List<core.int> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>(core.List<core.int> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(Function x1) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x1) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(Function x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(
-        int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1, {int x}) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {int x}) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x]) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, [int x]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [int x]) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {List<T> x}) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int x1, {List<T> x})
-            Function<B extends core.int>(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int x1, {List<T> x}) Function<B extends core.int>(
-          int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x) Function<B extends core.int>(
-        int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<T> x])
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, [List<T> x])
-            Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, [List<T> x])
-          Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([Function x1]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x1]) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x1]) Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x1]) Function<B extends core.int>(int x) l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({core.List<core.int> x}) Function<B extends core.int>(
-        int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function({core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({core.List<core.int> x}) Function<B extends core.int>(
-            int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({core.List<core.int> x}) Function<B extends core.int>(
-          int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {int x}) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {int x}) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int y, {int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(
-        int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<Function> x1]) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<T> x}) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int y, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-            l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-          l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<A> x) Function<B extends core.int>(int x)
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<A> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(int x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(int x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is A Function<A>(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// core.List<core.int> Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is core.List<core.int> Function(B x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U27().runTests();
-  new U27<int>(tIsInt: true).runTests();
-  new U27<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type28_test.dart b/tests/language/function_type/function_type28_test.dart
deleted file mode 100644
index 65e2da3..0000000
--- a/tests/language/function_type/function_type28_test.dart
+++ /dev/null
@@ -1,967 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x1, [List<Function> x2]);
-typedef F1<T> = List<Function> Function([Function x1]);
-typedef F2<T> = List<T> Function(int x0);
-typedef F3<T> = Function(List<T> x0);
-typedef F4<T> = List<T> Function<A>(List<T> x);
-typedef F5<T> = int Function([Function x1]) Function();
-typedef F6<T> = int Function({core.List<core.int> x}) Function();
-typedef F7<T> = Function Function(int y, {int x}) Function();
-typedef F8<T> = Function Function(int x0, [core.List<core.int> x]) Function();
-typedef F9<T> = List<Function> Function(int x0) Function();
-typedef F10<T> = List<Function> Function(int x, [List<Function> x2]) Function();
-typedef F11<T> = List<Function> Function(int y, {List<T> x}) Function();
-typedef F12<T> = core.List<core.int> Function([List<Function> x]) Function();
-typedef F13<T> = core.List<core.int> Function(List<T> x0) Function();
-typedef F14<T> = List<T> Function(int x1, [Function x2]) Function();
-typedef F15<T> = List<T> Function(int x0, {core.List<core.int> x}) Function();
-typedef F16<T> = Function(Function x) Function();
-typedef F17<T> = Function(int y, [core.List<core.int> x]) Function();
-typedef F18<T> = void Function([int x1]) Function();
-typedef F19<T> = void Function({List<Function> x}) Function();
-typedef F20<T> = void Function() Function();
-typedef F21<T> = core.List<core.int> Function<A>(int x) Function();
-typedef F22<T> = A Function<A>(Function x) Function();
-typedef F23<T> = List<T> Function(B x) Function<B extends core.int>();
-
-int f0(int x0, [List<Function> x1]) => null;
-List<Function> f1([Function x0]) => null;
-List<int> f2(int x0) => null;
-f3(List<int> x0) => null;
-List<int> f4<A>(List<int> x) => null;
-int Function([Function x0]) f5() => null;
-int Function({core.List<core.int> x}) f6() => null;
-Function Function(int y, {int x}) f7() => null;
-Function Function(int x0, [core.List<core.int> x]) f8() => null;
-List<Function> Function(int x0) f9() => null;
-List<Function> Function(int x, [List<Function> x0]) f10() => null;
-List<Function> Function(int y, {List<int> x}) f11() => null;
-core.List<core.int> Function([List<Function> x]) f12() => null;
-core.List<core.int> Function(List<int> x0) f13() => null;
-List<int> Function(int x0, [Function x1]) f14() => null;
-List<int> Function(int x0, {core.List<core.int> x}) f15() => null;
-Function(Function x) f16() => null;
-Function(int y, [core.List<core.int> x]) f17() => null;
-void Function([int x0]) f18() => null;
-void Function({List<Function> x}) f19() => null;
-void Function() f20() => null;
-core.List<core.int> Function<A>(int x) f21() => null;
-A Function<A>(Function x) f22() => null;
-List<int> Function(B x) f23<B extends core.int>() => null;
-
-class U28<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x1, [List<Function> x2]) x0;
-  List<Function> Function([Function x1]) x1;
-  List<T> Function(int x0) x2;
-  Function(List<T> x0) x3;
-  List<T> Function<A>(List<T> x) x4;
-  int Function([Function x1]) Function() x5;
-  int Function({core.List<core.int> x}) Function() x6;
-  Function Function(int y, {int x}) Function() x7;
-  Function Function(int x0, [core.List<core.int> x]) Function() x8;
-  List<Function> Function(int x0) Function() x9;
-  List<Function> Function(int x, [List<Function> x2]) Function() x10;
-  List<Function> Function(int y, {List<T> x}) Function() x11;
-  core.List<core.int> Function([List<Function> x]) Function() x12;
-  core.List<core.int> Function(List<T> x0) Function() x13;
-  List<T> Function(int x1, [Function x2]) Function() x14;
-  List<T> Function(int x0, {core.List<core.int> x}) Function() x15;
-  Function(Function x) Function() x16;
-  Function(int y, [core.List<core.int> x]) Function() x17;
-  void Function([int x1]) Function() x18;
-  void Function({List<Function> x}) Function() x19;
-  void Function() Function() x20;
-  core.List<core.int> Function<A>(int x) Function() x21;
-  A Function<A>(Function x) Function() x22;
-  List<T> Function(B x) Function<B extends core.int>() x23;
-
-  U28({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [List<Function> x1]) => null;
-  List<Function> m1([Function x0]) => null;
-  List<T> m2(int x0) => null;
-  m3(List<T> x0) => null;
-  List<T> m4<A>(List<T> x) => null;
-  int Function([Function x0]) m5() => null;
-  int Function({core.List<core.int> x}) m6() => null;
-  Function Function(int y, {int x}) m7() => null;
-  Function Function(int x0, [core.List<core.int> x]) m8() => null;
-  List<Function> Function(int x0) m9() => null;
-  List<Function> Function(int x, [List<Function> x0]) m10() => null;
-  List<Function> Function(int y, {List<T> x}) m11() => null;
-  core.List<core.int> Function([List<Function> x]) m12() => null;
-  core.List<core.int> Function(List<T> x0) m13() => null;
-  List<T> Function(int x0, [Function x1]) m14() => null;
-  List<T> Function(int x0, {core.List<core.int> x}) m15() => null;
-  Function(Function x) m16() => null;
-  Function(int y, [core.List<core.int> x]) m17() => null;
-  void Function([int x0]) m18() => null;
-  void Function({List<Function> x}) m19() => null;
-  void Function() m20() => null;
-  core.List<core.int> Function<A>(int x) m21() => null;
-  A Function<A>(Function x) m22() => null;
-  List<T> Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x1, [List<Function> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<Function> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x1, [List<Function> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([Function x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([Function x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(List<T> x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(List<T> x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(List<T> x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(List<T> x0) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(List<T> x0) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function([Function x1]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x1]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([Function x1]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({core.List<core.int> x}) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({core.List<core.int> x}) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function({core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, {int x}) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {int x}) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, {int x}) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x0, [core.List<core.int> x]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [core.List<core.int> x]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x0, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x0) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x0) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [List<Function> x2]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<Function> x2]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(int x, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, {List<T> x}) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<T> x}) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect
-        .isTrue(m11 is List<Function> Function(int y, {List<T> x}) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, {List<T> x}) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, {List<T> x}) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([List<Function> x]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function([List<Function> x]) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x0) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x0) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(List<T> x0) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x0) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x0) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, [Function x2]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [Function x2]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, [Function x2]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [Function x2]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [Function x2]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x0, {core.List<core.int> x}) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {core.List<core.int> x}) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(int x0, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x0, {core.List<core.int> x}) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x0, {core.List<core.int> x}) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(Function x) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [core.List<core.int> x]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [core.List<core.int> x]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x1]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x1]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([int x1]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({List<Function> x}) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({List<Function> x}) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function({List<Function> x}) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function() Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function() Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function() Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(int x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(int x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(int x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(Function x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(Function x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// List<T> Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    List<T> Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is List<T> Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        List<T> Function(B x) Function<B extends core.int>() l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      List<T> Function(B x) Function<B extends core.int>() l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U28().runTests();
-  new U28<int>(tIsInt: true).runTests();
-  new U28<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type29_test.dart b/tests/language/function_type/function_type29_test.dart
deleted file mode 100644
index 7c2a35e..0000000
--- a/tests/language/function_type/function_type29_test.dart
+++ /dev/null
@@ -1,977 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x, [List<Function> x2]);
-typedef F1<T> = List<Function> Function(int x1, [Function x2]);
-typedef F2<T> = List<T> Function([int x1]);
-typedef F3<T> = Function([List<T> x1]);
-typedef F4<T> = List<T> Function<A>();
-typedef F5<T> = int Function([Function x1]) Function(int x);
-typedef F6<T> = int Function({core.List<core.int> x}) Function(int x);
-typedef F7<T> = Function Function(int y, {int x}) Function(int x);
-typedef F8<T> = Function Function(int x1, [core.List<core.int> x]) Function(
-    int x);
-typedef F9<T> = List<Function> Function(int x1) Function(int x);
-typedef F10<T> = List<Function> Function(int x, [List<Function> x1]) Function(
-    int x);
-typedef F11<T> = List<Function> Function(int y, {List<T> x}) Function(int x);
-typedef F12<T> = core.List<core.int> Function([List<Function> x]) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function(List<T> x1) Function(int x);
-typedef F14<T> = List<T> Function(int x2, [Function x3]) Function(int x);
-typedef F15<T> = List<T> Function(int x1, {core.List<core.int> x}) Function(
-    int x);
-typedef F16<T> = Function(Function x) Function(int x);
-typedef F17<T> = Function(int y, [core.List<core.int> x]) Function(int x);
-typedef F18<T> = void Function([int x1]) Function(int x);
-typedef F19<T> = void Function({List<Function> x}) Function(int x);
-typedef F20<T> = void Function() Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>(int x) Function(int x);
-typedef F22<T> = A Function<A>(Function x) Function(int x);
-typedef F23<T> = List<T> Function(B x) Function<B extends core.int>(int x);
-
-int f0(int x, [List<Function> x0]) => null;
-List<Function> f1(int x0, [Function x1]) => null;
-List<int> f2([int x0]) => null;
-f3([List<int> x0]) => null;
-List<int> f4<A>() => null;
-int Function([Function x0]) f5(int x) => null;
-int Function({core.List<core.int> x}) f6(int x) => null;
-Function Function(int y, {int x}) f7(int x) => null;
-Function Function(int x0, [core.List<core.int> x]) f8(int x) => null;
-List<Function> Function(int x0) f9(int x) => null;
-List<Function> Function(int x, [List<Function> x0]) f10(int x) => null;
-List<Function> Function(int y, {List<int> x}) f11(int x) => null;
-core.List<core.int> Function([List<Function> x]) f12(int x) => null;
-core.List<core.int> Function(List<int> x0) f13(int x) => null;
-List<int> Function(int x0, [Function x1]) f14(int x) => null;
-List<int> Function(int x0, {core.List<core.int> x}) f15(int x) => null;
-Function(Function x) f16(int x) => null;
-Function(int y, [core.List<core.int> x]) f17(int x) => null;
-void Function([int x0]) f18(int x) => null;
-void Function({List<Function> x}) f19(int x) => null;
-void Function() f20(int x) => null;
-core.List<core.int> Function<A>(int x) f21(int x) => null;
-A Function<A>(Function x) f22(int x) => null;
-List<int> Function(B x) f23<B extends core.int>(int x) => null;
-
-class U29<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x, [List<Function> x2]) x0;
-  List<Function> Function(int x1, [Function x2]) x1;
-  List<T> Function([int x1]) x2;
-  Function([List<T> x1]) x3;
-  List<T> Function<A>() x4;
-  int Function([Function x1]) Function(int x) x5;
-  int Function({core.List<core.int> x}) Function(int x) x6;
-  Function Function(int y, {int x}) Function(int x) x7;
-  Function Function(int x1, [core.List<core.int> x]) Function(int x) x8;
-  List<Function> Function(int x1) Function(int x) x9;
-  List<Function> Function(int x, [List<Function> x1]) Function(int x) x10;
-  List<Function> Function(int y, {List<T> x}) Function(int x) x11;
-  core.List<core.int> Function([List<Function> x]) Function(int x) x12;
-  core.List<core.int> Function(List<T> x1) Function(int x) x13;
-  List<T> Function(int x2, [Function x3]) Function(int x) x14;
-  List<T> Function(int x1, {core.List<core.int> x}) Function(int x) x15;
-  Function(Function x) Function(int x) x16;
-  Function(int y, [core.List<core.int> x]) Function(int x) x17;
-  void Function([int x1]) Function(int x) x18;
-  void Function({List<Function> x}) Function(int x) x19;
-  void Function() Function(int x) x20;
-  core.List<core.int> Function<A>(int x) Function(int x) x21;
-  A Function<A>(Function x) Function(int x) x22;
-  List<T> Function(B x) Function<B extends core.int>(int x) x23;
-
-  U29({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x, [List<Function> x0]) => null;
-  List<Function> m1(int x0, [Function x1]) => null;
-  List<T> m2([int x0]) => null;
-  m3([List<T> x0]) => null;
-  List<T> m4<A>() => null;
-  int Function([Function x0]) m5(int x) => null;
-  int Function({core.List<core.int> x}) m6(int x) => null;
-  Function Function(int y, {int x}) m7(int x) => null;
-  Function Function(int x0, [core.List<core.int> x]) m8(int x) => null;
-  List<Function> Function(int x0) m9(int x) => null;
-  List<Function> Function(int x, [List<Function> x0]) m10(int x) => null;
-  List<Function> Function(int y, {List<T> x}) m11(int x) => null;
-  core.List<core.int> Function([List<Function> x]) m12(int x) => null;
-  core.List<core.int> Function(List<T> x0) m13(int x) => null;
-  List<T> Function(int x0, [Function x1]) m14(int x) => null;
-  List<T> Function(int x0, {core.List<core.int> x}) m15(int x) => null;
-  Function(Function x) m16(int x) => null;
-  Function(int y, [core.List<core.int> x]) m17(int x) => null;
-  void Function([int x0]) m18(int x) => null;
-  void Function({List<Function> x}) m19(int x) => null;
-  void Function() m20(int x) => null;
-  core.List<core.int> Function<A>(int x) m21(int x) => null;
-  A Function<A>(Function x) m22(int x) => null;
-  List<T> Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x, [List<Function> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<Function> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x, [List<Function> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x1, [Function x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [Function x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x1, [Function x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([int x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([int x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([int x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([int x1]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([int x1]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function([List<T> x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function([List<T> x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function([List<T> x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function([List<T> x1]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function([List<T> x1]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>() l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>() l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function([Function x1]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x1]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([Function x1]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({core.List<core.int> x}) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({core.List<core.int> x}) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function({core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, {int x}) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {int x}) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, {int x}) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [core.List<core.int> x]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [core.List<core.int> x]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [List<Function> x1]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<Function> x1]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x, [List<Function> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, {List<T> x}) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<T> x}) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function(int y, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, {List<T> x}) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, {List<T> x}) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([List<Function> x]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([List<Function> x])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x1) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x1) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function(List<T> x1) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x1) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x1) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x2, [Function x3]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [Function x3]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int x2, [Function x3]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x2, [Function x3]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x2, [Function x3]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, {core.List<core.int> x}) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {core.List<core.int> x}) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, {core.List<core.int> x}) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, {core.List<core.int> x}) Function(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(Function x) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [core.List<core.int> x]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [core.List<core.int> x]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int y, [core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x1]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x1]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([int x1]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({List<Function> x}) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({List<Function> x}) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function({List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function() Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function() Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function() Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(int x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(int x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect
-        .isTrue(m21 is core.List<core.int> Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(Function x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(Function x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// List<T> Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    List<T> Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is List<T> Function(B x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        List<T> Function(B x) Function<B extends core.int>(int x) l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      List<T> Function(B x) Function<B extends core.int>(int x) l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U29().runTests();
-  new U29<int>(tIsInt: true).runTests();
-  new U29<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type2_test.dart b/tests/language/function_type/function_type2_test.dart
deleted file mode 100644
index 1dc0a18..0000000
--- a/tests/language/function_type/function_type2_test.dart
+++ /dev/null
@@ -1,988 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, [int x]);
-typedef F1<T> = Function Function(int x0, [List<T> x]);
-typedef F2<T> = core.List<core.int> Function([core.List<core.int> x]);
-typedef F3<T> = Function(List<Function> x);
-typedef F4<T> = Function Function<A>(List<Function> x);
-typedef F5<T> = int Function(int x1, {int x}) Function<B extends core.int>();
-typedef F6<T> = int Function([core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(int y, [int x])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x2, [List<Function> x3])
-    Function<B extends core.int>();
-typedef F9<T> = Function Function(int x1, {List<T> x})
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(List<Function> x)
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function(int y, [List<T> x])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function([Function x1])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function({core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int y, {int x})
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F16<T> = Function(int x1) Function<B extends core.int>();
-typedef F17<T> = Function(int x, [List<Function> x1])
-    Function<B extends core.int>();
-typedef F18<T> = Function(int y, {List<T> x}) Function<B extends core.int>();
-typedef F19<T> = void Function([List<Function> x])
-    Function<B extends core.int>();
-typedef F20<T> = void Function(List<T> x1) Function<B extends core.int>();
-typedef F21<T> = List<Function> Function<A>(Function x)
-    Function<B extends core.int>();
-typedef F22<T> = Function<A>(List<Function> x) Function<B extends core.int>();
-typedef F23<T> = void Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-
-int f0(int x0, [int x]) => null;
-Function f1(int x0, [List<int> x]) => null;
-core.List<core.int> f2([core.List<core.int> x]) => null;
-f3(List<Function> x) => null;
-Function f4<A>(List<Function> x) => null;
-int Function(int x0, {int x}) f5<B extends core.int>() => null;
-int Function([core.List<core.int> x]) f6<B extends core.int>() => null;
-Function Function(int y, [int x]) f7<B extends core.int>() => null;
-Function Function(int x0, [List<Function> x1]) f8<B extends core.int>() => null;
-Function Function(int x0, {List<int> x}) f9<B extends core.int>() => null;
-List<Function> Function(List<Function> x) f10<B extends core.int>() => null;
-List<Function> Function(int y, [List<int> x]) f11<B extends core.int>() => null;
-core.List<core.int> Function([Function x0]) f12<B extends core.int>() => null;
-core.List<core.int> Function({core.List<core.int> x})
-    f13<B extends core.int>() => null;
-List<int> Function(int y, {int x}) f14<B extends core.int>() => null;
-List<int> Function(int x0, [core.List<core.int> x]) f15<B extends core.int>() =>
-    null;
-Function(int x0) f16<B extends core.int>() => null;
-Function(int x, [List<Function> x0]) f17<B extends core.int>() => null;
-Function(int y, {List<int> x}) f18<B extends core.int>() => null;
-void Function([List<Function> x]) f19<B extends core.int>() => null;
-void Function(List<int> x0) f20<B extends core.int>() => null;
-List<Function> Function<A>(Function x) f21<B extends core.int>() => null;
-Function<A>(List<Function> x) f22<B extends core.int>() => null;
-void Function<A>(core.List<core.int> x) f23<B extends core.int>() => null;
-
-class U2<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, [int x]) x0;
-  Function Function(int x0, [List<T> x]) x1;
-  core.List<core.int> Function([core.List<core.int> x]) x2;
-  Function(List<Function> x) x3;
-  Function Function<A>(List<Function> x) x4;
-  int Function(int x1, {int x}) Function<B extends core.int>() x5;
-  int Function([core.List<core.int> x]) Function<B extends core.int>() x6;
-  Function Function(int y, [int x]) Function<B extends core.int>() x7;
-  Function Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-      x8;
-  Function Function(int x1, {List<T> x}) Function<B extends core.int>() x9;
-  List<Function> Function(List<Function> x) Function<B extends core.int>() x10;
-  List<Function> Function(int y, [List<T> x]) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function([Function x1]) Function<B extends core.int>()
-      x12;
-  core.List<core.int> Function({core.List<core.int> x})
-      Function<B extends core.int>() x13;
-  List<T> Function(int y, {int x}) Function<B extends core.int>() x14;
-  List<T> Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>() x15;
-  Function(int x1) Function<B extends core.int>() x16;
-  Function(int x, [List<Function> x1]) Function<B extends core.int>() x17;
-  Function(int y, {List<T> x}) Function<B extends core.int>() x18;
-  void Function([List<Function> x]) Function<B extends core.int>() x19;
-  void Function(List<T> x1) Function<B extends core.int>() x20;
-  List<Function> Function<A>(Function x) Function<B extends core.int>() x21;
-  Function<A>(List<Function> x) Function<B extends core.int>() x22;
-  void Function<A>(core.List<core.int> x) Function<B extends core.int>() x23;
-
-  U2({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [int x]) => null;
-  Function m1(int x0, [List<T> x]) => null;
-  core.List<core.int> m2([core.List<core.int> x]) => null;
-  m3(List<Function> x) => null;
-  Function m4<A>(List<Function> x) => null;
-  int Function(int x0, {int x}) m5<B extends core.int>() => null;
-  int Function([core.List<core.int> x]) m6<B extends core.int>() => null;
-  Function Function(int y, [int x]) m7<B extends core.int>() => null;
-  Function Function(int x0, [List<Function> x1]) m8<B extends core.int>() =>
-      null;
-  Function Function(int x0, {List<T> x}) m9<B extends core.int>() => null;
-  List<Function> Function(List<Function> x) m10<B extends core.int>() => null;
-  List<Function> Function(int y, [List<T> x]) m11<B extends core.int>() => null;
-  core.List<core.int> Function([Function x0]) m12<B extends core.int>() => null;
-  core.List<core.int> Function({core.List<core.int> x})
-      m13<B extends core.int>() => null;
-  List<T> Function(int y, {int x}) m14<B extends core.int>() => null;
-  List<T> Function(int x0, [core.List<core.int> x]) m15<B extends core.int>() =>
-      null;
-  Function(int x0) m16<B extends core.int>() => null;
-  Function(int x, [List<Function> x0]) m17<B extends core.int>() => null;
-  Function(int y, {List<T> x}) m18<B extends core.int>() => null;
-  void Function([List<Function> x]) m19<B extends core.int>() => null;
-  void Function(List<T> x0) m20<B extends core.int>() => null;
-  List<Function> Function<A>(Function x) m21<B extends core.int>() => null;
-  Function<A>(List<Function> x) m22<B extends core.int>() => null;
-  void Function<A>(core.List<core.int> x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, [int x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, [int x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, [int x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(int x0, [List<T> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [List<T> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(int x0, [List<T> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(int x0, [List<T> x]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(int x0, [List<T> x]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function([core.List<core.int> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(List<Function> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(List<Function> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(List<Function> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {int x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {int x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(int x1, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [int x]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [int x]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function(int y, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [List<Function> x3])
-        Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x2, [List<Function> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int x1, {List<T> x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {List<T> x}) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int x1, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int x1, {List<T> x}) Function<B extends core.int>()
-            l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int x1, {List<T> x}) Function<B extends core.int>() l9 =
-          m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function(List<Function> x) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x) Function<B extends core.int>()
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, [List<T> x]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<T> x]) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int y, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, [List<T> x])
-            Function<B extends core.int>() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, [List<T> x]) Function<B extends core.int>()
-          l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([Function x1]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x1]) Function<B extends core.int>()
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({core.List<core.int> x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({core.List<core.int> x})
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function({core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int y, {int x}) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {int x}) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int y, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {int x}) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {int x}) Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [core.List<core.int> x])
-            Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [core.List<core.int> x])
-          Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<Function> x1]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<Function> x1]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function(int y, {List<T> x}) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function(int y, {List<T> x}) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is Function(int y, {List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-    if (!tIsBool) {
-      Expect.isTrue(f18 is F18<int>);
-      Expect.isFalse(f18 is F18<bool>);
-      Expect.isTrue(confuse(f18) is F18<int>);
-      Expect.isFalse(confuse(f18) is F18<bool>);
-      Expect.equals(tIsDynamic, m18 is F18<bool>);
-      Expect.equals(tIsDynamic, confuse(m18) is F18<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          x18 = confuse(f18);
-        });
-        Function(int y, {List<T> x}) Function<B extends core.int>() l18;
-        Expect.throws(() {
-          l18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          l18 = confuse(f18);
-        });
-      }
-      Function(int y, {List<T> x}) Function<B extends core.int>() l18 = m18;
-      // In checked mode, verifies the type.
-      x18 = m18;
-      x18 = confuse(m18);
-    }
-  }
-
-  /// void Function([List<Function> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(List<T> x1) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(List<T> x1) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is void Function(List<T> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(List<T> x1) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(List<T> x1) Function<B extends core.int>() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(Function x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(Function x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(Function x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<Function> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is Function<A>(List<Function> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(core.List<core.int> x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U2().runTests();
-  new U2<int>(tIsInt: true).runTests();
-  new U2<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type30_test.dart b/tests/language/function_type/function_type30_test.dart
deleted file mode 100644
index 850160d..0000000
--- a/tests/language/function_type/function_type30_test.dart
+++ /dev/null
@@ -1,988 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function({List<Function> x});
-typedef F1<T> = List<Function> Function(int x, [Function x2]);
-typedef F2<T> = List<T> Function(int x1, [int x2]);
-typedef F3<T> = Function(int x1, [List<T> x2]);
-typedef F4<T> = List<T> Function<A>(A x);
-typedef F5<T> = int Function([Function x1]) Function<B extends core.int>();
-typedef F6<T> = int Function({core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(int y, {int x})
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x1) Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x, [List<Function> x1])
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function(int y, {List<T> x})
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function([List<Function> x])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(List<T> x1)
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x2, [Function x3])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F16<T> = Function(Function x) Function<B extends core.int>();
-typedef F17<T> = Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F18<T> = void Function([int x1]) Function<B extends core.int>();
-typedef F19<T> = void Function({List<Function> x})
-    Function<B extends core.int>();
-typedef F20<T> = void Function() Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>(int x)
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>(Function x) Function<B extends core.int>();
-typedef F23<T> = Function(B x) Function<B extends core.int>();
-
-int f0({List<Function> x}) => null;
-List<Function> f1(int x, [Function x0]) => null;
-List<int> f2(int x0, [int x1]) => null;
-f3(int x0, [List<int> x1]) => null;
-List<int> f4<A>(A x) => null;
-int Function([Function x0]) f5<B extends core.int>() => null;
-int Function({core.List<core.int> x}) f6<B extends core.int>() => null;
-Function Function(int y, {int x}) f7<B extends core.int>() => null;
-Function Function(int x0, [core.List<core.int> x]) f8<B extends core.int>() =>
-    null;
-List<Function> Function(int x0) f9<B extends core.int>() => null;
-List<Function> Function(int x, [List<Function> x0]) f10<B extends core.int>() =>
-    null;
-List<Function> Function(int y, {List<int> x}) f11<B extends core.int>() => null;
-core.List<core.int> Function([List<Function> x]) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function(List<int> x0) f13<B extends core.int>() => null;
-List<int> Function(int x0, [Function x1]) f14<B extends core.int>() => null;
-List<int> Function(int x0, {core.List<core.int> x}) f15<B extends core.int>() =>
-    null;
-Function(Function x) f16<B extends core.int>() => null;
-Function(int y, [core.List<core.int> x]) f17<B extends core.int>() => null;
-void Function([int x0]) f18<B extends core.int>() => null;
-void Function({List<Function> x}) f19<B extends core.int>() => null;
-void Function() f20<B extends core.int>() => null;
-core.List<core.int> Function<A>(int x) f21<B extends core.int>() => null;
-A Function<A>(Function x) f22<B extends core.int>() => null;
-Function(B x) f23<B extends core.int>() => null;
-
-class U30<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function({List<Function> x}) x0;
-  List<Function> Function(int x, [Function x2]) x1;
-  List<T> Function(int x1, [int x2]) x2;
-  Function(int x1, [List<T> x2]) x3;
-  List<T> Function<A>(A x) x4;
-  int Function([Function x1]) Function<B extends core.int>() x5;
-  int Function({core.List<core.int> x}) Function<B extends core.int>() x6;
-  Function Function(int y, {int x}) Function<B extends core.int>() x7;
-  Function Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>() x8;
-  List<Function> Function(int x1) Function<B extends core.int>() x9;
-  List<Function> Function(int x, [List<Function> x1])
-      Function<B extends core.int>() x10;
-  List<Function> Function(int y, {List<T> x}) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function([List<Function> x])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function(List<T> x1) Function<B extends core.int>() x13;
-  List<T> Function(int x2, [Function x3]) Function<B extends core.int>() x14;
-  List<T> Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>() x15;
-  Function(Function x) Function<B extends core.int>() x16;
-  Function(int y, [core.List<core.int> x]) Function<B extends core.int>() x17;
-  void Function([int x1]) Function<B extends core.int>() x18;
-  void Function({List<Function> x}) Function<B extends core.int>() x19;
-  void Function() Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>(int x) Function<B extends core.int>() x21;
-  A Function<A>(Function x) Function<B extends core.int>() x22;
-  Function(B x) Function<B extends core.int>() x23;
-
-  U30({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0({List<Function> x}) => null;
-  List<Function> m1(int x, [Function x0]) => null;
-  List<T> m2(int x0, [int x1]) => null;
-  m3(int x0, [List<T> x1]) => null;
-  List<T> m4<A>(A x) => null;
-  int Function([Function x0]) m5<B extends core.int>() => null;
-  int Function({core.List<core.int> x}) m6<B extends core.int>() => null;
-  Function Function(int y, {int x}) m7<B extends core.int>() => null;
-  Function Function(int x0, [core.List<core.int> x]) m8<B extends core.int>() =>
-      null;
-  List<Function> Function(int x0) m9<B extends core.int>() => null;
-  List<Function> Function(int x, [List<Function> x0])
-      m10<B extends core.int>() => null;
-  List<Function> Function(int y, {List<T> x}) m11<B extends core.int>() => null;
-  core.List<core.int> Function([List<Function> x]) m12<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(List<T> x0) m13<B extends core.int>() => null;
-  List<T> Function(int x0, [Function x1]) m14<B extends core.int>() => null;
-  List<T> Function(int x0, {core.List<core.int> x}) m15<B extends core.int>() =>
-      null;
-  Function(Function x) m16<B extends core.int>() => null;
-  Function(int y, [core.List<core.int> x]) m17<B extends core.int>() => null;
-  void Function([int x0]) m18<B extends core.int>() => null;
-  void Function({List<Function> x}) m19<B extends core.int>() => null;
-  void Function() m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>(int x) m21<B extends core.int>() => null;
-  A Function<A>(Function x) m22<B extends core.int>() => null;
-  Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function({List<Function> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function({List<Function> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function({List<Function> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x, [Function x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [Function x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x, [Function x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x1, [int x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [int x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x1, [int x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x1, [int x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x1, [int x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x1, [List<T> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<T> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x1, [List<T> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(int x1, [List<T> x2]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(int x1, [List<T> x2]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>(A x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>(A x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function([Function x1]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x1]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function([Function x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({core.List<core.int> x}) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({core.List<core.int> x}) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function({core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, {int x}) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {int x}) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function(int y, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [List<Function> x1]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<Function> x1])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x, [List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, {List<T> x}) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<T> x}) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int y, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, {List<T> x})
-            Function<B extends core.int>() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, {List<T> x}) Function<B extends core.int>()
-          l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([List<Function> x]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x1) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x1) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(List<T> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x1) Function<B extends core.int>()
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x1) Function<B extends core.int>()
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x2, [Function x3]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [Function x3]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x2, [Function x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x2, [Function x3]) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x2, [Function x3]) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, {core.List<core.int> x})
-            Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, {core.List<core.int> x})
-          Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [core.List<core.int> x]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x1]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x1]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect
-        .isTrue(m18 is void Function([int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({List<Function> x}) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({List<Function> x}) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function({List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function() Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function() Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(int x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(int x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(int x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(Function x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(Function x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is A Function<A>(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U30().runTests();
-  new U30<int>(tIsInt: true).runTests();
-  new U30<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type31_test.dart b/tests/language/function_type/function_type31_test.dart
deleted file mode 100644
index 1357f8e..0000000
--- a/tests/language/function_type/function_type31_test.dart
+++ /dev/null
@@ -1,1014 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, {List<Function> x});
-typedef F1<T> = List<Function> Function({Function x});
-typedef F2<T> = List<T> Function(int x, [int x2]);
-typedef F3<T> = Function(int x, [List<T> x2]);
-typedef F4<T> = List<T> Function<A>(List<A> x);
-typedef F5<T> = int Function([Function x1]) Function<B extends core.int>(int x);
-typedef F6<T> = int Function({core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int y, {int x}) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int x1) Function<B extends core.int>(
-    int x);
-typedef F10<T> = List<Function> Function(int x, [List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function(int y, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function([List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(List<T> x1)
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int x2, [Function x3])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(Function x) Function<B extends core.int>(int x);
-typedef F17<T> = Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function([int x1]) Function<B extends core.int>(int x);
-typedef F19<T> = void Function({List<Function> x}) Function<B extends core.int>(
-    int x);
-typedef F20<T> = void Function() Function<B extends core.int>(int x);
-typedef F21<T> = core.List<core.int> Function<A>(int x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = A Function<A>(Function x) Function<B extends core.int>(int x);
-typedef F23<T> = Function(B x) Function<B extends core.int>(int x);
-
-int f0(int x0, {List<Function> x}) => null;
-List<Function> f1({Function x}) => null;
-List<int> f2(int x, [int x0]) => null;
-f3(int x, [List<int> x0]) => null;
-List<int> f4<A>(List<A> x) => null;
-int Function([Function x0]) f5<B extends core.int>(int x) => null;
-int Function({core.List<core.int> x}) f6<B extends core.int>(int x) => null;
-Function Function(int y, {int x}) f7<B extends core.int>(int x) => null;
-Function Function(int x0, [core.List<core.int> x]) f8<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function(int x0) f9<B extends core.int>(int x) => null;
-List<Function> Function(int x, [List<Function> x0]) f10<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function(int y, {List<int> x}) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function([List<Function> x]) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(List<int> x0) f13<B extends core.int>(int x) =>
-    null;
-List<int> Function(int x0, [Function x1]) f14<B extends core.int>(int x) =>
-    null;
-List<int> Function(int x0, {core.List<core.int> x}) f15<B extends core.int>(
-        int x) =>
-    null;
-Function(Function x) f16<B extends core.int>(int x) => null;
-Function(int y, [core.List<core.int> x]) f17<B extends core.int>(int x) => null;
-void Function([int x0]) f18<B extends core.int>(int x) => null;
-void Function({List<Function> x}) f19<B extends core.int>(int x) => null;
-void Function() f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>(int x) f21<B extends core.int>(int x) => null;
-A Function<A>(Function x) f22<B extends core.int>(int x) => null;
-Function(B x) f23<B extends core.int>(int x) => null;
-
-class U31<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, {List<Function> x}) x0;
-  List<Function> Function({Function x}) x1;
-  List<T> Function(int x, [int x2]) x2;
-  Function(int x, [List<T> x2]) x3;
-  List<T> Function<A>(List<A> x) x4;
-  int Function([Function x1]) Function<B extends core.int>(int x) x5;
-  int Function({core.List<core.int> x}) Function<B extends core.int>(int x) x6;
-  Function Function(int y, {int x}) Function<B extends core.int>(int x) x7;
-  Function Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>(int x) x8;
-  List<Function> Function(int x1) Function<B extends core.int>(int x) x9;
-  List<Function> Function(int x, [List<Function> x1])
-      Function<B extends core.int>(int x) x10;
-  List<Function> Function(int y, {List<T> x}) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function([List<Function> x]) Function<B extends core.int>(
-      int x) x12;
-  core.List<core.int> Function(List<T> x1) Function<B extends core.int>(int x)
-      x13;
-  List<T> Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-      x14;
-  List<T> Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>(int x) x15;
-  Function(Function x) Function<B extends core.int>(int x) x16;
-  Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-      x17;
-  void Function([int x1]) Function<B extends core.int>(int x) x18;
-  void Function({List<Function> x}) Function<B extends core.int>(int x) x19;
-  void Function() Function<B extends core.int>(int x) x20;
-  core.List<core.int> Function<A>(int x) Function<B extends core.int>(int x)
-      x21;
-  A Function<A>(Function x) Function<B extends core.int>(int x) x22;
-  Function(B x) Function<B extends core.int>(int x) x23;
-
-  U31({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, {List<Function> x}) => null;
-  List<Function> m1({Function x}) => null;
-  List<T> m2(int x, [int x0]) => null;
-  m3(int x, [List<T> x0]) => null;
-  List<T> m4<A>(List<A> x) => null;
-  int Function([Function x0]) m5<B extends core.int>(int x) => null;
-  int Function({core.List<core.int> x}) m6<B extends core.int>(int x) => null;
-  Function Function(int y, {int x}) m7<B extends core.int>(int x) => null;
-  Function Function(int x0, [core.List<core.int> x]) m8<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function(int x0) m9<B extends core.int>(int x) => null;
-  List<Function> Function(int x, [List<Function> x0]) m10<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function(int y, {List<T> x}) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function([List<Function> x]) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(List<T> x0) m13<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int x0, [Function x1]) m14<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int x0, {core.List<core.int> x}) m15<B extends core.int>(
-          int x) =>
-      null;
-  Function(Function x) m16<B extends core.int>(int x) => null;
-  Function(int y, [core.List<core.int> x]) m17<B extends core.int>(int x) =>
-      null;
-  void Function([int x0]) m18<B extends core.int>(int x) => null;
-  void Function({List<Function> x}) m19<B extends core.int>(int x) => null;
-  void Function() m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>(int x) m21<B extends core.int>(int x) => null;
-  A Function<A>(Function x) m22<B extends core.int>(int x) => null;
-  Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, {List<Function> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, {List<Function> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, {List<Function> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function({Function x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function({Function x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function({Function x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x, [int x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [int x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x, [int x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x, [int x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x, [int x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x, [List<T> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x, [List<T> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x, [List<T> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(int x, [List<T> x2]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(int x, [List<T> x2]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// List<T> Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<T> Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<T> Function<A>(List<A> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<T> Function<A>(List<A> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function([Function x1]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([Function x1]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function([Function x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function({core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, {int x}) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {int x}) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1) Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<T> x}) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int y, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, {List<T> x})
-            Function<B extends core.int>(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, {List<T> x}) Function<B extends core.int>(
-          int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([List<Function> x]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(List<T> x1) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<T> x1) Function<B extends core.int>(int x)
-        l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(List<T> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(List<T> x1) Function<B extends core.int>(
-            int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(List<T> x1) Function<B extends core.int>(
-          int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x2, [Function x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x2, [Function x3]) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x2, [Function x3]) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, {core.List<core.int> x})
-            Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, {core.List<core.int> x})
-          Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(Function x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([int x1]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([int x1]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function([int x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({List<Function> x}) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({List<Function> x}) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function({List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function() Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function() Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(int x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(int x) Function<B extends core.int>(int x)
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(int x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(Function x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is A Function<A>(Function x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is Function(B x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U31().runTests();
-  new U31<int>(tIsInt: true).runTests();
-  new U31<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type32_test.dart b/tests/language/function_type/function_type32_test.dart
deleted file mode 100644
index 83264d9..0000000
--- a/tests/language/function_type/function_type32_test.dart
+++ /dev/null
@@ -1,885 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, {List<Function> x});
-typedef F1<T> = List<Function> Function(int x0, {Function x});
-typedef F2<T> = List<T> Function({int x});
-typedef F3<T> = Function({List<T> x});
-typedef F4<T> = Function<A>(int x);
-typedef F5<T> = int Function(int x1, [Function x2]) Function();
-typedef F6<T> = int Function(int x0, {core.List<core.int> x}) Function();
-typedef F7<T> = Function Function(Function x) Function();
-typedef F8<T> = Function Function(int y, [core.List<core.int> x]) Function();
-typedef F9<T> = List<Function> Function([int x1]) Function();
-typedef F10<T> = List<Function> Function({List<Function> x}) Function();
-typedef F11<T> = List<Function> Function() Function();
-typedef F12<T> = core.List<core.int> Function(int x0, [List<Function> x])
-    Function();
-typedef F13<T> = core.List<core.int> Function([List<T> x1]) Function();
-typedef F14<T> = List<T> Function(int x, [Function x2]) Function();
-typedef F15<T> = List<T> Function(int y, {core.List<core.int> x}) Function();
-typedef F16<T> = Function([Function x]) Function();
-typedef F17<T> = Function(core.List<core.int> x0) Function();
-typedef F18<T> = void Function(int x1, [int x2]) Function();
-typedef F19<T> = void Function(int x0, {List<Function> x}) Function();
-typedef F20<T> = int Function<A>(int x) Function();
-typedef F21<T> = core.List<core.int> Function<A>(Function x) Function();
-typedef F22<T> = A Function<A>(List<Function> x) Function();
-typedef F23<T> = B Function(B x) Function<B extends core.int>();
-
-int f0(int y, {List<Function> x}) => null;
-List<Function> f1(int x0, {Function x}) => null;
-List<int> f2({int x}) => null;
-f3({List<int> x}) => null;
-f4<A>(int x) => null;
-int Function(int x0, [Function x1]) f5() => null;
-int Function(int x0, {core.List<core.int> x}) f6() => null;
-Function Function(Function x) f7() => null;
-Function Function(int y, [core.List<core.int> x]) f8() => null;
-List<Function> Function([int x0]) f9() => null;
-List<Function> Function({List<Function> x}) f10() => null;
-List<Function> Function() f11() => null;
-core.List<core.int> Function(int x0, [List<Function> x]) f12() => null;
-core.List<core.int> Function([List<int> x0]) f13() => null;
-List<int> Function(int x, [Function x0]) f14() => null;
-List<int> Function(int y, {core.List<core.int> x}) f15() => null;
-Function([Function x]) f16() => null;
-Function(core.List<core.int> x0) f17() => null;
-void Function(int x0, [int x1]) f18() => null;
-void Function(int x0, {List<Function> x}) f19() => null;
-int Function<A>(int x) f20() => null;
-core.List<core.int> Function<A>(Function x) f21() => null;
-A Function<A>(List<Function> x) f22() => null;
-B Function(B x) f23<B extends core.int>() => null;
-
-class U32<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, {List<Function> x}) x0;
-  List<Function> Function(int x0, {Function x}) x1;
-  List<T> Function({int x}) x2;
-  Function({List<T> x}) x3;
-  Function<A>(int x) x4;
-  int Function(int x1, [Function x2]) Function() x5;
-  int Function(int x0, {core.List<core.int> x}) Function() x6;
-  Function Function(Function x) Function() x7;
-  Function Function(int y, [core.List<core.int> x]) Function() x8;
-  List<Function> Function([int x1]) Function() x9;
-  List<Function> Function({List<Function> x}) Function() x10;
-  List<Function> Function() Function() x11;
-  core.List<core.int> Function(int x0, [List<Function> x]) Function() x12;
-  core.List<core.int> Function([List<T> x1]) Function() x13;
-  List<T> Function(int x, [Function x2]) Function() x14;
-  List<T> Function(int y, {core.List<core.int> x}) Function() x15;
-  Function([Function x]) Function() x16;
-  Function(core.List<core.int> x0) Function() x17;
-  void Function(int x1, [int x2]) Function() x18;
-  void Function(int x0, {List<Function> x}) Function() x19;
-  int Function<A>(int x) Function() x20;
-  core.List<core.int> Function<A>(Function x) Function() x21;
-  A Function<A>(List<Function> x) Function() x22;
-  B Function(B x) Function<B extends core.int>() x23;
-
-  U32({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, {List<Function> x}) => null;
-  List<Function> m1(int x0, {Function x}) => null;
-  List<T> m2({int x}) => null;
-  m3({List<T> x}) => null;
-  m4<A>(int x) => null;
-  int Function(int x0, [Function x1]) m5() => null;
-  int Function(int x0, {core.List<core.int> x}) m6() => null;
-  Function Function(Function x) m7() => null;
-  Function Function(int y, [core.List<core.int> x]) m8() => null;
-  List<Function> Function([int x0]) m9() => null;
-  List<Function> Function({List<Function> x}) m10() => null;
-  List<Function> Function() m11() => null;
-  core.List<core.int> Function(int x0, [List<Function> x]) m12() => null;
-  core.List<core.int> Function([List<T> x0]) m13() => null;
-  List<T> Function(int x, [Function x0]) m14() => null;
-  List<T> Function(int y, {core.List<core.int> x}) m15() => null;
-  Function([Function x]) m16() => null;
-  Function(core.List<core.int> x0) m17() => null;
-  void Function(int x0, [int x1]) m18() => null;
-  void Function(int x0, {List<Function> x}) m19() => null;
-  int Function<A>(int x) m20() => null;
-  core.List<core.int> Function<A>(Function x) m21() => null;
-  A Function<A>(List<Function> x) m22() => null;
-  B Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, {List<Function> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<Function> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, {List<Function> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, {Function x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {Function x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, {Function x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function({int x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function({int x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function({int x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function({int x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function({int x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function({List<T> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function({List<T> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function({List<T> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function({List<T> x}) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function({List<T> x}) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [Function x2]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [Function x2]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, [Function x2]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x0, {core.List<core.int> x}) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x0, {core.List<core.int> x}) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function(int x0, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(Function x) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(Function x) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [core.List<core.int> x]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [core.List<core.int> x]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int y, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x1]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x1]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([int x1]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({List<Function> x}) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<Function> x}) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect
-        .isTrue(m10 is List<Function> Function({List<Function> x}) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function() Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function() Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function() Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x0, [List<Function> x]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [List<Function> x]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12
-        is core.List<core.int> Function(int x0, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x1]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x1]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function([List<T> x1]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x1]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x1]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [Function x2]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [Function x2]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x, [Function x2]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [Function x2]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [Function x2]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {core.List<core.int> x}) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {core.List<core.int> x}) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(int y, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {core.List<core.int> x}) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {core.List<core.int> x}) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([Function x]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x0) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x0) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(core.List<core.int> x0) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1, [int x2]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [int x2]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, [int x2]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x0, {List<Function> x}) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x0, {List<Function> x}) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x0, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(int x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(int x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(int x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(Function x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(Function x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect
-        .isTrue(m21 is core.List<core.int> Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<Function> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<Function> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U32().runTests();
-  new U32<int>(tIsInt: true).runTests();
-  new U32<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type33_test.dart b/tests/language/function_type/function_type33_test.dart
deleted file mode 100644
index d286186..0000000
--- a/tests/language/function_type/function_type33_test.dart
+++ /dev/null
@@ -1,893 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(core.List<core.int> x);
-typedef F1<T> = List<Function> Function(int y, {Function x});
-typedef F2<T> = List<T> Function(int x0, {int x});
-typedef F3<T> = Function(int x0, {List<T> x});
-typedef F4<T> = Function<A>(Function x);
-typedef F5<T> = int Function(int x2, [Function x3]) Function(int x);
-typedef F6<T> = int Function(int x1, {core.List<core.int> x}) Function(int x);
-typedef F7<T> = Function Function(Function x) Function(int x);
-typedef F8<T> = Function Function(int y, [core.List<core.int> x]) Function(
-    int x);
-typedef F9<T> = List<Function> Function([int x1]) Function(int x);
-typedef F10<T> = List<Function> Function({List<Function> x}) Function(int x);
-typedef F11<T> = List<Function> Function() Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, [List<Function> x])
-    Function(int x);
-typedef F13<T> = core.List<core.int> Function([List<T> x1]) Function(int x);
-typedef F14<T> = List<T> Function(int x, [Function x1]) Function(int x);
-typedef F15<T> = List<T> Function(int y, {core.List<core.int> x}) Function(
-    int x);
-typedef F16<T> = Function([Function x]) Function(int x);
-typedef F17<T> = Function(core.List<core.int> x1) Function(int x);
-typedef F18<T> = void Function(int x2, [int x3]) Function(int x);
-typedef F19<T> = void Function(int x1, {List<Function> x}) Function(int x);
-typedef F20<T> = int Function<A>(int x) Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>(Function x) Function(int x);
-typedef F22<T> = A Function<A>(List<Function> x) Function(int x);
-typedef F23<T> = B Function(B x) Function<B extends core.int>(int x);
-
-int f0(core.List<core.int> x) => null;
-List<Function> f1(int y, {Function x}) => null;
-List<int> f2(int x0, {int x}) => null;
-f3(int x0, {List<int> x}) => null;
-f4<A>(Function x) => null;
-int Function(int x0, [Function x1]) f5(int x) => null;
-int Function(int x0, {core.List<core.int> x}) f6(int x) => null;
-Function Function(Function x) f7(int x) => null;
-Function Function(int y, [core.List<core.int> x]) f8(int x) => null;
-List<Function> Function([int x0]) f9(int x) => null;
-List<Function> Function({List<Function> x}) f10(int x) => null;
-List<Function> Function() f11(int x) => null;
-core.List<core.int> Function(int x0, [List<Function> x]) f12(int x) => null;
-core.List<core.int> Function([List<int> x0]) f13(int x) => null;
-List<int> Function(int x, [Function x0]) f14(int x) => null;
-List<int> Function(int y, {core.List<core.int> x}) f15(int x) => null;
-Function([Function x]) f16(int x) => null;
-Function(core.List<core.int> x0) f17(int x) => null;
-void Function(int x0, [int x1]) f18(int x) => null;
-void Function(int x0, {List<Function> x}) f19(int x) => null;
-int Function<A>(int x) f20(int x) => null;
-core.List<core.int> Function<A>(Function x) f21(int x) => null;
-A Function<A>(List<Function> x) f22(int x) => null;
-B Function(B x) f23<B extends core.int>(int x) => null;
-
-class U33<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(core.List<core.int> x) x0;
-  List<Function> Function(int y, {Function x}) x1;
-  List<T> Function(int x0, {int x}) x2;
-  Function(int x0, {List<T> x}) x3;
-  Function<A>(Function x) x4;
-  int Function(int x2, [Function x3]) Function(int x) x5;
-  int Function(int x1, {core.List<core.int> x}) Function(int x) x6;
-  Function Function(Function x) Function(int x) x7;
-  Function Function(int y, [core.List<core.int> x]) Function(int x) x8;
-  List<Function> Function([int x1]) Function(int x) x9;
-  List<Function> Function({List<Function> x}) Function(int x) x10;
-  List<Function> Function() Function(int x) x11;
-  core.List<core.int> Function(int x1, [List<Function> x]) Function(int x) x12;
-  core.List<core.int> Function([List<T> x1]) Function(int x) x13;
-  List<T> Function(int x, [Function x1]) Function(int x) x14;
-  List<T> Function(int y, {core.List<core.int> x}) Function(int x) x15;
-  Function([Function x]) Function(int x) x16;
-  Function(core.List<core.int> x1) Function(int x) x17;
-  void Function(int x2, [int x3]) Function(int x) x18;
-  void Function(int x1, {List<Function> x}) Function(int x) x19;
-  int Function<A>(int x) Function(int x) x20;
-  core.List<core.int> Function<A>(Function x) Function(int x) x21;
-  A Function<A>(List<Function> x) Function(int x) x22;
-  B Function(B x) Function<B extends core.int>(int x) x23;
-
-  U33({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(core.List<core.int> x) => null;
-  List<Function> m1(int y, {Function x}) => null;
-  List<T> m2(int x0, {int x}) => null;
-  m3(int x0, {List<T> x}) => null;
-  m4<A>(Function x) => null;
-  int Function(int x0, [Function x1]) m5(int x) => null;
-  int Function(int x0, {core.List<core.int> x}) m6(int x) => null;
-  Function Function(Function x) m7(int x) => null;
-  Function Function(int y, [core.List<core.int> x]) m8(int x) => null;
-  List<Function> Function([int x0]) m9(int x) => null;
-  List<Function> Function({List<Function> x}) m10(int x) => null;
-  List<Function> Function() m11(int x) => null;
-  core.List<core.int> Function(int x0, [List<Function> x]) m12(int x) => null;
-  core.List<core.int> Function([List<T> x0]) m13(int x) => null;
-  List<T> Function(int x, [Function x0]) m14(int x) => null;
-  List<T> Function(int y, {core.List<core.int> x}) m15(int x) => null;
-  Function([Function x]) m16(int x) => null;
-  Function(core.List<core.int> x0) m17(int x) => null;
-  void Function(int x0, [int x1]) m18(int x) => null;
-  void Function(int x0, {List<Function> x}) m19(int x) => null;
-  int Function<A>(int x) m20(int x) => null;
-  core.List<core.int> Function<A>(Function x) m21(int x) => null;
-  A Function<A>(List<Function> x) m22(int x) => null;
-  B Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(core.List<core.int> x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(core.List<core.int> x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, {Function x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {Function x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, {Function x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, {int x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {int x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, {int x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, {int x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, {int x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int x0, {List<T> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x0, {List<T> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x0, {List<T> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(int x0, {List<T> x}) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(int x0, {List<T> x}) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x2, [Function x3]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x2, [Function x3]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x2, [Function x3]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, {core.List<core.int> x}) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, {core.List<core.int> x}) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x1, {core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(Function x) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(Function x) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [core.List<core.int> x]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [core.List<core.int> x]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x1]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x1]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([int x1]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({List<Function> x}) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<Function> x}) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function({List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function() Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function() Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function() Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<Function> x]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<Function> x]) Function(int x)
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [List<Function> x])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x1]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x1]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function([List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x1]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x1]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [Function x1]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [Function x1]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int x, [Function x1]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [Function x1]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [Function x1]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {core.List<core.int> x}) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {core.List<core.int> x}) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {core.List<core.int> x}) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {core.List<core.int> x}) Function(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([Function x]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x1) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x1) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(core.List<core.int> x1) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x2, [int x3]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x2, [int x3]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x2, [int x3]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, {List<Function> x}) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, {List<Function> x}) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x1, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(int x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(int x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(Function x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(Function x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is core.List<core.int> Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<Function> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<Function> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(B x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U33().runTests();
-  new U33<int>(tIsInt: true).runTests();
-  new U33<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type34_test.dart b/tests/language/function_type/function_type34_test.dart
deleted file mode 100644
index ed367a3..0000000
--- a/tests/language/function_type/function_type34_test.dart
+++ /dev/null
@@ -1,934 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([core.List<core.int> x]);
-typedef F1<T> = List<Function> Function(List<Function> x);
-typedef F2<T> = List<T> Function(int y, {int x});
-typedef F3<T> = Function(int y, {List<T> x});
-typedef F4<T> = Function<A>(List<Function> x);
-typedef F5<T> = int Function(int x2, [Function x3])
-    Function<B extends core.int>();
-typedef F6<T> = int Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(Function x) Function<B extends core.int>();
-typedef F8<T> = Function Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function([int x1])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function({List<Function> x})
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function() Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x1, [List<Function> x])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function([List<T> x1])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x, [Function x1])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F16<T> = Function([Function x]) Function<B extends core.int>();
-typedef F17<T> = Function(core.List<core.int> x1)
-    Function<B extends core.int>();
-typedef F18<T> = void Function(int x2, [int x3]) Function<B extends core.int>();
-typedef F19<T> = void Function(int x1, {List<Function> x})
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>(int x) Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>(Function x)
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>(List<Function> x) Function<B extends core.int>();
-typedef F23<T> = List<B> Function(B x) Function<B extends core.int>();
-
-int f0([core.List<core.int> x]) => null;
-List<Function> f1(List<Function> x) => null;
-List<int> f2(int y, {int x}) => null;
-f3(int y, {List<int> x}) => null;
-f4<A>(List<Function> x) => null;
-int Function(int x0, [Function x1]) f5<B extends core.int>() => null;
-int Function(int x0, {core.List<core.int> x}) f6<B extends core.int>() => null;
-Function Function(Function x) f7<B extends core.int>() => null;
-Function Function(int y, [core.List<core.int> x]) f8<B extends core.int>() =>
-    null;
-List<Function> Function([int x0]) f9<B extends core.int>() => null;
-List<Function> Function({List<Function> x}) f10<B extends core.int>() => null;
-List<Function> Function() f11<B extends core.int>() => null;
-core.List<core.int> Function(int x0, [List<Function> x])
-    f12<B extends core.int>() => null;
-core.List<core.int> Function([List<int> x0]) f13<B extends core.int>() => null;
-List<int> Function(int x, [Function x0]) f14<B extends core.int>() => null;
-List<int> Function(int y, {core.List<core.int> x}) f15<B extends core.int>() =>
-    null;
-Function([Function x]) f16<B extends core.int>() => null;
-Function(core.List<core.int> x0) f17<B extends core.int>() => null;
-void Function(int x0, [int x1]) f18<B extends core.int>() => null;
-void Function(int x0, {List<Function> x}) f19<B extends core.int>() => null;
-int Function<A>(int x) f20<B extends core.int>() => null;
-core.List<core.int> Function<A>(Function x) f21<B extends core.int>() => null;
-A Function<A>(List<Function> x) f22<B extends core.int>() => null;
-List<B> Function(B x) f23<B extends core.int>() => null;
-
-class U34<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([core.List<core.int> x]) x0;
-  List<Function> Function(List<Function> x) x1;
-  List<T> Function(int y, {int x}) x2;
-  Function(int y, {List<T> x}) x3;
-  Function<A>(List<Function> x) x4;
-  int Function(int x2, [Function x3]) Function<B extends core.int>() x5;
-  int Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-      x6;
-  Function Function(Function x) Function<B extends core.int>() x7;
-  Function Function(int y, [core.List<core.int> x])
-      Function<B extends core.int>() x8;
-  List<Function> Function([int x1]) Function<B extends core.int>() x9;
-  List<Function> Function({List<Function> x}) Function<B extends core.int>()
-      x10;
-  List<Function> Function() Function<B extends core.int>() x11;
-  core.List<core.int> Function(int x1, [List<Function> x])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function([List<T> x1]) Function<B extends core.int>() x13;
-  List<T> Function(int x, [Function x1]) Function<B extends core.int>() x14;
-  List<T> Function(int y, {core.List<core.int> x})
-      Function<B extends core.int>() x15;
-  Function([Function x]) Function<B extends core.int>() x16;
-  Function(core.List<core.int> x1) Function<B extends core.int>() x17;
-  void Function(int x2, [int x3]) Function<B extends core.int>() x18;
-  void Function(int x1, {List<Function> x}) Function<B extends core.int>() x19;
-  int Function<A>(int x) Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>(Function x) Function<B extends core.int>()
-      x21;
-  A Function<A>(List<Function> x) Function<B extends core.int>() x22;
-  List<B> Function(B x) Function<B extends core.int>() x23;
-
-  U34({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([core.List<core.int> x]) => null;
-  List<Function> m1(List<Function> x) => null;
-  List<T> m2(int y, {int x}) => null;
-  m3(int y, {List<T> x}) => null;
-  m4<A>(List<Function> x) => null;
-  int Function(int x0, [Function x1]) m5<B extends core.int>() => null;
-  int Function(int x0, {core.List<core.int> x}) m6<B extends core.int>() =>
-      null;
-  Function Function(Function x) m7<B extends core.int>() => null;
-  Function Function(int y, [core.List<core.int> x]) m8<B extends core.int>() =>
-      null;
-  List<Function> Function([int x0]) m9<B extends core.int>() => null;
-  List<Function> Function({List<Function> x}) m10<B extends core.int>() => null;
-  List<Function> Function() m11<B extends core.int>() => null;
-  core.List<core.int> Function(int x0, [List<Function> x])
-      m12<B extends core.int>() => null;
-  core.List<core.int> Function([List<T> x0]) m13<B extends core.int>() => null;
-  List<T> Function(int x, [Function x0]) m14<B extends core.int>() => null;
-  List<T> Function(int y, {core.List<core.int> x}) m15<B extends core.int>() =>
-      null;
-  Function([Function x]) m16<B extends core.int>() => null;
-  Function(core.List<core.int> x0) m17<B extends core.int>() => null;
-  void Function(int x0, [int x1]) m18<B extends core.int>() => null;
-  void Function(int x0, {List<Function> x}) m19<B extends core.int>() => null;
-  int Function<A>(int x) m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>(Function x) m21<B extends core.int>() => null;
-  A Function<A>(List<Function> x) m22<B extends core.int>() => null;
-  List<B> Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([core.List<core.int> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([core.List<core.int> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(List<Function> x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(List<Function> x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, {int x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {int x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, {int x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, {int x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, {int x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function(int y, {List<T> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int y, {List<T> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int y, {List<T> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        Function(int y, {List<T> x}) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      Function(int y, {List<T> x}) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x2, [Function x3]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x2, [Function x3]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x2, [Function x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(Function x) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x1]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x1]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function([int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({List<Function> x}) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<Function> x}) Function<B extends core.int>()
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function({List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function() Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function() Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<Function> x]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<Function> x])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x1]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x1]) Function<B extends core.int>()
-        l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function([List<T> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x1])
-            Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x1]) Function<B extends core.int>()
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [Function x1]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [Function x1]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x, [Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [Function x1]) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [Function x1]) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {core.List<core.int> x})
-            Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {core.List<core.int> x})
-          Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x1) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x1) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(core.List<core.int> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x2, [int x3]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x2, [int x3]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int x2, [int x3]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, {List<Function> x}) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, {List<Function> x}) Function<B extends core.int>()
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(int x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(int x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(Function x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(Function x) Function<B extends core.int>()
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(Function x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<Function> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is A Function<A>(List<Function> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// List<B> Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    List<B> Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is List<B> Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U34().runTests();
-  new U34<int>(tIsInt: true).runTests();
-  new U34<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type35_test.dart b/tests/language/function_type/function_type35_test.dart
deleted file mode 100644
index 3afa7cc..0000000
--- a/tests/language/function_type/function_type35_test.dart
+++ /dev/null
@@ -1,929 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, [core.List<core.int> x]);
-typedef F1<T> = List<Function> Function([List<Function> x]);
-typedef F2<T> = List<T> Function(Function x);
-typedef F3<T> = Function();
-typedef F4<T> = Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function(int x2, [Function x3])
-    Function<B extends core.int>(int x);
-typedef F6<T> = int Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(Function x) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function([int x1]) Function<B extends core.int>(
-    int x);
-typedef F10<T> = List<Function> Function({List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function() Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function([List<T> x1])
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int x, [Function x1])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function([Function x]) Function<B extends core.int>(int x);
-typedef F17<T> = Function(core.List<core.int> x1) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function(int x2, [int x3]) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function(int x1, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>(int x) Function<B extends core.int>(int x);
-typedef F21<T> = core.List<core.int> Function<A>(Function x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = A Function<A>(List<Function> x) Function<B extends core.int>(
-    int x);
-typedef F23<T> = List<B> Function(B x) Function<B extends core.int>(int x);
-
-int f0(int x0, [core.List<core.int> x]) => null;
-List<Function> f1([List<Function> x]) => null;
-List<int> f2(Function x) => null;
-f3() => null;
-f4<A>(core.List<core.int> x) => null;
-int Function(int x0, [Function x1]) f5<B extends core.int>(int x) => null;
-int Function(int x0, {core.List<core.int> x}) f6<B extends core.int>(int x) =>
-    null;
-Function Function(Function x) f7<B extends core.int>(int x) => null;
-Function Function(int y, [core.List<core.int> x]) f8<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function([int x0]) f9<B extends core.int>(int x) => null;
-List<Function> Function({List<Function> x}) f10<B extends core.int>(int x) =>
-    null;
-List<Function> Function() f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x0, [List<Function> x])
-    f12<B extends core.int>(int x) => null;
-core.List<core.int> Function([List<int> x0]) f13<B extends core.int>(int x) =>
-    null;
-List<int> Function(int x, [Function x0]) f14<B extends core.int>(int x) => null;
-List<int> Function(int y, {core.List<core.int> x}) f15<B extends core.int>(
-        int x) =>
-    null;
-Function([Function x]) f16<B extends core.int>(int x) => null;
-Function(core.List<core.int> x0) f17<B extends core.int>(int x) => null;
-void Function(int x0, [int x1]) f18<B extends core.int>(int x) => null;
-void Function(int x0, {List<Function> x}) f19<B extends core.int>(int x) =>
-    null;
-int Function<A>(int x) f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>(Function x) f21<B extends core.int>(int x) =>
-    null;
-A Function<A>(List<Function> x) f22<B extends core.int>(int x) => null;
-List<B> Function(B x) f23<B extends core.int>(int x) => null;
-
-class U35<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, [core.List<core.int> x]) x0;
-  List<Function> Function([List<Function> x]) x1;
-  List<T> Function(Function x) x2;
-  Function() x3;
-  Function<A>(core.List<core.int> x) x4;
-  int Function(int x2, [Function x3]) Function<B extends core.int>(int x) x5;
-  int Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(
-      int x) x6;
-  Function Function(Function x) Function<B extends core.int>(int x) x7;
-  Function Function(int y, [core.List<core.int> x])
-      Function<B extends core.int>(int x) x8;
-  List<Function> Function([int x1]) Function<B extends core.int>(int x) x9;
-  List<Function> Function({List<Function> x}) Function<B extends core.int>(
-      int x) x10;
-  List<Function> Function() Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(int x1, [List<Function> x])
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function([List<T> x1]) Function<B extends core.int>(int x)
-      x13;
-  List<T> Function(int x, [Function x1]) Function<B extends core.int>(int x)
-      x14;
-  List<T> Function(int y, {core.List<core.int> x}) Function<B extends core.int>(
-      int x) x15;
-  Function([Function x]) Function<B extends core.int>(int x) x16;
-  Function(core.List<core.int> x1) Function<B extends core.int>(int x) x17;
-  void Function(int x2, [int x3]) Function<B extends core.int>(int x) x18;
-  void Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-      x19;
-  int Function<A>(int x) Function<B extends core.int>(int x) x20;
-  core.List<core.int> Function<A>(Function x) Function<B extends core.int>(
-      int x) x21;
-  A Function<A>(List<Function> x) Function<B extends core.int>(int x) x22;
-  List<B> Function(B x) Function<B extends core.int>(int x) x23;
-
-  U35({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [core.List<core.int> x]) => null;
-  List<Function> m1([List<Function> x]) => null;
-  List<T> m2(Function x) => null;
-  m3() => null;
-  m4<A>(core.List<core.int> x) => null;
-  int Function(int x0, [Function x1]) m5<B extends core.int>(int x) => null;
-  int Function(int x0, {core.List<core.int> x}) m6<B extends core.int>(int x) =>
-      null;
-  Function Function(Function x) m7<B extends core.int>(int x) => null;
-  Function Function(int y, [core.List<core.int> x]) m8<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function([int x0]) m9<B extends core.int>(int x) => null;
-  List<Function> Function({List<Function> x}) m10<B extends core.int>(int x) =>
-      null;
-  List<Function> Function() m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x0, [List<Function> x])
-      m12<B extends core.int>(int x) => null;
-  core.List<core.int> Function([List<T> x0]) m13<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int x, [Function x0]) m14<B extends core.int>(int x) => null;
-  List<T> Function(int y, {core.List<core.int> x}) m15<B extends core.int>(
-          int x) =>
-      null;
-  Function([Function x]) m16<B extends core.int>(int x) => null;
-  Function(core.List<core.int> x0) m17<B extends core.int>(int x) => null;
-  void Function(int x0, [int x1]) m18<B extends core.int>(int x) => null;
-  void Function(int x0, {List<Function> x}) m19<B extends core.int>(int x) =>
-      null;
-  int Function<A>(int x) m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>(Function x) m21<B extends core.int>(int x) =>
-      null;
-  A Function<A>(List<Function> x) m22<B extends core.int>(int x) => null;
-  List<B> Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, [core.List<core.int> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, [core.List<core.int> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([List<Function> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([List<Function> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(Function x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(Function x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(Function x) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(Function x) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// Function()
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function() l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function());
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x2, [Function x3]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x2, [Function x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(
-        int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(Function x) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([int x1]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([int x1]) Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({List<Function> x}) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<Function> x}) Function<B extends core.int>(
-        int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function({List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function() Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function() Function<B extends core.int>(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is List<Function> Function() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function([List<T> x1]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<T> x1]) Function<B extends core.int>(
-        int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function([List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function([List<T> x1]) Function<B extends core.int>(
-            int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function([List<T> x1]) Function<B extends core.int>(
-          int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [Function x1]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [Function x1]) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x, [Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [Function x1]) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [Function x1]) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {core.List<core.int> x})
-            Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {core.List<core.int> x})
-          Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function([Function x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(core.List<core.int> x1) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x2, [int x3]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x2, [int x3]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x2, [int x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, {List<Function> x}) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(int x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(int x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(Function x) Function<B extends core.int>(
-        int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<Function> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// List<B> Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    List<B> Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is List<B> Function(B x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U35().runTests();
-  new U35<int>(tIsInt: true).runTests();
-  new U35<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type36_test.dart b/tests/language/function_type/function_type36_test.dart
deleted file mode 100644
index 7e14ecc..0000000
--- a/tests/language/function_type/function_type36_test.dart
+++ /dev/null
@@ -1,884 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, [core.List<core.int> x]);
-typedef F1<T> = List<Function> Function(int x0, [List<Function> x]);
-typedef F2<T> = List<T> Function([Function x]);
-typedef F3<T> = void Function(int x);
-typedef F4<T> = Function<A>(List<T> x);
-typedef F5<T> = int Function(int x, [Function x2]) Function();
-typedef F6<T> = int Function(int y, {core.List<core.int> x}) Function();
-typedef F7<T> = Function Function([Function x]) Function();
-typedef F8<T> = Function Function(core.List<core.int> x0) Function();
-typedef F9<T> = List<Function> Function(int x1, [int x2]) Function();
-typedef F10<T> = List<Function> Function(int x0, {List<Function> x}) Function();
-typedef F11<T> = core.List<core.int> Function(int x) Function();
-typedef F12<T> = core.List<core.int> Function(int y, [List<Function> x])
-    Function();
-typedef F13<T> = core.List<core.int> Function(int x1, [List<T> x2]) Function();
-typedef F14<T> = List<T> Function({Function x}) Function();
-typedef F15<T> = List<T> Function(List<T> x) Function();
-typedef F16<T> = Function(int x0, [Function x]) Function();
-typedef F17<T> = Function([core.List<core.int> x1]) Function();
-typedef F18<T> = void Function(int x, [int x2]) Function();
-typedef F19<T> = void Function(int y, {List<Function> x}) Function();
-typedef F20<T> = int Function<A>(Function x) Function();
-typedef F21<T> = core.List<core.int> Function<A>(List<Function> x) Function();
-typedef F22<T> = A Function<A>(core.List<core.int> x) Function();
-typedef F23<T> = void Function(B x) Function<B extends core.int>();
-
-int f0(int y, [core.List<core.int> x]) => null;
-List<Function> f1(int x0, [List<Function> x]) => null;
-List<int> f2([Function x]) => null;
-void f3(int x) => null;
-f4<A>(List<int> x) => null;
-int Function(int x, [Function x0]) f5() => null;
-int Function(int y, {core.List<core.int> x}) f6() => null;
-Function Function([Function x]) f7() => null;
-Function Function(core.List<core.int> x0) f8() => null;
-List<Function> Function(int x0, [int x1]) f9() => null;
-List<Function> Function(int x0, {List<Function> x}) f10() => null;
-core.List<core.int> Function(int x) f11() => null;
-core.List<core.int> Function(int y, [List<Function> x]) f12() => null;
-core.List<core.int> Function(int x0, [List<int> x1]) f13() => null;
-List<int> Function({Function x}) f14() => null;
-List<int> Function(List<int> x) f15() => null;
-Function(int x0, [Function x]) f16() => null;
-Function([core.List<core.int> x0]) f17() => null;
-void Function(int x, [int x0]) f18() => null;
-void Function(int y, {List<Function> x}) f19() => null;
-int Function<A>(Function x) f20() => null;
-core.List<core.int> Function<A>(List<Function> x) f21() => null;
-A Function<A>(core.List<core.int> x) f22() => null;
-void Function(B x) f23<B extends core.int>() => null;
-
-class U36<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, [core.List<core.int> x]) x0;
-  List<Function> Function(int x0, [List<Function> x]) x1;
-  List<T> Function([Function x]) x2;
-  void Function(int x) x3;
-  Function<A>(List<T> x) x4;
-  int Function(int x, [Function x2]) Function() x5;
-  int Function(int y, {core.List<core.int> x}) Function() x6;
-  Function Function([Function x]) Function() x7;
-  Function Function(core.List<core.int> x0) Function() x8;
-  List<Function> Function(int x1, [int x2]) Function() x9;
-  List<Function> Function(int x0, {List<Function> x}) Function() x10;
-  core.List<core.int> Function(int x) Function() x11;
-  core.List<core.int> Function(int y, [List<Function> x]) Function() x12;
-  core.List<core.int> Function(int x1, [List<T> x2]) Function() x13;
-  List<T> Function({Function x}) Function() x14;
-  List<T> Function(List<T> x) Function() x15;
-  Function(int x0, [Function x]) Function() x16;
-  Function([core.List<core.int> x1]) Function() x17;
-  void Function(int x, [int x2]) Function() x18;
-  void Function(int y, {List<Function> x}) Function() x19;
-  int Function<A>(Function x) Function() x20;
-  core.List<core.int> Function<A>(List<Function> x) Function() x21;
-  A Function<A>(core.List<core.int> x) Function() x22;
-  void Function(B x) Function<B extends core.int>() x23;
-
-  U36({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, [core.List<core.int> x]) => null;
-  List<Function> m1(int x0, [List<Function> x]) => null;
-  List<T> m2([Function x]) => null;
-  void m3(int x) => null;
-  m4<A>(List<T> x) => null;
-  int Function(int x, [Function x0]) m5() => null;
-  int Function(int y, {core.List<core.int> x}) m6() => null;
-  Function Function([Function x]) m7() => null;
-  Function Function(core.List<core.int> x0) m8() => null;
-  List<Function> Function(int x0, [int x1]) m9() => null;
-  List<Function> Function(int x0, {List<Function> x}) m10() => null;
-  core.List<core.int> Function(int x) m11() => null;
-  core.List<core.int> Function(int y, [List<Function> x]) m12() => null;
-  core.List<core.int> Function(int x0, [List<T> x1]) m13() => null;
-  List<T> Function({Function x}) m14() => null;
-  List<T> Function(List<T> x) m15() => null;
-  Function(int x0, [Function x]) m16() => null;
-  Function([core.List<core.int> x0]) m17() => null;
-  void Function(int x, [int x0]) m18() => null;
-  void Function(int y, {List<Function> x}) m19() => null;
-  int Function<A>(Function x) m20() => null;
-  core.List<core.int> Function<A>(List<Function> x) m21() => null;
-  A Function<A>(core.List<core.int> x) m22() => null;
-  void Function(B x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, [core.List<core.int> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, [core.List<core.int> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, [List<Function> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [List<Function> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, [List<Function> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([Function x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([Function x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([Function x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([Function x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(int x, [Function x2]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [Function x2]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x, [Function x2]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {core.List<core.int> x}) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {core.List<core.int> x}) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function(int y, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([Function x]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([Function x]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x0) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x0) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(core.List<core.int> x0) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1, [int x2]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [int x2]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, [int x2]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x0, {List<Function> x}) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {List<Function> x}) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(int x0, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [List<Function> x]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<Function> x]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, [List<Function> x])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<T> x2]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<T> x2]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function(int x1, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x1, [List<T> x2]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x1, [List<T> x2]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({Function x}) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({Function x}) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function({Function x}) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({Function x}) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({Function x}) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(List<T> x) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x0, [Function x]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x0, [Function x]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x0, [Function x]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x1]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x1]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x1]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x, [int x2]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [int x2]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x, [int x2]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {List<Function> x}) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<Function> x}) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(Function x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(Function x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<Function> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<Function> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is core.List<core.int> Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(core.List<core.int> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(core.List<core.int> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function(B x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function(B x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function(B x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U36().runTests();
-  new U36<int>(tIsInt: true).runTests();
-  new U36<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type37_test.dart b/tests/language/function_type/function_type37_test.dart
deleted file mode 100644
index c0b31fe..0000000
--- a/tests/language/function_type/function_type37_test.dart
+++ /dev/null
@@ -1,864 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(core.List<core.int> x0);
-typedef F1<T> = List<Function> Function(int y, [List<Function> x]);
-typedef F2<T> = List<T> Function(int x0, [Function x]);
-typedef F3<T> = void Function([int x]);
-typedef F4<T> = Function<A>();
-typedef F5<T> = int Function(int x, [Function x1]) Function(int x);
-typedef F6<T> = int Function(int y, {core.List<core.int> x}) Function(int x);
-typedef F7<T> = Function Function([Function x]) Function(int x);
-typedef F8<T> = Function Function(core.List<core.int> x1) Function(int x);
-typedef F9<T> = List<Function> Function(int x2, [int x3]) Function(int x);
-typedef F10<T> = List<Function> Function(int x1, {List<Function> x}) Function(
-    int x);
-typedef F11<T> = core.List<core.int> Function(int x) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int y, [List<Function> x])
-    Function(int x);
-typedef F13<T> = core.List<core.int> Function(int x2, [List<T> x3]) Function(
-    int x);
-typedef F14<T> = List<T> Function({Function x}) Function(int x);
-typedef F15<T> = List<T> Function(List<T> x) Function(int x);
-typedef F16<T> = Function(int x1, [Function x]) Function(int x);
-typedef F17<T> = Function([core.List<core.int> x1]) Function(int x);
-typedef F18<T> = void Function(int x, [int x1]) Function(int x);
-typedef F19<T> = void Function(int y, {List<Function> x}) Function(int x);
-typedef F20<T> = int Function<A>(Function x) Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>(List<Function> x) Function(
-    int x);
-typedef F22<T> = A Function<A>(core.List<core.int> x) Function(int x);
-typedef F23<T> = void Function(B x) Function<B extends core.int>(int x);
-
-int f0(core.List<core.int> x0) => null;
-List<Function> f1(int y, [List<Function> x]) => null;
-List<int> f2(int x0, [Function x]) => null;
-void f3([int x]) => null;
-f4<A>() => null;
-int Function(int x, [Function x0]) f5(int x) => null;
-int Function(int y, {core.List<core.int> x}) f6(int x) => null;
-Function Function([Function x]) f7(int x) => null;
-Function Function(core.List<core.int> x0) f8(int x) => null;
-List<Function> Function(int x0, [int x1]) f9(int x) => null;
-List<Function> Function(int x0, {List<Function> x}) f10(int x) => null;
-core.List<core.int> Function(int x) f11(int x) => null;
-core.List<core.int> Function(int y, [List<Function> x]) f12(int x) => null;
-core.List<core.int> Function(int x0, [List<int> x1]) f13(int x) => null;
-List<int> Function({Function x}) f14(int x) => null;
-List<int> Function(List<int> x) f15(int x) => null;
-Function(int x0, [Function x]) f16(int x) => null;
-Function([core.List<core.int> x0]) f17(int x) => null;
-void Function(int x, [int x0]) f18(int x) => null;
-void Function(int y, {List<Function> x}) f19(int x) => null;
-int Function<A>(Function x) f20(int x) => null;
-core.List<core.int> Function<A>(List<Function> x) f21(int x) => null;
-A Function<A>(core.List<core.int> x) f22(int x) => null;
-void Function(B x) f23<B extends core.int>(int x) => null;
-
-class U37<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(core.List<core.int> x0) x0;
-  List<Function> Function(int y, [List<Function> x]) x1;
-  List<T> Function(int x0, [Function x]) x2;
-  void Function([int x]) x3;
-  Function<A>() x4;
-  int Function(int x, [Function x1]) Function(int x) x5;
-  int Function(int y, {core.List<core.int> x}) Function(int x) x6;
-  Function Function([Function x]) Function(int x) x7;
-  Function Function(core.List<core.int> x1) Function(int x) x8;
-  List<Function> Function(int x2, [int x3]) Function(int x) x9;
-  List<Function> Function(int x1, {List<Function> x}) Function(int x) x10;
-  core.List<core.int> Function(int x) Function(int x) x11;
-  core.List<core.int> Function(int y, [List<Function> x]) Function(int x) x12;
-  core.List<core.int> Function(int x2, [List<T> x3]) Function(int x) x13;
-  List<T> Function({Function x}) Function(int x) x14;
-  List<T> Function(List<T> x) Function(int x) x15;
-  Function(int x1, [Function x]) Function(int x) x16;
-  Function([core.List<core.int> x1]) Function(int x) x17;
-  void Function(int x, [int x1]) Function(int x) x18;
-  void Function(int y, {List<Function> x}) Function(int x) x19;
-  int Function<A>(Function x) Function(int x) x20;
-  core.List<core.int> Function<A>(List<Function> x) Function(int x) x21;
-  A Function<A>(core.List<core.int> x) Function(int x) x22;
-  void Function(B x) Function<B extends core.int>(int x) x23;
-
-  U37({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(core.List<core.int> x0) => null;
-  List<Function> m1(int y, [List<Function> x]) => null;
-  List<T> m2(int x0, [Function x]) => null;
-  void m3([int x]) => null;
-  m4<A>() => null;
-  int Function(int x, [Function x0]) m5(int x) => null;
-  int Function(int y, {core.List<core.int> x}) m6(int x) => null;
-  Function Function([Function x]) m7(int x) => null;
-  Function Function(core.List<core.int> x0) m8(int x) => null;
-  List<Function> Function(int x0, [int x1]) m9(int x) => null;
-  List<Function> Function(int x0, {List<Function> x}) m10(int x) => null;
-  core.List<core.int> Function(int x) m11(int x) => null;
-  core.List<core.int> Function(int y, [List<Function> x]) m12(int x) => null;
-  core.List<core.int> Function(int x0, [List<T> x1]) m13(int x) => null;
-  List<T> Function({Function x}) m14(int x) => null;
-  List<T> Function(List<T> x) m15(int x) => null;
-  Function(int x0, [Function x]) m16(int x) => null;
-  Function([core.List<core.int> x0]) m17(int x) => null;
-  void Function(int x, [int x0]) m18(int x) => null;
-  void Function(int y, {List<Function> x}) m19(int x) => null;
-  int Function<A>(Function x) m20(int x) => null;
-  core.List<core.int> Function<A>(List<Function> x) m21(int x) => null;
-  A Function<A>(core.List<core.int> x) m22(int x) => null;
-  void Function(B x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(core.List<core.int> x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(core.List<core.int> x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, [List<Function> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<Function> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, [List<Function> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, [Function x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [Function x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, [Function x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, [Function x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, [Function x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([int x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([int x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([int x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x, [Function x1]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [Function x1]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x, [Function x1]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {core.List<core.int> x}) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {core.List<core.int> x}) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int y, {core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([Function x]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([Function x]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x1) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x1) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(core.List<core.int> x1) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x2, [int x3]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [int x3]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x2, [int x3]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, {List<Function> x}) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {List<Function> x}) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, {List<Function> x})
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [List<Function> x]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<Function> x]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, [List<Function> x])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x2, [List<T> x3]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [List<T> x3]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x2, [List<T> x3])
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x2, [List<T> x3]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x2, [List<T> x3]) Function(int x) l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({Function x}) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({Function x}) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function({Function x}) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({Function x}) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({Function x}) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [Function x]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [Function x]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x1]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x1]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x, [int x1]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [int x1]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x, [int x1]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {List<Function> x}) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<Function> x}) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int y, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(Function x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(Function x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<Function> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<Function> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<Function> x)
-        Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(core.List<core.int> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(core.List<core.int> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function(B x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function(B x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect
-        .isTrue(m23 is void Function(B x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U37().runTests();
-  new U37<int>(tIsInt: true).runTests();
-  new U37<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type38_test.dart b/tests/language/function_type/function_type38_test.dart
deleted file mode 100644
index 3a5a449..0000000
--- a/tests/language/function_type/function_type38_test.dart
+++ /dev/null
@@ -1,900 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([core.List<core.int> x1]);
-typedef F1<T> = List<Function> Function(List<Function> x0);
-typedef F2<T> = List<T> Function(int y, [Function x]);
-typedef F3<T> = void Function(int x0, [int x]);
-typedef F4<T> = Function<A>(A x);
-typedef F5<T> = int Function(int x, [Function x1])
-    Function<B extends core.int>();
-typedef F6<T> = int Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F7<T> = Function Function([Function x]) Function<B extends core.int>();
-typedef F8<T> = Function Function(core.List<core.int> x1)
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x2, [int x3])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x1, {List<Function> x})
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int x)
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int y, [List<Function> x])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int x2, [List<T> x3])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function({Function x}) Function<B extends core.int>();
-typedef F15<T> = List<T> Function(List<T> x) Function<B extends core.int>();
-typedef F16<T> = Function(int x1, [Function x]) Function<B extends core.int>();
-typedef F17<T> = Function([core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F18<T> = void Function(int x, [int x1]) Function<B extends core.int>();
-typedef F19<T> = void Function(int y, {List<Function> x})
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>(Function x) Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>(List<Function> x)
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F23<T> = B Function(int x) Function<B extends core.int>();
-
-int f0([core.List<core.int> x0]) => null;
-List<Function> f1(List<Function> x0) => null;
-List<int> f2(int y, [Function x]) => null;
-void f3(int x0, [int x]) => null;
-f4<A>(A x) => null;
-int Function(int x, [Function x0]) f5<B extends core.int>() => null;
-int Function(int y, {core.List<core.int> x}) f6<B extends core.int>() => null;
-Function Function([Function x]) f7<B extends core.int>() => null;
-Function Function(core.List<core.int> x0) f8<B extends core.int>() => null;
-List<Function> Function(int x0, [int x1]) f9<B extends core.int>() => null;
-List<Function> Function(int x0, {List<Function> x}) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x) f11<B extends core.int>() => null;
-core.List<core.int> Function(int y, [List<Function> x])
-    f12<B extends core.int>() => null;
-core.List<core.int> Function(int x0, [List<int> x1])
-    f13<B extends core.int>() => null;
-List<int> Function({Function x}) f14<B extends core.int>() => null;
-List<int> Function(List<int> x) f15<B extends core.int>() => null;
-Function(int x0, [Function x]) f16<B extends core.int>() => null;
-Function([core.List<core.int> x0]) f17<B extends core.int>() => null;
-void Function(int x, [int x0]) f18<B extends core.int>() => null;
-void Function(int y, {List<Function> x}) f19<B extends core.int>() => null;
-int Function<A>(Function x) f20<B extends core.int>() => null;
-core.List<core.int> Function<A>(List<Function> x) f21<B extends core.int>() =>
-    null;
-A Function<A>(core.List<core.int> x) f22<B extends core.int>() => null;
-B Function(int x) f23<B extends core.int>() => null;
-
-class U38<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([core.List<core.int> x1]) x0;
-  List<Function> Function(List<Function> x0) x1;
-  List<T> Function(int y, [Function x]) x2;
-  void Function(int x0, [int x]) x3;
-  Function<A>(A x) x4;
-  int Function(int x, [Function x1]) Function<B extends core.int>() x5;
-  int Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-      x6;
-  Function Function([Function x]) Function<B extends core.int>() x7;
-  Function Function(core.List<core.int> x1) Function<B extends core.int>() x8;
-  List<Function> Function(int x2, [int x3]) Function<B extends core.int>() x9;
-  List<Function> Function(int x1, {List<Function> x})
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function(int x) Function<B extends core.int>() x11;
-  core.List<core.int> Function(int y, [List<Function> x])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function(int x2, [List<T> x3])
-      Function<B extends core.int>() x13;
-  List<T> Function({Function x}) Function<B extends core.int>() x14;
-  List<T> Function(List<T> x) Function<B extends core.int>() x15;
-  Function(int x1, [Function x]) Function<B extends core.int>() x16;
-  Function([core.List<core.int> x1]) Function<B extends core.int>() x17;
-  void Function(int x, [int x1]) Function<B extends core.int>() x18;
-  void Function(int y, {List<Function> x}) Function<B extends core.int>() x19;
-  int Function<A>(Function x) Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>(List<Function> x)
-      Function<B extends core.int>() x21;
-  A Function<A>(core.List<core.int> x) Function<B extends core.int>() x22;
-  B Function(int x) Function<B extends core.int>() x23;
-
-  U38({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([core.List<core.int> x0]) => null;
-  List<Function> m1(List<Function> x0) => null;
-  List<T> m2(int y, [Function x]) => null;
-  void m3(int x0, [int x]) => null;
-  m4<A>(A x) => null;
-  int Function(int x, [Function x0]) m5<B extends core.int>() => null;
-  int Function(int y, {core.List<core.int> x}) m6<B extends core.int>() => null;
-  Function Function([Function x]) m7<B extends core.int>() => null;
-  Function Function(core.List<core.int> x0) m8<B extends core.int>() => null;
-  List<Function> Function(int x0, [int x1]) m9<B extends core.int>() => null;
-  List<Function> Function(int x0, {List<Function> x})
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function(int x) m11<B extends core.int>() => null;
-  core.List<core.int> Function(int y, [List<Function> x])
-      m12<B extends core.int>() => null;
-  core.List<core.int> Function(int x0, [List<T> x1])
-      m13<B extends core.int>() => null;
-  List<T> Function({Function x}) m14<B extends core.int>() => null;
-  List<T> Function(List<T> x) m15<B extends core.int>() => null;
-  Function(int x0, [Function x]) m16<B extends core.int>() => null;
-  Function([core.List<core.int> x0]) m17<B extends core.int>() => null;
-  void Function(int x, [int x0]) m18<B extends core.int>() => null;
-  void Function(int y, {List<Function> x}) m19<B extends core.int>() => null;
-  int Function<A>(Function x) m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>(List<Function> x) m21<B extends core.int>() =>
-      null;
-  A Function<A>(core.List<core.int> x) m22<B extends core.int>() => null;
-  B Function(int x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([core.List<core.int> x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([core.List<core.int> x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(List<Function> x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(List<Function> x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, [Function x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [Function x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, [Function x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, [Function x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, [Function x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, [int x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, [int x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, [int x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x, [Function x1]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [Function x1]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x, [Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([Function x]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function([Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x1) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x1) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(core.List<core.int> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x2, [int x3]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [int x3]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x2, [int x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, {List<Function> x}) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {List<Function> x})
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [List<Function> x]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<Function> x])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x2, [List<T> x3]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [List<T> x3])
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x2, [List<T> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x2, [List<T> x3])
-            Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x2, [List<T> x3])
-          Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({Function x}) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({Function x}) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function({Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({Function x}) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({Function x}) Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x) Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x) Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [Function x]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [Function x]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x1, [Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x1]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x1]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x, [int x1]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [int x1]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int x, [int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {List<Function> x}) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<Function> x}) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(Function x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(Function x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<Function> x)
-        Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(core.List<core.int> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(int x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(int x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U38().runTests();
-  new U38<int>(tIsInt: true).runTests();
-  new U38<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type39_test.dart b/tests/language/function_type/function_type39_test.dart
deleted file mode 100644
index 47875f2..0000000
--- a/tests/language/function_type/function_type39_test.dart
+++ /dev/null
@@ -1,926 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x1, [core.List<core.int> x2]);
-typedef F1<T> = List<Function> Function([List<Function> x1]);
-typedef F2<T> = List<T> Function(Function x0);
-typedef F3<T> = void Function(int y, [int x]);
-typedef F4<T> = Function<A>(List<A> x);
-typedef F5<T> = int Function(int x, [Function x1]) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function([Function x]) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function(core.List<core.int> x1)
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int x2, [int x3])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x1, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int x)
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int y, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int x2, [List<T> x3])
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function({Function x}) Function<B extends core.int>(
-    int x);
-typedef F15<T> = List<T> Function(List<T> x) Function<B extends core.int>(
-    int x);
-typedef F16<T> = Function(int x1, [Function x]) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function([core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int x, [int x1]) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function(int y, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>(Function x) Function<B extends core.int>(
-    int x);
-typedef F21<T> = core.List<core.int> Function<A>(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = A Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F23<T> = B Function(int x) Function<B extends core.int>(int x);
-
-int f0(int x0, [core.List<core.int> x1]) => null;
-List<Function> f1([List<Function> x0]) => null;
-List<int> f2(Function x0) => null;
-void f3(int y, [int x]) => null;
-f4<A>(List<A> x) => null;
-int Function(int x, [Function x0]) f5<B extends core.int>(int x) => null;
-int Function(int y, {core.List<core.int> x}) f6<B extends core.int>(int x) =>
-    null;
-Function Function([Function x]) f7<B extends core.int>(int x) => null;
-Function Function(core.List<core.int> x0) f8<B extends core.int>(int x) => null;
-List<Function> Function(int x0, [int x1]) f9<B extends core.int>(int x) => null;
-List<Function> Function(int x0, {List<Function> x}) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(int y, [List<Function> x]) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x0, [List<int> x1]) f13<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function({Function x}) f14<B extends core.int>(int x) => null;
-List<int> Function(List<int> x) f15<B extends core.int>(int x) => null;
-Function(int x0, [Function x]) f16<B extends core.int>(int x) => null;
-Function([core.List<core.int> x0]) f17<B extends core.int>(int x) => null;
-void Function(int x, [int x0]) f18<B extends core.int>(int x) => null;
-void Function(int y, {List<Function> x}) f19<B extends core.int>(int x) => null;
-int Function<A>(Function x) f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>(List<Function> x) f21<B extends core.int>(
-        int x) =>
-    null;
-A Function<A>(core.List<core.int> x) f22<B extends core.int>(int x) => null;
-B Function(int x) f23<B extends core.int>(int x) => null;
-
-class U39<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x1, [core.List<core.int> x2]) x0;
-  List<Function> Function([List<Function> x1]) x1;
-  List<T> Function(Function x0) x2;
-  void Function(int y, [int x]) x3;
-  Function<A>(List<A> x) x4;
-  int Function(int x, [Function x1]) Function<B extends core.int>(int x) x5;
-  int Function(int y, {core.List<core.int> x}) Function<B extends core.int>(
-      int x) x6;
-  Function Function([Function x]) Function<B extends core.int>(int x) x7;
-  Function Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-      x8;
-  List<Function> Function(int x2, [int x3]) Function<B extends core.int>(int x)
-      x9;
-  List<Function> Function(int x1, {List<Function> x})
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function(int x) Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(int y, [List<Function> x])
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function(int x2, [List<T> x3])
-      Function<B extends core.int>(int x) x13;
-  List<T> Function({Function x}) Function<B extends core.int>(int x) x14;
-  List<T> Function(List<T> x) Function<B extends core.int>(int x) x15;
-  Function(int x1, [Function x]) Function<B extends core.int>(int x) x16;
-  Function([core.List<core.int> x1]) Function<B extends core.int>(int x) x17;
-  void Function(int x, [int x1]) Function<B extends core.int>(int x) x18;
-  void Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-      x19;
-  int Function<A>(Function x) Function<B extends core.int>(int x) x20;
-  core.List<core.int> Function<A>(List<Function> x)
-      Function<B extends core.int>(int x) x21;
-  A Function<A>(core.List<core.int> x) Function<B extends core.int>(int x) x22;
-  B Function(int x) Function<B extends core.int>(int x) x23;
-
-  U39({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [core.List<core.int> x1]) => null;
-  List<Function> m1([List<Function> x0]) => null;
-  List<T> m2(Function x0) => null;
-  void m3(int y, [int x]) => null;
-  m4<A>(List<A> x) => null;
-  int Function(int x, [Function x0]) m5<B extends core.int>(int x) => null;
-  int Function(int y, {core.List<core.int> x}) m6<B extends core.int>(int x) =>
-      null;
-  Function Function([Function x]) m7<B extends core.int>(int x) => null;
-  Function Function(core.List<core.int> x0) m8<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x0, [int x1]) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x0, {List<Function> x}) m10<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int y, [List<Function> x])
-      m12<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x0, [List<T> x1]) m13<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function({Function x}) m14<B extends core.int>(int x) => null;
-  List<T> Function(List<T> x) m15<B extends core.int>(int x) => null;
-  Function(int x0, [Function x]) m16<B extends core.int>(int x) => null;
-  Function([core.List<core.int> x0]) m17<B extends core.int>(int x) => null;
-  void Function(int x, [int x0]) m18<B extends core.int>(int x) => null;
-  void Function(int y, {List<Function> x}) m19<B extends core.int>(int x) =>
-      null;
-  int Function<A>(Function x) m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>(List<Function> x) m21<B extends core.int>(
-          int x) =>
-      null;
-  A Function<A>(core.List<core.int> x) m22<B extends core.int>(int x) => null;
-  B Function(int x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x1, [core.List<core.int> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x1, [core.List<core.int> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x1, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([List<Function> x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([List<Function> x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(Function x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(Function x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(Function x0) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(Function x0) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, [int x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, [int x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, [int x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x, [Function x1]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [Function x1]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x, [Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {core.List<core.int> x}) Function<B extends core.int>(
-        int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([Function x]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x]) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x1) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x2, [int x3]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [int x3]) Function<B extends core.int>(
-        int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x2, [int x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x) Function<B extends core.int>(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x2, [List<T> x3])
-            Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x2, [List<T> x3])
-          Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({Function x}) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({Function x}) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function({Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({Function x}) Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({Function x}) Function<B extends core.int>(int x) l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x) Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x) Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [Function x]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [Function x]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([core.List<core.int> x1]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x, [int x1]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [int x1]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x, [int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(Function x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(Function x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<Function> x)
-        Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-        l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(int x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(int x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U39().runTests();
-  new U39<int>(tIsInt: true).runTests();
-  new U39<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type3_test.dart b/tests/language/function_type/function_type3_test.dart
deleted file mode 100644
index 2c4cb52..0000000
--- a/tests/language/function_type/function_type3_test.dart
+++ /dev/null
@@ -1,1016 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, [int x]);
-typedef F1<T> = Function Function(int y, [List<T> x]);
-typedef F2<T> = core.List<core.int> Function(int x0, [core.List<core.int> x]);
-typedef F3<T> = Function([List<Function> x]);
-typedef F4<T> = Function Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function(int x1, {int x}) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function([core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int y, [int x]) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function(int x2, [List<Function> x3])
-    Function<B extends core.int>(int x);
-typedef F9<T> = Function Function(int x1, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function(int y, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function([Function x1])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function({core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int y, {int x}) Function<B extends core.int>(
-    int x);
-typedef F15<T> = List<T> Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(int x1) Function<B extends core.int>(int x);
-typedef F17<T> = Function(int x, [List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F18<T> = Function(int y, {List<T> x}) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function([List<Function> x]) Function<B extends core.int>(
-    int x);
-typedef F20<T> = void Function(List<T> x1) Function<B extends core.int>(int x);
-typedef F21<T> = List<Function> Function<A>(Function x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = Function<A>(List<Function> x) Function<B extends core.int>(
-    int x);
-typedef F23<T> = void Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-
-int f0(int y, [int x]) => null;
-Function f1(int y, [List<int> x]) => null;
-core.List<core.int> f2(int x0, [core.List<core.int> x]) => null;
-f3([List<Function> x]) => null;
-Function f4<A>(core.List<core.int> x) => null;
-int Function(int x0, {int x}) f5<B extends core.int>(int x) => null;
-int Function([core.List<core.int> x]) f6<B extends core.int>(int x) => null;
-Function Function(int y, [int x]) f7<B extends core.int>(int x) => null;
-Function Function(int x0, [List<Function> x1]) f8<B extends core.int>(int x) =>
-    null;
-Function Function(int x0, {List<int> x}) f9<B extends core.int>(int x) => null;
-List<Function> Function(List<Function> x) f10<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int y, [List<int> x]) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function([Function x0]) f12<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function({core.List<core.int> x}) f13<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(int y, {int x}) f14<B extends core.int>(int x) => null;
-List<int> Function(int x0, [core.List<core.int> x]) f15<B extends core.int>(
-        int x) =>
-    null;
-Function(int x0) f16<B extends core.int>(int x) => null;
-Function(int x, [List<Function> x0]) f17<B extends core.int>(int x) => null;
-Function(int y, {List<int> x}) f18<B extends core.int>(int x) => null;
-void Function([List<Function> x]) f19<B extends core.int>(int x) => null;
-void Function(List<int> x0) f20<B extends core.int>(int x) => null;
-List<Function> Function<A>(Function x) f21<B extends core.int>(int x) => null;
-Function<A>(List<Function> x) f22<B extends core.int>(int x) => null;
-void Function<A>(core.List<core.int> x) f23<B extends core.int>(int x) => null;
-
-class U3<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, [int x]) x0;
-  Function Function(int y, [List<T> x]) x1;
-  core.List<core.int> Function(int x0, [core.List<core.int> x]) x2;
-  Function([List<Function> x]) x3;
-  Function Function<A>(core.List<core.int> x) x4;
-  int Function(int x1, {int x}) Function<B extends core.int>(int x) x5;
-  int Function([core.List<core.int> x]) Function<B extends core.int>(int x) x6;
-  Function Function(int y, [int x]) Function<B extends core.int>(int x) x7;
-  Function Function(int x2, [List<Function> x3]) Function<B extends core.int>(
-      int x) x8;
-  Function Function(int x1, {List<T> x}) Function<B extends core.int>(int x) x9;
-  List<Function> Function(List<Function> x) Function<B extends core.int>(int x)
-      x10;
-  List<Function> Function(int y, [List<T> x]) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function([Function x1]) Function<B extends core.int>(
-      int x) x12;
-  core.List<core.int> Function({core.List<core.int> x})
-      Function<B extends core.int>(int x) x13;
-  List<T> Function(int y, {int x}) Function<B extends core.int>(int x) x14;
-  List<T> Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>(int x) x15;
-  Function(int x1) Function<B extends core.int>(int x) x16;
-  Function(int x, [List<Function> x1]) Function<B extends core.int>(int x) x17;
-  Function(int y, {List<T> x}) Function<B extends core.int>(int x) x18;
-  void Function([List<Function> x]) Function<B extends core.int>(int x) x19;
-  void Function(List<T> x1) Function<B extends core.int>(int x) x20;
-  List<Function> Function<A>(Function x) Function<B extends core.int>(int x)
-      x21;
-  Function<A>(List<Function> x) Function<B extends core.int>(int x) x22;
-  void Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-      x23;
-
-  U3({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, [int x]) => null;
-  Function m1(int y, [List<T> x]) => null;
-  core.List<core.int> m2(int x0, [core.List<core.int> x]) => null;
-  m3([List<Function> x]) => null;
-  Function m4<A>(core.List<core.int> x) => null;
-  int Function(int x0, {int x}) m5<B extends core.int>(int x) => null;
-  int Function([core.List<core.int> x]) m6<B extends core.int>(int x) => null;
-  Function Function(int y, [int x]) m7<B extends core.int>(int x) => null;
-  Function Function(int x0, [List<Function> x1]) m8<B extends core.int>(
-          int x) =>
-      null;
-  Function Function(int x0, {List<T> x}) m9<B extends core.int>(int x) => null;
-  List<Function> Function(List<Function> x) m10<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int y, [List<T> x]) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function([Function x0]) m12<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function({core.List<core.int> x}) m13<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(int y, {int x}) m14<B extends core.int>(int x) => null;
-  List<T> Function(int x0, [core.List<core.int> x]) m15<B extends core.int>(
-          int x) =>
-      null;
-  Function(int x0) m16<B extends core.int>(int x) => null;
-  Function(int x, [List<Function> x0]) m17<B extends core.int>(int x) => null;
-  Function(int y, {List<T> x}) m18<B extends core.int>(int x) => null;
-  void Function([List<Function> x]) m19<B extends core.int>(int x) => null;
-  void Function(List<T> x0) m20<B extends core.int>(int x) => null;
-  List<Function> Function<A>(Function x) m21<B extends core.int>(int x) => null;
-  Function<A>(List<Function> x) m22<B extends core.int>(int x) => null;
-  void Function<A>(core.List<core.int> x) m23<B extends core.int>(int x) =>
-      null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, [int x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, [int x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, [int x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(int y, [List<T> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<T> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(int y, [List<T> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(int y, [List<T> x]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(int y, [List<T> x]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(int x0, [core.List<core.int> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [core.List<core.int> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(
-        m2 is core.List<core.int> Function(int x0, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function([List<Function> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function([List<Function> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function([List<Function> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {int x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {int x}) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [int x]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [int x]) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [List<Function> x3]) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int x1, {List<T> x}) Function<B extends core.int>(
-            int x) l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-          l9 = m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<Function> x) Function<B extends core.int>(
-        int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<T> x]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(int y, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(int y, [List<T> x])
-            Function<B extends core.int>(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(int y, [List<T> x]) Function<B extends core.int>(
-          int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function([Function x1]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x1]) Function<B extends core.int>(
-        int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({core.List<core.int> x})
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function({core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int y, {int x}) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {int x}) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {int x}) Function<B extends core.int>(int x)
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {int x}) Function<B extends core.int>(int x) l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [core.List<core.int> x])
-            Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [core.List<core.int> x])
-          Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function(int y, {List<T> x}) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is Function(int y, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-    if (!tIsBool) {
-      Expect.isTrue(f18 is F18<int>);
-      Expect.isFalse(f18 is F18<bool>);
-      Expect.isTrue(confuse(f18) is F18<int>);
-      Expect.isFalse(confuse(f18) is F18<bool>);
-      Expect.equals(tIsDynamic, m18 is F18<bool>);
-      Expect.equals(tIsDynamic, confuse(m18) is F18<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          x18 = confuse(f18);
-        });
-        Function(int y, {List<T> x}) Function<B extends core.int>(int x) l18;
-        Expect.throws(() {
-          l18 = (f18 as dynamic);
-        });
-        Expect.throws(() {
-          l18 = confuse(f18);
-        });
-      }
-      Function(int y, {List<T> x}) Function<B extends core.int>(int x) l18 =
-          m18;
-      // In checked mode, verifies the type.
-      x18 = m18;
-      x18 = confuse(m18);
-    }
-  }
-
-  /// void Function([List<Function> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x]) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(List<T> x1) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(List<T> x1) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is void Function(List<T> x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(List<T> x1) Function<B extends core.int>(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(List<T> x1) Function<B extends core.int>(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(Function x) Function<B extends core.int>(int x)
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<Function> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-        l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U3().runTests();
-  new U3<int>(tIsInt: true).runTests();
-  new U3<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type40_test.dart b/tests/language/function_type/function_type40_test.dart
deleted file mode 100644
index afe7fab..0000000
--- a/tests/language/function_type/function_type40_test.dart
+++ /dev/null
@@ -1,911 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x, [core.List<core.int> x2]);
-typedef F1<T> = List<Function> Function(int x1, [List<Function> x2]);
-typedef F2<T> = List<T> Function([Function x1]);
-typedef F3<T> = void Function(int x0);
-typedef F4<T> = A Function<A>(int x);
-typedef F5<T> = int Function({Function x}) Function();
-typedef F6<T> = int Function(List<T> x) Function();
-typedef F7<T> = Function Function(int x0, [Function x]) Function();
-typedef F8<T> = Function Function([core.List<core.int> x1]) Function();
-typedef F9<T> = List<Function> Function(int x, [int x2]) Function();
-typedef F10<T> = List<Function> Function(int y, {List<Function> x}) Function();
-typedef F11<T> = core.List<core.int> Function([int x]) Function();
-typedef F12<T> = core.List<core.int> Function(List<Function> x0) Function();
-typedef F13<T> = core.List<core.int> Function(int x, [List<T> x2]) Function();
-typedef F14<T> = List<T> Function(int x0, {Function x}) Function();
-typedef F15<T> = List<T> Function([List<T> x]) Function();
-typedef F16<T> = Function(int y, [Function x]) Function();
-typedef F17<T> = Function(int x1, [core.List<core.int> x2]) Function();
-typedef F18<T> = void Function({int x}) Function();
-typedef F19<T> = void Function(core.List<core.int> x) Function();
-typedef F20<T> = int Function<A>(List<Function> x) Function();
-typedef F21<T> = core.List<core.int> Function<A>(core.List<core.int> x)
-    Function();
-typedef F22<T> = A Function<A>(List<T> x) Function();
-typedef F23<T> = B Function(Function x) Function<B extends core.int>();
-
-int f0(int x, [core.List<core.int> x0]) => null;
-List<Function> f1(int x0, [List<Function> x1]) => null;
-List<int> f2([Function x0]) => null;
-void f3(int x0) => null;
-A f4<A>(int x) => null;
-int Function({Function x}) f5() => null;
-int Function(List<int> x) f6() => null;
-Function Function(int x0, [Function x]) f7() => null;
-Function Function([core.List<core.int> x0]) f8() => null;
-List<Function> Function(int x, [int x0]) f9() => null;
-List<Function> Function(int y, {List<Function> x}) f10() => null;
-core.List<core.int> Function([int x]) f11() => null;
-core.List<core.int> Function(List<Function> x0) f12() => null;
-core.List<core.int> Function(int x, [List<int> x0]) f13() => null;
-List<int> Function(int x0, {Function x}) f14() => null;
-List<int> Function([List<int> x]) f15() => null;
-Function(int y, [Function x]) f16() => null;
-Function(int x0, [core.List<core.int> x1]) f17() => null;
-void Function({int x}) f18() => null;
-void Function(core.List<core.int> x) f19() => null;
-int Function<A>(List<Function> x) f20() => null;
-core.List<core.int> Function<A>(core.List<core.int> x) f21() => null;
-A Function<A>(List<int> x) f22() => null;
-B Function(Function x) f23<B extends core.int>() => null;
-
-class U40<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x, [core.List<core.int> x2]) x0;
-  List<Function> Function(int x1, [List<Function> x2]) x1;
-  List<T> Function([Function x1]) x2;
-  void Function(int x0) x3;
-  A Function<A>(int x) x4;
-  int Function({Function x}) Function() x5;
-  int Function(List<T> x) Function() x6;
-  Function Function(int x0, [Function x]) Function() x7;
-  Function Function([core.List<core.int> x1]) Function() x8;
-  List<Function> Function(int x, [int x2]) Function() x9;
-  List<Function> Function(int y, {List<Function> x}) Function() x10;
-  core.List<core.int> Function([int x]) Function() x11;
-  core.List<core.int> Function(List<Function> x0) Function() x12;
-  core.List<core.int> Function(int x, [List<T> x2]) Function() x13;
-  List<T> Function(int x0, {Function x}) Function() x14;
-  List<T> Function([List<T> x]) Function() x15;
-  Function(int y, [Function x]) Function() x16;
-  Function(int x1, [core.List<core.int> x2]) Function() x17;
-  void Function({int x}) Function() x18;
-  void Function(core.List<core.int> x) Function() x19;
-  int Function<A>(List<Function> x) Function() x20;
-  core.List<core.int> Function<A>(core.List<core.int> x) Function() x21;
-  A Function<A>(List<T> x) Function() x22;
-  B Function(Function x) Function<B extends core.int>() x23;
-
-  U40({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x, [core.List<core.int> x0]) => null;
-  List<Function> m1(int x0, [List<Function> x1]) => null;
-  List<T> m2([Function x0]) => null;
-  void m3(int x0) => null;
-  A m4<A>(int x) => null;
-  int Function({Function x}) m5() => null;
-  int Function(List<T> x) m6() => null;
-  Function Function(int x0, [Function x]) m7() => null;
-  Function Function([core.List<core.int> x0]) m8() => null;
-  List<Function> Function(int x, [int x0]) m9() => null;
-  List<Function> Function(int y, {List<Function> x}) m10() => null;
-  core.List<core.int> Function([int x]) m11() => null;
-  core.List<core.int> Function(List<Function> x0) m12() => null;
-  core.List<core.int> Function(int x, [List<T> x0]) m13() => null;
-  List<T> Function(int x0, {Function x}) m14() => null;
-  List<T> Function([List<T> x]) m15() => null;
-  Function(int y, [Function x]) m16() => null;
-  Function(int x0, [core.List<core.int> x1]) m17() => null;
-  void Function({int x}) m18() => null;
-  void Function(core.List<core.int> x) m19() => null;
-  int Function<A>(List<Function> x) m20() => null;
-  core.List<core.int> Function<A>(core.List<core.int> x) m21() => null;
-  A Function<A>(List<T> x) m22() => null;
-  B Function(Function x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x, [core.List<core.int> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x, [core.List<core.int> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x1, [List<Function> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<Function> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x1, [List<Function> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([Function x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([Function x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([Function x1]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([Function x1]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({Function x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({Function x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function({Function x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(List<T> x) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x0, [Function x]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [Function x]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x0, [Function x]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x1]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x1]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([core.List<core.int> x1]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x, [int x2]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [int x2]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x, [int x2]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {List<Function> x}) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<Function> x}) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(int y, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([int x]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(List<Function> x0) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x0) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(List<Function> x0) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x, [List<T> x2]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<T> x2]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function(int x, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x, [List<T> x2]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x, [List<T> x2]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x0, {Function x}) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {Function x}) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x0, {Function x}) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x0, {Function x}) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x0, {Function x}) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([List<T> x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, [Function x]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [Function x]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, [Function x]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [core.List<core.int> x2]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [core.List<core.int> x2]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function({int x}) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({int x}) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function({int x}) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<Function> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<Function> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(core.List<core.int> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(core.List<core.int> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(core.List<core.int> x)
-        Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<T> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<T> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        A Function<A>(List<T> x) Function() l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      A Function<A>(List<T> x) Function() l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// B Function(Function x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(Function x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U40().runTests();
-  new U40<int>(tIsInt: true).runTests();
-  new U40<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type41_test.dart b/tests/language/function_type/function_type41_test.dart
deleted file mode 100644
index a049ed0..0000000
--- a/tests/language/function_type/function_type41_test.dart
+++ /dev/null
@@ -1,921 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function({core.List<core.int> x});
-typedef F1<T> = List<Function> Function(int x, [List<Function> x2]);
-typedef F2<T> = List<T> Function(int x1, [Function x2]);
-typedef F3<T> = void Function([int x1]);
-typedef F4<T> = A Function<A>(Function x);
-typedef F5<T> = int Function({Function x}) Function(int x);
-typedef F6<T> = int Function(List<T> x) Function(int x);
-typedef F7<T> = Function Function(int x1, [Function x]) Function(int x);
-typedef F8<T> = Function Function([core.List<core.int> x1]) Function(int x);
-typedef F9<T> = List<Function> Function(int x, [int x1]) Function(int x);
-typedef F10<T> = List<Function> Function(int y, {List<Function> x}) Function(
-    int x);
-typedef F11<T> = core.List<core.int> Function([int x]) Function(int x);
-typedef F12<T> = core.List<core.int> Function(List<Function> x1) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function(int x, [List<T> x1]) Function(
-    int x);
-typedef F14<T> = List<T> Function(int x1, {Function x}) Function(int x);
-typedef F15<T> = List<T> Function([List<T> x]) Function(int x);
-typedef F16<T> = Function(int y, [Function x]) Function(int x);
-typedef F17<T> = Function(int x2, [core.List<core.int> x3]) Function(int x);
-typedef F18<T> = void Function({int x}) Function(int x);
-typedef F19<T> = void Function(core.List<core.int> x) Function(int x);
-typedef F20<T> = int Function<A>(List<Function> x) Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>(core.List<core.int> x)
-    Function(int x);
-typedef F22<T> = A Function<A>(List<T> x) Function(int x);
-typedef F23<T> = B Function(Function x) Function<B extends core.int>(int x);
-
-int f0({core.List<core.int> x}) => null;
-List<Function> f1(int x, [List<Function> x0]) => null;
-List<int> f2(int x0, [Function x1]) => null;
-void f3([int x0]) => null;
-A f4<A>(Function x) => null;
-int Function({Function x}) f5(int x) => null;
-int Function(List<int> x) f6(int x) => null;
-Function Function(int x0, [Function x]) f7(int x) => null;
-Function Function([core.List<core.int> x0]) f8(int x) => null;
-List<Function> Function(int x, [int x0]) f9(int x) => null;
-List<Function> Function(int y, {List<Function> x}) f10(int x) => null;
-core.List<core.int> Function([int x]) f11(int x) => null;
-core.List<core.int> Function(List<Function> x0) f12(int x) => null;
-core.List<core.int> Function(int x, [List<int> x0]) f13(int x) => null;
-List<int> Function(int x0, {Function x}) f14(int x) => null;
-List<int> Function([List<int> x]) f15(int x) => null;
-Function(int y, [Function x]) f16(int x) => null;
-Function(int x0, [core.List<core.int> x1]) f17(int x) => null;
-void Function({int x}) f18(int x) => null;
-void Function(core.List<core.int> x) f19(int x) => null;
-int Function<A>(List<Function> x) f20(int x) => null;
-core.List<core.int> Function<A>(core.List<core.int> x) f21(int x) => null;
-A Function<A>(List<int> x) f22(int x) => null;
-B Function(Function x) f23<B extends core.int>(int x) => null;
-
-class U41<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function({core.List<core.int> x}) x0;
-  List<Function> Function(int x, [List<Function> x2]) x1;
-  List<T> Function(int x1, [Function x2]) x2;
-  void Function([int x1]) x3;
-  A Function<A>(Function x) x4;
-  int Function({Function x}) Function(int x) x5;
-  int Function(List<T> x) Function(int x) x6;
-  Function Function(int x1, [Function x]) Function(int x) x7;
-  Function Function([core.List<core.int> x1]) Function(int x) x8;
-  List<Function> Function(int x, [int x1]) Function(int x) x9;
-  List<Function> Function(int y, {List<Function> x}) Function(int x) x10;
-  core.List<core.int> Function([int x]) Function(int x) x11;
-  core.List<core.int> Function(List<Function> x1) Function(int x) x12;
-  core.List<core.int> Function(int x, [List<T> x1]) Function(int x) x13;
-  List<T> Function(int x1, {Function x}) Function(int x) x14;
-  List<T> Function([List<T> x]) Function(int x) x15;
-  Function(int y, [Function x]) Function(int x) x16;
-  Function(int x2, [core.List<core.int> x3]) Function(int x) x17;
-  void Function({int x}) Function(int x) x18;
-  void Function(core.List<core.int> x) Function(int x) x19;
-  int Function<A>(List<Function> x) Function(int x) x20;
-  core.List<core.int> Function<A>(core.List<core.int> x) Function(int x) x21;
-  A Function<A>(List<T> x) Function(int x) x22;
-  B Function(Function x) Function<B extends core.int>(int x) x23;
-
-  U41({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0({core.List<core.int> x}) => null;
-  List<Function> m1(int x, [List<Function> x0]) => null;
-  List<T> m2(int x0, [Function x1]) => null;
-  void m3([int x0]) => null;
-  A m4<A>(Function x) => null;
-  int Function({Function x}) m5(int x) => null;
-  int Function(List<T> x) m6(int x) => null;
-  Function Function(int x0, [Function x]) m7(int x) => null;
-  Function Function([core.List<core.int> x0]) m8(int x) => null;
-  List<Function> Function(int x, [int x0]) m9(int x) => null;
-  List<Function> Function(int y, {List<Function> x}) m10(int x) => null;
-  core.List<core.int> Function([int x]) m11(int x) => null;
-  core.List<core.int> Function(List<Function> x0) m12(int x) => null;
-  core.List<core.int> Function(int x, [List<T> x0]) m13(int x) => null;
-  List<T> Function(int x0, {Function x}) m14(int x) => null;
-  List<T> Function([List<T> x]) m15(int x) => null;
-  Function(int y, [Function x]) m16(int x) => null;
-  Function(int x0, [core.List<core.int> x1]) m17(int x) => null;
-  void Function({int x}) m18(int x) => null;
-  void Function(core.List<core.int> x) m19(int x) => null;
-  int Function<A>(List<Function> x) m20(int x) => null;
-  core.List<core.int> Function<A>(core.List<core.int> x) m21(int x) => null;
-  A Function<A>(List<T> x) m22(int x) => null;
-  B Function(Function x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function({core.List<core.int> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function({core.List<core.int> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function({core.List<core.int> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x, [List<Function> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<Function> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x, [List<Function> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x1, [Function x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [Function x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x1, [Function x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x1, [Function x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x1, [Function x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([int x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([int x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([int x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({Function x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({Function x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function({Function x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x1, [Function x]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [Function x]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect
-        .isTrue(m7 is Function Function(int x1, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x1]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x1]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function([core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x, [int x1]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [int x1]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int x, [int x1]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {List<Function> x}) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<Function> x}) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, {List<Function> x})
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([int x]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(List<Function> x1) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x1) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(List<Function> x1) Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x, [List<T> x1]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<T> x1]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x, [List<T> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x, [List<T> x1]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x, [List<T> x1]) Function(int x) l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, {Function x}) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {Function x}) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int x1, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, {Function x}) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, {Function x}) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x]) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, [Function x]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [Function x]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x2, [core.List<core.int> x3]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x2, [core.List<core.int> x3]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x2, [core.List<core.int> x3]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function({int x}) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({int x}) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function({int x}) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<Function> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<Function> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(core.List<core.int> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(core.List<core.int> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(core.List<core.int> x)
-        Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<T> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<T> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        A Function<A>(List<T> x) Function(int x) l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      A Function<A>(List<T> x) Function(int x) l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// B Function(Function x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(Function x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is B Function(Function x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U41().runTests();
-  new U41<int>(tIsInt: true).runTests();
-  new U41<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type42_test.dart b/tests/language/function_type/function_type42_test.dart
deleted file mode 100644
index 2be520f..0000000
--- a/tests/language/function_type/function_type42_test.dart
+++ /dev/null
@@ -1,957 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, {core.List<core.int> x});
-typedef F1<T> = List<Function> Function({List<Function> x});
-typedef F2<T> = List<T> Function(int x, [Function x2]);
-typedef F3<T> = void Function(int x1, [int x2]);
-typedef F4<T> = A Function<A>(List<Function> x);
-typedef F5<T> = int Function({Function x}) Function<B extends core.int>();
-typedef F6<T> = int Function(List<T> x) Function<B extends core.int>();
-typedef F7<T> = Function Function(int x1, [Function x])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function([core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x, [int x1])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int y, {List<Function> x})
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function([int x])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(List<Function> x1)
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int x, [List<T> x1])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x1, {Function x})
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function([List<T> x]) Function<B extends core.int>();
-typedef F16<T> = Function(int y, [Function x]) Function<B extends core.int>();
-typedef F17<T> = Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>();
-typedef F18<T> = void Function({int x}) Function<B extends core.int>();
-typedef F19<T> = void Function(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>(List<Function> x)
-    Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>(List<T> x) Function<B extends core.int>();
-typedef F23<T> = B Function(List<Function> x) Function<B extends core.int>();
-
-int f0(int x0, {core.List<core.int> x}) => null;
-List<Function> f1({List<Function> x}) => null;
-List<int> f2(int x, [Function x0]) => null;
-void f3(int x0, [int x1]) => null;
-A f4<A>(List<Function> x) => null;
-int Function({Function x}) f5<B extends core.int>() => null;
-int Function(List<int> x) f6<B extends core.int>() => null;
-Function Function(int x0, [Function x]) f7<B extends core.int>() => null;
-Function Function([core.List<core.int> x0]) f8<B extends core.int>() => null;
-List<Function> Function(int x, [int x0]) f9<B extends core.int>() => null;
-List<Function> Function(int y, {List<Function> x}) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function([int x]) f11<B extends core.int>() => null;
-core.List<core.int> Function(List<Function> x0) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x, [List<int> x0]) f13<B extends core.int>() =>
-    null;
-List<int> Function(int x0, {Function x}) f14<B extends core.int>() => null;
-List<int> Function([List<int> x]) f15<B extends core.int>() => null;
-Function(int y, [Function x]) f16<B extends core.int>() => null;
-Function(int x0, [core.List<core.int> x1]) f17<B extends core.int>() => null;
-void Function({int x}) f18<B extends core.int>() => null;
-void Function(core.List<core.int> x) f19<B extends core.int>() => null;
-int Function<A>(List<Function> x) f20<B extends core.int>() => null;
-core.List<core.int> Function<A>(core.List<core.int> x)
-    f21<B extends core.int>() => null;
-A Function<A>(List<int> x) f22<B extends core.int>() => null;
-B Function(List<Function> x) f23<B extends core.int>() => null;
-
-class U42<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, {core.List<core.int> x}) x0;
-  List<Function> Function({List<Function> x}) x1;
-  List<T> Function(int x, [Function x2]) x2;
-  void Function(int x1, [int x2]) x3;
-  A Function<A>(List<Function> x) x4;
-  int Function({Function x}) Function<B extends core.int>() x5;
-  int Function(List<T> x) Function<B extends core.int>() x6;
-  Function Function(int x1, [Function x]) Function<B extends core.int>() x7;
-  Function Function([core.List<core.int> x1]) Function<B extends core.int>() x8;
-  List<Function> Function(int x, [int x1]) Function<B extends core.int>() x9;
-  List<Function> Function(int y, {List<Function> x})
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function([int x]) Function<B extends core.int>() x11;
-  core.List<core.int> Function(List<Function> x1) Function<B extends core.int>()
-      x12;
-  core.List<core.int> Function(int x, [List<T> x1])
-      Function<B extends core.int>() x13;
-  List<T> Function(int x1, {Function x}) Function<B extends core.int>() x14;
-  List<T> Function([List<T> x]) Function<B extends core.int>() x15;
-  Function(int y, [Function x]) Function<B extends core.int>() x16;
-  Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>() x17;
-  void Function({int x}) Function<B extends core.int>() x18;
-  void Function(core.List<core.int> x) Function<B extends core.int>() x19;
-  int Function<A>(List<Function> x) Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>(core.List<core.int> x)
-      Function<B extends core.int>() x21;
-  A Function<A>(List<T> x) Function<B extends core.int>() x22;
-  B Function(List<Function> x) Function<B extends core.int>() x23;
-
-  U42({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, {core.List<core.int> x}) => null;
-  List<Function> m1({List<Function> x}) => null;
-  List<T> m2(int x, [Function x0]) => null;
-  void m3(int x0, [int x1]) => null;
-  A m4<A>(List<Function> x) => null;
-  int Function({Function x}) m5<B extends core.int>() => null;
-  int Function(List<T> x) m6<B extends core.int>() => null;
-  Function Function(int x0, [Function x]) m7<B extends core.int>() => null;
-  Function Function([core.List<core.int> x0]) m8<B extends core.int>() => null;
-  List<Function> Function(int x, [int x0]) m9<B extends core.int>() => null;
-  List<Function> Function(int y, {List<Function> x})
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function([int x]) m11<B extends core.int>() => null;
-  core.List<core.int> Function(List<Function> x0) m12<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x, [List<T> x0]) m13<B extends core.int>() =>
-      null;
-  List<T> Function(int x0, {Function x}) m14<B extends core.int>() => null;
-  List<T> Function([List<T> x]) m15<B extends core.int>() => null;
-  Function(int y, [Function x]) m16<B extends core.int>() => null;
-  Function(int x0, [core.List<core.int> x1]) m17<B extends core.int>() => null;
-  void Function({int x}) m18<B extends core.int>() => null;
-  void Function(core.List<core.int> x) m19<B extends core.int>() => null;
-  int Function<A>(List<Function> x) m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>(core.List<core.int> x)
-      m21<B extends core.int>() => null;
-  A Function<A>(List<T> x) m22<B extends core.int>() => null;
-  B Function(List<Function> x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, {core.List<core.int> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, {core.List<core.int> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function({List<Function> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<Function> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function({List<Function> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x, [Function x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [Function x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x, [Function x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x, [Function x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x, [Function x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x1, [int x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x1, [int x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x1, [int x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({Function x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({Function x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function({Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x1, [Function x]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [Function x]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x1]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x1]) Function<B extends core.int>()
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x, [int x1]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [int x1]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x, [int x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {List<Function> x}) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<Function> x})
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x]) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([int x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(List<Function> x1) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x1)
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(List<Function> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x, [List<T> x1]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<T> x1])
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x, [List<T> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x, [List<T> x1])
-            Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x, [List<T> x1])
-          Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, {Function x}) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {Function x}) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, {Function x}) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, {Function x}) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function([List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x]) Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x]) Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, [Function x]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [Function x]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int y, [Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function({int x}) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({int x}) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function({int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<Function> x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<T> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<T> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect
-        .isTrue(m22 is A Function<A>(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        A Function<A>(List<T> x) Function<B extends core.int>() l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      A Function<A>(List<T> x) Function<B extends core.int>() l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// B Function(List<Function> x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(List<Function> x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is B Function(List<Function> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U42().runTests();
-  new U42<int>(tIsInt: true).runTests();
-  new U42<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type43_test.dart b/tests/language/function_type/function_type43_test.dart
deleted file mode 100644
index 7a91cf3..0000000
--- a/tests/language/function_type/function_type43_test.dart
+++ /dev/null
@@ -1,985 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, {core.List<core.int> x});
-typedef F1<T> = List<Function> Function(int x0, {List<Function> x});
-typedef F2<T> = List<T> Function({Function x});
-typedef F3<T> = void Function(int x, [int x2]);
-typedef F4<T> = A Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function({Function x}) Function<B extends core.int>(int x);
-typedef F6<T> = int Function(List<T> x) Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x1, [Function x])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function([core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int x, [int x1])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int y, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function([int x])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(List<Function> x1)
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int x, [List<T> x1])
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int x1, {Function x})
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function([List<T> x]) Function<B extends core.int>(
-    int x);
-typedef F16<T> = Function(int y, [Function x]) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function({int x}) Function<B extends core.int>(int x);
-typedef F19<T> = void Function(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>(List<Function> x) Function<B extends core.int>(
-    int x);
-typedef F21<T> = core.List<core.int> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = A Function<A>(List<T> x) Function<B extends core.int>(int x);
-typedef F23<T> = B Function(List<Function> x) Function<B extends core.int>(
-    int x);
-
-int f0(int y, {core.List<core.int> x}) => null;
-List<Function> f1(int x0, {List<Function> x}) => null;
-List<int> f2({Function x}) => null;
-void f3(int x, [int x0]) => null;
-A f4<A>(core.List<core.int> x) => null;
-int Function({Function x}) f5<B extends core.int>(int x) => null;
-int Function(List<int> x) f6<B extends core.int>(int x) => null;
-Function Function(int x0, [Function x]) f7<B extends core.int>(int x) => null;
-Function Function([core.List<core.int> x0]) f8<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int x, [int x0]) f9<B extends core.int>(int x) => null;
-List<Function> Function(int y, {List<Function> x}) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function([int x]) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(List<Function> x0) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x, [List<int> x0]) f13<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(int x0, {Function x}) f14<B extends core.int>(int x) => null;
-List<int> Function([List<int> x]) f15<B extends core.int>(int x) => null;
-Function(int y, [Function x]) f16<B extends core.int>(int x) => null;
-Function(int x0, [core.List<core.int> x1]) f17<B extends core.int>(int x) =>
-    null;
-void Function({int x}) f18<B extends core.int>(int x) => null;
-void Function(core.List<core.int> x) f19<B extends core.int>(int x) => null;
-int Function<A>(List<Function> x) f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>(core.List<core.int> x) f21<B extends core.int>(
-        int x) =>
-    null;
-A Function<A>(List<int> x) f22<B extends core.int>(int x) => null;
-B Function(List<Function> x) f23<B extends core.int>(int x) => null;
-
-class U43<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, {core.List<core.int> x}) x0;
-  List<Function> Function(int x0, {List<Function> x}) x1;
-  List<T> Function({Function x}) x2;
-  void Function(int x, [int x2]) x3;
-  A Function<A>(core.List<core.int> x) x4;
-  int Function({Function x}) Function<B extends core.int>(int x) x5;
-  int Function(List<T> x) Function<B extends core.int>(int x) x6;
-  Function Function(int x1, [Function x]) Function<B extends core.int>(int x)
-      x7;
-  Function Function([core.List<core.int> x1]) Function<B extends core.int>(
-      int x) x8;
-  List<Function> Function(int x, [int x1]) Function<B extends core.int>(int x)
-      x9;
-  List<Function> Function(int y, {List<Function> x})
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function([int x]) Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(List<Function> x1) Function<B extends core.int>(
-      int x) x12;
-  core.List<core.int> Function(int x, [List<T> x1])
-      Function<B extends core.int>(int x) x13;
-  List<T> Function(int x1, {Function x}) Function<B extends core.int>(int x)
-      x14;
-  List<T> Function([List<T> x]) Function<B extends core.int>(int x) x15;
-  Function(int y, [Function x]) Function<B extends core.int>(int x) x16;
-  Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-      x17;
-  void Function({int x}) Function<B extends core.int>(int x) x18;
-  void Function(core.List<core.int> x) Function<B extends core.int>(int x) x19;
-  int Function<A>(List<Function> x) Function<B extends core.int>(int x) x20;
-  core.List<core.int> Function<A>(core.List<core.int> x)
-      Function<B extends core.int>(int x) x21;
-  A Function<A>(List<T> x) Function<B extends core.int>(int x) x22;
-  B Function(List<Function> x) Function<B extends core.int>(int x) x23;
-
-  U43({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, {core.List<core.int> x}) => null;
-  List<Function> m1(int x0, {List<Function> x}) => null;
-  List<T> m2({Function x}) => null;
-  void m3(int x, [int x0]) => null;
-  A m4<A>(core.List<core.int> x) => null;
-  int Function({Function x}) m5<B extends core.int>(int x) => null;
-  int Function(List<T> x) m6<B extends core.int>(int x) => null;
-  Function Function(int x0, [Function x]) m7<B extends core.int>(int x) => null;
-  Function Function([core.List<core.int> x0]) m8<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x, [int x0]) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int y, {List<Function> x}) m10<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function([int x]) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(List<Function> x0) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x, [List<T> x0]) m13<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(int x0, {Function x}) m14<B extends core.int>(int x) => null;
-  List<T> Function([List<T> x]) m15<B extends core.int>(int x) => null;
-  Function(int y, [Function x]) m16<B extends core.int>(int x) => null;
-  Function(int x0, [core.List<core.int> x1]) m17<B extends core.int>(int x) =>
-      null;
-  void Function({int x}) m18<B extends core.int>(int x) => null;
-  void Function(core.List<core.int> x) m19<B extends core.int>(int x) => null;
-  int Function<A>(List<Function> x) m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>(core.List<core.int> x)
-      m21<B extends core.int>(int x) => null;
-  A Function<A>(List<T> x) m22<B extends core.int>(int x) => null;
-  B Function(List<Function> x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, {core.List<core.int> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, {core.List<core.int> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, {List<Function> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {List<Function> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, {List<Function> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function({Function x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function({Function x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function({Function x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function({Function x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function({Function x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x, [int x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x, [int x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x, [int x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({Function x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({Function x}) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function({Function x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x) Function<B extends core.int>(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x) Function<B extends core.int>(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x1, [Function x]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [Function x]) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x1]) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x, [int x1]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [int x1]) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x, [int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x]) Function<B extends core.int>(int x)
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(List<Function> x1) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x1)
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(List<Function> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x, [List<T> x1])
-            Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x, [List<T> x1])
-          Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, {Function x}) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {Function x}) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, {Function x}) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, {Function x}) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x]) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x]) Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x]) Function<B extends core.int>(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, [Function x]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [Function x]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(
-        int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function({int x}) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({int x}) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function({int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x) Function<B extends core.int>(int x)
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<Function> x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<T> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is A Function<A>(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        A Function<A>(List<T> x) Function<B extends core.int>(int x) l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      A Function<A>(List<T> x) Function<B extends core.int>(int x) l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// B Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(List<Function> x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U43().runTests();
-  new U43<int>(tIsInt: true).runTests();
-  new U43<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type44_test.dart b/tests/language/function_type/function_type44_test.dart
deleted file mode 100644
index 1750315..0000000
--- a/tests/language/function_type/function_type44_test.dart
+++ /dev/null
@@ -1,968 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(List<T> x);
-typedef F1<T> = List<Function> Function(int y, {List<Function> x});
-typedef F2<T> = List<T> Function(int x0, {Function x});
-typedef F3<T> = void Function({int x});
-typedef F4<T> = A Function<A>(List<T> x);
-typedef F5<T> = int Function(int x0, {Function x}) Function();
-typedef F6<T> = int Function([List<T> x]) Function();
-typedef F7<T> = Function Function(int y, [Function x]) Function();
-typedef F8<T> = Function Function(int x1, [core.List<core.int> x2]) Function();
-typedef F9<T> = List<Function> Function({int x}) Function();
-typedef F10<T> = List<Function> Function(core.List<core.int> x) Function();
-typedef F11<T> = core.List<core.int> Function(int x0, [int x]) Function();
-typedef F12<T> = core.List<core.int> Function([List<Function> x1]) Function();
-typedef F13<T> = core.List<core.int> Function({List<T> x}) Function();
-typedef F14<T> = List<T> Function(int y, {Function x}) Function();
-typedef F15<T> = List<T> Function(int x0, [List<T> x]) Function();
-typedef F16<T> = Function(Function x0) Function();
-typedef F17<T> = Function(int x, [core.List<core.int> x2]) Function();
-typedef F18<T> = void Function(int x0, {int x}) Function();
-typedef F19<T> = void Function([core.List<core.int> x]) Function();
-typedef F20<T> = int Function<A>(core.List<core.int> x) Function();
-typedef F21<T> = core.List<core.int> Function<A>(List<T> x) Function();
-typedef F22<T> = A Function<A>() Function();
-typedef F23<T> = B Function(core.List<core.int> x)
-    Function<B extends core.int>();
-
-int f0(List<int> x) => null;
-List<Function> f1(int y, {List<Function> x}) => null;
-List<int> f2(int x0, {Function x}) => null;
-void f3({int x}) => null;
-A f4<A>(List<int> x) => null;
-int Function(int x0, {Function x}) f5() => null;
-int Function([List<int> x]) f6() => null;
-Function Function(int y, [Function x]) f7() => null;
-Function Function(int x0, [core.List<core.int> x1]) f8() => null;
-List<Function> Function({int x}) f9() => null;
-List<Function> Function(core.List<core.int> x) f10() => null;
-core.List<core.int> Function(int x0, [int x]) f11() => null;
-core.List<core.int> Function([List<Function> x0]) f12() => null;
-core.List<core.int> Function({List<int> x}) f13() => null;
-List<int> Function(int y, {Function x}) f14() => null;
-List<int> Function(int x0, [List<int> x]) f15() => null;
-Function(Function x0) f16() => null;
-Function(int x, [core.List<core.int> x0]) f17() => null;
-void Function(int x0, {int x}) f18() => null;
-void Function([core.List<core.int> x]) f19() => null;
-int Function<A>(core.List<core.int> x) f20() => null;
-core.List<core.int> Function<A>(List<int> x) f21() => null;
-A Function<A>() f22() => null;
-B Function(core.List<core.int> x) f23<B extends core.int>() => null;
-
-class U44<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(List<T> x) x0;
-  List<Function> Function(int y, {List<Function> x}) x1;
-  List<T> Function(int x0, {Function x}) x2;
-  void Function({int x}) x3;
-  A Function<A>(List<T> x) x4;
-  int Function(int x0, {Function x}) Function() x5;
-  int Function([List<T> x]) Function() x6;
-  Function Function(int y, [Function x]) Function() x7;
-  Function Function(int x1, [core.List<core.int> x2]) Function() x8;
-  List<Function> Function({int x}) Function() x9;
-  List<Function> Function(core.List<core.int> x) Function() x10;
-  core.List<core.int> Function(int x0, [int x]) Function() x11;
-  core.List<core.int> Function([List<Function> x1]) Function() x12;
-  core.List<core.int> Function({List<T> x}) Function() x13;
-  List<T> Function(int y, {Function x}) Function() x14;
-  List<T> Function(int x0, [List<T> x]) Function() x15;
-  Function(Function x0) Function() x16;
-  Function(int x, [core.List<core.int> x2]) Function() x17;
-  void Function(int x0, {int x}) Function() x18;
-  void Function([core.List<core.int> x]) Function() x19;
-  int Function<A>(core.List<core.int> x) Function() x20;
-  core.List<core.int> Function<A>(List<T> x) Function() x21;
-  A Function<A>() Function() x22;
-  B Function(core.List<core.int> x) Function<B extends core.int>() x23;
-
-  U44({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(List<T> x) => null;
-  List<Function> m1(int y, {List<Function> x}) => null;
-  List<T> m2(int x0, {Function x}) => null;
-  void m3({int x}) => null;
-  A m4<A>(List<T> x) => null;
-  int Function(int x0, {Function x}) m5() => null;
-  int Function([List<T> x]) m6() => null;
-  Function Function(int y, [Function x]) m7() => null;
-  Function Function(int x0, [core.List<core.int> x1]) m8() => null;
-  List<Function> Function({int x}) m9() => null;
-  List<Function> Function(core.List<core.int> x) m10() => null;
-  core.List<core.int> Function(int x0, [int x]) m11() => null;
-  core.List<core.int> Function([List<Function> x0]) m12() => null;
-  core.List<core.int> Function({List<T> x}) m13() => null;
-  List<T> Function(int y, {Function x}) m14() => null;
-  List<T> Function(int x0, [List<T> x]) m15() => null;
-  Function(Function x0) m16() => null;
-  Function(int x, [core.List<core.int> x0]) m17() => null;
-  void Function(int x0, {int x}) m18() => null;
-  void Function([core.List<core.int> x]) m19() => null;
-  int Function<A>(core.List<core.int> x) m20() => null;
-  core.List<core.int> Function<A>(List<T> x) m21() => null;
-  A Function<A>() m22() => null;
-  B Function(core.List<core.int> x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(List<T> x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(List<T> x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(List<T> x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(List<T> x) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(List<T> x) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(int y, {List<Function> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<Function> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, {List<Function> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, {Function x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {Function x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, {Function x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, {Function x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, {Function x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function({int x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function({int x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function({int x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        A Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      A Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(int x0, {Function x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x0, {Function x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x0, {Function x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([List<T> x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x]) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x]) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, [Function x]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [Function x]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [Function x]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [core.List<core.int> x2]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [core.List<core.int> x2]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x1, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function({int x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({int x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function({int x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x0, [int x]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [int x]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x0, [int x]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([List<Function> x1]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x1]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function([List<Function> x1]) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({List<T> x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<T> x}) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function({List<T> x}) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function({List<T> x}) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function({List<T> x}) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {Function x}) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {Function x}) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {Function x}) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {Function x}) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {Function x}) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x0, [List<T> x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [List<T> x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x0, [List<T> x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x0, [List<T> x]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x0, [List<T> x]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x0) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x0) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(Function x0) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [core.List<core.int> x2]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [core.List<core.int> x2]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x0, {int x}) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x0, {int x}) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x0, {int x}) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(core.List<core.int> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(core.List<core.int> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<T> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<T> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        core.List<core.int> Function<A>(List<T> x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      core.List<core.int> Function<A>(List<T> x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// A Function<A>() Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>() Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>() Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(core.List<core.int> x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U44().runTests();
-  new U44<int>(tIsInt: true).runTests();
-  new U44<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type45_test.dart b/tests/language/function_type/function_type45_test.dart
deleted file mode 100644
index 0f3d820..0000000
--- a/tests/language/function_type/function_type45_test.dart
+++ /dev/null
@@ -1,947 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([List<T> x]);
-typedef F1<T> = List<Function> Function(core.List<core.int> x);
-typedef F2<T> = List<T> Function(int y, {Function x});
-typedef F3<T> = void Function(int x0, {int x});
-typedef F4<T> = A Function<A>();
-typedef F5<T> = int Function(int x1, {Function x}) Function(int x);
-typedef F6<T> = int Function([List<T> x]) Function(int x);
-typedef F7<T> = Function Function(int y, [Function x]) Function(int x);
-typedef F8<T> = Function Function(int x2, [core.List<core.int> x3]) Function(
-    int x);
-typedef F9<T> = List<Function> Function({int x}) Function(int x);
-typedef F10<T> = List<Function> Function(core.List<core.int> x) Function(int x);
-typedef F11<T> = core.List<core.int> Function(int x1, [int x]) Function(int x);
-typedef F12<T> = core.List<core.int> Function([List<Function> x1]) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function({List<T> x}) Function(int x);
-typedef F14<T> = List<T> Function(int y, {Function x}) Function(int x);
-typedef F15<T> = List<T> Function(int x1, [List<T> x]) Function(int x);
-typedef F16<T> = Function(Function x1) Function(int x);
-typedef F17<T> = Function(int x, [core.List<core.int> x1]) Function(int x);
-typedef F18<T> = void Function(int x1, {int x}) Function(int x);
-typedef F19<T> = void Function([core.List<core.int> x]) Function(int x);
-typedef F20<T> = int Function<A>(core.List<core.int> x) Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>(List<T> x) Function(int x);
-typedef F22<T> = A Function<A>() Function(int x);
-typedef F23<T> = B Function(core.List<core.int> x) Function<B extends core.int>(
-    int x);
-
-int f0([List<int> x]) => null;
-List<Function> f1(core.List<core.int> x) => null;
-List<int> f2(int y, {Function x}) => null;
-void f3(int x0, {int x}) => null;
-A f4<A>() => null;
-int Function(int x0, {Function x}) f5(int x) => null;
-int Function([List<int> x]) f6(int x) => null;
-Function Function(int y, [Function x]) f7(int x) => null;
-Function Function(int x0, [core.List<core.int> x1]) f8(int x) => null;
-List<Function> Function({int x}) f9(int x) => null;
-List<Function> Function(core.List<core.int> x) f10(int x) => null;
-core.List<core.int> Function(int x0, [int x]) f11(int x) => null;
-core.List<core.int> Function([List<Function> x0]) f12(int x) => null;
-core.List<core.int> Function({List<int> x}) f13(int x) => null;
-List<int> Function(int y, {Function x}) f14(int x) => null;
-List<int> Function(int x0, [List<int> x]) f15(int x) => null;
-Function(Function x0) f16(int x) => null;
-Function(int x, [core.List<core.int> x0]) f17(int x) => null;
-void Function(int x0, {int x}) f18(int x) => null;
-void Function([core.List<core.int> x]) f19(int x) => null;
-int Function<A>(core.List<core.int> x) f20(int x) => null;
-core.List<core.int> Function<A>(List<int> x) f21(int x) => null;
-A Function<A>() f22(int x) => null;
-B Function(core.List<core.int> x) f23<B extends core.int>(int x) => null;
-
-class U45<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([List<T> x]) x0;
-  List<Function> Function(core.List<core.int> x) x1;
-  List<T> Function(int y, {Function x}) x2;
-  void Function(int x0, {int x}) x3;
-  A Function<A>() x4;
-  int Function(int x1, {Function x}) Function(int x) x5;
-  int Function([List<T> x]) Function(int x) x6;
-  Function Function(int y, [Function x]) Function(int x) x7;
-  Function Function(int x2, [core.List<core.int> x3]) Function(int x) x8;
-  List<Function> Function({int x}) Function(int x) x9;
-  List<Function> Function(core.List<core.int> x) Function(int x) x10;
-  core.List<core.int> Function(int x1, [int x]) Function(int x) x11;
-  core.List<core.int> Function([List<Function> x1]) Function(int x) x12;
-  core.List<core.int> Function({List<T> x}) Function(int x) x13;
-  List<T> Function(int y, {Function x}) Function(int x) x14;
-  List<T> Function(int x1, [List<T> x]) Function(int x) x15;
-  Function(Function x1) Function(int x) x16;
-  Function(int x, [core.List<core.int> x1]) Function(int x) x17;
-  void Function(int x1, {int x}) Function(int x) x18;
-  void Function([core.List<core.int> x]) Function(int x) x19;
-  int Function<A>(core.List<core.int> x) Function(int x) x20;
-  core.List<core.int> Function<A>(List<T> x) Function(int x) x21;
-  A Function<A>() Function(int x) x22;
-  B Function(core.List<core.int> x) Function<B extends core.int>(int x) x23;
-
-  U45({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([List<T> x]) => null;
-  List<Function> m1(core.List<core.int> x) => null;
-  List<T> m2(int y, {Function x}) => null;
-  void m3(int x0, {int x}) => null;
-  A m4<A>() => null;
-  int Function(int x0, {Function x}) m5(int x) => null;
-  int Function([List<T> x]) m6(int x) => null;
-  Function Function(int y, [Function x]) m7(int x) => null;
-  Function Function(int x0, [core.List<core.int> x1]) m8(int x) => null;
-  List<Function> Function({int x}) m9(int x) => null;
-  List<Function> Function(core.List<core.int> x) m10(int x) => null;
-  core.List<core.int> Function(int x0, [int x]) m11(int x) => null;
-  core.List<core.int> Function([List<Function> x0]) m12(int x) => null;
-  core.List<core.int> Function({List<T> x}) m13(int x) => null;
-  List<T> Function(int y, {Function x}) m14(int x) => null;
-  List<T> Function(int x0, [List<T> x]) m15(int x) => null;
-  Function(Function x0) m16(int x) => null;
-  Function(int x, [core.List<core.int> x0]) m17(int x) => null;
-  void Function(int x0, {int x}) m18(int x) => null;
-  void Function([core.List<core.int> x]) m19(int x) => null;
-  int Function<A>(core.List<core.int> x) m20(int x) => null;
-  core.List<core.int> Function<A>(List<T> x) m21(int x) => null;
-  A Function<A>() m22(int x) => null;
-  B Function(core.List<core.int> x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([List<T> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([List<T> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([List<T> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function([List<T> x]) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function([List<T> x]) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(core.List<core.int> x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(core.List<core.int> x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, {Function x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {Function x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, {Function x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, {Function x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, {Function x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, {int x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, {int x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, {int x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {Function x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {Function x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x]) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x]) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, [Function x]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [Function x]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [core.List<core.int> x3]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [core.List<core.int> x3]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x2, [core.List<core.int> x3])
-        Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function({int x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({int x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function({int x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1, [int x]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [int x]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x1, [int x]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([List<Function> x1]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x1]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([List<Function> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({List<T> x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<T> x}) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function({List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function({List<T> x}) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function({List<T> x}) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {Function x}) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {Function x}) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {Function x}) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {Function x}) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [List<T> x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<T> x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [List<T> x]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [List<T> x]) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x1) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x1) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(Function x1) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [core.List<core.int> x1]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [core.List<core.int> x1]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x, [core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1, {int x}) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, {int x}) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, {int x}) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect
-        .isTrue(m19 is void Function([core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(core.List<core.int> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(core.List<core.int> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect
-        .isTrue(m20 is int Function<A>(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<T> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<T> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is core.List<core.int> Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        core.List<core.int> Function<A>(List<T> x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      core.List<core.int> Function<A>(List<T> x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// A Function<A>() Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>() Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>() Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(core.List<core.int> x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U45().runTests();
-  new U45<int>(tIsInt: true).runTests();
-  new U45<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type46_test.dart b/tests/language/function_type/function_type46_test.dart
deleted file mode 100644
index 4e2bf95..0000000
--- a/tests/language/function_type/function_type46_test.dart
+++ /dev/null
@@ -1,1017 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, [List<T> x]);
-typedef F1<T> = List<Function> Function([core.List<core.int> x]);
-typedef F2<T> = List<T> Function(List<Function> x);
-typedef F3<T> = void Function(int y, {int x});
-typedef F4<T> = A Function<A>(A x);
-typedef F5<T> = int Function(int x1, {Function x})
-    Function<B extends core.int>();
-typedef F6<T> = int Function([List<T> x]) Function<B extends core.int>();
-typedef F7<T> = Function Function(int y, [Function x])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function({int x}) Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int x1, [int x])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function([List<Function> x1])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function({List<T> x})
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int y, {Function x})
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x1, [List<T> x])
-    Function<B extends core.int>();
-typedef F16<T> = Function(Function x1) Function<B extends core.int>();
-typedef F17<T> = Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F18<T> = void Function(int x1, {int x}) Function<B extends core.int>();
-typedef F19<T> = void Function([core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>(List<T> x)
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>() Function<B extends core.int>();
-typedef F23<T> = B Function(List<T> x) Function<B extends core.int>();
-
-int f0(int x0, [List<int> x]) => null;
-List<Function> f1([core.List<core.int> x]) => null;
-List<int> f2(List<Function> x) => null;
-void f3(int y, {int x}) => null;
-A f4<A>(A x) => null;
-int Function(int x0, {Function x}) f5<B extends core.int>() => null;
-int Function([List<int> x]) f6<B extends core.int>() => null;
-Function Function(int y, [Function x]) f7<B extends core.int>() => null;
-Function Function(int x0, [core.List<core.int> x1]) f8<B extends core.int>() =>
-    null;
-List<Function> Function({int x}) f9<B extends core.int>() => null;
-List<Function> Function(core.List<core.int> x) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x0, [int x]) f11<B extends core.int>() => null;
-core.List<core.int> Function([List<Function> x0]) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function({List<int> x}) f13<B extends core.int>() => null;
-List<int> Function(int y, {Function x}) f14<B extends core.int>() => null;
-List<int> Function(int x0, [List<int> x]) f15<B extends core.int>() => null;
-Function(Function x0) f16<B extends core.int>() => null;
-Function(int x, [core.List<core.int> x0]) f17<B extends core.int>() => null;
-void Function(int x0, {int x}) f18<B extends core.int>() => null;
-void Function([core.List<core.int> x]) f19<B extends core.int>() => null;
-int Function<A>(core.List<core.int> x) f20<B extends core.int>() => null;
-core.List<core.int> Function<A>(List<int> x) f21<B extends core.int>() => null;
-A Function<A>() f22<B extends core.int>() => null;
-B Function(List<int> x) f23<B extends core.int>() => null;
-
-class U46<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, [List<T> x]) x0;
-  List<Function> Function([core.List<core.int> x]) x1;
-  List<T> Function(List<Function> x) x2;
-  void Function(int y, {int x}) x3;
-  A Function<A>(A x) x4;
-  int Function(int x1, {Function x}) Function<B extends core.int>() x5;
-  int Function([List<T> x]) Function<B extends core.int>() x6;
-  Function Function(int y, [Function x]) Function<B extends core.int>() x7;
-  Function Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>() x8;
-  List<Function> Function({int x}) Function<B extends core.int>() x9;
-  List<Function> Function(core.List<core.int> x) Function<B extends core.int>()
-      x10;
-  core.List<core.int> Function(int x1, [int x]) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function([List<Function> x1])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function({List<T> x}) Function<B extends core.int>() x13;
-  List<T> Function(int y, {Function x}) Function<B extends core.int>() x14;
-  List<T> Function(int x1, [List<T> x]) Function<B extends core.int>() x15;
-  Function(Function x1) Function<B extends core.int>() x16;
-  Function(int x, [core.List<core.int> x1]) Function<B extends core.int>() x17;
-  void Function(int x1, {int x}) Function<B extends core.int>() x18;
-  void Function([core.List<core.int> x]) Function<B extends core.int>() x19;
-  int Function<A>(core.List<core.int> x) Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>() x21;
-  A Function<A>() Function<B extends core.int>() x22;
-  B Function(List<T> x) Function<B extends core.int>() x23;
-
-  U46({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [List<T> x]) => null;
-  List<Function> m1([core.List<core.int> x]) => null;
-  List<T> m2(List<Function> x) => null;
-  void m3(int y, {int x}) => null;
-  A m4<A>(A x) => null;
-  int Function(int x0, {Function x}) m5<B extends core.int>() => null;
-  int Function([List<T> x]) m6<B extends core.int>() => null;
-  Function Function(int y, [Function x]) m7<B extends core.int>() => null;
-  Function Function(int x0, [core.List<core.int> x1])
-      m8<B extends core.int>() => null;
-  List<Function> Function({int x}) m9<B extends core.int>() => null;
-  List<Function> Function(core.List<core.int> x) m10<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, [int x]) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function([List<Function> x0]) m12<B extends core.int>() =>
-      null;
-  core.List<core.int> Function({List<T> x}) m13<B extends core.int>() => null;
-  List<T> Function(int y, {Function x}) m14<B extends core.int>() => null;
-  List<T> Function(int x0, [List<T> x]) m15<B extends core.int>() => null;
-  Function(Function x0) m16<B extends core.int>() => null;
-  Function(int x, [core.List<core.int> x0]) m17<B extends core.int>() => null;
-  void Function(int x0, {int x}) m18<B extends core.int>() => null;
-  void Function([core.List<core.int> x]) m19<B extends core.int>() => null;
-  int Function<A>(core.List<core.int> x) m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>(List<T> x) m21<B extends core.int>() => null;
-  A Function<A>() m22<B extends core.int>() => null;
-  B Function(List<T> x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, [List<T> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, [List<T> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, [List<T> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(int x0, [List<T> x]) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(int x0, [List<T> x]) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function([core.List<core.int> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([core.List<core.int> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(List<Function> x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(List<Function> x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(List<Function> x) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(List<Function> x) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, {int x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, {int x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, {int x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {Function x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {Function x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function([List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x]) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x]) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, [Function x]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [Function x]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function({int x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({int x}) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function({int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x)
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1, [int x]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [int x]) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1, [int x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([List<Function> x1]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x1])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({List<T> x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<T> x}) Function<B extends core.int>()
-        l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function({List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function({List<T> x}) Function<B extends core.int>()
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function({List<T> x}) Function<B extends core.int>()
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {Function x}) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {Function x}) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {Function x}) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {Function x}) Function<B extends core.int>() l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [List<T> x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<T> x]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [List<T> x]) Function<B extends core.int>()
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [List<T> x]) Function<B extends core.int>() l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x1) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x1) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(Function x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1, {int x}) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, {int x}) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int x1, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(core.List<core.int> x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>()
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<T> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        core.List<core.int> Function<A>(List<T> x)
-            Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>()
-          l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// A Function<A>() Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>() Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(List<T> x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(List<T> x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        B Function(List<T> x) Function<B extends core.int>() l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      B Function(List<T> x) Function<B extends core.int>() l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U46().runTests();
-  new U46<int>(tIsInt: true).runTests();
-  new U46<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type47_test.dart b/tests/language/function_type/function_type47_test.dart
deleted file mode 100644
index c86205a..0000000
--- a/tests/language/function_type/function_type47_test.dart
+++ /dev/null
@@ -1,1046 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, [List<T> x]);
-typedef F1<T> = List<Function> Function(int x0, [core.List<core.int> x]);
-typedef F2<T> = List<T> Function([List<Function> x]);
-typedef F3<T> = void Function(Function x);
-typedef F4<T> = A Function<A>(List<A> x);
-typedef F5<T> = int Function(int x1, {Function x}) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function([List<T> x]) Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int y, [Function x])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function({int x}) Function<B extends core.int>(
-    int x);
-typedef F10<T> = List<Function> Function(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int x1, [int x])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function([List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function({List<T> x})
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int y, {Function x})
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int x1, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(Function x1) Function<B extends core.int>(int x);
-typedef F17<T> = Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int x1, {int x}) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function([core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F21<T> = core.List<core.int> Function<A>(List<T> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = A Function<A>() Function<B extends core.int>(int x);
-typedef F23<T> = B Function(List<T> x) Function<B extends core.int>(int x);
-
-int f0(int y, [List<int> x]) => null;
-List<Function> f1(int x0, [core.List<core.int> x]) => null;
-List<int> f2([List<Function> x]) => null;
-void f3(Function x) => null;
-A f4<A>(List<A> x) => null;
-int Function(int x0, {Function x}) f5<B extends core.int>(int x) => null;
-int Function([List<int> x]) f6<B extends core.int>(int x) => null;
-Function Function(int y, [Function x]) f7<B extends core.int>(int x) => null;
-Function Function(int x0, [core.List<core.int> x1]) f8<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function({int x}) f9<B extends core.int>(int x) => null;
-List<Function> Function(core.List<core.int> x) f10<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int x0, [int x]) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function([List<Function> x0]) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function({List<int> x}) f13<B extends core.int>(int x) =>
-    null;
-List<int> Function(int y, {Function x}) f14<B extends core.int>(int x) => null;
-List<int> Function(int x0, [List<int> x]) f15<B extends core.int>(int x) =>
-    null;
-Function(Function x0) f16<B extends core.int>(int x) => null;
-Function(int x, [core.List<core.int> x0]) f17<B extends core.int>(int x) =>
-    null;
-void Function(int x0, {int x}) f18<B extends core.int>(int x) => null;
-void Function([core.List<core.int> x]) f19<B extends core.int>(int x) => null;
-int Function<A>(core.List<core.int> x) f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>(List<int> x) f21<B extends core.int>(int x) =>
-    null;
-A Function<A>() f22<B extends core.int>(int x) => null;
-B Function(List<int> x) f23<B extends core.int>(int x) => null;
-
-class U47<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, [List<T> x]) x0;
-  List<Function> Function(int x0, [core.List<core.int> x]) x1;
-  List<T> Function([List<Function> x]) x2;
-  void Function(Function x) x3;
-  A Function<A>(List<A> x) x4;
-  int Function(int x1, {Function x}) Function<B extends core.int>(int x) x5;
-  int Function([List<T> x]) Function<B extends core.int>(int x) x6;
-  Function Function(int y, [Function x]) Function<B extends core.int>(int x) x7;
-  Function Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>(int x) x8;
-  List<Function> Function({int x}) Function<B extends core.int>(int x) x9;
-  List<Function> Function(core.List<core.int> x) Function<B extends core.int>(
-      int x) x10;
-  core.List<core.int> Function(int x1, [int x]) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function([List<Function> x1])
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function({List<T> x}) Function<B extends core.int>(int x)
-      x13;
-  List<T> Function(int y, {Function x}) Function<B extends core.int>(int x) x14;
-  List<T> Function(int x1, [List<T> x]) Function<B extends core.int>(int x) x15;
-  Function(Function x1) Function<B extends core.int>(int x) x16;
-  Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-      x17;
-  void Function(int x1, {int x}) Function<B extends core.int>(int x) x18;
-  void Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-      x19;
-  int Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-      x20;
-  core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>(int x)
-      x21;
-  A Function<A>() Function<B extends core.int>(int x) x22;
-  B Function(List<T> x) Function<B extends core.int>(int x) x23;
-
-  U47({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, [List<T> x]) => null;
-  List<Function> m1(int x0, [core.List<core.int> x]) => null;
-  List<T> m2([List<Function> x]) => null;
-  void m3(Function x) => null;
-  A m4<A>(List<A> x) => null;
-  int Function(int x0, {Function x}) m5<B extends core.int>(int x) => null;
-  int Function([List<T> x]) m6<B extends core.int>(int x) => null;
-  Function Function(int y, [Function x]) m7<B extends core.int>(int x) => null;
-  Function Function(int x0, [core.List<core.int> x1]) m8<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function({int x}) m9<B extends core.int>(int x) => null;
-  List<Function> Function(core.List<core.int> x) m10<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x0, [int x]) m11<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function([List<Function> x0]) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function({List<T> x}) m13<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int y, {Function x}) m14<B extends core.int>(int x) => null;
-  List<T> Function(int x0, [List<T> x]) m15<B extends core.int>(int x) => null;
-  Function(Function x0) m16<B extends core.int>(int x) => null;
-  Function(int x, [core.List<core.int> x0]) m17<B extends core.int>(int x) =>
-      null;
-  void Function(int x0, {int x}) m18<B extends core.int>(int x) => null;
-  void Function([core.List<core.int> x]) m19<B extends core.int>(int x) => null;
-  int Function<A>(core.List<core.int> x) m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>(List<T> x) m21<B extends core.int>(int x) =>
-      null;
-  A Function<A>() m22<B extends core.int>(int x) => null;
-  B Function(List<T> x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int y, [List<T> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<T> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, [List<T> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(int y, [List<T> x]) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(int y, [List<T> x]) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(int x0, [core.List<core.int> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [core.List<core.int> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is List<Function> Function(int x0, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([List<Function> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([List<Function> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([List<Function> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([List<Function> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(Function x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(Function x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(Function x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// A Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    A Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is A Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {Function x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {Function x}) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function([List<T> x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x]) Function<B extends core.int>(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x]) Function<B extends core.int>(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, [Function x]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [Function x]) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function({int x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({int x}) Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function({int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x) Function<B extends core.int>(
-        int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1, [int x]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [int x]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([List<Function> x1]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x1])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function({List<T> x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<T> x}) Function<B extends core.int>(
-        int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function({List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function({List<T> x}) Function<B extends core.int>(
-            int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function({List<T> x}) Function<B extends core.int>(
-          int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {Function x}) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {Function x}) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {Function x}) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {Function x}) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [List<T> x]) Function<B extends core.int>(
-            int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(Function x1) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(Function x1) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(Function x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(
-        int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x1, {int x}) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, {int x}) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-        l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>(
-        int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<T> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>(
-            int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      core.List<core.int> Function<A>(List<T> x) Function<B extends core.int>(
-          int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// A Function<A>() Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>() Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function(List<T> x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function(List<T> x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is B Function(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        B Function(List<T> x) Function<B extends core.int>(int x) l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      B Function(List<T> x) Function<B extends core.int>(int x) l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U47().runTests();
-  new U47<int>(tIsInt: true).runTests();
-  new U47<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type48_test.dart b/tests/language/function_type/function_type48_test.dart
deleted file mode 100644
index 8fa05fd..0000000
--- a/tests/language/function_type/function_type48_test.dart
+++ /dev/null
@@ -1,943 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(List<T> x0);
-typedef F1<T> = List<Function> Function(int y, [core.List<core.int> x]);
-typedef F2<T> = List<T> Function(int x0, [List<Function> x]);
-typedef F3<T> = void Function([Function x]);
-typedef F4<T> = List<A> Function<A>(int x);
-typedef F5<T> = int Function(int y, {Function x}) Function();
-typedef F6<T> = int Function(int x0, [List<T> x]) Function();
-typedef F7<T> = Function Function(Function x0) Function();
-typedef F8<T> = Function Function(int x, [core.List<core.int> x2]) Function();
-typedef F9<T> = List<Function> Function(int x0, {int x}) Function();
-typedef F10<T> = List<Function> Function([core.List<core.int> x]) Function();
-typedef F11<T> = core.List<core.int> Function(int y, [int x]) Function();
-typedef F12<T> = core.List<core.int> Function(int x1, [List<Function> x2])
-    Function();
-typedef F13<T> = core.List<core.int> Function(int x0, {List<T> x}) Function();
-typedef F14<T> = List<T> Function(List<Function> x) Function();
-typedef F15<T> = List<T> Function(int y, [List<T> x]) Function();
-typedef F16<T> = Function([Function x1]) Function();
-typedef F17<T> = Function({core.List<core.int> x}) Function();
-typedef F18<T> = void Function(int y, {int x}) Function();
-typedef F19<T> = void Function(int x0, [core.List<core.int> x]) Function();
-typedef F20<T> = int Function<A>(List<T> x) Function();
-typedef F21<T> = core.List<core.int> Function<A>() Function();
-typedef F22<T> = A Function<A>(A x) Function();
-typedef F23<T> = B Function() Function<B extends core.int>();
-
-int f0(List<int> x0) => null;
-List<Function> f1(int y, [core.List<core.int> x]) => null;
-List<int> f2(int x0, [List<Function> x]) => null;
-void f3([Function x]) => null;
-List<A> f4<A>(int x) => null;
-int Function(int y, {Function x}) f5() => null;
-int Function(int x0, [List<int> x]) f6() => null;
-Function Function(Function x0) f7() => null;
-Function Function(int x, [core.List<core.int> x0]) f8() => null;
-List<Function> Function(int x0, {int x}) f9() => null;
-List<Function> Function([core.List<core.int> x]) f10() => null;
-core.List<core.int> Function(int y, [int x]) f11() => null;
-core.List<core.int> Function(int x0, [List<Function> x1]) f12() => null;
-core.List<core.int> Function(int x0, {List<int> x}) f13() => null;
-List<int> Function(List<Function> x) f14() => null;
-List<int> Function(int y, [List<int> x]) f15() => null;
-Function([Function x0]) f16() => null;
-Function({core.List<core.int> x}) f17() => null;
-void Function(int y, {int x}) f18() => null;
-void Function(int x0, [core.List<core.int> x]) f19() => null;
-int Function<A>(List<int> x) f20() => null;
-core.List<core.int> Function<A>() f21() => null;
-A Function<A>(A x) f22() => null;
-B Function() f23<B extends core.int>() => null;
-
-class U48<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(List<T> x0) x0;
-  List<Function> Function(int y, [core.List<core.int> x]) x1;
-  List<T> Function(int x0, [List<Function> x]) x2;
-  void Function([Function x]) x3;
-  List<A> Function<A>(int x) x4;
-  int Function(int y, {Function x}) Function() x5;
-  int Function(int x0, [List<T> x]) Function() x6;
-  Function Function(Function x0) Function() x7;
-  Function Function(int x, [core.List<core.int> x2]) Function() x8;
-  List<Function> Function(int x0, {int x}) Function() x9;
-  List<Function> Function([core.List<core.int> x]) Function() x10;
-  core.List<core.int> Function(int y, [int x]) Function() x11;
-  core.List<core.int> Function(int x1, [List<Function> x2]) Function() x12;
-  core.List<core.int> Function(int x0, {List<T> x}) Function() x13;
-  List<T> Function(List<Function> x) Function() x14;
-  List<T> Function(int y, [List<T> x]) Function() x15;
-  Function([Function x1]) Function() x16;
-  Function({core.List<core.int> x}) Function() x17;
-  void Function(int y, {int x}) Function() x18;
-  void Function(int x0, [core.List<core.int> x]) Function() x19;
-  int Function<A>(List<T> x) Function() x20;
-  core.List<core.int> Function<A>() Function() x21;
-  A Function<A>(A x) Function() x22;
-  B Function() Function<B extends core.int>() x23;
-
-  U48({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(List<T> x0) => null;
-  List<Function> m1(int y, [core.List<core.int> x]) => null;
-  List<T> m2(int x0, [List<Function> x]) => null;
-  void m3([Function x]) => null;
-  List<A> m4<A>(int x) => null;
-  int Function(int y, {Function x}) m5() => null;
-  int Function(int x0, [List<T> x]) m6() => null;
-  Function Function(Function x0) m7() => null;
-  Function Function(int x, [core.List<core.int> x0]) m8() => null;
-  List<Function> Function(int x0, {int x}) m9() => null;
-  List<Function> Function([core.List<core.int> x]) m10() => null;
-  core.List<core.int> Function(int y, [int x]) m11() => null;
-  core.List<core.int> Function(int x0, [List<Function> x1]) m12() => null;
-  core.List<core.int> Function(int x0, {List<T> x}) m13() => null;
-  List<T> Function(List<Function> x) m14() => null;
-  List<T> Function(int y, [List<T> x]) m15() => null;
-  Function([Function x0]) m16() => null;
-  Function({core.List<core.int> x}) m17() => null;
-  void Function(int y, {int x}) m18() => null;
-  void Function(int x0, [core.List<core.int> x]) m19() => null;
-  int Function<A>(List<T> x) m20() => null;
-  core.List<core.int> Function<A>() m21() => null;
-  A Function<A>(A x) m22() => null;
-  B Function() m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(List<T> x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(List<T> x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(List<T> x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(List<T> x0) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(List<T> x0) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(int y, [core.List<core.int> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [core.List<core.int> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is List<Function> Function(int y, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, [List<Function> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [List<Function> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, [List<Function> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, [List<Function> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, [List<Function> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([Function x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([Function x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([Function x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {Function x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {Function x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {Function x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x0, [List<T> x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x0, [List<T> x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x0, [List<T> x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x0, [List<T> x]) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x0, [List<T> x]) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(Function x0) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x0) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(Function x0) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [core.List<core.int> x2]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [core.List<core.int> x2]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x0, {int x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {int x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x0, {int x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function([core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, [int x]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [int x]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect
-        .isTrue(m11 is core.List<core.int> Function(int y, [int x]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<Function> x2]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<Function> x2]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [List<Function> x2])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x0, {List<T> x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {List<T> x}) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function(int x0, {List<T> x}) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x0, {List<T> x}) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x0, {List<T> x}) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [List<T> x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<T> x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, [List<T> x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [List<T> x]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [List<T> x]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x1]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x1]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([Function x1]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({core.List<core.int> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({core.List<core.int> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, {int x}) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {int x}) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, {int x}) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x0, [core.List<core.int> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x0, [core.List<core.int> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x0, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<T> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<T> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        int Function<A>(List<T> x) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      int Function<A>(List<T> x) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// core.List<core.int> Function<A>() Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>() Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>() Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(A x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(A x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(A x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function() Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function() Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U48().runTests();
-  new U48<int>(tIsInt: true).runTests();
-  new U48<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type49_test.dart b/tests/language/function_type/function_type49_test.dart
deleted file mode 100644
index 76dbc5f..0000000
--- a/tests/language/function_type/function_type49_test.dart
+++ /dev/null
@@ -1,948 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([List<T> x1]);
-typedef F1<T> = List<Function> Function(core.List<core.int> x0);
-typedef F2<T> = List<T> Function(int y, [List<Function> x]);
-typedef F3<T> = void Function(int x0, [Function x]);
-typedef F4<T> = List<A> Function<A>(Function x);
-typedef F5<T> = int Function(int y, {Function x}) Function(int x);
-typedef F6<T> = int Function(int x1, [List<T> x]) Function(int x);
-typedef F7<T> = Function Function(Function x1) Function(int x);
-typedef F8<T> = Function Function(int x, [core.List<core.int> x1]) Function(
-    int x);
-typedef F9<T> = List<Function> Function(int x1, {int x}) Function(int x);
-typedef F10<T> = List<Function> Function([core.List<core.int> x]) Function(
-    int x);
-typedef F11<T> = core.List<core.int> Function(int y, [int x]) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x2, [List<Function> x3])
-    Function(int x);
-typedef F13<T> = core.List<core.int> Function(int x1, {List<T> x}) Function(
-    int x);
-typedef F14<T> = List<T> Function(List<Function> x) Function(int x);
-typedef F15<T> = List<T> Function(int y, [List<T> x]) Function(int x);
-typedef F16<T> = Function([Function x1]) Function(int x);
-typedef F17<T> = Function({core.List<core.int> x}) Function(int x);
-typedef F18<T> = void Function(int y, {int x}) Function(int x);
-typedef F19<T> = void Function(int x1, [core.List<core.int> x]) Function(int x);
-typedef F20<T> = int Function<A>(List<T> x) Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>() Function(int x);
-typedef F22<T> = A Function<A>(A x) Function(int x);
-typedef F23<T> = B Function() Function<B extends core.int>(int x);
-
-int f0([List<int> x0]) => null;
-List<Function> f1(core.List<core.int> x0) => null;
-List<int> f2(int y, [List<Function> x]) => null;
-void f3(int x0, [Function x]) => null;
-List<A> f4<A>(Function x) => null;
-int Function(int y, {Function x}) f5(int x) => null;
-int Function(int x0, [List<int> x]) f6(int x) => null;
-Function Function(Function x0) f7(int x) => null;
-Function Function(int x, [core.List<core.int> x0]) f8(int x) => null;
-List<Function> Function(int x0, {int x}) f9(int x) => null;
-List<Function> Function([core.List<core.int> x]) f10(int x) => null;
-core.List<core.int> Function(int y, [int x]) f11(int x) => null;
-core.List<core.int> Function(int x0, [List<Function> x1]) f12(int x) => null;
-core.List<core.int> Function(int x0, {List<int> x}) f13(int x) => null;
-List<int> Function(List<Function> x) f14(int x) => null;
-List<int> Function(int y, [List<int> x]) f15(int x) => null;
-Function([Function x0]) f16(int x) => null;
-Function({core.List<core.int> x}) f17(int x) => null;
-void Function(int y, {int x}) f18(int x) => null;
-void Function(int x0, [core.List<core.int> x]) f19(int x) => null;
-int Function<A>(List<int> x) f20(int x) => null;
-core.List<core.int> Function<A>() f21(int x) => null;
-A Function<A>(A x) f22(int x) => null;
-B Function() f23<B extends core.int>(int x) => null;
-
-class U49<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([List<T> x1]) x0;
-  List<Function> Function(core.List<core.int> x0) x1;
-  List<T> Function(int y, [List<Function> x]) x2;
-  void Function(int x0, [Function x]) x3;
-  List<A> Function<A>(Function x) x4;
-  int Function(int y, {Function x}) Function(int x) x5;
-  int Function(int x1, [List<T> x]) Function(int x) x6;
-  Function Function(Function x1) Function(int x) x7;
-  Function Function(int x, [core.List<core.int> x1]) Function(int x) x8;
-  List<Function> Function(int x1, {int x}) Function(int x) x9;
-  List<Function> Function([core.List<core.int> x]) Function(int x) x10;
-  core.List<core.int> Function(int y, [int x]) Function(int x) x11;
-  core.List<core.int> Function(int x2, [List<Function> x3]) Function(int x) x12;
-  core.List<core.int> Function(int x1, {List<T> x}) Function(int x) x13;
-  List<T> Function(List<Function> x) Function(int x) x14;
-  List<T> Function(int y, [List<T> x]) Function(int x) x15;
-  Function([Function x1]) Function(int x) x16;
-  Function({core.List<core.int> x}) Function(int x) x17;
-  void Function(int y, {int x}) Function(int x) x18;
-  void Function(int x1, [core.List<core.int> x]) Function(int x) x19;
-  int Function<A>(List<T> x) Function(int x) x20;
-  core.List<core.int> Function<A>() Function(int x) x21;
-  A Function<A>(A x) Function(int x) x22;
-  B Function() Function<B extends core.int>(int x) x23;
-
-  U49({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([List<T> x0]) => null;
-  List<Function> m1(core.List<core.int> x0) => null;
-  List<T> m2(int y, [List<Function> x]) => null;
-  void m3(int x0, [Function x]) => null;
-  List<A> m4<A>(Function x) => null;
-  int Function(int y, {Function x}) m5(int x) => null;
-  int Function(int x0, [List<T> x]) m6(int x) => null;
-  Function Function(Function x0) m7(int x) => null;
-  Function Function(int x, [core.List<core.int> x0]) m8(int x) => null;
-  List<Function> Function(int x0, {int x}) m9(int x) => null;
-  List<Function> Function([core.List<core.int> x]) m10(int x) => null;
-  core.List<core.int> Function(int y, [int x]) m11(int x) => null;
-  core.List<core.int> Function(int x0, [List<Function> x1]) m12(int x) => null;
-  core.List<core.int> Function(int x0, {List<T> x}) m13(int x) => null;
-  List<T> Function(List<Function> x) m14(int x) => null;
-  List<T> Function(int y, [List<T> x]) m15(int x) => null;
-  Function([Function x0]) m16(int x) => null;
-  Function({core.List<core.int> x}) m17(int x) => null;
-  void Function(int y, {int x}) m18(int x) => null;
-  void Function(int x0, [core.List<core.int> x]) m19(int x) => null;
-  int Function<A>(List<T> x) m20(int x) => null;
-  core.List<core.int> Function<A>() m21(int x) => null;
-  A Function<A>(A x) m22(int x) => null;
-  B Function() m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([List<T> x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([List<T> x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([List<T> x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function([List<T> x1]) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function([List<T> x1]) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(core.List<core.int> x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(core.List<core.int> x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, [List<Function> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<Function> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, [List<Function> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, [List<Function> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, [List<Function> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, [Function x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, [Function x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, [Function x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {Function x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {Function x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [List<T> x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<T> x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x1, [List<T> x]) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x1, [List<T> x]) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(Function x1) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x1) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(Function x1) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [core.List<core.int> x1]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [core.List<core.int> x1]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [core.List<core.int> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1, {int x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {int x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int x1, {int x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, [int x]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [int x]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int y, [int x]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x2, [List<Function> x3]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [List<Function> x3]) Function(int x)
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2,
-            [List<Function> x3])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, {List<T> x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {List<T> x}) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1, {List<T> x})
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x1, {List<T> x}) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x1, {List<T> x}) Function(int x) l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [List<T> x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<T> x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [List<T> x]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [List<T> x]) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x1]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x1]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([Function x1]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({core.List<core.int> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({core.List<core.int> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, {int x}) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {int x}) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, {int x}) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [core.List<core.int> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [core.List<core.int> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x1, [core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<T> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<T> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        int Function<A>(List<T> x) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      int Function<A>(List<T> x) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// core.List<core.int> Function<A>() Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>() Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>() Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(A x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(A x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// B Function() Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    B Function() Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is B Function() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U49().runTests();
-  new U49<int>(tIsInt: true).runTests();
-  new U49<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type4_test.dart b/tests/language/function_type/function_type4_test.dart
deleted file mode 100644
index 317bb69..0000000
--- a/tests/language/function_type/function_type4_test.dart
+++ /dev/null
@@ -1,973 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0);
-typedef F1<T> = Function Function(List<T> x0);
-typedef F2<T> = core.List<core.int> Function(int y, [core.List<core.int> x]);
-typedef F3<T> = Function(int x0, [List<Function> x]);
-typedef F4<T> = Function Function<A>(List<T> x);
-typedef F5<T> = int Function(int y, {int x}) Function();
-typedef F6<T> = int Function(int x0, [core.List<core.int> x]) Function();
-typedef F7<T> = Function Function(int x0) Function();
-typedef F8<T> = Function Function(int x, [List<Function> x2]) Function();
-typedef F9<T> = Function Function(int y, {List<T> x}) Function();
-typedef F10<T> = List<Function> Function([List<Function> x]) Function();
-typedef F11<T> = List<Function> Function(List<T> x0) Function();
-typedef F12<T> = core.List<core.int> Function(int x1, [Function x2]) Function();
-typedef F13<T> = core.List<core.int> Function(int x0, {core.List<core.int> x})
-    Function();
-typedef F14<T> = List<T> Function(Function x) Function();
-typedef F15<T> = List<T> Function(int y, [core.List<core.int> x]) Function();
-typedef F16<T> = Function([int x1]) Function();
-typedef F17<T> = Function({List<Function> x}) Function();
-typedef F18<T> = Function() Function();
-typedef F19<T> = void Function(int x0, [List<Function> x]) Function();
-typedef F20<T> = void Function([List<T> x1]) Function();
-typedef F21<T> = List<Function> Function<A>(List<Function> x) Function();
-typedef F22<T> = Function<A>(core.List<core.int> x) Function();
-typedef F23<T> = void Function<A>(List<T> x) Function();
-
-int f0(int x0) => null;
-Function f1(List<int> x0) => null;
-core.List<core.int> f2(int y, [core.List<core.int> x]) => null;
-f3(int x0, [List<Function> x]) => null;
-Function f4<A>(List<int> x) => null;
-int Function(int y, {int x}) f5() => null;
-int Function(int x0, [core.List<core.int> x]) f6() => null;
-Function Function(int x0) f7() => null;
-Function Function(int x, [List<Function> x0]) f8() => null;
-Function Function(int y, {List<int> x}) f9() => null;
-List<Function> Function([List<Function> x]) f10() => null;
-List<Function> Function(List<int> x0) f11() => null;
-core.List<core.int> Function(int x0, [Function x1]) f12() => null;
-core.List<core.int> Function(int x0, {core.List<core.int> x}) f13() => null;
-List<int> Function(Function x) f14() => null;
-List<int> Function(int y, [core.List<core.int> x]) f15() => null;
-Function([int x0]) f16() => null;
-Function({List<Function> x}) f17() => null;
-Function() f18() => null;
-void Function(int x0, [List<Function> x]) f19() => null;
-void Function([List<int> x0]) f20() => null;
-List<Function> Function<A>(List<Function> x) f21() => null;
-Function<A>(core.List<core.int> x) f22() => null;
-void Function<A>(List<int> x) f23() => null;
-
-class U4<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0) x0;
-  Function Function(List<T> x0) x1;
-  core.List<core.int> Function(int y, [core.List<core.int> x]) x2;
-  Function(int x0, [List<Function> x]) x3;
-  Function Function<A>(List<T> x) x4;
-  int Function(int y, {int x}) Function() x5;
-  int Function(int x0, [core.List<core.int> x]) Function() x6;
-  Function Function(int x0) Function() x7;
-  Function Function(int x, [List<Function> x2]) Function() x8;
-  Function Function(int y, {List<T> x}) Function() x9;
-  List<Function> Function([List<Function> x]) Function() x10;
-  List<Function> Function(List<T> x0) Function() x11;
-  core.List<core.int> Function(int x1, [Function x2]) Function() x12;
-  core.List<core.int> Function(int x0, {core.List<core.int> x}) Function() x13;
-  List<T> Function(Function x) Function() x14;
-  List<T> Function(int y, [core.List<core.int> x]) Function() x15;
-  Function([int x1]) Function() x16;
-  Function({List<Function> x}) Function() x17;
-  Function() Function() x18;
-  void Function(int x0, [List<Function> x]) Function() x19;
-  void Function([List<T> x1]) Function() x20;
-  List<Function> Function<A>(List<Function> x) Function() x21;
-  Function<A>(core.List<core.int> x) Function() x22;
-  void Function<A>(List<T> x) Function() x23;
-
-  U4({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0) => null;
-  Function m1(List<T> x0) => null;
-  core.List<core.int> m2(int y, [core.List<core.int> x]) => null;
-  m3(int x0, [List<Function> x]) => null;
-  Function m4<A>(List<T> x) => null;
-  int Function(int y, {int x}) m5() => null;
-  int Function(int x0, [core.List<core.int> x]) m6() => null;
-  Function Function(int x0) m7() => null;
-  Function Function(int x, [List<Function> x0]) m8() => null;
-  Function Function(int y, {List<T> x}) m9() => null;
-  List<Function> Function([List<Function> x]) m10() => null;
-  List<Function> Function(List<T> x0) m11() => null;
-  core.List<core.int> Function(int x0, [Function x1]) m12() => null;
-  core.List<core.int> Function(int x0, {core.List<core.int> x}) m13() => null;
-  List<T> Function(Function x) m14() => null;
-  List<T> Function(int y, [core.List<core.int> x]) m15() => null;
-  Function([int x0]) m16() => null;
-  Function({List<Function> x}) m17() => null;
-  Function() m18() => null;
-  void Function(int x0, [List<Function> x]) m19() => null;
-  void Function([List<T> x0]) m20() => null;
-  List<Function> Function<A>(List<Function> x) m21() => null;
-  Function<A>(core.List<core.int> x) m22() => null;
-  void Function<A>(List<T> x) m23() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(List<T> x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(List<T> x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(List<T> x0) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(List<T> x0) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, [core.List<core.int> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [core.List<core.int> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(
-        m2 is core.List<core.int> Function(int y, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int x0, [List<Function> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x0, [List<Function> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x0, [List<Function> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        Function Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      Function Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(int y, {int x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {int x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {int x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x0, [core.List<core.int> x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x0, [core.List<core.int> x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function(int x0, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x0) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x0) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x0) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<Function> x2]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<Function> x2]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect
-        .isTrue(m8 is Function Function(int x, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int y, {List<T> x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<T> x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int y, {List<T> x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int y, {List<T> x}) Function() l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int y, {List<T> x}) Function() l9 = m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function([List<Function> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect
-        .isTrue(m10 is List<Function> Function([List<Function> x]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(List<T> x0) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x0) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(List<T> x0) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(List<T> x0) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(List<T> x0) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, [Function x2]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [Function x2]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(int x1, [Function x2]) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x0, {core.List<core.int> x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {core.List<core.int> x}) Function()
-        l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x0,
-            {core.List<core.int> x})
-        Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(Function x) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(Function x) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [core.List<core.int> x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [core.List<core.int> x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(int y, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [core.List<core.int> x]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [core.List<core.int> x]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([int x1]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([int x1]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([int x1]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<Function> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<Function> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({List<Function> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function() Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function() Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is Function() Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x0, [List<Function> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x0, [List<Function> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x0, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function([List<T> x1]) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function([List<T> x1]) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function([List<T> x1]) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function([List<T> x1]) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function([List<T> x1]) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<Function> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<Function> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect
-        .isTrue(m21 is List<Function> Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(core.List<core.int> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(core.List<core.int> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<T> x) Function()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<T> x) Function() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        void Function<A>(List<T> x) Function() l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      void Function<A>(List<T> x) Function() l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U4().runTests();
-  new U4<int>(tIsInt: true).runTests();
-  new U4<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type50_test.dart b/tests/language/function_type/function_type50_test.dart
deleted file mode 100644
index f69caa7..0000000
--- a/tests/language/function_type/function_type50_test.dart
+++ /dev/null
@@ -1,963 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x1, [List<T> x2]);
-typedef F1<T> = List<Function> Function([core.List<core.int> x1]);
-typedef F2<T> = List<T> Function(List<Function> x0);
-typedef F3<T> = void Function(int y, [Function x]);
-typedef F4<T> = List<A> Function<A>(List<Function> x);
-typedef F5<T> = int Function(int y, {Function x})
-    Function<B extends core.int>();
-typedef F6<T> = int Function(int x1, [List<T> x])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(Function x1) Function<B extends core.int>();
-typedef F8<T> = Function Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x1, {int x})
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function([core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int y, [int x])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x2, [List<Function> x3])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int x1, {List<T> x})
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(List<Function> x)
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int y, [List<T> x])
-    Function<B extends core.int>();
-typedef F16<T> = Function([Function x1]) Function<B extends core.int>();
-typedef F17<T> = Function({core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F18<T> = void Function(int y, {int x}) Function<B extends core.int>();
-typedef F19<T> = void Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>(List<T> x) Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>()
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>(A x) Function<B extends core.int>();
-
-int f0(int x0, [List<int> x1]) => null;
-List<Function> f1([core.List<core.int> x0]) => null;
-List<int> f2(List<Function> x0) => null;
-void f3(int y, [Function x]) => null;
-List<A> f4<A>(List<Function> x) => null;
-int Function(int y, {Function x}) f5<B extends core.int>() => null;
-int Function(int x0, [List<int> x]) f6<B extends core.int>() => null;
-Function Function(Function x0) f7<B extends core.int>() => null;
-Function Function(int x, [core.List<core.int> x0]) f8<B extends core.int>() =>
-    null;
-List<Function> Function(int x0, {int x}) f9<B extends core.int>() => null;
-List<Function> Function([core.List<core.int> x]) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int y, [int x]) f11<B extends core.int>() => null;
-core.List<core.int> Function(int x0, [List<Function> x1])
-    f12<B extends core.int>() => null;
-core.List<core.int> Function(int x0, {List<int> x}) f13<B extends core.int>() =>
-    null;
-List<int> Function(List<Function> x) f14<B extends core.int>() => null;
-List<int> Function(int y, [List<int> x]) f15<B extends core.int>() => null;
-Function([Function x0]) f16<B extends core.int>() => null;
-Function({core.List<core.int> x}) f17<B extends core.int>() => null;
-void Function(int y, {int x}) f18<B extends core.int>() => null;
-void Function(int x0, [core.List<core.int> x]) f19<B extends core.int>() =>
-    null;
-int Function<A>(List<int> x) f20<B extends core.int>() => null;
-core.List<core.int> Function<A>() f21<B extends core.int>() => null;
-A Function<A>(A x) f22<B extends core.int>() => null;
-
-class U50<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x1, [List<T> x2]) x0;
-  List<Function> Function([core.List<core.int> x1]) x1;
-  List<T> Function(List<Function> x0) x2;
-  void Function(int y, [Function x]) x3;
-  List<A> Function<A>(List<Function> x) x4;
-  int Function(int y, {Function x}) Function<B extends core.int>() x5;
-  int Function(int x1, [List<T> x]) Function<B extends core.int>() x6;
-  Function Function(Function x1) Function<B extends core.int>() x7;
-  Function Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>() x8;
-  List<Function> Function(int x1, {int x}) Function<B extends core.int>() x9;
-  List<Function> Function([core.List<core.int> x])
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function(int y, [int x]) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function(int x2, [List<Function> x3])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function(int x1, {List<T> x})
-      Function<B extends core.int>() x13;
-  List<T> Function(List<Function> x) Function<B extends core.int>() x14;
-  List<T> Function(int y, [List<T> x]) Function<B extends core.int>() x15;
-  Function([Function x1]) Function<B extends core.int>() x16;
-  Function({core.List<core.int> x}) Function<B extends core.int>() x17;
-  void Function(int y, {int x}) Function<B extends core.int>() x18;
-  void Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-      x19;
-  int Function<A>(List<T> x) Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>() Function<B extends core.int>() x21;
-  A Function<A>(A x) Function<B extends core.int>() x22;
-
-  U50({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [List<T> x1]) => null;
-  List<Function> m1([core.List<core.int> x0]) => null;
-  List<T> m2(List<Function> x0) => null;
-  void m3(int y, [Function x]) => null;
-  List<A> m4<A>(List<Function> x) => null;
-  int Function(int y, {Function x}) m5<B extends core.int>() => null;
-  int Function(int x0, [List<T> x]) m6<B extends core.int>() => null;
-  Function Function(Function x0) m7<B extends core.int>() => null;
-  Function Function(int x, [core.List<core.int> x0]) m8<B extends core.int>() =>
-      null;
-  List<Function> Function(int x0, {int x}) m9<B extends core.int>() => null;
-  List<Function> Function([core.List<core.int> x]) m10<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int y, [int x]) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, [List<Function> x1])
-      m12<B extends core.int>() => null;
-  core.List<core.int> Function(int x0, {List<T> x}) m13<B extends core.int>() =>
-      null;
-  List<T> Function(List<Function> x) m14<B extends core.int>() => null;
-  List<T> Function(int y, [List<T> x]) m15<B extends core.int>() => null;
-  Function([Function x0]) m16<B extends core.int>() => null;
-  Function({core.List<core.int> x}) m17<B extends core.int>() => null;
-  void Function(int y, {int x}) m18<B extends core.int>() => null;
-  void Function(int x0, [core.List<core.int> x]) m19<B extends core.int>() =>
-      null;
-  int Function<A>(List<T> x) m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>() m21<B extends core.int>() => null;
-  A Function<A>(A x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// int Function(int x1, [List<T> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<T> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x1, [List<T> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(int x1, [List<T> x2]) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(int x1, [List<T> x2]) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function([core.List<core.int> x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([core.List<core.int> x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(List<Function> x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(List<Function> x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(List<Function> x0) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(List<Function> x0) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, [Function x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, [Function x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, [Function x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {Function x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {Function x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(int y, {Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [List<T> x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<T> x]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x1, [List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x1, [List<T> x]) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x1, [List<T> x]) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(Function x1) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x1) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function(Function x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1, {int x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {int x}) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, {int x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, [int x]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [int x]) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int y, [int x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2,
-            [List<Function> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, {List<T> x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {List<T> x})
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x1, {List<T> x})
-            Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x1, {List<T> x})
-          Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x) Function<B extends core.int>() l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [List<T> x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<T> x]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [List<T> x]) Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [List<T> x]) Function<B extends core.int>() l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x1]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x1]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect
-        .isTrue(m16 is Function([Function x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({core.List<core.int> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({core.List<core.int> x}) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, {int x}) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {int x}) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(int y, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<T> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<T> x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        int Function<A>(List<T> x) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      int Function<A>(List<T> x) Function<B extends core.int>() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// core.List<core.int> Function<A>() Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>() Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>()
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(A x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(A x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U50().runTests();
-  new U50<int>(tIsInt: true).runTests();
-  new U50<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type51_test.dart b/tests/language/function_type/function_type51_test.dart
deleted file mode 100644
index c73c0b1..0000000
--- a/tests/language/function_type/function_type51_test.dart
+++ /dev/null
@@ -1,983 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x, [List<T> x2]);
-typedef F1<T> = List<Function> Function(int x1, [core.List<core.int> x2]);
-typedef F2<T> = List<T> Function([List<Function> x1]);
-typedef F3<T> = void Function(Function x0);
-typedef F4<T> = List<A> Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function(int y, {Function x}) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function(int x1, [List<T> x]) Function<B extends core.int>(
-    int x);
-typedef F7<T> = Function Function(Function x1) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int x1, {int x})
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function([core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int y, [int x])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x2, [List<Function> x3])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int x1, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int y, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function([Function x1]) Function<B extends core.int>(int x);
-typedef F17<T> = Function({core.List<core.int> x}) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function(int y, {int x}) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>(List<T> x) Function<B extends core.int>(int x);
-typedef F21<T> = core.List<core.int> Function<A>() Function<B extends core.int>(
-    int x);
-typedef F22<T> = A Function<A>(A x) Function<B extends core.int>(int x);
-
-int f0(int x, [List<int> x0]) => null;
-List<Function> f1(int x0, [core.List<core.int> x1]) => null;
-List<int> f2([List<Function> x0]) => null;
-void f3(Function x0) => null;
-List<A> f4<A>(core.List<core.int> x) => null;
-int Function(int y, {Function x}) f5<B extends core.int>(int x) => null;
-int Function(int x0, [List<int> x]) f6<B extends core.int>(int x) => null;
-Function Function(Function x0) f7<B extends core.int>(int x) => null;
-Function Function(int x, [core.List<core.int> x0]) f8<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function(int x0, {int x}) f9<B extends core.int>(int x) => null;
-List<Function> Function([core.List<core.int> x]) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int y, [int x]) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int x0, [List<Function> x1])
-    f12<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x0, {List<int> x}) f13<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(List<Function> x) f14<B extends core.int>(int x) => null;
-List<int> Function(int y, [List<int> x]) f15<B extends core.int>(int x) => null;
-Function([Function x0]) f16<B extends core.int>(int x) => null;
-Function({core.List<core.int> x}) f17<B extends core.int>(int x) => null;
-void Function(int y, {int x}) f18<B extends core.int>(int x) => null;
-void Function(int x0, [core.List<core.int> x]) f19<B extends core.int>(int x) =>
-    null;
-int Function<A>(List<int> x) f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>() f21<B extends core.int>(int x) => null;
-A Function<A>(A x) f22<B extends core.int>(int x) => null;
-
-class U51<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x, [List<T> x2]) x0;
-  List<Function> Function(int x1, [core.List<core.int> x2]) x1;
-  List<T> Function([List<Function> x1]) x2;
-  void Function(Function x0) x3;
-  List<A> Function<A>(core.List<core.int> x) x4;
-  int Function(int y, {Function x}) Function<B extends core.int>(int x) x5;
-  int Function(int x1, [List<T> x]) Function<B extends core.int>(int x) x6;
-  Function Function(Function x1) Function<B extends core.int>(int x) x7;
-  Function Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>(int x) x8;
-  List<Function> Function(int x1, {int x}) Function<B extends core.int>(int x)
-      x9;
-  List<Function> Function([core.List<core.int> x]) Function<B extends core.int>(
-      int x) x10;
-  core.List<core.int> Function(int y, [int x]) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function(int x2, [List<Function> x3])
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function(int x1, {List<T> x})
-      Function<B extends core.int>(int x) x13;
-  List<T> Function(List<Function> x) Function<B extends core.int>(int x) x14;
-  List<T> Function(int y, [List<T> x]) Function<B extends core.int>(int x) x15;
-  Function([Function x1]) Function<B extends core.int>(int x) x16;
-  Function({core.List<core.int> x}) Function<B extends core.int>(int x) x17;
-  void Function(int y, {int x}) Function<B extends core.int>(int x) x18;
-  void Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(
-      int x) x19;
-  int Function<A>(List<T> x) Function<B extends core.int>(int x) x20;
-  core.List<core.int> Function<A>() Function<B extends core.int>(int x) x21;
-  A Function<A>(A x) Function<B extends core.int>(int x) x22;
-
-  U51({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x, [List<T> x0]) => null;
-  List<Function> m1(int x0, [core.List<core.int> x1]) => null;
-  List<T> m2([List<Function> x0]) => null;
-  void m3(Function x0) => null;
-  List<A> m4<A>(core.List<core.int> x) => null;
-  int Function(int y, {Function x}) m5<B extends core.int>(int x) => null;
-  int Function(int x0, [List<T> x]) m6<B extends core.int>(int x) => null;
-  Function Function(Function x0) m7<B extends core.int>(int x) => null;
-  Function Function(int x, [core.List<core.int> x0]) m8<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function(int x0, {int x}) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function([core.List<core.int> x]) m10<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int y, [int x]) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(int x0, [List<Function> x1])
-      m12<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x0, {List<T> x}) m13<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(List<Function> x) m14<B extends core.int>(int x) => null;
-  List<T> Function(int y, [List<T> x]) m15<B extends core.int>(int x) => null;
-  Function([Function x0]) m16<B extends core.int>(int x) => null;
-  Function({core.List<core.int> x}) m17<B extends core.int>(int x) => null;
-  void Function(int y, {int x}) m18<B extends core.int>(int x) => null;
-  void Function(int x0, [core.List<core.int> x]) m19<B extends core.int>(
-          int x) =>
-      null;
-  int Function<A>(List<T> x) m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>() m21<B extends core.int>(int x) => null;
-  A Function<A>(A x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// int Function(int x, [List<T> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<T> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x, [List<T> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(int x, [List<T> x2]) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(int x, [List<T> x2]) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(int x1, [core.List<core.int> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [core.List<core.int> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(
-        m1 is List<Function> Function(int x1, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([List<Function> x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([List<Function> x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([List<Function> x1]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([List<Function> x1]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(Function x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(Function x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(Function x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {Function x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {Function x}) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<T> x]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-            l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x1, [List<T> x]) Function<B extends core.int>(int x) l6 =
-          m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(Function x1) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(Function x1) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(Function x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int x1, {int x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {int x}) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, [int x]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [int x]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int y, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2,
-            [List<Function> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int x1, {List<T> x})
-            Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int x1, {List<T> x})
-          Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x) Function<B extends core.int>(int x)
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([Function x1]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([Function x1]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function([Function x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({core.List<core.int> x}) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int y, {int x}) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {int x}) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<T> x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        int Function<A>(List<T> x) Function<B extends core.int>(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      int Function<A>(List<T> x) Function<B extends core.int>(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// core.List<core.int> Function<A>() Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>() Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>()
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(A x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(A x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect
-        .isTrue(m22 is A Function<A>(A x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U51().runTests();
-  new U51<int>(tIsInt: true).runTests();
-  new U51<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type52_test.dart b/tests/language/function_type/function_type52_test.dart
deleted file mode 100644
index c1627b1..0000000
--- a/tests/language/function_type/function_type52_test.dart
+++ /dev/null
@@ -1,912 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function({List<T> x});
-typedef F1<T> = List<Function> Function(int x, [core.List<core.int> x2]);
-typedef F2<T> = List<T> Function(int x1, [List<Function> x2]);
-typedef F3<T> = void Function([Function x1]);
-typedef F4<T> = List<A> Function<A>(List<T> x);
-typedef F5<T> = int Function(List<Function> x) Function();
-typedef F6<T> = int Function(int y, [List<T> x]) Function();
-typedef F7<T> = Function Function([Function x1]) Function();
-typedef F8<T> = Function Function({core.List<core.int> x}) Function();
-typedef F9<T> = List<Function> Function(int y, {int x}) Function();
-typedef F10<T> = List<Function> Function(int x0, [core.List<core.int> x])
-    Function();
-typedef F11<T> = core.List<core.int> Function(int x0) Function();
-typedef F12<T> = core.List<core.int> Function(int x, [List<Function> x2])
-    Function();
-typedef F13<T> = core.List<core.int> Function(int y, {List<T> x}) Function();
-typedef F14<T> = List<T> Function([List<Function> x]) Function();
-typedef F15<T> = List<T> Function(List<T> x0) Function();
-typedef F16<T> = Function(int x1, [Function x2]) Function();
-typedef F17<T> = Function(int x0, {core.List<core.int> x}) Function();
-typedef F18<T> = void Function(Function x) Function();
-typedef F19<T> = void Function(int y, [core.List<core.int> x]) Function();
-typedef F20<T> = int Function<A>() Function();
-typedef F21<T> = core.List<core.int> Function<A>(A x) Function();
-typedef F22<T> = A Function<A>(List<A> x) Function();
-
-int f0({List<int> x}) => null;
-List<Function> f1(int x, [core.List<core.int> x0]) => null;
-List<int> f2(int x0, [List<Function> x1]) => null;
-void f3([Function x0]) => null;
-List<A> f4<A>(List<int> x) => null;
-int Function(List<Function> x) f5() => null;
-int Function(int y, [List<int> x]) f6() => null;
-Function Function([Function x0]) f7() => null;
-Function Function({core.List<core.int> x}) f8() => null;
-List<Function> Function(int y, {int x}) f9() => null;
-List<Function> Function(int x0, [core.List<core.int> x]) f10() => null;
-core.List<core.int> Function(int x0) f11() => null;
-core.List<core.int> Function(int x, [List<Function> x0]) f12() => null;
-core.List<core.int> Function(int y, {List<int> x}) f13() => null;
-List<int> Function([List<Function> x]) f14() => null;
-List<int> Function(List<int> x0) f15() => null;
-Function(int x0, [Function x1]) f16() => null;
-Function(int x0, {core.List<core.int> x}) f17() => null;
-void Function(Function x) f18() => null;
-void Function(int y, [core.List<core.int> x]) f19() => null;
-int Function<A>() f20() => null;
-core.List<core.int> Function<A>(A x) f21() => null;
-A Function<A>(List<A> x) f22() => null;
-
-class U52<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function({List<T> x}) x0;
-  List<Function> Function(int x, [core.List<core.int> x2]) x1;
-  List<T> Function(int x1, [List<Function> x2]) x2;
-  void Function([Function x1]) x3;
-  List<A> Function<A>(List<T> x) x4;
-  int Function(List<Function> x) Function() x5;
-  int Function(int y, [List<T> x]) Function() x6;
-  Function Function([Function x1]) Function() x7;
-  Function Function({core.List<core.int> x}) Function() x8;
-  List<Function> Function(int y, {int x}) Function() x9;
-  List<Function> Function(int x0, [core.List<core.int> x]) Function() x10;
-  core.List<core.int> Function(int x0) Function() x11;
-  core.List<core.int> Function(int x, [List<Function> x2]) Function() x12;
-  core.List<core.int> Function(int y, {List<T> x}) Function() x13;
-  List<T> Function([List<Function> x]) Function() x14;
-  List<T> Function(List<T> x0) Function() x15;
-  Function(int x1, [Function x2]) Function() x16;
-  Function(int x0, {core.List<core.int> x}) Function() x17;
-  void Function(Function x) Function() x18;
-  void Function(int y, [core.List<core.int> x]) Function() x19;
-  int Function<A>() Function() x20;
-  core.List<core.int> Function<A>(A x) Function() x21;
-  A Function<A>(List<A> x) Function() x22;
-
-  U52({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0({List<T> x}) => null;
-  List<Function> m1(int x, [core.List<core.int> x0]) => null;
-  List<T> m2(int x0, [List<Function> x1]) => null;
-  void m3([Function x0]) => null;
-  List<A> m4<A>(List<T> x) => null;
-  int Function(List<Function> x) m5() => null;
-  int Function(int y, [List<T> x]) m6() => null;
-  Function Function([Function x0]) m7() => null;
-  Function Function({core.List<core.int> x}) m8() => null;
-  List<Function> Function(int y, {int x}) m9() => null;
-  List<Function> Function(int x0, [core.List<core.int> x]) m10() => null;
-  core.List<core.int> Function(int x0) m11() => null;
-  core.List<core.int> Function(int x, [List<Function> x0]) m12() => null;
-  core.List<core.int> Function(int y, {List<T> x}) m13() => null;
-  List<T> Function([List<Function> x]) m14() => null;
-  List<T> Function(List<T> x0) m15() => null;
-  Function(int x0, [Function x1]) m16() => null;
-  Function(int x0, {core.List<core.int> x}) m17() => null;
-  void Function(Function x) m18() => null;
-  void Function(int y, [core.List<core.int> x]) m19() => null;
-  int Function<A>() m20() => null;
-  core.List<core.int> Function<A>(A x) m21() => null;
-  A Function<A>(List<A> x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// int Function({List<T> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function({List<T> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function({List<T> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function({List<T> x}) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function({List<T> x}) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(int x, [core.List<core.int> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [core.List<core.int> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is List<Function> Function(int x, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x1, [List<Function> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<Function> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x1, [List<Function> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x1, [List<Function> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x1, [List<Function> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([Function x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([Function x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([Function x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        List<A> Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      List<A> Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(List<Function> x) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(List<Function> x) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [List<T> x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<T> x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, [List<T> x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, [List<T> x]) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, [List<T> x]) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([Function x1]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x1]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([Function x1]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({core.List<core.int> x}) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({core.List<core.int> x}) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, {int x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {int x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, {int x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x0, [core.List<core.int> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [core.List<core.int> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10
-        is List<Function> Function(int x0, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x0) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x0) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [List<Function> x2]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<Function> x2]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12
-        is core.List<core.int> Function(int x, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {List<T> x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<T> x}) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function(int y, {List<T> x}) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, {List<T> x}) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, {List<T> x}) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x0) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x0) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(List<T> x0) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x0) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x0) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [Function x2]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [Function x2]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [Function x2]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x0, {core.List<core.int> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x0, {core.List<core.int> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x0, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(Function x) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(Function x) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [core.List<core.int> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [core.List<core.int> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int y, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>() Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>() Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>() Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(A x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(A x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(A x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<A> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<A> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U52().runTests();
-  new U52<int>(tIsInt: true).runTests();
-  new U52<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type53_test.dart b/tests/language/function_type/function_type53_test.dart
deleted file mode 100644
index 6cc0bab..0000000
--- a/tests/language/function_type/function_type53_test.dart
+++ /dev/null
@@ -1,892 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, {List<T> x});
-typedef F1<T> = List<Function> Function({core.List<core.int> x});
-typedef F2<T> = List<T> Function(int x, [List<Function> x2]);
-typedef F3<T> = void Function(int x1, [Function x2]);
-typedef F4<T> = List<A> Function<A>();
-typedef F5<T> = int Function(List<Function> x) Function(int x);
-typedef F6<T> = int Function(int y, [List<T> x]) Function(int x);
-typedef F7<T> = Function Function([Function x1]) Function(int x);
-typedef F8<T> = Function Function({core.List<core.int> x}) Function(int x);
-typedef F9<T> = List<Function> Function(int y, {int x}) Function(int x);
-typedef F10<T> = List<Function> Function(int x1, [core.List<core.int> x])
-    Function(int x);
-typedef F11<T> = core.List<core.int> Function(int x1) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x, [List<Function> x1])
-    Function(int x);
-typedef F13<T> = core.List<core.int> Function(int y, {List<T> x}) Function(
-    int x);
-typedef F14<T> = List<T> Function([List<Function> x]) Function(int x);
-typedef F15<T> = List<T> Function(List<T> x1) Function(int x);
-typedef F16<T> = Function(int x2, [Function x3]) Function(int x);
-typedef F17<T> = Function(int x1, {core.List<core.int> x}) Function(int x);
-typedef F18<T> = void Function(Function x) Function(int x);
-typedef F19<T> = void Function(int y, [core.List<core.int> x]) Function(int x);
-typedef F20<T> = int Function<A>() Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>(A x) Function(int x);
-typedef F22<T> = A Function<A>(List<A> x) Function(int x);
-
-int f0(int x0, {List<int> x}) => null;
-List<Function> f1({core.List<core.int> x}) => null;
-List<int> f2(int x, [List<Function> x0]) => null;
-void f3(int x0, [Function x1]) => null;
-List<A> f4<A>() => null;
-int Function(List<Function> x) f5(int x) => null;
-int Function(int y, [List<int> x]) f6(int x) => null;
-Function Function([Function x0]) f7(int x) => null;
-Function Function({core.List<core.int> x}) f8(int x) => null;
-List<Function> Function(int y, {int x}) f9(int x) => null;
-List<Function> Function(int x0, [core.List<core.int> x]) f10(int x) => null;
-core.List<core.int> Function(int x0) f11(int x) => null;
-core.List<core.int> Function(int x, [List<Function> x0]) f12(int x) => null;
-core.List<core.int> Function(int y, {List<int> x}) f13(int x) => null;
-List<int> Function([List<Function> x]) f14(int x) => null;
-List<int> Function(List<int> x0) f15(int x) => null;
-Function(int x0, [Function x1]) f16(int x) => null;
-Function(int x0, {core.List<core.int> x}) f17(int x) => null;
-void Function(Function x) f18(int x) => null;
-void Function(int y, [core.List<core.int> x]) f19(int x) => null;
-int Function<A>() f20(int x) => null;
-core.List<core.int> Function<A>(A x) f21(int x) => null;
-A Function<A>(List<A> x) f22(int x) => null;
-
-class U53<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, {List<T> x}) x0;
-  List<Function> Function({core.List<core.int> x}) x1;
-  List<T> Function(int x, [List<Function> x2]) x2;
-  void Function(int x1, [Function x2]) x3;
-  List<A> Function<A>() x4;
-  int Function(List<Function> x) Function(int x) x5;
-  int Function(int y, [List<T> x]) Function(int x) x6;
-  Function Function([Function x1]) Function(int x) x7;
-  Function Function({core.List<core.int> x}) Function(int x) x8;
-  List<Function> Function(int y, {int x}) Function(int x) x9;
-  List<Function> Function(int x1, [core.List<core.int> x]) Function(int x) x10;
-  core.List<core.int> Function(int x1) Function(int x) x11;
-  core.List<core.int> Function(int x, [List<Function> x1]) Function(int x) x12;
-  core.List<core.int> Function(int y, {List<T> x}) Function(int x) x13;
-  List<T> Function([List<Function> x]) Function(int x) x14;
-  List<T> Function(List<T> x1) Function(int x) x15;
-  Function(int x2, [Function x3]) Function(int x) x16;
-  Function(int x1, {core.List<core.int> x}) Function(int x) x17;
-  void Function(Function x) Function(int x) x18;
-  void Function(int y, [core.List<core.int> x]) Function(int x) x19;
-  int Function<A>() Function(int x) x20;
-  core.List<core.int> Function<A>(A x) Function(int x) x21;
-  A Function<A>(List<A> x) Function(int x) x22;
-
-  U53({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, {List<T> x}) => null;
-  List<Function> m1({core.List<core.int> x}) => null;
-  List<T> m2(int x, [List<Function> x0]) => null;
-  void m3(int x0, [Function x1]) => null;
-  List<A> m4<A>() => null;
-  int Function(List<Function> x) m5(int x) => null;
-  int Function(int y, [List<T> x]) m6(int x) => null;
-  Function Function([Function x0]) m7(int x) => null;
-  Function Function({core.List<core.int> x}) m8(int x) => null;
-  List<Function> Function(int y, {int x}) m9(int x) => null;
-  List<Function> Function(int x0, [core.List<core.int> x]) m10(int x) => null;
-  core.List<core.int> Function(int x0) m11(int x) => null;
-  core.List<core.int> Function(int x, [List<Function> x0]) m12(int x) => null;
-  core.List<core.int> Function(int y, {List<T> x}) m13(int x) => null;
-  List<T> Function([List<Function> x]) m14(int x) => null;
-  List<T> Function(List<T> x0) m15(int x) => null;
-  Function(int x0, [Function x1]) m16(int x) => null;
-  Function(int x0, {core.List<core.int> x}) m17(int x) => null;
-  void Function(Function x) m18(int x) => null;
-  void Function(int y, [core.List<core.int> x]) m19(int x) => null;
-  int Function<A>() m20(int x) => null;
-  core.List<core.int> Function<A>(A x) m21(int x) => null;
-  A Function<A>(List<A> x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// int Function(int x0, {List<T> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, {List<T> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, {List<T> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(int x0, {List<T> x}) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(int x0, {List<T> x}) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function({core.List<core.int> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function({core.List<core.int> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function({core.List<core.int> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x, [List<Function> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<Function> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x, [List<Function> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x, [List<Function> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x, [List<Function> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x1, [Function x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x1, [Function x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x1, [Function x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(List<Function> x) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [List<T> x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<T> x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, [List<T> x]) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, [List<T> x]) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([Function x1]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x1]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([Function x1]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({core.List<core.int> x}) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({core.List<core.int> x}) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function({core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, {int x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {int x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int y, {int x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [core.List<core.int> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [core.List<core.int> x]) Function(int x)
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1,
-            [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [List<Function> x1]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<Function> x1]) Function(int x)
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x,
-            [List<Function> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {List<T> x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<T> x}) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y, {List<T> x})
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, {List<T> x}) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, {List<T> x}) Function(int x) l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x1) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x1) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(List<T> x1) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x1) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x1) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x2, [Function x3]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [Function x3]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x2, [Function x3]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {core.List<core.int> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {core.List<core.int> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x1, {core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(Function x) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(Function x) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [core.List<core.int> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [core.List<core.int> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int y, [core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>() Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>() Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>() Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(A x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(A x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<A> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<A> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is A Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U53().runTests();
-  new U53<int>(tIsInt: true).runTests();
-  new U53<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type54_test.dart b/tests/language/function_type/function_type54_test.dart
deleted file mode 100644
index 08ce48e..0000000
--- a/tests/language/function_type/function_type54_test.dart
+++ /dev/null
@@ -1,927 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int y, {List<T> x});
-typedef F1<T> = List<Function> Function(int x0, {core.List<core.int> x});
-typedef F2<T> = List<T> Function({List<Function> x});
-typedef F3<T> = void Function(int x, [Function x2]);
-typedef F4<T> = List<A> Function<A>(A x);
-typedef F5<T> = int Function(List<Function> x) Function<B extends core.int>();
-typedef F6<T> = int Function(int y, [List<T> x]) Function<B extends core.int>();
-typedef F7<T> = Function Function([Function x1]) Function<B extends core.int>();
-typedef F8<T> = Function Function({core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int y, {int x})
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int x1)
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x, [List<Function> x1])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int y, {List<T> x})
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function([List<Function> x])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(List<T> x1) Function<B extends core.int>();
-typedef F16<T> = Function(int x2, [Function x3]) Function<B extends core.int>();
-typedef F17<T> = Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F18<T> = void Function(Function x) Function<B extends core.int>();
-typedef F19<T> = void Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>() Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>(A x)
-    Function<B extends core.int>();
-typedef F22<T> = A Function<A>(List<A> x) Function<B extends core.int>();
-
-int f0(int y, {List<int> x}) => null;
-List<Function> f1(int x0, {core.List<core.int> x}) => null;
-List<int> f2({List<Function> x}) => null;
-void f3(int x, [Function x0]) => null;
-List<A> f4<A>(A x) => null;
-int Function(List<Function> x) f5<B extends core.int>() => null;
-int Function(int y, [List<int> x]) f6<B extends core.int>() => null;
-Function Function([Function x0]) f7<B extends core.int>() => null;
-Function Function({core.List<core.int> x}) f8<B extends core.int>() => null;
-List<Function> Function(int y, {int x}) f9<B extends core.int>() => null;
-List<Function> Function(int x0, [core.List<core.int> x])
-    f10<B extends core.int>() => null;
-core.List<core.int> Function(int x0) f11<B extends core.int>() => null;
-core.List<core.int> Function(int x, [List<Function> x0])
-    f12<B extends core.int>() => null;
-core.List<core.int> Function(int y, {List<int> x}) f13<B extends core.int>() =>
-    null;
-List<int> Function([List<Function> x]) f14<B extends core.int>() => null;
-List<int> Function(List<int> x0) f15<B extends core.int>() => null;
-Function(int x0, [Function x1]) f16<B extends core.int>() => null;
-Function(int x0, {core.List<core.int> x}) f17<B extends core.int>() => null;
-void Function(Function x) f18<B extends core.int>() => null;
-void Function(int y, [core.List<core.int> x]) f19<B extends core.int>() => null;
-int Function<A>() f20<B extends core.int>() => null;
-core.List<core.int> Function<A>(A x) f21<B extends core.int>() => null;
-A Function<A>(List<A> x) f22<B extends core.int>() => null;
-
-class U54<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int y, {List<T> x}) x0;
-  List<Function> Function(int x0, {core.List<core.int> x}) x1;
-  List<T> Function({List<Function> x}) x2;
-  void Function(int x, [Function x2]) x3;
-  List<A> Function<A>(A x) x4;
-  int Function(List<Function> x) Function<B extends core.int>() x5;
-  int Function(int y, [List<T> x]) Function<B extends core.int>() x6;
-  Function Function([Function x1]) Function<B extends core.int>() x7;
-  Function Function({core.List<core.int> x}) Function<B extends core.int>() x8;
-  List<Function> Function(int y, {int x}) Function<B extends core.int>() x9;
-  List<Function> Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function(int x1) Function<B extends core.int>() x11;
-  core.List<core.int> Function(int x, [List<Function> x1])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function(int y, {List<T> x})
-      Function<B extends core.int>() x13;
-  List<T> Function([List<Function> x]) Function<B extends core.int>() x14;
-  List<T> Function(List<T> x1) Function<B extends core.int>() x15;
-  Function(int x2, [Function x3]) Function<B extends core.int>() x16;
-  Function(int x1, {core.List<core.int> x}) Function<B extends core.int>() x17;
-  void Function(Function x) Function<B extends core.int>() x18;
-  void Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-      x19;
-  int Function<A>() Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>(A x) Function<B extends core.int>() x21;
-  A Function<A>(List<A> x) Function<B extends core.int>() x22;
-
-  U54({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int y, {List<T> x}) => null;
-  List<Function> m1(int x0, {core.List<core.int> x}) => null;
-  List<T> m2({List<Function> x}) => null;
-  void m3(int x, [Function x0]) => null;
-  List<A> m4<A>(A x) => null;
-  int Function(List<Function> x) m5<B extends core.int>() => null;
-  int Function(int y, [List<T> x]) m6<B extends core.int>() => null;
-  Function Function([Function x0]) m7<B extends core.int>() => null;
-  Function Function({core.List<core.int> x}) m8<B extends core.int>() => null;
-  List<Function> Function(int y, {int x}) m9<B extends core.int>() => null;
-  List<Function> Function(int x0, [core.List<core.int> x])
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function(int x0) m11<B extends core.int>() => null;
-  core.List<core.int> Function(int x, [List<Function> x0])
-      m12<B extends core.int>() => null;
-  core.List<core.int> Function(int y, {List<T> x}) m13<B extends core.int>() =>
-      null;
-  List<T> Function([List<Function> x]) m14<B extends core.int>() => null;
-  List<T> Function(List<T> x0) m15<B extends core.int>() => null;
-  Function(int x0, [Function x1]) m16<B extends core.int>() => null;
-  Function(int x0, {core.List<core.int> x}) m17<B extends core.int>() => null;
-  void Function(Function x) m18<B extends core.int>() => null;
-  void Function(int y, [core.List<core.int> x]) m19<B extends core.int>() =>
-      null;
-  int Function<A>() m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>(A x) m21<B extends core.int>() => null;
-  A Function<A>(List<A> x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// int Function(int y, {List<T> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<T> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int y, {List<T> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-    if (!tIsBool) {
-      Expect.isTrue(f0 is F0<int>);
-      Expect.isFalse(f0 is F0<bool>);
-      Expect.isTrue(confuse(f0) is F0<int>);
-      Expect.isFalse(confuse(f0) is F0<bool>);
-      Expect.equals(tIsDynamic, m0 is F0<bool>);
-      Expect.equals(tIsDynamic, confuse(m0) is F0<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          x0 = confuse(f0);
-        });
-        int Function(int y, {List<T> x}) l0;
-        Expect.throws(() {
-          l0 = (f0 as dynamic);
-        });
-        Expect.throws(() {
-          l0 = confuse(f0);
-        });
-      }
-      int Function(int y, {List<T> x}) l0 = m0;
-      // In checked mode, verifies the type.
-      x0 = m0;
-      x0 = confuse(m0);
-    }
-  }
-
-  /// List<Function> Function(int x0, {core.List<core.int> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {core.List<core.int> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is List<Function> Function(int x0, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function({List<Function> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function({List<Function> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function({List<Function> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function({List<Function> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function({List<Function> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x, [Function x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x, [Function x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x, [Function x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(List<Function> x) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(List<Function> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [List<T> x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<T> x]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int y, [List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, [List<T> x]) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, [List<T> x]) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([Function x1]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x1]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function([Function x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({core.List<core.int> x}) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({core.List<core.int> x}) Function<B extends core.int>()
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, {int x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {int x}) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, {int x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1,
-            [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [List<Function> x1]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<Function> x1])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x,
-            [List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {List<T> x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<T> x})
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, {List<T> x})
-            Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, {List<T> x})
-          Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x]) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x]) Function<B extends core.int>() l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x1) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x1) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(List<T> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x1) Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x1) Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x2, [Function x3]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [Function x3]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x2, [Function x3]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(Function x) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>() Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>() Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(A x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(A x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(A x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<A> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<A> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect
-        .isTrue(m22 is A Function<A>(List<A> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U54().runTests();
-  new U54<int>(tIsInt: true).runTests();
-  new U54<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type55_test.dart b/tests/language/function_type/function_type55_test.dart
deleted file mode 100644
index 803181d..0000000
--- a/tests/language/function_type/function_type55_test.dart
+++ /dev/null
@@ -1,922 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function();
-typedef F1<T> = List<Function> Function(int y, {core.List<core.int> x});
-typedef F2<T> = List<T> Function(int x0, {List<Function> x});
-typedef F3<T> = void Function({Function x});
-typedef F4<T> = List<A> Function<A>(List<A> x);
-typedef F5<T> = int Function(List<Function> x) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function(int y, [List<T> x]) Function<B extends core.int>(
-    int x);
-typedef F7<T> = Function Function([Function x1]) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function({core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int y, {int x})
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int x1)
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x, [List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int y, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function([List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(List<T> x1) Function<B extends core.int>(
-    int x);
-typedef F16<T> = Function(int x2, [Function x3]) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function(Function x) Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>() Function<B extends core.int>(int x);
-typedef F21<T> = core.List<core.int> Function<A>(A x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = A Function<A>(List<A> x) Function<B extends core.int>(int x);
-
-int f0() => null;
-List<Function> f1(int y, {core.List<core.int> x}) => null;
-List<int> f2(int x0, {List<Function> x}) => null;
-void f3({Function x}) => null;
-List<A> f4<A>(List<A> x) => null;
-int Function(List<Function> x) f5<B extends core.int>(int x) => null;
-int Function(int y, [List<int> x]) f6<B extends core.int>(int x) => null;
-Function Function([Function x0]) f7<B extends core.int>(int x) => null;
-Function Function({core.List<core.int> x}) f8<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int y, {int x}) f9<B extends core.int>(int x) => null;
-List<Function> Function(int x0, [core.List<core.int> x])
-    f10<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x0) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x, [List<Function> x0])
-    f12<B extends core.int>(int x) => null;
-core.List<core.int> Function(int y, {List<int> x}) f13<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function([List<Function> x]) f14<B extends core.int>(int x) => null;
-List<int> Function(List<int> x0) f15<B extends core.int>(int x) => null;
-Function(int x0, [Function x1]) f16<B extends core.int>(int x) => null;
-Function(int x0, {core.List<core.int> x}) f17<B extends core.int>(int x) =>
-    null;
-void Function(Function x) f18<B extends core.int>(int x) => null;
-void Function(int y, [core.List<core.int> x]) f19<B extends core.int>(int x) =>
-    null;
-int Function<A>() f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>(A x) f21<B extends core.int>(int x) => null;
-A Function<A>(List<A> x) f22<B extends core.int>(int x) => null;
-
-class U55<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function() x0;
-  List<Function> Function(int y, {core.List<core.int> x}) x1;
-  List<T> Function(int x0, {List<Function> x}) x2;
-  void Function({Function x}) x3;
-  List<A> Function<A>(List<A> x) x4;
-  int Function(List<Function> x) Function<B extends core.int>(int x) x5;
-  int Function(int y, [List<T> x]) Function<B extends core.int>(int x) x6;
-  Function Function([Function x1]) Function<B extends core.int>(int x) x7;
-  Function Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-      x8;
-  List<Function> Function(int y, {int x}) Function<B extends core.int>(int x)
-      x9;
-  List<Function> Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function(int x1) Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(int x, [List<Function> x1])
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function(int y, {List<T> x}) Function<B extends core.int>(
-      int x) x13;
-  List<T> Function([List<Function> x]) Function<B extends core.int>(int x) x14;
-  List<T> Function(List<T> x1) Function<B extends core.int>(int x) x15;
-  Function(int x2, [Function x3]) Function<B extends core.int>(int x) x16;
-  Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-      x17;
-  void Function(Function x) Function<B extends core.int>(int x) x18;
-  void Function(int y, [core.List<core.int> x]) Function<B extends core.int>(
-      int x) x19;
-  int Function<A>() Function<B extends core.int>(int x) x20;
-  core.List<core.int> Function<A>(A x) Function<B extends core.int>(int x) x21;
-  A Function<A>(List<A> x) Function<B extends core.int>(int x) x22;
-
-  U55({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0() => null;
-  List<Function> m1(int y, {core.List<core.int> x}) => null;
-  List<T> m2(int x0, {List<Function> x}) => null;
-  void m3({Function x}) => null;
-  List<A> m4<A>(List<A> x) => null;
-  int Function(List<Function> x) m5<B extends core.int>(int x) => null;
-  int Function(int y, [List<T> x]) m6<B extends core.int>(int x) => null;
-  Function Function([Function x0]) m7<B extends core.int>(int x) => null;
-  Function Function({core.List<core.int> x}) m8<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int y, {int x}) m9<B extends core.int>(int x) => null;
-  List<Function> Function(int x0, [core.List<core.int> x])
-      m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x0) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x, [List<Function> x0])
-      m12<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int y, {List<T> x}) m13<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function([List<Function> x]) m14<B extends core.int>(int x) => null;
-  List<T> Function(List<T> x0) m15<B extends core.int>(int x) => null;
-  Function(int x0, [Function x1]) m16<B extends core.int>(int x) => null;
-  Function(int x0, {core.List<core.int> x}) m17<B extends core.int>(int x) =>
-      null;
-  void Function(Function x) m18<B extends core.int>(int x) => null;
-  void Function(int y, [core.List<core.int> x]) m19<B extends core.int>(
-          int x) =>
-      null;
-  int Function<A>() m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>(A x) m21<B extends core.int>(int x) => null;
-  A Function<A>(List<A> x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// int Function()
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function() l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function());
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, {core.List<core.int> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {core.List<core.int> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is List<Function> Function(int y, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, {List<Function> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {List<Function> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, {List<Function> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, {List<Function> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, {List<Function> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function({Function x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function({Function x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function({Function x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<A> Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<A> Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<T> x]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, [List<T> x]) Function<B extends core.int>(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, [List<T> x]) Function<B extends core.int>(int x) l6 =
-          m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([Function x1]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([Function x1]) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({core.List<core.int> x}) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(int y, {int x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {int x}) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1,
-            [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1) Function<B extends core.int>(int x)
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x,
-            [List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<T> x})
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        core.List<core.int> Function(int y, {List<T> x})
-            Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      core.List<core.int> Function(int y, {List<T> x})
-          Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x]) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x]) Function<B extends core.int>(int x)
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x]) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(List<T> x1) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x1) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(List<T> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(List<T> x1) Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(List<T> x1) Function<B extends core.int>(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [Function x3]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x2, [Function x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(
-        int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(Function x) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(Function x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [core.List<core.int> x]) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>() Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>() Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(A x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(A x) Function<B extends core.int>(int x)
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(A x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// A Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    A Function<A>(List<A> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is A Function<A>(List<A> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U55().runTests();
-  new U55<int>(tIsInt: true).runTests();
-  new U55<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type56_test.dart b/tests/language/function_type/function_type56_test.dart
deleted file mode 100644
index c33ffbf..0000000
--- a/tests/language/function_type/function_type56_test.dart
+++ /dev/null
@@ -1,854 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x);
-typedef F1<T> = List<Function> Function(List<T> x);
-typedef F2<T> = List<T> Function(int y, {List<Function> x});
-typedef F3<T> = void Function(int x0, {Function x});
-typedef F4<T> = void Function<A>(int x);
-typedef F5<T> = int Function([List<Function> x]) Function();
-typedef F6<T> = int Function(List<T> x0) Function();
-typedef F7<T> = Function Function(int x1, [Function x2]) Function();
-typedef F8<T> = Function Function(int x0, {core.List<core.int> x}) Function();
-typedef F9<T> = List<Function> Function(Function x) Function();
-typedef F10<T> = List<Function> Function(int y, [core.List<core.int> x])
-    Function();
-typedef F11<T> = core.List<core.int> Function([int x1]) Function();
-typedef F12<T> = core.List<core.int> Function({List<Function> x}) Function();
-typedef F13<T> = core.List<core.int> Function() Function();
-typedef F14<T> = List<T> Function(int x0, [List<Function> x]) Function();
-typedef F15<T> = List<T> Function([List<T> x1]) Function();
-typedef F16<T> = Function(int x, [Function x2]) Function();
-typedef F17<T> = Function(int y, {core.List<core.int> x}) Function();
-typedef F18<T> = void Function([Function x]) Function();
-typedef F19<T> = void Function(core.List<core.int> x0) Function();
-typedef F20<T> = int Function<A>(A x) Function();
-typedef F21<T> = core.List<core.int> Function<A>(List<A> x) Function();
-typedef F22<T> = List<A> Function<A>(int x) Function();
-
-Function f0(int x) => null;
-List<Function> f1(List<int> x) => null;
-List<int> f2(int y, {List<Function> x}) => null;
-void f3(int x0, {Function x}) => null;
-void f4<A>(int x) => null;
-int Function([List<Function> x]) f5() => null;
-int Function(List<int> x0) f6() => null;
-Function Function(int x0, [Function x1]) f7() => null;
-Function Function(int x0, {core.List<core.int> x}) f8() => null;
-List<Function> Function(Function x) f9() => null;
-List<Function> Function(int y, [core.List<core.int> x]) f10() => null;
-core.List<core.int> Function([int x0]) f11() => null;
-core.List<core.int> Function({List<Function> x}) f12() => null;
-core.List<core.int> Function() f13() => null;
-List<int> Function(int x0, [List<Function> x]) f14() => null;
-List<int> Function([List<int> x0]) f15() => null;
-Function(int x, [Function x0]) f16() => null;
-Function(int y, {core.List<core.int> x}) f17() => null;
-void Function([Function x]) f18() => null;
-void Function(core.List<core.int> x0) f19() => null;
-int Function<A>(A x) f20() => null;
-core.List<core.int> Function<A>(List<A> x) f21() => null;
-List<A> Function<A>(int x) f22() => null;
-
-class U56<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x) x0;
-  List<Function> Function(List<T> x) x1;
-  List<T> Function(int y, {List<Function> x}) x2;
-  void Function(int x0, {Function x}) x3;
-  void Function<A>(int x) x4;
-  int Function([List<Function> x]) Function() x5;
-  int Function(List<T> x0) Function() x6;
-  Function Function(int x1, [Function x2]) Function() x7;
-  Function Function(int x0, {core.List<core.int> x}) Function() x8;
-  List<Function> Function(Function x) Function() x9;
-  List<Function> Function(int y, [core.List<core.int> x]) Function() x10;
-  core.List<core.int> Function([int x1]) Function() x11;
-  core.List<core.int> Function({List<Function> x}) Function() x12;
-  core.List<core.int> Function() Function() x13;
-  List<T> Function(int x0, [List<Function> x]) Function() x14;
-  List<T> Function([List<T> x1]) Function() x15;
-  Function(int x, [Function x2]) Function() x16;
-  Function(int y, {core.List<core.int> x}) Function() x17;
-  void Function([Function x]) Function() x18;
-  void Function(core.List<core.int> x0) Function() x19;
-  int Function<A>(A x) Function() x20;
-  core.List<core.int> Function<A>(List<A> x) Function() x21;
-  List<A> Function<A>(int x) Function() x22;
-
-  U56({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x) => null;
-  List<Function> m1(List<T> x) => null;
-  List<T> m2(int y, {List<Function> x}) => null;
-  void m3(int x0, {Function x}) => null;
-  void m4<A>(int x) => null;
-  int Function([List<Function> x]) m5() => null;
-  int Function(List<T> x0) m6() => null;
-  Function Function(int x0, [Function x1]) m7() => null;
-  Function Function(int x0, {core.List<core.int> x}) m8() => null;
-  List<Function> Function(Function x) m9() => null;
-  List<Function> Function(int y, [core.List<core.int> x]) m10() => null;
-  core.List<core.int> Function([int x0]) m11() => null;
-  core.List<core.int> Function({List<Function> x}) m12() => null;
-  core.List<core.int> Function() m13() => null;
-  List<T> Function(int x0, [List<Function> x]) m14() => null;
-  List<T> Function([List<T> x0]) m15() => null;
-  Function(int x, [Function x0]) m16() => null;
-  Function(int y, {core.List<core.int> x}) m17() => null;
-  void Function([Function x]) m18() => null;
-  void Function(core.List<core.int> x0) m19() => null;
-  int Function<A>(A x) m20() => null;
-  core.List<core.int> Function<A>(List<A> x) m21() => null;
-  List<A> Function<A>(int x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(List<T> x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(List<T> x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(List<T> x) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(List<T> x) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(int y, {List<Function> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<Function> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, {List<Function> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, {List<Function> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, {List<Function> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, {Function x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, {Function x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, {Function x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([List<Function> x]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x0) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x0) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(List<T> x0) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x0) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x0) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x1, [Function x2]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [Function x2]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, [Function x2]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x0, {core.List<core.int> x}) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {core.List<core.int> x}) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x0, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(Function x) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [core.List<core.int> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [core.List<core.int> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, [core.List<core.int> x])
-        Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x1]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x1]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([int x1]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function({List<Function> x}) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<Function> x}) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function({List<Function> x}) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function() Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function() Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function() Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int x0, [List<Function> x]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [List<Function> x]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int x0, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x0, [List<Function> x]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x0, [List<Function> x]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x1]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x1]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([List<T> x1]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x1]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x1]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [Function x2]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [Function x2]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x, [Function x2]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {core.List<core.int> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {core.List<core.int> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([Function x]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([Function x]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x0) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x0) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x0) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(A x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(A x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(A x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<A> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<A> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// List<A> Function<A>(int x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(int x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(int x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U56().runTests();
-  new U56<int>(tIsInt: true).runTests();
-  new U56<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type57_test.dart b/tests/language/function_type/function_type57_test.dart
deleted file mode 100644
index 8fb33cc..0000000
--- a/tests/language/function_type/function_type57_test.dart
+++ /dev/null
@@ -1,860 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([int x]);
-typedef F1<T> = List<Function> Function([List<T> x]);
-typedef F2<T> = List<T> Function(core.List<core.int> x);
-typedef F3<T> = void Function(int y, {Function x});
-typedef F4<T> = void Function<A>(Function x);
-typedef F5<T> = int Function([List<Function> x]) Function(int x);
-typedef F6<T> = int Function(List<T> x1) Function(int x);
-typedef F7<T> = Function Function(int x2, [Function x3]) Function(int x);
-typedef F8<T> = Function Function(int x1, {core.List<core.int> x}) Function(
-    int x);
-typedef F9<T> = List<Function> Function(Function x) Function(int x);
-typedef F10<T> = List<Function> Function(int y, [core.List<core.int> x])
-    Function(int x);
-typedef F11<T> = core.List<core.int> Function([int x1]) Function(int x);
-typedef F12<T> = core.List<core.int> Function({List<Function> x}) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function() Function(int x);
-typedef F14<T> = List<T> Function(int x1, [List<Function> x]) Function(int x);
-typedef F15<T> = List<T> Function([List<T> x1]) Function(int x);
-typedef F16<T> = Function(int x, [Function x1]) Function(int x);
-typedef F17<T> = Function(int y, {core.List<core.int> x}) Function(int x);
-typedef F18<T> = void Function([Function x]) Function(int x);
-typedef F19<T> = void Function(core.List<core.int> x1) Function(int x);
-typedef F20<T> = int Function<A>(A x) Function(int x);
-typedef F21<T> = core.List<core.int> Function<A>(List<A> x) Function(int x);
-typedef F22<T> = List<A> Function<A>(int x) Function(int x);
-
-Function f0([int x]) => null;
-List<Function> f1([List<int> x]) => null;
-List<int> f2(core.List<core.int> x) => null;
-void f3(int y, {Function x}) => null;
-void f4<A>(Function x) => null;
-int Function([List<Function> x]) f5(int x) => null;
-int Function(List<int> x0) f6(int x) => null;
-Function Function(int x0, [Function x1]) f7(int x) => null;
-Function Function(int x0, {core.List<core.int> x}) f8(int x) => null;
-List<Function> Function(Function x) f9(int x) => null;
-List<Function> Function(int y, [core.List<core.int> x]) f10(int x) => null;
-core.List<core.int> Function([int x0]) f11(int x) => null;
-core.List<core.int> Function({List<Function> x}) f12(int x) => null;
-core.List<core.int> Function() f13(int x) => null;
-List<int> Function(int x0, [List<Function> x]) f14(int x) => null;
-List<int> Function([List<int> x0]) f15(int x) => null;
-Function(int x, [Function x0]) f16(int x) => null;
-Function(int y, {core.List<core.int> x}) f17(int x) => null;
-void Function([Function x]) f18(int x) => null;
-void Function(core.List<core.int> x0) f19(int x) => null;
-int Function<A>(A x) f20(int x) => null;
-core.List<core.int> Function<A>(List<A> x) f21(int x) => null;
-List<A> Function<A>(int x) f22(int x) => null;
-
-class U57<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([int x]) x0;
-  List<Function> Function([List<T> x]) x1;
-  List<T> Function(core.List<core.int> x) x2;
-  void Function(int y, {Function x}) x3;
-  void Function<A>(Function x) x4;
-  int Function([List<Function> x]) Function(int x) x5;
-  int Function(List<T> x1) Function(int x) x6;
-  Function Function(int x2, [Function x3]) Function(int x) x7;
-  Function Function(int x1, {core.List<core.int> x}) Function(int x) x8;
-  List<Function> Function(Function x) Function(int x) x9;
-  List<Function> Function(int y, [core.List<core.int> x]) Function(int x) x10;
-  core.List<core.int> Function([int x1]) Function(int x) x11;
-  core.List<core.int> Function({List<Function> x}) Function(int x) x12;
-  core.List<core.int> Function() Function(int x) x13;
-  List<T> Function(int x1, [List<Function> x]) Function(int x) x14;
-  List<T> Function([List<T> x1]) Function(int x) x15;
-  Function(int x, [Function x1]) Function(int x) x16;
-  Function(int y, {core.List<core.int> x}) Function(int x) x17;
-  void Function([Function x]) Function(int x) x18;
-  void Function(core.List<core.int> x1) Function(int x) x19;
-  int Function<A>(A x) Function(int x) x20;
-  core.List<core.int> Function<A>(List<A> x) Function(int x) x21;
-  List<A> Function<A>(int x) Function(int x) x22;
-
-  U57({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([int x]) => null;
-  List<Function> m1([List<T> x]) => null;
-  List<T> m2(core.List<core.int> x) => null;
-  void m3(int y, {Function x}) => null;
-  void m4<A>(Function x) => null;
-  int Function([List<Function> x]) m5(int x) => null;
-  int Function(List<T> x0) m6(int x) => null;
-  Function Function(int x0, [Function x1]) m7(int x) => null;
-  Function Function(int x0, {core.List<core.int> x}) m8(int x) => null;
-  List<Function> Function(Function x) m9(int x) => null;
-  List<Function> Function(int y, [core.List<core.int> x]) m10(int x) => null;
-  core.List<core.int> Function([int x0]) m11(int x) => null;
-  core.List<core.int> Function({List<Function> x}) m12(int x) => null;
-  core.List<core.int> Function() m13(int x) => null;
-  List<T> Function(int x0, [List<Function> x]) m14(int x) => null;
-  List<T> Function([List<T> x0]) m15(int x) => null;
-  Function(int x, [Function x0]) m16(int x) => null;
-  Function(int y, {core.List<core.int> x}) m17(int x) => null;
-  void Function([Function x]) m18(int x) => null;
-  void Function(core.List<core.int> x0) m19(int x) => null;
-  int Function<A>(A x) m20(int x) => null;
-  core.List<core.int> Function<A>(List<A> x) m21(int x) => null;
-  List<A> Function<A>(int x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([int x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([int x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([int x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([List<T> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([List<T> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function([List<T> x]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function([List<T> x]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(core.List<core.int> x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(core.List<core.int> x) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(core.List<core.int> x) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, {Function x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, {Function x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, {Function x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x1) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x1) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(List<T> x1) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x1) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x1) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x2, [Function x3]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [Function x3]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect
-        .isTrue(m7 is Function Function(int x2, [Function x3]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, {core.List<core.int> x}) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {core.List<core.int> x}) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(Function x) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [core.List<core.int> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [core.List<core.int> x]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x1]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x1]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect
-        .isTrue(m11 is core.List<core.int> Function([int x1]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function({List<Function> x}) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<Function> x}) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function({List<Function> x})
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function() Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function() Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function() Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int x1, [List<Function> x]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<Function> x]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int x1, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [List<Function> x]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [List<Function> x]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x1]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x1]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x1]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x1]) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [Function x1]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [Function x1]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x, [Function x1]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {core.List<core.int> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {core.List<core.int> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int y, {core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([Function x]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([Function x]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x1) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x1) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x1) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(A x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(A x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<A> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<A> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is core.List<core.int> Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// List<A> Function<A>(int x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(int x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U57().runTests();
-  new U57<int>(tIsInt: true).runTests();
-  new U57<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type58_test.dart b/tests/language/function_type/function_type58_test.dart
deleted file mode 100644
index 4835c21..0000000
--- a/tests/language/function_type/function_type58_test.dart
+++ /dev/null
@@ -1,895 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, [int x]);
-typedef F1<T> = List<Function> Function(int x0, [List<T> x]);
-typedef F2<T> = List<T> Function([core.List<core.int> x]);
-typedef F3<T> = void Function(List<Function> x);
-typedef F4<T> = void Function<A>(List<Function> x);
-typedef F5<T> = int Function([List<Function> x]) Function<B extends core.int>();
-typedef F6<T> = int Function(List<T> x1) Function<B extends core.int>();
-typedef F7<T> = Function Function(int x2, [Function x3])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(Function x)
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function([int x1])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function({List<Function> x})
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function() Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x1, [List<Function> x])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function([List<T> x1]) Function<B extends core.int>();
-typedef F16<T> = Function(int x, [Function x1]) Function<B extends core.int>();
-typedef F17<T> = Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F18<T> = void Function([Function x]) Function<B extends core.int>();
-typedef F19<T> = void Function(core.List<core.int> x1)
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>(A x) Function<B extends core.int>();
-typedef F21<T> = core.List<core.int> Function<A>(List<A> x)
-    Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>(int x) Function<B extends core.int>();
-
-Function f0(int x0, [int x]) => null;
-List<Function> f1(int x0, [List<int> x]) => null;
-List<int> f2([core.List<core.int> x]) => null;
-void f3(List<Function> x) => null;
-void f4<A>(List<Function> x) => null;
-int Function([List<Function> x]) f5<B extends core.int>() => null;
-int Function(List<int> x0) f6<B extends core.int>() => null;
-Function Function(int x0, [Function x1]) f7<B extends core.int>() => null;
-Function Function(int x0, {core.List<core.int> x}) f8<B extends core.int>() =>
-    null;
-List<Function> Function(Function x) f9<B extends core.int>() => null;
-List<Function> Function(int y, [core.List<core.int> x])
-    f10<B extends core.int>() => null;
-core.List<core.int> Function([int x0]) f11<B extends core.int>() => null;
-core.List<core.int> Function({List<Function> x}) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function() f13<B extends core.int>() => null;
-List<int> Function(int x0, [List<Function> x]) f14<B extends core.int>() =>
-    null;
-List<int> Function([List<int> x0]) f15<B extends core.int>() => null;
-Function(int x, [Function x0]) f16<B extends core.int>() => null;
-Function(int y, {core.List<core.int> x}) f17<B extends core.int>() => null;
-void Function([Function x]) f18<B extends core.int>() => null;
-void Function(core.List<core.int> x0) f19<B extends core.int>() => null;
-int Function<A>(A x) f20<B extends core.int>() => null;
-core.List<core.int> Function<A>(List<A> x) f21<B extends core.int>() => null;
-List<A> Function<A>(int x) f22<B extends core.int>() => null;
-
-class U58<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, [int x]) x0;
-  List<Function> Function(int x0, [List<T> x]) x1;
-  List<T> Function([core.List<core.int> x]) x2;
-  void Function(List<Function> x) x3;
-  void Function<A>(List<Function> x) x4;
-  int Function([List<Function> x]) Function<B extends core.int>() x5;
-  int Function(List<T> x1) Function<B extends core.int>() x6;
-  Function Function(int x2, [Function x3]) Function<B extends core.int>() x7;
-  Function Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>() x8;
-  List<Function> Function(Function x) Function<B extends core.int>() x9;
-  List<Function> Function(int y, [core.List<core.int> x])
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function([int x1]) Function<B extends core.int>() x11;
-  core.List<core.int> Function({List<Function> x})
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function() Function<B extends core.int>() x13;
-  List<T> Function(int x1, [List<Function> x]) Function<B extends core.int>()
-      x14;
-  List<T> Function([List<T> x1]) Function<B extends core.int>() x15;
-  Function(int x, [Function x1]) Function<B extends core.int>() x16;
-  Function(int y, {core.List<core.int> x}) Function<B extends core.int>() x17;
-  void Function([Function x]) Function<B extends core.int>() x18;
-  void Function(core.List<core.int> x1) Function<B extends core.int>() x19;
-  int Function<A>(A x) Function<B extends core.int>() x20;
-  core.List<core.int> Function<A>(List<A> x) Function<B extends core.int>() x21;
-  List<A> Function<A>(int x) Function<B extends core.int>() x22;
-
-  U58({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [int x]) => null;
-  List<Function> m1(int x0, [List<T> x]) => null;
-  List<T> m2([core.List<core.int> x]) => null;
-  void m3(List<Function> x) => null;
-  void m4<A>(List<Function> x) => null;
-  int Function([List<Function> x]) m5<B extends core.int>() => null;
-  int Function(List<T> x0) m6<B extends core.int>() => null;
-  Function Function(int x0, [Function x1]) m7<B extends core.int>() => null;
-  Function Function(int x0, {core.List<core.int> x}) m8<B extends core.int>() =>
-      null;
-  List<Function> Function(Function x) m9<B extends core.int>() => null;
-  List<Function> Function(int y, [core.List<core.int> x])
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function([int x0]) m11<B extends core.int>() => null;
-  core.List<core.int> Function({List<Function> x}) m12<B extends core.int>() =>
-      null;
-  core.List<core.int> Function() m13<B extends core.int>() => null;
-  List<T> Function(int x0, [List<Function> x]) m14<B extends core.int>() =>
-      null;
-  List<T> Function([List<T> x0]) m15<B extends core.int>() => null;
-  Function(int x, [Function x0]) m16<B extends core.int>() => null;
-  Function(int y, {core.List<core.int> x}) m17<B extends core.int>() => null;
-  void Function([Function x]) m18<B extends core.int>() => null;
-  void Function(core.List<core.int> x0) m19<B extends core.int>() => null;
-  int Function<A>(A x) m20<B extends core.int>() => null;
-  core.List<core.int> Function<A>(List<A> x) m21<B extends core.int>() => null;
-  List<A> Function<A>(int x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, [int x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [int x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, [int x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, [List<T> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [List<T> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, [List<T> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(int x0, [List<T> x]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(int x0, [List<T> x]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([core.List<core.int> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([core.List<core.int> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([core.List<core.int> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(List<Function> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(List<Function> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>(List<Function> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>(List<Function> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function([List<Function> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x1) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x1) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function(List<T> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x1) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x1) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x2, [Function x3]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [Function x3]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x2, [Function x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(Function x) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x1]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x1]) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([int x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function({List<Function> x}) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<Function> x})
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function({List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function() Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function() Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is core.List<core.int> Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int x1, [List<Function> x]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<Function> x]) Function<B extends core.int>()
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [List<Function> x])
-            Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [List<Function> x])
-          Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x1]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x1]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function([List<T> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x1]) Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x1]) Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [Function x1]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [Function x1]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x, [Function x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {core.List<core.int> x}) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([Function x]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function([Function x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x1) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x1) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(A x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(A x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<A> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<A> x) Function<B extends core.int>()
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<A> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// List<A> Function<A>(int x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(int x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U58().runTests();
-  new U58<int>(tIsInt: true).runTests();
-  new U58<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type59_test.dart b/tests/language/function_type/function_type59_test.dart
deleted file mode 100644
index 0e4e095..0000000
--- a/tests/language/function_type/function_type59_test.dart
+++ /dev/null
@@ -1,919 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, [int x]);
-typedef F1<T> = List<Function> Function(int y, [List<T> x]);
-typedef F2<T> = List<T> Function(int x0, [core.List<core.int> x]);
-typedef F3<T> = void Function([List<Function> x]);
-typedef F4<T> = void Function<A>(core.List<core.int> x);
-typedef F5<T> = int Function([List<Function> x]) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function(List<T> x1) Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x2, [Function x3])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(Function x)
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function([int x1])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function({List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function() Function<B extends core.int>(
-    int x);
-typedef F14<T> = List<T> Function(int x1, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function([List<T> x1]) Function<B extends core.int>(
-    int x);
-typedef F16<T> = Function(int x, [Function x1]) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F18<T> = void Function([Function x]) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function(core.List<core.int> x1)
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>(A x) Function<B extends core.int>(int x);
-typedef F21<T> = core.List<core.int> Function<A>(List<A> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = List<A> Function<A>(int x) Function<B extends core.int>(int x);
-
-Function f0(int y, [int x]) => null;
-List<Function> f1(int y, [List<int> x]) => null;
-List<int> f2(int x0, [core.List<core.int> x]) => null;
-void f3([List<Function> x]) => null;
-void f4<A>(core.List<core.int> x) => null;
-int Function([List<Function> x]) f5<B extends core.int>(int x) => null;
-int Function(List<int> x0) f6<B extends core.int>(int x) => null;
-Function Function(int x0, [Function x1]) f7<B extends core.int>(int x) => null;
-Function Function(int x0, {core.List<core.int> x}) f8<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function(Function x) f9<B extends core.int>(int x) => null;
-List<Function> Function(int y, [core.List<core.int> x]) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function([int x0]) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function({List<Function> x}) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function() f13<B extends core.int>(int x) => null;
-List<int> Function(int x0, [List<Function> x]) f14<B extends core.int>(int x) =>
-    null;
-List<int> Function([List<int> x0]) f15<B extends core.int>(int x) => null;
-Function(int x, [Function x0]) f16<B extends core.int>(int x) => null;
-Function(int y, {core.List<core.int> x}) f17<B extends core.int>(int x) => null;
-void Function([Function x]) f18<B extends core.int>(int x) => null;
-void Function(core.List<core.int> x0) f19<B extends core.int>(int x) => null;
-int Function<A>(A x) f20<B extends core.int>(int x) => null;
-core.List<core.int> Function<A>(List<A> x) f21<B extends core.int>(int x) =>
-    null;
-List<A> Function<A>(int x) f22<B extends core.int>(int x) => null;
-
-class U59<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, [int x]) x0;
-  List<Function> Function(int y, [List<T> x]) x1;
-  List<T> Function(int x0, [core.List<core.int> x]) x2;
-  void Function([List<Function> x]) x3;
-  void Function<A>(core.List<core.int> x) x4;
-  int Function([List<Function> x]) Function<B extends core.int>(int x) x5;
-  int Function(List<T> x1) Function<B extends core.int>(int x) x6;
-  Function Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-      x7;
-  Function Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>(int x) x8;
-  List<Function> Function(Function x) Function<B extends core.int>(int x) x9;
-  List<Function> Function(int y, [core.List<core.int> x])
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function([int x1]) Function<B extends core.int>(int x)
-      x11;
-  core.List<core.int> Function({List<Function> x}) Function<B extends core.int>(
-      int x) x12;
-  core.List<core.int> Function() Function<B extends core.int>(int x) x13;
-  List<T> Function(int x1, [List<Function> x]) Function<B extends core.int>(
-      int x) x14;
-  List<T> Function([List<T> x1]) Function<B extends core.int>(int x) x15;
-  Function(int x, [Function x1]) Function<B extends core.int>(int x) x16;
-  Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-      x17;
-  void Function([Function x]) Function<B extends core.int>(int x) x18;
-  void Function(core.List<core.int> x1) Function<B extends core.int>(int x) x19;
-  int Function<A>(A x) Function<B extends core.int>(int x) x20;
-  core.List<core.int> Function<A>(List<A> x) Function<B extends core.int>(int x)
-      x21;
-  List<A> Function<A>(int x) Function<B extends core.int>(int x) x22;
-
-  U59({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, [int x]) => null;
-  List<Function> m1(int y, [List<T> x]) => null;
-  List<T> m2(int x0, [core.List<core.int> x]) => null;
-  void m3([List<Function> x]) => null;
-  void m4<A>(core.List<core.int> x) => null;
-  int Function([List<Function> x]) m5<B extends core.int>(int x) => null;
-  int Function(List<T> x0) m6<B extends core.int>(int x) => null;
-  Function Function(int x0, [Function x1]) m7<B extends core.int>(int x) =>
-      null;
-  Function Function(int x0, {core.List<core.int> x}) m8<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function(Function x) m9<B extends core.int>(int x) => null;
-  List<Function> Function(int y, [core.List<core.int> x])
-      m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function([int x0]) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function({List<Function> x}) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function() m13<B extends core.int>(int x) => null;
-  List<T> Function(int x0, [List<Function> x]) m14<B extends core.int>(int x) =>
-      null;
-  List<T> Function([List<T> x0]) m15<B extends core.int>(int x) => null;
-  Function(int x, [Function x0]) m16<B extends core.int>(int x) => null;
-  Function(int y, {core.List<core.int> x}) m17<B extends core.int>(int x) =>
-      null;
-  void Function([Function x]) m18<B extends core.int>(int x) => null;
-  void Function(core.List<core.int> x0) m19<B extends core.int>(int x) => null;
-  int Function<A>(A x) m20<B extends core.int>(int x) => null;
-  core.List<core.int> Function<A>(List<A> x) m21<B extends core.int>(int x) =>
-      null;
-  List<A> Function<A>(int x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, [int x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, [int x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, [int x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, [List<T> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [List<T> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, [List<T> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(int y, [List<T> x]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(int y, [List<T> x]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(int x0, [core.List<core.int> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [core.List<core.int> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, [core.List<core.int> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, [core.List<core.int> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([List<Function> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([List<Function> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>(core.List<core.int> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>(core.List<core.int> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(List<T> x1) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(List<T> x1) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(List<T> x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(List<T> x1) Function<B extends core.int>(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(List<T> x1) Function<B extends core.int>(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x2, [Function x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function(Function x) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x) Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([int x1]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x1]) Function<B extends core.int>(int x)
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function({List<Function> x}) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<Function> x})
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function({List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function() Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function() Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function()
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<Function> x]) Function<B extends core.int>(
-        int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [List<Function> x])
-            Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [List<Function> x]) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function([List<T> x1]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x1]) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function([List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function([List<T> x1]) Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function([List<T> x1]) Function<B extends core.int>(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x, [Function x1]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x, [Function x1]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x, [Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-        l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function([Function x]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function([Function x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(A x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(A x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(A x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// core.List<core.int> Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function<A>(List<A> x) Function<B extends core.int>(
-        int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is core.List<core.int> Function<A>(List<A> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// List<A> Function<A>(int x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(int x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U59().runTests();
-  new U59<int>(tIsInt: true).runTests();
-  new U59<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type5_test.dart b/tests/language/function_type/function_type5_test.dart
deleted file mode 100644
index fe68fc9..0000000
--- a/tests/language/function_type/function_type5_test.dart
+++ /dev/null
@@ -1,951 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function([int x1]);
-typedef F1<T> = Function Function([List<T> x1]);
-typedef F2<T> = core.List<core.int> Function(core.List<core.int> x0);
-typedef F3<T> = Function(int y, [List<Function> x]);
-typedef F4<T> = Function Function<A>();
-typedef F5<T> = int Function(int y, {int x}) Function(int x);
-typedef F6<T> = int Function(int x1, [core.List<core.int> x]) Function(int x);
-typedef F7<T> = Function Function(int x1) Function(int x);
-typedef F8<T> = Function Function(int x, [List<Function> x1]) Function(int x);
-typedef F9<T> = Function Function(int y, {List<T> x}) Function(int x);
-typedef F10<T> = List<Function> Function([List<Function> x]) Function(int x);
-typedef F11<T> = List<Function> Function(List<T> x1) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x2, [Function x3]) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function(int x1, {core.List<core.int> x})
-    Function(int x);
-typedef F14<T> = List<T> Function(Function x) Function(int x);
-typedef F15<T> = List<T> Function(int y, [core.List<core.int> x]) Function(
-    int x);
-typedef F16<T> = Function([int x1]) Function(int x);
-typedef F17<T> = Function({List<Function> x}) Function(int x);
-typedef F18<T> = Function() Function(int x);
-typedef F19<T> = void Function(int x1, [List<Function> x]) Function(int x);
-typedef F20<T> = void Function([List<T> x1]) Function(int x);
-typedef F21<T> = List<Function> Function<A>(List<Function> x) Function(int x);
-typedef F22<T> = Function<A>(core.List<core.int> x) Function(int x);
-typedef F23<T> = void Function<A>(List<T> x) Function(int x);
-
-int f0([int x0]) => null;
-Function f1([List<int> x0]) => null;
-core.List<core.int> f2(core.List<core.int> x0) => null;
-f3(int y, [List<Function> x]) => null;
-Function f4<A>() => null;
-int Function(int y, {int x}) f5(int x) => null;
-int Function(int x0, [core.List<core.int> x]) f6(int x) => null;
-Function Function(int x0) f7(int x) => null;
-Function Function(int x, [List<Function> x0]) f8(int x) => null;
-Function Function(int y, {List<int> x}) f9(int x) => null;
-List<Function> Function([List<Function> x]) f10(int x) => null;
-List<Function> Function(List<int> x0) f11(int x) => null;
-core.List<core.int> Function(int x0, [Function x1]) f12(int x) => null;
-core.List<core.int> Function(int x0, {core.List<core.int> x}) f13(int x) =>
-    null;
-List<int> Function(Function x) f14(int x) => null;
-List<int> Function(int y, [core.List<core.int> x]) f15(int x) => null;
-Function([int x0]) f16(int x) => null;
-Function({List<Function> x}) f17(int x) => null;
-Function() f18(int x) => null;
-void Function(int x0, [List<Function> x]) f19(int x) => null;
-void Function([List<int> x0]) f20(int x) => null;
-List<Function> Function<A>(List<Function> x) f21(int x) => null;
-Function<A>(core.List<core.int> x) f22(int x) => null;
-void Function<A>(List<int> x) f23(int x) => null;
-
-class U5<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function([int x1]) x0;
-  Function Function([List<T> x1]) x1;
-  core.List<core.int> Function(core.List<core.int> x0) x2;
-  Function(int y, [List<Function> x]) x3;
-  Function Function<A>() x4;
-  int Function(int y, {int x}) Function(int x) x5;
-  int Function(int x1, [core.List<core.int> x]) Function(int x) x6;
-  Function Function(int x1) Function(int x) x7;
-  Function Function(int x, [List<Function> x1]) Function(int x) x8;
-  Function Function(int y, {List<T> x}) Function(int x) x9;
-  List<Function> Function([List<Function> x]) Function(int x) x10;
-  List<Function> Function(List<T> x1) Function(int x) x11;
-  core.List<core.int> Function(int x2, [Function x3]) Function(int x) x12;
-  core.List<core.int> Function(int x1, {core.List<core.int> x}) Function(int x)
-      x13;
-  List<T> Function(Function x) Function(int x) x14;
-  List<T> Function(int y, [core.List<core.int> x]) Function(int x) x15;
-  Function([int x1]) Function(int x) x16;
-  Function({List<Function> x}) Function(int x) x17;
-  Function() Function(int x) x18;
-  void Function(int x1, [List<Function> x]) Function(int x) x19;
-  void Function([List<T> x1]) Function(int x) x20;
-  List<Function> Function<A>(List<Function> x) Function(int x) x21;
-  Function<A>(core.List<core.int> x) Function(int x) x22;
-  void Function<A>(List<T> x) Function(int x) x23;
-
-  U5({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0([int x0]) => null;
-  Function m1([List<T> x0]) => null;
-  core.List<core.int> m2(core.List<core.int> x0) => null;
-  m3(int y, [List<Function> x]) => null;
-  Function m4<A>() => null;
-  int Function(int y, {int x}) m5(int x) => null;
-  int Function(int x0, [core.List<core.int> x]) m6(int x) => null;
-  Function Function(int x0) m7(int x) => null;
-  Function Function(int x, [List<Function> x0]) m8(int x) => null;
-  Function Function(int y, {List<T> x}) m9(int x) => null;
-  List<Function> Function([List<Function> x]) m10(int x) => null;
-  List<Function> Function(List<T> x0) m11(int x) => null;
-  core.List<core.int> Function(int x0, [Function x1]) m12(int x) => null;
-  core.List<core.int> Function(int x0, {core.List<core.int> x}) m13(int x) =>
-      null;
-  List<T> Function(Function x) m14(int x) => null;
-  List<T> Function(int y, [core.List<core.int> x]) m15(int x) => null;
-  Function([int x0]) m16(int x) => null;
-  Function({List<Function> x}) m17(int x) => null;
-  Function() m18(int x) => null;
-  void Function(int x0, [List<Function> x]) m19(int x) => null;
-  void Function([List<T> x0]) m20(int x) => null;
-  List<Function> Function<A>(List<Function> x) m21(int x) => null;
-  Function<A>(core.List<core.int> x) m22(int x) => null;
-  void Function<A>(List<T> x) m23(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function([int x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function([int x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function([int x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function([List<T> x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function([List<T> x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function([List<T> x1]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function([List<T> x1]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function(core.List<core.int> x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int y, [List<Function> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int y, [List<Function> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int y, [List<Function> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {int x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {int x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {int x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [core.List<core.int> x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [core.List<core.int> x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x1, [core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<Function> x1]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<Function> x1]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int x, [List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int y, {List<T> x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<T> x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int y, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int y, {List<T> x}) Function(int x) l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int y, {List<T> x}) Function(int x) l9 = m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function([List<Function> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function([List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(List<T> x1) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x1) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(List<T> x1) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(List<T> x1) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(List<T> x1) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x2, [Function x3]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [Function x3]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2, [Function x3])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, {core.List<core.int> x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {core.List<core.int> x}) Function(
-        int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1,
-            {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(Function x) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(Function x) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [core.List<core.int> x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [core.List<core.int> x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [core.List<core.int> x]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [core.List<core.int> x]) Function(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([int x1]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([int x1]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([int x1]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<Function> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<Function> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function() Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function() Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is Function() Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [List<Function> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<Function> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x1, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function([List<T> x1]) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function([List<T> x1]) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function([List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function([List<T> x1]) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function([List<T> x1]) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<Function> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<Function> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<Function> Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(core.List<core.int> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(core.List<core.int> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<T> x) Function(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<T> x) Function(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        void Function<A>(List<T> x) Function(int x) l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      void Function<A>(List<T> x) Function(int x) l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U5().runTests();
-  new U5<int>(tIsInt: true).runTests();
-  new U5<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type60_test.dart b/tests/language/function_type/function_type60_test.dart
deleted file mode 100644
index 7553474..0000000
--- a/tests/language/function_type/function_type60_test.dart
+++ /dev/null
@@ -1,967 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0);
-typedef F1<T> = List<Function> Function(List<T> x0);
-typedef F2<T> = List<T> Function(int y, [core.List<core.int> x]);
-typedef F3<T> = void Function(int x0, [List<Function> x]);
-typedef F4<T> = void Function<A>(List<T> x);
-typedef F5<T> = int Function(int x0, [List<Function> x]) Function();
-typedef F6<T> = int Function([List<T> x1]) Function();
-typedef F7<T> = Function Function(int x, [Function x2]) Function();
-typedef F8<T> = Function Function(int y, {core.List<core.int> x}) Function();
-typedef F9<T> = List<Function> Function([Function x]) Function();
-typedef F10<T> = List<Function> Function(core.List<core.int> x0) Function();
-typedef F11<T> = core.List<core.int> Function(int x1, [int x2]) Function();
-typedef F12<T> = core.List<core.int> Function(int x0, {List<Function> x})
-    Function();
-typedef F13<T> = List<T> Function(int x) Function();
-typedef F14<T> = List<T> Function(int y, [List<Function> x]) Function();
-typedef F15<T> = List<T> Function(int x1, [List<T> x2]) Function();
-typedef F16<T> = Function({Function x}) Function();
-typedef F17<T> = Function(List<T> x) Function();
-typedef F18<T> = void Function(int x0, [Function x]) Function();
-typedef F19<T> = void Function([core.List<core.int> x1]) Function();
-typedef F20<T> = int Function<A>(List<A> x) Function();
-typedef F21<T> = List<T> Function<A>(int x) Function();
-typedef F22<T> = List<A> Function<A>(Function x) Function();
-
-Function f0(int x0) => null;
-List<Function> f1(List<int> x0) => null;
-List<int> f2(int y, [core.List<core.int> x]) => null;
-void f3(int x0, [List<Function> x]) => null;
-void f4<A>(List<int> x) => null;
-int Function(int x0, [List<Function> x]) f5() => null;
-int Function([List<int> x0]) f6() => null;
-Function Function(int x, [Function x0]) f7() => null;
-Function Function(int y, {core.List<core.int> x}) f8() => null;
-List<Function> Function([Function x]) f9() => null;
-List<Function> Function(core.List<core.int> x0) f10() => null;
-core.List<core.int> Function(int x0, [int x1]) f11() => null;
-core.List<core.int> Function(int x0, {List<Function> x}) f12() => null;
-List<int> Function(int x) f13() => null;
-List<int> Function(int y, [List<Function> x]) f14() => null;
-List<int> Function(int x0, [List<int> x1]) f15() => null;
-Function({Function x}) f16() => null;
-Function(List<int> x) f17() => null;
-void Function(int x0, [Function x]) f18() => null;
-void Function([core.List<core.int> x0]) f19() => null;
-int Function<A>(List<A> x) f20() => null;
-List<int> Function<A>(int x) f21() => null;
-List<A> Function<A>(Function x) f22() => null;
-
-class U60<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0) x0;
-  List<Function> Function(List<T> x0) x1;
-  List<T> Function(int y, [core.List<core.int> x]) x2;
-  void Function(int x0, [List<Function> x]) x3;
-  void Function<A>(List<T> x) x4;
-  int Function(int x0, [List<Function> x]) Function() x5;
-  int Function([List<T> x1]) Function() x6;
-  Function Function(int x, [Function x2]) Function() x7;
-  Function Function(int y, {core.List<core.int> x}) Function() x8;
-  List<Function> Function([Function x]) Function() x9;
-  List<Function> Function(core.List<core.int> x0) Function() x10;
-  core.List<core.int> Function(int x1, [int x2]) Function() x11;
-  core.List<core.int> Function(int x0, {List<Function> x}) Function() x12;
-  List<T> Function(int x) Function() x13;
-  List<T> Function(int y, [List<Function> x]) Function() x14;
-  List<T> Function(int x1, [List<T> x2]) Function() x15;
-  Function({Function x}) Function() x16;
-  Function(List<T> x) Function() x17;
-  void Function(int x0, [Function x]) Function() x18;
-  void Function([core.List<core.int> x1]) Function() x19;
-  int Function<A>(List<A> x) Function() x20;
-  List<T> Function<A>(int x) Function() x21;
-  List<A> Function<A>(Function x) Function() x22;
-
-  U60({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0) => null;
-  List<Function> m1(List<T> x0) => null;
-  List<T> m2(int y, [core.List<core.int> x]) => null;
-  void m3(int x0, [List<Function> x]) => null;
-  void m4<A>(List<T> x) => null;
-  int Function(int x0, [List<Function> x]) m5() => null;
-  int Function([List<T> x0]) m6() => null;
-  Function Function(int x, [Function x0]) m7() => null;
-  Function Function(int y, {core.List<core.int> x}) m8() => null;
-  List<Function> Function([Function x]) m9() => null;
-  List<Function> Function(core.List<core.int> x0) m10() => null;
-  core.List<core.int> Function(int x0, [int x1]) m11() => null;
-  core.List<core.int> Function(int x0, {List<Function> x}) m12() => null;
-  List<T> Function(int x) m13() => null;
-  List<T> Function(int y, [List<Function> x]) m14() => null;
-  List<T> Function(int x0, [List<T> x1]) m15() => null;
-  Function({Function x}) m16() => null;
-  Function(List<T> x) m17() => null;
-  void Function(int x0, [Function x]) m18() => null;
-  void Function([core.List<core.int> x0]) m19() => null;
-  int Function<A>(List<A> x) m20() => null;
-  List<T> Function<A>(int x) m21() => null;
-  List<A> Function<A>(Function x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(List<T> x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(List<T> x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(List<T> x0) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(List<T> x0) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(int y, [core.List<core.int> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [core.List<core.int> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, [core.List<core.int> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, [core.List<core.int> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, [List<Function> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, [List<Function> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, [List<Function> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>(List<T> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>(List<T> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>(List<T> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-    if (!tIsBool) {
-      Expect.isTrue(f4 is F4<int>);
-      Expect.isFalse(f4 is F4<bool>);
-      Expect.isTrue(confuse(f4) is F4<int>);
-      Expect.isFalse(confuse(f4) is F4<bool>);
-      Expect.equals(tIsDynamic, m4 is F4<bool>);
-      Expect.equals(tIsDynamic, confuse(m4) is F4<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          x4 = confuse(f4);
-        });
-        void Function<A>(List<T> x) l4;
-        Expect.throws(() {
-          l4 = (f4 as dynamic);
-        });
-        Expect.throws(() {
-          l4 = confuse(f4);
-        });
-      }
-      void Function<A>(List<T> x) l4 = m4;
-      // In checked mode, verifies the type.
-      x4 = m4;
-      x4 = confuse(m4);
-    }
-  }
-
-  /// int Function(int x0, [List<Function> x]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x0, [List<Function> x]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x0, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x1]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x1]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([List<T> x1]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x1]) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x1]) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x, [Function x2]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [Function x2]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x, [Function x2]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {core.List<core.int> x}) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {core.List<core.int> x}) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(int y, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([Function x]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x0) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x0) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(core.List<core.int> x0) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1, [int x2]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [int x2]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x1, [int x2]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x0, {List<Function> x}) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {List<Function> x}) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12
-        is core.List<core.int> Function(int x0, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [List<Function> x]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<Function> x]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int y, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [List<Function> x]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [List<Function> x]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, [List<T> x2]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<T> x2]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, [List<T> x2]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, [List<T> x2]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({Function x}) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({Function x}) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function({Function x}) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(List<T> x) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x0, [Function x]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x0, [Function x]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x0, [Function x]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x1]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x1]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([core.List<core.int> x1]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<A> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<A> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(int x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(int x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(int x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(int x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(int x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(Function x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(Function x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U60().runTests();
-  new U60<int>(tIsInt: true).runTests();
-  new U60<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type61_test.dart b/tests/language/function_type/function_type61_test.dart
deleted file mode 100644
index f55ad37..0000000
--- a/tests/language/function_type/function_type61_test.dart
+++ /dev/null
@@ -1,947 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([int x1]);
-typedef F1<T> = List<Function> Function([List<T> x1]);
-typedef F2<T> = List<T> Function(core.List<core.int> x0);
-typedef F3<T> = void Function(int y, [List<Function> x]);
-typedef F4<T> = void Function<A>();
-typedef F5<T> = int Function(int x1, [List<Function> x]) Function(int x);
-typedef F6<T> = int Function([List<T> x1]) Function(int x);
-typedef F7<T> = Function Function(int x, [Function x1]) Function(int x);
-typedef F8<T> = Function Function(int y, {core.List<core.int> x}) Function(
-    int x);
-typedef F9<T> = List<Function> Function([Function x]) Function(int x);
-typedef F10<T> = List<Function> Function(core.List<core.int> x1) Function(
-    int x);
-typedef F11<T> = core.List<core.int> Function(int x2, [int x3]) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, {List<Function> x})
-    Function(int x);
-typedef F13<T> = List<T> Function(int x) Function(int x);
-typedef F14<T> = List<T> Function(int y, [List<Function> x]) Function(int x);
-typedef F15<T> = List<T> Function(int x2, [List<T> x3]) Function(int x);
-typedef F16<T> = Function({Function x}) Function(int x);
-typedef F17<T> = Function(List<T> x) Function(int x);
-typedef F18<T> = void Function(int x1, [Function x]) Function(int x);
-typedef F19<T> = void Function([core.List<core.int> x1]) Function(int x);
-typedef F20<T> = int Function<A>(List<A> x) Function(int x);
-typedef F21<T> = List<T> Function<A>(int x) Function(int x);
-typedef F22<T> = List<A> Function<A>(Function x) Function(int x);
-
-Function f0([int x0]) => null;
-List<Function> f1([List<int> x0]) => null;
-List<int> f2(core.List<core.int> x0) => null;
-void f3(int y, [List<Function> x]) => null;
-void f4<A>() => null;
-int Function(int x0, [List<Function> x]) f5(int x) => null;
-int Function([List<int> x0]) f6(int x) => null;
-Function Function(int x, [Function x0]) f7(int x) => null;
-Function Function(int y, {core.List<core.int> x}) f8(int x) => null;
-List<Function> Function([Function x]) f9(int x) => null;
-List<Function> Function(core.List<core.int> x0) f10(int x) => null;
-core.List<core.int> Function(int x0, [int x1]) f11(int x) => null;
-core.List<core.int> Function(int x0, {List<Function> x}) f12(int x) => null;
-List<int> Function(int x) f13(int x) => null;
-List<int> Function(int y, [List<Function> x]) f14(int x) => null;
-List<int> Function(int x0, [List<int> x1]) f15(int x) => null;
-Function({Function x}) f16(int x) => null;
-Function(List<int> x) f17(int x) => null;
-void Function(int x0, [Function x]) f18(int x) => null;
-void Function([core.List<core.int> x0]) f19(int x) => null;
-int Function<A>(List<A> x) f20(int x) => null;
-List<int> Function<A>(int x) f21(int x) => null;
-List<A> Function<A>(Function x) f22(int x) => null;
-
-class U61<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([int x1]) x0;
-  List<Function> Function([List<T> x1]) x1;
-  List<T> Function(core.List<core.int> x0) x2;
-  void Function(int y, [List<Function> x]) x3;
-  void Function<A>() x4;
-  int Function(int x1, [List<Function> x]) Function(int x) x5;
-  int Function([List<T> x1]) Function(int x) x6;
-  Function Function(int x, [Function x1]) Function(int x) x7;
-  Function Function(int y, {core.List<core.int> x}) Function(int x) x8;
-  List<Function> Function([Function x]) Function(int x) x9;
-  List<Function> Function(core.List<core.int> x1) Function(int x) x10;
-  core.List<core.int> Function(int x2, [int x3]) Function(int x) x11;
-  core.List<core.int> Function(int x1, {List<Function> x}) Function(int x) x12;
-  List<T> Function(int x) Function(int x) x13;
-  List<T> Function(int y, [List<Function> x]) Function(int x) x14;
-  List<T> Function(int x2, [List<T> x3]) Function(int x) x15;
-  Function({Function x}) Function(int x) x16;
-  Function(List<T> x) Function(int x) x17;
-  void Function(int x1, [Function x]) Function(int x) x18;
-  void Function([core.List<core.int> x1]) Function(int x) x19;
-  int Function<A>(List<A> x) Function(int x) x20;
-  List<T> Function<A>(int x) Function(int x) x21;
-  List<A> Function<A>(Function x) Function(int x) x22;
-
-  U61({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([int x0]) => null;
-  List<Function> m1([List<T> x0]) => null;
-  List<T> m2(core.List<core.int> x0) => null;
-  void m3(int y, [List<Function> x]) => null;
-  void m4<A>() => null;
-  int Function(int x0, [List<Function> x]) m5(int x) => null;
-  int Function([List<T> x0]) m6(int x) => null;
-  Function Function(int x, [Function x0]) m7(int x) => null;
-  Function Function(int y, {core.List<core.int> x}) m8(int x) => null;
-  List<Function> Function([Function x]) m9(int x) => null;
-  List<Function> Function(core.List<core.int> x0) m10(int x) => null;
-  core.List<core.int> Function(int x0, [int x1]) m11(int x) => null;
-  core.List<core.int> Function(int x0, {List<Function> x}) m12(int x) => null;
-  List<T> Function(int x) m13(int x) => null;
-  List<T> Function(int y, [List<Function> x]) m14(int x) => null;
-  List<T> Function(int x0, [List<T> x1]) m15(int x) => null;
-  Function({Function x}) m16(int x) => null;
-  Function(List<T> x) m17(int x) => null;
-  void Function(int x0, [Function x]) m18(int x) => null;
-  void Function([core.List<core.int> x0]) m19(int x) => null;
-  int Function<A>(List<A> x) m20(int x) => null;
-  List<T> Function<A>(int x) m21(int x) => null;
-  List<A> Function<A>(Function x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([int x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([int x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([int x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function([List<T> x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function([List<T> x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function([List<T> x1]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function([List<T> x1]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(core.List<core.int> x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(core.List<core.int> x0) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(core.List<core.int> x0) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, [List<Function> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<Function> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, [List<Function> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [List<Function> x]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<Function> x]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect
-        .isTrue(m5 is int Function(int x1, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x1]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x1]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function([List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x1]) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x1]) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x, [Function x1]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [Function x1]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect
-        .isTrue(m7 is Function Function(int x, [Function x1]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {core.List<core.int> x}) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {core.List<core.int> x}) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([Function x]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x1) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x1) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(core.List<core.int> x1) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x2, [int x3]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [int x3]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x2, [int x3]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, {List<Function> x}) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {List<Function> x}) Function(int x)
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            {List<Function> x})
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [List<Function> x]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<Function> x]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int y, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [List<Function> x]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [List<Function> x]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x2, [List<T> x3]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [List<T> x3]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect
-        .isTrue(m15 is List<T> Function(int x2, [List<T> x3]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x2, [List<T> x3]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x2, [List<T> x3]) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({Function x}) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({Function x}) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function({Function x}) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x1, [Function x]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [Function x]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x1]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x1]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect
-        .isTrue(m19 is void Function([core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<A> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<A> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is int Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(int x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(int x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(int x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(int x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(Function x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(Function x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U61().runTests();
-  new U61<int>(tIsInt: true).runTests();
-  new U61<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type62_test.dart b/tests/language/function_type/function_type62_test.dart
deleted file mode 100644
index cb59fcc..0000000
--- a/tests/language/function_type/function_type62_test.dart
+++ /dev/null
@@ -1,983 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x1, [int x2]);
-typedef F1<T> = List<Function> Function(int x1, [List<T> x2]);
-typedef F2<T> = List<T> Function([core.List<core.int> x1]);
-typedef F3<T> = void Function(List<Function> x0);
-typedef F4<T> = void Function<A>(A x);
-typedef F5<T> = int Function(int x1, [List<Function> x])
-    Function<B extends core.int>();
-typedef F6<T> = int Function([List<T> x1]) Function<B extends core.int>();
-typedef F7<T> = Function Function(int x, [Function x1])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function([Function x])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(core.List<core.int> x1)
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int x2, [int x3])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x1, {List<Function> x})
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function(int x) Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int y, [List<Function> x])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x2, [List<T> x3])
-    Function<B extends core.int>();
-typedef F16<T> = Function({Function x}) Function<B extends core.int>();
-typedef F17<T> = Function(List<T> x) Function<B extends core.int>();
-typedef F18<T> = void Function(int x1, [Function x])
-    Function<B extends core.int>();
-typedef F19<T> = void Function([core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F20<T> = int Function<A>(List<A> x) Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>(int x) Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>(Function x) Function<B extends core.int>();
-
-Function f0(int x0, [int x1]) => null;
-List<Function> f1(int x0, [List<int> x1]) => null;
-List<int> f2([core.List<core.int> x0]) => null;
-void f3(List<Function> x0) => null;
-void f4<A>(A x) => null;
-int Function(int x0, [List<Function> x]) f5<B extends core.int>() => null;
-int Function([List<int> x0]) f6<B extends core.int>() => null;
-Function Function(int x, [Function x0]) f7<B extends core.int>() => null;
-Function Function(int y, {core.List<core.int> x}) f8<B extends core.int>() =>
-    null;
-List<Function> Function([Function x]) f9<B extends core.int>() => null;
-List<Function> Function(core.List<core.int> x0) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x0, [int x1]) f11<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x0, {List<Function> x})
-    f12<B extends core.int>() => null;
-List<int> Function(int x) f13<B extends core.int>() => null;
-List<int> Function(int y, [List<Function> x]) f14<B extends core.int>() => null;
-List<int> Function(int x0, [List<int> x1]) f15<B extends core.int>() => null;
-Function({Function x}) f16<B extends core.int>() => null;
-Function(List<int> x) f17<B extends core.int>() => null;
-void Function(int x0, [Function x]) f18<B extends core.int>() => null;
-void Function([core.List<core.int> x0]) f19<B extends core.int>() => null;
-int Function<A>(List<A> x) f20<B extends core.int>() => null;
-List<int> Function<A>(int x) f21<B extends core.int>() => null;
-List<A> Function<A>(Function x) f22<B extends core.int>() => null;
-
-class U62<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x1, [int x2]) x0;
-  List<Function> Function(int x1, [List<T> x2]) x1;
-  List<T> Function([core.List<core.int> x1]) x2;
-  void Function(List<Function> x0) x3;
-  void Function<A>(A x) x4;
-  int Function(int x1, [List<Function> x]) Function<B extends core.int>() x5;
-  int Function([List<T> x1]) Function<B extends core.int>() x6;
-  Function Function(int x, [Function x1]) Function<B extends core.int>() x7;
-  Function Function(int y, {core.List<core.int> x})
-      Function<B extends core.int>() x8;
-  List<Function> Function([Function x]) Function<B extends core.int>() x9;
-  List<Function> Function(core.List<core.int> x1) Function<B extends core.int>()
-      x10;
-  core.List<core.int> Function(int x2, [int x3]) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function(int x1, {List<Function> x})
-      Function<B extends core.int>() x12;
-  List<T> Function(int x) Function<B extends core.int>() x13;
-  List<T> Function(int y, [List<Function> x]) Function<B extends core.int>()
-      x14;
-  List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>() x15;
-  Function({Function x}) Function<B extends core.int>() x16;
-  Function(List<T> x) Function<B extends core.int>() x17;
-  void Function(int x1, [Function x]) Function<B extends core.int>() x18;
-  void Function([core.List<core.int> x1]) Function<B extends core.int>() x19;
-  int Function<A>(List<A> x) Function<B extends core.int>() x20;
-  List<T> Function<A>(int x) Function<B extends core.int>() x21;
-  List<A> Function<A>(Function x) Function<B extends core.int>() x22;
-
-  U62({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [int x1]) => null;
-  List<Function> m1(int x0, [List<T> x1]) => null;
-  List<T> m2([core.List<core.int> x0]) => null;
-  void m3(List<Function> x0) => null;
-  void m4<A>(A x) => null;
-  int Function(int x0, [List<Function> x]) m5<B extends core.int>() => null;
-  int Function([List<T> x0]) m6<B extends core.int>() => null;
-  Function Function(int x, [Function x0]) m7<B extends core.int>() => null;
-  Function Function(int y, {core.List<core.int> x}) m8<B extends core.int>() =>
-      null;
-  List<Function> Function([Function x]) m9<B extends core.int>() => null;
-  List<Function> Function(core.List<core.int> x0) m10<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, [int x1]) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, {List<Function> x})
-      m12<B extends core.int>() => null;
-  List<T> Function(int x) m13<B extends core.int>() => null;
-  List<T> Function(int y, [List<Function> x]) m14<B extends core.int>() => null;
-  List<T> Function(int x0, [List<T> x1]) m15<B extends core.int>() => null;
-  Function({Function x}) m16<B extends core.int>() => null;
-  Function(List<T> x) m17<B extends core.int>() => null;
-  void Function(int x0, [Function x]) m18<B extends core.int>() => null;
-  void Function([core.List<core.int> x0]) m19<B extends core.int>() => null;
-  int Function<A>(List<A> x) m20<B extends core.int>() => null;
-  List<T> Function<A>(int x) m21<B extends core.int>() => null;
-  List<A> Function<A>(Function x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x1, [int x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [int x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x1, [int x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x1, [List<T> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<T> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x1, [List<T> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(int x1, [List<T> x2]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(int x1, [List<T> x2]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([core.List<core.int> x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([core.List<core.int> x1]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([core.List<core.int> x1]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(List<Function> x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(List<Function> x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [List<Function> x]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<Function> x]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x1]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x1]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function([List<T> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x1]) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x1]) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x, [Function x1]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [Function x1]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x, [Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([Function x]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x1) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x1)
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(core.List<core.int> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x2, [int x3]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [int x3])
-        Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x2, [int x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, {List<Function> x}) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {List<Function> x})
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect
-        .isTrue(m13 is List<T> Function(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x) Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [List<Function> x]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<Function> x]) Function<B extends core.int>()
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [List<Function> x])
-            Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [List<Function> x]) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x2, [List<T> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>()
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>()
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({Function x}) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({Function x}) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function({Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x1, [Function x]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [Function x]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x1]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x1]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<A> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<A> x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(List<A> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(int x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(int x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(int x) Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(int x) Function<B extends core.int>() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(Function x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(Function x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U62().runTests();
-  new U62<int>(tIsInt: true).runTests();
-  new U62<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type63_test.dart b/tests/language/function_type/function_type63_test.dart
deleted file mode 100644
index 5822d05..0000000
--- a/tests/language/function_type/function_type63_test.dart
+++ /dev/null
@@ -1,1005 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x, [int x2]);
-typedef F1<T> = List<Function> Function(int x, [List<T> x2]);
-typedef F2<T> = List<T> Function(int x1, [core.List<core.int> x2]);
-typedef F3<T> = void Function([List<Function> x1]);
-typedef F4<T> = void Function<A>(List<A> x);
-typedef F5<T> = int Function(int x1, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F6<T> = int Function([List<T> x1]) Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x, [Function x1])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function([Function x])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(core.List<core.int> x1)
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int x2, [int x3])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function(int x) Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int y, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int x2, [List<T> x3])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function({Function x}) Function<B extends core.int>(int x);
-typedef F17<T> = Function(List<T> x) Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int x1, [Function x])
-    Function<B extends core.int>(int x);
-typedef F19<T> = void Function([core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F20<T> = int Function<A>(List<A> x) Function<B extends core.int>(int x);
-typedef F21<T> = List<T> Function<A>(int x) Function<B extends core.int>(int x);
-typedef F22<T> = List<A> Function<A>(Function x) Function<B extends core.int>(
-    int x);
-
-Function f0(int x, [int x0]) => null;
-List<Function> f1(int x, [List<int> x0]) => null;
-List<int> f2(int x0, [core.List<core.int> x1]) => null;
-void f3([List<Function> x0]) => null;
-void f4<A>(List<A> x) => null;
-int Function(int x0, [List<Function> x]) f5<B extends core.int>(int x) => null;
-int Function([List<int> x0]) f6<B extends core.int>(int x) => null;
-Function Function(int x, [Function x0]) f7<B extends core.int>(int x) => null;
-Function Function(int y, {core.List<core.int> x}) f8<B extends core.int>(
-        int x) =>
-    null;
-List<Function> Function([Function x]) f9<B extends core.int>(int x) => null;
-List<Function> Function(core.List<core.int> x0) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x0, [int x1]) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int x0, {List<Function> x})
-    f12<B extends core.int>(int x) => null;
-List<int> Function(int x) f13<B extends core.int>(int x) => null;
-List<int> Function(int y, [List<Function> x]) f14<B extends core.int>(int x) =>
-    null;
-List<int> Function(int x0, [List<int> x1]) f15<B extends core.int>(int x) =>
-    null;
-Function({Function x}) f16<B extends core.int>(int x) => null;
-Function(List<int> x) f17<B extends core.int>(int x) => null;
-void Function(int x0, [Function x]) f18<B extends core.int>(int x) => null;
-void Function([core.List<core.int> x0]) f19<B extends core.int>(int x) => null;
-int Function<A>(List<A> x) f20<B extends core.int>(int x) => null;
-List<int> Function<A>(int x) f21<B extends core.int>(int x) => null;
-List<A> Function<A>(Function x) f22<B extends core.int>(int x) => null;
-
-class U63<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x, [int x2]) x0;
-  List<Function> Function(int x, [List<T> x2]) x1;
-  List<T> Function(int x1, [core.List<core.int> x2]) x2;
-  void Function([List<Function> x1]) x3;
-  void Function<A>(List<A> x) x4;
-  int Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-      x5;
-  int Function([List<T> x1]) Function<B extends core.int>(int x) x6;
-  Function Function(int x, [Function x1]) Function<B extends core.int>(int x)
-      x7;
-  Function Function(int y, {core.List<core.int> x})
-      Function<B extends core.int>(int x) x8;
-  List<Function> Function([Function x]) Function<B extends core.int>(int x) x9;
-  List<Function> Function(core.List<core.int> x1) Function<B extends core.int>(
-      int x) x10;
-  core.List<core.int> Function(int x2, [int x3]) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function(int x1, {List<Function> x})
-      Function<B extends core.int>(int x) x12;
-  List<T> Function(int x) Function<B extends core.int>(int x) x13;
-  List<T> Function(int y, [List<Function> x]) Function<B extends core.int>(
-      int x) x14;
-  List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-      x15;
-  Function({Function x}) Function<B extends core.int>(int x) x16;
-  Function(List<T> x) Function<B extends core.int>(int x) x17;
-  void Function(int x1, [Function x]) Function<B extends core.int>(int x) x18;
-  void Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-      x19;
-  int Function<A>(List<A> x) Function<B extends core.int>(int x) x20;
-  List<T> Function<A>(int x) Function<B extends core.int>(int x) x21;
-  List<A> Function<A>(Function x) Function<B extends core.int>(int x) x22;
-
-  U63({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x, [int x0]) => null;
-  List<Function> m1(int x, [List<T> x0]) => null;
-  List<T> m2(int x0, [core.List<core.int> x1]) => null;
-  void m3([List<Function> x0]) => null;
-  void m4<A>(List<A> x) => null;
-  int Function(int x0, [List<Function> x]) m5<B extends core.int>(int x) =>
-      null;
-  int Function([List<T> x0]) m6<B extends core.int>(int x) => null;
-  Function Function(int x, [Function x0]) m7<B extends core.int>(int x) => null;
-  Function Function(int y, {core.List<core.int> x}) m8<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function([Function x]) m9<B extends core.int>(int x) => null;
-  List<Function> Function(core.List<core.int> x0) m10<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x0, [int x1]) m11<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x0, {List<Function> x})
-      m12<B extends core.int>(int x) => null;
-  List<T> Function(int x) m13<B extends core.int>(int x) => null;
-  List<T> Function(int y, [List<Function> x]) m14<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int x0, [List<T> x1]) m15<B extends core.int>(int x) => null;
-  Function({Function x}) m16<B extends core.int>(int x) => null;
-  Function(List<T> x) m17<B extends core.int>(int x) => null;
-  void Function(int x0, [Function x]) m18<B extends core.int>(int x) => null;
-  void Function([core.List<core.int> x0]) m19<B extends core.int>(int x) =>
-      null;
-  int Function<A>(List<A> x) m20<B extends core.int>(int x) => null;
-  List<T> Function<A>(int x) m21<B extends core.int>(int x) => null;
-  List<A> Function<A>(Function x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x, [int x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x, [int x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x, [int x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x, [List<T> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [List<T> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x, [List<T> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(int x, [List<T> x2]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(int x, [List<T> x2]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(int x1, [core.List<core.int> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [core.List<core.int> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x1, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x1, [core.List<core.int> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x1, [core.List<core.int> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([List<Function> x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([List<Function> x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([List<Function> x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// void Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    void Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is void Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-        l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function([List<T> x1]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function([List<T> x1]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function([List<T> x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function([List<T> x1]) Function<B extends core.int>(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function([List<T> x1]) Function<B extends core.int>(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x, [Function x1]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x, [Function x1]) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x, [Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// List<Function> Function([Function x]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x]) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x2, [int x3]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [int x3]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x2, [int x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x) Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x) Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<Function> x]) Function<B extends core.int>(
-        int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, [List<Function> x])
-            Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, [List<Function> x]) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>(
-            int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function({Function x}) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function({Function x}) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function({Function x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect
-        .isTrue(m17 is Function(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x) Function<B extends core.int>(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x1, [Function x]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [Function x]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// int Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    int Function<A>(List<A> x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is int Function<A>(List<A> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(int x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(int x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(int x) Function<B extends core.int>(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(int x) Function<B extends core.int>(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(Function x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U63().runTests();
-  new U63<int>(tIsInt: true).runTests();
-  new U63<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type64_test.dart b/tests/language/function_type/function_type64_test.dart
deleted file mode 100644
index e202bbe..0000000
--- a/tests/language/function_type/function_type64_test.dart
+++ /dev/null
@@ -1,967 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function({int x});
-typedef F1<T> = List<Function> Function({List<T> x});
-typedef F2<T> = List<T> Function(int x, [core.List<core.int> x2]);
-typedef F3<T> = void Function(int x1, [List<Function> x2]);
-typedef F4<T> = int Function(int x) Function();
-typedef F5<T> = int Function(int y, [List<Function> x]) Function();
-typedef F6<T> = int Function(int x1, [List<T> x2]) Function();
-typedef F7<T> = Function Function({Function x}) Function();
-typedef F8<T> = Function Function(List<T> x) Function();
-typedef F9<T> = List<Function> Function(int x0, [Function x]) Function();
-typedef F10<T> = List<Function> Function([core.List<core.int> x1]) Function();
-typedef F11<T> = core.List<core.int> Function(int x, [int x2]) Function();
-typedef F12<T> = core.List<core.int> Function(int y, {List<Function> x})
-    Function();
-typedef F13<T> = List<T> Function([int x]) Function();
-typedef F14<T> = List<T> Function(List<Function> x0) Function();
-typedef F15<T> = List<T> Function(int x, [List<T> x2]) Function();
-typedef F16<T> = Function(int x0, {Function x}) Function();
-typedef F17<T> = Function([List<T> x]) Function();
-typedef F18<T> = void Function(int y, [Function x]) Function();
-typedef F19<T> = void Function(int x1, [core.List<core.int> x2]) Function();
-typedef F20<T> = Function Function<A>(int x) Function();
-typedef F21<T> = List<T> Function<A>(Function x) Function();
-typedef F22<T> = List<A> Function<A>(List<Function> x) Function();
-
-Function f0({int x}) => null;
-List<Function> f1({List<int> x}) => null;
-List<int> f2(int x, [core.List<core.int> x0]) => null;
-void f3(int x0, [List<Function> x1]) => null;
-int Function(int x) f4() => null;
-int Function(int y, [List<Function> x]) f5() => null;
-int Function(int x0, [List<int> x1]) f6() => null;
-Function Function({Function x}) f7() => null;
-Function Function(List<int> x) f8() => null;
-List<Function> Function(int x0, [Function x]) f9() => null;
-List<Function> Function([core.List<core.int> x0]) f10() => null;
-core.List<core.int> Function(int x, [int x0]) f11() => null;
-core.List<core.int> Function(int y, {List<Function> x}) f12() => null;
-List<int> Function([int x]) f13() => null;
-List<int> Function(List<Function> x0) f14() => null;
-List<int> Function(int x, [List<int> x0]) f15() => null;
-Function(int x0, {Function x}) f16() => null;
-Function([List<int> x]) f17() => null;
-void Function(int y, [Function x]) f18() => null;
-void Function(int x0, [core.List<core.int> x1]) f19() => null;
-Function Function<A>(int x) f20() => null;
-List<int> Function<A>(Function x) f21() => null;
-List<A> Function<A>(List<Function> x) f22() => null;
-
-class U64<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function({int x}) x0;
-  List<Function> Function({List<T> x}) x1;
-  List<T> Function(int x, [core.List<core.int> x2]) x2;
-  void Function(int x1, [List<Function> x2]) x3;
-  int Function(int x) Function() x4;
-  int Function(int y, [List<Function> x]) Function() x5;
-  int Function(int x1, [List<T> x2]) Function() x6;
-  Function Function({Function x}) Function() x7;
-  Function Function(List<T> x) Function() x8;
-  List<Function> Function(int x0, [Function x]) Function() x9;
-  List<Function> Function([core.List<core.int> x1]) Function() x10;
-  core.List<core.int> Function(int x, [int x2]) Function() x11;
-  core.List<core.int> Function(int y, {List<Function> x}) Function() x12;
-  List<T> Function([int x]) Function() x13;
-  List<T> Function(List<Function> x0) Function() x14;
-  List<T> Function(int x, [List<T> x2]) Function() x15;
-  Function(int x0, {Function x}) Function() x16;
-  Function([List<T> x]) Function() x17;
-  void Function(int y, [Function x]) Function() x18;
-  void Function(int x1, [core.List<core.int> x2]) Function() x19;
-  Function Function<A>(int x) Function() x20;
-  List<T> Function<A>(Function x) Function() x21;
-  List<A> Function<A>(List<Function> x) Function() x22;
-
-  U64({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0({int x}) => null;
-  List<Function> m1({List<T> x}) => null;
-  List<T> m2(int x, [core.List<core.int> x0]) => null;
-  void m3(int x0, [List<Function> x1]) => null;
-  int Function(int x) m4() => null;
-  int Function(int y, [List<Function> x]) m5() => null;
-  int Function(int x0, [List<T> x1]) m6() => null;
-  Function Function({Function x}) m7() => null;
-  Function Function(List<T> x) m8() => null;
-  List<Function> Function(int x0, [Function x]) m9() => null;
-  List<Function> Function([core.List<core.int> x0]) m10() => null;
-  core.List<core.int> Function(int x, [int x0]) m11() => null;
-  core.List<core.int> Function(int y, {List<Function> x}) m12() => null;
-  List<T> Function([int x]) m13() => null;
-  List<T> Function(List<Function> x0) m14() => null;
-  List<T> Function(int x, [List<T> x0]) m15() => null;
-  Function(int x0, {Function x}) m16() => null;
-  Function([List<T> x]) m17() => null;
-  void Function(int y, [Function x]) m18() => null;
-  void Function(int x0, [core.List<core.int> x1]) m19() => null;
-  Function Function<A>(int x) m20() => null;
-  List<T> Function<A>(Function x) m21() => null;
-  List<A> Function<A>(List<Function> x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function({int x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function({int x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function({int x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function({List<T> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function({List<T> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function({List<T> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function({List<T> x}) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function({List<T> x}) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(int x, [core.List<core.int> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [core.List<core.int> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x, [core.List<core.int> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x, [core.List<core.int> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x1, [List<Function> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<Function> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x1, [List<Function> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, [List<Function> x]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<Function> x]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [List<T> x2]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<T> x2]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x1, [List<T> x2]) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x1, [List<T> x2]) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function({Function x}) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({Function x}) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function({Function x}) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(List<T> x) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x0, [Function x]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [Function x]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int x0, [Function x]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x1]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x1]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function([core.List<core.int> x1]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x, [int x2]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [int x2]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x, [int x2]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, {List<Function> x}) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<Function> x}) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, {List<Function> x})
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function([int x]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x0) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x0) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x0) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x0) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x0) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [List<T> x2]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<T> x2]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [List<T> x2]) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [List<T> x2]) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x0, {Function x}) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x0, {Function x}) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x0, {Function x}) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([List<T> x]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x]) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x]) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, [Function x]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [Function x]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, [Function x]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [core.List<core.int> x2]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [core.List<core.int> x2]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x1, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(int x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(int x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(int x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(Function x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(Function x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(Function x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(Function x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<Function> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<Function> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U64().runTests();
-  new U64<int>(tIsInt: true).runTests();
-  new U64<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type65_test.dart b/tests/language/function_type/function_type65_test.dart
deleted file mode 100644
index e195c5a..0000000
--- a/tests/language/function_type/function_type65_test.dart
+++ /dev/null
@@ -1,970 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, {int x});
-typedef F1<T> = List<Function> Function(int x0, {List<T> x});
-typedef F2<T> = List<T> Function({core.List<core.int> x});
-typedef F3<T> = void Function(int x, [List<Function> x2]);
-typedef F4<T> = int Function(int x) Function(int x);
-typedef F5<T> = int Function(int y, [List<Function> x]) Function(int x);
-typedef F6<T> = int Function(int x2, [List<T> x3]) Function(int x);
-typedef F7<T> = Function Function({Function x}) Function(int x);
-typedef F8<T> = Function Function(List<T> x) Function(int x);
-typedef F9<T> = List<Function> Function(int x1, [Function x]) Function(int x);
-typedef F10<T> = List<Function> Function([core.List<core.int> x1]) Function(
-    int x);
-typedef F11<T> = core.List<core.int> Function(int x, [int x1]) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int y, {List<Function> x})
-    Function(int x);
-typedef F13<T> = List<T> Function([int x]) Function(int x);
-typedef F14<T> = List<T> Function(List<Function> x1) Function(int x);
-typedef F15<T> = List<T> Function(int x, [List<T> x1]) Function(int x);
-typedef F16<T> = Function(int x1, {Function x}) Function(int x);
-typedef F17<T> = Function([List<T> x]) Function(int x);
-typedef F18<T> = void Function(int y, [Function x]) Function(int x);
-typedef F19<T> = void Function(int x2, [core.List<core.int> x3]) Function(
-    int x);
-typedef F20<T> = Function Function<A>(int x) Function(int x);
-typedef F21<T> = List<T> Function<A>(Function x) Function(int x);
-typedef F22<T> = List<A> Function<A>(List<Function> x) Function(int x);
-
-Function f0(int x0, {int x}) => null;
-List<Function> f1(int x0, {List<int> x}) => null;
-List<int> f2({core.List<core.int> x}) => null;
-void f3(int x, [List<Function> x0]) => null;
-int Function(int x) f4(int x) => null;
-int Function(int y, [List<Function> x]) f5(int x) => null;
-int Function(int x0, [List<int> x1]) f6(int x) => null;
-Function Function({Function x}) f7(int x) => null;
-Function Function(List<int> x) f8(int x) => null;
-List<Function> Function(int x0, [Function x]) f9(int x) => null;
-List<Function> Function([core.List<core.int> x0]) f10(int x) => null;
-core.List<core.int> Function(int x, [int x0]) f11(int x) => null;
-core.List<core.int> Function(int y, {List<Function> x}) f12(int x) => null;
-List<int> Function([int x]) f13(int x) => null;
-List<int> Function(List<Function> x0) f14(int x) => null;
-List<int> Function(int x, [List<int> x0]) f15(int x) => null;
-Function(int x0, {Function x}) f16(int x) => null;
-Function([List<int> x]) f17(int x) => null;
-void Function(int y, [Function x]) f18(int x) => null;
-void Function(int x0, [core.List<core.int> x1]) f19(int x) => null;
-Function Function<A>(int x) f20(int x) => null;
-List<int> Function<A>(Function x) f21(int x) => null;
-List<A> Function<A>(List<Function> x) f22(int x) => null;
-
-class U65<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, {int x}) x0;
-  List<Function> Function(int x0, {List<T> x}) x1;
-  List<T> Function({core.List<core.int> x}) x2;
-  void Function(int x, [List<Function> x2]) x3;
-  int Function(int x) Function(int x) x4;
-  int Function(int y, [List<Function> x]) Function(int x) x5;
-  int Function(int x2, [List<T> x3]) Function(int x) x6;
-  Function Function({Function x}) Function(int x) x7;
-  Function Function(List<T> x) Function(int x) x8;
-  List<Function> Function(int x1, [Function x]) Function(int x) x9;
-  List<Function> Function([core.List<core.int> x1]) Function(int x) x10;
-  core.List<core.int> Function(int x, [int x1]) Function(int x) x11;
-  core.List<core.int> Function(int y, {List<Function> x}) Function(int x) x12;
-  List<T> Function([int x]) Function(int x) x13;
-  List<T> Function(List<Function> x1) Function(int x) x14;
-  List<T> Function(int x, [List<T> x1]) Function(int x) x15;
-  Function(int x1, {Function x}) Function(int x) x16;
-  Function([List<T> x]) Function(int x) x17;
-  void Function(int y, [Function x]) Function(int x) x18;
-  void Function(int x2, [core.List<core.int> x3]) Function(int x) x19;
-  Function Function<A>(int x) Function(int x) x20;
-  List<T> Function<A>(Function x) Function(int x) x21;
-  List<A> Function<A>(List<Function> x) Function(int x) x22;
-
-  U65({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, {int x}) => null;
-  List<Function> m1(int x0, {List<T> x}) => null;
-  List<T> m2({core.List<core.int> x}) => null;
-  void m3(int x, [List<Function> x0]) => null;
-  int Function(int x) m4(int x) => null;
-  int Function(int y, [List<Function> x]) m5(int x) => null;
-  int Function(int x0, [List<T> x1]) m6(int x) => null;
-  Function Function({Function x}) m7(int x) => null;
-  Function Function(List<T> x) m8(int x) => null;
-  List<Function> Function(int x0, [Function x]) m9(int x) => null;
-  List<Function> Function([core.List<core.int> x0]) m10(int x) => null;
-  core.List<core.int> Function(int x, [int x0]) m11(int x) => null;
-  core.List<core.int> Function(int y, {List<Function> x}) m12(int x) => null;
-  List<T> Function([int x]) m13(int x) => null;
-  List<T> Function(List<Function> x0) m14(int x) => null;
-  List<T> Function(int x, [List<T> x0]) m15(int x) => null;
-  Function(int x0, {Function x}) m16(int x) => null;
-  Function([List<T> x]) m17(int x) => null;
-  void Function(int y, [Function x]) m18(int x) => null;
-  void Function(int x0, [core.List<core.int> x1]) m19(int x) => null;
-  Function Function<A>(int x) m20(int x) => null;
-  List<T> Function<A>(Function x) m21(int x) => null;
-  List<A> Function<A>(List<Function> x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, {int x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {int x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, {int x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int x0, {List<T> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {List<T> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int x0, {List<T> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(int x0, {List<T> x}) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(int x0, {List<T> x}) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function({core.List<core.int> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function({core.List<core.int> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function({core.List<core.int> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function({core.List<core.int> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function({core.List<core.int> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x, [List<Function> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<Function> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x, [List<Function> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, [List<Function> x]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<Function> x]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect
-        .isTrue(m5 is int Function(int y, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x2, [List<T> x3]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x2, [List<T> x3]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x2, [List<T> x3]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x2, [List<T> x3]) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x2, [List<T> x3]) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function({Function x}) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({Function x}) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function({Function x}) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x1, [Function x]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [Function x]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x1, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x1]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x1]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([core.List<core.int> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x, [int x1]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [int x1]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x, [int x1]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, {List<Function> x}) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<Function> x}) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, {List<Function> x})
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function([int x]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x1) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x1) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x1) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x1) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x1) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [List<T> x1]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<T> x1]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x, [List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [List<T> x1]) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [List<T> x1]) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, {Function x}) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, {Function x}) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x]) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x]) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, [Function x]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [Function x]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x2, [core.List<core.int> x3]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x2, [core.List<core.int> x3]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x2, [core.List<core.int> x3]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(int x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(int x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(Function x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(Function x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(Function x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(Function x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<Function> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<Function> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U65().runTests();
-  new U65<int>(tIsInt: true).runTests();
-  new U65<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type66_test.dart b/tests/language/function_type/function_type66_test.dart
deleted file mode 100644
index a2eec70..0000000
--- a/tests/language/function_type/function_type66_test.dart
+++ /dev/null
@@ -1,1010 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, {int x});
-typedef F1<T> = List<Function> Function(int y, {List<T> x});
-typedef F2<T> = List<T> Function(int x0, {core.List<core.int> x});
-typedef F3<T> = void Function({List<Function> x});
-typedef F4<T> = int Function(int x) Function<B extends core.int>();
-typedef F5<T> = int Function(int y, [List<Function> x])
-    Function<B extends core.int>();
-typedef F6<T> = int Function(int x2, [List<T> x3])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function({Function x}) Function<B extends core.int>();
-typedef F8<T> = Function Function(List<T> x) Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x1, [Function x])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function([core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int x, [int x1])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int y, {List<Function> x})
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function([int x]) Function<B extends core.int>();
-typedef F14<T> = List<T> Function(List<Function> x1)
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x, [List<T> x1])
-    Function<B extends core.int>();
-typedef F16<T> = Function(int x1, {Function x}) Function<B extends core.int>();
-typedef F17<T> = Function([List<T> x]) Function<B extends core.int>();
-typedef F18<T> = void Function(int y, [Function x])
-    Function<B extends core.int>();
-typedef F19<T> = void Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>();
-typedef F20<T> = Function Function<A>(int x) Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>(Function x) Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>(List<Function> x)
-    Function<B extends core.int>();
-
-Function f0(int y, {int x}) => null;
-List<Function> f1(int y, {List<int> x}) => null;
-List<int> f2(int x0, {core.List<core.int> x}) => null;
-void f3({List<Function> x}) => null;
-int Function(int x) f4<B extends core.int>() => null;
-int Function(int y, [List<Function> x]) f5<B extends core.int>() => null;
-int Function(int x0, [List<int> x1]) f6<B extends core.int>() => null;
-Function Function({Function x}) f7<B extends core.int>() => null;
-Function Function(List<int> x) f8<B extends core.int>() => null;
-List<Function> Function(int x0, [Function x]) f9<B extends core.int>() => null;
-List<Function> Function([core.List<core.int> x0]) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x, [int x0]) f11<B extends core.int>() => null;
-core.List<core.int> Function(int y, {List<Function> x})
-    f12<B extends core.int>() => null;
-List<int> Function([int x]) f13<B extends core.int>() => null;
-List<int> Function(List<Function> x0) f14<B extends core.int>() => null;
-List<int> Function(int x, [List<int> x0]) f15<B extends core.int>() => null;
-Function(int x0, {Function x}) f16<B extends core.int>() => null;
-Function([List<int> x]) f17<B extends core.int>() => null;
-void Function(int y, [Function x]) f18<B extends core.int>() => null;
-void Function(int x0, [core.List<core.int> x1]) f19<B extends core.int>() =>
-    null;
-Function Function<A>(int x) f20<B extends core.int>() => null;
-List<int> Function<A>(Function x) f21<B extends core.int>() => null;
-List<A> Function<A>(List<Function> x) f22<B extends core.int>() => null;
-
-class U66<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, {int x}) x0;
-  List<Function> Function(int y, {List<T> x}) x1;
-  List<T> Function(int x0, {core.List<core.int> x}) x2;
-  void Function({List<Function> x}) x3;
-  int Function(int x) Function<B extends core.int>() x4;
-  int Function(int y, [List<Function> x]) Function<B extends core.int>() x5;
-  int Function(int x2, [List<T> x3]) Function<B extends core.int>() x6;
-  Function Function({Function x}) Function<B extends core.int>() x7;
-  Function Function(List<T> x) Function<B extends core.int>() x8;
-  List<Function> Function(int x1, [Function x]) Function<B extends core.int>()
-      x9;
-  List<Function> Function([core.List<core.int> x1])
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function(int x, [int x1]) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function(int y, {List<Function> x})
-      Function<B extends core.int>() x12;
-  List<T> Function([int x]) Function<B extends core.int>() x13;
-  List<T> Function(List<Function> x1) Function<B extends core.int>() x14;
-  List<T> Function(int x, [List<T> x1]) Function<B extends core.int>() x15;
-  Function(int x1, {Function x}) Function<B extends core.int>() x16;
-  Function([List<T> x]) Function<B extends core.int>() x17;
-  void Function(int y, [Function x]) Function<B extends core.int>() x18;
-  void Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-      x19;
-  Function Function<A>(int x) Function<B extends core.int>() x20;
-  List<T> Function<A>(Function x) Function<B extends core.int>() x21;
-  List<A> Function<A>(List<Function> x) Function<B extends core.int>() x22;
-
-  U66({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, {int x}) => null;
-  List<Function> m1(int y, {List<T> x}) => null;
-  List<T> m2(int x0, {core.List<core.int> x}) => null;
-  void m3({List<Function> x}) => null;
-  int Function(int x) m4<B extends core.int>() => null;
-  int Function(int y, [List<Function> x]) m5<B extends core.int>() => null;
-  int Function(int x0, [List<T> x1]) m6<B extends core.int>() => null;
-  Function Function({Function x}) m7<B extends core.int>() => null;
-  Function Function(List<T> x) m8<B extends core.int>() => null;
-  List<Function> Function(int x0, [Function x]) m9<B extends core.int>() =>
-      null;
-  List<Function> Function([core.List<core.int> x0]) m10<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x, [int x0]) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int y, {List<Function> x})
-      m12<B extends core.int>() => null;
-  List<T> Function([int x]) m13<B extends core.int>() => null;
-  List<T> Function(List<Function> x0) m14<B extends core.int>() => null;
-  List<T> Function(int x, [List<T> x0]) m15<B extends core.int>() => null;
-  Function(int x0, {Function x}) m16<B extends core.int>() => null;
-  Function([List<T> x]) m17<B extends core.int>() => null;
-  void Function(int y, [Function x]) m18<B extends core.int>() => null;
-  void Function(int x0, [core.List<core.int> x1]) m19<B extends core.int>() =>
-      null;
-  Function Function<A>(int x) m20<B extends core.int>() => null;
-  List<T> Function<A>(Function x) m21<B extends core.int>() => null;
-  List<A> Function<A>(List<Function> x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, {int x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, {int x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, {int x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function(int y, {List<T> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {List<T> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function(int y, {List<T> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        List<Function> Function(int y, {List<T> x}) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      List<Function> Function(int y, {List<T> x}) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// List<T> Function(int x0, {core.List<core.int> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {core.List<core.int> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, {core.List<core.int> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, {core.List<core.int> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function({List<Function> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function({List<Function> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function({List<Function> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, [List<Function> x]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<Function> x]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x2, [List<T> x3]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x2, [List<T> x3]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x2, [List<T> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x2, [List<T> x3]) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x2, [List<T> x3]) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function({Function x}) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({Function x}) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function({Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x) Function<B extends core.int>() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x) Function<B extends core.int>() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x1, [Function x]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [Function x]) Function<B extends core.int>()
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x1]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x1])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x, [int x1]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [int x1]) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x, [int x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, {List<Function> x}) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<Function> x})
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x]) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function([int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x]) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x]) Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x1) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x1) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x1) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x1) Function<B extends core.int>() l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [List<T> x1]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<T> x1]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x, [List<T> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [List<T> x1]) Function<B extends core.int>()
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [List<T> x1]) Function<B extends core.int>() l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, {Function x}) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, {Function x}) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int x1, {Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x]) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x]) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, [Function x]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [Function x]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(int x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(int x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(Function x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(Function x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(Function x) Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(Function x) Function<B extends core.int>() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<Function> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U66().runTests();
-  new U66<int>(tIsInt: true).runTests();
-  new U66<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type67_test.dart b/tests/language/function_type/function_type67_test.dart
deleted file mode 100644
index 36fb371..0000000
--- a/tests/language/function_type/function_type67_test.dart
+++ /dev/null
@@ -1,1006 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(Function x);
-typedef F1<T> = List<Function> Function();
-typedef F2<T> = List<T> Function(int y, {core.List<core.int> x});
-typedef F3<T> = void Function(int x0, {List<Function> x});
-typedef F4<T> = int Function(int x) Function<B extends core.int>(int x);
-typedef F5<T> = int Function(int y, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F6<T> = int Function(int x2, [List<T> x3]) Function<B extends core.int>(
-    int x);
-typedef F7<T> = Function Function({Function x}) Function<B extends core.int>(
-    int x);
-typedef F8<T> = Function Function(List<T> x) Function<B extends core.int>(
-    int x);
-typedef F9<T> = List<Function> Function(int x1, [Function x])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function([core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int x, [int x1])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int y, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function([int x]) Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(List<Function> x1)
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int x, [List<T> x1])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(int x1, {Function x}) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function([List<T> x]) Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int y, [Function x])
-    Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>(int x) Function<B extends core.int>(
-    int x);
-typedef F21<T> = List<T> Function<A>(Function x) Function<B extends core.int>(
-    int x);
-typedef F22<T> = List<A> Function<A>(List<Function> x)
-    Function<B extends core.int>(int x);
-
-Function f0(Function x) => null;
-List<Function> f1() => null;
-List<int> f2(int y, {core.List<core.int> x}) => null;
-void f3(int x0, {List<Function> x}) => null;
-int Function(int x) f4<B extends core.int>(int x) => null;
-int Function(int y, [List<Function> x]) f5<B extends core.int>(int x) => null;
-int Function(int x0, [List<int> x1]) f6<B extends core.int>(int x) => null;
-Function Function({Function x}) f7<B extends core.int>(int x) => null;
-Function Function(List<int> x) f8<B extends core.int>(int x) => null;
-List<Function> Function(int x0, [Function x]) f9<B extends core.int>(int x) =>
-    null;
-List<Function> Function([core.List<core.int> x0]) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x, [int x0]) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int y, {List<Function> x}) f12<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function([int x]) f13<B extends core.int>(int x) => null;
-List<int> Function(List<Function> x0) f14<B extends core.int>(int x) => null;
-List<int> Function(int x, [List<int> x0]) f15<B extends core.int>(int x) =>
-    null;
-Function(int x0, {Function x}) f16<B extends core.int>(int x) => null;
-Function([List<int> x]) f17<B extends core.int>(int x) => null;
-void Function(int y, [Function x]) f18<B extends core.int>(int x) => null;
-void Function(int x0, [core.List<core.int> x1]) f19<B extends core.int>(
-        int x) =>
-    null;
-Function Function<A>(int x) f20<B extends core.int>(int x) => null;
-List<int> Function<A>(Function x) f21<B extends core.int>(int x) => null;
-List<A> Function<A>(List<Function> x) f22<B extends core.int>(int x) => null;
-
-class U67<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(Function x) x0;
-  List<Function> Function() x1;
-  List<T> Function(int y, {core.List<core.int> x}) x2;
-  void Function(int x0, {List<Function> x}) x3;
-  int Function(int x) Function<B extends core.int>(int x) x4;
-  int Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-      x5;
-  int Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) x6;
-  Function Function({Function x}) Function<B extends core.int>(int x) x7;
-  Function Function(List<T> x) Function<B extends core.int>(int x) x8;
-  List<Function> Function(int x1, [Function x]) Function<B extends core.int>(
-      int x) x9;
-  List<Function> Function([core.List<core.int> x1])
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function(int x, [int x1]) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function(int y, {List<Function> x})
-      Function<B extends core.int>(int x) x12;
-  List<T> Function([int x]) Function<B extends core.int>(int x) x13;
-  List<T> Function(List<Function> x1) Function<B extends core.int>(int x) x14;
-  List<T> Function(int x, [List<T> x1]) Function<B extends core.int>(int x) x15;
-  Function(int x1, {Function x}) Function<B extends core.int>(int x) x16;
-  Function([List<T> x]) Function<B extends core.int>(int x) x17;
-  void Function(int y, [Function x]) Function<B extends core.int>(int x) x18;
-  void Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(
-      int x) x19;
-  Function Function<A>(int x) Function<B extends core.int>(int x) x20;
-  List<T> Function<A>(Function x) Function<B extends core.int>(int x) x21;
-  List<A> Function<A>(List<Function> x) Function<B extends core.int>(int x) x22;
-
-  U67({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(Function x) => null;
-  List<Function> m1() => null;
-  List<T> m2(int y, {core.List<core.int> x}) => null;
-  void m3(int x0, {List<Function> x}) => null;
-  int Function(int x) m4<B extends core.int>(int x) => null;
-  int Function(int y, [List<Function> x]) m5<B extends core.int>(int x) => null;
-  int Function(int x0, [List<T> x1]) m6<B extends core.int>(int x) => null;
-  Function Function({Function x}) m7<B extends core.int>(int x) => null;
-  Function Function(List<T> x) m8<B extends core.int>(int x) => null;
-  List<Function> Function(int x0, [Function x]) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function([core.List<core.int> x0]) m10<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x, [int x0]) m11<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int y, {List<Function> x})
-      m12<B extends core.int>(int x) => null;
-  List<T> Function([int x]) m13<B extends core.int>(int x) => null;
-  List<T> Function(List<Function> x0) m14<B extends core.int>(int x) => null;
-  List<T> Function(int x, [List<T> x0]) m15<B extends core.int>(int x) => null;
-  Function(int x0, {Function x}) m16<B extends core.int>(int x) => null;
-  Function([List<T> x]) m17<B extends core.int>(int x) => null;
-  void Function(int y, [Function x]) m18<B extends core.int>(int x) => null;
-  void Function(int x0, [core.List<core.int> x1]) m19<B extends core.int>(
-          int x) =>
-      null;
-  Function Function<A>(int x) m20<B extends core.int>(int x) => null;
-  List<T> Function<A>(Function x) m21<B extends core.int>(int x) => null;
-  List<A> Function<A>(List<Function> x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(Function x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(Function x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(Function x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// List<Function> Function()
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    List<Function> Function() l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is List<Function> Function());
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, {core.List<core.int> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {core.List<core.int> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, {core.List<core.int> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, {core.List<core.int> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, {List<Function> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, {List<Function> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, {List<Function> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect
-        .isTrue(m4 is int Function(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-        l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-            l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-          l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function({Function x}) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function({Function x}) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function({Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x) Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x) Function<B extends core.int>(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x) Function<B extends core.int>(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x1, [Function x]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [Function x]) Function<B extends core.int>(
-        int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x, [int x1]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [int x1]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x, [int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x]) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function([int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x]) Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x]) Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(List<Function> x1) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(List<Function> x1) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(List<Function> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(List<Function> x1) Function<B extends core.int>(int x)
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(List<Function> x1) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x, [List<T> x1]) Function<B extends core.int>(
-            int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, {Function x}) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, {Function x}) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function([List<T> x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x]) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x]) Function<B extends core.int>(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, [Function x]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, [Function x]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(int x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(int x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(Function x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(Function x) Function<B extends core.int>(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(Function x) Function<B extends core.int>(int x) l21 =
-          m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<Function> x) Function<B extends core.int>(int x)
-        l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U67().runTests();
-  new U67<int>(tIsInt: true).runTests();
-  new U67<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type68_test.dart b/tests/language/function_type/function_type68_test.dart
deleted file mode 100644
index b1d155b..0000000
--- a/tests/language/function_type/function_type68_test.dart
+++ /dev/null
@@ -1,939 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([Function x]);
-typedef F1<T> = core.List<core.int> Function(int x);
-typedef F2<T> = List<T> Function(List<T> x);
-typedef F3<T> = void Function(int y, {List<Function> x});
-typedef F4<T> = int Function([int x]) Function();
-typedef F5<T> = int Function(List<Function> x0) Function();
-typedef F6<T> = int Function(int x, [List<T> x2]) Function();
-typedef F7<T> = Function Function(int x0, {Function x}) Function();
-typedef F8<T> = Function Function([List<T> x]) Function();
-typedef F9<T> = List<Function> Function(int y, [Function x]) Function();
-typedef F10<T> = List<Function> Function(int x1, [core.List<core.int> x2])
-    Function();
-typedef F11<T> = core.List<core.int> Function({int x}) Function();
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x) Function();
-typedef F13<T> = List<T> Function(int x0, [int x]) Function();
-typedef F14<T> = List<T> Function([List<Function> x1]) Function();
-typedef F15<T> = List<T> Function({List<T> x}) Function();
-typedef F16<T> = Function(int y, {Function x}) Function();
-typedef F17<T> = Function(int x0, [List<T> x]) Function();
-typedef F18<T> = void Function(Function x0) Function();
-typedef F19<T> = void Function(int x, [core.List<core.int> x2]) Function();
-typedef F20<T> = Function Function<A>(Function x) Function();
-typedef F21<T> = List<T> Function<A>(List<Function> x) Function();
-typedef F22<T> = List<A> Function<A>(core.List<core.int> x) Function();
-
-Function f0([Function x]) => null;
-core.List<core.int> f1(int x) => null;
-List<int> f2(List<int> x) => null;
-void f3(int y, {List<Function> x}) => null;
-int Function([int x]) f4() => null;
-int Function(List<Function> x0) f5() => null;
-int Function(int x, [List<int> x0]) f6() => null;
-Function Function(int x0, {Function x}) f7() => null;
-Function Function([List<int> x]) f8() => null;
-List<Function> Function(int y, [Function x]) f9() => null;
-List<Function> Function(int x0, [core.List<core.int> x1]) f10() => null;
-core.List<core.int> Function({int x}) f11() => null;
-core.List<core.int> Function(core.List<core.int> x) f12() => null;
-List<int> Function(int x0, [int x]) f13() => null;
-List<int> Function([List<Function> x0]) f14() => null;
-List<int> Function({List<int> x}) f15() => null;
-Function(int y, {Function x}) f16() => null;
-Function(int x0, [List<int> x]) f17() => null;
-void Function(Function x0) f18() => null;
-void Function(int x, [core.List<core.int> x0]) f19() => null;
-Function Function<A>(Function x) f20() => null;
-List<int> Function<A>(List<Function> x) f21() => null;
-List<A> Function<A>(core.List<core.int> x) f22() => null;
-
-class U68<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([Function x]) x0;
-  core.List<core.int> Function(int x) x1;
-  List<T> Function(List<T> x) x2;
-  void Function(int y, {List<Function> x}) x3;
-  int Function([int x]) Function() x4;
-  int Function(List<Function> x0) Function() x5;
-  int Function(int x, [List<T> x2]) Function() x6;
-  Function Function(int x0, {Function x}) Function() x7;
-  Function Function([List<T> x]) Function() x8;
-  List<Function> Function(int y, [Function x]) Function() x9;
-  List<Function> Function(int x1, [core.List<core.int> x2]) Function() x10;
-  core.List<core.int> Function({int x}) Function() x11;
-  core.List<core.int> Function(core.List<core.int> x) Function() x12;
-  List<T> Function(int x0, [int x]) Function() x13;
-  List<T> Function([List<Function> x1]) Function() x14;
-  List<T> Function({List<T> x}) Function() x15;
-  Function(int y, {Function x}) Function() x16;
-  Function(int x0, [List<T> x]) Function() x17;
-  void Function(Function x0) Function() x18;
-  void Function(int x, [core.List<core.int> x2]) Function() x19;
-  Function Function<A>(Function x) Function() x20;
-  List<T> Function<A>(List<Function> x) Function() x21;
-  List<A> Function<A>(core.List<core.int> x) Function() x22;
-
-  U68({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([Function x]) => null;
-  core.List<core.int> m1(int x) => null;
-  List<T> m2(List<T> x) => null;
-  void m3(int y, {List<Function> x}) => null;
-  int Function([int x]) m4() => null;
-  int Function(List<Function> x0) m5() => null;
-  int Function(int x, [List<T> x0]) m6() => null;
-  Function Function(int x0, {Function x}) m7() => null;
-  Function Function([List<T> x]) m8() => null;
-  List<Function> Function(int y, [Function x]) m9() => null;
-  List<Function> Function(int x0, [core.List<core.int> x1]) m10() => null;
-  core.List<core.int> Function({int x}) m11() => null;
-  core.List<core.int> Function(core.List<core.int> x) m12() => null;
-  List<T> Function(int x0, [int x]) m13() => null;
-  List<T> Function([List<Function> x0]) m14() => null;
-  List<T> Function({List<T> x}) m15() => null;
-  Function(int y, {Function x}) m16() => null;
-  Function(int x0, [List<T> x]) m17() => null;
-  void Function(Function x0) m18() => null;
-  void Function(int x, [core.List<core.int> x0]) m19() => null;
-  Function Function<A>(Function x) m20() => null;
-  List<T> Function<A>(List<Function> x) m21() => null;
-  List<A> Function<A>(core.List<core.int> x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([Function x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([Function x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([Function x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(List<T> x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(List<T> x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(List<T> x) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(List<T> x) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, {List<Function> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<Function> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, {List<Function> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function([int x]) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x]) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function([int x]) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(List<Function> x0) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x0) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(List<Function> x0) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [List<T> x2]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<T> x2]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x, [List<T> x2]) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x, [List<T> x2]) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x0, {Function x}) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {Function x}) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x0, {Function x}) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([List<T> x]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x]) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x]) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, [Function x]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [Function x]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int y, [Function x]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [core.List<core.int> x2]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [core.List<core.int> x2]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1,
-            [core.List<core.int> x2])
-        Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function({int x}) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({int x}) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function({int x}) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x0, [int x]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [int x]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x0, [int x]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x0, [int x]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x0, [int x]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x1]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x1]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x1]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x1]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x1]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({List<T> x}) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({List<T> x}) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function({List<T> x}) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({List<T> x}) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({List<T> x}) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {Function x}) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {Function x}) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, {Function x}) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x0, [List<T> x]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x0, [List<T> x]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x0, [List<T> x]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x0, [List<T> x]) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x0, [List<T> x]) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(Function x0) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x0) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(Function x0) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [core.List<core.int> x2]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [core.List<core.int> x2]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(Function x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(Function x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<Function> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<Function> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<Function> x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<Function> x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(core.List<core.int> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(core.List<core.int> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U68().runTests();
-  new U68<int>(tIsInt: true).runTests();
-  new U68<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type69_test.dart b/tests/language/function_type/function_type69_test.dart
deleted file mode 100644
index c46cfdb..0000000
--- a/tests/language/function_type/function_type69_test.dart
+++ /dev/null
@@ -1,943 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, [Function x]);
-typedef F1<T> = core.List<core.int> Function([int x]);
-typedef F2<T> = List<T> Function([List<T> x]);
-typedef F3<T> = void Function(core.List<core.int> x);
-typedef F4<T> = int Function([int x]) Function(int x);
-typedef F5<T> = int Function(List<Function> x1) Function(int x);
-typedef F6<T> = int Function(int x, [List<T> x1]) Function(int x);
-typedef F7<T> = Function Function(int x1, {Function x}) Function(int x);
-typedef F8<T> = Function Function([List<T> x]) Function(int x);
-typedef F9<T> = List<Function> Function(int y, [Function x]) Function(int x);
-typedef F10<T> = List<Function> Function(int x2, [core.List<core.int> x3])
-    Function(int x);
-typedef F11<T> = core.List<core.int> Function({int x}) Function(int x);
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x) Function(
-    int x);
-typedef F13<T> = List<T> Function(int x1, [int x]) Function(int x);
-typedef F14<T> = List<T> Function([List<Function> x1]) Function(int x);
-typedef F15<T> = List<T> Function({List<T> x}) Function(int x);
-typedef F16<T> = Function(int y, {Function x}) Function(int x);
-typedef F17<T> = Function(int x1, [List<T> x]) Function(int x);
-typedef F18<T> = void Function(Function x1) Function(int x);
-typedef F19<T> = void Function(int x, [core.List<core.int> x1]) Function(int x);
-typedef F20<T> = Function Function<A>(Function x) Function(int x);
-typedef F21<T> = List<T> Function<A>(List<Function> x) Function(int x);
-typedef F22<T> = List<A> Function<A>(core.List<core.int> x) Function(int x);
-
-Function f0(int x0, [Function x]) => null;
-core.List<core.int> f1([int x]) => null;
-List<int> f2([List<int> x]) => null;
-void f3(core.List<core.int> x) => null;
-int Function([int x]) f4(int x) => null;
-int Function(List<Function> x0) f5(int x) => null;
-int Function(int x, [List<int> x0]) f6(int x) => null;
-Function Function(int x0, {Function x}) f7(int x) => null;
-Function Function([List<int> x]) f8(int x) => null;
-List<Function> Function(int y, [Function x]) f9(int x) => null;
-List<Function> Function(int x0, [core.List<core.int> x1]) f10(int x) => null;
-core.List<core.int> Function({int x}) f11(int x) => null;
-core.List<core.int> Function(core.List<core.int> x) f12(int x) => null;
-List<int> Function(int x0, [int x]) f13(int x) => null;
-List<int> Function([List<Function> x0]) f14(int x) => null;
-List<int> Function({List<int> x}) f15(int x) => null;
-Function(int y, {Function x}) f16(int x) => null;
-Function(int x0, [List<int> x]) f17(int x) => null;
-void Function(Function x0) f18(int x) => null;
-void Function(int x, [core.List<core.int> x0]) f19(int x) => null;
-Function Function<A>(Function x) f20(int x) => null;
-List<int> Function<A>(List<Function> x) f21(int x) => null;
-List<A> Function<A>(core.List<core.int> x) f22(int x) => null;
-
-class U69<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, [Function x]) x0;
-  core.List<core.int> Function([int x]) x1;
-  List<T> Function([List<T> x]) x2;
-  void Function(core.List<core.int> x) x3;
-  int Function([int x]) Function(int x) x4;
-  int Function(List<Function> x1) Function(int x) x5;
-  int Function(int x, [List<T> x1]) Function(int x) x6;
-  Function Function(int x1, {Function x}) Function(int x) x7;
-  Function Function([List<T> x]) Function(int x) x8;
-  List<Function> Function(int y, [Function x]) Function(int x) x9;
-  List<Function> Function(int x2, [core.List<core.int> x3]) Function(int x) x10;
-  core.List<core.int> Function({int x}) Function(int x) x11;
-  core.List<core.int> Function(core.List<core.int> x) Function(int x) x12;
-  List<T> Function(int x1, [int x]) Function(int x) x13;
-  List<T> Function([List<Function> x1]) Function(int x) x14;
-  List<T> Function({List<T> x}) Function(int x) x15;
-  Function(int y, {Function x}) Function(int x) x16;
-  Function(int x1, [List<T> x]) Function(int x) x17;
-  void Function(Function x1) Function(int x) x18;
-  void Function(int x, [core.List<core.int> x1]) Function(int x) x19;
-  Function Function<A>(Function x) Function(int x) x20;
-  List<T> Function<A>(List<Function> x) Function(int x) x21;
-  List<A> Function<A>(core.List<core.int> x) Function(int x) x22;
-
-  U69({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [Function x]) => null;
-  core.List<core.int> m1([int x]) => null;
-  List<T> m2([List<T> x]) => null;
-  void m3(core.List<core.int> x) => null;
-  int Function([int x]) m4(int x) => null;
-  int Function(List<Function> x0) m5(int x) => null;
-  int Function(int x, [List<T> x0]) m6(int x) => null;
-  Function Function(int x0, {Function x}) m7(int x) => null;
-  Function Function([List<T> x]) m8(int x) => null;
-  List<Function> Function(int y, [Function x]) m9(int x) => null;
-  List<Function> Function(int x0, [core.List<core.int> x1]) m10(int x) => null;
-  core.List<core.int> Function({int x}) m11(int x) => null;
-  core.List<core.int> Function(core.List<core.int> x) m12(int x) => null;
-  List<T> Function(int x0, [int x]) m13(int x) => null;
-  List<T> Function([List<Function> x0]) m14(int x) => null;
-  List<T> Function({List<T> x}) m15(int x) => null;
-  Function(int y, {Function x}) m16(int x) => null;
-  Function(int x0, [List<T> x]) m17(int x) => null;
-  void Function(Function x0) m18(int x) => null;
-  void Function(int x, [core.List<core.int> x0]) m19(int x) => null;
-  Function Function<A>(Function x) m20(int x) => null;
-  List<T> Function<A>(List<Function> x) m21(int x) => null;
-  List<A> Function<A>(core.List<core.int> x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, [Function x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [Function x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, [Function x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function([int x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function([int x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([List<T> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([List<T> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([List<T> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([List<T> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(core.List<core.int> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(core.List<core.int> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function([int x]) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x]) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function([int x]) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(List<Function> x1) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x1) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(List<Function> x1) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [List<T> x1]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<T> x1]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x, [List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x, [List<T> x1]) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x, [List<T> x1]) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x1, {Function x}) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {Function x}) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect
-        .isTrue(m7 is Function Function(int x1, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x]) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x]) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, [Function x]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [Function x]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int y, [Function x]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x2, [core.List<core.int> x3]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [core.List<core.int> x3]) Function(int x)
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x2,
-            [core.List<core.int> x3])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function({int x}) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({int x}) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function({int x}) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(core.List<core.int> x)
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1, [int x]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [int x]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1, [int x]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1, [int x]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1, [int x]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x1]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x1]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x1]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x1]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({List<T> x}) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({List<T> x}) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function({List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({List<T> x}) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({List<T> x}) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {Function x}) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {Function x}) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [List<T> x]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<T> x]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x1, [List<T> x]) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x1, [List<T> x]) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(Function x1) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x1) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(Function x1) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [core.List<core.int> x1]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [core.List<core.int> x1]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x, [core.List<core.int> x1]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(Function x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(Function x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<Function> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<Function> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<Function> x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<Function> x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(core.List<core.int> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(core.List<core.int> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U69().runTests();
-  new U69<int>(tIsInt: true).runTests();
-  new U69<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type6_test.dart b/tests/language/function_type/function_type6_test.dart
deleted file mode 100644
index a1787fd..0000000
--- a/tests/language/function_type/function_type6_test.dart
+++ /dev/null
@@ -1,991 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x1, [int x2]);
-typedef F1<T> = Function Function(int x1, [List<T> x2]);
-typedef F2<T> = core.List<core.int> Function([core.List<core.int> x1]);
-typedef F3<T> = Function(List<Function> x0);
-typedef F4<T> = Function Function<A>(A x);
-typedef F5<T> = int Function(int y, {int x}) Function<B extends core.int>();
-typedef F6<T> = int Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(int x1) Function<B extends core.int>();
-typedef F8<T> = Function Function(int x, [List<Function> x1])
-    Function<B extends core.int>();
-typedef F9<T> = Function Function(int y, {List<T> x})
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function([List<Function> x])
-    Function<B extends core.int>();
-typedef F11<T> = List<Function> Function(List<T> x1)
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x2, [Function x3])
-    Function<B extends core.int>();
-typedef F13<T> = core.List<core.int> Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(Function x) Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F16<T> = Function([int x1]) Function<B extends core.int>();
-typedef F17<T> = Function({List<Function> x}) Function<B extends core.int>();
-typedef F18<T> = Function() Function<B extends core.int>();
-typedef F19<T> = void Function(int x1, [List<Function> x])
-    Function<B extends core.int>();
-typedef F20<T> = void Function([List<T> x1]) Function<B extends core.int>();
-typedef F21<T> = List<Function> Function<A>(List<Function> x)
-    Function<B extends core.int>();
-typedef F22<T> = Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F23<T> = void Function<A>(List<T> x) Function<B extends core.int>();
-
-int f0(int x0, [int x1]) => null;
-Function f1(int x0, [List<int> x1]) => null;
-core.List<core.int> f2([core.List<core.int> x0]) => null;
-f3(List<Function> x0) => null;
-Function f4<A>(A x) => null;
-int Function(int y, {int x}) f5<B extends core.int>() => null;
-int Function(int x0, [core.List<core.int> x]) f6<B extends core.int>() => null;
-Function Function(int x0) f7<B extends core.int>() => null;
-Function Function(int x, [List<Function> x0]) f8<B extends core.int>() => null;
-Function Function(int y, {List<int> x}) f9<B extends core.int>() => null;
-List<Function> Function([List<Function> x]) f10<B extends core.int>() => null;
-List<Function> Function(List<int> x0) f11<B extends core.int>() => null;
-core.List<core.int> Function(int x0, [Function x1]) f12<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x0, {core.List<core.int> x})
-    f13<B extends core.int>() => null;
-List<int> Function(Function x) f14<B extends core.int>() => null;
-List<int> Function(int y, [core.List<core.int> x]) f15<B extends core.int>() =>
-    null;
-Function([int x0]) f16<B extends core.int>() => null;
-Function({List<Function> x}) f17<B extends core.int>() => null;
-Function() f18<B extends core.int>() => null;
-void Function(int x0, [List<Function> x]) f19<B extends core.int>() => null;
-void Function([List<int> x0]) f20<B extends core.int>() => null;
-List<Function> Function<A>(List<Function> x) f21<B extends core.int>() => null;
-Function<A>(core.List<core.int> x) f22<B extends core.int>() => null;
-void Function<A>(List<int> x) f23<B extends core.int>() => null;
-
-class U6<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x1, [int x2]) x0;
-  Function Function(int x1, [List<T> x2]) x1;
-  core.List<core.int> Function([core.List<core.int> x1]) x2;
-  Function(List<Function> x0) x3;
-  Function Function<A>(A x) x4;
-  int Function(int y, {int x}) Function<B extends core.int>() x5;
-  int Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-      x6;
-  Function Function(int x1) Function<B extends core.int>() x7;
-  Function Function(int x, [List<Function> x1]) Function<B extends core.int>()
-      x8;
-  Function Function(int y, {List<T> x}) Function<B extends core.int>() x9;
-  List<Function> Function([List<Function> x]) Function<B extends core.int>()
-      x10;
-  List<Function> Function(List<T> x1) Function<B extends core.int>() x11;
-  core.List<core.int> Function(int x2, [Function x3])
-      Function<B extends core.int>() x12;
-  core.List<core.int> Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>() x13;
-  List<T> Function(Function x) Function<B extends core.int>() x14;
-  List<T> Function(int y, [core.List<core.int> x])
-      Function<B extends core.int>() x15;
-  Function([int x1]) Function<B extends core.int>() x16;
-  Function({List<Function> x}) Function<B extends core.int>() x17;
-  Function() Function<B extends core.int>() x18;
-  void Function(int x1, [List<Function> x]) Function<B extends core.int>() x19;
-  void Function([List<T> x1]) Function<B extends core.int>() x20;
-  List<Function> Function<A>(List<Function> x) Function<B extends core.int>()
-      x21;
-  Function<A>(core.List<core.int> x) Function<B extends core.int>() x22;
-  void Function<A>(List<T> x) Function<B extends core.int>() x23;
-
-  U6({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, [int x1]) => null;
-  Function m1(int x0, [List<T> x1]) => null;
-  core.List<core.int> m2([core.List<core.int> x0]) => null;
-  m3(List<Function> x0) => null;
-  Function m4<A>(A x) => null;
-  int Function(int y, {int x}) m5<B extends core.int>() => null;
-  int Function(int x0, [core.List<core.int> x]) m6<B extends core.int>() =>
-      null;
-  Function Function(int x0) m7<B extends core.int>() => null;
-  Function Function(int x, [List<Function> x0]) m8<B extends core.int>() =>
-      null;
-  Function Function(int y, {List<T> x}) m9<B extends core.int>() => null;
-  List<Function> Function([List<Function> x]) m10<B extends core.int>() => null;
-  List<Function> Function(List<T> x0) m11<B extends core.int>() => null;
-  core.List<core.int> Function(int x0, [Function x1])
-      m12<B extends core.int>() => null;
-  core.List<core.int> Function(int x0, {core.List<core.int> x})
-      m13<B extends core.int>() => null;
-  List<T> Function(Function x) m14<B extends core.int>() => null;
-  List<T> Function(int y, [core.List<core.int> x]) m15<B extends core.int>() =>
-      null;
-  Function([int x0]) m16<B extends core.int>() => null;
-  Function({List<Function> x}) m17<B extends core.int>() => null;
-  Function() m18<B extends core.int>() => null;
-  void Function(int x0, [List<Function> x]) m19<B extends core.int>() => null;
-  void Function([List<T> x0]) m20<B extends core.int>() => null;
-  List<Function> Function<A>(List<Function> x) m21<B extends core.int>() =>
-      null;
-  Function<A>(core.List<core.int> x) m22<B extends core.int>() => null;
-  void Function<A>(List<T> x) m23<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x1, [int x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x1, [int x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x1, [int x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(int x1, [List<T> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<T> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(int x1, [List<T> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(int x1, [List<T> x2]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(int x1, [List<T> x2]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function([core.List<core.int> x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(List<Function> x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(List<Function> x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(List<Function> x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>(A x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>(A x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>(A x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {int x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {int x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(int y, {int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-        l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect
-        .isTrue(m7 is Function Function(int x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<Function> x1]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<Function> x1]) Function<B extends core.int>()
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int y, {List<T> x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<T> x}) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int y, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int y, {List<T> x}) Function<B extends core.int>() l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int y, {List<T> x}) Function<B extends core.int>() l9 =
-          m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function([List<Function> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x]) Function<B extends core.int>()
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(List<T> x1) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x1) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(List<T> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(List<T> x1) Function<B extends core.int>() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(List<T> x1) Function<B extends core.int>() l11 =
-          m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x2, [Function x3]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [Function x3])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2, [Function x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1,
-            {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(Function x) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x) Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [core.List<core.int> x])
-            Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [core.List<core.int> x])
-          Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([int x1]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([int x1]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<Function> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<Function> x}) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function({List<Function> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function() Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function() Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [List<Function> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<Function> x]) Function<B extends core.int>()
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function([List<T> x1]) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function([List<T> x1]) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is void Function([List<T> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function([List<T> x1]) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function([List<T> x1]) Function<B extends core.int>() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<Function> x) Function<B extends core.int>()
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(core.List<core.int> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<T> x) Function<B extends core.int>()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<T> x) Function<B extends core.int>() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is void Function<A>(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        void Function<A>(List<T> x) Function<B extends core.int>() l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      void Function<A>(List<T> x) Function<B extends core.int>() l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U6().runTests();
-  new U6<int>(tIsInt: true).runTests();
-  new U6<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type70_test.dart b/tests/language/function_type/function_type70_test.dart
deleted file mode 100644
index 18cfea0..0000000
--- a/tests/language/function_type/function_type70_test.dart
+++ /dev/null
@@ -1,984 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, [Function x]);
-typedef F1<T> = core.List<core.int> Function(int x0, [int x]);
-typedef F2<T> = List<T> Function(int x0, [List<T> x]);
-typedef F3<T> = void Function([core.List<core.int> x]);
-typedef F4<T> = int Function([int x]) Function<B extends core.int>();
-typedef F5<T> = int Function(List<Function> x1) Function<B extends core.int>();
-typedef F6<T> = int Function(int x, [List<T> x1])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(int x1, {Function x})
-    Function<B extends core.int>();
-typedef F8<T> = Function Function([List<T> x]) Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int y, [Function x])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function({int x})
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function(int x1, [int x])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function([List<Function> x1])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function({List<T> x}) Function<B extends core.int>();
-typedef F16<T> = Function(int y, {Function x}) Function<B extends core.int>();
-typedef F17<T> = Function(int x1, [List<T> x]) Function<B extends core.int>();
-typedef F18<T> = void Function(Function x1) Function<B extends core.int>();
-typedef F19<T> = void Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F20<T> = Function Function<A>(Function x)
-    Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>(List<Function> x)
-    Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-
-Function f0(int y, [Function x]) => null;
-core.List<core.int> f1(int x0, [int x]) => null;
-List<int> f2(int x0, [List<int> x]) => null;
-void f3([core.List<core.int> x]) => null;
-int Function([int x]) f4<B extends core.int>() => null;
-int Function(List<Function> x0) f5<B extends core.int>() => null;
-int Function(int x, [List<int> x0]) f6<B extends core.int>() => null;
-Function Function(int x0, {Function x}) f7<B extends core.int>() => null;
-Function Function([List<int> x]) f8<B extends core.int>() => null;
-List<Function> Function(int y, [Function x]) f9<B extends core.int>() => null;
-List<Function> Function(int x0, [core.List<core.int> x1])
-    f10<B extends core.int>() => null;
-core.List<core.int> Function({int x}) f11<B extends core.int>() => null;
-core.List<core.int> Function(core.List<core.int> x) f12<B extends core.int>() =>
-    null;
-List<int> Function(int x0, [int x]) f13<B extends core.int>() => null;
-List<int> Function([List<Function> x0]) f14<B extends core.int>() => null;
-List<int> Function({List<int> x}) f15<B extends core.int>() => null;
-Function(int y, {Function x}) f16<B extends core.int>() => null;
-Function(int x0, [List<int> x]) f17<B extends core.int>() => null;
-void Function(Function x0) f18<B extends core.int>() => null;
-void Function(int x, [core.List<core.int> x0]) f19<B extends core.int>() =>
-    null;
-Function Function<A>(Function x) f20<B extends core.int>() => null;
-List<int> Function<A>(List<Function> x) f21<B extends core.int>() => null;
-List<A> Function<A>(core.List<core.int> x) f22<B extends core.int>() => null;
-
-class U70<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, [Function x]) x0;
-  core.List<core.int> Function(int x0, [int x]) x1;
-  List<T> Function(int x0, [List<T> x]) x2;
-  void Function([core.List<core.int> x]) x3;
-  int Function([int x]) Function<B extends core.int>() x4;
-  int Function(List<Function> x1) Function<B extends core.int>() x5;
-  int Function(int x, [List<T> x1]) Function<B extends core.int>() x6;
-  Function Function(int x1, {Function x}) Function<B extends core.int>() x7;
-  Function Function([List<T> x]) Function<B extends core.int>() x8;
-  List<Function> Function(int y, [Function x]) Function<B extends core.int>()
-      x9;
-  List<Function> Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function({int x}) Function<B extends core.int>() x11;
-  core.List<core.int> Function(core.List<core.int> x)
-      Function<B extends core.int>() x12;
-  List<T> Function(int x1, [int x]) Function<B extends core.int>() x13;
-  List<T> Function([List<Function> x1]) Function<B extends core.int>() x14;
-  List<T> Function({List<T> x}) Function<B extends core.int>() x15;
-  Function(int y, {Function x}) Function<B extends core.int>() x16;
-  Function(int x1, [List<T> x]) Function<B extends core.int>() x17;
-  void Function(Function x1) Function<B extends core.int>() x18;
-  void Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-      x19;
-  Function Function<A>(Function x) Function<B extends core.int>() x20;
-  List<T> Function<A>(List<Function> x) Function<B extends core.int>() x21;
-  List<A> Function<A>(core.List<core.int> x) Function<B extends core.int>() x22;
-
-  U70({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, [Function x]) => null;
-  core.List<core.int> m1(int x0, [int x]) => null;
-  List<T> m2(int x0, [List<T> x]) => null;
-  void m3([core.List<core.int> x]) => null;
-  int Function([int x]) m4<B extends core.int>() => null;
-  int Function(List<Function> x0) m5<B extends core.int>() => null;
-  int Function(int x, [List<T> x0]) m6<B extends core.int>() => null;
-  Function Function(int x0, {Function x}) m7<B extends core.int>() => null;
-  Function Function([List<T> x]) m8<B extends core.int>() => null;
-  List<Function> Function(int y, [Function x]) m9<B extends core.int>() => null;
-  List<Function> Function(int x0, [core.List<core.int> x1])
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function({int x}) m11<B extends core.int>() => null;
-  core.List<core.int> Function(core.List<core.int> x)
-      m12<B extends core.int>() => null;
-  List<T> Function(int x0, [int x]) m13<B extends core.int>() => null;
-  List<T> Function([List<Function> x0]) m14<B extends core.int>() => null;
-  List<T> Function({List<T> x}) m15<B extends core.int>() => null;
-  Function(int y, {Function x}) m16<B extends core.int>() => null;
-  Function(int x0, [List<T> x]) m17<B extends core.int>() => null;
-  void Function(Function x0) m18<B extends core.int>() => null;
-  void Function(int x, [core.List<core.int> x0]) m19<B extends core.int>() =>
-      null;
-  Function Function<A>(Function x) m20<B extends core.int>() => null;
-  List<T> Function<A>(List<Function> x) m21<B extends core.int>() => null;
-  List<A> Function<A>(core.List<core.int> x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, [Function x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, [Function x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, [Function x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x0, [int x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [int x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x0, [int x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, [List<T> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, [List<T> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, [List<T> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, [List<T> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, [List<T> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([core.List<core.int> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([core.List<core.int> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function([int x]) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x]) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function([int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(List<Function> x1) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x1) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(List<Function> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [List<T> x1]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<T> x1]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x, [List<T> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x, [List<T> x1]) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x, [List<T> x1]) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x1, {Function x}) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {Function x}) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x]) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function([List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x]) Function<B extends core.int>() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x]) Function<B extends core.int>() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, [Function x]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [Function x]) Function<B extends core.int>()
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x2,
-            [core.List<core.int> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function({int x}) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({int x}) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function({int x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x)
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1, [int x]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [int x]) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1, [int x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1, [int x]) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1, [int x]) Function<B extends core.int>() l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x1]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x1]) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x1]) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x1]) Function<B extends core.int>() l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({List<T> x}) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({List<T> x}) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function({List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({List<T> x}) Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({List<T> x}) Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {Function x}) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {Function x}) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(int y, {Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [List<T> x]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<T> x]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x1, [List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x1, [List<T> x]) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x1, [List<T> x]) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(Function x1) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x1) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(Function x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(Function x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(Function x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<Function> x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<Function> x) Function<B extends core.int>()
-            l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<Function> x) Function<B extends core.int>() l21 =
-          m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(core.List<core.int> x) Function<B extends core.int>()
-        l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U70().runTests();
-  new U70<int>(tIsInt: true).runTests();
-  new U70<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type71_test.dart b/tests/language/function_type/function_type71_test.dart
deleted file mode 100644
index 613cfac..0000000
--- a/tests/language/function_type/function_type71_test.dart
+++ /dev/null
@@ -1,1009 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(Function x0);
-typedef F1<T> = core.List<core.int> Function(int y, [int x]);
-typedef F2<T> = List<T> Function(int y, [List<T> x]);
-typedef F3<T> = void Function(int x0, [core.List<core.int> x]);
-typedef F4<T> = int Function([int x]) Function<B extends core.int>(int x);
-typedef F5<T> = int Function(List<Function> x1) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function(int x, [List<T> x1]) Function<B extends core.int>(
-    int x);
-typedef F7<T> = Function Function(int x1, {Function x})
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function([List<T> x]) Function<B extends core.int>(
-    int x);
-typedef F9<T> = List<Function> Function(int y, [Function x])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function({int x})
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function(int x1, [int x]) Function<B extends core.int>(
-    int x);
-typedef F14<T> = List<T> Function([List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function({List<T> x}) Function<B extends core.int>(
-    int x);
-typedef F16<T> = Function(int y, {Function x}) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function(int x1, [List<T> x]) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function(Function x1) Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>(Function x) Function<B extends core.int>(
-    int x);
-typedef F21<T> = List<T> Function<A>(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = List<A> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-
-Function f0(Function x0) => null;
-core.List<core.int> f1(int y, [int x]) => null;
-List<int> f2(int y, [List<int> x]) => null;
-void f3(int x0, [core.List<core.int> x]) => null;
-int Function([int x]) f4<B extends core.int>(int x) => null;
-int Function(List<Function> x0) f5<B extends core.int>(int x) => null;
-int Function(int x, [List<int> x0]) f6<B extends core.int>(int x) => null;
-Function Function(int x0, {Function x}) f7<B extends core.int>(int x) => null;
-Function Function([List<int> x]) f8<B extends core.int>(int x) => null;
-List<Function> Function(int y, [Function x]) f9<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int x0, [core.List<core.int> x1])
-    f10<B extends core.int>(int x) => null;
-core.List<core.int> Function({int x}) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(core.List<core.int> x) f12<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(int x0, [int x]) f13<B extends core.int>(int x) => null;
-List<int> Function([List<Function> x0]) f14<B extends core.int>(int x) => null;
-List<int> Function({List<int> x}) f15<B extends core.int>(int x) => null;
-Function(int y, {Function x}) f16<B extends core.int>(int x) => null;
-Function(int x0, [List<int> x]) f17<B extends core.int>(int x) => null;
-void Function(Function x0) f18<B extends core.int>(int x) => null;
-void Function(int x, [core.List<core.int> x0]) f19<B extends core.int>(int x) =>
-    null;
-Function Function<A>(Function x) f20<B extends core.int>(int x) => null;
-List<int> Function<A>(List<Function> x) f21<B extends core.int>(int x) => null;
-List<A> Function<A>(core.List<core.int> x) f22<B extends core.int>(int x) =>
-    null;
-
-class U71<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(Function x0) x0;
-  core.List<core.int> Function(int y, [int x]) x1;
-  List<T> Function(int y, [List<T> x]) x2;
-  void Function(int x0, [core.List<core.int> x]) x3;
-  int Function([int x]) Function<B extends core.int>(int x) x4;
-  int Function(List<Function> x1) Function<B extends core.int>(int x) x5;
-  int Function(int x, [List<T> x1]) Function<B extends core.int>(int x) x6;
-  Function Function(int x1, {Function x}) Function<B extends core.int>(int x)
-      x7;
-  Function Function([List<T> x]) Function<B extends core.int>(int x) x8;
-  List<Function> Function(int y, [Function x]) Function<B extends core.int>(
-      int x) x9;
-  List<Function> Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function({int x}) Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(core.List<core.int> x)
-      Function<B extends core.int>(int x) x12;
-  List<T> Function(int x1, [int x]) Function<B extends core.int>(int x) x13;
-  List<T> Function([List<Function> x1]) Function<B extends core.int>(int x) x14;
-  List<T> Function({List<T> x}) Function<B extends core.int>(int x) x15;
-  Function(int y, {Function x}) Function<B extends core.int>(int x) x16;
-  Function(int x1, [List<T> x]) Function<B extends core.int>(int x) x17;
-  void Function(Function x1) Function<B extends core.int>(int x) x18;
-  void Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(
-      int x) x19;
-  Function Function<A>(Function x) Function<B extends core.int>(int x) x20;
-  List<T> Function<A>(List<Function> x) Function<B extends core.int>(int x) x21;
-  List<A> Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-      x22;
-
-  U71({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(Function x0) => null;
-  core.List<core.int> m1(int y, [int x]) => null;
-  List<T> m2(int y, [List<T> x]) => null;
-  void m3(int x0, [core.List<core.int> x]) => null;
-  int Function([int x]) m4<B extends core.int>(int x) => null;
-  int Function(List<Function> x0) m5<B extends core.int>(int x) => null;
-  int Function(int x, [List<T> x0]) m6<B extends core.int>(int x) => null;
-  Function Function(int x0, {Function x}) m7<B extends core.int>(int x) => null;
-  Function Function([List<T> x]) m8<B extends core.int>(int x) => null;
-  List<Function> Function(int y, [Function x]) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x0, [core.List<core.int> x1])
-      m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function({int x}) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(core.List<core.int> x) m12<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(int x0, [int x]) m13<B extends core.int>(int x) => null;
-  List<T> Function([List<Function> x0]) m14<B extends core.int>(int x) => null;
-  List<T> Function({List<T> x}) m15<B extends core.int>(int x) => null;
-  Function(int y, {Function x}) m16<B extends core.int>(int x) => null;
-  Function(int x0, [List<T> x]) m17<B extends core.int>(int x) => null;
-  void Function(Function x0) m18<B extends core.int>(int x) => null;
-  void Function(int x, [core.List<core.int> x0]) m19<B extends core.int>(
-          int x) =>
-      null;
-  Function Function<A>(Function x) m20<B extends core.int>(int x) => null;
-  List<T> Function<A>(List<Function> x) m21<B extends core.int>(int x) => null;
-  List<A> Function<A>(core.List<core.int> x) m22<B extends core.int>(int x) =>
-      null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(Function x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(Function x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(Function x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int y, [int x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [int x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int y, [int x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, [List<T> x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [List<T> x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, [List<T> x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, [List<T> x]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, [List<T> x]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, [core.List<core.int> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, [core.List<core.int> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function([int x]) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x]) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function([int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(List<Function> x1) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(List<Function> x1) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(List<Function> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<T> x1]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-            l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x, [List<T> x1]) Function<B extends core.int>(int x) l6 =
-          m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int x1, {Function x}) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, {Function x}) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x]) Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x]) Function<B extends core.int>(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x]) Function<B extends core.int>(int x) l8 =
-          m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, [Function x]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, [Function x]) Function<B extends core.int>(
-        int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x2,
-            [core.List<core.int> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function({int x}) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({int x}) Function<B extends core.int>(int x)
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function({int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x)
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1, [int x]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [int x]) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1, [int x]) Function<B extends core.int>(int x)
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1, [int x]) Function<B extends core.int>(int x)
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([List<Function> x1]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([List<Function> x1]) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([List<Function> x1]) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([List<Function> x1]) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function({List<T> x}) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function({List<T> x}) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function({List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function({List<T> x}) Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function({List<T> x}) Function<B extends core.int>(int x) l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int y, {Function x}) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, {Function x}) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<T> x]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x1, [List<T> x]) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x1, [List<T> x]) Function<B extends core.int>(int x) l17 =
-          m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(Function x1) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(Function x1) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(Function x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(Function x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<Function> x) Function<B extends core.int>(int x)
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<Function> x) Function<B extends core.int>(
-            int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<Function> x) Function<B extends core.int>(int x)
-          l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(core.List<core.int> x) Function<B extends core.int>(
-        int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U71().runTests();
-  new U71<int>(tIsInt: true).runTests();
-  new U71<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type72_test.dart b/tests/language/function_type/function_type72_test.dart
deleted file mode 100644
index 4724bf6..0000000
--- a/tests/language/function_type/function_type72_test.dart
+++ /dev/null
@@ -1,967 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([Function x1]);
-typedef F1<T> = core.List<core.int> Function(int x0);
-typedef F2<T> = List<T> Function(List<T> x0);
-typedef F3<T> = void Function(int y, [core.List<core.int> x]);
-typedef F4<T> = int Function(int x0, [int x]) Function();
-typedef F5<T> = int Function([List<Function> x1]) Function();
-typedef F6<T> = int Function({List<T> x}) Function();
-typedef F7<T> = Function Function(int y, {Function x}) Function();
-typedef F8<T> = Function Function(int x0, [List<T> x]) Function();
-typedef F9<T> = List<Function> Function(Function x0) Function();
-typedef F10<T> = List<Function> Function(int x, [core.List<core.int> x2])
-    Function();
-typedef F11<T> = core.List<core.int> Function(int x0, {int x}) Function();
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x])
-    Function();
-typedef F13<T> = List<T> Function(int y, [int x]) Function();
-typedef F14<T> = List<T> Function(int x1, [List<Function> x2]) Function();
-typedef F15<T> = List<T> Function(int x0, {List<T> x}) Function();
-typedef F16<T> = Function(List<Function> x) Function();
-typedef F17<T> = Function(int y, [List<T> x]) Function();
-typedef F18<T> = void Function([Function x1]) Function();
-typedef F19<T> = void Function({core.List<core.int> x}) Function();
-typedef F20<T> = Function Function<A>(List<Function> x) Function();
-typedef F21<T> = List<T> Function<A>(core.List<core.int> x) Function();
-typedef F22<T> = List<A> Function<A>(List<T> x) Function();
-
-Function f0([Function x0]) => null;
-core.List<core.int> f1(int x0) => null;
-List<int> f2(List<int> x0) => null;
-void f3(int y, [core.List<core.int> x]) => null;
-int Function(int x0, [int x]) f4() => null;
-int Function([List<Function> x0]) f5() => null;
-int Function({List<int> x}) f6() => null;
-Function Function(int y, {Function x}) f7() => null;
-Function Function(int x0, [List<int> x]) f8() => null;
-List<Function> Function(Function x0) f9() => null;
-List<Function> Function(int x, [core.List<core.int> x0]) f10() => null;
-core.List<core.int> Function(int x0, {int x}) f11() => null;
-core.List<core.int> Function([core.List<core.int> x]) f12() => null;
-List<int> Function(int y, [int x]) f13() => null;
-List<int> Function(int x0, [List<Function> x1]) f14() => null;
-List<int> Function(int x0, {List<int> x}) f15() => null;
-Function(List<Function> x) f16() => null;
-Function(int y, [List<int> x]) f17() => null;
-void Function([Function x0]) f18() => null;
-void Function({core.List<core.int> x}) f19() => null;
-Function Function<A>(List<Function> x) f20() => null;
-List<int> Function<A>(core.List<core.int> x) f21() => null;
-List<A> Function<A>(List<int> x) f22() => null;
-
-class U72<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([Function x1]) x0;
-  core.List<core.int> Function(int x0) x1;
-  List<T> Function(List<T> x0) x2;
-  void Function(int y, [core.List<core.int> x]) x3;
-  int Function(int x0, [int x]) Function() x4;
-  int Function([List<Function> x1]) Function() x5;
-  int Function({List<T> x}) Function() x6;
-  Function Function(int y, {Function x}) Function() x7;
-  Function Function(int x0, [List<T> x]) Function() x8;
-  List<Function> Function(Function x0) Function() x9;
-  List<Function> Function(int x, [core.List<core.int> x2]) Function() x10;
-  core.List<core.int> Function(int x0, {int x}) Function() x11;
-  core.List<core.int> Function([core.List<core.int> x]) Function() x12;
-  List<T> Function(int y, [int x]) Function() x13;
-  List<T> Function(int x1, [List<Function> x2]) Function() x14;
-  List<T> Function(int x0, {List<T> x}) Function() x15;
-  Function(List<Function> x) Function() x16;
-  Function(int y, [List<T> x]) Function() x17;
-  void Function([Function x1]) Function() x18;
-  void Function({core.List<core.int> x}) Function() x19;
-  Function Function<A>(List<Function> x) Function() x20;
-  List<T> Function<A>(core.List<core.int> x) Function() x21;
-  List<A> Function<A>(List<T> x) Function() x22;
-
-  U72({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([Function x0]) => null;
-  core.List<core.int> m1(int x0) => null;
-  List<T> m2(List<T> x0) => null;
-  void m3(int y, [core.List<core.int> x]) => null;
-  int Function(int x0, [int x]) m4() => null;
-  int Function([List<Function> x0]) m5() => null;
-  int Function({List<T> x}) m6() => null;
-  Function Function(int y, {Function x}) m7() => null;
-  Function Function(int x0, [List<T> x]) m8() => null;
-  List<Function> Function(Function x0) m9() => null;
-  List<Function> Function(int x, [core.List<core.int> x0]) m10() => null;
-  core.List<core.int> Function(int x0, {int x}) m11() => null;
-  core.List<core.int> Function([core.List<core.int> x]) m12() => null;
-  List<T> Function(int y, [int x]) m13() => null;
-  List<T> Function(int x0, [List<Function> x1]) m14() => null;
-  List<T> Function(int x0, {List<T> x}) m15() => null;
-  Function(List<Function> x) m16() => null;
-  Function(int y, [List<T> x]) m17() => null;
-  void Function([Function x0]) m18() => null;
-  void Function({core.List<core.int> x}) m19() => null;
-  Function Function<A>(List<Function> x) m20() => null;
-  List<T> Function<A>(core.List<core.int> x) m21() => null;
-  List<A> Function<A>(List<T> x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([Function x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([Function x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([Function x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(List<T> x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(List<T> x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(List<T> x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(List<T> x0) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(List<T> x0) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, [core.List<core.int> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, [core.List<core.int> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x0, [int x]) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x0, [int x]) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x0, [int x]) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x1]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x1]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([List<Function> x1]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({List<T> x}) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({List<T> x}) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function({List<T> x}) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function({List<T> x}) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function({List<T> x}) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, {Function x}) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {Function x}) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, {Function x}) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x0, [List<T> x]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [List<T> x]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x0, [List<T> x]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x0, [List<T> x]) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x0, [List<T> x]) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(Function x0) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x0) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x0) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [core.List<core.int> x2]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [core.List<core.int> x2]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10
-        is List<Function> Function(int x, [core.List<core.int> x2]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x0, {int x}) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {int x}) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x0, {int x}) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int y, [int x]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [int x]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int y, [int x]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int y, [int x]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int y, [int x]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, [List<Function> x2]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<Function> x2]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int x1, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, [List<Function> x2]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, [List<Function> x2]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x0, {List<T> x}) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {List<T> x}) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x0, {List<T> x}) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x0, {List<T> x}) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x0, {List<T> x}) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(List<Function> x) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(List<Function> x) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [List<T> x]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [List<T> x]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, [List<T> x]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int y, [List<T> x]) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int y, [List<T> x]) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function([Function x1]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x1]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([Function x1]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({core.List<core.int> x}) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({core.List<core.int> x}) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function({core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<Function> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<Function> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(core.List<core.int> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(core.List<core.int> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(core.List<core.int> x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(core.List<core.int> x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<T> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<T> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        List<A> Function<A>(List<T> x) Function() l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      List<A> Function<A>(List<T> x) Function() l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-}
-
-void main() {
-  new U72().runTests();
-  new U72<int>(tIsInt: true).runTests();
-  new U72<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type73_test.dart b/tests/language/function_type/function_type73_test.dart
deleted file mode 100644
index 4faebc7..0000000
--- a/tests/language/function_type/function_type73_test.dart
+++ /dev/null
@@ -1,972 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x1, [Function x2]);
-typedef F1<T> = core.List<core.int> Function([int x1]);
-typedef F2<T> = List<T> Function([List<T> x1]);
-typedef F3<T> = void Function(core.List<core.int> x0);
-typedef F4<T> = int Function(int x1, [int x]) Function(int x);
-typedef F5<T> = int Function([List<Function> x1]) Function(int x);
-typedef F6<T> = int Function({List<T> x}) Function(int x);
-typedef F7<T> = Function Function(int y, {Function x}) Function(int x);
-typedef F8<T> = Function Function(int x1, [List<T> x]) Function(int x);
-typedef F9<T> = List<Function> Function(Function x1) Function(int x);
-typedef F10<T> = List<Function> Function(int x, [core.List<core.int> x1])
-    Function(int x);
-typedef F11<T> = core.List<core.int> Function(int x1, {int x}) Function(int x);
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x]) Function(
-    int x);
-typedef F13<T> = List<T> Function(int y, [int x]) Function(int x);
-typedef F14<T> = List<T> Function(int x2, [List<Function> x3]) Function(int x);
-typedef F15<T> = List<T> Function(int x1, {List<T> x}) Function(int x);
-typedef F16<T> = Function(List<Function> x) Function(int x);
-typedef F17<T> = Function(int y, [List<T> x]) Function(int x);
-typedef F18<T> = void Function([Function x1]) Function(int x);
-typedef F19<T> = void Function({core.List<core.int> x}) Function(int x);
-typedef F20<T> = Function Function<A>(List<Function> x) Function(int x);
-typedef F21<T> = List<T> Function<A>(core.List<core.int> x) Function(int x);
-typedef F22<T> = List<A> Function<A>(List<T> x) Function(int x);
-
-Function f0(int x0, [Function x1]) => null;
-core.List<core.int> f1([int x0]) => null;
-List<int> f2([List<int> x0]) => null;
-void f3(core.List<core.int> x0) => null;
-int Function(int x0, [int x]) f4(int x) => null;
-int Function([List<Function> x0]) f5(int x) => null;
-int Function({List<int> x}) f6(int x) => null;
-Function Function(int y, {Function x}) f7(int x) => null;
-Function Function(int x0, [List<int> x]) f8(int x) => null;
-List<Function> Function(Function x0) f9(int x) => null;
-List<Function> Function(int x, [core.List<core.int> x0]) f10(int x) => null;
-core.List<core.int> Function(int x0, {int x}) f11(int x) => null;
-core.List<core.int> Function([core.List<core.int> x]) f12(int x) => null;
-List<int> Function(int y, [int x]) f13(int x) => null;
-List<int> Function(int x0, [List<Function> x1]) f14(int x) => null;
-List<int> Function(int x0, {List<int> x}) f15(int x) => null;
-Function(List<Function> x) f16(int x) => null;
-Function(int y, [List<int> x]) f17(int x) => null;
-void Function([Function x0]) f18(int x) => null;
-void Function({core.List<core.int> x}) f19(int x) => null;
-Function Function<A>(List<Function> x) f20(int x) => null;
-List<int> Function<A>(core.List<core.int> x) f21(int x) => null;
-List<A> Function<A>(List<int> x) f22(int x) => null;
-
-class U73<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x1, [Function x2]) x0;
-  core.List<core.int> Function([int x1]) x1;
-  List<T> Function([List<T> x1]) x2;
-  void Function(core.List<core.int> x0) x3;
-  int Function(int x1, [int x]) Function(int x) x4;
-  int Function([List<Function> x1]) Function(int x) x5;
-  int Function({List<T> x}) Function(int x) x6;
-  Function Function(int y, {Function x}) Function(int x) x7;
-  Function Function(int x1, [List<T> x]) Function(int x) x8;
-  List<Function> Function(Function x1) Function(int x) x9;
-  List<Function> Function(int x, [core.List<core.int> x1]) Function(int x) x10;
-  core.List<core.int> Function(int x1, {int x}) Function(int x) x11;
-  core.List<core.int> Function([core.List<core.int> x]) Function(int x) x12;
-  List<T> Function(int y, [int x]) Function(int x) x13;
-  List<T> Function(int x2, [List<Function> x3]) Function(int x) x14;
-  List<T> Function(int x1, {List<T> x}) Function(int x) x15;
-  Function(List<Function> x) Function(int x) x16;
-  Function(int y, [List<T> x]) Function(int x) x17;
-  void Function([Function x1]) Function(int x) x18;
-  void Function({core.List<core.int> x}) Function(int x) x19;
-  Function Function<A>(List<Function> x) Function(int x) x20;
-  List<T> Function<A>(core.List<core.int> x) Function(int x) x21;
-  List<A> Function<A>(List<T> x) Function(int x) x22;
-
-  U73({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [Function x1]) => null;
-  core.List<core.int> m1([int x0]) => null;
-  List<T> m2([List<T> x0]) => null;
-  void m3(core.List<core.int> x0) => null;
-  int Function(int x0, [int x]) m4(int x) => null;
-  int Function([List<Function> x0]) m5(int x) => null;
-  int Function({List<T> x}) m6(int x) => null;
-  Function Function(int y, {Function x}) m7(int x) => null;
-  Function Function(int x0, [List<T> x]) m8(int x) => null;
-  List<Function> Function(Function x0) m9(int x) => null;
-  List<Function> Function(int x, [core.List<core.int> x0]) m10(int x) => null;
-  core.List<core.int> Function(int x0, {int x}) m11(int x) => null;
-  core.List<core.int> Function([core.List<core.int> x]) m12(int x) => null;
-  List<T> Function(int y, [int x]) m13(int x) => null;
-  List<T> Function(int x0, [List<Function> x1]) m14(int x) => null;
-  List<T> Function(int x0, {List<T> x}) m15(int x) => null;
-  Function(List<Function> x) m16(int x) => null;
-  Function(int y, [List<T> x]) m17(int x) => null;
-  void Function([Function x0]) m18(int x) => null;
-  void Function({core.List<core.int> x}) m19(int x) => null;
-  Function Function<A>(List<Function> x) m20(int x) => null;
-  List<T> Function<A>(core.List<core.int> x) m21(int x) => null;
-  List<A> Function<A>(List<T> x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x1, [Function x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [Function x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x1, [Function x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function([int x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([int x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function([int x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function([List<T> x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function([List<T> x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function([List<T> x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function([List<T> x1]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function([List<T> x1]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(core.List<core.int> x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(core.List<core.int> x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(core.List<core.int> x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x1, [int x]) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x1, [int x]) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x1, [int x]) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x1]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x1]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({List<T> x}) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({List<T> x}) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function({List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function({List<T> x}) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function({List<T> x}) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, {Function x}) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {Function x}) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [List<T> x]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<T> x]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x1, [List<T> x]) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x1, [List<T> x]) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(Function x1) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x1) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x1) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [core.List<core.int> x1]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [core.List<core.int> x1]) Function(int x)
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x,
-            [core.List<core.int> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1, {int x}) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {int x}) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x1, {int x}) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int y, [int x]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [int x]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int y, [int x]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int y, [int x]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int y, [int x]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x2, [List<Function> x3]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [List<Function> x3]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int x2, [List<Function> x3]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x2, [List<Function> x3]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x2, [List<Function> x3]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, {List<T> x}) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {List<T> x}) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, {List<T> x}) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, {List<T> x}) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(List<Function> x) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [List<T> x]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [List<T> x]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int y, [List<T> x]) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int y, [List<T> x]) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function([Function x1]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x1]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([Function x1]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({core.List<core.int> x}) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({core.List<core.int> x}) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect
-        .isTrue(m19 is void Function({core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<Function> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<Function> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect
-        .isTrue(m20 is Function Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(core.List<core.int> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(core.List<core.int> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(core.List<core.int> x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(core.List<core.int> x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<T> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<T> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        List<A> Function<A>(List<T> x) Function(int x) l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      List<A> Function<A>(List<T> x) Function(int x) l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-}
-
-void main() {
-  new U73().runTests();
-  new U73<int>(tIsInt: true).runTests();
-  new U73<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type74_test.dart b/tests/language/function_type/function_type74_test.dart
deleted file mode 100644
index 6130ec3..0000000
--- a/tests/language/function_type/function_type74_test.dart
+++ /dev/null
@@ -1,1018 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x, [Function x2]);
-typedef F1<T> = core.List<core.int> Function(int x1, [int x2]);
-typedef F2<T> = List<T> Function(int x1, [List<T> x2]);
-typedef F3<T> = void Function([core.List<core.int> x1]);
-typedef F4<T> = int Function(int x1, [int x]) Function<B extends core.int>();
-typedef F5<T> = int Function([List<Function> x1])
-    Function<B extends core.int>();
-typedef F6<T> = int Function({List<T> x}) Function<B extends core.int>();
-typedef F7<T> = Function Function(int y, {Function x})
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x1, [List<T> x])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(Function x1)
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int x1, {int x})
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function(int y, [int x])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x2, [List<Function> x3])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int x1, {List<T> x})
-    Function<B extends core.int>();
-typedef F16<T> = Function(List<Function> x) Function<B extends core.int>();
-typedef F17<T> = Function(int y, [List<T> x]) Function<B extends core.int>();
-typedef F18<T> = void Function([Function x1]) Function<B extends core.int>();
-typedef F19<T> = void Function({core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F20<T> = Function Function<A>(List<Function> x)
-    Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>(List<T> x) Function<B extends core.int>();
-
-Function f0(int x, [Function x0]) => null;
-core.List<core.int> f1(int x0, [int x1]) => null;
-List<int> f2(int x0, [List<int> x1]) => null;
-void f3([core.List<core.int> x0]) => null;
-int Function(int x0, [int x]) f4<B extends core.int>() => null;
-int Function([List<Function> x0]) f5<B extends core.int>() => null;
-int Function({List<int> x}) f6<B extends core.int>() => null;
-Function Function(int y, {Function x}) f7<B extends core.int>() => null;
-Function Function(int x0, [List<int> x]) f8<B extends core.int>() => null;
-List<Function> Function(Function x0) f9<B extends core.int>() => null;
-List<Function> Function(int x, [core.List<core.int> x0])
-    f10<B extends core.int>() => null;
-core.List<core.int> Function(int x0, {int x}) f11<B extends core.int>() => null;
-core.List<core.int> Function([core.List<core.int> x])
-    f12<B extends core.int>() => null;
-List<int> Function(int y, [int x]) f13<B extends core.int>() => null;
-List<int> Function(int x0, [List<Function> x1]) f14<B extends core.int>() =>
-    null;
-List<int> Function(int x0, {List<int> x}) f15<B extends core.int>() => null;
-Function(List<Function> x) f16<B extends core.int>() => null;
-Function(int y, [List<int> x]) f17<B extends core.int>() => null;
-void Function([Function x0]) f18<B extends core.int>() => null;
-void Function({core.List<core.int> x}) f19<B extends core.int>() => null;
-Function Function<A>(List<Function> x) f20<B extends core.int>() => null;
-List<int> Function<A>(core.List<core.int> x) f21<B extends core.int>() => null;
-List<A> Function<A>(List<int> x) f22<B extends core.int>() => null;
-
-class U74<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x, [Function x2]) x0;
-  core.List<core.int> Function(int x1, [int x2]) x1;
-  List<T> Function(int x1, [List<T> x2]) x2;
-  void Function([core.List<core.int> x1]) x3;
-  int Function(int x1, [int x]) Function<B extends core.int>() x4;
-  int Function([List<Function> x1]) Function<B extends core.int>() x5;
-  int Function({List<T> x}) Function<B extends core.int>() x6;
-  Function Function(int y, {Function x}) Function<B extends core.int>() x7;
-  Function Function(int x1, [List<T> x]) Function<B extends core.int>() x8;
-  List<Function> Function(Function x1) Function<B extends core.int>() x9;
-  List<Function> Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function(int x1, {int x}) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function([core.List<core.int> x])
-      Function<B extends core.int>() x12;
-  List<T> Function(int y, [int x]) Function<B extends core.int>() x13;
-  List<T> Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-      x14;
-  List<T> Function(int x1, {List<T> x}) Function<B extends core.int>() x15;
-  Function(List<Function> x) Function<B extends core.int>() x16;
-  Function(int y, [List<T> x]) Function<B extends core.int>() x17;
-  void Function([Function x1]) Function<B extends core.int>() x18;
-  void Function({core.List<core.int> x}) Function<B extends core.int>() x19;
-  Function Function<A>(List<Function> x) Function<B extends core.int>() x20;
-  List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>() x21;
-  List<A> Function<A>(List<T> x) Function<B extends core.int>() x22;
-
-  U74({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x, [Function x0]) => null;
-  core.List<core.int> m1(int x0, [int x1]) => null;
-  List<T> m2(int x0, [List<T> x1]) => null;
-  void m3([core.List<core.int> x0]) => null;
-  int Function(int x0, [int x]) m4<B extends core.int>() => null;
-  int Function([List<Function> x0]) m5<B extends core.int>() => null;
-  int Function({List<T> x}) m6<B extends core.int>() => null;
-  Function Function(int y, {Function x}) m7<B extends core.int>() => null;
-  Function Function(int x0, [List<T> x]) m8<B extends core.int>() => null;
-  List<Function> Function(Function x0) m9<B extends core.int>() => null;
-  List<Function> Function(int x, [core.List<core.int> x0])
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function(int x0, {int x}) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function([core.List<core.int> x])
-      m12<B extends core.int>() => null;
-  List<T> Function(int y, [int x]) m13<B extends core.int>() => null;
-  List<T> Function(int x0, [List<Function> x1]) m14<B extends core.int>() =>
-      null;
-  List<T> Function(int x0, {List<T> x}) m15<B extends core.int>() => null;
-  Function(List<Function> x) m16<B extends core.int>() => null;
-  Function(int y, [List<T> x]) m17<B extends core.int>() => null;
-  void Function([Function x0]) m18<B extends core.int>() => null;
-  void Function({core.List<core.int> x}) m19<B extends core.int>() => null;
-  Function Function<A>(List<Function> x) m20<B extends core.int>() => null;
-  List<T> Function<A>(core.List<core.int> x) m21<B extends core.int>() => null;
-  List<A> Function<A>(List<T> x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x, [Function x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x, [Function x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x, [Function x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x1, [int x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [int x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x1, [int x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x1, [List<T> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [List<T> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x1, [List<T> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x1, [List<T> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x1, [List<T> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function([core.List<core.int> x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([core.List<core.int> x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([core.List<core.int> x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x1, [int x]) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x1, [int x]) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function(int x1, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x1]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x1]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function([List<Function> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({List<T> x}) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({List<T> x}) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function({List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function({List<T> x}) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function({List<T> x}) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, {Function x}) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {Function x}) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [List<T> x]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<T> x]) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x1, [List<T> x]) Function<B extends core.int>()
-            l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x1, [List<T> x]) Function<B extends core.int>() l8 =
-          m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(Function x1) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x1) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x,
-            [core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1, {int x}) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {int x}) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1, {int x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int y, [int x]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [int x]) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function(int y, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int y, [int x]) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int y, [int x]) Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x2, [List<Function> x3])
-            Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x2, [List<Function> x3])
-          Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, {List<T> x}) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {List<T> x}) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, {List<T> x}) Function<B extends core.int>()
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, {List<T> x}) Function<B extends core.int>() l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(List<Function> x) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(List<Function> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [List<T> x]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [List<T> x]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int y, [List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int y, [List<T> x]) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int y, [List<T> x]) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function([Function x1]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x1]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function([Function x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({core.List<core.int> x}) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({core.List<core.int> x}) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function({core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<Function> x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>()
-        l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(core.List<core.int> x)
-            Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>()
-          l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<T> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<T> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        List<A> Function<A>(List<T> x) Function<B extends core.int>() l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      List<A> Function<A>(List<T> x) Function<B extends core.int>() l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-}
-
-void main() {
-  new U74().runTests();
-  new U74<int>(tIsInt: true).runTests();
-  new U74<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type75_test.dart b/tests/language/function_type/function_type75_test.dart
deleted file mode 100644
index c99b982..0000000
--- a/tests/language/function_type/function_type75_test.dart
+++ /dev/null
@@ -1,1043 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function({Function x});
-typedef F1<T> = core.List<core.int> Function(int x, [int x2]);
-typedef F2<T> = List<T> Function(int x, [List<T> x2]);
-typedef F3<T> = void Function(int x1, [core.List<core.int> x2]);
-typedef F4<T> = int Function(int x1, [int x]) Function<B extends core.int>(
-    int x);
-typedef F5<T> = int Function([List<Function> x1]) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function({List<T> x}) Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int y, {Function x})
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int x1, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(Function x1)
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int x1, {int x})
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function(int y, [int x]) Function<B extends core.int>(
-    int x);
-typedef F14<T> = List<T> Function(int x2, [List<Function> x3])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int x1, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function(List<Function> x) Function<B extends core.int>(int x);
-typedef F17<T> = Function(int y, [List<T> x]) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function([Function x1]) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function({core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F21<T> = List<T> Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = List<A> Function<A>(List<T> x) Function<B extends core.int>(
-    int x);
-
-Function f0({Function x}) => null;
-core.List<core.int> f1(int x, [int x0]) => null;
-List<int> f2(int x, [List<int> x0]) => null;
-void f3(int x0, [core.List<core.int> x1]) => null;
-int Function(int x0, [int x]) f4<B extends core.int>(int x) => null;
-int Function([List<Function> x0]) f5<B extends core.int>(int x) => null;
-int Function({List<int> x}) f6<B extends core.int>(int x) => null;
-Function Function(int y, {Function x}) f7<B extends core.int>(int x) => null;
-Function Function(int x0, [List<int> x]) f8<B extends core.int>(int x) => null;
-List<Function> Function(Function x0) f9<B extends core.int>(int x) => null;
-List<Function> Function(int x, [core.List<core.int> x0])
-    f10<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x0, {int x}) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function([core.List<core.int> x]) f12<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(int y, [int x]) f13<B extends core.int>(int x) => null;
-List<int> Function(int x0, [List<Function> x1]) f14<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(int x0, {List<int> x}) f15<B extends core.int>(int x) =>
-    null;
-Function(List<Function> x) f16<B extends core.int>(int x) => null;
-Function(int y, [List<int> x]) f17<B extends core.int>(int x) => null;
-void Function([Function x0]) f18<B extends core.int>(int x) => null;
-void Function({core.List<core.int> x}) f19<B extends core.int>(int x) => null;
-Function Function<A>(List<Function> x) f20<B extends core.int>(int x) => null;
-List<int> Function<A>(core.List<core.int> x) f21<B extends core.int>(int x) =>
-    null;
-List<A> Function<A>(List<int> x) f22<B extends core.int>(int x) => null;
-
-class U75<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function({Function x}) x0;
-  core.List<core.int> Function(int x, [int x2]) x1;
-  List<T> Function(int x, [List<T> x2]) x2;
-  void Function(int x1, [core.List<core.int> x2]) x3;
-  int Function(int x1, [int x]) Function<B extends core.int>(int x) x4;
-  int Function([List<Function> x1]) Function<B extends core.int>(int x) x5;
-  int Function({List<T> x}) Function<B extends core.int>(int x) x6;
-  Function Function(int y, {Function x}) Function<B extends core.int>(int x) x7;
-  Function Function(int x1, [List<T> x]) Function<B extends core.int>(int x) x8;
-  List<Function> Function(Function x1) Function<B extends core.int>(int x) x9;
-  List<Function> Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function(int x1, {int x}) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function([core.List<core.int> x])
-      Function<B extends core.int>(int x) x12;
-  List<T> Function(int y, [int x]) Function<B extends core.int>(int x) x13;
-  List<T> Function(int x2, [List<Function> x3]) Function<B extends core.int>(
-      int x) x14;
-  List<T> Function(int x1, {List<T> x}) Function<B extends core.int>(int x) x15;
-  Function(List<Function> x) Function<B extends core.int>(int x) x16;
-  Function(int y, [List<T> x]) Function<B extends core.int>(int x) x17;
-  void Function([Function x1]) Function<B extends core.int>(int x) x18;
-  void Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-      x19;
-  Function Function<A>(List<Function> x) Function<B extends core.int>(int x)
-      x20;
-  List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-      x21;
-  List<A> Function<A>(List<T> x) Function<B extends core.int>(int x) x22;
-
-  U75({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0({Function x}) => null;
-  core.List<core.int> m1(int x, [int x0]) => null;
-  List<T> m2(int x, [List<T> x0]) => null;
-  void m3(int x0, [core.List<core.int> x1]) => null;
-  int Function(int x0, [int x]) m4<B extends core.int>(int x) => null;
-  int Function([List<Function> x0]) m5<B extends core.int>(int x) => null;
-  int Function({List<T> x}) m6<B extends core.int>(int x) => null;
-  Function Function(int y, {Function x}) m7<B extends core.int>(int x) => null;
-  Function Function(int x0, [List<T> x]) m8<B extends core.int>(int x) => null;
-  List<Function> Function(Function x0) m9<B extends core.int>(int x) => null;
-  List<Function> Function(int x, [core.List<core.int> x0])
-      m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x0, {int x}) m11<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function([core.List<core.int> x]) m12<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(int y, [int x]) m13<B extends core.int>(int x) => null;
-  List<T> Function(int x0, [List<Function> x1]) m14<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(int x0, {List<T> x}) m15<B extends core.int>(int x) => null;
-  Function(List<Function> x) m16<B extends core.int>(int x) => null;
-  Function(int y, [List<T> x]) m17<B extends core.int>(int x) => null;
-  void Function([Function x0]) m18<B extends core.int>(int x) => null;
-  void Function({core.List<core.int> x}) m19<B extends core.int>(int x) => null;
-  Function Function<A>(List<Function> x) m20<B extends core.int>(int x) => null;
-  List<T> Function<A>(core.List<core.int> x) m21<B extends core.int>(int x) =>
-      null;
-  List<A> Function<A>(List<T> x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function({Function x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function({Function x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function({Function x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x, [int x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [int x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x, [int x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x, [List<T> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<T> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x, [List<T> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x, [List<T> x2]) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x, [List<T> x2]) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x1, [core.List<core.int> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x1, [core.List<core.int> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x1, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x1, [int x]) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x1, [int x]) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x1, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function([List<Function> x1]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function([List<Function> x1]) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function([List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function({List<T> x}) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function({List<T> x}) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function({List<T> x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function({List<T> x}) Function<B extends core.int>(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function({List<T> x}) Function<B extends core.int>(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(int y, {Function x}) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, {Function x}) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x1, [List<T> x]) Function<B extends core.int>(
-            int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-          l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(Function x1) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(Function x1) Function<B extends core.int>(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(Function x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x,
-            [core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int x1, {int x}) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {int x}) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int y, [int x]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [int x]) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int y, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int y, [int x]) Function<B extends core.int>(int x)
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int y, [int x]) Function<B extends core.int>(int x) l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [List<Function> x3]) Function<B extends core.int>(
-        int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x2, [List<Function> x3])
-            Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x2, [List<Function> x3])
-          Function<B extends core.int>(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int x1, {List<T> x}) Function<B extends core.int>(
-            int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(List<Function> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int y, [List<T> x]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int y, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int y, [List<T> x]) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int y, [List<T> x]) Function<B extends core.int>(int x) l17 =
-          m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function([Function x1]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function([Function x1]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function([Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function({core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<Function> x) Function<B extends core.int>(int x)
-        l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>(
-        int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>(
-            int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(core.List<core.int> x) Function<B extends core.int>(
-          int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<T> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<T> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        List<A> Function<A>(List<T> x) Function<B extends core.int>(int x) l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      List<A> Function<A>(List<T> x) Function<B extends core.int>(int x) l22 =
-          m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-}
-
-void main() {
-  new U75().runTests();
-  new U75<int>(tIsInt: true).runTests();
-  new U75<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type76_test.dart b/tests/language/function_type/function_type76_test.dart
deleted file mode 100644
index 2ce396f..0000000
--- a/tests/language/function_type/function_type76_test.dart
+++ /dev/null
@@ -1,942 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, {Function x});
-typedef F1<T> = core.List<core.int> Function({int x});
-typedef F2<T> = List<T> Function({List<T> x});
-typedef F3<T> = void Function(int x, [core.List<core.int> x2]);
-typedef F4<T> = int Function(int y, [int x]) Function();
-typedef F5<T> = int Function(int x1, [List<Function> x2]) Function();
-typedef F6<T> = int Function(int x0, {List<T> x}) Function();
-typedef F7<T> = Function Function(List<Function> x) Function();
-typedef F8<T> = Function Function(int y, [List<T> x]) Function();
-typedef F9<T> = List<Function> Function([Function x1]) Function();
-typedef F10<T> = List<Function> Function({core.List<core.int> x}) Function();
-typedef F11<T> = core.List<core.int> Function(int y, {int x}) Function();
-typedef F12<T> = core.List<core.int> Function(int x0, [core.List<core.int> x])
-    Function();
-typedef F13<T> = List<T> Function(int x0) Function();
-typedef F14<T> = List<T> Function(int x, [List<Function> x2]) Function();
-typedef F15<T> = List<T> Function(int y, {List<T> x}) Function();
-typedef F16<T> = Function([List<Function> x]) Function();
-typedef F17<T> = Function(List<T> x0) Function();
-typedef F18<T> = void Function(int x1, [Function x2]) Function();
-typedef F19<T> = void Function(int x0, {core.List<core.int> x}) Function();
-typedef F20<T> = Function Function<A>(core.List<core.int> x) Function();
-typedef F21<T> = List<T> Function<A>(List<T> x) Function();
-typedef F22<T> = List<A> Function<A>() Function();
-
-Function f0(int x0, {Function x}) => null;
-core.List<core.int> f1({int x}) => null;
-List<int> f2({List<int> x}) => null;
-void f3(int x, [core.List<core.int> x0]) => null;
-int Function(int y, [int x]) f4() => null;
-int Function(int x0, [List<Function> x1]) f5() => null;
-int Function(int x0, {List<int> x}) f6() => null;
-Function Function(List<Function> x) f7() => null;
-Function Function(int y, [List<int> x]) f8() => null;
-List<Function> Function([Function x0]) f9() => null;
-List<Function> Function({core.List<core.int> x}) f10() => null;
-core.List<core.int> Function(int y, {int x}) f11() => null;
-core.List<core.int> Function(int x0, [core.List<core.int> x]) f12() => null;
-List<int> Function(int x0) f13() => null;
-List<int> Function(int x, [List<Function> x0]) f14() => null;
-List<int> Function(int y, {List<int> x}) f15() => null;
-Function([List<Function> x]) f16() => null;
-Function(List<int> x0) f17() => null;
-void Function(int x0, [Function x1]) f18() => null;
-void Function(int x0, {core.List<core.int> x}) f19() => null;
-Function Function<A>(core.List<core.int> x) f20() => null;
-List<int> Function<A>(List<int> x) f21() => null;
-List<A> Function<A>() f22() => null;
-
-class U76<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, {Function x}) x0;
-  core.List<core.int> Function({int x}) x1;
-  List<T> Function({List<T> x}) x2;
-  void Function(int x, [core.List<core.int> x2]) x3;
-  int Function(int y, [int x]) Function() x4;
-  int Function(int x1, [List<Function> x2]) Function() x5;
-  int Function(int x0, {List<T> x}) Function() x6;
-  Function Function(List<Function> x) Function() x7;
-  Function Function(int y, [List<T> x]) Function() x8;
-  List<Function> Function([Function x1]) Function() x9;
-  List<Function> Function({core.List<core.int> x}) Function() x10;
-  core.List<core.int> Function(int y, {int x}) Function() x11;
-  core.List<core.int> Function(int x0, [core.List<core.int> x]) Function() x12;
-  List<T> Function(int x0) Function() x13;
-  List<T> Function(int x, [List<Function> x2]) Function() x14;
-  List<T> Function(int y, {List<T> x}) Function() x15;
-  Function([List<Function> x]) Function() x16;
-  Function(List<T> x0) Function() x17;
-  void Function(int x1, [Function x2]) Function() x18;
-  void Function(int x0, {core.List<core.int> x}) Function() x19;
-  Function Function<A>(core.List<core.int> x) Function() x20;
-  List<T> Function<A>(List<T> x) Function() x21;
-  List<A> Function<A>() Function() x22;
-
-  U76({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, {Function x}) => null;
-  core.List<core.int> m1({int x}) => null;
-  List<T> m2({List<T> x}) => null;
-  void m3(int x, [core.List<core.int> x0]) => null;
-  int Function(int y, [int x]) m4() => null;
-  int Function(int x0, [List<Function> x1]) m5() => null;
-  int Function(int x0, {List<T> x}) m6() => null;
-  Function Function(List<Function> x) m7() => null;
-  Function Function(int y, [List<T> x]) m8() => null;
-  List<Function> Function([Function x0]) m9() => null;
-  List<Function> Function({core.List<core.int> x}) m10() => null;
-  core.List<core.int> Function(int y, {int x}) m11() => null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x]) m12() => null;
-  List<T> Function(int x0) m13() => null;
-  List<T> Function(int x, [List<Function> x0]) m14() => null;
-  List<T> Function(int y, {List<T> x}) m15() => null;
-  Function([List<Function> x]) m16() => null;
-  Function(List<T> x0) m17() => null;
-  void Function(int x0, [Function x1]) m18() => null;
-  void Function(int x0, {core.List<core.int> x}) m19() => null;
-  Function Function<A>(core.List<core.int> x) m20() => null;
-  List<T> Function<A>(List<T> x) m21() => null;
-  List<A> Function<A>() m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, {Function x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {Function x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, {Function x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function({int x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({int x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function({int x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function({List<T> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function({List<T> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function({List<T> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function({List<T> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function({List<T> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x, [core.List<core.int> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x, [core.List<core.int> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int y, [int x]) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int y, [int x]) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int y, [int x]) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, [List<Function> x2]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, [List<Function> x2]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x0, {List<T> x}) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x0, {List<T> x}) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x0, {List<T> x}) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x0, {List<T> x}) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x0, {List<T> x}) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(List<Function> x) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [List<T> x]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<T> x]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, [List<T> x]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int y, [List<T> x]) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int y, [List<T> x]) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function([Function x1]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x1]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x1]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({core.List<core.int> x}) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({core.List<core.int> x}) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function({core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, {int x}) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {int x}) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect
-        .isTrue(m11 is core.List<core.int> Function(int y, {int x}) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x0, [core.List<core.int> x]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [core.List<core.int> x]) Function()
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x0,
-            [core.List<core.int> x])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x0) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x0) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x0) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x0) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [List<Function> x2]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<Function> x2]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int x, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [List<Function> x2]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [List<Function> x2]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {List<T> x}) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<T> x}) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, {List<T> x}) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {List<T> x}) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {List<T> x}) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([List<Function> x]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([List<Function> x]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x0) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x0) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(List<T> x0) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x0) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x0) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x1, [Function x2]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, [Function x2]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, [Function x2]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x0, {core.List<core.int> x}) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x0, {core.List<core.int> x}) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x0, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(core.List<core.int> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(core.List<core.int> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect
-        .isTrue(m20 is Function Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<T> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<T> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<T> x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<T> x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>() Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>() Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>() Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U76().runTests();
-  new U76<int>(tIsInt: true).runTests();
-  new U76<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type77_test.dart b/tests/language/function_type/function_type77_test.dart
deleted file mode 100644
index 8810626..0000000
--- a/tests/language/function_type/function_type77_test.dart
+++ /dev/null
@@ -1,947 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, {Function x});
-typedef F1<T> = core.List<core.int> Function(int x0, {int x});
-typedef F2<T> = List<T> Function(int x0, {List<T> x});
-typedef F3<T> = void Function({core.List<core.int> x});
-typedef F4<T> = int Function(int y, [int x]) Function(int x);
-typedef F5<T> = int Function(int x2, [List<Function> x3]) Function(int x);
-typedef F6<T> = int Function(int x1, {List<T> x}) Function(int x);
-typedef F7<T> = Function Function(List<Function> x) Function(int x);
-typedef F8<T> = Function Function(int y, [List<T> x]) Function(int x);
-typedef F9<T> = List<Function> Function([Function x1]) Function(int x);
-typedef F10<T> = List<Function> Function({core.List<core.int> x}) Function(
-    int x);
-typedef F11<T> = core.List<core.int> Function(int y, {int x}) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, [core.List<core.int> x])
-    Function(int x);
-typedef F13<T> = List<T> Function(int x1) Function(int x);
-typedef F14<T> = List<T> Function(int x, [List<Function> x1]) Function(int x);
-typedef F15<T> = List<T> Function(int y, {List<T> x}) Function(int x);
-typedef F16<T> = Function([List<Function> x]) Function(int x);
-typedef F17<T> = Function(List<T> x1) Function(int x);
-typedef F18<T> = void Function(int x2, [Function x3]) Function(int x);
-typedef F19<T> = void Function(int x1, {core.List<core.int> x}) Function(int x);
-typedef F20<T> = Function Function<A>(core.List<core.int> x) Function(int x);
-typedef F21<T> = List<T> Function<A>(List<T> x) Function(int x);
-typedef F22<T> = List<A> Function<A>() Function(int x);
-
-Function f0(int y, {Function x}) => null;
-core.List<core.int> f1(int x0, {int x}) => null;
-List<int> f2(int x0, {List<int> x}) => null;
-void f3({core.List<core.int> x}) => null;
-int Function(int y, [int x]) f4(int x) => null;
-int Function(int x0, [List<Function> x1]) f5(int x) => null;
-int Function(int x0, {List<int> x}) f6(int x) => null;
-Function Function(List<Function> x) f7(int x) => null;
-Function Function(int y, [List<int> x]) f8(int x) => null;
-List<Function> Function([Function x0]) f9(int x) => null;
-List<Function> Function({core.List<core.int> x}) f10(int x) => null;
-core.List<core.int> Function(int y, {int x}) f11(int x) => null;
-core.List<core.int> Function(int x0, [core.List<core.int> x]) f12(int x) =>
-    null;
-List<int> Function(int x0) f13(int x) => null;
-List<int> Function(int x, [List<Function> x0]) f14(int x) => null;
-List<int> Function(int y, {List<int> x}) f15(int x) => null;
-Function([List<Function> x]) f16(int x) => null;
-Function(List<int> x0) f17(int x) => null;
-void Function(int x0, [Function x1]) f18(int x) => null;
-void Function(int x0, {core.List<core.int> x}) f19(int x) => null;
-Function Function<A>(core.List<core.int> x) f20(int x) => null;
-List<int> Function<A>(List<int> x) f21(int x) => null;
-List<A> Function<A>() f22(int x) => null;
-
-class U77<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, {Function x}) x0;
-  core.List<core.int> Function(int x0, {int x}) x1;
-  List<T> Function(int x0, {List<T> x}) x2;
-  void Function({core.List<core.int> x}) x3;
-  int Function(int y, [int x]) Function(int x) x4;
-  int Function(int x2, [List<Function> x3]) Function(int x) x5;
-  int Function(int x1, {List<T> x}) Function(int x) x6;
-  Function Function(List<Function> x) Function(int x) x7;
-  Function Function(int y, [List<T> x]) Function(int x) x8;
-  List<Function> Function([Function x1]) Function(int x) x9;
-  List<Function> Function({core.List<core.int> x}) Function(int x) x10;
-  core.List<core.int> Function(int y, {int x}) Function(int x) x11;
-  core.List<core.int> Function(int x1, [core.List<core.int> x]) Function(int x)
-      x12;
-  List<T> Function(int x1) Function(int x) x13;
-  List<T> Function(int x, [List<Function> x1]) Function(int x) x14;
-  List<T> Function(int y, {List<T> x}) Function(int x) x15;
-  Function([List<Function> x]) Function(int x) x16;
-  Function(List<T> x1) Function(int x) x17;
-  void Function(int x2, [Function x3]) Function(int x) x18;
-  void Function(int x1, {core.List<core.int> x}) Function(int x) x19;
-  Function Function<A>(core.List<core.int> x) Function(int x) x20;
-  List<T> Function<A>(List<T> x) Function(int x) x21;
-  List<A> Function<A>() Function(int x) x22;
-
-  U77({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, {Function x}) => null;
-  core.List<core.int> m1(int x0, {int x}) => null;
-  List<T> m2(int x0, {List<T> x}) => null;
-  void m3({core.List<core.int> x}) => null;
-  int Function(int y, [int x]) m4(int x) => null;
-  int Function(int x0, [List<Function> x1]) m5(int x) => null;
-  int Function(int x0, {List<T> x}) m6(int x) => null;
-  Function Function(List<Function> x) m7(int x) => null;
-  Function Function(int y, [List<T> x]) m8(int x) => null;
-  List<Function> Function([Function x0]) m9(int x) => null;
-  List<Function> Function({core.List<core.int> x}) m10(int x) => null;
-  core.List<core.int> Function(int y, {int x}) m11(int x) => null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x]) m12(int x) =>
-      null;
-  List<T> Function(int x0) m13(int x) => null;
-  List<T> Function(int x, [List<Function> x0]) m14(int x) => null;
-  List<T> Function(int y, {List<T> x}) m15(int x) => null;
-  Function([List<Function> x]) m16(int x) => null;
-  Function(List<T> x0) m17(int x) => null;
-  void Function(int x0, [Function x1]) m18(int x) => null;
-  void Function(int x0, {core.List<core.int> x}) m19(int x) => null;
-  Function Function<A>(core.List<core.int> x) m20(int x) => null;
-  List<T> Function<A>(List<T> x) m21(int x) => null;
-  List<A> Function<A>() m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, {Function x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, {Function x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, {Function x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x0, {int x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {int x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x0, {int x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int x0, {List<T> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {List<T> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int x0, {List<T> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int x0, {List<T> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int x0, {List<T> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function({core.List<core.int> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function({core.List<core.int> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function({core.List<core.int> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int y, [int x]) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int y, [int x]) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int y, [int x]) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x2, [List<Function> x3]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x2, [List<Function> x3]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(int x2, [List<Function> x3]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, {List<T> x}) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, {List<T> x}) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x1, {List<T> x}) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x1, {List<T> x}) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(List<Function> x) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [List<T> x]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<T> x]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int y, [List<T> x]) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int y, [List<T> x]) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function([Function x1]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x1]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x1]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({core.List<core.int> x}) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({core.List<core.int> x}) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function({core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, {int x}) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {int x}) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int y, {int x}) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [core.List<core.int> x]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [core.List<core.int> x]) Function(
-        int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [List<Function> x1]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<Function> x1]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int x, [List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [List<Function> x1]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [List<Function> x1]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {List<T> x}) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<T> x}) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {List<T> x}) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {List<T> x}) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([List<Function> x]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x1) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x1) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(List<T> x1) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x1) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x1) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x2, [Function x3]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x2, [Function x3]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x2, [Function x3]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, {core.List<core.int> x}) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, {core.List<core.int> x}) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int x1, {core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(core.List<core.int> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(core.List<core.int> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<T> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<T> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<T> x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<T> x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>() Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>() Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>() Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U77().runTests();
-  new U77<int>(tIsInt: true).runTests();
-  new U77<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type78_test.dart b/tests/language/function_type/function_type78_test.dart
deleted file mode 100644
index ee0b0be..0000000
--- a/tests/language/function_type/function_type78_test.dart
+++ /dev/null
@@ -1,989 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(List<Function> x);
-typedef F1<T> = core.List<core.int> Function(int y, {int x});
-typedef F2<T> = List<T> Function(int y, {List<T> x});
-typedef F3<T> = void Function(int x0, {core.List<core.int> x});
-typedef F4<T> = int Function(int y, [int x]) Function<B extends core.int>();
-typedef F5<T> = int Function(int x2, [List<Function> x3])
-    Function<B extends core.int>();
-typedef F6<T> = int Function(int x1, {List<T> x})
-    Function<B extends core.int>();
-typedef F7<T> = Function Function(List<Function> x)
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int y, [List<T> x])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function([Function x1])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function({core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int y, {int x})
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function(int x1) Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x, [List<Function> x1])
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function(int y, {List<T> x})
-    Function<B extends core.int>();
-typedef F16<T> = Function([List<Function> x]) Function<B extends core.int>();
-typedef F17<T> = Function(List<T> x1) Function<B extends core.int>();
-typedef F18<T> = void Function(int x2, [Function x3])
-    Function<B extends core.int>();
-typedef F19<T> = void Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F20<T> = Function Function<A>(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>(List<T> x) Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>() Function<B extends core.int>();
-
-Function f0(List<Function> x) => null;
-core.List<core.int> f1(int y, {int x}) => null;
-List<int> f2(int y, {List<int> x}) => null;
-void f3(int x0, {core.List<core.int> x}) => null;
-int Function(int y, [int x]) f4<B extends core.int>() => null;
-int Function(int x0, [List<Function> x1]) f5<B extends core.int>() => null;
-int Function(int x0, {List<int> x}) f6<B extends core.int>() => null;
-Function Function(List<Function> x) f7<B extends core.int>() => null;
-Function Function(int y, [List<int> x]) f8<B extends core.int>() => null;
-List<Function> Function([Function x0]) f9<B extends core.int>() => null;
-List<Function> Function({core.List<core.int> x}) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int y, {int x}) f11<B extends core.int>() => null;
-core.List<core.int> Function(int x0, [core.List<core.int> x])
-    f12<B extends core.int>() => null;
-List<int> Function(int x0) f13<B extends core.int>() => null;
-List<int> Function(int x, [List<Function> x0]) f14<B extends core.int>() =>
-    null;
-List<int> Function(int y, {List<int> x}) f15<B extends core.int>() => null;
-Function([List<Function> x]) f16<B extends core.int>() => null;
-Function(List<int> x0) f17<B extends core.int>() => null;
-void Function(int x0, [Function x1]) f18<B extends core.int>() => null;
-void Function(int x0, {core.List<core.int> x}) f19<B extends core.int>() =>
-    null;
-Function Function<A>(core.List<core.int> x) f20<B extends core.int>() => null;
-List<int> Function<A>(List<int> x) f21<B extends core.int>() => null;
-List<A> Function<A>() f22<B extends core.int>() => null;
-
-class U78<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(List<Function> x) x0;
-  core.List<core.int> Function(int y, {int x}) x1;
-  List<T> Function(int y, {List<T> x}) x2;
-  void Function(int x0, {core.List<core.int> x}) x3;
-  int Function(int y, [int x]) Function<B extends core.int>() x4;
-  int Function(int x2, [List<Function> x3]) Function<B extends core.int>() x5;
-  int Function(int x1, {List<T> x}) Function<B extends core.int>() x6;
-  Function Function(List<Function> x) Function<B extends core.int>() x7;
-  Function Function(int y, [List<T> x]) Function<B extends core.int>() x8;
-  List<Function> Function([Function x1]) Function<B extends core.int>() x9;
-  List<Function> Function({core.List<core.int> x})
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function(int y, {int x}) Function<B extends core.int>()
-      x11;
-  core.List<core.int> Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>() x12;
-  List<T> Function(int x1) Function<B extends core.int>() x13;
-  List<T> Function(int x, [List<Function> x1]) Function<B extends core.int>()
-      x14;
-  List<T> Function(int y, {List<T> x}) Function<B extends core.int>() x15;
-  Function([List<Function> x]) Function<B extends core.int>() x16;
-  Function(List<T> x1) Function<B extends core.int>() x17;
-  void Function(int x2, [Function x3]) Function<B extends core.int>() x18;
-  void Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-      x19;
-  Function Function<A>(core.List<core.int> x) Function<B extends core.int>()
-      x20;
-  List<T> Function<A>(List<T> x) Function<B extends core.int>() x21;
-  List<A> Function<A>() Function<B extends core.int>() x22;
-
-  U78({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(List<Function> x) => null;
-  core.List<core.int> m1(int y, {int x}) => null;
-  List<T> m2(int y, {List<T> x}) => null;
-  void m3(int x0, {core.List<core.int> x}) => null;
-  int Function(int y, [int x]) m4<B extends core.int>() => null;
-  int Function(int x0, [List<Function> x1]) m5<B extends core.int>() => null;
-  int Function(int x0, {List<T> x}) m6<B extends core.int>() => null;
-  Function Function(List<Function> x) m7<B extends core.int>() => null;
-  Function Function(int y, [List<T> x]) m8<B extends core.int>() => null;
-  List<Function> Function([Function x0]) m9<B extends core.int>() => null;
-  List<Function> Function({core.List<core.int> x}) m10<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int y, {int x}) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x])
-      m12<B extends core.int>() => null;
-  List<T> Function(int x0) m13<B extends core.int>() => null;
-  List<T> Function(int x, [List<Function> x0]) m14<B extends core.int>() =>
-      null;
-  List<T> Function(int y, {List<T> x}) m15<B extends core.int>() => null;
-  Function([List<Function> x]) m16<B extends core.int>() => null;
-  Function(List<T> x0) m17<B extends core.int>() => null;
-  void Function(int x0, [Function x1]) m18<B extends core.int>() => null;
-  void Function(int x0, {core.List<core.int> x}) m19<B extends core.int>() =>
-      null;
-  Function Function<A>(core.List<core.int> x) m20<B extends core.int>() => null;
-  List<T> Function<A>(List<T> x) m21<B extends core.int>() => null;
-  List<A> Function<A>() m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(List<Function> x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(List<Function> x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int y, {int x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {int x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int y, {int x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function(int y, {List<T> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<T> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function(int y, {List<T> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function(int y, {List<T> x}) l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function(int y, {List<T> x}) l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int x0, {core.List<core.int> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, {core.List<core.int> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int y, [int x]) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int y, [int x]) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function(int y, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x2, [List<Function> x3]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x2, [List<Function> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, {List<T> x}) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, {List<T> x}) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int x1, {List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x1, {List<T> x}) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x1, {List<T> x}) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(List<Function> x) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [List<T> x]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<T> x]) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int y, [List<T> x]) Function<B extends core.int>() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int y, [List<T> x]) Function<B extends core.int>() l8 =
-          m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function([Function x1]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x1]) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({core.List<core.int> x}) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({core.List<core.int> x})
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function({core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, {int x}) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {int x}) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int y, {int x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect
-        .isTrue(m13 is List<T> Function(int x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1) Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [List<Function> x1]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<Function> x1]) Function<B extends core.int>()
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x, [List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [List<Function> x1])
-            Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [List<Function> x1])
-          Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {List<T> x}) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<T> x}) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, {List<T> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {List<T> x}) Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {List<T> x}) Function<B extends core.int>() l15 =
-          m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([List<Function> x]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function([List<Function> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x1) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x1) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(List<T> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x1) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x1) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x2, [Function x3]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x2, [Function x3]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x2, [Function x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(core.List<core.int> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(core.List<core.int> x) Function<B extends core.int>()
-        l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<T> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<T> x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<T> x) Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<T> x) Function<B extends core.int>() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>() Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>() Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U78().runTests();
-  new U78<int>(tIsInt: true).runTests();
-  new U78<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type79_test.dart b/tests/language/function_type/function_type79_test.dart
deleted file mode 100644
index 51585b8..0000000
--- a/tests/language/function_type/function_type79_test.dart
+++ /dev/null
@@ -1,1012 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([List<Function> x]);
-typedef F1<T> = core.List<core.int> Function(Function x);
-typedef F2<T> = List<T> Function();
-typedef F3<T> = void Function(int y, {core.List<core.int> x});
-typedef F4<T> = int Function(int y, [int x]) Function<B extends core.int>(
-    int x);
-typedef F5<T> = int Function(int x2, [List<Function> x3])
-    Function<B extends core.int>(int x);
-typedef F6<T> = int Function(int x1, {List<T> x}) Function<B extends core.int>(
-    int x);
-typedef F7<T> = Function Function(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int y, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function([Function x1])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function({core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int y, {int x})
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function(int x1) Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int x, [List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function(int y, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function([List<Function> x]) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function(List<T> x1) Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int x2, [Function x3])
-    Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F21<T> = List<T> Function<A>(List<T> x) Function<B extends core.int>(
-    int x);
-typedef F22<T> = List<A> Function<A>() Function<B extends core.int>(int x);
-
-Function f0([List<Function> x]) => null;
-core.List<core.int> f1(Function x) => null;
-List<int> f2() => null;
-void f3(int y, {core.List<core.int> x}) => null;
-int Function(int y, [int x]) f4<B extends core.int>(int x) => null;
-int Function(int x0, [List<Function> x1]) f5<B extends core.int>(int x) => null;
-int Function(int x0, {List<int> x}) f6<B extends core.int>(int x) => null;
-Function Function(List<Function> x) f7<B extends core.int>(int x) => null;
-Function Function(int y, [List<int> x]) f8<B extends core.int>(int x) => null;
-List<Function> Function([Function x0]) f9<B extends core.int>(int x) => null;
-List<Function> Function({core.List<core.int> x}) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int y, {int x}) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int x0, [core.List<core.int> x])
-    f12<B extends core.int>(int x) => null;
-List<int> Function(int x0) f13<B extends core.int>(int x) => null;
-List<int> Function(int x, [List<Function> x0]) f14<B extends core.int>(int x) =>
-    null;
-List<int> Function(int y, {List<int> x}) f15<B extends core.int>(int x) => null;
-Function([List<Function> x]) f16<B extends core.int>(int x) => null;
-Function(List<int> x0) f17<B extends core.int>(int x) => null;
-void Function(int x0, [Function x1]) f18<B extends core.int>(int x) => null;
-void Function(int x0, {core.List<core.int> x}) f19<B extends core.int>(int x) =>
-    null;
-Function Function<A>(core.List<core.int> x) f20<B extends core.int>(int x) =>
-    null;
-List<int> Function<A>(List<int> x) f21<B extends core.int>(int x) => null;
-List<A> Function<A>() f22<B extends core.int>(int x) => null;
-
-class U79<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([List<Function> x]) x0;
-  core.List<core.int> Function(Function x) x1;
-  List<T> Function() x2;
-  void Function(int y, {core.List<core.int> x}) x3;
-  int Function(int y, [int x]) Function<B extends core.int>(int x) x4;
-  int Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-      x5;
-  int Function(int x1, {List<T> x}) Function<B extends core.int>(int x) x6;
-  Function Function(List<Function> x) Function<B extends core.int>(int x) x7;
-  Function Function(int y, [List<T> x]) Function<B extends core.int>(int x) x8;
-  List<Function> Function([Function x1]) Function<B extends core.int>(int x) x9;
-  List<Function> Function({core.List<core.int> x}) Function<B extends core.int>(
-      int x) x10;
-  core.List<core.int> Function(int y, {int x}) Function<B extends core.int>(
-      int x) x11;
-  core.List<core.int> Function(int x1, [core.List<core.int> x])
-      Function<B extends core.int>(int x) x12;
-  List<T> Function(int x1) Function<B extends core.int>(int x) x13;
-  List<T> Function(int x, [List<Function> x1]) Function<B extends core.int>(
-      int x) x14;
-  List<T> Function(int y, {List<T> x}) Function<B extends core.int>(int x) x15;
-  Function([List<Function> x]) Function<B extends core.int>(int x) x16;
-  Function(List<T> x1) Function<B extends core.int>(int x) x17;
-  void Function(int x2, [Function x3]) Function<B extends core.int>(int x) x18;
-  void Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(
-      int x) x19;
-  Function Function<A>(core.List<core.int> x) Function<B extends core.int>(
-      int x) x20;
-  List<T> Function<A>(List<T> x) Function<B extends core.int>(int x) x21;
-  List<A> Function<A>() Function<B extends core.int>(int x) x22;
-
-  U79({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([List<Function> x]) => null;
-  core.List<core.int> m1(Function x) => null;
-  List<T> m2() => null;
-  void m3(int y, {core.List<core.int> x}) => null;
-  int Function(int y, [int x]) m4<B extends core.int>(int x) => null;
-  int Function(int x0, [List<Function> x1]) m5<B extends core.int>(int x) =>
-      null;
-  int Function(int x0, {List<T> x}) m6<B extends core.int>(int x) => null;
-  Function Function(List<Function> x) m7<B extends core.int>(int x) => null;
-  Function Function(int y, [List<T> x]) m8<B extends core.int>(int x) => null;
-  List<Function> Function([Function x0]) m9<B extends core.int>(int x) => null;
-  List<Function> Function({core.List<core.int> x}) m10<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int y, {int x}) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x])
-      m12<B extends core.int>(int x) => null;
-  List<T> Function(int x0) m13<B extends core.int>(int x) => null;
-  List<T> Function(int x, [List<Function> x0]) m14<B extends core.int>(int x) =>
-      null;
-  List<T> Function(int y, {List<T> x}) m15<B extends core.int>(int x) => null;
-  Function([List<Function> x]) m16<B extends core.int>(int x) => null;
-  Function(List<T> x0) m17<B extends core.int>(int x) => null;
-  void Function(int x0, [Function x1]) m18<B extends core.int>(int x) => null;
-  void Function(int x0, {core.List<core.int> x}) m19<B extends core.int>(
-          int x) =>
-      null;
-  Function Function<A>(core.List<core.int> x) m20<B extends core.int>(int x) =>
-      null;
-  List<T> Function<A>(List<T> x) m21<B extends core.int>(int x) => null;
-  List<A> Function<A>() m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([List<Function> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([List<Function> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(Function x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(Function x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// List<T> Function()
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    List<T> Function() l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is List<T> Function());
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-    if (!tIsBool) {
-      Expect.isTrue(f2 is F2<int>);
-      Expect.isFalse(f2 is F2<bool>);
-      Expect.isTrue(confuse(f2) is F2<int>);
-      Expect.isFalse(confuse(f2) is F2<bool>);
-      Expect.equals(tIsDynamic, m2 is F2<bool>);
-      Expect.equals(tIsDynamic, confuse(m2) is F2<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          x2 = confuse(f2);
-        });
-        List<T> Function() l2;
-        Expect.throws(() {
-          l2 = (f2 as dynamic);
-        });
-        Expect.throws(() {
-          l2 = confuse(f2);
-        });
-      }
-      List<T> Function() l2 = m2;
-      // In checked mode, verifies the type.
-      x2 = m2;
-      x2 = confuse(m2);
-    }
-  }
-
-  /// void Function(int y, {core.List<core.int> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, {core.List<core.int> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int y, [int x]) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int y, [int x]) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function(int y, [int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x2, [List<Function> x3]) Function<B extends core.int>(
-        int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, {List<T> x}) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-            l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int x1, {List<T> x}) Function<B extends core.int>(int x) l6 =
-          m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int y, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int y, [List<T> x]) Function<B extends core.int>(
-            int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-          l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function([Function x1]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function([Function x1]) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function([Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function({core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function({core.List<core.int> x})
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function({core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(int y, {int x}) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {int x}) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int y, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function(int x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1) Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1) Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [List<Function> x1]) Function<B extends core.int>(
-        int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x, [List<Function> x1])
-            Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x, [List<Function> x1]) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-        l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-            l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-          l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([List<Function> x]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(List<T> x1) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(List<T> x1) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(List<T> x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(List<T> x1) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(List<T> x1) Function<B extends core.int>(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-        l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x2, [Function x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(core.List<core.int> x) Function<B extends core.int>(
-        int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<T> x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<T> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<T> x) Function<B extends core.int>(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<T> x) Function<B extends core.int>(int x) l21 =
-          m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>() Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>() Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U79().runTests();
-  new U79<int>(tIsInt: true).runTests();
-  new U79<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type7_test.dart b/tests/language/function_type/function_type7_test.dart
deleted file mode 100644
index b35afed..0000000
--- a/tests/language/function_type/function_type7_test.dart
+++ /dev/null
@@ -1,1014 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x, [int x2]);
-typedef F1<T> = Function Function(int x, [List<T> x2]);
-typedef F2<T> = core.List<core.int> Function(int x1, [core.List<core.int> x2]);
-typedef F3<T> = Function([List<Function> x1]);
-typedef F4<T> = Function Function<A>(List<A> x);
-typedef F5<T> = int Function(int y, {int x}) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function(int x1, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x1) Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int x, [List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F9<T> = Function Function(int y, {List<T> x})
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function([List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = List<Function> Function(List<T> x1)
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x2, [Function x3])
-    Function<B extends core.int>(int x);
-typedef F13<T> = core.List<core.int> Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(Function x) Function<B extends core.int>(
-    int x);
-typedef F15<T> = List<T> Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F16<T> = Function([int x1]) Function<B extends core.int>(int x);
-typedef F17<T> = Function({List<Function> x}) Function<B extends core.int>(
-    int x);
-typedef F18<T> = Function() Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int x1, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F20<T> = void Function([List<T> x1]) Function<B extends core.int>(
-    int x);
-typedef F21<T> = List<Function> Function<A>(List<Function> x)
-    Function<B extends core.int>(int x);
-typedef F22<T> = Function<A>(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F23<T> = void Function<A>(List<T> x) Function<B extends core.int>(
-    int x);
-
-int f0(int x, [int x0]) => null;
-Function f1(int x, [List<int> x0]) => null;
-core.List<core.int> f2(int x0, [core.List<core.int> x1]) => null;
-f3([List<Function> x0]) => null;
-Function f4<A>(List<A> x) => null;
-int Function(int y, {int x}) f5<B extends core.int>(int x) => null;
-int Function(int x0, [core.List<core.int> x]) f6<B extends core.int>(int x) =>
-    null;
-Function Function(int x0) f7<B extends core.int>(int x) => null;
-Function Function(int x, [List<Function> x0]) f8<B extends core.int>(int x) =>
-    null;
-Function Function(int y, {List<int> x}) f9<B extends core.int>(int x) => null;
-List<Function> Function([List<Function> x]) f10<B extends core.int>(int x) =>
-    null;
-List<Function> Function(List<int> x0) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x0, [Function x1]) f12<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x0, {core.List<core.int> x})
-    f13<B extends core.int>(int x) => null;
-List<int> Function(Function x) f14<B extends core.int>(int x) => null;
-List<int> Function(int y, [core.List<core.int> x]) f15<B extends core.int>(
-        int x) =>
-    null;
-Function([int x0]) f16<B extends core.int>(int x) => null;
-Function({List<Function> x}) f17<B extends core.int>(int x) => null;
-Function() f18<B extends core.int>(int x) => null;
-void Function(int x0, [List<Function> x]) f19<B extends core.int>(int x) =>
-    null;
-void Function([List<int> x0]) f20<B extends core.int>(int x) => null;
-List<Function> Function<A>(List<Function> x) f21<B extends core.int>(int x) =>
-    null;
-Function<A>(core.List<core.int> x) f22<B extends core.int>(int x) => null;
-void Function<A>(List<int> x) f23<B extends core.int>(int x) => null;
-
-class U7<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x, [int x2]) x0;
-  Function Function(int x, [List<T> x2]) x1;
-  core.List<core.int> Function(int x1, [core.List<core.int> x2]) x2;
-  Function([List<Function> x1]) x3;
-  Function Function<A>(List<A> x) x4;
-  int Function(int y, {int x}) Function<B extends core.int>(int x) x5;
-  int Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(
-      int x) x6;
-  Function Function(int x1) Function<B extends core.int>(int x) x7;
-  Function Function(int x, [List<Function> x1]) Function<B extends core.int>(
-      int x) x8;
-  Function Function(int y, {List<T> x}) Function<B extends core.int>(int x) x9;
-  List<Function> Function([List<Function> x]) Function<B extends core.int>(
-      int x) x10;
-  List<Function> Function(List<T> x1) Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(int x2, [Function x3])
-      Function<B extends core.int>(int x) x12;
-  core.List<core.int> Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>(int x) x13;
-  List<T> Function(Function x) Function<B extends core.int>(int x) x14;
-  List<T> Function(int y, [core.List<core.int> x]) Function<B extends core.int>(
-      int x) x15;
-  Function([int x1]) Function<B extends core.int>(int x) x16;
-  Function({List<Function> x}) Function<B extends core.int>(int x) x17;
-  Function() Function<B extends core.int>(int x) x18;
-  void Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-      x19;
-  void Function([List<T> x1]) Function<B extends core.int>(int x) x20;
-  List<Function> Function<A>(List<Function> x) Function<B extends core.int>(
-      int x) x21;
-  Function<A>(core.List<core.int> x) Function<B extends core.int>(int x) x22;
-  void Function<A>(List<T> x) Function<B extends core.int>(int x) x23;
-
-  U7({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x, [int x0]) => null;
-  Function m1(int x, [List<T> x0]) => null;
-  core.List<core.int> m2(int x0, [core.List<core.int> x1]) => null;
-  m3([List<Function> x0]) => null;
-  Function m4<A>(List<A> x) => null;
-  int Function(int y, {int x}) m5<B extends core.int>(int x) => null;
-  int Function(int x0, [core.List<core.int> x]) m6<B extends core.int>(int x) =>
-      null;
-  Function Function(int x0) m7<B extends core.int>(int x) => null;
-  Function Function(int x, [List<Function> x0]) m8<B extends core.int>(int x) =>
-      null;
-  Function Function(int y, {List<T> x}) m9<B extends core.int>(int x) => null;
-  List<Function> Function([List<Function> x]) m10<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(List<T> x0) m11<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x0, [Function x1]) m12<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x0, {core.List<core.int> x})
-      m13<B extends core.int>(int x) => null;
-  List<T> Function(Function x) m14<B extends core.int>(int x) => null;
-  List<T> Function(int y, [core.List<core.int> x]) m15<B extends core.int>(
-          int x) =>
-      null;
-  Function([int x0]) m16<B extends core.int>(int x) => null;
-  Function({List<Function> x}) m17<B extends core.int>(int x) => null;
-  Function() m18<B extends core.int>(int x) => null;
-  void Function(int x0, [List<Function> x]) m19<B extends core.int>(int x) =>
-      null;
-  void Function([List<T> x0]) m20<B extends core.int>(int x) => null;
-  List<Function> Function<A>(List<Function> x) m21<B extends core.int>(int x) =>
-      null;
-  Function<A>(core.List<core.int> x) m22<B extends core.int>(int x) => null;
-  void Function<A>(List<T> x) m23<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x, [int x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x, [int x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x, [int x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(int x, [List<T> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<T> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(int x, [List<T> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(int x, [List<T> x2]) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(int x, [List<T> x2]) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, [core.List<core.int> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [core.List<core.int> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(
-        m2 is core.List<core.int> Function(int x1, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function([List<Function> x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function([List<Function> x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function([List<Function> x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// Function Function<A>(List<A> x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<A> x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is Function Function<A>(List<A> x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {int x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {int x}) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function(int y, {int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int x1, [core.List<core.int> x]) Function<B extends core.int>(
-        int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int x1, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function(int x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<Function> x1]) Function<B extends core.int>(
-        int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function(int y, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-    if (!tIsBool) {
-      Expect.isTrue(f9 is F9<int>);
-      Expect.isFalse(f9 is F9<bool>);
-      Expect.isTrue(confuse(f9) is F9<int>);
-      Expect.isFalse(confuse(f9) is F9<bool>);
-      Expect.equals(tIsDynamic, m9 is F9<bool>);
-      Expect.equals(tIsDynamic, confuse(m9) is F9<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          x9 = confuse(f9);
-        });
-        Function Function(int y, {List<T> x}) Function<B extends core.int>(
-            int x) l9;
-        Expect.throws(() {
-          l9 = (f9 as dynamic);
-        });
-        Expect.throws(() {
-          l9 = confuse(f9);
-        });
-      }
-      Function Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-          l9 = m9;
-      // In checked mode, verifies the type.
-      x9 = m9;
-      x9 = confuse(m9);
-    }
-  }
-
-  /// List<Function> Function([List<Function> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<Function> x]) Function<B extends core.int>(
-        int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function(List<T> x1) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x1) Function<B extends core.int>(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function(List<T> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function(List<T> x1) Function<B extends core.int>(int x)
-            l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function(List<T> x1) Function<B extends core.int>(int x)
-          l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [Function x3])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2, [Function x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int x1,
-            {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function(Function x) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(Function x) Function<B extends core.int>(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(Function x) Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(Function x) Function<B extends core.int>(int x) l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(int y, [core.List<core.int> x])
-            Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(int y, [core.List<core.int> x])
-          Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function([int x1]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([int x1]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect
-        .isTrue(m16 is Function([int x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<Function> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<Function> x}) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// Function() Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    Function() Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is Function() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<Function> x]) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function([List<T> x1]) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function([List<T> x1]) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is void Function([List<T> x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function([List<T> x1]) Function<B extends core.int>(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function([List<T> x1]) Function<B extends core.int>(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(List<Function> x) Function<B extends core.int>(
-        int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(core.List<core.int> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-
-  /// void Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>(List<T> x) Function<B extends core.int>(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(
-        m23 is void Function<A>(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-    if (!tIsBool) {
-      Expect.isTrue(f23 is F23<int>);
-      Expect.isFalse(f23 is F23<bool>);
-      Expect.isTrue(confuse(f23) is F23<int>);
-      Expect.isFalse(confuse(f23) is F23<bool>);
-      Expect.equals(tIsDynamic, m23 is F23<bool>);
-      Expect.equals(tIsDynamic, confuse(m23) is F23<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          x23 = confuse(f23);
-        });
-        void Function<A>(List<T> x) Function<B extends core.int>(int x) l23;
-        Expect.throws(() {
-          l23 = (f23 as dynamic);
-        });
-        Expect.throws(() {
-          l23 = confuse(f23);
-        });
-      }
-      void Function<A>(List<T> x) Function<B extends core.int>(int x) l23 = m23;
-      // In checked mode, verifies the type.
-      x23 = m23;
-      x23 = confuse(m23);
-    }
-  }
-}
-
-void main() {
-  new U7().runTests();
-  new U7<int>(tIsInt: true).runTests();
-  new U7<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type80_test.dart b/tests/language/function_type/function_type80_test.dart
deleted file mode 100644
index f0c6b40..0000000
--- a/tests/language/function_type/function_type80_test.dart
+++ /dev/null
@@ -1,968 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, [List<Function> x]);
-typedef F1<T> = core.List<core.int> Function([Function x]);
-typedef F2<T> = Function(int x);
-typedef F3<T> = void Function(List<T> x);
-typedef F4<T> = int Function(int x0) Function();
-typedef F5<T> = int Function(int x, [List<Function> x2]) Function();
-typedef F6<T> = int Function(int y, {List<T> x}) Function();
-typedef F7<T> = Function Function([List<Function> x]) Function();
-typedef F8<T> = Function Function(List<T> x0) Function();
-typedef F9<T> = List<Function> Function(int x1, [Function x2]) Function();
-typedef F10<T> = List<Function> Function(int x0, {core.List<core.int> x})
-    Function();
-typedef F11<T> = core.List<core.int> Function(Function x) Function();
-typedef F12<T> = core.List<core.int> Function(int y, [core.List<core.int> x])
-    Function();
-typedef F13<T> = List<T> Function([int x1]) Function();
-typedef F14<T> = List<T> Function({List<Function> x}) Function();
-typedef F15<T> = List<T> Function() Function();
-typedef F16<T> = Function(int x0, [List<Function> x]) Function();
-typedef F17<T> = Function([List<T> x1]) Function();
-typedef F18<T> = void Function(int x, [Function x2]) Function();
-typedef F19<T> = void Function(int y, {core.List<core.int> x}) Function();
-typedef F20<T> = Function Function<A>(List<T> x) Function();
-typedef F21<T> = List<T> Function<A>() Function();
-typedef F22<T> = List<A> Function<A>(A x) Function();
-
-Function f0(int x0, [List<Function> x]) => null;
-core.List<core.int> f1([Function x]) => null;
-f2(int x) => null;
-void f3(List<int> x) => null;
-int Function(int x0) f4() => null;
-int Function(int x, [List<Function> x0]) f5() => null;
-int Function(int y, {List<int> x}) f6() => null;
-Function Function([List<Function> x]) f7() => null;
-Function Function(List<int> x0) f8() => null;
-List<Function> Function(int x0, [Function x1]) f9() => null;
-List<Function> Function(int x0, {core.List<core.int> x}) f10() => null;
-core.List<core.int> Function(Function x) f11() => null;
-core.List<core.int> Function(int y, [core.List<core.int> x]) f12() => null;
-List<int> Function([int x0]) f13() => null;
-List<int> Function({List<Function> x}) f14() => null;
-List<int> Function() f15() => null;
-Function(int x0, [List<Function> x]) f16() => null;
-Function([List<int> x0]) f17() => null;
-void Function(int x, [Function x0]) f18() => null;
-void Function(int y, {core.List<core.int> x}) f19() => null;
-Function Function<A>(List<int> x) f20() => null;
-List<int> Function<A>() f21() => null;
-List<A> Function<A>(A x) f22() => null;
-
-class U80<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, [List<Function> x]) x0;
-  core.List<core.int> Function([Function x]) x1;
-  Function(int x) x2;
-  void Function(List<T> x) x3;
-  int Function(int x0) Function() x4;
-  int Function(int x, [List<Function> x2]) Function() x5;
-  int Function(int y, {List<T> x}) Function() x6;
-  Function Function([List<Function> x]) Function() x7;
-  Function Function(List<T> x0) Function() x8;
-  List<Function> Function(int x1, [Function x2]) Function() x9;
-  List<Function> Function(int x0, {core.List<core.int> x}) Function() x10;
-  core.List<core.int> Function(Function x) Function() x11;
-  core.List<core.int> Function(int y, [core.List<core.int> x]) Function() x12;
-  List<T> Function([int x1]) Function() x13;
-  List<T> Function({List<Function> x}) Function() x14;
-  List<T> Function() Function() x15;
-  Function(int x0, [List<Function> x]) Function() x16;
-  Function([List<T> x1]) Function() x17;
-  void Function(int x, [Function x2]) Function() x18;
-  void Function(int y, {core.List<core.int> x}) Function() x19;
-  Function Function<A>(List<T> x) Function() x20;
-  List<T> Function<A>() Function() x21;
-  List<A> Function<A>(A x) Function() x22;
-
-  U80({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [List<Function> x]) => null;
-  core.List<core.int> m1([Function x]) => null;
-  m2(int x) => null;
-  void m3(List<T> x) => null;
-  int Function(int x0) m4() => null;
-  int Function(int x, [List<Function> x0]) m5() => null;
-  int Function(int y, {List<T> x}) m6() => null;
-  Function Function([List<Function> x]) m7() => null;
-  Function Function(List<T> x0) m8() => null;
-  List<Function> Function(int x0, [Function x1]) m9() => null;
-  List<Function> Function(int x0, {core.List<core.int> x}) m10() => null;
-  core.List<core.int> Function(Function x) m11() => null;
-  core.List<core.int> Function(int y, [core.List<core.int> x]) m12() => null;
-  List<T> Function([int x0]) m13() => null;
-  List<T> Function({List<Function> x}) m14() => null;
-  List<T> Function() m15() => null;
-  Function(int x0, [List<Function> x]) m16() => null;
-  Function([List<T> x0]) m17() => null;
-  void Function(int x, [Function x0]) m18() => null;
-  void Function(int y, {core.List<core.int> x}) m19() => null;
-  Function Function<A>(List<T> x) m20() => null;
-  List<T> Function<A>() m21() => null;
-  List<A> Function<A>(A x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, [List<Function> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [List<Function> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, [List<Function> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function([Function x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function([Function x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(List<T> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(List<T> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(List<T> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(List<T> x) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(List<T> x) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function(int x0) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x0) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x0) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x, [List<Function> x2]) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<Function> x2]) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {List<T> x}) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<T> x}) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, {List<T> x}) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, {List<T> x}) Function() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, {List<T> x}) Function() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([List<Function> x]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x0) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x0) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(List<T> x0) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x0) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x0) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x1, [Function x2]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [Function x2]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x1, [Function x2]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x0, {core.List<core.int> x}) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {core.List<core.int> x}) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10
-        is List<Function> Function(int x0, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(Function x) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(Function x) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [core.List<core.int> x]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [core.List<core.int> x]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y,
-            [core.List<core.int> x])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x1]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x1]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function([int x1]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x1]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x1]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({List<Function> x}) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({List<Function> x}) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function({List<Function> x}) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({List<Function> x}) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({List<Function> x}) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function() Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function() Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function() Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function() Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function() Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x0, [List<Function> x]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x0, [List<Function> x]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x0, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x1]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x1]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([List<T> x1]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x1]) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x1]) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x, [Function x2]) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [Function x2]) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x, [Function x2]) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {core.List<core.int> x}) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {core.List<core.int> x}) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int y, {core.List<core.int> x}) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<T> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<T> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        Function Function<A>(List<T> x) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      Function Function<A>(List<T> x) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<T> Function<A>() Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>() Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>() Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>() Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>() Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(A x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(A x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(A x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U80().runTests();
-  new U80<int>(tIsInt: true).runTests();
-  new U80<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type81_test.dart b/tests/language/function_type/function_type81_test.dart
deleted file mode 100644
index 8968e14..0000000
--- a/tests/language/function_type/function_type81_test.dart
+++ /dev/null
@@ -1,975 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, [List<Function> x]);
-typedef F1<T> = core.List<core.int> Function(int x0, [Function x]);
-typedef F2<T> = Function([int x]);
-typedef F3<T> = void Function([List<T> x]);
-typedef F4<T> = int Function(int x1) Function(int x);
-typedef F5<T> = int Function(int x, [List<Function> x1]) Function(int x);
-typedef F6<T> = int Function(int y, {List<T> x}) Function(int x);
-typedef F7<T> = Function Function([List<Function> x]) Function(int x);
-typedef F8<T> = Function Function(List<T> x1) Function(int x);
-typedef F9<T> = List<Function> Function(int x2, [Function x3]) Function(int x);
-typedef F10<T> = List<Function> Function(int x1, {core.List<core.int> x})
-    Function(int x);
-typedef F11<T> = core.List<core.int> Function(Function x) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int y, [core.List<core.int> x])
-    Function(int x);
-typedef F13<T> = List<T> Function([int x1]) Function(int x);
-typedef F14<T> = List<T> Function({List<Function> x}) Function(int x);
-typedef F15<T> = List<T> Function() Function(int x);
-typedef F16<T> = Function(int x1, [List<Function> x]) Function(int x);
-typedef F17<T> = Function([List<T> x1]) Function(int x);
-typedef F18<T> = void Function(int x, [Function x1]) Function(int x);
-typedef F19<T> = void Function(int y, {core.List<core.int> x}) Function(int x);
-typedef F20<T> = Function Function<A>(List<T> x) Function(int x);
-typedef F21<T> = List<T> Function<A>() Function(int x);
-typedef F22<T> = List<A> Function<A>(A x) Function(int x);
-
-Function f0(int y, [List<Function> x]) => null;
-core.List<core.int> f1(int x0, [Function x]) => null;
-f2([int x]) => null;
-void f3([List<int> x]) => null;
-int Function(int x0) f4(int x) => null;
-int Function(int x, [List<Function> x0]) f5(int x) => null;
-int Function(int y, {List<int> x}) f6(int x) => null;
-Function Function([List<Function> x]) f7(int x) => null;
-Function Function(List<int> x0) f8(int x) => null;
-List<Function> Function(int x0, [Function x1]) f9(int x) => null;
-List<Function> Function(int x0, {core.List<core.int> x}) f10(int x) => null;
-core.List<core.int> Function(Function x) f11(int x) => null;
-core.List<core.int> Function(int y, [core.List<core.int> x]) f12(int x) => null;
-List<int> Function([int x0]) f13(int x) => null;
-List<int> Function({List<Function> x}) f14(int x) => null;
-List<int> Function() f15(int x) => null;
-Function(int x0, [List<Function> x]) f16(int x) => null;
-Function([List<int> x0]) f17(int x) => null;
-void Function(int x, [Function x0]) f18(int x) => null;
-void Function(int y, {core.List<core.int> x}) f19(int x) => null;
-Function Function<A>(List<int> x) f20(int x) => null;
-List<int> Function<A>() f21(int x) => null;
-List<A> Function<A>(A x) f22(int x) => null;
-
-class U81<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, [List<Function> x]) x0;
-  core.List<core.int> Function(int x0, [Function x]) x1;
-  Function([int x]) x2;
-  void Function([List<T> x]) x3;
-  int Function(int x1) Function(int x) x4;
-  int Function(int x, [List<Function> x1]) Function(int x) x5;
-  int Function(int y, {List<T> x}) Function(int x) x6;
-  Function Function([List<Function> x]) Function(int x) x7;
-  Function Function(List<T> x1) Function(int x) x8;
-  List<Function> Function(int x2, [Function x3]) Function(int x) x9;
-  List<Function> Function(int x1, {core.List<core.int> x}) Function(int x) x10;
-  core.List<core.int> Function(Function x) Function(int x) x11;
-  core.List<core.int> Function(int y, [core.List<core.int> x]) Function(int x)
-      x12;
-  List<T> Function([int x1]) Function(int x) x13;
-  List<T> Function({List<Function> x}) Function(int x) x14;
-  List<T> Function() Function(int x) x15;
-  Function(int x1, [List<Function> x]) Function(int x) x16;
-  Function([List<T> x1]) Function(int x) x17;
-  void Function(int x, [Function x1]) Function(int x) x18;
-  void Function(int y, {core.List<core.int> x}) Function(int x) x19;
-  Function Function<A>(List<T> x) Function(int x) x20;
-  List<T> Function<A>() Function(int x) x21;
-  List<A> Function<A>(A x) Function(int x) x22;
-
-  U81({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, [List<Function> x]) => null;
-  core.List<core.int> m1(int x0, [Function x]) => null;
-  m2([int x]) => null;
-  void m3([List<T> x]) => null;
-  int Function(int x0) m4(int x) => null;
-  int Function(int x, [List<Function> x0]) m5(int x) => null;
-  int Function(int y, {List<T> x}) m6(int x) => null;
-  Function Function([List<Function> x]) m7(int x) => null;
-  Function Function(List<T> x0) m8(int x) => null;
-  List<Function> Function(int x0, [Function x1]) m9(int x) => null;
-  List<Function> Function(int x0, {core.List<core.int> x}) m10(int x) => null;
-  core.List<core.int> Function(Function x) m11(int x) => null;
-  core.List<core.int> Function(int y, [core.List<core.int> x]) m12(int x) =>
-      null;
-  List<T> Function([int x0]) m13(int x) => null;
-  List<T> Function({List<Function> x}) m14(int x) => null;
-  List<T> Function() m15(int x) => null;
-  Function(int x0, [List<Function> x]) m16(int x) => null;
-  Function([List<T> x0]) m17(int x) => null;
-  void Function(int x, [Function x0]) m18(int x) => null;
-  void Function(int y, {core.List<core.int> x}) m19(int x) => null;
-  Function Function<A>(List<T> x) m20(int x) => null;
-  List<T> Function<A>() m21(int x) => null;
-  List<A> Function<A>(A x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, [List<Function> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<Function> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, [List<Function> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x0, [Function x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [Function x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x0, [Function x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function([int x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function([int x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function([int x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function([List<T> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([List<T> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([List<T> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function([List<T> x]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function([List<T> x]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function(int x1) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x1) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x1) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x, [List<Function> x1]) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<Function> x1]) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect
-        .isTrue(m5 is int Function(int x, [List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {List<T> x}) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<T> x}) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, {List<T> x}) Function(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, {List<T> x}) Function(int x) l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([List<Function> x]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x1) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x1) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(List<T> x1) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x1) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x1) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x2, [Function x3]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [Function x3]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x2, [Function x3]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, {core.List<core.int> x}) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {core.List<core.int> x}) Function(int x)
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1,
-            {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(Function x) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(Function x) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [core.List<core.int> x]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [core.List<core.int> x]) Function(int x)
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y,
-            [core.List<core.int> x])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x1]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x1]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function([int x1]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x1]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x1]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({List<Function> x}) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({List<Function> x}) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function({List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({List<Function> x}) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({List<Function> x}) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function() Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function() Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function() Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function() Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function() Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [List<Function> x]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<Function> x]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x1]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x1]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x1]) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x1]) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x, [Function x1]) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [Function x1]) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x, [Function x1]) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {core.List<core.int> x}) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {core.List<core.int> x}) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int y, {core.List<core.int> x}) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<T> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<T> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        Function Function<A>(List<T> x) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      Function Function<A>(List<T> x) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<T> Function<A>() Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>() Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>() Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>() Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>() Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(A x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(A x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U81().runTests();
-  new U81<int>(tIsInt: true).runTests();
-  new U81<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type82_test.dart b/tests/language/function_type/function_type82_test.dart
deleted file mode 100644
index e0533bb..0000000
--- a/tests/language/function_type/function_type82_test.dart
+++ /dev/null
@@ -1,1003 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(List<Function> x0);
-typedef F1<T> = core.List<core.int> Function(int y, [Function x]);
-typedef F2<T> = Function(int x0, [int x]);
-typedef F3<T> = void Function(int x0, [List<T> x]);
-typedef F4<T> = int Function(int x1) Function<B extends core.int>();
-typedef F5<T> = int Function(int x, [List<Function> x1])
-    Function<B extends core.int>();
-typedef F6<T> = int Function(int y, {List<T> x}) Function<B extends core.int>();
-typedef F7<T> = Function Function([List<Function> x])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(List<T> x1) Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x2, [Function x3])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(Function x)
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function([int x1]) Function<B extends core.int>();
-typedef F14<T> = List<T> Function({List<Function> x})
-    Function<B extends core.int>();
-typedef F15<T> = List<T> Function() Function<B extends core.int>();
-typedef F16<T> = Function(int x1, [List<Function> x])
-    Function<B extends core.int>();
-typedef F17<T> = Function([List<T> x1]) Function<B extends core.int>();
-typedef F18<T> = void Function(int x, [Function x1])
-    Function<B extends core.int>();
-typedef F19<T> = void Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F20<T> = Function Function<A>(List<T> x) Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>() Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>(A x) Function<B extends core.int>();
-
-Function f0(List<Function> x0) => null;
-core.List<core.int> f1(int y, [Function x]) => null;
-f2(int x0, [int x]) => null;
-void f3(int x0, [List<int> x]) => null;
-int Function(int x0) f4<B extends core.int>() => null;
-int Function(int x, [List<Function> x0]) f5<B extends core.int>() => null;
-int Function(int y, {List<int> x}) f6<B extends core.int>() => null;
-Function Function([List<Function> x]) f7<B extends core.int>() => null;
-Function Function(List<int> x0) f8<B extends core.int>() => null;
-List<Function> Function(int x0, [Function x1]) f9<B extends core.int>() => null;
-List<Function> Function(int x0, {core.List<core.int> x})
-    f10<B extends core.int>() => null;
-core.List<core.int> Function(Function x) f11<B extends core.int>() => null;
-core.List<core.int> Function(int y, [core.List<core.int> x])
-    f12<B extends core.int>() => null;
-List<int> Function([int x0]) f13<B extends core.int>() => null;
-List<int> Function({List<Function> x}) f14<B extends core.int>() => null;
-List<int> Function() f15<B extends core.int>() => null;
-Function(int x0, [List<Function> x]) f16<B extends core.int>() => null;
-Function([List<int> x0]) f17<B extends core.int>() => null;
-void Function(int x, [Function x0]) f18<B extends core.int>() => null;
-void Function(int y, {core.List<core.int> x}) f19<B extends core.int>() => null;
-Function Function<A>(List<int> x) f20<B extends core.int>() => null;
-List<int> Function<A>() f21<B extends core.int>() => null;
-List<A> Function<A>(A x) f22<B extends core.int>() => null;
-
-class U82<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(List<Function> x0) x0;
-  core.List<core.int> Function(int y, [Function x]) x1;
-  Function(int x0, [int x]) x2;
-  void Function(int x0, [List<T> x]) x3;
-  int Function(int x1) Function<B extends core.int>() x4;
-  int Function(int x, [List<Function> x1]) Function<B extends core.int>() x5;
-  int Function(int y, {List<T> x}) Function<B extends core.int>() x6;
-  Function Function([List<Function> x]) Function<B extends core.int>() x7;
-  Function Function(List<T> x1) Function<B extends core.int>() x8;
-  List<Function> Function(int x2, [Function x3]) Function<B extends core.int>()
-      x9;
-  List<Function> Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function(Function x) Function<B extends core.int>() x11;
-  core.List<core.int> Function(int y, [core.List<core.int> x])
-      Function<B extends core.int>() x12;
-  List<T> Function([int x1]) Function<B extends core.int>() x13;
-  List<T> Function({List<Function> x}) Function<B extends core.int>() x14;
-  List<T> Function() Function<B extends core.int>() x15;
-  Function(int x1, [List<Function> x]) Function<B extends core.int>() x16;
-  Function([List<T> x1]) Function<B extends core.int>() x17;
-  void Function(int x, [Function x1]) Function<B extends core.int>() x18;
-  void Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-      x19;
-  Function Function<A>(List<T> x) Function<B extends core.int>() x20;
-  List<T> Function<A>() Function<B extends core.int>() x21;
-  List<A> Function<A>(A x) Function<B extends core.int>() x22;
-
-  U82({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(List<Function> x0) => null;
-  core.List<core.int> m1(int y, [Function x]) => null;
-  m2(int x0, [int x]) => null;
-  void m3(int x0, [List<T> x]) => null;
-  int Function(int x0) m4<B extends core.int>() => null;
-  int Function(int x, [List<Function> x0]) m5<B extends core.int>() => null;
-  int Function(int y, {List<T> x}) m6<B extends core.int>() => null;
-  Function Function([List<Function> x]) m7<B extends core.int>() => null;
-  Function Function(List<T> x0) m8<B extends core.int>() => null;
-  List<Function> Function(int x0, [Function x1]) m9<B extends core.int>() =>
-      null;
-  List<Function> Function(int x0, {core.List<core.int> x})
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function(Function x) m11<B extends core.int>() => null;
-  core.List<core.int> Function(int y, [core.List<core.int> x])
-      m12<B extends core.int>() => null;
-  List<T> Function([int x0]) m13<B extends core.int>() => null;
-  List<T> Function({List<Function> x}) m14<B extends core.int>() => null;
-  List<T> Function() m15<B extends core.int>() => null;
-  Function(int x0, [List<Function> x]) m16<B extends core.int>() => null;
-  Function([List<T> x0]) m17<B extends core.int>() => null;
-  void Function(int x, [Function x0]) m18<B extends core.int>() => null;
-  void Function(int y, {core.List<core.int> x}) m19<B extends core.int>() =>
-      null;
-  Function Function<A>(List<T> x) m20<B extends core.int>() => null;
-  List<T> Function<A>() m21<B extends core.int>() => null;
-  List<A> Function<A>(A x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(List<Function> x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(List<Function> x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int y, [Function x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [Function x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int y, [Function x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x0, [int x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x0, [int x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x0, [int x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(int x0, [List<T> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, [List<T> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, [List<T> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(int x0, [List<T> x]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(int x0, [List<T> x]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function(int x1) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x1) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x, [List<Function> x1]) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<Function> x1]) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x, [List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {List<T> x}) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<T> x}) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int y, {List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, {List<T> x}) Function<B extends core.int>() l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, {List<T> x}) Function<B extends core.int>() l6 = m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([List<Function> x]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x1) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x1) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function(List<T> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x1) Function<B extends core.int>() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x1) Function<B extends core.int>() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x2, [Function x3]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [Function x3])
-        Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x2, [Function x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1,
-            {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(Function x) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x) Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(Function x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [core.List<core.int> x]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y,
-            [core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x1]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x1]) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function([int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x1]) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x1]) Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({List<Function> x}) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({List<Function> x}) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function({List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({List<Function> x}) Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({List<Function> x}) Function<B extends core.int>() l14 =
-          m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function() Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function() Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function() Function<B extends core.int>() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function() Function<B extends core.int>() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [List<Function> x]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<Function> x]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x1]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x1]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function([List<T> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x1]) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x1]) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x, [Function x1]) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [Function x1]) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x, [Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-        l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<T> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<T> x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        Function Function<A>(List<T> x) Function<B extends core.int>() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      Function Function<A>(List<T> x) Function<B extends core.int>() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<T> Function<A>() Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>() Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>() Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>() Function<B extends core.int>() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(A x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(A x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect
-        .isTrue(m22 is List<A> Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U82().runTests();
-  new U82<int>(tIsInt: true).runTests();
-  new U82<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type83_test.dart b/tests/language/function_type/function_type83_test.dart
deleted file mode 100644
index 27c2202..0000000
--- a/tests/language/function_type/function_type83_test.dart
+++ /dev/null
@@ -1,1026 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([List<Function> x1]);
-typedef F1<T> = core.List<core.int> Function(Function x0);
-typedef F2<T> = Function(int y, [int x]);
-typedef F3<T> = void Function(int y, [List<T> x]);
-typedef F4<T> = int Function(int x1) Function<B extends core.int>(int x);
-typedef F5<T> = int Function(int x, [List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F6<T> = int Function(int y, {List<T> x}) Function<B extends core.int>(
-    int x);
-typedef F7<T> = Function Function([List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(List<T> x1) Function<B extends core.int>(
-    int x);
-typedef F9<T> = List<Function> Function(int x2, [Function x3])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x1, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(Function x)
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int y, [core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function([int x1]) Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function({List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F15<T> = List<T> Function() Function<B extends core.int>(int x);
-typedef F16<T> = Function(int x1, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F17<T> = Function([List<T> x1]) Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int x, [Function x1])
-    Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>(List<T> x) Function<B extends core.int>(
-    int x);
-typedef F21<T> = List<T> Function<A>() Function<B extends core.int>(int x);
-typedef F22<T> = List<A> Function<A>(A x) Function<B extends core.int>(int x);
-
-Function f0([List<Function> x0]) => null;
-core.List<core.int> f1(Function x0) => null;
-f2(int y, [int x]) => null;
-void f3(int y, [List<int> x]) => null;
-int Function(int x0) f4<B extends core.int>(int x) => null;
-int Function(int x, [List<Function> x0]) f5<B extends core.int>(int x) => null;
-int Function(int y, {List<int> x}) f6<B extends core.int>(int x) => null;
-Function Function([List<Function> x]) f7<B extends core.int>(int x) => null;
-Function Function(List<int> x0) f8<B extends core.int>(int x) => null;
-List<Function> Function(int x0, [Function x1]) f9<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int x0, {core.List<core.int> x})
-    f10<B extends core.int>(int x) => null;
-core.List<core.int> Function(Function x) f11<B extends core.int>(int x) => null;
-core.List<core.int> Function(int y, [core.List<core.int> x])
-    f12<B extends core.int>(int x) => null;
-List<int> Function([int x0]) f13<B extends core.int>(int x) => null;
-List<int> Function({List<Function> x}) f14<B extends core.int>(int x) => null;
-List<int> Function() f15<B extends core.int>(int x) => null;
-Function(int x0, [List<Function> x]) f16<B extends core.int>(int x) => null;
-Function([List<int> x0]) f17<B extends core.int>(int x) => null;
-void Function(int x, [Function x0]) f18<B extends core.int>(int x) => null;
-void Function(int y, {core.List<core.int> x}) f19<B extends core.int>(int x) =>
-    null;
-Function Function<A>(List<int> x) f20<B extends core.int>(int x) => null;
-List<int> Function<A>() f21<B extends core.int>(int x) => null;
-List<A> Function<A>(A x) f22<B extends core.int>(int x) => null;
-
-class U83<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([List<Function> x1]) x0;
-  core.List<core.int> Function(Function x0) x1;
-  Function(int y, [int x]) x2;
-  void Function(int y, [List<T> x]) x3;
-  int Function(int x1) Function<B extends core.int>(int x) x4;
-  int Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-      x5;
-  int Function(int y, {List<T> x}) Function<B extends core.int>(int x) x6;
-  Function Function([List<Function> x]) Function<B extends core.int>(int x) x7;
-  Function Function(List<T> x1) Function<B extends core.int>(int x) x8;
-  List<Function> Function(int x2, [Function x3]) Function<B extends core.int>(
-      int x) x9;
-  List<Function> Function(int x1, {core.List<core.int> x})
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function(Function x) Function<B extends core.int>(int x)
-      x11;
-  core.List<core.int> Function(int y, [core.List<core.int> x])
-      Function<B extends core.int>(int x) x12;
-  List<T> Function([int x1]) Function<B extends core.int>(int x) x13;
-  List<T> Function({List<Function> x}) Function<B extends core.int>(int x) x14;
-  List<T> Function() Function<B extends core.int>(int x) x15;
-  Function(int x1, [List<Function> x]) Function<B extends core.int>(int x) x16;
-  Function([List<T> x1]) Function<B extends core.int>(int x) x17;
-  void Function(int x, [Function x1]) Function<B extends core.int>(int x) x18;
-  void Function(int y, {core.List<core.int> x}) Function<B extends core.int>(
-      int x) x19;
-  Function Function<A>(List<T> x) Function<B extends core.int>(int x) x20;
-  List<T> Function<A>() Function<B extends core.int>(int x) x21;
-  List<A> Function<A>(A x) Function<B extends core.int>(int x) x22;
-
-  U83({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([List<Function> x0]) => null;
-  core.List<core.int> m1(Function x0) => null;
-  m2(int y, [int x]) => null;
-  void m3(int y, [List<T> x]) => null;
-  int Function(int x0) m4<B extends core.int>(int x) => null;
-  int Function(int x, [List<Function> x0]) m5<B extends core.int>(int x) =>
-      null;
-  int Function(int y, {List<T> x}) m6<B extends core.int>(int x) => null;
-  Function Function([List<Function> x]) m7<B extends core.int>(int x) => null;
-  Function Function(List<T> x0) m8<B extends core.int>(int x) => null;
-  List<Function> Function(int x0, [Function x1]) m9<B extends core.int>(
-          int x) =>
-      null;
-  List<Function> Function(int x0, {core.List<core.int> x})
-      m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function(Function x) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(int y, [core.List<core.int> x])
-      m12<B extends core.int>(int x) => null;
-  List<T> Function([int x0]) m13<B extends core.int>(int x) => null;
-  List<T> Function({List<Function> x}) m14<B extends core.int>(int x) => null;
-  List<T> Function() m15<B extends core.int>(int x) => null;
-  Function(int x0, [List<Function> x]) m16<B extends core.int>(int x) => null;
-  Function([List<T> x0]) m17<B extends core.int>(int x) => null;
-  void Function(int x, [Function x0]) m18<B extends core.int>(int x) => null;
-  void Function(int y, {core.List<core.int> x}) m19<B extends core.int>(
-          int x) =>
-      null;
-  Function Function<A>(List<T> x) m20<B extends core.int>(int x) => null;
-  List<T> Function<A>() m21<B extends core.int>(int x) => null;
-  List<A> Function<A>(A x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([List<Function> x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([List<Function> x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(Function x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(Function x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int y, [int x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int y, [int x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int y, [int x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(int y, [List<T> x])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<T> x]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, [List<T> x]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(int y, [List<T> x]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(int y, [List<T> x]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function(int x1) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x1) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect
-        .isTrue(m4 is int Function(int x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x, [List<Function> x1]) Function<B extends core.int>(int x)
-        l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x, [List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, {List<T> x}) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<T> x}) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function(int y, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-    if (!tIsBool) {
-      Expect.isTrue(f6 is F6<int>);
-      Expect.isFalse(f6 is F6<bool>);
-      Expect.isTrue(confuse(f6) is F6<int>);
-      Expect.isFalse(confuse(f6) is F6<bool>);
-      Expect.equals(tIsDynamic, m6 is F6<bool>);
-      Expect.equals(tIsDynamic, confuse(m6) is F6<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          x6 = confuse(f6);
-        });
-        int Function(int y, {List<T> x}) Function<B extends core.int>(int x) l6;
-        Expect.throws(() {
-          l6 = (f6 as dynamic);
-        });
-        Expect.throws(() {
-          l6 = confuse(f6);
-        });
-      }
-      int Function(int y, {List<T> x}) Function<B extends core.int>(int x) l6 =
-          m6;
-      // In checked mode, verifies the type.
-      x6 = m6;
-      x6 = confuse(m6);
-    }
-  }
-
-  /// Function Function([List<Function> x]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x]) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(List<T> x1) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(List<T> x1) Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(List<T> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(List<T> x1) Function<B extends core.int>(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(List<T> x1) Function<B extends core.int>(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x2, [Function x3]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x2, [Function x3]) Function<B extends core.int>(
-        int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x2, [Function x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1,
-            {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function(Function x) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x) Function<B extends core.int>(int x)
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int y, [core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [core.List<core.int> x])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int y,
-            [core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function([int x1]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function([int x1]) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function([int x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function([int x1]) Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function([int x1]) Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function({List<Function> x}) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function({List<Function> x}) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function({List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function({List<Function> x}) Function<B extends core.int>(int x)
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function({List<Function> x}) Function<B extends core.int>(int x)
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function() Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function() Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect
-        .isTrue(m15 is List<T> Function() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function() Function<B extends core.int>(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function() Function<B extends core.int>(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-        l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function([List<T> x1]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function([List<T> x1]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function([List<T> x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function([List<T> x1]) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function([List<T> x1]) Function<B extends core.int>(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x, [Function x1]) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x, [Function x1]) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x, [Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, {core.List<core.int> x}) Function<B extends core.int>(
-        int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// Function Function<A>(List<T> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<T> x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<T> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        Function Function<A>(List<T> x) Function<B extends core.int>(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      Function Function<A>(List<T> x) Function<B extends core.int>(int x) l20 =
-          m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<T> Function<A>() Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>() Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>() Function<B extends core.int>(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>() Function<B extends core.int>(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(A x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(A x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>(A x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U83().runTests();
-  new U83<int>(tIsInt: true).runTests();
-  new U83<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type84_test.dart b/tests/language/function_type/function_type84_test.dart
deleted file mode 100644
index a51e911..0000000
--- a/tests/language/function_type/function_type84_test.dart
+++ /dev/null
@@ -1,912 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x1, [List<Function> x2]);
-typedef F1<T> = core.List<core.int> Function([Function x1]);
-typedef F2<T> = Function(int x0);
-typedef F3<T> = void Function(List<T> x0);
-typedef F4<T> = int Function([int x1]) Function();
-typedef F5<T> = int Function({List<Function> x}) Function();
-typedef F6<T> = int Function() Function();
-typedef F7<T> = Function Function(int x0, [List<Function> x]) Function();
-typedef F8<T> = Function Function([List<T> x1]) Function();
-typedef F9<T> = List<Function> Function(int x, [Function x2]) Function();
-typedef F10<T> = List<Function> Function(int y, {core.List<core.int> x})
-    Function();
-typedef F11<T> = core.List<core.int> Function([Function x]) Function();
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x0)
-    Function();
-typedef F13<T> = List<T> Function(int x1, [int x2]) Function();
-typedef F14<T> = List<T> Function(int x0, {List<Function> x}) Function();
-typedef F15<T> = Function(int x) Function();
-typedef F16<T> = Function(int y, [List<Function> x]) Function();
-typedef F17<T> = Function(int x1, [List<T> x2]) Function();
-typedef F18<T> = void Function({Function x}) Function();
-typedef F19<T> = void Function(List<T> x) Function();
-typedef F20<T> = Function Function<A>() Function();
-typedef F21<T> = List<T> Function<A>(A x) Function();
-typedef F22<T> = List<A> Function<A>(List<A> x) Function();
-
-Function f0(int x0, [List<Function> x1]) => null;
-core.List<core.int> f1([Function x0]) => null;
-f2(int x0) => null;
-void f3(List<int> x0) => null;
-int Function([int x0]) f4() => null;
-int Function({List<Function> x}) f5() => null;
-int Function() f6() => null;
-Function Function(int x0, [List<Function> x]) f7() => null;
-Function Function([List<int> x0]) f8() => null;
-List<Function> Function(int x, [Function x0]) f9() => null;
-List<Function> Function(int y, {core.List<core.int> x}) f10() => null;
-core.List<core.int> Function([Function x]) f11() => null;
-core.List<core.int> Function(core.List<core.int> x0) f12() => null;
-List<int> Function(int x0, [int x1]) f13() => null;
-List<int> Function(int x0, {List<Function> x}) f14() => null;
-Function(int x) f15() => null;
-Function(int y, [List<Function> x]) f16() => null;
-Function(int x0, [List<int> x1]) f17() => null;
-void Function({Function x}) f18() => null;
-void Function(List<int> x) f19() => null;
-Function Function<A>() f20() => null;
-List<int> Function<A>(A x) f21() => null;
-List<A> Function<A>(List<A> x) f22() => null;
-
-class U84<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x1, [List<Function> x2]) x0;
-  core.List<core.int> Function([Function x1]) x1;
-  Function(int x0) x2;
-  void Function(List<T> x0) x3;
-  int Function([int x1]) Function() x4;
-  int Function({List<Function> x}) Function() x5;
-  int Function() Function() x6;
-  Function Function(int x0, [List<Function> x]) Function() x7;
-  Function Function([List<T> x1]) Function() x8;
-  List<Function> Function(int x, [Function x2]) Function() x9;
-  List<Function> Function(int y, {core.List<core.int> x}) Function() x10;
-  core.List<core.int> Function([Function x]) Function() x11;
-  core.List<core.int> Function(core.List<core.int> x0) Function() x12;
-  List<T> Function(int x1, [int x2]) Function() x13;
-  List<T> Function(int x0, {List<Function> x}) Function() x14;
-  Function(int x) Function() x15;
-  Function(int y, [List<Function> x]) Function() x16;
-  Function(int x1, [List<T> x2]) Function() x17;
-  void Function({Function x}) Function() x18;
-  void Function(List<T> x) Function() x19;
-  Function Function<A>() Function() x20;
-  List<T> Function<A>(A x) Function() x21;
-  List<A> Function<A>(List<A> x) Function() x22;
-
-  U84({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [List<Function> x1]) => null;
-  core.List<core.int> m1([Function x0]) => null;
-  m2(int x0) => null;
-  void m3(List<T> x0) => null;
-  int Function([int x0]) m4() => null;
-  int Function({List<Function> x}) m5() => null;
-  int Function() m6() => null;
-  Function Function(int x0, [List<Function> x]) m7() => null;
-  Function Function([List<T> x0]) m8() => null;
-  List<Function> Function(int x, [Function x0]) m9() => null;
-  List<Function> Function(int y, {core.List<core.int> x}) m10() => null;
-  core.List<core.int> Function([Function x]) m11() => null;
-  core.List<core.int> Function(core.List<core.int> x0) m12() => null;
-  List<T> Function(int x0, [int x1]) m13() => null;
-  List<T> Function(int x0, {List<Function> x}) m14() => null;
-  Function(int x) m15() => null;
-  Function(int y, [List<Function> x]) m16() => null;
-  Function(int x0, [List<T> x1]) m17() => null;
-  void Function({Function x}) m18() => null;
-  void Function(List<T> x) m19() => null;
-  Function Function<A>() m20() => null;
-  List<T> Function<A>(A x) m21() => null;
-  List<A> Function<A>(List<A> x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x1, [List<Function> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<Function> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x1, [List<Function> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function([Function x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function([Function x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(List<T> x0)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(List<T> x0) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(List<T> x0));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(List<T> x0) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(List<T> x0) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function([int x1]) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x1]) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function([int x1]) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({List<Function> x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({List<Function> x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function({List<Function> x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function() Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function() Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function() Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x0, [List<Function> x]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [List<Function> x]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect
-        .isTrue(m7 is Function Function(int x0, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x1]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x1]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([List<T> x1]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x1]) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x1]) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x, [Function x2]) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [Function x2]) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int x, [Function x2]) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {core.List<core.int> x}) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {core.List<core.int> x}) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, {core.List<core.int> x})
-        Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([Function x]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([Function x]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x0) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x0) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(core.List<core.int> x0) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1, [int x2]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, [int x2]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1, [int x2]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1, [int x2]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1, [int x2]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x0, {List<Function> x}) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {List<Function> x}) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int x0, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x0, {List<Function> x}) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x0, {List<Function> x}) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int x) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int y, [List<Function> x]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [List<Function> x]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, [List<T> x2]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<T> x2]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x1, [List<T> x2]) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x1, [List<T> x2]) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function({Function x}) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({Function x}) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function({Function x}) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<T> x) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<T> x) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(List<T> x) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(List<T> x) Function() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(List<T> x) Function() l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>() Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>() Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>() Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(A x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(A x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(A x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(A x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(A x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<A> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<A> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U84().runTests();
-  new U84<int>(tIsInt: true).runTests();
-  new U84<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type85_test.dart b/tests/language/function_type/function_type85_test.dart
deleted file mode 100644
index f6fb2d7..0000000
--- a/tests/language/function_type/function_type85_test.dart
+++ /dev/null
@@ -1,913 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x, [List<Function> x2]);
-typedef F1<T> = core.List<core.int> Function(int x1, [Function x2]);
-typedef F2<T> = Function([int x1]);
-typedef F3<T> = void Function([List<T> x1]);
-typedef F4<T> = int Function([int x1]) Function(int x);
-typedef F5<T> = int Function({List<Function> x}) Function(int x);
-typedef F6<T> = int Function() Function(int x);
-typedef F7<T> = Function Function(int x1, [List<Function> x]) Function(int x);
-typedef F8<T> = Function Function([List<T> x1]) Function(int x);
-typedef F9<T> = List<Function> Function(int x, [Function x1]) Function(int x);
-typedef F10<T> = List<Function> Function(int y, {core.List<core.int> x})
-    Function(int x);
-typedef F11<T> = core.List<core.int> Function([Function x]) Function(int x);
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x1) Function(
-    int x);
-typedef F13<T> = List<T> Function(int x2, [int x3]) Function(int x);
-typedef F14<T> = List<T> Function(int x1, {List<Function> x}) Function(int x);
-typedef F15<T> = Function(int x) Function(int x);
-typedef F16<T> = Function(int y, [List<Function> x]) Function(int x);
-typedef F17<T> = Function(int x2, [List<T> x3]) Function(int x);
-typedef F18<T> = void Function({Function x}) Function(int x);
-typedef F19<T> = void Function(List<T> x) Function(int x);
-typedef F20<T> = Function Function<A>() Function(int x);
-typedef F21<T> = List<T> Function<A>(A x) Function(int x);
-typedef F22<T> = List<A> Function<A>(List<A> x) Function(int x);
-
-Function f0(int x, [List<Function> x0]) => null;
-core.List<core.int> f1(int x0, [Function x1]) => null;
-f2([int x0]) => null;
-void f3([List<int> x0]) => null;
-int Function([int x0]) f4(int x) => null;
-int Function({List<Function> x}) f5(int x) => null;
-int Function() f6(int x) => null;
-Function Function(int x0, [List<Function> x]) f7(int x) => null;
-Function Function([List<int> x0]) f8(int x) => null;
-List<Function> Function(int x, [Function x0]) f9(int x) => null;
-List<Function> Function(int y, {core.List<core.int> x}) f10(int x) => null;
-core.List<core.int> Function([Function x]) f11(int x) => null;
-core.List<core.int> Function(core.List<core.int> x0) f12(int x) => null;
-List<int> Function(int x0, [int x1]) f13(int x) => null;
-List<int> Function(int x0, {List<Function> x}) f14(int x) => null;
-Function(int x) f15(int x) => null;
-Function(int y, [List<Function> x]) f16(int x) => null;
-Function(int x0, [List<int> x1]) f17(int x) => null;
-void Function({Function x}) f18(int x) => null;
-void Function(List<int> x) f19(int x) => null;
-Function Function<A>() f20(int x) => null;
-List<int> Function<A>(A x) f21(int x) => null;
-List<A> Function<A>(List<A> x) f22(int x) => null;
-
-class U85<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x, [List<Function> x2]) x0;
-  core.List<core.int> Function(int x1, [Function x2]) x1;
-  Function([int x1]) x2;
-  void Function([List<T> x1]) x3;
-  int Function([int x1]) Function(int x) x4;
-  int Function({List<Function> x}) Function(int x) x5;
-  int Function() Function(int x) x6;
-  Function Function(int x1, [List<Function> x]) Function(int x) x7;
-  Function Function([List<T> x1]) Function(int x) x8;
-  List<Function> Function(int x, [Function x1]) Function(int x) x9;
-  List<Function> Function(int y, {core.List<core.int> x}) Function(int x) x10;
-  core.List<core.int> Function([Function x]) Function(int x) x11;
-  core.List<core.int> Function(core.List<core.int> x1) Function(int x) x12;
-  List<T> Function(int x2, [int x3]) Function(int x) x13;
-  List<T> Function(int x1, {List<Function> x}) Function(int x) x14;
-  Function(int x) Function(int x) x15;
-  Function(int y, [List<Function> x]) Function(int x) x16;
-  Function(int x2, [List<T> x3]) Function(int x) x17;
-  void Function({Function x}) Function(int x) x18;
-  void Function(List<T> x) Function(int x) x19;
-  Function Function<A>() Function(int x) x20;
-  List<T> Function<A>(A x) Function(int x) x21;
-  List<A> Function<A>(List<A> x) Function(int x) x22;
-
-  U85({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x, [List<Function> x0]) => null;
-  core.List<core.int> m1(int x0, [Function x1]) => null;
-  m2([int x0]) => null;
-  void m3([List<T> x0]) => null;
-  int Function([int x0]) m4(int x) => null;
-  int Function({List<Function> x}) m5(int x) => null;
-  int Function() m6(int x) => null;
-  Function Function(int x0, [List<Function> x]) m7(int x) => null;
-  Function Function([List<T> x0]) m8(int x) => null;
-  List<Function> Function(int x, [Function x0]) m9(int x) => null;
-  List<Function> Function(int y, {core.List<core.int> x}) m10(int x) => null;
-  core.List<core.int> Function([Function x]) m11(int x) => null;
-  core.List<core.int> Function(core.List<core.int> x0) m12(int x) => null;
-  List<T> Function(int x0, [int x1]) m13(int x) => null;
-  List<T> Function(int x0, {List<Function> x}) m14(int x) => null;
-  Function(int x) m15(int x) => null;
-  Function(int y, [List<Function> x]) m16(int x) => null;
-  Function(int x0, [List<T> x1]) m17(int x) => null;
-  void Function({Function x}) m18(int x) => null;
-  void Function(List<T> x) m19(int x) => null;
-  Function Function<A>() m20(int x) => null;
-  List<T> Function<A>(A x) m21(int x) => null;
-  List<A> Function<A>(List<A> x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x, [List<Function> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<Function> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x, [List<Function> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x1, [Function x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [Function x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x1, [Function x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function([int x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function([int x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function([int x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function([List<T> x1])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function([List<T> x1]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function([List<T> x1]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function([List<T> x1]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function([List<T> x1]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function([int x1]) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x1]) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function([int x1]) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({List<Function> x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({List<Function> x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function({List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function() Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function() Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function() Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1, [List<Function> x]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<Function> x]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function(int x1, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x1]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x1]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x1]) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x1]) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x, [Function x1]) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [Function x1]) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x, [Function x1]) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {core.List<core.int> x}) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {core.List<core.int> x}) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([Function x]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function([Function x]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x1) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x1) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(core.List<core.int> x1)
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x2, [int x3]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [int x3]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x2, [int x3]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x2, [int x3]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x2, [int x3]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, {List<Function> x}) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {List<Function> x}) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int x1, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, {List<Function> x}) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, {List<Function> x}) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int x) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int y, [List<Function> x]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [List<Function> x]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x2, [List<T> x3]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x2, [List<T> x3]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x2, [List<T> x3]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x2, [List<T> x3]) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x2, [List<T> x3]) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function({Function x}) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({Function x}) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function({Function x}) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<T> x) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<T> x) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(List<T> x) Function(int x) l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(List<T> x) Function(int x) l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>() Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>() Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>() Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(A x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(A x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(A x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(A x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<A> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<A> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U85().runTests();
-  new U85<int>(tIsInt: true).runTests();
-  new U85<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type86_test.dart b/tests/language/function_type/function_type86_test.dart
deleted file mode 100644
index e32c963..0000000
--- a/tests/language/function_type/function_type86_test.dart
+++ /dev/null
@@ -1,950 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function({List<Function> x});
-typedef F1<T> = core.List<core.int> Function(int x, [Function x2]);
-typedef F2<T> = Function(int x1, [int x2]);
-typedef F3<T> = void Function(int x1, [List<T> x2]);
-typedef F4<T> = int Function([int x1]) Function<B extends core.int>();
-typedef F5<T> = int Function({List<Function> x}) Function<B extends core.int>();
-typedef F6<T> = int Function() Function<B extends core.int>();
-typedef F7<T> = Function Function(int x1, [List<Function> x])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function([List<T> x1]) Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x, [Function x1])
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function([Function x])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x1)
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function(int x2, [int x3])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int x1, {List<Function> x})
-    Function<B extends core.int>();
-typedef F15<T> = Function(int x) Function<B extends core.int>();
-typedef F16<T> = Function(int y, [List<Function> x])
-    Function<B extends core.int>();
-typedef F17<T> = Function(int x2, [List<T> x3]) Function<B extends core.int>();
-typedef F18<T> = void Function({Function x}) Function<B extends core.int>();
-typedef F19<T> = void Function(List<T> x) Function<B extends core.int>();
-typedef F20<T> = Function Function<A>() Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>(A x) Function<B extends core.int>();
-typedef F22<T> = List<A> Function<A>(List<A> x) Function<B extends core.int>();
-
-Function f0({List<Function> x}) => null;
-core.List<core.int> f1(int x, [Function x0]) => null;
-f2(int x0, [int x1]) => null;
-void f3(int x0, [List<int> x1]) => null;
-int Function([int x0]) f4<B extends core.int>() => null;
-int Function({List<Function> x}) f5<B extends core.int>() => null;
-int Function() f6<B extends core.int>() => null;
-Function Function(int x0, [List<Function> x]) f7<B extends core.int>() => null;
-Function Function([List<int> x0]) f8<B extends core.int>() => null;
-List<Function> Function(int x, [Function x0]) f9<B extends core.int>() => null;
-List<Function> Function(int y, {core.List<core.int> x})
-    f10<B extends core.int>() => null;
-core.List<core.int> Function([Function x]) f11<B extends core.int>() => null;
-core.List<core.int> Function(core.List<core.int> x0)
-    f12<B extends core.int>() => null;
-List<int> Function(int x0, [int x1]) f13<B extends core.int>() => null;
-List<int> Function(int x0, {List<Function> x}) f14<B extends core.int>() =>
-    null;
-Function(int x) f15<B extends core.int>() => null;
-Function(int y, [List<Function> x]) f16<B extends core.int>() => null;
-Function(int x0, [List<int> x1]) f17<B extends core.int>() => null;
-void Function({Function x}) f18<B extends core.int>() => null;
-void Function(List<int> x) f19<B extends core.int>() => null;
-Function Function<A>() f20<B extends core.int>() => null;
-List<int> Function<A>(A x) f21<B extends core.int>() => null;
-List<A> Function<A>(List<A> x) f22<B extends core.int>() => null;
-
-class U86<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function({List<Function> x}) x0;
-  core.List<core.int> Function(int x, [Function x2]) x1;
-  Function(int x1, [int x2]) x2;
-  void Function(int x1, [List<T> x2]) x3;
-  int Function([int x1]) Function<B extends core.int>() x4;
-  int Function({List<Function> x}) Function<B extends core.int>() x5;
-  int Function() Function<B extends core.int>() x6;
-  Function Function(int x1, [List<Function> x]) Function<B extends core.int>()
-      x7;
-  Function Function([List<T> x1]) Function<B extends core.int>() x8;
-  List<Function> Function(int x, [Function x1]) Function<B extends core.int>()
-      x9;
-  List<Function> Function(int y, {core.List<core.int> x})
-      Function<B extends core.int>() x10;
-  core.List<core.int> Function([Function x]) Function<B extends core.int>() x11;
-  core.List<core.int> Function(core.List<core.int> x1)
-      Function<B extends core.int>() x12;
-  List<T> Function(int x2, [int x3]) Function<B extends core.int>() x13;
-  List<T> Function(int x1, {List<Function> x}) Function<B extends core.int>()
-      x14;
-  Function(int x) Function<B extends core.int>() x15;
-  Function(int y, [List<Function> x]) Function<B extends core.int>() x16;
-  Function(int x2, [List<T> x3]) Function<B extends core.int>() x17;
-  void Function({Function x}) Function<B extends core.int>() x18;
-  void Function(List<T> x) Function<B extends core.int>() x19;
-  Function Function<A>() Function<B extends core.int>() x20;
-  List<T> Function<A>(A x) Function<B extends core.int>() x21;
-  List<A> Function<A>(List<A> x) Function<B extends core.int>() x22;
-
-  U86({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0({List<Function> x}) => null;
-  core.List<core.int> m1(int x, [Function x0]) => null;
-  m2(int x0, [int x1]) => null;
-  void m3(int x0, [List<T> x1]) => null;
-  int Function([int x0]) m4<B extends core.int>() => null;
-  int Function({List<Function> x}) m5<B extends core.int>() => null;
-  int Function() m6<B extends core.int>() => null;
-  Function Function(int x0, [List<Function> x]) m7<B extends core.int>() =>
-      null;
-  Function Function([List<T> x0]) m8<B extends core.int>() => null;
-  List<Function> Function(int x, [Function x0]) m9<B extends core.int>() =>
-      null;
-  List<Function> Function(int y, {core.List<core.int> x})
-      m10<B extends core.int>() => null;
-  core.List<core.int> Function([Function x]) m11<B extends core.int>() => null;
-  core.List<core.int> Function(core.List<core.int> x0)
-      m12<B extends core.int>() => null;
-  List<T> Function(int x0, [int x1]) m13<B extends core.int>() => null;
-  List<T> Function(int x0, {List<Function> x}) m14<B extends core.int>() =>
-      null;
-  Function(int x) m15<B extends core.int>() => null;
-  Function(int y, [List<Function> x]) m16<B extends core.int>() => null;
-  Function(int x0, [List<T> x1]) m17<B extends core.int>() => null;
-  void Function({Function x}) m18<B extends core.int>() => null;
-  void Function(List<T> x) m19<B extends core.int>() => null;
-  Function Function<A>() m20<B extends core.int>() => null;
-  List<T> Function<A>(A x) m21<B extends core.int>() => null;
-  List<A> Function<A>(List<A> x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function({List<Function> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function({List<Function> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function({List<Function> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x, [Function x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [Function x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x, [Function x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x1, [int x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x1, [int x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x1, [int x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(int x1, [List<T> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<T> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x1, [List<T> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(int x1, [List<T> x2]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(int x1, [List<T> x2]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function([int x1]) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x1]) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function([int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({List<Function> x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({List<Function> x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(
-        m5 is int Function({List<Function> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function() Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function() Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function() Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1, [List<Function> x]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<Function> x]) Function<B extends core.int>()
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x1]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x1]) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function([List<T> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x1]) Function<B extends core.int>() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x1]) Function<B extends core.int>() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x, [Function x1]) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [Function x1]) Function<B extends core.int>()
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x, [Function x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {core.List<core.int> x}) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([Function x]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x]) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x1) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x1)
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(core.List<core.int> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x2, [int x3]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [int x3]) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x2, [int x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x2, [int x3]) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x2, [int x3]) Function<B extends core.int>() l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, {List<Function> x}) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {List<Function> x}) Function<B extends core.int>()
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, {List<Function> x})
-            Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, {List<Function> x})
-          Function<B extends core.int>() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int y, [List<Function> x]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [List<Function> x]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x2, [List<T> x3]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x2, [List<T> x3]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x2, [List<T> x3]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x2, [List<T> x3]) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x2, [List<T> x3]) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function({Function x}) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({Function x}) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function({Function x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<T> x) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<T> x) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect
-        .isTrue(m19 is void Function(List<T> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(List<T> x) Function<B extends core.int>() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(List<T> x) Function<B extends core.int>() l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>() Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>() Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>() Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(A x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(A x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect
-        .isTrue(m21 is List<T> Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(A x) Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(A x) Function<B extends core.int>() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<A> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<A> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is List<A> Function<A>(List<A> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U86().runTests();
-  new U86<int>(tIsInt: true).runTests();
-  new U86<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type87_test.dart b/tests/language/function_type/function_type87_test.dart
deleted file mode 100644
index 6c7eab1..0000000
--- a/tests/language/function_type/function_type87_test.dart
+++ /dev/null
@@ -1,968 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, {List<Function> x});
-typedef F1<T> = core.List<core.int> Function({Function x});
-typedef F2<T> = Function(int x, [int x2]);
-typedef F3<T> = void Function(int x, [List<T> x2]);
-typedef F4<T> = int Function([int x1]) Function<B extends core.int>(int x);
-typedef F5<T> = int Function({List<Function> x}) Function<B extends core.int>(
-    int x);
-typedef F6<T> = int Function() Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int x1, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function([List<T> x1]) Function<B extends core.int>(
-    int x);
-typedef F9<T> = List<Function> Function(int x, [Function x1])
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int y, {core.List<core.int> x})
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function([Function x])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(core.List<core.int> x1)
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function(int x2, [int x3])
-    Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(int x1, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F15<T> = Function(int x) Function<B extends core.int>(int x);
-typedef F16<T> = Function(int y, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F17<T> = Function(int x2, [List<T> x3]) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function({Function x}) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function(List<T> x) Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>() Function<B extends core.int>(int x);
-typedef F21<T> = List<T> Function<A>(A x) Function<B extends core.int>(int x);
-typedef F22<T> = List<A> Function<A>(List<A> x) Function<B extends core.int>(
-    int x);
-
-Function f0(int x0, {List<Function> x}) => null;
-core.List<core.int> f1({Function x}) => null;
-f2(int x, [int x0]) => null;
-void f3(int x, [List<int> x0]) => null;
-int Function([int x0]) f4<B extends core.int>(int x) => null;
-int Function({List<Function> x}) f5<B extends core.int>(int x) => null;
-int Function() f6<B extends core.int>(int x) => null;
-Function Function(int x0, [List<Function> x]) f7<B extends core.int>(int x) =>
-    null;
-Function Function([List<int> x0]) f8<B extends core.int>(int x) => null;
-List<Function> Function(int x, [Function x0]) f9<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int y, {core.List<core.int> x}) f10<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function([Function x]) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(core.List<core.int> x0) f12<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(int x0, [int x1]) f13<B extends core.int>(int x) => null;
-List<int> Function(int x0, {List<Function> x}) f14<B extends core.int>(int x) =>
-    null;
-Function(int x) f15<B extends core.int>(int x) => null;
-Function(int y, [List<Function> x]) f16<B extends core.int>(int x) => null;
-Function(int x0, [List<int> x1]) f17<B extends core.int>(int x) => null;
-void Function({Function x}) f18<B extends core.int>(int x) => null;
-void Function(List<int> x) f19<B extends core.int>(int x) => null;
-Function Function<A>() f20<B extends core.int>(int x) => null;
-List<int> Function<A>(A x) f21<B extends core.int>(int x) => null;
-List<A> Function<A>(List<A> x) f22<B extends core.int>(int x) => null;
-
-class U87<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, {List<Function> x}) x0;
-  core.List<core.int> Function({Function x}) x1;
-  Function(int x, [int x2]) x2;
-  void Function(int x, [List<T> x2]) x3;
-  int Function([int x1]) Function<B extends core.int>(int x) x4;
-  int Function({List<Function> x}) Function<B extends core.int>(int x) x5;
-  int Function() Function<B extends core.int>(int x) x6;
-  Function Function(int x1, [List<Function> x]) Function<B extends core.int>(
-      int x) x7;
-  Function Function([List<T> x1]) Function<B extends core.int>(int x) x8;
-  List<Function> Function(int x, [Function x1]) Function<B extends core.int>(
-      int x) x9;
-  List<Function> Function(int y, {core.List<core.int> x})
-      Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function([Function x]) Function<B extends core.int>(int x)
-      x11;
-  core.List<core.int> Function(core.List<core.int> x1)
-      Function<B extends core.int>(int x) x12;
-  List<T> Function(int x2, [int x3]) Function<B extends core.int>(int x) x13;
-  List<T> Function(int x1, {List<Function> x}) Function<B extends core.int>(
-      int x) x14;
-  Function(int x) Function<B extends core.int>(int x) x15;
-  Function(int y, [List<Function> x]) Function<B extends core.int>(int x) x16;
-  Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) x17;
-  void Function({Function x}) Function<B extends core.int>(int x) x18;
-  void Function(List<T> x) Function<B extends core.int>(int x) x19;
-  Function Function<A>() Function<B extends core.int>(int x) x20;
-  List<T> Function<A>(A x) Function<B extends core.int>(int x) x21;
-  List<A> Function<A>(List<A> x) Function<B extends core.int>(int x) x22;
-
-  U87({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, {List<Function> x}) => null;
-  core.List<core.int> m1({Function x}) => null;
-  m2(int x, [int x0]) => null;
-  void m3(int x, [List<T> x0]) => null;
-  int Function([int x0]) m4<B extends core.int>(int x) => null;
-  int Function({List<Function> x}) m5<B extends core.int>(int x) => null;
-  int Function() m6<B extends core.int>(int x) => null;
-  Function Function(int x0, [List<Function> x]) m7<B extends core.int>(int x) =>
-      null;
-  Function Function([List<T> x0]) m8<B extends core.int>(int x) => null;
-  List<Function> Function(int x, [Function x0]) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int y, {core.List<core.int> x})
-      m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function([Function x]) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(core.List<core.int> x0) m12<B extends core.int>(
-          int x) =>
-      null;
-  List<T> Function(int x0, [int x1]) m13<B extends core.int>(int x) => null;
-  List<T> Function(int x0, {List<Function> x}) m14<B extends core.int>(int x) =>
-      null;
-  Function(int x) m15<B extends core.int>(int x) => null;
-  Function(int y, [List<Function> x]) m16<B extends core.int>(int x) => null;
-  Function(int x0, [List<T> x1]) m17<B extends core.int>(int x) => null;
-  void Function({Function x}) m18<B extends core.int>(int x) => null;
-  void Function(List<T> x) m19<B extends core.int>(int x) => null;
-  Function Function<A>() m20<B extends core.int>(int x) => null;
-  List<T> Function<A>(A x) m21<B extends core.int>(int x) => null;
-  List<A> Function<A>(List<A> x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, {List<Function> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {List<Function> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, {List<Function> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function({Function x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({Function x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function({Function x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x, [int x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x, [int x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x, [int x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(int x, [List<T> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x, [List<T> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x, [List<T> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(int x, [List<T> x2]) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(int x, [List<T> x2]) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function([int x1]) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function([int x1]) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function([int x1]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function({List<Function> x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function({List<Function> x}) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function({List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function() Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function() Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is int Function() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int x1, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<Function> x]) Function<B extends core.int>(
-        int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int x1, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function([List<T> x1]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function([List<T> x1]) Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function([List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function([List<T> x1]) Function<B extends core.int>(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function([List<T> x1]) Function<B extends core.int>(int x) l8 =
-          m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x, [Function x1]) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x, [Function x1]) Function<B extends core.int>(
-        int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x, [Function x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int y, {core.List<core.int> x}) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int y, {core.List<core.int> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// core.List<core.int> Function([Function x]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([Function x]) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function([Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(core.List<core.int> x1) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(core.List<core.int> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x2, [int x3]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x2, [int x3]) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x2, [int x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x2, [int x3]) Function<B extends core.int>(int x)
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x2, [int x3]) Function<B extends core.int>(int x)
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {List<Function> x}) Function<B extends core.int>(
-        int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int x1, {List<Function> x})
-            Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int x1, {List<Function> x}) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int y, [List<Function> x]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x2, [List<T> x3]) Function<B extends core.int>(int x) l17 =
-          m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function({Function x}) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function({Function x}) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function({Function x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(List<T> x) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(List<T> x) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(List<T> x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(List<T> x) Function<B extends core.int>(int x) l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(List<T> x) Function<B extends core.int>(int x) l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>() Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>() Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>() Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(A x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(A x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>(A x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(A x) Function<B extends core.int>(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(A x) Function<B extends core.int>(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// List<A> Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    List<A> Function<A>(List<A> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is List<A> Function<A>(List<A> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U87().runTests();
-  new U87<int>(tIsInt: true).runTests();
-  new U87<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type88_test.dart b/tests/language/function_type/function_type88_test.dart
deleted file mode 100644
index 0f38b68..0000000
--- a/tests/language/function_type/function_type88_test.dart
+++ /dev/null
@@ -1,938 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, {List<Function> x});
-typedef F1<T> = core.List<core.int> Function(int x0, {Function x});
-typedef F2<T> = Function({int x});
-typedef F3<T> = void Function({List<T> x});
-typedef F4<T> = int Function(int x1, [int x2]) Function();
-typedef F5<T> = int Function(int x0, {List<Function> x}) Function();
-typedef F6<T> = Function Function(int x) Function();
-typedef F7<T> = Function Function(int y, [List<Function> x]) Function();
-typedef F8<T> = Function Function(int x1, [List<T> x2]) Function();
-typedef F9<T> = List<Function> Function({Function x}) Function();
-typedef F10<T> = List<Function> Function(List<T> x) Function();
-typedef F11<T> = core.List<core.int> Function(int x0, [Function x]) Function();
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x1])
-    Function();
-typedef F13<T> = List<T> Function(int x, [int x2]) Function();
-typedef F14<T> = List<T> Function(int y, {List<Function> x}) Function();
-typedef F15<T> = Function([int x]) Function();
-typedef F16<T> = Function(List<Function> x0) Function();
-typedef F17<T> = Function(int x, [List<T> x2]) Function();
-typedef F18<T> = void Function(int x0, {Function x}) Function();
-typedef F19<T> = void Function([List<T> x]) Function();
-typedef F20<T> = Function Function<A>(A x) Function();
-typedef F21<T> = List<T> Function<A>(List<A> x) Function();
-typedef F22<T> = void Function<A>(int x) Function();
-
-Function f0(int y, {List<Function> x}) => null;
-core.List<core.int> f1(int x0, {Function x}) => null;
-f2({int x}) => null;
-void f3({List<int> x}) => null;
-int Function(int x0, [int x1]) f4() => null;
-int Function(int x0, {List<Function> x}) f5() => null;
-Function Function(int x) f6() => null;
-Function Function(int y, [List<Function> x]) f7() => null;
-Function Function(int x0, [List<int> x1]) f8() => null;
-List<Function> Function({Function x}) f9() => null;
-List<Function> Function(List<int> x) f10() => null;
-core.List<core.int> Function(int x0, [Function x]) f11() => null;
-core.List<core.int> Function([core.List<core.int> x0]) f12() => null;
-List<int> Function(int x, [int x0]) f13() => null;
-List<int> Function(int y, {List<Function> x}) f14() => null;
-Function([int x]) f15() => null;
-Function(List<Function> x0) f16() => null;
-Function(int x, [List<int> x0]) f17() => null;
-void Function(int x0, {Function x}) f18() => null;
-void Function([List<int> x]) f19() => null;
-Function Function<A>(A x) f20() => null;
-List<int> Function<A>(List<A> x) f21() => null;
-void Function<A>(int x) f22() => null;
-
-class U88<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, {List<Function> x}) x0;
-  core.List<core.int> Function(int x0, {Function x}) x1;
-  Function({int x}) x2;
-  void Function({List<T> x}) x3;
-  int Function(int x1, [int x2]) Function() x4;
-  int Function(int x0, {List<Function> x}) Function() x5;
-  Function Function(int x) Function() x6;
-  Function Function(int y, [List<Function> x]) Function() x7;
-  Function Function(int x1, [List<T> x2]) Function() x8;
-  List<Function> Function({Function x}) Function() x9;
-  List<Function> Function(List<T> x) Function() x10;
-  core.List<core.int> Function(int x0, [Function x]) Function() x11;
-  core.List<core.int> Function([core.List<core.int> x1]) Function() x12;
-  List<T> Function(int x, [int x2]) Function() x13;
-  List<T> Function(int y, {List<Function> x}) Function() x14;
-  Function([int x]) Function() x15;
-  Function(List<Function> x0) Function() x16;
-  Function(int x, [List<T> x2]) Function() x17;
-  void Function(int x0, {Function x}) Function() x18;
-  void Function([List<T> x]) Function() x19;
-  Function Function<A>(A x) Function() x20;
-  List<T> Function<A>(List<A> x) Function() x21;
-  void Function<A>(int x) Function() x22;
-
-  U88({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, {List<Function> x}) => null;
-  core.List<core.int> m1(int x0, {Function x}) => null;
-  m2({int x}) => null;
-  void m3({List<T> x}) => null;
-  int Function(int x0, [int x1]) m4() => null;
-  int Function(int x0, {List<Function> x}) m5() => null;
-  Function Function(int x) m6() => null;
-  Function Function(int y, [List<Function> x]) m7() => null;
-  Function Function(int x0, [List<T> x1]) m8() => null;
-  List<Function> Function({Function x}) m9() => null;
-  List<Function> Function(List<T> x) m10() => null;
-  core.List<core.int> Function(int x0, [Function x]) m11() => null;
-  core.List<core.int> Function([core.List<core.int> x0]) m12() => null;
-  List<T> Function(int x, [int x0]) m13() => null;
-  List<T> Function(int y, {List<Function> x}) m14() => null;
-  Function([int x]) m15() => null;
-  Function(List<Function> x0) m16() => null;
-  Function(int x, [List<T> x0]) m17() => null;
-  void Function(int x0, {Function x}) m18() => null;
-  void Function([List<T> x]) m19() => null;
-  Function Function<A>(A x) m20() => null;
-  List<T> Function<A>(List<A> x) m21() => null;
-  void Function<A>(int x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, {List<Function> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, {List<Function> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, {List<Function> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x0, {Function x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {Function x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int x0, {Function x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function({int x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function({int x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function({int x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function({List<T> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function({List<T> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function({List<T> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function({List<T> x}) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function({List<T> x}) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function(int x1, [int x2]) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x1, [int x2]) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x1, [int x2]) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x0, {List<Function> x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x0, {List<Function> x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x0, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function(int x) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [List<Function> x]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<Function> x]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect
-        .isTrue(m7 is Function Function(int y, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x1, [List<T> x2]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [List<T> x2]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x1, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x1, [List<T> x2]) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x1, [List<T> x2]) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function({Function x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({Function x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function({Function x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<T> x) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<T> x) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(List<T> x) Function() l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(List<T> x) Function() l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int x0, [Function x]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [Function x]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int x0, [Function x]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x1]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x1]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x1])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x, [int x2]) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [int x2]) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x, [int x2]) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x, [int x2]) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x, [int x2]) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {List<Function> x}) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<Function> x}) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(int y, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {List<Function> x}) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {List<Function> x}) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function([int x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function([int x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function([int x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(List<Function> x0) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x0) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(List<Function> x0) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<T> x2]) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<T> x2]) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x, [List<T> x2]) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x, [List<T> x2]) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x0, {Function x}) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x0, {Function x}) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x0, {Function x}) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<T> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<T> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<T> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function([List<T> x]) Function() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function([List<T> x]) Function() l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(A x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(A x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(A x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<A> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<A> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<A> x) Function() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<A> x) Function() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// void Function<A>(int x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(int x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(int x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U88().runTests();
-  new U88<int>(tIsInt: true).runTests();
-  new U88<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type89_test.dart b/tests/language/function_type/function_type89_test.dart
deleted file mode 100644
index 21d5cc1..0000000
--- a/tests/language/function_type/function_type89_test.dart
+++ /dev/null
@@ -1,941 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(core.List<core.int> x);
-typedef F1<T> = core.List<core.int> Function(int y, {Function x});
-typedef F2<T> = Function(int x0, {int x});
-typedef F3<T> = void Function(int x0, {List<T> x});
-typedef F4<T> = int Function(int x2, [int x3]) Function(int x);
-typedef F5<T> = int Function(int x1, {List<Function> x}) Function(int x);
-typedef F6<T> = Function Function(int x) Function(int x);
-typedef F7<T> = Function Function(int y, [List<Function> x]) Function(int x);
-typedef F8<T> = Function Function(int x2, [List<T> x3]) Function(int x);
-typedef F9<T> = List<Function> Function({Function x}) Function(int x);
-typedef F10<T> = List<Function> Function(List<T> x) Function(int x);
-typedef F11<T> = core.List<core.int> Function(int x1, [Function x]) Function(
-    int x);
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x1])
-    Function(int x);
-typedef F13<T> = List<T> Function(int x, [int x1]) Function(int x);
-typedef F14<T> = List<T> Function(int y, {List<Function> x}) Function(int x);
-typedef F15<T> = Function([int x]) Function(int x);
-typedef F16<T> = Function(List<Function> x1) Function(int x);
-typedef F17<T> = Function(int x, [List<T> x1]) Function(int x);
-typedef F18<T> = void Function(int x1, {Function x}) Function(int x);
-typedef F19<T> = void Function([List<T> x]) Function(int x);
-typedef F20<T> = Function Function<A>(A x) Function(int x);
-typedef F21<T> = List<T> Function<A>(List<A> x) Function(int x);
-typedef F22<T> = void Function<A>(int x) Function(int x);
-
-Function f0(core.List<core.int> x) => null;
-core.List<core.int> f1(int y, {Function x}) => null;
-f2(int x0, {int x}) => null;
-void f3(int x0, {List<int> x}) => null;
-int Function(int x0, [int x1]) f4(int x) => null;
-int Function(int x0, {List<Function> x}) f5(int x) => null;
-Function Function(int x) f6(int x) => null;
-Function Function(int y, [List<Function> x]) f7(int x) => null;
-Function Function(int x0, [List<int> x1]) f8(int x) => null;
-List<Function> Function({Function x}) f9(int x) => null;
-List<Function> Function(List<int> x) f10(int x) => null;
-core.List<core.int> Function(int x0, [Function x]) f11(int x) => null;
-core.List<core.int> Function([core.List<core.int> x0]) f12(int x) => null;
-List<int> Function(int x, [int x0]) f13(int x) => null;
-List<int> Function(int y, {List<Function> x}) f14(int x) => null;
-Function([int x]) f15(int x) => null;
-Function(List<Function> x0) f16(int x) => null;
-Function(int x, [List<int> x0]) f17(int x) => null;
-void Function(int x0, {Function x}) f18(int x) => null;
-void Function([List<int> x]) f19(int x) => null;
-Function Function<A>(A x) f20(int x) => null;
-List<int> Function<A>(List<A> x) f21(int x) => null;
-void Function<A>(int x) f22(int x) => null;
-
-class U89<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(core.List<core.int> x) x0;
-  core.List<core.int> Function(int y, {Function x}) x1;
-  Function(int x0, {int x}) x2;
-  void Function(int x0, {List<T> x}) x3;
-  int Function(int x2, [int x3]) Function(int x) x4;
-  int Function(int x1, {List<Function> x}) Function(int x) x5;
-  Function Function(int x) Function(int x) x6;
-  Function Function(int y, [List<Function> x]) Function(int x) x7;
-  Function Function(int x2, [List<T> x3]) Function(int x) x8;
-  List<Function> Function({Function x}) Function(int x) x9;
-  List<Function> Function(List<T> x) Function(int x) x10;
-  core.List<core.int> Function(int x1, [Function x]) Function(int x) x11;
-  core.List<core.int> Function([core.List<core.int> x1]) Function(int x) x12;
-  List<T> Function(int x, [int x1]) Function(int x) x13;
-  List<T> Function(int y, {List<Function> x}) Function(int x) x14;
-  Function([int x]) Function(int x) x15;
-  Function(List<Function> x1) Function(int x) x16;
-  Function(int x, [List<T> x1]) Function(int x) x17;
-  void Function(int x1, {Function x}) Function(int x) x18;
-  void Function([List<T> x]) Function(int x) x19;
-  Function Function<A>(A x) Function(int x) x20;
-  List<T> Function<A>(List<A> x) Function(int x) x21;
-  void Function<A>(int x) Function(int x) x22;
-
-  U89({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(core.List<core.int> x) => null;
-  core.List<core.int> m1(int y, {Function x}) => null;
-  m2(int x0, {int x}) => null;
-  void m3(int x0, {List<T> x}) => null;
-  int Function(int x0, [int x1]) m4(int x) => null;
-  int Function(int x0, {List<Function> x}) m5(int x) => null;
-  Function Function(int x) m6(int x) => null;
-  Function Function(int y, [List<Function> x]) m7(int x) => null;
-  Function Function(int x0, [List<T> x1]) m8(int x) => null;
-  List<Function> Function({Function x}) m9(int x) => null;
-  List<Function> Function(List<T> x) m10(int x) => null;
-  core.List<core.int> Function(int x0, [Function x]) m11(int x) => null;
-  core.List<core.int> Function([core.List<core.int> x0]) m12(int x) => null;
-  List<T> Function(int x, [int x0]) m13(int x) => null;
-  List<T> Function(int y, {List<Function> x}) m14(int x) => null;
-  Function([int x]) m15(int x) => null;
-  Function(List<Function> x0) m16(int x) => null;
-  Function(int x, [List<T> x0]) m17(int x) => null;
-  void Function(int x0, {Function x}) m18(int x) => null;
-  void Function([List<T> x]) m19(int x) => null;
-  Function Function<A>(A x) m20(int x) => null;
-  List<T> Function<A>(List<A> x) m21(int x) => null;
-  void Function<A>(int x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(core.List<core.int> x)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(core.List<core.int> x));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int y, {Function x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {Function x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(int y, {Function x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x0, {int x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x0, {int x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x0, {int x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(int x0, {List<T> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int x0, {List<T> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int x0, {List<T> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(int x0, {List<T> x}) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(int x0, {List<T> x}) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function(int x2, [int x3]) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x2, [int x3]) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x2, [int x3]) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {List<Function> x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {List<Function> x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect
-        .isTrue(m5 is int Function(int x1, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function(int x) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [List<Function> x]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<Function> x]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(
-        m7 is Function Function(int y, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [List<T> x3]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [List<T> x3]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect
-        .isTrue(m8 is Function Function(int x2, [List<T> x3]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x2, [List<T> x3]) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x2, [List<T> x3]) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function({Function x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({Function x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function({Function x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<T> x) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(List<T> x) Function(int x) l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(List<T> x) Function(int x) l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, [Function x]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [Function x]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1, [Function x])
-        Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x1]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x1]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x, [int x1]) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [int x1]) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x, [int x1]) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x, [int x1]) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x, [int x1]) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {List<Function> x}) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<Function> x}) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function(int y, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {List<Function> x}) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {List<Function> x}) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function([int x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function([int x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function([int x]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(List<Function> x1) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x1) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(List<Function> x1) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<T> x1]) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<T> x1]) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x, [List<T> x1]) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x, [List<T> x1]) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x1, {Function x}) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, {Function x}) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<T> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<T> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function([List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function([List<T> x]) Function(int x) l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function([List<T> x]) Function(int x) l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(A x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(A x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(A x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<A> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<A> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<A> x) Function(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<A> x) Function(int x) l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// void Function<A>(int x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(int x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U89().runTests();
-  new U89<int>(tIsInt: true).runTests();
-  new U89<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type8_test.dart b/tests/language/function_type/function_type8_test.dart
deleted file mode 100644
index a0b0a11..0000000
--- a/tests/language/function_type/function_type8_test.dart
+++ /dev/null
@@ -1,914 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function({int x});
-typedef F1<T> = Function Function({List<T> x});
-typedef F2<T> = core.List<core.int> Function(int x, [core.List<core.int> x2]);
-typedef F3<T> = Function(int x1, [List<Function> x2]);
-typedef F4<T> = List<Function> Function<A>(int x);
-typedef F5<T> = int Function(Function x) Function();
-typedef F6<T> = int Function(int y, [core.List<core.int> x]) Function();
-typedef F7<T> = Function Function([int x1]) Function();
-typedef F8<T> = Function Function({List<Function> x}) Function();
-typedef F9<T> = Function Function() Function();
-typedef F10<T> = List<Function> Function(int x0, [List<Function> x]) Function();
-typedef F11<T> = List<Function> Function([List<T> x1]) Function();
-typedef F12<T> = core.List<core.int> Function(int x, [Function x2]) Function();
-typedef F13<T> = core.List<core.int> Function(int y, {core.List<core.int> x})
-    Function();
-typedef F14<T> = List<T> Function([Function x]) Function();
-typedef F15<T> = List<T> Function(core.List<core.int> x0) Function();
-typedef F16<T> = Function(int x1, [int x2]) Function();
-typedef F17<T> = Function(int x0, {List<Function> x}) Function();
-typedef F18<T> = void Function(int x) Function();
-typedef F19<T> = void Function(int y, [List<Function> x]) Function();
-typedef F20<T> = void Function(int x1, [List<T> x2]) Function();
-typedef F21<T> = List<Function> Function<A>(core.List<core.int> x) Function();
-typedef F22<T> = Function<A>(List<T> x) Function();
-typedef F23<T> = void Function<A>() Function();
-
-int f0({int x}) => null;
-Function f1({List<int> x}) => null;
-core.List<core.int> f2(int x, [core.List<core.int> x0]) => null;
-f3(int x0, [List<Function> x1]) => null;
-List<Function> f4<A>(int x) => null;
-int Function(Function x) f5() => null;
-int Function(int y, [core.List<core.int> x]) f6() => null;
-Function Function([int x0]) f7() => null;
-Function Function({List<Function> x}) f8() => null;
-Function Function() f9() => null;
-List<Function> Function(int x0, [List<Function> x]) f10() => null;
-List<Function> Function([List<int> x0]) f11() => null;
-core.List<core.int> Function(int x, [Function x0]) f12() => null;
-core.List<core.int> Function(int y, {core.List<core.int> x}) f13() => null;
-List<int> Function([Function x]) f14() => null;
-List<int> Function(core.List<core.int> x0) f15() => null;
-Function(int x0, [int x1]) f16() => null;
-Function(int x0, {List<Function> x}) f17() => null;
-void Function(int x) f18() => null;
-void Function(int y, [List<Function> x]) f19() => null;
-void Function(int x0, [List<int> x1]) f20() => null;
-List<Function> Function<A>(core.List<core.int> x) f21() => null;
-Function<A>(List<int> x) f22() => null;
-void Function<A>() f23() => null;
-
-class U8<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function({int x}) x0;
-  Function Function({List<T> x}) x1;
-  core.List<core.int> Function(int x, [core.List<core.int> x2]) x2;
-  Function(int x1, [List<Function> x2]) x3;
-  List<Function> Function<A>(int x) x4;
-  int Function(Function x) Function() x5;
-  int Function(int y, [core.List<core.int> x]) Function() x6;
-  Function Function([int x1]) Function() x7;
-  Function Function({List<Function> x}) Function() x8;
-  Function Function() Function() x9;
-  List<Function> Function(int x0, [List<Function> x]) Function() x10;
-  List<Function> Function([List<T> x1]) Function() x11;
-  core.List<core.int> Function(int x, [Function x2]) Function() x12;
-  core.List<core.int> Function(int y, {core.List<core.int> x}) Function() x13;
-  List<T> Function([Function x]) Function() x14;
-  List<T> Function(core.List<core.int> x0) Function() x15;
-  Function(int x1, [int x2]) Function() x16;
-  Function(int x0, {List<Function> x}) Function() x17;
-  void Function(int x) Function() x18;
-  void Function(int y, [List<Function> x]) Function() x19;
-  void Function(int x1, [List<T> x2]) Function() x20;
-  List<Function> Function<A>(core.List<core.int> x) Function() x21;
-  Function<A>(List<T> x) Function() x22;
-  void Function<A>() Function() x23;
-
-  U8({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0({int x}) => null;
-  Function m1({List<T> x}) => null;
-  core.List<core.int> m2(int x, [core.List<core.int> x0]) => null;
-  m3(int x0, [List<Function> x1]) => null;
-  List<Function> m4<A>(int x) => null;
-  int Function(Function x) m5() => null;
-  int Function(int y, [core.List<core.int> x]) m6() => null;
-  Function Function([int x0]) m7() => null;
-  Function Function({List<Function> x}) m8() => null;
-  Function Function() m9() => null;
-  List<Function> Function(int x0, [List<Function> x]) m10() => null;
-  List<Function> Function([List<T> x0]) m11() => null;
-  core.List<core.int> Function(int x, [Function x0]) m12() => null;
-  core.List<core.int> Function(int y, {core.List<core.int> x}) m13() => null;
-  List<T> Function([Function x]) m14() => null;
-  List<T> Function(core.List<core.int> x0) m15() => null;
-  Function(int x0, [int x1]) m16() => null;
-  Function(int x0, {List<Function> x}) m17() => null;
-  void Function(int x) m18() => null;
-  void Function(int y, [List<Function> x]) m19() => null;
-  void Function(int x0, [List<T> x1]) m20() => null;
-  List<Function> Function<A>(core.List<core.int> x) m21() => null;
-  Function<A>(List<T> x) m22() => null;
-  void Function<A>() m23() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function({int x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function({int x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function({int x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function({List<T> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function({List<T> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function({List<T> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function({List<T> x}) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function({List<T> x}) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function(int x, [core.List<core.int> x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [core.List<core.int> x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(
-        m2 is core.List<core.int> Function(int x, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int x1, [List<Function> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<Function> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x1, [List<Function> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(Function x) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(Function x) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [core.List<core.int> x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [core.List<core.int> x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is int Function(int y, [core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([int x1]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([int x1]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([int x1]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<Function> x}) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<Function> x}) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({List<Function> x}) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function() Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function() Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function() Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x0, [List<Function> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [List<Function> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(int x0, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function([List<T> x1]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x1]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function([List<T> x1]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function([List<T> x1]) Function() l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function([List<T> x1]) Function() l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x, [Function x2]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [Function x2]) Function() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(
-        m12 is core.List<core.int> Function(int x, [Function x2]) Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {core.List<core.int> x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {core.List<core.int> x}) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y,
-            {core.List<core.int> x})
-        Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function([Function x]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([Function x]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x0) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x0) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is List<T> Function(core.List<core.int> x0) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(core.List<core.int> x0) Function() l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(core.List<core.int> x0) Function() l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x1, [int x2]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [int x2]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [int x2]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x0, {List<Function> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x0, {List<Function> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x0, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<Function> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<Function> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [List<Function> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x1, [List<T> x2]) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<T> x2]) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x1, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x1, [List<T> x2]) Function() l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x1, [List<T> x2]) Function() l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(core.List<core.int> x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(core.List<core.int> x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<Function> Function<A>(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<T> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<T> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<T> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        Function<A>(List<T> x) Function() l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      Function<A>(List<T> x) Function() l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// void Function<A>() Function()
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>() Function() l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>() Function());
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U8().runTests();
-  new U8<int>(tIsInt: true).runTests();
-  new U8<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type90_test.dart b/tests/language/function_type/function_type90_test.dart
deleted file mode 100644
index d82927a..0000000
--- a/tests/language/function_type/function_type90_test.dart
+++ /dev/null
@@ -1,979 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([core.List<core.int> x]);
-typedef F1<T> = core.List<core.int> Function(List<Function> x);
-typedef F2<T> = Function(int y, {int x});
-typedef F3<T> = void Function(int y, {List<T> x});
-typedef F4<T> = int Function(int x2, [int x3]) Function<B extends core.int>();
-typedef F5<T> = int Function(int x1, {List<Function> x})
-    Function<B extends core.int>();
-typedef F6<T> = Function Function(int x) Function<B extends core.int>();
-typedef F7<T> = Function Function(int y, [List<Function> x])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x2, [List<T> x3])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function({Function x})
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(List<T> x)
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int x1, [Function x])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function(int x, [int x1])
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function(int y, {List<Function> x})
-    Function<B extends core.int>();
-typedef F15<T> = Function([int x]) Function<B extends core.int>();
-typedef F16<T> = Function(List<Function> x1) Function<B extends core.int>();
-typedef F17<T> = Function(int x, [List<T> x1]) Function<B extends core.int>();
-typedef F18<T> = void Function(int x1, {Function x})
-    Function<B extends core.int>();
-typedef F19<T> = void Function([List<T> x]) Function<B extends core.int>();
-typedef F20<T> = Function Function<A>(A x) Function<B extends core.int>();
-typedef F21<T> = List<T> Function<A>(List<A> x) Function<B extends core.int>();
-typedef F22<T> = void Function<A>(int x) Function<B extends core.int>();
-
-Function f0([core.List<core.int> x]) => null;
-core.List<core.int> f1(List<Function> x) => null;
-f2(int y, {int x}) => null;
-void f3(int y, {List<int> x}) => null;
-int Function(int x0, [int x1]) f4<B extends core.int>() => null;
-int Function(int x0, {List<Function> x}) f5<B extends core.int>() => null;
-Function Function(int x) f6<B extends core.int>() => null;
-Function Function(int y, [List<Function> x]) f7<B extends core.int>() => null;
-Function Function(int x0, [List<int> x1]) f8<B extends core.int>() => null;
-List<Function> Function({Function x}) f9<B extends core.int>() => null;
-List<Function> Function(List<int> x) f10<B extends core.int>() => null;
-core.List<core.int> Function(int x0, [Function x]) f11<B extends core.int>() =>
-    null;
-core.List<core.int> Function([core.List<core.int> x0])
-    f12<B extends core.int>() => null;
-List<int> Function(int x, [int x0]) f13<B extends core.int>() => null;
-List<int> Function(int y, {List<Function> x}) f14<B extends core.int>() => null;
-Function([int x]) f15<B extends core.int>() => null;
-Function(List<Function> x0) f16<B extends core.int>() => null;
-Function(int x, [List<int> x0]) f17<B extends core.int>() => null;
-void Function(int x0, {Function x}) f18<B extends core.int>() => null;
-void Function([List<int> x]) f19<B extends core.int>() => null;
-Function Function<A>(A x) f20<B extends core.int>() => null;
-List<int> Function<A>(List<A> x) f21<B extends core.int>() => null;
-void Function<A>(int x) f22<B extends core.int>() => null;
-
-class U90<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([core.List<core.int> x]) x0;
-  core.List<core.int> Function(List<Function> x) x1;
-  Function(int y, {int x}) x2;
-  void Function(int y, {List<T> x}) x3;
-  int Function(int x2, [int x3]) Function<B extends core.int>() x4;
-  int Function(int x1, {List<Function> x}) Function<B extends core.int>() x5;
-  Function Function(int x) Function<B extends core.int>() x6;
-  Function Function(int y, [List<Function> x]) Function<B extends core.int>()
-      x7;
-  Function Function(int x2, [List<T> x3]) Function<B extends core.int>() x8;
-  List<Function> Function({Function x}) Function<B extends core.int>() x9;
-  List<Function> Function(List<T> x) Function<B extends core.int>() x10;
-  core.List<core.int> Function(int x1, [Function x])
-      Function<B extends core.int>() x11;
-  core.List<core.int> Function([core.List<core.int> x1])
-      Function<B extends core.int>() x12;
-  List<T> Function(int x, [int x1]) Function<B extends core.int>() x13;
-  List<T> Function(int y, {List<Function> x}) Function<B extends core.int>()
-      x14;
-  Function([int x]) Function<B extends core.int>() x15;
-  Function(List<Function> x1) Function<B extends core.int>() x16;
-  Function(int x, [List<T> x1]) Function<B extends core.int>() x17;
-  void Function(int x1, {Function x}) Function<B extends core.int>() x18;
-  void Function([List<T> x]) Function<B extends core.int>() x19;
-  Function Function<A>(A x) Function<B extends core.int>() x20;
-  List<T> Function<A>(List<A> x) Function<B extends core.int>() x21;
-  void Function<A>(int x) Function<B extends core.int>() x22;
-
-  U90({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([core.List<core.int> x]) => null;
-  core.List<core.int> m1(List<Function> x) => null;
-  m2(int y, {int x}) => null;
-  void m3(int y, {List<T> x}) => null;
-  int Function(int x0, [int x1]) m4<B extends core.int>() => null;
-  int Function(int x0, {List<Function> x}) m5<B extends core.int>() => null;
-  Function Function(int x) m6<B extends core.int>() => null;
-  Function Function(int y, [List<Function> x]) m7<B extends core.int>() => null;
-  Function Function(int x0, [List<T> x1]) m8<B extends core.int>() => null;
-  List<Function> Function({Function x}) m9<B extends core.int>() => null;
-  List<Function> Function(List<T> x) m10<B extends core.int>() => null;
-  core.List<core.int> Function(int x0, [Function x])
-      m11<B extends core.int>() => null;
-  core.List<core.int> Function([core.List<core.int> x0])
-      m12<B extends core.int>() => null;
-  List<T> Function(int x, [int x0]) m13<B extends core.int>() => null;
-  List<T> Function(int y, {List<Function> x}) m14<B extends core.int>() => null;
-  Function([int x]) m15<B extends core.int>() => null;
-  Function(List<Function> x0) m16<B extends core.int>() => null;
-  Function(int x, [List<T> x0]) m17<B extends core.int>() => null;
-  void Function(int x0, {Function x}) m18<B extends core.int>() => null;
-  void Function([List<T> x]) m19<B extends core.int>() => null;
-  Function Function<A>(A x) m20<B extends core.int>() => null;
-  List<T> Function<A>(List<A> x) m21<B extends core.int>() => null;
-  void Function<A>(int x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([core.List<core.int> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([core.List<core.int> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(List<Function> x)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(List<Function> x));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int y, {int x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int y, {int x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int y, {int x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function(int y, {List<T> x})
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function(int y, {List<T> x}) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function(int y, {List<T> x}));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        void Function(int y, {List<T> x}) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      void Function(int y, {List<T> x}) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function(int x2, [int x3]) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x2, [int x3]) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function(int x2, [int x3]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {List<Function> x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {List<Function> x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect
-        .isTrue(m6 is Function Function(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [List<Function> x]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<Function> x]) Function<B extends core.int>()
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [List<Function> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [List<T> x3]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [List<T> x3]) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x2, [List<T> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x2, [List<T> x3]) Function<B extends core.int>()
-            l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x2, [List<T> x3]) Function<B extends core.int>()
-          l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function({Function x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({Function x}) Function<B extends core.int>() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function({Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<T> x) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x) Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<T> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(List<T> x) Function<B extends core.int>() l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(List<T> x) Function<B extends core.int>() l10 =
-          m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, [Function x]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [Function x])
-        Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x1]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x1])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x, [int x1]) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [int x1]) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x, [int x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x, [int x1]) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x, [int x1]) Function<B extends core.int>() l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {List<Function> x}) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<Function> x}) Function<B extends core.int>()
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {List<Function> x})
-            Function<B extends core.int>() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {List<Function> x}) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function([int x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function([int x]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function([int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(List<Function> x1) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x1) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(List<Function> x1) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<T> x1]) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<T> x1]) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x, [List<T> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x, [List<T> x1]) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x, [List<T> x1]) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x1, {Function x}) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, {Function x}) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<T> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<T> x]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function([List<T> x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function([List<T> x]) Function<B extends core.int>() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function([List<T> x]) Function<B extends core.int>() l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(A x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(A x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(A x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<A> x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<A> x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is List<T> Function<A>(List<A> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<A> x) Function<B extends core.int>() l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<A> x) Function<B extends core.int>() l21 = m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// void Function<A>(int x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(int x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect
-        .isTrue(m22 is void Function<A>(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U90().runTests();
-  new U90<int>(tIsInt: true).runTests();
-  new U90<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type91_test.dart b/tests/language/function_type/function_type91_test.dart
deleted file mode 100644
index dad983d..0000000
--- a/tests/language/function_type/function_type91_test.dart
+++ /dev/null
@@ -1,972 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, [core.List<core.int> x]);
-typedef F1<T> = core.List<core.int> Function([List<Function> x]);
-typedef F2<T> = Function(Function x);
-typedef F3<T> = void Function();
-typedef F4<T> = int Function(int x2, [int x3]) Function<B extends core.int>(
-    int x);
-typedef F5<T> = int Function(int x1, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F6<T> = Function Function(int x) Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(int y, [List<Function> x])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int x2, [List<T> x3])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function({Function x})
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(List<T> x)
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int x1, [Function x])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function([core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function(int x, [int x1]) Function<B extends core.int>(
-    int x);
-typedef F14<T> = List<T> Function(int y, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F15<T> = Function([int x]) Function<B extends core.int>(int x);
-typedef F16<T> = Function(List<Function> x1) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function(int x, [List<T> x1]) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function(int x1, {Function x})
-    Function<B extends core.int>(int x);
-typedef F19<T> = void Function([List<T> x]) Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>(A x) Function<B extends core.int>(int x);
-typedef F21<T> = List<T> Function<A>(List<A> x) Function<B extends core.int>(
-    int x);
-typedef F22<T> = void Function<A>(int x) Function<B extends core.int>(int x);
-
-Function f0(int x0, [core.List<core.int> x]) => null;
-core.List<core.int> f1([List<Function> x]) => null;
-f2(Function x) => null;
-void f3() => null;
-int Function(int x0, [int x1]) f4<B extends core.int>(int x) => null;
-int Function(int x0, {List<Function> x}) f5<B extends core.int>(int x) => null;
-Function Function(int x) f6<B extends core.int>(int x) => null;
-Function Function(int y, [List<Function> x]) f7<B extends core.int>(int x) =>
-    null;
-Function Function(int x0, [List<int> x1]) f8<B extends core.int>(int x) => null;
-List<Function> Function({Function x}) f9<B extends core.int>(int x) => null;
-List<Function> Function(List<int> x) f10<B extends core.int>(int x) => null;
-core.List<core.int> Function(int x0, [Function x]) f11<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function([core.List<core.int> x0]) f12<B extends core.int>(
-        int x) =>
-    null;
-List<int> Function(int x, [int x0]) f13<B extends core.int>(int x) => null;
-List<int> Function(int y, {List<Function> x}) f14<B extends core.int>(int x) =>
-    null;
-Function([int x]) f15<B extends core.int>(int x) => null;
-Function(List<Function> x0) f16<B extends core.int>(int x) => null;
-Function(int x, [List<int> x0]) f17<B extends core.int>(int x) => null;
-void Function(int x0, {Function x}) f18<B extends core.int>(int x) => null;
-void Function([List<int> x]) f19<B extends core.int>(int x) => null;
-Function Function<A>(A x) f20<B extends core.int>(int x) => null;
-List<int> Function<A>(List<A> x) f21<B extends core.int>(int x) => null;
-void Function<A>(int x) f22<B extends core.int>(int x) => null;
-
-class U91<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, [core.List<core.int> x]) x0;
-  core.List<core.int> Function([List<Function> x]) x1;
-  Function(Function x) x2;
-  void Function() x3;
-  int Function(int x2, [int x3]) Function<B extends core.int>(int x) x4;
-  int Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-      x5;
-  Function Function(int x) Function<B extends core.int>(int x) x6;
-  Function Function(int y, [List<Function> x]) Function<B extends core.int>(
-      int x) x7;
-  Function Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-      x8;
-  List<Function> Function({Function x}) Function<B extends core.int>(int x) x9;
-  List<Function> Function(List<T> x) Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function(int x1, [Function x])
-      Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function([core.List<core.int> x1])
-      Function<B extends core.int>(int x) x12;
-  List<T> Function(int x, [int x1]) Function<B extends core.int>(int x) x13;
-  List<T> Function(int y, {List<Function> x}) Function<B extends core.int>(
-      int x) x14;
-  Function([int x]) Function<B extends core.int>(int x) x15;
-  Function(List<Function> x1) Function<B extends core.int>(int x) x16;
-  Function(int x, [List<T> x1]) Function<B extends core.int>(int x) x17;
-  void Function(int x1, {Function x}) Function<B extends core.int>(int x) x18;
-  void Function([List<T> x]) Function<B extends core.int>(int x) x19;
-  Function Function<A>(A x) Function<B extends core.int>(int x) x20;
-  List<T> Function<A>(List<A> x) Function<B extends core.int>(int x) x21;
-  void Function<A>(int x) Function<B extends core.int>(int x) x22;
-
-  U91({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [core.List<core.int> x]) => null;
-  core.List<core.int> m1([List<Function> x]) => null;
-  m2(Function x) => null;
-  void m3() => null;
-  int Function(int x0, [int x1]) m4<B extends core.int>(int x) => null;
-  int Function(int x0, {List<Function> x}) m5<B extends core.int>(int x) =>
-      null;
-  Function Function(int x) m6<B extends core.int>(int x) => null;
-  Function Function(int y, [List<Function> x]) m7<B extends core.int>(int x) =>
-      null;
-  Function Function(int x0, [List<T> x1]) m8<B extends core.int>(int x) => null;
-  List<Function> Function({Function x}) m9<B extends core.int>(int x) => null;
-  List<Function> Function(List<T> x) m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int x0, [Function x]) m11<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function([core.List<core.int> x0])
-      m12<B extends core.int>(int x) => null;
-  List<T> Function(int x, [int x0]) m13<B extends core.int>(int x) => null;
-  List<T> Function(int y, {List<Function> x}) m14<B extends core.int>(int x) =>
-      null;
-  Function([int x]) m15<B extends core.int>(int x) => null;
-  Function(List<Function> x0) m16<B extends core.int>(int x) => null;
-  Function(int x, [List<T> x0]) m17<B extends core.int>(int x) => null;
-  void Function(int x0, {Function x}) m18<B extends core.int>(int x) => null;
-  void Function([List<T> x]) m19<B extends core.int>(int x) => null;
-  Function Function<A>(A x) m20<B extends core.int>(int x) => null;
-  List<T> Function<A>(List<A> x) m21<B extends core.int>(int x) => null;
-  void Function<A>(int x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, [core.List<core.int> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [core.List<core.int> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function([List<Function> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function([List<Function> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(Function x)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(Function x) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(Function x));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// void Function()
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    void Function() l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is void Function());
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x2, [int x3]) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x2, [int x3]) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x2, [int x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int x1, {List<Function> x}) Function<B extends core.int>(int x)
-        l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int x1, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is Function Function(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(int y, [List<Function> x]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(int y, [List<Function> x]) Function<B extends core.int>(
-        int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(int y, [List<Function> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x2, [List<T> x3]) Function<B extends core.int>(int x)
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x2, [List<T> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x2, [List<T> x3]) Function<B extends core.int>(
-            int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x2, [List<T> x3]) Function<B extends core.int>(
-          int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function({Function x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function({Function x}) Function<B extends core.int>(int x)
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function({Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(List<T> x) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(List<T> x) Function<B extends core.int>(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(List<T> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(List<T> x) Function<B extends core.int>(int x)
-            l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(List<T> x) Function<B extends core.int>(int x)
-          l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int x1, [Function x]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [Function x])
-        Function<B extends core.int>(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int x1, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function([core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function([core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x, [int x1]) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x, [int x1]) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x, [int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x, [int x1]) Function<B extends core.int>(int x)
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x, [int x1]) Function<B extends core.int>(int x)
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(int y, {List<Function> x}) Function<B extends core.int>(
-        int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(int y, {List<Function> x})
-            Function<B extends core.int>(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(int y, {List<Function> x}) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function([int x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function([int x]) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function([int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(List<Function> x1) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(List<Function> x1) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function(List<Function> x1) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x, [List<T> x1]) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x, [List<T> x1]) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x, [List<T> x1]) Function<B extends core.int>(int x) l17 =
-          m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int x1, {Function x}) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x1, {Function x}) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x1, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function([List<T> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function([List<T> x]) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function([List<T> x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function([List<T> x]) Function<B extends core.int>(int x) l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function([List<T> x]) Function<B extends core.int>(int x) l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(A x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(A x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(A x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// List<T> Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<T> Function<A>(List<A> x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<T> Function<A>(List<A> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-    if (!tIsBool) {
-      Expect.isTrue(f21 is F21<int>);
-      Expect.isFalse(f21 is F21<bool>);
-      Expect.isTrue(confuse(f21) is F21<int>);
-      Expect.isFalse(confuse(f21) is F21<bool>);
-      Expect.equals(tIsDynamic, m21 is F21<bool>);
-      Expect.equals(tIsDynamic, confuse(m21) is F21<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          x21 = confuse(f21);
-        });
-        List<T> Function<A>(List<A> x) Function<B extends core.int>(int x) l21;
-        Expect.throws(() {
-          l21 = (f21 as dynamic);
-        });
-        Expect.throws(() {
-          l21 = confuse(f21);
-        });
-      }
-      List<T> Function<A>(List<A> x) Function<B extends core.int>(int x) l21 =
-          m21;
-      // In checked mode, verifies the type.
-      x21 = m21;
-      x21 = confuse(m21);
-    }
-  }
-
-  /// void Function<A>(int x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(int x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is void Function<A>(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U91().runTests();
-  new U91<int>(tIsInt: true).runTests();
-  new U91<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type92_test.dart b/tests/language/function_type/function_type92_test.dart
deleted file mode 100644
index 73db9fc5e..0000000
--- a/tests/language/function_type/function_type92_test.dart
+++ /dev/null
@@ -1,884 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, [core.List<core.int> x]);
-typedef F1<T> = core.List<core.int> Function(int x0, [List<Function> x]);
-typedef F2<T> = Function([Function x]);
-typedef F3<T> = int Function<A>(int x);
-typedef F4<T> = int Function(int x, [int x2]) Function();
-typedef F5<T> = int Function(int y, {List<Function> x}) Function();
-typedef F6<T> = Function Function([int x]) Function();
-typedef F7<T> = Function Function(List<Function> x0) Function();
-typedef F8<T> = Function Function(int x, [List<T> x2]) Function();
-typedef F9<T> = List<Function> Function(int x0, {Function x}) Function();
-typedef F10<T> = List<Function> Function([List<T> x]) Function();
-typedef F11<T> = core.List<core.int> Function(int y, [Function x]) Function();
-typedef F12<T> = core.List<core.int> Function(int x1, [core.List<core.int> x2])
-    Function();
-typedef F13<T> = List<T> Function({int x}) Function();
-typedef F14<T> = List<T> Function(core.List<core.int> x) Function();
-typedef F15<T> = Function(int x0, [int x]) Function();
-typedef F16<T> = Function([List<Function> x1]) Function();
-typedef F17<T> = Function({List<T> x}) Function();
-typedef F18<T> = void Function(int y, {Function x}) Function();
-typedef F19<T> = void Function(int x0, [List<T> x]) Function();
-typedef F20<T> = Function Function<A>(List<A> x) Function();
-typedef F21<T> = Function<A>(int x) Function();
-typedef F22<T> = void Function<A>(Function x) Function();
-
-Function f0(int y, [core.List<core.int> x]) => null;
-core.List<core.int> f1(int x0, [List<Function> x]) => null;
-f2([Function x]) => null;
-int f3<A>(int x) => null;
-int Function(int x, [int x0]) f4() => null;
-int Function(int y, {List<Function> x}) f5() => null;
-Function Function([int x]) f6() => null;
-Function Function(List<Function> x0) f7() => null;
-Function Function(int x, [List<int> x0]) f8() => null;
-List<Function> Function(int x0, {Function x}) f9() => null;
-List<Function> Function([List<int> x]) f10() => null;
-core.List<core.int> Function(int y, [Function x]) f11() => null;
-core.List<core.int> Function(int x0, [core.List<core.int> x1]) f12() => null;
-List<int> Function({int x}) f13() => null;
-List<int> Function(core.List<core.int> x) f14() => null;
-Function(int x0, [int x]) f15() => null;
-Function([List<Function> x0]) f16() => null;
-Function({List<int> x}) f17() => null;
-void Function(int y, {Function x}) f18() => null;
-void Function(int x0, [List<int> x]) f19() => null;
-Function Function<A>(List<A> x) f20() => null;
-Function<A>(int x) f21() => null;
-void Function<A>(Function x) f22() => null;
-
-class U92<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, [core.List<core.int> x]) x0;
-  core.List<core.int> Function(int x0, [List<Function> x]) x1;
-  Function([Function x]) x2;
-  int Function<A>(int x) x3;
-  int Function(int x, [int x2]) Function() x4;
-  int Function(int y, {List<Function> x}) Function() x5;
-  Function Function([int x]) Function() x6;
-  Function Function(List<Function> x0) Function() x7;
-  Function Function(int x, [List<T> x2]) Function() x8;
-  List<Function> Function(int x0, {Function x}) Function() x9;
-  List<Function> Function([List<T> x]) Function() x10;
-  core.List<core.int> Function(int y, [Function x]) Function() x11;
-  core.List<core.int> Function(int x1, [core.List<core.int> x2]) Function() x12;
-  List<T> Function({int x}) Function() x13;
-  List<T> Function(core.List<core.int> x) Function() x14;
-  Function(int x0, [int x]) Function() x15;
-  Function([List<Function> x1]) Function() x16;
-  Function({List<T> x}) Function() x17;
-  void Function(int y, {Function x}) Function() x18;
-  void Function(int x0, [List<T> x]) Function() x19;
-  Function Function<A>(List<A> x) Function() x20;
-  Function<A>(int x) Function() x21;
-  void Function<A>(Function x) Function() x22;
-
-  U92({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, [core.List<core.int> x]) => null;
-  core.List<core.int> m1(int x0, [List<Function> x]) => null;
-  m2([Function x]) => null;
-  int m3<A>(int x) => null;
-  int Function(int x, [int x0]) m4() => null;
-  int Function(int y, {List<Function> x}) m5() => null;
-  Function Function([int x]) m6() => null;
-  Function Function(List<Function> x0) m7() => null;
-  Function Function(int x, [List<T> x0]) m8() => null;
-  List<Function> Function(int x0, {Function x}) m9() => null;
-  List<Function> Function([List<T> x]) m10() => null;
-  core.List<core.int> Function(int y, [Function x]) m11() => null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x1]) m12() => null;
-  List<T> Function({int x}) m13() => null;
-  List<T> Function(core.List<core.int> x) m14() => null;
-  Function(int x0, [int x]) m15() => null;
-  Function([List<Function> x0]) m16() => null;
-  Function({List<T> x}) m17() => null;
-  void Function(int y, {Function x}) m18() => null;
-  void Function(int x0, [List<T> x]) m19() => null;
-  Function Function<A>(List<A> x) m20() => null;
-  Function<A>(int x) m21() => null;
-  void Function<A>(Function x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, [core.List<core.int> x])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, [core.List<core.int> x]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, [core.List<core.int> x]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x0, [List<Function> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, [List<Function> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is core.List<core.int> Function(int x0, [List<Function> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function([Function x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function([Function x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function([Function x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>(int x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>(int x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>(int x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x, [int x2]) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x, [int x2]) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x, [int x2]) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {List<Function> x}) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<Function> x}) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {List<Function> x}) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function([int x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function([int x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function([int x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(List<Function> x0) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x0) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x0) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<T> x2]) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<T> x2]) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [List<T> x2]) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x, [List<T> x2]) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x, [List<T> x2]) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x0, {Function x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, {Function x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int x0, {Function x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<T> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<T> x]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function([List<T> x]) Function() l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function([List<T> x]) Function() l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, [Function x]) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [Function x]) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(int y, [Function x]) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x1, [core.List<core.int> x2]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [core.List<core.int> x2]) Function()
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x1,
-            [core.List<core.int> x2])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function({int x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function({int x}) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function({int x}) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function({int x}) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function({int x}) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(core.List<core.int> x) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(core.List<core.int> x) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x0, [int x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x0, [int x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int x0, [int x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function([List<Function> x1]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x1]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([List<Function> x1]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<T> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<T> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({List<T> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function({List<T> x}) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function({List<T> x}) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, {Function x}) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {Function x}) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, {Function x}) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x0, [List<T> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x0, [List<T> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x0, [List<T> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int x0, [List<T> x]) Function() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int x0, [List<T> x]) Function() l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(List<A> x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<A> x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<A> x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(int x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(int x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is Function<A>(int x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(Function x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(Function x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U92().runTests();
-  new U92<int>(tIsInt: true).runTests();
-  new U92<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type93_test.dart b/tests/language/function_type/function_type93_test.dart
deleted file mode 100644
index 76af521..0000000
--- a/tests/language/function_type/function_type93_test.dart
+++ /dev/null
@@ -1,890 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(core.List<core.int> x0);
-typedef F1<T> = core.List<core.int> Function(int y, [List<Function> x]);
-typedef F2<T> = Function(int x0, [Function x]);
-typedef F3<T> = int Function<A>(Function x);
-typedef F4<T> = int Function(int x, [int x1]) Function(int x);
-typedef F5<T> = int Function(int y, {List<Function> x}) Function(int x);
-typedef F6<T> = Function Function([int x]) Function(int x);
-typedef F7<T> = Function Function(List<Function> x1) Function(int x);
-typedef F8<T> = Function Function(int x, [List<T> x1]) Function(int x);
-typedef F9<T> = List<Function> Function(int x1, {Function x}) Function(int x);
-typedef F10<T> = List<Function> Function([List<T> x]) Function(int x);
-typedef F11<T> = core.List<core.int> Function(int y, [Function x]) Function(
-    int x);
-typedef F12<T> = core.List<core.int> Function(int x2, [core.List<core.int> x3])
-    Function(int x);
-typedef F13<T> = List<T> Function({int x}) Function(int x);
-typedef F14<T> = List<T> Function(core.List<core.int> x) Function(int x);
-typedef F15<T> = Function(int x1, [int x]) Function(int x);
-typedef F16<T> = Function([List<Function> x1]) Function(int x);
-typedef F17<T> = Function({List<T> x}) Function(int x);
-typedef F18<T> = void Function(int y, {Function x}) Function(int x);
-typedef F19<T> = void Function(int x1, [List<T> x]) Function(int x);
-typedef F20<T> = Function Function<A>(List<A> x) Function(int x);
-typedef F21<T> = Function<A>(int x) Function(int x);
-typedef F22<T> = void Function<A>(Function x) Function(int x);
-
-Function f0(core.List<core.int> x0) => null;
-core.List<core.int> f1(int y, [List<Function> x]) => null;
-f2(int x0, [Function x]) => null;
-int f3<A>(Function x) => null;
-int Function(int x, [int x0]) f4(int x) => null;
-int Function(int y, {List<Function> x}) f5(int x) => null;
-Function Function([int x]) f6(int x) => null;
-Function Function(List<Function> x0) f7(int x) => null;
-Function Function(int x, [List<int> x0]) f8(int x) => null;
-List<Function> Function(int x0, {Function x}) f9(int x) => null;
-List<Function> Function([List<int> x]) f10(int x) => null;
-core.List<core.int> Function(int y, [Function x]) f11(int x) => null;
-core.List<core.int> Function(int x0, [core.List<core.int> x1]) f12(int x) =>
-    null;
-List<int> Function({int x}) f13(int x) => null;
-List<int> Function(core.List<core.int> x) f14(int x) => null;
-Function(int x0, [int x]) f15(int x) => null;
-Function([List<Function> x0]) f16(int x) => null;
-Function({List<int> x}) f17(int x) => null;
-void Function(int y, {Function x}) f18(int x) => null;
-void Function(int x0, [List<int> x]) f19(int x) => null;
-Function Function<A>(List<A> x) f20(int x) => null;
-Function<A>(int x) f21(int x) => null;
-void Function<A>(Function x) f22(int x) => null;
-
-class U93<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(core.List<core.int> x0) x0;
-  core.List<core.int> Function(int y, [List<Function> x]) x1;
-  Function(int x0, [Function x]) x2;
-  int Function<A>(Function x) x3;
-  int Function(int x, [int x1]) Function(int x) x4;
-  int Function(int y, {List<Function> x}) Function(int x) x5;
-  Function Function([int x]) Function(int x) x6;
-  Function Function(List<Function> x1) Function(int x) x7;
-  Function Function(int x, [List<T> x1]) Function(int x) x8;
-  List<Function> Function(int x1, {Function x}) Function(int x) x9;
-  List<Function> Function([List<T> x]) Function(int x) x10;
-  core.List<core.int> Function(int y, [Function x]) Function(int x) x11;
-  core.List<core.int> Function(int x2, [core.List<core.int> x3]) Function(int x)
-      x12;
-  List<T> Function({int x}) Function(int x) x13;
-  List<T> Function(core.List<core.int> x) Function(int x) x14;
-  Function(int x1, [int x]) Function(int x) x15;
-  Function([List<Function> x1]) Function(int x) x16;
-  Function({List<T> x}) Function(int x) x17;
-  void Function(int y, {Function x}) Function(int x) x18;
-  void Function(int x1, [List<T> x]) Function(int x) x19;
-  Function Function<A>(List<A> x) Function(int x) x20;
-  Function<A>(int x) Function(int x) x21;
-  void Function<A>(Function x) Function(int x) x22;
-
-  U93({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(core.List<core.int> x0) => null;
-  core.List<core.int> m1(int y, [List<Function> x]) => null;
-  m2(int x0, [Function x]) => null;
-  int m3<A>(Function x) => null;
-  int Function(int x, [int x0]) m4(int x) => null;
-  int Function(int y, {List<Function> x}) m5(int x) => null;
-  Function Function([int x]) m6(int x) => null;
-  Function Function(List<Function> x0) m7(int x) => null;
-  Function Function(int x, [List<T> x0]) m8(int x) => null;
-  List<Function> Function(int x0, {Function x}) m9(int x) => null;
-  List<Function> Function([List<T> x]) m10(int x) => null;
-  core.List<core.int> Function(int y, [Function x]) m11(int x) => null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x1]) m12(int x) =>
-      null;
-  List<T> Function({int x}) m13(int x) => null;
-  List<T> Function(core.List<core.int> x) m14(int x) => null;
-  Function(int x0, [int x]) m15(int x) => null;
-  Function([List<Function> x0]) m16(int x) => null;
-  Function({List<T> x}) m17(int x) => null;
-  void Function(int y, {Function x}) m18(int x) => null;
-  void Function(int x0, [List<T> x]) m19(int x) => null;
-  Function Function<A>(List<A> x) m20(int x) => null;
-  Function<A>(int x) m21(int x) => null;
-  void Function<A>(Function x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(core.List<core.int> x0)
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(core.List<core.int> x0) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(core.List<core.int> x0));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int y, [List<Function> x])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [List<Function> x]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is core.List<core.int> Function(int y, [List<Function> x]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x0, [Function x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x0, [Function x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x0, [Function x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>(Function x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>(Function x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>(Function x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x, [int x1]) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x, [int x1]) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x, [int x1]) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {List<Function> x}) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<Function> x}) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect
-        .isTrue(m5 is int Function(int y, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function([int x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function([int x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function([int x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(List<Function> x1) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x1) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x1) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<T> x1]) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<T> x1]) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x, [List<T> x1]) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x, [List<T> x1]) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x1, {Function x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {Function x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int x1, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<T> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function([List<T> x]) Function(int x) l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function([List<T> x]) Function(int x) l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, [Function x]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [Function x]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int y, [Function x])
-        Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x2, [core.List<core.int> x3]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [core.List<core.int> x3]) Function(
-        int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2,
-            [core.List<core.int> x3])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function({int x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function({int x}) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function({int x}) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function({int x}) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function({int x}) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect
-        .isTrue(m14 is List<T> Function(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(core.List<core.int> x) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(core.List<core.int> x) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x1, [int x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x1, [int x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int x1, [int x]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function([List<Function> x1]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x1]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<T> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<T> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function({List<T> x}) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function({List<T> x}) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, {Function x}) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {Function x}) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [List<T> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<T> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int x1, [List<T> x]) Function(int x) l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int x1, [List<T> x]) Function(int x) l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(List<A> x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<A> x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<A> x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(int x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(int x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(Function x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(Function x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U93().runTests();
-  new U93<int>(tIsInt: true).runTests();
-  new U93<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type94_test.dart b/tests/language/function_type/function_type94_test.dart
deleted file mode 100644
index 586e60c..0000000
--- a/tests/language/function_type/function_type94_test.dart
+++ /dev/null
@@ -1,922 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function([core.List<core.int> x1]);
-typedef F1<T> = core.List<core.int> Function(List<Function> x0);
-typedef F2<T> = Function(int y, [Function x]);
-typedef F3<T> = int Function<A>(List<Function> x);
-typedef F4<T> = int Function(int x, [int x1]) Function<B extends core.int>();
-typedef F5<T> = int Function(int y, {List<Function> x})
-    Function<B extends core.int>();
-typedef F6<T> = Function Function([int x]) Function<B extends core.int>();
-typedef F7<T> = Function Function(List<Function> x1)
-    Function<B extends core.int>();
-typedef F8<T> = Function Function(int x, [List<T> x1])
-    Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int x1, {Function x})
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function([List<T> x])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(int y, [Function x])
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function({int x}) Function<B extends core.int>();
-typedef F14<T> = List<T> Function(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F15<T> = Function(int x1, [int x]) Function<B extends core.int>();
-typedef F16<T> = Function([List<Function> x1]) Function<B extends core.int>();
-typedef F17<T> = Function({List<T> x}) Function<B extends core.int>();
-typedef F18<T> = void Function(int y, {Function x})
-    Function<B extends core.int>();
-typedef F19<T> = void Function(int x1, [List<T> x])
-    Function<B extends core.int>();
-typedef F20<T> = Function Function<A>(List<A> x) Function<B extends core.int>();
-typedef F21<T> = Function<A>(int x) Function<B extends core.int>();
-typedef F22<T> = void Function<A>(Function x) Function<B extends core.int>();
-
-Function f0([core.List<core.int> x0]) => null;
-core.List<core.int> f1(List<Function> x0) => null;
-f2(int y, [Function x]) => null;
-int f3<A>(List<Function> x) => null;
-int Function(int x, [int x0]) f4<B extends core.int>() => null;
-int Function(int y, {List<Function> x}) f5<B extends core.int>() => null;
-Function Function([int x]) f6<B extends core.int>() => null;
-Function Function(List<Function> x0) f7<B extends core.int>() => null;
-Function Function(int x, [List<int> x0]) f8<B extends core.int>() => null;
-List<Function> Function(int x0, {Function x}) f9<B extends core.int>() => null;
-List<Function> Function([List<int> x]) f10<B extends core.int>() => null;
-core.List<core.int> Function(int y, [Function x]) f11<B extends core.int>() =>
-    null;
-core.List<core.int> Function(int x0, [core.List<core.int> x1])
-    f12<B extends core.int>() => null;
-List<int> Function({int x}) f13<B extends core.int>() => null;
-List<int> Function(core.List<core.int> x) f14<B extends core.int>() => null;
-Function(int x0, [int x]) f15<B extends core.int>() => null;
-Function([List<Function> x0]) f16<B extends core.int>() => null;
-Function({List<int> x}) f17<B extends core.int>() => null;
-void Function(int y, {Function x}) f18<B extends core.int>() => null;
-void Function(int x0, [List<int> x]) f19<B extends core.int>() => null;
-Function Function<A>(List<A> x) f20<B extends core.int>() => null;
-Function<A>(int x) f21<B extends core.int>() => null;
-void Function<A>(Function x) f22<B extends core.int>() => null;
-
-class U94<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function([core.List<core.int> x1]) x0;
-  core.List<core.int> Function(List<Function> x0) x1;
-  Function(int y, [Function x]) x2;
-  int Function<A>(List<Function> x) x3;
-  int Function(int x, [int x1]) Function<B extends core.int>() x4;
-  int Function(int y, {List<Function> x}) Function<B extends core.int>() x5;
-  Function Function([int x]) Function<B extends core.int>() x6;
-  Function Function(List<Function> x1) Function<B extends core.int>() x7;
-  Function Function(int x, [List<T> x1]) Function<B extends core.int>() x8;
-  List<Function> Function(int x1, {Function x}) Function<B extends core.int>()
-      x9;
-  List<Function> Function([List<T> x]) Function<B extends core.int>() x10;
-  core.List<core.int> Function(int y, [Function x])
-      Function<B extends core.int>() x11;
-  core.List<core.int> Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>() x12;
-  List<T> Function({int x}) Function<B extends core.int>() x13;
-  List<T> Function(core.List<core.int> x) Function<B extends core.int>() x14;
-  Function(int x1, [int x]) Function<B extends core.int>() x15;
-  Function([List<Function> x1]) Function<B extends core.int>() x16;
-  Function({List<T> x}) Function<B extends core.int>() x17;
-  void Function(int y, {Function x}) Function<B extends core.int>() x18;
-  void Function(int x1, [List<T> x]) Function<B extends core.int>() x19;
-  Function Function<A>(List<A> x) Function<B extends core.int>() x20;
-  Function<A>(int x) Function<B extends core.int>() x21;
-  void Function<A>(Function x) Function<B extends core.int>() x22;
-
-  U94({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0([core.List<core.int> x0]) => null;
-  core.List<core.int> m1(List<Function> x0) => null;
-  m2(int y, [Function x]) => null;
-  int m3<A>(List<Function> x) => null;
-  int Function(int x, [int x0]) m4<B extends core.int>() => null;
-  int Function(int y, {List<Function> x}) m5<B extends core.int>() => null;
-  Function Function([int x]) m6<B extends core.int>() => null;
-  Function Function(List<Function> x0) m7<B extends core.int>() => null;
-  Function Function(int x, [List<T> x0]) m8<B extends core.int>() => null;
-  List<Function> Function(int x0, {Function x}) m9<B extends core.int>() =>
-      null;
-  List<Function> Function([List<T> x]) m10<B extends core.int>() => null;
-  core.List<core.int> Function(int y, [Function x]) m11<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x1])
-      m12<B extends core.int>() => null;
-  List<T> Function({int x}) m13<B extends core.int>() => null;
-  List<T> Function(core.List<core.int> x) m14<B extends core.int>() => null;
-  Function(int x0, [int x]) m15<B extends core.int>() => null;
-  Function([List<Function> x0]) m16<B extends core.int>() => null;
-  Function({List<T> x}) m17<B extends core.int>() => null;
-  void Function(int y, {Function x}) m18<B extends core.int>() => null;
-  void Function(int x0, [List<T> x]) m19<B extends core.int>() => null;
-  Function Function<A>(List<A> x) m20<B extends core.int>() => null;
-  Function<A>(int x) m21<B extends core.int>() => null;
-  void Function<A>(Function x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function([core.List<core.int> x1])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function([core.List<core.int> x1]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function([core.List<core.int> x1]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(List<Function> x0)
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(List<Function> x0) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function(List<Function> x0));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int y, [Function x])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int y, [Function x]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int y, [Function x]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>(List<Function> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>(List<Function> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>(List<Function> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x, [int x1]) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x, [int x1]) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function(int x, [int x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {List<Function> x}) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<Function> x}) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {List<Function> x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function([int x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function([int x]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is Function Function([int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(List<Function> x1) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x1) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<T> x1]) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<T> x1]) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [List<T> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x, [List<T> x1]) Function<B extends core.int>()
-            l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x, [List<T> x1]) Function<B extends core.int>() l8 =
-          m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x1, {Function x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {Function x}) Function<B extends core.int>()
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<T> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x]) Function<B extends core.int>() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function([List<T> x]) Function<B extends core.int>() l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function([List<T> x]) Function<B extends core.int>() l10 =
-          m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, [Function x]) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [Function x])
-        Function<B extends core.int>() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int y, [Function x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2,
-            [core.List<core.int> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function({int x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function({int x}) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function({int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function({int x}) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function({int x}) Function<B extends core.int>() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x) Function<B extends core.int>() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(core.List<core.int> x) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(core.List<core.int> x) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x1, [int x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x1, [int x]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is Function(int x1, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function([List<Function> x1]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x1]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(
-        m16 is Function([List<Function> x1]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<T> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<T> x}) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function({List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function({List<T> x}) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function({List<T> x}) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, {Function x}) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {Function x}) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [List<T> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<T> x]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int x1, [List<T> x]) Function<B extends core.int>() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int x1, [List<T> x]) Function<B extends core.int>() l19 =
-          m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(List<A> x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<A> x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(
-        m20 is Function Function<A>(List<A> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(int x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(int x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is Function<A>(int x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(Function x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(Function x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(
-        m22 is void Function<A>(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U94().runTests();
-  new U94<int>(tIsInt: true).runTests();
-  new U94<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type95_test.dart b/tests/language/function_type/function_type95_test.dart
deleted file mode 100644
index d52e33f..0000000
--- a/tests/language/function_type/function_type95_test.dart
+++ /dev/null
@@ -1,941 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x1, [core.List<core.int> x2]);
-typedef F1<T> = core.List<core.int> Function([List<Function> x1]);
-typedef F2<T> = Function(Function x0);
-typedef F3<T> = int Function<A>(core.List<core.int> x);
-typedef F4<T> = int Function(int x, [int x1]) Function<B extends core.int>(
-    int x);
-typedef F5<T> = int Function(int y, {List<Function> x})
-    Function<B extends core.int>(int x);
-typedef F6<T> = Function Function([int x]) Function<B extends core.int>(int x);
-typedef F7<T> = Function Function(List<Function> x1)
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function(int x, [List<T> x1])
-    Function<B extends core.int>(int x);
-typedef F9<T> = List<Function> Function(int x1, {Function x})
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function([List<T> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(int y, [Function x])
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x2, [core.List<core.int> x3])
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function({int x}) Function<B extends core.int>(int x);
-typedef F14<T> = List<T> Function(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F15<T> = Function(int x1, [int x]) Function<B extends core.int>(int x);
-typedef F16<T> = Function([List<Function> x1]) Function<B extends core.int>(
-    int x);
-typedef F17<T> = Function({List<T> x}) Function<B extends core.int>(int x);
-typedef F18<T> = void Function(int y, {Function x})
-    Function<B extends core.int>(int x);
-typedef F19<T> = void Function(int x1, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F20<T> = Function Function<A>(List<A> x) Function<B extends core.int>(
-    int x);
-typedef F21<T> = Function<A>(int x) Function<B extends core.int>(int x);
-typedef F22<T> = void Function<A>(Function x) Function<B extends core.int>(
-    int x);
-
-Function f0(int x0, [core.List<core.int> x1]) => null;
-core.List<core.int> f1([List<Function> x0]) => null;
-f2(Function x0) => null;
-int f3<A>(core.List<core.int> x) => null;
-int Function(int x, [int x0]) f4<B extends core.int>(int x) => null;
-int Function(int y, {List<Function> x}) f5<B extends core.int>(int x) => null;
-Function Function([int x]) f6<B extends core.int>(int x) => null;
-Function Function(List<Function> x0) f7<B extends core.int>(int x) => null;
-Function Function(int x, [List<int> x0]) f8<B extends core.int>(int x) => null;
-List<Function> Function(int x0, {Function x}) f9<B extends core.int>(int x) =>
-    null;
-List<Function> Function([List<int> x]) f10<B extends core.int>(int x) => null;
-core.List<core.int> Function(int y, [Function x]) f11<B extends core.int>(
-        int x) =>
-    null;
-core.List<core.int> Function(int x0, [core.List<core.int> x1])
-    f12<B extends core.int>(int x) => null;
-List<int> Function({int x}) f13<B extends core.int>(int x) => null;
-List<int> Function(core.List<core.int> x) f14<B extends core.int>(int x) =>
-    null;
-Function(int x0, [int x]) f15<B extends core.int>(int x) => null;
-Function([List<Function> x0]) f16<B extends core.int>(int x) => null;
-Function({List<int> x}) f17<B extends core.int>(int x) => null;
-void Function(int y, {Function x}) f18<B extends core.int>(int x) => null;
-void Function(int x0, [List<int> x]) f19<B extends core.int>(int x) => null;
-Function Function<A>(List<A> x) f20<B extends core.int>(int x) => null;
-Function<A>(int x) f21<B extends core.int>(int x) => null;
-void Function<A>(Function x) f22<B extends core.int>(int x) => null;
-
-class U95<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x1, [core.List<core.int> x2]) x0;
-  core.List<core.int> Function([List<Function> x1]) x1;
-  Function(Function x0) x2;
-  int Function<A>(core.List<core.int> x) x3;
-  int Function(int x, [int x1]) Function<B extends core.int>(int x) x4;
-  int Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-      x5;
-  Function Function([int x]) Function<B extends core.int>(int x) x6;
-  Function Function(List<Function> x1) Function<B extends core.int>(int x) x7;
-  Function Function(int x, [List<T> x1]) Function<B extends core.int>(int x) x8;
-  List<Function> Function(int x1, {Function x}) Function<B extends core.int>(
-      int x) x9;
-  List<Function> Function([List<T> x]) Function<B extends core.int>(int x) x10;
-  core.List<core.int> Function(int y, [Function x])
-      Function<B extends core.int>(int x) x11;
-  core.List<core.int> Function(int x2, [core.List<core.int> x3])
-      Function<B extends core.int>(int x) x12;
-  List<T> Function({int x}) Function<B extends core.int>(int x) x13;
-  List<T> Function(core.List<core.int> x) Function<B extends core.int>(int x)
-      x14;
-  Function(int x1, [int x]) Function<B extends core.int>(int x) x15;
-  Function([List<Function> x1]) Function<B extends core.int>(int x) x16;
-  Function({List<T> x}) Function<B extends core.int>(int x) x17;
-  void Function(int y, {Function x}) Function<B extends core.int>(int x) x18;
-  void Function(int x1, [List<T> x]) Function<B extends core.int>(int x) x19;
-  Function Function<A>(List<A> x) Function<B extends core.int>(int x) x20;
-  Function<A>(int x) Function<B extends core.int>(int x) x21;
-  void Function<A>(Function x) Function<B extends core.int>(int x) x22;
-
-  U95({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, [core.List<core.int> x1]) => null;
-  core.List<core.int> m1([List<Function> x0]) => null;
-  m2(Function x0) => null;
-  int m3<A>(core.List<core.int> x) => null;
-  int Function(int x, [int x0]) m4<B extends core.int>(int x) => null;
-  int Function(int y, {List<Function> x}) m5<B extends core.int>(int x) => null;
-  Function Function([int x]) m6<B extends core.int>(int x) => null;
-  Function Function(List<Function> x0) m7<B extends core.int>(int x) => null;
-  Function Function(int x, [List<T> x0]) m8<B extends core.int>(int x) => null;
-  List<Function> Function(int x0, {Function x}) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function([List<T> x]) m10<B extends core.int>(int x) => null;
-  core.List<core.int> Function(int y, [Function x]) m11<B extends core.int>(
-          int x) =>
-      null;
-  core.List<core.int> Function(int x0, [core.List<core.int> x1])
-      m12<B extends core.int>(int x) => null;
-  List<T> Function({int x}) m13<B extends core.int>(int x) => null;
-  List<T> Function(core.List<core.int> x) m14<B extends core.int>(int x) =>
-      null;
-  Function(int x0, [int x]) m15<B extends core.int>(int x) => null;
-  Function([List<Function> x0]) m16<B extends core.int>(int x) => null;
-  Function({List<T> x}) m17<B extends core.int>(int x) => null;
-  void Function(int y, {Function x}) m18<B extends core.int>(int x) => null;
-  void Function(int x0, [List<T> x]) m19<B extends core.int>(int x) => null;
-  Function Function<A>(List<A> x) m20<B extends core.int>(int x) => null;
-  Function<A>(int x) m21<B extends core.int>(int x) => null;
-  void Function<A>(Function x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x1, [core.List<core.int> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [core.List<core.int> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x1, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function([List<Function> x1])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function([List<Function> x1]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function([List<Function> x1]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(Function x0)
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(Function x0) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(Function x0));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>(core.List<core.int> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>(core.List<core.int> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>(core.List<core.int> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function(int x, [int x1]) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function(int x, [int x1]) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function(int x, [int x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(int y, {List<Function> x}) Function<B extends core.int>(int x)
-        l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(int y, {List<Function> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function([int x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function([int x]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is Function Function([int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function(List<Function> x1) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function(List<Function> x1) Function<B extends core.int>(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function(List<Function> x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-        l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function(int x, [List<T> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function(int x, [List<T> x1]) Function<B extends core.int>(
-            int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function(int x, [List<T> x1]) Function<B extends core.int>(int x)
-          l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int x1, {Function x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, {Function x}) Function<B extends core.int>(
-        int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int x1, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function([List<T> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x]) Function<B extends core.int>(int x)
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function([List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function([List<T> x]) Function<B extends core.int>(int x)
-            l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function([List<T> x]) Function<B extends core.int>(int x)
-          l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(int y, [Function x]) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, [Function x])
-        Function<B extends core.int>(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(int y, [Function x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x2, [core.List<core.int> x3]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x2, [core.List<core.int> x3])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x2,
-            [core.List<core.int> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function({int x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function({int x}) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(
-        m13 is List<T> Function({int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function({int x}) Function<B extends core.int>(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function({int x}) Function<B extends core.int>(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x) Function<B extends core.int>(int x)
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function(core.List<core.int> x) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function(core.List<core.int> x) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int x1, [int x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int x1, [int x]) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is Function(int x1, [int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function([List<Function> x1]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function([List<Function> x1]) Function<B extends core.int>(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function([List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function({List<T> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function({List<T> x}) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function({List<T> x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function({List<T> x}) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function({List<T> x}) Function<B extends core.int>(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(int y, {Function x}) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int y, {Function x}) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int y, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int x1, [List<T> x]) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-            l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-          l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// Function Function<A>(List<A> x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    Function Function<A>(List<A> x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is Function Function<A>(List<A> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(int x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(int x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect
-        .isTrue(m21 is Function<A>(int x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(Function x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(Function x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U95().runTests();
-  new U95<int>(tIsInt: true).runTests();
-  new U95<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type96_test.dart b/tests/language/function_type/function_type96_test.dart
deleted file mode 100644
index aa49d961..0000000
--- a/tests/language/function_type/function_type96_test.dart
+++ /dev/null
@@ -1,912 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x, [core.List<core.int> x2]);
-typedef F1<T> = core.List<core.int> Function(int x1, [List<Function> x2]);
-typedef F2<T> = Function([Function x1]);
-typedef F3<T> = int Function<A>(List<T> x);
-typedef F4<T> = int Function({int x}) Function();
-typedef F5<T> = int Function(core.List<core.int> x) Function();
-typedef F6<T> = Function Function(int x0, [int x]) Function();
-typedef F7<T> = Function Function([List<Function> x1]) Function();
-typedef F8<T> = Function Function({List<T> x}) Function();
-typedef F9<T> = List<Function> Function(int y, {Function x}) Function();
-typedef F10<T> = List<Function> Function(int x0, [List<T> x]) Function();
-typedef F11<T> = core.List<core.int> Function(Function x0) Function();
-typedef F12<T> = core.List<core.int> Function(int x, [core.List<core.int> x2])
-    Function();
-typedef F13<T> = List<T> Function(int x0, {int x}) Function();
-typedef F14<T> = List<T> Function([core.List<core.int> x]) Function();
-typedef F15<T> = Function(int y, [int x]) Function();
-typedef F16<T> = Function(int x1, [List<Function> x2]) Function();
-typedef F17<T> = Function(int x0, {List<T> x}) Function();
-typedef F18<T> = void Function(List<Function> x) Function();
-typedef F19<T> = void Function(int y, [List<T> x]) Function();
-typedef F20<T> = List<Function> Function<A>(int x) Function();
-typedef F21<T> = Function<A>(Function x) Function();
-typedef F22<T> = void Function<A>(List<Function> x) Function();
-
-Function f0(int x, [core.List<core.int> x0]) => null;
-core.List<core.int> f1(int x0, [List<Function> x1]) => null;
-f2([Function x0]) => null;
-int f3<A>(List<int> x) => null;
-int Function({int x}) f4() => null;
-int Function(core.List<core.int> x) f5() => null;
-Function Function(int x0, [int x]) f6() => null;
-Function Function([List<Function> x0]) f7() => null;
-Function Function({List<int> x}) f8() => null;
-List<Function> Function(int y, {Function x}) f9() => null;
-List<Function> Function(int x0, [List<int> x]) f10() => null;
-core.List<core.int> Function(Function x0) f11() => null;
-core.List<core.int> Function(int x, [core.List<core.int> x0]) f12() => null;
-List<int> Function(int x0, {int x}) f13() => null;
-List<int> Function([core.List<core.int> x]) f14() => null;
-Function(int y, [int x]) f15() => null;
-Function(int x0, [List<Function> x1]) f16() => null;
-Function(int x0, {List<int> x}) f17() => null;
-void Function(List<Function> x) f18() => null;
-void Function(int y, [List<int> x]) f19() => null;
-List<Function> Function<A>(int x) f20() => null;
-Function<A>(Function x) f21() => null;
-void Function<A>(List<Function> x) f22() => null;
-
-class U96<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x, [core.List<core.int> x2]) x0;
-  core.List<core.int> Function(int x1, [List<Function> x2]) x1;
-  Function([Function x1]) x2;
-  int Function<A>(List<T> x) x3;
-  int Function({int x}) Function() x4;
-  int Function(core.List<core.int> x) Function() x5;
-  Function Function(int x0, [int x]) Function() x6;
-  Function Function([List<Function> x1]) Function() x7;
-  Function Function({List<T> x}) Function() x8;
-  List<Function> Function(int y, {Function x}) Function() x9;
-  List<Function> Function(int x0, [List<T> x]) Function() x10;
-  core.List<core.int> Function(Function x0) Function() x11;
-  core.List<core.int> Function(int x, [core.List<core.int> x2]) Function() x12;
-  List<T> Function(int x0, {int x}) Function() x13;
-  List<T> Function([core.List<core.int> x]) Function() x14;
-  Function(int y, [int x]) Function() x15;
-  Function(int x1, [List<Function> x2]) Function() x16;
-  Function(int x0, {List<T> x}) Function() x17;
-  void Function(List<Function> x) Function() x18;
-  void Function(int y, [List<T> x]) Function() x19;
-  List<Function> Function<A>(int x) Function() x20;
-  Function<A>(Function x) Function() x21;
-  void Function<A>(List<Function> x) Function() x22;
-
-  U96({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x, [core.List<core.int> x0]) => null;
-  core.List<core.int> m1(int x0, [List<Function> x1]) => null;
-  m2([Function x0]) => null;
-  int m3<A>(List<T> x) => null;
-  int Function({int x}) m4() => null;
-  int Function(core.List<core.int> x) m5() => null;
-  Function Function(int x0, [int x]) m6() => null;
-  Function Function([List<Function> x0]) m7() => null;
-  Function Function({List<T> x}) m8() => null;
-  List<Function> Function(int y, {Function x}) m9() => null;
-  List<Function> Function(int x0, [List<T> x]) m10() => null;
-  core.List<core.int> Function(Function x0) m11() => null;
-  core.List<core.int> Function(int x, [core.List<core.int> x0]) m12() => null;
-  List<T> Function(int x0, {int x}) m13() => null;
-  List<T> Function([core.List<core.int> x]) m14() => null;
-  Function(int y, [int x]) m15() => null;
-  Function(int x0, [List<Function> x1]) m16() => null;
-  Function(int x0, {List<T> x}) m17() => null;
-  void Function(List<Function> x) m18() => null;
-  void Function(int y, [List<T> x]) m19() => null;
-  List<Function> Function<A>(int x) m20() => null;
-  Function<A>(Function x) m21() => null;
-  void Function<A>(List<Function> x) m22() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x, [core.List<core.int> x2])
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x, [core.List<core.int> x2]) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x, [core.List<core.int> x2]));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x1, [List<Function> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x1, [List<Function> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(
-        m1 is core.List<core.int> Function(int x1, [List<Function> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function([Function x1])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function([Function x1]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function([Function x1]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>(List<T> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>(List<T> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>(List<T> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-    if (!tIsBool) {
-      Expect.isTrue(f3 is F3<int>);
-      Expect.isFalse(f3 is F3<bool>);
-      Expect.isTrue(confuse(f3) is F3<int>);
-      Expect.isFalse(confuse(f3) is F3<bool>);
-      Expect.equals(tIsDynamic, m3 is F3<bool>);
-      Expect.equals(tIsDynamic, confuse(m3) is F3<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          x3 = confuse(f3);
-        });
-        int Function<A>(List<T> x) l3;
-        Expect.throws(() {
-          l3 = (f3 as dynamic);
-        });
-        Expect.throws(() {
-          l3 = confuse(f3);
-        });
-      }
-      int Function<A>(List<T> x) l3 = m3;
-      // In checked mode, verifies the type.
-      x3 = m3;
-      x3 = confuse(m3);
-    }
-  }
-
-  /// int Function({int x}) Function()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function({int x}) Function() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function({int x}) Function());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(core.List<core.int> x) Function()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x) Function() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(core.List<core.int> x) Function());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x0, [int x]) Function()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x0, [int x]) Function() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function(int x0, [int x]) Function());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([List<Function> x1]) Function()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x1]) Function() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x1]) Function());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<T> x}) Function()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<T> x}) Function() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({List<T> x}) Function());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function({List<T> x}) Function() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function({List<T> x}) Function() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, {Function x}) Function()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {Function x}) Function() l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect
-        .isTrue(m9 is List<Function> Function(int y, {Function x}) Function());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x0, [List<T> x]) Function()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x0, [List<T> x]) Function() l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect
-        .isTrue(m10 is List<Function> Function(int x0, [List<T> x]) Function());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(int x0, [List<T> x]) Function() l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(int x0, [List<T> x]) Function() l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(Function x0) Function()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x0) Function() l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(Function x0) Function());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [core.List<core.int> x2]) Function()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [core.List<core.int> x2]) Function()
-        l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x,
-            [core.List<core.int> x2])
-        Function());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x0, {int x}) Function()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x0, {int x}) Function() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x0, {int x}) Function());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x0, {int x}) Function() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x0, {int x}) Function() l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x]) Function()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x]) Function() l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([core.List<core.int> x]) Function());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([core.List<core.int> x]) Function() l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([core.List<core.int> x]) Function() l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int y, [int x]) Function()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int y, [int x]) Function() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int y, [int x]) Function());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int x1, [List<Function> x2]) Function()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x1, [List<Function> x2]) Function() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x1, [List<Function> x2]) Function());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x0, {List<T> x}) Function()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x0, {List<T> x}) Function() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x0, {List<T> x}) Function());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x0, {List<T> x}) Function() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x0, {List<T> x}) Function() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(List<Function> x) Function()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x) Function() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(List<Function> x) Function());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<T> x]) Function()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<T> x]) Function() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [List<T> x]) Function());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int y, [List<T> x]) Function() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int y, [List<T> x]) Function() l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// List<Function> Function<A>(int x) Function()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(int x) Function() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is List<Function> Function<A>(int x) Function());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(Function x) Function()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(Function x) Function() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is Function<A>(Function x) Function());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(List<Function> x) Function()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(List<Function> x) Function() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(List<Function> x) Function());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U96().runTests();
-  new U96<int>(tIsInt: true).runTests();
-  new U96<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type97_test.dart b/tests/language/function_type/function_type97_test.dart
deleted file mode 100644
index 7f0b219..0000000
--- a/tests/language/function_type/function_type97_test.dart
+++ /dev/null
@@ -1,889 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function({core.List<core.int> x});
-typedef F1<T> = core.List<core.int> Function(int x, [List<Function> x2]);
-typedef F2<T> = Function(int x1, [Function x2]);
-typedef F3<T> = int Function<A>();
-typedef F4<T> = int Function({int x}) Function(int x);
-typedef F5<T> = int Function(core.List<core.int> x) Function(int x);
-typedef F6<T> = Function Function(int x1, [int x]) Function(int x);
-typedef F7<T> = Function Function([List<Function> x1]) Function(int x);
-typedef F8<T> = Function Function({List<T> x}) Function(int x);
-typedef F9<T> = List<Function> Function(int y, {Function x}) Function(int x);
-typedef F10<T> = List<Function> Function(int x1, [List<T> x]) Function(int x);
-typedef F11<T> = core.List<core.int> Function(Function x1) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x, [core.List<core.int> x1])
-    Function(int x);
-typedef F13<T> = List<T> Function(int x1, {int x}) Function(int x);
-typedef F14<T> = List<T> Function([core.List<core.int> x]) Function(int x);
-typedef F15<T> = Function(int y, [int x]) Function(int x);
-typedef F16<T> = Function(int x2, [List<Function> x3]) Function(int x);
-typedef F17<T> = Function(int x1, {List<T> x}) Function(int x);
-typedef F18<T> = void Function(List<Function> x) Function(int x);
-typedef F19<T> = void Function(int y, [List<T> x]) Function(int x);
-typedef F20<T> = List<Function> Function<A>(int x) Function(int x);
-typedef F21<T> = Function<A>(Function x) Function(int x);
-typedef F22<T> = void Function<A>(List<Function> x) Function(int x);
-
-Function f0({core.List<core.int> x}) => null;
-core.List<core.int> f1(int x, [List<Function> x0]) => null;
-f2(int x0, [Function x1]) => null;
-int f3<A>() => null;
-int Function({int x}) f4(int x) => null;
-int Function(core.List<core.int> x) f5(int x) => null;
-Function Function(int x0, [int x]) f6(int x) => null;
-Function Function([List<Function> x0]) f7(int x) => null;
-Function Function({List<int> x}) f8(int x) => null;
-List<Function> Function(int y, {Function x}) f9(int x) => null;
-List<Function> Function(int x0, [List<int> x]) f10(int x) => null;
-core.List<core.int> Function(Function x0) f11(int x) => null;
-core.List<core.int> Function(int x, [core.List<core.int> x0]) f12(int x) =>
-    null;
-List<int> Function(int x0, {int x}) f13(int x) => null;
-List<int> Function([core.List<core.int> x]) f14(int x) => null;
-Function(int y, [int x]) f15(int x) => null;
-Function(int x0, [List<Function> x1]) f16(int x) => null;
-Function(int x0, {List<int> x}) f17(int x) => null;
-void Function(List<Function> x) f18(int x) => null;
-void Function(int y, [List<int> x]) f19(int x) => null;
-List<Function> Function<A>(int x) f20(int x) => null;
-Function<A>(Function x) f21(int x) => null;
-void Function<A>(List<Function> x) f22(int x) => null;
-
-class U97<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function({core.List<core.int> x}) x0;
-  core.List<core.int> Function(int x, [List<Function> x2]) x1;
-  Function(int x1, [Function x2]) x2;
-  int Function<A>() x3;
-  int Function({int x}) Function(int x) x4;
-  int Function(core.List<core.int> x) Function(int x) x5;
-  Function Function(int x1, [int x]) Function(int x) x6;
-  Function Function([List<Function> x1]) Function(int x) x7;
-  Function Function({List<T> x}) Function(int x) x8;
-  List<Function> Function(int y, {Function x}) Function(int x) x9;
-  List<Function> Function(int x1, [List<T> x]) Function(int x) x10;
-  core.List<core.int> Function(Function x1) Function(int x) x11;
-  core.List<core.int> Function(int x, [core.List<core.int> x1]) Function(int x)
-      x12;
-  List<T> Function(int x1, {int x}) Function(int x) x13;
-  List<T> Function([core.List<core.int> x]) Function(int x) x14;
-  Function(int y, [int x]) Function(int x) x15;
-  Function(int x2, [List<Function> x3]) Function(int x) x16;
-  Function(int x1, {List<T> x}) Function(int x) x17;
-  void Function(List<Function> x) Function(int x) x18;
-  void Function(int y, [List<T> x]) Function(int x) x19;
-  List<Function> Function<A>(int x) Function(int x) x20;
-  Function<A>(Function x) Function(int x) x21;
-  void Function<A>(List<Function> x) Function(int x) x22;
-
-  U97({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0({core.List<core.int> x}) => null;
-  core.List<core.int> m1(int x, [List<Function> x0]) => null;
-  m2(int x0, [Function x1]) => null;
-  int m3<A>() => null;
-  int Function({int x}) m4(int x) => null;
-  int Function(core.List<core.int> x) m5(int x) => null;
-  Function Function(int x0, [int x]) m6(int x) => null;
-  Function Function([List<Function> x0]) m7(int x) => null;
-  Function Function({List<T> x}) m8(int x) => null;
-  List<Function> Function(int y, {Function x}) m9(int x) => null;
-  List<Function> Function(int x0, [List<T> x]) m10(int x) => null;
-  core.List<core.int> Function(Function x0) m11(int x) => null;
-  core.List<core.int> Function(int x, [core.List<core.int> x0]) m12(int x) =>
-      null;
-  List<T> Function(int x0, {int x}) m13(int x) => null;
-  List<T> Function([core.List<core.int> x]) m14(int x) => null;
-  Function(int y, [int x]) m15(int x) => null;
-  Function(int x0, [List<Function> x1]) m16(int x) => null;
-  Function(int x0, {List<T> x}) m17(int x) => null;
-  void Function(List<Function> x) m18(int x) => null;
-  void Function(int y, [List<T> x]) m19(int x) => null;
-  List<Function> Function<A>(int x) m20(int x) => null;
-  Function<A>(Function x) m21(int x) => null;
-  void Function<A>(List<Function> x) m22(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function({core.List<core.int> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function({core.List<core.int> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function({core.List<core.int> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x, [List<Function> x2])
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [List<Function> x2]) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is core.List<core.int> Function(int x, [List<Function> x2]));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x1, [Function x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x1, [Function x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x1, [Function x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>()
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>() l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>());
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function({int x}) Function(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function({int x}) Function(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function({int x}) Function(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(core.List<core.int> x) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(core.List<core.int> x) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x1, [int x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [int x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function(int x1, [int x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([List<Function> x1]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x1]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x1]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<T> x}) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<T> x}) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function({List<T> x}) Function(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function({List<T> x}) Function(int x) l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, {Function x}) Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {Function x}) Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(
-        m9 is List<Function> Function(int y, {Function x}) Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [List<T> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<T> x]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(
-        m10 is List<Function> Function(int x1, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(int x1, [List<T> x]) Function(int x) l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(int x1, [List<T> x]) Function(int x) l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(Function x1) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x1) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(
-        m11 is core.List<core.int> Function(Function x1) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [core.List<core.int> x1]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [core.List<core.int> x1]) Function(
-        int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x,
-            [core.List<core.int> x1])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1, {int x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {int x}) Function(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1, {int x}) Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1, {int x}) Function(int x) l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1, {int x}) Function(int x) l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(
-        m14 is List<T> Function([core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([core.List<core.int> x]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([core.List<core.int> x]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int y, [int x]) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int y, [int x]) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(m15 is Function(int y, [int x]) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int x2, [List<Function> x3]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [List<Function> x3]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x2, [List<Function> x3]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {List<T> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {List<T> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, {List<T> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x1, {List<T> x}) Function(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x1, {List<T> x}) Function(int x) l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(List<Function> x) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<T> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<T> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [List<T> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int y, [List<T> x]) Function(int x) l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int y, [List<T> x]) Function(int x) l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// List<Function> Function<A>(int x) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(int x) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is List<Function> Function<A>(int x) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(Function x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(Function x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is Function<A>(Function x) Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(List<Function> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(List<Function> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(List<Function> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U97().runTests();
-  new U97<int>(tIsInt: true).runTests();
-  new U97<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type98_test.dart b/tests/language/function_type/function_type98_test.dart
deleted file mode 100644
index 74318d0..0000000
--- a/tests/language/function_type/function_type98_test.dart
+++ /dev/null
@@ -1,927 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int x0, {core.List<core.int> x});
-typedef F1<T> = core.List<core.int> Function({List<Function> x});
-typedef F2<T> = Function(int x, [Function x2]);
-typedef F3<T> = int Function<A>(A x);
-typedef F4<T> = int Function({int x}) Function<B extends core.int>();
-typedef F5<T> = int Function(core.List<core.int> x)
-    Function<B extends core.int>();
-typedef F6<T> = Function Function(int x1, [int x])
-    Function<B extends core.int>();
-typedef F7<T> = Function Function([List<Function> x1])
-    Function<B extends core.int>();
-typedef F8<T> = Function Function({List<T> x}) Function<B extends core.int>();
-typedef F9<T> = List<Function> Function(int y, {Function x})
-    Function<B extends core.int>();
-typedef F10<T> = List<Function> Function(int x1, [List<T> x])
-    Function<B extends core.int>();
-typedef F11<T> = core.List<core.int> Function(Function x1)
-    Function<B extends core.int>();
-typedef F12<T> = core.List<core.int> Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>();
-typedef F13<T> = List<T> Function(int x1, {int x})
-    Function<B extends core.int>();
-typedef F14<T> = List<T> Function([core.List<core.int> x])
-    Function<B extends core.int>();
-typedef F15<T> = Function(int y, [int x]) Function<B extends core.int>();
-typedef F16<T> = Function(int x2, [List<Function> x3])
-    Function<B extends core.int>();
-typedef F17<T> = Function(int x1, {List<T> x}) Function<B extends core.int>();
-typedef F18<T> = void Function(List<Function> x) Function<B extends core.int>();
-typedef F19<T> = void Function(int y, [List<T> x])
-    Function<B extends core.int>();
-typedef F20<T> = List<Function> Function<A>(int x)
-    Function<B extends core.int>();
-typedef F21<T> = Function<A>(Function x) Function<B extends core.int>();
-typedef F22<T> = void Function<A>(List<Function> x)
-    Function<B extends core.int>();
-
-Function f0(int x0, {core.List<core.int> x}) => null;
-core.List<core.int> f1({List<Function> x}) => null;
-f2(int x, [Function x0]) => null;
-int f3<A>(A x) => null;
-int Function({int x}) f4<B extends core.int>() => null;
-int Function(core.List<core.int> x) f5<B extends core.int>() => null;
-Function Function(int x0, [int x]) f6<B extends core.int>() => null;
-Function Function([List<Function> x0]) f7<B extends core.int>() => null;
-Function Function({List<int> x}) f8<B extends core.int>() => null;
-List<Function> Function(int y, {Function x}) f9<B extends core.int>() => null;
-List<Function> Function(int x0, [List<int> x]) f10<B extends core.int>() =>
-    null;
-core.List<core.int> Function(Function x0) f11<B extends core.int>() => null;
-core.List<core.int> Function(int x, [core.List<core.int> x0])
-    f12<B extends core.int>() => null;
-List<int> Function(int x0, {int x}) f13<B extends core.int>() => null;
-List<int> Function([core.List<core.int> x]) f14<B extends core.int>() => null;
-Function(int y, [int x]) f15<B extends core.int>() => null;
-Function(int x0, [List<Function> x1]) f16<B extends core.int>() => null;
-Function(int x0, {List<int> x}) f17<B extends core.int>() => null;
-void Function(List<Function> x) f18<B extends core.int>() => null;
-void Function(int y, [List<int> x]) f19<B extends core.int>() => null;
-List<Function> Function<A>(int x) f20<B extends core.int>() => null;
-Function<A>(Function x) f21<B extends core.int>() => null;
-void Function<A>(List<Function> x) f22<B extends core.int>() => null;
-
-class U98<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int x0, {core.List<core.int> x}) x0;
-  core.List<core.int> Function({List<Function> x}) x1;
-  Function(int x, [Function x2]) x2;
-  int Function<A>(A x) x3;
-  int Function({int x}) Function<B extends core.int>() x4;
-  int Function(core.List<core.int> x) Function<B extends core.int>() x5;
-  Function Function(int x1, [int x]) Function<B extends core.int>() x6;
-  Function Function([List<Function> x1]) Function<B extends core.int>() x7;
-  Function Function({List<T> x}) Function<B extends core.int>() x8;
-  List<Function> Function(int y, {Function x}) Function<B extends core.int>()
-      x9;
-  List<Function> Function(int x1, [List<T> x]) Function<B extends core.int>()
-      x10;
-  core.List<core.int> Function(Function x1) Function<B extends core.int>() x11;
-  core.List<core.int> Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>() x12;
-  List<T> Function(int x1, {int x}) Function<B extends core.int>() x13;
-  List<T> Function([core.List<core.int> x]) Function<B extends core.int>() x14;
-  Function(int y, [int x]) Function<B extends core.int>() x15;
-  Function(int x2, [List<Function> x3]) Function<B extends core.int>() x16;
-  Function(int x1, {List<T> x}) Function<B extends core.int>() x17;
-  void Function(List<Function> x) Function<B extends core.int>() x18;
-  void Function(int y, [List<T> x]) Function<B extends core.int>() x19;
-  List<Function> Function<A>(int x) Function<B extends core.int>() x20;
-  Function<A>(Function x) Function<B extends core.int>() x21;
-  void Function<A>(List<Function> x) Function<B extends core.int>() x22;
-
-  U98({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int x0, {core.List<core.int> x}) => null;
-  core.List<core.int> m1({List<Function> x}) => null;
-  m2(int x, [Function x0]) => null;
-  int m3<A>(A x) => null;
-  int Function({int x}) m4<B extends core.int>() => null;
-  int Function(core.List<core.int> x) m5<B extends core.int>() => null;
-  Function Function(int x0, [int x]) m6<B extends core.int>() => null;
-  Function Function([List<Function> x0]) m7<B extends core.int>() => null;
-  Function Function({List<T> x}) m8<B extends core.int>() => null;
-  List<Function> Function(int y, {Function x}) m9<B extends core.int>() => null;
-  List<Function> Function(int x0, [List<T> x]) m10<B extends core.int>() =>
-      null;
-  core.List<core.int> Function(Function x0) m11<B extends core.int>() => null;
-  core.List<core.int> Function(int x, [core.List<core.int> x0])
-      m12<B extends core.int>() => null;
-  List<T> Function(int x0, {int x}) m13<B extends core.int>() => null;
-  List<T> Function([core.List<core.int> x]) m14<B extends core.int>() => null;
-  Function(int y, [int x]) m15<B extends core.int>() => null;
-  Function(int x0, [List<Function> x1]) m16<B extends core.int>() => null;
-  Function(int x0, {List<T> x}) m17<B extends core.int>() => null;
-  void Function(List<Function> x) m18<B extends core.int>() => null;
-  void Function(int y, [List<T> x]) m19<B extends core.int>() => null;
-  List<Function> Function<A>(int x) m20<B extends core.int>() => null;
-  Function<A>(Function x) m21<B extends core.int>() => null;
-  void Function<A>(List<Function> x) m22<B extends core.int>() => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int x0, {core.List<core.int> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {core.List<core.int> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int x0, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function({List<Function> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({List<Function> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is core.List<core.int> Function({List<Function> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function(int x, [Function x2])
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function(int x, [Function x2]) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function(int x, [Function x2]));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>(A x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>(A x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>(A x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function({int x}) Function<B extends core.int>()
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function({int x}) Function<B extends core.int>() l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is int Function({int x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(core.List<core.int> x) Function<B extends core.int>()
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x) Function<B extends core.int>() l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(core.List<core.int> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x1, [int x]) Function<B extends core.int>()
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [int x]) Function<B extends core.int>() l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function(int x1, [int x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([List<Function> x1]) Function<B extends core.int>()
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x1]) Function<B extends core.int>() l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<T> x}) Function<B extends core.int>()
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<T> x}) Function<B extends core.int>() l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(
-        m8 is Function Function({List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function({List<T> x}) Function<B extends core.int>() l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function({List<T> x}) Function<B extends core.int>() l8 = m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, {Function x}) Function<B extends core.int>()
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {Function x}) Function<B extends core.int>()
-        l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, {Function x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [List<T> x]) Function<B extends core.int>()
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<T> x]) Function<B extends core.int>()
-        l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(int x1, [List<T> x])
-            Function<B extends core.int>() l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(int x1, [List<T> x])
-          Function<B extends core.int>() l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(Function x1) Function<B extends core.int>()
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x1) Function<B extends core.int>()
-        l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(Function x1)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [core.List<core.int> x1]) Function<B extends core.int>()
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>() l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x,
-            [core.List<core.int> x1])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1, {int x}) Function<B extends core.int>()
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {int x}) Function<B extends core.int>() l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1, {int x})
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1, {int x}) Function<B extends core.int>() l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1, {int x}) Function<B extends core.int>() l13 =
-          m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x]) Function<B extends core.int>()
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x]) Function<B extends core.int>()
-        l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([core.List<core.int> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([core.List<core.int> x]) Function<B extends core.int>()
-            l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([core.List<core.int> x]) Function<B extends core.int>()
-          l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int y, [int x]) Function<B extends core.int>()
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int y, [int x]) Function<B extends core.int>() l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect
-        .isTrue(m15 is Function(int y, [int x]) Function<B extends core.int>());
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int x2, [List<Function> x3]) Function<B extends core.int>()
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [List<Function> x3]) Function<B extends core.int>() l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x2, [List<Function> x3])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {List<T> x}) Function<B extends core.int>()
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {List<T> x}) Function<B extends core.int>() l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(
-        m17 is Function(int x1, {List<T> x}) Function<B extends core.int>());
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x1, {List<T> x}) Function<B extends core.int>() l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x1, {List<T> x}) Function<B extends core.int>() l17 = m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(List<Function> x) Function<B extends core.int>()
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x) Function<B extends core.int>() l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(
-        m18 is void Function(List<Function> x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<T> x]) Function<B extends core.int>()
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<T> x]) Function<B extends core.int>() l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [List<T> x])
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int y, [List<T> x]) Function<B extends core.int>() l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int y, [List<T> x]) Function<B extends core.int>() l19 =
-          m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// List<Function> Function<A>(int x) Function<B extends core.int>()
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(int x) Function<B extends core.int>() l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is List<Function> Function<A>(int x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(Function x) Function<B extends core.int>()
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(Function x) Function<B extends core.int>() l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect
-        .isTrue(m21 is Function<A>(Function x) Function<B extends core.int>());
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(List<Function> x) Function<B extends core.int>()
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(List<Function> x) Function<B extends core.int>() l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(List<Function> x)
-        Function<B extends core.int>());
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U98().runTests();
-  new U98<int>(tIsInt: true).runTests();
-  new U98<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type99_test.dart b/tests/language/function_type/function_type99_test.dart
deleted file mode 100644
index 722efd7..0000000
--- a/tests/language/function_type/function_type99_test.dart
+++ /dev/null
@@ -1,946 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = Function Function(int y, {core.List<core.int> x});
-typedef F1<T> = core.List<core.int> Function(int x0, {List<Function> x});
-typedef F2<T> = Function({Function x});
-typedef F3<T> = int Function<A>(List<A> x);
-typedef F4<T> = int Function({int x}) Function<B extends core.int>(int x);
-typedef F5<T> = int Function(core.List<core.int> x)
-    Function<B extends core.int>(int x);
-typedef F6<T> = Function Function(int x1, [int x]) Function<B extends core.int>(
-    int x);
-typedef F7<T> = Function Function([List<Function> x1])
-    Function<B extends core.int>(int x);
-typedef F8<T> = Function Function({List<T> x}) Function<B extends core.int>(
-    int x);
-typedef F9<T> = List<Function> Function(int y, {Function x})
-    Function<B extends core.int>(int x);
-typedef F10<T> = List<Function> Function(int x1, [List<T> x])
-    Function<B extends core.int>(int x);
-typedef F11<T> = core.List<core.int> Function(Function x1)
-    Function<B extends core.int>(int x);
-typedef F12<T> = core.List<core.int> Function(int x, [core.List<core.int> x1])
-    Function<B extends core.int>(int x);
-typedef F13<T> = List<T> Function(int x1, {int x}) Function<B extends core.int>(
-    int x);
-typedef F14<T> = List<T> Function([core.List<core.int> x])
-    Function<B extends core.int>(int x);
-typedef F15<T> = Function(int y, [int x]) Function<B extends core.int>(int x);
-typedef F16<T> = Function(int x2, [List<Function> x3])
-    Function<B extends core.int>(int x);
-typedef F17<T> = Function(int x1, {List<T> x}) Function<B extends core.int>(
-    int x);
-typedef F18<T> = void Function(List<Function> x) Function<B extends core.int>(
-    int x);
-typedef F19<T> = void Function(int y, [List<T> x]) Function<B extends core.int>(
-    int x);
-typedef F20<T> = List<Function> Function<A>(int x) Function<B extends core.int>(
-    int x);
-typedef F21<T> = Function<A>(Function x) Function<B extends core.int>(int x);
-typedef F22<T> = void Function<A>(List<Function> x)
-    Function<B extends core.int>(int x);
-
-Function f0(int y, {core.List<core.int> x}) => null;
-core.List<core.int> f1(int x0, {List<Function> x}) => null;
-f2({Function x}) => null;
-int f3<A>(List<A> x) => null;
-int Function({int x}) f4<B extends core.int>(int x) => null;
-int Function(core.List<core.int> x) f5<B extends core.int>(int x) => null;
-Function Function(int x0, [int x]) f6<B extends core.int>(int x) => null;
-Function Function([List<Function> x0]) f7<B extends core.int>(int x) => null;
-Function Function({List<int> x}) f8<B extends core.int>(int x) => null;
-List<Function> Function(int y, {Function x}) f9<B extends core.int>(int x) =>
-    null;
-List<Function> Function(int x0, [List<int> x]) f10<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(Function x0) f11<B extends core.int>(int x) =>
-    null;
-core.List<core.int> Function(int x, [core.List<core.int> x0])
-    f12<B extends core.int>(int x) => null;
-List<int> Function(int x0, {int x}) f13<B extends core.int>(int x) => null;
-List<int> Function([core.List<core.int> x]) f14<B extends core.int>(int x) =>
-    null;
-Function(int y, [int x]) f15<B extends core.int>(int x) => null;
-Function(int x0, [List<Function> x1]) f16<B extends core.int>(int x) => null;
-Function(int x0, {List<int> x}) f17<B extends core.int>(int x) => null;
-void Function(List<Function> x) f18<B extends core.int>(int x) => null;
-void Function(int y, [List<int> x]) f19<B extends core.int>(int x) => null;
-List<Function> Function<A>(int x) f20<B extends core.int>(int x) => null;
-Function<A>(Function x) f21<B extends core.int>(int x) => null;
-void Function<A>(List<Function> x) f22<B extends core.int>(int x) => null;
-
-class U99<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  Function Function(int y, {core.List<core.int> x}) x0;
-  core.List<core.int> Function(int x0, {List<Function> x}) x1;
-  Function({Function x}) x2;
-  int Function<A>(List<A> x) x3;
-  int Function({int x}) Function<B extends core.int>(int x) x4;
-  int Function(core.List<core.int> x) Function<B extends core.int>(int x) x5;
-  Function Function(int x1, [int x]) Function<B extends core.int>(int x) x6;
-  Function Function([List<Function> x1]) Function<B extends core.int>(int x) x7;
-  Function Function({List<T> x}) Function<B extends core.int>(int x) x8;
-  List<Function> Function(int y, {Function x}) Function<B extends core.int>(
-      int x) x9;
-  List<Function> Function(int x1, [List<T> x]) Function<B extends core.int>(
-      int x) x10;
-  core.List<core.int> Function(Function x1) Function<B extends core.int>(int x)
-      x11;
-  core.List<core.int> Function(int x, [core.List<core.int> x1])
-      Function<B extends core.int>(int x) x12;
-  List<T> Function(int x1, {int x}) Function<B extends core.int>(int x) x13;
-  List<T> Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-      x14;
-  Function(int y, [int x]) Function<B extends core.int>(int x) x15;
-  Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x) x16;
-  Function(int x1, {List<T> x}) Function<B extends core.int>(int x) x17;
-  void Function(List<Function> x) Function<B extends core.int>(int x) x18;
-  void Function(int y, [List<T> x]) Function<B extends core.int>(int x) x19;
-  List<Function> Function<A>(int x) Function<B extends core.int>(int x) x20;
-  Function<A>(Function x) Function<B extends core.int>(int x) x21;
-  void Function<A>(List<Function> x) Function<B extends core.int>(int x) x22;
-
-  U99({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  Function m0(int y, {core.List<core.int> x}) => null;
-  core.List<core.int> m1(int x0, {List<Function> x}) => null;
-  m2({Function x}) => null;
-  int m3<A>(List<A> x) => null;
-  int Function({int x}) m4<B extends core.int>(int x) => null;
-  int Function(core.List<core.int> x) m5<B extends core.int>(int x) => null;
-  Function Function(int x0, [int x]) m6<B extends core.int>(int x) => null;
-  Function Function([List<Function> x0]) m7<B extends core.int>(int x) => null;
-  Function Function({List<T> x}) m8<B extends core.int>(int x) => null;
-  List<Function> Function(int y, {Function x}) m9<B extends core.int>(int x) =>
-      null;
-  List<Function> Function(int x0, [List<T> x]) m10<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(Function x0) m11<B extends core.int>(int x) =>
-      null;
-  core.List<core.int> Function(int x, [core.List<core.int> x0])
-      m12<B extends core.int>(int x) => null;
-  List<T> Function(int x0, {int x}) m13<B extends core.int>(int x) => null;
-  List<T> Function([core.List<core.int> x]) m14<B extends core.int>(int x) =>
-      null;
-  Function(int y, [int x]) m15<B extends core.int>(int x) => null;
-  Function(int x0, [List<Function> x1]) m16<B extends core.int>(int x) => null;
-  Function(int x0, {List<T> x}) m17<B extends core.int>(int x) => null;
-  void Function(List<Function> x) m18<B extends core.int>(int x) => null;
-  void Function(int y, [List<T> x]) m19<B extends core.int>(int x) => null;
-  List<Function> Function<A>(int x) m20<B extends core.int>(int x) => null;
-  Function<A>(Function x) m21<B extends core.int>(int x) => null;
-  void Function<A>(List<Function> x) m22<B extends core.int>(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-  }
-
-  /// Function Function(int y, {core.List<core.int> x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    Function Function(int y, {core.List<core.int> x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is Function Function(int y, {core.List<core.int> x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// core.List<core.int> Function(int x0, {List<Function> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x0, {List<Function> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect
-        .isTrue(m1 is core.List<core.int> Function(int x0, {List<Function> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-  }
-
-  /// Function({Function x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    Function({Function x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is Function({Function x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// int Function<A>(List<A> x)
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    int Function<A>(List<A> x) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is int Function<A>(List<A> x));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// int Function({int x}) Function<B extends core.int>(int x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    int Function({int x}) Function<B extends core.int>(int x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(
-        m4 is int Function({int x}) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(core.List<core.int> x) Function<B extends core.int>(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(core.List<core.int> x) Function<B extends core.int>(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(core.List<core.int> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// Function Function(int x1, [int x]) Function<B extends core.int>(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    Function Function(int x1, [int x]) Function<B extends core.int>(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(m6 is Function Function(int x1, [int x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([List<Function> x1]) Function<B extends core.int>(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([List<Function> x1]) Function<B extends core.int>(int x)
-        l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([List<Function> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<T> x}) Function<B extends core.int>(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<T> x}) Function<B extends core.int>(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-    if (!tIsBool) {
-      Expect.isTrue(f8 is F8<int>);
-      Expect.isFalse(f8 is F8<bool>);
-      Expect.isTrue(confuse(f8) is F8<int>);
-      Expect.isFalse(confuse(f8) is F8<bool>);
-      Expect.equals(tIsDynamic, m8 is F8<bool>);
-      Expect.equals(tIsDynamic, confuse(m8) is F8<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          x8 = confuse(f8);
-        });
-        Function Function({List<T> x}) Function<B extends core.int>(int x) l8;
-        Expect.throws(() {
-          l8 = (f8 as dynamic);
-        });
-        Expect.throws(() {
-          l8 = confuse(f8);
-        });
-      }
-      Function Function({List<T> x}) Function<B extends core.int>(int x) l8 =
-          m8;
-      // In checked mode, verifies the type.
-      x8 = m8;
-      x8 = confuse(m8);
-    }
-  }
-
-  /// List<Function> Function(int y, {Function x}) Function<B extends core.int>(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    List<Function> Function(int y, {Function x}) Function<B extends core.int>(
-        int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is List<Function> Function(int y, {Function x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [List<T> x]) Function<B extends core.int>(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<T> x]) Function<B extends core.int>(
-        int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-    if (!tIsBool) {
-      Expect.isTrue(f10 is F10<int>);
-      Expect.isFalse(f10 is F10<bool>);
-      Expect.isTrue(confuse(f10) is F10<int>);
-      Expect.isFalse(confuse(f10) is F10<bool>);
-      Expect.equals(tIsDynamic, m10 is F10<bool>);
-      Expect.equals(tIsDynamic, confuse(m10) is F10<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          x10 = confuse(f10);
-        });
-        List<Function> Function(int x1, [List<T> x])
-            Function<B extends core.int>(int x) l10;
-        Expect.throws(() {
-          l10 = (f10 as dynamic);
-        });
-        Expect.throws(() {
-          l10 = confuse(f10);
-        });
-      }
-      List<Function> Function(int x1, [List<T> x]) Function<B extends core.int>(
-          int x) l10 = m10;
-      // In checked mode, verifies the type.
-      x10 = m10;
-      x10 = confuse(m10);
-    }
-  }
-
-  /// core.List<core.int> Function(Function x1) Function<B extends core.int>(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(Function x1) Function<B extends core.int>(
-        int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is core.List<core.int> Function(Function x1)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-  }
-
-  /// core.List<core.int> Function(int x, [core.List<core.int> x1]) Function<B extends core.int>(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [core.List<core.int> x1])
-        Function<B extends core.int>(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x,
-            [core.List<core.int> x1])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// List<T> Function(int x1, {int x}) Function<B extends core.int>(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    List<T> Function(int x1, {int x}) Function<B extends core.int>(int x) l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is List<T> Function(int x1, {int x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-    if (!tIsBool) {
-      Expect.isTrue(f13 is F13<int>);
-      Expect.isFalse(f13 is F13<bool>);
-      Expect.isTrue(confuse(f13) is F13<int>);
-      Expect.isFalse(confuse(f13) is F13<bool>);
-      Expect.equals(tIsDynamic, m13 is F13<bool>);
-      Expect.equals(tIsDynamic, confuse(m13) is F13<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          x13 = confuse(f13);
-        });
-        List<T> Function(int x1, {int x}) Function<B extends core.int>(int x)
-            l13;
-        Expect.throws(() {
-          l13 = (f13 as dynamic);
-        });
-        Expect.throws(() {
-          l13 = confuse(f13);
-        });
-      }
-      List<T> Function(int x1, {int x}) Function<B extends core.int>(int x)
-          l13 = m13;
-      // In checked mode, verifies the type.
-      x13 = m13;
-      x13 = confuse(m13);
-    }
-  }
-
-  /// List<T> Function([core.List<core.int> x]) Function<B extends core.int>(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([core.List<core.int> x]) Function<B extends core.int>(
-        int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([core.List<core.int> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([core.List<core.int> x]) Function<B extends core.int>(
-            int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([core.List<core.int> x]) Function<B extends core.int>(
-          int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// Function(int y, [int x]) Function<B extends core.int>(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    Function(int y, [int x]) Function<B extends core.int>(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is Function(int y, [int x]) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-  }
-
-  /// Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [List<Function> x3]) Function<B extends core.int>(int x)
-        l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x2, [List<Function> x3])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {List<T> x}) Function<B extends core.int>(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {List<T> x}) Function<B extends core.int>(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, {List<T> x})
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-    if (!tIsBool) {
-      Expect.isTrue(f17 is F17<int>);
-      Expect.isFalse(f17 is F17<bool>);
-      Expect.isTrue(confuse(f17) is F17<int>);
-      Expect.isFalse(confuse(f17) is F17<bool>);
-      Expect.equals(tIsDynamic, m17 is F17<bool>);
-      Expect.equals(tIsDynamic, confuse(m17) is F17<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          x17 = confuse(f17);
-        });
-        Function(int x1, {List<T> x}) Function<B extends core.int>(int x) l17;
-        Expect.throws(() {
-          l17 = (f17 as dynamic);
-        });
-        Expect.throws(() {
-          l17 = confuse(f17);
-        });
-      }
-      Function(int x1, {List<T> x}) Function<B extends core.int>(int x) l17 =
-          m17;
-      // In checked mode, verifies the type.
-      x17 = m17;
-      x17 = confuse(m17);
-    }
-  }
-
-  /// void Function(List<Function> x) Function<B extends core.int>(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(List<Function> x) Function<B extends core.int>(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<T> x]) Function<B extends core.int>(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(m19 is void Function(int y, [List<T> x])
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-    if (!tIsBool) {
-      Expect.isTrue(f19 is F19<int>);
-      Expect.isFalse(f19 is F19<bool>);
-      Expect.isTrue(confuse(f19) is F19<int>);
-      Expect.isFalse(confuse(f19) is F19<bool>);
-      Expect.equals(tIsDynamic, m19 is F19<bool>);
-      Expect.equals(tIsDynamic, confuse(m19) is F19<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          x19 = confuse(f19);
-        });
-        void Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-            l19;
-        Expect.throws(() {
-          l19 = (f19 as dynamic);
-        });
-        Expect.throws(() {
-          l19 = confuse(f19);
-        });
-      }
-      void Function(int y, [List<T> x]) Function<B extends core.int>(int x)
-          l19 = m19;
-      // In checked mode, verifies the type.
-      x19 = m19;
-      x19 = confuse(m19);
-    }
-  }
-
-  /// List<Function> Function<A>(int x) Function<B extends core.int>(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(int x) Function<B extends core.int>(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is List<Function> Function<A>(int x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-  }
-
-  /// Function<A>(Function x) Function<B extends core.int>(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    Function<A>(Function x) Function<B extends core.int>(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(
-        m21 is Function<A>(Function x) Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// void Function<A>(List<Function> x) Function<B extends core.int>(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    void Function<A>(List<Function> x) Function<B extends core.int>(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is void Function<A>(List<Function> x)
-        Function<B extends core.int>(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-  }
-}
-
-void main() {
-  new U99().runTests();
-  new U99<int>(tIsInt: true).runTests();
-  new U99<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/function_type9_test.dart b/tests/language/function_type/function_type9_test.dart
deleted file mode 100644
index c99e395..0000000
--- a/tests/language/function_type/function_type9_test.dart
+++ /dev/null
@@ -1,921 +0,0 @@
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-
-typedef F0<T> = int Function(int x0, {int x});
-typedef F1<T> = Function Function(int x0, {List<T> x});
-typedef F2<T> = core.List<core.int> Function({core.List<core.int> x});
-typedef F3<T> = Function(int x, [List<Function> x2]);
-typedef F4<T> = List<Function> Function<A>(Function x);
-typedef F5<T> = int Function(Function x) Function(int x);
-typedef F6<T> = int Function(int y, [core.List<core.int> x]) Function(int x);
-typedef F7<T> = Function Function([int x1]) Function(int x);
-typedef F8<T> = Function Function({List<Function> x}) Function(int x);
-typedef F9<T> = Function Function() Function(int x);
-typedef F10<T> = List<Function> Function(int x1, [List<Function> x]) Function(
-    int x);
-typedef F11<T> = List<Function> Function([List<T> x1]) Function(int x);
-typedef F12<T> = core.List<core.int> Function(int x, [Function x1]) Function(
-    int x);
-typedef F13<T> = core.List<core.int> Function(int y, {core.List<core.int> x})
-    Function(int x);
-typedef F14<T> = List<T> Function([Function x]) Function(int x);
-typedef F15<T> = List<T> Function(core.List<core.int> x1) Function(int x);
-typedef F16<T> = Function(int x2, [int x3]) Function(int x);
-typedef F17<T> = Function(int x1, {List<Function> x}) Function(int x);
-typedef F18<T> = void Function(int x) Function(int x);
-typedef F19<T> = void Function(int y, [List<Function> x]) Function(int x);
-typedef F20<T> = void Function(int x2, [List<T> x3]) Function(int x);
-typedef F21<T> = List<Function> Function<A>(core.List<core.int> x) Function(
-    int x);
-typedef F22<T> = Function<A>(List<T> x) Function(int x);
-typedef F23<T> = void Function<A>() Function(int x);
-
-int f0(int x0, {int x}) => null;
-Function f1(int x0, {List<int> x}) => null;
-core.List<core.int> f2({core.List<core.int> x}) => null;
-f3(int x, [List<Function> x0]) => null;
-List<Function> f4<A>(Function x) => null;
-int Function(Function x) f5(int x) => null;
-int Function(int y, [core.List<core.int> x]) f6(int x) => null;
-Function Function([int x0]) f7(int x) => null;
-Function Function({List<Function> x}) f8(int x) => null;
-Function Function() f9(int x) => null;
-List<Function> Function(int x0, [List<Function> x]) f10(int x) => null;
-List<Function> Function([List<int> x0]) f11(int x) => null;
-core.List<core.int> Function(int x, [Function x0]) f12(int x) => null;
-core.List<core.int> Function(int y, {core.List<core.int> x}) f13(int x) => null;
-List<int> Function([Function x]) f14(int x) => null;
-List<int> Function(core.List<core.int> x0) f15(int x) => null;
-Function(int x0, [int x1]) f16(int x) => null;
-Function(int x0, {List<Function> x}) f17(int x) => null;
-void Function(int x) f18(int x) => null;
-void Function(int y, [List<Function> x]) f19(int x) => null;
-void Function(int x0, [List<int> x1]) f20(int x) => null;
-List<Function> Function<A>(core.List<core.int> x) f21(int x) => null;
-Function<A>(List<int> x) f22(int x) => null;
-void Function<A>() f23(int x) => null;
-
-class U9<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-  int Function(int x0, {int x}) x0;
-  Function Function(int x0, {List<T> x}) x1;
-  core.List<core.int> Function({core.List<core.int> x}) x2;
-  Function(int x, [List<Function> x2]) x3;
-  List<Function> Function<A>(Function x) x4;
-  int Function(Function x) Function(int x) x5;
-  int Function(int y, [core.List<core.int> x]) Function(int x) x6;
-  Function Function([int x1]) Function(int x) x7;
-  Function Function({List<Function> x}) Function(int x) x8;
-  Function Function() Function(int x) x9;
-  List<Function> Function(int x1, [List<Function> x]) Function(int x) x10;
-  List<Function> Function([List<T> x1]) Function(int x) x11;
-  core.List<core.int> Function(int x, [Function x1]) Function(int x) x12;
-  core.List<core.int> Function(int y, {core.List<core.int> x}) Function(int x)
-      x13;
-  List<T> Function([Function x]) Function(int x) x14;
-  List<T> Function(core.List<core.int> x1) Function(int x) x15;
-  Function(int x2, [int x3]) Function(int x) x16;
-  Function(int x1, {List<Function> x}) Function(int x) x17;
-  void Function(int x) Function(int x) x18;
-  void Function(int y, [List<Function> x]) Function(int x) x19;
-  void Function(int x2, [List<T> x3]) Function(int x) x20;
-  List<Function> Function<A>(core.List<core.int> x) Function(int x) x21;
-  Function<A>(List<T> x) Function(int x) x22;
-  void Function<A>() Function(int x) x23;
-
-  U9({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-  int m0(int x0, {int x}) => null;
-  Function m1(int x0, {List<T> x}) => null;
-  core.List<core.int> m2({core.List<core.int> x}) => null;
-  m3(int x, [List<Function> x0]) => null;
-  List<Function> m4<A>(Function x) => null;
-  int Function(Function x) m5(int x) => null;
-  int Function(int y, [core.List<core.int> x]) m6(int x) => null;
-  Function Function([int x0]) m7(int x) => null;
-  Function Function({List<Function> x}) m8(int x) => null;
-  Function Function() m9(int x) => null;
-  List<Function> Function(int x0, [List<Function> x]) m10(int x) => null;
-  List<Function> Function([List<T> x0]) m11(int x) => null;
-  core.List<core.int> Function(int x, [Function x0]) m12(int x) => null;
-  core.List<core.int> Function(int y, {core.List<core.int> x}) m13(int x) =>
-      null;
-  List<T> Function([Function x]) m14(int x) => null;
-  List<T> Function(core.List<core.int> x0) m15(int x) => null;
-  Function(int x0, [int x1]) m16(int x) => null;
-  Function(int x0, {List<Function> x}) m17(int x) => null;
-  void Function(int x) m18(int x) => null;
-  void Function(int y, [List<Function> x]) m19(int x) => null;
-  void Function(int x0, [List<T> x1]) m20(int x) => null;
-  List<Function> Function<A>(core.List<core.int> x) m21(int x) => null;
-  Function<A>(List<T> x) m22(int x) => null;
-  void Function<A>() m23(int x) => null;
-
-  runTests() {
-    testF0();
-    testF1();
-    testF2();
-    testF3();
-    testF4();
-    testF5();
-    testF6();
-    testF7();
-    testF8();
-    testF9();
-    testF10();
-    testF11();
-    testF12();
-    testF13();
-    testF14();
-    testF15();
-    testF16();
-    testF17();
-    testF18();
-    testF19();
-    testF20();
-    testF21();
-    testF22();
-    testF23();
-  }
-
-  /// int Function(int x0, {int x})
-  void testF0() {
-    Expect.isTrue(f0 is F0);
-    Expect.isTrue(confuse(f0) is F0);
-    // In checked mode, verifies the type.
-    int Function(int x0, {int x}) l0;
-    // The static function f0 sets `T` to `int`.
-    if (!tIsBool) {
-      x0 = f0 as dynamic;
-      l0 = f0 as dynamic;
-      x0 = confuse(f0);
-      l0 = confuse(f0);
-    }
-
-    Expect.isTrue(m0 is F0);
-    Expect.isTrue(m0 is int Function(int x0, {int x}));
-    Expect.isTrue(confuse(m0) is F0);
-    // In checked mode, verifies the type.
-    x0 = m0;
-    l0 = m0;
-    x0 = confuse(m0);
-    l0 = confuse(m0);
-  }
-
-  /// Function Function(int x0, {List<T> x})
-  void testF1() {
-    Expect.isTrue(f1 is F1);
-    Expect.isTrue(confuse(f1) is F1);
-    // In checked mode, verifies the type.
-    Function Function(int x0, {List<T> x}) l1;
-    // The static function f1 sets `T` to `int`.
-    if (!tIsBool) {
-      x1 = f1 as dynamic;
-      l1 = f1 as dynamic;
-      x1 = confuse(f1);
-      l1 = confuse(f1);
-    }
-
-    Expect.isTrue(m1 is F1);
-    Expect.isTrue(m1 is Function Function(int x0, {List<T> x}));
-    Expect.isTrue(confuse(m1) is F1);
-    // In checked mode, verifies the type.
-    x1 = m1;
-    l1 = m1;
-    x1 = confuse(m1);
-    l1 = confuse(m1);
-    if (!tIsBool) {
-      Expect.isTrue(f1 is F1<int>);
-      Expect.isFalse(f1 is F1<bool>);
-      Expect.isTrue(confuse(f1) is F1<int>);
-      Expect.isFalse(confuse(f1) is F1<bool>);
-      Expect.equals(tIsDynamic, m1 is F1<bool>);
-      Expect.equals(tIsDynamic, confuse(m1) is F1<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          x1 = confuse(f1);
-        });
-        Function Function(int x0, {List<T> x}) l1;
-        Expect.throws(() {
-          l1 = (f1 as dynamic);
-        });
-        Expect.throws(() {
-          l1 = confuse(f1);
-        });
-      }
-      Function Function(int x0, {List<T> x}) l1 = m1;
-      // In checked mode, verifies the type.
-      x1 = m1;
-      x1 = confuse(m1);
-    }
-  }
-
-  /// core.List<core.int> Function({core.List<core.int> x})
-  void testF2() {
-    Expect.isTrue(f2 is F2);
-    Expect.isTrue(confuse(f2) is F2);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function({core.List<core.int> x}) l2;
-    // The static function f2 sets `T` to `int`.
-    if (!tIsBool) {
-      x2 = f2 as dynamic;
-      l2 = f2 as dynamic;
-      x2 = confuse(f2);
-      l2 = confuse(f2);
-    }
-
-    Expect.isTrue(m2 is F2);
-    Expect.isTrue(m2 is core.List<core.int> Function({core.List<core.int> x}));
-    Expect.isTrue(confuse(m2) is F2);
-    // In checked mode, verifies the type.
-    x2 = m2;
-    l2 = m2;
-    x2 = confuse(m2);
-    l2 = confuse(m2);
-  }
-
-  /// Function(int x, [List<Function> x2])
-  void testF3() {
-    Expect.isTrue(f3 is F3);
-    Expect.isTrue(confuse(f3) is F3);
-    // In checked mode, verifies the type.
-    Function(int x, [List<Function> x2]) l3;
-    // The static function f3 sets `T` to `int`.
-    if (!tIsBool) {
-      x3 = f3 as dynamic;
-      l3 = f3 as dynamic;
-      x3 = confuse(f3);
-      l3 = confuse(f3);
-    }
-
-    Expect.isTrue(m3 is F3);
-    Expect.isTrue(m3 is Function(int x, [List<Function> x2]));
-    Expect.isTrue(confuse(m3) is F3);
-    // In checked mode, verifies the type.
-    x3 = m3;
-    l3 = m3;
-    x3 = confuse(m3);
-    l3 = confuse(m3);
-  }
-
-  /// List<Function> Function<A>(Function x)
-  void testF4() {
-    Expect.isTrue(f4 is F4);
-    Expect.isTrue(confuse(f4) is F4);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(Function x) l4;
-    // The static function f4 sets `T` to `int`.
-    if (!tIsBool) {
-      x4 = f4 as dynamic;
-      l4 = f4 as dynamic;
-      x4 = confuse(f4);
-      l4 = confuse(f4);
-    }
-
-    Expect.isTrue(m4 is F4);
-    Expect.isTrue(m4 is List<Function> Function<A>(Function x));
-    Expect.isTrue(confuse(m4) is F4);
-    // In checked mode, verifies the type.
-    x4 = m4;
-    l4 = m4;
-    x4 = confuse(m4);
-    l4 = confuse(m4);
-  }
-
-  /// int Function(Function x) Function(int x)
-  void testF5() {
-    Expect.isTrue(f5 is F5);
-    Expect.isTrue(confuse(f5) is F5);
-    // In checked mode, verifies the type.
-    int Function(Function x) Function(int x) l5;
-    // The static function f5 sets `T` to `int`.
-    if (!tIsBool) {
-      x5 = f5 as dynamic;
-      l5 = f5 as dynamic;
-      x5 = confuse(f5);
-      l5 = confuse(f5);
-    }
-
-    Expect.isTrue(m5 is F5);
-    Expect.isTrue(m5 is int Function(Function x) Function(int x));
-    Expect.isTrue(confuse(m5) is F5);
-    // In checked mode, verifies the type.
-    x5 = m5;
-    l5 = m5;
-    x5 = confuse(m5);
-    l5 = confuse(m5);
-  }
-
-  /// int Function(int y, [core.List<core.int> x]) Function(int x)
-  void testF6() {
-    Expect.isTrue(f6 is F6);
-    Expect.isTrue(confuse(f6) is F6);
-    // In checked mode, verifies the type.
-    int Function(int y, [core.List<core.int> x]) Function(int x) l6;
-    // The static function f6 sets `T` to `int`.
-    if (!tIsBool) {
-      x6 = f6 as dynamic;
-      l6 = f6 as dynamic;
-      x6 = confuse(f6);
-      l6 = confuse(f6);
-    }
-
-    Expect.isTrue(m6 is F6);
-    Expect.isTrue(
-        m6 is int Function(int y, [core.List<core.int> x]) Function(int x));
-    Expect.isTrue(confuse(m6) is F6);
-    // In checked mode, verifies the type.
-    x6 = m6;
-    l6 = m6;
-    x6 = confuse(m6);
-    l6 = confuse(m6);
-  }
-
-  /// Function Function([int x1]) Function(int x)
-  void testF7() {
-    Expect.isTrue(f7 is F7);
-    Expect.isTrue(confuse(f7) is F7);
-    // In checked mode, verifies the type.
-    Function Function([int x1]) Function(int x) l7;
-    // The static function f7 sets `T` to `int`.
-    if (!tIsBool) {
-      x7 = f7 as dynamic;
-      l7 = f7 as dynamic;
-      x7 = confuse(f7);
-      l7 = confuse(f7);
-    }
-
-    Expect.isTrue(m7 is F7);
-    Expect.isTrue(m7 is Function Function([int x1]) Function(int x));
-    Expect.isTrue(confuse(m7) is F7);
-    // In checked mode, verifies the type.
-    x7 = m7;
-    l7 = m7;
-    x7 = confuse(m7);
-    l7 = confuse(m7);
-  }
-
-  /// Function Function({List<Function> x}) Function(int x)
-  void testF8() {
-    Expect.isTrue(f8 is F8);
-    Expect.isTrue(confuse(f8) is F8);
-    // In checked mode, verifies the type.
-    Function Function({List<Function> x}) Function(int x) l8;
-    // The static function f8 sets `T` to `int`.
-    if (!tIsBool) {
-      x8 = f8 as dynamic;
-      l8 = f8 as dynamic;
-      x8 = confuse(f8);
-      l8 = confuse(f8);
-    }
-
-    Expect.isTrue(m8 is F8);
-    Expect.isTrue(m8 is Function Function({List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m8) is F8);
-    // In checked mode, verifies the type.
-    x8 = m8;
-    l8 = m8;
-    x8 = confuse(m8);
-    l8 = confuse(m8);
-  }
-
-  /// Function Function() Function(int x)
-  void testF9() {
-    Expect.isTrue(f9 is F9);
-    Expect.isTrue(confuse(f9) is F9);
-    // In checked mode, verifies the type.
-    Function Function() Function(int x) l9;
-    // The static function f9 sets `T` to `int`.
-    if (!tIsBool) {
-      x9 = f9 as dynamic;
-      l9 = f9 as dynamic;
-      x9 = confuse(f9);
-      l9 = confuse(f9);
-    }
-
-    Expect.isTrue(m9 is F9);
-    Expect.isTrue(m9 is Function Function() Function(int x));
-    Expect.isTrue(confuse(m9) is F9);
-    // In checked mode, verifies the type.
-    x9 = m9;
-    l9 = m9;
-    x9 = confuse(m9);
-    l9 = confuse(m9);
-  }
-
-  /// List<Function> Function(int x1, [List<Function> x]) Function(int x)
-  void testF10() {
-    Expect.isTrue(f10 is F10);
-    Expect.isTrue(confuse(f10) is F10);
-    // In checked mode, verifies the type.
-    List<Function> Function(int x1, [List<Function> x]) Function(int x) l10;
-    // The static function f10 sets `T` to `int`.
-    if (!tIsBool) {
-      x10 = f10 as dynamic;
-      l10 = f10 as dynamic;
-      x10 = confuse(f10);
-      l10 = confuse(f10);
-    }
-
-    Expect.isTrue(m10 is F10);
-    Expect.isTrue(m10 is List<Function> Function(int x1, [List<Function> x])
-        Function(int x));
-    Expect.isTrue(confuse(m10) is F10);
-    // In checked mode, verifies the type.
-    x10 = m10;
-    l10 = m10;
-    x10 = confuse(m10);
-    l10 = confuse(m10);
-  }
-
-  /// List<Function> Function([List<T> x1]) Function(int x)
-  void testF11() {
-    Expect.isTrue(f11 is F11);
-    Expect.isTrue(confuse(f11) is F11);
-    // In checked mode, verifies the type.
-    List<Function> Function([List<T> x1]) Function(int x) l11;
-    // The static function f11 sets `T` to `int`.
-    if (!tIsBool) {
-      x11 = f11 as dynamic;
-      l11 = f11 as dynamic;
-      x11 = confuse(f11);
-      l11 = confuse(f11);
-    }
-
-    Expect.isTrue(m11 is F11);
-    Expect.isTrue(m11 is List<Function> Function([List<T> x1]) Function(int x));
-    Expect.isTrue(confuse(m11) is F11);
-    // In checked mode, verifies the type.
-    x11 = m11;
-    l11 = m11;
-    x11 = confuse(m11);
-    l11 = confuse(m11);
-    if (!tIsBool) {
-      Expect.isTrue(f11 is F11<int>);
-      Expect.isFalse(f11 is F11<bool>);
-      Expect.isTrue(confuse(f11) is F11<int>);
-      Expect.isFalse(confuse(f11) is F11<bool>);
-      Expect.equals(tIsDynamic, m11 is F11<bool>);
-      Expect.equals(tIsDynamic, confuse(m11) is F11<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          x11 = confuse(f11);
-        });
-        List<Function> Function([List<T> x1]) Function(int x) l11;
-        Expect.throws(() {
-          l11 = (f11 as dynamic);
-        });
-        Expect.throws(() {
-          l11 = confuse(f11);
-        });
-      }
-      List<Function> Function([List<T> x1]) Function(int x) l11 = m11;
-      // In checked mode, verifies the type.
-      x11 = m11;
-      x11 = confuse(m11);
-    }
-  }
-
-  /// core.List<core.int> Function(int x, [Function x1]) Function(int x)
-  void testF12() {
-    Expect.isTrue(f12 is F12);
-    Expect.isTrue(confuse(f12) is F12);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int x, [Function x1]) Function(int x) l12;
-    // The static function f12 sets `T` to `int`.
-    if (!tIsBool) {
-      x12 = f12 as dynamic;
-      l12 = f12 as dynamic;
-      x12 = confuse(f12);
-      l12 = confuse(f12);
-    }
-
-    Expect.isTrue(m12 is F12);
-    Expect.isTrue(m12 is core.List<core.int> Function(int x, [Function x1])
-        Function(int x));
-    Expect.isTrue(confuse(m12) is F12);
-    // In checked mode, verifies the type.
-    x12 = m12;
-    l12 = m12;
-    x12 = confuse(m12);
-    l12 = confuse(m12);
-  }
-
-  /// core.List<core.int> Function(int y, {core.List<core.int> x}) Function(int x)
-  void testF13() {
-    Expect.isTrue(f13 is F13);
-    Expect.isTrue(confuse(f13) is F13);
-    // In checked mode, verifies the type.
-    core.List<core.int> Function(int y, {core.List<core.int> x}) Function(int x)
-        l13;
-    // The static function f13 sets `T` to `int`.
-    if (!tIsBool) {
-      x13 = f13 as dynamic;
-      l13 = f13 as dynamic;
-      x13 = confuse(f13);
-      l13 = confuse(f13);
-    }
-
-    Expect.isTrue(m13 is F13);
-    Expect.isTrue(m13 is core.List<core.int> Function(int y,
-            {core.List<core.int> x})
-        Function(int x));
-    Expect.isTrue(confuse(m13) is F13);
-    // In checked mode, verifies the type.
-    x13 = m13;
-    l13 = m13;
-    x13 = confuse(m13);
-    l13 = confuse(m13);
-  }
-
-  /// List<T> Function([Function x]) Function(int x)
-  void testF14() {
-    Expect.isTrue(f14 is F14);
-    Expect.isTrue(confuse(f14) is F14);
-    // In checked mode, verifies the type.
-    List<T> Function([Function x]) Function(int x) l14;
-    // The static function f14 sets `T` to `int`.
-    if (!tIsBool) {
-      x14 = f14 as dynamic;
-      l14 = f14 as dynamic;
-      x14 = confuse(f14);
-      l14 = confuse(f14);
-    }
-
-    Expect.isTrue(m14 is F14);
-    Expect.isTrue(m14 is List<T> Function([Function x]) Function(int x));
-    Expect.isTrue(confuse(m14) is F14);
-    // In checked mode, verifies the type.
-    x14 = m14;
-    l14 = m14;
-    x14 = confuse(m14);
-    l14 = confuse(m14);
-    if (!tIsBool) {
-      Expect.isTrue(f14 is F14<int>);
-      Expect.isFalse(f14 is F14<bool>);
-      Expect.isTrue(confuse(f14) is F14<int>);
-      Expect.isFalse(confuse(f14) is F14<bool>);
-      Expect.equals(tIsDynamic, m14 is F14<bool>);
-      Expect.equals(tIsDynamic, confuse(m14) is F14<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          x14 = confuse(f14);
-        });
-        List<T> Function([Function x]) Function(int x) l14;
-        Expect.throws(() {
-          l14 = (f14 as dynamic);
-        });
-        Expect.throws(() {
-          l14 = confuse(f14);
-        });
-      }
-      List<T> Function([Function x]) Function(int x) l14 = m14;
-      // In checked mode, verifies the type.
-      x14 = m14;
-      x14 = confuse(m14);
-    }
-  }
-
-  /// List<T> Function(core.List<core.int> x1) Function(int x)
-  void testF15() {
-    Expect.isTrue(f15 is F15);
-    Expect.isTrue(confuse(f15) is F15);
-    // In checked mode, verifies the type.
-    List<T> Function(core.List<core.int> x1) Function(int x) l15;
-    // The static function f15 sets `T` to `int`.
-    if (!tIsBool) {
-      x15 = f15 as dynamic;
-      l15 = f15 as dynamic;
-      x15 = confuse(f15);
-      l15 = confuse(f15);
-    }
-
-    Expect.isTrue(m15 is F15);
-    Expect.isTrue(
-        m15 is List<T> Function(core.List<core.int> x1) Function(int x));
-    Expect.isTrue(confuse(m15) is F15);
-    // In checked mode, verifies the type.
-    x15 = m15;
-    l15 = m15;
-    x15 = confuse(m15);
-    l15 = confuse(m15);
-    if (!tIsBool) {
-      Expect.isTrue(f15 is F15<int>);
-      Expect.isFalse(f15 is F15<bool>);
-      Expect.isTrue(confuse(f15) is F15<int>);
-      Expect.isFalse(confuse(f15) is F15<bool>);
-      Expect.equals(tIsDynamic, m15 is F15<bool>);
-      Expect.equals(tIsDynamic, confuse(m15) is F15<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          x15 = confuse(f15);
-        });
-        List<T> Function(core.List<core.int> x1) Function(int x) l15;
-        Expect.throws(() {
-          l15 = (f15 as dynamic);
-        });
-        Expect.throws(() {
-          l15 = confuse(f15);
-        });
-      }
-      List<T> Function(core.List<core.int> x1) Function(int x) l15 = m15;
-      // In checked mode, verifies the type.
-      x15 = m15;
-      x15 = confuse(m15);
-    }
-  }
-
-  /// Function(int x2, [int x3]) Function(int x)
-  void testF16() {
-    Expect.isTrue(f16 is F16);
-    Expect.isTrue(confuse(f16) is F16);
-    // In checked mode, verifies the type.
-    Function(int x2, [int x3]) Function(int x) l16;
-    // The static function f16 sets `T` to `int`.
-    if (!tIsBool) {
-      x16 = f16 as dynamic;
-      l16 = f16 as dynamic;
-      x16 = confuse(f16);
-      l16 = confuse(f16);
-    }
-
-    Expect.isTrue(m16 is F16);
-    Expect.isTrue(m16 is Function(int x2, [int x3]) Function(int x));
-    Expect.isTrue(confuse(m16) is F16);
-    // In checked mode, verifies the type.
-    x16 = m16;
-    l16 = m16;
-    x16 = confuse(m16);
-    l16 = confuse(m16);
-  }
-
-  /// Function(int x1, {List<Function> x}) Function(int x)
-  void testF17() {
-    Expect.isTrue(f17 is F17);
-    Expect.isTrue(confuse(f17) is F17);
-    // In checked mode, verifies the type.
-    Function(int x1, {List<Function> x}) Function(int x) l17;
-    // The static function f17 sets `T` to `int`.
-    if (!tIsBool) {
-      x17 = f17 as dynamic;
-      l17 = f17 as dynamic;
-      x17 = confuse(f17);
-      l17 = confuse(f17);
-    }
-
-    Expect.isTrue(m17 is F17);
-    Expect.isTrue(m17 is Function(int x1, {List<Function> x}) Function(int x));
-    Expect.isTrue(confuse(m17) is F17);
-    // In checked mode, verifies the type.
-    x17 = m17;
-    l17 = m17;
-    x17 = confuse(m17);
-    l17 = confuse(m17);
-  }
-
-  /// void Function(int x) Function(int x)
-  void testF18() {
-    Expect.isTrue(f18 is F18);
-    Expect.isTrue(confuse(f18) is F18);
-    // In checked mode, verifies the type.
-    void Function(int x) Function(int x) l18;
-    // The static function f18 sets `T` to `int`.
-    if (!tIsBool) {
-      x18 = f18 as dynamic;
-      l18 = f18 as dynamic;
-      x18 = confuse(f18);
-      l18 = confuse(f18);
-    }
-
-    Expect.isTrue(m18 is F18);
-    Expect.isTrue(m18 is void Function(int x) Function(int x));
-    Expect.isTrue(confuse(m18) is F18);
-    // In checked mode, verifies the type.
-    x18 = m18;
-    l18 = m18;
-    x18 = confuse(m18);
-    l18 = confuse(m18);
-  }
-
-  /// void Function(int y, [List<Function> x]) Function(int x)
-  void testF19() {
-    Expect.isTrue(f19 is F19);
-    Expect.isTrue(confuse(f19) is F19);
-    // In checked mode, verifies the type.
-    void Function(int y, [List<Function> x]) Function(int x) l19;
-    // The static function f19 sets `T` to `int`.
-    if (!tIsBool) {
-      x19 = f19 as dynamic;
-      l19 = f19 as dynamic;
-      x19 = confuse(f19);
-      l19 = confuse(f19);
-    }
-
-    Expect.isTrue(m19 is F19);
-    Expect.isTrue(
-        m19 is void Function(int y, [List<Function> x]) Function(int x));
-    Expect.isTrue(confuse(m19) is F19);
-    // In checked mode, verifies the type.
-    x19 = m19;
-    l19 = m19;
-    x19 = confuse(m19);
-    l19 = confuse(m19);
-  }
-
-  /// void Function(int x2, [List<T> x3]) Function(int x)
-  void testF20() {
-    Expect.isTrue(f20 is F20);
-    Expect.isTrue(confuse(f20) is F20);
-    // In checked mode, verifies the type.
-    void Function(int x2, [List<T> x3]) Function(int x) l20;
-    // The static function f20 sets `T` to `int`.
-    if (!tIsBool) {
-      x20 = f20 as dynamic;
-      l20 = f20 as dynamic;
-      x20 = confuse(f20);
-      l20 = confuse(f20);
-    }
-
-    Expect.isTrue(m20 is F20);
-    Expect.isTrue(m20 is void Function(int x2, [List<T> x3]) Function(int x));
-    Expect.isTrue(confuse(m20) is F20);
-    // In checked mode, verifies the type.
-    x20 = m20;
-    l20 = m20;
-    x20 = confuse(m20);
-    l20 = confuse(m20);
-    if (!tIsBool) {
-      Expect.isTrue(f20 is F20<int>);
-      Expect.isFalse(f20 is F20<bool>);
-      Expect.isTrue(confuse(f20) is F20<int>);
-      Expect.isFalse(confuse(f20) is F20<bool>);
-      Expect.equals(tIsDynamic, m20 is F20<bool>);
-      Expect.equals(tIsDynamic, confuse(m20) is F20<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          x20 = confuse(f20);
-        });
-        void Function(int x2, [List<T> x3]) Function(int x) l20;
-        Expect.throws(() {
-          l20 = (f20 as dynamic);
-        });
-        Expect.throws(() {
-          l20 = confuse(f20);
-        });
-      }
-      void Function(int x2, [List<T> x3]) Function(int x) l20 = m20;
-      // In checked mode, verifies the type.
-      x20 = m20;
-      x20 = confuse(m20);
-    }
-  }
-
-  /// List<Function> Function<A>(core.List<core.int> x) Function(int x)
-  void testF21() {
-    Expect.isTrue(f21 is F21);
-    Expect.isTrue(confuse(f21) is F21);
-    // In checked mode, verifies the type.
-    List<Function> Function<A>(core.List<core.int> x) Function(int x) l21;
-    // The static function f21 sets `T` to `int`.
-    if (!tIsBool) {
-      x21 = f21 as dynamic;
-      l21 = f21 as dynamic;
-      x21 = confuse(f21);
-      l21 = confuse(f21);
-    }
-
-    Expect.isTrue(m21 is F21);
-    Expect.isTrue(m21 is List<Function> Function<A>(core.List<core.int> x)
-        Function(int x));
-    Expect.isTrue(confuse(m21) is F21);
-    // In checked mode, verifies the type.
-    x21 = m21;
-    l21 = m21;
-    x21 = confuse(m21);
-    l21 = confuse(m21);
-  }
-
-  /// Function<A>(List<T> x) Function(int x)
-  void testF22() {
-    Expect.isTrue(f22 is F22);
-    Expect.isTrue(confuse(f22) is F22);
-    // In checked mode, verifies the type.
-    Function<A>(List<T> x) Function(int x) l22;
-    // The static function f22 sets `T` to `int`.
-    if (!tIsBool) {
-      x22 = f22 as dynamic;
-      l22 = f22 as dynamic;
-      x22 = confuse(f22);
-      l22 = confuse(f22);
-    }
-
-    Expect.isTrue(m22 is F22);
-    Expect.isTrue(m22 is Function<A>(List<T> x) Function(int x));
-    Expect.isTrue(confuse(m22) is F22);
-    // In checked mode, verifies the type.
-    x22 = m22;
-    l22 = m22;
-    x22 = confuse(m22);
-    l22 = confuse(m22);
-    if (!tIsBool) {
-      Expect.isTrue(f22 is F22<int>);
-      Expect.isFalse(f22 is F22<bool>);
-      Expect.isTrue(confuse(f22) is F22<int>);
-      Expect.isFalse(confuse(f22) is F22<bool>);
-      Expect.equals(tIsDynamic, m22 is F22<bool>);
-      Expect.equals(tIsDynamic, confuse(m22) is F22<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() {
-          x22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          x22 = confuse(f22);
-        });
-        Function<A>(List<T> x) Function(int x) l22;
-        Expect.throws(() {
-          l22 = (f22 as dynamic);
-        });
-        Expect.throws(() {
-          l22 = confuse(f22);
-        });
-      }
-      Function<A>(List<T> x) Function(int x) l22 = m22;
-      // In checked mode, verifies the type.
-      x22 = m22;
-      x22 = confuse(m22);
-    }
-  }
-
-  /// void Function<A>() Function(int x)
-  void testF23() {
-    Expect.isTrue(f23 is F23);
-    Expect.isTrue(confuse(f23) is F23);
-    // In checked mode, verifies the type.
-    void Function<A>() Function(int x) l23;
-    // The static function f23 sets `T` to `int`.
-    if (!tIsBool) {
-      x23 = f23 as dynamic;
-      l23 = f23 as dynamic;
-      x23 = confuse(f23);
-      l23 = confuse(f23);
-    }
-
-    Expect.isTrue(m23 is F23);
-    Expect.isTrue(m23 is void Function<A>() Function(int x));
-    Expect.isTrue(confuse(m23) is F23);
-    // In checked mode, verifies the type.
-    x23 = m23;
-    l23 = m23;
-    x23 = confuse(m23);
-    l23 = confuse(m23);
-  }
-}
-
-void main() {
-  new U9().runTests();
-  new U9<int>(tIsInt: true).runTests();
-  new U9<bool>(tIsBool: true).runTests();
-}
diff --git a/tests/language/function_type/test_generator.dart b/tests/language/function_type/test_generator.dart
deleted file mode 100644
index 1a9360c..0000000
--- a/tests/language/function_type/test_generator.dart
+++ /dev/null
@@ -1,766 +0,0 @@
-// 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.
-
-import 'dart:io';
-
-// By convention:
-//
-//   T: generic type of typedef.
-//   A: generic type of returned function.
-//   B: generic type of function.
-//
-// Example:
-//    typedef F<T>: Function<A> Function<B>();
-//
-// We only use: Function, List, int (and function types).
-// We import 'dart:core' directly and with prefix 'core'.
-
-abstract class Printable {
-  /// Builds a descriptive string that can be used as an identifier.
-  ///
-  /// The string is mainly used for disambiguation, and not for its readability.
-  void writeIdentifier(StringBuffer buffer);
-}
-
-abstract class TypeLike implements Printable {
-  /// Prints `this` as valid Dart code for a Type.
-  void writeType(StringBuffer buffer);
-
-  /// Whether this instance uses T in some way.
-  bool get usesT;
-}
-
-/// Provides a unique integer for every parameter in a function.
-int parameterNameCounter = 0;
-
-/// Whether `T` should be replaced with `int`.
-bool shouldReplaceTWithInt = false;
-
-class Parameter implements Printable {
-  final TypeLike type;
-  final String name;
-
-  Parameter(this.type, this.name);
-
-  // Type or name can be null.
-  @override
-  writeIdentifier(buffer) {
-    if (type == null) {
-      buffer.write("null");
-    } else {
-      type.writeIdentifier(buffer);
-    }
-    buffer.write("_");
-    buffer.write(name);
-  }
-
-  void writeType(StringBuffer buffer) {
-    assert(type != null || name != null);
-    if (name == null) {
-      type.writeType(buffer);
-    } else if (type == null) {
-      buffer.write(name);
-    } else {
-      type.writeType(buffer);
-      buffer.write(" ");
-      buffer.write(name);
-    }
-  }
-
-  void writeInFunction(StringBuffer buffer) {
-    assert(type != null || name != null);
-    if (name == null) {
-      type.writeType(buffer);
-      buffer.write(" x");
-      buffer.write(parameterNameCounter++);
-    } else if (type == null) {
-      buffer.write(name);
-    } else {
-      type.writeType(buffer);
-      buffer.write(" ");
-      buffer.write(name);
-    }
-  }
-
-  bool operator ==(other) {
-    return other is Parameter && name == other.name && type == other.type;
-  }
-
-  int get hashCode {
-    return ((name.hashCode * 37) ^ type.hashCode) & 0xFFFFFFFF;
-  }
-
-  bool get usesT => type?.usesT == true;
-}
-
-class GenericParameter implements TypeLike {
-  final String name;
-  final TypeLike bound;
-
-  GenericParameter(this.name, [this.bound]);
-
-  // Bound may be null.
-  @override
-  writeIdentifier(buffer) {
-    buffer.write(name);
-    buffer.write("_");
-    if (bound == null) {
-      buffer.write("null");
-    } else {
-      bound.writeIdentifier(buffer);
-    }
-  }
-
-  @override
-  writeType(buffer) {
-    buffer.write(name);
-    if (bound != null) {
-      buffer.write(" extends ");
-      bound.writeType(buffer);
-    }
-  }
-
-  bool operator ==(other) {
-    return other is GenericParameter &&
-        name == other.name &&
-        bound == other.bound;
-  }
-
-  int get hashCode {
-    return ((name.hashCode * 23) ^ bound.hashCode) & 0xFFFFFFFF;
-  }
-
-  bool get usesT {
-    return bound?.usesT == true;
-  }
-}
-
-void _describeList(StringBuffer buffer, List<Printable> list) {
-  if (list == null) {
-    buffer.write("0");
-    return;
-  }
-  buffer.write(list.length.toString());
-  buffer.write("_");
-  for (int i = 0; i < list.length; i++) {
-    if (i != 0) buffer.write("_");
-    list[i].writeIdentifier(buffer);
-  }
-}
-
-void _writeTypes(StringBuffer buffer, List<TypeLike> list,
-    [String prefix = "", String postfix = ""]) {
-  if (list == null || list.isEmpty) return;
-  buffer.write(prefix);
-  for (int i = 0; i < list.length; i++) {
-    if (i != 0) buffer.write(", ");
-    list[i].writeType(buffer);
-  }
-  buffer.write(postfix);
-}
-
-void _writeParameters(
-    StringBuffer buffer, List<Parameter> list, bool inFunction,
-    [String prefix = "", String postfix = ""]) {
-  if (list == null || list.isEmpty) return;
-  buffer.write(prefix);
-  for (int i = 0; i < list.length; i++) {
-    if (i != 0) buffer.write(", ");
-    if (inFunction) {
-      list[i].writeInFunction(buffer);
-    } else {
-      list[i].writeType(buffer);
-    }
-  }
-  buffer.write(postfix);
-}
-
-bool _listUsesT(List elements) {
-  if (elements == null) return false;
-  return elements.any((p) => p.usesT);
-}
-
-bool _listEquals(List list1, List list2) {
-  if (list1 == list2) return true; // Also covers both being null.
-  if (list1 == null || list2 == null) return false;
-  for (int i = 0; i < list1.length; i++) {
-    if (list1[i] != list2[i]) return false;
-  }
-  return true;
-}
-
-int _listHash(List list) {
-  if (list == null) return null.hashCode;
-  int result = 71;
-  for (int i = 0; i < list.length; i++) {
-    result = ((result * 11) ^ list[i].hashCode) & 0xFFFFFFFF;
-  }
-  return result;
-}
-
-class FunctionType implements TypeLike {
-  final TypeLike returnType;
-  final List<GenericParameter> generic;
-  final List<Parameter> required;
-  final List<Parameter> optional;
-  final List<Parameter> named;
-
-  FunctionType(this.returnType, this.generic, this.required,
-      [this.optional, this.named]);
-
-  @override
-  writeIdentifier(buffer) {
-    buffer.write("Fun_");
-    if (returnType == null) {
-      buffer.write("null");
-    } else {
-      returnType.writeIdentifier(buffer);
-    }
-    buffer.write("_");
-    _describeList(buffer, generic);
-    buffer.write("_");
-    _describeList(buffer, required);
-    buffer.write("_");
-    _describeList(buffer, optional);
-    buffer.write("_");
-    _describeList(buffer, named);
-  }
-
-  @override
-  writeType(buffer) {
-    if (returnType != null) {
-      returnType.writeType(buffer);
-      buffer.write(" ");
-    }
-    buffer.write("Function");
-    if (generic != null) _writeTypes(buffer, generic, "<", ">");
-    buffer.write("(");
-    bool notInFunction = true;
-    _writeParameters(buffer, required, notInFunction);
-    if ((optional != null || named != null) &&
-        required != null &&
-        required.isNotEmpty) {
-      buffer.write(", ");
-    }
-    _writeParameters(buffer, optional, notInFunction, "[", "]");
-    _writeParameters(buffer, named, notInFunction, "{", "}");
-    buffer.write(")");
-  }
-
-  /// Writes this type as if it was a function.
-  void writeFunction(StringBuffer buffer, String name, {bool replaceT: true}) {
-    shouldReplaceTWithInt = replaceT;
-    parameterNameCounter = 0;
-
-    if (returnType != null) {
-      returnType.writeType(buffer);
-      buffer.write(" ");
-    }
-
-    buffer.write(name);
-    if (generic != null) _writeTypes(buffer, generic, "<", ">");
-    buffer.write("(");
-    bool inFunction = true;
-    _writeParameters(buffer, required, inFunction);
-    if ((optional != null || named != null) &&
-        required != null &&
-        required.isNotEmpty) {
-      buffer.write(", ");
-    }
-    _writeParameters(buffer, optional, inFunction, "[", "]");
-    _writeParameters(buffer, named, inFunction, "{", "}");
-    buffer.write(") => null;");
-
-    shouldReplaceTWithInt = false;
-  }
-
-  bool operator ==(other) {
-    return returnType == other.returnType &&
-        _listEquals(generic, other.generic) &&
-        _listEquals(required, other.required) &&
-        _listEquals(optional, other.optional) &&
-        _listEquals(named, other.named);
-  }
-
-  int get hashCode {
-    return ((returnType.hashCode * 13) ^
-            (_listHash(generic) * 17) ^
-            (_listHash(required) * 53) ^
-            (_listHash(optional) ^ 31) ^
-            (_listHash(named) * 87)) &
-        0xFFFFFFFF;
-  }
-
-  bool get usesT {
-    return returnType?.usesT == true ||
-        [generic, required, optional, named].any(_listUsesT);
-  }
-}
-
-class NominalType implements TypeLike {
-  final String prefix;
-  final String name;
-  final List<TypeLike> generic;
-
-  NominalType(this.name, [this.prefix, this.generic]);
-
-  @override
-  writeIdentifier(buffer) {
-    buffer.write(prefix);
-    buffer.write("_");
-    buffer.write(name);
-    _describeList(buffer, generic);
-  }
-
-  @override
-  writeType(buffer) {
-    if (prefix != null && prefix != "") {
-      buffer.write(prefix);
-      buffer.write(".");
-    }
-    if (shouldReplaceTWithInt && name == "T") {
-      buffer.write("int");
-    } else {
-      buffer.write(name);
-    }
-    _writeTypes(buffer, generic, "<", ">");
-  }
-
-  bool operator ==(other) {
-    return other is NominalType && prefix == other.prefix && name == other.name;
-  }
-
-  int get hashCode {
-    return ((prefix.hashCode * 37) ^ name.hashCode) & 0xFFFFFFFF;
-  }
-
-  bool get usesT => name == "T" || _listUsesT(generic);
-}
-
-List<FunctionType> buildFunctionTypes() {
-  List<GenericParameter> as = [
-    new GenericParameter("A"),
-    // new GenericParameter("A", new NominalType("int")),
-    // new GenericParameter("A", new NominalType("int", "core")),
-  ];
-  List<GenericParameter> bs = [
-    // new GenericParameter("B"),
-    // new GenericParameter("B", new NominalType("int")),
-    new GenericParameter("B", new NominalType("int", "core")),
-  ];
-  List<TypeLike> basicTypes = [
-    new NominalType("int"),
-    // new NominalType("int", "core"),
-    // new NominalType("List"),
-    // new NominalType("List", "core"),
-    new NominalType("Function"),
-    new NominalType("List", "", [new NominalType("Function")]),
-    new NominalType("List", "core", [new NominalType("int", "core")]),
-    new NominalType("List", "", [new NominalType("T")]),
-    // new NominalType("List", "", [new NominalType("Function")]),
-  ];
-
-  List<TypeLike> basicsPlusNull = [
-    basicTypes,
-    <TypeLike>[null]
-  ].expand((x) => x).toList();
-
-  List<TypeLike> basicsPlusNullPlusVoid = [
-    basicsPlusNull,
-    [new NominalType("void")],
-  ].expand((x) => x).toList();
-
-  List<TypeLike> basicsPlusNullPlusB = [
-    basicsPlusNull,
-    [
-      new NominalType("B"),
-      new NominalType("List", "", [new NominalType("B")])
-    ]
-  ].expand((x) => x).toList();
-
-  List<TypeLike> basicsPlusNullPlusBPlusVoid = [
-    basicsPlusNullPlusB,
-    [new NominalType("void")],
-  ].expand((x) => x).toList();
-
-  List<TypeLike> basicsPlusNullPlusA = [
-    basicsPlusNull,
-    [
-      new NominalType("A"),
-      new NominalType("List", "", [new NominalType("A")])
-    ]
-  ].expand((x) => x).toList();
-
-  List<TypeLike> basicsPlusNullPlusAPlusVoid = [
-    basicsPlusNullPlusA,
-    [new NominalType("void")],
-  ].expand((x) => x).toList();
-
-  List<TypeLike> buildFunctionTypes(TypeLike returnType, TypeLike parameterType,
-      [List<GenericParameter> generics,
-      bool generateMoreCombinations = false]) {
-    List<TypeLike> result = [];
-
-    if (parameterType == null) {
-      // int Function().
-      result.add(new FunctionType(returnType, generics, null));
-      return result;
-    }
-
-    // int Function(int x).
-    result.add(new FunctionType(
-        returnType, generics, [new Parameter(parameterType, "x")]));
-
-    if (!generateMoreCombinations) return result;
-
-    // int Function([int x]).
-    result.add(new FunctionType(
-        returnType, generics, null, [new Parameter(parameterType, "x")]));
-    // int Function(int, [int x])
-    result.add(new FunctionType(
-        returnType,
-        generics,
-        [new Parameter(new NominalType("int"), null)],
-        [new Parameter(parameterType, "x")]));
-    // int Function(int x, [int x])
-    result.add(new FunctionType(
-        returnType,
-        generics,
-        [new Parameter(new NominalType("int"), "y")],
-        [new Parameter(parameterType, "x")]));
-    // int Function(int);
-    result.add(new FunctionType(
-        returnType, generics, [new Parameter(parameterType, null)]));
-    // int Function([int]);
-    result.add(new FunctionType(
-        returnType, generics, null, [new Parameter(parameterType, null)]));
-    // int Function(int, [int])
-    result.add(new FunctionType(
-        returnType,
-        generics,
-        [new Parameter(new NominalType("int"), null)],
-        [new Parameter(parameterType, null)]));
-    // int Function(int x, [int])
-    result.add(new FunctionType(
-        returnType,
-        generics,
-        [new Parameter(new NominalType("int"), "x")],
-        [new Parameter(parameterType, null)]));
-    // int Function({int x}).
-    result.add(new FunctionType(
-        returnType, generics, null, null, [new Parameter(parameterType, "x")]));
-    // int Function(int, {int x})
-    result.add(new FunctionType(
-        returnType,
-        generics,
-        [new Parameter(new NominalType("int"), null)],
-        null,
-        [new Parameter(parameterType, "x")]));
-    // int Function(int x, {int x})
-    result.add(new FunctionType(
-        returnType,
-        generics,
-        [new Parameter(new NominalType("int"), "y")],
-        null,
-        [new Parameter(parameterType, "x")]));
-    return result;
-  }
-
-  // The "smaller" function types. May also be used non-nested.
-  List<TypeLike> functionTypes = [];
-
-  for (TypeLike returnType in basicsPlusNullPlusVoid) {
-    for (TypeLike parameterType in basicsPlusNull) {
-      bool generateMoreCombinations = true;
-      functionTypes.addAll(buildFunctionTypes(
-          returnType, parameterType, null, generateMoreCombinations));
-    }
-  }
-
-  // These use `B` from the generic type of the enclosing function.
-  List<TypeLike> returnFunctionTypesB = [];
-  for (TypeLike returnType in basicsPlusNullPlusBPlusVoid) {
-    TypeLike parameterType = new NominalType("B");
-    returnFunctionTypesB.addAll(buildFunctionTypes(returnType, parameterType));
-  }
-  for (TypeLike parameterType in basicsPlusNull) {
-    TypeLike returnType = new NominalType("B");
-    returnFunctionTypesB.addAll(buildFunctionTypes(returnType, parameterType));
-  }
-
-  for (TypeLike returnType in basicsPlusNullPlusAPlusVoid) {
-    for (TypeLike parameterType in basicsPlusNullPlusA) {
-      for (GenericParameter a in as) {
-        functionTypes
-            .addAll(buildFunctionTypes(returnType, parameterType, [a]));
-      }
-    }
-  }
-
-  List<TypeLike> types = [];
-  types.addAll(functionTypes);
-
-  // Now add some higher-order function types.
-  for (TypeLike returnType in functionTypes) {
-    types.addAll(buildFunctionTypes(returnType, null));
-    types.addAll(buildFunctionTypes(returnType, new NominalType("int")));
-    for (var b in bs) {
-      types.addAll(buildFunctionTypes(returnType, null, [b]));
-      types.addAll(buildFunctionTypes(returnType, new NominalType("int"), [b]));
-    }
-  }
-  for (TypeLike returnType in returnFunctionTypesB) {
-    for (var b in bs) {
-      types.addAll(buildFunctionTypes(returnType, null, [b]));
-      types.addAll(buildFunctionTypes(returnType, new NominalType("int"), [b]));
-    }
-  }
-
-  return types;
-}
-
-final String HEADER = """
-// 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.
-
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-// GENERATED - DON'T EDIT.
-
-import 'dart:core';
-import 'dart:core' as core;
-import 'package:expect/expect.dart';
-
-@NoInline()
-@AssumeDynamic()
-confuse(f) => f;
-""";
-
-class Unit {
-  int typeCounter = 0;
-  final String name;
-  final StringBuffer typedefs = new StringBuffer();
-  final StringBuffer globals = new StringBuffer();
-  final StringBuffer tests = new StringBuffer();
-  final StringBuffer fields = new StringBuffer();
-  final StringBuffer statics = new StringBuffer();
-  final StringBuffer testMethods = new StringBuffer();
-  final StringBuffer methods = new StringBuffer();
-
-  Unit(this.name);
-
-  void write(StringBuffer buffer) {
-    buffer.write("""
-$HEADER
-
-$typedefs
-
-$globals
-
-class $name<T> {
-  final bool tIsBool;
-  final bool tIsInt;
-  final bool tIsDynamic;
-
-$fields
-
-  $name({this.tIsBool: false, this.tIsInt: false})
-      : tIsDynamic = !tIsBool && !tIsInt;
-
-$methods
-
-  runTests() {\n$tests  }
-
-$testMethods
-}
-
-void main() {
-  new $name().runTests();
-  new $name<int>(tIsInt: true).runTests();
-  new $name<bool>(tIsBool: true).runTests();
-}
-    """);
-  }
-}
-
-final TEST_METHOD_HEADER = """
-  /// #typeCode
-  void #testName() {""";
-
-// Tests that apply for every type.
-final COMMON_TESTS_TEMPLATE = """
-    Expect.isTrue(#staticFunName is #typeName);
-    Expect.isTrue(confuse(#staticFunName) is #typeName);
-    // In checked mode, verifies the type.
-    #typeCode #localName;
-    // The static function #staticFunName sets `T` to `int`.
-    if (!tIsBool) {
-      #fieldName = #staticFunName as dynamic;
-      #localName = #staticFunName as dynamic;
-      #fieldName = confuse(#staticFunName);
-      #localName = confuse(#staticFunName);
-    }
-
-    Expect.isTrue(#methodFunName is #typeName);
-    Expect.isTrue(#methodFunName is #typeCode);
-    Expect.isTrue(confuse(#methodFunName) is #typeName);
-    // In checked mode, verifies the type.
-    #fieldName = #methodFunName;
-    #localName = #methodFunName;
-    #fieldName = confuse(#methodFunName);
-    #localName = confuse(#methodFunName);""";
-
-// Tests that depend on the typedef "T" argument.
-//
-// These tests are executed when the surrounding class is instantiated with
-// its generic type set to `int`, `dynamic` or `bool`. In the latter case, the
-// class field `tIsBool` is set to true.
-
-// While the types themselves are not affected by the class` `T`, the methods
-// of the class may use `T`:
-//
-// For example:
-//   class A<T> {
-//      f(List<T> x) {}
-//   }
-final TYPEDEF_T_TESTS_TEMPLATE = """
-    if (!tIsBool) {
-      Expect.isTrue(#staticFunName is #typeName<int>);
-      Expect.isFalse(#staticFunName is #typeName<bool>);
-      Expect.isTrue(confuse(#staticFunName) is #typeName<int>);
-      Expect.isFalse(confuse(#staticFunName) is #typeName<bool>);
-      Expect.equals(tIsDynamic, #methodFunName is #typeName<bool>);
-      Expect.equals(tIsDynamic, confuse(#methodFunName) is #typeName<bool>);
-    } else {
-      if (typeAssertionsEnabled) {
-        Expect.throws(() { #fieldName = (#staticFunName as dynamic); });
-        Expect.throws(() { #fieldName = confuse(#staticFunName); });
-        #typeCode #localName;
-        Expect.throws(() { #localName = (#staticFunName as dynamic); });
-        Expect.throws(() { #localName = confuse(#staticFunName); });
-      }
-      #typeCode #localName = #methodFunName;
-      // In checked mode, verifies the type.
-      #fieldName = #methodFunName;
-      #fieldName = confuse(#methodFunName);
-    }""";
-
-final TEST_METHOD_FOOTER = "  }";
-
-String createTypeName(int id) => "F$id";
-String createStaticFunName(int id) => "f$id";
-String createMethodFunName(int id) => "m$id";
-String createFieldName(int id) => "x$id";
-String createLocalName(int id) => "l$id";
-String createTestName(int id) => "test${createTypeName(id)}";
-
-String createTypeCode(FunctionType type) {
-  StringBuffer typeBuffer = new StringBuffer();
-  type.writeType(typeBuffer);
-  return typeBuffer.toString();
-}
-
-String createStaticFunCode(FunctionType type, int id) {
-  StringBuffer staticFunBuffer = new StringBuffer();
-  type.writeFunction(staticFunBuffer, createStaticFunName(id));
-  return staticFunBuffer.toString();
-}
-
-String createMethodFunCode(FunctionType type, int id) {
-  StringBuffer methodFunBuffer = new StringBuffer();
-  type.writeFunction(methodFunBuffer, createMethodFunName(id), replaceT: false);
-  return methodFunBuffer.toString();
-}
-
-String createTestMethodFunCode(FunctionType type, String typeCode, int id) {
-  String fillTemplate(String template, int id) {
-    var result = template
-        .replaceAll("#typeName", createTypeName(id))
-        .replaceAll("#staticFunName", createStaticFunName(id))
-        .replaceAll("#methodFunName", createMethodFunName(id))
-        .replaceAll("#fieldName", createFieldName(id))
-        .replaceAll("#localName", createLocalName(id))
-        .replaceAll("#testName", createTestName(id))
-        .replaceAll("#typeCode", typeCode);
-    assert(!result.contains("#"));
-    return result;
-  }
-
-  String commonTests = fillTemplate(COMMON_TESTS_TEMPLATE, id);
-  String genericTTests = "";
-  if (type.usesT) {
-    genericTTests = fillTemplate(TYPEDEF_T_TESTS_TEMPLATE, id);
-  }
-  return """
-${fillTemplate(TEST_METHOD_HEADER, id)}
-$commonTests
-$genericTTests
-$TEST_METHOD_FOOTER
-""";
-}
-
-void generateTests() {
-  // Keep methods and classes smaller by distributing over several different
-  // classes.
-  List<Unit> units = [];
-  for (int i = 0; i < 100; i++) {
-    units.add(new Unit("U$i"));
-  }
-
-  var types = buildFunctionTypes();
-
-  int unitCounter = 0;
-  types.forEach((FunctionType type) {
-    Unit unit = units[unitCounter % units.length];
-    unitCounter++;
-    int typeCounter = unit.typeCounter++;
-
-    String typeName = createTypeName(typeCounter);
-    String fieldName = createFieldName(typeCounter);
-    String testName = createTestName(typeCounter);
-
-    String typeCode = createTypeCode(type);
-    String staticFunCode = createStaticFunCode(type, typeCounter);
-    String methodFunCode = createMethodFunCode(type, typeCounter);
-    String testMethodCode =
-        createTestMethodFunCode(type, typeCode, typeCounter);
-
-    unit.typedefs.writeln("typedef $typeName<T> = $typeCode;");
-    unit.globals.writeln(staticFunCode);
-    unit.fields.writeln("  $typeCode $fieldName;");
-    unit.methods.writeln("  $methodFunCode");
-    unit.testMethods.writeln("$testMethodCode");
-    unit.tests.writeln("    $testName();");
-  });
-
-  for (int i = 0; i < units.length; i++) {
-    var unit = units[i];
-    var buffer = new StringBuffer();
-    unit.write(buffer);
-    var path = Platform.script.resolve("function_type${i}_test.dart").path;
-    new File(path).writeAsStringSync(buffer.toString());
-  }
-}
-
-void printUsage() {
-  print("""
-Generates function type tests.
-
-All tests are generated in the same directory as this script.
-""");
-}
-
-void main(List<String> arguments) {
-  if (arguments.length != 0) {
-    printUsage();
-    return;
-  }
-  generateTests();
-}
diff --git a/tests/language/function_type2_test.dart b/tests/language/function_type2_test.dart
deleted file mode 100644
index 7bd41a8..0000000
--- a/tests/language/function_type2_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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";
-
-bool get inCheckedMode {
-  try {
-    String a = 42;
-  } catch (e) {
-    return true;
-  }
-  return false;
-}
-
-class A<T> {
-  A(f) {
-    f(42);
-  }
-}
-
-class B<T> extends A<T> {
-  B() : super((T param) => 42);
-}
-
-main() {
-  var t = new B<int>();
-  bool caughtException = false;
-
-  try {
-    new B<String>();
-  } on TypeError catch (e) {
-    caughtException = true;
-  }
-  Expect.isTrue(!inCheckedMode || caughtException);
-}
diff --git a/tests/language/function_type3_test.dart b/tests/language/function_type3_test.dart
deleted file mode 100644
index 6c10c9f..0000000
--- a/tests/language/function_type3_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class A<T> {
-  @NoInline()
-  A();
-
-  @NoInline()
-  foo() => new B<T>();
-}
-
-class B<T> {
-  T bar() => null;
-}
-
-typedef F();
-typedef F2(x);
-
-// Dart2js realized that the generic type for A was not needed, but then used
-// it nevertheless when it constructed the closure.
-main() {
-  var f = new A<int>().foo().bar;
-  Expect.isTrue(f is F);
-  Expect.isFalse(f is F2);
-}
diff --git a/tests/language/function_type_alias2_test.dart b/tests/language/function_type_alias2_test.dart
deleted file mode 100644
index f3302ec..0000000
--- a/tests/language/function_type_alias2_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Dart test for function type alias with optional parameters.
-
-import "package:expect/expect.dart";
-
-typedef int f1<T>([int a, int b, T c]);
-typedef int f2<T>([int a, int b, T d]);
-typedef int f3<T>({int a, int b, T c});
-typedef int f4<T>({int a, int b, T d});
-
-class A<T> {
-  int baz([int a, int b, T c]) {}
-  int bar({int a, int b, T c}) {}
-}
-
-int baz([int a, int b, int c]) {}
-
-int bar({int a, int b, int c}) {}
-
-main() {
-  Expect.isTrue(baz is f1);
-  Expect.isFalse(baz is f3);
-  Expect.isFalse(bar is f1);
-  Expect.isTrue(bar is f3);
-  Expect.isTrue(baz is f1);
-  Expect.isTrue(baz is f1<int>);
-  Expect.isTrue(bar is f3<int>);
-  Expect.isFalse(baz is f1<double>);
-  Expect.isFalse(bar is f3<double>);
-  Expect.isTrue(baz is f2);
-  Expect.isFalse(bar is f4);
-  Expect.isTrue(baz is f2<int>);
-  Expect.isFalse(bar is f2<int>);
-
-  A<int> a = new A<int>();
-  Expect.isTrue(a.baz is f1);
-  Expect.isFalse(a.baz is f3);
-  Expect.isFalse(a.bar is f1);
-  Expect.isTrue(a.bar is f3);
-  Expect.isTrue(a.baz is f1);
-  Expect.isTrue(a.baz is f1<int>);
-  Expect.isTrue(a.bar is f3<int>);
-  Expect.isFalse(a.baz is f1<double>);
-  Expect.isFalse(a.bar is f3<double>);
-  Expect.isTrue(a.baz is f2);
-  Expect.isFalse(a.bar is f4);
-  Expect.isTrue(a.baz is f2<int>);
-  Expect.isFalse(a.bar is f2<int>);
-}
diff --git a/tests/language/function_type_alias3_test.dart b/tests/language/function_type_alias3_test.dart
deleted file mode 100644
index 740ae3c..0000000
--- a/tests/language/function_type_alias3_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Dart test for function type alias with an imported result type that happens
-// to have the same name as a type parameter.
-
-library main;
-
-import "package:expect/expect.dart";
-import "library11.dart" as lib11;
-
-typedef lib11.Library111<Library111> F<Library111>(
-    lib11.Library111<Library111> a, Library111 b);
-
-class A<T> {
-  T foo(T a, bool b) {}
-}
-
-main() {
-  var a = new A<lib11.Library111<bool>>();
-  var b = new A<lib11.Library111<int>>();
-  Expect.isTrue(a.foo is F);
-  Expect.isTrue(a.foo is F<bool>);
-  Expect.isTrue(a.foo is! F<int>);
-  Expect.isTrue(b.foo is F);
-  Expect.isTrue(b.foo is! F<bool>);
-  Expect.isTrue(a.foo is! F<int>);
-}
diff --git a/tests/language/function_type_alias4_test.dart b/tests/language/function_type_alias4_test.dart
deleted file mode 100644
index 0240afc..0000000
--- a/tests/language/function_type_alias4_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Dart test for function type alias with a type parameter as result type.
-
-import "package:expect/expect.dart";
-
-typedef bool F<bool>(bool a); // 'bool' is not the boolean type.
-
-bool bar(bool a) {}
-
-int baz(int a) {}
-
-class A<T> {
-  T foo(T a) {}
-}
-
-main() {
-  Expect.isTrue(bar is F);
-  Expect.isTrue(baz is F);
-  Expect.isTrue(bar is F<bool>);
-  Expect.isTrue(baz is F<int>);
-  Expect.isTrue(bar is! F<int>);
-  Expect.isTrue(baz is! F<bool>);
-
-  var b = new A<bool>();
-  var i = new A<int>();
-  Expect.isTrue(b.foo is F);
-  Expect.isTrue(i.foo is F);
-  Expect.isTrue(b.foo is F<bool>);
-  Expect.isTrue(i.foo is F<int>);
-  Expect.isTrue(b.foo is! F<int>);
-  Expect.isTrue(i.foo is! F<bool>);
-}
diff --git a/tests/language/function_type_alias5_test.dart b/tests/language/function_type_alias5_test.dart
deleted file mode 100644
index 7f60a4e..0000000
--- a/tests/language/function_type_alias5_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-// Dart test for illegally self referencing function type alias.
-
-typedef Handle Handle(String command); // //# 00: compile-time error
-
-typedef F(F x); // //# 01: compile-time error
-
-typedef A(B x); // //# 02: compile-time error
-typedef B(A x); // //# 02: continued
-
-main() {
-  Handle h; // //# 00: continued
-  F f; // //# 01: continued
-  A f; // //# 02: continued
-}
diff --git a/tests/language/function_type_alias6_test.dart b/tests/language/function_type_alias6_test.dart
deleted file mode 100644
index 345e213..0000000
--- a/tests/language/function_type_alias6_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-// Dart test for legally self referencing function type alias.
-
-import "package:expect/expect.dart";
-
-typedef F(
-    List
-              <F> // //# 00: compile-time error
-        x);
-
-typedef D C();
-
-class D {
-  C foo() {}
-  D bar() {}
-}
-
-main() {
-  var f = (List x) {};
-  Expect.isTrue(f is F);
-  var g = (List<F> x) {};
-  Expect.isTrue(g is F);
-  var d = new D();
-  Expect.isTrue(d.foo is! C);
-  Expect.isTrue(d.bar is C);
-}
diff --git a/tests/language/function_type_alias7_test.dart b/tests/language/function_type_alias7_test.dart
deleted file mode 100644
index 462a376..0000000
--- a/tests/language/function_type_alias7_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-typedef void funcType([int arg]);
-
-typedef void badFuncType([int arg = 0]); // //# 00: compile-time error
-
-typedef void badFuncType({int arg: 0}); // //# 02: compile-time error
-
-class A
-  extends funcType // //# 01: compile-time error
-{}
-
-main() {
-  new A();
-  badFuncType f; // //# 00: continued
-  badFuncType f; // //# 02: continued
-}
diff --git a/tests/language/function_type_alias8_test.dart b/tests/language/function_type_alias8_test.dart
deleted file mode 100644
index 10f3f8e..0000000
--- a/tests/language/function_type_alias8_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for issue 9442.
-
-typedef dynamic GetFromThing<T extends Thing>(T target);
-
-typedef GetFromThing<T> DefGetFromThing<T extends Thing>(dynamic def);
-
-class Thing {}
-
-class Test {
-  static final DefGetFromThing<Thing> fromThing = (dynamic def) {};
-}
-
-main() {
-  Test.fromThing(10);
-}
diff --git a/tests/language/function_type_alias9_test.dart b/tests/language/function_type_alias9_test.dart
deleted file mode 100644
index fa8aac2..0000000
--- a/tests/language/function_type_alias9_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-// Dart test for legally self referencing function type alias.
-
-typedef void F(
-    List
-                   <G> // //# 00: compile-time error
-        l);
-typedef void G(List<F> l);
-
-main() {
-  F foo(G g) => g;
-  foo(null);
-}
diff --git a/tests/language/function_type_alias_test.dart b/tests/language/function_type_alias_test.dart
deleted file mode 100644
index 0b3469f..0000000
--- a/tests/language/function_type_alias_test.dart
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Dart test for function type alias.
-
-import "package:expect/expect.dart";
-
-typedef Fun(a, b);
-
-typedef int IntFun(a, b);
-
-typedef bool BoolFun(a, b);
-
-typedef int CompareObj(Object a, Object b);
-
-typedef int CompareInt(int a, int b);
-
-typedef int CompareString(String a, String b, [bool swap]);
-
-typedef void Test();
-
-typedef ParameterizedFun1<T, U extends bool, V>(T t, U u);
-
-typedef List<T> ParameterizedFun2<T, U, V extends Map<T, int>>(
-    Map<T, int> t, U u);
-
-typedef void BoundsCheck<T extends num>(T arg);
-
-class FunctionTypeAliasTest {
-  FunctionTypeAliasTest() {}
-  static int test(CompareObj compare, Object a, Object b) {
-    return compare(a, b);
-  }
-
-  foo(Test arg) {}
-  static bar() {
-    FunctionTypeAliasTest a = new FunctionTypeAliasTest();
-    a.foo(() {});
-    return 0;
-  }
-
-  static void testMain() {
-    int compareStrLen(String a, String b) {
-      return a.length - b.length;
-    }
-
-    Expect.isTrue(compareStrLen is Fun);
-    Expect.isTrue(compareStrLen is IntFun);
-    Expect.isTrue(compareStrLen is! BoolFun);
-    Expect.isTrue(compareStrLen is CompareObj);
-    Expect.isTrue(compareStrLen is! CompareInt);
-    Expect.isTrue(compareStrLen is! CompareString);
-    Expect.equals(3, test(compareStrLen, "abcdef", "xyz"));
-
-    int compareStrLenSwap(String a, String b, [bool swap = false]) {
-      return swap ? (a.length - b.length) : (b.length - a.length);
-    }
-
-    Expect.isTrue(compareStrLenSwap is Fun);
-    Expect.isTrue(compareStrLenSwap is IntFun);
-    Expect.isTrue(compareStrLenSwap is! BoolFun);
-    Expect.isTrue(compareStrLenSwap is CompareObj);
-    Expect.isTrue(compareStrLenSwap is! CompareInt);
-    Expect.isTrue(compareStrLenSwap is CompareString);
-
-    int compareStrLenReverse(String a, String b, [bool reverse = false]) {
-      return reverse ? (a.length - b.length) : (b.length - a.length);
-    }
-
-    Expect.isTrue(compareStrLenReverse is Fun);
-    Expect.isTrue(compareStrLenReverse is IntFun);
-    Expect.isTrue(compareStrLenReverse is! BoolFun);
-    Expect.isTrue(compareStrLenReverse is CompareObj);
-    Expect.isTrue(compareStrLenReverse is! CompareInt);
-    Expect.isTrue(compareStrLenReverse is CompareString);
-
-    int compareObj(Object a, Object b) {
-      return identical(a, b) ? 0 : -1;
-    }
-
-    Expect.isTrue(compareObj is Fun);
-    Expect.isTrue(compareObj is IntFun);
-    Expect.isTrue(compareObj is! BoolFun);
-    Expect.isTrue(compareObj is CompareObj);
-    Expect.isTrue(compareObj is CompareInt);
-    Expect.isTrue(compareObj is! CompareString);
-    Expect.equals(-1, test(compareObj, "abcdef", "xyz"));
-
-    CompareInt minus = (int a, int b) {
-      return a - b;
-    };
-    Expect.isTrue(minus is Fun);
-    Expect.isTrue(compareStrLen is IntFun);
-    Expect.isTrue(compareStrLen is! BoolFun);
-    Expect.isTrue(minus is CompareObj);
-    Expect.isTrue(minus is CompareInt);
-    Expect.isTrue(minus is! CompareString);
-    Expect.equals(99, test(minus, 100, 1));
-
-    int plus(int a, [int b = 1]) {
-      return a + b;
-    }
-
-    ;
-    Expect.isTrue(plus is Fun);
-    Expect.isTrue(plus is IntFun);
-    Expect.isTrue(plus is! BoolFun);
-    Expect.isTrue(plus is CompareObj);
-    Expect.isTrue(plus is CompareInt);
-    Expect.isTrue(plus is! CompareString);
-
-    Expect.equals(0, bar());
-
-    Function boundsTrue = (int arg) {};
-    Function boundsFalse = (String arg) {};
-    Expect.isTrue(boundsTrue is BoundsCheck<num>);
-    Expect.isFalse(boundsFalse is BoundsCheck<num>);
-  }
-}
-
-main() {
-  FunctionTypeAliasTest.testMain();
-}
diff --git a/tests/language/function_type_call_getter2_test.dart b/tests/language/function_type_call_getter2_test.dart
deleted file mode 100644
index 4c75ea5..0000000
--- a/tests/language/function_type_call_getter2_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class A {
-  final call = null;
-}
-
-class B {
-  get call => null;
-}
-
-class C {
-  set call(x) {}
-}
-
-typedef int F(String str);
-
-main() {
-  A a = new A();
-  B b = new B();
-  C c = new C();
-
-  final
-  Function // //# 00: static type warning, dynamic type error
-      a2 = a;
-
-  final
-  F // //# 01: static type warning, dynamic type error
-      a3 = a;
-
-  final
-  Function // //# 02: static type warning, dynamic type error
-      b2 = b;
-
-  final
-  F // //# 03: static type warning, dynamic type error
-      b3 = b;
-
-  final
-  Function // //# 04: static type warning, dynamic type error
-      c2 = c;
-
-  final
-  F // //# 05: static type warning, dynamic type error
-      c3 = c;
-}
diff --git a/tests/language/function_type_call_getter_test.dart b/tests/language/function_type_call_getter_test.dart
deleted file mode 100644
index 52ecbaa..0000000
--- a/tests/language/function_type_call_getter_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class A {
-  final call = null;
-}
-
-class B {
-  get call => null;
-}
-
-class C {
-  set call(x) {}
-}
-
-typedef int F(String str);
-
-main() {
-  Expect.isFalse(new A() is Function);
-  Expect.isFalse(new B() is Function);
-  Expect.isFalse(new C() is Function);
-  Expect.isFalse(new A() is F);
-  Expect.isFalse(new B() is F);
-  Expect.isFalse(new C() is F);
-}
diff --git a/tests/language/function_type_parameter2_negative_test.dart b/tests/language/function_type_parameter2_negative_test.dart
deleted file mode 100644
index a4c31f2..0000000
--- a/tests/language/function_type_parameter2_negative_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that we detect that a function literal is not
-// a compile time constant.
-
-class FunctionTypeParameterNegativeTest {
-  static var formatter;
-
-  static SetFormatter([String fmt(int i) = (i) => "$i"]) {
-    formatter = fmt;
-  }
-
-  static void testMain() {
-    SetFormatter();
-  }
-}
-
-main() {
-  FunctionTypeParameterNegativeTest.testMain();
-}
diff --git a/tests/language/function_type_parameter2_test.dart b/tests/language/function_type_parameter2_test.dart
deleted file mode 100644
index 8ea4487..0000000
--- a/tests/language/function_type_parameter2_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test to check that we can parse closure type formal parameters with
-// default value.
-
-import "package:expect/expect.dart";
-
-class FunctionTypeParameterTest {
-  static var formatter;
-
-  static SetFormatter([String fmt(int i) = null]) {
-    formatter = fmt;
-  }
-
-  static void testMain() {
-    Expect.equals(null, formatter);
-    SetFormatter((i) => "$i");
-    Expect.equals(false, null == formatter);
-    Expect.equals("1234", formatter(1230 + 4));
-    SetFormatter();
-    Expect.equals(null, formatter);
-  }
-}
-
-main() {
-  FunctionTypeParameterTest.testMain();
-}
diff --git a/tests/language/function_type_parameter_negative_test.dart b/tests/language/function_type_parameter_negative_test.dart
deleted file mode 100644
index 9e2f006..0000000
--- a/tests/language/function_type_parameter_negative_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test that we detect that a function literal is not a compile time constant.
-
-class A {
-  static Function func;
-
-  static SetFunc([String fmt(int i) = (i) => "$i"]) {
-    func = fmt;
-  }
-}
-
-main() {
-  A.SetFunc();
-}
diff --git a/tests/language/function_type_parameter_test.dart b/tests/language/function_type_parameter_test.dart
deleted file mode 100644
index 586f836..0000000
--- a/tests/language/function_type_parameter_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test to check that we can parse closure type formal parameters with
-// default value.
-
-class A {
-  final f;
-  A(int this.f());
-  const A.nother(int this.f());
-
-  static Function func;
-
-  static SetFunc([String fmt(int i) = null]) {
-    func = fmt;
-  }
-}
-
-main() {
-  Expect.equals(null, A.func);
-  A.SetFunc((i) => "$i");
-  Expect.equals(false, null == A.func);
-  Expect.equals("1234", A.func(1230 + 4));
-  A.SetFunc();
-  Expect.equals(null, A.func);
-
-  Expect.equals(42, new A(() => 42).f());
-  Expect.equals(42, new A.nother(() => 42).f());
-}
diff --git a/tests/language/function_type_test.dart b/tests/language/function_type_test.dart
deleted file mode 100644
index b58c9a4..0000000
--- a/tests/language/function_type_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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.
-// Dart test for a function type test that cannot be eliminated at compile time.
-
-import "package:expect/expect.dart";
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-typedef FList(List l);
-typedef FListInt(List<int> l);
-
-FList f() {
-  return (List<String> l) => null; // Type of function is a subtype of FList.
-}
-
-main() {
-  bool got_type_error = false;
-  try {
-    // Static result type of f(), i.e. FList, is a subtype of FListInt.
-    // However, run time type of returned function is not a subtype of FListInt.
-    // Run time type check should not be eliminated.
-    FListInt fli = f();
-  } on TypeError catch (error) {
-    got_type_error = true;
-  }
-  // Type error expected in checked mode only.
-  Expect.isTrue(got_type_error == isCheckedMode());
-}
diff --git a/tests/language/function_type_this_parameter_test.dart b/tests/language/function_type_this_parameter_test.dart
deleted file mode 100644
index 4ce65c7..0000000
--- a/tests/language/function_type_this_parameter_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-// Check that function types are accepted for constructor arguments that
-// initialize fields.
-
-import "package:expect/expect.dart";
-
-class A {
-  Function f;
-  A(int this.f());
-}
-
-main() {
-  var a = new A(() => 499);
-  Expect.equals(499, (a.f)());
-}
diff --git a/tests/language/gc_test.dart b/tests/language/gc_test.dart
deleted file mode 100644
index 33e488c..0000000
--- a/tests/language/gc_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Testing GC, issue 1469.
-
-main() {
-  var div;
-  for (int i = 0; i < 200; ++i) {
-    List l = new List(1000000);
-    var m = 2;
-    div = (_) {
-      var b = l; // Was causing OutOfMemory.
-    };
-    var lSmall = new List(3);
-    // Circular reference between new and old gen objects.
-    lSmall[0] = l;
-    l[0] = lSmall;
-  }
-}
diff --git a/tests/language/generalized_void_syntax_test.dart b/tests/language/generalized_void_syntax_test.dart
deleted file mode 100644
index 0222eb3..0000000
--- a/tests/language/generalized_void_syntax_test.dart
+++ /dev/null
@@ -1,108 +0,0 @@
-// 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.
-
-// Testing that the reserved word `void` is allowed to occur as a type, not
-// just as a return type.
-
-class A<T> {
-  final T t;
-  const A(this.t);
-}
-
-const void x1 = null;
-const A<void> x2 = const A<void>(null);
-
-final void x3 = null;
-final A<void> x4 = new A<void>(null);
-
-void x5 = null, x6;
-A<void> x7 = new A<void>(null), x8;
-
-void get g1 => null;
-A<void> get g2 => new A<void>(null);
-void set s1(void x) => null;
-void set s2(A<void> x) => null;
-void m1(void x, [void y]) => null;
-void m2(void x, {void y}) => null;
-A<void> m3(A<void> x, [A<void> y]) => new A<void>(null);
-A<void> m4(A<void> x, {A<void> y}) => new A<void>(null);
-
-class B<S, T> implements A<void> { void get t => null; }
-
-class C extends A<void> with B<void, A<void>> {
-  C(): super(null);
-  
-  static final void x1 = null;
-  static final A<void> x2 = new A<void>(null);
-
-  static const void x3 = null;
-  static const A<void> x4 = const A<void>(null);
-
-  final void x5 = null;
-  final A<void> x6 = new A<void>(null);
-
-  static void x7 = null, x8;
-  static A<void> x9 = new A<void>(null), x10;
-
-  covariant void x11 = null, x12;
-  covariant A<void> x13 = new A<void>(null), x14;
-  
-  static void get g1 => null;
-  static A<void> get g2 => new A<void>(null);
-  static void set s1(void x) => null;
-  static void set s2(A<void> x) => null;
-  static void m1(void x, [void y]) => null;
-  static void m2(void x, {void y}) => null;
-  static A<void> m3(A<void> x, [A<void> y]) => null;
-  static A<void> m4(A<void> x, {A<void> y}) => null;
-
-  void get g3 => null;
-  A<void> get g4 => new A<void>(null);
-  void set s3(void x) => null;
-  void set s4(A<void> x) => null;
-  void m5(void x, [void y]) => null;
-  void m6(void x, {void y}) => null;
-  A<void> m7(A<void> x, [A<void> y]) => null;
-  A<void> m8(A<void> x, {A<void> y}) => null;
-
-  // Ensure that all members are used, and use `void` in expressions.
-  void run() {
-    var ignore = [
-      x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, //
-      g1, g2, g3, g4,
-    ];
-    
-    s1 = null;
-    s2 = new A<void>(null);
-    s3 = null;
-    s4 = new A<void>(null);
-    m1(null, null);
-    m2(null, y: null);
-    m3(null, new A<void>(null));
-    m4(null, y: new A<void>(null));
-    m5(null, null);
-    m6(null, y: null);
-    m7(null, new A<void>(null));
-    m8(null, y: new A<void>(null));
-
-    void pretendToUse(dynamic x) => null;
-    pretendToUse(<void>[]);
-    pretendToUse(<void, void>{});
-    pretendToUse(<A<void>>[]);
-    pretendToUse(<A<void>, A<void>>{});
-  }
-}
-
-// Testing syntax, just enforce compilation.
-main() {
-  var ignore = [x1, x2, x3, x4, x5, x6, x7, x8, g1, g2];
-
-  s1 = null;
-  s2 = new A<void>(null);
-  m1(null, null);
-  m2(null, y: null);
-  m3(null, null);
-  m4(null, y: null);
-  new C().run();
-}
diff --git a/tests/language/generic2_test.dart b/tests/language/generic2_test.dart
deleted file mode 100644
index 00cf5e6..0000000
--- a/tests/language/generic2_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test is-tests with type variables.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  foo(o) => o is T;
-}
-
-class B {}
-
-class C extends A<int> {}
-
-main() {
-  Expect.isTrue(new A<Object>().foo(new B()));
-  Expect.isTrue(new A<Object>().foo(1));
-  Expect.isFalse(new A<int>().foo(new Object()));
-  Expect.isFalse(new A<int>().foo('hest'));
-  Expect.isTrue(new A<B>().foo(new B()));
-  Expect.isFalse(new A<B>().foo(new Object()));
-  Expect.isFalse(new A<B>().foo(1));
-  Expect.isTrue(new C().foo(1));
-  Expect.isFalse(new C().foo(new Object()));
-  Expect.isFalse(new C().foo('hest'));
-  Expect.isTrue(new A<List<int>>().foo(new List<int>()));
-  Expect.isFalse(new A<List<int>>().foo(new List<String>()));
-}
diff --git a/tests/language/generic_closure_test.dart b/tests/language/generic_closure_test.dart
deleted file mode 100644
index 56ca38c..0000000
--- a/tests/language/generic_closure_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2014, 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.
-// Dart test program for constructors and initializers.
-
-// Check that generic closures are properly instantiated.
-
-import 'package:expect/expect.dart';
-
-typedef T F<T>(T x);
-typedef R G<T, R>(T x);
-
-class C<T> {
-  get f => (T x) => 2 * x;
-  T g(T x) => 3 * x;
-}
-
-main() {
-  var c = new C<int>();
-  var f = c.f;
-  var g = c.g;
-  Expect.equals(42, f(21));
-  Expect.equals(42, g(14));
-  Expect.isTrue(f is Function);
-  Expect.isTrue(g is Function);
-  Expect.isTrue(f is F);
-  Expect.isTrue(g is F);
-  Expect.isTrue(f is F<int>);
-  Expect.isTrue(g is F<int>);
-  Expect.isTrue(f is! F<bool>);
-  Expect.isTrue(g is! F<bool>);
-  Expect.isTrue(f is G<int, int>);
-  Expect.isTrue(g is G<int, int>);
-  Expect.isTrue(f is G<int, bool>);
-  Expect.isTrue(g is! G<int, bool>);
-  Expect.equals("(int) => dynamic", f.runtimeType.toString());
-  Expect.equals("(int) => int", g.runtimeType.toString());
-
-  c = new C<bool>();
-  f = c.f;
-  g = c.g;
-  Expect.isTrue(f is F);
-  Expect.isTrue(g is F);
-  Expect.isTrue(f is! F<int>);
-  Expect.isTrue(g is! F<int>);
-  Expect.isTrue(f is F<bool>);
-  Expect.isTrue(g is F<bool>);
-  Expect.equals("(bool) => dynamic", f.runtimeType.toString());
-  Expect.equals("(bool) => bool", g.runtimeType.toString());
-
-  c = new C();
-  f = c.f;
-  g = c.g;
-  Expect.isTrue(f is F);
-  Expect.isTrue(g is F);
-  Expect.isTrue(f is F<int>);
-  Expect.isTrue(g is F<int>);
-  Expect.isTrue(f is F<bool>);
-  Expect.isTrue(g is F<bool>);
-  Expect.equals("(dynamic) => dynamic", f.runtimeType.toString());
-  Expect.equals("(dynamic) => dynamic", g.runtimeType.toString());
-}
diff --git a/tests/language/generic_constructor_mixin2_test.dart b/tests/language/generic_constructor_mixin2_test.dart
deleted file mode 100644
index f1ca388..0000000
--- a/tests/language/generic_constructor_mixin2_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that parameter types types are checked correctly in the face of
-// mixin application upon a generic constructor.
-
-import 'checked_mode_helper.dart';
-
-class A<X> {
-  A(X x);
-}
-
-class B {}
-
-class C {}
-
-class D<Y> = A<Y> with B, C;
-
-void main() {
-  var v = 0;
-  checkNoDynamicTypeError(() => new D<int>(v));
-  checkDynamicTypeError(() => new D<String>(v));
-}
diff --git a/tests/language/generic_constructor_mixin3_test.dart b/tests/language/generic_constructor_mixin3_test.dart
deleted file mode 100644
index be43bd3..0000000
--- a/tests/language/generic_constructor_mixin3_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that parameter types types are checked correctly in the face of
-// mixin application upon a generic constructor.
-
-import 'checked_mode_helper.dart';
-
-class A<X> {
-  A(X x);
-}
-
-class B {}
-
-class C1 = A<int> with B;
-class C2 = A<String> with B;
-
-void main() {
-  var v = 0;
-  checkNoDynamicTypeError(() => new C1(v));
-  checkDynamicTypeError(() => new C2(v));
-}
diff --git a/tests/language/generic_constructor_mixin_test.dart b/tests/language/generic_constructor_mixin_test.dart
deleted file mode 100644
index 932d17b..0000000
--- a/tests/language/generic_constructor_mixin_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that parameter types types are checked correctly in the face of
-// mixin application upon a generic constructor.
-
-import 'checked_mode_helper.dart';
-
-class A<X> {
-  A(X x);
-}
-
-class B {}
-
-class C<Y> = A<Y> with B;
-
-void main() {
-  var v = 0;
-  checkNoDynamicTypeError(() => new C<int>(v));
-  checkDynamicTypeError(() => new C<String>(v));
-}
diff --git a/tests/language/generic_creation_test.dart b/tests/language/generic_creation_test.dart
deleted file mode 100644
index eb3c4ef..0000000
--- a/tests/language/generic_creation_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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";
-
-class A<X, Y, Z> {
-  shift() => new A<Z, X, Y>();
-  swap() => new A<Z, Y, X>();
-  first() => new A<X, X, X>();
-  last() => new A<Z, Z, Z>();
-  wrap() => new A<A<X, X, X>, A<Y, Y, Y>, A<Z, Z, Z>>();
-}
-
-class B extends A<U, V, W> {}
-
-class C<T> extends A<U, T, W> {}
-
-class D<X, Y, Z> extends A<Y, Z, X> {}
-
-class U {}
-
-class V {}
-
-class W {}
-
-sameType(a, b) => Expect.equals(a.runtimeType, b.runtimeType);
-
-main() {
-  A a = new A<U, V, W>();
-  sameType(new A<W, U, V>(), a.shift());
-  sameType(new A<W, V, U>(), a.swap());
-  sameType(new A<U, U, U>(), a.first());
-  sameType(new A<W, W, W>(), a.last());
-  sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), a.wrap());
-  B b = new B();
-  sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), b.wrap());
-  C c = new C<V>();
-  sameType(new A<A<U, U, U>, A<V, V, V>, A<W, W, W>>(), c.wrap());
-  D d = new D<U, V, W>();
-  sameType(new A<A<V, V, V>, A<W, W, W>, A<U, U, U>>(), d.wrap());
-}
diff --git a/tests/language/generic_deep_test.dart b/tests/language/generic_deep_test.dart
deleted file mode 100644
index f907cea..0000000
--- a/tests/language/generic_deep_test.dart
+++ /dev/null
@@ -1,92 +0,0 @@
-// 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";
-
-// Dart test for deeply nested generic types.
-
-/** A natural number aka Peano number. */
-abstract class N {
-  N add1();
-  N sub1();
-}
-
-/** Zero element. */
-class Z implements N {
-  Z();
-  N add1() {
-    return new S<Z>(this);
-  }
-
-  N sub1() {
-    throw "Error: sub1(0)";
-  }
-}
-
-/** Successor element. */
-class S<K> implements N {
-  N before;
-  S(this.before);
-  N add1() {
-    return new S<S<K>>(this);
-  }
-
-  N sub1() {
-    // It would be super cool if this could be "new K()".
-    return before;
-  }
-}
-
-N NFromInt(int x) {
-  if (x == 0)
-    return new Z();
-  else
-    return NFromInt(x - 1).add1();
-}
-
-int IntFromN(N x) {
-  if (x is Z) return 0;
-  if (x is S) return IntFromN(x.sub1()) + 1;
-  throw "Error";
-}
-
-bool IsEven(N x) {
-  if (x is Z) return true;
-  if (x is S<Z>) return false;
-  if (x is S<S>) return IsEven(x.sub1().sub1());
-  throw "Error in IsEven";
-}
-
-main() {
-  Expect.isTrue(NFromInt(0) is Z);
-  Expect.isTrue(NFromInt(1) is S<Z>);
-  Expect.isTrue(NFromInt(2) is S<S<Z>>);
-  Expect.isTrue(NFromInt(3) is S<S<S<Z>>>);
-  Expect.isTrue(NFromInt(10) is S<S<S<S<S<S<S<S<S<S<Z>>>>>>>>>>);
-
-  // Negative tests.
-  Expect.isTrue(NFromInt(0) is! S);
-  Expect.isTrue(NFromInt(1) is! Z);
-  Expect.isTrue(NFromInt(1) is! S<S>);
-  Expect.isTrue(NFromInt(2) is! Z);
-  Expect.isTrue(NFromInt(2) is! S<Z>);
-  Expect.isTrue(NFromInt(2) is! S<S<S>>);
-
-  // Greater-than tests
-  Expect.isTrue(NFromInt(4) is S<S>); //            4 >= 2
-  Expect.isTrue(NFromInt(4) is S<S<S>>); //         4 >= 3
-  Expect.isTrue(NFromInt(4) is S<S<S<S>>>); //      4 >= 4
-  Expect.isTrue(NFromInt(4) is! S<S<S<S<S>>>>); //  4 < 5
-
-  Expect.isTrue(IsEven(NFromInt(0)));
-  Expect.isFalse(IsEven(NFromInt(1)));
-  Expect.isTrue(IsEven(NFromInt(2)));
-  Expect.isFalse(IsEven(NFromInt(3)));
-  Expect.isTrue(IsEven(NFromInt(4)));
-
-  Expect.equals(0, IntFromN(NFromInt(0)));
-  Expect.equals(1, IntFromN(NFromInt(1)));
-  Expect.equals(2, IntFromN(NFromInt(2)));
-  Expect.equals(50, IntFromN(NFromInt(50)));
-}
diff --git a/tests/language/generic_field_mixin2_test.dart b/tests/language/generic_field_mixin2_test.dart
deleted file mode 100644
index 99e2d92..0000000
--- a/tests/language/generic_field_mixin2_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that generic types in mixins are handled.
-
-import 'package:expect/expect.dart';
-
-class M<T> {
-  var field = T;
-}
-
-class A<U> {}
-
-class C1<V> = Object with M<V>;
-class C2 = Object with M<int>;
-class C3 = Object with M<String>;
-
-main() {
-  Expect.equals(int, new C1<int>().field);
-  Expect.equals(String, new C1<String>().field);
-
-  Expect.equals(int, new C2().field);
-
-  Expect.equals(String, new C3().field);
-}
diff --git a/tests/language/generic_field_mixin3_test.dart b/tests/language/generic_field_mixin3_test.dart
deleted file mode 100644
index d8e78f3..0000000
--- a/tests/language/generic_field_mixin3_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that generic types in mixins are handled.
-
-import 'package:expect/expect.dart';
-
-class M<T> {
-  var field = new A<int>() is A<T>;
-}
-
-class A<U> {}
-
-class C1<V> = Object with M<V>;
-class C2 = Object with M<int>;
-class C3 = Object with M<String>;
-
-main() {
-  Expect.isTrue(new C1<int>().field);
-  Expect.isFalse(new C1<String>().field);
-
-  Expect.isTrue(new C2().field);
-
-  Expect.isFalse(new C3().field);
-}
diff --git a/tests/language/generic_field_mixin4_test.dart b/tests/language/generic_field_mixin4_test.dart
deleted file mode 100644
index 994db59..0000000
--- a/tests/language/generic_field_mixin4_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that generic types in mixins are handled.
-
-import 'package:expect/expect.dart';
-
-class M<T> {
-  var field = () {
-    try {
-      throw 0;
-    } on T catch (e) {
-      return true;
-    } catch (e) {}
-    return false;
-  }();
-}
-
-class A<U> {}
-
-class C1<V> = Object with M<V>;
-class C2 = Object with M<int>;
-class C3 = Object with M<String>;
-
-main() {
-  Expect.isTrue(new C1<int>().field);
-  Expect.isFalse(new C1<String>().field);
-
-  Expect.isTrue(new C2().field);
-
-  Expect.isFalse(new C3().field);
-}
diff --git a/tests/language/generic_field_mixin5_test.dart b/tests/language/generic_field_mixin5_test.dart
deleted file mode 100644
index 26b7e40..0000000
--- a/tests/language/generic_field_mixin5_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that generic types in mixins are handled.
-
-import 'package:expect/expect.dart';
-
-class M<T> {
-  var field = () {
-    return T;
-  }();
-}
-
-class A<U> {}
-
-class C1<V> = Object with M<V>;
-class C2 = Object with M<int>;
-class C3 = Object with M<String>;
-
-main() {
-  Expect.equals(int, new C1<int>().field);
-  Expect.equals(String, new C1<String>().field);
-
-  Expect.equals(int, new C2().field);
-
-  Expect.equals(String, new C3().field);
-}
diff --git a/tests/language/generic_field_mixin6_test.dart b/tests/language/generic_field_mixin6_test.dart
deleted file mode 100644
index 8778ea9..0000000
--- a/tests/language/generic_field_mixin6_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that generic types in mixins are handled.
-
-import 'package:expect/expect.dart';
-
-class M<T> {
-  T field = 0; //# 01: static type warning
-}
-
-class A<U> {}
-
-class C1<V> = Object with M<V>;
-class C2 = Object with M<int>;
-class C3 = Object with M<String>;
-
-main() {
-  checkNoDynamicTypeError(() => new C1<int>()); // //# 01: continued
-  checkDynamicTypeError(() => new C1<String>()); //# 01: continued
-
-  checkNoDynamicTypeError(() => new C2()); //      //# 01: continued
-
-  checkDynamicTypeError(() => new C3()); //        //# 01: continued
-}
-
-/// Returns `true` if the program is running in checked mode.
-bool inCheckedMode() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-/// Checks that a dynamic type error is thrown if and only if [f] is executed in
-/// checked mode.
-void checkDynamicTypeError(f(), [String message]) {
-  message = message != null ? ': $message' : '';
-  try {
-    f();
-    Expect.isFalse(
-        inCheckedMode(), 'Missing type error in checked mode$message.');
-  } on TypeError catch (e) {
-    Expect.isTrue(inCheckedMode(), 'Unexpected type error in production mode.');
-  }
-}
-
-/// Checks that no dynamic type error is thrown when [f] is executed regardless
-/// of execution mode.
-void checkNoDynamicTypeError(f(), [String message]) {
-  message = message != null ? ': $message' : '';
-  try {
-    f();
-  } on TypeError catch (e) {
-    String mode = inCheckedMode() ? 'checked mode' : 'production mode';
-    Expect.fail('Unexpected type error in $mode$message.');
-  }
-}
diff --git a/tests/language/generic_field_mixin_test.dart b/tests/language/generic_field_mixin_test.dart
deleted file mode 100644
index ea34a9e..0000000
--- a/tests/language/generic_field_mixin_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that generic types in mixins are handled.
-
-import 'package:expect/expect.dart';
-
-class M<T> {
-  var field = new A<T>();
-}
-
-class A<U> {}
-
-class C1<V> = Object with M<V>;
-class C2 = Object with M<int>;
-class C3 = Object with M<String>;
-
-main() {
-  Expect.isTrue(new C1<int>().field is A<int>);
-  Expect.isFalse(new C1<int>().field is A<String>);
-  Expect.isFalse(new C1<String>().field is A<int>);
-  Expect.isTrue(new C1<String>().field is A<String>);
-
-  Expect.isTrue(new C2().field is A<int>);
-  Expect.isFalse(new C2().field is A<String>);
-
-  Expect.isFalse(new C3().field is A<int>);
-  Expect.isTrue(new C3().field is A<String>);
-}
diff --git a/tests/language/generic_function_typedef2_test.dart b/tests/language/generic_function_typedef2_test.dart
deleted file mode 100644
index ea58c89..0000000
--- a/tests/language/generic_function_typedef2_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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.
-// Dart test for a function type test that cannot be eliminated at compile time.
-
-import "package:expect/expect.dart";
-
-class A {}
-
-typedef int F();
-
-typedef G = F; //# 00: syntax error
-typedef H = int; //# 01: syntax error
-typedef I = A; //# 02: syntax error
-typedef J = List<int>; //# 03: syntax error
-typedef K = Function(
-    Function<A>(A
-    <int> // //# 04: static type warning
-        ));
-typedef L = Function(
-    {
-  /* //  //# 05: syntax error
-    bool
-  */ //  //# 05: continued
-        x});
-
-typedef M = Function(
-    {
-  /* //  //# 06: syntax error
-    bool
-  */ //  //# 06: continued
-        int});
-
-foo({bool int}) {}
-main() {
-  bool b = true;
-  Expect.isFalse(b is G); // //# 00: continued
-  Expect.isFalse(b is H); // //# 01: continued
-  Expect.isFalse(b is I); // //# 02: continued
-  Expect.isFalse(b is J); // //# 03: continued
-  Expect.isFalse(b is K); // //# 04: continued
-  Expect.isFalse(b is L);
-  Expect.isFalse(b is M);
-  Expect.isTrue(foo is M);
-}
diff --git a/tests/language/generic_function_typedef_test.dart b/tests/language/generic_function_typedef_test.dart
deleted file mode 100644
index 998633f..0000000
--- a/tests/language/generic_function_typedef_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-// Dart test for a function type test that cannot be eliminated at compile time.
-
-// VMOptions=--no-reify-generic-functions
-
-import "package:expect/expect.dart";
-
-class A {}
-
-typedef F<T> = Function<S>(List<S> list, Function<A>(A), T);
-
-foo(List<dynamic> x, bar(String y), int z) {}
-foo2(List<int> x, bar(String y), int z) {}
-
-main() {
-  Expect.isTrue(foo is F);
-  Expect.isTrue(foo is F<int>);
-  Expect.isFalse(foo is F<bool>);
-
-  Expect.isTrue(foo2 is F);
-  Expect.isTrue(foo2 is F<int>);
-  Expect.isFalse(foo2 is F<bool>);
-}
diff --git a/tests/language/generic_functions_test.dart b/tests/language/generic_functions_test.dart
deleted file mode 100644
index 529b2df..0000000
--- a/tests/language/generic_functions_test.dart
+++ /dev/null
@@ -1,103 +0,0 @@
-// 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.
-
-/// Dart test verifying that the parser can handle type parameterization of
-/// function declarations and function invocations. Variant of code from
-/// DEP #22, adjusted to use generic top level functions.
-
-library generic_functions_test;
-
-import "package:expect/expect.dart";
-
-class BinaryTreeNode<K extends Comparable<K>, V> {
-  final K _key;
-  final V _value;
-  final BinaryTreeNode<K, V> _left;
-  final BinaryTreeNode<K, V> _right;
-
-  BinaryTreeNode(this._key, this._value,
-      {BinaryTreeNode<K, V> left: null, BinaryTreeNode<K, V> right: null})
-      : _left = left,
-        _right = right;
-
-  BinaryTreeNode<K, V> insert(K key, V value) {
-    int c = key.compareTo(_key);
-    if (c == 0) return this;
-    var _insert = (BinaryTreeNode<K, V> t, K key, V value) =>
-        insertOpt<K, V>(t, key, value);
-    BinaryTreeNode<K, V> left = _left;
-    BinaryTreeNode<K, V> right = _right;
-    if (c < 0) {
-      left = _insert(_left, key, value);
-    } else {
-      right = _insert(_right, key, value);
-    }
-    return new BinaryTreeNode<K, V>(_key, _value, left: left, right: right);
-  }
-
-  BinaryTreeNode<K, U> map<U>(U f(V x)) {
-    var _map = (BinaryTreeNode<K, V> t, U f(V x)) => mapOpt<K, V, U>(t, f);
-    return new BinaryTreeNode<K, U>(_key, f(_value),
-        left: _map(_left, f), right: _map(_right, f));
-  }
-
-  S foldPre<S>(S init, S f(V t, S s)) {
-    var _fold = (BinaryTreeNode<K, V> t, S s, S f(V t, S s)) =>
-        foldPreOpt<K, V, S>(t, s, f);
-    S s = init;
-    s = f(_value, s);
-    s = _fold(_left, s, f);
-    s = _fold(_right, s, f);
-    return s;
-  }
-}
-
-BinaryTreeNode<K2, V2> insertOpt<K2 extends Comparable<K2>, V2>(
-    BinaryTreeNode<K2, V2> t, K2 key, V2 value) {
-  return (t == null) ? new BinaryTreeNode(key, value) : t.insert(key, value);
-}
-
-BinaryTreeNode<K, U> mapOpt<K extends Comparable<K>, V, U>(
-    BinaryTreeNode<K, V> t, U f(V x)) {
-  return (t == null) ? null : t.map<U>(f);
-}
-
-S foldPreOpt<K2 extends Comparable<K2>, V, S>(
-    BinaryTreeNode<K2, V> t, S init, S f(V t, S s)) {
-  return (t == null) ? init : t.foldPre<S>(init, f);
-}
-
-class BinaryTree<K extends Comparable<K>, V> {
-  final BinaryTreeNode<K, V> _root;
-
-  BinaryTree._internal(this._root);
-  BinaryTree.empty() : this._internal(null);
-
-  BinaryTree<K, V> insert(K key, V value) {
-    BinaryTreeNode<K, V> root = insertOpt<K, V>(_root, key, value);
-    return new BinaryTree<K, V>._internal(root);
-  }
-
-  BinaryTree<K, U> map<U>(U f(V x)) {
-    BinaryTreeNode<K, U> root = mapOpt<K, V, U>(_root, f);
-    return new BinaryTree<K, U>._internal(root);
-  }
-
-  S foldPre<S>(S init, S f(V t, S s)) {
-    return foldPreOpt<K, V, S>(_root, init, f);
-  }
-}
-
-main() {
-  BinaryTree<num, String> sT = new BinaryTree<num, String>.empty();
-
-  sT = sT.insert(0, "");
-  sT = sT.insert(1, " ");
-  sT = sT.insert(2, "  ");
-  sT = sT.insert(3, "   ");
-
-  BinaryTree<num, num> iT = sT.map<num>((String s) => s.length);
-
-  Expect.equals(iT.foldPre<num>(0, (int i, num s) => i + s), 6);
-}
diff --git a/tests/language/generic_functions_test.options b/tests/language/generic_functions_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_functions_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_inheritance_test.dart b/tests/language/generic_inheritance_test.dart
deleted file mode 100644
index 404723a..0000000
--- a/tests/language/generic_inheritance_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Test verifying that the type argument vector of subclasses are properly
-// initialized by the class finalizer.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  A();
-}
-
-class B extends A<Object> {
-  B();
-}
-
-class C extends B {
-  C();
-}
-
-main() {
-  var a = new A<String>();
-  var b = new B();
-  var c = new C();
-  Expect.isTrue(a is Object);
-  Expect.isTrue(a is A<Object>);
-  Expect.isTrue(a is A<String>);
-  Expect.isTrue(a is! A<int>);
-  Expect.isTrue(b is Object);
-  Expect.isTrue(b is A<Object>);
-  Expect.isTrue(b is! A<String>);
-  Expect.isTrue(b is Object);
-  Expect.isTrue(c is Object);
-  Expect.isTrue(c is A<Object>);
-  Expect.isTrue(c is! A<String>);
-  Expect.isTrue(c is B);
-}
diff --git a/tests/language/generic_instanceof.dart b/tests/language/generic_instanceof.dart
deleted file mode 100644
index 7686c85..0000000
--- a/tests/language/generic_instanceof.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that instanceof works correctly with type variables.
-
-part of GenericInstanceofTest.dart;
-
-class Foo<T> {
-  Foo() {}
-
-  bool isT(x) {
-    // Untyped parameter to ensure that the static type
-    // does not affect the result.
-    return x is T;
-  }
-
-  bool isListT(x) {
-    return x is List<T>;
-  }
-}
-
-class GenericInstanceof {
-  static void testMain() {
-    // Using Object instead of String to ensure that the static type
-    // does not affect the result.
-    Foo<Object> fooObject = new Foo<String>();
-    Expect.equals(true, fooObject.isT("string"));
-    Expect.equals(false, fooObject.isT(1));
-
-    Foo<String> fooString = new Foo<String>();
-    Expect.equals(true, fooString.isT("string"));
-    Expect.equals(false, fooString.isT(1));
-
-    // Not providing a type argument to ensure that the static type
-    // does not affect the result.
-    {
-      Foo foo = new Foo<String>();
-      Expect.equals(true, foo.isT("string"));
-      Expect.equals(false, foo.isT(1));
-    }
-    {
-      Foo foo = new Foo();
-      Expect.equals(true, foo.isT(new List(5)));
-      Expect.equals(true, foo.isT(new List<Object>(5)));
-      Expect.equals(true, foo.isT(new List<int>(5)));
-      Expect.equals(true, foo.isT(new List<num>(5)));
-      Expect.equals(true, foo.isT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<List>();
-      Expect.equals(true, foo.isT(new List(5)));
-      Expect.equals(true, foo.isT(new List<Object>(5)));
-      Expect.equals(true, foo.isT(new List<int>(5)));
-      Expect.equals(true, foo.isT(new List<num>(5)));
-      Expect.equals(true, foo.isT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<List<Object>>();
-      Expect.equals(true, foo.isT(new List(5)));
-      Expect.equals(true, foo.isT(new List<Object>(5)));
-      Expect.equals(true, foo.isT(new List<int>(5)));
-      Expect.equals(true, foo.isT(new List<num>(5)));
-      Expect.equals(true, foo.isT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<List<int>>();
-      Expect.equals(true, foo.isT(new List(5)));
-      Expect.equals(false, foo.isT(new List<Object>(5)));
-      Expect.equals(true, foo.isT(new List<int>(5)));
-      Expect.equals(false, foo.isT(new List<num>(5)));
-      Expect.equals(false, foo.isT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<List<num>>();
-      Expect.equals(true, foo.isT(new List(5)));
-      Expect.equals(false, foo.isT(new List<Object>(5)));
-      Expect.equals(true, foo.isT(new List<int>(5)));
-      Expect.equals(true, foo.isT(new List<num>(5)));
-      Expect.equals(false, foo.isT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<List<String>>();
-      Expect.equals(true, foo.isT(new List(5)));
-      Expect.equals(false, foo.isT(new List<Object>(5)));
-      Expect.equals(false, foo.isT(new List<int>(5)));
-      Expect.equals(false, foo.isT(new List<num>(5)));
-      Expect.equals(true, foo.isT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo();
-      Expect.equals(true, foo.isListT(new List(5)));
-      Expect.equals(true, foo.isListT(new List<Object>(5)));
-      Expect.equals(true, foo.isListT(new List<int>(5)));
-      Expect.equals(true, foo.isListT(new List<num>(5)));
-      Expect.equals(true, foo.isListT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<Object>();
-      Expect.equals(true, foo.isListT(new List(5)));
-      Expect.equals(true, foo.isListT(new List<Object>(5)));
-      Expect.equals(true, foo.isListT(new List<int>(5)));
-      Expect.equals(true, foo.isListT(new List<num>(5)));
-      Expect.equals(true, foo.isListT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<int>();
-      Expect.equals(true, foo.isListT(new List(5)));
-      Expect.equals(false, foo.isListT(new List<Object>(5)));
-      Expect.equals(true, foo.isListT(new List<int>(5)));
-      Expect.equals(false, foo.isListT(new List<num>(5)));
-      Expect.equals(false, foo.isListT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<num>();
-      Expect.equals(true, foo.isListT(new List(5)));
-      Expect.equals(false, foo.isListT(new List<Object>(5)));
-      Expect.equals(true, foo.isListT(new List<int>(5)));
-      Expect.equals(true, foo.isListT(new List<num>(5)));
-      Expect.equals(false, foo.isListT(new List<String>(5)));
-    }
-    {
-      Foo foo = new Foo<String>();
-      Expect.equals(true, foo.isListT(new List(5)));
-      Expect.equals(false, foo.isListT(new List<Object>(5)));
-      Expect.equals(false, foo.isListT(new List<int>(5)));
-      Expect.equals(false, foo.isListT(new List<num>(5)));
-      Expect.equals(true, foo.isListT(new List<String>(5)));
-    }
-  }
-}
diff --git a/tests/language/generic_instanceof2_test.dart b/tests/language/generic_instanceof2_test.dart
deleted file mode 100644
index 2998bc7..0000000
--- a/tests/language/generic_instanceof2_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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.
-// Test that instanceof works correctly with type variables.
-
-import "package:expect/expect.dart";
-
-// Test that partially typed generic instances are correctly constructed.
-
-// Test factory case.
-class Foo<K, V> {
-  Foo() {}
-
-  factory Foo.fac() {
-    return new Foo<K, V>();
-  }
-
-  FooString() {
-    return new Foo<K, String>.fac();
-  }
-}
-
-// Test constructor case.
-class Moo<K, V> {
-  Moo() {}
-
-  MooString() {
-    return new Moo<K, String>();
-  }
-}
-
-testAll() {
-  var foo_int_num = new Foo<int, num>();
-  Expect.isTrue(foo_int_num is Foo<int, num>);
-  Expect.isTrue(foo_int_num is! Foo<int, String>);
-  // foo_int_num.FooString() returns a Foo<int, String>
-  Expect.isTrue(foo_int_num.FooString() is! Foo<int, num>);
-  Expect.isTrue(foo_int_num.FooString() is Foo<int, String>);
-
-  var foo_raw = new Foo();
-  Expect.isTrue(foo_raw is Foo<int, num>);
-  Expect.isTrue(foo_raw is Foo<int, String>);
-  // foo_raw.FooString() returns a Foo<dynamic, String>
-  Expect.isTrue(foo_raw.FooString() is! Foo<int, num>);
-  Expect.isTrue(foo_raw.FooString() is Foo<int, String>);
-
-  var moo_int_num = new Moo<int, num>();
-  Expect.isTrue(moo_int_num is Moo<int, num>);
-  Expect.isTrue(moo_int_num is! Moo<int, String>);
-  // moo_int_num.MooString() returns a Moo<int, String>
-  Expect.isTrue(moo_int_num.MooString() is! Moo<int, num>);
-  Expect.isTrue(moo_int_num.MooString() is Moo<int, String>);
-
-  var moo_raw = new Moo();
-  Expect.isTrue(moo_raw is Moo<int, num>);
-  Expect.isTrue(moo_raw is Moo<int, String>);
-  // moo_raw.MooString() returns a Moo<dynamic, String>
-  Expect.isTrue(moo_raw.MooString() is! Moo<int, num>);
-  Expect.isTrue(moo_raw.MooString() is Moo<int, String>);
-}
-
-main() {
-  // Repeat type checks so that inlined tests can be tested as well.
-  for (int i = 0; i < 5; i++) {
-    testAll();
-  }
-}
diff --git a/tests/language/generic_instanceof3_test.dart b/tests/language/generic_instanceof3_test.dart
deleted file mode 100644
index 28aa882..0000000
--- a/tests/language/generic_instanceof3_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-// Dart test program for testing the instanceof operation.
-
-import "package:expect/expect.dart";
-
-// Tests involving generics.
-
-abstract class I<T> {}
-
-class A implements I<bool> {}
-
-class B<T> implements I<bool> {}
-
-abstract class K<T> {}
-
-abstract class L<T> extends K<bool> {}
-
-class C implements L<String> {}
-
-class D implements B<String> {}
-
-main() {
-  var a = new A();
-  var b = new B<String>();
-  var c = new C();
-  var d = new D();
-  // Repeat type checks so that inlined tests can be tested as well.
-  for (int i = 0; i < 5; i++) {
-    Expect.isFalse(a is I<String>);
-    Expect.isTrue(a is I<bool>);
-    Expect.isFalse(b is I<String>);
-    Expect.isFalse(c is K<String>);
-    Expect.isFalse(c is K<String>);
-    Expect.isTrue(c is L<String>);
-    Expect.isFalse(c is L<bool>);
-    Expect.isTrue(c is K<bool>);
-    Expect.isFalse(c is K<String>);
-    Expect.isFalse(d is I<String>);
-    Expect.isTrue(d is I<bool>);
-  }
-}
diff --git a/tests/language/generic_instanceof4_test.dart b/tests/language/generic_instanceof4_test.dart
deleted file mode 100644
index 936e82d..0000000
--- a/tests/language/generic_instanceof4_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that instanceof works correctly with type variables.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  @NoInline()
-  foo(x) {
-    return x is T;
-  }
-}
-
-class BB {}
-
-class B<T> implements BB {
-  @NoInline()
-  foo() {
-    return new A<T>().foo(new B());
-  }
-}
-
-main() {
-  Expect.isTrue(new B<BB>().foo());
-}
diff --git a/tests/language/generic_instanceof5_test.dart b/tests/language/generic_instanceof5_test.dart
deleted file mode 100644
index 5df4087..0000000
--- a/tests/language/generic_instanceof5_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2014, 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.
-// Test that instanceof works correctly with type variables.
-
-import "package:expect/expect.dart";
-
-class A {}
-
-class B<T, S> {}
-
-class C<U, V> extends A with B<V, U> {}
-
-class D<T> {
-  foo(x) {
-    // Avoid inlining.
-    if (new DateTime.now().millisecondsSinceEpoch == 42) foo(x);
-    return x is T;
-    return true; // Avoid inlining.
-  }
-}
-
-main() {
-  Expect.isTrue(new D<B<int, bool>>().foo(new C<bool, int>()));
-}
diff --git a/tests/language/generic_instanceof_test.dart b/tests/language/generic_instanceof_test.dart
deleted file mode 100644
index 5ff974b..0000000
--- a/tests/language/generic_instanceof_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that instanceof works correctly with type variables.
-
-library GenericInstanceofTest.dart;
-
-import "package:expect/expect.dart";
-part "generic_instanceof.dart";
-
-main() {
-  // Repeat type checks so that inlined tests can be tested as well.
-  for (int i = 0; i < 5; i++) {
-    GenericInstanceof.testMain();
-  }
-}
diff --git a/tests/language/generic_is_check_test.dart b/tests/language/generic_is_check_test.dart
deleted file mode 100644
index 810964c..0000000
--- a/tests/language/generic_is_check_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A<T> {
-  foo() => this is A<int>;
-}
-
-main() {
-  Expect.isTrue(new A().foo());
-  Expect.isTrue(new A<int>().foo());
-  Expect.isFalse(new A<String>().foo());
-}
diff --git a/tests/language/generic_list_checked_test.dart b/tests/language/generic_list_checked_test.dart
deleted file mode 100644
index aa7d779..0000000
--- a/tests/language/generic_list_checked_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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';
-
-bool inCheckedMode() {
-  try {
-    int i = 'hest';
-  } catch (e) {
-    return true;
-  }
-  return false;
-}
-
-main() {
-  if (inCheckedMode()) {
-    Expect.throws(() {
-      List<int> t = new List<String>();
-    });
-  }
-}
diff --git a/tests/language/generic_local_functions_test.dart b/tests/language/generic_local_functions_test.dart
deleted file mode 100644
index b587677..0000000
--- a/tests/language/generic_local_functions_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-/// Dart test verifying that the parser can handle type parameterization of
-/// local function declarations, and declarations of function parameters.
-
-library generic_local_functions_test;
-
-import "package:expect/expect.dart";
-
-// Declare a generic function parameter.
-int f(Y g<X, Y>(Map<X, Y> arg, X x)) => g<int, int>(<int, int>{1: 42}, 1);
-
-main() {
-  // Declare a generic local function
-  Y h<X, Y>(Map<X, Y> m, X x) => m[x];
-  // Pass a generic local function as an argument.
-  Expect.equals(f(h), 42);
-  // Pass a function expression as an argument.
-  Expect.equals(f(<X, Y>(Map<X, Y> m, X x) => m[x]), 42);
-}
diff --git a/tests/language/generic_local_functions_test.options b/tests/language/generic_local_functions_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_local_functions_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_metadata_test.dart b/tests/language/generic_metadata_test.dart
deleted file mode 100644
index 735ab8c..0000000
--- a/tests/language/generic_metadata_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-// Check that annotations cannot use type arguments, but can be raw.
-
-class C<T> {
-  const C();
-}
-
-@C() //         //# 01: ok
-@C<dynamic>() //# 02: compile-time error
-@C<int>() //    //# 03: compile-time error
-main() {}
diff --git a/tests/language/generic_method_types_test.dart b/tests/language/generic_method_types_test.dart
deleted file mode 100644
index f74d1e7..0000000
--- a/tests/language/generic_method_types_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// 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.
-
-// VMOptions=--no-reify-generic-functions
-
-import 'package:expect/expect.dart';
-
-typedef O Convert<I, O>(I input);
-typedef Other(a, b);
-
-class Mixin<E> {
-  E convert1<I>(I input) => null;
-}
-
-class Class<F> extends Object with Mixin<F> {
-  O convert2<O>(F input) => null;
-}
-
-O convert<I, O>(I input) => null;
-
-test1() {
-  var val = new Class<String>();
-  Expect.isTrue(val.convert1 is Convert);
-  Expect.isTrue(val.convert1 is Convert<String, String>);
-  Expect.isTrue(val.convert1 is Convert<int, String>);
-  Expect.isFalse(val.convert1 is Convert<String, int>);
-  Expect.isFalse(val.convert1 is Other);
-}
-
-test2() {
-  var val = new Class<String>();
-  Expect.isTrue(val.convert2 is Convert);
-  Expect.isTrue(val.convert2 is Convert<String, String>);
-  Expect.isTrue(val.convert2 is Convert<String, int>);
-  Expect.isFalse(val.convert2 is Convert<int, String>);
-  Expect.isFalse(val.convert2 is Other);
-}
-
-test3() {
-  Expect.isTrue(convert is Convert);
-  Expect.isTrue(convert is Convert<String, String>);
-  Expect.isTrue(convert is Convert<String, int>);
-  Expect.isTrue(convert is Convert<int, String>);
-  Expect.isFalse(convert is Other);
-}
-
-main() {
-  test1(); //# 01: ok
-  test2(); //# 02: ok
-  test3(); //# 03: ok
-}
diff --git a/tests/language/generic_methods_function_type_test.dart b/tests/language/generic_methods_function_type_test.dart
deleted file mode 100644
index 4941c43..0000000
--- a/tests/language/generic_methods_function_type_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-/// Dart test on the usage of method type arguments in a function typed
-/// parameter declaration.
-
-library generic_methods_function_type_test;
-
-import "package:expect/expect.dart";
-
-class C<V> {
-  U m1<U>(U f(V v), V v) => f(v);
-  V m2<U>(V f(U v), U u) => f(u);
-}
-
-main() {
-  Expect.equals(new C<int>().m1<int>((x) => x, 10), 10);
-  Expect.equals(new C<int>().m2<int>((x) => x, 20), 20);
-}
diff --git a/tests/language/generic_methods_function_type_test.options b/tests/language/generic_methods_function_type_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_methods_function_type_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_methods_generic_function_parameter_test.dart b/tests/language/generic_methods_generic_function_parameter_test.dart
deleted file mode 100644
index 3c4c2c7..0000000
--- a/tests/language/generic_methods_generic_function_parameter_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class C<T> {
-  bar<V>(T t, int u, V v) => t.toString() + u.toString() + v.toString();
-  foo<U>(bar<V>(T t, U u, V v)) => bar<int>(1 as T, 2 as U, 3);
-}
-
-main() {
-  var c = new C<int>();
-  Expect.equals("123", c.foo<int>(c.bar));
-}
diff --git a/tests/language/generic_methods_generic_function_parameter_test.options b/tests/language/generic_methods_generic_function_parameter_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_methods_generic_function_parameter_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_methods_new_test.dart b/tests/language/generic_methods_new_test.dart
deleted file mode 100644
index f7a10aa..0000000
--- a/tests/language/generic_methods_new_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-//
-// VMOptions=--no-reify-generic-functions
-
-/// Dart test on the usage of method type arguments in object creation. With
-/// '--no-reify-generic-functions', the type argument is
-/// available at runtime, but erased to `dynamic`.
-
-library generic_methods_new_test;
-
-import "package:expect/expect.dart";
-
-class C<E> {
-  E e;
-  C(this.e);
-}
-
-C<T> f1<T>(T t) => new C<T>(t);
-
-List<T> f2<T>(T t) => <T>[t];
-
-Map<T, String> f3<T>(T t) => <T, String>{t: 'hi'};
-
-main() {
-  C c = f1<int>(42);
-  List i = f2<String>("Hello!");
-  Expect.isTrue(c is C<int> && c is C<String>); // C<dynamic>.
-  Expect.isTrue(i is List<String> && i is List<int>); // List<dynamic>.
-  Expect.equals(c.e, 42);
-  Expect.equals(i[0], "Hello!");
-
-  Map m1 = f3<int>(1);
-  Expect.isTrue(m1 is Map<int, String> && m1 is Map<String, String>);
-  Expect.isFalse(m1 is Map<int, int>);
-  Expect.equals('hi', m1[1]);
-}
diff --git a/tests/language/generic_methods_new_test.options b/tests/language/generic_methods_new_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_methods_new_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_methods_test.dart b/tests/language/generic_methods_test.dart
deleted file mode 100644
index f5df9ba..0000000
--- a/tests/language/generic_methods_test.dart
+++ /dev/null
@@ -1,107 +0,0 @@
-// 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.
-
-/// Dart test verifying that the parser can handle type parameterization of
-/// method declarations and method invocations. Slightly adjusted version of
-/// code from DEP #22.
-
-library generic_methods_test;
-
-import "package:expect/expect.dart";
-
-class BinaryTreeNode<K extends Comparable<K>, V> {
-  final K _key;
-  final V _value;
-  final BinaryTreeNode<K, V> _left;
-  final BinaryTreeNode<K, V> _right;
-
-  BinaryTreeNode(this._key, this._value,
-      {BinaryTreeNode<K, V> left: null, BinaryTreeNode<K, V> right: null})
-      : _left = left,
-        _right = right;
-
-  // Use fresh type variables.
-  static BinaryTreeNode<K2, V2> insertOpt<K2 extends Comparable<K2>, V2>(
-      BinaryTreeNode<K2, V2> t, K2 key, V2 value) {
-    return (t == null) ? new BinaryTreeNode(key, value) : t.insert(key, value);
-  }
-
-  BinaryTreeNode<K, V> insert(K key, V value) {
-    int c = key.compareTo(_key);
-    if (c == 0) return this;
-    var _insert = (BinaryTreeNode<K, V> node, K key, V value) =>
-        insertOpt<K, V>(node, key, value);
-    BinaryTreeNode<K, V> left = _left;
-    BinaryTreeNode<K, V> right = _right;
-    if (c < 0) {
-      left = _insert(_left, key, value);
-    } else {
-      right = _insert(_right, key, value);
-    }
-    return new BinaryTreeNode<K, V>(_key, _value, left: left, right: right);
-  }
-
-  // Reuse type variables [K], [V] to test shadowing.
-  static BinaryTreeNode<K, U> mapOpt<K extends Comparable<K>, V, U>(
-      BinaryTreeNode<K, V> t, U f(V x)) {
-    return (t == null) ? null : t.map<U>(f);
-  }
-
-  BinaryTreeNode<K, U> map<U>(U f(V x)) {
-    var _map = (BinaryTreeNode<K, V> t, U f(V x)) => mapOpt<K, V, U>(t, f);
-    return new BinaryTreeNode<K, U>(_key, f(_value),
-        left: _map(_left, f), right: _map(_right, f));
-  }
-
-  // Use fresh [K2], shadowing [V].
-  static S foldPreOpt<K2 extends Comparable<K2>, V, S>(
-      BinaryTreeNode<K2, V> t, S init, S f(V t, S s)) {
-    return (t == null) ? init : t.foldPre<S>(init, f);
-  }
-
-  S foldPre<S>(S init, S f(V t, S s)) {
-    var _fold = (BinaryTreeNode<K, V> t, S s, S f(V t, S s)) =>
-        foldPreOpt<K, V, S>(t, s, f);
-    S s = init;
-    s = f(_value, s);
-    s = _fold(_left, s, f);
-    s = _fold(_right, s, f);
-    return s;
-  }
-}
-
-class BinaryTree<K extends Comparable<K>, V> {
-  final BinaryTreeNode<K, V> _root;
-
-  BinaryTree._internal(this._root);
-  BinaryTree.empty() : this._internal(null);
-
-  BinaryTree<K, V> insert(K key, V value) {
-    BinaryTreeNode<K, V> root =
-        BinaryTreeNode.insertOpt<K, V>(_root, key, value);
-    return new BinaryTree<K, V>._internal(root);
-  }
-
-  BinaryTree<K, U> map<U>(U f(V x)) {
-    BinaryTreeNode<K, U> root = BinaryTreeNode.mapOpt<K, V, U>(_root, f);
-    return new BinaryTree<K, U>._internal(root);
-  }
-
-  S foldPre<S>(S init, S f(V t, S s)) {
-    return BinaryTreeNode.foldPreOpt<K, V, S>(_root, init, f);
-  }
-}
-
-main() {
-  BinaryTree<num, String> sT = new BinaryTree<num, String>.empty();
-
-  sT = sT.insert(0, "");
-  sT = sT.insert(1, " ");
-  sT = sT.insert(2, "  ");
-  sT = sT.insert(3, "   ");
-
-  BinaryTree<num, num> iT = sT.map<num>((String s) => s.length);
-
-  Expect.equals(iT.foldPre<num>(0, (int i, num s) => i + s), 6);
-}
diff --git a/tests/language/generic_methods_test.options b/tests/language/generic_methods_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_methods_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_methods_type_expression_test.dart b/tests/language/generic_methods_type_expression_test.dart
deleted file mode 100644
index d796923..0000000
--- a/tests/language/generic_methods_type_expression_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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.
-//
-// VMOptions=--no-reify-generic-functions
-
-/// Dart test on the usage of method type arguments in type
-/// expressions. With '--no-reify-generic-functions', the type
-/// argument is available at runtime, but erased to `dynamic`.
-
-library generic_methods_type_expression_test;
-
-import "package:expect/expect.dart";
-
-bool f1<T>(Object o) => o is T; //  //# 01: static type warning
-
-bool f2<T>(Object o) => o is List<T>;
-
-bool f3<T>(Object o) => o is! T; //  //# 03: static type warning
-
-bool f4<T>(Object o) => o is! List<T>;
-
-T f5<T>(Object o) => o as T;
-
-List<T> f6<T>(Object o) => o as List<T>;
-
-Type f7<T>() => T;
-
-class TypeValue<X> {
-  Type get value => X;
-}
-
-Type f8<T>() => new TypeValue<List<T>>().value;
-
-bool f9<T>(Object o) => o is Map<T, String>;
-
-class IsMap<A> {
-  @NoInline()
-  bool check<B>(o) => o is Map<A, B>;
-}
-
-main() {
-  String s = "Hello!";
-  List<String> ss = <String>[s];
-  Expect.throws(() => f1<int>(42), (e) => e is TypeError); // //# 01: continued
-  Expect.throws(() => f1<String>(42), (e) => e is TypeError); // //# 01: continued
-  Expect.equals(f2<int>(<int>[42]), true);
-  Expect.equals(f2<String>(<int>[42]), true); // `is List<dynamic>` is true.
-  Expect.throws(() => f3<int>(42), (e) => e is TypeError); // //# 03: continued
-  Expect.throws(() => f3<String>(42), (e) => e is TypeError); // //# 03: continued
-  Expect.equals(f4<int>(<int>[42]), false);
-  Expect.equals(f4<String>(<int>[42]), false); // `is! List<dynamic>` is false.
-  Expect.equals(f5<String>(s), s); // `s as dynamic == s`
-  Expect.equals(f5<int>(s), s); // `s as dynamic == s`
-  Expect.equals(f6<String>(ss), ss);
-  Expect.equals(f6<int>(ss), ss); // `as List<dynamic>` succeeds.
-  Expect.throws(() => f7<int>(), (e) => e is TypeError);
-  Expect.equals(f8<int>(), List); // Returns `List<dynamic>`.
-
-  Expect.isTrue(f9<int>(<int, String>{}));
-  Expect
-      .isTrue(f9<int>(<bool, String>{})); // `is Map<dynamic, String>` is true.
-  Expect.isFalse(f9<int>(<int, int>{}));
-
-  Expect.isTrue(new IsMap<int>().check<String>(<int, String>{}));
-  Expect.isTrue(new IsMap<int>().check<int>(<int, String>{}));
-}
diff --git a/tests/language/generic_methods_type_expression_test.options b/tests/language/generic_methods_type_expression_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_methods_type_expression_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_native_test.dart b/tests/language/generic_native_test.dart
deleted file mode 100644
index 80eb8fe..0000000
--- a/tests/language/generic_native_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test is-tests with type variables on native subclasses.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  foo(o) => o is T;
-}
-
-class B {}
-
-class C {}
-
-main() {
-  Expect.isTrue(new A<Iterable<B>>().foo(new List<B>()));
-  Expect.isFalse(new A<Iterable<C>>().foo(new List<B>()));
-
-  Expect.isTrue(new A<Pattern>().foo('hest'));
-
-  Expect.isTrue(new A<Comparable<String>>().foo('hest'));
-  Expect.isFalse(new A<Comparable<C>>().foo('hest'));
-}
diff --git a/tests/language/generic_object_type_test.dart b/tests/language/generic_object_type_test.dart
deleted file mode 100644
index 4b1733a..0000000
--- a/tests/language/generic_object_type_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class Tester<T> {
-  testGenericType(x) {
-    return x is T;
-  }
-}
-
-main() {
-  // The Dart Object type is special in that it doesn't have any superclass.
-  Expect.isTrue(new Tester<Object>().testGenericType(new Object()));
-}
diff --git a/tests/language/generic_parameterized_extends_test.dart b/tests/language/generic_parameterized_extends_test.dart
deleted file mode 100644
index 0d85fe9..0000000
--- a/tests/language/generic_parameterized_extends_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Test verifying that generic extends are processed correctly.
-
-import "package:expect/expect.dart";
-
-class A<T> {}
-
-class B<T1, T2 extends A<T1>> {}
-
-class C<T1 extends A<T2>, T2> {}
-
-main() {
-  var a = new A<String>();
-  var b = new B<String, A<String>>();
-  var c = new C<A<String>, String>();
-  Expect.isTrue(a is Object);
-  Expect.isTrue(a is A<Object>);
-  Expect.isTrue(a is A<String>);
-  Expect.isTrue(a is! A<int>);
-  Expect.isTrue(b is Object);
-  Expect.isTrue(b is B<Object, A<Object>>);
-  Expect.isTrue(b is B<String, A<String>>);
-  Expect.isTrue(b is! B<int, A<int>>);
-  Expect.isTrue(c is Object);
-  Expect.isTrue(c is C<A<Object>, Object>);
-  Expect.isTrue(c is C<A<String>, String>);
-  Expect.isTrue(c is! C<A<int>, int>);
-}
diff --git a/tests/language/generic_sends_test.dart b/tests/language/generic_sends_test.dart
deleted file mode 100644
index 57befee..0000000
--- a/tests/language/generic_sends_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-
-/// Dart test verifying that the parser can handle certain cases where
-/// grammar ambiguity is resolved in favor of generic sends, not
-/// relational expressions.
-
-library generic_sends_test;
-
-f(arg1, [arg2]) => null;
-g<X, Y>(arg) => null;
-
-main() {
-  // Generic invocations.
-  f(g<int, String>(3));
-  f(g<int, List<String>>(3));
-  f(g<int, String>(3), 4);
-  f(g<int, List<String>>(3), 4);
-
-  // Relational expressions.
-  int a = 0, b = 1, c = 2, d = 3;
-  f(a < b, c > 3);
-  f(a < b, c >> 3);
-  f(a < b, c < d >> 3);
-}
diff --git a/tests/language/generic_sends_test.options b/tests/language/generic_sends_test.options
deleted file mode 100644
index 86e2aac..0000000
--- a/tests/language/generic_sends_test.options
+++ /dev/null
@@ -1,3 +0,0 @@
-analyzer:
-  language:
-    enableGenericMethods: true
diff --git a/tests/language/generic_syntax_test.dart b/tests/language/generic_syntax_test.dart
deleted file mode 100644
index 7ccc039..0000000
--- a/tests/language/generic_syntax_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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";
-
-// Dart test verifying that the parser does not confuse parameterized types with
-// boolean expressions, since both contain '<'.
-
-class GenericSyntaxTest<B, C, D, E, F> {
-  GenericSyntaxTest() {}
-
-  void foo(x1, x2, x3, x4, x5) {
-    Expect.equals(true, x1);
-    Expect.equals(3, x2);
-    Expect.equals(4, x3);
-    Expect.equals(5, x4);
-    Expect.equals(false, x5);
-  }
-
-  void bar(x) {
-    Expect.equals(null, x(null));
-  }
-
-  test() {
-    var a = 1;
-    var b = 2;
-    var c = 3;
-    var d = 4;
-    var e = 5;
-    var f = 6;
-    var g = 7;
-    var h = null;
-    bar((A<B, C, D, E, F> g) {
-      return h;
-    }); // 'A<B' starts a generic type.
-    foo(a < b, c, d, e, f > g); // 'a<b' is a boolean function argument.
-  }
-
-  static testMain() {
-    new GenericSyntaxTest().test();
-  }
-}
-
-abstract class A<B, C, D, E, F> {}
-
-main() {
-  GenericSyntaxTest.testMain();
-}
diff --git a/tests/language/generic_test.dart b/tests/language/generic_test.dart
deleted file mode 100644
index 225b1d8..0000000
--- a/tests/language/generic_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2011, 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=--checked
-// Dart test program testing generic type allocations and generic type tests.
-import "package:expect/expect.dart";
-
-class A {
-  const A();
-}
-
-class AA extends A {
-  const AA();
-}
-
-class AX {
-  const AX();
-}
-
-class B<T extends A> {
-  final A a_;
-  final T t_;
-  const B(T t)
-      : a_ = t,
-        t_ = t;
-  isT(x) {
-    return x is T;
-  }
-}
-
-class C<T> {
-  B<T> b_;
-  C(T t) : b_ = new B<T>(t) {}
-}
-
-class D {
-  C<AA> caa_;
-  D() : caa_ = new C<AA>(const AA()) {}
-}
-
-class E {
-  C<AX> cax_;
-  E() : cax_ = new C<AX>(const AX()) {}
-}
-
-class GenericTest {
-  static test() {
-    int result = 0;
-    D d = new D();
-    Expect.equals(true, d.caa_.b_ is B<AA>);
-    Expect.equals(true, d.caa_.b_.isT(const AA()));
-    C c = new C(const AA()); // c is of raw type C, T in C<T> is dynamic.
-    Expect.equals(true, c.b_ is B);
-    Expect.equals(true, c.b_ is B<AA>);
-    Expect.equals(true, c.b_.isT(const AA()));
-    Expect.equals(true, c.b_.isT(const AX()));
-    try {
-      E e = new E(); // Throws a type error, if type checks are enabled.
-    } on TypeError catch (error) {
-      result = 1;
-    }
-    return result;
-  }
-
-  static testMain() {
-    Expect.equals(1, test());
-  }
-}
-
-main() {
-  GenericTest.testMain();
-}
diff --git a/tests/language/generics2_test.dart b/tests/language/generics2_test.dart
deleted file mode 100644
index a492e55..0000000
--- a/tests/language/generics2_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Dart test program testing generic type allocations and generic type tests.
-
-class A<E> {}
-
-class Pair<P, Q> extends A /* i.e. extends A<dynamic> */ {
-  final P fst;
-  final Q snd;
-  Pair(this.fst, this.snd);
-}
-
-main() {
-  print(new Pair<int, int>(1, 2));
-  print(new Pair<String, int>("1", 2));
-}
diff --git a/tests/language/generics3_test.dart b/tests/language/generics3_test.dart
deleted file mode 100644
index 0a25732..0000000
--- a/tests/language/generics3_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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.
-//
-// Dart test program testing generic type allocations and generic type tests.
-// Regression test for issue 8710.
-
-class C1<T> {}
-
-class C2<T> {}
-
-class C3<T> extends C2<C1<T>> {}
-
-class C4<T> extends C3<T> {
-  f() => new C5<C1<T>>(new C1<T>());
-}
-
-class C5<T> {
-  C5(T x);
-} // Checked mode: x must be of type C1<String>.
-
-main() {
-  new C4<String>().f();
-}
diff --git a/tests/language/generics_test.dart b/tests/language/generics_test.dart
deleted file mode 100644
index 931083b..0000000
--- a/tests/language/generics_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for generic types.
-
-import "package:expect/expect.dart";
-
-class GenericsTest<T, V> implements Map<int, int> {
-  static int myFunc(bool a, bool b) {
-    Expect.equals(true, a);
-    Expect.equals(false, b);
-    return 42;
-  }
-
-  static void testMain() {
-    int a = 1;
-    int b = 2;
-    int c = 3;
-    int d = 4;
-    Expect.equals(true, a < b);
-    Expect.equals(42, myFunc(a < b, c > d));
-    Map<int, int> e;
-    GenericsTest<int, GenericsTest<int, int>> f;
-
-    e = new Map();
-    takesMapMethod(e);
-    Expect.equals(2, e[0]);
-    Map h = new Map<int, int>();
-  }
-
-  static void takesMapMethod(Map<int, int> m) {
-    m[0] = 2;
-  }
-
-  Map<int, int> returnMap() {
-    return null;
-  }
-}
-
-class LongGeneric<A, B, C> {}
-
-class LongerGeneric<A, B, C, D, E, F, G, H, I, J> {
-  void func() {
-    LongGeneric<String, A, LongGeneric<C, List<E>, Map<G, Map<I, J>>>> id;
-
-    LongGeneric<num, Map<int, int>,
-        LongGeneric<C, List<E>, Map<G, LongGeneric<I, J, List<A>>>>> id2;
-  }
-}
-
-main() {
-  GenericsTest.testMain();
-}
diff --git a/tests/language/get_set_syntax_test.dart b/tests/language/get_set_syntax_test.dart
deleted file mode 100644
index addcc17..0000000
--- a/tests/language/get_set_syntax_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-
-var get;
-var get a; //           //# 00: syntax error
-var get b, c; //        //# 01: syntax error
-
-var set;
-var set d; //           //# 02: syntax error
-var set e, f; //        //# 03: syntax error
-
-class C0 {
-  var get;
-  var get a; //         //# 04: syntax error
-  var get b, c; //      //# 05: syntax error
-
-  var set;
-  var set d; //         //# 06: syntax error
-  var set e, f; //      //# 07: syntax error
-}
-
-class C1 {
-  List get;
-  List get a;
-  List get b, c; //     //# 09: syntax error
-
-  List set;
-  List set d; //        //# 10: syntax error
-  List set e, f; //     //# 11: syntax error
-}
-
-class C2 {
-  List<int> get;
-  List<int> get a;
-  List<int> get b, c; //# 13: syntax error
-
-  List<int> set;
-  List<int> set d; //   //# 14: syntax error
-  List<int> set e, f; //# 15: syntax error
-}
-
-main() {
-  new C0();
-  new C1();
-  new C2();
-}
diff --git a/tests/language/getter_closure_execution_order_test.dart b/tests/language/getter_closure_execution_order_test.dart
deleted file mode 100644
index 0b5196b..0000000
--- a/tests/language/getter_closure_execution_order_test.dart
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Test that a getter is evaluated after the arguments, when a getter is
-// for invoking a method. See chapter 'Method Invocation' in specification.
-
-import "package:expect/expect.dart";
-
-var counter = 0;
-
-class Test1 {
-  get a {
-    Expect.equals(1, counter);
-    counter++;
-    return (c) {};
-  }
-
-  b() {
-    Expect.equals(0, counter);
-    counter++;
-    return 1;
-  }
-}
-
-class Test2 {
-  static get a {
-    Expect.equals(0, counter);
-    counter++;
-    return (c) {};
-  }
-
-  static b() {
-    Expect.equals(1, counter);
-    counter++;
-    return 1;
-  }
-}
-
-get a {
-  Expect.equals(0, counter);
-  counter++;
-  return (c) {};
-}
-
-b() {
-  Expect.equals(1, counter);
-  counter++;
-  return 1;
-}
-
-main() {
-  var failures = [];
-  try {
-    // Check instance getters.
-    counter = 0;
-    var o = new Test1();
-    o.a(o.b());
-    Expect.equals(2, counter);
-  } catch (exc, stack) {
-    failures.add(exc);
-    failures.add(stack);
-  }
-  try {
-    // Check static getters.
-    counter = 0;
-    Test2.a(Test2.b());
-    Expect.equals(2, counter);
-  } catch (exc, stack) {
-    failures.add(exc);
-    failures.add(stack);
-  }
-  try {
-    // Check top-level getters.
-    counter = 0;
-    a(b());
-    Expect.equals(2, counter);
-  } catch (exc, stack) {
-    failures.add(exc);
-    failures.add(stack);
-  }
-  // If any of the tests failed print out the details and fail the test.
-  if (failures.length != 0) {
-    for (var msg in failures) {
-      print(msg.toString());
-    }
-    throw "${failures.length ~/ 2} tests failed.";
-  }
-}
diff --git a/tests/language/getter_declaration_negative_test.dart b/tests/language/getter_declaration_negative_test.dart
deleted file mode 100644
index 813b8d3..0000000
--- a/tests/language/getter_declaration_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Test that a getter has no arguments
-get m(var extraParam) {
-  return null;
-}
-
-main() {
-  m;
-}
-
diff --git a/tests/language/getter_no_setter2_test.dart b/tests/language/getter_no_setter2_test.dart
deleted file mode 100644
index 199b8e0..0000000
--- a/tests/language/getter_no_setter2_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.
-// Verifies behavior with a static getter, but no field and no setter.
-
-import "package:expect/expect.dart";
-
-class Example {
-  static int _var = 1;
-  static int get nextVar => _var++;
-  Example() {
-    {
-      bool flag_exception = false;
-      try {
-        nextVar++; // //# 03: static type warning
-      } catch (excpt) {
-        flag_exception = true;
-      }
-      Expect.isTrue(flag_exception); // //# 03: continued
-    }
-    {
-      bool flag_exception = false;
-      try {
-        this.nextVar++; // //# 00: static type warning
-      } catch (excpt) {
-        flag_exception = true;
-      }
-      Expect.isTrue(flag_exception); //  //# 00: continued
-    }
-  }
-  static test() {
-    nextVar++; // //# 01: runtime error
-    this.nextVar++; // //# 02: compile-time error
-  }
-}
-
-class Example1 {
-  Example1(int i) {}
-}
-
-class Example2 extends Example1 {
-  static int _var = 1;
-  static int get nextVar => _var++;
-  Example2() : super(nextVar) {} // No 'this' in scope.
-}
-
-void main() {
-  Example x = new Example();
-  Example.test();
-  Example2 x2 = new Example2();
-}
diff --git a/tests/language/getter_no_setter_test.dart b/tests/language/getter_no_setter_test.dart
deleted file mode 100644
index 3218457..0000000
--- a/tests/language/getter_no_setter_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.
-// Verifies behavior with a static getter, but no field and no setter.
-
-import "package:expect/expect.dart";
-
-class Example {
-  static int _var = 1;
-  static int get nextVar => _var++;
-  Example() {
-    {
-      bool flag_exception = false;
-      try {
-        nextVar = 1; // Equivalent to this.nextVar = 1.
-      } catch (excpt) {
-        flag_exception = true;
-      }
-      Expect.isTrue(flag_exception);
-    }
-    {
-      bool flag_exception = false;
-      try {
-        this.nextVar = 1; // //# 00: static type warning
-      } catch (excpt) {
-        flag_exception = true;
-      }
-      Expect.isTrue(flag_exception); //  //# 00: continued
-    }
-  }
-  static test() {
-    nextVar = 0; // //# 01: runtime error
-    this.nextVar = 0; // //# 02: compile-time error
-  }
-}
-
-class Example1 {
-  Example1(int i) {}
-}
-
-class Example2 extends Example1 {
-  static int _var = 1;
-  static int get nextVar => _var++;
-  Example2() : super(nextVar) {} // No 'this' in scope.
-}
-
-void main() {
-  Example x = new Example();
-  Example.test();
-  Example2 x2 = new Example2();
-}
diff --git a/tests/language/getter_override2_test.dart b/tests/language/getter_override2_test.dart
deleted file mode 100644
index 95519a2..0000000
--- a/tests/language/getter_override2_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we report a compile-time error when an instance getter conflicts
-// with an inherited instance method of the same name.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: ok
-  get foo => 42; // //# 01: ok
-  foo() => 42; // //# 02: compile-time error
-  set foo(value) { } // //# 03: ok
-}
-
-class B extends A {
-  get foo => 42;
-}
-
-main() {
-  Expect.equals(42, new B().foo);
-}
diff --git a/tests/language/getter_override_test.dart b/tests/language/getter_override_test.dart
deleted file mode 100644
index 350da73..0000000
--- a/tests/language/getter_override_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we report a compile-time error when a static getter conflicts with
-// an inherited instance member of the same name.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: compile-time error
-  get foo => 42; // //# 01: compile-time error
-  foo() => 42; // //# 02: compile-time error
-  set foo(value) { } // //# 03: static type warning
-}
-
-class B extends A {
-  static get foo => 42;
-}
-
-main() {
-  Expect.equals(42, B.foo);
-}
diff --git a/tests/language/getter_parameters_test.dart b/tests/language/getter_parameters_test.dart
deleted file mode 100644
index de45b02..0000000
--- a/tests/language/getter_parameters_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-//
-// Test that a getter has no parameters.
-
-get f1 => null;
-get f2
-() //# 01: syntax error
-    => null;
-get f3
-(arg) //# 02: syntax error
-    => null;
-get f4
-([arg]) //# 03: syntax error
-    => null;
-get f5
-({arg}) //# 04: syntax error
-    => null;
-
-main() {
-  f1;
-  f2;
-  f3;
-  f4;
-  f5;
-}
diff --git a/tests/language/getter_setter_in_lib.dart b/tests/language/getter_setter_in_lib.dart
deleted file mode 100644
index 9761ab2..0000000
--- a/tests/language/getter_setter_in_lib.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-library GetterSetterInLib;
-
-get foo => 42;
-set foo(a) {}
-
-get bar => 77;
diff --git a/tests/language/getter_setter_in_lib2.dart b/tests/language/getter_setter_in_lib2.dart
deleted file mode 100644
index 46a23b3..0000000
--- a/tests/language/getter_setter_in_lib2.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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 GetterSetterInLib2;
-
-set bar(a) {}
diff --git a/tests/language/getter_setter_in_lib3.dart b/tests/language/getter_setter_in_lib3.dart
deleted file mode 100644
index 2d05421..0000000
--- a/tests/language/getter_setter_in_lib3.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2015, 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 GetterSetterInLib3;
-
-var _f = 33;
-
-set bar(a) {
-  _f = a;
-}
-
-get bar => _f;
diff --git a/tests/language/getter_setter_in_lib_test.dart b/tests/language/getter_setter_in_lib_test.dart
deleted file mode 100644
index 0e24792..0000000
--- a/tests/language/getter_setter_in_lib_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-
-library GetterSetterInLibTest;
-
-import "package:expect/expect.dart";
-import 'getter_setter_in_lib.dart';
-import 'getter_setter_in_lib2.dart';
-import 'getter_setter_in_lib3.dart' as L3;
-
-main() {
-  Expect.equals(42, foo);
-  foo = 43;
-  Expect.equals(42, foo);
-
-  Expect.equals(77, bar);
-  bar = 43;
-  Expect.equals(77, bar);
-
-  Expect.equals(L3.bar, 33);
-  L3.bar = 44;
-  Expect.equals(L3.bar, 44);
-}
diff --git a/tests/language/getter_setter_interceptor_test.dart b/tests/language/getter_setter_interceptor_test.dart
deleted file mode 100644
index f0ee972..0000000
--- a/tests/language/getter_setter_interceptor_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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";
-
-class A {
-  int length = 0;
-}
-
-class B {
-  int length = 0;
-  foo(receiver) {
-    length++;
-    return receiver.length++;
-  }
-
-  bar(receiver) {
-    ++length;
-    return ++receiver.length;
-  }
-}
-
-main() {
-  var a = new A();
-  var b = new B();
-  var c = [1, 2, 3];
-
-  Expect.equals(3, b.foo(c));
-  Expect.equals(5, b.bar(c));
-  Expect.equals(5, c.length);
-
-  Expect.equals(0, b.foo(a));
-  Expect.equals(2, b.bar(a));
-  Expect.equals(2, a.length);
-
-  Expect.equals(4, b.length);
-}
diff --git a/tests/language/getter_setter_order_test.dart b/tests/language/getter_setter_order_test.dart
deleted file mode 100644
index 0050b7e..0000000
--- a/tests/language/getter_setter_order_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for the evaluation order of getters and setters.
-
-import 'package:expect/expect.dart';
-
-var trace;
-
-class X {
-  get b {
-    trace.add('get b');
-    return new X();
-  }
-
-  set c(value) {
-    trace.add('set c');
-  }
-
-  toString() {
-    trace.add('toString');
-    return 'X';
-  }
-
-  get c {
-    trace.add('get c');
-    return 42;
-  }
-
-  get d {
-    trace.add('get d');
-    return new X();
-  }
-
-  operator [](index) {
-    trace.add('index');
-    return 42;
-  }
-
-  operator []=(index, value) {
-    trace.add('indexSet');
-  }
-}
-
-main() {
-  var x = new X();
-
-  trace = [];
-  x.b.c = '$x';
-  Expect.listEquals(['get b', 'toString', 'set c'], trace);
-
-  trace = [];
-  x.b.c += '$x'.hashCode;
-  Expect.listEquals(['get b', 'get c', 'toString', 'set c'], trace);
-
-  trace = [];
-  x.b.c++;
-  Expect.listEquals(['get b', 'get c', 'set c'], trace);
-
-  trace = [];
-  x.b.d[42] = '$x';
-  Expect.listEquals(['get b', 'get d', 'toString', 'indexSet'], trace);
-
-  trace = [];
-  x.b.d[42] += '$x'.hashCode;
-  Expect.listEquals(['get b', 'get d', 'index', 'toString', 'indexSet'], trace);
-
-  trace = [];
-  x.b.d[42]++;
-  Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace);
-
-  trace = [];
-  ++x.b.d[42];
-  Expect.listEquals(['get b', 'get d', 'index', 'indexSet'], trace);
-
-  trace = [];
-  x.b.d[x.c] *= '$x'.hashCode;
-  Expect.listEquals(
-      ['get b', 'get d', 'get c', 'index', 'toString', 'indexSet'], trace);
-
-  trace = [];
-  x.b.c = x.d.c = '$x';
-  Expect.listEquals([
-    'get b',
-    'get d',
-    'toString',
-    'set c',
-    'set c',
-  ], trace);
-
-  trace = [];
-  x.b.c = x.d[42] *= '$x'.hashCode;
-  Expect.listEquals(
-      ['get b', 'get d', 'index', 'toString', 'indexSet', 'set c'], trace);
-
-  trace = [];
-  x.b.c = ++x.d.c;
-  Expect.listEquals(['get b', 'get d', 'get c', 'set c', 'set c'], trace);
-}
diff --git a/tests/language/getters_setters2_test.dart b/tests/language/getters_setters2_test.dart
deleted file mode 100644
index 469e5b3..0000000
--- a/tests/language/getters_setters2_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// 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";
-
-// Tests classes with getters and setters that do not have the same type.
-
-class A {
-  int a() {
-    return 37;
-  }
-}
-
-class B extends A {
-  int b() {
-    return 38;
-  }
-}
-
-class C {}
-
-class T1 {
-  A getterField;
-  A get field {
-    return getterField;
-  }
-
-  // OK, B is assignable to A
-  void set field(B arg) {
-    getterField = arg;
-  }
-}
-
-class T2 {
-  A getterField;
-  C setterField;
-  A get field {
-    return getterField;
-  }
-
-  // Type C is not assignable to A
-  void set field(C arg) { setterField = arg; } //# 01: static type warning
-}
-
-class T3 {
-  B getterField;
-  B get field {
-    return getterField;
-  }
-
-  // OK, A is assignable to B
-  void set field(A arg) {
-    getterField = arg;
-  }
-}
-
-main() {
-  T1 instance1 = new T1();
-  T2 instance2 = new T2(); //# 01: continued
-  T3 instance3 = new T3();
-
-  instance1.field = new B();
-  A resultA = instance1.field;
-  instance1.field = new A(); //# 03: dynamic type error
-  B resultB = instance1.field;
-
-  int result;
-  result = instance1.field.a();
-  Expect.equals(37, result);
-
-  // Type 'A' has no method named 'b'
-  instance1.field.b(); //# 02: static type warning
-
-  instance3.field = new B();
-  result = instance3.field.a();
-  Expect.equals(37, result);
-  result = instance3.field.b();
-  Expect.equals(38, result);
-}
diff --git a/tests/language/getters_setters_test.dart b/tests/language/getters_setters_test.dart
deleted file mode 100644
index 2524aa5..0000000
--- a/tests/language/getters_setters_test.dart
+++ /dev/null
@@ -1,150 +0,0 @@
-// 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";
-
-class GettersSettersTest {
-  static int foo;
-
-  static testMain() {
-    A a = new A();
-    a.x = 2;
-    Expect.equals(2, a.x);
-    Expect.equals(2, a.x_);
-
-    // Test inheritance.
-    a = new B();
-    a.x = 4;
-    Expect.equals(4, a.x);
-    Expect.equals(4, a.x_);
-
-    // Test overriding.
-    C c = new C();
-    c.x = 8;
-    Expect.equals(8, c.x);
-    Expect.equals(0, c.x_);
-    Expect.equals(8, c.y_);
-
-    // Test keyed getters and setters.
-    a.x_ = 0;
-    Expect.equals(2, a[2]);
-    a[2] = 4;
-    Expect.equals(6, a[0]);
-
-    // Test assignment operators.
-    a.x_ = 0;
-    a[2] += 8;
-    Expect.equals(12, a[0]);
-
-    // Test calling a function that internally uses getters.
-    Expect.equals(true, a.isXPositive());
-
-    // Test static fields.
-    foo = 42;
-    Expect.equals(42, foo);
-    A.foo = 43;
-    Expect.equals(43, A.foo);
-
-    new D().test();
-
-    OverrideField of = new OverrideField();
-    Expect.equals(27, of.getX_());
-
-    ReferenceField rf = new ReferenceField();
-    rf.x_ = 1;
-    Expect.equals(1, rf.getIt());
-    rf.setIt(2);
-    Expect.equals(2, rf.x_);
-  }
-}
-
-class A {
-  int x_;
-  static int foo;
-
-  static get bar {
-    return foo;
-  }
-
-  static set bar(newValue) {
-    foo = newValue;
-  }
-
-  int get x {
-    return x_;
-  }
-
-  void set x(int value) {
-    x_ = value;
-  }
-
-  bool isXPositive() {
-    return x > 0;
-  }
-
-  int operator [](int index) {
-    return x_ + index;
-  }
-
-  void operator []=(int index, int value) {
-    x_ = index + value;
-  }
-
-  int getX_() {
-    return x_;
-  }
-}
-
-class B extends A {}
-
-class C extends A {
-  int y_;
-
-  C() : super() {
-    this.x_ = 0;
-  }
-
-  int get x {
-    return y_;
-  }
-
-  void set x(int value) {
-    y_ = value;
-  }
-}
-
-class D extends A {
-  var x2_;
-
-  set x(new_x) {
-    x2_ = new_x;
-  }
-
-  test() {
-    x = 87;
-    Expect.equals(87, x2_);
-    x = 42;
-    Expect.equals(42, x2_);
-  }
-}
-
-class OverrideField extends A {
-  int get x_ {
-    return 27;
-  }
-}
-
-class ReferenceField extends A {
-  setIt(a) {
-    super.x_ = a;
-  }
-
-  int getIt() {
-    return super.x_;
-  }
-}
-
-main() {
-  GettersSettersTest.testMain();
-}
diff --git a/tests/language/getters_setters_type2_test.dart b/tests/language/getters_setters_type2_test.dart
deleted file mode 100644
index 33bf18b..0000000
--- a/tests/language/getters_setters_type2_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-// Getters and setters can have different types, and it is not a warning if the
-// two types are assignable.
-
-import "package:expect/expect.dart";
-
-int bar = 499;
-
-int get foo => bar;
-
-void set foo(str) {
-  bar = str.length;
-}
-
-main() {
-  int x = foo;
-  Expect.equals(499, x);
-  foo = "1234";
-  int y = foo;
-  Expect.equals(4, y);
-}
diff --git a/tests/language/getters_setters_type3_test.dart b/tests/language/getters_setters_type3_test.dart
deleted file mode 100644
index 2518fc1..0000000
--- a/tests/language/getters_setters_type3_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-// Getters and setters can have different types, and it is not a warning if the
-// two types are assignable.
-
-import "package:expect/expect.dart";
-
-int bar = 499;
-
-get foo => bar;
-
-void set foo(String str) {
-  bar = str.length;
-}
-
-main() {
-  int x = foo;
-  Expect.equals(499, x);
-  foo = "1234";
-  int y = foo;
-  Expect.equals(4, y);
-}
diff --git a/tests/language/getters_setters_type_test.dart b/tests/language/getters_setters_type_test.dart
deleted file mode 100644
index b2fb5b3..0000000
--- a/tests/language/getters_setters_type_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-// Getters and setters can have different types, but it is a warning if the
-// two types are not assignable.
-
-import "package:expect/expect.dart";
-
-int bar = 499;
-
-int // //# 01: static type warning
-get foo => bar;
-
-void set foo(
-             String //  //# 01: continued
-    str) {
-  bar = str.length;
-}
-
-main() {
-  int x = foo;
-  Expect.equals(499, x);
-  foo = "1234";
-  int y = foo;
-  Expect.equals(4, y);
-}
diff --git a/tests/language/guess_cid_test.dart b/tests/language/guess_cid_test.dart
deleted file mode 100644
index ea5629ad..0000000
--- a/tests/language/guess_cid_test.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program to test cid guessing optimizations.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  // Warmup optimizes methods.
-  for (int i = 0; i < 100; i++) {
-    Expect.equals(i, compareInt(i));
-    Expect.equals(i.toDouble(), compareDouble(i.toDouble()));
-    Expect.equals(i, binOpInt(i, i));
-    Expect.equals(i.toDouble(), binOpDouble(i.toDouble(), i.toDouble()));
-  }
-  Expect.equals(3, compareInt(3));
-  Expect.equals(-2, compareInt(-2));
-  Expect.equals(0, compareInt(-1));
-
-  Expect.equals(3, binOpInt(3, 3));
-  Expect.equals(0, binOpInt(-2, -2));
-
-  Expect.equals(3.0, binOpDouble(3.0, 3.0));
-  Expect.equals(0.0, binOpDouble(-2.0, -2.0));
-
-  Expect.equals(3.0, compareDouble(3.0));
-  Expect.equals(-2.0, compareDouble(-2.0));
-  Expect.equals(0.0, compareDouble(-1.0));
-
-  testOSR();
-}
-
-int compareInt(int i) {
-  if (i < 0) {
-    // Not visited in before optimization.
-    // Guess cid of comparison below.
-    if (i == -1) return 0;
-  }
-  return i;
-}
-
-double compareDouble(double i) {
-  if (i < 0.0) {
-    // Not visited in before optimization.
-    // Guess cid of comparison below.
-    if (i == -1.0) return 0.0;
-  }
-  return i;
-}
-
-int binOpInt(int i, int x) {
-  if (i < 0) {
-    // Not visited in before optimization.
-    // Guess cid of binary operation below.
-    return x + 2;
-  }
-  return i;
-}
-
-double binOpDouble(double i, double x) {
-  if (i < 0.0) {
-    // Not visited in before optimization.
-    // Guess cid of binary operation below.
-    return x + 2.0;
-  }
-  return i;
-}
-
-testOSR() {
-  // Foul up  IC data in integer's unary minus.
-  var y = -0x80000000;
-  Expect.equals(1475739525896764129300, testLoop(10, 0x80000000000000000));
-  // Second time no deoptimization can occur, since runtime feedback has been collected.
-  Expect.equals(1475739525896764129300, testLoop(10, 0x80000000000000000));
-}
-
-testLoop(N, x) {
-  for (int i = 0; i < N; ++i) {
-    // Will trigger OSR. Operation in loop below will use guessed cids.
-  }
-  int sum = 0;
-  for (int i = 0; i < N; ++i) {
-    // Guess 'x' is Smi, but is actually Bigint: deoptimize.
-    sum += x + 2;
-  }
-  return sum;
-}
diff --git a/tests/language/gvn_field_access_test.dart b/tests/language/gvn_field_access_test.dart
deleted file mode 100644
index cf124b1..0000000
--- a/tests/language/gvn_field_access_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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";
-
-class A {
-  var y = 0;
-  foo(x) {
-    var t = this.y;
-    if (t < x) {
-      for (int i = this.y; i < x; i++) y++;
-    }
-    // dart2js was reusing the 't' from above.
-    return this.y;
-  }
-}
-
-void main() {
-  Expect.equals(3, new A().foo(3));
-}
diff --git a/tests/language/gvn_interceptor_test.dart b/tests/language/gvn_interceptor_test.dart
deleted file mode 100644
index 51f109e..0000000
--- a/tests/language/gvn_interceptor_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-foo(a, index) {
-  if (a.length < index) {
-    for (int i = a.length; i <= index; i++) a.add(i);
-  }
-  // dart2js was reusing the a.length from above.
-  return a[a.length - 1];
-}
-
-void main() {
-  Expect.equals(3, foo([0], 3));
-}
diff --git a/tests/language/gvn_test.dart b/tests/language/gvn_test.dart
deleted file mode 100644
index a52944d..0000000
--- a/tests/language/gvn_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-class A {
-  int x = 0;
-
-  foo(i) {
-    var start = x;
-    do {
-      x++;
-      i++;
-    } while (i != 10);
-  }
-}
-
-main() {
-  var a = new A();
-  a.foo(0);
-  Expect.equals(10, a.x);
-}
diff --git a/tests/language/hash_code_mangling_test.dart b/tests/language/hash_code_mangling_test.dart
deleted file mode 100644
index 615da7b..0000000
--- a/tests/language/hash_code_mangling_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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";
-
-class Foo {
-  var $identityHash;
-}
-
-void main() {
-  Foo foo = new Foo();
-  foo.$identityHash = 'fisk';
-  Expect.isTrue(foo.$identityHash is String);
-  int hash = foo.hashCode;
-  Expect.isTrue(hash is int);
-  Expect.isTrue(foo.$identityHash is String);
-  Expect.equals(hash, foo.hashCode);
-}
diff --git a/tests/language/hash_map_null_key_foreach_test.dart b/tests/language/hash_map_null_key_foreach_test.dart
deleted file mode 100644
index 4e566fb..0000000
--- a/tests/language/hash_map_null_key_foreach_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Regression test for using `null` as a key with `forEach`.
-
-main() {
-  var x = new Map<int, int>();
-  x[1] = 2;
-  x[null] = 1;
-  int c = 0;
-  x.forEach((int i, int j) {
-    c++;
-    Expect.isTrue(i == null || i is int, 'int or null expected');
-  });
-  Expect.equals(2, c);
-}
diff --git a/tests/language/hello_dart_test.dart b/tests/language/hello_dart_test.dart
deleted file mode 100644
index be260af..0000000
--- a/tests/language/hello_dart_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-// Simple test program invoked with an option to eagerly
-// compile all code that is loaded in the isolate.
-// VMOptions=--compile_all --error-on-bad-type --error-on-bad-override
-
-class HelloDartTest {
-  static testMain() {
-    print("Hello, Darter!");
-  }
-}
-
-main() {
-  HelloDartTest.testMain();
-}
diff --git a/tests/language/hello_script_lib.dart b/tests/language/hello_script_lib.dart
deleted file mode 100644
index 35ecc6a..0000000
--- a/tests/language/hello_script_lib.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Testing a simple script importing a library.
-// This file contains the library.
-
-library HelloScriptLib;
-
-import "package:expect/expect.dart";
-part "hello_script_lib_source.dart";
-
-class HelloLib {
-  static doTest() {
-    x = 17;
-    Expect.equals(17, x++);
-    print("Hello from Lib!");
-  }
-}
diff --git a/tests/language/hello_script_lib_source.dart b/tests/language/hello_script_lib_source.dart
deleted file mode 100644
index 8c74bc4..0000000
--- a/tests/language/hello_script_lib_source.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Testing a simple script importing a library.
-// This file contains a source file included from the library.
-
-// A top-level variable being accessed both from the library and the importer.
-
-part of HelloScriptLib;
-
-var x;
diff --git a/tests/language/hello_script_test.dart b/tests/language/hello_script_test.dart
deleted file mode 100644
index b9f004e..0000000
--- a/tests/language/hello_script_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-#! This is currently only a comment.
-// Copyright (c) 2011, 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.
-
-// Testing a simple script importing a library.
-// This file contains the script (aka root library).
-
-library HelloScriptTest.dart;
-
-import "package:expect/expect.dart";
-import "hello_script_lib.dart";
-
-main() {
-  HelloLib.doTest();
-  Expect.equals(18, x);
-  print("Hello done.");
-}
diff --git a/tests/language/hidden_import_lib.dart b/tests/language/hidden_import_lib.dart
deleted file mode 100644
index de7f2df..0000000
--- a/tests/language/hidden_import_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2013, 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 hidden_import_lib;
-
-class Future {}
diff --git a/tests/language/hidden_import_test.dart b/tests/language/hidden_import_test.dart
deleted file mode 100644
index f3398e0..0000000
--- a/tests/language/hidden_import_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Tests that dart: imports are implicitly hidden and cause warning on use.
-
-library hidden_import;
-
-import 'hidden_import_lib.dart';
-import 'hidden_import_lib.dart' as prefix;
-import 'dart:async';
-import 'dart:async' as prefix;
-
-main() {
-  new Future(); //# 01: static type warning
-  new prefix.Future(); //# 02: static type warning
-}
diff --git a/tests/language/identical_closure2_test.dart b/tests/language/identical_closure2_test.dart
deleted file mode 100644
index e1a00a2..0000000
--- a/tests/language/identical_closure2_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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";
-
-var myIdentical = identical;
-
-class Point {
-  num x, y;
-  Point(this.x, this.y);
-}
-
-main() {
-  // Bigint (2^76).
-  Expect.isTrue(myIdentical(75557863725914323419136, 75557863725914323419136));
-  Expect.isFalse(myIdentical(75557863725914323419136, 75557863725914323419137));
-
-  // Different types.
-  Expect.isFalse(myIdentical(42, 42.0));
-
-  // NaN handling.
-  Expect.isTrue(myIdentical(double.NAN, double.NAN));
-}
diff --git a/tests/language/identical_closure_test.dart b/tests/language/identical_closure_test.dart
deleted file mode 100644
index 62f47d0..0000000
--- a/tests/language/identical_closure_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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";
-
-var myIdentical = identical;
-
-class Point {
-  num x, y;
-  Point(this.x, this.y);
-}
-
-main() {
-  // int.
-  Expect.isTrue(myIdentical(42, 42));
-  Expect.isFalse(myIdentical(42, 41));
-
-  // double.
-  Expect.isTrue(myIdentical(42.0, 42.0));
-  Expect.isFalse(myIdentical(42.0, 41.0));
-
-  // Mint (2^45).
-  Expect.isTrue(myIdentical(35184372088832, 35184372088832));
-  Expect.isFalse(myIdentical(35184372088832, 35184372088831));
-
-  // Different types.
-  Expect.isFalse(myIdentical("hello", 41));
-
-  // Points.
-  var p = new Point(1, 1);
-  var q = new Point(1, 1);
-  Expect.isFalse(myIdentical(p, q));
-
-  // Strings.
-  var a = "hello";
-  var b = "hello";
-  // Identical strings are coalesced into single instances.
-  Expect.isTrue(myIdentical(a, b));
-
-  // Null handling.
-  Expect.isFalse(myIdentical(42, null));
-  Expect.isTrue(myIdentical(null, null));
-}
diff --git a/tests/language/identical_const_test.dart b/tests/language/identical_const_test.dart
deleted file mode 100644
index c0d5fa5..0000000
--- a/tests/language/identical_const_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2014, 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';
-
-f() {}
-const g = 1;
-
-const identical_ff = identical(f, f);
-const identical_fg = identical(f, g);
-const identical_gf = identical(g, f);
-const identical_gg = identical(g, g);
-
-// Verify proper compile time computation of identical()
-const a = const {
-  identical_ff: 0, //# 01: static type warning
-  identical_gg: 0, //# 02: static type warning
-  true: 0
-};
-
-const b = const {
-  identical_fg: 0, //# 03: static type warning
-  identical_gf: 0, //# 04: static type warning
-  false: 0
-};
-
-use(x) => x;
-
-main() {
-  use(a);
-  use(b);
-
-  // Verify proper run time computation of identical()
-  Expect.isTrue(identical_ff); //# 05: ok
-  Expect.isTrue(identical_gg); //# 06: ok
-  Expect.isFalse(identical_fg); //# 07: ok
-  Expect.isFalse(identical_gf); //# 08: ok
-}
diff --git a/tests/language/identical_test.dart b/tests/language/identical_test.dart
deleted file mode 100644
index 244f814..0000000
--- a/tests/language/identical_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test efficient and correct implementation of !identical(a, b).
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import 'package:expect/expect.dart';
-
-notIdenticalTest1(a) {
-  if (!identical("ho", a)) {
-    return 2;
-  } else {
-    return 1;
-  }
-}
-
-notIdenticalTest2(a) {
-  var x = identical("ho", a);
-  if (!x) {
-    Expect.equals(false, x);
-    return x;
-  } else {
-    Expect.equals(true, x);
-    return 1;
-  }
-}
-
-notIdenticalTest3(a) {
-  var x = identical("ho", a);
-  return !x;
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(1, notIdenticalTest1("ho"));
-    Expect.equals(1, notIdenticalTest2("ho"));
-    Expect.equals(false, notIdenticalTest3("ho"));
-  }
-}
diff --git a/tests/language/if_and_test.dart b/tests/language/if_and_test.dart
deleted file mode 100644
index 55c28da..0000000
--- a/tests/language/if_and_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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";
-
-// The "if (negative) res2 |= 3" below can be emitted as negative && (res2 |= 3)
-// in JavaScript. Dart2js produced the wrong output.
-
-_shiftRight(x, y) => x;
-int64_bits(x) => x;
-
-class A {
-  opshr(int n, a2) {
-    int res2;
-    bool negative = a2 == 496;
-
-    res2 = _shiftRight(a2, n);
-    if (negative) {
-      res2 |= 3;
-    }
-    return int64_bits(res2);
-  }
-}
-
-main() {
-  var a = new A();
-  var t;
-  for (int i = 0; i < 3; i++) {
-    t = a.opshr(99, 496);
-  }
-  Expect.equals(499, t);
-}
diff --git a/tests/language/if_null_assignment_behavior_test.dart b/tests/language/if_null_assignment_behavior_test.dart
deleted file mode 100644
index 42d6544..0000000
--- a/tests/language/if_null_assignment_behavior_test.dart
+++ /dev/null
@@ -1,215 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify semantics of the ??= operator, including order of operations, by
-// keeping track of the operations performed.
-
-import "package:expect/expect.dart";
-import "if_null_assignment_helper.dart" as h;
-
-bad() {
-  Expect.fail('Should not be executed');
-}
-
-var xGetValue = null;
-
-get x {
-  h.operations.add('x');
-  var tmp = xGetValue;
-  xGetValue = null;
-  return tmp;
-}
-
-void set x(value) {
-  h.operations.add('x=$value');
-}
-
-var yGetValue = null;
-
-get y {
-  h.operations.add('y');
-  var tmp = yGetValue;
-  yGetValue = null;
-  return tmp;
-}
-
-void set y(value) {
-  h.operations.add('y=$value');
-}
-
-var zGetValue = null;
-
-get z {
-  h.operations.add('z');
-  var tmp = zGetValue;
-  zGetValue = null;
-  return tmp;
-}
-
-void set z(value) {
-  h.operations.add('z=$value');
-}
-
-var fValue = null;
-
-f() {
-  h.operations.add('f()');
-  var tmp = fValue;
-  fValue = null;
-  return tmp;
-}
-
-void check(expectedValue, f(), expectedOperations) {
-  Expect.equals(expectedValue, f());
-  Expect.listEquals(expectedOperations, h.operations);
-  h.operations = [];
-}
-
-void checkThrows(expectedException, f(), expectedOperations) {
-  Expect.throws(f, expectedException);
-  Expect.listEquals(expectedOperations, h.operations);
-  h.operations = [];
-}
-
-noMethod(e) => e is NoSuchMethodError;
-
-class C {
-  final String s;
-
-  C(this.s);
-
-  @override
-  String toString() => s;
-
-  static var xGetValue = null;
-
-  static get x {
-    h.operations.add('C.x');
-    var tmp = xGetValue;
-    xGetValue = null;
-    return tmp;
-  }
-
-  static void set x(value) {
-    h.operations.add('C.x=$value');
-  }
-
-  var vGetValue = null;
-
-  get v {
-    h.operations.add('$s.v');
-    var tmp = vGetValue;
-    vGetValue = null;
-    return tmp;
-  }
-
-  void set v(value) {
-    h.operations.add('$s.v=$value');
-  }
-
-  var indexGetValue = null;
-
-  operator [](index) {
-    h.operations.add('$s[$index]');
-    var tmp = indexGetValue;
-    indexGetValue = null;
-    return tmp;
-  }
-
-  void operator []=(index, value) {
-    h.operations.add('$s[$index]=$value');
-  }
-
-  final finalOne = 1;
-  final finalNull = null;
-
-  void instanceTest() {
-    // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
-    vGetValue = 1; check(1, () => v ??= bad(), ['$s.v']); //# 01: ok
-    yGetValue = 1; check(1, () => v ??= y, ['$s.v', 'y', '$s.v=1']); //# 02: ok
-    check(1, () => finalOne ??= bad(), []); //# 03: static type warning
-    yGetValue = 1; checkThrows(noMethod, () => finalNull ??= y, ['y']); //# 04: static type warning
-  }
-}
-
-class D extends C {
-  D(String s) : super(s);
-
-  get v => bad();
-
-  void set v(value) {
-    bad();
-  }
-
-  void derivedInstanceTest() {
-    // super.v ??= e is equivalent to
-    // ((x) => x == null ? super.v = e : x)(super.v)
-    vGetValue = 1; check(1, () => super.v ??= bad(), ['$s.v']); //# 05: ok
-    yGetValue = 1; check(1, () => super.v ??= y, ['$s.v', 'y', '$s.v=1']); //# 06: ok
-  }
-}
-
-main() {
-  // Make sure the "none" test fails if "??=" is not implemented.  This makes
-  // status files easier to maintain.
-  var _;
-  _ ??= null;
-
-  new C('c').instanceTest();
-  new D('d').derivedInstanceTest();
-
-  // v ??= e is equivalent to ((x) => x == null ? v = e : x)(v)
-  xGetValue = 1; check(1, () => x ??= bad(), ['x']); //# 07: ok
-  yGetValue = 1; check(1, () => x ??= y, ['x', 'y', 'x=1']); //# 08: ok
-  h.xGetValue = 1; check(1, () => h.x ??= bad(), ['h.x']); //# 09: ok
-  yGetValue = 1; check(1, () => h.x ??= y, ['h.x', 'y', 'h.x=1']); //# 10: ok
-  { var l = 1; check(1, () => l ??= bad(), []); } //# 11: ok
-  { var l; yGetValue = 1; check(1, () => l ??= y, ['y']); Expect.equals(1, l); } //# 12: ok
-  { final l = 1; check(1, () => l ??= bad(), []); } //# 13: static type warning
-  { final l = null; yGetValue = 1; checkThrows(noMethod, () => l ??= y, ['y']); } //# 14: static type warning
-  check(C, () => C ??= bad(), []); //# 15: static type warning
-  h ??= null; //# 29: compile-time error
-  h[0] ??= null; //# 30: compile-time error
-
-  // C.v ??= e is equivalent to ((x) => x == null ? C.v = e : x)(C.v)
-  C.xGetValue = 1; check(1, () => C.x ??= bad(), ['C.x']); //# 16: ok
-  yGetValue = 1; check(1, () => C.x ??= y, ['C.x', 'y', 'C.x=1']); //# 17: ok
-  h.C.xGetValue = 1; check(1, () => h.C.x ??= bad(), ['h.C.x']); //# 18: ok
-  yGetValue = 1; check(1, () => h.C.x ??= y, ['h.C.x', 'y', 'h.C.x=1']); //# 19: ok
-
-  // e1.v ??= e2 is equivalent to
-  // ((x) => ((y) => y == null ? x.v = e2 : y)(x.v))(e1)
-  xGetValue = new C('x'); xGetValue.vGetValue = 1; //# 20: ok
-  check(1, () => x.v ??= bad(), ['x', 'x.v']); //    //# 20: continued
-  xGetValue = new C('x'); yGetValue = 1; //               //# 21: ok
-  check(1, () => x.v ??= y, ['x', 'x.v', 'y', 'x.v=1']); //# 21: continued
-  fValue = new C('f()'); fValue.vGetValue = 1; //      //# 22: ok
-  check(1, () => f().v ??= bad(), ['f()', 'f().v']); //# 22: continued
-  fValue = new C('f()'); yGetValue = 1; //                         //# 23: ok
-  check(1, () => f().v ??= y, ['f()', 'f().v', 'y', 'f().v=1']); //# 23: continued
-
-  // e1[e2] ??= e3 is equivalent to
-  // ((a, i) => ((x) => x == null ? a[i] = e3 : x)(a[i]))(e1, e2)
-  xGetValue = new C('x'); yGetValue = 1; xGetValue.indexGetValue = 2; //# 24: ok
-  check(2, () => x[y] ??= bad(), ['x', 'y', 'x[1]']); //                //# 24: continued
-  xGetValue = new C('x'); yGetValue = 1; zGetValue = 2; //         //# 25: ok
-  check(2, () => x[y] ??= z, ['x', 'y', 'x[1]', 'z', 'x[1]=2']); //# 25: continued
-
-  // e1?.v ??= e2 is equivalent to ((x) => x == null ? null : x.v ??= e2)(e1).
-  check(null, () => x?.v ??= bad(), ['x']); //# 26: ok
-  xGetValue = new C('x'); xGetValue.vGetValue = 1; //# 27: ok
-  check(1, () => x?.v ??= bad(), ['x', 'x.v']); //    //# 27: continued
-  xGetValue = new C('x'); yGetValue = 1; //                //# 28: ok
-  check(1, () => x?.v ??= y, ['x', 'x.v', 'y', 'x.v=1']); //# 28: continued
-
-  // C?.v ??= e2 is equivalent to C.v ??= e2.
-  C.xGetValue = 1; //                        //# 29: ok
-  check(1, () => C?.x ??= bad(), ['C.x']); //# 29: continued
-  h.C.xgetValue = 1; //                          //# 30: ok
-  check(1, () => h.c?.x ??= bad(), ['h.C.x']); //# 30: continued
-  yGetValue = 1; //                                    //# 31: ok
-  check(1, () => C?.x ??= y, ['C.x', 'y', 'C.x=1']); //# 31: continued
-  yGetValue = 1; //                                          //# 32: ok
-  check(1, () => h.C?.x ??= y, ['h.C.x', 'y', 'h.C.x=1']); //# 32: continued
-}
diff --git a/tests/language/if_null_assignment_helper.dart b/tests/language/if_null_assignment_helper.dart
deleted file mode 100644
index 9d6819b..0000000
--- a/tests/language/if_null_assignment_helper.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2015, 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 used by if_null_assignment_behavior_test.dart, which
-// imports it using the prefix "h.".
-
-library lib;
-
-import "package:expect/expect.dart";
-
-List<String> operations = [];
-
-var xGetValue = null;
-
-get x {
-  operations.add('h.x');
-  var tmp = xGetValue;
-  xGetValue = null;
-  return tmp;
-}
-
-void set x(value) {
-  operations.add('h.x=$value');
-}
-
-class C {
-  static var xGetValue = null;
-
-  static get x {
-    operations.add('h.C.x');
-    var tmp = xGetValue;
-    xGetValue = null;
-    return tmp;
-  }
-
-  static void set x(value) {
-    operations.add('h.C.x=$value');
-  }
-}
diff --git a/tests/language/if_null_assignment_static_test.dart b/tests/language/if_null_assignment_static_test.dart
deleted file mode 100644
index 6f0858c..0000000
--- a/tests/language/if_null_assignment_static_test.dart
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify that the static type of a ??= b is the least upper bound of the
-// static types of a and b.
-
-import "package:expect/expect.dart";
-
-// Determine whether the VM is running in checked mode.
-bool get checkedMode {
-  try {
-    var x = 'foo';
-    int y = x;
-    return false;
-  } catch (_) {
-    return true;
-  }
-}
-
-noMethod(e) => e is NoSuchMethodError;
-
-bad() {
-  Expect.fail('Should not be executed');
-}
-
-class A {
-  String a;
-}
-
-class B extends A {
-  String b;
-}
-
-class C extends A {
-  String c;
-}
-
-A get a => null;
-
-void set a(A value) {}
-
-B get b => null;
-
-void set b(B value) {}
-
-class ClassWithStaticGetters {
-  static A get a => null;
-
-  static void set a(A value) {}
-
-  static B get b => null;
-
-  static void set b(B value) {}
-}
-
-class ClassWithInstanceGetters {
-  A get a => null;
-
-  void set a(A value) {}
-
-  B get b => null;
-
-  void set b(B value) {}
-}
-
-class DerivedClass extends ClassWithInstanceGetters {
-  dynamic get a => bad();
-
-  void set a(dynamic value) {
-    bad();
-  }
-
-  dynamic get b => bad();
-
-  void set b(dynamic value) {
-    bad();
-  }
-
-  void derivedTest() {
-    // The static type of super.v ??= e is the LUB of the static types of
-    // super.v and e.
-    (super.a ??= new A()).a; //# 01: ok
-    Expect.throws(() => (super.a ??= new A()).b, noMethod); //# 02: static type warning
-    (super.a ??= new B()).a; //# 03: ok
-    (super.a ??= new B()).b; //# 04: static type warning
-    if (!checkedMode) {
-      (super.b ??= new A()).a; //# 05: ok
-      Expect.throws(() => (super.b ??= new A()).b, noMethod); //# 06: static type warning
-
-      // Exactly the same static warnings that would be caused by super.v = e
-      // are also generated in the case of super.v ??= e.
-      super.b ??= new C(); //# 07: static type warning
-    }
-  }
-}
-
-main() {
-  // Make sure the "none" test fails if "??=" is not implemented.  This makes
-  // status files easier to maintain.
-  var _;
-  _ ??= null;
-
-  new DerivedClass().derivedTest();
-
-  // The static type of v ??= e is the LUB of the static types of v and e.
-  (a ??= new A()).a; //# 08: ok
-  Expect.throws(() => (a ??= new A()).b, noMethod); //# 09: static type warning
-  (a ??= new B()).a; //# 10: ok
-  (a ??= new B()).b; //# 11: static type warning
-  if (!checkedMode) {
-    (b ??= new A()).a; //# 12: ok
-    Expect.throws(() => (b ??= new A()).b, noMethod); //# 13: static type warning
-
-    // Exactly the same static warnings that would be caused by v = e are also
-    // generated in the case of v ??= e.
-    b ??= new C(); //# 14: static type warning
-  }
-
-  // The static type of C.v ??= e is the LUB of the static types of C.v and e.
-  (ClassWithStaticGetters.a ??= new A()).a; //# 15: ok
-  Expect.throws(() => (ClassWithStaticGetters.a ??= new A()).b, noMethod); //# 16: static type warning
-  (ClassWithStaticGetters.a ??= new B()).a; //# 17: ok
-  (ClassWithStaticGetters.a ??= new B()).b; //# 18: static type warning
-  if (!checkedMode) {
-    (ClassWithStaticGetters.b ??= new A()).a; //# 19: ok
-    Expect.throws(() => (ClassWithStaticGetters.b ??= new A()).b, noMethod); //# 20: static type warning
-
-    // Exactly the same static warnings that would be caused by C.v = e are
-    // also generated in the case of C.v ??= e.
-    ClassWithStaticGetters.b ??= new C(); //# 21: static type warning
-  }
-
-  // The static type of e1.v ??= e2 is the LUB of the static types of e1.v and
-  // e2.
-  (new ClassWithInstanceGetters().a ??= new A()).a; //# 22: ok
-  Expect.throws(() => (new ClassWithInstanceGetters().a ??= new A()).b, noMethod); //# 23: static type warning
-  (new ClassWithInstanceGetters().a ??= new B()).a; //# 24: ok
-  (new ClassWithInstanceGetters().a ??= new B()).b; //# 25: static type warning
-  if (!checkedMode) {
-    (new ClassWithInstanceGetters().b ??= new A()).a; //# 26: ok
-    Expect.throws(() => (new ClassWithInstanceGetters().b ??= new A()).b, noMethod); //# 27: static type warning
-
-    // Exactly the same static warnings that would be caused by e1.v = e2 are
-    // also generated in the case of e1.v ??= e2.
-    new ClassWithInstanceGetters().b ??= new C(); //# 28: static type warning
-  }
-
-  // The static type of e1[e2] ??= e3 is the LUB of the static types of e1[e2]
-  // and e3.
-  ((<A>[null])[0] ??= new A()).a; //# 29: ok
-  Expect.throws(() => ((<A>[null])[0] ??= new A()).b, noMethod); //# 30: static type warning
-  ((<A>[null])[0] ??= new B()).a; //# 31: ok
-  ((<A>[null])[0] ??= new B()).b; //# 32: static type warning
-  if (!checkedMode) {
-    ((<B>[null])[0] ??= new A()).a; //# 33: ok
-    Expect.throws(() => ((<B>[null])[0] ??= new A()).b, noMethod); //# 34: static type warning
-
-    // Exactly the same static warnings that would be caused by e1[e2] = e3 are
-    // also generated in the case of e1[e2] ??= e3.
-    (<B>[null])[0] ??= new C(); //# 35: static type warning
-  }
-
-  // The static type of e1?.v op= e2 is the static type of e1.v op e2,
-  // therefore the static type of e1?.v ??= e2 is the static type of
-  // e1.v ?? e2, which is the LUB of the static types of e1?.v and e2.
-  (new ClassWithInstanceGetters()?.a ??= new A()).a; //# 36: ok
-  Expect.throws(() => (new ClassWithInstanceGetters()?.a ??= new A()).b, noMethod); //# 37: static type warning
-  (new ClassWithInstanceGetters()?.a ??= new B()).a; //# 38: ok
-  (new ClassWithInstanceGetters()?.a ??= new B()).b; //# 39: static type warning
-  if (!checkedMode) {
-    (new ClassWithInstanceGetters()?.b ??= new A()).a; //# 40: ok
-    Expect.throws(() => (new ClassWithInstanceGetters()?.b ??= new A()).b, noMethod); //# 41: static type warning
-
-    // Exactly the same static warnings that would be caused by e1.v ??= e2 are
-    // also generated in the case of e1?.v ??= e2.
-    new ClassWithInstanceGetters()?.b ??= new C(); //# 42: static type warning
-  }
-}
diff --git a/tests/language/if_null_behavior_test.dart b/tests/language/if_null_behavior_test.dart
deleted file mode 100644
index c871c4e..0000000
--- a/tests/language/if_null_behavior_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Evaluation of an if-null expression e of the form e1 ?? e2 is equivalent to
-// the evaluation of the expression ((x) => x == null ? e2 : x)(e1).  The
-// static type of e is the least upper bound of the static type of e1 and the
-// static type of e2.
-
-import "package:expect/expect.dart";
-
-class A {
-  final String a;
-  A(this.a);
-}
-
-class B extends A {
-  B(String v)
-      : b = v,
-        super(v);
-  final String b;
-}
-
-class C extends A {
-  C(String v)
-      : c = v,
-        super(v);
-  final String c;
-}
-
-B nullB() => null;
-C nullC() => null;
-
-noMethod(e) => e is NoSuchMethodError;
-
-main() {
-  // Make sure the "none" test fails if "??" is not implemented.  This makes
-  // status files easier to maintain.
-  var _ = null ?? null;
-
-  Expect.equals(1, 1 ?? 2); //# 01: ok
-  Expect.equals(1, 1 ?? null); //# 02: ok
-  Expect.equals(2, null ?? 2); //# 03: ok
-  Expect.equals(null, null ?? null); //# 04: ok
-  Expect.equals('B', (new B('B') ?? new C('C')).a); //# 05: ok
-  Expect.equals('B', (new B('B') ?? new C('C')).b); //# 06: static type warning
-  Expect.throws(() => (new B('B') ?? new C('C')).c, noMethod); //# 07: static type warning
-  Expect.equals('B', (new B('B') ?? nullC()).a); //# 08: ok
-  Expect.equals('B', (new B('B') ?? nullC()).b); //# 09: static type warning
-  Expect.throws(() => (new B('B') ?? nullC()).c, noMethod); //# 10: static type warning
-  Expect.equals('C', (nullB() ?? new C('C')).a); //# 11: ok
-  Expect.throws(() => (nullB() ?? new C('C')).b, noMethod); //# 12: static type warning
-  Expect.equals('C', (nullB() ?? new C('C')).c); //# 13: static type warning
-  Expect.throws(() => (nullB() ?? nullC()).a, noMethod); //# 14: ok
-  Expect.throws(() => (nullB() ?? nullC()).b, noMethod); //# 15: static type warning
-  Expect.throws(() => (nullB() ?? nullC()).c, noMethod); //# 16: static type warning
-}
diff --git a/tests/language/if_null_evaluation_order_test.dart b/tests/language/if_null_evaluation_order_test.dart
deleted file mode 100644
index f5db1c2..0000000
--- a/tests/language/if_null_evaluation_order_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Evaluation of an if-null expression e of the form e1 ?? e2 is equivalent to
-// the evaluation of the expression ((x) => x == null ? e2 : x)(e1).
-//
-// Therefore, e1 should be evaluated first; if it is non-null, e2 should not
-// be evaluated.
-
-import "package:expect/expect.dart";
-
-void bad() {
-  throw new Exception();
-}
-
-bool firstExecuted = false;
-
-first() {
-  firstExecuted = true;
-  return null;
-}
-
-second() {
-  Expect.isTrue(firstExecuted);
-  return 2;
-}
-
-main() {
-  // Make sure the "none" test fails if "??" is not implemented.  This makes
-  // status files easier to maintain.
-  var _ = null ?? null;
-
-  Expect.equals(1, 1 ?? bad()); //# 01: ok
-  Expect.equals(2, first() ?? second()); //# 02: ok
-}
diff --git a/tests/language/if_null_precedence_test.dart b/tests/language/if_null_precedence_test.dart
deleted file mode 100644
index 95dcb5b..0000000
--- a/tests/language/if_null_precedence_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify that '??' binds tighter than '?:' and less tightly than '||'.
-
-import "package:expect/expect.dart";
-
-assertionError(e) => e is AssertionError;
-
-// Determine whether the VM is running in checked mode.
-bool get checkedMode {
-  try {
-    var x = 'foo';
-    int y = x;
-    return false;
-  } catch (_) {
-    return true;
-  }
-}
-
-main() {
-  // Make sure the "none" test fails if "??" is not implemented.  This makes
-  // status files easier to maintain.
-  var _ = null ?? null;
-
-  // "a ?? b ?? c" should be legal, and should evaluate to the first non-null
-  // value (or null if there are no non-null values).
-  Expect.equals(1, 1 ?? 2 ?? 3); //# 01: ok
-  Expect.equals(2, null ?? 2 ?? 3); //# 02: ok
-  Expect.equals(3, null ?? null ?? 3); //# 03: ok
-  Expect.equals(null, null ?? null ?? null); //# 04: ok
-
-  // "a ?? b ? c : d" should parse as "(a ?? b) ? c : d", therefore provided
-  // that a is true, b need not be a bool.  An incorrect parse of
-  // "a ?? (b ? c : d)" would require b to be a bool to avoid a static type
-  // warning.
-  Expect.equals(2, true ?? 1 ? 2 : 3); //# 05: ok
-
-  // "a ?? b || c" should parse as "a ?? (b || c)", therefore it's a static
-  // type warning if b doesn't have type bool.  An incorrect parse of
-  // "(a ?? b) || c" would allow b to have any type provided that a is bool.
-  Expect.equals(false, false ?? 1 || true); //# 06: static type warning
-
-  // "a || b ?? c" should parse as "(a || b) ?? c", therefore it is a static
-  // type warning if b doesn't have type bool.  An incorrect parse of
-  // "a || (b ?? c)" would allow b to have any type provided that c is bool.
-  if (checkedMode) {
-    Expect.throws(() => false || 1 ?? true, assertionError); //# 07: static type warning
-  } else {
-    Expect.equals(false, false || 1 ?? true); //               //# 07: continued
-  }
-
-  if (checkedMode) {
-    // An incorrect parse of "a || (b ?? c)" would result in no checked-mode
-    // error.
-    Expect.throws(() => false || null ?? true, assertionError); //# 08: ok
-  } else {
-    // An incorrect parse of "a || (b ?? c)" would result in c being evaluated.
-    int i = 0; //                                                 //# 08: continued
-    Expect.equals(false, false || null ?? i++ == 0); //           //# 08: continued
-    Expect.equals(0, i); //                                       //# 08: continued
-  }
-}
diff --git a/tests/language/if_test.dart b/tests/language/if_test.dart
deleted file mode 100644
index 86b72029..0000000
--- a/tests/language/if_test.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing if statement.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int f0(bool b) {
-    if (b) ;
-    if (b)
-      ;
-    else
-      ;
-    if (b) {}
-    if (b) {} else {}
-    return 0;
-  }
-
-  static int f1(bool b) {
-    if (b)
-      return 1;
-    else
-      return 2;
-  }
-
-  static int f2(bool b) {
-    if (b) {
-      return 1;
-    } else {
-      return 2;
-    }
-  }
-
-  static int f3(bool b) {
-    if (b) return 1;
-    return 2;
-  }
-
-  static int f4(bool b) {
-    if (b) {
-      return 1;
-    }
-    return 2;
-  }
-
-  static int f5(bool b) {
-    if (!b) {
-      return 1;
-    }
-    return 2;
-  }
-
-  static int f6(bool a, bool b) {
-    if (a || b) {
-      return 1;
-    }
-    return 2;
-  }
-
-  static int f7(bool a, bool b) {
-    if (a && b) {
-      return 1;
-    }
-    return 2;
-  }
-}
-
-class IfTest {
-  static testMain() {
-    Expect.equals(0, Helper.f0(true));
-    Expect.equals(1, Helper.f1(true));
-    Expect.equals(2, Helper.f1(false));
-    Expect.equals(1, Helper.f2(true));
-    Expect.equals(2, Helper.f2(false));
-    Expect.equals(1, Helper.f3(true));
-    Expect.equals(2, Helper.f3(false));
-    Expect.equals(1, Helper.f4(true));
-    Expect.equals(2, Helper.f4(false));
-    Expect.equals(2, Helper.f5(true));
-    Expect.equals(1, Helper.f5(false));
-    Expect.equals(1, Helper.f6(true, true));
-    Expect.equals(1, Helper.f6(true, false));
-    Expect.equals(1, Helper.f6(false, true));
-    Expect.equals(2, Helper.f6(false, false));
-    Expect.equals(1, Helper.f7(true, true));
-    Expect.equals(2, Helper.f7(true, false));
-    Expect.equals(2, Helper.f7(false, true));
-    Expect.equals(2, Helper.f7(false, false));
-  }
-}
-
-main() {
-  IfTest.testMain();
-}
diff --git a/tests/language/illegal_declaration_test.dart b/tests/language/illegal_declaration_test.dart
deleted file mode 100644
index 796838c..0000000
--- a/tests/language/illegal_declaration_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-[ // //# 01: syntax error
-
-main() {}
diff --git a/tests/language/illegal_initializer_test.dart b/tests/language/illegal_initializer_test.dart
deleted file mode 100644
index ee4d13b..0000000
--- a/tests/language/illegal_initializer_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2013, 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 {
-  A();
-  A.foo();
-}
-
-class B extends A {
-  B.c1()
-      : super.foo
-  /* // //# 01: syntax error
-        ()
-  */ // //# 01: continued
-  ;
-
-  B.foo();
-  B.c2()
-      : this.foo
-  /* // //# 02: syntax error
-        ()
-  */ // //# 02: continued
-  ;
-
-  B.c3()
-      : super
-  /* // //# 03: syntax error
-        ()
-  */ // //# 03: continued
-  ;
-
-  B();
-  B.c4()
-      : this
-  /* // //# 04: syntax error
-        ()
-  */ // //# 04: continued
-  ;
-}
-
-main() {
-  new B.c1();
-  new B.c2();
-  new B.c3();
-  new B.c4();
-}
diff --git a/tests/language/illegal_invocation_lib.dart b/tests/language/illegal_invocation_lib.dart
deleted file mode 100644
index 0d1b8df4..0000000
--- a/tests/language/illegal_invocation_lib.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-library foo;
-
-foo() {}
diff --git a/tests/language/illegal_invocation_test.dart b/tests/language/illegal_invocation_test.dart
deleted file mode 100644
index b007241..0000000
--- a/tests/language/illegal_invocation_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-// Dart test program for constructors and initializers.
-//
-// Test for issue 1393.  Invoking a library prefix name caused an internal error
-// in dartc.
-
-import "illegal_invocation_lib.dart" as foo; // //# 01: compile-time error
-
-main() {
-  // probably what the user meant was foo.foo(), but the qualifier refers
-  // to the library prefix, not the method defined within the library.
-  foo(); //                        //# 01: continued
-}
diff --git a/tests/language/implicit_closure1_test.dart b/tests/language/implicit_closure1_test.dart
deleted file mode 100644
index 4a8a4f4..0000000
--- a/tests/language/implicit_closure1_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks --enable_asserts
-
-typedef Handler(bool e);
-
-class Hello {
-  Hello() {}
-  void handler2(bool e) {
-    print('handler2');
-  }
-
-  static void handler1(bool e) {
-    print('handler1');
-  }
-
-  void addEventListener(String s, Handler handler, bool status) {
-    handler(status);
-  }
-
-  static void main() {
-    final h = new Hello();
-    h.addEventListener('click', handler1, false);
-    h.addEventListener('click', h.handler2, false);
-  }
-}
-
-main() {
-  Hello.main();
-}
diff --git a/tests/language/implicit_closure2_test.dart b/tests/language/implicit_closure2_test.dart
deleted file mode 100644
index a03f458..0000000
--- a/tests/language/implicit_closure2_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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";
-
-class B {
-  foo(i) => 499 + i;
-}
-
-class A {
-  var b;
-  A() : b = new B();
-
-  foo(i) {
-    return (() => b.foo(i))();
-  }
-}
-
-main() {
-  var a = new A();
-  Expect.equals(510, a.foo(11));
-  var f = a.foo;
-  Expect.equals(521, f(22));
-}
diff --git a/tests/language/implicit_closure_test.dart b/tests/language/implicit_closure_test.dart
deleted file mode 100644
index a9ea617..0000000
--- a/tests/language/implicit_closure_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing invocation of implicit closures.
-// VMOptions=
-// VMOptions=--use_slow_path
-
-import "package:expect/expect.dart";
-
-class First {
-  First(this.i) {}
-  var b;
-  int foo() {
-    return i;
-  }
-
-  Function foo1() {
-    local() {
-      return i;
-    }
-
-    return local;
-  }
-
-  int i;
-}
-
-class ImplicitClosureTest {
-  static void testMain() {
-    First obj = new First(20);
-
-    Function func = () => obj.i;
-    obj.b = func;
-    Expect.equals(20, obj.b());
-
-    var ib1 = obj.foo1();
-    Expect.equals(obj.i, ib1());
-
-    var ib = obj.foo;
-    Expect.equals(obj.i, ib());
-  }
-}
-
-main() {
-  ImplicitClosureTest.testMain();
-}
diff --git a/tests/language/implicit_scope_test.dart b/tests/language/implicit_scope_test.dart
deleted file mode 100644
index 49d0dd9..0000000
--- a/tests/language/implicit_scope_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that if, while etc create an implicit scope if the body
-// is not a compound statement.
-
-import "package:expect/expect.dart";
-
-class ImplicitScopeTest {
-  static bool alwaysTrue() {
-    return 1 + 1 == 2;
-  }
-
-  static testMain() {
-    var a = "foo";
-    var b;
-    if (alwaysTrue())
-      var a = "bar";
-    else
-      var b = a;
-    Expect.equals("foo", a);
-    Expect.equals(null, b);
-
-    while (!alwaysTrue()) var a = "bar", b = "baz";
-    Expect.equals("foo", a);
-    Expect.equals(null, b);
-
-    for (int i = 0; i < 10; i++) var a = "bar", b = "baz";
-    Expect.equals("foo", a);
-    Expect.equals(null, b);
-
-    do var a = "bar", b = "baz"; while ("black" == "white");
-    Expect.equals("foo", a);
-    Expect.equals(null, b);
-  }
-}
-
-main() {
-  ImplicitScopeTest.testMain();
-}
diff --git a/tests/language/implicit_super_constructor_call_test.dart b/tests/language/implicit_super_constructor_call_test.dart
deleted file mode 100644
index c1d25d3..0000000
--- a/tests/language/implicit_super_constructor_call_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// This is a regression test for http://dartbug.com/22723.
-
-import "package:expect/expect.dart";
-
-class A {
-  final x;
-
-  @NoInline()
-  A({this.x: "foo"}) {
-    Expect.equals("foo", x.toString());
-  }
-}
-
-class C extends A {
-  C(foobar) {}
-}
-
-main() {
-  var c = new C(499);
-  Expect.equals("foo", c.x.toString());
-}
diff --git a/tests/language/implicit_this_test.dart b/tests/language/implicit_this_test.dart
deleted file mode 100644
index f38598c..0000000
--- a/tests/language/implicit_this_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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";
-
-abstract class Interface {
-  final x;
-}
-
-abstract class Abstract implements Interface {
-  String toString() => x.toString();
-}
-
-// This class does not implement "x" either, but it is not marked
-// abstract.
-class SubAbstract1 extends Abstract { } //# 01: static type warning
-
-// This class is implicitly abstract as it declares an abstract getter
-// method.
-class SubAbstract2 extends Abstract {
-  get x; // Abstract.
-}
-
-// This class does not implement "x" either, but it is not marked
-// abstract.
-class SubSubAbstract2 extends SubAbstract2 { } //# 04: static type warning
-
-class Concrete extends Abstract {
-  get x => 7;
-}
-
-class SubConcrete extends Concrete {
-  final x;
-  SubConcrete(this.x);
-}
-
-void main() {
-  var x = new Abstract(); //# 02: runtime error
-  var y = new SubAbstract1(); //# 01: continued
-  var z = new SubAbstract2();
-  var a = new SubSubAbstract2(); //# 04: continued
-  Expect.equals(x, x); //# 02: continued
-  Expect.equals('7', new Concrete().toString());
-  Expect.equals('42', new SubConcrete(42).toString());
-  Expect.equals('7', new SubConcrete(new Concrete()).toString());
-}
diff --git a/tests/language/implied_interface_test.dart b/tests/language/implied_interface_test.dart
deleted file mode 100644
index 554579f..0000000
--- a/tests/language/implied_interface_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// 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";
-
-class BaseClass {
-  var foo;
-  BaseClass() {
-    foo = 0;
-  }
-  toString() => "BaseClass";
-}
-
-/**
- * This class declaration causes an intentional type warning as it
- * isn't marked abstract. It is abstract because it doesn't
- * "implement" the field foo.
- */
-class ImplementsClass implements BaseClass {
-  ImplementsClass() {}
-}
-
-abstract class ExtendsClass implements BaseClass {}
-
-/**
- * This class declaration causes an intentional type warning as it
- * isn't marked abstract. It is abstract because it doesn't
- * "implement" the field foo.
- */
-class ImplementsExtendsClass implements ExtendsClass {
-  ImplementsExtendsClass() {}
-}
-
-main() {
-  ImplementsClass c1 = new ImplementsClass();
-  ImplementsExtendsClass c2 = new ImplementsExtendsClass();
-  try {
-    c1.foo;
-    Expect.fail('expected a NoSuchMethodError');
-  } on NoSuchMethodError catch (ex) {
-    // Expected error.
-  }
-  try {
-    c2.foo;
-    Expect.fail('expected a NoSuchMethodError');
-  } on NoSuchMethodError catch (ex) {
-    // Expected error.
-  }
-  Expect.equals(true, c1 is BaseClass);
-  Expect.equals(true, c1 is! ExtendsClass);
-  Expect.equals(true, c2 is BaseClass);
-  Expect.equals(true, c2 is ExtendsClass);
-  Expect.equals(true, c2 is! ImplementsClass);
-  Expect.equals("BaseClass", "${new BaseClass()}");
-
-  // Verify we don't inherit toString from BaseClass
-  Expect.notEquals("BaseClass", "${c1}");
-  Expect.notEquals("BaseClass", "${c2}");
-}
diff --git a/tests/language/import1_lib.dart b/tests/language/import1_lib.dart
deleted file mode 100644
index bf45808..0000000
--- a/tests/language/import1_lib.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-library import1_lib;
-
-int libfunc(a, b) => a + b;
-
-var show = 'show';
-var hide = 'hide';
-
-var ugly = 'ugly';
-
-class Q {
-  var _s;
-  Q(s) : _s = s;
-  toString() => "LQQK: '$_s'";
-}
diff --git a/tests/language/import_collection_no_prefix_test.dart b/tests/language/import_collection_no_prefix_test.dart
deleted file mode 100644
index cf4f490..0000000
--- a/tests/language/import_collection_no_prefix_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test program importing the core library explicitly.
-
-library ImportCollectionNoPrefixTest.dart;
-
-import "dart:collection";
-
-main() {
-  var e = new SplayTreeMap();
-  print('"dart:collection" imported, $e allocated');
-}
diff --git a/tests/language/import_combinators_negative_test.dart b/tests/language/import_combinators_negative_test.dart
deleted file mode 100644
index 30b9f1b..0000000
--- a/tests/language/import_combinators_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-// Dart test program importing with show/hide combinators.
-
-library importCombinatorsNegativeTest;
-
-import "import1_lib.dart" show hide, show hide ugly;
-
-main() {
-  print(hide);
-  print(show);
-  print(ugly); // Resolution error, identifier 'ugly ' is hidden.
-}
diff --git a/tests/language/import_combinators_part.dart b/tests/language/import_combinators_part.dart
deleted file mode 100644
index 57372c8..0000000
--- a/tests/language/import_combinators_part.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-// This file is part of the test import_combinators_test.dart
-
-// VM ignores the library name.
-part of Foo; // //# static warning
-
-lookBehindCurtain() {
-  return show; // show is an imported identifier.
-}
diff --git a/tests/language/import_combinators_test.dart b/tests/language/import_combinators_test.dart
deleted file mode 100644
index ecb5c87..0000000
--- a/tests/language/import_combinators_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-
-// Dart test program importing with show/hide combinators.
-
-library importCombinatorsTest;
-
-import "package:expect/expect.dart";
-import "import1_lib.dart" show hide, show hide ugly;
-import "export1_lib.dart";
-import "dart:math" as M show E;
-
-part "import_combinators_part.dart";
-
-main() {
-  Expect.equals("hide", hide);
-  Expect.equals("show", show);
-  // Top-level function from part, refers to imported variable show.
-  Expect.equals("show", lookBehindCurtain());
-  // Top-level variable E from export1_lib.dart.
-  Expect.equals("E", E);
-  // Top-level variable E imported from dart:math.
-  Expect.equals(2.718281828459045, M.E);
-  // Constant LN2 from math library, re-exported by export1_lib.dart.
-  Expect.equals(0.6931471805599453, LN2);
-}
diff --git a/tests/language/import_core_no_prefix_test.dart b/tests/language/import_core_no_prefix_test.dart
deleted file mode 100644
index 254744f..0000000
--- a/tests/language/import_core_no_prefix_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test program importing the core library explicitly.
-
-library ImportCoreNoPrefixTest.dart;
-
-import "dart:core";
-
-main() {
-  print('"dart:core" imported.');
-}
diff --git a/tests/language/import_core_prefix_test.dart b/tests/language/import_core_prefix_test.dart
deleted file mode 100644
index 0f3374b..0000000
--- a/tests/language/import_core_prefix_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-// Test explicit import of dart:core in the source code..
-
-library ImportCorePrefixTest.dart;
-
-import "package:expect/expect.dart";
-import "dart:core" as mycore;
-
-class Object {}
-
-class Map {
-  Map(this._lat, this._long);
-
-  get isPrimeMeridian => _long == 0;
-
-  var _lat;
-  var _long;
-}
-
-void main() {
-  var test = new mycore.Map<mycore.int, mycore.String>();
-  mycore.bool boolval = false;
-  mycore.int variable = 10;
-  mycore.num value = 10;
-  mycore.dynamic d = null;
-  mycore.print(new mycore.Object());
-  mycore.print(new Object());
-
-  var greenwich = new Map(51, 0);
-  var kpao = new Map(37, -122);
-  Expect.isTrue(greenwich.isPrimeMeridian);
-  Expect.isFalse(kpao.isPrimeMeridian);
-}
diff --git a/tests/language/import_core_test.dart b/tests/language/import_core_test.dart
deleted file mode 100644
index 1256012..0000000
--- a/tests/language/import_core_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-// Test explicit import of dart:core in the source code..
-
-library ImportCoreTest.dart;
-
-import "dart:core";
-
-void main() {
-  var test = new Map<int, String>();
-  bool value = false;
-  int variable = 10;
-  num intval = 10;
-}
diff --git a/tests/language/import_private_test.dart b/tests/language/import_private_test.dart
deleted file mode 100644
index 2720eeb..0000000
--- a/tests/language/import_private_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2013, 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.
-// Check that private dart:_ libraries cannot be imported.
-
-import "dart:_internal"; // //# 01: compile-time error
-
-main() {
-  print("Done.");
-}
diff --git a/tests/language/import_self_test.dart b/tests/language/import_self_test.dart
deleted file mode 100644
index 977efa6..0000000
--- a/tests/language/import_self_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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.
-//
-// Check that private names cannot be imported even if the library imports
-// itself.
-
-library import_self;
-
-import "package:expect/expect.dart";
-
-// Eliminate the import of the unmodified file or else the analyzer
-// will generate the static warning in the import_self_test_none case.
-import "import_self_test.dart" as p; // //# 01: continued
-
-var _x = "The quick brown fox jumps over the dazy log";
-
-main() {
-  var t = "Falsches Üben von Xylophonmusik quält jeden größeren Zwerg";
-
-  // Check that referencing p._x causes a warning from the analyzer,
-  // and the runtime fails to resolve p._x, even though it refers to
-  // top level variable _x of this file.
-  Expect.throws(() { t = p._x; }, // //# 01: static type warning
-                (e) => e is NoSuchMethodError); // //# 01: continued
-
-  Expect.isTrue(t.endsWith("Zwerg"));
-}
diff --git a/tests/language/import_show_lib.dart b/tests/language/import_show_lib.dart
deleted file mode 100644
index a3d7325..0000000
--- a/tests/language/import_show_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2013, 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 import_show_lib;
-
-get theEnd => "http://www.endoftheinternet.com/";
diff --git a/tests/language/import_show_test.dart b/tests/language/import_show_test.dart
deleted file mode 100644
index d23c7a0..0000000
--- a/tests/language/import_show_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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 import_show_test;
-
-import "package:expect/expect.dart";
-import "import_show_lib.dart" show theEnd;
-
-main() {
-  var foo = theEnd;
-  Expect.equals("http://www.endoftheinternet.com/", foo);
-}
diff --git a/tests/language/incr_op_test.dart b/tests/language/incr_op_test.dart
deleted file mode 100644
index 9050a41..0000000
--- a/tests/language/incr_op_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing increment operator.
-
-import "package:expect/expect.dart";
-
-class A {
-  static var yy;
-  static set y(v) {
-    yy = v;
-  }
-
-  static get y {
-    return yy;
-  }
-}
-
-class IncrOpTest {
-  var x;
-  static var y;
-
-  IncrOpTest() {}
-
-  static testMain() {
-    var a = 3;
-    var c = a++ + 1;
-    Expect.equals(4, c);
-    Expect.equals(4, a);
-    c = a-- + 1;
-    Expect.equals(5, c);
-    Expect.equals(3, a);
-
-    c = --a + 1;
-    Expect.equals(3, c);
-    Expect.equals(2, a);
-
-    c = 2 + ++a;
-    Expect.equals(5, c);
-    Expect.equals(3, a);
-
-    var obj = new IncrOpTest();
-    obj.x = 100;
-    Expect.equals(100, obj.x);
-    obj.x++;
-    Expect.equals(101, obj.x);
-    Expect.equals(102, ++obj.x);
-    Expect.equals(102, obj.x++);
-    Expect.equals(103, obj.x);
-
-    A.y = 55;
-    Expect.equals(55, A.y++);
-    Expect.equals(56, A.y);
-    Expect.equals(57, ++A.y);
-    Expect.equals(57, A.y);
-    Expect.equals(56, --A.y);
-
-    IncrOpTest.y = 55;
-    Expect.equals(55, IncrOpTest.y++);
-    Expect.equals(56, IncrOpTest.y);
-    Expect.equals(57, ++IncrOpTest.y);
-    Expect.equals(57, IncrOpTest.y);
-    Expect.equals(56, --IncrOpTest.y);
-
-    var list = new List(4);
-    for (int i = 0; i < list.length; i++) {
-      list[i] = i;
-    }
-    for (int i = 0; i < list.length; i++) {
-      list[i]++;
-    }
-    for (int i = 0; i < list.length; i++) {
-      Expect.equals(i + 1, list[i]);
-      ++list[i];
-    }
-    Expect.equals(1 + 2, list[1]);
-    Expect.equals(1 + 2, list[1]--);
-    Expect.equals(1 + 1, list[1]);
-    Expect.equals(1 + 0, --list[1]);
-  }
-}
-
-main() {
-  IncrOpTest.testMain();
-}
diff --git a/tests/language/index_test.dart b/tests/language/index_test.dart
deleted file mode 100644
index bf9ab92..0000000
--- a/tests/language/index_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing index operators.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int fibonacci(int n) {
-    int a = 0, b = 1, i = 0;
-    while (i++ < n) {
-      a = a + b;
-      b = a - b;
-    }
-    return a;
-  }
-}
-
-class IndexTest {
-  static const ID_IDLE = 0;
-
-  static testMain() {
-    var a = new List(10);
-    Expect.equals(10, a.length);
-    for (int i = 0; i < a.length; i++) {
-      a[i] = Helper.fibonacci(i);
-    }
-    a[ID_IDLE] = Helper.fibonacci(0);
-    for (int i = 2; i < a.length; i++) {
-      Expect.equals(a[i - 2] + a[i - 1], a[i]);
-    }
-    Expect.equals(515, a[3] = 515);
-  }
-}
-
-main() {
-  IndexTest.testMain();
-}
diff --git a/tests/language/indirect_const_null_test.dart b/tests/language/indirect_const_null_test.dart
deleted file mode 100644
index 5161614..0000000
--- a/tests/language/indirect_const_null_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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";
-
-main() {
-  const NULL = 1 == 1 ? null : false;
-  Expect.isNull(NULL);
-}
diff --git a/tests/language/inference_captured_variable2_test.dart b/tests/language/inference_captured_variable2_test.dart
deleted file mode 100644
index ddc3162..0000000
--- a/tests/language/inference_captured_variable2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Ensure that dart2js's receiver specialization optimization works
-// with captured variables.
-
-import "package:expect/expect.dart";
-
-var list = [new Object(), 31];
-
-main() {
-  Expect.throws(() => foo()() + 42, (e) => e is NoSuchMethodError);
-}
-
-foo() {
-  var a = list[0];
-  var closure = (() => a - 42);
-  return () => a + 54;
-}
diff --git a/tests/language/inference_captured_variable_test.dart b/tests/language/inference_captured_variable_test.dart
deleted file mode 100644
index cdb8931..0000000
--- a/tests/language/inference_captured_variable_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Ensure that dart2js's receiver specialization optimization works
-// with captured variables.
-
-import "package:expect/expect.dart";
-
-var list = [new Object(), 31];
-
-main() {
-  Expect.throws(() => foo()() + 42, (e) => e is NoSuchMethodError);
-}
-
-foo() {
-  var a = list[0];
-  var closure = (() => a + 42);
-  if (list[1] == 0) {
-    a.toInt();
-    return closure;
-  }
-  return closure;
-}
diff --git a/tests/language/inference_list_or_null_test.dart b/tests/language/inference_list_or_null_test.dart
deleted file mode 100644
index ae0dfb5..0000000
--- a/tests/language/inference_list_or_null_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to statically inline the length of an
-// array held in a variable when it could, even if that variable could
-// be null.
-
-import "package:expect/expect.dart";
-
-var list;
-
-main() {
-  if (new DateTime.now().millisecondsSinceEpoch == 0) list = new List(4);
-  Expect.throws(() => print(list[5]), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/inference_mixin_field_test.dart b/tests/language/inference_mixin_field_test.dart
deleted file mode 100644
index 9669846..0000000
--- a/tests/language/inference_mixin_field_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Mixin {
-  var field;
-  createIt() {
-    if (field == null) field = 42;
-  }
-}
-
-class A {
-  A(foo);
-}
-
-class B extends A with Mixin {
-  // Because [super] references a synthesized constructor, dart2js
-  // used to not see the null assignment to it.
-  B(foo) : super(foo);
-}
-
-main() {
-  var a = new B(42);
-  a.createIt();
-  Expect.equals(42, a.field);
-}
diff --git a/tests/language/inference_super_constructor_call_test.dart b/tests/language/inference_super_constructor_call_test.dart
deleted file mode 100644
index ad16954..0000000
--- a/tests/language/inference_super_constructor_call_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js's inferrer that used to not propagate
-// types given to generative constructors in super constructor calls.
-
-import "package:expect/expect.dart";
-
-class A {
-  final field;
-  A.full(this.field);
-}
-
-class B extends A {
-  // The following super call used to not be analyzed properly.
-  B.full(field) : super.full(field);
-}
-
-main() {
-  // Call [A.full] with an int to have the inferrer think [field] is
-  // always an int.
-  Expect.equals(84, new A.full(42).field + 42);
-  Expect.throws(
-      () => new B.full(null).field + 42, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/inferrer_closure_test.dart b/tests/language/inferrer_closure_test.dart
deleted file mode 100644
index 0106ce6..0000000
--- a/tests/language/inferrer_closure_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not see a closure could be
-// invoked through a getter access followed by an invocation.
-
-var closure = (a) => a.toString();
-
-get foo => closure;
-
-main() {
-  if (foo(42) != '42') {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/inferrer_constructor2_test.dart b/tests/language/inferrer_constructor2_test.dart
deleted file mode 100644
index dbcd2e1..0000000
--- a/tests/language/inferrer_constructor2_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to optimistically infer the
-// wrong types for fields because of generative constructors being
-// inlined.
-
-import "package:expect/expect.dart";
-import "compiler_annotations.dart";
-
-class A {
-  var foo;
-  var bar;
-
-  @DontInline()
-  A() {
-    // Currently defeat inlining by using a closure.
-    bar = () => 42;
-    foo = 54;
-  }
-  A.inline();
-}
-
-main() {
-  // Make sure A's constructor is analyzed first by surrounding the
-  // body by two allocations.
-  new A();
-  bar();
-  new A();
-}
-
-class B {
-  var bar;
-  var closure;
-  @DontInline()
-  B() {
-    // Currently defeat inlining by using a closure.
-    closure = () => 42;
-    bar = new A().foo;
-  }
-}
-
-@DontInline()
-bar() {
-  // Make sure B's constructor is analyzed first by surrounding the
-  // body by two allocations.
-  new B();
-  // Currently defeat inlining by using a closure.
-  Expect.throws(() => new A.inline().foo + 42, (e) => e is NoSuchMethodError);
-  codegenLast();
-  new B();
-}
-
-@DontInline()
-codegenLast() {
-  // This assignment currently defeats simple type inference, but not
-  // the optimistic inferrer.
-  new A().foo = new B().bar;
-  // Currently defeat inlining by using a closure.
-  new B().closure = () => 42;
-}
diff --git a/tests/language/inferrer_constructor3_test.dart b/tests/language/inferrer_constructor3_test.dart
deleted file mode 100644
index 8afa449..0000000
--- a/tests/language/inferrer_constructor3_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to optimistically infer the
-// wrong types for fields because of generative constructors being
-// inlined.
-
-import "package:expect/expect.dart";
-import "compiler_annotations.dart";
-
-class A {
-  var field;
-  A(this.field);
-}
-
-var c = () => new List(42)[0];
-
-main() {
-  bar();
-  // Defeat type inferencing.
-  new A(c());
-  doIt();
-  bar();
-}
-
-@DontInline()
-doIt() {
-  () => 42;
-  var c = new A(null);
-  Expect.throws(() => c.field + 42, (e) => e is NoSuchMethodError);
-}
-
-@DontInline()
-bar() {
-  () => 42;
-  return inlineLevel1();
-}
-
-inlineLevel1() {
-  return inlineLevel2();
-}
-
-inlineLevel2() {
-  return inlineLevel3();
-}
-
-inlineLevel3() {
-  return inlineLevel4();
-}
-
-inlineLevel4() {
-  return new A(42);
-}
diff --git a/tests/language/inferrer_constructor4_test.dart b/tests/language/inferrer_constructor4_test.dart
deleted file mode 100644
index 858b6ad..0000000
--- a/tests/language/inferrer_constructor4_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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";
-
-escape(object) {
-  print(object.field + 42);
-}
-
-class A {
-  A() {
-    escape(this);
-  }
-}
-
-class B extends A {
-  var field;
-  B() {
-    field = 42;
-  }
-}
-
-main() {
-  Expect.throws(() => new B(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/inferrer_constructor5_test.dart b/tests/language/inferrer_constructor5_test.dart
deleted file mode 100644
index 7c416f4..0000000
--- a/tests/language/inferrer_constructor5_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  A() {
-    print(field + 42); //# 01: static type warning
-  }
-}
-
-class B extends A {
-  var field;
-  B() {
-    field = 42;
-  }
-}
-
-main() {
-  Expect.throws(() => new B(), (e) => e is NoSuchMethodError); //# 01: continued
-}
diff --git a/tests/language/inferrer_constructor_test.dart b/tests/language/inferrer_constructor_test.dart
deleted file mode 100644
index 38b97da..0000000
--- a/tests/language/inferrer_constructor_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that dart2js type inferrer detects dead code.
-
-import "package:expect/expect.dart";
-
-class A {
-  var field;
-  A(test) {
-    if (test) {
-      return;
-      field = 42;
-    } else {
-      field = 54;
-    }
-  }
-}
-
-main() {
-  var a = new A(true);
-  Expect.throws(() => a.field + 42, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/inferrer_named_parameter_test.dart b/tests/language/inferrer_named_parameter_test.dart
deleted file mode 100644
index 780e905..0000000
--- a/tests/language/inferrer_named_parameter_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js's type inferrer, that used to not
-// correctly infer optional named parameters.
-
-import "package:expect/expect.dart";
-import "compiler_annotations.dart";
-
-@DontInline()
-foo({path}) {
-  () => 42;
-  return path;
-}
-
-main() {
-  foo(path: '42');
-  Expect.isFalse(foo() is String);
-}
diff --git a/tests/language/inferrer_synthesized_constructor_test.dart b/tests/language/inferrer_synthesized_constructor_test.dart
deleted file mode 100644
index 5a813db..0000000
--- a/tests/language/inferrer_synthesized_constructor_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js's type inferrer that used to not
-// propagate default types in synthesized calls.
-
-import "package:expect/expect.dart";
-
-class A {
-  final x;
-  A([this.x = 'foo']);
-}
-
-class B extends A {
-  // The synthesized constructor was not saying that it would call
-  // [A]'s constructor with its default type.
-}
-
-main() {
-  // By calling [B]'s constructor with an int parameter, the inferrer
-  // used to only see this call and consider the [A.x] field to always
-  // be int.
-  Expect.equals(84, new A(42).x + 42);
-  Expect.throws(
-      () => new B().x + 42, (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/language/inferrer_synthesized_super_constructor2_test.dart b/tests/language/inferrer_synthesized_super_constructor2_test.dart
deleted file mode 100644
index bb183af..0000000
--- a/tests/language/inferrer_synthesized_super_constructor2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-bool inConstructor = false;
-
-class A {
-  A._() {
-    inConstructor = true;
-  }
-}
-
-class B extends A {
-  B() : super._();
-}
-
-main() {
-  new B();
-  if (!inConstructor) throw 'Test failed';
-}
diff --git a/tests/language/inferrer_synthesized_super_constructor_test.dart b/tests/language/inferrer_synthesized_super_constructor_test.dart
deleted file mode 100644
index ccffde9..0000000
--- a/tests/language/inferrer_synthesized_super_constructor_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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 'compiler_annotations.dart';
-
-class A {
-  @DontInline()
-  A([a]) {
-    () => 42;
-    if (a != null) throw 'Test failed';
-  }
-}
-
-class B extends A {
-  B();
-}
-
-main() {
-  new B();
-}
diff --git a/tests/language/inferrer_this_access_test.dart b/tests/language/inferrer_this_access_test.dart
deleted file mode 100644
index 87eed05..0000000
--- a/tests/language/inferrer_this_access_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  var fisk;
-  A() {
-    // dart2js's inferrer used to not recognize the following call to
-    // be on [this].
-    fisk--;
-    fisk = 42;
-  }
-}
-
-class B {
-  var a;
-  B() {
-    hest = 54;
-    a = 42;
-  }
-}
-
-class C extends B {
-  set hest(value) {
-    return a + 42;
-  }
-}
-
-main() {
-  Expect.throws(() => new A(), (e) => e is NoSuchMethodError);
-  Expect.throws(() => new C(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/infinite_switch_label_test.dart b/tests/language/infinite_switch_label_test.dart
deleted file mode 100644
index 7eec42c..0000000
--- a/tests/language/infinite_switch_label_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test nested switch statement using labels.
-
-library nested_switch_label;
-
-import "package:expect/expect.dart";
-
-void main() {
-  Expect.throws(() => doSwitch(0), (list) {
-    Expect.listEquals([0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], list);
-    return true;
-  });
-  Expect.throws(() => doSwitch(2), (list) {
-    Expect.listEquals([2, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0], list);
-    return true;
-  });
-}
-
-void doSwitch(int target) {
-  List list = [];
-  switch (target) {
-    l0:
-    case 0:
-      if (list.length > 10) throw list;
-      list.add(0);
-      continue l1;
-    l1:
-    case 1:
-      if (list.length > 10) throw list;
-      list.add(1);
-      continue l0;
-    default:
-      list.add(2);
-      continue l1;
-  }
-}
diff --git a/tests/language/infinity_test.dart b/tests/language/infinity_test.dart
deleted file mode 100644
index c7b0272..0000000
--- a/tests/language/infinity_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-main() {
-  var things = [0, double.INFINITY, double.NEGATIVE_INFINITY];
-  var first = things[1];
-  var second = things[2];
-  Expect.isFalse(first is int);
-  Expect.isFalse(second is int);
-  Expect.isTrue(first is double);
-  Expect.isTrue(second is double);
-}
diff --git a/tests/language/inheritance_chain_lib.dart b/tests/language/inheritance_chain_lib.dart
deleted file mode 100644
index c80834f..0000000
--- a/tests/language/inheritance_chain_lib.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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 "inheritance_chain_test.dart";
-
-class B extends C {
-  get id => "B";
-  get length => 2;
-}
-
-class D extends Z {
-  get id => "D";
-  get length => 4;
-}
-
-class W {
-  get id => "W";
-  get length => -4;
-}
-
-class Y extends X {
-  get id => "Y";
-  get length => -2;
-}
diff --git a/tests/language/inheritance_chain_test.dart b/tests/language/inheritance_chain_test.dart
deleted file mode 100644
index 1f20f0a..0000000
--- a/tests/language/inheritance_chain_test.dart
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (c) 2015, 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";
-import "inheritance_chain_lib.dart";
-
-class A extends B {
-  get id => "A";
-  get length => 1;
-}
-
-class C extends D {
-  get id => "C";
-  get length => 3;
-}
-
-class X extends W {
-  get id => "X";
-  get length => -3;
-}
-
-class Z extends Y {
-  get id => "Z";
-  get length => -1;
-}
-
-main() {
-  var instances = [
-    new A(),
-    new B(),
-    new C(),
-    new D(),
-    new W(),
-    new X(),
-    new Y(),
-    new Z(),
-    [],
-  ];
-
-  var o = instances[0];
-  Expect.equals("A", o.id);
-  Expect.equals(1, o.length);
-  Expect.isTrue(o is A);
-  Expect.isTrue(o is B);
-  Expect.isTrue(o is C);
-  Expect.isTrue(o is D);
-  Expect.isTrue(o is W);
-  Expect.isTrue(o is X);
-  Expect.isTrue(o is Y);
-  Expect.isTrue(o is Z);
-  o = instances[1];
-  Expect.equals("B", o.id);
-  Expect.equals(2, o.length);
-  Expect.isTrue(o is B);
-  Expect.isTrue(o is C);
-  Expect.isTrue(o is D);
-  Expect.isTrue(o is W);
-  Expect.isTrue(o is X);
-  Expect.isTrue(o is Y);
-  Expect.isTrue(o is Z);
-  o = instances[2];
-  Expect.equals("C", o.id);
-  Expect.equals(3, o.length);
-  Expect.isTrue(o is C);
-  Expect.isTrue(o is D);
-  Expect.isTrue(o is W);
-  Expect.isTrue(o is X);
-  Expect.isTrue(o is Y);
-  Expect.isTrue(o is Z);
-  o = instances[3];
-  Expect.equals("D", o.id);
-  Expect.equals(4, o.length);
-  Expect.isTrue(o is D);
-  Expect.isTrue(o is W);
-  Expect.isTrue(o is X);
-  Expect.isTrue(o is Y);
-  Expect.isTrue(o is Z);
-  o = instances[4];
-  Expect.equals("W", o.id);
-  Expect.equals(-4, o.length);
-  Expect.isTrue(o is W);
-  o = instances[5];
-  Expect.equals("X", o.id);
-  Expect.equals(-3, o.length);
-  Expect.isTrue(o is X);
-  Expect.isTrue(o is W);
-  o = instances[6];
-  Expect.equals("Y", o.id);
-  Expect.equals(-2, o.length);
-  Expect.isTrue(o is Y);
-  Expect.isTrue(o is X);
-  Expect.isTrue(o is W);
-  o = instances[7];
-  Expect.equals("Z", o.id);
-  Expect.equals(-1, o.length);
-  Expect.isTrue(o is Z);
-  Expect.isTrue(o is Y);
-  Expect.isTrue(o is X);
-  Expect.isTrue(o is W);
-  o = instances[8];
-  Expect.equals(0, o.length);
-}
diff --git a/tests/language/initializing_formal_access_test.dart b/tests/language/initializing_formal_access_test.dart
deleted file mode 100644
index 79ce73f..0000000
--- a/tests/language/initializing_formal_access_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class C {
-  final int x;
-  final int y;
-
-  const C.constant(this.x) : y = x + 1;
-
-  C(this.x) : y = x + 1 {
-    int z = x + 2;
-    assert(z == y + 1);
-  }
-}
-
-main() {
-  C c = new C(2);
-  Expect.equals(c.x, 2);
-  Expect.equals(c.y, 3);
-  const C cc = const C.constant(4);
-  Expect.equals(cc.x, 4);
-  Expect.equals(cc.y, 5);
-}
diff --git a/tests/language/initializing_formal_capture_test.dart b/tests/language/initializing_formal_capture_test.dart
deleted file mode 100644
index 3fd2d2c..0000000
--- a/tests/language/initializing_formal_capture_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class A {
-  var x, y;
-  A(this.x) : y = (() => x);
-}
-
-main() {
-  A a = new A(2);
-  a.x = 3;
-  Expect.equals(a.x, 3);
-  Expect.equals(a.y(), 2);
-}
diff --git a/tests/language/initializing_formal_final_test.dart b/tests/language/initializing_formal_final_test.dart
deleted file mode 100644
index bccab6d..0000000
--- a/tests/language/initializing_formal_final_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class A {
-  var x, y;
-  // This should cause a warning because `x` is final when
-  // accessed as an initializing formal.
-  A(this.x)
-      : y = (() {
-          x = 3;
-        });
-}
-
-main() {
-  A a = new A(2);
-  Expect.equals(a.x, 2);
-  Expect.throws(() => a.y(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/initializing_formal_promotion_test.dart b/tests/language/initializing_formal_promotion_test.dart
deleted file mode 100644
index 822d2d21..0000000
--- a/tests/language/initializing_formal_promotion_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class B {}
-
-class A {
-  B x, y;
-  // Promotion occurs for the initializing formal because C <: B.
-  A(this.x) : y = (x is C) ? x.x : x;
-}
-
-class C extends A implements B {
-  C(B x) : super(x);
-}
-
-main() {
-  C c = new C(null);
-  C cc = new C(c);
-  Expect.equals(c.y, null);
-  Expect.equals(cc.y, null);
-}
diff --git a/tests/language/initializing_formal_scope_test.dart b/tests/language/initializing_formal_scope_test.dart
deleted file mode 100644
index f75308f..0000000
--- a/tests/language/initializing_formal_scope_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-// Duplicate definition checks for `this.x` will check the scopes associated
-// with the constructor, not all enclosing scopes; so this is not a conflict.
-var x;
-
-class A {
-  var x;
-  A(this.x) {
-    // In the body the field is in scope, not the initializing formal;
-    // so we can use the setter.
-    x += 1;
-  }
-}
-
-main() {
-  A a = new A(2);
-  Expect.equals(a.x, 3);
-}
diff --git a/tests/language/initializing_formal_type_test.dart b/tests/language/initializing_formal_type_test.dart
deleted file mode 100644
index 5f3134c..0000000
--- a/tests/language/initializing_formal_type_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class A {
-  num x;
-  double y;
-  // Finding the type of an initializing formal: should cause a warning
-  // in the initializer but not the body, because the former has type
-  // `int` and the latter has type `num`.
-  A(int this.x) : y = x {
-    y = x;
-  }
-}
-
-main() {
-  A a = new A(null);
-  Expect.equals(a.x, null);
-  Expect.equals(a.y, null);
-}
diff --git a/tests/language/inline_add_constants_to_initial_env_test.dart b/tests/language/inline_add_constants_to_initial_env_test.dart
deleted file mode 100644
index cd64f44..0000000
--- a/tests/language/inline_add_constants_to_initial_env_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-// Test that SSA values are correctly numbered after inlining that adds
-// constants to original environment.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-h(x, y) => x == y;
-
-g(y, [x0 = 0, x1 = 1, x2 = 2, x3 = 3]) => y + x0 + x1 + x2 + x3;
-
-f(y) => h(y, g(y));
-
-main() {
-  for (var i = 0; i < 20; i++) f(i);
-}
diff --git a/tests/language/inline_argument_test.dart b/tests/language/inline_argument_test.dart
deleted file mode 100644
index 61761c5..0000000
--- a/tests/language/inline_argument_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-// Test that when inlining A.foo, we're not evaluating the argument
-// twice.
-
-import "package:expect/expect.dart";
-
-class A {
-  var field = 0;
-
-  foo(b) {
-    Expect.equals(0, b);
-    Expect.equals(0, b);
-  }
-
-  bar() {
-    foo(field++);
-  }
-}
-
-main() {
-  var a = new A();
-  a.bar();
-  Expect.equals(1, a.field);
-}
diff --git a/tests/language/inline_closure_with_constant_arguments_test.dart b/tests/language/inline_closure_with_constant_arguments_test.dart
deleted file mode 100644
index 1b33e01..0000000
--- a/tests/language/inline_closure_with_constant_arguments_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test inlining of a closure call with constant propagation.
-primeForSmis(bool b) {
-  smi_op(a, b) => a + b;
-  if (b) {
-    return smi_op(1, 2);
-  } else {
-    return smi_op(true, false);
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(3, primeForSmis(true));
-  }
-}
diff --git a/tests/language/inline_effect_context_test.dart b/tests/language/inline_effect_context_test.dart
deleted file mode 100644
index a8586ed..0000000
--- a/tests/language/inline_effect_context_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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.
-// Test inlining of simple function with control flow in an effect context.
-// Optimize function foo with instance of A and inlined function bar. Call later
-// with instance of B and cause deoptimization.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  var x = 1;
-}
-
-class B {
-  var x = 0;
-}
-
-int bar(o) {
-  if (o.x > 0) {
-    // <-- Deoptimize from inner frame.
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-int foo(o) {
-  bar(o); // <-- Used in an effect context.
-  return 1;
-}
-
-main() {
-  var o = new A();
-  int sum = 0;
-  for (int i = 0; i < 20; i++) sum += foo(o);
-  o = new B();
-  sum += foo(o); // <-- Cause deoptimization of bar within foo.
-  Expect.equals(21, sum);
-}
diff --git a/tests/language/inline_getter_test.dart b/tests/language/inline_getter_test.dart
deleted file mode 100644
index 0384b39..0000000
--- a/tests/language/inline_getter_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test inlining of instance getters.
-// Three classes access always the same field. Optimize method foo and inline
-// getter for classes 'A' and 'B'. Call later via 'C' and cause deoptimization.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  int f;
-  A(this.f) {}
-  int foo() {
-    return f; // <-- inline getter for classes 'A' and 'B'.
-  }
-}
-
-class B extends A {
-  B() : super(2) {}
-}
-
-class C extends A {
-  C() : super(10) {}
-}
-
-class InlineGetterTest {
-  static testMain() {
-    var a = new A(1);
-    var b = new B();
-    int sum = 0;
-    for (int i = 0; i < 20; i++) {
-      sum += a.foo();
-      sum += b.foo();
-    }
-    var c = new C();
-    sum += c.foo(); // <-- Deoptimizing.
-    Expect.equals(70, sum);
-  }
-}
-
-main() {
-  InlineGetterTest.testMain();
-}
diff --git a/tests/language/inline_in_for_initializer_and_bailout_test.dart b/tests/language/inline_in_for_initializer_and_bailout_test.dart
deleted file mode 100644
index 53689f5..0000000
--- a/tests/language/inline_in_for_initializer_and_bailout_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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";
-
-var a = 42;
-
-inlineMe() {
-  // Add control flow to confuse the compiler.
-  if (a is int) {
-    print('a is int');
-  }
-  return a[0];
-}
-
-main() {
-  a = [42];
-  // Make [main] recursive to force a bailout version.
-  if (false) main();
-  int i = 0;
-  for (i = inlineMe(); i < 42; i++);
-  Expect.equals(42, i);
-}
diff --git a/tests/language/inline_super_field_lib.dart b/tests/language/inline_super_field_lib.dart
deleted file mode 100644
index dbc3ea6..0000000
--- a/tests/language/inline_super_field_lib.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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 inline_super_field_lib;
-
-// The comment is inserted to ensure that the offset of [bar] is not within
-// the length of the [:inline_super_field_test.dart] script.
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-
-var i = 0;
-
-class M1 {
-  final bar = ++i;
-}
diff --git a/tests/language/inline_super_field_test.dart b/tests/language/inline_super_field_test.dart
deleted file mode 100644
index b3316f9..0000000
--- a/tests/language/inline_super_field_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that source maps use the correct compilation unit when super class
-// fields from another compilation unit are inlined.
-
-library inline_super_field_test;
-
-import 'package:expect/expect.dart';
-import "inline_super_field_lib.dart";
-
-class S {}
-
-class C extends S with M1 {}
-
-void main() {
-  var c = new C();
-  Expect.equals(1, c.bar);
-}
diff --git a/tests/language/inline_super_part.dart b/tests/language/inline_super_part.dart
deleted file mode 100644
index 914ff4d..0000000
--- a/tests/language/inline_super_part.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-part of inline_super_test;
-
-class Player extends LivingActor {
-  Player() : super();
-}
diff --git a/tests/language/inline_super_test.dart b/tests/language/inline_super_test.dart
deleted file mode 100644
index beffdaa..0000000
--- a/tests/language/inline_super_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-
-// Regression test for dart2js issue 6639.
-
-library inline_super_test;
-
-import "package:expect/expect.dart";
-
-part 'inline_super_part.dart';
-
-// Long comment to ensure source positions in the following code are
-// larger than the part file.  Best way to ensure that is to include
-// the part as a comment:
-//
-// class Player extends LivingActor {
-//   Player (deathCallback) : super(null, deathCallback);
-// }
-
-class Percept {}
-
-class Actor {
-  final percept;
-  Actor(this.percept);
-}
-
-class LivingActor extends Actor {
-  // The bug occurs when inlining the node [:new Percept():] into
-  // [Actor]'s constructor.  When this inlining is being initiated
-  // from [Player], we must take care to ensure that we know that we
-  // are inlining from this location, and not [Player].
-  LivingActor() : super(new Percept());
-}
-
-main() {
-  Expect.isTrue(new Player().percept is Percept);
-}
diff --git a/tests/language/inline_test.dart b/tests/language/inline_test.dart
deleted file mode 100644
index 0458c6f..0000000
--- a/tests/language/inline_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to produce a non-valid SSA
-// graph when inlining within a loop.
-
-class X {
-  void x(a, b) {
-    do {
-      if (identical(a, b)) {
-        break;
-      }
-    } while (p(a, b));
-  }
-
-  bool p(a, b) {
-    return identical(a, b);
-  }
-}
-
-main() {
-  var x = new X();
-  x.x(1, 2);
-}
diff --git a/tests/language/inline_test_context_test.dart b/tests/language/inline_test_context_test.dart
deleted file mode 100644
index 625f3bb..0000000
--- a/tests/language/inline_test_context_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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.
-// Test inlining of simple function with control flow in a test context.
-// Optimize function foo with instance of A and inlined function bar. Call later
-// with instance of B and cause deoptimization.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  var x = 1;
-}
-
-class B {
-  var x = 0;
-}
-
-bool bar(o) {
-  if (o.x > 0) {
-    // <-- Deoptimize from inner frame.
-    return true;
-  } else {
-    return false;
-  }
-}
-
-int foo(o) {
-  if (bar(o)) {
-    // <-- Used in a test context.
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-main() {
-  var o = new A();
-  int sum = 0;
-  for (int i = 0; i < 20; i++) sum += foo(o);
-  o = new B();
-  sum += foo(o); // <-- Cause deoptimization of bar within foo.
-  Expect.equals(20, sum);
-}
diff --git a/tests/language/inline_value_context_test.dart b/tests/language/inline_value_context_test.dart
deleted file mode 100644
index c753381..0000000
--- a/tests/language/inline_value_context_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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.
-// Test inlining of simple function with control flow in a value context.
-// Optimize function foo with instance of A and inlined function bar. Call later
-// with instance of B and cause deoptimization.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  var x = 1;
-}
-
-class B {
-  var x = 0;
-}
-
-int bar(o) {
-  if (o.x > 0) {
-    // <-- Deoptimize from inner frame.
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-int foo(o) {
-  if (bar(o) > 0) {
-    // <-- Used in a value context.
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-main() {
-  var o = new A();
-  int sum = 0;
-  for (int i = 0; i < 20; i++) sum += foo(o);
-  o = new B();
-  sum += foo(o); // <-- Cause deoptimization of bar within foo.
-  Expect.equals(20, sum);
-}
diff --git a/tests/language/inlined_conditional_test.dart b/tests/language/inlined_conditional_test.dart
deleted file mode 100644
index ab3e85c..0000000
--- a/tests/language/inlined_conditional_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js. There was a bug in the variable
-// allocator when a pure (side-effect free) instruction stand
-// in-between an inlined `if` and its inlined expression.
-
-import "package:expect/expect.dart";
-
-var topLevel;
-
-// Make [foo] an inlineable expression with a return type check.
-Function foo(c) {
-  // Use [c] twice to make sure it is stored in a local.
-  return (c is Function ? null : c);
-}
-
-bar() {
-  var b = new Object();
-  f() {
-    // Inside a closure, locals that escape are stored in a closure
-    // class. By using [b] in both branches, the optimizers will move
-    // the fetching of [b] before the `if`. This puts the fetching
-    // instruction in between the `if` and the expression of the `if`.
-    // This instruction being pure, the variable allocator was dealing
-    // with it in a special way.
-    //
-    // Because the expression in the `if` is being recognized by the
-    // optimizers as being also a JavaScript expression, we do not
-    // allocate a name for it. But some expressions that it uses still
-    // can have a name, and our variable allocator did not handle live
-    // variables due to the inlining of the ternary expression in [foo].
-    if (foo(topLevel) == null) {
-      return b.toString();
-    } else {
-      return b.hashCode;
-    }
-  }
-
-  return f();
-}
-
-main() {
-  // Make sure the inferrer does not get an exact type for [topLevel].
-  topLevel = new Object();
-  topLevel = main;
-  var res = bar();
-  Expect.isTrue(res is String);
-}
diff --git a/tests/language/inlined_throw_test.dart b/tests/language/inlined_throw_test.dart
deleted file mode 100644
index ecc99d0..0000000
--- a/tests/language/inlined_throw_test.dart
+++ /dev/null
@@ -1,303 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Dart test program to test check that we don't fail to compile when an
-// inlinable method contains a throw.
-
-import 'package:expect/expect.dart';
-
-var x = false;
-
-bool called;
-
-bool callMeTrue() {
-  called = true;
-  return true;
-}
-
-bool callMeFalse() {
-  called = true;
-  return false;
-}
-
-void callMe() {
-  called = true;
-}
-
-testCallThenThrow(fn) {
-  called = false;
-  Expect.throws(() => fn());
-  Expect.isTrue(called);
-}
-
-testCall(fn) {
-  called = false;
-  fn();
-  Expect.isTrue(called);
-}
-
-testNoThrow(fn) {
-  called = false;
-  Expect.throws(() => fn());
-  Expect.isFalse(called);
-}
-
-kast(x) {
-  throw x;
-}
-
-ternary(a, b, c) {
-  if (x == 2) throw "ternary";
-}
-
-hest() => kast("hest");
-hest2() {
-  return kast("hest2");
-}
-
-foo() => true || kast("foo");
-bar() => false || kast("foo");
-barc() => callMeTrue() || kast("foo");
-barCallThrow() => callMeFalse() || kast("foo");
-baz(x) => x ? kast("baz") : 0;
-bazc() => callMeFalse() ? kast("baz") : 0;
-bazCallThrow() => callMeTrue() ? kast("baz") : 0;
-fizz(x) => x ? 0 : kast("baz");
-fizzc() => callMeTrue() ? 0 : kast("baz");
-fizzCallThrow() => callMeFalse() ? 0 : kast("baz");
-fuzz() => kast("baz") ? 0 : 1;
-farce() => !kast("baz");
-unary() => ~(kast("baz"));
-boo() {
-  callMe();
-  x = kast("boo");
-}
-
-yo() {
-  throw kast("yo");
-}
-
-bin() {
-  return 5 * kast("bin");
-}
-
-binCallThrow() {
-  return callMe() * kast("binct");
-}
-
-hoo() {
-  x[kast("hoo")] = 0;
-  x[kast("hoo")];
-  kast("hoo").x = 0;
-  kast("hoo").x;
-}
-
-switcheroo() {
-  switch (kast("switcheroo")) {
-    case 0:
-      boo();
-  }
-}
-
-class ThrowConstructor {
-  ThrowConstructor()
-      : foo = callMeTrue(),
-        bar = kast("ThrowConstructor") {
-    called = false;
-  }
-
-  bool foo;
-  var bar;
-}
-
-throwConstructor() {
-  called = false;
-  return new ThrowConstructor();
-}
-
-cascade() {
-  return new List()..add(callMeTrue())..add(kast("cascade"));
-}
-
-interpole() => "inter${kast('tada!')}pole";
-interpoleCallThrow() => "inter${callMeTrue()}...${kast('tada!')}pole";
-
-call1() => ternary(0, kast("call1"), 1);
-call2() => ternary(kast("call2"), 0, 1);
-call3() => ternary(0, 1, kast("call3"));
-call1c() => ternary(callMe(), kast("call1"), 1);
-call3c() => ternary(callMeTrue(), 1, kast("call3"));
-call4c() => ternary(0, callMeTrue(), kast("call3"));
-
-sendSet() {
-  var x = kast("sendSet");
-}
-
-sendSetCallThrow() {
-  var x = callMe(), y = kast("sendSet");
-}
-
-isSend() => kast("isSend") is int;
-
-vile() {
-  while (kast("vile")) {
-    callMe();
-  }
-}
-
-dovile() {
-  var x = 0;
-  do {
-    callMe();
-    x = 1;
-  } while (kast("vile"));
-  print(x);
-}
-
-dovileBreak() {
-  var x = 0;
-  do {
-    callMe();
-    x = 1;
-    break;
-  } while (kast("vile"));
-  return (x);
-}
-
-dovileContinue() {
-  var x = 0;
-  do {
-    callMe();
-    x = 1;
-    continue;
-  } while (kast("vile"));
-  return (x);
-}
-
-dovileBreakContinue(x) {
-  do {
-    callMe();
-    if (x == 1) break;
-    continue;
-  } while (kast("vile"));
-  return (x);
-}
-
-faar1() {
-  callMe();
-  for (kast("faar"); called = false; called = false) {
-    called = false;
-  }
-}
-
-faar2() {
-  for (callMe(); kast("faar"); called = false) {
-    called = false;
-  }
-}
-
-faar3() {
-  for (; true; kast("faar")) {
-    callMe();
-  }
-  called = false;
-}
-
-faar4() {
-  callMe();
-  for (kast("faar"); called = false; called = false) {
-    called = false;
-    continue;
-  }
-}
-
-faar5() {
-  for (callMe(); kast("faar"); called = false) {
-    called = false;
-    continue;
-  }
-}
-
-faar6() {
-  for (; true; kast("faar")) {
-    callMe();
-    continue;
-  }
-  called = false;
-}
-
-faar7() {
-  callMe();
-  for (kast("faar"); called = false; called = false) {
-    called = false;
-    break;
-  }
-}
-
-faar8() {
-  for (callMe(); kast("faar"); called = false) {
-    called = false;
-    break;
-  }
-}
-
-faar9() {
-  for (; true; kast("faar")) {
-    callMe();
-    break;
-    called = false;
-  }
-}
-
-main() {
-  Expect.throws(hest);
-  Expect.throws(hest2);
-  foo();
-  Expect.throws(bar);
-  testCall(barc);
-  testCallThenThrow(barCallThrow);
-  Expect.equals(0, baz(false));
-  Expect.throws(() => baz(true));
-  testCall(bazc);
-  testCallThenThrow(bazCallThrow);
-  Expect.throws(() => fizz(false));
-  testCall(fizzc);
-  testCallThenThrow(fizzCallThrow);
-  Expect.throws(fuzz);
-  Expect.throws(farce);
-  Expect.throws(unary);
-  testCallThenThrow(boo);
-  Expect.throws(yo);
-  Expect.throws(bin);
-  testCallThenThrow(binCallThrow);
-  Expect.throws(hoo);
-  Expect.throws(switcheroo);
-  Expect.throws(interpole);
-  testCallThenThrow(interpoleCallThrow);
-  Expect.throws(call1);
-  Expect.throws(call2);
-  Expect.throws(call3);
-  testCallThenThrow(call1c);
-  testCallThenThrow(call3c);
-  testCallThenThrow(call4c);
-  Expect.throws(sendSet);
-  testCallThenThrow(sendSetCallThrow);
-  Expect.throws(isSend);
-  testNoThrow(vile);
-  testCallThenThrow(dovile);
-  testCall(dovileBreak);
-  testCallThenThrow(dovileContinue);
-  testCallThenThrow(throwConstructor);
-  testCallThenThrow(cascade);
-  dovileBreakContinue(1);
-  testCallThenThrow(faar1);
-  testCallThenThrow(faar2);
-  testCallThenThrow(faar3);
-  testCallThenThrow(faar4);
-  testCallThenThrow(faar5);
-  testCallThenThrow(faar6);
-  testCallThenThrow(faar7);
-  testCallThenThrow(faar8);
-  testCall(faar9);
-}
diff --git a/tests/language/inst_field_initializer1_negative_test.dart b/tests/language/inst_field_initializer1_negative_test.dart
deleted file mode 100644
index af446c7..0000000
--- a/tests/language/inst_field_initializer1_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-// Catch illegal access to 'this' in initialized instance fields.
-
-class A {
-  A() {}
-  int x = 5;
-  int arr = new List(x); // Illegal access to 'this'.
-  // Also not a compile const expression.
-}
-
-void main() {
-  var foo = new A();
-}
diff --git a/tests/language/inst_field_initializer_test.dart b/tests/language/inst_field_initializer_test.dart
deleted file mode 100644
index c04fe11..0000000
--- a/tests/language/inst_field_initializer_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test for instance field initializer expressions.
-
-import "package:expect/expect.dart";
-
-class Cheese {
-  static const mild = 1;
-  static const stinky = 2;
-
-  // Instance fields with initializer expression.
-  String name = "";
-  var smell = mild;
-
-  Cheese() {
-    Expect.equals("", this.name);
-    Expect.equals(Cheese.mild, this.smell);
-  }
-
-  Cheese.initInBlock(String s) {
-    Expect.equals("", this.name);
-    Expect.equals(Cheese.mild, this.smell);
-    this.name = s;
-  }
-
-  Cheese.initFieldParam(this.name, this.smell) {}
-
-  // Test that static const field Cheese.mild is not shadowed
-  // by the parameter mild when compiling the field initializer
-  // for instance field smell.
-  Cheese.hideAndSeek(var mild) : name = mild {
-    Expect.equals(mild, this.name);
-    Expect.equals(Cheese.mild, this.smell);
-  }
-}
-
-class HasNoExplicitConstructor {
-  String s = "Tilsiter";
-}
-
-main() {
-  var generic = new Cheese();
-  Expect.equals("", generic.name);
-  Expect.equals(Cheese.mild, generic.smell);
-
-  var gruyere = new Cheese.initInBlock("Gruyere");
-  Expect.equals("Gruyere", gruyere.name);
-  Expect.equals(Cheese.mild, gruyere.smell);
-
-  var munster = new Cheese.initFieldParam("Munster", Cheese.stinky);
-  Expect.equals("Munster", munster.name);
-  Expect.equals(Cheese.stinky, munster.smell);
-
-  var brie = new Cheese.hideAndSeek("Brie");
-  Expect.equals("Brie", brie.name);
-  Expect.equals(Cheese.mild, brie.smell);
-
-  var t = new HasNoExplicitConstructor();
-  Expect.equals("Tilsiter", t.s);
-}
diff --git a/tests/language/instance_call_wrong_argument_count_negative_test.dart b/tests/language/instance_call_wrong_argument_count_negative_test.dart
deleted file mode 100644
index a64a728..0000000
--- a/tests/language/instance_call_wrong_argument_count_negative_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test mismatch in argument counts.
-
-class InstanceCallWrongArgumentCountNegativeTest {
-  static void testMain() {
-    Niederhorn nh = new Niederhorn();
-    nh.goodCall(1, 2, 3);
-    // Bad call.
-    nh.goodCall(1, 2, 3, 4);
-  }
-}
-
-class Niederhorn {
-  Niederhorn() {}
-  int goodCall(int a, int b, int c) {
-    return a + b;
-  }
-}
-
-main() {
-  InstanceCallWrongArgumentCountNegativeTest.testMain();
-}
diff --git a/tests/language/instance_compound_assignment_operator_test.dart b/tests/language/instance_compound_assignment_operator_test.dart
deleted file mode 100644
index b992acc..0000000
--- a/tests/language/instance_compound_assignment_operator_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// 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.
-// Test correct instance compound assignment operator.
-
-import "package:expect/expect.dart";
-
-class A {
-  A() : f = 2 {}
-  var f;
-  operator [](index) => f;
-  operator []=(index, value) => f = value;
-
-  var _g = 0;
-  var gGetCount = 0;
-  var gSetCount = 0;
-  get g {
-    gGetCount++;
-    return _g;
-  }
-
-  set g(value) {
-    gSetCount++;
-    _g = value;
-  }
-}
-
-class B {
-  B()
-      : _a = new A(),
-        count = 0 {}
-  get a {
-    count++;
-    return _a;
-  }
-
-  var _a;
-  var count;
-}
-
-var globalA;
-var fooCounter = 0;
-foo() {
-  fooCounter++;
-  return globalA;
-}
-
-main() {
-  B b = new B();
-  Expect.equals(0, b.count);
-  Expect.equals(2, b.a.f);
-  Expect.equals(1, b.count);
-  var o = b.a;
-  Expect.equals(2, b.count);
-  b.a.f = 1;
-  Expect.equals(3, b.count);
-  Expect.equals(1, b._a.f);
-  b.a.f += 1;
-  Expect.equals(4, b.count);
-  Expect.equals(2, b._a.f);
-
-  b.count = 0;
-  b._a.f = 2;
-  Expect.equals(0, b.count);
-  Expect.equals(2, b.a[0]);
-  Expect.equals(1, b.count);
-  o = b.a;
-  Expect.equals(2, b.count);
-  b.a[0] = 1;
-  Expect.equals(3, b.count);
-  Expect.equals(1, b._a.f);
-  b.a[0] += 1;
-  Expect.equals(4, b.count);
-  Expect.equals(2, b._a.f);
-
-  b._a.g++;
-  Expect.equals(1, b._a.gGetCount);
-  Expect.equals(1, b._a.gSetCount);
-  Expect.equals(1, b._a._g);
-
-  globalA = b._a;
-  globalA.f = 0;
-  foo().f += 1;
-  Expect.equals(1, fooCounter);
-  Expect.equals(1, globalA.f);
-}
diff --git a/tests/language/instance_creation_in_function_annotation_test.dart b/tests/language/instance_creation_in_function_annotation_test.dart
deleted file mode 100644
index 804cb97..0000000
--- a/tests/language/instance_creation_in_function_annotation_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify that instance creation expressions inside function
-// annotations are properly handled.  See dartbug.com/23354
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class C {
-  final String s;
-  const C(this.s);
-}
-
-class D {
-  final C c;
-  const D(this.c);
-}
-
-@D(const C('foo'))
-f() {}
-
-main() {
-  ClosureMirror closureMirror = reflect(f);
-  List<InstanceMirror> metadata = closureMirror.function.metadata;
-  Expect.equals(1, metadata.length);
-  Expect.equals(metadata[0].reflectee.c.s, 'foo');
-}
diff --git a/tests/language/instance_field_initializer_test.dart b/tests/language/instance_field_initializer_test.dart
deleted file mode 100644
index 1cb5c93..0000000
--- a/tests/language/instance_field_initializer_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  int x = 1;
-  A() {}
-  A.reassign() : x = 2 {}
-  A.reassign2(this.x) {}
-}
-
-class B extends A {
-  B() : super() {}
-  B.reassign() : super.reassign() {}
-  B.reassign2() : super.reassign2(3) {}
-}
-
-class InstanceFieldInitializerTest {
-  static testMain() {
-    Expect.equals(1, new A().x);
-    Expect.equals(2, new A.reassign().x);
-    Expect.equals(3, new A.reassign2(3).x);
-
-    Expect.equals(1, new B().x);
-    Expect.equals(2, new B.reassign().x);
-    Expect.equals(3, new B.reassign2().x);
-  }
-}
-
-main() {
-  InstanceFieldInitializerTest.testMain();
-}
diff --git a/tests/language/instance_incr_deopt_test.dart b/tests/language/instance_incr_deopt_test.dart
deleted file mode 100644
index d9424fd..0000000
--- a/tests/language/instance_incr_deopt_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2011, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Check correct deoptimization of instance field increment.
-
-main() {
-  var a = new A();
-  var aa = new A();
-  for (int i = 0; i < 20; i++) {
-    a.Incr();
-    myIncr(aa);
-    conditionalIncr(false, a);
-  }
-  Expect.equals(20, a.f);
-  Expect.equals(20, aa.f);
-  a.f = 1.0;
-  // Deoptimize ++ part of instance increment.
-  a.Incr();
-  Expect.equals(2.0, a.f);
-  var b = new B();
-  // Deoptimize getfield part of instance increment.
-  myIncr(b);
-  Expect.equals(1.0, b.f);
-  // Deoptimize since no type feedback was collected.
-  var old = a.f;
-  conditionalIncr(true, a);
-  Expect.equals(old + 1, a.f);
-}
-
-myIncr(var a) {
-  a.f++;
-}
-
-conditionalIncr(var f, var a) {
-  if (f) {
-    a.f++;
-  }
-}
-
-class A {
-  A() : f = 0;
-  Incr() {
-    f++;
-  }
-
-  var f;
-}
-
-class B {
-  B() : f = 0;
-  var f;
-}
diff --git a/tests/language/instance_inline_test.dart b/tests/language/instance_inline_test.dart
deleted file mode 100644
index e6cf10d..0000000
--- a/tests/language/instance_inline_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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";
-
-// Test inlining of assignments in parameter passing. If [StringScanner.charAt]
-// is inlined, the argument expression [: ++byteOffset :] should not be
-// duplicated.
-
-class StringScanner {
-  final String string;
-  int byteOffset = -1;
-
-  StringScanner(this.string);
-
-  int nextByte() => charAt(++byteOffset);
-
-  int charAt(index) => (string.length > index) ? string.codeUnitAt(index) : -1;
-}
-
-void main() {
-  var scanner = new StringScanner('az9');
-  Expect.equals(0x61, scanner.nextByte()); // Expect a.
-  Expect.equals(0x7A, scanner.nextByte()); // Expect z.
-  Expect.equals(0x39, scanner.nextByte()); // Expect 9.
-  Expect.equals(-1, scanner.nextByte());
-}
diff --git a/tests/language/instance_method2_negative_test.dart b/tests/language/instance_method2_negative_test.dart
deleted file mode 100644
index c0243bf9..0000000
--- a/tests/language/instance_method2_negative_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test to check that we correctly flag the use of an
-// instance method (as a closure) from a static method.
-
-class Goofy {
-  String instMethod() {
-    return "woof";
-  }
-
-  static Function bark() {
-    return instMethod; // Should get error here.
-  }
-}
-
-class InstanceMethod2NegativeTest {
-  static testMain() {
-    var s = Goofy.bark();
-  }
-}
-
-main() {
-  InstanceMethod2NegativeTest.testMain();
-}
diff --git a/tests/language/instance_method_negative_test.dart b/tests/language/instance_method_negative_test.dart
deleted file mode 100644
index ec9eaad..0000000
--- a/tests/language/instance_method_negative_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test to check that we correctly flag the use of an
-// instance method from a static method.
-
-class Goofy {
-  String instMethod() {
-    return "woof";
-  }
-
-  static String bark() {
-    return instMethod(); // Should get error here.
-  }
-}
-
-class InstanceMethodNegativeTest {
-  static testMain() {
-    var s = Goofy.bark();
-  }
-}
-
-main() {
-  InstanceMethodNegativeTest.testMain();
-}
diff --git a/tests/language/instanceof2_test.dart b/tests/language/instanceof2_test.dart
deleted file mode 100644
index ea1d935..0000000
--- a/tests/language/instanceof2_test.dart
+++ /dev/null
@@ -1,106 +0,0 @@
-// 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.
-// Dart test program for testing the instanceof operation.
-
-import "package:expect/expect.dart";
-
-abstract class I {}
-
-abstract class AI implements I {}
-
-class A implements AI {
-  const A();
-}
-
-class B implements I {
-  const B();
-}
-
-class C extends A {
-  const C() : super();
-}
-
-class InstanceofTest {
-  static testMain() {
-    var a = new A();
-    var b = new B();
-    var c = new C();
-    var n = null;
-
-    Expect.equals(true, a is A);
-    Expect.equals(true, b is B);
-    Expect.equals(true, c is C);
-    Expect.equals(true, c is A);
-
-    Expect.equals(true, a is AI);
-    Expect.equals(true, a is I);
-    Expect.equals(false, b is AI);
-    Expect.equals(true, b is I);
-    Expect.equals(true, c is AI);
-    Expect.equals(true, c is I);
-    Expect.equals(false, n is AI);
-    Expect.equals(false, n is I);
-
-    Expect.equals(false, a is B);
-    Expect.equals(false, a is C);
-    Expect.equals(false, b is A);
-    Expect.equals(false, b is C);
-    Expect.equals(false, c is B);
-    Expect.equals(false, n is A);
-
-    Expect.equals(false, null is A);
-    Expect.equals(false, null is B);
-    Expect.equals(false, null is C);
-    Expect.equals(false, null is AI);
-    Expect.equals(false, null is I);
-
-    {
-      var a = new List(5);
-      Expect.equals(true, a is List);
-      Expect.equals(true, a is List<Object>);
-      Expect.equals(true, a is List<int>);
-      Expect.equals(true, a is List<num>);
-      Expect.equals(true, a is List<String>);
-    }
-    {
-      var a = new List<Object>(5);
-      Expect.equals(true, a is List);
-      Expect.equals(true, a is List<Object>);
-      Expect.equals(false, a is List<int>);
-      Expect.equals(false, a is List<num>);
-      Expect.equals(false, a is List<String>);
-    }
-    {
-      var a = new List<int>(5);
-      Expect.equals(true, a is List);
-      Expect.equals(true, a is List<Object>);
-      Expect.equals(true, a is List<int>);
-      Expect.equals(true, a is List<num>);
-      Expect.equals(false, a is List<String>);
-    }
-    {
-      var a = new List<num>(5);
-      Expect.equals(true, a is List);
-      Expect.equals(true, a is List<Object>);
-      Expect.equals(false, a is List<int>);
-      Expect.equals(true, a is List<num>);
-      Expect.equals(false, a is List<String>);
-    }
-    {
-      var a = new List<String>(5);
-      Expect.equals(true, a is List);
-      Expect.equals(true, a is List<Object>);
-      Expect.equals(false, a is List<int>);
-      Expect.equals(false, a is List<num>);
-      Expect.equals(true, a is List<String>);
-    }
-  }
-}
-
-main() {
-  // Repeat type checks so that inlined tests can be tested as well.
-  for (int i = 0; i < 5; i++) {
-    InstanceofTest.testMain();
-  }
-}
diff --git a/tests/language/instanceof3_test.dart b/tests/language/instanceof3_test.dart
deleted file mode 100644
index d1fdec6..0000000
--- a/tests/language/instanceof3_test.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// 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.
-// Dart test program for testing the instanceof operation.
-
-import "package:expect/expect.dart";
-
-// In the type test 'e is T', if T does not denote a type available in the
-// current lexical scope, then T is mapped to dynamic. Direct tests against
-// T cause a dynamic type error though.
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-testAll() {
-  {
-    bool got_type_error = false;
-    var x = null;
-    try {
-      Expect.isTrue(x is UndeclaredType); // x is null.
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // Type error.
-    Expect.isTrue(got_type_error);
-  }
-  {
-    bool got_type_error = false;
-    var x = 1;
-    try {
-      Expect.isTrue(x is UndeclaredType); // x is not null.
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // Type error.
-    Expect.isTrue(got_type_error);
-  }
-  {
-    bool got_type_error = false;
-    var x = null;
-    try {
-      Expect.isFalse(x is List<UndeclaredType>); // x is null.
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // No type error.
-    Expect.isFalse(got_type_error);
-  }
-  {
-    bool got_type_error = false;
-    var x = 1;
-    try {
-      Expect.isFalse(x is List<UndeclaredType>); // x is not a List.
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // No type error.
-    Expect.isFalse(got_type_error);
-  }
-  {
-    bool got_type_error = false;
-    var x = new List();
-    try {
-      Expect.isTrue(x is List<UndeclaredType>); // x is a List<dynamic>.
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // No type error.
-    Expect.isFalse(got_type_error);
-  }
-  {
-    bool got_type_error = false;
-    var x = new List<int>();
-    try {
-      Expect.isTrue(x is List<UndeclaredType>); // x is a List<int>.
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // No type error.
-    Expect.isFalse(got_type_error);
-  }
-}
-
-main() {
-  // Repeat type checks so that inlined tests can be tested as well.
-  for (int i = 0; i < 5; i++) {
-    testAll();
-  }
-}
diff --git a/tests/language/instanceof4_test.dart b/tests/language/instanceof4_test.dart
deleted file mode 100644
index 4392be8..0000000
--- a/tests/language/instanceof4_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// 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.
-// Dart test program for testing the instanceof operation.
-// Regression test for issue 5216.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class Foo<T> {
-  bool isT() => "a string" is T;
-  bool isNotT() => "a string" is! T;
-  bool isListT() => [0, 1, 2] is List<T>;
-  bool isNotListT() => [0, 1, 2] is! List<T>;
-  bool isAlsoListT() => <int>[0, 1, 2] is List<T>;
-  bool isNeitherListT() => <int>[0, 1, 2] is! List<T>;
-}
-
-testFooString() {
-  var o = new Foo<String>();
-  Expect.isTrue(o.isT());
-  Expect.isTrue(!o.isNotT());
-  Expect.isTrue(o.isListT());
-  Expect.isTrue(!o.isNotListT());
-  Expect.isTrue(!o.isAlsoListT()); // //# 01: ok
-  Expect.isTrue(o.isNeitherListT()); // //# 01: ok
-  for (var i = 0; i < 20; i++) {
-    // Make sure methods are optimized.
-    o.isT();
-    o.isNotT();
-    o.isListT();
-    o.isNotListT();
-    o.isAlsoListT(); // //# 01: ok
-    o.isNeitherListT(); // //# 01: ok
-  }
-  Expect.isTrue(o.isT(), "1");
-  Expect.isTrue(!o.isNotT(), "2");
-  Expect.isTrue(o.isListT(), "3");
-  Expect.isTrue(!o.isNotListT(), "4");
-  Expect.isTrue(!o.isAlsoListT(), "5"); // //# 01: ok
-  Expect.isTrue(o.isNeitherListT(), "6"); // //# 01: ok
-}
-
-testFooInt() {
-  var o = new Foo<int>();
-  Expect.isTrue(!o.isT());
-  Expect.isTrue(o.isNotT());
-  Expect.isTrue(o.isListT());
-  Expect.isTrue(!o.isNotListT());
-  Expect.isTrue(o.isAlsoListT());
-  Expect.isTrue(!o.isNeitherListT());
-  for (var i = 0; i < 20; i++) {
-    // Make sure methods are optimized.
-    o.isT();
-    o.isNotT();
-    o.isListT();
-    o.isNotListT();
-    o.isAlsoListT();
-    o.isNeitherListT();
-  }
-  Expect.isTrue(!o.isT());
-  Expect.isTrue(o.isNotT());
-  Expect.isTrue(o.isListT());
-  Expect.isTrue(!o.isNotListT());
-  Expect.isTrue(o.isAlsoListT());
-  Expect.isTrue(!o.isNeitherListT());
-}
-
-main() {
-  testFooString();
-  testFooInt();
-}
diff --git a/tests/language/instanceof_optimized_test.dart b/tests/language/instanceof_optimized_test.dart
deleted file mode 100644
index 3c3f875..0000000
--- a/tests/language/instanceof_optimized_test.dart
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2014, 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.
-// Testing optimized 'is' tests.
-// VMOptions=--optimization-counter-threshold=5 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-bool isInt(x) => x is int;
-
-int isIntRes(x) {
-  if (x is int) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-int isNotIntRes(x) {
-  if (x is! int) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-int isIfThenElseIntRes(x) {
-  return x is int ? 1 : 0;
-}
-
-bool isString(x) => x is String;
-
-int isStringRes(x) {
-  if (x is String) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-int isNotStringRes(x) {
-  if (x is! String) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    Expect.isFalse(isInt(3.2));
-    Expect.isTrue(isInt(3));
-    Expect.isTrue(isInt(17179869184)); // Mint on ia32.
-    Expect.isFalse(isString(2.0));
-    Expect.isTrue(isString("Morgan"));
-  }
-  // No deoptimization of isInt possible since all types are known by the compiler
-
-  Expect.isFalse(isString(true));
-  for (int i = 0; i < 20; i++) {
-    Expect.isFalse(isInt(3.2));
-    Expect.isTrue(isInt(3));
-    Expect.isTrue(isInt(17179869184)); // Mint on ia32.
-    Expect.isFalse(isInt("hu"));
-    Expect.isFalse(isString(2.0));
-    Expect.isTrue(isString("Morgan"));
-    Expect.isFalse(isString(true));
-  }
-
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(0, isIntRes(3.2));
-    Expect.equals(1, isIntRes(3));
-    Expect.equals(0, isIntRes("hi"));
-    Expect.equals(1, isNotIntRes(3.2));
-    Expect.equals(0, isNotIntRes(3));
-    Expect.equals(1, isNotIntRes("hi"));
-    Expect.equals(0, isIfThenElseIntRes(3.2));
-    Expect.equals(1, isIfThenElseIntRes(3));
-    Expect.equals(0, isIfThenElseIntRes("hi"));
-  }
-
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(0, isStringRes(3.2));
-    Expect.equals(1, isStringRes("Lotus"));
-    Expect.equals(1, isNotStringRes(3.2));
-    Expect.equals(0, isNotStringRes("Lotus"));
-  }
-
-  // Deoptimize 'isStringRes', 'isNotIntRes'.
-  Expect.equals(0, isStringRes(null));
-  Expect.equals(1, isNotIntRes(null));
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(0, isStringRes(3.2));
-    Expect.equals(1, isStringRes("Lotus"));
-    Expect.equals(0, isStringRes(null));
-
-    Expect.equals(1, isNotStringRes(3.2));
-    Expect.equals(0, isNotStringRes("Lotus"));
-    Expect.equals(1, isNotStringRes(null));
-  }
-}
diff --git a/tests/language/instanceof_test.dart b/tests/language/instanceof_test.dart
deleted file mode 100644
index 2f9c7e7..0000000
--- a/tests/language/instanceof_test.dart
+++ /dev/null
@@ -1,198 +0,0 @@
-// 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";
-
-class InstanceofTest {
-  InstanceofTest() {}
-
-  static void testBasicTypes() {
-    Expect.equals(true, 0 is int);
-    Expect.equals(false, (0 is bool));
-    Expect.equals(false, (0 is String));
-    Expect.equals(true, 1 is int);
-    Expect.equals(false, (1 is bool));
-    Expect.equals(false, (1 is String));
-
-    Expect.equals(false, (true is int));
-    Expect.equals(true, true is bool);
-    Expect.equals(false, (true is String));
-    Expect.equals(false, (false is int));
-    Expect.equals(true, false is bool);
-    Expect.equals(false, (false is String));
-
-    Expect.equals(false, ("a" is int));
-    Expect.equals(false, ("a" is bool));
-    Expect.equals(true, "a" is String);
-
-    Expect.equals(false, ("" is int));
-    Expect.equals(false, ("" is bool));
-    Expect.equals(true, "" is String);
-  }
-
-  static void testInterfaces() {
-    // Simple Cases with interfaces.
-    var a = new A();
-    Expect.equals(true, a is I);
-    Expect.equals(true, a is A);
-    Expect.equals(false, (a is String));
-    Expect.equals(false, (a is int));
-    Expect.equals(false, (a is bool));
-    Expect.equals(false, (a is B));
-    Expect.equals(false, (a is J));
-
-    // Interfaces with parent
-    var c = new C();
-    Expect.equals(true, c is I);
-    Expect.equals(true, c is J);
-    Expect.equals(true, c is K);
-
-    var d = new D();
-    Expect.equals(true, d is I);
-    Expect.equals(true, d is J);
-    Expect.equals(true, d is K);
-
-    Expect.equals(true, [] is List);
-    Expect.equals(true, [1, 2, 3] is List);
-    Expect.equals(false, (d is List));
-    Expect.equals(false, (null is List));
-    Expect.equals(false, (null is D));
-  }
-
-  static void testnum() {
-    Expect.equals(true, 0 is num);
-    Expect.equals(true, 123 is num);
-    Expect.equals(true, 123.34 is num);
-    Expect.equals(false, ("123" is num));
-    Expect.equals(false, (null is num));
-    Expect.equals(false, (true is num));
-    Expect.equals(false, (false is num));
-    var a = new A();
-    Expect.equals(false, (a is num));
-  }
-
-  static void testTypeOfInstanceOf() {
-    var a = new A();
-    // Interfaces with parent
-    var c = new C();
-    var d = new D();
-
-    Expect.equals(true, (null is int) is bool);
-    Expect.equals(true, (null is bool) is bool);
-    Expect.equals(true, (null is String) is bool);
-    Expect.equals(true, (null is A) is bool);
-    Expect.equals(true, (null is B) is bool);
-    Expect.equals(true, (null is I) is bool);
-    Expect.equals(true, (null is J) is bool);
-
-    Expect.equals(true, (0 is int) is bool);
-    Expect.equals(true, (0 is bool) is bool);
-    Expect.equals(true, (0 is String) is bool);
-    Expect.equals(true, (0 is A) is bool);
-    Expect.equals(true, (0 is B) is bool);
-    Expect.equals(true, (0 is I) is bool);
-    Expect.equals(true, (0 is J) is bool);
-
-    Expect.equals(true, (1 is int) is bool);
-    Expect.equals(true, (1 is bool) is bool);
-    Expect.equals(true, (1 is String) is bool);
-    Expect.equals(true, (1 is A) is bool);
-    Expect.equals(true, (1 is B) is bool);
-    Expect.equals(true, (1 is I) is bool);
-    Expect.equals(true, (1 is J) is bool);
-
-    Expect.equals(true, (true is int) is bool);
-    Expect.equals(true, (true is bool) is bool);
-    Expect.equals(true, (true is String) is bool);
-    Expect.equals(true, (true is A) is bool);
-    Expect.equals(true, (true is B) is bool);
-    Expect.equals(true, (true is I) is bool);
-    Expect.equals(true, (true is J) is bool);
-
-    Expect.equals(true, (false is int) is bool);
-    Expect.equals(true, (false is bool) is bool);
-    Expect.equals(true, (false is String) is bool);
-    Expect.equals(true, (false is A) is bool);
-    Expect.equals(true, (false is B) is bool);
-    Expect.equals(true, (false is I) is bool);
-    Expect.equals(true, (false is J) is bool);
-
-    Expect.equals(true, ("a" is int) is bool);
-    Expect.equals(true, ("a" is bool) is bool);
-    Expect.equals(true, ("a" is String) is bool);
-    Expect.equals(true, ("a" is A) is bool);
-    Expect.equals(true, ("a" is B) is bool);
-    Expect.equals(true, ("a" is I) is bool);
-    Expect.equals(true, ("a" is J) is bool);
-
-    Expect.equals(true, ("" is int) is bool);
-    Expect.equals(true, ("" is bool) is bool);
-    Expect.equals(true, ("" is String) is bool);
-    Expect.equals(true, ("" is A) is bool);
-    Expect.equals(true, ("" is B) is bool);
-    Expect.equals(true, ("" is I) is bool);
-    Expect.equals(true, ("" is J) is bool);
-
-    Expect.equals(true, (a is int) is bool);
-    Expect.equals(true, (a is bool) is bool);
-    Expect.equals(true, (a is String) is bool);
-    Expect.equals(true, (a is A) is bool);
-    Expect.equals(true, (a is B) is bool);
-    Expect.equals(true, (a is I) is bool);
-    Expect.equals(true, (a is J) is bool);
-
-    Expect.equals(true, (c is int) is bool);
-    Expect.equals(true, (c is bool) is bool);
-    Expect.equals(true, (c is String) is bool);
-    Expect.equals(true, (c is A) is bool);
-    Expect.equals(true, (c is B) is bool);
-    Expect.equals(true, (c is I) is bool);
-    Expect.equals(true, (c is J) is bool);
-
-    Expect.equals(true, (d is int) is bool);
-    Expect.equals(true, (d is bool) is bool);
-    Expect.equals(true, (d is String) is bool);
-    Expect.equals(true, (d is A) is bool);
-    Expect.equals(true, (d is B) is bool);
-    Expect.equals(true, (d is I) is bool);
-    Expect.equals(true, (d is J) is bool);
-  }
-
-  static void testMain() {
-    testBasicTypes();
-    // TODO(sra): enable after fixing b/4604295
-    // testnum();
-    testInterfaces();
-    testTypeOfInstanceOf();
-  }
-}
-
-abstract class I {}
-
-class A implements I {
-  A() {}
-}
-
-class B {
-  B() {}
-}
-
-abstract class J {}
-
-abstract class K implements J {}
-
-class C implements I, K {
-  C() {}
-}
-
-class D extends C {
-  D() : super() {}
-}
-
-main() {
-  // Repeat type checks so that inlined tests can be tested as well.
-  for (int i = 0; i < 5; i++) {
-    InstanceofTest.testMain();
-  }
-}
diff --git a/tests/language/instantiate_type_variable_test.dart b/tests/language/instantiate_type_variable_test.dart
deleted file mode 100644
index 65ef440..0000000
--- a/tests/language/instantiate_type_variable_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test that you cannot instantiate a type variable.
-
-class Foo<T> {
-  Foo() {}
-  T make() {
-    return new T(); // //# 01: runtime error
-  }
-}
-
-main() {
-  new Foo<Object>().make();
-}
diff --git a/tests/language/int2_test.dart b/tests/language/int2_test.dart
deleted file mode 100644
index 633bd10..0000000
--- a/tests/language/int2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to throw NoSuchMethod if an
-// int did not fit in the SMI range.
-
-import "package:expect/expect.dart";
-
-main() {
-  // dart2js knows that this list is int or null.
-  var b = [null, 10000000000000000000000000000000000000];
-
-  // Use b[1] twice to ensure dart2js realizes it's the same value
-  // after type propagation.
-
-  // dart2js will inline an ArgumentError check on b[a].
-  42 + b[1];
-  // dart2js will inline a NoSuchMethodError check.
-  var c = b[1] & 1;
-  Expect.equals(0, c);
-}
diff --git a/tests/language/int_test.dart b/tests/language/int_test.dart
deleted file mode 100644
index 14133b5..0000000
--- a/tests/language/int_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test basic integer operations.
-
-import "package:expect/expect.dart";
-
-class IntTest {
-  static void testMain() {
-    Expect.equals(0, 0 + 0);
-    Expect.equals(1, 1 + 0);
-    Expect.equals(2, 1 + 1);
-    Expect.equals(3, -1 + 4);
-    Expect.equals(3, 4 + -1);
-
-    Expect.equals(1, 1 - 0);
-    Expect.equals(0, 1 - 1);
-    Expect.equals(1, 2 - 1);
-    Expect.equals(2, 4 - 2);
-    Expect.equals(-2, 2 - 4);
-
-    Expect.equals(0, 3 * 0);
-    Expect.equals(0, 0 * 3);
-    Expect.equals(1, 1 * 1);
-    Expect.equals(5, 5 * 1);
-    Expect.equals(15, 3 * 5);
-    Expect.equals(-1, 1 * -1);
-    Expect.equals(-15, -5 * 3);
-    Expect.equals(15, -5 * -3);
-
-    Expect.equals(1, 2 ~/ 2);
-    Expect.equals(2, 2 ~/ 1);
-    Expect.equals(2, 4 ~/ 2);
-    Expect.equals(2, 5 ~/ 2);
-    Expect.equals(-2, -5 ~/ 2);
-    Expect.equals(-2, -4 ~/ 2);
-    Expect.equals(-2, 5 ~/ -2);
-    Expect.equals(-2, 4 ~/ -2);
-
-    Expect.equals(3, 7 % 4);
-    Expect.equals(2, 9 % 7);
-    Expect.equals(2, -7 % 9);
-    Expect.equals(7, 7 % -9);
-    Expect.equals(7, 7 % 9);
-    Expect.equals(2, -7 % -9);
-
-    Expect.equals(3, (7).remainder(4));
-    Expect.equals(2, (9).remainder(7));
-    Expect.equals(-7, (-7).remainder(9));
-    Expect.equals(7, (7).remainder(-9));
-    Expect.equals(7, (7).remainder(9));
-    Expect.equals(-7, (-7).remainder(-9));
-  }
-}
-
-main() {
-  IntTest.testMain();
-}
diff --git a/tests/language/integer_division_by_zero_test.dart b/tests/language/integer_division_by_zero_test.dart
deleted file mode 100644
index 03cd661..0000000
--- a/tests/language/integer_division_by_zero_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test integer division by zero.
-// Test that results before and after optimization are the same.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-divBy0(a) => a ~/ 0;
-
-main() {
-  Expect.throws(() => divBy0(4), (e) => e is IntegerDivisionByZeroException);
-}
diff --git a/tests/language/interceptor2_test.dart b/tests/language/interceptor2_test.dart
deleted file mode 100644
index 530dcc9..0000000
--- a/tests/language/interceptor2_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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";
-
-// Regression test for issue http://dartbug.com/6903: dart2js used to
-// not generate an interceptor forwarder when a getter call and a
-// method call on an intercepted method were both used.
-
-class A {
-  get iterator => () => 499;
-}
-
-main() {
-  var a = [
-    new A(),
-    [1, 1]
-  ];
-  Expect.equals(499, a[0].iterator());
-  Expect.equals(499, (a[0].iterator)());
-  for (var i in a[1]) {
-    Expect.equals(1, i);
-  }
-}
diff --git a/tests/language/interceptor3_test.dart b/tests/language/interceptor3_test.dart
deleted file mode 100644
index a121721..0000000
--- a/tests/language/interceptor3_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-// Test that code motion in the presence of interceptors work in dart2js.
-
-main() {
-  var a = [2, '2'];
-  var b = a[1];
-  if (a[0] == 2 && b is String) {
-    Expect.isTrue(b.contains('2'));
-  } else {
-    b.isEven();
-  }
-}
diff --git a/tests/language/interceptor4_test.dart b/tests/language/interceptor4_test.dart
deleted file mode 100644
index 00bac28..0000000
--- a/tests/language/interceptor4_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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";
-
-// Test that dart2js gets the right interceptor for an int.
-
-main() {
-  var a = [1];
-  var b = a[0];
-  Expect.equals('1', b.toString());
-  Expect.isTrue(b.isOdd);
-}
diff --git a/tests/language/interceptor5_test.dart b/tests/language/interceptor5_test.dart
deleted file mode 100644
index 41b76e9..0000000
--- a/tests/language/interceptor5_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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";
-
-get X => [() => 123];
-
-main() {
-  Expect.equals(123, X.last());
-}
diff --git a/tests/language/interceptor6_test.dart b/tests/language/interceptor6_test.dart
deleted file mode 100644
index 208a59d..0000000
--- a/tests/language/interceptor6_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Check that an intercepted call on a method that does not exist does
-// not crash the compiler.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.throws(() => 42.clamp(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/interceptor7_test.dart b/tests/language/interceptor7_test.dart
deleted file mode 100644
index 965ddfc..0000000
--- a/tests/language/interceptor7_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that dart2js uses the right interceptor when call a method on
-// something that has type number.
-
-import 'package:expect/expect.dart';
-
-var array = [];
-
-main() {
-  array.add(false);
-  var x = array[0] ? 1.5 : 2;
-  Expect.isTrue(x.isEven);
-}
diff --git a/tests/language/interceptor8_test.dart b/tests/language/interceptor8_test.dart
deleted file mode 100644
index 0890124..0000000
--- a/tests/language/interceptor8_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js whose codegen used to not consider a double
-// could be instantiated when doing int / int.
-
-var a = [5, 2];
-
-main() {
-  print(a[0] / a[1]);
-}
diff --git a/tests/language/interceptor9_test.dart b/tests/language/interceptor9_test.dart
deleted file mode 100644
index 07525a5..0000000
--- a/tests/language/interceptor9_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for dart2js whose codegen in some cases did not take is
-// tests into account when computing the set of classes for interceptors.
-// See http://dartbug.com/17325
-
-import "package:expect/expect.dart";
-import "dart:typed_data";
-
-confuse(x, [y = null]) => new DateTime.now().day == 42 ? y : x;
-
-boom() {
-  var x = confuse(new Uint8List(22), "");
-  Expect.isTrue(x is Uint8List);
-  x.startsWith("a");
-  x.endsWith("u");
-}
-
-main() {
-  try {
-    var f;
-    if (confuse(true)) {
-      // prevent inlining
-      f = boom;
-    }
-    f();
-  } catch (e) {
-    if (e is ExpectException) throw e;
-  }
-}
diff --git a/tests/language/interceptor_test.dart b/tests/language/interceptor_test.dart
deleted file mode 100644
index cbca9f9..0000000
--- a/tests/language/interceptor_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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";
-
-// Test that interceptors (that is, methods in classes implemented as
-// JavaScript primitives) in dart2js work.
-
-class A {
-  codeUnitAt(a) => a;
-}
-
-main() {
-  var res = [[], 1, 'foo', new A()];
-  Expect.throws(() => res[0].codeUnitAt(1));
-  Expect.throws(() => (res[0].codeUnitAt)(1));
-
-  Expect.throws(() => res[1].codeUnitAt(1));
-  Expect.throws(() => (res[1].codeUnitAt)(1));
-
-  Expect.equals(111, res[2].codeUnitAt(1));
-  Expect.equals(111, (res[2].codeUnitAt)(1));
-  Expect.throws(() => res[2].codeUnitAt(1, 4));
-  Expect.throws(() => res[2].codeUnitAt());
-  Expect.throws(() => (res[2].codeUnitAt)(1, 4));
-  Expect.throws(() => (res[2].codeUnitAt)());
-
-  Expect.equals(1, res[3].codeUnitAt(1));
-  Expect.equals(1, (res[3].codeUnitAt)(1));
-  Expect.throws(() => res[3].codeUnitAt(1, 4));
-  Expect.throws(() => res[3].codeUnitAt());
-  Expect.throws(() => (res[3].codeUnitAt)(1, 4));
-  Expect.throws(() => (res[3].codeUnitAt)());
-}
diff --git a/tests/language/interface2_negative_test.dart b/tests/language/interface2_negative_test.dart
deleted file mode 100644
index c4a23b1..0000000
--- a/tests/language/interface2_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-// Dart test program for testing wrong abstract class reference:
-// A class must implement a known interface.
-
-class Interface2NegativeTest implements BooHoo {
-  static testMain() {}
-}
-
-main() {
-  Interface2NegativeTest.testMain();
-}
diff --git a/tests/language/interface_constants_test.dart b/tests/language/interface_constants_test.dart
deleted file mode 100644
index 5654066..0000000
--- a/tests/language/interface_constants_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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";
-
-abstract class Constants {
-  static const int FIVE = 5;
-}
-
-class InterfaceConstantsTest {
-  InterfaceConstantsTest() {}
-
-  static void testMain() {
-    Expect.equals(5, Constants.FIVE);
-  }
-}
-
-main() {
-  InterfaceConstantsTest.testMain();
-}
diff --git a/tests/language/interface_cycle_test.dart b/tests/language/interface_cycle_test.dart
deleted file mode 100644
index 0e44708..0000000
--- a/tests/language/interface_cycle_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-// Check fail because of cycles in super interface relationship.
-
-class C implements B {}
-
-class A implements B {}
-
-class B
-  implements A // //# 01: compile-time error
-  implements A // //# 02: compile-time error
-{}
-
-main() {
-  new C(); // //# 01: continued
-  new List<C>(); // //# 02: continued
-}
diff --git a/tests/language/interface_inherit_field_test.dart b/tests/language/interface_inherit_field_test.dart
deleted file mode 100644
index c1f685a..0000000
--- a/tests/language/interface_inherit_field_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// Test that it is legal to override a field with a field in an interface.
-
-abstract class IA {
-  final int foo;
-}
-
-abstract class IB implements IA {
-  final int foo;
-}
-
-class B implements IB {
-  int _f = 123;
-  int get foo => _f;
-}
-
-main() {
-  IB b = new B();
-  print('b.foo = ${b.foo}');
-}
diff --git a/tests/language/interface_injection1_negative_test.dart b/tests/language/interface_injection1_negative_test.dart
deleted file mode 100644
index 474a27e..0000000
--- a/tests/language/interface_injection1_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-abstract class S { }
-abstract class I { }
-abstract class I implements S;
-
-class C implements I { }
-
-main() {
-  Expect.equals(true, new C() is S);
-}
diff --git a/tests/language/interface_injection2_negative_test.dart b/tests/language/interface_injection2_negative_test.dart
deleted file mode 100644
index 29540f3..0000000
--- a/tests/language/interface_injection2_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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";
-
-abstract class S { }
-class C { }
-class C implements S;
-
-main() {
-  Expect.equals(true, new C() is S);
-}
diff --git a/tests/language/interface_static_method_negative_test.dart b/tests/language/interface_static_method_negative_test.dart
deleted file mode 100644
index 5e8a83c..0000000
--- a/tests/language/interface_static_method_negative_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-abstract class A {
-  static void foo();
-}
-
-class InterfaceStaticMethodNegativeTest {
-
-  static testMain() {
-    var a = new A();
-  }
-}
-
-main() {
-  InterfaceStaticMethodNegativeTest.testMain();
-}
diff --git a/tests/language/interface_static_non_final_fields_negative_test.dart b/tests/language/interface_static_non_final_fields_negative_test.dart
deleted file mode 100644
index 9da2007..0000000
--- a/tests/language/interface_static_non_final_fields_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-abstract class A {
-  static var a;
-}
-
-class InterfaceStaticNonConstFieldsNegativeTest {
-  static testMain() {}
-}
-
-main() {
-  InterfaceStaticNonFinalFieldsNegativeTest.testMain();
-}
diff --git a/tests/language/interface_test.dart b/tests/language/interface_test.dart
deleted file mode 100644
index 5122d50..0000000
--- a/tests/language/interface_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-// Dart test program for testing Interfaces.
-
-abstract class Ai {
-  int foo();
-}
-
-abstract class Bi implements Ai {
-  factory Bi() = InterfaceTest;
-}
-
-abstract class Simple implements Ai {}
-
-abstract class Aai {}
-
-abstract class Abi {}
-
-abstract class Bar {}
-
-abstract class Foo implements Bar {}
-
-abstract class Baz implements Bar, Foo {}
-
-class InterfaceTest implements Ai, Aai, Abi, Baz, Bi {
-  var f;
-
-  InterfaceTest() {}
-  int foo() {
-    return 1;
-  }
-
-  // intentionally unimplemented methods
-  beta(); // Abstract.
-  String beta1(); // Abstract.
-  String beta2(double d); // Abstract.
-}
-
-main() {
-  // instantiate an abstract class
-  var o = new Bi(); //# 00: static type warning
-}
diff --git a/tests/language/internal_library_test.dart b/tests/language/internal_library_test.dart
deleted file mode 100644
index dd399cb..0000000
--- a/tests/language/internal_library_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a private library cannot be accessed from outside the platform.
-
-library internal_library_test;
-
-import 'dart:core'; // This loads 'dart:_foreign_helper' and 'patch:core'.
-import 'dart:_foreign_helper'; //# 01: compile-time error
-
-part 'dart:_foreign_helper'; //# 02: compile-time error
-
-void main() {
-  JS('int', '0'); //# 01: continued
-  JS('int', '0'); //# 02: continued
-}
diff --git a/tests/language/intrinsified_methods_test.dart b/tests/language/intrinsified_methods_test.dart
deleted file mode 100644
index d828d0c..0000000
--- a/tests/language/intrinsified_methods_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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.
-// Dart test program for testing the instanceof operation.
-
-library intrinsified_methods_test;
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-testIsNegative() {
-  Expect.isFalse((12.0).isNegative);
-  Expect.isTrue((-12.0).isNegative);
-  Expect.isFalse((double.NAN).isNegative);
-  Expect.isFalse((0.0).isNegative);
-  Expect.isTrue((-0.0).isNegative);
-  Expect.isFalse((double.INFINITY).isNegative);
-  Expect.isTrue((double.NEGATIVE_INFINITY).isNegative);
-}
-
-testIsNaN() {
-  Expect.isFalse((1.0).isNaN);
-  Expect.isTrue((double.NAN).isNaN);
-}
-
-testTrigonometric() {
-  Expect.approxEquals(1.0, sin(PI / 2.0), 0.0001);
-  Expect.approxEquals(1.0, cos(0), 0.0001);
-  Expect.approxEquals(1.0, cos(0.0), 0.0001);
-}
-
-num foo(int n) {
-  var x;
-  for (var i = 0; i <= n; ++i) {
-    Expect.equals(2.0, sqrt(4.0));
-    testIsNegative();
-    testIsNaN();
-    testTrigonometric();
-  }
-  return x;
-}
-
-void main() {
-  var m = foo(4000);
-}
diff --git a/tests/language/invocation_mirror2_test.dart b/tests/language/invocation_mirror2_test.dart
deleted file mode 100644
index 71ac5ee..0000000
--- a/tests/language/invocation_mirror2_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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 "dart:mirrors" show reflect;
-import "package:expect/expect.dart";
-
-class GetName {
-  set flif(_) => "flif=";
-}
-
-int getName(im) => reflect(new GetName()).delegate(im);
-
-class C {
-  var im;
-  noSuchMethod(im) => this.im = im;
-  flif() {}
-}
-
-main() {
-  var c = new C();
-  c.flif = 42;
-  Expect.equals(42, getName(c.im));
-  Expect.equals(42, c.im.positionalArguments[0]);
-}
diff --git a/tests/language/invocation_mirror_empty_arguments_test.dart b/tests/language/invocation_mirror_empty_arguments_test.dart
deleted file mode 100644
index 8212536..0000000
--- a/tests/language/invocation_mirror_empty_arguments_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class Getter {
-  noSuchMethod(invocation) {
-    Expect.isTrue(invocation.isGetter);
-    Expect.identical(const [], invocation.positionalArguments);
-    Expect.identical(const {}, invocation.namedArguments);
-  }
-}
-
-class Setter {
-  noSuchMethod(invocation) {
-    Expect.isTrue(invocation.isSetter);
-    Expect.identical(const {}, invocation.namedArguments);
-  }
-}
-
-class Method {
-  noSuchMethod(invocation) {
-    Expect.isTrue(invocation.isMethod);
-    Expect.identical(const [], invocation.positionalArguments);
-    Expect.identical(const {}, invocation.namedArguments);
-  }
-}
-
-class Operator {
-  noSuchMethod(invocation) {
-    Expect.isTrue(invocation.isMethod);
-    Expect.identical(const {}, invocation.namedArguments);
-  }
-}
-
-main() {
-  var g = new Getter();
-  print(g.getterThatDoesNotExist);
-  var s = new Setter();
-  print(s.setterThatDoesNotExist = 42);
-  var m = new Method();
-  print(m.methodThatDoesNotExist());
-  var o = new Operator();
-  print(o + 42); // Operator that does not exist.
-}
diff --git a/tests/language/invocation_mirror_invoke_on2_test.dart b/tests/language/invocation_mirror_invoke_on2_test.dart
deleted file mode 100644
index dfa6129..0000000
--- a/tests/language/invocation_mirror_invoke_on2_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2013, 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:mirrors" show reflect;
-import "package:expect/expect.dart";
-
-class Proxy {
-  final proxied;
-  Proxy(this.proxied);
-  noSuchMethod(mirror) => reflect(proxied).delegate(mirror);
-}
-
-main() {
-  testList();
-  testString();
-  testInt();
-  testDouble();
-}
-
-testList() {
-  var list = [];
-  var proxy = new Proxy(list);
-
-  Expect.isTrue(proxy.isEmpty);
-  Expect.isTrue(list.isEmpty);
-
-  proxy.add(42);
-
-  Expect.isFalse(proxy.isEmpty);
-  Expect.equals(1, proxy.length);
-  Expect.equals(42, proxy[0]);
-
-  Expect.isFalse(list.isEmpty);
-  Expect.equals(1, list.length);
-  Expect.equals(42, list[0]);
-
-  proxy.add(87);
-
-  Expect.equals(2, proxy.length);
-  Expect.equals(87, proxy[1]);
-
-  Expect.equals(2, list.length);
-  Expect.equals(87, list[1]);
-
-  Expect.throws(() => proxy.funky(), (e) => e is NoSuchMethodError);
-  Expect.throws(() => list.funky(), (e) => e is NoSuchMethodError);
-}
-
-testString() {
-  var string = "funky";
-  var proxy = new Proxy(string);
-
-  Expect.equals(string.codeUnitAt(0), proxy.codeUnitAt(0));
-  Expect.equals(string.length, proxy.length);
-
-  Expect.throws(() => proxy.funky(), (e) => e is NoSuchMethodError);
-  Expect.throws(() => string.funky(), (e) => e is NoSuchMethodError);
-}
-
-testInt() {
-  var number = 42;
-  var proxy = new Proxy(number);
-
-  Expect.equals(number + 87, proxy + 87);
-  Expect.equals(number.toDouble(), proxy.toDouble());
-
-  Expect.throws(() => proxy.funky(), (e) => e is NoSuchMethodError);
-  Expect.throws(() => number.funky(), (e) => e is NoSuchMethodError);
-}
-
-testDouble() {
-  var number = 42.99;
-  var proxy = new Proxy(number);
-
-  Expect.equals(number + 87, proxy + 87);
-  Expect.equals(number.toInt(), proxy.toInt());
-
-  Expect.throws(() => proxy.funky(), (e) => e is NoSuchMethodError);
-  Expect.throws(() => number.funky(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/invocation_mirror_invoke_on_test.dart b/tests/language/invocation_mirror_invoke_on_test.dart
deleted file mode 100644
index d064461..0000000
--- a/tests/language/invocation_mirror_invoke_on_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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 "dart:mirrors" show reflect;
-import "package:expect/expect.dart";
-
-// Testing InstanceMirror.delegate method; test of issue 7227.
-
-var reachedSetX = 0;
-var reachedGetX = 0;
-var reachedM = 0;
-
-class A {
-  set x(val) {
-    reachedSetX = val;
-  }
-
-  get x {
-    reachedGetX = 1;
-  }
-
-  m() {
-    reachedM = 1;
-  }
-}
-
-class B {
-  final a = new A();
-  noSuchMethod(mirror) => reflect(a).delegate(mirror);
-}
-
-main() {
-  var b = new B();
-  b.x = 10;
-  Expect.equals(10, reachedSetX);
-  b.x;
-  Expect.equals(1, reachedGetX);
-  b.m();
-  Expect.equals(1, reachedM);
-}
diff --git a/tests/language/invocation_mirror_test.dart b/tests/language/invocation_mirror_test.dart
deleted file mode 100644
index 6eca589..0000000
--- a/tests/language/invocation_mirror_test.dart
+++ /dev/null
@@ -1,326 +0,0 @@
-// 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";
-
-// Invocation and noSuchMethod testing.
-
-Map<Symbol, dynamic> listToNamedArguments(list) {
-  var iterator = list.iterator;
-  var result = new Map<Symbol, dynamic>();
-  while (iterator.moveNext()) {
-    Symbol key = iterator.current;
-    Expect.isTrue(iterator.moveNext());
-    result[key] = iterator.current;
-  }
-  return result;
-}
-
-/** Class with noSuchMethod that returns the mirror */
-class N {
-  // Storage for the last argument to noSuchMethod.
-  // Needed for setters, which don't evaluate to the return value.
-  var last;
-  noSuchMethod(Invocation m) => last = m;
-
-  flif(int x) {
-    Expect.fail("never get here");
-  }
-
-  flaf([int x]) {
-    Expect.fail("never get here");
-  }
-
-  flof({int y}) {
-    Expect.fail("never get here");
-  }
-
-  get wut => this;
-  final int plif = 99;
-  int get plaf {
-    Expect.fail("never get here");
-    return 0;
-  }
-}
-
-/** As [N] but also implements 'call', so we can call it with wrong arguments.*/
-class C extends N {
-  call(int x) {
-    Expect.fail("never get here");
-  }
-}
-
-/**
- * Checks the data of an Invocation.
- *
- * Call without optionals for getters, with only positional for setters,
- * and with both optionals for everything else.
- */
-testInvocationMirror(Invocation im, Symbol name,
-    [List positional, List named]) {
-  Expect.isTrue(im is Invocation, "is Invocation");
-  Expect.equals(name, im.memberName, "name");
-  if (named == null) {
-    Expect.isTrue(im.isAccessor, "$name:isAccessor");
-    Expect.isFalse(im.isMethod, "$name:isMethod");
-    if (positional == null) {
-      Expect.isTrue(im.isGetter, "$name:isGetter");
-      Expect.isFalse(im.isSetter, "$name:isSetter");
-      Expect.equals(0, im.positionalArguments.length, "$name:#positional");
-      Expect.equals(0, im.namedArguments.length, "$name:#named");
-      return;
-    }
-    Expect.isTrue(im.isSetter, "$name:isSetter");
-    Expect.isFalse(im.isGetter, "$name:isGetter");
-    Expect.equals(1, im.positionalArguments.length, "$name:#positional");
-    Expect.equals(
-        positional[0], im.positionalArguments[0], "$name:positional[0]");
-    Expect.equals(0, im.namedArguments.length, "$name:#named");
-    return;
-  }
-  Map<Symbol, dynamic> namedArguments = listToNamedArguments(named);
-  Expect.isTrue(im.isMethod, "$name:isMethod");
-  Expect.isFalse(im.isAccessor, "$name:isAccessor");
-  Expect.isFalse(im.isSetter, "$name:isSetter");
-  Expect.isFalse(im.isGetter, "$name:isGetter");
-
-  Expect.listEquals(positional, im.positionalArguments);
-
-  Expect.equals(
-      namedArguments.length, im.namedArguments.length, "$name:#named");
-  namedArguments.forEach((k, v) {
-    Expect.isTrue(
-        im.namedArguments.containsKey(k), "$name:?namedArguments[$k]");
-    Expect.equals(v, im.namedArguments[k], "$name:namedArguments[$k]");
-  });
-}
-
-// Test different ways that noSuchMethod can be called.
-testInvocationMirrors() {
-  var n = new N();
-  var c = new C();
-
-  // Missing property/method access.
-  testInvocationMirror(n.bar, const Symbol('bar'));
-  testInvocationMirror((n..bar = 42).last, const Symbol('bar='), [42]);
-  testInvocationMirror(n.bar(), const Symbol('bar'), [], []);
-  testInvocationMirror(n.bar(42), const Symbol('bar'), [42], []);
-  testInvocationMirror(
-      n.bar(x: 42), const Symbol('bar'), [], [const Symbol("x"), 42]);
-  testInvocationMirror(
-      n.bar(37, x: 42), const Symbol('bar'), [37], [const Symbol("x"), 42]);
-
-  // Missing operator access.
-  testInvocationMirror(n + 4, const Symbol('+'), [4], []);
-  testInvocationMirror(n - 4, const Symbol('-'), [4], []);
-  testInvocationMirror(-n, const Symbol('unary-'), [], []);
-  testInvocationMirror(n[42], const Symbol('[]'), [42], []);
-  testInvocationMirror((n..[37] = 42).last, const Symbol('[]='), [37, 42], []);
-
-  // Calling as function when it's not.
-  testInvocationMirror(n(), const Symbol('call'), [], []);
-  testInvocationMirror(n(42), const Symbol('call'), [42], []);
-  testInvocationMirror(
-      n(x: 42), const Symbol('call'), [], [const Symbol("x"), 42]);
-  testInvocationMirror(
-      n(37, x: 42), const Symbol('call'), [37], [const Symbol("x"), 42]);
-
-  // Calling with arguments not matching existing call method.
-  testInvocationMirror(c(), const Symbol('call'), [], []);
-  testInvocationMirror(c(37, 42), const Symbol('call'), [37, 42], []);
-  testInvocationMirror(
-      c(x: 42), const Symbol('call'), [], [const Symbol("x"), 42]);
-  testInvocationMirror(
-      c(37, x: 42), const Symbol('call'), [37], [const Symbol("x"), 42]);
-
-  // Wrong arguments to existing function.
-  testInvocationMirror(n.flif(), const Symbol("flif"), [], []);
-  testInvocationMirror(n.flif(37, 42), const Symbol("flif"), [37, 42], []);
-  testInvocationMirror(
-      n.flif(x: 42), const Symbol("flif"), [], [const Symbol("x"), 42]);
-  testInvocationMirror(
-      n.flif(37, x: 42), const Symbol("flif"), [37], [const Symbol("x"), 42]);
-  testInvocationMirror((n..flif = 42).last, const Symbol("flif="), [42]);
-
-  testInvocationMirror(n.flaf(37, 42), const Symbol("flaf"), [37, 42], []);
-  testInvocationMirror(
-      n.flaf(x: 42), const Symbol("flaf"), [], [const Symbol("x"), 42]);
-  testInvocationMirror(
-      n.flaf(37, x: 42), const Symbol("flaf"), [37], [const Symbol("x"), 42]);
-  testInvocationMirror((n..flaf = 42).last, const Symbol("flaf="), [42]);
-
-  testInvocationMirror(n.flof(37, 42), const Symbol("flof"), [37, 42], []);
-  testInvocationMirror(
-      n.flof(x: 42), const Symbol("flof"), [], [const Symbol("x"), 42]);
-  testInvocationMirror(
-      n.flof(37, y: 42), const Symbol("flof"), [37], [const Symbol("y"), 42]);
-  testInvocationMirror((n..flof = 42).last, const Symbol("flof="), [42]);
-
-  // Reading works.
-  Expect.isTrue(n.flif is Function);
-  Expect.isTrue(n.flaf is Function);
-  Expect.isTrue(n.flof is Function);
-
-  // Writing to read-only fields.
-  testInvocationMirror((n..wut = 42).last, const Symbol("wut="), [42]);
-  testInvocationMirror((n..plif = 42).last, const Symbol("plif="), [42]);
-  testInvocationMirror((n..plaf = 42).last, const Symbol("plaf="), [42]);
-
-  // Trick call to n.call - wut is a getter returning n again.
-  testInvocationMirror(n.wut(42), const Symbol("call"), [42], []);
-
-  // Calling noSuchMethod itself, badly.
-  testInvocationMirror(n.noSuchMethod(), const Symbol("noSuchMethod"), [], []);
-  testInvocationMirror(
-      n.noSuchMethod(37, 42), const Symbol("noSuchMethod"), [37, 42], []);
-  testInvocationMirror(n.noSuchMethod(37, x: 42), const Symbol("noSuchMethod"),
-      [37], [const Symbol("x"), 42]);
-  testInvocationMirror(n.noSuchMethod(x: 42), const Symbol("noSuchMethod"), [],
-      [const Symbol("x"), 42]);
-
-  // Closurizing a method means that calling it badly will not hit the
-  // original receivers noSuchMethod, only the one inherited from Object
-  // by the closure object.
-  Expect.throws(() {
-    var x = n.flif;
-    x(37, 42);
-  }, (e) => e is NoSuchMethodError);
-  Expect.throws(() {
-    var x = c.call;
-    x(37, 42);
-  }, (e) => e is NoSuchMethodError);
-}
-
-class M extends N {
-  noSuchMethod(Invocation m) {
-    throw "never get here";
-  }
-
-  testSuperCalls() {
-    // Missing property/method access.
-    testInvocationMirror(super.bar, const Symbol('bar'));
-    testInvocationMirror(() {
-      super.bar = 42;
-      return last;
-    }(), const Symbol('bar='), [42]);
-    testInvocationMirror(super.bar(), const Symbol('bar'), [], []);
-    testInvocationMirror(super.bar(42), const Symbol('bar'), [42], []);
-    testInvocationMirror(
-        super.bar(x: 42), const Symbol('bar'), [], [const Symbol("x"), 42]);
-    testInvocationMirror(super.bar(37, x: 42), const Symbol('bar'), [37],
-        [const Symbol("x"), 42]);
-
-    // Missing operator access.
-    testInvocationMirror(super + 4, const Symbol('+'), [4], []);
-    testInvocationMirror(super - 4, const Symbol('-'), [4], []);
-    testInvocationMirror(-super, const Symbol('unary-'), [], []);
-    testInvocationMirror(super[42], const Symbol('[]'), [42], []);
-    testInvocationMirror(() {
-      super[37] = 42;
-      return last;
-    }(), const Symbol('[]='), [37, 42], []);
-
-    // Wrong arguments to existing function.
-    testInvocationMirror(super.flif(), const Symbol("flif"), [], []);
-    testInvocationMirror(
-        super.flif(37, 42), const Symbol("flif"), [37, 42], []);
-    testInvocationMirror(
-        super.flif(x: 42), const Symbol("flif"), [], [const Symbol("x"), 42]);
-    testInvocationMirror(super.flif(37, x: 42), const Symbol("flif"), [37],
-        [const Symbol("x"), 42]);
-    testInvocationMirror(() {
-      super.flif = 42;
-      return last;
-    }(), const Symbol("flif="), [42]);
-
-    testInvocationMirror(
-        super.flaf(37, 42), const Symbol("flaf"), [37, 42], []);
-    testInvocationMirror(
-        super.flaf(x: 42), const Symbol("flaf"), [], [const Symbol("x"), 42]);
-    testInvocationMirror(super.flaf(37, x: 42), const Symbol("flaf"), [37],
-        [const Symbol("x"), 42]);
-    testInvocationMirror(() {
-      super.flaf = 42;
-      return last;
-    }(), const Symbol("flaf="), [42]);
-
-    testInvocationMirror(
-        super.flof(37, 42), const Symbol("flof"), [37, 42], []);
-    testInvocationMirror(
-        super.flof(x: 42), const Symbol("flof"), [], [const Symbol("x"), 42]);
-    testInvocationMirror(super.flof(37, y: 42), const Symbol("flof"), [37],
-        [const Symbol("y"), 42]);
-    testInvocationMirror(() {
-      super.flof = 42;
-      return last;
-    }(), const Symbol("flof="), [42]);
-
-    // Reading works.
-    Expect.isTrue(super.flif is Function);
-    Expect.isTrue(super.flaf is Function);
-    Expect.isTrue(super.flof is Function);
-
-    // Writing to read-only fields.
-    testInvocationMirror(() {
-      super.wut = 42;
-      return last;
-    }(), const Symbol("wut="), [42]);
-    testInvocationMirror(() {
-      super.plif = 42;
-      return last;
-    }(), const Symbol("plif="), [42]);
-    testInvocationMirror(() {
-      super.plaf = 42;
-      return last;
-    }(), const Symbol("plaf="), [42]);
-
-    // Calling noSuchMethod itself, badly.
-    testInvocationMirror(
-        super.noSuchMethod(), const Symbol("noSuchMethod"), [], []);
-    testInvocationMirror(
-        super.noSuchMethod(37, 42), const Symbol("noSuchMethod"), [37, 42], []);
-    testInvocationMirror(super.noSuchMethod(37, x: 42),
-        const Symbol("noSuchMethod"), [37], [const Symbol("x"), 42]);
-    testInvocationMirror(super.noSuchMethod(x: 42),
-        const Symbol("noSuchMethod"), [], [const Symbol("x"), 42]);
-
-    // Closurizing a method means that calling it badly will not hit the
-    // original receivers noSuchMethod, only the one inherited from Object
-    // by the closure object.
-    Expect.throws(() {
-      var x = super.flif;
-      x(37, 42);
-    }, (e) => e is NoSuchMethodError);
-  }
-}
-
-// Test the NoSuchMethodError thrown by different incorrect calls.
-testNoSuchMethodErrors() {
-  test(Function block) {
-    Expect.throws(block, (e) => e is NoSuchMethodError);
-  }
-
-  var n = new N();
-  var o = new Object();
-  test(() => o.bar);
-  test(() => o.bar = 42);
-  test(() => o.bar());
-  test(() => o + 2);
-  test(() => -o);
-  test(() => o[0]);
-  test(() => o[0] = 42);
-  test(() => o());
-  test(() => o.toString = 42);
-  test(() => o.toString(42));
-  test(() => o.toString(x: 37));
-  test(() => o.hashCode = 42);
-  test(() => o.hashCode()); // Thrown by int.noSuchMethod.
-  test(() => (n.flif)()); // Extracted method has no noSuchMethod.
-}
-
-main() {
-  testInvocationMirrors();
-  testNoSuchMethodErrors();
-  new M().testSuperCalls();
-}
diff --git a/tests/language/is_function_test.dart b/tests/language/is_function_test.dart
deleted file mode 100644
index 24e3a8b..0000000
--- a/tests/language/is_function_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// 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";
-
-var staticClosure;
-staticMethod() => 42;
-
-class B {
-  var instanceClosure;
-  var nullField;
-  instanceMethod() => 43;
-}
-
-checkUntyped(closure) {
-  Expect.isTrue(closure is Function);
-}
-
-checkTyped(int closure()) {
-  Expect.isTrue(closure is Function);
-}
-
-checkTypedNull(int closure()) {
-  Expect.isFalse(closure is Function);
-}
-
-checkUntypedNull(closure) {
-  Expect.isFalse(closure is Function);
-}
-
-main() {
-  staticClosure = () => 44;
-  B b = new B();
-  b.instanceClosure = () => 45;
-
-  closureStatement() => 46;
-  var closureExpression = () => 47;
-
-  checkUntyped(staticClosure);
-  checkTyped(staticClosure);
-
-  checkUntyped(staticMethod);
-  checkTyped(staticMethod);
-
-  checkUntyped(b.instanceClosure);
-  checkTyped(b.instanceClosure);
-
-  checkUntyped(b.instanceMethod);
-  checkTyped(b.instanceMethod);
-
-  checkUntyped(closureStatement);
-  checkTyped(closureStatement);
-
-  checkUntyped(closureExpression);
-  checkTyped(closureExpression);
-
-  checkTypedNull(b.nullField);
-  checkUntypedNull(b.nullField);
-}
diff --git a/tests/language/is_interfaces2_test.dart b/tests/language/is_interfaces2_test.dart
deleted file mode 100644
index bc68d95..0000000
--- a/tests/language/is_interfaces2_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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";
-
-class A {}
-
-class B extends A {}
-
-class C extends B {}
-
-class D implements C {}
-
-int inscrutable(int x) => (x == 0) ? 0 : (x | inscrutable(x & (x - 1)));
-
-main() {
-  var things = [new A(), new B(), new C(), new D()];
-
-  var a = things[inscrutable(0)];
-  Expect.isTrue(a is A);
-  Expect.isFalse(a is B);
-  Expect.isFalse(a is C);
-  Expect.isFalse(a is D);
-
-  var b = things[inscrutable(1)];
-  Expect.isTrue(b is A);
-  Expect.isTrue(b is B);
-  Expect.isFalse(b is C);
-  Expect.isFalse(b is D);
-
-  var c = things[inscrutable(2)];
-  Expect.isTrue(c is A);
-  Expect.isTrue(c is B);
-  Expect.isTrue(c is C);
-  Expect.isFalse(c is D);
-
-  var d = things[inscrutable(3)];
-  Expect.isTrue(d is A);
-  Expect.isTrue(d is B);
-  Expect.isTrue(d is C);
-  Expect.isTrue(d is D);
-}
diff --git a/tests/language/is_interfaces_test.dart b/tests/language/is_interfaces_test.dart
deleted file mode 100644
index a71319a..0000000
--- a/tests/language/is_interfaces_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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";
-
-class A {}
-
-class B extends A {}
-
-class C implements B {}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-main() {
-  var things = [new A(), new B(), new C()];
-
-  var a = things[inscrutable(0)];
-  Expect.isTrue(a is A);
-  Expect.isFalse(a is B);
-  Expect.isFalse(a is C);
-
-  var b = things[inscrutable(1)];
-  Expect.isTrue(b is A);
-  Expect.isTrue(b is B);
-  Expect.isFalse(b is C);
-
-  var c = things[inscrutable(2)];
-  Expect.isTrue(c is A);
-  Expect.isTrue(c is B);
-  Expect.isTrue(c is C);
-}
diff --git a/tests/language/is_malformed_type_test.dart b/tests/language/is_malformed_type_test.dart
deleted file mode 100644
index 7a5ea3f..0000000
--- a/tests/language/is_malformed_type_test.dart
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2014, 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.
-// Dart test program for the "is" and "as" operator with malformed type.
-
-import "package:expect/expect.dart";
-
-var evalCount = 0;
-testEval(x) {
-  evalCount++;
-  return x;
-}
-
-test99(e) {
-  // Test that a runtime error is thrown when the 'is' operator checks for a
-  // malformed type.
-  try {
-    if (e is Undefined) Expect.fail("unreachable"); //  //# 99: continued
-    Expect.fail("unreachable");
-  } catch (exc) {
-    Expect.isTrue(exc is TypeError);
-  }
-}
-
-test98(e) {
-  // Test that a runtime error is thrown when the 'as' operator checks for a
-  // malformed type.
-  try {
-    if (e as Undefined) Expect.fail("unreachable"); //  //# 98: continued
-    Expect.fail("unreachable");
-  } catch (exc) {
-    Expect.isTrue(exc is TypeError);
-  }
-}
-
-test97(e) {
-  try {
-    // Check that the remaining expression after the type test
-    // with malformed type is parsed, but not executed at runtime.
-    // Regression test for issue 16985.
-    evalCount = 0;
-    if (e is Undefined && testEval(e)) Expect.fail("unreachable"); //  //# 97: continued
-    Expect.fail("unreachable");
-  } catch (exc) {
-    Expect.isTrue(exc is TypeError);
-    Expect.equals(0, evalCount);
-  }
-}
-
-test96(e) {
-  try {
-    // Check that the remaining expression after the type test
-    // with malformed type is parsed, but not executed at runtime.
-    // Regression test for issue 16985.
-    evalCount = 0;
-    if (e as Undefined && testEval(e)) Expect.fail("unreachable"); //  //# 96: continued
-    Expect.fail("unreachable");
-  } catch (exc) {
-    Expect.isTrue(exc is TypeError);
-    Expect.equals(0, evalCount);
-  }
-}
-
-test95(e) {
-  // Check that the type-tested expression is evaluated before the
-  // runtime error is thrown.
-  try {
-    evalCount = 0;
-    if (testEval(e) is Undefined) Expect.fail("unreachable"); //  //# 95: continued
-    Expect.fail("unreachable");
-  } catch (exc) {
-    Expect.isTrue(exc is TypeError);
-    Expect.equals(1, evalCount);
-  }
-}
-
-test94(e) {
-  // Check that the type-tested expression is evaluated before the
-  // runtime error is thrown.
-  try {
-    evalCount = 0;
-    if (testEval(e) as Undefined) Expect.fail("unreachable"); // //# 94: continued
-    Expect.fail("unreachable");
-  } catch (exc) {
-    Expect.isTrue(exc is TypeError);
-    Expect.equals(1, evalCount);
-  }
-}
-
-main() {
-  test99("99 bottles"); //# 99: static type warning
-  test98("98 bottles"); //# 98: static type warning
-  test97("97 bottles"); //# 97: static type warning
-  test96("96 bottles"); //# 96: static type warning
-  test95("95 bottles"); //# 95: static type warning
-  test94("94 bottles"); //# 94: static type warning
-}
diff --git a/tests/language/is_nan_test.dart b/tests/language/is_nan_test.dart
deleted file mode 100644
index 7dcc805..0000000
--- a/tests/language/is_nan_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-class A {
-  bool get isNaN => false;
-}
-
-main() {
-  Expect.isTrue(foo(double.NAN));
-  Expect.isFalse(foo(new A()));
-  Expect.throws(() => foo('bar'), (e) => e is NoSuchMethodError);
-}
-
-foo(a) => a.isNaN;
diff --git a/tests/language/is_not_class1_negative_test.dart b/tests/language/is_not_class1_negative_test.dart
deleted file mode 100644
index 5fafbbd..0000000
--- a/tests/language/is_not_class1_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for catch that we expect a class after an 'is'.
-
-class A {
-  const A();
-}
-
-class IsNotClass1NegativeTest {
-  static testMain() {
-    var a = new A();
-
-    if (a is "A") {
-      return 0;
-    }
-    return 0;
-  }
-}
-
-main() {
-  IsNotClass1NegativeTest.testMain();
-}
diff --git a/tests/language/is_not_class2_test.dart b/tests/language/is_not_class2_test.dart
deleted file mode 100644
index f6d348d..0000000
--- a/tests/language/is_not_class2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test program for catch that we expect a class after an 'is'. 'aa' is a
-// malformed type and a type error should be thrown upon test.
-
-import 'package:expect/expect.dart';
-
-class A {
-  const A();
-}
-
-class IsNotClass2NegativeTest {
-  static testMain() {
-    var a = new A();
-    var aa = new A();
-
-    if (a is aa) {
-      // static warning
-      return 0;
-    }
-    return 0;
-  }
-}
-
-main() {
-  Expect.throws(IsNotClass2NegativeTest.testMain, (e) => e is TypeError);
-}
diff --git a/tests/language/is_not_class4_negative_test.dart b/tests/language/is_not_class4_negative_test.dart
deleted file mode 100644
index 84ef5ed1..0000000
--- a/tests/language/is_not_class4_negative_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to test that the parser emits an error when
-// two 'is' expressions follow each other.
-
-class A {
-  const A();
-}
-
-class IsNotClass4NegativeTest {
-  static testMain() {
-    var a = new A();
-
-    if (a is A is A) {
-      return 0;
-    }
-    return 0;
-  }
-}
-
-main() {
-  IsNotClass4NegativeTest.testMain();
-}
diff --git a/tests/language/is_object_test.dart b/tests/language/is_object_test.dart
deleted file mode 100644
index aa58b41..0000000
--- a/tests/language/is_object_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for the "is" type test operator.
-
-import "package:expect/expect.dart";
-
-testTryCatch(x) {
-  try {
-    throw x;
-    Expect.fail("Exception '$x' should've been thrown");
-  } on Object catch (obj) {
-    Expect.equals(obj, x);
-  }
-}
-
-main() {
-  var evalCount = 0;
-  testEval(x) {
-    evalCount++;
-    return x;
-  }
-
-  // Test that types that match JS primitive types compare correctly to Object
-  var x = 1;
-  Expect.isTrue(x is Object);
-  x = 'hi';
-  Expect.isTrue(x is Object);
-  x = true;
-  Expect.isTrue(x is Object);
-  x = null;
-  Expect.isTrue(x is Object);
-  var y;
-  Expect.isTrue(y is Object);
-
-  // Verify that operand is evaluated
-  Expect.isTrue(testEval(123) is Object);
-  Expect.equals(1, evalCount);
-  Expect.isTrue(testEval('world') is Object);
-  Expect.equals(2, evalCount);
-  Expect.isTrue(testEval(false) is Object);
-  Expect.equals(3, evalCount);
-  Expect.isTrue(testEval(null) is Object);
-  Expect.equals(4, evalCount);
-
-  // Verify that these objects are catchable
-  testTryCatch(444);
-  testTryCatch('abc');
-  testTryCatch(true);
-}
diff --git a/tests/language/is_operator_clash_test.dart b/tests/language/is_operator_clash_test.dart
deleted file mode 100644
index 3cbe095..0000000
--- a/tests/language/is_operator_clash_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class A {}
-
-class $B extends A {}
-
-class C implements $B {
-  // Try to clash with dart2js's isCLASS field.
-  var isB = false;
-  var $isB = false;
-  var is$B = false;
-  var is$$B = false;
-  var $is$B = false;
-
-  var isA = false;
-  var $isA = false;
-  var is$A = false;
-  var is$$A = false;
-  var $is$A = false;
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-main() {
-  var things = [new A(), new $B(), new C()];
-
-  var a = things[inscrutable(0)];
-  Expect.isTrue(a is A);
-  Expect.isFalse(a is $B);
-  Expect.isFalse(a is C);
-
-  var b = things[inscrutable(1)];
-  Expect.isTrue(b is A);
-  Expect.isTrue(b is $B);
-  Expect.isFalse(b is C);
-
-  var c = things[inscrutable(2)];
-  Expect.isTrue(c is A);
-  Expect.isTrue(c is $B);
-  Expect.isTrue(c is C);
-}
diff --git a/tests/language/is_operator_test.dart b/tests/language/is_operator_test.dart
deleted file mode 100644
index a934dc1..0000000
--- a/tests/language/is_operator_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// 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.
-// Dart test program for the "is" type test operator.
-
-import "package:expect/expect.dart";
-
-abstract class I {}
-
-abstract class AI implements I {}
-
-class A implements AI {
-  const A();
-}
-
-class B implements I {
-  const B();
-}
-
-class C extends A {
-  const C() : super();
-}
-
-class IsOperatorTest {
-  static testMain() {
-    var a = new A();
-    var b = new B();
-    var c = new C();
-    var n = null;
-    Expect.equals(true, a is A);
-    Expect.equals(false, a is! A);
-    Expect.equals(true, b is B);
-    Expect.equals(false, b is! B);
-    Expect.equals(true, c is C);
-    Expect.equals(false, c is! C);
-    Expect.equals(true, c is A);
-    Expect.equals(false, c is! A);
-
-    Expect.equals(true, a is AI);
-    Expect.equals(false, a is! AI);
-    Expect.equals(true, a is I);
-    Expect.equals(false, a is! I);
-    Expect.equals(false, b is AI);
-    Expect.equals(true, b is! AI);
-    Expect.equals(true, b is I);
-    Expect.equals(false, b is! I);
-    Expect.equals(true, c is AI);
-    Expect.equals(false, c is! AI);
-    Expect.equals(true, c is I);
-    Expect.equals(false, c is! I);
-    Expect.equals(false, n is AI);
-    Expect.equals(true, n is! AI);
-    Expect.equals(false, n is I);
-    Expect.equals(true, n is! I);
-
-    Expect.equals(false, a is B);
-    Expect.equals(true, a is! B);
-    Expect.equals(false, a is C);
-    Expect.equals(true, a is! C);
-    Expect.equals(false, b is A);
-    Expect.equals(true, b is! A);
-    Expect.equals(false, b is C);
-    Expect.equals(true, b is! C);
-    Expect.equals(false, c is B);
-    Expect.equals(true, c is! B);
-    Expect.equals(false, n is A);
-    Expect.equals(true, n is! A);
-
-    Expect.equals(false, null is A);
-    Expect.equals(false, null is B);
-    Expect.equals(false, null is C);
-    Expect.equals(false, null is AI);
-    Expect.equals(false, null is I);
-
-    Expect.equals(true, null is! A);
-    Expect.equals(true, null is! B);
-    Expect.equals(true, null is! C);
-    Expect.equals(true, null is! AI);
-    Expect.equals(true, null is! I);
-  }
-}
-
-main() {
-  IsOperatorTest.testMain();
-}
diff --git a/tests/language/isnot_malformed_type_test.dart b/tests/language/isnot_malformed_type_test.dart
deleted file mode 100644
index 147ffe6..0000000
--- a/tests/language/isnot_malformed_type_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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';
-
-f(obj) {
-  // 'Baz' is not loaded, throws a type error on test.
-  return (obj is! Baz);
-}
-
-main() {
-  Expect.throws(() => f(null), (e) => e is TypeError);
-}
diff --git a/tests/language/issue10204_test.dart b/tests/language/issue10204_test.dart
deleted file mode 100644
index 1f1619e..0000000
--- a/tests/language/issue10204_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to miscompile
-// [A.visitInvokeDynamicMethod].
-
-import "package:expect/expect.dart";
-
-var a = 2;
-
-class Tupe {
-  const Tupe();
-  get instructionType => a == 2 ? this : new A();
-  refine(a, b) => '$a$b';
-}
-
-class Node {
-  final selector = null;
-  var inputs = {"a": const Tupe(), "b": const Tupe()};
-  bool isCallOnInterceptor = false;
-
-  getDartReceiver() {
-    return isCallOnInterceptor ? inputs["a"] : inputs["b"];
-  }
-}
-
-class A {
-  visitInvokeDynamicMethod(node) {
-    var receiverType = node.getDartReceiver().instructionType;
-    return receiverType.refine(node.selector, node.selector);
-  }
-}
-
-main() {
-  Expect.equals(
-      'nullnull', [new A()].last.visitInvokeDynamicMethod(new Node()));
-}
diff --git a/tests/language/issue10321_test.dart b/tests/language/issue10321_test.dart
deleted file mode 100644
index fb35dcd..0000000
--- a/tests/language/issue10321_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Regression test for dart2js that used to miscompile [A.foo].
-
-var global = 54;
-
-class A {
-  int a = 0;
-  int b = 42;
-  final int c = global;
-  foo() {
-    int start = a - 1;
-    a = 54;
-    if (b == 42) {
-      b = 32;
-    } else {
-      b = 42;
-    }
-    Expect.equals(-1, start);
-  }
-
-  bar() {
-    int start = a - c - 1;
-    a = 42;
-    if (b == 42) {
-      b = 32;
-    } else {
-      b = 42;
-    }
-    Expect.equals(-55, start);
-  }
-}
-
-main() {
-  new A().foo();
-  new A().bar();
-}
diff --git a/tests/language/issue10561_test.dart b/tests/language/issue10561_test.dart
deleted file mode 100644
index 16e0cca..0000000
--- a/tests/language/issue10561_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to miscompile classes
-// extending HashMap, because HashMap is patched.
-
-import "package:expect/expect.dart";
-
-import 'dart:collection';
-
-class Foo extends Expando {}
-
-main() {
-  Expect.isNull(new Foo()[new Object()]);
-}
diff --git a/tests/language/issue10581_test.dart b/tests/language/issue10581_test.dart
deleted file mode 100644
index 00fe0c1..0000000
--- a/tests/language/issue10581_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for https://code.google.com/p/dart/issues/detail?id=10581.
-
-import 'package:expect/expect.dart';
-
-abstract class AxesObject {
-  Update();
-}
-
-String result = '';
-
-class Point2DObject extends AxesObject {
-  Update() {
-    result += 'P';
-  }
-}
-
-class BestFitObject extends AxesObject {
-  Update() {
-    result += 'B';
-  }
-}
-
-class Foo {
-  AddAxesObject(type) {
-    AxesObject a = null;
-    switch (type) {
-      case 100:
-        a = new Point2DObject();
-        break;
-      case 200:
-        a = new BestFitObject();
-        break;
-    }
-    if (a != null) {
-      a.Update();
-    }
-  }
-
-  AddAxesObject2(type) {
-    AxesObject a = null;
-    if (type == 100) {
-      a = new Point2DObject();
-    } else if (type == 200) {
-      a = new BestFitObject();
-    }
-    if (a != null) {
-      a.Update();
-    }
-  }
-}
-
-main() {
-  var f = new Foo();
-  f.AddAxesObject(100);
-  f.AddAxesObject(200);
-  f.AddAxesObject2(100);
-  f.AddAxesObject2(200);
-  Expect.equals('PBPB', result);
-}
diff --git a/tests/language/issue10721_test.dart b/tests/language/issue10721_test.dart
deleted file mode 100644
index 4bad7a0..0000000
--- a/tests/language/issue10721_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void main() {
-  Expect.equals('', useParameterInClosure(1));
-  Expect.equals(43, updateParameterInClosure(1)());
-}
-
-String useParameterInClosure(arg1, {int arg2}) {
-  if (arg1 is Map) {
-    return arg1.keys.map((key) => arg1[key]).first;
-  } else {
-    return '';
-  }
-}
-
-Function updateParameterInClosure(arg1) {
-  if (arg1 is Map) {
-    return () => arg1 = 42;
-  } else {
-    return () => arg1 = arg1 + 42;
-  }
-}
diff --git a/tests/language/issue10747_test.dart b/tests/language/issue10747_test.dart
deleted file mode 100644
index 323a215..0000000
--- a/tests/language/issue10747_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class B<T> {}
-
-class A<T> {
-  var field;
-  A(this.field);
-  asTypeVariable() => field as T;
-  asBOfT() => field as B<T>;
-}
-
-main() {
-  Expect.equals(42, new A<int>(42).asTypeVariable());
-  Expect.throws(
-      () => new A<String>(42).asTypeVariable(), (e) => e is CastError);
-
-  var b = new B<int>();
-  Expect.equals(b, new A<int>(b).asBOfT());
-  Expect.throws(() => new A<String>(b).asBOfT(), (e) => e is CastError);
-}
diff --git a/tests/language/issue10783_test.dart b/tests/language/issue10783_test.dart
deleted file mode 100644
index f7503ef..0000000
--- a/tests/language/issue10783_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class C {
-  foo(int y) {
-    return y;
-  }
-}
-
-main() {
-  for (var b in [
-    [false, 'pig']
-  ]) {
-    var c;
-    if (b[0]) c = new C();
-    Expect.throws(() => print(c.foo(b[1])), (e) => e is NoSuchMethodError);
-  }
-}
diff --git a/tests/language/issue11724_test.dart b/tests/language/issue11724_test.dart
deleted file mode 100644
index 146a6fe..0000000
--- a/tests/language/issue11724_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void main() {
-  Expect.throws(() => method(<int>[]), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/issue11793_test.dart b/tests/language/issue11793_test.dart
deleted file mode 100644
index 0cd00b4..0000000
--- a/tests/language/issue11793_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js, whose value range analysis phase
-// assumed loop phis that were integer necessarily had integer inputs.
-
-var array = const [0, 0.5];
-var globalB = array[0];
-var otherArray = [5];
-
-main() {
-  var b = globalB;
-  var a = b + 1;
-  if (otherArray[0] == 0) {
-    // Use a non-existing selector to prevent adding a bailout check.
-    a.noSuch();
-    a = otherArray[0];
-  }
-
-  // Use [a] to make sure it does not become dead code.
-  var f = array[a];
-
-  // Add an integer check on [b].
-  var d = array[b];
-
-  // This instruction will be GVN to the same value as [a].
-  // By being GVN'ed, [e] will have its type changed from integer
-  // to number: because of the int type check on [b], we know
-  // [: b + 1 :] returns an integer.
-  // However we update this instruction with the previous [: b + 1 :]
-  // that did not have that information and therefore only knows that
-  // the instruction returns a number.
-  var e = b + 1;
-
-  // Introduce a loop phi that has [e] as header input, and [e++] as
-  // update input. By having [e] as input, dart2js will compute an
-  // integer type for the phi. However, after GVN, [e] becomes a
-  // number.
-
-  while (otherArray[0] == 0) {
-    // Use [e] as an index for an array so that the value range
-    // analysis tries to compute a range for [e].
-    otherArray[e] = d + f;
-    e++;
-  }
-}
diff --git a/tests/language/issue12023_test.dart b/tests/language/issue12023_test.dart
deleted file mode 100644
index 5e1a936b..0000000
--- a/tests/language/issue12023_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void main() {
-  List test = ["f", "5", "s", "6"];
-  int length = test.length;
-  for (int i = 0; i < length;) {
-    var action = test[i++];
-    switch (action) {
-      case "f":
-      case "s":
-        action = test[i - 1];
-        int value = int.parse(test[i++]);
-        if (action == "f") {
-          Expect.equals(5, value);
-        } else {
-          Expect.equals(6, value);
-        }
-        break;
-    }
-  }
-}
diff --git a/tests/language/issue12284_test.dart b/tests/language/issue12284_test.dart
deleted file mode 100644
index 62d7b88..0000000
--- a/tests/language/issue12284_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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";
-import "compiler_annotations.dart";
-
-class A {
-  int field;
-
-  @DontInline()
-  A(param) {
-    // Currently defeat inlining by using a closure.
-    var bar = () => 42;
-    field = param + 42;
-  }
-  A.redirect() : this('foo');
-}
-
-main() {
-  Expect.equals(42 + 42, new A(42).field);
-  Expect.throws(
-      () => new A.redirect(), (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/language/issue12288_test.dart b/tests/language/issue12288_test.dart
deleted file mode 100644
index bbe6b92..0000000
--- a/tests/language/issue12288_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-
-main() {
-  var parent = new Element(null);
-  var child = new Element(parent);
-  var result = child.path0.length;
-  if (result != 2) {
-    throw "Expected 2, but child.path0.length was $result";
-  }
-}
-
-class Element {
-  final Element parent;
-
-  Element(this.parent);
-
-  List<Element> get path0 {
-    if (parent == null) {
-      return <Element>[this];
-    } else {
-      var list = parent.path0;
-      list.add(this);
-      return list;
-    }
-  }
-}
diff --git a/tests/language/issue12336_test.dart b/tests/language/issue12336_test.dart
deleted file mode 100644
index 8e61d10..0000000
--- a/tests/language/issue12336_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to generate wrong code for
-// [foo].
-
-import "package:expect/expect.dart";
-import "compiler_annotations.dart";
-
-main() {
-  var result = foo(1, 2);
-  Expect.equals(1, result[0]);
-  Expect.equals(2, result[1]);
-
-  result = foo([], 2);
-  Expect.equals(0, result[0]);
-  Expect.listEquals([], result[1]);
-}
-
-@DontInline()
-foo(a, b) {
-  () => 42;
-  if (a is List) {
-    var saved = a as List;
-    // By having two HTypeKnown SSA instructions for [a], dart2js was
-    // confused when updating the phis at exit of this block.
-    a = a.length;
-    b = saved;
-  }
-  return [a, b];
-}
diff --git a/tests/language/issue13179_test.dart b/tests/language/issue13179_test.dart
deleted file mode 100644
index 0439cea..0000000
--- a/tests/language/issue13179_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2015, 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";
-
-int count = 0;
-
-void f([void f([x]) = f]) {
-  count++;
-  if (f != null) {
-    f(null);
-  }
-}
-
-main() {
-  f();
-  Expect.equals(2, count);
-}
diff --git a/tests/language/issue13474_test.dart b/tests/language/issue13474_test.dart
deleted file mode 100644
index 61eddf9..0000000
--- a/tests/language/issue13474_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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=--enable_type_checks
-
-import "package:expect/expect.dart";
-
-main() {
-  var a;
-  Expect.throws(() {
-    true && (a = 5);
-  }, (error) => error is TypeError);
-  Expect.throws(() {
-    (a = 5) && true;
-  }, (error) => error is TypeError);
-  Expect.throws(() {
-    false || (a = 5);
-  }, (error) => error is TypeError);
-  Expect.throws(() {
-    (a = 5) || false;
-  }, (error) => error is TypeError);
-  Expect.throws(() {
-    (a = 5) || true;
-  }, (error) => error is TypeError);
-
-  // No exceptions thrown.
-  false && (a = 5);
-  true || (a = 5);
-}
diff --git a/tests/language/issue13556_test.dart b/tests/language/issue13556_test.dart
deleted file mode 100644
index b9388d6..0000000
--- a/tests/language/issue13556_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to crash when resolving the
-// @B() annotation.
-
-class A {
-  final a;
-  const A({this.a});
-}
-
-class B extends A {
-  const B();
-}
-
-@B()
-main() {}
diff --git a/tests/language/issue1363_lib.dart b/tests/language/issue1363_lib.dart
deleted file mode 100644
index fdbbba6..0000000
--- a/tests/language/issue1363_lib.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-library Issue1363;
-
-class C {}
-
-class Cup<T> {
-  var foo;
-  Cup(this.foo);
-
-  T getContents() => foo;
-}
diff --git a/tests/language/issue1363_test.dart b/tests/language/issue1363_test.dart
deleted file mode 100644
index f6efc93..0000000
--- a/tests/language/issue1363_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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.
-// VMOptions=--enable_type_checks
-
-library Issue1363Test.dart;
-
-import 'issue1363_lib.dart' as lib;
-
-main() {
-  new C().test();
-}
-
-class C {
-  lib.Cup<lib.C> libCup;
-  lib.Cup<C> myCup;
-
-  C();
-
-  test() {
-    myCup = new lib.Cup<C>(new C());
-    libCup = new lib.Cup<lib.C>(new lib.C());
-
-    C contents = myCup.getContents(); // expect no warning or error
-    bool hasThrown = false;
-    try {
-      contents = libCup.getContents(); //# static type warning
-    } on TypeError catch (e) {
-      hasThrown = true;
-    }
-  }
-}
diff --git a/tests/language/issue13673_test.dart b/tests/language/issue13673_test.dart
deleted file mode 100644
index 303b48b..0000000
--- a/tests/language/issue13673_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Bar {
-  Type field;
-  Bar(this.field);
-  foo() => field;
-}
-
-var topLevel = new Bar(String).foo();
-
-main() {
-  Expect.isTrue(topLevel is Type);
-}
diff --git a/tests/language/issue14014_2_test.dart b/tests/language/issue14014_2_test.dart
deleted file mode 100644
index 5363619..0000000
--- a/tests/language/issue14014_2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a type variable used in a parameter of a constructor that
-// has a closure in its initializer list does not lead to a crash in
-// dart2js.
-
-class A<T> {
-  A(f);
-}
-
-class B<T> extends A<T> {
-  B({void f(T foo)})
-      : super((T a) {
-          f = (a) => 42;
-        });
-}
-
-main() {
-  var t = new B<int>();
-}
diff --git a/tests/language/issue14014_3_test.dart b/tests/language/issue14014_3_test.dart
deleted file mode 100644
index 58957fb..0000000
--- a/tests/language/issue14014_3_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that an is check on a function type involving type parameters
-// does not crash dart2js, when the is test is in the initializer list
-// of a constructor.
-
-class A<T> {
-  var f;
-  A(this.f);
-}
-
-typedef foo<T>(T a);
-
-class B<T> extends A<T> {
-  B({void f(T foo)}) : super(() => f is foo<T>);
-}
-
-main() {
-  var t = new B<int>(f: (int a) => 42);
-  if (!t.f()) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/issue14014_test.dart b/tests/language/issue14014_test.dart
deleted file mode 100644
index c887a33..0000000
--- a/tests/language/issue14014_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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<T> {
-  A(f);
-}
-
-class B<T> extends A<T> {
-  B() : super((T param) => 42);
-}
-
-main() {
-  var t = new B<int>();
-}
diff --git a/tests/language/issue14242_test.dart b/tests/language/issue14242_test.dart
deleted file mode 100644
index 118a8e0..0000000
--- a/tests/language/issue14242_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to crash on type literals
-// used in a cascade send.
-
-class A {
-  var bar;
-  var foo = {};
-}
-
-main() {
-  var a = new A();
-  a
-    ..foo[Object] = 54
-    ..bar = 42;
-  if (a.foo.keys.first is! Type) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/issue15606_test.dart b/tests/language/issue15606_test.dart
deleted file mode 100644
index a9840ca..0000000
--- a/tests/language/issue15606_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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 Foo<T> {}
-
-var a = [new Object(), 42];
-
-main() {
-  while (false) {
-    // Comply to inlining heuristics.
-    // Use an unresolved prefix.
-    var foo = Unresolved.foo( //# 01: static type warning
-    // Make dart2js generate a call to setRuntimeTypeInfo.
-      new Foo<int>(), //# 01: continued
-    // Use a one-shot interceptor.
-      a[0].toString()); //# 01: continued
-
-    // Do an is test on `Foo` to require setRuntimeTypeInfo.
-    print(foo is Foo<int>); //# 01: continued
-  }
-}
diff --git a/tests/language/issue15702_test.dart b/tests/language/issue15702_test.dart
deleted file mode 100644
index 072182d..0000000
--- a/tests/language/issue15702_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-main() {
-  Amount stake = new Amount(2.5);
-  if ((stake.value * 10).toInt() != 25) {
-    throw 'Test failed';
-  }
-}
-
-class Amount {
-  num value;
-  Amount(this.value);
-}
diff --git a/tests/language/issue15720_test.dart b/tests/language/issue15720_test.dart
deleted file mode 100644
index 638fc98..0000000
--- a/tests/language/issue15720_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Regression test for dart2js, issue 15720.
-
-class B {}
-
-confuse(x) {
-  if (new DateTime.now() == 42) return confuse(x);
-  return x;
-}
-
-main() {
-  Set<B> set = new Set<B>.from([]);
-
-  confuse(499);
-  confuse(set);
-
-  // Dart2js used to reuse a variable name, overwriting the `set` variable with
-  // one of the B's.
-  var t1 = new B();
-  var t2 = new B();
-  var t3 = new B();
-  var t4 = new B();
-
-  set.addAll([t1, t2, t3, t4]);
-  confuse(7);
-
-  set.addAll([t1, t2, t3, t4]);
-}
diff --git a/tests/language/issue1578_negative_test.dart b/tests/language/issue1578_negative_test.dart
deleted file mode 100644
index ff3d0d7..0000000
--- a/tests/language/issue1578_negative_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-// Regression test for issue 1578.
-
-]~<)$
diff --git a/tests/language/issue18628_1_test.dart b/tests/language/issue18628_1_test.dart
deleted file mode 100644
index 3856b3e..0000000
--- a/tests/language/issue18628_1_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// This test checks for a regression found in Dart Editor: the
-// analyzer was treating [Type] as more specific than any type
-// variable (generic parameter).
-//
-// https://code.google.com/p/dart/issues/detail?id=18628
-
-class C<T> {
-  // This line is supposed to cause the warning; the other commented
-  // line just doesn't make sense without this line.
-  T t = int; //# 01: static type warning
-}
-
-main() {
-  C<Type> c = new C<Type>();
-  print(c.t); //# 01: static type warning
-}
diff --git a/tests/language/issue18628_2_test.dart b/tests/language/issue18628_2_test.dart
deleted file mode 100644
index 3232ea0..0000000
--- a/tests/language/issue18628_2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// This test checks for a regression found in Dart Editor: the
-// analyzer was treating [Type] as more specific than any type
-// variable (generic parameter).
-//
-// https://code.google.com/p/dart/issues/detail?id=18628
-
-class X<T extends Type> {}
-
-// This line is supposed to cause the warning; the other lines are
-// marked because they don't make sense when [Y] is not defined.
-class Y<U> extends X<U> {} //# 01: static type warning
-
-main() {
-  X<Type> x = new X<Type>(); //# 01: static type warning
-  Y<Type> y = new Y<Type>(); //# 01: static type warning
-}
diff --git a/tests/language/issue20476_test.dart b/tests/language/issue20476_test.dart
deleted file mode 100644
index f0202be..0000000
--- a/tests/language/issue20476_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2014, 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';
-
-foo() {
-  try {
-    try {
-      return 1;
-    } catch (e1) {} finally {
-      return 3;
-    }
-  } catch (e2) {} finally {
-    return 5;
-  }
-}
-
-main() {
-  Expect.equals(5, foo());
-}
diff --git a/tests/language/issue21079_test.dart b/tests/language/issue21079_test.dart
deleted file mode 100644
index c376df0..0000000
--- a/tests/language/issue21079_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test case for http://dartbug.com/21079
-import 'dart:mirrors';
-import 'dart:isolate';
-import "package:expect/expect.dart";
-
-void main() {
-  Expect.isTrue(reflectClass(MyException).superclass.reflectedType ==
-      IsolateSpawnException);
-
-  Expect.isTrue(reflectClass(IsolateSpawnException).reflectedType ==
-      IsolateSpawnException);
-}
-
-class MyException extends IsolateSpawnException {
-  MyException() : super("Test") {}
-}
diff --git a/tests/language/issue21159_test.dart b/tests/language/issue21159_test.dart
deleted file mode 100644
index af75c9a..0000000
--- a/tests/language/issue21159_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class C {
-  get call => this;
-}
-
-// Recurs outside the try-block to avoid disabling inlining.
-foo() {
-  var c = new C();
-  c();
-}
-
-main() {
-  bool exceptionCaught = false;
-  try {
-    foo();
-  } on StackOverflowError catch (e) {
-    exceptionCaught = true;
-  }
-  Expect.equals(true, exceptionCaught);
-}
diff --git a/tests/language/issue21957_test.dart b/tests/language/issue21957_test.dart
deleted file mode 100644
index d2920a4..0000000
--- a/tests/language/issue21957_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Check slow path for PotentialUnboxedStore.
-// VMOptions=--optimization_counter_threshold=-1
-
-main() {
-  for (int i = 0; i < 1000000; i++) {
-    new A();
-  }
-}
-
-class A {
-  var a = 1.0;
-}
diff --git a/tests/language/issue22800_test.dart b/tests/language/issue22800_test.dart
deleted file mode 100644
index 36b6978..0000000
--- a/tests/language/issue22800_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Check proper exception handler finalization, even for unreachable handlers.
-
-void main() {
-  try {
-    print("Starting here");
-    throw 0;
-    try {} catch (e) {}
-  } catch (e) {
-    print("Caught in here: $e");
-  }
-  try {} catch (e) {}
-}
diff --git a/tests/language/issue23244_test.dart b/tests/language/issue23244_test.dart
deleted file mode 100644
index f8a3f32..0000000
--- a/tests/language/issue23244_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test case for http://dartbug.com/23244
-import 'dart:async';
-import 'dart:isolate';
-import 'package:async_helper/async_helper.dart';
-
-enum Fisk {
-  torsk,
-}
-
-isolate1(SendPort port) {
-  port.send(Fisk.torsk);
-}
-
-isolate2(SendPort port) {
-  port.send([Fisk.torsk]);
-}
-
-isolate3(SendPort port) {
-  var x = new Map<int, Fisk>();
-  x[0] = Fisk.torsk;
-  x[1] = Fisk.torsk;
-  port.send(x);
-}
-
-main() async {
-  var port = new ReceivePort();
-  asyncStart();
-  await Isolate.spawn(isolate1, port.sendPort);
-  Completer completer1 = new Completer();
-  port.listen((message) {
-    print("Received $message");
-    port.close();
-    expectTorsk(message);
-    completer1.complete();
-  });
-  await completer1.future;
-  Completer completer2 = new Completer();
-  port = new ReceivePort();
-  await Isolate.spawn(isolate2, port.sendPort);
-  port.listen((message) {
-    print("Received $message");
-    port.close();
-    expectTorsk(message[0]);
-    completer2.complete();
-  });
-  await completer2.future;
-  port = new ReceivePort();
-  await Isolate.spawn(isolate3, port.sendPort);
-  port.listen((message) {
-    print("Received $message");
-    port.close();
-    expectTorsk(message[0]);
-    expectTorsk(message[1]);
-    asyncEnd();
-  });
-}
-
-expectTorsk(Fisk fisk) {
-  if (fisk != Fisk.torsk) {
-    throw "$fisk isn't a ${Fisk.torsk}";
-  }
-}
diff --git a/tests/language/issue3806_test.dart b/tests/language/issue3806_test.dart
deleted file mode 100644
index cd5c7b2..0000000
--- a/tests/language/issue3806_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// Dart2js produced a statement in an expression context for this test.
-
-class A {
-  var foo = "foo";
-  bar(x) {
-    if (foo == 3) return;
-    var t = x;
-    if (x == 0) t = foo;
-    foo = t;
-  }
-
-  toto(x) => x;
-  titi() {
-    foo = 0;
-    for (int i = 0; i < 3; i++) bar(i);
-  }
-}
-
-main() => new A().titi();
diff --git a/tests/language/issue4157508_test.dart b/tests/language/issue4157508_test.dart
deleted file mode 100644
index af08c9d..0000000
--- a/tests/language/issue4157508_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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 Issue4157508Test {
-  Issue4157508Test(var v) {
-    var d = new DateTime.fromMillisecondsSinceEpoch(v, isUtc: true);
-  }
-
-  static void testMain() {
-    var d = new Issue4157508Test(0);
-  }
-}
-
-main() {
-  Issue4157508Test.testMain();
-}
diff --git a/tests/language/issue4295001_test.dart b/tests/language/issue4295001_test.dart
deleted file mode 100644
index 5e42348..0000000
--- a/tests/language/issue4295001_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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 Issue4295001Test {
-  String foo;
-  Issue4295001Test(String s) : this.foo = s {
-    var f = () => s;
-  }
-
-  static void testMain() {
-    var d = new Issue4295001Test("Hello");
-  }
-}
-
-main() {
-  Issue4295001Test.testMain();
-}
diff --git a/tests/language/issue4515170_test.dart b/tests/language/issue4515170_test.dart
deleted file mode 100644
index b187204..0000000
--- a/tests/language/issue4515170_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class Issue4515170Test {
-  static const VAL = 3;
-  static int defaultVal([int a = VAL]) {
-    return a;
-  }
-}
-
-main() {
-  Expect.equals(3, Issue4515170Test.defaultVal());
-}
diff --git a/tests/language/issue7513_test.dart b/tests/language/issue7513_test.dart
deleted file mode 100644
index 5df021b..0000000
--- a/tests/language/issue7513_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Regression test for issue 7513.
-
-foo(a, b) {
-  b[0] = 0.1;
-  return a * b[0];
-}
-
-main() {
-  var a = 0.1;
-  var b = [0.1];
-  for (var i = 0; i < 20; i++) {
-    foo(a, b);
-  }
-  Expect.approxEquals(0.01, foo(a, b));
-}
diff --git a/tests/language/issue7525_test.dart b/tests/language/issue7525_test.dart
deleted file mode 100644
index c7fe377..0000000
--- a/tests/language/issue7525_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Regression test for issue 7525.
-
-foo() {
-  var ol = <int>[2];
-  (ol as List<int>)[0];
-  int x = (ol as List<int>)[0];
-  return x;
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    foo();
-  }
-  Expect.equals(2, foo());
-}
diff --git a/tests/language/issue9602_other.dart b/tests/language/issue9602_other.dart
deleted file mode 100644
index a189b77..0000000
--- a/tests/language/issue9602_other.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test case for http://dartbug.com/9602
-library issue9602_other;
-
-class M {
-  var _field;
-}
diff --git a/tests/language/issue9602_test.dart b/tests/language/issue9602_test.dart
deleted file mode 100644
index 93d988b..0000000
--- a/tests/language/issue9602_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test case for http://dartbug.com/9602
-library issue9602;
-
-import 'issue9602_other.dart';
-
-class C extends Object with M {}
-
-main() {
-  new C();
-}
diff --git a/tests/language/issue9664_test.dart b/tests/language/issue9664_test.dart
deleted file mode 100644
index b8b3c2d..0000000
--- a/tests/language/issue9664_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for http://dartbug.com/9664
-
-main() {
-  while (true ? true : true) break;
-}
diff --git a/tests/language/issue9687_test.dart b/tests/language/issue9687_test.dart
deleted file mode 100644
index 5b08b79..0000000
--- a/tests/language/issue9687_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js code generation in checked mode. See
-// last part of https://code.google.com/p/dart/issues/detail?id=9687.
-
-import "package:expect/expect.dart";
-
-class A {
-  final finalField;
-  final otherFinalField;
-
-  A()
-      : finalField = 42,
-        otherFinalField = 54;
-
-  expectFinalField(arg1, arg2) {
-    Expect.equals(arg1, arg2);
-    Expect.equals(finalField, arg1);
-  }
-
-  expectOtherFinalField(_, arg1, arg2) {
-    Expect.equals(arg1, arg2);
-    Expect.equals(otherFinalField, arg1);
-  }
-}
-
-var array = [new A()];
-
-main() {
-  // [untypedReceiver] is made so that the compiler does not know
-  // what it is.
-  var untypedReceiver = array[0];
-
-  // [typedReceiver] is made so that the compiler knows what it is.
-  var typedReceiver = new A();
-
-  // Using [: finalField :] twice will make the compiler want to
-  // allocate one temporary for it.
-  var a = untypedReceiver.expectFinalField(
-      typedReceiver.finalField, typedReceiver.finalField);
-
-  // Having a check instruction in between two allocations of
-  // temporary variables used to trigger a bug in the compiler.
-  int b = a;
-
-  // Using [: otherFinalField :] twice will make the compiler want to
-  // allocate one temporary for it. The compiler used to assign the
-  // same temporary for [: otherFinalField :] and [: finalField :].
-  untypedReceiver.expectOtherFinalField(
-      b, typedReceiver.otherFinalField, typedReceiver.otherFinalField);
-}
diff --git a/tests/language/issue9939_test.dart b/tests/language/issue9939_test.dart
deleted file mode 100644
index 1a3c705..0000000
--- a/tests/language/issue9939_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// dart2js was generating incorrect code for the [A] constructor, by
-// using a temporary variable for two instructions, even though they
-// are both live at the same time.
-
-import "package:expect/expect.dart";
-
-var globalVar = [1, 2];
-
-class A {
-  final field1;
-  final field2;
-  var field3;
-
-  A(this.field1, this.field2) {
-    bool entered = false;
-    // We use [field1] twice to ensure it will have a temporary.
-    for (var a in field1) {
-      try {
-        entered = true;
-        // We use [field2] twice to ensure it will have a temporary.
-        print(field2);
-        print(field2);
-      } catch (e) {
-        // Because the catch is aborting, the SSA graph we used to
-        // generate thought that the whole try/catch was aborting, and
-        // therefore it could not reach the code after the loop.
-        throw e;
-      }
-    }
-    Expect.isTrue(entered);
-    // dart2js used to overwrite the temporary for [field1] with
-    // [field2].
-    Expect.equals(globalVar, field1);
-  }
-}
-
-main() {
-  new A(globalVar, null);
-}
diff --git a/tests/language/issue9949_test.dart b/tests/language/issue9949_test.dart
deleted file mode 100644
index 38ff6ed..0000000
--- a/tests/language/issue9949_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to crash in the presence of a
-// super constructor declared external.
-
-import "package:expect/expect.dart";
-import 'dart:collection';
-
-class Crash extends Expando<String> {
-  Crash() : super();
-}
-
-void main() {
-  Crash expando = new Crash();
-  Expect.isTrue(expando is Expando);
-}
diff --git a/tests/language/issue_1751477_lib1.dart b/tests/language/issue_1751477_lib1.dart
deleted file mode 100644
index 6ef5431..0000000
--- a/tests/language/issue_1751477_lib1.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib1;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib1_func() {}
diff --git a/tests/language/issue_1751477_lib11.dart b/tests/language/issue_1751477_lib11.dart
deleted file mode 100644
index dd5dad6..0000000
--- a/tests/language/issue_1751477_lib11.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib11;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib11_func() {}
diff --git a/tests/language/issue_1751477_lib2.dart b/tests/language/issue_1751477_lib2.dart
deleted file mode 100644
index 2185773..0000000
--- a/tests/language/issue_1751477_lib2.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib2;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib2_func() {}
diff --git a/tests/language/issue_1751477_lib21.dart b/tests/language/issue_1751477_lib21.dart
deleted file mode 100644
index 0bd1d2b..0000000
--- a/tests/language/issue_1751477_lib21.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib21;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib21_func() {}
diff --git a/tests/language/issue_1751477_lib3.dart b/tests/language/issue_1751477_lib3.dart
deleted file mode 100644
index 6674221..0000000
--- a/tests/language/issue_1751477_lib3.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib3;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib3_func() {}
diff --git a/tests/language/issue_1751477_lib31.dart b/tests/language/issue_1751477_lib31.dart
deleted file mode 100644
index c8d08b7..0000000
--- a/tests/language/issue_1751477_lib31.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib31;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib31_func() {}
diff --git a/tests/language/issue_1751477_lib4.dart b/tests/language/issue_1751477_lib4.dart
deleted file mode 100644
index 9076928..0000000
--- a/tests/language/issue_1751477_lib4.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib4;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib4_func() {}
diff --git a/tests/language/issue_1751477_lib41.dart b/tests/language/issue_1751477_lib41.dart
deleted file mode 100644
index e608297..0000000
--- a/tests/language/issue_1751477_lib41.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib41;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib41_func() {}
diff --git a/tests/language/issue_1751477_lib5.dart b/tests/language/issue_1751477_lib5.dart
deleted file mode 100644
index ab3cfe7..0000000
--- a/tests/language/issue_1751477_lib5.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib5;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib5_func() {}
diff --git a/tests/language/issue_1751477_lib51.dart b/tests/language/issue_1751477_lib51.dart
deleted file mode 100644
index b3a4e7b..0000000
--- a/tests/language/issue_1751477_lib51.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib51;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib51_func() {}
diff --git a/tests/language/issue_1751477_lib6.dart b/tests/language/issue_1751477_lib6.dart
deleted file mode 100644
index 0fe3928..0000000
--- a/tests/language/issue_1751477_lib6.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib6;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib6_func() {}
diff --git a/tests/language/issue_1751477_lib61.dart b/tests/language/issue_1751477_lib61.dart
deleted file mode 100644
index 2497f4d..0000000
--- a/tests/language/issue_1751477_lib61.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib61;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib61_func() {}
diff --git a/tests/language/issue_1751477_lib7.dart b/tests/language/issue_1751477_lib7.dart
deleted file mode 100644
index 4ebae76..0000000
--- a/tests/language/issue_1751477_lib7.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib7;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib7_func() {}
diff --git a/tests/language/issue_1751477_lib71.dart b/tests/language/issue_1751477_lib71.dart
deleted file mode 100644
index 4ac3ed0..0000000
--- a/tests/language/issue_1751477_lib71.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib71;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib71_func() {}
diff --git a/tests/language/issue_1751477_lib8.dart b/tests/language/issue_1751477_lib8.dart
deleted file mode 100644
index 4f59a5b..0000000
--- a/tests/language/issue_1751477_lib8.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib8;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib8_func() {}
diff --git a/tests/language/issue_1751477_lib81.dart b/tests/language/issue_1751477_lib81.dart
deleted file mode 100644
index c1ac589..0000000
--- a/tests/language/issue_1751477_lib81.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib81;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib91.dart';
-
-lib81_func() {}
diff --git a/tests/language/issue_1751477_lib9.dart b/tests/language/issue_1751477_lib9.dart
deleted file mode 100644
index 3dd8231..0000000
--- a/tests/language/issue_1751477_lib9.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib9;
-
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib1.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-import 'issue_1751477_lib91.dart';
-
-lib9_func() {}
diff --git a/tests/language/issue_1751477_lib91.dart b/tests/language/issue_1751477_lib91.dart
deleted file mode 100644
index 17e01b6..0000000
--- a/tests/language/issue_1751477_lib91.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 lib91;
-
-import 'issue_1751477_lib1.dart';
-import 'issue_1751477_lib2.dart';
-import 'issue_1751477_lib3.dart';
-import 'issue_1751477_lib4.dart';
-import 'issue_1751477_lib5.dart';
-import 'issue_1751477_lib6.dart';
-import 'issue_1751477_lib7.dart';
-import 'issue_1751477_lib8.dart';
-import 'issue_1751477_lib9.dart';
-
-import 'issue_1751477_lib11.dart';
-import 'issue_1751477_lib21.dart';
-import 'issue_1751477_lib31.dart';
-import 'issue_1751477_lib41.dart';
-import 'issue_1751477_lib51.dart';
-import 'issue_1751477_lib61.dart';
-import 'issue_1751477_lib71.dart';
-import 'issue_1751477_lib81.dart';
-
-lib91_func() {}
diff --git a/tests/language/issue_1751477_test.dart b/tests/language/issue_1751477_test.dart
deleted file mode 100644
index c821cb9..0000000
--- a/tests/language/issue_1751477_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, 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 'issue_1751477_lib1.dart' deferred as lib1;
-import 'issue_1751477_lib2.dart' deferred as lib2;
-import 'issue_1751477_lib3.dart' deferred as lib3;
-import 'issue_1751477_lib4.dart' deferred as lib4;
-import 'issue_1751477_lib5.dart' deferred as lib5;
-import 'issue_1751477_lib6.dart' deferred as lib6;
-import 'issue_1751477_lib7.dart' deferred as lib7;
-import 'issue_1751477_lib8.dart' deferred as lib8;
-import 'issue_1751477_lib9.dart' deferred as lib9;
-
-main() {
-  lib1.loadLibrary().then((_) {
-    lib2.loadLibrary().then((_) {
-      lib3.loadLibrary().then((_) {
-        lib4.loadLibrary().then((_) {
-          lib5.loadLibrary().then((_) {
-            lib6.loadLibrary().then((_) {
-              lib7.loadLibrary().then((_) {
-                lib8.loadLibrary().then((_) {
-                  lib9.loadLibrary().then((_) {});
-                });
-              });
-            });
-          });
-        });
-      });
-    });
-  });
-}
diff --git a/tests/language/issue_22780_test.dart b/tests/language/issue_22780_test.dart
deleted file mode 100644
index 34dabd6..0000000
--- a/tests/language/issue_22780_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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.
-
-main() {
-  f() => "Oh, the joy of ${f()}"; print(f()); //# 01: runtime error
-}
diff --git a/tests/language/issue_23914_test.dart b/tests/language/issue_23914_test.dart
deleted file mode 100644
index 072f912..0000000
--- a/tests/language/issue_23914_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2015, 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:collection';
-
-main() {
-  var a = new List.unmodifiable(new LinkedList());
-}
diff --git a/tests/language/issue_25671a_test.dart b/tests/language/issue_25671a_test.dart
deleted file mode 100644
index 3aa20e8..0000000
--- a/tests/language/issue_25671a_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod() { //                                   //# 01: static type warning
-    throw new Exception( //                             //# 01: continued
-        "Wrong noSuchMethod() should not be called"); //# 01: continued
-  } //                                                  //# 01: continued
-}
-
-class C extends A {
-  test() {
-    super.v = 1; //# 01: continued
-  }
-}
-
-main() {
-  C c = new C();
-  Expect.throws(() => c.test(), (e) => e is NoSuchMethodError); //# 01: continued
-}
diff --git a/tests/language/issue_25671b_test.dart b/tests/language/issue_25671b_test.dart
deleted file mode 100644
index 4f2feb9..0000000
--- a/tests/language/issue_25671b_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod() { //                                   //# 01: static type warning
-    throw new Exception( //                             //# 01: continued
-        "Wrong noSuchMethod() should not be called"); //# 01: continued
-  } //                                                  //# 01: continued
-}
-
-class C extends Object with A {
-  test() {
-    super.v = 1; //# 01: continued
-  }
-}
-
-main() {
-  C c = new C();
-  Expect.throws(() => c.test(), (e) => e is NoSuchMethodError); //# 01: continued
-}
diff --git a/tests/language/js_properties_test.dart b/tests/language/js_properties_test.dart
deleted file mode 100644
index b93a547..0000000
--- a/tests/language/js_properties_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-// Test that JavaScript properties on Object can still be classes in
-// Dart.
-
-import "package:expect/expect.dart";
-
-void main() {
-  Expect.equals(42, new __defineGetter__().hello());
-  Expect.equals(42, new __defineSetter__().hello());
-  Expect.equals(42, new __lookupGetter__().hello());
-  Expect.equals(42, new __lookupSetter__().hello());
-  Expect.equals(42, new constructor().hello());
-  Expect.equals(42, new hasOwnProperty().hello());
-  Expect.equals(42, new isPrototypeOf().hello());
-  Expect.equals(42, new propertyIsEnumerable().hello());
-  Expect.equals(42, new toLocaleString().hello());
-  Expect.equals(42, new toString().hello());
-  Expect.equals(42, new valueOf().hello());
-}
-
-class Hello {
-  int hello() => 42;
-}
-
-class __defineGetter__ extends Hello {}
-
-class __defineSetter__ extends Hello {}
-
-class __lookupGetter__ extends Hello {}
-
-class __lookupSetter__ extends Hello {}
-
-class constructor extends Hello {}
-
-class hasOwnProperty extends Hello {}
-
-class isPrototypeOf extends Hello {}
-
-class propertyIsEnumerable extends Hello {}
-
-class toLocaleString extends Hello {}
-
-class toString extends Hello {}
-
-class valueOf extends Hello {}
diff --git a/tests/language/keyword_type_expression_test.dart b/tests/language/keyword_type_expression_test.dart
deleted file mode 100644
index 5d981ef..0000000
--- a/tests/language/keyword_type_expression_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that a keyword can't be used as type.  Serves as regression test for
-// crashes in dart2js.
-
-in greeting = "fisk"; // //# 01: syntax error
-
-main(
-in greeting // //# 02: syntax error
-    ) {
-  in greeting = "fisk"; // //# 03: syntax error
-  print(greeting); // //# 01: continued
-}
diff --git a/tests/language/label2_negative_test.dart b/tests/language/label2_negative_test.dart
deleted file mode 100644
index ab9d256..0000000
--- a/tests/language/label2_negative_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to test check that we catch label errors.
-
-
-class Label2NegativeTest {
-  static testMain() {
-    if (true) {
-      break; // Illegal: not embedded in a loop.
-    }
-  }
-}
-
-
-main() {
-  Label2NegativeTest.testMain();
-}
diff --git a/tests/language/label3_negative_test.dart b/tests/language/label3_negative_test.dart
deleted file mode 100644
index 56482ee..0000000
--- a/tests/language/label3_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to test check that we catch label errors.
-
-
-class Label3NegativeTest {
-  static testMain() {
-    L: while (false) {
-      if (true) break L; // Ok
-    }
-    continue L; // Illegal: L is out of scope.
-  }
-}
-
-
-main() {
-  Label3NegativeTest.testMain();
-}
diff --git a/tests/language/label5_negative_test.dart b/tests/language/label5_negative_test.dart
deleted file mode 100644
index 520fbb44..0000000
--- a/tests/language/label5_negative_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to test check that we catch label errors.
-
-class Label5NegativeTest {
-  static testMain() {
-    var L = 33;
-    while (false) {
-      if (true) break L; // Illegal: L is not a label.
-    }
-  }
-}
-
-main() {
-  Label5NegativeTest.testMain();
-}
diff --git a/tests/language/label6_negative_test.dart b/tests/language/label6_negative_test.dart
deleted file mode 100644
index eee60ab2..0000000
--- a/tests/language/label6_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to test check that we catch label errors.
-
-class Label6NegativeTest {
-  static testMain() {
-    L:
-    while (false) {
-      break; //    ok;
-      break L; //  ok
-      void innerfunc() {
-        if (true) break L; // Illegal: jump target is outside of function
-      }
-
-      innerfunc();
-    }
-  }
-}
-
-main() {
-  Label6NegativeTest.testMain();
-}
diff --git a/tests/language/label8_negative_test.dart b/tests/language/label8_negative_test.dart
deleted file mode 100644
index ff35321..0000000
--- a/tests/language/label8_negative_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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.
-// Labels aren't allowed in front of { for switch stmt
-
-
-class Label8NegativeTest {
-  static errorMethod() {
-    int i;
-    // grammar doesn't currently allow label on block for switch stmt.
-    switch(i) L: {
-      case 111:
-        while (doAgain()) {
-          break L;
-      }
-      i++;
-    }
-  }
-  static testMain() {
-    Label8NegativeTest.errorMethod();
-  }
-}
-
-
-main() {
-  Label8NegativeTest.testMain();
-}
diff --git a/tests/language/label_test.dart b/tests/language/label_test.dart
deleted file mode 100644
index 3c7cd77..0000000
--- a/tests/language/label_test.dart
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to test check that we can parse labels.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int ticks;
-
-  // Helper function to prevent endless loops in case labels or
-  // break/continue is broken.
-  static doAgain() {
-    ++ticks;
-    if (ticks > 300) {
-      // obfuscating man's assert(false)
-      Expect.equals(true, false);
-    }
-    return true;
-  }
-
-  static test1() {
-    var i = 1;
-    while (doAgain()) {
-      if (i > 0) break;
-      return 0;
-    }
-    return 111;
-  }
-
-  static test2() {
-    // Make sure we break out to default label.
-    var i = 1;
-    L:
-    while (doAgain()) {
-      // unused label
-      if (i > 0) break;
-      return 0;
-    }
-    return 111;
-  }
-
-  static test3() {
-    // Make sure we break out of outer loop.
-    var i = 1;
-    L:
-    while (doAgain()) {
-      while (doAgain()) {
-        if (i > 0) break L;
-        return 0;
-      }
-      return 1;
-    }
-    return 111;
-  }
-
-  static test4() {
-    // Make sure we break out of inner loop.
-    var i = 100;
-    L:
-    while (doAgain()) {
-      // unused label
-      while (doAgain()) {
-        if (i > 0) break;
-        return 0;
-      }
-      return 111;
-    }
-    return 1;
-  }
-
-  static test5() {
-    // Make sure we jump to loop condition.
-    var i = 10;
-    while (i > 0) {
-      i--;
-      if (true) continue; // without the if the following return is dead code.
-      return 0;
-    }
-    return 111;
-  }
-
-  static test6() {
-    // Make sure we jump to loop condition.
-    L:
-    for (int i = 10; i > 0; i--) {
-      // unreferenced label, should warn
-      if (true) continue; // without the if the following return is dead code.
-      return 0;
-    }
-    // Make sure this L does not conflict with previous L.
-    var k = 20;
-    L:
-    while (doAgain()) {
-      L0:
-      while (doAgain()) break L; // unreferenced label L0, should warn
-      return 1;
-    }
-    return 111;
-  }
-
-  static test7() {
-    // Just weird stuff.
-    var i = 10;
-    L:
-    do {
-      L:
-      while (doAgain()) {
-        if (true) break L; // without the if the following line is dead code.
-        continue L;
-      }
-      i = 0;
-      continue L;
-    } while (i == 10 && doAgain());
-    return 111;
-  }
-
-  static test8() {
-    L:
-    while (false) {
-      var L = 33; // OK, shouldn't collide with label.
-      if (true) break L;
-    }
-    return 111;
-  }
-
-  static test9() {
-    var i = 111;
-    L1:
-    if (i == 0) {
-      // unreferenced label, should warn
-      return 0;
-    }
-
-    L2:
-    while (i == 0) {
-      // unreferenced label, should warn
-      return 0;
-    }
-
-    L3: // useless label, should warn
-    return i;
-  }
-
-  // Labels should be allowed on block/if/for/switch/while/do stmts.
-  static test10() {
-    int i = 111;
-    // block
-    while (doAgain()) {
-      L:
-      {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-      }
-      break;
-    }
-    Expect.equals(111, i);
-
-    while (doAgain()) {
-      L:
-      if (doAgain()) {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-      }
-      break;
-    }
-    Expect.equals(111, i);
-
-    while (doAgain()) {
-      L:
-      for (; doAgain();) {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-      }
-      break;
-    }
-    Expect.equals(111, i);
-
-    L:
-    for (i in [111]) {
-      while (doAgain()) {
-        break L;
-      }
-      i--;
-      break;
-    }
-    Expect.equals(111, i);
-
-    L:
-    for (var j in [111]) {
-      while (doAgain()) {
-        break L;
-      }
-      i--;
-      break;
-    }
-    Expect.equals(111, i);
-
-    while (doAgain()) {
-      L:
-      switch (i) {
-        case 111:
-          while (doAgain()) {
-            break L;
-          }
-        default:
-          i--;
-      }
-      break;
-    }
-    Expect.equals(111, i);
-
-    while (doAgain()) {
-      L:
-      do {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-      } while (doAgain());
-      break;
-    }
-    Expect.equals(111, i);
-
-    while (doAgain()) {
-      L:
-      try {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-      } finally {}
-      break;
-    }
-    Expect.equals(111, i);
-
-    return i;
-  }
-
-  static test11() {
-    // Kind of odd, but is valid and shouldn't be flagged as useless either.
-    L:
-    break L;
-    return 111;
-  }
-
-  static test12() {
-    int i = 111;
-
-    // label the inner block on compound stmts
-    if (true)
-      L:
-      {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-      }
-    Expect.equals(111, i);
-
-    // loop will execute each time, but won't execute code below the break
-    var forCount = 0;
-    for (forCount = 0; forCount < 2; forCount++)
-      L:
-      {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-        break;
-      }
-    Expect.equals(111, i);
-    Expect.equals(forCount, 2);
-
-    for (i in [111])
-      L:
-      {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-        break;
-      }
-    Expect.equals(111, i);
-
-    for (var j in [111])
-      L:
-      {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-        break;
-      }
-    Expect.equals(111, i);
-
-    if (false) {} else
-      L:
-      {
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-      }
-    Expect.equals(111, i);
-
-    int whileCount = 0;
-    while (whileCount < 2)
-      L:
-      {
-        whileCount++;
-        while (doAgain()) {
-          break L;
-        }
-        i--;
-        break;
-      }
-    Expect.equals(111, i);
-    Expect.equals(2, whileCount);
-
-    return i;
-  }
-}
-
-class LabelTest {
-  static testMain() {
-    Helper.ticks = 0;
-    Expect.equals(111, Helper.test1());
-    Expect.equals(111, Helper.test2());
-    Expect.equals(111, Helper.test3());
-    Expect.equals(111, Helper.test4());
-    Expect.equals(111, Helper.test5());
-    Expect.equals(111, Helper.test6());
-    Expect.equals(111, Helper.test7());
-    Expect.equals(111, Helper.test8());
-    Expect.equals(111, Helper.test9());
-    Expect.equals(111, Helper.test10());
-    Expect.equals(111, Helper.test11());
-    Expect.equals(111, Helper.test12());
-  }
-}
-
-main() {
-  LabelTest.testMain();
-}
diff --git a/tests/language/language.status b/tests/language/language.status
deleted file mode 100644
index 586ed90..0000000
--- a/tests/language/language.status
+++ /dev/null
@@ -1,7 +0,0 @@
-# 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.
-# This directory contains tests that are intended to show the
-# current state of the language.
-
-*: SkipByDesign # Deprecating Dart1 tests.
diff --git a/tests/language/language_analyzer2.status b/tests/language/language_analyzer2.status
deleted file mode 100644
index 0dd8e28..0000000
--- a/tests/language/language_analyzer2.status
+++ /dev/null
@@ -1,6 +0,0 @@
-# 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.
-
-[ $compiler == dart2analyzer ]
-*: Skip
diff --git a/tests/language/language_dart2js.status b/tests/language/language_dart2js.status
deleted file mode 100644
index a7b9138..0000000
--- a/tests/language/language_dart2js.status
+++ /dev/null
@@ -1,514 +0,0 @@
-# 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.
-
-[ $compiler != dart2analyzer ]
-switch_case_warn_test: Skip # Analyzer only, see language_analyzer2.status
-
-[ $compiler == dart2js ]
-arithmetic_test: CompileTimeError # Int larger than 64 bits
-async_await_test: RuntimeError # sync-async is on by default
-async_star_cancel_while_paused_test: RuntimeError
-asyncstar_throw_in_catch_test: RuntimeError # sync-async is on by default
-await_nonfuture_test: RuntimeError # sync-async is on by default
-await_not_started_immediately_test: RuntimeError # sync-async is on by default
-bad_override_test/03: MissingCompileTimeError
-bad_override_test/04: MissingCompileTimeError
-bad_override_test/05: MissingCompileTimeError
-bit_operations_test/01: RuntimeError
-bit_operations_test/02: RuntimeError
-bit_operations_test/03: RuntimeError
-bit_operations_test/04: RuntimeError
-bit_operations_test/none: RuntimeError
-branch_canonicalization_test: RuntimeError
-call_function_apply_test: RuntimeError # Issue 23873
-call_nonexistent_constructor_test/01: RuntimeError
-call_type_literal_test/01: RuntimeError
-canonical_const2_test: RuntimeError
-check_member_static_test/02: MissingCompileTimeError
-class_cycle_test/02: MissingCompileTimeError
-class_cycle_test/03: MissingCompileTimeError
-class_literal_test/01: RuntimeError
-class_literal_test/03: RuntimeError
-class_literal_test/07: RuntimeError
-config_import_test: RuntimeError # not supported by fasta
-const_evaluation_test/01: RuntimeError
-const_instance_field_test/01: MissingCompileTimeError
-const_map2_test/00: MissingCompileTimeError
-const_map3_test/00: MissingCompileTimeError
-const_switch2_test/01: MissingCompileTimeError
-const_switch_test/02: RuntimeError
-const_switch_test/04: RuntimeError
-constructor2_test: RuntimeError
-constructor3_test: RuntimeError
-constructor5_test: RuntimeError
-constructor6_test: RuntimeError
-constructor_call_as_function_test/01: MissingRuntimeError
-constructor_named_arguments_test/none: RuntimeError
-deferred_constraints_constants_test/none: RuntimeError
-deferred_constraints_constants_test/reference_after_load: RuntimeError
-deferred_inheritance_constraints_test/extends: MissingCompileTimeError
-deferred_inheritance_constraints_test/implements: MissingCompileTimeError
-deferred_inheritance_constraints_test/mixin: MissingCompileTimeError
-deferred_load_library_wrong_args_test/01: MissingRuntimeError
-deferred_not_loaded_check_test: RuntimeError
-deferred_redirecting_factory_test: RuntimeError
-deopt_inlined_function_lazy_test: CompileTimeError # Int larger than 64 bits.
-deopt_smi_op_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-double_int_to_string_test: RuntimeError
-duplicate_export_negative_test: Fail
-duplicate_implements_test/01: MissingCompileTimeError
-duplicate_implements_test/02: MissingCompileTimeError
-duplicate_implements_test/03: MissingCompileTimeError
-duplicate_implements_test/04: MissingCompileTimeError
-dynamic_prefix_core_test/01: RuntimeError
-dynamic_prefix_core_test/none: RuntimeError
-enum_mirror_test: RuntimeError
-example_constructor_test: RuntimeError
-expect_test: RuntimeError
-external_test/10: MissingRuntimeError
-external_test/13: MissingRuntimeError
-external_test/20: MissingRuntimeError
-factory_redirection_test/07: MissingCompileTimeError
-fauxverride_test/03: MissingCompileTimeError
-fauxverride_test/05: MissingCompileTimeError
-field_increment_bailout_test: RuntimeError
-field_initialization_order_test: RuntimeError
-field_override3_test/00: MissingCompileTimeError
-field_override3_test/01: MissingCompileTimeError
-field_override3_test/02: MissingCompileTimeError
-field_override3_test/03: MissingCompileTimeError
-field_override4_test/02: MissingCompileTimeError
-final_attempt_reinitialization_test/01: MissingCompileTimeError
-final_attempt_reinitialization_test/02: MissingCompileTimeError
-final_field_initialization_order_test: RuntimeError
-full_stacktrace1_test: Pass, RuntimeError # Issue 12698
-full_stacktrace2_test: Pass, RuntimeError # Issue 12698
-full_stacktrace3_test: Pass, RuntimeError # Issue 12698
-generic_methods_type_expression_test/01: RuntimeError
-generic_methods_type_expression_test/03: RuntimeError
-generic_methods_type_expression_test/none: RuntimeError
-getter_override2_test/02: MissingCompileTimeError
-getter_override_test/00: MissingCompileTimeError
-getter_override_test/01: MissingCompileTimeError
-getter_override_test/02: MissingCompileTimeError
-guess_cid_test: CompileTimeError # Int larger than 64 bits
-identical_closure2_test: RuntimeError
-if_null_assignment_behavior_test/14: RuntimeError
-infinity_test: RuntimeError
-instance_creation_in_function_annotation_test: RuntimeError
-int2_test: CompileTimeError # Int larger than 64 bits
-int_round_test: CompileTimeError # Int larger than 64 bits
-integer_division_by_zero_test: RuntimeError
-internal_library_test/02: Crash # type 'DillLibraryBuilder' is not a subtype of type 'SourceLibraryBuilder<KernelTypeBuilder, Library>' of 'value' where
-invocation_mirror2_test: RuntimeError # mirrors not supported
-invocation_mirror_empty_arguments_test: RuntimeError # mirrors not supported
-invocation_mirror_invoke_on2_test: RuntimeError # mirrors not supported
-invocation_mirror_invoke_on_test: RuntimeError # mirrors not supported
-invocation_mirror_test: RuntimeError # mirrors not supported
-issue21079_test: RuntimeError
-issue23244_test: RuntimeError # 23244
-left_shift_test: RuntimeError
-library_env_test/has_mirror_support: RuntimeError, OK
-library_env_test/has_no_html_support: RuntimeError, OK
-list_literal4_test: RuntimeError
-list_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-main_not_a_function_test/01: CompileTimeError
-main_test/03: MissingRuntimeError # dart:isolate not supported
-many_overridden_no_such_method_test: RuntimeError
-method_override5_test: RuntimeError
-method_override7_test/00: MissingCompileTimeError
-method_override7_test/01: MissingCompileTimeError
-method_override7_test/02: MissingCompileTimeError
-method_override8_test/00: MissingCompileTimeError
-method_override8_test/01: MissingCompileTimeError
-mint_arithmetic_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-mint_arithmetic_test: RuntimeError
-mint_compares_test: CompileTimeError # Int larger than 64 bits
-mixin_forwarding_constructor4_test/01: MissingCompileTimeError
-mixin_forwarding_constructor4_test/02: MissingCompileTimeError
-mixin_forwarding_constructor4_test/03: MissingCompileTimeError
-mixin_illegal_super_use_test/01: MissingCompileTimeError
-mixin_illegal_super_use_test/02: MissingCompileTimeError
-mixin_illegal_super_use_test/03: MissingCompileTimeError
-mixin_illegal_super_use_test/04: MissingCompileTimeError
-mixin_illegal_super_use_test/05: MissingCompileTimeError
-mixin_illegal_super_use_test/06: MissingCompileTimeError
-mixin_illegal_super_use_test/07: MissingCompileTimeError
-mixin_illegal_super_use_test/08: MissingCompileTimeError
-mixin_illegal_super_use_test/09: 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_of_mixin_test/01: CompileTimeError
-mixin_of_mixin_test/02: CompileTimeError
-mixin_of_mixin_test/03: CompileTimeError
-mixin_of_mixin_test/04: CompileTimeError
-mixin_of_mixin_test/05: CompileTimeError
-mixin_of_mixin_test/06: CompileTimeError
-mixin_of_mixin_test/07: CompileTimeError
-mixin_of_mixin_test/08: CompileTimeError
-mixin_of_mixin_test/09: CompileTimeError
-mixin_of_mixin_test/10: CompileTimeError
-mixin_of_mixin_test/11: CompileTimeError
-mixin_of_mixin_test/12: CompileTimeError
-mixin_of_mixin_test/13: CompileTimeError
-mixin_of_mixin_test/14: CompileTimeError
-mixin_of_mixin_test/15: CompileTimeError
-mixin_of_mixin_test/16: CompileTimeError
-mixin_of_mixin_test/17: CompileTimeError
-mixin_of_mixin_test/18: CompileTimeError
-mixin_of_mixin_test/19: CompileTimeError
-mixin_of_mixin_test/20: CompileTimeError
-mixin_of_mixin_test/21: CompileTimeError
-mixin_of_mixin_test/22: CompileTimeError
-mixin_of_mixin_test/none: CompileTimeError
-mixin_super_2_test: CompileTimeError
-mixin_super_bound2_test/01: CompileTimeError
-mixin_super_bound2_test/none: CompileTimeError
-mixin_super_constructor_named_test/01: MissingCompileTimeError
-mixin_super_constructor_positionals_test/01: MissingCompileTimeError
-mixin_super_test: CompileTimeError
-mixin_super_use_test: CompileTimeError
-mixin_superclass_test: CompileTimeError
-mixin_supertype_subclass2_test/01: CompileTimeError
-mixin_supertype_subclass2_test/02: CompileTimeError
-mixin_supertype_subclass2_test/03: CompileTimeError
-mixin_supertype_subclass2_test/04: CompileTimeError
-mixin_supertype_subclass2_test/05: CompileTimeError
-mixin_supertype_subclass2_test/none: CompileTimeError
-mixin_supertype_subclass3_test/01: CompileTimeError
-mixin_supertype_subclass3_test/02: CompileTimeError
-mixin_supertype_subclass3_test/03: CompileTimeError
-mixin_supertype_subclass3_test/04: CompileTimeError
-mixin_supertype_subclass3_test/05: CompileTimeError
-mixin_supertype_subclass3_test/none: CompileTimeError
-mixin_supertype_subclass4_test/01: CompileTimeError
-mixin_supertype_subclass4_test/02: CompileTimeError
-mixin_supertype_subclass4_test/03: CompileTimeError
-mixin_supertype_subclass4_test/04: CompileTimeError
-mixin_supertype_subclass4_test/05: CompileTimeError
-mixin_supertype_subclass4_test/none: CompileTimeError
-mixin_supertype_subclass_test/01: CompileTimeError
-mixin_supertype_subclass_test/02: CompileTimeError
-mixin_supertype_subclass_test/03: CompileTimeError
-mixin_supertype_subclass_test/04: CompileTimeError
-mixin_supertype_subclass_test/05: CompileTimeError
-mixin_supertype_subclass_test/none: CompileTimeError
-modulo_test: RuntimeError
-named_constructor_test/01: MissingRuntimeError
-named_parameters_default_eq_test/02: MissingCompileTimeError
-nan_identical_test: RuntimeError
-no_main_test/01: CompileTimeError
-no_such_method_test: RuntimeError
-null_test/none: RuntimeError
-number_identity2_test: RuntimeError
-number_identity_test: CompileTimeError # Int larger than 64 bits
-numbers_test: RuntimeError
-overridden_no_such_method_test: RuntimeError
-override_field_method1_negative_test: Fail
-override_field_method2_negative_test: Fail
-override_field_method4_negative_test: Fail
-override_field_method5_negative_test: Fail
-override_field_test/01: MissingCompileTimeError
-override_inheritance_mixed_test/01: MissingCompileTimeError
-override_inheritance_mixed_test/02: MissingCompileTimeError
-override_inheritance_mixed_test/03: MissingCompileTimeError
-override_inheritance_mixed_test/04: MissingCompileTimeError
-override_method_with_field_test/01: MissingCompileTimeError
-private_super_constructor_test/01: MissingCompileTimeError
-redirecting_constructor_initializer_test: RuntimeError
-redirecting_factory_default_values_test/01: MissingCompileTimeError
-redirecting_factory_default_values_test/02: MissingCompileTimeError
-redirecting_factory_reflection_test: RuntimeError
-regress_13462_1_test: RuntimeError
-regress_13494_test: RuntimeError
-regress_17382_test: RuntimeError
-regress_18535_test: RuntimeError
-regress_20394_test/01: MissingCompileTimeError
-regress_22936_test/01: RuntimeError
-regress_24283_test: RuntimeError
-regress_27572_test: RuntimeError
-regress_27617_test/1: Crash # Assertion failure: Unexpected constructor j:constructor(Foo._) in ConstructorDataImpl._getConstructorConstant
-regress_28217_test/01: MissingCompileTimeError
-regress_28217_test/none: MissingCompileTimeError
-regress_28255_test: RuntimeError
-setter_override_test/00: MissingCompileTimeError
-setter_override_test/03: MissingCompileTimeError
-stacktrace_demangle_ctors_test: RuntimeError # Issue 12698
-stacktrace_rethrow_error_test/none: RuntimeError
-stacktrace_rethrow_error_test/withtraceparameter: RuntimeError
-stacktrace_rethrow_nonerror_test: RuntimeError
-static_getter_no_setter1_test/01: RuntimeError
-static_getter_no_setter2_test/01: RuntimeError
-static_getter_no_setter3_test/01: RuntimeError
-super_call4_test: RuntimeError
-super_getter_setter_test: RuntimeError
-super_test: RuntimeError
-switch_bad_case_test/01: MissingCompileTimeError
-switch_bad_case_test/02: MissingCompileTimeError
-switch_case_test/00: MissingCompileTimeError
-switch_case_test/01: MissingCompileTimeError
-switch_case_test/02: MissingCompileTimeError
-syntax_test/none: CompileTimeError
-top_level_getter_no_setter1_test/01: RuntimeError
-top_level_getter_no_setter2_test/01: RuntimeError
-truncdiv_test: RuntimeError
-type_literal_prefix_call_test/00: RuntimeError
-type_variable_conflict2_test/02: MissingCompileTimeError
-vm/*: Skip # Issue 12699
-
-[ $arch == ia32 && $compiler == dart2js && $runtime == d8 ]
-new_expression2_negative_test: Pass, Crash # Flaky, issue 31131
-
-[ $builder_tag == win7 && $compiler == dart2js ]
-deep_nesting2_negative_test: Crash
-illegal_declaration_test/01: Crash
-issue1578_negative_test: Crash
-regress_23051_test/01: Crash
-
-[ $compiler == dart2js && $runtime == chrome && $system == macos ]
-await_future_test: Pass, Timeout # Issue 26735
-
-[ $compiler == dart2js && $runtime == chromeOnAndroid ]
-override_field_test/02: Pass, Slow # TODO(kasperl): Please triage.
-
-[ $compiler == dart2js && $runtime == d8 ]
-int_round_to_double_test: RuntimeError # Large integer literal. Not valid in dart2.
-regress_23408_test: RuntimeError
-
-[ $compiler == dart2js && $runtime == ff ]
-round_test: Pass, Fail, OK # Fixed in ff 35. Common JavaScript engine Math.round bug.
-
-[ $compiler == dart2js && $runtime != ff ]
-stacktrace_test: RuntimeError # Issue 12698
-
-[ $compiler == dart2js && $runtime == none ]
-*: Fail, Pass # TODO(ahe): Triage these tests.
-
-[ $compiler == dart2js && $runtime == safari ]
-call_nonexistent_constructor_test/02: RuntimeError
-named_parameters2_test: RuntimeError
-named_parameters3_test: RuntimeError
-named_parameters4_test: RuntimeError
-round_test: Fail, OK # Common JavaScript engine Math.round bug.
-
-[ $compiler == dart2js && $system == windows ]
-deep_nesting2_negative_test: Pass, Crash
-illegal_declaration_test/01: Pass, Crash
-issue1578_negative_test: Pass, Crash
-regress_23051_test/01: Pass, Crash
-
-[ $compiler == dart2js && $browser ]
-config_import_test: RuntimeError # Test flag is not passed to the compiler.
-library_env_test/has_io_support: RuntimeError, OK # dart2js doesn't support io when using '--categories=Client'.
-
-[ $compiler == dart2js && !$browser ]
-config_import_corelib_test: RuntimeError, OK # all dart:* are supported when using '--categories=all'.
-library_env_test/has_no_io_support: RuntimeError, OK # dart2js supports io when using '--categories=all'.
-
-[ $compiler == dart2js && $checked ]
-arithmetic_test: CompileTimeError
-assertion_initializer_const_function_test/01: RuntimeError
-assertion_initializer_test: RuntimeError
-assign_static_type_test/01: Fail
-assign_static_type_test/02: MissingCompileTimeError
-async_return_types_test/nestedFuture: Fail # Issue 26429
-async_return_types_test/wrongTypeParameter: Fail # Issue 26429
-closure_type_test/01: RuntimeError # Issue 12745
-closure_type_test/none: RuntimeError # Issue 12745
-compile_time_constant_checked2_test/01: MissingCompileTimeError
-compile_time_constant_checked2_test/02: MissingCompileTimeError
-compile_time_constant_checked2_test/03: MissingCompileTimeError
-compile_time_constant_checked2_test/04: MissingCompileTimeError
-compile_time_constant_checked2_test/05: MissingCompileTimeError
-compile_time_constant_checked2_test/06: MissingCompileTimeError
-compile_time_constant_checked3_test/01: MissingCompileTimeError
-compile_time_constant_checked3_test/02: MissingCompileTimeError
-compile_time_constant_checked3_test/03: MissingCompileTimeError
-compile_time_constant_checked3_test/04: MissingCompileTimeError
-compile_time_constant_checked3_test/05: MissingCompileTimeError
-compile_time_constant_checked3_test/06: MissingCompileTimeError
-compile_time_constant_checked4_test/01: MissingCompileTimeError
-compile_time_constant_checked4_test/02: MissingCompileTimeError
-compile_time_constant_checked4_test/03: MissingCompileTimeError
-compile_time_constant_checked5_test/03: MissingCompileTimeError
-compile_time_constant_checked5_test/04: MissingCompileTimeError
-compile_time_constant_checked5_test/08: MissingCompileTimeError
-compile_time_constant_checked5_test/09: MissingCompileTimeError
-compile_time_constant_checked5_test/13: MissingCompileTimeError
-compile_time_constant_checked5_test/14: MissingCompileTimeError
-compile_time_constant_checked5_test/18: MissingCompileTimeError
-compile_time_constant_checked5_test/19: MissingCompileTimeError
-compile_time_constant_checked_test/01: Fail
-compile_time_constant_checked_test/02: MissingCompileTimeError
-compile_time_constant_checked_test/03: Fail
-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/20: MissingCompileTimeError
-const_constructor2_test/22: MissingCompileTimeError
-const_constructor2_test/24: MissingCompileTimeError
-const_constructor3_test/02: MissingCompileTimeError
-const_constructor3_test/04: MissingCompileTimeError
-const_init2_test/02: MissingCompileTimeError
-deferred_constraints_constants_test/none: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred_constraints_constants_test/reference_after_load: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred_constraints_type_annotation_test/type_annotation1: Fail # Missing dynamic type error
-deferred_constraints_type_annotation_test/type_annotation_generic1: Fail # Missing dynamic type error
-deferred_constraints_type_annotation_test/type_annotation_generic4: Fail # Missing dynamic type error
-deopt_inlined_function_lazy_test: CompileTimeError
-factory_redirection_test/08: Fail
-factory_redirection_test/09: Fail
-factory_redirection_test/10: Fail
-factory_redirection_test/12: Fail
-factory_redirection_test/13: Fail
-factory_redirection_test/14: Fail
-generalized_void_syntax_test: RuntimeError
-generic_functions_test: RuntimeError
-generic_methods_test: RuntimeError
-guess_cid_test: CompileTimeError
-int2_test: CompileTimeError
-internal_library_test/02: Crash # NoSuchMethodError: Class 'DillLibraryBuilder' has no instance getter 'mixinApplicationClasses'.
-list_literal1_test/01: MissingCompileTimeError
-malbounded_instantiation_test/01: RuntimeError # Issue 12702
-malbounded_redirecting_factory2_test/02: Fail
-malbounded_redirecting_factory2_test/03: Fail
-malbounded_redirecting_factory2_test/04: Fail
-malbounded_type_cast2_test: RuntimeError # Issue 14121
-malbounded_type_cast_test: RuntimeError # Issue 14121
-malbounded_type_test2_test: RuntimeError # Issue 14121
-malbounded_type_test_test/03: Fail # Issue 14121
-malbounded_type_test_test/04: Fail # Issue 14121
-malformed2_test/00: RuntimeError
-malformed2_test/01: MissingCompileTimeError
-map_literal1_test/01: MissingCompileTimeError
-mint_compares_test: CompileTimeError
-number_identity_test: CompileTimeError
-redirecting_factory_infinite_steps_test/01: Fail
-redirecting_factory_malbounded_test/01: Fail
-regress_26133_test: RuntimeError # Issue 26429
-regress_29405_test: RuntimeError # Issue 29422
-stacktrace_demangle_ctors_test: RuntimeError
-stacktrace_test: RuntimeError
-super_call4_test: Crash # NoSuchMethodError: The getter 'thisLocal' was called on null.
-type_check_const_function_typedef2_test/00: MissingCompileTimeError
-type_parameter_test/01: Crash # Internal Error: Unexpected type variable in static context.
-type_parameter_test/02: Crash # Internal Error: Unexpected type variable in static context.
-type_parameter_test/03: Crash # Internal Error: Unexpected type variable in static context.
-type_parameter_test/04: Crash # Internal Error: Unexpected type variable in static context.
-type_parameter_test/05: Crash # Internal Error: Unexpected type variable in static context.
-type_parameter_test/06: Crash # Internal Error: Unexpected type variable in static context.
-type_parameter_test/none: Crash # Internal Error: Unexpected type variable in static context.
-type_variable_bounds2_test/01: RuntimeError # Issue 12702
-type_variable_bounds2_test/04: RuntimeError # Issue 12702
-type_variable_bounds3_test/00: Fail # Issue 12702
-type_variable_bounds_test/02: Fail # Issue 12702
-type_variable_scope_test/03: Crash # Internal Error: Unexpected type variable in static context.
-
-[ $compiler == dart2js && $checked && $host_checked ]
-generic_functions_test: Crash
-generic_methods_test: Crash
-
-[ $compiler == dart2js && !$checked ]
-assertion_initializer_const_function_error_test/01: MissingCompileTimeError
-assertion_test: RuntimeError
-generic_test: RuntimeError, OK
-issue13474_test: RuntimeError, OK
-map_literal4_test: RuntimeError, OK # Checked mode required.
-named_parameters_type_test/01: MissingRuntimeError, OK
-named_parameters_type_test/02: MissingRuntimeError, OK
-named_parameters_type_test/03: MissingRuntimeError, OK
-positional_parameters_type_test/01: MissingRuntimeError, OK
-positional_parameters_type_test/02: MissingRuntimeError, OK
-type_checks_in_factory_method_test: RuntimeError # Issue 12746
-
-[ $compiler == dart2js && !$checked && $enable_asserts ]
-bool_check_test: RuntimeError # Issue 29647
-
-[ $compiler == dart2js && !$checked && $minified ]
-f_bounded_quantification5_test: RuntimeError
-
-[ $compiler == dart2js && $fast_startup ]
-deferred_constraints_constants_test/none: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-deferred_constraints_constants_test/reference_after_load: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
-internal_library_test/02: Crash # NoSuchMethodError: Class 'DillLibraryBuilder' has no instance getter 'mixinApplicationClasses'.
-stacktrace_demangle_ctors_test: RuntimeError
-super_call4_test: Crash # NoSuchMethodError: The getter 'thisLocal' was called on null.
-
-[ $compiler == dart2js && $host_checked ]
-arithmetic_test: CompileTimeError
-async_test/setter1: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
-closure_self_reference_test: Crash # 'file:*/pkg/compiler/lib/src/ssa/nodes.dart': Failed assertion: line 641 pos 12: 'isClosed()': is not true.
-deopt_inlined_function_lazy_test: CompileTimeError
-generic_methods_type_expression_test/01: Crash # 'file:*/pkg/compiler/lib/src/ssa/builder_kernel.dart': Failed assertion: line 1728 pos 16: 'type is MethodTypeVariableType': is not true.
-generic_methods_type_expression_test/03: Crash # 'file:*/pkg/compiler/lib/src/ssa/builder_kernel.dart': Failed assertion: line 1728 pos 16: 'type is MethodTypeVariableType': is not true.
-generic_methods_type_expression_test/none: Crash # 'file:*/pkg/compiler/lib/src/ssa/builder_kernel.dart': Failed assertion: line 1728 pos 16: 'type is MethodTypeVariableType': is not true.
-guess_cid_test: CompileTimeError
-int2_test: CompileTimeError
-invocation_mirror_test: Crash # 'file:*/pkg/compiler/lib/src/ssa/builder_kernel.dart': Failed assertion: line 3014 pos 14: 'arguments.named.isEmpty': is not true.
-mint_compares_test: CompileTimeError
-number_identity_test: CompileTimeError
-sync_generator2_test/41: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
-sync_generator2_test/52: Crash # 'file:*/pkg/compiler/lib/src/kernel/element_map_impl.dart': Failed assertion: line 939 pos 18: 'asyncMarker == AsyncMarker.SYNC': is not true.
-
-[ $compiler == dart2js && $minified ]
-arithmetic_test: CompileTimeError
-cyclic_type2_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-cyclic_type_test/0*: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-deferred_load_library_wrong_args_test/01: Crash # NoSuchMethodError: The getter 'closureClassEntity' was called on null.
-deferred_redirecting_factory_test: Crash # NoSuchMethodError: The getter 'closureClassEntity' was called on null.
-deopt_inlined_function_lazy_test: CompileTimeError
-f_bounded_quantification4_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-generic_closure_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-guess_cid_test: CompileTimeError
-int2_test: CompileTimeError
-internal_library_test/02: Crash # NoSuchMethodError: Class 'DillLibraryBuilder' has no instance getter 'mixinApplicationClasses'.
-mint_compares_test: CompileTimeError
-mixin_generic_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin2_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin3_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin4_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin5_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin6_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin_bound2_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin_bound_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-mixin_mixin_type_arguments_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-number_identity_test: CompileTimeError
-regress_21795_test: RuntimeError, OK # Issue 31054: runtimeType.toString not preserved in minified code.
-stack_trace_test: RuntimeError, OK # Stack trace not preserved in minified code.
-stacktrace_rethrow_error_test/none: RuntimeError # Issue 12698
-stacktrace_rethrow_error_test/withtraceparameter: RuntimeError # Issue 12698
-stacktrace_rethrow_nonerror_test: RuntimeError # Issue 12698
-symbol_conflict_test: RuntimeError
diff --git a/tests/language/language_kernel.status b/tests/language/language_kernel.status
deleted file mode 100644
index 3999cf2..0000000
--- a/tests/language/language_kernel.status
+++ /dev/null
@@ -1,223 +0,0 @@
-# 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.
-
-[ $compiler == fasta ]
-bad_constructor_test/04: MissingCompileTimeError
-bad_constructor_test/06: MissingCompileTimeError
-function_type_parameter2_negative_test: Fail
-function_type_parameter_negative_test: Fail
-prefix5_negative_test: Fail
-
-[ $fasta ]
-assertion_initializer_const_error2_test.dart: CompileTimeError # super initializer not last
-assertion_initializer_test.dart: CompileTimeError # super initializer not last
-bad_constructor_test/04: MissingCompileTimeError
-bad_constructor_test/06: MissingCompileTimeError
-bad_override_test/03: MissingCompileTimeError
-bad_override_test/04: MissingCompileTimeError
-bad_override_test/05: MissingCompileTimeError
-bit_operations_test/01: CompileTimeError
-bit_operations_test/02: CompileTimeError
-bit_operations_test/03: CompileTimeError
-bit_operations_test/04: CompileTimeError
-bit_operations_test/none: CompileTimeError
-canonical_const3_test: CompileTimeError # super initializer not last
-check_member_static_test/02: MissingCompileTimeError
-class_cycle_test/02: MissingCompileTimeError
-class_cycle_test/03: MissingCompileTimeError
-closure_in_initializer_test: CompileTimeError # super initializer not last
-config_import_test: Crash
-const_instance_field_test/01: MissingCompileTimeError
-const_map2_test/00: MissingCompileTimeError
-const_map3_test/00: MissingCompileTimeError
-const_switch2_test/01: MissingCompileTimeError
-constructor2_test: CompileTimeError # super initializer not last
-constructor3_test: CompileTimeError # super initializer not last
-constructor5_test: CompileTimeError # super initializer not last
-constructor6_test: CompileTimeError # super initializer not last
-constructor_initializer_test/none: CompileTimeError # super initializer not last
-constructor_test: CompileTimeError # super initializer not last
-constructor_with_mixin_test: CompileTimeError # super initializer not last
-deferred_inheritance_constraints_test/extends: MissingCompileTimeError
-deferred_inheritance_constraints_test/implements: MissingCompileTimeError
-deferred_inheritance_constraints_test/mixin: MissingCompileTimeError
-duplicate_export_negative_test: Fail
-duplicate_implements_test/01: MissingCompileTimeError
-duplicate_implements_test/02: MissingCompileTimeError
-duplicate_implements_test/03: MissingCompileTimeError
-duplicate_implements_test/04: MissingCompileTimeError
-example_constructor_test: CompileTimeError # super initializer not last
-factory_redirection_test/07: MissingCompileTimeError
-fauxverride_test/03: MissingCompileTimeError
-fauxverride_test/05: MissingCompileTimeError
-field_initialization_order_test: CompileTimeError # super initializer not last
-field_override3_test/00: MissingCompileTimeError
-field_override3_test/01: MissingCompileTimeError
-field_override3_test/02: MissingCompileTimeError
-field_override3_test/03: MissingCompileTimeError
-field_override4_test/02: MissingCompileTimeError
-final_attempt_reinitialization_test/01: MissingCompileTimeError
-final_attempt_reinitialization_test/02: MissingCompileTimeError
-final_field_initialization_order_test: CompileTimeError # super initializer not last
-function_test: CompileTimeError # super initializer not last
-getter_override2_test/02: MissingCompileTimeError
-getter_override_test/00: MissingCompileTimeError
-getter_override_test/01: MissingCompileTimeError
-getter_override_test/02: MissingCompileTimeError
-identical_closure2_test: CompileTimeError
-method_override7_test/00: MissingCompileTimeError
-method_override7_test/01: MissingCompileTimeError
-method_override7_test/02: MissingCompileTimeError
-method_override8_test/00: MissingCompileTimeError
-method_override8_test/01: MissingCompileTimeError
-mixin_forwarding_constructor4_test/01: MissingCompileTimeError
-mixin_forwarding_constructor4_test/02: MissingCompileTimeError
-mixin_forwarding_constructor4_test/03: MissingCompileTimeError
-mixin_illegal_super_use_test/01: MissingCompileTimeError
-mixin_illegal_super_use_test/02: MissingCompileTimeError
-mixin_illegal_super_use_test/03: MissingCompileTimeError
-mixin_illegal_super_use_test/04: MissingCompileTimeError
-mixin_illegal_super_use_test/05: MissingCompileTimeError
-mixin_illegal_super_use_test/06: MissingCompileTimeError
-mixin_illegal_super_use_test/07: MissingCompileTimeError
-mixin_illegal_super_use_test/08: MissingCompileTimeError
-mixin_illegal_super_use_test/09: 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_super_bound2_test/01: CompileTimeError
-mixin_super_bound2_test/none: CompileTimeError
-mixin_super_constructor_named_test/01: MissingCompileTimeError
-mixin_super_constructor_positionals_test/01: MissingCompileTimeError
-named_parameters_default_eq_test/02: MissingCompileTimeError
-naming_test: CompileTimeError # super initializer not last
-override_field_method1_negative_test: Fail
-override_field_method2_negative_test: Fail
-override_field_method4_negative_test: Fail
-override_field_method5_negative_test: Fail
-override_field_test/01: MissingCompileTimeError
-override_inheritance_mixed_test/01: MissingCompileTimeError
-override_inheritance_mixed_test/02: MissingCompileTimeError
-override_inheritance_mixed_test/03: MissingCompileTimeError
-override_inheritance_mixed_test/04: MissingCompileTimeError
-override_method_with_field_test/01: MissingCompileTimeError
-parameter_initializer_test.dart: CompileTimeError # super initializer not last
-private_super_constructor_test/01: MissingCompileTimeError
-private_test: CompileTimeError # super initializer not last
-redirecting_constructor_initializer_test: CompileTimeError # super initializer not last
-redirecting_factory_default_values_test/01: MissingCompileTimeError
-redirecting_factory_default_values_test/02: MissingCompileTimeError
-regress_20394_test/01: MissingCompileTimeError
-regress_22976_test/*: CompileTimeError # Issue 31935
-regress_27617_test/1: MissingCompileTimeError
-regress_28217_test/01: MissingCompileTimeError
-regress_28217_test/none: MissingCompileTimeError
-setter_override_test/00: MissingCompileTimeError
-setter_override_test/03: MissingCompileTimeError
-string_interpolate_test.dart: CompileTimeError # super initializer not last
-super_field_access_test: CompileTimeError # super initializer not last
-super_first_constructor_test: CompileTimeError # super initializer not last
-super_test: CompileTimeError # super initializer not last
-switch_bad_case_test/01: MissingCompileTimeError
-switch_bad_case_test/02: MissingCompileTimeError
-switch_case_test/00: MissingCompileTimeError
-switch_case_test/01: MissingCompileTimeError
-switch_case_test/02: MissingCompileTimeError
-syntax_test/none: CompileTimeError
-third_test: CompileTimeError # super initializer not last
-type_variable_conflict2_test/02: MissingCompileTimeError
-unbound_getter_test.dart: CompileTimeError # super initializer not last
-vm/debug_break_enabled_vm_test/01: CompileTimeError
-vm/debug_break_enabled_vm_test/none: CompileTimeError
-vm/regress_14903_test: CompileTimeError
-vm/regress_27201_test: CompileTimeError
-
-[ $compiler != dart2js && $fasta ]
-arithmetic_test: CompileTimeError
-assertion_initializer_const_function_error_test/01: MissingCompileTimeError
-assign_instance_method_negative_test: Fail
-closure_call_wrong_argument_count_negative_test: Fail
-compile_time_constant_c_test/02: MissingCompileTimeError
-const_conditional_test/08: MissingCompileTimeError
-const_constructor_nonconst_field_test/01: MissingCompileTimeError
-const_optional_args_negative_test: Fail
-const_syntax_test/05: MissingCompileTimeError
-const_syntax_test/08: MissingCompileTimeError
-const_syntax_test/10: MissingCompileTimeError
-constants_test/05: MissingCompileTimeError
-constructor3_negative_test: Fail
-constructor_call_wrong_argument_count_negative_test: Fail
-deopt_inlined_function_lazy_test: CompileTimeError
-duplicate_interface_negative_test: Fail
-export_ambiguous_main_negative_test: Fail
-field3a_negative_test: Fail
-field_method4_negative_test: Fail
-guess_cid_test: CompileTimeError
-import_combinators_negative_test: Fail
-instance_call_wrong_argument_count_negative_test: Fail
-instance_method2_negative_test: Fail
-instance_method_negative_test: Fail
-int2_test: CompileTimeError
-interface_static_non_final_fields_negative_test: Fail
-mint_compares_test: CompileTimeError
-multiline_newline_test/04: MissingCompileTimeError
-multiline_newline_test/04r: MissingCompileTimeError
-multiline_newline_test/05: MissingCompileTimeError
-multiline_newline_test/05r: MissingCompileTimeError
-multiline_newline_test/06: MissingCompileTimeError
-multiline_newline_test/06r: MissingCompileTimeError
-no_such_method_negative_test: Fail
-number_identity_test: CompileTimeError
-prefix10_negative_test: Fail
-prefix11_negative_test: Fail
-prefix12_negative_test: Fail
-prefix1_negative_test: Fail
-prefix2_negative_test: Fail
-prefix3_negative_test: Fail
-prefix4_negative_test: Fail
-prefix6_negative_test: Fail
-prefix8_negative_test: Fail
-private_member1_negative_test: Fail
-private_member2_negative_test: Fail
-private_member3_negative_test: Fail
-static_call_wrong_argument_count_negative_test: Fail
-try_catch_test/01: MissingCompileTimeError
-type_variable_static_context_negative_test: Fail
-unresolved_in_factory_negative_test: Fail
-unresolved_top_level_method_negative_test: Fail
-unresolved_top_level_var_negative_test: Fail
-
-# We skip all the Dart 1.0 tests in dartk and dartkp mode as these
-# modes are intended only for Dart 2.0 with strong mode enabled.
-[ $compiler == app_jitk || $compiler == dartk || $compiler == dartkb || $compiler == dartkp ]
-*: SkipByDesign
diff --git a/tests/language/language_spec_parser.status b/tests/language/language_spec_parser.status
deleted file mode 100644
index 5e35c74..0000000
--- a/tests/language/language_spec_parser.status
+++ /dev/null
@@ -1,37 +0,0 @@
-# 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.
-
-[ $compiler == spec_parser ]
-conditional_import_string_test: Fail # Not yet supported.
-conditional_import_test: Fail # Not yet supported.
-config_import_corelib_test: Fail # Not yet supported.
-config_import_test: Fail # Not yet supported.
-const_native_factory_test/01: Fail # Uses `native`.
-deep_nesting1_negative_test: Skip # Stack overflow.
-deep_nesting2_negative_test: Skip # Stack overflow.
-factory3_negative_test: Fail # Negative, puts `default` in class header.
-field3_negative_test: Fail # Negative, uses `final var a`.
-getter_declaration_negative_test: Fail # Negative, uses getter with parameter.
-interface_injection1_negative_test: Fail # Negative, uses interface injection.
-interface_injection2_negative_test: Fail # Negative, uses interface injection.
-is_not_class1_negative_test: Fail # Negative, uses `a is "A"`.
-is_not_class4_negative_test: Fail # Negative, uses `a is A is A`.
-issue1578_negative_test: Fail # Negative, is line noise.
-issue_1751477_test: Skip # Times out: 9 levels, exponential blowup => 430 secs.
-list_literal_negative_test: Fail # Negative, uses `new List<int>[1, 2]`.
-map_literal_negative_test: Fail # Negative, uses `new Map<int>{..}`.
-new_expression1_negative_test: Fail # Negative, uses `new id`.
-new_expression2_negative_test: Fail # Negative, uses `new id(`.
-new_expression3_negative_test: Fail # Negative, uses `new id(...`.
-operator1_negative_test: Fail # Negative, declares static operator.
-operator2_negative_test: Fail # Negative, declares `operator ===`.
-prefix18_negative_test: Fail # Negative, uses `lib1.invalid` as library prefix.
-string_escape4_negative_test: Fail # Negative, uses newline in string literal.
-string_interpolate1_negative_test: Fail # Negative, misplaced '$'.
-string_interpolate2_negative_test: Fail # Negative, misplaced '$'.
-switch1_negative_test: Fail # Negative, `default` clause not last.
-test_negative_test: Fail # Negative, uses non-terminated string literal.
-unary_plus_negative_test: Fail # Negative, uses non-existing unary plus.
-unhandled_exception_negative_test: Fail # Negative, defaults required parameter.
-vm/debug_break_enabled_vm_test: Fail # Uses debug break.
diff --git a/tests/language/large_class_declaration_test.dart b/tests/language/large_class_declaration_test.dart
deleted file mode 100644
index 15c6721..0000000
--- a/tests/language/large_class_declaration_test.dart
+++ /dev/null
@@ -1,20018 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Dart test program for testing compilation of classes with a large number
-// of fields.
-
-import "package:expect/expect.dart";
-
-class A {
-  var a0;
-  var a1;
-  var a2;
-  var a3;
-  var a4;
-  var a5;
-  var a6;
-  var a7;
-  var a8;
-  var a9;
-  var a10;
-  var a11;
-  var a12;
-  var a13;
-  var a14;
-  var a15;
-  var a16;
-  var a17;
-  var a18;
-  var a19;
-  var a20;
-  var a21;
-  var a22;
-  var a23;
-  var a24;
-  var a25;
-  var a26;
-  var a27;
-  var a28;
-  var a29;
-  var a30;
-  var a31;
-  var a32;
-  var a33;
-  var a34;
-  var a35;
-  var a36;
-  var a37;
-  var a38;
-  var a39;
-  var a40;
-  var a41;
-  var a42;
-  var a43;
-  var a44;
-  var a45;
-  var a46;
-  var a47;
-  var a48;
-  var a49;
-  var a50;
-  var a51;
-  var a52;
-  var a53;
-  var a54;
-  var a55;
-  var a56;
-  var a57;
-  var a58;
-  var a59;
-  var a60;
-  var a61;
-  var a62;
-  var a63;
-  var a64;
-  var a65;
-  var a66;
-  var a67;
-  var a68;
-  var a69;
-  var a70;
-  var a71;
-  var a72;
-  var a73;
-  var a74;
-  var a75;
-  var a76;
-  var a77;
-  var a78;
-  var a79;
-  var a80;
-  var a81;
-  var a82;
-  var a83;
-  var a84;
-  var a85;
-  var a86;
-  var a87;
-  var a88;
-  var a89;
-  var a90;
-  var a91;
-  var a92;
-  var a93;
-  var a94;
-  var a95;
-  var a96;
-  var a97;
-  var a98;
-  var a99;
-  var a100;
-  var a101;
-  var a102;
-  var a103;
-  var a104;
-  var a105;
-  var a106;
-  var a107;
-  var a108;
-  var a109;
-  var a110;
-  var a111;
-  var a112;
-  var a113;
-  var a114;
-  var a115;
-  var a116;
-  var a117;
-  var a118;
-  var a119;
-  var a120;
-  var a121;
-  var a122;
-  var a123;
-  var a124;
-  var a125;
-  var a126;
-  var a127;
-  var a128;
-  var a129;
-  var a130;
-  var a131;
-  var a132;
-  var a133;
-  var a134;
-  var a135;
-  var a136;
-  var a137;
-  var a138;
-  var a139;
-  var a140;
-  var a141;
-  var a142;
-  var a143;
-  var a144;
-  var a145;
-  var a146;
-  var a147;
-  var a148;
-  var a149;
-  var a150;
-  var a151;
-  var a152;
-  var a153;
-  var a154;
-  var a155;
-  var a156;
-  var a157;
-  var a158;
-  var a159;
-  var a160;
-  var a161;
-  var a162;
-  var a163;
-  var a164;
-  var a165;
-  var a166;
-  var a167;
-  var a168;
-  var a169;
-  var a170;
-  var a171;
-  var a172;
-  var a173;
-  var a174;
-  var a175;
-  var a176;
-  var a177;
-  var a178;
-  var a179;
-  var a180;
-  var a181;
-  var a182;
-  var a183;
-  var a184;
-  var a185;
-  var a186;
-  var a187;
-  var a188;
-  var a189;
-  var a190;
-  var a191;
-  var a192;
-  var a193;
-  var a194;
-  var a195;
-  var a196;
-  var a197;
-  var a198;
-  var a199;
-  var a200;
-  var a201;
-  var a202;
-  var a203;
-  var a204;
-  var a205;
-  var a206;
-  var a207;
-  var a208;
-  var a209;
-  var a210;
-  var a211;
-  var a212;
-  var a213;
-  var a214;
-  var a215;
-  var a216;
-  var a217;
-  var a218;
-  var a219;
-  var a220;
-  var a221;
-  var a222;
-  var a223;
-  var a224;
-  var a225;
-  var a226;
-  var a227;
-  var a228;
-  var a229;
-  var a230;
-  var a231;
-  var a232;
-  var a233;
-  var a234;
-  var a235;
-  var a236;
-  var a237;
-  var a238;
-  var a239;
-  var a240;
-  var a241;
-  var a242;
-  var a243;
-  var a244;
-  var a245;
-  var a246;
-  var a247;
-  var a248;
-  var a249;
-  var a250;
-  var a251;
-  var a252;
-  var a253;
-  var a254;
-  var a255;
-  var a256;
-  var a257;
-  var a258;
-  var a259;
-  var a260;
-  var a261;
-  var a262;
-  var a263;
-  var a264;
-  var a265;
-  var a266;
-  var a267;
-  var a268;
-  var a269;
-  var a270;
-  var a271;
-  var a272;
-  var a273;
-  var a274;
-  var a275;
-  var a276;
-  var a277;
-  var a278;
-  var a279;
-  var a280;
-  var a281;
-  var a282;
-  var a283;
-  var a284;
-  var a285;
-  var a286;
-  var a287;
-  var a288;
-  var a289;
-  var a290;
-  var a291;
-  var a292;
-  var a293;
-  var a294;
-  var a295;
-  var a296;
-  var a297;
-  var a298;
-  var a299;
-  var a300;
-  var a301;
-  var a302;
-  var a303;
-  var a304;
-  var a305;
-  var a306;
-  var a307;
-  var a308;
-  var a309;
-  var a310;
-  var a311;
-  var a312;
-  var a313;
-  var a314;
-  var a315;
-  var a316;
-  var a317;
-  var a318;
-  var a319;
-  var a320;
-  var a321;
-  var a322;
-  var a323;
-  var a324;
-  var a325;
-  var a326;
-  var a327;
-  var a328;
-  var a329;
-  var a330;
-  var a331;
-  var a332;
-  var a333;
-  var a334;
-  var a335;
-  var a336;
-  var a337;
-  var a338;
-  var a339;
-  var a340;
-  var a341;
-  var a342;
-  var a343;
-  var a344;
-  var a345;
-  var a346;
-  var a347;
-  var a348;
-  var a349;
-  var a350;
-  var a351;
-  var a352;
-  var a353;
-  var a354;
-  var a355;
-  var a356;
-  var a357;
-  var a358;
-  var a359;
-  var a360;
-  var a361;
-  var a362;
-  var a363;
-  var a364;
-  var a365;
-  var a366;
-  var a367;
-  var a368;
-  var a369;
-  var a370;
-  var a371;
-  var a372;
-  var a373;
-  var a374;
-  var a375;
-  var a376;
-  var a377;
-  var a378;
-  var a379;
-  var a380;
-  var a381;
-  var a382;
-  var a383;
-  var a384;
-  var a385;
-  var a386;
-  var a387;
-  var a388;
-  var a389;
-  var a390;
-  var a391;
-  var a392;
-  var a393;
-  var a394;
-  var a395;
-  var a396;
-  var a397;
-  var a398;
-  var a399;
-  var a400;
-  var a401;
-  var a402;
-  var a403;
-  var a404;
-  var a405;
-  var a406;
-  var a407;
-  var a408;
-  var a409;
-  var a410;
-  var a411;
-  var a412;
-  var a413;
-  var a414;
-  var a415;
-  var a416;
-  var a417;
-  var a418;
-  var a419;
-  var a420;
-  var a421;
-  var a422;
-  var a423;
-  var a424;
-  var a425;
-  var a426;
-  var a427;
-  var a428;
-  var a429;
-  var a430;
-  var a431;
-  var a432;
-  var a433;
-  var a434;
-  var a435;
-  var a436;
-  var a437;
-  var a438;
-  var a439;
-  var a440;
-  var a441;
-  var a442;
-  var a443;
-  var a444;
-  var a445;
-  var a446;
-  var a447;
-  var a448;
-  var a449;
-  var a450;
-  var a451;
-  var a452;
-  var a453;
-  var a454;
-  var a455;
-  var a456;
-  var a457;
-  var a458;
-  var a459;
-  var a460;
-  var a461;
-  var a462;
-  var a463;
-  var a464;
-  var a465;
-  var a466;
-  var a467;
-  var a468;
-  var a469;
-  var a470;
-  var a471;
-  var a472;
-  var a473;
-  var a474;
-  var a475;
-  var a476;
-  var a477;
-  var a478;
-  var a479;
-  var a480;
-  var a481;
-  var a482;
-  var a483;
-  var a484;
-  var a485;
-  var a486;
-  var a487;
-  var a488;
-  var a489;
-  var a490;
-  var a491;
-  var a492;
-  var a493;
-  var a494;
-  var a495;
-  var a496;
-  var a497;
-  var a498;
-  var a499;
-  var a500;
-  var a501;
-  var a502;
-  var a503;
-  var a504;
-  var a505;
-  var a506;
-  var a507;
-  var a508;
-  var a509;
-  var a510;
-  var a511;
-  var a512;
-  var a513;
-  var a514;
-  var a515;
-  var a516;
-  var a517;
-  var a518;
-  var a519;
-  var a520;
-  var a521;
-  var a522;
-  var a523;
-  var a524;
-  var a525;
-  var a526;
-  var a527;
-  var a528;
-  var a529;
-  var a530;
-  var a531;
-  var a532;
-  var a533;
-  var a534;
-  var a535;
-  var a536;
-  var a537;
-  var a538;
-  var a539;
-  var a540;
-  var a541;
-  var a542;
-  var a543;
-  var a544;
-  var a545;
-  var a546;
-  var a547;
-  var a548;
-  var a549;
-  var a550;
-  var a551;
-  var a552;
-  var a553;
-  var a554;
-  var a555;
-  var a556;
-  var a557;
-  var a558;
-  var a559;
-  var a560;
-  var a561;
-  var a562;
-  var a563;
-  var a564;
-  var a565;
-  var a566;
-  var a567;
-  var a568;
-  var a569;
-  var a570;
-  var a571;
-  var a572;
-  var a573;
-  var a574;
-  var a575;
-  var a576;
-  var a577;
-  var a578;
-  var a579;
-  var a580;
-  var a581;
-  var a582;
-  var a583;
-  var a584;
-  var a585;
-  var a586;
-  var a587;
-  var a588;
-  var a589;
-  var a590;
-  var a591;
-  var a592;
-  var a593;
-  var a594;
-  var a595;
-  var a596;
-  var a597;
-  var a598;
-  var a599;
-  var a600;
-  var a601;
-  var a602;
-  var a603;
-  var a604;
-  var a605;
-  var a606;
-  var a607;
-  var a608;
-  var a609;
-  var a610;
-  var a611;
-  var a612;
-  var a613;
-  var a614;
-  var a615;
-  var a616;
-  var a617;
-  var a618;
-  var a619;
-  var a620;
-  var a621;
-  var a622;
-  var a623;
-  var a624;
-  var a625;
-  var a626;
-  var a627;
-  var a628;
-  var a629;
-  var a630;
-  var a631;
-  var a632;
-  var a633;
-  var a634;
-  var a635;
-  var a636;
-  var a637;
-  var a638;
-  var a639;
-  var a640;
-  var a641;
-  var a642;
-  var a643;
-  var a644;
-  var a645;
-  var a646;
-  var a647;
-  var a648;
-  var a649;
-  var a650;
-  var a651;
-  var a652;
-  var a653;
-  var a654;
-  var a655;
-  var a656;
-  var a657;
-  var a658;
-  var a659;
-  var a660;
-  var a661;
-  var a662;
-  var a663;
-  var a664;
-  var a665;
-  var a666;
-  var a667;
-  var a668;
-  var a669;
-  var a670;
-  var a671;
-  var a672;
-  var a673;
-  var a674;
-  var a675;
-  var a676;
-  var a677;
-  var a678;
-  var a679;
-  var a680;
-  var a681;
-  var a682;
-  var a683;
-  var a684;
-  var a685;
-  var a686;
-  var a687;
-  var a688;
-  var a689;
-  var a690;
-  var a691;
-  var a692;
-  var a693;
-  var a694;
-  var a695;
-  var a696;
-  var a697;
-  var a698;
-  var a699;
-  var a700;
-  var a701;
-  var a702;
-  var a703;
-  var a704;
-  var a705;
-  var a706;
-  var a707;
-  var a708;
-  var a709;
-  var a710;
-  var a711;
-  var a712;
-  var a713;
-  var a714;
-  var a715;
-  var a716;
-  var a717;
-  var a718;
-  var a719;
-  var a720;
-  var a721;
-  var a722;
-  var a723;
-  var a724;
-  var a725;
-  var a726;
-  var a727;
-  var a728;
-  var a729;
-  var a730;
-  var a731;
-  var a732;
-  var a733;
-  var a734;
-  var a735;
-  var a736;
-  var a737;
-  var a738;
-  var a739;
-  var a740;
-  var a741;
-  var a742;
-  var a743;
-  var a744;
-  var a745;
-  var a746;
-  var a747;
-  var a748;
-  var a749;
-  var a750;
-  var a751;
-  var a752;
-  var a753;
-  var a754;
-  var a755;
-  var a756;
-  var a757;
-  var a758;
-  var a759;
-  var a760;
-  var a761;
-  var a762;
-  var a763;
-  var a764;
-  var a765;
-  var a766;
-  var a767;
-  var a768;
-  var a769;
-  var a770;
-  var a771;
-  var a772;
-  var a773;
-  var a774;
-  var a775;
-  var a776;
-  var a777;
-  var a778;
-  var a779;
-  var a780;
-  var a781;
-  var a782;
-  var a783;
-  var a784;
-  var a785;
-  var a786;
-  var a787;
-  var a788;
-  var a789;
-  var a790;
-  var a791;
-  var a792;
-  var a793;
-  var a794;
-  var a795;
-  var a796;
-  var a797;
-  var a798;
-  var a799;
-  var a800;
-  var a801;
-  var a802;
-  var a803;
-  var a804;
-  var a805;
-  var a806;
-  var a807;
-  var a808;
-  var a809;
-  var a810;
-  var a811;
-  var a812;
-  var a813;
-  var a814;
-  var a815;
-  var a816;
-  var a817;
-  var a818;
-  var a819;
-  var a820;
-  var a821;
-  var a822;
-  var a823;
-  var a824;
-  var a825;
-  var a826;
-  var a827;
-  var a828;
-  var a829;
-  var a830;
-  var a831;
-  var a832;
-  var a833;
-  var a834;
-  var a835;
-  var a836;
-  var a837;
-  var a838;
-  var a839;
-  var a840;
-  var a841;
-  var a842;
-  var a843;
-  var a844;
-  var a845;
-  var a846;
-  var a847;
-  var a848;
-  var a849;
-  var a850;
-  var a851;
-  var a852;
-  var a853;
-  var a854;
-  var a855;
-  var a856;
-  var a857;
-  var a858;
-  var a859;
-  var a860;
-  var a861;
-  var a862;
-  var a863;
-  var a864;
-  var a865;
-  var a866;
-  var a867;
-  var a868;
-  var a869;
-  var a870;
-  var a871;
-  var a872;
-  var a873;
-  var a874;
-  var a875;
-  var a876;
-  var a877;
-  var a878;
-  var a879;
-  var a880;
-  var a881;
-  var a882;
-  var a883;
-  var a884;
-  var a885;
-  var a886;
-  var a887;
-  var a888;
-  var a889;
-  var a890;
-  var a891;
-  var a892;
-  var a893;
-  var a894;
-  var a895;
-  var a896;
-  var a897;
-  var a898;
-  var a899;
-  var a900;
-  var a901;
-  var a902;
-  var a903;
-  var a904;
-  var a905;
-  var a906;
-  var a907;
-  var a908;
-  var a909;
-  var a910;
-  var a911;
-  var a912;
-  var a913;
-  var a914;
-  var a915;
-  var a916;
-  var a917;
-  var a918;
-  var a919;
-  var a920;
-  var a921;
-  var a922;
-  var a923;
-  var a924;
-  var a925;
-  var a926;
-  var a927;
-  var a928;
-  var a929;
-  var a930;
-  var a931;
-  var a932;
-  var a933;
-  var a934;
-  var a935;
-  var a936;
-  var a937;
-  var a938;
-  var a939;
-  var a940;
-  var a941;
-  var a942;
-  var a943;
-  var a944;
-  var a945;
-  var a946;
-  var a947;
-  var a948;
-  var a949;
-  var a950;
-  var a951;
-  var a952;
-  var a953;
-  var a954;
-  var a955;
-  var a956;
-  var a957;
-  var a958;
-  var a959;
-  var a960;
-  var a961;
-  var a962;
-  var a963;
-  var a964;
-  var a965;
-  var a966;
-  var a967;
-  var a968;
-  var a969;
-  var a970;
-  var a971;
-  var a972;
-  var a973;
-  var a974;
-  var a975;
-  var a976;
-  var a977;
-  var a978;
-  var a979;
-  var a980;
-  var a981;
-  var a982;
-  var a983;
-  var a984;
-  var a985;
-  var a986;
-  var a987;
-  var a988;
-  var a989;
-  var a990;
-  var a991;
-  var a992;
-  var a993;
-  var a994;
-  var a995;
-  var a996;
-  var a997;
-  var a998;
-  var a999;
-  var a1000;
-  var a1001;
-  var a1002;
-  var a1003;
-  var a1004;
-  var a1005;
-  var a1006;
-  var a1007;
-  var a1008;
-  var a1009;
-  var a1010;
-  var a1011;
-  var a1012;
-  var a1013;
-  var a1014;
-  var a1015;
-  var a1016;
-  var a1017;
-  var a1018;
-  var a1019;
-  var a1020;
-  var a1021;
-  var a1022;
-  var a1023;
-  var a1024;
-  var a1025;
-  var a1026;
-  var a1027;
-  var a1028;
-  var a1029;
-  var a1030;
-  var a1031;
-  var a1032;
-  var a1033;
-  var a1034;
-  var a1035;
-  var a1036;
-  var a1037;
-  var a1038;
-  var a1039;
-  var a1040;
-  var a1041;
-  var a1042;
-  var a1043;
-  var a1044;
-  var a1045;
-  var a1046;
-  var a1047;
-  var a1048;
-  var a1049;
-  var a1050;
-  var a1051;
-  var a1052;
-  var a1053;
-  var a1054;
-  var a1055;
-  var a1056;
-  var a1057;
-  var a1058;
-  var a1059;
-  var a1060;
-  var a1061;
-  var a1062;
-  var a1063;
-  var a1064;
-  var a1065;
-  var a1066;
-  var a1067;
-  var a1068;
-  var a1069;
-  var a1070;
-  var a1071;
-  var a1072;
-  var a1073;
-  var a1074;
-  var a1075;
-  var a1076;
-  var a1077;
-  var a1078;
-  var a1079;
-  var a1080;
-  var a1081;
-  var a1082;
-  var a1083;
-  var a1084;
-  var a1085;
-  var a1086;
-  var a1087;
-  var a1088;
-  var a1089;
-  var a1090;
-  var a1091;
-  var a1092;
-  var a1093;
-  var a1094;
-  var a1095;
-  var a1096;
-  var a1097;
-  var a1098;
-  var a1099;
-  var a1100;
-  var a1101;
-  var a1102;
-  var a1103;
-  var a1104;
-  var a1105;
-  var a1106;
-  var a1107;
-  var a1108;
-  var a1109;
-  var a1110;
-  var a1111;
-  var a1112;
-  var a1113;
-  var a1114;
-  var a1115;
-  var a1116;
-  var a1117;
-  var a1118;
-  var a1119;
-  var a1120;
-  var a1121;
-  var a1122;
-  var a1123;
-  var a1124;
-  var a1125;
-  var a1126;
-  var a1127;
-  var a1128;
-  var a1129;
-  var a1130;
-  var a1131;
-  var a1132;
-  var a1133;
-  var a1134;
-  var a1135;
-  var a1136;
-  var a1137;
-  var a1138;
-  var a1139;
-  var a1140;
-  var a1141;
-  var a1142;
-  var a1143;
-  var a1144;
-  var a1145;
-  var a1146;
-  var a1147;
-  var a1148;
-  var a1149;
-  var a1150;
-  var a1151;
-  var a1152;
-  var a1153;
-  var a1154;
-  var a1155;
-  var a1156;
-  var a1157;
-  var a1158;
-  var a1159;
-  var a1160;
-  var a1161;
-  var a1162;
-  var a1163;
-  var a1164;
-  var a1165;
-  var a1166;
-  var a1167;
-  var a1168;
-  var a1169;
-  var a1170;
-  var a1171;
-  var a1172;
-  var a1173;
-  var a1174;
-  var a1175;
-  var a1176;
-  var a1177;
-  var a1178;
-  var a1179;
-  var a1180;
-  var a1181;
-  var a1182;
-  var a1183;
-  var a1184;
-  var a1185;
-  var a1186;
-  var a1187;
-  var a1188;
-  var a1189;
-  var a1190;
-  var a1191;
-  var a1192;
-  var a1193;
-  var a1194;
-  var a1195;
-  var a1196;
-  var a1197;
-  var a1198;
-  var a1199;
-  var a1200;
-  var a1201;
-  var a1202;
-  var a1203;
-  var a1204;
-  var a1205;
-  var a1206;
-  var a1207;
-  var a1208;
-  var a1209;
-  var a1210;
-  var a1211;
-  var a1212;
-  var a1213;
-  var a1214;
-  var a1215;
-  var a1216;
-  var a1217;
-  var a1218;
-  var a1219;
-  var a1220;
-  var a1221;
-  var a1222;
-  var a1223;
-  var a1224;
-  var a1225;
-  var a1226;
-  var a1227;
-  var a1228;
-  var a1229;
-  var a1230;
-  var a1231;
-  var a1232;
-  var a1233;
-  var a1234;
-  var a1235;
-  var a1236;
-  var a1237;
-  var a1238;
-  var a1239;
-  var a1240;
-  var a1241;
-  var a1242;
-  var a1243;
-  var a1244;
-  var a1245;
-  var a1246;
-  var a1247;
-  var a1248;
-  var a1249;
-  var a1250;
-  var a1251;
-  var a1252;
-  var a1253;
-  var a1254;
-  var a1255;
-  var a1256;
-  var a1257;
-  var a1258;
-  var a1259;
-  var a1260;
-  var a1261;
-  var a1262;
-  var a1263;
-  var a1264;
-  var a1265;
-  var a1266;
-  var a1267;
-  var a1268;
-  var a1269;
-  var a1270;
-  var a1271;
-  var a1272;
-  var a1273;
-  var a1274;
-  var a1275;
-  var a1276;
-  var a1277;
-  var a1278;
-  var a1279;
-  var a1280;
-  var a1281;
-  var a1282;
-  var a1283;
-  var a1284;
-  var a1285;
-  var a1286;
-  var a1287;
-  var a1288;
-  var a1289;
-  var a1290;
-  var a1291;
-  var a1292;
-  var a1293;
-  var a1294;
-  var a1295;
-  var a1296;
-  var a1297;
-  var a1298;
-  var a1299;
-  var a1300;
-  var a1301;
-  var a1302;
-  var a1303;
-  var a1304;
-  var a1305;
-  var a1306;
-  var a1307;
-  var a1308;
-  var a1309;
-  var a1310;
-  var a1311;
-  var a1312;
-  var a1313;
-  var a1314;
-  var a1315;
-  var a1316;
-  var a1317;
-  var a1318;
-  var a1319;
-  var a1320;
-  var a1321;
-  var a1322;
-  var a1323;
-  var a1324;
-  var a1325;
-  var a1326;
-  var a1327;
-  var a1328;
-  var a1329;
-  var a1330;
-  var a1331;
-  var a1332;
-  var a1333;
-  var a1334;
-  var a1335;
-  var a1336;
-  var a1337;
-  var a1338;
-  var a1339;
-  var a1340;
-  var a1341;
-  var a1342;
-  var a1343;
-  var a1344;
-  var a1345;
-  var a1346;
-  var a1347;
-  var a1348;
-  var a1349;
-  var a1350;
-  var a1351;
-  var a1352;
-  var a1353;
-  var a1354;
-  var a1355;
-  var a1356;
-  var a1357;
-  var a1358;
-  var a1359;
-  var a1360;
-  var a1361;
-  var a1362;
-  var a1363;
-  var a1364;
-  var a1365;
-  var a1366;
-  var a1367;
-  var a1368;
-  var a1369;
-  var a1370;
-  var a1371;
-  var a1372;
-  var a1373;
-  var a1374;
-  var a1375;
-  var a1376;
-  var a1377;
-  var a1378;
-  var a1379;
-  var a1380;
-  var a1381;
-  var a1382;
-  var a1383;
-  var a1384;
-  var a1385;
-  var a1386;
-  var a1387;
-  var a1388;
-  var a1389;
-  var a1390;
-  var a1391;
-  var a1392;
-  var a1393;
-  var a1394;
-  var a1395;
-  var a1396;
-  var a1397;
-  var a1398;
-  var a1399;
-  var a1400;
-  var a1401;
-  var a1402;
-  var a1403;
-  var a1404;
-  var a1405;
-  var a1406;
-  var a1407;
-  var a1408;
-  var a1409;
-  var a1410;
-  var a1411;
-  var a1412;
-  var a1413;
-  var a1414;
-  var a1415;
-  var a1416;
-  var a1417;
-  var a1418;
-  var a1419;
-  var a1420;
-  var a1421;
-  var a1422;
-  var a1423;
-  var a1424;
-  var a1425;
-  var a1426;
-  var a1427;
-  var a1428;
-  var a1429;
-  var a1430;
-  var a1431;
-  var a1432;
-  var a1433;
-  var a1434;
-  var a1435;
-  var a1436;
-  var a1437;
-  var a1438;
-  var a1439;
-  var a1440;
-  var a1441;
-  var a1442;
-  var a1443;
-  var a1444;
-  var a1445;
-  var a1446;
-  var a1447;
-  var a1448;
-  var a1449;
-  var a1450;
-  var a1451;
-  var a1452;
-  var a1453;
-  var a1454;
-  var a1455;
-  var a1456;
-  var a1457;
-  var a1458;
-  var a1459;
-  var a1460;
-  var a1461;
-  var a1462;
-  var a1463;
-  var a1464;
-  var a1465;
-  var a1466;
-  var a1467;
-  var a1468;
-  var a1469;
-  var a1470;
-  var a1471;
-  var a1472;
-  var a1473;
-  var a1474;
-  var a1475;
-  var a1476;
-  var a1477;
-  var a1478;
-  var a1479;
-  var a1480;
-  var a1481;
-  var a1482;
-  var a1483;
-  var a1484;
-  var a1485;
-  var a1486;
-  var a1487;
-  var a1488;
-  var a1489;
-  var a1490;
-  var a1491;
-  var a1492;
-  var a1493;
-  var a1494;
-  var a1495;
-  var a1496;
-  var a1497;
-  var a1498;
-  var a1499;
-  var a1500;
-  var a1501;
-  var a1502;
-  var a1503;
-  var a1504;
-  var a1505;
-  var a1506;
-  var a1507;
-  var a1508;
-  var a1509;
-  var a1510;
-  var a1511;
-  var a1512;
-  var a1513;
-  var a1514;
-  var a1515;
-  var a1516;
-  var a1517;
-  var a1518;
-  var a1519;
-  var a1520;
-  var a1521;
-  var a1522;
-  var a1523;
-  var a1524;
-  var a1525;
-  var a1526;
-  var a1527;
-  var a1528;
-  var a1529;
-  var a1530;
-  var a1531;
-  var a1532;
-  var a1533;
-  var a1534;
-  var a1535;
-  var a1536;
-  var a1537;
-  var a1538;
-  var a1539;
-  var a1540;
-  var a1541;
-  var a1542;
-  var a1543;
-  var a1544;
-  var a1545;
-  var a1546;
-  var a1547;
-  var a1548;
-  var a1549;
-  var a1550;
-  var a1551;
-  var a1552;
-  var a1553;
-  var a1554;
-  var a1555;
-  var a1556;
-  var a1557;
-  var a1558;
-  var a1559;
-  var a1560;
-  var a1561;
-  var a1562;
-  var a1563;
-  var a1564;
-  var a1565;
-  var a1566;
-  var a1567;
-  var a1568;
-  var a1569;
-  var a1570;
-  var a1571;
-  var a1572;
-  var a1573;
-  var a1574;
-  var a1575;
-  var a1576;
-  var a1577;
-  var a1578;
-  var a1579;
-  var a1580;
-  var a1581;
-  var a1582;
-  var a1583;
-  var a1584;
-  var a1585;
-  var a1586;
-  var a1587;
-  var a1588;
-  var a1589;
-  var a1590;
-  var a1591;
-  var a1592;
-  var a1593;
-  var a1594;
-  var a1595;
-  var a1596;
-  var a1597;
-  var a1598;
-  var a1599;
-  var a1600;
-  var a1601;
-  var a1602;
-  var a1603;
-  var a1604;
-  var a1605;
-  var a1606;
-  var a1607;
-  var a1608;
-  var a1609;
-  var a1610;
-  var a1611;
-  var a1612;
-  var a1613;
-  var a1614;
-  var a1615;
-  var a1616;
-  var a1617;
-  var a1618;
-  var a1619;
-  var a1620;
-  var a1621;
-  var a1622;
-  var a1623;
-  var a1624;
-  var a1625;
-  var a1626;
-  var a1627;
-  var a1628;
-  var a1629;
-  var a1630;
-  var a1631;
-  var a1632;
-  var a1633;
-  var a1634;
-  var a1635;
-  var a1636;
-  var a1637;
-  var a1638;
-  var a1639;
-  var a1640;
-  var a1641;
-  var a1642;
-  var a1643;
-  var a1644;
-  var a1645;
-  var a1646;
-  var a1647;
-  var a1648;
-  var a1649;
-  var a1650;
-  var a1651;
-  var a1652;
-  var a1653;
-  var a1654;
-  var a1655;
-  var a1656;
-  var a1657;
-  var a1658;
-  var a1659;
-  var a1660;
-  var a1661;
-  var a1662;
-  var a1663;
-  var a1664;
-  var a1665;
-  var a1666;
-  var a1667;
-  var a1668;
-  var a1669;
-  var a1670;
-  var a1671;
-  var a1672;
-  var a1673;
-  var a1674;
-  var a1675;
-  var a1676;
-  var a1677;
-  var a1678;
-  var a1679;
-  var a1680;
-  var a1681;
-  var a1682;
-  var a1683;
-  var a1684;
-  var a1685;
-  var a1686;
-  var a1687;
-  var a1688;
-  var a1689;
-  var a1690;
-  var a1691;
-  var a1692;
-  var a1693;
-  var a1694;
-  var a1695;
-  var a1696;
-  var a1697;
-  var a1698;
-  var a1699;
-  var a1700;
-  var a1701;
-  var a1702;
-  var a1703;
-  var a1704;
-  var a1705;
-  var a1706;
-  var a1707;
-  var a1708;
-  var a1709;
-  var a1710;
-  var a1711;
-  var a1712;
-  var a1713;
-  var a1714;
-  var a1715;
-  var a1716;
-  var a1717;
-  var a1718;
-  var a1719;
-  var a1720;
-  var a1721;
-  var a1722;
-  var a1723;
-  var a1724;
-  var a1725;
-  var a1726;
-  var a1727;
-  var a1728;
-  var a1729;
-  var a1730;
-  var a1731;
-  var a1732;
-  var a1733;
-  var a1734;
-  var a1735;
-  var a1736;
-  var a1737;
-  var a1738;
-  var a1739;
-  var a1740;
-  var a1741;
-  var a1742;
-  var a1743;
-  var a1744;
-  var a1745;
-  var a1746;
-  var a1747;
-  var a1748;
-  var a1749;
-  var a1750;
-  var a1751;
-  var a1752;
-  var a1753;
-  var a1754;
-  var a1755;
-  var a1756;
-  var a1757;
-  var a1758;
-  var a1759;
-  var a1760;
-  var a1761;
-  var a1762;
-  var a1763;
-  var a1764;
-  var a1765;
-  var a1766;
-  var a1767;
-  var a1768;
-  var a1769;
-  var a1770;
-  var a1771;
-  var a1772;
-  var a1773;
-  var a1774;
-  var a1775;
-  var a1776;
-  var a1777;
-  var a1778;
-  var a1779;
-  var a1780;
-  var a1781;
-  var a1782;
-  var a1783;
-  var a1784;
-  var a1785;
-  var a1786;
-  var a1787;
-  var a1788;
-  var a1789;
-  var a1790;
-  var a1791;
-  var a1792;
-  var a1793;
-  var a1794;
-  var a1795;
-  var a1796;
-  var a1797;
-  var a1798;
-  var a1799;
-  var a1800;
-  var a1801;
-  var a1802;
-  var a1803;
-  var a1804;
-  var a1805;
-  var a1806;
-  var a1807;
-  var a1808;
-  var a1809;
-  var a1810;
-  var a1811;
-  var a1812;
-  var a1813;
-  var a1814;
-  var a1815;
-  var a1816;
-  var a1817;
-  var a1818;
-  var a1819;
-  var a1820;
-  var a1821;
-  var a1822;
-  var a1823;
-  var a1824;
-  var a1825;
-  var a1826;
-  var a1827;
-  var a1828;
-  var a1829;
-  var a1830;
-  var a1831;
-  var a1832;
-  var a1833;
-  var a1834;
-  var a1835;
-  var a1836;
-  var a1837;
-  var a1838;
-  var a1839;
-  var a1840;
-  var a1841;
-  var a1842;
-  var a1843;
-  var a1844;
-  var a1845;
-  var a1846;
-  var a1847;
-  var a1848;
-  var a1849;
-  var a1850;
-  var a1851;
-  var a1852;
-  var a1853;
-  var a1854;
-  var a1855;
-  var a1856;
-  var a1857;
-  var a1858;
-  var a1859;
-  var a1860;
-  var a1861;
-  var a1862;
-  var a1863;
-  var a1864;
-  var a1865;
-  var a1866;
-  var a1867;
-  var a1868;
-  var a1869;
-  var a1870;
-  var a1871;
-  var a1872;
-  var a1873;
-  var a1874;
-  var a1875;
-  var a1876;
-  var a1877;
-  var a1878;
-  var a1879;
-  var a1880;
-  var a1881;
-  var a1882;
-  var a1883;
-  var a1884;
-  var a1885;
-  var a1886;
-  var a1887;
-  var a1888;
-  var a1889;
-  var a1890;
-  var a1891;
-  var a1892;
-  var a1893;
-  var a1894;
-  var a1895;
-  var a1896;
-  var a1897;
-  var a1898;
-  var a1899;
-  var a1900;
-  var a1901;
-  var a1902;
-  var a1903;
-  var a1904;
-  var a1905;
-  var a1906;
-  var a1907;
-  var a1908;
-  var a1909;
-  var a1910;
-  var a1911;
-  var a1912;
-  var a1913;
-  var a1914;
-  var a1915;
-  var a1916;
-  var a1917;
-  var a1918;
-  var a1919;
-  var a1920;
-  var a1921;
-  var a1922;
-  var a1923;
-  var a1924;
-  var a1925;
-  var a1926;
-  var a1927;
-  var a1928;
-  var a1929;
-  var a1930;
-  var a1931;
-  var a1932;
-  var a1933;
-  var a1934;
-  var a1935;
-  var a1936;
-  var a1937;
-  var a1938;
-  var a1939;
-  var a1940;
-  var a1941;
-  var a1942;
-  var a1943;
-  var a1944;
-  var a1945;
-  var a1946;
-  var a1947;
-  var a1948;
-  var a1949;
-  var a1950;
-  var a1951;
-  var a1952;
-  var a1953;
-  var a1954;
-  var a1955;
-  var a1956;
-  var a1957;
-  var a1958;
-  var a1959;
-  var a1960;
-  var a1961;
-  var a1962;
-  var a1963;
-  var a1964;
-  var a1965;
-  var a1966;
-  var a1967;
-  var a1968;
-  var a1969;
-  var a1970;
-  var a1971;
-  var a1972;
-  var a1973;
-  var a1974;
-  var a1975;
-  var a1976;
-  var a1977;
-  var a1978;
-  var a1979;
-  var a1980;
-  var a1981;
-  var a1982;
-  var a1983;
-  var a1984;
-  var a1985;
-  var a1986;
-  var a1987;
-  var a1988;
-  var a1989;
-  var a1990;
-  var a1991;
-  var a1992;
-  var a1993;
-  var a1994;
-  var a1995;
-  var a1996;
-  var a1997;
-  var a1998;
-  var a1999;
-  var a2000;
-  var a2001;
-  var a2002;
-  var a2003;
-  var a2004;
-  var a2005;
-  var a2006;
-  var a2007;
-  var a2008;
-  var a2009;
-  var a2010;
-  var a2011;
-  var a2012;
-  var a2013;
-  var a2014;
-  var a2015;
-  var a2016;
-  var a2017;
-  var a2018;
-  var a2019;
-  var a2020;
-  var a2021;
-  var a2022;
-  var a2023;
-  var a2024;
-  var a2025;
-  var a2026;
-  var a2027;
-  var a2028;
-  var a2029;
-  var a2030;
-  var a2031;
-  var a2032;
-  var a2033;
-  var a2034;
-  var a2035;
-  var a2036;
-  var a2037;
-  var a2038;
-  var a2039;
-  var a2040;
-  var a2041;
-  var a2042;
-  var a2043;
-  var a2044;
-  var a2045;
-  var a2046;
-  var a2047;
-  var a2048;
-  var a2049;
-  var a2050;
-  var a2051;
-  var a2052;
-  var a2053;
-  var a2054;
-  var a2055;
-  var a2056;
-  var a2057;
-  var a2058;
-  var a2059;
-  var a2060;
-  var a2061;
-  var a2062;
-  var a2063;
-  var a2064;
-  var a2065;
-  var a2066;
-  var a2067;
-  var a2068;
-  var a2069;
-  var a2070;
-  var a2071;
-  var a2072;
-  var a2073;
-  var a2074;
-  var a2075;
-  var a2076;
-  var a2077;
-  var a2078;
-  var a2079;
-  var a2080;
-  var a2081;
-  var a2082;
-  var a2083;
-  var a2084;
-  var a2085;
-  var a2086;
-  var a2087;
-  var a2088;
-  var a2089;
-  var a2090;
-  var a2091;
-  var a2092;
-  var a2093;
-  var a2094;
-  var a2095;
-  var a2096;
-  var a2097;
-  var a2098;
-  var a2099;
-  var a2100;
-  var a2101;
-  var a2102;
-  var a2103;
-  var a2104;
-  var a2105;
-  var a2106;
-  var a2107;
-  var a2108;
-  var a2109;
-  var a2110;
-  var a2111;
-  var a2112;
-  var a2113;
-  var a2114;
-  var a2115;
-  var a2116;
-  var a2117;
-  var a2118;
-  var a2119;
-  var a2120;
-  var a2121;
-  var a2122;
-  var a2123;
-  var a2124;
-  var a2125;
-  var a2126;
-  var a2127;
-  var a2128;
-  var a2129;
-  var a2130;
-  var a2131;
-  var a2132;
-  var a2133;
-  var a2134;
-  var a2135;
-  var a2136;
-  var a2137;
-  var a2138;
-  var a2139;
-  var a2140;
-  var a2141;
-  var a2142;
-  var a2143;
-  var a2144;
-  var a2145;
-  var a2146;
-  var a2147;
-  var a2148;
-  var a2149;
-  var a2150;
-  var a2151;
-  var a2152;
-  var a2153;
-  var a2154;
-  var a2155;
-  var a2156;
-  var a2157;
-  var a2158;
-  var a2159;
-  var a2160;
-  var a2161;
-  var a2162;
-  var a2163;
-  var a2164;
-  var a2165;
-  var a2166;
-  var a2167;
-  var a2168;
-  var a2169;
-  var a2170;
-  var a2171;
-  var a2172;
-  var a2173;
-  var a2174;
-  var a2175;
-  var a2176;
-  var a2177;
-  var a2178;
-  var a2179;
-  var a2180;
-  var a2181;
-  var a2182;
-  var a2183;
-  var a2184;
-  var a2185;
-  var a2186;
-  var a2187;
-  var a2188;
-  var a2189;
-  var a2190;
-  var a2191;
-  var a2192;
-  var a2193;
-  var a2194;
-  var a2195;
-  var a2196;
-  var a2197;
-  var a2198;
-  var a2199;
-  var a2200;
-  var a2201;
-  var a2202;
-  var a2203;
-  var a2204;
-  var a2205;
-  var a2206;
-  var a2207;
-  var a2208;
-  var a2209;
-  var a2210;
-  var a2211;
-  var a2212;
-  var a2213;
-  var a2214;
-  var a2215;
-  var a2216;
-  var a2217;
-  var a2218;
-  var a2219;
-  var a2220;
-  var a2221;
-  var a2222;
-  var a2223;
-  var a2224;
-  var a2225;
-  var a2226;
-  var a2227;
-  var a2228;
-  var a2229;
-  var a2230;
-  var a2231;
-  var a2232;
-  var a2233;
-  var a2234;
-  var a2235;
-  var a2236;
-  var a2237;
-  var a2238;
-  var a2239;
-  var a2240;
-  var a2241;
-  var a2242;
-  var a2243;
-  var a2244;
-  var a2245;
-  var a2246;
-  var a2247;
-  var a2248;
-  var a2249;
-  var a2250;
-  var a2251;
-  var a2252;
-  var a2253;
-  var a2254;
-  var a2255;
-  var a2256;
-  var a2257;
-  var a2258;
-  var a2259;
-  var a2260;
-  var a2261;
-  var a2262;
-  var a2263;
-  var a2264;
-  var a2265;
-  var a2266;
-  var a2267;
-  var a2268;
-  var a2269;
-  var a2270;
-  var a2271;
-  var a2272;
-  var a2273;
-  var a2274;
-  var a2275;
-  var a2276;
-  var a2277;
-  var a2278;
-  var a2279;
-  var a2280;
-  var a2281;
-  var a2282;
-  var a2283;
-  var a2284;
-  var a2285;
-  var a2286;
-  var a2287;
-  var a2288;
-  var a2289;
-  var a2290;
-  var a2291;
-  var a2292;
-  var a2293;
-  var a2294;
-  var a2295;
-  var a2296;
-  var a2297;
-  var a2298;
-  var a2299;
-  var a2300;
-  var a2301;
-  var a2302;
-  var a2303;
-  var a2304;
-  var a2305;
-  var a2306;
-  var a2307;
-  var a2308;
-  var a2309;
-  var a2310;
-  var a2311;
-  var a2312;
-  var a2313;
-  var a2314;
-  var a2315;
-  var a2316;
-  var a2317;
-  var a2318;
-  var a2319;
-  var a2320;
-  var a2321;
-  var a2322;
-  var a2323;
-  var a2324;
-  var a2325;
-  var a2326;
-  var a2327;
-  var a2328;
-  var a2329;
-  var a2330;
-  var a2331;
-  var a2332;
-  var a2333;
-  var a2334;
-  var a2335;
-  var a2336;
-  var a2337;
-  var a2338;
-  var a2339;
-  var a2340;
-  var a2341;
-  var a2342;
-  var a2343;
-  var a2344;
-  var a2345;
-  var a2346;
-  var a2347;
-  var a2348;
-  var a2349;
-  var a2350;
-  var a2351;
-  var a2352;
-  var a2353;
-  var a2354;
-  var a2355;
-  var a2356;
-  var a2357;
-  var a2358;
-  var a2359;
-  var a2360;
-  var a2361;
-  var a2362;
-  var a2363;
-  var a2364;
-  var a2365;
-  var a2366;
-  var a2367;
-  var a2368;
-  var a2369;
-  var a2370;
-  var a2371;
-  var a2372;
-  var a2373;
-  var a2374;
-  var a2375;
-  var a2376;
-  var a2377;
-  var a2378;
-  var a2379;
-  var a2380;
-  var a2381;
-  var a2382;
-  var a2383;
-  var a2384;
-  var a2385;
-  var a2386;
-  var a2387;
-  var a2388;
-  var a2389;
-  var a2390;
-  var a2391;
-  var a2392;
-  var a2393;
-  var a2394;
-  var a2395;
-  var a2396;
-  var a2397;
-  var a2398;
-  var a2399;
-  var a2400;
-  var a2401;
-  var a2402;
-  var a2403;
-  var a2404;
-  var a2405;
-  var a2406;
-  var a2407;
-  var a2408;
-  var a2409;
-  var a2410;
-  var a2411;
-  var a2412;
-  var a2413;
-  var a2414;
-  var a2415;
-  var a2416;
-  var a2417;
-  var a2418;
-  var a2419;
-  var a2420;
-  var a2421;
-  var a2422;
-  var a2423;
-  var a2424;
-  var a2425;
-  var a2426;
-  var a2427;
-  var a2428;
-  var a2429;
-  var a2430;
-  var a2431;
-  var a2432;
-  var a2433;
-  var a2434;
-  var a2435;
-  var a2436;
-  var a2437;
-  var a2438;
-  var a2439;
-  var a2440;
-  var a2441;
-  var a2442;
-  var a2443;
-  var a2444;
-  var a2445;
-  var a2446;
-  var a2447;
-  var a2448;
-  var a2449;
-  var a2450;
-  var a2451;
-  var a2452;
-  var a2453;
-  var a2454;
-  var a2455;
-  var a2456;
-  var a2457;
-  var a2458;
-  var a2459;
-  var a2460;
-  var a2461;
-  var a2462;
-  var a2463;
-  var a2464;
-  var a2465;
-  var a2466;
-  var a2467;
-  var a2468;
-  var a2469;
-  var a2470;
-  var a2471;
-  var a2472;
-  var a2473;
-  var a2474;
-  var a2475;
-  var a2476;
-  var a2477;
-  var a2478;
-  var a2479;
-  var a2480;
-  var a2481;
-  var a2482;
-  var a2483;
-  var a2484;
-  var a2485;
-  var a2486;
-  var a2487;
-  var a2488;
-  var a2489;
-  var a2490;
-  var a2491;
-  var a2492;
-  var a2493;
-  var a2494;
-  var a2495;
-  var a2496;
-  var a2497;
-  var a2498;
-  var a2499;
-  var a2500;
-  var a2501;
-  var a2502;
-  var a2503;
-  var a2504;
-  var a2505;
-  var a2506;
-  var a2507;
-  var a2508;
-  var a2509;
-  var a2510;
-  var a2511;
-  var a2512;
-  var a2513;
-  var a2514;
-  var a2515;
-  var a2516;
-  var a2517;
-  var a2518;
-  var a2519;
-  var a2520;
-  var a2521;
-  var a2522;
-  var a2523;
-  var a2524;
-  var a2525;
-  var a2526;
-  var a2527;
-  var a2528;
-  var a2529;
-  var a2530;
-  var a2531;
-  var a2532;
-  var a2533;
-  var a2534;
-  var a2535;
-  var a2536;
-  var a2537;
-  var a2538;
-  var a2539;
-  var a2540;
-  var a2541;
-  var a2542;
-  var a2543;
-  var a2544;
-  var a2545;
-  var a2546;
-  var a2547;
-  var a2548;
-  var a2549;
-  var a2550;
-  var a2551;
-  var a2552;
-  var a2553;
-  var a2554;
-  var a2555;
-  var a2556;
-  var a2557;
-  var a2558;
-  var a2559;
-  var a2560;
-  var a2561;
-  var a2562;
-  var a2563;
-  var a2564;
-  var a2565;
-  var a2566;
-  var a2567;
-  var a2568;
-  var a2569;
-  var a2570;
-  var a2571;
-  var a2572;
-  var a2573;
-  var a2574;
-  var a2575;
-  var a2576;
-  var a2577;
-  var a2578;
-  var a2579;
-  var a2580;
-  var a2581;
-  var a2582;
-  var a2583;
-  var a2584;
-  var a2585;
-  var a2586;
-  var a2587;
-  var a2588;
-  var a2589;
-  var a2590;
-  var a2591;
-  var a2592;
-  var a2593;
-  var a2594;
-  var a2595;
-  var a2596;
-  var a2597;
-  var a2598;
-  var a2599;
-  var a2600;
-  var a2601;
-  var a2602;
-  var a2603;
-  var a2604;
-  var a2605;
-  var a2606;
-  var a2607;
-  var a2608;
-  var a2609;
-  var a2610;
-  var a2611;
-  var a2612;
-  var a2613;
-  var a2614;
-  var a2615;
-  var a2616;
-  var a2617;
-  var a2618;
-  var a2619;
-  var a2620;
-  var a2621;
-  var a2622;
-  var a2623;
-  var a2624;
-  var a2625;
-  var a2626;
-  var a2627;
-  var a2628;
-  var a2629;
-  var a2630;
-  var a2631;
-  var a2632;
-  var a2633;
-  var a2634;
-  var a2635;
-  var a2636;
-  var a2637;
-  var a2638;
-  var a2639;
-  var a2640;
-  var a2641;
-  var a2642;
-  var a2643;
-  var a2644;
-  var a2645;
-  var a2646;
-  var a2647;
-  var a2648;
-  var a2649;
-  var a2650;
-  var a2651;
-  var a2652;
-  var a2653;
-  var a2654;
-  var a2655;
-  var a2656;
-  var a2657;
-  var a2658;
-  var a2659;
-  var a2660;
-  var a2661;
-  var a2662;
-  var a2663;
-  var a2664;
-  var a2665;
-  var a2666;
-  var a2667;
-  var a2668;
-  var a2669;
-  var a2670;
-  var a2671;
-  var a2672;
-  var a2673;
-  var a2674;
-  var a2675;
-  var a2676;
-  var a2677;
-  var a2678;
-  var a2679;
-  var a2680;
-  var a2681;
-  var a2682;
-  var a2683;
-  var a2684;
-  var a2685;
-  var a2686;
-  var a2687;
-  var a2688;
-  var a2689;
-  var a2690;
-  var a2691;
-  var a2692;
-  var a2693;
-  var a2694;
-  var a2695;
-  var a2696;
-  var a2697;
-  var a2698;
-  var a2699;
-  var a2700;
-  var a2701;
-  var a2702;
-  var a2703;
-  var a2704;
-  var a2705;
-  var a2706;
-  var a2707;
-  var a2708;
-  var a2709;
-  var a2710;
-  var a2711;
-  var a2712;
-  var a2713;
-  var a2714;
-  var a2715;
-  var a2716;
-  var a2717;
-  var a2718;
-  var a2719;
-  var a2720;
-  var a2721;
-  var a2722;
-  var a2723;
-  var a2724;
-  var a2725;
-  var a2726;
-  var a2727;
-  var a2728;
-  var a2729;
-  var a2730;
-  var a2731;
-  var a2732;
-  var a2733;
-  var a2734;
-  var a2735;
-  var a2736;
-  var a2737;
-  var a2738;
-  var a2739;
-  var a2740;
-  var a2741;
-  var a2742;
-  var a2743;
-  var a2744;
-  var a2745;
-  var a2746;
-  var a2747;
-  var a2748;
-  var a2749;
-  var a2750;
-  var a2751;
-  var a2752;
-  var a2753;
-  var a2754;
-  var a2755;
-  var a2756;
-  var a2757;
-  var a2758;
-  var a2759;
-  var a2760;
-  var a2761;
-  var a2762;
-  var a2763;
-  var a2764;
-  var a2765;
-  var a2766;
-  var a2767;
-  var a2768;
-  var a2769;
-  var a2770;
-  var a2771;
-  var a2772;
-  var a2773;
-  var a2774;
-  var a2775;
-  var a2776;
-  var a2777;
-  var a2778;
-  var a2779;
-  var a2780;
-  var a2781;
-  var a2782;
-  var a2783;
-  var a2784;
-  var a2785;
-  var a2786;
-  var a2787;
-  var a2788;
-  var a2789;
-  var a2790;
-  var a2791;
-  var a2792;
-  var a2793;
-  var a2794;
-  var a2795;
-  var a2796;
-  var a2797;
-  var a2798;
-  var a2799;
-  var a2800;
-  var a2801;
-  var a2802;
-  var a2803;
-  var a2804;
-  var a2805;
-  var a2806;
-  var a2807;
-  var a2808;
-  var a2809;
-  var a2810;
-  var a2811;
-  var a2812;
-  var a2813;
-  var a2814;
-  var a2815;
-  var a2816;
-  var a2817;
-  var a2818;
-  var a2819;
-  var a2820;
-  var a2821;
-  var a2822;
-  var a2823;
-  var a2824;
-  var a2825;
-  var a2826;
-  var a2827;
-  var a2828;
-  var a2829;
-  var a2830;
-  var a2831;
-  var a2832;
-  var a2833;
-  var a2834;
-  var a2835;
-  var a2836;
-  var a2837;
-  var a2838;
-  var a2839;
-  var a2840;
-  var a2841;
-  var a2842;
-  var a2843;
-  var a2844;
-  var a2845;
-  var a2846;
-  var a2847;
-  var a2848;
-  var a2849;
-  var a2850;
-  var a2851;
-  var a2852;
-  var a2853;
-  var a2854;
-  var a2855;
-  var a2856;
-  var a2857;
-  var a2858;
-  var a2859;
-  var a2860;
-  var a2861;
-  var a2862;
-  var a2863;
-  var a2864;
-  var a2865;
-  var a2866;
-  var a2867;
-  var a2868;
-  var a2869;
-  var a2870;
-  var a2871;
-  var a2872;
-  var a2873;
-  var a2874;
-  var a2875;
-  var a2876;
-  var a2877;
-  var a2878;
-  var a2879;
-  var a2880;
-  var a2881;
-  var a2882;
-  var a2883;
-  var a2884;
-  var a2885;
-  var a2886;
-  var a2887;
-  var a2888;
-  var a2889;
-  var a2890;
-  var a2891;
-  var a2892;
-  var a2893;
-  var a2894;
-  var a2895;
-  var a2896;
-  var a2897;
-  var a2898;
-  var a2899;
-  var a2900;
-  var a2901;
-  var a2902;
-  var a2903;
-  var a2904;
-  var a2905;
-  var a2906;
-  var a2907;
-  var a2908;
-  var a2909;
-  var a2910;
-  var a2911;
-  var a2912;
-  var a2913;
-  var a2914;
-  var a2915;
-  var a2916;
-  var a2917;
-  var a2918;
-  var a2919;
-  var a2920;
-  var a2921;
-  var a2922;
-  var a2923;
-  var a2924;
-  var a2925;
-  var a2926;
-  var a2927;
-  var a2928;
-  var a2929;
-  var a2930;
-  var a2931;
-  var a2932;
-  var a2933;
-  var a2934;
-  var a2935;
-  var a2936;
-  var a2937;
-  var a2938;
-  var a2939;
-  var a2940;
-  var a2941;
-  var a2942;
-  var a2943;
-  var a2944;
-  var a2945;
-  var a2946;
-  var a2947;
-  var a2948;
-  var a2949;
-  var a2950;
-  var a2951;
-  var a2952;
-  var a2953;
-  var a2954;
-  var a2955;
-  var a2956;
-  var a2957;
-  var a2958;
-  var a2959;
-  var a2960;
-  var a2961;
-  var a2962;
-  var a2963;
-  var a2964;
-  var a2965;
-  var a2966;
-  var a2967;
-  var a2968;
-  var a2969;
-  var a2970;
-  var a2971;
-  var a2972;
-  var a2973;
-  var a2974;
-  var a2975;
-  var a2976;
-  var a2977;
-  var a2978;
-  var a2979;
-  var a2980;
-  var a2981;
-  var a2982;
-  var a2983;
-  var a2984;
-  var a2985;
-  var a2986;
-  var a2987;
-  var a2988;
-  var a2989;
-  var a2990;
-  var a2991;
-  var a2992;
-  var a2993;
-  var a2994;
-  var a2995;
-  var a2996;
-  var a2997;
-  var a2998;
-  var a2999;
-  var a3000;
-  var a3001;
-  var a3002;
-  var a3003;
-  var a3004;
-  var a3005;
-  var a3006;
-  var a3007;
-  var a3008;
-  var a3009;
-  var a3010;
-  var a3011;
-  var a3012;
-  var a3013;
-  var a3014;
-  var a3015;
-  var a3016;
-  var a3017;
-  var a3018;
-  var a3019;
-  var a3020;
-  var a3021;
-  var a3022;
-  var a3023;
-  var a3024;
-  var a3025;
-  var a3026;
-  var a3027;
-  var a3028;
-  var a3029;
-  var a3030;
-  var a3031;
-  var a3032;
-  var a3033;
-  var a3034;
-  var a3035;
-  var a3036;
-  var a3037;
-  var a3038;
-  var a3039;
-  var a3040;
-  var a3041;
-  var a3042;
-  var a3043;
-  var a3044;
-  var a3045;
-  var a3046;
-  var a3047;
-  var a3048;
-  var a3049;
-  var a3050;
-  var a3051;
-  var a3052;
-  var a3053;
-  var a3054;
-  var a3055;
-  var a3056;
-  var a3057;
-  var a3058;
-  var a3059;
-  var a3060;
-  var a3061;
-  var a3062;
-  var a3063;
-  var a3064;
-  var a3065;
-  var a3066;
-  var a3067;
-  var a3068;
-  var a3069;
-  var a3070;
-  var a3071;
-  var a3072;
-  var a3073;
-  var a3074;
-  var a3075;
-  var a3076;
-  var a3077;
-  var a3078;
-  var a3079;
-  var a3080;
-  var a3081;
-  var a3082;
-  var a3083;
-  var a3084;
-  var a3085;
-  var a3086;
-  var a3087;
-  var a3088;
-  var a3089;
-  var a3090;
-  var a3091;
-  var a3092;
-  var a3093;
-  var a3094;
-  var a3095;
-  var a3096;
-  var a3097;
-  var a3098;
-  var a3099;
-  var a3100;
-  var a3101;
-  var a3102;
-  var a3103;
-  var a3104;
-  var a3105;
-  var a3106;
-  var a3107;
-  var a3108;
-  var a3109;
-  var a3110;
-  var a3111;
-  var a3112;
-  var a3113;
-  var a3114;
-  var a3115;
-  var a3116;
-  var a3117;
-  var a3118;
-  var a3119;
-  var a3120;
-  var a3121;
-  var a3122;
-  var a3123;
-  var a3124;
-  var a3125;
-  var a3126;
-  var a3127;
-  var a3128;
-  var a3129;
-  var a3130;
-  var a3131;
-  var a3132;
-  var a3133;
-  var a3134;
-  var a3135;
-  var a3136;
-  var a3137;
-  var a3138;
-  var a3139;
-  var a3140;
-  var a3141;
-  var a3142;
-  var a3143;
-  var a3144;
-  var a3145;
-  var a3146;
-  var a3147;
-  var a3148;
-  var a3149;
-  var a3150;
-  var a3151;
-  var a3152;
-  var a3153;
-  var a3154;
-  var a3155;
-  var a3156;
-  var a3157;
-  var a3158;
-  var a3159;
-  var a3160;
-  var a3161;
-  var a3162;
-  var a3163;
-  var a3164;
-  var a3165;
-  var a3166;
-  var a3167;
-  var a3168;
-  var a3169;
-  var a3170;
-  var a3171;
-  var a3172;
-  var a3173;
-  var a3174;
-  var a3175;
-  var a3176;
-  var a3177;
-  var a3178;
-  var a3179;
-  var a3180;
-  var a3181;
-  var a3182;
-  var a3183;
-  var a3184;
-  var a3185;
-  var a3186;
-  var a3187;
-  var a3188;
-  var a3189;
-  var a3190;
-  var a3191;
-  var a3192;
-  var a3193;
-  var a3194;
-  var a3195;
-  var a3196;
-  var a3197;
-  var a3198;
-  var a3199;
-  var a3200;
-  var a3201;
-  var a3202;
-  var a3203;
-  var a3204;
-  var a3205;
-  var a3206;
-  var a3207;
-  var a3208;
-  var a3209;
-  var a3210;
-  var a3211;
-  var a3212;
-  var a3213;
-  var a3214;
-  var a3215;
-  var a3216;
-  var a3217;
-  var a3218;
-  var a3219;
-  var a3220;
-  var a3221;
-  var a3222;
-  var a3223;
-  var a3224;
-  var a3225;
-  var a3226;
-  var a3227;
-  var a3228;
-  var a3229;
-  var a3230;
-  var a3231;
-  var a3232;
-  var a3233;
-  var a3234;
-  var a3235;
-  var a3236;
-  var a3237;
-  var a3238;
-  var a3239;
-  var a3240;
-  var a3241;
-  var a3242;
-  var a3243;
-  var a3244;
-  var a3245;
-  var a3246;
-  var a3247;
-  var a3248;
-  var a3249;
-  var a3250;
-  var a3251;
-  var a3252;
-  var a3253;
-  var a3254;
-  var a3255;
-  var a3256;
-  var a3257;
-  var a3258;
-  var a3259;
-  var a3260;
-  var a3261;
-  var a3262;
-  var a3263;
-  var a3264;
-  var a3265;
-  var a3266;
-  var a3267;
-  var a3268;
-  var a3269;
-  var a3270;
-  var a3271;
-  var a3272;
-  var a3273;
-  var a3274;
-  var a3275;
-  var a3276;
-  var a3277;
-  var a3278;
-  var a3279;
-  var a3280;
-  var a3281;
-  var a3282;
-  var a3283;
-  var a3284;
-  var a3285;
-  var a3286;
-  var a3287;
-  var a3288;
-  var a3289;
-  var a3290;
-  var a3291;
-  var a3292;
-  var a3293;
-  var a3294;
-  var a3295;
-  var a3296;
-  var a3297;
-  var a3298;
-  var a3299;
-  var a3300;
-  var a3301;
-  var a3302;
-  var a3303;
-  var a3304;
-  var a3305;
-  var a3306;
-  var a3307;
-  var a3308;
-  var a3309;
-  var a3310;
-  var a3311;
-  var a3312;
-  var a3313;
-  var a3314;
-  var a3315;
-  var a3316;
-  var a3317;
-  var a3318;
-  var a3319;
-  var a3320;
-  var a3321;
-  var a3322;
-  var a3323;
-  var a3324;
-  var a3325;
-  var a3326;
-  var a3327;
-  var a3328;
-  var a3329;
-  var a3330;
-  var a3331;
-  var a3332;
-  var a3333;
-  var a3334;
-  var a3335;
-  var a3336;
-  var a3337;
-  var a3338;
-  var a3339;
-  var a3340;
-  var a3341;
-  var a3342;
-  var a3343;
-  var a3344;
-  var a3345;
-  var a3346;
-  var a3347;
-  var a3348;
-  var a3349;
-  var a3350;
-  var a3351;
-  var a3352;
-  var a3353;
-  var a3354;
-  var a3355;
-  var a3356;
-  var a3357;
-  var a3358;
-  var a3359;
-  var a3360;
-  var a3361;
-  var a3362;
-  var a3363;
-  var a3364;
-  var a3365;
-  var a3366;
-  var a3367;
-  var a3368;
-  var a3369;
-  var a3370;
-  var a3371;
-  var a3372;
-  var a3373;
-  var a3374;
-  var a3375;
-  var a3376;
-  var a3377;
-  var a3378;
-  var a3379;
-  var a3380;
-  var a3381;
-  var a3382;
-  var a3383;
-  var a3384;
-  var a3385;
-  var a3386;
-  var a3387;
-  var a3388;
-  var a3389;
-  var a3390;
-  var a3391;
-  var a3392;
-  var a3393;
-  var a3394;
-  var a3395;
-  var a3396;
-  var a3397;
-  var a3398;
-  var a3399;
-  var a3400;
-  var a3401;
-  var a3402;
-  var a3403;
-  var a3404;
-  var a3405;
-  var a3406;
-  var a3407;
-  var a3408;
-  var a3409;
-  var a3410;
-  var a3411;
-  var a3412;
-  var a3413;
-  var a3414;
-  var a3415;
-  var a3416;
-  var a3417;
-  var a3418;
-  var a3419;
-  var a3420;
-  var a3421;
-  var a3422;
-  var a3423;
-  var a3424;
-  var a3425;
-  var a3426;
-  var a3427;
-  var a3428;
-  var a3429;
-  var a3430;
-  var a3431;
-  var a3432;
-  var a3433;
-  var a3434;
-  var a3435;
-  var a3436;
-  var a3437;
-  var a3438;
-  var a3439;
-  var a3440;
-  var a3441;
-  var a3442;
-  var a3443;
-  var a3444;
-  var a3445;
-  var a3446;
-  var a3447;
-  var a3448;
-  var a3449;
-  var a3450;
-  var a3451;
-  var a3452;
-  var a3453;
-  var a3454;
-  var a3455;
-  var a3456;
-  var a3457;
-  var a3458;
-  var a3459;
-  var a3460;
-  var a3461;
-  var a3462;
-  var a3463;
-  var a3464;
-  var a3465;
-  var a3466;
-  var a3467;
-  var a3468;
-  var a3469;
-  var a3470;
-  var a3471;
-  var a3472;
-  var a3473;
-  var a3474;
-  var a3475;
-  var a3476;
-  var a3477;
-  var a3478;
-  var a3479;
-  var a3480;
-  var a3481;
-  var a3482;
-  var a3483;
-  var a3484;
-  var a3485;
-  var a3486;
-  var a3487;
-  var a3488;
-  var a3489;
-  var a3490;
-  var a3491;
-  var a3492;
-  var a3493;
-  var a3494;
-  var a3495;
-  var a3496;
-  var a3497;
-  var a3498;
-  var a3499;
-  var a3500;
-  var a3501;
-  var a3502;
-  var a3503;
-  var a3504;
-  var a3505;
-  var a3506;
-  var a3507;
-  var a3508;
-  var a3509;
-  var a3510;
-  var a3511;
-  var a3512;
-  var a3513;
-  var a3514;
-  var a3515;
-  var a3516;
-  var a3517;
-  var a3518;
-  var a3519;
-  var a3520;
-  var a3521;
-  var a3522;
-  var a3523;
-  var a3524;
-  var a3525;
-  var a3526;
-  var a3527;
-  var a3528;
-  var a3529;
-  var a3530;
-  var a3531;
-  var a3532;
-  var a3533;
-  var a3534;
-  var a3535;
-  var a3536;
-  var a3537;
-  var a3538;
-  var a3539;
-  var a3540;
-  var a3541;
-  var a3542;
-  var a3543;
-  var a3544;
-  var a3545;
-  var a3546;
-  var a3547;
-  var a3548;
-  var a3549;
-  var a3550;
-  var a3551;
-  var a3552;
-  var a3553;
-  var a3554;
-  var a3555;
-  var a3556;
-  var a3557;
-  var a3558;
-  var a3559;
-  var a3560;
-  var a3561;
-  var a3562;
-  var a3563;
-  var a3564;
-  var a3565;
-  var a3566;
-  var a3567;
-  var a3568;
-  var a3569;
-  var a3570;
-  var a3571;
-  var a3572;
-  var a3573;
-  var a3574;
-  var a3575;
-  var a3576;
-  var a3577;
-  var a3578;
-  var a3579;
-  var a3580;
-  var a3581;
-  var a3582;
-  var a3583;
-  var a3584;
-  var a3585;
-  var a3586;
-  var a3587;
-  var a3588;
-  var a3589;
-  var a3590;
-  var a3591;
-  var a3592;
-  var a3593;
-  var a3594;
-  var a3595;
-  var a3596;
-  var a3597;
-  var a3598;
-  var a3599;
-  var a3600;
-  var a3601;
-  var a3602;
-  var a3603;
-  var a3604;
-  var a3605;
-  var a3606;
-  var a3607;
-  var a3608;
-  var a3609;
-  var a3610;
-  var a3611;
-  var a3612;
-  var a3613;
-  var a3614;
-  var a3615;
-  var a3616;
-  var a3617;
-  var a3618;
-  var a3619;
-  var a3620;
-  var a3621;
-  var a3622;
-  var a3623;
-  var a3624;
-  var a3625;
-  var a3626;
-  var a3627;
-  var a3628;
-  var a3629;
-  var a3630;
-  var a3631;
-  var a3632;
-  var a3633;
-  var a3634;
-  var a3635;
-  var a3636;
-  var a3637;
-  var a3638;
-  var a3639;
-  var a3640;
-  var a3641;
-  var a3642;
-  var a3643;
-  var a3644;
-  var a3645;
-  var a3646;
-  var a3647;
-  var a3648;
-  var a3649;
-  var a3650;
-  var a3651;
-  var a3652;
-  var a3653;
-  var a3654;
-  var a3655;
-  var a3656;
-  var a3657;
-  var a3658;
-  var a3659;
-  var a3660;
-  var a3661;
-  var a3662;
-  var a3663;
-  var a3664;
-  var a3665;
-  var a3666;
-  var a3667;
-  var a3668;
-  var a3669;
-  var a3670;
-  var a3671;
-  var a3672;
-  var a3673;
-  var a3674;
-  var a3675;
-  var a3676;
-  var a3677;
-  var a3678;
-  var a3679;
-  var a3680;
-  var a3681;
-  var a3682;
-  var a3683;
-  var a3684;
-  var a3685;
-  var a3686;
-  var a3687;
-  var a3688;
-  var a3689;
-  var a3690;
-  var a3691;
-  var a3692;
-  var a3693;
-  var a3694;
-  var a3695;
-  var a3696;
-  var a3697;
-  var a3698;
-  var a3699;
-  var a3700;
-  var a3701;
-  var a3702;
-  var a3703;
-  var a3704;
-  var a3705;
-  var a3706;
-  var a3707;
-  var a3708;
-  var a3709;
-  var a3710;
-  var a3711;
-  var a3712;
-  var a3713;
-  var a3714;
-  var a3715;
-  var a3716;
-  var a3717;
-  var a3718;
-  var a3719;
-  var a3720;
-  var a3721;
-  var a3722;
-  var a3723;
-  var a3724;
-  var a3725;
-  var a3726;
-  var a3727;
-  var a3728;
-  var a3729;
-  var a3730;
-  var a3731;
-  var a3732;
-  var a3733;
-  var a3734;
-  var a3735;
-  var a3736;
-  var a3737;
-  var a3738;
-  var a3739;
-  var a3740;
-  var a3741;
-  var a3742;
-  var a3743;
-  var a3744;
-  var a3745;
-  var a3746;
-  var a3747;
-  var a3748;
-  var a3749;
-  var a3750;
-  var a3751;
-  var a3752;
-  var a3753;
-  var a3754;
-  var a3755;
-  var a3756;
-  var a3757;
-  var a3758;
-  var a3759;
-  var a3760;
-  var a3761;
-  var a3762;
-  var a3763;
-  var a3764;
-  var a3765;
-  var a3766;
-  var a3767;
-  var a3768;
-  var a3769;
-  var a3770;
-  var a3771;
-  var a3772;
-  var a3773;
-  var a3774;
-  var a3775;
-  var a3776;
-  var a3777;
-  var a3778;
-  var a3779;
-  var a3780;
-  var a3781;
-  var a3782;
-  var a3783;
-  var a3784;
-  var a3785;
-  var a3786;
-  var a3787;
-  var a3788;
-  var a3789;
-  var a3790;
-  var a3791;
-  var a3792;
-  var a3793;
-  var a3794;
-  var a3795;
-  var a3796;
-  var a3797;
-  var a3798;
-  var a3799;
-  var a3800;
-  var a3801;
-  var a3802;
-  var a3803;
-  var a3804;
-  var a3805;
-  var a3806;
-  var a3807;
-  var a3808;
-  var a3809;
-  var a3810;
-  var a3811;
-  var a3812;
-  var a3813;
-  var a3814;
-  var a3815;
-  var a3816;
-  var a3817;
-  var a3818;
-  var a3819;
-  var a3820;
-  var a3821;
-  var a3822;
-  var a3823;
-  var a3824;
-  var a3825;
-  var a3826;
-  var a3827;
-  var a3828;
-  var a3829;
-  var a3830;
-  var a3831;
-  var a3832;
-  var a3833;
-  var a3834;
-  var a3835;
-  var a3836;
-  var a3837;
-  var a3838;
-  var a3839;
-  var a3840;
-  var a3841;
-  var a3842;
-  var a3843;
-  var a3844;
-  var a3845;
-  var a3846;
-  var a3847;
-  var a3848;
-  var a3849;
-  var a3850;
-  var a3851;
-  var a3852;
-  var a3853;
-  var a3854;
-  var a3855;
-  var a3856;
-  var a3857;
-  var a3858;
-  var a3859;
-  var a3860;
-  var a3861;
-  var a3862;
-  var a3863;
-  var a3864;
-  var a3865;
-  var a3866;
-  var a3867;
-  var a3868;
-  var a3869;
-  var a3870;
-  var a3871;
-  var a3872;
-  var a3873;
-  var a3874;
-  var a3875;
-  var a3876;
-  var a3877;
-  var a3878;
-  var a3879;
-  var a3880;
-  var a3881;
-  var a3882;
-  var a3883;
-  var a3884;
-  var a3885;
-  var a3886;
-  var a3887;
-  var a3888;
-  var a3889;
-  var a3890;
-  var a3891;
-  var a3892;
-  var a3893;
-  var a3894;
-  var a3895;
-  var a3896;
-  var a3897;
-  var a3898;
-  var a3899;
-  var a3900;
-  var a3901;
-  var a3902;
-  var a3903;
-  var a3904;
-  var a3905;
-  var a3906;
-  var a3907;
-  var a3908;
-  var a3909;
-  var a3910;
-  var a3911;
-  var a3912;
-  var a3913;
-  var a3914;
-  var a3915;
-  var a3916;
-  var a3917;
-  var a3918;
-  var a3919;
-  var a3920;
-  var a3921;
-  var a3922;
-  var a3923;
-  var a3924;
-  var a3925;
-  var a3926;
-  var a3927;
-  var a3928;
-  var a3929;
-  var a3930;
-  var a3931;
-  var a3932;
-  var a3933;
-  var a3934;
-  var a3935;
-  var a3936;
-  var a3937;
-  var a3938;
-  var a3939;
-  var a3940;
-  var a3941;
-  var a3942;
-  var a3943;
-  var a3944;
-  var a3945;
-  var a3946;
-  var a3947;
-  var a3948;
-  var a3949;
-  var a3950;
-  var a3951;
-  var a3952;
-  var a3953;
-  var a3954;
-  var a3955;
-  var a3956;
-  var a3957;
-  var a3958;
-  var a3959;
-  var a3960;
-  var a3961;
-  var a3962;
-  var a3963;
-  var a3964;
-  var a3965;
-  var a3966;
-  var a3967;
-  var a3968;
-  var a3969;
-  var a3970;
-  var a3971;
-  var a3972;
-  var a3973;
-  var a3974;
-  var a3975;
-  var a3976;
-  var a3977;
-  var a3978;
-  var a3979;
-  var a3980;
-  var a3981;
-  var a3982;
-  var a3983;
-  var a3984;
-  var a3985;
-  var a3986;
-  var a3987;
-  var a3988;
-  var a3989;
-  var a3990;
-  var a3991;
-  var a3992;
-  var a3993;
-  var a3994;
-  var a3995;
-  var a3996;
-  var a3997;
-  var a3998;
-  var a3999;
-  var a4000;
-  var a4001;
-  var a4002;
-  var a4003;
-  var a4004;
-  var a4005;
-  var a4006;
-  var a4007;
-  var a4008;
-  var a4009;
-  var a4010;
-  var a4011;
-  var a4012;
-  var a4013;
-  var a4014;
-  var a4015;
-  var a4016;
-  var a4017;
-  var a4018;
-  var a4019;
-  var a4020;
-  var a4021;
-  var a4022;
-  var a4023;
-  var a4024;
-  var a4025;
-  var a4026;
-  var a4027;
-  var a4028;
-  var a4029;
-  var a4030;
-  var a4031;
-  var a4032;
-  var a4033;
-  var a4034;
-  var a4035;
-  var a4036;
-  var a4037;
-  var a4038;
-  var a4039;
-  var a4040;
-  var a4041;
-  var a4042;
-  var a4043;
-  var a4044;
-  var a4045;
-  var a4046;
-  var a4047;
-  var a4048;
-  var a4049;
-  var a4050;
-  var a4051;
-  var a4052;
-  var a4053;
-  var a4054;
-  var a4055;
-  var a4056;
-  var a4057;
-  var a4058;
-  var a4059;
-  var a4060;
-  var a4061;
-  var a4062;
-  var a4063;
-  var a4064;
-  var a4065;
-  var a4066;
-  var a4067;
-  var a4068;
-  var a4069;
-  var a4070;
-  var a4071;
-  var a4072;
-  var a4073;
-  var a4074;
-  var a4075;
-  var a4076;
-  var a4077;
-  var a4078;
-  var a4079;
-  var a4080;
-  var a4081;
-  var a4082;
-  var a4083;
-  var a4084;
-  var a4085;
-  var a4086;
-  var a4087;
-  var a4088;
-  var a4089;
-  var a4090;
-  var a4091;
-  var a4092;
-  var a4093;
-  var a4094;
-  var a4095;
-  var a4096;
-  var a4097;
-  var a4098;
-  var a4099;
-  var a4100;
-  var a4101;
-  var a4102;
-  var a4103;
-  var a4104;
-  var a4105;
-  var a4106;
-  var a4107;
-  var a4108;
-  var a4109;
-  var a4110;
-  var a4111;
-  var a4112;
-  var a4113;
-  var a4114;
-  var a4115;
-  var a4116;
-  var a4117;
-  var a4118;
-  var a4119;
-  var a4120;
-  var a4121;
-  var a4122;
-  var a4123;
-  var a4124;
-  var a4125;
-  var a4126;
-  var a4127;
-  var a4128;
-  var a4129;
-  var a4130;
-  var a4131;
-  var a4132;
-  var a4133;
-  var a4134;
-  var a4135;
-  var a4136;
-  var a4137;
-  var a4138;
-  var a4139;
-  var a4140;
-  var a4141;
-  var a4142;
-  var a4143;
-  var a4144;
-  var a4145;
-  var a4146;
-  var a4147;
-  var a4148;
-  var a4149;
-  var a4150;
-  var a4151;
-  var a4152;
-  var a4153;
-  var a4154;
-  var a4155;
-  var a4156;
-  var a4157;
-  var a4158;
-  var a4159;
-  var a4160;
-  var a4161;
-  var a4162;
-  var a4163;
-  var a4164;
-  var a4165;
-  var a4166;
-  var a4167;
-  var a4168;
-  var a4169;
-  var a4170;
-  var a4171;
-  var a4172;
-  var a4173;
-  var a4174;
-  var a4175;
-  var a4176;
-  var a4177;
-  var a4178;
-  var a4179;
-  var a4180;
-  var a4181;
-  var a4182;
-  var a4183;
-  var a4184;
-  var a4185;
-  var a4186;
-  var a4187;
-  var a4188;
-  var a4189;
-  var a4190;
-  var a4191;
-  var a4192;
-  var a4193;
-  var a4194;
-  var a4195;
-  var a4196;
-  var a4197;
-  var a4198;
-  var a4199;
-  var a4200;
-  var a4201;
-  var a4202;
-  var a4203;
-  var a4204;
-  var a4205;
-  var a4206;
-  var a4207;
-  var a4208;
-  var a4209;
-  var a4210;
-  var a4211;
-  var a4212;
-  var a4213;
-  var a4214;
-  var a4215;
-  var a4216;
-  var a4217;
-  var a4218;
-  var a4219;
-  var a4220;
-  var a4221;
-  var a4222;
-  var a4223;
-  var a4224;
-  var a4225;
-  var a4226;
-  var a4227;
-  var a4228;
-  var a4229;
-  var a4230;
-  var a4231;
-  var a4232;
-  var a4233;
-  var a4234;
-  var a4235;
-  var a4236;
-  var a4237;
-  var a4238;
-  var a4239;
-  var a4240;
-  var a4241;
-  var a4242;
-  var a4243;
-  var a4244;
-  var a4245;
-  var a4246;
-  var a4247;
-  var a4248;
-  var a4249;
-  var a4250;
-  var a4251;
-  var a4252;
-  var a4253;
-  var a4254;
-  var a4255;
-  var a4256;
-  var a4257;
-  var a4258;
-  var a4259;
-  var a4260;
-  var a4261;
-  var a4262;
-  var a4263;
-  var a4264;
-  var a4265;
-  var a4266;
-  var a4267;
-  var a4268;
-  var a4269;
-  var a4270;
-  var a4271;
-  var a4272;
-  var a4273;
-  var a4274;
-  var a4275;
-  var a4276;
-  var a4277;
-  var a4278;
-  var a4279;
-  var a4280;
-  var a4281;
-  var a4282;
-  var a4283;
-  var a4284;
-  var a4285;
-  var a4286;
-  var a4287;
-  var a4288;
-  var a4289;
-  var a4290;
-  var a4291;
-  var a4292;
-  var a4293;
-  var a4294;
-  var a4295;
-  var a4296;
-  var a4297;
-  var a4298;
-  var a4299;
-  var a4300;
-  var a4301;
-  var a4302;
-  var a4303;
-  var a4304;
-  var a4305;
-  var a4306;
-  var a4307;
-  var a4308;
-  var a4309;
-  var a4310;
-  var a4311;
-  var a4312;
-  var a4313;
-  var a4314;
-  var a4315;
-  var a4316;
-  var a4317;
-  var a4318;
-  var a4319;
-  var a4320;
-  var a4321;
-  var a4322;
-  var a4323;
-  var a4324;
-  var a4325;
-  var a4326;
-  var a4327;
-  var a4328;
-  var a4329;
-  var a4330;
-  var a4331;
-  var a4332;
-  var a4333;
-  var a4334;
-  var a4335;
-  var a4336;
-  var a4337;
-  var a4338;
-  var a4339;
-  var a4340;
-  var a4341;
-  var a4342;
-  var a4343;
-  var a4344;
-  var a4345;
-  var a4346;
-  var a4347;
-  var a4348;
-  var a4349;
-  var a4350;
-  var a4351;
-  var a4352;
-  var a4353;
-  var a4354;
-  var a4355;
-  var a4356;
-  var a4357;
-  var a4358;
-  var a4359;
-  var a4360;
-  var a4361;
-  var a4362;
-  var a4363;
-  var a4364;
-  var a4365;
-  var a4366;
-  var a4367;
-  var a4368;
-  var a4369;
-  var a4370;
-  var a4371;
-  var a4372;
-  var a4373;
-  var a4374;
-  var a4375;
-  var a4376;
-  var a4377;
-  var a4378;
-  var a4379;
-  var a4380;
-  var a4381;
-  var a4382;
-  var a4383;
-  var a4384;
-  var a4385;
-  var a4386;
-  var a4387;
-  var a4388;
-  var a4389;
-  var a4390;
-  var a4391;
-  var a4392;
-  var a4393;
-  var a4394;
-  var a4395;
-  var a4396;
-  var a4397;
-  var a4398;
-  var a4399;
-  var a4400;
-  var a4401;
-  var a4402;
-  var a4403;
-  var a4404;
-  var a4405;
-  var a4406;
-  var a4407;
-  var a4408;
-  var a4409;
-  var a4410;
-  var a4411;
-  var a4412;
-  var a4413;
-  var a4414;
-  var a4415;
-  var a4416;
-  var a4417;
-  var a4418;
-  var a4419;
-  var a4420;
-  var a4421;
-  var a4422;
-  var a4423;
-  var a4424;
-  var a4425;
-  var a4426;
-  var a4427;
-  var a4428;
-  var a4429;
-  var a4430;
-  var a4431;
-  var a4432;
-  var a4433;
-  var a4434;
-  var a4435;
-  var a4436;
-  var a4437;
-  var a4438;
-  var a4439;
-  var a4440;
-  var a4441;
-  var a4442;
-  var a4443;
-  var a4444;
-  var a4445;
-  var a4446;
-  var a4447;
-  var a4448;
-  var a4449;
-  var a4450;
-  var a4451;
-  var a4452;
-  var a4453;
-  var a4454;
-  var a4455;
-  var a4456;
-  var a4457;
-  var a4458;
-  var a4459;
-  var a4460;
-  var a4461;
-  var a4462;
-  var a4463;
-  var a4464;
-  var a4465;
-  var a4466;
-  var a4467;
-  var a4468;
-  var a4469;
-  var a4470;
-  var a4471;
-  var a4472;
-  var a4473;
-  var a4474;
-  var a4475;
-  var a4476;
-  var a4477;
-  var a4478;
-  var a4479;
-  var a4480;
-  var a4481;
-  var a4482;
-  var a4483;
-  var a4484;
-  var a4485;
-  var a4486;
-  var a4487;
-  var a4488;
-  var a4489;
-  var a4490;
-  var a4491;
-  var a4492;
-  var a4493;
-  var a4494;
-  var a4495;
-  var a4496;
-  var a4497;
-  var a4498;
-  var a4499;
-  var a4500;
-  var a4501;
-  var a4502;
-  var a4503;
-  var a4504;
-  var a4505;
-  var a4506;
-  var a4507;
-  var a4508;
-  var a4509;
-  var a4510;
-  var a4511;
-  var a4512;
-  var a4513;
-  var a4514;
-  var a4515;
-  var a4516;
-  var a4517;
-  var a4518;
-  var a4519;
-  var a4520;
-  var a4521;
-  var a4522;
-  var a4523;
-  var a4524;
-  var a4525;
-  var a4526;
-  var a4527;
-  var a4528;
-  var a4529;
-  var a4530;
-  var a4531;
-  var a4532;
-  var a4533;
-  var a4534;
-  var a4535;
-  var a4536;
-  var a4537;
-  var a4538;
-  var a4539;
-  var a4540;
-  var a4541;
-  var a4542;
-  var a4543;
-  var a4544;
-  var a4545;
-  var a4546;
-  var a4547;
-  var a4548;
-  var a4549;
-  var a4550;
-  var a4551;
-  var a4552;
-  var a4553;
-  var a4554;
-  var a4555;
-  var a4556;
-  var a4557;
-  var a4558;
-  var a4559;
-  var a4560;
-  var a4561;
-  var a4562;
-  var a4563;
-  var a4564;
-  var a4565;
-  var a4566;
-  var a4567;
-  var a4568;
-  var a4569;
-  var a4570;
-  var a4571;
-  var a4572;
-  var a4573;
-  var a4574;
-  var a4575;
-  var a4576;
-  var a4577;
-  var a4578;
-  var a4579;
-  var a4580;
-  var a4581;
-  var a4582;
-  var a4583;
-  var a4584;
-  var a4585;
-  var a4586;
-  var a4587;
-  var a4588;
-  var a4589;
-  var a4590;
-  var a4591;
-  var a4592;
-  var a4593;
-  var a4594;
-  var a4595;
-  var a4596;
-  var a4597;
-  var a4598;
-  var a4599;
-  var a4600;
-  var a4601;
-  var a4602;
-  var a4603;
-  var a4604;
-  var a4605;
-  var a4606;
-  var a4607;
-  var a4608;
-  var a4609;
-  var a4610;
-  var a4611;
-  var a4612;
-  var a4613;
-  var a4614;
-  var a4615;
-  var a4616;
-  var a4617;
-  var a4618;
-  var a4619;
-  var a4620;
-  var a4621;
-  var a4622;
-  var a4623;
-  var a4624;
-  var a4625;
-  var a4626;
-  var a4627;
-  var a4628;
-  var a4629;
-  var a4630;
-  var a4631;
-  var a4632;
-  var a4633;
-  var a4634;
-  var a4635;
-  var a4636;
-  var a4637;
-  var a4638;
-  var a4639;
-  var a4640;
-  var a4641;
-  var a4642;
-  var a4643;
-  var a4644;
-  var a4645;
-  var a4646;
-  var a4647;
-  var a4648;
-  var a4649;
-  var a4650;
-  var a4651;
-  var a4652;
-  var a4653;
-  var a4654;
-  var a4655;
-  var a4656;
-  var a4657;
-  var a4658;
-  var a4659;
-  var a4660;
-  var a4661;
-  var a4662;
-  var a4663;
-  var a4664;
-  var a4665;
-  var a4666;
-  var a4667;
-  var a4668;
-  var a4669;
-  var a4670;
-  var a4671;
-  var a4672;
-  var a4673;
-  var a4674;
-  var a4675;
-  var a4676;
-  var a4677;
-  var a4678;
-  var a4679;
-  var a4680;
-  var a4681;
-  var a4682;
-  var a4683;
-  var a4684;
-  var a4685;
-  var a4686;
-  var a4687;
-  var a4688;
-  var a4689;
-  var a4690;
-  var a4691;
-  var a4692;
-  var a4693;
-  var a4694;
-  var a4695;
-  var a4696;
-  var a4697;
-  var a4698;
-  var a4699;
-  var a4700;
-  var a4701;
-  var a4702;
-  var a4703;
-  var a4704;
-  var a4705;
-  var a4706;
-  var a4707;
-  var a4708;
-  var a4709;
-  var a4710;
-  var a4711;
-  var a4712;
-  var a4713;
-  var a4714;
-  var a4715;
-  var a4716;
-  var a4717;
-  var a4718;
-  var a4719;
-  var a4720;
-  var a4721;
-  var a4722;
-  var a4723;
-  var a4724;
-  var a4725;
-  var a4726;
-  var a4727;
-  var a4728;
-  var a4729;
-  var a4730;
-  var a4731;
-  var a4732;
-  var a4733;
-  var a4734;
-  var a4735;
-  var a4736;
-  var a4737;
-  var a4738;
-  var a4739;
-  var a4740;
-  var a4741;
-  var a4742;
-  var a4743;
-  var a4744;
-  var a4745;
-  var a4746;
-  var a4747;
-  var a4748;
-  var a4749;
-  var a4750;
-  var a4751;
-  var a4752;
-  var a4753;
-  var a4754;
-  var a4755;
-  var a4756;
-  var a4757;
-  var a4758;
-  var a4759;
-  var a4760;
-  var a4761;
-  var a4762;
-  var a4763;
-  var a4764;
-  var a4765;
-  var a4766;
-  var a4767;
-  var a4768;
-  var a4769;
-  var a4770;
-  var a4771;
-  var a4772;
-  var a4773;
-  var a4774;
-  var a4775;
-  var a4776;
-  var a4777;
-  var a4778;
-  var a4779;
-  var a4780;
-  var a4781;
-  var a4782;
-  var a4783;
-  var a4784;
-  var a4785;
-  var a4786;
-  var a4787;
-  var a4788;
-  var a4789;
-  var a4790;
-  var a4791;
-  var a4792;
-  var a4793;
-  var a4794;
-  var a4795;
-  var a4796;
-  var a4797;
-  var a4798;
-  var a4799;
-  var a4800;
-  var a4801;
-  var a4802;
-  var a4803;
-  var a4804;
-  var a4805;
-  var a4806;
-  var a4807;
-  var a4808;
-  var a4809;
-  var a4810;
-  var a4811;
-  var a4812;
-  var a4813;
-  var a4814;
-  var a4815;
-  var a4816;
-  var a4817;
-  var a4818;
-  var a4819;
-  var a4820;
-  var a4821;
-  var a4822;
-  var a4823;
-  var a4824;
-  var a4825;
-  var a4826;
-  var a4827;
-  var a4828;
-  var a4829;
-  var a4830;
-  var a4831;
-  var a4832;
-  var a4833;
-  var a4834;
-  var a4835;
-  var a4836;
-  var a4837;
-  var a4838;
-  var a4839;
-  var a4840;
-  var a4841;
-  var a4842;
-  var a4843;
-  var a4844;
-  var a4845;
-  var a4846;
-  var a4847;
-  var a4848;
-  var a4849;
-  var a4850;
-  var a4851;
-  var a4852;
-  var a4853;
-  var a4854;
-  var a4855;
-  var a4856;
-  var a4857;
-  var a4858;
-  var a4859;
-  var a4860;
-  var a4861;
-  var a4862;
-  var a4863;
-  var a4864;
-  var a4865;
-  var a4866;
-  var a4867;
-  var a4868;
-  var a4869;
-  var a4870;
-  var a4871;
-  var a4872;
-  var a4873;
-  var a4874;
-  var a4875;
-  var a4876;
-  var a4877;
-  var a4878;
-  var a4879;
-  var a4880;
-  var a4881;
-  var a4882;
-  var a4883;
-  var a4884;
-  var a4885;
-  var a4886;
-  var a4887;
-  var a4888;
-  var a4889;
-  var a4890;
-  var a4891;
-  var a4892;
-  var a4893;
-  var a4894;
-  var a4895;
-  var a4896;
-  var a4897;
-  var a4898;
-  var a4899;
-  var a4900;
-  var a4901;
-  var a4902;
-  var a4903;
-  var a4904;
-  var a4905;
-  var a4906;
-  var a4907;
-  var a4908;
-  var a4909;
-  var a4910;
-  var a4911;
-  var a4912;
-  var a4913;
-  var a4914;
-  var a4915;
-  var a4916;
-  var a4917;
-  var a4918;
-  var a4919;
-  var a4920;
-  var a4921;
-  var a4922;
-  var a4923;
-  var a4924;
-  var a4925;
-  var a4926;
-  var a4927;
-  var a4928;
-  var a4929;
-  var a4930;
-  var a4931;
-  var a4932;
-  var a4933;
-  var a4934;
-  var a4935;
-  var a4936;
-  var a4937;
-  var a4938;
-  var a4939;
-  var a4940;
-  var a4941;
-  var a4942;
-  var a4943;
-  var a4944;
-  var a4945;
-  var a4946;
-  var a4947;
-  var a4948;
-  var a4949;
-  var a4950;
-  var a4951;
-  var a4952;
-  var a4953;
-  var a4954;
-  var a4955;
-  var a4956;
-  var a4957;
-  var a4958;
-  var a4959;
-  var a4960;
-  var a4961;
-  var a4962;
-  var a4963;
-  var a4964;
-  var a4965;
-  var a4966;
-  var a4967;
-  var a4968;
-  var a4969;
-  var a4970;
-  var a4971;
-  var a4972;
-  var a4973;
-  var a4974;
-  var a4975;
-  var a4976;
-  var a4977;
-  var a4978;
-  var a4979;
-  var a4980;
-  var a4981;
-  var a4982;
-  var a4983;
-  var a4984;
-  var a4985;
-  var a4986;
-  var a4987;
-  var a4988;
-  var a4989;
-  var a4990;
-  var a4991;
-  var a4992;
-  var a4993;
-  var a4994;
-  var a4995;
-  var a4996;
-  var a4997;
-  var a4998;
-  var a4999;
-  var a5000;
-  var a5001;
-  var a5002;
-  var a5003;
-  var a5004;
-  var a5005;
-  var a5006;
-  var a5007;
-  var a5008;
-  var a5009;
-  var a5010;
-  var a5011;
-  var a5012;
-  var a5013;
-  var a5014;
-  var a5015;
-  var a5016;
-  var a5017;
-  var a5018;
-  var a5019;
-  var a5020;
-  var a5021;
-  var a5022;
-  var a5023;
-  var a5024;
-  var a5025;
-  var a5026;
-  var a5027;
-  var a5028;
-  var a5029;
-  var a5030;
-  var a5031;
-  var a5032;
-  var a5033;
-  var a5034;
-  var a5035;
-  var a5036;
-  var a5037;
-  var a5038;
-  var a5039;
-  var a5040;
-  var a5041;
-  var a5042;
-  var a5043;
-  var a5044;
-  var a5045;
-  var a5046;
-  var a5047;
-  var a5048;
-  var a5049;
-  var a5050;
-  var a5051;
-  var a5052;
-  var a5053;
-  var a5054;
-  var a5055;
-  var a5056;
-  var a5057;
-  var a5058;
-  var a5059;
-  var a5060;
-  var a5061;
-  var a5062;
-  var a5063;
-  var a5064;
-  var a5065;
-  var a5066;
-  var a5067;
-  var a5068;
-  var a5069;
-  var a5070;
-  var a5071;
-  var a5072;
-  var a5073;
-  var a5074;
-  var a5075;
-  var a5076;
-  var a5077;
-  var a5078;
-  var a5079;
-  var a5080;
-  var a5081;
-  var a5082;
-  var a5083;
-  var a5084;
-  var a5085;
-  var a5086;
-  var a5087;
-  var a5088;
-  var a5089;
-  var a5090;
-  var a5091;
-  var a5092;
-  var a5093;
-  var a5094;
-  var a5095;
-  var a5096;
-  var a5097;
-  var a5098;
-  var a5099;
-  var a5100;
-  var a5101;
-  var a5102;
-  var a5103;
-  var a5104;
-  var a5105;
-  var a5106;
-  var a5107;
-  var a5108;
-  var a5109;
-  var a5110;
-  var a5111;
-  var a5112;
-  var a5113;
-  var a5114;
-  var a5115;
-  var a5116;
-  var a5117;
-  var a5118;
-  var a5119;
-  var a5120;
-  var a5121;
-  var a5122;
-  var a5123;
-  var a5124;
-  var a5125;
-  var a5126;
-  var a5127;
-  var a5128;
-  var a5129;
-  var a5130;
-  var a5131;
-  var a5132;
-  var a5133;
-  var a5134;
-  var a5135;
-  var a5136;
-  var a5137;
-  var a5138;
-  var a5139;
-  var a5140;
-  var a5141;
-  var a5142;
-  var a5143;
-  var a5144;
-  var a5145;
-  var a5146;
-  var a5147;
-  var a5148;
-  var a5149;
-  var a5150;
-  var a5151;
-  var a5152;
-  var a5153;
-  var a5154;
-  var a5155;
-  var a5156;
-  var a5157;
-  var a5158;
-  var a5159;
-  var a5160;
-  var a5161;
-  var a5162;
-  var a5163;
-  var a5164;
-  var a5165;
-  var a5166;
-  var a5167;
-  var a5168;
-  var a5169;
-  var a5170;
-  var a5171;
-  var a5172;
-  var a5173;
-  var a5174;
-  var a5175;
-  var a5176;
-  var a5177;
-  var a5178;
-  var a5179;
-  var a5180;
-  var a5181;
-  var a5182;
-  var a5183;
-  var a5184;
-  var a5185;
-  var a5186;
-  var a5187;
-  var a5188;
-  var a5189;
-  var a5190;
-  var a5191;
-  var a5192;
-  var a5193;
-  var a5194;
-  var a5195;
-  var a5196;
-  var a5197;
-  var a5198;
-  var a5199;
-  var a5200;
-  var a5201;
-  var a5202;
-  var a5203;
-  var a5204;
-  var a5205;
-  var a5206;
-  var a5207;
-  var a5208;
-  var a5209;
-  var a5210;
-  var a5211;
-  var a5212;
-  var a5213;
-  var a5214;
-  var a5215;
-  var a5216;
-  var a5217;
-  var a5218;
-  var a5219;
-  var a5220;
-  var a5221;
-  var a5222;
-  var a5223;
-  var a5224;
-  var a5225;
-  var a5226;
-  var a5227;
-  var a5228;
-  var a5229;
-  var a5230;
-  var a5231;
-  var a5232;
-  var a5233;
-  var a5234;
-  var a5235;
-  var a5236;
-  var a5237;
-  var a5238;
-  var a5239;
-  var a5240;
-  var a5241;
-  var a5242;
-  var a5243;
-  var a5244;
-  var a5245;
-  var a5246;
-  var a5247;
-  var a5248;
-  var a5249;
-  var a5250;
-  var a5251;
-  var a5252;
-  var a5253;
-  var a5254;
-  var a5255;
-  var a5256;
-  var a5257;
-  var a5258;
-  var a5259;
-  var a5260;
-  var a5261;
-  var a5262;
-  var a5263;
-  var a5264;
-  var a5265;
-  var a5266;
-  var a5267;
-  var a5268;
-  var a5269;
-  var a5270;
-  var a5271;
-  var a5272;
-  var a5273;
-  var a5274;
-  var a5275;
-  var a5276;
-  var a5277;
-  var a5278;
-  var a5279;
-  var a5280;
-  var a5281;
-  var a5282;
-  var a5283;
-  var a5284;
-  var a5285;
-  var a5286;
-  var a5287;
-  var a5288;
-  var a5289;
-  var a5290;
-  var a5291;
-  var a5292;
-  var a5293;
-  var a5294;
-  var a5295;
-  var a5296;
-  var a5297;
-  var a5298;
-  var a5299;
-  var a5300;
-  var a5301;
-  var a5302;
-  var a5303;
-  var a5304;
-  var a5305;
-  var a5306;
-  var a5307;
-  var a5308;
-  var a5309;
-  var a5310;
-  var a5311;
-  var a5312;
-  var a5313;
-  var a5314;
-  var a5315;
-  var a5316;
-  var a5317;
-  var a5318;
-  var a5319;
-  var a5320;
-  var a5321;
-  var a5322;
-  var a5323;
-  var a5324;
-  var a5325;
-  var a5326;
-  var a5327;
-  var a5328;
-  var a5329;
-  var a5330;
-  var a5331;
-  var a5332;
-  var a5333;
-  var a5334;
-  var a5335;
-  var a5336;
-  var a5337;
-  var a5338;
-  var a5339;
-  var a5340;
-  var a5341;
-  var a5342;
-  var a5343;
-  var a5344;
-  var a5345;
-  var a5346;
-  var a5347;
-  var a5348;
-  var a5349;
-  var a5350;
-  var a5351;
-  var a5352;
-  var a5353;
-  var a5354;
-  var a5355;
-  var a5356;
-  var a5357;
-  var a5358;
-  var a5359;
-  var a5360;
-  var a5361;
-  var a5362;
-  var a5363;
-  var a5364;
-  var a5365;
-  var a5366;
-  var a5367;
-  var a5368;
-  var a5369;
-  var a5370;
-  var a5371;
-  var a5372;
-  var a5373;
-  var a5374;
-  var a5375;
-  var a5376;
-  var a5377;
-  var a5378;
-  var a5379;
-  var a5380;
-  var a5381;
-  var a5382;
-  var a5383;
-  var a5384;
-  var a5385;
-  var a5386;
-  var a5387;
-  var a5388;
-  var a5389;
-  var a5390;
-  var a5391;
-  var a5392;
-  var a5393;
-  var a5394;
-  var a5395;
-  var a5396;
-  var a5397;
-  var a5398;
-  var a5399;
-  var a5400;
-  var a5401;
-  var a5402;
-  var a5403;
-  var a5404;
-  var a5405;
-  var a5406;
-  var a5407;
-  var a5408;
-  var a5409;
-  var a5410;
-  var a5411;
-  var a5412;
-  var a5413;
-  var a5414;
-  var a5415;
-  var a5416;
-  var a5417;
-  var a5418;
-  var a5419;
-  var a5420;
-  var a5421;
-  var a5422;
-  var a5423;
-  var a5424;
-  var a5425;
-  var a5426;
-  var a5427;
-  var a5428;
-  var a5429;
-  var a5430;
-  var a5431;
-  var a5432;
-  var a5433;
-  var a5434;
-  var a5435;
-  var a5436;
-  var a5437;
-  var a5438;
-  var a5439;
-  var a5440;
-  var a5441;
-  var a5442;
-  var a5443;
-  var a5444;
-  var a5445;
-  var a5446;
-  var a5447;
-  var a5448;
-  var a5449;
-  var a5450;
-  var a5451;
-  var a5452;
-  var a5453;
-  var a5454;
-  var a5455;
-  var a5456;
-  var a5457;
-  var a5458;
-  var a5459;
-  var a5460;
-  var a5461;
-  var a5462;
-  var a5463;
-  var a5464;
-  var a5465;
-  var a5466;
-  var a5467;
-  var a5468;
-  var a5469;
-  var a5470;
-  var a5471;
-  var a5472;
-  var a5473;
-  var a5474;
-  var a5475;
-  var a5476;
-  var a5477;
-  var a5478;
-  var a5479;
-  var a5480;
-  var a5481;
-  var a5482;
-  var a5483;
-  var a5484;
-  var a5485;
-  var a5486;
-  var a5487;
-  var a5488;
-  var a5489;
-  var a5490;
-  var a5491;
-  var a5492;
-  var a5493;
-  var a5494;
-  var a5495;
-  var a5496;
-  var a5497;
-  var a5498;
-  var a5499;
-  var a5500;
-  var a5501;
-  var a5502;
-  var a5503;
-  var a5504;
-  var a5505;
-  var a5506;
-  var a5507;
-  var a5508;
-  var a5509;
-  var a5510;
-  var a5511;
-  var a5512;
-  var a5513;
-  var a5514;
-  var a5515;
-  var a5516;
-  var a5517;
-  var a5518;
-  var a5519;
-  var a5520;
-  var a5521;
-  var a5522;
-  var a5523;
-  var a5524;
-  var a5525;
-  var a5526;
-  var a5527;
-  var a5528;
-  var a5529;
-  var a5530;
-  var a5531;
-  var a5532;
-  var a5533;
-  var a5534;
-  var a5535;
-  var a5536;
-  var a5537;
-  var a5538;
-  var a5539;
-  var a5540;
-  var a5541;
-  var a5542;
-  var a5543;
-  var a5544;
-  var a5545;
-  var a5546;
-  var a5547;
-  var a5548;
-  var a5549;
-  var a5550;
-  var a5551;
-  var a5552;
-  var a5553;
-  var a5554;
-  var a5555;
-  var a5556;
-  var a5557;
-  var a5558;
-  var a5559;
-  var a5560;
-  var a5561;
-  var a5562;
-  var a5563;
-  var a5564;
-  var a5565;
-  var a5566;
-  var a5567;
-  var a5568;
-  var a5569;
-  var a5570;
-  var a5571;
-  var a5572;
-  var a5573;
-  var a5574;
-  var a5575;
-  var a5576;
-  var a5577;
-  var a5578;
-  var a5579;
-  var a5580;
-  var a5581;
-  var a5582;
-  var a5583;
-  var a5584;
-  var a5585;
-  var a5586;
-  var a5587;
-  var a5588;
-  var a5589;
-  var a5590;
-  var a5591;
-  var a5592;
-  var a5593;
-  var a5594;
-  var a5595;
-  var a5596;
-  var a5597;
-  var a5598;
-  var a5599;
-  var a5600;
-  var a5601;
-  var a5602;
-  var a5603;
-  var a5604;
-  var a5605;
-  var a5606;
-  var a5607;
-  var a5608;
-  var a5609;
-  var a5610;
-  var a5611;
-  var a5612;
-  var a5613;
-  var a5614;
-  var a5615;
-  var a5616;
-  var a5617;
-  var a5618;
-  var a5619;
-  var a5620;
-  var a5621;
-  var a5622;
-  var a5623;
-  var a5624;
-  var a5625;
-  var a5626;
-  var a5627;
-  var a5628;
-  var a5629;
-  var a5630;
-  var a5631;
-  var a5632;
-  var a5633;
-  var a5634;
-  var a5635;
-  var a5636;
-  var a5637;
-  var a5638;
-  var a5639;
-  var a5640;
-  var a5641;
-  var a5642;
-  var a5643;
-  var a5644;
-  var a5645;
-  var a5646;
-  var a5647;
-  var a5648;
-  var a5649;
-  var a5650;
-  var a5651;
-  var a5652;
-  var a5653;
-  var a5654;
-  var a5655;
-  var a5656;
-  var a5657;
-  var a5658;
-  var a5659;
-  var a5660;
-  var a5661;
-  var a5662;
-  var a5663;
-  var a5664;
-  var a5665;
-  var a5666;
-  var a5667;
-  var a5668;
-  var a5669;
-  var a5670;
-  var a5671;
-  var a5672;
-  var a5673;
-  var a5674;
-  var a5675;
-  var a5676;
-  var a5677;
-  var a5678;
-  var a5679;
-  var a5680;
-  var a5681;
-  var a5682;
-  var a5683;
-  var a5684;
-  var a5685;
-  var a5686;
-  var a5687;
-  var a5688;
-  var a5689;
-  var a5690;
-  var a5691;
-  var a5692;
-  var a5693;
-  var a5694;
-  var a5695;
-  var a5696;
-  var a5697;
-  var a5698;
-  var a5699;
-  var a5700;
-  var a5701;
-  var a5702;
-  var a5703;
-  var a5704;
-  var a5705;
-  var a5706;
-  var a5707;
-  var a5708;
-  var a5709;
-  var a5710;
-  var a5711;
-  var a5712;
-  var a5713;
-  var a5714;
-  var a5715;
-  var a5716;
-  var a5717;
-  var a5718;
-  var a5719;
-  var a5720;
-  var a5721;
-  var a5722;
-  var a5723;
-  var a5724;
-  var a5725;
-  var a5726;
-  var a5727;
-  var a5728;
-  var a5729;
-  var a5730;
-  var a5731;
-  var a5732;
-  var a5733;
-  var a5734;
-  var a5735;
-  var a5736;
-  var a5737;
-  var a5738;
-  var a5739;
-  var a5740;
-  var a5741;
-  var a5742;
-  var a5743;
-  var a5744;
-  var a5745;
-  var a5746;
-  var a5747;
-  var a5748;
-  var a5749;
-  var a5750;
-  var a5751;
-  var a5752;
-  var a5753;
-  var a5754;
-  var a5755;
-  var a5756;
-  var a5757;
-  var a5758;
-  var a5759;
-  var a5760;
-  var a5761;
-  var a5762;
-  var a5763;
-  var a5764;
-  var a5765;
-  var a5766;
-  var a5767;
-  var a5768;
-  var a5769;
-  var a5770;
-  var a5771;
-  var a5772;
-  var a5773;
-  var a5774;
-  var a5775;
-  var a5776;
-  var a5777;
-  var a5778;
-  var a5779;
-  var a5780;
-  var a5781;
-  var a5782;
-  var a5783;
-  var a5784;
-  var a5785;
-  var a5786;
-  var a5787;
-  var a5788;
-  var a5789;
-  var a5790;
-  var a5791;
-  var a5792;
-  var a5793;
-  var a5794;
-  var a5795;
-  var a5796;
-  var a5797;
-  var a5798;
-  var a5799;
-  var a5800;
-  var a5801;
-  var a5802;
-  var a5803;
-  var a5804;
-  var a5805;
-  var a5806;
-  var a5807;
-  var a5808;
-  var a5809;
-  var a5810;
-  var a5811;
-  var a5812;
-  var a5813;
-  var a5814;
-  var a5815;
-  var a5816;
-  var a5817;
-  var a5818;
-  var a5819;
-  var a5820;
-  var a5821;
-  var a5822;
-  var a5823;
-  var a5824;
-  var a5825;
-  var a5826;
-  var a5827;
-  var a5828;
-  var a5829;
-  var a5830;
-  var a5831;
-  var a5832;
-  var a5833;
-  var a5834;
-  var a5835;
-  var a5836;
-  var a5837;
-  var a5838;
-  var a5839;
-  var a5840;
-  var a5841;
-  var a5842;
-  var a5843;
-  var a5844;
-  var a5845;
-  var a5846;
-  var a5847;
-  var a5848;
-  var a5849;
-  var a5850;
-  var a5851;
-  var a5852;
-  var a5853;
-  var a5854;
-  var a5855;
-  var a5856;
-  var a5857;
-  var a5858;
-  var a5859;
-  var a5860;
-  var a5861;
-  var a5862;
-  var a5863;
-  var a5864;
-  var a5865;
-  var a5866;
-  var a5867;
-  var a5868;
-  var a5869;
-  var a5870;
-  var a5871;
-  var a5872;
-  var a5873;
-  var a5874;
-  var a5875;
-  var a5876;
-  var a5877;
-  var a5878;
-  var a5879;
-  var a5880;
-  var a5881;
-  var a5882;
-  var a5883;
-  var a5884;
-  var a5885;
-  var a5886;
-  var a5887;
-  var a5888;
-  var a5889;
-  var a5890;
-  var a5891;
-  var a5892;
-  var a5893;
-  var a5894;
-  var a5895;
-  var a5896;
-  var a5897;
-  var a5898;
-  var a5899;
-  var a5900;
-  var a5901;
-  var a5902;
-  var a5903;
-  var a5904;
-  var a5905;
-  var a5906;
-  var a5907;
-  var a5908;
-  var a5909;
-  var a5910;
-  var a5911;
-  var a5912;
-  var a5913;
-  var a5914;
-  var a5915;
-  var a5916;
-  var a5917;
-  var a5918;
-  var a5919;
-  var a5920;
-  var a5921;
-  var a5922;
-  var a5923;
-  var a5924;
-  var a5925;
-  var a5926;
-  var a5927;
-  var a5928;
-  var a5929;
-  var a5930;
-  var a5931;
-  var a5932;
-  var a5933;
-  var a5934;
-  var a5935;
-  var a5936;
-  var a5937;
-  var a5938;
-  var a5939;
-  var a5940;
-  var a5941;
-  var a5942;
-  var a5943;
-  var a5944;
-  var a5945;
-  var a5946;
-  var a5947;
-  var a5948;
-  var a5949;
-  var a5950;
-  var a5951;
-  var a5952;
-  var a5953;
-  var a5954;
-  var a5955;
-  var a5956;
-  var a5957;
-  var a5958;
-  var a5959;
-  var a5960;
-  var a5961;
-  var a5962;
-  var a5963;
-  var a5964;
-  var a5965;
-  var a5966;
-  var a5967;
-  var a5968;
-  var a5969;
-  var a5970;
-  var a5971;
-  var a5972;
-  var a5973;
-  var a5974;
-  var a5975;
-  var a5976;
-  var a5977;
-  var a5978;
-  var a5979;
-  var a5980;
-  var a5981;
-  var a5982;
-  var a5983;
-  var a5984;
-  var a5985;
-  var a5986;
-  var a5987;
-  var a5988;
-  var a5989;
-  var a5990;
-  var a5991;
-  var a5992;
-  var a5993;
-  var a5994;
-  var a5995;
-  var a5996;
-  var a5997;
-  var a5998;
-  var a5999;
-  var a6000;
-  var a6001;
-  var a6002;
-  var a6003;
-  var a6004;
-  var a6005;
-  var a6006;
-  var a6007;
-  var a6008;
-  var a6009;
-  var a6010;
-  var a6011;
-  var a6012;
-  var a6013;
-  var a6014;
-  var a6015;
-  var a6016;
-  var a6017;
-  var a6018;
-  var a6019;
-  var a6020;
-  var a6021;
-  var a6022;
-  var a6023;
-  var a6024;
-  var a6025;
-  var a6026;
-  var a6027;
-  var a6028;
-  var a6029;
-  var a6030;
-  var a6031;
-  var a6032;
-  var a6033;
-  var a6034;
-  var a6035;
-  var a6036;
-  var a6037;
-  var a6038;
-  var a6039;
-  var a6040;
-  var a6041;
-  var a6042;
-  var a6043;
-  var a6044;
-  var a6045;
-  var a6046;
-  var a6047;
-  var a6048;
-  var a6049;
-  var a6050;
-  var a6051;
-  var a6052;
-  var a6053;
-  var a6054;
-  var a6055;
-  var a6056;
-  var a6057;
-  var a6058;
-  var a6059;
-  var a6060;
-  var a6061;
-  var a6062;
-  var a6063;
-  var a6064;
-  var a6065;
-  var a6066;
-  var a6067;
-  var a6068;
-  var a6069;
-  var a6070;
-  var a6071;
-  var a6072;
-  var a6073;
-  var a6074;
-  var a6075;
-  var a6076;
-  var a6077;
-  var a6078;
-  var a6079;
-  var a6080;
-  var a6081;
-  var a6082;
-  var a6083;
-  var a6084;
-  var a6085;
-  var a6086;
-  var a6087;
-  var a6088;
-  var a6089;
-  var a6090;
-  var a6091;
-  var a6092;
-  var a6093;
-  var a6094;
-  var a6095;
-  var a6096;
-  var a6097;
-  var a6098;
-  var a6099;
-  var a6100;
-  var a6101;
-  var a6102;
-  var a6103;
-  var a6104;
-  var a6105;
-  var a6106;
-  var a6107;
-  var a6108;
-  var a6109;
-  var a6110;
-  var a6111;
-  var a6112;
-  var a6113;
-  var a6114;
-  var a6115;
-  var a6116;
-  var a6117;
-  var a6118;
-  var a6119;
-  var a6120;
-  var a6121;
-  var a6122;
-  var a6123;
-  var a6124;
-  var a6125;
-  var a6126;
-  var a6127;
-  var a6128;
-  var a6129;
-  var a6130;
-  var a6131;
-  var a6132;
-  var a6133;
-  var a6134;
-  var a6135;
-  var a6136;
-  var a6137;
-  var a6138;
-  var a6139;
-  var a6140;
-  var a6141;
-  var a6142;
-  var a6143;
-  var a6144;
-  var a6145;
-  var a6146;
-  var a6147;
-  var a6148;
-  var a6149;
-  var a6150;
-  var a6151;
-  var a6152;
-  var a6153;
-  var a6154;
-  var a6155;
-  var a6156;
-  var a6157;
-  var a6158;
-  var a6159;
-  var a6160;
-  var a6161;
-  var a6162;
-  var a6163;
-  var a6164;
-  var a6165;
-  var a6166;
-  var a6167;
-  var a6168;
-  var a6169;
-  var a6170;
-  var a6171;
-  var a6172;
-  var a6173;
-  var a6174;
-  var a6175;
-  var a6176;
-  var a6177;
-  var a6178;
-  var a6179;
-  var a6180;
-  var a6181;
-  var a6182;
-  var a6183;
-  var a6184;
-  var a6185;
-  var a6186;
-  var a6187;
-  var a6188;
-  var a6189;
-  var a6190;
-  var a6191;
-  var a6192;
-  var a6193;
-  var a6194;
-  var a6195;
-  var a6196;
-  var a6197;
-  var a6198;
-  var a6199;
-  var a6200;
-  var a6201;
-  var a6202;
-  var a6203;
-  var a6204;
-  var a6205;
-  var a6206;
-  var a6207;
-  var a6208;
-  var a6209;
-  var a6210;
-  var a6211;
-  var a6212;
-  var a6213;
-  var a6214;
-  var a6215;
-  var a6216;
-  var a6217;
-  var a6218;
-  var a6219;
-  var a6220;
-  var a6221;
-  var a6222;
-  var a6223;
-  var a6224;
-  var a6225;
-  var a6226;
-  var a6227;
-  var a6228;
-  var a6229;
-  var a6230;
-  var a6231;
-  var a6232;
-  var a6233;
-  var a6234;
-  var a6235;
-  var a6236;
-  var a6237;
-  var a6238;
-  var a6239;
-  var a6240;
-  var a6241;
-  var a6242;
-  var a6243;
-  var a6244;
-  var a6245;
-  var a6246;
-  var a6247;
-  var a6248;
-  var a6249;
-  var a6250;
-  var a6251;
-  var a6252;
-  var a6253;
-  var a6254;
-  var a6255;
-  var a6256;
-  var a6257;
-  var a6258;
-  var a6259;
-  var a6260;
-  var a6261;
-  var a6262;
-  var a6263;
-  var a6264;
-  var a6265;
-  var a6266;
-  var a6267;
-  var a6268;
-  var a6269;
-  var a6270;
-  var a6271;
-  var a6272;
-  var a6273;
-  var a6274;
-  var a6275;
-  var a6276;
-  var a6277;
-  var a6278;
-  var a6279;
-  var a6280;
-  var a6281;
-  var a6282;
-  var a6283;
-  var a6284;
-  var a6285;
-  var a6286;
-  var a6287;
-  var a6288;
-  var a6289;
-  var a6290;
-  var a6291;
-  var a6292;
-  var a6293;
-  var a6294;
-  var a6295;
-  var a6296;
-  var a6297;
-  var a6298;
-  var a6299;
-  var a6300;
-  var a6301;
-  var a6302;
-  var a6303;
-  var a6304;
-  var a6305;
-  var a6306;
-  var a6307;
-  var a6308;
-  var a6309;
-  var a6310;
-  var a6311;
-  var a6312;
-  var a6313;
-  var a6314;
-  var a6315;
-  var a6316;
-  var a6317;
-  var a6318;
-  var a6319;
-  var a6320;
-  var a6321;
-  var a6322;
-  var a6323;
-  var a6324;
-  var a6325;
-  var a6326;
-  var a6327;
-  var a6328;
-  var a6329;
-  var a6330;
-  var a6331;
-  var a6332;
-  var a6333;
-  var a6334;
-  var a6335;
-  var a6336;
-  var a6337;
-  var a6338;
-  var a6339;
-  var a6340;
-  var a6341;
-  var a6342;
-  var a6343;
-  var a6344;
-  var a6345;
-  var a6346;
-  var a6347;
-  var a6348;
-  var a6349;
-  var a6350;
-  var a6351;
-  var a6352;
-  var a6353;
-  var a6354;
-  var a6355;
-  var a6356;
-  var a6357;
-  var a6358;
-  var a6359;
-  var a6360;
-  var a6361;
-  var a6362;
-  var a6363;
-  var a6364;
-  var a6365;
-  var a6366;
-  var a6367;
-  var a6368;
-  var a6369;
-  var a6370;
-  var a6371;
-  var a6372;
-  var a6373;
-  var a6374;
-  var a6375;
-  var a6376;
-  var a6377;
-  var a6378;
-  var a6379;
-  var a6380;
-  var a6381;
-  var a6382;
-  var a6383;
-  var a6384;
-  var a6385;
-  var a6386;
-  var a6387;
-  var a6388;
-  var a6389;
-  var a6390;
-  var a6391;
-  var a6392;
-  var a6393;
-  var a6394;
-  var a6395;
-  var a6396;
-  var a6397;
-  var a6398;
-  var a6399;
-  var a6400;
-  var a6401;
-  var a6402;
-  var a6403;
-  var a6404;
-  var a6405;
-  var a6406;
-  var a6407;
-  var a6408;
-  var a6409;
-  var a6410;
-  var a6411;
-  var a6412;
-  var a6413;
-  var a6414;
-  var a6415;
-  var a6416;
-  var a6417;
-  var a6418;
-  var a6419;
-  var a6420;
-  var a6421;
-  var a6422;
-  var a6423;
-  var a6424;
-  var a6425;
-  var a6426;
-  var a6427;
-  var a6428;
-  var a6429;
-  var a6430;
-  var a6431;
-  var a6432;
-  var a6433;
-  var a6434;
-  var a6435;
-  var a6436;
-  var a6437;
-  var a6438;
-  var a6439;
-  var a6440;
-  var a6441;
-  var a6442;
-  var a6443;
-  var a6444;
-  var a6445;
-  var a6446;
-  var a6447;
-  var a6448;
-  var a6449;
-  var a6450;
-  var a6451;
-  var a6452;
-  var a6453;
-  var a6454;
-  var a6455;
-  var a6456;
-  var a6457;
-  var a6458;
-  var a6459;
-  var a6460;
-  var a6461;
-  var a6462;
-  var a6463;
-  var a6464;
-  var a6465;
-  var a6466;
-  var a6467;
-  var a6468;
-  var a6469;
-  var a6470;
-  var a6471;
-  var a6472;
-  var a6473;
-  var a6474;
-  var a6475;
-  var a6476;
-  var a6477;
-  var a6478;
-  var a6479;
-  var a6480;
-  var a6481;
-  var a6482;
-  var a6483;
-  var a6484;
-  var a6485;
-  var a6486;
-  var a6487;
-  var a6488;
-  var a6489;
-  var a6490;
-  var a6491;
-  var a6492;
-  var a6493;
-  var a6494;
-  var a6495;
-  var a6496;
-  var a6497;
-  var a6498;
-  var a6499;
-  var a6500;
-  var a6501;
-  var a6502;
-  var a6503;
-  var a6504;
-  var a6505;
-  var a6506;
-  var a6507;
-  var a6508;
-  var a6509;
-  var a6510;
-  var a6511;
-  var a6512;
-  var a6513;
-  var a6514;
-  var a6515;
-  var a6516;
-  var a6517;
-  var a6518;
-  var a6519;
-  var a6520;
-  var a6521;
-  var a6522;
-  var a6523;
-  var a6524;
-  var a6525;
-  var a6526;
-  var a6527;
-  var a6528;
-  var a6529;
-  var a6530;
-  var a6531;
-  var a6532;
-  var a6533;
-  var a6534;
-  var a6535;
-  var a6536;
-  var a6537;
-  var a6538;
-  var a6539;
-  var a6540;
-  var a6541;
-  var a6542;
-  var a6543;
-  var a6544;
-  var a6545;
-  var a6546;
-  var a6547;
-  var a6548;
-  var a6549;
-  var a6550;
-  var a6551;
-  var a6552;
-  var a6553;
-  var a6554;
-  var a6555;
-  var a6556;
-  var a6557;
-  var a6558;
-  var a6559;
-  var a6560;
-  var a6561;
-  var a6562;
-  var a6563;
-  var a6564;
-  var a6565;
-  var a6566;
-  var a6567;
-  var a6568;
-  var a6569;
-  var a6570;
-  var a6571;
-  var a6572;
-  var a6573;
-  var a6574;
-  var a6575;
-  var a6576;
-  var a6577;
-  var a6578;
-  var a6579;
-  var a6580;
-  var a6581;
-  var a6582;
-  var a6583;
-  var a6584;
-  var a6585;
-  var a6586;
-  var a6587;
-  var a6588;
-  var a6589;
-  var a6590;
-  var a6591;
-  var a6592;
-  var a6593;
-  var a6594;
-  var a6595;
-  var a6596;
-  var a6597;
-  var a6598;
-  var a6599;
-  var a6600;
-  var a6601;
-  var a6602;
-  var a6603;
-  var a6604;
-  var a6605;
-  var a6606;
-  var a6607;
-  var a6608;
-  var a6609;
-  var a6610;
-  var a6611;
-  var a6612;
-  var a6613;
-  var a6614;
-  var a6615;
-  var a6616;
-  var a6617;
-  var a6618;
-  var a6619;
-  var a6620;
-  var a6621;
-  var a6622;
-  var a6623;
-  var a6624;
-  var a6625;
-  var a6626;
-  var a6627;
-  var a6628;
-  var a6629;
-  var a6630;
-  var a6631;
-  var a6632;
-  var a6633;
-  var a6634;
-  var a6635;
-  var a6636;
-  var a6637;
-  var a6638;
-  var a6639;
-  var a6640;
-  var a6641;
-  var a6642;
-  var a6643;
-  var a6644;
-  var a6645;
-  var a6646;
-  var a6647;
-  var a6648;
-  var a6649;
-  var a6650;
-  var a6651;
-  var a6652;
-  var a6653;
-  var a6654;
-  var a6655;
-  var a6656;
-  var a6657;
-  var a6658;
-  var a6659;
-  var a6660;
-  var a6661;
-  var a6662;
-  var a6663;
-  var a6664;
-  var a6665;
-  var a6666;
-  var a6667;
-  var a6668;
-  var a6669;
-  var a6670;
-  var a6671;
-  var a6672;
-  var a6673;
-  var a6674;
-  var a6675;
-  var a6676;
-  var a6677;
-  var a6678;
-  var a6679;
-  var a6680;
-  var a6681;
-  var a6682;
-  var a6683;
-  var a6684;
-  var a6685;
-  var a6686;
-  var a6687;
-  var a6688;
-  var a6689;
-  var a6690;
-  var a6691;
-  var a6692;
-  var a6693;
-  var a6694;
-  var a6695;
-  var a6696;
-  var a6697;
-  var a6698;
-  var a6699;
-  var a6700;
-  var a6701;
-  var a6702;
-  var a6703;
-  var a6704;
-  var a6705;
-  var a6706;
-  var a6707;
-  var a6708;
-  var a6709;
-  var a6710;
-  var a6711;
-  var a6712;
-  var a6713;
-  var a6714;
-  var a6715;
-  var a6716;
-  var a6717;
-  var a6718;
-  var a6719;
-  var a6720;
-  var a6721;
-  var a6722;
-  var a6723;
-  var a6724;
-  var a6725;
-  var a6726;
-  var a6727;
-  var a6728;
-  var a6729;
-  var a6730;
-  var a6731;
-  var a6732;
-  var a6733;
-  var a6734;
-  var a6735;
-  var a6736;
-  var a6737;
-  var a6738;
-  var a6739;
-  var a6740;
-  var a6741;
-  var a6742;
-  var a6743;
-  var a6744;
-  var a6745;
-  var a6746;
-  var a6747;
-  var a6748;
-  var a6749;
-  var a6750;
-  var a6751;
-  var a6752;
-  var a6753;
-  var a6754;
-  var a6755;
-  var a6756;
-  var a6757;
-  var a6758;
-  var a6759;
-  var a6760;
-  var a6761;
-  var a6762;
-  var a6763;
-  var a6764;
-  var a6765;
-  var a6766;
-  var a6767;
-  var a6768;
-  var a6769;
-  var a6770;
-  var a6771;
-  var a6772;
-  var a6773;
-  var a6774;
-  var a6775;
-  var a6776;
-  var a6777;
-  var a6778;
-  var a6779;
-  var a6780;
-  var a6781;
-  var a6782;
-  var a6783;
-  var a6784;
-  var a6785;
-  var a6786;
-  var a6787;
-  var a6788;
-  var a6789;
-  var a6790;
-  var a6791;
-  var a6792;
-  var a6793;
-  var a6794;
-  var a6795;
-  var a6796;
-  var a6797;
-  var a6798;
-  var a6799;
-  var a6800;
-  var a6801;
-  var a6802;
-  var a6803;
-  var a6804;
-  var a6805;
-  var a6806;
-  var a6807;
-  var a6808;
-  var a6809;
-  var a6810;
-  var a6811;
-  var a6812;
-  var a6813;
-  var a6814;
-  var a6815;
-  var a6816;
-  var a6817;
-  var a6818;
-  var a6819;
-  var a6820;
-  var a6821;
-  var a6822;
-  var a6823;
-  var a6824;
-  var a6825;
-  var a6826;
-  var a6827;
-  var a6828;
-  var a6829;
-  var a6830;
-  var a6831;
-  var a6832;
-  var a6833;
-  var a6834;
-  var a6835;
-  var a6836;
-  var a6837;
-  var a6838;
-  var a6839;
-  var a6840;
-  var a6841;
-  var a6842;
-  var a6843;
-  var a6844;
-  var a6845;
-  var a6846;
-  var a6847;
-  var a6848;
-  var a6849;
-  var a6850;
-  var a6851;
-  var a6852;
-  var a6853;
-  var a6854;
-  var a6855;
-  var a6856;
-  var a6857;
-  var a6858;
-  var a6859;
-  var a6860;
-  var a6861;
-  var a6862;
-  var a6863;
-  var a6864;
-  var a6865;
-  var a6866;
-  var a6867;
-  var a6868;
-  var a6869;
-  var a6870;
-  var a6871;
-  var a6872;
-  var a6873;
-  var a6874;
-  var a6875;
-  var a6876;
-  var a6877;
-  var a6878;
-  var a6879;
-  var a6880;
-  var a6881;
-  var a6882;
-  var a6883;
-  var a6884;
-  var a6885;
-  var a6886;
-  var a6887;
-  var a6888;
-  var a6889;
-  var a6890;
-  var a6891;
-  var a6892;
-  var a6893;
-  var a6894;
-  var a6895;
-  var a6896;
-  var a6897;
-  var a6898;
-  var a6899;
-  var a6900;
-  var a6901;
-  var a6902;
-  var a6903;
-  var a6904;
-  var a6905;
-  var a6906;
-  var a6907;
-  var a6908;
-  var a6909;
-  var a6910;
-  var a6911;
-  var a6912;
-  var a6913;
-  var a6914;
-  var a6915;
-  var a6916;
-  var a6917;
-  var a6918;
-  var a6919;
-  var a6920;
-  var a6921;
-  var a6922;
-  var a6923;
-  var a6924;
-  var a6925;
-  var a6926;
-  var a6927;
-  var a6928;
-  var a6929;
-  var a6930;
-  var a6931;
-  var a6932;
-  var a6933;
-  var a6934;
-  var a6935;
-  var a6936;
-  var a6937;
-  var a6938;
-  var a6939;
-  var a6940;
-  var a6941;
-  var a6942;
-  var a6943;
-  var a6944;
-  var a6945;
-  var a6946;
-  var a6947;
-  var a6948;
-  var a6949;
-  var a6950;
-  var a6951;
-  var a6952;
-  var a6953;
-  var a6954;
-  var a6955;
-  var a6956;
-  var a6957;
-  var a6958;
-  var a6959;
-  var a6960;
-  var a6961;
-  var a6962;
-  var a6963;
-  var a6964;
-  var a6965;
-  var a6966;
-  var a6967;
-  var a6968;
-  var a6969;
-  var a6970;
-  var a6971;
-  var a6972;
-  var a6973;
-  var a6974;
-  var a6975;
-  var a6976;
-  var a6977;
-  var a6978;
-  var a6979;
-  var a6980;
-  var a6981;
-  var a6982;
-  var a6983;
-  var a6984;
-  var a6985;
-  var a6986;
-  var a6987;
-  var a6988;
-  var a6989;
-  var a6990;
-  var a6991;
-  var a6992;
-  var a6993;
-  var a6994;
-  var a6995;
-  var a6996;
-  var a6997;
-  var a6998;
-  var a6999;
-  var a7000;
-  var a7001;
-  var a7002;
-  var a7003;
-  var a7004;
-  var a7005;
-  var a7006;
-  var a7007;
-  var a7008;
-  var a7009;
-  var a7010;
-  var a7011;
-  var a7012;
-  var a7013;
-  var a7014;
-  var a7015;
-  var a7016;
-  var a7017;
-  var a7018;
-  var a7019;
-  var a7020;
-  var a7021;
-  var a7022;
-  var a7023;
-  var a7024;
-  var a7025;
-  var a7026;
-  var a7027;
-  var a7028;
-  var a7029;
-  var a7030;
-  var a7031;
-  var a7032;
-  var a7033;
-  var a7034;
-  var a7035;
-  var a7036;
-  var a7037;
-  var a7038;
-  var a7039;
-  var a7040;
-  var a7041;
-  var a7042;
-  var a7043;
-  var a7044;
-  var a7045;
-  var a7046;
-  var a7047;
-  var a7048;
-  var a7049;
-  var a7050;
-  var a7051;
-  var a7052;
-  var a7053;
-  var a7054;
-  var a7055;
-  var a7056;
-  var a7057;
-  var a7058;
-  var a7059;
-  var a7060;
-  var a7061;
-  var a7062;
-  var a7063;
-  var a7064;
-  var a7065;
-  var a7066;
-  var a7067;
-  var a7068;
-  var a7069;
-  var a7070;
-  var a7071;
-  var a7072;
-  var a7073;
-  var a7074;
-  var a7075;
-  var a7076;
-  var a7077;
-  var a7078;
-  var a7079;
-  var a7080;
-  var a7081;
-  var a7082;
-  var a7083;
-  var a7084;
-  var a7085;
-  var a7086;
-  var a7087;
-  var a7088;
-  var a7089;
-  var a7090;
-  var a7091;
-  var a7092;
-  var a7093;
-  var a7094;
-  var a7095;
-  var a7096;
-  var a7097;
-  var a7098;
-  var a7099;
-  var a7100;
-  var a7101;
-  var a7102;
-  var a7103;
-  var a7104;
-  var a7105;
-  var a7106;
-  var a7107;
-  var a7108;
-  var a7109;
-  var a7110;
-  var a7111;
-  var a7112;
-  var a7113;
-  var a7114;
-  var a7115;
-  var a7116;
-  var a7117;
-  var a7118;
-  var a7119;
-  var a7120;
-  var a7121;
-  var a7122;
-  var a7123;
-  var a7124;
-  var a7125;
-  var a7126;
-  var a7127;
-  var a7128;
-  var a7129;
-  var a7130;
-  var a7131;
-  var a7132;
-  var a7133;
-  var a7134;
-  var a7135;
-  var a7136;
-  var a7137;
-  var a7138;
-  var a7139;
-  var a7140;
-  var a7141;
-  var a7142;
-  var a7143;
-  var a7144;
-  var a7145;
-  var a7146;
-  var a7147;
-  var a7148;
-  var a7149;
-  var a7150;
-  var a7151;
-  var a7152;
-  var a7153;
-  var a7154;
-  var a7155;
-  var a7156;
-  var a7157;
-  var a7158;
-  var a7159;
-  var a7160;
-  var a7161;
-  var a7162;
-  var a7163;
-  var a7164;
-  var a7165;
-  var a7166;
-  var a7167;
-  var a7168;
-  var a7169;
-  var a7170;
-  var a7171;
-  var a7172;
-  var a7173;
-  var a7174;
-  var a7175;
-  var a7176;
-  var a7177;
-  var a7178;
-  var a7179;
-  var a7180;
-  var a7181;
-  var a7182;
-  var a7183;
-  var a7184;
-  var a7185;
-  var a7186;
-  var a7187;
-  var a7188;
-  var a7189;
-  var a7190;
-  var a7191;
-  var a7192;
-  var a7193;
-  var a7194;
-  var a7195;
-  var a7196;
-  var a7197;
-  var a7198;
-  var a7199;
-  var a7200;
-  var a7201;
-  var a7202;
-  var a7203;
-  var a7204;
-  var a7205;
-  var a7206;
-  var a7207;
-  var a7208;
-  var a7209;
-  var a7210;
-  var a7211;
-  var a7212;
-  var a7213;
-  var a7214;
-  var a7215;
-  var a7216;
-  var a7217;
-  var a7218;
-  var a7219;
-  var a7220;
-  var a7221;
-  var a7222;
-  var a7223;
-  var a7224;
-  var a7225;
-  var a7226;
-  var a7227;
-  var a7228;
-  var a7229;
-  var a7230;
-  var a7231;
-  var a7232;
-  var a7233;
-  var a7234;
-  var a7235;
-  var a7236;
-  var a7237;
-  var a7238;
-  var a7239;
-  var a7240;
-  var a7241;
-  var a7242;
-  var a7243;
-  var a7244;
-  var a7245;
-  var a7246;
-  var a7247;
-  var a7248;
-  var a7249;
-  var a7250;
-  var a7251;
-  var a7252;
-  var a7253;
-  var a7254;
-  var a7255;
-  var a7256;
-  var a7257;
-  var a7258;
-  var a7259;
-  var a7260;
-  var a7261;
-  var a7262;
-  var a7263;
-  var a7264;
-  var a7265;
-  var a7266;
-  var a7267;
-  var a7268;
-  var a7269;
-  var a7270;
-  var a7271;
-  var a7272;
-  var a7273;
-  var a7274;
-  var a7275;
-  var a7276;
-  var a7277;
-  var a7278;
-  var a7279;
-  var a7280;
-  var a7281;
-  var a7282;
-  var a7283;
-  var a7284;
-  var a7285;
-  var a7286;
-  var a7287;
-  var a7288;
-  var a7289;
-  var a7290;
-  var a7291;
-  var a7292;
-  var a7293;
-  var a7294;
-  var a7295;
-  var a7296;
-  var a7297;
-  var a7298;
-  var a7299;
-  var a7300;
-  var a7301;
-  var a7302;
-  var a7303;
-  var a7304;
-  var a7305;
-  var a7306;
-  var a7307;
-  var a7308;
-  var a7309;
-  var a7310;
-  var a7311;
-  var a7312;
-  var a7313;
-  var a7314;
-  var a7315;
-  var a7316;
-  var a7317;
-  var a7318;
-  var a7319;
-  var a7320;
-  var a7321;
-  var a7322;
-  var a7323;
-  var a7324;
-  var a7325;
-  var a7326;
-  var a7327;
-  var a7328;
-  var a7329;
-  var a7330;
-  var a7331;
-  var a7332;
-  var a7333;
-  var a7334;
-  var a7335;
-  var a7336;
-  var a7337;
-  var a7338;
-  var a7339;
-  var a7340;
-  var a7341;
-  var a7342;
-  var a7343;
-  var a7344;
-  var a7345;
-  var a7346;
-  var a7347;
-  var a7348;
-  var a7349;
-  var a7350;
-  var a7351;
-  var a7352;
-  var a7353;
-  var a7354;
-  var a7355;
-  var a7356;
-  var a7357;
-  var a7358;
-  var a7359;
-  var a7360;
-  var a7361;
-  var a7362;
-  var a7363;
-  var a7364;
-  var a7365;
-  var a7366;
-  var a7367;
-  var a7368;
-  var a7369;
-  var a7370;
-  var a7371;
-  var a7372;
-  var a7373;
-  var a7374;
-  var a7375;
-  var a7376;
-  var a7377;
-  var a7378;
-  var a7379;
-  var a7380;
-  var a7381;
-  var a7382;
-  var a7383;
-  var a7384;
-  var a7385;
-  var a7386;
-  var a7387;
-  var a7388;
-  var a7389;
-  var a7390;
-  var a7391;
-  var a7392;
-  var a7393;
-  var a7394;
-  var a7395;
-  var a7396;
-  var a7397;
-  var a7398;
-  var a7399;
-  var a7400;
-  var a7401;
-  var a7402;
-  var a7403;
-  var a7404;
-  var a7405;
-  var a7406;
-  var a7407;
-  var a7408;
-  var a7409;
-  var a7410;
-  var a7411;
-  var a7412;
-  var a7413;
-  var a7414;
-  var a7415;
-  var a7416;
-  var a7417;
-  var a7418;
-  var a7419;
-  var a7420;
-  var a7421;
-  var a7422;
-  var a7423;
-  var a7424;
-  var a7425;
-  var a7426;
-  var a7427;
-  var a7428;
-  var a7429;
-  var a7430;
-  var a7431;
-  var a7432;
-  var a7433;
-  var a7434;
-  var a7435;
-  var a7436;
-  var a7437;
-  var a7438;
-  var a7439;
-  var a7440;
-  var a7441;
-  var a7442;
-  var a7443;
-  var a7444;
-  var a7445;
-  var a7446;
-  var a7447;
-  var a7448;
-  var a7449;
-  var a7450;
-  var a7451;
-  var a7452;
-  var a7453;
-  var a7454;
-  var a7455;
-  var a7456;
-  var a7457;
-  var a7458;
-  var a7459;
-  var a7460;
-  var a7461;
-  var a7462;
-  var a7463;
-  var a7464;
-  var a7465;
-  var a7466;
-  var a7467;
-  var a7468;
-  var a7469;
-  var a7470;
-  var a7471;
-  var a7472;
-  var a7473;
-  var a7474;
-  var a7475;
-  var a7476;
-  var a7477;
-  var a7478;
-  var a7479;
-  var a7480;
-  var a7481;
-  var a7482;
-  var a7483;
-  var a7484;
-  var a7485;
-  var a7486;
-  var a7487;
-  var a7488;
-  var a7489;
-  var a7490;
-  var a7491;
-  var a7492;
-  var a7493;
-  var a7494;
-  var a7495;
-  var a7496;
-  var a7497;
-  var a7498;
-  var a7499;
-  var a7500;
-  var a7501;
-  var a7502;
-  var a7503;
-  var a7504;
-  var a7505;
-  var a7506;
-  var a7507;
-  var a7508;
-  var a7509;
-  var a7510;
-  var a7511;
-  var a7512;
-  var a7513;
-  var a7514;
-  var a7515;
-  var a7516;
-  var a7517;
-  var a7518;
-  var a7519;
-  var a7520;
-  var a7521;
-  var a7522;
-  var a7523;
-  var a7524;
-  var a7525;
-  var a7526;
-  var a7527;
-  var a7528;
-  var a7529;
-  var a7530;
-  var a7531;
-  var a7532;
-  var a7533;
-  var a7534;
-  var a7535;
-  var a7536;
-  var a7537;
-  var a7538;
-  var a7539;
-  var a7540;
-  var a7541;
-  var a7542;
-  var a7543;
-  var a7544;
-  var a7545;
-  var a7546;
-  var a7547;
-  var a7548;
-  var a7549;
-  var a7550;
-  var a7551;
-  var a7552;
-  var a7553;
-  var a7554;
-  var a7555;
-  var a7556;
-  var a7557;
-  var a7558;
-  var a7559;
-  var a7560;
-  var a7561;
-  var a7562;
-  var a7563;
-  var a7564;
-  var a7565;
-  var a7566;
-  var a7567;
-  var a7568;
-  var a7569;
-  var a7570;
-  var a7571;
-  var a7572;
-  var a7573;
-  var a7574;
-  var a7575;
-  var a7576;
-  var a7577;
-  var a7578;
-  var a7579;
-  var a7580;
-  var a7581;
-  var a7582;
-  var a7583;
-  var a7584;
-  var a7585;
-  var a7586;
-  var a7587;
-  var a7588;
-  var a7589;
-  var a7590;
-  var a7591;
-  var a7592;
-  var a7593;
-  var a7594;
-  var a7595;
-  var a7596;
-  var a7597;
-  var a7598;
-  var a7599;
-  var a7600;
-  var a7601;
-  var a7602;
-  var a7603;
-  var a7604;
-  var a7605;
-  var a7606;
-  var a7607;
-  var a7608;
-  var a7609;
-  var a7610;
-  var a7611;
-  var a7612;
-  var a7613;
-  var a7614;
-  var a7615;
-  var a7616;
-  var a7617;
-  var a7618;
-  var a7619;
-  var a7620;
-  var a7621;
-  var a7622;
-  var a7623;
-  var a7624;
-  var a7625;
-  var a7626;
-  var a7627;
-  var a7628;
-  var a7629;
-  var a7630;
-  var a7631;
-  var a7632;
-  var a7633;
-  var a7634;
-  var a7635;
-  var a7636;
-  var a7637;
-  var a7638;
-  var a7639;
-  var a7640;
-  var a7641;
-  var a7642;
-  var a7643;
-  var a7644;
-  var a7645;
-  var a7646;
-  var a7647;
-  var a7648;
-  var a7649;
-  var a7650;
-  var a7651;
-  var a7652;
-  var a7653;
-  var a7654;
-  var a7655;
-  var a7656;
-  var a7657;
-  var a7658;
-  var a7659;
-  var a7660;
-  var a7661;
-  var a7662;
-  var a7663;
-  var a7664;
-  var a7665;
-  var a7666;
-  var a7667;
-  var a7668;
-  var a7669;
-  var a7670;
-  var a7671;
-  var a7672;
-  var a7673;
-  var a7674;
-  var a7675;
-  var a7676;
-  var a7677;
-  var a7678;
-  var a7679;
-  var a7680;
-  var a7681;
-  var a7682;
-  var a7683;
-  var a7684;
-  var a7685;
-  var a7686;
-  var a7687;
-  var a7688;
-  var a7689;
-  var a7690;
-  var a7691;
-  var a7692;
-  var a7693;
-  var a7694;
-  var a7695;
-  var a7696;
-  var a7697;
-  var a7698;
-  var a7699;
-  var a7700;
-  var a7701;
-  var a7702;
-  var a7703;
-  var a7704;
-  var a7705;
-  var a7706;
-  var a7707;
-  var a7708;
-  var a7709;
-  var a7710;
-  var a7711;
-  var a7712;
-  var a7713;
-  var a7714;
-  var a7715;
-  var a7716;
-  var a7717;
-  var a7718;
-  var a7719;
-  var a7720;
-  var a7721;
-  var a7722;
-  var a7723;
-  var a7724;
-  var a7725;
-  var a7726;
-  var a7727;
-  var a7728;
-  var a7729;
-  var a7730;
-  var a7731;
-  var a7732;
-  var a7733;
-  var a7734;
-  var a7735;
-  var a7736;
-  var a7737;
-  var a7738;
-  var a7739;
-  var a7740;
-  var a7741;
-  var a7742;
-  var a7743;
-  var a7744;
-  var a7745;
-  var a7746;
-  var a7747;
-  var a7748;
-  var a7749;
-  var a7750;
-  var a7751;
-  var a7752;
-  var a7753;
-  var a7754;
-  var a7755;
-  var a7756;
-  var a7757;
-  var a7758;
-  var a7759;
-  var a7760;
-  var a7761;
-  var a7762;
-  var a7763;
-  var a7764;
-  var a7765;
-  var a7766;
-  var a7767;
-  var a7768;
-  var a7769;
-  var a7770;
-  var a7771;
-  var a7772;
-  var a7773;
-  var a7774;
-  var a7775;
-  var a7776;
-  var a7777;
-  var a7778;
-  var a7779;
-  var a7780;
-  var a7781;
-  var a7782;
-  var a7783;
-  var a7784;
-  var a7785;
-  var a7786;
-  var a7787;
-  var a7788;
-  var a7789;
-  var a7790;
-  var a7791;
-  var a7792;
-  var a7793;
-  var a7794;
-  var a7795;
-  var a7796;
-  var a7797;
-  var a7798;
-  var a7799;
-  var a7800;
-  var a7801;
-  var a7802;
-  var a7803;
-  var a7804;
-  var a7805;
-  var a7806;
-  var a7807;
-  var a7808;
-  var a7809;
-  var a7810;
-  var a7811;
-  var a7812;
-  var a7813;
-  var a7814;
-  var a7815;
-  var a7816;
-  var a7817;
-  var a7818;
-  var a7819;
-  var a7820;
-  var a7821;
-  var a7822;
-  var a7823;
-  var a7824;
-  var a7825;
-  var a7826;
-  var a7827;
-  var a7828;
-  var a7829;
-  var a7830;
-  var a7831;
-  var a7832;
-  var a7833;
-  var a7834;
-  var a7835;
-  var a7836;
-  var a7837;
-  var a7838;
-  var a7839;
-  var a7840;
-  var a7841;
-  var a7842;
-  var a7843;
-  var a7844;
-  var a7845;
-  var a7846;
-  var a7847;
-  var a7848;
-  var a7849;
-  var a7850;
-  var a7851;
-  var a7852;
-  var a7853;
-  var a7854;
-  var a7855;
-  var a7856;
-  var a7857;
-  var a7858;
-  var a7859;
-  var a7860;
-  var a7861;
-  var a7862;
-  var a7863;
-  var a7864;
-  var a7865;
-  var a7866;
-  var a7867;
-  var a7868;
-  var a7869;
-  var a7870;
-  var a7871;
-  var a7872;
-  var a7873;
-  var a7874;
-  var a7875;
-  var a7876;
-  var a7877;
-  var a7878;
-  var a7879;
-  var a7880;
-  var a7881;
-  var a7882;
-  var a7883;
-  var a7884;
-  var a7885;
-  var a7886;
-  var a7887;
-  var a7888;
-  var a7889;
-  var a7890;
-  var a7891;
-  var a7892;
-  var a7893;
-  var a7894;
-  var a7895;
-  var a7896;
-  var a7897;
-  var a7898;
-  var a7899;
-  var a7900;
-  var a7901;
-  var a7902;
-  var a7903;
-  var a7904;
-  var a7905;
-  var a7906;
-  var a7907;
-  var a7908;
-  var a7909;
-  var a7910;
-  var a7911;
-  var a7912;
-  var a7913;
-  var a7914;
-  var a7915;
-  var a7916;
-  var a7917;
-  var a7918;
-  var a7919;
-  var a7920;
-  var a7921;
-  var a7922;
-  var a7923;
-  var a7924;
-  var a7925;
-  var a7926;
-  var a7927;
-  var a7928;
-  var a7929;
-  var a7930;
-  var a7931;
-  var a7932;
-  var a7933;
-  var a7934;
-  var a7935;
-  var a7936;
-  var a7937;
-  var a7938;
-  var a7939;
-  var a7940;
-  var a7941;
-  var a7942;
-  var a7943;
-  var a7944;
-  var a7945;
-  var a7946;
-  var a7947;
-  var a7948;
-  var a7949;
-  var a7950;
-  var a7951;
-  var a7952;
-  var a7953;
-  var a7954;
-  var a7955;
-  var a7956;
-  var a7957;
-  var a7958;
-  var a7959;
-  var a7960;
-  var a7961;
-  var a7962;
-  var a7963;
-  var a7964;
-  var a7965;
-  var a7966;
-  var a7967;
-  var a7968;
-  var a7969;
-  var a7970;
-  var a7971;
-  var a7972;
-  var a7973;
-  var a7974;
-  var a7975;
-  var a7976;
-  var a7977;
-  var a7978;
-  var a7979;
-  var a7980;
-  var a7981;
-  var a7982;
-  var a7983;
-  var a7984;
-  var a7985;
-  var a7986;
-  var a7987;
-  var a7988;
-  var a7989;
-  var a7990;
-  var a7991;
-  var a7992;
-  var a7993;
-  var a7994;
-  var a7995;
-  var a7996;
-  var a7997;
-  var a7998;
-  var a7999;
-  var a8000;
-  var a8001;
-  var a8002;
-  var a8003;
-  var a8004;
-  var a8005;
-  var a8006;
-  var a8007;
-  var a8008;
-  var a8009;
-  var a8010;
-  var a8011;
-  var a8012;
-  var a8013;
-  var a8014;
-  var a8015;
-  var a8016;
-  var a8017;
-  var a8018;
-  var a8019;
-  var a8020;
-  var a8021;
-  var a8022;
-  var a8023;
-  var a8024;
-  var a8025;
-  var a8026;
-  var a8027;
-  var a8028;
-  var a8029;
-  var a8030;
-  var a8031;
-  var a8032;
-  var a8033;
-  var a8034;
-  var a8035;
-  var a8036;
-  var a8037;
-  var a8038;
-  var a8039;
-  var a8040;
-  var a8041;
-  var a8042;
-  var a8043;
-  var a8044;
-  var a8045;
-  var a8046;
-  var a8047;
-  var a8048;
-  var a8049;
-  var a8050;
-  var a8051;
-  var a8052;
-  var a8053;
-  var a8054;
-  var a8055;
-  var a8056;
-  var a8057;
-  var a8058;
-  var a8059;
-  var a8060;
-  var a8061;
-  var a8062;
-  var a8063;
-  var a8064;
-  var a8065;
-  var a8066;
-  var a8067;
-  var a8068;
-  var a8069;
-  var a8070;
-  var a8071;
-  var a8072;
-  var a8073;
-  var a8074;
-  var a8075;
-  var a8076;
-  var a8077;
-  var a8078;
-  var a8079;
-  var a8080;
-  var a8081;
-  var a8082;
-  var a8083;
-  var a8084;
-  var a8085;
-  var a8086;
-  var a8087;
-  var a8088;
-  var a8089;
-  var a8090;
-  var a8091;
-  var a8092;
-  var a8093;
-  var a8094;
-  var a8095;
-  var a8096;
-  var a8097;
-  var a8098;
-  var a8099;
-  var a8100;
-  var a8101;
-  var a8102;
-  var a8103;
-  var a8104;
-  var a8105;
-  var a8106;
-  var a8107;
-  var a8108;
-  var a8109;
-  var a8110;
-  var a8111;
-  var a8112;
-  var a8113;
-  var a8114;
-  var a8115;
-  var a8116;
-  var a8117;
-  var a8118;
-  var a8119;
-  var a8120;
-  var a8121;
-  var a8122;
-  var a8123;
-  var a8124;
-  var a8125;
-  var a8126;
-  var a8127;
-  var a8128;
-  var a8129;
-  var a8130;
-  var a8131;
-  var a8132;
-  var a8133;
-  var a8134;
-  var a8135;
-  var a8136;
-  var a8137;
-  var a8138;
-  var a8139;
-  var a8140;
-  var a8141;
-  var a8142;
-  var a8143;
-  var a8144;
-  var a8145;
-  var a8146;
-  var a8147;
-  var a8148;
-  var a8149;
-  var a8150;
-  var a8151;
-  var a8152;
-  var a8153;
-  var a8154;
-  var a8155;
-  var a8156;
-  var a8157;
-  var a8158;
-  var a8159;
-  var a8160;
-  var a8161;
-  var a8162;
-  var a8163;
-  var a8164;
-  var a8165;
-  var a8166;
-  var a8167;
-  var a8168;
-  var a8169;
-  var a8170;
-  var a8171;
-  var a8172;
-  var a8173;
-  var a8174;
-  var a8175;
-  var a8176;
-  var a8177;
-  var a8178;
-  var a8179;
-  var a8180;
-  var a8181;
-  var a8182;
-  var a8183;
-  var a8184;
-  var a8185;
-  var a8186;
-  var a8187;
-  var a8188;
-  var a8189;
-  var a8190;
-  var a8191;
-  var a8192;
-  var a8193;
-  var a8194;
-  var a8195;
-  var a8196;
-  var a8197;
-  var a8198;
-  var a8199;
-  var a8200;
-  var a8201;
-  var a8202;
-  var a8203;
-  var a8204;
-  var a8205;
-  var a8206;
-  var a8207;
-  var a8208;
-  var a8209;
-  var a8210;
-  var a8211;
-  var a8212;
-  var a8213;
-  var a8214;
-  var a8215;
-  var a8216;
-  var a8217;
-  var a8218;
-  var a8219;
-  var a8220;
-  var a8221;
-  var a8222;
-  var a8223;
-  var a8224;
-  var a8225;
-  var a8226;
-  var a8227;
-  var a8228;
-  var a8229;
-  var a8230;
-  var a8231;
-  var a8232;
-  var a8233;
-  var a8234;
-  var a8235;
-  var a8236;
-  var a8237;
-  var a8238;
-  var a8239;
-  var a8240;
-  var a8241;
-  var a8242;
-  var a8243;
-  var a8244;
-  var a8245;
-  var a8246;
-  var a8247;
-  var a8248;
-  var a8249;
-  var a8250;
-  var a8251;
-  var a8252;
-  var a8253;
-  var a8254;
-  var a8255;
-  var a8256;
-  var a8257;
-  var a8258;
-  var a8259;
-  var a8260;
-  var a8261;
-  var a8262;
-  var a8263;
-  var a8264;
-  var a8265;
-  var a8266;
-  var a8267;
-  var a8268;
-  var a8269;
-  var a8270;
-  var a8271;
-  var a8272;
-  var a8273;
-  var a8274;
-  var a8275;
-  var a8276;
-  var a8277;
-  var a8278;
-  var a8279;
-  var a8280;
-  var a8281;
-  var a8282;
-  var a8283;
-  var a8284;
-  var a8285;
-  var a8286;
-  var a8287;
-  var a8288;
-  var a8289;
-  var a8290;
-  var a8291;
-  var a8292;
-  var a8293;
-  var a8294;
-  var a8295;
-  var a8296;
-  var a8297;
-  var a8298;
-  var a8299;
-  var a8300;
-  var a8301;
-  var a8302;
-  var a8303;
-  var a8304;
-  var a8305;
-  var a8306;
-  var a8307;
-  var a8308;
-  var a8309;
-  var a8310;
-  var a8311;
-  var a8312;
-  var a8313;
-  var a8314;
-  var a8315;
-  var a8316;
-  var a8317;
-  var a8318;
-  var a8319;
-  var a8320;
-  var a8321;
-  var a8322;
-  var a8323;
-  var a8324;
-  var a8325;
-  var a8326;
-  var a8327;
-  var a8328;
-  var a8329;
-  var a8330;
-  var a8331;
-  var a8332;
-  var a8333;
-  var a8334;
-  var a8335;
-  var a8336;
-  var a8337;
-  var a8338;
-  var a8339;
-  var a8340;
-  var a8341;
-  var a8342;
-  var a8343;
-  var a8344;
-  var a8345;
-  var a8346;
-  var a8347;
-  var a8348;
-  var a8349;
-  var a8350;
-  var a8351;
-  var a8352;
-  var a8353;
-  var a8354;
-  var a8355;
-  var a8356;
-  var a8357;
-  var a8358;
-  var a8359;
-  var a8360;
-  var a8361;
-  var a8362;
-  var a8363;
-  var a8364;
-  var a8365;
-  var a8366;
-  var a8367;
-  var a8368;
-  var a8369;
-  var a8370;
-  var a8371;
-  var a8372;
-  var a8373;
-  var a8374;
-  var a8375;
-  var a8376;
-  var a8377;
-  var a8378;
-  var a8379;
-  var a8380;
-  var a8381;
-  var a8382;
-  var a8383;
-  var a8384;
-  var a8385;
-  var a8386;
-  var a8387;
-  var a8388;
-  var a8389;
-  var a8390;
-  var a8391;
-  var a8392;
-  var a8393;
-  var a8394;
-  var a8395;
-  var a8396;
-  var a8397;
-  var a8398;
-  var a8399;
-  var a8400;
-  var a8401;
-  var a8402;
-  var a8403;
-  var a8404;
-  var a8405;
-  var a8406;
-  var a8407;
-  var a8408;
-  var a8409;
-  var a8410;
-  var a8411;
-  var a8412;
-  var a8413;
-  var a8414;
-  var a8415;
-  var a8416;
-  var a8417;
-  var a8418;
-  var a8419;
-  var a8420;
-  var a8421;
-  var a8422;
-  var a8423;
-  var a8424;
-  var a8425;
-  var a8426;
-  var a8427;
-  var a8428;
-  var a8429;
-  var a8430;
-  var a8431;
-  var a8432;
-  var a8433;
-  var a8434;
-  var a8435;
-  var a8436;
-  var a8437;
-  var a8438;
-  var a8439;
-  var a8440;
-  var a8441;
-  var a8442;
-  var a8443;
-  var a8444;
-  var a8445;
-  var a8446;
-  var a8447;
-  var a8448;
-  var a8449;
-  var a8450;
-  var a8451;
-  var a8452;
-  var a8453;
-  var a8454;
-  var a8455;
-  var a8456;
-  var a8457;
-  var a8458;
-  var a8459;
-  var a8460;
-  var a8461;
-  var a8462;
-  var a8463;
-  var a8464;
-  var a8465;
-  var a8466;
-  var a8467;
-  var a8468;
-  var a8469;
-  var a8470;
-  var a8471;
-  var a8472;
-  var a8473;
-  var a8474;
-  var a8475;
-  var a8476;
-  var a8477;
-  var a8478;
-  var a8479;
-  var a8480;
-  var a8481;
-  var a8482;
-  var a8483;
-  var a8484;
-  var a8485;
-  var a8486;
-  var a8487;
-  var a8488;
-  var a8489;
-  var a8490;
-  var a8491;
-  var a8492;
-  var a8493;
-  var a8494;
-  var a8495;
-  var a8496;
-  var a8497;
-  var a8498;
-  var a8499;
-  var a8500;
-  var a8501;
-  var a8502;
-  var a8503;
-  var a8504;
-  var a8505;
-  var a8506;
-  var a8507;
-  var a8508;
-  var a8509;
-  var a8510;
-  var a8511;
-  var a8512;
-  var a8513;
-  var a8514;
-  var a8515;
-  var a8516;
-  var a8517;
-  var a8518;
-  var a8519;
-  var a8520;
-  var a8521;
-  var a8522;
-  var a8523;
-  var a8524;
-  var a8525;
-  var a8526;
-  var a8527;
-  var a8528;
-  var a8529;
-  var a8530;
-  var a8531;
-  var a8532;
-  var a8533;
-  var a8534;
-  var a8535;
-  var a8536;
-  var a8537;
-  var a8538;
-  var a8539;
-  var a8540;
-  var a8541;
-  var a8542;
-  var a8543;
-  var a8544;
-  var a8545;
-  var a8546;
-  var a8547;
-  var a8548;
-  var a8549;
-  var a8550;
-  var a8551;
-  var a8552;
-  var a8553;
-  var a8554;
-  var a8555;
-  var a8556;
-  var a8557;
-  var a8558;
-  var a8559;
-  var a8560;
-  var a8561;
-  var a8562;
-  var a8563;
-  var a8564;
-  var a8565;
-  var a8566;
-  var a8567;
-  var a8568;
-  var a8569;
-  var a8570;
-  var a8571;
-  var a8572;
-  var a8573;
-  var a8574;
-  var a8575;
-  var a8576;
-  var a8577;
-  var a8578;
-  var a8579;
-  var a8580;
-  var a8581;
-  var a8582;
-  var a8583;
-  var a8584;
-  var a8585;
-  var a8586;
-  var a8587;
-  var a8588;
-  var a8589;
-  var a8590;
-  var a8591;
-  var a8592;
-  var a8593;
-  var a8594;
-  var a8595;
-  var a8596;
-  var a8597;
-  var a8598;
-  var a8599;
-  var a8600;
-  var a8601;
-  var a8602;
-  var a8603;
-  var a8604;
-  var a8605;
-  var a8606;
-  var a8607;
-  var a8608;
-  var a8609;
-  var a8610;
-  var a8611;
-  var a8612;
-  var a8613;
-  var a8614;
-  var a8615;
-  var a8616;
-  var a8617;
-  var a8618;
-  var a8619;
-  var a8620;
-  var a8621;
-  var a8622;
-  var a8623;
-  var a8624;
-  var a8625;
-  var a8626;
-  var a8627;
-  var a8628;
-  var a8629;
-  var a8630;
-  var a8631;
-  var a8632;
-  var a8633;
-  var a8634;
-  var a8635;
-  var a8636;
-  var a8637;
-  var a8638;
-  var a8639;
-  var a8640;
-  var a8641;
-  var a8642;
-  var a8643;
-  var a8644;
-  var a8645;
-  var a8646;
-  var a8647;
-  var a8648;
-  var a8649;
-  var a8650;
-  var a8651;
-  var a8652;
-  var a8653;
-  var a8654;
-  var a8655;
-  var a8656;
-  var a8657;
-  var a8658;
-  var a8659;
-  var a8660;
-  var a8661;
-  var a8662;
-  var a8663;
-  var a8664;
-  var a8665;
-  var a8666;
-  var a8667;
-  var a8668;
-  var a8669;
-  var a8670;
-  var a8671;
-  var a8672;
-  var a8673;
-  var a8674;
-  var a8675;
-  var a8676;
-  var a8677;
-  var a8678;
-  var a8679;
-  var a8680;
-  var a8681;
-  var a8682;
-  var a8683;
-  var a8684;
-  var a8685;
-  var a8686;
-  var a8687;
-  var a8688;
-  var a8689;
-  var a8690;
-  var a8691;
-  var a8692;
-  var a8693;
-  var a8694;
-  var a8695;
-  var a8696;
-  var a8697;
-  var a8698;
-  var a8699;
-  var a8700;
-  var a8701;
-  var a8702;
-  var a8703;
-  var a8704;
-  var a8705;
-  var a8706;
-  var a8707;
-  var a8708;
-  var a8709;
-  var a8710;
-  var a8711;
-  var a8712;
-  var a8713;
-  var a8714;
-  var a8715;
-  var a8716;
-  var a8717;
-  var a8718;
-  var a8719;
-  var a8720;
-  var a8721;
-  var a8722;
-  var a8723;
-  var a8724;
-  var a8725;
-  var a8726;
-  var a8727;
-  var a8728;
-  var a8729;
-  var a8730;
-  var a8731;
-  var a8732;
-  var a8733;
-  var a8734;
-  var a8735;
-  var a8736;
-  var a8737;
-  var a8738;
-  var a8739;
-  var a8740;
-  var a8741;
-  var a8742;
-  var a8743;
-  var a8744;
-  var a8745;
-  var a8746;
-  var a8747;
-  var a8748;
-  var a8749;
-  var a8750;
-  var a8751;
-  var a8752;
-  var a8753;
-  var a8754;
-  var a8755;
-  var a8756;
-  var a8757;
-  var a8758;
-  var a8759;
-  var a8760;
-  var a8761;
-  var a8762;
-  var a8763;
-  var a8764;
-  var a8765;
-  var a8766;
-  var a8767;
-  var a8768;
-  var a8769;
-  var a8770;
-  var a8771;
-  var a8772;
-  var a8773;
-  var a8774;
-  var a8775;
-  var a8776;
-  var a8777;
-  var a8778;
-  var a8779;
-  var a8780;
-  var a8781;
-  var a8782;
-  var a8783;
-  var a8784;
-  var a8785;
-  var a8786;
-  var a8787;
-  var a8788;
-  var a8789;
-  var a8790;
-  var a8791;
-  var a8792;
-  var a8793;
-  var a8794;
-  var a8795;
-  var a8796;
-  var a8797;
-  var a8798;
-  var a8799;
-  var a8800;
-  var a8801;
-  var a8802;
-  var a8803;
-  var a8804;
-  var a8805;
-  var a8806;
-  var a8807;
-  var a8808;
-  var a8809;
-  var a8810;
-  var a8811;
-  var a8812;
-  var a8813;
-  var a8814;
-  var a8815;
-  var a8816;
-  var a8817;
-  var a8818;
-  var a8819;
-  var a8820;
-  var a8821;
-  var a8822;
-  var a8823;
-  var a8824;
-  var a8825;
-  var a8826;
-  var a8827;
-  var a8828;
-  var a8829;
-  var a8830;
-  var a8831;
-  var a8832;
-  var a8833;
-  var a8834;
-  var a8835;
-  var a8836;
-  var a8837;
-  var a8838;
-  var a8839;
-  var a8840;
-  var a8841;
-  var a8842;
-  var a8843;
-  var a8844;
-  var a8845;
-  var a8846;
-  var a8847;
-  var a8848;
-  var a8849;
-  var a8850;
-  var a8851;
-  var a8852;
-  var a8853;
-  var a8854;
-  var a8855;
-  var a8856;
-  var a8857;
-  var a8858;
-  var a8859;
-  var a8860;
-  var a8861;
-  var a8862;
-  var a8863;
-  var a8864;
-  var a8865;
-  var a8866;
-  var a8867;
-  var a8868;
-  var a8869;
-  var a8870;
-  var a8871;
-  var a8872;
-  var a8873;
-  var a8874;
-  var a8875;
-  var a8876;
-  var a8877;
-  var a8878;
-  var a8879;
-  var a8880;
-  var a8881;
-  var a8882;
-  var a8883;
-  var a8884;
-  var a8885;
-  var a8886;
-  var a8887;
-  var a8888;
-  var a8889;
-  var a8890;
-  var a8891;
-  var a8892;
-  var a8893;
-  var a8894;
-  var a8895;
-  var a8896;
-  var a8897;
-  var a8898;
-  var a8899;
-  var a8900;
-  var a8901;
-  var a8902;
-  var a8903;
-  var a8904;
-  var a8905;
-  var a8906;
-  var a8907;
-  var a8908;
-  var a8909;
-  var a8910;
-  var a8911;
-  var a8912;
-  var a8913;
-  var a8914;
-  var a8915;
-  var a8916;
-  var a8917;
-  var a8918;
-  var a8919;
-  var a8920;
-  var a8921;
-  var a8922;
-  var a8923;
-  var a8924;
-  var a8925;
-  var a8926;
-  var a8927;
-  var a8928;
-  var a8929;
-  var a8930;
-  var a8931;
-  var a8932;
-  var a8933;
-  var a8934;
-  var a8935;
-  var a8936;
-  var a8937;
-  var a8938;
-  var a8939;
-  var a8940;
-  var a8941;
-  var a8942;
-  var a8943;
-  var a8944;
-  var a8945;
-  var a8946;
-  var a8947;
-  var a8948;
-  var a8949;
-  var a8950;
-  var a8951;
-  var a8952;
-  var a8953;
-  var a8954;
-  var a8955;
-  var a8956;
-  var a8957;
-  var a8958;
-  var a8959;
-  var a8960;
-  var a8961;
-  var a8962;
-  var a8963;
-  var a8964;
-  var a8965;
-  var a8966;
-  var a8967;
-  var a8968;
-  var a8969;
-  var a8970;
-  var a8971;
-  var a8972;
-  var a8973;
-  var a8974;
-  var a8975;
-  var a8976;
-  var a8977;
-  var a8978;
-  var a8979;
-  var a8980;
-  var a8981;
-  var a8982;
-  var a8983;
-  var a8984;
-  var a8985;
-  var a8986;
-  var a8987;
-  var a8988;
-  var a8989;
-  var a8990;
-  var a8991;
-  var a8992;
-  var a8993;
-  var a8994;
-  var a8995;
-  var a8996;
-  var a8997;
-  var a8998;
-  var a8999;
-  var a9000;
-  var a9001;
-  var a9002;
-  var a9003;
-  var a9004;
-  var a9005;
-  var a9006;
-  var a9007;
-  var a9008;
-  var a9009;
-  var a9010;
-  var a9011;
-  var a9012;
-  var a9013;
-  var a9014;
-  var a9015;
-  var a9016;
-  var a9017;
-  var a9018;
-  var a9019;
-  var a9020;
-  var a9021;
-  var a9022;
-  var a9023;
-  var a9024;
-  var a9025;
-  var a9026;
-  var a9027;
-  var a9028;
-  var a9029;
-  var a9030;
-  var a9031;
-  var a9032;
-  var a9033;
-  var a9034;
-  var a9035;
-  var a9036;
-  var a9037;
-  var a9038;
-  var a9039;
-  var a9040;
-  var a9041;
-  var a9042;
-  var a9043;
-  var a9044;
-  var a9045;
-  var a9046;
-  var a9047;
-  var a9048;
-  var a9049;
-  var a9050;
-  var a9051;
-  var a9052;
-  var a9053;
-  var a9054;
-  var a9055;
-  var a9056;
-  var a9057;
-  var a9058;
-  var a9059;
-  var a9060;
-  var a9061;
-  var a9062;
-  var a9063;
-  var a9064;
-  var a9065;
-  var a9066;
-  var a9067;
-  var a9068;
-  var a9069;
-  var a9070;
-  var a9071;
-  var a9072;
-  var a9073;
-  var a9074;
-  var a9075;
-  var a9076;
-  var a9077;
-  var a9078;
-  var a9079;
-  var a9080;
-  var a9081;
-  var a9082;
-  var a9083;
-  var a9084;
-  var a9085;
-  var a9086;
-  var a9087;
-  var a9088;
-  var a9089;
-  var a9090;
-  var a9091;
-  var a9092;
-  var a9093;
-  var a9094;
-  var a9095;
-  var a9096;
-  var a9097;
-  var a9098;
-  var a9099;
-  var a9100;
-  var a9101;
-  var a9102;
-  var a9103;
-  var a9104;
-  var a9105;
-  var a9106;
-  var a9107;
-  var a9108;
-  var a9109;
-  var a9110;
-  var a9111;
-  var a9112;
-  var a9113;
-  var a9114;
-  var a9115;
-  var a9116;
-  var a9117;
-  var a9118;
-  var a9119;
-  var a9120;
-  var a9121;
-  var a9122;
-  var a9123;
-  var a9124;
-  var a9125;
-  var a9126;
-  var a9127;
-  var a9128;
-  var a9129;
-  var a9130;
-  var a9131;
-  var a9132;
-  var a9133;
-  var a9134;
-  var a9135;
-  var a9136;
-  var a9137;
-  var a9138;
-  var a9139;
-  var a9140;
-  var a9141;
-  var a9142;
-  var a9143;
-  var a9144;
-  var a9145;
-  var a9146;
-  var a9147;
-  var a9148;
-  var a9149;
-  var a9150;
-  var a9151;
-  var a9152;
-  var a9153;
-  var a9154;
-  var a9155;
-  var a9156;
-  var a9157;
-  var a9158;
-  var a9159;
-  var a9160;
-  var a9161;
-  var a9162;
-  var a9163;
-  var a9164;
-  var a9165;
-  var a9166;
-  var a9167;
-  var a9168;
-  var a9169;
-  var a9170;
-  var a9171;
-  var a9172;
-  var a9173;
-  var a9174;
-  var a9175;
-  var a9176;
-  var a9177;
-  var a9178;
-  var a9179;
-  var a9180;
-  var a9181;
-  var a9182;
-  var a9183;
-  var a9184;
-  var a9185;
-  var a9186;
-  var a9187;
-  var a9188;
-  var a9189;
-  var a9190;
-  var a9191;
-  var a9192;
-  var a9193;
-  var a9194;
-  var a9195;
-  var a9196;
-  var a9197;
-  var a9198;
-  var a9199;
-  var a9200;
-  var a9201;
-  var a9202;
-  var a9203;
-  var a9204;
-  var a9205;
-  var a9206;
-  var a9207;
-  var a9208;
-  var a9209;
-  var a9210;
-  var a9211;
-  var a9212;
-  var a9213;
-  var a9214;
-  var a9215;
-  var a9216;
-  var a9217;
-  var a9218;
-  var a9219;
-  var a9220;
-  var a9221;
-  var a9222;
-  var a9223;
-  var a9224;
-  var a9225;
-  var a9226;
-  var a9227;
-  var a9228;
-  var a9229;
-  var a9230;
-  var a9231;
-  var a9232;
-  var a9233;
-  var a9234;
-  var a9235;
-  var a9236;
-  var a9237;
-  var a9238;
-  var a9239;
-  var a9240;
-  var a9241;
-  var a9242;
-  var a9243;
-  var a9244;
-  var a9245;
-  var a9246;
-  var a9247;
-  var a9248;
-  var a9249;
-  var a9250;
-  var a9251;
-  var a9252;
-  var a9253;
-  var a9254;
-  var a9255;
-  var a9256;
-  var a9257;
-  var a9258;
-  var a9259;
-  var a9260;
-  var a9261;
-  var a9262;
-  var a9263;
-  var a9264;
-  var a9265;
-  var a9266;
-  var a9267;
-  var a9268;
-  var a9269;
-  var a9270;
-  var a9271;
-  var a9272;
-  var a9273;
-  var a9274;
-  var a9275;
-  var a9276;
-  var a9277;
-  var a9278;
-  var a9279;
-  var a9280;
-  var a9281;
-  var a9282;
-  var a9283;
-  var a9284;
-  var a9285;
-  var a9286;
-  var a9287;
-  var a9288;
-  var a9289;
-  var a9290;
-  var a9291;
-  var a9292;
-  var a9293;
-  var a9294;
-  var a9295;
-  var a9296;
-  var a9297;
-  var a9298;
-  var a9299;
-  var a9300;
-  var a9301;
-  var a9302;
-  var a9303;
-  var a9304;
-  var a9305;
-  var a9306;
-  var a9307;
-  var a9308;
-  var a9309;
-  var a9310;
-  var a9311;
-  var a9312;
-  var a9313;
-  var a9314;
-  var a9315;
-  var a9316;
-  var a9317;
-  var a9318;
-  var a9319;
-  var a9320;
-  var a9321;
-  var a9322;
-  var a9323;
-  var a9324;
-  var a9325;
-  var a9326;
-  var a9327;
-  var a9328;
-  var a9329;
-  var a9330;
-  var a9331;
-  var a9332;
-  var a9333;
-  var a9334;
-  var a9335;
-  var a9336;
-  var a9337;
-  var a9338;
-  var a9339;
-  var a9340;
-  var a9341;
-  var a9342;
-  var a9343;
-  var a9344;
-  var a9345;
-  var a9346;
-  var a9347;
-  var a9348;
-  var a9349;
-  var a9350;
-  var a9351;
-  var a9352;
-  var a9353;
-  var a9354;
-  var a9355;
-  var a9356;
-  var a9357;
-  var a9358;
-  var a9359;
-  var a9360;
-  var a9361;
-  var a9362;
-  var a9363;
-  var a9364;
-  var a9365;
-  var a9366;
-  var a9367;
-  var a9368;
-  var a9369;
-  var a9370;
-  var a9371;
-  var a9372;
-  var a9373;
-  var a9374;
-  var a9375;
-  var a9376;
-  var a9377;
-  var a9378;
-  var a9379;
-  var a9380;
-  var a9381;
-  var a9382;
-  var a9383;
-  var a9384;
-  var a9385;
-  var a9386;
-  var a9387;
-  var a9388;
-  var a9389;
-  var a9390;
-  var a9391;
-  var a9392;
-  var a9393;
-  var a9394;
-  var a9395;
-  var a9396;
-  var a9397;
-  var a9398;
-  var a9399;
-  var a9400;
-  var a9401;
-  var a9402;
-  var a9403;
-  var a9404;
-  var a9405;
-  var a9406;
-  var a9407;
-  var a9408;
-  var a9409;
-  var a9410;
-  var a9411;
-  var a9412;
-  var a9413;
-  var a9414;
-  var a9415;
-  var a9416;
-  var a9417;
-  var a9418;
-  var a9419;
-  var a9420;
-  var a9421;
-  var a9422;
-  var a9423;
-  var a9424;
-  var a9425;
-  var a9426;
-  var a9427;
-  var a9428;
-  var a9429;
-  var a9430;
-  var a9431;
-  var a9432;
-  var a9433;
-  var a9434;
-  var a9435;
-  var a9436;
-  var a9437;
-  var a9438;
-  var a9439;
-  var a9440;
-  var a9441;
-  var a9442;
-  var a9443;
-  var a9444;
-  var a9445;
-  var a9446;
-  var a9447;
-  var a9448;
-  var a9449;
-  var a9450;
-  var a9451;
-  var a9452;
-  var a9453;
-  var a9454;
-  var a9455;
-  var a9456;
-  var a9457;
-  var a9458;
-  var a9459;
-  var a9460;
-  var a9461;
-  var a9462;
-  var a9463;
-  var a9464;
-  var a9465;
-  var a9466;
-  var a9467;
-  var a9468;
-  var a9469;
-  var a9470;
-  var a9471;
-  var a9472;
-  var a9473;
-  var a9474;
-  var a9475;
-  var a9476;
-  var a9477;
-  var a9478;
-  var a9479;
-  var a9480;
-  var a9481;
-  var a9482;
-  var a9483;
-  var a9484;
-  var a9485;
-  var a9486;
-  var a9487;
-  var a9488;
-  var a9489;
-  var a9490;
-  var a9491;
-  var a9492;
-  var a9493;
-  var a9494;
-  var a9495;
-  var a9496;
-  var a9497;
-  var a9498;
-  var a9499;
-  var a9500;
-  var a9501;
-  var a9502;
-  var a9503;
-  var a9504;
-  var a9505;
-  var a9506;
-  var a9507;
-  var a9508;
-  var a9509;
-  var a9510;
-  var a9511;
-  var a9512;
-  var a9513;
-  var a9514;
-  var a9515;
-  var a9516;
-  var a9517;
-  var a9518;
-  var a9519;
-  var a9520;
-  var a9521;
-  var a9522;
-  var a9523;
-  var a9524;
-  var a9525;
-  var a9526;
-  var a9527;
-  var a9528;
-  var a9529;
-  var a9530;
-  var a9531;
-  var a9532;
-  var a9533;
-  var a9534;
-  var a9535;
-  var a9536;
-  var a9537;
-  var a9538;
-  var a9539;
-  var a9540;
-  var a9541;
-  var a9542;
-  var a9543;
-  var a9544;
-  var a9545;
-  var a9546;
-  var a9547;
-  var a9548;
-  var a9549;
-  var a9550;
-  var a9551;
-  var a9552;
-  var a9553;
-  var a9554;
-  var a9555;
-  var a9556;
-  var a9557;
-  var a9558;
-  var a9559;
-  var a9560;
-  var a9561;
-  var a9562;
-  var a9563;
-  var a9564;
-  var a9565;
-  var a9566;
-  var a9567;
-  var a9568;
-  var a9569;
-  var a9570;
-  var a9571;
-  var a9572;
-  var a9573;
-  var a9574;
-  var a9575;
-  var a9576;
-  var a9577;
-  var a9578;
-  var a9579;
-  var a9580;
-  var a9581;
-  var a9582;
-  var a9583;
-  var a9584;
-  var a9585;
-  var a9586;
-  var a9587;
-  var a9588;
-  var a9589;
-  var a9590;
-  var a9591;
-  var a9592;
-  var a9593;
-  var a9594;
-  var a9595;
-  var a9596;
-  var a9597;
-  var a9598;
-  var a9599;
-  var a9600;
-  var a9601;
-  var a9602;
-  var a9603;
-  var a9604;
-  var a9605;
-  var a9606;
-  var a9607;
-  var a9608;
-  var a9609;
-  var a9610;
-  var a9611;
-  var a9612;
-  var a9613;
-  var a9614;
-  var a9615;
-  var a9616;
-  var a9617;
-  var a9618;
-  var a9619;
-  var a9620;
-  var a9621;
-  var a9622;
-  var a9623;
-  var a9624;
-  var a9625;
-  var a9626;
-  var a9627;
-  var a9628;
-  var a9629;
-  var a9630;
-  var a9631;
-  var a9632;
-  var a9633;
-  var a9634;
-  var a9635;
-  var a9636;
-  var a9637;
-  var a9638;
-  var a9639;
-  var a9640;
-  var a9641;
-  var a9642;
-  var a9643;
-  var a9644;
-  var a9645;
-  var a9646;
-  var a9647;
-  var a9648;
-  var a9649;
-  var a9650;
-  var a9651;
-  var a9652;
-  var a9653;
-  var a9654;
-  var a9655;
-  var a9656;
-  var a9657;
-  var a9658;
-  var a9659;
-  var a9660;
-  var a9661;
-  var a9662;
-  var a9663;
-  var a9664;
-  var a9665;
-  var a9666;
-  var a9667;
-  var a9668;
-  var a9669;
-  var a9670;
-  var a9671;
-  var a9672;
-  var a9673;
-  var a9674;
-  var a9675;
-  var a9676;
-  var a9677;
-  var a9678;
-  var a9679;
-  var a9680;
-  var a9681;
-  var a9682;
-  var a9683;
-  var a9684;
-  var a9685;
-  var a9686;
-  var a9687;
-  var a9688;
-  var a9689;
-  var a9690;
-  var a9691;
-  var a9692;
-  var a9693;
-  var a9694;
-  var a9695;
-  var a9696;
-  var a9697;
-  var a9698;
-  var a9699;
-  var a9700;
-  var a9701;
-  var a9702;
-  var a9703;
-  var a9704;
-  var a9705;
-  var a9706;
-  var a9707;
-  var a9708;
-  var a9709;
-  var a9710;
-  var a9711;
-  var a9712;
-  var a9713;
-  var a9714;
-  var a9715;
-  var a9716;
-  var a9717;
-  var a9718;
-  var a9719;
-  var a9720;
-  var a9721;
-  var a9722;
-  var a9723;
-  var a9724;
-  var a9725;
-  var a9726;
-  var a9727;
-  var a9728;
-  var a9729;
-  var a9730;
-  var a9731;
-  var a9732;
-  var a9733;
-  var a9734;
-  var a9735;
-  var a9736;
-  var a9737;
-  var a9738;
-  var a9739;
-  var a9740;
-  var a9741;
-  var a9742;
-  var a9743;
-  var a9744;
-  var a9745;
-  var a9746;
-  var a9747;
-  var a9748;
-  var a9749;
-  var a9750;
-  var a9751;
-  var a9752;
-  var a9753;
-  var a9754;
-  var a9755;
-  var a9756;
-  var a9757;
-  var a9758;
-  var a9759;
-  var a9760;
-  var a9761;
-  var a9762;
-  var a9763;
-  var a9764;
-  var a9765;
-  var a9766;
-  var a9767;
-  var a9768;
-  var a9769;
-  var a9770;
-  var a9771;
-  var a9772;
-  var a9773;
-  var a9774;
-  var a9775;
-  var a9776;
-  var a9777;
-  var a9778;
-  var a9779;
-  var a9780;
-  var a9781;
-  var a9782;
-  var a9783;
-  var a9784;
-  var a9785;
-  var a9786;
-  var a9787;
-  var a9788;
-  var a9789;
-  var a9790;
-  var a9791;
-  var a9792;
-  var a9793;
-  var a9794;
-  var a9795;
-  var a9796;
-  var a9797;
-  var a9798;
-  var a9799;
-  var a9800;
-  var a9801;
-  var a9802;
-  var a9803;
-  var a9804;
-  var a9805;
-  var a9806;
-  var a9807;
-  var a9808;
-  var a9809;
-  var a9810;
-  var a9811;
-  var a9812;
-  var a9813;
-  var a9814;
-  var a9815;
-  var a9816;
-  var a9817;
-  var a9818;
-  var a9819;
-  var a9820;
-  var a9821;
-  var a9822;
-  var a9823;
-  var a9824;
-  var a9825;
-  var a9826;
-  var a9827;
-  var a9828;
-  var a9829;
-  var a9830;
-  var a9831;
-  var a9832;
-  var a9833;
-  var a9834;
-  var a9835;
-  var a9836;
-  var a9837;
-  var a9838;
-  var a9839;
-  var a9840;
-  var a9841;
-  var a9842;
-  var a9843;
-  var a9844;
-  var a9845;
-  var a9846;
-  var a9847;
-  var a9848;
-  var a9849;
-  var a9850;
-  var a9851;
-  var a9852;
-  var a9853;
-  var a9854;
-  var a9855;
-  var a9856;
-  var a9857;
-  var a9858;
-  var a9859;
-  var a9860;
-  var a9861;
-  var a9862;
-  var a9863;
-  var a9864;
-  var a9865;
-  var a9866;
-  var a9867;
-  var a9868;
-  var a9869;
-  var a9870;
-  var a9871;
-  var a9872;
-  var a9873;
-  var a9874;
-  var a9875;
-  var a9876;
-  var a9877;
-  var a9878;
-  var a9879;
-  var a9880;
-  var a9881;
-  var a9882;
-  var a9883;
-  var a9884;
-  var a9885;
-  var a9886;
-  var a9887;
-  var a9888;
-  var a9889;
-  var a9890;
-  var a9891;
-  var a9892;
-  var a9893;
-  var a9894;
-  var a9895;
-  var a9896;
-  var a9897;
-  var a9898;
-  var a9899;
-  var a9900;
-  var a9901;
-  var a9902;
-  var a9903;
-  var a9904;
-  var a9905;
-  var a9906;
-  var a9907;
-  var a9908;
-  var a9909;
-  var a9910;
-  var a9911;
-  var a9912;
-  var a9913;
-  var a9914;
-  var a9915;
-  var a9916;
-  var a9917;
-  var a9918;
-  var a9919;
-  var a9920;
-  var a9921;
-  var a9922;
-  var a9923;
-  var a9924;
-  var a9925;
-  var a9926;
-  var a9927;
-  var a9928;
-  var a9929;
-  var a9930;
-  var a9931;
-  var a9932;
-  var a9933;
-  var a9934;
-  var a9935;
-  var a9936;
-  var a9937;
-  var a9938;
-  var a9939;
-  var a9940;
-  var a9941;
-  var a9942;
-  var a9943;
-  var a9944;
-  var a9945;
-  var a9946;
-  var a9947;
-  var a9948;
-  var a9949;
-  var a9950;
-  var a9951;
-  var a9952;
-  var a9953;
-  var a9954;
-  var a9955;
-  var a9956;
-  var a9957;
-  var a9958;
-  var a9959;
-  var a9960;
-  var a9961;
-  var a9962;
-  var a9963;
-  var a9964;
-  var a9965;
-  var a9966;
-  var a9967;
-  var a9968;
-  var a9969;
-  var a9970;
-  var a9971;
-  var a9972;
-  var a9973;
-  var a9974;
-  var a9975;
-  var a9976;
-  var a9977;
-  var a9978;
-  var a9979;
-  var a9980;
-  var a9981;
-  var a9982;
-  var a9983;
-  var a9984;
-  var a9985;
-  var a9986;
-  var a9987;
-  var a9988;
-  var a9989;
-  var a9990;
-  var a9991;
-  var a9992;
-  var a9993;
-  var a9994;
-  var a9995;
-  var a9996;
-  var a9997;
-  var a9998;
-  var a9999;
-  var a10000;
-  var a10001;
-  var a10002;
-  var a10003;
-  var a10004;
-  var a10005;
-  var a10006;
-  var a10007;
-  var a10008;
-  var a10009;
-  var a10010;
-  var a10011;
-  var a10012;
-  var a10013;
-  var a10014;
-  var a10015;
-  var a10016;
-  var a10017;
-  var a10018;
-  var a10019;
-  var a10020;
-  var a10021;
-  var a10022;
-  var a10023;
-  var a10024;
-  var a10025;
-  var a10026;
-  var a10027;
-  var a10028;
-  var a10029;
-  var a10030;
-  var a10031;
-  var a10032;
-  var a10033;
-  var a10034;
-  var a10035;
-  var a10036;
-  var a10037;
-  var a10038;
-  var a10039;
-  var a10040;
-  var a10041;
-  var a10042;
-  var a10043;
-  var a10044;
-  var a10045;
-  var a10046;
-  var a10047;
-  var a10048;
-  var a10049;
-  var a10050;
-  var a10051;
-  var a10052;
-  var a10053;
-  var a10054;
-  var a10055;
-  var a10056;
-  var a10057;
-  var a10058;
-  var a10059;
-  var a10060;
-  var a10061;
-  var a10062;
-  var a10063;
-  var a10064;
-  var a10065;
-  var a10066;
-  var a10067;
-  var a10068;
-  var a10069;
-  var a10070;
-  var a10071;
-  var a10072;
-  var a10073;
-  var a10074;
-  var a10075;
-  var a10076;
-  var a10077;
-  var a10078;
-  var a10079;
-  var a10080;
-  var a10081;
-  var a10082;
-  var a10083;
-  var a10084;
-  var a10085;
-  var a10086;
-  var a10087;
-  var a10088;
-  var a10089;
-  var a10090;
-  var a10091;
-  var a10092;
-  var a10093;
-  var a10094;
-  var a10095;
-  var a10096;
-  var a10097;
-  var a10098;
-  var a10099;
-  var a10100;
-  var a10101;
-  var a10102;
-  var a10103;
-  var a10104;
-  var a10105;
-  var a10106;
-  var a10107;
-  var a10108;
-  var a10109;
-  var a10110;
-  var a10111;
-  var a10112;
-  var a10113;
-  var a10114;
-  var a10115;
-  var a10116;
-  var a10117;
-  var a10118;
-  var a10119;
-  var a10120;
-  var a10121;
-  var a10122;
-  var a10123;
-  var a10124;
-  var a10125;
-  var a10126;
-  var a10127;
-  var a10128;
-  var a10129;
-  var a10130;
-  var a10131;
-  var a10132;
-  var a10133;
-  var a10134;
-  var a10135;
-  var a10136;
-  var a10137;
-  var a10138;
-  var a10139;
-  var a10140;
-  var a10141;
-  var a10142;
-  var a10143;
-  var a10144;
-  var a10145;
-  var a10146;
-  var a10147;
-  var a10148;
-  var a10149;
-  var a10150;
-  var a10151;
-  var a10152;
-  var a10153;
-  var a10154;
-  var a10155;
-  var a10156;
-  var a10157;
-  var a10158;
-  var a10159;
-  var a10160;
-  var a10161;
-  var a10162;
-  var a10163;
-  var a10164;
-  var a10165;
-  var a10166;
-  var a10167;
-  var a10168;
-  var a10169;
-  var a10170;
-  var a10171;
-  var a10172;
-  var a10173;
-  var a10174;
-  var a10175;
-  var a10176;
-  var a10177;
-  var a10178;
-  var a10179;
-  var a10180;
-  var a10181;
-  var a10182;
-  var a10183;
-  var a10184;
-  var a10185;
-  var a10186;
-  var a10187;
-  var a10188;
-  var a10189;
-  var a10190;
-  var a10191;
-  var a10192;
-  var a10193;
-  var a10194;
-  var a10195;
-  var a10196;
-  var a10197;
-  var a10198;
-  var a10199;
-  var a10200;
-  var a10201;
-  var a10202;
-  var a10203;
-  var a10204;
-  var a10205;
-  var a10206;
-  var a10207;
-  var a10208;
-  var a10209;
-  var a10210;
-  var a10211;
-  var a10212;
-  var a10213;
-  var a10214;
-  var a10215;
-  var a10216;
-  var a10217;
-  var a10218;
-  var a10219;
-  var a10220;
-  var a10221;
-  var a10222;
-  var a10223;
-  var a10224;
-  var a10225;
-  var a10226;
-  var a10227;
-  var a10228;
-  var a10229;
-  var a10230;
-  var a10231;
-  var a10232;
-  var a10233;
-  var a10234;
-  var a10235;
-  var a10236;
-  var a10237;
-  var a10238;
-  var a10239;
-  var a10240;
-  var a10241;
-  var a10242;
-  var a10243;
-  var a10244;
-  var a10245;
-  var a10246;
-  var a10247;
-  var a10248;
-  var a10249;
-  var a10250;
-  var a10251;
-  var a10252;
-  var a10253;
-  var a10254;
-  var a10255;
-  var a10256;
-  var a10257;
-  var a10258;
-  var a10259;
-  var a10260;
-  var a10261;
-  var a10262;
-  var a10263;
-  var a10264;
-  var a10265;
-  var a10266;
-  var a10267;
-  var a10268;
-  var a10269;
-  var a10270;
-  var a10271;
-  var a10272;
-  var a10273;
-  var a10274;
-  var a10275;
-  var a10276;
-  var a10277;
-  var a10278;
-  var a10279;
-  var a10280;
-  var a10281;
-  var a10282;
-  var a10283;
-  var a10284;
-  var a10285;
-  var a10286;
-  var a10287;
-  var a10288;
-  var a10289;
-  var a10290;
-  var a10291;
-  var a10292;
-  var a10293;
-  var a10294;
-  var a10295;
-  var a10296;
-  var a10297;
-  var a10298;
-  var a10299;
-  var a10300;
-  var a10301;
-  var a10302;
-  var a10303;
-  var a10304;
-  var a10305;
-  var a10306;
-  var a10307;
-  var a10308;
-  var a10309;
-  var a10310;
-  var a10311;
-  var a10312;
-  var a10313;
-  var a10314;
-  var a10315;
-  var a10316;
-  var a10317;
-  var a10318;
-  var a10319;
-  var a10320;
-  var a10321;
-  var a10322;
-  var a10323;
-  var a10324;
-  var a10325;
-  var a10326;
-  var a10327;
-  var a10328;
-  var a10329;
-  var a10330;
-  var a10331;
-  var a10332;
-  var a10333;
-  var a10334;
-  var a10335;
-  var a10336;
-  var a10337;
-  var a10338;
-  var a10339;
-  var a10340;
-  var a10341;
-  var a10342;
-  var a10343;
-  var a10344;
-  var a10345;
-  var a10346;
-  var a10347;
-  var a10348;
-  var a10349;
-  var a10350;
-  var a10351;
-  var a10352;
-  var a10353;
-  var a10354;
-  var a10355;
-  var a10356;
-  var a10357;
-  var a10358;
-  var a10359;
-  var a10360;
-  var a10361;
-  var a10362;
-  var a10363;
-  var a10364;
-  var a10365;
-  var a10366;
-  var a10367;
-  var a10368;
-  var a10369;
-  var a10370;
-  var a10371;
-  var a10372;
-  var a10373;
-  var a10374;
-  var a10375;
-  var a10376;
-  var a10377;
-  var a10378;
-  var a10379;
-  var a10380;
-  var a10381;
-  var a10382;
-  var a10383;
-  var a10384;
-  var a10385;
-  var a10386;
-  var a10387;
-  var a10388;
-  var a10389;
-  var a10390;
-  var a10391;
-  var a10392;
-  var a10393;
-  var a10394;
-  var a10395;
-  var a10396;
-  var a10397;
-  var a10398;
-  var a10399;
-  var a10400;
-  var a10401;
-  var a10402;
-  var a10403;
-  var a10404;
-  var a10405;
-  var a10406;
-  var a10407;
-  var a10408;
-  var a10409;
-  var a10410;
-  var a10411;
-  var a10412;
-  var a10413;
-  var a10414;
-  var a10415;
-  var a10416;
-  var a10417;
-  var a10418;
-  var a10419;
-  var a10420;
-  var a10421;
-  var a10422;
-  var a10423;
-  var a10424;
-  var a10425;
-  var a10426;
-  var a10427;
-  var a10428;
-  var a10429;
-  var a10430;
-  var a10431;
-  var a10432;
-  var a10433;
-  var a10434;
-  var a10435;
-  var a10436;
-  var a10437;
-  var a10438;
-  var a10439;
-  var a10440;
-  var a10441;
-  var a10442;
-  var a10443;
-  var a10444;
-  var a10445;
-  var a10446;
-  var a10447;
-  var a10448;
-  var a10449;
-  var a10450;
-  var a10451;
-  var a10452;
-  var a10453;
-  var a10454;
-  var a10455;
-  var a10456;
-  var a10457;
-  var a10458;
-  var a10459;
-  var a10460;
-  var a10461;
-  var a10462;
-  var a10463;
-  var a10464;
-  var a10465;
-  var a10466;
-  var a10467;
-  var a10468;
-  var a10469;
-  var a10470;
-  var a10471;
-  var a10472;
-  var a10473;
-  var a10474;
-  var a10475;
-  var a10476;
-  var a10477;
-  var a10478;
-  var a10479;
-  var a10480;
-  var a10481;
-  var a10482;
-  var a10483;
-  var a10484;
-  var a10485;
-  var a10486;
-  var a10487;
-  var a10488;
-  var a10489;
-  var a10490;
-  var a10491;
-  var a10492;
-  var a10493;
-  var a10494;
-  var a10495;
-  var a10496;
-  var a10497;
-  var a10498;
-  var a10499;
-  var a10500;
-  var a10501;
-  var a10502;
-  var a10503;
-  var a10504;
-  var a10505;
-  var a10506;
-  var a10507;
-  var a10508;
-  var a10509;
-  var a10510;
-  var a10511;
-  var a10512;
-  var a10513;
-  var a10514;
-  var a10515;
-  var a10516;
-  var a10517;
-  var a10518;
-  var a10519;
-  var a10520;
-  var a10521;
-  var a10522;
-  var a10523;
-  var a10524;
-  var a10525;
-  var a10526;
-  var a10527;
-  var a10528;
-  var a10529;
-  var a10530;
-  var a10531;
-  var a10532;
-  var a10533;
-  var a10534;
-  var a10535;
-  var a10536;
-  var a10537;
-  var a10538;
-  var a10539;
-  var a10540;
-  var a10541;
-  var a10542;
-  var a10543;
-  var a10544;
-  var a10545;
-  var a10546;
-  var a10547;
-  var a10548;
-  var a10549;
-  var a10550;
-  var a10551;
-  var a10552;
-  var a10553;
-  var a10554;
-  var a10555;
-  var a10556;
-  var a10557;
-  var a10558;
-  var a10559;
-  var a10560;
-  var a10561;
-  var a10562;
-  var a10563;
-  var a10564;
-  var a10565;
-  var a10566;
-  var a10567;
-  var a10568;
-  var a10569;
-  var a10570;
-  var a10571;
-  var a10572;
-  var a10573;
-  var a10574;
-  var a10575;
-  var a10576;
-  var a10577;
-  var a10578;
-  var a10579;
-  var a10580;
-  var a10581;
-  var a10582;
-  var a10583;
-  var a10584;
-  var a10585;
-  var a10586;
-  var a10587;
-  var a10588;
-  var a10589;
-  var a10590;
-  var a10591;
-  var a10592;
-  var a10593;
-  var a10594;
-  var a10595;
-  var a10596;
-  var a10597;
-  var a10598;
-  var a10599;
-  var a10600;
-  var a10601;
-  var a10602;
-  var a10603;
-  var a10604;
-  var a10605;
-  var a10606;
-  var a10607;
-  var a10608;
-  var a10609;
-  var a10610;
-  var a10611;
-  var a10612;
-  var a10613;
-  var a10614;
-  var a10615;
-  var a10616;
-  var a10617;
-  var a10618;
-  var a10619;
-  var a10620;
-  var a10621;
-  var a10622;
-  var a10623;
-  var a10624;
-  var a10625;
-  var a10626;
-  var a10627;
-  var a10628;
-  var a10629;
-  var a10630;
-  var a10631;
-  var a10632;
-  var a10633;
-  var a10634;
-  var a10635;
-  var a10636;
-  var a10637;
-  var a10638;
-  var a10639;
-  var a10640;
-  var a10641;
-  var a10642;
-  var a10643;
-  var a10644;
-  var a10645;
-  var a10646;
-  var a10647;
-  var a10648;
-  var a10649;
-  var a10650;
-  var a10651;
-  var a10652;
-  var a10653;
-  var a10654;
-  var a10655;
-  var a10656;
-  var a10657;
-  var a10658;
-  var a10659;
-  var a10660;
-  var a10661;
-  var a10662;
-  var a10663;
-  var a10664;
-  var a10665;
-  var a10666;
-  var a10667;
-  var a10668;
-  var a10669;
-  var a10670;
-  var a10671;
-  var a10672;
-  var a10673;
-  var a10674;
-  var a10675;
-  var a10676;
-  var a10677;
-  var a10678;
-  var a10679;
-  var a10680;
-  var a10681;
-  var a10682;
-  var a10683;
-  var a10684;
-  var a10685;
-  var a10686;
-  var a10687;
-  var a10688;
-  var a10689;
-  var a10690;
-  var a10691;
-  var a10692;
-  var a10693;
-  var a10694;
-  var a10695;
-  var a10696;
-  var a10697;
-  var a10698;
-  var a10699;
-  var a10700;
-  var a10701;
-  var a10702;
-  var a10703;
-  var a10704;
-  var a10705;
-  var a10706;
-  var a10707;
-  var a10708;
-  var a10709;
-  var a10710;
-  var a10711;
-  var a10712;
-  var a10713;
-  var a10714;
-  var a10715;
-  var a10716;
-  var a10717;
-  var a10718;
-  var a10719;
-  var a10720;
-  var a10721;
-  var a10722;
-  var a10723;
-  var a10724;
-  var a10725;
-  var a10726;
-  var a10727;
-  var a10728;
-  var a10729;
-  var a10730;
-  var a10731;
-  var a10732;
-  var a10733;
-  var a10734;
-  var a10735;
-  var a10736;
-  var a10737;
-  var a10738;
-  var a10739;
-  var a10740;
-  var a10741;
-  var a10742;
-  var a10743;
-  var a10744;
-  var a10745;
-  var a10746;
-  var a10747;
-  var a10748;
-  var a10749;
-  var a10750;
-  var a10751;
-  var a10752;
-  var a10753;
-  var a10754;
-  var a10755;
-  var a10756;
-  var a10757;
-  var a10758;
-  var a10759;
-  var a10760;
-  var a10761;
-  var a10762;
-  var a10763;
-  var a10764;
-  var a10765;
-  var a10766;
-  var a10767;
-  var a10768;
-  var a10769;
-  var a10770;
-  var a10771;
-  var a10772;
-  var a10773;
-  var a10774;
-  var a10775;
-  var a10776;
-  var a10777;
-  var a10778;
-  var a10779;
-  var a10780;
-  var a10781;
-  var a10782;
-  var a10783;
-  var a10784;
-  var a10785;
-  var a10786;
-  var a10787;
-  var a10788;
-  var a10789;
-  var a10790;
-  var a10791;
-  var a10792;
-  var a10793;
-  var a10794;
-  var a10795;
-  var a10796;
-  var a10797;
-  var a10798;
-  var a10799;
-  var a10800;
-  var a10801;
-  var a10802;
-  var a10803;
-  var a10804;
-  var a10805;
-  var a10806;
-  var a10807;
-  var a10808;
-  var a10809;
-  var a10810;
-  var a10811;
-  var a10812;
-  var a10813;
-  var a10814;
-  var a10815;
-  var a10816;
-  var a10817;
-  var a10818;
-  var a10819;
-  var a10820;
-  var a10821;
-  var a10822;
-  var a10823;
-  var a10824;
-  var a10825;
-  var a10826;
-  var a10827;
-  var a10828;
-  var a10829;
-  var a10830;
-  var a10831;
-  var a10832;
-  var a10833;
-  var a10834;
-  var a10835;
-  var a10836;
-  var a10837;
-  var a10838;
-  var a10839;
-  var a10840;
-  var a10841;
-  var a10842;
-  var a10843;
-  var a10844;
-  var a10845;
-  var a10846;
-  var a10847;
-  var a10848;
-  var a10849;
-  var a10850;
-  var a10851;
-  var a10852;
-  var a10853;
-  var a10854;
-  var a10855;
-  var a10856;
-  var a10857;
-  var a10858;
-  var a10859;
-  var a10860;
-  var a10861;
-  var a10862;
-  var a10863;
-  var a10864;
-  var a10865;
-  var a10866;
-  var a10867;
-  var a10868;
-  var a10869;
-  var a10870;
-  var a10871;
-  var a10872;
-  var a10873;
-  var a10874;
-  var a10875;
-  var a10876;
-  var a10877;
-  var a10878;
-  var a10879;
-  var a10880;
-  var a10881;
-  var a10882;
-  var a10883;
-  var a10884;
-  var a10885;
-  var a10886;
-  var a10887;
-  var a10888;
-  var a10889;
-  var a10890;
-  var a10891;
-  var a10892;
-  var a10893;
-  var a10894;
-  var a10895;
-  var a10896;
-  var a10897;
-  var a10898;
-  var a10899;
-  var a10900;
-  var a10901;
-  var a10902;
-  var a10903;
-  var a10904;
-  var a10905;
-  var a10906;
-  var a10907;
-  var a10908;
-  var a10909;
-  var a10910;
-  var a10911;
-  var a10912;
-  var a10913;
-  var a10914;
-  var a10915;
-  var a10916;
-  var a10917;
-  var a10918;
-  var a10919;
-  var a10920;
-  var a10921;
-  var a10922;
-  var a10923;
-  var a10924;
-  var a10925;
-  var a10926;
-  var a10927;
-  var a10928;
-  var a10929;
-  var a10930;
-  var a10931;
-  var a10932;
-  var a10933;
-  var a10934;
-  var a10935;
-  var a10936;
-  var a10937;
-  var a10938;
-  var a10939;
-  var a10940;
-  var a10941;
-  var a10942;
-  var a10943;
-  var a10944;
-  var a10945;
-  var a10946;
-  var a10947;
-  var a10948;
-  var a10949;
-  var a10950;
-  var a10951;
-  var a10952;
-  var a10953;
-  var a10954;
-  var a10955;
-  var a10956;
-  var a10957;
-  var a10958;
-  var a10959;
-  var a10960;
-  var a10961;
-  var a10962;
-  var a10963;
-  var a10964;
-  var a10965;
-  var a10966;
-  var a10967;
-  var a10968;
-  var a10969;
-  var a10970;
-  var a10971;
-  var a10972;
-  var a10973;
-  var a10974;
-  var a10975;
-  var a10976;
-  var a10977;
-  var a10978;
-  var a10979;
-  var a10980;
-  var a10981;
-  var a10982;
-  var a10983;
-  var a10984;
-  var a10985;
-  var a10986;
-  var a10987;
-  var a10988;
-  var a10989;
-  var a10990;
-  var a10991;
-  var a10992;
-  var a10993;
-  var a10994;
-  var a10995;
-  var a10996;
-  var a10997;
-  var a10998;
-  var a10999;
-  var a11000;
-  var a11001;
-  var a11002;
-  var a11003;
-  var a11004;
-  var a11005;
-  var a11006;
-  var a11007;
-  var a11008;
-  var a11009;
-  var a11010;
-  var a11011;
-  var a11012;
-  var a11013;
-  var a11014;
-  var a11015;
-  var a11016;
-  var a11017;
-  var a11018;
-  var a11019;
-  var a11020;
-  var a11021;
-  var a11022;
-  var a11023;
-  var a11024;
-  var a11025;
-  var a11026;
-  var a11027;
-  var a11028;
-  var a11029;
-  var a11030;
-  var a11031;
-  var a11032;
-  var a11033;
-  var a11034;
-  var a11035;
-  var a11036;
-  var a11037;
-  var a11038;
-  var a11039;
-  var a11040;
-  var a11041;
-  var a11042;
-  var a11043;
-  var a11044;
-  var a11045;
-  var a11046;
-  var a11047;
-  var a11048;
-  var a11049;
-  var a11050;
-  var a11051;
-  var a11052;
-  var a11053;
-  var a11054;
-  var a11055;
-  var a11056;
-  var a11057;
-  var a11058;
-  var a11059;
-  var a11060;
-  var a11061;
-  var a11062;
-  var a11063;
-  var a11064;
-  var a11065;
-  var a11066;
-  var a11067;
-  var a11068;
-  var a11069;
-  var a11070;
-  var a11071;
-  var a11072;
-  var a11073;
-  var a11074;
-  var a11075;
-  var a11076;
-  var a11077;
-  var a11078;
-  var a11079;
-  var a11080;
-  var a11081;
-  var a11082;
-  var a11083;
-  var a11084;
-  var a11085;
-  var a11086;
-  var a11087;
-  var a11088;
-  var a11089;
-  var a11090;
-  var a11091;
-  var a11092;
-  var a11093;
-  var a11094;
-  var a11095;
-  var a11096;
-  var a11097;
-  var a11098;
-  var a11099;
-  var a11100;
-  var a11101;
-  var a11102;
-  var a11103;
-  var a11104;
-  var a11105;
-  var a11106;
-  var a11107;
-  var a11108;
-  var a11109;
-  var a11110;
-  var a11111;
-  var a11112;
-  var a11113;
-  var a11114;
-  var a11115;
-  var a11116;
-  var a11117;
-  var a11118;
-  var a11119;
-  var a11120;
-  var a11121;
-  var a11122;
-  var a11123;
-  var a11124;
-  var a11125;
-  var a11126;
-  var a11127;
-  var a11128;
-  var a11129;
-  var a11130;
-  var a11131;
-  var a11132;
-  var a11133;
-  var a11134;
-  var a11135;
-  var a11136;
-  var a11137;
-  var a11138;
-  var a11139;
-  var a11140;
-  var a11141;
-  var a11142;
-  var a11143;
-  var a11144;
-  var a11145;
-  var a11146;
-  var a11147;
-  var a11148;
-  var a11149;
-  var a11150;
-  var a11151;
-  var a11152;
-  var a11153;
-  var a11154;
-  var a11155;
-  var a11156;
-  var a11157;
-  var a11158;
-  var a11159;
-  var a11160;
-  var a11161;
-  var a11162;
-  var a11163;
-  var a11164;
-  var a11165;
-  var a11166;
-  var a11167;
-  var a11168;
-  var a11169;
-  var a11170;
-  var a11171;
-  var a11172;
-  var a11173;
-  var a11174;
-  var a11175;
-  var a11176;
-  var a11177;
-  var a11178;
-  var a11179;
-  var a11180;
-  var a11181;
-  var a11182;
-  var a11183;
-  var a11184;
-  var a11185;
-  var a11186;
-  var a11187;
-  var a11188;
-  var a11189;
-  var a11190;
-  var a11191;
-  var a11192;
-  var a11193;
-  var a11194;
-  var a11195;
-  var a11196;
-  var a11197;
-  var a11198;
-  var a11199;
-  var a11200;
-  var a11201;
-  var a11202;
-  var a11203;
-  var a11204;
-  var a11205;
-  var a11206;
-  var a11207;
-  var a11208;
-  var a11209;
-  var a11210;
-  var a11211;
-  var a11212;
-  var a11213;
-  var a11214;
-  var a11215;
-  var a11216;
-  var a11217;
-  var a11218;
-  var a11219;
-  var a11220;
-  var a11221;
-  var a11222;
-  var a11223;
-  var a11224;
-  var a11225;
-  var a11226;
-  var a11227;
-  var a11228;
-  var a11229;
-  var a11230;
-  var a11231;
-  var a11232;
-  var a11233;
-  var a11234;
-  var a11235;
-  var a11236;
-  var a11237;
-  var a11238;
-  var a11239;
-  var a11240;
-  var a11241;
-  var a11242;
-  var a11243;
-  var a11244;
-  var a11245;
-  var a11246;
-  var a11247;
-  var a11248;
-  var a11249;
-  var a11250;
-  var a11251;
-  var a11252;
-  var a11253;
-  var a11254;
-  var a11255;
-  var a11256;
-  var a11257;
-  var a11258;
-  var a11259;
-  var a11260;
-  var a11261;
-  var a11262;
-  var a11263;
-  var a11264;
-  var a11265;
-  var a11266;
-  var a11267;
-  var a11268;
-  var a11269;
-  var a11270;
-  var a11271;
-  var a11272;
-  var a11273;
-  var a11274;
-  var a11275;
-  var a11276;
-  var a11277;
-  var a11278;
-  var a11279;
-  var a11280;
-  var a11281;
-  var a11282;
-  var a11283;
-  var a11284;
-  var a11285;
-  var a11286;
-  var a11287;
-  var a11288;
-  var a11289;
-  var a11290;
-  var a11291;
-  var a11292;
-  var a11293;
-  var a11294;
-  var a11295;
-  var a11296;
-  var a11297;
-  var a11298;
-  var a11299;
-  var a11300;
-  var a11301;
-  var a11302;
-  var a11303;
-  var a11304;
-  var a11305;
-  var a11306;
-  var a11307;
-  var a11308;
-  var a11309;
-  var a11310;
-  var a11311;
-  var a11312;
-  var a11313;
-  var a11314;
-  var a11315;
-  var a11316;
-  var a11317;
-  var a11318;
-  var a11319;
-  var a11320;
-  var a11321;
-  var a11322;
-  var a11323;
-  var a11324;
-  var a11325;
-  var a11326;
-  var a11327;
-  var a11328;
-  var a11329;
-  var a11330;
-  var a11331;
-  var a11332;
-  var a11333;
-  var a11334;
-  var a11335;
-  var a11336;
-  var a11337;
-  var a11338;
-  var a11339;
-  var a11340;
-  var a11341;
-  var a11342;
-  var a11343;
-  var a11344;
-  var a11345;
-  var a11346;
-  var a11347;
-  var a11348;
-  var a11349;
-  var a11350;
-  var a11351;
-  var a11352;
-  var a11353;
-  var a11354;
-  var a11355;
-  var a11356;
-  var a11357;
-  var a11358;
-  var a11359;
-  var a11360;
-  var a11361;
-  var a11362;
-  var a11363;
-  var a11364;
-  var a11365;
-  var a11366;
-  var a11367;
-  var a11368;
-  var a11369;
-  var a11370;
-  var a11371;
-  var a11372;
-  var a11373;
-  var a11374;
-  var a11375;
-  var a11376;
-  var a11377;
-  var a11378;
-  var a11379;
-  var a11380;
-  var a11381;
-  var a11382;
-  var a11383;
-  var a11384;
-  var a11385;
-  var a11386;
-  var a11387;
-  var a11388;
-  var a11389;
-  var a11390;
-  var a11391;
-  var a11392;
-  var a11393;
-  var a11394;
-  var a11395;
-  var a11396;
-  var a11397;
-  var a11398;
-  var a11399;
-  var a11400;
-  var a11401;
-  var a11402;
-  var a11403;
-  var a11404;
-  var a11405;
-  var a11406;
-  var a11407;
-  var a11408;
-  var a11409;
-  var a11410;
-  var a11411;
-  var a11412;
-  var a11413;
-  var a11414;
-  var a11415;
-  var a11416;
-  var a11417;
-  var a11418;
-  var a11419;
-  var a11420;
-  var a11421;
-  var a11422;
-  var a11423;
-  var a11424;
-  var a11425;
-  var a11426;
-  var a11427;
-  var a11428;
-  var a11429;
-  var a11430;
-  var a11431;
-  var a11432;
-  var a11433;
-  var a11434;
-  var a11435;
-  var a11436;
-  var a11437;
-  var a11438;
-  var a11439;
-  var a11440;
-  var a11441;
-  var a11442;
-  var a11443;
-  var a11444;
-  var a11445;
-  var a11446;
-  var a11447;
-  var a11448;
-  var a11449;
-  var a11450;
-  var a11451;
-  var a11452;
-  var a11453;
-  var a11454;
-  var a11455;
-  var a11456;
-  var a11457;
-  var a11458;
-  var a11459;
-  var a11460;
-  var a11461;
-  var a11462;
-  var a11463;
-  var a11464;
-  var a11465;
-  var a11466;
-  var a11467;
-  var a11468;
-  var a11469;
-  var a11470;
-  var a11471;
-  var a11472;
-  var a11473;
-  var a11474;
-  var a11475;
-  var a11476;
-  var a11477;
-  var a11478;
-  var a11479;
-  var a11480;
-  var a11481;
-  var a11482;
-  var a11483;
-  var a11484;
-  var a11485;
-  var a11486;
-  var a11487;
-  var a11488;
-  var a11489;
-  var a11490;
-  var a11491;
-  var a11492;
-  var a11493;
-  var a11494;
-  var a11495;
-  var a11496;
-  var a11497;
-  var a11498;
-  var a11499;
-  var a11500;
-  var a11501;
-  var a11502;
-  var a11503;
-  var a11504;
-  var a11505;
-  var a11506;
-  var a11507;
-  var a11508;
-  var a11509;
-  var a11510;
-  var a11511;
-  var a11512;
-  var a11513;
-  var a11514;
-  var a11515;
-  var a11516;
-  var a11517;
-  var a11518;
-  var a11519;
-  var a11520;
-  var a11521;
-  var a11522;
-  var a11523;
-  var a11524;
-  var a11525;
-  var a11526;
-  var a11527;
-  var a11528;
-  var a11529;
-  var a11530;
-  var a11531;
-  var a11532;
-  var a11533;
-  var a11534;
-  var a11535;
-  var a11536;
-  var a11537;
-  var a11538;
-  var a11539;
-  var a11540;
-  var a11541;
-  var a11542;
-  var a11543;
-  var a11544;
-  var a11545;
-  var a11546;
-  var a11547;
-  var a11548;
-  var a11549;
-  var a11550;
-  var a11551;
-  var a11552;
-  var a11553;
-  var a11554;
-  var a11555;
-  var a11556;
-  var a11557;
-  var a11558;
-  var a11559;
-  var a11560;
-  var a11561;
-  var a11562;
-  var a11563;
-  var a11564;
-  var a11565;
-  var a11566;
-  var a11567;
-  var a11568;
-  var a11569;
-  var a11570;
-  var a11571;
-  var a11572;
-  var a11573;
-  var a11574;
-  var a11575;
-  var a11576;
-  var a11577;
-  var a11578;
-  var a11579;
-  var a11580;
-  var a11581;
-  var a11582;
-  var a11583;
-  var a11584;
-  var a11585;
-  var a11586;
-  var a11587;
-  var a11588;
-  var a11589;
-  var a11590;
-  var a11591;
-  var a11592;
-  var a11593;
-  var a11594;
-  var a11595;
-  var a11596;
-  var a11597;
-  var a11598;
-  var a11599;
-  var a11600;
-  var a11601;
-  var a11602;
-  var a11603;
-  var a11604;
-  var a11605;
-  var a11606;
-  var a11607;
-  var a11608;
-  var a11609;
-  var a11610;
-  var a11611;
-  var a11612;
-  var a11613;
-  var a11614;
-  var a11615;
-  var a11616;
-  var a11617;
-  var a11618;
-  var a11619;
-  var a11620;
-  var a11621;
-  var a11622;
-  var a11623;
-  var a11624;
-  var a11625;
-  var a11626;
-  var a11627;
-  var a11628;
-  var a11629;
-  var a11630;
-  var a11631;
-  var a11632;
-  var a11633;
-  var a11634;
-  var a11635;
-  var a11636;
-  var a11637;
-  var a11638;
-  var a11639;
-  var a11640;
-  var a11641;
-  var a11642;
-  var a11643;
-  var a11644;
-  var a11645;
-  var a11646;
-  var a11647;
-  var a11648;
-  var a11649;
-  var a11650;
-  var a11651;
-  var a11652;
-  var a11653;
-  var a11654;
-  var a11655;
-  var a11656;
-  var a11657;
-  var a11658;
-  var a11659;
-  var a11660;
-  var a11661;
-  var a11662;
-  var a11663;
-  var a11664;
-  var a11665;
-  var a11666;
-  var a11667;
-  var a11668;
-  var a11669;
-  var a11670;
-  var a11671;
-  var a11672;
-  var a11673;
-  var a11674;
-  var a11675;
-  var a11676;
-  var a11677;
-  var a11678;
-  var a11679;
-  var a11680;
-  var a11681;
-  var a11682;
-  var a11683;
-  var a11684;
-  var a11685;
-  var a11686;
-  var a11687;
-  var a11688;
-  var a11689;
-  var a11690;
-  var a11691;
-  var a11692;
-  var a11693;
-  var a11694;
-  var a11695;
-  var a11696;
-  var a11697;
-  var a11698;
-  var a11699;
-  var a11700;
-  var a11701;
-  var a11702;
-  var a11703;
-  var a11704;
-  var a11705;
-  var a11706;
-  var a11707;
-  var a11708;
-  var a11709;
-  var a11710;
-  var a11711;
-  var a11712;
-  var a11713;
-  var a11714;
-  var a11715;
-  var a11716;
-  var a11717;
-  var a11718;
-  var a11719;
-  var a11720;
-  var a11721;
-  var a11722;
-  var a11723;
-  var a11724;
-  var a11725;
-  var a11726;
-  var a11727;
-  var a11728;
-  var a11729;
-  var a11730;
-  var a11731;
-  var a11732;
-  var a11733;
-  var a11734;
-  var a11735;
-  var a11736;
-  var a11737;
-  var a11738;
-  var a11739;
-  var a11740;
-  var a11741;
-  var a11742;
-  var a11743;
-  var a11744;
-  var a11745;
-  var a11746;
-  var a11747;
-  var a11748;
-  var a11749;
-  var a11750;
-  var a11751;
-  var a11752;
-  var a11753;
-  var a11754;
-  var a11755;
-  var a11756;
-  var a11757;
-  var a11758;
-  var a11759;
-  var a11760;
-  var a11761;
-  var a11762;
-  var a11763;
-  var a11764;
-  var a11765;
-  var a11766;
-  var a11767;
-  var a11768;
-  var a11769;
-  var a11770;
-  var a11771;
-  var a11772;
-  var a11773;
-  var a11774;
-  var a11775;
-  var a11776;
-  var a11777;
-  var a11778;
-  var a11779;
-  var a11780;
-  var a11781;
-  var a11782;
-  var a11783;
-  var a11784;
-  var a11785;
-  var a11786;
-  var a11787;
-  var a11788;
-  var a11789;
-  var a11790;
-  var a11791;
-  var a11792;
-  var a11793;
-  var a11794;
-  var a11795;
-  var a11796;
-  var a11797;
-  var a11798;
-  var a11799;
-  var a11800;
-  var a11801;
-  var a11802;
-  var a11803;
-  var a11804;
-  var a11805;
-  var a11806;
-  var a11807;
-  var a11808;
-  var a11809;
-  var a11810;
-  var a11811;
-  var a11812;
-  var a11813;
-  var a11814;
-  var a11815;
-  var a11816;
-  var a11817;
-  var a11818;
-  var a11819;
-  var a11820;
-  var a11821;
-  var a11822;
-  var a11823;
-  var a11824;
-  var a11825;
-  var a11826;
-  var a11827;
-  var a11828;
-  var a11829;
-  var a11830;
-  var a11831;
-  var a11832;
-  var a11833;
-  var a11834;
-  var a11835;
-  var a11836;
-  var a11837;
-  var a11838;
-  var a11839;
-  var a11840;
-  var a11841;
-  var a11842;
-  var a11843;
-  var a11844;
-  var a11845;
-  var a11846;
-  var a11847;
-  var a11848;
-  var a11849;
-  var a11850;
-  var a11851;
-  var a11852;
-  var a11853;
-  var a11854;
-  var a11855;
-  var a11856;
-  var a11857;
-  var a11858;
-  var a11859;
-  var a11860;
-  var a11861;
-  var a11862;
-  var a11863;
-  var a11864;
-  var a11865;
-  var a11866;
-  var a11867;
-  var a11868;
-  var a11869;
-  var a11870;
-  var a11871;
-  var a11872;
-  var a11873;
-  var a11874;
-  var a11875;
-  var a11876;
-  var a11877;
-  var a11878;
-  var a11879;
-  var a11880;
-  var a11881;
-  var a11882;
-  var a11883;
-  var a11884;
-  var a11885;
-  var a11886;
-  var a11887;
-  var a11888;
-  var a11889;
-  var a11890;
-  var a11891;
-  var a11892;
-  var a11893;
-  var a11894;
-  var a11895;
-  var a11896;
-  var a11897;
-  var a11898;
-  var a11899;
-  var a11900;
-  var a11901;
-  var a11902;
-  var a11903;
-  var a11904;
-  var a11905;
-  var a11906;
-  var a11907;
-  var a11908;
-  var a11909;
-  var a11910;
-  var a11911;
-  var a11912;
-  var a11913;
-  var a11914;
-  var a11915;
-  var a11916;
-  var a11917;
-  var a11918;
-  var a11919;
-  var a11920;
-  var a11921;
-  var a11922;
-  var a11923;
-  var a11924;
-  var a11925;
-  var a11926;
-  var a11927;
-  var a11928;
-  var a11929;
-  var a11930;
-  var a11931;
-  var a11932;
-  var a11933;
-  var a11934;
-  var a11935;
-  var a11936;
-  var a11937;
-  var a11938;
-  var a11939;
-  var a11940;
-  var a11941;
-  var a11942;
-  var a11943;
-  var a11944;
-  var a11945;
-  var a11946;
-  var a11947;
-  var a11948;
-  var a11949;
-  var a11950;
-  var a11951;
-  var a11952;
-  var a11953;
-  var a11954;
-  var a11955;
-  var a11956;
-  var a11957;
-  var a11958;
-  var a11959;
-  var a11960;
-  var a11961;
-  var a11962;
-  var a11963;
-  var a11964;
-  var a11965;
-  var a11966;
-  var a11967;
-  var a11968;
-  var a11969;
-  var a11970;
-  var a11971;
-  var a11972;
-  var a11973;
-  var a11974;
-  var a11975;
-  var a11976;
-  var a11977;
-  var a11978;
-  var a11979;
-  var a11980;
-  var a11981;
-  var a11982;
-  var a11983;
-  var a11984;
-  var a11985;
-  var a11986;
-  var a11987;
-  var a11988;
-  var a11989;
-  var a11990;
-  var a11991;
-  var a11992;
-  var a11993;
-  var a11994;
-  var a11995;
-  var a11996;
-  var a11997;
-  var a11998;
-  var a11999;
-  var a12000;
-  var a12001;
-  var a12002;
-  var a12003;
-  var a12004;
-  var a12005;
-  var a12006;
-  var a12007;
-  var a12008;
-  var a12009;
-  var a12010;
-  var a12011;
-  var a12012;
-  var a12013;
-  var a12014;
-  var a12015;
-  var a12016;
-  var a12017;
-  var a12018;
-  var a12019;
-  var a12020;
-  var a12021;
-  var a12022;
-  var a12023;
-  var a12024;
-  var a12025;
-  var a12026;
-  var a12027;
-  var a12028;
-  var a12029;
-  var a12030;
-  var a12031;
-  var a12032;
-  var a12033;
-  var a12034;
-  var a12035;
-  var a12036;
-  var a12037;
-  var a12038;
-  var a12039;
-  var a12040;
-  var a12041;
-  var a12042;
-  var a12043;
-  var a12044;
-  var a12045;
-  var a12046;
-  var a12047;
-  var a12048;
-  var a12049;
-  var a12050;
-  var a12051;
-  var a12052;
-  var a12053;
-  var a12054;
-  var a12055;
-  var a12056;
-  var a12057;
-  var a12058;
-  var a12059;
-  var a12060;
-  var a12061;
-  var a12062;
-  var a12063;
-  var a12064;
-  var a12065;
-  var a12066;
-  var a12067;
-  var a12068;
-  var a12069;
-  var a12070;
-  var a12071;
-  var a12072;
-  var a12073;
-  var a12074;
-  var a12075;
-  var a12076;
-  var a12077;
-  var a12078;
-  var a12079;
-  var a12080;
-  var a12081;
-  var a12082;
-  var a12083;
-  var a12084;
-  var a12085;
-  var a12086;
-  var a12087;
-  var a12088;
-  var a12089;
-  var a12090;
-  var a12091;
-  var a12092;
-  var a12093;
-  var a12094;
-  var a12095;
-  var a12096;
-  var a12097;
-  var a12098;
-  var a12099;
-  var a12100;
-  var a12101;
-  var a12102;
-  var a12103;
-  var a12104;
-  var a12105;
-  var a12106;
-  var a12107;
-  var a12108;
-  var a12109;
-  var a12110;
-  var a12111;
-  var a12112;
-  var a12113;
-  var a12114;
-  var a12115;
-  var a12116;
-  var a12117;
-  var a12118;
-  var a12119;
-  var a12120;
-  var a12121;
-  var a12122;
-  var a12123;
-  var a12124;
-  var a12125;
-  var a12126;
-  var a12127;
-  var a12128;
-  var a12129;
-  var a12130;
-  var a12131;
-  var a12132;
-  var a12133;
-  var a12134;
-  var a12135;
-  var a12136;
-  var a12137;
-  var a12138;
-  var a12139;
-  var a12140;
-  var a12141;
-  var a12142;
-  var a12143;
-  var a12144;
-  var a12145;
-  var a12146;
-  var a12147;
-  var a12148;
-  var a12149;
-  var a12150;
-  var a12151;
-  var a12152;
-  var a12153;
-  var a12154;
-  var a12155;
-  var a12156;
-  var a12157;
-  var a12158;
-  var a12159;
-  var a12160;
-  var a12161;
-  var a12162;
-  var a12163;
-  var a12164;
-  var a12165;
-  var a12166;
-  var a12167;
-  var a12168;
-  var a12169;
-  var a12170;
-  var a12171;
-  var a12172;
-  var a12173;
-  var a12174;
-  var a12175;
-  var a12176;
-  var a12177;
-  var a12178;
-  var a12179;
-  var a12180;
-  var a12181;
-  var a12182;
-  var a12183;
-  var a12184;
-  var a12185;
-  var a12186;
-  var a12187;
-  var a12188;
-  var a12189;
-  var a12190;
-  var a12191;
-  var a12192;
-  var a12193;
-  var a12194;
-  var a12195;
-  var a12196;
-  var a12197;
-  var a12198;
-  var a12199;
-  var a12200;
-  var a12201;
-  var a12202;
-  var a12203;
-  var a12204;
-  var a12205;
-  var a12206;
-  var a12207;
-  var a12208;
-  var a12209;
-  var a12210;
-  var a12211;
-  var a12212;
-  var a12213;
-  var a12214;
-  var a12215;
-  var a12216;
-  var a12217;
-  var a12218;
-  var a12219;
-  var a12220;
-  var a12221;
-  var a12222;
-  var a12223;
-  var a12224;
-  var a12225;
-  var a12226;
-  var a12227;
-  var a12228;
-  var a12229;
-  var a12230;
-  var a12231;
-  var a12232;
-  var a12233;
-  var a12234;
-  var a12235;
-  var a12236;
-  var a12237;
-  var a12238;
-  var a12239;
-  var a12240;
-  var a12241;
-  var a12242;
-  var a12243;
-  var a12244;
-  var a12245;
-  var a12246;
-  var a12247;
-  var a12248;
-  var a12249;
-  var a12250;
-  var a12251;
-  var a12252;
-  var a12253;
-  var a12254;
-  var a12255;
-  var a12256;
-  var a12257;
-  var a12258;
-  var a12259;
-  var a12260;
-  var a12261;
-  var a12262;
-  var a12263;
-  var a12264;
-  var a12265;
-  var a12266;
-  var a12267;
-  var a12268;
-  var a12269;
-  var a12270;
-  var a12271;
-  var a12272;
-  var a12273;
-  var a12274;
-  var a12275;
-  var a12276;
-  var a12277;
-  var a12278;
-  var a12279;
-  var a12280;
-  var a12281;
-  var a12282;
-  var a12283;
-  var a12284;
-  var a12285;
-  var a12286;
-  var a12287;
-  var a12288;
-  var a12289;
-  var a12290;
-  var a12291;
-  var a12292;
-  var a12293;
-  var a12294;
-  var a12295;
-  var a12296;
-  var a12297;
-  var a12298;
-  var a12299;
-  var a12300;
-  var a12301;
-  var a12302;
-  var a12303;
-  var a12304;
-  var a12305;
-  var a12306;
-  var a12307;
-  var a12308;
-  var a12309;
-  var a12310;
-  var a12311;
-  var a12312;
-  var a12313;
-  var a12314;
-  var a12315;
-  var a12316;
-  var a12317;
-  var a12318;
-  var a12319;
-  var a12320;
-  var a12321;
-  var a12322;
-  var a12323;
-  var a12324;
-  var a12325;
-  var a12326;
-  var a12327;
-  var a12328;
-  var a12329;
-  var a12330;
-  var a12331;
-  var a12332;
-  var a12333;
-  var a12334;
-  var a12335;
-  var a12336;
-  var a12337;
-  var a12338;
-  var a12339;
-  var a12340;
-  var a12341;
-  var a12342;
-  var a12343;
-  var a12344;
-  var a12345;
-  var a12346;
-  var a12347;
-  var a12348;
-  var a12349;
-  var a12350;
-  var a12351;
-  var a12352;
-  var a12353;
-  var a12354;
-  var a12355;
-  var a12356;
-  var a12357;
-  var a12358;
-  var a12359;
-  var a12360;
-  var a12361;
-  var a12362;
-  var a12363;
-  var a12364;
-  var a12365;
-  var a12366;
-  var a12367;
-  var a12368;
-  var a12369;
-  var a12370;
-  var a12371;
-  var a12372;
-  var a12373;
-  var a12374;
-  var a12375;
-  var a12376;
-  var a12377;
-  var a12378;
-  var a12379;
-  var a12380;
-  var a12381;
-  var a12382;
-  var a12383;
-  var a12384;
-  var a12385;
-  var a12386;
-  var a12387;
-  var a12388;
-  var a12389;
-  var a12390;
-  var a12391;
-  var a12392;
-  var a12393;
-  var a12394;
-  var a12395;
-  var a12396;
-  var a12397;
-  var a12398;
-  var a12399;
-  var a12400;
-  var a12401;
-  var a12402;
-  var a12403;
-  var a12404;
-  var a12405;
-  var a12406;
-  var a12407;
-  var a12408;
-  var a12409;
-  var a12410;
-  var a12411;
-  var a12412;
-  var a12413;
-  var a12414;
-  var a12415;
-  var a12416;
-  var a12417;
-  var a12418;
-  var a12419;
-  var a12420;
-  var a12421;
-  var a12422;
-  var a12423;
-  var a12424;
-  var a12425;
-  var a12426;
-  var a12427;
-  var a12428;
-  var a12429;
-  var a12430;
-  var a12431;
-  var a12432;
-  var a12433;
-  var a12434;
-  var a12435;
-  var a12436;
-  var a12437;
-  var a12438;
-  var a12439;
-  var a12440;
-  var a12441;
-  var a12442;
-  var a12443;
-  var a12444;
-  var a12445;
-  var a12446;
-  var a12447;
-  var a12448;
-  var a12449;
-  var a12450;
-  var a12451;
-  var a12452;
-  var a12453;
-  var a12454;
-  var a12455;
-  var a12456;
-  var a12457;
-  var a12458;
-  var a12459;
-  var a12460;
-  var a12461;
-  var a12462;
-  var a12463;
-  var a12464;
-  var a12465;
-  var a12466;
-  var a12467;
-  var a12468;
-  var a12469;
-  var a12470;
-  var a12471;
-  var a12472;
-  var a12473;
-  var a12474;
-  var a12475;
-  var a12476;
-  var a12477;
-  var a12478;
-  var a12479;
-  var a12480;
-  var a12481;
-  var a12482;
-  var a12483;
-  var a12484;
-  var a12485;
-  var a12486;
-  var a12487;
-  var a12488;
-  var a12489;
-  var a12490;
-  var a12491;
-  var a12492;
-  var a12493;
-  var a12494;
-  var a12495;
-  var a12496;
-  var a12497;
-  var a12498;
-  var a12499;
-  var a12500;
-  var a12501;
-  var a12502;
-  var a12503;
-  var a12504;
-  var a12505;
-  var a12506;
-  var a12507;
-  var a12508;
-  var a12509;
-  var a12510;
-  var a12511;
-  var a12512;
-  var a12513;
-  var a12514;
-  var a12515;
-  var a12516;
-  var a12517;
-  var a12518;
-  var a12519;
-  var a12520;
-  var a12521;
-  var a12522;
-  var a12523;
-  var a12524;
-  var a12525;
-  var a12526;
-  var a12527;
-  var a12528;
-  var a12529;
-  var a12530;
-  var a12531;
-  var a12532;
-  var a12533;
-  var a12534;
-  var a12535;
-  var a12536;
-  var a12537;
-  var a12538;
-  var a12539;
-  var a12540;
-  var a12541;
-  var a12542;
-  var a12543;
-  var a12544;
-  var a12545;
-  var a12546;
-  var a12547;
-  var a12548;
-  var a12549;
-  var a12550;
-  var a12551;
-  var a12552;
-  var a12553;
-  var a12554;
-  var a12555;
-  var a12556;
-  var a12557;
-  var a12558;
-  var a12559;
-  var a12560;
-  var a12561;
-  var a12562;
-  var a12563;
-  var a12564;
-  var a12565;
-  var a12566;
-  var a12567;
-  var a12568;
-  var a12569;
-  var a12570;
-  var a12571;
-  var a12572;
-  var a12573;
-  var a12574;
-  var a12575;
-  var a12576;
-  var a12577;
-  var a12578;
-  var a12579;
-  var a12580;
-  var a12581;
-  var a12582;
-  var a12583;
-  var a12584;
-  var a12585;
-  var a12586;
-  var a12587;
-  var a12588;
-  var a12589;
-  var a12590;
-  var a12591;
-  var a12592;
-  var a12593;
-  var a12594;
-  var a12595;
-  var a12596;
-  var a12597;
-  var a12598;
-  var a12599;
-  var a12600;
-  var a12601;
-  var a12602;
-  var a12603;
-  var a12604;
-  var a12605;
-  var a12606;
-  var a12607;
-  var a12608;
-  var a12609;
-  var a12610;
-  var a12611;
-  var a12612;
-  var a12613;
-  var a12614;
-  var a12615;
-  var a12616;
-  var a12617;
-  var a12618;
-  var a12619;
-  var a12620;
-  var a12621;
-  var a12622;
-  var a12623;
-  var a12624;
-  var a12625;
-  var a12626;
-  var a12627;
-  var a12628;
-  var a12629;
-  var a12630;
-  var a12631;
-  var a12632;
-  var a12633;
-  var a12634;
-  var a12635;
-  var a12636;
-  var a12637;
-  var a12638;
-  var a12639;
-  var a12640;
-  var a12641;
-  var a12642;
-  var a12643;
-  var a12644;
-  var a12645;
-  var a12646;
-  var a12647;
-  var a12648;
-  var a12649;
-  var a12650;
-  var a12651;
-  var a12652;
-  var a12653;
-  var a12654;
-  var a12655;
-  var a12656;
-  var a12657;
-  var a12658;
-  var a12659;
-  var a12660;
-  var a12661;
-  var a12662;
-  var a12663;
-  var a12664;
-  var a12665;
-  var a12666;
-  var a12667;
-  var a12668;
-  var a12669;
-  var a12670;
-  var a12671;
-  var a12672;
-  var a12673;
-  var a12674;
-  var a12675;
-  var a12676;
-  var a12677;
-  var a12678;
-  var a12679;
-  var a12680;
-  var a12681;
-  var a12682;
-  var a12683;
-  var a12684;
-  var a12685;
-  var a12686;
-  var a12687;
-  var a12688;
-  var a12689;
-  var a12690;
-  var a12691;
-  var a12692;
-  var a12693;
-  var a12694;
-  var a12695;
-  var a12696;
-  var a12697;
-  var a12698;
-  var a12699;
-  var a12700;
-  var a12701;
-  var a12702;
-  var a12703;
-  var a12704;
-  var a12705;
-  var a12706;
-  var a12707;
-  var a12708;
-  var a12709;
-  var a12710;
-  var a12711;
-  var a12712;
-  var a12713;
-  var a12714;
-  var a12715;
-  var a12716;
-  var a12717;
-  var a12718;
-  var a12719;
-  var a12720;
-  var a12721;
-  var a12722;
-  var a12723;
-  var a12724;
-  var a12725;
-  var a12726;
-  var a12727;
-  var a12728;
-  var a12729;
-  var a12730;
-  var a12731;
-  var a12732;
-  var a12733;
-  var a12734;
-  var a12735;
-  var a12736;
-  var a12737;
-  var a12738;
-  var a12739;
-  var a12740;
-  var a12741;
-  var a12742;
-  var a12743;
-  var a12744;
-  var a12745;
-  var a12746;
-  var a12747;
-  var a12748;
-  var a12749;
-  var a12750;
-  var a12751;
-  var a12752;
-  var a12753;
-  var a12754;
-  var a12755;
-  var a12756;
-  var a12757;
-  var a12758;
-  var a12759;
-  var a12760;
-  var a12761;
-  var a12762;
-  var a12763;
-  var a12764;
-  var a12765;
-  var a12766;
-  var a12767;
-  var a12768;
-  var a12769;
-  var a12770;
-  var a12771;
-  var a12772;
-  var a12773;
-  var a12774;
-  var a12775;
-  var a12776;
-  var a12777;
-  var a12778;
-  var a12779;
-  var a12780;
-  var a12781;
-  var a12782;
-  var a12783;
-  var a12784;
-  var a12785;
-  var a12786;
-  var a12787;
-  var a12788;
-  var a12789;
-  var a12790;
-  var a12791;
-  var a12792;
-  var a12793;
-  var a12794;
-  var a12795;
-  var a12796;
-  var a12797;
-  var a12798;
-  var a12799;
-  var a12800;
-  var a12801;
-  var a12802;
-  var a12803;
-  var a12804;
-  var a12805;
-  var a12806;
-  var a12807;
-  var a12808;
-  var a12809;
-  var a12810;
-  var a12811;
-  var a12812;
-  var a12813;
-  var a12814;
-  var a12815;
-  var a12816;
-  var a12817;
-  var a12818;
-  var a12819;
-  var a12820;
-  var a12821;
-  var a12822;
-  var a12823;
-  var a12824;
-  var a12825;
-  var a12826;
-  var a12827;
-  var a12828;
-  var a12829;
-  var a12830;
-  var a12831;
-  var a12832;
-  var a12833;
-  var a12834;
-  var a12835;
-  var a12836;
-  var a12837;
-  var a12838;
-  var a12839;
-  var a12840;
-  var a12841;
-  var a12842;
-  var a12843;
-  var a12844;
-  var a12845;
-  var a12846;
-  var a12847;
-  var a12848;
-  var a12849;
-  var a12850;
-  var a12851;
-  var a12852;
-  var a12853;
-  var a12854;
-  var a12855;
-  var a12856;
-  var a12857;
-  var a12858;
-  var a12859;
-  var a12860;
-  var a12861;
-  var a12862;
-  var a12863;
-  var a12864;
-  var a12865;
-  var a12866;
-  var a12867;
-  var a12868;
-  var a12869;
-  var a12870;
-  var a12871;
-  var a12872;
-  var a12873;
-  var a12874;
-  var a12875;
-  var a12876;
-  var a12877;
-  var a12878;
-  var a12879;
-  var a12880;
-  var a12881;
-  var a12882;
-  var a12883;
-  var a12884;
-  var a12885;
-  var a12886;
-  var a12887;
-  var a12888;
-  var a12889;
-  var a12890;
-  var a12891;
-  var a12892;
-  var a12893;
-  var a12894;
-  var a12895;
-  var a12896;
-  var a12897;
-  var a12898;
-  var a12899;
-  var a12900;
-  var a12901;
-  var a12902;
-  var a12903;
-  var a12904;
-  var a12905;
-  var a12906;
-  var a12907;
-  var a12908;
-  var a12909;
-  var a12910;
-  var a12911;
-  var a12912;
-  var a12913;
-  var a12914;
-  var a12915;
-  var a12916;
-  var a12917;
-  var a12918;
-  var a12919;
-  var a12920;
-  var a12921;
-  var a12922;
-  var a12923;
-  var a12924;
-  var a12925;
-  var a12926;
-  var a12927;
-  var a12928;
-  var a12929;
-  var a12930;
-  var a12931;
-  var a12932;
-  var a12933;
-  var a12934;
-  var a12935;
-  var a12936;
-  var a12937;
-  var a12938;
-  var a12939;
-  var a12940;
-  var a12941;
-  var a12942;
-  var a12943;
-  var a12944;
-  var a12945;
-  var a12946;
-  var a12947;
-  var a12948;
-  var a12949;
-  var a12950;
-  var a12951;
-  var a12952;
-  var a12953;
-  var a12954;
-  var a12955;
-  var a12956;
-  var a12957;
-  var a12958;
-  var a12959;
-  var a12960;
-  var a12961;
-  var a12962;
-  var a12963;
-  var a12964;
-  var a12965;
-  var a12966;
-  var a12967;
-  var a12968;
-  var a12969;
-  var a12970;
-  var a12971;
-  var a12972;
-  var a12973;
-  var a12974;
-  var a12975;
-  var a12976;
-  var a12977;
-  var a12978;
-  var a12979;
-  var a12980;
-  var a12981;
-  var a12982;
-  var a12983;
-  var a12984;
-  var a12985;
-  var a12986;
-  var a12987;
-  var a12988;
-  var a12989;
-  var a12990;
-  var a12991;
-  var a12992;
-  var a12993;
-  var a12994;
-  var a12995;
-  var a12996;
-  var a12997;
-  var a12998;
-  var a12999;
-  var a13000;
-  var a13001;
-  var a13002;
-  var a13003;
-  var a13004;
-  var a13005;
-  var a13006;
-  var a13007;
-  var a13008;
-  var a13009;
-  var a13010;
-  var a13011;
-  var a13012;
-  var a13013;
-  var a13014;
-  var a13015;
-  var a13016;
-  var a13017;
-  var a13018;
-  var a13019;
-  var a13020;
-  var a13021;
-  var a13022;
-  var a13023;
-  var a13024;
-  var a13025;
-  var a13026;
-  var a13027;
-  var a13028;
-  var a13029;
-  var a13030;
-  var a13031;
-  var a13032;
-  var a13033;
-  var a13034;
-  var a13035;
-  var a13036;
-  var a13037;
-  var a13038;
-  var a13039;
-  var a13040;
-  var a13041;
-  var a13042;
-  var a13043;
-  var a13044;
-  var a13045;
-  var a13046;
-  var a13047;
-  var a13048;
-  var a13049;
-  var a13050;
-  var a13051;
-  var a13052;
-  var a13053;
-  var a13054;
-  var a13055;
-  var a13056;
-  var a13057;
-  var a13058;
-  var a13059;
-  var a13060;
-  var a13061;
-  var a13062;
-  var a13063;
-  var a13064;
-  var a13065;
-  var a13066;
-  var a13067;
-  var a13068;
-  var a13069;
-  var a13070;
-  var a13071;
-  var a13072;
-  var a13073;
-  var a13074;
-  var a13075;
-  var a13076;
-  var a13077;
-  var a13078;
-  var a13079;
-  var a13080;
-  var a13081;
-  var a13082;
-  var a13083;
-  var a13084;
-  var a13085;
-  var a13086;
-  var a13087;
-  var a13088;
-  var a13089;
-  var a13090;
-  var a13091;
-  var a13092;
-  var a13093;
-  var a13094;
-  var a13095;
-  var a13096;
-  var a13097;
-  var a13098;
-  var a13099;
-  var a13100;
-  var a13101;
-  var a13102;
-  var a13103;
-  var a13104;
-  var a13105;
-  var a13106;
-  var a13107;
-  var a13108;
-  var a13109;
-  var a13110;
-  var a13111;
-  var a13112;
-  var a13113;
-  var a13114;
-  var a13115;
-  var a13116;
-  var a13117;
-  var a13118;
-  var a13119;
-  var a13120;
-  var a13121;
-  var a13122;
-  var a13123;
-  var a13124;
-  var a13125;
-  var a13126;
-  var a13127;
-  var a13128;
-  var a13129;
-  var a13130;
-  var a13131;
-  var a13132;
-  var a13133;
-  var a13134;
-  var a13135;
-  var a13136;
-  var a13137;
-  var a13138;
-  var a13139;
-  var a13140;
-  var a13141;
-  var a13142;
-  var a13143;
-  var a13144;
-  var a13145;
-  var a13146;
-  var a13147;
-  var a13148;
-  var a13149;
-  var a13150;
-  var a13151;
-  var a13152;
-  var a13153;
-  var a13154;
-  var a13155;
-  var a13156;
-  var a13157;
-  var a13158;
-  var a13159;
-  var a13160;
-  var a13161;
-  var a13162;
-  var a13163;
-  var a13164;
-  var a13165;
-  var a13166;
-  var a13167;
-  var a13168;
-  var a13169;
-  var a13170;
-  var a13171;
-  var a13172;
-  var a13173;
-  var a13174;
-  var a13175;
-  var a13176;
-  var a13177;
-  var a13178;
-  var a13179;
-  var a13180;
-  var a13181;
-  var a13182;
-  var a13183;
-  var a13184;
-  var a13185;
-  var a13186;
-  var a13187;
-  var a13188;
-  var a13189;
-  var a13190;
-  var a13191;
-  var a13192;
-  var a13193;
-  var a13194;
-  var a13195;
-  var a13196;
-  var a13197;
-  var a13198;
-  var a13199;
-  var a13200;
-  var a13201;
-  var a13202;
-  var a13203;
-  var a13204;
-  var a13205;
-  var a13206;
-  var a13207;
-  var a13208;
-  var a13209;
-  var a13210;
-  var a13211;
-  var a13212;
-  var a13213;
-  var a13214;
-  var a13215;
-  var a13216;
-  var a13217;
-  var a13218;
-  var a13219;
-  var a13220;
-  var a13221;
-  var a13222;
-  var a13223;
-  var a13224;
-  var a13225;
-  var a13226;
-  var a13227;
-  var a13228;
-  var a13229;
-  var a13230;
-  var a13231;
-  var a13232;
-  var a13233;
-  var a13234;
-  var a13235;
-  var a13236;
-  var a13237;
-  var a13238;
-  var a13239;
-  var a13240;
-  var a13241;
-  var a13242;
-  var a13243;
-  var a13244;
-  var a13245;
-  var a13246;
-  var a13247;
-  var a13248;
-  var a13249;
-  var a13250;
-  var a13251;
-  var a13252;
-  var a13253;
-  var a13254;
-  var a13255;
-  var a13256;
-  var a13257;
-  var a13258;
-  var a13259;
-  var a13260;
-  var a13261;
-  var a13262;
-  var a13263;
-  var a13264;
-  var a13265;
-  var a13266;
-  var a13267;
-  var a13268;
-  var a13269;
-  var a13270;
-  var a13271;
-  var a13272;
-  var a13273;
-  var a13274;
-  var a13275;
-  var a13276;
-  var a13277;
-  var a13278;
-  var a13279;
-  var a13280;
-  var a13281;
-  var a13282;
-  var a13283;
-  var a13284;
-  var a13285;
-  var a13286;
-  var a13287;
-  var a13288;
-  var a13289;
-  var a13290;
-  var a13291;
-  var a13292;
-  var a13293;
-  var a13294;
-  var a13295;
-  var a13296;
-  var a13297;
-  var a13298;
-  var a13299;
-  var a13300;
-  var a13301;
-  var a13302;
-  var a13303;
-  var a13304;
-  var a13305;
-  var a13306;
-  var a13307;
-  var a13308;
-  var a13309;
-  var a13310;
-  var a13311;
-  var a13312;
-  var a13313;
-  var a13314;
-  var a13315;
-  var a13316;
-  var a13317;
-  var a13318;
-  var a13319;
-  var a13320;
-  var a13321;
-  var a13322;
-  var a13323;
-  var a13324;
-  var a13325;
-  var a13326;
-  var a13327;
-  var a13328;
-  var a13329;
-  var a13330;
-  var a13331;
-  var a13332;
-  var a13333;
-  var a13334;
-  var a13335;
-  var a13336;
-  var a13337;
-  var a13338;
-  var a13339;
-  var a13340;
-  var a13341;
-  var a13342;
-  var a13343;
-  var a13344;
-  var a13345;
-  var a13346;
-  var a13347;
-  var a13348;
-  var a13349;
-  var a13350;
-  var a13351;
-  var a13352;
-  var a13353;
-  var a13354;
-  var a13355;
-  var a13356;
-  var a13357;
-  var a13358;
-  var a13359;
-  var a13360;
-  var a13361;
-  var a13362;
-  var a13363;
-  var a13364;
-  var a13365;
-  var a13366;
-  var a13367;
-  var a13368;
-  var a13369;
-  var a13370;
-  var a13371;
-  var a13372;
-  var a13373;
-  var a13374;
-  var a13375;
-  var a13376;
-  var a13377;
-  var a13378;
-  var a13379;
-  var a13380;
-  var a13381;
-  var a13382;
-  var a13383;
-  var a13384;
-  var a13385;
-  var a13386;
-  var a13387;
-  var a13388;
-  var a13389;
-  var a13390;
-  var a13391;
-  var a13392;
-  var a13393;
-  var a13394;
-  var a13395;
-  var a13396;
-  var a13397;
-  var a13398;
-  var a13399;
-  var a13400;
-  var a13401;
-  var a13402;
-  var a13403;
-  var a13404;
-  var a13405;
-  var a13406;
-  var a13407;
-  var a13408;
-  var a13409;
-  var a13410;
-  var a13411;
-  var a13412;
-  var a13413;
-  var a13414;
-  var a13415;
-  var a13416;
-  var a13417;
-  var a13418;
-  var a13419;
-  var a13420;
-  var a13421;
-  var a13422;
-  var a13423;
-  var a13424;
-  var a13425;
-  var a13426;
-  var a13427;
-  var a13428;
-  var a13429;
-  var a13430;
-  var a13431;
-  var a13432;
-  var a13433;
-  var a13434;
-  var a13435;
-  var a13436;
-  var a13437;
-  var a13438;
-  var a13439;
-  var a13440;
-  var a13441;
-  var a13442;
-  var a13443;
-  var a13444;
-  var a13445;
-  var a13446;
-  var a13447;
-  var a13448;
-  var a13449;
-  var a13450;
-  var a13451;
-  var a13452;
-  var a13453;
-  var a13454;
-  var a13455;
-  var a13456;
-  var a13457;
-  var a13458;
-  var a13459;
-  var a13460;
-  var a13461;
-  var a13462;
-  var a13463;
-  var a13464;
-  var a13465;
-  var a13466;
-  var a13467;
-  var a13468;
-  var a13469;
-  var a13470;
-  var a13471;
-  var a13472;
-  var a13473;
-  var a13474;
-  var a13475;
-  var a13476;
-  var a13477;
-  var a13478;
-  var a13479;
-  var a13480;
-  var a13481;
-  var a13482;
-  var a13483;
-  var a13484;
-  var a13485;
-  var a13486;
-  var a13487;
-  var a13488;
-  var a13489;
-  var a13490;
-  var a13491;
-  var a13492;
-  var a13493;
-  var a13494;
-  var a13495;
-  var a13496;
-  var a13497;
-  var a13498;
-  var a13499;
-  var a13500;
-  var a13501;
-  var a13502;
-  var a13503;
-  var a13504;
-  var a13505;
-  var a13506;
-  var a13507;
-  var a13508;
-  var a13509;
-  var a13510;
-  var a13511;
-  var a13512;
-  var a13513;
-  var a13514;
-  var a13515;
-  var a13516;
-  var a13517;
-  var a13518;
-  var a13519;
-  var a13520;
-  var a13521;
-  var a13522;
-  var a13523;
-  var a13524;
-  var a13525;
-  var a13526;
-  var a13527;
-  var a13528;
-  var a13529;
-  var a13530;
-  var a13531;
-  var a13532;
-  var a13533;
-  var a13534;
-  var a13535;
-  var a13536;
-  var a13537;
-  var a13538;
-  var a13539;
-  var a13540;
-  var a13541;
-  var a13542;
-  var a13543;
-  var a13544;
-  var a13545;
-  var a13546;
-  var a13547;
-  var a13548;
-  var a13549;
-  var a13550;
-  var a13551;
-  var a13552;
-  var a13553;
-  var a13554;
-  var a13555;
-  var a13556;
-  var a13557;
-  var a13558;
-  var a13559;
-  var a13560;
-  var a13561;
-  var a13562;
-  var a13563;
-  var a13564;
-  var a13565;
-  var a13566;
-  var a13567;
-  var a13568;
-  var a13569;
-  var a13570;
-  var a13571;
-  var a13572;
-  var a13573;
-  var a13574;
-  var a13575;
-  var a13576;
-  var a13577;
-  var a13578;
-  var a13579;
-  var a13580;
-  var a13581;
-  var a13582;
-  var a13583;
-  var a13584;
-  var a13585;
-  var a13586;
-  var a13587;
-  var a13588;
-  var a13589;
-  var a13590;
-  var a13591;
-  var a13592;
-  var a13593;
-  var a13594;
-  var a13595;
-  var a13596;
-  var a13597;
-  var a13598;
-  var a13599;
-  var a13600;
-  var a13601;
-  var a13602;
-  var a13603;
-  var a13604;
-  var a13605;
-  var a13606;
-  var a13607;
-  var a13608;
-  var a13609;
-  var a13610;
-  var a13611;
-  var a13612;
-  var a13613;
-  var a13614;
-  var a13615;
-  var a13616;
-  var a13617;
-  var a13618;
-  var a13619;
-  var a13620;
-  var a13621;
-  var a13622;
-  var a13623;
-  var a13624;
-  var a13625;
-  var a13626;
-  var a13627;
-  var a13628;
-  var a13629;
-  var a13630;
-  var a13631;
-  var a13632;
-  var a13633;
-  var a13634;
-  var a13635;
-  var a13636;
-  var a13637;
-  var a13638;
-  var a13639;
-  var a13640;
-  var a13641;
-  var a13642;
-  var a13643;
-  var a13644;
-  var a13645;
-  var a13646;
-  var a13647;
-  var a13648;
-  var a13649;
-  var a13650;
-  var a13651;
-  var a13652;
-  var a13653;
-  var a13654;
-  var a13655;
-  var a13656;
-  var a13657;
-  var a13658;
-  var a13659;
-  var a13660;
-  var a13661;
-  var a13662;
-  var a13663;
-  var a13664;
-  var a13665;
-  var a13666;
-  var a13667;
-  var a13668;
-  var a13669;
-  var a13670;
-  var a13671;
-  var a13672;
-  var a13673;
-  var a13674;
-  var a13675;
-  var a13676;
-  var a13677;
-  var a13678;
-  var a13679;
-  var a13680;
-  var a13681;
-  var a13682;
-  var a13683;
-  var a13684;
-  var a13685;
-  var a13686;
-  var a13687;
-  var a13688;
-  var a13689;
-  var a13690;
-  var a13691;
-  var a13692;
-  var a13693;
-  var a13694;
-  var a13695;
-  var a13696;
-  var a13697;
-  var a13698;
-  var a13699;
-  var a13700;
-  var a13701;
-  var a13702;
-  var a13703;
-  var a13704;
-  var a13705;
-  var a13706;
-  var a13707;
-  var a13708;
-  var a13709;
-  var a13710;
-  var a13711;
-  var a13712;
-  var a13713;
-  var a13714;
-  var a13715;
-  var a13716;
-  var a13717;
-  var a13718;
-  var a13719;
-  var a13720;
-  var a13721;
-  var a13722;
-  var a13723;
-  var a13724;
-  var a13725;
-  var a13726;
-  var a13727;
-  var a13728;
-  var a13729;
-  var a13730;
-  var a13731;
-  var a13732;
-  var a13733;
-  var a13734;
-  var a13735;
-  var a13736;
-  var a13737;
-  var a13738;
-  var a13739;
-  var a13740;
-  var a13741;
-  var a13742;
-  var a13743;
-  var a13744;
-  var a13745;
-  var a13746;
-  var a13747;
-  var a13748;
-  var a13749;
-  var a13750;
-  var a13751;
-  var a13752;
-  var a13753;
-  var a13754;
-  var a13755;
-  var a13756;
-  var a13757;
-  var a13758;
-  var a13759;
-  var a13760;
-  var a13761;
-  var a13762;
-  var a13763;
-  var a13764;
-  var a13765;
-  var a13766;
-  var a13767;
-  var a13768;
-  var a13769;
-  var a13770;
-  var a13771;
-  var a13772;
-  var a13773;
-  var a13774;
-  var a13775;
-  var a13776;
-  var a13777;
-  var a13778;
-  var a13779;
-  var a13780;
-  var a13781;
-  var a13782;
-  var a13783;
-  var a13784;
-  var a13785;
-  var a13786;
-  var a13787;
-  var a13788;
-  var a13789;
-  var a13790;
-  var a13791;
-  var a13792;
-  var a13793;
-  var a13794;
-  var a13795;
-  var a13796;
-  var a13797;
-  var a13798;
-  var a13799;
-  var a13800;
-  var a13801;
-  var a13802;
-  var a13803;
-  var a13804;
-  var a13805;
-  var a13806;
-  var a13807;
-  var a13808;
-  var a13809;
-  var a13810;
-  var a13811;
-  var a13812;
-  var a13813;
-  var a13814;
-  var a13815;
-  var a13816;
-  var a13817;
-  var a13818;
-  var a13819;
-  var a13820;
-  var a13821;
-  var a13822;
-  var a13823;
-  var a13824;
-  var a13825;
-  var a13826;
-  var a13827;
-  var a13828;
-  var a13829;
-  var a13830;
-  var a13831;
-  var a13832;
-  var a13833;
-  var a13834;
-  var a13835;
-  var a13836;
-  var a13837;
-  var a13838;
-  var a13839;
-  var a13840;
-  var a13841;
-  var a13842;
-  var a13843;
-  var a13844;
-  var a13845;
-  var a13846;
-  var a13847;
-  var a13848;
-  var a13849;
-  var a13850;
-  var a13851;
-  var a13852;
-  var a13853;
-  var a13854;
-  var a13855;
-  var a13856;
-  var a13857;
-  var a13858;
-  var a13859;
-  var a13860;
-  var a13861;
-  var a13862;
-  var a13863;
-  var a13864;
-  var a13865;
-  var a13866;
-  var a13867;
-  var a13868;
-  var a13869;
-  var a13870;
-  var a13871;
-  var a13872;
-  var a13873;
-  var a13874;
-  var a13875;
-  var a13876;
-  var a13877;
-  var a13878;
-  var a13879;
-  var a13880;
-  var a13881;
-  var a13882;
-  var a13883;
-  var a13884;
-  var a13885;
-  var a13886;
-  var a13887;
-  var a13888;
-  var a13889;
-  var a13890;
-  var a13891;
-  var a13892;
-  var a13893;
-  var a13894;
-  var a13895;
-  var a13896;
-  var a13897;
-  var a13898;
-  var a13899;
-  var a13900;
-  var a13901;
-  var a13902;
-  var a13903;
-  var a13904;
-  var a13905;
-  var a13906;
-  var a13907;
-  var a13908;
-  var a13909;
-  var a13910;
-  var a13911;
-  var a13912;
-  var a13913;
-  var a13914;
-  var a13915;
-  var a13916;
-  var a13917;
-  var a13918;
-  var a13919;
-  var a13920;
-  var a13921;
-  var a13922;
-  var a13923;
-  var a13924;
-  var a13925;
-  var a13926;
-  var a13927;
-  var a13928;
-  var a13929;
-  var a13930;
-  var a13931;
-  var a13932;
-  var a13933;
-  var a13934;
-  var a13935;
-  var a13936;
-  var a13937;
-  var a13938;
-  var a13939;
-  var a13940;
-  var a13941;
-  var a13942;
-  var a13943;
-  var a13944;
-  var a13945;
-  var a13946;
-  var a13947;
-  var a13948;
-  var a13949;
-  var a13950;
-  var a13951;
-  var a13952;
-  var a13953;
-  var a13954;
-  var a13955;
-  var a13956;
-  var a13957;
-  var a13958;
-  var a13959;
-  var a13960;
-  var a13961;
-  var a13962;
-  var a13963;
-  var a13964;
-  var a13965;
-  var a13966;
-  var a13967;
-  var a13968;
-  var a13969;
-  var a13970;
-  var a13971;
-  var a13972;
-  var a13973;
-  var a13974;
-  var a13975;
-  var a13976;
-  var a13977;
-  var a13978;
-  var a13979;
-  var a13980;
-  var a13981;
-  var a13982;
-  var a13983;
-  var a13984;
-  var a13985;
-  var a13986;
-  var a13987;
-  var a13988;
-  var a13989;
-  var a13990;
-  var a13991;
-  var a13992;
-  var a13993;
-  var a13994;
-  var a13995;
-  var a13996;
-  var a13997;
-  var a13998;
-  var a13999;
-  var a14000;
-  var a14001;
-  var a14002;
-  var a14003;
-  var a14004;
-  var a14005;
-  var a14006;
-  var a14007;
-  var a14008;
-  var a14009;
-  var a14010;
-  var a14011;
-  var a14012;
-  var a14013;
-  var a14014;
-  var a14015;
-  var a14016;
-  var a14017;
-  var a14018;
-  var a14019;
-  var a14020;
-  var a14021;
-  var a14022;
-  var a14023;
-  var a14024;
-  var a14025;
-  var a14026;
-  var a14027;
-  var a14028;
-  var a14029;
-  var a14030;
-  var a14031;
-  var a14032;
-  var a14033;
-  var a14034;
-  var a14035;
-  var a14036;
-  var a14037;
-  var a14038;
-  var a14039;
-  var a14040;
-  var a14041;
-  var a14042;
-  var a14043;
-  var a14044;
-  var a14045;
-  var a14046;
-  var a14047;
-  var a14048;
-  var a14049;
-  var a14050;
-  var a14051;
-  var a14052;
-  var a14053;
-  var a14054;
-  var a14055;
-  var a14056;
-  var a14057;
-  var a14058;
-  var a14059;
-  var a14060;
-  var a14061;
-  var a14062;
-  var a14063;
-  var a14064;
-  var a14065;
-  var a14066;
-  var a14067;
-  var a14068;
-  var a14069;
-  var a14070;
-  var a14071;
-  var a14072;
-  var a14073;
-  var a14074;
-  var a14075;
-  var a14076;
-  var a14077;
-  var a14078;
-  var a14079;
-  var a14080;
-  var a14081;
-  var a14082;
-  var a14083;
-  var a14084;
-  var a14085;
-  var a14086;
-  var a14087;
-  var a14088;
-  var a14089;
-  var a14090;
-  var a14091;
-  var a14092;
-  var a14093;
-  var a14094;
-  var a14095;
-  var a14096;
-  var a14097;
-  var a14098;
-  var a14099;
-  var a14100;
-  var a14101;
-  var a14102;
-  var a14103;
-  var a14104;
-  var a14105;
-  var a14106;
-  var a14107;
-  var a14108;
-  var a14109;
-  var a14110;
-  var a14111;
-  var a14112;
-  var a14113;
-  var a14114;
-  var a14115;
-  var a14116;
-  var a14117;
-  var a14118;
-  var a14119;
-  var a14120;
-  var a14121;
-  var a14122;
-  var a14123;
-  var a14124;
-  var a14125;
-  var a14126;
-  var a14127;
-  var a14128;
-  var a14129;
-  var a14130;
-  var a14131;
-  var a14132;
-  var a14133;
-  var a14134;
-  var a14135;
-  var a14136;
-  var a14137;
-  var a14138;
-  var a14139;
-  var a14140;
-  var a14141;
-  var a14142;
-  var a14143;
-  var a14144;
-  var a14145;
-  var a14146;
-  var a14147;
-  var a14148;
-  var a14149;
-  var a14150;
-  var a14151;
-  var a14152;
-  var a14153;
-  var a14154;
-  var a14155;
-  var a14156;
-  var a14157;
-  var a14158;
-  var a14159;
-  var a14160;
-  var a14161;
-  var a14162;
-  var a14163;
-  var a14164;
-  var a14165;
-  var a14166;
-  var a14167;
-  var a14168;
-  var a14169;
-  var a14170;
-  var a14171;
-  var a14172;
-  var a14173;
-  var a14174;
-  var a14175;
-  var a14176;
-  var a14177;
-  var a14178;
-  var a14179;
-  var a14180;
-  var a14181;
-  var a14182;
-  var a14183;
-  var a14184;
-  var a14185;
-  var a14186;
-  var a14187;
-  var a14188;
-  var a14189;
-  var a14190;
-  var a14191;
-  var a14192;
-  var a14193;
-  var a14194;
-  var a14195;
-  var a14196;
-  var a14197;
-  var a14198;
-  var a14199;
-  var a14200;
-  var a14201;
-  var a14202;
-  var a14203;
-  var a14204;
-  var a14205;
-  var a14206;
-  var a14207;
-  var a14208;
-  var a14209;
-  var a14210;
-  var a14211;
-  var a14212;
-  var a14213;
-  var a14214;
-  var a14215;
-  var a14216;
-  var a14217;
-  var a14218;
-  var a14219;
-  var a14220;
-  var a14221;
-  var a14222;
-  var a14223;
-  var a14224;
-  var a14225;
-  var a14226;
-  var a14227;
-  var a14228;
-  var a14229;
-  var a14230;
-  var a14231;
-  var a14232;
-  var a14233;
-  var a14234;
-  var a14235;
-  var a14236;
-  var a14237;
-  var a14238;
-  var a14239;
-  var a14240;
-  var a14241;
-  var a14242;
-  var a14243;
-  var a14244;
-  var a14245;
-  var a14246;
-  var a14247;
-  var a14248;
-  var a14249;
-  var a14250;
-  var a14251;
-  var a14252;
-  var a14253;
-  var a14254;
-  var a14255;
-  var a14256;
-  var a14257;
-  var a14258;
-  var a14259;
-  var a14260;
-  var a14261;
-  var a14262;
-  var a14263;
-  var a14264;
-  var a14265;
-  var a14266;
-  var a14267;
-  var a14268;
-  var a14269;
-  var a14270;
-  var a14271;
-  var a14272;
-  var a14273;
-  var a14274;
-  var a14275;
-  var a14276;
-  var a14277;
-  var a14278;
-  var a14279;
-  var a14280;
-  var a14281;
-  var a14282;
-  var a14283;
-  var a14284;
-  var a14285;
-  var a14286;
-  var a14287;
-  var a14288;
-  var a14289;
-  var a14290;
-  var a14291;
-  var a14292;
-  var a14293;
-  var a14294;
-  var a14295;
-  var a14296;
-  var a14297;
-  var a14298;
-  var a14299;
-  var a14300;
-  var a14301;
-  var a14302;
-  var a14303;
-  var a14304;
-  var a14305;
-  var a14306;
-  var a14307;
-  var a14308;
-  var a14309;
-  var a14310;
-  var a14311;
-  var a14312;
-  var a14313;
-  var a14314;
-  var a14315;
-  var a14316;
-  var a14317;
-  var a14318;
-  var a14319;
-  var a14320;
-  var a14321;
-  var a14322;
-  var a14323;
-  var a14324;
-  var a14325;
-  var a14326;
-  var a14327;
-  var a14328;
-  var a14329;
-  var a14330;
-  var a14331;
-  var a14332;
-  var a14333;
-  var a14334;
-  var a14335;
-  var a14336;
-  var a14337;
-  var a14338;
-  var a14339;
-  var a14340;
-  var a14341;
-  var a14342;
-  var a14343;
-  var a14344;
-  var a14345;
-  var a14346;
-  var a14347;
-  var a14348;
-  var a14349;
-  var a14350;
-  var a14351;
-  var a14352;
-  var a14353;
-  var a14354;
-  var a14355;
-  var a14356;
-  var a14357;
-  var a14358;
-  var a14359;
-  var a14360;
-  var a14361;
-  var a14362;
-  var a14363;
-  var a14364;
-  var a14365;
-  var a14366;
-  var a14367;
-  var a14368;
-  var a14369;
-  var a14370;
-  var a14371;
-  var a14372;
-  var a14373;
-  var a14374;
-  var a14375;
-  var a14376;
-  var a14377;
-  var a14378;
-  var a14379;
-  var a14380;
-  var a14381;
-  var a14382;
-  var a14383;
-  var a14384;
-  var a14385;
-  var a14386;
-  var a14387;
-  var a14388;
-  var a14389;
-  var a14390;
-  var a14391;
-  var a14392;
-  var a14393;
-  var a14394;
-  var a14395;
-  var a14396;
-  var a14397;
-  var a14398;
-  var a14399;
-  var a14400;
-  var a14401;
-  var a14402;
-  var a14403;
-  var a14404;
-  var a14405;
-  var a14406;
-  var a14407;
-  var a14408;
-  var a14409;
-  var a14410;
-  var a14411;
-  var a14412;
-  var a14413;
-  var a14414;
-  var a14415;
-  var a14416;
-  var a14417;
-  var a14418;
-  var a14419;
-  var a14420;
-  var a14421;
-  var a14422;
-  var a14423;
-  var a14424;
-  var a14425;
-  var a14426;
-  var a14427;
-  var a14428;
-  var a14429;
-  var a14430;
-  var a14431;
-  var a14432;
-  var a14433;
-  var a14434;
-  var a14435;
-  var a14436;
-  var a14437;
-  var a14438;
-  var a14439;
-  var a14440;
-  var a14441;
-  var a14442;
-  var a14443;
-  var a14444;
-  var a14445;
-  var a14446;
-  var a14447;
-  var a14448;
-  var a14449;
-  var a14450;
-  var a14451;
-  var a14452;
-  var a14453;
-  var a14454;
-  var a14455;
-  var a14456;
-  var a14457;
-  var a14458;
-  var a14459;
-  var a14460;
-  var a14461;
-  var a14462;
-  var a14463;
-  var a14464;
-  var a14465;
-  var a14466;
-  var a14467;
-  var a14468;
-  var a14469;
-  var a14470;
-  var a14471;
-  var a14472;
-  var a14473;
-  var a14474;
-  var a14475;
-  var a14476;
-  var a14477;
-  var a14478;
-  var a14479;
-  var a14480;
-  var a14481;
-  var a14482;
-  var a14483;
-  var a14484;
-  var a14485;
-  var a14486;
-  var a14487;
-  var a14488;
-  var a14489;
-  var a14490;
-  var a14491;
-  var a14492;
-  var a14493;
-  var a14494;
-  var a14495;
-  var a14496;
-  var a14497;
-  var a14498;
-  var a14499;
-  var a14500;
-  var a14501;
-  var a14502;
-  var a14503;
-  var a14504;
-  var a14505;
-  var a14506;
-  var a14507;
-  var a14508;
-  var a14509;
-  var a14510;
-  var a14511;
-  var a14512;
-  var a14513;
-  var a14514;
-  var a14515;
-  var a14516;
-  var a14517;
-  var a14518;
-  var a14519;
-  var a14520;
-  var a14521;
-  var a14522;
-  var a14523;
-  var a14524;
-  var a14525;
-  var a14526;
-  var a14527;
-  var a14528;
-  var a14529;
-  var a14530;
-  var a14531;
-  var a14532;
-  var a14533;
-  var a14534;
-  var a14535;
-  var a14536;
-  var a14537;
-  var a14538;
-  var a14539;
-  var a14540;
-  var a14541;
-  var a14542;
-  var a14543;
-  var a14544;
-  var a14545;
-  var a14546;
-  var a14547;
-  var a14548;
-  var a14549;
-  var a14550;
-  var a14551;
-  var a14552;
-  var a14553;
-  var a14554;
-  var a14555;
-  var a14556;
-  var a14557;
-  var a14558;
-  var a14559;
-  var a14560;
-  var a14561;
-  var a14562;
-  var a14563;
-  var a14564;
-  var a14565;
-  var a14566;
-  var a14567;
-  var a14568;
-  var a14569;
-  var a14570;
-  var a14571;
-  var a14572;
-  var a14573;
-  var a14574;
-  var a14575;
-  var a14576;
-  var a14577;
-  var a14578;
-  var a14579;
-  var a14580;
-  var a14581;
-  var a14582;
-  var a14583;
-  var a14584;
-  var a14585;
-  var a14586;
-  var a14587;
-  var a14588;
-  var a14589;
-  var a14590;
-  var a14591;
-  var a14592;
-  var a14593;
-  var a14594;
-  var a14595;
-  var a14596;
-  var a14597;
-  var a14598;
-  var a14599;
-  var a14600;
-  var a14601;
-  var a14602;
-  var a14603;
-  var a14604;
-  var a14605;
-  var a14606;
-  var a14607;
-  var a14608;
-  var a14609;
-  var a14610;
-  var a14611;
-  var a14612;
-  var a14613;
-  var a14614;
-  var a14615;
-  var a14616;
-  var a14617;
-  var a14618;
-  var a14619;
-  var a14620;
-  var a14621;
-  var a14622;
-  var a14623;
-  var a14624;
-  var a14625;
-  var a14626;
-  var a14627;
-  var a14628;
-  var a14629;
-  var a14630;
-  var a14631;
-  var a14632;
-  var a14633;
-  var a14634;
-  var a14635;
-  var a14636;
-  var a14637;
-  var a14638;
-  var a14639;
-  var a14640;
-  var a14641;
-  var a14642;
-  var a14643;
-  var a14644;
-  var a14645;
-  var a14646;
-  var a14647;
-  var a14648;
-  var a14649;
-  var a14650;
-  var a14651;
-  var a14652;
-  var a14653;
-  var a14654;
-  var a14655;
-  var a14656;
-  var a14657;
-  var a14658;
-  var a14659;
-  var a14660;
-  var a14661;
-  var a14662;
-  var a14663;
-  var a14664;
-  var a14665;
-  var a14666;
-  var a14667;
-  var a14668;
-  var a14669;
-  var a14670;
-  var a14671;
-  var a14672;
-  var a14673;
-  var a14674;
-  var a14675;
-  var a14676;
-  var a14677;
-  var a14678;
-  var a14679;
-  var a14680;
-  var a14681;
-  var a14682;
-  var a14683;
-  var a14684;
-  var a14685;
-  var a14686;
-  var a14687;
-  var a14688;
-  var a14689;
-  var a14690;
-  var a14691;
-  var a14692;
-  var a14693;
-  var a14694;
-  var a14695;
-  var a14696;
-  var a14697;
-  var a14698;
-  var a14699;
-  var a14700;
-  var a14701;
-  var a14702;
-  var a14703;
-  var a14704;
-  var a14705;
-  var a14706;
-  var a14707;
-  var a14708;
-  var a14709;
-  var a14710;
-  var a14711;
-  var a14712;
-  var a14713;
-  var a14714;
-  var a14715;
-  var a14716;
-  var a14717;
-  var a14718;
-  var a14719;
-  var a14720;
-  var a14721;
-  var a14722;
-  var a14723;
-  var a14724;
-  var a14725;
-  var a14726;
-  var a14727;
-  var a14728;
-  var a14729;
-  var a14730;
-  var a14731;
-  var a14732;
-  var a14733;
-  var a14734;
-  var a14735;
-  var a14736;
-  var a14737;
-  var a14738;
-  var a14739;
-  var a14740;
-  var a14741;
-  var a14742;
-  var a14743;
-  var a14744;
-  var a14745;
-  var a14746;
-  var a14747;
-  var a14748;
-  var a14749;
-  var a14750;
-  var a14751;
-  var a14752;
-  var a14753;
-  var a14754;
-  var a14755;
-  var a14756;
-  var a14757;
-  var a14758;
-  var a14759;
-  var a14760;
-  var a14761;
-  var a14762;
-  var a14763;
-  var a14764;
-  var a14765;
-  var a14766;
-  var a14767;
-  var a14768;
-  var a14769;
-  var a14770;
-  var a14771;
-  var a14772;
-  var a14773;
-  var a14774;
-  var a14775;
-  var a14776;
-  var a14777;
-  var a14778;
-  var a14779;
-  var a14780;
-  var a14781;
-  var a14782;
-  var a14783;
-  var a14784;
-  var a14785;
-  var a14786;
-  var a14787;
-  var a14788;
-  var a14789;
-  var a14790;
-  var a14791;
-  var a14792;
-  var a14793;
-  var a14794;
-  var a14795;
-  var a14796;
-  var a14797;
-  var a14798;
-  var a14799;
-  var a14800;
-  var a14801;
-  var a14802;
-  var a14803;
-  var a14804;
-  var a14805;
-  var a14806;
-  var a14807;
-  var a14808;
-  var a14809;
-  var a14810;
-  var a14811;
-  var a14812;
-  var a14813;
-  var a14814;
-  var a14815;
-  var a14816;
-  var a14817;
-  var a14818;
-  var a14819;
-  var a14820;
-  var a14821;
-  var a14822;
-  var a14823;
-  var a14824;
-  var a14825;
-  var a14826;
-  var a14827;
-  var a14828;
-  var a14829;
-  var a14830;
-  var a14831;
-  var a14832;
-  var a14833;
-  var a14834;
-  var a14835;
-  var a14836;
-  var a14837;
-  var a14838;
-  var a14839;
-  var a14840;
-  var a14841;
-  var a14842;
-  var a14843;
-  var a14844;
-  var a14845;
-  var a14846;
-  var a14847;
-  var a14848;
-  var a14849;
-  var a14850;
-  var a14851;
-  var a14852;
-  var a14853;
-  var a14854;
-  var a14855;
-  var a14856;
-  var a14857;
-  var a14858;
-  var a14859;
-  var a14860;
-  var a14861;
-  var a14862;
-  var a14863;
-  var a14864;
-  var a14865;
-  var a14866;
-  var a14867;
-  var a14868;
-  var a14869;
-  var a14870;
-  var a14871;
-  var a14872;
-  var a14873;
-  var a14874;
-  var a14875;
-  var a14876;
-  var a14877;
-  var a14878;
-  var a14879;
-  var a14880;
-  var a14881;
-  var a14882;
-  var a14883;
-  var a14884;
-  var a14885;
-  var a14886;
-  var a14887;
-  var a14888;
-  var a14889;
-  var a14890;
-  var a14891;
-  var a14892;
-  var a14893;
-  var a14894;
-  var a14895;
-  var a14896;
-  var a14897;
-  var a14898;
-  var a14899;
-  var a14900;
-  var a14901;
-  var a14902;
-  var a14903;
-  var a14904;
-  var a14905;
-  var a14906;
-  var a14907;
-  var a14908;
-  var a14909;
-  var a14910;
-  var a14911;
-  var a14912;
-  var a14913;
-  var a14914;
-  var a14915;
-  var a14916;
-  var a14917;
-  var a14918;
-  var a14919;
-  var a14920;
-  var a14921;
-  var a14922;
-  var a14923;
-  var a14924;
-  var a14925;
-  var a14926;
-  var a14927;
-  var a14928;
-  var a14929;
-  var a14930;
-  var a14931;
-  var a14932;
-  var a14933;
-  var a14934;
-  var a14935;
-  var a14936;
-  var a14937;
-  var a14938;
-  var a14939;
-  var a14940;
-  var a14941;
-  var a14942;
-  var a14943;
-  var a14944;
-  var a14945;
-  var a14946;
-  var a14947;
-  var a14948;
-  var a14949;
-  var a14950;
-  var a14951;
-  var a14952;
-  var a14953;
-  var a14954;
-  var a14955;
-  var a14956;
-  var a14957;
-  var a14958;
-  var a14959;
-  var a14960;
-  var a14961;
-  var a14962;
-  var a14963;
-  var a14964;
-  var a14965;
-  var a14966;
-  var a14967;
-  var a14968;
-  var a14969;
-  var a14970;
-  var a14971;
-  var a14972;
-  var a14973;
-  var a14974;
-  var a14975;
-  var a14976;
-  var a14977;
-  var a14978;
-  var a14979;
-  var a14980;
-  var a14981;
-  var a14982;
-  var a14983;
-  var a14984;
-  var a14985;
-  var a14986;
-  var a14987;
-  var a14988;
-  var a14989;
-  var a14990;
-  var a14991;
-  var a14992;
-  var a14993;
-  var a14994;
-  var a14995;
-  var a14996;
-  var a14997;
-  var a14998;
-  var a14999;
-  var a15000;
-  var a15001;
-  var a15002;
-  var a15003;
-  var a15004;
-  var a15005;
-  var a15006;
-  var a15007;
-  var a15008;
-  var a15009;
-  var a15010;
-  var a15011;
-  var a15012;
-  var a15013;
-  var a15014;
-  var a15015;
-  var a15016;
-  var a15017;
-  var a15018;
-  var a15019;
-  var a15020;
-  var a15021;
-  var a15022;
-  var a15023;
-  var a15024;
-  var a15025;
-  var a15026;
-  var a15027;
-  var a15028;
-  var a15029;
-  var a15030;
-  var a15031;
-  var a15032;
-  var a15033;
-  var a15034;
-  var a15035;
-  var a15036;
-  var a15037;
-  var a15038;
-  var a15039;
-  var a15040;
-  var a15041;
-  var a15042;
-  var a15043;
-  var a15044;
-  var a15045;
-  var a15046;
-  var a15047;
-  var a15048;
-  var a15049;
-  var a15050;
-  var a15051;
-  var a15052;
-  var a15053;
-  var a15054;
-  var a15055;
-  var a15056;
-  var a15057;
-  var a15058;
-  var a15059;
-  var a15060;
-  var a15061;
-  var a15062;
-  var a15063;
-  var a15064;
-  var a15065;
-  var a15066;
-  var a15067;
-  var a15068;
-  var a15069;
-  var a15070;
-  var a15071;
-  var a15072;
-  var a15073;
-  var a15074;
-  var a15075;
-  var a15076;
-  var a15077;
-  var a15078;
-  var a15079;
-  var a15080;
-  var a15081;
-  var a15082;
-  var a15083;
-  var a15084;
-  var a15085;
-  var a15086;
-  var a15087;
-  var a15088;
-  var a15089;
-  var a15090;
-  var a15091;
-  var a15092;
-  var a15093;
-  var a15094;
-  var a15095;
-  var a15096;
-  var a15097;
-  var a15098;
-  var a15099;
-  var a15100;
-  var a15101;
-  var a15102;
-  var a15103;
-  var a15104;
-  var a15105;
-  var a15106;
-  var a15107;
-  var a15108;
-  var a15109;
-  var a15110;
-  var a15111;
-  var a15112;
-  var a15113;
-  var a15114;
-  var a15115;
-  var a15116;
-  var a15117;
-  var a15118;
-  var a15119;
-  var a15120;
-  var a15121;
-  var a15122;
-  var a15123;
-  var a15124;
-  var a15125;
-  var a15126;
-  var a15127;
-  var a15128;
-  var a15129;
-  var a15130;
-  var a15131;
-  var a15132;
-  var a15133;
-  var a15134;
-  var a15135;
-  var a15136;
-  var a15137;
-  var a15138;
-  var a15139;
-  var a15140;
-  var a15141;
-  var a15142;
-  var a15143;
-  var a15144;
-  var a15145;
-  var a15146;
-  var a15147;
-  var a15148;
-  var a15149;
-  var a15150;
-  var a15151;
-  var a15152;
-  var a15153;
-  var a15154;
-  var a15155;
-  var a15156;
-  var a15157;
-  var a15158;
-  var a15159;
-  var a15160;
-  var a15161;
-  var a15162;
-  var a15163;
-  var a15164;
-  var a15165;
-  var a15166;
-  var a15167;
-  var a15168;
-  var a15169;
-  var a15170;
-  var a15171;
-  var a15172;
-  var a15173;
-  var a15174;
-  var a15175;
-  var a15176;
-  var a15177;
-  var a15178;
-  var a15179;
-  var a15180;
-  var a15181;
-  var a15182;
-  var a15183;
-  var a15184;
-  var a15185;
-  var a15186;
-  var a15187;
-  var a15188;
-  var a15189;
-  var a15190;
-  var a15191;
-  var a15192;
-  var a15193;
-  var a15194;
-  var a15195;
-  var a15196;
-  var a15197;
-  var a15198;
-  var a15199;
-  var a15200;
-  var a15201;
-  var a15202;
-  var a15203;
-  var a15204;
-  var a15205;
-  var a15206;
-  var a15207;
-  var a15208;
-  var a15209;
-  var a15210;
-  var a15211;
-  var a15212;
-  var a15213;
-  var a15214;
-  var a15215;
-  var a15216;
-  var a15217;
-  var a15218;
-  var a15219;
-  var a15220;
-  var a15221;
-  var a15222;
-  var a15223;
-  var a15224;
-  var a15225;
-  var a15226;
-  var a15227;
-  var a15228;
-  var a15229;
-  var a15230;
-  var a15231;
-  var a15232;
-  var a15233;
-  var a15234;
-  var a15235;
-  var a15236;
-  var a15237;
-  var a15238;
-  var a15239;
-  var a15240;
-  var a15241;
-  var a15242;
-  var a15243;
-  var a15244;
-  var a15245;
-  var a15246;
-  var a15247;
-  var a15248;
-  var a15249;
-  var a15250;
-  var a15251;
-  var a15252;
-  var a15253;
-  var a15254;
-  var a15255;
-  var a15256;
-  var a15257;
-  var a15258;
-  var a15259;
-  var a15260;
-  var a15261;
-  var a15262;
-  var a15263;
-  var a15264;
-  var a15265;
-  var a15266;
-  var a15267;
-  var a15268;
-  var a15269;
-  var a15270;
-  var a15271;
-  var a15272;
-  var a15273;
-  var a15274;
-  var a15275;
-  var a15276;
-  var a15277;
-  var a15278;
-  var a15279;
-  var a15280;
-  var a15281;
-  var a15282;
-  var a15283;
-  var a15284;
-  var a15285;
-  var a15286;
-  var a15287;
-  var a15288;
-  var a15289;
-  var a15290;
-  var a15291;
-  var a15292;
-  var a15293;
-  var a15294;
-  var a15295;
-  var a15296;
-  var a15297;
-  var a15298;
-  var a15299;
-  var a15300;
-  var a15301;
-  var a15302;
-  var a15303;
-  var a15304;
-  var a15305;
-  var a15306;
-  var a15307;
-  var a15308;
-  var a15309;
-  var a15310;
-  var a15311;
-  var a15312;
-  var a15313;
-  var a15314;
-  var a15315;
-  var a15316;
-  var a15317;
-  var a15318;
-  var a15319;
-  var a15320;
-  var a15321;
-  var a15322;
-  var a15323;
-  var a15324;
-  var a15325;
-  var a15326;
-  var a15327;
-  var a15328;
-  var a15329;
-  var a15330;
-  var a15331;
-  var a15332;
-  var a15333;
-  var a15334;
-  var a15335;
-  var a15336;
-  var a15337;
-  var a15338;
-  var a15339;
-  var a15340;
-  var a15341;
-  var a15342;
-  var a15343;
-  var a15344;
-  var a15345;
-  var a15346;
-  var a15347;
-  var a15348;
-  var a15349;
-  var a15350;
-  var a15351;
-  var a15352;
-  var a15353;
-  var a15354;
-  var a15355;
-  var a15356;
-  var a15357;
-  var a15358;
-  var a15359;
-  var a15360;
-  var a15361;
-  var a15362;
-  var a15363;
-  var a15364;
-  var a15365;
-  var a15366;
-  var a15367;
-  var a15368;
-  var a15369;
-  var a15370;
-  var a15371;
-  var a15372;
-  var a15373;
-  var a15374;
-  var a15375;
-  var a15376;
-  var a15377;
-  var a15378;
-  var a15379;
-  var a15380;
-  var a15381;
-  var a15382;
-  var a15383;
-  var a15384;
-  var a15385;
-  var a15386;
-  var a15387;
-  var a15388;
-  var a15389;
-  var a15390;
-  var a15391;
-  var a15392;
-  var a15393;
-  var a15394;
-  var a15395;
-  var a15396;
-  var a15397;
-  var a15398;
-  var a15399;
-  var a15400;
-  var a15401;
-  var a15402;
-  var a15403;
-  var a15404;
-  var a15405;
-  var a15406;
-  var a15407;
-  var a15408;
-  var a15409;
-  var a15410;
-  var a15411;
-  var a15412;
-  var a15413;
-  var a15414;
-  var a15415;
-  var a15416;
-  var a15417;
-  var a15418;
-  var a15419;
-  var a15420;
-  var a15421;
-  var a15422;
-  var a15423;
-  var a15424;
-  var a15425;
-  var a15426;
-  var a15427;
-  var a15428;
-  var a15429;
-  var a15430;
-  var a15431;
-  var a15432;
-  var a15433;
-  var a15434;
-  var a15435;
-  var a15436;
-  var a15437;
-  var a15438;
-  var a15439;
-  var a15440;
-  var a15441;
-  var a15442;
-  var a15443;
-  var a15444;
-  var a15445;
-  var a15446;
-  var a15447;
-  var a15448;
-  var a15449;
-  var a15450;
-  var a15451;
-  var a15452;
-  var a15453;
-  var a15454;
-  var a15455;
-  var a15456;
-  var a15457;
-  var a15458;
-  var a15459;
-  var a15460;
-  var a15461;
-  var a15462;
-  var a15463;
-  var a15464;
-  var a15465;
-  var a15466;
-  var a15467;
-  var a15468;
-  var a15469;
-  var a15470;
-  var a15471;
-  var a15472;
-  var a15473;
-  var a15474;
-  var a15475;
-  var a15476;
-  var a15477;
-  var a15478;
-  var a15479;
-  var a15480;
-  var a15481;
-  var a15482;
-  var a15483;
-  var a15484;
-  var a15485;
-  var a15486;
-  var a15487;
-  var a15488;
-  var a15489;
-  var a15490;
-  var a15491;
-  var a15492;
-  var a15493;
-  var a15494;
-  var a15495;
-  var a15496;
-  var a15497;
-  var a15498;
-  var a15499;
-  var a15500;
-  var a15501;
-  var a15502;
-  var a15503;
-  var a15504;
-  var a15505;
-  var a15506;
-  var a15507;
-  var a15508;
-  var a15509;
-  var a15510;
-  var a15511;
-  var a15512;
-  var a15513;
-  var a15514;
-  var a15515;
-  var a15516;
-  var a15517;
-  var a15518;
-  var a15519;
-  var a15520;
-  var a15521;
-  var a15522;
-  var a15523;
-  var a15524;
-  var a15525;
-  var a15526;
-  var a15527;
-  var a15528;
-  var a15529;
-  var a15530;
-  var a15531;
-  var a15532;
-  var a15533;
-  var a15534;
-  var a15535;
-  var a15536;
-  var a15537;
-  var a15538;
-  var a15539;
-  var a15540;
-  var a15541;
-  var a15542;
-  var a15543;
-  var a15544;
-  var a15545;
-  var a15546;
-  var a15547;
-  var a15548;
-  var a15549;
-  var a15550;
-  var a15551;
-  var a15552;
-  var a15553;
-  var a15554;
-  var a15555;
-  var a15556;
-  var a15557;
-  var a15558;
-  var a15559;
-  var a15560;
-  var a15561;
-  var a15562;
-  var a15563;
-  var a15564;
-  var a15565;
-  var a15566;
-  var a15567;
-  var a15568;
-  var a15569;
-  var a15570;
-  var a15571;
-  var a15572;
-  var a15573;
-  var a15574;
-  var a15575;
-  var a15576;
-  var a15577;
-  var a15578;
-  var a15579;
-  var a15580;
-  var a15581;
-  var a15582;
-  var a15583;
-  var a15584;
-  var a15585;
-  var a15586;
-  var a15587;
-  var a15588;
-  var a15589;
-  var a15590;
-  var a15591;
-  var a15592;
-  var a15593;
-  var a15594;
-  var a15595;
-  var a15596;
-  var a15597;
-  var a15598;
-  var a15599;
-  var a15600;
-  var a15601;
-  var a15602;
-  var a15603;
-  var a15604;
-  var a15605;
-  var a15606;
-  var a15607;
-  var a15608;
-  var a15609;
-  var a15610;
-  var a15611;
-  var a15612;
-  var a15613;
-  var a15614;
-  var a15615;
-  var a15616;
-  var a15617;
-  var a15618;
-  var a15619;
-  var a15620;
-  var a15621;
-  var a15622;
-  var a15623;
-  var a15624;
-  var a15625;
-  var a15626;
-  var a15627;
-  var a15628;
-  var a15629;
-  var a15630;
-  var a15631;
-  var a15632;
-  var a15633;
-  var a15634;
-  var a15635;
-  var a15636;
-  var a15637;
-  var a15638;
-  var a15639;
-  var a15640;
-  var a15641;
-  var a15642;
-  var a15643;
-  var a15644;
-  var a15645;
-  var a15646;
-  var a15647;
-  var a15648;
-  var a15649;
-  var a15650;
-  var a15651;
-  var a15652;
-  var a15653;
-  var a15654;
-  var a15655;
-  var a15656;
-  var a15657;
-  var a15658;
-  var a15659;
-  var a15660;
-  var a15661;
-  var a15662;
-  var a15663;
-  var a15664;
-  var a15665;
-  var a15666;
-  var a15667;
-  var a15668;
-  var a15669;
-  var a15670;
-  var a15671;
-  var a15672;
-  var a15673;
-  var a15674;
-  var a15675;
-  var a15676;
-  var a15677;
-  var a15678;
-  var a15679;
-  var a15680;
-  var a15681;
-  var a15682;
-  var a15683;
-  var a15684;
-  var a15685;
-  var a15686;
-  var a15687;
-  var a15688;
-  var a15689;
-  var a15690;
-  var a15691;
-  var a15692;
-  var a15693;
-  var a15694;
-  var a15695;
-  var a15696;
-  var a15697;
-  var a15698;
-  var a15699;
-  var a15700;
-  var a15701;
-  var a15702;
-  var a15703;
-  var a15704;
-  var a15705;
-  var a15706;
-  var a15707;
-  var a15708;
-  var a15709;
-  var a15710;
-  var a15711;
-  var a15712;
-  var a15713;
-  var a15714;
-  var a15715;
-  var a15716;
-  var a15717;
-  var a15718;
-  var a15719;
-  var a15720;
-  var a15721;
-  var a15722;
-  var a15723;
-  var a15724;
-  var a15725;
-  var a15726;
-  var a15727;
-  var a15728;
-  var a15729;
-  var a15730;
-  var a15731;
-  var a15732;
-  var a15733;
-  var a15734;
-  var a15735;
-  var a15736;
-  var a15737;
-  var a15738;
-  var a15739;
-  var a15740;
-  var a15741;
-  var a15742;
-  var a15743;
-  var a15744;
-  var a15745;
-  var a15746;
-  var a15747;
-  var a15748;
-  var a15749;
-  var a15750;
-  var a15751;
-  var a15752;
-  var a15753;
-  var a15754;
-  var a15755;
-  var a15756;
-  var a15757;
-  var a15758;
-  var a15759;
-  var a15760;
-  var a15761;
-  var a15762;
-  var a15763;
-  var a15764;
-  var a15765;
-  var a15766;
-  var a15767;
-  var a15768;
-  var a15769;
-  var a15770;
-  var a15771;
-  var a15772;
-  var a15773;
-  var a15774;
-  var a15775;
-  var a15776;
-  var a15777;
-  var a15778;
-  var a15779;
-  var a15780;
-  var a15781;
-  var a15782;
-  var a15783;
-  var a15784;
-  var a15785;
-  var a15786;
-  var a15787;
-  var a15788;
-  var a15789;
-  var a15790;
-  var a15791;
-  var a15792;
-  var a15793;
-  var a15794;
-  var a15795;
-  var a15796;
-  var a15797;
-  var a15798;
-  var a15799;
-  var a15800;
-  var a15801;
-  var a15802;
-  var a15803;
-  var a15804;
-  var a15805;
-  var a15806;
-  var a15807;
-  var a15808;
-  var a15809;
-  var a15810;
-  var a15811;
-  var a15812;
-  var a15813;
-  var a15814;
-  var a15815;
-  var a15816;
-  var a15817;
-  var a15818;
-  var a15819;
-  var a15820;
-  var a15821;
-  var a15822;
-  var a15823;
-  var a15824;
-  var a15825;
-  var a15826;
-  var a15827;
-  var a15828;
-  var a15829;
-  var a15830;
-  var a15831;
-  var a15832;
-  var a15833;
-  var a15834;
-  var a15835;
-  var a15836;
-  var a15837;
-  var a15838;
-  var a15839;
-  var a15840;
-  var a15841;
-  var a15842;
-  var a15843;
-  var a15844;
-  var a15845;
-  var a15846;
-  var a15847;
-  var a15848;
-  var a15849;
-  var a15850;
-  var a15851;
-  var a15852;
-  var a15853;
-  var a15854;
-  var a15855;
-  var a15856;
-  var a15857;
-  var a15858;
-  var a15859;
-  var a15860;
-  var a15861;
-  var a15862;
-  var a15863;
-  var a15864;
-  var a15865;
-  var a15866;
-  var a15867;
-  var a15868;
-  var a15869;
-  var a15870;
-  var a15871;
-  var a15872;
-  var a15873;
-  var a15874;
-  var a15875;
-  var a15876;
-  var a15877;
-  var a15878;
-  var a15879;
-  var a15880;
-  var a15881;
-  var a15882;
-  var a15883;
-  var a15884;
-  var a15885;
-  var a15886;
-  var a15887;
-  var a15888;
-  var a15889;
-  var a15890;
-  var a15891;
-  var a15892;
-  var a15893;
-  var a15894;
-  var a15895;
-  var a15896;
-  var a15897;
-  var a15898;
-  var a15899;
-  var a15900;
-  var a15901;
-  var a15902;
-  var a15903;
-  var a15904;
-  var a15905;
-  var a15906;
-  var a15907;
-  var a15908;
-  var a15909;
-  var a15910;
-  var a15911;
-  var a15912;
-  var a15913;
-  var a15914;
-  var a15915;
-  var a15916;
-  var a15917;
-  var a15918;
-  var a15919;
-  var a15920;
-  var a15921;
-  var a15922;
-  var a15923;
-  var a15924;
-  var a15925;
-  var a15926;
-  var a15927;
-  var a15928;
-  var a15929;
-  var a15930;
-  var a15931;
-  var a15932;
-  var a15933;
-  var a15934;
-  var a15935;
-  var a15936;
-  var a15937;
-  var a15938;
-  var a15939;
-  var a15940;
-  var a15941;
-  var a15942;
-  var a15943;
-  var a15944;
-  var a15945;
-  var a15946;
-  var a15947;
-  var a15948;
-  var a15949;
-  var a15950;
-  var a15951;
-  var a15952;
-  var a15953;
-  var a15954;
-  var a15955;
-  var a15956;
-  var a15957;
-  var a15958;
-  var a15959;
-  var a15960;
-  var a15961;
-  var a15962;
-  var a15963;
-  var a15964;
-  var a15965;
-  var a15966;
-  var a15967;
-  var a15968;
-  var a15969;
-  var a15970;
-  var a15971;
-  var a15972;
-  var a15973;
-  var a15974;
-  var a15975;
-  var a15976;
-  var a15977;
-  var a15978;
-  var a15979;
-  var a15980;
-  var a15981;
-  var a15982;
-  var a15983;
-  var a15984;
-  var a15985;
-  var a15986;
-  var a15987;
-  var a15988;
-  var a15989;
-  var a15990;
-  var a15991;
-  var a15992;
-  var a15993;
-  var a15994;
-  var a15995;
-  var a15996;
-  var a15997;
-  var a15998;
-  var a15999;
-  var a16000;
-  var a16001;
-  var a16002;
-  var a16003;
-  var a16004;
-  var a16005;
-  var a16006;
-  var a16007;
-  var a16008;
-  var a16009;
-  var a16010;
-  var a16011;
-  var a16012;
-  var a16013;
-  var a16014;
-  var a16015;
-  var a16016;
-  var a16017;
-  var a16018;
-  var a16019;
-  var a16020;
-  var a16021;
-  var a16022;
-  var a16023;
-  var a16024;
-  var a16025;
-  var a16026;
-  var a16027;
-  var a16028;
-  var a16029;
-  var a16030;
-  var a16031;
-  var a16032;
-  var a16033;
-  var a16034;
-  var a16035;
-  var a16036;
-  var a16037;
-  var a16038;
-  var a16039;
-  var a16040;
-  var a16041;
-  var a16042;
-  var a16043;
-  var a16044;
-  var a16045;
-  var a16046;
-  var a16047;
-  var a16048;
-  var a16049;
-  var a16050;
-  var a16051;
-  var a16052;
-  var a16053;
-  var a16054;
-  var a16055;
-  var a16056;
-  var a16057;
-  var a16058;
-  var a16059;
-  var a16060;
-  var a16061;
-  var a16062;
-  var a16063;
-  var a16064;
-  var a16065;
-  var a16066;
-  var a16067;
-  var a16068;
-  var a16069;
-  var a16070;
-  var a16071;
-  var a16072;
-  var a16073;
-  var a16074;
-  var a16075;
-  var a16076;
-  var a16077;
-  var a16078;
-  var a16079;
-  var a16080;
-  var a16081;
-  var a16082;
-  var a16083;
-  var a16084;
-  var a16085;
-  var a16086;
-  var a16087;
-  var a16088;
-  var a16089;
-  var a16090;
-  var a16091;
-  var a16092;
-  var a16093;
-  var a16094;
-  var a16095;
-  var a16096;
-  var a16097;
-  var a16098;
-  var a16099;
-  var a16100;
-  var a16101;
-  var a16102;
-  var a16103;
-  var a16104;
-  var a16105;
-  var a16106;
-  var a16107;
-  var a16108;
-  var a16109;
-  var a16110;
-  var a16111;
-  var a16112;
-  var a16113;
-  var a16114;
-  var a16115;
-  var a16116;
-  var a16117;
-  var a16118;
-  var a16119;
-  var a16120;
-  var a16121;
-  var a16122;
-  var a16123;
-  var a16124;
-  var a16125;
-  var a16126;
-  var a16127;
-  var a16128;
-  var a16129;
-  var a16130;
-  var a16131;
-  var a16132;
-  var a16133;
-  var a16134;
-  var a16135;
-  var a16136;
-  var a16137;
-  var a16138;
-  var a16139;
-  var a16140;
-  var a16141;
-  var a16142;
-  var a16143;
-  var a16144;
-  var a16145;
-  var a16146;
-  var a16147;
-  var a16148;
-  var a16149;
-  var a16150;
-  var a16151;
-  var a16152;
-  var a16153;
-  var a16154;
-  var a16155;
-  var a16156;
-  var a16157;
-  var a16158;
-  var a16159;
-  var a16160;
-  var a16161;
-  var a16162;
-  var a16163;
-  var a16164;
-  var a16165;
-  var a16166;
-  var a16167;
-  var a16168;
-  var a16169;
-  var a16170;
-  var a16171;
-  var a16172;
-  var a16173;
-  var a16174;
-  var a16175;
-  var a16176;
-  var a16177;
-  var a16178;
-  var a16179;
-  var a16180;
-  var a16181;
-  var a16182;
-  var a16183;
-  var a16184;
-  var a16185;
-  var a16186;
-  var a16187;
-  var a16188;
-  var a16189;
-  var a16190;
-  var a16191;
-  var a16192;
-  var a16193;
-  var a16194;
-  var a16195;
-  var a16196;
-  var a16197;
-  var a16198;
-  var a16199;
-  var a16200;
-  var a16201;
-  var a16202;
-  var a16203;
-  var a16204;
-  var a16205;
-  var a16206;
-  var a16207;
-  var a16208;
-  var a16209;
-  var a16210;
-  var a16211;
-  var a16212;
-  var a16213;
-  var a16214;
-  var a16215;
-  var a16216;
-  var a16217;
-  var a16218;
-  var a16219;
-  var a16220;
-  var a16221;
-  var a16222;
-  var a16223;
-  var a16224;
-  var a16225;
-  var a16226;
-  var a16227;
-  var a16228;
-  var a16229;
-  var a16230;
-  var a16231;
-  var a16232;
-  var a16233;
-  var a16234;
-  var a16235;
-  var a16236;
-  var a16237;
-  var a16238;
-  var a16239;
-  var a16240;
-  var a16241;
-  var a16242;
-  var a16243;
-  var a16244;
-  var a16245;
-  var a16246;
-  var a16247;
-  var a16248;
-  var a16249;
-  var a16250;
-  var a16251;
-  var a16252;
-  var a16253;
-  var a16254;
-  var a16255;
-  var a16256;
-  var a16257;
-  var a16258;
-  var a16259;
-  var a16260;
-  var a16261;
-  var a16262;
-  var a16263;
-  var a16264;
-  var a16265;
-  var a16266;
-  var a16267;
-  var a16268;
-  var a16269;
-  var a16270;
-  var a16271;
-  var a16272;
-  var a16273;
-  var a16274;
-  var a16275;
-  var a16276;
-  var a16277;
-  var a16278;
-  var a16279;
-  var a16280;
-  var a16281;
-  var a16282;
-  var a16283;
-  var a16284;
-  var a16285;
-  var a16286;
-  var a16287;
-  var a16288;
-  var a16289;
-  var a16290;
-  var a16291;
-  var a16292;
-  var a16293;
-  var a16294;
-  var a16295;
-  var a16296;
-  var a16297;
-  var a16298;
-  var a16299;
-  var a16300;
-  var a16301;
-  var a16302;
-  var a16303;
-  var a16304;
-  var a16305;
-  var a16306;
-  var a16307;
-  var a16308;
-  var a16309;
-  var a16310;
-  var a16311;
-  var a16312;
-  var a16313;
-  var a16314;
-  var a16315;
-  var a16316;
-  var a16317;
-  var a16318;
-  var a16319;
-  var a16320;
-  var a16321;
-  var a16322;
-  var a16323;
-  var a16324;
-  var a16325;
-  var a16326;
-  var a16327;
-  var a16328;
-  var a16329;
-  var a16330;
-  var a16331;
-  var a16332;
-  var a16333;
-  var a16334;
-  var a16335;
-  var a16336;
-  var a16337;
-  var a16338;
-  var a16339;
-  var a16340;
-  var a16341;
-  var a16342;
-  var a16343;
-  var a16344;
-  var a16345;
-  var a16346;
-  var a16347;
-  var a16348;
-  var a16349;
-  var a16350;
-  var a16351;
-  var a16352;
-  var a16353;
-  var a16354;
-  var a16355;
-  var a16356;
-  var a16357;
-  var a16358;
-  var a16359;
-  var a16360;
-  var a16361;
-  var a16362;
-  var a16363;
-  var a16364;
-  var a16365;
-  var a16366;
-  var a16367;
-  var a16368;
-  var a16369;
-  var a16370;
-  var a16371;
-  var a16372;
-  var a16373;
-  var a16374;
-  var a16375;
-  var a16376;
-  var a16377;
-  var a16378;
-  var a16379;
-  var a16380;
-  var a16381;
-  var a16382;
-  var a16383;
-  var a16384;
-  var a16385;
-  var a16386;
-  var a16387;
-  var a16388;
-  var a16389;
-  var a16390;
-  var a16391;
-  var a16392;
-  var a16393;
-  var a16394;
-  var a16395;
-  var a16396;
-  var a16397;
-  var a16398;
-  var a16399;
-  var a16400;
-  var a16401;
-  var a16402;
-  var a16403;
-  var a16404;
-  var a16405;
-  var a16406;
-  var a16407;
-  var a16408;
-  var a16409;
-  var a16410;
-  var a16411;
-  var a16412;
-  var a16413;
-  var a16414;
-  var a16415;
-  var a16416;
-  var a16417;
-  var a16418;
-  var a16419;
-  var a16420;
-  var a16421;
-  var a16422;
-  var a16423;
-  var a16424;
-  var a16425;
-  var a16426;
-  var a16427;
-  var a16428;
-  var a16429;
-  var a16430;
-  var a16431;
-  var a16432;
-  var a16433;
-  var a16434;
-  var a16435;
-  var a16436;
-  var a16437;
-  var a16438;
-  var a16439;
-  var a16440;
-  var a16441;
-  var a16442;
-  var a16443;
-  var a16444;
-  var a16445;
-  var a16446;
-  var a16447;
-  var a16448;
-  var a16449;
-  var a16450;
-  var a16451;
-  var a16452;
-  var a16453;
-  var a16454;
-  var a16455;
-  var a16456;
-  var a16457;
-  var a16458;
-  var a16459;
-  var a16460;
-  var a16461;
-  var a16462;
-  var a16463;
-  var a16464;
-  var a16465;
-  var a16466;
-  var a16467;
-  var a16468;
-  var a16469;
-  var a16470;
-  var a16471;
-  var a16472;
-  var a16473;
-  var a16474;
-  var a16475;
-  var a16476;
-  var a16477;
-  var a16478;
-  var a16479;
-  var a16480;
-  var a16481;
-  var a16482;
-  var a16483;
-  var a16484;
-  var a16485;
-  var a16486;
-  var a16487;
-  var a16488;
-  var a16489;
-  var a16490;
-  var a16491;
-  var a16492;
-  var a16493;
-  var a16494;
-  var a16495;
-  var a16496;
-  var a16497;
-  var a16498;
-  var a16499;
-  var a16500;
-  var a16501;
-  var a16502;
-  var a16503;
-  var a16504;
-  var a16505;
-  var a16506;
-  var a16507;
-  var a16508;
-  var a16509;
-  var a16510;
-  var a16511;
-  var a16512;
-  var a16513;
-  var a16514;
-  var a16515;
-  var a16516;
-  var a16517;
-  var a16518;
-  var a16519;
-  var a16520;
-  var a16521;
-  var a16522;
-  var a16523;
-  var a16524;
-  var a16525;
-  var a16526;
-  var a16527;
-  var a16528;
-  var a16529;
-  var a16530;
-  var a16531;
-  var a16532;
-  var a16533;
-  var a16534;
-  var a16535;
-  var a16536;
-  var a16537;
-  var a16538;
-  var a16539;
-  var a16540;
-  var a16541;
-  var a16542;
-  var a16543;
-  var a16544;
-  var a16545;
-  var a16546;
-  var a16547;
-  var a16548;
-  var a16549;
-  var a16550;
-  var a16551;
-  var a16552;
-  var a16553;
-  var a16554;
-  var a16555;
-  var a16556;
-  var a16557;
-  var a16558;
-  var a16559;
-  var a16560;
-  var a16561;
-  var a16562;
-  var a16563;
-  var a16564;
-  var a16565;
-  var a16566;
-  var a16567;
-  var a16568;
-  var a16569;
-  var a16570;
-  var a16571;
-  var a16572;
-  var a16573;
-  var a16574;
-  var a16575;
-  var a16576;
-  var a16577;
-  var a16578;
-  var a16579;
-  var a16580;
-  var a16581;
-  var a16582;
-  var a16583;
-  var a16584;
-  var a16585;
-  var a16586;
-  var a16587;
-  var a16588;
-  var a16589;
-  var a16590;
-  var a16591;
-  var a16592;
-  var a16593;
-  var a16594;
-  var a16595;
-  var a16596;
-  var a16597;
-  var a16598;
-  var a16599;
-  var a16600;
-  var a16601;
-  var a16602;
-  var a16603;
-  var a16604;
-  var a16605;
-  var a16606;
-  var a16607;
-  var a16608;
-  var a16609;
-  var a16610;
-  var a16611;
-  var a16612;
-  var a16613;
-  var a16614;
-  var a16615;
-  var a16616;
-  var a16617;
-  var a16618;
-  var a16619;
-  var a16620;
-  var a16621;
-  var a16622;
-  var a16623;
-  var a16624;
-  var a16625;
-  var a16626;
-  var a16627;
-  var a16628;
-  var a16629;
-  var a16630;
-  var a16631;
-  var a16632;
-  var a16633;
-  var a16634;
-  var a16635;
-  var a16636;
-  var a16637;
-  var a16638;
-  var a16639;
-  var a16640;
-  var a16641;
-  var a16642;
-  var a16643;
-  var a16644;
-  var a16645;
-  var a16646;
-  var a16647;
-  var a16648;
-  var a16649;
-  var a16650;
-  var a16651;
-  var a16652;
-  var a16653;
-  var a16654;
-  var a16655;
-  var a16656;
-  var a16657;
-  var a16658;
-  var a16659;
-  var a16660;
-  var a16661;
-  var a16662;
-  var a16663;
-  var a16664;
-  var a16665;
-  var a16666;
-  var a16667;
-  var a16668;
-  var a16669;
-  var a16670;
-  var a16671;
-  var a16672;
-  var a16673;
-  var a16674;
-  var a16675;
-  var a16676;
-  var a16677;
-  var a16678;
-  var a16679;
-  var a16680;
-  var a16681;
-  var a16682;
-  var a16683;
-  var a16684;
-  var a16685;
-  var a16686;
-  var a16687;
-  var a16688;
-  var a16689;
-  var a16690;
-  var a16691;
-  var a16692;
-  var a16693;
-  var a16694;
-  var a16695;
-  var a16696;
-  var a16697;
-  var a16698;
-  var a16699;
-  var a16700;
-  var a16701;
-  var a16702;
-  var a16703;
-  var a16704;
-  var a16705;
-  var a16706;
-  var a16707;
-  var a16708;
-  var a16709;
-  var a16710;
-  var a16711;
-  var a16712;
-  var a16713;
-  var a16714;
-  var a16715;
-  var a16716;
-  var a16717;
-  var a16718;
-  var a16719;
-  var a16720;
-  var a16721;
-  var a16722;
-  var a16723;
-  var a16724;
-  var a16725;
-  var a16726;
-  var a16727;
-  var a16728;
-  var a16729;
-  var a16730;
-  var a16731;
-  var a16732;
-  var a16733;
-  var a16734;
-  var a16735;
-  var a16736;
-  var a16737;
-  var a16738;
-  var a16739;
-  var a16740;
-  var a16741;
-  var a16742;
-  var a16743;
-  var a16744;
-  var a16745;
-  var a16746;
-  var a16747;
-  var a16748;
-  var a16749;
-  var a16750;
-  var a16751;
-  var a16752;
-  var a16753;
-  var a16754;
-  var a16755;
-  var a16756;
-  var a16757;
-  var a16758;
-  var a16759;
-  var a16760;
-  var a16761;
-  var a16762;
-  var a16763;
-  var a16764;
-  var a16765;
-  var a16766;
-  var a16767;
-  var a16768;
-  var a16769;
-  var a16770;
-  var a16771;
-  var a16772;
-  var a16773;
-  var a16774;
-  var a16775;
-  var a16776;
-  var a16777;
-  var a16778;
-  var a16779;
-  var a16780;
-  var a16781;
-  var a16782;
-  var a16783;
-  var a16784;
-  var a16785;
-  var a16786;
-  var a16787;
-  var a16788;
-  var a16789;
-  var a16790;
-  var a16791;
-  var a16792;
-  var a16793;
-  var a16794;
-  var a16795;
-  var a16796;
-  var a16797;
-  var a16798;
-  var a16799;
-  var a16800;
-  var a16801;
-  var a16802;
-  var a16803;
-  var a16804;
-  var a16805;
-  var a16806;
-  var a16807;
-  var a16808;
-  var a16809;
-  var a16810;
-  var a16811;
-  var a16812;
-  var a16813;
-  var a16814;
-  var a16815;
-  var a16816;
-  var a16817;
-  var a16818;
-  var a16819;
-  var a16820;
-  var a16821;
-  var a16822;
-  var a16823;
-  var a16824;
-  var a16825;
-  var a16826;
-  var a16827;
-  var a16828;
-  var a16829;
-  var a16830;
-  var a16831;
-  var a16832;
-  var a16833;
-  var a16834;
-  var a16835;
-  var a16836;
-  var a16837;
-  var a16838;
-  var a16839;
-  var a16840;
-  var a16841;
-  var a16842;
-  var a16843;
-  var a16844;
-  var a16845;
-  var a16846;
-  var a16847;
-  var a16848;
-  var a16849;
-  var a16850;
-  var a16851;
-  var a16852;
-  var a16853;
-  var a16854;
-  var a16855;
-  var a16856;
-  var a16857;
-  var a16858;
-  var a16859;
-  var a16860;
-  var a16861;
-  var a16862;
-  var a16863;
-  var a16864;
-  var a16865;
-  var a16866;
-  var a16867;
-  var a16868;
-  var a16869;
-  var a16870;
-  var a16871;
-  var a16872;
-  var a16873;
-  var a16874;
-  var a16875;
-  var a16876;
-  var a16877;
-  var a16878;
-  var a16879;
-  var a16880;
-  var a16881;
-  var a16882;
-  var a16883;
-  var a16884;
-  var a16885;
-  var a16886;
-  var a16887;
-  var a16888;
-  var a16889;
-  var a16890;
-  var a16891;
-  var a16892;
-  var a16893;
-  var a16894;
-  var a16895;
-  var a16896;
-  var a16897;
-  var a16898;
-  var a16899;
-  var a16900;
-  var a16901;
-  var a16902;
-  var a16903;
-  var a16904;
-  var a16905;
-  var a16906;
-  var a16907;
-  var a16908;
-  var a16909;
-  var a16910;
-  var a16911;
-  var a16912;
-  var a16913;
-  var a16914;
-  var a16915;
-  var a16916;
-  var a16917;
-  var a16918;
-  var a16919;
-  var a16920;
-  var a16921;
-  var a16922;
-  var a16923;
-  var a16924;
-  var a16925;
-  var a16926;
-  var a16927;
-  var a16928;
-  var a16929;
-  var a16930;
-  var a16931;
-  var a16932;
-  var a16933;
-  var a16934;
-  var a16935;
-  var a16936;
-  var a16937;
-  var a16938;
-  var a16939;
-  var a16940;
-  var a16941;
-  var a16942;
-  var a16943;
-  var a16944;
-  var a16945;
-  var a16946;
-  var a16947;
-  var a16948;
-  var a16949;
-  var a16950;
-  var a16951;
-  var a16952;
-  var a16953;
-  var a16954;
-  var a16955;
-  var a16956;
-  var a16957;
-  var a16958;
-  var a16959;
-  var a16960;
-  var a16961;
-  var a16962;
-  var a16963;
-  var a16964;
-  var a16965;
-  var a16966;
-  var a16967;
-  var a16968;
-  var a16969;
-  var a16970;
-  var a16971;
-  var a16972;
-  var a16973;
-  var a16974;
-  var a16975;
-  var a16976;
-  var a16977;
-  var a16978;
-  var a16979;
-  var a16980;
-  var a16981;
-  var a16982;
-  var a16983;
-  var a16984;
-  var a16985;
-  var a16986;
-  var a16987;
-  var a16988;
-  var a16989;
-  var a16990;
-  var a16991;
-  var a16992;
-  var a16993;
-  var a16994;
-  var a16995;
-  var a16996;
-  var a16997;
-  var a16998;
-  var a16999;
-  var a17000;
-  var a17001;
-  var a17002;
-  var a17003;
-  var a17004;
-  var a17005;
-  var a17006;
-  var a17007;
-  var a17008;
-  var a17009;
-  var a17010;
-  var a17011;
-  var a17012;
-  var a17013;
-  var a17014;
-  var a17015;
-  var a17016;
-  var a17017;
-  var a17018;
-  var a17019;
-  var a17020;
-  var a17021;
-  var a17022;
-  var a17023;
-  var a17024;
-  var a17025;
-  var a17026;
-  var a17027;
-  var a17028;
-  var a17029;
-  var a17030;
-  var a17031;
-  var a17032;
-  var a17033;
-  var a17034;
-  var a17035;
-  var a17036;
-  var a17037;
-  var a17038;
-  var a17039;
-  var a17040;
-  var a17041;
-  var a17042;
-  var a17043;
-  var a17044;
-  var a17045;
-  var a17046;
-  var a17047;
-  var a17048;
-  var a17049;
-  var a17050;
-  var a17051;
-  var a17052;
-  var a17053;
-  var a17054;
-  var a17055;
-  var a17056;
-  var a17057;
-  var a17058;
-  var a17059;
-  var a17060;
-  var a17061;
-  var a17062;
-  var a17063;
-  var a17064;
-  var a17065;
-  var a17066;
-  var a17067;
-  var a17068;
-  var a17069;
-  var a17070;
-  var a17071;
-  var a17072;
-  var a17073;
-  var a17074;
-  var a17075;
-  var a17076;
-  var a17077;
-  var a17078;
-  var a17079;
-  var a17080;
-  var a17081;
-  var a17082;
-  var a17083;
-  var a17084;
-  var a17085;
-  var a17086;
-  var a17087;
-  var a17088;
-  var a17089;
-  var a17090;
-  var a17091;
-  var a17092;
-  var a17093;
-  var a17094;
-  var a17095;
-  var a17096;
-  var a17097;
-  var a17098;
-  var a17099;
-  var a17100;
-  var a17101;
-  var a17102;
-  var a17103;
-  var a17104;
-  var a17105;
-  var a17106;
-  var a17107;
-  var a17108;
-  var a17109;
-  var a17110;
-  var a17111;
-  var a17112;
-  var a17113;
-  var a17114;
-  var a17115;
-  var a17116;
-  var a17117;
-  var a17118;
-  var a17119;
-  var a17120;
-  var a17121;
-  var a17122;
-  var a17123;
-  var a17124;
-  var a17125;
-  var a17126;
-  var a17127;
-  var a17128;
-  var a17129;
-  var a17130;
-  var a17131;
-  var a17132;
-  var a17133;
-  var a17134;
-  var a17135;
-  var a17136;
-  var a17137;
-  var a17138;
-  var a17139;
-  var a17140;
-  var a17141;
-  var a17142;
-  var a17143;
-  var a17144;
-  var a17145;
-  var a17146;
-  var a17147;
-  var a17148;
-  var a17149;
-  var a17150;
-  var a17151;
-  var a17152;
-  var a17153;
-  var a17154;
-  var a17155;
-  var a17156;
-  var a17157;
-  var a17158;
-  var a17159;
-  var a17160;
-  var a17161;
-  var a17162;
-  var a17163;
-  var a17164;
-  var a17165;
-  var a17166;
-  var a17167;
-  var a17168;
-  var a17169;
-  var a17170;
-  var a17171;
-  var a17172;
-  var a17173;
-  var a17174;
-  var a17175;
-  var a17176;
-  var a17177;
-  var a17178;
-  var a17179;
-  var a17180;
-  var a17181;
-  var a17182;
-  var a17183;
-  var a17184;
-  var a17185;
-  var a17186;
-  var a17187;
-  var a17188;
-  var a17189;
-  var a17190;
-  var a17191;
-  var a17192;
-  var a17193;
-  var a17194;
-  var a17195;
-  var a17196;
-  var a17197;
-  var a17198;
-  var a17199;
-  var a17200;
-  var a17201;
-  var a17202;
-  var a17203;
-  var a17204;
-  var a17205;
-  var a17206;
-  var a17207;
-  var a17208;
-  var a17209;
-  var a17210;
-  var a17211;
-  var a17212;
-  var a17213;
-  var a17214;
-  var a17215;
-  var a17216;
-  var a17217;
-  var a17218;
-  var a17219;
-  var a17220;
-  var a17221;
-  var a17222;
-  var a17223;
-  var a17224;
-  var a17225;
-  var a17226;
-  var a17227;
-  var a17228;
-  var a17229;
-  var a17230;
-  var a17231;
-  var a17232;
-  var a17233;
-  var a17234;
-  var a17235;
-  var a17236;
-  var a17237;
-  var a17238;
-  var a17239;
-  var a17240;
-  var a17241;
-  var a17242;
-  var a17243;
-  var a17244;
-  var a17245;
-  var a17246;
-  var a17247;
-  var a17248;
-  var a17249;
-  var a17250;
-  var a17251;
-  var a17252;
-  var a17253;
-  var a17254;
-  var a17255;
-  var a17256;
-  var a17257;
-  var a17258;
-  var a17259;
-  var a17260;
-  var a17261;
-  var a17262;
-  var a17263;
-  var a17264;
-  var a17265;
-  var a17266;
-  var a17267;
-  var a17268;
-  var a17269;
-  var a17270;
-  var a17271;
-  var a17272;
-  var a17273;
-  var a17274;
-  var a17275;
-  var a17276;
-  var a17277;
-  var a17278;
-  var a17279;
-  var a17280;
-  var a17281;
-  var a17282;
-  var a17283;
-  var a17284;
-  var a17285;
-  var a17286;
-  var a17287;
-  var a17288;
-  var a17289;
-  var a17290;
-  var a17291;
-  var a17292;
-  var a17293;
-  var a17294;
-  var a17295;
-  var a17296;
-  var a17297;
-  var a17298;
-  var a17299;
-  var a17300;
-  var a17301;
-  var a17302;
-  var a17303;
-  var a17304;
-  var a17305;
-  var a17306;
-  var a17307;
-  var a17308;
-  var a17309;
-  var a17310;
-  var a17311;
-  var a17312;
-  var a17313;
-  var a17314;
-  var a17315;
-  var a17316;
-  var a17317;
-  var a17318;
-  var a17319;
-  var a17320;
-  var a17321;
-  var a17322;
-  var a17323;
-  var a17324;
-  var a17325;
-  var a17326;
-  var a17327;
-  var a17328;
-  var a17329;
-  var a17330;
-  var a17331;
-  var a17332;
-  var a17333;
-  var a17334;
-  var a17335;
-  var a17336;
-  var a17337;
-  var a17338;
-  var a17339;
-  var a17340;
-  var a17341;
-  var a17342;
-  var a17343;
-  var a17344;
-  var a17345;
-  var a17346;
-  var a17347;
-  var a17348;
-  var a17349;
-  var a17350;
-  var a17351;
-  var a17352;
-  var a17353;
-  var a17354;
-  var a17355;
-  var a17356;
-  var a17357;
-  var a17358;
-  var a17359;
-  var a17360;
-  var a17361;
-  var a17362;
-  var a17363;
-  var a17364;
-  var a17365;
-  var a17366;
-  var a17367;
-  var a17368;
-  var a17369;
-  var a17370;
-  var a17371;
-  var a17372;
-  var a17373;
-  var a17374;
-  var a17375;
-  var a17376;
-  var a17377;
-  var a17378;
-  var a17379;
-  var a17380;
-  var a17381;
-  var a17382;
-  var a17383;
-  var a17384;
-  var a17385;
-  var a17386;
-  var a17387;
-  var a17388;
-  var a17389;
-  var a17390;
-  var a17391;
-  var a17392;
-  var a17393;
-  var a17394;
-  var a17395;
-  var a17396;
-  var a17397;
-  var a17398;
-  var a17399;
-  var a17400;
-  var a17401;
-  var a17402;
-  var a17403;
-  var a17404;
-  var a17405;
-  var a17406;
-  var a17407;
-  var a17408;
-  var a17409;
-  var a17410;
-  var a17411;
-  var a17412;
-  var a17413;
-  var a17414;
-  var a17415;
-  var a17416;
-  var a17417;
-  var a17418;
-  var a17419;
-  var a17420;
-  var a17421;
-  var a17422;
-  var a17423;
-  var a17424;
-  var a17425;
-  var a17426;
-  var a17427;
-  var a17428;
-  var a17429;
-  var a17430;
-  var a17431;
-  var a17432;
-  var a17433;
-  var a17434;
-  var a17435;
-  var a17436;
-  var a17437;
-  var a17438;
-  var a17439;
-  var a17440;
-  var a17441;
-  var a17442;
-  var a17443;
-  var a17444;
-  var a17445;
-  var a17446;
-  var a17447;
-  var a17448;
-  var a17449;
-  var a17450;
-  var a17451;
-  var a17452;
-  var a17453;
-  var a17454;
-  var a17455;
-  var a17456;
-  var a17457;
-  var a17458;
-  var a17459;
-  var a17460;
-  var a17461;
-  var a17462;
-  var a17463;
-  var a17464;
-  var a17465;
-  var a17466;
-  var a17467;
-  var a17468;
-  var a17469;
-  var a17470;
-  var a17471;
-  var a17472;
-  var a17473;
-  var a17474;
-  var a17475;
-  var a17476;
-  var a17477;
-  var a17478;
-  var a17479;
-  var a17480;
-  var a17481;
-  var a17482;
-  var a17483;
-  var a17484;
-  var a17485;
-  var a17486;
-  var a17487;
-  var a17488;
-  var a17489;
-  var a17490;
-  var a17491;
-  var a17492;
-  var a17493;
-  var a17494;
-  var a17495;
-  var a17496;
-  var a17497;
-  var a17498;
-  var a17499;
-  var a17500;
-  var a17501;
-  var a17502;
-  var a17503;
-  var a17504;
-  var a17505;
-  var a17506;
-  var a17507;
-  var a17508;
-  var a17509;
-  var a17510;
-  var a17511;
-  var a17512;
-  var a17513;
-  var a17514;
-  var a17515;
-  var a17516;
-  var a17517;
-  var a17518;
-  var a17519;
-  var a17520;
-  var a17521;
-  var a17522;
-  var a17523;
-  var a17524;
-  var a17525;
-  var a17526;
-  var a17527;
-  var a17528;
-  var a17529;
-  var a17530;
-  var a17531;
-  var a17532;
-  var a17533;
-  var a17534;
-  var a17535;
-  var a17536;
-  var a17537;
-  var a17538;
-  var a17539;
-  var a17540;
-  var a17541;
-  var a17542;
-  var a17543;
-  var a17544;
-  var a17545;
-  var a17546;
-  var a17547;
-  var a17548;
-  var a17549;
-  var a17550;
-  var a17551;
-  var a17552;
-  var a17553;
-  var a17554;
-  var a17555;
-  var a17556;
-  var a17557;
-  var a17558;
-  var a17559;
-  var a17560;
-  var a17561;
-  var a17562;
-  var a17563;
-  var a17564;
-  var a17565;
-  var a17566;
-  var a17567;
-  var a17568;
-  var a17569;
-  var a17570;
-  var a17571;
-  var a17572;
-  var a17573;
-  var a17574;
-  var a17575;
-  var a17576;
-  var a17577;
-  var a17578;
-  var a17579;
-  var a17580;
-  var a17581;
-  var a17582;
-  var a17583;
-  var a17584;
-  var a17585;
-  var a17586;
-  var a17587;
-  var a17588;
-  var a17589;
-  var a17590;
-  var a17591;
-  var a17592;
-  var a17593;
-  var a17594;
-  var a17595;
-  var a17596;
-  var a17597;
-  var a17598;
-  var a17599;
-  var a17600;
-  var a17601;
-  var a17602;
-  var a17603;
-  var a17604;
-  var a17605;
-  var a17606;
-  var a17607;
-  var a17608;
-  var a17609;
-  var a17610;
-  var a17611;
-  var a17612;
-  var a17613;
-  var a17614;
-  var a17615;
-  var a17616;
-  var a17617;
-  var a17618;
-  var a17619;
-  var a17620;
-  var a17621;
-  var a17622;
-  var a17623;
-  var a17624;
-  var a17625;
-  var a17626;
-  var a17627;
-  var a17628;
-  var a17629;
-  var a17630;
-  var a17631;
-  var a17632;
-  var a17633;
-  var a17634;
-  var a17635;
-  var a17636;
-  var a17637;
-  var a17638;
-  var a17639;
-  var a17640;
-  var a17641;
-  var a17642;
-  var a17643;
-  var a17644;
-  var a17645;
-  var a17646;
-  var a17647;
-  var a17648;
-  var a17649;
-  var a17650;
-  var a17651;
-  var a17652;
-  var a17653;
-  var a17654;
-  var a17655;
-  var a17656;
-  var a17657;
-  var a17658;
-  var a17659;
-  var a17660;
-  var a17661;
-  var a17662;
-  var a17663;
-  var a17664;
-  var a17665;
-  var a17666;
-  var a17667;
-  var a17668;
-  var a17669;
-  var a17670;
-  var a17671;
-  var a17672;
-  var a17673;
-  var a17674;
-  var a17675;
-  var a17676;
-  var a17677;
-  var a17678;
-  var a17679;
-  var a17680;
-  var a17681;
-  var a17682;
-  var a17683;
-  var a17684;
-  var a17685;
-  var a17686;
-  var a17687;
-  var a17688;
-  var a17689;
-  var a17690;
-  var a17691;
-  var a17692;
-  var a17693;
-  var a17694;
-  var a17695;
-  var a17696;
-  var a17697;
-  var a17698;
-  var a17699;
-  var a17700;
-  var a17701;
-  var a17702;
-  var a17703;
-  var a17704;
-  var a17705;
-  var a17706;
-  var a17707;
-  var a17708;
-  var a17709;
-  var a17710;
-  var a17711;
-  var a17712;
-  var a17713;
-  var a17714;
-  var a17715;
-  var a17716;
-  var a17717;
-  var a17718;
-  var a17719;
-  var a17720;
-  var a17721;
-  var a17722;
-  var a17723;
-  var a17724;
-  var a17725;
-  var a17726;
-  var a17727;
-  var a17728;
-  var a17729;
-  var a17730;
-  var a17731;
-  var a17732;
-  var a17733;
-  var a17734;
-  var a17735;
-  var a17736;
-  var a17737;
-  var a17738;
-  var a17739;
-  var a17740;
-  var a17741;
-  var a17742;
-  var a17743;
-  var a17744;
-  var a17745;
-  var a17746;
-  var a17747;
-  var a17748;
-  var a17749;
-  var a17750;
-  var a17751;
-  var a17752;
-  var a17753;
-  var a17754;
-  var a17755;
-  var a17756;
-  var a17757;
-  var a17758;
-  var a17759;
-  var a17760;
-  var a17761;
-  var a17762;
-  var a17763;
-  var a17764;
-  var a17765;
-  var a17766;
-  var a17767;
-  var a17768;
-  var a17769;
-  var a17770;
-  var a17771;
-  var a17772;
-  var a17773;
-  var a17774;
-  var a17775;
-  var a17776;
-  var a17777;
-  var a17778;
-  var a17779;
-  var a17780;
-  var a17781;
-  var a17782;
-  var a17783;
-  var a17784;
-  var a17785;
-  var a17786;
-  var a17787;
-  var a17788;
-  var a17789;
-  var a17790;
-  var a17791;
-  var a17792;
-  var a17793;
-  var a17794;
-  var a17795;
-  var a17796;
-  var a17797;
-  var a17798;
-  var a17799;
-  var a17800;
-  var a17801;
-  var a17802;
-  var a17803;
-  var a17804;
-  var a17805;
-  var a17806;
-  var a17807;
-  var a17808;
-  var a17809;
-  var a17810;
-  var a17811;
-  var a17812;
-  var a17813;
-  var a17814;
-  var a17815;
-  var a17816;
-  var a17817;
-  var a17818;
-  var a17819;
-  var a17820;
-  var a17821;
-  var a17822;
-  var a17823;
-  var a17824;
-  var a17825;
-  var a17826;
-  var a17827;
-  var a17828;
-  var a17829;
-  var a17830;
-  var a17831;
-  var a17832;
-  var a17833;
-  var a17834;
-  var a17835;
-  var a17836;
-  var a17837;
-  var a17838;
-  var a17839;
-  var a17840;
-  var a17841;
-  var a17842;
-  var a17843;
-  var a17844;
-  var a17845;
-  var a17846;
-  var a17847;
-  var a17848;
-  var a17849;
-  var a17850;
-  var a17851;
-  var a17852;
-  var a17853;
-  var a17854;
-  var a17855;
-  var a17856;
-  var a17857;
-  var a17858;
-  var a17859;
-  var a17860;
-  var a17861;
-  var a17862;
-  var a17863;
-  var a17864;
-  var a17865;
-  var a17866;
-  var a17867;
-  var a17868;
-  var a17869;
-  var a17870;
-  var a17871;
-  var a17872;
-  var a17873;
-  var a17874;
-  var a17875;
-  var a17876;
-  var a17877;
-  var a17878;
-  var a17879;
-  var a17880;
-  var a17881;
-  var a17882;
-  var a17883;
-  var a17884;
-  var a17885;
-  var a17886;
-  var a17887;
-  var a17888;
-  var a17889;
-  var a17890;
-  var a17891;
-  var a17892;
-  var a17893;
-  var a17894;
-  var a17895;
-  var a17896;
-  var a17897;
-  var a17898;
-  var a17899;
-  var a17900;
-  var a17901;
-  var a17902;
-  var a17903;
-  var a17904;
-  var a17905;
-  var a17906;
-  var a17907;
-  var a17908;
-  var a17909;
-  var a17910;
-  var a17911;
-  var a17912;
-  var a17913;
-  var a17914;
-  var a17915;
-  var a17916;
-  var a17917;
-  var a17918;
-  var a17919;
-  var a17920;
-  var a17921;
-  var a17922;
-  var a17923;
-  var a17924;
-  var a17925;
-  var a17926;
-  var a17927;
-  var a17928;
-  var a17929;
-  var a17930;
-  var a17931;
-  var a17932;
-  var a17933;
-  var a17934;
-  var a17935;
-  var a17936;
-  var a17937;
-  var a17938;
-  var a17939;
-  var a17940;
-  var a17941;
-  var a17942;
-  var a17943;
-  var a17944;
-  var a17945;
-  var a17946;
-  var a17947;
-  var a17948;
-  var a17949;
-  var a17950;
-  var a17951;
-  var a17952;
-  var a17953;
-  var a17954;
-  var a17955;
-  var a17956;
-  var a17957;
-  var a17958;
-  var a17959;
-  var a17960;
-  var a17961;
-  var a17962;
-  var a17963;
-  var a17964;
-  var a17965;
-  var a17966;
-  var a17967;
-  var a17968;
-  var a17969;
-  var a17970;
-  var a17971;
-  var a17972;
-  var a17973;
-  var a17974;
-  var a17975;
-  var a17976;
-  var a17977;
-  var a17978;
-  var a17979;
-  var a17980;
-  var a17981;
-  var a17982;
-  var a17983;
-  var a17984;
-  var a17985;
-  var a17986;
-  var a17987;
-  var a17988;
-  var a17989;
-  var a17990;
-  var a17991;
-  var a17992;
-  var a17993;
-  var a17994;
-  var a17995;
-  var a17996;
-  var a17997;
-  var a17998;
-  var a17999;
-  var a18000;
-  var a18001;
-  var a18002;
-  var a18003;
-  var a18004;
-  var a18005;
-  var a18006;
-  var a18007;
-  var a18008;
-  var a18009;
-  var a18010;
-  var a18011;
-  var a18012;
-  var a18013;
-  var a18014;
-  var a18015;
-  var a18016;
-  var a18017;
-  var a18018;
-  var a18019;
-  var a18020;
-  var a18021;
-  var a18022;
-  var a18023;
-  var a18024;
-  var a18025;
-  var a18026;
-  var a18027;
-  var a18028;
-  var a18029;
-  var a18030;
-  var a18031;
-  var a18032;
-  var a18033;
-  var a18034;
-  var a18035;
-  var a18036;
-  var a18037;
-  var a18038;
-  var a18039;
-  var a18040;
-  var a18041;
-  var a18042;
-  var a18043;
-  var a18044;
-  var a18045;
-  var a18046;
-  var a18047;
-  var a18048;
-  var a18049;
-  var a18050;
-  var a18051;
-  var a18052;
-  var a18053;
-  var a18054;
-  var a18055;
-  var a18056;
-  var a18057;
-  var a18058;
-  var a18059;
-  var a18060;
-  var a18061;
-  var a18062;
-  var a18063;
-  var a18064;
-  var a18065;
-  var a18066;
-  var a18067;
-  var a18068;
-  var a18069;
-  var a18070;
-  var a18071;
-  var a18072;
-  var a18073;
-  var a18074;
-  var a18075;
-  var a18076;
-  var a18077;
-  var a18078;
-  var a18079;
-  var a18080;
-  var a18081;
-  var a18082;
-  var a18083;
-  var a18084;
-  var a18085;
-  var a18086;
-  var a18087;
-  var a18088;
-  var a18089;
-  var a18090;
-  var a18091;
-  var a18092;
-  var a18093;
-  var a18094;
-  var a18095;
-  var a18096;
-  var a18097;
-  var a18098;
-  var a18099;
-  var a18100;
-  var a18101;
-  var a18102;
-  var a18103;
-  var a18104;
-  var a18105;
-  var a18106;
-  var a18107;
-  var a18108;
-  var a18109;
-  var a18110;
-  var a18111;
-  var a18112;
-  var a18113;
-  var a18114;
-  var a18115;
-  var a18116;
-  var a18117;
-  var a18118;
-  var a18119;
-  var a18120;
-  var a18121;
-  var a18122;
-  var a18123;
-  var a18124;
-  var a18125;
-  var a18126;
-  var a18127;
-  var a18128;
-  var a18129;
-  var a18130;
-  var a18131;
-  var a18132;
-  var a18133;
-  var a18134;
-  var a18135;
-  var a18136;
-  var a18137;
-  var a18138;
-  var a18139;
-  var a18140;
-  var a18141;
-  var a18142;
-  var a18143;
-  var a18144;
-  var a18145;
-  var a18146;
-  var a18147;
-  var a18148;
-  var a18149;
-  var a18150;
-  var a18151;
-  var a18152;
-  var a18153;
-  var a18154;
-  var a18155;
-  var a18156;
-  var a18157;
-  var a18158;
-  var a18159;
-  var a18160;
-  var a18161;
-  var a18162;
-  var a18163;
-  var a18164;
-  var a18165;
-  var a18166;
-  var a18167;
-  var a18168;
-  var a18169;
-  var a18170;
-  var a18171;
-  var a18172;
-  var a18173;
-  var a18174;
-  var a18175;
-  var a18176;
-  var a18177;
-  var a18178;
-  var a18179;
-  var a18180;
-  var a18181;
-  var a18182;
-  var a18183;
-  var a18184;
-  var a18185;
-  var a18186;
-  var a18187;
-  var a18188;
-  var a18189;
-  var a18190;
-  var a18191;
-  var a18192;
-  var a18193;
-  var a18194;
-  var a18195;
-  var a18196;
-  var a18197;
-  var a18198;
-  var a18199;
-  var a18200;
-  var a18201;
-  var a18202;
-  var a18203;
-  var a18204;
-  var a18205;
-  var a18206;
-  var a18207;
-  var a18208;
-  var a18209;
-  var a18210;
-  var a18211;
-  var a18212;
-  var a18213;
-  var a18214;
-  var a18215;
-  var a18216;
-  var a18217;
-  var a18218;
-  var a18219;
-  var a18220;
-  var a18221;
-  var a18222;
-  var a18223;
-  var a18224;
-  var a18225;
-  var a18226;
-  var a18227;
-  var a18228;
-  var a18229;
-  var a18230;
-  var a18231;
-  var a18232;
-  var a18233;
-  var a18234;
-  var a18235;
-  var a18236;
-  var a18237;
-  var a18238;
-  var a18239;
-  var a18240;
-  var a18241;
-  var a18242;
-  var a18243;
-  var a18244;
-  var a18245;
-  var a18246;
-  var a18247;
-  var a18248;
-  var a18249;
-  var a18250;
-  var a18251;
-  var a18252;
-  var a18253;
-  var a18254;
-  var a18255;
-  var a18256;
-  var a18257;
-  var a18258;
-  var a18259;
-  var a18260;
-  var a18261;
-  var a18262;
-  var a18263;
-  var a18264;
-  var a18265;
-  var a18266;
-  var a18267;
-  var a18268;
-  var a18269;
-  var a18270;
-  var a18271;
-  var a18272;
-  var a18273;
-  var a18274;
-  var a18275;
-  var a18276;
-  var a18277;
-  var a18278;
-  var a18279;
-  var a18280;
-  var a18281;
-  var a18282;
-  var a18283;
-  var a18284;
-  var a18285;
-  var a18286;
-  var a18287;
-  var a18288;
-  var a18289;
-  var a18290;
-  var a18291;
-  var a18292;
-  var a18293;
-  var a18294;
-  var a18295;
-  var a18296;
-  var a18297;
-  var a18298;
-  var a18299;
-  var a18300;
-  var a18301;
-  var a18302;
-  var a18303;
-  var a18304;
-  var a18305;
-  var a18306;
-  var a18307;
-  var a18308;
-  var a18309;
-  var a18310;
-  var a18311;
-  var a18312;
-  var a18313;
-  var a18314;
-  var a18315;
-  var a18316;
-  var a18317;
-  var a18318;
-  var a18319;
-  var a18320;
-  var a18321;
-  var a18322;
-  var a18323;
-  var a18324;
-  var a18325;
-  var a18326;
-  var a18327;
-  var a18328;
-  var a18329;
-  var a18330;
-  var a18331;
-  var a18332;
-  var a18333;
-  var a18334;
-  var a18335;
-  var a18336;
-  var a18337;
-  var a18338;
-  var a18339;
-  var a18340;
-  var a18341;
-  var a18342;
-  var a18343;
-  var a18344;
-  var a18345;
-  var a18346;
-  var a18347;
-  var a18348;
-  var a18349;
-  var a18350;
-  var a18351;
-  var a18352;
-  var a18353;
-  var a18354;
-  var a18355;
-  var a18356;
-  var a18357;
-  var a18358;
-  var a18359;
-  var a18360;
-  var a18361;
-  var a18362;
-  var a18363;
-  var a18364;
-  var a18365;
-  var a18366;
-  var a18367;
-  var a18368;
-  var a18369;
-  var a18370;
-  var a18371;
-  var a18372;
-  var a18373;
-  var a18374;
-  var a18375;
-  var a18376;
-  var a18377;
-  var a18378;
-  var a18379;
-  var a18380;
-  var a18381;
-  var a18382;
-  var a18383;
-  var a18384;
-  var a18385;
-  var a18386;
-  var a18387;
-  var a18388;
-  var a18389;
-  var a18390;
-  var a18391;
-  var a18392;
-  var a18393;
-  var a18394;
-  var a18395;
-  var a18396;
-  var a18397;
-  var a18398;
-  var a18399;
-  var a18400;
-  var a18401;
-  var a18402;
-  var a18403;
-  var a18404;
-  var a18405;
-  var a18406;
-  var a18407;
-  var a18408;
-  var a18409;
-  var a18410;
-  var a18411;
-  var a18412;
-  var a18413;
-  var a18414;
-  var a18415;
-  var a18416;
-  var a18417;
-  var a18418;
-  var a18419;
-  var a18420;
-  var a18421;
-  var a18422;
-  var a18423;
-  var a18424;
-  var a18425;
-  var a18426;
-  var a18427;
-  var a18428;
-  var a18429;
-  var a18430;
-  var a18431;
-  var a18432;
-  var a18433;
-  var a18434;
-  var a18435;
-  var a18436;
-  var a18437;
-  var a18438;
-  var a18439;
-  var a18440;
-  var a18441;
-  var a18442;
-  var a18443;
-  var a18444;
-  var a18445;
-  var a18446;
-  var a18447;
-  var a18448;
-  var a18449;
-  var a18450;
-  var a18451;
-  var a18452;
-  var a18453;
-  var a18454;
-  var a18455;
-  var a18456;
-  var a18457;
-  var a18458;
-  var a18459;
-  var a18460;
-  var a18461;
-  var a18462;
-  var a18463;
-  var a18464;
-  var a18465;
-  var a18466;
-  var a18467;
-  var a18468;
-  var a18469;
-  var a18470;
-  var a18471;
-  var a18472;
-  var a18473;
-  var a18474;
-  var a18475;
-  var a18476;
-  var a18477;
-  var a18478;
-  var a18479;
-  var a18480;
-  var a18481;
-  var a18482;
-  var a18483;
-  var a18484;
-  var a18485;
-  var a18486;
-  var a18487;
-  var a18488;
-  var a18489;
-  var a18490;
-  var a18491;
-  var a18492;
-  var a18493;
-  var a18494;
-  var a18495;
-  var a18496;
-  var a18497;
-  var a18498;
-  var a18499;
-  var a18500;
-  var a18501;
-  var a18502;
-  var a18503;
-  var a18504;
-  var a18505;
-  var a18506;
-  var a18507;
-  var a18508;
-  var a18509;
-  var a18510;
-  var a18511;
-  var a18512;
-  var a18513;
-  var a18514;
-  var a18515;
-  var a18516;
-  var a18517;
-  var a18518;
-  var a18519;
-  var a18520;
-  var a18521;
-  var a18522;
-  var a18523;
-  var a18524;
-  var a18525;
-  var a18526;
-  var a18527;
-  var a18528;
-  var a18529;
-  var a18530;
-  var a18531;
-  var a18532;
-  var a18533;
-  var a18534;
-  var a18535;
-  var a18536;
-  var a18537;
-  var a18538;
-  var a18539;
-  var a18540;
-  var a18541;
-  var a18542;
-  var a18543;
-  var a18544;
-  var a18545;
-  var a18546;
-  var a18547;
-  var a18548;
-  var a18549;
-  var a18550;
-  var a18551;
-  var a18552;
-  var a18553;
-  var a18554;
-  var a18555;
-  var a18556;
-  var a18557;
-  var a18558;
-  var a18559;
-  var a18560;
-  var a18561;
-  var a18562;
-  var a18563;
-  var a18564;
-  var a18565;
-  var a18566;
-  var a18567;
-  var a18568;
-  var a18569;
-  var a18570;
-  var a18571;
-  var a18572;
-  var a18573;
-  var a18574;
-  var a18575;
-  var a18576;
-  var a18577;
-  var a18578;
-  var a18579;
-  var a18580;
-  var a18581;
-  var a18582;
-  var a18583;
-  var a18584;
-  var a18585;
-  var a18586;
-  var a18587;
-  var a18588;
-  var a18589;
-  var a18590;
-  var a18591;
-  var a18592;
-  var a18593;
-  var a18594;
-  var a18595;
-  var a18596;
-  var a18597;
-  var a18598;
-  var a18599;
-  var a18600;
-  var a18601;
-  var a18602;
-  var a18603;
-  var a18604;
-  var a18605;
-  var a18606;
-  var a18607;
-  var a18608;
-  var a18609;
-  var a18610;
-  var a18611;
-  var a18612;
-  var a18613;
-  var a18614;
-  var a18615;
-  var a18616;
-  var a18617;
-  var a18618;
-  var a18619;
-  var a18620;
-  var a18621;
-  var a18622;
-  var a18623;
-  var a18624;
-  var a18625;
-  var a18626;
-  var a18627;
-  var a18628;
-  var a18629;
-  var a18630;
-  var a18631;
-  var a18632;
-  var a18633;
-  var a18634;
-  var a18635;
-  var a18636;
-  var a18637;
-  var a18638;
-  var a18639;
-  var a18640;
-  var a18641;
-  var a18642;
-  var a18643;
-  var a18644;
-  var a18645;
-  var a18646;
-  var a18647;
-  var a18648;
-  var a18649;
-  var a18650;
-  var a18651;
-  var a18652;
-  var a18653;
-  var a18654;
-  var a18655;
-  var a18656;
-  var a18657;
-  var a18658;
-  var a18659;
-  var a18660;
-  var a18661;
-  var a18662;
-  var a18663;
-  var a18664;
-  var a18665;
-  var a18666;
-  var a18667;
-  var a18668;
-  var a18669;
-  var a18670;
-  var a18671;
-  var a18672;
-  var a18673;
-  var a18674;
-  var a18675;
-  var a18676;
-  var a18677;
-  var a18678;
-  var a18679;
-  var a18680;
-  var a18681;
-  var a18682;
-  var a18683;
-  var a18684;
-  var a18685;
-  var a18686;
-  var a18687;
-  var a18688;
-  var a18689;
-  var a18690;
-  var a18691;
-  var a18692;
-  var a18693;
-  var a18694;
-  var a18695;
-  var a18696;
-  var a18697;
-  var a18698;
-  var a18699;
-  var a18700;
-  var a18701;
-  var a18702;
-  var a18703;
-  var a18704;
-  var a18705;
-  var a18706;
-  var a18707;
-  var a18708;
-  var a18709;
-  var a18710;
-  var a18711;
-  var a18712;
-  var a18713;
-  var a18714;
-  var a18715;
-  var a18716;
-  var a18717;
-  var a18718;
-  var a18719;
-  var a18720;
-  var a18721;
-  var a18722;
-  var a18723;
-  var a18724;
-  var a18725;
-  var a18726;
-  var a18727;
-  var a18728;
-  var a18729;
-  var a18730;
-  var a18731;
-  var a18732;
-  var a18733;
-  var a18734;
-  var a18735;
-  var a18736;
-  var a18737;
-  var a18738;
-  var a18739;
-  var a18740;
-  var a18741;
-  var a18742;
-  var a18743;
-  var a18744;
-  var a18745;
-  var a18746;
-  var a18747;
-  var a18748;
-  var a18749;
-  var a18750;
-  var a18751;
-  var a18752;
-  var a18753;
-  var a18754;
-  var a18755;
-  var a18756;
-  var a18757;
-  var a18758;
-  var a18759;
-  var a18760;
-  var a18761;
-  var a18762;
-  var a18763;
-  var a18764;
-  var a18765;
-  var a18766;
-  var a18767;
-  var a18768;
-  var a18769;
-  var a18770;
-  var a18771;
-  var a18772;
-  var a18773;
-  var a18774;
-  var a18775;
-  var a18776;
-  var a18777;
-  var a18778;
-  var a18779;
-  var a18780;
-  var a18781;
-  var a18782;
-  var a18783;
-  var a18784;
-  var a18785;
-  var a18786;
-  var a18787;
-  var a18788;
-  var a18789;
-  var a18790;
-  var a18791;
-  var a18792;
-  var a18793;
-  var a18794;
-  var a18795;
-  var a18796;
-  var a18797;
-  var a18798;
-  var a18799;
-  var a18800;
-  var a18801;
-  var a18802;
-  var a18803;
-  var a18804;
-  var a18805;
-  var a18806;
-  var a18807;
-  var a18808;
-  var a18809;
-  var a18810;
-  var a18811;
-  var a18812;
-  var a18813;
-  var a18814;
-  var a18815;
-  var a18816;
-  var a18817;
-  var a18818;
-  var a18819;
-  var a18820;
-  var a18821;
-  var a18822;
-  var a18823;
-  var a18824;
-  var a18825;
-  var a18826;
-  var a18827;
-  var a18828;
-  var a18829;
-  var a18830;
-  var a18831;
-  var a18832;
-  var a18833;
-  var a18834;
-  var a18835;
-  var a18836;
-  var a18837;
-  var a18838;
-  var a18839;
-  var a18840;
-  var a18841;
-  var a18842;
-  var a18843;
-  var a18844;
-  var a18845;
-  var a18846;
-  var a18847;
-  var a18848;
-  var a18849;
-  var a18850;
-  var a18851;
-  var a18852;
-  var a18853;
-  var a18854;
-  var a18855;
-  var a18856;
-  var a18857;
-  var a18858;
-  var a18859;
-  var a18860;
-  var a18861;
-  var a18862;
-  var a18863;
-  var a18864;
-  var a18865;
-  var a18866;
-  var a18867;
-  var a18868;
-  var a18869;
-  var a18870;
-  var a18871;
-  var a18872;
-  var a18873;
-  var a18874;
-  var a18875;
-  var a18876;
-  var a18877;
-  var a18878;
-  var a18879;
-  var a18880;
-  var a18881;
-  var a18882;
-  var a18883;
-  var a18884;
-  var a18885;
-  var a18886;
-  var a18887;
-  var a18888;
-  var a18889;
-  var a18890;
-  var a18891;
-  var a18892;
-  var a18893;
-  var a18894;
-  var a18895;
-  var a18896;
-  var a18897;
-  var a18898;
-  var a18899;
-  var a18900;
-  var a18901;
-  var a18902;
-  var a18903;
-  var a18904;
-  var a18905;
-  var a18906;
-  var a18907;
-  var a18908;
-  var a18909;
-  var a18910;
-  var a18911;
-  var a18912;
-  var a18913;
-  var a18914;
-  var a18915;
-  var a18916;
-  var a18917;
-  var a18918;
-  var a18919;
-  var a18920;
-  var a18921;
-  var a18922;
-  var a18923;
-  var a18924;
-  var a18925;
-  var a18926;
-  var a18927;
-  var a18928;
-  var a18929;
-  var a18930;
-  var a18931;
-  var a18932;
-  var a18933;
-  var a18934;
-  var a18935;
-  var a18936;
-  var a18937;
-  var a18938;
-  var a18939;
-  var a18940;
-  var a18941;
-  var a18942;
-  var a18943;
-  var a18944;
-  var a18945;
-  var a18946;
-  var a18947;
-  var a18948;
-  var a18949;
-  var a18950;
-  var a18951;
-  var a18952;
-  var a18953;
-  var a18954;
-  var a18955;
-  var a18956;
-  var a18957;
-  var a18958;
-  var a18959;
-  var a18960;
-  var a18961;
-  var a18962;
-  var a18963;
-  var a18964;
-  var a18965;
-  var a18966;
-  var a18967;
-  var a18968;
-  var a18969;
-  var a18970;
-  var a18971;
-  var a18972;
-  var a18973;
-  var a18974;
-  var a18975;
-  var a18976;
-  var a18977;
-  var a18978;
-  var a18979;
-  var a18980;
-  var a18981;
-  var a18982;
-  var a18983;
-  var a18984;
-  var a18985;
-  var a18986;
-  var a18987;
-  var a18988;
-  var a18989;
-  var a18990;
-  var a18991;
-  var a18992;
-  var a18993;
-  var a18994;
-  var a18995;
-  var a18996;
-  var a18997;
-  var a18998;
-  var a18999;
-  var a19000;
-  var a19001;
-  var a19002;
-  var a19003;
-  var a19004;
-  var a19005;
-  var a19006;
-  var a19007;
-  var a19008;
-  var a19009;
-  var a19010;
-  var a19011;
-  var a19012;
-  var a19013;
-  var a19014;
-  var a19015;
-  var a19016;
-  var a19017;
-  var a19018;
-  var a19019;
-  var a19020;
-  var a19021;
-  var a19022;
-  var a19023;
-  var a19024;
-  var a19025;
-  var a19026;
-  var a19027;
-  var a19028;
-  var a19029;
-  var a19030;
-  var a19031;
-  var a19032;
-  var a19033;
-  var a19034;
-  var a19035;
-  var a19036;
-  var a19037;
-  var a19038;
-  var a19039;
-  var a19040;
-  var a19041;
-  var a19042;
-  var a19043;
-  var a19044;
-  var a19045;
-  var a19046;
-  var a19047;
-  var a19048;
-  var a19049;
-  var a19050;
-  var a19051;
-  var a19052;
-  var a19053;
-  var a19054;
-  var a19055;
-  var a19056;
-  var a19057;
-  var a19058;
-  var a19059;
-  var a19060;
-  var a19061;
-  var a19062;
-  var a19063;
-  var a19064;
-  var a19065;
-  var a19066;
-  var a19067;
-  var a19068;
-  var a19069;
-  var a19070;
-  var a19071;
-  var a19072;
-  var a19073;
-  var a19074;
-  var a19075;
-  var a19076;
-  var a19077;
-  var a19078;
-  var a19079;
-  var a19080;
-  var a19081;
-  var a19082;
-  var a19083;
-  var a19084;
-  var a19085;
-  var a19086;
-  var a19087;
-  var a19088;
-  var a19089;
-  var a19090;
-  var a19091;
-  var a19092;
-  var a19093;
-  var a19094;
-  var a19095;
-  var a19096;
-  var a19097;
-  var a19098;
-  var a19099;
-  var a19100;
-  var a19101;
-  var a19102;
-  var a19103;
-  var a19104;
-  var a19105;
-  var a19106;
-  var a19107;
-  var a19108;
-  var a19109;
-  var a19110;
-  var a19111;
-  var a19112;
-  var a19113;
-  var a19114;
-  var a19115;
-  var a19116;
-  var a19117;
-  var a19118;
-  var a19119;
-  var a19120;
-  var a19121;
-  var a19122;
-  var a19123;
-  var a19124;
-  var a19125;
-  var a19126;
-  var a19127;
-  var a19128;
-  var a19129;
-  var a19130;
-  var a19131;
-  var a19132;
-  var a19133;
-  var a19134;
-  var a19135;
-  var a19136;
-  var a19137;
-  var a19138;
-  var a19139;
-  var a19140;
-  var a19141;
-  var a19142;
-  var a19143;
-  var a19144;
-  var a19145;
-  var a19146;
-  var a19147;
-  var a19148;
-  var a19149;
-  var a19150;
-  var a19151;
-  var a19152;
-  var a19153;
-  var a19154;
-  var a19155;
-  var a19156;
-  var a19157;
-  var a19158;
-  var a19159;
-  var a19160;
-  var a19161;
-  var a19162;
-  var a19163;
-  var a19164;
-  var a19165;
-  var a19166;
-  var a19167;
-  var a19168;
-  var a19169;
-  var a19170;
-  var a19171;
-  var a19172;
-  var a19173;
-  var a19174;
-  var a19175;
-  var a19176;
-  var a19177;
-  var a19178;
-  var a19179;
-  var a19180;
-  var a19181;
-  var a19182;
-  var a19183;
-  var a19184;
-  var a19185;
-  var a19186;
-  var a19187;
-  var a19188;
-  var a19189;
-  var a19190;
-  var a19191;
-  var a19192;
-  var a19193;
-  var a19194;
-  var a19195;
-  var a19196;
-  var a19197;
-  var a19198;
-  var a19199;
-  var a19200;
-  var a19201;
-  var a19202;
-  var a19203;
-  var a19204;
-  var a19205;
-  var a19206;
-  var a19207;
-  var a19208;
-  var a19209;
-  var a19210;
-  var a19211;
-  var a19212;
-  var a19213;
-  var a19214;
-  var a19215;
-  var a19216;
-  var a19217;
-  var a19218;
-  var a19219;
-  var a19220;
-  var a19221;
-  var a19222;
-  var a19223;
-  var a19224;
-  var a19225;
-  var a19226;
-  var a19227;
-  var a19228;
-  var a19229;
-  var a19230;
-  var a19231;
-  var a19232;
-  var a19233;
-  var a19234;
-  var a19235;
-  var a19236;
-  var a19237;
-  var a19238;
-  var a19239;
-  var a19240;
-  var a19241;
-  var a19242;
-  var a19243;
-  var a19244;
-  var a19245;
-  var a19246;
-  var a19247;
-  var a19248;
-  var a19249;
-  var a19250;
-  var a19251;
-  var a19252;
-  var a19253;
-  var a19254;
-  var a19255;
-  var a19256;
-  var a19257;
-  var a19258;
-  var a19259;
-  var a19260;
-  var a19261;
-  var a19262;
-  var a19263;
-  var a19264;
-  var a19265;
-  var a19266;
-  var a19267;
-  var a19268;
-  var a19269;
-  var a19270;
-  var a19271;
-  var a19272;
-  var a19273;
-  var a19274;
-  var a19275;
-  var a19276;
-  var a19277;
-  var a19278;
-  var a19279;
-  var a19280;
-  var a19281;
-  var a19282;
-  var a19283;
-  var a19284;
-  var a19285;
-  var a19286;
-  var a19287;
-  var a19288;
-  var a19289;
-  var a19290;
-  var a19291;
-  var a19292;
-  var a19293;
-  var a19294;
-  var a19295;
-  var a19296;
-  var a19297;
-  var a19298;
-  var a19299;
-  var a19300;
-  var a19301;
-  var a19302;
-  var a19303;
-  var a19304;
-  var a19305;
-  var a19306;
-  var a19307;
-  var a19308;
-  var a19309;
-  var a19310;
-  var a19311;
-  var a19312;
-  var a19313;
-  var a19314;
-  var a19315;
-  var a19316;
-  var a19317;
-  var a19318;
-  var a19319;
-  var a19320;
-  var a19321;
-  var a19322;
-  var a19323;
-  var a19324;
-  var a19325;
-  var a19326;
-  var a19327;
-  var a19328;
-  var a19329;
-  var a19330;
-  var a19331;
-  var a19332;
-  var a19333;
-  var a19334;
-  var a19335;
-  var a19336;
-  var a19337;
-  var a19338;
-  var a19339;
-  var a19340;
-  var a19341;
-  var a19342;
-  var a19343;
-  var a19344;
-  var a19345;
-  var a19346;
-  var a19347;
-  var a19348;
-  var a19349;
-  var a19350;
-  var a19351;
-  var a19352;
-  var a19353;
-  var a19354;
-  var a19355;
-  var a19356;
-  var a19357;
-  var a19358;
-  var a19359;
-  var a19360;
-  var a19361;
-  var a19362;
-  var a19363;
-  var a19364;
-  var a19365;
-  var a19366;
-  var a19367;
-  var a19368;
-  var a19369;
-  var a19370;
-  var a19371;
-  var a19372;
-  var a19373;
-  var a19374;
-  var a19375;
-  var a19376;
-  var a19377;
-  var a19378;
-  var a19379;
-  var a19380;
-  var a19381;
-  var a19382;
-  var a19383;
-  var a19384;
-  var a19385;
-  var a19386;
-  var a19387;
-  var a19388;
-  var a19389;
-  var a19390;
-  var a19391;
-  var a19392;
-  var a19393;
-  var a19394;
-  var a19395;
-  var a19396;
-  var a19397;
-  var a19398;
-  var a19399;
-  var a19400;
-  var a19401;
-  var a19402;
-  var a19403;
-  var a19404;
-  var a19405;
-  var a19406;
-  var a19407;
-  var a19408;
-  var a19409;
-  var a19410;
-  var a19411;
-  var a19412;
-  var a19413;
-  var a19414;
-  var a19415;
-  var a19416;
-  var a19417;
-  var a19418;
-  var a19419;
-  var a19420;
-  var a19421;
-  var a19422;
-  var a19423;
-  var a19424;
-  var a19425;
-  var a19426;
-  var a19427;
-  var a19428;
-  var a19429;
-  var a19430;
-  var a19431;
-  var a19432;
-  var a19433;
-  var a19434;
-  var a19435;
-  var a19436;
-  var a19437;
-  var a19438;
-  var a19439;
-  var a19440;
-  var a19441;
-  var a19442;
-  var a19443;
-  var a19444;
-  var a19445;
-  var a19446;
-  var a19447;
-  var a19448;
-  var a19449;
-  var a19450;
-  var a19451;
-  var a19452;
-  var a19453;
-  var a19454;
-  var a19455;
-  var a19456;
-  var a19457;
-  var a19458;
-  var a19459;
-  var a19460;
-  var a19461;
-  var a19462;
-  var a19463;
-  var a19464;
-  var a19465;
-  var a19466;
-  var a19467;
-  var a19468;
-  var a19469;
-  var a19470;
-  var a19471;
-  var a19472;
-  var a19473;
-  var a19474;
-  var a19475;
-  var a19476;
-  var a19477;
-  var a19478;
-  var a19479;
-  var a19480;
-  var a19481;
-  var a19482;
-  var a19483;
-  var a19484;
-  var a19485;
-  var a19486;
-  var a19487;
-  var a19488;
-  var a19489;
-  var a19490;
-  var a19491;
-  var a19492;
-  var a19493;
-  var a19494;
-  var a19495;
-  var a19496;
-  var a19497;
-  var a19498;
-  var a19499;
-  var a19500;
-  var a19501;
-  var a19502;
-  var a19503;
-  var a19504;
-  var a19505;
-  var a19506;
-  var a19507;
-  var a19508;
-  var a19509;
-  var a19510;
-  var a19511;
-  var a19512;
-  var a19513;
-  var a19514;
-  var a19515;
-  var a19516;
-  var a19517;
-  var a19518;
-  var a19519;
-  var a19520;
-  var a19521;
-  var a19522;
-  var a19523;
-  var a19524;
-  var a19525;
-  var a19526;
-  var a19527;
-  var a19528;
-  var a19529;
-  var a19530;
-  var a19531;
-  var a19532;
-  var a19533;
-  var a19534;
-  var a19535;
-  var a19536;
-  var a19537;
-  var a19538;
-  var a19539;
-  var a19540;
-  var a19541;
-  var a19542;
-  var a19543;
-  var a19544;
-  var a19545;
-  var a19546;
-  var a19547;
-  var a19548;
-  var a19549;
-  var a19550;
-  var a19551;
-  var a19552;
-  var a19553;
-  var a19554;
-  var a19555;
-  var a19556;
-  var a19557;
-  var a19558;
-  var a19559;
-  var a19560;
-  var a19561;
-  var a19562;
-  var a19563;
-  var a19564;
-  var a19565;
-  var a19566;
-  var a19567;
-  var a19568;
-  var a19569;
-  var a19570;
-  var a19571;
-  var a19572;
-  var a19573;
-  var a19574;
-  var a19575;
-  var a19576;
-  var a19577;
-  var a19578;
-  var a19579;
-  var a19580;
-  var a19581;
-  var a19582;
-  var a19583;
-  var a19584;
-  var a19585;
-  var a19586;
-  var a19587;
-  var a19588;
-  var a19589;
-  var a19590;
-  var a19591;
-  var a19592;
-  var a19593;
-  var a19594;
-  var a19595;
-  var a19596;
-  var a19597;
-  var a19598;
-  var a19599;
-  var a19600;
-  var a19601;
-  var a19602;
-  var a19603;
-  var a19604;
-  var a19605;
-  var a19606;
-  var a19607;
-  var a19608;
-  var a19609;
-  var a19610;
-  var a19611;
-  var a19612;
-  var a19613;
-  var a19614;
-  var a19615;
-  var a19616;
-  var a19617;
-  var a19618;
-  var a19619;
-  var a19620;
-  var a19621;
-  var a19622;
-  var a19623;
-  var a19624;
-  var a19625;
-  var a19626;
-  var a19627;
-  var a19628;
-  var a19629;
-  var a19630;
-  var a19631;
-  var a19632;
-  var a19633;
-  var a19634;
-  var a19635;
-  var a19636;
-  var a19637;
-  var a19638;
-  var a19639;
-  var a19640;
-  var a19641;
-  var a19642;
-  var a19643;
-  var a19644;
-  var a19645;
-  var a19646;
-  var a19647;
-  var a19648;
-  var a19649;
-  var a19650;
-  var a19651;
-  var a19652;
-  var a19653;
-  var a19654;
-  var a19655;
-  var a19656;
-  var a19657;
-  var a19658;
-  var a19659;
-  var a19660;
-  var a19661;
-  var a19662;
-  var a19663;
-  var a19664;
-  var a19665;
-  var a19666;
-  var a19667;
-  var a19668;
-  var a19669;
-  var a19670;
-  var a19671;
-  var a19672;
-  var a19673;
-  var a19674;
-  var a19675;
-  var a19676;
-  var a19677;
-  var a19678;
-  var a19679;
-  var a19680;
-  var a19681;
-  var a19682;
-  var a19683;
-  var a19684;
-  var a19685;
-  var a19686;
-  var a19687;
-  var a19688;
-  var a19689;
-  var a19690;
-  var a19691;
-  var a19692;
-  var a19693;
-  var a19694;
-  var a19695;
-  var a19696;
-  var a19697;
-  var a19698;
-  var a19699;
-  var a19700;
-  var a19701;
-  var a19702;
-  var a19703;
-  var a19704;
-  var a19705;
-  var a19706;
-  var a19707;
-  var a19708;
-  var a19709;
-  var a19710;
-  var a19711;
-  var a19712;
-  var a19713;
-  var a19714;
-  var a19715;
-  var a19716;
-  var a19717;
-  var a19718;
-  var a19719;
-  var a19720;
-  var a19721;
-  var a19722;
-  var a19723;
-  var a19724;
-  var a19725;
-  var a19726;
-  var a19727;
-  var a19728;
-  var a19729;
-  var a19730;
-  var a19731;
-  var a19732;
-  var a19733;
-  var a19734;
-  var a19735;
-  var a19736;
-  var a19737;
-  var a19738;
-  var a19739;
-  var a19740;
-  var a19741;
-  var a19742;
-  var a19743;
-  var a19744;
-  var a19745;
-  var a19746;
-  var a19747;
-  var a19748;
-  var a19749;
-  var a19750;
-  var a19751;
-  var a19752;
-  var a19753;
-  var a19754;
-  var a19755;
-  var a19756;
-  var a19757;
-  var a19758;
-  var a19759;
-  var a19760;
-  var a19761;
-  var a19762;
-  var a19763;
-  var a19764;
-  var a19765;
-  var a19766;
-  var a19767;
-  var a19768;
-  var a19769;
-  var a19770;
-  var a19771;
-  var a19772;
-  var a19773;
-  var a19774;
-  var a19775;
-  var a19776;
-  var a19777;
-  var a19778;
-  var a19779;
-  var a19780;
-  var a19781;
-  var a19782;
-  var a19783;
-  var a19784;
-  var a19785;
-  var a19786;
-  var a19787;
-  var a19788;
-  var a19789;
-  var a19790;
-  var a19791;
-  var a19792;
-  var a19793;
-  var a19794;
-  var a19795;
-  var a19796;
-  var a19797;
-  var a19798;
-  var a19799;
-  var a19800;
-  var a19801;
-  var a19802;
-  var a19803;
-  var a19804;
-  var a19805;
-  var a19806;
-  var a19807;
-  var a19808;
-  var a19809;
-  var a19810;
-  var a19811;
-  var a19812;
-  var a19813;
-  var a19814;
-  var a19815;
-  var a19816;
-  var a19817;
-  var a19818;
-  var a19819;
-  var a19820;
-  var a19821;
-  var a19822;
-  var a19823;
-  var a19824;
-  var a19825;
-  var a19826;
-  var a19827;
-  var a19828;
-  var a19829;
-  var a19830;
-  var a19831;
-  var a19832;
-  var a19833;
-  var a19834;
-  var a19835;
-  var a19836;
-  var a19837;
-  var a19838;
-  var a19839;
-  var a19840;
-  var a19841;
-  var a19842;
-  var a19843;
-  var a19844;
-  var a19845;
-  var a19846;
-  var a19847;
-  var a19848;
-  var a19849;
-  var a19850;
-  var a19851;
-  var a19852;
-  var a19853;
-  var a19854;
-  var a19855;
-  var a19856;
-  var a19857;
-  var a19858;
-  var a19859;
-  var a19860;
-  var a19861;
-  var a19862;
-  var a19863;
-  var a19864;
-  var a19865;
-  var a19866;
-  var a19867;
-  var a19868;
-  var a19869;
-  var a19870;
-  var a19871;
-  var a19872;
-  var a19873;
-  var a19874;
-  var a19875;
-  var a19876;
-  var a19877;
-  var a19878;
-  var a19879;
-  var a19880;
-  var a19881;
-  var a19882;
-  var a19883;
-  var a19884;
-  var a19885;
-  var a19886;
-  var a19887;
-  var a19888;
-  var a19889;
-  var a19890;
-  var a19891;
-  var a19892;
-  var a19893;
-  var a19894;
-  var a19895;
-  var a19896;
-  var a19897;
-  var a19898;
-  var a19899;
-  var a19900;
-  var a19901;
-  var a19902;
-  var a19903;
-  var a19904;
-  var a19905;
-  var a19906;
-  var a19907;
-  var a19908;
-  var a19909;
-  var a19910;
-  var a19911;
-  var a19912;
-  var a19913;
-  var a19914;
-  var a19915;
-  var a19916;
-  var a19917;
-  var a19918;
-  var a19919;
-  var a19920;
-  var a19921;
-  var a19922;
-  var a19923;
-  var a19924;
-  var a19925;
-  var a19926;
-  var a19927;
-  var a19928;
-  var a19929;
-  var a19930;
-  var a19931;
-  var a19932;
-  var a19933;
-  var a19934;
-  var a19935;
-  var a19936;
-  var a19937;
-  var a19938;
-  var a19939;
-  var a19940;
-  var a19941;
-  var a19942;
-  var a19943;
-  var a19944;
-  var a19945;
-  var a19946;
-  var a19947;
-  var a19948;
-  var a19949;
-  var a19950;
-  var a19951;
-  var a19952;
-  var a19953;
-  var a19954;
-  var a19955;
-  var a19956;
-  var a19957;
-  var a19958;
-  var a19959;
-  var a19960;
-  var a19961;
-  var a19962;
-  var a19963;
-  var a19964;
-  var a19965;
-  var a19966;
-  var a19967;
-  var a19968;
-  var a19969;
-  var a19970;
-  var a19971;
-  var a19972;
-  var a19973;
-  var a19974;
-  var a19975;
-  var a19976;
-  var a19977;
-  var a19978;
-  var a19979;
-  var a19980;
-  var a19981;
-  var a19982;
-  var a19983;
-  var a19984;
-  var a19985;
-  var a19986;
-  var a19987;
-  var a19988;
-  var a19989;
-  var a19990;
-  var a19991;
-  var a19992;
-  var a19993;
-  var a19994;
-  var a19995;
-  var a19996;
-  var a19997;
-  var a19998;
-  var a19999;
-  var a20000;
-}
-
-main() {
-  var a = new A();
-  a.a20000 = 42;
-  Expect.equals(42, a.a20000);
-}
diff --git a/tests/language/large_implicit_getter_test.dart b/tests/language/large_implicit_getter_test.dart
deleted file mode 100644
index 624a063..0000000
--- a/tests/language/large_implicit_getter_test.dart
+++ /dev/null
@@ -1,1375 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for testing compilation of large implicit getters.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-List<List> panels = [
-  [6853.940039224797, 6050.837897021371],
-  [6953.240039224797, 6050.837897021371],
-  [7052.5400392247975, 5885.237897021371],
-  [7052.5400392247975, 5719.637897021372],
-  [7151.840039224798, 5885.237897021371],
-  [7052.5400392247975, 6050.837897021371],
-  [7052.5400392247975, 6216.43789702137],
-  [7052.5400392247975, 6382.03789702137],
-  [6953.240039224797, 6382.03789702137],
-  [6953.240039224797, 6216.43789702137],
-  [6853.940039224797, 6216.43789702137],
-  [6853.940039224797, 6382.03789702137],
-  [6754.640039224797, 6216.43789702137],
-  [6754.640039224797, 6382.03789702137],
-  [6754.640039224797, 6547.637897021369],
-  [6754.640039224797, 6713.237897021369],
-  [6655.340039224797, 6713.237897021369],
-  [6754.640039224797, 6878.837897021368],
-  [6853.940039224797, 6713.237897021369],
-  [6853.940039224797, 6878.837897021368],
-  [6953.240039224797, 6713.237897021369],
-  [7052.5400392247975, 6547.637897021369],
-  [7151.840039224798, 6713.237897021369],
-  [7151.840039224798, 6547.637897021369],
-  [7151.840039224798, 6382.03789702137],
-  [7251.140039224798, 6547.637897021369],
-  [7251.140039224798, 6713.237897021369],
-  [7350.440039224798, 6878.837897021368],
-  [7449.740039224798, 6878.837897021368],
-  [7449.740039224798, 6713.237897021369],
-  [7549.040039224798, 6547.637897021369],
-  [7449.740039224798, 6382.03789702137],
-  [7449.740039224798, 6216.43789702137],
-  [7549.040039224798, 6050.837897021371],
-  [7648.340039224799, 6216.43789702137],
-  [7549.040039224798, 6382.03789702137],
-  [7648.340039224799, 6382.03789702137],
-  [7747.640039224799, 6216.43789702137],
-  [7846.940039224799, 6382.03789702137],
-  [7946.240039224799, 6382.03789702137],
-  [7946.240039224799, 6547.637897021369],
-  [7846.940039224799, 6713.237897021369],
-  [7946.240039224799, 6713.237897021369],
-  [8045.540039224799, 6547.637897021369],
-  [8045.540039224799, 6713.237897021369],
-  [7946.240039224799, 6878.837897021368],
-  [7946.240039224799, 7044.4378970213675],
-  [8045.540039224799, 7210.037897021367],
-  [8144.8400392247995, 7375.637897021366],
-  [8144.8400392247995, 7541.237897021366],
-  [8045.540039224799, 7375.637897021366],
-  [8144.8400392247995, 7210.037897021367],
-  [8045.540039224799, 7044.4378970213675],
-  [7946.240039224799, 7210.037897021367],
-  [7846.940039224799, 7210.037897021367],
-  [7946.240039224799, 7375.637897021366],
-  [8045.540039224799, 7541.237897021366],
-  [8144.8400392247995, 7706.837897021365],
-  [8244.1400392248, 7541.237897021366],
-  [8343.4400392248, 7541.237897021366],
-  [8343.4400392248, 7706.837897021365],
-  [8244.1400392248, 7706.837897021365],
-  [4735.523842661975, 3503.497768214323],
-  [4636.223842661975, 3337.897768214323],
-  [4536.923842661975, 3337.897768214323],
-  [4437.623842661975, 3172.2977682143232],
-  [4338.323842661975, 3172.2977682143232],
-  [4239.023842661974, 3172.2977682143232],
-  [4338.323842661975, 3006.6977682143233],
-  [4437.623842661975, 2841.0977682143234],
-  [4338.323842661975, 2675.4977682143235],
-  [4338.323842661975, 2509.8977682143236],
-  [4239.023842661974, 2675.4977682143235],
-  [4139.723842661974, 2509.8977682143236],
-  [4040.4238426619745, 2344.2977682143237],
-  [4139.723842661974, 2178.697768214324],
-  [4239.023842661974, 2178.697768214324],
-  [4139.723842661974, 2344.2977682143237],
-  [4040.4238426619745, 2178.697768214324],
-  [4139.723842661974, 2013.0977682143237],
-  [4139.723842661974, 1847.4977682143235],
-  [4239.023842661974, 2013.0977682143237],
-  [4239.023842661974, 1847.4977682143235],
-  [4338.323842661975, 1847.4977682143235],
-  [4437.623842661975, 1847.4977682143235],
-  [4536.923842661975, 1681.8977682143234],
-  [4437.623842661975, 1516.2977682143232],
-  [4536.923842661975, 1516.2977682143232],
-  [4536.923842661975, 1350.697768214323],
-  [4437.623842661975, 1350.697768214323],
-  [4536.923842661975, 1185.097768214323],
-  [4636.223842661975, 1019.497768214323],
-  [4536.923842661975, 853.897768214323],
-  [4636.223842661975, 853.897768214323],
-  [4735.523842661975, 688.2977682143231],
-  [4636.223842661975, 522.6977682143232],
-  [4636.223842661975, 357.09776821432325],
-  [4735.523842661975, 357.09776821432325],
-  [4735.523842661975, 522.6977682143232],
-  [4636.223842661975, 688.2977682143231],
-  [4735.523842661975, 853.897768214323],
-  [4834.8238426619755, 853.897768214323],
-  [4735.523842661975, 1019.497768214323],
-  [4735.523842661975, 1185.097768214323],
-  [4735.523842661975, 1350.697768214323],
-  [4834.8238426619755, 1516.2977682143232],
-  [4735.523842661975, 1516.2977682143232],
-  [4834.8238426619755, 1350.697768214323],
-  [4834.8238426619755, 1185.097768214323],
-  [4934.123842661976, 1350.697768214323],
-  [5033.423842661976, 1185.097768214323],
-  [5033.423842661976, 1019.497768214323],
-  [5033.423842661976, 853.897768214323],
-  [4934.123842661976, 853.897768214323],
-  [4934.123842661976, 1019.497768214323],
-  [4834.8238426619755, 1019.497768214323],
-  [4934.123842661976, 1185.097768214323],
-  [5033.423842661976, 1350.697768214323],
-  [5132.723842661976, 1350.697768214323],
-  [5132.723842661976, 1185.097768214323],
-  [5232.023842661976, 1019.497768214323],
-  [5232.023842661976, 1185.097768214323],
-  [5331.323842661976, 1019.497768214323],
-  [5430.623842661977, 1019.497768214323],
-  [5529.923842661977, 1185.097768214323],
-  [5430.623842661977, 1350.697768214323],
-  [5430.623842661977, 1516.2977682143232],
-  [5529.923842661977, 1350.697768214323],
-  [5629.223842661977, 1350.697768214323],
-  [5728.523842661977, 1350.697768214323],
-  [5728.523842661977, 1516.2977682143232],
-  [5728.523842661977, 1681.8977682143234],
-  [5629.223842661977, 1516.2977682143232],
-  [5529.923842661977, 1516.2977682143232],
-  [5629.223842661977, 1681.8977682143234],
-  [5529.923842661977, 1681.8977682143234],
-  [5430.623842661977, 1847.4977682143235],
-  [5331.323842661976, 1847.4977682143235],
-  [5331.323842661976, 2013.0977682143237],
-  [5232.023842661976, 2178.697768214324],
-  [5132.723842661976, 2013.0977682143237],
-  [5132.723842661976, 2178.697768214324],
-  [5232.023842661976, 2013.0977682143237],
-  [5232.023842661976, 1847.4977682143235],
-  [5232.023842661976, 1681.8977682143234],
-  [5331.323842661976, 1681.8977682143234],
-  [5331.323842661976, 1516.2977682143232],
-  [5331.323842661976, 1350.697768214323],
-  [5232.023842661976, 1350.697768214323],
-  [5232.023842661976, 1516.2977682143232],
-  [5132.723842661976, 1516.2977682143232],
-  [5132.723842661976, 1681.8977682143234],
-  [5033.423842661976, 1847.4977682143235],
-  [5132.723842661976, 1847.4977682143235],
-  [5033.423842661976, 2013.0977682143237],
-  [4934.123842661976, 2178.697768214324],
-  [5033.423842661976, 2344.2977682143237],
-  [4934.123842661976, 2344.2977682143237],
-  [4834.8238426619755, 2178.697768214324],
-  [4834.8238426619755, 2344.2977682143237],
-  [4735.523842661975, 2344.2977682143237],
-  [4636.223842661975, 2344.2977682143237],
-  [4536.923842661975, 2178.697768214324],
-  [4437.623842661975, 2013.0977682143237],
-  [4338.323842661975, 2178.697768214324],
-  [4437.623842661975, 2344.2977682143237],
-  [4536.923842661975, 2509.8977682143236],
-  [4636.223842661975, 2675.4977682143235],
-  [4636.223842661975, 2509.8977682143236],
-  [4536.923842661975, 2675.4977682143235],
-  [4636.223842661975, 2841.0977682143234],
-  [4536.923842661975, 2841.0977682143234],
-  [4636.223842661975, 3006.6977682143233],
-  [4735.523842661975, 3172.2977682143232],
-  [4834.8238426619755, 3006.6977682143233],
-  [4735.523842661975, 2841.0977682143234],
-  [4735.523842661975, 3006.6977682143233],
-  [4636.223842661975, 3172.2977682143232],
-  [4735.523842661975, 3337.897768214323],
-  [4834.8238426619755, 3503.497768214323],
-  [4735.523842661975, 3669.097768214323],
-  [4834.8238426619755, 3834.697768214323],
-  [4834.8238426619755, 3669.097768214323],
-  [4934.123842661976, 3503.497768214323],
-  [5033.423842661976, 3503.497768214323],
-  [5033.423842661976, 3337.897768214323],
-  [4934.123842661976, 3337.897768214323],
-  [4834.8238426619755, 3172.2977682143232],
-  [4834.8238426619755, 3337.897768214323],
-  [4934.123842661976, 3172.2977682143232],
-  [5033.423842661976, 3006.6977682143233],
-  [5132.723842661976, 2841.0977682143234],
-  [5132.723842661976, 3006.6977682143233],
-  [5232.023842661976, 3172.2977682143232],
-  [5232.023842661976, 3337.897768214323],
-  [5132.723842661976, 3337.897768214323],
-  [5232.023842661976, 3503.497768214323],
-  [5331.323842661976, 3337.897768214323],
-  [5331.323842661976, 3503.497768214323],
-  [5430.623842661977, 3669.097768214323],
-  [5331.323842661976, 3669.097768214323],
-  [5430.623842661977, 3503.497768214323],
-  [5430.623842661977, 3337.897768214323],
-  [5529.923842661977, 3172.2977682143232],
-  [5529.923842661977, 3337.897768214323],
-  [5629.223842661977, 3337.897768214323],
-  [5728.523842661977, 3337.897768214323],
-  [5728.523842661977, 3503.497768214323],
-  [5827.823842661977, 3503.497768214323],
-  [5927.1238426619775, 3669.097768214323],
-  [6026.423842661978, 3669.097768214323],
-  [6125.723842661978, 3503.497768214323],
-  [6125.723842661978, 3669.097768214323],
-  [6225.023842661978, 3503.497768214323],
-  [6225.023842661978, 3337.897768214323],
-  [6324.323842661978, 3337.897768214323],
-  [6423.623842661978, 3503.497768214323],
-  [6324.323842661978, 3669.097768214323],
-  [6225.023842661978, 3669.097768214323],
-  [6324.323842661978, 3834.697768214323],
-  [6423.623842661978, 3834.697768214323],
-  [6324.323842661978, 4000.297768214323],
-  [6225.023842661978, 3834.697768214323],
-  [6125.723842661978, 3834.697768214323],
-  [6125.723842661978, 4000.297768214323],
-  [6225.023842661978, 4000.297768214323],
-  [6225.023842661978, 4165.897768214322],
-  [6225.023842661978, 4331.497768214322],
-  [6125.723842661978, 4165.897768214322],
-  [6026.423842661978, 4000.2977682143223],
-  [5927.1238426619775, 4165.897768214322],
-  [6026.423842661978, 4331.497768214322],
-  [6026.423842661978, 4497.097768214321],
-  [5927.1238426619775, 4497.097768214321],
-  [5827.823842661977, 4662.697768214321],
-  [5728.523842661977, 4828.29776821432],
-  [5827.823842661977, 4828.29776821432],
-  [5927.1238426619775, 4828.29776821432],
-  [5927.1238426619775, 4662.697768214321],
-  [5827.823842661977, 4497.097768214321],
-  [5927.1238426619775, 4331.497768214322],
-  [5827.823842661977, 4165.897768214322],
-  [5728.523842661977, 4331.497768214322],
-  [5728.523842661977, 4165.897768214322],
-  [5629.223842661977, 4000.2977682143223],
-  [5629.223842661977, 3834.6977682143224],
-  [5529.923842661977, 3669.0977682143225],
-  [5629.223842661977, 3503.4977682143226],
-  [5728.523842661977, 3669.0977682143225],
-  [5827.823842661977, 3669.0977682143225],
-  [5927.1238426619775, 3834.6977682143224],
-  [5927.1238426619775, 4000.2977682143223],
-  [6026.423842661978, 4165.897768214322],
-  [6125.723842661978, 4331.497768214322],
-  [6225.023842661978, 4497.097768214321],
-  [6225.023842661978, 4662.697768214321],
-  [6324.323842661978, 4662.697768214321],
-  [6225.023842661978, 4828.29776821432],
-  [6324.323842661978, 4828.29776821432],
-  [6423.623842661978, 4828.29776821432],
-  [6324.323842661978, 4993.8977682143195],
-  [6225.023842661978, 5159.497768214319],
-  [6125.723842661978, 5159.497768214319],
-  [6026.423842661978, 5325.097768214318],
-  [5927.1238426619775, 5490.697768214318],
-  [6026.423842661978, 5656.297768214317],
-  [5927.1238426619775, 5821.897768214317],
-  [5927.1238426619775, 5987.497768214316],
-  [6026.423842661978, 5987.497768214316],
-  [6026.423842661978, 5821.897768214317],
-  [5927.1238426619775, 5656.297768214317],
-  [5827.823842661977, 5656.297768214317],
-  [5827.823842661977, 5490.697768214318],
-  [5728.523842661977, 5490.697768214318],
-  [5629.223842661977, 5325.097768214318],
-  [5629.223842661977, 5159.497768214319],
-  [5529.923842661977, 4993.8977682143195],
-  [5529.923842661977, 5159.497768214319],
-  [5629.223842661977, 4993.8977682143195],
-  [5629.223842661977, 4828.29776821432],
-  [5529.923842661977, 4662.697768214321],
-  [5430.623842661977, 4828.29776821432],
-  [5529.923842661977, 4828.29776821432],
-  [5629.223842661977, 4662.697768214321],
-  [5728.523842661977, 4662.697768214321],
-  [5629.223842661977, 4497.097768214321],
-  [5728.523842661977, 4497.097768214321],
-  [5827.823842661977, 4331.497768214322],
-  [10216.161365168813, 2951.605409896135],
-  [10116.861365168812, 2951.605409896135],
-  [10017.56136516881, 3117.205409896135],
-  [9918.26136516881, 3117.205409896135],
-  [9818.961365168809, 3117.205409896135],
-  [9719.661365168808, 3282.8054098961347],
-  [9620.361365168807, 3282.8054098961347],
-  [9620.361365168807, 3117.205409896135],
-  [9521.061365168805, 2951.605409896135],
-  [9521.061365168805, 2786.005409896135],
-  [9620.361365168807, 2786.005409896135],
-  [9719.661365168808, 2786.005409896135],
-  [9818.961365168809, 2620.405409896135],
-  [9918.26136516881, 2786.005409896135],
-  [9818.961365168809, 2951.605409896135],
-  [9818.961365168809, 2786.005409896135],
-  [9719.661365168808, 2620.405409896135],
-  [9719.661365168808, 2454.805409896135],
-  [9620.361365168807, 2289.2054098961353],
-  [9521.061365168805, 2123.6054098961354],
-  [9620.361365168807, 1958.0054098961352],
-  [9719.661365168808, 2123.6054098961354],
-  [9818.961365168809, 2289.2054098961353],
-  [9818.961365168809, 2123.6054098961354],
-  [9818.961365168809, 1958.0054098961352],
-  [9719.661365168808, 1958.0054098961352],
-  [9620.361365168807, 1792.405409896135],
-  [9620.361365168807, 1626.805409896135],
-  [9521.061365168805, 1461.2054098961348],
-  [9421.761365168804, 1295.6054098961347],
-  [9521.061365168805, 1130.0054098961346],
-  [9521.061365168805, 964.4054098961345],
-  [9421.761365168804, 964.4054098961345],
-  [9521.061365168805, 798.8054098961346],
-  [9620.361365168807, 798.8054098961346],
-  [9620.361365168807, 964.4054098961345],
-  [9620.361365168807, 1130.0054098961346],
-  [9620.361365168807, 1295.6054098961347],
-  [9620.361365168807, 1461.2054098961348],
-  [9719.661365168808, 1295.6054098961347],
-  [9818.961365168809, 1130.0054098961346],
-  [9918.26136516881, 964.4054098961345],
-  [9818.961365168809, 964.4054098961345],
-  [9918.26136516881, 798.8054098961346],
-  [10017.56136516881, 633.2054098961347],
-  [9918.26136516881, 467.60540989613474],
-  [9918.26136516881, 302.0054098961348],
-  [10017.56136516881, 302.0054098961348],
-  [10116.861365168812, 136.40540989613478],
-  [10116.861365168812, 302.0054098961348],
-  [10116.861365168812, 467.60540989613474],
-  [10116.861365168812, 633.2054098961347],
-  [10216.161365168813, 633.2054098961347],
-  [10216.161365168813, 798.8054098961346],
-  [10315.461365168814, 633.2054098961347],
-  [10315.461365168814, 798.8054098961346],
-  [10414.761365168815, 798.8054098961346],
-  [10514.061365168816, 633.2054098961347],
-  [10514.061365168816, 798.8054098961346],
-  [10414.761365168815, 964.4054098961345],
-  [10315.461365168814, 964.4054098961345],
-  [10216.161365168813, 964.4054098961345],
-  [10116.861365168812, 798.8054098961346],
-  [10017.56136516881, 798.8054098961346],
-  [10116.861365168812, 964.4054098961345],
-  [10216.161365168813, 1130.0054098961346],
-  [10116.861365168812, 1130.0054098961346],
-  [10216.161365168813, 1295.6054098961347],
-  [10216.161365168813, 1461.2054098961348],
-  [10315.461365168814, 1626.805409896135],
-  [10315.461365168814, 1792.405409896135],
-  [10216.161365168813, 1958.0054098961352],
-  [10216.161365168813, 1792.405409896135],
-  [10116.861365168812, 1792.405409896135],
-  [10017.56136516881, 1958.0054098961352],
-  [9918.26136516881, 2123.6054098961354],
-  [9918.26136516881, 1958.0054098961352],
-  [10017.56136516881, 2123.6054098961354],
-  [10116.861365168812, 2123.6054098961354],
-  [10017.56136516881, 2289.2054098961353],
-  [10017.56136516881, 2454.805409896135],
-  [10116.861365168812, 2289.2054098961353],
-  [10216.161365168813, 2454.805409896135],
-  [10315.461365168814, 2620.405409896135],
-  [10315.461365168814, 2454.805409896135],
-  [10315.461365168814, 2289.2054098961353],
-  [10414.761365168815, 2454.805409896135],
-  [10514.061365168816, 2620.405409896135],
-  [10613.361365168817, 2786.005409896135],
-  [10514.061365168816, 2786.005409896135],
-  [10613.361365168817, 2620.405409896135],
-  [10514.061365168816, 2454.805409896135],
-  [10514.061365168816, 2289.2054098961353],
-  [10613.361365168817, 2289.2054098961353],
-  [10712.661365168819, 2289.2054098961353],
-  [10811.96136516882, 2454.805409896135],
-  [10911.26136516882, 2289.2054098961353],
-  [10811.96136516882, 2289.2054098961353],
-  [10712.661365168819, 2454.805409896135],
-  [10712.661365168819, 2620.405409896135],
-  [10811.96136516882, 2786.005409896135],
-  [10911.26136516882, 2620.405409896135],
-  [10911.26136516882, 2786.005409896135],
-  [11010.561365168822, 2620.405409896135],
-  [10911.26136516882, 2454.805409896135],
-  [10811.96136516882, 2620.405409896135],
-  [10712.661365168819, 2786.005409896135],
-  [10811.96136516882, 2951.605409896135],
-  [10911.26136516882, 2951.605409896135],
-  [10811.96136516882, 3117.205409896135],
-  [10712.661365168819, 2951.605409896135],
-  [10613.361365168817, 2951.605409896135],
-  [10514.061365168816, 2951.605409896135],
-  [10414.761365168815, 3117.205409896135],
-  [10414.761365168815, 2951.605409896135],
-  [10315.461365168814, 2786.005409896135],
-  [10216.161365168813, 2620.405409896135],
-  [10216.161365168813, 2786.005409896135],
-  [10315.461365168814, 2951.605409896135],
-  [10315.461365168814, 3117.205409896135],
-  [10216.161365168813, 3117.205409896135],
-  [10116.861365168812, 3117.205409896135],
-  [10017.56136516881, 3282.8054098961347],
-  [9918.26136516881, 3448.4054098961346],
-  [9818.961365168809, 3448.4054098961346],
-  [9818.961365168809, 3614.0054098961346],
-  [9719.661365168808, 3448.4054098961346],
-  [9818.961365168809, 3282.8054098961347],
-  [9719.661365168808, 3117.205409896135],
-  [9620.361365168807, 2951.605409896135],
-  [9521.061365168805, 3117.205409896135],
-  [9521.061365168805, 3282.8054098961347],
-  [9421.761365168804, 3117.205409896135],
-  [9421.761365168804, 3282.8054098961347],
-  [9322.461365168803, 3117.205409896135],
-  [9421.761365168804, 2951.605409896135],
-  [9322.461365168803, 2951.605409896135],
-  [9223.161365168802, 2786.005409896135],
-  [9322.461365168803, 2620.405409896135],
-  [9421.761365168804, 2454.805409896135],
-  [9521.061365168805, 2289.2054098961353],
-  [9421.761365168804, 2123.6054098961354],
-  [9421.761365168804, 1958.0054098961352],
-  [9421.761365168804, 1792.405409896135],
-  [9521.061365168805, 1626.805409896135],
-  [9421.761365168804, 1626.805409896135],
-  [9322.461365168803, 1792.405409896135],
-  [9322.461365168803, 1626.805409896135],
-  [9322.461365168803, 1461.2054098961348],
-  [9421.761365168804, 1461.2054098961348],
-  [9521.061365168805, 1295.6054098961347],
-  [9421.761365168804, 1130.0054098961346],
-  [9322.461365168803, 964.4054098961345],
-  [9223.161365168802, 964.4054098961345],
-  [9223.161365168802, 798.8054098961346],
-  [9322.461365168803, 633.2054098961347],
-  [9421.761365168804, 798.8054098961346],
-  [9421.761365168804, 633.2054098961347],
-  [9521.061365168805, 633.2054098961347],
-  [9421.761365168804, 467.60540989613474],
-  [9421.761365168804, 302.0054098961348],
-  [9322.461365168803, 136.40540989613478],
-  [9223.161365168802, 302.0054098961348],
-  [9123.861365168801, 302.0054098961348],
-  [9024.5613651688, 136.40540989613478],
-  [9123.861365168801, 136.40540989613478],
-  [9223.161365168802, 136.40540989613478],
-  [9322.461365168803, 302.0054098961348],
-  [9421.761365168804, 136.40540989613478],
-  [9521.061365168805, 136.40540989613478],
-  [9620.361365168807, 136.40540989613478],
-  [9620.361365168807, 302.0054098961348],
-  [9521.061365168805, 302.0054098961348],
-  [9521.061365168805, 467.60540989613474],
-  [9620.361365168807, 467.60540989613474],
-  [9719.661365168808, 302.0054098961348],
-  [9719.661365168808, 136.40540989613478],
-  [9818.961365168809, 136.40540989613478],
-  [9918.26136516881, 136.40540989613478],
-  [10017.56136516881, 136.40540989613478],
-  [366.07287160549004, 5394.185440937868],
-  [465.37287160549005, 5394.185440937868],
-  [465.37287160549005, 5559.785440937868],
-  [366.0728716054901, 5559.785440937868],
-  [366.0728716054901, 5725.385440937867],
-  [266.77287160549014, 5725.385440937867],
-  [167.47287160549016, 5559.785440937868],
-  [266.77287160549014, 5559.785440937868],
-  [266.77287160549014, 5394.185440937868],
-  [266.77287160549014, 5228.585440937869],
-  [167.47287160549016, 5394.185440937868],
-  [68.17287160549016, 5228.585440937869],
-  [167.47287160549013, 5062.9854409378695],
-  [68.17287160549013, 4897.38544093787],
-  [167.47287160549013, 4731.785440937871],
-  [266.77287160549014, 4731.785440937871],
-  [167.47287160549016, 4566.185440937871],
-  [68.17287160549016, 4566.185440937871],
-  [68.17287160549016, 4731.785440937871],
-  [167.47287160549013, 4897.38544093787],
-  [68.17287160549013, 5062.9854409378695],
-  [167.47287160549013, 5228.585440937869],
-  [266.77287160549014, 5062.9854409378695],
-  [366.0728716054901, 4897.38544093787],
-  [266.77287160549014, 4897.38544093787],
-  [366.0728716054901, 4731.785440937871],
-  [465.37287160549005, 4897.38544093787],
-  [366.0728716054901, 5062.9854409378695],
-  [465.37287160549005, 5062.9854409378695],
-  [366.0728716054901, 5228.585440937869],
-  [465.37287160549005, 5228.585440937869],
-  [564.6728716054901, 5394.185440937868],
-  [663.9728716054901, 5228.585440937869],
-  [564.6728716054901, 5062.9854409378695],
-  [663.9728716054901, 4897.38544093787],
-  [763.2728716054902, 4731.785440937871],
-  [862.5728716054903, 4566.185440937871],
-  [961.8728716054903, 4731.785440937871],
-  [862.5728716054903, 4731.785440937871],
-  [961.8728716054903, 4566.185440937871],
-  [862.5728716054903, 4400.585440937872],
-  [961.8728716054903, 4234.985440937872],
-  [1061.1728716054904, 4400.585440937872],
-  [1160.4728716054904, 4234.985440937872],
-  [1160.4728716054904, 4400.585440937872],
-  [1259.7728716054903, 4234.985440937872],
-  [1359.0728716054903, 4069.3854409378723],
-  [1458.3728716054902, 4069.3854409378723],
-  [1557.6728716054902, 4234.985440937872],
-  [1656.9728716054901, 4400.585440937872],
-  [1557.6728716054902, 4400.585440937872],
-  [1458.3728716054902, 4400.585440937872],
-  [1359.0728716054903, 4566.185440937871],
-  [1359.0728716054903, 4731.785440937871],
-  [1259.7728716054903, 4731.785440937871],
-  [1359.0728716054903, 4897.38544093787],
-  [1458.3728716054902, 4731.785440937871],
-  [1458.3728716054902, 4897.38544093787],
-  [1359.0728716054903, 5062.9854409378695],
-  [1259.7728716054903, 5228.585440937869],
-  [1259.7728716054903, 5062.9854409378695],
-  [1259.7728716054903, 4897.38544093787],
-  [1160.4728716054904, 5062.9854409378695],
-  [1160.4728716054904, 5228.585440937869],
-  [1061.1728716054904, 5228.585440937869],
-  [1061.1728716054904, 5062.9854409378695],
-  [961.8728716054903, 5228.585440937869],
-  [862.5728716054903, 5062.9854409378695],
-  [961.8728716054903, 5062.9854409378695],
-  [961.8728716054903, 4897.38544093787],
-  [1061.1728716054904, 4897.38544093787],
-  [1160.4728716054904, 4731.785440937871],
-  [1259.7728716054903, 4566.185440937871],
-  [1359.0728716054903, 4400.585440937872],
-  [1458.3728716054902, 4566.185440937871],
-  [1557.6728716054902, 4566.185440937871],
-  [1656.9728716054901, 4731.785440937871],
-  [1557.6728716054902, 4897.38544093787],
-  [1458.3728716054902, 5062.9854409378695],
-  [1557.6728716054902, 5228.585440937869],
-  [1656.9728716054901, 5062.9854409378695],
-  [1756.27287160549, 5062.9854409378695],
-  [1756.27287160549, 4897.38544093787],
-  [1855.57287160549, 5062.9854409378695],
-  [1954.87287160549, 4897.38544093787],
-  [2054.17287160549, 5062.9854409378695],
-  [1954.87287160549, 5062.9854409378695],
-  [2054.17287160549, 5228.585440937869],
-  [2153.4728716054897, 5228.585440937869],
-  [2252.7728716054894, 5062.9854409378695],
-  [2352.072871605489, 5228.585440937869],
-  [2451.372871605489, 5394.185440937868],
-  [2352.072871605489, 5394.185440937868],
-  [2252.7728716054894, 5228.585440937869],
-  [2153.4728716054897, 5062.9854409378695],
-  [2153.4728716054897, 4897.38544093787],
-  [2252.7728716054894, 4897.38544093787],
-  [2352.072871605489, 4731.785440937871],
-  [2252.7728716054894, 4731.785440937871],
-  [2153.4728716054897, 4731.785440937871],
-  [2054.17287160549, 4566.185440937871],
-  [1954.87287160549, 4731.785440937871],
-  [1855.57287160549, 4897.38544093787],
-  [1756.27287160549, 4731.785440937871],
-  [1855.57287160549, 4731.785440937871],
-  [1855.57287160549, 4566.185440937871],
-  [1756.27287160549, 4566.185440937871],
-  [1656.9728716054901, 4566.185440937871],
-  [1557.6728716054902, 4731.785440937871],
-  [1656.9728716054901, 4897.38544093787],
-  [1557.6728716054902, 5062.9854409378695],
-  [1458.3728716054902, 5228.585440937869],
-  [1359.0728716054903, 5228.585440937869],
-  [1259.7728716054903, 5394.185440937868],
-  [1259.7728716054903, 5559.785440937868],
-  [1160.4728716054904, 5559.785440937868],
-  [1061.1728716054904, 5559.785440937868],
-  [1160.4728716054904, 5725.385440937867],
-  [1259.7728716054903, 5725.385440937867],
-  [1359.0728716054903, 5559.785440937868],
-  [1458.3728716054902, 5725.385440937867],
-  [1458.3728716054902, 5559.785440937868],
-  [1359.0728716054903, 5725.385440937867],
-  [1259.7728716054903, 5890.985440937867],
-  [1359.0728716054903, 5890.985440937867],
-  [1259.7728716054903, 6056.585440937866],
-  [1359.0728716054903, 6222.185440937866],
-  [1458.3728716054902, 6222.185440937866],
-  [1458.3728716054902, 6387.785440937865],
-  [1557.6728716054902, 6222.185440937866],
-  [1557.6728716054902, 6387.785440937865],
-  [1656.9728716054901, 6222.185440937866],
-  [1756.27287160549, 6056.585440937866],
-  [1855.57287160549, 5890.985440937867],
-  [1756.27287160549, 5890.985440937867],
-  [1656.9728716054901, 6056.585440937866],
-  [1557.6728716054902, 5890.985440937867],
-  [1458.3728716054902, 5890.985440937867],
-  [1359.0728716054903, 6056.585440937866],
-  [1259.7728716054903, 6222.185440937866],
-  [1160.4728716054904, 6056.585440937866],
-  [1061.1728716054904, 5890.985440937867],
-  [1061.1728716054904, 6056.585440937866],
-  [1160.4728716054904, 6222.185440937866],
-  [1061.1728716054904, 6222.185440937866],
-  [961.8728716054903, 6222.185440937866],
-  [961.8728716054903, 6056.585440937866],
-  [961.8728716054903, 5890.985440937867],
-  [961.8728716054903, 5725.385440937867],
-  [862.5728716054903, 5559.785440937868],
-  [763.2728716054902, 5725.385440937867],
-  [862.5728716054903, 5725.385440937867],
-  [763.2728716054902, 5890.985440937867],
-  [663.9728716054901, 5725.385440937867],
-  [763.2728716054902, 5559.785440937868],
-  [763.2728716054902, 5394.185440937868],
-  [862.5728716054903, 5228.585440937869],
-  [961.8728716054903, 5394.185440937868],
-  [1061.1728716054904, 5394.185440937868],
-  [961.8728716054903, 5559.785440937868],
-  [862.5728716054903, 5394.185440937868],
-  [763.2728716054902, 5228.585440937869],
-  [663.9728716054901, 5062.9854409378695],
-  [763.2728716054902, 5062.9854409378695],
-  [763.2728716054902, 4897.38544093787],
-  [663.9728716054901, 4731.785440937871],
-  [564.6728716054901, 4731.785440937871],
-  [465.37287160549005, 4566.185440937871],
-  [366.0728716054901, 4566.185440937871],
-  [465.37287160549005, 4731.785440937871],
-  [564.6728716054901, 4566.185440937871],
-  [465.37287160549005, 4400.585440937872],
-  [366.0728716054901, 4400.585440937872],
-  [266.77287160549014, 4234.985440937872],
-  [167.47287160549016, 4234.985440937872],
-  [266.77287160549014, 4400.585440937872],
-  [266.77287160549014, 4566.185440937871],
-  [167.47287160549016, 4400.585440937872],
-  [68.17287160549016, 4234.985440937872],
-  [167.47287160549013, 4069.3854409378723],
-  [68.17287160549013, 3903.7854409378724],
-  [68.17287160549013, 4069.3854409378723],
-  [167.47287160549013, 3903.7854409378724],
-  [266.77287160549014, 3903.7854409378724],
-  [366.0728716054901, 3738.1854409378725],
-  [266.77287160549014, 3738.1854409378725],
-  [266.77287160549014, 3572.5854409378726],
-  [167.47287160549016, 3406.9854409378727],
-  [167.47287160549016, 3241.3854409378728],
-  [266.77287160549014, 3241.3854409378728],
-  [266.77287160549014, 3406.9854409378727],
-  [366.0728716054901, 3572.5854409378726],
-  [465.37287160549005, 3738.1854409378725],
-  [465.37287160549005, 3903.7854409378724],
-  [366.0728716054901, 4069.3854409378723],
-  [366.0728716054901, 4234.985440937872],
-  [465.37287160549005, 4234.985440937872],
-  [564.6728716054901, 4069.3854409378723],
-  [465.37287160549005, 4069.3854409378723],
-  [564.6728716054901, 4234.985440937872],
-  [663.9728716054901, 4069.3854409378723],
-  [663.9728716054901, 4234.985440937872],
-  [663.9728716054901, 4400.585440937872],
-  [763.2728716054902, 4566.185440937871],
-  [763.2728716054902, 4400.585440937872],
-  [663.9728716054901, 4566.185440937871],
-  [564.6728716054901, 4400.585440937872],
-  [19431.915041401327, 3495.506142643713],
-  [19332.61504140133, 3661.1061426437127],
-  [19431.915041401327, 3661.1061426437127],
-  [19531.215041401327, 3661.1061426437127],
-  [19630.515041401326, 3495.506142643713],
-  [19630.515041401326, 3661.1061426437127],
-  [19729.815041401325, 3826.7061426437126],
-  [19630.515041401326, 3826.7061426437126],
-  [19729.815041401325, 3992.3061426437125],
-  [19630.515041401326, 3992.3061426437125],
-  [19630.515041401326, 4157.906142643712],
-  [19630.515041401326, 4323.506142643711],
-  [19531.215041401327, 4157.906142643712],
-  [19431.915041401327, 4323.506142643711],
-  [19531.215041401327, 4489.106142643711],
-  [19431.915041401327, 4654.70614264371],
-  [19332.61504140133, 4654.70614264371],
-  [19332.61504140133, 4820.30614264371],
-  [19332.61504140133, 4985.906142643709],
-  [19233.31504140133, 4985.906142643709],
-  [19134.01504140133, 5151.506142643709],
-  [19034.71504140133, 5151.506142643709],
-  [19134.01504140133, 5317.106142643708],
-  [19034.71504140133, 5317.106142643708],
-  [19034.71504140133, 5482.706142643708],
-  [18935.41504140133, 5648.306142643707],
-  [18836.115041401332, 5813.9061426437065],
-  [18836.115041401332, 5979.506142643706],
-  [18935.41504140133, 5979.506142643706],
-  [19034.71504140133, 6145.106142643705],
-  [19034.71504140133, 5979.506142643706],
-  [19034.71504140133, 5813.9061426437065],
-  [19134.01504140133, 5648.306142643707],
-  [19233.31504140133, 5648.306142643707],
-  [19134.01504140133, 5813.9061426437065],
-  [19134.01504140133, 5979.506142643706],
-  [19233.31504140133, 5813.9061426437065],
-  [19233.31504140133, 5979.506142643706],
-  [19332.61504140133, 6145.106142643705],
-  [19332.61504140133, 6310.706142643705],
-  [19233.31504140133, 6310.706142643705],
-  [19233.31504140133, 6476.306142643704],
-  [19332.61504140133, 6476.306142643704],
-  [19431.915041401327, 6641.906142643704],
-  [19332.61504140133, 6807.506142643703],
-  [19332.61504140133, 6641.906142643704],
-  [19431.915041401327, 6476.306142643704],
-  [19431.915041401327, 6310.706142643705],
-  [19531.215041401327, 6145.106142643705],
-  [19431.915041401327, 5979.506142643706],
-  [19431.915041401327, 6145.106142643705],
-  [19531.215041401327, 5979.506142643706],
-  [19630.515041401326, 5813.9061426437065],
-  [19630.515041401326, 5979.506142643706],
-  [19729.815041401325, 5813.9061426437065],
-  [19829.115041401325, 5979.506142643706],
-  [19729.815041401325, 5979.506142643706],
-  [19729.815041401325, 6145.106142643705],
-  [19729.815041401325, 6310.706142643705],
-  [19630.515041401326, 6476.306142643704],
-  [19729.815041401325, 6476.306142643704],
-  [19630.515041401326, 6310.706142643705],
-  [19531.215041401327, 6310.706142643705],
-  [19531.215041401327, 6476.306142643704],
-  [19630.515041401326, 6641.906142643704],
-  [19729.815041401325, 6807.506142643703],
-  [19829.115041401325, 6973.106142643703],
-  [19928.415041401324, 6973.106142643703],
-  [19928.415041401324, 7138.706142643702],
-  [20027.715041401323, 7138.706142643702],
-  [20027.715041401323, 7304.306142643702],
-  [19928.415041401324, 7304.306142643702],
-  [19829.115041401325, 7304.306142643702],
-  [19829.115041401325, 7469.906142643701],
-  [19928.415041401324, 7469.906142643701],
-  [19928.415041401324, 7635.5061426437005],
-  [19928.415041401324, 7801.1061426437],
-  [20027.715041401323, 7635.5061426437005],
-  [20027.715041401323, 7801.1061426437],
-  [20127.015041401322, 7801.1061426437],
-  [20226.31504140132, 7801.1061426437],
-  [20325.61504140132, 7801.1061426437],
-  [20226.31504140132, 7635.5061426437005],
-  [20226.31504140132, 7469.906142643701],
-  [20226.31504140132, 7304.306142643702],
-  [20127.015041401322, 7304.306142643702],
-  [20027.715041401323, 7469.906142643701],
-  [20127.015041401322, 7469.906142643701],
-  [20127.015041401322, 7635.5061426437005],
-  [2748.790306732237, 2362.9553147492866],
-  [2848.0903067322365, 2528.5553147492865],
-  [2748.790306732237, 2694.1553147492864],
-  [2649.490306732237, 2859.7553147492863],
-  [2748.790306732237, 3025.355314749286],
-  [2848.0903067322365, 2859.7553147492863],
-  [2848.0903067322365, 2694.1553147492864],
-  [2947.3903067322362, 2694.1553147492864],
-  [3046.690306732236, 2859.7553147492863],
-  [3145.9903067322357, 2694.1553147492864],
-  [3145.9903067322357, 2528.5553147492865],
-  [3046.690306732236, 2694.1553147492864],
-  [3145.9903067322357, 2859.7553147492863],
-  [3046.690306732236, 3025.355314749286],
-  [3145.9903067322357, 3025.355314749286],
-  [3245.2903067322354, 3190.955314749286],
-  [3245.2903067322354, 3356.555314749286],
-  [3344.590306732235, 3522.155314749286],
-  [3443.890306732235, 3356.555314749286],
-  [3543.1903067322346, 3356.555314749286],
-  [3642.4903067322343, 3190.955314749286],
-  [3741.790306732234, 3025.355314749286],
-  [3741.790306732234, 2859.7553147492863],
-  [3841.090306732234, 3025.355314749286],
-  [3841.090306732234, 3190.955314749286],
-  [3741.790306732234, 3190.955314749286],
-  [3642.4903067322343, 3025.355314749286],
-  [3543.1903067322346, 3025.355314749286],
-  [3543.1903067322346, 2859.7553147492863],
-  [3443.890306732235, 3025.355314749286],
-  [3443.890306732235, 3190.955314749286],
-  [3543.1903067322346, 3190.955314749286],
-  [3642.4903067322343, 3356.555314749286],
-  [3543.1903067322346, 3522.155314749286],
-  [3443.890306732235, 3687.755314749286],
-  [3443.890306732235, 3853.3553147492858],
-  [3344.590306732235, 3687.755314749286],
-  [3245.2903067322354, 3853.3553147492858],
-  [3245.2903067322354, 3687.755314749286],
-  [3145.9903067322357, 3687.755314749286],
-  [3046.690306732236, 3853.3553147492858],
-  [3145.9903067322357, 4018.9553147492857],
-  [3145.9903067322357, 3853.3553147492858],
-  [3046.690306732236, 3687.755314749286],
-  [3145.9903067322357, 3522.155314749286],
-  [3145.9903067322357, 3356.555314749286],
-  [3145.9903067322357, 3190.955314749286],
-  [3046.690306732236, 3190.955314749286],
-  [3046.690306732236, 3356.555314749286],
-  [2947.3903067322362, 3356.555314749286],
-  [2848.0903067322365, 3190.955314749286],
-  [2947.3903067322362, 3025.355314749286],
-  [2848.0903067322365, 3025.355314749286],
-  [2748.790306732237, 2859.7553147492863],
-  [2649.490306732237, 2694.1553147492864],
-  [2748.790306732237, 2528.5553147492865],
-  [2848.0903067322365, 2362.9553147492866],
-  [2748.790306732237, 2197.3553147492867],
-  [2649.490306732237, 2362.9553147492866],
-  [2649.490306732237, 2197.3553147492867],
-  [2550.1903067322373, 2362.9553147492866],
-  [2450.8903067322376, 2362.9553147492866],
-  [2351.590306732238, 2528.5553147492865],
-  [2252.290306732238, 2528.5553147492865],
-  [2351.590306732238, 2362.9553147492866],
-  [2252.290306732238, 2197.3553147492867],
-  [2351.590306732238, 2197.3553147492867],
-  [2351.590306732238, 2031.7553147492865],
-  [2351.590306732238, 1866.1553147492864],
-  [2252.290306732238, 1866.1553147492864],
-  [2351.590306732238, 1700.5553147492863],
-  [2450.8903067322376, 1534.9553147492861],
-  [2351.590306732238, 1369.355314749286],
-  [2252.290306732238, 1203.7553147492858],
-  [2252.290306732238, 1369.355314749286],
-  [2252.290306732238, 1534.9553147492861],
-  [2152.9903067322384, 1369.355314749286],
-  [2053.6903067322387, 1369.355314749286],
-  [1954.3903067322387, 1203.7553147492858],
-  [1855.0903067322388, 1203.7553147492858],
-  [1755.7903067322388, 1038.1553147492857],
-  [1656.4903067322389, 1038.1553147492857],
-  [1557.190306732239, 872.5553147492857],
-  [1457.890306732239, 1038.1553147492857],
-  [1457.890306732239, 872.5553147492857],
-  [1457.890306732239, 706.9553147492858],
-  [1557.190306732239, 706.9553147492858],
-  [1656.4903067322389, 872.5553147492857],
-  [1656.4903067322389, 706.9553147492858],
-  [1755.7903067322388, 706.9553147492858],
-  [1656.4903067322389, 541.3553147492859],
-  [1557.190306732239, 375.7553147492859],
-  [1656.4903067322389, 210.1553147492859],
-  [1755.7903067322388, 44.55531474928592],
-  [1656.4903067322389, 44.55531474928592],
-  [1557.190306732239, 210.1553147492859],
-  [1457.890306732239, 210.1553147492859],
-  [1457.890306732239, 44.55531474928592],
-  [1358.590306732239, 210.1553147492859],
-  [1358.590306732239, 375.75531474928584],
-  [1259.290306732239, 210.15531474928585],
-  [1259.290306732239, 375.75531474928584],
-  [1259.290306732239, 541.3553147492859],
-  [1358.590306732239, 706.9553147492858],
-  [1358.590306732239, 872.5553147492857],
-  [1259.290306732239, 706.9553147492858],
-  [1259.290306732239, 872.5553147492857],
-  [1259.290306732239, 1038.1553147492857],
-  [1358.590306732239, 1203.7553147492858],
-  [1358.590306732239, 1038.1553147492857],
-  [1457.890306732239, 1203.7553147492858],
-  [1557.190306732239, 1369.355314749286],
-  [1656.4903067322389, 1203.7553147492858],
-  [1557.190306732239, 1203.7553147492858],
-  [1557.190306732239, 1038.1553147492857],
-  [17254.572515546668, 1460.5807801244923],
-  [17353.872515546667, 1626.1807801244925],
-  [17453.172515546667, 1791.7807801244926],
-  [17552.472515546666, 1791.7807801244926],
-  [17453.172515546667, 1626.1807801244925],
-  [17353.872515546667, 1791.7807801244926],
-  [17453.172515546667, 1957.3807801244927],
-  [17353.872515546667, 2122.980780124493],
-  [17453.172515546667, 2288.580780124493],
-  [17353.872515546667, 2454.1807801244927],
-  [17453.172515546667, 2619.7807801244926],
-  [17552.472515546666, 2619.7807801244926],
-  [17453.172515546667, 2785.3807801244925],
-  [17353.872515546667, 2619.7807801244926],
-  [17254.572515546668, 2454.1807801244927],
-  [17254.572515546668, 2288.580780124493],
-  [17353.872515546667, 2288.580780124493],
-  [17453.172515546667, 2122.980780124493],
-  [17552.472515546666, 2288.580780124493],
-  [17552.472515546666, 2454.1807801244927],
-  [17453.172515546667, 2454.1807801244927],
-  [4447.67624466283, 4761.1416826913],
-  [4546.97624466283, 4595.541682691301],
-  [4546.97624466283, 4429.941682691301],
-  [4447.67624466283, 4429.941682691301],
-  [4447.67624466283, 4595.541682691301],
-  [4348.37624466283, 4595.541682691301],
-  [4249.07624466283, 4595.541682691301],
-  [4348.37624466283, 4761.1416826913],
-  [4249.07624466283, 4761.1416826913],
-  [4348.37624466283, 4926.7416826912995],
-  [4348.37624466283, 5092.341682691299],
-  [4447.67624466283, 5257.941682691298],
-  [4546.97624466283, 5257.941682691298],
-  [4646.27624466283, 5092.341682691299],
-  [4546.97624466283, 5092.341682691299],
-  [4646.27624466283, 4926.7416826912995],
-  [4646.27624466283, 4761.1416826913],
-  [4546.97624466283, 4761.1416826913],
-  [4646.27624466283, 4595.541682691301],
-  [4745.5762446628305, 4595.541682691301],
-  [4646.27624466283, 4429.941682691301],
-  [4745.5762446628305, 4429.941682691301],
-  [4844.876244662831, 4595.541682691301],
-  [4745.5762446628305, 4761.1416826913],
-  [4745.5762446628305, 4926.7416826912995],
-  [4844.876244662831, 4761.1416826913],
-  [4944.176244662831, 4761.1416826913],
-  [5043.476244662831, 4926.7416826912995],
-  [5043.476244662831, 4761.1416826913],
-  [5142.776244662831, 4926.7416826912995],
-  [5142.776244662831, 4761.1416826913],
-  [5242.076244662831, 4595.541682691301],
-  [5142.776244662831, 4595.541682691301],
-  [5242.076244662831, 4429.941682691301],
-  [5242.076244662831, 4264.341682691302],
-  [5142.776244662831, 4429.941682691301],
-  [5043.476244662831, 4595.541682691301],
-  [5043.476244662831, 4429.941682691301],
-  [5043.476244662831, 4264.341682691302],
-  [5142.776244662831, 4098.741682691302],
-  [5043.476244662831, 4098.741682691302],
-  [4944.176244662831, 3933.1416826913023],
-  [4944.176244662831, 4098.741682691302],
-  [4944.176244662831, 4264.341682691302],
-  [4844.876244662831, 4098.741682691302],
-  [4745.5762446628305, 4264.341682691302],
-  [4646.27624466283, 4098.741682691302],
-  [4546.97624466283, 3933.1416826913023],
-  [4447.67624466283, 4098.741682691302],
-  [4546.97624466283, 4264.341682691302],
-  [4447.67624466283, 4264.341682691302],
-  [4546.97624466283, 4098.741682691302],
-  [4646.27624466283, 3933.1416826913023],
-  [4546.97624466283, 3767.5416826913024],
-  [4447.67624466283, 3601.9416826913025],
-  [4447.67624466283, 3767.5416826913024],
-  [4348.37624466283, 3767.5416826913024],
-  [4348.37624466283, 3933.1416826913023],
-  [4249.07624466283, 3767.5416826913024],
-  [4249.07624466283, 3933.1416826913023],
-  [4149.776244662829, 3933.1416826913023],
-  [4050.4762446628297, 4098.741682691302],
-  [4050.4762446628297, 3933.1416826913023],
-  [3951.17624466283, 3933.1416826913023],
-  [3951.17624466283, 4098.741682691302],
-  [3851.8762446628302, 4264.341682691302],
-  [3851.8762446628302, 4098.741682691302],
-  [3752.5762446628305, 4098.741682691302],
-  [3653.276244662831, 4264.341682691302],
-  [3553.976244662831, 4429.941682691301],
-  [3553.976244662831, 4595.541682691301],
-  [3454.6762446628313, 4429.941682691301],
-  [3553.976244662831, 4264.341682691302],
-  [3653.276244662831, 4429.941682691301],
-  [3752.5762446628305, 4264.341682691302],
-  [3752.5762446628305, 4429.941682691301],
-  [3851.8762446628302, 4595.541682691301],
-  [3851.8762446628302, 4429.941682691301],
-  [3951.17624466283, 4429.941682691301],
-  [4050.4762446628297, 4264.341682691302],
-  [4149.776244662829, 4098.741682691302],
-  [4249.07624466283, 4264.341682691302],
-  [4348.37624466283, 4098.741682691302],
-  [4447.67624466283, 3933.1416826913023],
-  [9574.088902135607, 7352.26293905581],
-  [9474.788902135606, 7352.26293905581],
-  [9375.488902135605, 7186.662939055811],
-  [9474.788902135606, 7021.0629390558115],
-  [9574.088902135607, 7021.0629390558115],
-  [9474.788902135606, 7186.662939055811],
-  [9574.088902135607, 7186.662939055811],
-  [9673.388902135608, 7021.0629390558115],
-  [9673.388902135608, 6855.462939055812],
-  [9772.68890213561, 6689.862939055813],
-  [9673.388902135608, 6689.862939055813],
-  [9772.68890213561, 6524.262939055813],
-  [9871.98890213561, 6358.662939055814],
-  [9971.288902135611, 6524.262939055813],
-  [10070.588902135612, 6358.662939055814],
-  [10070.588902135612, 6193.062939055814],
-  [9971.288902135611, 6027.462939055815],
-  [9971.288902135611, 5861.862939055815],
-  [9871.98890213561, 5861.862939055815],
-  [9871.98890213561, 5696.262939055816],
-  [9971.288902135611, 5530.662939055816],
-  [10070.588902135612, 5530.662939055816],
-  [10070.588902135612, 5696.262939055816],
-  [10169.888902135614, 5861.862939055815],
-  [10169.888902135614, 5696.262939055816],
-  [10070.588902135612, 5861.862939055815],
-  [10169.888902135614, 6027.462939055815],
-  [10169.888902135614, 6193.062939055814],
-  [10269.188902135615, 6027.462939055815],
-  [10269.188902135615, 5861.862939055815],
-  [10368.488902135616, 6027.462939055815],
-  [10269.188902135615, 6193.062939055814],
-  [10269.188902135615, 6358.662939055814],
-  [10169.888902135614, 6358.662939055814],
-  [10070.588902135612, 6524.262939055813],
-  [10070.588902135612, 6689.862939055813],
-  [9971.288902135611, 6855.462939055812],
-  [9971.288902135611, 7021.0629390558115],
-  [10070.588902135612, 7186.662939055811],
-  [10169.888902135614, 7186.662939055811],
-  [10269.188902135615, 7186.662939055811],
-  [10169.888902135614, 7352.26293905581],
-  [10070.588902135612, 7352.26293905581],
-  [10169.888902135614, 7517.86293905581],
-  [10169.888902135614, 7683.462939055809],
-  [10269.188902135615, 7517.86293905581],
-  [10368.488902135616, 7683.462939055809],
-  [10467.788902135617, 7683.462939055809],
-  [10368.488902135616, 7517.86293905581],
-  [10269.188902135615, 7352.26293905581],
-  [10368.488902135616, 7352.26293905581],
-  [10368.488902135616, 7186.662939055811],
-  [10368.488902135616, 7021.0629390558115],
-  [10368.488902135616, 6855.462939055812],
-  [10269.188902135615, 6855.462939055812],
-  [10169.888902135614, 6855.462939055812],
-  [10169.888902135614, 7021.0629390558115],
-  [10070.588902135612, 7021.0629390558115],
-  [10070.588902135612, 6855.462939055812],
-  [10169.888902135614, 6689.862939055813],
-  [10269.188902135615, 6689.862939055813],
-  [10169.888902135614, 6524.262939055813],
-  [10269.188902135615, 6524.262939055813],
-  [10368.488902135616, 6524.262939055813],
-  [10368.488902135616, 6358.662939055814],
-  [10467.788902135617, 6358.662939055814],
-  [10467.788902135617, 6193.062939055814],
-  [10567.088902135618, 6358.662939055814],
-  [10567.088902135618, 6193.062939055814],
-  [10666.388902135619, 6193.062939055814],
-  [10666.388902135619, 6358.662939055814],
-  [10567.088902135618, 6524.262939055813],
-  [10467.788902135617, 6524.262939055813],
-  [10567.088902135618, 6689.862939055813],
-  [10467.788902135617, 6855.462939055812],
-  [10567.088902135618, 7021.0629390558115],
-  [10467.788902135617, 7021.0629390558115],
-  [10567.088902135618, 6855.462939055812],
-  [10467.788902135617, 6689.862939055813],
-  [10368.488902135616, 6689.862939055813],
-  [1073.6944354374714, 1154.3681204032646],
-  [974.3944354374713, 1319.9681204032647],
-  [875.0944354374712, 1319.9681204032647],
-  [775.7944354374712, 1154.3681204032646],
-  [775.7944354374712, 988.7681204032646],
-  [875.0944354374712, 823.1681204032647],
-  [875.0944354374712, 657.5681204032647],
-  [775.7944354374712, 823.1681204032647],
-  [676.4944354374711, 657.5681204032647],
-  [676.4944354374711, 491.9681204032648],
-  [775.7944354374712, 657.5681204032647],
-  [676.4944354374711, 823.1681204032647],
-  [676.4944354374711, 988.7681204032646],
-  [577.194435437471, 823.1681204032647],
-  [577.194435437471, 988.7681204032646],
-  [577.194435437471, 1154.3681204032646],
-  [676.4944354374711, 1319.9681204032647],
-  [577.194435437471, 1319.9681204032647],
-  [477.89443543747103, 1319.9681204032647],
-  [577.194435437471, 1485.5681204032649],
-  [477.89443543747103, 1651.168120403265],
-  [577.194435437471, 1816.7681204032651],
-  [477.89443543747103, 1816.7681204032651],
-  [378.5944354374711, 1982.3681204032653],
-  [378.5944354374711, 2147.9681204032654],
-  [279.2944354374711, 2313.5681204032653],
-  [179.99443543747114, 2147.9681204032654],
-  [80.69443543747114, 2313.5681204032653],
-  [80.69443543747114, 2479.168120403265],
-  [179.9944354374711, 2644.768120403265],
-  [179.9944354374711, 2479.168120403265],
-  [179.9944354374711, 2313.5681204032653],
-  [80.69443543747111, 2147.9681204032654],
-  [80.69443543747111, 1982.3681204032653],
-  [179.9944354374711, 1982.3681204032653],
-  [179.9944354374711, 1816.7681204032651],
-  [80.69443543747111, 1816.7681204032651],
-  [179.9944354374711, 1651.168120403265],
-  [80.69443543747111, 1485.5681204032649],
-  [80.69443543747111, 1319.9681204032647],
-  [179.9944354374711, 1154.3681204032646],
-  [80.69443543747111, 1154.3681204032646],
-  [179.9944354374711, 988.7681204032646],
-  [279.2944354374711, 823.1681204032647],
-  [378.5944354374711, 657.5681204032647],
-  [378.5944354374711, 823.1681204032647],
-  [477.89443543747103, 823.1681204032647],
-  [477.89443543747103, 657.5681204032647],
-  [378.5944354374711, 491.9681204032648],
-  [477.89443543747103, 326.3681204032648],
-  [477.89443543747103, 160.76812040326482],
-  [378.5944354374711, 160.76812040326482],
-  [279.2944354374711, 326.3681204032648],
-  [179.99443543747114, 491.9681204032648],
-  [179.99443543747114, 326.3681204032648],
-  [279.2944354374711, 491.9681204032648],
-  [279.2944354374711, 657.5681204032647],
-  [179.99443543747114, 823.1681204032647],
-  [279.2944354374711, 988.7681204032646],
-  [279.2944354374711, 1154.3681204032646],
-  [378.5944354374711, 1319.9681204032647],
-  [477.89443543747103, 1485.5681204032649],
-  [577.194435437471, 1651.168120403265],
-  [676.4944354374711, 1651.168120403265],
-  [775.7944354374712, 1816.7681204032651],
-  [676.4944354374711, 1816.7681204032651],
-  [775.7944354374712, 1651.168120403265],
-  [875.0944354374712, 1651.168120403265],
-  [974.3944354374713, 1651.168120403265],
-  [875.0944354374712, 1485.5681204032649],
-  [775.7944354374712, 1485.5681204032649],
-  [676.4944354374711, 1485.5681204032649],
-  [775.7944354374712, 1319.9681204032647],
-  [676.4944354374711, 1154.3681204032646],
-  [3138.413562431697, 2355.845602060523],
-  [3039.113562431697, 2521.445602060523],
-  [3039.113562431697, 2355.845602060523],
-  [3039.113562431697, 2190.245602060523],
-  [3138.413562431697, 2024.645602060523],
-  [3237.7135624316966, 1859.045602060523],
-  [3237.7135624316966, 2024.645602060523],
-  [3337.0135624316963, 1859.045602060523],
-  [3337.0135624316963, 1693.4456020605228],
-  [3436.313562431696, 1527.8456020605227],
-  [3535.6135624316958, 1693.4456020605228],
-  [3535.6135624316958, 1859.045602060523],
-  [3634.9135624316955, 2024.645602060523],
-  [3734.213562431695, 2190.245602060523],
-  [3634.9135624316955, 2190.245602060523],
-  [3535.6135624316958, 2190.245602060523],
-  [3535.6135624316958, 2355.845602060523],
-  [3535.6135624316958, 2521.445602060523],
-  [3436.313562431696, 2687.045602060523],
-  [3436.313562431696, 2852.645602060523],
-  [3535.6135624316958, 2687.045602060523],
-  [3634.9135624316955, 2521.445602060523],
-  [3634.9135624316955, 2355.845602060523],
-  [3734.213562431695, 2355.845602060523],
-  [3833.513562431695, 2190.245602060523],
-  [3932.8135624316947, 2024.645602060523],
-  [3833.513562431695, 1859.045602060523],
-  [3833.513562431695, 1693.4456020605228],
-  [3734.213562431695, 1859.045602060523],
-  [3734.213562431695, 1693.4456020605228],
-  [3734.213562431695, 1527.8456020605227],
-  [3634.9135624316955, 1527.8456020605227],
-  [3634.9135624316955, 1693.4456020605228],
-  [3535.6135624316958, 1527.8456020605227],
-  [3634.9135624316955, 1362.2456020605225],
-  [3535.6135624316958, 1362.2456020605225],
-  [3436.313562431696, 1196.6456020605224],
-  [3535.6135624316958, 1196.6456020605224],
-  [3535.6135624316958, 1031.0456020605222],
-  [3436.313562431696, 1031.0456020605222],
-  [3535.6135624316958, 865.4456020605222],
-  [3436.313562431696, 865.4456020605222],
-  [3535.6135624316958, 699.8456020605223],
-  [3634.9135624316955, 699.8456020605223],
-  [3535.6135624316958, 534.2456020605224],
-  [3436.313562431696, 368.64560206052244],
-  [3436.313562431696, 203.04560206052244],
-  [3337.0135624316963, 37.445602060522454],
-  [3436.313562431696, 37.445602060522454],
-  [3337.0135624316963, 203.04560206052244],
-  [3237.7135624316966, 37.445602060522454],
-  [3138.413562431697, 37.445602060522454],
-  [3237.7135624316966, 203.04560206052244],
-  [3337.0135624316963, 368.6456020605224],
-  [3436.313562431696, 534.2456020605224],
-  [3337.0135624316963, 699.8456020605223],
-  [3237.7135624316966, 534.2456020605224],
-  [3337.0135624316963, 534.2456020605224],
-  [3436.313562431696, 699.8456020605223],
-  [3337.0135624316963, 865.4456020605222],
-  [3237.7135624316966, 865.4456020605222],
-  [3337.0135624316963, 1031.0456020605222],
-  [3237.7135624316966, 1196.6456020605224],
-  [3138.413562431697, 1362.2456020605225],
-  [3039.113562431697, 1527.8456020605227],
-  [3138.413562431697, 1527.8456020605227],
-  [3039.113562431697, 1693.4456020605228],
-  [2939.8135624316974, 1527.8456020605227],
-  [2840.5135624316977, 1362.2456020605225],
-  [2840.5135624316977, 1527.8456020605227],
-  [2840.5135624316977, 1693.4456020605228],
-  [2939.8135624316974, 1859.045602060523],
-  [2840.5135624316977, 2024.645602060523],
-  [2840.5135624316977, 1859.045602060523],
-  [2939.8135624316974, 1693.4456020605228],
-  [3039.113562431697, 1859.045602060523],
-  [3039.113562431697, 2024.645602060523],
-  [2939.8135624316974, 2190.245602060523],
-  [2939.8135624316974, 2024.645602060523],
-  [16388.412117675925, 1839.818884803299],
-  [16289.112117675924, 1839.818884803299],
-  [16388.412117675925, 1674.2188848032988],
-  [16487.712117675925, 1508.6188848032987],
-  [16487.712117675925, 1674.2188848032988],
-  [16388.412117675925, 1508.6188848032987],
-  [16289.112117675924, 1343.0188848032985],
-  [16289.112117675924, 1508.6188848032987],
-  [16189.812117675923, 1674.2188848032988],
-  [16090.512117675922, 1839.818884803299],
-  [16090.512117675922, 2005.418884803299],
-  [15991.212117675921, 2171.018884803299],
-  [16090.512117675922, 2336.618884803299],
-  [16090.512117675922, 2502.218884803299],
-  [16090.512117675922, 2667.8188848032987],
-  [15991.212117675921, 2833.4188848032986],
-  [15991.212117675921, 2999.0188848032985],
-  [15891.91211767592, 3164.6188848032984],
-  [15891.91211767592, 3330.2188848032984],
-  [15991.212117675921, 3330.2188848032984],
-  [16090.512117675922, 3330.2188848032984],
-  [16189.812117675923, 3495.8188848032983],
-  [16289.112117675924, 3495.8188848032983],
-  [16189.812117675923, 3330.2188848032984],
-  [16189.812117675923, 3164.6188848032984],
-  [16289.112117675924, 3164.6188848032984],
-  [16388.412117675925, 3164.6188848032984],
-  [16388.412117675925, 3330.2188848032984],
-  [16487.712117675925, 3330.2188848032984],
-  [16587.012117675924, 3495.8188848032983],
-  [16587.012117675924, 3661.418884803298],
-  [16686.312117675923, 3661.418884803298],
-  [16785.612117675922, 3661.418884803298],
-  [16884.91211767592, 3661.418884803298],
-  [16984.21211767592, 3661.418884803298],
-  [16884.91211767592, 3827.018884803298],
-  [16884.91211767592, 3992.618884803298],
-  [16984.21211767592, 3827.018884803298],
-  [17083.51211767592, 3661.418884803298],
-  [17182.81211767592, 3495.8188848032983],
-  [17182.81211767592, 3330.2188848032984],
-  [17282.11211767592, 3164.6188848032984],
-  [17282.11211767592, 3330.2188848032984],
-  [17182.81211767592, 3164.6188848032984],
-  [17083.51211767592, 3164.6188848032984],
-  [16984.21211767592, 3330.2188848032984],
-  [16984.21211767592, 3495.8188848032983],
-  [17083.51211767592, 3330.2188848032984],
-  [16984.21211767592, 3164.6188848032984],
-  [16984.21211767592, 2999.0188848032985],
-  [17083.51211767592, 2833.4188848032986],
-  [17083.51211767592, 2667.8188848032987],
-  [17182.81211767592, 2667.8188848032987],
-  [17182.81211767592, 2833.4188848032986],
-  [17083.51211767592, 2999.0188848032985],
-  [16984.21211767592, 2833.4188848032986],
-  [16884.91211767592, 2833.4188848032986],
-  [16884.91211767592, 2999.0188848032985],
-  [16785.612117675922, 2999.0188848032985],
-  [16884.91211767592, 3164.6188848032984],
-  [16785.612117675922, 3164.6188848032984],
-  [16686.312117675923, 3164.6188848032984],
-  [16587.012117675924, 3164.6188848032984],
-  [16587.012117675924, 2999.0188848032985],
-  [16487.712117675925, 3164.6188848032984],
-  [16587.012117675924, 3330.2188848032984],
-  [16686.312117675923, 3495.8188848032983],
-  [16686.312117675923, 3330.2188848032984],
-  [16785.612117675922, 3330.2188848032984],
-  [16884.91211767592, 3495.8188848032983],
-  [16785.612117675922, 3495.8188848032983],
-  [16884.91211767592, 3330.2188848032984],
-  [1272.175991128079, 3842.7700224365044],
-  [1371.475991128079, 3842.7700224365044],
-  [1272.175991128079, 3677.1700224365045],
-  [1172.875991128079, 3511.5700224365046],
-  [1272.175991128079, 3511.5700224365046],
-  [1172.875991128079, 3345.9700224365047],
-  [1073.575991128079, 3180.3700224365048],
-  [1073.575991128079, 3014.770022436505],
-  [974.275991128079, 3014.770022436505],
-  [874.9759911280789, 3014.770022436505],
-  [775.6759911280789, 2849.170022436505],
-  [775.6759911280789, 3014.770022436505],
-  [775.6759911280789, 3180.3700224365048],
-  [676.3759911280788, 3345.9700224365047],
-  [676.3759911280788, 3511.5700224365046],
-  [775.6759911280789, 3677.1700224365045],
-  [676.3759911280788, 3842.7700224365044],
-  [577.0759911280787, 3842.7700224365044],
-  [577.0759911280787, 3677.1700224365045],
-  [676.3759911280788, 3677.1700224365045],
-  [775.6759911280789, 3511.5700224365046],
-  [775.6759911280789, 3345.9700224365047],
-  [874.9759911280789, 3345.9700224365047],
-  [874.9759911280789, 3180.3700224365048],
-  [974.275991128079, 3180.3700224365048],
-  [974.275991128079, 3345.9700224365047],
-  [1073.575991128079, 3511.5700224365046],
-  [1073.575991128079, 3677.1700224365045],
-  [1172.875991128079, 3677.1700224365045],
-  [1172.875991128079, 3842.7700224365044],
-  [1073.575991128079, 3842.7700224365044],
-  [1172.875991128079, 4008.3700224365043],
-  [1073.575991128079, 4008.3700224365043],
-  [974.275991128079, 3842.7700224365044],
-  [974.275991128079, 4008.3700224365043],
-  [874.9759911280789, 4008.3700224365043],
-  [775.6759911280789, 4008.3700224365043],
-  [874.9759911280789, 3842.7700224365044],
-  [974.275991128079, 3677.1700224365045],
-  [974.275991128079, 3511.5700224365046],
-  [1073.575991128079, 3345.9700224365047],
-  [1172.875991128079, 3180.3700224365048],
-  [1272.175991128079, 3180.3700224365048],
-  [1272.175991128079, 3345.9700224365047],
-  [1371.475991128079, 3180.3700224365048],
-  [1470.7759911280789, 3345.9700224365047],
-  [1371.475991128079, 3345.9700224365047],
-  [1371.475991128079, 3511.5700224365046],
-  [1470.7759911280789, 3511.5700224365046],
-  [1570.0759911280788, 3677.1700224365045],
-  [1470.7759911280789, 3677.1700224365045],
-  [1570.0759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3677.1700224365045],
-  [1768.6759911280787, 3842.7700224365044],
-  [1669.3759911280788, 3842.7700224365044],
-  [1768.6759911280787, 4008.3700224365043],
-  [1867.9759911280787, 3842.7700224365044],
-  [1967.2759911280787, 3677.1700224365045],
-  [2066.5759911280784, 3842.7700224365044],
-  [2165.875991128078, 3677.1700224365045],
-  [2066.5759911280784, 3511.5700224365046],
-  [2165.875991128078, 3511.5700224365046],
-  [2066.5759911280784, 3677.1700224365045],
-  [2165.875991128078, 3842.7700224365044],
-  [2265.175991128078, 4008.3700224365043],
-  [2364.4759911280776, 4008.3700224365043],
-  [2265.175991128078, 3842.7700224365044],
-  [2364.4759911280776, 3677.1700224365045],
-  [2463.7759911280773, 3842.7700224365044],
-  [2463.7759911280773, 4008.3700224365043],
-  [2364.4759911280776, 3842.7700224365044]
-];
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    var y = panels.length;
-  }
-}
diff --git a/tests/language/larger_implicit_getter_test.dart b/tests/language/larger_implicit_getter_test.dart
deleted file mode 100644
index b28c1e0..0000000
--- a/tests/language/larger_implicit_getter_test.dart
+++ /dev/null
@@ -1,4100 +0,0 @@
-// Copyright (c) 2015, 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.
-// Dart test program for testing compilation of large implicit getters.
-
-import 'package:expect/expect.dart';
-
-List<List> panels = [
-  [6853.940039224797, 6050.837897021371],
-  [6953.240039224797, 6050.837897021371],
-  [7052.5400392247975, 5885.237897021371],
-  [7052.5400392247975, 5719.637897021372],
-  [7151.840039224798, 5885.237897021371],
-  [7052.5400392247975, 6050.837897021371],
-  [7052.5400392247975, 6216.43789702137],
-  [7052.5400392247975, 6382.03789702137],
-  [6953.240039224797, 6382.03789702137],
-  [6953.240039224797, 6216.43789702137],
-  [6853.940039224797, 6216.43789702137],
-  [6853.940039224797, 6382.03789702137],
-  [6754.640039224797, 6216.43789702137],
-  [6754.640039224797, 6382.03789702137],
-  [6754.640039224797, 6547.637897021369],
-  [6754.640039224797, 6713.237897021369],
-  [6655.340039224797, 6713.237897021369],
-  [6754.640039224797, 6878.837897021368],
-  [6853.940039224797, 6713.237897021369],
-  [6853.940039224797, 6878.837897021368],
-  [6953.240039224797, 6713.237897021369],
-  [7052.5400392247975, 6547.637897021369],
-  [7151.840039224798, 6713.237897021369],
-  [7151.840039224798, 6547.637897021369],
-  [7151.840039224798, 6382.03789702137],
-  [7251.140039224798, 6547.637897021369],
-  [7251.140039224798, 6713.237897021369],
-  [7350.440039224798, 6878.837897021368],
-  [7449.740039224798, 6878.837897021368],
-  [7449.740039224798, 6713.237897021369],
-  [7549.040039224798, 6547.637897021369],
-  [7449.740039224798, 6382.03789702137],
-  [7449.740039224798, 6216.43789702137],
-  [7549.040039224798, 6050.837897021371],
-  [7648.340039224799, 6216.43789702137],
-  [7549.040039224798, 6382.03789702137],
-  [7648.340039224799, 6382.03789702137],
-  [7747.640039224799, 6216.43789702137],
-  [7846.940039224799, 6382.03789702137],
-  [7946.240039224799, 6382.03789702137],
-  [7946.240039224799, 6547.637897021369],
-  [7846.940039224799, 6713.237897021369],
-  [7946.240039224799, 6713.237897021369],
-  [8045.540039224799, 6547.637897021369],
-  [8045.540039224799, 6713.237897021369],
-  [7946.240039224799, 6878.837897021368],
-  [7946.240039224799, 7044.4378970213675],
-  [8045.540039224799, 7210.037897021367],
-  [8144.8400392247995, 7375.637897021366],
-  [8144.8400392247995, 7541.237897021366],
-  [8045.540039224799, 7375.637897021366],
-  [8144.8400392247995, 7210.037897021367],
-  [8045.540039224799, 7044.4378970213675],
-  [7946.240039224799, 7210.037897021367],
-  [7846.940039224799, 7210.037897021367],
-  [7946.240039224799, 7375.637897021366],
-  [8045.540039224799, 7541.237897021366],
-  [8144.8400392247995, 7706.837897021365],
-  [8244.1400392248, 7541.237897021366],
-  [8343.4400392248, 7541.237897021366],
-  [8343.4400392248, 7706.837897021365],
-  [8244.1400392248, 7706.837897021365],
-  [4735.523842661975, 3503.497768214323],
-  [4636.223842661975, 3337.897768214323],
-  [4536.923842661975, 3337.897768214323],
-  [4437.623842661975, 3172.2977682143232],
-  [4338.323842661975, 3172.2977682143232],
-  [4239.023842661974, 3172.2977682143232],
-  [4338.323842661975, 3006.6977682143233],
-  [4437.623842661975, 2841.0977682143234],
-  [4338.323842661975, 2675.4977682143235],
-  [4338.323842661975, 2509.8977682143236],
-  [4239.023842661974, 2675.4977682143235],
-  [4139.723842661974, 2509.8977682143236],
-  [4040.4238426619745, 2344.2977682143237],
-  [4139.723842661974, 2178.697768214324],
-  [4239.023842661974, 2178.697768214324],
-  [4139.723842661974, 2344.2977682143237],
-  [4040.4238426619745, 2178.697768214324],
-  [4139.723842661974, 2013.0977682143237],
-  [4139.723842661974, 1847.4977682143235],
-  [4239.023842661974, 2013.0977682143237],
-  [4239.023842661974, 1847.4977682143235],
-  [4338.323842661975, 1847.4977682143235],
-  [4437.623842661975, 1847.4977682143235],
-  [4536.923842661975, 1681.8977682143234],
-  [4437.623842661975, 1516.2977682143232],
-  [4536.923842661975, 1516.2977682143232],
-  [4536.923842661975, 1350.697768214323],
-  [4437.623842661975, 1350.697768214323],
-  [4536.923842661975, 1185.097768214323],
-  [4636.223842661975, 1019.497768214323],
-  [4536.923842661975, 853.897768214323],
-  [4636.223842661975, 853.897768214323],
-  [4735.523842661975, 688.2977682143231],
-  [4636.223842661975, 522.6977682143232],
-  [4636.223842661975, 357.09776821432325],
-  [4735.523842661975, 357.09776821432325],
-  [4735.523842661975, 522.6977682143232],
-  [4636.223842661975, 688.2977682143231],
-  [4735.523842661975, 853.897768214323],
-  [4834.8238426619755, 853.897768214323],
-  [4735.523842661975, 1019.497768214323],
-  [4735.523842661975, 1185.097768214323],
-  [4735.523842661975, 1350.697768214323],
-  [4834.8238426619755, 1516.2977682143232],
-  [4735.523842661975, 1516.2977682143232],
-  [4834.8238426619755, 1350.697768214323],
-  [4834.8238426619755, 1185.097768214323],
-  [4934.123842661976, 1350.697768214323],
-  [5033.423842661976, 1185.097768214323],
-  [5033.423842661976, 1019.497768214323],
-  [5033.423842661976, 853.897768214323],
-  [4934.123842661976, 853.897768214323],
-  [4934.123842661976, 1019.497768214323],
-  [4834.8238426619755, 1019.497768214323],
-  [4934.123842661976, 1185.097768214323],
-  [5033.423842661976, 1350.697768214323],
-  [5132.723842661976, 1350.697768214323],
-  [5132.723842661976, 1185.097768214323],
-  [5232.023842661976, 1019.497768214323],
-  [5232.023842661976, 1185.097768214323],
-  [5331.323842661976, 1019.497768214323],
-  [5430.623842661977, 1019.497768214323],
-  [5529.923842661977, 1185.097768214323],
-  [5430.623842661977, 1350.697768214323],
-  [5430.623842661977, 1516.2977682143232],
-  [5529.923842661977, 1350.697768214323],
-  [5629.223842661977, 1350.697768214323],
-  [5728.523842661977, 1350.697768214323],
-  [5728.523842661977, 1516.2977682143232],
-  [5728.523842661977, 1681.8977682143234],
-  [5629.223842661977, 1516.2977682143232],
-  [5529.923842661977, 1516.2977682143232],
-  [5629.223842661977, 1681.8977682143234],
-  [5529.923842661977, 1681.8977682143234],
-  [5430.623842661977, 1847.4977682143235],
-  [5331.323842661976, 1847.4977682143235],
-  [5331.323842661976, 2013.0977682143237],
-  [5232.023842661976, 2178.697768214324],
-  [5132.723842661976, 2013.0977682143237],
-  [5132.723842661976, 2178.697768214324],
-  [5232.023842661976, 2013.0977682143237],
-  [5232.023842661976, 1847.4977682143235],
-  [5232.023842661976, 1681.8977682143234],
-  [5331.323842661976, 1681.8977682143234],
-  [5331.323842661976, 1516.2977682143232],
-  [5331.323842661976, 1350.697768214323],
-  [5232.023842661976, 1350.697768214323],
-  [5232.023842661976, 1516.2977682143232],
-  [5132.723842661976, 1516.2977682143232],
-  [5132.723842661976, 1681.8977682143234],
-  [5033.423842661976, 1847.4977682143235],
-  [5132.723842661976, 1847.4977682143235],
-  [5033.423842661976, 2013.0977682143237],
-  [4934.123842661976, 2178.697768214324],
-  [5033.423842661976, 2344.2977682143237],
-  [4934.123842661976, 2344.2977682143237],
-  [4834.8238426619755, 2178.697768214324],
-  [4834.8238426619755, 2344.2977682143237],
-  [4735.523842661975, 2344.2977682143237],
-  [4636.223842661975, 2344.2977682143237],
-  [4536.923842661975, 2178.697768214324],
-  [4437.623842661975, 2013.0977682143237],
-  [4338.323842661975, 2178.697768214324],
-  [4437.623842661975, 2344.2977682143237],
-  [4536.923842661975, 2509.8977682143236],
-  [4636.223842661975, 2675.4977682143235],
-  [4636.223842661975, 2509.8977682143236],
-  [4536.923842661975, 2675.4977682143235],
-  [4636.223842661975, 2841.0977682143234],
-  [4536.923842661975, 2841.0977682143234],
-  [4636.223842661975, 3006.6977682143233],
-  [4735.523842661975, 3172.2977682143232],
-  [4834.8238426619755, 3006.6977682143233],
-  [4735.523842661975, 2841.0977682143234],
-  [4735.523842661975, 3006.6977682143233],
-  [4636.223842661975, 3172.2977682143232],
-  [4735.523842661975, 3337.897768214323],
-  [4834.8238426619755, 3503.497768214323],
-  [4735.523842661975, 3669.097768214323],
-  [4834.8238426619755, 3834.697768214323],
-  [4834.8238426619755, 3669.097768214323],
-  [4934.123842661976, 3503.497768214323],
-  [5033.423842661976, 3503.497768214323],
-  [5033.423842661976, 3337.897768214323],
-  [4934.123842661976, 3337.897768214323],
-  [4834.8238426619755, 3172.2977682143232],
-  [4834.8238426619755, 3337.897768214323],
-  [4934.123842661976, 3172.2977682143232],
-  [5033.423842661976, 3006.6977682143233],
-  [5132.723842661976, 2841.0977682143234],
-  [5132.723842661976, 3006.6977682143233],
-  [5232.023842661976, 3172.2977682143232],
-  [5232.023842661976, 3337.897768214323],
-  [5132.723842661976, 3337.897768214323],
-  [5232.023842661976, 3503.497768214323],
-  [5331.323842661976, 3337.897768214323],
-  [5331.323842661976, 3503.497768214323],
-  [5430.623842661977, 3669.097768214323],
-  [5331.323842661976, 3669.097768214323],
-  [5430.623842661977, 3503.497768214323],
-  [5430.623842661977, 3337.897768214323],
-  [5529.923842661977, 3172.2977682143232],
-  [5529.923842661977, 3337.897768214323],
-  [5629.223842661977, 3337.897768214323],
-  [5728.523842661977, 3337.897768214323],
-  [5728.523842661977, 3503.497768214323],
-  [5827.823842661977, 3503.497768214323],
-  [5927.1238426619775, 3669.097768214323],
-  [6026.423842661978, 3669.097768214323],
-  [6125.723842661978, 3503.497768214323],
-  [6125.723842661978, 3669.097768214323],
-  [6225.023842661978, 3503.497768214323],
-  [6225.023842661978, 3337.897768214323],
-  [6324.323842661978, 3337.897768214323],
-  [6423.623842661978, 3503.497768214323],
-  [6324.323842661978, 3669.097768214323],
-  [6225.023842661978, 3669.097768214323],
-  [6324.323842661978, 3834.697768214323],
-  [6423.623842661978, 3834.697768214323],
-  [6324.323842661978, 4000.297768214323],
-  [6225.023842661978, 3834.697768214323],
-  [6125.723842661978, 3834.697768214323],
-  [6125.723842661978, 4000.297768214323],
-  [6225.023842661978, 4000.297768214323],
-  [6225.023842661978, 4165.897768214322],
-  [6225.023842661978, 4331.497768214322],
-  [6125.723842661978, 4165.897768214322],
-  [6026.423842661978, 4000.2977682143223],
-  [5927.1238426619775, 4165.897768214322],
-  [6026.423842661978, 4331.497768214322],
-  [6026.423842661978, 4497.097768214321],
-  [5927.1238426619775, 4497.097768214321],
-  [5827.823842661977, 4662.697768214321],
-  [5728.523842661977, 4828.29776821432],
-  [5827.823842661977, 4828.29776821432],
-  [5927.1238426619775, 4828.29776821432],
-  [5927.1238426619775, 4662.697768214321],
-  [5827.823842661977, 4497.097768214321],
-  [5927.1238426619775, 4331.497768214322],
-  [5827.823842661977, 4165.897768214322],
-  [5728.523842661977, 4331.497768214322],
-  [5728.523842661977, 4165.897768214322],
-  [5629.223842661977, 4000.2977682143223],
-  [5629.223842661977, 3834.6977682143224],
-  [5529.923842661977, 3669.0977682143225],
-  [5629.223842661977, 3503.4977682143226],
-  [5728.523842661977, 3669.0977682143225],
-  [5827.823842661977, 3669.0977682143225],
-  [5927.1238426619775, 3834.6977682143224],
-  [5927.1238426619775, 4000.2977682143223],
-  [6026.423842661978, 4165.897768214322],
-  [6125.723842661978, 4331.497768214322],
-  [6225.023842661978, 4497.097768214321],
-  [6225.023842661978, 4662.697768214321],
-  [6324.323842661978, 4662.697768214321],
-  [6225.023842661978, 4828.29776821432],
-  [6324.323842661978, 4828.29776821432],
-  [6423.623842661978, 4828.29776821432],
-  [6324.323842661978, 4993.8977682143195],
-  [6225.023842661978, 5159.497768214319],
-  [6125.723842661978, 5159.497768214319],
-  [6026.423842661978, 5325.097768214318],
-  [5927.1238426619775, 5490.697768214318],
-  [6026.423842661978, 5656.297768214317],
-  [5927.1238426619775, 5821.897768214317],
-  [5927.1238426619775, 5987.497768214316],
-  [6026.423842661978, 5987.497768214316],
-  [6026.423842661978, 5821.897768214317],
-  [5927.1238426619775, 5656.297768214317],
-  [5827.823842661977, 5656.297768214317],
-  [5827.823842661977, 5490.697768214318],
-  [5728.523842661977, 5490.697768214318],
-  [5629.223842661977, 5325.097768214318],
-  [5629.223842661977, 5159.497768214319],
-  [5529.923842661977, 4993.8977682143195],
-  [5529.923842661977, 5159.497768214319],
-  [5629.223842661977, 4993.8977682143195],
-  [5629.223842661977, 4828.29776821432],
-  [5529.923842661977, 4662.697768214321],
-  [5430.623842661977, 4828.29776821432],
-  [5529.923842661977, 4828.29776821432],
-  [5629.223842661977, 4662.697768214321],
-  [5728.523842661977, 4662.697768214321],
-  [5629.223842661977, 4497.097768214321],
-  [5728.523842661977, 4497.097768214321],
-  [5827.823842661977, 4331.497768214322],
-  [10216.161365168813, 2951.605409896135],
-  [10116.861365168812, 2951.605409896135],
-  [10017.56136516881, 3117.205409896135],
-  [9918.26136516881, 3117.205409896135],
-  [9818.961365168809, 3117.205409896135],
-  [9719.661365168808, 3282.8054098961347],
-  [9620.361365168807, 3282.8054098961347],
-  [9620.361365168807, 3117.205409896135],
-  [9521.061365168805, 2951.605409896135],
-  [9521.061365168805, 2786.005409896135],
-  [9620.361365168807, 2786.005409896135],
-  [9719.661365168808, 2786.005409896135],
-  [9818.961365168809, 2620.405409896135],
-  [9918.26136516881, 2786.005409896135],
-  [9818.961365168809, 2951.605409896135],
-  [9818.961365168809, 2786.005409896135],
-  [9719.661365168808, 2620.405409896135],
-  [9719.661365168808, 2454.805409896135],
-  [9620.361365168807, 2289.2054098961353],
-  [9521.061365168805, 2123.6054098961354],
-  [9620.361365168807, 1958.0054098961352],
-  [9719.661365168808, 2123.6054098961354],
-  [9818.961365168809, 2289.2054098961353],
-  [9818.961365168809, 2123.6054098961354],
-  [9818.961365168809, 1958.0054098961352],
-  [9719.661365168808, 1958.0054098961352],
-  [9620.361365168807, 1792.405409896135],
-  [9620.361365168807, 1626.805409896135],
-  [9521.061365168805, 1461.2054098961348],
-  [9421.761365168804, 1295.6054098961347],
-  [9521.061365168805, 1130.0054098961346],
-  [9521.061365168805, 964.4054098961345],
-  [9421.761365168804, 964.4054098961345],
-  [9521.061365168805, 798.8054098961346],
-  [9620.361365168807, 798.8054098961346],
-  [9620.361365168807, 964.4054098961345],
-  [9620.361365168807, 1130.0054098961346],
-  [9620.361365168807, 1295.6054098961347],
-  [9620.361365168807, 1461.2054098961348],
-  [9719.661365168808, 1295.6054098961347],
-  [9818.961365168809, 1130.0054098961346],
-  [9918.26136516881, 964.4054098961345],
-  [9818.961365168809, 964.4054098961345],
-  [9918.26136516881, 798.8054098961346],
-  [10017.56136516881, 633.2054098961347],
-  [9918.26136516881, 467.60540989613474],
-  [9918.26136516881, 302.0054098961348],
-  [10017.56136516881, 302.0054098961348],
-  [10116.861365168812, 136.40540989613478],
-  [10116.861365168812, 302.0054098961348],
-  [10116.861365168812, 467.60540989613474],
-  [10116.861365168812, 633.2054098961347],
-  [10216.161365168813, 633.2054098961347],
-  [10216.161365168813, 798.8054098961346],
-  [10315.461365168814, 633.2054098961347],
-  [10315.461365168814, 798.8054098961346],
-  [10414.761365168815, 798.8054098961346],
-  [10514.061365168816, 633.2054098961347],
-  [10514.061365168816, 798.8054098961346],
-  [10414.761365168815, 964.4054098961345],
-  [10315.461365168814, 964.4054098961345],
-  [10216.161365168813, 964.4054098961345],
-  [10116.861365168812, 798.8054098961346],
-  [10017.56136516881, 798.8054098961346],
-  [10116.861365168812, 964.4054098961345],
-  [10216.161365168813, 1130.0054098961346],
-  [10116.861365168812, 1130.0054098961346],
-  [10216.161365168813, 1295.6054098961347],
-  [10216.161365168813, 1461.2054098961348],
-  [10315.461365168814, 1626.805409896135],
-  [10315.461365168814, 1792.405409896135],
-  [10216.161365168813, 1958.0054098961352],
-  [10216.161365168813, 1792.405409896135],
-  [10116.861365168812, 1792.405409896135],
-  [10017.56136516881, 1958.0054098961352],
-  [9918.26136516881, 2123.6054098961354],
-  [9918.26136516881, 1958.0054098961352],
-  [10017.56136516881, 2123.6054098961354],
-  [10116.861365168812, 2123.6054098961354],
-  [10017.56136516881, 2289.2054098961353],
-  [10017.56136516881, 2454.805409896135],
-  [10116.861365168812, 2289.2054098961353],
-  [10216.161365168813, 2454.805409896135],
-  [10315.461365168814, 2620.405409896135],
-  [10315.461365168814, 2454.805409896135],
-  [10315.461365168814, 2289.2054098961353],
-  [10414.761365168815, 2454.805409896135],
-  [10514.061365168816, 2620.405409896135],
-  [10613.361365168817, 2786.005409896135],
-  [10514.061365168816, 2786.005409896135],
-  [10613.361365168817, 2620.405409896135],
-  [10514.061365168816, 2454.805409896135],
-  [10514.061365168816, 2289.2054098961353],
-  [10613.361365168817, 2289.2054098961353],
-  [10712.661365168819, 2289.2054098961353],
-  [10811.96136516882, 2454.805409896135],
-  [10911.26136516882, 2289.2054098961353],
-  [10811.96136516882, 2289.2054098961353],
-  [10712.661365168819, 2454.805409896135],
-  [10712.661365168819, 2620.405409896135],
-  [10811.96136516882, 2786.005409896135],
-  [10911.26136516882, 2620.405409896135],
-  [10911.26136516882, 2786.005409896135],
-  [11010.561365168822, 2620.405409896135],
-  [10911.26136516882, 2454.805409896135],
-  [10811.96136516882, 2620.405409896135],
-  [10712.661365168819, 2786.005409896135],
-  [10811.96136516882, 2951.605409896135],
-  [10911.26136516882, 2951.605409896135],
-  [10811.96136516882, 3117.205409896135],
-  [10712.661365168819, 2951.605409896135],
-  [10613.361365168817, 2951.605409896135],
-  [10514.061365168816, 2951.605409896135],
-  [10414.761365168815, 3117.205409896135],
-  [10414.761365168815, 2951.605409896135],
-  [10315.461365168814, 2786.005409896135],
-  [10216.161365168813, 2620.405409896135],
-  [10216.161365168813, 2786.005409896135],
-  [10315.461365168814, 2951.605409896135],
-  [10315.461365168814, 3117.205409896135],
-  [10216.161365168813, 3117.205409896135],
-  [10116.861365168812, 3117.205409896135],
-  [10017.56136516881, 3282.8054098961347],
-  [9918.26136516881, 3448.4054098961346],
-  [9818.961365168809, 3448.4054098961346],
-  [9818.961365168809, 3614.0054098961346],
-  [9719.661365168808, 3448.4054098961346],
-  [9818.961365168809, 3282.8054098961347],
-  [9719.661365168808, 3117.205409896135],
-  [9620.361365168807, 2951.605409896135],
-  [9521.061365168805, 3117.205409896135],
-  [9521.061365168805, 3282.8054098961347],
-  [9421.761365168804, 3117.205409896135],
-  [9421.761365168804, 3282.8054098961347],
-  [9322.461365168803, 3117.205409896135],
-  [9421.761365168804, 2951.605409896135],
-  [9322.461365168803, 2951.605409896135],
-  [9223.161365168802, 2786.005409896135],
-  [9322.461365168803, 2620.405409896135],
-  [9421.761365168804, 2454.805409896135],
-  [9521.061365168805, 2289.2054098961353],
-  [9421.761365168804, 2123.6054098961354],
-  [9421.761365168804, 1958.0054098961352],
-  [9421.761365168804, 1792.405409896135],
-  [9521.061365168805, 1626.805409896135],
-  [9421.761365168804, 1626.805409896135],
-  [9322.461365168803, 1792.405409896135],
-  [9322.461365168803, 1626.805409896135],
-  [9322.461365168803, 1461.2054098961348],
-  [9421.761365168804, 1461.2054098961348],
-  [9521.061365168805, 1295.6054098961347],
-  [9421.761365168804, 1130.0054098961346],
-  [9322.461365168803, 964.4054098961345],
-  [9223.161365168802, 964.4054098961345],
-  [9223.161365168802, 798.8054098961346],
-  [9322.461365168803, 633.2054098961347],
-  [9421.761365168804, 798.8054098961346],
-  [9421.761365168804, 633.2054098961347],
-  [9521.061365168805, 633.2054098961347],
-  [9421.761365168804, 467.60540989613474],
-  [9421.761365168804, 302.0054098961348],
-  [9322.461365168803, 136.40540989613478],
-  [9223.161365168802, 302.0054098961348],
-  [9123.861365168801, 302.0054098961348],
-  [9024.5613651688, 136.40540989613478],
-  [9123.861365168801, 136.40540989613478],
-  [9223.161365168802, 136.40540989613478],
-  [9322.461365168803, 302.0054098961348],
-  [9421.761365168804, 136.40540989613478],
-  [9521.061365168805, 136.40540989613478],
-  [9620.361365168807, 136.40540989613478],
-  [9620.361365168807, 302.0054098961348],
-  [9521.061365168805, 302.0054098961348],
-  [9521.061365168805, 467.60540989613474],
-  [9620.361365168807, 467.60540989613474],
-  [9719.661365168808, 302.0054098961348],
-  [9719.661365168808, 136.40540989613478],
-  [9818.961365168809, 136.40540989613478],
-  [9918.26136516881, 136.40540989613478],
-  [10017.56136516881, 136.40540989613478],
-  [366.07287160549004, 5394.185440937868],
-  [465.37287160549005, 5394.185440937868],
-  [465.37287160549005, 5559.785440937868],
-  [366.0728716054901, 5559.785440937868],
-  [366.0728716054901, 5725.385440937867],
-  [266.77287160549014, 5725.385440937867],
-  [167.47287160549016, 5559.785440937868],
-  [266.77287160549014, 5559.785440937868],
-  [266.77287160549014, 5394.185440937868],
-  [266.77287160549014, 5228.585440937869],
-  [167.47287160549016, 5394.185440937868],
-  [68.17287160549016, 5228.585440937869],
-  [167.47287160549013, 5062.9854409378695],
-  [68.17287160549013, 4897.38544093787],
-  [167.47287160549013, 4731.785440937871],
-  [266.77287160549014, 4731.785440937871],
-  [167.47287160549016, 4566.185440937871],
-  [68.17287160549016, 4566.185440937871],
-  [68.17287160549016, 4731.785440937871],
-  [167.47287160549013, 4897.38544093787],
-  [68.17287160549013, 5062.9854409378695],
-  [167.47287160549013, 5228.585440937869],
-  [266.77287160549014, 5062.9854409378695],
-  [366.0728716054901, 4897.38544093787],
-  [266.77287160549014, 4897.38544093787],
-  [366.0728716054901, 4731.785440937871],
-  [465.37287160549005, 4897.38544093787],
-  [366.0728716054901, 5062.9854409378695],
-  [465.37287160549005, 5062.9854409378695],
-  [366.0728716054901, 5228.585440937869],
-  [465.37287160549005, 5228.585440937869],
-  [564.6728716054901, 5394.185440937868],
-  [663.9728716054901, 5228.585440937869],
-  [564.6728716054901, 5062.9854409378695],
-  [663.9728716054901, 4897.38544093787],
-  [763.2728716054902, 4731.785440937871],
-  [862.5728716054903, 4566.185440937871],
-  [961.8728716054903, 4731.785440937871],
-  [862.5728716054903, 4731.785440937871],
-  [961.8728716054903, 4566.185440937871],
-  [862.5728716054903, 4400.585440937872],
-  [961.8728716054903, 4234.985440937872],
-  [1061.1728716054904, 4400.585440937872],
-  [1160.4728716054904, 4234.985440937872],
-  [1160.4728716054904, 4400.585440937872],
-  [1259.7728716054903, 4234.985440937872],
-  [1359.0728716054903, 4069.3854409378723],
-  [1458.3728716054902, 4069.3854409378723],
-  [1557.6728716054902, 4234.985440937872],
-  [1656.9728716054901, 4400.585440937872],
-  [1557.6728716054902, 4400.585440937872],
-  [1458.3728716054902, 4400.585440937872],
-  [1359.0728716054903, 4566.185440937871],
-  [1359.0728716054903, 4731.785440937871],
-  [1259.7728716054903, 4731.785440937871],
-  [1359.0728716054903, 4897.38544093787],
-  [1458.3728716054902, 4731.785440937871],
-  [1458.3728716054902, 4897.38544093787],
-  [1359.0728716054903, 5062.9854409378695],
-  [1259.7728716054903, 5228.585440937869],
-  [1259.7728716054903, 5062.9854409378695],
-  [1259.7728716054903, 4897.38544093787],
-  [1160.4728716054904, 5062.9854409378695],
-  [1160.4728716054904, 5228.585440937869],
-  [1061.1728716054904, 5228.585440937869],
-  [1061.1728716054904, 5062.9854409378695],
-  [961.8728716054903, 5228.585440937869],
-  [862.5728716054903, 5062.9854409378695],
-  [961.8728716054903, 5062.9854409378695],
-  [961.8728716054903, 4897.38544093787],
-  [1061.1728716054904, 4897.38544093787],
-  [1160.4728716054904, 4731.785440937871],
-  [1259.7728716054903, 4566.185440937871],
-  [1359.0728716054903, 4400.585440937872],
-  [1458.3728716054902, 4566.185440937871],
-  [1557.6728716054902, 4566.185440937871],
-  [1656.9728716054901, 4731.785440937871],
-  [1557.6728716054902, 4897.38544093787],
-  [1458.3728716054902, 5062.9854409378695],
-  [1557.6728716054902, 5228.585440937869],
-  [1656.9728716054901, 5062.9854409378695],
-  [1756.27287160549, 5062.9854409378695],
-  [1756.27287160549, 4897.38544093787],
-  [1855.57287160549, 5062.9854409378695],
-  [1954.87287160549, 4897.38544093787],
-  [2054.17287160549, 5062.9854409378695],
-  [1954.87287160549, 5062.9854409378695],
-  [2054.17287160549, 5228.585440937869],
-  [2153.4728716054897, 5228.585440937869],
-  [2252.7728716054894, 5062.9854409378695],
-  [2352.072871605489, 5228.585440937869],
-  [2451.372871605489, 5394.185440937868],
-  [2352.072871605489, 5394.185440937868],
-  [2252.7728716054894, 5228.585440937869],
-  [2153.4728716054897, 5062.9854409378695],
-  [2153.4728716054897, 4897.38544093787],
-  [2252.7728716054894, 4897.38544093787],
-  [2352.072871605489, 4731.785440937871],
-  [2252.7728716054894, 4731.785440937871],
-  [2153.4728716054897, 4731.785440937871],
-  [2054.17287160549, 4566.185440937871],
-  [1954.87287160549, 4731.785440937871],
-  [1855.57287160549, 4897.38544093787],
-  [1756.27287160549, 4731.785440937871],
-  [1855.57287160549, 4731.785440937871],
-  [1855.57287160549, 4566.185440937871],
-  [1756.27287160549, 4566.185440937871],
-  [1656.9728716054901, 4566.185440937871],
-  [1557.6728716054902, 4731.785440937871],
-  [1656.9728716054901, 4897.38544093787],
-  [1557.6728716054902, 5062.9854409378695],
-  [1458.3728716054902, 5228.585440937869],
-  [1359.0728716054903, 5228.585440937869],
-  [1259.7728716054903, 5394.185440937868],
-  [1259.7728716054903, 5559.785440937868],
-  [1160.4728716054904, 5559.785440937868],
-  [1061.1728716054904, 5559.785440937868],
-  [1160.4728716054904, 5725.385440937867],
-  [1259.7728716054903, 5725.385440937867],
-  [1359.0728716054903, 5559.785440937868],
-  [1458.3728716054902, 5725.385440937867],
-  [1458.3728716054902, 5559.785440937868],
-  [1359.0728716054903, 5725.385440937867],
-  [1259.7728716054903, 5890.985440937867],
-  [1359.0728716054903, 5890.985440937867],
-  [1259.7728716054903, 6056.585440937866],
-  [1359.0728716054903, 6222.185440937866],
-  [1458.3728716054902, 6222.185440937866],
-  [1458.3728716054902, 6387.785440937865],
-  [1557.6728716054902, 6222.185440937866],
-  [1557.6728716054902, 6387.785440937865],
-  [1656.9728716054901, 6222.185440937866],
-  [1756.27287160549, 6056.585440937866],
-  [1855.57287160549, 5890.985440937867],
-  [1756.27287160549, 5890.985440937867],
-  [1656.9728716054901, 6056.585440937866],
-  [1557.6728716054902, 5890.985440937867],
-  [1458.3728716054902, 5890.985440937867],
-  [1359.0728716054903, 6056.585440937866],
-  [1259.7728716054903, 6222.185440937866],
-  [1160.4728716054904, 6056.585440937866],
-  [1061.1728716054904, 5890.985440937867],
-  [1061.1728716054904, 6056.585440937866],
-  [1160.4728716054904, 6222.185440937866],
-  [1061.1728716054904, 6222.185440937866],
-  [961.8728716054903, 6222.185440937866],
-  [961.8728716054903, 6056.585440937866],
-  [961.8728716054903, 5890.985440937867],
-  [961.8728716054903, 5725.385440937867],
-  [862.5728716054903, 5559.785440937868],
-  [763.2728716054902, 5725.385440937867],
-  [862.5728716054903, 5725.385440937867],
-  [763.2728716054902, 5890.985440937867],
-  [663.9728716054901, 5725.385440937867],
-  [763.2728716054902, 5559.785440937868],
-  [763.2728716054902, 5394.185440937868],
-  [862.5728716054903, 5228.585440937869],
-  [961.8728716054903, 5394.185440937868],
-  [1061.1728716054904, 5394.185440937868],
-  [961.8728716054903, 5559.785440937868],
-  [862.5728716054903, 5394.185440937868],
-  [763.2728716054902, 5228.585440937869],
-  [663.9728716054901, 5062.9854409378695],
-  [763.2728716054902, 5062.9854409378695],
-  [763.2728716054902, 4897.38544093787],
-  [663.9728716054901, 4731.785440937871],
-  [564.6728716054901, 4731.785440937871],
-  [465.37287160549005, 4566.185440937871],
-  [366.0728716054901, 4566.185440937871],
-  [465.37287160549005, 4731.785440937871],
-  [564.6728716054901, 4566.185440937871],
-  [465.37287160549005, 4400.585440937872],
-  [366.0728716054901, 4400.585440937872],
-  [266.77287160549014, 4234.985440937872],
-  [167.47287160549016, 4234.985440937872],
-  [266.77287160549014, 4400.585440937872],
-  [266.77287160549014, 4566.185440937871],
-  [167.47287160549016, 4400.585440937872],
-  [68.17287160549016, 4234.985440937872],
-  [167.47287160549013, 4069.3854409378723],
-  [68.17287160549013, 3903.7854409378724],
-  [68.17287160549013, 4069.3854409378723],
-  [167.47287160549013, 3903.7854409378724],
-  [266.77287160549014, 3903.7854409378724],
-  [366.0728716054901, 3738.1854409378725],
-  [266.77287160549014, 3738.1854409378725],
-  [266.77287160549014, 3572.5854409378726],
-  [167.47287160549016, 3406.9854409378727],
-  [167.47287160549016, 3241.3854409378728],
-  [266.77287160549014, 3241.3854409378728],
-  [266.77287160549014, 3406.9854409378727],
-  [366.0728716054901, 3572.5854409378726],
-  [465.37287160549005, 3738.1854409378725],
-  [465.37287160549005, 3903.7854409378724],
-  [366.0728716054901, 4069.3854409378723],
-  [366.0728716054901, 4234.985440937872],
-  [465.37287160549005, 4234.985440937872],
-  [564.6728716054901, 4069.3854409378723],
-  [465.37287160549005, 4069.3854409378723],
-  [564.6728716054901, 4234.985440937872],
-  [663.9728716054901, 4069.3854409378723],
-  [663.9728716054901, 4234.985440937872],
-  [663.9728716054901, 4400.585440937872],
-  [763.2728716054902, 4566.185440937871],
-  [763.2728716054902, 4400.585440937872],
-  [663.9728716054901, 4566.185440937871],
-  [564.6728716054901, 4400.585440937872],
-  [19431.915041401327, 3495.506142643713],
-  [19332.61504140133, 3661.1061426437127],
-  [19431.915041401327, 3661.1061426437127],
-  [19531.215041401327, 3661.1061426437127],
-  [19630.515041401326, 3495.506142643713],
-  [19630.515041401326, 3661.1061426437127],
-  [19729.815041401325, 3826.7061426437126],
-  [19630.515041401326, 3826.7061426437126],
-  [19729.815041401325, 3992.3061426437125],
-  [19630.515041401326, 3992.3061426437125],
-  [19630.515041401326, 4157.906142643712],
-  [19630.515041401326, 4323.506142643711],
-  [19531.215041401327, 4157.906142643712],
-  [19431.915041401327, 4323.506142643711],
-  [19531.215041401327, 4489.106142643711],
-  [19431.915041401327, 4654.70614264371],
-  [19332.61504140133, 4654.70614264371],
-  [19332.61504140133, 4820.30614264371],
-  [19332.61504140133, 4985.906142643709],
-  [19233.31504140133, 4985.906142643709],
-  [19134.01504140133, 5151.506142643709],
-  [19034.71504140133, 5151.506142643709],
-  [19134.01504140133, 5317.106142643708],
-  [19034.71504140133, 5317.106142643708],
-  [19034.71504140133, 5482.706142643708],
-  [18935.41504140133, 5648.306142643707],
-  [18836.115041401332, 5813.9061426437065],
-  [18836.115041401332, 5979.506142643706],
-  [18935.41504140133, 5979.506142643706],
-  [19034.71504140133, 6145.106142643705],
-  [19034.71504140133, 5979.506142643706],
-  [19034.71504140133, 5813.9061426437065],
-  [19134.01504140133, 5648.306142643707],
-  [19233.31504140133, 5648.306142643707],
-  [19134.01504140133, 5813.9061426437065],
-  [19134.01504140133, 5979.506142643706],
-  [19233.31504140133, 5813.9061426437065],
-  [19233.31504140133, 5979.506142643706],
-  [19332.61504140133, 6145.106142643705],
-  [19332.61504140133, 6310.706142643705],
-  [19233.31504140133, 6310.706142643705],
-  [19233.31504140133, 6476.306142643704],
-  [19332.61504140133, 6476.306142643704],
-  [19431.915041401327, 6641.906142643704],
-  [19332.61504140133, 6807.506142643703],
-  [19332.61504140133, 6641.906142643704],
-  [19431.915041401327, 6476.306142643704],
-  [19431.915041401327, 6310.706142643705],
-  [19531.215041401327, 6145.106142643705],
-  [19431.915041401327, 5979.506142643706],
-  [19431.915041401327, 6145.106142643705],
-  [19531.215041401327, 5979.506142643706],
-  [19630.515041401326, 5813.9061426437065],
-  [19630.515041401326, 5979.506142643706],
-  [19729.815041401325, 5813.9061426437065],
-  [19829.115041401325, 5979.506142643706],
-  [19729.815041401325, 5979.506142643706],
-  [19729.815041401325, 6145.106142643705],
-  [19729.815041401325, 6310.706142643705],
-  [19630.515041401326, 6476.306142643704],
-  [19729.815041401325, 6476.306142643704],
-  [19630.515041401326, 6310.706142643705],
-  [19531.215041401327, 6310.706142643705],
-  [19531.215041401327, 6476.306142643704],
-  [19630.515041401326, 6641.906142643704],
-  [19729.815041401325, 6807.506142643703],
-  [19829.115041401325, 6973.106142643703],
-  [19928.415041401324, 6973.106142643703],
-  [19928.415041401324, 7138.706142643702],
-  [20027.715041401323, 7138.706142643702],
-  [20027.715041401323, 7304.306142643702],
-  [19928.415041401324, 7304.306142643702],
-  [19829.115041401325, 7304.306142643702],
-  [19829.115041401325, 7469.906142643701],
-  [19928.415041401324, 7469.906142643701],
-  [19928.415041401324, 7635.5061426437005],
-  [19928.415041401324, 7801.1061426437],
-  [20027.715041401323, 7635.5061426437005],
-  [20027.715041401323, 7801.1061426437],
-  [20127.015041401322, 7801.1061426437],
-  [20226.31504140132, 7801.1061426437],
-  [20325.61504140132, 7801.1061426437],
-  [20226.31504140132, 7635.5061426437005],
-  [20226.31504140132, 7469.906142643701],
-  [20226.31504140132, 7304.306142643702],
-  [20127.015041401322, 7304.306142643702],
-  [20027.715041401323, 7469.906142643701],
-  [20127.015041401322, 7469.906142643701],
-  [20127.015041401322, 7635.5061426437005],
-  [2748.790306732237, 2362.9553147492866],
-  [2848.0903067322365, 2528.5553147492865],
-  [2748.790306732237, 2694.1553147492864],
-  [2649.490306732237, 2859.7553147492863],
-  [2748.790306732237, 3025.355314749286],
-  [2848.0903067322365, 2859.7553147492863],
-  [2848.0903067322365, 2694.1553147492864],
-  [2947.3903067322362, 2694.1553147492864],
-  [3046.690306732236, 2859.7553147492863],
-  [3145.9903067322357, 2694.1553147492864],
-  [3145.9903067322357, 2528.5553147492865],
-  [3046.690306732236, 2694.1553147492864],
-  [3145.9903067322357, 2859.7553147492863],
-  [3046.690306732236, 3025.355314749286],
-  [3145.9903067322357, 3025.355314749286],
-  [3245.2903067322354, 3190.955314749286],
-  [3245.2903067322354, 3356.555314749286],
-  [3344.590306732235, 3522.155314749286],
-  [3443.890306732235, 3356.555314749286],
-  [3543.1903067322346, 3356.555314749286],
-  [3642.4903067322343, 3190.955314749286],
-  [3741.790306732234, 3025.355314749286],
-  [3741.790306732234, 2859.7553147492863],
-  [3841.090306732234, 3025.355314749286],
-  [3841.090306732234, 3190.955314749286],
-  [3741.790306732234, 3190.955314749286],
-  [3642.4903067322343, 3025.355314749286],
-  [3543.1903067322346, 3025.355314749286],
-  [3543.1903067322346, 2859.7553147492863],
-  [3443.890306732235, 3025.355314749286],
-  [3443.890306732235, 3190.955314749286],
-  [3543.1903067322346, 3190.955314749286],
-  [3642.4903067322343, 3356.555314749286],
-  [3543.1903067322346, 3522.155314749286],
-  [3443.890306732235, 3687.755314749286],
-  [3443.890306732235, 3853.3553147492858],
-  [3344.590306732235, 3687.755314749286],
-  [3245.2903067322354, 3853.3553147492858],
-  [3245.2903067322354, 3687.755314749286],
-  [3145.9903067322357, 3687.755314749286],
-  [3046.690306732236, 3853.3553147492858],
-  [3145.9903067322357, 4018.9553147492857],
-  [3145.9903067322357, 3853.3553147492858],
-  [3046.690306732236, 3687.755314749286],
-  [3145.9903067322357, 3522.155314749286],
-  [3145.9903067322357, 3356.555314749286],
-  [3145.9903067322357, 3190.955314749286],
-  [3046.690306732236, 3190.955314749286],
-  [3046.690306732236, 3356.555314749286],
-  [2947.3903067322362, 3356.555314749286],
-  [2848.0903067322365, 3190.955314749286],
-  [2947.3903067322362, 3025.355314749286],
-  [2848.0903067322365, 3025.355314749286],
-  [2748.790306732237, 2859.7553147492863],
-  [2649.490306732237, 2694.1553147492864],
-  [2748.790306732237, 2528.5553147492865],
-  [2848.0903067322365, 2362.9553147492866],
-  [2748.790306732237, 2197.3553147492867],
-  [2649.490306732237, 2362.9553147492866],
-  [2649.490306732237, 2197.3553147492867],
-  [2550.1903067322373, 2362.9553147492866],
-  [2450.8903067322376, 2362.9553147492866],
-  [2351.590306732238, 2528.5553147492865],
-  [2252.290306732238, 2528.5553147492865],
-  [2351.590306732238, 2362.9553147492866],
-  [2252.290306732238, 2197.3553147492867],
-  [2351.590306732238, 2197.3553147492867],
-  [2351.590306732238, 2031.7553147492865],
-  [2351.590306732238, 1866.1553147492864],
-  [2252.290306732238, 1866.1553147492864],
-  [2351.590306732238, 1700.5553147492863],
-  [2450.8903067322376, 1534.9553147492861],
-  [2351.590306732238, 1369.355314749286],
-  [2252.290306732238, 1203.7553147492858],
-  [2252.290306732238, 1369.355314749286],
-  [2252.290306732238, 1534.9553147492861],
-  [2152.9903067322384, 1369.355314749286],
-  [2053.6903067322387, 1369.355314749286],
-  [1954.3903067322387, 1203.7553147492858],
-  [1855.0903067322388, 1203.7553147492858],
-  [1755.7903067322388, 1038.1553147492857],
-  [1656.4903067322389, 1038.1553147492857],
-  [1557.190306732239, 872.5553147492857],
-  [1457.890306732239, 1038.1553147492857],
-  [1457.890306732239, 872.5553147492857],
-  [1457.890306732239, 706.9553147492858],
-  [1557.190306732239, 706.9553147492858],
-  [1656.4903067322389, 872.5553147492857],
-  [1656.4903067322389, 706.9553147492858],
-  [1755.7903067322388, 706.9553147492858],
-  [1656.4903067322389, 541.3553147492859],
-  [1557.190306732239, 375.7553147492859],
-  [1656.4903067322389, 210.1553147492859],
-  [1755.7903067322388, 44.55531474928592],
-  [1656.4903067322389, 44.55531474928592],
-  [1557.190306732239, 210.1553147492859],
-  [1457.890306732239, 210.1553147492859],
-  [1457.890306732239, 44.55531474928592],
-  [1358.590306732239, 210.1553147492859],
-  [1358.590306732239, 375.75531474928584],
-  [1259.290306732239, 210.15531474928585],
-  [1259.290306732239, 375.75531474928584],
-  [1259.290306732239, 541.3553147492859],
-  [1358.590306732239, 706.9553147492858],
-  [1358.590306732239, 872.5553147492857],
-  [1259.290306732239, 706.9553147492858],
-  [1259.290306732239, 872.5553147492857],
-  [1259.290306732239, 1038.1553147492857],
-  [1358.590306732239, 1203.7553147492858],
-  [1358.590306732239, 1038.1553147492857],
-  [1457.890306732239, 1203.7553147492858],
-  [1557.190306732239, 1369.355314749286],
-  [1656.4903067322389, 1203.7553147492858],
-  [1557.190306732239, 1203.7553147492858],
-  [1557.190306732239, 1038.1553147492857],
-  [17254.572515546668, 1460.5807801244923],
-  [17353.872515546667, 1626.1807801244925],
-  [17453.172515546667, 1791.7807801244926],
-  [17552.472515546666, 1791.7807801244926],
-  [17453.172515546667, 1626.1807801244925],
-  [17353.872515546667, 1791.7807801244926],
-  [17453.172515546667, 1957.3807801244927],
-  [17353.872515546667, 2122.980780124493],
-  [17453.172515546667, 2288.580780124493],
-  [17353.872515546667, 2454.1807801244927],
-  [17453.172515546667, 2619.7807801244926],
-  [17552.472515546666, 2619.7807801244926],
-  [17453.172515546667, 2785.3807801244925],
-  [17353.872515546667, 2619.7807801244926],
-  [17254.572515546668, 2454.1807801244927],
-  [17254.572515546668, 2288.580780124493],
-  [17353.872515546667, 2288.580780124493],
-  [17453.172515546667, 2122.980780124493],
-  [17552.472515546666, 2288.580780124493],
-  [17552.472515546666, 2454.1807801244927],
-  [17453.172515546667, 2454.1807801244927],
-  [4447.67624466283, 4761.1416826913],
-  [4546.97624466283, 4595.541682691301],
-  [4546.97624466283, 4429.941682691301],
-  [4447.67624466283, 4429.941682691301],
-  [4447.67624466283, 4595.541682691301],
-  [4348.37624466283, 4595.541682691301],
-  [4249.07624466283, 4595.541682691301],
-  [4348.37624466283, 4761.1416826913],
-  [4249.07624466283, 4761.1416826913],
-  [4348.37624466283, 4926.7416826912995],
-  [4348.37624466283, 5092.341682691299],
-  [4447.67624466283, 5257.941682691298],
-  [4546.97624466283, 5257.941682691298],
-  [4646.27624466283, 5092.341682691299],
-  [4546.97624466283, 5092.341682691299],
-  [4646.27624466283, 4926.7416826912995],
-  [4646.27624466283, 4761.1416826913],
-  [4546.97624466283, 4761.1416826913],
-  [4646.27624466283, 4595.541682691301],
-  [4745.5762446628305, 4595.541682691301],
-  [4646.27624466283, 4429.941682691301],
-  [4745.5762446628305, 4429.941682691301],
-  [4844.876244662831, 4595.541682691301],
-  [4745.5762446628305, 4761.1416826913],
-  [4745.5762446628305, 4926.7416826912995],
-  [4844.876244662831, 4761.1416826913],
-  [4944.176244662831, 4761.1416826913],
-  [5043.476244662831, 4926.7416826912995],
-  [5043.476244662831, 4761.1416826913],
-  [5142.776244662831, 4926.7416826912995],
-  [5142.776244662831, 4761.1416826913],
-  [5242.076244662831, 4595.541682691301],
-  [5142.776244662831, 4595.541682691301],
-  [5242.076244662831, 4429.941682691301],
-  [5242.076244662831, 4264.341682691302],
-  [5142.776244662831, 4429.941682691301],
-  [5043.476244662831, 4595.541682691301],
-  [5043.476244662831, 4429.941682691301],
-  [5043.476244662831, 4264.341682691302],
-  [5142.776244662831, 4098.741682691302],
-  [5043.476244662831, 4098.741682691302],
-  [4944.176244662831, 3933.1416826913023],
-  [4944.176244662831, 4098.741682691302],
-  [4944.176244662831, 4264.341682691302],
-  [4844.876244662831, 4098.741682691302],
-  [4745.5762446628305, 4264.341682691302],
-  [4646.27624466283, 4098.741682691302],
-  [4546.97624466283, 3933.1416826913023],
-  [4447.67624466283, 4098.741682691302],
-  [4546.97624466283, 4264.341682691302],
-  [4447.67624466283, 4264.341682691302],
-  [4546.97624466283, 4098.741682691302],
-  [4646.27624466283, 3933.1416826913023],
-  [4546.97624466283, 3767.5416826913024],
-  [4447.67624466283, 3601.9416826913025],
-  [4447.67624466283, 3767.5416826913024],
-  [4348.37624466283, 3767.5416826913024],
-  [4348.37624466283, 3933.1416826913023],
-  [4249.07624466283, 3767.5416826913024],
-  [4249.07624466283, 3933.1416826913023],
-  [4149.776244662829, 3933.1416826913023],
-  [4050.4762446628297, 4098.741682691302],
-  [4050.4762446628297, 3933.1416826913023],
-  [3951.17624466283, 3933.1416826913023],
-  [3951.17624466283, 4098.741682691302],
-  [3851.8762446628302, 4264.341682691302],
-  [3851.8762446628302, 4098.741682691302],
-  [3752.5762446628305, 4098.741682691302],
-  [3653.276244662831, 4264.341682691302],
-  [3553.976244662831, 4429.941682691301],
-  [3553.976244662831, 4595.541682691301],
-  [3454.6762446628313, 4429.941682691301],
-  [3553.976244662831, 4264.341682691302],
-  [3653.276244662831, 4429.941682691301],
-  [3752.5762446628305, 4264.341682691302],
-  [3752.5762446628305, 4429.941682691301],
-  [3851.8762446628302, 4595.541682691301],
-  [3851.8762446628302, 4429.941682691301],
-  [3951.17624466283, 4429.941682691301],
-  [4050.4762446628297, 4264.341682691302],
-  [4149.776244662829, 4098.741682691302],
-  [4249.07624466283, 4264.341682691302],
-  [4348.37624466283, 4098.741682691302],
-  [4447.67624466283, 3933.1416826913023],
-  [9574.088902135607, 7352.26293905581],
-  [9474.788902135606, 7352.26293905581],
-  [9375.488902135605, 7186.662939055811],
-  [9474.788902135606, 7021.0629390558115],
-  [9574.088902135607, 7021.0629390558115],
-  [9474.788902135606, 7186.662939055811],
-  [9574.088902135607, 7186.662939055811],
-  [9673.388902135608, 7021.0629390558115],
-  [9673.388902135608, 6855.462939055812],
-  [9772.68890213561, 6689.862939055813],
-  [9673.388902135608, 6689.862939055813],
-  [9772.68890213561, 6524.262939055813],
-  [9871.98890213561, 6358.662939055814],
-  [9971.288902135611, 6524.262939055813],
-  [10070.588902135612, 6358.662939055814],
-  [10070.588902135612, 6193.062939055814],
-  [9971.288902135611, 6027.462939055815],
-  [9971.288902135611, 5861.862939055815],
-  [9871.98890213561, 5861.862939055815],
-  [9871.98890213561, 5696.262939055816],
-  [9971.288902135611, 5530.662939055816],
-  [10070.588902135612, 5530.662939055816],
-  [10070.588902135612, 5696.262939055816],
-  [10169.888902135614, 5861.862939055815],
-  [10169.888902135614, 5696.262939055816],
-  [10070.588902135612, 5861.862939055815],
-  [10169.888902135614, 6027.462939055815],
-  [10169.888902135614, 6193.062939055814],
-  [10269.188902135615, 6027.462939055815],
-  [10269.188902135615, 5861.862939055815],
-  [10368.488902135616, 6027.462939055815],
-  [10269.188902135615, 6193.062939055814],
-  [10269.188902135615, 6358.662939055814],
-  [10169.888902135614, 6358.662939055814],
-  [10070.588902135612, 6524.262939055813],
-  [10070.588902135612, 6689.862939055813],
-  [9971.288902135611, 6855.462939055812],
-  [9971.288902135611, 7021.0629390558115],
-  [10070.588902135612, 7186.662939055811],
-  [10169.888902135614, 7186.662939055811],
-  [10269.188902135615, 7186.662939055811],
-  [10169.888902135614, 7352.26293905581],
-  [10070.588902135612, 7352.26293905581],
-  [10169.888902135614, 7517.86293905581],
-  [10169.888902135614, 7683.462939055809],
-  [10269.188902135615, 7517.86293905581],
-  [10368.488902135616, 7683.462939055809],
-  [10467.788902135617, 7683.462939055809],
-  [10368.488902135616, 7517.86293905581],
-  [10269.188902135615, 7352.26293905581],
-  [10368.488902135616, 7352.26293905581],
-  [10368.488902135616, 7186.662939055811],
-  [10368.488902135616, 7021.0629390558115],
-  [10368.488902135616, 6855.462939055812],
-  [10269.188902135615, 6855.462939055812],
-  [10169.888902135614, 6855.462939055812],
-  [10169.888902135614, 7021.0629390558115],
-  [10070.588902135612, 7021.0629390558115],
-  [10070.588902135612, 6855.462939055812],
-  [10169.888902135614, 6689.862939055813],
-  [10269.188902135615, 6689.862939055813],
-  [10169.888902135614, 6524.262939055813],
-  [10269.188902135615, 6524.262939055813],
-  [10368.488902135616, 6524.262939055813],
-  [10368.488902135616, 6358.662939055814],
-  [10467.788902135617, 6358.662939055814],
-  [10467.788902135617, 6193.062939055814],
-  [10567.088902135618, 6358.662939055814],
-  [10567.088902135618, 6193.062939055814],
-  [10666.388902135619, 6193.062939055814],
-  [10666.388902135619, 6358.662939055814],
-  [10567.088902135618, 6524.262939055813],
-  [10467.788902135617, 6524.262939055813],
-  [10567.088902135618, 6689.862939055813],
-  [10467.788902135617, 6855.462939055812],
-  [10567.088902135618, 7021.0629390558115],
-  [10467.788902135617, 7021.0629390558115],
-  [10567.088902135618, 6855.462939055812],
-  [10467.788902135617, 6689.862939055813],
-  [10368.488902135616, 6689.862939055813],
-  [1073.6944354374714, 1154.3681204032646],
-  [974.3944354374713, 1319.9681204032647],
-  [875.0944354374712, 1319.9681204032647],
-  [775.7944354374712, 1154.3681204032646],
-  [775.7944354374712, 988.7681204032646],
-  [875.0944354374712, 823.1681204032647],
-  [875.0944354374712, 657.5681204032647],
-  [775.7944354374712, 823.1681204032647],
-  [676.4944354374711, 657.5681204032647],
-  [676.4944354374711, 491.9681204032648],
-  [775.7944354374712, 657.5681204032647],
-  [676.4944354374711, 823.1681204032647],
-  [676.4944354374711, 988.7681204032646],
-  [577.194435437471, 823.1681204032647],
-  [577.194435437471, 988.7681204032646],
-  [577.194435437471, 1154.3681204032646],
-  [676.4944354374711, 1319.9681204032647],
-  [577.194435437471, 1319.9681204032647],
-  [477.89443543747103, 1319.9681204032647],
-  [577.194435437471, 1485.5681204032649],
-  [477.89443543747103, 1651.168120403265],
-  [577.194435437471, 1816.7681204032651],
-  [477.89443543747103, 1816.7681204032651],
-  [378.5944354374711, 1982.3681204032653],
-  [378.5944354374711, 2147.9681204032654],
-  [279.2944354374711, 2313.5681204032653],
-  [179.99443543747114, 2147.9681204032654],
-  [80.69443543747114, 2313.5681204032653],
-  [80.69443543747114, 2479.168120403265],
-  [179.9944354374711, 2644.768120403265],
-  [179.9944354374711, 2479.168120403265],
-  [179.9944354374711, 2313.5681204032653],
-  [80.69443543747111, 2147.9681204032654],
-  [80.69443543747111, 1982.3681204032653],
-  [179.9944354374711, 1982.3681204032653],
-  [179.9944354374711, 1816.7681204032651],
-  [80.69443543747111, 1816.7681204032651],
-  [179.9944354374711, 1651.168120403265],
-  [80.69443543747111, 1485.5681204032649],
-  [80.69443543747111, 1319.9681204032647],
-  [179.9944354374711, 1154.3681204032646],
-  [80.69443543747111, 1154.3681204032646],
-  [179.9944354374711, 988.7681204032646],
-  [279.2944354374711, 823.1681204032647],
-  [378.5944354374711, 657.5681204032647],
-  [378.5944354374711, 823.1681204032647],
-  [477.89443543747103, 823.1681204032647],
-  [477.89443543747103, 657.5681204032647],
-  [378.5944354374711, 491.9681204032648],
-  [477.89443543747103, 326.3681204032648],
-  [477.89443543747103, 160.76812040326482],
-  [378.5944354374711, 160.76812040326482],
-  [279.2944354374711, 326.3681204032648],
-  [179.99443543747114, 491.9681204032648],
-  [179.99443543747114, 326.3681204032648],
-  [279.2944354374711, 491.9681204032648],
-  [279.2944354374711, 657.5681204032647],
-  [179.99443543747114, 823.1681204032647],
-  [279.2944354374711, 988.7681204032646],
-  [279.2944354374711, 1154.3681204032646],
-  [378.5944354374711, 1319.9681204032647],
-  [477.89443543747103, 1485.5681204032649],
-  [577.194435437471, 1651.168120403265],
-  [676.4944354374711, 1651.168120403265],
-  [775.7944354374712, 1816.7681204032651],
-  [676.4944354374711, 1816.7681204032651],
-  [775.7944354374712, 1651.168120403265],
-  [875.0944354374712, 1651.168120403265],
-  [974.3944354374713, 1651.168120403265],
-  [875.0944354374712, 1485.5681204032649],
-  [775.7944354374712, 1485.5681204032649],
-  [676.4944354374711, 1485.5681204032649],
-  [775.7944354374712, 1319.9681204032647],
-  [676.4944354374711, 1154.3681204032646],
-  [3138.413562431697, 2355.845602060523],
-  [3039.113562431697, 2521.445602060523],
-  [3039.113562431697, 2355.845602060523],
-  [3039.113562431697, 2190.245602060523],
-  [3138.413562431697, 2024.645602060523],
-  [3237.7135624316966, 1859.045602060523],
-  [3237.7135624316966, 2024.645602060523],
-  [3337.0135624316963, 1859.045602060523],
-  [3337.0135624316963, 1693.4456020605228],
-  [3436.313562431696, 1527.8456020605227],
-  [3535.6135624316958, 1693.4456020605228],
-  [3535.6135624316958, 1859.045602060523],
-  [3634.9135624316955, 2024.645602060523],
-  [3734.213562431695, 2190.245602060523],
-  [3634.9135624316955, 2190.245602060523],
-  [3535.6135624316958, 2190.245602060523],
-  [3535.6135624316958, 2355.845602060523],
-  [3535.6135624316958, 2521.445602060523],
-  [3436.313562431696, 2687.045602060523],
-  [3436.313562431696, 2852.645602060523],
-  [3535.6135624316958, 2687.045602060523],
-  [3634.9135624316955, 2521.445602060523],
-  [3634.9135624316955, 2355.845602060523],
-  [3734.213562431695, 2355.845602060523],
-  [3833.513562431695, 2190.245602060523],
-  [3932.8135624316947, 2024.645602060523],
-  [3833.513562431695, 1859.045602060523],
-  [3833.513562431695, 1693.4456020605228],
-  [3734.213562431695, 1859.045602060523],
-  [3734.213562431695, 1693.4456020605228],
-  [3734.213562431695, 1527.8456020605227],
-  [3634.9135624316955, 1527.8456020605227],
-  [3634.9135624316955, 1693.4456020605228],
-  [3535.6135624316958, 1527.8456020605227],
-  [3634.9135624316955, 1362.2456020605225],
-  [3535.6135624316958, 1362.2456020605225],
-  [3436.313562431696, 1196.6456020605224],
-  [3535.6135624316958, 1196.6456020605224],
-  [3535.6135624316958, 1031.0456020605222],
-  [3436.313562431696, 1031.0456020605222],
-  [3535.6135624316958, 865.4456020605222],
-  [3436.313562431696, 865.4456020605222],
-  [3535.6135624316958, 699.8456020605223],
-  [3634.9135624316955, 699.8456020605223],
-  [3535.6135624316958, 534.2456020605224],
-  [3436.313562431696, 368.64560206052244],
-  [3436.313562431696, 203.04560206052244],
-  [3337.0135624316963, 37.445602060522454],
-  [3436.313562431696, 37.445602060522454],
-  [3337.0135624316963, 203.04560206052244],
-  [3237.7135624316966, 37.445602060522454],
-  [3138.413562431697, 37.445602060522454],
-  [3237.7135624316966, 203.04560206052244],
-  [3337.0135624316963, 368.6456020605224],
-  [3436.313562431696, 534.2456020605224],
-  [3337.0135624316963, 699.8456020605223],
-  [3237.7135624316966, 534.2456020605224],
-  [3337.0135624316963, 534.2456020605224],
-  [3436.313562431696, 699.8456020605223],
-  [3337.0135624316963, 865.4456020605222],
-  [3237.7135624316966, 865.4456020605222],
-  [3337.0135624316963, 1031.0456020605222],
-  [3237.7135624316966, 1196.6456020605224],
-  [3138.413562431697, 1362.2456020605225],
-  [3039.113562431697, 1527.8456020605227],
-  [3138.413562431697, 1527.8456020605227],
-  [3039.113562431697, 1693.4456020605228],
-  [2939.8135624316974, 1527.8456020605227],
-  [2840.5135624316977, 1362.2456020605225],
-  [2840.5135624316977, 1527.8456020605227],
-  [2840.5135624316977, 1693.4456020605228],
-  [2939.8135624316974, 1859.045602060523],
-  [2840.5135624316977, 2024.645602060523],
-  [2840.5135624316977, 1859.045602060523],
-  [2939.8135624316974, 1693.4456020605228],
-  [3039.113562431697, 1859.045602060523],
-  [3039.113562431697, 2024.645602060523],
-  [2939.8135624316974, 2190.245602060523],
-  [2939.8135624316974, 2024.645602060523],
-  [16388.412117675925, 1839.818884803299],
-  [16289.112117675924, 1839.818884803299],
-  [16388.412117675925, 1674.2188848032988],
-  [16487.712117675925, 1508.6188848032987],
-  [16487.712117675925, 1674.2188848032988],
-  [16388.412117675925, 1508.6188848032987],
-  [16289.112117675924, 1343.0188848032985],
-  [16289.112117675924, 1508.6188848032987],
-  [16189.812117675923, 1674.2188848032988],
-  [16090.512117675922, 1839.818884803299],
-  [16090.512117675922, 2005.418884803299],
-  [15991.212117675921, 2171.018884803299],
-  [16090.512117675922, 2336.618884803299],
-  [16090.512117675922, 2502.218884803299],
-  [16090.512117675922, 2667.8188848032987],
-  [15991.212117675921, 2833.4188848032986],
-  [15991.212117675921, 2999.0188848032985],
-  [15891.91211767592, 3164.6188848032984],
-  [15891.91211767592, 3330.2188848032984],
-  [15991.212117675921, 3330.2188848032984],
-  [16090.512117675922, 3330.2188848032984],
-  [16189.812117675923, 3495.8188848032983],
-  [16289.112117675924, 3495.8188848032983],
-  [16189.812117675923, 3330.2188848032984],
-  [16189.812117675923, 3164.6188848032984],
-  [16289.112117675924, 3164.6188848032984],
-  [16388.412117675925, 3164.6188848032984],
-  [16388.412117675925, 3330.2188848032984],
-  [16487.712117675925, 3330.2188848032984],
-  [16587.012117675924, 3495.8188848032983],
-  [16587.012117675924, 3661.418884803298],
-  [16686.312117675923, 3661.418884803298],
-  [16785.612117675922, 3661.418884803298],
-  [16884.91211767592, 3661.418884803298],
-  [16984.21211767592, 3661.418884803298],
-  [16884.91211767592, 3827.018884803298],
-  [16884.91211767592, 3992.618884803298],
-  [16984.21211767592, 3827.018884803298],
-  [17083.51211767592, 3661.418884803298],
-  [17182.81211767592, 3495.8188848032983],
-  [17182.81211767592, 3330.2188848032984],
-  [17282.11211767592, 3164.6188848032984],
-  [17282.11211767592, 3330.2188848032984],
-  [17182.81211767592, 3164.6188848032984],
-  [17083.51211767592, 3164.6188848032984],
-  [16984.21211767592, 3330.2188848032984],
-  [16984.21211767592, 3495.8188848032983],
-  [17083.51211767592, 3330.2188848032984],
-  [16984.21211767592, 3164.6188848032984],
-  [16984.21211767592, 2999.0188848032985],
-  [17083.51211767592, 2833.4188848032986],
-  [17083.51211767592, 2667.8188848032987],
-  [17182.81211767592, 2667.8188848032987],
-  [17182.81211767592, 2833.4188848032986],
-  [17083.51211767592, 2999.0188848032985],
-  [16984.21211767592, 2833.4188848032986],
-  [16884.91211767592, 2833.4188848032986],
-  [16884.91211767592, 2999.0188848032985],
-  [16785.612117675922, 2999.0188848032985],
-  [16884.91211767592, 3164.6188848032984],
-  [16785.612117675922, 3164.6188848032984],
-  [16686.312117675923, 3164.6188848032984],
-  [16587.012117675924, 3164.6188848032984],
-  [16587.012117675924, 2999.0188848032985],
-  [16487.712117675925, 3164.6188848032984],
-  [16587.012117675924, 3330.2188848032984],
-  [16686.312117675923, 3495.8188848032983],
-  [16686.312117675923, 3330.2188848032984],
-  [16785.612117675922, 3330.2188848032984],
-  [16884.91211767592, 3495.8188848032983],
-  [16785.612117675922, 3495.8188848032983],
-  [16884.91211767592, 3330.2188848032984],
-  [1272.175991128079, 3842.7700224365044],
-  [1371.475991128079, 3842.7700224365044],
-  [1272.175991128079, 3677.1700224365045],
-  [1172.875991128079, 3511.5700224365046],
-  [1272.175991128079, 3511.5700224365046],
-  [1172.875991128079, 3345.9700224365047],
-  [1073.575991128079, 3180.3700224365048],
-  [1073.575991128079, 3014.770022436505],
-  [974.275991128079, 3014.770022436505],
-  [874.9759911280789, 3014.770022436505],
-  [775.6759911280789, 2849.170022436505],
-  [775.6759911280789, 3014.770022436505],
-  [775.6759911280789, 3180.3700224365048],
-  [676.3759911280788, 3345.9700224365047],
-  [676.3759911280788, 3511.5700224365046],
-  [775.6759911280789, 3677.1700224365045],
-  [676.3759911280788, 3842.7700224365044],
-  [577.0759911280787, 3842.7700224365044],
-  [577.0759911280787, 3677.1700224365045],
-  [676.3759911280788, 3677.1700224365045],
-  [775.6759911280789, 3511.5700224365046],
-  [775.6759911280789, 3345.9700224365047],
-  [874.9759911280789, 3345.9700224365047],
-  [874.9759911280789, 3180.3700224365048],
-  [974.275991128079, 3180.3700224365048],
-  [974.275991128079, 3345.9700224365047],
-  [1073.575991128079, 3511.5700224365046],
-  [1073.575991128079, 3677.1700224365045],
-  [1172.875991128079, 3677.1700224365045],
-  [1172.875991128079, 3842.7700224365044],
-  [1073.575991128079, 3842.7700224365044],
-  [1172.875991128079, 4008.3700224365043],
-  [1073.575991128079, 4008.3700224365043],
-  [974.275991128079, 3842.7700224365044],
-  [974.275991128079, 4008.3700224365043],
-  [874.9759911280789, 4008.3700224365043],
-  [775.6759911280789, 4008.3700224365043],
-  [874.9759911280789, 3842.7700224365044],
-  [974.275991128079, 3677.1700224365045],
-  [974.275991128079, 3511.5700224365046],
-  [1073.575991128079, 3345.9700224365047],
-  [1172.875991128079, 3180.3700224365048],
-  [1272.175991128079, 3180.3700224365048],
-  [1272.175991128079, 3345.9700224365047],
-  [1371.475991128079, 3180.3700224365048],
-  [1470.7759911280789, 3345.9700224365047],
-  [1371.475991128079, 3345.9700224365047],
-  [1371.475991128079, 3511.5700224365046],
-  [1470.7759911280789, 3511.5700224365046],
-  [1570.0759911280788, 3677.1700224365045],
-  [1470.7759911280789, 3677.1700224365045],
-  [1570.0759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3677.1700224365045],
-  [1768.6759911280787, 3842.7700224365044],
-  [1669.3759911280788, 3842.7700224365044],
-  [1768.6759911280787, 4008.3700224365043],
-  [1867.9759911280787, 3842.7700224365044],
-  [1967.2759911280787, 3677.1700224365045],
-  [2066.5759911280784, 3842.7700224365044],
-  [2165.875991128078, 3677.1700224365045],
-  [2066.5759911280784, 3511.5700224365046],
-  [2165.875991128078, 3511.5700224365046],
-  [2066.5759911280784, 3677.1700224365045],
-  [2165.875991128078, 3842.7700224365044],
-  [2265.175991128078, 4008.3700224365043],
-  [2364.4759911280776, 4008.3700224365043],
-  [2265.175991128078, 3842.7700224365044],
-  [2364.4759911280776, 3677.1700224365045],
-  [2463.7759911280773, 3842.7700224365044],
-  [2463.7759911280773, 4008.3700224365043],
-  [2364.4759911280776, 3842.7700224365044],
-  [6853.940039224797, 6050.837897021371],
-  [6953.240039224797, 6050.837897021371],
-  [7052.5400392247975, 5885.237897021371],
-  [7052.5400392247975, 5719.637897021372],
-  [7151.840039224798, 5885.237897021371],
-  [7052.5400392247975, 6050.837897021371],
-  [7052.5400392247975, 6216.43789702137],
-  [7052.5400392247975, 6382.03789702137],
-  [6953.240039224797, 6382.03789702137],
-  [6953.240039224797, 6216.43789702137],
-  [6853.940039224797, 6216.43789702137],
-  [6853.940039224797, 6382.03789702137],
-  [6754.640039224797, 6216.43789702137],
-  [6754.640039224797, 6382.03789702137],
-  [6754.640039224797, 6547.637897021369],
-  [6754.640039224797, 6713.237897021369],
-  [6655.340039224797, 6713.237897021369],
-  [6754.640039224797, 6878.837897021368],
-  [6853.940039224797, 6713.237897021369],
-  [6853.940039224797, 6878.837897021368],
-  [6953.240039224797, 6713.237897021369],
-  [7052.5400392247975, 6547.637897021369],
-  [7151.840039224798, 6713.237897021369],
-  [7151.840039224798, 6547.637897021369],
-  [7151.840039224798, 6382.03789702137],
-  [7251.140039224798, 6547.637897021369],
-  [7251.140039224798, 6713.237897021369],
-  [7350.440039224798, 6878.837897021368],
-  [7449.740039224798, 6878.837897021368],
-  [7449.740039224798, 6713.237897021369],
-  [7549.040039224798, 6547.637897021369],
-  [7449.740039224798, 6382.03789702137],
-  [7449.740039224798, 6216.43789702137],
-  [7549.040039224798, 6050.837897021371],
-  [7648.340039224799, 6216.43789702137],
-  [7549.040039224798, 6382.03789702137],
-  [7648.340039224799, 6382.03789702137],
-  [7747.640039224799, 6216.43789702137],
-  [7846.940039224799, 6382.03789702137],
-  [7946.240039224799, 6382.03789702137],
-  [7946.240039224799, 6547.637897021369],
-  [7846.940039224799, 6713.237897021369],
-  [7946.240039224799, 6713.237897021369],
-  [8045.540039224799, 6547.637897021369],
-  [8045.540039224799, 6713.237897021369],
-  [7946.240039224799, 6878.837897021368],
-  [7946.240039224799, 7044.4378970213675],
-  [8045.540039224799, 7210.037897021367],
-  [8144.8400392247995, 7375.637897021366],
-  [8144.8400392247995, 7541.237897021366],
-  [8045.540039224799, 7375.637897021366],
-  [8144.8400392247995, 7210.037897021367],
-  [8045.540039224799, 7044.4378970213675],
-  [7946.240039224799, 7210.037897021367],
-  [7846.940039224799, 7210.037897021367],
-  [7946.240039224799, 7375.637897021366],
-  [8045.540039224799, 7541.237897021366],
-  [8144.8400392247995, 7706.837897021365],
-  [8244.1400392248, 7541.237897021366],
-  [8343.4400392248, 7541.237897021366],
-  [8343.4400392248, 7706.837897021365],
-  [8244.1400392248, 7706.837897021365],
-  [4735.523842661975, 3503.497768214323],
-  [4636.223842661975, 3337.897768214323],
-  [4536.923842661975, 3337.897768214323],
-  [4437.623842661975, 3172.2977682143232],
-  [4338.323842661975, 3172.2977682143232],
-  [4239.023842661974, 3172.2977682143232],
-  [4338.323842661975, 3006.6977682143233],
-  [4437.623842661975, 2841.0977682143234],
-  [4338.323842661975, 2675.4977682143235],
-  [4338.323842661975, 2509.8977682143236],
-  [4239.023842661974, 2675.4977682143235],
-  [4139.723842661974, 2509.8977682143236],
-  [4040.4238426619745, 2344.2977682143237],
-  [4139.723842661974, 2178.697768214324],
-  [4239.023842661974, 2178.697768214324],
-  [4139.723842661974, 2344.2977682143237],
-  [4040.4238426619745, 2178.697768214324],
-  [4139.723842661974, 2013.0977682143237],
-  [4139.723842661974, 1847.4977682143235],
-  [4239.023842661974, 2013.0977682143237],
-  [4239.023842661974, 1847.4977682143235],
-  [4338.323842661975, 1847.4977682143235],
-  [4437.623842661975, 1847.4977682143235],
-  [4536.923842661975, 1681.8977682143234],
-  [4437.623842661975, 1516.2977682143232],
-  [4536.923842661975, 1516.2977682143232],
-  [4536.923842661975, 1350.697768214323],
-  [4437.623842661975, 1350.697768214323],
-  [4536.923842661975, 1185.097768214323],
-  [4636.223842661975, 1019.497768214323],
-  [4536.923842661975, 853.897768214323],
-  [4636.223842661975, 853.897768214323],
-  [4735.523842661975, 688.2977682143231],
-  [4636.223842661975, 522.6977682143232],
-  [4636.223842661975, 357.09776821432325],
-  [4735.523842661975, 357.09776821432325],
-  [4735.523842661975, 522.6977682143232],
-  [4636.223842661975, 688.2977682143231],
-  [4735.523842661975, 853.897768214323],
-  [4834.8238426619755, 853.897768214323],
-  [4735.523842661975, 1019.497768214323],
-  [4735.523842661975, 1185.097768214323],
-  [4735.523842661975, 1350.697768214323],
-  [4834.8238426619755, 1516.2977682143232],
-  [4735.523842661975, 1516.2977682143232],
-  [4834.8238426619755, 1350.697768214323],
-  [4834.8238426619755, 1185.097768214323],
-  [4934.123842661976, 1350.697768214323],
-  [5033.423842661976, 1185.097768214323],
-  [5033.423842661976, 1019.497768214323],
-  [5033.423842661976, 853.897768214323],
-  [4934.123842661976, 853.897768214323],
-  [4934.123842661976, 1019.497768214323],
-  [4834.8238426619755, 1019.497768214323],
-  [4934.123842661976, 1185.097768214323],
-  [5033.423842661976, 1350.697768214323],
-  [5132.723842661976, 1350.697768214323],
-  [5132.723842661976, 1185.097768214323],
-  [5232.023842661976, 1019.497768214323],
-  [5232.023842661976, 1185.097768214323],
-  [5331.323842661976, 1019.497768214323],
-  [5430.623842661977, 1019.497768214323],
-  [5529.923842661977, 1185.097768214323],
-  [5430.623842661977, 1350.697768214323],
-  [5430.623842661977, 1516.2977682143232],
-  [5529.923842661977, 1350.697768214323],
-  [5629.223842661977, 1350.697768214323],
-  [5728.523842661977, 1350.697768214323],
-  [5728.523842661977, 1516.2977682143232],
-  [5728.523842661977, 1681.8977682143234],
-  [5629.223842661977, 1516.2977682143232],
-  [5529.923842661977, 1516.2977682143232],
-  [5629.223842661977, 1681.8977682143234],
-  [5529.923842661977, 1681.8977682143234],
-  [5430.623842661977, 1847.4977682143235],
-  [5331.323842661976, 1847.4977682143235],
-  [5331.323842661976, 2013.0977682143237],
-  [5232.023842661976, 2178.697768214324],
-  [5132.723842661976, 2013.0977682143237],
-  [5132.723842661976, 2178.697768214324],
-  [5232.023842661976, 2013.0977682143237],
-  [5232.023842661976, 1847.4977682143235],
-  [5232.023842661976, 1681.8977682143234],
-  [5331.323842661976, 1681.8977682143234],
-  [5331.323842661976, 1516.2977682143232],
-  [5331.323842661976, 1350.697768214323],
-  [5232.023842661976, 1350.697768214323],
-  [5232.023842661976, 1516.2977682143232],
-  [5132.723842661976, 1516.2977682143232],
-  [5132.723842661976, 1681.8977682143234],
-  [5033.423842661976, 1847.4977682143235],
-  [5132.723842661976, 1847.4977682143235],
-  [5033.423842661976, 2013.0977682143237],
-  [4934.123842661976, 2178.697768214324],
-  [5033.423842661976, 2344.2977682143237],
-  [4934.123842661976, 2344.2977682143237],
-  [4834.8238426619755, 2178.697768214324],
-  [4834.8238426619755, 2344.2977682143237],
-  [4735.523842661975, 2344.2977682143237],
-  [4636.223842661975, 2344.2977682143237],
-  [4536.923842661975, 2178.697768214324],
-  [4437.623842661975, 2013.0977682143237],
-  [4338.323842661975, 2178.697768214324],
-  [4437.623842661975, 2344.2977682143237],
-  [4536.923842661975, 2509.8977682143236],
-  [4636.223842661975, 2675.4977682143235],
-  [4636.223842661975, 2509.8977682143236],
-  [4536.923842661975, 2675.4977682143235],
-  [4636.223842661975, 2841.0977682143234],
-  [4536.923842661975, 2841.0977682143234],
-  [4636.223842661975, 3006.6977682143233],
-  [4735.523842661975, 3172.2977682143232],
-  [4834.8238426619755, 3006.6977682143233],
-  [4735.523842661975, 2841.0977682143234],
-  [4735.523842661975, 3006.6977682143233],
-  [4636.223842661975, 3172.2977682143232],
-  [4735.523842661975, 3337.897768214323],
-  [4834.8238426619755, 3503.497768214323],
-  [4735.523842661975, 3669.097768214323],
-  [4834.8238426619755, 3834.697768214323],
-  [4834.8238426619755, 3669.097768214323],
-  [4934.123842661976, 3503.497768214323],
-  [5033.423842661976, 3503.497768214323],
-  [5033.423842661976, 3337.897768214323],
-  [4934.123842661976, 3337.897768214323],
-  [4834.8238426619755, 3172.2977682143232],
-  [4834.8238426619755, 3337.897768214323],
-  [4934.123842661976, 3172.2977682143232],
-  [5033.423842661976, 3006.6977682143233],
-  [5132.723842661976, 2841.0977682143234],
-  [5132.723842661976, 3006.6977682143233],
-  [5232.023842661976, 3172.2977682143232],
-  [5232.023842661976, 3337.897768214323],
-  [5132.723842661976, 3337.897768214323],
-  [5232.023842661976, 3503.497768214323],
-  [5331.323842661976, 3337.897768214323],
-  [5331.323842661976, 3503.497768214323],
-  [5430.623842661977, 3669.097768214323],
-  [5331.323842661976, 3669.097768214323],
-  [5430.623842661977, 3503.497768214323],
-  [5430.623842661977, 3337.897768214323],
-  [5529.923842661977, 3172.2977682143232],
-  [5529.923842661977, 3337.897768214323],
-  [5629.223842661977, 3337.897768214323],
-  [5728.523842661977, 3337.897768214323],
-  [5728.523842661977, 3503.497768214323],
-  [5827.823842661977, 3503.497768214323],
-  [5927.1238426619775, 3669.097768214323],
-  [6026.423842661978, 3669.097768214323],
-  [6125.723842661978, 3503.497768214323],
-  [6125.723842661978, 3669.097768214323],
-  [6225.023842661978, 3503.497768214323],
-  [6225.023842661978, 3337.897768214323],
-  [6324.323842661978, 3337.897768214323],
-  [6423.623842661978, 3503.497768214323],
-  [6324.323842661978, 3669.097768214323],
-  [6225.023842661978, 3669.097768214323],
-  [6324.323842661978, 3834.697768214323],
-  [6423.623842661978, 3834.697768214323],
-  [6324.323842661978, 4000.297768214323],
-  [6225.023842661978, 3834.697768214323],
-  [6125.723842661978, 3834.697768214323],
-  [6125.723842661978, 4000.297768214323],
-  [6225.023842661978, 4000.297768214323],
-  [6225.023842661978, 4165.897768214322],
-  [6225.023842661978, 4331.497768214322],
-  [6125.723842661978, 4165.897768214322],
-  [6026.423842661978, 4000.2977682143223],
-  [5927.1238426619775, 4165.897768214322],
-  [6026.423842661978, 4331.497768214322],
-  [6026.423842661978, 4497.097768214321],
-  [5927.1238426619775, 4497.097768214321],
-  [5827.823842661977, 4662.697768214321],
-  [5728.523842661977, 4828.29776821432],
-  [5827.823842661977, 4828.29776821432],
-  [5927.1238426619775, 4828.29776821432],
-  [5927.1238426619775, 4662.697768214321],
-  [5827.823842661977, 4497.097768214321],
-  [5927.1238426619775, 4331.497768214322],
-  [5827.823842661977, 4165.897768214322],
-  [5728.523842661977, 4331.497768214322],
-  [5728.523842661977, 4165.897768214322],
-  [5629.223842661977, 4000.2977682143223],
-  [5629.223842661977, 3834.6977682143224],
-  [5529.923842661977, 3669.0977682143225],
-  [5629.223842661977, 3503.4977682143226],
-  [5728.523842661977, 3669.0977682143225],
-  [5827.823842661977, 3669.0977682143225],
-  [5927.1238426619775, 3834.6977682143224],
-  [5927.1238426619775, 4000.2977682143223],
-  [6026.423842661978, 4165.897768214322],
-  [6125.723842661978, 4331.497768214322],
-  [6225.023842661978, 4497.097768214321],
-  [6225.023842661978, 4662.697768214321],
-  [6324.323842661978, 4662.697768214321],
-  [6225.023842661978, 4828.29776821432],
-  [6324.323842661978, 4828.29776821432],
-  [6423.623842661978, 4828.29776821432],
-  [6324.323842661978, 4993.8977682143195],
-  [6225.023842661978, 5159.497768214319],
-  [6125.723842661978, 5159.497768214319],
-  [6026.423842661978, 5325.097768214318],
-  [5927.1238426619775, 5490.697768214318],
-  [6026.423842661978, 5656.297768214317],
-  [5927.1238426619775, 5821.897768214317],
-  [5927.1238426619775, 5987.497768214316],
-  [6026.423842661978, 5987.497768214316],
-  [6026.423842661978, 5821.897768214317],
-  [5927.1238426619775, 5656.297768214317],
-  [5827.823842661977, 5656.297768214317],
-  [5827.823842661977, 5490.697768214318],
-  [5728.523842661977, 5490.697768214318],
-  [5629.223842661977, 5325.097768214318],
-  [5629.223842661977, 5159.497768214319],
-  [5529.923842661977, 4993.8977682143195],
-  [5529.923842661977, 5159.497768214319],
-  [5629.223842661977, 4993.8977682143195],
-  [5629.223842661977, 4828.29776821432],
-  [5529.923842661977, 4662.697768214321],
-  [5430.623842661977, 4828.29776821432],
-  [5529.923842661977, 4828.29776821432],
-  [5629.223842661977, 4662.697768214321],
-  [5728.523842661977, 4662.697768214321],
-  [5629.223842661977, 4497.097768214321],
-  [5728.523842661977, 4497.097768214321],
-  [5827.823842661977, 4331.497768214322],
-  [10216.161365168813, 2951.605409896135],
-  [10116.861365168812, 2951.605409896135],
-  [10017.56136516881, 3117.205409896135],
-  [9918.26136516881, 3117.205409896135],
-  [9818.961365168809, 3117.205409896135],
-  [9719.661365168808, 3282.8054098961347],
-  [9620.361365168807, 3282.8054098961347],
-  [9620.361365168807, 3117.205409896135],
-  [9521.061365168805, 2951.605409896135],
-  [9521.061365168805, 2786.005409896135],
-  [9620.361365168807, 2786.005409896135],
-  [9719.661365168808, 2786.005409896135],
-  [9818.961365168809, 2620.405409896135],
-  [9918.26136516881, 2786.005409896135],
-  [9818.961365168809, 2951.605409896135],
-  [9818.961365168809, 2786.005409896135],
-  [9719.661365168808, 2620.405409896135],
-  [9719.661365168808, 2454.805409896135],
-  [9620.361365168807, 2289.2054098961353],
-  [9521.061365168805, 2123.6054098961354],
-  [9620.361365168807, 1958.0054098961352],
-  [9719.661365168808, 2123.6054098961354],
-  [9818.961365168809, 2289.2054098961353],
-  [9818.961365168809, 2123.6054098961354],
-  [9818.961365168809, 1958.0054098961352],
-  [9719.661365168808, 1958.0054098961352],
-  [9620.361365168807, 1792.405409896135],
-  [9620.361365168807, 1626.805409896135],
-  [9521.061365168805, 1461.2054098961348],
-  [9421.761365168804, 1295.6054098961347],
-  [9521.061365168805, 1130.0054098961346],
-  [9521.061365168805, 964.4054098961345],
-  [9421.761365168804, 964.4054098961345],
-  [9521.061365168805, 798.8054098961346],
-  [9620.361365168807, 798.8054098961346],
-  [9620.361365168807, 964.4054098961345],
-  [9620.361365168807, 1130.0054098961346],
-  [9620.361365168807, 1295.6054098961347],
-  [9620.361365168807, 1461.2054098961348],
-  [9719.661365168808, 1295.6054098961347],
-  [9818.961365168809, 1130.0054098961346],
-  [9918.26136516881, 964.4054098961345],
-  [9818.961365168809, 964.4054098961345],
-  [9918.26136516881, 798.8054098961346],
-  [10017.56136516881, 633.2054098961347],
-  [9918.26136516881, 467.60540989613474],
-  [9918.26136516881, 302.0054098961348],
-  [10017.56136516881, 302.0054098961348],
-  [10116.861365168812, 136.40540989613478],
-  [10116.861365168812, 302.0054098961348],
-  [10116.861365168812, 467.60540989613474],
-  [10116.861365168812, 633.2054098961347],
-  [10216.161365168813, 633.2054098961347],
-  [10216.161365168813, 798.8054098961346],
-  [10315.461365168814, 633.2054098961347],
-  [10315.461365168814, 798.8054098961346],
-  [10414.761365168815, 798.8054098961346],
-  [10514.061365168816, 633.2054098961347],
-  [10514.061365168816, 798.8054098961346],
-  [10414.761365168815, 964.4054098961345],
-  [10315.461365168814, 964.4054098961345],
-  [10216.161365168813, 964.4054098961345],
-  [10116.861365168812, 798.8054098961346],
-  [10017.56136516881, 798.8054098961346],
-  [10116.861365168812, 964.4054098961345],
-  [10216.161365168813, 1130.0054098961346],
-  [10116.861365168812, 1130.0054098961346],
-  [10216.161365168813, 1295.6054098961347],
-  [10216.161365168813, 1461.2054098961348],
-  [10315.461365168814, 1626.805409896135],
-  [10315.461365168814, 1792.405409896135],
-  [10216.161365168813, 1958.0054098961352],
-  [10216.161365168813, 1792.405409896135],
-  [10116.861365168812, 1792.405409896135],
-  [10017.56136516881, 1958.0054098961352],
-  [9918.26136516881, 2123.6054098961354],
-  [9918.26136516881, 1958.0054098961352],
-  [10017.56136516881, 2123.6054098961354],
-  [10116.861365168812, 2123.6054098961354],
-  [10017.56136516881, 2289.2054098961353],
-  [10017.56136516881, 2454.805409896135],
-  [10116.861365168812, 2289.2054098961353],
-  [10216.161365168813, 2454.805409896135],
-  [10315.461365168814, 2620.405409896135],
-  [10315.461365168814, 2454.805409896135],
-  [10315.461365168814, 2289.2054098961353],
-  [10414.761365168815, 2454.805409896135],
-  [10514.061365168816, 2620.405409896135],
-  [10613.361365168817, 2786.005409896135],
-  [10514.061365168816, 2786.005409896135],
-  [10613.361365168817, 2620.405409896135],
-  [10514.061365168816, 2454.805409896135],
-  [10514.061365168816, 2289.2054098961353],
-  [10613.361365168817, 2289.2054098961353],
-  [10712.661365168819, 2289.2054098961353],
-  [10811.96136516882, 2454.805409896135],
-  [10911.26136516882, 2289.2054098961353],
-  [10811.96136516882, 2289.2054098961353],
-  [10712.661365168819, 2454.805409896135],
-  [10712.661365168819, 2620.405409896135],
-  [10811.96136516882, 2786.005409896135],
-  [10911.26136516882, 2620.405409896135],
-  [10911.26136516882, 2786.005409896135],
-  [11010.561365168822, 2620.405409896135],
-  [10911.26136516882, 2454.805409896135],
-  [10811.96136516882, 2620.405409896135],
-  [10712.661365168819, 2786.005409896135],
-  [10811.96136516882, 2951.605409896135],
-  [10911.26136516882, 2951.605409896135],
-  [10811.96136516882, 3117.205409896135],
-  [10712.661365168819, 2951.605409896135],
-  [10613.361365168817, 2951.605409896135],
-  [10514.061365168816, 2951.605409896135],
-  [10414.761365168815, 3117.205409896135],
-  [10414.761365168815, 2951.605409896135],
-  [10315.461365168814, 2786.005409896135],
-  [10216.161365168813, 2620.405409896135],
-  [10216.161365168813, 2786.005409896135],
-  [10315.461365168814, 2951.605409896135],
-  [10315.461365168814, 3117.205409896135],
-  [10216.161365168813, 3117.205409896135],
-  [10116.861365168812, 3117.205409896135],
-  [10017.56136516881, 3282.8054098961347],
-  [9918.26136516881, 3448.4054098961346],
-  [9818.961365168809, 3448.4054098961346],
-  [9818.961365168809, 3614.0054098961346],
-  [9719.661365168808, 3448.4054098961346],
-  [9818.961365168809, 3282.8054098961347],
-  [9719.661365168808, 3117.205409896135],
-  [9620.361365168807, 2951.605409896135],
-  [9521.061365168805, 3117.205409896135],
-  [9521.061365168805, 3282.8054098961347],
-  [9421.761365168804, 3117.205409896135],
-  [9421.761365168804, 3282.8054098961347],
-  [9322.461365168803, 3117.205409896135],
-  [9421.761365168804, 2951.605409896135],
-  [9322.461365168803, 2951.605409896135],
-  [9223.161365168802, 2786.005409896135],
-  [9322.461365168803, 2620.405409896135],
-  [9421.761365168804, 2454.805409896135],
-  [9521.061365168805, 2289.2054098961353],
-  [9421.761365168804, 2123.6054098961354],
-  [9421.761365168804, 1958.0054098961352],
-  [9421.761365168804, 1792.405409896135],
-  [9521.061365168805, 1626.805409896135],
-  [9421.761365168804, 1626.805409896135],
-  [9322.461365168803, 1792.405409896135],
-  [9322.461365168803, 1626.805409896135],
-  [9322.461365168803, 1461.2054098961348],
-  [9421.761365168804, 1461.2054098961348],
-  [9521.061365168805, 1295.6054098961347],
-  [9421.761365168804, 1130.0054098961346],
-  [9322.461365168803, 964.4054098961345],
-  [9223.161365168802, 964.4054098961345],
-  [9223.161365168802, 798.8054098961346],
-  [9322.461365168803, 633.2054098961347],
-  [9421.761365168804, 798.8054098961346],
-  [9421.761365168804, 633.2054098961347],
-  [9521.061365168805, 633.2054098961347],
-  [9421.761365168804, 467.60540989613474],
-  [9421.761365168804, 302.0054098961348],
-  [9322.461365168803, 136.40540989613478],
-  [9223.161365168802, 302.0054098961348],
-  [9123.861365168801, 302.0054098961348],
-  [9024.5613651688, 136.40540989613478],
-  [9123.861365168801, 136.40540989613478],
-  [9223.161365168802, 136.40540989613478],
-  [9322.461365168803, 302.0054098961348],
-  [9421.761365168804, 136.40540989613478],
-  [9521.061365168805, 136.40540989613478],
-  [9620.361365168807, 136.40540989613478],
-  [9620.361365168807, 302.0054098961348],
-  [9521.061365168805, 302.0054098961348],
-  [9521.061365168805, 467.60540989613474],
-  [9620.361365168807, 467.60540989613474],
-  [9719.661365168808, 302.0054098961348],
-  [9719.661365168808, 136.40540989613478],
-  [9818.961365168809, 136.40540989613478],
-  [9918.26136516881, 136.40540989613478],
-  [10017.56136516881, 136.40540989613478],
-  [366.07287160549004, 5394.185440937868],
-  [465.37287160549005, 5394.185440937868],
-  [465.37287160549005, 5559.785440937868],
-  [366.0728716054901, 5559.785440937868],
-  [366.0728716054901, 5725.385440937867],
-  [266.77287160549014, 5725.385440937867],
-  [167.47287160549016, 5559.785440937868],
-  [266.77287160549014, 5559.785440937868],
-  [266.77287160549014, 5394.185440937868],
-  [266.77287160549014, 5228.585440937869],
-  [167.47287160549016, 5394.185440937868],
-  [68.17287160549016, 5228.585440937869],
-  [167.47287160549013, 5062.9854409378695],
-  [68.17287160549013, 4897.38544093787],
-  [167.47287160549013, 4731.785440937871],
-  [266.77287160549014, 4731.785440937871],
-  [167.47287160549016, 4566.185440937871],
-  [68.17287160549016, 4566.185440937871],
-  [68.17287160549016, 4731.785440937871],
-  [167.47287160549013, 4897.38544093787],
-  [68.17287160549013, 5062.9854409378695],
-  [167.47287160549013, 5228.585440937869],
-  [266.77287160549014, 5062.9854409378695],
-  [366.0728716054901, 4897.38544093787],
-  [266.77287160549014, 4897.38544093787],
-  [366.0728716054901, 4731.785440937871],
-  [465.37287160549005, 4897.38544093787],
-  [366.0728716054901, 5062.9854409378695],
-  [465.37287160549005, 5062.9854409378695],
-  [366.0728716054901, 5228.585440937869],
-  [465.37287160549005, 5228.585440937869],
-  [564.6728716054901, 5394.185440937868],
-  [663.9728716054901, 5228.585440937869],
-  [564.6728716054901, 5062.9854409378695],
-  [663.9728716054901, 4897.38544093787],
-  [763.2728716054902, 4731.785440937871],
-  [862.5728716054903, 4566.185440937871],
-  [961.8728716054903, 4731.785440937871],
-  [862.5728716054903, 4731.785440937871],
-  [961.8728716054903, 4566.185440937871],
-  [862.5728716054903, 4400.585440937872],
-  [961.8728716054903, 4234.985440937872],
-  [1061.1728716054904, 4400.585440937872],
-  [1160.4728716054904, 4234.985440937872],
-  [1160.4728716054904, 4400.585440937872],
-  [1259.7728716054903, 4234.985440937872],
-  [1359.0728716054903, 4069.3854409378723],
-  [1458.3728716054902, 4069.3854409378723],
-  [1557.6728716054902, 4234.985440937872],
-  [1656.9728716054901, 4400.585440937872],
-  [1557.6728716054902, 4400.585440937872],
-  [1458.3728716054902, 4400.585440937872],
-  [1359.0728716054903, 4566.185440937871],
-  [1359.0728716054903, 4731.785440937871],
-  [1259.7728716054903, 4731.785440937871],
-  [1359.0728716054903, 4897.38544093787],
-  [1458.3728716054902, 4731.785440937871],
-  [1458.3728716054902, 4897.38544093787],
-  [1359.0728716054903, 5062.9854409378695],
-  [1259.7728716054903, 5228.585440937869],
-  [1259.7728716054903, 5062.9854409378695],
-  [1259.7728716054903, 4897.38544093787],
-  [1160.4728716054904, 5062.9854409378695],
-  [1160.4728716054904, 5228.585440937869],
-  [1061.1728716054904, 5228.585440937869],
-  [1061.1728716054904, 5062.9854409378695],
-  [961.8728716054903, 5228.585440937869],
-  [862.5728716054903, 5062.9854409378695],
-  [961.8728716054903, 5062.9854409378695],
-  [961.8728716054903, 4897.38544093787],
-  [1061.1728716054904, 4897.38544093787],
-  [1160.4728716054904, 4731.785440937871],
-  [1259.7728716054903, 4566.185440937871],
-  [1359.0728716054903, 4400.585440937872],
-  [1458.3728716054902, 4566.185440937871],
-  [1557.6728716054902, 4566.185440937871],
-  [1656.9728716054901, 4731.785440937871],
-  [1557.6728716054902, 4897.38544093787],
-  [1458.3728716054902, 5062.9854409378695],
-  [1557.6728716054902, 5228.585440937869],
-  [1656.9728716054901, 5062.9854409378695],
-  [1756.27287160549, 5062.9854409378695],
-  [1756.27287160549, 4897.38544093787],
-  [1855.57287160549, 5062.9854409378695],
-  [1954.87287160549, 4897.38544093787],
-  [2054.17287160549, 5062.9854409378695],
-  [1954.87287160549, 5062.9854409378695],
-  [2054.17287160549, 5228.585440937869],
-  [2153.4728716054897, 5228.585440937869],
-  [2252.7728716054894, 5062.9854409378695],
-  [2352.072871605489, 5228.585440937869],
-  [2451.372871605489, 5394.185440937868],
-  [2352.072871605489, 5394.185440937868],
-  [2252.7728716054894, 5228.585440937869],
-  [2153.4728716054897, 5062.9854409378695],
-  [2153.4728716054897, 4897.38544093787],
-  [2252.7728716054894, 4897.38544093787],
-  [2352.072871605489, 4731.785440937871],
-  [2252.7728716054894, 4731.785440937871],
-  [2153.4728716054897, 4731.785440937871],
-  [2054.17287160549, 4566.185440937871],
-  [1954.87287160549, 4731.785440937871],
-  [1855.57287160549, 4897.38544093787],
-  [1756.27287160549, 4731.785440937871],
-  [1855.57287160549, 4731.785440937871],
-  [1855.57287160549, 4566.185440937871],
-  [1756.27287160549, 4566.185440937871],
-  [1656.9728716054901, 4566.185440937871],
-  [1557.6728716054902, 4731.785440937871],
-  [1656.9728716054901, 4897.38544093787],
-  [1557.6728716054902, 5062.9854409378695],
-  [1458.3728716054902, 5228.585440937869],
-  [1359.0728716054903, 5228.585440937869],
-  [1259.7728716054903, 5394.185440937868],
-  [1259.7728716054903, 5559.785440937868],
-  [1160.4728716054904, 5559.785440937868],
-  [1061.1728716054904, 5559.785440937868],
-  [1160.4728716054904, 5725.385440937867],
-  [1259.7728716054903, 5725.385440937867],
-  [1359.0728716054903, 5559.785440937868],
-  [1458.3728716054902, 5725.385440937867],
-  [1458.3728716054902, 5559.785440937868],
-  [1359.0728716054903, 5725.385440937867],
-  [1259.7728716054903, 5890.985440937867],
-  [1359.0728716054903, 5890.985440937867],
-  [1259.7728716054903, 6056.585440937866],
-  [1359.0728716054903, 6222.185440937866],
-  [1458.3728716054902, 6222.185440937866],
-  [1458.3728716054902, 6387.785440937865],
-  [1557.6728716054902, 6222.185440937866],
-  [1557.6728716054902, 6387.785440937865],
-  [1656.9728716054901, 6222.185440937866],
-  [1756.27287160549, 6056.585440937866],
-  [1855.57287160549, 5890.985440937867],
-  [1756.27287160549, 5890.985440937867],
-  [1656.9728716054901, 6056.585440937866],
-  [1557.6728716054902, 5890.985440937867],
-  [1458.3728716054902, 5890.985440937867],
-  [1359.0728716054903, 6056.585440937866],
-  [1259.7728716054903, 6222.185440937866],
-  [1160.4728716054904, 6056.585440937866],
-  [1061.1728716054904, 5890.985440937867],
-  [1061.1728716054904, 6056.585440937866],
-  [1160.4728716054904, 6222.185440937866],
-  [1061.1728716054904, 6222.185440937866],
-  [961.8728716054903, 6222.185440937866],
-  [961.8728716054903, 6056.585440937866],
-  [961.8728716054903, 5890.985440937867],
-  [961.8728716054903, 5725.385440937867],
-  [862.5728716054903, 5559.785440937868],
-  [763.2728716054902, 5725.385440937867],
-  [862.5728716054903, 5725.385440937867],
-  [763.2728716054902, 5890.985440937867],
-  [663.9728716054901, 5725.385440937867],
-  [763.2728716054902, 5559.785440937868],
-  [763.2728716054902, 5394.185440937868],
-  [862.5728716054903, 5228.585440937869],
-  [961.8728716054903, 5394.185440937868],
-  [1061.1728716054904, 5394.185440937868],
-  [961.8728716054903, 5559.785440937868],
-  [862.5728716054903, 5394.185440937868],
-  [763.2728716054902, 5228.585440937869],
-  [663.9728716054901, 5062.9854409378695],
-  [763.2728716054902, 5062.9854409378695],
-  [763.2728716054902, 4897.38544093787],
-  [663.9728716054901, 4731.785440937871],
-  [564.6728716054901, 4731.785440937871],
-  [465.37287160549005, 4566.185440937871],
-  [366.0728716054901, 4566.185440937871],
-  [465.37287160549005, 4731.785440937871],
-  [564.6728716054901, 4566.185440937871],
-  [465.37287160549005, 4400.585440937872],
-  [366.0728716054901, 4400.585440937872],
-  [266.77287160549014, 4234.985440937872],
-  [167.47287160549016, 4234.985440937872],
-  [266.77287160549014, 4400.585440937872],
-  [266.77287160549014, 4566.185440937871],
-  [167.47287160549016, 4400.585440937872],
-  [68.17287160549016, 4234.985440937872],
-  [167.47287160549013, 4069.3854409378723],
-  [68.17287160549013, 3903.7854409378724],
-  [68.17287160549013, 4069.3854409378723],
-  [167.47287160549013, 3903.7854409378724],
-  [266.77287160549014, 3903.7854409378724],
-  [366.0728716054901, 3738.1854409378725],
-  [266.77287160549014, 3738.1854409378725],
-  [266.77287160549014, 3572.5854409378726],
-  [167.47287160549016, 3406.9854409378727],
-  [167.47287160549016, 3241.3854409378728],
-  [266.77287160549014, 3241.3854409378728],
-  [266.77287160549014, 3406.9854409378727],
-  [366.0728716054901, 3572.5854409378726],
-  [465.37287160549005, 3738.1854409378725],
-  [465.37287160549005, 3903.7854409378724],
-  [366.0728716054901, 4069.3854409378723],
-  [366.0728716054901, 4234.985440937872],
-  [465.37287160549005, 4234.985440937872],
-  [564.6728716054901, 4069.3854409378723],
-  [465.37287160549005, 4069.3854409378723],
-  [564.6728716054901, 4234.985440937872],
-  [663.9728716054901, 4069.3854409378723],
-  [663.9728716054901, 4234.985440937872],
-  [663.9728716054901, 4400.585440937872],
-  [763.2728716054902, 4566.185440937871],
-  [763.2728716054902, 4400.585440937872],
-  [663.9728716054901, 4566.185440937871],
-  [564.6728716054901, 4400.585440937872],
-  [19431.915041401327, 3495.506142643713],
-  [19332.61504140133, 3661.1061426437127],
-  [19431.915041401327, 3661.1061426437127],
-  [19531.215041401327, 3661.1061426437127],
-  [19630.515041401326, 3495.506142643713],
-  [19630.515041401326, 3661.1061426437127],
-  [19729.815041401325, 3826.7061426437126],
-  [19630.515041401326, 3826.7061426437126],
-  [19729.815041401325, 3992.3061426437125],
-  [19630.515041401326, 3992.3061426437125],
-  [19630.515041401326, 4157.906142643712],
-  [19630.515041401326, 4323.506142643711],
-  [19531.215041401327, 4157.906142643712],
-  [19431.915041401327, 4323.506142643711],
-  [19531.215041401327, 4489.106142643711],
-  [19431.915041401327, 4654.70614264371],
-  [19332.61504140133, 4654.70614264371],
-  [19332.61504140133, 4820.30614264371],
-  [19332.61504140133, 4985.906142643709],
-  [19233.31504140133, 4985.906142643709],
-  [19134.01504140133, 5151.506142643709],
-  [19034.71504140133, 5151.506142643709],
-  [19134.01504140133, 5317.106142643708],
-  [19034.71504140133, 5317.106142643708],
-  [19034.71504140133, 5482.706142643708],
-  [18935.41504140133, 5648.306142643707],
-  [18836.115041401332, 5813.9061426437065],
-  [18836.115041401332, 5979.506142643706],
-  [18935.41504140133, 5979.506142643706],
-  [19034.71504140133, 6145.106142643705],
-  [19034.71504140133, 5979.506142643706],
-  [19034.71504140133, 5813.9061426437065],
-  [19134.01504140133, 5648.306142643707],
-  [19233.31504140133, 5648.306142643707],
-  [19134.01504140133, 5813.9061426437065],
-  [19134.01504140133, 5979.506142643706],
-  [19233.31504140133, 5813.9061426437065],
-  [19233.31504140133, 5979.506142643706],
-  [19332.61504140133, 6145.106142643705],
-  [19332.61504140133, 6310.706142643705],
-  [19233.31504140133, 6310.706142643705],
-  [19233.31504140133, 6476.306142643704],
-  [19332.61504140133, 6476.306142643704],
-  [19431.915041401327, 6641.906142643704],
-  [19332.61504140133, 6807.506142643703],
-  [19332.61504140133, 6641.906142643704],
-  [19431.915041401327, 6476.306142643704],
-  [19431.915041401327, 6310.706142643705],
-  [19531.215041401327, 6145.106142643705],
-  [19431.915041401327, 5979.506142643706],
-  [19431.915041401327, 6145.106142643705],
-  [19531.215041401327, 5979.506142643706],
-  [19630.515041401326, 5813.9061426437065],
-  [19630.515041401326, 5979.506142643706],
-  [19729.815041401325, 5813.9061426437065],
-  [19829.115041401325, 5979.506142643706],
-  [19729.815041401325, 5979.506142643706],
-  [19729.815041401325, 6145.106142643705],
-  [19729.815041401325, 6310.706142643705],
-  [19630.515041401326, 6476.306142643704],
-  [19729.815041401325, 6476.306142643704],
-  [19630.515041401326, 6310.706142643705],
-  [19531.215041401327, 6310.706142643705],
-  [19531.215041401327, 6476.306142643704],
-  [19630.515041401326, 6641.906142643704],
-  [19729.815041401325, 6807.506142643703],
-  [19829.115041401325, 6973.106142643703],
-  [19928.415041401324, 6973.106142643703],
-  [19928.415041401324, 7138.706142643702],
-  [20027.715041401323, 7138.706142643702],
-  [20027.715041401323, 7304.306142643702],
-  [19928.415041401324, 7304.306142643702],
-  [19829.115041401325, 7304.306142643702],
-  [19829.115041401325, 7469.906142643701],
-  [19928.415041401324, 7469.906142643701],
-  [19928.415041401324, 7635.5061426437005],
-  [19928.415041401324, 7801.1061426437],
-  [20027.715041401323, 7635.5061426437005],
-  [20027.715041401323, 7801.1061426437],
-  [20127.015041401322, 7801.1061426437],
-  [20226.31504140132, 7801.1061426437],
-  [20325.61504140132, 7801.1061426437],
-  [20226.31504140132, 7635.5061426437005],
-  [20226.31504140132, 7469.906142643701],
-  [20226.31504140132, 7304.306142643702],
-  [20127.015041401322, 7304.306142643702],
-  [20027.715041401323, 7469.906142643701],
-  [20127.015041401322, 7469.906142643701],
-  [20127.015041401322, 7635.5061426437005],
-  [2748.790306732237, 2362.9553147492866],
-  [2848.0903067322365, 2528.5553147492865],
-  [2748.790306732237, 2694.1553147492864],
-  [2649.490306732237, 2859.7553147492863],
-  [2748.790306732237, 3025.355314749286],
-  [2848.0903067322365, 2859.7553147492863],
-  [2848.0903067322365, 2694.1553147492864],
-  [2947.3903067322362, 2694.1553147492864],
-  [3046.690306732236, 2859.7553147492863],
-  [3145.9903067322357, 2694.1553147492864],
-  [3145.9903067322357, 2528.5553147492865],
-  [3046.690306732236, 2694.1553147492864],
-  [3145.9903067322357, 2859.7553147492863],
-  [3046.690306732236, 3025.355314749286],
-  [3145.9903067322357, 3025.355314749286],
-  [3245.2903067322354, 3190.955314749286],
-  [3245.2903067322354, 3356.555314749286],
-  [3344.590306732235, 3522.155314749286],
-  [3443.890306732235, 3356.555314749286],
-  [3543.1903067322346, 3356.555314749286],
-  [3642.4903067322343, 3190.955314749286],
-  [3741.790306732234, 3025.355314749286],
-  [3741.790306732234, 2859.7553147492863],
-  [3841.090306732234, 3025.355314749286],
-  [3841.090306732234, 3190.955314749286],
-  [3741.790306732234, 3190.955314749286],
-  [3642.4903067322343, 3025.355314749286],
-  [3543.1903067322346, 3025.355314749286],
-  [3543.1903067322346, 2859.7553147492863],
-  [3443.890306732235, 3025.355314749286],
-  [3443.890306732235, 3190.955314749286],
-  [3543.1903067322346, 3190.955314749286],
-  [3642.4903067322343, 3356.555314749286],
-  [3543.1903067322346, 3522.155314749286],
-  [3443.890306732235, 3687.755314749286],
-  [3443.890306732235, 3853.3553147492858],
-  [3344.590306732235, 3687.755314749286],
-  [3245.2903067322354, 3853.3553147492858],
-  [3245.2903067322354, 3687.755314749286],
-  [3145.9903067322357, 3687.755314749286],
-  [3046.690306732236, 3853.3553147492858],
-  [3145.9903067322357, 4018.9553147492857],
-  [3145.9903067322357, 3853.3553147492858],
-  [3046.690306732236, 3687.755314749286],
-  [3145.9903067322357, 3522.155314749286],
-  [3145.9903067322357, 3356.555314749286],
-  [3145.9903067322357, 3190.955314749286],
-  [3046.690306732236, 3190.955314749286],
-  [3046.690306732236, 3356.555314749286],
-  [2947.3903067322362, 3356.555314749286],
-  [2848.0903067322365, 3190.955314749286],
-  [2947.3903067322362, 3025.355314749286],
-  [2848.0903067322365, 3025.355314749286],
-  [2748.790306732237, 2859.7553147492863],
-  [2649.490306732237, 2694.1553147492864],
-  [2748.790306732237, 2528.5553147492865],
-  [2848.0903067322365, 2362.9553147492866],
-  [2748.790306732237, 2197.3553147492867],
-  [2649.490306732237, 2362.9553147492866],
-  [2649.490306732237, 2197.3553147492867],
-  [2550.1903067322373, 2362.9553147492866],
-  [2450.8903067322376, 2362.9553147492866],
-  [2351.590306732238, 2528.5553147492865],
-  [2252.290306732238, 2528.5553147492865],
-  [2351.590306732238, 2362.9553147492866],
-  [2252.290306732238, 2197.3553147492867],
-  [2351.590306732238, 2197.3553147492867],
-  [2351.590306732238, 2031.7553147492865],
-  [2351.590306732238, 1866.1553147492864],
-  [2252.290306732238, 1866.1553147492864],
-  [2351.590306732238, 1700.5553147492863],
-  [2450.8903067322376, 1534.9553147492861],
-  [2351.590306732238, 1369.355314749286],
-  [2252.290306732238, 1203.7553147492858],
-  [2252.290306732238, 1369.355314749286],
-  [2252.290306732238, 1534.9553147492861],
-  [2152.9903067322384, 1369.355314749286],
-  [2053.6903067322387, 1369.355314749286],
-  [1954.3903067322387, 1203.7553147492858],
-  [1855.0903067322388, 1203.7553147492858],
-  [1755.7903067322388, 1038.1553147492857],
-  [1656.4903067322389, 1038.1553147492857],
-  [1557.190306732239, 872.5553147492857],
-  [1457.890306732239, 1038.1553147492857],
-  [1457.890306732239, 872.5553147492857],
-  [1457.890306732239, 706.9553147492858],
-  [1557.190306732239, 706.9553147492858],
-  [1656.4903067322389, 872.5553147492857],
-  [1656.4903067322389, 706.9553147492858],
-  [1755.7903067322388, 706.9553147492858],
-  [1656.4903067322389, 541.3553147492859],
-  [1557.190306732239, 375.7553147492859],
-  [1656.4903067322389, 210.1553147492859],
-  [1755.7903067322388, 44.55531474928592],
-  [1656.4903067322389, 44.55531474928592],
-  [1557.190306732239, 210.1553147492859],
-  [1457.890306732239, 210.1553147492859],
-  [1457.890306732239, 44.55531474928592],
-  [1358.590306732239, 210.1553147492859],
-  [1358.590306732239, 375.75531474928584],
-  [1259.290306732239, 210.15531474928585],
-  [1259.290306732239, 375.75531474928584],
-  [1259.290306732239, 541.3553147492859],
-  [1358.590306732239, 706.9553147492858],
-  [1358.590306732239, 872.5553147492857],
-  [1259.290306732239, 706.9553147492858],
-  [1259.290306732239, 872.5553147492857],
-  [1259.290306732239, 1038.1553147492857],
-  [1358.590306732239, 1203.7553147492858],
-  [1358.590306732239, 1038.1553147492857],
-  [1457.890306732239, 1203.7553147492858],
-  [1557.190306732239, 1369.355314749286],
-  [1656.4903067322389, 1203.7553147492858],
-  [1557.190306732239, 1203.7553147492858],
-  [1557.190306732239, 1038.1553147492857],
-  [17254.572515546668, 1460.5807801244923],
-  [17353.872515546667, 1626.1807801244925],
-  [17453.172515546667, 1791.7807801244926],
-  [17552.472515546666, 1791.7807801244926],
-  [17453.172515546667, 1626.1807801244925],
-  [17353.872515546667, 1791.7807801244926],
-  [17453.172515546667, 1957.3807801244927],
-  [17353.872515546667, 2122.980780124493],
-  [17453.172515546667, 2288.580780124493],
-  [17353.872515546667, 2454.1807801244927],
-  [17453.172515546667, 2619.7807801244926],
-  [17552.472515546666, 2619.7807801244926],
-  [17453.172515546667, 2785.3807801244925],
-  [17353.872515546667, 2619.7807801244926],
-  [17254.572515546668, 2454.1807801244927],
-  [17254.572515546668, 2288.580780124493],
-  [17353.872515546667, 2288.580780124493],
-  [17453.172515546667, 2122.980780124493],
-  [17552.472515546666, 2288.580780124493],
-  [17552.472515546666, 2454.1807801244927],
-  [17453.172515546667, 2454.1807801244927],
-  [4447.67624466283, 4761.1416826913],
-  [4546.97624466283, 4595.541682691301],
-  [4546.97624466283, 4429.941682691301],
-  [4447.67624466283, 4429.941682691301],
-  [4447.67624466283, 4595.541682691301],
-  [4348.37624466283, 4595.541682691301],
-  [4249.07624466283, 4595.541682691301],
-  [4348.37624466283, 4761.1416826913],
-  [4249.07624466283, 4761.1416826913],
-  [4348.37624466283, 4926.7416826912995],
-  [4348.37624466283, 5092.341682691299],
-  [4447.67624466283, 5257.941682691298],
-  [4546.97624466283, 5257.941682691298],
-  [4646.27624466283, 5092.341682691299],
-  [4546.97624466283, 5092.341682691299],
-  [4646.27624466283, 4926.7416826912995],
-  [4646.27624466283, 4761.1416826913],
-  [4546.97624466283, 4761.1416826913],
-  [4646.27624466283, 4595.541682691301],
-  [4745.5762446628305, 4595.541682691301],
-  [4646.27624466283, 4429.941682691301],
-  [4745.5762446628305, 4429.941682691301],
-  [4844.876244662831, 4595.541682691301],
-  [4745.5762446628305, 4761.1416826913],
-  [4745.5762446628305, 4926.7416826912995],
-  [4844.876244662831, 4761.1416826913],
-  [4944.176244662831, 4761.1416826913],
-  [5043.476244662831, 4926.7416826912995],
-  [5043.476244662831, 4761.1416826913],
-  [5142.776244662831, 4926.7416826912995],
-  [5142.776244662831, 4761.1416826913],
-  [5242.076244662831, 4595.541682691301],
-  [5142.776244662831, 4595.541682691301],
-  [5242.076244662831, 4429.941682691301],
-  [5242.076244662831, 4264.341682691302],
-  [5142.776244662831, 4429.941682691301],
-  [5043.476244662831, 4595.541682691301],
-  [5043.476244662831, 4429.941682691301],
-  [5043.476244662831, 4264.341682691302],
-  [5142.776244662831, 4098.741682691302],
-  [5043.476244662831, 4098.741682691302],
-  [4944.176244662831, 3933.1416826913023],
-  [4944.176244662831, 4098.741682691302],
-  [4944.176244662831, 4264.341682691302],
-  [4844.876244662831, 4098.741682691302],
-  [4745.5762446628305, 4264.341682691302],
-  [4646.27624466283, 4098.741682691302],
-  [4546.97624466283, 3933.1416826913023],
-  [4447.67624466283, 4098.741682691302],
-  [4546.97624466283, 4264.341682691302],
-  [4447.67624466283, 4264.341682691302],
-  [4546.97624466283, 4098.741682691302],
-  [4646.27624466283, 3933.1416826913023],
-  [4546.97624466283, 3767.5416826913024],
-  [4447.67624466283, 3601.9416826913025],
-  [4447.67624466283, 3767.5416826913024],
-  [4348.37624466283, 3767.5416826913024],
-  [4348.37624466283, 3933.1416826913023],
-  [4249.07624466283, 3767.5416826913024],
-  [4249.07624466283, 3933.1416826913023],
-  [4149.776244662829, 3933.1416826913023],
-  [4050.4762446628297, 4098.741682691302],
-  [4050.4762446628297, 3933.1416826913023],
-  [3951.17624466283, 3933.1416826913023],
-  [3951.17624466283, 4098.741682691302],
-  [3851.8762446628302, 4264.341682691302],
-  [3851.8762446628302, 4098.741682691302],
-  [3752.5762446628305, 4098.741682691302],
-  [3653.276244662831, 4264.341682691302],
-  [3553.976244662831, 4429.941682691301],
-  [3553.976244662831, 4595.541682691301],
-  [3454.6762446628313, 4429.941682691301],
-  [3553.976244662831, 4264.341682691302],
-  [3653.276244662831, 4429.941682691301],
-  [3752.5762446628305, 4264.341682691302],
-  [3752.5762446628305, 4429.941682691301],
-  [3851.8762446628302, 4595.541682691301],
-  [3851.8762446628302, 4429.941682691301],
-  [3951.17624466283, 4429.941682691301],
-  [4050.4762446628297, 4264.341682691302],
-  [4149.776244662829, 4098.741682691302],
-  [4249.07624466283, 4264.341682691302],
-  [4348.37624466283, 4098.741682691302],
-  [4447.67624466283, 3933.1416826913023],
-  [9574.088902135607, 7352.26293905581],
-  [9474.788902135606, 7352.26293905581],
-  [9375.488902135605, 7186.662939055811],
-  [9474.788902135606, 7021.0629390558115],
-  [9574.088902135607, 7021.0629390558115],
-  [9474.788902135606, 7186.662939055811],
-  [9574.088902135607, 7186.662939055811],
-  [9673.388902135608, 7021.0629390558115],
-  [9673.388902135608, 6855.462939055812],
-  [9772.68890213561, 6689.862939055813],
-  [9673.388902135608, 6689.862939055813],
-  [9772.68890213561, 6524.262939055813],
-  [9871.98890213561, 6358.662939055814],
-  [9971.288902135611, 6524.262939055813],
-  [10070.588902135612, 6358.662939055814],
-  [10070.588902135612, 6193.062939055814],
-  [9971.288902135611, 6027.462939055815],
-  [9971.288902135611, 5861.862939055815],
-  [9871.98890213561, 5861.862939055815],
-  [9871.98890213561, 5696.262939055816],
-  [9971.288902135611, 5530.662939055816],
-  [10070.588902135612, 5530.662939055816],
-  [10070.588902135612, 5696.262939055816],
-  [10169.888902135614, 5861.862939055815],
-  [10169.888902135614, 5696.262939055816],
-  [10070.588902135612, 5861.862939055815],
-  [10169.888902135614, 6027.462939055815],
-  [10169.888902135614, 6193.062939055814],
-  [10269.188902135615, 6027.462939055815],
-  [10269.188902135615, 5861.862939055815],
-  [10368.488902135616, 6027.462939055815],
-  [10269.188902135615, 6193.062939055814],
-  [10269.188902135615, 6358.662939055814],
-  [10169.888902135614, 6358.662939055814],
-  [10070.588902135612, 6524.262939055813],
-  [10070.588902135612, 6689.862939055813],
-  [9971.288902135611, 6855.462939055812],
-  [9971.288902135611, 7021.0629390558115],
-  [10070.588902135612, 7186.662939055811],
-  [10169.888902135614, 7186.662939055811],
-  [10269.188902135615, 7186.662939055811],
-  [10169.888902135614, 7352.26293905581],
-  [10070.588902135612, 7352.26293905581],
-  [10169.888902135614, 7517.86293905581],
-  [10169.888902135614, 7683.462939055809],
-  [10269.188902135615, 7517.86293905581],
-  [10368.488902135616, 7683.462939055809],
-  [10467.788902135617, 7683.462939055809],
-  [10368.488902135616, 7517.86293905581],
-  [10269.188902135615, 7352.26293905581],
-  [10368.488902135616, 7352.26293905581],
-  [10368.488902135616, 7186.662939055811],
-  [10368.488902135616, 7021.0629390558115],
-  [10368.488902135616, 6855.462939055812],
-  [10269.188902135615, 6855.462939055812],
-  [10169.888902135614, 6855.462939055812],
-  [10169.888902135614, 7021.0629390558115],
-  [10070.588902135612, 7021.0629390558115],
-  [10070.588902135612, 6855.462939055812],
-  [10169.888902135614, 6689.862939055813],
-  [10269.188902135615, 6689.862939055813],
-  [10169.888902135614, 6524.262939055813],
-  [10269.188902135615, 6524.262939055813],
-  [10368.488902135616, 6524.262939055813],
-  [10368.488902135616, 6358.662939055814],
-  [10467.788902135617, 6358.662939055814],
-  [10467.788902135617, 6193.062939055814],
-  [10567.088902135618, 6358.662939055814],
-  [10567.088902135618, 6193.062939055814],
-  [10666.388902135619, 6193.062939055814],
-  [10666.388902135619, 6358.662939055814],
-  [10567.088902135618, 6524.262939055813],
-  [10467.788902135617, 6524.262939055813],
-  [10567.088902135618, 6689.862939055813],
-  [10467.788902135617, 6855.462939055812],
-  [10567.088902135618, 7021.0629390558115],
-  [10467.788902135617, 7021.0629390558115],
-  [10567.088902135618, 6855.462939055812],
-  [10467.788902135617, 6689.862939055813],
-  [10368.488902135616, 6689.862939055813],
-  [1073.6944354374714, 1154.3681204032646],
-  [974.3944354374713, 1319.9681204032647],
-  [875.0944354374712, 1319.9681204032647],
-  [775.7944354374712, 1154.3681204032646],
-  [775.7944354374712, 988.7681204032646],
-  [875.0944354374712, 823.1681204032647],
-  [875.0944354374712, 657.5681204032647],
-  [775.7944354374712, 823.1681204032647],
-  [676.4944354374711, 657.5681204032647],
-  [676.4944354374711, 491.9681204032648],
-  [775.7944354374712, 657.5681204032647],
-  [676.4944354374711, 823.1681204032647],
-  [676.4944354374711, 988.7681204032646],
-  [577.194435437471, 823.1681204032647],
-  [577.194435437471, 988.7681204032646],
-  [577.194435437471, 1154.3681204032646],
-  [676.4944354374711, 1319.9681204032647],
-  [577.194435437471, 1319.9681204032647],
-  [477.89443543747103, 1319.9681204032647],
-  [577.194435437471, 1485.5681204032649],
-  [477.89443543747103, 1651.168120403265],
-  [577.194435437471, 1816.7681204032651],
-  [477.89443543747103, 1816.7681204032651],
-  [378.5944354374711, 1982.3681204032653],
-  [378.5944354374711, 2147.9681204032654],
-  [279.2944354374711, 2313.5681204032653],
-  [179.99443543747114, 2147.9681204032654],
-  [80.69443543747114, 2313.5681204032653],
-  [80.69443543747114, 2479.168120403265],
-  [179.9944354374711, 2644.768120403265],
-  [179.9944354374711, 2479.168120403265],
-  [179.9944354374711, 2313.5681204032653],
-  [80.69443543747111, 2147.9681204032654],
-  [80.69443543747111, 1982.3681204032653],
-  [179.9944354374711, 1982.3681204032653],
-  [179.9944354374711, 1816.7681204032651],
-  [80.69443543747111, 1816.7681204032651],
-  [179.9944354374711, 1651.168120403265],
-  [80.69443543747111, 1485.5681204032649],
-  [80.69443543747111, 1319.9681204032647],
-  [179.9944354374711, 1154.3681204032646],
-  [80.69443543747111, 1154.3681204032646],
-  [179.9944354374711, 988.7681204032646],
-  [279.2944354374711, 823.1681204032647],
-  [378.5944354374711, 657.5681204032647],
-  [378.5944354374711, 823.1681204032647],
-  [477.89443543747103, 823.1681204032647],
-  [477.89443543747103, 657.5681204032647],
-  [378.5944354374711, 491.9681204032648],
-  [477.89443543747103, 326.3681204032648],
-  [477.89443543747103, 160.76812040326482],
-  [378.5944354374711, 160.76812040326482],
-  [279.2944354374711, 326.3681204032648],
-  [179.99443543747114, 491.9681204032648],
-  [179.99443543747114, 326.3681204032648],
-  [279.2944354374711, 491.9681204032648],
-  [279.2944354374711, 657.5681204032647],
-  [179.99443543747114, 823.1681204032647],
-  [279.2944354374711, 988.7681204032646],
-  [279.2944354374711, 1154.3681204032646],
-  [378.5944354374711, 1319.9681204032647],
-  [477.89443543747103, 1485.5681204032649],
-  [577.194435437471, 1651.168120403265],
-  [676.4944354374711, 1651.168120403265],
-  [775.7944354374712, 1816.7681204032651],
-  [676.4944354374711, 1816.7681204032651],
-  [775.7944354374712, 1651.168120403265],
-  [875.0944354374712, 1651.168120403265],
-  [974.3944354374713, 1651.168120403265],
-  [875.0944354374712, 1485.5681204032649],
-  [775.7944354374712, 1485.5681204032649],
-  [676.4944354374711, 1485.5681204032649],
-  [775.7944354374712, 1319.9681204032647],
-  [676.4944354374711, 1154.3681204032646],
-  [3138.413562431697, 2355.845602060523],
-  [3039.113562431697, 2521.445602060523],
-  [3039.113562431697, 2355.845602060523],
-  [3039.113562431697, 2190.245602060523],
-  [3138.413562431697, 2024.645602060523],
-  [3237.7135624316966, 1859.045602060523],
-  [3237.7135624316966, 2024.645602060523],
-  [3337.0135624316963, 1859.045602060523],
-  [3337.0135624316963, 1693.4456020605228],
-  [3436.313562431696, 1527.8456020605227],
-  [3535.6135624316958, 1693.4456020605228],
-  [3535.6135624316958, 1859.045602060523],
-  [3634.9135624316955, 2024.645602060523],
-  [3734.213562431695, 2190.245602060523],
-  [3634.9135624316955, 2190.245602060523],
-  [3535.6135624316958, 2190.245602060523],
-  [3535.6135624316958, 2355.845602060523],
-  [3535.6135624316958, 2521.445602060523],
-  [3436.313562431696, 2687.045602060523],
-  [3436.313562431696, 2852.645602060523],
-  [3535.6135624316958, 2687.045602060523],
-  [3634.9135624316955, 2521.445602060523],
-  [3634.9135624316955, 2355.845602060523],
-  [3734.213562431695, 2355.845602060523],
-  [3833.513562431695, 2190.245602060523],
-  [3932.8135624316947, 2024.645602060523],
-  [3833.513562431695, 1859.045602060523],
-  [3833.513562431695, 1693.4456020605228],
-  [3734.213562431695, 1859.045602060523],
-  [3734.213562431695, 1693.4456020605228],
-  [3734.213562431695, 1527.8456020605227],
-  [3634.9135624316955, 1527.8456020605227],
-  [3634.9135624316955, 1693.4456020605228],
-  [3535.6135624316958, 1527.8456020605227],
-  [3634.9135624316955, 1362.2456020605225],
-  [3535.6135624316958, 1362.2456020605225],
-  [3436.313562431696, 1196.6456020605224],
-  [3535.6135624316958, 1196.6456020605224],
-  [3535.6135624316958, 1031.0456020605222],
-  [3436.313562431696, 1031.0456020605222],
-  [3535.6135624316958, 865.4456020605222],
-  [3436.313562431696, 865.4456020605222],
-  [3535.6135624316958, 699.8456020605223],
-  [3634.9135624316955, 699.8456020605223],
-  [3535.6135624316958, 534.2456020605224],
-  [3436.313562431696, 368.64560206052244],
-  [3436.313562431696, 203.04560206052244],
-  [3337.0135624316963, 37.445602060522454],
-  [3436.313562431696, 37.445602060522454],
-  [3337.0135624316963, 203.04560206052244],
-  [3237.7135624316966, 37.445602060522454],
-  [3138.413562431697, 37.445602060522454],
-  [3237.7135624316966, 203.04560206052244],
-  [3337.0135624316963, 368.6456020605224],
-  [3436.313562431696, 534.2456020605224],
-  [3337.0135624316963, 699.8456020605223],
-  [3237.7135624316966, 534.2456020605224],
-  [3337.0135624316963, 534.2456020605224],
-  [3436.313562431696, 699.8456020605223],
-  [3337.0135624316963, 865.4456020605222],
-  [3237.7135624316966, 865.4456020605222],
-  [3337.0135624316963, 1031.0456020605222],
-  [3237.7135624316966, 1196.6456020605224],
-  [3138.413562431697, 1362.2456020605225],
-  [3039.113562431697, 1527.8456020605227],
-  [3138.413562431697, 1527.8456020605227],
-  [3039.113562431697, 1693.4456020605228],
-  [2939.8135624316974, 1527.8456020605227],
-  [2840.5135624316977, 1362.2456020605225],
-  [2840.5135624316977, 1527.8456020605227],
-  [2840.5135624316977, 1693.4456020605228],
-  [2939.8135624316974, 1859.045602060523],
-  [2840.5135624316977, 2024.645602060523],
-  [2840.5135624316977, 1859.045602060523],
-  [2939.8135624316974, 1693.4456020605228],
-  [3039.113562431697, 1859.045602060523],
-  [3039.113562431697, 2024.645602060523],
-  [2939.8135624316974, 2190.245602060523],
-  [2939.8135624316974, 2024.645602060523],
-  [16388.412117675925, 1839.818884803299],
-  [16289.112117675924, 1839.818884803299],
-  [16388.412117675925, 1674.2188848032988],
-  [16487.712117675925, 1508.6188848032987],
-  [16487.712117675925, 1674.2188848032988],
-  [16388.412117675925, 1508.6188848032987],
-  [16289.112117675924, 1343.0188848032985],
-  [16289.112117675924, 1508.6188848032987],
-  [16189.812117675923, 1674.2188848032988],
-  [16090.512117675922, 1839.818884803299],
-  [16090.512117675922, 2005.418884803299],
-  [15991.212117675921, 2171.018884803299],
-  [16090.512117675922, 2336.618884803299],
-  [16090.512117675922, 2502.218884803299],
-  [16090.512117675922, 2667.8188848032987],
-  [15991.212117675921, 2833.4188848032986],
-  [15991.212117675921, 2999.0188848032985],
-  [15891.91211767592, 3164.6188848032984],
-  [15891.91211767592, 3330.2188848032984],
-  [15991.212117675921, 3330.2188848032984],
-  [16090.512117675922, 3330.2188848032984],
-  [16189.812117675923, 3495.8188848032983],
-  [16289.112117675924, 3495.8188848032983],
-  [16189.812117675923, 3330.2188848032984],
-  [16189.812117675923, 3164.6188848032984],
-  [16289.112117675924, 3164.6188848032984],
-  [16388.412117675925, 3164.6188848032984],
-  [16388.412117675925, 3330.2188848032984],
-  [16487.712117675925, 3330.2188848032984],
-  [16587.012117675924, 3495.8188848032983],
-  [16587.012117675924, 3661.418884803298],
-  [16686.312117675923, 3661.418884803298],
-  [16785.612117675922, 3661.418884803298],
-  [16884.91211767592, 3661.418884803298],
-  [16984.21211767592, 3661.418884803298],
-  [16884.91211767592, 3827.018884803298],
-  [16884.91211767592, 3992.618884803298],
-  [16984.21211767592, 3827.018884803298],
-  [17083.51211767592, 3661.418884803298],
-  [17182.81211767592, 3495.8188848032983],
-  [17182.81211767592, 3330.2188848032984],
-  [17282.11211767592, 3164.6188848032984],
-  [17282.11211767592, 3330.2188848032984],
-  [17182.81211767592, 3164.6188848032984],
-  [17083.51211767592, 3164.6188848032984],
-  [16984.21211767592, 3330.2188848032984],
-  [16984.21211767592, 3495.8188848032983],
-  [17083.51211767592, 3330.2188848032984],
-  [16984.21211767592, 3164.6188848032984],
-  [16984.21211767592, 2999.0188848032985],
-  [17083.51211767592, 2833.4188848032986],
-  [17083.51211767592, 2667.8188848032987],
-  [17182.81211767592, 2667.8188848032987],
-  [17182.81211767592, 2833.4188848032986],
-  [17083.51211767592, 2999.0188848032985],
-  [16984.21211767592, 2833.4188848032986],
-  [16884.91211767592, 2833.4188848032986],
-  [16884.91211767592, 2999.0188848032985],
-  [16785.612117675922, 2999.0188848032985],
-  [16884.91211767592, 3164.6188848032984],
-  [16785.612117675922, 3164.6188848032984],
-  [16686.312117675923, 3164.6188848032984],
-  [16587.012117675924, 3164.6188848032984],
-  [16587.012117675924, 2999.0188848032985],
-  [16487.712117675925, 3164.6188848032984],
-  [16587.012117675924, 3330.2188848032984],
-  [16686.312117675923, 3495.8188848032983],
-  [16686.312117675923, 3330.2188848032984],
-  [16785.612117675922, 3330.2188848032984],
-  [16884.91211767592, 3495.8188848032983],
-  [16785.612117675922, 3495.8188848032983],
-  [16884.91211767592, 3330.2188848032984],
-  [1272.175991128079, 3842.7700224365044],
-  [1371.475991128079, 3842.7700224365044],
-  [1272.175991128079, 3677.1700224365045],
-  [1172.875991128079, 3511.5700224365046],
-  [1272.175991128079, 3511.5700224365046],
-  [1172.875991128079, 3345.9700224365047],
-  [1073.575991128079, 3180.3700224365048],
-  [1073.575991128079, 3014.770022436505],
-  [974.275991128079, 3014.770022436505],
-  [874.9759911280789, 3014.770022436505],
-  [775.6759911280789, 2849.170022436505],
-  [775.6759911280789, 3014.770022436505],
-  [775.6759911280789, 3180.3700224365048],
-  [676.3759911280788, 3345.9700224365047],
-  [676.3759911280788, 3511.5700224365046],
-  [775.6759911280789, 3677.1700224365045],
-  [676.3759911280788, 3842.7700224365044],
-  [577.0759911280787, 3842.7700224365044],
-  [577.0759911280787, 3677.1700224365045],
-  [676.3759911280788, 3677.1700224365045],
-  [775.6759911280789, 3511.5700224365046],
-  [775.6759911280789, 3345.9700224365047],
-  [874.9759911280789, 3345.9700224365047],
-  [874.9759911280789, 3180.3700224365048],
-  [974.275991128079, 3180.3700224365048],
-  [974.275991128079, 3345.9700224365047],
-  [1073.575991128079, 3511.5700224365046],
-  [1073.575991128079, 3677.1700224365045],
-  [1172.875991128079, 3677.1700224365045],
-  [1172.875991128079, 3842.7700224365044],
-  [1073.575991128079, 3842.7700224365044],
-  [1172.875991128079, 4008.3700224365043],
-  [1073.575991128079, 4008.3700224365043],
-  [974.275991128079, 3842.7700224365044],
-  [974.275991128079, 4008.3700224365043],
-  [874.9759911280789, 4008.3700224365043],
-  [775.6759911280789, 4008.3700224365043],
-  [874.9759911280789, 3842.7700224365044],
-  [974.275991128079, 3677.1700224365045],
-  [974.275991128079, 3511.5700224365046],
-  [1073.575991128079, 3345.9700224365047],
-  [1172.875991128079, 3180.3700224365048],
-  [1272.175991128079, 3180.3700224365048],
-  [1272.175991128079, 3345.9700224365047],
-  [1371.475991128079, 3180.3700224365048],
-  [1470.7759911280789, 3345.9700224365047],
-  [1371.475991128079, 3345.9700224365047],
-  [1371.475991128079, 3511.5700224365046],
-  [1470.7759911280789, 3511.5700224365046],
-  [1570.0759911280788, 3677.1700224365045],
-  [1470.7759911280789, 3677.1700224365045],
-  [1570.0759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3677.1700224365045],
-  [1768.6759911280787, 3842.7700224365044],
-  [1669.3759911280788, 3842.7700224365044],
-  [1768.6759911280787, 4008.3700224365043],
-  [1867.9759911280787, 3842.7700224365044],
-  [1967.2759911280787, 3677.1700224365045],
-  [2066.5759911280784, 3842.7700224365044],
-  [2165.875991128078, 3677.1700224365045],
-  [2066.5759911280784, 3511.5700224365046],
-  [2165.875991128078, 3511.5700224365046],
-  [2066.5759911280784, 3677.1700224365045],
-  [2165.875991128078, 3842.7700224365044],
-  [2265.175991128078, 4008.3700224365043],
-  [2364.4759911280776, 4008.3700224365043],
-  [2265.175991128078, 3842.7700224365044],
-  [2364.4759911280776, 3677.1700224365045],
-  [2463.7759911280773, 3842.7700224365044],
-  [2463.7759911280773, 4008.3700224365043],
-  [2364.4759911280776, 3842.7700224365044],
-  [6853.940039224797, 6050.837897021371],
-  [6953.240039224797, 6050.837897021371],
-  [7052.5400392247975, 5885.237897021371],
-  [7052.5400392247975, 5719.637897021372],
-  [7151.840039224798, 5885.237897021371],
-  [7052.5400392247975, 6050.837897021371],
-  [7052.5400392247975, 6216.43789702137],
-  [7052.5400392247975, 6382.03789702137],
-  [6953.240039224797, 6382.03789702137],
-  [6953.240039224797, 6216.43789702137],
-  [6853.940039224797, 6216.43789702137],
-  [6853.940039224797, 6382.03789702137],
-  [6754.640039224797, 6216.43789702137],
-  [6754.640039224797, 6382.03789702137],
-  [6754.640039224797, 6547.637897021369],
-  [6754.640039224797, 6713.237897021369],
-  [6655.340039224797, 6713.237897021369],
-  [6754.640039224797, 6878.837897021368],
-  [6853.940039224797, 6713.237897021369],
-  [6853.940039224797, 6878.837897021368],
-  [6953.240039224797, 6713.237897021369],
-  [7052.5400392247975, 6547.637897021369],
-  [7151.840039224798, 6713.237897021369],
-  [7151.840039224798, 6547.637897021369],
-  [7151.840039224798, 6382.03789702137],
-  [7251.140039224798, 6547.637897021369],
-  [7251.140039224798, 6713.237897021369],
-  [7350.440039224798, 6878.837897021368],
-  [7449.740039224798, 6878.837897021368],
-  [7449.740039224798, 6713.237897021369],
-  [7549.040039224798, 6547.637897021369],
-  [7449.740039224798, 6382.03789702137],
-  [7449.740039224798, 6216.43789702137],
-  [7549.040039224798, 6050.837897021371],
-  [7648.340039224799, 6216.43789702137],
-  [7549.040039224798, 6382.03789702137],
-  [7648.340039224799, 6382.03789702137],
-  [7747.640039224799, 6216.43789702137],
-  [7846.940039224799, 6382.03789702137],
-  [7946.240039224799, 6382.03789702137],
-  [7946.240039224799, 6547.637897021369],
-  [7846.940039224799, 6713.237897021369],
-  [7946.240039224799, 6713.237897021369],
-  [8045.540039224799, 6547.637897021369],
-  [8045.540039224799, 6713.237897021369],
-  [7946.240039224799, 6878.837897021368],
-  [7946.240039224799, 7044.4378970213675],
-  [8045.540039224799, 7210.037897021367],
-  [8144.8400392247995, 7375.637897021366],
-  [8144.8400392247995, 7541.237897021366],
-  [8045.540039224799, 7375.637897021366],
-  [8144.8400392247995, 7210.037897021367],
-  [8045.540039224799, 7044.4378970213675],
-  [7946.240039224799, 7210.037897021367],
-  [7846.940039224799, 7210.037897021367],
-  [7946.240039224799, 7375.637897021366],
-  [8045.540039224799, 7541.237897021366],
-  [8144.8400392247995, 7706.837897021365],
-  [8244.1400392248, 7541.237897021366],
-  [8343.4400392248, 7541.237897021366],
-  [8343.4400392248, 7706.837897021365],
-  [8244.1400392248, 7706.837897021365],
-  [4735.523842661975, 3503.497768214323],
-  [4636.223842661975, 3337.897768214323],
-  [4536.923842661975, 3337.897768214323],
-  [4437.623842661975, 3172.2977682143232],
-  [4338.323842661975, 3172.2977682143232],
-  [4239.023842661974, 3172.2977682143232],
-  [4338.323842661975, 3006.6977682143233],
-  [4437.623842661975, 2841.0977682143234],
-  [4338.323842661975, 2675.4977682143235],
-  [4338.323842661975, 2509.8977682143236],
-  [4239.023842661974, 2675.4977682143235],
-  [4139.723842661974, 2509.8977682143236],
-  [4040.4238426619745, 2344.2977682143237],
-  [4139.723842661974, 2178.697768214324],
-  [4239.023842661974, 2178.697768214324],
-  [4139.723842661974, 2344.2977682143237],
-  [4040.4238426619745, 2178.697768214324],
-  [4139.723842661974, 2013.0977682143237],
-  [4139.723842661974, 1847.4977682143235],
-  [4239.023842661974, 2013.0977682143237],
-  [4239.023842661974, 1847.4977682143235],
-  [4338.323842661975, 1847.4977682143235],
-  [4437.623842661975, 1847.4977682143235],
-  [4536.923842661975, 1681.8977682143234],
-  [4437.623842661975, 1516.2977682143232],
-  [4536.923842661975, 1516.2977682143232],
-  [4536.923842661975, 1350.697768214323],
-  [4437.623842661975, 1350.697768214323],
-  [4536.923842661975, 1185.097768214323],
-  [4636.223842661975, 1019.497768214323],
-  [4536.923842661975, 853.897768214323],
-  [4636.223842661975, 853.897768214323],
-  [4735.523842661975, 688.2977682143231],
-  [4636.223842661975, 522.6977682143232],
-  [4636.223842661975, 357.09776821432325],
-  [4735.523842661975, 357.09776821432325],
-  [4735.523842661975, 522.6977682143232],
-  [4636.223842661975, 688.2977682143231],
-  [4735.523842661975, 853.897768214323],
-  [4834.8238426619755, 853.897768214323],
-  [4735.523842661975, 1019.497768214323],
-  [4735.523842661975, 1185.097768214323],
-  [4735.523842661975, 1350.697768214323],
-  [4834.8238426619755, 1516.2977682143232],
-  [4735.523842661975, 1516.2977682143232],
-  [4834.8238426619755, 1350.697768214323],
-  [4834.8238426619755, 1185.097768214323],
-  [4934.123842661976, 1350.697768214323],
-  [5033.423842661976, 1185.097768214323],
-  [5033.423842661976, 1019.497768214323],
-  [5033.423842661976, 853.897768214323],
-  [4934.123842661976, 853.897768214323],
-  [4934.123842661976, 1019.497768214323],
-  [4834.8238426619755, 1019.497768214323],
-  [4934.123842661976, 1185.097768214323],
-  [5033.423842661976, 1350.697768214323],
-  [5132.723842661976, 1350.697768214323],
-  [5132.723842661976, 1185.097768214323],
-  [5232.023842661976, 1019.497768214323],
-  [5232.023842661976, 1185.097768214323],
-  [5331.323842661976, 1019.497768214323],
-  [5430.623842661977, 1019.497768214323],
-  [5529.923842661977, 1185.097768214323],
-  [5430.623842661977, 1350.697768214323],
-  [5430.623842661977, 1516.2977682143232],
-  [5529.923842661977, 1350.697768214323],
-  [5629.223842661977, 1350.697768214323],
-  [5728.523842661977, 1350.697768214323],
-  [5728.523842661977, 1516.2977682143232],
-  [5728.523842661977, 1681.8977682143234],
-  [5629.223842661977, 1516.2977682143232],
-  [5529.923842661977, 1516.2977682143232],
-  [5629.223842661977, 1681.8977682143234],
-  [5529.923842661977, 1681.8977682143234],
-  [5430.623842661977, 1847.4977682143235],
-  [5331.323842661976, 1847.4977682143235],
-  [5331.323842661976, 2013.0977682143237],
-  [5232.023842661976, 2178.697768214324],
-  [5132.723842661976, 2013.0977682143237],
-  [5132.723842661976, 2178.697768214324],
-  [5232.023842661976, 2013.0977682143237],
-  [5232.023842661976, 1847.4977682143235],
-  [5232.023842661976, 1681.8977682143234],
-  [5331.323842661976, 1681.8977682143234],
-  [5331.323842661976, 1516.2977682143232],
-  [5331.323842661976, 1350.697768214323],
-  [5232.023842661976, 1350.697768214323],
-  [5232.023842661976, 1516.2977682143232],
-  [5132.723842661976, 1516.2977682143232],
-  [5132.723842661976, 1681.8977682143234],
-  [5033.423842661976, 1847.4977682143235],
-  [5132.723842661976, 1847.4977682143235],
-  [5033.423842661976, 2013.0977682143237],
-  [4934.123842661976, 2178.697768214324],
-  [5033.423842661976, 2344.2977682143237],
-  [4934.123842661976, 2344.2977682143237],
-  [4834.8238426619755, 2178.697768214324],
-  [4834.8238426619755, 2344.2977682143237],
-  [4735.523842661975, 2344.2977682143237],
-  [4636.223842661975, 2344.2977682143237],
-  [4536.923842661975, 2178.697768214324],
-  [4437.623842661975, 2013.0977682143237],
-  [4338.323842661975, 2178.697768214324],
-  [4437.623842661975, 2344.2977682143237],
-  [4536.923842661975, 2509.8977682143236],
-  [4636.223842661975, 2675.4977682143235],
-  [4636.223842661975, 2509.8977682143236],
-  [4536.923842661975, 2675.4977682143235],
-  [4636.223842661975, 2841.0977682143234],
-  [4536.923842661975, 2841.0977682143234],
-  [4636.223842661975, 3006.6977682143233],
-  [4735.523842661975, 3172.2977682143232],
-  [4834.8238426619755, 3006.6977682143233],
-  [4735.523842661975, 2841.0977682143234],
-  [4735.523842661975, 3006.6977682143233],
-  [4636.223842661975, 3172.2977682143232],
-  [4735.523842661975, 3337.897768214323],
-  [4834.8238426619755, 3503.497768214323],
-  [4735.523842661975, 3669.097768214323],
-  [4834.8238426619755, 3834.697768214323],
-  [4834.8238426619755, 3669.097768214323],
-  [4934.123842661976, 3503.497768214323],
-  [5033.423842661976, 3503.497768214323],
-  [5033.423842661976, 3337.897768214323],
-  [4934.123842661976, 3337.897768214323],
-  [4834.8238426619755, 3172.2977682143232],
-  [4834.8238426619755, 3337.897768214323],
-  [4934.123842661976, 3172.2977682143232],
-  [5033.423842661976, 3006.6977682143233],
-  [5132.723842661976, 2841.0977682143234],
-  [5132.723842661976, 3006.6977682143233],
-  [5232.023842661976, 3172.2977682143232],
-  [5232.023842661976, 3337.897768214323],
-  [5132.723842661976, 3337.897768214323],
-  [5232.023842661976, 3503.497768214323],
-  [5331.323842661976, 3337.897768214323],
-  [5331.323842661976, 3503.497768214323],
-  [5430.623842661977, 3669.097768214323],
-  [5331.323842661976, 3669.097768214323],
-  [5430.623842661977, 3503.497768214323],
-  [5430.623842661977, 3337.897768214323],
-  [5529.923842661977, 3172.2977682143232],
-  [5529.923842661977, 3337.897768214323],
-  [5629.223842661977, 3337.897768214323],
-  [5728.523842661977, 3337.897768214323],
-  [5728.523842661977, 3503.497768214323],
-  [5827.823842661977, 3503.497768214323],
-  [5927.1238426619775, 3669.097768214323],
-  [6026.423842661978, 3669.097768214323],
-  [6125.723842661978, 3503.497768214323],
-  [6125.723842661978, 3669.097768214323],
-  [6225.023842661978, 3503.497768214323],
-  [6225.023842661978, 3337.897768214323],
-  [6324.323842661978, 3337.897768214323],
-  [6423.623842661978, 3503.497768214323],
-  [6324.323842661978, 3669.097768214323],
-  [6225.023842661978, 3669.097768214323],
-  [6324.323842661978, 3834.697768214323],
-  [6423.623842661978, 3834.697768214323],
-  [6324.323842661978, 4000.297768214323],
-  [6225.023842661978, 3834.697768214323],
-  [6125.723842661978, 3834.697768214323],
-  [6125.723842661978, 4000.297768214323],
-  [6225.023842661978, 4000.297768214323],
-  [6225.023842661978, 4165.897768214322],
-  [6225.023842661978, 4331.497768214322],
-  [6125.723842661978, 4165.897768214322],
-  [6026.423842661978, 4000.2977682143223],
-  [5927.1238426619775, 4165.897768214322],
-  [6026.423842661978, 4331.497768214322],
-  [6026.423842661978, 4497.097768214321],
-  [5927.1238426619775, 4497.097768214321],
-  [5827.823842661977, 4662.697768214321],
-  [5728.523842661977, 4828.29776821432],
-  [5827.823842661977, 4828.29776821432],
-  [5927.1238426619775, 4828.29776821432],
-  [5927.1238426619775, 4662.697768214321],
-  [5827.823842661977, 4497.097768214321],
-  [5927.1238426619775, 4331.497768214322],
-  [5827.823842661977, 4165.897768214322],
-  [5728.523842661977, 4331.497768214322],
-  [5728.523842661977, 4165.897768214322],
-  [5629.223842661977, 4000.2977682143223],
-  [5629.223842661977, 3834.6977682143224],
-  [5529.923842661977, 3669.0977682143225],
-  [5629.223842661977, 3503.4977682143226],
-  [5728.523842661977, 3669.0977682143225],
-  [5827.823842661977, 3669.0977682143225],
-  [5927.1238426619775, 3834.6977682143224],
-  [5927.1238426619775, 4000.2977682143223],
-  [6026.423842661978, 4165.897768214322],
-  [6125.723842661978, 4331.497768214322],
-  [6225.023842661978, 4497.097768214321],
-  [6225.023842661978, 4662.697768214321],
-  [6324.323842661978, 4662.697768214321],
-  [6225.023842661978, 4828.29776821432],
-  [6324.323842661978, 4828.29776821432],
-  [6423.623842661978, 4828.29776821432],
-  [6324.323842661978, 4993.8977682143195],
-  [6225.023842661978, 5159.497768214319],
-  [6125.723842661978, 5159.497768214319],
-  [6026.423842661978, 5325.097768214318],
-  [5927.1238426619775, 5490.697768214318],
-  [6026.423842661978, 5656.297768214317],
-  [5927.1238426619775, 5821.897768214317],
-  [5927.1238426619775, 5987.497768214316],
-  [6026.423842661978, 5987.497768214316],
-  [6026.423842661978, 5821.897768214317],
-  [5927.1238426619775, 5656.297768214317],
-  [5827.823842661977, 5656.297768214317],
-  [5827.823842661977, 5490.697768214318],
-  [5728.523842661977, 5490.697768214318],
-  [5629.223842661977, 5325.097768214318],
-  [5629.223842661977, 5159.497768214319],
-  [5529.923842661977, 4993.8977682143195],
-  [5529.923842661977, 5159.497768214319],
-  [5629.223842661977, 4993.8977682143195],
-  [5629.223842661977, 4828.29776821432],
-  [5529.923842661977, 4662.697768214321],
-  [5430.623842661977, 4828.29776821432],
-  [5529.923842661977, 4828.29776821432],
-  [5629.223842661977, 4662.697768214321],
-  [5728.523842661977, 4662.697768214321],
-  [5629.223842661977, 4497.097768214321],
-  [5728.523842661977, 4497.097768214321],
-  [5827.823842661977, 4331.497768214322],
-  [10216.161365168813, 2951.605409896135],
-  [10116.861365168812, 2951.605409896135],
-  [10017.56136516881, 3117.205409896135],
-  [9918.26136516881, 3117.205409896135],
-  [9818.961365168809, 3117.205409896135],
-  [9719.661365168808, 3282.8054098961347],
-  [9620.361365168807, 3282.8054098961347],
-  [9620.361365168807, 3117.205409896135],
-  [9521.061365168805, 2951.605409896135],
-  [9521.061365168805, 2786.005409896135],
-  [9620.361365168807, 2786.005409896135],
-  [9719.661365168808, 2786.005409896135],
-  [9818.961365168809, 2620.405409896135],
-  [9918.26136516881, 2786.005409896135],
-  [9818.961365168809, 2951.605409896135],
-  [9818.961365168809, 2786.005409896135],
-  [9719.661365168808, 2620.405409896135],
-  [9719.661365168808, 2454.805409896135],
-  [9620.361365168807, 2289.2054098961353],
-  [9521.061365168805, 2123.6054098961354],
-  [9620.361365168807, 1958.0054098961352],
-  [9719.661365168808, 2123.6054098961354],
-  [9818.961365168809, 2289.2054098961353],
-  [9818.961365168809, 2123.6054098961354],
-  [9818.961365168809, 1958.0054098961352],
-  [9719.661365168808, 1958.0054098961352],
-  [9620.361365168807, 1792.405409896135],
-  [9620.361365168807, 1626.805409896135],
-  [9521.061365168805, 1461.2054098961348],
-  [9421.761365168804, 1295.6054098961347],
-  [9521.061365168805, 1130.0054098961346],
-  [9521.061365168805, 964.4054098961345],
-  [9421.761365168804, 964.4054098961345],
-  [9521.061365168805, 798.8054098961346],
-  [9620.361365168807, 798.8054098961346],
-  [9620.361365168807, 964.4054098961345],
-  [9620.361365168807, 1130.0054098961346],
-  [9620.361365168807, 1295.6054098961347],
-  [9620.361365168807, 1461.2054098961348],
-  [9719.661365168808, 1295.6054098961347],
-  [9818.961365168809, 1130.0054098961346],
-  [9918.26136516881, 964.4054098961345],
-  [9818.961365168809, 964.4054098961345],
-  [9918.26136516881, 798.8054098961346],
-  [10017.56136516881, 633.2054098961347],
-  [9918.26136516881, 467.60540989613474],
-  [9918.26136516881, 302.0054098961348],
-  [10017.56136516881, 302.0054098961348],
-  [10116.861365168812, 136.40540989613478],
-  [10116.861365168812, 302.0054098961348],
-  [10116.861365168812, 467.60540989613474],
-  [10116.861365168812, 633.2054098961347],
-  [10216.161365168813, 633.2054098961347],
-  [10216.161365168813, 798.8054098961346],
-  [10315.461365168814, 633.2054098961347],
-  [10315.461365168814, 798.8054098961346],
-  [10414.761365168815, 798.8054098961346],
-  [10514.061365168816, 633.2054098961347],
-  [10514.061365168816, 798.8054098961346],
-  [10414.761365168815, 964.4054098961345],
-  [10315.461365168814, 964.4054098961345],
-  [10216.161365168813, 964.4054098961345],
-  [10116.861365168812, 798.8054098961346],
-  [10017.56136516881, 798.8054098961346],
-  [10116.861365168812, 964.4054098961345],
-  [10216.161365168813, 1130.0054098961346],
-  [10116.861365168812, 1130.0054098961346],
-  [10216.161365168813, 1295.6054098961347],
-  [10216.161365168813, 1461.2054098961348],
-  [10315.461365168814, 1626.805409896135],
-  [10315.461365168814, 1792.405409896135],
-  [10216.161365168813, 1958.0054098961352],
-  [10216.161365168813, 1792.405409896135],
-  [10116.861365168812, 1792.405409896135],
-  [10017.56136516881, 1958.0054098961352],
-  [9918.26136516881, 2123.6054098961354],
-  [9918.26136516881, 1958.0054098961352],
-  [10017.56136516881, 2123.6054098961354],
-  [10116.861365168812, 2123.6054098961354],
-  [10017.56136516881, 2289.2054098961353],
-  [10017.56136516881, 2454.805409896135],
-  [10116.861365168812, 2289.2054098961353],
-  [10216.161365168813, 2454.805409896135],
-  [10315.461365168814, 2620.405409896135],
-  [10315.461365168814, 2454.805409896135],
-  [10315.461365168814, 2289.2054098961353],
-  [10414.761365168815, 2454.805409896135],
-  [10514.061365168816, 2620.405409896135],
-  [10613.361365168817, 2786.005409896135],
-  [10514.061365168816, 2786.005409896135],
-  [10613.361365168817, 2620.405409896135],
-  [10514.061365168816, 2454.805409896135],
-  [10514.061365168816, 2289.2054098961353],
-  [10613.361365168817, 2289.2054098961353],
-  [10712.661365168819, 2289.2054098961353],
-  [10811.96136516882, 2454.805409896135],
-  [10911.26136516882, 2289.2054098961353],
-  [10811.96136516882, 2289.2054098961353],
-  [10712.661365168819, 2454.805409896135],
-  [10712.661365168819, 2620.405409896135],
-  [10811.96136516882, 2786.005409896135],
-  [10911.26136516882, 2620.405409896135],
-  [10911.26136516882, 2786.005409896135],
-  [11010.561365168822, 2620.405409896135],
-  [10911.26136516882, 2454.805409896135],
-  [10811.96136516882, 2620.405409896135],
-  [10712.661365168819, 2786.005409896135],
-  [10811.96136516882, 2951.605409896135],
-  [10911.26136516882, 2951.605409896135],
-  [10811.96136516882, 3117.205409896135],
-  [10712.661365168819, 2951.605409896135],
-  [10613.361365168817, 2951.605409896135],
-  [10514.061365168816, 2951.605409896135],
-  [10414.761365168815, 3117.205409896135],
-  [10414.761365168815, 2951.605409896135],
-  [10315.461365168814, 2786.005409896135],
-  [10216.161365168813, 2620.405409896135],
-  [10216.161365168813, 2786.005409896135],
-  [10315.461365168814, 2951.605409896135],
-  [10315.461365168814, 3117.205409896135],
-  [10216.161365168813, 3117.205409896135],
-  [10116.861365168812, 3117.205409896135],
-  [10017.56136516881, 3282.8054098961347],
-  [9918.26136516881, 3448.4054098961346],
-  [9818.961365168809, 3448.4054098961346],
-  [9818.961365168809, 3614.0054098961346],
-  [9719.661365168808, 3448.4054098961346],
-  [9818.961365168809, 3282.8054098961347],
-  [9719.661365168808, 3117.205409896135],
-  [9620.361365168807, 2951.605409896135],
-  [9521.061365168805, 3117.205409896135],
-  [9521.061365168805, 3282.8054098961347],
-  [9421.761365168804, 3117.205409896135],
-  [9421.761365168804, 3282.8054098961347],
-  [9322.461365168803, 3117.205409896135],
-  [9421.761365168804, 2951.605409896135],
-  [9322.461365168803, 2951.605409896135],
-  [9223.161365168802, 2786.005409896135],
-  [9322.461365168803, 2620.405409896135],
-  [9421.761365168804, 2454.805409896135],
-  [9521.061365168805, 2289.2054098961353],
-  [9421.761365168804, 2123.6054098961354],
-  [9421.761365168804, 1958.0054098961352],
-  [9421.761365168804, 1792.405409896135],
-  [9521.061365168805, 1626.805409896135],
-  [9421.761365168804, 1626.805409896135],
-  [9322.461365168803, 1792.405409896135],
-  [9322.461365168803, 1626.805409896135],
-  [9322.461365168803, 1461.2054098961348],
-  [9421.761365168804, 1461.2054098961348],
-  [9521.061365168805, 1295.6054098961347],
-  [9421.761365168804, 1130.0054098961346],
-  [9322.461365168803, 964.4054098961345],
-  [9223.161365168802, 964.4054098961345],
-  [9223.161365168802, 798.8054098961346],
-  [9322.461365168803, 633.2054098961347],
-  [9421.761365168804, 798.8054098961346],
-  [9421.761365168804, 633.2054098961347],
-  [9521.061365168805, 633.2054098961347],
-  [9421.761365168804, 467.60540989613474],
-  [9421.761365168804, 302.0054098961348],
-  [9322.461365168803, 136.40540989613478],
-  [9223.161365168802, 302.0054098961348],
-  [9123.861365168801, 302.0054098961348],
-  [9024.5613651688, 136.40540989613478],
-  [9123.861365168801, 136.40540989613478],
-  [9223.161365168802, 136.40540989613478],
-  [9322.461365168803, 302.0054098961348],
-  [9421.761365168804, 136.40540989613478],
-  [9521.061365168805, 136.40540989613478],
-  [9620.361365168807, 136.40540989613478],
-  [9620.361365168807, 302.0054098961348],
-  [9521.061365168805, 302.0054098961348],
-  [9521.061365168805, 467.60540989613474],
-  [9620.361365168807, 467.60540989613474],
-  [9719.661365168808, 302.0054098961348],
-  [9719.661365168808, 136.40540989613478],
-  [9818.961365168809, 136.40540989613478],
-  [9918.26136516881, 136.40540989613478],
-  [10017.56136516881, 136.40540989613478],
-  [366.07287160549004, 5394.185440937868],
-  [465.37287160549005, 5394.185440937868],
-  [465.37287160549005, 5559.785440937868],
-  [366.0728716054901, 5559.785440937868],
-  [366.0728716054901, 5725.385440937867],
-  [266.77287160549014, 5725.385440937867],
-  [167.47287160549016, 5559.785440937868],
-  [266.77287160549014, 5559.785440937868],
-  [266.77287160549014, 5394.185440937868],
-  [266.77287160549014, 5228.585440937869],
-  [167.47287160549016, 5394.185440937868],
-  [68.17287160549016, 5228.585440937869],
-  [167.47287160549013, 5062.9854409378695],
-  [68.17287160549013, 4897.38544093787],
-  [167.47287160549013, 4731.785440937871],
-  [266.77287160549014, 4731.785440937871],
-  [167.47287160549016, 4566.185440937871],
-  [68.17287160549016, 4566.185440937871],
-  [68.17287160549016, 4731.785440937871],
-  [167.47287160549013, 4897.38544093787],
-  [68.17287160549013, 5062.9854409378695],
-  [167.47287160549013, 5228.585440937869],
-  [266.77287160549014, 5062.9854409378695],
-  [366.0728716054901, 4897.38544093787],
-  [266.77287160549014, 4897.38544093787],
-  [366.0728716054901, 4731.785440937871],
-  [465.37287160549005, 4897.38544093787],
-  [366.0728716054901, 5062.9854409378695],
-  [465.37287160549005, 5062.9854409378695],
-  [366.0728716054901, 5228.585440937869],
-  [465.37287160549005, 5228.585440937869],
-  [564.6728716054901, 5394.185440937868],
-  [663.9728716054901, 5228.585440937869],
-  [564.6728716054901, 5062.9854409378695],
-  [663.9728716054901, 4897.38544093787],
-  [763.2728716054902, 4731.785440937871],
-  [862.5728716054903, 4566.185440937871],
-  [961.8728716054903, 4731.785440937871],
-  [862.5728716054903, 4731.785440937871],
-  [961.8728716054903, 4566.185440937871],
-  [862.5728716054903, 4400.585440937872],
-  [961.8728716054903, 4234.985440937872],
-  [1061.1728716054904, 4400.585440937872],
-  [1160.4728716054904, 4234.985440937872],
-  [1160.4728716054904, 4400.585440937872],
-  [1259.7728716054903, 4234.985440937872],
-  [1359.0728716054903, 4069.3854409378723],
-  [1458.3728716054902, 4069.3854409378723],
-  [1557.6728716054902, 4234.985440937872],
-  [1656.9728716054901, 4400.585440937872],
-  [1557.6728716054902, 4400.585440937872],
-  [1458.3728716054902, 4400.585440937872],
-  [1359.0728716054903, 4566.185440937871],
-  [1359.0728716054903, 4731.785440937871],
-  [1259.7728716054903, 4731.785440937871],
-  [1359.0728716054903, 4897.38544093787],
-  [1458.3728716054902, 4731.785440937871],
-  [1458.3728716054902, 4897.38544093787],
-  [1359.0728716054903, 5062.9854409378695],
-  [1259.7728716054903, 5228.585440937869],
-  [1259.7728716054903, 5062.9854409378695],
-  [1259.7728716054903, 4897.38544093787],
-  [1160.4728716054904, 5062.9854409378695],
-  [1160.4728716054904, 5228.585440937869],
-  [1061.1728716054904, 5228.585440937869],
-  [1061.1728716054904, 5062.9854409378695],
-  [961.8728716054903, 5228.585440937869],
-  [862.5728716054903, 5062.9854409378695],
-  [961.8728716054903, 5062.9854409378695],
-  [961.8728716054903, 4897.38544093787],
-  [1061.1728716054904, 4897.38544093787],
-  [1160.4728716054904, 4731.785440937871],
-  [1259.7728716054903, 4566.185440937871],
-  [1359.0728716054903, 4400.585440937872],
-  [1458.3728716054902, 4566.185440937871],
-  [1557.6728716054902, 4566.185440937871],
-  [1656.9728716054901, 4731.785440937871],
-  [1557.6728716054902, 4897.38544093787],
-  [1458.3728716054902, 5062.9854409378695],
-  [1557.6728716054902, 5228.585440937869],
-  [1656.9728716054901, 5062.9854409378695],
-  [1756.27287160549, 5062.9854409378695],
-  [1756.27287160549, 4897.38544093787],
-  [1855.57287160549, 5062.9854409378695],
-  [1954.87287160549, 4897.38544093787],
-  [2054.17287160549, 5062.9854409378695],
-  [1954.87287160549, 5062.9854409378695],
-  [2054.17287160549, 5228.585440937869],
-  [2153.4728716054897, 5228.585440937869],
-  [2252.7728716054894, 5062.9854409378695],
-  [2352.072871605489, 5228.585440937869],
-  [2451.372871605489, 5394.185440937868],
-  [2352.072871605489, 5394.185440937868],
-  [2252.7728716054894, 5228.585440937869],
-  [2153.4728716054897, 5062.9854409378695],
-  [2153.4728716054897, 4897.38544093787],
-  [2252.7728716054894, 4897.38544093787],
-  [2352.072871605489, 4731.785440937871],
-  [2252.7728716054894, 4731.785440937871],
-  [2153.4728716054897, 4731.785440937871],
-  [2054.17287160549, 4566.185440937871],
-  [1954.87287160549, 4731.785440937871],
-  [1855.57287160549, 4897.38544093787],
-  [1756.27287160549, 4731.785440937871],
-  [1855.57287160549, 4731.785440937871],
-  [1855.57287160549, 4566.185440937871],
-  [1756.27287160549, 4566.185440937871],
-  [1656.9728716054901, 4566.185440937871],
-  [1557.6728716054902, 4731.785440937871],
-  [1656.9728716054901, 4897.38544093787],
-  [1557.6728716054902, 5062.9854409378695],
-  [1458.3728716054902, 5228.585440937869],
-  [1359.0728716054903, 5228.585440937869],
-  [1259.7728716054903, 5394.185440937868],
-  [1259.7728716054903, 5559.785440937868],
-  [1160.4728716054904, 5559.785440937868],
-  [1061.1728716054904, 5559.785440937868],
-  [1160.4728716054904, 5725.385440937867],
-  [1259.7728716054903, 5725.385440937867],
-  [1359.0728716054903, 5559.785440937868],
-  [1458.3728716054902, 5725.385440937867],
-  [1458.3728716054902, 5559.785440937868],
-  [1359.0728716054903, 5725.385440937867],
-  [1259.7728716054903, 5890.985440937867],
-  [1359.0728716054903, 5890.985440937867],
-  [1259.7728716054903, 6056.585440937866],
-  [1359.0728716054903, 6222.185440937866],
-  [1458.3728716054902, 6222.185440937866],
-  [1458.3728716054902, 6387.785440937865],
-  [1557.6728716054902, 6222.185440937866],
-  [1557.6728716054902, 6387.785440937865],
-  [1656.9728716054901, 6222.185440937866],
-  [1756.27287160549, 6056.585440937866],
-  [1855.57287160549, 5890.985440937867],
-  [1756.27287160549, 5890.985440937867],
-  [1656.9728716054901, 6056.585440937866],
-  [1557.6728716054902, 5890.985440937867],
-  [1458.3728716054902, 5890.985440937867],
-  [1359.0728716054903, 6056.585440937866],
-  [1259.7728716054903, 6222.185440937866],
-  [1160.4728716054904, 6056.585440937866],
-  [1061.1728716054904, 5890.985440937867],
-  [1061.1728716054904, 6056.585440937866],
-  [1160.4728716054904, 6222.185440937866],
-  [1061.1728716054904, 6222.185440937866],
-  [961.8728716054903, 6222.185440937866],
-  [961.8728716054903, 6056.585440937866],
-  [961.8728716054903, 5890.985440937867],
-  [961.8728716054903, 5725.385440937867],
-  [862.5728716054903, 5559.785440937868],
-  [763.2728716054902, 5725.385440937867],
-  [862.5728716054903, 5725.385440937867],
-  [763.2728716054902, 5890.985440937867],
-  [663.9728716054901, 5725.385440937867],
-  [763.2728716054902, 5559.785440937868],
-  [763.2728716054902, 5394.185440937868],
-  [862.5728716054903, 5228.585440937869],
-  [961.8728716054903, 5394.185440937868],
-  [1061.1728716054904, 5394.185440937868],
-  [961.8728716054903, 5559.785440937868],
-  [862.5728716054903, 5394.185440937868],
-  [763.2728716054902, 5228.585440937869],
-  [663.9728716054901, 5062.9854409378695],
-  [763.2728716054902, 5062.9854409378695],
-  [763.2728716054902, 4897.38544093787],
-  [663.9728716054901, 4731.785440937871],
-  [564.6728716054901, 4731.785440937871],
-  [465.37287160549005, 4566.185440937871],
-  [366.0728716054901, 4566.185440937871],
-  [465.37287160549005, 4731.785440937871],
-  [564.6728716054901, 4566.185440937871],
-  [465.37287160549005, 4400.585440937872],
-  [366.0728716054901, 4400.585440937872],
-  [266.77287160549014, 4234.985440937872],
-  [167.47287160549016, 4234.985440937872],
-  [266.77287160549014, 4400.585440937872],
-  [266.77287160549014, 4566.185440937871],
-  [167.47287160549016, 4400.585440937872],
-  [68.17287160549016, 4234.985440937872],
-  [167.47287160549013, 4069.3854409378723],
-  [68.17287160549013, 3903.7854409378724],
-  [68.17287160549013, 4069.3854409378723],
-  [167.47287160549013, 3903.7854409378724],
-  [266.77287160549014, 3903.7854409378724],
-  [366.0728716054901, 3738.1854409378725],
-  [266.77287160549014, 3738.1854409378725],
-  [266.77287160549014, 3572.5854409378726],
-  [167.47287160549016, 3406.9854409378727],
-  [167.47287160549016, 3241.3854409378728],
-  [266.77287160549014, 3241.3854409378728],
-  [266.77287160549014, 3406.9854409378727],
-  [366.0728716054901, 3572.5854409378726],
-  [465.37287160549005, 3738.1854409378725],
-  [465.37287160549005, 3903.7854409378724],
-  [366.0728716054901, 4069.3854409378723],
-  [366.0728716054901, 4234.985440937872],
-  [465.37287160549005, 4234.985440937872],
-  [564.6728716054901, 4069.3854409378723],
-  [465.37287160549005, 4069.3854409378723],
-  [564.6728716054901, 4234.985440937872],
-  [663.9728716054901, 4069.3854409378723],
-  [663.9728716054901, 4234.985440937872],
-  [663.9728716054901, 4400.585440937872],
-  [763.2728716054902, 4566.185440937871],
-  [763.2728716054902, 4400.585440937872],
-  [663.9728716054901, 4566.185440937871],
-  [564.6728716054901, 4400.585440937872],
-  [19431.915041401327, 3495.506142643713],
-  [19332.61504140133, 3661.1061426437127],
-  [19431.915041401327, 3661.1061426437127],
-  [19531.215041401327, 3661.1061426437127],
-  [19630.515041401326, 3495.506142643713],
-  [19630.515041401326, 3661.1061426437127],
-  [19729.815041401325, 3826.7061426437126],
-  [19630.515041401326, 3826.7061426437126],
-  [19729.815041401325, 3992.3061426437125],
-  [19630.515041401326, 3992.3061426437125],
-  [19630.515041401326, 4157.906142643712],
-  [19630.515041401326, 4323.506142643711],
-  [19531.215041401327, 4157.906142643712],
-  [19431.915041401327, 4323.506142643711],
-  [19531.215041401327, 4489.106142643711],
-  [19431.915041401327, 4654.70614264371],
-  [19332.61504140133, 4654.70614264371],
-  [19332.61504140133, 4820.30614264371],
-  [19332.61504140133, 4985.906142643709],
-  [19233.31504140133, 4985.906142643709],
-  [19134.01504140133, 5151.506142643709],
-  [19034.71504140133, 5151.506142643709],
-  [19134.01504140133, 5317.106142643708],
-  [19034.71504140133, 5317.106142643708],
-  [19034.71504140133, 5482.706142643708],
-  [18935.41504140133, 5648.306142643707],
-  [18836.115041401332, 5813.9061426437065],
-  [18836.115041401332, 5979.506142643706],
-  [18935.41504140133, 5979.506142643706],
-  [19034.71504140133, 6145.106142643705],
-  [19034.71504140133, 5979.506142643706],
-  [19034.71504140133, 5813.9061426437065],
-  [19134.01504140133, 5648.306142643707],
-  [19233.31504140133, 5648.306142643707],
-  [19134.01504140133, 5813.9061426437065],
-  [19134.01504140133, 5979.506142643706],
-  [19233.31504140133, 5813.9061426437065],
-  [19233.31504140133, 5979.506142643706],
-  [19332.61504140133, 6145.106142643705],
-  [19332.61504140133, 6310.706142643705],
-  [19233.31504140133, 6310.706142643705],
-  [19233.31504140133, 6476.306142643704],
-  [19332.61504140133, 6476.306142643704],
-  [19431.915041401327, 6641.906142643704],
-  [19332.61504140133, 6807.506142643703],
-  [19332.61504140133, 6641.906142643704],
-  [19431.915041401327, 6476.306142643704],
-  [19431.915041401327, 6310.706142643705],
-  [19531.215041401327, 6145.106142643705],
-  [19431.915041401327, 5979.506142643706],
-  [19431.915041401327, 6145.106142643705],
-  [19531.215041401327, 5979.506142643706],
-  [19630.515041401326, 5813.9061426437065],
-  [19630.515041401326, 5979.506142643706],
-  [19729.815041401325, 5813.9061426437065],
-  [19829.115041401325, 5979.506142643706],
-  [19729.815041401325, 5979.506142643706],
-  [19729.815041401325, 6145.106142643705],
-  [19729.815041401325, 6310.706142643705],
-  [19630.515041401326, 6476.306142643704],
-  [19729.815041401325, 6476.306142643704],
-  [19630.515041401326, 6310.706142643705],
-  [19531.215041401327, 6310.706142643705],
-  [19531.215041401327, 6476.306142643704],
-  [19630.515041401326, 6641.906142643704],
-  [19729.815041401325, 6807.506142643703],
-  [19829.115041401325, 6973.106142643703],
-  [19928.415041401324, 6973.106142643703],
-  [19928.415041401324, 7138.706142643702],
-  [20027.715041401323, 7138.706142643702],
-  [20027.715041401323, 7304.306142643702],
-  [19928.415041401324, 7304.306142643702],
-  [19829.115041401325, 7304.306142643702],
-  [19829.115041401325, 7469.906142643701],
-  [19928.415041401324, 7469.906142643701],
-  [19928.415041401324, 7635.5061426437005],
-  [19928.415041401324, 7801.1061426437],
-  [20027.715041401323, 7635.5061426437005],
-  [20027.715041401323, 7801.1061426437],
-  [20127.015041401322, 7801.1061426437],
-  [20226.31504140132, 7801.1061426437],
-  [20325.61504140132, 7801.1061426437],
-  [20226.31504140132, 7635.5061426437005],
-  [20226.31504140132, 7469.906142643701],
-  [20226.31504140132, 7304.306142643702],
-  [20127.015041401322, 7304.306142643702],
-  [20027.715041401323, 7469.906142643701],
-  [20127.015041401322, 7469.906142643701],
-  [20127.015041401322, 7635.5061426437005],
-  [2748.790306732237, 2362.9553147492866],
-  [2848.0903067322365, 2528.5553147492865],
-  [2748.790306732237, 2694.1553147492864],
-  [2649.490306732237, 2859.7553147492863],
-  [2748.790306732237, 3025.355314749286],
-  [2848.0903067322365, 2859.7553147492863],
-  [2848.0903067322365, 2694.1553147492864],
-  [2947.3903067322362, 2694.1553147492864],
-  [3046.690306732236, 2859.7553147492863],
-  [3145.9903067322357, 2694.1553147492864],
-  [3145.9903067322357, 2528.5553147492865],
-  [3046.690306732236, 2694.1553147492864],
-  [3145.9903067322357, 2859.7553147492863],
-  [3046.690306732236, 3025.355314749286],
-  [3145.9903067322357, 3025.355314749286],
-  [3245.2903067322354, 3190.955314749286],
-  [3245.2903067322354, 3356.555314749286],
-  [3344.590306732235, 3522.155314749286],
-  [3443.890306732235, 3356.555314749286],
-  [3543.1903067322346, 3356.555314749286],
-  [3642.4903067322343, 3190.955314749286],
-  [3741.790306732234, 3025.355314749286],
-  [3741.790306732234, 2859.7553147492863],
-  [3841.090306732234, 3025.355314749286],
-  [3841.090306732234, 3190.955314749286],
-  [3741.790306732234, 3190.955314749286],
-  [3642.4903067322343, 3025.355314749286],
-  [3543.1903067322346, 3025.355314749286],
-  [3543.1903067322346, 2859.7553147492863],
-  [3443.890306732235, 3025.355314749286],
-  [3443.890306732235, 3190.955314749286],
-  [3543.1903067322346, 3190.955314749286],
-  [3642.4903067322343, 3356.555314749286],
-  [3543.1903067322346, 3522.155314749286],
-  [3443.890306732235, 3687.755314749286],
-  [3443.890306732235, 3853.3553147492858],
-  [3344.590306732235, 3687.755314749286],
-  [3245.2903067322354, 3853.3553147492858],
-  [3245.2903067322354, 3687.755314749286],
-  [3145.9903067322357, 3687.755314749286],
-  [3046.690306732236, 3853.3553147492858],
-  [3145.9903067322357, 4018.9553147492857],
-  [3145.9903067322357, 3853.3553147492858],
-  [3046.690306732236, 3687.755314749286],
-  [3145.9903067322357, 3522.155314749286],
-  [3145.9903067322357, 3356.555314749286],
-  [3145.9903067322357, 3190.955314749286],
-  [3046.690306732236, 3190.955314749286],
-  [3046.690306732236, 3356.555314749286],
-  [2947.3903067322362, 3356.555314749286],
-  [2848.0903067322365, 3190.955314749286],
-  [2947.3903067322362, 3025.355314749286],
-  [2848.0903067322365, 3025.355314749286],
-  [2748.790306732237, 2859.7553147492863],
-  [2649.490306732237, 2694.1553147492864],
-  [2748.790306732237, 2528.5553147492865],
-  [2848.0903067322365, 2362.9553147492866],
-  [2748.790306732237, 2197.3553147492867],
-  [2649.490306732237, 2362.9553147492866],
-  [2649.490306732237, 2197.3553147492867],
-  [2550.1903067322373, 2362.9553147492866],
-  [2450.8903067322376, 2362.9553147492866],
-  [2351.590306732238, 2528.5553147492865],
-  [2252.290306732238, 2528.5553147492865],
-  [2351.590306732238, 2362.9553147492866],
-  [2252.290306732238, 2197.3553147492867],
-  [2351.590306732238, 2197.3553147492867],
-  [2351.590306732238, 2031.7553147492865],
-  [2351.590306732238, 1866.1553147492864],
-  [2252.290306732238, 1866.1553147492864],
-  [2351.590306732238, 1700.5553147492863],
-  [2450.8903067322376, 1534.9553147492861],
-  [2351.590306732238, 1369.355314749286],
-  [2252.290306732238, 1203.7553147492858],
-  [2252.290306732238, 1369.355314749286],
-  [2252.290306732238, 1534.9553147492861],
-  [2152.9903067322384, 1369.355314749286],
-  [2053.6903067322387, 1369.355314749286],
-  [1954.3903067322387, 1203.7553147492858],
-  [1855.0903067322388, 1203.7553147492858],
-  [1755.7903067322388, 1038.1553147492857],
-  [1656.4903067322389, 1038.1553147492857],
-  [1557.190306732239, 872.5553147492857],
-  [1457.890306732239, 1038.1553147492857],
-  [1457.890306732239, 872.5553147492857],
-  [1457.890306732239, 706.9553147492858],
-  [1557.190306732239, 706.9553147492858],
-  [1656.4903067322389, 872.5553147492857],
-  [1656.4903067322389, 706.9553147492858],
-  [1755.7903067322388, 706.9553147492858],
-  [1656.4903067322389, 541.3553147492859],
-  [1557.190306732239, 375.7553147492859],
-  [1656.4903067322389, 210.1553147492859],
-  [1755.7903067322388, 44.55531474928592],
-  [1656.4903067322389, 44.55531474928592],
-  [1557.190306732239, 210.1553147492859],
-  [1457.890306732239, 210.1553147492859],
-  [1457.890306732239, 44.55531474928592],
-  [1358.590306732239, 210.1553147492859],
-  [1358.590306732239, 375.75531474928584],
-  [1259.290306732239, 210.15531474928585],
-  [1259.290306732239, 375.75531474928584],
-  [1259.290306732239, 541.3553147492859],
-  [1358.590306732239, 706.9553147492858],
-  [1358.590306732239, 872.5553147492857],
-  [1259.290306732239, 706.9553147492858],
-  [1259.290306732239, 872.5553147492857],
-  [1259.290306732239, 1038.1553147492857],
-  [1358.590306732239, 1203.7553147492858],
-  [1358.590306732239, 1038.1553147492857],
-  [1457.890306732239, 1203.7553147492858],
-  [1557.190306732239, 1369.355314749286],
-  [1656.4903067322389, 1203.7553147492858],
-  [1557.190306732239, 1203.7553147492858],
-  [1557.190306732239, 1038.1553147492857],
-  [17254.572515546668, 1460.5807801244923],
-  [17353.872515546667, 1626.1807801244925],
-  [17453.172515546667, 1791.7807801244926],
-  [17552.472515546666, 1791.7807801244926],
-  [17453.172515546667, 1626.1807801244925],
-  [17353.872515546667, 1791.7807801244926],
-  [17453.172515546667, 1957.3807801244927],
-  [17353.872515546667, 2122.980780124493],
-  [17453.172515546667, 2288.580780124493],
-  [17353.872515546667, 2454.1807801244927],
-  [17453.172515546667, 2619.7807801244926],
-  [17552.472515546666, 2619.7807801244926],
-  [17453.172515546667, 2785.3807801244925],
-  [17353.872515546667, 2619.7807801244926],
-  [17254.572515546668, 2454.1807801244927],
-  [17254.572515546668, 2288.580780124493],
-  [17353.872515546667, 2288.580780124493],
-  [17453.172515546667, 2122.980780124493],
-  [17552.472515546666, 2288.580780124493],
-  [17552.472515546666, 2454.1807801244927],
-  [17453.172515546667, 2454.1807801244927],
-  [4447.67624466283, 4761.1416826913],
-  [4546.97624466283, 4595.541682691301],
-  [4546.97624466283, 4429.941682691301],
-  [4447.67624466283, 4429.941682691301],
-  [4447.67624466283, 4595.541682691301],
-  [4348.37624466283, 4595.541682691301],
-  [4249.07624466283, 4595.541682691301],
-  [4348.37624466283, 4761.1416826913],
-  [4249.07624466283, 4761.1416826913],
-  [4348.37624466283, 4926.7416826912995],
-  [4348.37624466283, 5092.341682691299],
-  [4447.67624466283, 5257.941682691298],
-  [4546.97624466283, 5257.941682691298],
-  [4646.27624466283, 5092.341682691299],
-  [4546.97624466283, 5092.341682691299],
-  [4646.27624466283, 4926.7416826912995],
-  [4646.27624466283, 4761.1416826913],
-  [4546.97624466283, 4761.1416826913],
-  [4646.27624466283, 4595.541682691301],
-  [4745.5762446628305, 4595.541682691301],
-  [4646.27624466283, 4429.941682691301],
-  [4745.5762446628305, 4429.941682691301],
-  [4844.876244662831, 4595.541682691301],
-  [4745.5762446628305, 4761.1416826913],
-  [4745.5762446628305, 4926.7416826912995],
-  [4844.876244662831, 4761.1416826913],
-  [4944.176244662831, 4761.1416826913],
-  [5043.476244662831, 4926.7416826912995],
-  [5043.476244662831, 4761.1416826913],
-  [5142.776244662831, 4926.7416826912995],
-  [5142.776244662831, 4761.1416826913],
-  [5242.076244662831, 4595.541682691301],
-  [5142.776244662831, 4595.541682691301],
-  [5242.076244662831, 4429.941682691301],
-  [5242.076244662831, 4264.341682691302],
-  [5142.776244662831, 4429.941682691301],
-  [5043.476244662831, 4595.541682691301],
-  [5043.476244662831, 4429.941682691301],
-  [5043.476244662831, 4264.341682691302],
-  [5142.776244662831, 4098.741682691302],
-  [5043.476244662831, 4098.741682691302],
-  [4944.176244662831, 3933.1416826913023],
-  [4944.176244662831, 4098.741682691302],
-  [4944.176244662831, 4264.341682691302],
-  [4844.876244662831, 4098.741682691302],
-  [4745.5762446628305, 4264.341682691302],
-  [4646.27624466283, 4098.741682691302],
-  [4546.97624466283, 3933.1416826913023],
-  [4447.67624466283, 4098.741682691302],
-  [4546.97624466283, 4264.341682691302],
-  [4447.67624466283, 4264.341682691302],
-  [4546.97624466283, 4098.741682691302],
-  [4646.27624466283, 3933.1416826913023],
-  [4546.97624466283, 3767.5416826913024],
-  [4447.67624466283, 3601.9416826913025],
-  [4447.67624466283, 3767.5416826913024],
-  [4348.37624466283, 3767.5416826913024],
-  [4348.37624466283, 3933.1416826913023],
-  [4249.07624466283, 3767.5416826913024],
-  [4249.07624466283, 3933.1416826913023],
-  [4149.776244662829, 3933.1416826913023],
-  [4050.4762446628297, 4098.741682691302],
-  [4050.4762446628297, 3933.1416826913023],
-  [3951.17624466283, 3933.1416826913023],
-  [3951.17624466283, 4098.741682691302],
-  [3851.8762446628302, 4264.341682691302],
-  [3851.8762446628302, 4098.741682691302],
-  [3752.5762446628305, 4098.741682691302],
-  [3653.276244662831, 4264.341682691302],
-  [3553.976244662831, 4429.941682691301],
-  [3553.976244662831, 4595.541682691301],
-  [3454.6762446628313, 4429.941682691301],
-  [3553.976244662831, 4264.341682691302],
-  [3653.276244662831, 4429.941682691301],
-  [3752.5762446628305, 4264.341682691302],
-  [3752.5762446628305, 4429.941682691301],
-  [3851.8762446628302, 4595.541682691301],
-  [3851.8762446628302, 4429.941682691301],
-  [3951.17624466283, 4429.941682691301],
-  [4050.4762446628297, 4264.341682691302],
-  [4149.776244662829, 4098.741682691302],
-  [4249.07624466283, 4264.341682691302],
-  [4348.37624466283, 4098.741682691302],
-  [4447.67624466283, 3933.1416826913023],
-  [9574.088902135607, 7352.26293905581],
-  [9474.788902135606, 7352.26293905581],
-  [9375.488902135605, 7186.662939055811],
-  [9474.788902135606, 7021.0629390558115],
-  [9574.088902135607, 7021.0629390558115],
-  [9474.788902135606, 7186.662939055811],
-  [9574.088902135607, 7186.662939055811],
-  [9673.388902135608, 7021.0629390558115],
-  [9673.388902135608, 6855.462939055812],
-  [9772.68890213561, 6689.862939055813],
-  [9673.388902135608, 6689.862939055813],
-  [9772.68890213561, 6524.262939055813],
-  [9871.98890213561, 6358.662939055814],
-  [9971.288902135611, 6524.262939055813],
-  [10070.588902135612, 6358.662939055814],
-  [10070.588902135612, 6193.062939055814],
-  [9971.288902135611, 6027.462939055815],
-  [9971.288902135611, 5861.862939055815],
-  [9871.98890213561, 5861.862939055815],
-  [9871.98890213561, 5696.262939055816],
-  [9971.288902135611, 5530.662939055816],
-  [10070.588902135612, 5530.662939055816],
-  [10070.588902135612, 5696.262939055816],
-  [10169.888902135614, 5861.862939055815],
-  [10169.888902135614, 5696.262939055816],
-  [10070.588902135612, 5861.862939055815],
-  [10169.888902135614, 6027.462939055815],
-  [10169.888902135614, 6193.062939055814],
-  [10269.188902135615, 6027.462939055815],
-  [10269.188902135615, 5861.862939055815],
-  [10368.488902135616, 6027.462939055815],
-  [10269.188902135615, 6193.062939055814],
-  [10269.188902135615, 6358.662939055814],
-  [10169.888902135614, 6358.662939055814],
-  [10070.588902135612, 6524.262939055813],
-  [10070.588902135612, 6689.862939055813],
-  [9971.288902135611, 6855.462939055812],
-  [9971.288902135611, 7021.0629390558115],
-  [10070.588902135612, 7186.662939055811],
-  [10169.888902135614, 7186.662939055811],
-  [10269.188902135615, 7186.662939055811],
-  [10169.888902135614, 7352.26293905581],
-  [10070.588902135612, 7352.26293905581],
-  [10169.888902135614, 7517.86293905581],
-  [10169.888902135614, 7683.462939055809],
-  [10269.188902135615, 7517.86293905581],
-  [10368.488902135616, 7683.462939055809],
-  [10467.788902135617, 7683.462939055809],
-  [10368.488902135616, 7517.86293905581],
-  [10269.188902135615, 7352.26293905581],
-  [10368.488902135616, 7352.26293905581],
-  [10368.488902135616, 7186.662939055811],
-  [10368.488902135616, 7021.0629390558115],
-  [10368.488902135616, 6855.462939055812],
-  [10269.188902135615, 6855.462939055812],
-  [10169.888902135614, 6855.462939055812],
-  [10169.888902135614, 7021.0629390558115],
-  [10070.588902135612, 7021.0629390558115],
-  [10070.588902135612, 6855.462939055812],
-  [10169.888902135614, 6689.862939055813],
-  [10269.188902135615, 6689.862939055813],
-  [10169.888902135614, 6524.262939055813],
-  [10269.188902135615, 6524.262939055813],
-  [10368.488902135616, 6524.262939055813],
-  [10368.488902135616, 6358.662939055814],
-  [10467.788902135617, 6358.662939055814],
-  [10467.788902135617, 6193.062939055814],
-  [10567.088902135618, 6358.662939055814],
-  [10567.088902135618, 6193.062939055814],
-  [10666.388902135619, 6193.062939055814],
-  [10666.388902135619, 6358.662939055814],
-  [10567.088902135618, 6524.262939055813],
-  [10467.788902135617, 6524.262939055813],
-  [10567.088902135618, 6689.862939055813],
-  [10467.788902135617, 6855.462939055812],
-  [10567.088902135618, 7021.0629390558115],
-  [10467.788902135617, 7021.0629390558115],
-  [10567.088902135618, 6855.462939055812],
-  [10467.788902135617, 6689.862939055813],
-  [10368.488902135616, 6689.862939055813],
-  [1073.6944354374714, 1154.3681204032646],
-  [974.3944354374713, 1319.9681204032647],
-  [875.0944354374712, 1319.9681204032647],
-  [775.7944354374712, 1154.3681204032646],
-  [775.7944354374712, 988.7681204032646],
-  [875.0944354374712, 823.1681204032647],
-  [875.0944354374712, 657.5681204032647],
-  [775.7944354374712, 823.1681204032647],
-  [676.4944354374711, 657.5681204032647],
-  [676.4944354374711, 491.9681204032648],
-  [775.7944354374712, 657.5681204032647],
-  [676.4944354374711, 823.1681204032647],
-  [676.4944354374711, 988.7681204032646],
-  [577.194435437471, 823.1681204032647],
-  [577.194435437471, 988.7681204032646],
-  [577.194435437471, 1154.3681204032646],
-  [676.4944354374711, 1319.9681204032647],
-  [577.194435437471, 1319.9681204032647],
-  [477.89443543747103, 1319.9681204032647],
-  [577.194435437471, 1485.5681204032649],
-  [477.89443543747103, 1651.168120403265],
-  [577.194435437471, 1816.7681204032651],
-  [477.89443543747103, 1816.7681204032651],
-  [378.5944354374711, 1982.3681204032653],
-  [378.5944354374711, 2147.9681204032654],
-  [279.2944354374711, 2313.5681204032653],
-  [179.99443543747114, 2147.9681204032654],
-  [80.69443543747114, 2313.5681204032653],
-  [80.69443543747114, 2479.168120403265],
-  [179.9944354374711, 2644.768120403265],
-  [179.9944354374711, 2479.168120403265],
-  [179.9944354374711, 2313.5681204032653],
-  [80.69443543747111, 2147.9681204032654],
-  [80.69443543747111, 1982.3681204032653],
-  [179.9944354374711, 1982.3681204032653],
-  [179.9944354374711, 1816.7681204032651],
-  [80.69443543747111, 1816.7681204032651],
-  [179.9944354374711, 1651.168120403265],
-  [80.69443543747111, 1485.5681204032649],
-  [80.69443543747111, 1319.9681204032647],
-  [179.9944354374711, 1154.3681204032646],
-  [80.69443543747111, 1154.3681204032646],
-  [179.9944354374711, 988.7681204032646],
-  [279.2944354374711, 823.1681204032647],
-  [378.5944354374711, 657.5681204032647],
-  [378.5944354374711, 823.1681204032647],
-  [477.89443543747103, 823.1681204032647],
-  [477.89443543747103, 657.5681204032647],
-  [378.5944354374711, 491.9681204032648],
-  [477.89443543747103, 326.3681204032648],
-  [477.89443543747103, 160.76812040326482],
-  [378.5944354374711, 160.76812040326482],
-  [279.2944354374711, 326.3681204032648],
-  [179.99443543747114, 491.9681204032648],
-  [179.99443543747114, 326.3681204032648],
-  [279.2944354374711, 491.9681204032648],
-  [279.2944354374711, 657.5681204032647],
-  [179.99443543747114, 823.1681204032647],
-  [279.2944354374711, 988.7681204032646],
-  [279.2944354374711, 1154.3681204032646],
-  [378.5944354374711, 1319.9681204032647],
-  [477.89443543747103, 1485.5681204032649],
-  [577.194435437471, 1651.168120403265],
-  [676.4944354374711, 1651.168120403265],
-  [775.7944354374712, 1816.7681204032651],
-  [676.4944354374711, 1816.7681204032651],
-  [775.7944354374712, 1651.168120403265],
-  [875.0944354374712, 1651.168120403265],
-  [974.3944354374713, 1651.168120403265],
-  [875.0944354374712, 1485.5681204032649],
-  [775.7944354374712, 1485.5681204032649],
-  [676.4944354374711, 1485.5681204032649],
-  [775.7944354374712, 1319.9681204032647],
-  [676.4944354374711, 1154.3681204032646],
-  [3138.413562431697, 2355.845602060523],
-  [3039.113562431697, 2521.445602060523],
-  [3039.113562431697, 2355.845602060523],
-  [3039.113562431697, 2190.245602060523],
-  [3138.413562431697, 2024.645602060523],
-  [3237.7135624316966, 1859.045602060523],
-  [3237.7135624316966, 2024.645602060523],
-  [3337.0135624316963, 1859.045602060523],
-  [3337.0135624316963, 1693.4456020605228],
-  [3436.313562431696, 1527.8456020605227],
-  [3535.6135624316958, 1693.4456020605228],
-  [3535.6135624316958, 1859.045602060523],
-  [3634.9135624316955, 2024.645602060523],
-  [3734.213562431695, 2190.245602060523],
-  [3634.9135624316955, 2190.245602060523],
-  [3535.6135624316958, 2190.245602060523],
-  [3535.6135624316958, 2355.845602060523],
-  [3535.6135624316958, 2521.445602060523],
-  [3436.313562431696, 2687.045602060523],
-  [3436.313562431696, 2852.645602060523],
-  [3535.6135624316958, 2687.045602060523],
-  [3634.9135624316955, 2521.445602060523],
-  [3634.9135624316955, 2355.845602060523],
-  [3734.213562431695, 2355.845602060523],
-  [3833.513562431695, 2190.245602060523],
-  [3932.8135624316947, 2024.645602060523],
-  [3833.513562431695, 1859.045602060523],
-  [3833.513562431695, 1693.4456020605228],
-  [3734.213562431695, 1859.045602060523],
-  [3734.213562431695, 1693.4456020605228],
-  [3734.213562431695, 1527.8456020605227],
-  [3634.9135624316955, 1527.8456020605227],
-  [3634.9135624316955, 1693.4456020605228],
-  [3535.6135624316958, 1527.8456020605227],
-  [3634.9135624316955, 1362.2456020605225],
-  [3535.6135624316958, 1362.2456020605225],
-  [3436.313562431696, 1196.6456020605224],
-  [3535.6135624316958, 1196.6456020605224],
-  [3535.6135624316958, 1031.0456020605222],
-  [3436.313562431696, 1031.0456020605222],
-  [3535.6135624316958, 865.4456020605222],
-  [3436.313562431696, 865.4456020605222],
-  [3535.6135624316958, 699.8456020605223],
-  [3634.9135624316955, 699.8456020605223],
-  [3535.6135624316958, 534.2456020605224],
-  [3436.313562431696, 368.64560206052244],
-  [3436.313562431696, 203.04560206052244],
-  [3337.0135624316963, 37.445602060522454],
-  [3436.313562431696, 37.445602060522454],
-  [3337.0135624316963, 203.04560206052244],
-  [3237.7135624316966, 37.445602060522454],
-  [3138.413562431697, 37.445602060522454],
-  [3237.7135624316966, 203.04560206052244],
-  [3337.0135624316963, 368.6456020605224],
-  [3436.313562431696, 534.2456020605224],
-  [3337.0135624316963, 699.8456020605223],
-  [3237.7135624316966, 534.2456020605224],
-  [3337.0135624316963, 534.2456020605224],
-  [3436.313562431696, 699.8456020605223],
-  [3337.0135624316963, 865.4456020605222],
-  [3237.7135624316966, 865.4456020605222],
-  [3337.0135624316963, 1031.0456020605222],
-  [3237.7135624316966, 1196.6456020605224],
-  [3138.413562431697, 1362.2456020605225],
-  [3039.113562431697, 1527.8456020605227],
-  [3138.413562431697, 1527.8456020605227],
-  [3039.113562431697, 1693.4456020605228],
-  [2939.8135624316974, 1527.8456020605227],
-  [2840.5135624316977, 1362.2456020605225],
-  [2840.5135624316977, 1527.8456020605227],
-  [2840.5135624316977, 1693.4456020605228],
-  [2939.8135624316974, 1859.045602060523],
-  [2840.5135624316977, 2024.645602060523],
-  [2840.5135624316977, 1859.045602060523],
-  [2939.8135624316974, 1693.4456020605228],
-  [3039.113562431697, 1859.045602060523],
-  [3039.113562431697, 2024.645602060523],
-  [2939.8135624316974, 2190.245602060523],
-  [2939.8135624316974, 2024.645602060523],
-  [16388.412117675925, 1839.818884803299],
-  [16289.112117675924, 1839.818884803299],
-  [16388.412117675925, 1674.2188848032988],
-  [16487.712117675925, 1508.6188848032987],
-  [16487.712117675925, 1674.2188848032988],
-  [16388.412117675925, 1508.6188848032987],
-  [16289.112117675924, 1343.0188848032985],
-  [16289.112117675924, 1508.6188848032987],
-  [16189.812117675923, 1674.2188848032988],
-  [16090.512117675922, 1839.818884803299],
-  [16090.512117675922, 2005.418884803299],
-  [15991.212117675921, 2171.018884803299],
-  [16090.512117675922, 2336.618884803299],
-  [16090.512117675922, 2502.218884803299],
-  [16090.512117675922, 2667.8188848032987],
-  [15991.212117675921, 2833.4188848032986],
-  [15991.212117675921, 2999.0188848032985],
-  [15891.91211767592, 3164.6188848032984],
-  [15891.91211767592, 3330.2188848032984],
-  [15991.212117675921, 3330.2188848032984],
-  [16090.512117675922, 3330.2188848032984],
-  [16189.812117675923, 3495.8188848032983],
-  [16289.112117675924, 3495.8188848032983],
-  [16189.812117675923, 3330.2188848032984],
-  [16189.812117675923, 3164.6188848032984],
-  [16289.112117675924, 3164.6188848032984],
-  [16388.412117675925, 3164.6188848032984],
-  [16388.412117675925, 3330.2188848032984],
-  [16487.712117675925, 3330.2188848032984],
-  [16587.012117675924, 3495.8188848032983],
-  [16587.012117675924, 3661.418884803298],
-  [16686.312117675923, 3661.418884803298],
-  [16785.612117675922, 3661.418884803298],
-  [16884.91211767592, 3661.418884803298],
-  [16984.21211767592, 3661.418884803298],
-  [16884.91211767592, 3827.018884803298],
-  [16884.91211767592, 3992.618884803298],
-  [16984.21211767592, 3827.018884803298],
-  [17083.51211767592, 3661.418884803298],
-  [17182.81211767592, 3495.8188848032983],
-  [17182.81211767592, 3330.2188848032984],
-  [17282.11211767592, 3164.6188848032984],
-  [17282.11211767592, 3330.2188848032984],
-  [17182.81211767592, 3164.6188848032984],
-  [17083.51211767592, 3164.6188848032984],
-  [16984.21211767592, 3330.2188848032984],
-  [16984.21211767592, 3495.8188848032983],
-  [17083.51211767592, 3330.2188848032984],
-  [16984.21211767592, 3164.6188848032984],
-  [16984.21211767592, 2999.0188848032985],
-  [17083.51211767592, 2833.4188848032986],
-  [17083.51211767592, 2667.8188848032987],
-  [17182.81211767592, 2667.8188848032987],
-  [17182.81211767592, 2833.4188848032986],
-  [17083.51211767592, 2999.0188848032985],
-  [16984.21211767592, 2833.4188848032986],
-  [16884.91211767592, 2833.4188848032986],
-  [16884.91211767592, 2999.0188848032985],
-  [16785.612117675922, 2999.0188848032985],
-  [16884.91211767592, 3164.6188848032984],
-  [16785.612117675922, 3164.6188848032984],
-  [16686.312117675923, 3164.6188848032984],
-  [16587.012117675924, 3164.6188848032984],
-  [16587.012117675924, 2999.0188848032985],
-  [16487.712117675925, 3164.6188848032984],
-  [16587.012117675924, 3330.2188848032984],
-  [16686.312117675923, 3495.8188848032983],
-  [16686.312117675923, 3330.2188848032984],
-  [16785.612117675922, 3330.2188848032984],
-  [16884.91211767592, 3495.8188848032983],
-  [16785.612117675922, 3495.8188848032983],
-  [16884.91211767592, 3330.2188848032984],
-  [1272.175991128079, 3842.7700224365044],
-  [1371.475991128079, 3842.7700224365044],
-  [1272.175991128079, 3677.1700224365045],
-  [1172.875991128079, 3511.5700224365046],
-  [1272.175991128079, 3511.5700224365046],
-  [1172.875991128079, 3345.9700224365047],
-  [1073.575991128079, 3180.3700224365048],
-  [1073.575991128079, 3014.770022436505],
-  [974.275991128079, 3014.770022436505],
-  [874.9759911280789, 3014.770022436505],
-  [775.6759911280789, 2849.170022436505],
-  [775.6759911280789, 3014.770022436505],
-  [775.6759911280789, 3180.3700224365048],
-  [676.3759911280788, 3345.9700224365047],
-  [676.3759911280788, 3511.5700224365046],
-  [775.6759911280789, 3677.1700224365045],
-  [676.3759911280788, 3842.7700224365044],
-  [577.0759911280787, 3842.7700224365044],
-  [577.0759911280787, 3677.1700224365045],
-  [676.3759911280788, 3677.1700224365045],
-  [775.6759911280789, 3511.5700224365046],
-  [775.6759911280789, 3345.9700224365047],
-  [874.9759911280789, 3345.9700224365047],
-  [874.9759911280789, 3180.3700224365048],
-  [974.275991128079, 3180.3700224365048],
-  [974.275991128079, 3345.9700224365047],
-  [1073.575991128079, 3511.5700224365046],
-  [1073.575991128079, 3677.1700224365045],
-  [1172.875991128079, 3677.1700224365045],
-  [1172.875991128079, 3842.7700224365044],
-  [1073.575991128079, 3842.7700224365044],
-  [1172.875991128079, 4008.3700224365043],
-  [1073.575991128079, 4008.3700224365043],
-  [974.275991128079, 3842.7700224365044],
-  [974.275991128079, 4008.3700224365043],
-  [874.9759911280789, 4008.3700224365043],
-  [775.6759911280789, 4008.3700224365043],
-  [874.9759911280789, 3842.7700224365044],
-  [974.275991128079, 3677.1700224365045],
-  [974.275991128079, 3511.5700224365046],
-  [1073.575991128079, 3345.9700224365047],
-  [1172.875991128079, 3180.3700224365048],
-  [1272.175991128079, 3180.3700224365048],
-  [1272.175991128079, 3345.9700224365047],
-  [1371.475991128079, 3180.3700224365048],
-  [1470.7759911280789, 3345.9700224365047],
-  [1371.475991128079, 3345.9700224365047],
-  [1371.475991128079, 3511.5700224365046],
-  [1470.7759911280789, 3511.5700224365046],
-  [1570.0759911280788, 3677.1700224365045],
-  [1470.7759911280789, 3677.1700224365045],
-  [1570.0759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3511.5700224365046],
-  [1669.3759911280788, 3677.1700224365045],
-  [1768.6759911280787, 3842.7700224365044],
-  [1669.3759911280788, 3842.7700224365044],
-  [1768.6759911280787, 4008.3700224365043],
-  [1867.9759911280787, 3842.7700224365044],
-  [1967.2759911280787, 3677.1700224365045],
-  [2066.5759911280784, 3842.7700224365044],
-  [2165.875991128078, 3677.1700224365045],
-  [2066.5759911280784, 3511.5700224365046],
-  [2165.875991128078, 3511.5700224365046],
-  [2066.5759911280784, 3677.1700224365045],
-  [2165.875991128078, 3842.7700224365044],
-  [2265.175991128078, 4008.3700224365043],
-  [2364.4759911280776, 4008.3700224365043],
-  [2265.175991128078, 3842.7700224365044],
-  [2364.4759911280776, 3677.1700224365045],
-  [2463.7759911280773, 3842.7700224365044],
-  [2463.7759911280773, 4008.3700224365043],
-  [2364.4759911280776, 3842.7700224365044]
-];
-
-@AssumeDynamic()
-@NoInline()
-confuse(x) => x;
-
-main() {
-  print(confuse(panels).length);
-}
diff --git a/tests/language/lazy_map_test.dart b/tests/language/lazy_map_test.dart
deleted file mode 100644
index 08554a4..0000000
--- a/tests/language/lazy_map_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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";
-
-var data = {'a': 'a'};
-main() {
-  Expect.equals('a', data['a']);
-}
diff --git a/tests/language/lazy_static2_test.dart b/tests/language/lazy_static2_test.dart
deleted file mode 100644
index 72010f0..0000000
--- a/tests/language/lazy_static2_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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";
-
-final x = (t) => t + 1;
-
-main() {
-  Expect.equals(499, x(498));
-  Expect.equals(42, x(41));
-}
diff --git a/tests/language/lazy_static3_test.dart b/tests/language/lazy_static3_test.dart
deleted file mode 100644
index bc5fdb5..0000000
--- a/tests/language/lazy_static3_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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";
-
-final x = foo();
-var x2 = foo2();
-var x3 = foo3();
-var x4 = foo4();
-var x5 = foo5();
-final x6 = foo6();
-var x7 = x7 + 1;
-
-foo() {
-  throw "interrupt initialization";
-}
-
-foo2() {
-  x2 = 499;
-  throw "interrupt initialization";
-}
-
-foo3() => x3 + 1;
-foo4() {
-  x4 = 498;
-  x4 = x4 + 1;
-  return x4;
-}
-
-foo5() {
-  x5 = 498;
-  x5 = x5 + 1;
-}
-
-foo6() {
-  try {
-    return x5 + 1;
-  } catch (e) {
-    return 499;
-  }
-}
-
-fib(x) {
-  if (x is! int) return 0;
-  if (x < 2) return x;
-  return fib(x - 1) + fib(x - 2);
-}
-
-main() {
-  Expect.throws(() => fib(x), (e) => e == "interrupt initialization");
-  Expect.equals(null, x);
-
-  Expect.throws(() => fib(x2), (e) => e == "interrupt initialization");
-  Expect.equals(null, x2);
-
-  Expect.throws(() => fib(x3), (e) => e is CyclicInitializationError);
-  Expect.equals(null, x3);
-
-  Expect.equals(499, x4);
-
-  Expect.equals(null, x5);
-
-  Expect.equals(499, x6);
-
-  Expect.throws(() => fib(x7), (e) => e is CyclicInitializationError);
-}
diff --git a/tests/language/lazy_static4_test.dart b/tests/language/lazy_static4_test.dart
deleted file mode 100644
index 4e532c9..0000000
--- a/tests/language/lazy_static4_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-final x = foo(499);
-final y = foo(41) + 1;
-
-final t = bar(499);
-final u = bar(41) + 1;
-final v = bar("some string");
-
-foo(x) => x; // The return type will always be int.
-bar(x) => x; // The return type varies and can be int or String.
-
-main() {
-  Expect.equals(499, x);
-  Expect.equals(42, y);
-  Expect.equals(499, t);
-  Expect.equals(42, u);
-  Expect.equals("some string", v);
-}
diff --git a/tests/language/lazy_static5_test.dart b/tests/language/lazy_static5_test.dart
deleted file mode 100644
index 66b9b61..0000000
--- a/tests/language/lazy_static5_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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";
-
-final x = (t) => (u) => t + u;
-
-main() {
-  Expect.equals(499, x(498)(1));
-  Expect.equals(42, x(39)(3));
-}
diff --git a/tests/language/lazy_static6_src.dart b/tests/language/lazy_static6_src.dart
deleted file mode 100644
index c17f7da..0000000
--- a/tests/language/lazy_static6_src.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-/*
- * A lot of comments to make sure that the lazy initialization code has a
- * position that does not fit into lazy_static6_test.dart file.
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- ******************************************************************************
- */
-part of lazy_static6_test;
-
-final x = (t) => (u) => t + u;
-
-main() {
-  Expect.equals(499, x(498)(1));
-  Expect.equals(42, x(39)(3));
-}
diff --git a/tests/language/lazy_static6_test.dart b/tests/language/lazy_static6_test.dart
deleted file mode 100644
index 398d3b4..0000000
--- a/tests/language/lazy_static6_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-library lazy_static6_test;
-
-import "package:expect/expect.dart";
-part "lazy_static6_src.dart";
diff --git a/tests/language/lazy_static7_test.dart b/tests/language/lazy_static7_test.dart
deleted file mode 100644
index 2f978f1..0000000
--- a/tests/language/lazy_static7_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2015, 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";
-
-var sideEffect = 0;
-var x = (() {
-  sideEffect++;
-  return 499;
-})();
-
-main() {
-  if (new DateTime.now().day >= -1) {
-    x = 42;
-  }
-  Expect.equals(42, x);
-  Expect.equals(0, sideEffect);
-}
diff --git a/tests/language/lazy_static8_test.dart b/tests/language/lazy_static8_test.dart
deleted file mode 100644
index 73ffe90..0000000
--- a/tests/language/lazy_static8_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-// Test re-entrant initializer - calls throw CyclicInitializationError.
-
-var trace;
-
-final foo = bar;
-
-get bar {
-  trace.add('bar');
-  try {
-    return foo ?? 1;
-  } catch (e) {
-    trace.add(e is CyclicInitializationError);
-  }
-  try {
-    return foo ?? 2;
-  } catch (e) {
-    trace.add(e is CyclicInitializationError);
-  }
-  return 42;
-}
-
-void testTopLevel() {
-  trace = [];
-  var result = foo;
-  Expect.equals(42, result);
-  Expect.equals('bar,true,true', trace.join(','));
-  trace = [];
-  result = foo;
-  Expect.equals(42, result);
-  Expect.equals('', trace.join(','));
-}
-
-class X {
-  static final foo = X.bar;
-
-  static get bar {
-    trace.add('X.bar');
-    try {
-      return foo ?? 1;
-    } catch (e) {
-      trace.add(e is CyclicInitializationError);
-    }
-    try {
-      return foo ?? 2;
-    } catch (e) {
-      trace.add(e is CyclicInitializationError);
-    }
-    return 49;
-  }
-}
-
-void testClassStatic() {
-  trace = [];
-  var result = X.foo;
-  Expect.equals(49, result);
-  Expect.equals('X.bar,true,true', trace.join(','));
-  trace = [];
-  result = X.foo;
-  Expect.equals(49, result);
-  Expect.equals('', trace.join(','));
-}
-
-main() {
-  testTopLevel();
-  testClassStatic();
-}
diff --git a/tests/language/lazy_static_test.dart b/tests/language/lazy_static_test.dart
deleted file mode 100644
index cdfabdd..0000000
--- a/tests/language/lazy_static_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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";
-
-final x = foo();
-final y = y2(y3);
-final y2 = incrementCreator();
-final y3 = fib(5);
-
-foo() => 499;
-
-incrementCreator() => (x) => x + 1;
-fib(x) {
-  if (x < 2) return x;
-  return fib(x - 1) + fib(x - 2);
-}
-
-var count = 0;
-sideEffect() => count++;
-
-final t = sideEffect();
-var t2 = sideEffect();
-
-class A {
-  static final a = toto();
-  static final b = b2(b3);
-  static final b2 = decrementCreator();
-  static final b3 = fact(5);
-
-  static toto() => 666;
-
-  static decrementCreator() => (x) => x - 1;
-  static fact(x) {
-    if (x <= 1) return x;
-    return x * fact(x - 1);
-  }
-}
-
-main() {
-  Expect.equals(499, x);
-  Expect.equals(6, y);
-  Expect.equals(666, A.a);
-  Expect.equals(119, A.b);
-  Expect.equals(0, t);
-  t2 = 499;
-  Expect.equals(499, t2);
-  Expect.equals(1, count);
-}
diff --git a/tests/language/least_upper_bound_expansive_test.dart b/tests/language/least_upper_bound_expansive_test.dart
deleted file mode 100644
index 2094f88..0000000
--- a/tests/language/least_upper_bound_expansive_test.dart
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test least upper bound through type checking of conditionals.
-
-class N<T> {
-  T get n => null;
-}
-
-class C1<T> extends N<N<C1<T>>> {
-  T get c1 => null;
-}
-
-class C2<T> extends N<N<C2<N<C2<T>>>>> {
-  T get c2 => null;
-}
-
-/**
- * Test that we don't try to find the least upper bound by applying the
- * algorithm for finding the most specific common declaration recursively on
- * type arguments.
- *
- * For C1<int> and N<C1<String>> this would result in this infinite chain of
- * computations:
- *
- * lub(C1<int>, N<C1<String>>) = lub(N<N<C1<int>>>, N<C1<String>>)
- * =>
- * lub(N<C1<int>>, C1<String>) = lub(N<C1<int>>, N<N<C1<String>>>)
- * =>
- * lub(C1<int>, N<C1<String>>) = lub(N<N<C1<int>>>, N<C1<String>>>)
- * => ...
- */
-void testC1(bool z, C1<int> a, N<C1<String>> b) {
-  if (z) {
-    // The least upper bound of C1<int> and N<C1<String>> is Object since the
-    // supertypes are
-    //     {C1<int>, N<N<C1<int>>>, Object} for C1<int> and
-    //     {N<C1<String>>, Object} for N<C1<String>> and
-    // Object is the most specific type in the intersection of the supertypes.
-
-    // Is least upper bound dynamic?
-    (z ? a : b).z; //# 01: static type warning
-    // Is least upper bound N<...> ?
-    (z ? a : b).n; //# 02: static type warning
-    // Is least upper bound C1<...> ?
-    (z ? a : b).c1; //# 03: static type warning
-    // Is least upper bound N<dynamic> ?
-    (z ? a : b).n.z; //# 04: static type warning
-    // Is least upper bound N<N<...>> ?
-    (z ? a : b).n.n; //# 05: static type warning
-    // Is least upper bound N<C1<...>> ?
-    (z ? a : b).n.c1; //# 06: static type warning
-  }
-}
-
-/**
- * Test that we don't try to find the least upper bound by applying the
- * algorithm for finding the most specific common declaration recursively on
- * type arguments.
- *
- * For C1<int> and N<C1<String>> this would result in this infinite and
- * expanding chain of computations:
- *
- * lub(C2<int>, N<C2<String>>) = lub(N<N<C2<N<C2<int>>>>>, N<C2<String>>)
- * =>
- * lub(N<C2<N<C2<int>>>>, C2<String>) =
- *                               lub(N<C2<N<C2<int>>>>, N<N<C2<N<C2<String>>>>>)
- * =>
- * lub(C2<N<C2<int>>>, N<C2<N<C2<String>>>>) =
- *                              lub(N<N<C2<N<C2<int>>>>>, N<C2<N<C2<String>>>>>)
- * => ...
- */
-
-void testC2(bool z, C2<int> a, N<C2<String>> b) {
-  if (z) {
-    // The least upper bound of C2<int> and N<C2<String>> is Object since the
-    // supertypes are
-    //     {C2<int>, N<N<C2<N<C2<int>>>>>, Object} for C1<int> and
-    //     {N<C2<String>>, Object} for N<C1<String>> and
-    // Object is the most specific type in the intersection of the supertypes.
-
-    // Is least upper bound dynamic?
-    (z ? a : b).z; //# 07: static type warning
-    // Is least upper bound N<...> ?
-    (z ? a : b).n; //# 08: static type warning
-    // Is least upper bound C2<...> ?
-    (z ? a : b).c2; //# 09: static type warning
-    // Is least upper bound N<dynamic> ?
-    (z ? a : b).n.z; //# 10: static type warning
-    // Is least upper bound N<N<...>> ?
-    (z ? a : b).n.n; //# 11: static type warning
-    // Is least upper bound N<C2<...>> ?
-    (z ? a : b).n.c2; //# 12: static type warning
-  }
-}
-
-void main() {
-  testC1(false, null, null);
-  testC2(false, null, null);
-}
diff --git a/tests/language/least_upper_bound_test.dart b/tests/language/least_upper_bound_test.dart
deleted file mode 100644
index ae7df6c..0000000
--- a/tests/language/least_upper_bound_test.dart
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test least upper bound through type checking of conditionals.
-
-class A {
-  var a;
-}
-
-class B {
-  var b;
-}
-
-class C extends B {
-  var c;
-}
-
-class D extends B {
-  var d;
-}
-
-class E<T> {
-  T e;
-
-  E(this.e);
-}
-
-class F<T> extends E<T> {
-  T f;
-
-  F(T f)
-      : this.f = f,
-        super(f);
-}
-
-void main() {
-  testAB(new A(), new B());
-  testBC(new C(), new C());
-  testCD(new C(), new D());
-  testEE(new F<C>(new C()), new F<C>(new C()));
-  testEF(new F<C>(new C()), new F<C>(new C()));
-}
-
-void testAB(A a, B b) {
-  A r1 = true ? a : b; //# 01: ok
-  B r2 = false ? a : b; //# 02: ok
-  (true ? a : b).a = 0; //# 03: static type warning
-  (false ? a : b).b = 0; //# 04: static type warning
-  var c = new C();
-  (true ? a : c).a = 0; //# 05: ok
-  (false ? c : b).b = 0; //# 06: ok
-}
-
-void testBC(B b, C c) {
-  B r1 = true ? b : c; //# 07: ok
-  C r2 = false ? b : c; //# 08: ok
-  (true ? b : c).b = 0; //# 09: ok
-  (false ? b : c).c = 0; //# 10: static type warning
-  var a = null;
-  (true ? b : a).b = 0; //# 11: ok
-  (false ? a : b).c = 0; //# 12: ok
-  (true ? c : a).b = 0; //# 13: ok
-  (false ? a : c).c = 0; //# 14: ok
-}
-
-void testCD(C c, D d) {
-  C r1 = true ? c : d; //# 15: ok
-  D r2 = false ? c : d; //# 16: ok
-  (true ? c : d).b = 0; //# 17: ok
-  (false ? c : d).b = 0; //# 18: ok
-  (true ? c : d).c = 0; //# 19: static type warning
-  (false ? c : d).d = 0; //# 20: static type warning
-}
-
-void testEE(E<B> e, E<C> f) {
-  // The least upper bound of E<B> and E<C> is Object since the supertypes are
-  //     {E<B>, Object} for E<B> and
-  //     {E<C>, Object} for E<C> and
-  // Object is the most specific type in the intersection of the supertypes.
-  E<B> r1 = true ? e : f; //# 21: ok
-  F<C> r2 = false ? e : f; //# 22: ok
-  try {
-    A r3 = true ? e : f; //# 23: ok
-    B r4 = false ? e : f; //# 24: ok
-  } catch (e) {
-    // Type error in checked mode.
-  }
-  (true ? e : f).e = null; //# 25: static type warning
-  (false ? e : f).e = null; //# 26: static type warning
-}
-
-void testEF(E<B> e, F<C> f) {
-  // The least upper bound of E<B> and F<C> is Object since the supertypes are
-  //     {E<B>, Object} for E<B> and
-  //     {F<C>, E<C>, Object} for F<C> and
-  // Object is the most specific type in the intersection of the supertypes.
-  E<B> r1 = true ? e : f; //# 27: ok
-  F<C> r2 = false ? e : f; //# 28: ok
-  try {
-    A r3 = true ? e : f; //# 29: ok
-    B r4 = false ? e : f; //# 30: ok
-  } catch (e) {
-    // Type error in checked mode.
-  }
-  var r5;
-  r5 = (true ? e : f).e; //# 31: static type warning
-  r5 = (false ? e : f).f; //# 32: static type warning
-}
diff --git a/tests/language/left_shift_test.dart b/tests/language/left_shift_test.dart
deleted file mode 100644
index 7f151b1..0000000
--- a/tests/language/left_shift_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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";
-
-main() {
-  for (int i = 0; i < 80; i++) {
-    var a = -1 << i;
-    var b = -1;
-    Expect.equals(1 << i, a ~/ b);
-  }
-}
diff --git a/tests/language/library1.dart b/tests/language/library1.dart
deleted file mode 100644
index 96cdd1b..0000000
--- a/tests/language/library1.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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 library1.dart;
-
-var foo;
-
-bar() => "library1.dart bar()";
-
-baz() => "library1.dart baz()";
-
-var bay;
-
-typedef int bax(int a, int b);
-
-class baw {}
diff --git a/tests/language/library10.dart b/tests/language/library10.dart
deleted file mode 100644
index 8d2c7b5..0000000
--- a/tests/language/library10.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2011, 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 library10.dart;
-
-import "library11.dart" as lib11;
-import "package:expect/expect.dart";
-
-class Library10 {
-  Library10(this.fld);
-  func() {
-    return 2;
-  }
-
-  var fld;
-  static static_func() {
-    var result = 0;
-    var obj = new lib11.Library11(4);
-    result = obj.fld;
-    Expect.equals(4, result);
-    result += obj.func();
-    Expect.equals(7, result);
-    result += lib11.Library11.static_func();
-    Expect.equals(9, result);
-    result += lib11.Library11.static_fld;
-    Expect.equals(10, result);
-    Expect.equals(100, lib11.top_level11);
-    Expect.equals(200, lib11.top_level_func11());
-    return 3;
-  }
-
-  static var static_fld = 4;
-}
-
-const int top_level10 = 10;
-top_level_func10() {
-  return 20;
-}
diff --git a/tests/language/library11.dart b/tests/language/library11.dart
deleted file mode 100644
index 30dfbf2..0000000
--- a/tests/language/library11.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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 library11.dart;
-
-class Library11 {
-  Library11(this.fld);
-  Library11.namedConstructor(this.fld);
-  func() {
-    return 3;
-  }
-
-  var fld;
-  static static_func() {
-    return 2;
-  }
-
-  static var static_fld = 1;
-}
-
-class Library111<T> {
-  Library111.namedConstructor(T this.fld);
-  T fld;
-}
-
-const int top_level11 = 100;
-top_level_func11() {
-  return 200;
-}
diff --git a/tests/language/library12.dart b/tests/language/library12.dart
deleted file mode 100644
index 1eeaa0e..0000000
--- a/tests/language/library12.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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.
-//
-
-library library12.dart;
-
-import 'package:expect/expect.dart';
-
-import "library11.dart";
-
-class Library12 {
-  Library12(this.fld);
-  Library12.other(fld, multiplier) {
-    this.fld = fld * multiplier;
-  }
-  func() {
-    return 2;
-  }
-
-  var fld;
-  static static_func() {
-    var result = 0;
-    var obj = new Library11(4);
-    result = obj.fld;
-    Expect.equals(4, result);
-    result += obj.func();
-    Expect.equals(7, result);
-    result += Library11.static_func();
-    Expect.equals(9, result);
-    result += Library11.static_fld;
-    Expect.equals(10, result);
-    Expect.equals(100, top_level11);
-    Expect.equals(200, top_level_func11());
-    return 3;
-  }
-
-  static var static_fld = 4;
-}
-
-abstract class Library12Interface {
-  Library12 addObjects(Library12 value1, Library12 value2);
-}
-
-const int top_level12 = 10;
-top_level_func12() {
-  return 20;
-}
diff --git a/tests/language/library1_lib.dart b/tests/language/library1_lib.dart
deleted file mode 100644
index c425d625..0000000
--- a/tests/language/library1_lib.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of Library1Lib;
-
-class A {
-  A() {}
-  String foo() {
-    return "foo-rty two";
-  }
-}
diff --git a/tests/language/library1_lib.lib b/tests/language/library1_lib.lib
deleted file mode 100644
index c675668..0000000
--- a/tests/language/library1_lib.lib
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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 Library1Lib;
-
-part "library1_lib.dart";
diff --git a/tests/language/library1_test.dart b/tests/language/library1_test.dart
deleted file mode 100644
index 0f9f479..0000000
--- a/tests/language/library1_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing libraries.
-
-library Library1Test.dart;
-
-import "package:expect/expect.dart";
-import "library1_lib.lib";
-
-main() {
-  Library1Test.testMain();
-}
-
-class Library1Test {
-  static testMain() {
-    var a = new A();
-    String s = a.foo();
-    Expect.equals(s, "foo-rty two");
-  }
-}
diff --git a/tests/language/library2.dart b/tests/language/library2.dart
deleted file mode 100644
index 5bdf267..0000000
--- a/tests/language/library2.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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 library2.dart;
-
-var foo;
-var foo1 = 0;
-
-bar() => "library2.dart bar()";
-
-var baz;
-
-bay() => "library2.dart bay()";
-
-typedef double bax(int a, int b);
-
-var baw;
diff --git a/tests/language/library3.dart b/tests/language/library3.dart
deleted file mode 100644
index 9305f1e..0000000
--- a/tests/language/library3.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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 library3.dart;
-
-import "library2.dart"; // defines "foo" and "foo1".
diff --git a/tests/language/library4.dart b/tests/language/library4.dart
deleted file mode 100644
index 0571c73..0000000
--- a/tests/language/library4.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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 library4.dart;
-
-import "library2.dart"; // defines "foo" and "foo1".
-
-var foo;
-var foo1 = 0;
diff --git a/tests/language/library5_test.dart b/tests/language/library5_test.dart
deleted file mode 100644
index ca6919d..0000000
--- a/tests/language/library5_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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 Library5Test.dart;
-
-import "package:expect/expect.dart";
-import "library5a.dart" as lib5a;
-import "library5b.dart" as lib5b;
-
-int foo(lib5a.Fun f) {
-  return f();
-}
-
-int bar(lib5b.Fun f) {
-  return f(42);
-}
-
-main() {
-  Expect.equals(41, foo(() => 41));
-  Expect.equals(42, bar((x) => x));
-}
diff --git a/tests/language/library5a.dart b/tests/language/library5a.dart
deleted file mode 100644
index af5ba9c..0000000
--- a/tests/language/library5a.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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 Library5a.dart;
-
-typedef int Fun();
diff --git a/tests/language/library5b.dart b/tests/language/library5b.dart
deleted file mode 100644
index ef3e303..0000000
--- a/tests/language/library5b.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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 Library5b.dart;
-
-typedef int Fun(x);
diff --git a/tests/language/library6.dart b/tests/language/library6.dart
deleted file mode 100644
index 7f4ab4b..0000000
--- a/tests/language/library6.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-// This tests that it is a compile-time error to both import a library
-// that defines a function type alias and to have a local definition for
-// another function type alias with the same name.
-// This name conflict is considered an error even if Fun is never referred to.
-
-library Library6NegativeTest.dart;
-
-import "library5a.dart"; // Defines function type alias Fun
-
-typedef int Fun(); // Does not conflict with definition of Fun from library5a
-
-main() {}
diff --git a/tests/language/library_a.dart b/tests/language/library_a.dart
deleted file mode 100644
index e70b3aa..0000000
--- a/tests/language/library_a.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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 libraryA.dart;
-
-import "library_c.dart";
-
-var fooA = fooC;
diff --git a/tests/language/library_ambiguous_test.dart b/tests/language/library_ambiguous_test.dart
deleted file mode 100644
index 5cf10b5..0000000
--- a/tests/language/library_ambiguous_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// This test should fail to load because we are importing two libraries
-// which define the same top level name foo, and we are referring to the name.
-
-import "library1.dart"; // Defines top level variable 'foo'
-import "library2.dart"; // Defines top level variable 'foo'
-
-class X
-extends baw //  //# 05: compile-time error
-{}
-
-main() {
-  print(foo); // //# 00: runtime error
-  print(bar()); // //# 01: runtime error
-  print(baz()); // //# 02: runtime error
-  print(bay()); // //# 03: runtime error
-  print(main is bax); // //# 04: static type warning, runtime error
-  var x = new X(); // //# 05: continued
-  print("No error expected if ambiguous definitions are not used.");
-}
diff --git a/tests/language/library_b.dart b/tests/language/library_b.dart
deleted file mode 100644
index 3cf954f..0000000
--- a/tests/language/library_b.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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 libraryB.dart;
-
-import "library_c.dart";
-
-var fooB = fooC;
diff --git a/tests/language/library_c.dart b/tests/language/library_c.dart
deleted file mode 100644
index fcf3555..0000000
--- a/tests/language/library_c.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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 libraryC.dart;
-
-var fooC = 10;
diff --git a/tests/language/library_d.dart b/tests/language/library_d.dart
deleted file mode 100644
index fc1dd1b..0000000
--- a/tests/language/library_d.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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 libraryD.dart;
-
-import "library_f.dart";
-
-var fooD = fooC;
diff --git a/tests/language/library_e.dart b/tests/language/library_e.dart
deleted file mode 100644
index 41ff146..0000000
--- a/tests/language/library_e.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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 libraryE.dart;
-
-import "library_c.dart";
-import "library_f.dart";
-
-var fooE = 0;
diff --git a/tests/language/library_env_test.dart b/tests/language/library_env_test.dart
deleted file mode 100644
index 540e375..0000000
--- a/tests/language/library_env_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2015, 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';
-
-main() {
-  const NOT_PRESENT = false;
-
-  Expect.isTrue(const bool.fromEnvironment("dart.library.async"));
-  Expect.isTrue(const bool.fromEnvironment("dart.library.collection"));
-  Expect.isTrue(const bool.fromEnvironment("dart.library.convert"));
-  Expect.isTrue(const bool.fromEnvironment("dart.library.core"));
-  Expect.isTrue(const bool.fromEnvironment("dart.library.typed_data"));
-  Expect.isTrue(const bool.fromEnvironment("dart.library.developer"));
-
-  // Internal libraries should not be exposed.
-  Expect.equals(
-      NOT_PRESENT,
-      const bool.fromEnvironment("dart.library._internal",
-          defaultValue: NOT_PRESENT));
-
-  bool hasHtmlSupport;
-  hasHtmlSupport = true; //  //# has_html_support: ok
-  hasHtmlSupport = false; // //# has_no_html_support: ok
-
-  if (hasHtmlSupport != null) {
-    bool expectedResult = hasHtmlSupport ? true : NOT_PRESENT;
-
-    Expect.equals(
-        expectedResult,
-        const bool.fromEnvironment("dart.library.html",
-            defaultValue: NOT_PRESENT));
-    Expect.equals(
-        expectedResult,
-        const bool.fromEnvironment("dart.library.indexed_db",
-            defaultValue: NOT_PRESENT));
-    Expect.equals(
-        expectedResult,
-        const bool.fromEnvironment("dart.library.svg",
-            defaultValue: NOT_PRESENT));
-    Expect.equals(
-        expectedResult,
-        const bool.fromEnvironment("dart.library.web_audio",
-            defaultValue: NOT_PRESENT));
-    Expect.equals(
-        expectedResult,
-        const bool.fromEnvironment("dart.library.web_gl",
-            defaultValue: NOT_PRESENT));
-    Expect.equals(
-        expectedResult,
-        const bool.fromEnvironment("dart.library.web_sql",
-            defaultValue: NOT_PRESENT));
-  }
-
-  bool hasIoSupport;
-  hasIoSupport = true; //  //# has_io_support: ok
-  hasIoSupport = false; // //# has_no_io_support: ok
-
-  if (hasIoSupport != null) {
-    // Dartium overrides 'dart.library.io' to return "false".
-    // We don't test for the non-existence, but just make sure that
-    // dart.library.io is not set to true.
-    Expect.equals(hasIoSupport,
-        const bool.fromEnvironment("dart.library.io", defaultValue: false));
-  }
-
-  bool hasMirrorSupport;
-  hasMirrorSupport = true; //  //# has_mirror_support: ok
-  hasMirrorSupport = false; // //# has_no_mirror_support: ok
-
-  if (hasMirrorSupport != null) {
-    bool expectedResult = hasMirrorSupport ? true : NOT_PRESENT;
-
-    Expect.equals(
-        expectedResult,
-        const bool.fromEnvironment("dart.library.mirrors",
-            defaultValue: NOT_PRESENT));
-  }
-
-  Expect.equals(
-      NOT_PRESENT,
-      const bool.fromEnvironment("dart.library.XYZ",
-          defaultValue: NOT_PRESENT));
-  Expect.equals(
-      NOT_PRESENT,
-      const bool.fromEnvironment("dart.library.Collection",
-          defaultValue: NOT_PRESENT));
-  Expect.equals(
-      NOT_PRESENT,
-      const bool.fromEnvironment("dart.library.converT",
-          defaultValue: NOT_PRESENT));
-  Expect.equals(NOT_PRESENT,
-      const bool.fromEnvironment("dart.library.", defaultValue: NOT_PRESENT));
-  Expect.equals(
-      NOT_PRESENT,
-      const bool.fromEnvironment("dart.library.core ",
-          defaultValue: NOT_PRESENT));
-}
diff --git a/tests/language/library_f.dart b/tests/language/library_f.dart
deleted file mode 100644
index f73e3cb..0000000
--- a/tests/language/library_f.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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 libraryF.dart;
-
-var fooC = 10;
diff --git a/tests/language/library_juxtaposition_lib.dart b/tests/language/library_juxtaposition_lib.dart
deleted file mode 100644
index 93f6691..0000000
--- a/tests/language/library_juxtaposition_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-library lib;
-
-part "library_" "juxtaposition_" "part.dart";
diff --git a/tests/language/library_juxtaposition_part.dart b/tests/language/library_juxtaposition_part.dart
deleted file mode 100644
index 708c854..0000000
--- a/tests/language/library_juxtaposition_part.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-part of lib;
-
-const c = 47;
diff --git a/tests/language/library_juxtaposition_test.dart b/tests/language/library_juxtaposition_test.dart
deleted file mode 100644
index aad08ac..0000000
--- a/tests/language/library_juxtaposition_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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";
-import "library_" "juxtaposition_" "lib.dart";
-export "library_" "juxtaposition_" "lib.dart";
-
-main() {
-  Expect.equals(c, 47);
-}
diff --git a/tests/language/library_negative_test.dart b/tests/language/library_negative_test.dart
deleted file mode 100644
index e15b159..0000000
--- a/tests/language/library_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// This test should fail to load because the app file references a
-// library spec file that does not exist.
-
-library LibraryNegativeTest.dart;
-
-import "nonexisting_library.lib";
-
-main(args) {
-  LibraryNegativeTest.testMain(args);
-}
-
-class LibraryNegativeTest {
-  static testMain() {
-    print("Er, hello world? This should not be printed!");
-  }
-}
-
-main() {
-  LibraryNegativeTest.testMain();
-}
diff --git a/tests/language/library_prefixes.dart b/tests/language/library_prefixes.dart
deleted file mode 100644
index 8b36227..0000000
--- a/tests/language/library_prefixes.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of LibraryPrefixes.lib;
-
-class LibraryPrefixes {
-  static void main(var expectEquals) {
-    var a = Constants.PI;
-    var b = other.Constants.PI;
-    expectEquals(3.14, a);
-    expectEquals(3.14, b);
-
-    expectEquals(1, Constants.foo);
-    expectEquals(2, other.Constants.foo);
-
-    expectEquals(-1, A.y);
-    expectEquals(0, other.A.y);
-
-    expectEquals(1, new A().x);
-    expectEquals(2, new other.A().x);
-
-    expectEquals(3, new A.named().x);
-    expectEquals(4, new other.A.named().x);
-
-    expectEquals(3, new A.fac().x);
-    expectEquals(4, new other.A.fac().x);
-
-    expectEquals(1, new B().x);
-    expectEquals(2, new other.B().x);
-
-    expectEquals(8, new B.named().x);
-    expectEquals(13, new other.B.named().x);
-
-    expectEquals(8, new B.fac().x);
-    expectEquals(13, new other.B.fac().x);
-
-    expectEquals(1, const C().x);
-    expectEquals(2, const other.C().x);
-
-    expectEquals(3, const C.named().x);
-    expectEquals(4, const other.C.named().x);
-
-    expectEquals(3, new C.fac().x);
-    expectEquals(4, new other.C.fac().x);
-
-    expectEquals(1, const D().x);
-    expectEquals(2, const other.D().x);
-
-    expectEquals(8, const D.named().x);
-    expectEquals(13, const other.D.named().x);
-
-    expectEquals(8, new D.fac().x);
-    expectEquals(13, new other.D.fac().x);
-
-    expectEquals(0, E.foo());
-    expectEquals(3, other.E.foo());
-
-    expectEquals(1, new E().bar());
-    expectEquals(4, new other.E().bar());
-
-    expectEquals(9, new E().toto(7)());
-    expectEquals(16, new other.E().toto(11)());
-
-    expectEquals(111, (new E.fun(100).f)());
-    expectEquals(1313, (new other.E.fun(1300).f)());
-
-    expectEquals(999, E.fooo(900)());
-    expectEquals(2048, other.E.fooo(1024)());
-  }
-}
diff --git a/tests/language/library_prefixes.lib b/tests/language/library_prefixes.lib
deleted file mode 100644
index 27165b7..0000000
--- a/tests/language/library_prefixes.lib
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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 LibraryPrefixes.lib;
-
-import "library_prefixes_test1.lib";
-import "library_prefixes_test2.lib" as other;
-part "library_prefixes.dart";
diff --git a/tests/language/library_prefixes_test.dart b/tests/language/library_prefixes_test.dart
deleted file mode 100644
index a4f48f3..0000000
--- a/tests/language/library_prefixes_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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 LibraryPrefixesTest.dart;
-
-import "package:expect/expect.dart";
-import "library_prefixes.lib";
-
-class LibraryPrefixesTest {
-  static testMain() {
-    LibraryPrefixes.main((a, b) {
-      Expect.equals(a, b);
-    });
-  }
-}
-
-main() {
-  LibraryPrefixesTest.testMain();
-}
diff --git a/tests/language/library_prefixes_test1.dart b/tests/language/library_prefixes_test1.dart
deleted file mode 100644
index 8169a9c..0000000
--- a/tests/language/library_prefixes_test1.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of LibraryPrefixesTest1.lib;
-
-class Constants {
-  static const PI = 3.14;
-  static const foo = 1;
-}
-
-class A {
-  static const y = -1;
-  int x;
-  A() : x = 1 {}
-  A.named() : x = 3 {}
-  A.superC(x) : x = x + 7 {}
-  factory A.fac() {
-    return new A.named();
-  }
-}
-
-class B extends A {
-  B() : super() {}
-  B.named() : super.superC(1) {}
-  factory B.fac() {
-    return new B.named();
-  }
-}
-
-class C {
-  final int x;
-  const C() : x = 1;
-  const C.named() : x = 3;
-  const C.superC(x) : x = x + 7;
-  factory C.fac() {
-    return const C.named();
-  }
-}
-
-class D extends C {
-  const D() : super();
-  const D.named() : super.superC(1);
-  factory D.fac() {
-    return const D.named();
-  }
-}
-
-class E {
-  var f;
-  E() {}
-  E.fun(x)
-      : f = (() {
-          return x + 11;
-        }) {}
-  static foo() {
-    return 0;
-  }
-
-  static fooo(x) {
-    return () {
-      return x + 99;
-    };
-  }
-
-  bar() {
-    return 1;
-  }
-
-  toto(x) {
-    return () {
-      return x + 2;
-    };
-  }
-}
diff --git a/tests/language/library_prefixes_test1.lib b/tests/language/library_prefixes_test1.lib
deleted file mode 100644
index 8767100..0000000
--- a/tests/language/library_prefixes_test1.lib
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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 LibraryPrefixesTest1.lib;
-
-part "library_prefixes_test1.dart";
diff --git a/tests/language/library_prefixes_test2.dart b/tests/language/library_prefixes_test2.dart
deleted file mode 100644
index 8197539..0000000
--- a/tests/language/library_prefixes_test2.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of LibraryPrefixesTest2.lib;
-
-class Constants {
-  static const PI = 3.14;
-  static const foo = 2;
-}
-
-class A {
-  static const y = 0;
-  int x;
-  A() : x = 2 {}
-  A.named() : x = 4 {}
-  A.superC(x) : x = x + 11 {}
-  factory A.fac() {
-    return new A.named();
-  }
-}
-
-class B extends A {
-  B() : super() {}
-  B.named() : super.superC(2) {}
-  factory B.fac() {
-    return new B.named();
-  }
-}
-
-class C {
-  final int x;
-  const C() : x = 2;
-  const C.named() : x = 4;
-  const C.superC(x) : x = x + 11;
-  factory C.fac() {
-    return const C.named();
-  }
-}
-
-class D extends C {
-  const D() : super();
-  const D.named() : super.superC(2);
-  factory D.fac() {
-    return const D.named();
-  }
-}
-
-class E {
-  var f;
-  E() {}
-  E.fun(x)
-      : f = (() {
-          return x + 13;
-        }) {}
-  static foo() {
-    return 3;
-  }
-
-  static fooo(x) {
-    return () {
-      return x + 1024;
-    };
-  }
-
-  bar() {
-    return 4;
-  }
-
-  toto(x) {
-    return () {
-      return x + 5;
-    };
-  }
-}
diff --git a/tests/language/library_prefixes_test2.lib b/tests/language/library_prefixes_test2.lib
deleted file mode 100644
index b6e77cf..0000000
--- a/tests/language/library_prefixes_test2.lib
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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 LibraryPrefixesTest2.lib;
-
-part "library_prefixes_test2.dart";
-
diff --git a/tests/language/library_private_in_constructor_a.dart b/tests/language/library_private_in_constructor_a.dart
deleted file mode 100644
index ba67fcd..0000000
--- a/tests/language/library_private_in_constructor_a.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-library LibraryPrivateInConstructorA;
-
-class PrivateA {
-  const PrivateA();
-  final _val = 499;
-}
-
-var fooA = const PrivateA();
-
-class A {
-  var x;
-  A() : this.x = fooA._val;
-}
diff --git a/tests/language/library_private_in_constructor_b.dart b/tests/language/library_private_in_constructor_b.dart
deleted file mode 100644
index 06ca0bb..0000000
--- a/tests/language/library_private_in_constructor_b.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-library LibraryPrivateInConstructorB;
-
-import "library_private_in_constructor_a.dart";
-
-class PrivateB {
-  const PrivateB();
-  final _val = 42;
-}
-
-var fooB = const PrivateB();
-
-class B extends A {
-  var y;
-  B() : this.y = fooB._val;
-}
diff --git a/tests/language/library_private_in_constructor_test.dart b/tests/language/library_private_in_constructor_test.dart
deleted file mode 100644
index 586e7c2..0000000
--- a/tests/language/library_private_in_constructor_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-library LibraryPrivateInConstructor;
-
-import "package:expect/expect.dart";
-import "library_private_in_constructor_a.dart";
-import "library_private_in_constructor_b.dart";
-
-main() {
-  var b = new B();
-  Expect.equals(499, b.x);
-  Expect.equals(42, b.y);
-}
diff --git a/tests/language/library_same_name_used_lib1.dart b/tests/language/library_same_name_used_lib1.dart
deleted file mode 100644
index c2fdbcc..0000000
--- a/tests/language/library_same_name_used_lib1.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-library lib1;
-
-import 'library_same_name_used_lib2.dart' as lib2;
-
-abstract class X {}
-
-X makeX() {
-  return new lib2.X();
-}
diff --git a/tests/language/library_same_name_used_lib2.dart b/tests/language/library_same_name_used_lib2.dart
deleted file mode 100644
index 1078737..0000000
--- a/tests/language/library_same_name_used_lib2.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-library lib2;
-
-import 'library_same_name_used_lib1.dart' as lib1; // for abstract class X.
-
-class X implements lib1.X {
-  X();
-  toString() => 'lib2.X';
-}
diff --git a/tests/language/library_same_name_used_test.dart b/tests/language/library_same_name_used_test.dart
deleted file mode 100644
index ee743b2..0000000
--- a/tests/language/library_same_name_used_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-// 'X' is defined as an abstract class in lib1 and a class implementing that
-// abstract class in lib2.  Use of import prefixes should allow this.
-
-library main;
-
-import "package:expect/expect.dart";
-import "library_same_name_used_lib1.dart";
-
-main() {
-  var x = makeX();
-  Expect.equals('lib2.X', '$x');
-}
diff --git a/tests/language/licm2_test.dart b/tests/language/licm2_test.dart
deleted file mode 100644
index 9e82949..0000000
--- a/tests/language/licm2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a loop invariant code motion optimization does not try to
-// hoist instructions that may throw.
-
-import "package:expect/expect.dart";
-
-var a = 42;
-var b;
-
-main() {
-  Expect.throws(() {
-    while (true) {
-      a = 54;
-      b.length;
-    }
-  });
-  b = [];
-  Expect.equals(54, a);
-}
diff --git a/tests/language/licm3_test.dart b/tests/language/licm3_test.dart
deleted file mode 100644
index c10a493..0000000
--- a/tests/language/licm3_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a loop invariant code motion optimization correctly hoists
-// instructions that may cause deoptimization.
-
-import "package:expect/expect.dart";
-
-foo(o) {
-  var r = 0;
-  for (var i = 0; i < 3; i++) {
-    r += o.z;
-  }
-  return r;
-}
-
-class A {
-  var z = 3;
-}
-
-main() {
-  var a = new A();
-  for (var i = 0; i < 10000; i++) foo(a);
-  Expect.equals(9, foo(a));
-  Expect.throws(() => foo(42));
-  for (var i = 0; i < 10000; i++) foo(a);
-  Expect.throws(() => foo(42));
-}
diff --git a/tests/language/licm_test.dart b/tests/language/licm_test.dart
deleted file mode 100644
index 002c5d9..0000000
--- a/tests/language/licm_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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";
-
-var sum = 0;
-var foo = 0;
-var bar = 1;
-
-test() {
-  while (true) {
-    if (0 == foo) {
-      sum += 2;
-      if (1 == bar) {
-        sum += 3;
-        break;
-      }
-      break;
-    }
-  }
-}
-
-main() {
-  test();
-  Expect.equals(5, sum);
-}
diff --git a/tests/language/list_double_index_in_loop2_test.dart b/tests/language/list_double_index_in_loop2_test.dart
deleted file mode 100644
index 5a4454d..0000000
--- a/tests/language/list_double_index_in_loop2_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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.
-// Dart test program for testing arrays.
-
-import "package:expect/expect.dart";
-
-bar() => true;
-
-tata() => 1.5;
-
-// The type propagation in Dart2Js wrongly took the intersection of all incoming
-// types in a loop-phi. In this case the back-edge brought type 'number' which,
-// combined with 'integer' (i = 0) was narrowed to 'integer'. As a result no
-// check was inserted for the list access.
-foo(a) {
-  var i;
-  if (bar()) {
-    // t's desired type is conflicting. Once it is used as array receiver. And
-    // once as integer. The backward propagation thus can't decide.
-    // The forward declaration, however, will assign type num.
-    var t = 0 + tata();
-    i = t;
-    if (!bar()) t[0];
-  } else {
-    i = 0;
-  }
-  for (int j = 0; j < 1; j++) {
-    // The phi, combining the two 'i's must reach the conclusion that i is of
-    // type num and therefore needs a check before accessing the array.
-    a[i];
-  }
-}
-
-main() {
-  Expect.throws(() => foo([1, 2]));
-}
diff --git a/tests/language/list_double_index_in_loop_test.dart b/tests/language/list_double_index_in_loop_test.dart
deleted file mode 100644
index 708fb4b..0000000
--- a/tests/language/list_double_index_in_loop_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-// Dart test program for testing arrays.
-
-import "package:expect/expect.dart";
-
-bar() => true;
-
-// The type propagation in Dart2Js wrongly took the intersection of all incoming
-// types in a loop-phi. In this case the back-edge brought type 'number' which,
-// combined with 'integer' (i = 0) was narrowed to 'integer'. As a result no
-// check was inserted for the list access.
-foo(a) {
-  var i = 0;
-  while (true) {
-    if (i > 1) return a[i];
-    if (bar()) {
-      // Adding a double guarantees a double result. Therefore guard by an if.
-      i = i + 1.5;
-    }
-  }
-}
-
-main() {
-  Expect.throws(() => foo([1, 2]));
-}
diff --git a/tests/language/list_in_closure_test.dart b/tests/language/list_in_closure_test.dart
deleted file mode 100644
index 5ac5d99..0000000
--- a/tests/language/list_in_closure_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to see aborting closure
-// bodies as aborting their enclosing element.
-
-import "package:expect/expect.dart";
-
-main() {
-  var c = () {
-    throw 42;
-  };
-  () {
-    // dart2js would not seen this initialization and therefore think
-    // that the argument passed to a is a list of nulls.
-    var a = [42];
-    foo(a);
-  }();
-}
-
-foo(arg) {
-  Expect.isTrue(arg[0] == 42);
-}
diff --git a/tests/language/list_is_test.dart b/tests/language/list_is_test.dart
deleted file mode 100644
index 8df30bd..0000000
--- a/tests/language/list_is_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-class A<T> {
-  bar() => new List<T>();
-}
-
-main() {
-  check(new List(), true, true, true);
-  check(new List<int>(), true, true, false);
-  check(new A().bar(), true, true, true);
-  check(new A<double>().bar(), true, false, true);
-  check(new Object(), false, false, false);
-}
-
-check(val, expectList, expectListInt, expectListDouble) {
-  Expect.equals(expectList, val is List);
-  Expect.equals(expectListInt, val is List<int>);
-  Expect.equals(expectListDouble, val is List<double>);
-}
diff --git a/tests/language/list_length_tracer_test.dart b/tests/language/list_length_tracer_test.dart
deleted file mode 100644
index f8c1070..0000000
--- a/tests/language/list_length_tracer_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that dart2js' optimization on list length does not fold a
-// length getter to a constant if the receiver can be null.
-
-import "package:expect/expect.dart";
-
-var a = 42;
-var b;
-
-main() {
-  Expect.throws(() => b.length);
-  b = const [42];
-}
diff --git a/tests/language/list_literal1_test.dart b/tests/language/list_literal1_test.dart
deleted file mode 100644
index 726177a..0000000
--- a/tests/language/list_literal1_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// When type checks are enabled, a type mismatch in a list literal is a compile-time error
-
-main() {
-  var m = const
-      <String> // //# 01: static type warning, checked mode compile-time error
-      [0, 1];
-}
diff --git a/tests/language/list_literal2_negative_test.dart b/tests/language/list_literal2_negative_test.dart
deleted file mode 100644
index 6ff588f..0000000
--- a/tests/language/list_literal2_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Dart test program const map literals.
-
-class ListLiteral2NegativeTest<T> {
-  test() {
-    try {
-      var m = const <T>[0, 1]; // Type parameter is not allowed with const.
-    } on TypeError catch (error) {}
-  }
-}
-
-main() {
-  var t = new ListLiteral2NegativeTest<int>();
-  t.test();
-}
diff --git a/tests/language/list_literal2_test.dart b/tests/language/list_literal2_test.dart
deleted file mode 100644
index a21113e..0000000
--- a/tests/language/list_literal2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test program for array literals.
-
-import "package:expect/expect.dart";
-
-class ArrayLiteral2Test {
-  static const int LAUREL = 1965;
-  static const int HARDY = 1957;
-
-  static const LUCKY_DOG = const <int>[1919, 1921];
-  static const MUSIC_BOX = const [LAUREL, HARDY];
-
-  static testMain() {
-    Expect.equals(2, LUCKY_DOG.length);
-    Expect.equals(2, MUSIC_BOX.length);
-
-    Expect.equals(1919, LUCKY_DOG[0]);
-    Expect.equals(1921, LUCKY_DOG[1]);
-
-    Expect.equals(LAUREL, MUSIC_BOX[0]);
-    Expect.equals(HARDY, MUSIC_BOX[1]);
-  }
-}
-
-main() {
-  ArrayLiteral2Test.testMain();
-}
diff --git a/tests/language/list_literal3_test.dart b/tests/language/list_literal3_test.dart
deleted file mode 100644
index f5dbd1d..0000000
--- a/tests/language/list_literal3_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that arrays from const array literals are immutable.
-
-import "package:expect/expect.dart";
-
-class ListLiteral3Test {
-  static const List<String> canonicalJoke = const ["knock", "knock"];
-
-  static testMain() {
-    List<String> joke = const ["knock", "knock"];
-    // Elements of canonical lists are canonicalized.
-    Expect.identical(joke, canonicalJoke);
-    Expect.identical(joke[0], joke[1]);
-    Expect.identical(joke[0], canonicalJoke[0]);
-
-    // Lists from literals are immutable.
-    Expect.throws(() {
-      joke[0] = "sock";
-    }, (e) => e is UnsupportedError);
-    Expect.identical(joke[0], joke[1]);
-
-    // Make sure lists allocated at runtime are mutable and are
-    // not canonicalized.
-    List<String> lame_joke = ["knock", "knock"]; // Invokes operator new.
-    Expect.identical(joke[1], lame_joke[1]);
-    // Operator new creates a mutable list.
-    Expect.equals(false, identical(joke, lame_joke));
-    lame_joke[1] = "who";
-    Expect.identical("who", lame_joke[1]);
-
-    // Elements of canonical lists are canonicalized.
-    List<List<int>> a = const <List<int>>[
-      const [1, 2],
-      const [1, 2]
-    ];
-    Expect.identical(a[0], a[1]);
-    Expect.identical(a[0][0], a[1][0]);
-    Expect.throws(() {
-      a[0][0] = 42;
-    }, (e) => e is UnsupportedError);
-
-    List<List<double>> b = const [
-      const [1.0, 2.0],
-      const [1.0, 2.0]
-    ];
-    Expect.identical(b[0], b[1]);
-    Expect.equals(true, b[0][0] == 1.0);
-    Expect.identical(b[0][0], b[1][0]);
-    Expect.throws(() {
-      b[0][0] = 42.0;
-    }, (e) => e is UnsupportedError);
-  }
-}
-
-main() {
-  ListLiteral3Test.testMain();
-}
diff --git a/tests/language/list_literal4_test.dart b/tests/language/list_literal4_test.dart
deleted file mode 100644
index ea5f785..0000000
--- a/tests/language/list_literal4_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Dart test program testing type checks in list literals.
-
-import "package:expect/expect.dart";
-
-class ListLiteral4Test<T> {
-  test() {
-    int result = 0;
-    try {
-      var m = <String>[0, 1]; // 0 is not a String.
-    } on TypeError catch (error) {
-      result += 1;
-    }
-    try {
-      var m = <int>[0, 1];
-      m["0"] = 1; // "0" is not an int.
-    } on TypeError catch (error) {
-      result += 10;
-    }
-    try {
-      var m = <T>["a", "b"]; // "b" is not an int.
-    } on TypeError catch (error) {
-      result += 100;
-    }
-    try {
-      var m = <T>[0, 1]; // OK.
-    } on TypeError catch (error) {
-      result += 1000;
-    }
-    try {
-      var m = <T>[0, 1];
-      m["0"] = 1; // "0" is not an int.
-    } on TypeError catch (error) {
-      result += 10000;
-    }
-    try {
-      var m = const <int>[0, 1];
-      m["0"] = 1; // "0" is not an int.
-    } on TypeError catch (error) {
-      result += 100000;
-    }
-    try {
-      var m = <T>[0, 1]; // OK. Tested above.
-      List<String> ls = m; // m is a List<int>, not a List<String>.
-    } on TypeError catch (error) {
-      result += 1000000;
-    }
-
-    return result;
-  }
-}
-
-main() {
-  var t = new ListLiteral4Test<int>();
-  Expect.equals(1110111, t.test());
-}
diff --git a/tests/language/list_literal_negative_test.dart b/tests/language/list_literal_negative_test.dart
deleted file mode 100644
index 4c9ad6d..0000000
--- a/tests/language/list_literal_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-// Legacy compound literal syntax that should go away.
-
-class ListLiteralNegativeTest {
-
-  static testMain() {
-    var funny = new List<int>[1, 2];
-  }
-}
-
-main() {
-  ListLiteralNegativeTest.testMain();
-}
diff --git a/tests/language/list_literal_syntax_test.dart b/tests/language/list_literal_syntax_test.dart
deleted file mode 100644
index 4e99bcc..0000000
--- a/tests/language/list_literal_syntax_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// 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";
-
-abstract class I {}
-
-void main() {
-  var list;
-  list = <
-      int
-    I //# 00: syntax error
-    , int //# 01: static type warning
-      >[0];
-  Expect.equals(1, list.length);
-
-  list = <
-      int
-    , int //# 02: static type warning
-    , int //# 02: continued
-      >[0];
-  Expect.equals(1, list.length);
-
-  list = <
-      int
-    , int //# 03: static type warning
-    , int //# 03: continued
-    , int //# 03: continued
-      >[0];
-  Expect.equals(1, list.length);
-
-  list =
-    <> //# 04: syntax error
-      [0];
-  Expect.equals(1, list.length);
-
-  list =
-    <<>> //# 05: syntax error
-      [0];
-  Expect.equals(1, list.length);
-
-  list =
-    <<<>>> //# 06: syntax error
-      [0];
-  Expect.equals(1, list.length);
-
-  list =
-    <[]> //# 07: syntax error
-      [0];
-  Expect.equals(1, list.length);
-
-  list = <int>[
-    <int>[
-      <int>[1][0]
-    ][0]
-  ];
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-
-  list = <int>[
-    <List<int>>[
-      [1]
-    ][0][0]
-  ];
-  Expect.equals(1, list.length);
-  Expect.equals(1, list[0]);
-}
diff --git a/tests/language/list_literal_test.dart b/tests/language/list_literal_test.dart
deleted file mode 100644
index 4956f3e..0000000
--- a/tests/language/list_literal_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test program for array literals.
-
-import "package:expect/expect.dart";
-
-class ListLiteralTest {
-  static const LAUREL = 1;
-  static const HARDY = 2;
-
-  static testMain() {
-    var funny = <int>[
-      LAUREL,
-      HARDY,
-    ]; // Check that trailing comma works.
-    Expect.equals(2, funny.length);
-
-    List<int> m = <int>[101, 102, 100 + 3];
-    Expect.equals(3, m.length);
-    Expect.equals(101, m[0]);
-    Expect.equals(103, m[2]);
-
-    var d = m[2] - m[1];
-    Expect.equals(1, d);
-
-    var e2 = [5.1, -55, 555, 5555][2];
-    Expect.equals(555, e2);
-
-    e2 = <num>[5.1, -55, 555, 5555][2];
-    Expect.equals(555, e2);
-
-    e2 = const <num>[5.1, -55, 555, 5555][2];
-    Expect.equals(555, e2);
-
-    e2 = const [
-      5.1,
-      const <num>[-55, 555],
-      5555
-    ][1][1];
-    Expect.equals(555, e2);
-
-    Expect.equals(0, [].length);
-    Expect.equals(0, <String>[].length);
-    Expect.equals(0, const <String>[].length);
-    Expect.equals(0, const [].length);
-
-    e2 = [1, 2.0, 0x03, 2.0e5];
-    Expect.equals(1, e2[0]);
-    Expect.equals(2.0, e2[1]);
-    Expect.equals(3, e2[2]);
-    Expect.equals(200000.0, e2[3]);
-  }
-}
-
-main() {
-  ListLiteralTest.testMain();
-}
diff --git a/tests/language/list_test.dart b/tests/language/list_test.dart
deleted file mode 100644
index 053dcd1..0000000
--- a/tests/language/list_test.dart
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing arrays.
-
-import "package:expect/expect.dart";
-
-class A {}
-
-class B {}
-
-class ListTest {
-  static void TestIterator() {
-    List<int> a = new List<int>(10);
-    int count = 0;
-
-    // Basic iteration over ObjectList.
-    for (int elem in a) {
-      Expect.equals(null, elem);
-      count++;
-    }
-    Expect.equals(10, count);
-
-    // List length is 0.
-    List<int> fa = new List<int>();
-    count = 0;
-    for (int elem in fa) {
-      count++;
-    }
-    Expect.equals(0, count);
-
-    // Iterate over ImmutableList.
-    List<int> ca = const [0, 1, 2, 3, 4, 5];
-    int sum = 0;
-    for (int elem in ca) {
-      sum += elem;
-      fa.add(elem);
-    }
-    Expect.equals(15, sum);
-
-    // Iterate over List.
-    int sum2 = 0;
-    for (int elem in fa) {
-      sum2 += elem;
-    }
-    Expect.equals(sum, sum2);
-  }
-
-  static void testSublistTypeArguments() {
-    final list1 = new List<A>(0).sublist(0);
-    Expect.isTrue(list1 is List<A>);
-    Expect.isTrue(list1 is! List<B>);
-
-    final list2 = new List<A>(0).toList(growable: false);
-    Expect.isTrue(list2 is List<A>);
-    Expect.isTrue(list2 is! List<B>);
-  }
-
-  static void testMain() {
-    int len = 10;
-    List a = new List(len);
-    Expect.equals(true, a is List);
-    Expect.equals(len, a.length);
-    a.forEach((element) {
-      Expect.equals(null, element);
-    });
-    a[1] = 1;
-    Expect.equals(1, a[1]);
-    Expect.throws(() => a[len], (e) => e is RangeError);
-
-    Expect.throws(() {
-      List a = new List(4);
-      a.setRange(1, 2, a, null);
-    });
-
-    Expect.throws(() {
-      List a = new List(4);
-      a.setRange(1, 2, const [1, 2, 3, 4], null);
-    });
-
-    Expect.throws(() {
-      List a = new List(4);
-      a.setRange(10, 11, a, 1);
-    }, (e) => e is RangeError);
-
-    a = new List(4);
-    List b = new List(4);
-    b.setRange(0, 4, a, 0);
-
-    List<int> unsorted = [4, 3, 9, 12, -4, 9];
-    int compare(a, b) {
-      if (a < b) return -1;
-      if (a > b) return 1;
-      return 0;
-    }
-
-    unsorted.sort(compare);
-    Expect.equals(6, unsorted.length);
-    Expect.equals(-4, unsorted[0]);
-    Expect.equals(12, unsorted[unsorted.length - 1]);
-    int compare2(a, b) {
-      if (a < b) return 1;
-      if (a > b) return -1;
-      return 0;
-    }
-
-    unsorted.sort(compare2);
-    Expect.equals(12, unsorted[0]);
-    Expect.equals(-4, unsorted[unsorted.length - 1]);
-    Set<int> t = new Set<int>.from(unsorted);
-    Expect.equals(true, t.contains(9));
-    Expect.equals(true, t.contains(-4));
-    Expect.equals(false, t.contains(-3));
-    Expect.equals(6, unsorted.length);
-    Expect.equals(5, t.length);
-    TestIterator();
-    int element = unsorted[2];
-    Expect.equals(9, element);
-
-    Expect.throws(
-        () => unsorted[2.1], (e) => e is ArgumentError || e is TypeError);
-
-    Expect.throws(() => new List(-1));
-    Expect.throws(() => new List(0x7fffffffffffffff));
-
-    List list = new List();
-    // We cannot write just 'list.removeLast' due to issue 3769.
-    Expect.throws(() => list.removeLast(), (e) => e is RangeError);
-    Expect.equals(0, list.length);
-  }
-}
-
-main() {
-  ListTest.testMain();
-  ListTest.testSublistTypeArguments();
-}
diff --git a/tests/language/list_tracer_call_last_test.dart b/tests/language/list_tracer_call_last_test.dart
deleted file mode 100644
index dbaf136..0000000
--- a/tests/language/list_tracer_call_last_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// dart2js used to fail this test, by inferring that `a.last()`
-// returns the element type of the `a` list.
-
-main() {
-  var a = [() => 123];
-  if (a.last() is! num) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/list_tracer_closure_test.dart b/tests/language/list_tracer_closure_test.dart
deleted file mode 100644
index acb226e..0000000
--- a/tests/language/list_tracer_closure_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js' inferrer: if we closurize a method, we
-// still need to collect the users of the parameters for the trace
-// container pass to work.
-
-main() {
-  var a = new List();
-  a.add;
-  var b = new List();
-  var c = new List(1);
-  b.add(c);
-  b[0][0] = 42;
-  if (c[0] is! int) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/list_tracer_in_list_test.dart b/tests/language/list_tracer_in_list_test.dart
deleted file mode 100644
index 643f8ad..0000000
--- a/tests/language/list_tracer_in_list_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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.
-
-main() {
-  var a = [[]];
-  a[0].add(42);
-  if (a[0].length != 1) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/list_tracer_in_map_test.dart b/tests/language/list_tracer_in_map_test.dart
deleted file mode 100644
index 95290a0..0000000
--- a/tests/language/list_tracer_in_map_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js, whose type inferrer used to not see
-// literal maps as places where a list could escape.
-
-var b = [42];
-var a = {'foo': b};
-
-main() {
-  a['foo'].clear();
-  if (b.length != 0) throw 'Test failed';
-}
diff --git a/tests/language/list_tracer_return_from_tearoff_closure_test.dart b/tests/language/list_tracer_return_from_tearoff_closure_test.dart
deleted file mode 100644
index 47e1bb49..0000000
--- a/tests/language/list_tracer_return_from_tearoff_closure_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js's list tracer, that used to not see a
-// returned value of a method can escape to places where that method
-// is closurized and invoked.
-
-var a = [42];
-
-foo() {
-  return a;
-}
-
-main() {
-  (foo)().clear();
-  if (a.length == 1) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/literal_unary_plus_test.dart b/tests/language/literal_unary_plus_test.dart
deleted file mode 100644
index 8a2530d..0000000
--- a/tests/language/literal_unary_plus_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-// There is no unary plus operator in Dart.
-
-main() {
-  var a = + 1; //      //# 01: syntax error
-  var x = +"foo"; //   //# 02: syntax error
-  var x = + "foo"; //  //# 03: syntax error
-}
diff --git a/tests/language/liveness_test.dart b/tests/language/liveness_test.dart
deleted file mode 100644
index 61e6284..0000000
--- a/tests/language/liveness_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-// Dart test program testing closures.
-
-import "package:expect/expect.dart";
-
-foo(x) {
-  var y = x;
-  for (int i = 0; i < 10; i++) x++;
-  return y;
-}
-
-main() {
-  Expect.equals(499, foo(499));
-}
diff --git a/tests/language/load_indexed_constant_test.dart b/tests/language/load_indexed_constant_test.dart
deleted file mode 100644
index 2038599..0000000
--- a/tests/language/load_indexed_constant_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test constant propagation of load-indexed operations
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals(101, stringIndexedLoad());
-  Expect.equals(102, arrayIndexedLoad());
-  for (int i = 0; i < 20; i++) {
-    stringIndexedLoad();
-    arrayIndexedLoad();
-  }
-  Expect.equals(101, stringIndexedLoad());
-  Expect.equals(102, arrayIndexedLoad());
-}
-
-stringIndexedLoad() => ("Hello").codeUnitAt(1);
-arrayIndexedLoad() => (const [101, 102, 103])[1];
diff --git a/tests/language/local_export_a.dart b/tests/language/local_export_a.dart
deleted file mode 100644
index e9c8819..0000000
--- a/tests/language/local_export_a.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library local_export_a;
-
-export 'local_export_a_export.dart';
-
-class A {
-  method() => 42;
-}
diff --git a/tests/language/local_export_a_export.dart b/tests/language/local_export_a_export.dart
deleted file mode 100644
index 1919d38..0000000
--- a/tests/language/local_export_a_export.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-library local_export_a_export;
-
-int A = 0;
diff --git a/tests/language/local_export_test.dart b/tests/language/local_export_test.dart
deleted file mode 100644
index e79472c..0000000
--- a/tests/language/local_export_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-library localExportTest;
-
-import "package:expect/expect.dart";
-import 'local_export_a.dart';
-
-void main() {
-  Expect.equals(42, new A().method());
-}
diff --git a/tests/language/local_function2_test.dart b/tests/language/local_function2_test.dart
deleted file mode 100644
index cbcade5..0000000
--- a/tests/language/local_function2_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing closures.
-
-import "package:expect/expect.dart";
-
-typedef T F<T>(T t);
-
-class Parameterized<T> {
-  Parameterized() {}
-  T mul3(F f, T t) {
-    return 3 * f(t);
-  }
-
-  T test(T t) {
-    return mul3((T t) {
-      return 3 * t;
-    }, t);
-  }
-}
-
-class LocalFunction2Test {
-  static int f(int n) {
-    int a = 0;
-    var g = (int n) {
-      a += n;
-      return a;
-    };
-    var h = (int n) {
-      a += 10 * n;
-      return a;
-    };
-    return g(n) + h(n);
-  }
-
-  static testMain() {
-    Expect.equals(3 + 33, f(3));
-    Expect.equals(9.0, new Parameterized<double>().test(1.0));
-  }
-}
-
-main() {
-  LocalFunction2Test.testMain();
-}
diff --git a/tests/language/local_function3_test.dart b/tests/language/local_function3_test.dart
deleted file mode 100644
index a1b4023..0000000
--- a/tests/language/local_function3_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing closures.
-
-import "package:expect/expect.dart";
-
-class LocalFunction3Test {
-  static testExceptions() {
-    var f = (int n) {
-      return n + 1;
-    };
-    Expect.equals(true, f is Object);
-    bool exception_caught = false;
-    try {
-      f.xyz(0);
-    } on NoSuchMethodError catch (e) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-    exception_caught = false;
-    String f_string;
-    try {
-      f_string = f.toString();
-    } on NoSuchMethodError catch (e) {
-      exception_caught = true;
-    }
-    Expect.equals(false, exception_caught);
-    Expect.equals(true, f_string.startsWith("Closure"));
-  }
-
-  static testMain() {
-    testExceptions();
-  }
-}
-
-main() {
-  LocalFunction3Test.testMain();
-}
diff --git a/tests/language/local_function_non_equal_test.dart b/tests/language/local_function_non_equal_test.dart
deleted file mode 100644
index 5fbaf57..0000000
--- a/tests/language/local_function_non_equal_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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";
-
-foo() => () => 42;
-bar() {
-  var c = () => 54;
-  return c;
-}
-
-baz() {
-  c() => 68;
-  return c;
-}
-
-main() {
-  var first = foo();
-  var second = foo();
-  Expect.isFalse(identical(first, second));
-  Expect.notEquals(first, second);
-
-  first = bar();
-  second = bar();
-  Expect.isFalse(identical(first, second));
-  Expect.notEquals(first, second);
-
-  first = baz();
-  second = baz();
-  Expect.isFalse(identical(first, second));
-  Expect.notEquals(first, second);
-}
diff --git a/tests/language/local_function_test.dart b/tests/language/local_function_test.dart
deleted file mode 100644
index 05ac410..0000000
--- a/tests/language/local_function_test.dart
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing closures.
-
-import "package:expect/expect.dart";
-
-class LocalFunctionTest {
-  LocalFunctionTest()
-      : field1 = 100,
-        field2_ = 200 {}
-  static int f(int n) {
-    int a = 0;
-    g(int m) {
-      a = 3 * n + m + 1; // Capture parameter n and local a.
-      return a;
-    }
-
-    var b = g(n);
-    return a + b;
-  }
-
-  static int h(int n) {
-    k(int n) {
-      var a = new List(n);
-      var b = new List(n);
-      int i;
-      for (i = 0; i < n; i++) {
-        var j = i;
-        a[i] = () => i; // Captured i is always n.
-        b[i] = () => j; // Captured j varies from 0 to n-1.
-      }
-      var a_sum = 0;
-      var b_sum = 0;
-      for (int i = 0; i < n; i++) {
-        a_sum += a[i]();
-        b_sum += b[i]();
-      }
-      return a_sum + b_sum;
-    }
-
-    return k(n);
-  }
-
-  static int h2(int n) {
-    k(int n) {
-      var a = new List(n);
-      var b = new List(n);
-      for (int i = 0; i < n; i++) {
-        var j = i;
-        a[i] = () => i; // Captured i varies from 0 to n-1.
-        b[i] = () => j; // Captured j varies from 0 to n-1.
-      }
-      var a_sum = 0;
-      var b_sum = 0;
-      for (int i = 0; i < n; i++) {
-        a_sum += a[i]();
-        b_sum += b[i]();
-      }
-      return a_sum + b_sum;
-    }
-
-    return k(n);
-  }
-
-  int field1;
-  int field2_;
-  int get field2 {
-    return field2_;
-  }
-
-  void set field2(int value) {
-    field2_ = value;
-  }
-
-  int method(int n) {
-    incField1() {
-      field1++;
-    }
-
-    incField2() {
-      field2++;
-    }
-
-    for (int i = 0; i < n; i++) {
-      incField1();
-      incField2();
-    }
-    return field1 + field2;
-  }
-
-  int execute(int times, apply(int x)) {
-    for (int i = 0; i < times; i++) {
-      apply(i);
-    }
-    return field1;
-  }
-
-  int testExecute(int n) {
-    execute(n, (int x) {
-      field1 += x;
-    });
-    return field1;
-  }
-
-  static int foo(int n) {
-    return -100; // Wrong foo.
-  }
-
-  static testSelfReference1(int n) {
-    int foo(int n) {
-      if (n == 0) {
-        return 0;
-      } else {
-        return 1 + foo(n - 1); // Local foo, not static foo.
-      }
-    }
-
-    ;
-    return foo(n); // Local foo, not static foo.
-  }
-
-  static void hep(Function f) {
-    f();
-  }
-
-  static testNesting(int n) {
-    var a = new List(n * n);
-    f0() {
-      for (int i = 0; i < n; i++) {
-        int vi = i;
-        f1() {
-          for (int j = 0; j < n; j++) {
-            int vj = j;
-            a[i * n + j] = () => vi * n + vj;
-          }
-        }
-
-        f1();
-      }
-    }
-
-    f0();
-    int result = 0;
-    for (int k = 0; k < n * n; k++) {
-      Expect.equals(k, a[k]());
-      result += a[k]();
-    }
-    return result;
-  }
-
-  static var field5;
-  static var set_field5_func;
-  static testClosureCallStatement(int x) {
-    LocalFunctionTest.set_field5_func = (int n) {
-      field5 = n * n;
-    };
-    (LocalFunctionTest.set_field5_func)(x);
-    Expect.equals(x * x, LocalFunctionTest.field5);
-    return true;
-  }
-
-  static testExceptions() {
-    var f = (int n) => n + 1;
-    Expect.equals(2, f(1));
-    Expect.equals(true, f is Function);
-    Expect.equals(true, f is Object);
-    Expect.equals(true, f.toString().startsWith("Closure"));
-    bool exception_caught = false;
-    try {
-      f(1, 2);
-    } on NoSuchMethodError catch (e) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-    exception_caught = false;
-    try {
-      f();
-    } on NoSuchMethodError catch (e) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-    exception_caught = false;
-    try {
-      f.xyz(0);
-    } on NoSuchMethodError catch (e) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-
-    // Overwrite closure value.
-    f = 3;
-    exception_caught = false;
-    try {
-      f(1);
-    } on NoSuchMethodError catch (e) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-
-    // Do not expect any exceptions to be thrown.
-    var g = ([int n = 1]) => n + 1;
-    Expect.equals(2, g());
-    Expect.equals(3, g(2));
-  }
-
-  static int doThis(int n, int f(int n)) {
-    return f(n);
-  }
-
-  static testMain() {
-    Expect.equals(2 * (3 * 2 + 2 + 1), f(2));
-    Expect.equals(10 * 10 + 10 * 9 / 2, h(10));
-    Expect.equals(90, h2(10));
-    Expect.equals(320, new LocalFunctionTest().method(10));
-    Expect.equals(145, new LocalFunctionTest().testExecute(10));
-    Expect.equals(5, testSelfReference1(5));
-    Expect.equals(24 * 25 / 2, testNesting(5));
-    Expect.equals(true, testClosureCallStatement(7));
-    Expect.equals(99, doThis(10, (n) => n * n - 1));
-    testExceptions();
-  }
-}
-
-main() {
-  LocalFunctionTest.testMain();
-}
diff --git a/tests/language/logical_expression2_test.dart b/tests/language/logical_expression2_test.dart
deleted file mode 100644
index 04a05e94..0000000
--- a/tests/language/logical_expression2_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2014, 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";
-
-// Regression test for issue 17149.
-
-int globalCounter = 0;
-
-void nonInlinedUse(Object object) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) nonInlinedUse(object);
-  if (object is! String) globalCounter++;
-}
-
-int confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) return confuse(x - 1);
-  return x;
-}
-
-main() {
-  var o = ["foo", 499][confuse(1)];
-
-  // The `o is String` check in the rhs of the logical or must not be
-  // propagated to the `if` body.
-  if ((o is num) || (o is String && true)) {
-    nonInlinedUse(o);
-  }
-  Expect.equals(1, globalCounter);
-}
diff --git a/tests/language/logical_expression3_test.dart b/tests/language/logical_expression3_test.dart
deleted file mode 100644
index c207afb..0000000
--- a/tests/language/logical_expression3_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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";
-
-bool nonInlinedNumTypeCheck(Object object) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) {
-    return nonInlinedNumTypeCheck(object);
-  }
-  return object is num;
-}
-
-int confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) return confuse(x - 1);
-  return x;
-}
-
-main() {
-  var o = ["foo", 499][confuse(0)];
-
-  // When the lhs of a logical or fails, it must not assume that all negative is
-  // checks in it, have failed.
-  // Here, the `o is! num` check succeeds, but the length test failed.
-  if ((o is! num && o.length == 4) || (nonInlinedNumTypeCheck(o))) {
-    Expect.fail("Type-check failed");
-  }
-}
diff --git a/tests/language/logical_expression4_test.dart b/tests/language/logical_expression4_test.dart
deleted file mode 100644
index 1442434..0000000
--- a/tests/language/logical_expression4_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2014, 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";
-
-bool nonInlinedNumTypeCheck(Object object) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) {
-    return nonInlinedNumTypeCheck(object);
-  }
-  return object is num;
-}
-
-int confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) return confuse(x - 1);
-  return x;
-}
-
-main() {
-  var o = ["foo", 499][confuse(0)];
-
-  // The is-checks in the '!' must not be propagated to the if-body.
-  // This was a bug in dart2js.
-  if (!(o is num && o is num)) {
-    Expect.isFalse((nonInlinedNumTypeCheck(o)));
-  }
-}
diff --git a/tests/language/logical_expression5_test.dart b/tests/language/logical_expression5_test.dart
deleted file mode 100644
index f918604..0000000
--- a/tests/language/logical_expression5_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, 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';
-
-bool nonInlinedNumTypeCheck(Object object) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) {
-    return nonInlinedNumTypeCheck(object);
-  }
-  return object is num;
-}
-
-bool nonInlinedStringTypeCheck(Object object) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) {
-    return nonInlinedStringTypeCheck(object);
-  }
-  return object is String;
-}
-
-int confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) return confuse(x - 1);
-  return x;
-}
-
-main() {
-  var o = ["foo", 499][confuse(0)];
-
-  // The is-checks in the '!' must not be propagated to the if-body, but
-  // the second is-check should.
-  if (!(o is num) && o is String) {
-    Expect.isFalse((nonInlinedNumTypeCheck(o)));
-    Expect.isTrue((nonInlinedStringTypeCheck(o)));
-  }
-}
diff --git a/tests/language/logical_expression_test.dart b/tests/language/logical_expression_test.dart
deleted file mode 100644
index e3dd195..0000000
--- a/tests/language/logical_expression_test.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2014, 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.
-// Dart test program for testing if statement.
-
-import "package:expect/expect.dart";
-
-// For logical-or conditions dart2js sometimes inlined expressions, leading to
-// completely broken programs.
-
-int globalCounter = 0;
-
-falseWithSideEffect() {
-  bool confuse() => new DateTime.now().millisecondsSinceEpoch == 42;
-
-  var result = confuse();
-
-  // Make it harder to inline.
-  if (result) {
-    try {
-      try {
-        if (confuse()) falseWithSideEffect();
-        if (confuse()) return 499;
-      } catch (e) {
-        rethrow;
-      }
-    } catch (e) {
-      rethrow;
-    }
-  }
-  globalCounter++;
-  return result;
-}
-
-falseWithoutSideEffect() {
-  bool confuse() => new DateTime.now().millisecondsSinceEpoch == 42;
-
-  var result = confuse();
-
-  // Make it harder to inline.
-  if (result) {
-    try {
-      try {
-        if (confuse()) falseWithSideEffect();
-        if (confuse()) return 499;
-      } catch (e) {
-        rethrow;
-      }
-    } catch (e) {
-      rethrow;
-    }
-  }
-  return result;
-}
-
-testLogicalOr() {
-  globalCounter = 0;
-  bool cond1 = falseWithSideEffect();
-  if (cond1 || falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 || falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 || falseWithoutSideEffect()) Expect.fail("must be false");
-  Expect.equals(1, globalCounter);
-
-  cond1 = (falseWithSideEffect() == 499);
-  if (cond1 || falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 || falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 || falseWithoutSideEffect()) Expect.fail("must be false");
-  Expect.equals(2, globalCounter);
-}
-
-List globalList = [];
-void testLogicalOr2() {
-  globalList.clear();
-  testValueOr([]);
-  testValueOr(null);
-  Expect.listEquals([1, 2, 3], globalList);
-}
-
-void testValueOr(List list) {
-  if (list == null) globalList.add(1);
-  if (list == null || list.contains("2")) globalList.add(2);
-  if (list == null || list.contains("3")) globalList.add(3);
-}
-
-testLogicalAnd() {
-  globalCounter = 0;
-  bool cond1 = falseWithSideEffect();
-  if (cond1 && falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 && falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 && falseWithoutSideEffect()) Expect.fail("must be false");
-  Expect.equals(1, globalCounter);
-
-  cond1 = (falseWithSideEffect() == 499);
-  if (cond1 && falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 && falseWithoutSideEffect()) Expect.fail("must be false");
-  if (cond1 && falseWithoutSideEffect()) Expect.fail("must be false");
-  Expect.equals(2, globalCounter);
-}
-
-void testLogicalAnd2() {
-  globalList.clear();
-  testValueAnd([]);
-  testValueAnd(null);
-  Expect.listEquals([1, 2, 3], globalList);
-}
-
-void testValueAnd(List list) {
-  if (list == null) globalList.add(1);
-  if (list == null && globalList.contains(1)) globalList.add(2);
-  if (list == null && globalList.contains(1)) globalList.add(3);
-}
-
-main() {
-  testLogicalOr();
-  testLogicalOr2();
-
-  testLogicalAnd();
-  testLogicalAnd2();
-}
diff --git a/tests/language/loop_exchange2_test.dart b/tests/language/loop_exchange2_test.dart
deleted file mode 100644
index 79fa6ed..0000000
--- a/tests/language/loop_exchange2_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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";
-
-// This program tripped dart2js.
-main() {
-  var a = 1;
-  var b = 2;
-  var c = 3;
-  var d = 4;
-  var e = 5;
-  for (int i = 0; i < 2; i++) {
-    if (i == 1) {
-      Expect.equals(4, e);
-      Expect.equals(3, d);
-      Expect.equals(8, c);
-      Expect.equals(1, b);
-      Expect.equals(32, a);
-    }
-    int f;
-    int k;
-    if (i < 20) {
-      f = b & c | ~b & d;
-      k = 0x5A827999;
-    } else if (i < 40) {
-      f = b ^ c ^ d;
-      k = 0x6ED9EBA1;
-    } else if (i < 60) {
-      f = b & c | b & d | c & d;
-      k = 0x8F1BBCDC;
-    } else {
-      f = b ^ c ^ d;
-      k = 0xCA62C1D6;
-    }
-
-    int temp = a << 5;
-    e = d;
-    d = c;
-    c = b << 2;
-    b = a;
-    a = temp;
-  }
-}
diff --git a/tests/language/loop_exchange3_test.dart b/tests/language/loop_exchange3_test.dart
deleted file mode 100644
index c621da1..0000000
--- a/tests/language/loop_exchange3_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-// This program tripped dart2js.
-main() {
-  int foo;
-  for (var i = 0; i < 10; foo = i, i++) {
-    if (i > 0) {
-      Expect.equals(i - 1, foo);
-    }
-  }
-}
diff --git a/tests/language/loop_exchange4_test.dart b/tests/language/loop_exchange4_test.dart
deleted file mode 100644
index b6245a9..0000000
--- a/tests/language/loop_exchange4_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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";
-
-// This program tripped dart2js.
-main() {
-  var count = 0;
-  for (var i = 0; i < 1; i++, count += i) {}
-
-  int foo;
-  for (var i = 0; i < 10; foo = i, i++) {
-    if (i > 0) {
-      Expect.equals(i - 1, foo);
-    }
-  }
-}
diff --git a/tests/language/loop_exchange_test.dart b/tests/language/loop_exchange_test.dart
deleted file mode 100644
index 0edd06d..0000000
--- a/tests/language/loop_exchange_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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";
-
-// This program tripped dart2js.
-main() {
-  var x = 1;
-  var y = 2;
-  for (int i = 0; i < 2; i++) {
-    if (i == 1) Expect.equals(2, x);
-    var tmp = x;
-    x = y;
-    y = tmp;
-  }
-}
diff --git a/tests/language/loop_hoist_test.dart b/tests/language/loop_hoist_test.dart
deleted file mode 100644
index 5b15ec8..0000000
--- a/tests/language/loop_hoist_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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";
-
-class A {
-  num x;
-  A() : this.x = 0;
-
-  void bar() {
-    // dart2js hoisted the this.x out of the loop, and missed that setX would
-    // change the value.
-    for (int i = 1; i < 3; i++) {
-      setX(499);
-      foo(x);
-      break;
-    }
-  }
-
-  setX(x) => this.x = x;
-}
-
-var saved;
-foo(x) => saved = x;
-
-main() {
-  A a = new A();
-  for (int i = 0; i < 1; i++) {
-    a.bar();
-  }
-  Expect.equals(499, saved);
-}
diff --git a/tests/language/main_not_a_function_test.dart b/tests/language/main_not_a_function_test.dart
deleted file mode 100644
index bbdf765..0000000
--- a/tests/language/main_not_a_function_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, 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.
-
-/* //# 01: static type warning, runtime error
-main() {}
-*/ //# 01: continued
-
-var main; //# 01: continued
diff --git a/tests/language/main_test.dart b/tests/language/main_test.dart
deleted file mode 100644
index 35b20e0..0000000
--- a/tests/language/main_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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.
-
-main(
-
-a //        //# 01: ok
-a, b //     //# 02: ok
-a, b, c //  //# 03: static type warning, runtime error
-a, b, {c} //# 04: ok
-a, b, [c] //# 05: ok
-
-[a] //      //# 20: ok
-a, [b] //   //# 21: ok
-[a, b] //   //# 22: ok
-
-{a} //      //# 41: ok
-a, {b} //   //# 42: ok
-{a, b} //   //# 43: ok
-[a, b, c] //# 44: ok
-{a, b, c} //# 45: ok
-
-    ) {}
diff --git a/tests/language/malbounded_instantiation_test.dart b/tests/language/malbounded_instantiation_test.dart
deleted file mode 100644
index a7ab374..0000000
--- a/tests/language/malbounded_instantiation_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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 Super<T extends num> {}
-class Malbounded1 implements Super<String> {} // //# 01: static type warning
-class Malbounded2 extends Super<String> {} // //# 02: static type warning
-
-main() {
-  new Malbounded1(); // //# 01: static type warning
-  new Malbounded2(); // //# 02: static type warning, dynamic type error
-  new Super<String>(); // //# 03: static type warning, dynamic type error
-}
diff --git a/tests/language/malbounded_redirecting_factory2_test.dart b/tests/language/malbounded_redirecting_factory2_test.dart
deleted file mode 100644
index cc43076..0000000
--- a/tests/language/malbounded_redirecting_factory2_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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<
-    Ta
-           extends num // //# 02: continued
-    > implements B<Ta>, C<Ta> {}
-
-class B<
-    Tb
-           extends num // //# 03: continued
-    > {
-  factory B() = A<Tb>;
-}
-
-class C<
-    Tc
-           extends num // //# 04: continued
-    > {
-  factory C() = B<Tc>;
-}
-
-class D<Td> {
-  test() => new C<Td>();
-}
-
-main() {
-  new D<int>().test();
-  new D<String>().test(); // //# 01: static type warning
-  new D<String>().test(); // //# 02: static type warning, dynamic type error
-  new D<String>().test(); // //# 03: static type warning, dynamic type error
-  new D<String>().test(); // //# 04: static type warning, dynamic type error
-}
diff --git a/tests/language/malbounded_redirecting_factory_test.dart b/tests/language/malbounded_redirecting_factory_test.dart
deleted file mode 100644
index e74ae86..0000000
--- a/tests/language/malbounded_redirecting_factory_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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<
-    Ta
-           extends num // //# 02: continued
-    > implements B<Ta>, C<Ta> {}
-
-class B<
-    Tb
-           extends num // //# 03: continued
-    > {
-  factory B() = A<Tb>;
-}
-
-class C<
-    Tc
-           extends num // //# 04: continued
-    > {
-  factory C() = B<Tc>;
-}
-
-main() {
-  new C<int>();
-  new C<String>(); // //# 01: static type warning
-  new C<String>(); // //# 02: static type warning, dynamic type error
-  new C<String>(); // //# 03: static type warning, dynamic type error
-  new C<String>(); // //# 04: static type warning, dynamic type error
-}
diff --git a/tests/language/malbounded_type_cast2_test.dart b/tests/language/malbounded_type_cast2_test.dart
deleted file mode 100644
index b458095..0000000
--- a/tests/language/malbounded_type_cast2_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2014, 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";
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-class A<T extends num> {}
-
-class B<T> {
-  test() {
-    new A() as A<T>; // //# static type warning
-  }
-}
-
-main() {
-  var b = new B<String>();
-  if (isCheckedMode()) {
-    Expect.throws(() => b.test(), (e) => e is TypeError);
-  } else {
-    b.test();
-  }
-}
diff --git a/tests/language/malbounded_type_cast_test.dart b/tests/language/malbounded_type_cast_test.dart
deleted file mode 100644
index 1a6ebb9..0000000
--- a/tests/language/malbounded_type_cast_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class Super<T extends num> {}
-class Malbounded1 implements Super<String> {} // //# static type warning
-class Malbounded2 extends Super<String> {} // //# static type warning
-
-main() {
-  bool inCheckedMode = false;
-  try {
-    String a = 42; //# static type warning
-  } catch (e) {
-    inCheckedMode = true;
-  }
-
-  var expectedError;
-  if (inCheckedMode) {
-    expectedError = (e) => e is TypeError;
-  } else {
-    expectedError = (e) => e is CastError;
-  }
-
-  var m = new Malbounded1();
-  Expect.throws(() => m as Super<int>, expectedError);
-  var s = new Super<int>();
-  Expect.throws(() => s as Malbounded1, (e) => e is CastError);
-  Expect.throws(() => s as Malbounded2, expectedError);
-  Expect.throws(() => s as Super<String>, expectedError); //# static type warning
-}
diff --git a/tests/language/malbounded_type_literal_test.dart b/tests/language/malbounded_type_literal_test.dart
deleted file mode 100644
index 08c19d5..0000000
--- a/tests/language/malbounded_type_literal_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class Super<T extends num> {}
-
-class Malbounded extends Super<String> {}
-
-main() {
-  Type t = Malbounded;
-  Expect.isNotNull(t);
-  Expect.isTrue(t is Type);
-}
diff --git a/tests/language/malbounded_type_test2_test.dart b/tests/language/malbounded_type_test2_test.dart
deleted file mode 100644
index 1dee6fd..0000000
--- a/tests/language/malbounded_type_test2_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2014, 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";
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-class A<T extends num> {}
-
-class B<T> {
-  test() {
-    new A() is A<T>; // //# static type warning
-  }
-}
-
-main() {
-  var b = new B<String>();
-  if (isCheckedMode()) {
-    Expect.throws(() => b.test(), (e) => e is TypeError);
-  } else {
-    b.test();
-  }
-}
diff --git a/tests/language/malbounded_type_test_test.dart b/tests/language/malbounded_type_test_test.dart
deleted file mode 100644
index 261fcbb..0000000
--- a/tests/language/malbounded_type_test_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class Super<T extends num> {}
-class Malbounded1 implements Super<String> {} // //# 01: static type warning, dynamic type error
-class Malbounded1 implements Super<String> {} // //# 02: static type warning
-class Malbounded2 extends Super<String> {} // //# 03: static type warning, dynamic type error
-
-main() {
-  var m = new Malbounded1(); // //# 01: continued
-  Expect.isFalse(m is Super<int>); // //# 01: continued
-  var s = new Super<int>();
-  Expect.isFalse(s is Malbounded1); // //# 02: continued
-  Expect.isFalse(s is Malbounded2); // //# 03: continued
-  Expect.isFalse(s is Super<String>); // //# 04: static type warning, dynamic type error
-}
diff --git a/tests/language/malformed2_lib.dart b/tests/language/malformed2_lib.dart
deleted file mode 100644
index 44f01ab..0000000
--- a/tests/language/malformed2_lib.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2013, 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.
-
-part of malformed_test;
-
-/// [o] is either `null` or `new List<String>()`.
-void testValue(var o) {
-  assert(o == null || o is List<String>);
-
-  test(true, () => o is Unresolved, "$o is Unresolved");
-  test(false, () => o is List<Unresolved>, "$o is List<Unresolved>");
-  test(true, () => o is! Unresolved, "$o is! Unresolved");
-  test(false, () => o is! List<Unresolved>, "$o is List<Unresolved>");
-
-  test(true, () => o as Unresolved, "$o as Unresolved");
-  test(false, () => o as List<Unresolved>, "$o as List<Unresolved>");
-
-  test(false, () {
-    try {} on Unresolved catch (e) {} catch (e) {}
-  }, "on Unresolved catch: Nothing thrown.");
-  test(true, () {
-    try {
-      throw o;
-    } on Unresolved catch (e) {} catch (e) {}
-  }, "on Unresolved catch ($o)");
-  test(false, () {
-    try {
-      throw o;
-    } on List<
-        String> catch (e) {} on NullThrownError catch (e) {} on Unresolved catch (e) {} catch (e) {}
-  }, "on List<String>/NullThrowError catch ($o)");
-  test(false, () {
-    try {
-      throw o;
-    } on List<
-        Unresolved> catch (e) {} on NullThrownError catch (e) {} on Unresolved catch (e) {} catch (e) {}
-  }, "on List<Unresolved>/NullThrowError catch ($o)");
-
-  test(o != null && inCheckedMode(), () {
-    Unresolved u = o;
-  }, "Unresolved u = $o;");
-  test(false, () {
-    List<Unresolved> u = o;
-  }, "List<Unresolved> u = $o;");
-}
diff --git a/tests/language/malformed2_test.dart b/tests/language/malformed2_test.dart
deleted file mode 100644
index 1b263fa..0000000
--- a/tests/language/malformed2_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2013, 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 malformed_test;
-
-// This part includes the actual tests.
-part 'malformed2_lib.dart'; //# 00: static type warning
-
-bool inCheckedMode() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-bool hasFailed = false;
-
-void fail(String message) {
-  try {
-    throw message;
-  } catch (e, s) {
-    print(e);
-    print(s);
-  }
-  hasFailed = true;
-}
-
-void checkFailures() {
-  if (hasFailed) throw 'Test failed.';
-}
-
-test(bool expectTypeError, f(), [String message]) {
-  message = message != null ? ' for $message' : '';
-  try {
-    f();
-    if (expectTypeError) {
-      fail('Missing type error$message.');
-    }
-  } on TypeError catch (e) {
-    if (expectTypeError) {
-      print('Type error$message: $e');
-    } else {
-      fail('Unexpected type error$message: $e');
-    }
-  }
-}
-
-const Unresolved c1 = 0; //# 01: static type warning, checked mode compile-time error
-
-void main() {
-  print(c1); //# 01: continued
-  testValue(new List<String>()); //# 00: continued
-  testValue(null); //# 00: continued
-  checkFailures();
-}
diff --git a/tests/language/malformed_bound_test.dart b/tests/language/malformed_bound_test.dart
deleted file mode 100644
index 623077c..0000000
--- a/tests/language/malformed_bound_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that a malformed type variable bound is treated as dynamic.
-
-class C<
-    T
-  extends Malformed //# 01: static type warning, runtime error
-    > {
-  f(T t) => t.foo; //# 01: continued
-}
-
-main() {
-  new C<int>()
-    .f(1) //# 01: continued
-      ;
-}
diff --git a/tests/language/malformed_inheritance_test.dart b/tests/language/malformed_inheritance_test.dart
deleted file mode 100644
index 733202a..0000000
--- a/tests/language/malformed_inheritance_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Tests that malformed types used in extends, implements, and with clauses
-// cause compile-time errors.
-
-import 'package:expect/expect.dart';
-
-class A<T> {}
-
-class C
-  extends Unresolved //# 01: compile-time error
-  extends A<Unresolved> //# 02: static type warning
-  extends Object with Unresolved //# 03: compile-time error
-  extends Object with A<Unresolved> //# 04: static type warning
-  implements Unresolved //# 05: compile-time error
-  implements A<Unresolved> //# 06: static type warning
-  <A> extends A<int> //# 07: compile-time error
-  <A> extends A<Unresolved> //# 08: compile-time error
-  <A> extends Object with A<int> //# 09: compile-time error
-  <A> extends Object with A<Unresolved> //# 10: compile-time error
-  <A> implements A<int> //# 11: compile-time error
-  <A> implements A<Unresolved> //# 12: compile-time error
-{}
-
-void main() {
-  new C();
-  Expect.isTrue(new C() is A<String> && new C() is A<int>); //# 02: continued
-  Expect.isTrue(new C() is A<String> && new C() is A<int>); //# 04: continued
-  Expect.isTrue(new C() is A<String> && new C() is A<int>); //# 06: continued
-}
diff --git a/tests/language/malformed_test.dart b/tests/language/malformed_test.dart
deleted file mode 100644
index 2e293ab..0000000
--- a/tests/language/malformed_test.dart
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Tests that malformed types are handled as dynamic, and that types with the
-// wrong number of type arguments are handled as raw types.
-
-import 'package:expect/expect.dart';
-import 'package:expect/expect.dart' as prefix; // Define 'prefix'.
-
-checkIsUnresolved(var v) {
-  Expect.throws(() => v is Unresolved, (e) => e is TypeError);
-  Expect.throws(() => v is Unresolved<int>, (e) => e is TypeError);
-  Expect.throws(() => v is prefix.Unresolved, (e) => e is TypeError);
-  Expect.throws(() => v is prefix.Unresolved<int>, (e) => e is TypeError);
-}
-
-checkIsListUnresolved(bool expect, var v) {
-  Expect.equals(expect, v is List<Unresolved>);
-  Expect.equals(expect, v is List<Unresolved<int>>);
-  Expect.equals(expect, v is List<prefix.Unresolved>);
-  Expect.equals(expect, v is List<prefix.Unresolved<int>>);
-  Expect.equals(expect, v is List<int, String>);
-}
-
-checkIsListDynamic(bool expect, var v) {
-  checkIsListUnresolved(true, v);
-  Expect.equals(expect, v is List<int> && v is List<String>);
-}
-
-checkAsUnresolved(var v) {
-  Expect.throws(() => v as Unresolved, (e) => e is TypeError);
-  Expect.throws(() => v as Unresolved<int>, (e) => e is TypeError);
-  Expect.throws(() => v as prefix.Unresolved, (e) => e is TypeError);
-  Expect.throws(() => v as prefix.Unresolved<int>, (e) => e is TypeError);
-}
-
-checkAsListUnresolved(bool expect, var v) {
-  if (expect) {
-    Expect.equals(v, v as List<Unresolved>);
-    Expect.equals(v, v as List<Unresolved<int>>);
-    Expect.equals(v, v as List<prefix.Unresolved>);
-    Expect.equals(v, v as List<prefix.Unresolved<int>>);
-    Expect.equals(v, v as List<int, String>);
-  } else {
-    Expect.throws(() => v as List<Unresolved>, (e) => e is CastError);
-    Expect.throws(() => v as List<Unresolved<int>>, (e) => e is CastError);
-    Expect.throws(() => v as List<prefix.Unresolved>, (e) => e is CastError);
-    Expect.throws(
-        () => v as List<prefix.Unresolved<int>>, (e) => e is CastError);
-    Expect.throws(() => v as List<int, String>, (e) => e is CastError);
-  }
-}
-
-checkIsMapDynamic(bool first, bool second, var v) {
-  Expect.equals(first, v is Map<String, Object> && v is Map<int, Object>);
-  Expect.equals(second, v is Map<Object, int> && v is Map<Object, String>);
-}
-
-void main() {
-  checkIsUnresolved('');
-  checkIsUnresolved(0);
-  checkIsListUnresolved(false, '');
-  checkIsListUnresolved(true, new List());
-  checkIsListUnresolved(true, new List<int>());
-  checkIsListUnresolved(true, new List<String>());
-  checkIsListUnresolved(true, new List<int, String>());
-
-  checkAsUnresolved('');
-  checkAsUnresolved(0);
-  checkAsListUnresolved(false, '');
-  checkAsListUnresolved(true, new List());
-  checkAsListUnresolved(true, new List<int>());
-  checkAsListUnresolved(true, new List<String>());
-  checkAsListUnresolved(true, new List<int, String>());
-
-  checkIsListDynamic(true, []);
-  checkIsListDynamic(true, <>[]); //# 01: syntax error
-  checkIsListDynamic(false, <int>[]);
-  checkIsListDynamic(true, <Unresolved>[]);
-  checkIsListDynamic(true, <Unresolved<int>>[]);
-  checkIsListDynamic(true, <prefix.Unresolved>[]);
-  checkIsListDynamic(true, <prefix.Unresolved<int>>[]);
-  checkIsListDynamic(true, <int, String>[]);
-
-  checkIsListDynamic(true, new List());
-  checkIsListDynamic(true, new List<>()); //# 02: syntax error
-  checkIsListDynamic(true, new List<Unresolved>());
-  checkIsListDynamic(true, new List<Unresolved<int>>());
-  checkIsListDynamic(true, new List<prefix.Unresolved>());
-  checkIsListDynamic(true, new List<prefix.Unresolved<int>>());
-  checkIsListDynamic(true, new List<int, String>());
-
-  checkIsMapDynamic(true, true, <dynamic, dynamic>{});
-  checkIsMapDynamic(true, true, {});
-  checkIsMapDynamic(true, true, <>{}); //# 03: syntax error
-  checkIsMapDynamic(true, true, <int>{});
-  checkIsMapDynamic(false, false, <String, int>{});
-  checkIsMapDynamic(true, true, <String, int, String>{});
-  checkIsMapDynamic(true, false, <Unresolved, int>{});
-  checkIsMapDynamic(false, true, <String, Unresolved<int>>{});
-  checkIsMapDynamic(true, false, <prefix.Unresolved, int>{});
-  checkIsMapDynamic(false, true, <String, prefix.Unresolved<int>>{});
-
-  checkIsMapDynamic(true, true, new Map());
-  checkIsMapDynamic(true, true, new Map<>); //# 04: syntax error
-  checkIsMapDynamic(true, true, new Map<int>());
-  checkIsMapDynamic(false, false, new Map<String, int>());
-  checkIsMapDynamic(true, true, new Map<String, int, String>());
-  checkIsMapDynamic(true, false, new Map<Unresolved, int>());
-  checkIsMapDynamic(false, true, new Map<String, Unresolved<int>>());
-  checkIsMapDynamic(true, false, new Map<prefix.Unresolved, int>());
-  checkIsMapDynamic(false, true, new Map<String, prefix.Unresolved<int>>());
-
-  Expect.throws(() => new Unresolved(), (e) => true);
-  Expect.throws(() => new Unresolved<int>(), (e) => true);
-  Expect.throws(() => new prefix.Unresolved(), (e) => true);
-  Expect.throws(() => new prefix.Unresolved<int>(), (e) => true);
-
-  // The expression 'undeclared_prefix.Unresolved()' is parsed as the invocation
-  // of the named constructor 'Unresolved' on the type 'undeclared_prefix'.
-  Expect.throws(() => new undeclared_prefix.Unresolved(), (e) => true);
-  // The expression 'undeclared_prefix.Unresolved<int>' is a malformed type.
-  Expect.throws(() => new undeclared_prefix.Unresolved<int>(), (e) => true);
-
-  try {
-    try {
-      throw 'foo';
-    } on Unresolved catch (e) {
-      Expect.fail("This code shouldn't be executed");
-    }
-    Expect.fail("This code shouldn't be executed");
-  } on TypeError catch (e) {}
-  try {
-    try {
-      throw 'foo';
-    } on Unresolved<int> catch (e) {
-      Expect.fail("This code shouldn't be executed");
-    }
-    Expect.fail("This code shouldn't be executed");
-  } on TypeError catch (e) {}
-  try {
-    try {
-      throw 'foo';
-    } on prefix.Unresolved catch (e) {
-      Expect.fail("This code shouldn't be executed");
-    }
-    Expect.fail("This code shouldn't be executed");
-  } on TypeError catch (e) {}
-  try {
-    try {
-      throw 'foo';
-    } on prefix.Unresolved<int> catch (e) {
-      Expect.fail("This code shouldn't be executed");
-    }
-    Expect.fail("This code shouldn't be executed");
-  } on TypeError catch (e) {}
-  try {
-    throw 'foo';
-  }
-    on undeclared_prefix.Unresolved<int> // //# 06: runtime error
-  catch (e) {}
-}
diff --git a/tests/language/malformed_type_test.dart b/tests/language/malformed_type_test.dart
deleted file mode 100644
index 615d9ee..0000000
--- a/tests/language/malformed_type_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-// Regression test for issue 11792.
-
-null_() => null;
-final Undeclared x = null_(); // null is assignable to x of malformed type.
-
-main() {
-  print(x);
-}
diff --git a/tests/language/many_calls_test.dart b/tests/language/many_calls_test.dart
deleted file mode 100644
index fc766d8..0000000
--- a/tests/language/many_calls_test.dart
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test megamorphic calls.
-
-import "package:expect/expect.dart";
-
-class A {
-  A() {}
-  f1() {
-    return 1;
-  }
-
-  f2() {
-    return 2;
-  }
-
-  f3() {
-    return 3;
-  }
-
-  f4() {
-    return 4;
-  }
-
-  f5() {
-    return 5;
-  }
-
-  f6() {
-    return 6;
-  }
-
-  f7() {
-    return 7;
-  }
-
-  f8() {
-    return 8;
-  }
-
-  f9() {
-    return 9;
-  }
-
-  f11() {
-    return 11;
-  }
-
-  f12() {
-    return 12;
-  }
-
-  f13() {
-    return 13;
-  }
-
-  f14() {
-    return 14;
-  }
-
-  f15() {
-    return 15;
-  }
-
-  f16() {
-    return 16;
-  }
-
-  f17() {
-    return 17;
-  }
-
-  f18() {
-    return 18;
-  }
-
-  f19() {
-    return 19;
-  }
-
-  f20() {
-    return 20;
-  }
-
-  f21() {
-    return 21;
-  }
-
-  f22() {
-    return 22;
-  }
-
-  f23() {
-    return 23;
-  }
-
-  f24() {
-    return 24;
-  }
-
-  f25() {
-    return 25;
-  }
-
-  f26() {
-    return 26;
-  }
-
-  f27() {
-    return 27;
-  }
-
-  f28() {
-    return 28;
-  }
-
-  f29() {
-    return 29;
-  }
-
-  f30() {
-    return 30;
-  }
-
-  f31() {
-    return 31;
-  }
-
-  f32() {
-    return 32;
-  }
-
-  f33() {
-    return 33;
-  }
-
-  f34() {
-    return 34;
-  }
-
-  f35() {
-    return 35;
-  }
-
-  f36() {
-    return 36;
-  }
-
-  f37() {
-    return 37;
-  }
-
-  f38() {
-    return 38;
-  }
-
-  f39() {
-    return 39;
-  }
-}
-
-class B extends A {
-  B() : super() {}
-}
-
-class ManyCallsTest {
-  static testMain() {
-    var list = new List(10);
-    for (int i = 0; i < (list.length ~/ 2); i++) {
-      list[i] = new A();
-    }
-    for (int i = (list.length ~/ 2); i < list.length; i++) {
-      list[i] = new B();
-    }
-    for (int loop = 0; loop < 7; loop++) {
-      for (int i = 0; i < list.length; i++) {
-        Expect.equals(1, list[i].f1());
-        Expect.equals(2, list[i].f2());
-        Expect.equals(3, list[i].f3());
-        Expect.equals(4, list[i].f4());
-        Expect.equals(5, list[i].f5());
-        Expect.equals(6, list[i].f6());
-        Expect.equals(7, list[i].f7());
-        Expect.equals(8, list[i].f8());
-        Expect.equals(9, list[i].f9());
-        Expect.equals(11, list[i].f11());
-        Expect.equals(12, list[i].f12());
-        Expect.equals(13, list[i].f13());
-        Expect.equals(14, list[i].f14());
-        Expect.equals(15, list[i].f15());
-        Expect.equals(16, list[i].f16());
-        Expect.equals(17, list[i].f17());
-        Expect.equals(18, list[i].f18());
-        Expect.equals(19, list[i].f19());
-        Expect.equals(20, list[i].f20());
-        Expect.equals(21, list[i].f21());
-        Expect.equals(22, list[i].f22());
-        Expect.equals(23, list[i].f23());
-        Expect.equals(24, list[i].f24());
-        Expect.equals(25, list[i].f25());
-        Expect.equals(26, list[i].f26());
-        Expect.equals(27, list[i].f27());
-        Expect.equals(28, list[i].f28());
-        Expect.equals(29, list[i].f29());
-        Expect.equals(30, list[i].f30());
-        Expect.equals(31, list[i].f31());
-        Expect.equals(32, list[i].f32());
-        Expect.equals(33, list[i].f33());
-        Expect.equals(34, list[i].f34());
-        Expect.equals(35, list[i].f35());
-        Expect.equals(36, list[i].f36());
-        Expect.equals(37, list[i].f37());
-        Expect.equals(38, list[i].f38());
-        Expect.equals(39, list[i].f39());
-      }
-    }
-  }
-}
-
-main() {
-  ManyCallsTest.testMain();
-}
diff --git a/tests/language/many_generic_instanceof_test.dart b/tests/language/many_generic_instanceof_test.dart
deleted file mode 100644
index be72feb..0000000
--- a/tests/language/many_generic_instanceof_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-library GenericInstanceofTest.dart;
-
-import "package:expect/expect.dart";
-part "generic_instanceof.dart";
-
-class ManyGenericInstanceofTest {
-  static testMain() {
-    for (int i = 0; i < 20; i++) {
-      GenericInstanceof.testMain();
-    }
-  }
-}
-
-main() {
-  ManyGenericInstanceofTest.testMain();
-}
diff --git a/tests/language/many_method_calls_test.dart b/tests/language/many_method_calls_test.dart
deleted file mode 100644
index f16aa9a..0000000
--- a/tests/language/many_method_calls_test.dart
+++ /dev/null
@@ -1,6644 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that compiler does not crash for very long chains of method calls.
-
-var field = false;
-
-foo() {
-  if (field) {
-    print('foo');
-  }
-}
-
-main() {
-  manyMethodCalls();
-  field = true;
-}
-
-manyMethodCalls() {
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-  foo();
-}
diff --git a/tests/language/many_named_arguments_test.dart b/tests/language/many_named_arguments_test.dart
deleted file mode 100644
index d83d469..0000000
--- a/tests/language/many_named_arguments_test.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class Fisk {
-  method(
-      {a: 'a',
-      b: 'b',
-      c: 'c',
-      d: 'd',
-      e: 'e',
-      f: 'f',
-      g: 'g',
-      h: 'h',
-      i: 'i',
-      j: 'j',
-      k: 'k',
-      l: 'l',
-      m: 'm',
-      n: 'n',
-      o: 'o',
-      p: 'p',
-      q: 'q',
-      r: 'r',
-      s: 's',
-      t: 't',
-      u: 'u',
-      v: 'v',
-      w: 'w',
-      x: 'x',
-      y: 'y',
-      z: 'z'}) {
-    return 'a: $a, '
-        'b: $b, '
-        'c: $c, '
-        'd: $d, '
-        'e: $e, '
-        'f: $f, '
-        'g: $g, '
-        'h: $h, '
-        'i: $i, '
-        'j: $j, '
-        'k: $k, '
-        'l: $l, '
-        'm: $m, '
-        'n: $n, '
-        'o: $o, '
-        'p: $p, '
-        'q: $q, '
-        'r: $r, '
-        's: $s, '
-        't: $t, '
-        'u: $u, '
-        'v: $v, '
-        'w: $w, '
-        'x: $x, '
-        'y: $y, '
-        'z: $z';
-  }
-}
-
-main() {
-  var method = new Fisk().method;
-  var namedArguments = new Map();
-  namedArguments[const Symbol('a')] = 'a';
-  Expect.stringEquals(
-      EXPECTED_RESULT, Function.apply(method, [], namedArguments));
-  Expect.stringEquals(
-      EXPECTED_RESULT,
-      new Fisk().method(
-          a: 'a',
-          b: 'b',
-          c: 'c',
-          d: 'd',
-          e: 'e',
-          f: 'f',
-          g: 'g',
-          h: 'h',
-          i: 'i',
-          j: 'j',
-          k: 'k',
-          l: 'l',
-          m: 'm',
-          n: 'n',
-          o: 'o',
-          p: 'p',
-          q: 'q',
-          r: 'r',
-          s: 's',
-          t: 't',
-          u: 'u',
-          v: 'v',
-          w: 'w',
-          x: 'x',
-          y: 'y',
-          z: 'z'));
-}
-
-const String EXPECTED_RESULT = 'a: a, '
-    'b: b, '
-    'c: c, '
-    'd: d, '
-    'e: e, '
-    'f: f, '
-    'g: g, '
-    'h: h, '
-    'i: i, '
-    'j: j, '
-    'k: k, '
-    'l: l, '
-    'm: m, '
-    'n: n, '
-    'o: o, '
-    'p: p, '
-    'q: q, '
-    'r: r, '
-    's: s, '
-    't: t, '
-    'u: u, '
-    'v: v, '
-    'w: w, '
-    'x: x, '
-    'y: y, '
-    'z: z';
diff --git a/tests/language/many_overridden_no_such_method_test.dart b/tests/language/many_overridden_no_such_method_test.dart
deleted file mode 100644
index e5c32ce..0000000
--- a/tests/language/many_overridden_no_such_method_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-library OverriddenNoSuchMethodTest.dart;
-
-import "dart:mirrors" show reflect;
-import "package:expect/expect.dart";
-
-part "overridden_no_such_method.dart";
-
-class ManyOverriddenNoSuchMethodTest {
-  static testMain() {
-    for (int i = 0; i < 20; i++) {
-      OverriddenNoSuchMethod.testMain();
-    }
-  }
-}
-
-main() {
-  ManyOverriddenNoSuchMethodTest.testMain();
-}
diff --git a/tests/language/map_literal10_test.dart b/tests/language/map_literal10_test.dart
deleted file mode 100644
index d1d3886..0000000
--- a/tests/language/map_literal10_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the use of '__proto__' keys in maps.
-
-library map_literal10_test;
-
-import "package:expect/expect.dart";
-
-void main() {
-  var m1 = const {"__proto__": 0, 1: 1};
-  Expect.isTrue(m1.containsKey("__proto__"));
-  Expect.equals(0, m1["__proto__"]);
-  Expect.isTrue(m1.containsKey(1));
-  Expect.equals(1, m1[1]);
-  Expect.listEquals(["__proto__", 1], m1.keys.toList());
-
-  var m2 = const {1: 0, "__proto__": 1};
-  Expect.isTrue(m2.containsKey(1));
-  Expect.equals(0, m2[1]);
-  Expect.isTrue(m2.containsKey("__proto__"));
-  Expect.equals(1, m2["__proto__"]);
-  Expect.listEquals([1, "__proto__"], m2.keys.toList());
-
-  var m3 = const {"1": 0, "__proto__": 1};
-  Expect.isTrue(m3.containsKey("1"));
-  Expect.equals(0, m3["1"]);
-  Expect.isTrue(m3.containsKey("__proto__"));
-  Expect.equals(1, m3["__proto__"]);
-  Expect.listEquals(["1", "__proto__"], m3.keys.toList());
-
-  var m4 = const {"__proto__": 1, "1": 2};
-  Expect.isTrue(m4.containsKey("1"));
-  Expect.equals(2, m4["1"]);
-  Expect.isTrue(m4.containsKey("__proto__"));
-  Expect.equals(1, m4["__proto__"]);
-  Expect.listEquals(["__proto__", "1"], m4.keys.toList());
-}
diff --git a/tests/language/map_literal1_test.dart b/tests/language/map_literal1_test.dart
deleted file mode 100644
index 1b9d66c..0000000
--- a/tests/language/map_literal1_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// When type checks are enabled, a type mismatch in a map literal is a compile-time error
-
-main() {
-  var m = const
-      <String, String> // //# 01: static type warning, checked mode compile-time error
-      {"a": 0};
-}
diff --git a/tests/language/map_literal2_negative_test.dart b/tests/language/map_literal2_negative_test.dart
deleted file mode 100644
index b4ead50..0000000
--- a/tests/language/map_literal2_negative_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Dart test program const map literals.
-
-class MapLiteral2NegativeTest<T> {
-  test() {
-    try {
-      var m = const <String, T>{"a": 0}; // Type parameter is not allowed with
-      // const.
-    } on TypeError catch (error) {}
-  }
-}
-
-main() {
-  var t = new MapLiteral2NegativeTest<int>();
-  t.test();
-}
diff --git a/tests/language/map_literal2_test.dart b/tests/language/map_literal2_test.dart
deleted file mode 100644
index d170b58..0000000
--- a/tests/language/map_literal2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test program for map literals.
-
-import "package:expect/expect.dart";
-
-int nextValCtr;
-
-get nextVal {
-  return nextValCtr++;
-}
-
-main() {
-  // Map literals with string interpolation in keys.
-  nextValCtr = 0;
-  var map = {"a$nextVal": "Grey", "a$nextVal": "Poupon"};
-  Expect.equals(true, map.containsKey("a0"));
-  Expect.equals(true, map.containsKey("a1"));
-  Expect.equals("Grey", map["a0"]);
-  Expect.equals("Poupon", map["a1"]);
-}
diff --git a/tests/language/map_literal3_test.dart b/tests/language/map_literal3_test.dart
deleted file mode 100644
index 3d809b9..0000000
--- a/tests/language/map_literal3_test.dart
+++ /dev/null
@@ -1,116 +0,0 @@
-// 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.
-// Test program for map literals.
-
-import "package:expect/expect.dart";
-
-class MapLiteralTest {
-  static testMain() {
-    var map = {"a": 1, "b": 2, "c": 3};
-
-    Expect.equals(map.length, 3);
-    Expect.equals(map["a"], 1);
-    Expect.equals(map["z"], null);
-    Expect.equals(map["c"], 3);
-
-    map["foo"] = 42;
-    Expect.equals(map.length, 4);
-    Expect.equals(map["foo"], 42);
-    map["foo"] = 55;
-    Expect.equals(map.length, 4);
-    Expect.equals(map["foo"], 55);
-
-    map.remove("foo");
-    Expect.equals(map.length, 3);
-    Expect.equals(map["foo"], null);
-
-    map["foo"] = "bar";
-    Expect.equals(map.length, 4);
-    Expect.equals(map["foo"], "bar");
-
-    map.clear();
-    Expect.equals(map.length, 0);
-
-    var b = 22;
-    Expect.equals(
-        22,
-        {
-          "a": 11,
-          "b": b,
-        }["b"]);
-
-    // Make map grow. We currently don't have a way to construct
-    // strings from an integer value, so we can't use a loop here.
-    var m = new Map();
-    Expect.equals(m.length, 0);
-    m["1"] = 1;
-    m["2"] = 2;
-    m["3"] = 3;
-    m["4"] = 4;
-    m["5"] = 5;
-    m["6"] = 6;
-    m["7"] = 7;
-    m["8"] = 8;
-    m["9"] = 9;
-    m["10"] = 10;
-    m["11"] = 11;
-    m["12"] = 12;
-    m["13"] = 13;
-    m["14"] = 14;
-    m["15"] = 15;
-    m["16"] = 16;
-    Expect.equals(16, m.length);
-    m.remove("1");
-    m.remove("1"); // Remove element twice.
-    m.remove("16");
-    Expect.equals(14, m.length);
-
-    // Check that last value of duplicate key wins for const maps.
-    final cmap = const <String, num>{"a": 10, "b": 100, "a": 1000}; //# static type warning
-    Expect.equals(2, cmap.length);
-    Expect.equals(1000, cmap["a"]);
-    Expect.equals(100, cmap["b"]);
-
-    final cmap2 = const <String, num>{"a": 10, "a": 100, "a": 1000}; //# static type warning
-    Expect.equals(1, cmap2.length);
-    Expect.equals(1000, cmap["a"]);
-
-    // Check that last value of duplicate key wins for mutable maps.
-    var mmap = <String, num>{"a": 10, "b": 100, "a": 1000}; //# static type warning
-
-    Expect.equals(2, mmap.length);
-    Expect.equals(1000, mmap["a"]);
-    Expect.equals(100, mmap["b"]);
-
-    // Check that even if a key gets eliminated (the first "a"), all values
-    // are still evaluated, including side effects.
-    int counter = 0;
-    int ctr() {
-      counter += 10;
-      return counter;
-    }
-
-    mmap = <String, num>{"a": ctr(), "b": ctr(), "a": ctr()}; //# static type warning
-    Expect.equals(2, mmap.length);
-    Expect.equals(40, ctr());
-    Expect.equals(30, mmap["a"]);
-    Expect.equals(20, mmap["b"]);
-
-    Expect.equals(10, {"beta": 100, "alpha": 9 + 1}["alpha"]);
-    Expect.equals(
-        10,
-        <String, Map>{
-          "beta": {"delta": 10},
-          "alpha": {"gamma": 10}
-        }["alpha"]["gamma"]);
-
-    // Map literals at beginning of statement.
-    <String, num>{"pink": 100};
-    const <String, num>{"floyd": 100};
-  }
-}
-
-main() {
-  MapLiteralTest.testMain();
-}
diff --git a/tests/language/map_literal4_test.dart b/tests/language/map_literal4_test.dart
deleted file mode 100644
index df249c6..0000000
--- a/tests/language/map_literal4_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks
-//
-// Dart test program testing type checks in map literals.
-
-import "package:expect/expect.dart";
-
-class MapLiteral4Test<T> {
-  test() {
-    int result = 0;
-    try {
-      var m = <String, String>{"a": 0}; // 0 is not a String.
-    } on TypeError catch (error) {
-      result += 1;
-    }
-    try {
-      var m = <String, int>{"a": 0};
-      m[2] = 1; // 2 is not a String.
-    } on TypeError catch (error) {
-      result += 10;
-    }
-    try {
-      var m = <String, T>{"a": "b"}; // "b" is not an int.
-    } on TypeError catch (error) {
-      result += 100;
-    }
-    try {
-      var m = <String, T>{"a": 0}; // OK.
-    } on TypeError catch (error) {
-      result += 1000;
-    }
-    try {
-      var m = <String, T>{"a": 0};
-      m[2] = 1; // 2 is not a String.
-    } on TypeError catch (error) {
-      result += 10000;
-    }
-    try {
-      var m = const <String, int>{"a": 0};
-      m[2] = 1; // 2 is not a String.
-    } on TypeError catch (error) {
-      result += 100000;
-    }
-    return result;
-  }
-}
-
-main() {
-  var t = new MapLiteral4Test<int>();
-  Expect.equals(110111, t.test());
-}
diff --git a/tests/language/map_literal5_test.dart b/tests/language/map_literal5_test.dart
deleted file mode 100644
index 2ba3e4c..0000000
--- a/tests/language/map_literal5_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the use of general expression as keys in map literals.
-
-library map_literal5_test;
-
-import "package:expect/expect.dart";
-
-void main() {
-  test(true);
-  test(false);
-}
-
-void test(bool b) {
-  var m = create(b);
-  Expect.equals(b, m.containsKey(true));
-  Expect.equals(b, m.containsKey(2));
-  Expect.equals(b, m.containsKey(1));
-  Expect.equals(!b, m.containsKey(false));
-  Expect.equals(!b, m.containsKey("bar"));
-  Expect.equals(!b, m.containsKey("foo"));
-  if (b) {
-    Expect.equals(0, m[true]);
-    Expect.equals(3, m[2]);
-    Expect.equals(2, m[1]);
-  } else {
-    Expect.equals(0, m[false]);
-    Expect.equals("baz", m["bar"]);
-    Expect.equals(2, m["foo"]);
-  }
-}
-
-create(bool b) {
-  return {
-    b: 0,
-    m(b): n(b),
-    b ? 1 : "foo": 2,
-  };
-}
-
-m(bool b) => b ? 2 : "bar";
-n(bool b) => b ? 3 : "baz";
diff --git a/tests/language/map_literal6_test.dart b/tests/language/map_literal6_test.dart
deleted file mode 100644
index 8f50a2e..0000000
--- a/tests/language/map_literal6_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the use of general expression as keys in const map literals.
-
-library map_literal6_test;
-
-import "package:expect/expect.dart";
-
-class A {
-  const A();
-}
-
-class B {
-  final a;
-  const B(this.a);
-}
-
-void main() {
-  var m1 = const {
-    const A(): 0,
-    const B(0): 1,
-    const B(1): 2,
-    const B(const A()): 3,
-    const B(0): 4,
-  };
-  Expect.isTrue(m1.containsKey(const A()));
-  Expect.isTrue(m1.containsKey(const B(0)));
-  Expect.isTrue(m1.containsKey(const B(1)));
-  Expect.isTrue(m1.containsKey(const B(const A())));
-  Expect.equals(0, m1[const A()]);
-  Expect.equals(4, m1[const B(0)]);
-  Expect.equals(2, m1[const B(1)]);
-  Expect.equals(3, m1[const B(const A())]);
-}
diff --git a/tests/language/map_literal7_test.dart b/tests/language/map_literal7_test.dart
deleted file mode 100644
index 8196c63..0000000
--- a/tests/language/map_literal7_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the use type arguments on constant maps.
-
-library map_literal7_test;
-
-import "package:expect/expect.dart";
-
-void main() {
-  var m1 = const {"0": 0, "1": 1};
-  Expect.isTrue(m1 is Map);
-  Expect.isTrue(m1 is Map<String, int>);
-  Expect.isTrue(m1 is Map<int, dynamic>);
-  Expect.isTrue(m1 is Map<dynamic, String>);
-
-  var m2 = const <String, int>{"0": 0, "1": 1};
-  Expect.isTrue(m2 is Map);
-  Expect.isTrue(m2 is Map<String, int>);
-  Expect.isFalse(m2 is Map<int, dynamic>);
-  Expect.isFalse(m2 is Map<dynamic, String>);
-}
diff --git a/tests/language/map_literal8_test.dart b/tests/language/map_literal8_test.dart
deleted file mode 100644
index ef237aa..0000000
--- a/tests/language/map_literal8_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the use of type arguments on const map literals using general expression
-// as keys.
-
-library map_literal8_test;
-
-import "package:expect/expect.dart";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  final a;
-  const B(this.a);
-}
-
-void main() {
-  var m1 = const {
-    const A(): 0,
-    const B(0): 1,
-    const B(1): 2,
-    const B(const A()): 3,
-    const B(0): 4,
-  };
-  Expect.isTrue(m1 is Map);
-  Expect.isTrue(m1 is Map<A, int>);
-  Expect.isTrue(m1 is Map<int, dynamic>);
-  Expect.isTrue(m1 is Map<dynamic, A>);
-
-  var m2 = const <A, int>{
-    const A(): 0,
-    const B(0): 1,
-    const B(1): 2,
-    const B(const A()): 3,
-    const B(0): 4,
-  };
-  Expect.isTrue(m2 is Map);
-  Expect.isTrue(m2 is Map<A, int>);
-  Expect.isFalse(m2 is Map<int, dynamic>);
-  Expect.isFalse(m2 is Map<dynamic, A>);
-}
diff --git a/tests/language/map_literal9_test.dart b/tests/language/map_literal9_test.dart
deleted file mode 100644
index cc12411..0000000
--- a/tests/language/map_literal9_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the use type arguments on constant maps.
-
-library map_literal9_test;
-
-import "package:expect/expect.dart";
-
-void main() {
-  var m1 = const {"[object Object]": 0, "1": 1};
-  Expect.isFalse(m1.containsKey(new Object()));
-  Expect.isNull(m1[new Object()]);
-  Expect.isFalse(m1.containsKey(1));
-  Expect.isNull(m1[1]);
-
-  var m2 = const {"[object Object]": 0, "1": 1, "__proto__": 2};
-  Expect.isFalse(m2.containsKey(new Object()));
-  Expect.isNull(m2[new Object()]);
-  Expect.isFalse(m2.containsKey(1));
-  Expect.isNull(m2[1]);
-}
diff --git a/tests/language/map_literal_negative_test.dart b/tests/language/map_literal_negative_test.dart
deleted file mode 100644
index dd4b65d..0000000
--- a/tests/language/map_literal_negative_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-// Legacy compound literal syntax that should go away.
-
-class MapLiteralNegativeTest {
-  static testMain() {
-    var map = new Map<int>{ "a": 1, "b": 2, "c": 3 };
-  }
-}
-
-main() {
-  MapLiteralNegativeTest.testMain();
-}
diff --git a/tests/language/map_literal_syntax_test.dart b/tests/language/map_literal_syntax_test.dart
deleted file mode 100644
index 953730a..0000000
--- a/tests/language/map_literal_syntax_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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";
-
-class Foo {
-  var x;
-  var y;
-  var z;
-  var v;
-  Foo()
-      : x = {},
-        y = <String, int>{},
-        z = const {},
-        v = const <String, int>{};
-}
-
-main() {
-  Expect.equals("{}", new Foo().x.toString());
-  Expect.equals("{}", new Foo().y.toString());
-  Expect.equals("{}", new Foo().z.toString());
-  Expect.equals("{}", new Foo().v.toString());
-}
diff --git a/tests/language/map_literal_test.dart b/tests/language/map_literal_test.dart
deleted file mode 100644
index 93f1c3d..0000000
--- a/tests/language/map_literal_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests map literals.
-
-class MapLiteralTest {
-  MapLiteralTest() {}
-
-  static testMain() {
-    var test = new MapLiteralTest();
-    test.testStaticInit();
-    test.testConstInit();
-  }
-
-  testStaticInit() {
-    var testClass = new StaticInit();
-    testClass.test();
-  }
-
-  testConstInit() {
-    var testClass = new ConstInit();
-    testClass.test();
-  }
-
-  testLocalInit() {
-    // Test construction of static const map literals
-    var map1 = {"a": 1, "b": 2};
-    // Test construction of static const map literals, with numbers
-    var map2 = {"1": 1, "2": 2};
-
-    Expect.equals(1, map1["a"]);
-    Expect.equals(2, map1["b"]);
-
-    Expect.equals(1, map2["1"]);
-    Expect.equals(2, map2["2"]);
-  }
-}
-
-class StaticInit {
-  StaticInit() {}
-
-  // Test construction of static const map literals
-  static const map1 = const {"a": 1, "b": 2};
-  // Test construction of static const map literals, with numbers
-  static const map2 = const {"1": 1, "2": 2};
-
-  test() {
-    Expect.equals(1, map1["a"]);
-    Expect.equals(2, map1["b"]);
-
-    Expect.equals(1, map2["1"]);
-    Expect.equals(2, map2["2"]);
-  }
-}
-
-class ConstInit {
-  final map1;
-  final map2;
-
-  ConstInit()
-      : this.map1 = {"a": 1, "b": 2},
-        this.map2 = {"1": 1, "2": 2} {}
-
-  test() {
-    Expect.equals(1, map1["a"]);
-    Expect.equals(2, map1["b"]);
-
-    Expect.equals(1, map2["1"]);
-    Expect.equals(2, map2["2"]);
-  }
-}
-
-main() {
-  MapLiteralTest.testMain();
-}
diff --git a/tests/language/map_test.dart b/tests/language/map_test.dart
deleted file mode 100644
index 0b565fd..0000000
--- a/tests/language/map_test.dart
+++ /dev/null
@@ -1,222 +0,0 @@
-// Copyright (c) 2011, 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.
-// A subtest of the larger MapTest. Will eliminate once the full
-// test is running.
-
-import "package:expect/expect.dart";
-
-class MapTest {
-  static void testDeletedElement(Map map) {
-    map.clear();
-    for (int i = 0; i < 100; i++) {
-      map[1] = 2;
-      Expect.equals(1, map.length);
-      int x = map.remove(1);
-      Expect.equals(2, x);
-      Expect.equals(0, map.length);
-    }
-    Expect.equals(0, map.length);
-    for (int i = 0; i < 100; i++) {
-      map[i] = 2;
-      Expect.equals(1, map.length);
-      int x = map.remove(105);
-      Expect.equals(null, x);
-      Expect.equals(1, map.length);
-      x = map.remove(i);
-      Expect.equals(2, x);
-      Expect.equals(0, map.length);
-    }
-    Expect.equals(0, map.length);
-    map.remove(105);
-  }
-
-  static void test(Map map) {
-    testDeletedElement(map);
-    testMap(map, 1, 2, 3, 4, 5, 6, 7, 8);
-    map.clear();
-    testMap(map, "value1", "value2", "value3", "value4", "value5", "value6",
-        "value7", "value8");
-  }
-
-  static void testMap(Map map, key1, key2, key3, key4, key5, key6, key7, key8) {
-    int value1 = 10;
-    int value2 = 20;
-    int value3 = 30;
-    int value4 = 40;
-    int value5 = 50;
-    int value6 = 60;
-    int value7 = 70;
-    int value8 = 80;
-
-    Expect.equals(0, map.length);
-
-    map[key1] = value1;
-    Expect.equals(value1, map[key1]);
-    map[key1] = value2;
-    Expect.equals(false, map.containsKey(key2));
-    Expect.equals(1, map.length);
-
-    map[key1] = value1;
-    Expect.equals(value1, map[key1]);
-    // Add enough entries to make sure the table grows.
-    map[key2] = value2;
-    Expect.equals(value2, map[key2]);
-    Expect.equals(2, map.length);
-    map[key3] = value3;
-    Expect.equals(value2, map[key2]);
-    Expect.equals(value3, map[key3]);
-    map[key4] = value4;
-    Expect.equals(value3, map[key3]);
-    Expect.equals(value4, map[key4]);
-    map[key5] = value5;
-    Expect.equals(value4, map[key4]);
-    Expect.equals(value5, map[key5]);
-    map[key6] = value6;
-    Expect.equals(value5, map[key5]);
-    Expect.equals(value6, map[key6]);
-    map[key7] = value7;
-    Expect.equals(value6, map[key6]);
-    Expect.equals(value7, map[key7]);
-    map[key8] = value8;
-    Expect.equals(value1, map[key1]);
-    Expect.equals(value2, map[key2]);
-    Expect.equals(value3, map[key3]);
-    Expect.equals(value4, map[key4]);
-    Expect.equals(value5, map[key5]);
-    Expect.equals(value6, map[key6]);
-    Expect.equals(value7, map[key7]);
-    Expect.equals(value8, map[key8]);
-    Expect.equals(8, map.length);
-
-    map.remove(key4);
-    Expect.equals(false, map.containsKey(key4));
-    Expect.equals(7, map.length);
-
-    // Test clearing the table.
-    map.clear();
-    Expect.equals(0, map.length);
-    Expect.equals(false, map.containsKey(key1));
-    Expect.equals(false, map.containsKey(key2));
-    Expect.equals(false, map.containsKey(key3));
-    Expect.equals(false, map.containsKey(key4));
-    Expect.equals(false, map.containsKey(key5));
-    Expect.equals(false, map.containsKey(key6));
-    Expect.equals(false, map.containsKey(key7));
-    Expect.equals(false, map.containsKey(key8));
-
-    // Test adding and removing again.
-    map[key1] = value1;
-    Expect.equals(value1, map[key1]);
-    Expect.equals(1, map.length);
-    map[key2] = value2;
-    Expect.equals(value2, map[key2]);
-    Expect.equals(2, map.length);
-    map[key3] = value3;
-    Expect.equals(value3, map[key3]);
-    map.remove(key3);
-    Expect.equals(2, map.length);
-    map[key4] = value4;
-    Expect.equals(value4, map[key4]);
-    map.remove(key4);
-    Expect.equals(2, map.length);
-    map[key5] = value5;
-    Expect.equals(value5, map[key5]);
-    map.remove(key5);
-    Expect.equals(2, map.length);
-    map[key6] = value6;
-    Expect.equals(value6, map[key6]);
-    map.remove(key6);
-    Expect.equals(2, map.length);
-    map[key7] = value7;
-    Expect.equals(value7, map[key7]);
-    map.remove(key7);
-    Expect.equals(2, map.length);
-    map[key8] = value8;
-    Expect.equals(value8, map[key8]);
-    map.remove(key8);
-    Expect.equals(2, map.length);
-
-    Expect.equals(true, map.containsKey(key1));
-    Expect.equals(true, map.containsValue(value1));
-
-    // Test Map.forEach.
-    Map other_map = new Map();
-    void testForEachMap(key, value) {
-      other_map[key] = value;
-    }
-
-    map.forEach(testForEachMap);
-    Expect.equals(true, other_map.containsKey(key1));
-    Expect.equals(true, other_map.containsKey(key2));
-    Expect.equals(true, other_map.containsValue(value1));
-    Expect.equals(true, other_map.containsValue(value2));
-    Expect.equals(2, other_map.length);
-
-    other_map.clear();
-    Expect.equals(0, other_map.length);
-
-    // Test Collection.keys.
-    void testForEachCollection(value) {
-      other_map[value] = value;
-    }
-
-    Iterable keys = map.keys;
-    keys.forEach(testForEachCollection);
-    Expect.equals(true, other_map.containsKey(key1));
-    Expect.equals(true, other_map.containsKey(key2));
-    Expect.equals(true, other_map.containsValue(key1));
-    Expect.equals(true, other_map.containsValue(key2));
-    Expect.equals(true, !other_map.containsKey(value1));
-    Expect.equals(true, !other_map.containsKey(value2));
-    Expect.equals(true, !other_map.containsValue(value1));
-    Expect.equals(true, !other_map.containsValue(value2));
-    Expect.equals(2, other_map.length);
-    other_map.clear();
-    Expect.equals(0, other_map.length);
-
-    // Test Collection.values.
-    Iterable values = map.values;
-    values.forEach(testForEachCollection);
-    Expect.equals(true, !other_map.containsKey(key1));
-    Expect.equals(true, !other_map.containsKey(key2));
-    Expect.equals(true, !other_map.containsValue(key1));
-    Expect.equals(true, !other_map.containsValue(key2));
-    Expect.equals(true, other_map.containsKey(value1));
-    Expect.equals(true, other_map.containsKey(value2));
-    Expect.equals(true, other_map.containsValue(value1));
-    Expect.equals(true, other_map.containsValue(value2));
-    Expect.equals(2, other_map.length);
-    other_map.clear();
-    Expect.equals(0, other_map.length);
-
-    // Test Map.putIfAbsent.
-    map.clear();
-    Expect.equals(false, map.containsKey(key1));
-    map.putIfAbsent(key1, () => 10);
-    Expect.equals(true, map.containsKey(key1));
-    Expect.equals(10, map[key1]);
-    Expect.equals(10, map.putIfAbsent(key1, () => 11));
-  }
-
-  static testKeys(Map map) {
-    map[1] = 101;
-    map[2] = 102;
-    Iterable k = map.keys;
-    Expect.equals(2, k.length);
-    Iterable v = map.values;
-    Expect.equals(2, v.length);
-    Expect.equals(true, map.containsValue(101));
-    Expect.equals(true, map.containsValue(102));
-    Expect.equals(false, map.containsValue(103));
-  }
-
-  static testMain() {
-    test(new Map());
-    testKeys(new Map());
-  }
-}
-
-main() {
-  MapTest.testMain();
-}
diff --git a/tests/language/mega_load_test.dart b/tests/language/mega_load_test.dart
deleted file mode 100644
index c9439f9..0000000
--- a/tests/language/mega_load_test.dart
+++ /dev/null
@@ -1,208 +0,0 @@
-// 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.
-// Test megamorphic, but single target field load.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class Base {
-  var f;
-}
-
-class A extends Base {
-  A() {
-    this.f = 0;
-  }
-}
-
-class B extends Base {
-  B() {
-    this.f = 1;
-  }
-}
-
-class C extends Base {
-  C() {
-    this.f = 2;
-  }
-}
-
-class D extends Base {
-  D() {
-    this.f = 3;
-  }
-}
-
-class E extends Base {
-  E() {
-    this.f = 4;
-  }
-}
-
-class F extends Base {
-  F() {
-    this.f = 5;
-  }
-}
-
-class G extends Base {
-  G() {
-    this.f = 6;
-  }
-}
-
-class H extends Base {
-  H() {
-    this.f = 7;
-  }
-}
-
-class I extends Base {
-  I() {
-    this.f = 8;
-  }
-}
-
-class J extends Base {
-  J() {
-    this.f = 9;
-  }
-}
-
-class K extends Base {
-  K() {
-    this.f = 10;
-  }
-}
-
-class L extends Base {
-  L() {
-    this.f = 11;
-  }
-}
-
-class M extends Base {
-  M() {
-    this.f = 12;
-  }
-}
-
-class N extends Base {
-  N() {
-    this.f = 13;
-  }
-}
-
-class O extends Base {
-  O() {
-    this.f = 14;
-  }
-}
-
-class P extends Base {
-  P() {
-    this.f = 15;
-  }
-}
-
-class Q extends Base {
-  Q() {
-    this.f = 16;
-  }
-}
-
-class R extends Base {
-  R() {
-    this.f = 17;
-  }
-}
-
-class S extends Base {
-  S() {
-    this.f = 18;
-  }
-}
-
-class T extends Base {
-  T() {
-    this.f = 19;
-  }
-}
-
-class U extends Base {
-  U() {
-    this.f = 20;
-  }
-}
-
-class V extends Base {
-  V() {
-    this.f = 21;
-  }
-}
-
-class W extends Base {
-  V() {
-    this.f = 22;
-  }
-}
-
-class X extends Base {
-  V() {
-    this.f = 21;
-  }
-}
-
-class Y extends Base {
-  V() {
-    this.f = 24;
-  }
-}
-
-class Z extends Base {
-  V() {
-    this.f = 21;
-  }
-}
-
-allocateObjects() {
-  var list = new List();
-  list.add(new A());
-  list.add(new B());
-  list.add(new C());
-  list.add(new D());
-  list.add(new E());
-  list.add(new F());
-  list.add(new G());
-  list.add(new H());
-  list.add(new I());
-  list.add(new J());
-  list.add(new K());
-  list.add(new L());
-  list.add(new M());
-  list.add(new N());
-  list.add(new O());
-  list.add(new P());
-  list.add(new Q());
-  list.add(new R());
-  list.add(new S());
-  list.add(new T());
-  list.add(new U());
-  list.add(new V());
-  return list;
-}
-
-callThemAll(var list) {
-  for (var i = 0; i < list.length; i++) {
-    Expect.equals(i, list[i].f);
-  }
-}
-
-main() {
-  var list = allocateObjects();
-  // Make sure the optimizer triggers the compilation of callThemAll.
-  for (var i = 0; i < 20; i++) {
-    callThemAll(list);
-  }
-}
diff --git a/tests/language/megamorphic_no_such_method_test.dart b/tests/language/megamorphic_no_such_method_test.dart
deleted file mode 100644
index 43938e0..0000000
--- a/tests/language/megamorphic_no_such_method_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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.
-// Test program for correct optimizations related to types fo allocated lists.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Classes to induce polymorphism of degree 10.
-class A0 {
-  test() => 0;
-}
-
-class A1 {
-  test() => 1;
-}
-
-class A2 {
-  test() => 2;
-}
-
-class A3 {
-  test() => 3;
-}
-
-class A4 {
-  test() => 4;
-}
-
-class A5 {
-  test() => 5;
-}
-
-class A6 {
-  test() => 6;
-}
-
-class A7 {
-  test() => 7;
-}
-
-class A8 {
-  test() => 8;
-}
-
-class A9 {
-  test() => 9;
-}
-
-// Class with no test method.
-class B {}
-
-test(obj) {
-  return obj.test();
-}
-
-main() {
-  // Trigger optimization of 'test' function.
-  List list = [
-    new A0(),
-    new A1(),
-    new A2(),
-    new A3(),
-    new A4(),
-    new A5(),
-    new A6(),
-    new A7(),
-    new A8(),
-    new A9()
-  ];
-  for (int i = 0; i < 20; i++) {
-    for (var obj in list) {
-      test(obj);
-    }
-  }
-  Expect.throws(() => test(new B()), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/memory_swap_test.dart b/tests/language/memory_swap_test.dart
deleted file mode 100644
index b8d093e..0000000
--- a/tests/language/memory_swap_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that the ParalleMoveResolver in the VM uses valid registers
-// when requiring scratch registers.
-
-main() {
-  // Iterate enough to ensure optimizing `spillingMethod`.
-  for (int i = 0; i < 100000; i++) {
-    spillingMethod(i, () => 0);
-  }
-}
-
-spillingMethod(what, obfuscate) {
-  // Define lots of variables to get a few in stack.
-  var a = obfuscate();
-  var b = obfuscate();
-  var c = obfuscate();
-  var d = obfuscate();
-  var e = obfuscate();
-  var f = obfuscate();
-  var g = obfuscate();
-  var h = obfuscate();
-  var i = obfuscate();
-  var j = obfuscate();
-  var k = obfuscate();
-  var l = obfuscate();
-  var m = obfuscate();
-  var n = obfuscate();
-  var o = obfuscate();
-  var p = obfuscate();
-  var q = obfuscate();
-  var r = obfuscate();
-  var s = obfuscate();
-  var t = obfuscate();
-  var u = obfuscate();
-  var v = obfuscate();
-
-  // Swap all variables, in the hope of a memory <-> memory swap operation.
-  while (what == 42) {
-    a = b;
-    b = a;
-    c = d;
-    d = c;
-    e = f;
-    f = e;
-    g = h;
-    h = g;
-    i = j;
-    j = i;
-    k = l;
-    l = k;
-    m = n;
-    n = m;
-    o = p;
-    p = o;
-    q = r;
-    r = q;
-    s = t;
-    t = s;
-    u = v;
-    v = u;
-    what++;
-  }
-
-  // Keep all variables alive.
-  return a +
-      b +
-      c +
-      d +
-      e +
-      f +
-      g +
-      h +
-      i +
-      j +
-      k +
-      l +
-      m +
-      n +
-      o +
-      p +
-      q +
-      r +
-      s +
-      t +
-      u +
-      v;
-}
diff --git a/tests/language/metadata_lib.dart b/tests/language/metadata_lib.dart
deleted file mode 100644
index 94923eb..0000000
--- a/tests/language/metadata_lib.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-library metadata.dart;
-
-class Alien {
-  final String qwrrkz;
-  const Alien(this.qwrrkz);
-  const Alien.unknown() : qwrrkz = "???";
-}
-
-const Klingon = const Alien("Klingon");
diff --git a/tests/language/metadata_scope1_test.dart b/tests/language/metadata_scope1_test.dart
deleted file mode 100644
index c70d9fa..0000000
--- a/tests/language/metadata_scope1_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that a type variable is not in scope for metadata declared on the type
-// declaration.
-
-@deprecated
-typedef Foo
-<deprecated> // //# 01: ok
-    ();
-
-main() {
-  Foo f = null;
-}
diff --git a/tests/language/metadata_scope2_test.dart b/tests/language/metadata_scope2_test.dart
deleted file mode 100644
index 9b1ded6..0000000
--- a/tests/language/metadata_scope2_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that a type variable is not in scope for metadata declared on the type
-// declaration.
-
-@deprecated
-class Foo
-<deprecated> // //# 01: ok
-{}
-
-main() {
-  Foo f = null;
-}
diff --git a/tests/language/metadata_self_test.dart b/tests/language/metadata_self_test.dart
deleted file mode 100644
index 434cc38..0000000
--- a/tests/language/metadata_self_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that metadata refer to the annotated declaration.
-
-@Foo()
-class Foo {
-  const Foo();
-}
-
-main() {
-  Foo f = const Foo();
-}
diff --git a/tests/language/metadata_test.dart b/tests/language/metadata_test.dart
deleted file mode 100644
index e358b12..0000000
--- a/tests/language/metadata_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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.
-
-// Test ensuring that compiler can parse metadata. Need to add negative
-// test cases with illegal metadata annotations.
-
-library metadata_test.dart;
-
-import "package:expect/expect.dart";
-import "metadata_lib.dart" as Meta;
-
-class Tag {
-  final String annotation;
-  const Tag(this.annotation);
-}
-
-const meta1 = 1;
-const meta2 = const Tag("meta2");
-
-const extern = const Tag("external");
-
-@meta1
-var topLevelVar;
-@Meta.Alien.unknown()
-List unknownUnknowns;
-
-@meta1
-typedef int DingDong<@meta2 T>(@meta1 event);
-
-@meta1
-class A<@Tag("typeParam") T> {
-  @meta1
-  @meta2
-  static String staticField;
-
-  @Meta.Alien("ET")
-  int foo(@meta1 bool fool, {@meta1 @Tag("opt") x: 100}) {
-    g() => 10;
-    return x * g();
-  }
-
-  @Tag(r"timewarp")
-  List<int> getNextWeeksLottoNumbers() => [1, 2, 3, 4, 5, 6];
-}
-
-@meta1
-main() {
-  @meta1
-  var a = new A();
-  Expect.equals(0, a.foo(false, x: 0));
-
-  for (@Tag("loopvar")
-  int i = 0;
-      i < 10;
-      i++) {
-    // Do something.
-  }
-
-  @meta1
-  var s = r'This is a raw \\ string.';
-}
diff --git a/tests/language/method_binding_test.dart b/tests/language/method_binding_test.dart
deleted file mode 100644
index 325e1c9..0000000
--- a/tests/language/method_binding_test.dart
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Bind a method to a variable that can be invoked as a function
-
-class A {
-  int a;
-
-  static var func;
-
-  A(this.a) {}
-
-  static foo() {
-    return 4;
-  }
-
-  bar() {
-    return a;
-  }
-
-  int baz() {
-    return a;
-  }
-
-  getThis() {
-    return this.bar;
-  }
-
-  getNoThis() {
-    return bar;
-  }
-
-  methodArgs(arg) {
-    return arg + a;
-  }
-
-  selfReference() {
-    return selfReference;
-  }
-
-  invokeBaz() {
-    return (baz)();
-  }
-
-  invokeBar(var obj) {
-    return (obj.bar)();
-  }
-
-  invokeThisBar() {
-    return (this.bar)();
-  }
-
-  implicitStaticRef() {
-    return foo;
-  }
-}
-
-class B {
-  static foo() {
-    return -1;
-  }
-}
-
-class C {
-  C() {}
-  var f;
-}
-
-topLevel99() {
-  return 99;
-}
-
-var topFunc;
-
-class D extends A {
-  D(a) : super(a) {}
-  getSuper() {
-    return super.bar;
-  }
-}
-
-class MethodBindingTest {
-  static test() {
-    // Create closure from global
-    Expect.equals(99, topLevel99());
-    Function f99 = topLevel99;
-    Expect.equals(99, f99());
-
-    // Invoke closure through a global
-    topFunc = f99;
-    Expect.equals(99, topFunc());
-
-    // Create closure from static method
-    Function f4 = A.foo;
-    Expect.equals(4, f4());
-
-    // Create closure from instance method
-    var o5 = new A(5);
-    Function f5 = o5.bar;
-    Expect.equals(5, f5());
-
-    // Assign closure to field and invoke it
-    var c = new C();
-    c.f = () => "success";
-    Expect.equals("success", c.f());
-
-    // referencing instance method with explicit 'this' qualiier
-    var o6 = new A(6);
-    var f6 = o6.getThis();
-    Expect.equals(6, f6());
-
-    // referencing an instance method with no qualifier
-    var o7 = new A(7);
-    var f7 = o7.getNoThis();
-    Expect.equals(7, f7());
-
-    // bind a method that takes arguments
-    var o8 = new A(8);
-    Function f8 = o8.methodArgs;
-    Expect.equals(9, f8(1));
-
-    // Self referential method
-    var o9 = new A(9);
-    Function f9 = o9.selfReference;
-
-    // invoking a known method as if it were a bound closure...
-    var o10 = new A(10);
-    Expect.equals(10, o10.invokeBaz());
-
-    // invoking a known method as if it were a bound closure...
-    var o11 = new A(11);
-    Expect.equals(10, o11.invokeBar(o10));
-
-    // invoking a known method as if it were a bound closure...
-    var o12 = new A(12);
-    Expect.equals(12, o12.invokeThisBar());
-
-    // bind to a static variable with no explicit class qualifier
-    var o13 = new A(13);
-    Function f13 = o13.implicitStaticRef();
-    Expect.equals(4, f13());
-
-    var o14 = new D(14);
-    Function f14 = o14.getSuper();
-    Expect.equals(14, f14());
-
-    // Assign static field to a function and invoke it.
-    A.func = A.foo;
-    Expect.equals(4, A.func());
-
-    // bind a function that is possibly native in Javascript.
-    String o15 = 'hithere';
-    var f15 = o15.substring;
-    Expect.equals('i', f15(1, 2));
-
-    var o16 = 'hithere';
-    var f16 = o16.substring;
-    Expect.equals('i', f16(1, 2));
-
-    var f17 = 'hithere'.substring;
-    Expect.equals('i', f17(1, 2));
-  }
-
-  static testMain() {
-    test();
-  }
-}
-
-main() {
-  MethodBindingTest.testMain();
-}
diff --git a/tests/language/method_invocation_test.dart b/tests/language/method_invocation_test.dart
deleted file mode 100644
index 3cc47a6..0000000
--- a/tests/language/method_invocation_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Testing method invocation.
-// Currently testing only NoSuchMethodError.
-
-class A {
-  A() {}
-  int foo() {
-    return 1;
-  }
-}
-
-class B {
-  get f {
-    throw 123;
-  }
-}
-
-class MethodInvocationTest {
-  static void testNullReceiver() {
-    A a = new A();
-    Expect.equals(1, a.foo());
-    a = null;
-    bool exceptionCaught = false;
-    try {
-      a.foo();
-    } on NoSuchMethodError catch (e) {
-      exceptionCaught = true;
-    }
-    Expect.equals(true, exceptionCaught);
-  }
-
-  static testGetterMethodInvocation() {
-    var b = new B();
-    try {
-      b.f();
-    } catch (e) {
-      Expect.equals(123, e);
-    }
-  }
-
-  static void testMain() {
-    testNullReceiver();
-    testGetterMethodInvocation();
-  }
-}
-
-main() {
-  MethodInvocationTest.testMain();
-}
diff --git a/tests/language/method_name_test.dart b/tests/language/method_name_test.dart
deleted file mode 100644
index 7c79a27..0000000
--- a/tests/language/method_name_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests that methods with names "get", "set" and "operator" don't
-// cause fatal problems.
-
-// With return type.
-class A {
-  int get() {
-    return 1;
-  }
-
-  int set() {
-    return 2;
-  }
-
-  int operator() {
-    return 3;
-  }
-
-  int factory() {
-    return 4;
-  }
-}
-
-// Without return types.
-class B {
-  get() {
-    return 1;
-  }
-
-  set() {
-    return 2;
-  }
-
-  operator() {
-    return 3;
-  }
-
-  factory() {
-    return 4;
-  }
-}
-
-main() {
-  {
-    A a = new A();
-    Expect.equals(1, a.get());
-    Expect.equals(2, a.set());
-    Expect.equals(3, a.operator());
-    Expect.equals(4, a.factory());
-  }
-  {
-    B b = new B();
-    Expect.equals(1, b.get());
-    Expect.equals(2, b.set());
-    Expect.equals(3, b.operator());
-    Expect.equals(4, b.factory());
-  }
-}
diff --git a/tests/language/method_override2_test.dart b/tests/language/method_override2_test.dart
deleted file mode 100644
index fb9e8f9..0000000
--- a/tests/language/method_override2_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-
-// Checks that an overriding method has compatible parameters.
-
-abstract class I {
-  m({a, b});
-}
-
-abstract class J extends I {}
-
-abstract class K extends J {
-  m({c, d}); // //# 00: static type warning
-}
-
-class C implements I {
-  m({a, b}) {
-    print("$a $b");
-  }
-}
-
-class D
-    extends C // //# 01: static type warning
-    implements I // //# 02: static type warning
-    implements J // //# 03: static type warning
-{
-  m({c, d}) {
-    print("$c $d");
-  }
-}
-
-int main() {
-  var c = new C();
-  c.m(a: "hello", b: "world");
-  var d = new D();
-  d.m(c: "hello", d: "world");
-  print("${c is I} ${d is I} ${d is I} ${d is J}");
-}
diff --git a/tests/language/method_override3_test.dart b/tests/language/method_override3_test.dart
deleted file mode 100644
index 7500577..0000000
--- a/tests/language/method_override3_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class A {
-  foo(required1, {named1: 499}) => -(required1 + named1 * 3);
-  bar(required1, required2, {named1: 13, named2: 17}) =>
-      -(required1 + required2 * 3 + named1 * 5 + named2 * 7);
-  gee({named1: 31}) => -named1;
-}
-
-class B extends A {
-  foo(
-      required1
-     /* // //# 00: static type warning
-      ,
-      {named1: 499}
-     */ // //# 00: static type warning
-      ) {
-    return required1;
-  }
-
-  bar(required1, required2,
-      {named1: 13
-      /* // //# 01: static type warning
-      ,
-      named2: 17
-      */ // //# 01: static type warning
-      }) {
-    return required1 + required2 * 3 + named1 * 5;
-  }
-
-  gee(
-      {named2: 11
-      /* // //# 02: static type warning
-      ,
-      named1: 31
-      */ // //# 02: static type warning
-      }) {
-    return named2 * 99;
-  }
-}
-
-main() {
-  var b = new B();
-  Expect.equals(499, b.foo(499));
-  Expect.equals(1 + 3 * 3 + 5 * 5, b.bar(1, 3, named1: 5));
-  Expect.equals(1 + 3 * 3 + 13 * 5, b.bar(1, 3));
-  Expect.equals(3 * 99, b.gee(named2: 3));
-  Expect.equals(11 * 99, b.gee());
-}
diff --git a/tests/language/method_override4_test.dart b/tests/language/method_override4_test.dart
deleted file mode 100644
index ea6c90d..0000000
--- a/tests/language/method_override4_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class A {
-  foo(required1, {named1: 499}) => -(required1 + named1 * 3);
-  bar(required1, required2, {named1: 13, named2: 17}) =>
-      -(required1 + required2 * 3 + named1 * 5 + named2 * 7);
-  gee({named1: 31}) => -named1;
-}
-
-class B extends A {
-  foo(required1) => required1;
-  bar(required1, required2, {named1: 29}) =>
-      required1 + required2 * 3 + named1 * 5;
-  gee({named2: 11}) => named2 * 99;
-}
-
-main() {
-  var b = new B();
-  Expect.throws(() => b.foo(499, named1: 88), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => b.bar(1, 2, named1: 3, named2: 88), (e) => e is NoSuchMethodError);
-  Expect.throws(() => b.bar(1, 2, named2: 88), (e) => e is NoSuchMethodError);
-  Expect.throws(() => b.gee(named1: 3), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/method_override5_test.dart b/tests/language/method_override5_test.dart
deleted file mode 100644
index 1a79801..0000000
--- a/tests/language/method_override5_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class A {
-  foo(required1, {named1: 499}) => -(required1 + named1 * 3);
-  bar(required1, required2, {named1: 13, named2: 17}) =>
-      -(required1 + required2 * 3 + named1 * 5 + named2 * 7);
-  gee({named1: 31}) => -named1;
-}
-
-class B extends A {
-  foo(required1) => required1;
-  bar(required1, required2, {named1: 29}) =>
-      required1 + required2 * 3 + named1 * 5;
-  gee({named2: 11}) => named2 * 99;
-}
-
-main() {
-  // Invoke all A methods so that they are registered.
-  var a = new A();
-  Expect.equals(
-      -2092,
-      a.foo(499, named1: 88) +
-          a.bar(1, 2, named1: 3, named2: 88) +
-          a.bar(1, 2, named2: 88) +
-          a.gee(named1: 3));
-  var b = new B();
-  Expect.throws(() => b.foo(499, named1: 88), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => b.bar(1, 2, named1: 3, named2: 88), (e) => e is NoSuchMethodError);
-  Expect.throws(() => b.bar(1, 2, named2: 88), (e) => e is NoSuchMethodError);
-  Expect.throws(() => b.gee(named1: 3), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/method_override6_test.dart b/tests/language/method_override6_test.dart
deleted file mode 100644
index 2e895e8..0000000
--- a/tests/language/method_override6_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class A {
-  foo(required1, {named1: 499}) => -(required1 + named1 * 3);
-  bar(required1, required2, {named1: 13, named2: 17}) =>
-      -(required1 + required2 * 3 + named1 * 5 + named2 * 7);
-  gee({named1: 31}) => -named1;
-}
-
-class B extends A {
-  foo(required1) => required1;
-  bar(required1, required2, {named1: 29}) =>
-      required1 + required2 * 3 + named1 * 5;
-  gee({named2: 11}) => named2 * 99;
-}
-
-main() {
-  // Invoke all A methods so that they are registered.
-  var a = new A();
-  Expect.equals(
-      -2092,
-      a.foo(499, named1: 88) +
-          a.bar(1, 2, named1: 3, named2: 88) +
-          a.bar(1, 2, named2: 88) +
-          a.gee(named1: 3));
-  var b = new B();
-  Expect.equals(499, b.foo(499));
-  Expect.equals(1 + 3 * 3 + 5 * 5, b.bar(1, 3, named1: 5));
-  Expect.equals(1 + 3 * 3 + 29 * 5, b.bar(1, 3));
-  Expect.equals(3 * 99, b.gee(named2: 3));
-  Expect.equals(11 * 99, b.gee());
-}
diff --git a/tests/language/method_override7_test.dart b/tests/language/method_override7_test.dart
deleted file mode 100644
index 78009e9..0000000
--- a/tests/language/method_override7_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we report a compile-time error when a static function conflicts
-// with an inherited instance member of the same name.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: compile-time error
-  get foo => 42; // //# 01: compile-time error
-  foo() => 42; // //# 02: compile-time error
-  set foo(value) { } // //# 03: static type warning
-}
-
-class B extends A {
-  static foo() => 42;
-}
-
-main() {
-  Expect.equals(42, B.foo());
-}
diff --git a/tests/language/method_override8_test.dart b/tests/language/method_override8_test.dart
deleted file mode 100644
index f58c266..0000000
--- a/tests/language/method_override8_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we report a compile-time error when an instance method conflicts
-// with an inherited instance field or getter of the same name.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: compile-time error
-  get foo => 42; // //# 01: compile-time error
-  foo() => 42; // //# 02: ok
-  set foo(value) { } // //# 03: static type warning
-}
-
-class B extends A {
-  foo() => 42;
-}
-
-main() {
-  Expect.equals(42, new B().foo());
-}
diff --git a/tests/language/method_override_test.dart b/tests/language/method_override_test.dart
deleted file mode 100644
index c5428d3..0000000
--- a/tests/language/method_override_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Checks that a method with an instantiated return type can override a method
-// with a generic return type.
-
-typedef V RemoveFunctionType<K, V>(K key);
-
-class MapBase<K, V> implements Map<K, V> {
-  K remove(K key) {
-    throw 'Must be implemented';
-  }
-
-  void Tests() {
-    Expect.isTrue(this is MapBase<int, int>);
-
-    Expect.isTrue(remove is RemoveFunctionType);
-    Expect.isTrue(remove is RemoveFunctionType<int, int>);
-    Expect.isTrue(remove is! RemoveFunctionType<String, int>);
-    Expect.isTrue(remove is! RemoveFunctionType<MapBase<int, int>, int>);
-  }
-}
-
-class MethodOverrideTest extends MapBase<String, String> {
-  String remove(String key) {
-    throw 'Must be implemented';
-  }
-
-  void Tests() {
-    Expect.isTrue(this is MethodOverrideTest);
-    Expect.isTrue(this is MapBase<String, String>);
-
-    Expect.isTrue(remove is RemoveFunctionType);
-    Expect.isTrue(remove is RemoveFunctionType<String, String>);
-    Expect.isTrue(remove is! RemoveFunctionType<int, int>);
-    Expect.isTrue(super.remove is RemoveFunctionType);
-    Expect.isTrue(super.remove is RemoveFunctionType<String, String>);
-    Expect.isTrue(super.remove is! RemoveFunctionType<int, int>);
-  }
-}
-
-main() {
-  // Since method overriding is only checked statically, explicitly check
-  // the subtyping relation using a function type alias.
-  var x = new MethodOverrideTest();
-  Expect.isTrue(x.remove is RemoveFunctionType<String, String>);
-
-  // Perform a few more tests.
-  x.Tests();
-
-  var m = new MapBase<int, int>();
-  Expect.isTrue(m.remove is RemoveFunctionType<int, int>);
-
-  // Perform a few more tests.
-  m.Tests();
-}
diff --git a/tests/language/methods_as_constants2_test.dart b/tests/language/methods_as_constants2_test.dart
deleted file mode 100644
index 4c64077..0000000
--- a/tests/language/methods_as_constants2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-// Test that a function only used by compile-time constants is being
-// generated.
-
-import "package:expect/expect.dart";
-
-topLevelMethod() => 42;
-
-class A {
-  final Function f;
-  const A(this.f);
-}
-
-main() {
-  Expect.equals(42, const A(topLevelMethod).f());
-}
diff --git a/tests/language/methods_as_constants_test.dart b/tests/language/methods_as_constants_test.dart
deleted file mode 100644
index e92d024..0000000
--- a/tests/language/methods_as_constants_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// 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";
-
-topLevelMethod() => 't';
-
-const topLevelFieldForTopLevelMethod = topLevelMethod;
-const topLevelFieldForStaticMethod = A.staticMethod;
-
-class A {
-  final Function closure;
-  const A(this.closure);
-  const A.defaultTopLevel([this.closure = topLevelMethod]);
-  const A.defaultStatic([this.closure = staticMethod]);
-  const A.defaultStatic2([this.closure = A.staticMethod]);
-  run() => closure();
-
-  static staticMethod() => 's';
-  static const staticFieldForStaticMethod = staticMethod;
-  static const staticFieldForTopLevelMethod = topLevelMethod;
-}
-
-main() {
-  Expect.equals('t', (const A(topLevelMethod)).run());
-  Expect.equals('s', (const A(A.staticMethod)).run());
-  Expect.equals('t', (const A.defaultTopLevel()).run());
-  Expect.equals('s', (const A.defaultStatic()).run());
-  Expect.equals('s', (const A.defaultStatic2()).run());
-  Expect.equals('t', (new A.defaultTopLevel()).run());
-  Expect.equals('s', (new A.defaultStatic()).run());
-  Expect.equals('s', (new A.defaultStatic2()).run());
-  Expect.equals('t', topLevelFieldForTopLevelMethod());
-  Expect.equals('s', topLevelFieldForStaticMethod());
-  Expect.equals('t', A.staticFieldForTopLevelMethod());
-  Expect.equals('s', A.staticFieldForStaticMethod());
-
-  var map = const {'t': topLevelMethod, 's': A.staticMethod};
-  Expect.equals('t', map['t']());
-  Expect.equals('s', map['s']());
-}
diff --git a/tests/language/minify_closure_variable_collision_test.dart b/tests/language/minify_closure_variable_collision_test.dart
deleted file mode 100644
index 282acef..0000000
--- a/tests/language/minify_closure_variable_collision_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js, that used to minify a captured
-// variable's name to the same name as inherited Object methods.
-
-var array = [new A()];
-
-class A {
-  operator ==(other) {
-    return true;
-  }
-}
-
-foo() {
-  // Use lots of variables, to maximize the chance of collisions.
-  var a = 42;
-  var b = 42;
-  var c = 42;
-  var d = 42;
-  var e = 42;
-  var f = 42;
-  var g = 42;
-  var h = 42;
-  var i = 42;
-  var j = 42;
-  var k = 42;
-  var l = 42;
-  var m = 42;
-  var n = 42;
-  array[0] = () {
-    return a + b + c + d + e + f + g + h + i + j + k + l + m + n;
-  };
-}
-
-main() {
-  foo();
-  if (array[0] == new A()) {
-    throw 'Test failed';
-  }
-  if (array[0]() != 42 * 14) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/language/mint_arithmetic_test.dart b/tests/language/mint_arithmetic_test.dart
deleted file mode 100644
index 8cc89dd..0000000
--- a/tests/language/mint_arithmetic_test.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test arithmetic on 64-bit integers.
-
-test_and_1() {
-  try {
-    // Avoid optimizing this function.
-    f(a, b) {
-      var s = b;
-      var t = a & s;
-      return t == b;
-    }
-
-    var x = 0xffffffff;
-    for (var i = 0; i < 20; i++) f(x, 0);
-    Expect.equals(true, f(x, 0));
-    Expect.equals(false, f(x, -1)); // Triggers deoptimization.
-  } finally {}
-}
-
-test_and_2() {
-  try {
-    // Avoid optimizing this function.
-    f(a, b) {
-      return a & b;
-    }
-
-    var x = 0xffffffff;
-    for (var i = 0; i < 20; i++) f(x, x);
-    Expect.equals(x, f(x, x));
-    Expect.equals(1234, f(0xffffffff, 1234));
-    Expect.equals(0x100000001, f(0x100000001, -1));
-    Expect.equals(-0x40000000, f(-0x40000000, -1));
-    Expect.equals(0x40000000, f(0x40000000, -1));
-    Expect.equals(0x3fffffff, f(0x3fffffff, -1));
-  } finally {}
-}
-
-test_xor_1() {
-  try {
-    // Avoid optimizing this function.
-    f(a, b) {
-      var s = b;
-      var t = a ^ s;
-      return t;
-    }
-
-    var x = 0xffffffff;
-    for (var i = 0; i < 20; i++) f(x, x);
-    Expect.equals(0, f(x, x));
-    Expect.equals(-x - 1, f(x, -1));
-    var y = 0xffffffffffffffff;
-    Expect.equals(-y - 1, f(y, -1)); // Triggers deoptimization.
-  } finally {}
-}
-
-test_or_1() {
-  try {
-    // Avoid optimizing this function.
-    f(a, b) {
-      var s = b;
-      var t = a | s;
-      return t;
-    }
-
-    var x = 0xffffffff;
-    for (var i = 0; i < 20; i++) f(x, x);
-    Expect.equals(x, f(x, x));
-    Expect.equals(-1, f(x, -1));
-    var y = 0xffffffffffffffff;
-    Expect.equals(-1, f(y, -1)); // Triggers deoptimization.
-  } finally {}
-}
-
-test_func(x, y) => (x & y) + 1.0;
-
-test_mint_double_op() {
-  for (var i = 0; i < 20; i++) test_func(4294967295, 1);
-  Expect.equals(2.0, test_func(4294967295, 1));
-}
-
-main() {
-  for (var i = 0; i < 5; i++) {
-    test_and_1();
-    test_and_2();
-    test_xor_1();
-    test_or_1();
-    test_mint_double_op();
-  }
-}
diff --git a/tests/language/mint_compares_test.dart b/tests/language/mint_compares_test.dart
deleted file mode 100644
index 7f51ce2d..0000000
--- a/tests/language/mint_compares_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test compares on 64-bit integers.
-
-compareTest() {
-  Expect.isFalse(4294967296 < 6);
-  Expect.isFalse(4294967296 < 4294967296);
-  Expect.isFalse(4294967296 <= 6);
-  Expect.isTrue(4294967296 <= 4294967296);
-  Expect.isFalse(4294967296 < 4294967295);
-
-  Expect.isTrue(-4294967296 < 6);
-  Expect.isTrue(-4294967296 < 4294967296);
-  Expect.isTrue(-4294967296 <= 6);
-  Expect.isTrue(-4294967296 <= 4294967296);
-  Expect.isTrue(-4294967296 < 4294967295);
-
-  Expect.isFalse(4294967296 < -6);
-  Expect.isFalse(4294967296 <= -6);
-  Expect.isFalse(4294967296 < -4294967295);
-
-  Expect.isTrue(-4294967296 < -6);
-  Expect.isTrue(-4294967296 <= -6);
-  Expect.isTrue(-4294967296 < -4294967295);
-
-  Expect.isTrue(4294967296 > 6);
-  Expect.isFalse(4294967296 > 4294967296);
-  Expect.isTrue(4294967296 >= 6);
-  Expect.isTrue(4294967296 >= 4294967296);
-  Expect.isTrue(4294967296 > 4294967295);
-
-  Expect.isFalse(-4294967296 > 6);
-  Expect.isFalse(-4294967296 > 4294967296);
-  Expect.isFalse(-4294967296 >= 6);
-  Expect.isFalse(-4294967296 >= 4294967296);
-  Expect.isFalse(-4294967296 > 4294967295);
-
-  Expect.isTrue(4294967296 > -6);
-  Expect.isTrue(4294967296 >= -6);
-  Expect.isTrue(4294967296 > -4294967295);
-
-  Expect.isFalse(-4294967296 > -6);
-  Expect.isFalse(-4294967296 >= -6);
-  Expect.isFalse(-4294967296 > -4294967295);
-
-  Expect.isTrue(4294967296 < 184467440737095516150);
-  Expect.isTrue(-4294967296 < 184467440737095516150);
-  Expect.isFalse(4294967296 < -184467440737095516150);
-  Expect.isFalse(-4294967296 < -184467440737095516150);
-}
-
-compareTest2(lt, lte, gt, gte) {
-  Expect.isFalse(lt(4294967296, 6));
-  Expect.isFalse(lte(4294967296, 6));
-  Expect.isTrue(gt(4294967296, 6));
-  Expect.isTrue(gte(4294967296, 6));
-
-  Expect.isTrue(lte(-1, -1));
-  Expect.isTrue(gte(-1, -1));
-  Expect.isTrue(lte(-2, -1));
-  Expect.isFalse(gte(-2, -1));
-  Expect.isTrue(lte(-4294967296, -1));
-  Expect.isFalse(gte(-4294967296, -1));
-
-  Expect.isTrue(lt(-2, -1));
-  Expect.isFalse(gt(-2, -1));
-  Expect.isTrue(lt(-4294967296, -1));
-  Expect.isFalse(gt(-4294967296, -1));
-
-  Expect.isFalse(lt(-1, -4294967296));
-  Expect.isTrue(gt(-1, -4294967296));
-  Expect.isFalse(lt(2, -2));
-  Expect.isTrue(gt(2, -2));
-  Expect.isFalse(lt(4294967296, -1));
-  Expect.isTrue(gt(4294967296, -1));
-}
-
-bool lt1(a, b) => a < b;
-bool lte1(a, b) => a <= b;
-bool gt1(a, b) => a > b;
-bool gte1(a, b) => a >= b;
-
-bool lt2(a, b) => a < b ? true : false;
-bool lte2(a, b) => a <= b ? true : false;
-bool gt2(a, b) => a > b ? true : false;
-bool gte2(a, b) => a >= b ? true : false;
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    compareTest();
-    compareTest2(lt1, lte1, gt1, gte1);
-    compareTest2(lt2, lte2, gt2, gte2);
-  }
-}
diff --git a/tests/language/missing_const_constructor_test.dart b/tests/language/missing_const_constructor_test.dart
deleted file mode 100644
index 54664f4..0000000
--- a/tests/language/missing_const_constructor_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test handling of unknown constructor in const expression.
-
-class GoodClass {
-  const GoodClass();
-}
-
-GoodClass GOOD_CLASS
-    = const GoodClass() //# 01: ok
-    = const GoodClass.BAD_NAME() //# 02: compile-time error
-    = const GoodClass("bad arg") //# 03: compile-time error
-    ;
-
-const BadClass BAD_CLASS = const BadClass(); //# 04: compile-time error
-BadClass BAD_CLASS = const BadClass(); //# 05: compile-time error
-
-void main() {
-  try {
-    print(GOOD_CLASS);
-    print(BAD_CLASS); //# 04: continued
-    print(BAD_CLASS); //# 05: continued
-    print(const BadClass()); //# 06: compile-time error
-  } catch (e) {}
-}
diff --git a/tests/language/missing_part_of_tag_part.dart b/tests/language/missing_part_of_tag_part.dart
deleted file mode 100644
index c4618bc..0000000
--- a/tests/language/missing_part_of_tag_part.dart
+++ /dev/null
@@ -1,3 +0,0 @@
-// Copyright (c) 2013, 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.
diff --git a/tests/language/missing_part_of_tag_test.dart b/tests/language/missing_part_of_tag_test.dart
deleted file mode 100644
index ea91f42..0000000
--- a/tests/language/missing_part_of_tag_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for missing part-of tag.
-
-library lib;
-
-part 'missing_part_of_tag_part.dart'; //# 01: compile-time error
-
-void main() {}
diff --git a/tests/language/mixin_black_listed_test.dart b/tests/language/mixin_black_listed_test.dart
deleted file mode 100644
index 08ff386..0000000
--- a/tests/language/mixin_black_listed_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Check mixin of black-listed types.
-
-import 'package:expect/expect.dart';
-
-class C {}
-
-class D {}
-
-class C1 extends Object
-with String //# 01: compile-time error
-{}
-
-class D1 extends Object with C
-, Null //# 02: compile-time error
-{}
-
-class E1 extends Object
-    with
-int, //# 03: compile-time error
-        C {}
-
-class F1 extends Object
-    with
-        C
-, double //# 04: compile-time error
-        ,
-        D {}
-
-class C2 = Object with num; //# 05: compile-time error
-
-class D2 = Object with C
-, bool //# 06: compile-time error
-    ;
-
-class E2 = Object
-    with
-String, //# 07: compile-time error
-        C;
-
-class F2 = Object
-    with
-        C,
-dynamic, //# 08: compile-time error
-        D;
-
-main() {
-  Expect.isNotNull(new C1());
-  Expect.isNotNull(new D1());
-  Expect.isNotNull(new E1());
-  Expect.isNotNull(new F1());
-  Expect.isNotNull(new C2()); //# 05: continued
-  Expect.isNotNull(new D2());
-  Expect.isNotNull(new E2());
-  Expect.isNotNull(new F2());
-}
diff --git a/tests/language/mixin_bound_test.dart b/tests/language/mixin_bound_test.dart
deleted file mode 100644
index 23b4e29..0000000
--- a/tests/language/mixin_bound_test.dart
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (c) 2014, 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";
-
-// library abstract_expressions;
-
-abstract class AbstractExpression {}
-
-abstract class AbstractAddition<E> {
-  E operand1, operand2;
-  AbstractAddition(this.operand1, this.operand2);
-}
-
-abstract class AbstractSubtraction<E> {
-  E operand1, operand2;
-  AbstractSubtraction(this.operand1, this.operand2);
-}
-
-abstract class AbstractNumber {
-  int val;
-  AbstractNumber(this.val);
-}
-
-// library evaluator;
-
-abstract class ExpressionWithEval {
-  int get eval;
-}
-
-abstract class AdditionWithEval<E extends ExpressionWithEval> {
-  E get operand1;
-  E get operand2;
-  int get eval => operand1.eval + operand2.eval;
-}
-
-abstract class SubtractionWithEval<E extends ExpressionWithEval> {
-  E get operand1;
-  E get operand2;
-  int get eval => operand1.eval - operand2.eval;
-}
-
-abstract class NumberWithEval {
-  int get val;
-  int get eval => val;
-}
-
-// library multiplication;
-
-abstract class AbstractMultiplication<E> {
-  E operand1, operand2;
-  AbstractMultiplication(this.operand1, this.operand2);
-}
-
-// library multiplicationEvaluator;
-
-// import 'evaluator.dart' show ExpressionWithEval;
-
-abstract class MultiplicationWithEval<E extends ExpressionWithEval> {
-  E get operand1;
-  E get operand2;
-  int get eval => operand1.eval * operand2.eval;
-}
-
-// library string_converter;
-
-abstract class ExpressionWithStringConversion {
-  String toString();
-}
-
-abstract class AdditionWithStringConversion<
-    E extends ExpressionWithStringConversion> {
-  E get operand1;
-  E get operand2;
-  String toString() => '($operand1 + $operand2))';
-}
-
-abstract class SubtractionWithStringConversion<
-    E extends ExpressionWithStringConversion> {
-  E get operand1;
-  E get operand2;
-  String toString() => '($operand1 - $operand2)';
-}
-
-abstract class NumberWithStringConversion {
-  int get val;
-  String toString() => val.toString();
-}
-
-abstract class MultiplicationWithStringConversion<
-    E extends ExpressionWithStringConversion> {
-  E get operand1;
-  E get operand2;
-  String toString() => '($operand1 * $operand2)';
-}
-
-// library expressions;
-
-// import 'abstractExpressions.dart';
-// import 'evaluator.dart';
-// import 'multiplication.dart';
-// import 'multiplicationEvaluator.dart';
-// import 'stringConverter.dart';
-
-abstract class Expression = AbstractExpression
-    with ExpressionWithEval, ExpressionWithStringConversion;
-
-class Addition = AbstractAddition<Expression>
-    with AdditionWithEval<Expression>, AdditionWithStringConversion<Expression>
-    implements Expression;
-
-class Subtraction = AbstractSubtraction<Expression>
-    with
-        SubtractionWithEval<Expression>,
-        SubtractionWithStringConversion<Expression>
-    implements Expression;
-
-class Number = AbstractNumber
-    with NumberWithEval, NumberWithStringConversion
-    implements Expression;
-
-class Multiplication = AbstractMultiplication<Expression>
-    with
-        MultiplicationWithEval<Expression>,
-        MultiplicationWithStringConversion<Expression>
-    implements Expression;
-
-void main() {
-  Expression e = new Multiplication(new Addition(new Number(4), new Number(2)),
-      new Subtraction(new Number(10), new Number(7)));
-  Expect.equals('((4 + 2)) * (10 - 7)) = 18', '$e = ${e.eval}');
-}
diff --git a/tests/language/mixin_class_from_core_library_test.dart b/tests/language/mixin_class_from_core_library_test.dart
deleted file mode 100644
index 300e030..0000000
--- a/tests/language/mixin_class_from_core_library_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-import 'dart:collection';
-
-class MyList extends Object with ListMixin {
-  int length = 0;
-  operator [](index) => null;
-  void operator []=(index, value) {}
-}
-
-main() {
-  new MyList().length;
-}
diff --git a/tests/language/mixin_cyclic_test.dart b/tests/language/mixin_cyclic_test.dart
deleted file mode 100644
index 9a37d5f..0000000
--- a/tests/language/mixin_cyclic_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for cyclicity check on named mixin applications.
-
-class A<T> {}
-
-class S {}
-
-class M<T> {}
-
-class C1 = S with M;
-class C2 = S with C2; //# 01: compile-time error
-class C3 = S with M implements A;
-class C4 = S with M implements C4; //# 02: compile-time error
-
-void main() {
-  new C1();
-  new C2(); //# 01: continued
-  new C3();
-  new C4(); //# 02: continued
-}
diff --git a/tests/language/mixin_extends_field_test.dart b/tests/language/mixin_extends_field_test.dart
deleted file mode 100644
index 1a80e1b..0000000
--- a/tests/language/mixin_extends_field_test.dart
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {
-  var foo = "S-foo";
-}
-
-class M1 {
-  final bar = "M1-bar";
-}
-
-class M2 {
-  var baz = "M2-baz";
-}
-
-class C extends S with M1 {}
-
-class D extends S with M1, M2 {}
-
-class E extends S with M2, M1 {}
-
-class F extends E {
-  var fez = "F-fez";
-}
-
-main() {
-  var c = new C();
-  var d = new D();
-  var e = new E();
-  var f = new F();
-
-  Expect.equals("S-foo", c.foo);
-  Expect.equals("S-foo", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  Expect.equals("M1-bar", c.bar);
-  Expect.equals("M1-bar", d.bar);
-  Expect.equals("M1-bar", e.bar);
-  Expect.equals("M1-bar", f.bar);
-
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  Expect.throws(() => c.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez, (error) => error is NoSuchMethodError);
-  Expect.equals("F-fez", f.fez);
-
-  c.foo = "S-foo-c";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  d.foo = "S-foo-d";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  e.foo = "S-foo-e";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo-e", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  f.foo = "S-foo-f";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo-e", e.foo);
-  Expect.equals("S-foo-f", f.foo);
-
-  Expect.throws(() => c.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => f.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.equals("M1-bar", c.bar);
-  Expect.equals("M1-bar", d.bar);
-  Expect.equals("M1-bar", e.bar);
-  Expect.equals("M1-bar", f.bar);
-
-  Expect.throws(() => c.baz = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  d.baz = "M2-baz-d";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  e.baz = "M2-baz-e";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz-e", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  f.baz = "M2-baz-f";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz-e", e.baz);
-  Expect.equals("M2-baz-f", f.baz);
-
-  Expect.throws(() => c.fez = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez = 0, (error) => error is NoSuchMethodError);
-
-  f.fez = "F-fez-f";
-  Expect.throws(() => c.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez, (error) => error is NoSuchMethodError);
-  Expect.equals("F-fez-f", f.fez);
-}
diff --git a/tests/language/mixin_extends_is_test.dart b/tests/language/mixin_extends_is_test.dart
deleted file mode 100644
index 5c3a1c3..0000000
--- a/tests/language/mixin_extends_is_test.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {}
-
-class M1 {}
-
-class M2 {}
-
-class C extends S with M1 {}
-
-class D extends S with M1, M2 {}
-
-class E extends S with M2, M1 {}
-
-class F extends E {}
-
-class C_ extends S with M1 {}
-
-class D_ extends S with M1, M2 {}
-
-class E_ extends S with M2, M1 {}
-
-class F_ extends E_ {}
-
-main() {
-  var c = new C();
-  Expect.isTrue(c is C);
-  Expect.isFalse(c is D);
-  Expect.isFalse(c is E);
-  Expect.isFalse(c is F);
-  Expect.isTrue(c is S);
-  Expect.isTrue(c is M1);
-  Expect.isFalse(c is M2);
-
-  var d = new D();
-  Expect.isFalse(d is C);
-  Expect.isTrue(d is D);
-  Expect.isFalse(d is E);
-  Expect.isFalse(d is F);
-  Expect.isTrue(d is S);
-  Expect.isTrue(d is M1);
-  Expect.isTrue(d is M2);
-
-  var e = new E();
-  Expect.isFalse(e is C);
-  Expect.isFalse(e is D);
-  Expect.isTrue(e is E);
-  Expect.isFalse(e is F);
-  Expect.isTrue(e is S);
-  Expect.isTrue(e is M1);
-  Expect.isTrue(e is M2);
-
-  var f = new F();
-  Expect.isFalse(f is C);
-  Expect.isFalse(f is D);
-  Expect.isTrue(f is E);
-  Expect.isTrue(f is F);
-  Expect.isTrue(f is S);
-  Expect.isTrue(f is M1);
-  Expect.isTrue(f is M2);
-
-  // Make sure we get a new class for each mixin
-  // application (at least the named ones).
-  Expect.isFalse(c is C_);
-  Expect.isFalse(c is D_);
-  Expect.isFalse(c is E_);
-  Expect.isFalse(c is F_);
-
-  Expect.isFalse(d is C_);
-  Expect.isFalse(d is D_);
-  Expect.isFalse(d is E_);
-  Expect.isFalse(d is F_);
-
-  Expect.isFalse(e is C_);
-  Expect.isFalse(e is D_);
-  Expect.isFalse(e is E_);
-  Expect.isFalse(e is F_);
-
-  Expect.isFalse(f is C_);
-  Expect.isFalse(f is D_);
-  Expect.isFalse(f is E_);
-  Expect.isFalse(f is F_);
-}
diff --git a/tests/language/mixin_extends_method_test.dart b/tests/language/mixin_extends_method_test.dart
deleted file mode 100644
index 61efc2f..0000000
--- a/tests/language/mixin_extends_method_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {
-  foo() => "S-foo";
-  baz() => "S-baz";
-}
-
-class M1 {
-  static m1bar() => "M1-bar";
-  bar() => m1bar();
-}
-
-class M2 {
-  bar() => "M2-bar";
-  baz() => "M2-baz";
-  fez() => "M2-fez";
-}
-
-class C extends S with M1 {}
-
-class D extends S with M1, M2 {}
-
-class E extends S with M2, M1 {}
-
-class F extends E {
-  fez() => "F-fez";
-}
-
-main() {
-  var c = new C();
-  Expect.equals("S-foo", c.foo());
-  Expect.equals("M1-bar", c.bar());
-  Expect.equals("S-baz", c.baz());
-  Expect.throws(() => c.fez(), (error) => error is NoSuchMethodError);
-
-  var d = new D();
-  Expect.equals("S-foo", d.foo());
-  Expect.equals("M2-bar", d.bar());
-  Expect.equals("M2-baz", d.baz());
-  Expect.equals("M2-fez", d.fez());
-
-  var e = new E();
-  Expect.equals("S-foo", e.foo());
-  Expect.equals("M1-bar", e.bar());
-  Expect.equals("M2-baz", e.baz());
-  Expect.equals("M2-fez", e.fez());
-
-  var f = new F();
-  Expect.equals("S-foo", f.foo());
-  Expect.equals("M1-bar", f.bar());
-  Expect.equals("M2-baz", f.baz());
-  Expect.equals("F-fez", f.fez());
-}
diff --git a/tests/language/mixin_field_initializer_test.dart b/tests/language/mixin_field_initializer_test.dart
deleted file mode 100644
index e2855fe..0000000
--- a/tests/language/mixin_field_initializer_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test program for testing throw statement
-
-import 'package:expect/expect.dart';
-
-class S {
-  var s1 = good_stuff();
-  static good_stuff() => "Speyburn";
-}
-
-good_stuff() => "Glenfiddich";
-
-class M {
-  var m1 = good_stuff();
-  static good_stuff() => "Macallen";
-}
-
-class A extends S with M {
-  static good_stuff() => "Ardberg";
-}
-
-main() {
-  var a = new A();
-  Expect.equals("Macallen", a.m1);
-  Expect.equals("Speyburn", a.s1);
-
-  var m = new M();
-  Expect.equals("Macallen", m.m1);
-}
diff --git a/tests/language/mixin_field_test.dart b/tests/language/mixin_field_test.dart
deleted file mode 100644
index e070ed7..0000000
--- a/tests/language/mixin_field_test.dart
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {
-  var foo = "S-foo";
-}
-
-class M1 {
-  final bar = "M1-bar";
-}
-
-class M2 {
-  var baz = "M2-baz";
-}
-
-class C = S with M1;
-class D = S with M1, M2;
-class E = S with M2, M1;
-
-class F extends E {
-  var fez = "F-fez";
-}
-
-main() {
-  var c = new C();
-  var d = new D();
-  var e = new E();
-  var f = new F();
-
-  Expect.equals("S-foo", c.foo);
-  Expect.equals("S-foo", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  Expect.equals("M1-bar", c.bar);
-  Expect.equals("M1-bar", d.bar);
-  Expect.equals("M1-bar", e.bar);
-  Expect.equals("M1-bar", f.bar);
-
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  Expect.throws(() => c.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez, (error) => error is NoSuchMethodError);
-  Expect.equals("F-fez", f.fez);
-
-  c.foo = "S-foo-c";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  d.foo = "S-foo-d";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  e.foo = "S-foo-e";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo-e", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  f.foo = "S-foo-f";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo-e", e.foo);
-  Expect.equals("S-foo-f", f.foo);
-
-  Expect.throws(() => c.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => f.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.equals("M1-bar", c.bar);
-  Expect.equals("M1-bar", d.bar);
-  Expect.equals("M1-bar", e.bar);
-  Expect.equals("M1-bar", f.bar);
-
-  Expect.throws(() => c.baz = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  d.baz = "M2-baz-d";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  e.baz = "M2-baz-e";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz-e", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  f.baz = "M2-baz-f";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz-e", e.baz);
-  Expect.equals("M2-baz-f", f.baz);
-
-  Expect.throws(() => c.fez = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez = 0, (error) => error is NoSuchMethodError);
-
-  f.fez = "F-fez-f";
-  Expect.throws(() => c.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez, (error) => error is NoSuchMethodError);
-  Expect.equals("F-fez-f", f.fez);
-}
diff --git a/tests/language/mixin_forwarding_constructor1_test.dart b/tests/language/mixin_forwarding_constructor1_test.dart
deleted file mode 100644
index b0e97ab..0000000
--- a/tests/language/mixin_forwarding_constructor1_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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";
-
-abstract class Mixin1 {
-  var mixin1Field = 1;
-}
-
-abstract class Mixin2 {
-  var mixin2Field = 2;
-}
-
-class A {
-  var superField;
-  A(foo) : superField = foo;
-}
-
-class B extends A with Mixin1, Mixin2 {
-  var field = 4;
-  B(unused) : super(3);
-}
-
-main() {
-  var b = new B(null);
-  Expect.equals(1, b.mixin1Field);
-  Expect.equals(2, b.mixin2Field);
-  Expect.equals(3, b.superField);
-  Expect.equals(4, b.field);
-}
diff --git a/tests/language/mixin_forwarding_constructor2_test.dart b/tests/language/mixin_forwarding_constructor2_test.dart
deleted file mode 100644
index 0c51276..0000000
--- a/tests/language/mixin_forwarding_constructor2_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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";
-
-abstract class Mixin1 {
-  var mixin1Field = 1;
-}
-
-abstract class Mixin2 {
-  var mixin2Field = 2;
-}
-
-class A {
-  var superField;
-  A() : superField = 3;
-}
-
-class B extends A with Mixin1, Mixin2 {
-  var field = 4;
-}
-
-main() {
-  var b = new B();
-  Expect.equals(1, b.mixin1Field);
-  Expect.equals(2, b.mixin2Field);
-  Expect.equals(3, b.superField);
-  Expect.equals(4, b.field);
-}
diff --git a/tests/language/mixin_forwarding_constructor3_test.dart b/tests/language/mixin_forwarding_constructor3_test.dart
deleted file mode 100644
index 1d2f5dc..0000000
--- a/tests/language/mixin_forwarding_constructor3_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Verify that a named mixin constructor forwards to the corresponding named
-// base class constructor.
-
-import "package:expect/expect.dart";
-
-abstract class Mixin1 {
-  var mixin1Field = 1;
-}
-
-abstract class Mixin2 {
-  var mixin2Field = 2;
-}
-
-class A {
-  var superField;
-  A(foo) : superField = 0;
-  A.c1(foo) : superField = foo;
-  A.c2(foo) : superField = 0;
-}
-
-class B extends A with Mixin1, Mixin2 {
-  var field = 4;
-  B(unused) : super.c1(3);
-}
-
-main() {
-  var b = new B(null);
-  Expect.equals(1, b.mixin1Field);
-  Expect.equals(2, b.mixin2Field);
-  Expect.equals(3, b.superField);
-  Expect.equals(4, b.field);
-}
diff --git a/tests/language/mixin_forwarding_constructor4_test.dart b/tests/language/mixin_forwarding_constructor4_test.dart
deleted file mode 100644
index 965c5b4..0000000
--- a/tests/language/mixin_forwarding_constructor4_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Verify that when no constructors are forwarded from the base class
-// through a mixin, it is always an error; the mixin does not acquire an
-// implicit default constructor.
-
-abstract class Mixin {}
-
-class Base {
-  Base(
-      {x} //       //# 01: compile-time error
-      {x} //       //# 02: compile-time error
-      {x} //       //# 03: compile-time error
-      );
-}
-
-class C extends Base with Mixin {
-  C(); //          //# 02: continued
-  C() : super(); //# 03: continued
-}
-
-main() {
-  new C();
-}
diff --git a/tests/language/mixin_generic_test.dart b/tests/language/mixin_generic_test.dart
deleted file mode 100644
index eb785f8..0000000
--- a/tests/language/mixin_generic_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S<T> {
-  s() {
-    return T;
-  }
-}
-
-class M<T> {
-  m() {
-    return T;
-  }
-}
-
-class N<T> {
-  n() {
-    return T;
-  }
-}
-
-class C<U, V> extends S<Map<U, V>> with M<List<U>>, N<Set<V>> {}
-
-main() {
-  var c = new C<int, bool>();
-  Expect.isTrue(c is S<Map<int, bool>>);
-  Expect.equals("Map<int, bool>", c.s().toString());
-  Expect.isTrue(c is M<List<int>>);
-  Expect.equals("List<int>", c.m().toString());
-  Expect.isTrue(c is N<Set<bool>>);
-  Expect.equals("Set<bool>", c.n().toString());
-}
diff --git a/tests/language/mixin_getter_regression_test.dart b/tests/language/mixin_getter_regression_test.dart
deleted file mode 100644
index f3a7bcd..0000000
--- a/tests/language/mixin_getter_regression_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test case for dart2js bug where the getter for y wasn't
-// properly mixed in.
-
-import "package:expect/expect.dart";
-
-class C {
-  int x;
-  int get y => x;
-}
-
-class E {
-  int z = 10;
-}
-
-class D extends E with C {
-  int w = 42;
-}
-
-main() {
-  var d = new D();
-  d.x = 37;
-  Expect.equals(37, d.x);
-  Expect.equals(10, d.z);
-  Expect.equals(42, d.w);
-  Expect.equals(37, d.y);
-}
diff --git a/tests/language/mixin_illegal_constructor_test.dart b/tests/language/mixin_illegal_constructor_test.dart
deleted file mode 100644
index 3a49ff9..0000000
--- a/tests/language/mixin_illegal_constructor_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2013, 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 M0 {
-  factory M0(a, b, c) => null;
-  factory M0.named() => null;
-}
-
-class M1 {
-  M1();
-}
-
-class M2 {
-  M2.named();
-}
-
-class C0 = Object with M0;
-class C1 = Object with M1; //     //# 01: compile-time error
-class C2 = Object with M2; //     //# 02: compile-time error
-class C3 = Object with M0, M1; // //# 03: compile-time error
-class C4 = Object with M1, M0; // //# 04: compile-time error
-class C5 = Object with M0, M2; // //# 05: compile-time error
-class C6 = Object with M2, M0; // //# 06: compile-time error
-
-class D0 extends Object with M0 {}
-class D1 extends Object with M1 { } //     //# 07: compile-time error
-class D2 extends Object with M2 { } //     //# 08: compile-time error
-class D3 extends Object with M0, M1 { } // //# 09: compile-time error
-class D4 extends Object with M1, M0 { } // //# 10: compile-time error
-class D5 extends Object with M0, M2 { } // //# 11: compile-time error
-class D6 extends Object with M2, M0 { } // //# 12: compile-time error
-
-main() {
-  new C0();
-  new C1(); // //# 01: continued
-  new C2(); // //# 02: continued
-  new C3(); // //# 03: continued
-  new C4(); // //# 04: continued
-  new C5(); // //# 05: continued
-  new C6(); // //# 06: continued
-
-  new D0();
-  new D1(); // //# 07: continued
-  new D2(); // //# 08: continued
-  new D3(); // //# 09: continued
-  new D4(); // //# 10: continued
-  new D5(); // //# 11: continued
-  new D6(); // //# 12: continued
-
-  new C0(1,2,3); //  //# 13: static type warning, runtime error
-  new C0.named(); // //# 14: static type warning, runtime error
-  new D0(1,2,3); //  //# 15: static type warning, runtime error
-  new D0.named(); // //# 16: static type warning, runtime error
-}
diff --git a/tests/language/mixin_illegal_cycles_test.dart b/tests/language/mixin_illegal_cycles_test.dart
deleted file mode 100644
index 06c907f..0000000
--- a/tests/language/mixin_illegal_cycles_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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 M {}
-class M0 extends Object with M0 { } // //# 01: compile-time error
-class M1 = Object with M1; //        //# 02: compile-time error
-
-class M2 = Object with M3; //        //# 03: compile-time error
-class M3 = Object with M2; //        //# 03: continued
-
-class M4 = Object with M5; //        //# 04: compile-time error
-class M5 = Object with M6; //        //# 04: continued
-class M6 = Object with M4; //        //# 04: continued
-
-class M7 extends Object with M8 { } // //# 05: compile-time error
-class M8 extends Object with M7 { } // //# 05: continued
-
-class M9  = Object with M91; //      //# 06: compile-time error
-class M91 = Object with M92; //      //# 06: continued
-class M92 = Object with M91; //      //# 06: continued
-
-main() {
-  new M0(); // //# 01: continued
-
-  new M1(); // //# 02: continued
-
-  new M2(); // //# 03: continued
-  new M3(); // //# 03: continued
-
-  new M4(); // //# 04: continued
-  new M5(); // //# 04: continued
-  new M6(); // //# 04: continued
-
-  new M7(); // //# 05: continued
-  new M8(); // //# 05: continued
-
-  new M9(); // //# 06: continued
-}
diff --git a/tests/language/mixin_illegal_object_test.dart b/tests/language/mixin_illegal_object_test.dart
deleted file mode 100644
index dac0341..0000000
--- a/tests/language/mixin_illegal_object_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Object has a non-trivial constructor and hence cannot be used as mixin.
-
-class S {}
-
-class C0 extends S
-with Object //                      //# 01: compile-time error
-{}
-
-class C1 = S with Object; //        //# 02: compile-time error
-
-main() {
-  new C0();
-  new C1(); //                      //# 02: continued
-}
diff --git a/tests/language/mixin_illegal_static_access_test.dart b/tests/language/mixin_illegal_static_access_test.dart
deleted file mode 100644
index b48bc0f..0000000
--- a/tests/language/mixin_illegal_static_access_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {
-  static foo() => 42;
-}
-
-class M {
-  static bar() => 87;
-}
-
-class C = S with M;
-
-main() {
-  Expect.equals(42, S.foo());
-  Expect.equals(87, M.bar());
-
-  Expect.throws(() => C.foo(), (e) => e is NoSuchMethodError);
-  Expect.throws(() => C.bar(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/mixin_illegal_super_use_test.dart b/tests/language/mixin_illegal_super_use_test.dart
deleted file mode 100644
index 151236e..0000000
--- a/tests/language/mixin_illegal_super_use_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class M {}
-
-class P0 {
-  foo() {
-    super.toString(); //   //# 01: compile-time error
-    super.foo(); //        //# 02: compile-time error
-    super.bar = 100; //    //# 03: compile-time error
-
-    void inner() {
-      super.toString(); // //# 04: compile-time error
-      super.foo(); //      //# 05: compile-time error
-      super.bar = 100; //  //# 06: compile-time error
-    }
-    inner();
-
-    (() {
-      super.toString(); // //# 07: compile-time error
-      super.foo(); //      //# 08: compile-time error
-      super.bar = 100; //  //# 09: compile-time error
-    })();
-
-    return 42;
-  }
-}
-
-class P1 {
-  bar() {
-    super.toString(); //   //# 10: compile-time error
-    return 87;
-  }
-
-  // The test method is strategically placed here to try to force the
-  // P1 class and its bar method to be resolved before resolving the
-  // mixin applications.
-  test() {
-    new C();
-    var d = new D();
-    var e = new E();
-    var f = new F();
-    Expect.equals(42, d.foo());
-    Expect.equals(87, e.bar());
-    Expect.equals(99, f.baz());
-  }
-}
-
-class P2 {
-  baz() {
-    super.toString(); //  //# 11: compile-time error
-    return 99;
-  }
-}
-
-class C = Object with M;
-class D = Object with P0;
-class E = Object with M, P1;
-class F = Object with P2, M;
-
-main() {
-  var p1 = new P1();
-  var p2 = new P2();
-  Expect.equals(87, p1.bar());
-  p1.test();
-  Expect.equals(99, p2.baz());
-}
diff --git a/tests/language/mixin_illegal_superclass_test.dart b/tests/language/mixin_illegal_superclass_test.dart
deleted file mode 100644
index 2ca1539..0000000
--- a/tests/language/mixin_illegal_superclass_test.dart
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2013, 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 S0 {}
-
-class S1 extends Object {}
-
-class S2 extends S0 {}
-
-class M0 {}
-
-class M1 extends Object {}
-
-class M2 extends M0 {}
-
-class C00 = S0 with M0;
-class C01 = S0 with M1;
-class C02 = S0 with M2; //     //# 01: compile-time error
-class C03 = S0 with M0, M1;
-class C04 = S0 with M0, M2; // //# 02: compile-time error
-class C05 = S0 with M2, M0; // //# 03: compile-time error
-class C06 = S0 with M1, M2; // //# 04: compile-time error
-class C07 = S0 with M2, M1; // //# 05: compile-time error
-
-class C10 = S1 with M0;
-class C11 = S1 with M1;
-class C12 = S1 with M2; //     //# 06: compile-time error
-class C13 = S1 with M0, M1;
-class C14 = S1 with M0, M2; // //# 07: compile-time error
-class C15 = S1 with M2, M0; // //# 08: compile-time error
-class C16 = S1 with M1, M2; // //# 09: compile-time error
-class C17 = S1 with M2, M1; // //# 10: compile-time error
-
-class C20 = S2 with M0;
-class C21 = S2 with M1;
-class C22 = S2 with M2; //     //# 11: compile-time error
-class C23 = S2 with M0, M1;
-class C24 = S2 with M0, M2; // //# 12: compile-time error
-class C25 = S2 with M2, M0; // //# 13: compile-time error
-class C26 = S2 with M1, M2; // //# 14: compile-time error
-class C27 = S2 with M2, M1; // //# 15: compile-time error
-
-class D00 extends S0 with M0 {}
-
-class D01 extends S0 with M1 {}
-
-class D02 extends S0 with M2 { } //     //# 16: compile-time error
-class D03 extends S0 with M0, M1 {}
-class D04 extends S0 with M0, M2 { } // //# 17: compile-time error
-class D05 extends S0 with M2, M0 { } // //# 18: compile-time error
-class D06 extends S0 with M1, M2 { } // //# 19: compile-time error
-class D07 extends S0 with M2, M1 { } // //# 20: compile-time error
-
-class D10 extends S1 with M0 {}
-
-class D11 extends S1 with M1 {}
-
-class D12 extends S1 with M2 { } //     //# 21: compile-time error
-class D13 extends S1 with M0, M1 {}
-class D14 extends S1 with M0, M2 { } // //# 22: compile-time error
-class D15 extends S1 with M2, M0 { } // //# 23: compile-time error
-class D16 extends S1 with M1, M2 { } // //# 24: compile-time error
-class D17 extends S1 with M2, M1 { } // //# 25: compile-time error
-
-class D20 extends S2 with M0 {}
-
-class D21 extends S2 with M1 {}
-
-class D22 extends S2 with M2 { } //     //# 26: compile-time error
-class D23 extends S2 with M0, M1 {}
-class D24 extends S2 with M0, M2 { } // //# 27: compile-time error
-class D25 extends S2 with M2, M0 { } // //# 28: compile-time error
-class D26 extends S2 with M1, M2 { } // //# 29: compile-time error
-class D27 extends S2 with M2, M1 { } // //# 30: compile-time error
-
-main() {
-  new C00();
-  new C01();
-  new C02(); // //# 01: continued
-  new C03();
-  new C04(); // //# 02: continued
-  new C05(); // //# 03: continued
-  new C06(); // //# 04: continued
-  new C07(); // //# 05: continued
-
-  new C10();
-  new C11();
-  new C12(); // //# 06: continued
-  new C13();
-  new C14(); // //# 07: continued
-  new C15(); // //# 08: continued
-  new C16(); // //# 09: continued
-  new C17(); // //# 10: continued
-
-  new C20();
-  new C21();
-  new C22(); // //# 11: continued
-  new C23();
-  new C24(); // //# 12: continued
-  new C25(); // //# 13: continued
-  new C26(); // //# 14: continued
-  new C27(); // //# 15: continued
-
-  new D00();
-  new D01();
-  new D02(); // //# 16: continued
-  new D03();
-  new D04(); // //# 17: continued
-  new D05(); // //# 18: continued
-  new D06(); // //# 19: continued
-  new D07(); // //# 20: continued
-
-  new D10();
-  new D11();
-  new D12(); // //# 21: continued
-  new D13();
-  new D14(); // //# 22: continued
-  new D15(); // //# 23: continued
-  new D16(); // //# 24: continued
-  new D17(); // //# 25: continued
-
-  new D20();
-  new D21();
-  new D22(); // //# 26: continued
-  new D23();
-  new D24(); // //# 27: continued
-  new D25(); // //# 28: continued
-  new D26(); // //# 29: continued
-  new D27(); // //# 30: continued
-}
diff --git a/tests/language/mixin_illegal_syntax_test.dart b/tests/language/mixin_illegal_syntax_test.dart
deleted file mode 100644
index 102bc1c..0000000
--- a/tests/language/mixin_illegal_syntax_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2013, 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 S {}
-
-class G<T> {}
-
-class M {}
-
-class T = S with M;
-typedef T0 = S with M; //        //# 00: syntax error
-abstract class TA = S with M;
-class T1 = final S with M; //    //# 01: syntax error
-class T2 = var S with M; //      //# 02: syntax error
-class T3 = const S with M; //    //# 03: syntax error
-class T4 = static S with M; //   //# 04: syntax error
-class T5 = external S with M; // //# 05: syntax error
-class T6 = G<int> with M;
-class T7 = G<Map<String, int>> with M;
-
-class C0 extends abstract S with M { } // //# 06: syntax error
-class C1 extends final S with M { } //    //# 07: syntax error
-class C2 extends var S with M { } //      //# 08: syntax error
-class C3 extends const S with M { } //    //# 09: syntax error
-class C4 extends static S with M { } //   //# 10: syntax error
-class C5 extends external S with M { } // //# 11: syntax error
-class C6 extends G<int> with M {}
-
-class C7 extends G<Map<String, int>> with M {}
-
-class D0 extends S
-    with
-        M
-    implements M // //# 12: syntax error
-    implements
-        M {}
-
-class D1 extends T {}
-
-class X = S; //  //# 14: syntax error
-
-main() {
-  new T();
-  new TA(); // //# 13: static type warning, runtime error
-  new T1(); // //# 01: continued
-  new T2(); // //# 02: continued
-  new T3(); // //# 03: continued
-  new T4(); // //# 04: continued
-  new T5(); // //# 05: continued
-  new T6();
-  new T7();
-
-  new C0(); // //# 06: continued
-  new C1(); // //# 07: continued
-  new C2(); // //# 08: continued
-  new C3(); // //# 09: continued
-  new C4(); // //# 10: continued
-  new C5(); // //# 11: continued
-  new C6();
-  new C7();
-
-  new D0(); // //# 12: continued
-  new D1();
-  new X(); //  //# 14: continued
-}
diff --git a/tests/language/mixin_implements2_test.dart b/tests/language/mixin_implements2_test.dart
deleted file mode 100644
index 37c0446..0000000
--- a/tests/language/mixin_implements2_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for named mixin applications with implements clause.
-
-class A {}
-
-class S {}
-
-class M {}
-
-class C = S with M implements A;
-
-void main() {
-  new C();
-}
diff --git a/tests/language/mixin_implements_test.dart b/tests/language/mixin_implements_test.dart
deleted file mode 100644
index 1845773..0000000
--- a/tests/language/mixin_implements_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2013, 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";
-
-abstract class I0 {
-  foo();
-}
-
-abstract class I1 {
-  bar();
-}
-
-abstract class I2 implements I0, I1 {}
-
-class M {
-  foo() => 42;
-  bar() => 87;
-}
-
-class C0 = Object with M;
-class C1 = Object with M implements I0;
-class C2 = Object with M implements I1;
-class C3 = Object with M implements I0, I1;
-class C4 = Object with M implements I1, I0;
-class C5 = Object with M implements I2;
-
-main() {
-  var c0 = new C0();
-  Expect.equals(42, c0.foo());
-  Expect.equals(87, c0.bar());
-  Expect.isTrue(c0 is M);
-  Expect.isFalse(c0 is I0);
-  Expect.isFalse(c0 is I1);
-  Expect.isFalse(c0 is I2);
-
-  var c1 = new C1();
-  Expect.equals(42, c1.foo());
-  Expect.equals(87, c1.bar());
-  Expect.isTrue(c1 is M);
-  Expect.isTrue(c1 is I0);
-  Expect.isFalse(c1 is I1);
-  Expect.isFalse(c1 is I2);
-
-  var c2 = new C2();
-  Expect.equals(42, c2.foo());
-  Expect.equals(87, c2.bar());
-  Expect.isTrue(c2 is M);
-  Expect.isFalse(c2 is I0);
-  Expect.isTrue(c2 is I1);
-  Expect.isFalse(c1 is I2);
-
-  var c3 = new C3();
-  Expect.equals(42, c3.foo());
-  Expect.equals(87, c3.bar());
-  Expect.isTrue(c3 is M);
-  Expect.isTrue(c3 is I0);
-  Expect.isTrue(c3 is I1);
-  Expect.isFalse(c1 is I2);
-
-  var c4 = new C4();
-  Expect.equals(42, c4.foo());
-  Expect.equals(87, c4.bar());
-  Expect.isTrue(c4 is M);
-  Expect.isTrue(c4 is I0);
-  Expect.isTrue(c4 is I1);
-  Expect.isFalse(c1 is I2);
-
-  var c5 = new C5();
-  Expect.equals(42, c5.foo());
-  Expect.equals(87, c5.bar());
-  Expect.isTrue(c5 is M);
-  Expect.isTrue(c5 is I0);
-  Expect.isTrue(c5 is I1);
-  Expect.isTrue(c5 is I2);
-}
diff --git a/tests/language/mixin_invalid_bound2_test.dart b/tests/language/mixin_invalid_bound2_test.dart
deleted file mode 100644
index 5615e21..0000000
--- a/tests/language/mixin_invalid_bound2_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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 S0<T> {}
-
-class S<U extends num, V extends U> extends S0<String> {}
-
-class M<U extends num, V extends U> {}
-
-class A<U extends num, V extends U> extends S with M {}
-
-// A StaticWarning is reported here and in C, D, and E below, because U and V
-// are not bounded. The purpose of this test is to verify bound checking in S,
-// M, and A, the reason no bounds are declared for U and V here.
-class B<U, V> extends S<U, V> with M<int, int> {}
-
-class C<U, V> extends S<int, int> with M<U, V> {}
-
-class D<U, V> extends S<U, V> with M<double, int> {}
-
-class E<U, V> extends S<double, int> with M<U, V> {}
-
-main() {
-  new A<int, int>(); // //# 01: static type warning
-  new A<double, int>(); // //# 02: static type warning, dynamic type error
-  new A<bool, bool>(); // //# 03: static type warning, dynamic type error
-  new B<int, int>(); // //# 04: static type warning
-  new B<double, int>(); // //# 05: static type warning, dynamic type error
-  new B<bool, bool>(); // //# 06: static type warning, dynamic type error
-  new C<int, int>(); // //# 07: static type warning
-  new C<double, int>(); // //# 08: static type warning, dynamic type error
-  new C<bool, bool>(); // //# 09: static type warning, dynamic type error
-  new D<int, int>(); // //# 10: static type warning, dynamic type error
-  new D<double, int>(); // //# 11: static type warning, dynamic type error
-  new D<bool, bool>(); // //# 12: static type warning, dynamic type error
-  new E<int, int>(); // //# 12: static type warning, dynamic type error
-  new E<double, int>(); // //# 13: static type warning, dynamic type error
-  new E<bool, bool>(); // //# 14: static type warning, dynamic type error
-}
diff --git a/tests/language/mixin_invalid_bound_test.dart b/tests/language/mixin_invalid_bound_test.dart
deleted file mode 100644
index c52e894..0000000
--- a/tests/language/mixin_invalid_bound_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, 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 S0<T> {}
-
-class S<T extends num> extends S0<String> {}
-
-class M<T extends num> {}
-
-class A<T extends num> extends S with M {}
-
-// A StaticWarning is reported here and in C, D, and E below, because T is not
-// bounded. The purpose of this test is to verify bound checking in S, M, and A,
-// the reason no bound is declared for T here.
-class B<T> extends S<T> with M<int> {}
-
-class C<T> extends S<int> with M<T> {}
-
-class D<T> extends S<T> with M<bool> {}
-
-class E<T> extends S<bool> with M<T> {}
-
-main() {
-  new A<int>(); // //# 01: static type warning
-  new A<bool>(); // //# 02: static type warning, dynamic type error
-  new B<int>(); // //# 03: static type warning
-  new B<bool>(); // //# 04: static type warning, dynamic type error
-  new C<int>(); // //# 05: static type warning
-  new C<bool>(); // //# 06: static type warning, dynamic type error
-  new D<int>(); // //# 07: static type warning, dynamic type error
-  new D<bool>(); // //# 08: static type warning, dynamic type error
-  new E<int>(); // //# 09: static type warning, dynamic type error
-  new E<bool>(); // //# 10: static type warning, dynamic type error
-}
diff --git a/tests/language/mixin_invalid_inheritance1_test.dart b/tests/language/mixin_invalid_inheritance1_test.dart
deleted file mode 100644
index ab30e92..0000000
--- a/tests/language/mixin_invalid_inheritance1_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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 C<T> extends Object
-  with Malformed // //# 01: compile-time error
-  with T // //# 02: compile-time error
-  with T<int> // //# 03: compile-time error
-{}
-
-main() => new C<C>();
diff --git a/tests/language/mixin_invalid_inheritance2_test.dart b/tests/language/mixin_invalid_inheritance2_test.dart
deleted file mode 100644
index 6752bb2..0000000
--- a/tests/language/mixin_invalid_inheritance2_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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 C<T> = Object with Malformed; // //# 01: compile-time error
-class C<T> = Object with T; // //# 02: compile-time error
-class C<T> = OBject with T<int>; // //# 03: compile-time error
-
-main() {
-  new C<C>(); // //# 01: continued
-  new C<C>(); // //# 02: continued
-  new C<C>(); // //# 03: continued
-}
diff --git a/tests/language/mixin_is_test.dart b/tests/language/mixin_is_test.dart
deleted file mode 100644
index 89b5464..0000000
--- a/tests/language/mixin_is_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {}
-
-class M1 {}
-
-class M2 {}
-
-class C = S with M1;
-class D = S with M1, M2;
-class E = S with M2, M1;
-
-class F extends E {}
-
-class C_ = S with M1;
-class D_ = S with M1, M2;
-class E_ = S with M2, M1;
-
-class F_ extends E_ {}
-
-main() {
-  var c = new C();
-  Expect.isTrue(c is C);
-  Expect.isFalse(c is D);
-  Expect.isFalse(c is E);
-  Expect.isFalse(c is F);
-  Expect.isTrue(c is S);
-  Expect.isTrue(c is M1);
-  Expect.isFalse(c is M2);
-
-  var d = new D();
-  Expect.isFalse(d is C);
-  Expect.isTrue(d is D);
-  Expect.isFalse(d is E);
-  Expect.isFalse(d is F);
-  Expect.isTrue(d is S);
-  Expect.isTrue(d is M1);
-  Expect.isTrue(d is M2);
-
-  var e = new E();
-  Expect.isFalse(e is C);
-  Expect.isFalse(e is D);
-  Expect.isTrue(e is E);
-  Expect.isFalse(e is F);
-  Expect.isTrue(e is S);
-  Expect.isTrue(e is M1);
-  Expect.isTrue(e is M2);
-
-  var f = new F();
-  Expect.isFalse(f is C);
-  Expect.isFalse(f is D);
-  Expect.isTrue(f is E);
-  Expect.isTrue(f is F);
-  Expect.isTrue(f is S);
-  Expect.isTrue(f is M1);
-  Expect.isTrue(f is M2);
-
-  // Make sure we get a new class for each mixin
-  // application (at least the named ones).
-  Expect.isFalse(c is C_);
-  Expect.isFalse(c is D_);
-  Expect.isFalse(c is E_);
-  Expect.isFalse(c is F_);
-
-  Expect.isFalse(d is C_);
-  Expect.isFalse(d is D_);
-  Expect.isFalse(d is E_);
-  Expect.isFalse(d is F_);
-
-  Expect.isFalse(e is C_);
-  Expect.isFalse(e is D_);
-  Expect.isFalse(e is E_);
-  Expect.isFalse(e is F_);
-
-  Expect.isFalse(f is C_);
-  Expect.isFalse(f is D_);
-  Expect.isFalse(f is E_);
-  Expect.isFalse(f is F_);
-}
diff --git a/tests/language/mixin_issue10216_2_test.dart b/tests/language/mixin_issue10216_2_test.dart
deleted file mode 100644
index d48fd69..0000000
--- a/tests/language/mixin_issue10216_2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class M1 = Object with M0;
-class M2 = Object with M1;
-
-class M0 {
-  foo() => 42;
-}
-
-makeM2() {
-  return [new Object(), new M2()].last as M2;
-}
-
-main() {
-  Expect.equals(42, makeM2().foo());
-}
diff --git a/tests/language/mixin_issue10216_test.dart b/tests/language/mixin_issue10216_test.dart
deleted file mode 100644
index b62c63c..0000000
--- a/tests/language/mixin_issue10216_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  foo(x, [y]) => '$x;$y';
-}
-
-class B extends A with M1, M2, M3 {}
-
-class M1 {}
-
-class M2 {
-  plain(x) => 'P $x';
-  bar(x, [y]) => '$y,$x';
-}
-
-class M3 {}
-
-makeB() {
-  return [new A(), new B()].last as B;
-}
-
-main() {
-  var b = makeB();
-  Expect.equals('1;2', b.foo(1, 2));
-  Expect.equals('2;null', b.foo(2));
-  Expect.equals('P 3', b.plain(3));
-  Expect.equals('100,4', b.bar(4, 100));
-  Expect.equals('null,5', b.bar(5));
-}
diff --git a/tests/language/mixin_lib_extends_field_lib.dart b/tests/language/mixin_lib_extends_field_lib.dart
deleted file mode 100644
index 97a31be..0000000
--- a/tests/language/mixin_lib_extends_field_lib.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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 mixin_lib_extends_field_lib;
-
-class M1 {
-  final bar = "M1-bar";
-}
-
-class M2 {
-  var baz = "M2-$_baz";
-}
-
-var _baz = "baz";
diff --git a/tests/language/mixin_lib_extends_field_test.dart b/tests/language/mixin_lib_extends_field_test.dart
deleted file mode 100644
index b54433e..0000000
--- a/tests/language/mixin_lib_extends_field_test.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2013, 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 mixin_lib_extends_field_test;
-
-import 'package:expect/expect.dart';
-import "mixin_lib_extends_field_lib.dart" as L;
-
-class S {
-  var foo = "S-foo";
-}
-
-class C extends S with L.M1 {}
-
-class D extends S with L.M1, L.M2 {}
-
-class E extends S with L.M2, L.M1 {}
-
-class F extends E {
-  var fez = "F-fez";
-}
-
-main() {
-  var c = new C();
-  var d = new D();
-  var e = new E();
-  var f = new F();
-
-  Expect.equals("S-foo", c.foo);
-  Expect.equals("S-foo", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  Expect.equals("M1-bar", c.bar);
-  Expect.equals("M1-bar", d.bar);
-  Expect.equals("M1-bar", e.bar);
-  Expect.equals("M1-bar", f.bar);
-
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  Expect.throws(() => c.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez, (error) => error is NoSuchMethodError);
-  Expect.equals("F-fez", f.fez);
-
-  c.foo = "S-foo-c";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  d.foo = "S-foo-d";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  e.foo = "S-foo-e";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo-e", e.foo);
-  Expect.equals("S-foo", f.foo);
-
-  f.foo = "S-foo-f";
-  Expect.equals("S-foo-c", c.foo);
-  Expect.equals("S-foo-d", d.foo);
-  Expect.equals("S-foo-e", e.foo);
-  Expect.equals("S-foo-f", f.foo);
-
-  Expect.throws(() => c.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => f.bar = 0, (error) => error is NoSuchMethodError);
-  Expect.equals("M1-bar", c.bar);
-  Expect.equals("M1-bar", d.bar);
-  Expect.equals("M1-bar", e.bar);
-  Expect.equals("M1-bar", f.bar);
-
-  Expect.throws(() => c.baz = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  d.baz = "M2-baz-d";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz", e.baz);
-  Expect.equals("M2-baz", f.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  e.baz = "M2-baz-e";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz-e", e.baz);
-  Expect.equals("M2-baz", f.baz);
-
-  f.baz = "M2-baz-f";
-  Expect.throws(() => c.baz, (error) => error is NoSuchMethodError);
-  Expect.equals("M2-baz-d", d.baz);
-  Expect.equals("M2-baz-e", e.baz);
-  Expect.equals("M2-baz-f", f.baz);
-
-  Expect.throws(() => c.fez = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez = 0, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez = 0, (error) => error is NoSuchMethodError);
-
-  f.fez = "F-fez-f";
-  Expect.throws(() => c.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => d.fez, (error) => error is NoSuchMethodError);
-  Expect.throws(() => e.fez, (error) => error is NoSuchMethodError);
-  Expect.equals("F-fez-f", f.fez);
-}
diff --git a/tests/language/mixin_lib_extends_method_lib.dart b/tests/language/mixin_lib_extends_method_lib.dart
deleted file mode 100644
index b548c58..0000000
--- a/tests/language/mixin_lib_extends_method_lib.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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 mixin_lib_extends_method_lib;
-
-class M1 {
-  bar() => "M1-bar";
-
-  clo(s) {
-    var l = s;
-    return (s) => "$l$s";
-  }
-}
-
-class M2 {
-  // Make sure mixed-in method has access to library-private names.
-  bar() => _M2_bar();
-  baz() => _M2_baz;
-  fez() => "M2-${_fez()}";
-  _fez() => "fez";
-}
-
-_M2_bar() {
-  return "M2-bar";
-}
-
-var _M2_baz = "M2-baz";
diff --git a/tests/language/mixin_lib_extends_method_test.dart b/tests/language/mixin_lib_extends_method_test.dart
deleted file mode 100644
index 105ddd8..0000000
--- a/tests/language/mixin_lib_extends_method_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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 mixin_lib_extends_method_test;
-
-import "package:expect/expect.dart";
-import "mixin_lib_extends_method_lib.dart" as L;
-
-class S {
-  foo() => "S-foo";
-  baz() => "S-baz";
-}
-
-class C extends S with L.M1 {}
-
-class D extends S with L.M1, L.M2 {}
-
-class E extends S with L.M2, L.M1 {}
-
-class F extends E {
-  fez() => "F-fez";
-}
-
-main() {
-  var c = new C();
-  Expect.equals("S-foo", c.foo());
-  Expect.equals("M1-bar", c.bar());
-  Expect.equals("S-baz", c.baz());
-  Expect.throws(() => c.fez(), (error) => error is NoSuchMethodError);
-  Expect.equals("sugus", c.clo("su")("gus"));
-
-  var d = new D();
-  Expect.equals("S-foo", d.foo());
-  Expect.equals("M2-bar", d.bar());
-  Expect.equals("M2-baz", d.baz());
-  Expect.equals("M2-fez", d.fez());
-  Expect.equals("sugus", d.clo("su")("gus"));
-
-  var e = new E();
-  Expect.equals("S-foo", e.foo());
-  Expect.equals("M1-bar", e.bar());
-  Expect.equals("M2-baz", e.baz());
-  Expect.equals("M2-fez", e.fez());
-  Expect.equals("sugus", e.clo("su")("gus"));
-
-  var f = new F();
-  Expect.equals("S-foo", f.foo());
-  Expect.equals("M1-bar", f.bar());
-  Expect.equals("M2-baz", f.baz());
-  Expect.equals("F-fez", f.fez());
-  Expect.equals("sugus", f.clo("su")("gus"));
-}
diff --git a/tests/language/mixin_method_test.dart b/tests/language/mixin_method_test.dart
deleted file mode 100644
index 81bac5e..0000000
--- a/tests/language/mixin_method_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {
-  foo() => "S-foo";
-  baz() => "S-baz";
-}
-
-class M1 {
-  bar() => "M1-bar";
-}
-
-class M2 {
-  bar() => "M2-bar";
-  baz() => "M2-baz";
-  fez() => "M2-fez";
-}
-
-class C = S with M1;
-class D = S with M1, M2;
-class E = S with M2, M1;
-
-class F extends E {
-  fez() => "F-fez";
-}
-
-main() {
-  var c = new C();
-  Expect.equals("S-foo", c.foo());
-  Expect.equals("M1-bar", c.bar());
-  Expect.equals("S-baz", c.baz());
-  Expect.throws(() => c.fez(), (error) => error is NoSuchMethodError);
-
-  var d = new D();
-  Expect.equals("S-foo", d.foo());
-  Expect.equals("M2-bar", d.bar());
-  Expect.equals("M2-baz", d.baz());
-  Expect.equals("M2-fez", d.fez());
-
-  var e = new E();
-  Expect.equals("S-foo", e.foo());
-  Expect.equals("M1-bar", e.bar());
-  Expect.equals("M2-baz", e.baz());
-  Expect.equals("M2-fez", e.fez());
-
-  var f = new F();
-  Expect.equals("S-foo", f.foo());
-  Expect.equals("M1-bar", f.bar());
-  Expect.equals("M2-baz", f.baz());
-  Expect.equals("F-fez", f.fez());
-}
diff --git a/tests/language/mixin_mixin2_test.dart b/tests/language/mixin_mixin2_test.dart
deleted file mode 100644
index b9da579..0000000
--- a/tests/language/mixin_mixin2_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class M<T> {
-  t() {
-    return T;
-  }
-}
-
-class A<U> = Object with M<U>;
-
-class B<V> = Object with A<V>;
-
-class C<U> = Object with M<List<U>>;
-
-class D<V> = Object with C<Set<V>>;
-
-class E extends A<num> {}
-
-class F extends B<String> {}
-
-class G<T> extends C<T> {}
-
-class H<T> extends D<Map<String, T>> {}
-
-main() {
-  Expect.equals("num", new E().t().toString());
-  Expect.equals("String", new F().t().toString());
-  Expect.equals("List<bool>", new G<bool>().t().toString());
-  Expect.equals("List<Set<Map<String, int>>>", new H<int>().t().toString());
-}
diff --git a/tests/language/mixin_mixin3_test.dart b/tests/language/mixin_mixin3_test.dart
deleted file mode 100644
index ecdb2bd..0000000
--- a/tests/language/mixin_mixin3_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class M<T> {
-  t() {
-    return T;
-  }
-}
-
-class A<U> = Object with M<List<U>>;
-
-class B0 = Object with A<Set<bool>>;
-
-class B1 = Object with A<Set<int>>;
-
-class C0 extends B0 {}
-
-class C1 extends B1 {}
-
-class A2<K, V> = Object with M<Map<K, V>>;
-
-class B2<V> = Object with A2<Set<V>, List<V>>;
-
-class B3<K, V> = Object with A2<Set<K>, List<V>>;
-
-class C2<T> extends B2<T> {}
-
-class C3<T> extends B3<T, int> {}
-
-class N {
-  q() {
-    return 42;
-  }
-}
-
-class O<U> = Object with N;
-
-class P<K, V> = Object with O<V>;
-
-class Q<K, V> extends P<K, V> {}
-
-main() {
-  Expect.equals("List<Set<bool>>", new C0().t().toString());
-  Expect.equals("List<Set<int>>", new C1().t().toString());
-  Expect.equals("Map<Set<bool>, List<bool>>", new C2<bool>().t().toString());
-  Expect.equals("Map<Set<bool>, List<int>>", new C3<bool>().t().toString());
-  Expect.equals(42, new Q<bool, int>().q());
-}
diff --git a/tests/language/mixin_mixin4_test.dart b/tests/language/mixin_mixin4_test.dart
deleted file mode 100644
index a982532..0000000
--- a/tests/language/mixin_mixin4_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class I<T> {}
-
-class J<T> {}
-
-class S<T> {}
-
-class M<T> {
-  t() {
-    return T;
-  }
-}
-
-class A<U, V> = Object with M<Map<U, V>> implements I<V>;
-
-class C<T, K> = S<T> with A<T, List<K>> implements J<K>;
-
-main() {
-  var c = new C<int, bool>();
-  Expect.equals("Map<int, List<bool>>", c.t().toString());
-  Expect.isTrue(c is I<List<bool>>);
-  Expect.isTrue(c is J<bool>);
-  Expect.isTrue(c is S<int>);
-  Expect.isTrue(c is A<int, List<bool>>);
-  Expect.isTrue(c is M<Map<int, List<bool>>>);
-}
diff --git a/tests/language/mixin_mixin5_test.dart b/tests/language/mixin_mixin5_test.dart
deleted file mode 100644
index 064f53b..0000000
--- a/tests/language/mixin_mixin5_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class I<T> {}
-
-class J<T> {}
-
-class K<T> {}
-
-class S<T> {}
-
-class M<T> {
-  m() {
-    return T;
-  }
-}
-
-class A<U, V> = Object with M<Map<U, V>> implements I<V>;
-
-class B<T> = Object with A<T, Set<T>> implements J<T>;
-
-class C<T> = S<List<T>> with B<List<T>> implements K<T>;
-
-main() {
-  var c = new C<int>();
-  Expect.equals("Map<List<int>, Set<List<int>>>", c.m().toString());
-  Expect.isTrue(c is K<int>);
-  Expect.isTrue(c is J<List<int>>);
-  Expect.isTrue(c is I<Set<List<int>>>);
-  Expect.isTrue(c is S<List<int>>);
-  Expect.isTrue(c is A<List<int>, Set<List<int>>>);
-  Expect.isTrue(c is M<Map<List<int>, Set<List<int>>>>);
-}
diff --git a/tests/language/mixin_mixin6_test.dart b/tests/language/mixin_mixin6_test.dart
deleted file mode 100644
index 65a32dd..0000000
--- a/tests/language/mixin_mixin6_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class I<T> {}
-
-class J<T> {}
-
-class K<T> {}
-
-class S<T> {}
-
-class M<T> {
-  m() {
-    return T;
-  }
-}
-
-class A<U, V> = Object with M<Map<U, V>> implements I<V>;
-
-class B<T> = Object with A<T, Set<T>> implements J<T>;
-
-class C<T> = S<List<T>> with B implements K<T>; // B is raw.
-
-main() {
-  var c = new C<int>();
-  Expect.equals("Map<dynamic, Set>", c.m().toString());
-  Expect.isTrue(c is K<int>);
-  Expect.isTrue(c is J);
-  Expect.isTrue(c is I<Set>);
-  Expect.isTrue(c is S<List<int>>);
-  Expect.isTrue(c is A<dynamic, Set>);
-  Expect.isTrue(c is M<Map<dynamic, Set>>);
-}
diff --git a/tests/language/mixin_mixin7_test.dart b/tests/language/mixin_mixin7_test.dart
deleted file mode 100644
index 63da11c..0000000
--- a/tests/language/mixin_mixin7_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class I<T> {}
-
-class J<T> {}
-
-class K<T> {}
-
-class S<T> {}
-
-class M<T> {
-  m() {
-    return T;
-  }
-}
-
-class A<U, V> = Object with M implements I<V>; // M is raw.
-
-class B<T> = Object with A implements J<T>; // A is raw.
-
-class C<T> = S<List<T>> with B implements K<T>; // B is raw.
-
-@NoInline()
-@AssumeDynamic()
-dyn(x) => x;
-
-main() {
-  var c = new C<int>();
-  Expect.equals("dynamic", c.m().toString());
-  Expect.isTrue(c is K<int>);
-  Expect.isTrue(c is J);
-  Expect.isTrue(c is I);
-  Expect.isTrue(c is S<List<int>>);
-  Expect.isTrue(c is A);
-  Expect.isTrue(c is M);
-
-  Expect.equals("dynamic", dyn(c).m().toString());
-  Expect.isTrue(dyn(c) is K<int>);
-  Expect.isTrue(dyn(c) is J);
-  Expect.isTrue(dyn(c) is I);
-  Expect.isTrue(dyn(c) is S<List<int>>);
-  Expect.isTrue(dyn(c) is A);
-  Expect.isTrue(dyn(c) is M);
-}
diff --git a/tests/language/mixin_mixin_bound2_test.dart b/tests/language/mixin_mixin_bound2_test.dart
deleted file mode 100644
index 76da3a9..0000000
--- a/tests/language/mixin_mixin_bound2_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class I<T> {}
-
-class J<T> {}
-
-class K<T> {}
-
-class S<U extends Set<V>, V> {}
-
-class M<U, V, T extends Map<U, V>> {
-  m() {
-    return T;
-  }
-}
-
-class A<U, V extends Set<U>> = Object with M<U, V, Map<U, V>> implements I<V>;
-
-class B<T extends List<num>> = Object with A<T, Set<T>> implements J<T>;
-
-class C<T extends num> = S<Set<T>, T> with B<List<T>> implements K<T>;
-
-main() {
-  var c = new C<int>();
-  Expect.equals("Map<List<int>, Set<List<int>>>", c.m().toString());
-  Expect.isTrue(c is K<int>);
-  Expect.isTrue(c is J<List<int>>);
-  Expect.isTrue(c is I<Set<List<int>>>);
-  Expect.isTrue(c is S<Set<int>, int>);
-  Expect.isTrue(c is A<List<int>, Set<List<int>>>);
-  Expect.isTrue(
-      c is M<List<int>, Set<List<int>>, Map<List<int>, Set<List<int>>>>);
-}
diff --git a/tests/language/mixin_mixin_bound_test.dart b/tests/language/mixin_mixin_bound_test.dart
deleted file mode 100644
index dfa6273..0000000
--- a/tests/language/mixin_mixin_bound_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class I<T> {}
-
-class J<T> {}
-
-class S<U extends Set<V>, V> {}
-
-class M<U, V, T extends Map<U, V>> {
-  t() {
-    return T;
-  }
-}
-
-class A<U, V extends List> = Object with M<U, V, Map<U, V>> implements I<V>;
-
-class C<T, K> = S<Set<T>, T> with A<T, List<K>> implements J<K>;
-
-main() {
-  var c = new C<int, bool>();
-  Expect.equals("Map<int, List<bool>>", c.t().toString());
-  Expect.isTrue(c is I<List<bool>>);
-  Expect.isTrue(c is J<bool>);
-  Expect.isTrue(c is S<Set<int>, int>);
-  Expect.isTrue(c is A<int, List<bool>>);
-  Expect.isTrue(c is M<int, List<bool>, Map<int, List<bool>>>);
-}
diff --git a/tests/language/mixin_mixin_test.dart b/tests/language/mixin_mixin_test.dart
deleted file mode 100644
index 8f32aba..0000000
--- a/tests/language/mixin_mixin_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class M1 {
-  foo() => 42;
-}
-
-class M2 = Object with M1;
-
-class S {}
-
-class C = S with M2;
-
-main() {
-  var c = new C();
-  Expect.isTrue(c is S);
-  Expect.isTrue(c is M1);
-  Expect.isTrue(c is M2);
-  Expect.isTrue(c is C);
-  Expect.equals(42, c.foo());
-}
diff --git a/tests/language/mixin_mixin_type_arguments_test.dart b/tests/language/mixin_mixin_type_arguments_test.dart
deleted file mode 100644
index 55d796f..0000000
--- a/tests/language/mixin_mixin_type_arguments_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart' show Expect;
-
-class A {}
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E {}
-
-class F {}
-
-class M1<Tm1> {
-  m1() => "M1<$Tm1>";
-}
-
-class M2<Tm2> {
-  m2() => "M2<$Tm2>";
-}
-
-class M3<Tm3> {
-  m3() => "M3<$Tm3>";
-}
-
-class M4<Tm4> {
-  m4() => "M4<$Tm4>";
-}
-
-class M5<Tm5> {
-  m5() => "M5<$Tm5>";
-}
-
-class C1 = Object with M1, M2<A>, M3, M4<B>, M5<C>;
-
-class C2 = Object with M1<A>, M2<B>, M3<C>, M4<D>, M5<E>;
-
-class C3<T> = Object with M1<A>, M2<T>, M3, M4, M5<B>;
-
-class C4 extends Object with M1, M2<A>, M3, M4<B>, M5<C> {}
-
-class C5 extends Object with M1<A>, M2<B>, M3<C>, M4<D>, M5<E> {}
-
-class C6<T> extends Object with M1<A>, M2<T>, M3, M4, M5<B> {}
-
-class C7 = Object with M1<A>, M2<A>, M3<A>, M4<A>, M5<A>;
-
-class C8 extends Object with M1<A>, M2<A>, M3<A>, M4<A>, M5<A> {}
-
-class C9 = Object
-    with M1<List<A>>, M2<List<A>>, M3<List<A>>, M4<List<A>>, M5<List<A>>;
-
-class CA extends Object
-    with M1<List<A>>, M2<List<A>>, M3<List<A>>, M4<List<A>>, M5<List<A>> {}
-
-trace(x) => "${x.m1()}, ${x.m2()}, ${x.m3()}, ${x.m4()}, ${x.m5()}";
-
-main() {
-  Expect.stringEquals(
-      "M1<dynamic>, M2<A>, M3<dynamic>, M4<B>, M5<C>", trace(new C1()));
-  Expect.stringEquals("M1<A>, M2<B>, M3<C>, M4<D>, M5<E>", trace(new C2()));
-  Expect.stringEquals(
-      "M1<A>, M2<dynamic>, M3<dynamic>, M4<dynamic>, M5<B>", trace(new C3()));
-  Expect.stringEquals(
-      "M1<A>, M2<F>, M3<dynamic>, M4<dynamic>, M5<B>", trace(new C3<F>()));
-  Expect.stringEquals(
-      "M1<dynamic>, M2<A>, M3<dynamic>, M4<B>, M5<C>", trace(new C4()));
-  Expect.stringEquals("M1<A>, M2<B>, M3<C>, M4<D>, M5<E>", trace(new C5()));
-  Expect.stringEquals(
-      "M1<A>, M2<dynamic>, M3<dynamic>, M4<dynamic>, M5<B>", trace(new C6()));
-  Expect.stringEquals(
-      "M1<A>, M2<F>, M3<dynamic>, M4<dynamic>, M5<B>", trace(new C6<F>()));
-  Expect.stringEquals("M1<A>, M2<A>, M3<A>, M4<A>, M5<A>", trace(new C7()));
-  Expect.stringEquals("M1<A>, M2<A>, M3<A>, M4<A>, M5<A>", trace(new C8()));
-  Expect.stringEquals(
-      "M1<List<A>>, M2<List<A>>, M3<List<A>>, M4<List<A>>, M5<List<A>>",
-      trace(new C9()));
-  Expect.stringEquals(
-      "M1<List<A>>, M2<List<A>>, M3<List<A>>, M4<List<A>>, M5<List<A>>",
-      trace(new CA()));
-}
diff --git a/tests/language/mixin_naming_test.dart b/tests/language/mixin_naming_test.dart
deleted file mode 100644
index a4c267a..0000000
--- a/tests/language/mixin_naming_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {}
-
-class M1 {}
-
-class M2 {}
-
-class M3 {}
-
-class C = S with M1, M2, M3;
-
-class D extends S with M1, M2, M3 {}
-
-class S_M1 {}
-
-class S_M1_M2 {}
-
-main() {
-  var c = new C();
-  Expect.isTrue(c is C);
-  Expect.isFalse(c is D);
-  Expect.isTrue(c is S);
-  Expect.isFalse(c is S_M1);
-  Expect.isFalse(c is S_M1_M2);
-
-  var d = new D();
-  Expect.isFalse(d is C);
-  Expect.isTrue(d is D);
-  Expect.isTrue(d is S);
-  Expect.isFalse(d is S_M1);
-  Expect.isFalse(d is S_M1_M2);
-
-  var sm = new S_M1();
-  Expect.isFalse(sm is C);
-  Expect.isFalse(sm is D);
-  Expect.isFalse(sm is S);
-  Expect.isTrue(sm is S_M1);
-  Expect.isFalse(sm is S_M1_M2);
-
-  var smm = new S_M1_M2();
-  Expect.isFalse(smm is C);
-  Expect.isFalse(smm is D);
-  Expect.isFalse(smm is S);
-  Expect.isFalse(smm is S_M1);
-  Expect.isTrue(smm is S_M1_M2);
-}
diff --git a/tests/language/mixin_of_mixin_test.dart b/tests/language/mixin_of_mixin_test.dart
deleted file mode 100644
index fb8d7ff..0000000
--- a/tests/language/mixin_of_mixin_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following text from section 12 ("Mixins") of the spec:
-//
-//     "A mixin application of the form S with M; defines a class C ...
-//     ... C declares the same instance members as M ..."
-//
-// This means that if M is itself a mixin application, then things
-// mixed into M are accessible through C.  But if M simply *extends* a
-// mixin application (e.g. because M is declared as `class M extends X
-// with Y { ... }`) then things mixed into the mixin application that
-// M extends are not accessible through C.
-
-class A {
-  a() => null;
-}
-
-class B {
-  b() => null;
-}
-
-class C {
-  c() => null;
-}
-
-class D {
-  d() => null;
-}
-
-// Note: by a slight abuse of syntax, `class M1 = A with B, C;` effectively
-// means `class M1 = (A with B) with C;`, therefore M1 declares c(), but it
-// merely inherits a() and b().
-class M1 = A with B, C; // declares c()
-
-class M2 extends M1 {
-  m2() => null;
-}
-
-class M3 extends A with B, C {
-  m3() => null;
-}
-
-class T1 = D with M1; // declares c()
-class T2 = D with M2; // declares m2()
-class T3 = D with M3; // declares m3()
-
-class T4 extends D with M1 {} // extends a class which declares c()
-
-class T5 extends D with M2 {} // extends a class which declares m2()
-
-class T6 extends D with M3 {} // extends a class which declares m3()
-
-main() {
-  /// none: static type warning, ok
-  new T1().a(); // //# 01: static type warning, runtime error
-  new T1().b(); // //# 02: static type warning, runtime error
-  new T1().c(); // //# 03: static type warning, ok
-  new T2().a(); // //# 04: static type warning, runtime error
-  new T2().b(); // //# 05: static type warning, runtime error
-  new T2().c(); // //# 06: static type warning, runtime error
-  new T2().m2(); //# 07: static type warning, ok
-  new T3().a(); // //# 08: static type warning, runtime error
-  new T3().b(); // //# 09: static type warning, runtime error
-  new T3().c(); // //# 10: static type warning, runtime error
-  new T3().m3(); //# 11: static type warning, ok
-  new T4().a(); // //# 12: static type warning, runtime error
-  new T4().b(); // //# 13: static type warning, runtime error
-  new T4().c(); // //# 14: static type warning, ok
-  new T5().a(); // //# 15: static type warning, runtime error
-  new T5().b(); // //# 16: static type warning, runtime error
-  new T5().c(); // //# 17: static type warning, runtime error
-  new T5().m2(); //# 18: static type warning, ok
-  new T6().a(); // //# 19: static type warning, runtime error
-  new T6().b(); // //# 20: static type warning, runtime error
-  new T6().c(); // //# 21: static type warning, runtime error
-  new T6().m3(); //# 22: static type warning, ok
-}
diff --git a/tests/language/mixin_only_for_rti_test.dart b/tests/language/mixin_only_for_rti_test.dart
deleted file mode 100644
index d401e85..0000000
--- a/tests/language/mixin_only_for_rti_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class Tester<T> {
-  testGenericType(x) {
-    return x is T;
-  }
-}
-
-abstract class A = B with C;
-
-class B {}
-
-class C {}
-
-class X extends Y with Z {}
-
-class Y {}
-
-class Z {}
-
-main() {
-  // Classes A and X are only used as generic arguments.
-  Expect.isFalse(new Tester<A>().testGenericType(new Object()));
-  Expect.isFalse(new Tester<X>().testGenericType(new Object()));
-}
diff --git a/tests/language/mixin_override_regression_test.dart b/tests/language/mixin_override_regression_test.dart
deleted file mode 100644
index cb032e0..0000000
--- a/tests/language/mixin_override_regression_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class C0 {
-  int m1() => 5;
-  int m2() => m1();
-}
-
-class C1 = Object with C0;
-
-class D {
-  int m1() => 7;
-}
-
-class E0 extends C0 with D {}
-
-class E1 extends C1 with D {}
-
-main() {
-  Expect.equals(7, new E0().m2());
-  Expect.equals(7, new E1().m2());
-}
diff --git a/tests/language/mixin_prefix_lib.dart b/tests/language/mixin_prefix_lib.dart
deleted file mode 100644
index f7f17ac..0000000
--- a/tests/language/mixin_prefix_lib.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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 mixin_prefix_lib;
-
-import "dart:convert";
-
-class MixinClass {
-  String bar() => JSON.encode({'a': 1});
-}
diff --git a/tests/language/mixin_prefix_test.dart b/tests/language/mixin_prefix_test.dart
deleted file mode 100644
index eea64ce..0000000
--- a/tests/language/mixin_prefix_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for issue 11891.
-
-import "package:expect/expect.dart";
-import "mixin_prefix_lib.dart";
-
-class A extends Object with MixinClass {
-  String baz() => bar();
-}
-
-void main() {
-  var a = new A();
-  Expect.equals('{"a":1}', a.baz());
-}
diff --git a/tests/language/mixin_proto_test.dart b/tests/language/mixin_proto_test.dart
deleted file mode 100644
index b508718..0000000
--- a/tests/language/mixin_proto_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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.
-
-// Tests that a program in csp mode doesn't access the prototype chain
-// on platforms that don't support direct access to __proto__.
-// This test is most useful with --csp and on a platform that doesn't support
-// __proto__ access (such as Rhino).
-// See http://dartbug.com/27290 .
-
-import 'package:expect/expect.dart';
-
-class A {
-  var x;
-  foo() => 44;
-  bar() => 22;
-}
-
-class B {
-  var y;
-  foo() => 42;
-}
-
-class C extends A with B {
-  var z;
-  bar() => 499;
-}
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-main() {
-  var all = [new A(), new B(), new C()];
-  Expect.equals(44, confuse(all[0]).foo());
-  Expect.equals(22, confuse(all[0]).bar());
-  Expect.equals(42, confuse(all[1]).foo());
-  Expect.equals(42, confuse(all[2]).foo());
-  Expect.equals(499, confuse(all[2]).bar());
-}
diff --git a/tests/language/mixin_regress_11398_test.dart b/tests/language/mixin_regress_11398_test.dart
deleted file mode 100644
index 31fe089..0000000
--- a/tests/language/mixin_regress_11398_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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";
-
-void main() {
-  var hva = new HasValueA();
-  hva.value = '42';
-  Expect.equals('42', hva.value);
-
-  var hvb = new HasValueB();
-  hvb.value = '87';
-  Expect.equals('87', hvb.value);
-
-  var hvc = new HasValueC();
-  hvc.value = '99';
-  Expect.equals('99', hvc.value);
-}
-
-abstract class Delegate {
-  String invoke(String value);
-}
-
-abstract class DelegateMixin {
-  String invoke(String value) => value;
-}
-
-abstract class HasValueMixin implements Delegate {
-  String _value;
-  set value(String value) {
-    _value = invoke(value);
-  }
-
-  String get value => _value;
-}
-
-class HasValueA extends Object with HasValueMixin, DelegateMixin {}
-
-class HasValueB extends Object with DelegateMixin, HasValueMixin {}
-
-class HasValueC extends Object with HasValueMixin {
-  String invoke(String value) => value;
-}
diff --git a/tests/language/mixin_regress_13688_test.dart b/tests/language/mixin_regress_13688_test.dart
deleted file mode 100644
index 7d0d44c..0000000
--- a/tests/language/mixin_regress_13688_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class ComparableMixin<E> {
-  e() {
-    return E;
-  }
-}
-
-class KUID extends Object with ComparableMixin<KUID> {}
-
-@NoInline()
-@AssumeDynamic()
-dyn(x) => x;
-
-main() {
-  var kuid = new KUID();
-  Expect.equals(kuid.runtimeType.toString(), kuid.e().toString());
-  Expect.equals(dyn(kuid).runtimeType.toString(), dyn(kuid).e().toString());
-}
diff --git a/tests/language/mixin_super_2_test.dart b/tests/language/mixin_super_2_test.dart
deleted file mode 100644
index 9acc25f..0000000
--- a/tests/language/mixin_super_2_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2015, 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.
-// SharedOptions=--supermixin
-
-import "package:expect/expect.dart";
-
-class B {
-  // 'super' resolves to Object, and in some tests, multiple points in the
-  // inheritance chain.
-  toString() => 'B(' + super.toString() + ')';
-}
-
-class R {
-  toString() => 'R[' + super.toString() + ']';
-}
-
-class D extends R with B {
-  toString() => 'D<' + super.toString() + '>';
-}
-
-class E extends D with B {
-  toString() => 'E{' + super.toString() + '}';
-}
-
-class F = R with B, B;
-
-class G extends F with B {
-  toString() => 'G{' + super.toString() + '}';
-}
-
-main() {
-  check(object, String expected) {
-    Expect.equals(expected, object.toString());
-  }
-
-  check(new B(), "B(Instance of 'B')");
-  check(new R(), "R[Instance of 'R']");
-  check(new D(), "D<B(R[Instance of 'D'])>");
-  check(new E(), "E{B(D<B(R[Instance of 'E'])>)}");
-  check(new F(), "B(B(R[Instance of 'F']))");
-  check(new G(), "G{B(B(B(R[Instance of 'G'])))}");
-}
diff --git a/tests/language/mixin_super_bound2_test.dart b/tests/language/mixin_super_bound2_test.dart
deleted file mode 100644
index f28a72f..0000000
--- a/tests/language/mixin_super_bound2_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2015, 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.
-// SharedOptions=--supermixin
-
-import "package:expect/expect.dart";
-
-bool inCheckedMode() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-class MS<
-    U,
-    V
-    extends U //# 01: static type warning
-    > {}
-
-class M<
-    U
-    extends V //# 01: continued
-    ,
-    V> extends MS<V, U> {}
-
-class NS<
-    U
-    extends V //# 01: continued
-    ,
-    V> {}
-
-class N<
-    U,
-    V
-    extends U //# 01: continued
-    > extends NS<V, U> {}
-
-class S<T> {}
-
-class MNA<U, V, W> extends S<List<U>>
-    with M<List<V>, List<U>>, N<List<W>, List<W>> {}
-
-class MNA2<U, V, W> = S<List<U>> with M<List<W>, List<W>>, N<List<U>, List<V>>;
-
-class MNA3<U, V, W> extends S<List<U>>
-    with MNA<U, V, W>, MNA2<List<U>, List<V>, List<W>> {}
-
-class MNA4<U, V, W> = S<List<U>>
-    with MNA<U, V, W>, MNA2<List<U>, List<V>, List<W>>;
-
-main() {
-  new MNA<num, int, bool>();
-  new MNA2<num, int, bool>();
-  new MNA3<num, int, bool>();
-  new MNA4<num, int, bool>();
-  bool shouldThrow = false
-      || inCheckedMode() //# 01: continued
-      ;
-  if (shouldThrow) {
-    // Type parameter U of M must extend type parameter V, but
-    // type argument List<num> is not a subtype of List<int>.
-    Expect.throws(() => new MNA<int, num, bool>(), (e) => e is TypeError);
-    // Type parameter V of N must extend type parameter U, but
-    // type argument List<num> is not a subtype of List<int>.
-    Expect.throws(() => new MNA2<int, num, bool>(), (e) => e is TypeError);
-    // Type parameter V of N must extend type parameter U, but
-    // type argument List<List<num>> is not a subtype of List<List<int>>.
-    Expect.throws(() => new MNA3<int, num, bool>(), (e) => e is TypeError);
-    // Type parameter V of N must extend type parameter U, but
-    // type argument List<List<num>> is not a subtype of List<List<int>>.
-    Expect.throws(() => new MNA4<int, num, bool>(), (e) => e is TypeError);
-  } else {
-    new MNA<int, num, bool>();
-    new MNA2<int, num, bool>();
-    new MNA3<int, num, bool>();
-    new MNA4<int, num, bool>();
-  }
-}
diff --git a/tests/language/mixin_super_bound_test.dart b/tests/language/mixin_super_bound_test.dart
deleted file mode 100644
index fe6a283..0000000
--- a/tests/language/mixin_super_bound_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2015, 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";
-
-bool inCheckedMode() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-class M<U extends V, V> {}
-
-class N<U, V extends U> {}
-
-class S<T> {}
-
-class MNA<U, V, W> extends S<List<U>> with M<V, U>, N<List<W>, List<W>> {}
-
-class MNA2<U, V, W> = S<List<U>> with M<V, U>, N<List<W>, List<W>>;
-
-main() {
-  new MNA<num, int, bool>();
-  new MNA2<num, int, bool>();
-  if (inCheckedMode()) {
-    // Type parameter U of M must extend type parameter V, but
-    // type argument num is not a subtype of int.
-    Expect.throws(() => new MNA<int, num, bool>(), (e) => e is TypeError);
-    // Type parameter U of M must extend type parameter V, but
-    // type argument num is not a subtype of int.
-    Expect.throws(() => new MNA2<int, num, bool>(), (e) => e is TypeError);
-  } else {
-    new MNA<int, num, bool>();
-    new MNA2<int, num, bool>();
-  }
-}
diff --git a/tests/language/mixin_super_constructor2_test.dart b/tests/language/mixin_super_constructor2_test.dart
deleted file mode 100644
index b54c791..0000000
--- a/tests/language/mixin_super_constructor2_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Base {
-  int i, j;
-  Base.ctor1(int i, this.j) : this.i = i + 7;
-  Base.ctor2(int i, this.j) : this.i = i + 8;
-}
-
-abstract class M {
-  get i;
-  get j;
-  int k = 42;
-  foo() => i + j;
-}
-
-class C extends Base with M {
-  int l = 131;
-  C.ctor1() : super.ctor1(1, 13);
-  C.ctor2() : super.ctor2(1, 13);
-}
-
-main() {
-  C c1 = new C.ctor1();
-  Expect.equals(8, c1.i);
-  Expect.equals(13, c1.j);
-  Expect.equals(42, c1.k);
-  Expect.equals(131, c1.l);
-  Expect.equals(21, c1.foo());
-  C c2 = new C.ctor2();
-  Expect.equals(9, c2.i);
-  Expect.equals(13, c2.j);
-  Expect.equals(42, c2.k);
-  Expect.equals(131, c2.l);
-  Expect.equals(22, c2.foo());
-}
diff --git a/tests/language/mixin_super_constructor_default_test.dart b/tests/language/mixin_super_constructor_default_test.dart
deleted file mode 100644
index 08a11ad..0000000
--- a/tests/language/mixin_super_constructor_default_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Base {
-  int i, j;
-  Base(int i, this.j) : this.i = i + 7;
-}
-
-abstract class M {
-  get i;
-  get j;
-  int k = 42;
-  foo() => i + j;
-}
-
-class C extends Base with M {
-  int l = 131;
-  C() : super(1, 13);
-}
-
-main() {
-  C c = new C();
-  Expect.equals(8, c.i);
-  Expect.equals(13, c.j);
-  Expect.equals(21, c.foo());
-  Expect.equals(42, c.k);
-  Expect.equals(131, c.l);
-}
diff --git a/tests/language/mixin_super_constructor_multiple_test.dart b/tests/language/mixin_super_constructor_multiple_test.dart
deleted file mode 100644
index 5201be3..0000000
--- a/tests/language/mixin_super_constructor_multiple_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {
-  int i;
-  S.foo() : i = 1742;
-}
-
-class M1 {}
-
-class M2 {}
-
-class C extends S with M1, M2 {
-  C.foo() : super.foo();
-}
-
-main() {
-  Expect.equals(1742, new C.foo().i);
-}
diff --git a/tests/language/mixin_super_constructor_named_test.dart b/tests/language/mixin_super_constructor_named_test.dart
deleted file mode 100644
index ad1162b..0000000
--- a/tests/language/mixin_super_constructor_named_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Base {
-  int i, j;
-  Base.ctor(int this.i
-            , {int this.j: 10} //   //# 01: compile-time error
-      ) {
-    if (j == null) {
-      j = 10;
-    }
-  }
-}
-
-abstract class M {
-  get i;
-  get j;
-  int k = 42;
-  foo() => i + j;
-}
-
-class C extends Base with M {
-  int l = 131;
-  C.foo() : super.ctor(1, j: 13); //# 01: compile-time error
-  C.bar() : super.ctor(1);
-}
-
-main() {
-  C c1 = new C.foo(); //            //# 01: compile-time error
-  C c2 = new C.bar();
-  Expect.equals(1, c2.i);
-  Expect.equals(10, c2.j);
-  Expect.equals(11, c2.foo());
-  Expect.equals(42, c2.k);
-  Expect.equals(131, c2.l);
-}
diff --git a/tests/language/mixin_super_constructor_positionals_test.dart b/tests/language/mixin_super_constructor_positionals_test.dart
deleted file mode 100644
index d8c8826..0000000
--- a/tests/language/mixin_super_constructor_positionals_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Base {
-  int i, j;
-  Base.ctor(
-      int this.i,
-            [ //                 //# 01: compile-time error
-      int this.j
-            ] //                 //# 01: continued
-      );
-}
-
-abstract class M {
-  get i;
-  get j;
-  int k = 42;
-  foo() => i + j;
-}
-
-class C extends Base with M {
-  int l = 131;
-  C.foo() : super.ctor(1, 13);
-  C.bar() : super.ctor(1); //    //# 01: continued
-}
-
-main() {
-  C c1 = new C.foo();
-  Expect.equals(1, c1.i);
-  Expect.equals(13, c1.j);
-  Expect.equals(14, c1.foo());
-  Expect.equals(42, c1.k);
-  Expect.equals(131, c1.l);
-  C c2 = new C.bar(); //         //# 01: continued
-}
diff --git a/tests/language/mixin_super_constructor_test.dart b/tests/language/mixin_super_constructor_test.dart
deleted file mode 100644
index f60ff5b..0000000
--- a/tests/language/mixin_super_constructor_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Base {
-  int i, j;
-  Base.ctor(int i, this.j) : this.i = i + 7;
-}
-
-abstract class M {
-  get i;
-  get j;
-  int k = 42;
-  foo() => i + j;
-}
-
-class C extends Base with M {
-  int l = 131;
-  C() : super.ctor(1, 13);
-}
-
-main() {
-  C c = new C();
-  Expect.equals(8, c.i);
-  Expect.equals(13, c.j);
-  Expect.equals(42, c.k);
-  Expect.equals(131, c.l);
-  Expect.equals(21, c.foo());
-}
diff --git a/tests/language/mixin_super_test.dart b/tests/language/mixin_super_test.dart
deleted file mode 100644
index 1f4c2b01..0000000
--- a/tests/language/mixin_super_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2015, 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.
-// SharedOptions=--supermixin
-
-import "package:expect/expect.dart";
-
-class MS<T> {
-  foo() {
-    return "MS<$T>.foo\n";
-  }
-}
-
-class M<T> extends MS<List<T>> {
-  foo() {
-    return super.foo() + "M<$T>.foo\n";
-  }
-}
-
-class NS<T> {
-  foo() {
-    return "NS<$T>.foo\n";
-  }
-}
-
-class N<T> extends NS<List<T>> {
-  foo() {
-    return super.foo() + "N<$T>.foo\n";
-  }
-}
-
-class S<T> {
-  foo() {
-    return "S<$T>.foo\n";
-  }
-}
-
-class SM<U, V> = S<List<U>> with M<Map<U, V>>;
-
-class MNA1<U, V, W> extends S<List<U>> with M<Map<U, V>>, N<W> {
-  foo() {
-    return super.foo() + "MNA1<$U, $V, $W>.foo\n";
-  }
-}
-
-class MNA2<U, V, W> extends SM<U, V> with N<W> {
-  foo() {
-    return super.foo() + "MNA2<$U, $V, $W>.foo\n";
-  }
-}
-
-class MNA3<U, V, W> extends S<List<U>> with SM<U, V>, N<W> {
-  foo() {
-    return super.foo() + "MNA3<$U, $V, $W>.foo\n";
-  }
-}
-
-main() {
-  Expect.equals(
-      "MS<List<double>>.foo\n"
-      "M<double>.foo\n",
-      new M<double>().foo());
-  Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n",
-      new SM<int, String>().foo());
-  Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n"
-      "N<bool>.foo\n"
-      "MNA1<int, String, bool>.foo\n",
-      new MNA1<int, String, bool>().foo());
-  Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n"
-      "N<bool>.foo\n"
-      "MNA2<int, String, bool>.foo\n",
-      new MNA2<int, String, bool>().foo());
-  Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n"
-      "N<bool>.foo\n"
-      "MNA3<int, String, bool>.foo\n",
-      new MNA3<int, String, bool>().foo());
-}
diff --git a/tests/language/mixin_super_use_test.dart b/tests/language/mixin_super_use_test.dart
deleted file mode 100644
index 0076bd9..0000000
--- a/tests/language/mixin_super_use_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2013, 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.
-// SharedOptions=--supermixin
-
-import "package:expect/expect.dart";
-
-class M {}
-
-class P0 {
-  foo() {
-    super.toString();
-
-    void inner() {
-      super.toString();
-    }
-
-    inner();
-
-    (() {
-      super.toString();
-    })();
-
-    return 42;
-  }
-}
-
-class P1 {
-  bar() {
-    super.toString();
-    return 87;
-  }
-
-  // The test method is strategically placed here to try to force the
-  // P1 class and its bar method to be resolved before resolving the
-  // mixin applications.
-  test() {
-    new C();
-    var d = new D();
-    var e = new E();
-    var f = new F();
-    Expect.equals(42, d.foo());
-    Expect.equals(87, e.bar());
-    Expect.equals(99, f.baz());
-  }
-}
-
-class P2 {
-  baz() {
-    super.toString();
-    return 99;
-  }
-}
-
-class C = Object with M;
-class D = Object with P0;
-class E = Object with M, P1;
-class F = Object with P2, M;
-
-main() {
-  var p1 = new P1();
-  var p2 = new P2();
-  Expect.equals(87, p1.bar());
-  p1.test();
-  Expect.equals(99, p2.baz());
-}
diff --git a/tests/language/mixin_superclass_test.dart b/tests/language/mixin_superclass_test.dart
deleted file mode 100644
index 162d6ee..0000000
--- a/tests/language/mixin_superclass_test.dart
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) 2013, 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.
-// SharedOptions=--supermixin
-
-class S0 {}
-
-class S1 extends Object {}
-
-class S2 extends S0 {}
-
-class M0 {}
-
-class M1 extends Object {}
-
-class M2 extends M0 {}
-
-class C00 = S0 with M0;
-class C01 = S0 with M1;
-class C02 = S0 with M2;
-class C03 = S0 with M0, M1;
-class C04 = S0 with M0, M2;
-class C05 = S0 with M2, M0;
-class C06 = S0 with M1, M2;
-class C07 = S0 with M2, M1;
-
-class C10 = S1 with M0;
-class C11 = S1 with M1;
-class C12 = S1 with M2;
-class C13 = S1 with M0, M1;
-class C14 = S1 with M0, M2;
-class C15 = S1 with M2, M0;
-class C16 = S1 with M1, M2;
-class C17 = S1 with M2, M1;
-
-class C20 = S2 with M0;
-class C21 = S2 with M1;
-class C22 = S2 with M2;
-class C23 = S2 with M0, M1;
-class C24 = S2 with M0, M2;
-class C25 = S2 with M2, M0;
-class C26 = S2 with M1, M2;
-class C27 = S2 with M2, M1;
-
-class D00 extends S0 with M0 {}
-
-class D01 extends S0 with M1 {}
-
-class D02 extends S0 with M2 {}
-
-class D03 extends S0 with M0, M1 {}
-
-class D04 extends S0 with M0, M2 {}
-
-class D05 extends S0 with M2, M0 {}
-
-class D06 extends S0 with M1, M2 {}
-
-class D07 extends S0 with M2, M1 {}
-
-class D10 extends S1 with M0 {}
-
-class D11 extends S1 with M1 {}
-
-class D12 extends S1 with M2 {}
-
-class D13 extends S1 with M0, M1 {}
-
-class D14 extends S1 with M0, M2 {}
-
-class D15 extends S1 with M2, M0 {}
-
-class D16 extends S1 with M1, M2 {}
-
-class D17 extends S1 with M2, M1 {}
-
-class D20 extends S2 with M0 {}
-
-class D21 extends S2 with M1 {}
-
-class D22 extends S2 with M2 {}
-
-class D23 extends S2 with M0, M1 {}
-
-class D24 extends S2 with M0, M2 {}
-
-class D25 extends S2 with M2, M0 {}
-
-class D26 extends S2 with M1, M2 {}
-
-class D27 extends S2 with M2, M1 {}
-
-main() {
-  new C00();
-  new C01();
-  new C02();
-  new C03();
-  new C04();
-  new C05();
-  new C06();
-  new C07();
-
-  new C10();
-  new C11();
-  new C12();
-  new C13();
-  new C14();
-  new C15();
-  new C16();
-  new C17();
-
-  new C20();
-  new C21();
-  new C22();
-  new C23();
-  new C24();
-  new C25();
-  new C26();
-  new C27();
-
-  new D00();
-  new D01();
-  new D02();
-  new D03();
-  new D04();
-  new D05();
-  new D06();
-  new D07();
-
-  new D10();
-  new D11();
-  new D12();
-  new D13();
-  new D14();
-  new D15();
-  new D16();
-  new D17();
-
-  new D20();
-  new D21();
-  new D22();
-  new D23();
-  new D24();
-  new D25();
-  new D26();
-  new D27();
-}
diff --git a/tests/language/mixin_supertype_subclass2_test.dart b/tests/language/mixin_supertype_subclass2_test.dart
deleted file mode 100644
index 71d1c38..0000000
--- a/tests/language/mixin_supertype_subclass2_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E extends B with C implements D {}
-
-class F extends E {}
-
-class A extends E with M {}
-
-class M
-  extends B //# 01: ok
-  extends C //# 02: static type warning
-  extends D //# 03: ok
-  extends E //# 04: ok
-  extends F //# 05: static type warning
-{}
-
-main() {
-  new A();
-}
diff --git a/tests/language/mixin_supertype_subclass3_test.dart b/tests/language/mixin_supertype_subclass3_test.dart
deleted file mode 100644
index c1893fe2..0000000
--- a/tests/language/mixin_supertype_subclass3_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
-
-// In this test, M is declared as `class M = S_static with G;`.
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E extends B with C implements D {}
-
-class F extends E {}
-
-class A
-  = E with M; class M = B with G; class G //# 01: ok
-  = E with M; class M = C with G; class G //# 02: static type warning
-  = E with M; class M = D with G; class G //# 03: ok
-  = E with M; class M = E with G; class G //# 04: ok
-  = E with M; class M = F with G; class G //# 05: static type warning
-{}
-
-main() {
-  new A();
-}
diff --git a/tests/language/mixin_supertype_subclass4_test.dart b/tests/language/mixin_supertype_subclass4_test.dart
deleted file mode 100644
index 82770d3..0000000
--- a/tests/language/mixin_supertype_subclass4_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
-
-// In this test, M is declared as `class M extends ... with G {}`, so
-// `S_static` is the unnamed mixin application `... with G`.  Since this
-// unnamed mixin application can't be derived from, all the cases should yield
-// a warning.
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E extends B with C implements D {}
-
-class F extends E {}
-
-class G {}
-
-class A = E with M;
-
-class M
-  extends B with G //# 01: static type warning
-  extends C with G //# 02: static type warning
-  extends D with G //# 03: static type warning
-  extends E with G //# 04: static type warning
-  extends F with G //# 05: static type warning
-{}
-
-main() {
-  new A();
-}
diff --git a/tests/language/mixin_supertype_subclass_test.dart b/tests/language/mixin_supertype_subclass_test.dart
deleted file mode 100644
index f337ed0..0000000
--- a/tests/language/mixin_supertype_subclass_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E extends B with C implements D {}
-
-class F extends E {}
-
-class A = E with M;
-
-class M
-  extends B //# 01: ok
-  extends C //# 02: static type warning
-  extends D //# 03: ok
-  extends E //# 04: ok
-  extends F //# 05: static type warning
-{}
-
-main() {
-  new A();
-}
diff --git a/tests/language/mixin_this_use_test.dart b/tests/language/mixin_this_use_test.dart
deleted file mode 100644
index 23d2e99..0000000
--- a/tests/language/mixin_this_use_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that [:this:] in a class A used as a mixin in class D knows it can be an
-// instance of D.
-
-import "package:expect/expect.dart";
-
-class A {
-  foo() => bar(); // Implicit use of [:this:]
-  bar() => 42;
-}
-
-class B {}
-
-class C = B with A;
-
-class D extends C {
-  bar() => 54;
-}
-
-class E extends A {
-  bar() => 68;
-}
-
-main() {
-  Expect.equals(54, new D().foo());
-  Expect.equals(68, new E().foo());
-}
diff --git a/tests/language/mixin_type_parameter1_test.dart b/tests/language/mixin_type_parameter1_test.dart
deleted file mode 100644
index 1928ec4..0000000
--- a/tests/language/mixin_type_parameter1_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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";
-
-abstract class Mixin1<T> {}
-
-abstract class Mixin2<T> {}
-
-class A {}
-
-class MyTypedef<K, V> = A with Mixin1<K>, Mixin2<V>;
-
-class B<K, V> extends MyTypedef<K, V> {}
-
-main() {
-  var b = new B<num, String>();
-  Expect.isTrue(b is Mixin1<num>);
-  Expect.isTrue(b is! Mixin1<String>);
-  Expect.isTrue(b is Mixin2<String>);
-  Expect.isTrue(b is! Mixin2<num>);
-}
diff --git a/tests/language/mixin_type_parameter2_test.dart b/tests/language/mixin_type_parameter2_test.dart
deleted file mode 100644
index 129fdf1..0000000
--- a/tests/language/mixin_type_parameter2_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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";
-
-abstract class Mixin1<T> {}
-
-abstract class Mixin2<T> {}
-
-class A {
-  A(foo);
-}
-
-class MyTypedef<K, V> = A with Mixin1<K>, Mixin2<V>;
-
-class B<K, V> extends MyTypedef<K, V> {
-  B(foo) : super(foo);
-}
-
-main() {
-  var b = new B<num, String>(null);
-  Expect.isTrue(b is Mixin1<num>);
-  Expect.isTrue(b is! Mixin1<String>);
-  Expect.isTrue(b is Mixin2<String>);
-  Expect.isTrue(b is! Mixin2<num>);
-}
diff --git a/tests/language/mixin_type_parameter3_test.dart b/tests/language/mixin_type_parameter3_test.dart
deleted file mode 100644
index 51164d9..0000000
--- a/tests/language/mixin_type_parameter3_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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";
-
-abstract class Mixin1<T> {}
-
-abstract class Mixin2<T> {}
-
-class A {
-  A(foo);
-}
-
-class B<K, V> extends A with Mixin1<K>, Mixin2<V> {
-  B(foo) : super(foo);
-}
-
-main() {
-  var b = new B<num, String>(null);
-  Expect.isTrue(b is Mixin1<num>);
-  Expect.isTrue(b is! Mixin1<String>);
-  Expect.isTrue(b is Mixin2<String>);
-  Expect.isTrue(b is! Mixin2<num>);
-}
diff --git a/tests/language/mixin_type_parameter4_test.dart b/tests/language/mixin_type_parameter4_test.dart
deleted file mode 100644
index 575058a..0000000
--- a/tests/language/mixin_type_parameter4_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class R<E, F> {}
-
-class M<J> implements R<bool, J> {}
-
-class B1 {}
-
-class B2 {}
-
-class A1<T> extends B1 with M<T> {}
-
-class A2<T> = B2 with M<T>;
-
-main() {
-  var ab = new A1<int>();
-  Expect.isTrue(ab is R<bool, int>);
-  ab = new A2<int>();
-  Expect.isTrue(ab is R<bool, int>);
-}
diff --git a/tests/language/mixin_type_parameter5_test.dart b/tests/language/mixin_type_parameter5_test.dart
deleted file mode 100644
index ce6bad0..0000000
--- a/tests/language/mixin_type_parameter5_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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 MixinA<T> {
-  T intField;
-}
-
-class MixinB<S> {
-  S stringField;
-}
-
-class MixinC<U, V> {
-  U listField;
-  V mapField;
-}
-
-class C extends Object with MixinA<int>, MixinB<String>, MixinC<List, Map> {}
-
-void main() {
-  var c = new C();
-  c.intField = 0;
-  c.stringField = '';
-  c.listField = [];
-  c.mapField = {};
-}
diff --git a/tests/language/mixin_type_parameter6_test.dart b/tests/language/mixin_type_parameter6_test.dart
deleted file mode 100644
index 401a1a5..0000000
--- a/tests/language/mixin_type_parameter6_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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<T> {}
-
-class B<S> {
-  int foo(S s) => null;
-}
-
-class C extends A<int> with B<String> {}
-
-main() {
-  var list = <String>['foo'];
-  var c = new C();
-  list.map(c.foo);
-}
diff --git a/tests/language/mixin_type_parameters_errors_test.dart b/tests/language/mixin_type_parameters_errors_test.dart
deleted file mode 100644
index a10315c..0000000
--- a/tests/language/mixin_type_parameters_errors_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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 S<T> {}
-
-class M<U> {}
-
-class A<X> extends S<int> with M<double> {}
-class B<U, V> extends S with M<U, V> { } // //# 01: static type warning
-class C<A, B> extends S<A, int> with M { } // //# 02: static type warning
-
-class F<X> = S<X> with M<X>;
-class G = S<int> with M<double, double>; // //# 05: static type warning
-
-main() {
-  var a;
-  a = new A();
-  a = new A<int>();
-  a = new A<String, String>(); // //# 03: static type warning
-  a = new F<int>();
-  a = new F<int, String>(); //  //# 04: static type warning
-}
diff --git a/tests/language/mixin_type_parameters_mixin_extends_test.dart b/tests/language/mixin_type_parameters_mixin_extends_test.dart
deleted file mode 100644
index b1e9d3f..0000000
--- a/tests/language/mixin_type_parameters_mixin_extends_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class M<T> {
-  bool matches(o) {
-    bool isChecked = checkUsingIs(o);
-    if (checkedMode) {
-      Expect.equals(isChecked, checkUsingCheckedMode(o));
-    }
-    return isChecked;
-  }
-
-  bool checkUsingIs(o) {
-    return o is T;
-  }
-
-  bool checkUsingCheckedMode(o) {
-    try {
-      T x = o;
-    } on Error {
-      return false;
-    }
-    return true;
-  }
-
-  static final bool checkedMode = computeCheckedMode();
-  static bool computeCheckedMode() {
-    try {
-      int x = "foo";
-    } on Error {
-      return true;
-    }
-    return false;
-  }
-}
-
-class S {}
-
-class C0<T> extends S with M {}
-
-class C1<T> extends S with M<T> {}
-
-class C2<T> extends S with M<int> {}
-
-class C3 extends S with M<String> {}
-
-main() {
-  var c0 = new C0();
-  Expect.isTrue(c0 is M);
-  Expect.isTrue(c0 is M<int>);
-  Expect.isTrue(c0 is M<String>);
-  Expect.isTrue(c0.matches(c0));
-  Expect.isTrue(c0.matches(42));
-  Expect.isTrue(c0.matches("hello"));
-
-  var c0_int = new C0<int>();
-  Expect.isTrue(c0_int is M);
-  Expect.isTrue(c0_int is M<int>);
-  Expect.isTrue(c0_int is M<String>);
-  Expect.isTrue(c0_int.matches(c0));
-  Expect.isTrue(c0_int.matches(42));
-  Expect.isTrue(c0_int.matches("hello"));
-
-  var c0_String = new C0<String>();
-  Expect.isTrue(c0_String is M);
-  Expect.isTrue(c0_String is M<int>);
-  Expect.isTrue(c0_String is M<String>);
-  Expect.isTrue(c0_String.matches(c0));
-  Expect.isTrue(c0_String.matches(42));
-  Expect.isTrue(c0_String.matches("hello"));
-
-  var c1 = new C1();
-  Expect.isTrue(c1 is M);
-  Expect.isTrue(c1 is M<int>);
-  Expect.isTrue(c1 is M<String>);
-  Expect.isTrue(c1.matches(c1));
-  Expect.isTrue(c1.matches(42));
-  Expect.isTrue(c1.matches("hello"));
-
-  var c1_int = new C1<int>();
-  Expect.isTrue(c1_int is M);
-  Expect.isTrue(c1_int is M<int>);
-  Expect.isFalse(c1_int is M<String>);
-  Expect.isFalse(c1_int.matches(c1));
-  Expect.isTrue(c1_int.matches(42));
-  Expect.isFalse(c1_int.matches("hello"));
-
-  var c1_String = new C1<String>();
-  Expect.isTrue(c1_String is M);
-  Expect.isFalse(c1_String is M<int>);
-  Expect.isTrue(c1_String is M<String>);
-  Expect.isFalse(c1_String.matches(c1));
-  Expect.isFalse(c1_String.matches(42));
-  Expect.isTrue(c1_String.matches("hello"));
-
-  var c2 = new C2();
-  Expect.isTrue(c2 is M);
-  Expect.isTrue(c2 is M<int>);
-  Expect.isFalse(c2 is M<String>);
-  Expect.isFalse(c2.matches(c2));
-  Expect.isTrue(c2.matches(42));
-  Expect.isFalse(c2.matches("hello"));
-
-  var c2_int = new C2<int>();
-  Expect.isTrue(c2_int is M);
-  Expect.isTrue(c2_int is M<int>);
-  Expect.isFalse(c2_int is M<String>);
-  Expect.isFalse(c2_int.matches(c2));
-  Expect.isTrue(c2_int.matches(42));
-  Expect.isFalse(c2_int.matches("hello"));
-
-  var c2_String = new C2<String>();
-  Expect.isTrue(c2_String is M);
-  Expect.isTrue(c2_String is M<int>);
-  Expect.isFalse(c2_String is M<String>);
-  Expect.isFalse(c2_String.matches(c2));
-  Expect.isTrue(c2_String.matches(42));
-  Expect.isFalse(c2_String.matches("hello"));
-
-  var c3 = new C3();
-  Expect.isTrue(c3 is M);
-  Expect.isFalse(c3 is M<int>);
-  Expect.isTrue(c3 is M<String>);
-  Expect.isFalse(c3.matches(c2));
-  Expect.isFalse(c3.matches(42));
-  Expect.isTrue(c3.matches("hello"));
-}
diff --git a/tests/language/mixin_type_parameters_mixin_test.dart b/tests/language/mixin_type_parameters_mixin_test.dart
deleted file mode 100644
index ac38088..0000000
--- a/tests/language/mixin_type_parameters_mixin_test.dart
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class M<T> {
-  bool matches(o) {
-    bool isChecked = checkUsingIs(o);
-    if (checkedMode) {
-      Expect.equals(isChecked, checkUsingCheckedMode(o));
-    }
-    return isChecked;
-  }
-
-  bool checkUsingIs(o) {
-    return o is T;
-  }
-
-  bool checkUsingCheckedMode(o) {
-    try {
-      T x = o;
-    } on Error {
-      return false;
-    }
-    return true;
-  }
-
-  static final bool checkedMode = computeCheckedMode();
-  static bool computeCheckedMode() {
-    try {
-      int x = "foo";
-    } on Error {
-      return true;
-    }
-    return false;
-  }
-}
-
-class S {}
-
-class C0<T> = S with M;
-class C1<T> = S with M<T>;
-class C2<T> = S with M<int>;
-class C3 = S with M<String>;
-
-main() {
-  var c0 = new C0();
-  Expect.isTrue(c0 is M);
-  Expect.isTrue(c0 is M<int>);
-  Expect.isTrue(c0 is M<String>);
-  Expect.isTrue(c0.matches(c0));
-  Expect.isTrue(c0.matches(42));
-  Expect.isTrue(c0.matches("hello"));
-
-  var c0_int = new C0<int>();
-  Expect.isTrue(c0_int is M);
-  Expect.isTrue(c0_int is M<int>);
-  Expect.isTrue(c0_int is M<String>);
-  Expect.isTrue(c0_int.matches(c0));
-  Expect.isTrue(c0_int.matches(42));
-  Expect.isTrue(c0_int.matches("hello"));
-
-  var c0_String = new C0<String>();
-  Expect.isTrue(c0_String is M);
-  Expect.isTrue(c0_String is M<int>);
-  Expect.isTrue(c0_String is M<String>);
-  Expect.isTrue(c0_String.matches(c0));
-  Expect.isTrue(c0_String.matches(42));
-  Expect.isTrue(c0_String.matches("hello"));
-
-  var c1 = new C1();
-  Expect.isTrue(c1 is M);
-  Expect.isTrue(c1 is M<int>);
-  Expect.isTrue(c1 is M<String>);
-  Expect.isTrue(c1.matches(c1));
-  Expect.isTrue(c1.matches(42));
-  Expect.isTrue(c1.matches("hello"));
-
-  var c1_int = new C1<int>();
-  Expect.isTrue(c1_int is M);
-  Expect.isTrue(c1_int is M<int>);
-  Expect.isFalse(c1_int is M<String>);
-  Expect.isFalse(c1_int.matches(c1));
-  Expect.isTrue(c1_int.matches(42));
-  Expect.isFalse(c1_int.matches("hello"));
-
-  var c1_String = new C1<String>();
-  Expect.isTrue(c1_String is M);
-  Expect.isFalse(c1_String is M<int>);
-  Expect.isTrue(c1_String is M<String>);
-  Expect.isFalse(c1_String.matches(c1));
-  Expect.isFalse(c1_String.matches(42));
-  Expect.isTrue(c1_String.matches("hello"));
-
-  var c2 = new C2();
-  Expect.isTrue(c2 is M);
-  Expect.isTrue(c2 is M<int>);
-  Expect.isFalse(c2 is M<String>);
-  Expect.isFalse(c2.matches(c2));
-  Expect.isTrue(c2.matches(42));
-  Expect.isFalse(c2.matches("hello"));
-
-  var c2_int = new C2<int>();
-  Expect.isTrue(c2_int is M);
-  Expect.isTrue(c2_int is M<int>);
-  Expect.isFalse(c2_int is M<String>);
-  Expect.isFalse(c2_int.matches(c2));
-  Expect.isTrue(c2_int.matches(42));
-  Expect.isFalse(c2_int.matches("hello"));
-
-  var c2_String = new C2<String>();
-  Expect.isTrue(c2_String is M);
-  Expect.isTrue(c2_String is M<int>);
-  Expect.isFalse(c2_String is M<String>);
-  Expect.isFalse(c2_String.matches(c2));
-  Expect.isTrue(c2_String.matches(42));
-  Expect.isFalse(c2_String.matches("hello"));
-
-  var c3 = new C3();
-  Expect.isTrue(c3 is M);
-  Expect.isFalse(c3 is M<int>);
-  Expect.isTrue(c3 is M<String>);
-  Expect.isFalse(c3.matches(c2));
-  Expect.isFalse(c3.matches(42));
-  Expect.isTrue(c3.matches("hello"));
-}
diff --git a/tests/language/mixin_type_parameters_simple_test.dart b/tests/language/mixin_type_parameters_simple_test.dart
deleted file mode 100644
index b8ab415..0000000
--- a/tests/language/mixin_type_parameters_simple_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S {}
-
-class M1<X> {
-  m1() => X;
-}
-
-class M2<Y> {
-  m2() => Y;
-}
-
-class A<T> extends S with M1<T>, M2<T> {}
-
-main() {
-  var a = new A<int>();
-  // Getting "int" when calling toString() on the int type is not required.
-  // However, we want to keep the original names for the most common core types
-  // so we make sure to handle these specifically in the compiler.
-  Expect.equals("int", a.m1().toString());
-  Expect.equals("int", a.m2().toString());
-  a = new A<String>();
-  Expect.equals("String", a.m1().toString());
-  Expect.equals("String", a.m2().toString());
-}
diff --git a/tests/language/mixin_type_parameters_super_extends_test.dart b/tests/language/mixin_type_parameters_super_extends_test.dart
deleted file mode 100644
index cdebe98..0000000
--- a/tests/language/mixin_type_parameters_super_extends_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S<T> {
-  bool matches(o) {
-    bool isChecked = checkUsingIs(o);
-    if (checkedMode) {
-      Expect.equals(isChecked, checkUsingCheckedMode(o));
-    }
-    return isChecked;
-  }
-
-  bool checkUsingIs(o) {
-    return o is T;
-  }
-
-  bool checkUsingCheckedMode(o) {
-    try {
-      T x = o;
-    } on Error {
-      return false;
-    }
-    return true;
-  }
-
-  static final bool checkedMode = computeCheckedMode();
-  static bool computeCheckedMode() {
-    try {
-      int x = "foo";
-    } on Error {
-      return true;
-    }
-    return false;
-  }
-}
-
-class M {}
-
-class C0<T> extends S with M {}
-
-class C1<T> extends S<T> with M {}
-
-class C2<T> extends S<int> with M {}
-
-class C3 extends S<String> with M {}
-
-main() {
-  var c0 = new C0();
-  Expect.isTrue(c0 is S);
-  Expect.isTrue(c0 is S<int>);
-  Expect.isTrue(c0 is S<String>);
-  Expect.isTrue(c0.matches(c0));
-  Expect.isTrue(c0.matches(42));
-  Expect.isTrue(c0.matches("hello"));
-
-  var c0_int = new C0<int>();
-  Expect.isTrue(c0_int is S);
-  Expect.isTrue(c0_int is S<int>);
-  Expect.isTrue(c0_int is S<String>);
-  Expect.isTrue(c0_int.matches(c0));
-  Expect.isTrue(c0_int.matches(42));
-  Expect.isTrue(c0_int.matches("hello"));
-
-  var c0_String = new C0<String>();
-  Expect.isTrue(c0_String is S);
-  Expect.isTrue(c0_String is S<int>);
-  Expect.isTrue(c0_String is S<String>);
-  Expect.isTrue(c0_String.matches(c0));
-  Expect.isTrue(c0_String.matches(42));
-  Expect.isTrue(c0_String.matches("hello"));
-
-  var c1 = new C1();
-  Expect.isTrue(c1 is S);
-  Expect.isTrue(c1 is S<int>);
-  Expect.isTrue(c1 is S<String>);
-  Expect.isTrue(c1.matches(c1));
-  Expect.isTrue(c1.matches(42));
-  Expect.isTrue(c1.matches("hello"));
-
-  var c1_int = new C1<int>();
-  Expect.isTrue(c1_int is S);
-  Expect.isTrue(c1_int is S<int>);
-  Expect.isFalse(c1_int is S<String>);
-  Expect.isFalse(c1_int.matches(c1));
-  Expect.isTrue(c1_int.matches(42));
-  Expect.isFalse(c1_int.matches("hello"));
-
-  var c1_String = new C1<String>();
-  Expect.isTrue(c1_String is S);
-  Expect.isFalse(c1_String is S<int>);
-  Expect.isTrue(c1_String is S<String>);
-  Expect.isFalse(c1_String.matches(c1));
-  Expect.isFalse(c1_String.matches(42));
-  Expect.isTrue(c1_String.matches("hello"));
-
-  var c2 = new C2();
-  Expect.isTrue(c2 is S);
-  Expect.isTrue(c2 is S<int>);
-  Expect.isFalse(c2 is S<String>);
-  Expect.isFalse(c2.matches(c2));
-  Expect.isTrue(c2.matches(42));
-  Expect.isFalse(c2.matches("hello"));
-
-  var c2_int = new C2<int>();
-  Expect.isTrue(c2_int is S);
-  Expect.isTrue(c2_int is S<int>);
-  Expect.isFalse(c2_int is S<String>);
-  Expect.isFalse(c2_int.matches(c2));
-  Expect.isTrue(c2_int.matches(42));
-  Expect.isFalse(c2_int.matches("hello"));
-
-  var c2_String = new C2<String>();
-  Expect.isTrue(c2_String is S);
-  Expect.isTrue(c2_String is S<int>);
-  Expect.isFalse(c2_String is S<String>);
-  Expect.isFalse(c2_String.matches(c2));
-  Expect.isTrue(c2_String.matches(42));
-  Expect.isFalse(c2_String.matches("hello"));
-
-  var c3 = new C3();
-  Expect.isTrue(c3 is S);
-  Expect.isFalse(c3 is S<int>);
-  Expect.isTrue(c3 is S<String>);
-  Expect.isFalse(c3.matches(c2));
-  Expect.isFalse(c3.matches(42));
-  Expect.isTrue(c3.matches("hello"));
-}
diff --git a/tests/language/mixin_type_parameters_super_test.dart b/tests/language/mixin_type_parameters_super_test.dart
deleted file mode 100644
index 84818cb..0000000
--- a/tests/language/mixin_type_parameters_super_test.dart
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class S<T> {
-  bool matches(o) {
-    bool isChecked = checkUsingIs(o);
-    if (checkedMode) {
-      Expect.equals(isChecked, checkUsingCheckedMode(o));
-    }
-    return isChecked;
-  }
-
-  bool checkUsingIs(o) {
-    return o is T;
-  }
-
-  bool checkUsingCheckedMode(o) {
-    try {
-      T x = o;
-    } on Error {
-      return false;
-    }
-    return true;
-  }
-
-  static final bool checkedMode = computeCheckedMode();
-  static bool computeCheckedMode() {
-    try {
-      int x = "foo";
-    } on Error {
-      return true;
-    }
-    return false;
-  }
-}
-
-class M {}
-
-class C0<T> = S with M;
-class C1<T> = S<T> with M;
-class C2<T> = S<int> with M;
-class C3 = S<String> with M;
-
-main() {
-  var c0 = new C0();
-  Expect.isTrue(c0 is S);
-  Expect.isTrue(c0 is S<int>);
-  Expect.isTrue(c0 is S<String>);
-  Expect.isTrue(c0.matches(c0));
-  Expect.isTrue(c0.matches(42));
-  Expect.isTrue(c0.matches("hello"));
-
-  var c0_int = new C0<int>();
-  Expect.isTrue(c0_int is S);
-  Expect.isTrue(c0_int is S<int>);
-  Expect.isTrue(c0_int is S<String>);
-  Expect.isTrue(c0_int.matches(c0));
-  Expect.isTrue(c0_int.matches(42));
-  Expect.isTrue(c0_int.matches("hello"));
-
-  var c0_String = new C0<String>();
-  Expect.isTrue(c0_String is S);
-  Expect.isTrue(c0_String is S<int>);
-  Expect.isTrue(c0_String is S<String>);
-  Expect.isTrue(c0_String.matches(c0));
-  Expect.isTrue(c0_String.matches(42));
-  Expect.isTrue(c0_String.matches("hello"));
-
-  var c1 = new C1();
-  Expect.isTrue(c1 is S);
-  Expect.isTrue(c1 is S<int>);
-  Expect.isTrue(c1 is S<String>);
-  Expect.isTrue(c1.matches(c1));
-  Expect.isTrue(c1.matches(42));
-  Expect.isTrue(c1.matches("hello"));
-
-  var c1_int = new C1<int>();
-  Expect.isTrue(c1_int is S);
-  Expect.isTrue(c1_int is S<int>);
-  Expect.isFalse(c1_int is S<String>);
-  Expect.isFalse(c1_int.matches(c1));
-  Expect.isTrue(c1_int.matches(42));
-  Expect.isFalse(c1_int.matches("hello"));
-
-  var c1_String = new C1<String>();
-  Expect.isTrue(c1_String is S);
-  Expect.isFalse(c1_String is S<int>);
-  Expect.isTrue(c1_String is S<String>);
-  Expect.isFalse(c1_String.matches(c1));
-  Expect.isFalse(c1_String.matches(42));
-  Expect.isTrue(c1_String.matches("hello"));
-
-  var c2 = new C2();
-  Expect.isTrue(c2 is S);
-  Expect.isTrue(c2 is S<int>);
-  Expect.isFalse(c2 is S<String>);
-  Expect.isFalse(c2.matches(c2));
-  Expect.isTrue(c2.matches(42));
-  Expect.isFalse(c2.matches("hello"));
-
-  var c2_int = new C2<int>();
-  Expect.isTrue(c2_int is S);
-  Expect.isTrue(c2_int is S<int>);
-  Expect.isFalse(c2_int is S<String>);
-  Expect.isFalse(c2_int.matches(c2));
-  Expect.isTrue(c2_int.matches(42));
-  Expect.isFalse(c2_int.matches("hello"));
-
-  var c2_String = new C2<String>();
-  Expect.isTrue(c2_String is S);
-  Expect.isTrue(c2_String is S<int>);
-  Expect.isFalse(c2_String is S<String>);
-  Expect.isFalse(c2_String.matches(c2));
-  Expect.isTrue(c2_String.matches(42));
-  Expect.isFalse(c2_String.matches("hello"));
-
-  var c3 = new C3();
-  Expect.isTrue(c3 is S);
-  Expect.isFalse(c3 is S<int>);
-  Expect.isTrue(c3 is S<String>);
-  Expect.isFalse(c3.matches(c2));
-  Expect.isFalse(c3.matches(42));
-  Expect.isTrue(c3.matches("hello"));
-}
diff --git a/tests/language/mixin_type_variable_test.dart b/tests/language/mixin_type_variable_test.dart
deleted file mode 100644
index f2a62c0..0000000
--- a/tests/language/mixin_type_variable_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for generic mixin fields in checked mode.
-
-class A<T> {
-  T field;
-}
-
-class B<T> = Object with A<T>;
-
-class C<T> extends B<T> {} //# 03: ok
-class D extends B<int> {} //# 04: ok
-
-class E = Object with A<int>;
-
-class F extends E {} //# 06: ok
-
-class G<T> extends Object with A<T> {} //# 07: ok
-class H extends Object with A<int> {} //# 08: ok
-
-void main() {
-  new A<num>(); //# 01: ok
-  new B<num>(); //# 02: ok
-  new C<num>(); //# 03: continued
-  new D(); //# 04: continued
-  new E(); //# 05: ok
-  new F(); //# 06: continued
-  new G<num>(); //# 07: continued
-  new H(); //# 08: continued
-}
diff --git a/tests/language/mixin_typedef_constructor_test.dart b/tests/language/mixin_typedef_constructor_test.dart
deleted file mode 100644
index a73fea1..0000000
--- a/tests/language/mixin_typedef_constructor_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  var field;
-  A(this.field);
-}
-
-class Mixin {
-  var mixinField = 54;
-}
-
-class MyClass = A with Mixin;
-
-main() {
-  var a = new MyClass(42);
-  Expect.equals(42, a.field);
-  Expect.equals(54, a.mixinField);
-}
diff --git a/tests/language/mixin_with_two_implicit_constructors_test.dart b/tests/language/mixin_with_two_implicit_constructors_test.dart
deleted file mode 100644
index d532dae..0000000
--- a/tests/language/mixin_with_two_implicit_constructors_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  var field;
-  A.bar() : field = 1;
-  A() : field = 2;
-}
-
-class Mixin {}
-
-class B extends A with Mixin {}
-
-main() {
-  Expect.equals(2, new B().field);
-  Expect.throws(() => new B.bar(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/modulo_test.dart b/tests/language/modulo_test.dart
deleted file mode 100644
index ae55626..0000000
--- a/tests/language/modulo_test.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test optimization of modulo operator on Smi.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  // Prime IC cache.
-  noDom(1);
-  noDom(-1);
-  for (int i = -30; i < 30; i++) {
-    Expect.equals(i % 256, foo(i));
-    Expect.equals(i % -256, boo(i));
-    Expect.throws(() => hoo(i), (e) => e is IntegerDivisionByZeroException);
-
-    Expect.equals(i ~/ 254 + i % 254, fooTwo(i));
-    Expect.equals(i ~/ -254 + i % -254, booTwo(i));
-    Expect.throws(() => hooTwo(i), (e) => e is IntegerDivisionByZeroException);
-    if (i > 0) {
-      Expect.equals(i % 10, noDom(i));
-    } else {
-      Expect.equals(i ~/ 10, noDom(i));
-    }
-    Expect.equals((i ~/ 10) + (i % 10) + (i % 10), threeOp(i));
-    Expect.equals((i ~/ 10) + (i ~/ 12) + (i % 10) + (i % 12), fourOp(i));
-
-    // Zero test is done outside the loop.
-    if (i < 0) {
-      Expect.equals(i % -i, foo2(i));
-      Expect.equals(i ~/ -i + i % -i, fooTwo2(i));
-    } else if (i > 0) {
-      Expect.equals(i % i, foo2(i));
-      Expect.equals(i ~/ i + i % i, fooTwo2(i));
-    }
-  }
-  Expect.throws(() => foo2(0), (e) => e is IntegerDivisionByZeroException);
-  Expect.throws(() => fooTwo2(0), (e) => e is IntegerDivisionByZeroException);
-}
-
-foo(i) => i % 256; // This will get optimized to AND instruction.
-boo(i) => i % -256;
-hoo(i) => i % 0;
-
-fooTwo(i) => i ~/ 254 + i % 254;
-booTwo(i) => i ~/ -254 + i % -254;
-hooTwo(i) => i ~/ 0 + i % 0;
-
-noDom(a) {
-  var x;
-  if (a > 0) {
-    x = a % 10;
-  } else {
-    x = a ~/ 10;
-  }
-  return x;
-}
-
-threeOp(a) {
-  var x = a ~/ 10;
-  var y = a % 10;
-  var z = a % 10;
-  return x + y + z;
-}
-
-fourOp(a) {
-  var x0 = a ~/ 10;
-  var x1 = a ~/ 12;
-  var y0 = a % 10;
-  var y1 = a % 12;
-  return x0 + x1 + y0 + y1;
-}
-
-foo2(i) {
-  // Make sure x has a range computed.
-  var x = 0;
-  if (i < 0) {
-    x = -i;
-  } else {
-    x = i;
-  }
-  return i % x;
-}
-
-fooTwo2(i) {
-  // Make sure x has a range computed.
-  var x = 0;
-  if (i < 0) {
-    x = -i;
-  } else {
-    x = i;
-  }
-  return i ~/ x + i % x;
-}
diff --git a/tests/language/mul_recipr_test.dart b/tests/language/mul_recipr_test.dart
deleted file mode 100644
index a79be78..0000000
--- a/tests/language/mul_recipr_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2015, 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.
-// Dart test program checking that optimizations are not too aggressive and
-// incorrect:
-// - (a * (1.0 / b))
-//
-// VMOptions=--optimization-counter-threshold=8 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-var xx = 23.0;
-
-main() {
-  xx = 1e-6;
-  scaleIt(1e-310);
-  Expect.isTrue(xx.isInfinite);
-  for (int i = 0; i < 10; i++) {
-    xx = 24.0;
-    scaleIt(6.0);
-    Expect.equals(4.0, xx);
-  }
-  xx = 1e-6;
-  scaleIt(1e-310);
-  Expect.isTrue(xx.isInfinite);
-}
-
-scaleIt(double b) {
-  scale(1.0 / b);
-}
-
-scale(a) {
-  xx *= a;
-}
diff --git a/tests/language/multi_assign_test.dart b/tests/language/multi_assign_test.dart
deleted file mode 100644
index d88a63a..0000000
--- a/tests/language/multi_assign_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing multiple assignment.
-
-import "package:expect/expect.dart";
-
-class MultiAssignTest {
-  static testMain() {
-    var i, j, k;
-    i = j = k = 11;
-    Expect.equals(11, i);
-    Expect.equals(11, j);
-    Expect.equals(11, k);
-
-    var m;
-    var n = m = k = 55;
-    Expect.equals(55, m);
-    Expect.equals(55, n);
-    Expect.equals(55, k);
-  }
-}
-
-main() {
-  MultiAssignTest.testMain();
-}
diff --git a/tests/language/multi_pass2_test.dart b/tests/language/multi_pass2_test.dart
deleted file mode 100644
index e75d2d6..0000000
--- a/tests/language/multi_pass2_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for loading several dart files and resolving superclasses lazily.
-// Same as MultiPassTest, except that the file order is reversed.
-
-library MultiPassTest.dart;
-
-import "package:expect/expect.dart";
-part "multi_pass_a.dart";
-part "multi_pass_b.dart";
-
-class Base {
-  Base(this.value) {}
-  var value;
-}
-
-class MultiPass2Test {
-  static testMain() {
-    var a = new B(5);
-    Expect.equals(5, a.value);
-  }
-}
-
-main() {
-  MultiPass2Test.testMain();
-}
diff --git a/tests/language/multi_pass_a.dart b/tests/language/multi_pass_a.dart
deleted file mode 100644
index 5b2863f..0000000
--- a/tests/language/multi_pass_a.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for loading several dart files and resolving superclasses lazily.
-
-part of MultiPassTest.dart;
-
-class A extends Base {
-  A(v) : super(v) {}
-}
diff --git a/tests/language/multi_pass_b.dart b/tests/language/multi_pass_b.dart
deleted file mode 100644
index ed99b83..0000000
--- a/tests/language/multi_pass_b.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for loading several dart files and resolving superclasses lazily.
-
-part of MultiPassTest.dart;
-
-class B extends A {
-  B(v) : super(v) {}
-}
diff --git a/tests/language/multi_pass_test.dart b/tests/language/multi_pass_test.dart
deleted file mode 100644
index a7f9059..0000000
--- a/tests/language/multi_pass_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for loading several dart files and resolving superclasses lazily.
-
-library MultiPassTest.dart;
-
-import "package:expect/expect.dart";
-part "multi_pass_a.dart";
-part "multi_pass_b.dart";
-
-class Base {
-  Base(this.value) {}
-  var value;
-}
-
-class MultiPassTest {
-  static testMain() {
-    var a = new B(5);
-    Expect.equals(5, a.value);
-  }
-}
-
-main() {
-  MultiPassTest.testMain();
-}
diff --git a/tests/language/multiline_newline_cr.dart b/tests/language/multiline_newline_cr.dart
deleted file mode 100644
index f793f54..0000000
--- a/tests/language/multiline_newline_cr.dart
+++ /dev/null
Binary files differ
diff --git a/tests/language/multiline_newline_crlf.dart b/tests/language/multiline_newline_crlf.dart
deleted file mode 100644
index bde9ea2..0000000
--- a/tests/language/multiline_newline_crlf.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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.

-

-// Note: This test relies on LF line endings in the source file.

-// It requires an entry in the .gitattributes file.

-

-library multiline_newline_crlf;

-

-const constantMultilineString = """

-a

-b

-""";

-

-var nonConstantMultilineString = """

-a

-b

-""";

-

-const constantRawMultilineString = r"""

-\a

-\b

-""";

-

-var nonConstantRawMultilineString = r"""

-\a

-\b

-""";

diff --git a/tests/language/multiline_newline_lf.dart b/tests/language/multiline_newline_lf.dart
deleted file mode 100644
index b13fbab..0000000
--- a/tests/language/multiline_newline_lf.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Note: This test relies on LF line endings in the source file.
-// It requires an entry in the .gitattributes file.
-
-library multiline_newline_lf;
-
-const constantMultilineString = """
-a
-b
-""";
-
-var nonConstantMultilineString = """
-a
-b
-""";
-
-const constantRawMultilineString = r"""
-\a
-\b
-""";
-
-var nonConstantRawMultilineString = r"""
-\a
-\b
-""";
diff --git a/tests/language/multiline_newline_test.dart b/tests/language/multiline_newline_test.dart
deleted file mode 100644
index dc0560a..0000000
--- a/tests/language/multiline_newline_test.dart
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (c) 2015, 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';
-import 'multiline_newline_cr.dart' as cr;
-import 'multiline_newline_crlf.dart' as crlf;
-import 'multiline_newline_lf.dart' as lf;
-
-main() {
-  Expect.equals(4, cr.constantMultilineString.length);
-  Expect.equals(4, crlf.constantMultilineString.length);
-  Expect.equals(4, lf.constantMultilineString.length);
-
-  Expect.equals(6, cr.constantRawMultilineString.length);
-  Expect.equals(6, crlf.constantRawMultilineString.length);
-  Expect.equals(6, lf.constantRawMultilineString.length);
-
-  Expect.equals(cr.constantMultilineString, crlf.constantMultilineString);
-  Expect.equals(crlf.constantMultilineString, lf.constantMultilineString);
-  Expect.equals(lf.constantMultilineString, cr.constantMultilineString);
-
-  Expect.equals(cr.constantRawMultilineString, crlf.constantRawMultilineString);
-  Expect.equals(crlf.constantRawMultilineString, lf.constantRawMultilineString);
-  Expect.equals(lf.constantRawMultilineString, cr.constantRawMultilineString);
-
-  Expect.equals(4, cr.nonConstantMultilineString.length);
-  Expect.equals(4, crlf.nonConstantMultilineString.length);
-  Expect.equals(4, lf.nonConstantMultilineString.length);
-
-  Expect.equals(6, cr.nonConstantRawMultilineString.length);
-  Expect.equals(6, crlf.nonConstantRawMultilineString.length);
-  Expect.equals(6, lf.nonConstantRawMultilineString.length);
-
-  Expect.equals(cr.nonConstantMultilineString, crlf.nonConstantMultilineString);
-  Expect.equals(crlf.nonConstantMultilineString, lf.nonConstantMultilineString);
-  Expect.equals(lf.nonConstantMultilineString, cr.nonConstantMultilineString);
-
-  Expect.equals(
-      cr.nonConstantRawMultilineString, crlf.nonConstantRawMultilineString);
-  Expect.equals(
-      crlf.nonConstantRawMultilineString, lf.nonConstantRawMultilineString);
-  Expect.equals(
-      lf.nonConstantRawMultilineString, cr.nonConstantRawMultilineString);
-
-  const c1 =
-      cr.constantMultilineString == crlf.constantMultilineString ? true : null;
-  const c2 =
-      crlf.constantMultilineString == lf.constantMultilineString ? true : null;
-  const c3 =
-      lf.constantMultilineString == cr.constantMultilineString ? true : null;
-  Expect.isTrue(c1);
-  Expect.isTrue(c2);
-  Expect.isTrue(c3);
-
-  const c1r = cr.constantRawMultilineString == crlf.constantRawMultilineString
-      ? true
-      : null;
-  const c2r = crlf.constantRawMultilineString == lf.constantRawMultilineString
-      ? true
-      : null;
-  const c3r = lf.constantRawMultilineString == cr.constantRawMultilineString
-      ? true
-      : null;
-  Expect.isTrue(c1r);
-  Expect.isTrue(c2r);
-  Expect.isTrue(c3r);
-
-  const c4 = c1 ? 1 : 2; //# 01: ok
-  Expect.equals(1, c4); //# 01: continued
-
-  const c5 = c2 ? 2 : 3; //# 02: ok
-  Expect.equals(2, c5); //# 02: continued
-
-  const c6 = c3 ? 3 : 4; //# 03: ok
-  Expect.equals(3, c6); //# 03: continued
-
-  const c4r = c1r ? 1 : 2; //# 01r: ok
-  Expect.equals(1, c4r); //# 01r: continued
-
-  const c5r = c2r ? 2 : 3; //# 02r: ok
-  Expect.equals(2, c5r); //# 02r: continued
-
-  const c6r = c3r ? 3 : 4; //# 03r: ok
-  Expect.equals(3, c6r); //# 03r: continued
-
-  const c7 =
-      cr.constantMultilineString != crlf.constantMultilineString ? true : null;
-  const c8 =
-      crlf.constantMultilineString != lf.constantMultilineString ? true : null;
-  const c9 =
-      lf.constantMultilineString != cr.constantMultilineString ? true : null;
-  Expect.isNull(c7);
-  Expect.isNull(c8);
-  Expect.isNull(c9);
-
-  const c7r = cr.constantRawMultilineString != crlf.constantRawMultilineString
-      ? true
-      : null;
-  const c8r = crlf.constantRawMultilineString != lf.constantRawMultilineString
-      ? true
-      : null;
-  const c9r = lf.constantRawMultilineString != cr.constantRawMultilineString
-      ? true
-      : null;
-  Expect.isNull(c7r);
-  Expect.isNull(c8r);
-  Expect.isNull(c9r);
-
-  // What's the deal with the compile-time errors below? This is to validate
-  // that constants are evaluated correctly at compile-time (or analysis
-  // time). For example, only if [c7] is evaluated correctly does it become
-  // null which leads to a compile-time error (as it isn't a boolean). For
-  // tools like dart2js, this ensures that the compile-time evaluation of
-  // constants is similar to the runtime evaluation tested above. For tools
-  // like the analyzer, this ensures that evaluation is tested (there's no
-  // runtime evaluation).
-  const c10 = c7 ? 1 : 2; //# 04: compile-time error
-  const c11 = c8 ? 2 : 3; //# 05: compile-time error
-  const c12 = c9 ? 3 : 4; //# 06: compile-time error
-
-  const c10r = c7r ? 1 : 2; //# 04r: compile-time error
-  const c11r = c8r ? 2 : 3; //# 05r: compile-time error
-  const c12r = c9r ? 3 : 4; //# 06r: compile-time error
-}
diff --git a/tests/language/multiline_strings_test.dart b/tests/language/multiline_strings_test.dart
deleted file mode 100644
index 19225ef..0000000
--- a/tests/language/multiline_strings_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Note: This test relies on LF line endings in the source file.
-// It requires an entry in the .gitattributes file.
-
-import "package:expect/expect.dart";
-
-main() {
-  Expect.equals(
-      'foo',
-      '''  
-foo''');
-
-  Expect.equals(
-      '\\\nfoo',
-      '''\\
-foo''');
-
-  Expect.equals(
-      '\t\nfoo',
-      '''\t
-foo''');
-
-  Expect.equals(
-      'foo',
-      '''\
-foo''');
-
-  Expect.equals(
-      'foo',
-      '''\ \
-foo''');
-
-  Expect.equals(
-      ' \nfoo',
-      '''\x20
-foo''');
-
-  String x = ' ';
-  Expect.equals(
-      ' \nfoo',
-      '''$x
-foo''');
-
-  Expect.equals(
-      'foo',
-      r'''  
-foo''');
-
-  Expect.equals(
-      '\\\\\nfoo',
-      r'''\\
-foo''');
-
-  Expect.equals(
-      '\\t\nfoo',
-      r'''\t
-foo''');
-
-  Expect.equals(
-      'foo',
-      r'''\
-foo''');
-
-  Expect.equals(
-      'foo',
-      r'''\ \
-foo''');
-}
diff --git a/tests/language/multiple_field_assignment_constructor_test.dart b/tests/language/multiple_field_assignment_constructor_test.dart
deleted file mode 100644
index 88270ac..0000000
--- a/tests/language/multiple_field_assignment_constructor_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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";
-import "compiler_annotations.dart";
-
-var a = [null];
-
-class A {
-  var foo;
-  var bar;
-
-  @DontInline()
-  A() {
-    // Currently defeat inlining by using a closure.
-    bar = () => 42;
-    foo = 42;
-    foo = a[0];
-  }
-}
-
-class B {
-  var foo;
-  var bar;
-
-  @DontInline()
-  B() {
-    // Currently defeat inlining by using a closure.
-    bar = () => 42;
-    foo = 42;
-    foo = a[0];
-    if (false) foo = 42;
-  }
-}
-
-main() {
-  // Surround the call to [bar] by allocations of [A] and [B] to
-  // ensure their constructors get analyzed first.
-  new A();
-  new B();
-  bar();
-  new A();
-  new B();
-}
-
-@DontInline()
-bar() {
-  // Currently defeat inlining by using a closure.
-  Expect.throws(() => new A().foo + 42, (e) => e is NoSuchMethodError);
-  Expect.throws(() => new B().foo + 42, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/named_argument_in_const_creation_test.dart b/tests/language/named_argument_in_const_creation_test.dart
deleted file mode 100644
index 93fe6e5..0000000
--- a/tests/language/named_argument_in_const_creation_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-class A {
-  final x;
-  final y;
-  const A(a, {b})
-      : x = a,
-        y = b;
-  static const test = const A(1, b: 2);
-}
-
-main() {
-  A a = A.test;
-  Expect.equals(1, a.x);
-  Expect.equals(2, a.y);
-}
diff --git a/tests/language/named_argument_test.dart b/tests/language/named_argument_test.dart
deleted file mode 100644
index d0f0d0e..0000000
--- a/tests/language/named_argument_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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";
-
-main() {
-  var c1 = ({b, a}) => 'a: $a b: $b';
-  var c2 = ({a, b}) => 'a: $a b: $b';
-
-  Expect.equals('a: 2 b: 1', c1(b: 1, a: 2));
-  Expect.equals('a: 1 b: 2', c1(a: 1, b: 2));
-
-  Expect.equals('a: 2 b: 1', c2(b: 1, a: 2));
-  Expect.equals('a: 1 b: 2', c2(a: 1, b: 2));
-}
diff --git a/tests/language/named_constructor_lib.dart b/tests/language/named_constructor_lib.dart
deleted file mode 100644
index 210d54c..0000000
--- a/tests/language/named_constructor_lib.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2013, 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 named_constructor_lib;
-
-class Class<T> {
-  final int value;
-  Class() : value = 2;
-  Class.named() : value = 3;
-}
diff --git a/tests/language/named_constructor_test.dart b/tests/language/named_constructor_test.dart
deleted file mode 100644
index 6e2d12d..0000000
--- a/tests/language/named_constructor_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2013, 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 named_constructor_test;
-
-import 'package:expect/expect.dart';
-import 'named_constructor_lib.dart' as prefix;
-
-class Class<T> {
-  final int value;
-  Class() : value = 0;
-  Class.named() : value = 1;
-}
-
-void main() {
-  Expect.equals(0, new Class().value);
-  Expect.equals(0, new Class<int>().value);
-
-  Expect.equals(1, new Class.named().value);
-  Expect.equals(1, new Class<int>.named().value);
-  // 'Class.named' is not a type:
-  Expect.equals(1, new Class.named<int>().value); //# 01: runtime error
-  // 'Class<int>.named<int>' doesn't fit the grammar syntax T.id:
-  Expect.equals(1, new Class<int>.named<int>().value); //# 02: syntax error
-
-  Expect.equals(2, new prefix.Class().value);
-  // 'prefix' is not a type:
-  Expect.equals(2, new prefix<int>.Class().value); //# 03: runtime error
-  Expect.equals(2, new prefix.Class<int>().value);
-  // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
-  Expect.equals(2, new prefix<int>.Class<int>().value); //# 04: syntax error
-
-  Expect.equals(3, new prefix.Class.named().value);
-  // 'prefix<int>.Class.named' doesn't fit the grammar syntax T.id:
-  Expect.equals(3, new prefix<int>.Class.named().value); //# 05: syntax error
-  // 'prefix.Class<int>.named' doesn't fit the grammar syntax T.id:
-  Expect.equals(3, new prefix.Class<int>.named().value);
-  // 'prefix.Class.named<int>' doesn't fit the grammar syntax T.id:
-  Expect.equals(3, new prefix.Class.named<int>().value); //# 06: syntax error
-  // 'prefix<int>.Class<int>' doesn't fit the grammar syntax T.id:
-  Expect.equals(3, new prefix<int>.Class<int>.named().value); //# 07: syntax error
-  // 'prefix<int>.Class.named<int>' doesn't fit the grammar syntax T.id:
-  Expect.equals(3, new prefix<int>.Class.named<int>().value); //# 08: syntax error
-  // 'prefix.Class<int>.named<int>' doesn't fit the grammar syntax T.id:
-  Expect.equals(3, new prefix.Class<int>.named<int>().value); //# 09: syntax error
-  // 'prefix<int>.Class<int>.named<int>' doesn't fit the grammar syntax T.id:
-  Expect.equals(3, new prefix<int>.Class<int>.named<int>().value); //# 10: syntax error
-}
diff --git a/tests/language/named_parameter_clash_test.dart b/tests/language/named_parameter_clash_test.dart
deleted file mode 100644
index 0393a92..0000000
--- a/tests/language/named_parameter_clash_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class Foo {
-  m({a, b, c}) {
-    try {} catch (e) {} // no inline
-    return 'Foo $a $b $c';
-  }
-}
-
-class Bar {
-  m(z, {a$b, c}) {
-    try {} catch (e) {} // no inline
-    var ab = a$b;
-    return 'Bar $z $ab $c';
-  }
-}
-
-inscrutable(xs, i) => i == 0 ? xs[0] : inscrutable(xs.sublist(1), i - 1);
-
-main() {
-  var list = [new Foo(), new Bar()];
-  var foo = inscrutable(list, 0);
-  var bar = inscrutable(list, 1);
-
-  Expect.equals(r'Foo a b c', foo.m(a: 'a', b: 'b', c: 'c'));
-  Expect.equals(r'Bar z a$b c', bar.m('z', a$b: r'a$b', c: 'c'));
-
-  Expect.throws(
-      () => foo.m('z', a$b: r'a$b', c: 'c'), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => bar.m(a: 'a', b: 'b', c: 'c'), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/named_parameter_regression_test.dart b/tests/language/named_parameter_regression_test.dart
deleted file mode 100644
index a702464..0000000
--- a/tests/language/named_parameter_regression_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-// A regression test for dart2js bug 6015.
-
-class Fisk {
-  foo({b, a: true}) {
-    if (b == null) return;
-    throw 'broken';
-  }
-
-  bar({a, b: true}) {
-    if (a == null) return;
-    throw 'broken';
-  }
-}
-
-main() {
-  new Fisk().foo(a: true);
-  new Fisk().bar(b: true);
-}
diff --git a/tests/language/named_parameters2_test.dart b/tests/language/named_parameters2_test.dart
deleted file mode 100644
index 0de47e8..0000000
--- a/tests/language/named_parameters2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-// Dart test program for testing named parameters.
-// You may not provide the same parameter as both a positional and a named argument.
-
-import "package:expect/expect.dart";
-
-int test(int a, [int b]) {
-  return a;
-}
-
-main() {
-  bool foundError = false;
-  try {
-    // Parameter b passed twice, as positional and named.
-    test(10, 25, b: 26); // //# static type warning
-  } on NoSuchMethodError catch (e) {
-    foundError = true;
-  }
-  Expect.equals(true, foundError);
-}
diff --git a/tests/language/named_parameters3_test.dart b/tests/language/named_parameters3_test.dart
deleted file mode 100644
index b4ffccd..0000000
--- a/tests/language/named_parameters3_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-// Dart test program for testing named parameters.
-// Specifying named argument for not existing named parameter is run time error.
-
-import "package:expect/expect.dart";
-
-int test(int a, [int b]) {
-  return a;
-}
-
-main() {
-  bool foundError = false;
-  try {
-    test(10, x: 99); // 1 positional arg, as expected. Param x does not exist.
-  } on NoSuchMethodError catch (e) {
-    foundError = true;
-  }
-  Expect.equals(true, foundError);
-}
diff --git a/tests/language/named_parameters4_test.dart b/tests/language/named_parameters4_test.dart
deleted file mode 100644
index ff5bca2..0000000
--- a/tests/language/named_parameters4_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-// Dart test program for testing named parameters.
-// Specifying named argument for not existing named parameter is run time error.
-
-import "package:expect/expect.dart";
-
-// This test is very similar to NamedParameters3Test, but exercises a
-// different corner case in the frog compiler. frog wasn't detecting unused
-// named arguments when no other arguments were expected. So, this test
-// purposely passes the exact number of positional parameters.
-
-int test(int a) {
-  return a;
-}
-
-main() {
-  bool foundError = false;
-  try {
-    test(10, x: 99); // 1 positional arg, as expected. Param x does not exist.
-  } on NoSuchMethodError catch (e) {
-    foundError = true;
-  }
-  Expect.equals(true, foundError);
-}
diff --git a/tests/language/named_parameters_aggregated_test.dart b/tests/language/named_parameters_aggregated_test.dart
deleted file mode 100644
index 7ea1c42..0000000
--- a/tests/language/named_parameters_aggregated_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing named parameters.
-
-import "package:expect/expect.dart";
-
-class TypeTester<T> {}
-
-// Expect compile-time error as no default values are allowed
-// in closure type definitions.
-typedef void Callback([String msg
- = "" //# 01: compile-time error
-    ]);
-
-class NamedParametersAggregatedTests {
-  static int F31(int a, {int b: 20, int c: 30}) {
-    return 100 * (100 * a + b) + c;
-  }
-
-  static int f_missing_comma(a
-    [b = 42] //# 02: syntax error
-          ) =>
-      a;
-
-  var _handler = null;
-
-  // Expect compile-time error as no default values
-  // are allowed in closure type.
-  void InstallCallback(
-      void cb({String msg
-    : null //# 03: compile-time error
-          })) {
-    _handler = cb;
-  }
-}
-
-main() {
-  // Expect compile-time error due to missing comma in function definition.
-  NamedParametersAggregatedTests.f_missing_comma(10
-    , 25 //# 02: continued
-      );
-
-  // Expect compile-time error due to duplicate named argument.
-  NamedParametersAggregatedTests.F31(10, b: 25
-    , b:35 //# 04: compile-time error
-    , b:35, b:45 //# 06: compile-time error
-      );
-
-  // Expect compile-time error due to missing positional argument.
-  Expect.throws(() => NamedParametersAggregatedTests.F31(b:25, c:35), (e) => e is NoSuchMethodError); //# 05: static type warning
-
-  new TypeTester<Callback>();
-
-  (new NamedParametersAggregatedTests()).InstallCallback(null);
-}
diff --git a/tests/language/named_parameters_default_eq_test.dart b/tests/language/named_parameters_default_eq_test.dart
deleted file mode 100644
index cb8bfe9..0000000
--- a/tests/language/named_parameters_default_eq_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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.
-
-// Check that both `=` and `:` are allowed for named parameters.
-
-import "package:expect/expect.dart";
-
-// Default values are not allowed on typedefs.
-typedef int F1({x = 3, y}); //# 01: compile-time error
-
-typedef int functype({x, y, z});
-
-int topF({x = 3, y: 5, z}) => x * y * (z ?? 2);
-
-class A {
-  int x;
-  int y;
-  int z;
-  A({this.x = 3, this.y: 5, z}) : z = z ?? 2;
-  A.redirect({x = 3, y: 5, z}) : this(x: x, y: y, z: z);
-  factory A.factory({x = 3, y: 5, z}) => new A(x: x, y: y, z: z ?? 2);
-  factory A.redirectFactory({x, y, z}) = A;
-
-  // Default values are not allowed on redirecting factory constructors.
-  factory A.badRedirectFactory({x = 3, y}) = A; //# 02: compile-time error
-
-  int get value => x * y * z;
-
-  static int staticF({x = 3, y: 5, z}) => x * y * (z ?? 2);
-  int instanceF({x = 3, y: 5, z}) => x * y * (z ?? 2);
-}
-
-main() {
-  // Reference the type, or dart2js won't see that the declaration is invalid
-  F1 _ = null; // //# 01: continued
-
-  var a = new A();
-
-  int local({x = 3, y: 5, z}) => x * y * (z ?? 2);
-  var expr = ({x = 3, y: 5, z}) => x * y * (z ?? 2);
-  var tearOff = a.instanceF;
-
-  test(function) {
-    Expect.equals(30, function());
-    Expect.equals(70, function(x: 7));
-    Expect.equals(42, function(y: 7));
-    Expect.equals(28, function(x: 7, y: 2));
-    Expect.equals(15, function(z: 1));
-    Expect.equals(21, function(y: 7, z: 1));
-    Expect.equals(35, function(x: 7, z: 1));
-    Expect.equals(14, function(x: 7, y: 2, z: 1));
-    Expect.isTrue(function is functype);
-  }
-
-  test(topF);
-  test(A.staticF);
-  test(a.instanceF);
-  test(local);
-  test(expr);
-  test(tearOff);
-
-  // Can't tear off constructors.
-  Expect.equals(30, new A().value);
-  Expect.equals(70, new A(x: 7).value);
-  Expect.equals(42, new A(y: 7).value);
-  Expect.equals(28, new A(x: 7, y: 2).value);
-  Expect.equals(15, new A(z: 1).value);
-  Expect.equals(21, new A(y: 7, z: 1).value);
-  Expect.equals(35, new A(x: 7, z: 1).value);
-  Expect.equals(14, new A(x: 7, y: 2, z: 1).value);
-
-  Expect.equals(30, new A.redirect().value);
-  Expect.equals(70, new A.redirect(x: 7).value);
-  Expect.equals(42, new A.redirect(y: 7).value);
-  Expect.equals(28, new A.redirect(x: 7, y: 2).value);
-  Expect.equals(15, new A.redirect(z: 1).value);
-  Expect.equals(21, new A.redirect(y: 7, z: 1).value);
-  Expect.equals(35, new A.redirect(x: 7, z: 1).value);
-  Expect.equals(14, new A.redirect(x: 7, y: 2, z: 1).value);
-
-  Expect.equals(30, new A.factory().value);
-  Expect.equals(70, new A.factory(x: 7).value);
-  Expect.equals(42, new A.factory(y: 7).value);
-  Expect.equals(28, new A.factory(x: 7, y: 2).value);
-  Expect.equals(15, new A.factory(z: 1).value);
-  Expect.equals(21, new A.factory(y: 7, z: 1).value);
-  Expect.equals(35, new A.factory(x: 7, z: 1).value);
-  Expect.equals(14, new A.factory(x: 7, y: 2, z: 1).value);
-
-  Expect.equals(30, new A.redirectFactory().value);
-  Expect.equals(70, new A.redirectFactory(x: 7).value);
-  Expect.equals(42, new A.redirectFactory(y: 7).value);
-  Expect.equals(28, new A.redirectFactory(x: 7, y: 2).value);
-  Expect.equals(15, new A.redirectFactory(z: 1).value);
-  Expect.equals(21, new A.redirectFactory(y: 7, z: 1).value);
-  Expect.equals(35, new A.redirectFactory(x: 7, z: 1).value);
-  Expect.equals(14, new A.redirectFactory(x: 7, y: 2, z: 1).value);
-}
diff --git a/tests/language/named_parameters_named_count_test.dart b/tests/language/named_parameters_named_count_test.dart
deleted file mode 100644
index 80f9e38..0000000
--- a/tests/language/named_parameters_named_count_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test for named parameter called 'count'.
-
-class TestClass {
-  TestClass();
-
-  method([count]) => count;
-
-  static staticMethod([count]) => count;
-}
-
-globalMethod([count]) => count;
-
-main() {
-  var obj = new TestClass();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(0));
-  Expect.equals("", obj.method(""));
-
-  Expect.equals(null, TestClass.staticMethod());
-  Expect.equals(true, TestClass.staticMethod(true));
-  Expect.equals(false, TestClass.staticMethod(false));
-
-  Expect.equals(null, globalMethod());
-  Expect.equals(true, globalMethod(true));
-  Expect.equals(false, globalMethod(false));
-}
diff --git a/tests/language/named_parameters_passing_false_test.dart b/tests/language/named_parameters_passing_false_test.dart
deleted file mode 100644
index 048711b..0000000
--- a/tests/language/named_parameters_passing_false_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing named parameters with 'false' passed as an
-// argument.
-
-class TestClass {
-  TestClass();
-
-  bool method([bool value]) => value;
-  bool method2({bool value}) => value;
-
-  static bool staticMethod([bool value]) => value;
-  static bool staticMethod2({bool value}) => value;
-}
-
-bool globalMethod([bool value]) => value;
-bool globalMethod2({bool value}) => value;
-
-main() {
-  var obj = new TestClass();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(null, obj.method2());
-  Expect.equals(true, obj.method(true));
-  Expect.equals(true, obj.method2(value: true));
-  Expect.equals(false, obj.method(false));
-  Expect.equals(false, obj.method2(value: false));
-
-  Expect.equals(null, TestClass.staticMethod());
-  Expect.equals(null, TestClass.staticMethod2());
-  Expect.equals(true, TestClass.staticMethod(true));
-  Expect.equals(true, TestClass.staticMethod2(value: true));
-  Expect.equals(false, TestClass.staticMethod(false));
-  Expect.equals(false, TestClass.staticMethod2(value: false));
-
-  Expect.equals(null, globalMethod());
-  Expect.equals(null, globalMethod2());
-  Expect.equals(true, globalMethod(true));
-  Expect.equals(true, globalMethod2(value: true));
-  Expect.equals(false, globalMethod(false));
-  Expect.equals(false, globalMethod2(value: false));
-}
diff --git a/tests/language/named_parameters_passing_falsy_test.dart b/tests/language/named_parameters_passing_falsy_test.dart
deleted file mode 100644
index e17b75a..0000000
--- a/tests/language/named_parameters_passing_falsy_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing named parameters with various values that might
-// be implemented as 'falsy' values in a JavaScript implementation.
-
-class TestClass {
-  TestClass();
-
-  method([value = 100]) => value;
-  method2({value: 100}) => value;
-
-  static staticMethod([value = 200]) => value;
-  static staticMethod2({value: 200}) => value;
-}
-
-globalMethod([value = 300]) => value;
-globalMethod2({value: 300}) => value;
-
-const testValues = const [0, 0.0, '', false, null];
-
-testFunction(f, f2) {
-  Expect.isTrue(f() >= 100);
-  for (var v in testValues) {
-    Expect.equals(v, f(v));
-    Expect.equals(v, f2(value: v));
-  }
-}
-
-main() {
-  var obj = new TestClass();
-
-  Expect.equals(100, obj.method());
-  Expect.equals(100, obj.method2());
-  Expect.equals(200, TestClass.staticMethod());
-  Expect.equals(200, TestClass.staticMethod2());
-  Expect.equals(300, globalMethod());
-  Expect.equals(300, globalMethod2());
-
-  for (var v in testValues) {
-    Expect.equals(v, obj.method(v));
-    Expect.equals(v, obj.method2(value: v));
-    Expect.equals(v, TestClass.staticMethod(v));
-    Expect.equals(v, TestClass.staticMethod2(value: v));
-    Expect.equals(v, globalMethod(v));
-    Expect.equals(v, globalMethod2(value: v));
-  }
-
-  // Test via indirect call.
-  testFunction(obj.method, obj.method2);
-  testFunction(TestClass.staticMethod, TestClass.staticMethod2);
-  testFunction(globalMethod, globalMethod2);
-}
diff --git a/tests/language/named_parameters_passing_null_test.dart b/tests/language/named_parameters_passing_null_test.dart
deleted file mode 100644
index ce7573d..0000000
--- a/tests/language/named_parameters_passing_null_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing named parameters with 'null' passed as an
-// argument.
-
-class TestClass {
-  TestClass();
-
-  num method([value = 100]) => value;
-  num method2({value: 100}) => value;
-
-  static num staticMethod([value = 200]) => value;
-  static num staticMethod2({value: 200}) => value;
-}
-
-num globalMethod([value = 300]) => value;
-num globalMethod2({value: 300}) => value;
-
-main() {
-  var obj = new TestClass();
-
-  Expect.equals(100, obj.method());
-  Expect.equals(100, obj.method2());
-  Expect.equals(50, obj.method(50));
-  Expect.equals(50, obj.method2(value: 50));
-  Expect.equals(null, obj.method(null));
-  Expect.equals(null, obj.method2(value: null));
-
-  Expect.equals(200, TestClass.staticMethod());
-  Expect.equals(200, TestClass.staticMethod2());
-  Expect.equals(50, TestClass.staticMethod(50));
-  Expect.equals(50, TestClass.staticMethod2(value: 50));
-  Expect.equals(null, TestClass.staticMethod(null));
-  Expect.equals(null, TestClass.staticMethod2(value: null));
-
-  Expect.equals(300, globalMethod());
-  Expect.equals(300, globalMethod2());
-  Expect.equals(50, globalMethod(50));
-  Expect.equals(50, globalMethod2(value: 50));
-  Expect.equals(null, globalMethod(null));
-  Expect.equals(null, globalMethod2(value: null));
-}
diff --git a/tests/language/named_parameters_passing_zero_test.dart b/tests/language/named_parameters_passing_zero_test.dart
deleted file mode 100644
index 02afcfe..0000000
--- a/tests/language/named_parameters_passing_zero_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing named parameters with zero passed as an
-// argument.
-
-class TestClass {
-  TestClass();
-
-  num method([num value = 100]) => value;
-  num method2({num value: 100}) => value;
-
-  static num staticMethod([num value = 200]) => value;
-  static num staticMethod2({num value: 200}) => value;
-}
-
-num globalMethod([num value = 300]) => value;
-num globalMethod2({num value: 300}) => value;
-
-main() {
-  var obj = new TestClass();
-
-  Expect.equals(100, obj.method());
-  Expect.equals(100, obj.method2());
-  Expect.equals(7, obj.method(7));
-  Expect.equals(7, obj.method2(value: 7));
-  Expect.equals(0, obj.method(0));
-  Expect.equals(0, obj.method2(value: 0));
-
-  Expect.equals(200, TestClass.staticMethod());
-  Expect.equals(200, TestClass.staticMethod2());
-  Expect.equals(7, TestClass.staticMethod(7));
-  Expect.equals(7, TestClass.staticMethod2(value: 7));
-  Expect.equals(0, TestClass.staticMethod(0));
-  Expect.equals(0, TestClass.staticMethod2(value: 0));
-
-  Expect.equals(300, globalMethod());
-  Expect.equals(300, globalMethod2());
-  Expect.equals(7, globalMethod(7));
-  Expect.equals(7, globalMethod2(value: 7));
-  Expect.equals(0, globalMethod(0));
-  Expect.equals(0, globalMethod2(value: 0));
-}
diff --git a/tests/language/named_parameters_test.dart b/tests/language/named_parameters_test.dart
deleted file mode 100644
index 38f6f95..0000000
--- a/tests/language/named_parameters_test.dart
+++ /dev/null
@@ -1,115 +0,0 @@
-// 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.
-// Dart test program for testing named parameters.
-
-import "package:expect/expect.dart";
-
-class NamedParametersTest {
-  static int F00() {
-    return 0;
-  }
-
-  int f11() {
-    return 0;
-  }
-
-  static int F11(int a) {
-    return a;
-  }
-
-  int f22(int a) {
-    return a;
-  }
-
-  static int F10([int b = 20]) {
-    return b;
-  }
-
-  int f21([int b = 20]) {
-    return b;
-  }
-
-  static int F21(int a, [int b = 20]) {
-    return 100 * a + b;
-  }
-
-  int f32(int a, [int b = 20]) {
-    return 100 * a + b;
-  }
-
-  static int F31(int a, [int b = 20, int c = 30]) {
-    return 100 * (100 * a + b) + c;
-  }
-
-  int f42(int a, [int b = 20, int c = 30]) {
-    return 100 * (100 * a + b) + c;
-  }
-
-  static int F41(int a, [int b = 20, int c, int d = 40]) {
-    return 100 * (100 * (100 * a + b) + (c == null ? 0 : c)) + d;
-  }
-
-  int f52(int a, [int b = 20, int c, int d = 40]) {
-    return 100 * (100 * (100 * a + b) + (c == null ? 0 : c)) + d;
-  }
-
-  static testMain() {
-    NamedParametersTest np = new NamedParametersTest();
-    Expect.equals(0, F00());
-    Expect.equals(0, np.f11());
-    Expect.equals(10, F11(10));
-    Expect.equals(10, np.f22(10));
-    Expect.equals(20, F10());
-    Expect.equals(20, np.f21());
-    Expect.equals(20, F10(20));
-    Expect.equals(20, np.f21(20));
-    Expect.equals(20, F10(b:20)); // //# 01: runtime error
-    Expect.equals(20, np.f21(b:20)); // //# 02: runtime error
-    Expect.equals(1020, F21(10));
-    Expect.equals(1020, np.f32(10));
-    Expect.equals(1025, F21(10, 25));
-    Expect.equals(1025, np.f32(10, 25));
-    Expect.equals(1025, F21(10, b:25)); // //# 03: runtime error
-    Expect.equals(1025, np.f32(10, b:25)); // //# 04: runtime error
-    Expect.equals(102030, F31(10));
-    Expect.equals(102030, np.f42(10));
-    Expect.equals(102530, F31(10, 25));
-    Expect.equals(102530, np.f42(10, 25));
-    Expect.equals(102035, F31(10, c:35)); // //# 05: runtime error
-    Expect.equals(102035, np.f42(10, c:35)); // //# 06: runtime error
-    Expect.equals(102535, F31(10, 25, 35));
-    Expect.equals(102535, np.f42(10, 25, 35));
-    Expect.equals(102535, F31(10, 25, c:35)); // //# 07: runtime error
-    Expect.equals(102535, np.f42(10, 25, c:35)); // //# 08: runtime error
-    Expect.equals(10200040, F41(10));
-    Expect.equals(10200040, np.f52(10));
-    Expect.equals(10203540, F41(10, c:35)); // //# 09: runtime error
-    Expect.equals(10203540, np.f52(10, c:35)); // //# 10: runtime error
-  }
-}
-
-abstract class I {
-  factory I() = C;
-  int mul(int a, [int factor]);
-}
-
-class C implements I {
-  int mul(int a, [int factor = 10]) {
-    return a * factor;
-  }
-}
-
-hello(msg, to, {from}) => '${from} sent ${msg} to ${to}';
-message() => hello("gladiolas", "possums", from: "Edna");
-
-main() {
-  NamedParametersTest.testMain();
-  var i = new I();
-  Expect.equals(100, i.mul(10));
-  Expect.equals(1000, i.mul(10, 100));
-  var c = new C();
-  Expect.equals(100, c.mul(10));
-  Expect.equals(1000, c.mul(10, 100));
-  Expect.equals("Edna sent gladiolas to possums", message());
-}
diff --git a/tests/language/named_parameters_type_test.dart b/tests/language/named_parameters_type_test.dart
deleted file mode 100644
index 2d62e8c..0000000
--- a/tests/language/named_parameters_type_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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=--checked
-//
-// Dart test program for testing optional named parameters in type tests.
-
-main() {
-  Function anyFunction;
-  void acceptFunNumOptBool(void funNumOptBool(num n, {bool b})) {}
-  ;
-  void funNum(num n) {}
-  ;
-  void funNumBool(num n, bool b) {}
-  ;
-  void funNumOptBool(num n, {bool b: true}) {}
-  ;
-  void funNumOptBoolX(num n, {bool x: true}) {}
-  ;
-  anyFunction = funNum;
-  anyFunction = funNumBool;
-  anyFunction = funNumOptBool;
-  anyFunction = funNumOptBoolX;
-  acceptFunNumOptBool(funNumOptBool);
-  acceptFunNumOptBool(funNum); // //# 01: runtime error
-  acceptFunNumOptBool(funNumBool); // //# 02: static type warning, runtime error
-  acceptFunNumOptBool(funNumOptBoolX); // //# 03: static type warning, runtime error
-}
diff --git a/tests/language/named_parameters_with_conversions_test.dart b/tests/language/named_parameters_with_conversions_test.dart
deleted file mode 100644
index 6ba3159..0000000
--- a/tests/language/named_parameters_with_conversions_test.dart
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Test named arguments work as expected regardless of whether the function or
-// method is called via function call syntax or method call syntax.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-Validate(tag, a, b) {
-  // tag encodes which parameters are passed in with values a: 111, b: 222.
-  if (tag == 'ab') {
-    Expect.equals(a, 111);
-    Expect.equals(b, 222);
-  }
-  if (tag == 'a') {
-    Expect.equals(a, 111);
-    Expect.equals(b, 20);
-  }
-  if (tag == 'b') {
-    Expect.equals(a, 10);
-    Expect.equals(b, 222);
-  }
-  if (tag == '') {
-    Expect.equals(a, 10);
-    Expect.equals(b, 20);
-  }
-}
-
-class HasMethod {
-  int calls;
-
-  HasMethod() : calls = 0 {}
-
-  foo(tag, [a = 10, b = 20]) {
-    calls += 1;
-    Validate(tag, a, b);
-  }
-
-  foo2(tag, {a: 10, b: 20}) {
-    calls += 1;
-    Validate(tag, a, b);
-  }
-}
-
-class HasField {
-  int calls;
-  var foo, foo2;
-
-  HasField() {
-    calls = 0;
-    foo = makeFoo(this);
-    foo2 = makeFoo2(this);
-  }
-
-  makeFoo(owner) {
-    // This function is closed-over 'owner'.
-    return (tag, [a = 10, b = 20]) {
-      owner.calls += 1;
-      Validate(tag, a, b);
-    };
-  }
-
-  makeFoo2(owner) {
-    // This function is closed-over 'owner'.
-    return (tag, {a: 10, b: 20}) {
-      owner.calls += 1;
-      Validate(tag, a, b);
-    };
-  }
-}
-
-class NamedParametersWithConversionsTest {
-  static checkException(thunk) {
-    bool threw = false;
-    try {
-      thunk();
-    } catch (e) {
-      threw = true;
-    }
-    Expect.isTrue(threw);
-  }
-
-  static testMethodCallSyntax(a) {
-    a.foo('');
-    a.foo('a', 111);
-    a.foo('ab', 111, 222);
-    a.foo2('a', a: 111);
-    a.foo2('b', b: 222);
-    a.foo2('ab', a: 111, b: 222);
-    a.foo2('ab', b: 222, a: 111);
-
-    Expect.equals(7, a.calls);
-
-    checkException(() => a.foo()); //                  Too few arguments.
-    checkException(() => a.foo('abc', 1, 2, 3)); //    Too many arguments.
-    checkException(() => a.foo2('c', c: 1)); //        Bad name.
-    checkException(() => a.foo2('c', a: 111, c: 1)); // Bad name.
-
-    Expect.equals(7, a.calls);
-  }
-
-  static testFunctionCallSyntax(a) {
-    var f = a.foo;
-    var f2 = a.foo2;
-    f('');
-    f('a', 111);
-    f('ab', 111, 222);
-    f2('a', a: 111);
-    f2('b', b: 222);
-    f2('ab', a: 111, b: 222);
-    f2('ab', b: 222, a: 111);
-
-    Expect.equals(7, a.calls);
-
-    checkException(() => f()); //                   Too few arguments.
-    checkException(() => f('abc', 1, 2, 3)); //     Too many arguments.
-    checkException(() => f2('c', c: 1)); //         Bad name.
-    checkException(() => f2('c', a: 111, c: 1)); // Bad name.
-
-    Expect.equals(7, a.calls);
-  }
-
-  static testMain() {
-    // 'Plain' calls where the method/field syntax matches the object.
-    testMethodCallSyntax(new HasMethod());
-    testFunctionCallSyntax(new HasField());
-
-    // 'Conversion' calls where method/field call syntax does not match the
-    // object.
-    testMethodCallSyntax(new HasField());
-    testFunctionCallSyntax(new HasMethod());
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    NamedParametersWithConversionsTest.testMain();
-  }
-}
diff --git a/tests/language/named_parameters_with_dollars_test.dart b/tests/language/named_parameters_with_dollars_test.dart
deleted file mode 100644
index 9088af4..0000000
--- a/tests/language/named_parameters_with_dollars_test.dart
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test to stress Frog's named parameter scheme.
-
-main() {
-  testDollar();
-  testPsycho();
-}
-
-class TestClass {
-  method({a, b, a$b, a$$b}) => [a, b, a$b, a$$b];
-
-  psycho({$, $$, $$$, $$$$}) => [$, $$, $$$, $$$$];
-}
-
-globalMethod({a, b, a$b, a$$b}) => [a, b, a$b, a$$b];
-
-format(thing) {
-  if (thing == null) return '-';
-  if (thing is List) {
-    var fragments = ['['];
-    var sep;
-    for (final item in thing) {
-      if (sep != null) fragments.add(sep);
-      sep = ', ';
-      fragments.add(format(item));
-    }
-    fragments.add(']');
-    return fragments.join();
-  }
-  return thing.toString();
-}
-
-// Hopefully inscrutable to static analysis.
-makeTestClass(n) => [new TestClass(), new Decoy(), 'string'][n % 3];
-
-class Decoy {
-  method([a$b, b, a]) {
-    throw new UnimplementedError();
-  }
-
-  psycho([$$$, $$, $]) {
-    throw new UnimplementedError();
-  }
-}
-
-testDollar() {
-  Expect.equals('[]', format([]));
-
-  Expect.equals('[-, -, -, -]', format(globalMethod()));
-  Expect.equals('[1, 2, -, -]', format(globalMethod(a: 1, b: 2)));
-  Expect.equals('[1, 2, -, -]', format(globalMethod(b: 2, a: 1)));
-  Expect.equals('[-, -, 3, -]', format(globalMethod(a$b: 3)));
-  Expect.equals('[-, -, -, 4]', format(globalMethod(a$$b: 4)));
-
-  TestClass t = new TestClass(); // Statically typed.
-
-  Expect.equals('[-, -, -, -]', format(t.method()));
-  Expect.equals('[1, 2, -, -]', format(t.method(a: 1, b: 2)));
-  Expect.equals('[1, 2, -, -]', format(t.method(b: 2, a: 1)));
-  Expect.equals('[-, -, 3, -]', format(t.method(a$b: 3)));
-  Expect.equals('[-, -, -, 4]', format(t.method(a$$b: 4)));
-
-  var obj = makeTestClass(0);
-
-  Expect.equals('[-, -, -, -]', format(obj.method()));
-  Expect.equals('[1, 2, -, -]', format(obj.method(a: 1, b: 2)));
-  Expect.equals('[1, 2, -, -]', format(obj.method(b: 2, a: 1)));
-  Expect.equals('[-, -, 3, -]', format(obj.method(a$b: 3)));
-  Expect.equals('[-, -, -, 4]', format(obj.method(a$$b: 4)));
-}
-
-testPsycho() {
-  TestClass t = new TestClass(); // Statically typed.
-
-  Expect.equals('[1, 2, 3, -]', format(t.psycho($: 1, $$: 2, $$$: 3)));
-  Expect.equals('[1, 2, 3, -]', format(t.psycho($$$: 3, $$: 2, $: 1)));
-  Expect.equals('[1, 2, -, -]', format(t.psycho($: 1, $$: 2)));
-  Expect.equals('[-, -, -, 4]', format(t.psycho($$$$: 4)));
-
-  var obj = makeTestClass(0);
-
-  Expect.equals('[1, 2, -, -]', format(obj.psycho($: 1, $$: 2)));
-  Expect.equals('[-, -, -, 4]', format(obj.psycho($$$$: 4)));
-  Expect.equals('[1, 2, 3, -]', format(obj.psycho($: 1, $$: 2, $$$: 3)));
-  Expect.equals('[1, 2, 3, -]', format(obj.psycho($$$: 3, $$: 2, $: 1)));
-}
diff --git a/tests/language/named_parameters_with_object_property_names_test.dart b/tests/language/named_parameters_with_object_property_names_test.dart
deleted file mode 100644
index e4005b6..0000000
--- a/tests/language/named_parameters_with_object_property_names_test.dart
+++ /dev/null
@@ -1,245 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test for named parameter with the name of a JavaScript property found on
-// 'Object'.  For such a NAME, foo.NAME may exist in an empty map, i.e.
-//    'toString' in {} --> true.
-
-main() {
-  // Test properties found on instances of Object in Chrome 15 and Firefox 6.
-  test_constructor();
-  test_hasOwnProperty();
-  test_isPrototypeOf();
-  test_propertyIsEnumerable();
-  test_toSource();
-  test_toLocaleString();
-  test_toString();
-  test_unwatch();
-  test_valueOf();
-  test_watch();
-}
-
-// 'constructor' property.
-
-class TestClass_constructor {
-  method({constructor}) => constructor;
-  static staticMethod({constructor}) => constructor;
-}
-
-globalMethod_constructor({constructor}) => constructor;
-
-test_constructor() {
-  var obj = new TestClass_constructor();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(constructor: 0));
-
-  Expect.equals(null, TestClass_constructor.staticMethod());
-  Expect.equals(0, TestClass_constructor.staticMethod(constructor: 0));
-
-  Expect.equals(null, globalMethod_constructor());
-  Expect.equals(0, globalMethod_constructor(constructor: 0));
-}
-
-// 'hasOwnProperty' property.
-
-class TestClass_hasOwnProperty {
-  method({hasOwnProperty}) => hasOwnProperty;
-  static staticMethod({hasOwnProperty}) => hasOwnProperty;
-}
-
-globalMethod_hasOwnProperty({hasOwnProperty}) => hasOwnProperty;
-
-test_hasOwnProperty() {
-  var obj = new TestClass_hasOwnProperty();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(hasOwnProperty: 0));
-
-  Expect.equals(null, TestClass_hasOwnProperty.staticMethod());
-  Expect.equals(0, TestClass_hasOwnProperty.staticMethod(hasOwnProperty: 0));
-
-  Expect.equals(null, globalMethod_hasOwnProperty());
-  Expect.equals(0, globalMethod_hasOwnProperty(hasOwnProperty: 0));
-}
-
-// 'isPrototypeOf' property.
-
-class TestClass_isPrototypeOf {
-  method({isPrototypeOf}) => isPrototypeOf;
-  static staticMethod({isPrototypeOf}) => isPrototypeOf;
-}
-
-globalMethod_isPrototypeOf({isPrototypeOf}) => isPrototypeOf;
-
-test_isPrototypeOf() {
-  var obj = new TestClass_isPrototypeOf();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(isPrototypeOf: 0));
-
-  Expect.equals(null, TestClass_isPrototypeOf.staticMethod());
-  Expect.equals(0, TestClass_isPrototypeOf.staticMethod(isPrototypeOf: 0));
-
-  Expect.equals(null, globalMethod_isPrototypeOf());
-  Expect.equals(0, globalMethod_isPrototypeOf(isPrototypeOf: 0));
-}
-
-// 'propertyIsEnumerable' property.
-
-class TestClass_propertyIsEnumerable {
-  method({propertyIsEnumerable}) => propertyIsEnumerable;
-  static staticMethod({propertyIsEnumerable}) => propertyIsEnumerable;
-}
-
-globalMethod_propertyIsEnumerable({propertyIsEnumerable}) =>
-    propertyIsEnumerable;
-
-test_propertyIsEnumerable() {
-  var obj = new TestClass_propertyIsEnumerable();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(propertyIsEnumerable: 0));
-
-  Expect.equals(null, TestClass_propertyIsEnumerable.staticMethod());
-  Expect.equals(
-      0, TestClass_propertyIsEnumerable.staticMethod(propertyIsEnumerable: 0));
-
-  Expect.equals(null, globalMethod_propertyIsEnumerable());
-  Expect.equals(0, globalMethod_propertyIsEnumerable(propertyIsEnumerable: 0));
-}
-
-// 'toSource' property.
-
-class TestClass_toSource {
-  method({toSource}) => toSource;
-  static staticMethod({toSource}) => toSource;
-}
-
-globalMethod_toSource({toSource}) => toSource;
-
-test_toSource() {
-  var obj = new TestClass_toSource();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(toSource: 0));
-
-  Expect.equals(null, TestClass_toSource.staticMethod());
-  Expect.equals(0, TestClass_toSource.staticMethod(toSource: 0));
-
-  Expect.equals(null, globalMethod_toSource());
-  Expect.equals(0, globalMethod_toSource(toSource: 0));
-}
-
-// 'toLocaleString' property.
-
-class TestClass_toLocaleString {
-  method({toLocaleString}) => toLocaleString;
-  static staticMethod({toLocaleString}) => toLocaleString;
-}
-
-globalMethod_toLocaleString({toLocaleString}) => toLocaleString;
-
-test_toLocaleString() {
-  var obj = new TestClass_toLocaleString();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(toLocaleString: 0));
-
-  Expect.equals(null, TestClass_toLocaleString.staticMethod());
-  Expect.equals(0, TestClass_toLocaleString.staticMethod(toLocaleString: 0));
-
-  Expect.equals(null, globalMethod_toLocaleString());
-  Expect.equals(0, globalMethod_toLocaleString(toLocaleString: 0));
-}
-
-// 'toString' property.
-
-class TestClass_toString {
-  method({toString}) => toString;
-  static staticMethod({toString}) => toString;
-}
-
-globalMethod_toString({toString}) => toString;
-
-test_toString() {
-  var obj = new TestClass_toString();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(toString: 0));
-
-  Expect.equals(null, TestClass_toString.staticMethod());
-  Expect.equals(0, TestClass_toString.staticMethod(toString: 0));
-
-  Expect.equals(null, globalMethod_toString());
-  Expect.equals(0, globalMethod_toString(toString: 0));
-}
-
-// 'unwatch' property.
-
-class TestClass_unwatch {
-  method({unwatch}) => unwatch;
-  static staticMethod({unwatch}) => unwatch;
-}
-
-globalMethod_unwatch({unwatch}) => unwatch;
-
-test_unwatch() {
-  var obj = new TestClass_unwatch();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(unwatch: 0));
-
-  Expect.equals(null, TestClass_unwatch.staticMethod());
-  Expect.equals(0, TestClass_unwatch.staticMethod(unwatch: 0));
-
-  Expect.equals(null, globalMethod_unwatch());
-  Expect.equals(0, globalMethod_unwatch(unwatch: 0));
-}
-
-// 'valueOf' property.
-
-class TestClass_valueOf {
-  method({valueOf}) => valueOf;
-  static staticMethod({valueOf}) => valueOf;
-}
-
-globalMethod_valueOf({valueOf}) => valueOf;
-
-test_valueOf() {
-  var obj = new TestClass_valueOf();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(valueOf: 0));
-
-  Expect.equals(null, TestClass_valueOf.staticMethod());
-  Expect.equals(0, TestClass_valueOf.staticMethod(valueOf: 0));
-
-  Expect.equals(null, globalMethod_valueOf());
-  Expect.equals(0, globalMethod_valueOf(valueOf: 0));
-}
-
-// 'watch' property.
-
-class TestClass_watch {
-  method({watch}) => watch;
-  static staticMethod({watch}) => watch;
-}
-
-globalMethod_watch({watch}) => watch;
-
-test_watch() {
-  var obj = new TestClass_watch();
-
-  Expect.equals(null, obj.method());
-  Expect.equals(0, obj.method(watch: 0));
-
-  Expect.equals(null, TestClass_watch.staticMethod());
-  Expect.equals(0, TestClass_watch.staticMethod(watch: 0));
-
-  Expect.equals(null, globalMethod_watch());
-  Expect.equals(0, globalMethod_watch(watch: 0));
-}
diff --git a/tests/language/namer2_test.dart b/tests/language/namer2_test.dart
deleted file mode 100644
index 3d7d2bc..0000000
--- a/tests/language/namer2_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Test that user field names cannot clash with internal names of the
-// dart2js compiler.
-
-class A<T> {
-  var $isA;
-  var $eq;
-  var $builtinTypeInfo;
-}
-
-main() {
-  var c = [new A()];
-  Expect.isTrue(c[0] is A);
-  Expect.isTrue(c[0] == c[0]);
-
-  c = [new A<int>()];
-  c[0].$builtinTypeInfo = 42;
-  Expect.isTrue(c[0] is! A<String>);
-}
diff --git a/tests/language/namer_test.dart b/tests/language/namer_test.dart
deleted file mode 100644
index d9ad7d8..0000000
--- a/tests/language/namer_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// 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";
-
-// Regression test for a bug in dart2js where global names could
-// collide.
-
-var i = 'top level';
-
-var i0 = 'top level zero';
-
-var i00 = 'top level zero zero';
-
-var i2 = 'top level too';
-
-class A {
-  static var i = 'A';
-}
-
-var j = 'top level';
-
-var j0 = 'top level zero';
-
-var j00 = 'top level zero zero';
-
-var j2 = 'top level too';
-
-class B {
-  static var j = 'B';
-}
-
-var k = 'top level';
-
-var k0 = 'top level zero';
-
-var k00 = 'top level zero zero';
-
-var k2 = 'top level too';
-
-class C {
-  static var k = 'C';
-}
-
-main() {
-  // Order matters. This sequence triggered the bug.
-  Expect.equals('top level', i);
-  Expect.equals('A', A.i);
-  Expect.equals('top level too', i2);
-  Expect.equals('top level zero zero', i00);
-  Expect.equals('top level zero', i0);
-
-  Expect.equals('top level zero zero', j00);
-  Expect.equals('top level', j);
-  Expect.equals('top level too', j2);
-  Expect.equals('top level zero', j0);
-  Expect.equals('B', B.j);
-
-  Expect.equals('top level too', k2);
-  Expect.equals('top level zero', k0);
-  Expect.equals('top level', k);
-  Expect.equals('C', C.k);
-  Expect.equals('top level zero zero', k00);
-}
diff --git a/tests/language/naming2_test.dart b/tests/language/naming2_test.dart
deleted file mode 100644
index f9c0800..0000000
--- a/tests/language/naming2_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-class A {
-  var function;
-  A(function) : function = function;
-}
-
-main() {
-  var a = new A(499);
-  Expect.equals(499, a.function);
-}
diff --git a/tests/language/naming3_test.dart b/tests/language/naming3_test.dart
deleted file mode 100644
index 7299df1..0000000
--- a/tests/language/naming3_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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";
-
-class A {
-  var __PROTO__ = 499;
-  var constructor = 1;
-  var prototype = 2;
-}
-
-class B extends A {
-  get __PROTO__ => 42;
-  get constructor => 3;
-  get prototype => 4;
-}
-
-main() {
-  var a = new A();
-  var b = new B();
-  var list = [a, b];
-  for (int i = 0; i < list.length; i++) {
-    var proto = list[i].__PROTO__;
-    var constructor = list[i].constructor;
-    var prototype = list[i].prototype;
-    if (i == 0) {
-      Expect.equals(499, proto);
-      Expect.equals(1, constructor);
-      Expect.equals(2, prototype);
-    } else {
-      Expect.equals(42, proto);
-      Expect.equals(3, constructor);
-      Expect.equals(4, prototype);
-    }
-  }
-}
diff --git a/tests/language/naming_test.dart b/tests/language/naming_test.dart
deleted file mode 100644
index 006c4d6..0000000
--- a/tests/language/naming_test.dart
+++ /dev/null
@@ -1,532 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  A() {
-    NamingTest.count++;
-  }
-  foo(a, b) {
-    Expect.equals(1, a);
-    Expect.equals(2, b);
-  }
-}
-
-class MyException {
-  MyException() {}
-}
-
-class debugger {
-  static const int __PROTO__ = 5;
-
-  int x;
-
-  factory debugger.F() {
-    return new debugger(1);
-  }
-  debugger(x) : this.x = x + 1 {}
-  debugger.C(x) : this.x = x + 2 {}
-  debugger.C$C(x) : this.x = x + 3 {}
-  debugger.C$I(x) : this.x = x + 4 {}
-}
-
-class debugger$C {
-  int x;
-
-  factory debugger$C.F() {
-    return new debugger$C(1);
-  }
-  debugger$C(x) : this.x = x + 5 {}
-  debugger$C.C(x) : this.x = x + 6 {}
-  debugger$C.C$C(x) : this.x = x + 7 {}
-  debugger$C.C$I(x) : this.x = x + 8 {}
-}
-
-class debugger$C$C {
-  int x;
-
-  factory debugger$C$C.F() {
-    return new debugger$C$C(1);
-  }
-  debugger$C$C(x) : this.x = x + 9 {}
-  debugger$C$C.C(x) : this.x = x + 10 {}
-  debugger$C$C.C$C(x) : this.x = x + 11 {}
-  debugger$C$C.C$I(x) : this.x = x + 12 {}
-}
-
-class with$I extends debugger$C {
-  int y;
-
-  factory with$I.F() {
-    return new with$I(1, 2);
-  }
-  with$I(x, y)
-      : super(x),
-        this.y = y + 11 {}
-  with$I.I(x, y)
-      : super.C(x),
-        this.y = y + 12 {}
-  with$I.C(x, y)
-      : super.C$C(x),
-        this.y = y + 13 {}
-  with$I.I$C(x, y)
-      : super.C$I(x),
-        this.y = y + 14 {}
-  with$I.C$C(x, y)
-      : super(x),
-        this.y = y + 15 {}
-  with$I.C$C$C(x, y)
-      : super.C(x),
-        this.y = y + 16 {}
-  with$I.$C$I(x, y)
-      : super.C$C(x),
-        this.y = y + 17 {}
-  with$I.$$I$C(x, y)
-      : super.C$I(x),
-        this.y = y + 18 {}
-  with$I.$(x, y)
-      : super(x),
-        this.y = y + 19 {}
-  with$I.$$(x, y)
-      : super.C(x),
-        this.y = y + 20 {}
-}
-
-class with$C extends debugger$C$C {
-  int y;
-
-  factory with$C.F() {
-    return new with$C(1, 2);
-  }
-  with$C(x, y)
-      : super(x),
-        this.y = y + 21 {}
-  with$C.I(x, y)
-      : super.C(x),
-        this.y = y + 22 {}
-  with$C.C(x, y)
-      : super.C$C(x),
-        this.y = y + 23 {}
-  with$C.I$C(x, y)
-      : super.C$I(x),
-        this.y = y + 24 {}
-  with$C.C$C(x, y)
-      : super(x),
-        this.y = y + 25 {}
-  with$C.C$C$C(x, y)
-      : super.C(x),
-        this.y = y + 26 {}
-  with$C.$C$I(x, y)
-      : super.C$C(x),
-        this.y = y + 27 {}
-  with$C.$$I$C(x, y)
-      : super.C$I(x),
-        this.y = y + 28 {}
-  with$C.$(x, y)
-      : super(x),
-        this.y = y + 29 {}
-  with$C.$$(x, y)
-      : super.C(x),
-        this.y = y + 30 {}
-}
-
-class with$I$C extends debugger$C$C {
-  int y;
-
-  factory with$I$C.F() {
-    return new with$I$C(1, 2);
-  }
-  with$I$C(x, y)
-      : super(x),
-        this.y = y + 31 {}
-  with$I$C.I(x, y)
-      : super.C(x),
-        this.y = y + 32 {}
-  with$I$C.C(x, y)
-      : super.C$C(x),
-        this.y = y + 33 {}
-  with$I$C.I$C(x, y)
-      : super.C$I(x),
-        this.y = y + 34 {}
-  with$I$C.C$C(x, y)
-      : super(x),
-        this.y = y + 35 {}
-  with$I$C.C$C$C(x, y)
-      : super.C(x),
-        this.y = y + 36 {}
-  with$I$C.$C$I(x, y)
-      : super.C$C(x),
-        this.y = y + 37 {}
-  with$I$C.$$I$C(x, y)
-      : super.C$I(x),
-        this.y = y + 38 {}
-  with$I$C.$(x, y)
-      : super(x),
-        this.y = y + 39 {}
-  with$I$C.$$(x, y)
-      : super.C(x),
-        this.y = y + 40 {}
-}
-
-class Tata {
-  var prototype;
-
-  Tata() : this.prototype = 0 {}
-
-  __PROTO__$() {
-    return 12;
-  }
-}
-
-class Toto extends Tata {
-  var __PROTO__;
-
-  Toto()
-      : super(),
-        this.__PROTO__ = 0 {}
-
-  prototype$() {
-    return 10;
-  }
-
-  titi() {
-    Expect.equals(0, prototype);
-    Expect.equals(0, __PROTO__);
-    prototype = 3;
-    __PROTO__ = 5;
-    Expect.equals(3, prototype);
-    Expect.equals(5, __PROTO__);
-    Expect.equals(10, prototype$());
-    Expect.equals(12, __PROTO__$());
-    Expect.equals(12, this.__PROTO__$());
-    Expect.equals(10, this.prototype$());
-    Expect.equals(12, __PROTO__$());
-  }
-}
-
-class Bug4082360 {
-  int x_;
-  Bug4082360() {}
-
-  int get x {
-    return x_;
-  }
-
-  void set x(int value) {
-    x_ = value;
-  }
-
-  void indirectSet(int value) {
-    x = value;
-  }
-
-  static void test() {
-    var bug = new Bug4082360();
-    bug.indirectSet(42);
-    Expect.equals(42, bug.x_);
-    Expect.equals(42, bug.x);
-  }
-}
-
-class Hoisting {
-  var f_;
-  Hoisting.negate(var x) {
-    f_ = () {
-      return x;
-    };
-  }
-
-  operator -() {
-    var x = 3;
-    return () {
-      return x + 1;
-    };
-  }
-
-  operator [](x) {
-    return () {
-      return x + 3;
-    };
-  }
-
-  static void test() {
-    var h = new Hoisting.negate(1);
-    Expect.equals(1, (h.f_)());
-    var f = -h;
-    Expect.equals(4, f());
-    Expect.equals(7, h[4]());
-  }
-}
-
-// It is not possible to make sure that the backend uses the hardcoded names
-// we are testing against. This test might therefore become rapidly out of date
-class NamingTest {
-  static int count;
-
-  static testExceptionNaming() {
-    // Exceptions use a hardcoded "e" as exception name. If the namer works
-    // correctly then it will be renamed in case of clashes.
-    var e = 3;
-    var caught = 0;
-    try {
-      throw new MyException();
-    } catch (exc) {
-      try {
-        throw new MyException();
-      } catch (exc2) {
-        caught++;
-      }
-      Expect.equals(1, caught);
-      caught++;
-    }
-    Expect.equals(2, caught);
-    Expect.equals(3, e);
-  }
-
-  static testTmpNaming() {
-    Expect.equals(0, count);
-    var tmp$0 = 1;
-    var tmp$1 = 2;
-    new A().foo(tmp$0, tmp$1++);
-    Expect.equals(1, count);
-    Expect.equals(3, tmp$1);
-  }
-
-  static testScopeNaming() {
-    // Alias scopes use a hardcoded "dartc_scp$<depth>" as names.
-    var dartc_scp$1 = 5;
-    var foo = 8;
-    var f = () {
-      var dartc_scp$1 = 15;
-      return foo + dartc_scp$1;
-    };
-    Expect.equals(5, dartc_scp$1);
-    Expect.equals(23, f());
-  }
-
-  static testGlobalMangling() {
-    var x;
-    x = new debugger(0);
-    Expect.equals(1, x.x);
-    x = new debugger.C(0);
-    Expect.equals(2, x.x);
-    x = new debugger.C$C(0);
-    Expect.equals(3, x.x);
-    x = new debugger.C$I(0);
-    Expect.equals(4, x.x);
-    x = new debugger$C(0);
-    Expect.equals(5, x.x);
-    x = new debugger$C.C(0);
-    Expect.equals(6, x.x);
-    x = new debugger$C.C$C(0);
-    Expect.equals(7, x.x);
-    x = new debugger$C.C$I(0);
-    Expect.equals(8, x.x);
-    x = new debugger$C$C(0);
-    Expect.equals(9, x.x);
-    x = new debugger$C$C.C(0);
-    Expect.equals(10, x.x);
-    x = new debugger$C$C.C$C(0);
-    Expect.equals(11, x.x);
-    x = new debugger$C$C.C$I(0);
-    Expect.equals(12, x.x);
-    x = new with$I(0, 0);
-    Expect.equals(5, x.x);
-    Expect.equals(11, x.y);
-    x = new with$I.I(0, 0);
-    Expect.equals(6, x.x);
-    Expect.equals(12, x.y);
-    x = new with$I.C(0, 0);
-    Expect.equals(7, x.x);
-    Expect.equals(13, x.y);
-    x = new with$I.I$C(0, 0);
-    Expect.equals(8, x.x);
-    Expect.equals(14, x.y);
-    x = new with$I.C$C(0, 0);
-    Expect.equals(5, x.x);
-    Expect.equals(15, x.y);
-    x = new with$I.C$C$C(0, 0);
-    Expect.equals(6, x.x);
-    Expect.equals(16, x.y);
-    x = new with$I.$C$I(0, 0);
-    Expect.equals(7, x.x);
-    Expect.equals(17, x.y);
-    x = new with$I.$$I$C(0, 0);
-    Expect.equals(8, x.x);
-    Expect.equals(18, x.y);
-    x = new with$I.$(0, 0);
-    Expect.equals(5, x.x);
-    Expect.equals(19, x.y);
-    x = new with$I.$$(0, 0);
-    Expect.equals(6, x.x);
-    Expect.equals(20, x.y);
-    x = new with$C(0, 0);
-    Expect.equals(9, x.x);
-    Expect.equals(21, x.y);
-    x = new with$C.I(0, 0);
-    Expect.equals(10, x.x);
-    Expect.equals(22, x.y);
-    x = new with$C.C(0, 0);
-    Expect.equals(11, x.x);
-    Expect.equals(23, x.y);
-    x = new with$C.I$C(0, 0);
-    Expect.equals(12, x.x);
-    Expect.equals(24, x.y);
-    x = new with$C.C$C(0, 0);
-    Expect.equals(9, x.x);
-    Expect.equals(25, x.y);
-    x = new with$C.C$C$C(0, 0);
-    Expect.equals(10, x.x);
-    Expect.equals(26, x.y);
-    x = new with$C.$C$I(0, 0);
-    Expect.equals(11, x.x);
-    Expect.equals(27, x.y);
-    x = new with$C.$$I$C(0, 0);
-    Expect.equals(12, x.x);
-    Expect.equals(28, x.y);
-    x = new with$C.$(0, 0);
-    Expect.equals(9, x.x);
-    Expect.equals(29, x.y);
-    x = new with$C.$$(0, 0);
-    Expect.equals(10, x.x);
-    Expect.equals(30, x.y);
-    x = new with$I$C(0, 0);
-    Expect.equals(9, x.x);
-    Expect.equals(31, x.y);
-    x = new with$I$C.I(0, 0);
-    Expect.equals(10, x.x);
-    Expect.equals(32, x.y);
-    x = new with$I$C.C(0, 0);
-    Expect.equals(11, x.x);
-    Expect.equals(33, x.y);
-    x = new with$I$C.I$C(0, 0);
-    Expect.equals(12, x.x);
-    Expect.equals(34, x.y);
-    x = new with$I$C.C$C(0, 0);
-    Expect.equals(9, x.x);
-    Expect.equals(35, x.y);
-    x = new with$I$C.C$C$C(0, 0);
-    Expect.equals(10, x.x);
-    Expect.equals(36, x.y);
-    x = new with$I$C.$C$I(0, 0);
-    Expect.equals(11, x.x);
-    Expect.equals(37, x.y);
-    x = new with$I$C.$$I$C(0, 0);
-    Expect.equals(12, x.x);
-    Expect.equals(38, x.y);
-    x = new with$I$C.$(0, 0);
-    Expect.equals(9, x.x);
-    Expect.equals(39, x.y);
-    x = new with$I$C.$$(0, 0);
-    Expect.equals(10, x.x);
-    Expect.equals(40, x.y);
-  }
-
-  static void testMemberMangling() {
-    Expect.equals(5, debugger.__PROTO__);
-    new Toto().titi();
-  }
-
-  static void testFactoryMangling() {
-    var o = new debugger.F();
-    Expect.equals(2, o.x);
-    o = new debugger$C.F();
-    Expect.equals(6, o.x);
-    o = new debugger$C$C.F();
-    Expect.equals(10, o.x);
-    o = new with$I.F();
-    Expect.equals(6, o.x);
-    Expect.equals(13, o.y);
-    o = new with$C.F();
-    Expect.equals(10, o.x);
-    Expect.equals(23, o.y);
-    o = new with$I$C.F();
-    Expect.equals(10, o.x);
-    Expect.equals(33, o.y);
-  }
-
-  static testFunctionParameters() {
-    a(eval) {
-      return eval;
-    }
-
-    b(arguments) {
-      return arguments;
-    }
-
-    Expect.equals(10, a(10));
-    Expect.equals(10, b(10));
-  }
-
-  static testPseudoTokens() {
-    var EOS = 400;
-    var ILLEGAL = 99;
-    Expect.equals(499, EOS + ILLEGAL);
-  }
-
-  static testDollar() {
-    Expect.equals(123, $(123).wrapped);
-    var x = new Object(), y = new Object();
-    Expect.identical(x, $(x).wrapped);
-    Expect.identical(y, $(x).$add(y));
-    Expect.identical(x, $(x).$negate());
-    Expect.equals(123, $(x) + x);
-    Expect.equals(444, -$(x));
-  }
-
-  static void testMain() {
-    count = 0;
-    testExceptionNaming();
-    testTmpNaming();
-    testScopeNaming();
-    testGlobalMangling();
-    testMemberMangling();
-    testFactoryMangling();
-    testFunctionParameters();
-    Bug4082360.test();
-    Hoisting.test();
-    testPseudoTokens();
-    testDollar();
-  }
-}
-
-// Test that the generated JS names don't conflict with "$"
-class DartQuery {
-  Object wrapped;
-  DartQuery(this.wrapped);
-
-  $add(Object other) => other;
-  $negate() => wrapped;
-
-  operator +(Object other) => 123;
-  operator -() => 444;
-}
-
-$add(Object first, Object second) => second;
-DartQuery $(Object obj) => new DartQuery(obj);
-
-// Ensure we don't have false positive.
-class Naming2Test {
-  Naming2Test() {}
-  int get foo {
-    return 1;
-  }
-
-  set foo(x) {}
-
-  static void main(args) {
-    var a = new Naming2Test();
-    Expect.throws(
-        () => a.foo(2),
-        // We check for both exceptions because the exact exception to
-        // throw is hard to compute on some browsers.
-        (e) => e is NoSuchMethodError);
-  }
-}
-
-main() {
-  NamingTest.testMain();
-  Naming2Test.main(null);
-}
diff --git a/tests/language/nan_identical_test.dart b/tests/language/nan_identical_test.dart
deleted file mode 100644
index d9b2950..0000000
--- a/tests/language/nan_identical_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2015, 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.
-// Test a new statement by itself.
-// VMOptions=--optimization-counter-threshold=4 --no-background-compilation
-
-import 'dart:typed_data';
-
-import "package:expect/expect.dart";
-
-double createOtherNAN() {
-  var buffer = new Uint8List(8).buffer;
-  var bdata = new ByteData.view(buffer);
-  bdata.setFloat64(0, double.NAN);
-  bdata.setInt8(7, bdata.getInt8(7) ^ 1); // Flip bit 0, big endian.
-  double result = bdata.getFloat64(0);
-  Expect.isTrue(result.isNaN);
-  return result;
-}
-
-main() {
-  var otherNAN = createOtherNAN();
-  for (int i = 0; i < 100; i++) {
-    Expect.isFalse(checkIdentical(double.NAN, -double.NAN));
-    Expect.isTrue(checkIdentical(double.NAN, double.NAN));
-    Expect.isTrue(checkIdentical(-double.NAN, -double.NAN));
-
-    Expect.isFalse(checkIdentical(otherNAN, -otherNAN));
-    Expect.isTrue(checkIdentical(otherNAN, otherNAN));
-    Expect.isTrue(checkIdentical(-otherNAN, -otherNAN));
-
-    var a = otherNAN;
-    var b = double.NAN;
-    Expect.isFalse(checkIdentical(a, b));
-    Expect.isFalse(checkIdentical(-a, -b));
-    Expect.isFalse(checkIdentical(-a, b));
-    Expect.isFalse(checkIdentical(a, -b));
-
-    a = -a;
-    Expect.isFalse(checkIdentical(a, b));
-    Expect.isFalse(checkIdentical(-a, -b));
-    Expect.isFalse(checkIdentical(-a, b));
-    Expect.isFalse(checkIdentical(a, -b));
-
-    Expect.isTrue(checkIdentical(-(-a), a));
-    Expect.isTrue(checkIdentical(-(-b), b));
-  }
-}
-
-checkIdentical(a, b) => identical(a, b);
diff --git a/tests/language/native_test.dart b/tests/language/native_test.dart
deleted file mode 100644
index c3401d3..0000000
--- a/tests/language/native_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program which shows how to write self verifying tests
-// and how to print dart objects if needed.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int foo(int i) {
-    return i + 10;
-  }
-}
-
-class NativeTest {
-  static testMain() {
-    int i = 10;
-    int result = 10 + 10 + 10;
-    i = Helper.foo(i + 10);
-    print("$i is result.");
-    Expect.equals(i, result);
-  }
-}
-
-main() {
-  NativeTest.testMain();
-}
diff --git a/tests/language/nested_comments_test.dart b/tests/language/nested_comments_test.dart
deleted file mode 100644
index 48d07ba..0000000
--- a/tests/language/nested_comments_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing nested comments
-
-import "package:expect/expect.dart";
-
-// /* nested comment */
-/*// nested comment */
-/*/* nested comment */*/
-/* entire function
-void main() {
-  /* nested comment */
-  Expect.isTrue(false); // nested
-}
-*/
-
-/**
- test documentation
- /* nested comment */
-*/
-main() {
-  Expect.isTrue(true);
-}
diff --git a/tests/language/nested_if_test.dart b/tests/language/nested_if_test.dart
deleted file mode 100644
index 41c7d34..0000000
--- a/tests/language/nested_if_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart2Js had problems with nested ifs inside loops.
-
-import "package:expect/expect.dart";
-
-foo(x, a) {
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*------- Avoid inlining ----------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  /*---------------------------------------------*/
-  for (int i = 0; i < 10; i++) {
-    if (x) {
-      if (!x) a = [];
-      a.add(3);
-    }
-  }
-  return a;
-}
-
-main() {
-  var a = foo(true, []);
-  Expect.equals(10, a.length);
-  Expect.equals(3, a[0]);
-}
diff --git a/tests/language/nested_switch_label_test.dart b/tests/language/nested_switch_label_test.dart
deleted file mode 100644
index 49c2754..0000000
--- a/tests/language/nested_switch_label_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test nested switch statement using labels.
-
-library nested_switch_label;
-
-import "package:expect/expect.dart";
-
-void main() {
-  doSwitch(0, ['0', '2:0', '1', 'default']);
-  doSwitch(2, ['2:2', '2:1', '2', '1', 'default']);
-}
-
-void doSwitch(int target, List expect) {
-  List list = [];
-  switch (target) {
-    outer0:
-    case 0:
-      list.add('0');
-      continue outer2;
-    outer1:
-    case 1:
-      list.add('1');
-      continue outerDefault;
-    outer2:
-    case 2:
-      switch (target) {
-        inner0:
-        case 0:
-          list.add('2:0');
-          continue outer1;
-        inner2:
-        case 2:
-          list.add('2:2');
-          continue inner1;
-        inner1:
-        case 1:
-          list.add('2:1');
-      }
-      list.add('2');
-      continue outer1;
-    outerDefault:
-    default:
-      list.add('default');
-  }
-  Expect.listEquals(expect, list);
-}
diff --git a/tests/language/new_expression1_negative_test.dart b/tests/language/new_expression1_negative_test.dart
deleted file mode 100644
index 450997b..0000000
--- a/tests/language/new_expression1_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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 NewExpressionNegativeTest {
-   NewExpressionNegativeTest() { }
-
-   static void testMain() {
-     new NewExpressionNegativeTest;
-   }
- }
-
-main() {
-  NewExpression1NegativeTest.testMain();
-}
diff --git a/tests/language/new_expression2_negative_test.dart b/tests/language/new_expression2_negative_test.dart
deleted file mode 100644
index 55bb2a0..0000000
--- a/tests/language/new_expression2_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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 NewExpressionNegativeTest {
-   NewExpressionNegativeTest() { }
-
-   static void testMain() {
-     new NewExpressionNegativeTest(;
-   }
- }
-
-main() {
-  NewExpression2NegativeTest.testMain();
-}
diff --git a/tests/language/new_expression3_negative_test.dart b/tests/language/new_expression3_negative_test.dart
deleted file mode 100644
index e16489c..0000000
--- a/tests/language/new_expression3_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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 NewExpressionNegativeTest {
-   NewExpressionNegativeTest() { }
-
-   static void testMain() {
-     new NewExpressionNegativeTest(...;
-   }
- }
-
-main() {
-  NewExpression3NegativeTest.testMain();
-}
diff --git a/tests/language/new_expression_type_args_test.dart b/tests/language/new_expression_type_args_test.dart
deleted file mode 100644
index f4424fc..0000000
--- a/tests/language/new_expression_type_args_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-// Tests showing errors using type-arguments in new expressions:
-class A<T> {
-  // Can't instantiate type parameter (within static or instance method).
-  m1() => new T(); //        //# 00: static type warning, runtime error
-  static m2() => new T(); // //# 01: static type warning, runtime error
-
-  // OK when used within instance method, but not in static method.
-  m3() => new A<T>();
-  static m4() => new A<T>(); //# 02: static type warning
-}
-
-main() {
-  A a = new A();
-  a.m1(); //# 00: continued
-  A.m2(); //# 01: continued
-  a.m3();
-  A.m4(); //# 02: continued
-}
diff --git a/tests/language/new_prefix_test.dart b/tests/language/new_prefix_test.dart
deleted file mode 100644
index 7b6d58f..0000000
--- a/tests/language/new_prefix_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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:core' as prefix;
-
-main() {
-  return new prefix(); //# 01: static type warning, runtime error
-}
diff --git a/tests/language/new_statement_test.dart b/tests/language/new_statement_test.dart
deleted file mode 100644
index 62fe435..0000000
--- a/tests/language/new_statement_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test a new statement by itself.
-
-import "package:expect/expect.dart";
-
-class A {
-  int a;
-  int b;
-  static int c;
-  static int d;
-
-  A(int x, int y)
-      : a = x,
-        b = y {
-    A.c = x;
-    A.d = y;
-  }
-}
-
-class NewStatementTest {
-  static testMain() {
-    new A(10, 20);
-    Expect.equals(10, A.c);
-    Expect.equals(20, A.d);
-  }
-}
-
-main() {
-  NewStatementTest.testMain();
-}
diff --git a/tests/language/no_main_test.dart b/tests/language/no_main_test.dart
deleted file mode 100644
index 0700b65..0000000
--- a/tests/language/no_main_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, 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.
-
-/* //# 01: static type warning, runtime error
-main() {}
-*/ //# 01: continued
diff --git a/tests/language/no_such_constructor2_test.dart b/tests/language/no_such_constructor2_test.dart
deleted file mode 100644
index 1c2236e..0000000
--- a/tests/language/no_such_constructor2_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  A();
-}
-
-main() {
-  Expect.throws(() => new A(42), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/no_such_constructor_test.dart b/tests/language/no_such_constructor_test.dart
deleted file mode 100644
index 3c4c7a9..0000000
--- a/tests/language/no_such_constructor_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  A();
-}
-
-main() {
-  new A(42); //# 01: static type warning, runtime error
-}
diff --git a/tests/language/no_such_method2_test.dart b/tests/language/no_such_method2_test.dart
deleted file mode 100644
index 5b1e9fa..0000000
--- a/tests/language/no_such_method2_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Regression test for https://code.google.com/p/dart/issues/detail?id=7697.
-// dart2js used to optimize [noSuchMethod] based on the user-provided
-// argument, and forget that the runtime might call it with its own
-// [Invocation] implementation.
-
-class Hey {
-  foo() => noSuchMethod(new FakeInvocationMirror());
-  noSuchMethod(x) => x;
-}
-
-class You extends Hey {
-  // We used to think this method is always called with a
-  // FakeInvocationMirror instance, but it's also called with the
-  // internal mirror implementation.
-  noSuchMethod(x) => x.isGetter;
-}
-
-class FakeInvocationMirror implements Invocation {
-  final bool isGetter = false;
-}
-
-main() {
-  var x = new Hey();
-  Expect.isTrue(x.foo() is FakeInvocationMirror);
-  var y = [new You()];
-  Expect.isTrue(y[0].bar);
-}
diff --git a/tests/language/no_such_method3_test.dart b/tests/language/no_such_method3_test.dart
deleted file mode 100644
index ba0d0ca..0000000
--- a/tests/language/no_such_method3_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a static type inferrer takes [noSuchMethod] into account.
-
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  B foobarbaz() {
-    return new B();
-  }
-}
-
-class B {
-  noSuchMethod(im) {
-    return 42;
-  }
-}
-
-bar() {
-  var b;
-  for (int i = 0; i < 20; ++i)
-    if (i % 2 == 0)
-      b = new A();
-    else
-      b = new B();
-  return b;
-}
-
-void main() {
-  var x = bar();
-  var y = x.foobarbaz();
-  Expect.equals(42, y);
-  Expect.isFalse(y is B);
-}
diff --git a/tests/language/no_such_method_dispatcher_test.dart b/tests/language/no_such_method_dispatcher_test.dart
deleted file mode 100644
index 4e18363..0000000
--- a/tests/language/no_such_method_dispatcher_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test that noSuchMethod dispatching and auto-closurization work correctly.
-
-class A {
-  noSuchMethod(m) {
-    return 123;
-  }
-
-  bar(x) => x + 1;
-}
-
-class B extends A {}
-
-class C {
-  C(this.pos, this.named, this.posArgs, this.namedArgs);
-  var pos, named;
-  noSuchMethod(m) {
-    Expect.equals(pos, m.positionalArguments.length);
-    Expect.equals(named, m.namedArguments.length);
-    for (var i = 0; i < posArgs.length; ++i) {
-      Expect.equals(posArgs[i], m.positionalArguments[i]);
-    }
-    for (var k in namedArgs.keys) {
-      Expect.equals(namedArgs[k], m.namedArguments[new Symbol(k)]);
-    }
-    return 123;
-  }
-
-  List posArgs;
-  Map namedArgs;
-}
-
-main() {
-  var a = new A();
-  for (var i = 0; i < 20; ++i) Expect.equals(123, a.foo());
-  Expect.throws(() => (a.foo)());
-  Expect.equals("123", (a.foo).toString());
-
-  var b = new B();
-  for (var i = 0; i < 20; ++i) {
-    Expect.equals(2, b.bar(1));
-    Expect.equals(123, b.bar());
-    Expect.equals(2, b.bar(1));
-  }
-
-  for (var i = 0; i < 20; ++i) {
-    Expect.equals(123, b.bar(1, 2, 3));
-    Expect.equals(123, b.bar(1, 2, foo: 3));
-  }
-
-  // Test named and positional arguments.
-  var c = new C(1, 2, [100], {"n1": 101, "n2": 102});
-  for (var i = 0; i < 20; ++i) {
-    Expect.equals(123, c.bar(100, n1: 101, n2: 102));
-    Expect.equals(123, c.bar(100, n2: 102, n1: 101));
-  }
-}
diff --git a/tests/language/no_such_method_empty_selector_test.dart b/tests/language/no_such_method_empty_selector_test.dart
deleted file mode 100644
index dff407c..0000000
--- a/tests/language/no_such_method_empty_selector_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  noSuchMethod(_) => 'foo';
-  get hashCode => 42;
-}
-
-// Keep that list empty to make the inferrer infer an empty element
-// type.
-var a = [];
-var b = [new A(), new Object()];
-
-main() {
-  // The following [hashCode] call will create a selector whose
-  // receiver type is empty. This used to make dart2js generate a
-  // [noSuchMethod] handler for [hashCode] on the Object class, which
-  // would override the actual implementation.
-  Expect.throws(() => a[0].hashCode, (e) => e is RangeError);
-
-  // This code calls the [hashCode] method put on the [Object] class,
-  // which used to be a [noSuchMethod] handler method.
-  Expect.isTrue(b[1].hashCode is int);
-
-  // Sanity checks.
-  Expect.equals(42, b[0].hashCode);
-  Expect.equals('foo', b[0].foo());
-
-  // Prevent optimizations on the [b] variable.
-  b.clear();
-}
diff --git a/tests/language/no_such_method_negative_test.dart b/tests/language/no_such_method_negative_test.dart
deleted file mode 100644
index 7abd826..0000000
--- a/tests/language/no_such_method_negative_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing that NoSuchMethodError stops the program.
-
-class NoSuchMethodNegativeTest {
-  NoSuchMethodNegativeTest() {}
-
-  foo() {
-    return 1;
-  }
-
-  static testMain() {
-    var obj = new NoSuchMethodNegativeTest();
-    return obj.moo(); // NoSuchMethodError thrown here
-  }
-}
-
-main() {
-  NoSuchMethodNegativeTest.testMain();
-}
diff --git a/tests/language/no_such_method_subtype_test.dart b/tests/language/no_such_method_subtype_test.dart
deleted file mode 100644
index a843c91..0000000
--- a/tests/language/no_such_method_subtype_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  foo() => 42;
-}
-
-class B implements A {
-  noSuchMethod(im) => 84;
-}
-
-main() {
-  var a = [new A(), new B()];
-  var b = a[1];
-  if (b is A) {
-    // `b.foo()` will create a typed selector whose receiver type is a
-    // subtype of `A`. Because not all subtypes of `A` implement
-    // `foo`, dart2js must generate a `noSuchMethod` stub for `foo` in
-    // the top Object class.
-    Expect.equals(84, b.foo());
-    return;
-  }
-  Expect.fail('Should not be here');
-}
diff --git a/tests/language/no_such_method_test.dart b/tests/language/no_such_method_test.dart
deleted file mode 100644
index fdd1c53..0000000
--- a/tests/language/no_such_method_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing that NoSuchMethod is properly called.
-
-import "dart:mirrors" show reflect;
-import "package:expect/expect.dart";
-
-class GetName {
-  foo({a, b}) => "foo";
-  moo({b}) => "moo";
-}
-
-String getName(im) => reflect(new GetName()).delegate(im);
-
-class NoSuchMethodTest {
-  foo({a: 10, b: 20}) {
-    return (10 * a) + b;
-  }
-
-  noSuchMethod(Invocation im) {
-    Expect.equals("moo", getName(im));
-    Expect.equals(0, im.positionalArguments.length);
-    Expect.equals(1, im.namedArguments.length);
-    return foo(b: im.namedArguments[const Symbol("b")]);
-  }
-
-  static testMain() {
-    var obj = new NoSuchMethodTest();
-    Expect.equals(199, obj.moo(b: 99)); // obj.NoSuchMethod called here.
-  }
-}
-
-main() {
-  NoSuchMethodTest.testMain();
-}
diff --git a/tests/language/non_const_constructor_without_body_test.dart b/tests/language/non_const_constructor_without_body_test.dart
deleted file mode 100644
index 13ef775..0000000
--- a/tests/language/non_const_constructor_without_body_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class NonConstConstructorWithoutBodyTest {
-  int x;
-
-  NonConstConstructorWithoutBodyTest();
-  NonConstConstructorWithoutBodyTest.named();
-  NonConstConstructorWithoutBodyTest.initializers() : x = 1;
-  NonConstConstructorWithoutBodyTest.parameters(int x) : x = x + 1;
-  NonConstConstructorWithoutBodyTest.fieldParameter(int this.x);
-  NonConstConstructorWithoutBodyTest.redirection() : this.initializers();
-
-  static testMain() {
-    Expect.equals(null, new NonConstConstructorWithoutBodyTest().x);
-    Expect.equals(null, new NonConstConstructorWithoutBodyTest.named().x);
-    Expect.equals(1, new NonConstConstructorWithoutBodyTest.initializers().x);
-    Expect.equals(2, new NonConstConstructorWithoutBodyTest.parameters(1).x);
-    Expect.equals(
-        2, new NonConstConstructorWithoutBodyTest.fieldParameter(2).x);
-    Expect.equals(1, new NonConstConstructorWithoutBodyTest.redirection().x);
-  }
-}
-
-main() {
-  NonConstConstructorWithoutBodyTest.testMain();
-}
diff --git a/tests/language/non_const_super_negative_test.dart b/tests/language/non_const_super_negative_test.dart
deleted file mode 100644
index 32742e2..0000000
--- a/tests/language/non_const_super_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check fails because const class extends from non const class.
-
-class Base {
-  Base() {}
-}
-
-class Sub extends Base {
-  const Sub(a) : a_ = a;
-  final a_;
-}
-
-class NonConstSuperNegativeTest {
-  static testMain() {
-    var a = new Sub();
-  }
-}
-
-main() {
-  NonConstSuperNegativeTest.testMain();
-}
diff --git a/tests/language/non_dominating_loop_test.dart b/tests/language/non_dominating_loop_test.dart
deleted file mode 100644
index ac16396..0000000
--- a/tests/language/non_dominating_loop_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-int calls = 0;
-
-void callMeOnce() {
-  Expect.equals(0, calls);
-  calls++;
-}
-
-main() {
-  int i = 0;
-  do {
-    i++;
-    if (i > 3) break;
-  } while (i < 10);
-
-  callMeOnce();
-  Expect.equals(4, i);
-}
diff --git a/tests/language/non_parameterized_factory2_test.dart b/tests/language/non_parameterized_factory2_test.dart
deleted file mode 100644
index ac9c1a6..0000000
--- a/tests/language/non_parameterized_factory2_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-abstract class Interface<T> {
-  factory Interface() = Factory<T>;
-  factory Interface.withArg(T value) = Factory<T>.withArg;
-}
-
-class Factory<T> {
-  factory Factory() {
-    return null;
-  }
-
-  factory Factory.withArg(value) {
-    return null;
-  }
-}
-
-main() {
-  new Interface<int>();
-  new Interface<int>.withArg(4);
-}
diff --git a/tests/language/non_parameterized_factory_test.dart b/tests/language/non_parameterized_factory_test.dart
deleted file mode 100644
index 9597151..0000000
--- a/tests/language/non_parameterized_factory_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-abstract class Interface<T> {
-  factory Interface() = Factory<T>;
-  factory Interface.withArg(T value) = Factory<T>.withArg;
-}
-
-class Factory<T> {
-  factory Factory() {
-    return null;
-  }
-
-  factory Factory.withArg(value) {
-    return null;
-  }
-}
-
-main() {
-  new Interface();
-  new Interface.withArg(4);
-}
diff --git a/tests/language/not_enough_positional_arguments_test.dart b/tests/language/not_enough_positional_arguments_test.dart
deleted file mode 100644
index 22709d6..0000000
--- a/tests/language/not_enough_positional_arguments_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// 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.
-
-foo(a, [b]) {}
-
-bar(a, {b}) {}
-
-class A {
-  A();
-  A.test(a, [b]);
-}
-
-class B {
-  B()
-    : super.test(b: 1) // //# 01: runtime error
-  ;
-}
-
-class C extends A {
-  C()
-    : super.test(b: 1) // //# 02: runtime error
-  ;
-}
-
-class D {
-  D();
-  D.test(a, {b});
-}
-
-class E extends D {
-  E()
-    : super.test(b: 1) // //# 05: runtime error
-  ;
-}
-
-main() {
-  new A.test(b: 1); // //# 00: runtime error
-  new B();
-  new C();
-  new D.test(b: 1); // //# 03: runtime error
-  new E();
-  foo(b: 1); // //# 06: runtime error
-  bar(b: 1); // //# 07: runtime error
-}
diff --git a/tests/language/null2_test.dart b/tests/language/null2_test.dart
deleted file mode 100644
index 000eed6..0000000
--- a/tests/language/null2_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-// Second dart test program.
-
-import "package:expect/expect.dart";
-
-@AssumeDynamic()
-@NoInline()
-confuse(x) => x;
-
-main() {
-  Expect.equals("Null", null.runtimeType.toString());
-  Expect.equals("Null", confuse(null).runtimeType.toString());
-}
diff --git a/tests/language/null_access_error_test.dart b/tests/language/null_access_error_test.dart
deleted file mode 100644
index d909e63..0000000
--- a/tests/language/null_access_error_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class NullAccessTest {
-  static void testNullVariable() {
-    int variable;
-    bool exceptionCaught = false;
-    bool wrongExceptionCaught = false;
-    try {
-      variable++;
-    } on NoSuchMethodError catch (ex) {
-      exceptionCaught = true;
-    } catch (ex) {
-      wrongExceptionCaught = true;
-    }
-    Expect.isTrue(exceptionCaught);
-    Expect.isFalse(wrongExceptionCaught);
-  }
-
-  static int helperFunction(int parameter) {
-    return parameter++;
-  }
-
-  static void testNullFunctionCall() {
-    int variable;
-    bool exceptionCaught = false;
-    bool wrongExceptionCaught = false;
-    try {
-      variable = helperFunction(variable);
-    } on NoSuchMethodError catch (ex) {
-      exceptionCaught = true;
-    } catch (ex) {
-      wrongExceptionCaught = true;
-    }
-    Expect.isTrue(exceptionCaught);
-    Expect.isFalse(wrongExceptionCaught);
-  }
-
-  static void testMain() {
-    testNullVariable();
-    testNullFunctionCall();
-  }
-}
-
-main() {
-  NullAccessTest.testMain();
-}
diff --git a/tests/language/null_bottom_test.dart b/tests/language/null_bottom_test.dart
deleted file mode 100644
index 35105cd..0000000
--- a/tests/language/null_bottom_test.dart
+++ /dev/null
@@ -1,135 +0,0 @@
-// 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.
-// Dart test for testing the ternary operator.
-
-import "package:expect/expect.dart";
-
-// Test that `Null` acts like the bottom type - less than any other type.
-
-typedef R Fun<A, R>(A argument);
-
-class C<T> {
-  const C();
-  T returns() => null;
-  void accepts(T x) {}
-}
-
-class NullBound<T extends num> {}
-
-class ListBound<T extends Iterable<Null>> {}
-
-main() {
-  testClassTypes();
-  testFunctionTypes();
-}
-
-void testClassTypes() {
-  var cn = new C<Null>();
-
-  Expect.isTrue(cn is C<Null>, "C<Null> is C<Null>");
-  Expect.isTrue(cn is C<Object>, "C<Null> is C<Object>");
-  Expect.isTrue(cn is C<int>, "C<Null> is C<int>");
-
-  Expect.isNotNull(cn as C<Null>, "C<Null> as C<Null>");
-  Expect.isNotNull(cn as C<Object>, "C<Null> as C<Object>");
-  Expect.isNotNull(cn as C<int>, "C<Null> as C<int>");
-
-  var ccn = new C<C<Null>>();
-
-  Expect.isTrue(ccn is C<C<Null>>);
-  Expect.isTrue(ccn is C<C<Object>>);
-  Expect.isTrue(ccn is C<C<int>>);
-
-  Expect.isNotNull(ccn as C<C<Null>>);
-  Expect.isNotNull(ccn as C<C<Object>>);
-  Expect.isNotNull(ccn as C<C<int>>);
-
-  var ci = new C<int>();
-  Expect.isFalse(ci is C<Null>);
-
-  var co = new C<Object>();
-  Expect.isFalse(co is C<Null>);
-
-  if (!typeAssertionsEnabled) return;
-
-  List<int> li1 = const <Null>[];
-
-  C<Null> x1 = cn;
-  C<Object> x2 = cn;
-
-  Expect.identical(x1, cn);
-  Expect.identical(x2, cn);
-
-  const C<Null> cocn = const C<Null>();
-  const C<Object> coco = cocn;
-  const C<int> coci = cocn;
-
-  Expect.identical(cocn, coco);
-  Expect.identical(cocn, coci);
-
-  Expect.throws(() {
-    Null x = "string" as dynamic;
-    use(x); // Avoid "x unused" warning.
-  });
-
-  Expect.throws(() {
-    Null x = new Object();
-    use(x); // Avoid "x unused" warning.
-  });
-
-  NullBound<int> nb = new NullBound<Null>(); // Should not fail.
-  use(nb); // Avoid "nb unused" warning.
-  ListBound<List<Null>> lb = new ListBound<Null>(); // Should not fails
-  use(lb); // Avoid "nb unused" warning.
-}
-
-void testFunctionTypes() {
-  T1 t1 = new T1();
-  T2 t2 = new T2();
-  T1 t = t2;
-
-  Fun<int, Null> f1 = t1.foo;
-  Fun<Null, int> f2 = t.bar;
-  f1 = t1.baz;
-  f2 = t.qux;
-  use(f1);
-  use(f2);
-
-  var l = new List<Fun<Null, Null>>();
-  Expect.isTrue(l is List<Fun<Null, int>>);
-  l = new List<Fun<int, int>>();
-  Expect.isTrue(l is List<Fun<Null, num>>);
-
-  Expect.isTrue(((int _) => null) is Fun<int, Null>);
-
-  Null fun(int x) => null;
-  Fun<Null, int> fun2 = fun; // Safe assignment.
-  if (fun2 is Fun<int, Null>) {
-    // If int->Null is *subtype* of Null->int (which it should be),
-    // then type promotion succeeds.
-    // If type promotion succeeds, the static type is int->Null, otherwise
-    // it's Null->int.
-    fun2(42); // Should not give a warning after type promotion.
-    fun2(null).abs(); // //# 03: runtime error
-  }
-}
-
-class T1 {
-  Null foo(int x) => null;
-  int bar(Null x) => null;
-  Null baz(int x) => null;
-  int qux(Null x) => null;
-}
-
-class T2 extends T1 {
-  Null foo(Null x) => null;
-  Null bar(Null x) => null;
-  int baz(int x) => x;
-  int qux(int x) => x;
-}
-
-// Avoid "variable not used" warnings.
-use(x) {
-  return identical(x, x);
-}
diff --git a/tests/language/null_inline_test.dart b/tests/language/null_inline_test.dart
deleted file mode 100644
index 265eff5..0000000
--- a/tests/language/null_inline_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that inlining takes null into account.
-
-import "package:expect/expect.dart";
-
-class A {
-  foo() => this;
-}
-
-var global;
-
-main() {
-  Expect.throws(() => global.foo());
-  global = new A();
-  Expect.equals(global, global.foo());
-}
diff --git a/tests/language/null_is2_test.dart b/tests/language/null_is2_test.dart
deleted file mode 100644
index 1edf139..0000000
--- a/tests/language/null_is2_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class Test<T> {
-  foo(a) => a is T;
-}
-
-main() {
-  Expect.isTrue(new Test<Object>().foo(null));
-  Expect.isTrue(new Test<dynamic>().foo(null));
-  Expect.isFalse(new Test<int>().foo(null));
-  Expect.isFalse(null is List<Object>);
-}
diff --git a/tests/language/null_is_bottom_test.dart b/tests/language/null_is_bottom_test.dart
deleted file mode 100644
index aa337b2..0000000
--- a/tests/language/null_is_bottom_test.dart
+++ /dev/null
@@ -1,143 +0,0 @@
-// 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.
-
-// Test that Null is a subtype of any other type.
-
-import 'package:expect/expect.dart';
-
-class A {}
-
-typedef A ReturnA();
-typedef TakeA(A a);
-typedef Null ReturnNull();
-typedef TakeNull(Null n);
-
-@NoInline()
-testA(A a) {}
-
-@NoInline()
-testListA(List<A> list) {}
-
-@NoInline()
-testIsListA(var a) => a is List<A>;
-
-@NoInline()
-testAsListA(var a) => a as List<A>;
-
-@NoInline()
-testNull(Null n) {}
-
-@NoInline()
-testListNull(List<Null> list) {}
-
-@NoInline()
-testIsListNull(var a) => a is List<Null>;
-
-@NoInline()
-testAsListNull(var a) => a as List<Null>;
-
-@NoInline()
-testReturnA(ReturnA f) {}
-
-@NoInline()
-testIsReturnA(var f) => f is ReturnA;
-
-@NoInline()
-testAsReturnA(var f) => f as ReturnA;
-
-@NoInline()
-testReturnNull(ReturnNull f) {}
-
-@NoInline()
-testIsReturnNull(var f) => f is ReturnNull;
-
-@NoInline()
-testAsReturnNull(var f) => f as ReturnNull;
-
-@NoInline()
-testTakeA(TakeA f) {}
-
-@NoInline()
-testIsTakeA(var f) => f is TakeA;
-
-@NoInline()
-testAsTakeA(var f) => f as TakeA;
-
-@NoInline()
-testTakeNull(TakeNull f) {}
-
-@NoInline()
-testIsTakeNull(var f) => f is TakeNull;
-
-@NoInline()
-testAsTakeNull(var f) => f as TakeNull;
-
-Null returnNullFunc() => null;
-takeNullFunc(Null n) {}
-A returnAFunc() => null;
-takeAFunc(A a) {}
-
-main() {
-  var n = null;
-  var listNull = new List<Null>();
-  var a = new A();
-  var listA = new List<A>();
-
-  testA(n); //                                                         //# 01: ok
-  testA(a); //                                                         //# 02: ok
-  testListA(listNull); //                                              //# 03: ok
-  testListA(listA); //                                                 //# 04: ok
-  Expect.isTrue(testIsListA(listNull)); //                             //# 05: ok
-  Expect.isTrue(testIsListA(listA)); //                                //# 06: ok
-  testAsListA(listNull); //                                            //# 07: ok
-  testAsListA(listA); //                                               //# 08: ok
-
-  testNull(n); //                                                      //# 09: ok
-  testNull(a); //                                      //# 10: dynamic type error
-  testListNull(listNull); //                                           //# 11: ok
-  testListNull(listA); //                              //# 12: dynamic type error
-  Expect.isTrue(testIsListNull(listNull)); //                          //# 13: ok
-  Expect.isFalse(testIsListNull(listA)); //                            //# 14: ok
-  testAsListNull(listNull); //                                         //# 15: ok
-  Expect.throws(() => testAsListNull(listA), (e) => e is CastError); //# 16: ok
-
-  var returnNull = returnNullFunc;
-  var takeNull = takeNullFunc;
-  var returnA = returnAFunc;
-  var takeA = takeAFunc;
-
-  testReturnA(returnA); //                                             //# 17: ok
-  testReturnA(returnNull); //                                          //# 18: ok
-  Expect.isTrue(testIsReturnA(returnA)); //                            //# 19: ok
-  Expect.isTrue(testIsReturnA(returnNull)); //                         //# 20: ok
-  testAsReturnA(returnA); //                                           //# 21: ok
-  testAsReturnA(returnNull); //                                        //# 22: ok
-
-  // This is not valid in strong-mode: ()->A <: ()->Null
-  testReturnNull(returnA); //                                          //# 23: ok
-  testReturnNull(returnNull); //                                       //# 24: ok
-  // This is not valid in strong-mode: ()->A <: ()->Null
-  Expect.isTrue(testIsReturnNull(returnA)); //                         //# 25: ok
-  Expect.isTrue(testIsReturnNull(returnNull)); //                      //# 26: ok
-  // This is not valid in strong-mode: ()->A <: ()->Null
-  testAsReturnNull(returnA); //                                        //# 27: ok
-  testAsReturnNull(returnNull); //                                     //# 28: ok
-
-  testTakeA(takeA); //                                                 //# 29: ok
-  // This is not valid in strong-mode: (Null)-> <: (A)->
-  testTakeA(takeNull); //                                              //# 30: ok
-  Expect.isTrue(testIsTakeA(takeA)); //                                //# 31: ok
-  // This is not valid in strong-mode: (Null)-> <: (A)->
-  Expect.isTrue(testIsTakeA(takeNull)); //                             //# 32: ok
-  testAsTakeA(takeA); //                                               //# 33: ok
-  // This is not valid in strong-mode: (Null)-> <: (A)->
-  testAsTakeA(takeNull); //                                            //# 34: ok
-
-  testTakeNull(takeA); //                                              //# 35: ok
-  testTakeNull(takeNull); //                                           //# 36: ok
-  Expect.isTrue(testIsTakeNull(takeA)); //                             //# 37: ok
-  Expect.isTrue(testIsTakeNull(takeNull)); //                          //# 38: ok
-  testAsTakeNull(takeA); //                                            //# 39: ok
-  testAsTakeNull(takeNull); //                                         //# 40: ok
-}
diff --git a/tests/language/null_is_bottom_type_test.dart b/tests/language/null_is_bottom_type_test.dart
deleted file mode 100644
index 3b92b03..0000000
--- a/tests/language/null_is_bottom_type_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// 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.
-
-// Test that Null is a subtype of any other type.
-
-import 'package:expect/expect.dart';
-
-class A {}
-
-typedef A ReturnA();
-typedef TakeA(A a);
-typedef Null ReturnNull();
-typedef TakeNull(Null n);
-
-testA(A a) {}
-testListA(List<A> list) {}
-testNull(Null n) {}
-testListNull(List<Null> list) {}
-testReturnA(ReturnA f) {}
-testReturnNull(ReturnNull f) {}
-testTakeA(TakeA f) {}
-testTakeNull(TakeNull f) {}
-
-Null returnNull() => null;
-takeNull(Null n) {}
-A returnA() => null;
-takeA(A a) {}
-
-main() {
-  if (false) test(); // Perform static checks only.
-}
-
-test() {
-  Null n;
-  List<Null> listNull;
-  A a = new A();
-  List<A> listA;
-
-  testA(n); //                                                         //# 01: ok
-  testA(a); //                                                         //# 02: ok
-  testListA(listNull); //                                              //# 03: ok
-  testListA(listA); //                                                 //# 04: ok
-
-  testNull(n); //                                                      //# 05: ok
-  testNull(a); //                                                      //# 06: ok
-  testListNull(listNull); //                                           //# 07: ok
-  testListNull(listA); //                                              //# 08: ok
-
-  testReturnA(returnA); //                                             //# 09: ok
-  testReturnA(returnNull); //                                          //# 10: ok
-
-  testReturnNull(returnA); //                                          //# 11: ok
-  testReturnNull(returnNull); //                                       //# 12: ok
-
-  testTakeA(takeA); //                                                 //# 13: ok
-  testTakeA(takeNull); //                                              //# 14: ok
-
-  testTakeNull(takeA); //                                              //# 15: ok
-  testTakeNull(takeNull); //                                           //# 16: ok
-}
diff --git a/tests/language/null_is_test.dart b/tests/language/null_is_test.dart
deleted file mode 100644
index e7a1383..0000000
--- a/tests/language/null_is_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// 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";
-
-main() {
-  Expect.isTrue(null is Object);
-  Expect.isTrue(null is Null);
-  Expect.isFalse(null is int);
-  Expect.isFalse(null is bool);
-  Expect.isFalse(null is num);
-  Expect.isFalse(null is String);
-  Expect.isFalse(null is List);
-  Expect.isFalse(null is Expect);
-
-  test(null);
-
-  Expect.isFalse(1 is Null);
-  Expect.isFalse("1" is Null);
-  Expect.isFalse(true is Null);
-  Expect.isFalse(false is Null);
-  Expect.isFalse(new Object() is Null);
-
-  testNegative(1);
-  testNegative("1");
-  testNegative(true);
-  testNegative(false);
-  testNegative(new Object());
-}
-
-test(n) {
-  // Test where the argument is not a compile-time constant.
-  Expect.isTrue(n is Object);
-  Expect.isTrue(n is Null);
-  Expect.isFalse(n is int);
-  Expect.isFalse(n is bool);
-  Expect.isFalse(n is num);
-  Expect.isFalse(n is String);
-  Expect.isFalse(n is List);
-  Expect.isFalse(n is Expect);
-}
-
-testNegative(n) {
-  Expect.isFalse(n is Null);
-}
diff --git a/tests/language/null_method_test.dart b/tests/language/null_method_test.dart
deleted file mode 100644
index bf5b51f..0000000
--- a/tests/language/null_method_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not compile null methods
-// in the presence of typed selectors.
-
-import "package:expect/expect.dart";
-
-class C {
-  foo(s) {
-    return s.hashCode;
-  }
-}
-
-main() {
-  var c = new C();
-  Expect.isNotNull(c.foo('foo'));
-  Expect.isNotNull(c.foo(null));
-}
diff --git a/tests/language/null_no_such_method_test.dart b/tests/language/null_no_such_method_test.dart
deleted file mode 100644
index a9514cd..0000000
--- a/tests/language/null_no_such_method_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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";
-
-var array = [1];
-
-main() {
-  Expect.throws(() => -null, (e) => e is NoSuchMethodError);
-  // Make sure we have an untyped call to operator-.
-  print(-array[0]);
-}
diff --git a/tests/language/null_test.dart b/tests/language/null_test.dart
deleted file mode 100644
index 946a40c..0000000
--- a/tests/language/null_test.dart
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright (c) 2013, 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.
-// Second dart test program.
-
-// VMOptions=--optimization-counter-threshold=5 --no-background-compilation
-
-import "dart:mirrors";
-import "package:expect/expect.dart";
-
-class BadInherit
-  extends Null //    //# 01: compile-time error
-  implements Null // //# 02: compile-time error
-  extends Object with Null // //# 03: compile-time error
-{}
-
-class EqualsNotCalled {
-  int get hashCode => throw "And don't warn!";
-  bool operator ==(Object other) {
-    throw "SHOULD NOT GET HERE";
-  }
-}
-
-class Generic<T> {
-  bool test(o) => o is T;
-  T cast(o) => o as T;
-  Type get type => T;
-}
-
-class Generic2<T, S> {
-  bool test(o) => new Generic<T>().test(o);
-  T cast(o) => new Generic<T>().cast(o);
-  Type get type => new Generic<T>().type;
-}
-
-// Magic incantation to avoid the compiler recognizing the constant values
-// at compile time. If the result is computed at compile time, the dynamic code
-// will not be tested.
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-void main() {
-  for (int i = 0; i < 10; i++) {
-    test();
-  }
-}
-
-void test() {
-  new BadInherit(); // Make sure class is referenced.
-
-  int foo(var obj) {
-    Expect.equals(null, obj);
-  }
-
-  bool compareToNull(var value) {
-    return null == value;
-  }
-
-  bool compareWithNull(var value) {
-    return value == null;
-  }
-
-  var val = 1;
-  var obj = confuse(null); // Null value that isn't known at compile-time.
-  Expect.isTrue(identical(obj, null), "identical");
-
-  Expect.isTrue(null == null);
-  Expect.isTrue(null == obj);
-  Expect.isTrue(obj == null);
-  Expect.isTrue(obj == obj);
-
-  // Using  == null  or  null ==  will not call any equality method.
-  Expect.isFalse(new EqualsNotCalled() == null);
-  Expect.isFalse(null == new EqualsNotCalled());
-  Expect.isFalse(new EqualsNotCalled() == obj);
-  Expect.isFalse(obj == new EqualsNotCalled());
-
-  Expect.isFalse(null == false);
-  Expect.isFalse(null == 0);
-  Expect.isFalse(null == "");
-  Expect.isFalse(null == []);
-  Expect.isFalse(null == 0.0);
-  Expect.isFalse(null == -0.0);
-  Expect.isFalse(null == double.NAN);
-
-  Expect.isFalse(obj == false);
-  Expect.isFalse(obj == 0);
-  Expect.isFalse(obj == "");
-  Expect.isFalse(obj == []);
-  Expect.isFalse(obj == 0.0);
-  Expect.isFalse(obj == -0.0);
-  Expect.isFalse(obj == double.NAN);
-
-  // Explicit constant expressions.
-  const t1 = null == null;
-  const t2 = null == 0;
-  const t3 = false == null;
-  Expect.isTrue(t1);
-  Expect.isFalse(t2);
-  Expect.isFalse(t3);
-
-  foo(obj);
-  foo(null);
-  if (obj != null) {
-    foo(null);
-  } else {
-    foo(obj);
-  }
-
-  // Test "is" operator.
-  Expect.isTrue(null is Null);
-  Expect.isTrue(obj is Null);
-  Expect.isTrue(null is Object);
-  Expect.isTrue(obj is Object);
-  Expect.isTrue(null is dynamic);
-  Expect.isTrue(obj is dynamic);
-  Expect.isFalse(null is String);
-  Expect.isFalse(obj is String);
-  Expect.isFalse(0 is Null); // It's only assignable.
-  Expect.isFalse(null is! Null);
-  Expect.isFalse(obj is! Null);
-  Expect.isFalse(null is! Object);
-  Expect.isFalse(obj is! Object);
-  Expect.isFalse(null is! dynamic);
-  Expect.isFalse(obj is! dynamic);
-  Expect.isTrue(null is! String);
-  Expect.isTrue(obj is! String);
-  Expect.isTrue(0 is! Null); // It's only assignable.
-
-  // Test "is" operator with generic type variable.
-  Expect.isTrue(new Generic<Null>().test(null));
-  Expect.isFalse(new Generic<Null>().test(42));
-  Expect.isTrue(new Generic2<Null, int>().test(null));
-  Expect.isFalse(new Generic2<Null, int>().test(42));
-
-  // Test cast, "as", operator.
-  Expect.equals(null, null as Null);
-  Expect.equals(null, null as Object);
-  Expect.equals(null, null as int);
-  Expect.throws(() => 42 as Null, (e) => e is CastError);
-  Expect.equals(null, new Generic<Null>().cast(null));
-  Expect.equals(null, new Generic<Object>().cast(null));
-  Expect.equals(null, new Generic<int>().cast(null));
-
-  Expect.equals(null, obj as Null);
-  Expect.equals(null, obj as Object);
-  Expect.equals(null, obj as int);
-  Expect.equals(null, new Generic<Null>().cast(obj));
-  Expect.equals(null, new Generic<Object>().cast(obj));
-  Expect.equals(null, new Generic<int>().cast(obj));
-
-  Expect.equals("null", null.toString());
-  Expect.equals("null", "${null}");
-  Expect.equals("null", obj.toString());
-  Expect.equals("null", "${obj}");
-
-  Expect.equals(Null, null.runtimeType);
-  Expect.equals(Null, obj.runtimeType);
-  Expect.equals(Null, new Generic<Null>().type);
-  Expect.equals(Null, new Generic2<Null, int>().type);
-
-  Expect.isFalse(compareToNull(val));
-  Expect.isTrue(compareToNull(obj));
-  Expect.isFalse(compareWithNull(val));
-  Expect.isTrue(compareWithNull(obj));
-
-  ClassMirror cm = reflectClass(Null);
-
-  InstanceMirror im1 = reflect(null);
-  Expect.equals(cm, im1.type);
-  Expect.isTrue(im1.invoke(const Symbol("=="), [null]).reflectee);
-  Expect.isFalse(im1.invoke(const Symbol("=="), [42]).reflectee);
-
-  InstanceMirror im2 = reflect(obj);
-  Expect.equals(cm, im2.type);
-  Expect.isTrue(im2.invoke(const Symbol("=="), [null]).reflectee);
-  Expect.isFalse(im2.invoke(const Symbol("=="), [42]).reflectee);
-
-  // Method/value extraction. The runtimeType was checked above, and operator==
-  // cannot be extracted.
-  // Currently fails in VM.
-  Expect.equals(null.toString, obj.toString);
-  Expect.equals(null.noSuchMethod, obj.noSuchMethod);
-  Expect.equals(null.hashCode, obj.hashCode);
-
-  var toString = null.toString;
-  Expect.equals("null", toString());
-  Expect.equals("null", Function.apply(toString, []));
-
-  Expect.throws(() => obj.notDeclared());
-  var noSuchMethod = null.noSuchMethod;
-  // Assign to "var" to prevent warning.
-  var capture = new CaptureInvocationMirror();
-  var mirror = capture.notDeclared();
-  Expect.throws(() => noSuchMethod(mirror));
-  Expect.throws(() => Function.apply(noSuchMethod, [mirror]));
-}
-
-class CaptureInvocationMirror {
-  noSuchMethod(mirror) => mirror;
-}
diff --git a/tests/language/null_to_string2_test.dart b/tests/language/null_to_string2_test.dart
deleted file mode 100644
index a56e705..0000000
--- a/tests/language/null_to_string2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-// Test correct handling of NULL object in invocation and implicit closures.
-
-import "package:expect/expect.dart";
-
-class A {}
-
-A foo() => null;
-
-main() {
-  A nullObj = foo();
-  var x = nullObj.toString();
-  Expect.isTrue(x is String);
-  var y = nullObj.toString;
-  Expect.isNotNull(y);
-}
diff --git a/tests/language/null_to_string_test.dart b/tests/language/null_to_string_test.dart
deleted file mode 100644
index 08bb56a..0000000
--- a/tests/language/null_to_string_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test correct handling of NULL object in invocation and implicit closures.
-
-import "package:expect/expect.dart";
-
-main() {
-  var nullObj = null;
-  var x = nullObj.toString();
-  Expect.isTrue(x is String);
-  var y = nullObj.toString;
-  Expect.isNotNull(y);
-}
diff --git a/tests/language/nullaware_opt_test.dart b/tests/language/nullaware_opt_test.dart
deleted file mode 100644
index df142c8..0000000
--- a/tests/language/nullaware_opt_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright (c) 2015, 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=--optimization_counter_threshold=5 --no-background_compilation
-//
-// Basic null-aware operator test that invokes the optimizing compiler.
-
-import "package:expect/expect.dart";
-
-class C {
-  C(this.f);
-  var f;
-  m(a) => a;
-}
-
-bomb() {
-  Expect.fail('Should not be executed');
-  return 100;
-}
-
-getNull() => null;
-
-test() {
-  var c;
-  var d = new C(5);
-  Expect.equals(null, c?.m(bomb()));
-  Expect.equals(null, getNull()?.anything(bomb()));
-  Expect.equals(1, d?.m(1));
-
-  Expect.equals(1, new C(1)?.f);
-  Expect.equals(null, c?.v);
-  Expect.equals(10, c ?? 10);
-  Expect.equals(d, d ?? bomb());
-
-  var e;
-  // The assignment to e is not executed since d != null.
-  d ??= e ??= new C(100);
-  Expect.equals(null, e);
-  e ??= new C(100);
-  Expect.equals(100, e?.f);
-  e?.f ??= 200;
-  Expect.equals(100, e?.f);
-
-  e.f = null;
-  e?.f ??= 200;
-  Expect.equals(200, e?.f);
-
-  c?.f ??= 400;
-  Expect.equals(null, c?.f);
-  Expect.equals(null, c?.f++);
-  e?.f++;
-  Expect.equals(201, e.f);
-
-  var x = 5 ?? bomb();
-  Expect.equals(5, x);
-
-  var y;
-  x = y ?? 1;
-  Expect.equals(1, x);
-  Expect.equals(null, y);
-}
-
-// Check that instructions without result do not crash.
-test2() {
-  var c;
-  c?.v;
-  c?.m(bomb());
-}
-
-main() {
-  for (int i = 0; i < 10; i++) {
-    test();
-    test2();
-  }
-}
diff --git a/tests/language/number_constant_folding1_test.dart b/tests/language/number_constant_folding1_test.dart
deleted file mode 100644
index 8ee351c..0000000
--- a/tests/language/number_constant_folding1_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// On frogsh constant folded hex literals of large magnitude were truncated on
-// constant folding - Issue 636 is 'fixed', remaining concerns at Issue 638.
-
-highDigitTruncationTest() {
-  Expect.equals(0x12345678A, 0x123456789 + 1);
-
-  // in 32 bits this is 0xF0000000 which is negative.
-  Expect.isTrue(0x1f0000000 > 0);
-
-  Expect.equals(0xf0, 0xf * 16);
-  Expect.equals(0xff0, 0xff * 16);
-  Expect.equals(0xfff0, 0xfff * 16);
-  Expect.equals(0xffff0, 0xffff * 16);
-  Expect.equals(0xfffff0, 0xfffff * 16);
-  Expect.equals(0xffffff0, 0xffffff * 16);
-  Expect.equals(0xfffffff0, 0xfffffff * 16);
-  Expect.equals(0xffffffff0, 0xffffffff * 16);
-  Expect.equals(0xfffffffff0, 0xfffffffff * 16);
-  Expect.equals(0xffffffffff0, 0xffffffffff * 16);
-}
-
-main() {
-  highDigitTruncationTest();
-}
diff --git a/tests/language/number_identifier_test.dart b/tests/language/number_identifier_test.dart
deleted file mode 100644
index 20289a2..0000000
--- a/tests/language/number_identifier_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  // Integer literals.
-  Expect.isTrue(2 is int);
-  Expect.equals(2, 2 as int);
-  Expect.isTrue(-2 is int);
-  Expect.equals(-2, -2 as int);
-  Expect.isTrue(0x10 is int);
-  Expect.isTrue(-0x10 is int);
-  // "a" will be part of hex literal, the following "s" is an error.
-  0x10as int; // //# 01: syntax error
-  0x; //         //# 04: syntax error
-
-  // Double literals.
-  Expect.isTrue(2.0 is double);
-  Expect.equals(2.0, 2.0 as double);
-  Expect.isTrue(-2.0 is double);
-  Expect.equals(-2.0, -2.0 as double);
-  Expect.isTrue(.2 is double);
-  Expect.equals(0.2, .2 as double);
-  Expect.isTrue(1e2 is double);
-  Expect.equals(1e2, 1e2 as double);
-  Expect.isTrue(1e-2 is double);
-  Expect.equals(1e-2, 1e-2 as double);
-  Expect.isTrue(1e+2 is double);
-  Expect.equals(1e+2, 1e+2 as double);
-  Expect.throws(() => 1.e+2, //                      //# 05: static type warning
-                (e) => e is NoSuchMethodError); //   //# 05: continued
-  1d; // //# 06: syntax error
-  1D; // //# 07: syntax error
-  Expect.throws(() => 1.d+2, //                      //# 08: ok
-                (e) => e is NoSuchMethodError); //   //# 08: continued
-  Expect.throws(() => 1.D+2, //                      //# 09: ok
-                (e) => e is NoSuchMethodError); //   //# 09: continued
-  1.1d; // //# 10: syntax error
-  1.1D; // //# 11: syntax error
-  1e; // //# 02: syntax error
-  1x; // //# 03: syntax error
-}
diff --git a/tests/language/number_identity2_test.dart b/tests/language/number_identity2_test.dart
deleted file mode 100644
index 2bd3841..0000000
--- a/tests/language/number_identity2_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-// Dart test program for testing params.
-//
-// Contains test that is failing on dart2js. Merge this test with
-// 'number_identity_test.dart' once fixed.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-import 'dart:typed_data';
-
-double uint64toDouble(int i) {
-  var buffer = new Uint8List(8).buffer;
-  var bdata = new ByteData.view(buffer);
-  bdata.setUint64(0, i);
-  return bdata.getFloat64(0);
-}
-
-testNumberIdentity() {
-  var a = double.NAN;
-  var b = a + 0.0;
-  Expect.isTrue(identical(a, b));
-
-  a = uint64toDouble((1 << 64) - 1);
-  b = uint64toDouble((1 << 64) - 2);
-  Expect.isFalse(identical(a, b));
-
-  a = 0.0 / 0.0;
-  b = 1.0 / 0.0;
-  Expect.isFalse(identical(a, b));
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    testNumberIdentity();
-  }
-}
diff --git a/tests/language/number_identity_test.dart b/tests/language/number_identity_test.dart
deleted file mode 100644
index 8898bb1..0000000
--- a/tests/language/number_identity_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// 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.
-// Dart test program for testing params.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  for (int i = 0; i < 20; i++) testNumberIdentity();
-}
-
-testNumberIdentity() {
-  const int smi = 8;
-  const int mint = 9223372036854775806;
-  const int bigint = 22107138293752210713829375;
-  const double dbl = 8.0;
-
-  var a = smi;
-  var b = a + 0;
-  Expect.isTrue(identical(a, b));
-  Expect.isFalse(identical(b, mint));
-  Expect.isFalse(identical(b, bigint));
-
-  a = mint;
-  b = a + 0;
-  Expect.isTrue(identical(a, b));
-  Expect.isFalse(identical(b, smi));
-  Expect.isFalse(identical(b, bigint));
-  Expect.isFalse(identical(b, dbl));
-
-  a = bigint;
-  b = a + 0;
-  Expect.isTrue(identical(a, b));
-  Expect.isFalse(identical(b, smi));
-  Expect.isFalse(identical(b, mint));
-  Expect.isFalse(identical(b, dbl));
-
-  a = dbl;
-  b = a + 0.0;
-  Expect.isTrue(identical(a, b));
-  Expect.isFalse(identical(b, mint));
-  Expect.isFalse(identical(b, bigint));
-}
diff --git a/tests/language/number_syntax_test.dart b/tests/language/number_syntax_test.dart
deleted file mode 100644
index 94e6890..0000000
--- a/tests/language/number_syntax_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class NumberSyntaxTest {
-  static void testMain() {
-    testShortDoubleSyntax();
-    testDotSelectorSyntax();
-  }
-
-  static void testShortDoubleSyntax() {
-    Expect.equals(0.0, .0);
-    Expect.equals(0.5, .5);
-    Expect.equals(0.1234, .1234);
-  }
-
-  static void testDotSelectorSyntax() {
-    // Integers.
-    Expect.equals('0', 0.toString());
-    Expect.equals('1', 1.toString());
-    Expect.equals('123', 123.toString());
-
-    Expect.equals('0', 0.toString());
-    Expect.equals('1', 1.toString());
-    Expect.equals('123', 123.toString());
-
-    Expect.equals('0', 0.toString());
-    Expect.equals('1', 1.toString());
-    Expect.equals('123', 123.toString());
-
-    // Doubles.
-    Expect.equals((0.0).toString(), 0.0.toString());
-    Expect.equals((0.1).toString(), .1.toString());
-    Expect.equals((1.1).toString(), 1.1.toString());
-    Expect.equals((123.4).toString(), 123.4.toString());
-
-    Expect.equals((0.0).toString(), 0.0.toString());
-    Expect.equals((0.1).toString(), .1.toString());
-    Expect.equals((1.1).toString(), 1.1.toString());
-    Expect.equals((123.4).toString(), 123.4.toString());
-
-    Expect.equals((0.0).toString(), 0.0.toString());
-    Expect.equals((0.1).toString(), .1.toString());
-    Expect.equals((1.1).toString(), 1.1.toString());
-    Expect.equals((123.4).toString(), 123.4.toString());
-
-    // Exponent notation.
-    Expect.equals((0e0).toString(), 0e0.toString());
-    Expect.equals((1e+1).toString(), 1e+1.toString());
-    Expect.equals((2.1e-34).toString(), 2.1e-34.toString());
-  }
-}
-
-main() {
-  NumberSyntaxTest.testMain();
-}
diff --git a/tests/language/numbers_test.dart b/tests/language/numbers_test.dart
deleted file mode 100644
index e7c8a75..0000000
--- a/tests/language/numbers_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test number types.
-
-library NumbersTest.dart;
-
-import "package:expect/expect.dart";
-
-class NumbersTest {
-  static double testMain() {
-    var one = 1;
-    Expect.equals(true, one is Object);
-    Expect.equals(true, one is num);
-    Expect.equals(true, one is int);
-    Expect.equals(false, one is double);
-
-    var two = 2.0;
-    Expect.equals(true, two is Object);
-    Expect.equals(true, two is num);
-    Expect.equals(false, two is int);
-    Expect.equals(true, two is double);
-
-    var result = one + two;
-    Expect.equals(true, result is Object);
-    Expect.equals(true, result is num);
-    Expect.equals(false, result is int);
-    Expect.equals(true, result is double);
-
-    Expect.equals(3.0, result);
-    return result;
-  }
-}
-
-main() {
-  NumbersTest.testMain();
-}
diff --git a/tests/language/on_catch_malformed_type_test.dart b/tests/language/on_catch_malformed_type_test.dart
deleted file mode 100644
index c4d17e82..0000000
--- a/tests/language/on_catch_malformed_type_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Check that malformed types in on-catch are handled correctly, that is,
-// throws a type error in both production and checked mode.
-
-import 'package:expect/expect.dart';
-
-catchUnresolvedBefore() {
-  try {
-    throw "foo";
-    Expect.fail("This code shouldn't be executed");
-  } on String catch (oks) {
-    // This is tested before the catch block below.
-  } on Unavailable catch (ex) {
-    Expect.fail("This code shouldn't be executed");
-  }
-}
-
-catchUnresolvedAfter() {
-  Expect.throws(() {
-    try {
-      throw "foo";
-      Expect.fail("This code shouldn't be executed");
-    } on Unavailable catch (ex) {
-      // This is tested before the catch block below.
-      // In both production and checked mode the test causes a type error.
-    } on String catch (oks) {
-      Expect.fail("This code shouldn't be executed");
-    }
-  }, (e) => e is TypeError);
-}
-
-main() {
-  catchUnresolvedBefore();
-  catchUnresolvedAfter();
-}
diff --git a/tests/language/operations_on_non_num_operand_test.dart b/tests/language/operations_on_non_num_operand_test.dart
deleted file mode 100644
index 7a5060f..0000000
--- a/tests/language/operations_on_non_num_operand_test.dart
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright (c) 2015, 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.
-
-/// Regression test for dart2js that used to miscompile boolean and operations
-/// if one of the operands was an int and the other was not (issue 22427).
-///
-/// Extended to all operations as there is a risk of similar bugs with other
-/// operators, e.g. `a % 2` _looks_ like it might be 0 or 1.
-
-import "package:expect/expect.dart";
-
-@AssumeDynamic()
-@NoInline()
-confuse(x) => x;
-
-class Thing1 {
-  operator &(b) => this;
-  operator |(b) => this;
-  operator ^(b) => this;
-  operator <<(b) => this;
-  operator >>(b) => this;
-
-  operator +(b) => this;
-  operator -(b) => this;
-  operator *(b) => this;
-  operator /(b) => this;
-  operator ~/(b) => this;
-  operator %(b) => this;
-  remainder(b) => this;
-
-  operator <(b) => this;
-  operator <=(b) => this;
-  operator >(b) => this;
-  operator >=(b) => this;
-}
-
-class Thing2 {
-  @NoInline()
-  operator &(b) => this;
-  @NoInline()
-  operator |(b) => this;
-  @NoInline()
-  operator ^(b) => this;
-  @NoInline()
-  operator <<(b) => this;
-  @NoInline()
-  operator >>(b) => this;
-
-  @NoInline()
-  operator +(b) => this;
-  @NoInline()
-  operator -(b) => this;
-  @NoInline()
-  operator *(b) => this;
-  @NoInline()
-  operator /(b) => this;
-  @NoInline()
-  operator ~/(b) => this;
-  @NoInline()
-  operator %(b) => this;
-  @NoInline()
-  remainder(b) => this;
-
-  @NoInline()
-  operator <(b) => this;
-  @NoInline()
-  operator <=(b) => this;
-  @NoInline()
-  operator >(b) => this;
-  @NoInline()
-  operator >=(b) => this;
-}
-
-confused() {
-  var a = new Thing1();
-  Expect.equals(a, confuse(a) & 5 & 2);
-  Expect.equals(a, confuse(a) | 5 | 2);
-  Expect.equals(a, confuse(a) ^ 5 ^ 2);
-  Expect.equals(a, confuse(a) << 5 << 2);
-  Expect.equals(a, confuse(a) >> 5 >> 2);
-
-  Expect.equals(a, confuse(a) + 5 + 2);
-  Expect.equals(a, confuse(a) - 5 - 2);
-  Expect.equals(a, confuse(a) * 5 * 2);
-  Expect.equals(a, confuse(a) / 5 / 2);
-  Expect.equals(a, confuse(a) % 5 % 2);
-  Expect.equals(a, confuse(a) ~/ 5 ~/ 2);
-  Expect.equals(a, confuse(a).remainder(5).remainder(2));
-
-  Expect.equals(a, (confuse(a) < 5) < 2);
-  Expect.equals(a, (confuse(a) <= 5) <= 2);
-  Expect.equals(a, (confuse(a) > 5) > 2);
-  Expect.equals(a, (confuse(a) >= 5) >= 2);
-}
-
-direct1() {
-  var a = new Thing1();
-  Expect.equals(a, a & 5 & 2);
-  Expect.equals(a, a | 5 | 2);
-  Expect.equals(a, a ^ 5 ^ 2);
-  Expect.equals(a, a << 5 << 2);
-  Expect.equals(a, a >> 5 >> 2);
-
-  Expect.equals(a, a + 5 + 2);
-  Expect.equals(a, a - 5 - 2);
-  Expect.equals(a, a * 5 * 2);
-  Expect.equals(a, a / 5 / 2);
-  Expect.equals(a, a % 5 % 2);
-  Expect.equals(a, a ~/ 5 ~/ 2);
-  Expect.equals(a, a.remainder(5).remainder(2));
-
-  Expect.equals(a, (a < 5) < 2);
-  Expect.equals(a, (a <= 5) <= 2);
-  Expect.equals(a, (a > 5) > 2);
-  Expect.equals(a, (a >= 5) >= 2);
-}
-
-direct2() {
-  var a = new Thing2();
-  Expect.equals(a, a & 5 & 2);
-  Expect.equals(a, a | 5 | 2);
-  Expect.equals(a, a ^ 5 ^ 2);
-  Expect.equals(a, a << 5 << 2);
-  Expect.equals(a, a >> 5 >> 2);
-
-  Expect.equals(a, a + 5 + 2);
-  Expect.equals(a, a - 5 - 2);
-  Expect.equals(a, a * 5 * 2);
-  Expect.equals(a, a / 5 / 2);
-  Expect.equals(a, a % 5 % 2);
-  Expect.equals(a, a ~/ 5 ~/ 2);
-  Expect.equals(a, a.remainder(5).remainder(2));
-
-  Expect.equals(a, (a < 5) < 2);
-  Expect.equals(a, (a <= 5) <= 2);
-  Expect.equals(a, (a > 5) > 2);
-  Expect.equals(a, (a >= 5) >= 2);
-}
-
-main() {
-  confused();
-  direct1();
-  direct2();
-}
diff --git a/tests/language/operator1_negative_test.dart b/tests/language/operator1_negative_test.dart
deleted file mode 100644
index 7f9c24d..0000000
--- a/tests/language/operator1_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Operator dart test program (operator functions cannot be static).
-
-class Helper {
-  int i;
-  Helper(int val) : i = val { }
-  static operator +(int index) {
-    return index;
-  }
-}
-
-class Operator1NegativeTest {
-  static testMain() {
-    Helper obj = new Helper(10);
-  }
-}
-
-main() {
-  Operator1NegativeTest.testMain();
-}
diff --git a/tests/language/operator2_negative_test.dart b/tests/language/operator2_negative_test.dart
deleted file mode 100644
index 5ee7096..0000000
--- a/tests/language/operator2_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Operator dart test program (=== cannot have an operator function).
-
-class Helper {
-  int i;
-  Helper(int val) : i = val { }
-  operator ===(int index) {
-    return index;
-  }
-}
-
-class Operator2NegativeTest {
-  static testMain() {
-    Helper obj = new Helper(10);
-  }
-}
-
-main() {
-  Operator2NegativeTest.testMain();
-}
diff --git a/tests/language/operator2_test.dart b/tests/language/operator2_test.dart
deleted file mode 100644
index 99c770b..0000000
--- a/tests/language/operator2_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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.
-// Operator dart test program.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  int i;
-  Helper(int val) : i = val {}
-  operator [](int index) {
-    return i + index;
-  }
-
-  void operator []=(int index, int val) {
-    i = val;
-  }
-}
-
-class OperatorTest {
-  static testMain() {
-    Helper obj = new Helper(10);
-    Expect.equals(10, obj.i);
-    obj[10] = 20;
-    Expect.equals(30, obj[10]);
-  }
-}
-
-main() {
-  OperatorTest.testMain();
-}
diff --git a/tests/language/operator3_test.dart b/tests/language/operator3_test.dart
deleted file mode 100644
index 98e9571..0000000
--- a/tests/language/operator3_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  operator -() => this;
-  toString() => "5";
-  abs() => "correct";
-}
-
-// This triggered a bug in Dart2Js: the speculative type optimization assigned
-// type "number" to 'a' and then to '-a'. In the bailout version the type for
-// 'a' was removed, but the type for '-a' was kept.
-foo(a) => -(-a);
-
-main() {
-  Expect.equals("correct", foo(new A()).abs());
-}
diff --git a/tests/language/operator4_test.dart b/tests/language/operator4_test.dart
deleted file mode 100644
index e203a16..0000000
--- a/tests/language/operator4_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class A {
-  operator <(other) => 1;
-}
-
-// This triggered a bug in Dart2Js: relational operators were not correctly
-// boolified.
-foo(a) {
-  try {
-    if (a < a) {
-      return "bad";
-    } else {
-      return 499;
-    }
-  } on TypeError catch (e) {
-    return 499;
-  }
-}
-
-main() {
-  Expect.equals(499, foo(new A()));
-}
diff --git a/tests/language/operator5_test.dart b/tests/language/operator5_test.dart
deleted file mode 100644
index 8c2f800..0000000
--- a/tests/language/operator5_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// 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";
-
-class A {
-  operator ==(other) => 1;
-  operator <(other) => null;
-  operator <=(other) => 499;
-  operator >(other) => "foo";
-  operator >=(other) => 42;
-}
-
-// This triggered a bug in Dart2Js: equality operator was always boolified.
-equals(a) {
-  try {
-    Expect.equals(1, a == a);
-  } on TypeError catch (e) {
-    // In checked mode the test doesn't do anything.
-  }
-}
-
-less(a) {
-  try {
-    Expect.equals(null, a < a);
-  } on TypeError catch (e) {}
-}
-
-lessEqual(a) {
-  try {
-    Expect.equals(499, a <= a);
-  } on TypeError catch (e) {}
-}
-
-greater(a) {
-  try {
-    Expect.equals("foo", a > a);
-  } on TypeError catch (e) {}
-}
-
-greaterEqual(a) {
-  try {
-    Expect.equals(42, a >= a);
-  } on TypeError catch (e) {}
-}
-
-main() {
-  var a = new A();
-  equals(a);
-  less(a);
-  lessEqual(a);
-  greater(a);
-  greaterEqual(a);
-}
diff --git a/tests/language/operator6_test.dart b/tests/language/operator6_test.dart
deleted file mode 100644
index 87fae7d..0000000
--- a/tests/language/operator6_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class OperatorTest {
-  static int i1, i2;
-
-  OperatorTest() {}
-
-  static testMain() {
-    var op1 = new Operator(1);
-    var op2 = new Operator(2);
-    Expect.equals(~1, ~op1);
-  }
-}
-
-class Operator {
-  int value;
-
-  Operator(int i) {
-    value = i;
-  }
-
-  operator ~() {
-    return ~value;
-  }
-}
-
-main() {
-  OperatorTest.testMain();
-}
diff --git a/tests/language/operator_equals_test.dart b/tests/language/operator_equals_test.dart
deleted file mode 100644
index 994f845..0000000
--- a/tests/language/operator_equals_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to infer [:super == null:]
-// always returns an int.
-
-import 'package:expect/expect.dart';
-
-class A {
-  operator ==(other) => 42;
-}
-
-class B extends A {
-  foo() => (super == null) + 4;
-}
-
-main() {
-  Expect.throws(() => new B().foo(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/operator_index_evaluation_order_test.dart b/tests/language/operator_index_evaluation_order_test.dart
deleted file mode 100644
index 023d027..0000000
--- a/tests/language/operator_index_evaluation_order_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// 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";
-
-class B {
-  int value;
-  List trace;
-  B(this.trace) : value = 100;
-  operator [](index) {
-    trace.add(-3);
-    trace.add(index);
-    trace.add(this.value);
-    this.value = this.value + 1;
-    return this;
-  }
-
-  operator []=(index, value) {
-    trace.add(-5);
-    trace.add(index);
-    trace.add(value.value);
-    this.value = this.value + 1;
-  }
-
-  operator +(int value) {
-    trace.add(-4);
-    trace.add(this.value);
-    trace.add(value);
-    this.value = this.value + 1;
-    return this;
-  }
-}
-
-B getB(trace) {
-  trace.add(-1);
-  return new B(trace);
-}
-
-int getIndex(trace) {
-  trace.add(-2);
-  return 42;
-}
-
-main() {
-  List trace = new List();
-  getB(trace)[getIndex(trace)] += 37;
-
-  Expect.listEquals([-1, -2, -3, 42, 100, -4, 101, 37, -5, 42, 102], trace);
-}
diff --git a/tests/language/operator_negate_and_method_negate_test.dart b/tests/language/operator_negate_and_method_negate_test.dart
deleted file mode 100644
index 98a0063..0000000
--- a/tests/language/operator_negate_and_method_negate_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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";
-
-// This checks that it is possible to have a method named negate as
-// well as unary- operator.
-
-class Foo {
-  operator -() => 42;
-  negate() => 87;
-}
-
-main() {
-  Expect.equals(42, -new Foo());
-  Expect.equals(87, new Foo().negate());
-}
diff --git a/tests/language/operator_test.dart b/tests/language/operator_test.dart
deleted file mode 100644
index bd240e1..0000000
--- a/tests/language/operator_test.dart
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class OperatorTest {
-  static int i1, i2;
-
-  OperatorTest() {}
-
-  static testMain() {
-    var op1 = new Operator(1);
-    var op2 = new Operator(2);
-    Expect.equals(3, op1 + op2);
-    Expect.equals(-1, op1 - op2);
-    Expect.equals(0.5, op1 / op2);
-    Expect.equals(0, op1 ~/ op2);
-    Expect.equals(2, op1 * op2);
-    Expect.equals(1, op1 % op2);
-    Expect.equals(true, !(op1 == op2));
-    Expect.equals(true, op1 < op2);
-    Expect.equals(true, !(op1 > op2));
-    Expect.equals(true, op1 <= op2);
-    Expect.equals(true, !(op1 >= op2));
-    Expect.equals(3, (op1 | op2));
-    Expect.equals(3, (op1 ^ op2));
-    Expect.equals(0, (op1 & op2));
-    Expect.equals(4, (op1 << op2));
-    Expect.equals(0, (op1 >> op2));
-    Expect.equals(-1, -op1);
-
-    op1.value += op2.value;
-    Expect.equals(3, op1.value);
-
-    op2.value += (op2.value += op2.value);
-    Expect.equals(6, op2.value);
-
-    op2.value -= (op2.value -= op2.value);
-    Expect.equals(6, op2.value);
-
-    op1.value = op2.value = 42;
-    Expect.equals(42, op1.value);
-    Expect.equals(42, op2.value);
-
-    i1 = i2 = 42;
-    Expect.equals(42, i1);
-    Expect.equals(42, i2);
-    i1 += 7;
-    Expect.equals(49, i1);
-    i1 += (i2 = 17);
-    Expect.equals(66, i1);
-    Expect.equals(17, i2);
-
-    i1 += i2 += 3;
-    Expect.equals(86, i1);
-    Expect.equals(20, i2);
-  }
-}
-
-class Operator {
-  int value;
-
-  Operator(int i) {
-    value = i;
-  }
-
-  operator +(Operator other) {
-    return value + other.value;
-  }
-
-  operator -(Operator other) {
-    return value - other.value;
-  }
-
-  operator /(Operator other) {
-    return value / other.value;
-  }
-
-  operator *(Operator other) {
-    return value * other.value;
-  }
-
-  operator %(Operator other) {
-    return value % other.value;
-  }
-
-  operator ==(Operator other) {
-    return value == other.value;
-  }
-
-  operator <(Operator other) {
-    return value < other.value;
-  }
-
-  operator >(Operator other) {
-    return value > other.value;
-  }
-
-  operator <=(Operator other) {
-    return value <= other.value;
-  }
-
-  operator >=(Operator other) {
-    return value >= other.value;
-  }
-
-  operator |(Operator other) {
-    return value | other.value;
-  }
-
-  operator ^(Operator other) {
-    return value ^ other.value;
-  }
-
-  operator &(Operator other) {
-    return value & other.value;
-  }
-
-  operator <<(Operator other) {
-    return value << other.value;
-  }
-
-  operator >>(Operator other) {
-    return value >> other.value;
-  }
-
-  operator ~/(Operator other) {
-    return value ~/ other.value;
-  }
-
-  operator -() {
-    return -value;
-  }
-}
-
-main() {
-  OperatorTest.testMain();
-}
diff --git a/tests/language/optimize_redundant_array_load_test.dart b/tests/language/optimize_redundant_array_load_test.dart
deleted file mode 100644
index ed3a26d..0000000
--- a/tests/language/optimize_redundant_array_load_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test optimization of redundant array loads.
-
-var A = [0, 2, 3];
-
-test1(a) {
-  int x = a[0];
-  int y = a[1];
-  ++a[0];
-  return a[0] + y + a[2];
-}
-
-int test2(a) {
-  return a[2] + a[2];
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    test1(A);
-    test2(A);
-  }
-  Expect.equals(26, test1(A));
-  Expect.equals(6, test2(A));
-}
diff --git a/tests/language/optimized_constant_array_string_access_test.dart b/tests/language/optimized_constant_array_string_access_test.dart
deleted file mode 100644
index f50561e..0000000
--- a/tests/language/optimized_constant_array_string_access_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test optimized constant string and constant array access.
-
-int testConstantStringAndIndexCodeUnitAt() {
-  int test(b) {
-    if (b) return "hest".codeUnitAt(400);
-    return "hest".codeUnitAt(2);
-  }
-
-  Expect.throws(() => test(true));
-  for (int i = 0; i < 20; i++) test(false);
-  Expect.throws(() => test(true));
-}
-
-int testConstantArrayAndIndexAt() {
-  int testPositive(b) {
-    var a = const [1, 2, 3, 4];
-    if (b) return a[400];
-    return a[2];
-  }
-
-  int testNegative(b) {
-    var a = const [1, 2, 3, 4];
-    if (b) return a[-1];
-    return a[2];
-  }
-
-  Expect.throws(() => testPositive(true));
-  for (int i = 0; i < 20; i++) testPositive(false);
-  Expect.throws(() => testPositive(true));
-
-  Expect.throws(() => testNegative(true));
-  for (int i = 0; i < 20; i++) testNegative(false);
-  Expect.throws(() => testNegative(true));
-}
-
-foo(a) {
-  if (a == 1) {
-    return 2;
-  }
-  var aa = const [1, 2];
-  return aa[2.3];
-}
-
-int testNonSmiIndex() {
-  for (int i = 0; i < 20; i++) {
-    foo(1);
-  }
-  Expect.throws(() => foo(2));
-}
-
-main() {
-  testConstantStringAndIndexCodeUnitAt();
-  testConstantArrayAndIndexAt();
-  testNonSmiIndex();
-}
diff --git a/tests/language/optimized_hoisting_checked_mode_assert_test.dart b/tests/language/optimized_hoisting_checked_mode_assert_test.dart
deleted file mode 100644
index 27eabb8..0000000
--- a/tests/language/optimized_hoisting_checked_mode_assert_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test checked mode assertions inside loops.
-
-int foo(x, n) {
-  double z = 0.0;
-  for (var i = 0; i < n; i++) {
-    double z = x;
-  }
-  return 0;
-}
-
-main() {
-  for (var i = 0; i < 20; i++) foo(1.0, 10);
-  Expect.equals(0, foo(1.0, 10));
-  Expect.equals(0, foo(2, 0)); // Must not throw in checked mode.
-}
diff --git a/tests/language/optimized_isempty_test.dart b/tests/language/optimized_isempty_test.dart
deleted file mode 100644
index d7e56c5..0000000
--- a/tests/language/optimized_isempty_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-// Test optimization and polymorphic inlining of String.isEmpty.
-
-import "package:expect/expect.dart";
-
-test(s) => s.isEmpty;
-
-main() {
-  var x = "abc";
-  var y = [123, 12345, 765];
-  Expect.equals(false, test(x));
-  Expect.equals(false, test(y));
-  for (var i = 0; i < 20; i++) test(x);
-  Expect.equals(false, test(x));
-  Expect.equals(false, test(y));
-}
diff --git a/tests/language/optimized_lists_test.dart b/tests/language/optimized_lists_test.dart
deleted file mode 100644
index 1770446..0000000
--- a/tests/language/optimized_lists_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.
-// Test program for correct optimizations related to types fo allocated lists.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  // Trigger optimization of 'test' method.
-  for (int i = 0; i < 20; i++) {
-    test(2);
-  }
-}
-
-test(n) {
-  var a = new List(); //    Growable list.
-  var b = new List(10); //  Fixed size list.
-  var c = const [1, 2, 3, 4]; // Constant aray.
-  // In optimized mode the class checks will be eliminated since the
-  // constructors above provide information about exact types.
-  a.add(4);
-  b[0] = 5;
-  Expect.equals(4, a[0]);
-  Expect.equals(5, b[0]);
-  // Test bound check elimination.
-  Expect.equals(2, c[1]);
-  // Test elimination of array length computation.
-  var v = c[n];
-  Expect.equals(v, c[n]);
-}
diff --git a/tests/language/optimized_setter_test.dart b/tests/language/optimized_setter_test.dart
deleted file mode 100644
index d6facf1..0000000
--- a/tests/language/optimized_setter_test.dart
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test various setter situations, testing special cases in optimizing compiler.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  int field = 0;
-}
-
-class B extends A {}
-
-void sameImplicitSetter() {
-  oneTarget(var a, var v) {
-    a.field = v;
-  }
-
-  A a = new A();
-  B b = new B();
-  // Optimize 'oneTarget' for one class, one target.
-  for (int i = 0; i < 20; i++) {
-    oneTarget(a, 5);
-    Expect.equals(5, a.field);
-  }
-  // Deoptimize 'oneTarget', since class B is not expected.
-  oneTarget(b, 6);
-  Expect.equals(6, b.field);
-  // Optimize 'oneTarget' for A and B classes, one target.
-  for (int i = 0; i < 20; i++) {
-    oneTarget(a, 7);
-    Expect.equals(7, a.field);
-  }
-  oneTarget(b, 8);
-  Expect.equals(8, b.field);
-}
-
-// Deoptimize when no feedback exists.
-void setterNoFeedback() {
-  maybeSet(var a, var v, bool set_it) {
-    if (set_it) {
-      return a.field = v;
-    }
-    return -1;
-  }
-
-  A a = new A();
-  for (int i = 0; i < 20; i++) {
-    var r = maybeSet(a, 5, false);
-    Expect.equals(0, a.field);
-    Expect.equals(-1, r);
-  }
-  var r = maybeSet(a, 5, true);
-  Expect.equals(5, a.field);
-  Expect.equals(5, r);
-  for (int i = 0; i < 20; i++) {
-    var r = maybeSet(a, 6, true);
-    Expect.equals(6, a.field);
-    Expect.equals(6, r);
-  }
-}
-
-// Check non-implicit setter
-class X {
-  int pField = 0;
-  set field(v) {
-    pField = v;
-  }
-
-  get field => 10;
-}
-
-void sameNotImplicitSetter() {
-  oneTarget(var a, var v) {
-    return a.field = v;
-  }
-
-  incField(var a) {
-    a.field++;
-  }
-
-  X x = new X();
-  for (int i = 0; i < 20; i++) {
-    var r = oneTarget(x, 3);
-    Expect.equals(3, x.pField);
-    Expect.equals(3, r);
-  }
-  oneTarget(x, 0);
-  for (int i = 0; i < 20; i++) {
-    incField(x);
-  }
-  Expect.equals(11, x.pField);
-}
-
-class Y {
-  int field = 0;
-}
-
-multiImplicitSetter() {
-  oneTarget(var a, var v) {
-    return a.field = v;
-  }
-
-  // Both classes 'Y' and 'A' have a distinct field getter.
-  A a = new A();
-  Y y = new Y();
-  for (int i = 0; i < 20; i++) {
-    var r = oneTarget(a, 5);
-    Expect.equals(5, a.field);
-    Expect.equals(5, r);
-    r = oneTarget(y, 6);
-    Expect.equals(6, y.field);
-    Expect.equals(6, r);
-  }
-}
-
-class Z {
-  int pField = 0;
-  set field(v) {
-    pField = v;
-  }
-
-  get field => 10;
-}
-
-multiNotImplicitSetter() {
-  oneTarget(var a, var v) {
-    return a.field = v;
-  }
-
-  Y y = new Y();
-  Z z = new Z();
-  for (int i = 0; i < 20; i++) {
-    var r = oneTarget(y, 8);
-    Expect.equals(8, y.field);
-    Expect.equals(8, r);
-    r = oneTarget(z, 12);
-    Expect.equals(12, z.pField);
-    Expect.equals(12, r);
-  }
-  A a = new A();
-  var r = oneTarget(a, 11);
-  Expect.equals(11, a.field);
-  Expect.equals(11, r);
-}
-
-void main() {
-  sameImplicitSetter();
-  setterNoFeedback();
-  sameNotImplicitSetter();
-
-  multiImplicitSetter();
-  multiNotImplicitSetter();
-}
diff --git a/tests/language/optimized_string_charat_test.dart b/tests/language/optimized_string_charat_test.dart
deleted file mode 100644
index f3368fe..0000000
--- a/tests/language/optimized_string_charat_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test optimized [] on strings.
-
-var a = "abc";
-var b = "øbc";
-var c = new String.fromCharCodes([123, 456, 789]);
-
-test_charat(s, i) {
-  return s[i];
-}
-
-test_const_str(i) {
-  return "abc"[i];
-}
-
-test_const_index(s) {
-  return s[0];
-}
-
-test_const_index2(s) {
-  return s[3];
-}
-
-main() {
-  Expect.equals("a", test_charat(a, 0));
-  for (var i = 0; i < 20; i++) test_charat(a, 0);
-  Expect.equals("a", test_charat(a, 0));
-  Expect.equals("b", test_charat(a, 1));
-  Expect.equals("c", test_charat(a, 2));
-  Expect.throws(() => test_charat(a, 3));
-
-  Expect.equals("a", test_const_str(0));
-  for (var i = 0; i < 20; i++) test_const_str(0);
-  Expect.equals("a", test_const_str(0));
-  Expect.equals("b", test_const_str(1));
-  Expect.equals("c", test_const_str(2));
-  Expect.throws(() => test_const_str(3));
-
-  Expect.equals("a", test_const_index(a));
-  for (var i = 0; i < 20; i++) test_const_index(a);
-  Expect.equals("a", test_const_index(a));
-  Expect.equals("ø", test_const_index(b));
-  Expect.equals(new String.fromCharCodes([123]), test_const_index(c));
-  Expect.throws(() => test_const_index2(a));
-
-  Expect.equals("ø", test_charat(b, 0));
-  for (var i = 0; i < 20; i++) test_charat(b, 0);
-  Expect.equals("ø", test_charat(b, 0));
-  Expect.equals("b", test_charat(b, 1));
-  Expect.equals("c", test_charat(b, 2));
-  Expect.throws(() => test_charat(b, 3));
-
-  Expect.equals(new String.fromCharCodes([123]), test_charat(c, 0));
-  for (var i = 0; i < 20; i++) test_charat(c, 0);
-  Expect.equals(new String.fromCharCodes([123]), test_charat(c, 0));
-  Expect.equals(new String.fromCharCodes([456]), test_charat(c, 1));
-  Expect.equals(new String.fromCharCodes([789]), test_charat(c, 2));
-  Expect.throws(() => test_charat(c, 3));
-}
diff --git a/tests/language/optimized_string_charcodeat_test.dart b/tests/language/optimized_string_charcodeat_test.dart
deleted file mode 100644
index 149069c..0000000
--- a/tests/language/optimized_string_charcodeat_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-// Test optimized CodeUnitAt and array access.
-
-import "package:expect/expect.dart";
-
-String one_byte = "hest";
-String two_byte = "h\u{2029}ns";
-
-int testOneByteCodeUnitAt(String x, int j) {
-  int test() {
-    return x.codeUnitAt(j);
-  }
-
-  for (int i = 0; i < 20; i++) test();
-  return test();
-}
-
-int testTwoByteCodeUnitAt(String x, int j) {
-  int test() {
-    return x.codeUnitAt(j);
-  }
-
-  for (int i = 0; i < 20; i++) test();
-  return test();
-}
-
-int testConstantStringCodeUnitAt(int j) {
-  int test() {
-    return "høns".codeUnitAt(j);
-  }
-
-  for (int i = 0; i < 20; i++) test();
-  return test();
-}
-
-int testConstantIndexCodeUnitAt(String x) {
-  int test() {
-    return x.codeUnitAt(1);
-  }
-
-  for (int i = 0; i < 20; i++) test();
-  return test();
-}
-
-int testOneByteCodeUnitAtInLoop(var x) {
-  var result = 0;
-  for (int i = 0; i < x.length; i++) {
-    result += x.codeUnitAt(i);
-  }
-  return result;
-}
-
-int testTwoByteCodeUnitAtInLoop(var x) {
-  var result = 0;
-  for (int i = 0; i < x.length; i++) {
-    result += x.codeUnitAt(i);
-  }
-  return result;
-}
-
-main() {
-  for (int j = 0; j < 10; j++) {
-    Expect.equals(101, testOneByteCodeUnitAt(one_byte, 1));
-    Expect.equals(8233, testTwoByteCodeUnitAt(two_byte, 1));
-    Expect.equals(248, testConstantStringCodeUnitAt(1));
-    Expect.equals(101, testConstantIndexCodeUnitAt(one_byte));
-  }
-  for (int j = 0; j < 20; j++) {
-    Expect.equals(436, testOneByteCodeUnitAtInLoop(one_byte));
-    Expect.equals(8562, testTwoByteCodeUnitAtInLoop(two_byte));
-  }
-  Expect.throws(() => testOneByteCodeUnitAtInLoop(123));
-  Expect.throws(() => testTwoByteCodeUnitAtInLoop(123));
-}
diff --git a/tests/language/optional_named_parameters_test.dart b/tests/language/optional_named_parameters_test.dart
deleted file mode 100644
index dbb0cfc..0000000
--- a/tests/language/optional_named_parameters_test.dart
+++ /dev/null
@@ -1,103 +0,0 @@
-// 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.
-// Dart test program for testing optional named parameters.
-
-import "package:expect/expect.dart";
-
-class OptionalNamedParametersTest {
-  static int F00() {
-    return 0;
-  }
-
-  int f11() {
-    return 0;
-  }
-
-  static int F11(int a) {
-    return a;
-  }
-
-  int f22(int a) {
-    return a;
-  }
-
-  static int F10({int b: 20}) {
-    return b;
-  }
-
-  int f21({int b: 20}) {
-    return b;
-  }
-
-  static int F21(int a, {int b: 20}) {
-    return 100 * a + b;
-  }
-
-  int f32(int a, {int b: 20}) {
-    return 100 * a + b;
-  }
-
-  static int F31(int a, {int b: 20, int c: 30}) {
-    return 100 * (100 * a + b) + c;
-  }
-
-  int f42(int a, {int b: 20, int c: 30}) {
-    return 100 * (100 * a + b) + c;
-  }
-
-  static int F41(int a, {int b: 20, int c, int d: 40}) {
-    return 100 * (100 * (100 * a + b) + ((c != null) ? c : 0)) + d;
-  }
-
-  int f52(int a, {int b: 20, int c, int d: 40}) {
-    return 100 * (100 * (100 * a + b) + ((c != null) ? c : 0)) + d;
-  }
-
-  static void test() {
-    OptionalNamedParametersTest np = new OptionalNamedParametersTest();
-    Expect.equals(0, F00());
-    Expect.equals(0, np.f11());
-    Expect.equals(10, F11(10));
-    Expect.equals(10, np.f22(10));
-    Expect.equals(20, F10());
-    Expect.equals(20, np.f21());
-    Expect.equals(20, F10(20)); // //# 01: runtime error
-    Expect.equals(20, np.f21(20)); // //# 02: runtime error
-    Expect.equals(20, F10(b: 20));
-    Expect.equals(20, np.f21(b: 20));
-    Expect.equals(1020, F21(10));
-    Expect.equals(1020, np.f32(10));
-    Expect.equals(1025, F21(10, 25)); // //# 03: runtime error
-    Expect.equals(1025, np.f32(10, 25)); // //# 04: runtime error
-    Expect.equals(1025, F21(10, b: 25));
-    Expect.equals(1025, np.f32(10, b: 25));
-    Expect.equals(102030, F31(10));
-    Expect.equals(102030, np.f42(10));
-    Expect.equals(102530, F31(10, 25)); // //# 05: runtime error
-    Expect.equals(102530, np.f42(10, 25)); // //# 06: runtime error
-    Expect.equals(102530, F31(10, b: 25));
-    Expect.equals(102530, np.f42(10, b: 25));
-    Expect.equals(102035, F31(10, c: 35));
-    Expect.equals(102035, np.f42(10, c: 35));
-    Expect.equals(102535, F31(10, b: 25, c: 35));
-    Expect.equals(102535, np.f42(10, b: 25, c: 35));
-    Expect.equals(102535, F31(10, 25, c:35)); // //# 07: runtime error
-    Expect.equals(102535, np.f42(10, 25, c:35)); // //# 08: runtime error
-    Expect.equals(102535, F31(10, c: 35, b: 25));
-    Expect.equals(102535, np.f42(10, c: 35, b: 25));
-    Expect.equals(10200040, F41(10));
-    Expect.equals(10200040, np.f52(10));
-    Expect.equals(10203540, F41(10, c: 35));
-    Expect.equals(10203540, np.f52(10, c: 35));
-    Expect.equals(10250045, F41(10, d: 45, b: 25));
-    Expect.equals(10250045, F41(10, 25, d:45)); // //# 09: runtime error
-    Expect.equals(10250045, np.f52(10, d: 45, b: 25));
-    Expect.equals(10253545, F41(10, d: 45, c: 35, b: 25));
-    Expect.equals(10253545, np.f52(10, d: 45, c: 35, b: 25));
-  }
-}
-
-main() {
-  OptionalNamedParametersTest.test();
-}
diff --git a/tests/language/ordered_maps_test.dart b/tests/language/ordered_maps_test.dart
deleted file mode 100644
index b074ecb..0000000
--- a/tests/language/ordered_maps_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests that map literals are ordered.
-
-class OrderedMapsTest {
-  static testMain() {
-    testMaps(const {"a": 1, "c": 2}, const {"c": 2, "a": 1}, true);
-    testMaps({"a": 1, "c": 2}, {"c": 2, "a": 1}, false);
-  }
-
-  static void testMaps(map1, map2, bool isConst) {
-    Expect.isFalse(identical(map1, map2));
-
-    var keys = map1.keys.toList();
-    Expect.equals(2, keys.length);
-    Expect.equals("a", keys[0]);
-    Expect.equals("c", keys[1]);
-
-    keys = map2.keys.toList();
-    Expect.equals(2, keys.length);
-    Expect.equals("c", keys[0]);
-    Expect.equals("a", keys[1]);
-
-    var values = map1.values.toList();
-    Expect.equals(2, values.length);
-    Expect.equals(1, values[0]);
-    Expect.equals(2, values[1]);
-
-    values = map2.values.toList();
-    Expect.equals(2, values.length);
-    Expect.equals(2, values[0]);
-    Expect.equals(1, values[1]);
-
-    if (isConst) return;
-
-    map1["b"] = 3;
-    map2["b"] = 3;
-
-    keys = map1.keys.toList();
-    Expect.equals(3, keys.length);
-    Expect.equals("a", keys[0]);
-    Expect.equals("c", keys[1]);
-    Expect.equals("b", keys[2]);
-
-    keys = map2.keys.toList();
-    Expect.equals(3, keys.length);
-    Expect.equals("c", keys[0]);
-    Expect.equals("a", keys[1]);
-    Expect.equals("b", keys[2]);
-
-    values = map1.values.toList();
-    Expect.equals(3, values.length);
-    Expect.equals(1, values[0]);
-    Expect.equals(2, values[1]);
-    Expect.equals(3, values[2]);
-
-    values = map2.values.toList();
-    Expect.equals(3, values.length);
-    Expect.equals(2, values[0]);
-    Expect.equals(1, values[1]);
-    Expect.equals(3, values[2]);
-
-    map1["a"] = 4;
-    keys = map1.keys.toList();
-    Expect.equals(3, keys.length);
-    Expect.equals("a", keys[0]);
-
-    values = map1.values.toList();
-    Expect.equals(3, values.length);
-    Expect.equals(4, values[0]);
-  }
-}
-
-main() {
-  OrderedMapsTest.testMain();
-}
diff --git a/tests/language/osr_test.dart b/tests/language/osr_test.dart
deleted file mode 100644
index 4386648..0000000
--- a/tests/language/osr_test.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=5 --no-background-compilation
-// Test correct OSR (issue 16151).
-
-import "dart:collection";
-import "package:expect/expect.dart";
-
-List create([int length]) {
-  return new MyList(length);
-}
-
-main() {
-  test(create);
-}
-
-class MyList<E> extends ListBase<E> {
-  List<E> _list;
-
-  MyList([int length])
-      : _list = (length == null ? new List() : new List(length));
-
-  E operator [](int index) => _list[index];
-
-  void operator []=(int index, E value) {
-    _list[index] = value;
-  }
-
-  int get length => _list.length;
-
-  void set length(int newLength) {
-    _list.length = newLength;
-  }
-}
-
-test(List create([int length])) {
-  sort_A01_t02_test(create);
-}
-
-//  From library co19 sort_A01_t02.
-
-sort_A01_t02_test(List create([int length])) {
-  int c(var a, var b) {
-    return a < b ? -1 : (a == b ? 0 : 1);
-  }
-
-  int maxlen = 7;
-  int prevLength = 0;
-  for (int length = 1; length < maxlen; ++length) {
-    // Check that we are making progress.
-    if (prevLength == length) {
-      // Cannot use Expect.notEquals since it hides the bug.
-      throw "No progress made";
-    }
-    prevLength = length;
-    List a = create(length);
-    List expected = create(length);
-    for (int i = 0; i < length; ++i) {
-      expected[i] = i;
-      a[i] = i;
-    }
-
-    void swap(int i, int j) {
-      var t = a[i];
-      a[i] = a[j];
-      a[j] = t;
-    }
-
-    void check() {
-      return;
-      // Deleting the code below will throw a RangeError instead of throw above.
-      var a_copy = new List(length);
-      a_copy.setRange(0, length, a);
-      a_copy.sort(c);
-    }
-
-    void permute(int n) {
-      if (n == 1) {
-        check();
-      } else {
-        for (int i = 0; i < n; i++) {
-          permute(n - 1);
-          if (n % 2 == 1) {
-            swap(0, n - 1);
-          } else {
-            swap(i, n - 1);
-          }
-        }
-      }
-    } //void permute
-
-    permute(length);
-  } //for i in 0..length
-} // test
diff --git a/tests/language/other_library.dart b/tests/language/other_library.dart
deleted file mode 100644
index f831462..0000000
--- a/tests/language/other_library.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that inlining in the compiler works with privacy.
-
-library other_library;
-
-// Make [foo] small enough that is can be inlined. Make it call a
-// private method.
-foo(a) => a._bar();
-
-class A {
-  _bar() => 42;
-}
diff --git a/tests/language/overridden_no_such_method.dart b/tests/language/overridden_no_such_method.dart
deleted file mode 100644
index 5b28c2b..0000000
--- a/tests/language/overridden_no_such_method.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing overridden messageNotUnderstood.
-
-part of OverriddenNoSuchMethodTest.dart;
-
-class GetName {
-  foo(a, b) => "foo";
-}
-
-String getName(im) => reflect(new GetName()).delegate(im);
-
-class OverriddenNoSuchMethod {
-  OverriddenNoSuchMethod() {}
-
-  noSuchMethod(Invocation mirror) {
-    Expect.equals("foo", getName(mirror));
-    // 'foo' was called with two parameters (not counting receiver).
-    List args = mirror.positionalArguments;
-    Expect.equals(2, args.length);
-    Expect.equals(101, args[0]);
-    Expect.equals(202, args[1]);
-    return 5;
-  }
-
-  static testMain() {
-    var obj = new OverriddenNoSuchMethod();
-    Expect.equals(5, obj.foo(101, 202));
-  }
-}
diff --git a/tests/language/overridden_no_such_method_test.dart b/tests/language/overridden_no_such_method_test.dart
deleted file mode 100644
index 9c7fe12..0000000
--- a/tests/language/overridden_no_such_method_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing overridden messageNotUnderstood.
-
-library OverriddenNoSuchMethodTest.dart;
-
-import "dart:mirrors" show reflect;
-import "package:expect/expect.dart";
-part "overridden_no_such_method.dart";
-
-main() {
-  OverriddenNoSuchMethod.testMain();
-}
diff --git a/tests/language/override_field_method1_negative_test.dart b/tests/language/override_field_method1_negative_test.dart
deleted file mode 100644
index 4113590..0000000
--- a/tests/language/override_field_method1_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test error for overriding field with method.
-
-class A {
-  var foo;
-}
-
-class B extends A {
-  foo() {} // method cannot override field.
-}
-
-class OverrideFieldMethod1NegativeTest {
-  static testMain() {
-    new B().foo();
-  }
-}
-
-main() {
-  OverrideFieldMethod1NegativeTest.testMain();
-}
diff --git a/tests/language/override_field_method2_negative_test.dart b/tests/language/override_field_method2_negative_test.dart
deleted file mode 100644
index c695fb3..0000000
--- a/tests/language/override_field_method2_negative_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test error for overriding getter with method.
-
-class A {
-  get foo {
-    return 123;
-  }
-}
-
-class B extends A {
-  foo() {} // method cannot override getter.
-}
-
-class OverrideFieldMethod2NegativeTest {
-  static testMain() {
-    new B().foo();
-  }
-}
-
-main() {
-  OverrideFieldMethod2NegativeTest.testMain();
-}
diff --git a/tests/language/override_field_method4_negative_test.dart b/tests/language/override_field_method4_negative_test.dart
deleted file mode 100644
index 65837e7..0000000
--- a/tests/language/override_field_method4_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test error for overriding method with field.
-
-class A {
-  foo() {}
-}
-
-class B extends A {
-  var foo; // Field cannot override method.
-}
-
-class OverrideFieldMethod4NegativeTest {
-  static testMain() {
-    print(new B().foo);
-  }
-}
-
-main() {
-  OverrideFieldMethod4NegativeTest.testMain();
-}
diff --git a/tests/language/override_field_method5_negative_test.dart b/tests/language/override_field_method5_negative_test.dart
deleted file mode 100644
index 7484c30..0000000
--- a/tests/language/override_field_method5_negative_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test error for overriding method with getter.
-
-class A {
-  foo() {
-    return 999;
-  }
-}
-
-class B extends A {
-  get foo {
-    return 123;
-  } // getter cannot override method
-}
-
-class OverrideFieldMethod5NegativeTest {
-  static testMain() {
-    print(new B().foo);
-  }
-}
-
-main() {
-  OverrideFieldMethod5NegativeTest.testMain();
-}
diff --git a/tests/language/override_field_test.dart b/tests/language/override_field_test.dart
deleted file mode 100644
index 0b5ca51..0000000
--- a/tests/language/override_field_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test checking that static/instance field shadowing do not conflict.
-
-class A {
-  int instanceFieldInA;
-  static int staticFieldInA;
-}
-
-class B extends A {
-  static int instanceFieldInA; //  //# 01: compile-time error
-  int staticFieldInA; //           //# 02: static type warning
-  static int staticFieldInA; //    //# 03: static type warning
-}
-
-main() {
-  var x = new B();
-}
diff --git a/tests/language/override_inheritance_abstract_test.dart b/tests/language/override_inheritance_abstract_test.dart
deleted file mode 100644
index 0b40b88..0000000
--- a/tests/language/override_inheritance_abstract_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2014, 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.
-
-abstract class A {
-  method1(); //# 01: ok
-  method5(); //# 05: ok
-  method6(); //# 06: ok
-  method7(); //# 07: static type warning
-  get getter8; //# 08: static type warning
-  set setter9(_); //# 09: static type warning
-  method10(); //# 10: static type warning
-  get getter11; //# 11: static type warning
-  set setter12(_); //# 12: static type warning
-  get field13; //# 13: static type warning
-  set field14(_); //# 14: static type warning
-  method18() {} //# 18: ok
-  method27() {} //# 27: ok
-}
-
-abstract class I {
-  method10() {} //# 10: continued
-  get getter11 => 0; //# 11: continued
-  set setter12(_) {} //# 12: continued
-  var field13; //# 13: continued
-  var field14; //# 14: continued
-  method15() {} //# 15: ok
-  method16() {} //# 16: ok
-  method17() {} //# 17: static type warning
-  method18() {} //# 18: continued
-  var member19; //# 19: static type warning
-  var member20; //# 20: static type warning
-  var member21; //# 21: static type warning
-  get member22 => 0; //# 22: static type warning
-  set member23(_) {} //# 23: static type warning
-  var member24; //# 24: static type warning
-  var field25; //# 25: static type warning
-  var member26; //# 26: static type warning
-}
-
-abstract class J {
-  get member20 => null; //# 20: continued
-  set member20(_) {} //# 20: continued
-  var member21; //# 21: continued
-}
-
-class Class extends A implements I, J {
-  method1() {} //# 01: continued
-  method2(); //# 02: static type warning
-  get getter3; //# 03: static type warning
-  set setter4(_); //# 04: static type warning
-  method5() {} //# 05: continued
-  method6([a]) {} //# 06: continued
-  set field13(_) {} //# 13: continued
-  get field14 => 0; //# 14: continued
-  method15() {} //# 15: continued
-  method16([a]) {} //# 16: continued
-  get member24 => 0; //# 24: continued
-  final field25 = 0; //# 25: continued
-  set member26(_) {} //# 26: continued
-  method27(); //# 27: continued
-}
-
-main() {
-  new Class();
-}
diff --git a/tests/language/override_inheritance_field_test.dart b/tests/language/override_inheritance_field_test.dart
deleted file mode 100644
index 8d368d5..0000000
--- a/tests/language/override_inheritance_field_test.dart
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright (c) 2014, 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 {
-  get getter1 => null; //# 01: ok
-  num get getter2 => null; //# 02: ok
-  num get getter3 => null; //# 03: ok
-  int get getter4 => null; //# 04: ok
-  int get getter5 => null; //# 05: static type warning
-  int get getter6 => null; //# 06: ok
-  int get getter7 => null; //# 07: static type warning
-  int get getter8 => null; //# 08: static type warning
-
-  set setter1(_) => null; //# 21: ok
-  void set setter2(_) {} //# 22: ok
-  set setter3(_) => null; //# 23: ok
-  set setter4(_) => null; //# 24: ok
-  set setter5(num _) => null; //# 25: ok
-  set setter6(num _) => null; //# 26: ok
-  set setter7(int _) => null; //# 27: ok
-  set setter8(int _) => null; //# 28: static type warning
-  set setter9(int _) => null; //# 29: ok
-  set setter10(int _) => null; //# 30: static type warning
-  set setter11(int _) => null; //# 31: static type warning
-
-  int field1; //# 41: ok
-  num field2; //# 42: ok
-  int field3; //# 43: ok
-  int field4; //# 44: static type warning
-  int field5; //# 45: ok
-  num field6; //# 46: ok
-  num field7; //# 47: static type warning
-  num get field8 => null; //# 48: static type warning
-  num field9; //# 49: ok
-  num field10; //# 50: ok
-  set field11(int _) {} //# 51: ok
-  void set field12(int _) {} //# 52: ok
-  num field13; //# 53: static type warning
-  set field14(num _) {} //# 54: static type warning
-}
-
-class B extends A {
-  num get getter6 => null; //# 06: continued
-  set setter9(num _) => null; //# 29: continued
-  num field5; //# 45: continued
-}
-
-abstract class I {
-  num get getter7 => null; //# 07: continued
-  String get getter8 => null; //# 08: continued
-  int get getter9 => null; //# 09: static type warning
-  int get getter10 => null; //# 10: static type warning
-  int get getter11 => null; //# 11: static type warning
-  set setter10(num _) => null; //# 30: continued
-  set setter11(String _) => null; //# 31: continued
-  set setter12(int _) => null; //# 32: static type warning
-  set setter13(int _) => null; //# 33: static type warning
-  set setter13(num _) => null; //# 33a: static type warning
-  set setter14(int _) => null; //# 34: static type warning
-}
-
-abstract class J {
-  String get getter9 => null; //# 09: continued
-  num get getter10 => null; //# 10: continued
-  num get getter11 => null; //# 11: continued
-  set setter12(String _) => null; //# 32: continued
-  set setter13(num _) => null; //# 33: continued
-  set setter13(int _) => null; //# 33a: continued
-  set setter14(num _) => null; //# 34: continued
-}
-
-abstract class Class extends B implements I, J {
-  get getter1 => null; //# 01: continued
-  num get getter2 => null; //# 02: continued
-  int get getter3 => null; //# 03: continued
-  num get getter4 => null; //# 04: continued
-  double get getter5 => null; //# 05: continued
-  double get getter6 => null; //# 06: continued
-  double get getter7 => null; //# 07: continued
-  double get getter8 => null; //# 08: continued
-  double get getter9 => null; //# 09: continued
-
-  set setter1(_) => null; //# 21: continued
-  set setter2(_) => null; //# 22: continued
-  void set setter3(_) {} //# 23: continued
-  void set setter4(_) {} //# 24: continued
-  set setter5(num _) => null; //# 25: continued
-  set setter6(int _) => null; //# 26: continued
-  set setter7(num _) => null; //# 27: continued
-  set setter8(double _) => null; //# 28: continued
-  set setter9(double _) => null; //# 29: continued
-  set setter10(double _) => null; //# 30: continued
-  set setter11(double _) => null; //# 31: continued
-  set setter12(double _) => null; //# 32: continued
-
-  int field1; //# 41: continued
-  int field2; //# 42: continued
-  num field3; //# 43: continued
-  double field4; //# 44: continued
-  double field5; //# 45: continued
-  int get field6 => null; //# 46: continued
-  String get field7 => null; //# 47: continued
-  String field8; //# 48: continued
-  set field9(int _) {} //# 49: continued
-  void set field10(int _) {} //# 50: continued
-  num field11; //# 51: continued
-  num field12; //# 52: continued
-  set field13(String _) {} //# 53: continued
-  String field14; //# 54: continued
-}
-
-class SubClass extends Class {
-  double get getter10 => null; //# 10: continued
-  String get getter11 => null; //# 11: continued
-  set setter13(double _) => null; //# 33: continued
-  set setter13(double _) => null; //# 33a: continued
-  set setter14(String _) => null; //# 34: continued
-}
-
-main() {
-  new SubClass();
-}
diff --git a/tests/language/override_inheritance_generic_test.dart b/tests/language/override_inheritance_generic_test.dart
deleted file mode 100644
index 5bb6f5c..0000000
--- a/tests/language/override_inheritance_generic_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2014, 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<T> {
-  method1(T t) => null; //# 01: ok
-  method2(T t) => null; //# 02: ok
-  method4(T t) => null; //# 04: static type warning
-  method5(T t) => null; //# 05: ok
-  method7(T t) => null; //# 07: static type warning
-}
-
-class B<S> extends A
-<S> //# 01: continued
-<num> //# 02: continued
-<S> //# 04: continued
-<S> //# 05: continued
-{
-  method1(S s) => null; //# 01: continued
-  method2(int i) => null; //# 02: continued
-  method3(S s) => null; //# 03: ok
-  method4(int i) => null; //# 04: continued
-  method6(S s) => null; //# 06: static type warning
-}
-
-abstract class I<U> {
-  method3(U u) => null; //# 03: continued
-  method6(U u) => null; //# 06: continued
-  method7(U u) => null; //# 07: continued
-  method8(U u) => null; //# 08: static type warning
-  method9(U u) => null; //# 09: static type warning
-  method10(U u) => null; //# 10: static type warning
-}
-
-abstract class J<V> {
-  method8(V v) => null; //# 08: continued
-  method9(V v) => null; //# 09: continued
-  method10(V v) => null; //# 10: continued
-}
-
-abstract class Class<W> extends B
-<double> //# 03: continued
-<W> //# 05: continued
-<W> //# 06: continued
-<int> //# 07: continued
-    implements
-        I
-<int> //# 03: continued
-<num> //# 06: continued
-<String> //# 07: continued
-<int> //# 08: continued
-<int> //# 09: continued
-<int> //# 10: continued
-        ,
-        J
-<String> //# 08: continued
-<num> //# 09: continued
-<num> //# 10: continued
-{
-  method3(num i) => null; //# 03: continued
-  method5(W w) => null; //# 05: continued
-  method6(int i) => null; //# 06: continued
-  method7(double d) => null; //# 07: continued
-  method8(double d) => null; //# 08: continued
-}
-
-class SubClass extends Class {
-  method9(double d) => null; //# 09: continued
-  method10(String s) => null; //# 10: continued
-}
-
-main() {
-  new SubClass();
-}
diff --git a/tests/language/override_inheritance_method_test.dart b/tests/language/override_inheritance_method_test.dart
deleted file mode 100644
index 990b09a..0000000
--- a/tests/language/override_inheritance_method_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test static warnings for method overrides.
-
-class A {
-  method1() => null; //# 01: ok
-  method2(a) => null; //# 02: ok
-  method3(a, b, c, d) => null; //# 03: ok
-  method4() => null; //# 04: static type warning
-  method6(a, b, c) => null; //# 06: static type warning
-  method7([a]) => null; //# 07: ok
-  method8([a, b]) => null; //# 08: ok
-  method9([a, b, c]) => null; //# 09: ok
-  method10([a]) => null; //# 10: ok
-  method11(a) => null; //# 11: static type warning
-  method12(a, [b]) => null; //# 12: static type warning
-  method13(a, [b]) => null; //# 13: static type warning
-  method14(a, b, [c, d, e]) => null; //# 14: static type warning
-  method15({a}) => null; //# 15: ok
-  method16({a, b}) => null; //# 16: ok
-  method17({a, b, c}) => null; //# 17: ok
-  method18(d, {a, b, c}) => null; //# 18: ok
-  method19({a}) => null; //# 19: static type warning
-  method20({a, b}) => null; //# 20: static type warning
-  method21({a, b, c, d}) => null; //# 21: static type warning
-
-  method22(int a) => null; //# 22: ok
-  method23(int a) => null; //# 23: ok
-  void method24() {} //# 24: ok
-  method25() => null; //# 25: ok
-  void method26() {} //# 26: ok
-  int method27() => null; //# 27: static type warning
-  method28(int a) => null; //# 28: ok
-  method29(int a) => null; //# 29: ok
-  method30(int a) => null; //# 30: static type warning
-}
-
-class B extends A {
-  method28(num a) => null; //# 28: continued
-  method29(a) => null; //# 29: continued
-}
-
-abstract class I {
-  method5() => null; //# 05: static type warning
-  method31(int a) => null; //# 31: static type warning
-  method32(int a) => null; //# 32: static type warning
-  method33(num a) => null; //# 33: static type warning
-}
-
-abstract class J {
-  method31(num a) => null; //# 31: continued
-  method32(double a) => null; //# 32: continued
-  method33(int a) => null; //# 33: continued
-}
-
-class Class extends B implements I, J {
-  method1() => null; //# 01: continued
-  method2(b) => null; //# 02: continued
-  method3(b, a, d, c) => null; //# 03: continued
-  method4(a) => null; //# 04: continued
-  method5(a) => null; //# 05: continued
-  method6(a, b, c, d) => null; //# 06: continued
-  method7([a]) => null; //# 07: continued
-  method8([b, a]) => null; //# 08: continued
-  method9([b, d, a, c]) => null; //# 09: continued
-  method10([a]) => null; //# 10: continued
-  method11() => null; //# 11: continued
-  method12(a) => null; //# 12: continued
-  method13([a]) => null; //# 13: continued
-  method14([a, b, c, d]) => null; //# 14: continued
-  method15({a}) => null; //# 15: continued
-  method16({b, a}) => null; //# 16: continued
-  method17({b, c, a, d}) => null; //# 17: continued
-  method18(e, {b, c, a, d}) => null; //# 18: continued
-  method19() => null; //# 19: continued
-  method20({b}) => null; //# 20: continued
-  method21({a, e, d, c}) => null; //# 21: continued
-
-  method22(int a) => null; //# 22: continued
-  method23(num a) => null; //# 23: continued
-  method24() => null; //# 24: continued
-  void method25() {} //# 25: continued
-  int method26() => null; //# 26: continued
-  void method27() {} //# 27: continued
-  method28(double a) => null; //# 28: continued
-  method29(String a) => null; //# 29: continued
-  method30(String a) => null; //# 30: continued
-}
-
-class SubClass extends Class {
-  method31(double a) => null; //# 31: continued
-  method32(String a) => null; //# 32: continued
-  method33(double a) => null; //# 33: continued
-}
-
-main() {
-  new SubClass();
-}
diff --git a/tests/language/override_inheritance_mixed_test.dart b/tests/language/override_inheritance_mixed_test.dart
deleted file mode 100644
index 50ee0ad..0000000
--- a/tests/language/override_inheritance_mixed_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2014, 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 {
-  var member1; //# 01: compile-time error
-  member2() {} //# 02: compile-time error
-  get member3 => null; //# 03: compile-time error
-  member4() {} //# 04: compile-time error
-}
-
-abstract class I {
-  var member5; //# 05: ok
-  var member6; //# 06: static type warning
-  get member7; //# 07: static type warning
-  get member8; //# 08: static type warning
-  get member9; //# 09: static type warning
-}
-
-abstract class J {
-  get member5; //# 05: continued
-  member6() {} //# 06: continued
-  member7() {} //# 07: continued
-  member8() {} //# 08: continued
-  member9() {} //# 09: continued
-}
-
-abstract class B extends A implements I, J {}
-
-class Class extends B {
-  member1() {} //# 01: continued
-  var member2; //# 02: continued
-  member3() {} //# 03: continued
-  get member4 => null; //# 04: continued
-  var member5; //# 05: continued
-  member8() {} //# 08: continued
-  get member9 => null; //# 09: continued
-}
-
-main() {
-  new Class();
-}
diff --git a/tests/language/override_inheritance_no_such_method_test.dart b/tests/language/override_inheritance_no_such_method_test.dart
deleted file mode 100644
index 0611224..0000000
--- a/tests/language/override_inheritance_no_such_method_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test use of @proxy and noSuchMethod in relation to abstract methods in
-// concrete classes.
-
-abstract class A {
-  method6(); //# 06: static type warning
-  method7(); //# 07: static type warning
-  method8(); //# 08: ok
-}
-
-abstract class I {
-  method9(); //# 09: static type warning
-  method10(); //# 10: static type warning
-  method11(); //# 11: ok
-}
-
-@proxy //# 02: static type warning
-@proxy //# 07: continued
-@proxy //# 10: continued
-class Class1 extends A implements I {
-  method1(); //# 01: static type warning
-
-  method2(); //# 02: continued
-
-  noSuchMethod(_) => null; //# 03: ok
-  method3(); //# 03: continued
-
-  noSuchMethod(_, [__]) => null; //# 04: ok
-  method4(); //# 04: continued
-
-  noSuchMethod(_); //# 05: ok
-  method5(); //# 05: continued
-
-  noSuchMethod(_) => null; //# 08: continued
-
-  noSuchMethod(_) => null; //# 11: continued
-}
-
-@proxy //# 12: static type warning
-class B {
-  method12(); //# 12: continued
-
-  noSuchMethod(_) => null; //# 13: ok
-  method13(); //# 13: continued
-}
-
-class Class2 extends B {}
-
-main() {
-  new Class1();
-  new Class2();
-}
diff --git a/tests/language/override_method_with_field_test.dart b/tests/language/override_method_with_field_test.dart
deleted file mode 100644
index 0a79bde..0000000
--- a/tests/language/override_method_with_field_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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";
-
-// Test overriding a method with a field.
-
-class Super {
-  Super() : super();
-
-  instanceMethod() => 42;
-}
-
-class Sub extends Super {
-  Sub() : super();
-
-  var instanceMethod = 87; // //# 01: compile-time error
-
-  superInstanceMethod() => super.instanceMethod();
-}
-
-main() {
-  var s = new Sub();
-  Super sup = s;
-  Sub sub = s;
-  print(s.instanceMethod);
-  Expect.equals(42, s.superInstanceMethod());
-  Expect.equals(42, sup.superInstanceMethod()); //# 02: static type warning
-  Expect.equals(42, sub.superInstanceMethod());
-}
diff --git a/tests/language/param1_test.dart b/tests/language/param1_test.dart
deleted file mode 100644
index 4c8c0a0..0000000
--- a/tests/language/param1_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing params.
-
-class Param1Test {
-  // TODO(asiva): Should we try to interpret 1 above as an int? In order to
-  // avoid a type error with --enable_type_checks, the type of i below is
-  // changed from int to String.
-  // static int testMain(String s, int i) { return i; }
-  static int testMain() {
-    return 0;
-  }
-}
-
-main() {
-  Param1Test.testMain();
-}
diff --git a/tests/language/param2_test.dart b/tests/language/param2_test.dart
deleted file mode 100644
index 5df77e7..0000000
--- a/tests/language/param2_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing function type parameters.
-
-import "package:expect/expect.dart";
-
-class Param2Test {
-  static forEach(List<int> a, int f(k)) {
-    for (int i = 0; i < a.length; i++) {
-      a[i] = f(a[i]);
-    }
-  }
-
-  static int apply(f(int k), int arg) {
-    var res = f(arg);
-    return res;
-  }
-
-  static exists(List<int> a, f(e)) {
-    for (int i = 0; i < a.length; i++) {
-      if (f(a[i])) return true;
-    }
-    return false;
-  }
-
-  static testMain() {
-    int square(int x) {
-      return x * x;
-    }
-
-    Expect.equals(4, apply(square, 2));
-    Expect.equals(100, apply(square, 10));
-
-    var v = [1, 2, 3, 4, 5, 6];
-    forEach(v, square);
-    Expect.equals(1, v[0]);
-    Expect.equals(4, v[1]);
-    Expect.equals(9, v[2]);
-    Expect.equals(16, v[3]);
-    Expect.equals(25, v[4]);
-    Expect.equals(36, v[5]);
-
-    isOdd(element) {
-      return element % 2 == 1;
-    }
-
-    Expect.equals(true, exists([3, 5, 7, 11, 13], isOdd));
-    Expect.equals(false, exists([2, 4, 10], isOdd));
-    Expect.equals(false, exists([], isOdd));
-
-    v = [4, 5, 7];
-    Expect.equals(true, exists(v, (e) => e % 2 == 1));
-    Expect.equals(false, exists(v, (e) => e == 6));
-
-    var isZero = (e) => e == 0;
-    Expect.equals(false, exists(v, isZero));
-  }
-}
-
-main() {
-  Param2Test.testMain();
-}
diff --git a/tests/language/param_test.dart b/tests/language/param_test.dart
deleted file mode 100644
index b0be01d..0000000
--- a/tests/language/param_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing params.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int foo(int i) {
-    var b;
-    b = i + 1;
-    return b;
-  }
-}
-
-class ParamTest {
-  static testMain() {
-    Expect.equals(2, Helper.foo(1));
-  }
-}
-
-main() {
-  ParamTest.testMain();
-}
diff --git a/tests/language/parameter_default_test.dart b/tests/language/parameter_default_test.dart
deleted file mode 100644
index 3e5b990..0000000
--- a/tests/language/parameter_default_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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 C {
-  foo(a
-      : 1 // //# 01: syntax error
-      = 1 // //# 02: syntax error
-      ) {
-    print(a);
-  }
-
-  static bar(a
-      : 1 // //# 03: syntax error
-      = 1 // //# 04: syntax error
-      ) {
-    print(a);
-  }
-}
-
-baz(a
-    : 1 // //# 05: syntax error
-    = 1 // //# 06: syntax error
-    ) {
-  print(a);
-}
-
-main() {
-  foo(a
-      : 1 // //# 07: syntax error
-      = 1 // //# 08: syntax error
-      ) {
-    print(a);
-  }
-
-  foo(1);
-
-  new C().foo(2);
-
-  C.bar(3);
-
-  baz(4);
-}
diff --git a/tests/language/parameter_initializer1_negative_test.dart b/tests/language/parameter_initializer1_negative_test.dart
deleted file mode 100644
index c433dce..0000000
--- a/tests/language/parameter_initializer1_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Fails because this.x parameter is used in a function.
-
-class Foo {
-  var x;
-  Foo() {}
-  foo(this.x) {
-  }
-}
-
-
-class ParameterInitializer1NegativeTest {
-  static testMain() {
-    new Foo().foo(2);
-  }
-}
-
-main() {
-  ParameterInitializer1NegativeTest.testMain();
-}
diff --git a/tests/language/parameter_initializer2_negative_test.dart b/tests/language/parameter_initializer2_negative_test.dart
deleted file mode 100644
index c0758f5..0000000
--- a/tests/language/parameter_initializer2_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Fails because this.x parameter is used in a setter.
-
-class Foo {
-  var x;
-  Foo() {}
-  set y(this.x) {
-  }
-}
-
-
-class ParameterInitializer2NegativeTest {
-  static testMain() {
-    (new Foo()).y = 2;
-  }
-}
-
-main() {
-  ParameterInitializer2NegativeTest.testMain();
-}
diff --git a/tests/language/parameter_initializer2_test.dart b/tests/language/parameter_initializer2_test.dart
deleted file mode 100644
index ac5e0ce..0000000
--- a/tests/language/parameter_initializer2_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test Parameter Intializer.
-
-class ParameterInitializer2Test {
-  static testMain() {
-    var a = new A(123);
-    Expect.equals(123, a.x);
-
-    var b = new B(123);
-    Expect.equals(123, b.x);
-
-    var c = new C(123);
-    Expect.equals(123, c.x);
-
-    var d = new D(123);
-    Expect.equals(123, d.x);
-
-    var e = new E(1);
-    Expect.equals(4, e.x);
-
-    var f = new F(1, 2, 3, 4);
-    Expect.equals(4, f.z);
-  }
-}
-
-// untyped
-class A {
-  A(this.x) {}
-  int x;
-}
-
-// typed
-class B {
-  B(int this.x) {}
-  int x;
-}
-
-// const typed
-class C {
-  const C(int this.x);
-  final int x;
-}
-
-// const untyped
-class D {
-  const D(this.x);
-  final x;
-}
-
-// make sure this.<X> references work properly in the constructor scope.
-class E {
-  E(this.x) {
-    var myVar = this.x * 2;
-    this.x = myVar + 1;
-    x = myVar + 2;
-    var foo = x + 1;
-  }
-  int x;
-}
-
-// mixed
-class F {
-  F(x, this.y_, int w, int this.z)
-      : x_ = x,
-        w_ = w {}
-  F.foobar(this.z, int this.x_, int this.az_) {}
-  int x_;
-  int y_;
-  int w_;
-  int z;
-  int az_;
-}
-
-main() {
-  ParameterInitializer2Test.testMain();
-}
diff --git a/tests/language/parameter_initializer3_negative_test.dart b/tests/language/parameter_initializer3_negative_test.dart
deleted file mode 100644
index 8b4ec6b..0000000
--- a/tests/language/parameter_initializer3_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Fails because this.x parameter is used in a factory.
-
-class Foo {
-  var x;
-  factory Foo(this.x) {
-    return new Foo.named();
-  }
-  Foo.named() {}
-}
-
-class ParameterInitializer3NegativeTest {
-  static testMain() {
-    new Foo(2);
-  }
-}
-
-main() {
-  ParameterInitializer3NegativeTest.testMain();
-}
diff --git a/tests/language/parameter_initializer4_negative_test.dart b/tests/language/parameter_initializer4_negative_test.dart
deleted file mode 100644
index 9b32fae..0000000
--- a/tests/language/parameter_initializer4_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Fails because this.x parameter is used in a static function.
-
-class Foo {
-  var x;
-  static foo(this.x) {
-  }
-}
-
-
-class ParameterInitializer4NegativeTest {
-  static testMain() {
-    Foo.foo();
-  }
-}
-
-main() {
-  ParameterInitializer4NegativeTest.testMain();
-}
diff --git a/tests/language/parameter_initializer5_test.dart b/tests/language/parameter_initializer5_test.dart
deleted file mode 100644
index 8bdd968..0000000
--- a/tests/language/parameter_initializer5_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Use the this.x parameter in an initializer expression.
-
-class Foo {
-  var x, y;
-  Foo(this.x) : y = x {}
-}
-
-main() {
-  new Foo(12);
-}
diff --git a/tests/language/parameter_initializer6_negative_test.dart b/tests/language/parameter_initializer6_negative_test.dart
deleted file mode 100644
index 40a2231..0000000
--- a/tests/language/parameter_initializer6_negative_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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";
-
-// It is a compile-time error if a named formal parameter begins with an '_'
-
-class Foo {
-  num _y;
-  Foo.optional_private({this._y: 77}) {}
-}
-
-main() {
-  var obj;
-  obj = new Foo.optional_private(_y: 222);
-  Expect.equals(222, obj._y);
-
-  obj = new Foo.optional_private();
-  Expect.equals(77, obj._y);
-}
diff --git a/tests/language/parameter_initializer_test.dart b/tests/language/parameter_initializer_test.dart
deleted file mode 100644
index cde9c2c..0000000
--- a/tests/language/parameter_initializer_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// 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";
-
-class ParameterInitializerTest {
-  static testMain() {
-    var obj = new Foo.untyped(1);
-    Expect.equals(1, obj.x);
-
-    obj = new Foo.supertype(9);
-    Expect.equals(9, obj.x);
-
-    obj = new Foo.subtype(7);
-    Expect.equals(7, obj.x);
-
-    obj = new Foo.optional(111);
-    Expect.equals(111, obj.x);
-
-    obj = new Foo.optional();
-    Expect.equals(5, obj.x);
-
-    obj = new Foo(1);
-    Expect.equals(2, obj.x);
-
-    obj = new SubFoo(42);
-    Expect.equals(1, obj.x);
-
-    obj = new SubSubFoo(42);
-    Expect.equals(1, obj.x);
-  }
-}
-
-class Foo {
-  Foo(num this.x) {
-    // Reference to x must resolve to the field.
-    x++;
-    Expect.equals(this.x, x);
-  }
-
-  Foo.untyped(this.x) {}
-  Foo.supertype(Object this.x) {}
-  Foo.subtype(int this.x) {}
-  Foo.optional([this.x = 5]) {}
-
-  num x;
-}
-
-class SubFoo extends Foo {
-  SubFoo(num y)
-      : super(y),
-        x_ = 0 {
-    // Subfoo.setter of x has been invoked in the Foo constructor.
-    Expect.equals(x, 1);
-    Expect.equals(x_, 1);
-
-    // The super.x will resolved to the field in Foo.
-    Expect.equals(super.x, y);
-  }
-
-  get x {
-    return x_;
-  }
-
-  set x(num val) {
-    x_ = val;
-  }
-
-  num x_;
-}
-
-class SubSubFoo extends SubFoo {
-  SubSubFoo(num y) : super(y) {
-    // Subfoo.setter of x has been invoked in the Foo constructor.
-    Expect.equals(x, 1);
-    Expect.equals(x_, 1);
-
-    // There is no way to get to the field in Foo.
-    Expect.equals(super.x, 1);
-  }
-}
-
-main() {
-  ParameterInitializerTest.testMain();
-}
diff --git a/tests/language/parameter_metadata_test.dart b/tests/language/parameter_metadata_test.dart
deleted file mode 100644
index 706ff11..0000000
--- a/tests/language/parameter_metadata_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that metadata annotations can be handled on nested parameters.
-
-test(
-     @deprecated //   //# 01: ok
-    f(
-       @deprecated // //# 02: ok
-        a,
-       @deprecated // //# 03: ok
-        g(
-         @deprecated //# 04: ok
-            b))) {}
-
-main() {
-  test(null);
-}
diff --git a/tests/language/parameter_name_conflict_test.dart b/tests/language/parameter_name_conflict_test.dart
deleted file mode 100644
index 3f238da..0000000
--- a/tests/language/parameter_name_conflict_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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";
-
-foo(t0) {
-  var a = t0, b = baz(), c = bar();
-  if (t0 == 'foo') {
-    // Force a SSA swapping problem where dart2js used to use 't0' as
-    // a temporary variable.
-    var tmp = c;
-    c = b;
-    b = tmp;
-  }
-
-  Expect.equals('foo', a);
-  Expect.equals('foo', t0);
-  Expect.equals('bar', b);
-  Expect.equals('baz', c);
-}
-
-bar() => 'bar';
-baz() => 'baz';
-
-main() {
-  foo('foo');
-}
diff --git a/tests/language/parameter_types_specialization_test.dart b/tests/language/parameter_types_specialization_test.dart
deleted file mode 100644
index 532a7a7..0000000
--- a/tests/language/parameter_types_specialization_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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.
-// Test that we invalidate parameter type optimization in the presence
-// of optional parameters.
-
-import "package:expect/expect.dart";
-
-class A {
-  void foo(bool firstInvocation, [a = 42, b = 'foo']) {
-    if (firstInvocation) {
-      Expect.isTrue(a is String);
-      Expect.isTrue(b is int);
-    } else {
-      Expect.isTrue(a is int);
-      Expect.isTrue(b is String);
-    }
-  }
-}
-
-test() {
-  // This call to [A.foo] will be in the queue after [A.foo] has been
-  // compiled with the optimistic type assumptions.
-  new A().foo(false);
-}
-
-main() {
-  test();
-  // This call to [A.foo] will be the first in the queue, and dart2js
-  // will optimize the method with these parameter types.
-  new A().foo(true, 'bar', 42);
-}
diff --git a/tests/language/parse_closures_in_initializers_test.dart b/tests/language/parse_closures_in_initializers_test.dart
deleted file mode 100644
index 9fc7eda..0000000
--- a/tests/language/parse_closures_in_initializers_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, 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';
-
-// Test that function literals are parsed correctly in initializers.
-
-class A {
-  final x;
-  static foo(f) => f();
-
-  A.parenthesized(y) : x = (() => y);
-  A.stringLiteral(y) : x = "**${() => y}--";
-  A.listLiteral(y) : x = [() => y];
-  A.mapLiteral(y) : x = {"fun": () => y};
-  A.arg(y) : x = foo(() => y);
-}
-
-main() {
-  var a, f;
-  a = new A.parenthesized(499);
-  f = a.x;
-  Expect.isTrue(f is Function);
-  Expect.equals(499, f());
-
-  // The toString of closures is not specified. Just make sure that there is no
-  // crash.
-  a = new A.stringLiteral(42);
-  Expect.isTrue(a.x.startsWith("**"));
-  Expect.isTrue(a.x.endsWith("--"));
-
-  a = new A.listLiteral(99);
-  f = a.x[0];
-  Expect.isTrue(f is Function);
-  Expect.equals(99, f());
-
-  a = new A.mapLiteral(314);
-  f = a.x["fun"];
-  Expect.isTrue(f is Function);
-  Expect.equals(314, f());
-
-  a = new A.arg(123);
-  Expect.equals(123, a.x);
-}
diff --git a/tests/language/parse_types_test.dart b/tests/language/parse_types_test.dart
deleted file mode 100644
index 665759d..0000000
--- a/tests/language/parse_types_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing parsing of "standard" types.
-
-import "package:expect/expect.dart";
-
-class ParseTypesTest {
-  static bool callBool1() {
-    return true;
-  }
-
-  static bool callBool2() {
-    return false;
-  }
-
-  static int callInt() {
-    return 2;
-  }
-
-  static String callString() {
-    return "Hey";
-  }
-
-  static double callDouble() {
-    return 4.0;
-  }
-
-  static void testMain() {
-    Expect.equals(true, ParseTypesTest.callBool1());
-    Expect.equals(false, ParseTypesTest.callBool2());
-    Expect.equals(2, ParseTypesTest.callInt());
-    Expect.equals("Hey", ParseTypesTest.callString());
-    Expect.equals(4.0, ParseTypesTest.callDouble());
-  }
-}
-
-main() {
-  ParseTypesTest.testMain();
-}
diff --git a/tests/language/parser_quirks_test.dart b/tests/language/parser_quirks_test.dart
deleted file mode 100644
index 49681df..0000000
--- a/tests/language/parser_quirks_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-// Test that a Dart implementation doesn't turn dynamic errors into
-// compilation errors.
-
-f(x) {}
-
-class MyClass {
-  MyClass(x, y);
-
-  foo() {
-    var z;
-    // Neither y nor x are defined. So they are simply dynamic
-    // (getter) sends to this, not compile-time errors.
-    if (false) f(new MyClass(z, y[x.y.z]));
-    if (false) print(y[x.y.z]);
-  }
-}
-
-main() {
-  var x;
-  // We know the concrete type of f (a function closure) does not
-  // support the index operator. However, this is a dynamic error, so
-  // this program should compile.
-  if (false) print(f[x.y.z]);
-  new MyClass(0, 0).foo();
-}
diff --git a/tests/language/part2_test.dart b/tests/language/part2_test.dart
deleted file mode 100644
index f2e3bea..0000000
--- a/tests/language/part2_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library org.dartlang.test.part2_test;
-
-part "part_part.dart"; // This is a static warning.
-
-main() {
-  print(foo);
-}
diff --git a/tests/language/part_of_uri2_part.dart b/tests/language/part_of_uri2_part.dart
deleted file mode 100644
index 22c889a..0000000
--- a/tests/language/part_of_uri2_part.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-part of "part_of_uri2_test.dart";
-
-// Refer to declaration in library and other part.
-const bar1 = "part1";
-const baz1 = "$foo${bar2}1";
diff --git a/tests/language/part_of_uri2_part2.dart b/tests/language/part_of_uri2_part2.dart
deleted file mode 100644
index 0b049fb..0000000
--- a/tests/language/part_of_uri2_part2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-part of part_of_uri2;
-
-// Refer to declaration in library and other part.
-const bar2 = "part2";
-const baz2 = "$foo${bar1}2";
diff --git a/tests/language/part_of_uri2_test.dart b/tests/language/part_of_uri2_test.dart
deleted file mode 100644
index cb59135..0000000
--- a/tests/language/part_of_uri2_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-library part_of_uri2;
-
-part "part_of_uri2_part.dart"; // declares bar1, baz1, uses URI.
-part "part_of_uri2_part2.dart"; // declares bar2, baz2, uses id.
-
-const foo = 'foo';
-const qux = "$baz1$baz2";
-
-main() {
-  if (!identical(qux, "foopart21foopart12")) throw "Fail: $qux";
-}
diff --git a/tests/language/part_of_uri_part.dart b/tests/language/part_of_uri_part.dart
deleted file mode 100644
index 55edadf..0000000
--- a/tests/language/part_of_uri_part.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-part of "part_of_uri_test.dart";
-
-// Refer to declaration in library and other part.
-const bar1 = "part1";
-const baz1 = "$foo${bar2}1";
diff --git a/tests/language/part_of_uri_part2.dart b/tests/language/part_of_uri_part2.dart
deleted file mode 100644
index 5069b53..0000000
--- a/tests/language/part_of_uri_part2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-part of "part_of_uri_test.dart";
-
-// Refer to declaration in library and other part.
-const bar2 = "part2";
-const baz2 = "$foo${bar1}2";
diff --git a/tests/language/part_of_uri_test.dart b/tests/language/part_of_uri_test.dart
deleted file mode 100644
index 95d5dfd..0000000
--- a/tests/language/part_of_uri_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-// No library declaration
-part "part_of_uri_part.dart"; // declares bar1, baz1
-part "part_of_uri_part2.dart"; // declares bar2, baz2
-
-const foo = 'foo';
-const qux = "$baz1$baz2";
-
-main() {
-  if (!identical(qux, "foopart21foopart12")) throw "Fail: $qux";
-}
diff --git a/tests/language/part_part.dart b/tests/language/part_part.dart
deleted file mode 100644
index 6c255db..0000000
--- a/tests/language/part_part.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-part of org.dartlang.test.part_test;
-
-const foo = 'foo';
diff --git a/tests/language/part_refers_to_core_library_test.dart b/tests/language/part_refers_to_core_library_test.dart
deleted file mode 100644
index 0d961c0..0000000
--- a/tests/language/part_refers_to_core_library_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-// This test reproduces https://github.com/dart-lang/sdk/issues/29709.
-
-library dart.async;
-
-part 'dart:async/future.dart'; /// 01: compile-time error
-
-main() {}
diff --git a/tests/language/part_test.dart b/tests/language/part_test.dart
deleted file mode 100644
index 38d84d8..0000000
--- a/tests/language/part_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-library org.dartlang.test.part_test;
-
-part "part_part.dart";
-
-main() {
-  print(foo);
-}
diff --git a/tests/language/partial_min_test.dart b/tests/language/partial_min_test.dart
deleted file mode 100644
index 754549a..0000000
--- a/tests/language/partial_min_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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";
-
-// This test triggered an NPE in dart2js.
-// The bug needed:
-// - double usage of the same variable in one expression ("b != b").
-// - replacement of "b" with "typechecked b".
-// - ...
-// The example below is minimal (as far as I was able to do).
-
-num foo(num a, num b) {
-  if (a > b) return b;
-  if (b is double) {
-    if (true) {
-      if (true) {
-        return (a + b) * a * b;
-      }
-    }
-    // Check for NaN and b == -0.0.
-    if (a == 0 && b == 0 || b != b) return b;
-  }
-}
-
-main() {
-  Expect.equals(1, foo(2, 1));
-}
diff --git a/tests/language/patch_test.dart b/tests/language/patch_test.dart
deleted file mode 100644
index 2815cbf..0000000
--- a/tests/language/patch_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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";
-
-patch() {
-  return 12;
-}
-
-main() {
-  var x = patch();
-  Expect.equals(12, x);
-}
diff --git a/tests/language/phi_merge_test.dart b/tests/language/phi_merge_test.dart
deleted file mode 100644
index ab8059c..0000000
--- a/tests/language/phi_merge_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to crash on this code.
-
-class A {
-  operator []=(index, value) {
-    switch (value) {
-      case 42:
-        break;
-      case 43:
-        break;
-    }
-  }
-}
-
-main() {
-  // Make [a] a phi.
-  var a;
-  if (true) {
-    a = new A();
-  } else {
-    a = new A();
-  }
-  // `A[]=` being inlined, the compiler was confused when merging the
-  // phis after the switch.
-  a[0] = 42;
-
-  // Use [a] to provoke the crash.
-  print(a);
-}
diff --git a/tests/language/positional_parameters_type_test.dart b/tests/language/positional_parameters_type_test.dart
deleted file mode 100644
index f3970ee..0000000
--- a/tests/language/positional_parameters_type_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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=--checked
-//
-// Dart test program for testing optional positional parameters in type tests.
-
-main() {
-  Function anyFunction;
-  void acceptFunNumOptBool(void funNumOptBool(num n, [bool b])) {}
-  void funNum(num n) {}
-  void funNumBool(num n, bool b) {}
-  void funNumOptBool(num n, [bool b = true]) {}
-  void funNumOptBoolX(num n, [bool x = true]) {}
-
-  anyFunction = funNum;
-  anyFunction = funNumBool;
-  anyFunction = funNumOptBool;
-  anyFunction = funNumOptBoolX;
-  acceptFunNumOptBool(funNumOptBool);
-  acceptFunNumOptBool(funNumOptBoolX);
-  acceptFunNumOptBool(funNum); // //# 01: runtime error
-  acceptFunNumOptBool(funNumBool); // //# 02: static type warning, runtime error
-}
diff --git a/tests/language/positive_bit_operations_test.dart b/tests/language/positive_bit_operations_test.dart
deleted file mode 100644
index 396360c..0000000
--- a/tests/language/positive_bit_operations_test.dart
+++ /dev/null
@@ -1,144 +0,0 @@
-// 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";
-
-constants() {
-  Expect.equals(0x80000000, 0x80000000 | 0);
-  Expect.equals(0x80000001, 0x80000000 | 1);
-  Expect.equals(0x80000000, 0x80000000 | 0x80000000);
-  Expect.equals(0xFFFFFFFF, 0xFFFF0000 | 0xFFFF);
-  Expect.equals(0x80000000, 0x80000000 & 0xFFFFFFFF);
-  Expect.equals(0x80000000, 0x80000000 & 0x80000000);
-  Expect.equals(0x80000000, 0x80000000 & 0xF0000000);
-  Expect.equals(0x80000000, 0xFFFFFFFF & 0x80000000);
-  Expect.equals(0x80000000, 0x80000000 ^ 0);
-  Expect.equals(0xFFFFFFFF, 0x80000000 ^ 0x7FFFFFFF);
-  Expect.equals(0xFFFFFFFF, 0x7FFFFFFF ^ 0x80000000);
-  Expect.equals(0xF0000000, 0x70000000 ^ 0x80000000);
-  Expect.equals(0x80000000, 1 << 31);
-  Expect.equals(0xFFFFFFF0, 0xFFFFFFF << 4);
-  Expect.equals(0x7FFFFFFF, 0xFFFFFFFF >> 1);
-  Expect.equals(
-      0xFFFFFFFC,
-      ((((((0xFFFFFFF << 4) // 0xFFFFFFF0
-                          >>
-                          1) // 0x7FFFFFF8
-                      |
-                      0x80000000) // 0xFFFFFFF8
-                  >>
-                  2) // 0x3FFFFFFE
-              ^
-              0x40000000) // 0x7FFFFFFE
-          <<
-          1));
-}
-
-foo(i) {
-  if (i != 0) {
-    y--;
-    foo(i - 1);
-    y++;
-  }
-}
-
-var y;
-
-// id returns [x] in a way that should be difficult to predict statically.
-id(x) {
-  y = x;
-  foo(10);
-  return y;
-}
-
-interceptors() {
-  Expect.equals(0x80000000, id(0x80000000) | id(0));
-  Expect.equals(0x80000001, id(0x80000000) | id(1));
-  Expect.equals(0x80000000, id(0x80000000) | id(0x80000000));
-  Expect.equals(0xFFFFFFFF, id(0xFFFF0000) | id(0xFFFF));
-  Expect.equals(0x80000000, id(0x80000000) & id(0xFFFFFFFF));
-  Expect.equals(0x80000000, id(0x80000000) & id(0x80000000));
-  Expect.equals(0x80000000, id(0x80000000) & id(0xF0000000));
-  Expect.equals(0x80000000, id(0xFFFFFFFF) & id(0x80000000));
-  Expect.equals(0x80000000, id(0x80000000) ^ id(0));
-  Expect.equals(0xFFFFFFFF, id(0x80000000) ^ id(0x7FFFFFFF));
-  Expect.equals(0xFFFFFFFF, id(0x7FFFFFFF) ^ id(0x80000000));
-  Expect.equals(0xF0000000, id(0x70000000) ^ id(0x80000000));
-  Expect.equals(0x80000000, id(1) << id(31));
-  Expect.equals(0xFFFFFFF0, id(0xFFFFFFF) << id(4));
-  Expect.equals(0x7FFFFFFF, id(0xFFFFFFFF) >> id(1));
-  Expect.equals(
-      0xFFFFFFFC,
-      ((((((id(0xFFFFFFF) << 4) // 0xFFFFFFF0
-                          >>
-                          1) // 0x7FFFFFF8
-                      |
-                      0x80000000) // 0xFFFFFFF8
-                  >>
-                  2) // 0x3FFFFFFE
-              ^
-              0x40000000) // 0x7FFFFFFE
-          <<
-          1));
-}
-
-speculative() {
-  var a = id(0x80000000);
-  var b = id(0);
-  var c = id(1);
-  var d = id(0xFFFF0000);
-  var e = id(0xFFFF);
-  var f = id(0xFFFFFFFF);
-  var g = id(0xF0000000);
-  var h = id(0x7FFFFFFF);
-  var j = id(0x70000000);
-  var k = id(31);
-  var l = id(4);
-  var m = id(0xFFFFFFF);
-  for (int i = 0; i < 1; i++) {
-    Expect.equals(0x80000000, a | b);
-    Expect.equals(0x80000001, a | c);
-    Expect.equals(0x80000000, a | a);
-    Expect.equals(0xFFFFFFFF, d | e);
-    Expect.equals(0x80000000, a & f);
-    Expect.equals(0x80000000, a & a);
-    Expect.equals(0x80000000, a & g);
-    Expect.equals(0x80000000, f & a);
-    Expect.equals(0x80000000, a ^ b);
-    Expect.equals(0xFFFFFFFF, a ^ h);
-    Expect.equals(0xFFFFFFFF, h ^ a);
-    Expect.equals(0xF0000000, j ^ a);
-    Expect.equals(0x80000000, c << k);
-    Expect.equals(0xFFFFFFF0, m << l);
-    Expect.equals(0x7FFFFFFF, f >> c);
-    Expect.equals(
-        0xFFFFFFFC,
-        ((((((m << 4) // 0xFFFFFFF0
-                            >>
-                            1) // 0x7FFFFFF8
-                        |
-                        0x80000000) // 0xFFFFFFF8
-                    >>
-                    2) // 0x3FFFFFFE
-                ^
-                0x40000000) // 0x7FFFFFFE
-            <<
-            1));
-  }
-}
-
-// Due to bad precedence rules this example was broken in Dart2Js.
-precedence() {
-  Expect.equals(0x80000000, -1 & 0x80000000);
-  Expect.equals(0x80000000, id(-1) & 0x80000000);
-  Expect.equals(0x80000000, ~(~(0x80000000)));
-  Expect.equals(0x80000000, ~(~(id(0x80000000))));
-}
-
-main() {
-  constants();
-  interceptors();
-  speculative();
-  precedence();
-}
diff --git a/tests/language/precedence_test.dart b/tests/language/precedence_test.dart
deleted file mode 100644
index d22ca89..0000000
--- a/tests/language/precedence_test.dart
+++ /dev/null
@@ -1,179 +0,0 @@
-// 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.
-// Dart test program to test operation precedence.
-
-library precedence_test;
-
-import "package:expect/expect.dart";
-
-main() {
-  testBang();
-  testIndexWithPrefixAdd();
-  testIndexWithPostfixAdd();
-  testTilde();
-  testUnaryPrefixWithAdd();
-  testUnaryPostfixWithAdd();
-  testUnaryPrefixWithMultiply();
-  testUnaryPostfixWithMultiply();
-}
-
-void testBang() {
-  int x = 3;
-
-  Expect.equals(!true == false, true);
-  Expect.equals(!x.isEven, true);
-  Expect.equals(!(++x).isEven, false);
-  Expect.equals(x, 4);
-  Expect.equals(!(x++).isEven, false);
-  Expect.equals(x, 5);
-}
-
-void testIndexWithPrefixAdd() {
-  var x = <int>[3];
-
-  Expect.equals(++x[0] + 3, 7);
-  Expect.equals(x[0], 4);
-  Expect.equals(++x[0] - 3, 2);
-  Expect.equals(x[0], 5);
-  Expect.equals(--x[0] + 4, 8);
-  Expect.equals(x[0], 4);
-  Expect.equals(--x[0] - 4, -1);
-  Expect.equals(x[0], 3);
-
-  Expect.equals(3 + ++x[0], 7);
-  Expect.equals(x[0], 4);
-  Expect.equals(3 - ++x[0], -2);
-  Expect.equals(x[0], 5);
-  Expect.equals(4 + --x[0], 8);
-  Expect.equals(x[0], 4);
-  Expect.equals(4 - --x[0], 1);
-  Expect.equals(x[0], 3);
-}
-
-void testIndexWithPostfixAdd() {
-  var x = <int>[3];
-
-  Expect.equals(x[0]++ + 3, 6);
-  Expect.equals(x[0], 4);
-  Expect.equals(x[0]++ - 3, 1);
-  Expect.equals(x[0], 5);
-  Expect.equals(x[0]-- + 4, 9);
-  Expect.equals(x[0], 4);
-  Expect.equals(x[0]-- - 4, 0);
-  Expect.equals(x[0], 3);
-
-  Expect.equals(3 + x[0]++, 6);
-  Expect.equals(x[0], 4);
-  Expect.equals(3 - x[0]++, -1);
-  Expect.equals(x[0], 5);
-  Expect.equals(4 + x[0]--, 9);
-  Expect.equals(x[0], 4);
-  Expect.equals(4 - x[0]--, 0);
-  Expect.equals(x[0], 3);
-}
-
-void testTilde() {
-  int x = 3;
-
-  Expect.equals(~x.sign, ~(x.sign));
-  Expect.equals(~x + 7, (~3) + 7);
-
-  Expect.equals(~++x + 7, (~4) + 7);
-  Expect.equals(x, 4);
-  Expect.equals(~x++ + 7, (~4) + 7);
-  Expect.equals(x, 5);
-
-  Expect.equals(~ --x + 7, (~4) + 7);
-  Expect.equals(x, 4);
-  Expect.equals(~x-- + 7, (~4) + 7);
-  Expect.equals(x, 3);
-}
-
-void testUnaryPrefixWithAdd() {
-  int x = 3;
-
-  Expect.equals(++x + 3, 7);
-  Expect.equals(x, 4);
-  Expect.equals(++x - 3, 2);
-  Expect.equals(x, 5);
-  Expect.equals(--x + 4, 8);
-  Expect.equals(x, 4);
-  Expect.equals(--x - 4, -1);
-  Expect.equals(x, 3);
-
-  Expect.equals(3 + ++x, 7);
-  Expect.equals(x, 4);
-  Expect.equals(3 - ++x, -2);
-  Expect.equals(x, 5);
-  Expect.equals(4 + --x, 8);
-  Expect.equals(x, 4);
-  Expect.equals(4 - --x, 1);
-  Expect.equals(x, 3);
-}
-
-void testUnaryPostfixWithAdd() {
-  int x = 3;
-
-  Expect.equals(x++ + 3, 6);
-  Expect.equals(x, 4);
-  Expect.equals(x++ - 3, 1);
-  Expect.equals(x, 5);
-  Expect.equals(x-- + 4, 9);
-  Expect.equals(x, 4);
-  Expect.equals(x-- - 4, 0);
-  Expect.equals(x, 3);
-
-  Expect.equals(3 + x++, 6);
-  Expect.equals(x, 4);
-  Expect.equals(3 - x++, -1);
-  Expect.equals(x, 5);
-  Expect.equals(4 + x--, 9);
-  Expect.equals(x, 4);
-  Expect.equals(4 - x--, 0);
-  Expect.equals(x, 3);
-}
-
-void testUnaryPrefixWithMultiply() {
-  int x = 3;
-
-  Expect.equals(++x * 3, 12);
-  Expect.equals(x, 4);
-  Expect.equals(++x / 5, 1.0);
-  Expect.equals(x, 5);
-  Expect.equals(--x * 3, 12);
-  Expect.equals(x, 4);
-  Expect.equals(--x / 4, 0.75);
-  Expect.equals(x, 3);
-
-  Expect.equals(3 * ++x, 12);
-  Expect.equals(x, 4);
-  Expect.equals(5 / ++x, 1.0);
-  Expect.equals(x, 5);
-  Expect.equals(3 * --x, 12);
-  Expect.equals(x, 4);
-  Expect.equals(6 / --x, 2.0);
-  Expect.equals(x, 3);
-}
-
-void testUnaryPostfixWithMultiply() {
-  int x = 3;
-
-  Expect.equals(x++ * 3, 9);
-  Expect.equals(x, 4);
-  Expect.equals(x++ / 4, 1.0);
-  Expect.equals(x, 5);
-  Expect.equals(x-- * 3, 15);
-  Expect.equals(x, 4);
-  Expect.equals(x-- / 4, 1.0);
-  Expect.equals(x, 3);
-
-  Expect.equals(3 * x++, 9);
-  Expect.equals(x, 4);
-  Expect.equals(3 / x++, 0.75);
-  Expect.equals(x, 5);
-  Expect.equals(4 * x--, 20);
-  Expect.equals(x, 4);
-  Expect.equals(4 / x--, 1.0);
-  Expect.equals(x, 3);
-}
diff --git a/tests/language/prefix101_test.dart b/tests/language/prefix101_test.dart
deleted file mode 100644
index 206b427..0000000
--- a/tests/language/prefix101_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// 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.
-
-// Test to check if we are able to import multiple libraries using the
-// same prefix.
-
-library Prefix101Test.dart;
-
-import "package:expect/expect.dart";
-import "library10.dart" as lib101;
-import "library11.dart" as lib101;
-
-class Prefix101Test {
-  static Test1() {
-    var result = 0;
-    var obj = new lib101.Library10(1);
-    result = obj.fld;
-    Expect.equals(1, result);
-    result += obj.func();
-    Expect.equals(3, result);
-    result += lib101.Library10.static_func();
-    Expect.equals(6, result);
-    result += lib101.Library10.static_fld;
-    Expect.equals(10, result);
-  }
-
-  static Test2() {
-    var result = 0;
-    var obj = new lib101.Library11(4);
-    result = obj.fld;
-    Expect.equals(4, result);
-    result += obj.func();
-    Expect.equals(7, result);
-    result += lib101.Library11.static_func();
-    Expect.equals(9, result);
-    result += lib101.Library11.static_fld;
-    Expect.equals(10, result);
-  }
-
-  static Test3() {
-    Expect.equals(10, lib101.top_level10);
-    Expect.equals(20, lib101.top_level_func10());
-  }
-
-  static Test4() {
-    Expect.equals(100, lib101.top_level11);
-    Expect.equals(200, lib101.top_level_func11());
-  }
-}
-
-main() {
-  Prefix101Test.Test1();
-  Prefix101Test.Test2();
-  Prefix101Test.Test3();
-  Prefix101Test.Test4();
-}
diff --git a/tests/language/prefix10_negative_test.dart b/tests/language/prefix10_negative_test.dart
deleted file mode 100644
index c660513..0000000
--- a/tests/language/prefix10_negative_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-
-// Type parameters can shadow a library prefix.
-
-library Prefix10NegativeTest.dart;
-
-import "package:expect/expect.dart";
-import "library10.dart" as T;
-
-class P<T> {
-  P.named(T this.fld);
-  T fld;
-  main() {
-    var i = new T.Library10(10); // This should be an error.
-    Expect.equals(10, i.fld);
-  }
-}
-
-main() {
-  var i = new P<int>.named(10);
-  i.main();
-}
diff --git a/tests/language/prefix10_test.dart b/tests/language/prefix10_test.dart
deleted file mode 100644
index 4f0f051..0000000
--- a/tests/language/prefix10_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2011, 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 Prefix10Test.dart;
-
-import "package:expect/expect.dart";
-import "library10.dart" as lib10;
-import "library11.dart" as lib11;
-
-class Prefix10Test {
-  static Test1() {
-    var result = 0;
-    var obj = new lib10.Library10(1);
-    result = obj.fld;
-    Expect.equals(1, result);
-    result += obj.func();
-    Expect.equals(3, result);
-    result += lib10.Library10.static_func();
-    Expect.equals(6, result);
-    result += lib10.Library10.static_fld;
-    Expect.equals(10, result);
-  }
-
-  static Test2() {
-    var result = 0;
-    var obj = new lib11.Library11(4);
-    result = obj.fld;
-    Expect.equals(4, result);
-    result += obj.func();
-    Expect.equals(7, result);
-    result += lib11.Library11.static_func();
-    Expect.equals(9, result);
-    result += lib11.Library11.static_fld;
-    Expect.equals(10, result);
-  }
-
-  static Test3() {
-    Expect.equals(10, lib10.top_level10);
-    Expect.equals(20, lib10.top_level_func10());
-  }
-
-  static Test4() {
-    Expect.equals(100, lib11.top_level11);
-    Expect.equals(200, lib11.top_level_func11());
-  }
-}
-
-main() {
-  Prefix10Test.Test1();
-  Prefix10Test.Test2();
-  Prefix10Test.Test3();
-  Prefix10Test.Test4();
-}
diff --git a/tests/language/prefix11_negative_test.dart b/tests/language/prefix11_negative_test.dart
deleted file mode 100644
index 40df3d1..0000000
--- a/tests/language/prefix11_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Symbols in libraries imported by the prefixed library should not be visible
-
-library Prefix11NegativeTest.dart;
-
-import "library12.dart" as lib12;
-
-main() {
-  var obj = new lib12.Library11(1); // Error, method should not be visible
-}
diff --git a/tests/language/prefix11_test.dart b/tests/language/prefix11_test.dart
deleted file mode 100644
index c6c1641..0000000
--- a/tests/language/prefix11_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2011, 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 Prefix11Test.dart;
-
-import "package:expect/expect.dart";
-import "library10.dart";
-import "library11.dart" as lib11;
-
-class Prefix11Test {
-  static Test1() {
-    var result = 0;
-    var obj = new Library10(1);
-    result = obj.fld;
-    Expect.equals(1, result);
-    result += obj.func();
-    Expect.equals(3, result);
-    result += Library10.static_func();
-    Expect.equals(6, result);
-    result += Library10.static_fld;
-    Expect.equals(10, result);
-  }
-
-  static Test2() {
-    var result = 0;
-    var obj = new lib11.Library11(4);
-    result = obj.fld;
-    Expect.equals(4, result);
-    result += obj.func();
-    Expect.equals(7, result);
-    result += lib11.Library11.static_func();
-    Expect.equals(9, result);
-    result += lib11.Library11.static_fld;
-    Expect.equals(10, result);
-  }
-
-  static Test3() {
-    Expect.equals(10, top_level10);
-    Expect.equals(20, top_level_func10());
-  }
-
-  static Test4() {
-    Expect.equals(100, lib11.top_level11);
-    Expect.equals(200, lib11.top_level_func11());
-  }
-}
-
-main() {
-  Prefix11Test.Test1();
-  Prefix11Test.Test2();
-  Prefix11Test.Test3();
-  Prefix11Test.Test4();
-}
diff --git a/tests/language/prefix12_negative_test.dart b/tests/language/prefix12_negative_test.dart
deleted file mode 100644
index 8c2ba21..0000000
--- a/tests/language/prefix12_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Symbols in libraries imported by the prefixed library should not be visible
-
-library Prefix12NegativeTest.dart;
-
-import "library12.dart" as lib12;
-
-main() {
-  var obj = lib12.top_level11; // Error, variable should not be visible
-}
diff --git a/tests/language/prefix12_test.dart b/tests/language/prefix12_test.dart
deleted file mode 100644
index 1aeae09..0000000
--- a/tests/language/prefix12_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2011, 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 Prefix12Test.dart;
-
-import "package:expect/expect.dart";
-import "library11.dart" as lib11;
-
-class Prefix12Test {
-  static Test1() {
-    var result = 0;
-    var obj = new lib11.Library11.namedConstructor(10);
-    result = obj.fld;
-    Expect.equals(10, result);
-  }
-
-  static Test2() {
-    int result = 0;
-    var obj = new lib11.Library111<int>.namedConstructor(10);
-    result = obj.fld;
-    Expect.equals(10, result);
-  }
-}
-
-main() {
-  Prefix12Test.Test1();
-  Prefix12Test.Test2();
-}
diff --git a/tests/language/prefix13_negative_test.dart b/tests/language/prefix13_negative_test.dart
deleted file mode 100644
index 63b74b1..0000000
--- a/tests/language/prefix13_negative_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Unresolved symbols should be reported as an error.
-
-library Prefix13NegativeTest.dart;
-
-import "library12.dart" as lib12;
-
-class myClass extends lib12.Library13 {
-  myClass(int this.fld) : super(0);
-  int fld;
-}
-
-main() {
-  new myClass(1);
-}
diff --git a/tests/language/prefix14_test.dart b/tests/language/prefix14_test.dart
deleted file mode 100644
index 22e83d5..0000000
--- a/tests/language/prefix14_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Use qualified symbols at various places.
-
-library Prefix14Test.dart;
-
-import "package:expect/expect.dart";
-import "library12.dart" as lib12;
-
-typedef lib12.Library12 myFunc(lib12.Library12 param);
-
-class myInterface implements lib12.Library12Interface {
-  myInterface(lib12.Library12 this.myfld);
-  lib12.Library12 addObjects(lib12.Library12 value1, lib12.Library12 value2) {
-    myfld.fld = (value1.fld + value2.fld + myfld.fld);
-    return myfld;
-  }
-
-  lib12.Library12 myfld;
-}
-
-class myClass extends lib12.Library12 {
-  myClass(int value) : super(value);
-  static lib12.Library12 func1() {
-    var i = new lib12.Library12(10);
-    return i;
-  }
-
-  static lib12.Library12 func2(lib12.Library12 param) {
-    return param;
-  }
-}
-
-class myClass1 {
-  myClass1(int value) : fld1 = new lib12.Library12(value);
-  lib12.Library12 fld1;
-}
-
-class myClass2 {
-  myClass2(lib12.Library12 this.fld2);
-  lib12.Library12 fld2;
-}
-
-main() {
-  var o = myClass.func1();
-  Expect.equals(2, o.func());
-  o = new myClass(10);
-  Expect.equals(10, o.fld);
-
-  myFunc func = myClass.func2;
-  Expect.equals(2, func(new lib12.Library12(10)).func());
-  Expect.equals(10, func(new lib12.Library12(10)).fld);
-
-  o = new myClass1(100);
-  Expect.equals(2, o.fld1.func());
-  Expect.equals(100, o.fld1.fld);
-
-  o = new myClass2(new lib12.Library12(200));
-  Expect.equals(2, o.fld2.func());
-  Expect.equals(200, o.fld2.fld);
-
-  o = new myInterface(new lib12.Library12(100));
-  Expect.equals(2, o.myfld.func());
-  Expect.equals(100, o.myfld.fld);
-  o = o.addObjects(new lib12.Library12(200), new lib12.Library12(300));
-  Expect.equals(2, o.func());
-  Expect.equals(600, o.fld);
-}
diff --git a/tests/language/prefix15_negative_test.dart b/tests/language/prefix15_negative_test.dart
deleted file mode 100644
index 156c512..0000000
--- a/tests/language/prefix15_negative_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Unresolved symbols should be reported as an error.
-
-library Prefix15NegativeTest.dart;
-
-import "library12.dart" as lib12;
-
-class myClass implements lib12.Library13 {
-  myClass(int this.fld) : super(0);
-  int fld;
-}
-
-main() {
-  new myClass(1);
-}
diff --git a/tests/language/prefix15_test.dart b/tests/language/prefix15_test.dart
deleted file mode 100644
index 2ad45b9..0000000
--- a/tests/language/prefix15_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Use qualified symbols with generics at various places.
-
-library Prefix15Test.dart;
-
-import "package:expect/expect.dart";
-import "library12.dart" as lib12;
-
-typedef T myFunc<T>(T param);
-
-class myInterface<T> implements lib12.Library12Interface {
-  myInterface(T this.myfld);
-  T addObjects(T value1, T value2) {
-    myfld.fld = (value1.fld + value2.fld + myfld.fld);
-    return myfld;
-  }
-
-  T myfld;
-}
-
-class myClass2<T> {
-  myClass2(T this.fld2);
-  T func(T val) => val;
-  T fld2;
-}
-
-main() {
-  var o = new myClass2<lib12.Library12>(new lib12.Library12(100));
-  myFunc<lib12.Library12> func = o.func;
-  Expect.equals(2, func(new lib12.Library12(10)).func());
-  Expect.equals(10, func(new lib12.Library12(10)).fld);
-
-  o = new myClass2<lib12.Library12>(new lib12.Library12(200));
-  Expect.equals(2, o.fld2.func());
-  Expect.equals(200, o.fld2.fld);
-
-  o = new myInterface<lib12.Library12>(new lib12.Library12(100));
-  Expect.equals(2, o.myfld.func());
-  Expect.equals(100, o.myfld.fld);
-  o = o.addObjects(new lib12.Library12(200), new lib12.Library12(300));
-  Expect.equals(2, o.func());
-  Expect.equals(600, o.fld);
-}
diff --git a/tests/language/prefix16_test.dart b/tests/language/prefix16_test.dart
deleted file mode 100644
index 70c38b5..0000000
--- a/tests/language/prefix16_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Unresolved imported symbols are treated as dynamic
-// In this test, the function myFunc contains malformed types because
-// lib12.Library13 is not resolved.
-
-library Prefix16NegativeTest.dart;
-
-import "package:expect/expect.dart";
-import "library12.dart" as lib12;
-
-typedef lib12.Library13 myFunc(lib12.Library13 param);
-typedef lib12.Library13 myFunc2(lib12.Library13 param, int i);
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-main() {
-  {
-    bool got_type_error = false;
-    try {
-      // Malformed myFunc treated as (dynamic) => dynamic.
-      myFunc i = 0;
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    // Type error in checked mode only.
-    Expect.isTrue(got_type_error == isCheckedMode());
-  }
-  {
-    try {
-      // Malformed myFunc treated as (dynamic) => dynamic.
-      Expect.isTrue(((int x) => x) is myFunc);
-    } on TypeError catch (error) {
-      Expect.fail();
-    }
-  }
-  {
-    try {
-      // Malformed myFunc2 treated as (dynamic,int) => dynamic.
-      Expect.isTrue(((int x, int y) => x) is myFunc2);
-    } on TypeError catch (error) {
-      Expect.fail();
-    }
-  }
-  {
-    try {
-      // Malformed myFunc2 treated as (dynamic,int) => dynamic.
-      Expect.isFalse(((int x, String y) => x) is myFunc2);
-    } on TypeError catch (error) {
-      Expect.fail();
-    }
-  }
-}
diff --git a/tests/language/prefix17_test.dart b/tests/language/prefix17_test.dart
deleted file mode 100644
index 500911d..0000000
--- a/tests/language/prefix17_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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 Prefix17Test.dart;
-
-import "library12.dart" as lib12;
-
-class LocalClass {
-  static int static_fld;
-}
-
-void main() {
-  LocalClass.static_fld = 42;
-  var lc1 = new lib12.Library12(5);
-  lib12.Library12 lc2 = new lib12.Library12(10);
-  lib12.Library12 lc2m = new lib12.Library12.other(10, 2);
-  lib12.Library12.static_fld = 43;
-  //print("${LocalClass.static_fld}, ${lc1.fld}, ${lc2.fld}, ${lc2m.fld}, ${lib12.Library12.static_fld}");
-}
diff --git a/tests/language/prefix18_negative_test.dart b/tests/language/prefix18_negative_test.dart
deleted file mode 100644
index 0131538..0000000
--- a/tests/language/prefix18_negative_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// prefix must be a valid identifier
-
-library Prefix18NegativeTest.dart;
-import "library1.dart" as lib1.invalid;
-
-main() {
-}
diff --git a/tests/language/prefix1_negative_test.dart b/tests/language/prefix1_negative_test.dart
deleted file mode 100644
index ea6ae23..0000000
--- a/tests/language/prefix1_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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 Prefix1NegativeTest.dart;
-
-import "library1.dart";
-
-class Prefix1NegativeTest {
-  static Main() {
-    // This is a syntax error as library1 was not imported with a prefix.
-    return library1.foo;
-  }
-}
-
-main() {
-  Prefix1NegativeTest.Main();
-}
diff --git a/tests/language/prefix21_bad_lib.dart b/tests/language/prefix21_bad_lib.dart
deleted file mode 100644
index 1869a7f..0000000
--- a/tests/language/prefix21_bad_lib.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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 Prefix21Bad;
-
-int badFunction(int x) {
-  return x << 1;
-}
-
-Function get getValue {
-  return badFunction;
-}
diff --git a/tests/language/prefix21_good_lib.dart b/tests/language/prefix21_good_lib.dart
deleted file mode 100644
index 2557726..0000000
--- a/tests/language/prefix21_good_lib.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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 Prefix21Good;
-
-int goodFunction(int x) {
-  return x;
-}
-
-Function get getValue {
-  return goodFunction;
-}
diff --git a/tests/language/prefix21_test.dart b/tests/language/prefix21_test.dart
deleted file mode 100644
index bcaebd1..0000000
--- a/tests/language/prefix21_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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 Prefix21;
-
-import "package:expect/expect.dart";
-import "prefix21_good_lib.dart" as good;
-import "prefix21_bad_lib.dart" as bad;
-
-main() {
-  Expect.equals(good.getValue(42), 42);
-  Expect.equals(bad.getValue(42), 84);
-}
diff --git a/tests/language/prefix22_test.dart b/tests/language/prefix22_test.dart
deleted file mode 100644
index d6f200e..0000000
--- a/tests/language/prefix22_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-//
-// Unresolved symbols should be reported as static type warnings.
-// This should not prevent execution.
-
-library Prefix21NegativeTest.dart;
-import "library12.dart" as lib12;
-
-class myClass {
-  myClass(lib12.Library13 p) {} // //# static type warning
-}
-
-main() {
-  new myClass(null);  // no dynamic type error when assigning null
-}
diff --git a/tests/language/prefix23_test.dart b/tests/language/prefix23_test.dart
deleted file mode 100644
index 4529281..0000000
--- a/tests/language/prefix23_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Unresolved symbols should be reported as an static type warnings.
-// This should not prevent execution.
-
-library Prefix23Test.dart;
-
-import "library12.dart" as lib12;
-
-class myClass {
-  lib12.Library13 fld; // //# static type warning
-}
-
-main() {}
diff --git a/tests/language/prefix24_lib1.dart b/tests/language/prefix24_lib1.dart
deleted file mode 100644
index 557ed84..0000000
--- a/tests/language/prefix24_lib1.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2013, 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 prefix24_lib1;
-
-import "prefix24_lib2.dart" as X;
-
-// lib1_foo() returns value of bar() in library prefix24_lib2.
-lib1_foo() => X.bar();
diff --git a/tests/language/prefix24_lib2.dart b/tests/language/prefix24_lib2.dart
deleted file mode 100644
index d4dd592..0000000
--- a/tests/language/prefix24_lib2.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2013, 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 prefix24_lib2;
-
-bar() => "prefix24_lib2_bar";
diff --git a/tests/language/prefix24_lib3.dart b/tests/language/prefix24_lib3.dart
deleted file mode 100644
index 4490f9b..0000000
--- a/tests/language/prefix24_lib3.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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 prefix24_lib3;
-
-class X {
-  static bar() => "static method bar of class X";
-}
diff --git a/tests/language/prefix24_test.dart b/tests/language/prefix24_test.dart
deleted file mode 100644
index 1e2f4e6..0000000
--- a/tests/language/prefix24_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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 prefix24_test;
-
-import "package:expect/expect.dart";
-
-// Import a library that contains library prefix X.
-import "prefix24_lib1.dart";
-
-// Import a library that declares class X.
-import "prefix24_lib3.dart";
-
-// Check that the library prefix X that is used in library prefix24_lib1
-// remains private to that library and does not collide with class X
-// defined in (and imported from) prefix24_lib3;
-
-main() {
-  Expect.equals("static method bar of class X", X.bar());
-  Expect.equals("prefix24_lib2_bar", lib1_foo());
-}
diff --git a/tests/language/prefix2_negative_test.dart b/tests/language/prefix2_negative_test.dart
deleted file mode 100644
index 05cf8c3..0000000
--- a/tests/language/prefix2_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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 Prefix2NegativeTest.dart;
-
-import "library2.dart" as lib2;
-
-class Prefix2NegativeTest {
-  static Main() {
-    // This is a syntax error as multiple prefixes are not possible.
-    return lib2.Library2.main() + lib2.lib1.foo;
-  }
-}
-
-main() {
-  Prefix2NegativeTest.Main();
-}
diff --git a/tests/language/prefix3_negative_test.dart b/tests/language/prefix3_negative_test.dart
deleted file mode 100644
index 2308f7c..0000000
--- a/tests/language/prefix3_negative_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-
-// Using the same prefix name while importing two different libraries is
-// not an error but both library1.dart and library2.dart define 'foo' which
-// results in a duplicate definition error.
-
-library Prefix3NegativeTest.dart;
-
-import "library1.dart" as lib2; // defines 'foo'.
-import "library2.dart" as lib2; // also defines 'foo'.
-
-main() {
-  lib2.foo = 1;
-}
diff --git a/tests/language/prefix4_negative_test.dart b/tests/language/prefix4_negative_test.dart
deleted file mode 100644
index 5063274..0000000
--- a/tests/language/prefix4_negative_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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 Prefix4NegativeTest.dart;
-
-import "package:expect/expect.dart";
-import "library10.dart";
-
-class Prefix4NegativeTest {
-  static Test1() {
-    // Library prefixes in the imported libraries should not be visible here.
-    var result = 0;
-    var obj = new lib11.Library11(1);
-    result = obj.fld;
-    Expect.equals(1, result);
-    result += obj.func();
-    Expect.equals(3, result);
-  }
-}
-
-main() {
-  Prefix4NegativeTest.Test1();
-}
diff --git a/tests/language/prefix5_negative_test.dart b/tests/language/prefix5_negative_test.dart
deleted file mode 100644
index 930a66b..0000000
--- a/tests/language/prefix5_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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 Prefix5NegativeTest.dart;
-
-import "package:expect/expect.dart";
-import "library10.dart";
-
-class Prefix5NegativeTest {
-  static Test1() {
-    // Library prefixes in the imported libraries should not be visible here.
-    var result = 0;
-    result += lib11.Library11.static_func();
-    Expect.equals(6, result);
-    result += lib11.Library11.static_fld;
-    Expect.equals(10, result);
-  }
-}
-
-main() {
-  Prefix5NegativeTest.Test1();
-}
diff --git a/tests/language/prefix6_negative_test.dart b/tests/language/prefix6_negative_test.dart
deleted file mode 100644
index d0ee640..0000000
--- a/tests/language/prefix6_negative_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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 Prefix6NegativeTest.dart;
-
-import "library10.dart" as lib10;
-
-class Prefix6NegativeTest {
-  static Test1() {
-    // Variables in the local scope hide the library prefix.
-    var lib10 = 0;
-    var result = 0;
-    result += lib10.Library10.static_func(); // This should fail.
-  }
-}
-
-main() {
-  Prefix6NegativeTest.Test1();
-}
diff --git a/tests/language/prefix7_negative_test.dart b/tests/language/prefix7_negative_test.dart
deleted file mode 100644
index 21e313d..0000000
--- a/tests/language/prefix7_negative_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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 Prefix7NegativeTest.dart;
-
-import "library10.dart" as lib10;
-
-// Top level variables cannot shadow library prefixes, they should collide.
-
-var lib10;
-
-main() {}
diff --git a/tests/language/prefix8_negative_test.dart b/tests/language/prefix8_negative_test.dart
deleted file mode 100644
index 321bf91..0000000
--- a/tests/language/prefix8_negative_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Local variables can shadow class names and hence should result in an
-// error.
-
-class Test {
-  Test.named(int this.fld);
-  int fld;
-}
-
-main() {
-  var Test;
-  var i = new Test.named(10); // This should be an error.
-  Expect.equals(10, i.fld);
-}
diff --git a/tests/language/prefix_assignment_test.dart b/tests/language/prefix_assignment_test.dart
deleted file mode 100644
index 14e6f51..0000000
--- a/tests/language/prefix_assignment_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Validate that assignment to a prefix is handled consistently with the
-// following spec text from section 16.19 (Assignment):
-//     Evaluation of an assignment a of the form v = e proceeds as follows:
-//     Let d be the innermost declaration whose name is v or v=, if it exists.
-//     It is a compile-time error if d denotes a prefix object.
-
-import "empty_library.dart" as p;
-
-class Base {
-  var p;
-}
-
-class Derived extends Base {
-  void f() {
-    p = 1; //# 01: compile-time error
-  }
-}
-
-main() {
-  new Derived().f();
-  p = 1; //# 02: compile-time error
-}
diff --git a/tests/language/prefix_identifier_reference_test.dart b/tests/language/prefix_identifier_reference_test.dart
deleted file mode 100644
index e59b6fe..0000000
--- a/tests/language/prefix_identifier_reference_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Validate the following spec text from section 16.32 (Identifier Reference):
-//     Evaluation of an identifier expression e of the form id proceeds as
-//   follows:
-//     Let d be the innermost declaration in the enclosing lexical scope whose
-//   name is id or id=.  If no such declaration exists in the lexical scope,
-//   d be the declaration of the inherited member named id if it exists.
-//     - If d is a prefix p, a compile-time error occurs unless the token
-//       immediately following d is '.'.
-
-import "package:expect/expect.dart";
-import "empty_library.dart" as p;
-
-void f(x) {}
-
-main() {
-  f(p); //        //# 01: compile-time error
-  var x = p; //   //# 02: compile-time error
-  var x = p[0]; //# 03: compile-time error
-  p[0] = null; // //# 04: compile-time error
-  p += 0; //      //# 05: compile-time error
-}
diff --git a/tests/language/prefix_new_test.dart b/tests/language/prefix_new_test.dart
deleted file mode 100644
index 7304a74..0000000
--- a/tests/language/prefix_new_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-library PrefixTest;
-
-import "package:expect/expect.dart";
-import "prefix_test1.dart";
-
-main() {
-  Expect.equals(Prefix.getSource(), Prefix.getImport() + 1);
-}
diff --git a/tests/language/prefix_new_test1.dart b/tests/language/prefix_new_test1.dart
deleted file mode 100644
index 81a45a7..0000000
--- a/tests/language/prefix_new_test1.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-library PrefixTest1;
-
-import "prefix_test2.dart" as test2;
-
-class Prefix {
-  static const int foo = 43;
-
-  static getSource() {
-    return foo;
-  }
-
-  static getImport() {
-    return test2.Prefix.foo;
-  }
-}
diff --git a/tests/language/prefix_new_test2.dart b/tests/language/prefix_new_test2.dart
deleted file mode 100644
index 75a5c6e..0000000
--- a/tests/language/prefix_new_test2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-library PrefixNewTest2;
-
-class Prefix {
-  static const int foo = 42;
-}
diff --git a/tests/language/prefix_test.dart b/tests/language/prefix_test.dart
deleted file mode 100644
index dc71367..0000000
--- a/tests/language/prefix_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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 PrefixTest.dart;
-
-import "package:expect/expect.dart";
-import "prefix_test1.dart";
-
-class PrefixTest {
-  static testMain() {
-    Expect.equals(Prefix.getSource(), Prefix.getImport() + 1);
-  }
-}
-
-main() {
-  PrefixTest.testMain();
-}
diff --git a/tests/language/prefix_test1.dart b/tests/language/prefix_test1.dart
deleted file mode 100644
index 1030266..0000000
--- a/tests/language/prefix_test1.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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 PrefixTest1.dart;
-
-import "prefix_test2.dart" as prefix;
-
-class Prefix {
-  static const int foo = 43;
-
-  static getSource() {
-    return foo;
-  }
-
-  static getImport() {
-    return prefix.Prefix.foo;
-  }
-}
diff --git a/tests/language/prefix_test2.dart b/tests/language/prefix_test2.dart
deleted file mode 100644
index 8538ca3..0000000
--- a/tests/language/prefix_test2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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 PrefixTest2.dart;
-
-class Prefix {
-  static const int foo = 42;
-}
diff --git a/tests/language/prefix_unqualified_invocation_test.dart b/tests/language/prefix_unqualified_invocation_test.dart
deleted file mode 100644
index d4a174c..0000000
--- a/tests/language/prefix_unqualified_invocation_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Validate the following spec text from section 16.14.3 (Unqualified
-// invocation):
-//     An unqualifiedfunction invocation i has the form
-//     id(a1, ..., an, xn+1 : an+1, ..., xn+k : an+k),
-//     where id is an identifier.
-//     If there exists a lexically visible declaration named id, let fid be the
-//   innermost such declaration.  Then:
-//     - If fid is a prefix object, a compile-time error occurs.
-
-import "empty_library.dart" as p;
-
-class Base {
-  void p() {}
-}
-
-class Derived extends Base {
-  void f() {
-    p(); //# 01: compile-time error
-  }
-}
-
-main() {
-  new Derived().f();
-  p(); //# 02: compile-time error
-}
diff --git a/tests/language/private1.dart b/tests/language/private1.dart
deleted file mode 100644
index 4daaf0e..0000000
--- a/tests/language/private1.dart
+++ /dev/null
@@ -1,101 +0,0 @@
-// 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.
-
-// Dart test for testing access to private fields.
-
-part of PrivateTest.dart;
-
-main() {
-  testPrivateTopLevel();
-  testPrivateClasses();
-}
-
-void expectCatch(f) {
-  bool threw = false;
-  try {
-    f();
-  } catch (e) {
-    threw = true;
-  }
-  Expect.equals(true, threw);
-}
-
-String _private1() => "private1";
-const String _private1Field = "private1Field";
-
-void testPrivateTopLevel() {
-  Expect.equals("private1", _private1());
-  Expect.equals("private2", _private2());
-  Expect.equals("private1Field", _private1Field);
-  Expect.equals("private2Field", _private2Field);
-}
-
-class _A {
-  _A() : fieldA = 499;
-
-  int fieldA;
-}
-
-class AExposed extends _A {
-  AExposed() : super();
-}
-
-class B {
-  int _fieldB;
-  B() : _fieldB = 42;
-}
-
-class C1 {
-  int _field1;
-  C1() : _field1 = 499;
-
-  field1a() => _field1;
-}
-
-class C3 extends C2 {
-  int _field2;
-  C3()
-      : super(),
-        _field2 = 42;
-
-  field2a() => _field2;
-  field1c() => _field1;
-}
-
-int c_field1a(c) => c._field1;
-int c_field2a(c) => c._field2;
-
-int _field1FromNewC4() => new C4()._field1;
-int _field2FromNewC4() => new C4()._field2;
-
-void testPrivateClasses() {
-  _A a = new _A();
-  Expect.equals(499, a.fieldA);
-  Expect.equals(499, accessFieldA2(a));
-  Expect.equals(499, LibOther3.accessFieldA3(a));
-
-  var a2 = new AImported();
-  Expect.equals(499, a2.getFieldA());
-
-  B b = new B();
-  Expect.equals(42, b._fieldB);
-  Expect.equals(42, accessFieldB2(b));
-  expectCatch(() => LibOther3.accessFieldB3(b));
-
-  C4 c = new C4();
-  Expect.equals(499, c._field1);
-  Expect.equals(499, c_field1a(c));
-  Expect.equals(499, c.field1a());
-  Expect.equals(42, c._field2);
-  Expect.equals(42, c_field2a(c));
-  Expect.equals(42, c.field2a());
-  Expect.equals(99, LibOther3.c_field1b(c));
-  Expect.equals(99, c.field1b());
-  Expect.equals(1024, LibOther3.c_field2b(c));
-  Expect.equals(1024, c.field2b());
-  Expect.equals(499, c.field1c());
-  Expect.equals(99, c.field1d());
-  Expect.equals(499, _field1FromNewC4());
-  Expect.equals(42, _field2FromNewC4());
-}
diff --git a/tests/language/private2.dart b/tests/language/private2.dart
deleted file mode 100644
index 0dd65ac..0000000
--- a/tests/language/private2.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for testing access to private fields.
-
-part of PrivateTest.dart;
-
-String _private2() {
-  return "private2";
-}
-
-const String _private2Field = "private2Field";
-
-accessFieldA2(_A a) {
-  return a.fieldA;
-}
-
-accessFieldB2(B b) {
-  return b._fieldB;
-}
diff --git a/tests/language/private2_lib.dart b/tests/language/private2_lib.dart
deleted file mode 100644
index 938b5b4..0000000
--- a/tests/language/private2_lib.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields across class hierarchies.
-
-part of Private2Lib;
-
-class B extends A {
-  B() : super();
-}
diff --git a/tests/language/private2_lib.lib b/tests/language/private2_lib.lib
deleted file mode 100644
index 6290ecb..0000000
--- a/tests/language/private2_lib.lib
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields across class hierarchies.
-
-library Private2Lib;
-
-import "private2_test.dart";
-part "private2_lib.dart";
diff --git a/tests/language/private2_main.dart b/tests/language/private2_main.dart
deleted file mode 100644
index d074dad..0000000
--- a/tests/language/private2_main.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields across class hierarchies.
-
-part of Private2Test;
-
-class A {
-  var _f;
-  var g;
-  A()
-      : _f = 42,
-        g = 43;
-}
-
-class C extends B {
-  C() : super();
-}
-
-main() {
-  var a = new A();
-  print(a.g);
-  print(a._f);
-  var o = new C();
-  print(o.g); // Access to public field in A.
-  print(o._f); // Access to private field in A is allowed.
-}
diff --git a/tests/language/private2_test.dart b/tests/language/private2_test.dart
deleted file mode 100644
index 3f64b1c..0000000
--- a/tests/language/private2_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields across class hierarchies.
-
-library Private2Test;
-
-import "private2_lib.lib";
-part "private2_main.dart";
diff --git a/tests/language/private3.dart b/tests/language/private3.dart
deleted file mode 100644
index 4606870..0000000
--- a/tests/language/private3.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for testing access to private fields.
-
-part of PrivateOther;
-
-class LibOther3 {
-  static accessFieldA3(var a) => a.fieldA;
-  static accessFieldB3(var b) => b._fieldB;
-  static int c_field1b(c) => c._field1;
-  static int c_field2b(c) => c._field2;
-}
-
-class AImported extends AExposed {
-  AImported() : super();
-  getFieldA() => fieldA;
-}
-
-class C2 extends C1 {
-  int _field1;
-  C2()
-      : super(),
-        _field1 = 99;
-
-  field1b() => _field1;
-}
-
-class C4 extends C3 {
-  int _field2;
-  C4()
-      : super(),
-        _field2 = 1024;
-
-  field2b() => _field2;
-  field1d() => _field1;
-}
diff --git a/tests/language/private3_test.dart b/tests/language/private3_test.dart
deleted file mode 100644
index a93f1175..0000000
--- a/tests/language/private3_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields.
-
-library Private3Test.dart;
-
-import "package:expect/expect.dart";
-import "private_lib";
-
-part "private_main.dart";
-part "private_other.dart";
diff --git a/tests/language/private4_test.dart b/tests/language/private4_test.dart
deleted file mode 100644
index 3f64b2f..0000000
--- a/tests/language/private4_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that inlining in the compiler works with privacy.
-
-library private4_test;
-
-import "package:expect/expect.dart";
-import 'other_library.dart';
-
-main() {
-  Expect.equals(42, foo(new A()));
-  Expect.throws(() => foo(new B()), (e) => e is NoSuchMethodError);
-}
-
-class B {
-  _bar() => 42;
-}
diff --git a/tests/language/private_access_lib.dart b/tests/language/private_access_lib.dart
deleted file mode 100644
index 1ffa127..0000000
--- a/tests/language/private_access_lib.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2015, 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 private;
-
-_function() {}
-
-class _Class {}
-
-class Class {
-  Class._constructor();
-}
diff --git a/tests/language/private_access_test.dart b/tests/language/private_access_test.dart
deleted file mode 100644
index 8f14622..0000000
--- a/tests/language/private_access_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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';
-
-import 'private_access_lib.dart';
-import 'private_access_lib.dart' as private;
-
-main() {
-  Expect.throws(() => _function(), //                     //# 01: static type warning
-                (e) => e is NoSuchMethodError); //        //# 01: continued
-  Expect.throws(() => private._function(), //             //# 02: static type warning
-                (e) => e is NoSuchMethodError); //        //# 02: continued
-  Expect.throws(() => new _Class()); //                   //# 03: static type warning
-  Expect.throws(() => new private._Class()); //           //# 04: static type warning
-  Expect.throws(() => new Class._constructor(), //        //# 05: static type warning
-                (e) => e is NoSuchMethodError); //        //# 05: continued
-  Expect.throws(() => new private.Class._constructor(), //# 06: static type warning
-                (e) => e is NoSuchMethodError); //        //# 06: continued
-}
diff --git a/tests/language/private_clash_lib.dart b/tests/language/private_clash_lib.dart
deleted file mode 100644
index 40dbc02..0000000
--- a/tests/language/private_clash_lib.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2015, 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 a$_b;
-
-class B {
-  var _c$ = 10; // With library prefix: _a$_b$_c$
-
-  getValueA() {
-    try {} catch (e) {} // no inline
-    return this._c$;
-  }
-}
diff --git a/tests/language/private_clash_test.dart b/tests/language/private_clash_test.dart
deleted file mode 100644
index db70f81..0000000
--- a/tests/language/private_clash_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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 a;
-
-import 'private_clash_lib.dart' as lib;
-import 'package:expect/expect.dart';
-
-class A extends lib.B {
-  var _b$_c$ = 100; // With library prefix: _a$_b$_c$
-
-  getValueB() {
-    try {} catch (e) {} // no inline
-    return this._b$_c$;
-  }
-}
-
-main() {
-  A a = new A();
-  Expect.equals(110, a.getValueA() + a.getValueB());
-}
diff --git a/tests/language/private_lib b/tests/language/private_lib
deleted file mode 100644
index d4ce18b..0000000
--- a/tests/language/private_lib
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields.
-
-library PrivateLib;
-
-part "private_lib.dart";
diff --git a/tests/language/private_lib.dart b/tests/language/private_lib.dart
deleted file mode 100644
index 09ffdc1..0000000
--- a/tests/language/private_lib.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields.
-
-part of PrivateLib;
-
-class PrivateLib {
-  final _myPrecious;
-
-  const PrivateLib() : this._myPrecious = "The Ring";
-}
diff --git a/tests/language/private_main.dart b/tests/language/private_main.dart
deleted file mode 100644
index 9d17b17..0000000
--- a/tests/language/private_main.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields.
-
-part of Private3Test.dart;
-
-main() {
-  PrivateMain.main();
-}
-
-class PrivateMain {
-  static const _myPrecious = "A Ring";
-
-  static accessMyPrivates() {
-    var value = 0;
-    try {
-      value = _myPrecious;
-    } catch (e) {
-      value = -1;
-    }
-    Expect.equals("A Ring", value);
-  }
-
-  static accessMyLibPrivates() {
-    var value = 0;
-    var the_other = new PrivateOther();
-    try {
-      value = the_other._myPrecious;
-    } catch (e, trace) {
-      print(e);
-      print(trace);
-      Expect.equals(true, e is NoSuchMethodError);
-      value = -1;
-    }
-    Expect.equals("Another Ring", value);
-  }
-
-  static accessOtherLibPrivates() {
-    var value = 0;
-    var the_other = new PrivateLib();
-    try {
-      value = the_other._myPrecious;
-    } catch (e, trace) {
-      print(e);
-      print(trace);
-      Expect.equals(true, e is NoSuchMethodError);
-      value = -1;
-    }
-    Expect.equals(-1, value);
-  }
-
-  static main() {
-    accessMyPrivates();
-    accessMyLibPrivates();
-    accessOtherLibPrivates();
-  }
-}
diff --git a/tests/language/private_member1_lib_b.dart b/tests/language/private_member1_lib_b.dart
deleted file mode 100644
index b0f0bf5..0000000
--- a/tests/language/private_member1_lib_b.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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 PrivateMemberLibB;
-
-import 'private_member1_negative_test.dart';
-
-class B extends A {
-  bool _instanceField;
-}
diff --git a/tests/language/private_member1_negative_test.dart b/tests/language/private_member1_negative_test.dart
deleted file mode 100644
index 054bea9..0000000
--- a/tests/language/private_member1_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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 PrivateMemberLibA;
-
-import 'private_member1_lib_b.dart';
-
-class A {}
-
-class Test extends B {
-  test() {
-    _instanceField = true;
-  }
-}
-
-void main() {
-  new Test().test();
-}
diff --git a/tests/language/private_member2_lib_b.dart b/tests/language/private_member2_lib_b.dart
deleted file mode 100644
index 1b60b38..0000000
--- a/tests/language/private_member2_lib_b.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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 PrivateMemberLibB;
-
-import 'private_member2_negative_test.dart';
-
-class B extends A {
-  static bool _staticField;
-}
diff --git a/tests/language/private_member2_negative_test.dart b/tests/language/private_member2_negative_test.dart
deleted file mode 100644
index 1846c01..0000000
--- a/tests/language/private_member2_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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 PrivateMemberLibA;
-
-import 'private_member2_lib_b.dart';
-
-class A {}
-
-class Test extends B {
-  test() {
-    _staticField = true;
-  }
-}
-
-void main() {
-  new Test().test();
-}
diff --git a/tests/language/private_member3_lib_b.dart b/tests/language/private_member3_lib_b.dart
deleted file mode 100644
index 71beac6..0000000
--- a/tests/language/private_member3_lib_b.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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 PrivateMemberLibB;
-
-import 'private_member3_negative_test.dart';
-
-class B extends A {
-  bool _fun() {
-    return true;
-  }
-}
diff --git a/tests/language/private_member3_negative_test.dart b/tests/language/private_member3_negative_test.dart
deleted file mode 100644
index 91052cb..0000000
--- a/tests/language/private_member3_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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 PrivateMemberLibA;
-
-import 'private_member3_lib_b.dart';
-
-class A {}
-
-class Test extends B {
-  test() {
-    _fun();
-  }
-}
-
-void main() {
-  new Test().test();
-}
diff --git a/tests/language/private_member_lib_b.dart b/tests/language/private_member_lib_b.dart
deleted file mode 100644
index 7eb97b6..0000000
--- a/tests/language/private_member_lib_b.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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 PrivateMemberLibB;
-
-import 'private_member_test.dart';
-
-class B extends A {
-  bool _instanceField;
-  static bool _staticField;
-  bool _fun1(bool b) {
-    return true;
-  }
-
-  void _fun2() {}
-}
diff --git a/tests/language/private_member_test.dart b/tests/language/private_member_test.dart
deleted file mode 100644
index aeec7af..0000000
--- a/tests/language/private_member_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.
-
-library PrivateMemberLibA;
-
-import 'private_member_lib_b.dart';
-
-class A {
-  int i;
-  int _instanceField;
-  static int _staticField;
-  int _fun1() {
-    return 1;
-  }
-
-  void _fun2(int i) {}
-}
-
-class Test extends B {
-  test() {
-    i = _instanceField;
-    i = A._staticField;
-    i = _fun1();
-    _fun2(42);
-  }
-}
-
-void main() {
-  new Test().test();
-}
diff --git a/tests/language/private_mixin2_test.dart b/tests/language/private_mixin2_test.dart
deleted file mode 100644
index e7f9bba..0000000
--- a/tests/language/private_mixin2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Dart test for testing access to private fields on mixins.
-
-library private_mixin2;
-
-import 'package:expect/expect.dart';
-import 'private_other_mixin2.lib';
-
-void main() {
-  var c1 = new C1();
-  Expect.throws(() => c1._field, (e) => e is NoSuchMethodError);
-  Expect.throws(() => c1.field, (e) => e is NoSuchMethodError);
-
-  var c2 = new C2();
-  Expect.throws(() => c2._field, (e) => e is NoSuchMethodError);
-  Expect.equals(42, c2.field);
-}
diff --git a/tests/language/private_mixin_exception_throw_test.dart b/tests/language/private_mixin_exception_throw_test.dart
deleted file mode 100644
index 96570d7..0000000
--- a/tests/language/private_mixin_exception_throw_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for http://dartbug.com/11637
-
-class _C {}
-
-class _E {
-  throwIt() => throw "it";
-}
-
-class _F {
-  throwIt() => throw "IT";
-}
-
-class _D extends _C with _E, _F {}
-
-main() {
-  var d = new _D();
-  try {
-    d.throwIt();
-  } catch (e, s) {
-    print("Exception: $e");
-    print("Stacktrace:\n$s");
-  }
-}
diff --git a/tests/language/private_other.dart b/tests/language/private_other.dart
deleted file mode 100644
index 88c3e28..0000000
--- a/tests/language/private_other.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing access to private fields.
-
-part of Private3Test.dart;
-
-class PrivateOther {
-  final _myPrecious;
-
-  const PrivateOther() : this._myPrecious = "Another Ring";
-}
diff --git a/tests/language/private_other.lib b/tests/language/private_other.lib
deleted file mode 100644
index b03c39d..0000000
--- a/tests/language/private_other.lib
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for testing access to private fields.
-
-library PrivateOther;
-
-import "private_test.dart";
-part "private3.dart";
diff --git a/tests/language/private_other_mixin2.lib b/tests/language/private_other_mixin2.lib
deleted file mode 100644
index c23e7b5..0000000
--- a/tests/language/private_other_mixin2.lib
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Dart test for testing access to private fields on mixins.
-
-library private_mixin2_other;
-
-class C1 {
-  int _field = 42;
-}
-
-class C2 extends Object with C1 {
-  int get field => _field;
-}
\ No newline at end of file
diff --git a/tests/language/private_selector_lib.dart b/tests/language/private_selector_lib.dart
deleted file mode 100644
index c9a11c9..0000000
--- a/tests/language/private_selector_lib.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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 private_selector_lib;
-
-import 'private_selector_test.dart';
-
-bool executed = false;
-
-class A {
-  public() {
-    new B()._private();
-  }
-
-  _private() {
-    executed = true;
-  }
-}
diff --git a/tests/language/private_selector_test.dart b/tests/language/private_selector_test.dart
deleted file mode 100644
index 959cb2e..0000000
--- a/tests/language/private_selector_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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 private_selector_test;
-
-import "package:expect/expect.dart";
-import 'private_selector_lib.dart';
-
-class B extends A {}
-
-main() {
-  new A().public();
-  Expect.isTrue(executed);
-}
diff --git a/tests/language/private_super_constructor_lib.dart b/tests/language/private_super_constructor_lib.dart
deleted file mode 100644
index 04b73d3..0000000
--- a/tests/language/private_super_constructor_lib.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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 private_super_constructor_lib;
-
-class B {
-  B();
-  B._foo();
-}
diff --git a/tests/language/private_super_constructor_test.dart b/tests/language/private_super_constructor_test.dart
deleted file mode 100644
index 7db8cdd..0000000
--- a/tests/language/private_super_constructor_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2015, 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 private_super_constructor_test;
-
-import 'private_super_constructor_lib.dart';
-
-class C extends B {
-  C() : super._foo(); //# 01: compile-time error
-}
-
-main() => new C();
diff --git a/tests/language/private_test.dart b/tests/language/private_test.dart
deleted file mode 100644
index 161cb65..0000000
--- a/tests/language/private_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test for testing access to private fields.
-
-library PrivateTest.dart;
-
-import "package:expect/expect.dart";
-import "private_other.lib";
-part "private1.dart";
-part "private2.dart";
diff --git a/tests/language/propagate_past_constant_test.dart b/tests/language/propagate_past_constant_test.dart
deleted file mode 100644
index 095e706..0000000
--- a/tests/language/propagate_past_constant_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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';
-
-foo(x) => x;
-
-check(y) {
-  Expect.equals('foo', y);
-}
-
-main() {
-  var x = foo('foo');
-  var y = foo(x);
-  x = 'constant';
-  check(
-      y); // 'y' should not propagate here unless reference to 'x' is rewritten
-  foo(x);
-  foo(x);
-}
diff --git a/tests/language/propagated_argument_type_check_test.dart b/tests/language/propagated_argument_type_check_test.dart
deleted file mode 100644
index d6923f3..0000000
--- a/tests/language/propagated_argument_type_check_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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";
-
-main() {
-  Expect.equals("str", foo("str"));
-}
-
-foo(y) {
-  var x = 3;
-  for (int i = 0; i < 2; i++) {
-    // Make sure that we don't think that the type of x is necessarily
-    // a number and optimize the x + y expression based on that. The
-    // value of x changes later...
-    if (i == 1) return bar(x + y);
-    x = new A();
-  }
-}
-
-bar(t) => t;
-
-class A {
-  A() {}
-  operator +(x) => x;
-}
diff --git a/tests/language/property_field_override_test.dart b/tests/language/property_field_override_test.dart
deleted file mode 100644
index 322ad90..0000000
--- a/tests/language/property_field_override_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test overriding a getter property with a field.
-class A {
-  int get v; // Abstract.
-
-  int a() {
-    return v - 1;
-  }
-}
-
-class B extends A {
-  int v = 3;
-
-  int b() {
-    return ++v;
-  }
-}
-
-main() {
-  var x = new B();
-  Expect.equals(3, x.v);
-  Expect.equals(2, x.a());
-  Expect.equals(4, x.b());
-}
diff --git a/tests/language/proxy2_test.dart b/tests/language/proxy2_test.dart
deleted file mode 100644
index 4341c4d..0000000
--- a/tests/language/proxy2_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for static warnings for member access on classes with @proxy annotation.
-
-import 'dart:core' as core;
-
-class Fake {
-  const Fake();
-}
-
-const proxy = const Fake();
-
-@proxy
-class WrongProxy {}
-
-@core.proxy
-class PrefixProxy {}
-
-main() {
-  try { new WrongProxy().foo; } catch (e) {} // //# 01: static type warning
-  try { new WrongProxy().foo(); } catch (e) {} // //# 02: static type warning
-
-  try { new PrefixProxy().foo; } catch (e) {} //# 03: ok
-  try { new PrefixProxy().foo(); } catch (e) {} //# 04: ok
-}
diff --git a/tests/language/proxy3_test.dart b/tests/language/proxy3_test.dart
deleted file mode 100644
index 5c90fd0..0000000
--- a/tests/language/proxy3_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for static warnings for member access on classes with @proxy annotation.
-
-const isFalse = identical(-0.0, 0);
-
-const validProxy = isFalse ? null : proxy;
-const invalidProxy = isFalse ? proxy : null;
-
-@validProxy
-class ValidProxy {}
-
-@invalidProxy
-class InvalidProxy {}
-
-main() {
-  try { new InvalidProxy().foo; } catch (e) {} // //# 01: static type warning
-  try { new InvalidProxy().foo(); } catch (e) {} // //# 02: static type warning
-
-  try { new ValidProxy().foo; } catch (e) {} //# 03: ok
-  try { new ValidProxy().foo(); } catch (e) {} //# 04: ok
-}
diff --git a/tests/language/proxy4_test.dart b/tests/language/proxy4_test.dart
deleted file mode 100644
index fe4948b..0000000
--- a/tests/language/proxy4_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-// Test for static warnings for member access on classes that inherit a
-// user defined noSuchMethod.
-
-class Mock {
-  noSuchMethod(i) => 42;
-}
-
-abstract class Foo {
-  int foo();
-}
-
-class DontWarnMe extends Mock implements Foo {}
-
-main() {
-  print(new DontWarnMe().foo());
-}
diff --git a/tests/language/proxy5_test.dart b/tests/language/proxy5_test.dart
deleted file mode 100644
index 68f4d2b..0000000
--- a/tests/language/proxy5_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-// Test for static warnings for member access on classes that inherit a
-// user defined noSuchMethod, even if it is abstract.
-
-import 'package:expect/expect.dart';
-
-abstract class Mock {
-  noSuchMethod(i);
-}
-
-abstract class Foo {
-  int foo();
-}
-
-class DontWarnMe extends Mock implements Foo {}
-
-main() {
-  Expect.throws(() => new DontWarnMe().foo());
-}
diff --git a/tests/language/proxy_test.dart b/tests/language/proxy_test.dart
deleted file mode 100644
index fe02601..0000000
--- a/tests/language/proxy_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for static warnings for member access on classes with @proxy annotation.
-
-class NonProxy {}
-
-@proxy
-class Proxy {}
-
-const alias = proxy;
-
-@alias
-class AliasProxy {}
-
-main() {
-  try { new NonProxy().foo; } catch (e) {} //# 01: static type warning
-  try { new NonProxy().foo(); } catch (e) {} //# 02: static type warning
-
-  try { new Proxy().foo; } catch (e) {} //# 03: ok
-  try { new Proxy().foo(); } catch (e) {} //# 04: ok
-
-  try { new AliasProxy().foo; } catch (e) {} //# 05: ok
-  try { new AliasProxy().foo(); } catch (e) {} //# 06: ok
-}
diff --git a/tests/language/pure_function2_test.dart b/tests/language/pure_function2_test.dart
deleted file mode 100644
index a5e0187..0000000
--- a/tests/language/pure_function2_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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";
-
-// Regression test for issue 17483.
-
-@AssumeDynamic()
-@NoInline()
-confuse(x) => x;
-
-foo(trace) {
-  trace.add("foo");
-  return "foo";
-}
-
-bar(trace) {
-  trace.add("bar");
-  return "bar";
-}
-
-main() {
-  var f = confuse(foo);
-  var b = confuse(bar);
-
-  var trace = [];
-  // Dart2js must keep the order of t1 and t2.
-  var t1 = f(trace);
-  var t2 = b(trace);
-  var t3 = identical(t2, "foo");
-  var t4 = trace.add(t1);
-  trace.add(t3);
-  trace.add(t3);
-  Expect.listEquals(["foo", "bar", "foo", false, false], trace);
-}
diff --git a/tests/language/pure_function_test.dart b/tests/language/pure_function_test.dart
deleted file mode 100644
index 4bd36be..0000000
--- a/tests/language/pure_function_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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";
-
-// Regression test for issue 17483.
-
-class A {
-  var x, y;
-  A(x, this.y) {
-    this.x = x;
-  }
-  toString() => "a";
-}
-
-foo(trace) => trace.add("foo");
-bar(trace) => trace.add("bar");
-
-main() {
-  var trace = [];
-  // Dart2js must keep the order of t1 and t2.
-  var t1 = foo(trace);
-  var t2 = bar(trace);
-  // Dart2js inlines the constructor, yielding something like:
-  //   t3 = jsNew A(null, t2);  // Note that jsNew is pure.
-  //   t3.x = t1;
-  // t3 is used twice and cannot be generated at use site.
-  // Dart2js must not allow t1 to cross the t3-line.
-  var a = new A(t1, t2);
-  // Use a. It is already implicitly used by the this.x = x line in its
-  // constructor. With the following use we use it twice and make sure that
-  // the allocation can not be generated at use-site.
-  trace.add(a.toString());
-  Expect.listEquals(["foo", "bar", "a"], trace);
-}
diff --git a/tests/language/range_analysis2_test.dart b/tests/language/range_analysis2_test.dart
deleted file mode 100644
index a84ede69..0000000
--- a/tests/language/range_analysis2_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to remove bounds checks on
-// boxed variables.
-
-import "package:expect/expect.dart";
-
-main() {
-  var a = 0;
-  var b = [1];
-  foo() => b[a--] + b[a];
-  Expect.throws(foo, (e) => e is RangeError);
-}
diff --git a/tests/language/range_analysis3_test.dart b/tests/language/range_analysis3_test.dart
deleted file mode 100644
index 8777212..0000000
--- a/tests/language/range_analysis3_test.dart
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2014, 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";
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x is int ? x : 0;
-
-test1() {
-  int x = 0;
-  // Give x a range of -1 to 0.
-  if (confuse(0) == 1) x = -1;
-
-  int y = 0;
-  // Give y a range of 0 to 1.
-  if (confuse(0) == 1) y = 1;
-
-  var zero = 0;
-
-  var status = "bad";
-  if (x < zero) {
-    Expect.fail("unreachable");
-  } else {
-    // Dart2js must not conclude that zero has a range of [-1, 0].
-    if (y <= zero) {
-      status = "good";
-    }
-  }
-  Expect.equals("good", status);
-}
-
-test2() {
-  int x = 0;
-  // Give x a range of -1 to 0.
-  if (confuse(0) == 1) x = -1;
-
-  int y = 0;
-  // Give y a range of -1 to 1.
-  if (confuse(0) == 1) y = 1;
-  if (confuse(1) == 2) y = -1;
-
-  var status = "good";
-  if (x < y) {
-    Expect.fail("unreachable");
-  } else {
-    // Dart2js must not conclude that y has a range of [-1, -1].
-    if (y == -1) {
-      status = "bad";
-    }
-  }
-  Expect.equals("good", status);
-}
-
-test3a() {
-  int x = 0;
-  // Give x a range of -1 to 1.
-  if (confuse(0) == 1) x = -1;
-  if (confuse(1) == 2) x = 1;
-
-  int y = 0;
-  // Give y a range of -1 to 1.
-  if (confuse(0) == 1) y = 1;
-  if (confuse(1) == 2) y = -1;
-
-  var status = "good";
-  if (x < y) {
-    Expect.fail("unreachable");
-  } else {
-    // Test that the range-analysis does not lose a value.
-    if (x <= -1) status = "bad";
-    if (x >= 1) status = "bad";
-    if (x < 0) status = "bad";
-    if (x > 0) status = "bad";
-    if (-1 >= x) status = "bad";
-    if (1 <= x) status = "bad";
-    if (0 > x) status = "bad";
-    if (0 < x) status = "bad";
-    if (y <= -1) status = "bad";
-    if (y >= 1) status = "bad";
-    if (y < 0) status = "bad";
-    if (y > 0) status = "bad";
-    if (-1 >= y) status = "bad";
-    if (1 <= y) status = "bad";
-    if (0 > y) status = "bad";
-    if (0 < y) status = "bad";
-  }
-  Expect.equals("good", status);
-}
-
-test3b() {
-  int x = 0;
-  // Give x a range of -2 to 0.
-  if (confuse(0) == 1) x = -2;
-
-  int y = 0;
-  // Give y a range of -1 to 1.
-  if (confuse(0) == 1) y = 1;
-  if (confuse(1) == 2) y = -1;
-
-  var status = "good";
-  if (x < y) {
-    Expect.fail("unreachable");
-  } else {
-    // Test that the range-analysis does not lose a value.
-    if (x <= -1) status = "bad";
-    if (x >= 1) status = "bad";
-    if (x < 0) status = "bad";
-    if (x > 0) status = "bad";
-    if (-1 >= x) status = "bad";
-    if (1 <= x) status = "bad";
-    if (0 > x) status = "bad";
-    if (0 < x) status = "bad";
-    if (y <= -1) status = "bad";
-    if (y >= 1) status = "bad";
-    if (y < 0) status = "bad";
-    if (y > 0) status = "bad";
-    if (-1 >= y) status = "bad";
-    if (1 <= y) status = "bad";
-    if (0 > y) status = "bad";
-    if (0 < y) status = "bad";
-  }
-  Expect.equals("good", status);
-}
-
-test4a() {
-  int x = -1;
-  // Give x a range of -1 to 1.
-  if (confuse(0) == 1) x = 1;
-
-  int y = 0;
-  // Give y a range of -1 to 1.
-  if (confuse(0) == 1) y = 1;
-  if (confuse(1) == 2) y = -1;
-
-  var status = "good";
-  if (x < y) {
-    // Test that the range-analysis does not lose a value.
-    if (x <= -2) status = "bad";
-    if (x >= 0) status = "bad";
-    if (x < -1) status = "bad";
-    if (x > -1) status = "bad";
-    if (-2 >= x) status = "bad";
-    if (0 <= x) status = "bad";
-    if (-1 > x) status = "bad";
-    if (-1 < x) status = "bad";
-    if (y <= -1) status = "bad";
-    if (y >= 1) status = "bad";
-    if (y < 0) status = "bad";
-    if (y > 0) status = "bad";
-    if (-1 >= y) status = "bad";
-    if (1 <= y) status = "bad";
-    if (0 > y) status = "bad";
-    if (0 < y) status = "bad";
-  } else {
-    Expect.fail("unreachable");
-  }
-  Expect.equals("good", status);
-}
-
-test4b() {
-  int x = -1;
-  // Give x a range of -2 to 0.
-  if (confuse(0) == 1) x = -2;
-  if (confuse(1) == 2) x = 0;
-
-  int y = 0;
-  // Give y a range of -1 to 1.
-  if (confuse(0) == 1) y = 1;
-  if (confuse(1) == 2) y = -1;
-
-  var status = "good";
-  if (x < y) {
-    // Test that the range-analysis does not lose a value.
-    if (x <= -2) status = "bad";
-    if (x >= 0) status = "bad";
-    if (x < -1) status = "bad";
-    if (x > -1) status = "bad";
-    if (-2 >= x) status = "bad";
-    if (0 <= x) status = "bad";
-    if (-1 > x) status = "bad";
-    if (-1 < x) status = "bad";
-    if (y <= -1) status = "bad";
-    if (y >= 1) status = "bad";
-    if (y < 0) status = "bad";
-    if (y > 0) status = "bad";
-    if (-1 >= y) status = "bad";
-    if (1 <= y) status = "bad";
-    if (0 > y) status = "bad";
-    if (0 < y) status = "bad";
-  } else {
-    Expect.fail("unreachable");
-  }
-  Expect.equals("good", status);
-}
-
-main() {
-  test1();
-  test2();
-  test3a();
-  test3b();
-  test4a();
-  test4b();
-}
diff --git a/tests/language/range_analysis_test.dart b/tests/language/range_analysis_test.dart
deleted file mode 100644
index 5ce5ab7..0000000
--- a/tests/language/range_analysis_test.dart
+++ /dev/null
@@ -1,118 +0,0 @@
-// 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.
-// Dart test program for constructors and initializers.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Check that range analysis does not enter infinite loop trying to propagate
-// ranges through dependant phis.
-bar() {
-  var sum = 0;
-  for (var i = 0; i < 10; i++) {
-    for (var j = i - 1; j >= 0; j--) {
-      for (var k = j; k < i; k++) {
-        sum += (i + j + k);
-      }
-    }
-  }
-  return sum;
-}
-
-test1() {
-  for (var i = 0; i < 20; i++) bar();
-}
-
-// Check that range analysis does not erroneously remove overflow check.
-test2() {
-  var width = 1073741823;
-  Expect.equals(width - 1, foo(width - 5000, width - 1));
-  Expect.equals(width, foo(width - 5000, width));
-}
-
-foo(n, w) {
-  var x = 0;
-  for (var i = n; i <= w; i++) {
-    Expect.isTrue(i > 0);
-    x = i;
-  }
-  return x;
-}
-
-// Test detection of unsatisfiable constraints.
-f(a, b) {
-  if (a < b) {
-    if (a > b) {
-      throw "unreachable";
-    }
-    return 2;
-  }
-  return 3;
-}
-
-f1(a, b) {
-  if (a < b) {
-    if (a > b - 1) {
-      throw "unreachable";
-    }
-    return 2;
-  }
-  return 3;
-}
-
-f2(a, b) {
-  if (a < b) {
-    if (a > b - 2) {
-      return 2;
-    }
-    throw "unreachable";
-  }
-  return 3;
-}
-
-g() {
-  var i;
-  for (i = 0; i < 10; i++) {
-    if (i < 0) throw "unreachable";
-  }
-  return i;
-}
-
-h(n) {
-  var i;
-  for (i = 0; i < n; i++) {
-    if (i < 0) throw "unreachable";
-    var j = i - 1;
-    if (j >= n - 1) throw "unreachable";
-  }
-  return i;
-}
-
-test3() {
-  test_fun(fun) {
-    Expect.equals(2, fun(0, 1));
-    Expect.equals(3, fun(0, 0));
-    for (var i = 0; i < 20; i++) fun(0, 1);
-    Expect.equals(2, fun(0, 1));
-    Expect.equals(3, fun(0, 0));
-  }
-
-  test_fun(f);
-  test_fun(f1);
-  test_fun(f2);
-
-  Expect.equals(10, g());
-  for (var i = 0; i < 20; i++) g();
-  Expect.equals(10, g());
-
-  Expect.equals(10, h(10));
-  for (var i = 0; i < 20; i++) h(10);
-  Expect.equals(10, h(10));
-}
-
-main() {
-  test1();
-  test2();
-  test3();
-}
diff --git a/tests/language/raw_string_test.dart b/tests/language/raw_string_test.dart
deleted file mode 100644
index 6660eb9..0000000
--- a/tests/language/raw_string_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Note: This test relies on LF line endings in the source file.
-// It requires an entry in the .gitattributes file.
-
-import "package:expect/expect.dart";
-
-class RawStringTest {
-  static testMain() {
-    Expect.equals("abcd", r"abcd");
-    Expect.equals("", r"");
-    Expect.equals("", r'');
-    Expect.equals("", r"""""");
-    Expect.equals("", r'''''');
-    Expect.equals("''''", r"''''");
-    Expect.equals('""""', r'""""');
-    Expect.equals(
-        "1\n2\n3",
-        r"""1
-2
-3""");
-    Expect.equals(
-        "1\n2\n3",
-        r'''1
-2
-3''');
-    Expect.equals(
-        "1",
-        r"""
-1""");
-    Expect.equals(
-        "1",
-        r'''
-1''');
-    Expect.equals("'", r"'");
-    Expect.equals('"', r'"');
-    Expect.equals("1", r"1");
-    Expect.equals("1", r"1");
-    Expect.equals("\$", r"$");
-    Expect.equals("\\", r"\");
-    Expect.equals("\\", r'\');
-    Expect.equals("\${12}", r"${12}");
-    Expect.equals("\\a\\b\\c\\d\\e\\f\\g\\h\\i\\j\\k\\l\\m",
-        r"\a\b\c\d\e\f\g\h\i\j\k\l\m");
-    Expect.equals("\\n\\o\\p\\q\\r\\s\\t\\u\\v\\w\\x\\y\\z",
-        r"\n\o\p\q\r\s\t\u\v\w\x\y\z");
-  }
-}
-
-main() {
-  RawStringTest.testMain();
-}
diff --git a/tests/language/readuntil_test.dat b/tests/language/readuntil_test.dat
deleted file mode 100644
index 0c7c848..0000000
--- a/tests/language/readuntil_test.dat
+++ /dev/null
@@ -1 +0,0 @@
-Hello Dart, wassup!
diff --git a/tests/language/recursive_calls_test.dart b/tests/language/recursive_calls_test.dart
deleted file mode 100644
index 21bc53d..0000000
--- a/tests/language/recursive_calls_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2013, 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";
-
-int bar(x) => foo(x + 1);
-int foo(x) => x > 9 ? x : bar(x);
-
-main() {
-  Expect.equals(foo(int.parse("1")), 10);
-}
diff --git a/tests/language/recursive_loop_phis_test.dart b/tests/language/recursive_loop_phis_test.dart
deleted file mode 100644
index f01aa0a..0000000
--- a/tests/language/recursive_loop_phis_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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";
-
-// This program tripped dart2js.
-
-foo(bool b) {
-  var x = 499;
-  // If the loop-phi is not declared it will assign to a global and the
-  // recursive call will screw up the methods "local" state.
-  for (int i = 0; i < 3; i++) {
-    if (i == 0 && b) x = 42;
-    if (!b) foo(true);
-  }
-  return x;
-}
-
-main() {
-  Expect.equals(499, foo(false));
-}
diff --git a/tests/language/redirecting_constructor_initializer_test.dart b/tests/language/redirecting_constructor_initializer_test.dart
deleted file mode 100644
index d05d68c..0000000
--- a/tests/language/redirecting_constructor_initializer_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2015, 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";
-
-var string = '';
-
-append(x) {
-  string += x;
-  return x;
-}
-
-class A {
-  var x = append('x');
-  var y;
-  var z;
-
-  // Should append y but not yet x.
-  A() : this.foo(append('y'));
-
-  // Append x and z.
-  A.foo(this.y) : z = append('z');
-}
-
-class B extends A {
-  var w;
-
-  // Call the redirecting constructor using super.
-  B()
-      : super(),
-        w = append('w');
-}
-
-main() {
-  string = '';
-  new A();
-  Expect.equals('yxz', string);
-
-  string = '';
-  new B();
-  Expect.equals('yxzw', string);
-}
diff --git a/tests/language/redirecting_factory_default_values_test.dart b/tests/language/redirecting_factory_default_values_test.dart
deleted file mode 100644
index bf830eb..0000000
--- a/tests/language/redirecting_factory_default_values_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that parameter default values are disallowed in a redirecting factory.
-
-import "package:expect/expect.dart";
-
-class A {
-  A(this.a, [this.b = 0]);
-  factory A.f(a) = A;
-  factory A.g(a, [b = 0]) = A; // //# 01: compile-time error
-  factory A.h(a, {b: 0}) = A; // //# 02: compile-time error
-
-  int a;
-  int b;
-}
-
-main() {
-  var x = new A.f(42);
-  Expect.equals(x.a, 42);
-  Expect.equals(x.b, 0);
-
-  var y = new A.f(42, 43);
-  Expect.equals(y.a, 42);
-  Expect.equals(y.b, 43);
-}
diff --git a/tests/language/redirecting_factory_incompatible_signature_test.dart b/tests/language/redirecting_factory_incompatible_signature_test.dart
deleted file mode 100644
index 18129a0..0000000
--- a/tests/language/redirecting_factory_incompatible_signature_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that incompatible signatures in a forwarding factory
-// constructor leads to a [NoSuchMethodError].
-
-import "package:expect/expect.dart";
-
-class A {
-  A(a, b);
-  factory A.f() = A;
-}
-
-main() {
-  Expect.throws(() => new A.f(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/redirecting_factory_infinite_steps_test.dart b/tests/language/redirecting_factory_infinite_steps_test.dart
deleted file mode 100644
index cc22535..0000000
--- a/tests/language/redirecting_factory_infinite_steps_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-// From Dart Language Specification, 0.12 M1, "7.6.2 Factories": It is
-// a compile-time error if a redirecting factory constructor does not
-// redirect to a non-redirecting factory constructor or to a
-// generative constructor in a finite number of steps.
-
-// TODO(ahe): The above specification will probably change to
-// something like: "It is a compile-time error if a redirecting
-// factory constructor redirects to itself, either directly or
-// indirectly via a sequence of redirections."
-
-class Foo extends Bar {
-  factory Foo() = Bar; //# 01: static type warning, dynamic type error
-}
-
-class Bar {
-  factory Bar() = Foo; //# 02: compile-time error
-}
-
-main() {
-  new Foo();
-}
diff --git a/tests/language/redirecting_factory_long_test.dart b/tests/language/redirecting_factory_long_test.dart
deleted file mode 100644
index d776df0..0000000
--- a/tests/language/redirecting_factory_long_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test long substitution of long redirection chains.
-
-import 'package:expect/expect.dart';
-
-class C {
-  const factory C() = D<int>;
-}
-
-class D<T> implements C {
-  const factory D() = E<double, int>;
-}
-
-class E<S, T> implements D<T> {
-  final field = 42;
-  const E();
-}
-
-class X<T> {
-  const factory X() = Y<T>;
-}
-
-class X1<T1> {
-  const factory X1() = Y<T1>;
-}
-
-class X2 {
-  const factory X2() = Y<int>;
-}
-
-class Y<S> implements X<S>, X1<S>, X2 {
-  const factory Y() = Y1<S>;
-}
-
-class Y1<U> implements Y<U> {
-  const factory Y1() = Z<U>;
-}
-
-class Z<V> implements Y1<V> {
-  final field = 87;
-  const Z();
-}
-
-void main() {
-  testC(new C());
-  testC(const C());
-  testZ(new X<int>());
-  testZ(new X1<int>());
-  testZ(new X2());
-  testZ(const X<int>());
-  testZ(const X1<int>());
-  testZ(const X2());
-}
-
-void testC(var c) {
-  Expect.isTrue(c is C);
-  Expect.isTrue(c is D<int>);
-  Expect.isTrue(c is! D<String>);
-  Expect.isTrue(c is E<double, int>);
-  Expect.isTrue(c is! E<String, int>);
-  Expect.isTrue(c is! E<double, String>);
-  Expect.equals(42, c.field);
-}
-
-void testZ(var z) {
-  Expect.isTrue(z is X<int>);
-  Expect.isTrue(z is! X<String>);
-  Expect.isTrue(z is X1<int>);
-  Expect.isTrue(z is! X1<String>);
-  Expect.isTrue(z is X2);
-  Expect.isTrue(z is Y<int>);
-  Expect.isTrue(z is! Y<String>);
-  Expect.isTrue(z is Y1<int>);
-  Expect.isTrue(z is! Y1<String>);
-  Expect.isTrue(z is Z<int>);
-  Expect.isTrue(z is! Z<String>);
-  Expect.equals(87, z.field);
-}
diff --git a/tests/language/redirecting_factory_malbounded_test.dart b/tests/language/redirecting_factory_malbounded_test.dart
deleted file mode 100644
index 9f780c2..0000000
--- a/tests/language/redirecting_factory_malbounded_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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 Foo<T> extends Bar<T> {
-  factory Foo() = Bar;
-
-  Foo.create() : super.create() {}
-}
-
-class Bar<
-    T
-            extends num // //# 01: static type warning, dynamic type error
-    > {
-  factory Bar() {
-    return new Foo<T>.create();
-  }
-
-  Bar.create() {}
-}
-
-main() {
-  new Foo<String>();
-}
diff --git a/tests/language/redirecting_factory_reflection_test.dart b/tests/language/redirecting_factory_reflection_test.dart
deleted file mode 100644
index af39373..0000000
--- a/tests/language/redirecting_factory_reflection_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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:mirrors';
-import 'package:expect/expect.dart';
-
-abstract class A<T> {
-  get t;
-  factory A() = B<T, A<T>>;
-}
-
-class B<X, Y> implements A<X> {
-  final t;
-  B() : t = Y;
-}
-
-main() {
-  ClassMirror m = reflectClass(A);
-  var i = m.newInstance(const Symbol(''), []).reflectee;
-  Expect.equals(i.t.toString(), 'A');
-}
diff --git a/tests/language/reexport_core_helper.dart b/tests/language/reexport_core_helper.dart
deleted file mode 100644
index 86c81bf5..0000000
--- a/tests/language/reexport_core_helper.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2013, 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 reexport_core_helper;
-
-export 'dart:core';
diff --git a/tests/language/reexport_core_test.dart b/tests/language/reexport_core_test.dart
deleted file mode 100644
index e4a17dd..0000000
--- a/tests/language/reexport_core_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Tests that exports are handled for libraries loaded prior to the entry point
-// library.
-//
-// This test uses the fact that dart2js loads dart:core before the
-// reexport_core_helper and reexport_core_test libraries and the exports of
-// dart:core is therefore computed before the exports of reexport_core_helper.
-
-library reexport_core_test;
-
-import "package:expect/expect.dart";
-import 'reexport_core_helper.dart' as core;
-
-void main() {
-  var o = new Object();
-  Expect.isTrue(o is core.Object);
-}
diff --git a/tests/language/ref_before_declaration_test.dart b/tests/language/ref_before_declaration_test.dart
deleted file mode 100644
index a8faf05..0000000
--- a/tests/language/ref_before_declaration_test.dart
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test compile-time errors for illegal variable declarations if the name
-// has been referenced before the variable is declared.
-
-import 'dart:math' as math;
-
-use(value) => value;
-
-var x = 0;
-final y = 0;
-
-class C {
-  var f;
-  C() : f = 'How do you spell PTSD?';
-
-  void test1() {
-    use(f); // Refers to instance field f.
-    var f = 'A shut mouth gathers no foot.'; // //# 00: compile-time error
-  }
-
-  void test2() {
-    void localFunc() {
-      use(f); // Refers to instance field f.
-    }
-
-    var f = 'When chemists die, they barium.'; // //# 01: compile-time error
-    if (true) {
-      var f = 1; // ok, shadows outer f and instance field f.
-    }
-  }
-
-  void test3() {
-    if (true) {
-      use(x); // Refers to top-level x.
-      use(y); // Refers to top-level y.
-    }
-    final x = "I have not yet begun to procrastinate."; // //# 02: compile-time error
-    const y = "Honk if you like peace and quiet!"; // //# 03: compile-time error
-  }
-
-  void test4() {
-    void Q() {
-      P(); //# 06: compile-time error
-    }
-    void P() {
-      Q();
-    }
-
-    Function f = () {x = f;}; // //# 07: compile-time error
-  }
-
-  test() {
-    test1();
-    test2();
-    test3();
-    test4();
-  }
-}
-
-void testTypeRef() {
-  String s = 'Can vegetarians eat animal crackers?';
-  var String = "I distinctly remember forgetting that."; // //# 04: compile-time error
-}
-
-void testLibPrefix() {
-  var pie = math.PI;
-  final math = 0; // //# 05: compile-time error
-}
-
-void noErrorsExpected() {
-  use(x);
-  for (var x = 0; x < 10; x++) use(x);
-  for (var i = 0; i < 10; i++) var x = 0;
-  if (true) var x = 0;
-  while (false) var x = 0;
-  try {
-    throw "ball";
-  } catch (x) {
-    use(x);
-  }
-  switch (x) {
-    case 0:
-      var x = 'Does fuzzy logic tickle?';
-  }
-  var int = 007;
-}
-
-void main() {
-  var c = new C();
-  c.test();
-  testTypeRef();
-  testLibPrefix();
-  noErrorsExpected();
-}
diff --git a/tests/language/refine_receiver_null_test.dart b/tests/language/refine_receiver_null_test.dart
deleted file mode 100644
index c65afa8..0000000
--- a/tests/language/refine_receiver_null_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to infer that code following
-// a dynamic call could assume the receiver is not null. This does not
-// work for Object methods.
-
-import "package:expect/expect.dart";
-import "compiler_annotations.dart";
-
-main() {
-  var a = true ? null : 42;
-  a.toString();
-  foo(a);
-}
-
-@DontInline()
-foo(a) {
-  var f = () => 42;
-  Expect.throws(() => a + 42, (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/reg_ex2_test.dart b/tests/language/reg_ex2_test.dart
deleted file mode 100644
index 6e323f3..0000000
--- a/tests/language/reg_ex2_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing regular expressions in Dart.
-
-class RegEx2Test {
-  static void testMain() {
-    final helloPattern = new RegExp("with (hello)");
-    String s = "this is a string with hello somewhere";
-    Match match = helloPattern.firstMatch(s);
-    if (match != null) {
-      print("got match");
-      int groupCount = match.groupCount;
-      print("groupCount is $groupCount");
-      print("group 0 is ${match.group(0)}");
-      print("group 1 is ${match.group(1)}");
-    } else {
-      print("match not round");
-    }
-    print("done");
-  }
-}
-
-main() {
-  RegEx2Test.testMain();
-}
diff --git a/tests/language/reg_exp2_test.dart b/tests/language/reg_exp2_test.dart
deleted file mode 100644
index 20fe43b..0000000
--- a/tests/language/reg_exp2_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing regular expressions in Dart.
-
-import "package:expect/expect.dart";
-
-class RegExp2Test {
-  static String findImageTag_(String text, String extensions) {
-    final re = new RegExp('src="(http://\\S+\\.(${extensions}))"');
-    print('REGEXP findImageTag_ $extensions text: \n$text');
-    final match = re.firstMatch(text);
-    print('REGEXP findImageTag_ $extensions SUCCESS');
-    if (match != null) {
-      return match[1];
-    } else {
-      return null;
-    }
-  }
-
-  static testMain() {
-    String text =
-        '''<img src="http://cdn.archinect.net/images/514x/c0/c0p3qo202oxp0e6z.jpg" width="514" height="616" border="0" title="" alt=""><em><p>My last entry was in December of 2009. I suppose I never was particularly good about updating this thing, but it seems a bit ridiculous that I couldn't be bothered to post once about the many, many things that have gone on since then. My apologies. I guess I could start by saying that the world looks like a very different place than it did back in second year.</p></em>
-
-''';
-    String extensions = 'jpg|jpeg|png';
-    String tag = findImageTag_(text, extensions);
-    Expect.isNotNull(tag);
-  }
-}
-
-main() {
-  RegExp2Test.testMain();
-}
diff --git a/tests/language/reg_exp3_test.dart b/tests/language/reg_exp3_test.dart
deleted file mode 100644
index cb375a5..0000000
--- a/tests/language/reg_exp3_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing regular expressions in Dart.
-
-import "package:expect/expect.dart";
-
-class RegExp3Test {
-  static testMain() {
-    var i = 2000;
-    try {
-      RegExp exp = new RegExp("[");
-      i = 100; // Should not reach here.
-    } on FormatException catch (e) {
-      i = 0;
-    }
-    Expect.equals(0, i);
-  }
-}
-
-main() {
-  RegExp3Test.testMain();
-}
diff --git a/tests/language/reg_exp_test.dart b/tests/language/reg_exp_test.dart
deleted file mode 100644
index 82f4595..0000000
--- a/tests/language/reg_exp_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing regular expressions in Dart.
-
-import "package:expect/expect.dart";
-
-void main() {
-  RegExp exp = new RegExp(r"(\w+)");
-  String str = "Parse my string";
-  List<Match> matches = exp.allMatches(str).toList();
-  Expect.equals(3, matches.length);
-  Expect.equals("Parse", matches[0].group(0));
-  Expect.equals("my", matches[1].group(0));
-  Expect.equals("string", matches[2].group(0));
-
-  // Check that allMatches progresses correctly for empty matches, and that
-  // it includes the empty match at the end position.
-  exp = new RegExp("a?");
-  str = "babba";
-  Expect.listEquals(["", "a", "", "", "a", ""],
-      exp.allMatches(str).map((x) => x[0]).toList());
-
-  // Check that allMatches works with optional start index.
-  exp = new RegExp("as{2}");
-  str = "assassin";
-  Expect.equals(2, exp.allMatches(str).length);
-  Expect.equals(2, exp.allMatches(str, 0).length);
-  Expect.equals(1, exp.allMatches(str, 1).length);
-  Expect.equals(0, exp.allMatches(str, 4).length);
-  Expect.equals(0, exp.allMatches(str, str.length).length);
-  Expect.throws(() => exp.allMatches(str, -1));
-  Expect.throws(() => exp.allMatches(str, str.length + 1));
-
-  exp = new RegExp(".*");
-  Expect.equals("", exp.allMatches(str, str.length).single[0]);
-
-  // The "^" must only match at the beginning of the string.
-  // Using a start-index doesn't change where the string starts.
-  exp = new RegExp("^ass");
-  Expect.equals(1, exp.allMatches(str, 0).length);
-  Expect.equals(0, exp.allMatches(str, 3).length);
-
-  // Regression test for http://dartbug.com/2980
-  exp = new RegExp("^", multiLine: true); // Any zero-length match will work.
-  str = "foo\nbar\nbaz";
-  Expect.equals(" foo\n bar\n baz", str.replaceAll(exp, " "));
-
-  exp = new RegExp(r"(\w+)");
-  Expect.isNull(exp.matchAsPrefix(" xyz ab"));
-  Expect.isNull(exp.matchAsPrefix(" xyz ab", 0));
-
-  var m = exp.matchAsPrefix(" xyz ab", 1);
-  Expect.equals("xyz", m[0]);
-  Expect.equals("xyz", m[1]);
-  Expect.equals(1, m.groupCount);
-
-  m = exp.matchAsPrefix(" xyz ab", 2);
-  Expect.equals("yz", m[0]);
-  Expect.equals("yz", m[1]);
-  Expect.equals(1, m.groupCount);
-
-  m = exp.matchAsPrefix(" xyz ab", 3);
-  Expect.equals("z", m[0]);
-  Expect.equals("z", m[1]);
-  Expect.equals(1, m.groupCount);
-
-  Expect.isNull(exp.matchAsPrefix(" xyz ab", 4));
-
-  m = exp.matchAsPrefix(" xyz ab", 5);
-  Expect.equals("ab", m[0]);
-  Expect.equals("ab", m[1]);
-  Expect.equals(1, m.groupCount);
-
-  m = exp.matchAsPrefix(" xyz ab", 6);
-  Expect.equals("b", m[0]);
-  Expect.equals("b", m[1]);
-  Expect.equals(1, m.groupCount);
-
-  Expect.isNull(exp.matchAsPrefix(" xyz ab", 7));
-
-  Expect.throws(() => exp.matchAsPrefix(" xyz ab", -1));
-  Expect.throws(() => exp.matchAsPrefix(" xyz ab", 8));
-}
diff --git a/tests/language/regress_10996_lib.dart b/tests/language/regress_10996_lib.dart
deleted file mode 100644
index 77071a2..0000000
--- a/tests/language/regress_10996_lib.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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 regress_10996_lib;
-
-var a = 3;
-var b = 4;
-var c = 5;
-var d = 6;
diff --git a/tests/language/regress_10996_test.dart b/tests/language/regress_10996_test.dart
deleted file mode 100644
index 4aefa94..0000000
--- a/tests/language/regress_10996_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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";
-import "regress_10996_lib.dart" as lib;
-
-foo(a, [b]) {
-  return a + b + lib.a + lib.b;
-}
-
-bar(c, {d}) {
-  return c + d + lib.c + lib.d;
-}
-
-main() {
-  Expect.equals(1 + 2 + 3 + 4, foo(1, 2));
-  Expect.equals(7 + 8 + 3 + 4, foo(7, 8));
-  Expect.equals(3 + 4 + 5 + 6, bar(3, d: 4));
-  Expect.equals(7 + 8 + 5 + 6, bar(7, d: 8));
-}
diff --git a/tests/language/regress_11010_test.dart b/tests/language/regress_11010_test.dart
deleted file mode 100644
index 12f6609..0000000
--- a/tests/language/regress_11010_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// We used to have an issue in dart2js where calling a top-level or
-// static field wouldn't register the 'call' selector correctly.
-var caller = new Caller();
-
-class Caller {
-  call(a, b) => a + b;
-}
-
-main() {
-  if (caller(42, 87) != 42 + 87) {
-    throw 'unexpected result';
-  }
-}
diff --git a/tests/language/regress_11800_test.dart b/tests/language/regress_11800_test.dart
deleted file mode 100644
index 8b7217b..0000000
--- a/tests/language/regress_11800_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test correct register allocation with a value used twice at the same
-// instruction.
-test(List a, int v) {
-  a[v] = v;
-}
-
-main() {
-  var list = new List(2);
-  for (var i = 0; i < 20; i++) test(list, 1);
-  Expect.equals(null, list[0]);
-  Expect.equals(1, list[1]);
-}
diff --git a/tests/language/regress_12561_test.dart b/tests/language/regress_12561_test.dart
deleted file mode 100644
index c39991a..0000000
--- a/tests/language/regress_12561_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class C {
-  noSuchMethod(int x, int y) => x + y;
-}
-
-main() {
-  Expect.throws(() => new C().foo, (e) => e is Error);
-}
diff --git a/tests/language/regress_12615_test.dart b/tests/language/regress_12615_test.dart
deleted file mode 100644
index 02511c9..0000000
--- a/tests/language/regress_12615_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-// Test that try-catch works properly in the VM.
-
-main() {
-  void test() {
-    f() {
-      try {} catch (e) {}
-    }
-
-    try {} catch (e) {}
-  }
-
-  test();
-}
diff --git a/tests/language/regress_13462_0_test.dart b/tests/language/regress_13462_0_test.dart
deleted file mode 100644
index b87bf1f..0000000
--- a/tests/language/regress_13462_0_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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:mirrors';
-
-main() {
-  print(MirrorSystem.getName(#foo));
-}
diff --git a/tests/language/regress_13462_1_test.dart b/tests/language/regress_13462_1_test.dart
deleted file mode 100644
index bffdd03..0000000
--- a/tests/language/regress_13462_1_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2013, 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:mirrors';
-
-main() {
-  var name = MirrorSystem.getName(#foo);
-  if (name != 'foo') throw 'Wrong name: $name != foo';
-}
diff --git a/tests/language/regress_13494_test.dart b/tests/language/regress_13494_test.dart
deleted file mode 100644
index aaf975a..0000000
--- a/tests/language/regress_13494_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js. Test that the argument to an unresolved static
-// getter is only evaluated once.
-
-import "package:expect/expect.dart";
-
-int i = 0;
-
-p(x) => i++;
-
-class A {}
-
-main() {
-  bool caught = false;
-  try {
-    A.unknown = p(2);
-  } catch (_) {
-    caught = true;
-  }
-  Expect.isTrue(caught);
-  Expect.equals(1, i);
-}
diff --git a/tests/language/regress_14105_test.dart b/tests/language/regress_14105_test.dart
deleted file mode 100644
index 8051513..0000000
--- a/tests/language/regress_14105_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for Issue 14105.
-
-typedef UsedAsFieldType();
-
-class ClassOnlyForRti {
-  UsedAsFieldType field;
-}
-
-class A<T> {
-  var field;
-}
-
-use(a) => a.field = "";
-
-var useFieldSetter = use;
-
-main() {
-  var a = new A<ClassOnlyForRti>();
-  useFieldSetter(a);
-  print(a is A<int>);
-}
diff --git a/tests/language/regress_14348_test.dart b/tests/language/regress_14348_test.dart
deleted file mode 100644
index 137e93c..0000000
--- a/tests/language/regress_14348_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 14348.
-
-import "package:collection/equality.dart";
-
-main() {
-  const Equality<Iterable> eq = const UnorderedIterableEquality();
-  const Equality<Map<dynamic, Iterable>> mapeq =
-      const MapEquality<dynamic, dynamic>(values: eq);
-}
diff --git a/tests/language/regress_16640_test.dart b/tests/language/regress_16640_test.dart
deleted file mode 100644
index 8fe8399..0000000
--- a/tests/language/regress_16640_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 16640.
-
-class Segment extends SegmentGen {}
-
-class SegmentGen extends ConceptEntity<Segment> {}
-
-class ConceptEntity<E> {}
-
-main() {
-  new ConceptEntity<Segment>();
-}
diff --git a/tests/language/regress_17382_test.dart b/tests/language/regress_17382_test.dart
deleted file mode 100644
index 4f453fe..0000000
--- a/tests/language/regress_17382_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 17382.
-
-import 'package:expect/expect.dart';
-
-var mCalled = false;
-
-m(x) {
-  mCalled = true;
-  return x;
-}
-
-main() {
-  try {
-    tl(m(0));
-  } catch (e) {}
-  Expect.isTrue(mCalled);
-}
diff --git a/tests/language/regress_18435_test.dart b/tests/language/regress_18435_test.dart
deleted file mode 100644
index 267562f..0000000
--- a/tests/language/regress_18435_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 18435.
-
-import "package:expect/expect.dart";
-
-main() {
-  const MISSING_VALUE = "MISSING_VALUE";
-
-  void foo([var p1 = MISSING_VALUE, var p2 = MISSING_VALUE]) {
-    Expect.equals("P1", p1);
-    Expect.equals("P2", p2);
-  }
-
-  void bar([var p1 = "MISSING_VALUE", var p2 = "MISSING_VALUE"]) {
-    Expect.equals("P1", p1);
-    Expect.equals("P2", p2);
-  }
-
-  foo("P1", "P2");
-  bar("P1", "P2");
-}
diff --git a/tests/language/regress_18535_test.dart b/tests/language/regress_18535_test.dart
deleted file mode 100644
index 2abb964..0000000
--- a/tests/language/regress_18535_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 18535.
-
-import 'dart:mirrors';
-import 'package:collection/collection.dart';
-
-void main() {
-  print(currentMirrorSystem().libraries);
-}
diff --git a/tests/language/regress_18713_test.dart b/tests/language/regress_18713_test.dart
deleted file mode 100644
index ebf484a..0000000
--- a/tests/language/regress_18713_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class T<X> {
-  final Type tType = X;
-  Type get getTType => X;
-}
-
-class S<Y> {
-  final Type sType = Y;
-  Type get getSType => Y;
-}
-
-class TS<A, B> = T<A> with S<B>;
-
-@NoInline()
-@AssumeDynamic()
-dyn(x) => x;
-
-main() {
-  var ts = new TS<int, String>();
-
-  Expect.equals("String", ts.sType.toString());
-  Expect.equals("int", ts.tType.toString());
-  Expect.equals("String", ts.getSType.toString());
-  Expect.equals("int", ts.getTType.toString());
-
-  Expect.equals("String", dyn(ts).sType.toString());
-  Expect.equals("int", dyn(ts).tType.toString());
-  Expect.equals("String", dyn(ts).getSType.toString());
-  Expect.equals("int", dyn(ts).getTType.toString());
-}
diff --git a/tests/language/regress_18865_test.dart b/tests/language/regress_18865_test.dart
deleted file mode 100644
index 8727bb3..0000000
--- a/tests/language/regress_18865_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 18865.
-
-class B<T> {}
-
-class A<T> extends B {
-  static foo() => new A();
-}
-
-main() {
-  A.foo();
-}
diff --git a/tests/language/regress_19413_bar.dart b/tests/language/regress_19413_bar.dart
deleted file mode 100644
index 98ef508..0000000
--- a/tests/language/regress_19413_bar.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, 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 bar;
-
-f() {
-  print('bar.f()');
-}
diff --git a/tests/language/regress_19413_foo.dart b/tests/language/regress_19413_foo.dart
deleted file mode 100644
index b7e9a19..0000000
--- a/tests/language/regress_19413_foo.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2014, 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 foo;
-
-f() {
-  print('foo.f()');
-}
diff --git a/tests/language/regress_19413_test.dart b/tests/language/regress_19413_test.dart
deleted file mode 100644
index 2fed4fc..0000000
--- a/tests/language/regress_19413_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 19413.
-
-import 'regress_19413_foo.dart' as foo;
-import 'regress_19413_bar.dart' as foo;
-
-main() {
-  foo.f(); //# 01: static type warning, runtime error
-}
diff --git a/tests/language/regress_19728_test.dart b/tests/language/regress_19728_test.dart
deleted file mode 100644
index 44937da..0000000
--- a/tests/language/regress_19728_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 19728.
-
-class C<T extends dynamic> {
-  T field;
-
-  test() {
-    field = 0;
-    int i = field;
-  }
-}
-
-void main() {
-  new C().test();
-}
diff --git a/tests/language/regress_20074_test.dart b/tests/language/regress_20074_test.dart
deleted file mode 100644
index 77623e1..0000000
--- a/tests/language/regress_20074_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 20074. Check that a parameter is not declared
-// in the same scope as its function declaration.
-
-doit() {
-  error(error) {
-    print(error);
-  }
-
-  error('foobar');
-}
-
-main() {
-  doit();
-}
diff --git a/tests/language/regress_20394_lib.dart b/tests/language/regress_20394_lib.dart
deleted file mode 100644
index ab5154b..0000000
--- a/tests/language/regress_20394_lib.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-library lib;
-
-class Super {
-  Super();
-  Super._private(arg);
-}
diff --git a/tests/language/regress_20394_test.dart b/tests/language/regress_20394_test.dart
deleted file mode 100644
index 1cf77fa..0000000
--- a/tests/language/regress_20394_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-import 'regress_20394_lib.dart';
-
-class M {}
-
-class C extends Super with M {
-  C() : super._private(42); //  //# 01: compile-time error
-}
-
-main() {
-  new C();
-}
diff --git a/tests/language/regress_20840_test.dart b/tests/language/regress_20840_test.dart
deleted file mode 100644
index c9cf445..0000000
--- a/tests/language/regress_20840_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 20840.
-
-class SomeClass {
-  Object someField;
-
-  SomeClass() {
-    [1].forEach((o) => someMethod());
-    someField = new Object();
-  }
-
-  void someMethod() {
-    if (someField != null) {
-      throw "FAIL";
-    }
-  }
-}
-
-void main() {
-  new SomeClass();
-}
diff --git a/tests/language/regress_21016_test.dart b/tests/language/regress_21016_test.dart
deleted file mode 100644
index a8ca2d9..0000000
--- a/tests/language/regress_21016_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that we give up on tracing a function if one of its closurizations
-// escapes tracing.
-
-class A {
-  var _boo = 22;
-  get boo {
-    return _boo;
-    return 1;
-  }
-}
-
-class B {
-  var _bar = 42;
-  get boo {
-    return _bar;
-    return 1;
-  }
-}
-
-class Holder {
-  tearMe(x) => x.boo;
-}
-
-var list = [];
-
-main() {
-  var holder = new Holder();
-  var hide = ((X) => X)(holder.tearMe);
-  hide(new A());
-  list.add(holder.tearMe);
-  var x = list[0];
-  x(new B());
-}
diff --git a/tests/language/regress_21793_test.dart b/tests/language/regress_21793_test.dart
deleted file mode 100644
index ce85cb5..0000000
--- a/tests/language/regress_21793_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 21793.
-
-import 'package:expect/expect.dart';
-
-/* //  //# 01: static type warning, runtime error
-class A {
-  call(x) => x;
-}
-*/ //  //# 01: continued
-
-main() {
-  print(new A()(499));
-}
diff --git a/tests/language/regress_21795_test.dart b/tests/language/regress_21795_test.dart
deleted file mode 100644
index c264ef3..0000000
--- a/tests/language/regress_21795_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 21795.
-
-foo(t) {
-  try {
-    if (t == 123) throw 42;
-  } finally {}
-}
-
-bar() {
-  try {
-    return 42;
-  } finally {}
-}
-
-class A {
-  test(t) {
-    try {
-      foo(t);
-    } finally {
-      if (t == 0) {
-        try {} catch (err, st) {}
-      }
-    }
-  }
-}
-
-main() {
-  var a = new A();
-  for (var i = 0; i < 10000; ++i) a.test(0);
-  try {
-    a.test(123);
-  } catch (e, s) {
-    if (s.toString().indexOf("foo") == -1) {
-      print(s);
-      throw "Expected foo in stacktrace!";
-    }
-  }
-}
diff --git a/tests/language/regress_21912_test.dart b/tests/language/regress_21912_test.dart
deleted file mode 100644
index 0aa70d7..0000000
--- a/tests/language/regress_21912_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 21912.
-
-class A {}
-
-class B extends A {}
-
-typedef T Function2<S, T>(S z);
-typedef B AToB(A x);
-typedef A BToA(B x);
-
-void main() {
-  {
-    Function2<Function2<A, B>, Function2<B, A>> t1;
-    Function2<AToB, BToA> t2;
-    Function2<Function2<int, double>, Function2<int, double>> left;
-    left = t1; //# 01: static type warning
-    left = t2; //# 02: static type warning
-  }
-}
diff --git a/tests/language/regress_21998_1_test.dart b/tests/language/regress_21998_1_test.dart
deleted file mode 100644
index 132877e..0000000
--- a/tests/language/regress_21998_1_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2015, 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:math' as Math;
-import 'package:expect/expect.dart';
-
-main() {
-  Expect.equals(4, new C().m());
-}
-
-class C {
-  max(a) => a;
-
-  m() {
-    return max(Math.max(2, 4));
-  }
-}
diff --git a/tests/language/regress_21998_2_test.dart b/tests/language/regress_21998_2_test.dart
deleted file mode 100644
index 6441f7f..0000000
--- a/tests/language/regress_21998_2_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2015, 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:math' as Math;
-import 'package:expect/expect.dart';
-import 'regress_21998_lib1.dart' as lib1;
-
-main() {
-  Expect.equals(4, new C().m());
-}
-
-class C {
-  max(a) => a;
-
-  m() {
-    return max(Math.max(2, lib1.max('a', 'b', 'cd').length));
-  }
-}
diff --git a/tests/language/regress_21998_3_test.dart b/tests/language/regress_21998_3_test.dart
deleted file mode 100644
index 18f47d4..0000000
--- a/tests/language/regress_21998_3_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, 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:math' as Math;
-import 'package:expect/expect.dart';
-import 'regress_21998_lib1.dart' as lib1;
-import 'regress_21998_lib2.dart';
-
-main() {
-  Expect.equals(4, new C().m());
-}
-
-class C {
-  max(a) => a;
-
-  m() {
-    return max(Math.max(lib2_max(1, 2), lib1.max('a', 'b', 'cd').length));
-  }
-}
diff --git a/tests/language/regress_21998_4_test.dart b/tests/language/regress_21998_4_test.dart
deleted file mode 100644
index 7f0435e..0000000
--- a/tests/language/regress_21998_4_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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:math' as Math;
-import 'package:expect/expect.dart';
-import 'regress_21998_lib1.dart' as lib1;
-import 'regress_21998_lib2.dart';
-import 'regress_21998_lib3.dart';
-
-main() {
-  Expect.equals(4, new C().m());
-}
-
-class C {
-  max(a) => a;
-
-  m() {
-    return max(
-        Math.max(lib3_max(0, lib2_max(1, 2)), lib1.max('a', 'b', 'cd').length));
-  }
-}
diff --git a/tests/language/regress_21998_lib1.dart b/tests/language/regress_21998_lib1.dart
deleted file mode 100644
index 29750b6..0000000
--- a/tests/language/regress_21998_lib1.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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 regress_21998_lib1;
-
-String max(String a, String b, String c) => '$a$b$c';
diff --git a/tests/language/regress_21998_lib2.dart b/tests/language/regress_21998_lib2.dart
deleted file mode 100644
index fc445ec..0000000
--- a/tests/language/regress_21998_lib2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2015, 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 regress_21998_lib2;
-
-import 'dart:math';
-
-lib2_max(a, b) => max(a, b);
diff --git a/tests/language/regress_21998_lib3.dart b/tests/language/regress_21998_lib3.dart
deleted file mode 100644
index 93cb2f8..0000000
--- a/tests/language/regress_21998_lib3.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2015, 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 regress_21998_lib3;
-
-import 'dart:math' as math;
-
-lib3_max(a, b) => math.max(a, b);
diff --git a/tests/language/regress_22438_test.dart b/tests/language/regress_22438_test.dart
deleted file mode 100644
index 6466891a7..0000000
--- a/tests/language/regress_22438_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-
-main() async {
-  var error = "no error";
-  try {
-    try {
-      await new Future.error("error");
-    } on MissingType catch (e) {}
-  } catch (e) {
-    error = e;
-  }
-  Expect.isTrue(error is TypeError);
-}
diff --git a/tests/language/regress_22443_lib.dart b/tests/language/regress_22443_lib.dart
deleted file mode 100644
index 879d5f7..0000000
--- a/tests/language/regress_22443_lib.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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 regress_22443;
-
-class LazyClass {}
diff --git a/tests/language/regress_22443_test.dart b/tests/language/regress_22443_test.dart
deleted file mode 100644
index bb4abd2..0000000
--- a/tests/language/regress_22443_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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 'regress_22443_lib.dart' deferred as D;
-import 'package:expect/expect.dart';
-
-int fooCount = 0;
-
-foo() {
-  fooCount++;
-  return new D.LazyClass();
-}
-
-main() {
-  var caughtIt = false;
-  try {
-    foo();
-  } catch (e) {
-    caughtIt = true;
-  }
-  ;
-  D.loadLibrary().then((_) {
-    foo();
-    Expect.isTrue(caughtIt);
-    Expect.equals(2, fooCount);
-  });
-}
diff --git a/tests/language/regress_22445_test.dart b/tests/language/regress_22445_test.dart
deleted file mode 100644
index 10f238c..0000000
--- a/tests/language/regress_22445_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-
-foo() async {
-  try {
-    print("a");
-    await new Future.value(3);
-    print("b");
-    throw "Error";
-    print("c");
-  } catch (e) {
-    print("d");
-    await new Future.error("Error2");
-  } finally {
-    print("e");
-  }
-  print("f");
-}
-
-main() async {
-  var error = "no error";
-  try {
-    await foo();
-  } catch (e) {
-    error = e;
-  }
-  Expect.equals("Error2", error);
-}
diff --git a/tests/language/regress_22579_test.dart b/tests/language/regress_22579_test.dart
deleted file mode 100644
index 1077e85..0000000
--- a/tests/language/regress_22579_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-
-foo() async {
-  try {
-    await 1;
-  } catch (e) {}
-  throw "error";
-}
-
-main() async {
-  var error = "no error";
-  try {
-    await foo();
-  } catch (e) {
-    error = e;
-  }
-  Expect.equals("error", error);
-}
diff --git a/tests/language/regress_22666_test.dart b/tests/language/regress_22666_test.dart
deleted file mode 100644
index 432ec7c..0000000
--- a/tests/language/regress_22666_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2015, 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:collection';
-
-class A extends Object with LinkedListEntry<A> {}
-
-main() => new A();
diff --git a/tests/language/regress_22700_test.dart b/tests/language/regress_22700_test.dart
deleted file mode 100644
index 0be42f3..0000000
--- a/tests/language/regress_22700_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2015, 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";
-
-class WrapT<T> {
-  Type get type => T;
-}
-
-printAndCheck(t) {
-  print(t);
-  Expect.equals(String, t);
-}
-
-class MyClass<T> {
-  factory MyClass.works() {
-    Type t = new WrapT<T>().type;
-    printAndCheck(t);
-  }
-
-  factory MyClass.works2() {
-    printAndCheck(T);
-  }
-}
-
-main() {
-  new MyClass<String>.works();
-  new MyClass<String>.works2();
-}
diff --git a/tests/language/regress_22719_test.dart b/tests/language/regress_22719_test.dart
deleted file mode 100644
index 13310ef..0000000
--- a/tests/language/regress_22719_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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:collection';
-import 'package:expect/expect.dart';
-
-abstract class A {}
-
-abstract class B extends Object with IterableMixin<int> {
-  Iterator<int> get iterator;
-}
-
-abstract class C extends A with IterableMixin<int> implements B {
-  final list = [1, 2, 3, 4, 5];
-  Iterator<int> get iterator => list.iterator;
-}
-
-class D extends C {}
-
-void main() {
-  var d = new D();
-  var expected = 1;
-  for (var i in d) {
-    Expect.equals(expected, i);
-    expected += 1;
-  }
-}
diff --git a/tests/language/regress_22728_test.dart b/tests/language/regress_22728_test.dart
deleted file mode 100644
index b4f32c5..0000000
--- a/tests/language/regress_22728_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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';
-
-bool assertsChecked() {
-  bool checked = false;
-  try {
-    assert(false);
-  } on AssertionError catch (error) {
-    checked = true;
-  }
-  return checked;
-}
-
-main() async {
-  bool fault = false;
-  try {
-    assert(await false);
-  } on AssertionError catch (error) {
-    fault = true;
-  }
-  Expect.equals(assertsChecked(), fault);
-}
diff --git a/tests/language/regress_22777_test.dart b/tests/language/regress_22777_test.dart
deleted file mode 100644
index 38bc24b..0000000
--- a/tests/language/regress_22777_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2015, 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:async_helper/async_helper.dart";
-import "package:expect/expect.dart";
-
-var a = 0;
-
-testSync() {
-  do {
-    continue;
-  } while (throw "Error");
-  a = 100;
-}
-
-testAsync() async {
-  do {
-    continue;
-  } while (await (throw "Error"));
-  a = 100;
-}
-
-test() async {
-  try {
-    testSync();
-  } catch (e) {
-    Expect.equals(e, "Error");
-  }
-  Expect.equals(a, 0);
-
-  try {
-    await testAsync();
-  } catch (e) {
-    Expect.equals(e, "Error");
-  }
-  Expect.equals(a, 0);
-}
-
-main() {
-  asyncStart();
-  test().then((_) => asyncEnd());
-}
diff --git a/tests/language/regress_22822_test.dart b/tests/language/regress_22822_test.dart
deleted file mode 100644
index ad990c7..0000000
--- a/tests/language/regress_22822_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 22822. The assignment in the finally block
-// used to crash because it was executed at context level 1 instead of
-// context level 2.
-
-import 'package:expect/expect.dart';
-
-test(b) {
-  try {
-    for (int i = 0; i < 10; i++) {
-      // Closurizing i and b, thus the return statement
-      // executes at context level 2, and the code in
-      // the finally block runs at context level 1.
-      return () => i + b;
-    }
-  } finally {
-    b = 10;
-  }
-}
-
-main() {
-  var c = test(0);
-  Expect.equals(10, c());
-}
diff --git a/tests/language/regress_22858_test.dart b/tests/language/regress_22858_test.dart
deleted file mode 100644
index d685ce2..0000000
--- a/tests/language/regress_22858_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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';
-
-main() {
-  var good = "good";
-
-  f1() {
-    {
-      var bad = "bad";
-      f2() {
-        bad;
-      }
-    }
-
-    Expect.equals("good", good);
-    do {
-      Expect.equals("good", good);
-      int ugly = 0;
-      f3() {
-        ugly;
-      }
-    } while (false);
-  }
-
-  f1();
-}
diff --git a/tests/language/regress_22936_test.dart b/tests/language/regress_22936_test.dart
deleted file mode 100644
index 700e133..0000000
--- a/tests/language/regress_22936_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 22936.
-
-import 'package:expect/expect.dart';
-
-bool fooCalled = false;
-
-foo() {
-  fooCalled = true;
-  return null;
-}
-
-main() {
-  final x = null;
-  try {
-    x = //   //# 01: static type warning
-    foo();
-  } on NoSuchMethodError {}
-  Expect.isTrue(fooCalled);
-}
diff --git a/tests/language/regress_22976_test.dart b/tests/language/regress_22976_test.dart
deleted file mode 100644
index d64ef30..0000000
--- a/tests/language/regress_22976_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 22976.
-
-class A<T> {}
-
-class B<T> implements A<T> {}
-
-class C<S, T> implements B<S>, A<T> {}
-
-main() {
-  C<int, String> c1 = new C<int, String>();
-  C<String, int> c2 = new C<String, int>();
-  A<int> a0 = c1; //# 01: ok
-  A<int> a1 = c2; //# 02: ok
-}
diff --git a/tests/language/regress_23038_test.dart b/tests/language/regress_23038_test.dart
deleted file mode 100644
index 9fbe0cb..0000000
--- a/tests/language/regress_23038_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2015, 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 C<T> {
-  const
-    factory //# 01: compile-time error
-  C()
-    = C<C<T>> //# 01: continued
-  ;
-}
-
-main() {
-  const C<int>();
-}
diff --git a/tests/language/regress_23046_test.dart b/tests/language/regress_23046_test.dart
deleted file mode 100644
index e5dcdc4..0000000
--- a/tests/language/regress_23046_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2015, 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 the logic for skipping the initial quotes in a string isn't
-// re-triggered after an interpolation expression.
-
-const String x = '$y"';
-const String y = 'foo';
-const Map m = const {x: 0, y: 1};
-
-main() {
-  Expect.equals(x, 'foo"');
-  Expect.equals(m.length, 2);
-}
diff --git a/tests/language/regress_23051_test.dart b/tests/language/regress_23051_test.dart
deleted file mode 100644
index f9837de..0000000
--- a/tests/language/regress_23051_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for issue 23051.
-
-main() {
-  new A(); //                                //# 01: continued
-}
-
-class A { //                                 //# 01: continued
-  // Note the trailing ' in the next line.   //# 01: continued
-  get foo => bar();' //                      //# 01: syntax error
-  //                                         //# 01: continued
-  String bar( //                             //# 01: continued
diff --git a/tests/language/regress_23089_test.dart b/tests/language/regress_23089_test.dart
deleted file mode 100644
index 4ee11bc..0000000
--- a/tests/language/regress_23089_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2015, 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.
-
-abstract class IPeer<C extends IP2PClient> {}
-
-abstract class IPeerRoom<P extends IPeer, C extends IP2PClient> {}
-
-abstract class IP2PClient<R extends IPeerRoom> {}
-
-class _Peer<C extends _P2PClient> implements IPeer<C> {}
-
-class _PeerRoom<P extends _Peer, C extends _P2PClient>
-    implements IPeerRoom<P, C> {}
-
-abstract class _P2PClient<R extends _PeerRoom, P extends _Peer>
-    implements IP2PClient<R> {}
-
-void main() {}
diff --git a/tests/language/regress_23408_lib.dart b/tests/language/regress_23408_lib.dart
deleted file mode 100644
index 64c4964..0000000
--- a/tests/language/regress_23408_lib.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, 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 regress_23408_lib;
-
-import "regress_23408_test.dart" as main;
-
-class K extends main.C {
-  K();
-}
diff --git a/tests/language/regress_23408_test.dart b/tests/language/regress_23408_test.dart
deleted file mode 100644
index f47f1cb..0000000
--- a/tests/language/regress_23408_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2015, 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 regress_23408_test;
-
-import 'package:expect/expect.dart';
-
-import 'regress_23408_lib.dart' deferred as lib;
-
-class A<T> extends C {
-  get t => "$T";
-}
-
-class C {
-  var v = 55;
-  C();
-  factory C.c() = lib.K;
-  factory C.l() = A<lib.K>;
-}
-
-void main() {
-  var a = new C.l(); // Redirects to A<dynamic>
-  Expect.equals("dynamic", a.t);
-  Expect.throws(() => new C.c());
-  lib.loadLibrary().then((_) {
-    var b = new C.l(); // Still redirects to A<dynamic>
-    Expect.equals("dynamic", b.t);
-    var z = new C.c();
-    Expect.equals(55, z.v);
-  });
-}
diff --git a/tests/language/regress_23498_test.dart b/tests/language/regress_23498_test.dart
deleted file mode 100644
index eb48049..0000000
--- a/tests/language/regress_23498_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-
-foo() async {
-  try {
-    try {
-      await new Future.error('error');
-    } catch (error) {
-      print("caught once");
-      throw 'error';
-    }
-  } catch (error) {
-    print("caught twice");
-    throw 'error';
-  }
-}
-
-main() async {
-  var error = "no error";
-  try {
-    await foo();
-  } catch (e) {
-    error = e;
-  }
-  Expect.equals("error", error);
-}
diff --git a/tests/language/regress_23500_test.dart b/tests/language/regress_23500_test.dart
deleted file mode 100644
index cce070c..0000000
--- a/tests/language/regress_23500_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-
-foo() async {
-  try {
-    try {
-      await for (var c in new Stream.fromIterable([])) {} // //# 01: ok
-      await 0; // //# 02: ok
-    } catch (error) {}
-  } catch (error) {}
-  throw "error";
-}
-
-main() async {
-  var error = "no error";
-  try {
-    await foo();
-  } catch (e) {
-    error = e;
-  }
-  Expect.equals("error", error);
-}
diff --git a/tests/language/regress_23537_test.dart b/tests/language/regress_23537_test.dart
deleted file mode 100644
index c8c6667..0000000
--- a/tests/language/regress_23537_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2015, 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';
-
-var d;
-
-test(a) {
-  while (true) {
-    try {
-      var b;
-      try {
-        for (int i = 0; i < 10; i++) {
-          // Closurizing i, a, and b, thus the return statement
-          // executes at context level 3, and the code in
-          // the finally blocks runs at context level 1 and 2.
-          return () => i + a + b;
-        }
-      } finally {
-        b = 10;
-        while (true) {
-          // Chain a new context.
-          var c = 5;
-          d = () => a + b + c;
-          break;
-        }
-      }
-    } finally {
-      a = 1;
-    }
-    break;
-  }
-}
-
-main() {
-  var c = test(0);
-  Expect.equals(11, c());
-  Expect.equals(16, d());
-}
diff --git a/tests/language/regress_23650_test.dart b/tests/language/regress_23650_test.dart
deleted file mode 100644
index 1684736..0000000
--- a/tests/language/regress_23650_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that type variables in try-catch work.
-
-import "package:expect/expect.dart";
-
-class C<T> {
-  C.foo();
-  factory C() {
-    try {
-      return new C<T>.foo();
-    } finally {}
-  }
-}
-
-main() {
-  var c = new C<int>();
-  Expect.isTrue(c is C<int>);
-  Expect.isFalse(c is C<String>);
-}
diff --git a/tests/language/regress_23996_test.dart b/tests/language/regress_23996_test.dart
deleted file mode 100644
index 4401a46..0000000
--- a/tests/language/regress_23996_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// 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.
-
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-
-/// This test verifies that an await for loop sends the correct
-/// signals to the stream it iterates over:
-/// 1) A listen event.
-/// 2) A pause event when the loop body is awaiting something,
-///    and more elements arrive on the stream.  See issue
-///    https://github.com/dart-lang/sdk/issues/23996 .
-/// 3) A resume event, when the loop is again ready to iterate.
-main() {
-  Completer listenEventReceived = new Completer();
-  Completer pauseEventReceived = new Completer();
-  Completer resumeEventReceived = new Completer();
-  StreamController controller = new StreamController(
-      onListen: () => listenEventReceived.complete(),
-      onPause: () => pauseEventReceived.complete(),
-      onResume: () => resumeEventReceived.complete());
-
-  Completer forLoopEntered = new Completer();
-
-  /// The send function puts items on the stream. It waits for a
-  /// listener, puts "first" on the stream, waits for the for loop
-  /// to start (and eventually block), puts "second" on the stream
-  /// multiple times, letting the event loop run, until the for loop
-  /// pauses the stream because it it blocked.
-  /// The for loop unblocks after the pause message is received, and
-  /// reads the stream items, sending a stream resume message when it
-  /// is ready for more.
-  /// Then the send function puts a final "third" on the stream, and
-  /// closes the stream.
-  send() async {
-    await listenEventReceived.future;
-    controller.add('first');
-    await forLoopEntered.future;
-    var timer = new Timer.periodic(new Duration(milliseconds: 10), (timer) {
-      controller.add('second');
-    });
-    await pauseEventReceived.future;
-    // pauseEventReceived.future completes when controller.stream is
-    // paused by the await-for loop below. What's specified is that
-    // await-for must pause immediately on an "await", but instead
-    // the implementations agree on not pausing until receiving the
-    // next event. For this reason, [timer] will call its callback at
-    // least once before we cancel it again.
-    timer.cancel();
-    await resumeEventReceived.future;
-    controller.add('third');
-    controller.close();
-  }
-
-  receive() async {
-    bool thirdReceived = false;
-    await for (var entry in controller.stream) {
-      if (entry == 'first') {
-        forLoopEntered.complete();
-        await pauseEventReceived.future;
-      } else if (entry == 'third') {
-        thirdReceived = true;
-      }
-    }
-    if (!thirdReceived) {
-      throw "Error in await-for loop: 'third' not received";
-    }
-  }
-
-  asyncTest(() async {
-    // We need to start both functions in parallel, and wait on them both.
-    var f = send();
-    await receive();
-    await f;
-  });
-}
diff --git a/tests/language/regress_24283_test.dart b/tests/language/regress_24283_test.dart
deleted file mode 100644
index d98e829..0000000
--- a/tests/language/regress_24283_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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";
-
-main() {
-  // Smi
-  var i = 1 << 30;
-  var j = -i;
-  Expect.equals(0, i >> 37);
-  Expect.equals(-1, j >> 37);
-  // Mint
-  i = 1 << 50;
-  j = -i;
-  Expect.equals(0, i >> 67);
-  Expect.equals(-1, j >> 67);
-  // Bigint
-  i = i << 120;
-  j = -i;
-  Expect.equals(0, i >> 199);
-  Expect.equals(-1, j >> 199);
-}
diff --git a/tests/language/regress_24567_test.dart b/tests/language/regress_24567_test.dart
deleted file mode 100644
index 8010da7..0000000
--- a/tests/language/regress_24567_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-import 'dart:math' as math;
-
-class Random {}
-
-typedef F(Random r);
-
-main() {
-  f(Random r) {}
-  g(math.Random r) {}
-  Expect.isTrue(f is F);
-  Expect.isFalse(g is F);
-}
diff --git a/tests/language/regress_24935_test.dart b/tests/language/regress_24935_test.dart
deleted file mode 100644
index 430629f..0000000
--- a/tests/language/regress_24935_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-import 'dart:async';
-
-S() => new Stream.fromIterable([1]);
-
-Future main() async {
-  L:
-  for (var s = 0; s < 10; s++) {
-    await for (var s1 in S()) {
-      await for (var s2 in S()) {
-        continue L;
-      }
-    }
-  }
-  // Regression check: make sure throwing an exception
-  // after breaking out of the innermost loop does not
-  // crash the VM. In other words, the expected test
-  // outcome is an unhandled exception.
-  throw "ball"; //# 01: runtime error
-}
diff --git a/tests/language/regress_25122_test.dart b/tests/language/regress_25122_test.dart
deleted file mode 100644
index b7d4068..0000000
--- a/tests/language/regress_25122_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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.
-
-main() {}
-
-class AbstractListMember<E, M extends AbstractListMember<E, M>> {}
-
-class RepoListMember<M extends RepoListMember<M>>
-    extends AbstractListMember<String, M> {}
diff --git a/tests/language/regress_25246_1_test.dart b/tests/language/regress_25246_1_test.dart
deleted file mode 100644
index 2df6b05..0000000
--- a/tests/language/regress_25246_1_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, 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 'regress_25246_2.dart';
-
-class ConcreteClass extends Object with MixIn {}
-
-void main() {
-  new ConcreteClass().test();
-}
diff --git a/tests/language/regress_25246_2.dart b/tests/language/regress_25246_2.dart
deleted file mode 100644
index 736818c..0000000
--- a/tests/language/regress_25246_2.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2015, 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 'regress_25246_3.dart';
-
-class MixIn {
-  var test3 = new Test3(() {});
-  void test() {
-    test3.test();
-  }
-}
diff --git a/tests/language/regress_25246_3.dart b/tests/language/regress_25246_3.dart
deleted file mode 100644
index ce61a2e..0000000
--- a/tests/language/regress_25246_3.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2015, 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 Test3 {
-  final fn;
-  Test3(this.fn);
-  void test() {
-    fn();
-  }
-}
diff --git a/tests/language/regress_25389_part.dart b/tests/language/regress_25389_part.dart
deleted file mode 100644
index 49f4142..0000000
--- a/tests/language/regress_25389_part.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-part of regress_25389;
-
-abstract class ComponentState<S extends ComponentState> {}
-
-abstract class AbstractListEditorState<D,
-    S extends AbstractListEditorState<D, S>> extends ComponentState<S> {}
-
-class IssueListEditorState
-    extends AbstractListEditorState<String, IssueListEditorState>
-    implements ComponentState<IssueListEditorState> {}
diff --git a/tests/language/regress_25389_test.dart b/tests/language/regress_25389_test.dart
deleted file mode 100644
index f15bb0c..0000000
--- a/tests/language/regress_25389_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-// VMOptions=--error-on-bad-type
-
-library regress_25389;
-
-part 'regress_25389_part.dart';
-
-main() {
-  new IssueListEditorState();
-}
-
-abstract class AbstractListEditor<D, S extends AbstractListEditorState<D, S>> {}
diff --git a/tests/language/regress_25550_test.dart b/tests/language/regress_25550_test.dart
deleted file mode 100644
index 4a8a7c5..0000000
--- a/tests/language/regress_25550_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-typedef int Adder(int a, int b);
-
-class Mock {
-  noSuchMethod(i) => null;
-}
-
-class MockAdder extends Mock {
-  int call(int a, int b);
-}
-
-main() {
-  Adder adder = new MockAdder();
-}
diff --git a/tests/language/regress_25568_test.dart b/tests/language/regress_25568_test.dart
deleted file mode 100644
index 91189cd..0000000
--- a/tests/language/regress_25568_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-
-main() {}
-
-class BacklogListEditorState
-    extends AbstractListEditorState<BacklogsState, BacklogListEditorState> {}
-
-class BacklogsState extends MutableEntityState<BacklogsState> {}
-
-abstract class AbstractListEditorState<ES extends ComponentState<ES>,
-    S extends AbstractListEditorState<ES, S>> extends ComponentState<S> {}
-
-abstract class ComponentState<S extends ComponentState<S>> {}
-
-abstract class EntityState<ES extends EntityState<ES>>
-    extends ComponentState<ES> {}
-
-abstract class MutableEntityState<S extends MutableEntityState<S>>
-    extends EntityState<S> implements ComponentState<S> {}
diff --git a/tests/language/regress_25609_lib1.dart b/tests/language/regress_25609_lib1.dart
deleted file mode 100644
index 2be3011..0000000
--- a/tests/language/regress_25609_lib1.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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 regress_25609_lib1;
-
-import 'regress_25609_lib2.dart';
-
-typedef Bar Foo(int y);
diff --git a/tests/language/regress_25609_lib2.dart b/tests/language/regress_25609_lib2.dart
deleted file mode 100644
index d51c061..0000000
--- a/tests/language/regress_25609_lib2.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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 regress_25609_lib2;
-
-typedef void Bar(double x);
diff --git a/tests/language/regress_25609_test.dart b/tests/language/regress_25609_test.dart
deleted file mode 100644
index 67b783c..0000000
--- a/tests/language/regress_25609_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-// VMOptions=--error-on-bad-type
-
-import 'regress_25609_lib1.dart';
-
-Foo baz() => null;
-
-main() {
-  baz();
-}
diff --git a/tests/language/regress_25620_test.dart b/tests/language/regress_25620_test.dart
deleted file mode 100644
index ed47189..0000000
--- a/tests/language/regress_25620_test.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// 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.
-
-import "dart:async";
-
-typedef Future<T> SyncedExecutionFn<T>(Future<T> fn());
-main() {}
diff --git a/tests/language/regress_25935_test.dart b/tests/language/regress_25935_test.dart
deleted file mode 100644
index 5b2e4e1..0000000
--- a/tests/language/regress_25935_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-main() {
-  AddIssueSourceMember2 m = new AddIssueSourceMember2();
-}
-
-abstract class RepoListEditorState2<M extends RepoListMember2<M>,
-        S extends RepoListEditorState2<M, S>>
-    extends AbstractListEditorState2<M, S> {}
-
-abstract class AbstractListEditorState2<
-    M extends AbstractListMember2<Object, M>,
-    S extends AbstractListEditorState2<M, S>> extends ComponentState2<S> {}
-
-class AddIssueSourceMember2 extends RepoListMember2<AddIssueSourceMember2> {}
-
-class RepoListMember2<M extends RepoListMember2<M>>
-    extends AbstractListMember2<Object, M> {}
-
-abstract class AbstractListMember2<E, M extends AbstractListMember2<E, M>>
-    extends ComponentState2<M> {}
-
-abstract class ComponentState2<S extends ComponentState2<S>> {}
diff --git a/tests/language/regress_26133_test.dart b/tests/language/regress_26133_test.dart
deleted file mode 100644
index 89d872d..0000000
--- a/tests/language/regress_26133_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-
-import 'dart:async';
-import 'package:expect/expect.dart';
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } on TypeError {
-    return true;
-  }
-}
-
-var x = 'a';
-
-Future<int> foo() async {
-  return x;
-}
-
-main() {
-  foo().then((_) {
-    Expect.isFalse(isCheckedMode());
-  }, onError: (e) {
-    Expect.isTrue(isCheckedMode() && (e is TypeError));
-  });
-}
diff --git a/tests/language/regress_26175_test.dart b/tests/language/regress_26175_test.dart
deleted file mode 100644
index dd7ac2a..0000000
--- a/tests/language/regress_26175_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2015, 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:async';
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-// Test that local variable reads and writes are sequenced correctly with
-// respect to reads and writes in an awaited Future.  See issue 26175.
-
-// Reads are sequenced correctly with respect to writes in a Future.
-Future test1() async {
-  var x = 'a';
-  f() async => x = 'b';
-  Expect.equals('abb', '${x}${await f()}${x}');
-}
-
-// Writes are sequenced correctly with respect to writes in a Future.
-Future test2(ignore) async {
-  var x;
-  f() async => x = 'b';
-  Expect.equals('abb', '${x = 'a'}${await f()}${x}');
-}
-
-// Writes are sequenced correctly with respect to reads in a Future.
-Future test3(ignore) async {
-  var x = 'a';
-  f() async => x;
-  Expect.equals('bbb', '${x = 'b'}${await f()}${x}');
-}
-
-// Repeat the same tests for static variables.
-var cell = 'a';
-
-asyncReadCell() async => cell;
-asyncWriteCell(value) async => cell = value;
-
-Future test4(ignore) async {
-  // This test assumes that it can read the initial value of cell.
-  Expect.equals('abb', '${cell}${await asyncWriteCell('b')}${cell}');
-}
-
-Future test5(ignore) async {
-  Expect.equals('abb', '${cell = 'a'}${await asyncWriteCell('b')}${cell}');
-}
-
-Future test6(ignore) async {
-  Expect.equals('bbb', '${cell = 'b'}${await asyncReadCell()}${cell}');
-}
-
-// Test that throwing is sequenced correctly with respect to other effects.
-Future test7(ignore) async {
-  cell = 'a';
-  try {
-    Expect.equals(
-        'unreachable', '${throw 0}${await asyncWriteCell('b')}${cell}');
-  } catch (_) {
-    Expect.equals('a', cell);
-  }
-}
-
-main() {
-  asyncStart();
-  test1()
-      .then(test2)
-      .then(test3)
-      .then(test4)
-      .then(test5)
-      .then(test6)
-      .then(test7)
-      .then((_) => asyncEnd());
-}
diff --git a/tests/language/regress_26230_test.dart b/tests/language/regress_26230_test.dart
deleted file mode 100644
index 77792bc..0000000
--- a/tests/language/regress_26230_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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.
-
-class _RenderTabBar extends RenderBox
-    with
-        ContainerRenderObjectMixin<RenderBox, _TabBarParentData>,
-        RenderBoxContainerDefaultsMixin<RenderBox, _TabBarParentData> {}
-
-class RenderObject {}
-
-class RenderSector extends RenderObject {}
-
-class RenderBox extends RenderObject {}
-
-class ParentData {}
-
-class BoxParentData extends ParentData {}
-
-class SectorParentData extends ParentData {}
-
-class ContainerParentDataMixin<ChildType extends RenderObject> {}
-
-class ContainerRenderObjectMixin<ChildType extends RenderObject,
-    ParentDataType extends ContainerParentDataMixin<ChildType>> {}
-
-class SectorChildListParentData extends SectorParentData
-    with ContainerParentDataMixin<RenderSector> {}
-
-class RenderDecoratedSector extends RenderSector {}
-
-class RenderSectorWithChildren extends RenderDecoratedSector
-    with ContainerRenderObjectMixin<RenderSector, SectorChildListParentData> {}
-
-class ContainerBoxParentDataMixin<ChildType extends RenderObject>
-    extends BoxParentData with ContainerParentDataMixin<ChildType> {}
-
-class RenderBoxContainerDefaultsMixin<ChildType extends RenderBox,
-        ParentDataType extends ContainerBoxParentDataMixin<ChildType>>
-    implements ContainerRenderObjectMixin<ChildType, ParentDataType> {}
-
-class FlexParentData extends ContainerBoxParentDataMixin<RenderBox> {}
-
-class _TabBarParentData extends ContainerBoxParentDataMixin<RenderBox> {}
-
-main() {
-  new _RenderTabBar();
-}
diff --git a/tests/language/regress_26453_test.dart b/tests/language/regress_26453_test.dart
deleted file mode 100644
index 32d6f59..0000000
--- a/tests/language/regress_26453_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-
-// The program crashed with segfault because we when we first compile foo
-// and bar we allocate all four variables (a, b, c and d) to the context.
-// When we compile foo the second time (with optimizations) we allocate
-// only c and d to the context. This happened because parser folds away
-// "${a}" and "${b}" as constant expressions when parsing bar on its own,
-// i.e. the expressions were not parsed again and thus a and b were not
-// marked as captured.
-// This caused a mismatch between a context that bar expects and that
-// the optimized version of foo produces.
-
-foo() {
-  const a = 1;
-  const b = 2;
-  var c = 3;
-  var d = 4;
-
-  bar() {
-    if ("${a}" != "1") throw "failed";
-    if ("${b}" != "2") throw "failed";
-    if ("${c}" != "3") throw "failed";
-    if ("${d}" != "4") throw "failed";
-  }
-
-  bar();
-}
-
-main() {
-  for (var i = 0; i < 50000; i++) foo();
-}
diff --git a/tests/language/regress_26530_test.dart b/tests/language/regress_26530_test.dart
deleted file mode 100644
index ab22638..0000000
--- a/tests/language/regress_26530_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-var trace = "";
-
-main() {
-  var x = 0;
-  try {
-    try {
-      throw x++; // 1
-    } on int catch (e) {
-      trace += "$e";
-      trace += "-$x";
-      x++; // 2
-      try {
-        x++; // 3
-        rethrow;
-      } finally {
-        trace += "-f";
-        x++; // 4
-      }
-    }
-  } catch (e) {
-    trace += "-c";
-    trace += "-$e";
-    trace += "-$x";
-  }
-  Expect.equals("0-1-f-c-0-4", trace);
-}
diff --git a/tests/language/regress_26543_1_test.dart b/tests/language/regress_26543_1_test.dart
deleted file mode 100644
index 39305f6..0000000
--- a/tests/language/regress_26543_1_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-// Regression test for issue 26543
-
-class C {
-  var x;
-  C() : x = null ?? <int, int>{} {}
-}
-
-main() {
-  print(new C());
-}
diff --git a/tests/language/regress_26543_2_test.dart b/tests/language/regress_26543_2_test.dart
deleted file mode 100644
index ac7b5f5..0000000
--- a/tests/language/regress_26543_2_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-// Regression test for issue 26543
-
-class C {
-  var x, y;
-  C()
-      : x = null ?? <int, int>{},
-        y = 0 {}
-}
-
-main() {
-  print(new C());
-}
diff --git a/tests/language/regress_26543_3_test.dart b/tests/language/regress_26543_3_test.dart
deleted file mode 100644
index 91bbfa4..0000000
--- a/tests/language/regress_26543_3_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-// Regression test for issue 26543
-
-class C {
-  var x, y;
-  C()
-      : x = 0,
-        y = null ?? <int, int>{} {}
-}
-
-main() {
-  print(new C());
-}
diff --git a/tests/language/regress_26668_test.dart b/tests/language/regress_26668_test.dart
deleted file mode 100644
index 96c64ab..0000000
--- a/tests/language/regress_26668_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-import 'dart:async';
-
-main() async {
-  var myClass = new CustomClass<int>();
-  await myClass.processData();
-}
-
-class CustomClass<T> {
-  Future<T> processData() async {
-    return 0;
-  }
-}
diff --git a/tests/language/regress_26855_test.dart b/tests/language/regress_26855_test.dart
deleted file mode 100644
index 0377fa3..0000000
--- a/tests/language/regress_26855_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-
-void f0(this.x) {} // //# 0: compile-time error
-
-void f1(int g(this.x)) {} // //# 1: compile-time error
-
-void f2(int g(int this.x)) {} // //# 2: compile-time error
-
-class C {
-  C();
-  var x;
-  void f3(int g(this.x)) {} // //# 3: compile-time error
-  C.f4(int g(this.x)); // //# 4: compile-time error
-}
-
-main() {
-  f0(null); // //# 0: continued
-  f1(null); // //# 1: continued
-  f2(null); // //# 2: continued
-  C c = new C();
-  c.f3(null); // //# 3: continued
-  new C.f4(null); // //# 4: continued
-}
diff --git a/tests/language/regress_26948_test.dart b/tests/language/regress_26948_test.dart
deleted file mode 100644
index c37d3f7..0000000
--- a/tests/language/regress_26948_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import 'dart:async';
-import "package:expect/expect.dart";
-
-void check(Function f) {
-  Expect.isTrue(f());
-}
-
-Future doSync() async {
-  try {
-    await 123;
-  } finally {
-    var next = 5.0;
-    check(() => next == 5.0);
-  }
-}
-
-main() async {
-  for (int i = 0; i < 20; i++) {
-    await doSync();
-  }
-}
diff --git a/tests/language/regress_27164_test.dart b/tests/language/regress_27164_test.dart
deleted file mode 100644
index a71873c..0000000
--- a/tests/language/regress_27164_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-// Regression test for issue 27164.
-
-import 'package:expect/expect.dart';
-
-String simpleEcho(String arg) => arg;
-
-class Echo {
-  final echo;
-  // Check that the expression simpleEcho is a compile-time constant.
-  const Echo() : echo = simpleEcho;
-}
-
-void main() {
-  Expect.equals("hello", const Echo().echo("hello"));
-}
diff --git a/tests/language/regress_27572_test.dart b/tests/language/regress_27572_test.dart
deleted file mode 100644
index 17fb57f..0000000
--- a/tests/language/regress_27572_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-// Test static noSuchMethod with a prefix.
-
-import "package:expect/expect.dart";
-
-import 'dart:collection' as col;
-
-main() {
-  try {
-    col.foobar(1234567);
-  } catch (e) {
-    Expect.isTrue(e.toString().contains("1234567"));
-  }
-}
diff --git a/tests/language/regress_27617_test.dart b/tests/language/regress_27617_test.dart
deleted file mode 100644
index 960d987..0000000
--- a/tests/language/regress_27617_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-class Foo {
-  final String greeting;
-  Foo._(this.greeting) {}
-
-  // Const constructor must not redirect to non-const constructor.
-  const Foo.hi() : this._('hi'); // //# 1: compile-time error
-}
-
-main() {
-  const h = const Foo.hi(); // //# 1: continued
-}
diff --git a/tests/language/regress_27659_test.dart b/tests/language/regress_27659_test.dart
deleted file mode 100644
index e40a886..0000000
--- a/tests/language/regress_27659_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-const String lineLength = '120';
-
-foo({lineLength: lineLength}) {
-  print(lineLength);
-}
-
-bar({lineLength: lineLength}) async {
-  print(lineLength);
-}
-
-baz([lineLength = lineLength]) {
-  print(lineLength);
-}
-
-qux([lineLength = lineLength]) async {
-  print(lineLength);
-}
-
-main() {
-  foo();
-  bar();
-  baz();
-  qux();
-}
diff --git a/tests/language/regress_27700_test.dart b/tests/language/regress_27700_test.dart
deleted file mode 100644
index c5bacec..0000000
--- a/tests/language/regress_27700_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-// Regression test for issue 27700.
-
-main() {
-  var x = new List(0);
-  var z = "$x";
-}
diff --git a/tests/language/regress_27957_lib1.dart b/tests/language/regress_27957_lib1.dart
deleted file mode 100644
index 7a06ff3..0000000
--- a/tests/language/regress_27957_lib1.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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 regress_27957_lib1;
-
-class Superclass {
-  int m() => 1;
-}
diff --git a/tests/language/regress_27957_lib2.dart b/tests/language/regress_27957_lib2.dart
deleted file mode 100644
index 24097d0..0000000
--- a/tests/language/regress_27957_lib2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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 regress_27957_lib2;
-
-class Superclass {
-  int m() => 2;
-}
diff --git a/tests/language/regress_27957_test.dart b/tests/language/regress_27957_test.dart
deleted file mode 100644
index 3efa497..0000000
--- a/tests/language/regress_27957_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-import 'regress_27957_lib1.dart' as s1;
-import 'regress_27957_lib2.dart' as s2;
-
-class Mixin {}
-
-class C1 = s1.Superclass with Mixin;
-class C2 = s2.Superclass with Mixin;
-
-main() {
-  var c1 = new C1(), c2 = new C2();
-  Expect.equals(1, c1.m());
-  Expect.equals(2, c2.m());
-}
diff --git a/tests/language/regress_28217_test.dart b/tests/language/regress_28217_test.dart
deleted file mode 100644
index 3599f9b..0000000
--- a/tests/language/regress_28217_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-// Test non-existing redirecting constructor and
-// redirecting to a factory constructor.
-
-class B {
-  B() : this.a(); //   //# none: compile-time error
-  factory B.a() { } // //# 01: compile-time error
-  B.a(); //            //# 02: ok
-}
-
-main() => new B();
diff --git a/tests/language/regress_28255_test.dart b/tests/language/regress_28255_test.dart
deleted file mode 100644
index 118fc6e..0000000
--- a/tests/language/regress_28255_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// Regression test for issue 28255
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class Class {
-  noSuchMethod(i) => true;
-
-  foo() {
-    var o = this;
-    Expect.isFalse(o.bar is Null);
-    Expect.isTrue(o.bar != null);
-    Expect.equals(true.runtimeType, o.bar.runtimeType);
-  }
-}
-
-main() {
-  reflectClass(Class).newInstance(const Symbol(''), []).reflectee.foo();
-}
diff --git a/tests/language/regress_28278_lib.dart b/tests/language/regress_28278_lib.dart
deleted file mode 100644
index 0bc67f1..0000000
--- a/tests/language/regress_28278_lib.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// 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.
-
-foo(x) => x + "Hello";
diff --git a/tests/language/regress_28278_test.dart b/tests/language/regress_28278_test.dart
deleted file mode 100644
index e65ef08..0000000
--- a/tests/language/regress_28278_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-// VMOptions=--load-deferred-eagerly
-// VMOptions=
-
-import "package:expect/expect.dart";
-
-import "regress_28278_lib.dart" deferred as def;
-
-var result = "";
-
-class D {
-  m() async {
-    await def.loadLibrary();
-    result = def.foo(result += "Here");
-  }
-}
-
-main() async {
-  var d = new D();
-  await d.m();
-  await d.m();
-  Expect.equals("HereHelloHereHello", result);
-}
diff --git a/tests/language/regress_28341_test.dart b/tests/language/regress_28341_test.dart
deleted file mode 100644
index dfb991f..0000000
--- a/tests/language/regress_28341_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-enum E { A }
-
-main() {
-  Expect.isTrue(E.values == const <E>[E.A]);
-  Expect.isFalse(E.values == const [E.A]);
-}
diff --git a/tests/language/regress_28610_test.dart b/tests/language/regress_28610_test.dart
deleted file mode 100644
index adefd32d..0000000
--- a/tests/language/regress_28610_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class A {
-  final int Function = 0;
-}
-
-main() {
-  final int Function = 0;
-  Expect.equals(Function, new A().Function);
-}
diff --git a/tests/language/regress_29025_test.dart b/tests/language/regress_29025_test.dart
deleted file mode 100644
index c68f17a..0000000
--- a/tests/language/regress_29025_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-
-typedef T F<T>(T t);
-
-class B<T extends F<T>> {}
-
-class C<T extends F<C<T>>> {}
-
-class D extends B<D> {
-  D foo(D x) => x;
-  D call(D x) => x;
-  D bar(D x) => x;
-}
-
-class E extends C<E> {
-  C<E> foo(C<E> x) => x;
-  C<E> call(C<E> x) => x;
-  C<E> bar(C<E> x) => x;
-}
-
-main() {
-  F<D> fd = new D();
-  var d = fd(fd);
-  print(d);
-  F<E> fe = new E();
-  var e = fe(fe);
-  print(e);
-}
diff --git a/tests/language/regress_29243_test.dart b/tests/language/regress_29243_test.dart
deleted file mode 100644
index 60b0cb7..0000000
--- a/tests/language/regress_29243_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-int Function() x = () => 42;
-int Function(int Function()) y = (int Function() x) => x();
-List<int Function()> l = <int Function()>[()=>42, x];
-main() {
-  Expect.equals(42, y(l[1]));
-}
diff --git a/tests/language/regress_29349_test.dart b/tests/language/regress_29349_test.dart
deleted file mode 100644
index ea91b79..0000000
--- a/tests/language/regress_29349_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// 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.
-
-List<T> get<T>(T item) => <T>[item];
-List<T> get2<T>(T item) => <T>[item];
-
-void main() {
- print(get(1));
- print(get2(1));
-}
diff --git a/tests/language/regress_29357_test.dart b/tests/language/regress_29357_test.dart
deleted file mode 100644
index 3777e3c..0000000
--- a/tests/language/regress_29357_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-abstract class A<T extends A<T>> {}
-
-abstract class B<T extends A<T>> {}
-
-class C<U> extends B<D<U>> {}
-
-class D<U> extends A<D<U>> {}
-
-main() {
-  new D();
-  new C();
-  new D<C>();
-  new C<D>();
-}
diff --git a/tests/language/regress_29405_test.dart b/tests/language/regress_29405_test.dart
deleted file mode 100644
index 4907716..0000000
--- a/tests/language/regress_29405_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-class Foo {
-  void call(void callback(Foo foo)) {}
-}
-
-main() {
-  Foo foo = new Foo();
-  foo(foo);
-}
diff --git a/tests/language/regress_29481_test.dart b/tests/language/regress_29481_test.dart
deleted file mode 100644
index 424a436..0000000
--- a/tests/language/regress_29481_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-class C<T extends num Function(num)> {
-  final T func;
-  C(this.func);
-}
-
-main() {
-  var c = new C<int Function(int)>((int x) => x * 2);
-  print(c.func(21));
-}
diff --git a/tests/language/regress_29949_test.dart b/tests/language/regress_29949_test.dart
deleted file mode 100644
index 8685fae..0000000
--- a/tests/language/regress_29949_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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.
-
-abstract class S {}
-
-abstract class M<T> {}
-
-abstract class N<T> {}
-
-class C<T> extends S with M<C<T>>, N<C<T>> {}
-
-main() {
-  new C<int>();
-}
diff --git a/tests/language/regress_30092_test.dart b/tests/language/regress_30092_test.dart
deleted file mode 100644
index 46ff3cd..0000000
--- a/tests/language/regress_30092_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-class BigInt {}
-
-main() {
-  void foo(void Function(BigInt, BigInt) f) {
-    f(new BigInt(), new BigInt());
-  }
-
-  foo((x, y) {});
-}
diff --git a/tests/language/regress_30121_test.dart b/tests/language/regress_30121_test.dart
deleted file mode 100644
index 99451f5..0000000
--- a/tests/language/regress_30121_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-class Mock {
-  noSuchMethod(i) {}
-}
-
-class Foo {
-  int call() => 1;
-}
-
-class MockFoo extends Mock implements Foo {}
-
-main() {
-  var foo = new MockFoo();
-  foo();
-}
diff --git a/tests/language/regress_r24720_test.dart b/tests/language/regress_r24720_test.dart
deleted file mode 100644
index 4f24001..0000000
--- a/tests/language/regress_r24720_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for r24720.
-
-import 'package:expect/expect.dart';
-
-class A<T> {}
-
-class B extends A<int> {
-  B() : this.foo();
-  B.foo();
-}
-
-main() {
-  Expect.isTrue(new B() is B);
-  Expect.isTrue(new B() is A<int>);
-  Expect.isFalse(new B() is A<String>);
-}
diff --git a/tests/language/reify_typevar_static_test.dart b/tests/language/reify_typevar_static_test.dart
deleted file mode 100644
index 9fe3680..0000000
--- a/tests/language/reify_typevar_static_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class C<T> {
-  final x;
-  C([this.x]);
-
-  static staticFunction(bool b) =>
-    b ? T : //                               //# 00: compile-time error
-      null;
-  factory C.factoryConstructor(bool b) => new C(
-    b ? T : //                               //# 01: ok
-      null);
-  C.redirectingConstructor(bool b) : this(
-    b ? T : //                               //# 02: ok
-            null);
-  C.ordinaryConstructor(bool b)
-      : x =
-    b ? T : //                               //# 03: ok
-            null;
-}
-
-main() {
-  Expect.equals(null, C.staticFunction(false));
-  Expect.equals(null, new C.factoryConstructor(false).x);
-  Expect.equals(null, new C.redirectingConstructor(false).x);
-  Expect.equals(null, new C.ordinaryConstructor(false).x);
-}
diff --git a/tests/language/reify_typevar_test.dart b/tests/language/reify_typevar_test.dart
deleted file mode 100644
index 50c5e41..0000000
--- a/tests/language/reify_typevar_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class Foo<T> {
-  reify() {
-    return T;
-  }
-}
-
-main() {
-  Expect.equals(int, new Foo<int>().reify());
-  Expect.equals(Foo, new Foo().runtimeType);
-}
diff --git a/tests/language/resolution_test.dart b/tests/language/resolution_test.dart
deleted file mode 100644
index e9c1dc7..0000000
--- a/tests/language/resolution_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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";
-
-int get foo => 499;
-
-class CompileError {
-  var x;
-
-  // Dart2js tried to resolve factories twice. The second time during building
-  // when it was not allowed to do so.
-  factory CompileError() {
-    return new CompileError.internal(foo);
-  }
-
-  CompileError.internal(this.x);
-}
-
-void main() {
-  Expect.equals(499, new CompileError().x);
-}
diff --git a/tests/language/resolve_test.dart b/tests/language/resolve_test.dart
deleted file mode 100644
index 6cc392c..0000000
--- a/tests/language/resolve_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing resolving of dynamic and static calls.
-
-import "package:expect/expect.dart";
-
-class A {
-  static staticCall() {
-    return 4;
-  }
-
-  dynamicCall() {
-    return 5;
-  }
-
-  ovrDynamicCall() {
-    return 6;
-  }
-}
-
-class B extends A {
-  ovrDynamicCall() {
-    return -6;
-  }
-}
-
-class ResolveTest {
-  static testMain() {
-    var b = new B();
-    Expect.equals(3, (b.dynamicCall() + A.staticCall() + b.ovrDynamicCall()));
-  }
-}
-
-main() {
-  ResolveTest.testMain();
-}
diff --git a/tests/language/rethrow_test.dart b/tests/language/rethrow_test.dart
deleted file mode 100644
index 4b535c9..0000000
--- a/tests/language/rethrow_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException {
-  const MyException();
-}
-
-class OtherException {
-  const OtherException();
-}
-
-class RethrowTest {
-  MyException currentException;
-
-  void throwException() {
-    currentException = new MyException();
-    throw currentException;
-  }
-
-  void testRethrowPastUncaught() {
-    try {
-      try {
-        try {
-          throwException();
-          Expect.fail("Should have thrown an exception");
-        } catch (e) {
-          Expect.equals(true, identical(e, currentException));
-          rethrow;
-          Expect.fail("Should have thrown an exception");
-        }
-      } on OtherException catch (e) {
-        Expect.fail("Should not have caught OtherException");
-      }
-    } catch (e) {
-      Expect.equals(true, identical(e, currentException));
-    }
-  }
-
-  void testRethrow() {
-    try {
-      try {
-        throwException();
-        Expect.fail("Should have thrown an exception");
-      } catch (e) {
-        Expect.equals(true, identical(e, currentException));
-        rethrow;
-        Expect.fail("Should have thrown an exception");
-      }
-    } catch (e) {
-      Expect.equals(true, identical(e, currentException));
-    }
-  }
-}
-
-main() {
-  RethrowTest t = new RethrowTest();
-  t.testRethrow();
-  t.testRethrowPastUncaught();
-}
diff --git a/tests/language/return_in_loop_test.dart b/tests/language/return_in_loop_test.dart
deleted file mode 100644
index ebf100d..0000000
--- a/tests/language/return_in_loop_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-// Test for a dart2js bug where the live environment was not computed
-// right.
-
-import "package:expect/expect.dart";
-
-class A {
-  foo() {
-    var x = 0;
-    while (true) {
-      if (true) {
-        return 42;
-      } else {}
-      x = bar();
-    }
-  }
-
-  bar() => 1;
-}
-
-main() {
-  Expect.equals(42, new A().foo());
-}
diff --git a/tests/language/return_this_type_test.dart b/tests/language/return_this_type_test.dart
deleted file mode 100644
index 8187b76..0000000
--- a/tests/language/return_this_type_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Make sure the engine does not infer the wrong type for [:A.foo:].
-
-import "package:expect/expect.dart";
-
-class A {
-  foo() => this;
-}
-
-class B extends A {}
-
-main() {
-  Expect.isTrue(new B().foo() is B);
-}
diff --git a/tests/language/return_type_test.dart b/tests/language/return_type_test.dart
deleted file mode 100644
index 1346e41..0000000
--- a/tests/language/return_type_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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";
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-int returnString1() => 's';
-void returnNull() => null;
-void returnString2() => 's';
-
-main() {
-  if (isCheckedMode()) {
-    Expect.throws(returnString1, (e) => e is TypeError);
-    returnString2();
-    returnNull();
-  } else {
-    returnString1();
-    returnNull();
-    returnString2();
-  }
-}
diff --git a/tests/language/rewrite_assign_test.dart b/tests/language/rewrite_assign_test.dart
deleted file mode 100644
index 2a51f68..0000000
--- a/tests/language/rewrite_assign_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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";
-
-bar(x, y) {}
-
-foo(b) {
-  var x, y;
-  if (b) {
-    x = 1;
-    y = 2;
-  } else {
-    x = 2;
-    y = 1;
-  }
-  bar(x, y);
-  bar(x, y);
-  return x;
-}
-
-main() {
-  Expect.equals(1, foo(true));
-  Expect.equals(2, foo(false));
-}
diff --git a/tests/language/rewrite_compound_assign_test.dart b/tests/language/rewrite_compound_assign_test.dart
deleted file mode 100644
index ba4c1ef..0000000
--- a/tests/language/rewrite_compound_assign_test.dart
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2014, 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";
-
-var global = 0;
-
-class Foo {
-  var field = 0;
-  static var staticField = 0;
-}
-
-field_compound1(obj) {
-  return obj.field = obj.field + 5;
-}
-
-field_compound2(obj) {
-  return obj.field = obj.field + 1;
-}
-
-field_compound3(obj) {
-  return obj.field = obj.field - 1;
-}
-
-field_compound4(obj) {
-  return obj.field = obj.field * 1;
-}
-
-static_compound1() {
-  return Foo.staticField = Foo.staticField + 5;
-}
-
-static_compound2() {
-  return Foo.staticField = Foo.staticField + 1;
-}
-
-static_compound3() {
-  return Foo.staticField = Foo.staticField - 1;
-}
-
-static_compound4() {
-  return Foo.staticField = Foo.staticField * 1;
-}
-
-global_compound1() {
-  return global = global + 5;
-}
-
-global_compound2() {
-  return global = global + 1;
-}
-
-global_compound3() {
-  return global = global - 1;
-}
-
-global_compound4() {
-  return global = global * 1;
-}
-
-local_compound1(x) {
-  x = x + 5;
-  if (x > 0) {
-    return x;
-  }
-  return -x;
-}
-
-local_compound2(x) {
-  x = x + 1;
-  if (x > 0) {
-    return x;
-  }
-  return -x;
-}
-
-local_compound3(x) {
-  x = x - 1;
-  if (x > 0) {
-    return x;
-  }
-  return -x;
-}
-
-local_compound4(x) {
-  x = x * 1;
-  if (x > 0) {
-    return x;
-  }
-  return -x;
-}
-
-main() {
-  var obj = new Foo();
-  Expect.equals(5, field_compound1(obj));
-  Expect.equals(5, obj.field);
-  Expect.equals(6, field_compound2(obj));
-  Expect.equals(6, obj.field);
-  Expect.equals(5, field_compound3(obj));
-  Expect.equals(5, obj.field);
-  Expect.equals(5, field_compound4(obj));
-  Expect.equals(5, obj.field);
-
-  Expect.equals(5, static_compound1());
-  Expect.equals(5, Foo.staticField);
-  Expect.equals(6, static_compound2());
-  Expect.equals(6, Foo.staticField);
-  Expect.equals(5, static_compound3());
-  Expect.equals(5, Foo.staticField);
-  Expect.equals(5, static_compound4());
-  Expect.equals(5, Foo.staticField);
-
-  Expect.equals(5, global_compound1());
-  Expect.equals(5, global);
-  Expect.equals(6, global_compound2());
-  Expect.equals(6, global);
-  Expect.equals(5, global_compound3());
-  Expect.equals(5, global);
-  Expect.equals(5, global_compound4());
-  Expect.equals(5, global);
-
-  Expect.equals(8, local_compound1(3));
-  Expect.equals(3, local_compound1(-8));
-  Expect.equals(4, local_compound2(3));
-  Expect.equals(7, local_compound2(-8));
-  Expect.equals(2, local_compound3(3));
-  Expect.equals(9, local_compound3(-8));
-  Expect.equals(3, local_compound4(3));
-  Expect.equals(8, local_compound4(-8));
-}
diff --git a/tests/language/rewrite_conditional_test.dart b/tests/language/rewrite_conditional_test.dart
deleted file mode 100644
index 4e98475..0000000
--- a/tests/language/rewrite_conditional_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2014, 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';
-
-var global = 0;
-
-bar() {
-  global += 1;
-}
-
-baz() {
-  global += 100;
-}
-
-foo(x, y, z) {
-  if ((x ? false : true) ? y : z) {
-    bar();
-    bar();
-  } else {
-    baz();
-    baz();
-  }
-}
-
-foo2(x, y, z) {
-  return (x ? false : true) ? y : z;
-}
-
-foo3(x, y, z) {
-  if (x ? (z ? false : true) : (y ? false : true)) {
-    baz();
-    baz();
-  } else {
-    bar();
-    bar();
-  }
-}
-
-main() {
-  foo(true, true, true);
-  Expect.equals(2, global);
-
-  foo(true, true, false);
-  Expect.equals(202, global);
-
-  foo(true, false, true);
-  Expect.equals(204, global);
-
-  foo(true, false, false);
-  Expect.equals(404, global);
-
-  foo(false, true, true);
-  Expect.equals(406, global);
-
-  foo(false, true, false);
-  Expect.equals(408, global);
-
-  foo(false, false, true);
-  Expect.equals(608, global);
-
-  foo(false, false, false);
-  Expect.equals(808, global);
-
-  Expect.equals(true, foo2(true, true, true));
-  Expect.equals(false, foo2(true, true, false));
-  Expect.equals(true, foo2(true, false, true));
-  Expect.equals(false, foo2(true, false, false));
-  Expect.equals(true, foo2(false, true, true));
-  Expect.equals(true, foo2(false, true, false));
-  Expect.equals(false, foo2(false, false, true));
-  Expect.equals(false, foo2(false, false, false));
-
-  global = 0;
-  foo3(true, true, true);
-  Expect.equals(2, global);
-
-  foo3(true, true, false);
-  Expect.equals(202, global);
-
-  foo3(true, false, true);
-  Expect.equals(204, global);
-
-  foo3(true, false, false);
-  Expect.equals(404, global);
-
-  foo3(false, true, true);
-  Expect.equals(406, global);
-
-  foo3(false, true, false);
-  Expect.equals(408, global);
-
-  foo3(false, false, true);
-  Expect.equals(608, global);
-
-  foo3(false, false, false);
-  Expect.equals(808, global);
-}
diff --git a/tests/language/rewrite_for_update_order_test.dart b/tests/language/rewrite_for_update_order_test.dart
deleted file mode 100644
index ebdbbb1..0000000
--- a/tests/language/rewrite_for_update_order_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, 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";
-
-var counter = 0;
-var global = 0;
-
-test() {
-  ++counter;
-  return counter <= 2;
-}
-
-first() {
-  global = global + 1;
-}
-
-second() {
-  global = global * 2;
-}
-
-foo() {
-  while (test()) {
-    first();
-    second();
-  }
-}
-
-main() {
-  foo();
-  Expect.equals(6, global);
-}
diff --git a/tests/language/rewrite_if_empty_then_test.dart b/tests/language/rewrite_if_empty_then_test.dart
deleted file mode 100644
index 908b496..0000000
--- a/tests/language/rewrite_if_empty_then_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2014, 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";
-
-var global = 0;
-
-effect() {
-  global = 1;
-}
-
-baz(b) {
-  return b;
-}
-
-foo(b) {
-  if (b) {
-    // do nothing
-  } else {
-    effect();
-  }
-  return baz(b);
-}
-
-foo2(b) {
-  if (b) {
-    // do nothing (but implicit return may get inlined up here)
-  } else {
-    effect();
-  }
-}
-
-main() {
-  global = 0;
-  Expect.equals(true, foo(true));
-  Expect.equals(0, global);
-
-  global = 0;
-  Expect.equals(false, foo(false));
-  Expect.equals(1, global);
-
-  global = 0;
-  foo2(true);
-  Expect.equals(0, global);
-
-  global = 0;
-  foo2(false);
-  Expect.equals(1, global);
-}
diff --git a/tests/language/rewrite_if_return_test.dart b/tests/language/rewrite_if_return_test.dart
deleted file mode 100644
index 3c57605..0000000
--- a/tests/language/rewrite_if_return_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2014, 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";
-
-var global = 0;
-
-bar() {
-  global = 1;
-}
-
-baz() {
-  global = 2;
-}
-
-return_const(b) {
-  if (b) {
-    bar();
-    return 1;
-  } else {
-    baz();
-    return 1;
-  }
-}
-
-return_var(b, x) {
-  if (b) {
-    bar();
-    return x;
-  } else {
-    baz();
-    return x;
-  }
-}
-
-main() {
-  return_const(true);
-  Expect.equals(1, global);
-  return_const(false);
-  Expect.equals(2, global);
-
-  Expect.equals(4, return_var(true, 4));
-  Expect.equals(1, global);
-  Expect.equals(5, return_var(false, 5));
-  Expect.equals(2, global);
-}
diff --git a/tests/language/rewrite_if_swap_test.dart b/tests/language/rewrite_if_swap_test.dart
deleted file mode 100644
index fbde492..0000000
--- a/tests/language/rewrite_if_swap_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, 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";
-
-var global = 0;
-
-bar() {
-  global += 1;
-}
-
-baz() {
-  global += 100;
-}
-
-foo(b) {
-  var old_backend_was_used;
-  if (b ? false : true) {
-    bar();
-    bar();
-  } else {
-    baz();
-    baz();
-  }
-}
-
-main() {
-  foo(true);
-  Expect.equals(200, global);
-
-  foo(false);
-  Expect.equals(202, global);
-}
diff --git a/tests/language/rewrite_implicit_this_test.dart b/tests/language/rewrite_implicit_this_test.dart
deleted file mode 100644
index 6fcba68..0000000
--- a/tests/language/rewrite_implicit_this_test.dart
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) 2014, 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";
-
-String toplevel = 'A';
-
-class Foo {
-  String x = 'x';
-
-  easy(z) {
-        return x + y + z; //# 01: static type warning
-  }
-
-  // Shadow the 'y' field in various ways
-  shadow_y_parameter(y) {
-        return x + this.y + y; //# 01: continued
-  }
-
-  shadow_y_local(z) {
-    var y = z;
-        return x + this.y + y; //# 01: continued
-  }
-
-  shadow_y_capturedLocal(z) {
-    var y = z;
-    foo() {
-            return x + this.y + y; //# 01: continued
-    }
-    return foo();
-  }
-
-  shadow_y_closureParam(z) {
-    foo(y) {
-            return x + this.y + y; //# 01: continued
-    }
-    return foo(z);
-  }
-
-  shadow_y_localInsideClosure(z) {
-    foo() {
-      var y = z;
-            return x + this.y + y; //# 01: continued
-    }
-
-    return foo();
-  }
-
-  // Shadow the 'x' field in various ways
-  shadow_x_parameter(x) {
-        return this.x + y + x; //# 01: continued
-  }
-
-  shadow_x_local(z) {
-    var x = z;
-        return this.x + y + x; //# 01: continued
-  }
-
-  shadow_x_capturedLocal(z) {
-    var x = z;
-    foo() {
-            return this.x + y + x; //# 01: continued
-    }
-    return foo();
-  }
-
-  shadow_x_closureParam(z) {
-    foo(x) {
-            return this.x + y + x; //# 01: continued
-    }
-    return foo(z);
-  }
-
-  shadow_x_localInsideClosure(z) {
-    foo() {
-      var x = z;
-            return this.x + y + x; //# 01: continued
-    }
-
-    return foo();
-  }
-
-  shadow_x_toplevel() {
-        return x + this.y + toplevel + this.toplevel; //# 01: continued
-  }
-}
-
-class Sub extends Foo {
-  String y = 'y';
-  String toplevel = 'B';
-}
-
-main() {
-    Expect.equals('xyz', new Sub().easy('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_y_parameter('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_y_local('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_y_capturedLocal('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_y_closureParam('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_y_localInsideClosure('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_x_parameter('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_x_local('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_x_capturedLocal('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_x_closureParam('z')); //# 01: continued
-    Expect.equals('xyz', new Sub().shadow_x_localInsideClosure('z')); //# 01: continued
-
-    Expect.equals('xyAB', new Sub().shadow_x_toplevel()); //# 01: continued
-}
diff --git a/tests/language/rewrite_logical_test.dart b/tests/language/rewrite_logical_test.dart
deleted file mode 100644
index 4fc4060..0000000
--- a/tests/language/rewrite_logical_test.dart
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright (c) 2014, 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';
-
-cneg_and(x, y) {
-  if ((x && y) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-cneg_and_not(x, y) {
-  if ((x && (y ? false : true)) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-cneg_not_and(x, y) {
-  if (((x ? false : true) && y) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-cneg_not_and_not(x, y) {
-  if (((x ? false : true) && (y ? false : true)) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-cneg_or(x, y) {
-  if ((x || y) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-cneg_or_not(x, y) {
-  if ((x || (y ? false : true)) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-cneg_not_or(x, y) {
-  if (((x ? false : true) || y) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-cneg_not_or_not(x, y) {
-  if (((x ? false : true) || (y ? false : true)) ? false : true) {
-    return 0;
-  } else {
-    return 1;
-  }
-}
-
-value_tobool(x) {
-  return x ? true : false;
-}
-
-value_negate(x) {
-  return x ? false : true;
-}
-
-value_and(x, y) {
-  return x ? y ? true : false : false;
-}
-
-value_or(x, y) {
-  return x ? true : y ? true : false;
-}
-
-value_and_not(x, y) {
-  return x ? y ? false : true : false;
-}
-
-value_not_and(x, y) {
-  return x ? false : y ? true : false;
-}
-
-value_not_and_not(x, y) {
-  return x ? false : y ? false : true;
-}
-
-value_or_not(x, y) {
-  return x ? true : y ? false : true;
-}
-
-value_not_or(x, y) {
-  return x ? y ? true : false : true;
-}
-
-value_not_or_not(x, y) {
-  return x ? y ? false : true : true;
-}
-
-if_negate(x) {
-  if (x ? false : true) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_and(x, y) {
-  if (x ? y ? true : false : false) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_or(x, y) {
-  if (x ? true : y) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_and_not(x, y) {
-  if (x ? y ? false : true : false) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_not_and(x, y) {
-  if (x ? false : y) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_not_and_not(x, y) {
-  if (x ? false : y ? false : true) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_or_not(x, y) {
-  if (x ? true : y ? false : true) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_not_or(x, y) {
-  if (x ? y : true) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-if_not_or_not(x, y) {
-  if (x ? y ? false : true : true) {
-    return 1;
-  } else {
-    return 0;
-  }
-}
-
-main() {
-  Expect.equals(1, cneg_and(true, true));
-  Expect.equals(0, cneg_and(true, false));
-  Expect.equals(0, cneg_and(false, true));
-  Expect.equals(0, cneg_and(false, false));
-
-  Expect.equals(0, cneg_and_not(true, true));
-  Expect.equals(1, cneg_and_not(true, false));
-  Expect.equals(0, cneg_and_not(false, true));
-  Expect.equals(0, cneg_and_not(false, false));
-
-  Expect.equals(0, cneg_not_and(true, true));
-  Expect.equals(0, cneg_not_and(true, false));
-  Expect.equals(1, cneg_not_and(false, true));
-  Expect.equals(0, cneg_not_and(false, false));
-
-  Expect.equals(0, cneg_not_and_not(true, true));
-  Expect.equals(0, cneg_not_and_not(true, false));
-  Expect.equals(0, cneg_not_and_not(false, true));
-  Expect.equals(1, cneg_not_and_not(false, false));
-
-  Expect.equals(1, cneg_or(true, true));
-  Expect.equals(1, cneg_or(true, false));
-  Expect.equals(1, cneg_or(false, true));
-  Expect.equals(0, cneg_or(false, false));
-
-  Expect.equals(1, cneg_or_not(true, true));
-  Expect.equals(1, cneg_or_not(true, false));
-  Expect.equals(0, cneg_or_not(false, true));
-  Expect.equals(1, cneg_or_not(false, false));
-
-  Expect.equals(1, cneg_not_or(true, true));
-  Expect.equals(0, cneg_not_or(true, false));
-  Expect.equals(1, cneg_not_or(false, true));
-  Expect.equals(1, cneg_not_or(false, false));
-
-  Expect.equals(0, cneg_not_or_not(true, true));
-  Expect.equals(1, cneg_not_or_not(true, false));
-  Expect.equals(1, cneg_not_or_not(false, true));
-  Expect.equals(1, cneg_not_or_not(false, false));
-
-  Expect.equals(true, value_tobool(true));
-  Expect.equals(false, value_tobool(false));
-
-  Expect.equals(false, value_negate(true));
-  Expect.equals(true, value_negate(false));
-
-  Expect.equals(true, value_and(true, true));
-  Expect.equals(false, value_and(true, false));
-  Expect.equals(false, value_and(false, true));
-  Expect.equals(false, value_and(false, false));
-
-  Expect.equals(false, value_and_not(true, true));
-  Expect.equals(true, value_and_not(true, false));
-  Expect.equals(false, value_and_not(false, true));
-  Expect.equals(false, value_and_not(false, false));
-
-  Expect.equals(false, value_not_and(true, true));
-  Expect.equals(false, value_not_and(true, false));
-  Expect.equals(true, value_not_and(false, true));
-  Expect.equals(false, value_not_and(false, false));
-
-  Expect.equals(false, value_not_and_not(true, true));
-  Expect.equals(false, value_not_and_not(true, false));
-  Expect.equals(false, value_not_and_not(false, true));
-  Expect.equals(true, value_not_and_not(false, false));
-
-  Expect.equals(true, value_or(true, true));
-  Expect.equals(true, value_or(true, false));
-  Expect.equals(true, value_or(false, true));
-  Expect.equals(false, value_or(false, false));
-
-  Expect.equals(true, value_or_not(true, true));
-  Expect.equals(true, value_or_not(true, false));
-  Expect.equals(false, value_or_not(false, true));
-  Expect.equals(true, value_or_not(false, false));
-
-  Expect.equals(true, value_not_or(true, true));
-  Expect.equals(false, value_not_or(true, false));
-  Expect.equals(true, value_not_or(false, true));
-  Expect.equals(true, value_not_or(false, false));
-
-  Expect.equals(false, value_not_or_not(true, true));
-  Expect.equals(true, value_not_or_not(true, false));
-  Expect.equals(true, value_not_or_not(false, true));
-  Expect.equals(true, value_not_or_not(false, false));
-
-  Expect.equals(0, if_negate(true));
-  Expect.equals(1, if_negate(false));
-
-  Expect.equals(1, if_and(true, true));
-  Expect.equals(0, if_and(true, false));
-  Expect.equals(0, if_and(false, true));
-  Expect.equals(0, if_and(false, false));
-
-  Expect.equals(0, if_and_not(true, true));
-  Expect.equals(1, if_and_not(true, false));
-  Expect.equals(0, if_and_not(false, true));
-  Expect.equals(0, if_and_not(false, false));
-
-  Expect.equals(0, if_not_and(true, true));
-  Expect.equals(0, if_not_and(true, false));
-  Expect.equals(1, if_not_and(false, true));
-  Expect.equals(0, if_not_and(false, false));
-
-  Expect.equals(0, if_not_and_not(true, true));
-  Expect.equals(0, if_not_and_not(true, false));
-  Expect.equals(0, if_not_and_not(false, true));
-  Expect.equals(1, if_not_and_not(false, false));
-
-  Expect.equals(1, if_or(true, true));
-  Expect.equals(1, if_or(true, false));
-  Expect.equals(1, if_or(false, true));
-  Expect.equals(0, if_or(false, false));
-
-  Expect.equals(1, if_or_not(true, true));
-  Expect.equals(1, if_or_not(true, false));
-  Expect.equals(0, if_or_not(false, true));
-  Expect.equals(1, if_or_not(false, false));
-
-  Expect.equals(1, if_not_or(true, true));
-  Expect.equals(0, if_not_or(true, false));
-  Expect.equals(1, if_not_or(false, true));
-  Expect.equals(1, if_not_or(false, false));
-
-  Expect.equals(0, if_not_or_not(true, true));
-  Expect.equals(1, if_not_or_not(true, false));
-  Expect.equals(1, if_not_or_not(false, true));
-  Expect.equals(1, if_not_or_not(false, false));
-}
diff --git a/tests/language/rewrite_nested_if1_test.dart b/tests/language/rewrite_nested_if1_test.dart
deleted file mode 100644
index d86cc55..0000000
--- a/tests/language/rewrite_nested_if1_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2014, 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';
-
-var global;
-
-setGlobal(v) {
-  global = v;
-}
-
-check_true_true(x, y, v) {
-  if (x) {
-    if (y) {
-      setGlobal(v);
-    }
-  }
-}
-
-check_false_true(x, y, v) {
-  if (x) {} else {
-    if (y) {
-      setGlobal(v);
-    }
-  }
-}
-
-check_true_false(x, y, v) {
-  if (x) {
-    if (y) {} else {
-      setGlobal(v);
-    }
-  }
-}
-
-check_false_false(x, y, v) {
-  if (x) {} else {
-    if (y) {} else {
-      setGlobal(v);
-    }
-  }
-}
-
-main() {
-  check_true_true(true, true, 4);
-  check_true_true(false, false, 1);
-  check_true_true(false, true, 2);
-  check_true_true(true, false, 3);
-
-  Expect.equals(4, global);
-
-  check_true_false(false, false, 1);
-  check_true_false(false, true, 2);
-  check_true_false(true, false, 3);
-  check_true_false(true, true, 4);
-
-  Expect.equals(3, global);
-
-  check_false_true(false, false, 1);
-  check_false_true(false, true, 2);
-  check_false_true(true, false, 3);
-  check_false_true(true, true, 4);
-
-  Expect.equals(2, global);
-
-  check_false_false(false, false, 1);
-  check_false_false(false, true, 2);
-  check_false_false(true, false, 3);
-  check_false_false(true, true, 4);
-
-  Expect.equals(1, global);
-}
diff --git a/tests/language/rewrite_nested_if2_test.dart b/tests/language/rewrite_nested_if2_test.dart
deleted file mode 100644
index 2a71680..0000000
--- a/tests/language/rewrite_nested_if2_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2014, 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';
-
-check_true_true(x, y) {
-  if (x) {
-    if (y) {
-      return true;
-    }
-  }
-  return false;
-}
-
-check_false_true(x, y) {
-  if (x) {} else {
-    if (y) {
-      return true;
-    }
-  }
-  return false;
-}
-
-check_true_false(x, y) {
-  if (x) {
-    if (y) {} else {
-      return true;
-    }
-  }
-  return false;
-}
-
-check_false_false(x, y) {
-  if (x) {} else {
-    if (y) {} else {
-      return true;
-    }
-  }
-  return false;
-}
-
-main() {
-  Expect.equals(true, check_true_true(true, true));
-  Expect.equals(false, check_true_true(true, false));
-  Expect.equals(false, check_true_true(false, true));
-  Expect.equals(false, check_true_true(false, false));
-
-  Expect.equals(false, check_true_false(true, true));
-  Expect.equals(true, check_true_false(true, false));
-  Expect.equals(false, check_true_false(false, true));
-  Expect.equals(false, check_true_false(false, false));
-
-  Expect.equals(false, check_false_true(true, true));
-  Expect.equals(false, check_false_true(true, false));
-  Expect.equals(true, check_false_true(false, true));
-  Expect.equals(false, check_false_true(false, false));
-
-  Expect.equals(false, check_false_false(true, true));
-  Expect.equals(false, check_false_false(true, false));
-  Expect.equals(false, check_false_false(false, true));
-  Expect.equals(true, check_false_false(false, false));
-}
diff --git a/tests/language/rewrite_nested_if3_test.dart b/tests/language/rewrite_nested_if3_test.dart
deleted file mode 100644
index b985df8..0000000
--- a/tests/language/rewrite_nested_if3_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2014, 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';
-
-baz() {}
-
-check_true_true(x, y) {
-  if (x) {
-    if (y) {
-      return true;
-    }
-  }
-  baz();
-  return false;
-}
-
-check_false_true(x, y) {
-  if (x) {} else {
-    if (y) {
-      return true;
-    }
-  }
-  baz();
-  return false;
-}
-
-check_true_false(x, y) {
-  if (x) {
-    if (y) {} else {
-      return true;
-    }
-  }
-  baz();
-  return false;
-}
-
-check_false_false(x, y) {
-  if (x) {} else {
-    if (y) {} else {
-      return true;
-    }
-  }
-  baz();
-  return false;
-}
-
-main() {
-  Expect.equals(true, check_true_true(true, true));
-  Expect.equals(false, check_true_true(true, false));
-  Expect.equals(false, check_true_true(false, true));
-  Expect.equals(false, check_true_true(false, false));
-
-  Expect.equals(false, check_true_false(true, true));
-  Expect.equals(true, check_true_false(true, false));
-  Expect.equals(false, check_true_false(false, true));
-  Expect.equals(false, check_true_false(false, false));
-
-  Expect.equals(false, check_false_true(true, true));
-  Expect.equals(false, check_false_true(true, false));
-  Expect.equals(true, check_false_true(false, true));
-  Expect.equals(false, check_false_true(false, false));
-
-  Expect.equals(false, check_false_false(true, true));
-  Expect.equals(false, check_false_false(true, false));
-  Expect.equals(false, check_false_false(false, true));
-  Expect.equals(true, check_false_false(false, false));
-}
diff --git a/tests/language/rewrite_swap_test.dart b/tests/language/rewrite_swap_test.dart
deleted file mode 100644
index 5c6d115..0000000
--- a/tests/language/rewrite_swap_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2014, 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";
-
-swap1(x, y, b) {
-  if (b) {
-    var t = x;
-    x = y;
-    y = t;
-  }
-  Expect.equals(2, x);
-  Expect.equals(1, y);
-}
-
-swap2(x, y, z, w, b) {
-  if (b) {
-    var t = x;
-    x = y;
-    y = t;
-
-    var q = z;
-    z = w;
-    w = q;
-  }
-  Expect.equals(2, x);
-  Expect.equals(1, y);
-  Expect.equals(4, z);
-  Expect.equals(3, w);
-}
-
-swap3(x, y, z, b) {
-  if (b) {
-    var t = x;
-    x = y;
-    y = z;
-    z = t;
-  }
-  Expect.equals(2, x);
-  Expect.equals(3, y);
-  Expect.equals(1, z);
-}
-
-swap4(x, y, z, b) {
-  if (b) {
-    var t = x;
-    x = y;
-    y = z; // swap cycle involves unused variable 'y'
-    z = t;
-  }
-  Expect.equals(2, x);
-  Expect.equals(1, z);
-}
-
-swap5(x, y, z, w, b, b2) {
-  if (b) {
-    var t = x;
-    x = y;
-    y = t;
-  }
-  if (b2) {
-    var q = z;
-    z = w;
-    w = q;
-  }
-  Expect.equals(2, x);
-  Expect.equals(1, y);
-  Expect.equals(4, z);
-  Expect.equals(3, w);
-}
-
-main() {
-  swap1(1, 2, true);
-  swap1(2, 1, false);
-
-  swap2(1, 2, 3, 4, true);
-  swap2(2, 1, 4, 3, false);
-
-  swap3(1, 2, 3, true);
-  swap3(2, 3, 1, false);
-
-  swap4(1, 2, 3, true);
-  swap4(2, 3, 1, false);
-
-  swap5(1, 2, 3, 4, true, true);
-  swap5(1, 2, 4, 3, true, false);
-  swap5(2, 1, 3, 4, false, true);
-  swap5(2, 1, 4, 3, false, false);
-}
diff --git a/tests/language/rewrite_variable_initializer_test.dart b/tests/language/rewrite_variable_initializer_test.dart
deleted file mode 100644
index 75de2d0..0000000
--- a/tests/language/rewrite_variable_initializer_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class Foo {
-  var field = 0;
-}
-
-bar(x, y) {
-  return x * 100 + y;
-}
-
-foo(z) {
-  var x = 0, y = x;
-  if (z > 0) {
-    x = 10;
-  }
-  if (z > 10) {
-    y = 20;
-  }
-  return bar(x, y);
-}
-
-baz(z) {
-  var f = new Foo()
-    ..field = 10
-    ..field = z;
-  return f;
-}
-
-main() {
-  Expect.equals(0, foo(0));
-  Expect.equals(1000, foo(5));
-  Expect.equals(1020, foo(15));
-
-  Expect.equals(20, baz(20).field);
-  Expect.equals(30, baz(30).field);
-}
diff --git a/tests/language/rewrite_while_many_exits_test.dart b/tests/language/rewrite_while_many_exits_test.dart
deleted file mode 100644
index f3aa523..0000000
--- a/tests/language/rewrite_while_many_exits_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2014, 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";
-
-var baz_clicks = 0;
-
-baz() {
-  return ++baz_clicks;
-}
-
-var global = 0;
-
-increment_global() {
-  ++global;
-  return global <= 10;
-}
-
-foo(x, y) {
-  var n = 0;
-  while (true) {
-    baz();
-    if (n >= x) {
-      return n;
-    }
-    baz();
-    if (n >= y) {
-      return n;
-    }
-    n = n + 1;
-  }
-}
-
-bar() {
-  while (increment_global()) {
-    baz();
-  }
-  return baz();
-}
-
-main() {
-  Expect.equals(10, foo(10, 20));
-  Expect.equals(10, foo(20, 10));
-
-  baz_clicks = 0;
-  Expect.equals(11, bar());
-}
diff --git a/tests/language/rewrite_while_test.dart b/tests/language/rewrite_while_test.dart
deleted file mode 100644
index c773ee0..0000000
--- a/tests/language/rewrite_while_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2014, 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";
-
-baz() {}
-
-loop1(x) {
-  var n = 0;
-  while (n < x) {
-    n = n + 1;
-  }
-  return n;
-}
-
-loop2(x) {
-  var n = 0;
-  if (x < 100) {
-    while (n < x) {
-      n = n + 1;
-    }
-  }
-  baz();
-  return n;
-}
-
-loop3(x) {
-  var n = 0;
-  if (x < 100) {
-    while (n < x) {
-      n = n + 1;
-      baz();
-    }
-  }
-  baz();
-  return n;
-}
-
-loop4(x) {
-  var n = 0;
-  if (x < 100) {
-    while (n < x) {
-      baz();
-      n = n + 1;
-    }
-  }
-  baz();
-  return n;
-}
-
-f1(b) {
-  while (b) return 1;
-
-  return 2;
-}
-
-f2(b) {
-  while (b) {
-    return 1;
-  }
-  return 2;
-}
-
-main() {
-  Expect.equals(0, loop1(-10));
-  Expect.equals(10, loop1(10));
-
-  Expect.equals(0, loop2(-10));
-  Expect.equals(10, loop2(10));
-  Expect.equals(0, loop2(200));
-
-  Expect.equals(0, loop3(-10));
-  Expect.equals(10, loop3(10));
-  Expect.equals(0, loop3(200));
-
-  Expect.equals(0, loop4(-10));
-  Expect.equals(10, loop4(10));
-  Expect.equals(0, loop4(200));
-
-  Expect.equals(1, f1(true));
-  Expect.equals(2, f1(false));
-  Expect.equals(1, f2(true));
-  Expect.equals(2, f2(false));
-}
diff --git a/tests/language/round_test.dart b/tests/language/round_test.dart
deleted file mode 100644
index e1b3c3e..0000000
--- a/tests/language/round_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// Test of a common rounding bug.
-///
-/// This bug is common in JavaScript implementations because the ECMA-262
-/// specification of JavaScript incorrectly claims:
-///
-///     The value of [:Math.round(x):] is the same as the value of
-///     [:Math.floor(x+0.5):], except when x is 0 or is less than 0 but greater
-///     than or equal to -0.5; for these cases [:Math.round(x):] returns 0, but
-///     [:Math.floor(x+0.5):] returns +0.
-///
-/// However, 0.49999999999999994 + 0.5 is 1 and 9007199254740991 + 0.5 is
-/// 9007199254740992, so you cannot implement Math.round in terms of
-/// Math.floor.
-
-import 'package:expect/expect.dart';
-
-main() {
-  Expect.equals(0, (0.49999999999999994).round());
-  Expect.equals(0, (-0.49999999999999994).round());
-
-  Expect.equals(9007199254740991, (9007199254740991.0).round());
-  Expect.equals(-9007199254740991, (-9007199254740991.0).round());
-}
diff --git a/tests/language/runtime_type_function_test.dart b/tests/language/runtime_type_function_test.dart
deleted file mode 100644
index 69978bf..0000000
--- a/tests/language/runtime_type_function_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-typedef String F(String returns, String arguments);
-F fn;
-
-String form1(String returns, String arguments) => '$arguments => $returns';
-String form2(String returns, String arguments) => '$returns Function$arguments';
-
-F detectForm() {
-  var s = main.runtimeType.toString();
-  if (s.contains('=>')) return form1;
-  if (s.contains('Function')) return form2;
-  Expect.fail('"$s" contains neither "=>" nor "Function"');
-}
-
-main() {
-  fn = detectForm();
-
-  // Types that do not use class names - these can be checked on dart2js in
-  // minified mode.
-
-  check(fn('dynamic', '()'), main); //        Top-level tear-off.
-  check(fn('void', '()'), Xyzzy.foo); //      Class static member tear-off.
-  check(fn('void', '(dynamic)'), [].add); //  Instance tear-off.
-  check(fn('dynamic', '()'), () => 1); //       closure.
-
-  var s = new Xyzzy().runtimeType.toString();
-  if (s.length <= 3) return; // dart2js --minify has minified names.
-
-  Expect.equals('Xyzzy', s, 'runtime type of plain class prints as class name');
-
-  check(fn('void', '(String, dynamic)'), check);
-
-  // Class static member tear-offs.
-  check(fn('String', '(String, [String, dynamic])'), Xyzzy.opt);
-  check(fn('String', '(String, {String a, dynamic b})'), Xyzzy.nam);
-
-  // Instance method tear-offs.
-  check(fn('void', '(String)'), <String>[].add);
-  check(fn('void', '(int)'), <int>[].add);
-
-  check(fn('String', '(int)'), new G<String, int>().foo);
-
-  // Instance method with function parameter.
-  var string2int = fn('int', '(String)');
-  check(fn('String', '($string2int)'), new G<String, int>().moo);
-
-  // Closures.
-  String localFunc(String a, String b) => a + b;
-  void localFunc2(int a) {
-    print(a);
-  }
-
-  Expect.isTrue(localFunc is F);
-  check(fn('String', '(String, String)'), localFunc);
-  check(fn('void', '(int)'), localFunc2);
-}
-
-void check(String text, var thing) {
-  var type = thing.runtimeType.toString();
-  if (type == text) return;
-  Expect.fail("""
-Type print string does not match expectation
-  Expected: '$text'
-  Actual: '$type'
-""");
-}
-
-class Xyzzy {
-  static void foo() {}
-  static String opt(String x, [String a, b]) {}
-  static String nam(String x, {String a, b}) {}
-}
-
-class G<U, V> {
-  U foo(V x) => null;
-  U moo(V f(U x)) => null;
-}
diff --git a/tests/language/runtime_type_test.dart b/tests/language/runtime_type_test.dart
deleted file mode 100644
index 158f974..0000000
--- a/tests/language/runtime_type_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// 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";
-
-class A {
-  get className => runtimeType;
-}
-
-main() {
-  Expect.isTrue(new A().className is Type);
-  Expect.isTrue(null.runtimeType is Type);
-  Expect.equals(null.runtimeType, Null);
-}
diff --git a/tests/language/savannah_test.dart b/tests/language/savannah_test.dart
deleted file mode 100644
index 9d28959..0000000
--- a/tests/language/savannah_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test using an identity hash.
-
-import "package:expect/expect.dart";
-
-abstract class BigGame {
-  String get name;
-}
-
-// Giraffe overrides hashCode and provides its own identity hash.
-class Giraffe implements BigGame {
-  final String name;
-  final int identityHash_;
-
-  Giraffe(this.name) : identityHash_ = nextId() {}
-
-  int get hashCode {
-    return identityHash_;
-  }
-
-  // Calculate identity hash for a giraffe.
-  static int nextId_;
-  static int nextId() {
-    if (nextId_ == null) {
-      nextId_ = 17;
-    }
-    return nextId_++;
-  }
-}
-
-// Zebra relies on the system provided identity hash.
-class Zebra implements BigGame {
-  final String name;
-  Zebra(this.name) {}
-}
-
-class SavannahTest {
-  static void testMain() {
-    Map<BigGame, String> savannah = new Map<BigGame, String>();
-
-    Giraffe giraffe1 = new Giraffe("Tony");
-    Giraffe giraffe2 = new Giraffe("Rose");
-    savannah[giraffe1] = giraffe1.name;
-    savannah[giraffe2] = giraffe2.name;
-    print("giraffe1 hash: ${giraffe1.hashCode}");
-    print("giraffe2 hash: ${giraffe2.hashCode}");
-
-    var count = savannah.length;
-    print("getCount is $count");
-    Expect.equals(2, count);
-
-    print("giraffe1: ${savannah[giraffe1]}");
-    print("giraffe2: ${savannah[giraffe2]}");
-    Expect.equals("Tony", savannah[giraffe1]);
-    Expect.equals("Rose", savannah[giraffe2]);
-
-    Zebra zebra1 = new Zebra("Paolo");
-    Zebra zebra2 = new Zebra("Zeeta");
-    savannah[zebra1] = zebra1.name;
-    savannah[zebra2] = zebra2.name;
-    print("zebra1 hash: ${zebra1.hashCode}");
-    print("zebra2 hash: ${zebra2.hashCode}");
-
-    count = savannah.length;
-    print("getCount is $count");
-    Expect.equals(4, count);
-
-    print("zebra1: ${savannah[zebra1]}");
-    print("zebra2: ${savannah[zebra2]}");
-    Expect.equals("Paolo", savannah[zebra1]);
-    Expect.equals("Zeeta", savannah[zebra2]);
-  }
-}
-
-main() {
-  SavannahTest.testMain();
-}
diff --git a/tests/language/scanner_test.dart b/tests/language/scanner_test.dart
deleted file mode 100644
index 01ee048..0000000
--- a/tests/language/scanner_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test dart scanner.
-
-class ScannerTest {
-  static testMain() {
-    var s = "Hello\tmy\tfriend\n";
-    return s;
-  }
-}
-
-main() {
-  ScannerTest.testMain();
-}
diff --git a/tests/language/scope_variable_test.dart b/tests/language/scope_variable_test.dart
deleted file mode 100644
index e1e1818..0000000
--- a/tests/language/scope_variable_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2011, 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";
-
-void testSimpleScope() {
-  {
-    var a = "Test";
-    int b = 1;
-  }
-  {
-    var c;
-    int d;
-    Expect.isNull(c);
-    Expect.isNull(d);
-  }
-}
-
-void testShadowingScope() {
-  var a = "Test";
-  {
-    var a;
-    Expect.isNull(a);
-    a = "a";
-    Expect.equals(a, "a");
-  }
-  Expect.equals(a, "Test");
-}
-
-int testShadowingAfterUse() {
-  var a = 1;
-  {
-    var b = 2;
-    var c = a; // Use of 'a' prior to its shadow declaration below.
-    var d = b + c;
-    // Shadow declaration of 'a'.
-    var a = 5; // //# 01: compile-time error
-    return d + a;
-  }
-}
-
-main() {
-  testSimpleScope();
-  testShadowingScope();
-  testShadowingAfterUse();
-}
diff --git a/tests/language/scoped_variables_try_catch_test.dart b/tests/language/scoped_variables_try_catch_test.dart
deleted file mode 100644
index e18bec1..0000000
--- a/tests/language/scoped_variables_try_catch_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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";
-
-// Test that try/catch does not shadow a variable at runtime.
-
-main() {
-  var a = bar();
-  try {
-    a = bar();
-  } catch (e) {}
-  Expect.equals(42, a);
-
-  {
-    var a = foo();
-    try {
-      a = foo();
-    } catch (e) {}
-    Expect.equals(54, a);
-  }
-
-  Expect.equals(42, a);
-}
-
-bar() => 42;
-foo() => 54;
diff --git a/tests/language/script1_negative_lib.dart b/tests/language/script1_negative_lib.dart
deleted file mode 100644
index 312103b..0000000
--- a/tests/language/script1_negative_lib.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Imported library has wrong order of import and source tags.
-
-library Script1NegativeLib;
-part "script_source.dart";
-import "script_lib.dart";
-
-class A {
-  var a;
-}
diff --git a/tests/language/script1_negative_test.dart b/tests/language/script1_negative_test.dart
deleted file mode 100644
index e2af064..0000000
--- a/tests/language/script1_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Imported library has wrong order of import and source tags.
-
-library Script1NegativeTest.dart;
-
-import "script1_negative_lib.dart";
-
-main() {
-  print("Should not reach here.");
-}
diff --git a/tests/language/script2_negative_lib.dart b/tests/language/script2_negative_lib.dart
deleted file mode 100644
index c436080..0000000
--- a/tests/language/script2_negative_lib.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Imported library has source file with library tags.
-
-library Script2NegativeLib;
-
-import "script_lib.dart";
-part "script2_negative_source.dart";
-
-class A {
-  var a;
-}
diff --git a/tests/language/script2_negative_source.dart b/tests/language/script2_negative_source.dart
deleted file mode 100644
index 1674541..0000000
--- a/tests/language/script2_negative_source.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Imported library has source file with library tags.
-
-library Script2NegativeSource;
-
-const int script_2_negative_source = 1;
diff --git a/tests/language/script2_negative_test.dart b/tests/language/script2_negative_test.dart
deleted file mode 100644
index 731eddb..0000000
--- a/tests/language/script2_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Imported library has source file with library tags.
-
-library Script2NegativeTest.dart;
-
-import "script2_negative_lib.dart";
-
-main() {
-  print("Should not reach here.");
-}
diff --git a/tests/language/script_lib.dart b/tests/language/script_lib.dart
deleted file mode 100644
index 95a911d..0000000
--- a/tests/language/script_lib.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A perfectly legal dart library for use with script and library tests.
-
-library ScriptLib;
-
-const int script_lib = 1;
diff --git a/tests/language/script_source.dart b/tests/language/script_source.dart
deleted file mode 100644
index 44f0d34..0000000
--- a/tests/language/script_source.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A perfectly legal dart source file for use with script and library tests.
-
-const int script_source = 1;
diff --git a/tests/language/second_test.dart b/tests/language/second_test.dart
deleted file mode 100644
index 0cdd2a7..0000000
--- a/tests/language/second_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Second dart test program.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static empty() {}
-  static int foo() {
-    return 42;
-  }
-}
-
-class SecondTest {
-  static testMain() {
-    Helper.empty();
-    Expect.equals(42, Helper.foo());
-  }
-}
-
-main() {
-  SecondTest.testMain();
-}
diff --git a/tests/language/setter0_test.dart b/tests/language/setter0_test.dart
deleted file mode 100644
index 5b8f490..0000000
--- a/tests/language/setter0_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing setting/getting of fields when
-// only getter/setter methods are specified.
-
-import "package:expect/expect.dart";
-
-class First {
-  First(int val) : a_ = val {}
-  int a_;
-}
-
-class Second extends First {
-  static int c;
-
-  Second(int val) : super(val) {}
-
-  static void testStaticMethod() {
-    int i;
-    Second.static_a = 20;
-    i = Second.c;
-  }
-
-  void set instance_a(int value) {
-    a_ = a_ + value;
-  }
-
-  int get instance_a {
-    return a_;
-  }
-
-  static void set static_a(int value) {
-    Second.c = value;
-  }
-
-  static int get static_d {
-    return Second.c;
-  }
-}
-
-class Setter0Test {
-  static testMain() {
-    Second obj = new Second(10);
-    Expect.equals(10, obj.instance_a);
-    obj.instance_a = 20;
-    Expect.equals(30, obj.instance_a);
-
-    Second.testStaticMethod();
-    Expect.equals(20, Second.c);
-    Expect.equals(20, Second.static_d);
-  }
-}
-
-main() {
-  Setter0Test.testMain();
-}
diff --git a/tests/language/setter1_test.dart b/tests/language/setter1_test.dart
deleted file mode 100644
index ffcb9e0..0000000
--- a/tests/language/setter1_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing setting/getting of fields when
-// only getter/setter methods are specified.
-
-import "package:expect/expect.dart";
-
-class First {
-  First(int val) : a_ = val {}
-
-  void testMethod() {
-    a = 20;
-  }
-
-  static void testStaticMethod() {
-    b = 20;
-  }
-
-  int get a {
-    return a_;
-  }
-
-  void set a(int val) {
-    a_ = a_ + val;
-  }
-
-  static int get b {
-    return b_;
-  }
-
-  static void set b(int val) {
-    b_ = val;
-  }
-
-  int a_;
-  static int b_;
-}
-
-class Second {
-  static int c;
-  int a_;
-
-  Second(int value) : a_ = value {}
-
-  void testMethod() {
-    a = 20;
-  }
-
-  static void testStaticMethod() {
-    int i;
-    b = 20;
-    i = d;
-    // TODO(asiva): Turn these on once we have error handling.
-    // i = b; // Should be an error.
-    // d = 40; // Should be an error.
-  }
-
-  int get a {
-    return a_;
-  }
-
-  void set a(int value) {
-    a_ = a_ + value;
-  }
-
-  static void set b(int value) {
-    Second.c = value;
-  }
-
-  static int get d {
-    return Second.c;
-  }
-}
-
-class Setter1Test {
-  static testMain() {
-    First obj1 = new First(10);
-    Expect.equals(10, obj1.a);
-    obj1.testMethod();
-    Expect.equals(30, obj1.a);
-    First.b = 10;
-    Expect.equals(10, First.b);
-    First.testStaticMethod();
-    Expect.equals(20, First.b);
-
-    Second obj = new Second(10);
-    Expect.equals(10, obj.a);
-    obj.testMethod();
-    Expect.equals(30, obj.a);
-
-    Second.testStaticMethod();
-    Expect.equals(20, Second.c);
-    Expect.equals(20, Second.d);
-  }
-}
-
-main() {
-  Setter1Test.testMain();
-}
diff --git a/tests/language/setter2_test.dart b/tests/language/setter2_test.dart
deleted file mode 100644
index aa28e87..0000000
--- a/tests/language/setter2_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing use of 'this' in an instance method.
-
-import "package:expect/expect.dart";
-
-class Nested {
-  Nested(int val) : a = val {}
-  int a;
-  int foo(int i) {
-    return i;
-  }
-}
-
-class Second {
-  int a;
-  static Nested obj;
-
-  Second(int val) {}
-
-  void bar(int value) {
-    a = value;
-    Second.obj.a = Second.obj.foo(this.a);
-    this.a = 100;
-    Expect.equals(100, a);
-  }
-}
-
-class Setter2Test {
-  static testMain() {
-    Second obj = new Second(10);
-    Second.obj = new Nested(10);
-    Second.obj.a = 10;
-    Expect.equals(10, Second.obj.a);
-    Expect.equals(10, Second.obj.foo(10));
-    obj.bar(20);
-    Expect.equals(20, Second.obj.a);
-  }
-}
-
-main() {
-  Setter2Test.testMain();
-}
diff --git a/tests/language/setter3_test.dart b/tests/language/setter3_test.dart
deleted file mode 100644
index 9033421..0000000
--- a/tests/language/setter3_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test that setters cannot have defined, non-void return types.
-// Note: The language specification specifies the absence of a type means
-// it is dynamic, however you cannot specify dynamic.
-
-class A {
-  set foo(x) {}
-  void set bar(x) {}
-  dynamic set baz(x) {} //# 01: static type warning
-  bool set bob(x) {} //# 02: static type warning
-}
-
-main() {
-  new A();
-}
diff --git a/tests/language/setter4_test.dart b/tests/language/setter4_test.dart
deleted file mode 100644
index 6d57812..0000000
--- a/tests/language/setter4_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test to catch error reporting bugs in class fields declarations.
-// Should be an error because we have a setter overriding a function name.
-
-import 'package:expect/expect.dart';
-
-class A {
-  int i;
-  int a() {
-    return 1;
-  }
-
-  void set a(var val) {
-    i = val;
-  }
-}
-
-main() {
-  var a = new A();
-  Expect.isNull(a.i);
-  Expect.equals(a.a(), 1);
-  a.a = 2;
-  Expect.equals(a.a(), 1);
-  Expect.equals(a.i, 2);
-}
diff --git a/tests/language/setter_declaration2_negative_test.dart b/tests/language/setter_declaration2_negative_test.dart
deleted file mode 100644
index 617000b..0000000
--- a/tests/language/setter_declaration2_negative_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Test that a setter has a single argument
-
-// too few arguments
-set m() {}
-
-main() {
-  m = 1;
-}
diff --git a/tests/language/setter_declaration_negative_test.dart b/tests/language/setter_declaration_negative_test.dart
deleted file mode 100644
index 3e66ea8..0000000
--- a/tests/language/setter_declaration_negative_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Test that a setter has a single argument
-
-// too many arguments
-set m(var value, var extra) {}
-
-main() {
-  m = 1;
-}
diff --git a/tests/language/setter_no_getter_call_test.dart b/tests/language/setter_no_getter_call_test.dart
deleted file mode 100644
index 92a648f..0000000
--- a/tests/language/setter_no_getter_call_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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";
-
-var topLevelClosure;
-
-/* //   //# 01: runtime error
-get topLevel => topLevelClosure;
-*/ //  //# 01: continued
-set topLevel(var value) {}
-
-initialize() {
-  print("initializing");
-  topLevelClosure = (x) => x * 2;
-}
-
-main() {
-  initialize();
-  var x = topLevelClosure(2);
-  Expect.equals(4, x);
-
-  x = topLevel(3);
-  Expect.equals(6, x);
-}
diff --git a/tests/language/setter_no_getter_test.dart b/tests/language/setter_no_getter_test.dart
deleted file mode 100644
index c6371c1..0000000
--- a/tests/language/setter_no_getter_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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";
-
-/* //   //# 01: runtime error
-get topLevel => 42;
-*/ //  //# 01: continued
-set topLevel(var value) {}
-
-main() {
-  Expect.equals(42, topLevel++); //# 01: continued
-}
diff --git a/tests/language/setter_override2_test.dart b/tests/language/setter_override2_test.dart
deleted file mode 100644
index c69352a..0000000
--- a/tests/language/setter_override2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we do not report a compile-time error when an instance setter named
-// foo= is declared in a class inheriting an instance method, field, or getter
-// named foo, or an instance setter named foo=.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: ok
-  get foo => 42; // //# 01: ok
-  foo() => 42; // //# 02: ok
-  set foo(value) { } // //# 03: ok
-}
-
-class B extends A {
-  var foo_;
-  set foo(value) {
-    foo_ = value;
-  }
-}
-
-main() {
-  var b = new B();
-  b.foo = 42;
-  Expect.equals(42, b.foo_);
-}
diff --git a/tests/language/setter_override_test.dart b/tests/language/setter_override_test.dart
deleted file mode 100644
index 8563c47..0000000
--- a/tests/language/setter_override_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we do not report a compile-time error when a static setter named
-// foo= is declared in a class inheriting an instance method or getter named
-// foo, and that we do report an error if an instance setter named foo= or
-// instance field name foo is inherited.
-
-import "package:expect/expect.dart";
-
-class A {
-  var foo = 42; // //# 00: compile-time error
-  get foo => 42; // //# 01: static type warning
-  foo() => 42; // //# 02: static type warning
-  set foo(value) { } // //# 03: compile-time error
-}
-
-class B extends A {
-  static var foo_;
-  static set foo(value) {
-    foo_ = value;
-  }
-}
-
-main() {
-  B.foo = 42;
-  Expect.equals(42, B.foo_);
-}
diff --git a/tests/language/side_effect_throw_test.dart b/tests/language/side_effect_throw_test.dart
deleted file mode 100644
index 484b762..0000000
--- a/tests/language/side_effect_throw_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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";
-
-class B {
-  static var x;
-  operator <<(other) {
-    x = other;
-    return 33;
-  }
-}
-
-class A {
-  get _m => new B();
-  opshl(n) {
-    // 'n' must be a number, but we are not allowed to throw before we have
-    // evaluated _m << 499.
-    return (_m << 499) | (2 - n);
-  }
-}
-
-main() {
-  var a = new A();
-  Expect.throws(() => a.opshl("string"));
-  Expect.equals(499, B.x);
-}
diff --git a/tests/language/skip_expression_test.dart b/tests/language/skip_expression_test.dart
deleted file mode 100644
index a035fda..0000000
--- a/tests/language/skip_expression_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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";
-
-class OneArg<A> {
-  OneArg<A> get foo => new OneArg<A>();
-  OneArg<A> get bar {
-    return new OneArg<A>();
-  }
-}
-
-class TwoArgs<A, B> {
-  TwoArgs<A, B> get foo => new TwoArgs<A, B>();
-  TwoArgs<A, B> get bar {
-    return new TwoArgs<A, B>();
-  }
-}
-
-void main() {
-  Expect.isTrue(new OneArg<String>().foo is OneArg);
-  Expect.isTrue(new OneArg<String>().bar is OneArg);
-  Expect.isTrue(new TwoArgs<String, int>().foo is TwoArgs);
-  Expect.isTrue(new TwoArgs<String, int>().bar is TwoArgs);
-
-  // TODO(karlklose): Please remove the return when dart2js can handle
-  // the type tests after it.
-  return;
-  Expect.isTrue(new OneArg<String>().foo is OneArg<String>);
-  Expect.isTrue(new OneArg<String>().bar is OneArg<String>);
-  Expect.isTrue(new TwoArgs<String, int>().foo is TwoArgs<String, int>);
-  Expect.isTrue(new TwoArgs<String, int>().bar is TwoArgs<String, int>);
-}
diff --git a/tests/language/smaller_4_Interface_Types_A11_t01_test.dart b/tests/language/smaller_4_Interface_Types_A11_t01_test.dart
deleted file mode 100644
index 281315e..0000000
--- a/tests/language/smaller_4_Interface_Types_A11_t01_test.dart
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright (c) 2013, 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.
- */
-
-// This is a small version of the co19 test
-// Language/14_Types/4_Interface_Types_A11_t01.
-
-import 'package:expect/expect.dart';
-
-class C {}
-
-main() {
-  Expect.isTrue(new C126() is C);
-  Expect.isTrue(new C126() is Object);
-}
-
-class C1 extends C {}
-
-class C2 extends C1 {}
-
-class C3 extends C2 {}
-
-class C4 extends C3 {}
-
-class C5 extends C4 {}
-
-class C6 extends C5 {}
-
-class C7 extends C6 {}
-
-class C8 extends C7 {}
-
-class C9 extends C8 {}
-
-class C10 extends C9 {}
-
-class C11 extends C10 {}
-
-class C12 extends C11 {}
-
-class C13 extends C12 {}
-
-class C14 extends C13 {}
-
-class C15 extends C14 {}
-
-class C16 extends C15 {}
-
-class C17 extends C16 {}
-
-class C18 extends C17 {}
-
-class C19 extends C18 {}
-
-class C20 extends C19 {}
-
-class C21 extends C20 {}
-
-class C22 extends C21 {}
-
-class C23 extends C22 {}
-
-class C24 extends C23 {}
-
-class C25 extends C24 {}
-
-class C26 extends C25 {}
-
-class C27 extends C26 {}
-
-class C28 extends C27 {}
-
-class C29 extends C28 {}
-
-class C30 extends C29 {}
-
-class C31 extends C30 {}
-
-class C32 extends C31 {}
-
-class C33 extends C32 {}
-
-class C34 extends C33 {}
-
-class C35 extends C34 {}
-
-class C36 extends C35 {}
-
-class C37 extends C36 {}
-
-class C38 extends C37 {}
-
-class C39 extends C38 {}
-
-class C40 extends C39 {}
-
-class C41 extends C40 {}
-
-class C42 extends C41 {}
-
-class C43 extends C42 {}
-
-class C44 extends C43 {}
-
-class C45 extends C44 {}
-
-class C46 extends C45 {}
-
-class C47 extends C46 {}
-
-class C48 extends C47 {}
-
-class C49 extends C48 {}
-
-class C50 extends C49 {}
-
-class C51 extends C50 {}
-
-class C52 extends C51 {}
-
-class C53 extends C52 {}
-
-class C54 extends C53 {}
-
-class C55 extends C54 {}
-
-class C56 extends C55 {}
-
-class C57 extends C56 {}
-
-class C58 extends C57 {}
-
-class C59 extends C58 {}
-
-class C60 extends C59 {}
-
-class C61 extends C60 {}
-
-class C62 extends C61 {}
-
-class C63 extends C62 {}
-
-class C64 extends C63 {}
-
-class C65 extends C64 {}
-
-class C66 extends C65 {}
-
-class C67 extends C66 {}
-
-class C68 extends C67 {}
-
-class C69 extends C68 {}
-
-class C70 extends C69 {}
-
-class C71 extends C70 {}
-
-class C72 extends C71 {}
-
-class C73 extends C72 {}
-
-class C74 extends C73 {}
-
-class C75 extends C74 {}
-
-class C76 extends C75 {}
-
-class C77 extends C76 {}
-
-class C78 extends C77 {}
-
-class C79 extends C78 {}
-
-class C80 extends C79 {}
-
-class C81 extends C80 {}
-
-class C82 extends C81 {}
-
-class C83 extends C82 {}
-
-class C84 extends C83 {}
-
-class C85 extends C84 {}
-
-class C86 extends C85 {}
-
-class C87 extends C86 {}
-
-class C88 extends C87 {}
-
-class C89 extends C88 {}
-
-class C90 extends C89 {}
-
-class C91 extends C90 {}
-
-class C92 extends C91 {}
-
-class C93 extends C92 {}
-
-class C94 extends C93 {}
-
-class C95 extends C94 {}
-
-class C96 extends C95 {}
-
-class C97 extends C96 {}
-
-class C98 extends C97 {}
-
-class C99 extends C98 {}
-
-class C100 extends C99 {}
-
-class C101 extends C100 {}
-
-class C102 extends C101 {}
-
-class C103 extends C102 {}
-
-class C104 extends C103 {}
-
-class C105 extends C104 {}
-
-class C106 extends C105 {}
-
-class C107 extends C106 {}
-
-class C108 extends C107 {}
-
-class C109 extends C108 {}
-
-class C110 extends C109 {}
-
-class C111 extends C110 {}
-
-class C112 extends C111 {}
-
-class C113 extends C112 {}
-
-class C114 extends C113 {}
-
-class C115 extends C114 {}
-
-class C116 extends C115 {}
-
-class C117 extends C116 {}
-
-class C118 extends C117 {}
-
-class C119 extends C118 {}
-
-class C120 extends C119 {}
-
-class C121 extends C120 {}
-
-class C122 extends C121 {}
-
-class C123 extends C122 {}
-
-class C124 extends C123 {}
-
-class C125 extends C124 {}
-
-class C126 extends C125 {}
diff --git a/tests/language/smaller_4_Interface_Types_A11_t02_test.dart b/tests/language/smaller_4_Interface_Types_A11_t02_test.dart
deleted file mode 100644
index db2ecca..0000000
--- a/tests/language/smaller_4_Interface_Types_A11_t02_test.dart
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Copyright (c) 2013, 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.
- */
-
-// This is a small version of the co19 test
-// Language/14_Types/4_Interface_Types_A11_t02.
-
-import 'package:expect/expect.dart';
-
-class C {}
-
-class G<T, S, U> {}
-
-main() {
-  Expect.isTrue(new G<C126, C126, C126>() is G<C, C, C>);
-}
-
-class C1 extends C {}
-
-class C2 extends C1 {}
-
-class C3 extends C2 {}
-
-class C4 extends C3 {}
-
-class C5 extends C4 {}
-
-class C6 extends C5 {}
-
-class C7 extends C6 {}
-
-class C8 extends C7 {}
-
-class C9 extends C8 {}
-
-class C10 extends C9 {}
-
-class C11 extends C10 {}
-
-class C12 extends C11 {}
-
-class C13 extends C12 {}
-
-class C14 extends C13 {}
-
-class C15 extends C14 {}
-
-class C16 extends C15 {}
-
-class C17 extends C16 {}
-
-class C18 extends C17 {}
-
-class C19 extends C18 {}
-
-class C20 extends C19 {}
-
-class C21 extends C20 {}
-
-class C22 extends C21 {}
-
-class C23 extends C22 {}
-
-class C24 extends C23 {}
-
-class C25 extends C24 {}
-
-class C26 extends C25 {}
-
-class C27 extends C26 {}
-
-class C28 extends C27 {}
-
-class C29 extends C28 {}
-
-class C30 extends C29 {}
-
-class C31 extends C30 {}
-
-class C32 extends C31 {}
-
-class C33 extends C32 {}
-
-class C34 extends C33 {}
-
-class C35 extends C34 {}
-
-class C36 extends C35 {}
-
-class C37 extends C36 {}
-
-class C38 extends C37 {}
-
-class C39 extends C38 {}
-
-class C40 extends C39 {}
-
-class C41 extends C40 {}
-
-class C42 extends C41 {}
-
-class C43 extends C42 {}
-
-class C44 extends C43 {}
-
-class C45 extends C44 {}
-
-class C46 extends C45 {}
-
-class C47 extends C46 {}
-
-class C48 extends C47 {}
-
-class C49 extends C48 {}
-
-class C50 extends C49 {}
-
-class C51 extends C50 {}
-
-class C52 extends C51 {}
-
-class C53 extends C52 {}
-
-class C54 extends C53 {}
-
-class C55 extends C54 {}
-
-class C56 extends C55 {}
-
-class C57 extends C56 {}
-
-class C58 extends C57 {}
-
-class C59 extends C58 {}
-
-class C60 extends C59 {}
-
-class C61 extends C60 {}
-
-class C62 extends C61 {}
-
-class C63 extends C62 {}
-
-class C64 extends C63 {}
-
-class C65 extends C64 {}
-
-class C66 extends C65 {}
-
-class C67 extends C66 {}
-
-class C68 extends C67 {}
-
-class C69 extends C68 {}
-
-class C70 extends C69 {}
-
-class C71 extends C70 {}
-
-class C72 extends C71 {}
-
-class C73 extends C72 {}
-
-class C74 extends C73 {}
-
-class C75 extends C74 {}
-
-class C76 extends C75 {}
-
-class C77 extends C76 {}
-
-class C78 extends C77 {}
-
-class C79 extends C78 {}
-
-class C80 extends C79 {}
-
-class C81 extends C80 {}
-
-class C82 extends C81 {}
-
-class C83 extends C82 {}
-
-class C84 extends C83 {}
-
-class C85 extends C84 {}
-
-class C86 extends C85 {}
-
-class C87 extends C86 {}
-
-class C88 extends C87 {}
-
-class C89 extends C88 {}
-
-class C90 extends C89 {}
-
-class C91 extends C90 {}
-
-class C92 extends C91 {}
-
-class C93 extends C92 {}
-
-class C94 extends C93 {}
-
-class C95 extends C94 {}
-
-class C96 extends C95 {}
-
-class C97 extends C96 {}
-
-class C98 extends C97 {}
-
-class C99 extends C98 {}
-
-class C100 extends C99 {}
-
-class C101 extends C100 {}
-
-class C102 extends C101 {}
-
-class C103 extends C102 {}
-
-class C104 extends C103 {}
-
-class C105 extends C104 {}
-
-class C106 extends C105 {}
-
-class C107 extends C106 {}
-
-class C108 extends C107 {}
-
-class C109 extends C108 {}
-
-class C110 extends C109 {}
-
-class C111 extends C110 {}
-
-class C112 extends C111 {}
-
-class C113 extends C112 {}
-
-class C114 extends C113 {}
-
-class C115 extends C114 {}
-
-class C116 extends C115 {}
-
-class C117 extends C116 {}
-
-class C118 extends C117 {}
-
-class C119 extends C118 {}
-
-class C120 extends C119 {}
-
-class C121 extends C120 {}
-
-class C122 extends C121 {}
-
-class C123 extends C122 {}
-
-class C124 extends C123 {}
-
-class C125 extends C124 {}
-
-class C126 extends C125 {}
diff --git a/tests/language/smi_type_test.dart b/tests/language/smi_type_test.dart
deleted file mode 100644
index 2b5af74..0000000
--- a/tests/language/smi_type_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=8 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  // Make instance-of polymorphic.
-  isNum([]);
-  isNumRaw([]);
-  isNotNum([]);
-  isNotInt([]);
-  for (int i = 0; i < 20; i++) {
-    Expect.isTrue(isNum(i));
-    Expect.isTrue(isNumRaw(i));
-    Expect.isFalse(isNotNum(i));
-    Expect.isFalse(isNotInt(i));
-  }
-}
-
-isNum(a) {
-  return a is Comparable<num>;
-}
-
-isNumRaw(a) {
-  return a is Comparable;
-}
-
-isNotNum(a) {
-  return a is Comparable<String>;
-}
-
-isNotInt(a) {
-  return a is Comparable<double>;
-}
diff --git a/tests/language/source_self_negative_test.dart b/tests/language/source_self_negative_test.dart
deleted file mode 100644
index b9b2e7e..0000000
--- a/tests/language/source_self_negative_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Dart test program importing the core library explicitly.
-
-library SourceSelfNegativeTest;
-
-part "source_self_negative_test.dart"; // recursive reference to self.
-
-main() {
-  print('should not be able to recursively include self as library part');
-}
diff --git a/tests/language/stack_overflow_stacktrace_test.dart b/tests/language/stack_overflow_stacktrace_test.dart
deleted file mode 100644
index 6e54477..0000000
--- a/tests/language/stack_overflow_stacktrace_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart program testing stack overflow.
-
-import "package:expect/expect.dart";
-
-class StackOverflowTest {
-  static void curseTheRecurse(a, b, c) {
-    curseTheRecurse(b, c, a);
-  }
-
-  static void testMain() {
-    bool exceptionCaught = false;
-    try {
-      curseTheRecurse(1, 2, 3);
-    } on StackOverflowError catch (e, stacktrace) {
-      String s = stacktrace.toString();
-      Expect.equals(-1, s.indexOf("-1:-1"));
-      exceptionCaught = true;
-    }
-    Expect.equals(true, exceptionCaught);
-  }
-}
-
-main() {
-  StackOverflowTest.testMain();
-}
diff --git a/tests/language/stack_overflow_test.dart b/tests/language/stack_overflow_test.dart
deleted file mode 100644
index bd87a25..0000000
--- a/tests/language/stack_overflow_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart program testing stack overflow.
-
-import "package:expect/expect.dart";
-
-class StackOverflowTest {
-  static void curseTheRecurse(a, b, c) {
-    curseTheRecurse(b, c, a);
-  }
-
-  static void testMain() {
-    bool exceptionCaught = false;
-    try {
-      curseTheRecurse(1, 2, 3);
-    } on StackOverflowError catch (e) {
-      exceptionCaught = true;
-    }
-    Expect.equals(true, exceptionCaught);
-  }
-}
-
-main() {
-  StackOverflowTest.testMain();
-}
diff --git a/tests/language/stack_trace_test.dart b/tests/language/stack_trace_test.dart
deleted file mode 100644
index 509154f..0000000
--- a/tests/language/stack_trace_test.dart
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException {
-  const MyException(String message) : message_ = message;
-  final String message_;
-}
-
-class Helper {
-  static int f1(int i) {
-    try {
-      i = func();
-      i = 10;
-    } on MyException catch (exception, stacktrace) {
-      i = 50;
-      print(exception.message_);
-      Expect.isNotNull(stacktrace);
-      print(stacktrace);
-    }
-    try {
-      int j;
-      i = func1();
-      i = 200;
-    } on MyException catch (exception, stacktrace) {
-      i = 50;
-      print(exception.message_);
-      Expect.isNotNull(stacktrace);
-      print(stacktrace);
-    }
-    try {
-      int j;
-      i = func2();
-      i = 200;
-    } on MyException catch (exception, stacktrace) {
-      i = 50;
-      print(exception.message_);
-      Expect.isNotNull(stacktrace);
-      print(stacktrace);
-    } finally {
-      i = i + 800;
-    }
-    return i;
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    if (i > 0) {
-      throw new MyException("Exception Test for stack trace being printed");
-    }
-    return 10;
-  }
-
-  static int func1() {
-    try {
-      func();
-    } on MyException catch (exception) {
-      throw new MyException("Exception Test for stack trace being printed");
-      ;
-    }
-    return 10;
-  }
-
-  static int func2() {
-    try {
-      func();
-    } on MyException catch (exception) {
-      rethrow;
-    }
-    return 10;
-  }
-}
-
-class StackTraceTest {
-  static testMain() {
-    Expect.equals(850, Helper.f1(1));
-  }
-}
-
-// Test that the full stack trace is generated for rethrow.
-class RethrowStacktraceTest {
-  var config = 0;
-
-  issue12940() {
-    throw "Progy";
-  }
-
-  b() {
-    issue12940();
-  }
-
-  c() {
-    if (config == 0) {
-      try {
-        b();
-      } catch (e) {
-        rethrow;
-      }
-    } else {
-      try {
-        b();
-      } catch (e, s) {
-        rethrow;
-      }
-    }
-  }
-
-  d() {
-    c();
-  }
-
-  testBoth() {
-    for (config = 0; config < 2; config++) {
-      try {
-        d();
-      } catch (e, s) {
-        print(s);
-        Expect.isTrue(s.toString().contains("issue12940"));
-      }
-    }
-  }
-
-  static testMain() {
-    var test = new RethrowStacktraceTest();
-    test.testBoth();
-  }
-}
-
-main() {
-  StackTraceTest.testMain();
-  RethrowStacktraceTest.testMain();
-}
diff --git a/tests/language/stacktrace_demangle_ctors_test.dart b/tests/language/stacktrace_demangle_ctors_test.dart
deleted file mode 100644
index 697ed12..0000000
--- a/tests/language/stacktrace_demangle_ctors_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// 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.
-
-// Test that stack traces are properly demangled in constructors (#28740).
-
-import "package:expect/expect.dart";
-
-class SomeClass {
-  SomeClass.namedConstructor() {
-    throw new Exception();
-  }
-
-  SomeClass() {
-    throw new Exception();
-  }
-
-  factory SomeClass.useFactory() {
-    throw new Exception();
-  }
-}
-
-class OnlyHasFactory {
-  factory OnlyHasFactory() {
-    throw new Exception();
-  }
-}
-
-void main() {
-  try {
-    new SomeClass();
-  } on Exception catch (e, st) {
-    final stString = st.toString();
-    Expect.isTrue(stString.contains("new SomeClass"));
-    Expect.isFalse(stString.contains("SomeClass."));
-  }
-
-  try {
-    new SomeClass.namedConstructor();
-  } on Exception catch (e, st) {
-    final stString = st.toString();
-    Expect.isTrue(stString.contains("new SomeClass.namedConstructor"));
-  }
-
-  try {
-    new OnlyHasFactory();
-  } on Exception catch (e, st) {
-    final stString = st.toString();
-    Expect.isTrue(stString.contains("new OnlyHasFactory"));
-    Expect.isFalse(stString.contains("OnlyHasFactory."));
-  }
-
-  try {
-    new SomeClass.useFactory();
-  } on Exception catch (e, st) {
-    final stString = st.toString();
-    Expect.isTrue(stString.contains("new SomeClass.useFactory"));
-  }
-}
diff --git a/tests/language/stacktrace_rethrow_error_test.dart b/tests/language/stacktrace_rethrow_error_test.dart
deleted file mode 100644
index ef3116a..0000000
--- a/tests/language/stacktrace_rethrow_error_test.dart
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright (c) 2014, 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 SubclassOfError extends Error {}
-
-fail() => throw "Fail";
-
-// == Rethrow, skipping through typed handlers. ==
-
-aa1() {
-  try {
-    bb1();
-    fail();
-  } catch (error
-          , stacktrace // //# withtraceparameter: ok
-  ) {
-    expectTrace(
-        ['gg1', 'ff1', 'ee1', 'dd1', 'cc1', 'bb1', 'aa1'], error.stackTrace);
-    expectTrace(['gg1', 'ff1', 'ee1', 'dd1', 'cc1', 'bb1', 'aa1'], stacktrace); // //# withtraceparameter: continued
-  }
-}
-
-bb1() => cc1();
-
-cc1() {
-  try {
-    dd1();
-  } on String catch (e) {
-    fail();
-  } on int catch (e) {
-    fail();
-  }
-}
-
-dd1() => ee1();
-
-ee1() {
-  try {
-    ff1();
-  } catch (e) {
-    rethrow;
-  }
-}
-
-ff1() => gg1();
-
-gg1() => throw new SubclassOfError();
-
-// == Rethrow, rethrow again in typed handler. ==
-
-aa2() {
-  try {
-    bb2();
-    fail();
-  } catch (error
-          , stacktrace // //# withtraceparameter: continued
-  ) {
-    expectTrace(
-        ['gg2', 'ff2', 'ee2', 'dd2', 'cc2', 'bb2', 'aa2'], error.stackTrace);
-    expectTrace(['gg2', 'ff2', 'ee2', 'dd2', 'cc2', 'bb2', 'aa2'], stacktrace); // //# withtraceparameter: continued
-  }
-}
-
-bb2() => cc2();
-
-cc2() {
-  try {
-    dd2();
-  } on SubclassOfError catch (e) {
-    rethrow;
-  } on int catch (e) {
-    fail();
-  }
-}
-
-dd2() => ee2();
-
-ee2() {
-  try {
-    ff2();
-  } catch (e) {
-    rethrow;
-  }
-}
-
-ff2() => gg2();
-
-gg2() => throw new SubclassOfError();
-
-// == Rethrow, with intervening catch without a trace parameter.
-
-aa3() {
-  try {
-    bb3();
-    fail();
-  } catch (error
-          , stacktrace // //# withtraceparameter: continued
-  ) {
-    expectTrace(
-        ['gg3', 'ff3', 'ee3', 'dd3', 'cc3', 'bb3', 'aa3'], error.stackTrace);
-    expectTrace(['cc3', 'bb3', 'aa3'], stacktrace); // //# withtraceparameter: continued
-  }
-}
-
-bb3() => cc3();
-
-cc3() {
-  try {
-    dd3();
-  } catch (e) {
-    throw e;
-  }
-}
-
-dd3() => ee3();
-
-ee3() {
-  try {
-    ff3();
-  } catch (e) {
-    rethrow;
-  }
-}
-
-ff3() => gg3();
-
-gg3() => throw new SubclassOfError();
-
-expectTrace(functionNames, stacktrace) {
-  // Note we don't expect functionNames to cover the whole trace, only the
-  // top portion, because the frames below main are an implementation detail.
-  var traceLines = stacktrace.toString().split('\n');
-  var expectedIndex = 0;
-  var actualIndex = 0;
-  print(stacktrace);
-  print(functionNames);
-  while (expectedIndex < functionNames.length) {
-    var expected = functionNames[expectedIndex];
-    var actual = traceLines[actualIndex];
-    if (actual.indexOf(expected) == -1) {
-      if (expectedIndex == 0) {
-        actualIndex++; // Skip over some helper frames at the top
-      } else {
-        throw "Expected: $expected actual: $actual";
-      }
-    } else {
-      actualIndex++;
-      expectedIndex++;
-    }
-  }
-}
-
-main() {
-  aa1();
-  aa2();
-  aa3();
-}
diff --git a/tests/language/stacktrace_rethrow_nonerror_test.dart b/tests/language/stacktrace_rethrow_nonerror_test.dart
deleted file mode 100644
index 57c8a15..0000000
--- a/tests/language/stacktrace_rethrow_nonerror_test.dart
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright (c) 2014, 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 NotASubclassOfError {}
-
-fail() => throw "Fail";
-
-// == Rethrow, skipping through typed handlers. ==
-
-aa1() {
-  try {
-    bb1();
-    fail();
-  } catch (exception, stacktrace) {
-    expectTrace(['gg1', 'ff1', 'ee1', 'dd1', 'cc1', 'bb1', 'aa1'], stacktrace);
-  }
-}
-
-bb1() => cc1();
-
-cc1() {
-  try {
-    dd1();
-  } on String catch (e) {
-    fail();
-  } on int catch (e) {
-    fail();
-  }
-}
-
-dd1() => ee1();
-
-ee1() {
-  try {
-    ff1();
-  } catch (e) {
-    rethrow;
-  }
-}
-
-ff1() => gg1();
-
-gg1() => throw new NotASubclassOfError();
-
-// == Rethrow, rethrow again in typed handler. ==
-
-aa2() {
-  try {
-    bb2();
-    fail();
-  } catch (exception, stacktrace) {
-    expectTrace(['gg2', 'ff2', 'ee2', 'dd2', 'cc2', 'bb2', 'aa2'], stacktrace);
-  }
-}
-
-bb2() => cc2();
-
-cc2() {
-  try {
-    dd2();
-  } on NotASubclassOfError catch (e) {
-    rethrow;
-  } on int catch (e) {
-    fail();
-  }
-}
-
-dd2() => ee2();
-
-ee2() {
-  try {
-    ff2();
-  } catch (e) {
-    rethrow;
-  }
-}
-
-ff2() => gg2();
-
-gg2() => throw new NotASubclassOfError();
-
-// == Rethrow, with intervening catch without a trace parameter.
-
-aa3() {
-  try {
-    bb3();
-    fail();
-  } catch (exception, stacktrace) {
-    expectTrace(['cc3', 'bb3', 'aa3'], stacktrace);
-  }
-}
-
-bb3() => cc3();
-
-cc3() {
-  try {
-    dd3();
-  } catch (e) {
-    throw e;
-  }
-}
-
-dd3() => ee3();
-
-ee3() {
-  try {
-    ff3();
-  } catch (e) {
-    rethrow;
-  }
-}
-
-ff3() => gg3();
-
-gg3() => throw new NotASubclassOfError();
-
-expectTrace(functionNames, stacktrace) {
-  // Note we don't expect functionNames to cover the whole trace, only the
-  // top portion, because the frames below main are an implementation detail.
-  var traceLines = stacktrace.toString().split('\n');
-  var expectedIndex = 0;
-  var actualIndex = 0;
-  print(stacktrace);
-  print(functionNames);
-  while (expectedIndex < functionNames.length) {
-    var expected = functionNames[expectedIndex];
-    var actual = traceLines[actualIndex];
-    if (actual.indexOf(expected) == -1) {
-      if (expectedIndex == 0) {
-        actualIndex++; // Skip over some helper frames at the top
-      } else {
-        throw "Expected: $expected actual: $actual";
-      }
-    } else {
-      actualIndex++;
-      expectedIndex++;
-    }
-  }
-}
-
-main() {
-  aa1();
-  aa2();
-  aa3();
-}
diff --git a/tests/language/stacktrace_test.dart b/tests/language/stacktrace_test.dart
deleted file mode 100644
index 20ddcb0..0000000
--- a/tests/language/stacktrace_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a stack trace is properly terminated (issue 8850).
-
-import "package:expect/expect.dart";
-
-void main() {
-  var ex = new Exception("fail");
-  try {
-    throw ex;
-  } on Exception catch (e, st) {
-    Expect.equals(ex, e);
-    Expect.isTrue(st.toString().endsWith("\n"));
-  }
-}
diff --git a/tests/language/state_mangling2_test.dart b/tests/language/state_mangling2_test.dart
deleted file mode 100644
index 9467d79..0000000
--- a/tests/language/state_mangling2_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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";
-
-foo(state) {
-  if (state == null) return 0;
-  var sum = 0;
-  state = inscrutableId(state);
-  for (int i = 0; i < state.length; i++) {
-    sum += state[i];
-  }
-  state = inscrutableId(state);
-  for (int i = 0; i < state.length; i++) {
-    sum += state[i];
-  }
-  return sum;
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-inscrutableId(x) {
-  if (x == 0) return inscrutable(x);
-  return (3 == inscrutable(3)) ? x : false;
-}
-
-class A {
-  int length = 3;
-  operator [](i) => 1;
-}
-
-main() {
-  Expect.equals(12, foo([1, 2, 3]));
-  if (inscrutableId(0) == 0) {
-    Expect.equals(6, foo(new A()));
-  }
-}
diff --git a/tests/language/state_mangling3_test.dart b/tests/language/state_mangling3_test.dart
deleted file mode 100644
index 05e3c50..0000000
--- a/tests/language/state_mangling3_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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";
-
-foo(state0) {
-  if (state0 == null) return 0;
-  var sum = 0;
-  for (int i = 0; i < state0.length; i++) {
-    sum += state0[i];
-  }
-  state0 = inscrutableId(state0);
-  for (int i = 0; i < state0.length; i++) {
-    sum += state0[i];
-  }
-  return sum;
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-inscrutableId(x) {
-  if (x == 0) return inscrutable(x);
-  return (3 == inscrutable(3)) ? x : false;
-}
-
-class A {
-  int length = 3;
-  operator [](i) => 1;
-}
-
-main() {
-  Expect.equals(12, foo([1, 2, 3]));
-  if (inscrutableId(0) == 0) {
-    Expect.equals(6, foo(new A()));
-  }
-}
diff --git a/tests/language/state_mangling4_test.dart b/tests/language/state_mangling4_test.dart
deleted file mode 100644
index 58c18d1..0000000
--- a/tests/language/state_mangling4_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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";
-
-foo(env1) {
-  if (env1 == null) return 0;
-  var env0 = 0;
-  for (int i = 0; i < env1.length; i++) {
-    env0 += env1[i];
-  }
-  env1 = inscrutableId(new A());
-  for (int i = 0; i < env1.length; i++) {
-    env0 += env1[i];
-  }
-  return env0;
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-inscrutableId(x) {
-  if (x == 0) return inscrutable(x);
-  return (3 == inscrutable(3)) ? x : false;
-}
-
-class A {
-  int length = 3;
-  operator [](i) => 1;
-}
-
-main() {
-  Expect.equals(9, foo([1, 2, 3]));
-  if (inscrutableId(0) == 0) {
-    Expect.equals(6, foo(new A()));
-  }
-}
diff --git a/tests/language/state_mangling_test.dart b/tests/language/state_mangling_test.dart
deleted file mode 100644
index 84d697b..0000000
--- a/tests/language/state_mangling_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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";
-
-foo(state) {
-  if (state == null) return 0;
-  var sum = 0;
-  for (int i = 0; i < state.length; i++) {
-    sum += state[i];
-  }
-  state = inscrutableId(state);
-  for (int i = 0; i < state.length; i++) {
-    sum += state[i];
-  }
-  return sum;
-}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-inscrutableId(x) {
-  if (x == 0) return inscrutable(x);
-  return (3 == inscrutable(3)) ? x : false;
-}
-
-class A {
-  int length = 3;
-  operator [](i) => 1;
-}
-
-main() {
-  Expect.equals(12, foo([1, 2, 3]));
-  if (inscrutableId(0) == 0) {
-    Expect.equals(6, foo(new A()));
-  }
-}
diff --git a/tests/language/statement_test.dart b/tests/language/statement_test.dart
deleted file mode 100644
index 37b7aa1..0000000
--- a/tests/language/statement_test.dart
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests all statement types. Not an exhaustive test of all statement semantics.
-class StatementTest {
-  StatementTest() {}
-
-  static testMain() {
-    var test = new StatementTest();
-    test.testIfStatement();
-    test.testForLoop();
-    test.testWhileLoops();
-    test.testSwitch();
-    test.testExceptions();
-    test.testBreak();
-    test.testContinue();
-    test.testFunction();
-    test.testReturn();
-  }
-
-  testIfStatement() {
-    // Basic if statements.
-    if (true) {
-      Expect.equals(true, true);
-    } else {
-      Expect.equals(false, true);
-    }
-
-    if (false) {
-      Expect.equals(false, true);
-    } else {
-      Expect.equals(true, true);
-    }
-  }
-
-  testForLoop() {
-    int count = 0, count2;
-
-    // Basic for loop.
-    for (int i = 0; i < 10; ++i) {
-      ++count;
-    }
-    Expect.equals(10, count);
-
-    // For loop with no 'var'.
-    count2 = 0;
-    for (count = 0; count < 5; ++count) {
-      ++count2;
-    }
-    Expect.equals(5, count);
-    Expect.equals(5, count2);
-
-    // For loop with no initializer.
-    count = count2 = 0;
-    for (; count < 10; ++count) {
-      ++count2;
-    }
-    Expect.equals(10, count);
-    Expect.equals(10, count2);
-
-    // For loop with no increment.
-    for (count = 0; count < 5;) {
-      ++count;
-    }
-    Expect.equals(5, count);
-
-    // For loop with no test.
-    for (count = 0;; ++count) {
-      if (count == 10) {
-        break;
-      }
-    }
-    Expect.equals(10, count);
-
-    // For loop with no nothing.
-    count = 0;
-    for (;;) {
-      if (count == 5) {
-        break;
-      }
-      ++count;
-    }
-    Expect.equals(5, count);
-  }
-
-  testWhileLoops() {
-    // Basic while loop.
-    int count = 0;
-    while (count < 10) {
-      ++count;
-    }
-    Expect.equals(10, count);
-
-    // Basic do loop.
-    count = 0;
-    do {
-      ++count;
-    } while (count < 5);
-    Expect.equals(5, count);
-  }
-
-  testSwitch() {
-    // Int switch.
-    bool hit0, hit1, hitDefault;
-    for (int x = 0; x < 3; ++x) {
-      switch (x) {
-        case 0:
-          hit0 = true;
-          break;
-        case 1:
-          hit1 = true;
-          break;
-        default:
-          hitDefault = true;
-          break;
-      }
-    }
-    Expect.equals(true, hit0);
-    Expect.equals(true, hit1);
-    Expect.equals(true, hitDefault);
-
-    // String switch.
-    var strings = ['a', 'b', 'c'];
-    bool hitA, hitB;
-    hitDefault = false;
-    for (int x = 0; x < 3; ++x) {
-      switch (strings[x]) {
-        case 'a':
-          hitA = true;
-          break;
-        case 'b':
-          hitB = true;
-          break;
-        default:
-          hitDefault = true;
-          break;
-      }
-    }
-    Expect.equals(true, hitA);
-    Expect.equals(true, hitB);
-    Expect.equals(true, hitDefault);
-  }
-
-  testExceptions() {
-    // TODO(jgw): Better tests once all the exception semantics are worked out.
-    bool hitCatch, hitFinally;
-    try {
-      throw "foo";
-    } catch (e) {
-      Expect.equals(true, e == "foo");
-      hitCatch = true;
-    } finally {
-      hitFinally = true;
-    }
-
-    Expect.equals(true, hitCatch);
-    Expect.equals(true, hitFinally);
-  }
-
-  testBreak() {
-    var ints = [
-      [32, 87, 3, 589],
-      [12, 1076, 2000, 8],
-      [622, 127, 77, 955]
-    ];
-    int i, j = 0;
-    bool foundIt = false;
-
-    search:
-    for (i = 0; i < ints.length; i++) {
-      for (j = 0; j < ints[i].length; j++) {
-        if (ints[i][j] == 12) {
-          foundIt = true;
-          break search;
-        }
-      }
-    }
-    Expect.equals(true, foundIt);
-  }
-
-  testContinue() {
-    String searchMe = "Look for a substring in me";
-    String substring = "sub";
-    bool foundIt = false;
-    int max = searchMe.length - substring.length;
-
-    test:
-    for (int i = 0; i <= max; i++) {
-      int n = substring.length;
-      int j = i;
-      int k = 0;
-      while (n-- != 0) {
-        if (searchMe[j++] != substring[k++]) {
-          continue test;
-        }
-      }
-      foundIt = true;
-      break test;
-    }
-  }
-
-  testFunction() {
-    int foo() {
-      return 42;
-    }
-
-    Expect.equals(42, foo());
-  }
-
-  void testReturn() {
-    if (true) {
-      return;
-    }
-    Expect.equals(true, false);
-  }
-}
-
-main() {
-  StatementTest.testMain();
-}
diff --git a/tests/language/static_call_wrong_argument_count_negative_test.dart b/tests/language/static_call_wrong_argument_count_negative_test.dart
deleted file mode 100644
index 2bc0509..0000000
--- a/tests/language/static_call_wrong_argument_count_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test mismatch in argument counts.
-
-class StaticCallWrongArgumentCountNegativeTest {
-  static void testMain() {
-    Niesen.goodCall(1, 2, 3);
-    // Bad call.
-    Niesen.goodCall(1, 2, 3, 4);
-  }
-}
-
-class Niesen {
-  static int goodCall(int a, int b, int c) {
-    return a + b;
-  }
-}
-
-main() {
-  StaticCallWrongArgumentCountNegativeTest.testMain();
-}
diff --git a/tests/language/static_closure_identical_test.dart b/tests/language/static_closure_identical_test.dart
deleted file mode 100644
index aa176a4..0000000
--- a/tests/language/static_closure_identical_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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";
-
-var foo = main;
-
-main() {
-  Expect.equals(main, main);
-  Expect.identical(main, main);
-  Expect.equals(main.hashCode, main.hashCode);
-
-  Expect.equals(main, foo);
-  Expect.identical(main, foo);
-  Expect.equals(main.hashCode, foo.hashCode);
-}
diff --git a/tests/language/static_const_field_test.dart b/tests/language/static_const_field_test.dart
deleted file mode 100644
index 2a6547e..0000000
--- a/tests/language/static_const_field_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing static const fields.
-
-import "package:expect/expect.dart";
-
-abstract class Spain {
-  static const AG = "Antoni Gaudi";
-  static const SD = "Salvador Dali";
-}
-
-abstract class Switzerland {
-  static const AG = "Alberto Giacometti";
-  static const LC = "Le Corbusier";
-}
-
-class A implements Switzerland {
-  const A() : n = 5;
-  final n;
-  static const a = const A();
-  static const b = 3 + 5;
-  static const c = A.b + 7;
-  static const d = const A();
-  static const s1 = "hula";
-  static const s2 = "hula";
-  static const s3 = "hop";
-  static const d1 = 1.1;
-  static const d2 = 0.55 + 0.55;
-  static const artist2 = Switzerland.AG;
-  static const architect1 = Spain.AG;
-  static const array1 = const <int>[1, 2];
-  static const map1 = const {
-    "Monday": 1,
-    "Tuesday": 2,
-  };
-}
-
-class StaticFinalFieldTest {
-  static testMain() {
-    Expect.equals(15, A.c);
-    Expect.equals(8, A.b);
-    Expect.equals(5, A.a.n);
-    Expect.equals(true, identical(8, A.b));
-    Expect.equals(true, identical(A.a, A.d));
-    Expect.equals(true, identical(A.s1, A.s2));
-    Expect.equals(false, identical(A.s1, A.s3));
-    Expect.equals(false, identical(A.s1, A.b));
-    Expect.equals(true, identical(A.d1, A.d2));
-    Expect.equals(true, Spain.SD == "Salvador Dali");
-    Expect.equals(true, A.artist2 == "Alberto Giacometti");
-    Expect.equals(true, A.architect1 == "Antoni Gaudi");
-    Expect.equals(2, A.map1["Tuesday"]);
-  }
-}
-
-main() {
-  StaticFinalFieldTest.testMain();
-}
diff --git a/tests/language/static_field1_test.dart b/tests/language/static_field1_test.dart
deleted file mode 100644
index a365048..0000000
--- a/tests/language/static_field1_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that a static field cannot be read as an instance field.
-
-class Foo {
-  Foo() {}
-  static var x;
-}
-
-class StaticField1Test {
-  static testMain() {
-    if (false) {
-      var foo = new Foo();
-      var x = foo.x;
-    }
-  }
-}
-
-main() {
-  StaticField1Test.testMain();
-}
diff --git a/tests/language/static_field1a_test.dart b/tests/language/static_field1a_test.dart
deleted file mode 100644
index 03a9aa1..0000000
--- a/tests/language/static_field1a_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that a static method cannot be read as an instance field.
-
-class Foo {
-  Foo() {}
-  static void m() {}
-}
-
-class StaticField1aTest {
-  static testMain() {
-    if (false) {
-      var foo = new Foo();
-      var m = foo.m;
-    }
-  }
-}
-
-main() {
-  StaticField1aTest.testMain();
-}
diff --git a/tests/language/static_field2_test.dart b/tests/language/static_field2_test.dart
deleted file mode 100644
index 23d0dbd..0000000
--- a/tests/language/static_field2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that a static field cannot be set as an instance field.
-
-class Foo {
-  Foo() {}
-  static var x;
-}
-
-class StaticField2Test {
-  static testMain() {
-    if (false) {
-      var foo = new Foo();
-      foo.x = 1;
-    }
-  }
-}
-
-main() {
-  StaticField2Test.testMain();
-}
diff --git a/tests/language/static_field2a_test.dart b/tests/language/static_field2a_test.dart
deleted file mode 100644
index 34a35bd..0000000
--- a/tests/language/static_field2a_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that a static method cannot be set as an instance field.
-
-class Foo {
-  Foo() {}
-  static void m() {}
-}
-
-class StaticField2aTest {
-  static testMain() {
-    if (false) {
-      var foo = new Foo();
-      foo.m = 1;
-    }
-  }
-}
-
-main() {
-  StaticField2aTest.testMain();
-}
diff --git a/tests/language/static_field3_test.dart b/tests/language/static_field3_test.dart
deleted file mode 100644
index 7e49693..0000000
--- a/tests/language/static_field3_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that an instance field cannot be read as a static field.
-
-class Foo {
-  Foo() {}
-  var x;
-  void m() {}
-}
-
-main() {
-  if (false) {
-    var x = Foo.x; // //# 01: static type warning
-    var m = Foo.m; // //# 02: static type warning
-    Foo.m = 1; // //# 03: static type warning
-    Foo.x = 1; // //# 04: static type warning
-  }
-}
diff --git a/tests/language/static_field_test.dart b/tests/language/static_field_test.dart
deleted file mode 100644
index bcf498e..0000000
--- a/tests/language/static_field_test.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// 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.
-// Dart test program for testing setting/getting/initializing static fields.
-
-import "package:expect/expect.dart";
-
-class First {
-  First() {}
-  static var a;
-  static var b;
-  static const int c = 1;
-  static setValues() {
-    a = 24;
-    b = 10;
-    return a + b + c;
-  }
-}
-
-class InitializerTest {
-  static var one;
-  static var two = 2;
-  static var three = 2;
-
-  static checkValueOfThree() {
-    // We need to keep this check separate to prevent three from
-    // getting initialized before the += is executed.
-    Expect.equals(3, three);
-  }
-
-  static void testStaticFieldInitialization() {
-    Expect.equals(null, one);
-    Expect.equals(2, two);
-    one = 11;
-    two = 22;
-    Expect.equals(11, one);
-    Expect.equals(22, two);
-
-    // Assignment operators exercise a different code path.  Make sure
-    // that initialization works here as well.
-    three += 1;
-    checkValueOfThree();
-  }
-}
-
-class StaticFieldTest {
-  static testMain() {
-    First.a = 3;
-    First.b = First.a;
-    Expect.equals(3, First.a);
-    Expect.equals(First.a, First.b);
-    First.b = (First.a = 10);
-    Expect.equals(10, First.a);
-    Expect.equals(10, First.b);
-    First.b = First.a = 15;
-    Expect.equals(15, First.a);
-    Expect.equals(15, First.b);
-    Expect.equals(35, First.setValues());
-    Expect.equals(24, First.a);
-    Expect.equals(10, First.b);
-  }
-}
-
-class StaticField1RunNegativeTest {
-  static // //# 01: static type warning, runtime error
-  var x;
-  testMain() {
-    var foo = new StaticField1RunNegativeTest();
-    print(x); // Used to compile 'x' and force any errors.
-    var result = foo.x;
-  }
-}
-
-class StaticField1aRunNegativeTest {
-  static // //# 02: static type warning, runtime error
-  void m() {}
-
-  testMain() {
-    var foo = new StaticField1aRunNegativeTest();
-    print(m); // Used to compile 'm' and force any errors.
-    var result = foo.m;
-  }
-}
-
-class StaticField2RunNegativeTest {
-  static //# 03:  static type warning, runtime error
-  var x;
-
-  testMain() {
-    var foo = new StaticField2RunNegativeTest();
-    print(x); // Used to compile 'x' and force any errors.
-    foo.x = 1;
-  }
-}
-
-class StaticField2aRunNegativeTest {
-  static //  //# 04: static type warning, runtime error
-  void m() {}
-
-  testMain() {
-    var foo = new StaticField2aRunNegativeTest();
-    print(m); // Used to compile 'm' and force any errors.
-    foo.m = 1; //# 04:continued
-  }
-}
-
-main() {
-  StaticFieldTest.testMain();
-  InitializerTest.testStaticFieldInitialization();
-  new StaticField1RunNegativeTest().testMain();
-  new StaticField1aRunNegativeTest().testMain();
-  new StaticField2RunNegativeTest().testMain();
-  new StaticField2aRunNegativeTest().testMain();
-}
diff --git a/tests/language/static_final_field2_test.dart b/tests/language/static_final_field2_test.dart
deleted file mode 100644
index 83ef9ac..0000000
--- a/tests/language/static_final_field2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Disallow re-assignment of a final static variable.
-
-class A {
-  static const x = 1;
-}
-
-class B {
-  const B() : n = 5;
-  final n;
-  static const a; // //# 02: syntax error
-  static const b = 3 + 5;
-}
-
-main() {
-  A.x = 2; // //# 01: static type warning, runtime error
-  new B();
-  print(B.b);
-  print(B.a); // //# 02: continued
-}
diff --git a/tests/language/static_getter_no_setter1_test.dart b/tests/language/static_getter_no_setter1_test.dart
deleted file mode 100644
index 0103d12..0000000
--- a/tests/language/static_getter_no_setter1_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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';
-
-bool getter_visited = false;
-
-class Class {
-  static int get getter {
-    getter_visited = true;
-  }
-
-  method() {
-    try {
-      getter++; //# 01: static type warning
-    } on NoSuchMethodError catch (e) {
-      Expect.isTrue(getter_visited); //# 01: continued
-      return;
-    }
-    Expect.fail('Expected NoSuchMethodError'); //# 01: continued
-  }
-}
-
-main() {
-  new Class().method();
-}
diff --git a/tests/language/static_getter_no_setter2_test.dart b/tests/language/static_getter_no_setter2_test.dart
deleted file mode 100644
index f11becd..0000000
--- a/tests/language/static_getter_no_setter2_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class Class {
-  static int get getter => 0;
-
-  method() {
-    try {
-      getter++; //# 01: static type warning
-    } on NoSuchMethodError catch (e) {
-      return;
-    }
-    Expect.fail('Expected NoSuchMethodError'); //# 01: continued
-  }
-
-  noSuchMethod(i) {
-    return 42;
-  }
-}
-
-class Subclass extends Class {
-  method() {
-    print(getter); //# 01: continued
-    super.method();
-  }
-}
-
-main() {
-  new Subclass().method();
-}
diff --git a/tests/language/static_getter_no_setter3_test.dart b/tests/language/static_getter_no_setter3_test.dart
deleted file mode 100644
index eecd792..0000000
--- a/tests/language/static_getter_no_setter3_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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';
-
-bool getter_visited = false;
-
-class Class {
-  static final int getter = () {
-    getter_visited = true;
-  }();
-
-  method() {
-    try {
-      getter++; //# 01: static type warning
-    } on NoSuchMethodError catch (e) {
-      Expect.isTrue(getter_visited); //# 01: continued
-      return;
-    }
-    Expect.fail('Expected NoSuchMethodError'); //# 01: continued
-  }
-}
-
-main() {
-  new Class().method();
-}
diff --git a/tests/language/static_implicit_closure_test.dart b/tests/language/static_implicit_closure_test.dart
deleted file mode 100644
index 3b16a5d..0000000
--- a/tests/language/static_implicit_closure_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing invocation of implicit closures.
-// VMOptions=
-// VMOptions=--use_slow_path
-
-import "package:expect/expect.dart";
-
-class First {
-  First() {}
-  static int get a {
-    return 10;
-  }
-
-  static var b;
-  static int foo() {
-    return 30;
-  }
-}
-
-class StaticImplicitClosureTest {
-  static void testMain() {
-    Function func = () => 20;
-    Expect.equals(10, First.a);
-    First.b = First.a;
-    Expect.equals(10, First.b);
-    First.b = func;
-    Expect.equals(20, First.b());
-    Function fa = First.foo;
-    Expect.equals(30, fa());
-  }
-}
-
-main() {
-  StaticImplicitClosureTest.testMain();
-}
diff --git a/tests/language/static_initializer_type_error_test.dart b/tests/language/static_initializer_type_error_test.dart
deleted file mode 100644
index 5afb798..0000000
--- a/tests/language/static_initializer_type_error_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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";
-
-int x = "milou";
-bool inCheckedMode = false;
-
-bool readXThrows() {
-  try {
-    var y = x;
-    return false;
-  } catch (e) {
-    inCheckedMode = true;
-    x = 5; // Make sure we do not throw exception a second time.
-    return true;
-  }
-}
-
-main() {
-  int numExceptions = 0;
-  for (int i = 0; i < 8; i++) {
-    if (readXThrows()) {
-      numExceptions++;
-    }
-  }
-  // In checked mode throw only one exception.
-  Expect.equals(inCheckedMode ? 1 : 0, numExceptions);
-}
diff --git a/tests/language/static_inline_test.dart b/tests/language/static_inline_test.dart
deleted file mode 100644
index 12bfe48..0000000
--- a/tests/language/static_inline_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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";
-
-// Test inlining of assignments in parameter passing. If [StringScanner.charAt]
-// is inlined, the argument expression [: ++byteOffset :] should not be
-// duplicated.
-
-class StringScanner {
-  static String string;
-  int byteOffset = -1;
-
-  int nextByte(foo) {
-    if (foo) return -2;
-    return charAt(++byteOffset);
-  }
-
-  static int charAt(index) =>
-      (string.length > index) ? string.codeUnitAt(index) : -1;
-}
-
-void main() {
-  var scanner = new StringScanner();
-  StringScanner.string = 'az9';
-  Expect.equals(0x61, scanner.nextByte(false)); // Expect a.
-  Expect.equals(0x7A, scanner.nextByte(false)); // Expect z.
-  Expect.equals(0x39, scanner.nextByte(false)); // Expect 9.
-  Expect.equals(-1, scanner.nextByte(false));
-}
diff --git a/tests/language/static_parameter_test.dart b/tests/language/static_parameter_test.dart
deleted file mode 100644
index 68d3e01..0000000
--- a/tests/language/static_parameter_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2013, 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.
-
-foo(x
-    , static int y // //# 01: syntax error
-    , static final y // //# 02: syntax error
-    , {static y} // //# 03: syntax error
-    , [static y] // //# 04: syntax error
-    ) {}
-
-class C {
-  bar(x
-      , static int y // //# 05: syntax error
-      , static final y // //# 06: syntax error
-      , {static y} // //# 07: syntax error
-      , [static y] // //# 08: syntax error
-      ) {}
-
-  static baz(x
-      , static int y // //# 09: syntax error
-      , static final y // //# 10: syntax error
-      , {static y} // //# 11: syntax error
-      , [static y] // //# 12: syntax error
-      ) {}
-}
-
-main() {
-  foo(1
-      , 1 // //# 01: continued
-      , 1 // //# 02: continued
-      , y: 1 // //# 03: continued
-      , 1 // //# 04: continued
-      );
-  new C().bar(1
-      , 1 // //# 05: continued
-      , 1 // //# 06: continued
-      , y: 1 // //# 07: continued
-      , 1 // //# 08: continued
-      );
-  C.baz(1
-      , 1 // //# 09: continued
-      , 1 // //# 10: continued
-      , y: 1 // //# 11: continued
-      , 1 // //# 12: continued
-      );
-}
diff --git a/tests/language/static_postfix_operator_test.dart b/tests/language/static_postfix_operator_test.dart
deleted file mode 100644
index c16817a..0000000
--- a/tests/language/static_postfix_operator_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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";
-
-int a = 0;
-int b = 0;
-
-withTryFinally() {
-  bool inIt = false;
-  // Do a try/finally to potentially force a non-optimizing compiler.
-  try {
-    if (a++ == 0) {
-      inIt = true;
-    }
-  } finally {}
-  Expect.isTrue(inIt);
-}
-
-withoutTryFinally() {
-  bool inIt = false;
-  if (b++ == 0) {
-    inIt = true;
-  }
-  Expect.isTrue(inIt);
-}
-
-main() {
-  withTryFinally();
-  withoutTryFinally();
-}
diff --git a/tests/language/static_setter_get_test.dart b/tests/language/static_setter_get_test.dart
deleted file mode 100644
index 0e1e496..0000000
--- a/tests/language/static_setter_get_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2015, 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';
-
-class Class {
-  static set o(_) {}
-  m() => o; //# 01: static type warning
-  noSuchMethod(_) => 42;
-}
-
-main() {
-  Expect.throws(() => new Class().m()); //# 01: continued
-}
diff --git a/tests/language/static_top_level_test.dart b/tests/language/static_top_level_test.dart
deleted file mode 100644
index dee2199..0000000
--- a/tests/language/static_top_level_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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.
-
-static method() { } //                   //# 00: syntax error
-static var field; //                     //# 01: syntax error
-static const finalField = 42; //         //# 02: syntax error
-static const constant = 123; //          //# 03: syntax error
-
-static int typedMethod() => 87; //       //# 04: syntax error
-static int typedField; //                //# 05: syntax error
-static const int typedFinalField = 99; //# 06: syntax error
-static const int typedConstant = 1; //   //# 07: syntax error
-
-void main() {}
diff --git a/tests/language/strict_equal_test.dart b/tests/language/strict_equal_test.dart
deleted file mode 100644
index fbdccd8..0000000
--- a/tests/language/strict_equal_test.dart
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright (c) 2011, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    Expect.isFalse(test1(5));
-    Expect.isTrue(test1(3));
-
-    Expect.isTrue(test2(5));
-    Expect.isFalse(test2(3));
-
-    Expect.isTrue(test2r(5));
-    Expect.isFalse(test2r(3));
-
-    Expect.isTrue(test3());
-
-    Expect.equals(2, test4(5));
-    Expect.equals(1, test4(3));
-
-    Expect.equals(1, test5(5));
-    Expect.equals(2, test5(3));
-
-    Expect.equals(1, test6());
-
-    Expect.isFalse(test7());
-    Expect.equals(2, test8());
-
-    Expect.isFalse(test9(2));
-    Expect.isFalse(test9r(2));
-    Expect.isTrue(test9(0));
-    Expect.isTrue(test9r(0));
-
-    Expect.isFalse(test10(0));
-    Expect.isFalse(test10r(0));
-    Expect.isTrue(test10(2));
-    Expect.isTrue(test10r(2));
-
-    test11(i);
-  }
-}
-
-test1(a) {
-  return identical(a, 3);
-}
-
-test2(a) {
-  return !identical(a, 3);
-}
-
-test2r(a) {
-  return !identical(3, a);
-}
-
-test3() {
-  return identical(get5(), 5);
-}
-
-test4(a) {
-  if (identical(a, 3)) {
-    return 1;
-  } else {
-    return 2;
-  }
-}
-
-test5(a) {
-  if (!identical(a, 3)) {
-    return 1;
-  } else {
-    return 2;
-  }
-}
-
-test6() {
-  if (identical(get5(), 5)) {
-    return 1;
-  } else {
-    return 2;
-  }
-}
-
-get5() {
-  return 5;
-}
-
-test7() {
-  return null != null;
-}
-
-test8() {
-  if (null != null) {
-    return 1;
-  } else {
-    return 2;
-  }
-}
-
-test9(a) {
-  return identical(a, 0);
-}
-
-test9r(a) {
-  return identical(0, a);
-}
-
-test10(a) {
-  return !identical(a, 0);
-}
-
-test10r(a) {
-  return !identical(0, a);
-}
-
-test11(a) {
-  if (identical(a, 0)) {
-    Expect.isTrue(identical(0, a));
-    Expect.isFalse(!identical(a, 0));
-    Expect.isFalse(!identical(0, a));
-  } else {
-    Expect.isFalse(identical(0, a));
-    Expect.isTrue(!identical(a, 0));
-    Expect.isTrue(!identical(0, a));
-  }
-}
diff --git a/tests/language/string_charcode_test.dart b/tests/language/string_charcode_test.dart
deleted file mode 100644
index 897721f..0000000
--- a/tests/language/string_charcode_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    Expect.isTrue(moo("x"));
-    Expect.isFalse(moo("X"));
-    Expect.isFalse(moo("xx"));
-    Expect.isTrue(mooRev("x"));
-    Expect.isFalse(mooRev("X"));
-    Expect.isFalse(mooRev("xx"));
-    Expect.isTrue(goo("Hello", "e"));
-    Expect.isFalse(goo("Hello", "E"));
-    Expect.isFalse(goo("Hello", "ee"));
-    Expect.isTrue(gooRev("Hello", "e"));
-    Expect.isFalse(gooRev("Hello", "E"));
-    Expect.isFalse(gooRev("Hello", "ee"));
-    Expect.isTrue(hoo("HH"));
-    Expect.isFalse(hoo("Ha"));
-    Expect.isTrue(hooRev("HH"));
-    Expect.isFalse(hooRev("Ha"));
-  }
-  Expect.isFalse(moo(12));
-  Expect.isFalse(mooRev(12));
-  Expect.isTrue(goo([1, 2], 2));
-  Expect.isTrue(gooRev([1, 2], 2));
-  Expect.throws(() => hoo("H"), (e) => e is RangeError);
-  Expect.throws(() => hooRev("H"), (e) => e is RangeError);
-}
-
-moo(j) {
-  return "x" == j;
-}
-
-goo(a, j) {
-  return a[1] == j;
-}
-
-// Check constant folding.
-hoo(a) {
-  return a[1] == ("Hello")[0];
-}
-
-mooRev(j) {
-  return j == "x";
-}
-
-gooRev(a, j) {
-  return j == a[1];
-}
-
-// Check constant folding.
-hooRev(a) {
-  return ("Hello")[0] == a[1];
-}
diff --git a/tests/language/string_escape2_negative_test_helper.dart b/tests/language/string_escape2_negative_test_helper.dart
deleted file mode 100644
index 92c10d9..0000000
--- a/tests/language/string_escape2_negative_test_helper.dart
+++ /dev/null
@@ -1,5 +0,0 @@
-// 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.
-
-// An empty file, attempted sourced by string_escape2_negative_test.dart.
diff --git a/tests/language/string_escape3_negative_test_helper.dart b/tests/language/string_escape3_negative_test_helper.dart
deleted file mode 100644
index 2d14a8d..0000000
--- a/tests/language/string_escape3_negative_test_helper.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// 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.
-
-// An empty library, imported by string_escape3_negative_test.dart.
-
-library empty;
diff --git a/tests/language/string_escape4_negative_test.dart b/tests/language/string_escape4_negative_test.dart
deleted file mode 100644
index d12cdd2..0000000
--- a/tests/language/string_escape4_negative_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-// Test that newlines cannot be escaped in strings.
-
-main() {
-  print('Hello, World!\
-');
-}
diff --git a/tests/language/string_escapes_test.dart b/tests/language/string_escapes_test.dart
deleted file mode 100644
index 78808a7..0000000
--- a/tests/language/string_escapes_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// 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";
-
-class StringEscapesTest {
-  static testMain() {
-    testDelimited();
-    testFixed2();
-    testFixed4();
-    testEscapes();
-    testLiteral();
-  }
-
-  static testDelimited() {
-    String str = "Foo\u{1}Bar\u{000001}Baz\u{D7FF}Boo";
-    Expect.equals(15, str.length);
-    Expect.equals(1, str.codeUnitAt(3));
-    Expect.equals(1, str.codeUnitAt(7));
-    Expect.equals(0xD7FF, str.codeUnitAt(11));
-    Expect.equals('B'.codeUnitAt(0), str.codeUnitAt(12));
-  }
-
-  static testEscapes() {
-    String str = "Foo\fBar\vBaz\bBoo";
-    Expect.equals(15, str.length);
-    Expect.equals(12, str.codeUnitAt(3));
-    Expect.equals('B'.codeUnitAt(0), str.codeUnitAt(4));
-    Expect.equals(11, str.codeUnitAt(7));
-    Expect.equals('z'.codeUnitAt(0), str.codeUnitAt(10));
-    Expect.equals(8, str.codeUnitAt(11));
-    Expect.equals('o'.codeUnitAt(0), str.codeUnitAt(14));
-    str = "Abc\rDef\nGhi\tJkl";
-    Expect.equals(15, str.length);
-    Expect.equals(13, str.codeUnitAt(3));
-    Expect.equals('D'.codeUnitAt(0), str.codeUnitAt(4));
-    Expect.equals(10, str.codeUnitAt(7));
-    Expect.equals('G'.codeUnitAt(0), str.codeUnitAt(8));
-    Expect.equals(9, str.codeUnitAt(11));
-    Expect.equals('J'.codeUnitAt(0), str.codeUnitAt(12));
-  }
-
-  static testFixed2() {
-    String str = "Foo\xFFBar";
-    Expect.equals(7, str.length);
-    Expect.equals(255, str.codeUnitAt(3));
-    Expect.equals('B'.codeUnitAt(0), str.codeUnitAt(4));
-  }
-
-  static testFixed4() {
-    String str = "Foo\u0001Bar";
-    Expect.equals(7, str.length);
-    Expect.equals(1, str.codeUnitAt(3));
-    Expect.equals('B'.codeUnitAt(0), str.codeUnitAt(4));
-  }
-
-  static testLiteral() {
-    String str = "\a\c\d\e\g\h\i\j\k\l\$\{\}\"";
-    Expect.equals(r'acdeghijkl${}"', str);
-  }
-}
-
-main() {
-  StringEscapesTest.testMain();
-}
diff --git a/tests/language/string_interpolate1_negative_test.dart b/tests/language/string_interpolate1_negative_test.dart
deleted file mode 100644
index 5a38e52..0000000
--- a/tests/language/string_interpolate1_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing that the interpolated identifier does not start
-// with '$'.
-
-class StringInterpolate1NegativeTest {
-
-  static testMain() {
-    var $x = 1;
-    var s = "eins und $$x macht zwei.";
-    print(s);
-  }
-
-}
-
-main() {
-  StringInterpolate1NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolate2_negative_test.dart b/tests/language/string_interpolate2_negative_test.dart
deleted file mode 100644
index 0acbd7d..0000000
--- a/tests/language/string_interpolate2_negative_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing that the interpolated identifier starts with an
-// ident start character.
-
-class StringInterpolate2NegativeTest {
-
-  static testMain() {
-    var $x = 1;
-    var s = "eins und $-x macht zwei.";
-    print(s);
-  }
-
-}
-
-main() {
-  StringInterpolate2NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolate2_test.dart b/tests/language/string_interpolate2_test.dart
deleted file mode 100644
index bb49ba5..0000000
--- a/tests/language/string_interpolate2_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing string interpolation of expressions.
-
-import "package:expect/expect.dart";
-
-class StringInterpolate2Test {
-  static var F1;
-
-  static void testMain() {
-    F1 = "1 + 5 = ${1+5}";
-
-    Expect.equals("1 + 5 = 6", F1);
-
-    var fib = [1, 1, 2, 3, 5, 8, 13, 21];
-
-    var i = 5;
-    var s = "${i}";
-    Expect.equals("5", s);
-
-    s = "fib(${i}) = ${fib[i]}";
-    Expect.equals("fib(5) = 8", s);
-
-    i = 5;
-    s = "$i squared is ${((x) => x*x)(i)}";
-    Expect.equals("5 squared is 25", s);
-
-    Expect.equals("8", "${fib.length}");
-    // test single quote
-    Expect.equals("8", '${fib.length}');
-    // test multi-line
-    Expect.equals(
-        "8",
-        '${fib.
-    length}');
-
-    var map = {"red": 1, "green": 2, "blue": 3};
-    s = "green has value ${map["green"]}";
-    Expect.equals("green has value 2", s);
-
-    i = 0;
-    b() => "${++i}";
-    s = "aaa ${"bbb ${b()} bbb"} aaa ${b()}";
-    Expect.equals("aaa bbb 1 bbb aaa 2", s);
-
-    // test multiple levels of nesting, including changing quotes and
-    // multiline string types
-    s = "a ${(){ return 'b ${(){ return """
-c""";}()}'; }()} d";
-    Expect.equals("a b c d", s);
-  }
-}
-
-main() {
-  StringInterpolate2Test.testMain();
-}
diff --git a/tests/language/string_interpolate_null_test.dart b/tests/language/string_interpolate_null_test.dart
deleted file mode 100644
index a06427a..0000000
--- a/tests/language/string_interpolate_null_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing NPE within string interpolation.
-
-import "package:expect/expect.dart";
-
-class A {
-  A(String this.name) {}
-  String name;
-}
-
-main() {
-  A a = new A("Kermit");
-  var s = "Hello Mr. ${a.name}";
-  Expect.stringEquals("Hello Mr. Kermit", s);
-  a = null;
-  try {
-    s = "Hello Mr. ${a.name}";
-  } on NoSuchMethodError catch (e) {
-    return;
-  }
-  Expect.fail("NoSuchMethodError not thrown");
-}
diff --git a/tests/language/string_interpolate_test.dart b/tests/language/string_interpolate_test.dart
deleted file mode 100644
index 75be948..0000000
--- a/tests/language/string_interpolate_test.dart
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing string interpolation.
-
-import "package:expect/expect.dart";
-
-class WhatchamaCallIt {
-  WhatchamaCallIt() {}
-
-  String foo() {
-    // Test $this and Field name is defined in subclass.
-    return "$this and $name";
-  }
-}
-
-class ThingamaBob extends WhatchamaCallIt {
-  ThingamaBob(String s)
-      : super(),
-        name = s {}
-  String name;
-  toString() => "Hansel";
-}
-
-const String A = "svin";
-const String B = "hest";
-const int N = 1 + 1;
-String Printers;
-String AAR_Printers;
-
-main() {
-  Printers = "Printers: $A and $B";
-  AAR_Printers = "AAR has $N $Printers.";
-
-  var x = 1;
-  var s = "eins und \$x macht zwei.";
-  print(s);
-  Expect.equals(r"eins und $x macht zwei.", s);
-
-  s = "eins und $x macht zwei.";
-  print(s);
-  Expect.equals(r"eins und 1 macht zwei.", s);
-
-  print(AAR_Printers);
-  Expect.equals(r"AAR has 2 Printers: svin and hest.", AAR_Printers);
-
-  var s$eins = "eins";
-  var $1 = 1;
-  var zw = "zw";
-  var ei = "ei";
-  var zw$ei = "\"Martini, dry? Nai zwai.\"";
-  s = "${s$eins} und ${$1} macht $zw$ei.";
-  print(s);
-  Expect.equals(r"eins und 1 macht zwei.", s);
-
-  var t = new ThingamaBob("Gretel");
-  print(t.foo());
-  Expect.equals(t.foo(), "Hansel and Gretel");
-
-  testStringVariants();
-}
-
-class Stringable {
-  final String value;
-  Stringable(this.value);
-  String toString() => value;
-  operator *(int count) => new Stringable(value * count);
-}
-
-void testStringVariants() {
-  String latin = "ab\x00\xff";
-  String nonLatin = "\u2000\u{10000}\ufeff";
-  Object oLatin = new Stringable(latin);
-  Object oNonLatin = new Stringable(nonLatin);
-
-  // ASCII.
-  Expect.equals(latin * 3, "$latin$latin$latin");
-  Expect.equals(
-      latin * 64,
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin");
-  Expect.equals(
-      latin * 64,
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}");
-  // Non-ASCII.
-  Expect.equals(nonLatin * 3, "$nonLatin$nonLatin$nonLatin");
-  Expect.equals(
-      nonLatin * 64,
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin");
-  Expect.equals(
-      nonLatin * 64,
-      "${nonLatin * 4}${nonLatin * 4}"
-      "${nonLatin * 4}${nonLatin * 4}"
-      "${nonLatin * 4}${nonLatin * 4}"
-      "${nonLatin * 4}${nonLatin * 4}"
-      "${nonLatin * 4}${nonLatin * 4}"
-      "${nonLatin * 4}${nonLatin * 4}"
-      "${nonLatin * 4}${nonLatin * 4}"
-      "${nonLatin * 4}${nonLatin * 4}");
-  // Mixed.
-  Expect.equals(latin * 3 + nonLatin, "$latin$latin$latin$nonLatin");
-  Expect.equals(nonLatin + latin * 3, "$nonLatin$latin$latin$latin");
-  Expect.equals(
-      latin * 60 + nonLatin * 4,
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin"
-      "$nonLatin$nonLatin$nonLatin$nonLatin");
-  Expect.equals(
-      nonLatin * 4 + latin * 60,
-      "$nonLatin$nonLatin$nonLatin$nonLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin$latin$latin$latin$latin"
-      "$latin$latin$latin$latin");
-  Expect.equals(
-      latin * 60 + nonLatin * 4,
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${nonLatin * 4}");
-  Expect.equals(
-      nonLatin * 4 + latin * 60,
-      "${nonLatin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${latin * 4}");
-  // With objects.
-  Expect.equals(latin * 3, "$latin$oLatin$latin");
-  Expect.equals(
-      latin * 64,
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin"
-      "$latin$latin$latin$latin$latin$latin$latin$oLatin");
-  Expect.equals(
-      latin * 64,
-      "${latin * 4}${latin * 4}${latin * 4}${oLatin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${oLatin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${oLatin * 4}"
-      "${latin * 4}${latin * 4}${latin * 4}${oLatin * 4}");
-  // Non-ASCII.
-  Expect.equals(nonLatin * 3, "$nonLatin$oNonLatin$nonLatin");
-  Expect.equals(
-      nonLatin * 64,
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin"
-      "$nonLatin$nonLatin$nonLatin$oNonLatin");
-  Expect.equals(
-      nonLatin * 64,
-      "${nonLatin * 4}${oNonLatin * 4}"
-      "${nonLatin * 4}${oNonLatin * 4}"
-      "${nonLatin * 4}${oNonLatin * 4}"
-      "${nonLatin * 4}${oNonLatin * 4}"
-      "${nonLatin * 4}${oNonLatin * 4}"
-      "${nonLatin * 4}${oNonLatin * 4}"
-      "${nonLatin * 4}${oNonLatin * 4}"
-      "${nonLatin * 4}${oNonLatin * 4}");
-  // Mixed.
-  Expect.equals(latin * 2 + nonLatin * 2, "$latin$oLatin$nonLatin$oNonLatin");
-  Expect.equals(nonLatin * 2 + latin * 2, "$nonLatin$oNonLatin$latin$oLatin");
-  Expect.equals(
-      (latin * 2 + nonLatin * 2) * 8,
-      "$latin$oLatin$nonLatin$oNonLatin"
-      "$latin$oLatin$nonLatin$oNonLatin"
-      "$latin$oLatin$nonLatin$oNonLatin"
-      "$latin$oLatin$nonLatin$oNonLatin"
-      "$latin$oLatin$nonLatin$oNonLatin"
-      "$latin$oLatin$nonLatin$oNonLatin"
-      "$latin$oLatin$nonLatin$oNonLatin"
-      "$latin$oLatin$nonLatin$oNonLatin");
-  Expect.equals(
-      (nonLatin * 2 + latin * 2) * 8,
-      "$nonLatin$oNonLatin$latin$oLatin"
-      "$nonLatin$oNonLatin$latin$oLatin"
-      "$nonLatin$oNonLatin$latin$oLatin"
-      "$nonLatin$oNonLatin$latin$oLatin"
-      "$nonLatin$oNonLatin$latin$oLatin"
-      "$nonLatin$oNonLatin$latin$oLatin"
-      "$nonLatin$oNonLatin$latin$oLatin"
-      "$nonLatin$oNonLatin$latin$oLatin");
-
-  // All combinations
-  var o1 = new Stringable("x");
-  var o2 = new Stringable("\ufeff");
-
-  Expect.equals("a\u2000x\ufeff", "${"a"}${"\u2000"}${o1}${o2}");
-  Expect.equals("a\u2000\ufeffx", "${"a"}${"\u2000"}${o2}${o1}");
-  Expect.equals("ax\u2000\ufeff", "${"a"}${o1}${"\u2000"}${o2}");
-  Expect.equals("ax\ufeff\u2000", "${"a"}${o1}${o2}${"\u2000"}");
-  Expect.equals("a\ufeffx\u2000", "${"a"}${o2}${o1}${"\u2000"}");
-  Expect.equals("a\ufeff\u2000x", "${"a"}${o2}${"\u2000"}${o1}");
-
-  Expect.equals("\u2000ax\ufeff", "${"\u2000"}${"a"}${o1}${o2}");
-  Expect.equals("\u2000a\ufeffx", "${"\u2000"}${"a"}${o2}${o1}");
-  Expect.equals("xa\u2000\ufeff", "${o1}${"a"}${"\u2000"}${o2}");
-  Expect.equals("xa\ufeff\u2000", "${o1}${"a"}${o2}${"\u2000"}");
-  Expect.equals("\ufeffax\u2000", "${o2}${"a"}${o1}${"\u2000"}");
-  Expect.equals("\ufeffa\u2000x", "${o2}${"a"}${"\u2000"}${o1}");
-
-  Expect.equals("\u2000xa\ufeff", "${"\u2000"}${o1}${"a"}${o2}");
-  Expect.equals("\u2000\ufeffax", "${"\u2000"}${o2}${"a"}${o1}");
-  Expect.equals("x\u2000a\ufeff", "${o1}${"\u2000"}${"a"}${o2}");
-  Expect.equals("x\ufeffa\u2000", "${o1}${o2}${"a"}${"\u2000"}");
-  Expect.equals("\ufeffxa\u2000", "${o2}${o1}${"a"}${"\u2000"}");
-  Expect.equals("\ufeff\u2000ax", "${o2}${"\u2000"}${"a"}${o1}");
-
-  Expect.equals("\u2000x\ufeffa", "${"\u2000"}${o1}${o2}${"a"}");
-  Expect.equals("\u2000\ufeffxa", "${"\u2000"}${o2}${o1}${"a"}");
-  Expect.equals("x\u2000\ufeffa", "${o1}${"\u2000"}${o2}${"a"}");
-  Expect.equals("x\ufeff\u2000a", "${o1}${o2}${"\u2000"}${"a"}");
-  Expect.equals("\ufeffx\u2000a", "${o2}${o1}${"\u2000"}${"a"}");
-  Expect.equals("\ufeff\u2000xa", "${o2}${"\u2000"}${o1}${"a"}");
-}
diff --git a/tests/language/string_interpolation1_test.dart b/tests/language/string_interpolation1_test.dart
deleted file mode 100644
index 821e7bc..0000000
--- a/tests/language/string_interpolation1_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A dollar must be followed by a "{" or an identifier.
-
-class A {
-  final String str;
-  const A(this.str);
-}
-
-class StringInterpolation1NegativeTest {
-  // Dollar not followed by "{" or identifier.
-  static const DOLLAR = const A("$"); //# 01: syntax error
-  static testMain() {
-    print(DOLLAR); //# 01: continued
-  }
-}
-
-main() {
-  StringInterpolation1NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolation2_test.dart b/tests/language/string_interpolation2_test.dart
deleted file mode 100644
index a1e048c..0000000
--- a/tests/language/string_interpolation2_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A dollar must be followed by a "{" or an identifier.
-
-class StringInterpolation2NegativeTest {
-  static testMain() {
-    // Dollar followed by "/".
-    print('C;Y1;X4;K"$/Month"'); //# 01: syntax error
-  }
-}
-
-main() {
-  StringInterpolation2NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolation3_test.dart b/tests/language/string_interpolation3_test.dart
deleted file mode 100644
index c58ad6a..0000000
--- a/tests/language/string_interpolation3_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A dollar must be followed by a "{" or an identifier.
-
-class StringInterpolation3NegativeTest {
-  static testMain() {
-    // Dollar followed by a number.
-    print('F;P4;F$2R'); //# 01: syntax error
-  }
-}
-
-main() {
-  StringInterpolation3NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolation4_test.dart b/tests/language/string_interpolation4_test.dart
deleted file mode 100644
index ab4b2e7..0000000
--- a/tests/language/string_interpolation4_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A dollar must be followed by a "{" or an identifier.
-
-class StringInterpolation4NegativeTest {
-  static testMain() {
-    // Dollar not followed by "{" or identifier.
-    print("-" + "$" + "foo"); //# 01: syntax error
-  }
-}
-
-main() {
-  StringInterpolation4NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolation5_test.dart b/tests/language/string_interpolation5_test.dart
deleted file mode 100644
index e545012..0000000
--- a/tests/language/string_interpolation5_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A dollar must be followed by a "{" or an identifier.
-
-class StringInterpolation5NegativeTest {
-  static testMain() {
-    // Dollar followed by a number.
-    print("$1,000"); //# 01: syntax error
-  }
-}
-
-main() {
-  StringInterpolation5NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolation6_test.dart b/tests/language/string_interpolation6_test.dart
deleted file mode 100644
index c6912c8..0000000
--- a/tests/language/string_interpolation6_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// A dollar must be followed by a "{" or an identifier.
-
-class StringInterpolation6NegativeTest {
-  static testMain() {
-    // Dollar not followed by "{" or identifier.
-    String regexp;
-    regexp = "^(\\d\\d?)[-/](\\d\\d?)$"; //# 01: syntax error
-    print(regexp);
-  }
-}
-
-main() {
-  StringInterpolation6NegativeTest.testMain();
-}
diff --git a/tests/language/string_interpolation7_test.dart b/tests/language/string_interpolation7_test.dart
deleted file mode 100644
index af8e276..0000000
--- a/tests/language/string_interpolation7_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program testing string interpolation with toString on custom
-// classes and on null.
-
-class A {
-  const A();
-  String toString() {
-    return "A";
-  }
-}
-
-class StringInterpolation7Test {
-  static testMain() {
-    A a = new A();
-    Expect.equals("A + A", "$a + $a");
-    a = null;
-    Expect.equals("null", "$a");
-  }
-}
-
-main() {
-  StringInterpolation7Test.testMain();
-}
diff --git a/tests/language/string_interpolation8_test.dart b/tests/language/string_interpolation8_test.dart
deleted file mode 100644
index a3c09bc..0000000
--- a/tests/language/string_interpolation8_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-//
-// Allow assignment of string interpolation to a static const field
-
-import "package:expect/expect.dart";
-
-class A {
-  static const x = 1;
-  static const y = "Two is greater than ${x}";
-}
-
-main() {
-  Expect.identical("Two is greater than 1", A.y);
-}
diff --git a/tests/language/string_interpolation9_test.dart b/tests/language/string_interpolation9_test.dart
deleted file mode 100644
index 624414e..0000000
--- a/tests/language/string_interpolation9_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-//
-// Almost valid string interpolation syntax.
-
-main() {
-  var x;
-
-  x = "$"; //   //# 1: syntax error
-  x = "x$"; //  //# 2: syntax error
-  x = "$x$"; // //# 3: syntax error
-  x = "$$x"; // //# 4: syntax error
-  x = "$ "; //  //# 5: syntax error
-
-  x = '$'; //   //# 6: syntax error
-  x = 'x$'; //  //# 7: syntax error
-  x = '$x$'; // //# 8: syntax error
-  x = '$$x'; // //# 9: syntax error
-  x = '$ '; //  //# 10: syntax error
-
-  x = """$"""; //   //# 11: syntax error
-  x = """x$"""; //  //# 12: syntax error
-  x = """$x$"""; // //# 13: syntax error
-  x = """$$x"""; // //# 14: syntax error
-  x = """$ """; //  //# 15: syntax error
-
-  x = '''$'''; //   //# 16: syntax error
-  x = '''x$'''; //  //# 17: syntax error
-  x = '''$x$'''; // //# 18: syntax error
-  x = '''$$x'''; // //# 19: syntax error
-  x = '''$ '''; //  //# 20: syntax error
-
-  return x;
-}
diff --git a/tests/language/string_interpolation_and_buffer_test.dart b/tests/language/string_interpolation_and_buffer_test.dart
deleted file mode 100644
index 7f72246..0000000
--- a/tests/language/string_interpolation_and_buffer_test.dart
+++ /dev/null
@@ -1,115 +0,0 @@
-// 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.
-
-// Test to ensure that StringBuffer and string interpolation behaves
-// the same and fail fast.
-
-import "package:expect/expect.dart";
-
-class ToStringWrapper {
-  final value;
-
-  ToStringWrapper(this.value);
-
-  toString() => value;
-}
-
-wrap(value) => new ToStringWrapper(value);
-
-final bool checkedMode = computeCheckedMode();
-bool computeCheckedMode() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-main() {
-  interpolate(object) {
-    var result;
-    if (checkedMode && object != null) {
-      try {
-        result = '${wrap(object)}';
-      } on TypeError {
-        return 'Error';
-      } on ArgumentError {
-        return 'Error'; // Checked mode.
-      }
-    } else {
-      try {
-        result = '${wrap(object)}';
-      } on ArgumentError {
-        return 'Error';
-      }
-    }
-    Expect.isTrue(result is String);
-    return 'Success';
-  }
-
-  buffer(object) {
-    var sb;
-    if (checkedMode && object != null) {
-      try {
-        sb = new StringBuffer()..write(wrap(object));
-      } on TypeError {
-        return 'Error';
-      } on ArgumentError {
-        return 'Error'; // Checked mode.
-      }
-    } else {
-      try {
-        sb = new StringBuffer()..write(wrap(object));
-      } on ArgumentError {
-        return 'Error';
-      }
-      Expect.isTrue(sb.toString() is String);
-    }
-    return 'Success';
-  }
-
-  initBuffer(object) {
-    var sb;
-    if (checkedMode && object != null) {
-      try {
-        sb = new StringBuffer(wrap(object));
-      } on TypeError {
-        return 'Error';
-      } on ArgumentError {
-        return 'Error'; // Checked mode.
-      }
-    } else {
-      try {
-        sb = new StringBuffer(wrap(object));
-      } on ArgumentError {
-        return 'Error';
-      }
-      Expect.isTrue(sb.toString() is String);
-    }
-    return 'Success';
-  }
-
-  Expect.equals('Error', interpolate(null));
-  Expect.equals('Success', interpolate(""));
-  Expect.equals('Success', interpolate("string"));
-  Expect.equals('Error', interpolate([]));
-  Expect.equals('Error', interpolate([1]));
-  Expect.equals('Error', interpolate(new Object()));
-
-  Expect.equals('Error', buffer(null));
-  Expect.equals('Success', buffer(""));
-  Expect.equals('Success', buffer("string"));
-  Expect.equals('Error', buffer([]));
-  Expect.equals('Error', buffer([1]));
-  Expect.equals('Error', buffer(new Object()));
-
-  Expect.equals('Error', initBuffer(null));
-  Expect.equals('Success', initBuffer(""));
-  Expect.equals('Success', initBuffer("string"));
-  Expect.equals('Error', initBuffer([]));
-  Expect.equals('Error', initBuffer([1]));
-  Expect.equals('Error', initBuffer(new Object()));
-}
diff --git a/tests/language/string_interpolation_newline_test.dart b/tests/language/string_interpolation_newline_test.dart
deleted file mode 100644
index 91ad04f..0000000
--- a/tests/language/string_interpolation_newline_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2014, 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.
-
-/// Test of newlines in interpolated strings.
-
-main() {
-  String expected = '[[{{}: {}}]]';
-  String a = "${ [ "${ [ '${ { '${ { } }' : { } } }' ] }" ] }";
-  String b = "${ [ "${ [ '${ { '${
-      { } }' : { } } }' ] }" ] }";
-  String c = "${ [ "${ [ '${ { '${
-      {
-      } }' : {
-      } } }' ] }" ] }";
-  if (expected != a) throw 'expecteda: $expected != $a';
-  if (a != b) throw 'ab: $a != $b';
-  if (b != c) throw 'bc: $b != $c';
-  print('$a$b$c');
-}
diff --git a/tests/language/string_interpolation_test.dart b/tests/language/string_interpolation_test.dart
deleted file mode 100644
index ae99750..0000000
--- a/tests/language/string_interpolation_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Tests for string interpolation
-class StringInterpolationTest {
-  StringInterpolationTest() {}
-
-  static void m() {}
-
-  static const int i = 1;
-  static const String a = "<hi>";
-
-  int j;
-  int k;
-
-  static testMain(bool alwaysFalse) {
-    var test = new StringInterpolationTest();
-    test.j = 3;
-    test.k = 5;
-
-    // simple string
-    Expect.equals(" hi ", " hi ");
-
-    var c1 = '1';
-    var c2 = '2';
-    var c3 = '3';
-    var c4 = '4';
-    // no chars before/after/between embedded expressions
-    Expect.equals(" 1", " ${c1}");
-    Expect.equals("1 ", "${c1} ");
-    Expect.equals("1", "${c1}");
-    Expect.equals("12", "${c1}${c2}");
-    Expect.equals("12 34", "${c1}${c2} ${c3}${c4}");
-
-    // embedding static fields
-    Expect.equals(" hi 1 ", " hi ${i} ");
-    Expect.equals(" hi <hi> ", " hi ${a} ");
-
-    // embedding method parameters
-    Expect.equals("param = 9", test.embedParams(9));
-
-    // embedding a class field
-    Expect.equals("j = 3", test.embedSingleField());
-
-    // embedding more than one (non-constant) expression
-    Expect.equals(" hi 1 <hi>", " hi ${i} ${a}");
-    Expect.equals("j = 3; k = 5", test.embedMultipleFields());
-
-    // escaping $ - doesn't start the embedded expression
-    Expect.equals("\$", "escaped     \${3+2}"[12]);
-    Expect.equals("{", "escaped     \${3+2}"[13]);
-    Expect.equals("3", "escaped     \${3+2}"[14]);
-    Expect.equals("+", "escaped     \${3+2}"[15]);
-    Expect.equals("2", "escaped     \${3+2}"[16]);
-    Expect.equals("}", "escaped     \${3+2}"[17]);
-
-    if (alwaysFalse) {
-      "${i.toHorse()}"; //# 01: static type warning
-    }
-
-    Expect.equals("${m}", "$m");
-  }
-
-  String embedParams(int z) {
-    return "param = ${z}";
-  }
-
-  String embedSingleField() {
-    return "j = ${j}";
-  }
-
-  String embedMultipleFields() {
-    return "j = ${j}; k = ${k}";
-  }
-}
-
-main() {
-  StringInterpolationTest.testMain(false);
-}
diff --git a/tests/language/string_intrinsics_test.dart b/tests/language/string_intrinsics_test.dart
deleted file mode 100644
index faa672f..0000000
--- a/tests/language/string_intrinsics_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-// Replace with shared test once interface issues clarified.
-// Test various String intrinsics
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  var oneByte = "Hello world";
-  var empty = "";
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(11, testLength(oneByte));
-    Expect.equals(0, testLength(empty));
-    Expect.isFalse(testIsEmpty(oneByte));
-    Expect.isTrue(testIsEmpty(empty));
-  }
-}
-
-testLength(s) {
-  return s.length;
-}
-
-testIsEmpty(s) {
-  return s.isEmpty;
-}
diff --git a/tests/language/string_join_test.dart b/tests/language/string_join_test.dart
deleted file mode 100644
index eb576d8..0000000
--- a/tests/language/string_join_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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.
-// Regression test ensuring that only ObjectArrays are handed to the VM code.
-
-import "package:expect/expect.dart";
-
-class StringJoinTest {
-  static testMain() {
-    List<String> ga = new List<String>();
-    ga.add("a");
-    ga.add("b");
-    Expect.equals("ab", ga.join());
-    Expect.equals("ab", ga.join(""));
-  }
-}
-
-main() {
-  StringJoinTest.testMain();
-}
diff --git a/tests/language/string_literals_test.dart b/tests/language/string_literals_test.dart
deleted file mode 100644
index 6b4f4f5..0000000
--- a/tests/language/string_literals_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-main() {
-  var expect = new String.fromCharCodes(
-      [0, 0x0a, 0x0d, 0x7f, 0xff, 0xffff, 0xd800, 0xdc00, 0xdbff, 0xdfff]);
-  test(string) {
-    Expect.equals(expect, string);
-  }
-
-  // Plain escapes of code points.
-  test("\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}");
-  test("""\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}""");
-  test('\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}');
-  test('''\x00\x0a\x0d\x7f\xff\uffff\u{10000}\u{10ffff}''');
-  // Plain escapes of individual code units.
-  test("\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff");
-  test("""\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff""");
-  test('\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff');
-  test('''\x00\x0a\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff''');
-  // Insert newline into multiline string.
-  test("""\x00
-\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff""");
-  test('''\x00
-\x0d\x7f\xff\uffff\ud800\udc00\udbff\udfff''');
-  // Extract code points from multi-character escape string.
-  test("\x00\x0a\x0d\x7f\xff\uffff"
-      "${"\u{10000}"[0]}${"\u{10000}"[1]}"
-      "${"\u{10FFFF}"[0]}${"\u{10FFFF}"[1]}");
-  test("\x00\x0a\x0d\x7f\xff\uffff" + "\ud800" + "\udc00\udbff" + "\udfff");
-  // Single line string over multiple lines with newlines inside interpolation.
-  test("\x00\x0a\x0d\x7f\xff${
-           ""
-       }\uffff\ud800\udc00\udbff\udfff");
-}
diff --git a/tests/language/string_no_operator_test.dart b/tests/language/string_no_operator_test.dart
deleted file mode 100644
index de69cfa..0000000
--- a/tests/language/string_no_operator_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2015, 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';
-
-main() {
-  var x = "x";
-  var y = "y";
-  Expect.throws(() => x < y);
-  Expect.throws(() => x <= y);
-  Expect.throws(() => x > y);
-  Expect.throws(() => x >= y);
-  Expect.throws(() => x - y);
-  Expect.throws(() => x * y);
-  Expect.throws(() => x / y);
-  Expect.throws(() => x ~/ y);
-  Expect.throws(() => x % y);
-  Expect.throws(() => x >> y);
-  Expect.throws(() => x << y);
-  Expect.throws(() => x & y);
-  Expect.throws(() => x | y);
-  Expect.throws(() => x ^ y);
-  Expect.throws(() => -x);
-  Expect.throws(() => ~x);
-}
diff --git a/tests/language/string_optimizations_test.dart b/tests/language/string_optimizations_test.dart
deleted file mode 100644
index f5e1b0f..0000000
--- a/tests/language/string_optimizations_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js's type inferrer, that used to not
-// correctly infer optional named parameters.
-
-import "package:expect/expect.dart";
-import "compiler_annotations.dart";
-
-@DontInline()
-foo({path}) {
-  () => 42;
-  return path.toString();
-}
-
-@DontInline()
-bar({path}) {
-  () => 42;
-  return path;
-}
-
-main() {
-  var a = [foo(path: '42'), foo(), 42, bar(path: '54')];
-  Expect.isTrue(a[1] is String);
-  Expect.throws(() => bar().concat('54'), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/string_overflow.dart b/tests/language/string_overflow.dart
deleted file mode 100644
index 8b01e19..0000000
--- a/tests/language/string_overflow.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test to ensure that the VM does not have an integer overflow issue
-// when concatenating strings.
-
-import "package:expect/expect.dart";
-
-main() {
-  String a = "a";
-  for (; a.length < 256 * 1024 * 1024;) a = a + a;
-
-  var exception_thrown = false;
-  try {
-    var concat = "$a$a$a$a$a$a$a$a";
-  } on OutOfMemoryError catch (exc) {
-    exception_thrown = true;
-  }
-  Expect.isTrue(exception_thrown);
-}
diff --git a/tests/language/string_split_test.dart b/tests/language/string_split_test.dart
deleted file mode 100644
index c3c10d6..0000000
--- a/tests/language/string_split_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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.
-// Issue 24043.
-
-import "package:expect/expect.dart";
-
-class EvilMatch implements Match {
-  int get start => 100000000;
-  int get end => 3;
-  bool noSuchMethod(Invocation im) {} // To appease dartanalyzer.
-}
-
-class EvilIterator implements Iterator {
-  bool moveNext() => true;
-  EvilMatch get current => new EvilMatch();
-}
-
-class EvilIterable extends Iterable {
-  Iterator get iterator => new EvilIterator();
-}
-
-class EvilPattern implements Pattern {
-  Iterable allMatches(String s, [int start = 0]) => new EvilIterable();
-  bool noSuchMethod(Invocation im) {} // To appease dartanalyzer.
-}
-
-void main() {
-  Expect.throws(
-      () => "foo".split(new EvilPattern())[0].length, (e) => e is RangeError);
-}
diff --git a/tests/language/string_supertype_checked_test.dart b/tests/language/string_supertype_checked_test.dart
deleted file mode 100644
index 75a2a6b..0000000
--- a/tests/language/string_supertype_checked_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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";
-
-// This tests a bug in dart2js which caused the compiler to emit bad
-// type assertions for supertypes of String.
-
-class A implements Comparable {
-  int value;
-
-  A(this.value);
-
-  int compareTo(Comparable other) {
-    A o = promote(other);
-    return value.compareTo(o.value);
-  }
-
-  A promote(var other) {
-    return other;
-  }
-}
-
-main() {
-  var a = new A(1);
-  var b = new A(2);
-  Expect.equals(-1, a.compareTo(b));
-}
diff --git a/tests/language/string_test.dart b/tests/language/string_test.dart
deleted file mode 100644
index 3718355..0000000
--- a/tests/language/string_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2011, 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.
-// Replace with shared test once interface issues clarified.
-
-import "package:expect/expect.dart";
-
-class StringTest {
-  static testMain() {
-    testCodePoints();
-    testNoSuchMethod();
-    testStringsJoin();
-    testCharCodes();
-  }
-
-  static testCodePoints() {
-    String str = "string";
-    for (int i = 0; i < str.length; i++) {
-      Expect.equals(true, str[i] is String);
-      Expect.equals(true, str.codeUnitAt(i) is int);
-    }
-  }
-
-  static testStringsJoin() {
-    List<String> a = new List<String>(2);
-    a[0] = "Hello";
-    a[1] = "World";
-    String s = a.join("*^*");
-    Expect.equals("Hello*^*World", s);
-  }
-
-  static testNoSuchMethod() {
-    String a = "Hello";
-    bool exception_caught = false;
-    try {
-      a[1] = 12; // Throw exception.
-    } on NoSuchMethodError catch (e) {
-      exception_caught = true;
-    }
-    Expect.equals(true, exception_caught);
-  }
-
-  static testCharCodes() {
-    String s = new String.fromCharCodes(const [0x41, 0xC1, 0x424]);
-    Expect.equals("A", s[0]);
-    Expect.equals(0x424, s.codeUnitAt(2));
-  }
-}
-
-main() {
-  StringTest.testMain();
-}
diff --git a/tests/language/string_unicode1_negative_test.dart b/tests/language/string_unicode1_negative_test.dart
deleted file mode 100644
index 72c06e14..0000000
--- a/tests/language/string_unicode1_negative_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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 StringUnicode1NegativeTest {
-
-  static testMain() {
-    // (backslash) uXXXX must have exactly 4 hex digits
-    String str = "Foo\u00";
-    str = "Foo\uDEEMBar";
-  }
-}
-
-main() {
-  StringUnicode1NegativeTest.testMain();
-}
diff --git a/tests/language/string_unicode2_negative_test.dart b/tests/language/string_unicode2_negative_test.dart
deleted file mode 100644
index c38040c..0000000
--- a/tests/language/string_unicode2_negative_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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 StringUnicode2NegativeTest {
-
-  static testMain() {
-    // \u{X*} should have 1-6 hex digits
-    String str = "Foo\u{}Bar";
-    str = "Foo\u{000000000}Bar";
-    str = "Foo\u{DEAF!}Bar";
-  }
-}
-
-main() {
-  StringUnicode2NegativeTest.testMain();
-}
diff --git a/tests/language/string_unicode3_negative_test.dart b/tests/language/string_unicode3_negative_test.dart
deleted file mode 100644
index 15cdf38..0000000
--- a/tests/language/string_unicode3_negative_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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 StringUnicode3NegativeTest {
-
-  static testMain() {
-    // (backslash) xXX must have exactly 2 hex digits
-    String str = "Foo\x0";
-    str = "Foo\xF Bar";
-  }
-}
-
-main() {
-  StringUnicode3NegativeTest.testMain();
-}
diff --git a/tests/language/string_unicode4_negative_test.dart b/tests/language/string_unicode4_negative_test.dart
deleted file mode 100644
index c7bdf60..0000000
--- a/tests/language/string_unicode4_negative_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2011, 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 StringUnicode4NegativeTest {
-
-  static testMain() {
-    // Unicode escapes must refer to valid Unicode points.
-    String str = "Foo\u{FFFFFF}";
-  }
-}
-
-main() {
-  StringUnicode4NegativeTest.testMain();
-}
diff --git a/tests/language/sub/sub.dart b/tests/language/sub/sub.dart
deleted file mode 100644
index 8ad0cde..0000000
--- a/tests/language/sub/sub.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-library sub;
-
-import '../cyclic_import_test.dart';
-import 'package:expect/expect.dart';
-
-subMain() {
-  Expect.equals(42, value);
-}
diff --git a/tests/language/substring_test.dart b/tests/language/substring_test.dart
deleted file mode 100644
index 09cde06..0000000
--- a/tests/language/substring_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart version of two-argument Ackermann-Peter function.
-
-import "package:expect/expect.dart";
-
-main() {
-  try {
-    print("abcdef".substring(1.5, 3.5)); //   //# 01: static type warning
-    Expect.fail("Should have thrown an exception"); // //# 01: continued
-  } on TypeError catch (e) {
-    // OK.
-  } on ArgumentError catch (e) {
-    // OK.
-  }
-}
diff --git a/tests/language/super_abstract_method_test.dart b/tests/language/super_abstract_method_test.dart
deleted file mode 100644
index 19c877a..0000000
--- a/tests/language/super_abstract_method_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that a method overridden by an abstract method is called at
-// runtime.
-
-import "package:expect/expect.dart";
-
-class Base {
-  foo() => 42;
-}
-
-abstract class A extends Base {
-  foo();
-}
-
-class B extends A {
-  testSuperCall() => super.foo();
-  foo() =>
-      42; // required since if is removed, then a warning is introduced on 'B' above
-}
-
-main() {
-  Expect.equals(42, new B().foo());
-  Expect.equals(42, new B().testSuperCall());
-}
diff --git a/tests/language/super_all_named_constructor_test.dart b/tests/language/super_all_named_constructor_test.dart
deleted file mode 100644
index 37b15d7..0000000
--- a/tests/language/super_all_named_constructor_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing implicit invocation of super constructor with all
-// named parameters.
-
-import "package:expect/expect.dart";
-
-var res = 0;
-
-class A {
-  A([v = 1]) {
-    res += v;
-  }
-}
-
-class B extends A {
-  B([v = 2]) {
-    res += v;
-  }
-}
-
-main() {
-  new B();
-  Expect.equals(3, res);
-}
diff --git a/tests/language/super_assign_test.dart b/tests/language/super_assign_test.dart
deleted file mode 100644
index 562c43c..0000000
--- a/tests/language/super_assign_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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";
-
-class A {
-  int x;
-}
-
-class C extends A {
-  void setX(int value) {
-    super.x = value;
-  }
-}
-
-main() {
-  A a = new C();
-  a.x = 37;
-  a.setX(42);
-  Expect.equals(42, a.x);
-}
diff --git a/tests/language/super_bound_closure_test.dart b/tests/language/super_bound_closure_test.dart
deleted file mode 100644
index 279c838..0000000
--- a/tests/language/super_bound_closure_test.dart
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) 2014, 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";
-
-@AssumeDynamic()
-@NoInline()
-confuse(x) => x;
-
-class A {
-  bar([var optional = 1]) => 498 + optional;
-  bar2({namedOptional: 2}) => 40 + namedOptional;
-  bar3(x, [var optional = 3]) => x + 498 + optional;
-  bar4(x, {namedOptional: 4}) => 422 + x + namedOptional;
-
-  // Gee is the same as bar, but we make sure that gee is used. Potentially
-  // this yields different code if the redirecting stub exists.
-  gee([var optional = 1]) => 498 + optional;
-  gee2({namedOptional: 2}) => 40 + namedOptional;
-  gee3(x, [var optional = 3]) => x + 498 + optional;
-  gee4(x, {namedOptional: 4}) => 422 + x + namedOptional;
-
-  // Use identifiers that could be intercepted.
-  add([var optional = 33]) => 1234 + optional;
-  trim({namedOptional: 22}) => 1313 + namedOptional;
-  sublist(x, [optional = 44]) => 4321 + optional + x;
-  splitMapJoin(x, {onMatch: 55, onNonMatch: 66}) =>
-      111 + x + onMatch + onNonMatch;
-
-  // Other interceptable identifiers, but all of them are used.
-  shuffle([var optional = 121]) => 12342 + optional;
-  toList({growable: 2233}) => 13131 + growable;
-  lastIndexOf(x, [optional = 424]) => 14321 + optional + x;
-  lastWhere(x, {orElse: 555}) => x + 1213 + 555;
-}
-
-class B extends A {
-  // The closure `super.bar` is invoked without the optional argument.
-  // Dart2js must not generate a `bar$0 => bar$1(null)` closure, since that
-  // would redirect to B's `bar$1`. Instead it must enforce that `bar$0` in
-  // `A` redirects to A's bar$1.
-  foo() => confuse(super.bar)();
-  foo2() => confuse(super.bar)(2);
-  foo3() => confuse(super.bar2)();
-  foo4() => confuse(super.bar2)(namedOptional: 77);
-  foo5() => confuse(super.bar3)(-3);
-  foo6() => confuse(super.bar3)(-11, -19);
-  foo7() => confuse(super.bar4)(0);
-  foo8() => confuse(super.bar4)(3, namedOptional: 77);
-
-  fooGee() => confuse(super.gee)();
-  fooGee2() => confuse(super.gee)(2);
-  fooGee3() => confuse(super.gee2)();
-  fooGee4() => confuse(super.gee2)(namedOptional: 77);
-  fooGee5() => confuse(super.gee3)(-3);
-  fooGee6() => confuse(super.gee3)(-11, -19);
-  fooGee7() => confuse(super.gee4)(0);
-  fooGee8() => confuse(super.gee4)(3, namedOptional: 77);
-
-  fooIntercept() => confuse(super.add)();
-  fooIntercept2() => confuse(super.add)(2);
-  fooIntercept3() => confuse(super.trim)();
-  fooIntercept4() => confuse(super.trim)(namedOptional: 77);
-  fooIntercept5() => confuse(super.sublist)(-3);
-  fooIntercept6() => confuse(super.sublist)(-11, -19);
-  fooIntercept7() => confuse(super.splitMapJoin)(0);
-  fooIntercept8() => confuse(super.splitMapJoin)(3, onMatch: 77, onNonMatch: 8);
-
-  fooIntercept21() => confuse(super.shuffle)();
-  fooIntercept22() => confuse(super.shuffle)(2);
-  fooIntercept23() => confuse(super.toList)();
-  fooIntercept24() => confuse(super.toList)(growable: 77);
-  fooIntercept25() => confuse(super.lastIndexOf)(-3);
-  fooIntercept26() => confuse(super.lastIndexOf)(-11, -19);
-  fooIntercept27() => confuse(super.lastWhere)(0);
-  fooIntercept28() => confuse(super.lastWhere)(3, orElse: 77);
-
-  bar([var optional]) => -1; //       //# 01: static type warning
-  bar2({ namedOptional }) => -1; //   //# 01: continued
-  bar3(x, [var optional]) => -1; //   //# 01: continued
-  bar4(x, { namedOptional }) => -1; //# 01: continued
-
-  gee([var optional]) => -1; //       //# 01: continued
-  gee2({ namedOptional }) => -1; //   //# 01: continued
-  gee3(x, [var optional]) => -1; //   //# 01: continued
-  gee4(x, { namedOptional }) => -1; //# 01: continued
-
-  add([var optional = 33]) => -1;
-  trim({namedOptional: 22}) => -1;
-  sublist(x, [optional = 44]) => -1;
-  splitMapJoin(x, {onMatch: 55, onNonMatch: 66}) => -1;
-
-  shuffle([var optional = 121]) => -1;
-  toList({growable: 2233}) => -1;
-  lastIndexOf(x, [optional = 424]) => -1;
-  lastWhere(x, {orElse: 555}) => -1;
-}
-
-main() {
-  var list = [new A(), new B(), [], "foo"];
-  var a = list[confuse(0)];
-  var b = list[confuse(1)];
-  var ignored = list[confuse(2)];
-  var ignored2 = list[confuse(3)];
-
-  var t = b.gee() + b.gee2() + b.gee3(9) + b.gee4(19);
-  Expect.equals(-4, t); //# 01: continued
-  t = b.shuffle() + b.toList() + b.lastIndexOf(1) + b.lastWhere(2);
-  Expect.equals(-4, t);
-
-  Expect.equals(499, b.foo()); // //# 01: continued
-  Expect.equals(500, b.foo2()); //# 01: continued
-  Expect.equals(42, b.foo3()); // //# 01: continued
-  Expect.equals(117, b.foo4()); //# 01: continued
-  Expect.equals(498, b.foo5()); //# 01: continued
-  Expect.equals(468, b.foo6()); //# 01: continued
-  Expect.equals(426, b.foo7()); //# 01: continued
-  Expect.equals(502, b.foo8()); //# 01: continued
-
-  Expect.equals(499, b.fooGee()); // //# 01: continued
-  Expect.equals(500, b.fooGee2()); //# 01: continued
-  Expect.equals(42, b.fooGee3()); // //# 01: continued
-  Expect.equals(117, b.fooGee4()); //# 01: continued
-  Expect.equals(498, b.fooGee5()); //# 01: continued
-  Expect.equals(468, b.fooGee6()); //# 01: continued
-  Expect.equals(426, b.fooGee7()); //# 01: continued
-  Expect.equals(502, b.fooGee8()); //# 01: continued
-
-  Expect.equals(1267, b.fooIntercept());
-  Expect.equals(1236, b.fooIntercept2());
-  Expect.equals(1335, b.fooIntercept3());
-  Expect.equals(1390, b.fooIntercept4());
-  Expect.equals(4362, b.fooIntercept5());
-  Expect.equals(4291, b.fooIntercept6());
-  Expect.equals(232, b.fooIntercept7());
-  Expect.equals(199, b.fooIntercept8());
-
-  Expect.equals(12463, b.fooIntercept21());
-  Expect.equals(12344, b.fooIntercept22());
-  Expect.equals(15364, b.fooIntercept23());
-  Expect.equals(13208, b.fooIntercept24());
-  Expect.equals(14742, b.fooIntercept25());
-  Expect.equals(14291, b.fooIntercept26());
-  Expect.equals(1768, b.fooIntercept27());
-  Expect.equals(1771, b.fooIntercept28());
-}
diff --git a/tests/language/super_call2_test.dart b/tests/language/super_call2_test.dart
deleted file mode 100644
index e3fd9dc..0000000
--- a/tests/language/super_call2_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Regresion test for bug discovered in frog handling super calls: the test case
-// mixes generics, super calls, and purposely doesn't allocate the base type.
-
-class C<T> {
-  foo(T a) {}
-}
-
-class D<T> extends C<T> {
-  foo(T a) {
-    super.foo(a); // used to be resolved incorrectly and generate this.foo(a).
-  }
-}
-
-main() {
-  var d = new D();
-  d.foo(null);
-}
diff --git a/tests/language/super_call3_test.dart b/tests/language/super_call3_test.dart
deleted file mode 100644
index 4213c52..0000000
--- a/tests/language/super_call3_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing implicit super calls with bad arguments or no default
-// constructor in super class.
-
-import "package:expect/expect.dart";
-
-class A {
-  A(
-    this.x // //# 01: compile-time error
-      );
-  final foo = 499;
-}
-
-class B extends A {}
-
-class B2 extends A {
-  B2();
-  B2.named() : this.x = 499;
-  var x;
-}
-
-class C {
-  C
-  .named // //# 02: compile-time error
-  ();
-  final foo = 499;
-}
-
-class D extends C {}
-
-class D2 extends C {
-  D2();
-  D2.named() : this.x = 499;
-  var x;
-}
-
-main() {
-  Expect.equals(499, new B().foo);
-  Expect.equals(499, new B2().foo);
-  Expect.equals(499, new B2.named().foo);
-  Expect.equals(499, new D().foo);
-  Expect.equals(499, new D2().foo);
-  Expect.equals(499, new D2.named().foo);
-}
diff --git a/tests/language/super_call4_test.dart b/tests/language/super_call4_test.dart
deleted file mode 100644
index 72bb851..0000000
--- a/tests/language/super_call4_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// 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 "dart:mirrors" show reflect;
-import "package:expect/expect.dart";
-
-// Checks that noSuchMethod is resolved in the super class and not in the
-// current class.
-
-class C {
-  E e = new E();
-
-  bool noSuchMethod(Invocation im) {
-    if (im.memberName == const Symbol('foo')) {
-      return im.positionalArguments.isEmpty &&
-          im.namedArguments.isEmpty &&
-          reflect(e).delegate(im);
-    }
-    if (im.memberName == const Symbol('bar')) {
-      return im.positionalArguments.length == 1 &&
-          im.namedArguments.isEmpty &&
-          reflect(e).delegate(im);
-    }
-    if (im.memberName == const Symbol('baz')) {
-      return im.positionalArguments.isEmpty &&
-          im.namedArguments.length == 1 &&
-          reflect(e).delegate(im);
-    }
-    if (im.memberName == const Symbol('boz')) {
-      return im.positionalArguments.length == 1 &&
-          im.namedArguments.length == 1 &&
-          reflect(e).delegate(im);
-    }
-    return false;
-  }
-}
-
-class D extends C {
-  bool noSuchMethod(Invocation im) {
-    return false;
-  }
-
-  test1() {
-    return super.foo();
-  }
-
-  test2() {
-    return super.bar(1);
-  }
-
-  test3() {
-    return super.baz(b: 2);
-  }
-
-  test4() {
-    return super.boz(1, c: 2);
-  }
-}
-
-class E {
-  bool foo() => true;
-  bool bar(int a) => a == 1;
-  bool baz({int b}) => b == 2;
-  bool boz(int a, {int c}) => a == 1 && c == 2;
-}
-
-main() {
-  var d = new D();
-  Expect.isTrue(d.test1());
-  Expect.isTrue(d.test2());
-  Expect.isTrue(d.test3());
-  Expect.isTrue(d.test4());
-}
diff --git a/tests/language/super_call_test.dart b/tests/language/super_call_test.dart
deleted file mode 100644
index 384ee61..0000000
--- a/tests/language/super_call_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing super calls
-
-import "package:expect/expect.dart";
-
-class A {
-  A() : field = 0 {}
-  int field;
-  incrField() {
-    field++;
-  }
-
-  timesX(v) {
-    return v * 2;
-  }
-}
-
-class B extends A {
-  incrField() {
-    field++;
-    super.incrField();
-  }
-
-  timesX(v) {
-    return super.timesX(v) * 3;
-  }
-
-  B() : super() {}
-}
-
-class SuperCallTest {
-  static testMain() {
-    var b = new B();
-    b.incrField();
-    Expect.equals(2, b.field);
-    Expect.equals(12, b.timesX(2));
-  }
-}
-
-main() {
-  SuperCallTest.testMain();
-}
diff --git a/tests/language/super_closure_test.dart b/tests/language/super_closure_test.dart
deleted file mode 100644
index ad159ce..0000000
--- a/tests/language/super_closure_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test program for testing access to super from closure.
-
-class Super {
-  var superX = "super";
-  get x => superX;
-}
-
-class Sub extends Super {
-  var subX = "sub";
-  get x => subX;
-
-  buildClosures() => [() => x, () => this.x, () => super.x];
-}
-
-main() {
-  var closures = new Sub().buildClosures();
-  Expect.equals(3, closures.length);
-  Expect.equals("sub", closures[0]());
-  Expect.equals("sub", closures[1]());
-  Expect.equals("super", closures[2]());
-}
diff --git a/tests/language/super_conditional_operator_test.dart b/tests/language/super_conditional_operator_test.dart
deleted file mode 100644
index 1c78d4a..0000000
--- a/tests/language/super_conditional_operator_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify that the ?. operator cannot be used with "super".
-
-class B {
-  B();
-  B.namedConstructor();
-  var field = 1;
-  method() => 1;
-}
-
-class C extends B {
-  C()
-    : super?.namedConstructor() //# 01: syntax error
-  ;
-
-  test() {
-    super?.field = 1; //# 02: syntax error
-    super?.field += 1; //# 03: syntax error
-    super?.field ??= 1; //# 04: syntax error
-    super?.field; //# 05: syntax error
-    1 * super?.field; //# 06: syntax error
-    -super?.field; //# 07: syntax error
-    ~super?.field; //# 08: syntax error
-    !super?.field; //# 09: syntax error
-    --super?.field; //# 10: syntax error
-    ++super?.field; //# 11: syntax error
-    super?.method(); //# 12: syntax error
-    1 * super?.method(); //# 13: syntax error
-    -super?.method(); //# 14: syntax error
-    ~super?.method(); //# 15: syntax error
-    !super?.method(); //# 16: syntax error
-    --super?.method(); //# 17: syntax error
-    ++super?.method(); //# 18: syntax error
-  }
-}
-
-main() {
-  new C().test();
-}
diff --git a/tests/language/super_field_2_test.dart b/tests/language/super_field_2_test.dart
deleted file mode 100644
index 82b899c..0000000
--- a/tests/language/super_field_2_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  var foo;
-  A(this.foo);
-
-  B_Sfoo() => 'A.B_Sfoo()';
-}
-
-class B extends A {
-  B(x) : super(x);
-
-  B_Sfoo() => super.foo;
-  BC_Sfoo() => super.foo;
-  BCD_Sfoo() => super.foo;
-}
-
-class C extends B {
-  var foo;
-  C(x, this.foo) : super(x);
-
-  BC_Sfoo() => super.foo;
-  BCD_Sfoo() => super.foo;
-}
-
-class D extends C {
-  D(x, y) : super(x, y);
-
-  BCD_Sfoo() => super.foo;
-}
-
-var inscrutable;
-
-main() {
-  inscrutable = (x) => x;
-
-  var b = new B('Ba');
-  var c = new C('Ca', 'Cc');
-  var d = new D('Da', 'Dc');
-
-  // Check access via plain getter.
-  var b_bc = inscrutable(true) ? b : c; // B, but compiler thinks can also be C
-  var c_bc = inscrutable(true) ? c : b; // C, but compiler thinks can also be B
-
-  Expect.equals('Ba', b.foo);
-  Expect.equals('Cc', c.foo);
-  Expect.equals('Dc', d.foo);
-  Expect.equals('Ba', b_bc.foo);
-  Expect.equals('Cc', c_bc.foo);
-
-  Expect.equals('Ba', inscrutable(b).foo);
-  Expect.equals('Cc', inscrutable(c).foo);
-  Expect.equals('Dc', inscrutable(d).foo);
-  Expect.equals('Ba', inscrutable(b_bc).foo);
-  Expect.equals('Cc', inscrutable(c_bc).foo);
-
-  // Check access via super.foo in various contexts
-  Expect.equals('Ba', b.B_Sfoo());
-  Expect.equals('Ca', c.B_Sfoo());
-  Expect.equals('Da', d.B_Sfoo());
-
-  Expect.equals('Ba', b.BC_Sfoo());
-  Expect.equals('Ca', c.BC_Sfoo());
-  Expect.equals('Da', d.BC_Sfoo());
-
-  Expect.equals('Ba', b.BCD_Sfoo());
-  Expect.equals('Ca', c.BCD_Sfoo());
-  Expect.equals('Dc', d.BCD_Sfoo());
-
-  Expect.equals('Ba', inscrutable(b).B_Sfoo());
-  Expect.equals('Ca', inscrutable(c).B_Sfoo());
-  Expect.equals('Da', inscrutable(d).B_Sfoo());
-
-  Expect.equals('Ba', inscrutable(b).BC_Sfoo());
-  Expect.equals('Ca', inscrutable(c).BC_Sfoo());
-  Expect.equals('Da', inscrutable(d).BC_Sfoo());
-
-  Expect.equals('Ba', inscrutable(b).BCD_Sfoo());
-  Expect.equals('Ca', inscrutable(c).BCD_Sfoo());
-  Expect.equals('Dc', inscrutable(d).BCD_Sfoo());
-}
diff --git a/tests/language/super_field_access_test.dart b/tests/language/super_field_access_test.dart
deleted file mode 100644
index 8cf465b..0000000
--- a/tests/language/super_field_access_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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";
-
-class A {
-  int foo;
-  A(this.foo);
-
-  raw$foo() => foo;
-  this$foo() => this.foo;
-}
-
-class B extends A {
-  int foo;
-  B.b1(x, this.foo) : super(x);
-  B.b2(x, y)
-      : this.foo = y,
-        super(x);
-  B.b3(x, y)
-      : super(x),
-        this.foo = y;
-
-  super$foo() => super.foo;
-  sum() => foo + super.foo;
-}
-
-test(b) {
-  Expect.equals(10, b.foo);
-  Expect.equals(10, b.raw$foo());
-  Expect.equals(10, b.this$foo());
-  Expect.equals(100, b.super$foo());
-  Expect.equals(110, b.sum());
-}
-
-main() {
-  test(new B.b1(100, 10));
-  test(new B.b2(100, 10));
-  test(new B.b3(100, 10));
-}
diff --git a/tests/language/super_field_test.dart b/tests/language/super_field_test.dart
deleted file mode 100644
index 85ae8e9..0000000
--- a/tests/language/super_field_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing super field access.
-
-import "package:expect/expect.dart";
-
-class A {
-  A() {
-    city = "Bern";
-  }
-  String greeting() {
-    return "Gruezi";
-  }
-
-  String city;
-}
-
-class B extends A {
-  B() : super() {}
-  String greeting() {
-    return "Hola " + super.greeting();
-  }
-}
-
-class C extends B {
-  C() : super() {}
-  String greeting() {
-    return "Servus " + super.greeting();
-  }
-
-  String get city {
-    return "Basel " + super.city;
-  }
-}
-
-class SuperFieldTest {
-  static testMain() {
-    A a = new A();
-    B b = new B();
-    C c = new C();
-    Expect.equals("Gruezi", a.greeting());
-    Expect.equals("Hola Gruezi", b.greeting());
-    Expect.equals("Servus Hola Gruezi", c.greeting());
-
-    Expect.equals("Bern", a.city);
-    Expect.equals("Bern", b.city);
-    Expect.equals("Basel Bern", c.city);
-    c.city = "Zurich";
-    Expect.equals("Basel Zurich", c.city);
-  }
-}
-
-main() {
-  SuperFieldTest.testMain();
-}
diff --git a/tests/language/super_first_constructor_test.dart b/tests/language/super_first_constructor_test.dart
deleted file mode 100644
index a28bb7e..0000000
--- a/tests/language/super_first_constructor_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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";
-
-// Test that the constructor body of a superclass is invoked.
-
-class Super {
-  final superArgument;
-  var superField;
-
-  Super() : this.named(''); // Redirection is required to trigger the bug.
-
-  Super.named(this.superArgument) {
-    superField = 'fisk';
-  }
-}
-
-class Sub extends Super {
-  var subField;
-
-  // Test for a bug when super() is the first initializer.
-  Sub.first()
-      : super(),
-        subField = [];
-
-  Sub.last()
-      : subField = [],
-        super();
-}
-
-main() {
-  Expect.equals('fisk', new Sub.last().superField);
-  Expect.equals('fisk', new Sub.first().superField);
-}
diff --git a/tests/language/super_getter_setter_test.dart b/tests/language/super_getter_setter_test.dart
deleted file mode 100644
index 94056ed..0000000
--- a/tests/language/super_getter_setter_test.dart
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright (c) 2013, 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:mirrors';
-
-import "package:expect/expect.dart";
-
-class A {
-  var missingSetterField;
-  var missingGetterField;
-  var getterInSuperClassField;
-  var setterInSuperClassField;
-  var getterSetterField;
-  var missingAllField;
-  var indexField = new List(2);
-
-  set setterInSuperClass(a) {
-    setterInSuperClassField = a;
-  }
-
-  get getterInSuperClass => getterInSuperClassField;
-}
-
-class B extends A {
-  get missingSetter => missingSetterField;
-  get setterInSuperClass => setterInSuperClassField;
-
-  set missingGetter(a) {
-    missingGetterField = a;
-  }
-
-  set getterInSuperClass(a) {
-    getterInSuperClassField = a;
-  }
-
-  get getterSetter => getterSetterField;
-  set getterSetter(a) {
-    getterSetterField = a;
-  }
-
-  operator [](index) => indexField[index];
-  operator []=(index, value) {
-    indexField[index] = value;
-  }
-
-  noSuchMethod(Invocation im) {
-    String name = MirrorSystem.getName(im.memberName);
-    if (name.startsWith('missingSetter')) {
-      Expect.isTrue(im.isSetter);
-      missingSetterField = im.positionalArguments[0];
-    } else if (name.startsWith('missingGetter')) {
-      Expect.isTrue(im.isGetter);
-      return missingGetterField;
-    } else if (name.startsWith('missingAll') && im.isGetter) {
-      return missingAllField;
-    } else if (name.startsWith('missingAll') && im.isSetter) {
-      missingAllField = im.positionalArguments[0];
-    } else {
-      Expect.fail('Should not reach here');
-    }
-  }
-}
-
-class C extends B {
-  test() {
-    Expect.equals(42, super.missingSetter = 42);
-    Expect.equals(42, super.missingSetter);
-    Expect.equals(43, super.missingSetter += 1);
-    Expect.equals(43, super.missingSetter);
-    Expect.equals(43, super.missingSetter++);
-    Expect.equals(44, super.missingSetter);
-
-    Expect.equals(42, super.missingGetter = 42);
-    Expect.equals(42, super.missingGetter);
-    Expect.equals(43, super.missingGetter += 1);
-    Expect.equals(43, super.missingGetter);
-    Expect.equals(43, super.missingGetter++);
-    Expect.equals(44, super.missingGetter);
-
-    Expect.equals(42, super.setterInSuperClass = 42);
-    Expect.equals(42, super.setterInSuperClass);
-    Expect.equals(43, super.setterInSuperClass += 1);
-    Expect.equals(43, super.setterInSuperClass);
-    Expect.equals(43, super.setterInSuperClass++);
-    Expect.equals(44, super.setterInSuperClass);
-
-    Expect.equals(42, super.getterInSuperClass = 42);
-    Expect.equals(42, super.getterInSuperClass);
-    Expect.equals(43, super.getterInSuperClass += 1);
-    Expect.equals(43, super.getterInSuperClass);
-    Expect.equals(43, super.getterInSuperClass++);
-    Expect.equals(44, super.getterInSuperClass);
-
-    Expect.equals(42, super.missingAll = 42);
-    Expect.equals(42, super.missingAll);
-    Expect.equals(43, super.missingAll += 1);
-    Expect.equals(43, super.missingAll);
-    Expect.equals(43, super.missingAll++);
-    Expect.equals(44, super.missingAll);
-
-    Expect.equals(42, super[0] = 42);
-    Expect.equals(42, super[0]);
-    Expect.equals(43, super[0] += 1);
-    Expect.equals(43, super[0]);
-    Expect.equals(43, super[0]++);
-    Expect.equals(44, super[0]);
-
-    Expect.equals(2, super[0] = 2);
-    Expect.equals(2, super[0]);
-    Expect.equals(3, super[0] += 1);
-    Expect.equals(3, super[0]);
-    Expect.equals(3, super[0]++);
-    Expect.equals(4, super[0]);
-  }
-}
-
-main() {
-  new C().test();
-}
diff --git a/tests/language/super_implicit_closure_test.dart b/tests/language/super_implicit_closure_test.dart
deleted file mode 100644
index c94997b..0000000
--- a/tests/language/super_implicit_closure_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing invocation of implicit closures.
-
-import "package:expect/expect.dart";
-
-class BaseClass {
-  BaseClass(this._i) {}
-  int foo() {
-    return _i;
-  }
-
-  int _i;
-}
-
-class DerivedClass extends BaseClass {
-  DerivedClass(this._y, int j) : super(j) {}
-  int foo() {
-    return _y;
-  }
-
-  getSuper() {
-    return super.foo;
-  }
-
-  int _y;
-}
-
-class SuperImplicitClosureTest {
-  static void testMain() {
-    DerivedClass obj = new DerivedClass(20, 10);
-
-    var ib = obj.foo;
-    Expect.equals(obj._y, ib());
-
-    ib = obj.getSuper();
-    Expect.equals(obj._i, ib());
-  }
-}
-
-main() {
-  SuperImplicitClosureTest.testMain();
-}
diff --git a/tests/language/super_inferrer_test.dart b/tests/language/super_inferrer_test.dart
deleted file mode 100644
index f1f4545..0000000
--- a/tests/language/super_inferrer_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that dart2js's backend type inference handles super calls.
-
-import "package:expect/expect.dart";
-
-class A {
-  foo(a) => a + 42;
-}
-
-class B extends A {
-  bar() {
-    super.foo(null);
-  }
-}
-
-var a = [new A()];
-
-main() {
-  analyzeFirst();
-  analyzeSecond();
-}
-
-analyzeFirst() {
-  Expect.equals(84, a[0].foo(42));
-}
-
-analyzeSecond() {
-  Expect.throws(() => new B().bar(), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/super_mixin_test.dart b/tests/language/super_mixin_test.dart
deleted file mode 100644
index 154d3e5..0000000
--- a/tests/language/super_mixin_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Dart2js regression test: Test that the type mask for non-null exact Mixin is
-// created for Mixin.getter.
-
-import 'package:expect/expect.dart';
-
-class Mixin {
-  @NoInline()
-  get getter => 42;
-}
-
-class Superclass {}
-
-class Subclass extends Superclass with Mixin {
-  method() => super.getter;
-}
-
-void main() {
-  Expect.equals(42, new Subclass().method());
-}
diff --git a/tests/language/super_no_such_method1_test.dart b/tests/language/super_no_such_method1_test.dart
deleted file mode 100644
index 5f6a72a..0000000
--- a/tests/language/super_no_such_method1_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(im) => 42;
-}
-
-class B extends A {
-  noSuchMethod(im) => 87;
-
-  foo() => super.foo(); //# 01: static type warning
-}
-
-main() {
-  Expect.equals(42, new B().foo()); //# 01: continued
-}
diff --git a/tests/language/super_no_such_method2_test.dart b/tests/language/super_no_such_method2_test.dart
deleted file mode 100644
index 4d3927f..0000000
--- a/tests/language/super_no_such_method2_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(im) => 42;
-}
-
-class B extends A {
-  noSuchMethod(im) => 87;
-
-  get foo => super.foo; //# 01: static type warning
-}
-
-main() {
-  Expect.equals(42, new B().foo); //# 01: continued
-}
diff --git a/tests/language/super_no_such_method3_test.dart b/tests/language/super_no_such_method3_test.dart
deleted file mode 100644
index 1e12d43..0000000
--- a/tests/language/super_no_such_method3_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-var result;
-
-class A {
-  noSuchMethod(im) {
-    result = 42;
-  }
-}
-
-class B extends A {
-  noSuchMethod(im) {
-    result = 87;
-  }
-
-  set foo(v) => super.foo = v; //# 01: static type warning
-}
-
-main() {
-  new B().foo = 0; //          //# 01: continued
-  Expect.equals(42, result); //# 01: continued
-}
diff --git a/tests/language/super_no_such_method4_test.dart b/tests/language/super_no_such_method4_test.dart
deleted file mode 100644
index e5392c7..0000000
--- a/tests/language/super_no_such_method4_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(im) => 42;
-}
-
-class B extends Object with A {
-  noSuchMethod(im) => 87;
-
-  foo() => super.foo(); //# 01: static type warning
-}
-
-main() {
-  Expect.equals(42, new B().foo()); //# 01: continued
-}
diff --git a/tests/language/super_no_such_method5_test.dart b/tests/language/super_no_such_method5_test.dart
deleted file mode 100644
index f507ba2..0000000
--- a/tests/language/super_no_such_method5_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(im) => 42;
-}
-
-class B extends Object with A {
-  foo() => super.foo(); //# 01: static type warning
-}
-
-main() {
-  Expect.equals(42, new B().foo()); //# 01: continued
-}
diff --git a/tests/language/super_operator_index2_test.dart b/tests/language/super_operator_index2_test.dart
deleted file mode 100644
index 0cc2305..0000000
--- a/tests/language/super_operator_index2_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for super indexing operations.
-
-import "package:expect/expect.dart";
-
-class A {
-  var map = new Map();
-  operator []=(a, b) {
-    map[a] = b;
-  }
-
-  operator [](a) => map[a];
-}
-
-class B extends A {
-  foo() {
-    super[4] = 42;
-    Expect.equals(42, super[4]);
-    super[4] += 5;
-    Expect.equals(47, super[4]);
-  }
-}
-
-main() {
-  new B().foo();
-}
diff --git a/tests/language/super_operator_index3_test.dart b/tests/language/super_operator_index3_test.dart
deleted file mode 100644
index e49104c..0000000
--- a/tests/language/super_operator_index3_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for operator[]= resolved in super class.
-
-import "package:expect/expect.dart";
-
-class A {
-  var indexField = new List(2);
-  operator []=(index, value) {
-    indexField[index] = value;
-  }
-}
-
-class B extends A {
-  operator [](index) => indexField[index];
-}
-
-class C extends B {
-  test() {
-    Expect.equals(42, super[0] = 42);
-    Expect.equals(42, super[0]);
-    Expect.equals(43, super[0] += 1);
-    Expect.equals(43, super[0]);
-    Expect.equals(43, super[0]++);
-    Expect.equals(44, super[0]);
-
-    Expect.equals(2, super[0] = 2);
-    Expect.equals(2, super[0]);
-    Expect.equals(3, super[0] += 1);
-    Expect.equals(3, super[0]);
-    Expect.equals(3, super[0]++);
-    Expect.equals(4, super[0]);
-  }
-}
-
-main() {
-  new C().test();
-}
diff --git a/tests/language/super_operator_index4_test.dart b/tests/language/super_operator_index4_test.dart
deleted file mode 100644
index 3530310..0000000
--- a/tests/language/super_operator_index4_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for operator[] resolved in the super class.
-
-import "package:expect/expect.dart";
-
-class A {
-  var indexField = new List(2);
-  operator [](index) => indexField[index];
-}
-
-class B extends A {
-  operator []=(index, value) {
-    indexField[index] = value;
-  }
-}
-
-class C extends B {
-  test() {
-    Expect.equals(42, super[0] = 42);
-    Expect.equals(42, super[0]);
-    Expect.equals(43, super[0] += 1);
-    Expect.equals(43, super[0]);
-    Expect.equals(43, super[0]++);
-    Expect.equals(44, super[0]);
-
-    Expect.equals(2, super[0] = 2);
-    Expect.equals(2, super[0]);
-    Expect.equals(3, super[0] += 1);
-    Expect.equals(3, super[0]);
-    Expect.equals(3, super[0]++);
-    Expect.equals(4, super[0]);
-  }
-}
-
-main() {
-  new C().test();
-}
diff --git a/tests/language/super_operator_index5_test.dart b/tests/language/super_operator_index5_test.dart
deleted file mode 100644
index 57bf77a..0000000
--- a/tests/language/super_operator_index5_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for unresolved super[]=.
-
-import "package:expect/expect.dart";
-
-class A {
-  var indexField = new List(2);
-  operator [](index) => indexField[index];
-
-  noSuchMethod(Invocation im) {
-    if (im.memberName == const Symbol('[]=')) {
-      Expect.equals(2, im.positionalArguments.length);
-      indexField[im.positionalArguments[0]] = im.positionalArguments[1];
-    } else {
-      Expect.fail('Should not reach here');
-    }
-  }
-}
-
-class B extends A {
-  test() {
-    Expect.equals(42, super[0] = 42);
-    Expect.equals(42, super[0]);
-    Expect.equals(43, super[0] += 1);
-    Expect.equals(43, super[0]);
-    Expect.equals(43, super[0]++);
-    Expect.equals(44, super[0]);
-
-    Expect.equals(2, super[0] = 2);
-    Expect.equals(2, super[0]);
-    Expect.equals(3, super[0] += 1);
-    Expect.equals(3, super[0]);
-    Expect.equals(3, super[0]++);
-    Expect.equals(4, super[0]);
-  }
-}
-
-main() {
-  new B().test();
-}
diff --git a/tests/language/super_operator_index6_test.dart b/tests/language/super_operator_index6_test.dart
deleted file mode 100644
index 1ac6dd0..0000000
--- a/tests/language/super_operator_index6_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for unresolved super[].
-
-import "package:expect/expect.dart";
-
-class A {
-  var indexField = new List(2);
-  operator []=(index, value) {
-    indexField[index] = value;
-  }
-
-  noSuchMethod(Invocation im) {
-    if (im.memberName == const Symbol('[]')) {
-      Expect.equals(1, im.positionalArguments.length);
-      return indexField[im.positionalArguments[0]];
-    } else {
-      Expect.fail('Should not reach here');
-    }
-  }
-}
-
-class B extends A {
-  test() {
-    Expect.equals(42, super[0] = 42);
-    Expect.equals(42, super[0]);
-    Expect.equals(43, super[0] += 1);
-    Expect.equals(43, super[0]);
-    Expect.equals(43, super[0]++);
-    Expect.equals(44, super[0]);
-
-    Expect.equals(2, super[0] = 2);
-    Expect.equals(2, super[0]);
-    Expect.equals(3, super[0] += 1);
-    Expect.equals(3, super[0]);
-    Expect.equals(3, super[0]++);
-    Expect.equals(4, super[0]);
-  }
-}
-
-main() {
-  new B().test();
-}
diff --git a/tests/language/super_operator_index7_test.dart b/tests/language/super_operator_index7_test.dart
deleted file mode 100644
index 261163d..0000000
--- a/tests/language/super_operator_index7_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for unresolved super[] and super[]=.
-
-import "package:expect/expect.dart";
-
-class A {
-  var indexField = new List(2);
-
-  noSuchMethod(Invocation im) {
-    if (im.memberName == const Symbol('[]=')) {
-      Expect.equals(2, im.positionalArguments.length);
-      indexField[im.positionalArguments[0]] = im.positionalArguments[1];
-    } else if (im.memberName == const Symbol('[]')) {
-      Expect.equals(1, im.positionalArguments.length);
-      return indexField[im.positionalArguments[0]];
-    } else {
-      Expect.fail('Should not reach here');
-    }
-  }
-}
-
-class B extends A {
-  test() {
-    Expect.equals(42, super[0] = 42);
-    Expect.equals(42, super[0]);
-    Expect.equals(43, super[0] += 1);
-    Expect.equals(43, super[0]);
-    Expect.equals(43, super[0]++);
-    Expect.equals(44, super[0]);
-
-    Expect.equals(2, super[0] = 2);
-    Expect.equals(2, super[0]);
-    Expect.equals(3, super[0] += 1);
-    Expect.equals(3, super[0]);
-    Expect.equals(3, super[0]++);
-    Expect.equals(4, super[0]);
-  }
-}
-
-main() {
-  new B().test();
-}
diff --git a/tests/language/super_operator_index8_test.dart b/tests/language/super_operator_index8_test.dart
deleted file mode 100644
index 85c9772..0000000
--- a/tests/language/super_operator_index8_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test for unresolved super[] and super[]= and correct evaluation order.
-
-import "package:expect/expect.dart";
-
-class A {
-  var indexField = new List(2);
-
-  noSuchMethod(Invocation im) {
-    if (im.memberName == const Symbol('[]=')) {
-      Expect.equals(2, im.positionalArguments.length);
-      indexField[im.positionalArguments[0]] = im.positionalArguments[1];
-    } else if (im.memberName == const Symbol('[]')) {
-      Expect.equals(1, im.positionalArguments.length);
-      return indexField[im.positionalArguments[0]];
-    } else {
-      Expect.fail('Should not reach here');
-    }
-  }
-}
-
-var global = 0;
-
-f() {
-  Expect.equals(0, global++);
-  return 0;
-}
-
-g() {
-  Expect.equals(1, global++);
-  return 42;
-}
-
-class B extends A {
-  test() {
-    Expect.equals(42, super[f()] = g());
-    Expect.equals(2, global);
-  }
-}
-
-main() {
-  new B().test();
-}
diff --git a/tests/language/super_operator_index_test.dart b/tests/language/super_operator_index_test.dart
deleted file mode 100644
index 2b27013..0000000
--- a/tests/language/super_operator_index_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we emit warnings for unresolved indexing operations on super.
-
-class A {
-  operator []=(a, b) {}
-}
-
-class B extends A {
-  foo() {
-    super[4] = 42;
-    super[4] += 5; //# 01: static type warning, runtime error
-    return super[2]; //# 02: static type warning, runtime error
-  }
-}
-
-class C {
-  operator [](a) {}
-}
-
-class D extends C {
-  foo() {
-    super[4] = 42; //# 03: static type warning, runtime error
-    super[4] += 5; //# 04: static type warning, runtime error
-    return super[2];
-  }
-}
-
-class E {
-  foo() {
-    super[4] = 42; //# 05: static type warning, runtime error
-    super[4] += 5; //# 06: static type warning, runtime error
-    return super[2]; //# 07: static type warning, runtime error
-  }
-}
-
-main() {
-  new B().foo();
-  new D().foo();
-  new E().foo();
-}
diff --git a/tests/language/super_operator_test.dart b/tests/language/super_operator_test.dart
deleted file mode 100644
index bce75f7..0000000
--- a/tests/language/super_operator_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing super operator calls
-
-import "package:expect/expect.dart";
-
-class A {
-  String val = "";
-  List things;
-
-  A() : things = ['D', 'a', 'r', 't', 42];
-
-  operator +(String s) {
-    val = "${val}${s}";
-    return this;
-  }
-
-  operator [](i) {
-    return things[i];
-  }
-
-  operator []=(i, val) {
-    return things[i] = val;
-  }
-}
-
-class B extends A {
-  operator +(String s) {
-    super + ("${s}${s}"); // Call A.operator+(this, "${s}${s}").
-    return this;
-  }
-
-  operator [](i) {
-    var temp = super[i];
-    if (temp is String) {
-      return "$temp$temp";
-    }
-    return temp + temp;
-  }
-
-  operator []=(i, val) {
-    // Make sure the index expression is only evaluated
-    // once in the presence of a compound assignment.
-    return super[i++] += val;
-  }
-}
-
-class Autobianchi {
-  g() => super[0];
-}
-
-testRegression6403() {
-  // Do not crash, throw exception instead
-  new Autobianchi().g();
-}
-
-main() {
-  var a = new A();
-  a = a + "William"; // operator + of class A.
-  Expect.equals("William", a.val);
-  Expect.equals("r", a[2]); // operator [] of class A.
-
-  a = new B();
-  a += "Tell"; // operator + of class B.
-  Expect.equals("TellTell", a.val);
-  Expect.equals("rr", a[2]); // operator [] of class B.
-
-  a[4] = 1; // operator []= of class B.
-  Expect.equals(43, a.things[4]);
-  Expect.equals(86, a[4]);
-
-  Expect.throws(testRegression6403);
-}
diff --git a/tests/language/super_setter_interceptor_test.dart b/tests/language/super_setter_interceptor_test.dart
deleted file mode 100644
index 339dc6f..0000000
--- a/tests/language/super_setter_interceptor_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we correctly intercept super getter and setter calls.
-
-import "package:expect/expect.dart";
-
-var expected;
-
-class A {
-  set length(a) {
-    Expect.equals(expected, a);
-  }
-
-  get length => 41;
-}
-
-class B extends A {
-  test() {
-    expected = 42;
-    Expect.equals(42, super.length = 42);
-    expected = 42;
-    Expect.equals(42, super.length += 1);
-    expected = 42;
-    Expect.equals(42, ++super.length);
-    expected = 40;
-    Expect.equals(40, --super.length);
-    expected = 42;
-    Expect.equals(41, super.length++);
-    expected = 40;
-    Expect.equals(41, super.length--);
-    Expect.equals(41, super.length);
-  }
-}
-
-main() {
-  // Ensures the list class is instantiated.
-  print([]);
-  new B().test();
-}
diff --git a/tests/language/super_setter_test.dart b/tests/language/super_setter_test.dart
deleted file mode 100644
index a17ba8b..0000000
--- a/tests/language/super_setter_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing super setters and getters.
-
-import "package:expect/expect.dart";
-
-class Base {
-  Base() {}
-  String value_;
-
-  String get value {
-    return value_;
-  }
-
-  String set value(String newValue) {
-    value_ = 'Base:$newValue';
-  }
-}
-
-class Derived extends Base {
-  Derived() : super() {}
-
-  String set value(String newValue) {
-    super.value = 'Derived:$newValue';
-  }
-
-  String get value {
-    return super.value;
-  }
-}
-
-class SuperSetterTest {
-  static void testMain() {
-    final b = new Derived();
-    b.value = "foo";
-    Expect.equals("Base:Derived:foo", b.value);
-  }
-}
-
-main() {
-  SuperSetterTest.testMain();
-}
diff --git a/tests/language/super_test.dart b/tests/language/super_test.dart
deleted file mode 100644
index aff6a41..0000000
--- a/tests/language/super_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// 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";
-
-int i = 0;
-
-// Tests super calls and constructors.
-main() {
-  Sub sub = new Sub(1, 2);
-  Expect.equals(1, sub.x);
-  Expect.equals(2, sub.y);
-  Expect.equals(3, sub.z);
-  Expect.equals(1, sub.v);
-  Expect.equals(2, sub.w);
-  Expect.equals(3, sub.u);
-
-  sub = new Sub.stat();
-  Expect.equals(0, sub.x);
-  Expect.equals(1, sub.y);
-  Expect.equals(2, sub.v);
-  Expect.equals(3, sub.w);
-  Expect.equals(4, sub.z);
-  Expect.equals(5, sub.u);
-}
-
-class Sup {
-  var x, y, z;
-
-  Sup(a, b)
-      : this.x = a,
-        this.y = b {
-    z = a + b;
-  }
-
-  Sup.stat()
-      : this.x = i++,
-        this.y = i++ {
-    z = i++;
-  }
-}
-
-class Sub extends Sup {
-  var u, v, w;
-
-  Sub(a, b)
-      : super(a, b),
-        this.v = a,
-        this.w = b {
-    u = a + b;
-  }
-
-  Sub.stat()
-      : super.stat(),
-        this.v = i++,
-        this.w = i++ {
-    u = i++;
-  }
-}
diff --git a/tests/language/switch1_negative_test.dart b/tests/language/switch1_negative_test.dart
deleted file mode 100644
index 5648b22..0000000
--- a/tests/language/switch1_negative_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that default clause must be last case.
-
-class Switch1NegativeTest {
-
-  static testMain() {
-    var a = 5;
-    var x;
-    S: switch (a) {
-      case 1: x = 1; break;
-      case 6: x = 2; break S;
-      default:
-      case 8:  break;
-    }
-    return a;
-  }
-}
-
-main() {
-  Switch1NegativeTest.testMain();
-}
diff --git a/tests/language/switch3_negative_test.dart b/tests/language/switch3_negative_test.dart
deleted file mode 100644
index 1232537..0000000
--- a/tests/language/switch3_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that 'continue' to switch statement is illegal.
-
-class Switch3NegativeTest {
-
-  static testMain() {
-    var a = 5;
-    var x;
-    switch (a) {
-      case 1: x = 1; break;
-      case 6: x = 2; continue;  // illegal jump target
-      case 8:  break;
-    }
-    return a;
-  }
-}
-
-main() {
-  Switch3NegativeTest.testMain();
-}
diff --git a/tests/language/switch4_negative_test.dart b/tests/language/switch4_negative_test.dart
deleted file mode 100644
index e4f7723..0000000
--- a/tests/language/switch4_negative_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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.
-// Discover unresolved case labels.
-
-class Switch4NegativeTest {
-  static testMain() {
-    var a = 5;
-    var x;
-    switch (a) {
-      case 1:
-        x = 1;
-        continue L; // unresolved forward reference
-      case 6:
-        x = 2;
-        break;
-      case 8:
-        break;
-    }
-    return a;
-  }
-}
-
-main() {
-  Switch4NegativeTest.testMain();
-}
diff --git a/tests/language/switch5_negative_test.dart b/tests/language/switch5_negative_test.dart
deleted file mode 100644
index 639c983..0000000
--- a/tests/language/switch5_negative_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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.
-// Break' to case label is illegal.
-
-class Switch5NegativeTest {
-  static testMain() {
-    var a = 5;
-    var x;
-    switch (a) {
-      L:
-      case 1:
-        x = 1;
-        break;
-      case 6:
-        x = 2;
-        break L; // illegal
-      default:
-        break;
-    }
-    return a;
-  }
-}
-
-main() {
-  Switch5NegativeTest.testMain();
-}
diff --git a/tests/language/switch6_test.dart b/tests/language/switch6_test.dart
deleted file mode 100644
index 43e09dc..0000000
--- a/tests/language/switch6_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011, 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 break is in the right scope, http://b/3428700 was agreed upon.
-
-import "package:expect/expect.dart";
-
-class Switch6Test {
-  static testMain() {
-    var a = 0;
-    var x = -1;
-    switch (a) {
-      case 0:
-        {
-          x = 0;
-          break;
-        }
-      case 1:
-        x = 1;
-        break;
-    }
-    Expect.equals(0, x);
-  }
-}
-
-main() {
-  Switch6Test.testMain();
-}
diff --git a/tests/language/switch7_negative_test.dart b/tests/language/switch7_negative_test.dart
deleted file mode 100644
index 7426f41..0000000
--- a/tests/language/switch7_negative_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2011, 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.
-// Illegal to reference a labeled case stmt with break
-
-class Switch7NegativeTest {
-  static testMain() {
-    var x = 1;
-    L:
-    while (true) {
-      switch (x) {
-        L:
-        case 1: // Shadowing another label is OK.
-          break L; // illegal, can't reference labeled case stmt from break
-      }
-    }
-  }
-}
-
-main() {
-  Switch7NegativeTest.testMain();
-}
diff --git a/tests/language/switch8_test.dart b/tests/language/switch8_test.dart
deleted file mode 100644
index d2f9122..0000000
--- a/tests/language/switch8_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not generate code for
-// compile-time constants only seen in case expressions.
-
-class A {
-  const A();
-}
-
-main() {
-  switch (new List(1)[0]) {
-    case const A():
-      throw 'Test failed';
-  }
-}
diff --git a/tests/language/switch_bad_case_test.dart b/tests/language/switch_bad_case_test.dart
deleted file mode 100644
index 29c2843..0000000
--- a/tests/language/switch_bad_case_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test reporting a compile-time error if case expressions do not all have
-// the same type or are of type double.
-
-import "package:expect/expect.dart";
-
-void main() {
-  Expect.equals("IV", caesarSays(4));
-  Expect.equals(null, caesarSays(2));
-  Expect.equals(null, archimedesSays(3.14));
-}
-
-caesarSays(n) {
-  switch (n) {
-    case 1:
-      return "I";
-    case 4:
-      return "IV";
-    case "M": //        //# 01: compile-time error
-      return 1000; //   //# 01: continued
-  }
-  return null;
-}
-
-archimedesSays(n) {
-  switch (n) { //       //# 02: continued
-    case 3.14: //       //# 02: compile-time error
-      return "Pi"; //   //# 02: continued
-    case 2.71828: //    //# 02: continued
-      return "Huh?"; // //# 02: continued
-  } //                  //# 02: continued
-  return null;
-}
diff --git a/tests/language/switch_case_static_const_test.dart b/tests/language/switch_case_static_const_test.dart
deleted file mode 100644
index e15a9f4..0000000
--- a/tests/language/switch_case_static_const_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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 const S = 'A.S';
-}
-
-const S = 'S';
-
-foo(var p) {
-  switch (p) {
-    case S:
-      break;
-    case A.S:
-      break;
-    case 'abc':
-      break;
-  }
-}
-
-main() {
-  foo('p');
-}
diff --git a/tests/language/switch_case_test.dart b/tests/language/switch_case_test.dart
deleted file mode 100644
index 64362fe..0000000
--- a/tests/language/switch_case_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2014, 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";
-
-class A {
-  const A();
-  const factory A.B() = B;
-  const factory A.C() = C;
-  const factory A.C2() = D;
-}
-
-class B implements A {
-  const B();
-
-  operator ==(o) => true; // //# 00: compile-time error
-}
-
-class C implements A {
-  final int x;
-  const C() : x = 0;
-  const C.fromD() : x = 1;
-}
-
-class D implements C {
-  int get x => 0;
-  const factory D() = C.fromD;
-}
-
-main() {
-  switch (new B()) {
-    case const A.B(): Expect.fail("bad switch"); break; // //# 00: continued
-  }
-
-  switch (new C()) {
-    case const C():
-      Expect.fail("bad switch");
-      break;
-    case const A.C():
-      Expect.fail("bad switch");
-      break;
-    case const A.C2():
-      Expect.fail("bad switch");
-      break;
-    case const A(): Expect.fail("bad switch"); break; // //# 01: compile-time error
-  }
-
-  switch (new A()) {
-    case const A():
-      Expect.fail("bad switch");
-      break;
-    case const A.B(): Expect.fail("bad switch"); break; // //# 02: compile-time error
-  }
-}
diff --git a/tests/language/switch_case_warn_test.dart b/tests/language/switch_case_warn_test.dart
deleted file mode 100644
index fe6d710..0000000
--- a/tests/language/switch_case_warn_test.dart
+++ /dev/null
@@ -1,217 +0,0 @@
-// 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.
-// Test switch statement.
-
-// Tests some switch-case statements blocks that should and should not
-// cause static warnings.
-// This test is not testing runtime behavior, only static warnings.
-
-// None of the cases blocks should cause a warning.
-void testSwitch(int x) {
-  // Catch all control flow leaving the switch.
-  // Run switch in catch clause to check rethrow.
-  TRY:
-  try {
-    throw x;
-  } catch (x) {
-    // Add loop as break/continue target.
-    LOOP:
-    do {
-      switch (x) {
-        case 0:
-        case 1:
-          nop(x);
-          break; // Break switch.
-        case 2:
-          nop(x);
-          break LOOP;
-        case 3:
-          nop(x);
-          continue; // Continue loop.
-        case 4:
-          nop(x);
-          continue LOOP;
-        case 5:
-          nop(x);
-          continue LAST;
-        // Avoid warning for "return;"" and "return e;" in same function.
-        case 6: //     //# retnon: ok
-          nop(x); //   //# retnon: continued
-          return; //   //# retnon: continued
-        case 7: //     //# retval: ok
-          nop(x); //   //# retval: continued
-          return x; // //# retval: continued
-        case 8:
-          nop(x);
-          throw x;
-        case 9:
-          nop(x);
-          rethrow;
-        case 10:
-        case 11:
-          {
-            nop(x);
-            break; // Break switch.
-          }
-        case 12:
-          {
-            nop(x);
-            break LOOP;
-          }
-        case 13:
-          {
-            nop(x);
-            continue; // Continue loop.
-          }
-        case 14:
-          {
-            nop(x);
-            continue LOOP;
-          }
-        case 15:
-          {
-            nop(x);
-            continue LAST;
-          }
-        case 16: { //  //# retnon: continued
-          nop(x); //   //# retnon: continued
-          return; //   //# retnon: continued
-        } //           //# retnon: continued
-        case 17: { //  //# retval: continued
-          nop(x); //   //# retval: continued
-          return x; // //# retval: continued
-        } //           //# retval: continued
-        case 18:
-          {
-            nop(x);
-            throw x;
-          }
-        case 19:
-          {
-            nop(x);
-            rethrow;
-          }
-        LAST:
-        case 20:
-          {
-            nop(x);
-            // Fallthrough allowed on last statements.
-          }
-      }
-    } while (false);
-  } finally {
-    // Catch all control flow leaving the switch and ignore it.
-    // Use break instead of return to avoid warning for `return` and `return e`
-    // in same function.
-    break TRY;
-  }
-}
-
-// All these switch cases should cause warnings.
-void testSwitchWarn(x) {
-  // Catch all control flow from the switch and ignore it.
-  TRY:
-  try {
-    throw 0;
-  } catch (e) {
-    // Wrap in loop as target for continue/break.
-    LOOP:
-    do {
-      switch (x) {
-        case 0: //                         //# 01: static type warning
-        case 1: { //                       //# 01: continued
-          { //                             //# 01: continued
-            nop(x); //                     //# 01: continued
-            break;  // Break switch. //    //# 01: continued
-          } //                             //# 01: continued
-        } //                               //# 01: continued
-        case 2: { //                       //# 02: static type warning
-          { //                             //# 02: continued
-            nop(x); //                     //# 02: continued
-            break LOOP; //                 //# 02: continued
-          } //                             //# 02: continued
-        } //                               //# 02: continued
-        case 3: { //                       //# 03: static type warning
-          { //                             //# 03: continued
-            nop(x); //                     //# 03: continued
-            continue; // Continue loop.    //# 03: continued
-          } //                             //# 03: continued
-        } //                               //# 03: continued
-        case 4: { //                       //# 04: static type warning
-          { //                             //# 04: continued
-            nop(x); //                     //# 04: continued
-            continue LOOP; //              //# 04: continued
-          } //                             //# 04: continued
-        } //                               //# 04: continued
-        case 5: { //                       //# 05: static type warning
-          { //                             //# 05: continued
-            nop(x); //                     //# 05: continued
-            continue LAST; //              //# 05: continued
-          } //                             //# 05: continued
-        } //                               //# 05: continued
-        case 6: { //                       //# 06: static type warning
-          { //                             //# 06: continued
-            nop(x); //                     //# 06: continued
-            return; //                     //# 06: continued
-          } //                             //# 06: continued
-        } //                               //# 06: continued
-        case 7: { //                       //# 07: static type warning
-          { //                             //# 07: continued
-            nop(x); //                     //# 07: continued
-            return x; //                   //# 07: continued
-          } //                             //# 07: continued
-        } //                               //# 07: continued
-        case 8: { //                       //# 08: static type warning
-          { //                             //# 08: continued
-            nop(x); //                     //# 08: continued
-            throw x; //                    //# 08: continued
-          } //                             //# 08: continued
-        } //                               //# 08: continued
-        case 9: { //                       //# 09: static type warning
-          { //                             //# 09: continued
-            nop(x); //                     //# 09: continued
-            rethrow; //                    //# 09: continued
-          } //                             //# 09: continued
-        } //                               //# 09: continued
-        case 10: //                        //# 10: static type warning
-          while (true) break; //           //# 10: continued
-        case 11: //                        //# 11: static type warning
-          do break; while (true); //       //# 11: continued
-        case 12: //                        //# 12: static type warning
-          for (;;) break; //               //# 12: continued
-        case 13: //                        //# 13: static type warning
-          for (var _ in []) break; //      //# 13: continued
-        case 14: //                        //# 14: static type warning
-          if (x) break; else break; //     //# 14: continued
-        case 15: //                        //# 15: static type warning
-          (throw 0); //                    //# 15: continued
-        case 16: //                        //# 16: static type warning
-          nop(x); //      fallthrough. //  //# 16: continued
-        case 17: //                        //# 17: static type warning
-          L: break; //                     //# 17: continued
-        LAST:
-        case 99:
-        // Last case can't cause static warning.
-      }
-    } while (false);
-  } finally {
-    // Catch all control flow leaving the switch and ignore it.
-    // Use break instead of return to avoid warning for `return` and `return e`
-    // in same function.
-    break TRY;
-  }
-}
-
-main() {
-  // Ensure that all the cases compile and run (even if they might throw).
-  for (int i = 0; i <= 20; i++) {
-    testSwitch(i); // Just make sure it runs.
-  }
-  for (int i = 0; i <= 18; i++) {
-    testSwitchWarn(i);
-  }
-}
-
-/// Don't make it obvious that a switch case isn't doing anything.
-void nop(x) {}
diff --git a/tests/language/switch_fallthru_test.dart b/tests/language/switch_fallthru_test.dart
deleted file mode 100644
index 0618032..0000000
--- a/tests/language/switch_fallthru_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2011, 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.
-// Check that FallThroughError is thrown if switch clause does not terminate.
-
-import "package:expect/expect.dart";
-
-class SwitchFallthruTest {
-  static String test(int n) {
-    String result = "foo";
-    switch (n) {
-      case 0:
-        result = "zero";
-        break;
-      case 1:
-        result = "one";
-      // fall-through, throw implicit FallThroughError here.
-      case 9:
-        result = "nine";
-      // No implicit FallThroughError at end of switch statement.
-    }
-    return result;
-  }
-
-  static testMain() {
-    Expect.equals("zero", test(0));
-    bool fallthroughCaught = false;
-    try {
-      test(1);
-    } on FallThroughError catch (e) {
-      fallthroughCaught = true;
-    }
-    Expect.equals(true, fallthroughCaught);
-    Expect.equals("nine", test(9));
-    Expect.equals("foo", test(99));
-  }
-}
-
-main() {
-  SwitchFallthruTest.testMain();
-}
diff --git a/tests/language/switch_label2_test.dart b/tests/language/switch_label2_test.dart
deleted file mode 100644
index 612e6a9..0000000
--- a/tests/language/switch_label2_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test switch statement using labels.
-
-import 'package:expect/expect.dart';
-
-void main() {
-  doSwitch(0, [0, 2]);
-  doSwitch(1, [1]);
-  doSwitch(2, [2]);
-  doSwitch(3, [3, 1]);
-}
-
-void doSwitch(int target, List expect) {
-  List list = [];
-  switch (target) {
-    case 0:
-      list.add(0);
-      continue case2;
-    case1:
-    case 1:
-      list.add(1);
-      break;
-    case2:
-    case 2:
-      list.add(2);
-      break;
-    case 3:
-      list.add(3);
-      continue case1;
-  }
-  Expect.listEquals(expect, list);
-}
diff --git a/tests/language/switch_label_test.dart b/tests/language/switch_label_test.dart
deleted file mode 100644
index 290c84f..0000000
--- a/tests/language/switch_label_test.dart
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test switch statement using labels.
-
-import "package:expect/expect.dart";
-
-class Switcher {
-  Switcher() {}
-
-  say1(sound) {
-    var x = 0;
-    switch (sound) {
-      MOO:
-      case "moo":
-        x = 100;
-        break;
-      case "woof":
-        x = 200;
-        continue MOO;
-      default:
-        x = 300;
-        break;
-    }
-    return x;
-  }
-
-  say2(sound) {
-    var x = 0;
-    switch (sound) {
-      WOOF:
-      case "woof":
-        x = 200;
-        break;
-      case "moo":
-        x = 100;
-        continue WOOF;
-      default:
-        x = 300;
-        break;
-    }
-    return x;
-  }
-
-  // forward label to outer switch
-  say3(animal, sound) {
-    var x = 0;
-    switch (animal) {
-      case "cow":
-        switch (sound) {
-          case "moo":
-            x = 100;
-            break;
-          case "muh":
-            x = 200;
-            break;
-          default:
-            continue NIX_UNDERSTAND;
-        }
-        break;
-      case "dog":
-        if (sound == "woof") {
-          x = 300;
-        } else {
-          continue NIX_UNDERSTAND;
-        }
-        break;
-      NIX_UNDERSTAND:
-      case "unicorn":
-        x = 400;
-        break;
-      default:
-        x = 500;
-        break;
-    }
-    return x;
-  }
-}
-
-class SwitchLabelTest {
-  static testMain() {
-    Switcher s = new Switcher();
-    Expect.equals(100, s.say1("moo"));
-    Expect.equals(100, s.say1("woof"));
-    Expect.equals(300, s.say1("cockadoodledoo"));
-
-    Expect.equals(200, s.say2("moo"));
-    Expect.equals(200, s.say2("woof"));
-    Expect.equals(300, s.say2("")); // Dead unicorn says nothing.
-
-    Expect.equals(100, s.say3("cow", "moo"));
-    Expect.equals(200, s.say3("cow", "muh"));
-    Expect.equals(400, s.say3("cow", "boeh")); // Don't ask.
-    Expect.equals(300, s.say3("dog", "woof"));
-    Expect.equals(400, s.say3("dog", "boj")); // Ĉu vi parolas Esperanton?
-    Expect.equals(400, s.say3("unicorn", "")); // Still dead.
-    Expect.equals(500, s.say3("angry bird", "whoooo"));
-  }
-}
-
-main() {
-  SwitchLabelTest.testMain();
-}
diff --git a/tests/language/switch_scope_test.dart b/tests/language/switch_scope_test.dart
deleted file mode 100644
index 938a393..0000000
--- a/tests/language/switch_scope_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test that a new scope is introduced for each switch case.
-
-import "package:expect/expect.dart";
-
-class SwitchScopeTest {
-  static testMain() {
-    switch (1) {
-      case 1:
-        final v = 1;
-        break;
-      case 2:
-        final v = 2;
-        Expect.equals(2, v);
-        break;
-      default:
-        final v = 3;
-        break;
-    }
-  }
-}
-
-main() {
-  SwitchScopeTest.testMain();
-}
diff --git a/tests/language/switch_test.dart b/tests/language/switch_test.dart
deleted file mode 100644
index a0cb2df..0000000
--- a/tests/language/switch_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// 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.
-// Test switch statement.
-
-import "package:expect/expect.dart";
-
-class Switcher {
-  Switcher() {}
-
-  test1(val) {
-    var x = 0;
-    switch (val) {
-      case 1:
-        x = 100;
-        break;
-      case 2:
-      case 3:
-        x = 200;
-        break;
-      case 4:
-      default:
-        {
-          x = 400;
-          break;
-        }
-    }
-    return x;
-  }
-
-  test2(val) {
-    switch (val) {
-      case 1:
-        return 200;
-      default:
-        return 400;
-    }
-  }
-}
-
-class SwitchTest {
-  static testMain() {
-    Switcher s = new Switcher();
-    Expect.equals(100, s.test1(1));
-    Expect.equals(200, s.test1(2));
-    Expect.equals(200, s.test1(3));
-    Expect.equals(400, s.test1(4));
-    Expect.equals(400, s.test1(5));
-
-    Expect.equals(200, s.test2(1));
-    Expect.equals(400, s.test2(2));
-  }
-}
-
-class Enum {
-  static const Enum e1 = const Enum(1);
-  static const Enum e2 = const Enum(2);
-  static const Enum e3 = const Enum(3);
-  final int id;
-  const Enum(this.id);
-}
-
-void testSwitchEnum(Enum input, int expect) {
-  int result = null;
-  switch (input) {
-    case Enum.e1:
-      result = 10;
-      break;
-    case Enum.e2:
-      result = 20;
-      break;
-    case Enum.e3:
-      result = 30;
-      break;
-    default:
-      result = 40;
-  }
-  Expect.equals(expect, result);
-}
-
-const int ic1 = 1;
-const int ic2 = 2;
-void testSwitchIntExpression(int input, int expect) {
-  int result = null;
-  switch (input) {
-    case 1 + 1: // 2
-    case ic1 + 2: // 3
-      result = 11;
-      break;
-    case ic2 * 2: // 4
-    case 1 * 5: // 5
-      result = 21;
-      break;
-    case ic1 % ic2 + 5: // 6
-      result = 31;
-      break;
-  }
-  Expect.equals(expect, result);
-}
-
-void testSwitchBool(bool input, int expect) {
-  int result = null;
-  switch (input) {
-    case true:
-      result = 12;
-      break;
-    case false:
-      result = 22;
-  }
-  Expect.equals(expect, result);
-}
-
-main() {
-  SwitchTest.testMain();
-
-  testSwitchEnum(Enum.e1, 10);
-  testSwitchEnum(Enum.e2, 20);
-  testSwitchEnum(Enum.e3, 30);
-  testSwitchEnum(null, 40);
-
-  testSwitchIntExpression(2, 11);
-  testSwitchIntExpression(3, 11);
-  testSwitchIntExpression(4, 21);
-  testSwitchIntExpression(5, 21);
-  testSwitchIntExpression(6, 31);
-  testSwitchIntExpression(7, null);
-
-  testSwitchBool(true, 12);
-  testSwitchBool(false, 22);
-}
diff --git a/tests/language/switch_try_catch_test.dart b/tests/language/switch_try_catch_test.dart
deleted file mode 100644
index beee717..0000000
--- a/tests/language/switch_try_catch_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 18869: Check that try-catch is working correctly
-// inside switch-case clauses.
-
-import "package:expect/expect.dart";
-
-test_switch() {
-  switch (0) {
-    _0:
-    case 0:
-      print("_0");
-      continue _5;
-    _1:
-    case 1:
-      try {
-        print("bunny");
-        continue _6;
-      } catch (e) {}
-      break;
-    _5:
-    case 5:
-      print("_5");
-      continue _6;
-    _6:
-    case 6:
-      print("_6");
-      throw 555;
-  }
-}
-
-main() {
-  Expect.throws(() => test_switch(), (e) => e == 555);
-}
diff --git a/tests/language/symbol_conflict_test.dart b/tests/language/symbol_conflict_test.dart
deleted file mode 100644
index 10b949e..0000000
--- a/tests/language/symbol_conflict_test.dart
+++ /dev/null
@@ -1,2815 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Tests that const symbols are only equal to the symbol they represent.
-
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(invocation) {
-    Expect.isFalse(oneAndTwoCharacterSymbols.contains(invocation.memberName));
-  }
-}
-
-main() {
-  var a = new A();
-  a.foo = 23;
-  a.foo;
-  a.bar;
-  a.longer;
-  a.anotherOne;
-  a.add(1);
-  a.isEmpty;
-}
-
-/**
- The following constant was generated with the following program:
-
-   const RESERVED_WORDS = const [
-     'assert', 'break', 'case', 'catch', 'class', 'const', 'continue',
-     'default', 'do', 'else', 'enum', 'extends', 'false', 'final',
-     'finally', 'for', 'if', 'in', 'is', 'new', 'null', 'rethrow',
-     'return', 'super', 'switch', 'this', 'throw', 'true', 'try',
-     'var', 'void', 'while', 'with'];
-
-   get chars sync* {
-      for (int i = "a".codeUnitAt(0); i <= "z".codeUnitAt(0); i++) {
-        yield new String.fromCharCodes([i]);
-      }
-      for (int i = "A".codeUnitAt(0); i <= "Z".codeUnitAt(0); i++) {
-        yield new String.fromCharCodes([i]);
-      }
-    }
-
-    main() {
-      print("const oneAndTwoCharacterSymbols = const [");
-      // One character symbols.
-      for (String c in chars) {
-        print("  const Symbol('$c'),");
-      }
-      // Two character symbols.
-      for (String c1 in chars) {
-        for (String c2 in chars) {
-          if (!RESERVED_WORDS.contains('$c1$c2')) {
-            print("  const Symbol('$c1$c2'),");
-          }
-        }
-      }
-      print("];");
-    }
-*/
-const oneAndTwoCharacterSymbols = const [
-  const Symbol('a'),
-  const Symbol('b'),
-  const Symbol('c'),
-  const Symbol('d'),
-  const Symbol('e'),
-  const Symbol('f'),
-  const Symbol('g'),
-  const Symbol('h'),
-  const Symbol('i'),
-  const Symbol('j'),
-  const Symbol('k'),
-  const Symbol('l'),
-  const Symbol('m'),
-  const Symbol('n'),
-  const Symbol('o'),
-  const Symbol('p'),
-  const Symbol('q'),
-  const Symbol('r'),
-  const Symbol('s'),
-  const Symbol('t'),
-  const Symbol('u'),
-  const Symbol('v'),
-  const Symbol('w'),
-  const Symbol('x'),
-  const Symbol('y'),
-  const Symbol('z'),
-  const Symbol('A'),
-  const Symbol('B'),
-  const Symbol('C'),
-  const Symbol('D'),
-  const Symbol('E'),
-  const Symbol('F'),
-  const Symbol('G'),
-  const Symbol('H'),
-  const Symbol('I'),
-  const Symbol('J'),
-  const Symbol('K'),
-  const Symbol('L'),
-  const Symbol('M'),
-  const Symbol('N'),
-  const Symbol('O'),
-  const Symbol('P'),
-  const Symbol('Q'),
-  const Symbol('R'),
-  const Symbol('S'),
-  const Symbol('T'),
-  const Symbol('U'),
-  const Symbol('V'),
-  const Symbol('W'),
-  const Symbol('X'),
-  const Symbol('Y'),
-  const Symbol('Z'),
-  const Symbol('aa'),
-  const Symbol('ab'),
-  const Symbol('ac'),
-  const Symbol('ad'),
-  const Symbol('ae'),
-  const Symbol('af'),
-  const Symbol('ag'),
-  const Symbol('ah'),
-  const Symbol('ai'),
-  const Symbol('aj'),
-  const Symbol('ak'),
-  const Symbol('al'),
-  const Symbol('am'),
-  const Symbol('an'),
-  const Symbol('ao'),
-  const Symbol('ap'),
-  const Symbol('aq'),
-  const Symbol('ar'),
-  const Symbol('as'),
-  const Symbol('at'),
-  const Symbol('au'),
-  const Symbol('av'),
-  const Symbol('aw'),
-  const Symbol('ax'),
-  const Symbol('ay'),
-  const Symbol('az'),
-  const Symbol('aA'),
-  const Symbol('aB'),
-  const Symbol('aC'),
-  const Symbol('aD'),
-  const Symbol('aE'),
-  const Symbol('aF'),
-  const Symbol('aG'),
-  const Symbol('aH'),
-  const Symbol('aI'),
-  const Symbol('aJ'),
-  const Symbol('aK'),
-  const Symbol('aL'),
-  const Symbol('aM'),
-  const Symbol('aN'),
-  const Symbol('aO'),
-  const Symbol('aP'),
-  const Symbol('aQ'),
-  const Symbol('aR'),
-  const Symbol('aS'),
-  const Symbol('aT'),
-  const Symbol('aU'),
-  const Symbol('aV'),
-  const Symbol('aW'),
-  const Symbol('aX'),
-  const Symbol('aY'),
-  const Symbol('aZ'),
-  const Symbol('ba'),
-  const Symbol('bb'),
-  const Symbol('bc'),
-  const Symbol('bd'),
-  const Symbol('be'),
-  const Symbol('bf'),
-  const Symbol('bg'),
-  const Symbol('bh'),
-  const Symbol('bi'),
-  const Symbol('bj'),
-  const Symbol('bk'),
-  const Symbol('bl'),
-  const Symbol('bm'),
-  const Symbol('bn'),
-  const Symbol('bo'),
-  const Symbol('bp'),
-  const Symbol('bq'),
-  const Symbol('br'),
-  const Symbol('bs'),
-  const Symbol('bt'),
-  const Symbol('bu'),
-  const Symbol('bv'),
-  const Symbol('bw'),
-  const Symbol('bx'),
-  const Symbol('by'),
-  const Symbol('bz'),
-  const Symbol('bA'),
-  const Symbol('bB'),
-  const Symbol('bC'),
-  const Symbol('bD'),
-  const Symbol('bE'),
-  const Symbol('bF'),
-  const Symbol('bG'),
-  const Symbol('bH'),
-  const Symbol('bI'),
-  const Symbol('bJ'),
-  const Symbol('bK'),
-  const Symbol('bL'),
-  const Symbol('bM'),
-  const Symbol('bN'),
-  const Symbol('bO'),
-  const Symbol('bP'),
-  const Symbol('bQ'),
-  const Symbol('bR'),
-  const Symbol('bS'),
-  const Symbol('bT'),
-  const Symbol('bU'),
-  const Symbol('bV'),
-  const Symbol('bW'),
-  const Symbol('bX'),
-  const Symbol('bY'),
-  const Symbol('bZ'),
-  const Symbol('ca'),
-  const Symbol('cb'),
-  const Symbol('cc'),
-  const Symbol('cd'),
-  const Symbol('ce'),
-  const Symbol('cf'),
-  const Symbol('cg'),
-  const Symbol('ch'),
-  const Symbol('ci'),
-  const Symbol('cj'),
-  const Symbol('ck'),
-  const Symbol('cl'),
-  const Symbol('cm'),
-  const Symbol('cn'),
-  const Symbol('co'),
-  const Symbol('cp'),
-  const Symbol('cq'),
-  const Symbol('cr'),
-  const Symbol('cs'),
-  const Symbol('ct'),
-  const Symbol('cu'),
-  const Symbol('cv'),
-  const Symbol('cw'),
-  const Symbol('cx'),
-  const Symbol('cy'),
-  const Symbol('cz'),
-  const Symbol('cA'),
-  const Symbol('cB'),
-  const Symbol('cC'),
-  const Symbol('cD'),
-  const Symbol('cE'),
-  const Symbol('cF'),
-  const Symbol('cG'),
-  const Symbol('cH'),
-  const Symbol('cI'),
-  const Symbol('cJ'),
-  const Symbol('cK'),
-  const Symbol('cL'),
-  const Symbol('cM'),
-  const Symbol('cN'),
-  const Symbol('cO'),
-  const Symbol('cP'),
-  const Symbol('cQ'),
-  const Symbol('cR'),
-  const Symbol('cS'),
-  const Symbol('cT'),
-  const Symbol('cU'),
-  const Symbol('cV'),
-  const Symbol('cW'),
-  const Symbol('cX'),
-  const Symbol('cY'),
-  const Symbol('cZ'),
-  const Symbol('da'),
-  const Symbol('db'),
-  const Symbol('dc'),
-  const Symbol('dd'),
-  const Symbol('de'),
-  const Symbol('df'),
-  const Symbol('dg'),
-  const Symbol('dh'),
-  const Symbol('di'),
-  const Symbol('dj'),
-  const Symbol('dk'),
-  const Symbol('dl'),
-  const Symbol('dm'),
-  const Symbol('dn'),
-  const Symbol('dp'),
-  const Symbol('dq'),
-  const Symbol('dr'),
-  const Symbol('ds'),
-  const Symbol('dt'),
-  const Symbol('du'),
-  const Symbol('dv'),
-  const Symbol('dw'),
-  const Symbol('dx'),
-  const Symbol('dy'),
-  const Symbol('dz'),
-  const Symbol('dA'),
-  const Symbol('dB'),
-  const Symbol('dC'),
-  const Symbol('dD'),
-  const Symbol('dE'),
-  const Symbol('dF'),
-  const Symbol('dG'),
-  const Symbol('dH'),
-  const Symbol('dI'),
-  const Symbol('dJ'),
-  const Symbol('dK'),
-  const Symbol('dL'),
-  const Symbol('dM'),
-  const Symbol('dN'),
-  const Symbol('dO'),
-  const Symbol('dP'),
-  const Symbol('dQ'),
-  const Symbol('dR'),
-  const Symbol('dS'),
-  const Symbol('dT'),
-  const Symbol('dU'),
-  const Symbol('dV'),
-  const Symbol('dW'),
-  const Symbol('dX'),
-  const Symbol('dY'),
-  const Symbol('dZ'),
-  const Symbol('ea'),
-  const Symbol('eb'),
-  const Symbol('ec'),
-  const Symbol('ed'),
-  const Symbol('ee'),
-  const Symbol('ef'),
-  const Symbol('eg'),
-  const Symbol('eh'),
-  const Symbol('ei'),
-  const Symbol('ej'),
-  const Symbol('ek'),
-  const Symbol('el'),
-  const Symbol('em'),
-  const Symbol('en'),
-  const Symbol('eo'),
-  const Symbol('ep'),
-  const Symbol('eq'),
-  const Symbol('er'),
-  const Symbol('es'),
-  const Symbol('et'),
-  const Symbol('eu'),
-  const Symbol('ev'),
-  const Symbol('ew'),
-  const Symbol('ex'),
-  const Symbol('ey'),
-  const Symbol('ez'),
-  const Symbol('eA'),
-  const Symbol('eB'),
-  const Symbol('eC'),
-  const Symbol('eD'),
-  const Symbol('eE'),
-  const Symbol('eF'),
-  const Symbol('eG'),
-  const Symbol('eH'),
-  const Symbol('eI'),
-  const Symbol('eJ'),
-  const Symbol('eK'),
-  const Symbol('eL'),
-  const Symbol('eM'),
-  const Symbol('eN'),
-  const Symbol('eO'),
-  const Symbol('eP'),
-  const Symbol('eQ'),
-  const Symbol('eR'),
-  const Symbol('eS'),
-  const Symbol('eT'),
-  const Symbol('eU'),
-  const Symbol('eV'),
-  const Symbol('eW'),
-  const Symbol('eX'),
-  const Symbol('eY'),
-  const Symbol('eZ'),
-  const Symbol('fa'),
-  const Symbol('fb'),
-  const Symbol('fc'),
-  const Symbol('fd'),
-  const Symbol('fe'),
-  const Symbol('ff'),
-  const Symbol('fg'),
-  const Symbol('fh'),
-  const Symbol('fi'),
-  const Symbol('fj'),
-  const Symbol('fk'),
-  const Symbol('fl'),
-  const Symbol('fm'),
-  const Symbol('fn'),
-  const Symbol('fo'),
-  const Symbol('fp'),
-  const Symbol('fq'),
-  const Symbol('fr'),
-  const Symbol('fs'),
-  const Symbol('ft'),
-  const Symbol('fu'),
-  const Symbol('fv'),
-  const Symbol('fw'),
-  const Symbol('fx'),
-  const Symbol('fy'),
-  const Symbol('fz'),
-  const Symbol('fA'),
-  const Symbol('fB'),
-  const Symbol('fC'),
-  const Symbol('fD'),
-  const Symbol('fE'),
-  const Symbol('fF'),
-  const Symbol('fG'),
-  const Symbol('fH'),
-  const Symbol('fI'),
-  const Symbol('fJ'),
-  const Symbol('fK'),
-  const Symbol('fL'),
-  const Symbol('fM'),
-  const Symbol('fN'),
-  const Symbol('fO'),
-  const Symbol('fP'),
-  const Symbol('fQ'),
-  const Symbol('fR'),
-  const Symbol('fS'),
-  const Symbol('fT'),
-  const Symbol('fU'),
-  const Symbol('fV'),
-  const Symbol('fW'),
-  const Symbol('fX'),
-  const Symbol('fY'),
-  const Symbol('fZ'),
-  const Symbol('ga'),
-  const Symbol('gb'),
-  const Symbol('gc'),
-  const Symbol('gd'),
-  const Symbol('ge'),
-  const Symbol('gf'),
-  const Symbol('gg'),
-  const Symbol('gh'),
-  const Symbol('gi'),
-  const Symbol('gj'),
-  const Symbol('gk'),
-  const Symbol('gl'),
-  const Symbol('gm'),
-  const Symbol('gn'),
-  const Symbol('go'),
-  const Symbol('gp'),
-  const Symbol('gq'),
-  const Symbol('gr'),
-  const Symbol('gs'),
-  const Symbol('gt'),
-  const Symbol('gu'),
-  const Symbol('gv'),
-  const Symbol('gw'),
-  const Symbol('gx'),
-  const Symbol('gy'),
-  const Symbol('gz'),
-  const Symbol('gA'),
-  const Symbol('gB'),
-  const Symbol('gC'),
-  const Symbol('gD'),
-  const Symbol('gE'),
-  const Symbol('gF'),
-  const Symbol('gG'),
-  const Symbol('gH'),
-  const Symbol('gI'),
-  const Symbol('gJ'),
-  const Symbol('gK'),
-  const Symbol('gL'),
-  const Symbol('gM'),
-  const Symbol('gN'),
-  const Symbol('gO'),
-  const Symbol('gP'),
-  const Symbol('gQ'),
-  const Symbol('gR'),
-  const Symbol('gS'),
-  const Symbol('gT'),
-  const Symbol('gU'),
-  const Symbol('gV'),
-  const Symbol('gW'),
-  const Symbol('gX'),
-  const Symbol('gY'),
-  const Symbol('gZ'),
-  const Symbol('ha'),
-  const Symbol('hb'),
-  const Symbol('hc'),
-  const Symbol('hd'),
-  const Symbol('he'),
-  const Symbol('hf'),
-  const Symbol('hg'),
-  const Symbol('hh'),
-  const Symbol('hi'),
-  const Symbol('hj'),
-  const Symbol('hk'),
-  const Symbol('hl'),
-  const Symbol('hm'),
-  const Symbol('hn'),
-  const Symbol('ho'),
-  const Symbol('hp'),
-  const Symbol('hq'),
-  const Symbol('hr'),
-  const Symbol('hs'),
-  const Symbol('ht'),
-  const Symbol('hu'),
-  const Symbol('hv'),
-  const Symbol('hw'),
-  const Symbol('hx'),
-  const Symbol('hy'),
-  const Symbol('hz'),
-  const Symbol('hA'),
-  const Symbol('hB'),
-  const Symbol('hC'),
-  const Symbol('hD'),
-  const Symbol('hE'),
-  const Symbol('hF'),
-  const Symbol('hG'),
-  const Symbol('hH'),
-  const Symbol('hI'),
-  const Symbol('hJ'),
-  const Symbol('hK'),
-  const Symbol('hL'),
-  const Symbol('hM'),
-  const Symbol('hN'),
-  const Symbol('hO'),
-  const Symbol('hP'),
-  const Symbol('hQ'),
-  const Symbol('hR'),
-  const Symbol('hS'),
-  const Symbol('hT'),
-  const Symbol('hU'),
-  const Symbol('hV'),
-  const Symbol('hW'),
-  const Symbol('hX'),
-  const Symbol('hY'),
-  const Symbol('hZ'),
-  const Symbol('ia'),
-  const Symbol('ib'),
-  const Symbol('ic'),
-  const Symbol('id'),
-  const Symbol('ie'),
-  const Symbol('ig'),
-  const Symbol('ih'),
-  const Symbol('ii'),
-  const Symbol('ij'),
-  const Symbol('ik'),
-  const Symbol('il'),
-  const Symbol('im'),
-  const Symbol('io'),
-  const Symbol('ip'),
-  const Symbol('iq'),
-  const Symbol('ir'),
-  const Symbol('it'),
-  const Symbol('iu'),
-  const Symbol('iv'),
-  const Symbol('iw'),
-  const Symbol('ix'),
-  const Symbol('iy'),
-  const Symbol('iz'),
-  const Symbol('iA'),
-  const Symbol('iB'),
-  const Symbol('iC'),
-  const Symbol('iD'),
-  const Symbol('iE'),
-  const Symbol('iF'),
-  const Symbol('iG'),
-  const Symbol('iH'),
-  const Symbol('iI'),
-  const Symbol('iJ'),
-  const Symbol('iK'),
-  const Symbol('iL'),
-  const Symbol('iM'),
-  const Symbol('iN'),
-  const Symbol('iO'),
-  const Symbol('iP'),
-  const Symbol('iQ'),
-  const Symbol('iR'),
-  const Symbol('iS'),
-  const Symbol('iT'),
-  const Symbol('iU'),
-  const Symbol('iV'),
-  const Symbol('iW'),
-  const Symbol('iX'),
-  const Symbol('iY'),
-  const Symbol('iZ'),
-  const Symbol('ja'),
-  const Symbol('jb'),
-  const Symbol('jc'),
-  const Symbol('jd'),
-  const Symbol('je'),
-  const Symbol('jf'),
-  const Symbol('jg'),
-  const Symbol('jh'),
-  const Symbol('ji'),
-  const Symbol('jj'),
-  const Symbol('jk'),
-  const Symbol('jl'),
-  const Symbol('jm'),
-  const Symbol('jn'),
-  const Symbol('jo'),
-  const Symbol('jp'),
-  const Symbol('jq'),
-  const Symbol('jr'),
-  const Symbol('js'),
-  const Symbol('jt'),
-  const Symbol('ju'),
-  const Symbol('jv'),
-  const Symbol('jw'),
-  const Symbol('jx'),
-  const Symbol('jy'),
-  const Symbol('jz'),
-  const Symbol('jA'),
-  const Symbol('jB'),
-  const Symbol('jC'),
-  const Symbol('jD'),
-  const Symbol('jE'),
-  const Symbol('jF'),
-  const Symbol('jG'),
-  const Symbol('jH'),
-  const Symbol('jI'),
-  const Symbol('jJ'),
-  const Symbol('jK'),
-  const Symbol('jL'),
-  const Symbol('jM'),
-  const Symbol('jN'),
-  const Symbol('jO'),
-  const Symbol('jP'),
-  const Symbol('jQ'),
-  const Symbol('jR'),
-  const Symbol('jS'),
-  const Symbol('jT'),
-  const Symbol('jU'),
-  const Symbol('jV'),
-  const Symbol('jW'),
-  const Symbol('jX'),
-  const Symbol('jY'),
-  const Symbol('jZ'),
-  const Symbol('ka'),
-  const Symbol('kb'),
-  const Symbol('kc'),
-  const Symbol('kd'),
-  const Symbol('ke'),
-  const Symbol('kf'),
-  const Symbol('kg'),
-  const Symbol('kh'),
-  const Symbol('ki'),
-  const Symbol('kj'),
-  const Symbol('kk'),
-  const Symbol('kl'),
-  const Symbol('km'),
-  const Symbol('kn'),
-  const Symbol('ko'),
-  const Symbol('kp'),
-  const Symbol('kq'),
-  const Symbol('kr'),
-  const Symbol('ks'),
-  const Symbol('kt'),
-  const Symbol('ku'),
-  const Symbol('kv'),
-  const Symbol('kw'),
-  const Symbol('kx'),
-  const Symbol('ky'),
-  const Symbol('kz'),
-  const Symbol('kA'),
-  const Symbol('kB'),
-  const Symbol('kC'),
-  const Symbol('kD'),
-  const Symbol('kE'),
-  const Symbol('kF'),
-  const Symbol('kG'),
-  const Symbol('kH'),
-  const Symbol('kI'),
-  const Symbol('kJ'),
-  const Symbol('kK'),
-  const Symbol('kL'),
-  const Symbol('kM'),
-  const Symbol('kN'),
-  const Symbol('kO'),
-  const Symbol('kP'),
-  const Symbol('kQ'),
-  const Symbol('kR'),
-  const Symbol('kS'),
-  const Symbol('kT'),
-  const Symbol('kU'),
-  const Symbol('kV'),
-  const Symbol('kW'),
-  const Symbol('kX'),
-  const Symbol('kY'),
-  const Symbol('kZ'),
-  const Symbol('la'),
-  const Symbol('lb'),
-  const Symbol('lc'),
-  const Symbol('ld'),
-  const Symbol('le'),
-  const Symbol('lf'),
-  const Symbol('lg'),
-  const Symbol('lh'),
-  const Symbol('li'),
-  const Symbol('lj'),
-  const Symbol('lk'),
-  const Symbol('ll'),
-  const Symbol('lm'),
-  const Symbol('ln'),
-  const Symbol('lo'),
-  const Symbol('lp'),
-  const Symbol('lq'),
-  const Symbol('lr'),
-  const Symbol('ls'),
-  const Symbol('lt'),
-  const Symbol('lu'),
-  const Symbol('lv'),
-  const Symbol('lw'),
-  const Symbol('lx'),
-  const Symbol('ly'),
-  const Symbol('lz'),
-  const Symbol('lA'),
-  const Symbol('lB'),
-  const Symbol('lC'),
-  const Symbol('lD'),
-  const Symbol('lE'),
-  const Symbol('lF'),
-  const Symbol('lG'),
-  const Symbol('lH'),
-  const Symbol('lI'),
-  const Symbol('lJ'),
-  const Symbol('lK'),
-  const Symbol('lL'),
-  const Symbol('lM'),
-  const Symbol('lN'),
-  const Symbol('lO'),
-  const Symbol('lP'),
-  const Symbol('lQ'),
-  const Symbol('lR'),
-  const Symbol('lS'),
-  const Symbol('lT'),
-  const Symbol('lU'),
-  const Symbol('lV'),
-  const Symbol('lW'),
-  const Symbol('lX'),
-  const Symbol('lY'),
-  const Symbol('lZ'),
-  const Symbol('ma'),
-  const Symbol('mb'),
-  const Symbol('mc'),
-  const Symbol('md'),
-  const Symbol('me'),
-  const Symbol('mf'),
-  const Symbol('mg'),
-  const Symbol('mh'),
-  const Symbol('mi'),
-  const Symbol('mj'),
-  const Symbol('mk'),
-  const Symbol('ml'),
-  const Symbol('mm'),
-  const Symbol('mn'),
-  const Symbol('mo'),
-  const Symbol('mp'),
-  const Symbol('mq'),
-  const Symbol('mr'),
-  const Symbol('ms'),
-  const Symbol('mt'),
-  const Symbol('mu'),
-  const Symbol('mv'),
-  const Symbol('mw'),
-  const Symbol('mx'),
-  const Symbol('my'),
-  const Symbol('mz'),
-  const Symbol('mA'),
-  const Symbol('mB'),
-  const Symbol('mC'),
-  const Symbol('mD'),
-  const Symbol('mE'),
-  const Symbol('mF'),
-  const Symbol('mG'),
-  const Symbol('mH'),
-  const Symbol('mI'),
-  const Symbol('mJ'),
-  const Symbol('mK'),
-  const Symbol('mL'),
-  const Symbol('mM'),
-  const Symbol('mN'),
-  const Symbol('mO'),
-  const Symbol('mP'),
-  const Symbol('mQ'),
-  const Symbol('mR'),
-  const Symbol('mS'),
-  const Symbol('mT'),
-  const Symbol('mU'),
-  const Symbol('mV'),
-  const Symbol('mW'),
-  const Symbol('mX'),
-  const Symbol('mY'),
-  const Symbol('mZ'),
-  const Symbol('na'),
-  const Symbol('nb'),
-  const Symbol('nc'),
-  const Symbol('nd'),
-  const Symbol('ne'),
-  const Symbol('nf'),
-  const Symbol('ng'),
-  const Symbol('nh'),
-  const Symbol('ni'),
-  const Symbol('nj'),
-  const Symbol('nk'),
-  const Symbol('nl'),
-  const Symbol('nm'),
-  const Symbol('nn'),
-  const Symbol('no'),
-  const Symbol('np'),
-  const Symbol('nq'),
-  const Symbol('nr'),
-  const Symbol('ns'),
-  const Symbol('nt'),
-  const Symbol('nu'),
-  const Symbol('nv'),
-  const Symbol('nw'),
-  const Symbol('nx'),
-  const Symbol('ny'),
-  const Symbol('nz'),
-  const Symbol('nA'),
-  const Symbol('nB'),
-  const Symbol('nC'),
-  const Symbol('nD'),
-  const Symbol('nE'),
-  const Symbol('nF'),
-  const Symbol('nG'),
-  const Symbol('nH'),
-  const Symbol('nI'),
-  const Symbol('nJ'),
-  const Symbol('nK'),
-  const Symbol('nL'),
-  const Symbol('nM'),
-  const Symbol('nN'),
-  const Symbol('nO'),
-  const Symbol('nP'),
-  const Symbol('nQ'),
-  const Symbol('nR'),
-  const Symbol('nS'),
-  const Symbol('nT'),
-  const Symbol('nU'),
-  const Symbol('nV'),
-  const Symbol('nW'),
-  const Symbol('nX'),
-  const Symbol('nY'),
-  const Symbol('nZ'),
-  const Symbol('oa'),
-  const Symbol('ob'),
-  const Symbol('oc'),
-  const Symbol('od'),
-  const Symbol('oe'),
-  const Symbol('of'),
-  const Symbol('og'),
-  const Symbol('oh'),
-  const Symbol('oi'),
-  const Symbol('oj'),
-  const Symbol('ok'),
-  const Symbol('ol'),
-  const Symbol('om'),
-  const Symbol('on'),
-  const Symbol('oo'),
-  const Symbol('op'),
-  const Symbol('oq'),
-  const Symbol('or'),
-  const Symbol('os'),
-  const Symbol('ot'),
-  const Symbol('ou'),
-  const Symbol('ov'),
-  const Symbol('ow'),
-  const Symbol('ox'),
-  const Symbol('oy'),
-  const Symbol('oz'),
-  const Symbol('oA'),
-  const Symbol('oB'),
-  const Symbol('oC'),
-  const Symbol('oD'),
-  const Symbol('oE'),
-  const Symbol('oF'),
-  const Symbol('oG'),
-  const Symbol('oH'),
-  const Symbol('oI'),
-  const Symbol('oJ'),
-  const Symbol('oK'),
-  const Symbol('oL'),
-  const Symbol('oM'),
-  const Symbol('oN'),
-  const Symbol('oO'),
-  const Symbol('oP'),
-  const Symbol('oQ'),
-  const Symbol('oR'),
-  const Symbol('oS'),
-  const Symbol('oT'),
-  const Symbol('oU'),
-  const Symbol('oV'),
-  const Symbol('oW'),
-  const Symbol('oX'),
-  const Symbol('oY'),
-  const Symbol('oZ'),
-  const Symbol('pa'),
-  const Symbol('pb'),
-  const Symbol('pc'),
-  const Symbol('pd'),
-  const Symbol('pe'),
-  const Symbol('pf'),
-  const Symbol('pg'),
-  const Symbol('ph'),
-  const Symbol('pi'),
-  const Symbol('pj'),
-  const Symbol('pk'),
-  const Symbol('pl'),
-  const Symbol('pm'),
-  const Symbol('pn'),
-  const Symbol('po'),
-  const Symbol('pp'),
-  const Symbol('pq'),
-  const Symbol('pr'),
-  const Symbol('ps'),
-  const Symbol('pt'),
-  const Symbol('pu'),
-  const Symbol('pv'),
-  const Symbol('pw'),
-  const Symbol('px'),
-  const Symbol('py'),
-  const Symbol('pz'),
-  const Symbol('pA'),
-  const Symbol('pB'),
-  const Symbol('pC'),
-  const Symbol('pD'),
-  const Symbol('pE'),
-  const Symbol('pF'),
-  const Symbol('pG'),
-  const Symbol('pH'),
-  const Symbol('pI'),
-  const Symbol('pJ'),
-  const Symbol('pK'),
-  const Symbol('pL'),
-  const Symbol('pM'),
-  const Symbol('pN'),
-  const Symbol('pO'),
-  const Symbol('pP'),
-  const Symbol('pQ'),
-  const Symbol('pR'),
-  const Symbol('pS'),
-  const Symbol('pT'),
-  const Symbol('pU'),
-  const Symbol('pV'),
-  const Symbol('pW'),
-  const Symbol('pX'),
-  const Symbol('pY'),
-  const Symbol('pZ'),
-  const Symbol('qa'),
-  const Symbol('qb'),
-  const Symbol('qc'),
-  const Symbol('qd'),
-  const Symbol('qe'),
-  const Symbol('qf'),
-  const Symbol('qg'),
-  const Symbol('qh'),
-  const Symbol('qi'),
-  const Symbol('qj'),
-  const Symbol('qk'),
-  const Symbol('ql'),
-  const Symbol('qm'),
-  const Symbol('qn'),
-  const Symbol('qo'),
-  const Symbol('qp'),
-  const Symbol('qq'),
-  const Symbol('qr'),
-  const Symbol('qs'),
-  const Symbol('qt'),
-  const Symbol('qu'),
-  const Symbol('qv'),
-  const Symbol('qw'),
-  const Symbol('qx'),
-  const Symbol('qy'),
-  const Symbol('qz'),
-  const Symbol('qA'),
-  const Symbol('qB'),
-  const Symbol('qC'),
-  const Symbol('qD'),
-  const Symbol('qE'),
-  const Symbol('qF'),
-  const Symbol('qG'),
-  const Symbol('qH'),
-  const Symbol('qI'),
-  const Symbol('qJ'),
-  const Symbol('qK'),
-  const Symbol('qL'),
-  const Symbol('qM'),
-  const Symbol('qN'),
-  const Symbol('qO'),
-  const Symbol('qP'),
-  const Symbol('qQ'),
-  const Symbol('qR'),
-  const Symbol('qS'),
-  const Symbol('qT'),
-  const Symbol('qU'),
-  const Symbol('qV'),
-  const Symbol('qW'),
-  const Symbol('qX'),
-  const Symbol('qY'),
-  const Symbol('qZ'),
-  const Symbol('ra'),
-  const Symbol('rb'),
-  const Symbol('rc'),
-  const Symbol('rd'),
-  const Symbol('re'),
-  const Symbol('rf'),
-  const Symbol('rg'),
-  const Symbol('rh'),
-  const Symbol('ri'),
-  const Symbol('rj'),
-  const Symbol('rk'),
-  const Symbol('rl'),
-  const Symbol('rm'),
-  const Symbol('rn'),
-  const Symbol('ro'),
-  const Symbol('rp'),
-  const Symbol('rq'),
-  const Symbol('rr'),
-  const Symbol('rs'),
-  const Symbol('rt'),
-  const Symbol('ru'),
-  const Symbol('rv'),
-  const Symbol('rw'),
-  const Symbol('rx'),
-  const Symbol('ry'),
-  const Symbol('rz'),
-  const Symbol('rA'),
-  const Symbol('rB'),
-  const Symbol('rC'),
-  const Symbol('rD'),
-  const Symbol('rE'),
-  const Symbol('rF'),
-  const Symbol('rG'),
-  const Symbol('rH'),
-  const Symbol('rI'),
-  const Symbol('rJ'),
-  const Symbol('rK'),
-  const Symbol('rL'),
-  const Symbol('rM'),
-  const Symbol('rN'),
-  const Symbol('rO'),
-  const Symbol('rP'),
-  const Symbol('rQ'),
-  const Symbol('rR'),
-  const Symbol('rS'),
-  const Symbol('rT'),
-  const Symbol('rU'),
-  const Symbol('rV'),
-  const Symbol('rW'),
-  const Symbol('rX'),
-  const Symbol('rY'),
-  const Symbol('rZ'),
-  const Symbol('sa'),
-  const Symbol('sb'),
-  const Symbol('sc'),
-  const Symbol('sd'),
-  const Symbol('se'),
-  const Symbol('sf'),
-  const Symbol('sg'),
-  const Symbol('sh'),
-  const Symbol('si'),
-  const Symbol('sj'),
-  const Symbol('sk'),
-  const Symbol('sl'),
-  const Symbol('sm'),
-  const Symbol('sn'),
-  const Symbol('so'),
-  const Symbol('sp'),
-  const Symbol('sq'),
-  const Symbol('sr'),
-  const Symbol('ss'),
-  const Symbol('st'),
-  const Symbol('su'),
-  const Symbol('sv'),
-  const Symbol('sw'),
-  const Symbol('sx'),
-  const Symbol('sy'),
-  const Symbol('sz'),
-  const Symbol('sA'),
-  const Symbol('sB'),
-  const Symbol('sC'),
-  const Symbol('sD'),
-  const Symbol('sE'),
-  const Symbol('sF'),
-  const Symbol('sG'),
-  const Symbol('sH'),
-  const Symbol('sI'),
-  const Symbol('sJ'),
-  const Symbol('sK'),
-  const Symbol('sL'),
-  const Symbol('sM'),
-  const Symbol('sN'),
-  const Symbol('sO'),
-  const Symbol('sP'),
-  const Symbol('sQ'),
-  const Symbol('sR'),
-  const Symbol('sS'),
-  const Symbol('sT'),
-  const Symbol('sU'),
-  const Symbol('sV'),
-  const Symbol('sW'),
-  const Symbol('sX'),
-  const Symbol('sY'),
-  const Symbol('sZ'),
-  const Symbol('ta'),
-  const Symbol('tb'),
-  const Symbol('tc'),
-  const Symbol('td'),
-  const Symbol('te'),
-  const Symbol('tf'),
-  const Symbol('tg'),
-  const Symbol('th'),
-  const Symbol('ti'),
-  const Symbol('tj'),
-  const Symbol('tk'),
-  const Symbol('tl'),
-  const Symbol('tm'),
-  const Symbol('tn'),
-  const Symbol('to'),
-  const Symbol('tp'),
-  const Symbol('tq'),
-  const Symbol('tr'),
-  const Symbol('ts'),
-  const Symbol('tt'),
-  const Symbol('tu'),
-  const Symbol('tv'),
-  const Symbol('tw'),
-  const Symbol('tx'),
-  const Symbol('ty'),
-  const Symbol('tz'),
-  const Symbol('tA'),
-  const Symbol('tB'),
-  const Symbol('tC'),
-  const Symbol('tD'),
-  const Symbol('tE'),
-  const Symbol('tF'),
-  const Symbol('tG'),
-  const Symbol('tH'),
-  const Symbol('tI'),
-  const Symbol('tJ'),
-  const Symbol('tK'),
-  const Symbol('tL'),
-  const Symbol('tM'),
-  const Symbol('tN'),
-  const Symbol('tO'),
-  const Symbol('tP'),
-  const Symbol('tQ'),
-  const Symbol('tR'),
-  const Symbol('tS'),
-  const Symbol('tT'),
-  const Symbol('tU'),
-  const Symbol('tV'),
-  const Symbol('tW'),
-  const Symbol('tX'),
-  const Symbol('tY'),
-  const Symbol('tZ'),
-  const Symbol('ua'),
-  const Symbol('ub'),
-  const Symbol('uc'),
-  const Symbol('ud'),
-  const Symbol('ue'),
-  const Symbol('uf'),
-  const Symbol('ug'),
-  const Symbol('uh'),
-  const Symbol('ui'),
-  const Symbol('uj'),
-  const Symbol('uk'),
-  const Symbol('ul'),
-  const Symbol('um'),
-  const Symbol('un'),
-  const Symbol('uo'),
-  const Symbol('up'),
-  const Symbol('uq'),
-  const Symbol('ur'),
-  const Symbol('us'),
-  const Symbol('ut'),
-  const Symbol('uu'),
-  const Symbol('uv'),
-  const Symbol('uw'),
-  const Symbol('ux'),
-  const Symbol('uy'),
-  const Symbol('uz'),
-  const Symbol('uA'),
-  const Symbol('uB'),
-  const Symbol('uC'),
-  const Symbol('uD'),
-  const Symbol('uE'),
-  const Symbol('uF'),
-  const Symbol('uG'),
-  const Symbol('uH'),
-  const Symbol('uI'),
-  const Symbol('uJ'),
-  const Symbol('uK'),
-  const Symbol('uL'),
-  const Symbol('uM'),
-  const Symbol('uN'),
-  const Symbol('uO'),
-  const Symbol('uP'),
-  const Symbol('uQ'),
-  const Symbol('uR'),
-  const Symbol('uS'),
-  const Symbol('uT'),
-  const Symbol('uU'),
-  const Symbol('uV'),
-  const Symbol('uW'),
-  const Symbol('uX'),
-  const Symbol('uY'),
-  const Symbol('uZ'),
-  const Symbol('va'),
-  const Symbol('vb'),
-  const Symbol('vc'),
-  const Symbol('vd'),
-  const Symbol('ve'),
-  const Symbol('vf'),
-  const Symbol('vg'),
-  const Symbol('vh'),
-  const Symbol('vi'),
-  const Symbol('vj'),
-  const Symbol('vk'),
-  const Symbol('vl'),
-  const Symbol('vm'),
-  const Symbol('vn'),
-  const Symbol('vo'),
-  const Symbol('vp'),
-  const Symbol('vq'),
-  const Symbol('vr'),
-  const Symbol('vs'),
-  const Symbol('vt'),
-  const Symbol('vu'),
-  const Symbol('vv'),
-  const Symbol('vw'),
-  const Symbol('vx'),
-  const Symbol('vy'),
-  const Symbol('vz'),
-  const Symbol('vA'),
-  const Symbol('vB'),
-  const Symbol('vC'),
-  const Symbol('vD'),
-  const Symbol('vE'),
-  const Symbol('vF'),
-  const Symbol('vG'),
-  const Symbol('vH'),
-  const Symbol('vI'),
-  const Symbol('vJ'),
-  const Symbol('vK'),
-  const Symbol('vL'),
-  const Symbol('vM'),
-  const Symbol('vN'),
-  const Symbol('vO'),
-  const Symbol('vP'),
-  const Symbol('vQ'),
-  const Symbol('vR'),
-  const Symbol('vS'),
-  const Symbol('vT'),
-  const Symbol('vU'),
-  const Symbol('vV'),
-  const Symbol('vW'),
-  const Symbol('vX'),
-  const Symbol('vY'),
-  const Symbol('vZ'),
-  const Symbol('wa'),
-  const Symbol('wb'),
-  const Symbol('wc'),
-  const Symbol('wd'),
-  const Symbol('we'),
-  const Symbol('wf'),
-  const Symbol('wg'),
-  const Symbol('wh'),
-  const Symbol('wi'),
-  const Symbol('wj'),
-  const Symbol('wk'),
-  const Symbol('wl'),
-  const Symbol('wm'),
-  const Symbol('wn'),
-  const Symbol('wo'),
-  const Symbol('wp'),
-  const Symbol('wq'),
-  const Symbol('wr'),
-  const Symbol('ws'),
-  const Symbol('wt'),
-  const Symbol('wu'),
-  const Symbol('wv'),
-  const Symbol('ww'),
-  const Symbol('wx'),
-  const Symbol('wy'),
-  const Symbol('wz'),
-  const Symbol('wA'),
-  const Symbol('wB'),
-  const Symbol('wC'),
-  const Symbol('wD'),
-  const Symbol('wE'),
-  const Symbol('wF'),
-  const Symbol('wG'),
-  const Symbol('wH'),
-  const Symbol('wI'),
-  const Symbol('wJ'),
-  const Symbol('wK'),
-  const Symbol('wL'),
-  const Symbol('wM'),
-  const Symbol('wN'),
-  const Symbol('wO'),
-  const Symbol('wP'),
-  const Symbol('wQ'),
-  const Symbol('wR'),
-  const Symbol('wS'),
-  const Symbol('wT'),
-  const Symbol('wU'),
-  const Symbol('wV'),
-  const Symbol('wW'),
-  const Symbol('wX'),
-  const Symbol('wY'),
-  const Symbol('wZ'),
-  const Symbol('xa'),
-  const Symbol('xb'),
-  const Symbol('xc'),
-  const Symbol('xd'),
-  const Symbol('xe'),
-  const Symbol('xf'),
-  const Symbol('xg'),
-  const Symbol('xh'),
-  const Symbol('xi'),
-  const Symbol('xj'),
-  const Symbol('xk'),
-  const Symbol('xl'),
-  const Symbol('xm'),
-  const Symbol('xn'),
-  const Symbol('xo'),
-  const Symbol('xp'),
-  const Symbol('xq'),
-  const Symbol('xr'),
-  const Symbol('xs'),
-  const Symbol('xt'),
-  const Symbol('xu'),
-  const Symbol('xv'),
-  const Symbol('xw'),
-  const Symbol('xx'),
-  const Symbol('xy'),
-  const Symbol('xz'),
-  const Symbol('xA'),
-  const Symbol('xB'),
-  const Symbol('xC'),
-  const Symbol('xD'),
-  const Symbol('xE'),
-  const Symbol('xF'),
-  const Symbol('xG'),
-  const Symbol('xH'),
-  const Symbol('xI'),
-  const Symbol('xJ'),
-  const Symbol('xK'),
-  const Symbol('xL'),
-  const Symbol('xM'),
-  const Symbol('xN'),
-  const Symbol('xO'),
-  const Symbol('xP'),
-  const Symbol('xQ'),
-  const Symbol('xR'),
-  const Symbol('xS'),
-  const Symbol('xT'),
-  const Symbol('xU'),
-  const Symbol('xV'),
-  const Symbol('xW'),
-  const Symbol('xX'),
-  const Symbol('xY'),
-  const Symbol('xZ'),
-  const Symbol('ya'),
-  const Symbol('yb'),
-  const Symbol('yc'),
-  const Symbol('yd'),
-  const Symbol('ye'),
-  const Symbol('yf'),
-  const Symbol('yg'),
-  const Symbol('yh'),
-  const Symbol('yi'),
-  const Symbol('yj'),
-  const Symbol('yk'),
-  const Symbol('yl'),
-  const Symbol('ym'),
-  const Symbol('yn'),
-  const Symbol('yo'),
-  const Symbol('yp'),
-  const Symbol('yq'),
-  const Symbol('yr'),
-  const Symbol('ys'),
-  const Symbol('yt'),
-  const Symbol('yu'),
-  const Symbol('yv'),
-  const Symbol('yw'),
-  const Symbol('yx'),
-  const Symbol('yy'),
-  const Symbol('yz'),
-  const Symbol('yA'),
-  const Symbol('yB'),
-  const Symbol('yC'),
-  const Symbol('yD'),
-  const Symbol('yE'),
-  const Symbol('yF'),
-  const Symbol('yG'),
-  const Symbol('yH'),
-  const Symbol('yI'),
-  const Symbol('yJ'),
-  const Symbol('yK'),
-  const Symbol('yL'),
-  const Symbol('yM'),
-  const Symbol('yN'),
-  const Symbol('yO'),
-  const Symbol('yP'),
-  const Symbol('yQ'),
-  const Symbol('yR'),
-  const Symbol('yS'),
-  const Symbol('yT'),
-  const Symbol('yU'),
-  const Symbol('yV'),
-  const Symbol('yW'),
-  const Symbol('yX'),
-  const Symbol('yY'),
-  const Symbol('yZ'),
-  const Symbol('za'),
-  const Symbol('zb'),
-  const Symbol('zc'),
-  const Symbol('zd'),
-  const Symbol('ze'),
-  const Symbol('zf'),
-  const Symbol('zg'),
-  const Symbol('zh'),
-  const Symbol('zi'),
-  const Symbol('zj'),
-  const Symbol('zk'),
-  const Symbol('zl'),
-  const Symbol('zm'),
-  const Symbol('zn'),
-  const Symbol('zo'),
-  const Symbol('zp'),
-  const Symbol('zq'),
-  const Symbol('zr'),
-  const Symbol('zs'),
-  const Symbol('zt'),
-  const Symbol('zu'),
-  const Symbol('zv'),
-  const Symbol('zw'),
-  const Symbol('zx'),
-  const Symbol('zy'),
-  const Symbol('zz'),
-  const Symbol('zA'),
-  const Symbol('zB'),
-  const Symbol('zC'),
-  const Symbol('zD'),
-  const Symbol('zE'),
-  const Symbol('zF'),
-  const Symbol('zG'),
-  const Symbol('zH'),
-  const Symbol('zI'),
-  const Symbol('zJ'),
-  const Symbol('zK'),
-  const Symbol('zL'),
-  const Symbol('zM'),
-  const Symbol('zN'),
-  const Symbol('zO'),
-  const Symbol('zP'),
-  const Symbol('zQ'),
-  const Symbol('zR'),
-  const Symbol('zS'),
-  const Symbol('zT'),
-  const Symbol('zU'),
-  const Symbol('zV'),
-  const Symbol('zW'),
-  const Symbol('zX'),
-  const Symbol('zY'),
-  const Symbol('zZ'),
-  const Symbol('Aa'),
-  const Symbol('Ab'),
-  const Symbol('Ac'),
-  const Symbol('Ad'),
-  const Symbol('Ae'),
-  const Symbol('Af'),
-  const Symbol('Ag'),
-  const Symbol('Ah'),
-  const Symbol('Ai'),
-  const Symbol('Aj'),
-  const Symbol('Ak'),
-  const Symbol('Al'),
-  const Symbol('Am'),
-  const Symbol('An'),
-  const Symbol('Ao'),
-  const Symbol('Ap'),
-  const Symbol('Aq'),
-  const Symbol('Ar'),
-  const Symbol('As'),
-  const Symbol('At'),
-  const Symbol('Au'),
-  const Symbol('Av'),
-  const Symbol('Aw'),
-  const Symbol('Ax'),
-  const Symbol('Ay'),
-  const Symbol('Az'),
-  const Symbol('AA'),
-  const Symbol('AB'),
-  const Symbol('AC'),
-  const Symbol('AD'),
-  const Symbol('AE'),
-  const Symbol('AF'),
-  const Symbol('AG'),
-  const Symbol('AH'),
-  const Symbol('AI'),
-  const Symbol('AJ'),
-  const Symbol('AK'),
-  const Symbol('AL'),
-  const Symbol('AM'),
-  const Symbol('AN'),
-  const Symbol('AO'),
-  const Symbol('AP'),
-  const Symbol('AQ'),
-  const Symbol('AR'),
-  const Symbol('AS'),
-  const Symbol('AT'),
-  const Symbol('AU'),
-  const Symbol('AV'),
-  const Symbol('AW'),
-  const Symbol('AX'),
-  const Symbol('AY'),
-  const Symbol('AZ'),
-  const Symbol('Ba'),
-  const Symbol('Bb'),
-  const Symbol('Bc'),
-  const Symbol('Bd'),
-  const Symbol('Be'),
-  const Symbol('Bf'),
-  const Symbol('Bg'),
-  const Symbol('Bh'),
-  const Symbol('Bi'),
-  const Symbol('Bj'),
-  const Symbol('Bk'),
-  const Symbol('Bl'),
-  const Symbol('Bm'),
-  const Symbol('Bn'),
-  const Symbol('Bo'),
-  const Symbol('Bp'),
-  const Symbol('Bq'),
-  const Symbol('Br'),
-  const Symbol('Bs'),
-  const Symbol('Bt'),
-  const Symbol('Bu'),
-  const Symbol('Bv'),
-  const Symbol('Bw'),
-  const Symbol('Bx'),
-  const Symbol('By'),
-  const Symbol('Bz'),
-  const Symbol('BA'),
-  const Symbol('BB'),
-  const Symbol('BC'),
-  const Symbol('BD'),
-  const Symbol('BE'),
-  const Symbol('BF'),
-  const Symbol('BG'),
-  const Symbol('BH'),
-  const Symbol('BI'),
-  const Symbol('BJ'),
-  const Symbol('BK'),
-  const Symbol('BL'),
-  const Symbol('BM'),
-  const Symbol('BN'),
-  const Symbol('BO'),
-  const Symbol('BP'),
-  const Symbol('BQ'),
-  const Symbol('BR'),
-  const Symbol('BS'),
-  const Symbol('BT'),
-  const Symbol('BU'),
-  const Symbol('BV'),
-  const Symbol('BW'),
-  const Symbol('BX'),
-  const Symbol('BY'),
-  const Symbol('BZ'),
-  const Symbol('Ca'),
-  const Symbol('Cb'),
-  const Symbol('Cc'),
-  const Symbol('Cd'),
-  const Symbol('Ce'),
-  const Symbol('Cf'),
-  const Symbol('Cg'),
-  const Symbol('Ch'),
-  const Symbol('Ci'),
-  const Symbol('Cj'),
-  const Symbol('Ck'),
-  const Symbol('Cl'),
-  const Symbol('Cm'),
-  const Symbol('Cn'),
-  const Symbol('Co'),
-  const Symbol('Cp'),
-  const Symbol('Cq'),
-  const Symbol('Cr'),
-  const Symbol('Cs'),
-  const Symbol('Ct'),
-  const Symbol('Cu'),
-  const Symbol('Cv'),
-  const Symbol('Cw'),
-  const Symbol('Cx'),
-  const Symbol('Cy'),
-  const Symbol('Cz'),
-  const Symbol('CA'),
-  const Symbol('CB'),
-  const Symbol('CC'),
-  const Symbol('CD'),
-  const Symbol('CE'),
-  const Symbol('CF'),
-  const Symbol('CG'),
-  const Symbol('CH'),
-  const Symbol('CI'),
-  const Symbol('CJ'),
-  const Symbol('CK'),
-  const Symbol('CL'),
-  const Symbol('CM'),
-  const Symbol('CN'),
-  const Symbol('CO'),
-  const Symbol('CP'),
-  const Symbol('CQ'),
-  const Symbol('CR'),
-  const Symbol('CS'),
-  const Symbol('CT'),
-  const Symbol('CU'),
-  const Symbol('CV'),
-  const Symbol('CW'),
-  const Symbol('CX'),
-  const Symbol('CY'),
-  const Symbol('CZ'),
-  const Symbol('Da'),
-  const Symbol('Db'),
-  const Symbol('Dc'),
-  const Symbol('Dd'),
-  const Symbol('De'),
-  const Symbol('Df'),
-  const Symbol('Dg'),
-  const Symbol('Dh'),
-  const Symbol('Di'),
-  const Symbol('Dj'),
-  const Symbol('Dk'),
-  const Symbol('Dl'),
-  const Symbol('Dm'),
-  const Symbol('Dn'),
-  const Symbol('Do'),
-  const Symbol('Dp'),
-  const Symbol('Dq'),
-  const Symbol('Dr'),
-  const Symbol('Ds'),
-  const Symbol('Dt'),
-  const Symbol('Du'),
-  const Symbol('Dv'),
-  const Symbol('Dw'),
-  const Symbol('Dx'),
-  const Symbol('Dy'),
-  const Symbol('Dz'),
-  const Symbol('DA'),
-  const Symbol('DB'),
-  const Symbol('DC'),
-  const Symbol('DD'),
-  const Symbol('DE'),
-  const Symbol('DF'),
-  const Symbol('DG'),
-  const Symbol('DH'),
-  const Symbol('DI'),
-  const Symbol('DJ'),
-  const Symbol('DK'),
-  const Symbol('DL'),
-  const Symbol('DM'),
-  const Symbol('DN'),
-  const Symbol('DO'),
-  const Symbol('DP'),
-  const Symbol('DQ'),
-  const Symbol('DR'),
-  const Symbol('DS'),
-  const Symbol('DT'),
-  const Symbol('DU'),
-  const Symbol('DV'),
-  const Symbol('DW'),
-  const Symbol('DX'),
-  const Symbol('DY'),
-  const Symbol('DZ'),
-  const Symbol('Ea'),
-  const Symbol('Eb'),
-  const Symbol('Ec'),
-  const Symbol('Ed'),
-  const Symbol('Ee'),
-  const Symbol('Ef'),
-  const Symbol('Eg'),
-  const Symbol('Eh'),
-  const Symbol('Ei'),
-  const Symbol('Ej'),
-  const Symbol('Ek'),
-  const Symbol('El'),
-  const Symbol('Em'),
-  const Symbol('En'),
-  const Symbol('Eo'),
-  const Symbol('Ep'),
-  const Symbol('Eq'),
-  const Symbol('Er'),
-  const Symbol('Es'),
-  const Symbol('Et'),
-  const Symbol('Eu'),
-  const Symbol('Ev'),
-  const Symbol('Ew'),
-  const Symbol('Ex'),
-  const Symbol('Ey'),
-  const Symbol('Ez'),
-  const Symbol('EA'),
-  const Symbol('EB'),
-  const Symbol('EC'),
-  const Symbol('ED'),
-  const Symbol('EE'),
-  const Symbol('EF'),
-  const Symbol('EG'),
-  const Symbol('EH'),
-  const Symbol('EI'),
-  const Symbol('EJ'),
-  const Symbol('EK'),
-  const Symbol('EL'),
-  const Symbol('EM'),
-  const Symbol('EN'),
-  const Symbol('EO'),
-  const Symbol('EP'),
-  const Symbol('EQ'),
-  const Symbol('ER'),
-  const Symbol('ES'),
-  const Symbol('ET'),
-  const Symbol('EU'),
-  const Symbol('EV'),
-  const Symbol('EW'),
-  const Symbol('EX'),
-  const Symbol('EY'),
-  const Symbol('EZ'),
-  const Symbol('Fa'),
-  const Symbol('Fb'),
-  const Symbol('Fc'),
-  const Symbol('Fd'),
-  const Symbol('Fe'),
-  const Symbol('Ff'),
-  const Symbol('Fg'),
-  const Symbol('Fh'),
-  const Symbol('Fi'),
-  const Symbol('Fj'),
-  const Symbol('Fk'),
-  const Symbol('Fl'),
-  const Symbol('Fm'),
-  const Symbol('Fn'),
-  const Symbol('Fo'),
-  const Symbol('Fp'),
-  const Symbol('Fq'),
-  const Symbol('Fr'),
-  const Symbol('Fs'),
-  const Symbol('Ft'),
-  const Symbol('Fu'),
-  const Symbol('Fv'),
-  const Symbol('Fw'),
-  const Symbol('Fx'),
-  const Symbol('Fy'),
-  const Symbol('Fz'),
-  const Symbol('FA'),
-  const Symbol('FB'),
-  const Symbol('FC'),
-  const Symbol('FD'),
-  const Symbol('FE'),
-  const Symbol('FF'),
-  const Symbol('FG'),
-  const Symbol('FH'),
-  const Symbol('FI'),
-  const Symbol('FJ'),
-  const Symbol('FK'),
-  const Symbol('FL'),
-  const Symbol('FM'),
-  const Symbol('FN'),
-  const Symbol('FO'),
-  const Symbol('FP'),
-  const Symbol('FQ'),
-  const Symbol('FR'),
-  const Symbol('FS'),
-  const Symbol('FT'),
-  const Symbol('FU'),
-  const Symbol('FV'),
-  const Symbol('FW'),
-  const Symbol('FX'),
-  const Symbol('FY'),
-  const Symbol('FZ'),
-  const Symbol('Ga'),
-  const Symbol('Gb'),
-  const Symbol('Gc'),
-  const Symbol('Gd'),
-  const Symbol('Ge'),
-  const Symbol('Gf'),
-  const Symbol('Gg'),
-  const Symbol('Gh'),
-  const Symbol('Gi'),
-  const Symbol('Gj'),
-  const Symbol('Gk'),
-  const Symbol('Gl'),
-  const Symbol('Gm'),
-  const Symbol('Gn'),
-  const Symbol('Go'),
-  const Symbol('Gp'),
-  const Symbol('Gq'),
-  const Symbol('Gr'),
-  const Symbol('Gs'),
-  const Symbol('Gt'),
-  const Symbol('Gu'),
-  const Symbol('Gv'),
-  const Symbol('Gw'),
-  const Symbol('Gx'),
-  const Symbol('Gy'),
-  const Symbol('Gz'),
-  const Symbol('GA'),
-  const Symbol('GB'),
-  const Symbol('GC'),
-  const Symbol('GD'),
-  const Symbol('GE'),
-  const Symbol('GF'),
-  const Symbol('GG'),
-  const Symbol('GH'),
-  const Symbol('GI'),
-  const Symbol('GJ'),
-  const Symbol('GK'),
-  const Symbol('GL'),
-  const Symbol('GM'),
-  const Symbol('GN'),
-  const Symbol('GO'),
-  const Symbol('GP'),
-  const Symbol('GQ'),
-  const Symbol('GR'),
-  const Symbol('GS'),
-  const Symbol('GT'),
-  const Symbol('GU'),
-  const Symbol('GV'),
-  const Symbol('GW'),
-  const Symbol('GX'),
-  const Symbol('GY'),
-  const Symbol('GZ'),
-  const Symbol('Ha'),
-  const Symbol('Hb'),
-  const Symbol('Hc'),
-  const Symbol('Hd'),
-  const Symbol('He'),
-  const Symbol('Hf'),
-  const Symbol('Hg'),
-  const Symbol('Hh'),
-  const Symbol('Hi'),
-  const Symbol('Hj'),
-  const Symbol('Hk'),
-  const Symbol('Hl'),
-  const Symbol('Hm'),
-  const Symbol('Hn'),
-  const Symbol('Ho'),
-  const Symbol('Hp'),
-  const Symbol('Hq'),
-  const Symbol('Hr'),
-  const Symbol('Hs'),
-  const Symbol('Ht'),
-  const Symbol('Hu'),
-  const Symbol('Hv'),
-  const Symbol('Hw'),
-  const Symbol('Hx'),
-  const Symbol('Hy'),
-  const Symbol('Hz'),
-  const Symbol('HA'),
-  const Symbol('HB'),
-  const Symbol('HC'),
-  const Symbol('HD'),
-  const Symbol('HE'),
-  const Symbol('HF'),
-  const Symbol('HG'),
-  const Symbol('HH'),
-  const Symbol('HI'),
-  const Symbol('HJ'),
-  const Symbol('HK'),
-  const Symbol('HL'),
-  const Symbol('HM'),
-  const Symbol('HN'),
-  const Symbol('HO'),
-  const Symbol('HP'),
-  const Symbol('HQ'),
-  const Symbol('HR'),
-  const Symbol('HS'),
-  const Symbol('HT'),
-  const Symbol('HU'),
-  const Symbol('HV'),
-  const Symbol('HW'),
-  const Symbol('HX'),
-  const Symbol('HY'),
-  const Symbol('HZ'),
-  const Symbol('Ia'),
-  const Symbol('Ib'),
-  const Symbol('Ic'),
-  const Symbol('Id'),
-  const Symbol('Ie'),
-  const Symbol('If'),
-  const Symbol('Ig'),
-  const Symbol('Ih'),
-  const Symbol('Ii'),
-  const Symbol('Ij'),
-  const Symbol('Ik'),
-  const Symbol('Il'),
-  const Symbol('Im'),
-  const Symbol('In'),
-  const Symbol('Io'),
-  const Symbol('Ip'),
-  const Symbol('Iq'),
-  const Symbol('Ir'),
-  const Symbol('Is'),
-  const Symbol('It'),
-  const Symbol('Iu'),
-  const Symbol('Iv'),
-  const Symbol('Iw'),
-  const Symbol('Ix'),
-  const Symbol('Iy'),
-  const Symbol('Iz'),
-  const Symbol('IA'),
-  const Symbol('IB'),
-  const Symbol('IC'),
-  const Symbol('ID'),
-  const Symbol('IE'),
-  const Symbol('IF'),
-  const Symbol('IG'),
-  const Symbol('IH'),
-  const Symbol('II'),
-  const Symbol('IJ'),
-  const Symbol('IK'),
-  const Symbol('IL'),
-  const Symbol('IM'),
-  const Symbol('IN'),
-  const Symbol('IO'),
-  const Symbol('IP'),
-  const Symbol('IQ'),
-  const Symbol('IR'),
-  const Symbol('IS'),
-  const Symbol('IT'),
-  const Symbol('IU'),
-  const Symbol('IV'),
-  const Symbol('IW'),
-  const Symbol('IX'),
-  const Symbol('IY'),
-  const Symbol('IZ'),
-  const Symbol('Ja'),
-  const Symbol('Jb'),
-  const Symbol('Jc'),
-  const Symbol('Jd'),
-  const Symbol('Je'),
-  const Symbol('Jf'),
-  const Symbol('Jg'),
-  const Symbol('Jh'),
-  const Symbol('Ji'),
-  const Symbol('Jj'),
-  const Symbol('Jk'),
-  const Symbol('Jl'),
-  const Symbol('Jm'),
-  const Symbol('Jn'),
-  const Symbol('Jo'),
-  const Symbol('Jp'),
-  const Symbol('Jq'),
-  const Symbol('Jr'),
-  const Symbol('Js'),
-  const Symbol('Jt'),
-  const Symbol('Ju'),
-  const Symbol('Jv'),
-  const Symbol('Jw'),
-  const Symbol('Jx'),
-  const Symbol('Jy'),
-  const Symbol('Jz'),
-  const Symbol('JA'),
-  const Symbol('JB'),
-  const Symbol('JC'),
-  const Symbol('JD'),
-  const Symbol('JE'),
-  const Symbol('JF'),
-  const Symbol('JG'),
-  const Symbol('JH'),
-  const Symbol('JI'),
-  const Symbol('JJ'),
-  const Symbol('JK'),
-  const Symbol('JL'),
-  const Symbol('JM'),
-  const Symbol('JN'),
-  const Symbol('JO'),
-  const Symbol('JP'),
-  const Symbol('JQ'),
-  const Symbol('JR'),
-  const Symbol('JS'),
-  const Symbol('JT'),
-  const Symbol('JU'),
-  const Symbol('JV'),
-  const Symbol('JW'),
-  const Symbol('JX'),
-  const Symbol('JY'),
-  const Symbol('JZ'),
-  const Symbol('Ka'),
-  const Symbol('Kb'),
-  const Symbol('Kc'),
-  const Symbol('Kd'),
-  const Symbol('Ke'),
-  const Symbol('Kf'),
-  const Symbol('Kg'),
-  const Symbol('Kh'),
-  const Symbol('Ki'),
-  const Symbol('Kj'),
-  const Symbol('Kk'),
-  const Symbol('Kl'),
-  const Symbol('Km'),
-  const Symbol('Kn'),
-  const Symbol('Ko'),
-  const Symbol('Kp'),
-  const Symbol('Kq'),
-  const Symbol('Kr'),
-  const Symbol('Ks'),
-  const Symbol('Kt'),
-  const Symbol('Ku'),
-  const Symbol('Kv'),
-  const Symbol('Kw'),
-  const Symbol('Kx'),
-  const Symbol('Ky'),
-  const Symbol('Kz'),
-  const Symbol('KA'),
-  const Symbol('KB'),
-  const Symbol('KC'),
-  const Symbol('KD'),
-  const Symbol('KE'),
-  const Symbol('KF'),
-  const Symbol('KG'),
-  const Symbol('KH'),
-  const Symbol('KI'),
-  const Symbol('KJ'),
-  const Symbol('KK'),
-  const Symbol('KL'),
-  const Symbol('KM'),
-  const Symbol('KN'),
-  const Symbol('KO'),
-  const Symbol('KP'),
-  const Symbol('KQ'),
-  const Symbol('KR'),
-  const Symbol('KS'),
-  const Symbol('KT'),
-  const Symbol('KU'),
-  const Symbol('KV'),
-  const Symbol('KW'),
-  const Symbol('KX'),
-  const Symbol('KY'),
-  const Symbol('KZ'),
-  const Symbol('La'),
-  const Symbol('Lb'),
-  const Symbol('Lc'),
-  const Symbol('Ld'),
-  const Symbol('Le'),
-  const Symbol('Lf'),
-  const Symbol('Lg'),
-  const Symbol('Lh'),
-  const Symbol('Li'),
-  const Symbol('Lj'),
-  const Symbol('Lk'),
-  const Symbol('Ll'),
-  const Symbol('Lm'),
-  const Symbol('Ln'),
-  const Symbol('Lo'),
-  const Symbol('Lp'),
-  const Symbol('Lq'),
-  const Symbol('Lr'),
-  const Symbol('Ls'),
-  const Symbol('Lt'),
-  const Symbol('Lu'),
-  const Symbol('Lv'),
-  const Symbol('Lw'),
-  const Symbol('Lx'),
-  const Symbol('Ly'),
-  const Symbol('Lz'),
-  const Symbol('LA'),
-  const Symbol('LB'),
-  const Symbol('LC'),
-  const Symbol('LD'),
-  const Symbol('LE'),
-  const Symbol('LF'),
-  const Symbol('LG'),
-  const Symbol('LH'),
-  const Symbol('LI'),
-  const Symbol('LJ'),
-  const Symbol('LK'),
-  const Symbol('LL'),
-  const Symbol('LM'),
-  const Symbol('LN'),
-  const Symbol('LO'),
-  const Symbol('LP'),
-  const Symbol('LQ'),
-  const Symbol('LR'),
-  const Symbol('LS'),
-  const Symbol('LT'),
-  const Symbol('LU'),
-  const Symbol('LV'),
-  const Symbol('LW'),
-  const Symbol('LX'),
-  const Symbol('LY'),
-  const Symbol('LZ'),
-  const Symbol('Ma'),
-  const Symbol('Mb'),
-  const Symbol('Mc'),
-  const Symbol('Md'),
-  const Symbol('Me'),
-  const Symbol('Mf'),
-  const Symbol('Mg'),
-  const Symbol('Mh'),
-  const Symbol('Mi'),
-  const Symbol('Mj'),
-  const Symbol('Mk'),
-  const Symbol('Ml'),
-  const Symbol('Mm'),
-  const Symbol('Mn'),
-  const Symbol('Mo'),
-  const Symbol('Mp'),
-  const Symbol('Mq'),
-  const Symbol('Mr'),
-  const Symbol('Ms'),
-  const Symbol('Mt'),
-  const Symbol('Mu'),
-  const Symbol('Mv'),
-  const Symbol('Mw'),
-  const Symbol('Mx'),
-  const Symbol('My'),
-  const Symbol('Mz'),
-  const Symbol('MA'),
-  const Symbol('MB'),
-  const Symbol('MC'),
-  const Symbol('MD'),
-  const Symbol('ME'),
-  const Symbol('MF'),
-  const Symbol('MG'),
-  const Symbol('MH'),
-  const Symbol('MI'),
-  const Symbol('MJ'),
-  const Symbol('MK'),
-  const Symbol('ML'),
-  const Symbol('MM'),
-  const Symbol('MN'),
-  const Symbol('MO'),
-  const Symbol('MP'),
-  const Symbol('MQ'),
-  const Symbol('MR'),
-  const Symbol('MS'),
-  const Symbol('MT'),
-  const Symbol('MU'),
-  const Symbol('MV'),
-  const Symbol('MW'),
-  const Symbol('MX'),
-  const Symbol('MY'),
-  const Symbol('MZ'),
-  const Symbol('Na'),
-  const Symbol('Nb'),
-  const Symbol('Nc'),
-  const Symbol('Nd'),
-  const Symbol('Ne'),
-  const Symbol('Nf'),
-  const Symbol('Ng'),
-  const Symbol('Nh'),
-  const Symbol('Ni'),
-  const Symbol('Nj'),
-  const Symbol('Nk'),
-  const Symbol('Nl'),
-  const Symbol('Nm'),
-  const Symbol('Nn'),
-  const Symbol('No'),
-  const Symbol('Np'),
-  const Symbol('Nq'),
-  const Symbol('Nr'),
-  const Symbol('Ns'),
-  const Symbol('Nt'),
-  const Symbol('Nu'),
-  const Symbol('Nv'),
-  const Symbol('Nw'),
-  const Symbol('Nx'),
-  const Symbol('Ny'),
-  const Symbol('Nz'),
-  const Symbol('NA'),
-  const Symbol('NB'),
-  const Symbol('NC'),
-  const Symbol('ND'),
-  const Symbol('NE'),
-  const Symbol('NF'),
-  const Symbol('NG'),
-  const Symbol('NH'),
-  const Symbol('NI'),
-  const Symbol('NJ'),
-  const Symbol('NK'),
-  const Symbol('NL'),
-  const Symbol('NM'),
-  const Symbol('NN'),
-  const Symbol('NO'),
-  const Symbol('NP'),
-  const Symbol('NQ'),
-  const Symbol('NR'),
-  const Symbol('NS'),
-  const Symbol('NT'),
-  const Symbol('NU'),
-  const Symbol('NV'),
-  const Symbol('NW'),
-  const Symbol('NX'),
-  const Symbol('NY'),
-  const Symbol('NZ'),
-  const Symbol('Oa'),
-  const Symbol('Ob'),
-  const Symbol('Oc'),
-  const Symbol('Od'),
-  const Symbol('Oe'),
-  const Symbol('Of'),
-  const Symbol('Og'),
-  const Symbol('Oh'),
-  const Symbol('Oi'),
-  const Symbol('Oj'),
-  const Symbol('Ok'),
-  const Symbol('Ol'),
-  const Symbol('Om'),
-  const Symbol('On'),
-  const Symbol('Oo'),
-  const Symbol('Op'),
-  const Symbol('Oq'),
-  const Symbol('Or'),
-  const Symbol('Os'),
-  const Symbol('Ot'),
-  const Symbol('Ou'),
-  const Symbol('Ov'),
-  const Symbol('Ow'),
-  const Symbol('Ox'),
-  const Symbol('Oy'),
-  const Symbol('Oz'),
-  const Symbol('OA'),
-  const Symbol('OB'),
-  const Symbol('OC'),
-  const Symbol('OD'),
-  const Symbol('OE'),
-  const Symbol('OF'),
-  const Symbol('OG'),
-  const Symbol('OH'),
-  const Symbol('OI'),
-  const Symbol('OJ'),
-  const Symbol('OK'),
-  const Symbol('OL'),
-  const Symbol('OM'),
-  const Symbol('ON'),
-  const Symbol('OO'),
-  const Symbol('OP'),
-  const Symbol('OQ'),
-  const Symbol('OR'),
-  const Symbol('OS'),
-  const Symbol('OT'),
-  const Symbol('OU'),
-  const Symbol('OV'),
-  const Symbol('OW'),
-  const Symbol('OX'),
-  const Symbol('OY'),
-  const Symbol('OZ'),
-  const Symbol('Pa'),
-  const Symbol('Pb'),
-  const Symbol('Pc'),
-  const Symbol('Pd'),
-  const Symbol('Pe'),
-  const Symbol('Pf'),
-  const Symbol('Pg'),
-  const Symbol('Ph'),
-  const Symbol('Pi'),
-  const Symbol('Pj'),
-  const Symbol('Pk'),
-  const Symbol('Pl'),
-  const Symbol('Pm'),
-  const Symbol('Pn'),
-  const Symbol('Po'),
-  const Symbol('Pp'),
-  const Symbol('Pq'),
-  const Symbol('Pr'),
-  const Symbol('Ps'),
-  const Symbol('Pt'),
-  const Symbol('Pu'),
-  const Symbol('Pv'),
-  const Symbol('Pw'),
-  const Symbol('Px'),
-  const Symbol('Py'),
-  const Symbol('Pz'),
-  const Symbol('PA'),
-  const Symbol('PB'),
-  const Symbol('PC'),
-  const Symbol('PD'),
-  const Symbol('PE'),
-  const Symbol('PF'),
-  const Symbol('PG'),
-  const Symbol('PH'),
-  const Symbol('PI'),
-  const Symbol('PJ'),
-  const Symbol('PK'),
-  const Symbol('PL'),
-  const Symbol('PM'),
-  const Symbol('PN'),
-  const Symbol('PO'),
-  const Symbol('PP'),
-  const Symbol('PQ'),
-  const Symbol('PR'),
-  const Symbol('PS'),
-  const Symbol('PT'),
-  const Symbol('PU'),
-  const Symbol('PV'),
-  const Symbol('PW'),
-  const Symbol('PX'),
-  const Symbol('PY'),
-  const Symbol('PZ'),
-  const Symbol('Qa'),
-  const Symbol('Qb'),
-  const Symbol('Qc'),
-  const Symbol('Qd'),
-  const Symbol('Qe'),
-  const Symbol('Qf'),
-  const Symbol('Qg'),
-  const Symbol('Qh'),
-  const Symbol('Qi'),
-  const Symbol('Qj'),
-  const Symbol('Qk'),
-  const Symbol('Ql'),
-  const Symbol('Qm'),
-  const Symbol('Qn'),
-  const Symbol('Qo'),
-  const Symbol('Qp'),
-  const Symbol('Qq'),
-  const Symbol('Qr'),
-  const Symbol('Qs'),
-  const Symbol('Qt'),
-  const Symbol('Qu'),
-  const Symbol('Qv'),
-  const Symbol('Qw'),
-  const Symbol('Qx'),
-  const Symbol('Qy'),
-  const Symbol('Qz'),
-  const Symbol('QA'),
-  const Symbol('QB'),
-  const Symbol('QC'),
-  const Symbol('QD'),
-  const Symbol('QE'),
-  const Symbol('QF'),
-  const Symbol('QG'),
-  const Symbol('QH'),
-  const Symbol('QI'),
-  const Symbol('QJ'),
-  const Symbol('QK'),
-  const Symbol('QL'),
-  const Symbol('QM'),
-  const Symbol('QN'),
-  const Symbol('QO'),
-  const Symbol('QP'),
-  const Symbol('QQ'),
-  const Symbol('QR'),
-  const Symbol('QS'),
-  const Symbol('QT'),
-  const Symbol('QU'),
-  const Symbol('QV'),
-  const Symbol('QW'),
-  const Symbol('QX'),
-  const Symbol('QY'),
-  const Symbol('QZ'),
-  const Symbol('Ra'),
-  const Symbol('Rb'),
-  const Symbol('Rc'),
-  const Symbol('Rd'),
-  const Symbol('Re'),
-  const Symbol('Rf'),
-  const Symbol('Rg'),
-  const Symbol('Rh'),
-  const Symbol('Ri'),
-  const Symbol('Rj'),
-  const Symbol('Rk'),
-  const Symbol('Rl'),
-  const Symbol('Rm'),
-  const Symbol('Rn'),
-  const Symbol('Ro'),
-  const Symbol('Rp'),
-  const Symbol('Rq'),
-  const Symbol('Rr'),
-  const Symbol('Rs'),
-  const Symbol('Rt'),
-  const Symbol('Ru'),
-  const Symbol('Rv'),
-  const Symbol('Rw'),
-  const Symbol('Rx'),
-  const Symbol('Ry'),
-  const Symbol('Rz'),
-  const Symbol('RA'),
-  const Symbol('RB'),
-  const Symbol('RC'),
-  const Symbol('RD'),
-  const Symbol('RE'),
-  const Symbol('RF'),
-  const Symbol('RG'),
-  const Symbol('RH'),
-  const Symbol('RI'),
-  const Symbol('RJ'),
-  const Symbol('RK'),
-  const Symbol('RL'),
-  const Symbol('RM'),
-  const Symbol('RN'),
-  const Symbol('RO'),
-  const Symbol('RP'),
-  const Symbol('RQ'),
-  const Symbol('RR'),
-  const Symbol('RS'),
-  const Symbol('RT'),
-  const Symbol('RU'),
-  const Symbol('RV'),
-  const Symbol('RW'),
-  const Symbol('RX'),
-  const Symbol('RY'),
-  const Symbol('RZ'),
-  const Symbol('Sa'),
-  const Symbol('Sb'),
-  const Symbol('Sc'),
-  const Symbol('Sd'),
-  const Symbol('Se'),
-  const Symbol('Sf'),
-  const Symbol('Sg'),
-  const Symbol('Sh'),
-  const Symbol('Si'),
-  const Symbol('Sj'),
-  const Symbol('Sk'),
-  const Symbol('Sl'),
-  const Symbol('Sm'),
-  const Symbol('Sn'),
-  const Symbol('So'),
-  const Symbol('Sp'),
-  const Symbol('Sq'),
-  const Symbol('Sr'),
-  const Symbol('Ss'),
-  const Symbol('St'),
-  const Symbol('Su'),
-  const Symbol('Sv'),
-  const Symbol('Sw'),
-  const Symbol('Sx'),
-  const Symbol('Sy'),
-  const Symbol('Sz'),
-  const Symbol('SA'),
-  const Symbol('SB'),
-  const Symbol('SC'),
-  const Symbol('SD'),
-  const Symbol('SE'),
-  const Symbol('SF'),
-  const Symbol('SG'),
-  const Symbol('SH'),
-  const Symbol('SI'),
-  const Symbol('SJ'),
-  const Symbol('SK'),
-  const Symbol('SL'),
-  const Symbol('SM'),
-  const Symbol('SN'),
-  const Symbol('SO'),
-  const Symbol('SP'),
-  const Symbol('SQ'),
-  const Symbol('SR'),
-  const Symbol('SS'),
-  const Symbol('ST'),
-  const Symbol('SU'),
-  const Symbol('SV'),
-  const Symbol('SW'),
-  const Symbol('SX'),
-  const Symbol('SY'),
-  const Symbol('SZ'),
-  const Symbol('Ta'),
-  const Symbol('Tb'),
-  const Symbol('Tc'),
-  const Symbol('Td'),
-  const Symbol('Te'),
-  const Symbol('Tf'),
-  const Symbol('Tg'),
-  const Symbol('Th'),
-  const Symbol('Ti'),
-  const Symbol('Tj'),
-  const Symbol('Tk'),
-  const Symbol('Tl'),
-  const Symbol('Tm'),
-  const Symbol('Tn'),
-  const Symbol('To'),
-  const Symbol('Tp'),
-  const Symbol('Tq'),
-  const Symbol('Tr'),
-  const Symbol('Ts'),
-  const Symbol('Tt'),
-  const Symbol('Tu'),
-  const Symbol('Tv'),
-  const Symbol('Tw'),
-  const Symbol('Tx'),
-  const Symbol('Ty'),
-  const Symbol('Tz'),
-  const Symbol('TA'),
-  const Symbol('TB'),
-  const Symbol('TC'),
-  const Symbol('TD'),
-  const Symbol('TE'),
-  const Symbol('TF'),
-  const Symbol('TG'),
-  const Symbol('TH'),
-  const Symbol('TI'),
-  const Symbol('TJ'),
-  const Symbol('TK'),
-  const Symbol('TL'),
-  const Symbol('TM'),
-  const Symbol('TN'),
-  const Symbol('TO'),
-  const Symbol('TP'),
-  const Symbol('TQ'),
-  const Symbol('TR'),
-  const Symbol('TS'),
-  const Symbol('TT'),
-  const Symbol('TU'),
-  const Symbol('TV'),
-  const Symbol('TW'),
-  const Symbol('TX'),
-  const Symbol('TY'),
-  const Symbol('TZ'),
-  const Symbol('Ua'),
-  const Symbol('Ub'),
-  const Symbol('Uc'),
-  const Symbol('Ud'),
-  const Symbol('Ue'),
-  const Symbol('Uf'),
-  const Symbol('Ug'),
-  const Symbol('Uh'),
-  const Symbol('Ui'),
-  const Symbol('Uj'),
-  const Symbol('Uk'),
-  const Symbol('Ul'),
-  const Symbol('Um'),
-  const Symbol('Un'),
-  const Symbol('Uo'),
-  const Symbol('Up'),
-  const Symbol('Uq'),
-  const Symbol('Ur'),
-  const Symbol('Us'),
-  const Symbol('Ut'),
-  const Symbol('Uu'),
-  const Symbol('Uv'),
-  const Symbol('Uw'),
-  const Symbol('Ux'),
-  const Symbol('Uy'),
-  const Symbol('Uz'),
-  const Symbol('UA'),
-  const Symbol('UB'),
-  const Symbol('UC'),
-  const Symbol('UD'),
-  const Symbol('UE'),
-  const Symbol('UF'),
-  const Symbol('UG'),
-  const Symbol('UH'),
-  const Symbol('UI'),
-  const Symbol('UJ'),
-  const Symbol('UK'),
-  const Symbol('UL'),
-  const Symbol('UM'),
-  const Symbol('UN'),
-  const Symbol('UO'),
-  const Symbol('UP'),
-  const Symbol('UQ'),
-  const Symbol('UR'),
-  const Symbol('US'),
-  const Symbol('UT'),
-  const Symbol('UU'),
-  const Symbol('UV'),
-  const Symbol('UW'),
-  const Symbol('UX'),
-  const Symbol('UY'),
-  const Symbol('UZ'),
-  const Symbol('Va'),
-  const Symbol('Vb'),
-  const Symbol('Vc'),
-  const Symbol('Vd'),
-  const Symbol('Ve'),
-  const Symbol('Vf'),
-  const Symbol('Vg'),
-  const Symbol('Vh'),
-  const Symbol('Vi'),
-  const Symbol('Vj'),
-  const Symbol('Vk'),
-  const Symbol('Vl'),
-  const Symbol('Vm'),
-  const Symbol('Vn'),
-  const Symbol('Vo'),
-  const Symbol('Vp'),
-  const Symbol('Vq'),
-  const Symbol('Vr'),
-  const Symbol('Vs'),
-  const Symbol('Vt'),
-  const Symbol('Vu'),
-  const Symbol('Vv'),
-  const Symbol('Vw'),
-  const Symbol('Vx'),
-  const Symbol('Vy'),
-  const Symbol('Vz'),
-  const Symbol('VA'),
-  const Symbol('VB'),
-  const Symbol('VC'),
-  const Symbol('VD'),
-  const Symbol('VE'),
-  const Symbol('VF'),
-  const Symbol('VG'),
-  const Symbol('VH'),
-  const Symbol('VI'),
-  const Symbol('VJ'),
-  const Symbol('VK'),
-  const Symbol('VL'),
-  const Symbol('VM'),
-  const Symbol('VN'),
-  const Symbol('VO'),
-  const Symbol('VP'),
-  const Symbol('VQ'),
-  const Symbol('VR'),
-  const Symbol('VS'),
-  const Symbol('VT'),
-  const Symbol('VU'),
-  const Symbol('VV'),
-  const Symbol('VW'),
-  const Symbol('VX'),
-  const Symbol('VY'),
-  const Symbol('VZ'),
-  const Symbol('Wa'),
-  const Symbol('Wb'),
-  const Symbol('Wc'),
-  const Symbol('Wd'),
-  const Symbol('We'),
-  const Symbol('Wf'),
-  const Symbol('Wg'),
-  const Symbol('Wh'),
-  const Symbol('Wi'),
-  const Symbol('Wj'),
-  const Symbol('Wk'),
-  const Symbol('Wl'),
-  const Symbol('Wm'),
-  const Symbol('Wn'),
-  const Symbol('Wo'),
-  const Symbol('Wp'),
-  const Symbol('Wq'),
-  const Symbol('Wr'),
-  const Symbol('Ws'),
-  const Symbol('Wt'),
-  const Symbol('Wu'),
-  const Symbol('Wv'),
-  const Symbol('Ww'),
-  const Symbol('Wx'),
-  const Symbol('Wy'),
-  const Symbol('Wz'),
-  const Symbol('WA'),
-  const Symbol('WB'),
-  const Symbol('WC'),
-  const Symbol('WD'),
-  const Symbol('WE'),
-  const Symbol('WF'),
-  const Symbol('WG'),
-  const Symbol('WH'),
-  const Symbol('WI'),
-  const Symbol('WJ'),
-  const Symbol('WK'),
-  const Symbol('WL'),
-  const Symbol('WM'),
-  const Symbol('WN'),
-  const Symbol('WO'),
-  const Symbol('WP'),
-  const Symbol('WQ'),
-  const Symbol('WR'),
-  const Symbol('WS'),
-  const Symbol('WT'),
-  const Symbol('WU'),
-  const Symbol('WV'),
-  const Symbol('WW'),
-  const Symbol('WX'),
-  const Symbol('WY'),
-  const Symbol('WZ'),
-  const Symbol('Xa'),
-  const Symbol('Xb'),
-  const Symbol('Xc'),
-  const Symbol('Xd'),
-  const Symbol('Xe'),
-  const Symbol('Xf'),
-  const Symbol('Xg'),
-  const Symbol('Xh'),
-  const Symbol('Xi'),
-  const Symbol('Xj'),
-  const Symbol('Xk'),
-  const Symbol('Xl'),
-  const Symbol('Xm'),
-  const Symbol('Xn'),
-  const Symbol('Xo'),
-  const Symbol('Xp'),
-  const Symbol('Xq'),
-  const Symbol('Xr'),
-  const Symbol('Xs'),
-  const Symbol('Xt'),
-  const Symbol('Xu'),
-  const Symbol('Xv'),
-  const Symbol('Xw'),
-  const Symbol('Xx'),
-  const Symbol('Xy'),
-  const Symbol('Xz'),
-  const Symbol('XA'),
-  const Symbol('XB'),
-  const Symbol('XC'),
-  const Symbol('XD'),
-  const Symbol('XE'),
-  const Symbol('XF'),
-  const Symbol('XG'),
-  const Symbol('XH'),
-  const Symbol('XI'),
-  const Symbol('XJ'),
-  const Symbol('XK'),
-  const Symbol('XL'),
-  const Symbol('XM'),
-  const Symbol('XN'),
-  const Symbol('XO'),
-  const Symbol('XP'),
-  const Symbol('XQ'),
-  const Symbol('XR'),
-  const Symbol('XS'),
-  const Symbol('XT'),
-  const Symbol('XU'),
-  const Symbol('XV'),
-  const Symbol('XW'),
-  const Symbol('XX'),
-  const Symbol('XY'),
-  const Symbol('XZ'),
-  const Symbol('Ya'),
-  const Symbol('Yb'),
-  const Symbol('Yc'),
-  const Symbol('Yd'),
-  const Symbol('Ye'),
-  const Symbol('Yf'),
-  const Symbol('Yg'),
-  const Symbol('Yh'),
-  const Symbol('Yi'),
-  const Symbol('Yj'),
-  const Symbol('Yk'),
-  const Symbol('Yl'),
-  const Symbol('Ym'),
-  const Symbol('Yn'),
-  const Symbol('Yo'),
-  const Symbol('Yp'),
-  const Symbol('Yq'),
-  const Symbol('Yr'),
-  const Symbol('Ys'),
-  const Symbol('Yt'),
-  const Symbol('Yu'),
-  const Symbol('Yv'),
-  const Symbol('Yw'),
-  const Symbol('Yx'),
-  const Symbol('Yy'),
-  const Symbol('Yz'),
-  const Symbol('YA'),
-  const Symbol('YB'),
-  const Symbol('YC'),
-  const Symbol('YD'),
-  const Symbol('YE'),
-  const Symbol('YF'),
-  const Symbol('YG'),
-  const Symbol('YH'),
-  const Symbol('YI'),
-  const Symbol('YJ'),
-  const Symbol('YK'),
-  const Symbol('YL'),
-  const Symbol('YM'),
-  const Symbol('YN'),
-  const Symbol('YO'),
-  const Symbol('YP'),
-  const Symbol('YQ'),
-  const Symbol('YR'),
-  const Symbol('YS'),
-  const Symbol('YT'),
-  const Symbol('YU'),
-  const Symbol('YV'),
-  const Symbol('YW'),
-  const Symbol('YX'),
-  const Symbol('YY'),
-  const Symbol('YZ'),
-  const Symbol('Za'),
-  const Symbol('Zb'),
-  const Symbol('Zc'),
-  const Symbol('Zd'),
-  const Symbol('Ze'),
-  const Symbol('Zf'),
-  const Symbol('Zg'),
-  const Symbol('Zh'),
-  const Symbol('Zi'),
-  const Symbol('Zj'),
-  const Symbol('Zk'),
-  const Symbol('Zl'),
-  const Symbol('Zm'),
-  const Symbol('Zn'),
-  const Symbol('Zo'),
-  const Symbol('Zp'),
-  const Symbol('Zq'),
-  const Symbol('Zr'),
-  const Symbol('Zs'),
-  const Symbol('Zt'),
-  const Symbol('Zu'),
-  const Symbol('Zv'),
-  const Symbol('Zw'),
-  const Symbol('Zx'),
-  const Symbol('Zy'),
-  const Symbol('Zz'),
-  const Symbol('ZA'),
-  const Symbol('ZB'),
-  const Symbol('ZC'),
-  const Symbol('ZD'),
-  const Symbol('ZE'),
-  const Symbol('ZF'),
-  const Symbol('ZG'),
-  const Symbol('ZH'),
-  const Symbol('ZI'),
-  const Symbol('ZJ'),
-  const Symbol('ZK'),
-  const Symbol('ZL'),
-  const Symbol('ZM'),
-  const Symbol('ZN'),
-  const Symbol('ZO'),
-  const Symbol('ZP'),
-  const Symbol('ZQ'),
-  const Symbol('ZR'),
-  const Symbol('ZS'),
-  const Symbol('ZT'),
-  const Symbol('ZU'),
-  const Symbol('ZV'),
-  const Symbol('ZW'),
-  const Symbol('ZX'),
-  const Symbol('ZY'),
-  const Symbol('ZZ'),
-];
diff --git a/tests/language/symbol_literal_test.dart b/tests/language/symbol_literal_test.dart
deleted file mode 100644
index bca952d..0000000
--- a/tests/language/symbol_literal_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test symbol literals.
-
-library symbol_literal_test;
-
-import 'package:expect/expect.dart';
-
-foo(a, b) => Expect.isTrue(identical(a, b));
-
-var check = foo; // Indirection used to avoid inlining.
-
-testSwitch(Symbol s) {
-  switch (s) {
-    case #abc:
-      return 1;
-    case const Symbol("def"):
-      return 2;
-    default:
-      return 0;
-  }
-}
-
-main() {
-  check(const Symbol("a"), #a);
-  check(const Symbol("a"), #a);
-  check(const Symbol("ab"), #ab);
-  check(const Symbol("ab"), #ab);
-  check(const Symbol("a.b"), #a.b);
-  check(const Symbol("a.b"), #a.b);
-  check(const Symbol("=="), #==);
-  check(const Symbol("=="), #==);
-  check(const Symbol("a.toString"), #a.toString);
-
-  Expect.equals(1, testSwitch(#abc));
-
-  const m = const <Symbol, int>{#A: 0, #B: 1};
-  Expect.equals(1, m[#B]);
-
-  // Tries to call the symbol literal #a.toString
-  Expect.throws(() => #a.toString(), (e) => e is NoSuchMethodError); //# 01: static type warning
-}
diff --git a/tests/language/sync_generator1_test.dart b/tests/language/sync_generator1_test.dart
deleted file mode 100644
index bf111ef..0000000
--- a/tests/language/sync_generator1_test.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Simple test program for sync* generator functions.
-
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-import "package:expect/expect.dart";
-
-sum10() sync* {
-  var s = 0;
-  for (var k = 1; k <= 10; k++) {
-    s += k;
-    yield s;
-  }
-}
-
-class Range {
-  int start, end;
-  Range(this.start, this.end);
-  elements() sync* {
-    var e = start;
-    while (e <= end) yield e++;
-  }
-
-  get yield sync* {
-    // yield is a legal member name here.
-    var e = start;
-    while (e <= end) yield e++;
-  }
-}
-
-get sync sync* {
-  // sync is a legal identifier.
-  yield "sync";
-}
-
-einsZwei() sync* {
-  yield 1;
-  yield* [2, 3];
-  yield* [];
-  yield 5;
-  yield [6];
-}
-
-dreiVier() sync* {
-  // Throws type error: yielded object is not an iterable.
-  yield* 3; //# 01: static type warning
-}
-
-main() {
-  for (int i = 0; i < 10; i++) {
-    var sums = sum10();
-    print(sums);
-    Expect.isTrue(sums is Iterable);
-    Expect.equals(10, sums.length);
-    Expect.equals(1, sums.first);
-    Expect.equals(55, sums.last);
-    var q = "";
-    for (var n in sums.take(3)) {
-      q += "$n ";
-    }
-    Expect.equals("1 3 6 ", q);
-
-    var r = new Range(10, 12);
-    var elems1 = r.elements();
-    print(elems1);
-    var elems2 = r.yield;
-    print(elems2);
-    // Walk the elements of each iterable and compare them.
-    var i = elems1.iterator;
-    Expect.isTrue(i is Iterator);
-    elems2.forEach((e) {
-      Expect.isTrue(i.moveNext());
-      Expect.equals(e, i.current);
-    });
-
-    print(sync);
-    Expect.equals("sync", sync.single);
-
-    print(einsZwei());
-    Expect.equals("(1, 2, 3, 5, [6])", einsZwei().toString());
-
-    Expect.throws(() => dreiVier().toString()); //# 01: continued
-  }
-}
diff --git a/tests/language/sync_generator2_test.dart b/tests/language/sync_generator2_test.dart
deleted file mode 100644
index 9e33f0c..0000000
--- a/tests/language/sync_generator2_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Simple test program for sync* generator functions.
-
-import "package:expect/expect.dart";
-import "dart:async";
-
-var sync = "topLevelSync";
-var async = "topLevelAync";
-var await = "topLevelAwait";
-var yield = "topLevelYield";
-
-test01() sync* {
-  var yield = 0; // //# 01: syntax error
-  var await = 0; // //# 02: syntax error
-  var async = 0; // //# 03: syntax error
-  bool yield() => false; //# 04: syntax error
-  bool await() => false; //# 05: syntax error
-  bool async() => false; //# 06: syntax error
-
-  var x1 = sync;
-  var x2 = async; // //# 07: syntax error
-  var x3 = await; // //# 08: syntax error
-  var x4 = await 55; // //# 09: compile-time error
-  var x4 = yield; // //# 10: syntax error
-
-  var stream = new Stream.fromIterable([1, 2, 3]);
-  await for (var e in stream) print(e); //  //# 11: compile-time error
-}
-
-test02() sync* {
-  yield 12321;
-  return null; // //# 20: compile-time error
-}
-
-test03() sync* => null; //  //# 30: syntax error
-
-get test04 sync* => null; // //# 40: syntax error
-set test04(a) sync* { print(a); } // //# 41: compile-time error
-
-class K {
-  K() sync* {} // //# 50: compile-time error
-  get nix sync* {}
-  get garnix sync* => null; // //# 51: syntax error
-  set etwas(var z) sync* { } // //# 52: compile-time error
-  sync() sync* {
-    yield sync; // Yields a tear-off of the sync() method.
-  }
-}
-
-main() {
-  var x;
-  x = test01();
-  Expect.equals("()", x.toString());
-  x = test02();
-  test03(); //# 30: continued
-  Expect.equals("(12321)", x.toString());
-  x = test04; // //# 40: continued
-  test04 = x; // //# 41: continued
-  x = new K();
-  print(x.garnix); //# 51: continued
-  x.etwas = null; //# 52: continued
-  print(x.sync().toList());
-  Expect.equals(1, x.sync().length);
-//  Expect.isTrue(x.sync().single is Function);
-}
diff --git a/tests/language/sync_generator3_test.dart b/tests/language/sync_generator3_test.dart
deleted file mode 100644
index d8646df..0000000
--- a/tests/language/sync_generator3_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test program for sync* generator functions and yielding in try blocks.
-
-import "package:expect/expect.dart";
-
-f() sync* {
-  try {
-    yield 1;
-    throw "three";
-  } catch (e) {
-    yield 2;
-    yield e;
-  } finally {
-    yield 4;
-  }
-}
-
-test1() {
-  var s = f().toString();
-  Expect.equals("(1, 2, three, 4)", s);
-  print(s);
-}
-
-g() sync* {
-  try {
-    yield "a";
-    throw "pow!";
-  } finally {
-    yield "b";
-  }
-}
-
-test2() {
-  Iterator i = g().iterator;
-  Expect.isTrue(i.moveNext());
-  Expect.equals("a", i.current);
-  Expect.isTrue(i.moveNext());
-  Expect.equals("b", i.current);
-  Expect.throws(() => i.moveNext(), (error) => error == "pow!");
-}
-
-main() {
-  test1(); // //# test1: ok
-  test2(); // //# test2: ok
-}
diff --git a/tests/language/syncstar_less_than_test.dart b/tests/language/syncstar_less_than_test.dart
deleted file mode 100644
index 828bf20..0000000
--- a/tests/language/syncstar_less_than_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2015, the Dart Team. 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";
-
-@NoInline()
-@AssumeDynamic()
-confuse(x) => x;
-
-Iterable<int> foo() sync* {
-  var a = confuse(1);
-  if (a < 10) {
-    yield 2;
-  }
-}
-
-main() {
-  Expect.listEquals(foo().toList(), [2]);
-}
diff --git a/tests/language/syncstar_yield_test.dart b/tests/language/syncstar_yield_test.dart
deleted file mode 100644
index 5121cad..0000000
--- a/tests/language/syncstar_yield_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2015, 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";
-
-Iterable<int> foo1() sync* {
-  yield 1;
-}
-
-Iterable<int> foo2(p) sync* {
-  bool t = false;
-  yield null;
-  while (true) {
-    a:
-    for (int i = 0; i < p; i++) {
-      if (!t) {
-        for (int j = 0; j < 3; j++) {
-          yield -1;
-          t = true;
-          break a;
-        }
-      }
-      yield i;
-    }
-  }
-}
-
-// p is copied to all Iterators from the Iterable returned by foo3.
-// Also each iterator will have its own i.
-Iterable<int> foo3(int p) sync* {
-  int i = 0;
-  i++;
-  p++;
-  yield p + i;
-}
-
-main() {
-  Expect.listEquals([1], foo1().toList());
-  Expect.listEquals(
-      [null, -1, 0, 1, 2, 3, 0, 1, 2, 3], foo2(4).take(10).toList());
-  Iterable t = foo3(0);
-  Iterator it1 = t.iterator;
-  Iterator it2 = t.iterator; //# copyParameters: ok
-  it1.moveNext();
-  it2.moveNext(); //# copyParameters: continued
-  Expect.equals(2, it1.current);
-  // TODO(sigurdm): Check up on the spec here.
-  Expect.equals(2, it2.current); // //# copyParameters: continued
-  Expect.isFalse(it1.moveNext());
-  // Test that two `moveNext()` calls are fine.
-  Expect.isFalse(it1.moveNext());
-  Expect.isFalse(it2.moveNext()); //# copyParameters: continued
-  Expect.isFalse(it2.moveNext()); //# copyParameters: continued
-}
diff --git a/tests/language/syncstar_yieldstar_test.dart b/tests/language/syncstar_yieldstar_test.dart
deleted file mode 100644
index 0566aa5..0000000
--- a/tests/language/syncstar_yieldstar_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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";
-
-bar() sync* {
-  int i = 1;
-  int j = 1;
-  while (true) {
-    yield i;
-    j = i + j;
-    i = j - i;
-  }
-}
-
-foo() sync* {
-  yield* [1, 2, 3];
-  yield null;
-  yield* bar();
-}
-
-main() async {
-  Expect.listEquals([1, 2, 3, null, 1, 1, 2, 3, 5], foo().take(9).toList());
-}
diff --git a/tests/language/syntax_test.dart b/tests/language/syntax_test.dart
deleted file mode 100644
index a48360d..0000000
--- a/tests/language/syntax_test.dart
+++ /dev/null
@@ -1,255 +0,0 @@
-// 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.
-
-class SyntaxTest {
-  // "this" cannot be used as a field name.
-  SyntaxTest this; //# 01: syntax error
-
-  // Syntax error.
-  foo {} //# 02: syntax error
-
-  // Syntax error.
-  static foo {} //# 03: syntax error
-
-  // Syntax error.
-  operator +=() {} //# 04: syntax error
-
-  // Syntax error.
-  operator -=() {} //# 05: syntax error
-
-  // Syntax error.
-  operator *=() {} //# 06: syntax error
-
-  // Syntax error.
-  operator /=() {} //# 07: syntax error
-
-  // Syntax error.
-  operator ~/=() {} //# 08: syntax error
-
-  // Syntax error.
-  operator %=() {} //# 09: syntax error
-
-  // Syntax error.
-  operator <<=() {} //# 10: syntax error
-
-  // Syntax error.
-  operator >>=() {} //# 11: syntax error
-
-  // Syntax error.
-  operator >>>=() {} //# 12: syntax error
-
-  // Syntax error.
-  operator &=() {} //# 13: syntax error
-
-  // Syntax error.
-  operator ^=() {} //# 14: syntax error
-
-  // Syntax error.
-  operator |=() {} //# 15: syntax error
-
-  // Syntax error.
-  operator ?() {} //# 16: syntax error
-
-  // Syntax error.
-  operator ||() {} //# 17: syntax error
-
-  // Syntax error.
-  operator &&() {} //# 18: syntax error
-
-  // Syntax error.
-  operator !=() {} //# 19: syntax error
-
-  // Syntax error.
-  operator ===() {} //# 20: syntax error
-
-  // Syntax error.
-  operator !==() {} //# 21: syntax error
-
-  // Syntax error.
-  operator is() {} //# 22: syntax error
-
-  // Syntax error.
-  operator !() {} //# 23: syntax error
-
-  // Syntax error.
-  operator ++() {} //# 24: syntax error
-
-  // Syntax error.
-  operator --() {} //# 25: syntax error
-
-  // Syntax error.
-  bool operator ===(A other) { return true; } //# 26: syntax error
-
-  int sample;
-}
-
-fisk {} //# 27: syntax error
-
-class DOMWindow {}
-
-class Window extends DOMWindow
-native "*Window" //# 28: syntax error
-{}
-
-class Console
-native "=(typeof console == 'undefined' ? {} : console)" //# 29: syntax error
-{}
-
-class NativeClass
-native "FooBar" //# 30: syntax error
-{}
-
-abstract class Fisk {}
-
-class BoolImplementation implements Fisk
-native "Boolean" //# 31: syntax error
-{}
-
-class _JSON
-native 'JSON' //# 32: syntax error
-{}
-
-class ListFactory<E> implements List<E>
-native "Array" //# 33: syntax error
-{}
-
-abstract class I implements UNKNOWN; //# 34: syntax error
-
-class XWindow extends DOMWindow
-hest "*Window" //# 35: syntax error
-{}
-
-class XConsole
-hest "=(typeof console == 'undefined' ? {} : console)" //# 36: syntax error
-{}
-
-class XNativeClass
-hest "FooBar" //# 37: syntax error
-{}
-
-class XBoolImplementation implements Fisk
-hest "Boolean" //# 38: syntax error
-{}
-
-class _JSONX
-hest 'JSON' //# 39: syntax error
-{}
-
-class XListFactory<E> implements List<E>
-hest "Array" //# 40: syntax error
-{}
-
-class YWindow extends DOMWindow
-for "*Window" //# 41: syntax error
-{}
-
-class YConsole
-for "=(typeof console == 'undefined' ? {} : console)" //# 42: syntax error
-{}
-
-class YNativeClass
-for "FooBar" //# 43: syntax error
-{}
-
-class YBoolImplementation implements Fisk
-for "Boolean" //# 44: syntax error
-{}
-
-class _JSONY
-for 'JSON' //# 45: syntax error
-{}
-
-class YListFactory<E> implements List<E>
-for "Array" //# 46: syntax error
-{}
-
-class A {
-  const A()
-  {} //# 47: syntax error
-  ;
-}
-
-abstract class G<T> {}
-
-typedef <T>(); //# 48: syntax error
-
-class B
-extends void //# 49: syntax error
-{}
-
-main() {
-  try {
-    new SyntaxTest();
-    new SyntaxTest().foo(); //# 02: continued
-    SyntaxTest.foo(); //# 03: continued
-    fisk(); //# 27: continued
-
-    new Window();
-    new Console();
-    new NativeClass();
-    new BoolImplementation();
-    new _JSON();
-    new ListFactory();
-    new ListFactory<Object>();
-    var x = null;
-    x is I; //# 34: continued
-
-    new XConsole();
-    new XNativeClass();
-    new XBoolImplementation();
-    new _JSONX();
-    new XListFactory();
-    new XListFactory<Object>();
-
-    new YConsole();
-    new YNativeClass();
-    new YBoolImplementation();
-    new _JSONY();
-    new YListFactory();
-    new YListFactory<Object>();
-
-    futureOf(x) {}
-    if (!(fisk futureOf(false))) {} //# 50: syntax error
-    if (!(await futureOf(false))) {} //# 51: compile-time error
-
-    void f{} //# 52: syntax error
-    G<int double> g; //# 53: syntax error
-    f(void) {}; //# 54: syntax error
-
-    optionalArg([x]) {}
-    optionalArg(
-      void (var i) {} //# 55: syntax error
-        );
-
-    function __PROTO__$(...args) { return 12; } //# 56: syntax error
-    G<> t; //# 57: syntax error
-    G<null> t; //# 58: syntax error
-    A<void> a = null;
-    void v;
-    void v = null;
-    print(null is void); //# 59: syntax error
-    new A();
-    new B();
-
-    new Bad();
-
-    1 + 2 = 1; //# 60: syntax error
-    new SyntaxTest() = 1; //# 61: syntax error
-    futureOf(null) = 1; //# 62: syntax error
-
-    new C();
-  } catch (ex) {
-    // Swallowing exceptions. Any error should be a compile-time error
-    // which kills the current isolate.
-  }
-}
-
-class Bad {
-  factory Bad<Bad(String type) { return null; } //# 63: syntax error
-}
-
-class C {
-  void f;
-  static void g;
-}
diff --git a/tests/language/temp_mangling_test.dart b/tests/language/temp_mangling_test.dart
deleted file mode 100644
index 29f26ee..0000000
--- a/tests/language/temp_mangling_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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";
-
-main() {
-  testOne();
-  testTwo();
-}
-
-testOne() {
-  // Dart2JS uses t[0-9]* to declare temporaries, so a local variable
-  // with that pattern can conflict with them.
-  var t0 = new List();
-  // By using 'is' check, we make sure 't0.length' does not become
-  // generate at use site.
-  Expect.isTrue(t0.length is int);
-  Expect.isTrue(t0 is List);
-}
-
-testTwo() {
-  var x = new List();
-  var x_0 = new List();
-  {
-    // This used to introduce x_0.
-    var x = new Set();
-    Expect.equals(0, x.length);
-    Expect.isTrue(x.isEmpty);
-  }
-  Expect.isTrue(x is List);
-  Expect.isTrue(x_0 is List);
-}
diff --git a/tests/language/ternary_test.dart b/tests/language/ternary_test.dart
deleted file mode 100644
index 240034d..0000000
--- a/tests/language/ternary_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test for testing the ternary operator.
-
-import "package:expect/expect.dart";
-
-class TernaryTest {
-  static true_cond() {
-    return true;
-  }
-
-  static false_cond() {
-    return false;
-  }
-
-  static foo() {
-    return -4;
-  }
-
-  static moo() {
-    return 5;
-  }
-
-  static testMain() {
-    Expect.equals(
-        -4, (TernaryTest.true_cond() ? TernaryTest.foo() : TernaryTest.moo()));
-    Expect.equals(
-        5, (TernaryTest.false_cond() ? TernaryTest.foo() : TernaryTest.moo()));
-  }
-}
-
-main() {
-  TernaryTest.testMain();
-}
diff --git a/tests/language/test_negative_test.dart b/tests/language/test_negative_test.dart
deleted file mode 100644
index 831d9dd..0000000
--- a/tests/language/test_negative_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program which has a syntax error. This test is to
-// ensure that the resulting parse error message is correctly
-// displayed without being garbled.
-
-class Test {
-  static foo() {
-    return "hi
-  }
-  static testMain() {
-    List a = {1 : 1};
-    List b = {1 : 1};
-    return a == b;
-  }
-}
-
-main() {
-  TestNegativeTest.testMain();
-}
diff --git a/tests/language/third_test.dart b/tests/language/third_test.dart
deleted file mode 100644
index 1f395d1..0000000
--- a/tests/language/third_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2011, 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.
-// Third dart test program.
-
-import "package:expect/expect.dart";
-
-class A extends B {
-  var a;
-  static var s;
-
-  static foo() {
-    return s;
-  }
-
-  A(x, y)
-      : super(y),
-        a = x {}
-
-  value() {
-    return a + b + foo();
-  }
-}
-
-class B {
-  var b;
-  static var s;
-
-  static foo(x) {
-    return x + s;
-  }
-
-  value() {
-    return b + foo(s) + A.foo();
-  }
-
-  B(x) : b = x {
-    b = b + 1;
-  }
-}
-
-class ThirdTest {
-  static testMain() {
-    var a = new A(1, 2);
-    var b = new B(3);
-    A.s = 4;
-    B.s = 5;
-    Expect.equals(26, a.value() + b.value());
-  }
-}
-
-main() {
-  ThirdTest.testMain();
-}
diff --git a/tests/language/this_conditional_operator_test.dart b/tests/language/this_conditional_operator_test.dart
deleted file mode 100644
index 87ab734..0000000
--- a/tests/language/this_conditional_operator_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify that the ?. operator cannot be used for forwarding "this"
-// constructors.
-
-class B {
-  B();
-  B.namedConstructor();
-  var field = 1;
-  method() => 1;
-
-  B.forward()
-    : this?.namedConstructor() //# 01: syntax error
-  ;
-
-  test() {
-    this?.field = 1;
-    this?.field += 1;
-    this?.field;
-    this?.method();
-  }
-}
-
-main() {
-  new B.forward().test();
-}
diff --git a/tests/language/this_test.dart b/tests/language/this_test.dart
deleted file mode 100644
index 8395fff..0000000
--- a/tests/language/this_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-class Foo {
-  var x;
-  f() {}
-
-  testMe() {
-    x.this; //# 01: syntax error
-    x.this(); //# 02: syntax error
-    x.this.x; //# 03: syntax error
-    x.this().x; //# 04: syntax error
-    f().this; //# 05: syntax error
-    f().this(); //# 06: syntax error
-    f().this.f(); //# 07: syntax error
-    f().this().f(); //# 08: syntax error
-  }
-}
-
-main() {
-  new Foo().testMe();
-}
diff --git a/tests/language/throw1_test.dart b/tests/language/throw1_test.dart
deleted file mode 100644
index 1ae121e..0000000
--- a/tests/language/throw1_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-abstract class TestException {
-  String getMessage();
-}
-
-class MyException implements TestException {
-  const MyException([String message = ""]) : message_ = message;
-  String getMessage() {
-    return message_;
-  }
-
-  final String message_;
-}
-
-class MyException2 implements TestException {
-  const MyException2([String message = ""]) : message_ = message;
-  String getMessage() {
-    return message_;
-  }
-
-  final String message_;
-}
-
-class MyException3 implements TestException {
-  const MyException3([String message = ""]) : message_ = message;
-  String getMessage() {
-    return message_;
-  }
-
-  final String message_;
-}
-
-class Helper {
-  static int f1(int i) {
-    try {
-      int j;
-      j = func();
-      if (j > 0) {
-        throw new MyException2("Test for exception being thrown");
-      }
-    } on MyException3 catch (exception) {
-      i = 100;
-      print(exception.getMessage());
-    } on TestException catch (exception) {
-      i = 50;
-      print(exception.getMessage());
-    } on MyException2 catch (exception) {
-      i = 150;
-      print(exception.getMessage());
-    } on MyException catch (exception) {
-      i = 200;
-      print(exception.getMessage());
-    } finally {
-      i = i + 800;
-    }
-    return i;
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-}
-
-class Throw1Test {
-  static testMain() {
-    Expect.equals(850, Helper.f1(1));
-  }
-}
-
-main() {
-  Throw1Test.testMain();
-}
diff --git a/tests/language/throw2_test.dart b/tests/language/throw2_test.dart
deleted file mode 100644
index eaade24..0000000
--- a/tests/language/throw2_test.dart
+++ /dev/null
@@ -1,95 +0,0 @@
-// 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-abstract class TestException {
-  String getMessage();
-}
-
-class MyException implements TestException {
-  const MyException([String message = ""]) : message_ = message;
-  String getMessage() {
-    return message_;
-  }
-
-  final String message_;
-}
-
-class MyException2 implements TestException {
-  const MyException2([String message = ""]) : message_ = message;
-  String getMessage() {
-    return message_;
-  }
-
-  final String message_;
-}
-
-class MyException3 implements TestException {
-  const MyException3([String message = ""]) : message_ = message;
-  String getMessage() {
-    return message_;
-  }
-
-  final String message_;
-}
-
-class Helper {
-  static int f1(int i) {
-    try {
-      int j;
-      j = func();
-    } on MyException3 catch (exception) {
-      i = 100;
-      print(exception.getMessage());
-    } on MyException2 catch (exception) {
-      try {
-        i = func2();
-        i = 200;
-      } on TestException catch (exception) {
-        i = 50;
-      }
-      print(exception.getMessage());
-    } on MyException catch (exception) {
-      i = func2();
-      print(exception.getMessage());
-    } finally {
-      i = i + 800;
-    }
-    return i;
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    if (i > 0) {
-      throw new MyException2("Test for exception being thrown");
-    }
-    return i;
-  }
-
-  static int func2() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    if (i > 0) {
-      throw new MyException2("Test for exception being thrown");
-    }
-    return i;
-  }
-}
-
-class Throw2Test {
-  static testMain() {
-    Expect.equals(850, Helper.f1(1));
-  }
-}
-
-main() {
-  Throw2Test.testMain();
-}
diff --git a/tests/language/throw3_test.dart b/tests/language/throw3_test.dart
deleted file mode 100644
index 1d72345..0000000
--- a/tests/language/throw3_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException {
-  const MyException([String message = ""]) : message_ = message;
-  final String message_;
-}
-
-class Helper {
-  static int f1(int i) {
-    try {
-      int j;
-      i = 100;
-      i = func();
-      i = 200;
-    } on MyException catch (exception) {
-      i = 50;
-      print(exception.message_);
-    } finally {
-      i = i + 800;
-    }
-    return i;
-  }
-
-  static int func() {
-    try {
-      int i = 0;
-      while (i < 10) {
-        i++;
-      }
-      if (i > 0) {
-        throw new MyException("Test for exception being thrown");
-      }
-    } on MyException catch (ex) {
-      print(ex.message_);
-      rethrow; // Rethrow the exception.
-    }
-    return 10;
-  }
-}
-
-class Throw3Test {
-  static testMain() {
-    Expect.equals(850, Helper.f1(1));
-  }
-}
-
-main() {
-  Throw3Test.testMain();
-}
diff --git a/tests/language/throw4_test.dart b/tests/language/throw4_test.dart
deleted file mode 100644
index 6dd2f74..0000000
--- a/tests/language/throw4_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException1 {
-  const MyException1([String message = "1"]) : message_ = message;
-  final String message_;
-}
-
-class MyException2 {
-  const MyException2([String message = "2"]) : message_ = message;
-  final String message_;
-}
-
-class MyException3 {
-  const MyException3([String message = "3"]) : message_ = message;
-  final String message_;
-}
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1() {
-    int j = 0;
-    try {
-      j = func();
-    } on MyException3 catch (exception) {
-      i = i + 300;
-      print(exception.message_);
-    } on MyException2 catch (exception) {
-      i = i + 200;
-      print(exception.message_);
-    } on MyException1 catch (exception) {
-      i = i + 100;
-      print(exception.message_);
-    } finally {
-      i = i + 1000;
-    }
-    return i;
-  }
-
-  // No catch in the same function for the type of exception being thrown
-  // in the try block here. We expect the handler if checks to fall thru,
-  // the finally block to run and an implicit rethrow to happen.
-  int func() {
-    i = 0;
-    try {
-      while (i < 10) {
-        i++;
-      }
-      if (i > 0) {
-        throw new MyException1("Test for MyException1 being thrown");
-      }
-    } on MyException3 catch (exception) {
-      i = 300;
-      print(exception.message_);
-    } on MyException2 catch (exception) {
-      i = 200;
-      print(exception.message_);
-    } finally {
-      i = 800;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class Throw4Test {
-  static testMain() {
-    Expect.equals(1900, new Helper().f1());
-  }
-}
-
-main() {
-  Throw4Test.testMain();
-}
diff --git a/tests/language/throw5_test.dart b/tests/language/throw5_test.dart
deleted file mode 100644
index 349ade7..0000000
--- a/tests/language/throw5_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException1 {
-  const MyException1([String message = "1"]) : message_ = message;
-  final String message_;
-}
-
-class MyException2 {
-  const MyException2([String message = "2"]) : message_ = message;
-  final String message_;
-}
-
-class MyException3 {
-  const MyException3([String message = "3"]) : message_ = message;
-  final String message_;
-}
-
-class Helper {
-  static int f1(int i) {
-    try {
-      int j;
-      j = func();
-    } on MyException3 catch (exception) {
-      i = 300;
-      print(exception.message_);
-    } on MyException2 catch (exception) {
-      i = 200;
-      print(exception.message_);
-    } on MyException1 catch (exception) {
-      i = 100;
-      print(exception.message_);
-    } finally {
-      i = i + 800;
-    }
-    return i;
-  }
-
-  // No catch in the same function for the type of exception being thrown
-  // in the try block here. We expect the handler if checks to fall thru and
-  // implicit rethrow to happen.
-  static int func() {
-    int i = 0;
-    try {
-      while (i < 10) {
-        i++;
-      }
-      if (i > 0) {
-        throw new MyException1("Test for MyException1 being thrown");
-      }
-    } on MyException3 catch (exception) {
-      i = 300;
-      print(exception.message_);
-    } on MyException2 catch (exception) {
-      i = 200;
-      print(exception.message_);
-    }
-    return i;
-  }
-}
-
-class Throw5Test {
-  static testMain() {
-    Expect.equals(900, Helper.f1(1));
-  }
-}
-
-main() {
-  Throw5Test.testMain();
-}
diff --git a/tests/language/throw6_test.dart b/tests/language/throw6_test.dart
deleted file mode 100644
index 1433467..0000000
--- a/tests/language/throw6_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException1 {
-  const MyException1([String message = "1"]) : message_ = message;
-  final String message_;
-}
-
-class Helper {
-  Helper() : i = 0 {}
-
-  int f1() {
-    int j = 0;
-    try {
-      j = func();
-    } catch (exception) {
-      i = i + 100;
-      print(exception.message_);
-    } finally {
-      i = i + 1000;
-    }
-    return i;
-  }
-
-  // No catch in the same function for the type of exception being thrown
-  // in the try block here. We expect the handler if checks to fall thru,
-  // the finally block to run and an implicit rethrow to happen.
-  int func() {
-    i = 0;
-    try {
-      while (i < 10) {
-        i++;
-      }
-      if (i > 0) {
-        throw new MyException1("Test for MyException1 being thrown");
-      }
-    } finally {
-      i = 800;
-    }
-    return i;
-  }
-
-  int i;
-}
-
-class Throw6Test {
-  static testMain() {
-    Expect.equals(1900, new Helper().f1());
-  }
-}
-
-main() {
-  Throw6Test.testMain();
-}
diff --git a/tests/language/throw8_test.dart b/tests/language/throw8_test.dart
deleted file mode 100644
index de84012..0000000
--- a/tests/language/throw8_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-var finallyExecutionCount = 0;
-bar() {
-  try {
-    try {
-      return 499;
-    } catch (e, st) {
-      rethrow;
-    }
-  } finally {
-    finallyExecutionCount++;
-    throw "quit finally with throw";
-  }
-}
-
-main() {
-  bool hasThrown = false;
-  try {
-    bar();
-  } catch (x) {
-    hasThrown = true;
-    Expect.equals(1, finallyExecutionCount);
-  }
-  Expect.isTrue(hasThrown);
-}
diff --git a/tests/language/throw_expr_test.dart b/tests/language/throw_expr_test.dart
deleted file mode 100644
index 9605881..0000000
--- a/tests/language/throw_expr_test.dart
+++ /dev/null
@@ -1,111 +0,0 @@
-// 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";
-
-// Dart test program for testing throw expressions.
-
-void test1() {
-  var x = 6;
-  try {
-    throw x = 10;
-    x = 0;
-  } catch (e) {
-    Expect.equals(10, e);
-    Expect.equals(10, x);
-    x = 15;
-  }
-  Expect.equals(15, x);
-  x = 100;
-  try {
-    throw x++;
-    x = 0;
-  } catch (e) {
-    Expect.equals(100, e);
-    Expect.equals(101, x);
-    x = 150;
-  }
-  Expect.equals(150, x);
-}
-
-void test2() {
-  var x = 6;
-  try {
-    throw x + 4;
-  } catch (e) {
-    Expect.equals(10, e);
-    Expect.equals(6, x);
-    x = 15;
-  }
-  Expect.equals(15, x);
-}
-
-foo(x, y) => throw "foo" "$x";
-
-bar(x, y) => throw "foo" "${throw x}";
-
-class Q {
-  var qqq;
-  f(x) {
-    qqq = x;
-  }
-
-  Q get nono => throw "nono";
-}
-
-void test3() {
-  try {
-    throw throw throw "up";
-  } catch (e) {
-    Expect.equals("up", e);
-  }
-
-  var x = 10;
-  try {
-    foo(x = 12, throw 7);
-  } catch (e) {
-    Expect.equals(7, e);
-    Expect.equals(12, x);
-  }
-
-  x = 10;
-  try {
-    foo(x++, 10);
-  } catch (e) {
-    Expect.equals("foo10", e);
-    Expect.equals(11, x);
-  }
-
-  x = 100;
-  try {
-    bar(++x, 10);
-  } catch (e) {
-    Expect.equals(101, e);
-    Expect.equals(101, x);
-  }
-
-  x = null;
-  try {
-    x = new Q();
-    x
-      ..f(11)
-      ..qqq = throw 77
-      ..f(22);
-  } catch (e) {
-    Expect.equals(77, e);
-    Expect.equals(11, x.qqq);
-  }
-}
-
-void test4() {
-  var q = new Q();
-  Expect.throws(() => q.nono, (e) => e == "nono");
-}
-
-main() {
-  test1();
-  test2();
-  test3();
-  test4();
-}
diff --git a/tests/language/throw_test.dart b/tests/language/throw_test.dart
deleted file mode 100644
index 0c864cc..0000000
--- a/tests/language/throw_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing throw statement
-
-import "package:expect/expect.dart";
-
-class MyException {
-  const MyException(String this.message_);
-  final String message_;
-}
-
-class Helper {
-  static int f1(int i) {
-    try {
-      int j;
-      j = func();
-      if (j > 0) {
-        throw new MyException("Test for exception being thrown");
-      }
-    } on MyException catch (exception) {
-      i = 100;
-      print(exception.message_);
-    } finally {
-      i = i + 800;
-    }
-    return i;
-  }
-
-  static int func() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-}
-
-class ThrowTest {
-  static testMain() {
-    Expect.equals(900, Helper.f1(1));
-  }
-}
-
-main() {
-  ThrowTest.testMain();
-}
diff --git a/tests/language/throwing_lazy_variable_test.dart b/tests/language/throwing_lazy_variable_test.dart
deleted file mode 100644
index c97d2fb..0000000
--- a/tests/language/throwing_lazy_variable_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that engines will not infer that [a] is always of type int.
-
-var a = foo();
-
-foo() {
-  () => 42;
-  if (true) throw 'Sorry';
-  return 42;
-}
-
-main() {
-  try {
-    a;
-  } catch (e) {
-    // Ignore.
-  }
-  if (a is num) throw 'Test failed';
-}
diff --git a/tests/language/top_level_entry.dart b/tests/language/top_level_entry.dart
deleted file mode 100644
index 4399b58..0000000
--- a/tests/language/top_level_entry.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of top_level_entry_test.dart;
-
-main() {}
diff --git a/tests/language/top_level_entry_test.dart b/tests/language/top_level_entry_test.dart
deleted file mode 100644
index 5f8c178..0000000
--- a/tests/language/top_level_entry_test.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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 top_level_entry_test.dart;
-
-part 'top_level_entry.dart';
diff --git a/tests/language/top_level_file1.dart b/tests/language/top_level_file1.dart
deleted file mode 100644
index e0f5d98..0000000
--- a/tests/language/top_level_file1.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of TopLevelMultipleFilesTest.dart;
-
-main() {
-  Expect.equals(topLevelVar, 42);
-  Expect.equals(topLevelMethod(), 87);
-}
diff --git a/tests/language/top_level_file2.dart b/tests/language/top_level_file2.dart
deleted file mode 100644
index 19ca8ca..0000000
--- a/tests/language/top_level_file2.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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.
-
-part of TopLevelMultipleFilesTest.dart;
-
-const topLevelVar = 42;
-
-topLevelMethod() => 87;
diff --git a/tests/language/top_level_file3.dart b/tests/language/top_level_file3.dart
deleted file mode 100644
index a42c558..0000000
--- a/tests/language/top_level_file3.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2011, 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.
-
-main() {
-  Expect.equals(42, prefix.topLevelVar);
-}
diff --git a/tests/language/top_level_func_test.dart b/tests/language/top_level_func_test.dart
deleted file mode 100644
index eb438d7..0000000
--- a/tests/language/top_level_func_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing top-level variables.
-
-import "package:expect/expect.dart";
-
-class TopLevelFuncTest {
-  static testMain() {
-    var z = [1, 10, 100, 1000];
-    Expect.equals(Sum(z), 1111);
-
-    var w = Window;
-    Expect.equals(w, "window");
-
-    Expect.equals(null, rgb);
-    Color = "ff0000";
-    Expect.equals(rgb, "#ff0000");
-    CheckColor("#ff0000");
-
-    Expect.equals("5", digits[5]);
-
-    var e1 = Enumerator;
-    var e2 = Enumerator;
-    Expect.equals(0, e1());
-    Expect.equals(1, e1());
-    Expect.equals(2, e1());
-    Expect.equals(0, e2());
-  }
-}
-
-void CheckColor(String expected) {
-  Expect.equals(expected, rgb);
-}
-
-int Sum(List<int> v) {
-  int s = 0;
-  for (int i = 0; i < v.length; i++) {
-    s += v[i];
-  }
-  return s;
-}
-
-get Window {
-  return "win" "dow";
-}
-
-String rgb;
-
-void set Color(col) {
-  rgb = "#$col";
-}
-
-List<String> get digits {
-  return ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
-}
-
-Function get Enumerator {
-  int k = 0;
-  return () => k++;
-}
-
-main() {
-  TopLevelFuncTest.testMain();
-}
diff --git a/tests/language/top_level_getter_arrow_syntax_test.dart b/tests/language/top_level_getter_arrow_syntax_test.dart
deleted file mode 100644
index f564a31..0000000
--- a/tests/language/top_level_getter_arrow_syntax_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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";
-
-get getter => 42;
-
-List<int> get lgetter => null;
-
-bool get two_wrongs {
-  return !true;
-}
-
-main() {
-  Expect.equals(42, getter);
-  Expect.equals(null, lgetter);
-  Expect.equals(false, two_wrongs);
-}
diff --git a/tests/language/top_level_getter_no_setter1_test.dart b/tests/language/top_level_getter_no_setter1_test.dart
deleted file mode 100644
index 43e2855..0000000
--- a/tests/language/top_level_getter_no_setter1_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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';
-
-bool getter_visited = false;
-
-int get getter {
-  getter_visited = true;
-}
-
-class Class {
-  method() {
-    try {
-      getter++; //# 01: static type warning
-    } on NoSuchMethodError catch (e) {
-      Expect.isTrue(getter_visited); //# 01: continued
-      return;
-    }
-    Expect.fail('Expected NoSuchMethodError'); //# 01: continued
-  }
-}
-
-main() {
-  new Class().method();
-}
diff --git a/tests/language/top_level_getter_no_setter2_test.dart b/tests/language/top_level_getter_no_setter2_test.dart
deleted file mode 100644
index ad83752..0000000
--- a/tests/language/top_level_getter_no_setter2_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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';
-
-bool getter_visited = false;
-
-final int getter = () {
-  getter_visited = true;
-}();
-
-class Class {
-  method() {
-    try {
-      getter++; //# 01: static type warning
-    } on NoSuchMethodError catch (e) {
-      Expect.isTrue(getter_visited); //# 01: continued
-      return;
-    }
-    Expect.fail('Expected NoSuchMethodError'); //# 01: continued
-  }
-}
-
-main() {
-  new Class().method();
-}
diff --git a/tests/language/top_level_in_initializer_test.dart b/tests/language/top_level_in_initializer_test.dart
deleted file mode 100644
index b639ca4..0000000
--- a/tests/language/top_level_in_initializer_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test that constructor initializers can access top level elements.
-
-const topLevelField = 1;
-topLevelMethod() => 1;
-get topLevelGetter {
-  return 1;
-}
-
-class Foo {
-  Foo.one() : x = topLevelField;
-  Foo.second() : x = topLevelMethod;
-  Foo.third() : x = topLevelGetter;
-  var x;
-}
-
-main() {
-  Expect.equals(topLevelField, new Foo.one().x);
-  Expect.equals(topLevelMethod(), new Foo.second().x());
-  Expect.equals(topLevelGetter, new Foo.third().x);
-}
diff --git a/tests/language/top_level_method_test.dart b/tests/language/top_level_method_test.dart
deleted file mode 100644
index ea3ce0f..0000000
--- a/tests/language/top_level_method_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2011, 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";
-
-untypedTopLevel() {
-  return 1;
-}
-
-class TopLevelMethodTest {
-  static void testMain() {
-    Expect.equals(1, untypedTopLevel());
-  }
-}
-
-main() {
-  TopLevelMethodTest.testMain();
-}
diff --git a/tests/language/top_level_multiple_files_test.dart b/tests/language/top_level_multiple_files_test.dart
deleted file mode 100644
index 58ae744..0000000
--- a/tests/language/top_level_multiple_files_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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 TopLevelMultipleFilesTest.dart;
-
-import "package:expect/expect.dart";
-part 'top_level_file1.dart';
-part 'top_level_file2.dart';
diff --git a/tests/language/top_level_non_prefixed_library_test.dart b/tests/language/top_level_non_prefixed_library_test.dart
deleted file mode 100644
index d0f8dab..0000000
--- a/tests/language/top_level_non_prefixed_library_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2011, 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 TopLevelMultipleFilesTest.dart;
-
-import "package:expect/expect.dart";
-import 'top_level_prefixed_library_test.lib';
-part 'top_level_file1.dart';
diff --git a/tests/language/top_level_prefixed_declaration_test.dart b/tests/language/top_level_prefixed_declaration_test.dart
deleted file mode 100644
index 008ec68..0000000
--- a/tests/language/top_level_prefixed_declaration_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-//
-// Dart test for top level declarations involving an imported type.
-
-library main;
-
-import "package:expect/expect.dart";
-import "library11.dart" as lib11;
-
-lib11.Library11 variable = null;
-
-lib11.Library11 function() => null;
-
-lib11.Library11 get getter => null;
-
-main() {
-  Expect.isTrue(variable == null);
-  Expect.isTrue(function() == null);
-  Expect.isTrue(getter == null);
-}
diff --git a/tests/language/top_level_prefixed_library_test.lib b/tests/language/top_level_prefixed_library_test.lib
deleted file mode 100644
index 3347464..0000000
--- a/tests/language/top_level_prefixed_library_test.lib
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2011, 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 TopLevelMultipleFilesTest.dart;
-part 'top_level_file2.dart';
diff --git a/tests/language/top_level_var_test.dart b/tests/language/top_level_var_test.dart
deleted file mode 100644
index e7d9216..0000000
--- a/tests/language/top_level_var_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program testing top-level variables.
-
-import "package:expect/expect.dart";
-
-var a, b;
-
-class TopLevelVarTest {
-  static testMain() {
-    Expect.equals(null, a);
-    Expect.equals(null, b);
-    a = b = 100;
-    b++;
-    Expect.equals(100, a);
-    Expect.equals(101, b);
-
-    Expect.equals(111, x);
-    Expect.equals(112, y);
-  }
-}
-
-// Ensure that initializers work for both const and non-const variables.
-const int x = 2 * 55 + 1;
-int y = x + 1;
-
-main() {
-  TopLevelVarTest.testMain();
-}
diff --git a/tests/language/toplevel_collision1_test.dart b/tests/language/toplevel_collision1_test.dart
deleted file mode 100644
index f8d97c4b..0000000
--- a/tests/language/toplevel_collision1_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2011, 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.
-
-int x = 100;
-
-get x => 200; //                //# 00: compile-time error
-set x(var i) { print(i); } //     //# 01: compile-time error
-
-int x(a, b) { print(a + b); } //  //# 02: compile-time error
-
-void main() {
-  // No need to reference x.
-}
diff --git a/tests/language/toplevel_collision2_test.dart b/tests/language/toplevel_collision2_test.dart
deleted file mode 100644
index 0d9734e..0000000
--- a/tests/language/toplevel_collision2_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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.
-
-get x => 200;
-
-// Ok: can have a setter named x when getter x is defined.
-set x(var i) {
-  print(i);
-}
-
-// Error: there is already a getter for x
-int x; //                         //# 00: compile-time error
-
-// Error: there is already a getter named x.
-int x(a, b) { print(a + b); } //  //# 01: compile-time error
-
-void main() {
-  // No need to reference x.
-}
diff --git a/tests/language/transitive_private_library_access_test.dart b/tests/language/transitive_private_library_access_test.dart
deleted file mode 100644
index a6d9ce4..0000000
--- a/tests/language/transitive_private_library_access_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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.
-// Dart test program to check that we can resolve unqualified identifiers
-
-// Import 'dart:typed_data' which internally imports 'dart:_internal'.
-import 'dart:typed_data';
-
-import 'package:expect/expect.dart';
-
-main() {
-  bool exceptionCaught = false;
-  try {
-    // Attempt to access something in 'dart:_internal'.
-    return ClassID.GetID(4);
-    Expect.fail("Should have thrown an exception");
-  } catch (e) {
-    exceptionCaught = true;
-  }
-  Expect.isTrue(exceptionCaught);
-}
diff --git a/tests/language/tree_shake_typed_selector_test.dart b/tests/language/tree_shake_typed_selector_test.dart
deleted file mode 100644
index 480c846..0000000
--- a/tests/language/tree_shake_typed_selector_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-// Check that dart2js emits code for classes that implement another
-// class.
-
-import "package:expect/expect.dart";
-
-class A {
-  factory A() => new B();
-  foo() => 0;
-}
-
-class B implements A {
-  foo() => 42;
-}
-
-main() {
-  var a = new A();
-  if (a is A) {
-    Expect.equals(42, a.foo());
-  } else {
-    Expect.fail('Should not be here');
-  }
-}
diff --git a/tests/language/truncdiv_test.dart b/tests/language/truncdiv_test.dart
deleted file mode 100644
index 8688041..0000000
--- a/tests/language/truncdiv_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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.
-// Dart test optimization of modulo operator on Smi.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-main() {
-  for (int i = -30; i < 30; i++) {
-    Expect.equals(i % 9, foo(i, 9));
-    // Zero test is done outside the loop.
-    if (i < 0) {
-      Expect.equals(i ~/ -i, foo2(i));
-    } else if (i > 0) {
-      Expect.equals(i ~/ i, foo2(i));
-    }
-  }
-  Expect.throws(() => foo(12, 0), (e) => e is IntegerDivisionByZeroException);
-  Expect.throws(() => foo2(0), (e) => e is IntegerDivisionByZeroException);
-}
-
-foo(i, x) => i % x;
-
-foo2(i) {
-  // Make sure x has a range computed.
-  var x = 0;
-  if (i < 0) {
-    x = -i;
-  } else {
-    x = i;
-  }
-  return i ~/ x;
-}
diff --git a/tests/language/truncdiv_uint32_test.dart b/tests/language/truncdiv_uint32_test.dart
deleted file mode 100644
index 46930a4..0000000
--- a/tests/language/truncdiv_uint32_test.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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.
-
-var a = [0xFFFFFFFF];
-
-main() {
-  if (a[0] ~/ 1 != 0xFFFFFFFF) throw 'Test failed';
-}
diff --git a/tests/language/try_catch2_test.dart b/tests/language/try_catch2_test.dart
deleted file mode 100644
index 8da606c..0000000
--- a/tests/language/try_catch2_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// 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.
-// Dart test program for testing try/catch statement without any exceptions
-// being thrown. (Nested try/catch blocks).
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-abstract class TestException {
-  String getMessage();
-}
-
-class MyException implements TestException {
-  const MyException([String message = ""]) : message_ = message;
-  String getMessage() {
-    return message_;
-  }
-
-  final String message_;
-}
-
-class StackTrace {
-  StackTrace() {}
-}
-
-class Helper {
-  static int f1(int i) {
-    try {
-      int j;
-      j = f2();
-      i = i + 1;
-      try {
-        j = f2() + f3() + j;
-        i = i + 1;
-      } on TestException catch (e, trace) {
-        j = 50;
-      }
-      j = f3() + j;
-    } on MyException catch (exception) {
-      i = 100;
-    } on TestException catch (e, trace) {
-      i = 200;
-    }
-    return i;
-  }
-
-  static int f2() {
-    return 2;
-  }
-
-  static int f3() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-}
-
-class TryCatch2Test {
-  static testMain() {
-    Expect.equals(3, Helper.f1(1));
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    TryCatch2Test.testMain();
-  }
-}
diff --git a/tests/language/try_catch3_test.dart b/tests/language/try_catch3_test.dart
deleted file mode 100644
index 6cff3f8..0000000
--- a/tests/language/try_catch3_test.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// 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.
-// Dart test program for testing try/catch statement without any exceptions
-// being thrown.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-abstract class TestException {
-  String getMessage();
-}
-
-class MyException implements TestException {
-  const MyException([String message = ""]) : this._message = message;
-  String getMessage() {
-    return _message;
-  }
-
-  final String _message;
-}
-
-class MyParameterizedException<U, V> implements TestException {
-  const MyParameterizedException([String message = ""])
-      : this._message = message;
-  String getMessage() {
-    return _message;
-  }
-
-  final String _message;
-}
-
-class StackTrace {
-  StackTrace() {}
-  printStackTrace(TestException ex) {
-    print(ex);
-  }
-}
-
-class Helper {
-  static int test1(int i) {
-    try {
-      int j;
-      j = f2();
-      j = f3();
-      try {
-        int k = f2();
-        f3();
-      } on MyException catch (ex) {
-        int i = 10;
-        print(i);
-      } on TestException catch (ex) {
-        int k = 10;
-        print(k);
-      }
-      try {
-        j = j + 24;
-      } catch (e) {
-        i = 300;
-        print(e.getMessage());
-      }
-      try {
-        j += 20;
-      } catch (e) {
-        i = 400;
-        print(e.getMessage());
-      }
-      try {
-        j += 40;
-      } catch (e) {
-        i = 600;
-        print(e.getMessage());
-      }
-      try {
-        j += 60;
-      } catch (e, trace) {
-        i = 700;
-        print(trace.toString());
-        print(e.getMessage());
-      }
-      try {
-        j += 80;
-      } on MyException catch (e) {
-        i = 500;
-        print(e.getMessage());
-      }
-    } on MyParameterizedException<String, TestException> catch (e, trace) {
-      i = 800;
-      print(trace.toString());
-      rethrow;
-    } on MyException catch (exception) {
-      i = 100;
-      print(exception.getMessage());
-    } on TestException catch (e, trace) {
-      i = 200;
-      print(trace.toString());
-    } finally {
-      i = 900;
-    }
-    return i;
-  }
-
-  static int f2() {
-    return 2;
-  }
-
-  static int f3() {
-    int i = 0;
-    while (i < 10) {
-      i++;
-    }
-    return i;
-  }
-}
-
-class TryCatchTest {
-  static testMain() {
-    Expect.equals(900, Helper.test1(1));
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    TryCatchTest.testMain();
-  }
-}
diff --git a/tests/language/try_catch4_test.dart b/tests/language/try_catch4_test.dart
deleted file mode 100644
index b5b6bf2..0000000
--- a/tests/language/try_catch4_test.dart
+++ /dev/null
@@ -1,206 +0,0 @@
-// 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.
-// Check that our SSA graph does have the try body a predecessor of a
-// try/finally.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-var a;
-
-foo1() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      a = 8;
-      return;
-    } finally {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-doThrow() {
-  throw 2;
-}
-
-foo2() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      a = 8;
-      doThrow();
-      return;
-    } catch (e) {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-foo3() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      doThrow();
-    } catch (e) {
-      a = 8;
-      entered = true;
-      return;
-    } finally {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-foo4() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      a = 8;
-      break;
-    } finally {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-foo5() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      a = 8;
-      doThrow();
-      break;
-    } catch (e) {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-foo6() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      doThrow();
-    } catch (e) {
-      a = 8;
-      entered = true;
-      break;
-    } finally {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-foo7() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      a = 8;
-      continue;
-    } finally {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-foo8() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      a = 8;
-      doThrow();
-      continue;
-    } catch (e) {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-foo9() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      doThrow();
-    } catch (e) {
-      a = 8;
-      entered = true;
-      continue;
-    } finally {
-      b = 8 == a;
-      entered = true;
-      continue;
-    }
-  }
-}
-
-main_test() {
-  a = 0;
-  Expect.isTrue(foo1());
-  a = 0;
-  Expect.isTrue(foo2());
-  a = 0;
-  Expect.isTrue(foo3());
-  a = 0;
-  Expect.isTrue(foo4());
-  a = 0;
-  Expect.isTrue(foo5());
-  a = 0;
-  Expect.isTrue(foo6());
-  a = 0;
-  Expect.isTrue(foo7());
-  a = 0;
-  Expect.isTrue(foo8());
-  a = 0;
-  Expect.isTrue(foo9());
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    main_test();
-  }
-}
diff --git a/tests/language/try_catch5_test.dart b/tests/language/try_catch5_test.dart
deleted file mode 100644
index 97dc857..0000000
--- a/tests/language/try_catch5_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-// Check that our SSA graph does have the try body a predecessor of a
-// try/finally.
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-var a;
-
-foo1() {
-  var b = false;
-  var entered = false;
-  while (true) {
-    if (entered) return b;
-    b = 8 == a; // This expression should not be GVN'ed.
-    try {
-      try {
-        a = 8;
-        return;
-      } finally {
-        b = 8 == a;
-        entered = true;
-        continue;
-      }
-    } finally {
-      continue;
-    }
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    a = 0;
-    Expect.isTrue(foo1());
-  }
-}
diff --git a/tests/language/try_catch_on_syntax_test.dart b/tests/language/try_catch_on_syntax_test.dart
deleted file mode 100644
index 57d9008..0000000
--- a/tests/language/try_catch_on_syntax_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2011, 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";
-
-class MyException {}
-
-class MyException1 extends MyException {}
-
-class MyException2 extends MyException {}
-
-void test1() {
-  var foo = 0;
-  try {
-    throw new MyException1();
-  }
-  on on MyException2 catch (e) { } //# 02: syntax error
-  catch MyException2 catch (e) { } //# 03: syntax error
-  catch catch catch (e) { } //# 04: syntax error
-  on (e) { } //# 05: syntax error
-  catch MyException2 catch (e) { } //# 06: syntax error
-  on MyException2 catch (e) {
-    foo = 1;
-  } on MyException1 catch (e) {
-    foo = 2;
-  } on MyException catch (e) {
-    foo = 3;
-  }
-  on UndefinedClass //# 07: static type warning
-  catch (e) {
-    foo = 4;
-  }
-  Expect.equals(2, foo);
-}
-
-testFinal() {
-  try {
-    throw "catch this!";
-  } catch (e, s) {
-    // Test that the error and stack trace variables are final.
-      e = null; // //# 10: runtime error
-      s = null; // //# 11: runtime error
-  }
-}
-
-main() {
-  test1();
-  testFinal();
-}
diff --git a/tests/language/try_catch_optimized1_test.dart b/tests/language/try_catch_optimized1_test.dart
deleted file mode 100644
index c405538..0000000
--- a/tests/language/try_catch_optimized1_test.dart
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-maythrow(x) {
-  if (x == null) throw 42;
-  return 99;
-}
-
-f1(x) {
-  var result = 123;
-  try {
-    result = maythrow(x);
-    if (result > 100) throw 42;
-  } catch (e) {
-    Expect.equals(result, 123);
-    Expect.equals(42, e);
-    result = 0;
-  }
-  return result;
-}
-
-class A {
-  maythrow(x) {
-    if (x == null) throw 42;
-    return 99;
-  }
-}
-
-f2(x) {
-  var result = 123;
-  var a = new A();
-  try {
-    result++;
-    result = a.maythrow(x);
-  } catch (e) {
-    Expect.equals(124, result);
-    result = x;
-  }
-  return result;
-}
-
-f3(x, y) {
-  var result = 123;
-  var a = new A();
-  try {
-    result++;
-    result = a.maythrow(x);
-  } catch (e) {
-    result = y + 1; // Deopt on overflow
-  }
-  return result;
-}
-
-f4(x) {
-  try {
-    maythrow(x);
-  } catch (e) {
-    check_f4(e, "abc");
-  }
-}
-
-check_f4(e, s) {
-  if (e != 42) throw "ERROR";
-  if (s != "abc") throw "ERROR";
-}
-
-f5(x) {
-  try {
-    maythrow(x);
-  } catch (e) {
-    check_f5(e, "abc");
-  }
-
-  try {
-    maythrow(x);
-  } catch (e) {
-    check_f5(e, "abc");
-  }
-}
-
-check_f5(e, s) {
-  if (e != 42) throw "ERROR";
-  if (s != "abc") throw "ERROR";
-}
-
-f6(x, y) {
-  var a = x;
-  var b = y;
-  var c = 123;
-  check_f6(42, null, 1, 123, null, 1);
-  try {
-    maythrow(x);
-  } catch (e) {
-    check_f6(e, a, b, c, x, y);
-  }
-}
-
-check_f6(e, a, b, c, x, y) {
-  if (e != 42) throw "ERROR";
-  if (a != null) throw "ERROR";
-  if (b != 1) throw "ERROR";
-  if (c != 123) throw "ERROR";
-  if (x != null) throw "ERROR";
-  if (y != 1) throw "ERROR";
-}
-
-bool f7(String str) {
-  double d = double.parse(str);
-  var t = d;
-  try {
-    var a = d.toInt();
-    return false;
-  } on UnsupportedError catch (e) {
-    Expect.equals(true, identical(t, d));
-    return true;
-  }
-}
-
-f8(x, [a = 3, b = 4]) {
-  var c = 123;
-  var y = a;
-  try {
-    maythrow(x);
-  } catch (e, s) {
-    check_f8(e, s, a, b, c, x, y);
-  }
-}
-
-check_f8(e, s, a, b, c, x, y) {
-  if (e != 42) throw "ERROR";
-  if (s is! StackTrace) throw "ERROR";
-  if (a != 3) {
-    print(a);
-    throw "ERROR";
-  }
-  if (b != 4) throw "ERROR";
-  if (c != 123) throw "ERROR";
-  if (x != null) throw "ERROR";
-  if (y != a) throw "ERROR";
-}
-
-f9(x, [a = 3, b = 4]) {
-  var c = 123;
-  var y = a;
-  try {
-    if (x < a) maythrow(null);
-    maythrow(x);
-  } catch (e, s) {
-    check_f9(e, s, a, b, c, x, y);
-  }
-}
-
-check_f9(e, s, a, b, c, x, y) {
-  if (e != 42) throw "ERROR";
-  if (s is! StackTrace) throw "ERROR";
-  if (a != 3) {
-    print(a);
-    throw "ERROR";
-  }
-  if (b != 4) throw "ERROR";
-  if (c != 123) throw "ERROR";
-  if (x != null) throw "ERROR";
-  if (y != a) throw "ERROR";
-}
-
-f10(x, y) {
-  var result = 123;
-  try {
-    result = maythrow(x);
-  } catch (e) {
-    Expect.equals(123, result);
-    Expect.equals(0.5, y / 2.0);
-    result = 0;
-  }
-  return result;
-}
-
-f11(x) {
-  var result = 123;
-  var tmp = x;
-  try {
-    result = maythrow(x);
-    if (result > 100) throw 42;
-  } catch (e, s) {
-    Expect.equals(123, result);
-    Expect.equals(true, identical(tmp, x));
-    Expect.equals(true, s is StackTrace);
-    result = 0;
-  }
-  return result;
-}
-
-f12([x = null]) {
-  try {
-    maythrow(x);
-  } catch (e) {
-    check_f12(e, x);
-  }
-}
-
-check_f12(e, x) {
-  if (e != 42) throw "ERROR";
-  if (x != null) throw "ERROR";
-}
-
-f13(x) {
-  var result = 123;
-  try {
-    try {
-      result = maythrow(x);
-      if (result > 100) throw 42;
-    } catch (e) {
-      Expect.equals(123, result);
-      result = 0;
-    }
-    maythrow(x);
-  } catch (e) {
-    result++;
-  }
-  return result;
-}
-
-main() {
-  for (var i = 0; i < 20; i++) f1("abc");
-  Expect.equals(99, f1("abc"));
-  Expect.equals(0, f1(null));
-
-  for (var i = 0; i < 20; i++) f2("abc");
-  Expect.equals(99, f2("abc"));
-  Expect.equals(null, f2(null));
-
-  f3("123", 0);
-  for (var i = 0; i < 20; i++) f3(null, 0);
-  Expect.equals(99, f3("123", 0));
-  Expect.equals(0x40000000, f3(null, 0x3fffffff));
-
-  f4(null);
-  for (var i = 0; i < 20; i++) f4(123);
-  f4(null);
-
-  f5(null);
-  for (var i = 0; i < 20; i++) f5(123);
-  f5(null);
-
-  f6(null, 1);
-  for (var i = 0; i < 20; i++) f6(123, 1);
-  f6(null, 1);
-
-  f7("1.2");
-  f7("Infinity");
-  f7("-Infinity");
-  for (var i = 0; i < 20; i++) f7("1.2");
-  Expect.equals(false, f7("1.2"));
-  Expect.equals(true, f7("Infinity"));
-  Expect.equals(true, f7("-Infinity"));
-  Expect.equals(false, f7("123456789012345")); // Deopt.
-  for (var i = 0; i < 20; i++) f7("123456789012345");
-  Expect.equals(true, f7("Infinity"));
-  Expect.equals(true, f7("-Infinity"));
-
-  for (var i = 0; i < 20; i++) f8(null);
-  f8(null);
-
-  f9(5);
-  f9(5.0);
-  for (var i = 0; i < 20; i++) f9(3);
-  f9(3);
-
-  var y = 1.0;
-  Expect.equals(0, f10(null, y));
-  for (var i = 0; i < 20; i++) f10("abc", y);
-  Expect.equals(99, f10("abc", y));
-  Expect.equals(0, f10(null, y));
-
-  for (var i = 0; i < 20; i++) f11("abc");
-  Expect.equals(99, f11("abc"));
-  Expect.equals(0, f11(null));
-
-  for (var i = 0; i < 20; i++) f12(null);
-  f12(null);
-
-  f13(null);
-  for (var i = 0; i < 20; i++) f13("abc");
-  Expect.equals(99, f13("abc"));
-  Expect.equals(1, f13(null));
-}
diff --git a/tests/language/try_catch_optimized2_test.dart b/tests/language/try_catch_optimized2_test.dart
deleted file mode 100644
index 7b07176..0000000
--- a/tests/language/try_catch_optimized2_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test allocation sinking with optimized try-catch.
-
-bar() {
-  // Should not be inlined.
-  try {} finally {}
-}
-
-foo(a) {
-  var r = 0;
-  for (var i in a) {
-    r += i;
-  }
-  try {
-    bar();
-  } finally {}
-  return r;
-}
-
-main() {
-  var a = [1, 2, 3];
-  for (var i = 0; i < 20; i++) foo(a);
-  Expect.equals(6, foo(a));
-}
diff --git a/tests/language/try_catch_optimized3_test.dart b/tests/language/try_catch_optimized3_test.dart
deleted file mode 100644
index a2b03fc..0000000
--- a/tests/language/try_catch_optimized3_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test unboxed double operations inside try-catch.
-foo(bool b) {
-  if (b) throw 123;
-}
-
-test_double(double x, bool b) {
-  try {
-    x += 1.0;
-    foo(b);
-  } catch (e) {
-    var result = x - 1.0;
-    Expect.equals(1.0, result);
-    return result;
-  }
-}
-
-main() {
-  for (var i = 0; i < 100; i++) test_double(1.0, false);
-  test_double(1.0, false);
-  Expect.equals(1.0, test_double(1.0, true));
-}
diff --git a/tests/language/try_catch_optimized4_test.dart b/tests/language/try_catch_optimized4_test.dart
deleted file mode 100644
index dc98f31..0000000
--- a/tests/language/try_catch_optimized4_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test correct dead phi elimination with try catch.
-
-List<Object> a = [1, 2, 3, 4, 5];
-
-class MyError {}
-
-class M {
-  maythrow(i) {
-    try {
-      if (i <= 5) throw new MyError();
-    } catch (e) {
-      throw e;
-    }
-  }
-}
-
-loop_test() {
-  bool failed = false;
-  M m = new M();
-  for (Object i in a) {
-    try {
-      String res = m.maythrow(i);
-      failed = true;
-    } on MyError catch (e) {}
-    if (!identical(failed, false)) {
-      Expect.fail("");
-    }
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) loop_test();
-}
diff --git a/tests/language/try_catch_optimized5_test.dart b/tests/language/try_catch_optimized5_test.dart
deleted file mode 100644
index 5fd5be1..0000000
--- a/tests/language/try_catch_optimized5_test.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// 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.
-// Dart test program for testing try/catch statement without any exceptions
-// being thrown.
-// VMOptions=--optimization-counter-threshold=100 --no-background-compilation --enable-inlining-annotations
-
-// Test optional parameters updated inside try-catch
-
-import "package:expect/expect.dart";
-
-const noInline = "NeverInline";
-
-@noInline
-m1(int b) {
-  if (b == 1) throw 123;
-}
-
-@noInline
-m2(int b) {
-  if (b == 2) throw 456;
-}
-
-@noInline
-test1(int b, [int state = 0]) {
-  try {
-    state++;
-    m1(b);
-    state++;
-    m2(b);
-    state++;
-  } on dynamic catch (e, s) {
-    if (b == 1 && state != 1) throw "fail1";
-    if (b == 2 && state != 2) throw "fail2";
-    if (b == 3 && state != 3) throw "fail3";
-    if (s is! StackTrace) throw "fail4";
-    return e;
-  }
-  return "no throw";
-}
-
-@noInline
-test2(int b, [int state]) {
-  state = 0;
-  try {
-    state++;
-    m1(b);
-    state++;
-    m2(b);
-    state++;
-  } on dynamic catch (e, s) {
-    if (b == 1 && state != 1) throw "fail1";
-    if (b == 2 && state != 2) throw "fail2";
-    if (b == 3 && state != 3) throw "fail3";
-    if (s is! StackTrace) throw "fail4";
-    return e;
-  }
-  return "no throw";
-}
-
-main() {
-  for (var i = 0; i < 300; i++) {
-    Expect.equals("no throw", test1(0));
-  }
-  Expect.equals("no throw", test1(0));
-  Expect.equals(123, test1(1));
-  Expect.equals(456, test1(2));
-
-  for (var i = 0; i < 300; i++) {
-    Expect.equals("no throw", test2(0));
-  }
-  Expect.equals("no throw", test2(0));
-  Expect.equals(123, test2(1));
-  Expect.equals(456, test2(2));
-}
diff --git a/tests/language/try_catch_osr_test.dart b/tests/language/try_catch_osr_test.dart
deleted file mode 100644
index 085241f4..0000000
--- a/tests/language/try_catch_osr_test.dart
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Test OSR in different places of a try-catch.
-
-import "package:expect/expect.dart";
-
-maythrow(x) {
-  try {
-    if (x == null) throw 42;
-    return 99;
-  } finally {}
-}
-
-f1() {
-  var s = 0, t = "abc";
-  for (var i = 0; i < 21; ++i) {
-    s += i;
-  }
-  try {
-    maythrow(null);
-  } catch (e) {
-    Expect.equals("abc", t);
-    Expect.equals(42, e);
-    s++;
-  }
-  return s;
-}
-
-f2([x = 1]) {
-  var s = 0, t = "abc";
-  try {
-    try {
-      for (var i = 0; i < 20; ++i) {
-        if (i == 18) maythrow(null);
-        s += x;
-      }
-    } catch (e) {
-      Expect.equals(1, x);
-      Expect.equals("abc", t);
-      Expect.equals(42, e);
-      s++;
-    }
-  } catch (e) {}
-  return s;
-}
-
-f3() {
-  var s = 0, t = "abc";
-  try {
-    maythrow(null);
-  } catch (e) {
-    Expect.equals("abc", t);
-    for (var i = 0; i < 21; ++i) {
-      s += i;
-    }
-    Expect.equals("abc", t);
-    Expect.equals(42, e);
-    return s;
-  }
-}
-
-f4() {
-  var s = 0, t = "abc";
-  try {
-    for (var i = 0; i < 21; ++i) {
-      if (i == 18) maythrow(null);
-      s += i;
-    }
-  } catch (e) {
-    Expect.equals("abc", t);
-    Expect.equals(42, e);
-    s++;
-  }
-  return s;
-}
-
-f5() {
-  var s, t = "abc";
-  try {
-    maythrow(null);
-  } catch (e) {
-    Expect.equals("abc", t);
-    Expect.equals(42, e);
-    s = 0;
-  }
-  for (var i = 0; i < 21; ++i) {
-    s += i;
-  }
-  Expect.equals("abc", t);
-  return s;
-}
-
-main() {
-  Expect.equals(211, f1());
-  Expect.equals(19, f2());
-  Expect.equals(210, f3());
-  Expect.equals(9 * 17 + 1, f4());
-  Expect.equals(210, f5());
-}
diff --git a/tests/language/try_catch_regress_27483_test.dart b/tests/language/try_catch_regress_27483_test.dart
deleted file mode 100644
index c276857..0000000
--- a/tests/language/try_catch_regress_27483_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// 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.
-// Dart test program for testing try/catch statement without any exceptions
-// being thrown.
-// VMOptions=--optimization-counter-threshold=100 --no-background-compilation --enable-inlining-annotations
-
-// Test local variables updated inside try-catch.
-
-import "package:expect/expect.dart";
-
-const noInline = "NeverInline";
-
-@noInline
-m1(int b) {
-  if (b == 1) throw 123;
-}
-
-@noInline
-m2(int b) {
-  if (b == 2) throw 456;
-}
-
-@noInline
-test(b) {
-  var state = 0;
-  try {
-    state++;
-    m1(b);
-    state++;
-    m2(b);
-    state++;
-  } on dynamic catch (e, s) {
-    if (b == 1 && state != 1) throw "fail1";
-    if (b == 2 && state != 2) throw "fail2";
-    if (b == 3 && state != 3) throw "fail3";
-    return e;
-  }
-  return "no throw";
-}
-
-main() {
-  for (var i = 0; i < 300; i++) {
-    Expect.equals("no throw", test(0));
-  }
-  Expect.equals("no throw", test(0));
-  Expect.equals(123, test(1));
-  Expect.equals(456, test(2));
-}
diff --git a/tests/language/try_catch_syntax_test.dart b/tests/language/try_catch_syntax_test.dart
deleted file mode 100644
index 0ab0c0e..0000000
--- a/tests/language/try_catch_syntax_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// 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.
-
-main() {
-  testMissingCatch();
-  testMissingTry();
-  testDuplicateCatchVariable();
-  testIllegalFinally();
-  testIllegalCatch();
-  testIllegalRethrow();
-}
-
-testMissingCatch() {
-  try { } // //# 01: syntax error
-}
-
-testMissingTry() {
-  on Exception catch (e) { } //                  //# 02: syntax error
-  on Exception catch (e, trace) { } //           //# 03: syntax error
-  finally { } //                                 //# 04: syntax error
-}
-
-testDuplicateCatchVariable() {
-  try { } on Exception catch (e, e) { } //# 05: compile-time error
-}
-
-testIllegalFinally() {
-  try { } finally (e) { } //# 06: syntax error
-}
-
-testIllegalCatch() {
-  try { } catch () { } //             //# 07: syntax error
-  try { } on MammaMia catch (e) { } //# 08: static type warning
-  try { } catch (var e) { } //        //# 09: syntax error
-  try { } catch (final e) { } //      //# 10: syntax error
-  try { } catch (int e) { } //        //# 11: syntax error
-  try { } catch (final int e) { } //  //# 12: syntax error
-  try { } catch ([e, s]) { } //       //# 13: syntax error
-  try { } catch (e, [s]) { } //       //# 14: syntax error
-  try { } catch (e, [s0, s1]) { } //  //# 15: syntax error
-}
-
-testIllegalRethrow() {
-  try { rethrow; } catch (e) { } //            //# 16: compile-time error
-  try { } catch (e) { } finally { rethrow; } //# 17: compile-time error
-}
diff --git a/tests/language/try_catch_test.dart b/tests/language/try_catch_test.dart
deleted file mode 100644
index cfc68f3..0000000
--- a/tests/language/try_catch_test.dart
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright (c) 2011, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class MyException {}
-
-class MyException1 extends MyException {}
-
-class MyException2 extends MyException {}
-
-class TryCatchTest {
-  static void test1() {
-    var foo = 0;
-    try {
-      throw new MyException1();
-    } on MyException2 catch (e) {
-      foo = 1;
-    } on MyException1 catch (e) {
-      foo = 2;
-    } on MyException catch (e) {
-      foo = 3;
-    }
-    Expect.equals(2, foo);
-  }
-
-  static void test2() {
-    var foo = 0;
-    try {
-      throw new MyException1();
-    } on MyException2 catch (e) {
-      foo = 1;
-    } on MyException catch (e) {
-      foo = 2;
-    } on MyException1 catch (e) {
-      foo = 3;
-    }
-    Expect.equals(2, foo);
-  }
-
-  static void test3() {
-    var foo = 0;
-    try {
-      throw new MyException();
-    } on MyException2 catch (e) {
-      foo = 1;
-    } on MyException1 catch (e) {
-      foo = 2;
-    } on MyException catch (e) {
-      foo = 3;
-    }
-    Expect.equals(3, foo);
-  }
-
-  static void test4() {
-    var foo = 0;
-    try {
-      try {
-        throw new MyException();
-      } on MyException2 catch (e) {
-        foo = 1;
-      } on MyException1 catch (e) {
-        foo = 2;
-      }
-    } on MyException catch (e) {
-      Expect.equals(0, foo);
-      foo = 3;
-    }
-    Expect.equals(3, foo);
-  }
-
-  static void test5() {
-    var foo = 0;
-    try {
-      throw new MyException1();
-    } on MyException2 catch (e) {
-      foo = 1;
-    } catch (e) {
-      foo = 2;
-    }
-    Expect.equals(2, foo);
-  }
-
-  static void test6() {
-    var foo = 0;
-    try {
-      throw new MyException();
-    } on MyException2 catch (e) {
-      foo = 1;
-    } on MyException1 catch (e) {
-      foo = 2;
-    } catch (e) {
-      foo = 3;
-    }
-    Expect.equals(3, foo);
-  }
-
-  static void test7() {
-    var foo = 0;
-    try {
-      try {
-        throw new MyException();
-      } on MyException2 catch (e) {
-        foo = 1;
-      } on MyException1 catch (e) {
-        foo = 2;
-      }
-    } catch (e) {
-      Expect.equals(0, foo);
-      foo = 3;
-    }
-    Expect.equals(3, foo);
-  }
-
-  static void test8() {
-    var e = 3;
-    var caught = false;
-    try {
-      throw new MyException();
-    } catch (exc) {
-      caught = true;
-    }
-    Expect.equals(true, caught);
-    Expect.equals(3, e);
-  }
-
-  static void test9() {
-    var e = 6;
-    try {
-      throw "up";
-    } on String {
-      e = "s";
-    } on int {
-      e = "i";
-    }
-    Expect.equals("s", e);
-  }
-
-  static void test10() {
-    try {
-      throw "up";
-    } on String catch (e) {
-      var e = 1; // ok, shadows exception variable.
-      Expect.equals(1, e);
-    }
-  }
-
-  static void test11() {
-    var e0 = 11;
-    try {
-      throw "up";
-    } on int catch (e0) {
-      Expect.fail("unreachable");
-    } on String catch (e1) {
-      // e0 from the other catch clause is not in scope.
-      Expect.equals(11, e0);
-    }
-  }
-
-  static void test12() {
-    const x = const [];
-    try {
-      throw "up";
-    } catch (e) {
-      Expect.equals("up", e);
-    } on String catch (e) {
-      // Compile-time constants in unreachable catch blocks are still
-      // compiled.
-      const y = x[0]; // //# 01: compile-time error
-      Expect.fail("unreachable");
-    }
-  }
-
-  static void testMain() {
-    test1();
-    test2();
-    test3();
-    test4();
-    test5();
-    test6();
-    test7();
-    test8();
-    test9();
-    test10();
-    test11();
-    test12();
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    TryCatchTest.testMain();
-  }
-}
diff --git a/tests/language/try_finally_regress_25333_test.dart b/tests/language/try_finally_regress_25333_test.dart
deleted file mode 100644
index 6318f7c..0000000
--- a/tests/language/try_finally_regress_25333_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// 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.
-
-// Test correct handling of try-catch inside try-finally.
-
-import "package:expect/expect.dart";
-
-void main() {
-  print("== test1 ==");
-  bool caught = false;
-  try {
-    test1();
-    print("Unexpected 1"); // should never go here
-    Expect.isTrue(false);
-  } catch (e) {
-    caught = true;
-    print("main catch 1: $e");
-    Expect.equals(e, "Ball");
-  }
-  Expect.isTrue(caught);
-  print("== test2 ==");
-  caught = false;
-  try {
-    test2();
-    print("Unexpected 2"); // should never go here
-    Expect.isTrue(false);
-  } catch (e) {
-    caught = true;
-    print("main catch 2: $e");
-    Expect.equals(e, "Ball");
-  }
-  Expect.isTrue(caught);
-}
-
-void test1() {
-  try {
-    throw "Ball";
-  } finally {
-    try {
-      throw "Frisbee";
-    } catch (e) {
-      print("test 1 catch: $e");
-      Expect.equals(e, "Frisbee");
-    }
-  }
-}
-
-void test2() {
-  try {
-    throwError(); // call a method that throws an error
-  } finally {
-    try {
-      throw "Frisbee";
-    } catch (e) {
-      print("test 2 catch: $e");
-      Expect.equals(e, "Frisbee");
-    }
-  }
-}
-
-void throwError() {
-  throw "Ball";
-}
diff --git a/tests/language/try_finally_regress_25654_test.dart b/tests/language/try_finally_regress_25654_test.dart
deleted file mode 100644
index 32a236f..0000000
--- a/tests/language/try_finally_regress_25654_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-
-// Test break out of try-finally.
-
-import "package:expect/expect.dart";
-
-var count = 0;
-
-test() {
-  L:
-  while (true) {
-    try {
-      break L;
-    } finally {
-      count++;
-    }
-  }
-  throw "ex";
-}
-
-main() {
-  bool caught = false;
-  try {
-    test();
-  } catch (e) {
-    caught = true;
-    Expect.equals(e, "ex");
-  }
-  Expect.isTrue(caught);
-  Expect.equals(1, count);
-}
diff --git a/tests/language/type_argument_in_super_type_test.dart b/tests/language/type_argument_in_super_type_test.dart
deleted file mode 100644
index b5618cc..0000000
--- a/tests/language/type_argument_in_super_type_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class C {}
-
-class A<T> {
-  var field;
-  A(this.field);
-  T foo() => field;
-  int bar() => field;
-}
-
-class B extends A<C> {
-  B() : super(new C());
-}
-
-main() {
-  B b = new B();
-  Expect.equals(b.field, b.foo());
-  bool isCheckedMode = false;
-  try {
-    String a = 42;
-  } catch (e) {
-    isCheckedMode = true;
-  }
-  if (isCheckedMode) {
-    Expect.throws(b.bar, (e) => e is TypeError);
-  } else {
-    Expect.equals(b.field, b.bar());
-  }
-}
diff --git a/tests/language/type_argument_substitution_test.dart b/tests/language/type_argument_substitution_test.dart
deleted file mode 100644
index cca72f0..0000000
--- a/tests/language/type_argument_substitution_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that substitutions are emitted for classes that are only used as
-// type arguments.
-
-import 'package:expect/expect.dart';
-
-class K {}
-
-class A<T> {}
-
-class B extends A<K> {}
-
-class X<T> {}
-
-main() {
-  var v = new DateTime.now().millisecondsSinceEpoch != 42
-      ? new X<B>()
-      : new X<A<String>>();
-  Expect.isFalse(v is X<A<String>>);
-}
diff --git a/tests/language/type_check_const_function_typedef2_test.dart b/tests/language/type_check_const_function_typedef2_test.dart
deleted file mode 100644
index 3bb058e..0000000
--- a/tests/language/type_check_const_function_typedef2_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that typechecks on const objects with typedefs work.
-
-import "package:expect/expect.dart";
-
-typedef String Int2String(int x);
-
-class A {
-  final Int2String f;
-  const A(this.f);
-}
-
-int // //# 00: static type warning, checked mode compile-time error
-foo(
-String // //# 00: continued
-        x) =>
-    499;
-
-const a = const A(foo);
-
-main() {
-  Expect.equals(499, a.f(499));
-}
diff --git a/tests/language/type_check_const_function_typedef_test.dart b/tests/language/type_check_const_function_typedef_test.dart
deleted file mode 100644
index 484c61a..0000000
--- a/tests/language/type_check_const_function_typedef_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that typechecks on const objects with typedefs work.
-
-import "package:expect/expect.dart";
-
-typedef String Int2String(int x);
-
-class A {
-  final Int2String f;
-  const A(this.f);
-}
-
-String foo(int x) => "str";
-
-const a = const A(foo);
-
-main() {
-  Expect.equals("str", a.f(499));
-}
diff --git a/tests/language/type_check_test.dart b/tests/language/type_check_test.dart
deleted file mode 100644
index 1274d7d..0000000
--- a/tests/language/type_check_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to remove the a B type check
-// after an A type check, because it thought any subtype of A had to be B.
-
-import "package:expect/expect.dart";
-
-class A {}
-
-class B extends A {}
-
-main() {
-  var a = [new A(), new B()];
-  var b = a[0];
-  b = b as A;
-  Expect.throws(() => b as B, (e) => e is CastError);
-}
diff --git a/tests/language/type_checks_in_factory_method_test.dart b/tests/language/type_checks_in_factory_method_test.dart
deleted file mode 100644
index 4402fd6..0000000
--- a/tests/language/type_checks_in_factory_method_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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.
-// VMOptions=--enable_checked_mode
-// Tests the type checking when passing code into closure from inside a factory method
-
-import "package:expect/expect.dart";
-
-abstract class Foo<T> {
-  factory Foo.from() = Bar<T>.from;
-}
-
-class Bar<T> implements Foo<T> {
-  Bar() {}
-
-  factory Bar.from() {
-    var func = (T arg) {
-      T foo = arg;
-      bool isString = foo is String;
-      print(arg);
-      print(" String=$isString");
-    };
-
-    func("Hello World!"); // If T is not String, dynamic type checks should fail
-    return new Bar<T>();
-  }
-}
-
-main() {
-  Foo<String> value1;
-  value1 = new Foo<String>.from();
-
-  bool gotError = false;
-
-  try {
-    Foo<int> value2 = new Foo<int>.from();
-  } on TypeError catch (e) {
-    gotError = true;
-  }
-  Expect.equals(true, gotError);
-}
diff --git a/tests/language/type_conversion_ssa_test.dart b/tests/language/type_conversion_ssa_test.dart
deleted file mode 100644
index 2a721b7..0000000
--- a/tests/language/type_conversion_ssa_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js, that used to generate bad code in
-// checked mode. The pattern that lead to an error was:
-//
-// t1 = GeneratedAtUseSite instruction
-// t2 = check(t1)
-// t3 = check(t2)
-// t4 = use(t3)
-// t5 = use(t3)
-// t6 = use(t2)
-//
-// The SSA variable allocator used to allocate the same variable for
-// t5 and t2, because of a bogus optimization with check instructions.
-
-expect(a, b) {
-  if (a != b) throw 'Failed';
-}
-
-var array = [
-  new SelectorGroup([
-    new Selector([new SimpleSelectorSequence(new ClassSelector())]),
-    new Selector([new SimpleSelectorSequence(new ClassSelector())]),
-    new Selector([new SimpleSelectorSequence(new ClassSelector())])
-  ]),
-  new Object()
-];
-
-class RuleSet {
-  final SelectorGroup _selectorGroup;
-  RuleSet(this._selectorGroup);
-  SelectorGroup get selectorGroup => _selectorGroup;
-}
-
-class SelectorGroup {
-  List<Selector> _selectors;
-  SelectorGroup(this._selectors);
-  List<Selector> get selectors => _selectors;
-}
-
-class Selector {
-  final List<SimpleSelectorSequence> _simpleSelectorSequences;
-  Selector(this._simpleSelectorSequences);
-  List<SimpleSelectorSequence> get simpleSelectorSequences =>
-      _simpleSelectorSequences;
-}
-
-class SimpleSelectorSequence {
-  final SimpleSelector _selector;
-  SimpleSelectorSequence(this._selector);
-  get simpleSelector => _selector;
-}
-
-class SimpleSelector {}
-
-class ClassSelector extends SimpleSelector {}
-
-void testSelectorGroups() {
-  // Fetch the rule set from an array to trick the type inferrer.
-  var ruleset = new RuleSet(array[0]);
-  expect(ruleset.selectorGroup.selectors.length, 3);
-
-  var groupSelector0 = ruleset.selectorGroup.selectors[0];
-  var selector0 = groupSelector0.simpleSelectorSequences[0];
-  var simpleSelector0 = selector0.simpleSelector;
-
-  var groupSelector1 = ruleset.selectorGroup.selectors[1];
-  var selector1 = groupSelector1.simpleSelectorSequences[0];
-  var simpleSelector1 = selector1.simpleSelector;
-  expect(simpleSelector1 is ClassSelector, true);
-  var groupSelector2 = ruleset.selectorGroup.selectors[2];
-}
-
-main() {
-  testSelectorGroups();
-  // Trick the type inferrer.
-  new SimpleSelectorSequence(new SimpleSelector());
-  new SelectorGroup([]);
-  new Selector([]);
-}
diff --git a/tests/language/type_error_test.dart b/tests/language/type_error_test.dart
deleted file mode 100644
index 96c42ab..0000000
--- a/tests/language/type_error_test.dart
+++ /dev/null
@@ -1,192 +0,0 @@
-// 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";
-
-// Test that various type errors doesn't invoke user-defined code
-// during error reporting.
-
-class MyClass {}
-
-class IntTypeError {
-  toString() {
-    int value = wrap(this);
-    return super.toString();
-  }
-}
-
-class StringTypeError {
-  toString() {
-    String value = wrap(this);
-    return super.toString();
-  }
-}
-
-class DoubleTypeError {
-  toString() {
-    double value = wrap(this);
-    return super.toString();
-  }
-}
-
-class NumTypeError {
-  toString() {
-    num value = wrap(this);
-    return super.toString();
-  }
-}
-
-class BoolTypeError {
-  toString() {
-    bool value = wrap(this);
-    return super.toString();
-  }
-}
-
-class FunctionTypeError {
-  toString() {
-    Function value = wrap(this);
-    return super.toString();
-  }
-}
-
-class MyClassTypeError {
-  toString() {
-    MyClass value = wrap(this);
-    return super.toString();
-  }
-}
-
-class ListTypeError {
-  toString() {
-    List value = wrap(this);
-    return super.toString();
-  }
-}
-
-class IntCastError {
-  toString() {
-    wrap(this) as int;
-    return super.toString();
-  }
-}
-
-class StringCastError {
-  toString() {
-    wrap(this) as String;
-    return super.toString();
-  }
-}
-
-class DoubleCastError {
-  toString() {
-    wrap(this) as double;
-    return super.toString();
-  }
-}
-
-class NumCastError {
-  toString() {
-    wrap(this) as num;
-    return super.toString();
-  }
-}
-
-class BoolCastError {
-  toString() {
-    wrap(this) as bool;
-    return super.toString();
-  }
-}
-
-class FunctionCastError {
-  toString() {
-    wrap(this) as Function;
-    return super.toString();
-  }
-}
-
-class MyClassCastError {
-  toString() {
-    wrap(this) as MyClass;
-    return super.toString();
-  }
-}
-
-class ListCastError {
-  toString() {
-    wrap(this) as List;
-    return super.toString();
-  }
-}
-
-/// Defeat optimizations of type checks.
-wrap(e) {
-  if (new DateTime.now().year == 1980) return null;
-  return e;
-}
-
-checkTypeError(o) {
-  try {
-    print(o);
-  } on TypeError catch (e) {
-    print(e); // This might provoke an error.
-    if (typeAssertionsEnabled) return; // Expected type error.
-    rethrow; // Rethrow unexpected type error.
-  }
-  if (typeAssertionsEnabled) {
-    throw 'expected TypeError';
-  }
-}
-
-checkAssert(o) {
-  try {
-    assert(o);
-  } on TypeError catch (e) {
-    print(e); // This might provoke an error.
-    if (!assertStatementsEnabled) rethrow; // Unexpected error.
-  }
-}
-
-checkCastError(o) {
-  try {
-    print(o);
-  } on TypeError catch (e) {
-    print('unexpected type error: ${Error.safeToString(e)}');
-    rethrow; // Unexpected type error.
-  } on CastError catch (e) {
-    print(e); // This might provoke an error.
-    return; // Expected a cast error.
-  }
-  throw 'expected CastError';
-}
-
-main() {
-  checkTypeError(new IntTypeError());
-  checkTypeError(new StringTypeError());
-  checkTypeError(new DoubleTypeError());
-  checkTypeError(new NumTypeError());
-  checkTypeError(new BoolTypeError());
-  checkTypeError(new FunctionTypeError());
-  checkTypeError(new MyClassTypeError());
-  checkTypeError(new ListTypeError());
-
-  checkAssert(new IntTypeError());
-  checkAssert(new StringTypeError());
-  checkAssert(new DoubleTypeError());
-  checkAssert(new NumTypeError());
-  checkAssert(new BoolTypeError());
-  checkAssert(new FunctionTypeError());
-  checkAssert(new MyClassTypeError());
-  checkAssert(new ListTypeError());
-
-  checkCastError(new IntCastError());
-  checkCastError(new StringCastError());
-  checkCastError(new DoubleCastError());
-  checkCastError(new NumCastError());
-  checkCastError(new BoolCastError());
-  checkCastError(new FunctionCastError());
-  checkCastError(new MyClassCastError());
-  checkCastError(new ListCastError());
-}
diff --git a/tests/language/type_guard_conversion_test.dart b/tests/language/type_guard_conversion_test.dart
deleted file mode 100644
index c931108..0000000
--- a/tests/language/type_guard_conversion_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-foo() => 'bar';
-
-main() {
-  var a = foo();
-  var b = 'c';
-  do {
-    b = a[2];
-  } while (b != 'r');
-
-  if (a is Comparable) {
-    a += a;
-  }
-  Expect.equals('barbar', a);
-}
diff --git a/tests/language/type_intersection_test.dart b/tests/language/type_intersection_test.dart
deleted file mode 100644
index dc548b4..0000000
--- a/tests/language/type_intersection_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to consider that the
-// intersection of [Comparable] and [num] is conflicting.
-
-import "package:expect/expect.dart";
-
-class A {
-  foo(a, Comparable b) => a == b;
-  bar(a, Comparable b) => b == a;
-}
-
-main() {
-  Expect.isFalse(new A().foo(1, 'foo'));
-  Expect.isTrue(new A().foo(1, 1));
-  Expect.isFalse(new A().bar(1, 'foo'));
-  Expect.isTrue(new A().bar(1, 1));
-}
diff --git a/tests/language/type_literal_prefix_call_test.dart b/tests/language/type_literal_prefix_call_test.dart
deleted file mode 100644
index b80cb44..0000000
--- a/tests/language/type_literal_prefix_call_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2014, 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";
-import 'dart:core' as core;
-
-// Check that calling a type with a prefix is allowed, but throws at runtime.
-
-main() {
-  Expect.throws(() => core.List(), (e) => e is core.NoSuchMethodError); //# 00: static type warning
-}
diff --git a/tests/language/type_parameter_literal_test.dart b/tests/language/type_parameter_literal_test.dart
deleted file mode 100644
index 452b535..0000000
--- a/tests/language/type_parameter_literal_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Test type parameter literal expressions.
-
-class D<T> {
-  Type getT() {
-    return T;
-  }
-}
-
-main() {
-  Expect.equals(int, new D<int>().getT());
-}
diff --git a/tests/language/type_parameter_test.dart b/tests/language/type_parameter_test.dart
deleted file mode 100644
index dafa629..0000000
--- a/tests/language/type_parameter_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// 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";
-
-class A<T> {
-  Function closure;
-  A._(this.closure);
-
-  factory A() {
-    return new A._(() => new Set<T>());
-  }
-
-  A.bar() {
-    closure = () => new Set<T>();
-  }
-
-  static
-  T //# 01: static type warning, dynamic type error
-      staticMethod(
-  T //# 02: static type warning, dynamic type error
-          a) {
-    final
-    T //# 03: static type warning, dynamic type error
-        a = "not_null";
-    print(a);
-    return a;
-  }
-
-  static final
-  T //# 04: static type warning, dynamic type error
-      staticFinalField = "not_null";
-
-  static const
-  T //# 05: static type warning, checked mode compile-time error
-      staticConstField = "not_null";
-
-  static not_null() => "not_null";
-  static final
-  T //# 06: static type warning, dynamic type error
-      staticFinalField2 = not_null();
-
-  // Assigning null to a malformed type is not a dynamic error.
-  static T staticMethod2(T a) {
-    final T a = null;
-    print(a);
-    return a;
-  }
-
-  static final T staticFinalField3 = null;
-
-  static null_() => null;
-  static final T staticFinalField4 = null_();
-}
-
-main() {
-  var s = ((new A()).closure)();
-  Expect.isTrue(s is Set);
-
-  s = ((new A.bar()).closure)();
-  Expect.isTrue(s is Set);
-
-  s = ((new A<int>()).closure)();
-  Expect.isTrue(s is Set<int>);
-  Expect.isFalse(s is Set<double>);
-
-  s = ((new A<int>.bar()).closure)();
-  Expect.isTrue(s is Set<int>);
-  Expect.isFalse(s is Set<double>);
-
-  A.staticMethod("not_null");
-  print(A.staticFinalField);
-  print(A.staticConstField);
-  print(A.staticFinalField2);
-
-  A.staticMethod2(null);
-  print(A.staticFinalField3);
-  print(A.staticFinalField4);
-}
diff --git a/tests/language/type_promotion_assign_test.dart b/tests/language/type_promotion_assign_test.dart
deleted file mode 100644
index f749d16..0000000
--- a/tests/language/type_promotion_assign_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test type promotion of assigned locals.
-
-class A {
-  var a = "a";
-}
-
-class B extends A {
-  var b = "b";
-}
-
-class C extends B {
-  var c = "c";
-}
-
-class D extends A {
-  var d = "d";
-}
-
-class E implements C, D {
-  var a = "";
-  var b = "";
-  var c = "";
-  var d = "";
-}
-
-void main() {
-  A a = new E();
-  if (a is B) {
-    print(a.a);
-    print(a.b); //# 01: static type warning
-    a = null;
-  }
-  if (a is B) {
-    a = null;
-    print(a.a);
-    print(a.b); //# 02: static type warning
-  }
-  if (a is B) {
-    print(a.a);
-    print(a.b); //# 03: static type warning
-    {
-      a = null;
-    }
-    print(a.a);
-    print(a.b); //# 04: static type warning
-  }
-}
diff --git a/tests/language/type_promotion_closure_test.dart b/tests/language/type_promotion_closure_test.dart
deleted file mode 100644
index fd0c235..0000000
--- a/tests/language/type_promotion_closure_test.dart
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test type promotion of locals potentially mutated in closures.
-
-class A {
-  var a = "a";
-  A operator +(int i) => this;
-}
-
-class B extends A {
-  var b = "b";
-}
-
-class C extends B {
-  var c = "c";
-}
-
-class D extends A {
-  var d = "d";
-}
-
-class E extends D implements C {
-  var a = "";
-  var b = "";
-  var c = "";
-  var d = "";
-}
-
-func(x) => true;
-
-void main() {
-  test1();
-  test2();
-  test3();
-  test3a();
-  test4();
-  test5();
-  test6();
-  test6a();
-  test7();
-  test8();
-  test9();
-  test10();
-  test11();
-  test12();
-}
-
-void test1() {
-  A a = new E();
-  if (a is B) {
-    print(a.a);
-    print(a.b); //# 01: static type warning
-  }
-  void foo() {
-    a = new D();
-  }
-}
-
-void test2() {
-  A a = new E();
-  void foo() {
-    a = new D();
-  }
-
-  if (a is B) {
-    print(a.a);
-    print(a.b); //# 02: static type warning
-  }
-}
-
-void test3() {
-  A a = new E();
-  void foo() {
-    a = new D();
-  }
-
-  if (a is B) {
-    print(a.a);
-    print(a.b); //# 03: static type warning
-    void foo() {
-      a = new D();
-    }
-
-    print(a.a);
-    print(a.b); //# 04: static type warning
-  }
-}
-
-void test3a() {
-  A a = new E();
-  void foo() {
-    a = new D();
-  }
-
-  if ((((a)) is B)) {
-    print(a.a);
-    print(a.b); //# 15: static type warning
-    void foo() {
-      a = new D();
-    }
-
-    print(a.a);
-    print(a.b); //# 16: static type warning
-  }
-}
-
-void test4() {
-  A a = new E();
-  if (a is B) {
-    func(() => a.b); //# 05: ok
-    print(a.a);
-    print(a.b);
-  }
-}
-
-void test5() {
-  A a = new E();
-  if (a is B) {
-    func(() => a.b); //# 06: static type warning
-    print(a.a);
-  }
-  a = null;
-}
-
-void test6() {
-  A a = new E();
-  if (a is B) {
-    func(() => a);
-    print(a.a);
-    print(a.b); //# 07: static type warning
-  }
-  a = null;
-}
-
-void test6a() {
-  A a = new E();
-  if (((a) is B)) {
-    func(() => a);
-    print(a.a);
-    print(a.b); //# 14: static type warning
-  }
-  a = null;
-}
-
-void test7() {
-  A a = new E();
-  if (a is B && func(() => a)) {
-    print(a.a);
-    print(a.b); //# 08: ok
-  }
-  a = null;
-}
-
-void test8() {
-  A a = new E();
-  if (a is B
-      && func(() => a.b) //# 09: static type warning
-      ) {
-    print(a.a);
-  }
-  a = null;
-}
-
-void test9() {
-  A a = new E();
-  var b = a is B ? func(() => a.b) : false; //# 10: static type warning
-  a = null;
-}
-
-void test10() {
-  List<A> a = <E>[new E()];
-  if (a is List<B>) {
-    func(() => a[0]);
-    print(a[0].b); //# 11: static type warning
-  }
-  a = null;
-}
-
-void test11() {
-  List<A> a = <E>[new E()];
-  if (a is List<B>) {
-    func(() => a[0] = null);
-    print(a[0].b); //# 12: static type warning
-  }
-  a = null;
-}
-
-void test12() {
-  A a = new E();
-  if (a is B) {
-    func(() => a++);
-    print(a.a);
-    print(a.b); //# 13: static type warning
-  }
-  a = null;
-}
diff --git a/tests/language/type_promotion_functions_test.dart b/tests/language/type_promotion_functions_test.dart
deleted file mode 100644
index 4a0c6ae..0000000
--- a/tests/language/type_promotion_functions_test.dart
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test type promotion of functions.
-
-class A {}
-
-class B extends A {}
-
-class C {}
-
-// We have the following more specific (<<) relations between these typedefs:
-//
-//  FuncDynToDyn << FuncAtoDyn
-//  FuncDynToDyn << FuncDynToA << FuncDynToVoid
-
-typedef FuncAtoDyn(A a);
-typedef FuncDynToDyn(x);
-typedef void FuncDynToVoid(x);
-typedef A FuncDynToA(x);
-
-func(x) => x;
-
-A a;
-B b;
-C c;
-
-main() {
-  testFuncAtoDyn();
-  testFuncDynToDyn();
-  testFuncDynToVoid();
-  testFuncDynToA();
-}
-
-testFuncAtoDyn() {
-  FuncAtoDyn funcAtoDyn = func;
-  a = funcAtoDyn(new A());
-  b = funcAtoDyn(new B());
-  c = funcAtoDyn(new C()); //# 01: static type warning
-
-  if (funcAtoDyn is FuncDynToDyn) {
-    // No promotion: FuncDynToDyn !<< FuncAtoDyn.
-    a = funcAtoDyn(new A());
-    b = funcAtoDyn(new B());
-    c = funcAtoDyn(new C()); //# 11: static type warning
-  }
-}
-
-testFuncDynToDyn() {
-  FuncDynToDyn funcDynToDyn = func;
-  a = funcDynToDyn(new A());
-  b = funcDynToDyn(new B());
-  c = funcDynToDyn(new C());
-
-  if (funcDynToDyn is FuncAtoDyn) {
-    // Promotion: FuncAtoDyn << FuncDynToDyn.
-    a = funcDynToDyn(new A());
-    b = funcDynToDyn(new B());
-    c = funcDynToDyn(new C()); //# 09: static type warning
-  }
-
-  if (funcDynToDyn is FuncDynToVoid) {
-    // Promotion: FuncDynToVoid << FuncDynToDyn.
-    a = funcDynToDyn(new A()); //# 12: static type warning
-    b = funcDynToDyn(new B()); //# 13: static type warning
-    c = funcDynToDyn(new C()); //# 14: static type warning
-  }
-
-  if (funcDynToDyn is FuncDynToA) {
-    // Promotion: FuncDynToA << FuncDynToDyn.
-    a = funcDynToDyn(new A());
-    b = funcDynToDyn(new B());
-    c = funcDynToDyn(new C()); //# 10: static type warning
-  }
-}
-
-testFuncDynToVoid() {
-  FuncDynToVoid funcDynToVoid = func;
-  a = funcDynToVoid(new A()); //# 02: static type warning
-  b = funcDynToVoid(new B()); //# 03: static type warning
-  c = funcDynToVoid(new C()); //# 04: static type warning
-
-  if (funcDynToVoid is FuncDynToDyn) {
-    // Promotion: FuncDynToDyn << FuncDynToVoid.
-    a = funcDynToVoid(new A());
-    b = funcDynToVoid(new B());
-    c = funcDynToVoid(new C());
-  }
-
-  if (funcDynToVoid is FuncDynToA) {
-    // Promotion: FuncDynToA << FuncDynToVoid.
-    a = funcDynToVoid(new A());
-    b = funcDynToVoid(new B());
-    c = funcDynToVoid(new C()); //# 05: static type warning
-  }
-}
-
-testFuncDynToA() {
-  FuncDynToA funcDynToA = func;
-  a = funcDynToA(new A());
-  b = funcDynToA(new B());
-  c = funcDynToA(new C()); //# 06: static type warning
-
-  if (funcDynToA is FuncDynToDyn) {
-    // No promotion: FuncDynToDyn !<< FuncDynToA.
-    a = funcDynToA(new A());
-    b = funcDynToA(new B());
-    c = funcDynToA(new C()); //# 08: static type warning
-  }
-
-  if (funcDynToA is FuncDynToVoid) {
-    // No promotion: FuncDynToVoid !<< FuncDynToA.
-    a = funcDynToA(new A());
-    b = funcDynToA(new B());
-    c = funcDynToA(new C()); //# 07: static type warning
-  }
-}
diff --git a/tests/language/type_promotion_local_test.dart b/tests/language/type_promotion_local_test.dart
deleted file mode 100644
index 03b7239..0000000
--- a/tests/language/type_promotion_local_test.dart
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test type promotion of locals.
-
-class A {
-  var a = "a";
-}
-
-class B extends A {
-  var b = "b";
-}
-
-class C extends B {
-  var c = "c";
-}
-
-class D extends A {
-  var d = "d";
-}
-
-class E implements C, D {
-  var a = "";
-  var b = "";
-  var c = "";
-  var d = "";
-}
-
-void main() {
-  A a = new E();
-  print(a.a);
-  print(a.b); //# 01: static type warning
-  print(a.c); //# 02: static type warning
-  print(a.d); //# 03: static type warning
-
-  if (a is B) {
-    print(a.a);
-    print(a.b);
-    print(a.c); //# 04: static type warning
-    print(a.d); //# 05: static type warning
-
-    if (a is C) {
-      print(a.a);
-      print(a.b);
-      print(a.c);
-      print(a.d); //# 06: static type warning
-    }
-
-    print(a.a);
-    print(a.b);
-    print(a.c); //# 07: static type warning
-    print(a.d); //# 08: static type warning
-  }
-  if (a is C) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 09: static type warning
-
-    if (a is B) {
-      print(a.a);
-      print(a.b);
-      print(a.c);
-      print(a.d); //# 10: static type warning
-    }
-    if (a is D) {
-      print(a.a);
-      print(a.b);
-      print(a.c);
-      print(a.d); //# 11: static type warning
-    }
-
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 12: static type warning
-  }
-
-  print(a.a);
-  print(a.b); //# 13: static type warning
-  print(a.c); //# 14: static type warning
-  print(a.d); //# 15: static type warning
-
-  if (a is D) {
-    print(a.a);
-    print(a.b); //# 16: static type warning
-    print(a.c); //# 17: static type warning
-    print(a.d);
-  }
-
-  print(a.a);
-  print(a.b); //# 18: static type warning
-  print(a.c); //# 19: static type warning
-  print(a.d); //# 20: static type warning
-
-  var o1 = a is B
-          ? '${a.a}'
-              '${a.b}'
-      '${a.c}' //# 21: static type warning
-      '${a.d}' //# 22: static type warning
-          : '${a.a}'
-      '${a.b}' //# 23: static type warning
-      '${a.c}' //# 24: static type warning
-      '${a.d}' //# 25: static type warning
-      ;
-
-  var o2 = a is C
-          ? '${a.a}'
-              '${a.b}'
-              '${a.c}'
-      '${a.d}' //# 26: static type warning
-          : '${a.a}'
-      '${a.b}' //# 27: static type warning
-      '${a.c}' //# 28: static type warning
-      '${a.d}' //# 29: static type warning
-      ;
-
-  var o3 = a is D
-          ? '${a.a}'
-      '${a.b}' //# 30: static type warning
-      '${a.c}' //# 31: static type warning
-              '${a.d}'
-          : '${a.a}'
-      '${a.b}' //# 32: static type warning
-      '${a.c}' //# 33: static type warning
-      '${a.d}' //# 34: static type warning
-      ;
-
-  if (a is B && a is B) {
-    print(a.a);
-    print(a.b);
-    print(a.c); //# 35: static type warning
-    print(a.d); //# 36: static type warning
-  }
-  if (a is B && a is C) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 37: static type warning
-  }
-  if (a is C && a is B) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 38: static type warning
-  }
-  if (a is C && a is D) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 39: static type warning
-  }
-  if (a is D && a is C) {
-    print(a.a);
-    print(a.b); //# 40: static type warning
-    print(a.c); //# 41: static type warning
-    print(a.d);
-  }
-}
diff --git a/tests/language/type_promotion_logical_and_test.dart b/tests/language/type_promotion_logical_and_test.dart
deleted file mode 100644
index 155af28..0000000
--- a/tests/language/type_promotion_logical_and_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test type promotion of locals potentially mutated.
-
-class A {
-  var a = true;
-}
-
-class B extends A {
-  var b = true;
-}
-
-class C extends B {
-  var c = true;
-}
-
-class D extends A {
-  var d = true;
-}
-
-class E implements C, D {
-  var a = true;
-  var b = true;
-  var c = true;
-  var d = true;
-}
-
-void main() {
-  A a = new E();
-  var b;
-  if (a is D && ((a = new D()) != null)) {
-    b = a.d; //# 01: static type warning
-  }
-  if (a is D && (b = a.d)) {
-    b = a.d; //# 02: static type warning
-    a = null;
-  }
-  if ((((a) is D) && (b = (a).d))) {
-    b = a.d; //# 03: static type warning
-    a = null;
-  }
-  if (f(a = null) && a is D) {
-    b = a.d;
-  }
-}
-
-bool f(x) => true;
diff --git a/tests/language/type_promotion_more_specific_test.dart b/tests/language/type_promotion_more_specific_test.dart
deleted file mode 100644
index d85f0e1..0000000
--- a/tests/language/type_promotion_more_specific_test.dart
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test use of more specific in type promotion of interface types.
-
-class A {
-  var a;
-}
-
-class B extends A {
-  var b;
-}
-
-class C {
-  var c;
-}
-
-class D<T> {
-  T d;
-
-  D(this.d);
-}
-
-class E<T> extends D<T> {
-  T e;
-
-  E(e)
-      : this.e = e,
-        super(e);
-}
-
-void main() {
-  testInterface();
-  testGeneric();
-}
-
-void testInterface() {
-  var x;
-  var y;
-
-  A a = new B();
-  if (a is B) {
-    // Promotion B << A.
-    x = a.b; //# 01: ok
-  }
-  if (a is C) {
-    // No promotion C !<< A.
-    x = a.c; //# 02: static type warning
-  }
-  B b = new B();
-  if (b is A) {
-    // No promotion B !<< A.
-    x = b.b; //# 03: ok
-  }
-  if (x is A) {
-    // No promotion A !<< dynamic.
-    y = x.b; //# 04: ok
-  }
-}
-
-testGeneric() {
-  var x;
-  var y;
-
-  D d1 = new E<B>(null);
-  if (d1 is E) {
-    // Promotion: E << D.
-    x = d1.e; //# 05: ok
-  }
-  if (d1 is E<A>) {
-    // Promotion: E<A> << D.
-    int a = d1.d; //# 06: static type warning
-    String b = d1.d; //# 07: static type warning
-    x = d1.e; //# 08: ok
-  }
-
-  D<A> d2 = new E<B>(null);
-  if (d2 is E) {
-    // No promotion: E !<< D<A>
-    x = d2.e; //# 09: static type warning
-    int a = d2.e; //# 10: static type warning
-    String b = d2.e; //# 11: static type warning
-  }
-
-  D<A> d3 = new E<B>(new B());
-  if (d3 is E<B>) {
-    // Promotion: E<B> << D<A>
-    x = d3.d.b; //# 12: ok
-    x = d3.e.b; //# 13: ok
-  }
-}
diff --git a/tests/language/type_promotion_multiple_test.dart b/tests/language/type_promotion_multiple_test.dart
deleted file mode 100644
index 7e289be..0000000
--- a/tests/language/type_promotion_multiple_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test type promotion of locals.
-
-class A {
-  var a = "a";
-}
-
-class B extends A {
-  var b = "b";
-}
-
-class C extends B {
-  var c = "c";
-}
-
-class D extends A {
-  var d = "d";
-}
-
-class E implements C, D {
-  var a = "";
-  var b = "";
-  var c = "";
-  var d = "";
-}
-
-void main() {
-  test(new E());
-}
-
-void test(A a1) {
-  A a2 = new E();
-  print(a1.a);
-  print(a1.b); //# 01: static type warning
-  print(a1.c); //# 02: static type warning
-  print(a1.d); //# 03: static type warning
-
-  print(a2.a);
-  print(a2.b); //# 04: static type warning
-  print(a2.c); //# 05: static type warning
-  print(a2.d); //# 06: static type warning
-
-  if (a1 is B && a2 is C) {
-    print(a1.a);
-    print(a1.b);
-    print(a1.c); //# 07: static type warning
-    print(a1.d); //# 08: static type warning
-
-    print(a2.a);
-    print(a2.b);
-    print(a2.c);
-    print(a2.d); //# 09: static type warning
-
-    if (a1 is C && a2 is D) {
-      print(a1.a);
-      print(a1.b);
-      print(a1.c);
-      print(a1.d); //# 10: static type warning
-
-      print(a2.a);
-      print(a2.b);
-      print(a2.c);
-      print(a2.d); //# 11: static type warning
-    }
-  }
-
-  var o1 = a1 is B && a2 is C
-          ? '${a1.a}'
-              '${a1.b}'
-      '${a1.c}' //# 12: static type warning
-      '${a1.d}' //# 13: static type warning
-              '${a2.a}'
-              '${a2.b}'
-              '${a2.c}'
-      '${a2.d}' //# 14: static type warning
-          : '${a1.a}'
-      '${a1.b}' //# 15: static type warning
-      '${a1.c}' //# 16: static type warning
-      '${a1.d}' //# 17: static type warning
-          '${a2.a}'
-      '${a2.b}' //# 18: static type warning
-      '${a2.c}' //# 19: static type warning
-      '${a2.d}' //# 20: static type warning
-      ;
-
-  if (a2 is C && a1 is B && a1 is C && a2 is B && a2 is D) {
-    print(a1.a);
-    print(a1.b);
-    print(a1.c);
-    print(a1.d); //# 21: static type warning
-
-    print(a2.a);
-    print(a2.b);
-    print(a2.c);
-    print(a2.d); //# 22: static type warning
-  }
-}
diff --git a/tests/language/type_promotion_parameter_test.dart b/tests/language/type_promotion_parameter_test.dart
deleted file mode 100644
index d8e0499..0000000
--- a/tests/language/type_promotion_parameter_test.dart
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test type promotion of parameters.
-
-class A {
-  var a = "a";
-}
-
-class B extends A {
-  var b = "b";
-}
-
-class C extends B {
-  var c = "c";
-}
-
-class D extends A {
-  var d = "d";
-}
-
-class E implements C, D {
-  var a = "";
-  var b = "";
-  var c = "";
-  var d = "";
-}
-
-void main() {
-  test(new E());
-}
-
-void test(A a) {
-  print(a.a);
-  print(a.b); //# 01: static type warning
-  print(a.c); //# 02: static type warning
-  print(a.d); //# 03: static type warning
-
-  if (a is B) {
-    print(a.a);
-    print(a.b);
-    print(a.c); //# 04: static type warning
-    print(a.d); //# 05: static type warning
-
-    if (a is C) {
-      print(a.a);
-      print(a.b);
-      print(a.c);
-      print(a.d); //# 06: static type warning
-    }
-
-    print(a.a);
-    print(a.b);
-    print(a.c); //# 07: static type warning
-    print(a.d); //# 08: static type warning
-  }
-  if (a is C) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 09: static type warning
-
-    if (a is B) {
-      print(a.a);
-      print(a.b);
-      print(a.c);
-      print(a.d); //# 10: static type warning
-    }
-    if (a is D) {
-      print(a.a);
-      print(a.b);
-      print(a.c);
-      print(a.d); //# 11: static type warning
-    }
-
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 12: static type warning
-  }
-
-  print(a.a);
-  print(a.b); //# 13: static type warning
-  print(a.c); //# 14: static type warning
-  print(a.d); //# 15: static type warning
-
-  if (a is D) {
-    print(a.a);
-    print(a.b); //# 16: static type warning
-    print(a.c); //# 17: static type warning
-    print(a.d);
-  }
-
-  print(a.a);
-  print(a.b); //# 18: static type warning
-  print(a.c); //# 19: static type warning
-  print(a.d); //# 20: static type warning
-
-  var o1 = a is B
-          ? '${a.a}'
-              '${a.b}'
-      '${a.c}' //# 21: static type warning
-      '${a.d}' //# 22: static type warning
-          : '${a.a}'
-      '${a.b}' //# 23: static type warning
-      '${a.c}' //# 24: static type warning
-      '${a.d}' //# 25: static type warning
-      ;
-
-  var o2 = a is C
-          ? '${a.a}'
-              '${a.b}'
-              '${a.c}'
-      '${a.d}' //# 26: static type warning
-          : '${a.a}'
-      '${a.b}' //# 27: static type warning
-      '${a.c}' //# 28: static type warning
-      '${a.d}' //# 29: static type warning
-      ;
-
-  var o3 = a is D
-          ? '${a.a}'
-      '${a.b}' //# 30: static type warning
-      '${a.c}' //# 31: static type warning
-              '${a.d}'
-          : '${a.a}'
-      '${a.b}' //# 32: static type warning
-      '${a.c}' //# 33: static type warning
-      '${a.d}' //# 34: static type warning
-      ;
-
-  if (a is B && a is B) {
-    print(a.a);
-    print(a.b);
-    print(a.c); //# 35: static type warning
-    print(a.d); //# 36: static type warning
-  }
-  if (a is B && a is C) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 37: static type warning
-  }
-  if (a is C && a is B) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 38: static type warning
-  }
-  if (a is C && a is D) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 39: static type warning
-  }
-  if (a is D && a is C) {
-    print(a.a);
-    print(a.b); //# 40: static type warning
-    print(a.c); //# 41: static type warning
-    print(a.d);
-  }
-  if (a is D &&
-      a.a == ""
-      && a.b == "" // //# 42: static type warning
-      && a.c == "" // //# 43: static type warning
-      &&
-      a.d == "") {
-    print(a.a);
-    print(a.b); //# 44: static type warning
-    print(a.c); //# 45: static type warning
-    print(a.d);
-  }
-  if (a.a == ""
-      && a.b == "" //# 46: static type warning
-      && a.c == "" //# 47: static type warning
-      && a.d == "" //# 48: static type warning
-          &&
-          a is B &&
-          a.a == "" &&
-          a.b == ""
-      && a.c == "" //# 49: static type warning
-      && a.d == "" //# 50: static type warning
-          &&
-          a is C &&
-          a.a == "" &&
-          a.b == "" &&
-          a.c == ""
-      && a.d == "" //# 51: static type warning
-      ) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 52: static type warning
-  }
-  if ((a is B)) {
-    print(a.a);
-    print(a.b);
-    print(a.c); //# 54: static type warning
-    print(a.d); //# 55: static type warning
-  }
-  if ((a is B && (a) is C) && a is B) {
-    print(a.a);
-    print(a.b);
-    print(a.c);
-    print(a.d); //# 56: static type warning
-  }
-}
diff --git a/tests/language/type_propagation2_test.dart b/tests/language/type_propagation2_test.dart
deleted file mode 100644
index a09041b9..0000000
--- a/tests/language/type_propagation2_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to infinite loop on
-// speculatively propagating types.
-
-class Bar {
-  noSuchMethod(e) => null;
-}
-
-main() {
-  var d = new Bar();
-
-  while (false) {
-    // [input] will change from indexable to unknown: the use line 20
-    // changes its decision because [a2] changes its type from unknown to
-    // null.
-    var input = ((x) {})(null);
-    var p2 = input.keys.firstWhere(null);
-    var a2 = input.keys.firstWhere(null);
-    print(input[a2] == p2);
-  }
-}
diff --git a/tests/language/type_propagation3_test.dart b/tests/language/type_propagation3_test.dart
deleted file mode 100644
index 2848f9b..0000000
--- a/tests/language/type_propagation3_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to generate wrong code for
-// it. The bug happened in the SSA type propagation.
-
-class A {
-  next() => new B();
-  doIt() => null;
-  bool get isEmpty => false;
-  foo() => 42;
-  bar() => 54;
-}
-
-bool entered = false;
-
-class B extends A {
-  foo() => 54;
-  doIt() => new A();
-  bool get isEmpty => true;
-  bar() => entered = true;
-}
-
-// (1) At initialization phase of the type propagation, [a] would be
-//     marked as [exact A].
-// (2) Will make the loop phi [b] typed [null, exact A].
-// (3) Will create a [HTypeKnown] [exact A] for [b].
-// (4) Will create a [HTypeKnown] [exact A] for [b] and update users
-//     of [b] to use this [HTypeKnown] instead.
-// (5) [a] will be updated to [subclass A].
-// (6) Will change the [HTypeKnown] of [b] from [exact A] to [subclass A].
-// (7) Receiver is [subclass A] and it will refine it to
-//     [subclass A]. We used to wrongly assume there was
-//     no need to update the [HTypeKnown] created in (3).
-// (8) Consider that bar is called on an [exact A] (the [HTypeKnown]
-//     created in (3)) and remove the call because it does not have
-//     any side effects.
-
-main() {
-  var a = new A();
-  for (var i in [42]) {
-    a = a.next();
-  }
-
-  // (1, 5)
-
-  var b = a;
-  while (b.isEmpty) {
-    // (4, 6)
-    b.foo(); // (3, 7)
-    b.bar(); // (8)
-    b = b.doIt(); // (2)
-  }
-
-  if (!entered) throw 'Test failed';
-}
diff --git a/tests/language/type_propagation_assert_assignable_test.dart b/tests/language/type_propagation_assert_assignable_test.dart
deleted file mode 100644
index c21a71c..0000000
--- a/tests/language/type_propagation_assert_assignable_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2013, 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.
-// Check that type of the AssertAssignable is recomputed correctly.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class A {
-  final p;
-  final _b;
-
-  b() {
-    try {
-      return _b;
-    } catch (e) {}
-  }
-
-  A(this.p, this._b);
-}
-
-class B extends A {
-  B(p, b) : super(p, b);
-}
-
-bar(v) {
-  for (var x = v; x != null; x = x.p) {
-    if (x.b()) {
-      return x;
-    }
-  }
-  return null;
-}
-
-foo(v) {
-  A x = bar(v);
-  return x != null;
-}
-
-main() {
-  final a = new A(new B(new A("haha", true), false), false);
-
-  for (var i = 0; i < 20; i++) {
-    Expect.isTrue(foo(a));
-  }
-  Expect.isTrue(foo(a));
-}
diff --git a/tests/language/type_propagation_in_for_update_test.dart b/tests/language/type_propagation_in_for_update_test.dart
deleted file mode 100644
index 058518e..0000000
--- a/tests/language/type_propagation_in_for_update_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-// Check that phi type computation in the Dart2Js compiler does the
-// correct thing.
-
-import "package:expect/expect.dart";
-
-bar() => 'foo';
-
-main() {
-  Expect.throws(foo1);
-  Expect.throws(foo2);
-}
-
-foo1() {
-  var a = bar();
-  for (;; a = 1 + a) {
-    if (a != 'foo') return;
-  }
-}
-
-foo2() {
-  var a = bar();
-  for (;; a = 1 + a) {
-    if (a != 'foo') break;
-  }
-}
diff --git a/tests/language/type_propagation_phi_test.dart b/tests/language/type_propagation_phi_test.dart
deleted file mode 100644
index 4c8e3e2..0000000
--- a/tests/language/type_propagation_phi_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-// Check that phi type computation in the Dart2Js compiler does the
-// correct thing.
-
-import "package:expect/expect.dart";
-
-bar() => 490;
-bar2() => 0;
-
-foo(b) {
-  var x = bar();
-  var x2 = x;
-  if (b) x2 = bar2();
-  var x3 = 9 + x; // Guarantees that x is a number. Dart2js propagated the
-  // type information back to the phi (for x2).
-  return x2 + x3;
-}
-
-main() {
-  Expect.equals(499, foo(true));
-}
diff --git a/tests/language/type_propagation_test.dart b/tests/language/type_propagation_test.dart
deleted file mode 100644
index 53501f1..0000000
--- a/tests/language/type_propagation_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// dart2js used to have an infinite loop in its type propagation
-// algorithm due to types becoming broader instead of narrower.
-
-import "package:expect/expect.dart";
-
-class A {
-  resolveSend(node) {
-    if (node == null) {
-      return [new B()][0];
-    } else {
-      return [new B(), new A()][1];
-    }
-  }
-
-  visitSend(node) {
-    var target = resolveSend(node);
-
-    if (false) {
-      if (false) {
-        target = target.getter;
-        if (false) {
-          target = new Object();
-        }
-      }
-    }
-    return true ? target : null;
-  }
-}
-
-var a = 43;
-
-class B {
-  var getter = a == 42 ? new A() : null;
-}
-
-main() {
-  Expect.isTrue(new A().visitSend(new A()) is A);
-  Expect.isTrue(new A().visitSend(null) is B);
-}
diff --git a/tests/language/type_variable_bounds2_test.dart b/tests/language/type_variable_bounds2_test.dart
deleted file mode 100644
index c3375d26..0000000
--- a/tests/language/type_variable_bounds2_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// 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";
-
-// Test of parameterized types with invalid bounds.
-
-abstract class J<T> {}
-
-abstract class K<T> {}
-
-abstract class I<
-    T
-  extends num //# 00: continued
-  extends num //# 01: continued
-  extends num //# 02: continued
-  extends num //# 03: continued
-  extends num //# 04: continued
-  extends num //# 05: continued
-  extends num //# 06: continued
-    > {}
-
-class A<T> implements I<T>, J<T> {}
-
-main() {
-  var a = new A<String>();
-
-  {
-    I i = a; // //# 00: dynamic type error, static type warning
-    J j = a; // //# 01: static type warning
-    K k = a; // //# 02: dynamic type error, static type warning
-
-    // In production mode, A<String> is subtype of I, error in checked mode.
-    var x = a is I; // //# 03: dynamic type error, static type warning
-
-    // In both production and checked modes, A<String> is a subtype of J.
-    Expect.isTrue(a is J); // //# 04: static type warning
-
-    // In both production and checked modes, A<String> is not a subtype of K.
-    // However, while unsuccessfully trying to prove that A<String> is a K,
-    // a malformed type is encountered in checked mode, resulting in a dynamic
-    // type error.
-    Expect.isTrue(a is !K); // //# 05: dynamic type error, static type warning
-  }
-
-  a = new A<int>();
-
-  {
-    I i = a;
-    J j = a;
-    K k = a; // //# 06: dynamic type error, static type warning
-
-    // In both production and checked modes, A<int> is a subtype of I.
-    Expect.isTrue(a is I);
-
-    // In both production and checked modes, A<int> is a subtype of J.
-    Expect.isTrue(a is J);
-
-    // In both production and checked modes, A<int> is not a subtype of K.
-    Expect.isTrue(a is! K);
-  }
-}
diff --git a/tests/language/type_variable_bounds3_test.dart b/tests/language/type_variable_bounds3_test.dart
deleted file mode 100644
index 462999b..0000000
--- a/tests/language/type_variable_bounds3_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test of parameterized types with invalid bounds.
-
-class A<K extends int> {}
-
-class B<X, Y> {
-  foo(x) {
-    return x is A<X>; // //# 00: dynamic type error, static type warning
-  }
-}
-
-main() {
-  var b = new B<double, double>();
-  b.foo(new A());
-}
diff --git a/tests/language/type_variable_bounds4_test.dart b/tests/language/type_variable_bounds4_test.dart
deleted file mode 100644
index 46a154c..0000000
--- a/tests/language/type_variable_bounds4_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test instantiation of object with malbounded types.
-
-class A<
-    T
-          extends num //# 01: static type warning
-    > {}
-
-class B<T> implements A<T> {}
-
-class C<
-    T
-          extends num //# 01: continued
-    > implements B<T> {}
-
-class Class<T> {
-  newA() {
-    new A<T>(); //# 01: continued
-  }
-  newB() {
-    new B<T>(); //# 01: continued
-  }
-  newC() {
-    new C<T>(); //# 01: continued
-  }
-}
-
-bool inCheckedMode() {
-  try {
-    var i = 42;
-    String s = i;
-  } on TypeError catch (e) {
-    return true;
-  }
-  return false;
-}
-
-void test(bool expectTypeError, f()) {
-  try {
-    var v = f();
-    if (expectTypeError && inCheckedMode()) {
-      throw 'Missing type error instantiating ${v.runtimeType}';
-    }
-  } on TypeError catch (e) {
-    if (!expectTypeError || !inCheckedMode()) {
-      throw 'Unexpected type error: $e';
-    }
-  }
-}
-
-void main() {
-  test(false, () => new A<int>());
-  test(false, () => new B<int>());
-  test(false, () => new C<int>());
-
-  test(true, () => new A<String>()); //# 01: continued
-  test(true, () => new B<String>()); //# 01: continued
-  test(true, () => new C<String>()); //# 01: continued
-
-  var c = new Class<int>();
-  test(false, () => c.newA());
-  test(false, () => c.newB());
-  test(false, () => c.newC());
-
-  c = new Class<String>();
-  test(true, () => c.newA()); //# 01: continued
-  test(true, () => c.newB()); //# 01: continued
-  test(true, () => c.newC()); //# 01: continued
-}
diff --git a/tests/language/type_variable_bounds_test.dart b/tests/language/type_variable_bounds_test.dart
deleted file mode 100644
index 5fe2a3c..0000000
--- a/tests/language/type_variable_bounds_test.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// 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.
-
-// Test of parameterized factory methods.
-
-class Foo<T extends num> {
-  Foo();
-
-  factory Foo.bad() = XFoo; // //# 00: static type warning
-
-  factory Foo.good() = Foo;
-
-  factory Foo.IFoo() {
-    return null;
-  }
-}
-
-abstract class IFoo<T extends num> {
-  factory IFoo() = Foo<T>;
-}
-
-// String is not assignable to num.
-class Baz
-    extends Foo<String> //# 01: static type warning, dynamic type error
-{}
-
-class Biz extends Foo<int> {}
-
-Foo<int> fi;
-
-// String is not assignable to num.
-Foo
-    <String> //# 02: static type warning, dynamic type error
-    fs;
-
-class Box<T> {
-  // Box.T is not assignable to num.
-  Foo<T> t; //# 03: static type warning
-
-  makeFoo() {
-    // Box.T is not assignable to num.
-    return new Foo<T>(); //# 04: static type warning, dynamic type error
-  }
-}
-
-main() {
-  // String is not assignable to num.
-  var v1 = new Foo<String>(); //# 05: static type warning, dynamic type error
-
-  // String is not assignable to num.
-  Foo<String> v2 = null; //# 06: static type warning
-
-  new Baz();
-  new Biz();
-
-  fi = new Foo();
-  fs = new Foo();
-
-  new Box().makeFoo();
-  new Box<int>().makeFoo();
-  new Box<String>().makeFoo();
-
-  // Fisk does not exist.
-  new Box<Fisk>(); //# 07: static type warning
-
-  // Too many type arguments.
-  new Box<Object, Object>(); //# 08: static type warning
-
-  // Fisk does not exist.
-  Box<Fisk> box = null; //# 09: static type warning
-
-  // Too many type arguments.
-  Box<Object, Object> box = null; //# 10: static type warning
-}
diff --git a/tests/language/type_variable_closure2_test.dart b/tests/language/type_variable_closure2_test.dart
deleted file mode 100644
index 83e246b..0000000
--- a/tests/language/type_variable_closure2_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A<T> {}
-
-class C<T> {
-  list() {
-    return () => <T>[];
-  }
-}
-
-main() {
-  Expect.isTrue(new C<int>().list()() is List<int>);
-  Expect.isFalse(new C<int>().list()() is List<String>);
-}
diff --git a/tests/language/type_variable_closure3_test.dart b/tests/language/type_variable_closure3_test.dart
deleted file mode 100644
index ecb1c39..0000000
--- a/tests/language/type_variable_closure3_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class A<T> {}
-
-class C<T> {
-  a() {
-    return () => new A<T>();
-  }
-}
-
-main() {
-  Expect.isTrue(new C<int>().a()() is A<int>);
-  Expect.isFalse(new C<int>().a()() is A<String>);
-}
diff --git a/tests/language/type_variable_closure4_test.dart b/tests/language/type_variable_closure4_test.dart
deleted file mode 100644
index e75bc08..0000000
--- a/tests/language/type_variable_closure4_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class A<T> {}
-
-class C<T> {
-  map() {
-    return () => <T, T>{};
-  }
-}
-
-main() {
-  Expect.isTrue(new C<int>().map()() is Map<int, int>);
-  Expect.isFalse(new C<int>().map()() is Map<String, int>);
-  Expect.isFalse(new C<int>().map()() is Map<int, String>);
-}
diff --git a/tests/language/type_variable_closure_test.dart b/tests/language/type_variable_closure_test.dart
deleted file mode 100644
index 7fd7381..0000000
--- a/tests/language/type_variable_closure_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class C<T> {
-  C.foo() {
-    x = (a) => a is T;
-  }
-  C.bar() {
-    x = (a) => a is! T;
-  }
-  C.baz() {
-    x = (a) => a as T;
-  }
-  var x;
-}
-
-main() {
-  Expect.isTrue(new C<int>.foo().x(1));
-  Expect.isFalse(new C<int>.foo().x('1'));
-  Expect.isFalse(new C<int>.bar().x(1));
-  Expect.isTrue(new C<int>.bar().x('1'));
-  Expect.equals(new C<int>.baz().x(1), 1);
-  Expect.throws(() => new C<int>.baz().x('1'));
-}
diff --git a/tests/language/type_variable_conflict2_test.dart b/tests/language/type_variable_conflict2_test.dart
deleted file mode 100644
index b82accb..0000000
--- a/tests/language/type_variable_conflict2_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 13134. Invocation of a type parameter.
-
-import "package:expect/expect.dart";
-
-class C<T> {
-  noSuchMethod(Invocation im) {
-    throw "noSuchMethod shouldn't be called in this test.";
-  }
-
-  // This is equivalent to (T).call(). See issue 19725
-  foo() => T(); // //# 01: static type warning
-
-  // T is in scope, even in static context. Compile-time error to call this.T().
-  static bar() => T(); // //# 02: compile-time error
-
-  // X is not in scope. NoSuchMethodError.
-  static baz() => X(); // //# 03: static type warning
-
-  // Class 'C' has no static method 'T': NoSuchMethodError.
-  static qux() => C.T(); // //# 04: static type warning
-
-  // Class '_Type' has no instance method 'call': NoSuchMethodError.
-  quux() => (T)(); // //# 05: static type warning
-
-  // Runtime type T not accessible from static context. Compile-time error.
-  static corge() => (T)(); // //# 06: compile-time error
-
-  // Class '_Type' has no [] operator: NoSuchMethodError.
-  grault() => T[0]; // //# 07: static type warning
-
-  // Runtime type T not accessible from static context. Compile-time error.
-  static garply() => T[0]; // //# 08: compile-time error
-
-  // Class '_Type' has no member m: NoSuchMethodError.
-  waldo() => T.m; // //# 09: static type warning
-
-  // Runtime type T not accessible from static context. Compile-time error.
-  static fred() => T.m; // //# 10: compile-time error
-}
-
-main() {
-  Expect.throws(() => new C().foo(), (e) => e is NoSuchMethodError); //# 01: continued
-  C.bar(); // //# 02: continued
-  Expect.throws(() => C.baz(), (e) => e is NoSuchMethodError); // //# 03: continued
-  Expect.throws(() => C.qux(), (e) => e is NoSuchMethodError); // //# 04: continued
-  Expect.throws(() => new C().quux(), (e) => e is NoSuchMethodError); // //# 05: continued
-  C.corge(); // //# 06: continued
-  Expect.throws(() => new C().grault(), (e) => e is NoSuchMethodError); // //# 07: continued
-  C.garply(); // //# 08: continued
-  Expect.throws(() => new C().waldo(), (e) => e is NoSuchMethodError); // //# 09: continued
-  C.fred(); // //# 10: continued
-}
diff --git a/tests/language/type_variable_conflict_test.dart b/tests/language/type_variable_conflict_test.dart
deleted file mode 100644
index 06cd2f7..0000000
--- a/tests/language/type_variable_conflict_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that we report a compile-time error when a type parameter conflicts
-// with an instance or static member with the same name.
-
-import "package:expect/expect.dart";
-
-class G1<T> {
-  var T; // //# 01: compile-time error
-}
-
-class G2<T> {
-  get T {} // //# 02: compile-time error
-}
-
-class G3<T> {
-  T() {} // //# 03: compile-time error
-}
-
-class G4<T> {
-  static var T; // //# 04: compile-time error
-}
-
-class G5<T> {
-  static get T {} // //# 05: compile-time error
-}
-
-class G6<T> {
-  static T() {} // //# 06: compile-time error
-}
-
-main() {
-  new G1<int>();
-  new G2<int>();
-  new G3<int>();
-  new G4<int>();
-  new G5<int>();
-  new G6<int>();
-}
diff --git a/tests/language/type_variable_field_initializer2_test.dart b/tests/language/type_variable_field_initializer2_test.dart
deleted file mode 100644
index 5249bf2..0000000
--- a/tests/language/type_variable_field_initializer2_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-
-// Check that an inlined field initializer has access to the enclosing
-// type variables.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  var c = new X<T>();
-}
-
-class B<T> extends A<T> {}
-
-class X<T> {}
-
-main() {
-  Expect.isTrue(new B<int>().c is X<int>);
-  Expect.isFalse(new B<String>().c is X<int>);
-}
diff --git a/tests/language/type_variable_field_initializer_closure2_test.dart b/tests/language/type_variable_field_initializer_closure2_test.dart
deleted file mode 100644
index f3536ca..0000000
--- a/tests/language/type_variable_field_initializer_closure2_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-
-// Check that an inlined field closure has access to the enclosing
-// type variables.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  var c = (() => new X<T>())();
-}
-
-class B<T> extends A<T> {}
-
-class X<T> {}
-
-main() {
-  Expect.isTrue(new B<int>().c is X<int>);
-  Expect.isFalse(new B<String>().c is X<int>);
-}
diff --git a/tests/language/type_variable_field_initializer_closure_test.dart b/tests/language/type_variable_field_initializer_closure_test.dart
deleted file mode 100644
index a61215b..0000000
--- a/tests/language/type_variable_field_initializer_closure_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Check that an inlined field closure has access to the enclosing
-// type variables.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  var c = (() => new List<T>())();
-}
-
-class B<T> extends A<T> {}
-
-main() {
-  Expect.isTrue(new B<int>().c is List<int>);
-  Expect.isFalse(new B<String>().c is List<int>);
-}
diff --git a/tests/language/type_variable_field_initializer_test.dart b/tests/language/type_variable_field_initializer_test.dart
deleted file mode 100644
index 6d44cfb..0000000
--- a/tests/language/type_variable_field_initializer_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Check that an inlined field initializer has access to the enclosing
-// type variables.
-
-import "package:expect/expect.dart";
-
-class A<T> {
-  var c = new List<T>();
-}
-
-class B<T> extends A<T> {}
-
-main() {
-  Expect.isTrue(new B<int>().c is List<int>);
-  Expect.isFalse(new B<String>().c is List<int>);
-}
diff --git a/tests/language/type_variable_function_type_test.dart b/tests/language/type_variable_function_type_test.dart
deleted file mode 100644
index 6c2d515..0000000
--- a/tests/language/type_variable_function_type_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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';
-
-typedef T Func<T>();
-
-class Foo<S> {
-  m(x) => x is Func<S>;
-}
-
-class Bar<T> {
-  f() {
-    T local() {}
-    return local;
-  }
-}
-
-void main() {
-  var x = new Foo<List<String>>();
-  if (new DateTime.now().millisecondsSinceEpoch == 42) x = new Foo<int>();
-  Expect.isFalse(x.m(new Bar<String>().f()));
-  Expect.isTrue(x.m(new Bar<List<String>>().f()));
-}
diff --git a/tests/language/type_variable_identifier_expression_test.dart b/tests/language/type_variable_identifier_expression_test.dart
deleted file mode 100644
index 7ddaa4b..0000000
--- a/tests/language/type_variable_identifier_expression_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-// VMOptions=--enable_type_checks
-
-class A {
-  static func() {
-    return "class A";
-  }
-}
-
-class B<T> {
-  doFunc() {
-    T.func();
-  }
-}
-
-main() {
-  try {
-    var buf = new B<A>().doFunc();
-    print(buf);
-  } on NoSuchMethodError catch (e) {}
-}
diff --git a/tests/language/type_variable_initializer_test.dart b/tests/language/type_variable_initializer_test.dart
deleted file mode 100644
index 3d5a85d..0000000
--- a/tests/language/type_variable_initializer_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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";
-
-// Regression test for dart2js where the reference to [:this:] in a
-// constructor was not propagated to the super initializers.
-
-class A<T> {
-  var map;
-  // Usage of type variables in the initializer makes the SSA builder
-  // want to access [:this:]. And because the initializers of A are
-  // inlined in the constructor of B, we have to make sure the
-  // [:this:] in the A constructor has a corresponding
-  // SSA instruction.
-  A() : map = new Map<T, T>();
-}
-
-class B<T> extends A<T> {}
-
-main() {
-  Expect.isTrue(new B<int>().map is Map<int, int>);
-}
diff --git a/tests/language/type_variable_nested_test.dart b/tests/language/type_variable_nested_test.dart
deleted file mode 100644
index 9f6424f..0000000
--- a/tests/language/type_variable_nested_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for
-// http://code.google.com/p/dart/issues/detail?id=9050.
-
-import 'package:expect/expect.dart';
-
-class A<T> {}
-
-class B<T> {
-  var _copy;
-  B() {
-    // We used to not register the dependency between List and B.
-    _copy = new List<A<T>>();
-  }
-}
-
-main() {
-  var a = new B();
-  Expect.isFalse(a._copy is List<int>);
-  Expect.isTrue(a._copy is List<A>);
-  Expect.isTrue(a._copy is List<A<int>>);
-
-  a = new B<String>();
-  Expect.isFalse(a._copy is List<String>);
-  Expect.isTrue(a._copy is List<A>);
-  Expect.isTrue(a._copy is List<A<String>>);
-  Expect.isTrue(a._copy is List<A<Object>>);
-  Expect.isFalse(a._copy is List<A<int>>);
-}
diff --git a/tests/language/type_variable_scope2_test.dart b/tests/language/type_variable_scope2_test.dart
deleted file mode 100644
index 2a008f9..0000000
--- a/tests/language/type_variable_scope2_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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";
-
-// Test that malformed type arguments treated as dynamic in both production and
-// checked mode.
-
-class Foo<T> {
-  // T is not in scope for a static method.
-  static Foo<T> m() {
-    return new Foo();
-  }
-}
-
-main() {
-  try {
-    Expect.isTrue(Foo.m() is Foo);
-  } on TypeError catch (error) {
-    print(error);
-    // No type error in production nor checked mode.
-    Expect.fail();
-  }
-}
diff --git a/tests/language/type_variable_scope3_test.dart b/tests/language/type_variable_scope3_test.dart
deleted file mode 100644
index cea3ee5..0000000
--- a/tests/language/type_variable_scope3_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// 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.
-
-// Test that a type parameter cannot be repeated.
-
-class Foo<
-    T
-    , T // //# 00: compile-time error
-    > {}
-
-main() {
-  new Foo<
-      String
-      , String // //# 00: continued
-      >();
-}
diff --git a/tests/language/type_variable_scope_test.dart b/tests/language/type_variable_scope_test.dart
deleted file mode 100644
index efc55e3..0000000
--- a/tests/language/type_variable_scope_test.dart
+++ /dev/null
@@ -1,48 +0,0 @@
-// 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.
-
-// Test that type variables referenced from within static members are malformed.
-
-class Foo<T> {
-  Foo() {}
-
-  static
-  Foo<T> //# 00: static type warning
-      m(
-    Foo<T> //# 01: static type warning
-          f) {
-    Foo<T> x = new Foo<String>(); //# 02: static type warning
-    return new Foo<String>();
-  }
-
-  // T is in scope for a factory method.
-  factory Foo.I(Foo<T> f) {
-    Foo<T> x = f;
-  }
-
-  // T is not in scope for a static field.
-  static Foo<T> f1; //# 03: static type warning
-
-  static
-  Foo<T> //# 04: static type warning
-      get f {
-    return new Foo<String>();
-  }
-
-  static void set f(
-                    Foo<T> //# 05: static type warning
-      value) {}
-}
-
-abstract class I<T> {
-  factory I(Foo<T> f) = Foo<T>.I;
-}
-
-main() {
-  Foo.m(new Foo<String>());
-  new I(new Foo<String>());
-  Foo.f1 = new Foo<String>(); //# 03: continued
-  var x = Foo.f;
-  Foo.f = x;
-}
diff --git a/tests/language/type_variable_static_context_negative_test.dart b/tests/language/type_variable_static_context_negative_test.dart
deleted file mode 100644
index 6e9688d..0000000
--- a/tests/language/type_variable_static_context_negative_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-// A type variable can't be referenced in a static class
-
-class A<T> {
-  static int method() {
-    var foo =
-        new T(); // error, can't reference a type variable in a static context
-  }
-}
-
-main() {
-  A.method();
-}
diff --git a/tests/language/type_variable_typedef_test.dart b/tests/language/type_variable_typedef_test.dart
deleted file mode 100644
index caa1649..0000000
--- a/tests/language/type_variable_typedef_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that rti dependency registration takes type variables within typedefs
-// into account.
-
-import 'package:expect/expect.dart';
-
-typedef Foo<T>(T t);
-
-class A<T> {
-  m() => new B<Foo<T>>();
-}
-
-class B<T> {
-  m(o) => o is T;
-}
-
-foo(int i) {}
-bar(String s) {}
-
-void main() {
-  Expect.isTrue(new A<int>().m().m(foo));
-  Expect.isFalse(new A<int>().m().m(bar));
-  Expect.isFalse(new A<String>().m().m(foo));
-  Expect.isTrue(new A<String>().m().m(bar));
-  Expect.isFalse(new A<double>().m().m(foo));
-  Expect.isFalse(new A<double>().m().m(bar));
-}
diff --git a/tests/language/typecheck_multifield_declaration_test.dart b/tests/language/typecheck_multifield_declaration_test.dart
deleted file mode 100644
index ccccf6f..0000000
--- a/tests/language/typecheck_multifield_declaration_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-/// Checks that we can correctly typecheck multi-variable declarations on fields
-/// and top-levels. This is also a regression test for Issue 27401.
-
-class A {}
-
-A a = new A(), b = new A();
-
-class B {
-  A a = new A(), b = new A();
-}
-
-main() => [a, b, new B().a, new B().b];
diff --git a/tests/language/typed_equality_test.dart b/tests/language/typed_equality_test.dart
deleted file mode 100644
index 9f48e79..0000000
--- a/tests/language/typed_equality_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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.
-
-// Regression test for http://dartbug.com/6036. dart2js used to fail
-// this method because it was computing that intersecting type D with
-// type C is conflicting.
-
-foo(a, b) {
-  if (identical(a, b)) return;
-  throw 'broken';
-}
-
-class D {}
-
-class C implements D {}
-
-main() {
-  var c = new C();
-  foo(c, c as D);
-}
diff --git a/tests/language/typed_selector2_test.dart b/tests/language/typed_selector2_test.dart
deleted file mode 100644
index 618f13a..0000000
--- a/tests/language/typed_selector2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-// Test for dart2js to handle a typed selector with a typedef as a
-// receiver type.
-
-getComparator() => (a, b) => 42;
-
-class A {
-  foo() => 42;
-}
-
-main() {
-  Comparator a = getComparator();
-  if (a(1, 2) != 42) {
-    // This call used to crash dart2js because 'foo' was a typed
-    // selector with a typedef as a receiver type.
-    a.foo();
-  }
-  var b = new A();
-  b.foo();
-}
diff --git a/tests/language/typed_selector_test.dart b/tests/language/typed_selector_test.dart
deleted file mode 100644
index 98c2d08..0000000
--- a/tests/language/typed_selector_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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";
-
-// Regression test for http://dartbug.com/6259. This test used to fail
-// on dart2js because class A does not know [A.document] is a target for
-// the call [:obj.document:] in the [main] method. Therefore, dart2js
-// would not compile [A.document].
-
-class A {
-  get document => 42;
-}
-
-abstract class B {
-  get document; // Abstract.
-}
-
-class C extends A implements B {}
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-void main() {
-  var tab = [new Object(), new C()];
-  var obj = tab[inscrutable(1)];
-  int res = 0;
-  if (obj is B) res = obj.document;
-  Expect.equals(42, res);
-}
diff --git a/tests/language/typedef_is_test.dart b/tests/language/typedef_is_test.dart
deleted file mode 100644
index b015f46..0000000
--- a/tests/language/typedef_is_test.dart
+++ /dev/null
@@ -1,125 +0,0 @@
-// 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";
-
-// Test is-test of typedefs with optional and named parameters.
-
-typedef int Func1(int a);
-typedef int Func2(int a, [int b]);
-typedef int Func3(int a, [int b, int c]);
-typedef int Func4([int a, int b, int c]);
-typedef int Func5(int a, {int b});
-typedef int Func6(int a, {int b, int c});
-typedef int Func7({int a, int b, int c});
-
-void main() {
-  int func1(int i) {}
-  Expect.isTrue(func1 is Func1);
-  Expect.isFalse(func1 is Func2);
-  Expect.isFalse(func1 is Func3);
-  Expect.isFalse(func1 is Func4);
-  Expect.isFalse(func1 is Func5);
-  Expect.isFalse(func1 is Func6);
-  Expect.isFalse(func1 is Func7);
-
-  int func2(int i, int j) {}
-  Expect.isFalse(func2 is Func1);
-  Expect.isFalse(func2 is Func2);
-  Expect.isFalse(func2 is Func3);
-  Expect.isFalse(func2 is Func4);
-  Expect.isFalse(func2 is Func5);
-  Expect.isFalse(func2 is Func6);
-  Expect.isFalse(func2 is Func7);
-
-  int func3(int i, int j, int k) {}
-  Expect.isFalse(func3 is Func1);
-  Expect.isFalse(func3 is Func2);
-  Expect.isFalse(func3 is Func3);
-  Expect.isFalse(func3 is Func4);
-  Expect.isFalse(func3 is Func5);
-  Expect.isFalse(func3 is Func6);
-  Expect.isFalse(func3 is Func7);
-
-  int func4(int i, [int j]) {}
-  Expect.isTrue(func4 is Func1);
-  Expect.isTrue(func4 is Func2);
-  Expect.isFalse(func4 is Func3);
-  Expect.isFalse(func4 is Func4);
-  Expect.isFalse(func4 is Func5);
-  Expect.isFalse(func4 is Func6);
-  Expect.isFalse(func4 is Func7);
-
-  int func5(int i, [int j, int k]) {}
-  Expect.isTrue(func5 is Func1);
-  Expect.isTrue(func5 is Func2);
-  Expect.isTrue(func5 is Func3);
-  Expect.isFalse(func5 is Func4);
-  Expect.isFalse(func5 is Func5);
-  Expect.isFalse(func5 is Func6);
-  Expect.isFalse(func5 is Func7);
-
-  int func6([int i, int j, int k]) {}
-  Expect.isTrue(func6 is Func1);
-  Expect.isTrue(func6 is Func2);
-  Expect.isTrue(func6 is Func3);
-  Expect.isTrue(func6 is Func4);
-  Expect.isFalse(func6 is Func5);
-  Expect.isFalse(func6 is Func6);
-  Expect.isFalse(func6 is Func7);
-
-  int func7(int i, {int j}) {}
-  Expect.isTrue(func7 is Func1);
-  Expect.isFalse(func7 is Func2);
-  Expect.isFalse(func7 is Func3);
-  Expect.isFalse(func7 is Func4);
-  Expect.isFalse(func7 is Func5);
-  Expect.isFalse(func7 is Func6);
-  Expect.isFalse(func7 is Func7);
-
-  int func8(int i, {int b}) {}
-  Expect.isTrue(func8 is Func1);
-  Expect.isFalse(func8 is Func2);
-  Expect.isFalse(func8 is Func3);
-  Expect.isFalse(func8 is Func4);
-  Expect.isTrue(func8 is Func5);
-  Expect.isFalse(func8 is Func6);
-  Expect.isFalse(func8 is Func7);
-
-  int func9(int i, {int b, int c}) {}
-  Expect.isTrue(func9 is Func1);
-  Expect.isFalse(func9 is Func2);
-  Expect.isFalse(func9 is Func3);
-  Expect.isFalse(func9 is Func4);
-  Expect.isTrue(func9 is Func5);
-  Expect.isTrue(func9 is Func6);
-  Expect.isFalse(func9 is Func7);
-
-  int func10(int i, {int c, int b}) {}
-  Expect.isTrue(func10 is Func1);
-  Expect.isFalse(func10 is Func2);
-  Expect.isFalse(func10 is Func3);
-  Expect.isFalse(func10 is Func4);
-  Expect.isTrue(func10 is Func5);
-  Expect.isTrue(func10 is Func6);
-  Expect.isFalse(func10 is Func7);
-
-  int func11({int a, int b, int c}) {}
-  Expect.isFalse(func11 is Func1);
-  Expect.isFalse(func11 is Func2);
-  Expect.isFalse(func11 is Func3);
-  Expect.isFalse(func11 is Func4);
-  Expect.isFalse(func11 is Func5);
-  Expect.isFalse(func11 is Func6);
-  Expect.isTrue(func11 is Func7);
-
-  int func12({int c, int a, int b}) {}
-  Expect.isFalse(func12 is Func1);
-  Expect.isFalse(func12 is Func2);
-  Expect.isFalse(func12 is Func3);
-  Expect.isFalse(func12 is Func4);
-  Expect.isFalse(func12 is Func5);
-  Expect.isFalse(func12 is Func6);
-  Expect.isTrue(func12 is Func7);
-}
diff --git a/tests/language/typevariable_substitution2_test.dart b/tests/language/typevariable_substitution2_test.dart
deleted file mode 100644
index 4cd858a..0000000
--- a/tests/language/typevariable_substitution2_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that mixins don't interfere with type variable substitution.
-
-import 'checked_mode_helper.dart';
-
-class B<T> {
-  B(T x);
-}
-
-class M {}
-
-class A<T> extends B<T> with M {
-  A(T x) : super(x); // This line must be warning free.
-}
-
-class C<T> = B<T> with M;
-
-main() {
-  new A(null);
-  new C<String>(''); //# 01: ok
-  checkDynamicTypeError(() => new C<String>(0)); //# 02: static type warning
-}
diff --git a/tests/language/unary2_test.dart b/tests/language/unary2_test.dart
deleted file mode 100644
index a799339..0000000
--- a/tests/language/unary2_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-// Dart test for testing binary operations.
-
-import "package:expect/expect.dart";
-
-class UnaryTest {
-  static foo() {
-    return -4;
-  }
-
-  static moo() {
-    return 5;
-  }
-
-  static testMain() {
-    Expect.equals(1, (UnaryTest.foo() + UnaryTest.moo()));
-  }
-}
-
-main() {
-  UnaryTest.testMain();
-}
diff --git a/tests/language/unary_plus_negative_test.dart b/tests/language/unary_plus_negative_test.dart
deleted file mode 100644
index 9f68d8a..0000000
--- a/tests/language/unary_plus_negative_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-// There is no unary plus operator in Dart.
-
-main() {
-  var a = 1;
-  var b = +a;
-}
diff --git a/tests/language/unary_test.dart b/tests/language/unary_test.dart
deleted file mode 100644
index d2421c0..0000000
--- a/tests/language/unary_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2011, 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";
-
-// Dart test for testing binary operations.
-
-class UnaryTest {
-  static foo() {
-    return 4;
-  }
-
-  static moo() {
-    return 5;
-  }
-
-  static testMain() {
-    Expect.equals(9.0, (UnaryTest.foo() + UnaryTest.moo()));
-  }
-}
-
-main() {
-  UnaryTest.testMain();
-}
diff --git a/tests/language/unbalanced_brace_test.dart b/tests/language/unbalanced_brace_test.dart
deleted file mode 100644
index 5e889ccc..0000000
--- a/tests/language/unbalanced_brace_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-// Test syntax errors related to unterminated braces.
-
-class A {
-  m() {
-  /* //# 01: syntax error
-  }
-  // */
-
-/* //# 02: syntax error
-}
-// */
-
-class B {}
-
-main() {
-  new A();
-  new B();
-}
diff --git a/tests/language/unbound_getter_test.dart b/tests/language/unbound_getter_test.dart
deleted file mode 100644
index 7455227..0000000
--- a/tests/language/unbound_getter_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2011, 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.
-// Verify that an unbound getter is properly resolved at runtime.
-
-class A {
-  const A();
-  foo() {
-    return y;
-  }
-}
-
-class B extends A {
-  final y;
-  const B(val)
-      : super(),
-        y = val;
-}
-
-class UnboundGetterTest {
-  static testMain() {
-    var b = new B(1);
-    print(b.foo());
-  }
-}
-
-main() {
-  UnboundGetterTest.testMain();
-}
diff --git a/tests/language/unconditional_break.dart b/tests/language/unconditional_break.dart
deleted file mode 100644
index 63ec511..0000000
--- a/tests/language/unconditional_break.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test to ensure that we get don't exceptions in the SSA verifier when
-// generating phi for the return value of an inlined function that contains a
-// loop that always breaks.
-doWhileBreak() {
-  do {
-    break;
-  } while (true);
-}
-
-main() {
-  doWhileBreak();
-}
diff --git a/tests/language/unhandled_exception_negative_test.dart b/tests/language/unhandled_exception_negative_test.dart
deleted file mode 100644
index f450915..0000000
--- a/tests/language/unhandled_exception_negative_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing unhandled exceptions.
-
-class MyException {
-  const MyException(String message = "") : message_ = message;
-  String getMessage() { return message_; }
-  final String message_;
-}
-
-class Helper {
-  static int f1(int i) {
-    int j;
-    j = i + 200;
-    j = j + 300;
-    throw new MyException("Unhandled Exception");
-    return i;
-  }
-}
-
-class UnhandledExceptionNegativeTest {
-  static testMain() {
-    Helper.f1(1);
-  }
-}
-
-main() {
-  UnhandledExceptionNegativeTest.testMain();
-}
diff --git a/tests/language/unicode_bom_middle_test.dart b/tests/language/unicode_bom_middle_test.dart
deleted file mode 100644
index e620b2b..0000000
--- a/tests/language/unicode_bom_middle_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2011, 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";
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-foo(x) {
-  if (inscrutable(1999) == 1999) return x;
-  return 499;
-}
-
-main() {
-  Expect.equals(3, "xx".length); // BOM character between the xs.
-  Expect.equals(3, foo("xx").length); // BOM character between the xs.
-}
diff --git a/tests/language/unicode_bom_test.dart b/tests/language/unicode_bom_test.dart
deleted file mode 100644
index 2e23445..0000000
--- a/tests/language/unicode_bom_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// This file is saved with a BOM character (as first character). This character
-// should be ignored.
-// Tests that files with a BOM character are correctly handled.
-
-main() {
-  /* do nothing. */
-}
diff --git a/tests/language/unicode_hash_test.dart b/tests/language/unicode_hash_test.dart
deleted file mode 100644
index 430c51e..0000000
--- a/tests/language/unicode_hash_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2011, 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";
-
-main() {
-  Expect.equals("\u{10412}", "𐐒"); // Second string is literal U+10412.
-  Expect.equals("\u{10412}".hashCode, "𐐒".hashCode);
-}
diff --git a/tests/language/unnamed_closure_test.dart b/tests/language/unnamed_closure_test.dart
deleted file mode 100644
index 49fa570..0000000
--- a/tests/language/unnamed_closure_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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";
-
-getNonArray() => new A();
-
-class A {
-  operator [](index) => index;
-}
-
-main() {
-  Expect.equals(42, () {
-    var res;
-    do {
-      var a = getNonArray();
-      res = a[42];
-    } while (false);
-    return res;
-  }());
-}
diff --git a/tests/language/unqual_name_test.dart b/tests/language/unqual_name_test.dart
deleted file mode 100644
index d4c8d48..0000000
--- a/tests/language/unqual_name_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program to check that we can resolve unqualified identifiers
-
-import "package:expect/expect.dart";
-
-class B {
-  B(x, y) : b = y {}
-  var b;
-
-  get_b() {
-    // Resolving unqualified instance method.
-    return really_really_get_it();
-  }
-
-  really_really_get_it() {
-    return 5;
-  }
-}
-
-class UnqualNameTest {
-  static eleven() {
-    return 11;
-  }
-
-  static testMain() {
-    var o = new B(3, 5);
-    Expect.equals(11, eleven()); // Unqualified static method call.
-    Expect.equals(5, o.get_b());
-
-    // Check whether we handle variable initializers correctly.
-    var a = 1, x, b = a + 3;
-    Expect.equals(5, a + b);
-  }
-}
-
-main() {
-  UnqualNameTest.testMain();
-}
diff --git a/tests/language/unresolved_default_constructor_test.dart b/tests/language/unresolved_default_constructor_test.dart
deleted file mode 100644
index 1b0a66c..0000000
--- a/tests/language/unresolved_default_constructor_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test unresolved default constructor calls remain unresolved after dart2dart
-// translation.
-
-import 'package:expect/expect.dart';
-
-class A {
-  A.named();
-  static method() {}
-}
-
-main() {
-  A.method();
-  Expect.throws(() => new A()); //# 01: static type warning
-}
diff --git a/tests/language/unresolved_in_factory_negative_test.dart b/tests/language/unresolved_in_factory_negative_test.dart
deleted file mode 100644
index 8166ac8..0000000
--- a/tests/language/unresolved_in_factory_negative_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test that an unresolved method call in a factory is a resolution
-// error.
-
-class A {
-  factory A() {
-    foo();
-  }
-}
-
-main() {
-  new A();
-}
diff --git a/tests/language/unresolved_top_level_method_negative_test.dart b/tests/language/unresolved_top_level_method_negative_test.dart
deleted file mode 100644
index 2fc13cb..0000000
--- a/tests/language/unresolved_top_level_method_negative_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test that an unresolved method call at the top level does not crash
-// the parser.
-
-var a = b();
-
-main() {
-  print(a);
-}
diff --git a/tests/language/unresolved_top_level_var_negative_test.dart b/tests/language/unresolved_top_level_var_negative_test.dart
deleted file mode 100644
index 589ddd5..0000000
--- a/tests/language/unresolved_top_level_var_negative_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test that an unresolved identifier at the top level does not crash
-// the parser.
-
-var a = b;
-
-main() {
-  print(a);
-}
diff --git a/tests/language/unsigned_right_shift_test.dart b/tests/language/unsigned_right_shift_test.dart
deleted file mode 100644
index 64d46d0..0000000
--- a/tests/language/unsigned_right_shift_test.dart
+++ /dev/null
@@ -1,12 +0,0 @@
-// 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.
-
-// The >>> operator is not supported in Dart
-
-main() {
-  var foo = -10
-    >>> 1 //# 01: syntax error
-      ;
-  foo >>>= 1; //# 02: syntax error
-}
diff --git a/tests/language/unsupported_operators_test.dart b/tests/language/unsupported_operators_test.dart
deleted file mode 100644
index 1eb4636..0000000
--- a/tests/language/unsupported_operators_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test handling of unsupported operators.
-
-library unsupported_operators;
-
-class C {
-  m() {
-    print(
-          super === //# 01: syntax error
-        null);
-    print(
-          super !== //# 02: syntax error
-        null);
-  }
-}
-
-void main() {
-  new C().m();
-  new C().m();
-  print(
-        "foo" === //# 03: syntax error
-      null);
-  print(
-        "foo" !== //# 04: syntax error
-      null);
-}
diff --git a/tests/language/value_range2_test.dart b/tests/language/value_range2_test.dart
deleted file mode 100644
index 4bf8820..0000000
--- a/tests/language/value_range2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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";
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-foo() {
-  int x = 0;
-  if (inscrutable(0) == 0) x = -2; // x is now in range [-2 .. 0].
-  int y = 2;
-  if (inscrutable(0) == 0) y = 4; // y is now in range [2 .. 4].
-  int i = y - x; // i should be in range [2 .. 6].
-  i -= 4; // i should be in range [-2 .. 2]. Actual value: 2.
-  var a = const [1];
-  return a[i];
-}
-
-main() {
-  Expect.throws(() => foo(), (e) => e is RangeError);
-}
diff --git a/tests/language/value_range3_test.dart b/tests/language/value_range3_test.dart
deleted file mode 100644
index 7180938..0000000
--- a/tests/language/value_range3_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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';
-
-class A {
-  copy(array, index1, index2) {
-    if (index1 < index2 + index2) {
-      // dart2js used to remove the bounds check.
-      return array[index1];
-    }
-  }
-}
-
-main() {
-  Expect.throws(() => new A().copy(new List(0), 0, 1), (e) => e is RangeError);
-}
diff --git a/tests/language/value_range_test.dart b/tests/language/value_range_test.dart
deleted file mode 100644
index b15d0e5..0000000
--- a/tests/language/value_range_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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";
-
-int inscrutable(int x) => x == 0 ? 0 : x | inscrutable(x & (x - 1));
-
-foo() {
-  var x = 0x102;
-  if (inscrutable(x) == 0) x = 0x0;
-  if (inscrutable(10) == 10) x = 0x10; // x is in range [0 .. 0x102].
-  x = x & 0xFF; // x should be in range [0 .. 0xFF]. Actual value: 0x10.
-  var a = const [1, 2, 3];
-  return a[x];
-}
-
-main() {
-  Expect.throws(() => foo(), (e) => e is RangeError);
-}
diff --git a/tests/language/var_init_test.dart b/tests/language/var_init_test.dart
deleted file mode 100644
index 61ffd9b..0000000
--- a/tests/language/var_init_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2011, 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.
-// Testing correct initialization of variables in scopes.
-
-import "package:expect/expect.dart";
-
-class VarInitTest {
-  static void testMain() {
-    for (int i = 0; i < 10; i++) {
-      var x;
-      Expect.equals(null, x);
-      x = 1;
-    }
-  }
-}
-
-main() {
-  VarInitTest.testMain();
-}
diff --git a/tests/language/variable_declaration_metadata_test.dart b/tests/language/variable_declaration_metadata_test.dart
deleted file mode 100644
index 9802cda..0000000
--- a/tests/language/variable_declaration_metadata_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Verify that the individual variable declarations inside a variable
-// declaration list are not allowed to be annotated with metadata.
-
-const annotation = null;
-
-var
-  @annotation //# 01: syntax error
-    v1,
-  @annotation //# 02: syntax error
-    v2;
-
-int
-  @annotation //# 03: syntax error
-    v3,
-  @annotation //# 04: syntax error
-    v4;
-
-class C {
-  var
-    @annotation //# 05: syntax error
-      f1,
-    @annotation //# 06: syntax error
-      f2;
-
-  int
-    @annotation //# 07: syntax error
-      f3,
-    @annotation //# 08: syntax error
-      f4;
-}
-
-use(x) => x;
-
-main() {
-  use(v1);
-  use(v2);
-  use(v3);
-  use(v4);
-
-  C c = new C();
-  use(c.f1);
-  use(c.f2);
-  use(c.f3);
-  use(c.f4);
-
-  var
-    @annotation //# 09: syntax error
-      l1,
-    @annotation //# 10: syntax error
-      l2;
-
-  int
-    @annotation //# 11: syntax error
-      l3,
-    @annotation //# 12: syntax error
-      l4;
-
-  use(l1);
-  use(l2);
-  use(l3);
-  use(l4);
-
-  for (var
-         @annotation //# 13: syntax error
-      i1 = 0,
-         @annotation //# 14: syntax error
-      i2 = 0;;) {
-    use(i1);
-    use(i2);
-    break;
-  }
-
-  for (int
-         @annotation //# 15: syntax error
-      i3 = 0,
-         @annotation //# 16: syntax error
-      i4 = 0;;) {
-    use(i3);
-    use(i4);
-    break;
-  }
-}
diff --git a/tests/language/vm/allocation_sinking_vm_test.dart b/tests/language/vm/allocation_sinking_vm_test.dart
deleted file mode 100644
index f96fcbd..0000000
--- a/tests/language/vm/allocation_sinking_vm_test.dart
+++ /dev/null
@@ -1,339 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test allocation sinking optimization.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-class Point {
-  var x, y;
-
-  Point(this.x, this.y);
-
-  operator *(other) {
-    return x * other.x + y * other.y;
-  }
-}
-
-class C {
-  var p;
-  C(this.p);
-}
-
-class Pointx4 {
-  var x, y;
-
-  Pointx4(this.x, this.y);
-
-  operator *(other) {
-    return x * other.x + y * other.y;
-  }
-}
-
-class Cx4 {
-  var p;
-  Cx4(this.p);
-}
-
-class D {
-  var p;
-  D(this.p);
-}
-
-// Class that is used to capture materialized Point object with * operator.
-class F {
-  var p;
-  var val;
-
-  F(this.p);
-
-  operator *(other) {
-    Expect.isTrue(other is Point);
-    Expect.equals(42.0, other.x);
-    Expect.equals(0.5, other.y);
-
-    if (val == null) {
-      val = other;
-    } else {
-      Expect.isTrue(identical(val, other));
-    }
-
-    return this.p * other;
-  }
-}
-
-test1(c, x, y) {
-  var a = new Point(x - 0.5, y + 0.5);
-  var b = new Point(x + 0.5, y + 0.8);
-  var d = new Point(c.p * a, c.p * b);
-  return d * d;
-}
-
-test1x4(c, x, y, z, w) {
-  var a = new Pointx4(x - z, y + w);
-  var b = new Pointx4(x + w, y + z);
-  var d = new Pointx4(c.p * a, c.p * b);
-  return d * d;
-}
-
-effects() {
-  // This function should not be inlinable.
-  try {} catch (e) {}
-}
-
-testForwardingThroughEffects(c, x, y) {
-  var a = new Point(x - 0.5, y + 0.5);
-  var b = new Point(x - 0.5, y - 0.8);
-  var d = new Point(c.p * a, c.p * b);
-  // Effects can't affect neither a, b, nor d because they do not escape.
-  effects();
-  effects();
-  return ((a == null) ? 0.0 : 0.1) + (d * d);
-}
-
-testIdentity(x) {
-  var y = new Point(42.0, 0.5);
-  var z = y;
-  return x * y + x * z;
-}
-
-class PointP<T> {
-  var x, y;
-
-  PointP(this.x, this.y);
-
-  operator *(other) {
-    return x * other.x + y * other.y;
-  }
-}
-
-foo2() => new PointP<int>(1, 3) * new PointP<num>(5, 6);
-
-class A<T> {
-  var x, y;
-}
-
-foo3(x) {
-  // Test materialization of type arguments.
-  var a = new A<int>();
-  a.x = x;
-  a.y = x;
-  if (x is int) return a.x + a.y;
-  Expect.isFalse(a is A<double>);
-  Expect.isTrue(a is A<int>);
-  Expect.isTrue(a is A);
-  return a.x - a.y;
-}
-
-class WithFinal {
-  final _x;
-  WithFinal(this._x);
-}
-
-testInitialValueForFinalField(x) {
-  new WithFinal(x);
-}
-
-testFinalField() {
-  for (var i = 0; i < 100; i++) {
-    testInitialValueForFinalField(1);
-  }
-}
-
-class V {
-  var x = 0;
-}
-
-test_vm_field() {
-  var obj;
-  inner() => obj.x = 42;
-  var a = new V();
-  obj = a;
-  var t1 = a.x;
-  var t2 = inner();
-  return a.x + t1 + t2;
-}
-
-testVMField() {
-  Expect.equals(84, test_vm_field());
-  for (var i = 0; i < 100; i++) test_vm_field();
-  Expect.equals(84, test_vm_field());
-}
-
-class CompoundA {
-  var b;
-  CompoundA(this.b);
-}
-
-class CompoundB {
-  var c;
-  CompoundB(this.c);
-}
-
-class CompoundC {
-  var d;
-  var root;
-  CompoundC(this.d);
-}
-
-class NoopSink {
-  const NoopSink();
-  call(val) {}
-}
-
-testCompound1() {
-  f(d, [sink = const NoopSink()]) {
-    var c = new CompoundC(d);
-    var a = new CompoundA(new CompoundB(c));
-    sink(a);
-    return c.d;
-  }
-
-  Expect.equals(0.1, f(0.1));
-  for (var i = 0; i < 100; i++) f(0.1);
-  Expect.equals(0.1, f(0.1));
-  Expect.equals(
-      0.1,
-      f(0.1, (val) {
-        Expect.isTrue(val is CompoundA);
-        Expect.isTrue(val.b is CompoundB);
-        Expect.isTrue(val.b.c is CompoundC);
-        Expect.isNull(val.b.c.root);
-        Expect.equals(0.1, val.b.c.d);
-      }));
-}
-
-testCompound2() {
-  f(d, [sink = const NoopSink()]) {
-    var c = new CompoundC(d);
-    var a = new CompoundA(new CompoundB(c));
-    c.root = a;
-    sink(a);
-    return c.d;
-  }
-
-  Expect.equals(0.1, f(0.1));
-  for (var i = 0; i < 100; i++) f(0.1);
-  Expect.equals(0.1, f(0.1));
-  Expect.equals(
-      0.1,
-      f(0.1, (val) {
-        Expect.isTrue(val is CompoundA);
-        Expect.isTrue(val.b is CompoundB);
-        Expect.isTrue(val.b.c is CompoundC);
-        Expect.equals(val, val.b.c.root);
-        Expect.equals(0.1, val.b.c.d);
-      }));
-}
-
-testCompound3() {
-  f(d, [sink = const NoopSink()]) {
-    var c = new CompoundC(d);
-    c.root = c;
-    sink(c);
-    return c.d;
-  }
-
-  Expect.equals(0.1, f(0.1));
-  for (var i = 0; i < 100; i++) f(0.1);
-  Expect.equals(0.1, f(0.1));
-  Expect.equals(
-      0.1,
-      f(0.1, (val) {
-        Expect.isTrue(val is CompoundC);
-        Expect.equals(val, val.root);
-        Expect.equals(0.1, val.d);
-      }));
-}
-
-testCompound4() {
-  f(d, [sink = const NoopSink()]) {
-    var c = new CompoundC(d);
-    c.root = c;
-    for (var i = 0; i < 10; i++) {
-      c.d += 1.0;
-    }
-    sink(c);
-    return c.d - 1.0 * 10;
-  }
-
-  Expect.equals(1.0, f(1.0));
-  for (var i = 0; i < 100; i++) f(1.0);
-  Expect.equals(1.0, f(1.0));
-  Expect.equals(
-      1.0,
-      f(1.0, (val) {
-        Expect.isTrue(val is CompoundC);
-        Expect.equals(val, val.root);
-        Expect.equals(11.0, val.d);
-      }));
-}
-
-main() {
-  var c = new C(new Point(0.1, 0.2));
-
-  // Compute initial values.
-  final x0 = test1(c, 11.11, 22.22);
-  var fc = new Cx4(new Pointx4(
-      new Float32x4(1.0, 1.0, 1.0, 1.0), new Float32x4(1.0, 1.0, 1.0, 1.0)));
-  final fx0 = test1x4(
-      fc,
-      new Float32x4(1.0, 1.0, 1.0, 1.0),
-      new Float32x4(1.0, 1.0, 1.0, 1.0),
-      new Float32x4(1.0, 1.0, 1.0, 1.0),
-      new Float32x4(1.0, 1.0, 1.0, 1.0));
-  final y0 = testForwardingThroughEffects(c, 11.11, 22.22);
-  final z0 = testIdentity(c.p);
-
-  // Force optimization.
-  for (var i = 0; i < 100; i++) {
-    test1(c, i.toDouble(), i.toDouble());
-    test1x4(
-        fc,
-        new Float32x4(1.0, 1.0, 1.0, 1.0),
-        new Float32x4(1.0, 1.0, 1.0, 1.0),
-        new Float32x4(1.0, 1.0, 1.0, 1.0),
-        new Float32x4(1.0, 1.0, 1.0, 1.0));
-    testForwardingThroughEffects(c, i.toDouble(), i.toDouble());
-    testIdentity(c.p);
-    foo2();
-    Expect.equals(10, foo3(5));
-  }
-  Expect.equals(0.0, foo3(0.5));
-
-  // Test returned value after optimization.
-  final x1 = test1(c, 11.11, 22.22);
-  final y1 = testForwardingThroughEffects(c, 11.11, 22.22);
-
-  // Test returned value after deopt.
-  final x2 = test1(new D(c.p), 11.11, 22.22);
-  final y2 = testForwardingThroughEffects(new D(c.p), 11.11, 22.22);
-
-  Expect.equals(6465, (x0 * 100).floor());
-  Expect.equals(6465, (x1 * 100).floor());
-  Expect.equals(6465, (x2 * 100).floor());
-  Expect.equals(x0, x1);
-  Expect.equals(x0, x2);
-
-  Expect.equals(6008, (y0 * 100).floor());
-  Expect.equals(6008, (y1 * 100).floor());
-  Expect.equals(6008, (y2 * 100).floor());
-  Expect.equals(y0, y1);
-  Expect.equals(y0, y2);
-
-  // Test that identity of materialized objects is preserved correctly and
-  // no copies are materialized.
-  final z1 = testIdentity(c.p);
-  final z2 = testIdentity(new F(c.p));
-  Expect.equals(z0, z1);
-  Expect.equals(z0, z2);
-
-  testFinalField();
-  testVMField();
-  testCompound1();
-  testCompound2();
-  testCompound3();
-  testCompound4();
-}
diff --git a/tests/language/vm/async_await_catch_stacktrace_test.dart b/tests/language/vm/async_await_catch_stacktrace_test.dart
deleted file mode 100644
index 727b242..0000000
--- a/tests/language/vm/async_await_catch_stacktrace_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-void main() {
-  x() async {
-    print("Starting!");
-    try {
-      await runAsync();
-    } catch (e, st) {
-      print("Got exception and stacktrace:");
-      var stText = st.toString();
-      print(e);
-      print(stText);
-      // Stacktrace should be something like
-      // #0      runAsync.<runAsync_async_body> (this file)
-      // #1      Future.Future.microtask.<anonymous closure> (dart:async/future.dart:184)
-      // #2      _microtaskLoop (dart:async/schedule_microtask.dart:41)
-      // #3      _startMicrotaskLoop (dart:async/schedule_microtask.dart:50)
-      // #4      _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:96)
-      // #5      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:149)
-
-      // if exception and stacktrace is rethrown correctly, NOT
-
-      // #0      main.<anonymous closure>.async_op (this file)
-      // #1      _asyncErrorWrapperHelper.<anonymous closure> (dart:async:134:33)
-      // #2      _RootZone.runBinary (dart:async/zone.dart:1410:54)
-      // #3      _FutureListener.handleError (dart:async/future_impl.dart:146:20)
-      // #4      _Future._propagateToListeners.handleError (dart:async/future_impl.dart:649:47)
-      // #5      _Future._propagateToListeners (dart:async/future_impl.dart:671:13)
-      // #6      _Future._completeError (dart:async/future_impl.dart:485:5)
-      // #7      _SyncCompleter._completeError (dart:async/future_impl.dart:56:12)
-      // #8      _Completer.completeError (dart:async/future_impl.dart:27:5)
-      // #9      runAsync.async_op (this file)
-      // #10     Future.Future.microtask.<anonymous closure> (dart:async/future.dart:184:26)
-      // #11     _microtaskLoop (dart:async/schedule_microtask.dart:41:5)
-      // #12     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
-      // #13     _runPendingImmediateCallback (dart:isolate:1054:5)
-      // #14     _RawReceivePortImpl._handleMessage (dart:isolate:1104:5)
-
-      Expect.isFalse(stText.contains("propagateToListeners"));
-      Expect.isFalse(stText.contains("_completeError"));
-    }
-    print("Ending!");
-  }
-
-  asyncStart();
-  x().then((_) => asyncEnd());
-}
-
-runAsync() async {
-  throw 'oh no!';
-}
diff --git a/tests/language/vm/canonicalization_preserves_deopt_test.dart b/tests/language/vm/canonicalization_preserves_deopt_test.dart
deleted file mode 100644
index da282a5..0000000
--- a/tests/language/vm/canonicalization_preserves_deopt_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-use-osr --no-background_compilation
-
-import "package:expect/expect.dart";
-
-class X {
-  operator *(other) => "NaNNaNNaNNaNBatman";
-}
-
-foo(x) => (x * 1.0) is double;
-
-bar(x) {
-  try {
-    int i = (x * 1);
-    return true;
-  } catch (e) {
-    return false;
-  }
-}
-
-baz(x) => (x * 1) == x;
-
-main() {
-  for (var i = 0; i < 100; i++) {
-    Expect.isTrue(foo(1.0));
-    assert(() {
-      Expect.isTrue(bar(-1 << 63));
-      return true;
-    });
-    Expect.isTrue(baz(-1 << 63));
-  }
-  Expect.isFalse(foo(new X()));
-  assert(() {
-    Expect.isFalse(bar(new X()));
-    return true;
-  });
-  Expect.isFalse(baz(new X()));
-}
diff --git a/tests/language/vm/causal_async_exception_stack2_test.dart b/tests/language/vm/causal_async_exception_stack2_test.dart
deleted file mode 100644
index 77e9f32..0000000
--- a/tests/language/vm/causal_async_exception_stack2_test.dart
+++ /dev/null
@@ -1,106 +0,0 @@
-// 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.
-
-import 'package:unittest/unittest.dart';
-
-foo3() async => throw "foo";
-bar3() async => throw "bar";
-
-foo2() async => foo3();
-bar2() async => bar3();
-
-foo() async => foo2();
-bar() async => bar2();
-
-test1() async {
-  // test1 -> foo -> foo2 -> foo3
-  // test1 -> bar -> bar2 -> bar3
-  // These run interleaved, check their stack traces don't become mixed.
-  var a = foo();
-  var b = bar();
-
-  try {
-    await a;
-  } catch (e, st) {
-    // st has foo,2,3 and not bar,2,3.
-    expect(
-        st.toString(),
-        stringContainsInOrder([
-          'foo3',
-          '<asynchronous suspension>',
-          'foo2',
-          '<asynchronous suspension>',
-          'foo',
-          '<asynchronous suspension>',
-          'test1',
-        ]));
-    expect(st.toString().contains('bar'), isFalse);
-  }
-
-  try {
-    await b;
-  } catch (e, st) {
-    // st has bar,2,3 but not foo,2,3
-    expect(
-        st.toString(),
-        stringContainsInOrder([
-          'bar3',
-          '<asynchronous suspension>',
-          'bar2',
-          '<asynchronous suspension>',
-          'bar',
-          '<asynchronous suspension>',
-          'test1',
-        ]));
-    expect(st.toString().contains('foo'), isFalse);
-  }
-}
-
-test2() async {
-  // test2 -> foo -> foo2 -> foo3
-  // test2 -> bar -> bar2 -> bar3
-  // These run sequentially, check the former stack trace didn't get linked to
-  // from the latter stack trace.
-
-  try {
-    await foo();
-  } catch (e, st) {
-    // st has foo,2,3 but not bar,2,3
-    expect(
-        st.toString(),
-        stringContainsInOrder([
-          'foo3',
-          '<asynchronous suspension>',
-          'foo2',
-          '<asynchronous suspension>',
-          'foo',
-          '<asynchronous suspension>',
-          'test2',
-        ]));
-    expect(st.toString().contains('bar'), isFalse);
-  }
-
-  try {
-    await bar();
-  } catch (e, st) {
-    // st has bar,2,3 but not foo,2,3
-    expect(
-        st.toString(),
-        stringContainsInOrder([
-          'bar3',
-          '<asynchronous suspension>',
-          'bar2',
-          '<asynchronous suspension>',
-          'bar',
-          '<asynchronous suspension>',
-          'test2',
-        ]));
-    expect(st.toString().contains('foo'), isFalse);
-  }
-}
-
-main() async {
-  await test1();
-  await test2();
-}
diff --git a/tests/language/vm/causal_async_exception_stack_test.dart b/tests/language/vm/causal_async_exception_stack_test.dart
deleted file mode 100644
index bccfcfb3..0000000
--- a/tests/language/vm/causal_async_exception_stack_test.dart
+++ /dev/null
@@ -1,76 +0,0 @@
-// 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.
-
-import 'package:unittest/unittest.dart';
-
-thrower() async {
-  throw 'oops';
-}
-
-number() async {
-  return 4;
-}
-
-generator() async* {
-  yield await number();
-  yield await thrower();
-}
-
-foo() async {
-  await for (var i in generator()) {
-    print(i);
-  }
-}
-
-main() async {
-  // Test async and async*.
-  try {
-    await foo();
-    fail("Did not throw");
-  } catch (e, st) {
-    expect(st.toString(), stringContainsInOrder([
-        'thrower', '.dart:8',         //
-        '<asynchronous suspension>',  //
-        'generator', '.dart:17',      //
-        '<asynchronous suspension>',  //
-        'foo', '.dart:21',            //
-        '<asynchronous suspension>',  //
-        'main',                       //
-        ]));
-  }
-
-  inner() async {
-    deep() async {
-      await thrower();
-    }
-    await deep();
-  }
-
-  // Test inner functions.
-  try {
-    await inner();
-  } catch (e, st) {
-    expect(st.toString(), stringContainsInOrder([
-          'thrower',
-          '<asynchronous suspension>',
-          'main.inner.deep',
-          '<asynchronous suspension>',
-          'main.inner',
-          '<asynchronous suspension>',
-          'main',
-          '<asynchronous suspension>',
-          ]));
-  }
-
-  // Test for correct linkage.
-  try {
-    await thrower();
-  } catch(e, st) {
-    expect(st.toString(), stringContainsInOrder([
-           'thrower', '.dart:8',         //
-           '<asynchronous suspension>',  //
-           'main', '.dart:68',           //
-           ]));
-  }
-}
diff --git a/tests/language/vm/closure_memory_retention_test.dart b/tests/language/vm/closure_memory_retention_test.dart
deleted file mode 100644
index d373291..0000000
--- a/tests/language/vm/closure_memory_retention_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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=--old_gen_heap_size=50
-
-// Test that non-capturing closures don't retain unnecessary memory.
-// It tests that the context of `f` allocated within `bar` not leaking and does
-// not become the context of empty non-capturing closure allocated inside `foo`.
-// If failing it crashes with an OOM error.
-
-import "package:expect/expect.dart";
-
-foo() {
-  return () {};
-}
-
-bar(a, b) {
-  f() => [a, b];
-  return foo();
-}
-
-main() {
-  var closure = null;
-  for (var i = 0; i < 100; i++) {
-    closure = bar(closure, new List(1024 * 1024));
-  }
-  Expect.isTrue(closure is Function);
-}
diff --git a/tests/language/vm/create_array_instr_deopt2_test.dart b/tests/language/vm/create_array_instr_deopt2_test.dart
deleted file mode 100644
index 437aa4c..0000000
--- a/tests/language/vm/create_array_instr_deopt2_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation --enable_inlining_annotations
-
-const NeverInline = "NeverInline";
-
-foo(n) {
-  return new List(n);
-}
-
-@NeverInline
-bar(n) {
-  try {
-    return foo(n);
-  } catch (e) {}
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    bar(5);
-  }
-  bar("");
-}
diff --git a/tests/language/vm/create_array_instr_deopt_test.dart b/tests/language/vm/create_array_instr_deopt_test.dart
deleted file mode 100644
index ed83284..0000000
--- a/tests/language/vm/create_array_instr_deopt_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation --enable_inlining_annotations
-
-const NeverInline = "NeverInline";
-
-@NeverInline
-foo(n) {
-  try {
-    return new List(n);
-  } catch (e) {}
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    foo(5);
-  }
-  foo("");
-}
diff --git a/tests/language/vm/debug_break_enabled_vm_test.dart b/tests/language/vm/debug_break_enabled_vm_test.dart
deleted file mode 100644
index a0e0c59..0000000
--- a/tests/language/vm/debug_break_enabled_vm_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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=--optimization-counter-threshold=5 --enable-debug-break --no-background-compilation
-
-// Verify that the optimizer does not trip over the debug break (StopInstr).
-
-test(i) {
-  if (i.isOdd) {
-    break "never_hit";
-  }
-  // "crash" is not an allowed outcome specifier.
-  // Use "ok" instead and mark the status file with "Crash, OK".
-  if (i == 18) {
-    break "hit"; //  //# 01: ok
-  }
-}
-
-void main() {
-  for (var i = 0; i < 20; i += 2) {
-    test(i);
-  }
-}
diff --git a/tests/language/vm/debug_break_vm_test.dart b/tests/language/vm/debug_break_vm_test.dart
deleted file mode 100644
index cdc174a..0000000
--- a/tests/language/vm/debug_break_vm_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// A debug break is not valid Dart syntax unless --enable-debug-break.
-
-test(i) {
-  break "outside_loop"; // //# 02: syntax error
-  do {
-    if (i > 15) {
-      break "inside_loop"; // //# 03: syntax error
-    }
-  } while (false);
-}
-
-void main() {
-  break "gdb"; //  //# 01: syntax error
-  for (var i = 0; i < 20; i++) {
-    test(i);
-  }
-}
diff --git a/tests/language/vm/deopt_hoisted_smi_check_vm_test.dart b/tests/language/vm/deopt_hoisted_smi_check_vm_test.dart
deleted file mode 100644
index 2ed2e38..0000000
--- a/tests/language/vm/deopt_hoisted_smi_check_vm_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test deoptimization on an optimistically hoisted smi check.
-// VMOptions=--optimization-counter-threshold=10  --no-background-compilation
-
-import 'package:expect/expect.dart';
-
-sum(a, b) {
-  var sum = 0;
-  for (var j = 1; j < 10; j++) {
-    for (var i = a; i < b; i++) {
-      sum++;
-    }
-  }
-  return sum;
-}
-
-mask(x) {
-  for (var i = 0; i < 10; i++) {
-    if (i == 1) {
-      return x;
-    }
-    x = x & 0xFF;
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(9, sum(1, 2));
-    Expect.equals(0xAB, mask(0xAB));
-  }
-  Expect.equals(9, sum(1.0, 2.0)); // Passing double causes deoptimization.
-  Expect.equals(0xAB, mask(0x1000000AB));
-}
diff --git a/tests/language/vm/deopt_smi_check_vm_test.dart b/tests/language/vm/deopt_smi_check_vm_test.dart
deleted file mode 100644
index 3c61430..0000000
--- a/tests/language/vm/deopt_smi_check_vm_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-// Test deoptimization on a smi check.
-// VMOptions=--optimization-counter-threshold=10  --no-background-compilation
-
-import 'package:expect/expect.dart';
-
-hc(a) {
-  var r = a.hashCode;
-  return r;
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    Expect.equals((1).hashCode, hc(1));
-  }
-  // Passing double causes deoptimization.
-  Expect.equals((1.0).hashCode, hc(1.0));
-}
diff --git a/tests/language/vm/function_equality_vm_test.dart b/tests/language/vm/function_equality_vm_test.dart
deleted file mode 100644
index 2c0f9fd..0000000
--- a/tests/language/vm/function_equality_vm_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test function equality with null.
-
-import "package:expect/expect.dart";
-
-class A {
-  foo() {}
-}
-
-main() {
-  var a = new A();
-  var f = a.foo;
-  Expect.isFalse(f == null);
-  Expect.isFalse(null == f);
-}
diff --git a/tests/language/vm/if_conversion_vm_test.dart b/tests/language/vm/if_conversion_vm_test.dart
deleted file mode 100644
index bea37af..0000000
--- a/tests/language/vm/if_conversion_vm_test.dart
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test if-conversion pass in the optimizing compiler.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-f1(i) => (i == 0) ? 0 : 1;
-f2(i) => (i == 0) ? 2 : 3;
-f3(i) => (i == null) ? 0 : 1;
-f4(i) => (i == null) ? 2 : 3;
-
-f5(i) => (i != 0) ? 0 : 1;
-f6(i) => (i != 0) ? 2 : 3;
-f7(i) => (i != null) ? 0 : 1;
-f8(i) => (i != null) ? 2 : 3;
-
-f9(i) => identical(i, 0) ? 0 : 1;
-f10(i) => identical(i, 0) ? 2 : 3;
-f11(i) => identical(i, null) ? 0 : 1;
-f12(i) => identical(i, null) ? 2 : 3;
-
-f13(i) => !identical(i, 0) ? 0 : 1;
-f14(i) => !identical(i, 0) ? 2 : 3;
-f15(i) => !identical(i, null) ? 0 : 1;
-f16(i) => !identical(i, null) ? 2 : 3;
-
-const POWER_OF_2 = 0x1000000000;
-
-bigPower(i) => (i == 11) ? 0 : POWER_OF_2;
-
-cse(i) {
-  final a = i == 0 ? 0 : 1;
-  final b = i == 0 ? 2 : 3;
-  return a + b;
-}
-
-f17(b) => b ? 0 : 11;
-f18(b) => b ? 2 : 0;
-
-f19(i) => i == 0 ? 0 : 0;
-
-f20(i) => i > 0 ? 0 : 1;
-f21(i) => i > 0 ? 2 : 3;
-f22(i) => i & 1 == 0 ? 0 : 1;
-f23(i) => i & 1 != 0 ? 1 : 0;
-
-f24(i) => i >= 0 ? 0 : 1;
-f25(i) => i < 0 ? 0 : 1;
-f26(i) => i <= 0 ? 0 : 1;
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    f1(i);
-    f2(i);
-    f3(i);
-    f4(i);
-    f5(i);
-    f6(i);
-    f7(i);
-    f8(i);
-    f9(i);
-    f10(i);
-    f11(i);
-    f12(i);
-    f13(i);
-    f14(i);
-    f15(i);
-    f16(i);
-    cse(i);
-    bigPower(i);
-    f17(true);
-    f18(true);
-    f19(i);
-    f20(i);
-    f21(i);
-    f22(i);
-    f23(i);
-    f24(i);
-    f25(i);
-    f26(i);
-  }
-
-  Expect.equals(0, f1(0));
-  Expect.equals(1, f1(44));
-  Expect.equals(2, f2(0));
-  Expect.equals(3, f2(44));
-  Expect.equals(0, f3(null));
-  Expect.equals(1, f3(44));
-  Expect.equals(2, f4(null));
-  Expect.equals(3, f4(44));
-
-  Expect.equals(1, f5(0));
-  Expect.equals(0, f5(44));
-  Expect.equals(3, f6(0));
-  Expect.equals(2, f6(44));
-  Expect.equals(1, f7(null));
-  Expect.equals(0, f7(44));
-  Expect.equals(3, f8(null));
-  Expect.equals(2, f8(44));
-
-  Expect.equals(0, f9(0));
-  Expect.equals(1, f9(44));
-  Expect.equals(2, f10(0));
-  Expect.equals(3, f10(44));
-  Expect.equals(0, f11(null));
-  Expect.equals(1, f11(44));
-  Expect.equals(2, f12(null));
-  Expect.equals(3, f12(44));
-
-  Expect.equals(1, f13(0));
-  Expect.equals(0, f13(44));
-  Expect.equals(3, f14(0));
-  Expect.equals(2, f14(44));
-  Expect.equals(1, f15(null));
-  Expect.equals(0, f15(44));
-  Expect.equals(3, f16(null));
-  Expect.equals(2, f16(44));
-
-  Expect.equals(0, bigPower(11));
-  Expect.equals(POWER_OF_2, bigPower(12));
-
-  Expect.equals(2, cse(0));
-  Expect.equals(4, cse(1));
-
-  Expect.equals(11, f17(false));
-  Expect.equals(0, f17(true));
-
-  Expect.equals(0, f18(false));
-  Expect.equals(2, f18(true));
-
-  Expect.equals(0, f19(0));
-  Expect.equals(0, f19(1));
-
-  Expect.equals(0, f20(123));
-  Expect.equals(2, f21(123));
-  Expect.equals(0, f22(122));
-  Expect.equals(1, f22(123));
-  Expect.equals(0, f23(122));
-  Expect.equals(1, f23(123));
-
-  Expect.equals(0, f24(0));
-  Expect.equals(1, f24(-1));
-
-  Expect.equals(0, f25(-1));
-  Expect.equals(1, f25(0));
-
-  Expect.equals(0, f26(0));
-  Expect.equals(1, f26(1));
-}
diff --git a/tests/language/vm/integer_type_propagation2_test.dart b/tests/language/vm/integer_type_propagation2_test.dart
deleted file mode 100644
index 05cfb34..0000000
--- a/tests/language/vm/integer_type_propagation2_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-// Test various optimizations and deoptimizations of optimizing compiler..
-// VMOptions=--enable-inlining-annotations --no-background-compilation --optimization-counter-threshold=1000
-
-import "package:expect/expect.dart";
-import "dart:typed_data";
-
-const noInline = "NeverInline";
-const alwaysInline = "AlwaysInline";
-
-var list = new Uint32List(1);
-
-@noInline
-testuint32(bool b) {
-  var t;
-  if (b) {
-    t = list[0];
-  }
-  if (t != null) {
-    return t & 0x7fffffff;
-  }
-  return -1;
-}
-
-main() {
-  var s = 0;
-  testuint32(true);
-  testuint32(false);
-  for (int i = 0; i < 10000; ++i) {
-    testuint32(true);
-  }
-  Expect.equals(0, testuint32(true));
-  Expect.equals(-1, testuint32(false));
-}
diff --git a/tests/language/vm/integer_type_propagation_test.dart b/tests/language/vm/integer_type_propagation_test.dart
deleted file mode 100644
index c8b313c..0000000
--- a/tests/language/vm/integer_type_propagation_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// 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.
-// Test various optimizations and deoptimizations of optimizing compiler..
-// VMOptions=--checked --enable-inlining-annotations --no-background-compilation --optimization-counter-threshold=1000
-
-import "package:expect/expect.dart";
-
-const noInline = "NeverInline";
-
-@noInline
-testuint32(y) {
-  int x = y;
-  if (x != null) {
-    return x & 0xffff;
-  }
-}
-
-main() {
-  var s = 0;
-  testuint32(0x7fffffff);
-  for (int i = 0; i < 10000; ++i) {
-    testuint32(i);
-  }
-  Expect.equals(65535, testuint32(0x7fffffff));
-  Expect.equals(65535, testuint32(0x7f3452435245ffff));
-}
diff --git a/tests/language/vm/issue11087_vm_test.dart b/tests/language/vm/issue11087_vm_test.dart
deleted file mode 100644
index 00458d5..0000000
--- a/tests/language/vm/issue11087_vm_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for VM's IfConverted pass not keeping graph structure and
-// use lists in sync.
-
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-class A {
-  int x;
-}
-
-f() {
-  var a = new A();
-  a.x = (true ? 2 : 4);
-  return a.x;
-}
-
-main() {
-  for (var i = 0; i < 20; i++) f();
-}
diff --git a/tests/language/vm/issue21220_vm_test.dart b/tests/language/vm/issue21220_vm_test.dart
deleted file mode 100644
index bc5dd57..0000000
--- a/tests/language/vm/issue21220_vm_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2014, 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:typed_data';
-import 'package:expect/expect.dart';
-
-main() {
-  final val = (0xffb15062).toSigned(32);
-  final arr = new Int32x4List(1);
-  arr[0] = new Int32x4(val, val, val, val);
-  Expect.equals(val, arr[0].x);
-  Expect.equals(val, arr[0].y);
-  Expect.equals(val, arr[0].z);
-  Expect.equals(val, arr[0].w);
-}
diff --git a/tests/language/vm/lazy_deopt_vm_test.dart b/tests/language/vm/lazy_deopt_vm_test.dart
deleted file mode 100644
index ca4f3c7..0000000
--- a/tests/language/vm/lazy_deopt_vm_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-// VMOptions=--optimization-filter=foo --deoptimize_every=10 --optimization-counter-threshold=10  --no-background-compilation
-
-// Test that lazy deoptimization on stack checks does not damage unoptimized
-// frame.
-
-import 'package:expect/expect.dart';
-
-foo() {
-  var a = 0;
-  var b = 1;
-  var c = 2;
-  var d = 3;
-  var e = 4;
-  for (var i = 0; i < 10; i++) {
-    a++;
-    b++;
-    c++;
-    d++;
-    e++;
-  }
-  Expect.equals(10, a);
-  Expect.equals(11, b);
-  Expect.equals(12, c);
-  Expect.equals(13, d);
-  Expect.equals(14, e);
-}
-
-main() {
-  for (var i = 0; i < 10; ++i) {
-    foo();
-  }
-}
diff --git a/tests/language/vm/lazy_deopt_with_exception_and_stacktrace_test.dart b/tests/language/vm/lazy_deopt_with_exception_and_stacktrace_test.dart
deleted file mode 100644
index 804997a..0000000
--- a/tests/language/vm/lazy_deopt_with_exception_and_stacktrace_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// 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.
-// Test deoptimization on an optimistically hoisted smi check.
-// VMOptions=--optimization-counter-threshold=10  --no-background-compilation --enable-inlining-annotations
-
-// Test that lazy deoptimization works if the program returns to a function
-// that is scheduled for lazy deoptimization via an exception.
-
-import 'package:expect/expect.dart';
-
-class C {
-  var x = 42;
-}
-
-const NeverInline = "NeverInline";
-
-@NeverInline
-AA(C c, bool b) {
-  if (b) {
-    c.x = 2.5;
-    throw 123;
-  }
-}
-
-@NeverInline
-T1(C c, bool b) {
-  try {
-    AA(c, b);
-  } on dynamic catch (e, st) {
-    print(e);
-    print(st);
-    Expect.isTrue(st is StackTrace, "is StackTrace");
-  }
-  return c.x + 1;
-}
-
-@NeverInline
-T2(C c, bool b) {
-  try {
-    AA(c, b);
-  } on String catch (e, st) {
-    print(e);
-    print(st);
-    Expect.isTrue(st is StackTrace, "is StackTrace");
-    Expect.isTrue(false);
-  } on int catch (e, st) {
-    Expect.equals(e, 123);
-    Expect.equals(b, true);
-    Expect.equals(c.x, 2.5);
-    print(st);
-    Expect.isTrue(st is StackTrace, "is StackTrace");
-  }
-  return c.x + 1;
-}
-
-main() {
-  var c = new C();
-  for (var i = 0; i < 10000; ++i) {
-    T1(c, false);
-    T2(c, false);
-  }
-  Expect.equals(43, T1(c, false));
-  Expect.equals(43, T2(c, false));
-  Expect.equals(3.5, T1(c, true));
-  Expect.equals(3.5, T2(c, true));
-}
diff --git a/tests/language/vm/lazy_deopt_with_exception_test.dart b/tests/language/vm/lazy_deopt_with_exception_test.dart
deleted file mode 100644
index e481d02..0000000
--- a/tests/language/vm/lazy_deopt_with_exception_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// 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.
-// Test deoptimization on an optimistically hoisted smi check.
-// VMOptions=--optimization-counter-threshold=10  --no-background-compilation --enable-inlining-annotations
-
-// Test that lazy deoptimization works if the program returns to a function
-// that is scheduled for lazy deoptimization via an exception.
-
-import 'package:expect/expect.dart';
-
-class C {
-  var x = 42;
-}
-
-const NeverInline = "NeverInline";
-
-@NeverInline
-AA(C c, bool b) {
-  if (b) {
-    c.x = 2.5;
-    throw 123;
-  }
-}
-
-@NeverInline
-T1(C c, bool b) {
-  try {
-    AA(c, b);
-  } on dynamic {}
-  return c.x + 1;
-}
-
-@NeverInline
-T2(C c, bool b) {
-  try {
-    AA(c, b);
-  } on String {
-    Expect.isTrue(false);
-  } on int catch (e) {
-    Expect.equals(e, 123);
-    Expect.equals(b, true);
-    Expect.equals(c.x, 2.5);
-  }
-  return c.x + 1;
-}
-
-main() {
-  var c = new C();
-  for (var i = 0; i < 10000; ++i) {
-    T1(c, false);
-    T2(c, false);
-  }
-  Expect.equals(43, T1(c, false));
-  Expect.equals(43, T2(c, false));
-  Expect.equals(3.5, T1(c, true));
-  Expect.equals(3.5, T2(c, true));
-}
diff --git a/tests/language/vm/licm_constant_redefinition_vm_test.dart b/tests/language/vm/licm_constant_redefinition_vm_test.dart
deleted file mode 100644
index 662cb4b..0000000
--- a/tests/language/vm/licm_constant_redefinition_vm_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2015, 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=--optimization_counter_threshold=100 --no-use-osr --no-background_compilation
-
-import "package:expect/expect.dart";
-
-class X {
-  final nested = [];
-
-  get length => nested.length;
-}
-
-loop(val) {
-  var sum = 0;
-  for (var i = 0; i < 10; i++) {
-    sum += val.length;
-  }
-  return sum;
-}
-
-// LoadField(LoadField(",", nested), length) should not be hoisted.
-// Otherwise it would crash.
-testRedef() => loop(",");
-
-main() {
-  // Provide polymorphic type feedback.
-  loop("");
-  loop(new X());
-
-  // Optimize loop with a constant argument.
-  for (var i = 0; i < 100; i++) {
-    testRedef();
-  }
-}
diff --git a/tests/language/vm/load_elimination_any_use_creates_alias_test.dart b/tests/language/vm/load_elimination_any_use_creates_alias_test.dart
deleted file mode 100644
index 14b6e73..0000000
--- a/tests/language/vm/load_elimination_any_use_creates_alias_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright (c) 2014, 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.
-// Test correctness of side effects tracking used by load to load forwarding.
-
-// VMOptions=--no-use-osr --optimization-counter-threshold=10 --enable-inlining-annotations --no-background-compilation
-
-import "package:expect/expect.dart";
-
-const alwaysInline = "AlwaysInline";
-const noInline = "NeverInline";
-
-B G;
-
-@noInline
-modify() {
-  G.bval = 123;
-}
-
-class B {
-  @alwaysInline
-  poly() {
-    G = this;
-    modify();
-    return bval;
-  }
-
-  var bval = -1;
-}
-
-class C {
-  poly() => null;
-}
-
-@alwaysInline
-foo(obj) => obj.poly();
-
-@noInline
-test() {
-  var b = new B();
-
-  foo(b);
-  return b.bval;
-}
-
-main() {
-  foo(new C());
-  foo(new B());
-  for (var i = 0; i < 100; i++) test();
-  Expect.equals(123, test());
-}
diff --git a/tests/language/vm/load_elimination_has_loads_from_place_test.dart b/tests/language/vm/load_elimination_has_loads_from_place_test.dart
deleted file mode 100644
index cc01ad7..0000000
--- a/tests/language/vm/load_elimination_has_loads_from_place_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2014, 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.
-// Test correctness of side effects tracking used by load to load forwarding.
-
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --enable-inlining-annotations --no-background-compilation
-
-// Tests correct handling of redefinitions in aliasing computation.
-
-import "package:expect/expect.dart";
-
-const alwaysInline = "AlwaysInline";
-const noInline = "NeverInline";
-
-var H = true;
-
-class A {
-  B bb;
-
-  @alwaysInline
-  poly(p) {
-    if (H) {
-      bb = p;
-    }
-    B t = bb;
-    t.bval = 123;
-    return t.bval;
-  }
-}
-
-class B {
-  int bval = -1;
-
-  @alwaysInline
-  poly(p) {
-    return bval;
-  }
-}
-
-@alwaysInline
-foo(obj, p) => obj.poly(p);
-
-@noInline
-test() {
-  A a = new A();
-  B b = new B();
-  foo(a, b);
-  return b.bval;
-}
-
-main() {
-  // Prime foo with polymorphic type feedback.
-  foo(new B(), new A());
-  foo(new A(), new B());
-
-  for (var i = 0; i < 100; i++) test();
-  Expect.equals(123, test());
-}
diff --git a/tests/language/vm/load_elimination_mark_stored_values_escaping_test.dart b/tests/language/vm/load_elimination_mark_stored_values_escaping_test.dart
deleted file mode 100644
index 86bec6f..0000000
--- a/tests/language/vm/load_elimination_mark_stored_values_escaping_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2014, 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.
-// Test correctness of side effects tracking used by load to load forwarding.
-
-// VMOptions=--no-use-osr --optimization-counter-threshold=10 --enable-inlining-annotations --no-background-compilation
-
-// Tests correct handling of redefinitions in aliasing computation.
-
-import "package:expect/expect.dart";
-
-const alwaysInline = "AlwaysInline";
-const noInline = "NeverInline";
-
-B G;
-
-class A {
-  int val = -1;
-
-  @alwaysInline
-  poly(p) {
-    p.aa = this;
-  }
-}
-
-@noInline
-modify() {
-  G.aa.val = 123;
-}
-
-class B {
-  A aa;
-
-  @alwaysInline
-  poly(p) {
-    G = this;
-    foo2(p, this);
-    modify();
-  }
-}
-
-@alwaysInline
-foo(obj, p) => obj.poly(p);
-
-@alwaysInline
-foo2(obj, p) => obj.poly(p);
-
-@noInline
-testfunc() {
-  var a = new A();
-  var b = new B();
-  foo(b, a);
-  return a.val;
-}
-
-main() {
-  foo(new B(), new A());
-  foo(new A(), new B());
-  foo2(new B(), new A());
-  foo2(new A(), new B());
-  for (var i = 0; i < 100; i++) testfunc();
-  Expect.equals(123, testfunc());
-}
diff --git a/tests/language/vm/load_elimination_two_redefinitions_test.dart b/tests/language/vm/load_elimination_two_redefinitions_test.dart
deleted file mode 100644
index 9e15ebc..0000000
--- a/tests/language/vm/load_elimination_two_redefinitions_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2014, 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.
-// Test correctness of side effects tracking used by load to load forwarding.
-
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --enable-inlining-annotations --no-background-compilation
-
-// Tests correct handling of redefinitions in aliasing computation.
-
-import "package:expect/expect.dart";
-
-const alwaysInline = "AlwaysInline";
-const noInline = "NeverInline";
-
-var H = true;
-
-class A {
-  B bb;
-
-  @alwaysInline
-  poly(p) {
-    if (H) {
-      bb = p;
-    }
-    B t = bb;
-    t.bval = 123;
-    return t.bval;
-  }
-}
-
-class B {
-  int bval = -1;
-
-  @alwaysInline
-  poly(p) {
-    return bval;
-  }
-}
-
-@alwaysInline
-foo(obj, p) => obj.poly(p);
-
-@noInline
-test() {
-  A a = new A();
-  B b = new B();
-  foo(a, b);
-  foo(a, b);
-  return b.bval;
-}
-
-main() {
-  // Prime foo with polymorphic type feedback.
-  foo(new B(), new A());
-  foo(new A(), new B());
-
-  for (var i = 0; i < 100; i++) test();
-  Expect.equals(123, test());
-}
diff --git a/tests/language/vm/load_to_load_forwarding_vm_test.dart b/tests/language/vm/load_to_load_forwarding_vm_test.dart
deleted file mode 100644
index c0884f0..0000000
--- a/tests/language/vm/load_to_load_forwarding_vm_test.dart
+++ /dev/null
@@ -1,594 +0,0 @@
-// 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.
-// Test correctness of side effects tracking used by load to load forwarding.
-
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-import "dart:typed_data";
-
-class A {
-  var x, y;
-  A(this.x, this.y);
-}
-
-foo(a) {
-  var value1 = a.x;
-  var value2 = a.y;
-  for (var j = 1; j < 4; j++) {
-    value1 |= a.x << (j * 8);
-    a.y += 1;
-    a.x += 1;
-    value2 |= a.y << (j * 8);
-  }
-  return [value1, value2];
-}
-
-bar(a, mode) {
-  var value1 = a.x;
-  var value2 = a.y;
-  for (var j = 1; j < 4; j++) {
-    value1 |= a.x << (j * 8);
-    a.y += 1;
-    if (mode) a.x += 1;
-    a.x += 1;
-    value2 |= a.y << (j * 8);
-  }
-  return [value1, value2];
-}
-
-// Verify that immutable and mutable VM fields (array length in this case)
-// are not confused by load forwarding even if the access the same offset
-// in the object.
-testImmutableVMFields(arr, immutable) {
-  if (immutable) {
-    return arr.length; // Immutable length load.
-  }
-
-  if (arr.length < 2) {
-    // Mutable length load, should not be forwarded.
-    arr.add(null);
-  }
-
-  return arr.length;
-}
-
-testPhiRepresentation(f, arr) {
-  if (f) {
-    arr[0] = arr[0] + arr[1];
-  } else {
-    arr[0] = arr[0] - arr[1];
-  }
-  return arr[0];
-}
-
-testPhiConvertions(f, arr) {
-  if (f) {
-    arr[0] = arr[1];
-  } else {
-    arr[0] = arr[2];
-  }
-  return arr[0];
-}
-
-class M {
-  var x;
-  M(this.x);
-}
-
-fakeAliasing(arr) {
-  var a = new M(10);
-  var b = new M(10);
-  var c = arr.length;
-
-  if (c * c != c * c) {
-    arr[0] = a; // Escape.
-    arr[0] = b;
-  }
-
-  return c * c; // Deopt point.
-}
-
-class X {
-  var next;
-  X(this.next);
-}
-
-testPhiForwarding(obj) {
-  if (obj.next == null) {
-    return 1;
-  }
-
-  var len = 0;
-  while (obj != null) {
-    len++;
-    obj = obj.next; // This load should not be forwarded.
-  }
-
-  return len;
-}
-
-testPhiForwarding2(obj) {
-  if (obj.next == null) {
-    return 1;
-  }
-
-  var len = 0, next = null;
-  while ((obj != null) && len < 2) {
-    len++;
-    obj = obj.next; // This load should be forwarded.
-    next = obj.next;
-  }
-
-  return len;
-}
-
-class V {
-  final f;
-  V(this.f);
-}
-
-testPhiForwarding3() {
-  var a = new V(-0.1);
-  var c = new V(0.0);
-  var b = new V(0.1);
-
-  for (var i = 0; i < 3; i++) {
-    var af = a.f;
-    var bf = b.f;
-    var cf = c.f;
-    a = new V(cf);
-    b = new V(af);
-    c = new V(bf);
-  }
-
-  Expect.equals(-0.1, a.f);
-  Expect.equals(0.1, b.f);
-  Expect.equals(0.0, c.f);
-}
-
-testPhiForwarding4() {
-  var a = new V(-0.1);
-  var b = new V(0.1);
-  var c = new V(0.0);
-
-  var result = new List(9);
-  for (var i = 0, j = 0; i < 3; i++) {
-    result[j++] = a.f;
-    result[j++] = b.f;
-    result[j++] = c.f;
-    var xa = a;
-    var xb = b;
-    a = c;
-    b = xa;
-    c = xb;
-  }
-
-  Expect.listEquals([-0.1, 0.1, 0.0, 0.0, -0.1, 0.1, 0.1, 0.0, -0.1], result);
-}
-
-class C {
-  C(this.box, this.parent);
-  final box;
-  final C parent;
-}
-
-testPhiForwarding5(C c) {
-  var s = 0;
-  var tmp = c;
-  var a = c.parent;
-  if (a.box + tmp.box != 1) throw "failed";
-  do {
-    s += tmp.box + a.box;
-    tmp = a;
-    a = a.parent;
-  } while (a != null);
-  return s;
-}
-
-class U {
-  var x, y;
-  U()
-      : x = 0,
-        y = 0;
-}
-
-testEqualPhisElimination() {
-  var u = new U();
-  var v = new U();
-  var sum = 0;
-  for (var i = 0; i < 3; i++) {
-    u.x = i;
-    u.y = i;
-    if ((i & 1) == 1) {
-      v.x = i + 1;
-      v.y = i + 1;
-    } else {
-      v.x = i - 1;
-      v.y = i - 1;
-    }
-    sum += v.x + v.y;
-  }
-  Expect.equals(4, sum);
-  Expect.equals(2, u.x);
-  Expect.equals(2, u.y);
-}
-
-testPhiMultipleRepresentations(f, arr) {
-  var w;
-  if (f) {
-    w = arr[0] + arr[1];
-  } else {
-    w = arr[0] - arr[1];
-  }
-  var v;
-  if (f) {
-    v = arr[0];
-  } else {
-    v = arr[0];
-  }
-  return v + w;
-}
-
-testIndexedNoAlias(a) {
-  a[0] = 1;
-  a[1] = 2;
-  a[2] = 3;
-  return a[0] + a[1];
-}
-
-//
-// Tests for indexed store aliases were autogenerated to have extensive
-// coverage for all interesting aliasing combinations within the alias
-// lattice (*[*], *[C], X[*], X[C])
-//
-
-testIndexedAliasedStore1(i) {
-  var a = new List(2);
-  a[0] = 1; // X[C]
-  a[i] = 2; // X[*]
-  return a[0];
-}
-
-testIndexedAliasedStore2(f, c) {
-  var a = new List(2);
-  var d = f ? a : c;
-  a[0] = 1; // X[C]
-  d[0] = 2; // *[C]
-  return a[0];
-}
-
-testIndexedAliasedStore3(f, c, i) {
-  var a = new List(2);
-  var d = f ? a : c;
-  a[0] = 1; // X[C]
-  d[i] = 2; // *[*]
-  return a[0];
-}
-
-testIndexedAliasedStore4(i) {
-  var a = new List(2);
-  a[i] = 1; // X[*]
-  a[0] = 2; // X[C]
-  return a[i];
-}
-
-testIndexedAliasedStore5(i, j) {
-  var a = new List(2);
-  a[i] = 1; // X[*]
-  a[j] = 2; // X[*]
-  return a[i];
-}
-
-testIndexedAliasedStore6(i, f, c) {
-  var a = new List(2);
-  var d = f ? a : c;
-  a[i] = 1; // X[*]
-  d[0] = 2; // *[C]
-  return a[i];
-}
-
-testIndexedAliasedStore7(i, f, c) {
-  var a = new List(2);
-  var d = f ? a : c;
-  a[i] = 1; // X[*]
-  d[i] = 2; // *[*]
-  return a[i];
-}
-
-testIndexedAliasedStore8(c, i) {
-  c[0] = 1; // *[C]
-  c[i] = 2; // *[*]
-  return c[0];
-}
-
-testIndexedAliasedStore9(c, f) {
-  var a = new List(2);
-  var d = f ? a : c;
-  c[0] = 1; // *[C]
-  d[0] = 2; // *[C]
-  return c[0];
-}
-
-testIndexedAliasedStore10(c, i) {
-  c[i] = 1; // *[*]
-  c[0] = 2; // *[C]
-  return c[i];
-}
-
-testIndexedAliasedStore11(c, i, j) {
-  c[i] = 1; // *[*]
-  c[j] = 2; // *[*]
-  return c[i];
-}
-
-testIndexedAliasedStore12(f, c) {
-  var a = new List(2);
-  var d = f ? a : c;
-  d[0] = 1; // *[C]
-  a[0] = 2; // X[C]
-  return d[0];
-}
-
-testIndexedAliasedStore13(f, c, i) {
-  var a = new List(2);
-  var d = f ? a : c;
-  d[0] = 1; // *[C]
-  a[i] = 2; // X[*]
-  return d[0];
-}
-
-testIndexedAliasedStore14(f, c, i) {
-  var a = new List(2);
-  var d = f ? a : c;
-  d[i] = 1; // *[*]
-  a[0] = 2; // X[C]
-  return d[i];
-}
-
-testIndexedAliasedStore15(f, c, i) {
-  var a = new List(2);
-  var d = f ? a : c;
-  d[i] = 1; // *[*]
-  a[i] = 2; // X[*]
-  return d[i];
-}
-
-testIndexedAliasedStores() {
-  var arr = new List(2);
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(2, testIndexedAliasedStore1(0));
-    Expect.equals(1, testIndexedAliasedStore1(1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore2(false, arr));
-    Expect.equals(2, testIndexedAliasedStore2(true, arr));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore3(false, arr, 0));
-    Expect.equals(1, testIndexedAliasedStore3(false, arr, 1));
-    Expect.equals(2, testIndexedAliasedStore3(true, arr, 0));
-    Expect.equals(1, testIndexedAliasedStore3(true, arr, 1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(2, testIndexedAliasedStore4(0));
-    Expect.equals(1, testIndexedAliasedStore4(1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(2, testIndexedAliasedStore5(0, 0));
-    Expect.equals(1, testIndexedAliasedStore5(0, 1));
-    Expect.equals(1, testIndexedAliasedStore5(1, 0));
-    Expect.equals(2, testIndexedAliasedStore5(1, 1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore6(0, false, arr));
-    Expect.equals(2, testIndexedAliasedStore6(0, true, arr));
-    Expect.equals(1, testIndexedAliasedStore6(1, false, arr));
-    Expect.equals(1, testIndexedAliasedStore6(1, true, arr));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore7(0, false, arr));
-    Expect.equals(2, testIndexedAliasedStore7(0, true, arr));
-    Expect.equals(1, testIndexedAliasedStore7(1, false, arr));
-    Expect.equals(2, testIndexedAliasedStore7(1, true, arr));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(2, testIndexedAliasedStore8(arr, 0));
-    Expect.equals(1, testIndexedAliasedStore8(arr, 1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(2, testIndexedAliasedStore9(arr, false));
-    Expect.equals(1, testIndexedAliasedStore9(arr, true));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(2, testIndexedAliasedStore10(arr, 0));
-    Expect.equals(1, testIndexedAliasedStore10(arr, 1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(2, testIndexedAliasedStore11(arr, 0, 0));
-    Expect.equals(1, testIndexedAliasedStore11(arr, 0, 1));
-    Expect.equals(1, testIndexedAliasedStore11(arr, 1, 0));
-    Expect.equals(2, testIndexedAliasedStore11(arr, 1, 1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore12(false, arr));
-    Expect.equals(2, testIndexedAliasedStore12(true, arr));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore13(false, arr, 0));
-    Expect.equals(1, testIndexedAliasedStore13(false, arr, 1));
-    Expect.equals(2, testIndexedAliasedStore13(true, arr, 0));
-    Expect.equals(1, testIndexedAliasedStore13(true, arr, 1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore14(false, arr, 0));
-    Expect.equals(1, testIndexedAliasedStore14(false, arr, 1));
-    Expect.equals(2, testIndexedAliasedStore14(true, arr, 0));
-    Expect.equals(1, testIndexedAliasedStore14(true, arr, 1));
-  }
-
-  for (var i = 0; i < 50; i++) {
-    Expect.equals(1, testIndexedAliasedStore15(false, arr, 0));
-    Expect.equals(1, testIndexedAliasedStore15(false, arr, 1));
-    Expect.equals(2, testIndexedAliasedStore15(true, arr, 0));
-    Expect.equals(2, testIndexedAliasedStore15(true, arr, 1));
-  }
-}
-
-var indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
-
-class Z {
-  var x = 42;
-}
-
-var global_array = new List<Z>(1);
-
-side_effect() {
-  global_array[0].x++;
-}
-
-testAliasingStoreIndexed(array) {
-  var z = new Z();
-  array[0] = z;
-  side_effect();
-  return z.x;
-}
-
-class ZZ {
-  var f;
-}
-
-var zz, f0 = 42;
-
-testAliasesRefinement() {
-  zz = new ZZ();
-  var b = zz;
-  if (b.f == null) {
-    b.f = f0;
-  }
-  return b.f;
-}
-
-testViewAliasing1() {
-  final f64 = new Float64List(1);
-  final f32 = new Float32List.view(f64.buffer);
-  f64[0] = 1.0; // Should not be forwarded.
-  f32[1] = 2.0; // upper 32bits for 2.0f and 2.0 are the same
-  return f64[0];
-}
-
-testViewAliasing2() {
-  final f64 = new Float64List(2);
-  final f64v = new Float64List.view(f64.buffer, Float64List.BYTES_PER_ELEMENT);
-  f64[1] = 1.0; // Should not be forwarded.
-  f64v[0] = 2.0;
-  return f64[1];
-}
-
-testViewAliasing3() {
-  final u8 = new Uint8List(Float64List.BYTES_PER_ELEMENT * 2);
-  final f64 = new Float64List.view(u8.buffer, Float64List.BYTES_PER_ELEMENT);
-  f64[0] = 1.0; // Should not be forwarded.
-  u8[15] = 0x40;
-  u8[14] = 0x00;
-  return f64[0];
-}
-
-testViewAliasing4() {
-  final u8 = new Uint8List(Float64List.BYTES_PER_ELEMENT * 2);
-  final f64 = new Float64List.view(u8.buffer, Float64List.BYTES_PER_ELEMENT);
-  f64[0] = 2.0; // Not aliased: should be forwarded.
-  u8[0] = 0x40;
-  u8[1] = 0x00;
-  return f64[0];
-}
-
-main() {
-  final fixed = new List(10);
-  final growable = [];
-  testImmutableVMFields(fixed, true);
-  testImmutableVMFields(growable, false);
-  testImmutableVMFields(growable, false);
-
-  final f64List = new Float64List(2);
-  testPhiRepresentation(true, f64List);
-  testPhiRepresentation(false, f64List);
-
-  final obj = new X(new X(new X(null)));
-
-  final cs = new C(0, new C(1, new C(2, null)));
-
-  for (var i = 0; i < 20; i++) {
-    Expect.listEquals([0x02010000, 0x03020100], foo(new A(0, 0)));
-    Expect.listEquals([0x02010000, 0x03020100], bar(new A(0, 0), false));
-    Expect.listEquals([0x04020000, 0x03020100], bar(new A(0, 0), true));
-    testImmutableVMFields(fixed, true);
-    testPhiRepresentation(true, f64List);
-    testPhiForwarding(obj);
-    testPhiForwarding2(obj);
-    testPhiForwarding3();
-    testPhiForwarding4();
-    Expect.equals(4, testPhiForwarding5(cs));
-    testEqualPhisElimination();
-    Expect.equals(f0, testAliasesRefinement());
-  }
-
-  Expect.equals(1, testImmutableVMFields([], false));
-  Expect.equals(2, testImmutableVMFields([1], false));
-  Expect.equals(2, testImmutableVMFields([1, 2], false));
-  Expect.equals(3, testImmutableVMFields([1, 2, 3], false));
-
-  final u32List = new Uint32List(3);
-  u32List[0] = 0;
-  u32List[1] = 0x3FFFFFFF;
-  u32List[2] = 0x7FFFFFFF;
-
-  for (var i = 0; i < 20; i++) {
-    testPhiConvertions(true, u32List);
-    testPhiConvertions(false, u32List);
-  }
-
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(0.0, testPhiMultipleRepresentations(true, f64List));
-    Expect.equals(0, testPhiMultipleRepresentations(false, const [1, 2]));
-  }
-
-  final escape = new List(1);
-  for (var i = 0; i < 20; i++) {
-    fakeAliasing(escape);
-  }
-
-  final array = new List(3);
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(3, testIndexedNoAlias(array));
-  }
-
-  testIndexedAliasedStores();
-
-  var test_array = new List(1);
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(43, testAliasingStoreIndexed(global_array));
-  }
-
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(2.0, testViewAliasing1());
-    Expect.equals(2.0, testViewAliasing2());
-    Expect.equals(2.0, testViewAliasing3());
-    Expect.equals(2.0, testViewAliasing4());
-  }
-}
diff --git a/tests/language/vm/load_to_load_unaligned_forwarding_vm_test.dart b/tests/language/vm/load_to_load_unaligned_forwarding_vm_test.dart
deleted file mode 100644
index e972647..0000000
--- a/tests/language/vm/load_to_load_unaligned_forwarding_vm_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-// Test correctness of side effects tracking used by load to load forwarding.
-// Should be merged into load_to_load_forwarding once Issue 22151 is fixed.
-
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-import "dart:typed_data";
-
-testViewAliasing5() {
-  final f32 = new Float32List(2);
-  final raw = f32.buffer.asByteData();
-  f32[0] = 1.5; // Aliased by unaligned write of the same size.
-  raw.setInt32(1, 0x00400000, Endianness.LITTLE_ENDIAN);
-  return f32[0];
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(2.0, testViewAliasing5());
-  }
-}
diff --git a/tests/language/vm/math_vm_test.dart b/tests/language/vm/math_vm_test.dart
deleted file mode 100644
index 6d942a5..0000000
--- a/tests/language/vm/math_vm_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// 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.
-// Tests that the VM does not crash on weird corner cases of class Math.
-// VMOptions=--optimization_counter_threshold=100 --no-background_compilation
-
-library math_vm_test;
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-class FakeNumber {
-  const FakeNumber();
-  void toDouble() {}
-}
-
-class MathTest {
-  static bool testParseInt(x) {
-    try {
-      int.parse(x); // Expects string.
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-
-  static bool testSqrt(x) {
-    try {
-      sqrt(x); // Expects number.
-      return true;
-    } catch (e) {
-      return false;
-    }
-  }
-
-  static void testMain() {
-    Expect.equals(false, testParseInt(5));
-    Expect.equals(false, testSqrt(const FakeNumber()));
-  }
-}
-
-testDoublePow() {
-  Expect.equals((1 << 32).toDouble(), pow(2.0, 32));
-}
-
-testSinCos(a) {
-  double sVal = sin(a);
-  double cVal = cos(a);
-  return sVal + cVal;
-}
-
-main() {
-  const double value = 1.54;
-  final firstRes = testSinCos(value);
-  for (int i = 0; i < 200; i++) {
-    MathTest.testMain();
-    testDoublePow();
-    testSinCos(value);
-  }
-  Expect.equals(firstRes, testSinCos(value));
-}
diff --git a/tests/language/vm/no_such_args_error_message_vm_test.dart b/tests/language/vm/no_such_args_error_message_vm_test.dart
deleted file mode 100644
index 3402472..0000000
--- a/tests/language/vm/no_such_args_error_message_vm_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test error message with misusing Functions and Closures: wrong args
-// should result in a message that reports the missing method.
-
-call_with_bar(x) => x("bar");
-
-testClosureMessage() {
-  try {
-    call_with_bar(() {});
-  } catch (e) {
-    Expect.isTrue(e.toString().contains(
-        "Tried calling: testClosureMessage.<anonymous closure>(\"bar\")"));
-  }
-}
-
-noargs() {}
-
-testFunctionMessage() {
-  try {
-    call_with_bar(noargs);
-  } catch (e) {
-    Expect.isTrue(e.toString().contains("Tried calling: noargs(\"bar\")"));
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) testClosureMessage();
-  for (var i = 0; i < 20; i++) testFunctionMessage();
-}
diff --git a/tests/language/vm/no_such_method_error_message_callable_vm_test.dart b/tests/language/vm/no_such_method_error_message_callable_vm_test.dart
deleted file mode 100644
index a7d5ed9..0000000
--- a/tests/language/vm/no_such_method_error_message_callable_vm_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test error message with noSuchMethodError: non-existent names
-// should result in a message that reports the missing method.
-
-class Callable {
-  call() {}
-}
-
-call_bar(x) => x.bar();
-call_with_bar(x) => x("bar");
-
-testMessageProp() {
-  try {
-    call_bar(new Callable());
-  } catch (e) {
-    Expect.isTrue(e.toString().contains("has no instance method 'bar'"));
-  }
-}
-
-testMessageCall() {
-  try {
-    call_with_bar(new Callable());
-  } catch (e) {
-    final noMatchingArgs =
-        "has no instance method 'call' with matching arguments";
-    Expect.isTrue(e.toString().contains(noMatchingArgs));
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) testMessageProp();
-  for (var i = 0; i < 20; i++) testMessageCall();
-}
diff --git a/tests/language/vm/no_such_method_error_message_vm_test.dart b/tests/language/vm/no_such_method_error_message_vm_test.dart
deleted file mode 100644
index 575a966..0000000
--- a/tests/language/vm/no_such_method_error_message_vm_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test error message with noSuchMethodError: non-existent names
-// should result in a message that reports the missing method.
-
-call_bar(x) => x.bar();
-
-testMessage() {
-  try {
-    call_bar(5);
-  } catch (e) {
-    Expect.isTrue(e.toString().contains("has no instance method 'bar'"));
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) testMessage();
-}
diff --git a/tests/language/vm/null_hashcode_optimized_vm_test.dart b/tests/language/vm/null_hashcode_optimized_vm_test.dart
deleted file mode 100644
index d7263a7..0000000
--- a/tests/language/vm/null_hashcode_optimized_vm_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test that optimized Object.hashCode works for the null receiver.
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    foo(null);
-  }
-}
-
-foo(a) => a.hashCode;
diff --git a/tests/language/vm/optimization_test.dart b/tests/language/vm/optimization_test.dart
deleted file mode 100644
index 3205425..0000000
--- a/tests/language/vm/optimization_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2011, 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.
-// Test various optimizations and deoptimizations of optimizing compiler..
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-addThem(a, b) {
-  return a + b;
-}
-
-isItInt(a) {
-  return a is int;
-}
-
-doNeg(a) {
-  return -a;
-}
-
-doNeg2(a) {
-  return -a;
-}
-
-doNot(a) {
-  return !a;
-}
-
-doBitNot(a) {
-  return ~a;
-}
-
-doStore1(a, v) {
-  a[1] = v;
-}
-
-doStore2(a, v) {
-  a[2] = v;
-}
-
-class StringPlus {
-  const StringPlus(String this._val);
-  operator +(right) => new StringPlus("${_val}${right}");
-  toString() => _val;
-
-  final String _val;
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    Expect.stringEquals("HI 5", addThem(const StringPlus("HI "), 5).toString());
-    Expect.equals(true, isItInt(5));
-  }
-  Expect.equals(8, addThem(3, 5));
-  for (int i = 0; i < 20; i++) {
-    Expect.stringEquals("HI 5", addThem(const StringPlus("HI "), 5).toString());
-    Expect.equals(8, addThem(3, 5));
-  }
-  for (int i = -10; i < 10; i++) {
-    var r = doNeg(i);
-    var p = doNeg(r);
-    Expect.equals(i, p);
-  }
-  var maxSmi = (1 << 30) - 1;
-  Expect.equals(maxSmi, doNeg(doNeg(maxSmi)));
-  // Deoptimize because of overflow.
-  var minInt = -(1 << 30);
-  Expect.equals(minInt, doNeg(doNeg(minInt)));
-
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(false, doNot(true));
-    Expect.equals(true, doNot(doNot(true)));
-  }
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(-57, doBitNot(56));
-    Expect.equals(55, doBitNot(-56));
-  }
-
-  for (int i = 0; i < 20; i++) {
-    Expect.equals(-2.2, doNeg2(2.2));
-  }
-  // Deoptimize.
-  Expect.equals(-5, doNeg2(5));
-
-  var fixed = new List(10);
-  var growable = [1, 2, 3, 4, 5];
-
-  for (int i = 0; i < 20; i++) {
-    doStore1(fixed, 7);
-    Expect.equals(7, fixed[1]);
-    doStore2(growable, 12);
-    Expect.equals(12, growable[2]);
-  }
-
-  // Deoptimize.
-  doStore1(growable, 8);
-  Expect.equals(8, growable[1]);
-  doStore2(fixed, 101);
-  Expect.equals(101, fixed[2]);
-}
diff --git a/tests/language/vm/optimized_await_regress_test.dart b/tests/language/vm/optimized_await_regress_test.dart
deleted file mode 100644
index 68acad7..0000000
--- a/tests/language/vm/optimized_await_regress_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// This tests that captured parameters (by the async-closure) are
-// correctly treated in try-catch generated in the async function.
-// They must be skipped when generating sync-code in the optimized
-// try-block.
-
-import 'package:expect/expect.dart';
-
-import 'dart:async';
-
-check(value) {
-  try {} finally {
-    return value;
-  }
-}
-
-fail() {
-  try {
-    Expect.isTrue(false);
-  } finally {}
-}
-
-foo(i) async {
-  var k = await 77;
-  var a = "abc${k}";
-  if (a != "abc77") fail();
-  return k;
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    foo(i).then((value) => Expect.equals(77, value));
-  }
-}
diff --git a/tests/language/vm/optimized_check_class_test.dart b/tests/language/vm/optimized_check_class_test.dart
deleted file mode 100644
index 76cced1..0000000
--- a/tests/language/vm/optimized_check_class_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2015, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test dense class-id checks. Regression test for issue 22104.
-
-class A {
-  toString() => "an A";
-}
-
-class A1 extends A {}
-
-class A2 extends A {}
-
-class A3 extends A {}
-
-class A4 extends A {
-  toString() => "ha";
-}
-
-class A5 extends A {}
-
-class A6 extends A {}
-
-class A7 extends A {}
-
-class A8 extends A {}
-
-class A9 extends A {}
-
-class A10 extends A {}
-
-class A11 extends A {}
-
-class A12 extends A {}
-
-class A13 extends A {}
-
-class A14 extends A {}
-
-class A15 extends A {}
-
-class A16 extends A {}
-
-class A17 extends A {}
-
-class A18 extends A {}
-
-class A19 extends A {}
-
-class A20 extends A {}
-
-class A21 extends A {}
-
-class A22 extends A {}
-
-class A23 extends A {}
-
-class A24 extends A {}
-
-class A25 extends A {}
-
-class A26 extends A {}
-
-class A27 extends A {}
-
-class A28 extends A {}
-
-class A29 extends A {}
-
-class A30 extends A {}
-
-class A31 extends A {}
-
-class A32 extends A {}
-
-class A33 extends A {}
-
-class A34 extends A {}
-
-class A35 extends A {}
-
-class A36 extends A {}
-
-test_class_check(e) => e.toString();
-
-main() {
-  var list = [new A1(), new A2(), new A11(), new A36()];
-  for (var i = 0; i < list.length; i++) {
-    test_class_check(list[i]);
-  }
-  for (var i = 0; i < 100; i++) {
-    Expect.equals("an A", test_class_check(new A1()));
-  }
-  Expect.equals("ha", test_class_check(new A4()));
-}
diff --git a/tests/language/vm/optimized_guarded_field_isolates_test.dart b/tests/language/vm/optimized_guarded_field_isolates_test.dart
deleted file mode 100644
index 41764b3..0000000
--- a/tests/language/vm/optimized_guarded_field_isolates_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2013, 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=--optimization_counter_threshold=100 --no-background_compilation
-
-// Test field type tracking and field list-length tracking in the presence of
-// multiple isolates.
-
-import "dart:isolate";
-import "dart:async";
-import "package:expect/expect.dart";
-import 'package:async_helper/async_helper.dart';
-
-class A {
-  A(this.a);
-  var a;
-}
-
-class B extends A {
-  B(a, this.b) : super(a) {}
-
-  var b;
-}
-
-f1(SendPort send_port) {
-  send_port.send(new B("foo", "bar"));
-}
-
-test_b(B obj) => obj.a + obj.b;
-
-test_field_type() {
-  var receive_port = new ReceivePort();
-  asyncStart();
-  Future<Isolate> isolate = Isolate.spawn(f1, receive_port.sendPort);
-  B b = new B(1, 2);
-  for (var i = 0; i < 200; i++) {
-    test_b(b);
-  }
-  Expect.equals(3, test_b(b));
-  Future<B> item = receive_port.first;
-  item.then((B value) {
-    Expect.equals("foobar", test_b(value));
-    receive_port.close();
-    asyncEnd();
-  });
-}
-
-class C {
-  C(this.list);
-  final List list;
-}
-
-f2(SendPort send_port) {
-  send_port.send(new C(new List(1)));
-}
-
-test_c(C obj) => obj.list[9999];
-
-test_list_length() {
-  var receive_port = new ReceivePort();
-  asyncStart();
-  Future<Isolate> isolate = Isolate.spawn(f2, receive_port.sendPort);
-  C c = new C(new List(10000));
-  for (var i = 0; i < 200; i++) {
-    test_c(c);
-  }
-  Expect.equals(null, test_c(c));
-  Future<C> item = receive_port.first;
-  item.then((C value) {
-    Expect.throws(() => test_c(value), (e) => e is RangeError);
-    receive_port.close();
-    asyncEnd();
-  });
-}
-
-main() {
-  test_field_type();
-  test_list_length();
-}
diff --git a/tests/language/vm/optimized_guarded_field_test.dart b/tests/language/vm/optimized_guarded_field_test.dart
deleted file mode 100644
index dc25a92..0000000
--- a/tests/language/vm/optimized_guarded_field_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test correct handling of phis with only environment uses that were inserted
-// by store to load forwarding.
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-import "package:expect/expect.dart";
-import "dart:typed_data";
-
-class A {
-  var foo;
-}
-
-class B {
-  get foo => null;
-}
-
-test(obj) => obj.foo == null ? "null" : "other";
-
-class C {
-  C(this.x, this.y);
-  final x;
-  final y;
-}
-
-test_deopt(a, b) {
-  var c = new C(a, b);
-  return c.x + c.y;
-}
-
-create_error(x) {
-  return x as int;
-}
-
-check_stacktrace(e) {
-  var s = e.stackTrace;
-  if (identical(s, null)) throw "FAIL";
-  // s should never be null.
-  return "OK";
-}
-
-test_stacktrace() {
-  try {
-    create_error("bar");
-  } catch (e) {
-    Expect.equals("OK", check_stacktrace(e));
-    for (var i = 0; i < 20; i++) {
-      check_stacktrace(e);
-    }
-    Expect.equals("OK", check_stacktrace(e));
-  }
-}
-
-class D {
-  final List f;
-  final Uint8List g;
-  D(this.f, this.g);
-  D.named(this.f, this.g);
-}
-
-test_guarded_length() {
-  var a = new D(new List(5), new Uint8List(5));
-  var b = new D.named(new List(5), new Uint8List(5));
-  Expect.equals(5, a.f.length);
-  Expect.equals(5, b.f.length);
-  Expect.equals(5, a.g.length);
-  Expect.equals(5, b.g.length);
-}
-
-main() {
-  var a = new A();
-  var b = new B();
-  // Trigger optimization of test with a polymorphic load.
-  // The guarded type of foo is null.
-  test(a);
-  test(b);
-  for (var i = 0; i < 20; ++i) test(a);
-  Expect.equals("null", test(a));
-  Expect.equals("null", test(b));
-
-  // Store a non-null object into foo to trigger deoptimization of test.
-  a.foo = 123;
-  Expect.equals("other", test(a));
-  Expect.equals("null", test(b));
-
-  // Test guarded fields with allocation sinking and deoptimization.
-  Expect.equals(43, test_deopt(42, 1));
-  for (var i = 0; i < 20; i++) {
-    test_deopt(42, 1);
-  }
-  Expect.equals(43, test_deopt(42, 1));
-  Expect.equals("aaabbb", test_deopt("aaa", "bbb"));
-
-  // Regression test for fields initialized in native code (Error._stackTrace).
-  test_stacktrace();
-
-  // Test guarded list length.
-  for (var i = 0; i < 20; i++) test_guarded_length();
-}
diff --git a/tests/language/vm/optimized_identical_test.dart b/tests/language/vm/optimized_identical_test.dart
deleted file mode 100644
index 5e10278..0000000
--- a/tests/language/vm/optimized_identical_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test various optimizations and deoptimizations of optimizing compiler..
-// VMOptions=--optimization-counter-threshold=10 --no-constant-propagation --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test canonicalization of identical with double input.
-// Constant propagation is disabled so that canonicalization is run
-// one time less than usual.
-
-test(a) {
-  var dbl = a + 1.0;
-  if (!identical(dbl, true)) {
-    return "ok";
-  }
-  throw "fail";
-}
-
-Object Y = 1.0;
-
-test_object_type(x) => identical(x, Y);
-
-main() {
-  for (var i = 0; i < 20; i++) test(0);
-  Expect.equals("ok", test(0));
-
-  var x = 0.0 + 1.0;
-  for (var i = 0; i < 20; i++) test_object_type(x);
-  Expect.equals(true, test_object_type(x));
-}
diff --git a/tests/language/vm/optimized_list_constructor_test.dart b/tests/language/vm/optimized_list_constructor_test.dart
deleted file mode 100644
index 7c4b4bf..0000000
--- a/tests/language/vm/optimized_list_constructor_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// 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.
-// Test various optimizations and deoptimizations of optimizing compiler..
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test correct throwing of ArgumentError in optimized code.
-
-test() {
-  try {
-    var r = new List<int>(-1);
-    Expect.isTrue(false); // Unreachable.
-  } on RangeError {
-    return true;
-  }
-  Expect.isTrue(false); // Unreachable.
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    Expect.isTrue(test());
-  }
-}
diff --git a/tests/language/vm/optimized_polymorphic_list_access_test.dart b/tests/language/vm/optimized_polymorphic_list_access_test.dart
deleted file mode 100644
index df67659..0000000
--- a/tests/language/vm/optimized_polymorphic_list_access_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import "package:expect/expect.dart";
-
-// Test correct polymorphic inlining of recognized methods like list access.
-
-test(arr) {
-  var r = 0;
-  for (var i = 0; i < 1; ++i) {
-    r += arr[0];
-  }
-  return r;
-}
-
-main() {
-  var a = new List<int>(1);
-  a[0] = 0;
-  var b = <int>[0];
-  Expect.equals(0, test(a));
-  Expect.equals(0, test(b));
-  for (var i = 0; i < 20; ++i) test(a);
-  Expect.equals(0, test(a));
-  Expect.equals(0, test(b));
-}
diff --git a/tests/language/vm/optimized_shl_test.dart b/tests/language/vm/optimized_shl_test.dart
deleted file mode 100644
index 9c1709b..0000000
--- a/tests/language/vm/optimized_shl_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test truncating left-shift that can deoptimize.
-// Regression test for issue 19330.
-
-test_shl(w, x) {
-  x += 1;
-  return w << x & 0xff;
-}
-
-main() {
-  for (var i = 0; i < 20; i++) test_shl(i, i % 10);
-  Expect.equals(4, test_shl(1, 1));
-}
diff --git a/tests/language/vm/optimized_stacktrace_test.dart b/tests/language/vm/optimized_stacktrace_test.dart
deleted file mode 100644
index 7683a01..0000000
--- a/tests/language/vm/optimized_stacktrace_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2015, 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=--stacktrace-every=3 --optimization-counter-threshold=10 --enable-inlining-annotations --no-background-compilation
-
-// Test generating stacktraces with inlining and deferred code.
-// Regression test for issue dartbug.com/22331
-
-class A {
-  final N;
-  final inc;
-  var next;
-  A(this.N, this.inc) {
-    next = this;
-  }
-}
-
-foo(o, value) {
-  for (var i = 0; i < o.N; i += o.inc) {
-    if (value < i) {
-      throw "";
-    }
-    o = o.next;
-  }
-  return value;
-}
-
-const NeverInline = 'NeverInline';
-
-@NeverInline
-baz(x, y, z) => z;
-
-bar(o) {
-  var value = 0x100000000 + o.inc;
-  baz(0, 0, foo(o, value));
-}
-
-main() {
-  var o = new A(10, 1);
-  for (var i = 0; i < 100; i++) bar(o);
-  bar(new A(100000, 1));
-}
diff --git a/tests/language/vm/optimized_testsmi_test.dart b/tests/language/vm/optimized_testsmi_test.dart
deleted file mode 100644
index 0643832..0000000
--- a/tests/language/vm/optimized_testsmi_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2013, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-// Test branch optimization for TestSmiInstr
-
-import "package:expect/expect.dart";
-
-test1(a, bool b) {
-  if (b) {
-    a++;
-  } else {
-    a += 2;
-  }
-  if (a & 1 == 0) {
-    return "even";
-  }
-  return "odd";
-}
-
-test2(a, bool b) {
-  if (b) {
-    a++;
-  } else {
-    a += 2;
-  }
-  if (a & 1 == 1) {
-    return "odd";
-  }
-  return "even";
-}
-
-test3(a, bool b) {
-  return test1(0, b);
-}
-
-test4(a, bool b) {
-  return test2(0, b);
-}
-
-run(test) {
-  Expect.equals("odd", test(0, true));
-  Expect.equals("even", test(0, false));
-  for (var i = 0; i < 20; i++) test(0, false);
-  Expect.equals("odd", test(0, true));
-  Expect.equals("even", test(0, false));
-}
-
-main() {
-  run(test1);
-  run(test2);
-  run(test3);
-  run(test4);
-}
diff --git a/tests/language/vm/optimized_try_catch_cha_test.dart b/tests/language/vm/optimized_try_catch_cha_test.dart
deleted file mode 100644
index f71fac1..0000000
--- a/tests/language/vm/optimized_try_catch_cha_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// 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.
-// VMOptions=--optimization_counter_threshold=100 --no-use-osr --no-background_compilation
-
-// Test CHA-based optimizations in presence of try-catch.
-
-import "package:expect/expect.dart";
-
-bar(i) {
-  if (i == 11) throw 123;
-}
-
-class A {
-  var f = 42;
-
-  foo(i) {
-    do {
-      try {
-        bar(i);
-      } catch (e, s) {
-        Expect.equals(123, e);
-      }
-    } while (i < 0);
-    return f;
-  }
-}
-
-class B extends A {}
-
-main() {
-  var result;
-  for (var i = 0; i < 200; i++) {
-    try {
-      result = new B().foo(i);
-    } catch (e) {}
-  }
-  Expect.equals(42, result);
-}
diff --git a/tests/language/vm/optimized_unique_selector_test.dart b/tests/language/vm/optimized_unique_selector_test.dart
deleted file mode 100644
index d9725dc..0000000
--- a/tests/language/vm/optimized_unique_selector_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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";
-
-class A {
-  _uniqueSelector() {}
-  final uniqueField = 10;
-}
-
-test1(obj) {
-  var res = 0;
-  for (var i = 0; i < 2; i++) {
-    obj._uniqueSelector();
-    res += obj.uniqueField; // This load must not be hoisted out of the loop.
-  }
-  return res;
-}
-
-test2(obj) {
-  final objAlias = obj;
-  closure() => objAlias;
-  var res = 0;
-  for (var i = 0; i < 2; i++) {
-    obj._uniqueSelector();
-    res +=
-        objAlias.uniqueField; // This load must not be hoisted out of the loop.
-  }
-  return res;
-}
-
-var foofoo_ = test1;
-
-main() {
-  Expect.equals(20, foofoo_(new A()));
-  Expect.throws(() => foofoo_(0));
-
-  foofoo_ = test2;
-
-  Expect.equals(20, foofoo_(new A()));
-  Expect.throws(() => foofoo_(0));
-}
diff --git a/tests/language/vm/precompiled_static_initializer_test.dart b/tests/language/vm/precompiled_static_initializer_test.dart
deleted file mode 100644
index 195e07d..0000000
--- a/tests/language/vm/precompiled_static_initializer_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test optimizations with static fields with precompilation.
-// VMOptions=--inlining-hotness=0
-
-import 'package:expect/expect.dart';
-
-init() => 123;
-
-final a = init();
-
-main() {
-  var s = 0;
-  for (var i = 0; i < 10; i++) {
-    s += a;
-  }
-  Expect.equals(10 * 123, s);
-}
diff --git a/tests/language/vm/reflect_core_vm_test.dart b/tests/language/vm/reflect_core_vm_test.dart
deleted file mode 100644
index 6574d85..0000000
--- a/tests/language/vm/reflect_core_vm_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test reflection of private functions in core classes.
-
-import "package:expect/expect.dart";
-import "dart:mirrors";
-
-main() {
-  var s = "string";
-  var im = reflect(s);
-  Expect.throws(() => im.invoke(const Symbol("_setAt"), [0, 65]),
-      (e) => e is NoSuchMethodError);
-}
diff --git a/tests/language/vm/regress_14903_test.dart b/tests/language/vm/regress_14903_test.dart
deleted file mode 100644
index 45b2cacc..0000000
--- a/tests/language/vm/regress_14903_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10  --no-background-compilation
-
-import "package:expect/expect.dart";
-
-// Test identical comparisons in optimized code. Registers must be preserved
-// when calling the runtime.
-
-cmp(a, b, c) {
-  var v = c + 1;
-  var w = v + 1;
-  var x = w + 1;
-  var y = x + 1;
-  var z = y + 1;
-  if (identical(a, b)) {
-    c++;
-  }
-  return c + v + w + x + y + z;
-}
-
-main() {
-  var big = 100000000000000000000000000000000000;
-  var before = cmp(big, big, 0);
-  Expect.equals(16, before);
-  for (var i = 0; i < 20; i++) cmp(big, big + 1, 0);
-  Expect.equals(before, cmp(big, big, 0));
-}
diff --git a/tests/language/vm/regress_16873_test.dart b/tests/language/vm/regress_16873_test.dart
deleted file mode 100644
index 12bc1ef..0000000
--- a/tests/language/vm/regress_16873_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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=--new_gen_semi_max_size=1 --no_inline_alloc
-
-// Regression test for slow-path allocation in the allocation stub.
-
-library map_test;
-
-import 'dart:collection';
-
-void testCollection(var collection, n) {
-  for (int i = 0; i < n; i++) {
-    if (i % 1000 == 0) print(i);
-    collection.add(i);
-  }
-}
-
-main() {
-  const int N = 100000;
-  testCollection(new LinkedHashSet(), N);
-}
diff --git a/tests/language/vm/regress_21245_test.dart b/tests/language/vm/regress_21245_test.dart
deleted file mode 100644
index 7a8001e..0000000
--- a/tests/language/vm/regress_21245_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-use-osr --no-background_compilation
-
-test(a) {
-  var e;
-  for (var i = 0; i < a.length; i++) {
-    e = a[i];
-    for (var j = 0; j < i; j++) {
-      e = a[j];
-    }
-  }
-  return e;
-}
-
-main() {
-  var a = [0, 1, 2, 3, 4, 5];
-  for (var i = 0; i < 20; i++) {
-    test(a);
-  }
-}
diff --git a/tests/language/vm/regress_22480_test.dart b/tests/language/vm/regress_22480_test.dart
deleted file mode 100644
index 3dfc574..0000000
--- a/tests/language/vm/regress_22480_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'package:expect/expect.dart';
-
-test(j) {
-  var result = true;
-  j++;
-  for (var i = 0; i < 100; i++) {
-    result = (i < 50 || j < (1 << 32)) && result;
-  }
-  return result;
-}
-
-main() {
-  Expect.isTrue(test(30));
-}
diff --git a/tests/language/vm/regress_22541_vm_test.dart b/tests/language/vm/regress_22541_vm_test.dart
deleted file mode 100644
index 0d121ac..0000000
--- a/tests/language/vm/regress_22541_vm_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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.
-// Test range inference for multiplication of two negative values.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-import 'package:expect/expect.dart';
-
-test(a) {
-  var x = a ? -1 : -2;
-  if (0 < (x * x)) {
-    return "ok";
-  } else {
-    return "fail";
-  }
-}
-
-main() {
-  for (var j = 0; j < 20; j++) {
-    Expect.equals("ok", test(false));
-  }
-}
diff --git a/tests/language/vm/regress_22621_vm_test.dart b/tests/language/vm/regress_22621_vm_test.dart
deleted file mode 100644
index f8e39a7..0000000
--- a/tests/language/vm/regress_22621_vm_test.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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.
-// Test that BoxAllocationSlowPath for Mint emits stackmap in unoptimized code.
-// VMOptions=--gc_at_instance_allocation=_Mint --inline_alloc=false
-
-main() {
-  var re = new RegExp(r"IsolateStubs (.*)");
-  return re.firstMatch("oooo");
-}
diff --git a/tests/language/vm/regress_22693_vm_test.dart b/tests/language/vm/regress_22693_vm_test.dart
deleted file mode 100644
index 6df2a46..0000000
--- a/tests/language/vm/regress_22693_vm_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2015, 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.
-// Test location summary for Uint32 multiplication.
-// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
-
-const MASK = 0xFFFFFFFF;
-
-uint32Mul(x, y) => (x * y) & MASK;
-
-main() {
-  for (var i = 0; i < 20; i++) uint32Mul((1 << 63) - 1, 1);
-}
diff --git a/tests/language/vm/regress_23117_vm_test.dart b/tests/language/vm/regress_23117_vm_test.dart
deleted file mode 100644
index a8abc2b..0000000
--- a/tests/language/vm/regress_23117_vm_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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.
-// Test location summary for Uint32 multiplication.
-// VMOptions=--optimization-counter-threshold=5 --no-background-compilation
-
-import 'package:expect/expect.dart';
-
-mintLeftShift(x, y) => x << y;
-mintRightShift(x, y) => x >> y;
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    var x = 1 + (1 << (i + 32));
-    Expect.equals(x, mintLeftShift(x, 0));
-    Expect.equals(x, mintRightShift(x, 0));
-    Expect.equals(2 * x, mintLeftShift(x, 1));
-    Expect.equals(x ~/ 2, mintRightShift(x, 1));
-    Expect.equals(x, mintRightShift(mintLeftShift(x, i), i));
-  }
-}
diff --git a/tests/language/vm/regress_23238_test.dart b/tests/language/vm/regress_23238_test.dart
deleted file mode 100644
index 88250b2..0000000
--- a/tests/language/vm/regress_23238_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2015, 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";
-
-void main() {
-  int x = 327680;
-  int r = 65536;
-  for (var i = 0; i < 200; i++) {
-    Expect.equals(r, x ~/ 5);
-    x *= 10;
-    r *= 10;
-  }
-}
diff --git a/tests/language/vm/regress_24517_test.dart b/tests/language/vm/regress_24517_test.dart
deleted file mode 100644
index 654caf9..0000000
--- a/tests/language/vm/regress_24517_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2015, 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-intrinsify
-
-// Test that math runtime function (non-intrinsified) produce the expected
-// result and don't deviate due to double-rounding when using 80-bit FP ops.
-
-import "dart:math";
-import "package:expect/expect.dart";
-
-main() {
-  var x = 2.028240960366921e+31;
-  Expect.equals(4503599627372443.0, sqrt(x));
-}
diff --git a/tests/language/vm/regress_27201_lib.dart b/tests/language/vm/regress_27201_lib.dart
deleted file mode 100644
index af32a46..0000000
--- a/tests/language/vm/regress_27201_lib.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// 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 import_lib;
-
-final foo = 1;
-var someVar = 3;
-var _privateVar;
-
-int get someGetter => 2;
-
-void set someSetter(int val) {}
-
-int someFunc() => 0;
-
-class SomeClass {}
-
-typedef int Func(Object a);
diff --git a/tests/language/vm/regress_27201_test.dart b/tests/language/vm/regress_27201_test.dart
deleted file mode 100644
index bb106af..0000000
--- a/tests/language/vm/regress_27201_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.
- */
-import "dart:async";
-import "package:expect/expect.dart";
-import "regress_27201_lib.dart" deferred as p;
-import "regress_27201_bad_lib_path.dart" deferred as q;
-
-test_loaded() {
-  try {
-    p.someFunc();
-  } catch (e) {
-    Expect.fail("Should not be here");
-  }
-  try {
-    p.someGetter;
-  } catch (e) {
-    Expect.fail("Should not be here");
-  }
-  try {
-    p.someSetter = 1;
-  } catch (e) {
-    Expect.fail("Should not be here");
-  }
-  try {
-    p.Func;
-  } catch (e) {
-    Expect.fail("Should not be here");
-  }
-  try {
-    Expect.isTrue(p.loadLibrary() is Future);
-  } catch (e) {
-    Expect.fail("Should not be here");
-  }
-}
-
-main() {
-  p.loadLibrary().then((v) {
-    test_loaded();
-  }, onError: (e) {
-    Expect.fail("Should have loaded library!");
-  });
-
-  // Ensure bad library import is handled correctly.
-  q.loadLibrary().then((v) {
-    Expect.fail("Should have failed");
-  }, onError: (e) {
-    Expect.throws(() => q.x);
-  });
-}
diff --git a/tests/language/vm/regress_27671_other.dart b/tests/language/vm/regress_27671_other.dart
deleted file mode 100644
index a180d18..0000000
--- a/tests/language/vm/regress_27671_other.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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.
-
-import 'regress_27671_test.dart';
-
-@AlwaysInline
-void check(f, x) {
-  assert(f(x) && true);
-}
diff --git a/tests/language/vm/regress_27671_test.dart b/tests/language/vm/regress_27671_test.dart
deleted file mode 100644
index fa258da..0000000
--- a/tests/language/vm/regress_27671_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// 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.
-//
-// VMOptions=--enable_asserts --enable-inlining-annotations --optimization-counter-threshold=10 --no-background-compilation
-
-import 'package:expect/expect.dart';
-import 'regress_27671_other.dart';
-
-const AlwaysInline = "AlwaysInline";
-const NeverInline = "NeverInline";
-
-@AlwaysInline
-bounce(x) {
-  for (int i = 0; i < 10; i++) {
-    check(f, x);
-  }
-}
-
-@AlwaysInline
-bool f(y) => y > 0;
-
-main() {
-  for (int i = 0; i < 100; i++) {
-    bounce(1);
-  }
-  try {
-    bounce(-1);
-  } catch (e) {
-    Expect.isTrue(e.toString().contains('f(x) && true'));
-  }
-}
diff --git a/tests/language/vm/regress_28325_test.dart b/tests/language/vm/regress_28325_test.dart
deleted file mode 100644
index 95791ac..0000000
--- a/tests/language/vm/regress_28325_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// 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.
-
-// Test source positions in async errors.
-
-import "package:expect/expect.dart";
-import "dart:io";
-
-main() async {
-  try {
-    await Socket.connect("localhost", 0);
-    Expect.isTrue(false); // Unreachable.
-  } catch (e, s) {
-    Expect.isTrue(e is SocketException);
-    Expect.isTrue(s.toString().contains("regress_28325_test.dart"));
-    print(s);
-    Expect.isTrue(s.toString().contains(":12")); // Line number of "await".
-  }
-}
diff --git a/tests/language/vm/regress_29137_vm_test.dart b/tests/language/vm/regress_29137_vm_test.dart
deleted file mode 100644
index 978483f..0000000
--- a/tests/language/vm/regress_29137_vm_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-//
-// Check that optimizer correctly handles (x << y) & MASK_32 pattern on 32-bit
-// platforms: given the pattern
-//
-//     v1 <- UnboxedIntConverter([tr] mint->uint32, v0)
-//     v2 <- UnboxedIntConverter(uint32->mint, v1)
-//
-// optimizer must *not* replace v2 with v0 because the first conversion is
-// truncating and is erasing the high part of the mint value.
-//
-// VMOptions=--optimization-counter-threshold=5 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-const _MASK_32 = 0xffffffff;
-int _rotl32(int val, int shift) {
-  final mod_shift = shift & 31;
-  return ((val << mod_shift) & _MASK_32) |
-      ((val & _MASK_32) >> (32 - mod_shift));
-}
-
-rot8(v) => _rotl32(v, 8);
-
-main() {
-  // Note: value is selected in such a way that (value << 8) is not a smi - this
-  // triggers emission of BinaryMintOp instructions for shifts.
-  const value = 0xF0F00000;
-  const rotated = 0xF00000F0;
-  Expect.equals(rotated, rot8(value));
-  for (var i = 0; i < 10; i++) {
-    Expect.equals(rotated, rot8(value));
-  }
-}
diff --git a/tests/language/vm/regress_29145_test.dart b/tests/language/vm/regress_29145_test.dart
deleted file mode 100644
index a518a22..0000000
--- a/tests/language/vm/regress_29145_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-// VMOptions=--optimization-counter-threshold=-1 --stacktrace-filter=completeError --stress-async-stacks
-
-// Stress test for async stack traces.
-
-import 'dart:async';
-import "package:expect/expect.dart";
-
-class A {
-  Future<List<int>> read() => new Future.error(123);
-}
-
-Future<A> haha() => new Future.microtask(() => new A());
-
-Future<List<int>> mm() async => (await haha()).read();
-
-foo() async => await mm();
-
-main() async {
-  var x;
-  try {
-    x = await foo();
-  } catch (e) {
-    Expect.equals(123, e);
-    return;
-  }
-  Expect.isTrue(false);
-}
diff --git a/tests/language/vm/regress_licm_test.dart b/tests/language/vm/regress_licm_test.dart
deleted file mode 100644
index de211dd..0000000
--- a/tests/language/vm/regress_licm_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// 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.
-//
-// VMOptions=--enable-inlining-annotations --optimization-counter-threshold=1000 --no-background-compilation
-
-// Regression test for correct LICM and type propagation.
-
-const AlwaysInline = "AlwaysInline";
-const NeverInline = "NeverInline";
-
-class Attribute {
-  final id = 123;
-}
-
-abstract class Name {
-  Name(this.name);
-  final String name;
-  get attr;
-
-  @AlwaysInline
-  int compareTo(other) {
-    int nameCompare = name.compareTo(other.name);
-    if (nameCompare != 0) return nameCompare;
-    if (attr == null) return 0;
-    return attr.id - other.attr.id;
-  }
-}
-
-class AName extends Name {
-  AName() : super("abc");
-  final attr = new Attribute();
-}
-
-class BName extends Name {
-  BName(name) : super(name);
-  get attr => null;
-}
-
-class Member {
-  Member(this.name);
-  var name;
-}
-
-Member find(List<Member> members, Name name) {
-  int low = 0, high = members.length - 1;
-  while (low <= high) {
-    int mid = low + ((high - low) >> 1);
-    Member pivot = members[mid];
-    int comparison = name.compareTo(pivot.name);
-    if (comparison < 0) {
-      high = mid - 1;
-    } else if (comparison > 0) {
-      low = mid + 1;
-    } else {
-      return pivot;
-    }
-  }
-  return null;
-}
-
-main() {
-  var list = [
-    new Member(new AName()),
-    new Member(new BName("a")),
-    new Member(new BName("b")),
-    new Member(new BName("c")),
-    new Member(new BName("d"))
-  ];
-
-  find(list, new AName());
-  find(list, new BName("e"));
-  find(list, new BName("b"));
-  for (var i = 0; i < 1000; ++i) {
-    find(list, new BName("b"));
-    find(list, new BName("e"));
-  }
-}
diff --git a/tests/language/vm/reusable_boxes_test.dart b/tests/language/vm/reusable_boxes_test.dart
deleted file mode 100644
index 5e1a685..0000000
--- a/tests/language/vm/reusable_boxes_test.dart
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test correct handling reusable boxes.
-// VMOptions=--optimization_counter_threshold=100 --no-background_compilation
-
-library reusable_boxes_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-class D {
-  var a = 0.0;
-  var b = 1.0;
-  var c = 2.0;
-  test() {
-    a = 0.0;
-    b = 1.0;
-    c = a + b;
-    return c;
-  }
-
-  testParam(x, y) {
-    x = x * x;
-    y = y * y;
-    c = x + y;
-  }
-}
-
-testD() {
-  var f = new D();
-  var r = 0.0;
-  for (var i = 0; i < 20; i++) {
-    r += f.test();
-  }
-  Expect.equals(20.0, r);
-  // Trigger a deopt of test.
-  f.testParam(new Float32x4(1.0, 2.0, 3.0, 4.0), new Float32x4.zero());
-  r = 0.0;
-  for (var i = 0; i < 20; i++) {
-    r += f.test();
-  }
-  Expect.equals(20.0, r);
-}
-
-class F {
-  var a = new Float32x4.zero();
-  var b = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c = new Float32x4.zero();
-  test() {
-    a = new Float32x4.zero();
-    b = new Float32x4(1.0, 2.0, 3.0, 4.0);
-    c = a + b;
-    return c;
-  }
-
-  testParam(x, y) {
-    x = x * x;
-    y = y * y;
-    c = x + y;
-  }
-}
-
-testF() {
-  var f = new F();
-  var r = new Float32x4.zero();
-  for (var i = 0; i < 20; i++) {
-    r += f.test();
-  }
-  Expect.equals(20.0, r.x);
-  Expect.equals(40.0, r.y);
-  Expect.equals(60.0, r.z);
-  Expect.equals(80.0, r.w);
-  // Trigger a deopt of test.
-  f.testParam(1.0, 2.0);
-  r = new Float32x4.zero();
-  for (var i = 0; i < 20; i++) {
-    r += f.test();
-  }
-  Expect.equals(20.0, r.x);
-  Expect.equals(40.0, r.y);
-  Expect.equals(60.0, r.z);
-  Expect.equals(80.0, r.w);
-}
-
-main() {
-  testD();
-  testF();
-}
diff --git a/tests/language/vm/store_elimination_vm_test.dart b/tests/language/vm/store_elimination_vm_test.dart
deleted file mode 100644
index f162f1e..0000000
--- a/tests/language/vm/store_elimination_vm_test.dart
+++ /dev/null
@@ -1,123 +0,0 @@
-// 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.
-// Test correctness of side effects tracking used by load to load forwarding.
-
-// VMOptions=--optimization-counter-threshold=10 --no-background-compilation
-
-import "package:expect/expect.dart";
-
-class C {
-  var x;
-  var y;
-  final z = 123;
-}
-
-class D {
-  var x = 0.0;
-}
-
-var array = [0, 0];
-
-s1(a) {
-  a.x = 42;
-  a.x = 43;
-  return a.x;
-}
-
-void foo(a) {
-  Expect.equals(42, a.x);
-}
-
-s1a(a) {
-  a.x = 42;
-  foo(a);
-  a.x = 43;
-  return a.x;
-}
-
-s2() {
-  var t = new C();
-  return t;
-}
-
-s3(a, b) {
-  a.x = b + 1;
-  if (b % 2 == 0) {
-    a.x = 0;
-  } else {
-    a.x = 0;
-  }
-  return a.x;
-}
-
-s4(a, b) {
-  a.x = b + 1.0;
-  if (b % 2 == 0) {
-    a.x = b + 2.0;
-  }
-  a.x = b + 1.0;
-  return a.x;
-}
-
-test_with_context() {
-  f(a) {
-    var b = a + 1;
-    return (() => b + 1)();
-  }
-
-  for (var i = 0; i < 100000; i++) f(42);
-  Expect.equals(44, f(42));
-}
-
-test_with_instance() {
-  for (var i = 0; i < 20; i++) Expect.equals(43, s1(new C()));
-  for (var i = 0; i < 20; i++) Expect.equals(43, s1a(new C()));
-  for (var i = 0; i < 20; i++) Expect.equals(123, s2().z);
-  for (var i = 0; i < 20; i++) Expect.equals(0, s3(new C(), i));
-  for (var i = 0; i < 20; i++) Expect.equals(i + 1.0, s4(new D(), i));
-}
-
-arr1(a) {
-  a[0] = 42;
-  a[0] = 43;
-  Expect.equals(a[0], 43);
-  return a[0];
-}
-
-arr2(a, b) {
-  a[0] = 42;
-  a[b % 2] = 43;
-  Expect.equals(a[b % 2], 43);
-  return a[0];
-}
-
-test_with_array() {
-  for (var i = 0; i < 20; i++) Expect.equals(43, arr1(array));
-  for (var i = 0; i < 20; i++) {
-    Expect.equals(i % 2 == 0 ? 43 : 42, arr2(array, i));
-  }
-}
-
-var st = 0;
-
-static1(b) {
-  st = 42;
-  if (b % 2 == 0) {
-    st = 2;
-  }
-  st = b + 1;
-  Expect.equals(st, b + 1);
-  return st;
-}
-
-test_with_static() {
-  for (var i = 0; i < 20; i++) Expect.equals(i + 1, static1(i));
-}
-
-main() {
-  test_with_instance();
-  test_with_array();
-  test_with_context();
-  test_with_static();
-}
diff --git a/tests/language/vm/store_to_load_forwarding_phis_vm_test.dart b/tests/language/vm/store_to_load_forwarding_phis_vm_test.dart
deleted file mode 100644
index af801f7..0000000
--- a/tests/language/vm/store_to_load_forwarding_phis_vm_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test correct handling of phis with only environment uses that were inserted
-// by store to load forwarding.
-// VMOptions=--optimization_counter_threshold=100 --no-background_compilation
-
-library store_to_load_forwarding_phis_vm_test;
-
-import 'dart:async';
-
-class A {
-  var _foo;
-
-  get foo {
-    if (_foo == null) {
-      _foo = new A();
-    }
-    return _foo;
-  }
-}
-
-foo(obj) {
-  var a = obj.foo;
-  return new Future.value().then((val) {});
-}
-
-main() {
-  final obj = new A();
-  for (var i = 0; i < 200; i++) {
-    foo(obj);
-  }
-}
diff --git a/tests/language/vm/string_polymorphic_test.dart b/tests/language/vm/string_polymorphic_test.dart
deleted file mode 100644
index 6e6b474..0000000
--- a/tests/language/vm/string_polymorphic_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'package:expect/expect.dart';
-
-test1(String a, String b) {
-  return a == b;
-}
-
-var LEN = 500;
-
-var ITER = 100000 / LEN;
-
-measure(fn, a, b) {
-  for (var i = 0; i < ITER; i++) {
-    Expect.equals(true, fn(a, b));
-  }
-}
-
-main() {
-  var n = LEN;
-  StringBuffer s = new StringBuffer();
-  for (var i = 0; i < n; ++i) s.write("A");
-  String t = s.toString();
-  String u = s.toString();
-  String v = s.toString() + "\u1234";
-  String w = s.toString() + "\u1234";
-  for (var i = 0; i < 10; i++) measure(test1, t, u);
-  for (var i = 0; i < 10; i++) measure(test1, v, w);
-}
diff --git a/tests/language/vm/type_cast_vm_test.dart b/tests/language/vm/type_cast_vm_test.dart
deleted file mode 100644
index 2055fbb..0000000
--- a/tests/language/vm/type_cast_vm_test.dart
+++ /dev/null
@@ -1,139 +0,0 @@
-// 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.
-// VMOptions=--no_show_internal_names
-// Dart test program testing type casts.
-import "package:expect/expect.dart";
-
-checkSecondFunction(String expected, StackTrace stacktrace) {
-  var topLine = stacktrace.toString().split("\n")[1];
-  int startPos = topLine.lastIndexOf("/");
-  int endPos = topLine.lastIndexOf(")");
-  String subs = topLine.substring(startPos + 1, endPos);
-  Expect.equals(expected, subs);
-}
-
-// Test that the initializer expression gets properly skipped.
-bool b = "foo" as double;
-
-class TypeTest {
-  static test() {
-    int result = 0;
-    try {
-      var i = "hello" as int; // Throws a CastError
-    } catch (error) {
-      result = 1;
-      Expect.isTrue(error is CastError);
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("int")); // dstType
-      Expect.isTrue(msg.contains("String")); // srcType
-      checkSecondFunction("type_cast_vm_test.dart:23:23", error.stackTrace);
-    }
-    return result;
-  }
-
-  static testSideEffect() {
-    int result = 0;
-    int index() {
-      result++;
-      return 0;
-    }
-
-    try {
-      var a = new List<int>(1) as List<int>;
-      a[0] = 0;
-      a[index()]++; // Type check succeeds, but does not create side effects.
-      Expect.equals(1, a[0]);
-    } catch (error) {
-      result = 100;
-    }
-    return result;
-  }
-
-  static testArgument() {
-    int result = 0;
-    int f(int i) {
-      return i;
-    }
-
-    try {
-      int i = f("hello" as int); // Throws a CastError
-    } catch (error) {
-      result = 1;
-      Expect.isTrue(error is CastError);
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("int")); // dstType
-      Expect.isTrue(msg.contains("String")); // srcType
-      checkSecondFunction("type_cast_vm_test.dart:60:25", error.stackTrace);
-    }
-    return result;
-  }
-
-  static testReturn() {
-    int result = 0;
-    int f(String s) {
-      return s as int; // Throws a CastError
-    }
-
-    try {
-      int i = f("hello");
-    } catch (error) {
-      result = 1;
-      Expect.isTrue(error is CastError);
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("int")); // dstType
-      Expect.isTrue(msg.contains("String")); // srcType
-      checkSecondFunction("type_cast_vm_test.dart:75:16", error.stackTrace);
-    }
-    return result;
-  }
-
-  static var field = "hello";
-
-  static testField() {
-    int result = 0;
-    Expect.equals(5, (field as String).length);
-    try {
-      field as int; // Throws a CastError
-    } catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("int")); // dstType
-      Expect.isTrue(msg.contains("String")); // srcType
-      checkSecondFunction("type_cast_vm_test.dart:97:13", error.stackTrace);
-    }
-    return result;
-  }
-
-  static testAnyFunction() {
-    int result = 0;
-    Function anyFunction;
-    f() {}
-    ;
-    anyFunction = f as Function; // No error.
-    anyFunction = null as Function; // No error.
-    try {
-      var i = f as int; // Throws a TypeError if type checks are enabled.
-    } catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("int")); // dstType
-      Expect.isTrue(msg.contains("() => dynamic")); // srcType
-      checkSecondFunction("type_cast_vm_test.dart:116:17", error.stackTrace);
-    }
-    return result;
-  }
-
-  static testMain() {
-    Expect.equals(1, test());
-    Expect.equals(1, testSideEffect());
-    Expect.equals(1, testArgument());
-    Expect.equals(1, testReturn());
-    Expect.equals(1, testField());
-    Expect.equals(1, testAnyFunction());
-  }
-}
-
-main() {
-  TypeTest.testMain();
-}
diff --git a/tests/language/vm/type_propagation_test.dart b/tests/language/vm/type_propagation_test.dart
deleted file mode 100644
index 6347f34..0000000
--- a/tests/language/vm/type_propagation_test.dart
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright (c) 2015, 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=--optimization-counter-threshold=1000 --max-polymorphic-checks=1 --no-background-compilation
-
-// Test correct loop invariant code motion and type propagation from is-checks
-// and null-comparisons.
-
-class B {
-  var b;
-  B(this.b);
-}
-
-class C {
-  final f0 = null;
-
-  final a;
-  C() : a = new B(0);
-}
-
-foo(x) {
-  for (var i = 0; i < 10; i++) {
-    i + i;
-    i + i;
-    if (x is C) {
-      x.a.b < 0;
-    }
-  }
-}
-
-class Y {
-  var f = null;
-}
-
-bar(y) {
-  var x = y.f;
-  for (var i = 0; i < 10; i++) {
-    if (x != null) {
-      x.a.b < 0;
-    }
-  }
-}
-
-main() {
-  var o = new Y();
-  o.f = new C();
-  bar(o);
-  o.f = null;
-  bar(o);
-
-  for (var i = 0; i < 1000; i++) bar(o);
-
-  foo(new C());
-  foo(0);
-
-  for (var i = 0; i < 1000; i++) foo(0);
-}
diff --git a/tests/language/vm/type_vm_test.dart b/tests/language/vm/type_vm_test.dart
deleted file mode 100644
index 71e23e3..0000000
--- a/tests/language/vm/type_vm_test.dart
+++ /dev/null
@@ -1,449 +0,0 @@
-// Copyright (c) 2011, 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=--enable_type_checks --enable_asserts --no_show_internal_names
-// Dart test program testing type checks.
-
-import "package:expect/expect.dart";
-
-class C {
-  factory C() {
-    return 1; // Implicit result type is 'C', not int.
-  }
-}
-
-class TypeTest {
-  static test() {
-    int result = 0;
-    try {
-      int i = "hello"; // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'int'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("'i'")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:19:15"));
-    }
-    return result;
-  }
-
-  static testSideEffect() {
-    int result = 0;
-    int index() {
-      result++;
-      return 0;
-    }
-
-    try {
-      List<int> a = new List<int>(1);
-      a[0] = 0;
-      a[index()]++; // Type check succeeds, but does not create side effects.
-      Expect.equals(1, a[0]);
-    } on TypeError catch (error) {
-      result = 100;
-    }
-    return result;
-  }
-
-  static testArgument() {
-    int result = 0;
-    int f(int i) {
-      return i;
-    }
-
-    try {
-      int i = f("hello"); // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'int'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("'i'")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:52:15"));
-    }
-    return result;
-  }
-
-  static testReturn() {
-    int result = 0;
-    int f(String s) {
-      return s;
-    }
-
-    try {
-      int i = f("hello"); // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'int'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("function result")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:77:16"));
-    }
-    return result;
-  }
-
-  static int field;
-  static testField() {
-    int result = 0;
-    try {
-      field = "hello"; // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'int'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("'field'")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:94:15"));
-    }
-    return result;
-  }
-
-  static testAnyFunction() {
-    int result = 0;
-    Function anyFunction;
-    f() {}
-    ;
-    anyFunction = f; // No error.
-    try {
-      int i = f; // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'int'")); // dstType
-      Expect.isTrue(msg.contains("'() => dynamic'")); // srcType
-      Expect.isTrue(msg.contains("'i'")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:114:15"));
-    }
-    return result;
-  }
-
-  static testVoidFunction() {
-    int result = 0;
-    Function anyFunction;
-    void acceptVoidFunObj(void voidFunObj(Object obj)) {}
-    ;
-    void acceptObjFunObj(Object objFunObj(Object obj)) {}
-    ;
-    void voidFunObj(Object obj) {}
-    ;
-    Object objFunObj(Object obj) {
-      return obj;
-    }
-
-    ;
-    anyFunction = voidFunObj; // No error.
-    anyFunction = objFunObj; // No error.
-    acceptVoidFunObj(voidFunObj);
-    acceptVoidFunObj(objFunObj);
-    acceptObjFunObj(objFunObj);
-    try {
-      acceptObjFunObj(voidFunObj); // Throws a TypeError.
-    } on TypeError catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'(Object) => Object'")); // dstType
-      Expect.isTrue(msg.contains("'(Object) => void'")); // srcType
-      Expect.isTrue(msg.contains("'objFunObj'")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:132:33"));
-    }
-    return result;
-  }
-
-  static testFunctionNum() {
-    int result = 0;
-    Function anyFunction;
-    void acceptFunNum(void funNum(num n)) {}
-    void funObj(Object obj) {}
-    void funNum(num n) {}
-    void funInt(int i) {}
-    void funString(String s) {}
-    anyFunction = funObj; // No error.
-    anyFunction = funNum; // No error.
-    anyFunction = funInt; // No error.
-    anyFunction = funString; // No error.
-    acceptFunNum(funObj); // No error.
-    acceptFunNum(funNum); // No error.
-    acceptFunNum(funInt); // No error.
-    try {
-      acceptFunNum(funString); // Throws an error.
-    } on TypeError catch (error) {
-      result = 1;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'(num) => void'")); // dstType
-      Expect.isTrue(msg.contains("'(String) => void'")); // srcType
-      Expect.isTrue(msg.contains("'funNum'")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:163:28"));
-    }
-    return result;
-  }
-
-  static testBoolCheck() {
-    int result = 0;
-    try {
-      bool i = !"hello"; // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:192:17"));
-    }
-    try {
-      while ("hello") {} // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:203:14"));
-    }
-    try {
-      do {} while ("hello"); // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:214:20"));
-    }
-    try {
-      for (; "hello";) {} // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:225:14"));
-    }
-    try {
-      int i = "hello" ? 1 : 0; // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:236:15"));
-    }
-    try {
-      if ("hello") {} // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:247:11"));
-    }
-    try {
-      if ("hello" || false) {} // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:258:11"));
-    }
-    try {
-      if (false || "hello") {} // Throws a TypeError if type checks are enabled.
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'bool'")); // dstType
-      Expect.isTrue(msg.contains("'String'")); // srcType
-      Expect.isTrue(msg.contains("boolean expression")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:269:20"));
-    }
-    try {
-      if (null) {} // Throws an AssertionError if assertions are enabled.
-    } on AssertionError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("assertion"));
-      Expect.isTrue(msg.contains("boolean expression"));
-      Expect.isTrue(msg.contains("null"));
-    }
-    return result;
-  }
-
-  static int testFactory() {
-    int result = 0;
-    try {
-      var x = new C();
-    } on TypeError catch (error) {
-      result++;
-      var msg = error.toString();
-      Expect.isTrue(msg.contains("'C'")); // dstType
-      Expect.isTrue(msg.contains("'int'")); // srcType
-      Expect.isTrue(msg.contains("function result")); // dstName
-      Expect.isTrue(
-          error.stackTrace.toString().contains("type_vm_test.dart:11:12"));
-    }
-    return result;
-  }
-
-  static int testListAssigment() {
-    int result = 0;
-    {
-      var a = new List(5);
-      List a0 = a;
-      List<Object> ao = a;
-      List<int> ai = a;
-      List<num> an = a;
-      List<String> as = a;
-    }
-    {
-      var a = new List<Object>(5);
-      List a0 = a;
-      List<Object> ao = a;
-      try {
-        List<int> ai = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<int>'")); // dstType
-        Expect.isTrue(msg.contains("'List<Object>'")); // srcType
-        Expect.isTrue(msg.contains("'ai'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:322:24"));
-      }
-      try {
-        List<num> an = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<num>'")); // dstType
-        Expect.isTrue(msg.contains("'List<Object>'")); // srcType
-        Expect.isTrue(msg.contains("'an'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:333:24"));
-      }
-      try {
-        List<String> as = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<String>'")); // dstType
-        Expect.isTrue(msg.contains("'List<Object>'")); // srcType
-        Expect.isTrue(msg.contains("'as'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:344:27"));
-      }
-    }
-    {
-      var a = new List<int>(5);
-      List a0 = a;
-      List<Object> ao = a;
-      List<int> ai = a;
-      List<num> an = a;
-      try {
-        List<String> as = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<String>'")); // dstType
-        Expect.isTrue(msg.contains("'List<int>'")); // srcType
-        Expect.isTrue(msg.contains("'as'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:362:27"));
-      }
-    }
-    {
-      var a = new List<num>(5);
-      List a0 = a;
-      List<Object> ao = a;
-      try {
-        List<int> ai = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<int>'")); // dstType
-        Expect.isTrue(msg.contains("'List<num>'")); // srcType
-        Expect.isTrue(msg.contains("'ai'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:378:24"));
-      }
-      List<num> an = a;
-      try {
-        List<String> as = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<String>'")); // dstType
-        Expect.isTrue(msg.contains("'List<num>'")); // srcType
-        Expect.isTrue(msg.contains("'as'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:390:27"));
-      }
-    }
-    {
-      var a = new List<String>(5);
-      List a0 = a;
-      List<Object> ao = a;
-      try {
-        List<int> ai = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<int>'")); // dstType
-        Expect.isTrue(msg.contains("'List<String>'")); // srcType
-        Expect.isTrue(msg.contains("'ai'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:406:24"));
-      }
-      try {
-        List<num> an = a;
-      } on TypeError catch (error) {
-        result++;
-        var msg = error.toString();
-        Expect.isTrue(msg.contains("'List<num>'")); // dstType
-        Expect.isTrue(msg.contains("'List<String>'")); // srcType
-        Expect.isTrue(msg.contains("'an'")); // dstName
-        Expect.isTrue(
-            error.stackTrace.toString().contains("type_vm_test.dart:417:24"));
-      }
-      List<String> as = a;
-    }
-    return result;
-  }
-
-  static testMain() {
-    Expect.equals(1, test());
-    Expect.equals(1, testSideEffect());
-    Expect.equals(1, testArgument());
-    Expect.equals(1, testReturn());
-    Expect.equals(1, testField());
-    Expect.equals(1, testAnyFunction());
-    Expect.equals(1, testVoidFunction());
-    Expect.equals(1, testFunctionNum());
-    Expect.equals(9, testBoolCheck());
-    Expect.equals(1, testFactory());
-    Expect.equals(8, testListAssigment());
-  }
-}
-
-main() {
-  TypeTest.testMain();
-}
diff --git a/tests/language/vm/typed_data_polymorphic_view_test.dart b/tests/language/vm/typed_data_polymorphic_view_test.dart
deleted file mode 100644
index e8d0a41..0000000
--- a/tests/language/vm/typed_data_polymorphic_view_test.dart
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-final V = 5;
-
-void runShort(view) {
-  for (int i = 0; i < view.length; i++) {
-    view[i] = V;
-  }
-}
-
-void verifyShort(view) {
-  var sum = 0;
-  for (int i = 0; i < view.length; i++) {
-    sum += view[i];
-  }
-  // 1285 * view.length.
-  Expect.equals(657920, sum);
-}
-
-void testShort() {
-  var int8 = new Uint8List(1024);
-  var int16 = new Uint16List(512);
-
-  var view = new Uint8List.view(int8.buffer);
-  view[0] = V;
-
-  view = new Uint8List.view(int16.buffer);
-  for (int i = 0; i < 1000; i++) {
-    runShort(view);
-  }
-
-  Expect.equals(1285, int16[0]);
-  verifyShort(int16);
-}
-
-void runXor(view) {
-  var mask = new Int32x4(0x1, 0x1, 0x1, 0x1);
-  for (var i = 0; i < view.length; i++) {
-    view[i] ^= mask;
-  }
-}
-
-void verifyXor(view) {
-  var sum = 0;
-  for (var i = 0; i < view.length; i++) {
-    sum += view[i];
-  }
-  Expect.equals(256, sum);
-}
-
-void testXor() {
-  var int8 = new Uint8List(1024);
-  var int32x4 = new Int32x4List.view(int8.buffer);
-  Expect.equals(64, int32x4.length);
-  for (var i = 0; i < 1001; i++) {
-    runXor(int32x4);
-  }
-  Expect.equals(1, int8[0]);
-  Expect.equals(0, int8[1]);
-  Expect.equals(0, int8[2]);
-  Expect.equals(0, int8[3]);
-  verifyXor(int8);
-}
-
-void main() {
-  testXor();
-  testShort();
-}
diff --git a/tests/language/vm/uint32_add_test.dart b/tests/language/vm/uint32_add_test.dart
deleted file mode 100644
index 6a64444..0000000
--- a/tests/language/vm/uint32_add_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'package:expect/expect.dart';
-
-trunc(x) => x & 0xFFFFFFFF;
-
-f(t, x) => t(x) + 1;
-
-g(t, x) => t(x + 1);
-
-// Foo should be entirely replaced by Uint32 operations. Running with
-// --trace-integer-ir-selection should result in:
-//    CheckStackOverflow:4()
-//    v22 <- UnboxUint32:14(v2)
-//    v24 <- UnboxUint32:14(v3)
-//    v6 <- BinaryUint32Op:14(+, v22 , v24 )
-//    v26 <- UnboxUint32:22(v4)
-//    v8 <- BinaryUint32Op:22(+, v6 , v26 )
-//    v28 <- UnboxUint32:30(v5)
-//    v10 <- BinaryUint32Op:30(+, v8 , v28 )
-//    v30 <- UnboxUint32:14(v21)
-//    v19 <- BinaryUint32Op:14(&, v10 , v30 )
-//    v32 <- BoxUint32:90(v19 )
-//    Return:38(v32 )
-foo(a, b, c, i) {
-  return trunc(a + b + c + i);
-}
-
-main() {
-  for (var i = 0; i < 20000; i++) {
-    Expect.equals(0x100000000, f(trunc, 0xFFFFFFFF));
-    Expect.equals(0x0, g(trunc, 0xFFFFFFFF));
-  }
-
-  var a = 0xFFFFFFFF;
-  var b = 0xCCCCCCCC;
-  var c = 0x33333335;
-
-  for (var i = 0; i < 20000; i++) {
-    Expect.equals(i, foo(a, b, c, i));
-  }
-}
diff --git a/tests/language/vm/uint32_right_shift_test.dart b/tests/language/vm/uint32_right_shift_test.dart
deleted file mode 100644
index c55bc66..0000000
--- a/tests/language/vm/uint32_right_shift_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'package:expect/expect.dart';
-
-trunc(x) => x & 0xFFFFFFFF;
-
-foo(t, x) => t(x >> 15);
-
-main() {
-  for (var i = 0; i < 20000; i++) {
-    Expect.equals(0x00010000, foo(trunc, 0x80000000));
-  }
-  for (var i = 0; i < 20000; i++) {
-    Expect.equals(0x10000000, foo(trunc, 0x80000000000));
-  }
-}
diff --git a/tests/language/vm/uint32_shift_test.dart b/tests/language/vm/uint32_shift_test.dart
deleted file mode 100644
index f20210a..0000000
--- a/tests/language/vm/uint32_shift_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2014, 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=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'package:expect/expect.dart';
-
-class Good {
-  use(x) {
-    return x & 0x1;
-  }
-}
-
-class Bad {
-  use(x) {
-    return x & 0x100000000;
-  }
-}
-
-f(o, x) => o.use(x << 1);
-
-main() {
-  final good = new Good();
-  final bad = new Bad();
-  for (var i = 0; i < 20000; i++) {
-    Expect.equals(0, f(good, 0x80000000));
-  }
-  Expect.equals(0x100000000, f(bad, 0x80000000));
-}
diff --git a/tests/language/vm/unaligned_float_access_literal_index_test.dart b/tests/language/vm/unaligned_float_access_literal_index_test.dart
deleted file mode 100644
index 5efdeff..0000000
--- a/tests/language/vm/unaligned_float_access_literal_index_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// 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.
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-unalignedFloat32() {
-  var bytes = new ByteData(64);
-  bytes.setFloat32(0, 16.25, Endianness.HOST_ENDIAN);
-  Expect.equals(16.25, bytes.getFloat32(0, Endianness.HOST_ENDIAN));
-  bytes.setFloat32(1, 32.125, Endianness.HOST_ENDIAN);
-  Expect.equals(32.125, bytes.getFloat32(1, Endianness.HOST_ENDIAN));
-  bytes.setFloat32(2, 16.25, Endianness.HOST_ENDIAN);
-  Expect.equals(16.25, bytes.getFloat32(2, Endianness.HOST_ENDIAN));
-  bytes.setFloat32(3, 32.125, Endianness.HOST_ENDIAN);
-  Expect.equals(32.125, bytes.getFloat32(3, Endianness.HOST_ENDIAN));
-}
-
-unalignedFloat64() {
-  var bytes = new ByteData(64);
-  bytes.setFloat64(0, 16.25, Endianness.HOST_ENDIAN);
-  Expect.equals(16.25, bytes.getFloat64(0, Endianness.HOST_ENDIAN));
-  bytes.setFloat64(1, 32.125, Endianness.HOST_ENDIAN);
-  Expect.equals(32.125, bytes.getFloat64(1, Endianness.HOST_ENDIAN));
-  bytes.setFloat64(2, 16.25, Endianness.HOST_ENDIAN);
-  Expect.equals(16.25, bytes.getFloat64(2, Endianness.HOST_ENDIAN));
-  bytes.setFloat64(3, 32.125, Endianness.HOST_ENDIAN);
-  Expect.equals(32.125, bytes.getFloat64(3, Endianness.HOST_ENDIAN));
-  bytes.setFloat64(4, 16.25, Endianness.HOST_ENDIAN);
-  Expect.equals(16.25, bytes.getFloat64(4, Endianness.HOST_ENDIAN));
-  bytes.setFloat64(5, 32.125, Endianness.HOST_ENDIAN);
-  Expect.equals(32.125, bytes.getFloat64(5, Endianness.HOST_ENDIAN));
-  bytes.setFloat64(6, 16.25, Endianness.HOST_ENDIAN);
-  Expect.equals(16.25, bytes.getFloat64(6, Endianness.HOST_ENDIAN));
-  bytes.setFloat64(7, 32.125, Endianness.HOST_ENDIAN);
-  Expect.equals(32.125, bytes.getFloat64(7, Endianness.HOST_ENDIAN));
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    unalignedFloat32();
-    unalignedFloat64();
-  }
-}
diff --git a/tests/language/vm/unaligned_float_access_register_index_test.dart b/tests/language/vm/unaligned_float_access_register_index_test.dart
deleted file mode 100644
index 4042ec3..0000000
--- a/tests/language/vm/unaligned_float_access_register_index_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-unalignedFloat32() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 4; i++) {
-    bytes.setFloat32(i, 16.25, Endianness.HOST_ENDIAN);
-    Expect.equals(16.25, bytes.getFloat32(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-unalignedFloat64() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 8; i++) {
-    bytes.setFloat64(i, 16.25, Endianness.HOST_ENDIAN);
-    Expect.equals(16.25, bytes.getFloat64(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    unalignedFloat32();
-    unalignedFloat64();
-  }
-}
diff --git a/tests/language/vm/unaligned_integer_access_literal_index_test.dart b/tests/language/vm/unaligned_integer_access_literal_index_test.dart
deleted file mode 100644
index 0212f6f..0000000
--- a/tests/language/vm/unaligned_integer_access_literal_index_test.dart
+++ /dev/null
@@ -1,98 +0,0 @@
-// 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.
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-unalignedUint16() {
-  var bytes = new ByteData(64);
-  bytes.setUint16(0, 0xABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(0xABCD, bytes.getUint16(0, Endianness.HOST_ENDIAN));
-  bytes.setUint16(1, 0xBCDE, Endianness.HOST_ENDIAN);
-  Expect.equals(0xBCDE, bytes.getUint16(1, Endianness.HOST_ENDIAN));
-}
-
-unalignedInt16() {
-  var bytes = new ByteData(64);
-  bytes.setInt16(0, -0x1234, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x1234, bytes.getInt16(0, Endianness.HOST_ENDIAN));
-  bytes.setInt16(1, -0x2345, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x2345, bytes.getInt16(1, Endianness.HOST_ENDIAN));
-}
-
-unalignedUint32() {
-  var bytes = new ByteData(64);
-  bytes.setUint32(0, 0xABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(0xABCDABCD, bytes.getUint32(0, Endianness.HOST_ENDIAN));
-  bytes.setUint32(1, 0xBCDEBCDE, Endianness.HOST_ENDIAN);
-  Expect.equals(0xBCDEBCDE, bytes.getUint32(1, Endianness.HOST_ENDIAN));
-  bytes.setUint32(2, 0xABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(0xABCDABCD, bytes.getUint32(2, Endianness.HOST_ENDIAN));
-  bytes.setUint32(3, 0xBCDEBCDE, Endianness.HOST_ENDIAN);
-  Expect.equals(0xBCDEBCDE, bytes.getUint32(3, Endianness.HOST_ENDIAN));
-}
-
-unalignedInt32() {
-  var bytes = new ByteData(64);
-  bytes.setInt32(0, -0x12341234, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x12341234, bytes.getInt32(0, Endianness.HOST_ENDIAN));
-  bytes.setInt32(1, -0x23452345, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x23452345, bytes.getInt32(1, Endianness.HOST_ENDIAN));
-  bytes.setInt32(2, -0x12341234, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x12341234, bytes.getInt32(2, Endianness.HOST_ENDIAN));
-  bytes.setInt32(3, -0x23452345, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x23452345, bytes.getInt32(3, Endianness.HOST_ENDIAN));
-}
-
-unalignedUint64() {
-  var bytes = new ByteData(64);
-  bytes.setUint64(0, 0xABCDABCD12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xABCDABCD12345678, bytes.getUint64(0, Endianness.HOST_ENDIAN));
-  bytes.setUint64(1, 0xBCDEBCDE12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xBCDEBCDE12345678, bytes.getUint64(1, Endianness.HOST_ENDIAN));
-  bytes.setUint64(2, 0xABCDABCD12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xABCDABCD12345678, bytes.getUint64(2, Endianness.HOST_ENDIAN));
-  bytes.setUint64(3, 0xBCDEBCDE12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xBCDEBCDE12345678, bytes.getUint64(3, Endianness.HOST_ENDIAN));
-  bytes.setUint64(4, 0xABCDABCD12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xABCDABCD12345678, bytes.getUint64(4, Endianness.HOST_ENDIAN));
-  bytes.setUint64(5, 0xBCDEBCDE12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xBCDEBCDE12345678, bytes.getUint64(5, Endianness.HOST_ENDIAN));
-  bytes.setUint64(6, 0xABCDABCD12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xABCDABCD12345678, bytes.getUint64(6, Endianness.HOST_ENDIAN));
-  bytes.setUint64(7, 0xBCDEBCDE12345678, Endianness.HOST_ENDIAN);
-  Expect.equals(0xBCDEBCDE12345678, bytes.getUint64(7, Endianness.HOST_ENDIAN));
-}
-
-unalignedInt64() {
-  var bytes = new ByteData(64);
-  bytes.setInt64(0, -0x12341234ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x12341234ABCDABCD, bytes.getInt64(0, Endianness.HOST_ENDIAN));
-  bytes.setInt64(1, -0x23452345ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x23452345ABCDABCD, bytes.getInt64(1, Endianness.HOST_ENDIAN));
-  bytes.setInt64(2, -0x12341234ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x12341234ABCDABCD, bytes.getInt64(2, Endianness.HOST_ENDIAN));
-  bytes.setInt64(3, -0x23452345ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x23452345ABCDABCD, bytes.getInt64(3, Endianness.HOST_ENDIAN));
-  bytes.setInt64(4, -0x12341234ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x12341234ABCDABCD, bytes.getInt64(4, Endianness.HOST_ENDIAN));
-  bytes.setInt64(5, -0x23452345ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x23452345ABCDABCD, bytes.getInt64(5, Endianness.HOST_ENDIAN));
-  bytes.setInt64(6, -0x12341234ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x12341234ABCDABCD, bytes.getInt64(6, Endianness.HOST_ENDIAN));
-  bytes.setInt64(7, -0x23452345ABCDABCD, Endianness.HOST_ENDIAN);
-  Expect.equals(-0x23452345ABCDABCD, bytes.getInt64(7, Endianness.HOST_ENDIAN));
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    unalignedUint16();
-    unalignedInt16();
-    unalignedUint32();
-    unalignedInt32();
-    unalignedUint64();
-    unalignedInt64();
-  }
-}
diff --git a/tests/language/vm/unaligned_integer_access_register_index_test.dart b/tests/language/vm/unaligned_integer_access_register_index_test.dart
deleted file mode 100644
index 58b5076..0000000
--- a/tests/language/vm/unaligned_integer_access_register_index_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// 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.
-// VMOptions=--optimization_counter_threshold=10 --no-background_compilation
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-unalignedUint16() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 2; i++) {
-    bytes.setUint16(i, 0xABCD, Endianness.HOST_ENDIAN);
-    Expect.equals(0xABCD, bytes.getUint16(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-unalignedInt16() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 2; i++) {
-    bytes.setInt16(i, -0x1234, Endianness.HOST_ENDIAN);
-    Expect.equals(-0x1234, bytes.getInt16(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-unalignedUint32() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 4; i++) {
-    bytes.setUint32(i, 0xABCDABCD, Endianness.HOST_ENDIAN);
-    Expect.equals(0xABCDABCD, bytes.getUint32(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-unalignedInt32() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 4; i++) {
-    bytes.setInt32(i, -0x12341234, Endianness.HOST_ENDIAN);
-    Expect.equals(-0x12341234, bytes.getInt32(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-unalignedUint64() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 8; i++) {
-    bytes.setUint64(i, 0xABCDABCD12345678, Endianness.HOST_ENDIAN);
-    Expect.equals(0xABCDABCD12345678, bytes.getUint64(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-unalignedInt64() {
-  var bytes = new ByteData(64);
-  for (var i = 0; i < 8; i++) {
-    bytes.setInt64(i, -0x12341234ABCDABCD, Endianness.HOST_ENDIAN);
-    Expect.equals(-0x12341234ABCDABCD, bytes.getInt64(i, Endianness.HOST_ENDIAN));
-  }
-}
-
-main() {
-  for (var i = 0; i < 20; i++) {
-    unalignedUint16();
-    unalignedInt16();
-    unalignedUint32();
-    unalignedInt32();
-    unalignedUint64();
-    unalignedInt64();
-  }
-}
diff --git a/tests/language/vm/unique_selector_test.dart b/tests/language/vm/unique_selector_test.dart
deleted file mode 100644
index e26d4b5..0000000
--- a/tests/language/vm/unique_selector_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-
-class A {
-  _unique_method() => "foo";
-  bar() => "A";
-}
-
-class B {
-  noSuchMethod(invocation) => "nsm";
-  bar() => "B";
-}
-
-confuse(x) {
-  try {
-    throw x;
-  } catch (e) {
-    return e;
-  }
-  return null;
-}
-
-main() {
-  var a = confuse(new A());
-  Expect.equals("foo", a._unique_method());
-  Expect.equals("A", a.bar());
-
-  var b = confuse(new B());
-  Expect.equals("nsm", b._unique_method());
-  Expect.equals("B", b.bar()); // Don't propagate type A to b.
-}
diff --git a/tests/language/vm/unregistered_closure_in_finally_test.dart b/tests/language/vm/unregistered_closure_in_finally_test.dart
deleted file mode 100644
index 135be5d..0000000
--- a/tests/language/vm/unregistered_closure_in_finally_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// 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.
-// VMOptions=--no-background-compilation --enable-inlining-annotations
-
-const NeverInline = 'NeverInline';
-
-@NeverInline
-doSomething() {
-  print("Hello!");
-}
-
-@NeverInline
-maybeThrow(bool doThrow) {
-  if (doThrow) {
-    throw new Exception();
-  }
-}
-
-@NeverInline
-run(action) {
-  try { action(); } catch(e) {}
-}
-
-test(bool doThrow) {
-  try {
-    maybeThrow(doThrow);
-  } finally {
-    run(() {
-      doSomething();  // Should not crash here.
-    });
-  }
-}
-
-main() {
-  try { test(true); } catch(e) {}
-  try { test(false); } catch(e) {}
-}
diff --git a/tests/language/void_arrow_return_test.dart b/tests/language/void_arrow_return_test.dart
deleted file mode 100644
index 17ab84c..0000000
--- a/tests/language/void_arrow_return_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// 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.
-
-// Testing that a void arrow function is allowed to return any type of value.
-
-void foo() => 42;
-void set bar(x) => 43;
-
-main() {
-  foo();
-  bar = 44;
-}
diff --git a/tests/language/void_block_return_test.dart b/tests/language/void_block_return_test.dart
deleted file mode 100644
index 8833674..0000000
--- a/tests/language/void_block_return_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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.
-
-// Testing that a void block function is not allowed to `return e`
-// where `e` is non-void.
-
-void foo() {
-  return 42; //# 00: static type warning
-}
-
-main() {
-  foo();
-}
diff --git a/tests/language/void_check_test.dart b/tests/language/void_check_test.dart
deleted file mode 100644
index 2e42a25..0000000
--- a/tests/language/void_check_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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.
-
-// Tests that `void` accepts any value and won't throw on non-`null` values.
-// The test is set up in a way that `--trust-type-annotations` and type
-// propagation must not assume that `void` is `null` either.
-
-import 'package:expect/expect.dart';
-
-class A {
-  void foo() {
-    return bar();
-  }
-
-  void bar() {}
-}
-
-class B extends A {
-  int bar() => 42;
-}
-
-// Makes the typing cleaner: the return type here is `dynamic` and we are
-// guaranteed that there won't be any warnings.
-// Dart2js can still infer the type by itself.
-@NoInline()
-callFoo(A a) => a.foo();
-
-main() {
-  var a = new A();
-  var b = new B();
-  // The following line is not throwing, even though `a.foo()` (inside
-  // `callFoo`) is supposedly `void`.
-  callFoo(b).abs();
-  Expect.isNull(callFoo(a));
-  Expect.equals(42, callFoo(b));
-}
diff --git a/tests/language/void_type_test.dart b/tests/language/void_type_test.dart
deleted file mode 100644
index 2ce3233..0000000
--- a/tests/language/void_type_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// 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.
-// Dart test for type checks involving the void type.
-
-import "package:expect/expect.dart";
-
-isCheckedMode() {
-  try {
-    var i = 1;
-    String s = i;
-    return false;
-  } catch (e) {
-    return true;
-  }
-}
-
-void f() {
-  return;
-}
-
-void f_null() {
-  return null;
-}
-
-void f_1() {
-  return 1;
-}
-
-void f_dyn_null() {
-  var x = null;
-  return x;
-}
-
-void f_dyn_1() {
-  var x = 1;
-  return x;
-}
-
-void f_f() {
-  return f();
-}
-
-void test(int n, void func()) {
-  // Test as closure call.
-  {
-    bool got_type_error = false;
-    try {
-      var x = func();
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    Expect.isFalse(got_type_error);
-  }
-  // Test as direct call.
-  {
-    bool got_type_error = false;
-    try {
-      var x;
-      switch (n) {
-        case 0:
-          x = f();
-          break;
-        case 1:
-          x = f_null();
-          break;
-        case 2:
-          x = f_1();
-          break;
-        case 3:
-          x = f_dyn_null();
-          break;
-        case 4:
-          x = f_dyn_1();
-          break;
-        case 5:
-          x = f_f();
-          break;
-      }
-    } on TypeError catch (error) {
-      got_type_error = true;
-    }
-    Expect.isFalse(got_type_error);
-  }
-}
-
-main() {
-  test(0, f);
-  test(1, f_null);
-  test(2, f_1);
-  test(3, f_dyn_null);
-  test(4, f_dyn_1);
-  test(5, f_f);
-}
diff --git a/tests/language/while_test.dart b/tests/language/while_test.dart
deleted file mode 100644
index 6df3760..0000000
--- a/tests/language/while_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2011, 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.
-// Dart test program for testing while statement.
-
-import "package:expect/expect.dart";
-
-class Helper {
-  static int f1(bool b) {
-    while (b) return 1;
-
-    return 2;
-  }
-
-  static int f2(bool b) {
-    while (b) {
-      return 1;
-    }
-    return 2;
-  }
-
-  static int f3(int n) {
-    int i = 0;
-    while (i < n) {
-      i++;
-    }
-    return i;
-  }
-
-  static int f4() {
-    // Verify that side effects in the condition are visible after the loop.
-    int i = 0;
-    while (++i < 3) {}
-    return i;
-  }
-}
-
-class WhileTest {
-  static testMain() {
-    Expect.equals(1, Helper.f1(true));
-    Expect.equals(2, Helper.f1(false));
-    Expect.equals(1, Helper.f2(true));
-    Expect.equals(2, Helper.f2(false));
-    Expect.equals(0, Helper.f3(-2));
-    Expect.equals(0, Helper.f3(-1));
-    Expect.equals(0, Helper.f3(0));
-    Expect.equals(1, Helper.f3(1));
-    Expect.equals(2, Helper.f3(2));
-    Expect.equals(3, Helper.f4());
-  }
-}
-
-main() {
-  WhileTest.testMain();
-}
diff --git a/tests/language/wrong_number_type_arguments_test.dart b/tests/language/wrong_number_type_arguments_test.dart
deleted file mode 100644
index acbf1c1..0000000
--- a/tests/language/wrong_number_type_arguments_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// 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";
-
-// Map takes 2 type arguments.
-Map
-<String> //# 00: static type warning
-    foo;
-Map
-<String> //# 02: static type warning
-    baz;
-
-main() {
-  foo = null;
-  var bar = new Map
-  <String> //# 01: static type warning
-      ();
-  baz = new Map(); //# 02: continued
-}
diff --git a/tests/language/yieldstar_pause_test.dart b/tests/language/yieldstar_pause_test.dart
deleted file mode 100644
index 23fc133..0000000
--- a/tests/language/yieldstar_pause_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-// Regression test for http://dartbug.com/27205
-// If a yield-star completes while the stream is paused, it didn't resume.
-
-main() {
-  asyncTest(() {
-    var c = new Completer();
-    var s = yieldStream(mkStream());
-    var sub;
-    sub = s.listen((v) {
-      sub.pause();
-      print(v);
-      Timer.run(sub.resume);
-    }, onDone: () {
-      print("DONE");
-      c.complete(null);
-    });
-    return c.future;
-  });
-}
-
-Stream yieldStream(Stream s) async* {
-  yield* s;
-}
-
-Stream mkStream() {
-  var s = new StreamController(sync: true);
-  // The close event has to be sent and received between
-  // the pause and resume above.
-  // Using a sync controller and a Timer.run(sub.resume) ensures this.
-  Timer.run(() {
-    s.add("event");
-    s.close();
-  });
-  return s.stream;
-}
diff --git a/tests/language_2/arg_param_trailing_comma_test.dart b/tests/language_2/arg_param_trailing_comma_test.dart
index 5406767..be2846c 100644
--- a/tests/language_2/arg_param_trailing_comma_test.dart
+++ b/tests/language_2/arg_param_trailing_comma_test.dart
@@ -9,7 +9,7 @@
 var y = 42;
 var z = 42;
 
-// Trailing comma in parameter litss.
+// Trailing comma in parameter lists.
 
 // Typedefs.
 typedef fx(x, ); //                                     //# none: ok
diff --git a/tests/language_2/bailout2_test.dart b/tests/language_2/bailout2_test.dart
index 1f2b76d..8a0dd87 100644
--- a/tests/language_2/bailout2_test.dart
+++ b/tests/language_2/bailout2_test.dart
@@ -17,7 +17,7 @@
 class A {
   // In dart2js, the optimized version of foo tries to optimize the
   // uses of a.length (which is used two times here: for the index,
-  // and for the bounds check), and that optmization used to crash
+  // and for the bounds check), and that optimization used to crash
   // the compiler.
   foo(a) => a[a.length];
 
diff --git a/tests/language_2/bug32372_test.dart b/tests/language_2/bug32372_test.dart
index 3804958..2ce2b42 100644
--- a/tests/language_2/bug32372_test.dart
+++ b/tests/language_2/bug32372_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
 
 import "package:expect/expect.dart";
 
@@ -9,7 +8,7 @@
 
 class B<T> {}
 
-class C<T> extends B<T> {
+mixin C<T> on B<T> {
   get t => T;
 }
 
diff --git a/tests/language_2/for_in_test.dart b/tests/language_2/for_in_test.dart
index 6090dc3..32b423b 100644
--- a/tests/language_2/for_in_test.dart
+++ b/tests/language_2/for_in_test.dart
@@ -6,47 +6,59 @@
 
 // Dart test for testing for in on a list literal.
 
-class ForInTest {
-  static testMain() {
-    testSimple();
-    testGenericSyntax1();
-    testGenericSyntax2();
-    testGenericSyntax3();
-    testGenericSyntax4();
-  }
+main() {
+  testSimple();
+  testGenericSyntax1();
+  testGenericSyntax2();
+  testGenericSyntax3();
+  testGenericSyntax4();
+  testShadowLocal1();
+  testShadowLocal2();
+}
 
-  static void testSimple() {
-    var list = [1, 3, 5];
-    var sum = 0;
-    for (var i in list) {
-      sum += i;
-    }
-    Expect.equals(9, sum);
+void testSimple() {
+  var list = [1, 3, 5];
+  var sum = 0;
+  for (var i in list) {
+    sum += i;
   }
+  Expect.equals(9, sum);
+}
 
-  static void testGenericSyntax1() {
-    List<List<String>> aCollection = [];
-    for (List<String> strArrArr in aCollection) {}
-  }
+void testGenericSyntax1() {
+  List<List<String>> aCollection = [];
+  for (List<String> strArrArr in aCollection) {}
+}
 
-  static void testGenericSyntax2() {
-    List<List<String>> aCollection = [];
-    List<String> strArrArr;
-    for (strArrArr in aCollection) {}
-  }
+void testGenericSyntax2() {
+  List<List<String>> aCollection = [];
+  List<String> strArrArr;
+  for (strArrArr in aCollection) {}
+}
 
-  static void testGenericSyntax3() {
-    List<List<List<String>>> aCollection = [];
-    for (List<List<String>> strArrArr in aCollection) {}
-  }
+void testGenericSyntax3() {
+  List<List<List<String>>> aCollection = [];
+  for (List<List<String>> strArrArr in aCollection) {}
+}
 
-  static void testGenericSyntax4() {
-    List<List<List<String>>> aCollection = [];
-    List<List<String>> strArrArr;
-    for (strArrArr in aCollection) {}
+void testGenericSyntax4() {
+  List<List<List<String>>> aCollection = [];
+  List<List<String>> strArrArr;
+  for (strArrArr in aCollection) {}
+}
+
+void testShadowLocal1() {
+  List<int> x = [1, 2, 3];
+  var i = 0;
+  for (var x in x) {
+    Expect.equals(x, ++i);
   }
 }
 
-main() {
-  ForInTest.testMain();
+void testShadowLocal2() {
+  Object x = [1, 2, 3];
+  var i = 0;
+  for (x in x) {
+    Expect.equals(x, ++i);
+  }
 }
diff --git a/tests/language_2/for_test.dart b/tests/language_2/for_test.dart
index ef52832..0feac17 100644
--- a/tests/language_2/for_test.dart
+++ b/tests/language_2/for_test.dart
@@ -81,4 +81,10 @@
 
 main() {
   ForTest.testMain();
+  testShadowLocal();
+}
+
+void testShadowLocal() {
+  List<int> x = [1, 2, 3];
+  for (var x = x;;) break; //# 01: compile-time error
 }
diff --git a/tests/language_2/generic_function_subtype_parametrized_typedef_test.dart b/tests/language_2/generic_function_subtype_parametrized_typedef_test.dart
new file mode 100644
index 0000000..a1dbfb8
--- /dev/null
+++ b/tests/language_2/generic_function_subtype_parametrized_typedef_test.dart
@@ -0,0 +1,30 @@
+// 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.
+
+// Test of the subtype relationship that includes parametrized typedefs and
+// invariant occurrences of types.
+
+typedef H<X> = void Function<Y extends X>();
+
+class A {}
+
+class B extends A {}
+
+class C extends B {}
+
+void foo(H<A> ha, H<B> hb, H<C> hc) {
+  H<A> haa = ha; //# 01: ok
+  H<A> hab = hb; //# 02: compile-time error
+  H<A> hac = hc; //# 03: compile-time error
+
+  H<B> hba = ha; //# 04: compile-time error
+  H<B> hbb = hb; //# 05: ok
+  H<B> hbc = hc; //# 06: compile-time error
+
+  H<C> hca = ha; //# 07: compile-time error
+  H<C> hcb = hb; //# 08: compile-time error
+  H<C> hcc = hc; //# 09: ok
+}
+
+main() {}
diff --git a/tests/language_2/generic_function_subtype_test.dart b/tests/language_2/generic_function_subtype_test.dart
new file mode 100644
index 0000000..de3717d
--- /dev/null
+++ b/tests/language_2/generic_function_subtype_test.dart
@@ -0,0 +1,21 @@
+// 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.
+
+// Simple test of the subtype relationship on generic function types.
+
+typedef F1 = void Function<X1 extends num>();
+typedef F2 = void Function<X2 extends String>();
+
+void f1<Y1 extends num>() {}
+void f2<Y2 extends String>() {}
+
+void foo() {
+  F1 f11 = f1; //# 01: ok
+  F1 f12 = f2; //# 02: compile-time error
+
+  F2 f21 = f1; //# 03: compile-time error
+  F2 f22 = f2; //# 04: ok
+}
+
+main() {}
diff --git a/tests/language_2/int_test.dart b/tests/language_2/int_test.dart
index 14133b5..c1d084c 100644
--- a/tests/language_2/int_test.dart
+++ b/tests/language_2/int_test.dart
@@ -5,54 +5,56 @@
 
 import "package:expect/expect.dart";
 
-class IntTest {
-  static void testMain() {
-    Expect.equals(0, 0 + 0);
-    Expect.equals(1, 1 + 0);
-    Expect.equals(2, 1 + 1);
-    Expect.equals(3, -1 + 4);
-    Expect.equals(3, 4 + -1);
-
-    Expect.equals(1, 1 - 0);
-    Expect.equals(0, 1 - 1);
-    Expect.equals(1, 2 - 1);
-    Expect.equals(2, 4 - 2);
-    Expect.equals(-2, 2 - 4);
-
-    Expect.equals(0, 3 * 0);
-    Expect.equals(0, 0 * 3);
-    Expect.equals(1, 1 * 1);
-    Expect.equals(5, 5 * 1);
-    Expect.equals(15, 3 * 5);
-    Expect.equals(-1, 1 * -1);
-    Expect.equals(-15, -5 * 3);
-    Expect.equals(15, -5 * -3);
-
-    Expect.equals(1, 2 ~/ 2);
-    Expect.equals(2, 2 ~/ 1);
-    Expect.equals(2, 4 ~/ 2);
-    Expect.equals(2, 5 ~/ 2);
-    Expect.equals(-2, -5 ~/ 2);
-    Expect.equals(-2, -4 ~/ 2);
-    Expect.equals(-2, 5 ~/ -2);
-    Expect.equals(-2, 4 ~/ -2);
-
-    Expect.equals(3, 7 % 4);
-    Expect.equals(2, 9 % 7);
-    Expect.equals(2, -7 % 9);
-    Expect.equals(7, 7 % -9);
-    Expect.equals(7, 7 % 9);
-    Expect.equals(2, -7 % -9);
-
-    Expect.equals(3, (7).remainder(4));
-    Expect.equals(2, (9).remainder(7));
-    Expect.equals(-7, (-7).remainder(9));
-    Expect.equals(7, (7).remainder(-9));
-    Expect.equals(7, (7).remainder(9));
-    Expect.equals(-7, (-7).remainder(-9));
-  }
-}
-
 main() {
-  IntTest.testMain();
+  test(literal, number) {
+    Expect.equals(literal, number);
+    Expect.identical(literal, number);
+  }
+
+  test(0, 0 + 0);
+  test(1, 1 + 0);
+  test(2, 1 + 1);
+  test(3, -1 + 4);
+  test(3, 4 + -1);
+
+  test(-0, -(0));
+  test(-3, -(3));
+
+  test(1, 1 - 0);
+  test(0, 1 - 1);
+  test(1, 2 - 1);
+  test(2, 4 - 2);
+  test(-2, 2 - 4);
+
+  test(0, 3 * 0);
+  test(0, 0 * 3);
+  test(1, 1 * 1);
+  test(5, 5 * 1);
+  test(15, 3 * 5);
+  test(-1, 1 * -1);
+  test(-15, -5 * 3);
+  test(15, -5 * -3);
+
+  test(1, 2 ~/ 2);
+  test(2, 2 ~/ 1);
+  test(2, 4 ~/ 2);
+  test(2, 5 ~/ 2);
+  test(-2, -5 ~/ 2);
+  test(-2, -4 ~/ 2);
+  test(-2, 5 ~/ -2);
+  test(-2, 4 ~/ -2);
+
+  test(3, 7 % 4);
+  test(2, 9 % 7);
+  test(2, -7 % 9);
+  test(7, 7 % -9);
+  test(7, 7 % 9);
+  test(2, -7 % -9);
+
+  test(3, (7).remainder(4));
+  test(2, (9).remainder(7));
+  test(-7, (-7).remainder(9));
+  test(7, (7).remainder(-9));
+  test(7, (7).remainder(9));
+  test(-7, (-7).remainder(-9));
 }
diff --git a/tests/language_2/issue32353_2_test.dart b/tests/language_2/issue32353_2_test.dart
index 6f0723b..c959089 100644
--- a/tests/language_2/issue32353_2_test.dart
+++ b/tests/language_2/issue32353_2_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
 
 // The following compile-time error is expected:
 //
@@ -14,7 +13,7 @@
 
 class B<X, Y> {}
 
-class C<X> extends B<X, A> {}
+mixin C<X> on B<X, A> {}
 
 class /*@compile-error=unspecified*/ D<X, Y> extends B<X, Y> with C {}
 
diff --git a/tests/language_2/issue32353_test.dart b/tests/language_2/issue32353_test.dart
index fbcc5d4..080d46d 100644
--- a/tests/language_2/issue32353_test.dart
+++ b/tests/language_2/issue32353_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
 
 import "package:expect/expect.dart";
 
@@ -23,8 +22,8 @@
 abstract class ForwardingFileSystemEntity<T extends FileSystemEntity,
     D extends io_FileSystemEntity> implements FileSystemEntity {}
 
-abstract class ForwardingDirectory<T extends Directory>
-    extends ForwardingFileSystemEntity<T, io_Directory> implements Directory {
+mixin ForwardingDirectory<T extends Directory>
+    on ForwardingFileSystemEntity<T, io_Directory> implements Directory {
   get t => T;
 }
 
diff --git a/tests/language_2/issue34404_flutter_test.dart b/tests/language_2/issue34404_flutter_test.dart
index 4e1c7f7..2e71697 100644
--- a/tests/language_2/issue34404_flutter_test.dart
+++ b/tests/language_2/issue34404_flutter_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
 
 // This test case is a reduction of some Flutter code.  We wish to verify that
 // the class _DismissibleState doesn't have any type inference errors.
@@ -21,13 +20,12 @@
 
 class Dismissible extends StatefulWidget {}
 
-abstract class TickerProviderStateMixin<T extends StatefulWidget>
-    extends State<T> implements TickerProvider {}
+mixin TickerProviderStateMixin<T extends StatefulWidget> on State<T>
+    implements TickerProvider {}
 
 abstract class TickerProvider {}
 
-abstract class AutomaticKeepAliveClientMixin<T extends StatefulWidget>
-    extends State<T> {}
+mixin AutomaticKeepAliveClientMixin<T extends StatefulWidget> on State<T> {}
 
 main() {
   new _DismissibleState();
diff --git a/tests/language_2/issue34635_test.dart b/tests/language_2/issue34635_test.dart
new file mode 100644
index 0000000..6d1c6c8
--- /dev/null
+++ b/tests/language_2/issue34635_test.dart
@@ -0,0 +1,9 @@
+// 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 /*@compile-error=unspecified*/ A<X extends C> {}
+
+class /*@compile-error=unspecified*/ C<X extends C> {}
+
+main() {}
diff --git a/tests/language_2/issue34636_test.dart b/tests/language_2/issue34636_test.dart
new file mode 100644
index 0000000..242eea0
--- /dev/null
+++ b/tests/language_2/issue34636_test.dart
@@ -0,0 +1,11 @@
+// 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 /*@compile-error=unspecified*/ A<X extends B> {}
+
+class /*@compile-error=unspecified*/ B<X extends C> {}
+
+class /*@compile-error=unspecified*/ C<X extends A<B>> {}
+
+main() {}
diff --git a/tests/language_2/issue34870_test.dart b/tests/language_2/issue34870_test.dart
new file mode 100644
index 0000000..750048d
--- /dev/null
+++ b/tests/language_2/issue34870_test.dart
@@ -0,0 +1,13 @@
+// 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.
+
+// Regression test: superclass is not shadowed by class members.
+
+class A extends B {
+  B() {}
+}
+
+class B {}
+
+main() {}
diff --git a/tests/language_2/issue34896_test.dart b/tests/language_2/issue34896_test.dart
new file mode 100644
index 0000000..d7a0ea3
--- /dev/null
+++ b/tests/language_2/issue34896_test.dart
@@ -0,0 +1,20 @@
+// 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.
+
+// Regression test: verify super-signatures of super-invoked methods of a
+// mixin against the superclass, not signatures in the mixin.
+
+class A<T> {
+  void remove(T x) {}
+}
+
+mixin M<U> on A<U> {
+  void remove(Object x) {
+    super.remove(x as U);
+  }
+}
+
+class X<T> = A<T> with M<T>;
+
+main() {}
diff --git a/tests/language_2/issue34907_test.dart b/tests/language_2/issue34907_test.dart
new file mode 100644
index 0000000..85fdf28
--- /dev/null
+++ b/tests/language_2/issue34907_test.dart
@@ -0,0 +1,18 @@
+// 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:expect/expect.dart";
+
+class C<T> {}
+
+mixin M<T> on C<T> {}
+
+M<T> f<T>() {
+  Expect.equals(T, int);
+  return null;
+}
+
+main() {
+  C<int> c = f();
+}
diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status
index 4be92d4..5622608 100644
--- a/tests/language_2/language_2.status
+++ b/tests/language_2/language_2.status
@@ -5,6 +5,22 @@
 [ $compiler == app_jit ]
 deferred_inheritance_constraints_test/redirecting_constructor: Crash
 
+[ $compiler == compare_analyzer_cfe ]
+const_native_factory_test: Fail # Issue 29763
+deferred_global_test: Fail # Issue 34503
+generic_field_mixin2_test: Fail # Issue 34489
+generic_local_functions_test: Fail # Issue 28515
+generic_methods_generic_function_parameter_test: Fail # Issue 28515
+issue34488_test/01: Fail # Issue 34488
+issue34488_test/02: Fail # Issue 34488
+issue34488_test/03: Fail # Issue 34488
+issue34488_test/04: Fail # Issue 34488
+issue34488_test/05: Fail # Issue 34488
+issue34488_test/06: Fail # Issue 34488
+issue34488_test/none: Fail # Issue 34488
+mixin_class_from_core_library_test: Fail # Issue 34488
+nested_generic_closure_test: Fail # Issue 28515
+
 [ $compiler != compare_analyzer_cfe ]
 mixin_constructor_forwarding/const_constructor_test/none: CompileTimeError # Issue 32223
 mixin_constructor_forwarding/const_constructor_with_field_test/none: CompileTimeError # Issue 32223
diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status
index 1a7bb18..5d74bcc 100644
--- a/tests/language_2/language_2_analyzer.status
+++ b/tests/language_2/language_2_analyzer.status
@@ -18,7 +18,6 @@
 const_cast2_test/01: CompileTimeError # failing-by-design: Not a const expression, see Issue #34334
 const_cast2_test/none: CompileTimeError # failing-by-design: Not a const expression, see Issue #34334
 const_constructor3_test/04: MissingCompileTimeError # Side-effect of working around issue 33441 for int-to-double
-constructor_reference_test/27: MissingCompileTimeError # Issue 34403
 covariant_subtyping_with_mixin_test: CompileTimeError # Issue 34329
 dynamic_prefix_core_test/01: MissingCompileTimeError # failing-by-design: #34339
 emit_const_fields_test: CompileTimeError # failing-by-design: #34340
@@ -26,6 +25,7 @@
 enum_syntax_test/06: Fail # Issue 34341
 f_bounded_quantification2_test: CompileTimeError # Issue 34583
 f_bounded_quantification4_test: CompileTimeError # Issue 34583
+for_test/01: MissingCompileTimeError
 forwarding_stub_tearoff_test: CompileTimeError # Issue 34329
 generic_local_functions_test: CompileTimeError # Issue 28515
 generic_methods_generic_function_parameter_test: CompileTimeError # Issue 28515
@@ -72,21 +72,11 @@
 issue34498_test: MissingCompileTimeError # Issue 34500
 large_class_declaration_test: Slow, Pass
 malformed2_test: Pass, MissingCompileTimeError # Flaky: issue 31056.
+mixin_declaration/mixin_declaration_factory_test/02: Crash # Issue 34809
 mixin_declaration/mixin_declaration_invalid_superinvocation_test/10: CompileTimeError # Issue 30552
 mixin_method_override_test/01: MissingCompileTimeError
-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
-mixin_supertype_subclass3_test/05: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass4_test/01: MissingStaticWarning # Issue 25614
-mixin_supertype_subclass4_test/02: MissingStaticWarning # Issue 25614
-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, MissingStaticWarning # failing-by-design, see Issue #34376
-mixin_supertype_subclass_test/05: MissingCompileTimeError, MissingStaticWarning # failing-by-design, see Issue #34376
+mixin_super_2_test: CompileTimeError
+mixin_super_use_test: CompileTimeError
 mock_writable_final_private_field_test: CompileTimeError # failing-by-design, see Issue #34377
 multiple_interface_inheritance_test: CompileTimeError # Issue 30552
 nested_generic_closure_test: CompileTimeError # Issue #28515
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 79e1714..4fd51d6 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -10,7 +10,6 @@
 bit_operations_test/03: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 bit_operations_test/04: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 bit_operations_test/none: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-bug32372_test: CompileTimeError
 call_method_as_cast_test/06: RuntimeError
 call_method_implicit_tear_off_implements_function_test/05: RuntimeError
 call_method_implicit_tear_off_implements_function_test/06: RuntimeError
@@ -30,7 +29,6 @@
 external_test/13: CompileTimeError # External non-js-interop function are treated as compile-time errors.
 external_test/20: CompileTimeError # External non-js-interop function are treated as compile-time errors.
 function_propagation_test: RuntimeError
-generic_test/01: MissingCompileTimeError # front end does not validate `extends`
 guess_cid_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 identical_closure2_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 instantiate_tearoff_of_call_test: RuntimeError
@@ -48,35 +46,19 @@
 int64_literal_test/19: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 int64_literal_test/none: RuntimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 issue23244_test: RuntimeError # Isolates - enum canonicalization - Issue 23244
-issue32353_test: CompileTimeError
-issue34404_flutter_test: CompileTimeError # --supermixin not supported
 library_env_test/has_mirror_support: RuntimeError, OK
 library_env_test/has_no_html_support: RuntimeError, OK
 list_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 mint_arithmetic_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 mint_compares_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 mint_identical_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
-mixin_type_parameter_inference_error_test/none: CompileTimeError
-mixin_type_parameter_inference_previous_mixin_test/01: CompileTimeError
-mixin_type_parameter_inference_previous_mixin_test/02: CompileTimeError
-mixin_type_parameter_inference_previous_mixin_test/05: CompileTimeError
-mixin_type_parameter_inference_previous_mixin_test/none: CompileTimeError
-mixin_type_parameter_inference_test/01: CompileTimeError
-mixin_type_parameter_inference_test/02: CompileTimeError
-mixin_type_parameter_inference_test/03: CompileTimeError
-mixin_type_parameter_inference_test/08: CompileTimeError
-mixin_type_parameter_inference_test/09: CompileTimeError
-mixin_type_parameter_inference_test/10: CompileTimeError
-mixin_type_parameter_inference_test/12: CompileTimeError
-mixin_type_parameter_inference_test/13: CompileTimeError
-mixin_type_parameter_inference_test/16: CompileTimeError
-mixin_type_parameter_inference_test/none: CompileTimeError
 number_identity_test: CompileTimeError, OK # Error if web int literal cannot be represented exactly, see http://dartbug.com/33351
 partial_instantiation_eager_bounds_check_test: RuntimeError # Issue #34295
 partial_tearoff_instantiation_test/05: Pass # for the wrong reason.
 partial_tearoff_instantiation_test/06: Pass # for the wrong reason.
 partial_tearoff_instantiation_test/07: Pass # for the wrong reason.
 partial_tearoff_instantiation_test/08: Pass # for the wrong reason.
+private_method_tearoff_test: RuntimeError
 vm/*: SkipByDesign # Tests for the VM.
 
 [ $compiler != dart2js ]
@@ -162,8 +144,6 @@
 checked_method_error_order_test: RuntimeError
 class_cycle_test/02: MissingCompileTimeError
 class_cycle_test/03: MissingCompileTimeError
-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
@@ -216,7 +196,6 @@
 const_constructor2_test/20: MissingCompileTimeError
 const_constructor2_test/22: MissingCompileTimeError
 const_constructor2_test/24: MissingCompileTimeError
-const_dynamic_type_literal_test/02: MissingCompileTimeError
 const_error_multiply_initialized_test/02: MissingCompileTimeError
 const_error_multiply_initialized_test/04: MissingCompileTimeError
 const_evaluation_test/01: RuntimeError
@@ -349,29 +328,6 @@
 mixin_mixin_bound2_test: RuntimeError
 mixin_mixin_bound_test: RuntimeError
 mixin_mixin_test: RuntimeError
-mixin_of_mixin_test/none: CompileTimeError
-mixin_super_2_test/none: CompileTimeError
-mixin_super_test: CompileTimeError
-mixin_super_use_test: CompileTimeError
-mixin_superclass_test: CompileTimeError
-mixin_supertype_subclass2_test/01: CompileTimeError
-mixin_supertype_subclass2_test/02: CompileTimeError
-mixin_supertype_subclass2_test/03: CompileTimeError
-mixin_supertype_subclass2_test/04: CompileTimeError
-mixin_supertype_subclass2_test/05: CompileTimeError
-mixin_supertype_subclass2_test/none: CompileTimeError
-mixin_supertype_subclass3_test/01: CompileTimeError
-mixin_supertype_subclass3_test/02: CompileTimeError
-mixin_supertype_subclass3_test/03: CompileTimeError
-mixin_supertype_subclass3_test/04: CompileTimeError
-mixin_supertype_subclass3_test/05: CompileTimeError
-mixin_supertype_subclass3_test/none: CompileTimeError
-mixin_supertype_subclass4_test/01: CompileTimeError
-mixin_supertype_subclass4_test/02: CompileTimeError
-mixin_supertype_subclass4_test/03: CompileTimeError
-mixin_supertype_subclass4_test/04: CompileTimeError
-mixin_supertype_subclass4_test/05: CompileTimeError
-mixin_supertype_subclass4_test/none: CompileTimeError
 mixin_type_parameters_super_test: RuntimeError
 mock_writable_final_field_test: RuntimeError # Issue 30847
 mock_writable_final_private_field_test: RuntimeError # Issue 17526, 30847
@@ -407,11 +363,6 @@
 stacktrace_rethrow_error_test/withtraceparameter: RuntimeError # Issue 12698
 stacktrace_rethrow_nonerror_test: RuntimeError # Issue 12698
 stacktrace_test: RuntimeError # Issue 12698
-switch_bad_case_test/01: MissingCompileTimeError
-switch_bad_case_test/02: MissingCompileTimeError
-switch_case_test/00: MissingCompileTimeError
-switch_case_test/01: MissingCompileTimeError
-switch_case_test/02: MissingCompileTimeError
 symbol_literal_test/01: MissingCompileTimeError
 tearoff_dynamic_test: RuntimeError
 truncdiv_test: RuntimeError # non JS number semantics - Issue 15246
@@ -443,21 +394,11 @@
 class_literal_static_test/03: MissingCompileTimeError
 class_literal_static_test/07: MissingCompileTimeError
 closure_self_reference_test: Crash # 'file:*/pkg/compiler/lib/src/ssa/nodes.dart': Failed assertion: line 641 pos 12: 'isClosed()': is not true.
-compile_time_constant_k_test/01: MissingCompileTimeError
-compile_time_constant_k_test/02: MissingCompileTimeError
-compile_time_constant_k_test/03: MissingCompileTimeError
 config_import_corelib_test: CompileTimeError
 covariant_subtyping_test: RuntimeError
-identical_const_test/01: MissingCompileTimeError
-identical_const_test/02: MissingCompileTimeError
-identical_const_test/03: MissingCompileTimeError
-identical_const_test/04: MissingCompileTimeError
-issue18628_2_test/01: MissingCompileTimeError
 issue23244_test: Crash # 'file:*/pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart': Failed assertion: line 208 pos 18: '!(_useKernel && _strongMode && !_disableRtiOptimization) ||
 library_env_test/has_no_html_support: RuntimeError
 library_env_test/has_no_io_support: RuntimeError
-map_literal3_test/01: MissingCompileTimeError
-map_literal3_test/02: MissingCompileTimeError
 map_literal3_test/03: MissingCompileTimeError
 partial_tearoff_instantiation_test/05: Crash # Assertion failure: kind=special,memberName=instantiate,callStructure:CallStructure(arity=0, types=1)
 partial_tearoff_instantiation_test/06: Crash # Assertion failure: kind=special,memberName=instantiate,callStructure:CallStructure(arity=0, types=1)
@@ -467,7 +408,6 @@
 regress_18535_test: RuntimeError
 type_literal_prefix_call_test/00: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
-type_variable_bounds_test/02: Crash # NoSuchMethodError: The method 'accept' was called on null.
 
 [ $compiler == dart2js && $minified ]
 cyclic_type2_test: RuntimeError # Issue 31054
@@ -493,23 +433,13 @@
 class_literal_static_test/01: MissingCompileTimeError
 class_literal_static_test/03: MissingCompileTimeError
 class_literal_static_test/07: MissingCompileTimeError
-compile_time_constant_k_test/01: MissingCompileTimeError
-compile_time_constant_k_test/02: MissingCompileTimeError
-compile_time_constant_k_test/03: MissingCompileTimeError
 config_import_corelib_test: CompileTimeError
 covariant_subtyping_test: RuntimeError
-identical_const_test/01: MissingCompileTimeError
-identical_const_test/02: MissingCompileTimeError
-identical_const_test/03: MissingCompileTimeError
-identical_const_test/04: MissingCompileTimeError
 invocation_mirror2_test: RuntimeError # mirrors not supported
 invocation_mirror_test: RuntimeError
-issue18628_2_test/01: MissingCompileTimeError
 issue23244_test: Crash # Interpolated value #1 is not an Expression or List of Expressions: [VariableUse(f), Instance of 'LiteralNull', null]
 library_env_test/has_no_html_support: RuntimeError
 many_overridden_no_such_method_test: RuntimeError
-map_literal3_test/01: MissingCompileTimeError
-map_literal3_test/02: MissingCompileTimeError
 map_literal3_test/03: MissingCompileTimeError
 mixin_generic_test: RuntimeError # Issue 12605
 mixin_mixin_type_arguments_test: RuntimeError
@@ -524,7 +454,6 @@
 symbol_conflict_test: RuntimeError # Issue 23857
 type_literal_prefix_call_test/00: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
-type_variable_bounds_test/02: Crash # NoSuchMethodError: The method 'accept' was called on null.
 
 [ $compiler == dart2js && $strong ]
 async_await_test/02: RuntimeError
@@ -535,8 +464,6 @@
 branch_canonicalization_test: RuntimeError
 canonical_const2_test: RuntimeError, OK # non JS number semantics
 closure_type_arguments_test: Crash # Issue 34272
-compile_time_constant_o_test/01: MissingCompileTimeError
-compile_time_constant_o_test/02: MissingCompileTimeError
 compile_time_constant_static5_test/11: CompileTimeError
 compile_time_constant_static5_test/16: CompileTimeError
 compile_time_constant_static5_test/21: CompileTimeError
@@ -544,7 +471,6 @@
 conditional_rewrite_test: RuntimeError
 config_import_test: RuntimeError
 const_constructor3_test/04: MissingCompileTimeError # OK - Subtype check uses JS number semantics.
-const_dynamic_type_literal_test/02: MissingCompileTimeError
 const_evaluation_test/01: RuntimeError
 const_list_test: RuntimeError
 const_map2_test/00: MissingCompileTimeError
@@ -583,7 +509,6 @@
 generic_instanceof2_test: RuntimeError
 generic_is_check_test: RuntimeError
 generic_methods_bounds_test/02: MissingRuntimeError
-generic_methods_generic_function_result_test/01: MissingCompileTimeError
 generic_no_such_method_dispatcher_simple_test: CompileTimeError
 generic_no_such_method_dispatcher_test: CompileTimeError
 generic_tearoff_test: CompileTimeError
@@ -642,33 +567,6 @@
 mixin_illegal_superclass_test/29: MissingCompileTimeError
 mixin_illegal_superclass_test/30: MissingCompileTimeError
 mixin_method_override_test/G5: Skip # Issue 34354
-mixin_of_mixin_test/none: CompileTimeError
-mixin_super_2_test/none: CompileTimeError
-mixin_super_test: CompileTimeError
-mixin_super_use_test: CompileTimeError
-mixin_superclass_test: CompileTimeError
-mixin_supertype_subclass2_test/01: CompileTimeError
-mixin_supertype_subclass2_test/02: CompileTimeError
-mixin_supertype_subclass2_test/03: CompileTimeError
-mixin_supertype_subclass2_test/04: CompileTimeError
-mixin_supertype_subclass2_test/05: CompileTimeError
-mixin_supertype_subclass2_test/none: CompileTimeError
-mixin_supertype_subclass3_test/01: CompileTimeError
-mixin_supertype_subclass3_test/02: CompileTimeError
-mixin_supertype_subclass3_test/03: CompileTimeError
-mixin_supertype_subclass3_test/04: CompileTimeError
-mixin_supertype_subclass3_test/05: CompileTimeError
-mixin_supertype_subclass3_test/none: CompileTimeError
-mixin_supertype_subclass4_test/01: CompileTimeError
-mixin_supertype_subclass4_test/02: CompileTimeError
-mixin_supertype_subclass4_test/03: CompileTimeError
-mixin_supertype_subclass4_test/04: CompileTimeError
-mixin_supertype_subclass4_test/05: CompileTimeError
-mixin_supertype_subclass4_test/none: CompileTimeError
-mixin_supertype_subclass_test/01: CompileTimeError
-mixin_supertype_subclass_test/03: CompileTimeError
-mixin_supertype_subclass_test/04: CompileTimeError
-mixin_supertype_subclass_test/none: CompileTimeError
 mock_writable_final_field_test: RuntimeError # Issue 30847
 mock_writable_final_private_field_test: RuntimeError # Issue 17526, 30847
 modulo_test: RuntimeError # non JS number semantics
@@ -698,11 +596,6 @@
 super_bound_closure_test/none: CompileTimeError
 super_call4_test/01: MissingCompileTimeError
 super_test: RuntimeError
-switch_bad_case_test/01: MissingCompileTimeError
-switch_bad_case_test/02: MissingCompileTimeError
-switch_case_test/00: MissingCompileTimeError
-switch_case_test/01: MissingCompileTimeError
-switch_case_test/02: MissingCompileTimeError
 tearoff_dynamic_test: RuntimeError
 truncdiv_test: RuntimeError # non JS number semantics - Issue 15246
 type_error_test: RuntimeError
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index a349516..03dc93b 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -33,7 +33,6 @@
 const_constructor3_test/04: MissingCompileTimeError # Side-effect of working around issue 33441 for int-to-double
 const_constructor_mixin3_test/01: MissingCompileTimeError # Issue 33644
 const_constructor_mixin_test/01: MissingCompileTimeError # Issue 33644
-constructor_reference_test/27: MissingCompileTimeError # Issue https://github.com/dart-lang/sdk/issues/34403
 covariance_field_test/03: RuntimeError
 covariant_override/tear_off_type_test: RuntimeError # Issue 28395
 covariant_subtyping_with_mixin_test: CompileTimeError # Issue 34329
@@ -50,6 +49,7 @@
 f_bounded_quantification3_test: RuntimeError # Issue 29920
 f_bounded_quantification4_test: CompileTimeError # Issue 34583
 field_wierd_name_test: Crash
+for_test/01: MissingCompileTimeError
 forwarding_stub_tearoff_generic_test: RuntimeError
 forwarding_stub_tearoff_test: CompileTimeError
 function_propagation_test: RuntimeError
@@ -100,13 +100,16 @@
 issue31596_super_test/none: CompileTimeError
 issue31596_tearoff_test: CompileTimeError
 issue31596_test: CompileTimeError
-issue32353_test: RuntimeError
+issue32353_test: CompileTimeError # Issue 34846
 issue34404_flutter_modified_test: CompileTimeError # DDC doesn't support mixin inference
 issue34404_flutter_test: CompileTimeError # DDC doesn't support mixin inference
 issue34498_test: MissingCompileTimeError # Issue 34500
+issue34635_test: MissingCompileTimeError
+issue34636_test: MissingCompileTimeError
 label_test: RuntimeError
 large_class_declaration_test: Slow, Pass
 left_shift_test: RuntimeError # Ints and doubles are unified.
+mixin_declaration/mixin_declaration_factory_test/02: Crash
 mixin_declaration/mixin_declaration_inference_invalid_03_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/34167
 mixin_declaration/mixin_declaration_inference_invalid_04_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/34167
 mixin_declaration/mixin_declaration_inference_invalid_05_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/34167
@@ -147,12 +150,8 @@
 mixin_declaration/mixin_declaration_inference_valid_mixin_applications_test: CompileTimeError # https://github.com/dart-lang/sdk/issues/34164
 mixin_declaration/mixin_declaration_invalid_superinvocation_test/10: CompileTimeError # Analyzer chooses wrong(?) super method.
 mixin_method_override_test/01: MissingCompileTimeError
-mixin_super_2_test/01: MissingCompileTimeError
-mixin_super_2_test/03: MissingCompileTimeError
-mixin_super_test: RuntimeError
-mixin_super_use_test: RuntimeError
-mixin_supertype_subclass_test/02: MissingCompileTimeError
-mixin_supertype_subclass_test/05: MissingCompileTimeError
+mixin_super_2_test: CompileTimeError # Issue 34806
+mixin_super_use_test: CompileTimeError # Issue 34806
 mixin_type_parameter_inference_previous_mixin_test/01: CompileTimeError
 mixin_type_parameter_inference_previous_mixin_test/02: CompileTimeError
 mixin_type_parameter_inference_previous_mixin_test/04: MissingCompileTimeError
@@ -171,6 +170,7 @@
 part_of_multiple_libs_test/01: MissingCompileTimeError
 part_refers_to_core_library_test/01: Crash
 prefix_shadow_test/01: MissingCompileTimeError # Issue 33005
+private_method_tearoff_test: RuntimeError
 regress_23089_test: MissingCompileTimeError
 regress_23408_test: CompileTimeError
 regress_24283_test: RuntimeError # Intended to fail, requires 64-bit numbers.
@@ -263,10 +263,8 @@
 function_type_parameter2_negative_test: Fail
 function_type_parameter_negative_test: Fail
 generic_function_bounds_test: RuntimeError
-generic_methods_generic_function_result_test/01: MissingCompileTimeError
 generic_no_such_method_dispatcher_simple_test: CompileTimeError # Warning: Superclass has no method named 'foo'.
 generic_no_such_method_dispatcher_test: CompileTimeError # Issue 31533
-generic_test/01: MissingCompileTimeError # front end does not validate `extends`
 identical_const_test/01: MissingCompileTimeError
 identical_const_test/02: MissingCompileTimeError
 identical_const_test/03: MissingCompileTimeError
@@ -283,23 +281,14 @@
 implicit_creation/implicit_const_not_default_values_test/e6: Pass
 implicit_creation/implicit_const_not_default_values_test/e9: Pass
 instantiate_tearoff_of_call_test: CompileTimeError
-issue18628_2_test/01: MissingCompileTimeError
 issue31596_super_test/01: CompileTimeError
 issue31596_super_test/03: CompileTimeError
 issue31596_super_test/05: RuntimeError
 map_literal3_test/01: MissingCompileTimeError
 map_literal3_test/02: MissingCompileTimeError
 map_literal3_test/03: MissingCompileTimeError
-mixin_declaration/mixin_declaration_inference_invalid_07_test: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/34165
-mixin_declaration/mixin_declaration_invalid_override_test/08: MissingCompileTimeError
 mixin_declaration/mixin_declaration_invalid_syntax_test/none: CompileTimeError
-mixin_declaration/mixin_declaration_invalid_usage_test/03: MissingCompileTimeError
 mixin_declaration/mixin_declaration_subtype_test: RuntimeError
-mixin_declaration/mixin_declaration_superinvocation_application_test/04: MissingCompileTimeError
-mixin_declaration/mixin_declaration_superinvocation_application_test/05: MissingCompileTimeError
-mixin_declaration/mixin_declaration_superinvocation_application_test/06: MissingCompileTimeError
-mixin_declaration/mixin_declaration_superinvocation_application_test/07: MissingCompileTimeError
-mixin_declaration/mixin_declaration_superinvocation_application_test/08: MissingCompileTimeError
 mixin_illegal_super_use_test/01: MissingCompileTimeError
 mixin_illegal_super_use_test/04: MissingCompileTimeError
 mixin_illegal_super_use_test/07: MissingCompileTimeError
@@ -335,12 +324,8 @@
 mixin_illegal_superclass_test/28: MissingCompileTimeError
 mixin_illegal_superclass_test/29: MissingCompileTimeError
 mixin_illegal_superclass_test/30: MissingCompileTimeError
-mixin_super_2_test/01: MissingCompileTimeError
-mixin_super_2_test/03: MissingCompileTimeError
-mixin_super_test: RuntimeError
-mixin_super_use_test: RuntimeError
-mixin_supertype_subclass_test/02: MissingCompileTimeError
-mixin_supertype_subclass_test/05: MissingCompileTimeError
+mixin_super_2_test: RuntimeError # Issue 34807
+mixin_super_use_test: RuntimeError # Issue 34808
 mock_writable_final_private_field_test: RuntimeError
 multiline_newline_test/04: MissingCompileTimeError
 multiline_newline_test/04r: MissingCompileTimeError
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index 349ebbc..d715621 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -71,7 +71,6 @@
 generic_no_such_method_dispatcher_simple_test: CompileTimeError
 generic_no_such_method_dispatcher_test: CompileTimeError
 generic_tearoff_test: CompileTimeError
-generic_test/01: MissingCompileTimeError
 instantiate_tearoff_of_call_test: CompileTimeError
 issue31596_super_test/01: CompileTimeError
 issue31596_super_test/03: CompileTimeError
@@ -154,10 +153,10 @@
 
 [ $compiler == dartdevk ]
 mixin_method_override_test/G5: Skip # Issue 34354
+private_method_tearoff_test: RuntimeError
 
 [ $compiler == dartkp ]
 covariant_subtyping_test: RuntimeError
-generic_methods_generic_function_result_test/01: MissingCompileTimeError
 generic_no_such_method_dispatcher_test: RuntimeError # Issue 31424
 web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
 
@@ -174,7 +173,6 @@
 assertion_initializer_const_error2_test/cc10: MissingCompileTimeError
 const_cast1_test/02: MissingCompileTimeError
 const_constructor_nonconst_param_test/01: MissingCompileTimeError
-generic_test/01: MissingCompileTimeError
 implicit_creation/implicit_const_not_default_values_test/e1: MissingCompileTimeError
 implicit_creation/implicit_const_not_default_values_test/e10: MissingCompileTimeError
 implicit_creation/implicit_const_not_default_values_test/e11: MissingCompileTimeError
@@ -207,20 +205,11 @@
 const_cast2_test/none: CompileTimeError # Issue 32517
 const_constructor_mixin3_test: CompileTimeError # Issue 33644.
 const_constructor_mixin_test: CompileTimeError # Issue 33644.
-constructor_reference_test/27: MissingCompileTimeError # Issue 34403
 deferred_inheritance_constraints_test/extends: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
 deferred_inheritance_constraints_test/implements: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
 deferred_inheritance_constraints_test/mixin: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
-f_bounded_quantification_test/01: MissingCompileTimeError # Issue 33308
-f_bounded_quantification_test/02: MissingCompileTimeError # Issue 33308
-generic_methods_bounds_test/01: MissingCompileTimeError # Issue 33308
-generic_methods_recursive_bound_test/02: MissingCompileTimeError # Issue 33308
-instantiate_to_bounds_super_bounded_test/14: MissingCompileTimeError # Issue 33308
-instantiate_to_bounds_super_bounded_test/15: MissingCompileTimeError # Issue 33308
-instantiate_to_bounds_super_bounded_test/17: MissingCompileTimeError # Issue 33308
-instantiate_to_bounds_super_bounded_test/18: MissingCompileTimeError # Issue 33308
-instantiate_to_bounds_super_bounded_test/20: MissingCompileTimeError # Issue 33308
-instantiate_to_bounds_super_bounded_test/21: MissingCompileTimeError # Issue 33308
+f_bounded_quantification2_test: CompileTimeError # Issue 34583
+f_bounded_quantification4_test: CompileTimeError # Issue 34583
 issue31596_super_test/02: MissingCompileTimeError # Issue 31596
 issue31596_super_test/04: MissingCompileTimeError # Issue 31596
 issue34488_test/01: MissingCompileTimeError # Issue 34488
@@ -229,60 +218,13 @@
 issue34488_test/04: MissingCompileTimeError # Issue 34488
 issue34488_test/05: MissingCompileTimeError # Issue 34488
 issue34488_test/06: MissingCompileTimeError # Issue 34488
-issue34498_test: MissingCompileTimeError # Issue 34498
-issue34532_test: MissingCompileTimeError # Issue 33308
-malbounded_instantiation_test/01: MissingCompileTimeError # Issue 33308
-malbounded_instantiation_test/02: MissingCompileTimeError # Issue 33308
-malbounded_instantiation_test/03: MissingCompileTimeError # Issue 33308
-malbounded_redirecting_factory_test/03: MissingCompileTimeError # Issue 33308
-malbounded_redirecting_factory_test/04: MissingCompileTimeError # Issue 33308
-malbounded_redirecting_factory_test/05: MissingCompileTimeError # Issue 33308
-malbounded_type_cast2_test: MissingCompileTimeError # Issue 33308
-malbounded_type_cast_test/00: MissingCompileTimeError # Issue 33308
-malbounded_type_cast_test/01: MissingCompileTimeError # Issue 33308
-malbounded_type_cast_test/02: MissingCompileTimeError # Issue 33308
-malbounded_type_literal_test/00: MissingCompileTimeError # Issue 33308
-malbounded_type_test2_test/00: MissingCompileTimeError # Issue 33308
-malbounded_type_test_test/00: MissingCompileTimeError # Issue 33308
-malbounded_type_test_test/01: MissingCompileTimeError # Issue 33308
-malbounded_type_test_test/02: MissingCompileTimeError # Issue 33308
-mixin_declaration/mixin_declaration_inference_invalid_07_test: MissingCompileTimeError
-mixin_declaration/mixin_declaration_invalid_application_supertype_test/05: MissingCompileTimeError
-mixin_declaration/mixin_declaration_invalid_application_supertype_test/06: MissingCompileTimeError
-mixin_declaration/mixin_declaration_invalid_application_supertype_test/07: MissingCompileTimeError
 mixin_declaration/mixin_declaration_invalid_override_test/08: MissingCompileTimeError
-mixin_declaration/mixin_declaration_invalid_usage_test/03: MissingCompileTimeError
 mixin_declaration/mixin_declaration_superinvocation_application_test/04: MissingCompileTimeError
 mixin_declaration/mixin_declaration_superinvocation_application_test/05: MissingCompileTimeError
 mixin_declaration/mixin_declaration_superinvocation_application_test/06: MissingCompileTimeError
 mixin_declaration/mixin_declaration_superinvocation_application_test/07: MissingCompileTimeError
 mixin_declaration/mixin_declaration_superinvocation_application_test/08: MissingCompileTimeError
-mixin_invalid_bound2_test/02: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/03: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/04: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/05: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/06: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/07: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/08: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/09: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/10: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/11: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/12: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/13: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/14: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound2_test/15: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/02: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/03: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/04: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/05: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/06: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/07: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/08: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/09: MissingCompileTimeError # Issue 33308
-mixin_invalid_bound_test/10: MissingCompileTimeError # Issue 33308
 mixin_method_override_test/G5: Crash # Issue 34354
-mixin_super_bound_test/01: MissingCompileTimeError # Issue 33308
-mixin_super_bound_test/02: MissingCompileTimeError # Issue 33308
 regress_22976_test/*: CompileTimeError # Issue 31935
 syntax_test/28: MissingCompileTimeError # Issue 29763 - low priority
 syntax_test/29: MissingCompileTimeError # Issue 29763 - low priority
@@ -292,18 +234,6 @@
 syntax_test/33: MissingCompileTimeError # Issue 29763 - low priority
 syntax_test/60: MissingCompileTimeError # Issue 30470
 syntax_test/61: MissingCompileTimeError # Issue 30470
-type_variable_bounds2_test: MissingCompileTimeError # Issue 33308
-type_variable_bounds3_test/00: MissingCompileTimeError # Issue 33308
-type_variable_bounds4_test/01: MissingCompileTimeError # Issue 33308
-type_variable_bounds_test/01: MissingCompileTimeError # Issue 33308
-type_variable_bounds_test/02: MissingCompileTimeError # Issue 33308
-type_variable_bounds_test/03: MissingCompileTimeError # Issue 33308
-type_variable_bounds_test/04: MissingCompileTimeError # Issue 33308
-type_variable_bounds_test/05: MissingCompileTimeError # Issue 33308
-type_variable_bounds_test/06: MissingCompileTimeError # Issue 33308
-typedef_check_bounds_generic_test: MissingCompileTimeError
-typedef_check_bounds_test: MissingCompileTimeError
-typedef_check_bounds_unused_test: MissingCompileTimeError
 vm/debug_break_enabled_vm_test/01: CompileTimeError # KernelVM bug: Bad test using extended break syntax.
 vm/debug_break_enabled_vm_test/none: CompileTimeError # KernelVM bug: Bad test using extended break syntax.
 vm/regress_27201_test: CompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 30273.
@@ -323,19 +253,11 @@
 # compile-time errors).
 [ $compiler != dart2analyzer && $compiler != dart2js && $compiler != dartkb && $compiler != dartkp && $fasta ]
 compile_time_constant_c_test/02: MissingCompileTimeError
-const_constructor_nonconst_field_test/01: MissingCompileTimeError
-const_syntax_test/05: MissingCompileTimeError
-
-[ $compiler != dart2analyzer && $compiler != dart2js && $fasta && $strong ]
-super_call4_test/01: MissingCompileTimeError
-
-# The precomilation and bytecode configurations use a kernel2kernel constants evaluator
-# which is is more correct than fasta/vm in JIT mode (i.e. it catches more
-# compile-time errors).
-[ $compiler != dart2analyzer && $compiler != dartkb && $compiler != dartkp && $fasta ]
 compile_time_constant_o_test/01: MissingCompileTimeError # Issue 32983
 compile_time_constant_o_test/02: MissingCompileTimeError # Issue 32983
+const_constructor_nonconst_field_test/01: MissingCompileTimeError
 const_dynamic_type_literal_test/02: MissingCompileTimeError # Issue 32983
+const_syntax_test/05: MissingCompileTimeError
 identical_const_test/01: MissingCompileTimeError # Issue 32983
 identical_const_test/02: MissingCompileTimeError # Issue 32983
 identical_const_test/03: MissingCompileTimeError # Issue 32983
@@ -344,22 +266,27 @@
 # The precomilation and bytecode configurations use a kernel2kernel constants evaluator
 # which is is more correct than fasta/vm in JIT mode (i.e. it catches more
 # compile-time errors).
-[ $compiler != dart2analyzer && $compiler != dartkb && $compiler != dartkp && $fasta && $strong ]
+[ $compiler != dart2analyzer && $compiler != dart2js && $compiler != dartkb && $compiler != dartkp && $fasta && $strong ]
 compile_time_constant_k_test/01: MissingCompileTimeError
 compile_time_constant_k_test/02: MissingCompileTimeError
 compile_time_constant_k_test/03: MissingCompileTimeError
 map_literal3_test/01: MissingCompileTimeError
 map_literal3_test/02: MissingCompileTimeError
 
-[ $compiler != dart2analyzer && $fasta ]
-const_map2_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
-const_map3_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
+[ $compiler != dart2analyzer && $compiler != dart2js && $fasta ]
 switch_bad_case_test/01: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_bad_case_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_case_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_case_test/01: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 switch_case_test/02: MissingCompileTimeError # KernelVM bug: Constant evaluation.
 
+[ $compiler != dart2analyzer && $compiler != dart2js && $fasta && $strong ]
+super_call4_test/01: MissingCompileTimeError
+
+[ $compiler != dart2analyzer && $fasta ]
+const_map2_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
+const_map3_test/00: MissingCompileTimeError # KernelVM bug: Constant evaluation.
+
 [ $compiler != dart2analyzer && $fasta && $strong ]
 map_literal3_test/03: MissingCompileTimeError
 
@@ -369,12 +296,6 @@
 [ $compiler != dart2js && $compiler != dartdevk && $fasta ]
 const_native_factory_test: MissingCompileTimeError # Issue 29763
 
-[ $compiler != dart2js && $fasta ]
-mixin_super_2_test/01: MissingCompileTimeError
-mixin_super_2_test/03: MissingCompileTimeError
-mixin_supertype_subclass_test/02: MissingCompileTimeError
-mixin_supertype_subclass_test/05: MissingCompileTimeError
-
 [ $compiler == dartk && $runtime == vm && !$checked && $strong ]
 assertion_initializer_const_error2_test/cc01: MissingCompileTimeError # Not reporting failed assert() at compile time.
 assertion_initializer_const_error2_test/cc02: MissingCompileTimeError # Not reporting failed assert() at compile time.
@@ -477,21 +398,13 @@
 generic_methods_new_test: Pass # Issue 25869
 generic_methods_test: Pass # Issue 25869
 known_identifier_usage_error_test/none: RuntimeError # Issue 28814
-malbounded_redirecting_factory_test/03: Fail
-malbounded_redirecting_factory_test/04: Fail
 malbounded_type_test_test/03: Fail
 malbounded_type_test_test/04: Fail
-mixin_invalid_bound2_test/08: Fail
-mixin_invalid_bound2_test/09: Fail
-mixin_invalid_bound2_test/10: Fail
-mixin_invalid_bound_test/06: Fail
-mixin_invalid_bound_test/07: Fail
 recursive_inheritance_test: RuntimeError
 redirecting_factory_infinite_steps_test/01: Fail
 redirecting_factory_malbounded_test/01: Fail
 regress_22728_test: Fail # Dartk Issue 28498
 regress_22728_test: RuntimeError
-type_variable_bounds4_test/01: RuntimeError
 
 [ $compiler == dartkp && $runtime == dart_precompiled && !$checked && $strong ]
 assertion_initializer_const_error_test/01: MissingCompileTimeError
@@ -614,15 +527,14 @@
 invocation_mirror2_test: SkipByDesign
 invocation_mirror_invoke_on2_test: SkipByDesign
 invocation_mirror_invoke_on_test: SkipByDesign
-issue18628_2_test/01: MissingCompileTimeError
 issue21079_test: SkipByDesign
 issue31596_super_test/01: CompileTimeError
 issue31596_super_test/03: CompileTimeError
 issue31596_super_test/05: RuntimeError
 least_upper_bound_expansive_test/none: RuntimeError
 library_env_test/has_html_support: RuntimeError # KernelVM bug: Configurable imports.
-library_env_test/has_mirror_support: RuntimeError, OK
 library_env_test/has_no_io_support: RuntimeError # KernelVM bug: Configurable imports.
+library_env_test/has_no_mirror_support: RuntimeError
 local_function2_test/none: RuntimeError
 local_function3_test/none: RuntimeError
 local_function_test/none: RuntimeError
@@ -740,7 +652,6 @@
 emit_const_fields_test: CompileTimeError
 external_test/21: CompileTimeError
 external_test/24: CompileTimeError
-generic_methods_generic_function_result_test/01: MissingCompileTimeError
 generic_no_such_method_dispatcher_simple_test: CompileTimeError
 generic_no_such_method_dispatcher_test: CompileTimeError
 generic_tearoff_test: CompileTimeError
@@ -1089,17 +1000,9 @@
 assert_initializer_test/none: RuntimeError # KernelVM bug: Constant evaluation.
 async_return_types_test/nestedFuture: Fail
 compile_time_constant_checked_test/02: MissingCompileTimeError
-malbounded_redirecting_factory_test/03: Fail
-malbounded_redirecting_factory_test/04: Fail
 malbounded_type_test_test/03: Fail
 malbounded_type_test_test/04: Fail
-mixin_invalid_bound2_test/08: Fail
-mixin_invalid_bound2_test/09: Fail
-mixin_invalid_bound2_test/10: Fail
-mixin_invalid_bound_test/06: Fail
-mixin_invalid_bound_test/07: Fail
 regress_30339_test: RuntimeError
-type_variable_bounds4_test/01: RuntimeError
 
 [ $runtime == vm && !$checked && $strong && ($compiler == dartk || $compiler == dartkb) ]
 conditional_rewrite_test: RuntimeError # Issue 31402 (Not)
@@ -1169,7 +1072,6 @@
 generic_tearoff_test: CompileTimeError, RuntimeError
 if_null_evaluation_order_test: Pass
 instantiate_tearoff_of_call_test: CompileTimeError
-issue18628_2_test/01: MissingCompileTimeError
 issue31596_super_test/01: CompileTimeError
 issue31596_super_test/03: CompileTimeError
 issue31596_super_test/05: RuntimeError
@@ -1246,8 +1148,6 @@
 assertion_initializer_const_error2_test/cc10: Pass # Works in --checked mode but not in --strong mode.
 
 [ $fasta && $strong ]
-issue18628_2_test/01: MissingCompileTimeError
-redirecting_factory_bounds_test/02: MissingCompileTimeError # Related to issue 33308
 type_promotion_logical_and_test/01: MissingCompileTimeError
 
 [ $fasta && !$strong ]
@@ -2038,10 +1938,6 @@
 unresolved_top_level_method_test: MissingCompileTimeError
 unresolved_top_level_var_test: MissingCompileTimeError
 
-[ $fasta && ($compiler == dartkb || $runtime != dart_precompiled && $runtime != vm) ]
-generic_function_type_as_type_argument_test/01: MissingCompileTimeError # Issue 30931
-generic_function_type_as_type_argument_test/02: MissingCompileTimeError # Issue 30931
-
 [ $hot_reload_rollback && ($compiler == dartk || $compiler == dartkb) ]
 symbol_conflict_test: Pass, Slow
 
@@ -2073,4 +1969,3 @@
 
 [ $compiler == dartk || $compiler == dartkb || $compiler == dartkp ]
 generic_function_bounds_test: RuntimeError # Issue 32076
-generic_test/01: MissingCompileTimeError
diff --git a/tests/language_2/mixin_declaration/mixin_declaration_factory_test.dart b/tests/language_2/mixin_declaration/mixin_declaration_factory_test.dart
new file mode 100644
index 0000000..ee8a96c
--- /dev/null
+++ b/tests/language_2/mixin_declaration/mixin_declaration_factory_test.dart
@@ -0,0 +1,32 @@
+// 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.
+
+// A mixin declaration cannot declare any (factory) constructors.
+
+class A {}
+
+class B implements A {
+  const B();
+}
+
+mixin M on A {
+  factory M.foo() => null; //# 01: compile-time error
+  const factory M.bar() = B; //# 02: compile-time error
+  M.baz(); //# 03: compile-time error
+}
+
+class MA extends A with M {}
+
+class N {
+  // It's OK for a mixin derived from a class to have factory constructors.
+  factory N.quux() => null; //# none: ok
+  N.bar(); //# 04: compile-time error
+}
+
+class NA extends A with N {}
+
+main() {
+  new MA();
+  new NA();
+}
diff --git a/tests/language_2/mixin_of_mixin_test.dart b/tests/language_2/mixin_of_mixin_test.dart
deleted file mode 100644
index 9fb26d7..0000000
--- a/tests/language_2/mixin_of_mixin_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following text from section 12 ("Mixins") of the spec:
-//
-//     "A mixin application of the form S with M; defines a class C ...
-//     ... C declares the same instance members as M ..."
-//
-// This means that if M is itself a mixin application, then things
-// mixed into M are accessible through C.  But if M simply *extends* a
-// mixin application (e.g. because M is declared as `class M extends X
-// with Y { ... }`) then things mixed into the mixin application that
-// M extends are not accessible through C.
-
-class A {
-  a() => null;
-}
-
-class B {
-  b() => null;
-}
-
-class C {
-  c() => null;
-}
-
-class D {
-  d() => null;
-}
-
-// Note: by a slight abuse of syntax, `class M1 = A with B, C;` effectively
-// means `class M1 = (A with B) with C;`, therefore M1 declares c(), but it
-// merely inherits a() and b().
-class M1 = A with B, C; // declares c()
-
-class M2 extends M1 {
-  m2() => null;
-}
-
-class M3 extends A with B, C {
-  m3() => null;
-}
-
-class T1 = D with M1; // declares c()  //# 01: compile-time error
-class T2 = D with M2; // declares m2() //# 02: compile-time error
-class T3 = D with M3; // declares m3() //# 03: compile-time error
-
-class T4 extends D with M1 {} // extends a class which declares c()  //# 04: compile-time error
-
-class T5 extends D with M2 {} // extends a class which declares m2() //# 05: compile-time error
-
-class T6 extends D with M3 {} // extends a class which declares m3() //# 06: compile-time error
-
-main() { }
diff --git a/tests/language_2/mixin_super_2_test.dart b/tests/language_2/mixin_super_2_test.dart
index 2715148..aac47ff 100644
--- a/tests/language_2/mixin_super_2_test.dart
+++ b/tests/language_2/mixin_super_2_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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.
-// SharedOptions=--supermixin
 
 import "package:expect/expect.dart";
 
@@ -15,25 +14,28 @@
   toString() => 'R[' + super.toString() + ']';
 }
 
-class D extends R with B { //# 01: compile-time error
-  toString() => 'D<' + super.toString() + '>'; //# 01: continued
-} //# 01: continued
+class D extends R with B {
+  toString() => 'D<' + super.toString() + '>';
+}
 
-class E extends D with B { //# 02: compile-time error
-  toString() => 'E{' + super.toString() + '}'; //# 02: continued
-} //# 02: continued
+class E extends D with B {
+  toString() => 'E{' + super.toString() + '}';
+}
 
-class F = R with B, B;  //# 03: compile-time error
+class F = R with B, B;
 
-class G extends F with B { //# 04: compile-time error
-  toString() => 'G{' + super.toString() + '}';  //# 04: continued
-}  //# 04: continued
+class G extends F with B {
+  toString() => 'G{' + super.toString() + '}';
+}
 
 main() {
   check(object, String expected) {
     Expect.equals(expected, object.toString());
   }
 
-  check(new B(), "B(Instance of 'B')");
-  check(new R(), "R[Instance of 'R']");
+  check(B(), "B(Instance of '$B')");
+  check(R(), "R[Instance of '$R']");
+  check(D(), "D<B(R[Instance of '$D'])>");
+  check(E(), "E{B(D<B(R[Instance of '$E'])>)}");
+  check(G(), "G{B(B(B(R[Instance of '$G'])))}");
 }
diff --git a/tests/language_2/mixin_super_test.dart b/tests/language_2/mixin_super_test.dart
index 1f4c2b01..75ad654 100644
--- a/tests/language_2/mixin_super_test.dart
+++ b/tests/language_2/mixin_super_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2015, 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.
-// SharedOptions=--supermixin
 
 import "package:expect/expect.dart";
 
@@ -11,7 +10,7 @@
   }
 }
 
-class M<T> extends MS<List<T>> {
+mixin M<T> on MS<List<T>> {
   foo() {
     return super.foo() + "M<$T>.foo\n";
   }
@@ -23,33 +22,33 @@
   }
 }
 
-class N<T> extends NS<List<T>> {
+mixin N<T> on NS<List<T>> {
   foo() {
     return super.foo() + "N<$T>.foo\n";
   }
 }
 
-class S<T> {
+class S<T, V, W> implements MS<List<V>>, NS<List<W>> {
   foo() {
-    return "S<$T>.foo\n";
+    return "S<$T,$V,$W>.foo\n";
   }
 }
 
-class SM<U, V> = S<List<U>> with M<Map<U, V>>;
+class SM<U, V, W> = S<U, V, W> with M<V>;
 
-class MNA1<U, V, W> extends S<List<U>> with M<Map<U, V>>, N<W> {
+class MNA1<U, V, W> extends S<U, V, W> with M<V>, N<W> {
   foo() {
     return super.foo() + "MNA1<$U, $V, $W>.foo\n";
   }
 }
 
-class MNA2<U, V, W> extends SM<U, V> with N<W> {
+class MNA2<U, V, W> extends SM<U, V, W> with N<W> {
   foo() {
     return super.foo() + "MNA2<$U, $V, $W>.foo\n";
   }
 }
 
-class MNA3<U, V, W> extends S<List<U>> with SM<U, V>, N<W> {
+class MNA3<U, V, W> extends S<U, V, W> with M<V>, N<W> {
   foo() {
     return super.foo() + "MNA3<$U, $V, $W>.foo\n";
   }
@@ -57,29 +56,25 @@
 
 main() {
   Expect.equals(
-      "MS<List<double>>.foo\n"
-      "M<double>.foo\n",
-      new M<double>().foo());
+      "S<int,String,bool>.foo\n"
+      "M<String>.foo\n",
+      SM<int, String, bool>().foo());
   Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n",
-      new SM<int, String>().foo());
-  Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n"
+      "S<int,String,bool>.foo\n"
+      "M<String>.foo\n"
       "N<bool>.foo\n"
       "MNA1<int, String, bool>.foo\n",
-      new MNA1<int, String, bool>().foo());
+      MNA1<int, String, bool>().foo());
   Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n"
+      "S<int,String,bool>.foo\n"
+      "M<String>.foo\n"
       "N<bool>.foo\n"
       "MNA2<int, String, bool>.foo\n",
-      new MNA2<int, String, bool>().foo());
+      MNA2<int, String, bool>().foo());
   Expect.equals(
-      "S<List<int>>.foo\n"
-      "M<Map<int, String>>.foo\n"
+      "S<int,String,bool>.foo\n"
+      "M<String>.foo\n"
       "N<bool>.foo\n"
       "MNA3<int, String, bool>.foo\n",
-      new MNA3<int, String, bool>().foo());
+      MNA3<int, String, bool>().foo());
 }
diff --git a/tests/language_2/mixin_super_use_test.dart b/tests/language_2/mixin_super_use_test.dart
index 0076bd9..f0fc152 100644
--- a/tests/language_2/mixin_super_use_test.dart
+++ b/tests/language_2/mixin_super_use_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2013, 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.
-// SharedOptions=--supermixin
 
 import "package:expect/expect.dart";
 
diff --git a/tests/language_2/mixin_superclass_test.dart b/tests/language_2/mixin_superclass_test.dart
index 162d6ee..7e2c6d1 100644
--- a/tests/language_2/mixin_superclass_test.dart
+++ b/tests/language_2/mixin_superclass_test.dart
@@ -1,7 +1,6 @@
 // Copyright (c) 2013, 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.
-// SharedOptions=--supermixin
 
 class S0 {}
 
@@ -13,135 +12,111 @@
 
 class M1 extends Object {}
 
-class M2 extends M0 {}
+mixin M2 on M0 {}
 
 class C00 = S0 with M0;
 class C01 = S0 with M1;
-class C02 = S0 with M2;
+class C02 = S0 with M2; //# C02: compile-time error
 class C03 = S0 with M0, M1;
 class C04 = S0 with M0, M2;
-class C05 = S0 with M2, M0;
-class C06 = S0 with M1, M2;
-class C07 = S0 with M2, M1;
+class C05 = S0 with M2, M0; //# C05: compile-time error
+class C06 = S0 with M1, M2; //# C06: compile-time error
+class C07 = S0 with M2, M1; //# C07: compile-time error
 
 class C10 = S1 with M0;
 class C11 = S1 with M1;
-class C12 = S1 with M2;
+class C12 = S1 with M2; //# C12: compile-time error
 class C13 = S1 with M0, M1;
 class C14 = S1 with M0, M2;
-class C15 = S1 with M2, M0;
-class C16 = S1 with M1, M2;
-class C17 = S1 with M2, M1;
+class C15 = S1 with M2, M0; //# C15: compile-time error
+class C16 = S1 with M1, M2; //# C16: compile-time error
+class C17 = S1 with M2, M1; //# C17: compile-time error
 
 class C20 = S2 with M0;
 class C21 = S2 with M1;
-class C22 = S2 with M2;
+class C22 = S2 with M2; //# C22: compile-time error
 class C23 = S2 with M0, M1;
 class C24 = S2 with M0, M2;
-class C25 = S2 with M2, M0;
-class C26 = S2 with M1, M2;
-class C27 = S2 with M2, M1;
+class C25 = S2 with M2, M0; //# C25: compile-time error
+class C26 = S2 with M1, M2; //# C26: compile-time error
+class C27 = S2 with M2, M1; //# C27: compile-time error
 
 class D00 extends S0 with M0 {}
 
 class D01 extends S0 with M1 {}
 
-class D02 extends S0 with M2 {}
+class D02 extends S0 with M2 {} //# D02: compile-time error
 
 class D03 extends S0 with M0, M1 {}
 
 class D04 extends S0 with M0, M2 {}
 
-class D05 extends S0 with M2, M0 {}
+class D05 extends S0 with M2, M0 {} //# D05: compile-time error
 
-class D06 extends S0 with M1, M2 {}
+class D06 extends S0 with M1, M2 {} //# D06: compile-time error
 
-class D07 extends S0 with M2, M1 {}
+class D07 extends S0 with M2, M1 {} //# D07: compile-time error
 
 class D10 extends S1 with M0 {}
 
 class D11 extends S1 with M1 {}
 
-class D12 extends S1 with M2 {}
+class D12 extends S1 with M2 {} //# D12: compile-time error
 
 class D13 extends S1 with M0, M1 {}
 
 class D14 extends S1 with M0, M2 {}
 
-class D15 extends S1 with M2, M0 {}
+class D15 extends S1 with M2, M0 {} //# D15: compile-time error
 
-class D16 extends S1 with M1, M2 {}
+class D16 extends S1 with M1, M2 {} //# D16: compile-time error
 
-class D17 extends S1 with M2, M1 {}
+class D17 extends S1 with M2, M1 {} //# D17: compile-time error
 
 class D20 extends S2 with M0 {}
 
 class D21 extends S2 with M1 {}
 
-class D22 extends S2 with M2 {}
+class D22 extends S2 with M2 {} //# D22: compile-time error
 
 class D23 extends S2 with M0, M1 {}
 
 class D24 extends S2 with M0, M2 {}
 
-class D25 extends S2 with M2, M0 {}
+class D25 extends S2 with M2, M0 {} //# D25: compile-time error
 
-class D26 extends S2 with M1, M2 {}
+class D26 extends S2 with M1, M2 {} //# D26: compile-time error
 
-class D27 extends S2 with M2, M1 {}
+class D27 extends S2 with M2, M1 {} //# D27: compile-time error
 
 main() {
   new C00();
   new C01();
-  new C02();
   new C03();
   new C04();
-  new C05();
-  new C06();
-  new C07();
 
   new C10();
   new C11();
-  new C12();
   new C13();
   new C14();
-  new C15();
-  new C16();
-  new C17();
 
   new C20();
   new C21();
-  new C22();
   new C23();
   new C24();
-  new C25();
-  new C26();
-  new C27();
 
   new D00();
   new D01();
-  new D02();
   new D03();
   new D04();
-  new D05();
-  new D06();
-  new D07();
 
   new D10();
   new D11();
-  new D12();
   new D13();
   new D14();
-  new D15();
-  new D16();
-  new D17();
 
   new D20();
   new D21();
-  new D22();
   new D23();
   new D24();
-  new D25();
-  new D26();
-  new D27();
 }
diff --git a/tests/language_2/mixin_supertype_subclass2_test.dart b/tests/language_2/mixin_supertype_subclass2_test.dart
index 71d1c38..0bafafc 100644
--- a/tests/language_2/mixin_supertype_subclass2_test.dart
+++ b/tests/language_2/mixin_supertype_subclass2_test.dart
@@ -1,15 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
 
 class B {}
 
@@ -21,16 +12,17 @@
 
 class F extends E {}
 
-class A extends E with M {}
-
-class M
-  extends B //# 01: ok
-  extends C //# 02: static type warning
-  extends D //# 03: ok
-  extends E //# 04: ok
-  extends F //# 05: static type warning
+// M is mixed onto E which implements B, C and D.
+mixin M //
+  on B //# 01: ok
+  on C //# 02: ok
+  on D //# 03: ok
+  on E //# 04: ok
+  on F //# 05: compile-time error
 {}
 
+class A extends E with M {}
+
 main() {
   new A();
 }
diff --git a/tests/language_2/mixin_supertype_subclass3_test.dart b/tests/language_2/mixin_supertype_subclass3_test.dart
deleted file mode 100644
index c1893fe2..0000000
--- a/tests/language_2/mixin_supertype_subclass3_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
-
-// In this test, M is declared as `class M = S_static with G;`.
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E extends B with C implements D {}
-
-class F extends E {}
-
-class A
-  = E with M; class M = B with G; class G //# 01: ok
-  = E with M; class M = C with G; class G //# 02: static type warning
-  = E with M; class M = D with G; class G //# 03: ok
-  = E with M; class M = E with G; class G //# 04: ok
-  = E with M; class M = F with G; class G //# 05: static type warning
-{}
-
-main() {
-  new A();
-}
diff --git a/tests/language_2/mixin_supertype_subclass4_test.dart b/tests/language_2/mixin_supertype_subclass4_test.dart
deleted file mode 100644
index 82770d3..0000000
--- a/tests/language_2/mixin_supertype_subclass4_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
-
-// In this test, M is declared as `class M extends ... with G {}`, so
-// `S_static` is the unnamed mixin application `... with G`.  Since this
-// unnamed mixin application can't be derived from, all the cases should yield
-// a warning.
-
-class B {}
-
-class C {}
-
-class D {}
-
-class E extends B with C implements D {}
-
-class F extends E {}
-
-class G {}
-
-class A = E with M;
-
-class M
-  extends B with G //# 01: static type warning
-  extends C with G //# 02: static type warning
-  extends D with G //# 03: static type warning
-  extends E with G //# 04: static type warning
-  extends F with G //# 05: static type warning
-{}
-
-main() {
-  new A();
-}
diff --git a/tests/language_2/mixin_supertype_subclass_test.dart b/tests/language_2/mixin_supertype_subclass_test.dart
index 9afa29c..1e2c7ca 100644
--- a/tests/language_2/mixin_supertype_subclass_test.dart
+++ b/tests/language_2/mixin_supertype_subclass_test.dart
@@ -1,15 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
-
-// Validate the following test from section 12 ("Mixins") of the spec:
-//
-//     "Let M_A be a mixin derived from a class M with direct superclass
-//     S_static.
-//
-//     Let A be an application of M_A.  It is a static warning if the
-//     superclass of A is not a subtype of S_static."
 
 class B {}
 
@@ -21,16 +12,17 @@
 
 class F extends E {}
 
-class A = E with M;
-
-class M
-  extends B //# 01: ok
-  extends C //# 02: compile-time error
-  extends D //# 03: ok
-  extends E //# 04: ok
-  extends F //# 05: compile-time error
+// M is mixed onto E which implements B, C and D.
+mixin M //
+  on B //# 01: ok
+  on C //# 02: ok
+  on D //# 03: ok
+  on E //# 04: ok
+  on F //# 05: compile-time error
 {}
 
+class A = E with M;
+
 main() {
   new A();
 }
diff --git a/tests/language_2/mixin_type_parameter_inference_error_test.dart b/tests/language_2/mixin_type_parameter_inference_error_test.dart
index fe1914e..c720e49 100644
--- a/tests/language_2/mixin_type_parameter_inference_error_test.dart
+++ b/tests/language_2/mixin_type_parameter_inference_error_test.dart
@@ -1,22 +1,24 @@
 // 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.
-// SharedOptions=--supermixin
 
 abstract class A<T> {}
 
 class B {}
 
-class M<T> extends A<T> {}
+mixin M<T> on A<T> {}
 
 // No matching class from which to infer the type parameter of M
 class C extends Object with M {} //# 01: compile-time error
 
 class C = Object with M; //# 02: compile-time error
 
-// Satisfying the constraint in the "implements" clause is not sufficient
+// Satisfying the constraint with an "implements" clause is not sufficient
 class C extends Object with M implements A<B> {} //# 03: compile-time error
 
 class C = Object with M implements A<B>; //# 04: compile-time error
 
+// Mixin works when used correctly.
+class D = A<B> with M<B>;
+
 main() {}
diff --git a/tests/language_2/mixin_type_parameter_inference_previous_mixin_test.dart b/tests/language_2/mixin_type_parameter_inference_previous_mixin_test.dart
index 01ac846..a3d9ce5 100644
--- a/tests/language_2/mixin_type_parameter_inference_previous_mixin_test.dart
+++ b/tests/language_2/mixin_type_parameter_inference_previous_mixin_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
 
 import "package:expect/expect.dart";
 
@@ -15,7 +14,7 @@
 
 abstract class M1 implements A<B> {}
 
-class M2<T> extends A<T> {
+mixin M2<T> on A<T> {
   T f(T x) => x;
   T g(T x) => x;
   Type h() => T;
diff --git a/tests/language_2/mixin_type_parameter_inference_test.dart b/tests/language_2/mixin_type_parameter_inference_test.dart
index 1c2400c..8d5f336 100644
--- a/tests/language_2/mixin_type_parameter_inference_test.dart
+++ b/tests/language_2/mixin_type_parameter_inference_test.dart
@@ -1,7 +1,6 @@
 // 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.
-// SharedOptions=--supermixin
 
 import "package:expect/expect.dart";
 
@@ -13,7 +12,7 @@
 
 class B {}
 
-class M1<T> extends A<T> {
+mixin M1<T> on A<T> {
   T f(T x) => x;
   T g(T x) => x;
   Type h() => T;
diff --git a/tests/language_2/no_such_method_private_setter_lib.dart b/tests/language_2/no_such_method_private_setter_lib.dart
new file mode 100644
index 0000000..ea3bc74
--- /dev/null
+++ b/tests/language_2/no_such_method_private_setter_lib.dart
@@ -0,0 +1,11 @@
+// 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 Bar {
+  int _x;
+}
+
+void baz(Bar bar) {
+  (bar as dynamic)._x = "Sixtyfour"; //# 01: runtime error
+}
diff --git a/tests/language_2/no_such_method_private_setter_test.dart b/tests/language_2/no_such_method_private_setter_test.dart
new file mode 100644
index 0000000..8e9a4c3
--- /dev/null
+++ b/tests/language_2/no_such_method_private_setter_test.dart
@@ -0,0 +1,11 @@
+// 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 './no_such_method_private_setter_lib.dart';
+
+class Foo implements Bar {}
+
+main() {
+  baz(new Foo()); //# 01: runtime error
+}
diff --git a/tests/language_2/private_method_tearoff_lib.dart b/tests/language_2/private_method_tearoff_lib.dart
new file mode 100644
index 0000000..344a3c6
--- /dev/null
+++ b/tests/language_2/private_method_tearoff_lib.dart
@@ -0,0 +1,13 @@
+// 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.
+
+// Companion library for private_method_tearoff_test.dart.
+
+class Bar {
+  void _f() {}
+}
+
+String baz(Bar bar) {
+  return bar._f.runtimeType.toString();
+}
diff --git a/tests/language_2/private_method_tearoff_test.dart b/tests/language_2/private_method_tearoff_test.dart
new file mode 100644
index 0000000..d75580b
--- /dev/null
+++ b/tests/language_2/private_method_tearoff_test.dart
@@ -0,0 +1,19 @@
+// 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:expect/expect.dart';
+
+import './private_method_tearoff_lib.dart';
+
+// `Bar' contains a private method `_f'. The function `baz' is declared in the
+// same library as `Bar'. Given an subtype of `Bar', it tearoffs `_f' and
+// returns a string representation of its runtime type. For this code to
+// evaluate correctly, the generated Kernel code for `Foo' must contain a no
+// such method forwarder for `_f'.
+
+class Foo implements Bar {}
+
+main() {
+  Expect.equals("() => void", baz(new Foo()));
+}
diff --git a/tests/language_2/vm/irreducible_loop_test.dart b/tests/language_2/vm/irreducible_loop_test.dart
new file mode 100644
index 0000000..96baa3d
--- /dev/null
+++ b/tests/language_2/vm/irreducible_loop_test.dart
@@ -0,0 +1,32 @@
+// 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";
+
+// This method forms an infinite, irreducible loop. As long as we
+// don't enter any of the branches, the method terminates. The test
+// is included to ensure an irreducible loop does not break anything
+// in the compiler.
+int bar(int x) {
+  switch (x) {
+    case_1:
+    case 1:
+      continue case_2;
+    case_2:
+    case 2:
+      continue case_1;
+  }
+  return x;
+}
+
+main() {
+  for (var i = -50; i <= 0; i++) {
+    Expect.equals(i, bar(i));
+  }
+  for (var i = 3; i <= 50; i++) {
+    Expect.equals(i, bar(i));
+  }
+}
diff --git a/tests/language_2/vm/regress_34435_test.dart b/tests/language_2/vm/regress_34435_test.dart
new file mode 100644
index 0000000..8f15f8c
--- /dev/null
+++ b/tests/language_2/vm/regress_34435_test.dart
@@ -0,0 +1,61 @@
+// 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=--optimization-filter=triggerBug --no-background-compilation --enable-inlining-annotations --optimization-counter-threshold=2
+
+const String NeverInline = 'NeverInline';
+
+@NeverInline
+dynamic triggerGC() {
+  var a = [];
+  for (int i = 0; i < 100; ++i) {
+    a.add([]);
+  }
+  return a;
+}
+
+@NeverInline
+void fillLowerStackWithReturnAddresses() {
+  recursive(20);
+}
+
+@NeverInline
+dynamic recursive(dynamic n) {
+  if (n > 0) {
+    recursive(n - 1);
+  }
+  return 0x0deadbef;
+}
+
+class Box {
+  @NeverInline
+  Box get value => global;
+}
+
+Box global;
+
+main() {
+  bool isTrue = true;
+  bool hasProblem = true;
+
+  @NeverInline
+  void triggerBug(Box box) {
+    triggerGC();
+
+    Box element = box.value;
+    if (isTrue) {
+      hasProblem = true;
+      return;
+    }
+    try {
+      Map map = {};
+    } finally {}
+  }
+
+  final st = new Box();
+  for (int i = 0; i < 1000; ++i) {
+    fillLowerStackWithReturnAddresses();
+    triggerBug(st);
+  }
+}
diff --git a/tests/language_2/vm/smi_widening_test.dart b/tests/language_2/vm/smi_widening_test.dart
new file mode 100644
index 0000000..55106a8
--- /dev/null
+++ b/tests/language_2/vm/smi_widening_test.dart
@@ -0,0 +1,82 @@
+// 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=--deterministic --optimization-counter-threshold=102 --enable-inlining-annotations --optimization-filter=Box_
+
+import 'package:expect/expect.dart';
+
+const String NeverInline = 'NeverInline';
+const String AlwaysInline = 'AlwaysInline';
+const int kLimit = 100;
+
+main() {
+  // Get all 3 functions optimized with _Smi's.
+  optimizeMilliseconds(1);
+  optimizeMicroseconds(1);
+  optimizeConstructor(1);
+
+  // Now we trigger a store of a _Mint into the Box._value
+  testMints(2048);
+}
+
+@NeverInline
+optimizeConstructor(int value) {
+  for (int i = 0; i < kLimit; ++i) {
+    new Box(milliseconds: value);
+  }
+}
+
+@NeverInline
+optimizeMicroseconds(int value) {
+  final d = new Box(milliseconds: value);
+  for (int i = 0; i < kLimit; ++i) {
+    Expect.equals(value * 1000, d.inMicroseconds);
+  }
+}
+
+@NeverInline
+optimizeMilliseconds(int value) {
+  final d = new Box(seconds: value);
+  for (int i = 0; i < kLimit; ++i) {
+    Expect.equals(value * 1000, d.inMilliseconds);
+  }
+}
+
+@NeverInline
+testMints(int value) {
+  final d = new Box(seconds: value);
+  for (int i = 0; i < kLimit; ++i) {
+    Expect.equals(value * 1000 * 1000, d.inMicroseconds);
+    Expect.equals(value * 1000, d.inMilliseconds);
+  }
+}
+
+int c = 0;
+
+class Box {
+  final int _value;
+
+  @NeverInline
+  Box(
+      {int days: 0,
+      int hours: 0,
+      int minutes: 0,
+      int seconds: 0,
+      int milliseconds: 0,
+      int microseconds: 0})
+      : this._microseconds(1000 * 1000 * 60 * 60 * 24 * days +
+            1000 * 1000 * 60 * 60 * hours +
+            1000 * 1000 * 60 * minutes +
+            1000 * 1000 * seconds +
+            1000 * milliseconds +
+            microseconds);
+
+  Box._microseconds(this._value);
+
+  @NeverInline
+  int get inMilliseconds => _value ~/ 1000;
+
+  @NeverInline
+  int get inMicroseconds => _value;
+}
diff --git a/tests/lib/analyzer/analyze_library.status b/tests/lib/analyzer/analyze_library.status
deleted file mode 100644
index 0dd8e28..0000000
--- a/tests/lib/analyzer/analyze_library.status
+++ /dev/null
@@ -1,6 +0,0 @@
-# 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.
-
-[ $compiler == dart2analyzer ]
-*: Skip
diff --git a/tests/lib/async/async_await_sync_completer_test.dart b/tests/lib/async/async_await_sync_completer_test.dart
deleted file mode 100644
index aca21b9..0000000
--- a/tests/lib/async/async_await_sync_completer_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2015, 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:async';
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-
-import 'dart:async';
-
-var events = [];
-var delayedValue = new Completer();
-var delayedError = new Completer();
-
-foo() async {
-  new Future.microtask(() => 'in microtask')
-      .then(events.add)
-      .then(delayedValue.complete);
-  return 'in async function';
-}
-
-bar() async {
-  new Future.microtask(() => throw 'in microtask error')
-      .catchError(events.add)
-      .then(delayedError.complete);
-  throw 'in async function error';
-}
-
-void main() {
-  asyncStart();
-  var asyncValueFuture = foo().then(events.add);
-  var asyncErrorFuture = bar().catchError(events.add);
-  Future.wait([
-    asyncValueFuture,
-    delayedValue.future,
-    asyncErrorFuture,
-    delayedError.future
-  ]).then((_) {
-    // The body completed before nested microtask. So they should appear
-    // before the delayed functions. In other words, the async function should
-    // not unnecessarily delay the propagation of errors and values.
-    Expect.listEquals([
-      "in async function",
-      "in async function error",
-      "in microtask",
-      "in microtask error"
-    ], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/async_await_zones_test.dart b/tests/lib/async/async_await_zones_test.dart
deleted file mode 100644
index 9e22029..0000000
--- a/tests/lib/async/async_await_zones_test.dart
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that async functions don't zone-register their callbacks for each
-// await. Async functions should register their callback once in the beginning
-// and then reuse it for all awaits in their body.
-// This has two advantages: it is faster, when there are several awaits (on
-// the Future class from dart:async), and it avoids zone-nesting when tracing
-// stacktraces.
-// See http://dartbug.com/23394 for more information.
-
-import 'dart:async';
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-
-gee(i) async {
-  return await i;
-}
-
-bar() async* {
-  var i = 0;
-  while (true) yield await gee(i++);
-}
-
-awaitForTest() async {
-  var sum = 0;
-  await for (var x in bar().take(100)) {
-    sum += x;
-  }
-  Expect.equals(4950, sum);
-}
-
-awaitTest() async {
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  await null;
-  return await 499;
-}
-
-runTests() async {
-  await awaitTest();
-  await awaitForTest();
-}
-
-var depth = 0;
-
-var depthIncreases = 0;
-
-increaseDepth() {
-  depthIncreases++;
-  depth++;
-  // The async/await code should not register callbacks recursively in the
-  // then-calls. As such the depth should never grow too much. We don't want
-  // to commit to a specific value, since implementations still have some
-  // room in how async/await is implemented, but 20 should be safe.
-  Expect.isTrue(depth < 20);
-}
-
-ZoneCallback<R> registerCallback<R>(
-    Zone self, ZoneDelegate parent, Zone zone, R f()) {
-  var oldDepth = depth;
-  increaseDepth();
-  return parent.registerCallback(zone, () {
-    depth = oldDepth;
-    return f();
-  });
-}
-
-ZoneUnaryCallback<R, T> registerUnaryCallback<R, T>(
-    Zone self, ZoneDelegate parent, Zone zone, R f(T arg)) {
-  var oldDepth = depth;
-  increaseDepth();
-  return parent.registerUnaryCallback(zone, (x) {
-    depth = oldDepth;
-    return f(x);
-  });
-}
-
-ZoneBinaryCallback<R, T1, T2> registerBinaryCallback<R, T1, T2>(
-    Zone self, ZoneDelegate parent, Zone zone, R f(T1 arg1, T2 arg2)) {
-  var oldDepth = depth;
-  increaseDepth();
-  return parent.registerBinaryCallback(zone, (x, y) {
-    depth = oldDepth;
-    return f(x, y);
-  });
-}
-
-sm(Zone self, ZoneDelegate parent, Zone zone, f) {
-  var oldDepth = depth;
-  increaseDepth();
-  return parent.scheduleMicrotask(zone, () {
-    depth = oldDepth;
-    return f();
-  });
-}
-
-main() {
-  asyncStart();
-  var desc = new ZoneSpecification(
-      registerCallback: registerCallback,
-      registerUnaryCallback: registerUnaryCallback,
-      registerBinaryCallback: registerBinaryCallback,
-      scheduleMicrotask: sm);
-  var future = runZoned(runTests, zoneSpecification: desc);
-  future.then((_) => asyncEnd());
-}
diff --git a/tests/lib/async/catch_errors.dart b/tests/lib/async/catch_errors.dart
deleted file mode 100644
index 925ce2c..0000000
--- a/tests/lib/async/catch_errors.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-library catch_errors;
-
-import 'dart:async';
-
-Stream catchErrors(void body()) {
-  StreamController controller;
-
-  bool onError(e, st) {
-    controller.add(e);
-    return true;
-  }
-
-  void onListen() {
-    runZoned(body, onError: onError);
-  }
-
-  controller = new StreamController(onListen: onListen);
-  return controller.stream;
-}
-
-runZonedScheduleMicrotask(body(),
-    {void onScheduleMicrotask(void callback()), Function onError}) {
-  if (onScheduleMicrotask == null) {
-    return runZoned(body, onError: onError);
-  }
-  HandleUncaughtErrorHandler errorHandler;
-  if (onError != null) {
-    errorHandler = (Zone self, ZoneDelegate parent, Zone zone, error,
-        StackTrace stackTrace) {
-      try {
-        return self.parent.runUnary(onError, error);
-      } catch (e, s) {
-        if (identical(e, error)) {
-          return parent.handleUncaughtError(zone, error, stackTrace);
-        } else {
-          return parent.handleUncaughtError(zone, e, s);
-        }
-      }
-    };
-  }
-  ScheduleMicrotaskHandler asyncHandler;
-  if (onScheduleMicrotask != null) {
-    asyncHandler = (Zone self, ZoneDelegate parent, Zone zone, f()) {
-      self.parent.runUnary(onScheduleMicrotask, () => zone.runGuarded(f));
-    };
-  }
-  ZoneSpecification specification = new ZoneSpecification(
-      handleUncaughtError: errorHandler, scheduleMicrotask: asyncHandler);
-  Zone zone = Zone.current.fork(specification: specification);
-  if (onError != null) {
-    return zone.runGuarded(body);
-  } else {
-    return zone.run(body);
-  }
-}
diff --git a/tests/lib/async/catch_errors11_test.dart b/tests/lib/async/catch_errors11_test.dart
deleted file mode 100644
index 67bb9db..0000000
--- a/tests/lib/async/catch_errors11_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Test that `catchErrors` catches errors that are delayed by `Timer.run`.
-  catchErrors(() {
-    events.add("catch error entry");
-    new Future.error("future error");
-    Timer.run(() {
-      done.complete(true);
-      throw "timer error";
-    });
-  }).listen((x) {
-    events.add(x);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    // Give the handler time to execute.
-    Timer.run(() {
-      Expect.listEquals([
-        "catch error entry",
-        "main exit",
-        "future error",
-        "timer error",
-      ], events);
-      asyncEnd();
-    });
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors12_test.dart b/tests/lib/async/catch_errors12_test.dart
deleted file mode 100644
index fc42696..0000000
--- a/tests/lib/async/catch_errors12_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Tests that errors that have been delayed by several milliseconds with
-  // Timers are still caught by `catchErrors`.
-  catchErrors(() {
-    events.add("catch error entry");
-    Timer.run(() {
-      throw "timer error";
-    });
-    new Timer(const Duration(milliseconds: 100), () {
-      throw "timer2 error";
-    });
-    new Future.value(499).then((x) {
-      new Timer(const Duration(milliseconds: 200), () {
-        done.complete(499);
-        throw x;
-      });
-    });
-    throw "catch error";
-  }).listen((x) {
-    events.add(x);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-  done.future.whenComplete(() {
-    // Give time to execute the callbacks.
-    Timer.run(() {
-      Expect.listEquals([
-        "catch error entry",
-        "main exit",
-        "catch error",
-        "timer error",
-        "timer2 error",
-        499,
-      ], events);
-      asyncEnd();
-    });
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors13_test.dart b/tests/lib/async/catch_errors13_test.dart
deleted file mode 100644
index 7c4d0e0..0000000
--- a/tests/lib/async/catch_errors13_test.dart
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Work around bug that makes scheduleMicrotask use Timers. By invoking
-  // `scheduleMicrotask` here we make sure that asynchronous non-timer events
-  // are executed before any Timer events.
-  scheduleMicrotask(() {});
-
-  // Test that errors are caught by nested `catchErrors`. Also uses
-  // `scheduleMicrotask` in the body of a Timer.
-  bool outerTimerRan = false;
-  int outerTimerCounterDelayCount = 0;
-  catchErrors(() {
-    events.add("catch error entry");
-    catchErrors(() {
-      events.add("catch error entry2");
-      Timer.run(() {
-        throw "timer error";
-      });
-
-      // We want this timer to run after the timer below. When the machine is
-      // slow we saw that the timer below was scheduled more than 50ms after
-      // this line. A duration of 50ms was therefore not enough to guarantee
-      // that this timer runs before the timer below.
-      // Instead of increasing the duration to a bigger amount we decided to
-      // verify that the other timer already ran, and reschedule if not.
-      // This way we could reduce the timeout (to 10ms now), while still
-      // allowing for more time, in case the machine is slow.
-      void runDelayed() {
-        new Timer(const Duration(milliseconds: 10), () {
-          if (outerTimerRan) {
-            scheduleMicrotask(() {
-              throw "scheduleMicrotask";
-            });
-            throw "delayed error";
-          } else if (outerTimerCounterDelayCount < 100) {
-            outerTimerCounterDelayCount++;
-            runDelayed();
-          }
-        });
-      }
-
-      runDelayed();
-    }).listen((x) {
-      events.add(x);
-      if (x == "scheduleMicrotask") {
-        throw "inner done throw";
-      }
-    });
-    events.add("after inner");
-    Timer.run(() {
-      outerTimerRan = true;
-      throw "timer outer";
-    });
-    throw "inner throw";
-  }).listen((x) {
-    events.add(x);
-    if (x == "inner done throw") done.complete(true);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    // Give callbacks time to run.
-    Timer.run(() {
-      Expect.listEquals([
-        "catch error entry",
-        "catch error entry2",
-        "after inner",
-        "main exit",
-        "inner throw",
-        "timer error",
-        "timer outer",
-        "delayed error",
-        "scheduleMicrotask",
-        "inner done throw"
-      ], events);
-      asyncEnd();
-    });
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors14_test.dart b/tests/lib/async/catch_errors14_test.dart
deleted file mode 100644
index 8149dd3..0000000
--- a/tests/lib/async/catch_errors14_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Test that periodic Timers are handled correctly by `catchErrors`.
-  catchErrors(() {
-    int counter = 0;
-    new Timer.periodic(const Duration(milliseconds: 50), (timer) {
-      if (counter++ == 5) {
-        timer.cancel();
-        done.complete(true);
-      }
-      throw "error $counter";
-    });
-  }).listen((x) {
-    events.add(x);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    // Give time to complete the handlers.
-    Timer.run(() {
-      Expect.listEquals([
-        "main exit",
-        "error 1",
-        "error 2",
-        "error 3",
-        "error 4",
-        "error 5",
-        "error 6",
-      ], events);
-      asyncEnd();
-    });
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors15_test.dart b/tests/lib/async/catch_errors15_test.dart
deleted file mode 100644
index b95929b..0000000
--- a/tests/lib/async/catch_errors15_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-  var events = [];
-
-  catchErrors(() {
-    events.add("catch error entry");
-    catchErrors(() {
-      events.add("catch error entry2");
-      new Future.error("future error");
-      new Future.error("future error2");
-      new Future.value(499).then((x) => throw x);
-      new Future.delayed(const Duration(milliseconds: 50), () {
-        throw "delayed error";
-      });
-      throw "catch error";
-    }).listen((x) {
-      events.add("i $x");
-      if (x == "delayed error") done.complete(true);
-    }, onDone: () {
-      Expect.fail("Unexpected callback");
-    });
-    events.add("after inner");
-    throw "inner throw";
-  }).listen((x) {
-    events.add("o $x");
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-  done.future.whenComplete(() {
-    // Give some time to run the handlers.
-    Timer.run(() {
-      Expect.listEquals([
-        "catch error entry",
-        "catch error entry2",
-        "after inner",
-        "main exit",
-        "i catch error",
-        // We guarantee the order of one stream but not any
-        // global order.
-        "o inner throw",
-        "i future error",
-        "i future error2",
-        "i 499",
-        "i delayed error",
-      ], events);
-      asyncEnd();
-    });
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors16_test.dart b/tests/lib/async/catch_errors16_test.dart
deleted file mode 100644
index 40a2c63..0000000
--- a/tests/lib/async/catch_errors16_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  var events = [];
-  StreamController controller = new StreamController();
-  Stream stream = controller.stream;
-  // Test that the subscription of a stream is what counts. The error (2) runs
-  // through the map-stream which goes through the nested `catchError` but
-  // the nested `catchError` won't see the error.
-  catchErrors(() {
-    stream = stream.map((x) => x + 100);
-  }).listen((x) {
-    events.add(x);
-  });
-  stream
-      .transform(new StreamTransformer.fromHandlers(handleError: (e, st, sink) {
-    sink.add("error $e");
-  })).listen((x) {
-    events.add("stream $x");
-  }, onDone: () {
-    Expect.listEquals([
-      "stream 101",
-      "stream error 2",
-    ], events);
-    asyncEnd();
-  });
-  controller.add(1);
-  controller.addError(2);
-  controller.close();
-}
diff --git a/tests/lib/async/catch_errors17_test.dart b/tests/lib/async/catch_errors17_test.dart
deleted file mode 100644
index 3ba918e..0000000
--- a/tests/lib/async/catch_errors17_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  StreamController controller;
-  // Test that errors do not cross zone boundaries.
-  catchErrors(() {
-    catchErrors(() {
-      controller = new StreamController();
-      controller.stream.map((x) {
-        events.add("map $x");
-        return x + 100;
-      }).transform(
-          new StreamTransformer.fromHandlers(handleError: (e, st, sink) {
-        sink.add("error $e");
-      })).listen((x) {
-        events.add("stream $x");
-      });
-    }).listen((x) {
-      events.add(x);
-    });
-    controller.add(1);
-    controller.addError(2);
-    new Future.error("outer error");
-    controller.close();
-  }).listen((x) {
-    events.add("outer: $x");
-    if (x == "outer error") done.complete(true);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    Timer.run(() {
-      Expect.listEquals([
-        "map 1",
-        "stream 101",
-        "stream error 2",
-        "outer: outer error",
-      ], events);
-      asyncEnd();
-    });
-  });
-}
diff --git a/tests/lib/async/catch_errors2_test.dart b/tests/lib/async/catch_errors2_test.dart
deleted file mode 100644
index e97d52b..0000000
--- a/tests/lib/async/catch_errors2_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  bool futureWasExecuted = false;
-  Future done;
-
-  // Error streams never close.
-  catchErrors(() {
-    done = new Future(() {
-      futureWasExecuted = true;
-    });
-    return 'allDone';
-  }).listen((x) {
-    Expect.fail("Unexpected callback");
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.whenComplete(asyncEnd);
-}
diff --git a/tests/lib/async/catch_errors3_test.dart b/tests/lib/async/catch_errors3_test.dart
deleted file mode 100644
index 5ddb915..0000000
--- a/tests/lib/async/catch_errors3_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-  bool futureWasExecuted = false;
-  bool future2WasExecuted = false;
-
-  // Make sure `catchErrors` never closes its stream.
-  catchErrors(() {
-    new Future(() => 499).then((x) {
-      futureWasExecuted = true;
-    });
-    scheduleMicrotask(() {
-      new Future(() => 42).then((x) {
-        future2WasExecuted = true;
-        Expect.isTrue(futureWasExecuted);
-        done.complete(true);
-      });
-    });
-    return 'allDone';
-  }).listen((x) {
-    Expect.fail("Unexpected callback");
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-  done.future.whenComplete(asyncEnd);
-}
diff --git a/tests/lib/async/catch_errors4_test.dart b/tests/lib/async/catch_errors4_test.dart
deleted file mode 100644
index c25d60e..0000000
--- a/tests/lib/async/catch_errors4_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Test that synchronous errors inside a `catchErrors` are caught.
-  catchErrors(() {
-    events.add("catch error entry");
-    throw "catch error";
-  }).listen((x) {
-    events.add(x);
-    done.complete(true);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "catch error entry",
-      "main exit",
-      "catch error",
-    ], events);
-    asyncEnd();
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors5_test.dart b/tests/lib/async/catch_errors5_test.dart
deleted file mode 100644
index ef23878..0000000
--- a/tests/lib/async/catch_errors5_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Test that synchronous *and* asynchronous errors are caught by
-  // `catchErrors`.
-  catchErrors(() {
-    events.add("catch error entry");
-    Future errorFuture = new Future.error("future error");
-    errorFuture.whenComplete(() => done.complete(true));
-    throw "catch error";
-  }).listen((x) {
-    events.add(x);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    // Give some time for the event listener to execute.
-    Timer.run(() {
-      Expect.listEquals([
-        "catch error entry",
-        "main exit",
-        "catch error",
-        "future error",
-      ], events);
-      asyncEnd();
-    });
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors6_test.dart b/tests/lib/async/catch_errors6_test.dart
deleted file mode 100644
index 48f6c30..0000000
--- a/tests/lib/async/catch_errors6_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  var completer = new Completer();
-  var errorHandlerOrDoneHasBeenExecuted = false;
-  // Test that `catchErrors` doesn't shut down if a future is never completed.
-  catchErrors(() {
-    completer.future.then((x) {
-      Expect.fail("should not be executed");
-    });
-  }).listen((x) {
-    errorHandlerOrDoneHasBeenExecuted = true;
-    Expect.fail("should not be executed (listen)");
-  }, onDone: () {
-    errorHandlerOrDoneHasBeenExecuted = true;
-    Expect.fail("should not be executed (onDone)");
-  });
-  Timer.run(() {
-    Expect.isFalse(errorHandlerOrDoneHasBeenExecuted);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/catch_errors7_test.dart b/tests/lib/async/catch_errors7_test.dart
deleted file mode 100644
index 43e5ff1..0000000
--- a/tests/lib/async/catch_errors7_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Test that asynchronous errors are caught.
-  catchErrors(() {
-    events.add("catch error entry");
-    var futures = [
-      new Future.error("future error"),
-      new Future.error("future error2"),
-      new Future.value(499).then((x) => throw x),
-    ];
-    int completedCount = 0;
-    for (var future in futures) {
-      future.whenComplete(() {
-        completedCount++;
-        if (completedCount == 3) done.complete(true);
-      });
-    }
-    throw "catch error";
-  }).listen((x) {
-    events.add(x);
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    // Give handlers time to execute.
-    Timer.run(() {
-      Expect.listEquals([
-        "catch error entry",
-        "main exit",
-        "catch error",
-        "future error",
-        "future error2",
-        499,
-      ], events);
-      asyncEnd();
-    });
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/catch_errors8_test.dart b/tests/lib/async/catch_errors8_test.dart
deleted file mode 100644
index 459208b..0000000
--- a/tests/lib/async/catch_errors8_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2013, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  var events = [];
-  // Test nested `catchErrors`.
-  // The nested `catchErrors` throws all kinds of different errors (synchronous
-  // and asynchronous). The body of the outer `catchErrors` furthermore has a
-  // synchronous `throw`.
-  catchErrors(() {
-    events.add("catch error entry");
-    catchErrors(() {
-      events.add("catch error entry2");
-      new Future.error("future error");
-      new Future.error("future error2");
-      new Future.value(499).then((x) => throw x);
-      new Future.delayed(const Duration(milliseconds: 50), () {
-        throw "delayed error";
-      });
-      throw "catch error";
-    }).listen((x) {
-      events.add(x);
-      if (x == "delayed error") {
-        throw "inner done throw";
-      }
-    });
-    events.add("after inner");
-    throw "inner throw";
-  }).listen((x) {
-    events.add(x);
-    if (x == "inner done throw") {
-      done.complete(true);
-    }
-  }, onDone: () {
-    Expect.fail("Unexpected callback");
-  });
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "catch error entry",
-      "catch error entry2",
-      "after inner",
-      "main exit",
-      "catch error",
-      "inner throw",
-      "future error",
-      "future error2",
-      499,
-      "delayed error",
-      "inner done throw"
-    ], events);
-    asyncEnd();
-  });
-  events.add("main exit");
-}
diff --git a/tests/lib/async/event_helper.dart b/tests/lib/async/event_helper.dart
deleted file mode 100644
index d7ff0f4..0000000
--- a/tests/lib/async/event_helper.dart
+++ /dev/null
@@ -1,184 +0,0 @@
-// 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.
-
-library event_helper;
-
-import 'dart:async';
-
-abstract class Event {
-  void replay(EventSink sink);
-}
-
-class DataEvent implements Event {
-  final data;
-
-  DataEvent(this.data);
-
-  void replay(EventSink sink) {
-    sink.add(data);
-  }
-
-  int get hashCode => data.hashCode;
-
-  bool operator ==(Object other) {
-    if (other is! DataEvent) return false;
-    DataEvent otherEvent = other;
-    return data == otherEvent.data;
-  }
-
-  String toString() => "DataEvent: $data";
-}
-
-class ErrorEvent implements Event {
-  final error;
-
-  ErrorEvent(this.error);
-
-  void replay(EventSink sink) {
-    sink.addError(error);
-  }
-
-  int get hashCode => error.error.hashCode;
-
-  bool operator ==(Object other) {
-    if (other is! ErrorEvent) return false;
-    ErrorEvent otherEvent = other;
-    return error == otherEvent.error;
-  }
-
-  String toString() => "ErrorEvent: ${error}";
-}
-
-class DoneEvent implements Event {
-  const DoneEvent();
-
-  void replay(EventSink sink) {
-    sink.close();
-  }
-
-  int get hashCode => 42;
-
-  bool operator ==(Object other) => other is DoneEvent;
-
-  String toString() => "DoneEvent";
-}
-
-/** Collector of events. */
-class Events implements EventSink {
-  final List<Event> events = [];
-  bool trace = false;
-  Completer onDoneSignal = new Completer();
-
-  Events();
-
-  Events.fromIterable(Iterable iterable) {
-    for (var value in iterable) add(value);
-    close();
-  }
-
-  /** Capture events from a stream into a new [Events] object. */
-  factory Events.capture(Stream stream, {bool cancelOnError}) = CaptureEvents;
-
-  // EventSink interface.
-  void add(var value) {
-    if (trace) print("Events#$hashCode: add($value)");
-    events.add(new DataEvent(value));
-  }
-
-  void addError(error, [StackTrace stackTrace]) {
-    if (trace) print("Events#$hashCode: addError($error)");
-    events.add(new ErrorEvent(error));
-  }
-
-  void close() {
-    if (trace) print("Events#$hashCode: close()");
-    events.add(const DoneEvent());
-    onDoneSignal.complete();
-  }
-
-  /**
-   * Error shorthand, for writing events manually.
-   */
-  void error(var value, [StackTrace stackTrace]) {
-    addError(value, stackTrace);
-  }
-
-  /** Replay the captured events on a sink. */
-  void replay(EventSink sink) {
-    for (int i = 0; i < events.length; i++) {
-      events[i].replay(sink);
-    }
-  }
-
-  /**
-   * Create a new [Events] with the same captured events.
-   *
-   * This does not copy a subscription.
-   */
-  Events copy() {
-    Events result = new Events();
-    replay(result);
-    return result;
-  }
-
-  // Operations that only work when there is a subscription feeding the Events.
-
-  /**
-   * Pauses the subscription that feeds this [Events].
-   *
-   * Should only be used when there is a subscription. That is, after a
-   * call to [subscribeTo].
-   */
-  void pause([Future resumeSignal]) {
-    throw new StateError("Not capturing events.");
-  }
-
-  /** Resumes after a call to [pause]. */
-  void resume() {
-    throw new StateError("Not capturing events.");
-  }
-
-  /**
-   * Sets an action to be called when this [Events] receives a 'done' event.
-   *
-   * The action will also be called if capturing events from a stream with
-   * `cancelOnError` set to true and receiving an error.
-   */
-  void onDone(void action()) {
-    onDoneSignal.future.whenComplete(action);
-  }
-}
-
-class CaptureEvents extends Events {
-  StreamSubscription subscription;
-  bool cancelOnError = false;
-
-  CaptureEvents(Stream stream, {bool cancelOnError: false}) {
-    this.cancelOnError = cancelOnError;
-    subscription = stream.listen(add,
-        onError: addError, onDone: close, cancelOnError: cancelOnError);
-  }
-
-  void addError(error, [stackTrace]) {
-    super.addError(error, stackTrace);
-    if (cancelOnError) {
-      onDoneSignal.complete();
-    }
-  }
-
-  void pause([Future resumeSignal]) {
-    if (trace) print("Events#$hashCode: pause");
-    subscription.pause(resumeSignal);
-  }
-
-  void resume() {
-    if (trace) print("Events#$hashCode: resume");
-    subscription.resume();
-  }
-
-  void onDone(void action()) {
-    if (trace) print("Events#$hashCode: onDone");
-    super.onDone(action);
-  }
-}
diff --git a/tests/lib/async/futures_test.dart b/tests/lib/async/futures_test.dart
deleted file mode 100644
index 5f3b532..0000000
--- a/tests/lib/async/futures_test.dart
+++ /dev/null
@@ -1,294 +0,0 @@
-// Copyright (c) 2011, 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 futures_test;
-
-import 'package:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-
-Future testWaitEmpty() {
-  List<Future> futures = new List<Future>();
-  return Future.wait(futures);
-}
-
-Future testCompleteAfterWait() {
-  List<Future> futures = new List<Future>();
-  Completer<Object> c = new Completer<Object>();
-  futures.add(c.future);
-  Future future = Future.wait(futures);
-  c.complete(null);
-  return future;
-}
-
-Future testCompleteBeforeWait() {
-  List<Future> futures = new List<Future>();
-  Completer c = new Completer();
-  futures.add(c.future);
-  c.complete(null);
-  return Future.wait(futures);
-}
-
-Future testWaitWithMultipleValues() {
-  List<Future> futures = new List<Future>();
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  futures.add(c1.future);
-  futures.add(c2.future);
-  c1.complete(1);
-  c2.complete(2);
-  return Future.wait(futures).then((values) {
-    Expect.listEquals([1, 2], values);
-  });
-}
-
-Future testWaitWithSingleError() {
-  List<Future> futures = new List<Future>();
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  futures.add(c1.future);
-  futures.add(c2.future);
-  c1.complete();
-  c2.completeError('correct error');
-
-  return Future.wait(futures).then((_) {
-    throw 'incorrect error';
-  }).catchError((error, stackTrace) {
-    Expect.equals('correct error', error);
-    Expect.isNull(stackTrace);
-  });
-}
-
-Future testWaitWithMultipleErrors() {
-  List<Future> futures = new List<Future>();
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  futures.add(c1.future);
-  futures.add(c2.future);
-  c1.completeError('correct error');
-  c2.completeError('incorrect error 1');
-
-  return Future.wait(futures).then((_) {
-    throw 'incorrect error 2';
-  }).catchError((error, stackTrace) {
-    Expect.equals('correct error', error);
-    Expect.isNull(stackTrace);
-  });
-}
-
-Future testWaitWithMultipleErrorsEager() {
-  List<Future> futures = new List<Future>();
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  futures.add(c1.future);
-  futures.add(c2.future);
-  c1.completeError('correct error');
-  c2.completeError('incorrect error 1');
-
-  return Future.wait(futures, eagerError: true).then((_) {
-    throw 'incorrect error 2';
-  }).catchError((error, stackTrace) {
-    Expect.equals('correct error', error);
-    Expect.isNull(stackTrace);
-  });
-}
-
-StackTrace get currentStackTrace {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-  return null;
-}
-
-Future testWaitWithSingleErrorWithStackTrace() {
-  List<Future> futures = new List<Future>();
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  futures.add(c1.future);
-  futures.add(c2.future);
-  c1.complete();
-  c2.completeError('correct error', currentStackTrace);
-
-  return Future.wait(futures).then((_) {
-    throw 'incorrect error';
-  }).catchError((error, stackTrace) {
-    Expect.equals('correct error', error);
-    Expect.isNotNull(stackTrace);
-  });
-}
-
-Future testWaitWithMultipleErrorsWithStackTrace() {
-  List<Future> futures = new List<Future>();
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  futures.add(c1.future);
-  futures.add(c2.future);
-  c1.completeError('correct error', currentStackTrace);
-  c2.completeError('incorrect error 1');
-
-  return Future.wait(futures).then((_) {
-    throw 'incorrect error 2';
-  }).catchError((error, stackTrace) {
-    Expect.equals('correct error', error);
-    Expect.isNotNull(stackTrace);
-  });
-}
-
-Future testWaitWithMultipleErrorsWithStackTraceEager() {
-  List<Future> futures = new List<Future>();
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  futures.add(c1.future);
-  futures.add(c2.future);
-  c1.completeError('correct error', currentStackTrace);
-  c2.completeError('incorrect error 1');
-
-  return Future.wait(futures, eagerError: true).then((_) {
-    throw 'incorrect error 2';
-  }).catchError((error, stackTrace) {
-    Expect.equals('correct error', error);
-    Expect.isNotNull(stackTrace);
-  });
-}
-
-Future testEagerWait() {
-  var st;
-  try {
-    throw 0;
-  } catch (e, s) {
-    st = s;
-  }
-  Completer c1 = new Completer();
-  Completer c2 = new Completer();
-  List<Future> futures = <Future>[c1.future, c2.future];
-  Future waited = Future.wait(futures, eagerError: true);
-  var result = waited.then((v) {
-    throw "should not be called";
-  }, onError: (e, s) {
-    Expect.equals(e, 42);
-    Expect.identical(st, s);
-    return true;
-  });
-  c1.completeError(42, st);
-  return result;
-}
-
-Future testForEachEmpty() {
-  return Future.forEach([], (_) {
-    throw 'should not be called';
-  });
-}
-
-Future testForEach() {
-  var seen = <int>[];
-  return Future.forEach([1, 2, 3, 4, 5], (n) {
-    seen.add(n);
-    return new Future.value();
-  }).then((_) => Expect.listEquals([1, 2, 3, 4, 5], seen));
-}
-
-Future testForEachSync() {
-  var seen = <int>[];
-  return Future.forEach([1, 2, 3, 4, 5], seen.add).then(
-      (_) => Expect.listEquals([1, 2, 3, 4, 5], seen));
-}
-
-Future testForEachWithException() {
-  var seen = <int>[];
-  return Future.forEach([1, 2, 3, 4, 5], (n) {
-    if (n == 4) throw 'correct exception';
-    seen.add(n);
-    return new Future.value();
-  }).then((_) {
-    throw 'incorrect exception';
-  }).catchError((error) {
-    Expect.equals('correct exception', error);
-  });
-}
-
-Future testDoWhile() {
-  var count = 0;
-  return Future.doWhile(() {
-    count++;
-    return new Future(() => count < 10);
-  }).then((_) => Expect.equals(10, count));
-}
-
-Future testDoWhileSync() {
-  var count = 0;
-  return Future.doWhile(() {
-    count++;
-    return count < 10;
-  }).then((_) => Expect.equals(10, count));
-}
-
-Future testDoWhileWithException() {
-  var count = 0;
-  return Future.doWhile(() {
-    count++;
-    if (count == 4) throw 'correct exception';
-    return new Future(() => true);
-  }).then((_) {
-    throw 'incorrect exception';
-  }).catchError((error) {
-    Expect.equals('correct exception', error);
-  });
-}
-
-Future testDoWhileManyFutures() {
-  int n = 100000;
-  var ftrue = new Future.value(false);
-  var ffalse = new Future.value(false);
-  return Future.doWhile(() {
-    return (--n > 0) ? ftrue : ffalse;
-  }).then((_) {
-    // Success
-  }, onError: (e, s) {
-    Expect.fail("$e\n$s");
-  });
-}
-
-Future testDoWhileManyValues() {
-  int n = 100000;
-  return Future.doWhile(() {
-    return (--n > 0);
-  }).then((_) {
-    // Success
-  }, onError: (e, s) {
-    Expect.fail("$e\n$s");
-  });
-}
-
-main() {
-  List<Future> futures = new List<Future>();
-
-  futures.add(testWaitEmpty());
-  futures.add(testCompleteAfterWait());
-  futures.add(testCompleteBeforeWait());
-  futures.add(testWaitWithMultipleValues());
-  futures.add(testWaitWithSingleError());
-  futures.add(testWaitWithMultipleErrors());
-  futures.add(testWaitWithMultipleErrorsEager());
-  futures.add(testWaitWithSingleErrorWithStackTrace());
-  futures.add(testWaitWithMultipleErrorsWithStackTrace());
-  futures.add(testWaitWithMultipleErrorsWithStackTraceEager());
-  futures.add(testEagerWait());
-  futures.add(testForEachEmpty());
-  futures.add(testForEach());
-  futures.add(testForEachSync());
-  futures.add(testForEachWithException());
-  futures.add(testDoWhile());
-  futures.add(testDoWhileSync());
-  futures.add(testDoWhileWithException());
-  futures.add(testDoWhileManyFutures());
-  futures.add(testDoWhileManyValues());
-
-  asyncStart();
-  Future.wait(futures).then((List list) {
-    Expect.equals(20, list.length);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace06_test.dart b/tests/lib/async/stack_trace06_test.dart
deleted file mode 100644
index c6246c1..0000000
--- a/tests/lib/async/stack_trace06_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  Completer completer = new Completer();
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  completer.future.whenComplete(() => 499).then((_) {
-    throw "should never be reached";
-  }).catchError((e, st) {
-    Expect.equals("c-error", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-  completer.completeError("c-error", trace);
-}
diff --git a/tests/lib/async/stack_trace07_test.dart b/tests/lib/async/stack_trace07_test.dart
deleted file mode 100644
index dd989e8..0000000
--- a/tests/lib/async/stack_trace07_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  Completer completer = new Completer();
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  completer.future.whenComplete(() => 499).then((_) {
-    throw "bad things happen";
-  }).catchError((e, st) {
-    Expect.equals("bad things happen", e);
-    Expect.isNotNull(st);
-    asyncEnd();
-  });
-  completer.complete(499);
-}
diff --git a/tests/lib/async/stack_trace08_test.dart b/tests/lib/async/stack_trace08_test.dart
deleted file mode 100644
index e9d5b94..0000000
--- a/tests/lib/async/stack_trace08_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  Completer completer = new Completer();
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  completer.future.whenComplete(() => 499).then((_) {
-    throw "should never be reached";
-  }).catchError((e, st) {
-    Expect.equals("c-error", e);
-    Expect.identical(trace, st);
-    // Test the rethrowing the same error keeps the stack trace.
-    throw e;
-  }).catchError((e, st) {
-    Expect.equals("c-error", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-  completer.completeError("c-error", trace);
-}
diff --git a/tests/lib/async/stack_trace09_test.dart b/tests/lib/async/stack_trace09_test.dart
deleted file mode 100644
index 534aeb1..0000000
--- a/tests/lib/async/stack_trace09_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.addError("error", trace);
-    controller.close();
-  });
-  asyncStart();
-  controller.stream.handleError((e, st) {
-    Expect.equals("error", e);
-    Expect.identical(trace, st);
-  }).listen((x) {
-    throw "should never be reached";
-  }, onDone: asyncEnd);
-}
diff --git a/tests/lib/async/stack_trace10_test.dart b/tests/lib/async/stack_trace10_test.dart
deleted file mode 100644
index b0420d4..0000000
--- a/tests/lib/async/stack_trace10_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.addError("error", trace);
-    controller.close();
-  });
-  asyncStart();
-  controller.stream.listen(null).asFuture().then((_) {
-    throw "should never be reached";
-  }, onError: (e, st) {
-    Expect.equals("error", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace11_test.dart b/tests/lib/async/stack_trace11_test.dart
deleted file mode 100644
index d698a18..0000000
--- a/tests/lib/async/stack_trace11_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  var f = new Future.error(499, trace);
-  f.then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace12_test.dart b/tests/lib/async/stack_trace12_test.dart
deleted file mode 100644
index c067d8f..0000000
--- a/tests/lib/async/stack_trace12_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  StackTrace trace;
-  asyncStart();
-  var f = new Future(() {
-    throw "foo";
-  });
-  f.then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("foo", e);
-    Expect.isNotNull(st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace13_test.dart b/tests/lib/async/stack_trace13_test.dart
deleted file mode 100644
index 8855bee..0000000
--- a/tests/lib/async/stack_trace13_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  StackTrace trace;
-  asyncStart();
-  var f = new Future(() {
-    throw "foo";
-  });
-  f.then((_) => 499).then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("foo", e);
-    Expect.isNotNull(st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace14_test.dart b/tests/lib/async/stack_trace14_test.dart
deleted file mode 100644
index fe3a534..0000000
--- a/tests/lib/async/stack_trace14_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  var f = new Future(() => 499);
-  f.then((_) => new Future.error("e", trace)).then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("e", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace15_test.dart b/tests/lib/async/stack_trace15_test.dart
deleted file mode 100644
index e52b4eb..0000000
--- a/tests/lib/async/stack_trace15_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  var f = new Future(() => 499);
-  f.then((_) => new Future.error("e", trace)).whenComplete(() => 499).then((_) {
-    throw "should never be reached";
-  }).then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("e", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace16_test.dart b/tests/lib/async/stack_trace16_test.dart
deleted file mode 100644
index a54a56e..0000000
--- a/tests/lib/async/stack_trace16_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  Completer completer = new Completer();
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  completer.future.whenComplete(() => 499).then((_) {
-    throw "should never be reached";
-  }).then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("c-error", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-  completer.completeError("c-error", trace);
-}
diff --git a/tests/lib/async/stack_trace17_test.dart b/tests/lib/async/stack_trace17_test.dart
deleted file mode 100644
index b7f33c5..0000000
--- a/tests/lib/async/stack_trace17_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  Completer completer = new Completer();
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  completer.future.whenComplete(() => 499).then((_) {
-    throw "bad things happen";
-  }).then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("bad things happen", e);
-    Expect.isNotNull(st);
-    asyncEnd();
-  });
-  completer.complete(499);
-}
diff --git a/tests/lib/async/stack_trace18_test.dart b/tests/lib/async/stack_trace18_test.dart
deleted file mode 100644
index 51b0c70..0000000
--- a/tests/lib/async/stack_trace18_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  Completer completer = new Completer();
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  completer.future.whenComplete(() => 499).then((_) {
-    throw "should never be reached";
-  }).then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("c-error", e);
-    Expect.identical(trace, st);
-    // Test the rethrowing the same error keeps the stack trace.
-    throw e;
-  }).then((_) {
-    throw "Unreachable";
-  }, onError: (e, st) {
-    Expect.equals("c-error", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-  completer.completeError("c-error", trace);
-}
diff --git a/tests/lib/async/stack_trace19_test.dart b/tests/lib/async/stack_trace19_test.dart
deleted file mode 100644
index 74a6180..0000000
--- a/tests/lib/async/stack_trace19_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  Completer completer = new Completer();
-  StackTrace trace = captureStackTrace();
-  StackTrace whenCompleteStackTrace;
-  asyncStart();
-  completer.future.whenComplete(() {
-    throw "other_error";
-  }).then((_) {
-    throw "should never be reached";
-  }).catchError((e, st) {
-    Expect.equals("other_error", e);
-    Expect.isNotNull(st);
-    Expect.isFalse(identical(trace, st));
-    whenCompleteStackTrace = st;
-    // Test the rethrowing the same error keeps the stack trace.
-    throw e;
-  }).catchError((e, st) {
-    Expect.equals("other_error", e);
-    Expect.identical(whenCompleteStackTrace, st);
-    asyncEnd();
-  });
-  completer.completeError("c-error", trace);
-}
diff --git a/tests/lib/async/stack_trace20_test.dart b/tests/lib/async/stack_trace20_test.dart
deleted file mode 100644
index b0420d4..0000000
--- a/tests/lib/async/stack_trace20_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.addError("error", trace);
-    controller.close();
-  });
-  asyncStart();
-  controller.stream.listen(null).asFuture().then((_) {
-    throw "should never be reached";
-  }, onError: (e, st) {
-    Expect.equals("error", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace21_test.dart b/tests/lib/async/stack_trace21_test.dart
deleted file mode 100644
index b859ba8..0000000
--- a/tests/lib/async/stack_trace21_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.addError("error", trace);
-    controller.close();
-  });
-  asyncStart();
-  controller.stream.listen((_) {
-    throw "should never be reached";
-  }, onError: (e, st) {
-    Expect.equals("error", e);
-    Expect.identical(trace, st);
-  }, onDone: () {
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace22_test.dart b/tests/lib/async/stack_trace22_test.dart
deleted file mode 100644
index 0ac1b8e..0000000
--- a/tests/lib/async/stack_trace22_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  var f = new Future.error(499, trace);
-  f.catchError((e, st) {
-    Expect.identical(trace, st);
-    asyncEnd();
-  }, test: (e) => e == 499);
-}
diff --git a/tests/lib/async/stack_trace23_test.dart b/tests/lib/async/stack_trace23_test.dart
deleted file mode 100644
index 2ee308a..0000000
--- a/tests/lib/async/stack_trace23_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  asyncStart();
-  var f = new Future.error(499, trace);
-  f.catchError((e) {
-    throw "unreachable";
-  }, test: (e) {
-    Expect.equals(499, e);
-    return false;
-  }).catchError((e, st) {
-    Expect.identical(trace, st);
-    asyncEnd();
-  }, test: (e) => e == 499);
-}
diff --git a/tests/lib/async/stack_trace24_test.dart b/tests/lib/async/stack_trace24_test.dart
deleted file mode 100644
index 81fa3d2..0000000
--- a/tests/lib/async/stack_trace24_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.add(499);
-    controller.close();
-  });
-  asyncStart();
-  controller.stream.map((e) {
-    throw "error";
-  }).listen((_) {
-    throw "should never be reached";
-  }, onError: (e, st) {
-    Expect.equals("error", e);
-    Expect.isNotNull(st);
-  }, onDone: () {
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stack_trace25_test.dart b/tests/lib/async/stack_trace25_test.dart
deleted file mode 100644
index 88a541b..0000000
--- a/tests/lib/async/stack_trace25_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-StackTrace captureStackTrace() {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-main() {
-  StackTrace trace = captureStackTrace();
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.addError("error", trace);
-    controller.close();
-  });
-  asyncStart();
-  var iterator = new StreamIterator(controller.stream);
-  var future = iterator.moveNext();
-  future.then((_) {
-    throw "unreachable";
-  }, onError: (e, st) {
-    Expect.equals("error", e);
-    Expect.identical(trace, st);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stream_controller_async_test.dart b/tests/lib/async/stream_controller_async_test.dart
deleted file mode 100644
index 024389e..0000000
--- a/tests/lib/async/stream_controller_async_test.dart
+++ /dev/null
@@ -1,907 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test the basic StreamController and StreamController.broadcast.
-library stream_controller_async_test;
-
-import 'dart:async';
-import "package:expect/expect.dart";
-import 'package:unittest/unittest.dart';
-import 'event_helper.dart';
-import 'stream_state_helper.dart';
-
-void cancelSub(StreamSubscription sub) {
-  sub.cancel();
-}
-
-testController() {
-  // Test fold
-  test("StreamController.fold", () {
-    StreamController c = new StreamController();
-    Stream stream = c.stream.asBroadcastStream(onCancel: cancelSub);
-    stream.fold(0, (a, b) => a + b).then(expectAsync((int v) {
-      Expect.equals(42, v);
-    }));
-    c.add(10);
-    c.add(32);
-    c.close();
-  });
-
-  test("StreamController.fold throws", () {
-    StreamController c = new StreamController();
-    Stream stream = c.stream.asBroadcastStream(onCancel: cancelSub);
-    stream.fold(0, (a, b) {
-      throw "Fnyf!";
-    }).catchError(expectAsync((error) {
-      Expect.equals("Fnyf!", error);
-    }));
-    c.add(42);
-  });
-}
-
-testSingleController() {
-  test("Single-subscription StreamController.fold", () {
-    StreamController c = new StreamController();
-    Stream stream = c.stream;
-    stream.fold(0, (a, b) => a + b).then(expectAsync((int v) {
-      Expect.equals(42, v);
-    }));
-    c.add(10);
-    c.add(32);
-    c.close();
-  });
-
-  test("Single-subscription StreamController.fold throws", () {
-    StreamController c = new StreamController();
-    Stream stream = c.stream;
-    stream.fold(0, (a, b) {
-      throw "Fnyf!";
-    }).catchError(expectAsync((e) {
-      Expect.equals("Fnyf!", e);
-    }));
-    c.add(42);
-  });
-
-  test(
-      "Single-subscription StreamController events are buffered when"
-      " there is no subscriber", () {
-    StreamController c = new StreamController();
-    EventSink sink = c.sink;
-    Stream stream = c.stream;
-    int counter = 0;
-    sink.add(1);
-    sink.add(2);
-    sink.close();
-    stream.listen((data) {
-      counter += data;
-    }, onDone: expectAsync(() {
-      Expect.equals(3, counter);
-    }));
-  });
-}
-
-testExtraMethods() {
-  Events sentEvents = new Events()
-    ..add(7)
-    ..add(9)
-    ..add(13)
-    ..add(87)
-    ..close();
-
-  test("forEach", () {
-    StreamController c = new StreamController();
-    Events actualEvents = new Events();
-    Future f = c.stream.forEach(actualEvents.add);
-    f.then(expectAsync((_) {
-      actualEvents.close();
-      Expect.listEquals(sentEvents.events, actualEvents.events);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("forEachError", () {
-    Events sentEvents = new Events()
-      ..add(7)
-      ..error("bad")
-      ..add(87)
-      ..close();
-    StreamController c = new StreamController();
-    Events actualEvents = new Events();
-    Future f = c.stream.forEach(actualEvents.add);
-    f.catchError(expectAsync((error) {
-      Expect.equals("bad", error);
-      Expect.listEquals((new Events()..add(7)).events, actualEvents.events);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("forEachError2", () {
-    Events sentEvents = new Events()
-      ..add(7)
-      ..add(9)
-      ..add(87)
-      ..close();
-    StreamController c = new StreamController();
-    Events actualEvents = new Events();
-    Future f = c.stream.forEach((x) {
-      if (x == 9) throw "bad";
-      actualEvents.add(x);
-    });
-    f.catchError(expectAsync((error) {
-      Expect.equals("bad", error);
-      Expect.listEquals((new Events()..add(7)).events, actualEvents.events);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("firstWhere", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.firstWhere((x) => (x % 3) == 0);
-    f.then(expectAsync((v) {
-      Expect.equals(9, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("firstWhere 2", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.firstWhere((x) => (x % 4) == 0);
-    f.catchError(expectAsync((e) {}));
-    sentEvents.replay(c);
-  });
-
-  test("firstWhere 3", () {
-    StreamController c = new StreamController();
-    Future f =
-        c.stream.firstWhere((x) => (x % 4) == 0, defaultValue: () => 999);
-    f.then(expectAsync((v) {
-      Expect.equals(999, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("lastWhere", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.lastWhere((x) => (x % 3) == 0);
-    f.then(expectAsync((v) {
-      Expect.equals(87, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("lastWhere 2", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.lastWhere((x) => (x % 4) == 0);
-    f.catchError(expectAsync((e) {}));
-    sentEvents.replay(c);
-  });
-
-  test("lastWhere 3", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.lastWhere((x) => (x % 4) == 0, defaultValue: () => 999);
-    f.then(expectAsync((v) {
-      Expect.equals(999, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("singleWhere", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.singleWhere((x) => (x % 9) == 0);
-    f.then(expectAsync((v) {
-      Expect.equals(9, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("singleWhere 2", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.singleWhere((x) => (x % 3) == 0); // Matches 9 and 87..
-    f.catchError(expectAsync((error) {
-      Expect.isTrue(error is StateError);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("first", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.first;
-    f.then(expectAsync((v) {
-      Expect.equals(7, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("first empty", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.first;
-    f.catchError(expectAsync((error) {
-      Expect.isTrue(error is StateError);
-    }));
-    Events emptyEvents = new Events()..close();
-    emptyEvents.replay(c);
-  });
-
-  test("first error", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.first;
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..error("error")
-      ..close();
-    errorEvents.replay(c);
-  });
-
-  test("first error 2", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.first;
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..error("error")
-      ..error("error2")
-      ..close();
-    errorEvents.replay(c);
-  });
-
-  test("last", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.last;
-    f.then(expectAsync((v) {
-      Expect.equals(87, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("last empty", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.last;
-    f.catchError(expectAsync((error) {
-      Expect.isTrue(error is StateError);
-    }));
-    Events emptyEvents = new Events()..close();
-    emptyEvents.replay(c);
-  });
-
-  test("last error", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.last;
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..error("error")
-      ..close();
-    errorEvents.replay(c);
-  });
-
-  test("last error 2", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.last;
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..error("error")
-      ..error("error2")
-      ..close();
-    errorEvents.replay(c);
-  });
-
-  test("elementAt", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.elementAt(2);
-    f.then(expectAsync((v) {
-      Expect.equals(13, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("elementAt 2", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.elementAt(20);
-    f.catchError(expectAsync((error) {
-      Expect.isTrue(error is RangeError);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("drain", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.drain();
-    f.then(expectAsync((v) {
-      Expect.equals(null, v);
-    }));
-    sentEvents.replay(c);
-  });
-
-  test("drain error", () {
-    StreamController c = new StreamController();
-    Future f = c.stream.drain();
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..error("error")
-      ..error("error2")
-      ..close();
-    errorEvents.replay(c);
-  });
-}
-
-testPause() {
-  test("pause event-unpause", () {
-    StreamProtocolTest test = new StreamProtocolTest();
-    Completer completer = new Completer();
-    test
-      ..expectListen()
-      ..expectData(42, () {
-        test.pause(completer.future);
-      })
-      ..expectPause(() {
-        completer.complete(null);
-      })
-      ..expectData(43)
-      ..expectData(44)
-      ..expectCancel()
-      ..expectDone(test.terminate);
-    test.listen();
-    test.add(42);
-    test.add(43);
-    test.add(44);
-    test.close();
-  });
-
-  test("pause twice event-unpause", () {
-    StreamProtocolTest test = new StreamProtocolTest();
-    Completer completer = new Completer();
-    Completer completer2 = new Completer();
-    test
-      ..expectListen()
-      ..expectData(42, () {
-        test.pause(completer.future);
-        test.pause(completer2.future);
-      })
-      ..expectPause(() {
-        completer.future.then(completer2.complete);
-        completer.complete(null);
-      })
-      ..expectData(43)
-      ..expectData(44)
-      ..expectCancel()
-      ..expectDone(test.terminate);
-    test
-      ..listen()
-      ..add(42)
-      ..add(43)
-      ..add(44)
-      ..close();
-  });
-
-  test("pause twice direct-unpause", () {
-    StreamProtocolTest test = new StreamProtocolTest();
-    test
-      ..expectListen()
-      ..expectData(42, () {
-        test.pause();
-        test.pause();
-      })
-      ..expectPause(() {
-        test.resume();
-        test.resume();
-      })
-      ..expectData(43)
-      ..expectData(44)
-      ..expectCancel()
-      ..expectDone(test.terminate);
-    test
-      ..listen()
-      ..add(42)
-      ..add(43)
-      ..add(44)
-      ..close();
-  });
-
-  test("pause twice direct-event-unpause", () {
-    StreamProtocolTest test = new StreamProtocolTest();
-    Completer completer = new Completer();
-    test
-      ..expectListen()
-      ..expectData(42, () {
-        test.pause();
-        test.pause(completer.future);
-        test.add(43);
-        test.add(44);
-        test.close();
-      })
-      ..expectPause(() {
-        completer.future.then((v) => test.resume());
-        completer.complete(null);
-      })
-      ..expectData(43)
-      ..expectData(44)
-      ..expectCancel()
-      ..expectDone(test.terminate);
-    test
-      ..listen()
-      ..add(42);
-  });
-}
-
-class TestError {
-  const TestError();
-}
-
-testRethrow() {
-  TestError error = const TestError();
-
-  testStream(name, streamValueTransform) {
-    test("rethrow-$name-value", () {
-      StreamController c = new StreamController();
-      Stream s = streamValueTransform(c.stream, (v) {
-        throw error;
-      });
-      s.listen((_) {
-        Expect.fail("unexpected value");
-      }, onError: expectAsync((e) {
-        Expect.identical(error, e);
-      }));
-      c.add(null);
-      c.close();
-    });
-  }
-
-  testStreamError(name, streamErrorTransform) {
-    test("rethrow-$name-error", () {
-      StreamController c = new StreamController();
-      Stream s = streamErrorTransform(c.stream, (e) {
-        throw error;
-      });
-      s.listen((_) {
-        Expect.fail("unexpected value");
-      }, onError: expectAsync((e) {
-        Expect.identical(error, e);
-      }));
-      c.addError("SOME ERROR");
-      c.close();
-    });
-  }
-
-  testFuture(name, streamValueTransform) {
-    test("rethrow-$name-value", () {
-      StreamController c = new StreamController();
-      Future f = streamValueTransform(c.stream, (v) {
-        throw error;
-      });
-      f.then((v) {
-        Expect.fail("unreachable");
-      }, onError: expectAsync((e) {
-        Expect.identical(error, e);
-      }));
-      // Need two values to trigger compare for reduce.
-      c.add(0);
-      c.add(1);
-      c.close();
-    });
-  }
-
-  testStream("where", (s, act) => s.where(act));
-  testStream("map", (s, act) => s.map(act));
-  testStream("expand", (s, act) => s.expand(act));
-  testStream("where", (s, act) => s.where(act));
-  testStreamError("handleError", (s, act) => s.handleError(act));
-  testStreamError("handleTest", (s, act) => s.handleError((v) {}, test: act));
-  testFuture("forEach", (s, act) => s.forEach(act));
-  testFuture("every", (s, act) => s.every(act));
-  testFuture("any", (s, act) => s.any(act));
-  testFuture("reduce", (s, act) => s.reduce((a, b) => act(b)));
-  testFuture("fold", (s, act) => s.fold(0, (a, b) => act(b)));
-  testFuture("drain", (s, act) => s.drain().then(act));
-}
-
-void testBroadcastController() {
-  test("broadcast-controller-basic", () {
-    StreamProtocolTest test = new StreamProtocolTest.broadcast();
-    test
-      ..expectListen()
-      ..expectData(42)
-      ..expectCancel()
-      ..expectDone(test.terminate);
-    test
-      ..listen()
-      ..add(42)
-      ..close();
-  });
-
-  test("broadcast-controller-listen-twice", () {
-    StreamProtocolTest test = new StreamProtocolTest.broadcast();
-    test
-      ..expectListen()
-      ..expectData(42, () {
-        test.listen();
-        test.add(37);
-        test.close();
-      })
-      // Order is not guaranteed between subscriptions if not sync.
-      ..expectData(37)
-      ..expectData(37)
-      ..expectDone()
-      ..expectCancel()
-      ..expectDone(test.terminate);
-    test.listen();
-    test.add(42);
-  });
-
-  test("broadcast-controller-listen-twice-non-overlap", () {
-    StreamProtocolTest test = new StreamProtocolTest.broadcast();
-    test
-      ..expectListen(() {
-        test.add(42);
-      })
-      ..expectData(42, () {
-        test.cancel();
-      })
-      ..expectCancel(() {
-        test.listen();
-      })
-      ..expectListen(() {
-        test.add(37);
-      })
-      ..expectData(37, () {
-        test.close();
-      })
-      ..expectCancel()
-      ..expectDone(test.terminate);
-    test.listen();
-  });
-
-  test("broadcast-controller-individual-pause", () {
-    StreamProtocolTest test = new StreamProtocolTest.broadcast();
-    var sub1;
-    test
-      ..expectListen()
-      ..expectData(42)
-      ..expectData(42, () {
-        sub1.pause();
-      })
-      ..expectData(43, () {
-        sub1.cancel();
-        test.listen();
-        test.add(44);
-        test.expectData(44);
-        test.expectData(44, test.terminate);
-      });
-    sub1 = test.listen();
-    test.listen();
-    test.add(42);
-    test.add(43);
-  });
-
-  test("broadcast-controller-add-in-callback", () {
-    StreamProtocolTest test = new StreamProtocolTest.broadcast();
-    test.expectListen();
-    var sub = test.listen();
-    test.add(42);
-    sub.expectData(42, () {
-      test.add(87);
-      sub.cancel();
-    });
-    test.expectCancel(() {
-      test.add(37);
-      test.terminate();
-    });
-  });
-}
-
-void testAsBroadcast() {
-  test("asBroadcast-not-canceled", () {
-    StreamProtocolTest test = new StreamProtocolTest.asBroadcast();
-    var sub;
-    test
-      ..expectListen()
-      ..expectBroadcastListen((_) {
-        test.add(42);
-      })
-      ..expectData(42, () {
-        sub.cancel();
-      })
-      ..expectBroadcastCancel((_) {
-        sub = test.listen();
-      })
-      ..expectBroadcastListen((_) {
-        test.terminate();
-      });
-    sub = test.listen();
-  });
-
-  test("asBroadcast-canceled", () {
-    StreamProtocolTest test = new StreamProtocolTest.asBroadcast();
-    var sub;
-    test
-      ..expectListen()
-      ..expectBroadcastListen((_) {
-        test.add(42);
-      })
-      ..expectData(42, () {
-        sub.cancel();
-      })
-      ..expectBroadcastCancel((originalSub) {
-        originalSub.cancel();
-      })
-      ..expectCancel(test.terminate);
-    sub = test.listen();
-  });
-
-  test("asBroadcast-pause-original", () {
-    StreamProtocolTest test = new StreamProtocolTest.asBroadcast();
-    var sub;
-    test
-      ..expectListen()
-      ..expectBroadcastListen((_) {
-        test.add(42);
-        test.add(43);
-      })
-      ..expectData(42, () {
-        sub.cancel();
-      })
-      ..expectBroadcastCancel((originalSub) {
-        originalSub.pause(); // Pause before sending 43 from original sub.
-      })
-      ..expectPause(() {
-        sub = test.listen();
-      })
-      ..expectBroadcastListen((originalSub) {
-        originalSub.resume();
-      })
-      ..expectData(43)
-      ..expectResume(() {
-        test.close();
-      })
-      ..expectCancel()
-      ..expectDone()
-      ..expectBroadcastCancel((_) => test.terminate());
-    sub = test.listen();
-  });
-}
-
-void testSink({bool sync, bool broadcast, bool asBroadcast}) {
-  String type = "${sync?"S":"A"}${broadcast?"B":"S"}${asBroadcast?"aB":""}";
-  test("$type-controller-sink", () {
-    var done = expectAsync(() {});
-    var c = broadcast
-        ? new StreamController.broadcast(sync: sync)
-        : new StreamController(sync: sync);
-    var expected = new Events()
-      ..add(42)
-      ..error("error")
-      ..add(1)
-      ..add(2)
-      ..add(3)
-      ..add(4)
-      ..add(5)
-      ..add(43)
-      ..close();
-    var actual = new Events.capture(
-        asBroadcast ? c.stream.asBroadcastStream() : c.stream);
-    var sink = c.sink;
-    sink.add(42);
-    sink.addError("error");
-    sink.addStream(new Stream.fromIterable([1, 2, 3, 4, 5])).then((_) {
-      sink.add(43);
-      return sink.close();
-    }).then((_) {
-      Expect.listEquals(expected.events, actual.events);
-      done();
-    });
-  });
-
-  test("$type-controller-sink-canceled", () {
-    var done = expectAsync(() {});
-    var c = broadcast
-        ? new StreamController.broadcast(sync: sync)
-        : new StreamController(sync: sync);
-    var expected = new Events()
-      ..add(42)
-      ..error("error")
-      ..add(1)
-      ..add(2)
-      ..add(3);
-    var stream = asBroadcast ? c.stream.asBroadcastStream() : c.stream;
-    var actual = new Events();
-    var sub;
-    // Cancel subscription after receiving "3" event.
-    sub = stream.listen((v) {
-      if (v == 3) sub.cancel();
-      actual.add(v);
-    }, onError: actual.error);
-    var sink = c.sink;
-    sink.add(42);
-    sink.addError("error");
-    sink.addStream(new Stream.fromIterable([1, 2, 3, 4, 5])).then((_) {
-      Expect.listEquals(expected.events, actual.events);
-      // Close controller as well. It has no listener. If it is a broadcast
-      // stream, it will still be open, and we read the "done" future before
-      // closing. A normal stream is already done when its listener cancels.
-      Future doneFuture = sink.done;
-      sink.close();
-      return doneFuture;
-    }).then((_) {
-      // No change in events.
-      Expect.listEquals(expected.events, actual.events);
-      done();
-    });
-  });
-
-  test("$type-controller-sink-paused", () {
-    var done = expectAsync(() {});
-    var c = broadcast
-        ? new StreamController.broadcast(sync: sync)
-        : new StreamController(sync: sync);
-    var expected = new Events()
-      ..add(42)
-      ..error("error")
-      ..add(1)
-      ..add(2)
-      ..add(3)
-      ..add(4)
-      ..add(5)
-      ..add(43)
-      ..close();
-    var stream = asBroadcast ? c.stream.asBroadcastStream() : c.stream;
-    var actual = new Events();
-    var sub;
-    var pauseIsDone = false;
-    sub = stream.listen((v) {
-      if (v == 3) {
-        sub.pause(new Future.delayed(const Duration(milliseconds: 15), () {
-          pauseIsDone = true;
-        }));
-      }
-      actual.add(v);
-    }, onError: actual.error, onDone: actual.close);
-    var sink = c.sink;
-    sink.add(42);
-    sink.addError("error");
-    sink.addStream(new Stream.fromIterable([1, 2, 3, 4, 5])).then((_) {
-      sink.add(43);
-      return sink.close();
-    }).then((_) {
-      if (asBroadcast || broadcast) {
-        // The done-future of the sink completes when it passes
-        // the done event to the asBroadcastStream controller, which is
-        // before the final listener gets the event.
-        // Wait for the done event to be *delivered* before testing the
-        // events.
-        actual.onDone(() {
-          Expect.listEquals(expected.events, actual.events);
-          done();
-        });
-      } else {
-        Expect.listEquals(expected.events, actual.events);
-        done();
-      }
-    });
-  });
-
-  test("$type-controller-addstream-error-stop", () {
-    // Check that addStream defaults to ending after the first error.
-    var done = expectAsync(() {});
-    StreamController c = broadcast
-        ? new StreamController.broadcast(sync: sync)
-        : new StreamController(sync: sync);
-    Stream stream = asBroadcast ? c.stream.asBroadcastStream() : c.stream;
-    var actual = new Events.capture(stream);
-
-    var source = new Events();
-    source
-      ..add(1)
-      ..add(2)
-      ..error("BAD")
-      ..add(3)
-      ..error("FAIL")
-      ..close();
-
-    var expected = new Events()
-      ..add(1)
-      ..add(2)
-      ..error("BAD")
-      ..close();
-    StreamController sourceController = new StreamController();
-    c.addStream(sourceController.stream).then((_) {
-      c.close().then((_) {
-        Expect.listEquals(expected.events, actual.events);
-        done();
-      });
-    });
-
-    source.replay(sourceController);
-  });
-
-  test("$type-controller-addstream-error-forward", () {
-    // Check that addStream with cancelOnError:false passes all data and errors
-    // to the controller.
-    var done = expectAsync(() {});
-    StreamController c = broadcast
-        ? new StreamController.broadcast(sync: sync)
-        : new StreamController(sync: sync);
-    Stream stream = asBroadcast ? c.stream.asBroadcastStream() : c.stream;
-    var actual = new Events.capture(stream);
-
-    var source = new Events();
-    source
-      ..add(1)
-      ..add(2)
-      ..addError("BAD")
-      ..add(3)
-      ..addError("FAIL")
-      ..close();
-
-    StreamController sourceController = new StreamController();
-    c.addStream(sourceController.stream, cancelOnError: false).then((_) {
-      c.close().then((_) {
-        Expect.listEquals(source.events, actual.events);
-        done();
-      });
-    });
-
-    source.replay(sourceController);
-  });
-
-  test("$type-controller-addstream-twice", () {
-    // Using addStream twice on the same stream
-    var done = expectAsync(() {});
-    StreamController c = broadcast
-        ? new StreamController.broadcast(sync: sync)
-        : new StreamController(sync: sync);
-    Stream stream = asBroadcast ? c.stream.asBroadcastStream() : c.stream;
-    var actual = new Events.capture(stream);
-
-    // Streams of five events, throws on 3.
-    Stream s1 = new Stream.fromIterable([1, 2, 3, 4, 5])
-        .map((x) => (x == 3 ? throw x : x));
-    Stream s2 = new Stream.fromIterable([1, 2, 3, 4, 5])
-        .map((x) => (x == 3 ? throw x : x));
-
-    Events expected = new Events();
-    expected
-      ..add(1)
-      ..add(2)
-      ..error(3);
-    expected
-      ..add(1)
-      ..add(2)
-      ..error(3)
-      ..add(4)
-      ..add(5);
-    expected..close();
-
-    c.addStream(s1).then((_) {
-      c.addStream(s2, cancelOnError: false).then((_) {
-        c.close().then((_) {
-          Expect.listEquals(expected.events, actual.events);
-          done();
-        });
-      });
-    });
-  });
-}
-
-main() {
-  testController();
-  testSingleController();
-  testExtraMethods();
-  testPause();
-  testRethrow();
-  testBroadcastController();
-  testAsBroadcast();
-  testSink(sync: true, broadcast: false, asBroadcast: false);
-  testSink(sync: true, broadcast: false, asBroadcast: true);
-  testSink(sync: true, broadcast: true, asBroadcast: false);
-  testSink(sync: false, broadcast: false, asBroadcast: false);
-  testSink(sync: false, broadcast: false, asBroadcast: true);
-  testSink(sync: false, broadcast: true, asBroadcast: false);
-}
diff --git a/tests/lib/async/stream_controller_test.dart b/tests/lib/async/stream_controller_test.dart
deleted file mode 100644
index c8d8ceb..0000000
--- a/tests/lib/async/stream_controller_test.dart
+++ /dev/null
@@ -1,1141 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test the basic StreamController and StreamController.singleSubscription.
-library stream_controller_test;
-
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-import 'dart:async';
-import 'event_helper.dart';
-
-const MS = const Duration(milliseconds: 1);
-
-fail(e) {
-  Expect.fail("Unexepected error: $e");
-}
-
-void testMultiController() {
-  // Test normal flow.
-  {
-    var c = new StreamController(sync: true);
-    Events expectedEvents = new Events()
-      ..add(42)
-      ..add("dibs")
-      ..error("error!")
-      ..error("error too!")
-      ..close();
-    CaptureEvents actualEvents =
-        new Events.capture(c.stream.asBroadcastStream());
-    expectedEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test automatic unsubscription on error.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add(42)
-      ..error("error");
-    var actualEvents =
-        new Events.capture(c.stream.asBroadcastStream(), cancelOnError: true);
-    Events sentEvents = new Events()
-      ..add(42)
-      ..error("error")
-      ..add("Are you there?");
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test manual unsubscription.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add(42)
-      ..error("error")
-      ..add(37);
-    var actualEvents =
-        new Events.capture(c.stream.asBroadcastStream(), cancelOnError: false);
-    expectedEvents.replay(c);
-    actualEvents.subscription.cancel();
-    c.add("Are you there"); // Not sent to actualEvents.
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test filter.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add("a string")
-      ..add("another string")
-      ..close();
-    var sentEvents = new Events()
-      ..add("a string")
-      ..add(42)
-      ..add("another string")
-      ..close();
-    var actualEvents = new Events.capture(
-        c.stream.asBroadcastStream().where((v) => v is String));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test map.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add("abab")
-      ..error("error")
-      ..close();
-    var sentEvents = new Events()
-      ..add("ab")
-      ..error("error")
-      ..close();
-    var actualEvents =
-        new Events.capture(c.stream.asBroadcastStream().map((v) => "$v$v"));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test handleError.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add("ab")
-      ..error("[foo]");
-    var sentEvents = new Events()
-      ..add("ab")
-      ..error("foo")
-      ..add("ab")
-      ..close();
-    var actualEvents = new Events.capture(
-        c.stream.asBroadcastStream().handleError((error) {
-          if (error is String) {
-            // TODO(floitsch): this test originally changed the stacktrace.
-            throw "[${error}]";
-          }
-        }),
-        cancelOnError: true);
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // reduce is tested asynchronously and therefore not in this file.
-
-  // Test expand
-  {
-    var c = new StreamController(sync: true);
-    var sentEvents = new Events()
-      ..add(3)
-      ..add(2)
-      ..add(4)
-      ..close();
-    var expectedEvents = new Events()
-      ..add(1)
-      ..add(2)
-      ..add(3)
-      ..add(1)
-      ..add(2)
-      ..add(1)
-      ..add(2)
-      ..add(3)
-      ..add(4)
-      ..close();
-    var actualEvents =
-        new Events.capture(c.stream.asBroadcastStream().expand((v) {
-      var l = [];
-      for (int i = 0; i < v; i++) l.add(i + 1);
-      return l;
-    }));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test transform.
-  {
-    var c = new StreamController(sync: true);
-    var sentEvents = new Events()
-      ..add("a")
-      ..error(42)
-      ..add("b")
-      ..close();
-    var expectedEvents = new Events()
-      ..error("a")
-      ..add(42)
-      ..error("b")
-      ..add("foo")
-      ..close();
-    var actualEvents = new Events.capture(c.stream
-        .asBroadcastStream()
-        .transform(new StreamTransformer.fromHandlers(handleData: (v, s) {
-          s.addError(v);
-        }, handleError: (e, st, s) {
-          s.add(e);
-        }, handleDone: (s) {
-          s.add("foo");
-          s.close();
-        })));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test multiple filters.
-  {
-    var c = new StreamController(sync: true);
-    var sentEvents = new Events()
-      ..add(42)
-      ..add("snugglefluffy")
-      ..add(7)
-      ..add("42")
-      ..error("not FormatException") // Unsubscribes.
-      ..close();
-    var expectedEvents = new Events()
-      ..add(42)
-      ..error("not FormatException");
-    var actualEvents = new Events.capture(
-        c.stream
-            .asBroadcastStream()
-            .where((v) => v is String)
-            .map((v) => int.parse(v))
-            .handleError((error) {
-          if (error is! FormatException) throw error;
-        }).where((v) => v > 10),
-        cancelOnError: true);
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test subscription changes while firing.
-  {
-    var c = new StreamController(sync: true);
-    var sink = c.sink;
-    var stream = c.stream.asBroadcastStream();
-    var counter = 0;
-    var subscription = stream.listen(null);
-    subscription.onData((data) {
-      counter += data;
-      subscription.cancel();
-      stream.listen((data) {
-        counter += 10 * data;
-      });
-      var subscription2 = stream.listen(null);
-      subscription2.onData((data) {
-        counter += 100 * data;
-        if (data == 4) subscription2.cancel();
-      });
-    });
-    sink.add(1); // seen by stream 1
-    sink.add(2); // seen by stream 10 and 100
-    sink.add(3); // -"-
-    sink.add(4); // -"-
-    sink.add(5); // seen by stream 10
-    Expect.equals(1 + 20 + 200 + 30 + 300 + 40 + 400 + 50, counter);
-  }
-}
-
-testSingleController() {
-  // Test normal flow.
-  {
-    var c = new StreamController(sync: true);
-    Events expectedEvents = new Events()
-      ..add(42)
-      ..add("dibs")
-      ..error("error!")
-      ..error("error too!")
-      ..close();
-    CaptureEvents actualEvents = new Events.capture(c.stream);
-    expectedEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test automatic unsubscription on error.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add(42)
-      ..error("error");
-    var actualEvents = new Events.capture(c.stream, cancelOnError: true);
-    Events sentEvents = new Events()
-      ..add(42)
-      ..error("error")
-      ..add("Are you there?");
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test manual unsubscription.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add(42)
-      ..error("error")
-      ..add(37);
-    var actualEvents = new Events.capture(c.stream, cancelOnError: false);
-    expectedEvents.replay(c);
-    actualEvents.subscription.cancel();
-    c.add("Are you there"); // Not sent to actualEvents.
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test filter.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add("a string")
-      ..add("another string")
-      ..close();
-    var sentEvents = new Events()
-      ..add("a string")
-      ..add(42)
-      ..add("another string")
-      ..close();
-    var actualEvents = new Events.capture(c.stream.where((v) => v is String));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test map.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add("abab")
-      ..error("error")
-      ..close();
-    var sentEvents = new Events()
-      ..add("ab")
-      ..error("error")
-      ..close();
-    var actualEvents = new Events.capture(c.stream.map((v) => "$v$v"));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test handleError.
-  {
-    var c = new StreamController(sync: true);
-    var expectedEvents = new Events()
-      ..add("ab")
-      ..error("[foo]");
-    var sentEvents = new Events()
-      ..add("ab")
-      ..error("foo")
-      ..add("ab")
-      ..close();
-    var actualEvents = new Events.capture(c.stream.handleError((error) {
-      if (error is String) {
-        // TODO(floitsch): this error originally changed the stack trace.
-        throw "[${error}]";
-      }
-    }), cancelOnError: true);
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // reduce is tested asynchronously and therefore not in this file.
-
-  // Test expand
-  {
-    var c = new StreamController(sync: true);
-    var sentEvents = new Events()
-      ..add(3)
-      ..add(2)
-      ..add(4)
-      ..close();
-    var expectedEvents = new Events()
-      ..add(1)
-      ..add(2)
-      ..add(3)
-      ..add(1)
-      ..add(2)
-      ..add(1)
-      ..add(2)
-      ..add(3)
-      ..add(4)
-      ..close();
-    var actualEvents = new Events.capture(c.stream.expand((v) {
-      var l = [];
-      for (int i = 0; i < v; i++) l.add(i + 1);
-      return l;
-    }));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // test contains.
-  {
-    var c = new StreamController(sync: true);
-    // Error after match is not important.
-    var sentEvents = new Events()
-      ..add("a")
-      ..add("x")
-      ..error("FAIL")
-      ..close();
-    Future<bool> contains = c.stream.contains("x");
-    contains.then((var c) {
-      Expect.isTrue(c);
-    });
-    sentEvents.replay(c);
-  }
-
-  {
-    var c = new StreamController(sync: true);
-    // Not matching is ok.
-    var sentEvents = new Events()
-      ..add("a")
-      ..add("x")
-      ..add("b")
-      ..close();
-    Future<bool> contains = c.stream.contains("y");
-    contains.then((var c) {
-      Expect.isFalse(c);
-    });
-    sentEvents.replay(c);
-  }
-
-  {
-    var c = new StreamController(sync: true);
-    // Error before match makes future err.
-    var sentEvents = new Events()
-      ..add("a")
-      ..error("FAIL")
-      ..add("b")
-      ..close();
-    Future<bool> contains = c.stream.contains("b");
-    contains.then((var c) {
-      Expect.fail("no value expected");
-    }).catchError((error) {
-      Expect.equals("FAIL", error);
-    });
-    sentEvents.replay(c);
-  }
-
-  // Test transform.
-  {
-    var c = new StreamController(sync: true);
-    var sentEvents = new Events()
-      ..add("a")
-      ..error(42)
-      ..add("b")
-      ..close();
-    var expectedEvents = new Events()
-      ..error("a")
-      ..add(42)
-      ..error("b")
-      ..add("foo")
-      ..close();
-    var actualEvents = new Events.capture(c.stream
-        .transform(new StreamTransformer.fromHandlers(handleData: (v, s) {
-      s.addError(v);
-    }, handleError: (e, st, s) {
-      s.add(e);
-    }, handleDone: (s) {
-      s.add("foo");
-      s.close();
-    })));
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test multiple filters.
-  {
-    var c = new StreamController(sync: true);
-    var sentEvents = new Events()
-      ..add(42)
-      ..add("snugglefluffy")
-      ..add(7)
-      ..add("42")
-      ..error("not FormatException") // Unsubscribes.
-      ..close();
-    var expectedEvents = new Events()
-      ..add(42)
-      ..error("not FormatException");
-    var actualEvents = new Events.capture(
-        c.stream
-            .where((v) => v is String)
-            .map((v) => int.parse(v))
-            .handleError((error) {
-          if (error is! FormatException) throw error;
-        }).where((v) => v > 10),
-        cancelOnError: true);
-    sentEvents.replay(c);
-    Expect.listEquals(expectedEvents.events, actualEvents.events);
-  }
-
-  // Test that only one subscription is allowed.
-  {
-    var c = new StreamController(sync: true);
-    var sink = c.sink;
-    var stream = c.stream;
-    var counter = 0;
-    var subscription = stream.listen((data) {
-      counter += data;
-    });
-    Expect.throws(() => stream.listen(null), (e) => e is StateError);
-    sink.add(1);
-    Expect.equals(1, counter);
-    c.close();
-  }
-}
-
-testExtraMethods() {
-  Events sentEvents = new Events()
-    ..add(1)
-    ..add(2)
-    ..add(3)
-    ..close();
-
-  var c = new StreamController(sync: true);
-  Events expectedEvents = new Events()
-    ..add(3)
-    ..close();
-  Events actualEvents = new Events.capture(c.stream.skip(2));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = new Events()..close();
-  actualEvents = new Events.capture(c.stream.skip(3));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = new Events()..close();
-  actualEvents = new Events.capture(c.stream.skip(7));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = sentEvents;
-  actualEvents = new Events.capture(c.stream.skip(0));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = new Events()
-    ..add(3)
-    ..close();
-  actualEvents = new Events.capture(c.stream.skipWhile((x) => x <= 2));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = new Events()
-    ..add(2)
-    ..add(3)
-    ..close();
-  actualEvents = new Events.capture(c.stream.skipWhile((x) => x <= 1));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = new Events()
-    ..add(1)
-    ..add(2)
-    ..add(3)
-    ..close();
-  actualEvents = new Events.capture(c.stream.skipWhile((x) => false));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = new Events()
-    ..add(1)
-    ..add(2)
-    ..close();
-  actualEvents = new Events.capture(c.stream.take(2));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  expectedEvents = new Events()
-    ..add(1)
-    ..add(2)
-    ..close();
-  actualEvents = new Events.capture(c.stream.takeWhile((x) => x <= 2));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  sentEvents = new Events()
-    ..add(1)
-    ..add(1)
-    ..add(2)
-    ..add(1)
-    ..add(2)
-    ..add(2)
-    ..add(2)
-    ..close();
-  expectedEvents = new Events()
-    ..add(1)
-    ..add(2)
-    ..add(1)
-    ..add(2)
-    ..close();
-  actualEvents = new Events.capture(c.stream.distinct());
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-
-  c = new StreamController(sync: true);
-  sentEvents = new Events()
-    ..add(5)
-    ..add(6)
-    ..add(4)
-    ..add(6)
-    ..add(8)
-    ..add(3)
-    ..add(4)
-    ..add(1)
-    ..close();
-  expectedEvents = new Events()
-    ..add(5)
-    ..add(4)
-    ..add(3)
-    ..add(1)
-    ..close();
-  // Use 'distinct' as a filter with access to the previously emitted event.
-  actualEvents = new Events.capture(c.stream.distinct((a, b) => a < b));
-  sentEvents.replay(c);
-  Expect.listEquals(expectedEvents.events, actualEvents.events);
-}
-
-void testClosed() {
-  StreamController c = new StreamController(sync: true);
-  Expect.isFalse(c.isClosed);
-  c.add(42);
-  Expect.isFalse(c.isClosed);
-  c.addError("bad");
-  Expect.isFalse(c.isClosed);
-  c.close();
-  Expect.isTrue(c.isClosed);
-}
-
-void testCloseFuture() {
-  asyncStart();
-  asyncStart();
-  var c = new StreamController();
-  var f = c.close();
-  Expect.isTrue(c.isClosed);
-  bool doneSeen = false;
-  f.then((_) {
-    Expect.isTrue(doneSeen);
-    asyncEnd();
-  });
-  // Only listen after a while.
-  new Timer(MS * 250, () {
-    c.stream.listen(null, onDone: () {
-      asyncEnd();
-      doneSeen = true;
-    });
-  });
-}
-
-void testCloseFuture2() {
-  asyncStart();
-  asyncStart();
-  var c = new StreamController.broadcast();
-  var f = c.close();
-  Expect.isTrue(c.isClosed);
-  bool doneSeen = false;
-  f.then((_) {
-    // Done future on broadcast stream can happen
-    // before a listener is added.
-    Expect.isFalse(doneSeen);
-    asyncEnd();
-  });
-  // Only listen after a while.
-  new Timer(MS * 250, () {
-    c.stream.listen(null, onDone: () {
-      doneSeen = true;
-      asyncEnd();
-    });
-  });
-}
-
-void testCloseFuture3() {
-  asyncStart();
-  var c = new StreamController.broadcast();
-  c..add(1)..add(2)..add(3)..add(4);
-  c.stream.listen(null).cancel();
-  var f = c.close();
-  Expect.isTrue(c.isClosed);
-  f.then((_) {
-    asyncEnd();
-  });
-}
-
-void testStreamEquals() {
-  StreamController c;
-  c = new StreamController(sync: false);
-  Expect.equals(c.stream, c.stream);
-  c = new StreamController(sync: true);
-  Expect.equals(c.stream, c.stream);
-  c = new StreamController(sync: false, onListen: () {});
-  Expect.equals(c.stream, c.stream);
-  c = new StreamController(sync: true, onListen: () {});
-  Expect.equals(c.stream, c.stream);
-  c = new StreamController.broadcast(sync: false);
-  Expect.equals(c.stream, c.stream);
-  c = new StreamController.broadcast(sync: true);
-  Expect.equals(c.stream, c.stream);
-  c = new StreamController.broadcast(sync: false, onListen: () {});
-  Expect.equals(c.stream, c.stream);
-  c = new StreamController.broadcast(sync: true, onListen: () {});
-  Expect.equals(c.stream, c.stream);
-}
-
-void testCancelThrow() {
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  StreamController c = new StreamController(onCancel: () {
-    asyncEnd();
-    throw "ERROR";
-  });
-  c.add(1);
-  c.add(2);
-  c.add(3);
-  Future done = c.close();
-  StreamSubscription sub;
-  sub = c.stream.listen((v) {
-    Expect.equals(1, v);
-    Future f = sub.cancel();
-    f.catchError((e) {
-      // Must complete with error from onCancel.
-      Expect.equals("ERROR", e);
-      asyncEnd();
-    });
-  });
-  done.catchError(fail).whenComplete(asyncEnd); // Must complete without error.
-}
-
-void testCancelThrow2() {
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  StreamController c2 = new StreamController(onCancel: () {
-    asyncEnd();
-    throw "ERROR";
-  });
-  c2.add(1);
-  c2.add(2);
-  Future done2 = c2.close();
-  done2.catchError(fail).whenComplete(asyncEnd); // Should not get error;
-
-  StreamController c = new StreamController();
-  var sub;
-  sub = c.stream.listen((v) {
-    Expect.equals(1, v);
-    Future f = sub.cancel();
-    f.catchError((e) {
-      // Error from addStream stream's cancel must go only here.
-      asyncEnd();
-      Expect.equals("ERROR", e);
-    });
-  });
-  var addDone = c.addStream(c2.stream);
-  addDone.catchError(fail).whenComplete(asyncEnd); // Should not get error.
-  var done = c.done;
-  done.catchError(fail).whenComplete(asyncEnd); // Should not get error.
-}
-
-void testCancelThrow3() {
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  asyncStart();
-  StreamController c2 = new StreamController(onCancel: () {
-    asyncEnd();
-    throw "ERROR2";
-  });
-  c2.add(1);
-  c2.add(2);
-  var done2 = c2.close();
-  done2.catchError(fail).whenComplete(asyncEnd); // Should not get error;
-
-  StreamController c = new StreamController(onCancel: () {
-    asyncEnd();
-    throw "ERROR1";
-  });
-  var sub;
-  sub = c.stream.listen((v) {
-    Expect.equals(1, v);
-    Future f = sub.cancel();
-    f.catchError((e) {
-      // Only the last error ends up here.
-      Expect.equals("ERROR1", e);
-      asyncEnd();
-    });
-  });
-  var addDone = c.addStream(c2.stream);
-  addDone.catchError(fail).whenComplete(asyncEnd); // Error must not go here.
-  c.done.catchError(fail).whenComplete(asyncEnd); // Error must not go here.
-}
-
-void testBroadcastListenAfterClose() {
-  asyncStart();
-  StreamController c = new StreamController.broadcast();
-  var f = c.close();
-  f.then((_) {
-    // Listening after close is allowed. The listener gets a done event.
-    c.stream.listen(null, onDone: asyncEnd);
-  });
-}
-
-void testBroadcastListenAfterClosePaused() {
-  asyncStart();
-  StreamController c = new StreamController.broadcast();
-  var f = c.close();
-  f.then((_) {
-    // Listening after close is allowed. The listener gets a done event.
-    var sub = c.stream.listen(null, onDone: () {
-      Expect.fail("wrong done");
-    });
-    sub.pause();
-    sub.pause();
-    new Timer(MS * 100, () {
-      sub.asFuture().whenComplete(() {
-        Expect.fail("Bad complete");
-      });
-      sub.resume();
-      new Timer(MS * 100, () {
-        sub.onDone(asyncEnd);
-        sub.resume();
-      });
-    });
-  });
-}
-
-void testAsBroadcastListenAfterClose() {
-  asyncStart();
-  asyncStart();
-  StreamController c = new StreamController();
-  Stream s = c.stream.asBroadcastStream();
-  s.listen(null, onDone: asyncEnd);
-  var f = c.close();
-  f.then((_) {
-    // Listening after close is allowed. The listener gets a done event.
-    s.listen(null, onDone: asyncEnd);
-  });
-}
-
-void testAsBroadcastListenAfterClosePaused() {
-  asyncStart();
-  asyncStart();
-  StreamController c = new StreamController();
-  Stream s = c.stream.asBroadcastStream();
-  s.listen(null, onDone: asyncEnd);
-  var f = c.close();
-  f.then((_) {
-    // Listening after close is allowed. The listener gets a done event.
-    var sub = s.listen(null, onDone: () {
-      Expect.fail("wrong done");
-    });
-    sub.pause();
-    sub.pause();
-    new Timer(MS * 100, () {
-      sub.asFuture().whenComplete(() {
-        Expect.fail("Bad complete");
-      });
-      sub.resume();
-      new Timer(MS * 100, () {
-        sub.onDone(asyncEnd);
-        sub.resume();
-      });
-    });
-  });
-}
-
-void testEventInListen() {
-  asyncStart();
-  // Regression test for http://dartbug.com/19722
-  var c;
-  void send() {
-    c.add(1);
-  }
-
-  int i = 1;
-  c = new StreamController.broadcast(onListen: send, sync: true);
-  c.stream.listen((v) {
-    Expect.equals(i++, v);
-  }, onDone: asyncEnd);
-  c.add(2);
-  c.close();
-}
-
-void testSyncControllerNotReentrant() {
-  Stream emptyStream = (new StreamController.broadcast()..close()).stream;
-  asyncStart();
-  for (int listenerCount = 1; listenerCount <= 2; listenerCount++) {
-    StreamController c = new StreamController.broadcast(sync: true);
-    for (int i = 0; i < listenerCount; i++) {
-      asyncStart();
-      asyncStart();
-      c.stream.listen((v) {
-        Expect.equals(42, v);
-        Expect.throws(() {
-          c.add(37);
-        });
-        Expect.throws(() {
-          c.addError(37);
-        });
-        Expect.throws(() {
-          c.addStream(emptyStream);
-        });
-        Expect.throws(() {
-          c.close();
-        });
-        asyncEnd();
-      }, onError: (e, s) {
-        Expect.equals(87, e);
-        Expect.throws(() {
-          c.add(37);
-        });
-        Expect.throws(() {
-          c.addError(37);
-        });
-        Expect.throws(() {
-          c.addStream(emptyStream);
-        });
-        Expect.throws(() {
-          c.close();
-        });
-        asyncEnd();
-      });
-    }
-    c.add(42);
-    c.addError(87);
-  }
-  asyncEnd();
-}
-
-void testSettingCallbacks() {
-  const int initial = 0;
-  const int running = 1;
-  const int paused = 2;
-  const int canceled = 3;
-
-  var controller = new StreamController();
-  var stream = controller.stream;
-  var state = initial;
-
-  var onListen = () {
-    state = running;
-  };
-  var onPause = () {
-    state = paused;
-  };
-  var onResume = () {
-    state = running;
-  };
-  var onCancel = () {
-    state = canceled;
-  };
-
-  Expect.isNull(controller.onListen);
-  Expect.isNull(controller.onPause);
-  Expect.isNull(controller.onResume);
-  Expect.isNull(controller.onCancel);
-
-  controller
-    ..onListen = onListen
-    ..onPause = onPause
-    ..onResume = onResume
-    ..onCancel = onCancel;
-
-  Expect.equals(onListen, controller.onListen);
-  Expect.equals(onPause, controller.onPause);
-  Expect.equals(onResume, controller.onResume);
-  Expect.equals(onCancel, controller.onCancel);
-
-  Expect.equals(initial, state);
-  var sub = stream.listen(null);
-  Expect.equals(running, state);
-  sub.pause();
-  Expect.equals(paused, state);
-  Expect.isTrue(controller.isPaused);
-  sub.resume();
-  Expect.equals(running, state);
-  Expect.isFalse(controller.isPaused);
-
-  var onListen2 = () {
-    state = -running;
-  };
-  var onPause2 = () {
-    state = -paused;
-  };
-  var onResume2 = () {
-    state = -running;
-  };
-  var onCancel2 = () {
-    state = -canceled;
-  };
-  // Changing them later does make a difference.
-  controller
-    ..onListen = onListen2
-    ..onPause = onPause2
-    ..onResume = onResume2
-    ..onCancel = onCancel2;
-
-  Expect.equals(onListen2, controller.onListen);
-  Expect.equals(onPause2, controller.onPause);
-  Expect.equals(onResume2, controller.onResume);
-  Expect.equals(onCancel2, controller.onCancel);
-
-  Expect.equals(running, state);
-  sub.pause();
-  Expect.equals(-paused, state);
-  Expect.isTrue(controller.isPaused);
-  sub.resume();
-  Expect.equals(-running, state);
-  Expect.isFalse(controller.isPaused);
-  sub.cancel();
-  Expect.equals(-canceled, state);
-}
-
-void testSettingNullCallbacks() {
-  failCallback() => fail("Callback should not be called");
-  var controller = new StreamController(
-      onListen: failCallback,
-      onPause: failCallback,
-      onResume: failCallback,
-      onCancel: failCallback);
-
-  var stream = controller.stream;
-
-  Expect.isFalse(controller.hasListener);
-  Expect.isTrue(controller.isPaused);
-
-  Expect.isNotNull(controller.onListen);
-  controller.onListen = null;
-  Expect.isNull(controller.onListen);
-
-  var sub = stream.listen(null);
-
-  Expect.isTrue(controller.hasListener);
-  Expect.isFalse(controller.isPaused);
-
-  Expect.isNotNull(controller.onPause);
-  controller.onPause = null;
-  Expect.isNull(controller.onPause);
-
-  sub.pause();
-
-  Expect.isTrue(controller.hasListener);
-  Expect.isTrue(controller.isPaused);
-
-  Expect.isNotNull(controller.onResume);
-  controller.onResume = null;
-  Expect.isNull(controller.onResume);
-
-  sub.resume();
-
-  Expect.isTrue(controller.hasListener);
-  Expect.isFalse(controller.isPaused);
-
-  Expect.isNotNull(controller.onCancel);
-  controller.onCancel = null;
-  Expect.isNull(controller.onCancel);
-
-  sub.cancel();
-
-  Expect.isFalse(controller.hasListener);
-  Expect.isFalse(controller.isPaused);
-}
-
-void testBroadcastSettingCallbacks() {
-  const int initial = 0;
-  const int running = 1;
-  const int canceled = 2;
-
-  var controller = new StreamController.broadcast();
-  var stream = controller.stream;
-  var state = initial;
-
-  Expect.throws(() {
-    controller.onPause = () {};
-  }, (e) => e is UnsupportedError);
-  Expect.throws(() {
-    controller.onResume = () {};
-  }, (e) => e is UnsupportedError);
-
-  controller
-    ..onListen = () {
-      state = running;
-    }
-    ..onCancel = () {
-      state = canceled;
-    };
-
-  Expect.equals(initial, state);
-  var sub = stream.listen(null);
-  Expect.equals(running, state);
-  sub.cancel();
-  Expect.equals(canceled, state);
-
-  // Changing them later does make a difference.
-  controller
-    ..onListen = () {
-      state = -running;
-    }
-    ..onCancel = () {
-      state = -canceled;
-    };
-
-  var sub2 = stream.listen(null);
-  Expect.equals(-running, state);
-  sub2.cancel();
-  Expect.equals(-canceled, state);
-}
-
-void testBroadcastSettingNullCallbacks() {
-  failCallback() => fail("Callback should not be called");
-  var controller = new StreamController.broadcast(
-      onListen: failCallback, onCancel: failCallback);
-
-  var stream = controller.stream;
-
-  Expect.isFalse(controller.hasListener);
-
-  controller.onListen = null;
-
-  var sub = stream.listen(null);
-
-  Expect.isTrue(controller.hasListener);
-
-  controller.onCancel = null;
-
-  sub.cancel();
-
-  Expect.isFalse(controller.hasListener);
-}
-
-main() {
-  asyncStart();
-  testMultiController();
-  testSingleController();
-  testExtraMethods();
-  testClosed();
-  testCloseFuture();
-  testCloseFuture2();
-  testCloseFuture3();
-  testStreamEquals();
-  testCancelThrow();
-  testCancelThrow2();
-  testCancelThrow3();
-  testBroadcastListenAfterClose();
-  testBroadcastListenAfterClosePaused();
-  testAsBroadcastListenAfterClose();
-  testAsBroadcastListenAfterClosePaused();
-  testEventInListen();
-  testSyncControllerNotReentrant();
-  testSettingCallbacks();
-  testSettingNullCallbacks();
-  testBroadcastSettingCallbacks();
-  testBroadcastSettingNullCallbacks();
-  asyncEnd();
-}
diff --git a/tests/lib/async/stream_distinct_test.dart b/tests/lib/async/stream_distinct_test.dart
deleted file mode 100644
index d7ca53b..0000000
--- a/tests/lib/async/stream_distinct_test.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// 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.
-
-import 'dart:async';
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  asyncStart();
-  // Correct behavior.
-  for (var eq in [null, (a, b) => a == b]) {
-    checkStream(mkSingleStream, eq, "single");
-    checkBroadcastStream(mkBroadcastStream, eq, "broadcast");
-    checkBroadcastStream(
-        () => mkSingleStream().asBroadcastStream(), eq, "asBroadcast");
-  }
-
-  // Regression test. Multiple listens on the same broadcast distinct stream.
-  var stream = mkBroadcastStream().distinct();
-  expectStream(stream, [1, 2, 3, 2], "broadcast.distinct#1");
-  expectStream(stream, [1, 2, 3, 2], "broadcast.distinct#2");
-
-  // Doesn't ignore equality.
-  expectStream(
-      new Stream.fromIterable([1, 2, 1, 3, 3]).distinct((a, b) => false),
-      [1, 2, 1, 3, 3],
-      "kFalse");
-  expectStream(
-      new Stream.fromIterable([1, 2, 1, 3, 3]).distinct((a, b) => true),
-      [1],
-      "kTrue");
-  expectStream(
-      new Stream.fromIterable([1, 2, 1, 3, 3]).distinct((a, b) => a != b),
-      [1, 1],
-      "neq");
-  expectStream(
-      new Stream.fromIterable([1, 2, 1, 3, 3]).distinct((a, b) => 2 == b),
-      [1, 1, 3, 3],
-      "is2");
-  // Forwards errors as errors.
-  expectStream(
-      new Stream.fromIterable([1, "E1", 2, "E2", 2, 3])
-          .map((v) => (v is String) ? (throw v) : v) // Make strings errors.
-          .distinct()
-          .transform(reifyErrors),
-      [1, "[E1]", 2, "[E2]", 3],
-      "errors");
-  // Equality throwing acts like error.
-  expectStream(
-      new Stream.fromIterable([1, "E1", 1, 2, "E2", 3])
-          .distinct((a, b) => (b is String) ? (throw b) : (a == b))
-          .transform(reifyErrors),
-      [1, "[E1]", 2, "[E2]", 3],
-      "eq-throws");
-  // Operator== throwing acts like error.
-  expectStream(
-      new Stream.fromIterable([1, 1, 2, 2, 1, 3])
-          .map((v) => new T(v))
-          .distinct()
-          .transform(reifyErrors)
-          .map((v) => v is T ? v.value : "$v"),
-      [1, "[2]", "[2]", 3],
-      "==-throws");
-  asyncEnd();
-}
-
-checkStream(mkStream, eq, name) {
-  expectStream(mkStream().distinct(eq), [1, 2, 3, 2], "$name.distinct");
-  expectStream(mkStream().expand((e) => [e, e]).distinct(eq), [1, 2, 3, 2],
-      "$name.expand.distinct");
-  expectStream(mkStream().where((x) => x != 3).distinct(eq), [1, 2],
-      "$name.where.distinct");
-}
-
-checkBroadcastStream(mkStream, eq, name) {
-  var stream = mkStream();
-  // Run all the tests, multiple times each.
-  checkStream(() => stream, eq, "$name#1");
-  checkStream(() => stream, eq, "$name#2");
-}
-
-mkSingleStream() async* {
-  yield 1;
-  yield 2;
-  yield 3;
-  yield 2;
-}
-
-mkBroadcastStream() {
-  var c = new StreamController.broadcast();
-  c.onListen = () {
-    c.addStream(mkSingleStream()).whenComplete(c.close);
-  };
-  return c.stream;
-}
-
-expectStream(stream, list, [name]) {
-  asyncStart();
-  return stream.toList().then((events) {
-    Expect.listEquals(list, events, name);
-    asyncEnd();
-  });
-}
-
-// Class where operator== throws.
-class T {
-  final int value;
-  T(this.value);
-  int get hashCode => value.hashCode;
-  bool operator ==(Object other) =>
-      other is T && ((other.value == 2) ? throw 2 : (value == other.value));
-}
-
-final reifyErrors =
-    new StreamTransformer.fromHandlers(handleError: (e, s, sink) {
-  sink.add("[$e]");
-});
diff --git a/tests/lib/async/stream_empty_test.dart b/tests/lib/async/stream_empty_test.dart
deleted file mode 100644
index 75bfa5d..0000000
--- a/tests/lib/async/stream_empty_test.dart
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test empty stream.
-import "package:expect/expect.dart";
-import "dart:async";
-import 'package:async_helper/async_helper.dart';
-
-main() {
-  asyncStart();
-  runTest().whenComplete(asyncEnd);
-}
-
-Future runTest() async {
-  unreachable([a, b]) {
-    throw "UNREACHABLE";
-  }
-
-  int tick = 0;
-  ticker() {
-    tick++;
-  }
-
-  asyncStart();
-
-  Stream<int> s = const Stream<int>.empty(); // Is const constructor.
-  Expect.isFalse(s is Stream<String>); // Respects type parameter.
-  StreamSubscription<int> sub =
-      s.listen(unreachable, onError: unreachable, onDone: ticker);
-  Expect.isFalse(sub is StreamSubscription<String>); // Type parameter in sub.
-
-  // Doesn't do callback in response to listen.
-  Expect.equals(tick, 0);
-  await flushMicrotasks();
-  // Completes eventually.
-  Expect.equals(tick, 1);
-
-  // It's a broadcast stream - can listen twice.
-  Expect.isTrue(s.isBroadcast);
-  StreamSubscription<int> sub2 =
-      s.listen(unreachable, onError: unreachable, onDone: unreachable);
-  // respects pause.
-  sub2.pause();
-  await flushMicrotasks();
-  // respects cancel.
-  sub2.cancel();
-  await flushMicrotasks();
-  Expect.equals(tick, 1);
-  // Still not complete.
-
-  StreamSubscription<int> sub3 =
-      s.listen(unreachable, onError: unreachable, onDone: ticker);
-  // respects pause.
-  sub3.pause();
-  Expect.equals(tick, 1);
-  await flushMicrotasks();
-  // Doesn't complete while paused.
-  Expect.equals(tick, 1);
-  sub3.resume();
-  await flushMicrotasks();
-  // Now completed.
-  Expect.equals(tick, 2);
-
-  asyncEnd();
-}
-
-Future flushMicrotasks() => new Future.delayed(Duration.ZERO);
diff --git a/tests/lib/async/stream_event_transformed_test.dart b/tests/lib/async/stream_event_transformed_test.dart
deleted file mode 100644
index 6e9a380..0000000
--- a/tests/lib/async/stream_event_transformed_test.dart
+++ /dev/null
@@ -1,345 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-import 'event_helper.dart';
-
-class DecrementingTransformerSink implements EventSink {
-  final outSink;
-  DecrementingTransformerSink(this.outSink);
-
-  void add(int i) => outSink.add(i - 1);
-  void addError(int e, [st]) => outSink.addError(e - 1, st);
-  void close() => outSink.close();
-}
-
-class FutureWaitingTransformerSink implements EventSink {
-  final outSink;
-  final closeFuture;
-  FutureWaitingTransformerSink(this.outSink, this.closeFuture);
-
-  void add(Future future) {
-    future.then(outSink.add);
-  }
-
-  void addError(Future e, [st]) {
-    e.then((val) {
-      outSink.addError(val, st);
-    });
-  }
-
-  void close() {
-    closeFuture.whenComplete(outSink.close);
-  }
-}
-
-class ZoneTransformerSink implements EventSink {
-  final outSink;
-  ZoneTransformerSink(this.outSink);
-
-  void add(_) {
-    outSink.add(Zone.current);
-  }
-
-  void addError(_, [st]) {
-    outSink.add(Zone.current);
-  }
-
-  void close() {
-    outSink.add(Zone.current);
-    outSink.close();
-  }
-}
-
-class TypeChangingSink implements EventSink<int> {
-  final EventSink<String> outSink;
-  TypeChangingSink(this.outSink);
-
-  void add(int data) {
-    outSink.add(data.toString());
-  }
-
-  void addError(error, [st]) {
-    outSink.addError(error, st);
-  }
-
-  void close() {
-    outSink.close();
-  }
-}
-
-class SinkTransformer<S, T> implements StreamTransformer<S, T> {
-  final Function sinkMapper;
-  SinkTransformer(this.sinkMapper);
-
-  Stream<T> bind(Stream<S> stream) {
-    return new Stream<T>.eventTransformed(stream, sinkMapper);
-  }
-}
-
-get currentStackTrace {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-// In most cases the callback will be 'asyncEnd'. Errors are reported
-// asynchronously. We want to give them time to surface before reporting
-// asynchronous tests as done.
-void delayCycles(callback, int nbCycles) {
-  if (nbCycles == 0) {
-    callback();
-    return;
-  }
-  Timer.run(() {
-    delayCycles(callback, nbCycles - 1);
-  });
-}
-
-main() {
-  {
-    // Simple test: use the SinkTransformer (using the Stream.eventTransformed
-    // constructor) to transform a sequence of numbers. This is basically
-    // similar to a map.
-    asyncStart();
-    new Stream.fromIterable([1, 2, 3])
-        .transform(new SinkTransformer(
-            (sink) => new DecrementingTransformerSink(sink)))
-        .toList()
-        .then((list) {
-      Expect.listEquals([0, 1, 2], list);
-      asyncEnd();
-    });
-  }
-
-  {
-    // Similar test as above: but this time also transform errors. Also
-    // checks that the stack trace is correctly passed through.
-    asyncStart();
-    var controller;
-    var events = [];
-    var stackTrace = currentStackTrace;
-    controller = new StreamController(onListen: () {
-      controller.add(499);
-      controller.addError(42, stackTrace);
-      controller.close();
-    });
-    controller.stream
-        .transform(new SinkTransformer(
-            (sink) => new DecrementingTransformerSink(sink)))
-        .listen((data) {
-      events.add(data);
-    }, onError: (e, st) {
-      events.add(e);
-      events.add(st);
-    }, onDone: () {
-      Expect.listEquals([498, 41, stackTrace], events);
-      asyncEnd();
-    });
-  }
-
-  {
-    // Test that the output sink of the transformer can be used asynchronously.
-    asyncStart();
-    var controller;
-    var events = [];
-    var stackTrace = currentStackTrace;
-    var completer1 = new Completer();
-    var completer2 = new Completer();
-    var completer3 = new Completer();
-    var closeCompleter = new Completer();
-    controller = new StreamController(onListen: () {
-      controller.add(completer1.future);
-      controller.addError(completer2.future, stackTrace);
-      controller.add(completer3.future);
-      controller.close();
-    });
-    controller.stream
-        .transform(new SinkTransformer((sink) =>
-            new FutureWaitingTransformerSink(sink, closeCompleter.future)))
-        .listen((data) {
-      events.add(data);
-    }, onError: (e, st) {
-      events.add(e);
-      events.add(st);
-    }, onDone: () {
-      Expect.listEquals(["error2", stackTrace, "future3", "future1"], events);
-      asyncEnd();
-    });
-    Timer.run(() {
-      completer2.complete("error2");
-      Timer.run(() {
-        completer3.complete("future3");
-        Timer.run(() {
-          completer1.complete("future1");
-          scheduleMicrotask(closeCompleter.complete);
-        });
-      });
-    });
-  }
-
-  {
-    // Test that the output sink of the transformer can be used asynchronously
-    // and that events are paused if necessary.
-    asyncStart();
-    var controller;
-    var events = [];
-    var stackTrace = currentStackTrace;
-    var completer1 = new Completer.sync();
-    var completer2 = new Completer.sync();
-    var completer3 = new Completer.sync();
-    var closeCompleter = new Completer();
-    controller = new StreamController(onListen: () {
-      controller.add(completer1.future);
-      controller.addError(completer2.future, stackTrace);
-      controller.add(completer3.future);
-      controller.close();
-    });
-    var subscription;
-    completer1.future.then((_) {
-      Expect.isTrue(subscription.isPaused);
-    });
-    completer2.future.then((_) {
-      Expect.isTrue(subscription.isPaused);
-    });
-    completer3.future.then((_) {
-      Expect.isTrue(subscription.isPaused);
-    });
-    subscription = controller.stream
-        .transform(new SinkTransformer((sink) =>
-            new FutureWaitingTransformerSink(sink, closeCompleter.future)))
-        .listen((data) {
-      Expect.isFalse(subscription.isPaused);
-      events.add(data);
-    }, onError: (e, st) {
-      events.add(e);
-      events.add(st);
-    }, onDone: () {
-      Expect.listEquals(["error2", stackTrace, "future3", "future1"], events);
-      asyncEnd();
-    });
-    Timer.run(() {
-      subscription.pause();
-      completer2.complete("error2");
-      Timer.run(() {
-        subscription.resume();
-        Timer.run(() {
-          Expect.listEquals(["error2", stackTrace], events);
-          subscription.pause();
-          completer3.complete("future3");
-          Timer.run(() {
-            subscription.resume();
-            Timer.run(() {
-              Expect.listEquals(["error2", stackTrace, "future3"], events);
-              subscription.pause();
-              completer1.complete("future1");
-              subscription.resume();
-              scheduleMicrotask(closeCompleter.complete);
-            });
-          });
-        });
-      });
-    });
-  }
-
-  {
-    // Test that the output sink of the transformer reports errors when the
-    // stream is already closed.
-    asyncStart();
-    var controller;
-    var events = [];
-    var stackTrace = currentStackTrace;
-    var completer1 = new Completer();
-    var completer2 = new Completer();
-    var completer3 = new Completer();
-    var closeCompleter = new Completer();
-    controller = new StreamController(onListen: () {
-      controller.add(completer1.future);
-      controller.addError(completer2.future, stackTrace);
-      controller.add(completer3.future);
-      controller.close();
-    });
-
-    bool streamIsDone = false;
-    int errorCount = 0;
-    runZoned(() {
-      controller.stream
-          .transform(new SinkTransformer((sink) =>
-              new FutureWaitingTransformerSink(sink, closeCompleter.future)))
-          .listen((data) {
-        events.add(data);
-      }, onError: (e, st) {
-        events.add(e);
-        events.add(st);
-      }, onDone: () {
-        Expect.listEquals([], events);
-        streamIsDone = true;
-      });
-    }, onError: (e) {
-      Expect.isTrue(e is StateError);
-      errorCount++;
-    });
-    closeCompleter.complete();
-    Timer.run(() {
-      Expect.isTrue(streamIsDone);
-      // Each of the delayed completions should trigger an unhandled error
-      // in the zone the stream was listened to.
-      Timer.run(() {
-        completer1.complete(499);
-      });
-      Timer.run(() {
-        completer2.complete(42);
-      });
-      Timer.run(() {
-        completer3.complete(99);
-      });
-      delayCycles(() {
-        Expect.equals(3, errorCount);
-        asyncEnd();
-      }, 5);
-    });
-  }
-
-  {
-    // Test that the transformer is executed in the zone it was listened to.
-    asyncStart();
-    var stackTrace = currentStackTrace;
-    var events = [];
-    var controller;
-    controller = new StreamController(onListen: () {
-      // Events are added outside the zone.
-      controller.add(499);
-      controller.addError(42, stackTrace);
-      controller.close();
-    });
-    Zone zone = Zone.current.fork();
-    var stream = controller.stream.transform(
-        new SinkTransformer((sink) => new ZoneTransformerSink(sink)));
-    zone.run(() {
-      stream.listen((data) {
-        events.add(data);
-      }, onDone: () {
-        Expect.listEquals([zone, zone, zone], events);
-        delayCycles(asyncEnd, 3);
-      });
-    });
-  }
-
-  {
-    // Just make sure that the generic types are correct everywhere.
-    asyncStart();
-    new Stream.fromIterable([1, 2, 3])
-        .transform(new SinkTransformer<int, String>(
-            (sink) => new TypeChangingSink(sink)))
-        .toList()
-        .then((list) {
-      Expect.listEquals(["1", "2", "3"], list);
-      asyncEnd();
-    });
-  }
-}
diff --git a/tests/lib/async/stream_first_where_test.dart b/tests/lib/async/stream_first_where_test.dart
deleted file mode 100644
index f0c0623..0000000
--- a/tests/lib/async/stream_first_where_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2011, 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 stream_controller_async_test;
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-import 'event_helper.dart';
-import 'stream_state_helper.dart';
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  Events sentEvents = new Events()..close();
-
-  // Make sure that firstWhere allows to return instances of types that are
-  // different than the generic type of the stream.
-  test("firstWhere with super class", () {
-    StreamController c = new StreamController<B>();
-    Future f = c.stream.firstWhere((x) => false, defaultValue: () => const A());
-    f.then(expectAsync((v) {
-      Expect.equals(const A(), v);
-    }));
-    sentEvents.replay(c);
-  });
-}
diff --git a/tests/lib/async/stream_from_futures_test.dart b/tests/lib/async/stream_from_futures_test.dart
deleted file mode 100644
index 2313c9d..0000000
--- a/tests/lib/async/stream_from_futures_test.dart
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright (c) 2013, 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:async";
-import "package:expect/expect.dart";
-import 'package:async_helper/async_helper.dart';
-
-main() {
-  asyncStart();
-
-  testValues();
-  testErrors();
-  testMixed();
-  testOrdering();
-  testEmpty();
-  testPrecompleted();
-
-  asyncEnd();
-}
-
-void testValues() {
-  asyncStart();
-  var cs = new List.generate(3, (_) => new Completer());
-  var stream = new Stream.fromFutures(cs.map((x) => x.future));
-  var result = stream.toList();
-
-  result.then((list) {
-    Expect.listEquals([1, 2, 3], list);
-    asyncEnd();
-  });
-
-  cs[1].complete(1);
-  cs[2].complete(2);
-  cs[0].complete(3);
-}
-
-void testErrors() {
-  asyncStart();
-  var cs = new List.generate(3, (_) => new Completer());
-  var stream = new Stream.fromFutures(cs.map((x) => x.future));
-
-  int counter = 0;
-  stream.listen((_) {
-    Expect.fail("unexpected value");
-  }, onError: (e) {
-    Expect.equals(++counter, e);
-  }, onDone: () {
-    Expect.equals(3, counter);
-    asyncEnd();
-  });
-
-  cs[1].completeError(1);
-  cs[2].completeError(2);
-  cs[0].completeError(3);
-}
-
-void testMixed() {
-  asyncStart();
-  var cs = new List.generate(3, (_) => new Completer());
-  var stream = new Stream.fromFutures(cs.map((x) => x.future));
-
-  int counter = 0;
-  stream.listen((v) {
-    Expect.isTrue(counter == 0 || counter == 2);
-    Expect.equals(++counter, v);
-  }, onError: (e) {
-    Expect.equals(++counter, 2);
-    Expect.equals(2, e);
-  }, onDone: () {
-    Expect.equals(3, counter);
-    asyncEnd();
-  });
-
-  cs[1].complete(1);
-  cs[2].completeError(2);
-  cs[0].complete(3);
-}
-
-void testOrdering() {
-  // The output is in completion order, not affected by the input future order.
-  test(n1, n2, n3) {
-    asyncStart();
-    var cs = new List.generate(3, (_) => new Completer());
-    var stream = new Stream.fromFutures(cs.map((x) => x.future));
-    var result = stream.toList();
-
-    result.then((list) {
-      Expect.listEquals([1, 2, 3], list);
-      asyncEnd();
-    });
-
-    cs[n1].complete(1);
-    cs[n2].complete(2);
-    cs[n3].complete(3);
-  }
-
-  test(0, 1, 2);
-  test(0, 2, 1);
-  test(1, 0, 2);
-  test(1, 2, 0);
-  test(2, 0, 1);
-  test(2, 1, 0);
-}
-
-void testEmpty() {
-  asyncStart();
-  var stream = new Stream.fromFutures([]);
-
-  stream.listen((_) {
-    Expect.fail("unexpected value");
-  }, onError: (e) {
-    Expect.fail("unexpected error");
-  }, onDone: () {
-    asyncEnd();
-  });
-}
-
-void testPrecompleted() {
-  asyncStart();
-  var stream = new Stream.fromFutures(
-      new Iterable.generate(3, (v) => new Future.value(v + 1)));
-  var expected = new Set.from([1, 2, 3]);
-  stream.listen((v) {
-    Expect.isTrue(expected.contains(v));
-    expected.remove(v);
-  }, onDone: () {
-    Expect.isTrue(expected.isEmpty);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/stream_from_iterable_test.dart b/tests/lib/async/stream_from_iterable_test.dart
deleted file mode 100644
index 7a7113a2..0000000
--- a/tests/lib/async/stream_from_iterable_test.dart
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test merging streams.
-library dart.test.stream_from_iterable;
-
-import "package:expect/expect.dart";
-import "dart:async";
-import 'package:unittest/unittest.dart';
-import 'event_helper.dart';
-
-class IterableTest<T> {
-  static int counter = 0;
-  Iterable<T> iterable;
-  IterableTest(this.iterable);
-  void run() {
-    test("stream from iterable ${counter++}", () {
-      Events expected = new Events.fromIterable(iterable);
-      Stream<T> stream = new Stream<T>.fromIterable(iterable);
-      Events actual = new Events.capture(stream);
-      actual.onDone(expectAsync(() {
-        Expect.listEquals(expected.events, actual.events);
-      }));
-    });
-  }
-}
-
-main() {
-  new IterableTest([]).run();
-  new IterableTest([1]).run();
-  new IterableTest([1, "two", true, null]).run();
-  new IterableTest<int>([1, 2, 3, 4]).run();
-  new IterableTest<String>(["one", "two", "three", "four"]).run();
-  new IterableTest<int>(new Iterable<int>.generate(1000, (i) => i)).run();
-  new IterableTest<String>(
-      new Iterable<int>.generate(1000, (i) => i).map((i) => "$i")).run();
-
-  Iterable<int> iter = new Iterable.generate(25, (i) => i * 2);
-
-  test("iterable-toList", () {
-    new Stream.fromIterable(iter).toList().then(expectAsync((actual) {
-      List expected = iter.toList();
-      Expect.equals(25, expected.length);
-      Expect.listEquals(expected, actual);
-    }));
-  });
-
-  test("iterable-mapped-toList", () {
-    new Stream.fromIterable(iter)
-        .map((i) => i * 3)
-        .toList()
-        .then(expectAsync((actual) {
-      List expected = iter.map((i) => i * 3).toList();
-      Expect.listEquals(expected, actual);
-    }));
-  });
-
-  test("iterable-paused", () {
-    Stream stream = new Stream.fromIterable(iter);
-    Events actual = new Events();
-    StreamSubscription subscription;
-    subscription = stream.listen((int value) {
-      actual.add(value);
-      // Do a 10 ms pause during the playback of the iterable.
-      Duration duration = const Duration(milliseconds: 10);
-      if (value == 20) {
-        subscription.pause(new Future.delayed(duration, () {}));
-      }
-    }, onDone: expectAsync(() {
-      actual.close();
-      Events expected = new Events.fromIterable(iter);
-      Expect.listEquals(expected.events, actual.events);
-    }));
-  });
-
-  test("iterable-single-subscription", () {
-    Stream stream = new Stream.fromIterable(iter);
-    stream.listen((x) {});
-    Expect.throws(() {
-      stream.listen((x) {});
-    }, (e) => e is StateError);
-  });
-
-  test("regression-14332", () {
-    // Regression test for http://dartbug.com/14332.
-    // This should succeede.
-    var from = new Stream.fromIterable([1, 2, 3, 4, 5]);
-
-    var c = new StreamController();
-    var sink = c.sink;
-
-    var done = expectAsync(() {}, count: 2);
-
-    // if this goes first, test failed (hanged). Swapping addStream and toList
-    // made failure go away.
-    sink.addStream(from).then((_) {
-      c.close();
-      done();
-    });
-
-    c.stream.toList().then((x) {
-      Expect.listEquals([1, 2, 3, 4, 5], x);
-      done();
-    });
-  });
-
-  test("regression-14334-a", () {
-    var from = new Stream.fromIterable([1, 2, 3, 4, 5]);
-
-    // odd numbers as data events, even numbers as error events
-    from = from.map((x) => x.isOdd ? x : throw x);
-
-    var c = new StreamController();
-    var sink = c.sink;
-
-    var done = expectAsync(() {}, count: 2);
-
-    var data = [], errors = [];
-    c.stream.listen(data.add, onError: errors.add, onDone: () {
-      Expect.listEquals([1], data);
-      Expect.listEquals([2], errors);
-      done();
-    });
-    sink.addStream(from).then((_) {
-      c.close();
-      done();
-    });
-  });
-
-  test("regression-14334-b", () {
-    var from = new Stream.fromIterable([1, 2, 3, 4, 5]);
-
-    // odd numbers as data events, even numbers as error events
-    from = from.map((x) => x.isOdd ? x : throw x);
-
-    var c = new StreamController();
-
-    var done = expectAsync(() {}, count: 2);
-
-    var data = [], errors = [];
-    c.stream.listen(data.add, onError: errors.add, onDone: () {
-      Expect.listEquals([1, 3, 5], data);
-      Expect.listEquals([2, 4], errors);
-      done();
-    });
-    c.addStream(from, cancelOnError: false).then((_) {
-      c.close();
-      done();
-    });
-  });
-}
diff --git a/tests/lib/async/stream_iterator_double_cancel_test.dart b/tests/lib/async/stream_iterator_double_cancel_test.dart
deleted file mode 100644
index d648e0d..0000000
--- a/tests/lib/async/stream_iterator_double_cancel_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-Stream timedStream(int n) {
-  int i = 0;
-  StreamController controller;
-  tick() {
-    if (i >= n) {
-      controller.close();
-      return;
-    }
-    controller.add(i);
-    i++;
-    new Future.delayed(new Duration(milliseconds: 0), tick);
-  }
-
-  controller = new StreamController(onListen: tick);
-  return controller.stream;
-}
-
-void main() {
-  asyncStart();
-  StreamIterator iterator = new StreamIterator(timedStream(10));
-  helper(more) {
-    if (!more) {
-      // Canceling the already closed iterator should not lead to a crash.
-      iterator.cancel();
-      asyncEnd();
-    } else {
-      iterator.moveNext().then(helper);
-    }
-  }
-
-  iterator.moveNext().then(helper);
-}
diff --git a/tests/lib/async/stream_iterator_test.dart b/tests/lib/async/stream_iterator_test.dart
deleted file mode 100644
index 5a35d8d..0000000
--- a/tests/lib/async/stream_iterator_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2013, 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:async";
-import "package:unittest/unittest.dart";
-
-main() {
-  test("stream iterator basic", () async {
-    var stream = createStream();
-    StreamIterator iterator = new StreamIterator(stream);
-    expect(iterator.current, isNull);
-    expect(await iterator.moveNext(), isTrue);
-    expect(iterator.current, 42);
-    expect(await iterator.moveNext(), isTrue);
-    expect(iterator.current, 37);
-    expect(await iterator.moveNext(), isFalse);
-    expect(iterator.current, isNull);
-    expect(await iterator.moveNext(), isFalse);
-  });
-
-  test("stream iterator prefilled", () async {
-    Stream stream = createStream();
-    StreamIterator iterator = new StreamIterator(stream);
-    await new Future.delayed(Duration.ZERO);
-    expect(iterator.current, isNull);
-    expect(await iterator.moveNext(), isTrue);
-    expect(iterator.current, 42);
-    expect(await iterator.moveNext(), isTrue);
-    expect(iterator.current, 37);
-    expect(await iterator.moveNext(), isFalse);
-    expect(iterator.current, isNull);
-    expect(await iterator.moveNext(), isFalse);
-  });
-
-  test("stream iterator error", () async {
-    Stream stream = createErrorStream();
-    StreamIterator iterator = new StreamIterator(stream);
-    expect(await iterator.moveNext(), isTrue);
-    expect(iterator.current, 42);
-    var hasNext = iterator.moveNext();
-    expect(hasNext, throwsA("BAD")); // This is an async expectation,
-    await hasNext.catchError((_) {}); // so we have to wait for the future too.
-    expect(iterator.current, isNull);
-    expect(await iterator.moveNext(), isFalse);
-    expect(iterator.current, isNull);
-  });
-
-  test("stream iterator current/moveNext during move", () async {
-    Stream stream = createStream();
-    StreamIterator iterator = new StreamIterator(stream);
-    var hasNext = iterator.moveNext();
-    expect(iterator.moveNext, throwsA(isStateError));
-    expect(await hasNext, isTrue);
-    expect(iterator.current, 42);
-    iterator.cancel();
-  });
-
-  test("stream iterator error during cancel", () async {
-    Stream stream = createCancelErrorStream();
-    StreamIterator iterator = new StreamIterator(stream);
-    for (int i = 0; i < 10; i++) {
-      expect(await iterator.moveNext(), isTrue);
-      expect(iterator.current, i);
-    }
-    var hasNext = iterator.moveNext(); // active moveNext will be completed.
-    var cancel = iterator.cancel();
-    expect(cancel, throwsA("BAD"));
-    expect(await hasNext, isFalse);
-    expect(await iterator.moveNext(), isFalse);
-  });
-}
-
-Stream createStream() async* {
-  yield 42;
-  yield 37;
-}
-
-Stream createErrorStream() async* {
-  yield 42;
-  // Emit an error without stopping the generator.
-  yield* (new Future.error("BAD").asStream());
-  yield 37;
-}
-
-/// Create a stream that throws when cancelled.
-Stream createCancelErrorStream() async* {
-  int i = 0;
-  try {
-    while (true) yield i++;
-  } finally {
-    throw "BAD";
-  }
-}
diff --git a/tests/lib/async/stream_join_test.dart b/tests/lib/async/stream_join_test.dart
deleted file mode 100644
index cd03827..0000000
--- a/tests/lib/async/stream_join_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the basic StreamController and StreamController.singleSubscription.
-library stream_join_test;
-
-import 'dart:async';
-import 'event_helper.dart';
-import 'package:unittest/unittest.dart';
-import "package:expect/expect.dart";
-
-main() {
-  test("join-empty", () {
-    StreamController c = new StreamController();
-    c.stream.join("X").then(expectAsync((String s) => expect(s, equals(""))));
-    c.close();
-  });
-
-  test("join-single", () {
-    StreamController c = new StreamController();
-    c.stream
-        .join("X")
-        .then(expectAsync((String s) => expect(s, equals("foo"))));
-    c.add("foo");
-    c.close();
-  });
-
-  test("join-three", () {
-    StreamController c = new StreamController();
-    c.stream
-        .join("X")
-        .then(expectAsync((String s) => expect(s, equals("fooXbarXbaz"))));
-    c.add("foo");
-    c.add("bar");
-    c.add("baz");
-    c.close();
-  });
-
-  test("join-three-non-string", () {
-    StreamController c = new StreamController();
-    c.stream
-        .join("X")
-        .then(expectAsync((String s) => expect(s, equals("fooXbarXbaz"))));
-    c.add(new Foo("foo"));
-    c.add(new Foo("bar"));
-    c.add(new Foo("baz"));
-    c.close();
-  });
-
-  test("join-error", () {
-    StreamController c = new StreamController();
-    c.stream
-        .join("X")
-        .catchError(expectAsync((String s) => expect(s, equals("BAD!"))));
-    c.add(new Foo("foo"));
-    c.add(new Foo("bar"));
-    c.add(new Bad());
-    c.add(new Foo("baz"));
-    c.close();
-  });
-}
-
-class Foo {
-  String value;
-  Foo(this.value);
-  String toString() => value;
-}
-
-class Bad {
-  Bad();
-  String toString() => throw "BAD!";
-}
diff --git a/tests/lib/async/stream_last_where_test.dart b/tests/lib/async/stream_last_where_test.dart
deleted file mode 100644
index 2a6d3de..0000000
--- a/tests/lib/async/stream_last_where_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2011, 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 stream_controller_async_test;
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-import 'event_helper.dart';
-import 'stream_state_helper.dart';
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-main() {
-  Events sentEvents = new Events()..close();
-
-  // Make sure that lastWhere allows to return instances of types that are
-  // different than the generic type of the stream.
-  test("lastWhere with super class", () {
-    StreamController c = new StreamController<B>();
-    Future f = c.stream.lastWhere((x) => false, defaultValue: () => const A());
-    f.then(expectAsync((v) {
-      Expect.equals(const A(), v);
-    }));
-    sentEvents.replay(c);
-  });
-}
diff --git a/tests/lib/async/stream_listen_zone_test.dart b/tests/lib/async/stream_listen_zone_test.dart
deleted file mode 100644
index 86c0171..0000000
--- a/tests/lib/async/stream_listen_zone_test.dart
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright (c) 2013, 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 stream_listen_zeno_test;
-
-import "dart:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-main() {
-  asyncStart();
-  var controller;
-  for (bool overrideDone in [false, true]) {
-    for (bool sync in [false, true]) {
-      var mode = "${sync ? "-sync" : ""}${overrideDone ? "-od": ""}";
-      controller = new StreamController(sync: sync);
-      testStream("SC$mode", controller, controller.stream, overrideDone);
-      controller = new StreamController.broadcast(sync: sync);
-      testStream("BSC$mode", controller, controller.stream, overrideDone);
-      controller = new StreamController(sync: sync);
-      testStream("SCAB$mode", controller, controller.stream.asBroadcastStream(),
-          overrideDone, 3);
-      controller = new StreamController(sync: sync);
-      testStream("SCMap$mode", controller, controller.stream.map((x) => x),
-          overrideDone, 3);
-    }
-  }
-  asyncEnd();
-}
-
-void testStream(
-    String name, StreamController controller, Stream stream, bool overrideDone,
-    [int registerExpect = 0]) {
-  asyncStart();
-  StreamSubscription sub;
-  Zone zone;
-  int registerCount = 0;
-  int callbackBits = 0;
-  int stepCount = 0;
-  Function step;
-  void nextStep() {
-    Zone.ROOT.scheduleMicrotask(step);
-  }
-
-  runZoned(() {
-    zone = Zone.current;
-    sub = stream.listen((v) {
-      Expect.identical(zone, Zone.current, name);
-      Expect.equals(42, v, name);
-      callbackBits |= 1;
-      nextStep();
-    }, onError: (e, s) {
-      Expect.identical(zone, Zone.current, name);
-      Expect.equals("ERROR", e, name);
-      callbackBits |= 2;
-      nextStep();
-    }, onDone: () {
-      Expect.identical(zone, Zone.current, name);
-      if (overrideDone) throw "RUNNING WRONG ONDONE";
-      callbackBits |= 4;
-      nextStep();
-    });
-    registerExpect += 3;
-    Expect.equals(registerExpect, registerCount, name);
-  },
-      zoneSpecification: new ZoneSpecification(
-          registerCallback: <R>(self, p, z, R callback()) {
-        Expect.identical(zone, self, name);
-        registerCount++;
-        return () {
-          Expect.identical(zone, Zone.current, name);
-          return callback();
-        };
-      }, registerUnaryCallback: <R, T>(self, p, z, R callback(T a)) {
-        Expect.identical(zone, self, name);
-        registerCount++;
-        return (a) {
-          Expect.identical(zone, Zone.current, name);
-          return callback(a);
-        };
-      }, registerBinaryCallback:
-              <R, T1, T2>(self, package, z, R callback(T1 a, T2 b)) {
-        Expect.identical(zone, self, name);
-        registerCount++;
-        return (a, b) {
-          Expect.identical(zone, Zone.current, name);
-          return callback(a, b);
-        };
-      }));
-
-  int expectedBits = 0;
-  step = () {
-    var stepName = "$name-$stepCount";
-    Expect.identical(Zone.ROOT, Zone.current, stepName);
-    Expect.equals(expectedBits, callbackBits, stepName);
-    switch (stepCount++) {
-      case 0:
-        expectedBits |= 1;
-        controller.add(42);
-        break;
-      case 1:
-        expectedBits |= 2;
-        controller.addError("ERROR", null);
-        break;
-      case 2:
-        Expect.equals(registerExpect, registerCount, stepName);
-        sub.onData((v) {
-          Expect.identical(zone, Zone.current, stepName);
-          Expect.equals(37, v);
-          callbackBits |= 8;
-          nextStep();
-        });
-        Expect.equals(++registerExpect, registerCount, stepName);
-        expectedBits |= 8;
-        controller.add(37);
-        break;
-      case 3:
-        Expect.equals(registerExpect, registerCount, stepName);
-        sub.onError((e, s) {
-          Expect.identical(zone, Zone.current);
-          Expect.equals("BAD", e);
-          callbackBits |= 16;
-          nextStep();
-        });
-        Expect.equals(++registerExpect, registerCount, stepName);
-        expectedBits |= 16;
-        controller.addError("BAD", null);
-        break;
-      case 4:
-        Expect.equals(registerExpect, registerCount, stepName);
-        if (overrideDone) {
-          sub.onDone(() {
-            Expect.identical(zone, Zone.current);
-            callbackBits |= 32;
-            nextStep();
-          });
-          registerExpect++;
-          expectedBits |= 32;
-        } else {
-          expectedBits |= 4;
-        }
-        Expect.equals(registerExpect, registerCount, stepName);
-        controller.close();
-        break;
-      case 5:
-        asyncEnd();
-    }
-  };
-  step();
-}
diff --git a/tests/lib/async/stream_periodic2_test.dart b/tests/lib/async/stream_periodic2_test.dart
deleted file mode 100644
index 100261d..0000000
--- a/tests/lib/async/stream_periodic2_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test merging streams.
-library dart.test.stream_from_iterable;
-
-import "dart:async";
-import 'package:unittest/unittest.dart';
-
-main() {
-  test("stream-periodic2", () {
-    Stream stream =
-        new Stream.periodic(const Duration(milliseconds: 1), (x) => x);
-    int receivedCount = 0;
-    var subscription;
-    subscription = stream.listen(expectAsync((data) {
-      expect(data, receivedCount);
-      receivedCount++;
-      if (receivedCount == 5) subscription.cancel();
-    }, count: 5));
-  });
-}
diff --git a/tests/lib/async/stream_periodic3_test.dart b/tests/lib/async/stream_periodic3_test.dart
deleted file mode 100644
index b94e52c..0000000
--- a/tests/lib/async/stream_periodic3_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test merging streams.
-library dart.test.stream_from_iterable;
-
-import "dart:async";
-import 'package:unittest/unittest.dart';
-
-// The stopwatch is more precise than the Timer.
-// Some browsers (Firefox and IE so far) can trigger too early. So we add more
-// margin. We use identical(1, 1.0) as an easy way to know if the test is
-// compiled by dart2js.
-int get safetyMargin => identical(1, 1.0) ? 5 : 0;
-
-main() {
-  test("stream-periodic3", () {
-    Stopwatch watch = new Stopwatch()..start();
-    Stream stream =
-        new Stream.periodic(const Duration(milliseconds: 1), (x) => x);
-    stream.take(10).listen((_) {}, onDone: expectAsync(() {
-      int millis = watch.elapsedMilliseconds + safetyMargin;
-      expect(millis, greaterThanOrEqualTo(10));
-    }));
-  });
-}
diff --git a/tests/lib/async/stream_periodic4_test.dart b/tests/lib/async/stream_periodic4_test.dart
deleted file mode 100644
index 25a8777..0000000
--- a/tests/lib/async/stream_periodic4_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test merging streams.
-library dart.test.stream_from_iterable;
-
-import "dart:async";
-import 'package:unittest/unittest.dart';
-
-void runTest(period, maxElapsed, pauseDuration) {
-  Function done = expectAsync(() {});
-
-  Stopwatch watch = new Stopwatch()..start();
-  Stream stream = new Stream.periodic(period, (x) => x);
-  var subscription;
-  subscription = stream.take(5).listen((i) {
-    if (watch.elapsed > maxElapsed) {
-      // Test failed in this configuration. Try with more time (or give up
-      // if we reached an unreasonable maxElapsed).
-      if (maxElapsed > const Duration(seconds: 2)) {
-        // Give up.
-        expect(true, false);
-      } else {
-        subscription.cancel();
-        // Call 'done' ourself, since it won't be invoked in the onDone handler.
-        runTest(period * 2, maxElapsed * 2, pauseDuration * 2);
-        done();
-        return;
-      }
-    }
-    watch.reset();
-    if (i == 2) {
-      subscription.pause();
-      watch.stop();
-      new Timer(pauseDuration, () {
-        watch.start();
-        subscription.resume();
-      });
-    }
-  }, onDone: done);
-}
-
-main() {
-  test("stream-periodic4", () {
-    runTest(const Duration(milliseconds: 2), const Duration(milliseconds: 8),
-        const Duration(milliseconds: 10));
-  });
-}
diff --git a/tests/lib/async/stream_periodic5_test.dart b/tests/lib/async/stream_periodic5_test.dart
deleted file mode 100644
index f961bd4..0000000
--- a/tests/lib/async/stream_periodic5_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test merging streams.
-library dart.test.stream_from_iterable;
-
-import "dart:async";
-import 'package:unittest/unittest.dart';
-
-watchMs(Stopwatch watch) {
-  int microsecs = watch.elapsedMicroseconds;
-  // Give it some slack. The Stopwatch is more precise than the timers. This
-  // means that we sometimes get 3995 microseconds instead of 4+ milliseconds.
-  // 200 microseconds should largely account for this discrepancy.
-  return (microsecs + 200) ~/ 1000;
-}
-
-main() {
-  test("stream-periodic4", () {
-    Stream stream =
-        new Stream.periodic(const Duration(milliseconds: 5), (x) => x);
-    Stopwatch watch = new Stopwatch()..start();
-    var subscription;
-    subscription = stream.take(10).listen((i) {
-      int ms = watchMs(watch);
-      watch.reset();
-      if (i == 2) {
-        Stopwatch watch2 = new Stopwatch()..start();
-        // Busy wait.
-        while (watch2.elapsedMilliseconds < 15) {}
-        // Make sure the stream can be paused when it has overdue events.
-        // We just busy waited for 15ms, even though the stream is supposed to
-        // emit events every 5ms.
-        subscription.pause();
-        watch.stop();
-        new Timer(const Duration(milliseconds: 150), () {
-          watch.start();
-          subscription.resume();
-        });
-      }
-    }, onDone: expectAsync(() {}));
-  });
-}
diff --git a/tests/lib/async/stream_periodic6_test.dart b/tests/lib/async/stream_periodic6_test.dart
deleted file mode 100644
index b413613..0000000
--- a/tests/lib/async/stream_periodic6_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test merging streams.
-library dart.test.stream_from_iterable;
-
-import "dart:async";
-import 'package:unittest/unittest.dart';
-
-main() {
-  test("stream-periodic1", () {
-    Stream stream = new Stream.periodic(const Duration(milliseconds: 1), (i) {
-      if (i == 3) throw 42;
-      return i;
-    });
-    int expected = 0;
-    var subscription;
-    subscription = stream.listen(
-        expectAsync((data) {
-          expect(data, expected++);
-          if (expected == 5) subscription.cancel();
-        }, count: 4), onError: expectAsync((e, s) {
-      expect(e, 42);
-      expected++;
-    }));
-  });
-}
diff --git a/tests/lib/async/stream_periodic_test.dart b/tests/lib/async/stream_periodic_test.dart
deleted file mode 100644
index f755d76..0000000
--- a/tests/lib/async/stream_periodic_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test merging streams.
-library dart.test.stream_from_iterable;
-
-import "dart:async";
-import 'package:unittest/unittest.dart';
-
-main() {
-  test("stream-periodic1", () {
-    Stream stream = new Stream.periodic(const Duration(milliseconds: 1));
-    int receivedCount = 0;
-    var subscription;
-    subscription = stream.listen(expectAsync((data) {
-      expect(data, isNull);
-      receivedCount++;
-      if (receivedCount == 5) {
-        var future = subscription.cancel();
-        expect(future, completes);
-      }
-    }, count: 5));
-  });
-}
diff --git a/tests/lib/async/stream_single_test.dart b/tests/lib/async/stream_single_test.dart
deleted file mode 100644
index 79cd6dd..0000000
--- a/tests/lib/async/stream_single_test.dart
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test the Stream.single method.
-library stream_single_test;
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-import 'event_helper.dart';
-
-main() {
-  test("single", () {
-    StreamController c = new StreamController(sync: true);
-    Future f = c.stream.single;
-    f.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    new Events.fromIterable([42]).replay(c);
-  });
-
-  test("single empty", () {
-    StreamController c = new StreamController(sync: true);
-    Future f = c.stream.single;
-    f.catchError(expectAsync((error) {
-      Expect.isTrue(error is StateError);
-    }));
-    new Events.fromIterable([]).replay(c);
-  });
-
-  test("single error", () {
-    StreamController c = new StreamController(sync: true);
-    Future f = c.stream.single;
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..error("error")
-      ..close();
-    errorEvents.replay(c);
-  });
-
-  test("single error 2", () {
-    StreamController c = new StreamController(sync: true);
-    Future f = c.stream.single;
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..error("error")
-      ..error("error2")
-      ..close();
-    errorEvents.replay(c);
-  });
-
-  test("single error 3", () {
-    StreamController c = new StreamController(sync: true);
-    Future f = c.stream.single;
-    f.catchError(expectAsync((error) {
-      Expect.equals("error", error);
-    }));
-    Events errorEvents = new Events()
-      ..add(499)
-      ..error("error")
-      ..close();
-    errorEvents.replay(c);
-  });
-}
diff --git a/tests/lib/async/stream_single_to_multi_subscriber_test.dart b/tests/lib/async/stream_single_to_multi_subscriber_test.dart
deleted file mode 100644
index 2063881..0000000
--- a/tests/lib/async/stream_single_to_multi_subscriber_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test the basic StreamController and StreamController.singleSubscription.
-library stream_single_test;
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-import 'event_helper.dart';
-
-main() {
-  test("tomulti 1", () {
-    StreamController c = new StreamController<int>(sync: true);
-    Stream<int> multi = c.stream.asBroadcastStream();
-    // Listen twice.
-    multi.listen(expectAsync((v) => Expect.equals(42, v)));
-    multi.listen(expectAsync((v) => Expect.equals(42, v)));
-    c.add(42);
-  });
-
-  test("tomulti 2", () {
-    StreamController c = new StreamController<int>(sync: true);
-    Stream<int> multi = c.stream.asBroadcastStream();
-    Events expected = new Events.fromIterable([1, 2, 3, 4, 5]);
-    Events actual1 = new Events.capture(multi);
-    Events actual2 = new Events.capture(multi);
-    actual1.onDone(expectAsync(() {
-      Expect.listEquals(expected.events, actual1.events);
-    }));
-    actual2.onDone(expectAsync(() {
-      Expect.listEquals(expected.events, actual2.events);
-    }));
-    expected.replay(c);
-  });
-
-  test("tomulti no-op", () {
-    StreamController c = new StreamController<int>(sync: true);
-    Stream<int> multi = c.stream.asBroadcastStream();
-    Events expected = new Events.fromIterable([1, 2, 3, 4, 5]);
-    Events actual1 = new Events.capture(multi);
-    Events actual2 = new Events.capture(multi);
-    actual1.onDone(expectAsync(() {
-      Expect.listEquals(expected.events, actual1.events);
-    }));
-    actual2.onDone(expectAsync(() {
-      Expect.listEquals(expected.events, actual2.events);
-    }));
-    expected.replay(c);
-  });
-}
diff --git a/tests/lib/async/stream_state_helper.dart b/tests/lib/async/stream_state_helper.dart
deleted file mode 100644
index 59b53db..0000000
--- a/tests/lib/async/stream_state_helper.dart
+++ /dev/null
@@ -1,605 +0,0 @@
-// Copyright (c) 2013, 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 stream_state_helper;
-
-import "package:unittest/unittest.dart";
-import "dart:async";
-import "dart:collection";
-
-class SubscriptionProtocolTest {
-  final StreamProtocolTest _streamTest;
-  final int id;
-  StreamSubscription _subscription;
-
-  SubscriptionProtocolTest(this.id, this._subscription, this._streamTest);
-
-  void pause([Future resumeSignal]) {
-    if (_subscription == null) throw new StateError("Not subscribed");
-    _subscription.pause(resumeSignal);
-  }
-
-  void resume() {
-    if (_subscription == null) throw new StateError("Not subscribed");
-    _subscription.resume();
-  }
-
-  void cancel() {
-    if (_subscription == null) throw new StateError("Not subscribed");
-    _subscription.cancel();
-    _subscription = null;
-  }
-
-  void expectData(var data, [void action()]) {
-    _streamTest._expectData(this, data, action);
-  }
-
-  void expectError(var error, [void action()]) {
-    _streamTest._expectError(this, error, action);
-  }
-
-  void expectDone([void action()]) {
-    _streamTest._expectDone(this, action);
-  }
-}
-
-class StreamProtocolTest {
-  bool trace = false;
-  final bool isBroadcast;
-  final bool isAsBroadcast;
-  StreamController _controller;
-  Stream _controllerStream;
-  // Most recent subscription created. Used as default for pause/resume.
-  SubscriptionProtocolTest _latestSubscription;
-  List<Event> _expectations = new List<Event>();
-  int _nextExpectationIndex = 0;
-  int _subscriptionIdCounter = 0;
-  Function _onComplete;
-
-  StreamProtocolTest.broadcast({bool sync: false})
-      : isBroadcast = true,
-        isAsBroadcast = false {
-    _controller = new StreamController.broadcast(
-        sync: sync, onListen: _onListen, onCancel: _onCancel);
-    _controllerStream = _controller.stream;
-    _onComplete = expectAsync(() {
-      _onComplete = null; // Being null marks the test as being complete.
-    });
-  }
-
-  StreamProtocolTest({bool sync: false})
-      : isBroadcast = false,
-        isAsBroadcast = false {
-    _controller = new StreamController(
-        sync: sync,
-        onListen: _onListen,
-        onPause: _onPause,
-        onResume: _onResume,
-        onCancel: _onCancel);
-    _controllerStream = _controller.stream;
-    _onComplete = expectAsync(() {
-      _onComplete = null; // Being null marks the test as being complete.
-    });
-  }
-
-  StreamProtocolTest.asBroadcast({bool sync: false})
-      : isBroadcast = false,
-        isAsBroadcast = true {
-    _controller = new StreamController(
-        sync: sync,
-        onListen: _onListen,
-        onPause: _onPause,
-        onResume: _onResume,
-        onCancel: _onCancel);
-    _controllerStream = _controller.stream.asBroadcastStream(
-        onListen: _onBroadcastListen, onCancel: _onBroadcastCancel);
-    _onComplete = expectAsync(() {
-      _onComplete = null; // Being null marks the test as being complete.
-    });
-  }
-
-  // Actions on the stream and controller.
-  void add(var data) {
-    _controller.add(data);
-  }
-
-  void error(var error) {
-    _controller.addError(error);
-  }
-
-  void close() {
-    _controller.close();
-  }
-
-  SubscriptionProtocolTest listen({bool cancelOnError: false}) {
-    int subscriptionId = _subscriptionIdCounter++;
-
-    StreamSubscription subscription = _controllerStream.listen((var data) {
-      _onData(subscriptionId, data);
-    }, onError: (Object error) {
-      _onError(subscriptionId, error);
-    }, onDone: () {
-      _onDone(subscriptionId);
-    }, cancelOnError: cancelOnError);
-    _latestSubscription =
-        new SubscriptionProtocolTest(subscriptionId, subscription, this);
-    if (trace) {
-      print("[Listen #$subscriptionId(#${_latestSubscription.hashCode})]");
-    }
-    return _latestSubscription;
-  }
-
-  // Actions on the most recently created subscription.
-  void pause([Future resumeSignal]) {
-    _latestSubscription.pause(resumeSignal);
-  }
-
-  void resume() {
-    _latestSubscription.resume();
-  }
-
-  void cancel() {
-    _latestSubscription.cancel();
-    _latestSubscription = null;
-  }
-
-  // End the test now. There must be no open expectations, and no further
-  // expectations will be allowed.
-  // Called automatically by an onCancel event on a non-broadcast stream.
-  void terminate() {
-    if (_nextExpectationIndex != _expectations.length) {
-      _withNextExpectation((Event expect) {
-        _fail("Expected: $expect\n"
-            "Found   : Early termination.\n${expect._stackTrace}");
-      });
-    }
-    _onComplete();
-  }
-
-  // Handling of stream events.
-  void _onData(int id, var data) {
-    if (trace) print("[Data#$id : $data]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchData(id, data)) {
-        _fail("Expected: $expect\n"
-            "Found   : [Data#$id: $data]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onError(int id, Object error) {
-    if (trace) print("[Error#$id : $error]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchError(id, error)) {
-        _fail("Expected: $expect\n"
-            "Found   : [Error#$id: ${error}]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onDone(int id) {
-    if (trace) print("[Done#$id]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchDone(id)) {
-        _fail("Expected: $expect\n"
-            "Found   : [Done#$id]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onPause() {
-    if (trace) print("[Pause]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchPause()) {
-        _fail("Expected: $expect\n"
-            "Found   : [Paused]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onResume() {
-    if (trace) print("[Resumed]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchResume()) {
-        _fail("Expected: $expect\n"
-            "Found   : [Resumed]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onListen() {
-    if (trace) print("[Subscribed]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchSubscribe()) {
-        _fail("Expected: $expect\n"
-            "Found: [Subscribed]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onCancel() {
-    if (trace) print("[Cancelled]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchCancel()) {
-        _fail("Expected: $expect\n"
-            "Found: [Cancelled]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onBroadcastListen(StreamSubscription sub) {
-    if (trace) print("[BroadcastListen]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchBroadcastListen(sub)) {
-        _fail("Expected: $expect\n"
-            "Found: [BroadcastListen]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _onBroadcastCancel(StreamSubscription sub) {
-    if (trace) print("[BroadcastCancel]");
-    _withNextExpectation((Event expect) {
-      if (!expect.matchBroadcastCancel(sub)) {
-        _fail("Expected: $expect\n"
-            "Found: [BroadcastCancel]\n${expect._stackTrace}");
-      }
-    });
-  }
-
-  void _withNextExpectation(void action(Event expect)) {
-    if (_nextExpectationIndex == _expectations.length) {
-      _nextExpectationIndex++;
-      action(new MismatchEvent());
-    } else {
-      Event next = _expectations[_nextExpectationIndex++];
-      action(next);
-    }
-  }
-
-  // Adds _expectations.
-  void expectAny([void action()]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new LogAnyEvent(action));
-  }
-
-  void expectData(var data, [void action()]) {
-    _expectData(null, data, action);
-  }
-
-  void _expectData(SubscriptionProtocolTest sub, var data, void action()) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new DataEvent(sub, data, action));
-  }
-
-  void expectError(var error, [void action()]) {
-    _expectError(null, error, action);
-  }
-
-  void _expectError(SubscriptionProtocolTest sub, var error, void action()) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new ErrorEvent(sub, error, action));
-  }
-
-  void expectDone([void action()]) {
-    _expectDone(null, action);
-  }
-
-  void _expectDone(SubscriptionProtocolTest sub, [void action()]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new DoneEvent(sub, action));
-  }
-
-  void expectPause([void action()]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new PauseCallbackEvent(action));
-  }
-
-  void expectResume([void action()]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new ResumeCallbackEvent(action));
-  }
-
-  void expectListen([void action()]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new SubscriptionCallbackEvent(action));
-  }
-
-  void expectCancel([void action()]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    _expectations.add(new CancelCallbackEvent(action));
-  }
-
-  void expectBroadcastListen([void action(StreamSubscription sub)]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    if (!isAsBroadcast) throw new StateError("Not an asBroadcast stream");
-    _expectations.add(new BroadcastListenCallbackEvent(action));
-  }
-
-  void expectBroadcastCancel([void action(StreamSubscription sub)]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    if (!isAsBroadcast) throw new StateError("Not an asBroadcast stream");
-    _expectations.add(new BroadcastCancelCallbackEvent(action));
-  }
-
-  void expectBroadcastListenOpt([void action(StreamSubscription sub)]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    if (!isAsBroadcast) return;
-    _expectations.add(new BroadcastListenCallbackEvent(action));
-  }
-
-  void expectBroadcastCancelOpt([void action(StreamSubscription sub)]) {
-    if (_onComplete == null) {
-      _fail("Adding expectation after completing");
-    }
-    if (!isAsBroadcast) return;
-    _expectations.add(new BroadcastCancelCallbackEvent(action));
-  }
-
-  void _fail(String message) {
-    if (_nextExpectationIndex == 0) {
-      throw "Unexpected event:\n$message\nNo earlier events matched.";
-    }
-    StringBuffer buf = new StringBuffer();
-    for (int i = 0; i < _expectations.length; i++) {
-      if (i == _nextExpectationIndex - 1) {
-        buf.write("->");
-      } else {
-        buf.write("  ");
-      }
-      buf.write(_expectations[i]);
-      buf.write("\n");
-    }
-    throw "Unexpected event:\n$message\nAll expectations:\n$buf";
-  }
-}
-
-class Event {
-  Function _action;
-  StackTrace _stackTrace;
-  Event(void action())
-      : _action = (action == null) ? null : expectAsync(action) {
-    try {
-      throw 0;
-    } catch (_, s) {
-      _stackTrace = s;
-    }
-  }
-  Event.broadcast(void action(StreamSubscription sub))
-      : _action = (action == null) ? null : expectAsync(action) {
-    try {
-      throw 0;
-    } catch (_, s) {
-      _stackTrace = s;
-    }
-  }
-
-  bool matchData(int id, var data) {
-    return false;
-  }
-
-  bool matchError(int id, e) {
-    return false;
-  }
-
-  bool matchDone(int id) {
-    return false;
-  }
-
-  bool matchPause() {
-    if (!_testPause()) return false;
-    if (_action != null) _action();
-    return true;
-  }
-
-  bool matchResume() {
-    if (!_testResume()) return false;
-    if (_action != null) _action();
-    return true;
-  }
-
-  bool matchSubscribe() {
-    if (!_testSubscribe()) return false;
-    if (_action != null) _action();
-    return true;
-  }
-
-  bool matchCancel() {
-    if (!_testCancel()) return false;
-    if (_action != null) _action();
-    return true;
-  }
-
-  bool matchBroadcastListen(StreamSubscription sub) {
-    if (!_testBroadcastListen()) return false;
-    if (_action != null) _action(sub);
-    return true;
-  }
-
-  bool matchBroadcastCancel(StreamSubscription sub) {
-    if (!_testBroadcastCancel()) return false;
-    if (_action != null) _action(sub);
-    return true;
-  }
-
-  bool _testData(_) => false;
-  bool _testError(_) => false;
-  bool _testDone() => false;
-  bool _testPause() => false;
-  bool _testResume() => false;
-  bool _testSubscribe() => false;
-  bool _testCancel() => false;
-  bool _testBroadcastListen() => false;
-  bool _testBroadcastCancel() => false;
-}
-
-class SubscriptionEvent extends Event {
-  SubscriptionProtocolTest subscription;
-  SubscriptionEvent(this.subscription, void action()) : super(action);
-
-  bool matchData(int id, var data) {
-    if (subscription != null && subscription.id != id) return false;
-    if (!_testData(data)) return false;
-    if (_action != null) _action();
-    return true;
-  }
-
-  bool matchError(int id, e) {
-    if (subscription != null && subscription.id != id) return false;
-    if (!_testError(e)) return false;
-    if (_action != null) _action();
-    return true;
-  }
-
-  bool matchDone(int id) {
-    if (subscription != null && subscription.id != id) return false;
-    if (!_testDone()) return false;
-    if (_action != null) _action();
-    return true;
-  }
-
-  String get _id => (subscription == null) ? "" : "#${subscription.id}";
-}
-
-class MismatchEvent extends Event {
-  MismatchEvent() : super(null);
-  toString() => "[No event expected]";
-}
-
-class DataEvent extends SubscriptionEvent {
-  final data;
-  DataEvent(SubscriptionProtocolTest sub, this.data, void action())
-      : super(sub, action);
-  bool _testData(var data) => this.data == data;
-  String toString() => "[Data$_id: $data]";
-}
-
-class ErrorEvent extends SubscriptionEvent {
-  final error;
-  ErrorEvent(SubscriptionProtocolTest sub, this.error, void action())
-      : super(sub, action);
-  bool _testError(error) => this.error == error;
-  String toString() => "[Error$_id: $error]";
-}
-
-class DoneEvent extends SubscriptionEvent {
-  DoneEvent(SubscriptionProtocolTest sub, void action()) : super(sub, action);
-  bool _testDone() => true;
-  String toString() => "[Done$_id]";
-}
-
-class PauseCallbackEvent extends Event {
-  PauseCallbackEvent(void action()) : super(action);
-  bool _testPause() => true;
-  String toString() => "[Paused]";
-}
-
-class ResumeCallbackEvent extends Event {
-  ResumeCallbackEvent(void action()) : super(action);
-  bool _testResume() => true;
-  String toString() => "[Resumed]";
-}
-
-class SubscriptionCallbackEvent extends Event {
-  SubscriptionCallbackEvent(void action()) : super(action);
-  bool _testSubscribe() => true;
-  String toString() => "[Subscribed]";
-}
-
-class CancelCallbackEvent extends Event {
-  CancelCallbackEvent(void action()) : super(action);
-  bool _testCancel() => true;
-  String toString() => "[Cancelled]";
-}
-
-class BroadcastCancelCallbackEvent extends Event {
-  BroadcastCancelCallbackEvent(void action(StreamSubscription sub))
-      : super.broadcast(action);
-  bool _testBroadcastCancel() => true;
-  String toString() => "[BroadcastCancel]";
-}
-
-class BroadcastListenCallbackEvent extends Event {
-  BroadcastListenCallbackEvent(void action(StreamSubscription sub))
-      : super.broadcast(action);
-  bool _testBroadcastListen() => true;
-  String toString() => "[BroadcastListen]";
-}
-
-/** Event matcher that matches any other event. */
-class LogAnyEvent extends Event {
-  String _actual = "*Not matched yet*";
-
-  LogAnyEvent(void action()) : super(action);
-
-  bool _testData(var data) {
-    _actual = "*[Data $data]";
-    return true;
-  }
-
-  bool _testError(error) {
-    _actual = "*[Error ${error}]";
-    return true;
-  }
-
-  bool _testDone() {
-    _actual = "*[Done]";
-    return true;
-  }
-
-  bool _testPause() {
-    _actual = "*[Paused]";
-    return true;
-  }
-
-  bool _testResume() {
-    _actual = "*[Resumed]";
-    return true;
-  }
-
-  bool _testSubcribe() {
-    _actual = "*[Subscribed]";
-    return true;
-  }
-
-  bool _testCancel() {
-    _actual = "*[Cancelled]";
-    return true;
-  }
-
-  bool _testBroadcastListen() {
-    _actual = "*[BroadcastListen]";
-    return true;
-  }
-
-  bool _testBroadcastCancel() {
-    _actual = "*[BroadcastCancel]";
-    return true;
-  }
-
-  /** Returns a representation of the event it was tested against. */
-  String toString() => _actual;
-}
diff --git a/tests/lib/async/stream_state_nonzero_timer_test.dart b/tests/lib/async/stream_state_nonzero_timer_test.dart
deleted file mode 100644
index 9356064..0000000
--- a/tests/lib/async/stream_state_nonzero_timer_test.dart
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the event/callback protocol of the stream implementations.
-// Uses a non-zero timer so it fails on d8.
-
-library stream_state_nonzero_timer_test;
-
-import "dart:async";
-import "package:unittest/unittest.dart";
-import "stream_state_helper.dart";
-
-const ms5 = const Duration(milliseconds: 5);
-
-// Testing pause/resume, some with non-zero duration. This only makes sense for
-// non-broadcast streams, since broadcast stream subscriptions handle their
-// own pauses.
-
-main() {
-  var p = "StreamController";
-
-  test("$p-sub-data/pause/resume/pause/resume-done", () {
-    var t = new StreamProtocolTest();
-    t
-      ..expectListen()
-      ..expectData(42, () {
-        t.pause();
-      })
-      ..expectPause(() {
-        t.resume();
-      })
-      ..expectResume(() {
-        t.pause();
-      })
-      ..expectPause(() {
-        t.resume();
-      })
-      ..expectResume(() {
-        t.close();
-      })
-      ..expectCancel()
-      ..expectDone(t.terminate);
-    t
-      ..listen()
-      ..add(42);
-  });
-
-  test("$p-sub-data/pause-done", () {
-    var t = new StreamProtocolTest();
-    t
-      ..expectListen()
-      ..expectData(42, () {
-        t.pause(new Future.delayed(ms5, () => null));
-      })
-      ..expectPause()
-      ..expectCancel()
-      ..expectDone(t.terminate);
-    // We are calling "close" while the controller is actually paused,
-    // and it will stay paused until the pending events are sent.
-    t
-      ..listen()
-      ..add(42)
-      ..close();
-  });
-
-  test("$p-sub-data/pause-resume/done", () {
-    var t = new StreamProtocolTest();
-    t
-      ..expectListen()
-      ..expectData(42, () {
-        t.pause(new Future.delayed(ms5, () => null));
-      })
-      ..expectPause()
-      ..expectResume(t.close)
-      ..expectCancel()
-      ..expectDone(t.terminate);
-    t
-      ..listen()
-      ..add(42);
-  });
-
-  test("$p-sub-data/data+pause-data-resume-done", () {
-    var t = new StreamProtocolTest();
-    t
-      ..expectListen()
-      ..expectData(42, () {
-        t.add(43);
-        t.pause(new Future.delayed(ms5, () => null));
-        // Should now be paused until the future finishes.
-        // After that, the controller stays paused until the pending queue
-        // is empty.
-      })
-      ..expectPause()
-      ..expectData(43)
-      ..expectResume(t.close)
-      ..expectCancel()
-      ..expectDone(t.terminate);
-    t
-      ..listen()
-      ..add(42);
-  });
-
-  test("$p-pause-during-callback", () {
-    var t = new StreamProtocolTest();
-    t
-      ..expectListen()
-      ..expectData(42, () {
-        t.pause();
-      })
-      ..expectPause(() {
-        t.resume();
-      })
-      ..expectResume(() {
-        t.pause();
-        t.resume();
-        t.close();
-      })
-      ..expectCancel()
-      ..expectDone(t.terminate);
-    t
-      ..listen()
-      ..add(42);
-  });
-}
diff --git a/tests/lib/async/stream_state_test.dart b/tests/lib/async/stream_state_test.dart
deleted file mode 100644
index 5f164a3..0000000
--- a/tests/lib/async/stream_state_test.dart
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the event/callback protocol of the stream implementations.
-library stream_state_test;
-
-import "package:unittest/unittest.dart";
-import "stream_state_helper.dart";
-
-const ms5 = const Duration(milliseconds: 5);
-
-main() {
-  mainTest(sync: true, asBroadcast: false);
-  mainTest(sync: true, asBroadcast: true);
-  mainTest(sync: false, asBroadcast: false);
-  mainTest(sync: false, asBroadcast: true);
-}
-
-void terminateWithDone(t, asBroadcast) {
-  if (asBroadcast) {
-    t
-      ..expectCancel()
-      ..expectDone()
-      ..expectBroadcastCancel((_) => t.terminate());
-  } else {
-    t
-      ..expectCancel()
-      ..expectDone(t.terminate);
-  }
-}
-
-mainTest({bool sync, bool asBroadcast}) {
-  var p = (sync ? "S" : "AS") + (asBroadcast ? "BC" : "SC");
-  test("$p-sub-data-done", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectData(42);
-    terminateWithDone(t, asBroadcast);
-    t
-      ..listen()
-      ..add(42)
-      ..close();
-  });
-
-  test("$p-data-done-sub-sync", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectData(42);
-    terminateWithDone(t, asBroadcast);
-    t
-      ..add(42)
-      ..close()
-      ..listen();
-  });
-
-  test("$p-data-done-sub-async", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectData(42);
-    terminateWithDone(t, asBroadcast);
-    t
-      ..add(42)
-      ..close()
-      ..listen();
-  });
-
-  test("$p-sub-data/pause+resume-done", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectData(42, () {
-        t.pause();
-        t.resume();
-        t.close();
-      });
-    terminateWithDone(t, asBroadcast);
-    t
-      ..listen()
-      ..add(42);
-  });
-
-  test("$p-sub-data-unsubonerror", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    if (asBroadcast) {
-      t
-        ..expectListen()
-        ..expectBroadcastListen()
-        ..expectData(42)
-        ..expectError("bad")
-        ..expectBroadcastCancel()
-        ..expectCancel(t.terminate);
-    } else {
-      t
-        ..expectListen()
-        ..expectData(42)
-        ..expectCancel()
-        ..expectError("bad", t.terminate);
-    }
-    t
-      ..listen(cancelOnError: true)
-      ..add(42)
-      ..error("bad")
-      ..add(43)
-      ..close();
-  });
-
-  test("$p-sub-data-no-unsubonerror", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectData(42)
-      ..expectError("bad")
-      ..expectData(43);
-    terminateWithDone(t, asBroadcast);
-    t
-      ..listen(cancelOnError: false)
-      ..add(42)
-      ..error("bad")
-      ..add(43)
-      ..close();
-  });
-
-  test("$p-pause-resume-during-event", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.broadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectData(42, () {
-        t.pause();
-        t.resume();
-      });
-    if (!asBroadcast && !sync) {
-      t..expectPause();
-    }
-    if (asBroadcast && sync) {
-      t
-        ..expectDone()
-        ..expectCancel(t.terminate);
-    } else {
-      t
-        ..expectCancel()
-        ..expectDone(t.terminate);
-    }
-    t
-      ..listen()
-      ..add(42)
-      ..close();
-  });
-
-  test("$p-cancel-on-data", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectData(42, t.cancel)
-      ..expectBroadcastCancelOpt()
-      ..expectCancel(t.terminate);
-    t
-      ..listen(cancelOnError: false)
-      ..add(42)
-      ..close();
-  });
-
-  test("$p-cancel-on-error", () {
-    var t = asBroadcast
-        ? new StreamProtocolTest.asBroadcast(sync: sync)
-        : new StreamProtocolTest(sync: sync);
-    t
-      ..expectListen()
-      ..expectBroadcastListenOpt()
-      ..expectError(42, t.cancel)
-      ..expectBroadcastCancelOpt()
-      ..expectCancel(t.terminate);
-    t
-      ..listen(cancelOnError: false)
-      ..error(42)
-      ..close();
-  });
-}
diff --git a/tests/lib/async/stream_subscription_as_future_test.dart b/tests/lib/async/stream_subscription_as_future_test.dart
deleted file mode 100644
index 595f289..0000000
--- a/tests/lib/async/stream_subscription_as_future_test.dart
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the Stream.single method.
-library stream_single_test;
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-main() {
-  test("subscription.asFuture success", () {
-    Stream stream = new Stream.fromIterable([1, 2, 3]);
-    var output = [];
-    var subscription = stream.listen((x) {
-      output.add(x);
-    });
-    subscription.asFuture(output).then(expectAsync((o) {
-      Expect.listEquals([1, 2, 3], o);
-    }));
-  });
-
-  test("subscription.asFuture success2", () {
-    StreamController controller = new StreamController(sync: true);
-    [1, 2, 3].forEach(controller.add);
-    controller.close();
-    Stream stream = controller.stream;
-    var output = [];
-    var subscription = stream.listen((x) {
-      output.add(x);
-    });
-    subscription.asFuture(output).then(expectAsync((o) {
-      Expect.listEquals([1, 2, 3], o);
-    }));
-  });
-
-  test("subscription.asFuture success 3", () {
-    Stream stream = new Stream.fromIterable([1, 2, 3]).map((x) => x);
-    var output = [];
-    var subscription = stream.listen((x) {
-      output.add(x);
-    });
-    subscription.asFuture(output).then(expectAsync((o) {
-      Expect.listEquals([1, 2, 3], o);
-    }));
-  });
-
-  test("subscription.asFuture different type", () {
-    Stream stream = new Stream<int>.fromIterable([1, 2, 3]);
-    var asyncCallback = expectAsync(() => {});
-    var output = [];
-    var subscription = stream.listen((x) {
-      output.add(x);
-    });
-    subscription.asFuture("string").then((String o) {
-      Expect.listEquals([1, 2, 3], output);
-      Expect.equals("string", o);
-      asyncCallback();
-    });
-  });
-
-  test("subscription.asFuture failure", () {
-    StreamController controller = new StreamController(sync: true);
-    [1, 2, 3].forEach(controller.add);
-    controller.addError("foo");
-    controller.close();
-    Stream stream = controller.stream;
-    var output = [];
-    var subscription = stream.listen((x) {
-      output.add(x);
-    });
-    subscription.asFuture(output).catchError(expectAsync((error) {
-      Expect.equals(error, "foo");
-    }));
-  });
-
-  test("subscription.asFuture failure2", () {
-    Stream stream = new Stream.fromIterable([1, 2, 3, 4]).map((x) {
-      if (x == 4) throw "foo";
-      return x;
-    });
-    var output = [];
-    var subscription = stream.listen((x) {
-      output.add(x);
-    });
-    subscription.asFuture(output).catchError(expectAsync((error) {
-      Expect.equals(error, "foo");
-    }));
-  });
-
-  test("subscription.asFuture delayed cancel", () {
-    var completer = new Completer();
-    var controller =
-        new StreamController(onCancel: () => completer.future, sync: true);
-    [1, 2, 3].forEach(controller.add);
-    controller.addError("foo");
-    controller.close();
-    Stream stream = controller.stream;
-    var output = [];
-    var subscription = stream.listen((x) {
-      output.add(x);
-    });
-    bool catchErrorHasRun = false;
-    subscription.asFuture(output).catchError(expectAsync((error) {
-      Expect.equals(error, "foo");
-      catchErrorHasRun = true;
-    }));
-    Timer.run(expectAsync(() {
-      Expect.isFalse(catchErrorHasRun);
-      completer.complete();
-    }));
-  });
-
-  test("subscription.asFuture failure in cancel", () {
-    runZoned(() {
-      var completer = new Completer();
-      var controller =
-          new StreamController(onCancel: () => completer.future, sync: true);
-      [1, 2, 3].forEach(controller.add);
-      controller.addError("foo");
-      controller.close();
-      Stream stream = controller.stream;
-      var output = [];
-      var subscription = stream.listen((x) {
-        output.add(x);
-      });
-      bool catchErrorHasRun = false;
-      subscription.asFuture(output).catchError(expectAsync((error) {
-        Expect.equals(error, "foo");
-        catchErrorHasRun = true;
-      }));
-      Timer.run(expectAsync(() {
-        Expect.isFalse(catchErrorHasRun);
-        completer.completeError(499);
-      }));
-    }, onError: expectAsync((e) {
-      Expect.equals(499, e);
-    }));
-  });
-}
diff --git a/tests/lib/async/stream_subscription_cancel_test.dart b/tests/lib/async/stream_subscription_cancel_test.dart
deleted file mode 100644
index fa5cbcc..0000000
--- a/tests/lib/async/stream_subscription_cancel_test.dart
+++ /dev/null
@@ -1,318 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the StreamSubscription.cancel return Future.
-library stream_subscription_cancel;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-void main() {
-  test('subscription.cancel', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    expect(controller.stream.listen(null).cancel().then((_) => done),
-        completion(equals(true)));
-
-    Timer.run(() {
-      done = true;
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel after close', () {
-    var completer = new Completer();
-    StreamController controller = new StreamController(onCancel: () {
-      completer.complete();
-      return completer.future;
-    });
-
-    controller.close();
-
-    var completer2 = new Completer();
-    var sub;
-    void onDone() {
-      sub.cancel().then(completer2.complete);
-    }
-
-    sub = controller.stream.listen(null, onDone: onDone);
-    expect(completer.future, completes);
-    expect(completer2.future, completes);
-  });
-
-  test('subscription.cancel after error', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    controller.addError("error");
-
-    bool done = false;
-
-    var subscription;
-    var doneCompleter = new Completer();
-    void onError(e) {
-      subscription.cancel().then((_) => doneCompleter.complete(done));
-      done = true;
-      completer.complete();
-    }
-
-    subscription = controller.stream.listen(null, onError: onError);
-    expect(doneCompleter.future, completion(equals(true)));
-  });
-
-  test('subscription.cancel after error (cancelOnError)', () {
-    bool called = false;
-    StreamController controller = new StreamController(onCancel: () {
-      called = true;
-    });
-
-    controller.addError("error");
-
-    var doneCompleter = new Completer();
-    void onError(e) {
-      expect(called, equals(true));
-      doneCompleter.complete(true);
-    }
-
-    controller.stream.listen(null, onError: onError, cancelOnError: true);
-    expect(doneCompleter.future, completion(equals(true)));
-  });
-
-  test('subscription.cancel before error (cancelOnError)', () {
-    var doneCompleter = new Completer();
-    StreamController controller = new StreamController(onCancel: () {
-      doneCompleter.complete(true);
-    });
-
-    controller.addError("error");
-
-    void onError(e) {
-      fail("onError is unexpected");
-    }
-
-    controller.stream
-        .listen(null, onError: onError, cancelOnError: true)
-        .cancel();
-    expect(doneCompleter.future, completion(equals(true)));
-  });
-
-  test('subscription.cancel on error (cancelOnError)', () {
-    bool called = false;
-    StreamController controller = new StreamController(onCancel: () {
-      expect(called, isFalse);
-      called = true;
-    });
-
-    controller.addError("error");
-
-    var doneCompleter = new Completer();
-    var sub;
-    void onError(e) {
-      expect(called, equals(true));
-      sub.cancel();
-      doneCompleter.complete(true);
-    }
-
-    sub = controller.stream.listen(null, onError: onError, cancelOnError: true);
-    expect(doneCompleter.future, completion(equals(true)));
-  });
-
-  test('subscription.cancel before done', () {
-    var doneCompleter = new Completer();
-    StreamController controller = new StreamController(onCancel: () {
-      doneCompleter.complete(true);
-    });
-
-    controller.close();
-
-    void onDone() {
-      fail("onDone is unexpected");
-    }
-
-    controller.stream.listen(null, onDone: onDone).cancel();
-    expect(doneCompleter.future, completion(equals(true)));
-  });
-
-  test('subscription.cancel through map', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.map((x) => x).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through asyncMap', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.asyncMap((x) => x).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through asyncExpand', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.asyncExpand((x) => x).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through handleError', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.handleError((x) => x).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through skip', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.skip(1).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through take', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.take(1).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through skipWhile', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.skipWhile((x) => true).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through takeWhile', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.takeWhile((x) => true).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through timeOut', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var duration = const Duration(hours: 5);
-    var future = controller.stream.timeout(duration).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through transform', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var transformer = new StreamTransformer.fromHandlers(handleData: (x, y) {});
-    var future = controller.stream.transform(transformer).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-
-  test('subscription.cancel through where', () {
-    var completer = new Completer();
-    StreamController controller =
-        new StreamController(onCancel: () => completer.future);
-
-    bool done = false;
-    var future = controller.stream.where((x) => true).listen(null).cancel();
-
-    expect(future.then((_) => done = true), completion(equals(true)));
-
-    Timer.run(() {
-      expect(done, isFalse);
-      completer.complete();
-    });
-  });
-}
diff --git a/tests/lib/async/stream_take_test.dart b/tests/lib/async/stream_take_test.dart
deleted file mode 100644
index b681e88..0000000
--- a/tests/lib/async/stream_take_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// 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.
-
-import 'dart:async';
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-class A {
-  const A();
-}
-
-class B extends A {
-  const B();
-}
-
-/// Stream which emits an error if it's not canceled at the correct time.
-///
-/// Must be canceled after at most [maxEvents] events.
-Stream makeStream(int maxEvents) {
-  var c;
-  int event = 0;
-  bool canceled = false;
-  c = new StreamController(onListen: () {
-    new Timer.periodic(const Duration(milliseconds: 10), (t) {
-      if (canceled) {
-        t.cancel();
-        return;
-      }
-      if (event == maxEvents) {
-        c.addError("NOT CANCELED IN TIME: $maxEvents");
-        c.close();
-        t.cancel();
-      } else {
-        c.add(event++);
-      }
-    });
-  }, onCancel: () {
-    canceled = true;
-  });
-  return c.stream;
-}
-
-main() {
-  asyncStart();
-  tests().then((_) {
-    asyncEnd();
-  });
-}
-
-tests() async {
-  await expectThrowsAsync(makeStream(4).take(5).toList(), "5/4");
-  await expectThrowsAsync(makeStream(0).take(1).toList(), "1/0");
-
-  Expect.listEquals([0, 1, 2, 3, 4], await makeStream(5).take(5).toList());
-
-  Expect.listEquals([0, 1, 2, 3], await makeStream(5).take(4).toList());
-
-  Expect.listEquals([0], await makeStream(5).take(1).toList());
-
-  Expect.listEquals([], await makeStream(5).take(0).toList());
-
-  Expect.listEquals([], await makeStream(0).take(0).toList());
-}
-
-Future expectThrowsAsync(Future computation, String name) {
-  return computation.then((_) {
-    Expect.fail("$name: Did not throw");
-  }, onError: (e, s) {});
-}
diff --git a/tests/lib/async/stream_timeout_test.dart b/tests/lib/async/stream_timeout_test.dart
deleted file mode 100644
index 127aee7..0000000
--- a/tests/lib/async/stream_timeout_test.dart
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright (c) 2013, 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:async";
-import "package:unittest/unittest.dart";
-
-main() {
-  const ms5 = const Duration(milliseconds: 5);
-  const twoSecs = const Duration(seconds: 2);
-
-  test("stream timeout", () {
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(ms5);
-    expect(tos.isBroadcast, false);
-    tos.handleError(expectAsync((e, s) {
-      expect(e, new isInstanceOf<TimeoutException>());
-      expect(s, null);
-    })).listen((v) {
-      fail("Unexpected event");
-    });
-  });
-
-  test("stream timeout add events", () {
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(ms5, onTimeout: (sink) {
-      sink.add(42);
-      sink.addError("ERROR");
-      sink.close();
-    });
-    expect(tos.isBroadcast, false);
-    tos.listen(expectAsync((v) {
-      expect(v, 42);
-    }), onError: expectAsync((e, s) {
-      expect(e, "ERROR");
-    }), onDone: expectAsync(() {}));
-  });
-
-  test("stream no timeout", () {
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(twoSecs);
-    int ctr = 0;
-    tos.listen((v) {
-      expect(v, 42);
-      ctr++;
-    }, onError: (e, s) {
-      fail("No error expected");
-    }, onDone: expectAsync(() {
-      expect(ctr, 2);
-    }));
-    expect(tos.isBroadcast, false);
-    c
-      ..add(42)
-      ..add(42)
-      ..close(); // Faster than a timeout!
-  });
-
-  test("stream timeout after events", () {
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(twoSecs);
-    expect(tos.isBroadcast, false);
-    int ctr = 0;
-    tos.listen((v) {
-      expect(v, 42);
-      ctr++;
-    }, onError: expectAsync((e, s) {
-      expect(ctr, 2);
-      expect(e, new isInstanceOf<TimeoutException>());
-    }));
-    c..add(42)..add(42); // No close, timeout after two events.
-  });
-
-  test("broadcast stream timeout", () {
-    StreamController c = new StreamController.broadcast();
-    Stream tos = c.stream.timeout(ms5);
-    expect(tos.isBroadcast, true);
-    tos.handleError(expectAsync((e, s) {
-      expect(e, new isInstanceOf<TimeoutException>());
-      expect(s, null);
-    })).listen((v) {
-      fail("Unexpected event");
-    });
-  });
-
-  test("asBroadcast stream timeout", () {
-    StreamController c = new StreamController.broadcast();
-    Stream tos = c.stream.asBroadcastStream().timeout(ms5);
-    expect(tos.isBroadcast, true);
-    tos.handleError(expectAsync((e, s) {
-      expect(e, new isInstanceOf<TimeoutException>());
-      expect(s, null);
-    })).listen((v) {
-      fail("Unexpected event");
-    });
-  });
-
-  test("mapped stream timeout", () {
-    StreamController c = new StreamController();
-    Stream tos = c.stream.map((x) => 2 * x).timeout(ms5);
-    expect(tos.isBroadcast, false);
-    tos.handleError(expectAsync((e, s) {
-      expect(e, new isInstanceOf<TimeoutException>());
-      expect(s, null);
-    })).listen((v) {
-      fail("Unexpected event");
-    });
-  });
-
-  test("events prevent timeout", () {
-    Stopwatch sw = new Stopwatch();
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(twoSecs, onTimeout: (_) {
-      int elapsed = sw.elapsedMilliseconds;
-      if (elapsed > 250) {
-        // This should not happen, but it does occasionally.
-        // Starving the periodic timer has made the test useless.
-        print("Periodic timer of 5 ms delayed $elapsed ms.");
-        return;
-      }
-      fail("Timeout not prevented by events");
-      throw "ERROR";
-    });
-    // Start the periodic timer before we start listening to the stream.
-    // This should reduce the flakiness of the test.
-    int ctr = 200; // send this many events at 5ms intervals. Then close.
-    new Timer.periodic(ms5, (timer) {
-      sw.reset();
-      c.add(42);
-      if (--ctr == 0) {
-        timer.cancel();
-        c.close();
-      }
-    });
-    sw.start();
-
-    tos.listen((v) {
-      expect(v, 42);
-    }, onDone: expectAsync(() {}));
-  });
-
-  test("errors prevent timeout", () {
-    Stopwatch sw = new Stopwatch();
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(twoSecs, onTimeout: (_) {
-      int elapsed = sw.elapsedMilliseconds;
-      if (elapsed > 250) {
-        // This should not happen, but it does occasionally.
-        // Starving the periodic timer has made the test useless.
-        print("Periodic timer of 5 ms delayed $elapsed ms.");
-        return;
-      }
-      fail("Timeout not prevented by errors");
-    });
-
-    // Start the periodic timer before we start listening to the stream.
-    // This should reduce the flakiness of the test.
-    int ctr = 200; // send this many error events at 5ms intervals. Then close.
-    new Timer.periodic(ms5, (timer) {
-      sw.reset();
-      c.addError("ERROR");
-      if (--ctr == 0) {
-        timer.cancel();
-        c.close();
-      }
-    });
-    sw.start();
-
-    tos.listen((_) {}, onError: (e, s) {
-      expect(e, "ERROR");
-    }, onDone: expectAsync(() {}));
-  });
-
-  test("closing prevents timeout", () {
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(twoSecs, onTimeout: (_) {
-      fail("Timeout not prevented by close");
-    });
-    tos.listen((_) {}, onDone: expectAsync(() {}));
-    c.close();
-  });
-
-  test("pausing prevents timeout", () {
-    StreamController c = new StreamController();
-    Stream tos = c.stream.timeout(ms5, onTimeout: (_) {
-      fail("Timeout not prevented by close");
-    });
-    var subscription = tos.listen((_) {}, onDone: expectAsync(() {}));
-    subscription.pause();
-    new Timer(twoSecs, () {
-      c.close();
-      subscription.resume();
-    });
-  });
-}
diff --git a/tests/lib/async/stream_transform_test.dart b/tests/lib/async/stream_transform_test.dart
deleted file mode 100644
index 151c504..0000000
--- a/tests/lib/async/stream_transform_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2011, 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 stream_transform_test;
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-import 'event_helper.dart';
-
-main() {
-  // Regression tests for http://dartbug.com/8310 and 8311
-
-  test("simpleDone", () {
-    StreamController c = new StreamController(sync: true);
-    Stream out = c.stream.handleError((x) {}).handleError((x) {});
-    out.listen((v) {}, onDone: expectAsync(() {}));
-    // Should not throw.
-    c.close();
-  });
-
-  test("with events", () {
-    StreamController c = new StreamController(sync: true);
-    Events expected = new Events.fromIterable([10, 12]);
-    Events input = new Events.fromIterable([1, 2, 3, 4, 5, 6, 7]);
-    Events actual = new Events.capture(
-        c.stream.map((x) => x * 2).where((x) => x > 5).skip(2).take(2));
-    actual.onDone(expectAsync(() {
-      Expect.listEquals(expected.events, actual.events);
-    }));
-    input.replay(c);
-  });
-
-  test("paused events", () {
-    StreamController c = new StreamController(sync: true);
-    Events expected = new Events.fromIterable([10, 12]);
-    Events input = new Events.fromIterable([1, 2, 3, 4, 5, 6, 7]);
-    Events actual = new Events.capture(
-        c.stream.map((x) => x * 2).where((x) => x > 5).skip(2).take(2));
-    actual.onDone(expectAsync(() {
-      Expect.listEquals(expected.events, actual.events);
-    }));
-    actual.pause();
-    input.replay(c);
-    actual.resume();
-  });
-
-  test("closing after done", () {
-    var controller = new StreamController(sync: true);
-    controller.stream
-        .map((e) => e)
-        .transform(
-            new StreamTransformer.fromHandlers(handleData: (element, sink) {
-          sink.add(element);
-        }, handleDone: (sink) {
-          sink.close();
-        }))
-        .listen(expectAsync((e) => expect(e, equals("foo"))));
-
-    controller.add("foo");
-    // Should not crash.
-    controller.close();
-  });
-}
diff --git a/tests/lib/async/stream_transformation_broadcast_test.dart b/tests/lib/async/stream_transformation_broadcast_test.dart
deleted file mode 100644
index 330901e..0000000
--- a/tests/lib/async/stream_transformation_broadcast_test.dart
+++ /dev/null
@@ -1,360 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that transformations like `map` and `where` preserve broadcast flag.
-library stream_join_test;
-
-import 'dart:async';
-import 'event_helper.dart';
-import 'package:unittest/unittest.dart';
-import "package:expect/expect.dart";
-
-main() {
-  testStream("singlesub", () => new StreamController(), (c) => c.stream);
-  testStream(
-      "broadcast", () => new StreamController.broadcast(), (c) => c.stream);
-  testStream("asBroadcast", () => new StreamController(),
-      (c) => c.stream.asBroadcastStream());
-  testStream("broadcast.asBroadcast", () => new StreamController.broadcast(),
-      (c) => c.stream.asBroadcastStream());
-}
-
-void testStream(
-    String name, StreamController create(), Stream getStream(controller)) {
-  test("$name-map", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.map((x) => x + 1);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(43, v);
-    }));
-    c.add(42);
-    c.close();
-  });
-  test("$name-where", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.where((x) => x.isEven);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(37);
-    c.add(42);
-    c.add(87);
-    c.close();
-  });
-  test("$name-handleError", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.handleError((x, s) {});
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.addError("BAD1");
-    c.add(42);
-    c.addError("BAD2");
-    c.close();
-  });
-  test("$name-expand", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.expand((x) => x.isEven ? [x] : []);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(37);
-    c.add(42);
-    c.add(87);
-    c.close();
-  });
-  test("$name-transform", () {
-    var c = create();
-    var s = getStream(c);
-    // TODO: find name of default transformer
-    var t =
-        new StreamTransformer.fromHandlers(handleData: (value, EventSink sink) {
-      sink.add(value);
-    });
-    Stream newStream = s.transform(t);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(42);
-    c.close();
-  });
-  test("$name-take", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.take(1);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(42);
-    c.add(37);
-    c.close();
-  });
-  test("$name-takeWhile", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.takeWhile((x) => x.isEven);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(42);
-    c.add(37);
-    c.close();
-  });
-  test("$name-skip", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.skip(1);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(37);
-    c.add(42);
-    c.close();
-  });
-  test("$name-skipWhile", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.skipWhile((x) => x.isOdd);
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(37);
-    c.add(42);
-    c.close();
-  });
-  test("$name-distinct", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.distinct();
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(42);
-    c.add(42);
-    c.close();
-  });
-  test("$name-timeout", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.timeout(const Duration(seconds: 1));
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(42, v);
-    }));
-    c.add(42);
-    c.close();
-  });
-  test("$name-asyncMap", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.asyncMap((x) => new Future.value(x + 1));
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(43, v);
-    }));
-    c.add(42);
-    c.close();
-  });
-  test("$name-asyncExpand", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.asyncExpand((x) => new Stream.fromIterable([x + 1]));
-    Expect.equals(s.isBroadcast, newStream.isBroadcast);
-    newStream.single.then(expectAsync((v) {
-      Expect.equals(43, v);
-    }));
-    c.add(42);
-    c.close();
-  });
-
-  // The following tests are only on broadcast streams, they require listening
-  // more than once.
-  if (name.startsWith("singlesub")) return;
-
-  test("$name-skip-multilisten", () {
-    if (name.startsWith("singlesub") || name.startsWith("asBroadcast")) return;
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.skip(5);
-    // Listen immediately, to ensure that an asBroadcast stream is started.
-    var sub = newStream.listen((_) {});
-    int i = 0;
-    var expect1 = 11;
-    var expect2 = 21;
-    var handler2 = expectAsync((v) {
-      expect(v, expect2);
-      expect2++;
-    }, count: 5);
-    var handler1 = expectAsync((v) {
-      expect(v, expect1);
-      expect1++;
-    }, count: 15);
-    var loop;
-    loop = expectAsync(() {
-      i++;
-      c.add(i);
-      if (i == 5) {
-        scheduleMicrotask(() {
-          newStream.listen(handler1);
-        });
-      }
-      if (i == 15) {
-        scheduleMicrotask(() {
-          newStream.listen(handler2);
-        });
-      }
-      if (i < 25) {
-        scheduleMicrotask(loop);
-      } else {
-        sub.cancel();
-        c.close();
-      }
-    }, count: 25);
-    scheduleMicrotask(loop);
-  });
-
-  test("$name-take-multilisten", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.take(10);
-    // Listen immediately, to ensure that an asBroadcast stream is started.
-    var sub = newStream.listen((_) {});
-    int i = 0;
-    var expect1 = 6;
-    var expect2 = 11;
-    var handler2 = expectAsync((v) {
-      expect(v, expect2);
-      expect(v <= 20, isTrue);
-      expect2++;
-    }, count: 10);
-    var handler1 = expectAsync((v) {
-      expect(v, expect1);
-      expect(v <= 15, isTrue);
-      expect1++;
-    }, count: 10);
-    var loop;
-    loop = expectAsync(() {
-      i++;
-      c.add(i);
-      if (i == 5) {
-        scheduleMicrotask(() {
-          newStream.listen(handler1);
-        });
-      }
-      if (i == 10) {
-        scheduleMicrotask(() {
-          newStream.listen(handler2);
-        });
-      }
-      if (i < 25) {
-        scheduleMicrotask(loop);
-      } else {
-        sub.cancel();
-        c.close();
-      }
-    }, count: 25);
-    scheduleMicrotask(loop);
-  });
-
-  test("$name-skipWhile-multilisten", () {
-    if (name.startsWith("singlesub") || name.startsWith("asBroadcast")) return;
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.skipWhile((x) => (x % 10) != 1);
-    // Listen immediately, to ensure that an asBroadcast stream is started.
-    var sub = newStream.listen((_) {});
-    int i = 0;
-    var expect1 = 11;
-    var expect2 = 21;
-    var handler2 = expectAsync((v) {
-      expect(v, expect2);
-      expect2++;
-    }, count: 5);
-    var handler1 = expectAsync((v) {
-      expect(v, expect1);
-      expect1++;
-    }, count: 15);
-    var loop;
-    loop = expectAsync(() {
-      i++;
-      c.add(i);
-      if (i == 5) {
-        scheduleMicrotask(() {
-          newStream.listen(handler1);
-        });
-      }
-      if (i == 15) {
-        scheduleMicrotask(() {
-          newStream.listen(handler2);
-        });
-      }
-      if (i < 25) {
-        scheduleMicrotask(loop);
-      } else {
-        sub.cancel();
-        c.close();
-      }
-    }, count: 25);
-    scheduleMicrotask(loop);
-  });
-
-  test("$name-takeWhile-multilisten", () {
-    var c = create();
-    var s = getStream(c);
-    Stream newStream = s.takeWhile((x) => (x % 10) != 5);
-    // Listen immediately, to ensure that an asBroadcast stream is started.
-    var sub = newStream.listen((_) {});
-    int i = 0;
-    // Non-overlapping ranges means the test must not remember its first
-    // failure.
-    var expect1 = 6;
-    var expect2 = 16;
-    var handler2 = expectAsync((v) {
-      expect(v, expect2);
-      expect(v <= 25, isTrue);
-      expect2++;
-    }, count: 9);
-    var handler1 = expectAsync((v) {
-      expect(v, expect1);
-      expect(v <= 15, isTrue);
-      expect1++;
-    }, count: 9);
-    var loop;
-    loop = expectAsync(() {
-      i++;
-      c.add(i);
-      if (i == 5) {
-        scheduleMicrotask(() {
-          newStream.listen(handler1);
-        });
-      }
-      if (i == 15) {
-        scheduleMicrotask(() {
-          newStream.listen(handler2);
-        });
-      }
-      if (i < 25) {
-        scheduleMicrotask(loop);
-      } else {
-        sub.cancel();
-        c.close();
-      }
-    }, count: 25);
-    scheduleMicrotask(loop);
-  });
-}
diff --git a/tests/lib/async/stream_transformer_from_handlers_test.dart b/tests/lib/async/stream_transformer_from_handlers_test.dart
deleted file mode 100644
index cf54dc8..0000000
--- a/tests/lib/async/stream_transformer_from_handlers_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-import 'event_helper.dart';
-
-get currentStackTrace {
-  try {
-    throw 0;
-  } catch (e, st) {
-    return st;
-  }
-}
-
-// In most cases the callback will be 'asyncEnd'. Errors are reported
-// asynchronously. We want to give them time to surface before reporting
-// asynchronous tests as done.
-void delayCycles(callback, int nbCycles) {
-  if (nbCycles == 0) {
-    callback();
-    return;
-  }
-  Timer.run(() {
-    delayCycles(callback, nbCycles - 1);
-  });
-}
-
-main() {
-  // Make sure the generic types are correct.
-  asyncStart();
-  var stackTrace = currentStackTrace;
-  var events = [];
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.add(499);
-    controller.addError(42, stackTrace);
-    controller.close();
-  });
-  controller.stream
-      .transform(new StreamTransformer<int, String>.fromHandlers(
-          handleData: (int data, EventSink<String> sink) {
-    sink.add(data.toString());
-  }, handleError: (e, st, EventSink<String> sink) {
-    sink.add(e.toString());
-    sink.addError(e, st);
-  }, handleDone: (EventSink<String> sink) {
-    sink.add("done");
-    sink.close();
-  }))
-      .listen((data) => events.add(data), onError: (e, st) {
-    events.add(e);
-    events.add(st);
-  }, onDone: () {
-    Expect.listEquals(["499", "42", 42, stackTrace, "done"], events);
-    delayCycles(asyncEnd, 3);
-  });
-}
diff --git a/tests/lib/async/stream_transformer_test.dart b/tests/lib/async/stream_transformer_test.dart
deleted file mode 100644
index 7ebffbe..0000000
--- a/tests/lib/async/stream_transformer_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-import 'event_helper.dart';
-
-_defaultData(x) {}
-_defaultError(e, [st]) {}
-_defaultDone() {}
-
-/// Dummy StreamSubscription.
-class MyStreamSubscription<T> implements StreamSubscription<T> {
-  final Stream stream;
-  final bool cancelOnError;
-  Function handleData = null;
-  Function handleError = null;
-  Function handleDone = null;
-
-  MyStreamSubscription(this.stream, this.cancelOnError);
-
-  Future cancel() => null;
-  void onData(void handleData(T data)) {
-    this.handleData = handleData == null ? _defaultData : handleData;
-  }
-
-  void onError(Function handleError) {
-    this.handleError = handleError == null ? _defaultError : handleError;
-  }
-
-  void onDone(void handleDone()) {
-    this.handleDone = handleDone == null ? _defaultDone : handleDone;
-  }
-
-  void pause([Future resumeSignal]) {}
-  void resume() {}
-
-  final isPaused = false;
-  Future asFuture([var futureValue]) => null;
-}
-
-main() {
-  var transformer = new StreamTransformer<int, String>(
-      (stream, cancelOnError) =>
-          new MyStreamSubscription(stream, cancelOnError));
-
-  var controller = new StreamController(sync: true);
-  var stream = controller.stream;
-  var transformed = stream.transform(transformer);
-
-  var handleData = (String _) => 499;
-  var handleError = (e, st) => 42;
-  var handleDone = () => 99;
-
-  var subscription =
-      transformed.listen(handleData, onError: handleError, onDone: handleDone);
-
-  Expect.identical(stream, subscription.stream);
-  Expect.equals(false, subscription.cancelOnError);
-  Expect.identical(handleData, subscription.handleData);
-  Expect.identical(handleError, subscription.handleError);
-  Expect.identical(handleDone, subscription.handleDone);
-
-  // Note that we reuse the transformer.
-
-  controller = new StreamController(sync: true);
-  stream = controller.stream;
-  transformed = stream.transform(transformer);
-  subscription = transformed.listen(null);
-
-  Expect.identical(stream, subscription.stream);
-  Expect.equals(false, subscription.cancelOnError);
-  Expect.identical(_defaultData, subscription.handleData);
-  Expect.identical(_defaultError, subscription.handleError);
-  Expect.identical(_defaultDone, subscription.handleDone);
-
-  controller = new StreamController(sync: true);
-  stream = controller.stream;
-  transformed = stream.transform(transformer);
-  subscription =
-      transformed.listen(null, onDone: handleDone, cancelOnError: true);
-
-  Expect.identical(stream, subscription.stream);
-  Expect.equals(true, subscription.cancelOnError);
-  Expect.identical(_defaultData, subscription.handleData);
-  Expect.identical(_defaultError, subscription.handleError);
-  Expect.identical(handleDone, subscription.handleDone);
-}
diff --git a/tests/lib/async/stream_type_test.dart b/tests/lib/async/stream_type_test.dart
deleted file mode 100644
index 2a76d73..0000000
--- a/tests/lib/async/stream_type_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2013, 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:async";
-import "package:expect/expect.dart";
-
-class TypeTest<T, NT> {
-  void call(object, name) {
-    Expect.isTrue(object is T, "$name is $T");
-    Expect.isFalse(object is NT, "$name is! $NT");
-  }
-}
-
-main() {
-  var checkIntStream = new TypeTest<Stream<int>, Stream<String>>();
-  var checkIntFuture = new TypeTest<Future<int>, Future<String>>();
-  var checkBoolFuture = new TypeTest<Future<bool>, Future<String>>();
-  var checkStringFuture = new TypeTest<Future<String>, Future<int>>();
-  var checkIntSetFuture = new TypeTest<Future<Set<int>>, Future<Set<String>>>();
-  var checkIntListFuture =
-      new TypeTest<Future<List<int>>, Future<List<String>>>();
-  var checkIntSubscription =
-      new TypeTest<StreamSubscription<int>, StreamSubscription<String>>();
-
-  // Generic function used as parameter for, e.g., `skipWhile` and `reduce`.
-  f([_1, _2]) => throw "unreachable";
-
-  bool testIntStream(stream(), name, int recursionDepth) {
-    checkIntStream(stream(), name);
-    if (recursionDepth > 0) {
-      checkIntSubscription(stream().listen(null), "$name.listen");
-
-      checkIntFuture(stream().first, "$name.first");
-      checkIntFuture(stream().last, "$name.last");
-      checkIntFuture(stream().single, "$name.single");
-      checkIntFuture(stream().singleWhere(f), "$name.singleWhere");
-      checkIntFuture(stream().elementAt(2), "$name.elementAt");
-      checkIntFuture(stream().reduce(f), "$name.reduce");
-      checkIntListFuture(stream().toList(), "$name.toList");
-      checkIntSetFuture(stream().toSet(), "$name.toSert");
-
-      checkIntFuture(stream().length, "$name.length");
-      checkBoolFuture(stream().isEmpty, "$name.is");
-      checkBoolFuture(stream().any(f), "$name.any");
-      checkBoolFuture(stream().every(f), "$name.every");
-      checkBoolFuture(stream().contains(null), "$name.contains");
-      checkStringFuture(stream().join(), "$name.join");
-
-      var n = recursionDepth - 1;
-      testIntStream(() => stream().where(f), "$name.where", n);
-      testIntStream(() => stream().take(2), "$name.take", n);
-      testIntStream(() => stream().takeWhile(f), "$name.takeWhile", n);
-      testIntStream(() => stream().skip(2), "$name.skip", n);
-      testIntStream(() => stream().skipWhile(f), "$name.skipWhile", n);
-      testIntStream(() => stream().distinct(f), "$name.distinct", n);
-      testIntStream(() => stream().handleError(f), "$name.handleError", n);
-      testIntStream(
-          () => stream().asBroadcastStream(), "$name.asBroadcastStream", n);
-    }
-  }
-
-  testIntStream(() => new StreamController<int>().stream, "Stream<int>", 3);
-  testIntStream(() => new StreamController<int>.broadcast().stream,
-      "BroadcastStream<int>", 3);
-}
diff --git a/tests/lib/async/stream_view_test.dart b/tests/lib/async/stream_view_test.dart
deleted file mode 100644
index 40ddea8..0000000
--- a/tests/lib/async/stream_view_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Tests the StreamView class.
-
-import "package:expect/expect.dart";
-import "dart:async";
-import "package:async_helper/async_helper.dart";
-
-main() {
-  asyncStart();
-  runTest().whenComplete(asyncEnd);
-}
-
-Future runTest() async {
-  unreachable([a, b]) {
-    throw "UNREACHABLE";
-  }
-
-  int tick = 0;
-  ticker() {
-    tick++;
-  }
-
-  asyncStart();
-
-  // Is const constructor.
-  Stream<int> s = const StreamView<int>(const Stream<int>.empty());
-
-  Expect.isFalse(s is Stream<String>); // Respects type parameter.
-  StreamSubscription<int> sub =
-      s.listen(unreachable, onError: unreachable, onDone: ticker);
-  Expect.isFalse(sub is StreamSubscription<String>); // Type parameter in sub.
-
-  Stream iterableStream = new Stream.fromIterable([1, 2, 3]);
-  Expect.listEquals([1, 2, 3], await iterableStream.toList());
-
-  asyncEnd();
-}
-
-Future flushMicrotasks() => new Future.delayed(Duration.ZERO);
diff --git a/tests/lib/async/stream_zones_test.dart b/tests/lib/async/stream_zones_test.dart
deleted file mode 100644
index d87eb94..0000000
--- a/tests/lib/async/stream_zones_test.dart
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright (c) 2014, 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:async_helper/async_helper.dart';
-import "package:expect/expect.dart";
-import 'dart:async';
-
-/// StreamController in nested runZoned. Trivial.
-test1() {
-  var events = [];
-  var done = new Completer();
-  runZoned(() {
-    runZoned(() {
-      var c = new StreamController();
-      c.stream.listen((x) => events.add("stream: $x"),
-          onError: (x) => events.add("stream: error $x"),
-          onDone: done.complete);
-      c.add(1);
-      c.addError(2);
-      c.close();
-    }, onError: (x) => events.add("rza: error $x"));
-  }, onError: (x) => events.add("rzb: error $x"));
-  return [
-    done.future,
-    () {
-      Expect.listEquals(["stream: 1", "stream: error 2"], events);
-    }
-  ];
-}
-
-/// Adding errors to the stream controller from an outside zone.
-test2() {
-  var events = [];
-  var done = new Completer();
-  runZoned(() {
-    var c;
-    runZoned(() {
-      c = new StreamController();
-      c.stream.listen((x) => events.add("stream: $x"),
-          onError: (x) => events.add("stream: error $x"),
-          onDone: done.complete);
-    }, onError: (x) => events.add("rza: error $x"));
-    c.add(1);
-    c.addError(2);
-    c.close();
-  }, onError: (x) => events.add("rzb: error $x"));
-  return [
-    done.future,
-    () {
-      Expect.listEquals(["stream: 1", "stream: error 2"], events);
-    }
-  ];
-}
-
-/// Adding errors to the stream controller from a more nested zone.
-test3() {
-  var events = [];
-  var done = new Completer();
-  runZoned(() {
-    var c = new StreamController();
-    c.stream.listen((x) => events.add("stream: $x"),
-        onError: (x) => events.add("stream: error $x"), onDone: done.complete);
-    runZoned(() {
-      c.add(1);
-      c.addError(2);
-      c.close();
-    }, onError: (x) => events.add("rza: error $x"));
-  }, onError: (x) => events.add("rzb: error $x"));
-  return [
-    done.future,
-    () {
-      Expect.listEquals(["stream: 1", "stream: error 2"], events);
-    }
-  ];
-}
-
-/// Feeding a stream from a different zone into another controller.
-test4() {
-  var events = [];
-  var done = new Completer();
-  runZoned(() {
-    var c = new StreamController();
-    c.stream.listen((x) => events.add("stream: $x"),
-        onError: (x) => events.add("stream: error $x"), onDone: done.complete);
-    runZoned(() {
-      var c2 = new StreamController();
-      c.addStream(c2.stream).whenComplete(c.close);
-      c2.add(1);
-      c2.addError(2);
-      c2.close();
-    }, onError: (x) => events.add("rza: error $x"));
-  }, onError: (x) => events.add("rzb: error $x"));
-  return [
-    done.future,
-    () {
-      Expect.listEquals(["stream: 1", "stream: error 2"], events);
-    }
-  ];
-}
-
-/// Feeding a stream from a different zone into another controller.
-/// This time nesting is reversed wrt test4.
-test5() {
-  var events = [];
-  var done = new Completer();
-  runZoned(() {
-    var c;
-    runZoned(() {
-      c = new StreamController();
-      c.stream.listen((x) => events.add("stream: $x"),
-          onError: (x) => events.add("stream: error $x"),
-          onDone: done.complete);
-    }, onError: (x) => events.add("rza: error $x"));
-    var c2 = new StreamController();
-    c.addStream(c2.stream).whenComplete(c.close);
-    c2.add(1);
-    c2.addError(2);
-    c2.close();
-  }, onError: (x) => events.add("rzb: error $x"));
-  return [
-    done.future,
-    () {
-      Expect.listEquals(["stream: 1", "stream: error 2"], events);
-    }
-  ];
-}
-
-test6() {
-  var events = [];
-  var done = new Completer();
-  var c;
-  runZoned(() {
-    c = new StreamController();
-    c.stream.listen((x) => events.add("stream: $x"),
-        onError: (x) => events.add("stream: error $x"), onDone: done.complete);
-  }, onError: (x) => events.add("rza: error $x"));
-  runZoned(() {
-    var c2 = new StreamController();
-    c.addStream(c2.stream).whenComplete(c.close);
-    c2.add(1);
-    c2.addError(2);
-    c2.close();
-  }, onError: (x) => events.add("rzb: error $x"));
-  return [
-    done.future,
-    () {
-      Expect.listEquals(["stream: 1", "stream: error 2"], events);
-    }
-  ];
-}
-
-/// Adding errors to the stream controller from a parallel zone.
-test7() {
-  var events = [];
-  var done = new Completer();
-  var c;
-  runZoned(() {
-    c = new StreamController();
-    c.stream.listen((x) => events.add("stream: $x"),
-        onError: (x) => events.add("stream: error $x"), onDone: done.complete);
-  }, onError: (x) => events.add("rza: error $x"));
-  runZoned(() {
-    c.add(1);
-    c.addError(2);
-    c.close();
-  }, onError: (x) => events.add("rzb: error $x"));
-  return [
-    done.future,
-    () {
-      Expect.listEquals(["stream: 1", "stream: error 2"], events);
-    }
-  ];
-}
-
-main() {
-  asyncStart();
-
-  var tests = [
-    test1(),
-    test2(),
-    test3(),
-    test4(),
-    test5(),
-    test6(),
-    test7(),
-  ];
-
-  Future.wait(tests.map((l) => l.first)).then((_) {
-    // Give time to complete all pending actions.
-    Timer.run(() {
-      tests.forEach((l) => (l.last)());
-      asyncEnd();
-    });
-  });
-}
diff --git a/tests/lib/async/timer_cancel1_test.dart b/tests/lib/async/timer_cancel1_test.dart
deleted file mode 100644
index fdd806e..0000000
--- a/tests/lib/async/timer_cancel1_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-library timer_cancel1_test;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-main() {
-  // Test that a timeout handler can cancel another.
-  test("timer cancel1 test", () {
-    var canceleeTimer;
-    var cancelerTimer;
-
-    void unreachable() {
-      fail("A canceled timeout handler should be unreachable.");
-    }
-
-    void handler() {
-      canceleeTimer.cancel();
-    }
-
-    cancelerTimer =
-        new Timer(const Duration(milliseconds: 1), expectAsync(handler));
-    canceleeTimer = new Timer(
-        const Duration(milliseconds: 1000), expectAsync(unreachable, count: 0));
-  });
-}
diff --git a/tests/lib/async/timer_cancel2_test.dart b/tests/lib/async/timer_cancel2_test.dart
deleted file mode 100644
index ac1460d..0000000
--- a/tests/lib/async/timer_cancel2_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// 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.
-
-library timer_cancel2_test;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-main() {
-  // Test that a timeout handler can cancel itself.
-  test("timer cancel test 2", () {
-    var cancelTimer;
-
-    void cancelHandler(Timer timer) {
-      cancelTimer.cancel();
-    }
-
-    cancelTimer = new Timer.periodic(
-        const Duration(milliseconds: 1), expectAsync(cancelHandler));
-  });
-}
diff --git a/tests/lib/async/timer_cancel_test.dart b/tests/lib/async/timer_cancel_test.dart
deleted file mode 100644
index d539cb7..0000000
--- a/tests/lib/async/timer_cancel_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-
-library timer_cancel_test;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-main() {
-  final ms = const Duration(milliseconds: 1);
-  test("simple timer", () {
-    Timer cancelTimer;
-    int repeatTimer;
-
-    void unreachable() {
-      fail("should not be reached");
-    }
-
-    void handler() {
-      cancelTimer.cancel();
-    }
-
-    void repeatHandler(Timer timer) {
-      repeatTimer++;
-      timer.cancel();
-      expect(repeatTimer, 1);
-    }
-
-    cancelTimer = new Timer(ms * 1000, expectAsync(unreachable, count: 0));
-    cancelTimer.cancel();
-    new Timer(ms * 1000, expectAsync(handler));
-    cancelTimer = new Timer(ms * 2000, expectAsync(unreachable, count: 0));
-    repeatTimer = 0;
-    new Timer.periodic(ms * 1500, expectAsync(repeatHandler));
-  });
-
-  test("cancel timer with same time", () {
-    var t2;
-    var t1 = new Timer(ms * 0, expectAsync(() => t2.cancel()));
-    t2 = new Timer(ms * 0, expectAsync(t1.cancel, count: 0));
-  });
-}
diff --git a/tests/lib/async/timer_isActive_test.dart b/tests/lib/async/timer_isActive_test.dart
deleted file mode 100644
index b116d7f..0000000
--- a/tests/lib/async/timer_isActive_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2011, 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:async';
-import 'package:unittest/unittest.dart';
-
-main() {
-  test("timer isActive test", () {
-    Timer t;
-
-    t = new Timer(const Duration(seconds: 1),
-        expectAsync(() => expect(t.isActive, equals(false))));
-    expect(t.isActive, equals(true));
-  });
-
-  test("periodic timer cancel test", () {
-    Timer t;
-
-    int i = 0;
-    void checkActive(Timer timer) {
-      expect(t.isActive, equals(true));
-      if (i == 2) {
-        t.cancel();
-        expect(t.isActive, equals(false));
-      }
-      i++;
-    }
-
-    t = new Timer.periodic(
-        new Duration(milliseconds: 1), expectAsync(checkActive, count: 3));
-    expect(t.isActive, equals(true));
-  });
-
-  test("timer cancel test", () {
-    Timer timer = new Timer(
-        const Duration(seconds: 15), () => fail("Should not be reached."));
-    Timer.run(expectAsync(() {
-      expect(timer.isActive, equals(true));
-      timer.cancel();
-      expect(timer.isActive, equals(false));
-    }));
-  });
-}
diff --git a/tests/lib/async/timer_not_available_test.dart b/tests/lib/async/timer_not_available_test.dart
deleted file mode 100644
index fcbcc13..0000000
--- a/tests/lib/async/timer_not_available_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2011, 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 timerNotAvailable;
-
-import 'package:expect/expect.dart';
-import 'dart:async';
-
-main() {
-  final ms = const Duration(milliseconds: 1);
-  bool failed = false;
-  try {
-    new Timer(ms * 5, () {});
-  } on UnsupportedError catch (e) {
-    failed = true;
-  }
-  Expect.isTrue(failed);
-  failed = false;
-  try {
-    var t = new Timer.periodic(ms * 10, (_) {});
-    t.cancel();
-  } on UnsupportedError catch (e) {
-    failed = true;
-  }
-  Expect.isTrue(failed);
-}
diff --git a/tests/lib/async/timer_regress22626_test.dart b/tests/lib/async/timer_regress22626_test.dart
deleted file mode 100644
index d340433..0000000
--- a/tests/lib/async/timer_regress22626_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Test that no wakeups are being dropped if we cancel timers.
-// WARNING: For this test to work it cannot rely on any other async features
-// and will just timeout if it is failing.
-
-library timer_regress22626_test;
-
-import 'dart:async';
-import 'dart:math';
-import 'package:expect/expect.dart';
-
-int countdown = 5;
-var rng = new Random(1234);
-
-void test(int delay, int delta) {
-  var t0 = new Timer(new Duration(milliseconds: delay + delta),
-      () => Expect.fail("should have been cancelled by now"));
-  new Timer(Duration.ZERO, () => t0.cancel());
-  new Timer(
-      Duration.ZERO,
-      () => new Timer(new Duration(milliseconds: delay), () {
-            if (--countdown == 0) {
-              print("done");
-            } else {
-              test(delay, max(0, delta + rng.nextInt(2) - 1));
-            }
-          }));
-}
-
-void main() {
-  test(200, 2);
-}
diff --git a/tests/lib/async/timer_repeat_test.dart b/tests/lib/async/timer_repeat_test.dart
deleted file mode 100644
index c4261d3..0000000
--- a/tests/lib/async/timer_repeat_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// 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.
-
-library timer_repeat_test;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-const Duration TIMEOUT = const Duration(milliseconds: 500);
-const int ITERATIONS = 5;
-
-Timer timer;
-Stopwatch stopwatch = new Stopwatch();
-int iteration;
-
-// Some browsers (Firefox and IE so far) can trigger too early. Add a safety
-// margin. We use identical(1, 1.0) as an easy way to know if the test is
-// compiled by dart2js.
-int get safetyMargin => identical(1, 1.0) ? 100 : 0;
-
-void timeoutHandler(Timer timer) {
-  iteration++;
-  expect(iteration, lessThanOrEqualTo(ITERATIONS));
-  if (iteration == ITERATIONS) {
-    // When we are done with all of the iterations, we expect a
-    // certain amount of time to have passed.  Checking the time on
-    // each iteration doesn't work because the timeoutHandler runs
-    // concurrently with the periodic timer.
-    expect(stopwatch.elapsedMilliseconds + safetyMargin,
-        greaterThanOrEqualTo(ITERATIONS * TIMEOUT.inMilliseconds));
-    timer.cancel();
-  }
-}
-
-main() {
-  test("timer_repeat", () {
-    iteration = 0;
-    stopwatch.start();
-    timer = new Timer.periodic(
-        TIMEOUT, expectAsync(timeoutHandler, count: ITERATIONS));
-  });
-}
diff --git a/tests/lib/async/timer_test.dart b/tests/lib/async/timer_test.dart
deleted file mode 100644
index 6a6119d..0000000
--- a/tests/lib/async/timer_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2011, 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 timer_test;
-
-import 'dart:async';
-import 'package:unittest/unittest.dart';
-
-const int STARTTIMEOUT = 1050;
-const int DECREASE = 200;
-const int ITERATIONS = 5;
-
-Stopwatch stopwatch = new Stopwatch();
-int timeout;
-int iteration;
-
-// Some browsers (Firefox and IE so far) can trigger too early. Add a safety
-// margin. We use identical(1, 1.0) as an easy way to know if the test is
-// compiled by dart2js.
-int get safetyMargin => identical(1, 1.0) ? 100 : 0;
-
-void timeoutHandler() {
-  expect(stopwatch.elapsedMilliseconds + safetyMargin,
-      greaterThanOrEqualTo(timeout));
-  if (iteration < ITERATIONS) {
-    iteration++;
-    timeout = timeout - DECREASE;
-    Duration duration = new Duration(milliseconds: timeout);
-    stopwatch.reset();
-    new Timer(duration, expectAsync(timeoutHandler));
-  }
-}
-
-main() {
-  test("timeout test", () {
-    iteration = 0;
-    timeout = STARTTIMEOUT;
-    Duration duration = new Duration(milliseconds: timeout);
-    stopwatch.start();
-    new Timer(duration, expectAsync(timeoutHandler));
-  });
-}
diff --git a/tests/lib/async/wait_for_cancel_test.dart b/tests/lib/async/wait_for_cancel_test.dart
deleted file mode 100644
index 7c40084..0000000
--- a/tests/lib/async/wait_for_cancel_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2015, 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:async";
-import "package:expect/expect.dart";
-import "package:async_helper/async_helper.dart";
-
-main() {
-  asyncStart();
-
-  bool waitedForCancel = false;
-
-  var controller = new StreamController(
-      onCancel: () => new Future(() => waitedForCancel = true));
-  var sub = controller.stream.take(1).listen((x) {
-    Expect.fail("onData should not be called");
-  });
-  var cancelFuture = sub.cancel();
-  Expect.isNotNull(cancelFuture);
-  cancelFuture.then((_) {
-    Expect.isTrue(waitedForCancel);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_bind_callback_test.dart b/tests/lib/async/zone_bind_callback_test.dart
deleted file mode 100644
index bb73bb7..0000000
--- a/tests/lib/async/zone_bind_callback_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-
-  var valueToCapture;
-  var restoredValue;
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork(specification: new ZoneSpecification(
-      registerCallback:
-          <R>(Zone self, ZoneDelegate parent, Zone origin, R f()) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.current, Zone.ROOT);
-    // Note that not forwarding is completely legal, though not encouraged.
-    var capturedValue = valueToCapture;
-    return parent.registerCallback(origin, () {
-      restoredValue = capturedValue;
-      return f();
-    });
-  }));
-
-  valueToCapture = 499;
-  var fun = () {
-    Expect.identical(forked, Zone.current);
-    return 99;
-  };
-  var registered = forked.bindCallback(fun);
-  Expect.isFalse(identical(fun, registered));
-
-  var result = registered();
-  Expect.equals(99, result);
-  Expect.equals(499, restoredValue);
-}
diff --git a/tests/lib/async/zone_bind_callback_unary_test.dart b/tests/lib/async/zone_bind_callback_unary_test.dart
deleted file mode 100644
index 8395df6..0000000
--- a/tests/lib/async/zone_bind_callback_unary_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-
-  var valueToCapture;
-  var restoredValue;
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork(specification: new ZoneSpecification(
-      registerUnaryCallback:
-          <R, T>(Zone self, ZoneDelegate parent, Zone origin, R f(T arg)) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.current, Zone.ROOT);
-    // Note that not forwarding is completely legal, though not encouraged.
-    var capturedValue = valueToCapture;
-    return parent.registerUnaryCallback(origin, (arg) {
-      restoredValue = capturedValue;
-      return f(arg);
-    });
-  }));
-
-  valueToCapture = 499;
-  var fun = (x) {
-    Expect.identical(forked, Zone.current);
-    return x + 99;
-  };
-  var bound = forked.bindUnaryCallback(fun);
-  Expect.isFalse(identical(fun, bound));
-
-  // It is legal to invoke the callback in a different zone. This is, of course,
-  // extremely discouraged.
-  var result = bound(399);
-  Expect.equals(498, result);
-  Expect.equals(499, restoredValue);
-}
diff --git a/tests/lib/async/zone_bind_test.dart b/tests/lib/async/zone_bind_test.dart
deleted file mode 100644
index fcca4c0..0000000
--- a/tests/lib/async/zone_bind_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  // New zone, does nothing by itself.
-  Zone forked = Zone.current.fork(specification: new ZoneSpecification());
-
-  int ctr = 0;
-  void expectZone([timer]) {
-    Expect.identical(forked, Zone.current);
-    if (timer != null) timer.cancel();
-    if (++ctr == 3) {
-      asyncEnd();
-    }
-  }
-
-  asyncStart();
-  Duration now = const Duration(seconds: 0);
-  // Check that the callback is bound to the zone.
-  forked.scheduleMicrotask(expectZone);
-  forked.createTimer(now, expectZone);
-  forked.createPeriodicTimer(now, expectZone);
-}
diff --git a/tests/lib/async/zone_create_periodic_timer_test.dart b/tests/lib/async/zone_create_periodic_timer_test.dart
deleted file mode 100644
index f9995b2..0000000
--- a/tests/lib/async/zone_create_periodic_timer_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-  List events = [];
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked;
-  forked = Zone.current.fork(specification: new ZoneSpecification(
-      createPeriodicTimer: (Zone self, ZoneDelegate parent, Zone origin,
-          Duration period, f(Timer timer)) {
-    events.add("forked.createPeriodicTimer");
-    return parent.createPeriodicTimer(origin, period, (Timer timer) {
-      events.add("wrapped function ${period.inMilliseconds}");
-      f(timer);
-    });
-  }));
-
-  asyncStart();
-  int tickCount = 0;
-  forked.run(() {
-    new Timer.periodic(const Duration(milliseconds: 5), (Timer timer) {
-      events.add("periodic Timer $tickCount");
-      Expect.identical(forked, Zone.current);
-      tickCount++;
-      if (tickCount == 4) {
-        timer.cancel();
-        // Allow some time in case the cancel didn't work.
-        new Timer(const Duration(milliseconds: 20), done.complete);
-      }
-    });
-  });
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  events.add("after createPeriodicTimer");
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "forked.createPeriodicTimer",
-      "after createPeriodicTimer",
-      "wrapped function 5",
-      "periodic Timer 0",
-      "wrapped function 5",
-      "periodic Timer 1",
-      "wrapped function 5",
-      "periodic Timer 2",
-      "wrapped function 5",
-      "periodic Timer 3"
-    ], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_create_timer2_test.dart b/tests/lib/async/zone_create_timer2_test.dart
deleted file mode 100644
index 39423e5..0000000
--- a/tests/lib/async/zone_create_timer2_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-  List events = [];
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked;
-  forked = Zone.current.fork(specification: new ZoneSpecification(createTimer:
-      (Zone self, ZoneDelegate parent, Zone origin, Duration duration, f()) {
-    events.add("forked.createTimer");
-    return parent.createTimer(origin, duration, () {
-      events.add("wrapped function ${duration.inMilliseconds}");
-      f();
-    });
-  }));
-
-  asyncStart();
-  forked.run(() {
-    Timer timer = new Timer(const Duration(milliseconds: 20), () {
-      events.add("createTimer");
-      Expect.identical(forked, Zone.current);
-      done.complete(true);
-    });
-  });
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  events.add("after createTimer");
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "forked.createTimer",
-      "after createTimer",
-      "wrapped function 20",
-      "createTimer"
-    ], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_create_timer_test.dart b/tests/lib/async/zone_create_timer_test.dart
deleted file mode 100644
index 337e628..0000000
--- a/tests/lib/async/zone_create_timer_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-  List events = [];
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked;
-  forked = Zone.current.fork(specification: new ZoneSpecification(createTimer:
-      (Zone self, ZoneDelegate parent, Zone origin, Duration duration, f()) {
-    events.add("forked.createTimer");
-    return parent.createTimer(origin, duration, () {
-      events.add("wrapped function ${duration.inMilliseconds}");
-      f();
-    });
-  }));
-
-  asyncStart();
-  forked.run(() {
-    new Timer(Duration.ZERO, () {
-      events.add("createTimer");
-      Expect.identical(forked, Zone.current);
-      done.complete(true);
-    });
-  });
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  events.add("after createTimer");
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "forked.createTimer",
-      "after createTimer",
-      "wrapped function 0",
-      "createTimer"
-    ], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_debug_test.dart b/tests/lib/async/zone_debug_test.dart
deleted file mode 100644
index ca85354..0000000
--- a/tests/lib/async/zone_debug_test.dart
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-import 'dart:collection';
-
-/**
- * We represent the current stack trace by an integer. From time to time we
- * increment the variable. This corresponds to a new stack trace.
- */
-int stackTrace = 0;
-List restoredStackTrace = [];
-
-List events = [];
-
-ZoneCallback<R> debugZoneRegisterCallback<R>(
-    Zone self, ZoneDelegate parent, Zone origin, R f()) {
-  List savedTrace = [stackTrace]..addAll(restoredStackTrace);
-  return parent.registerCallback(origin, () {
-    restoredStackTrace = savedTrace;
-    return f();
-  });
-}
-
-ZoneUnaryCallback<R, T> debugZoneRegisterUnaryCallback<R, T>(
-    Zone self, ZoneDelegate parent, Zone origin, R f(T arg)) {
-  List savedTrace = [stackTrace]..addAll(restoredStackTrace);
-  return parent.registerUnaryCallback(origin, (arg) {
-    restoredStackTrace = savedTrace;
-    return f(arg);
-  });
-}
-
-T debugZoneRun<T>(Zone self, ZoneDelegate parent, Zone origin, T f()) {
-  stackTrace++;
-  restoredStackTrace = [];
-  return parent.run(origin, f);
-}
-
-R debugZoneRunUnary<R, T>(
-    Zone self, ZoneDelegate parent, Zone origin, R f(T arg), T arg) {
-  stackTrace++;
-  restoredStackTrace = [];
-  return parent.runUnary(origin, f, arg);
-}
-
-List expectedDebugTrace;
-
-void debugUncaughtHandler(
-    Zone self, ZoneDelegate parent, Zone origin, error, StackTrace stackTrace) {
-  events.add("handling uncaught error $error");
-  Expect.listEquals(expectedDebugTrace, restoredStackTrace);
-  // Suppress the error and don't propagate to parent.
-}
-
-const DEBUG_SPECIFICATION = const ZoneSpecification(
-    registerCallback: debugZoneRegisterCallback,
-    registerUnaryCallback: debugZoneRegisterUnaryCallback,
-    run: debugZoneRun,
-    runUnary: debugZoneRunUnary,
-    handleUncaughtError: debugUncaughtHandler);
-
-main() {
-  Completer done = new Completer();
-
-  // runGuarded calls run, captures the synchronous error (if any) and
-  // gives that one to handleUncaughtError.
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked;
-  forked = Zone.current.fork(specification: DEBUG_SPECIFICATION);
-
-  asyncStart();
-
-  int openTests = 0;
-
-  openTests++;
-  forked.run(() {
-    int forkTrace = stackTrace;
-    scheduleMicrotask(() {
-      int scheduleMicrotaskTrace = stackTrace;
-      scheduleMicrotask(() {
-        expectedDebugTrace = [scheduleMicrotaskTrace, forkTrace];
-        openTests--;
-        if (openTests == 0) {
-          done.complete();
-        }
-        throw "foo";
-      });
-      expectedDebugTrace = [forkTrace];
-      throw "bar";
-    });
-  });
-
-  Expect.listEquals([], restoredStackTrace);
-  Zone forked2 = forked.fork();
-  Zone forked3 = forked2.fork();
-  int fork2Trace;
-  int fork3Trace;
-  var f2;
-  var globalTrace = stackTrace;
-  var f = forked3.bindCallback(() {
-    Expect.identical(forked3, Zone.current);
-    fork2Trace = stackTrace;
-    f2 = forked2.bindCallback(() {
-      Expect.identical(forked2, Zone.current);
-      Expect.listEquals([fork2Trace, globalTrace], restoredStackTrace);
-      fork3Trace = stackTrace;
-      openTests--;
-      if (openTests == 0) {
-        done.complete();
-      }
-      scheduleMicrotask(() {
-        expectedDebugTrace = [fork3Trace, fork2Trace, globalTrace];
-        throw "gee";
-      });
-    });
-  });
-  openTests++;
-  f();
-  f2();
-
-  done.future.whenComplete(() {
-    // We don't really care for the order.
-    events.sort();
-    Expect.listEquals([
-      "handling uncaught error bar",
-      "handling uncaught error foo",
-      "handling uncaught error gee"
-    ], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_empty_description2_test.dart b/tests/lib/async/zone_empty_description2_test.dart
deleted file mode 100644
index ce123e9..0000000
--- a/tests/lib/async/zone_empty_description2_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-testEmptyZoneSpecification() {
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork();
-  Expect.isFalse(identical(Zone.ROOT, forked));
-
-  asyncStart();
-  bool timerDidRun = false;
-  forked.createTimer(const Duration(milliseconds: 20), () {
-    // The createTimer function on the Zone binds the closures.
-    Expect.identical(forked, Zone.current);
-    timerDidRun = true;
-    asyncEnd();
-  });
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  asyncStart();
-  int periodicTimerCount = 0;
-  forked.createPeriodicTimer(const Duration(milliseconds: 20), (Timer timer) {
-    periodicTimerCount++;
-    if (periodicTimerCount == 4) {
-      timer.cancel();
-      asyncEnd();
-    }
-    // The createPeriodicTimer function on the Zone binds the closures.
-    Expect.identical(forked, Zone.current);
-  });
-  Expect.identical(Zone.ROOT, Zone.current);
-}
-
-main() {
-  testEmptyZoneSpecification();
-}
diff --git a/tests/lib/async/zone_empty_description_test.dart b/tests/lib/async/zone_empty_description_test.dart
deleted file mode 100644
index 30e494f..0000000
--- a/tests/lib/async/zone_empty_description_test.dart
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-testForkedZone(Zone forked) {
-  var result;
-  result = forked.run(() {
-    Expect.identical(forked, Zone.current);
-    return 499;
-  });
-  Expect.equals(499, result);
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  result = forked.runUnary((x) {
-    Expect.equals(42, x);
-    Expect.identical(forked, Zone.current);
-    return -499;
-  }, 42);
-  Expect.equals(-499, result);
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  bool runGuardedDidRun = false;
-  forked.runGuarded(() {
-    runGuardedDidRun = true;
-    Expect.identical(forked, Zone.current);
-  });
-  Expect.identical(Zone.ROOT, Zone.current);
-  Expect.isTrue(runGuardedDidRun);
-
-  runGuardedDidRun = false;
-  forked.runUnaryGuarded((x) {
-    runGuardedDidRun = true;
-    Expect.equals(42, x);
-    Expect.identical(forked, Zone.current);
-  }, 42);
-  Expect.identical(Zone.ROOT, Zone.current);
-  Expect.isTrue(runGuardedDidRun);
-
-  var callback = () => 499;
-  Expect.identical(callback, forked.registerCallback(callback));
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  var callback1 = (x) => 42 + x;
-  Expect.identical(callback1, forked.registerUnaryCallback(callback1));
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  asyncStart();
-  bool asyncDidRun = false;
-  forked.scheduleMicrotask(() {
-    Expect.identical(forked, Zone.current);
-    asyncDidRun = true;
-    asyncEnd();
-  });
-  Expect.isFalse(asyncDidRun);
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  asyncStart();
-  bool timerDidRun = false;
-  forked.createTimer(const Duration(milliseconds: 0), () {
-    Expect.identical(forked, Zone.current);
-    timerDidRun = true;
-    asyncEnd();
-  });
-  Expect.identical(Zone.ROOT, Zone.current);
-}
-
-main() {
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork();
-  Expect.isFalse(identical(Zone.ROOT, forked));
-  testForkedZone(forked);
-  Zone forkedChild = forked.fork();
-  testForkedZone(forkedChild);
-}
diff --git a/tests/lib/async/zone_error_callback_test.dart b/tests/lib/async/zone_error_callback_test.dart
deleted file mode 100644
index 5ad373e..0000000
--- a/tests/lib/async/zone_error_callback_test.dart
+++ /dev/null
@@ -1,344 +0,0 @@
-// Copyright (c) 2014, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  asyncStart();
-  testNoChange();
-  testWithReplacement();
-  asyncEnd();
-}
-
-class MockStack implements StackTrace {
-  final int id;
-  const MockStack(this.id);
-  String toString() => "MocKStack($id)";
-}
-
-const stack1 = const MockStack(1);
-const stack2 = const MockStack(2);
-
-class SomeError implements Error {
-  final int id;
-  const SomeError(this.id);
-  StackTrace get stackTrace => stack2;
-  String toString() => "SomeError($id)";
-}
-
-const error1 = const SomeError(1);
-const error2 = const SomeError(2);
-
-Null expectError(e, s) {
-  // Remember one asyncStart per use of this callback.
-  Expect.identical(error1, e);
-  Expect.identical(stack1, s);
-  asyncEnd();
-  return null;
-}
-
-Null expectErrorOnly(e, s) {
-  // Remember one asyncStart per use of this callback.
-  Expect.identical(error1, e);
-  asyncEnd();
-  return null;
-}
-
-AsyncError replace(self, parent, zone, e, s) {
-  if (e == "ignore") return null; // For testing handleError throwing.
-  Expect.identical(error1, e); // Ensure replacement only called once
-  return new AsyncError(error2, stack2);
-}
-
-var replaceZoneSpec = new ZoneSpecification(errorCallback: replace);
-
-// Expectation after replacing.
-Null expectReplaced(e, s) {
-  Expect.identical(error2, e);
-  Expect.identical(stack2, s);
-  asyncEnd();
-  return null;
-}
-
-void testProgrammaticErrors(expectError) {
-  {
-    asyncStart();
-    Completer c = new Completer();
-    c.future.catchError(expectError);
-    c.completeError(error1, stack1);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream.listen(null, onError: expectError, cancelOnError: true);
-    controller.addError(error1, stack1);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController(sync: true);
-    controller.stream.listen(null, onError: expectError, cancelOnError: true);
-    controller.addError(error1, stack1);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController.broadcast();
-    controller.stream.listen(null, onError: expectError, cancelOnError: true);
-    controller.addError(error1, stack1);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController.broadcast(sync: true);
-    controller.stream.listen(null, onError: expectError, cancelOnError: true);
-    controller.addError(error1, stack1);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .asBroadcastStream()
-        .listen(null, onError: expectError, cancelOnError: true);
-    controller.addError(error1, stack1);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController(sync: true);
-    controller.stream
-        .asBroadcastStream()
-        .listen(null, onError: expectError, cancelOnError: true);
-    controller.addError(error1, stack1);
-  }
-
-  {
-    asyncStart();
-    Future f = new Future.error(error1, stack1);
-    f.catchError(expectError);
-  }
-}
-
-void testThrownErrors(expectErrorOnly) {
-  // Throw error in non-registered callback.
-  {
-    asyncStart();
-    Future f = new Future(() => throw error1);
-    f.catchError(expectErrorOnly);
-  }
-
-  {
-    asyncStart();
-    Future f = new Future.microtask(() => throw error1);
-    f.catchError(expectErrorOnly);
-  }
-
-  {
-    asyncStart();
-    Future f = new Future.sync(() => throw error1);
-    f.catchError(expectErrorOnly);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .map((x) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .where((x) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream.forEach((x) => throw error1).catchError(expectErrorOnly);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .expand((x) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .asyncMap((x) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .asyncExpand((x) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .handleError((e, s) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.addError("ignore", null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .skipWhile((x) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .takeWhile((x) => throw error1)
-        .listen(null, onError: expectErrorOnly, cancelOnError: true);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream.every((x) => throw error1).catchError(expectErrorOnly);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream.any((x) => throw error1).catchError(expectErrorOnly);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .firstWhere((x) => throw error1)
-        .catchError(expectErrorOnly);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .lastWhere((x) => throw error1)
-        .catchError(expectErrorOnly);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .singleWhere((x) => throw error1)
-        .catchError(expectErrorOnly);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .reduce((x, y) => throw error1)
-        .catchError(expectErrorOnly);
-    controller.add(null);
-    controller.add(null);
-  }
-
-  {
-    asyncStart();
-    StreamController controller = new StreamController();
-    controller.stream
-        .fold(null, (x, y) => throw error1)
-        .catchError(expectErrorOnly);
-    controller.add(null);
-  }
-}
-
-testNoChange() {
-  void testTransparent() {
-    testProgrammaticErrors(expectError);
-    testThrownErrors(expectErrorOnly);
-  }
-
-  // Run directly.
-  testTransparent();
-
-  // Run in a zone that doesn't change callback.
-  runZoned(testTransparent,
-      zoneSpecification:
-          new ZoneSpecification(handleUncaughtError: (s, p, z, e, t) {}));
-
-  // Run in zone that delegates to root zone
-  runZoned(testTransparent,
-      zoneSpecification: new ZoneSpecification(
-          errorCallback: (s, p, z, e, t) => p.errorCallback(z, e, t)));
-
-  // Run in a zone that returns null from the callback.
-  runZoned(testTransparent,
-      zoneSpecification:
-          new ZoneSpecification(errorCallback: (s, p, z, e, t) => null));
-
-  // Run in zone that returns same values.
-  runZoned(testTransparent,
-      zoneSpecification: new ZoneSpecification(
-          errorCallback: (s, p, z, e, t) => new AsyncError(e, t)));
-
-  // Run in zone that returns null, inside zone that does replacement.
-  runZoned(() {
-    runZoned(testTransparent,
-        zoneSpecification:
-            new ZoneSpecification(errorCallback: (s, p, z, e, t) => null));
-  }, zoneSpecification: replaceZoneSpec);
-}
-
-void testWithReplacement() {
-  void testReplaced() {
-    testProgrammaticErrors(expectReplaced);
-    testThrownErrors(expectReplaced);
-  }
-
-  // Zone which replaces errors.
-  runZoned(testReplaced, zoneSpecification: replaceZoneSpec);
-
-  // Nested zone, only innermost gets to act.
-  runZoned(() {
-    runZoned(testReplaced, zoneSpecification: replaceZoneSpec);
-  }, zoneSpecification: replaceZoneSpec);
-
-  // Use delegation to parent which replaces.
-  runZoned(() {
-    runZoned(testReplaced,
-        zoneSpecification: new ZoneSpecification(
-            errorCallback: (s, p, z, e, t) => p.errorCallback(z, e, t)));
-  }, zoneSpecification: replaceZoneSpec);
-}
diff --git a/tests/lib/async/zone_fork_test.dart b/tests/lib/async/zone_fork_test.dart
deleted file mode 100644
index 3def57f..0000000
--- a/tests/lib/async/zone_fork_test.dart
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-  List events = [];
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked;
-  forked = Zone.current.fork(specification: new ZoneSpecification(fork:
-      (Zone self, ZoneDelegate parent, Zone origin,
-          ZoneSpecification zoneSpecification, Map mapValues) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.ROOT, Zone.current);
-    events.add("forked.fork");
-    Function descriptionRun = zoneSpecification.run;
-    ZoneSpecification modified = new ZoneSpecification.from(zoneSpecification,
-        run: <R>(self, parent, origin, R f()) {
-      events.add("wrapped run");
-      return descriptionRun<R>(self, parent, origin, () {
-        events.add("wrapped f");
-        return f();
-      });
-    });
-    return parent.fork(origin, modified, mapValues);
-  }));
-
-  events.add("start");
-  Zone forkedChild = forked.fork(specification: new ZoneSpecification(
-      run: <R>(Zone self, ZoneDelegate parent, Zone origin, R f()) {
-    events.add("executing child run");
-    return parent.run(origin, f);
-  }));
-
-  events.add("after child fork");
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  forkedChild.run(() {
-    events.add("child run");
-  });
-
-  events.add("after child run");
-
-  Expect.listEquals([
-    "start",
-    "forked.fork",
-    "after child fork",
-    "wrapped run",
-    "executing child run",
-    "wrapped f",
-    "child run",
-    "after child run"
-  ], events);
-}
diff --git a/tests/lib/async/zone_future_schedule_microtask_test.dart b/tests/lib/async/zone_future_schedule_microtask_test.dart
deleted file mode 100644
index 9d8f8bc..0000000
--- a/tests/lib/async/zone_future_schedule_microtask_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'package:async_helper/async_helper.dart';
-import 'catch_errors.dart';
-
-main() {
-  asyncStart();
-  Completer done = new Completer();
-
-  // Make sure that the zones use the scheduleMicrotask of their zones.
-  int scheduleMicrotaskCount = 0;
-  Completer completer;
-  Completer completer2;
-  Future future;
-  Future future2;
-  runZonedScheduleMicrotask(() {
-    completer = new Completer();
-    completer.complete(499);
-    completer2 = new Completer.sync();
-    completer2.complete(-499);
-    future = new Future.value(42);
-    future2 = new Future.error(11);
-  }, onScheduleMicrotask: (f) {
-    scheduleMicrotaskCount++;
-    scheduleMicrotask(f);
-  });
-  int openCallbackCount = 0;
-
-  openCallbackCount++;
-  completer.future.then((x) {
-    Expect.equals(499, x);
-    openCallbackCount--;
-    if (openCallbackCount == 0) done.complete();
-  });
-
-  openCallbackCount++;
-  completer2.future.then((x) {
-    Expect.equals(-499, x);
-    openCallbackCount--;
-    if (openCallbackCount == 0) done.complete();
-  });
-
-  openCallbackCount++;
-  future.then((x) {
-    Expect.equals(42, x);
-    openCallbackCount--;
-    if (openCallbackCount == 0) done.complete();
-  });
-
-  openCallbackCount++;
-  future2.catchError((x) {
-    Expect.equals(11, x);
-    openCallbackCount--;
-    if (openCallbackCount == 0) done.complete();
-  });
-
-  done.future.whenComplete(() {
-    Expect.equals(4, scheduleMicrotaskCount);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_register_callback_test.dart b/tests/lib/async/zone_register_callback_test.dart
deleted file mode 100644
index 221d8dd..0000000
--- a/tests/lib/async/zone_register_callback_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-
-  var valueToCapture;
-  var restoredValue;
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork(specification: new ZoneSpecification(
-      registerCallback:
-          <R>(Zone self, ZoneDelegate parent, Zone origin, R f()) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.current, Zone.ROOT);
-    // Note that not forwarding is completely legal, though not encouraged.
-    var capturedValue = valueToCapture;
-    return parent.registerCallback(origin, () {
-      restoredValue = capturedValue;
-      return f();
-    });
-  }));
-
-  valueToCapture = 499;
-  var fun = () => 99;
-  var registered = forked.registerCallback(fun);
-  Expect.isFalse(identical(fun, registered));
-
-  // It is legal to invoke the callback in a different zone. This is, of course,
-  // extremely discouraged.
-  var result = registered();
-  Expect.equals(99, result);
-  Expect.equals(499, restoredValue);
-}
diff --git a/tests/lib/async/zone_register_callback_unary_test.dart b/tests/lib/async/zone_register_callback_unary_test.dart
deleted file mode 100644
index b0de53a..0000000
--- a/tests/lib/async/zone_register_callback_unary_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-
-  var valueToCapture;
-  var restoredValue;
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork(specification: new ZoneSpecification(
-      registerUnaryCallback:
-          <R, T>(Zone self, ZoneDelegate parent, Zone origin, R f(T arg)) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.current, Zone.ROOT);
-    // Note that not forwarding is completely legal, though not encouraged.
-    var capturedValue = valueToCapture;
-    return parent.registerUnaryCallback(origin, (arg) {
-      restoredValue = capturedValue;
-      return f(arg);
-    });
-  }));
-
-  valueToCapture = 499;
-  var fun = (x) => x + 99;
-  var registered = forked.registerUnaryCallback(fun);
-  Expect.isFalse(identical(fun, registered));
-
-  // It is valid to invoke the callback in a different zone. This is, of course,
-  // extremely discouraged.
-  var result = registered(399);
-  Expect.equals(498, result);
-  Expect.equals(499, restoredValue);
-}
diff --git a/tests/lib/async/zone_root_bind_test.dart b/tests/lib/async/zone_root_bind_test.dart
deleted file mode 100644
index 566a582..0000000
--- a/tests/lib/async/zone_root_bind_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork();
-  var f = Zone.current.bindCallback(() {
-    Expect.identical(Zone.ROOT, Zone.current);
-  });
-  forked.run(() {
-    f();
-  });
-}
diff --git a/tests/lib/async/zone_run_guarded_test.dart b/tests/lib/async/zone_run_guarded_test.dart
deleted file mode 100644
index 6b87bf1..0000000
--- a/tests/lib/async/zone_run_guarded_test.dart
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  var result;
-
-  Completer done = new Completer();
-  List events = [];
-
-  // runGuarded calls run, captures the synchronous error (if any) and
-  // gives that one to handleUncaughtError.
-
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked;
-  forked = Zone.current.fork(
-      specification: new ZoneSpecification(
-          run: <R>(Zone self, ZoneDelegate parent, Zone origin, R f()) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.ROOT, Zone.current);
-    events.add("forked.run");
-    return parent.run(origin, f);
-  }, handleUncaughtError:
-              (Zone self, ZoneDelegate parent, Zone origin, error, stackTrace) {
-    Expect.identical(Zone.ROOT, Zone.current);
-    Expect.identical(forked, origin);
-    events.add("forked.handleUncaught $error");
-    result = 499;
-  }));
-
-  forked.runGuarded(() {
-    events.add("runGuarded 1");
-    Expect.identical(forked, Zone.current);
-    result = 42;
-  });
-  Expect.identical(Zone.ROOT, Zone.current);
-  Expect.equals(42, result);
-  events.add("after runGuarded 1");
-
-  forked.runGuarded(() {
-    events.add("runGuarded 2");
-    Expect.identical(forked, Zone.current);
-    throw 42;
-  });
-  Expect.equals(499, result);
-
-  Expect.listEquals([
-    "forked.run",
-    "runGuarded 1",
-    "after runGuarded 1",
-    "forked.run",
-    "runGuarded 2",
-    "forked.handleUncaught 42"
-  ], events);
-
-  result = null;
-  events.clear();
-  asyncStart();
-  forked.runGuarded(() {
-    Expect.identical(forked, Zone.current);
-    events.add("run closure");
-    forked.scheduleMicrotask(() {
-      events.add("run closure 2");
-      Expect.identical(forked, Zone.current);
-      done.complete(true);
-      throw 88;
-    });
-    throw 1234;
-  });
-  events.add("after nested scheduleMicrotask");
-  Expect.equals(499, result);
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "forked.run",
-      "run closure",
-      "forked.handleUncaught 1234",
-      "after nested scheduleMicrotask",
-      "forked.run",
-      "run closure 2",
-      "forked.handleUncaught 88"
-    ], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_run_test.dart b/tests/lib/async/zone_run_test.dart
deleted file mode 100644
index 1a40370..0000000
--- a/tests/lib/async/zone_run_test.dart
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-  List events = [];
-
-  bool shouldForward = true;
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork(specification: new ZoneSpecification(
-      run: <R>(Zone self, ZoneDelegate parent, Zone origin, R f()) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.ROOT, Zone.current);
-    events.add("forked.run");
-    if (shouldForward) return parent.run(origin, f);
-    return 42 as R;
-  }));
-
-  events.add("zone forked");
-  Zone expectedZone = forked;
-  var result = forked.run(() {
-    Expect.identical(expectedZone, Zone.current);
-    events.add("run closure");
-    return 499;
-  });
-  Expect.equals(499, result);
-  events.add("executed run");
-
-  shouldForward = false;
-  result = forked.run(() {
-    Expect.fail("should not be invoked");
-  });
-  Expect.equals(42, result);
-  events.add("executed run2");
-
-  asyncStart();
-  shouldForward = true;
-  result = forked.run(() {
-    Expect.identical(forked, Zone.current);
-    events.add("run closure 2");
-    forked.scheduleMicrotask(() {
-      events.add("run closure 3");
-      Expect.identical(forked, Zone.current);
-      done.complete(true);
-    });
-    return 1234;
-  });
-  events.add("after nested scheduleMicrotask");
-  Expect.equals(1234, result);
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "zone forked",
-      "forked.run",
-      "run closure",
-      "executed run",
-      "forked.run",
-      "executed run2",
-      "forked.run",
-      "run closure 2",
-      "after nested scheduleMicrotask",
-      "forked.run",
-      "run closure 3"
-    ], events);
-    asyncEnd();
-  });
-
-  var zone1 = Zone.ROOT.fork();
-  var zone2 = Zone.ROOT.fork();
-  var zone3 = Zone.ROOT.fork();
-  asyncStart();
-  asyncStart();
-  zone1.run(() {
-    var future = new Future.value();
-    zone2.run(() {
-      future.then((_) {
-        Expect.identical(zone2, Zone.current);
-        asyncEnd();
-      });
-    });
-    zone3.run(() {
-      future.then((_) {
-        Expect.identical(zone3, Zone.current);
-        asyncEnd();
-      });
-    });
-  });
-}
diff --git a/tests/lib/async/zone_run_unary_test.dart b/tests/lib/async/zone_run_unary_test.dart
deleted file mode 100644
index 7e64237..0000000
--- a/tests/lib/async/zone_run_unary_test.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  Completer done = new Completer();
-  List events = [];
-
-  bool shouldForward = true;
-  Expect.identical(Zone.ROOT, Zone.current);
-  Zone forked = Zone.current.fork(specification: new ZoneSpecification(runUnary:
-      <R, T>(Zone self, ZoneDelegate parent, Zone origin, R f(arg), T arg) {
-    // The zone is still the same as when origin.run was invoked, which
-    // is the root zone. (The origin zone hasn't been set yet).
-    Expect.identical(Zone.current, Zone.ROOT);
-    events.add("forked.run1");
-    if (shouldForward) {
-      var nextArg = (arg as int) + 1;
-      return parent.runUnary(origin, f, nextArg as T);
-    }
-    return 42 as R;
-  }));
-
-  events.add("zone forked");
-  Zone expectedZone = forked;
-  var result = forked.runUnary((arg) {
-    Expect.identical(expectedZone, Zone.current);
-    events.add("run closure");
-    return arg + 3;
-  }, 495);
-  Expect.equals(499, result);
-  events.add("executed run");
-
-  shouldForward = false;
-  result = forked.runUnary((arg) {
-    Expect.fail("should not be invoked");
-  }, 99);
-  Expect.equals(42, result);
-  events.add("executed run2");
-
-  asyncStart();
-  shouldForward = true;
-  result = forked.runUnary((arg) {
-    Expect.identical(forked, Zone.current);
-    events.add("run closure 2");
-    scheduleMicrotask(() {
-      events.add("run closure 3");
-      Expect.identical(forked, Zone.current);
-      done.complete(true);
-    });
-    return -arg - 8;
-  }, 490);
-  events.add("after nested scheduleMicrotask");
-  Expect.equals(-499, result);
-
-  done.future.whenComplete(() {
-    Expect.listEquals([
-      "zone forked",
-      "forked.run1",
-      "run closure",
-      "executed run",
-      "forked.run1",
-      "executed run2",
-      "forked.run1",
-      "run closure 2",
-      "after nested scheduleMicrotask",
-      "run closure 3"
-    ], events);
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/async/zone_value_test.dart b/tests/lib/async/zone_value_test.dart
deleted file mode 100644
index e3bf91b..0000000
--- a/tests/lib/async/zone_value_test.dart
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright (c) 2013, 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';
-import 'package:async_helper/async_helper.dart';
-import 'dart:async';
-
-main() {
-  // Unique object.
-  var baz = new Object();
-  // Not so unique object that thinks it's the same as baz.
-  var mimic = new Mimic(baz);
-
-  // runGuarded calls run, captures the synchronous error (if any) and
-  // gives that one to handleUncaughtError.
-
-  Expect.identical(Zone.ROOT, Zone.current);
-
-  // Create a map with various key types.
-  Map zoneValues = new Map();
-  zoneValues[#foo] = 499;
-  zoneValues["bar"] = [];
-  zoneValues[baz] = "baz";
-  zoneValues[0] = "zero!";
-  zoneValues[null] = baz;
-
-  Zone forked = Zone.current.fork(zoneValues: zoneValues);
-
-  // Values are not present when not inside the zone.
-  Expect.identical(Zone.ROOT, Zone.current);
-  Expect.isNull(Zone.current[#foo]);
-  Expect.isNull(Zone.current["bar"]);
-  Expect.isNull(Zone.current[baz]);
-  Expect.isNull(Zone.current[mimic]);
-  Expect.isNull(Zone.current[0]);
-  Expect.isNull(Zone.current[null]);
-  Expect.isNull(Zone.current["qux"]);
-
-  // Changing the original map has no effect after the zone is created.
-  zoneValues[#foo] = -1;
-
-  // Values are available directly on the zone.
-  Expect.equals(499, forked[#foo]);
-  Expect.listEquals([], forked["bar"]);
-  Expect.equals("baz", forked[baz]);
-  Expect.isNull(Zone.current[mimic]);
-  Expect.equals("zero!", forked[0]);
-  Expect.equals("zero!", forked[0.0]); // Lookup uses equality.
-  Expect.equals("zero!", forked[-0.0]);
-  Expect.equals(baz, forked[null]);
-  Expect.isNull(forked["qux"]);
-
-  forked.run(() {
-    Expect.identical(forked, Zone.current); // Sanity check.
-    // Values are present on current when inside zone.
-    Expect.equals(499, Zone.current[#foo]);
-    Expect.listEquals([], Zone.current["bar"]);
-    Expect.equals("baz", Zone.current[baz]);
-    Expect.isNull(Zone.current[mimic]);
-    Expect.equals("zero!", Zone.current[0]);
-    Expect.equals("zero!", Zone.current[0.0]); // Lookup uses equality.
-    Expect.equals("zero!", Zone.current[-0.0]);
-    Expect.equals(baz, Zone.current[null]);
-    Expect.isNull(Zone.current["qux"]);
-  });
-
-  // Values are still not present when not inside the zone.
-  Expect.identical(Zone.ROOT, Zone.current);
-  Expect.isNull(Zone.current[#foo]);
-  Expect.isNull(Zone.current["bar"]);
-  Expect.isNull(Zone.current[baz]);
-  Expect.isNull(Zone.current[mimic]);
-  Expect.isNull(Zone.current[0]);
-  Expect.isNull(Zone.current[null]);
-  Expect.isNull(Zone.current["qux"]);
-
-  // Modifying the stored values work as expected.
-  zoneValues["bar"].add(42);
-
-  forked.run(() {
-    Expect.identical(forked, Zone.current); // Sanity check.
-    // Values are still there when inside the zone. The list was modified.
-    Expect.equals(499, Zone.current[#foo]);
-    Expect.listEquals([42], Zone.current["bar"]);
-    Expect.equals("baz", Zone.current[baz]);
-    Expect.isNull(Zone.current[mimic]);
-    Expect.equals("zero!", Zone.current[0]);
-    Expect.equals(baz, Zone.current[null]);
-    Expect.isNull(Zone.current["qux"]);
-  });
-
-  // Creating a further nested zone with new values allows keeping, overriding,
-  // and shadowing existing values from the outer zone.
-  zoneValues = new Map();
-  zoneValues[#foo] = -499; //     Values can be overridden.
-  zoneValues["bar"] = null; //    Values can be changed to null.
-  zoneValues["qux"] = 99; //      Values can be added
-  // Overriding with equal, but not identical, key is possible.
-  zoneValues[mimic] = "floo";
-  zoneValues[0.0] = "zero!ZERO!";
-
-  Zone forkedChild = forked.fork(zoneValues: zoneValues);
-
-  // New values available on zone.
-  Expect.equals(-499, forkedChild[#foo]); //         Overridden.
-  Expect.isNull(forkedChild["bar"]); //              Overridden to null.
-  Expect.equals("floo", forkedChild[baz]); //        Overridden by mimic.
-  Expect.equals("floo", forkedChild[mimic]); //      Now recognizes mimic.
-  Expect.equals("zero!ZERO!", forkedChild[0]); //    Overridden by 0.0.
-  Expect.equals("zero!ZERO!", forkedChild[0.0]); // Overriding 0.
-  Expect.equals(baz, forkedChild[null]); //          Inherited.
-  Expect.equals(99, forkedChild["qux"]); //          Added.
-
-  forkedChild.run(() {
-    Expect.identical(forkedChild, Zone.current); // Sanity check.
-    // New values available on current zone when the zone is current.
-    Expect.equals(-499, Zone.current[#foo]); //         Overridden.
-    Expect.isNull(Zone.current["bar"]); //              Overridden to null.
-    Expect.equals("floo", Zone.current[baz]); //        Overridden by mimic.
-    Expect.equals("floo", Zone.current[mimic]); //      Now recognizes mimic.
-    Expect.equals("zero!ZERO!", Zone.current[0]); //    Overridden by 0.0.
-    Expect.equals("zero!ZERO!", Zone.current[0.0]); // Overriding 0.
-    Expect.equals(baz, Zone.current[null]); //          Inherited.
-    Expect.equals(99, Zone.current["qux"]); //          Added.
-  });
-
-  // Parent zone values are unchanged.
-  Expect.equals(499, forked[#foo]);
-  Expect.listEquals([42], forked["bar"]);
-  Expect.equals("baz", forked[baz]);
-  Expect.isNull(Zone.current[mimic]);
-  Expect.equals("zero!", forked[0]);
-  Expect.equals("zero!", forked[0.0]); // Lookup uses equality.
-  Expect.equals("zero!", forked[-0.0]);
-  Expect.equals(baz, forked[null]);
-  Expect.isNull(forked["qux"]);
-}
-
-// Class of objects that consider themselves equal to their originals.
-// Sees through mimickry.
-class Mimic {
-  final Object original;
-  Mimic(this.original);
-  int get hashCode => original.hashCode;
-  bool operator ==(Object other) =>
-      (other is Mimic) ? this == other.original : original == other;
-}
diff --git a/tests/lib/collection/hash_map_test.dart b/tests/lib/collection/hash_map_test.dart
deleted file mode 100644
index 44dbef4..0000000
--- a/tests/lib/collection/hash_map_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2011, 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:collection";
-import "package:expect/expect.dart";
-
-void main() {
-  // Test customized maps.
-  // Regression test for issue http://dartbug.com/18109
-
-  hash(s) => s.toLowerCase().hashCode;
-  equals(a, b) => a.toLowerCase() == b.toLowerCase();
-
-  for (var m in [
-    new HashMap<String, int>(equals: equals, hashCode: hash),
-    new LinkedHashMap<String, int>(equals: equals, hashCode: hash),
-  ]) {
-    m["Abel"] = 42;
-    for (var key in ["Abel", "abel", "ABEL", "Abel"]) {
-      Expect.isTrue(m.containsKey(key), "contains $key in ${m.runtimeType} $m");
-      Expect.equals(42, m[key], "get $key in ${m.runtimeType} $m");
-      Expect.equals(42, m.remove(key), "remove $key in ${m.runtimeType} $m");
-      m[key] = 42;
-    }
-  }
-
-  abshash(n) => n.abs();
-  abseq(a, b) => a.abs() == b.abs();
-  for (var m in [
-    new HashMap<int, int>(equals: abseq, hashCode: abshash),
-    new LinkedHashMap<int, int>(equals: abseq, hashCode: abshash),
-  ]) {
-    m[1] = 42;
-    for (var key in [1, -1, 1]) {
-      Expect.isTrue(m.containsKey(key), "contains $key in ${m.runtimeType} $m");
-      Expect.equals(42, m[key], "get $key in ${m.runtimeType} $m");
-      Expect.equals(42, m.remove(key), "remove $key in ${m.runtimeType} $m");
-      m[key] = 42;
-    }
-  }
-}
diff --git a/tests/lib/collection/hash_set_test.dart b/tests/lib/collection/hash_set_test.dart
deleted file mode 100644
index ab03284..0000000
--- a/tests/lib/collection/hash_set_test.dart
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright (c) 2011, 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:collection";
-import "package:expect/expect.dart";
-
-void main() {
-  // Test customized sets.
-  // Regression test for issue http://dartbug.com/18109
-
-  hash(s) => s.toLowerCase().hashCode;
-  equals(a, b) => a.toLowerCase() == b.toLowerCase();
-
-  for (var m in [
-    new HashSet<String>(equals: equals, hashCode: hash),
-    new LinkedHashSet<String>(equals: equals, hashCode: hash),
-  ]) {
-    m.add("Abel");
-    var prev = "Abel";
-    for (var key in ["Abel", "abel", "ABEL", "Abel"]) {
-      Expect.isTrue(m.contains(key), "contains $key in ${m.runtimeType} $m");
-      Expect.equals(prev, m.lookup(key), "lookup $key in ${m.runtimeType} $m");
-      Expect.isTrue(m.remove(key), "remove $key in ${m.runtimeType} $m");
-      m.add(key);
-      prev = key;
-    }
-  }
-
-  abshash(n) => n.abs();
-  abseq(a, b) => a.abs() == b.abs();
-  for (var m in [
-    new HashSet<int>(equals: abseq, hashCode: abshash),
-    new LinkedHashSet<int>(equals: abseq, hashCode: abshash),
-  ]) {
-    m.add(1);
-    var prev = 1;
-    for (var key in [1, -1, 1]) {
-      Expect.isTrue(m.contains(key), "contains $key in ${m.runtimeType} $m");
-      Expect.equals(prev, m.lookup(key), "lookup $key in ${m.runtimeType} $m");
-      Expect.isTrue(m.remove(key), "remove $key in ${m.runtimeType} $m");
-      m.add(key);
-      prev = key;
-    }
-  }
-}
diff --git a/tests/lib/collection/linked_list_test.dart b/tests/lib/collection/linked_list_test.dart
deleted file mode 100644
index 1cd9008..0000000
--- a/tests/lib/collection/linked_list_test.dart
+++ /dev/null
@@ -1,279 +0,0 @@
-// Copyright (c) 2013, 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:collection';
-import "package:expect/expect.dart";
-
-class MyEntry extends LinkedListEntry<MyEntry> {
-  final int value;
-
-  MyEntry(int this.value);
-
-  String toString() => value.toString();
-}
-
-testPreviousNext() {
-  var list = new LinkedList<MyEntry>();
-  Expect.throws(() => list.first);
-  Expect.throws(() => list.last);
-  Expect.equals(0, list.length);
-
-  for (int i = 0; i < 3; i++) {
-    list.add(new MyEntry(i));
-  }
-  Expect.equals(3, list.length);
-
-  var entry = list.first;
-  Expect.isNull(entry.previous);
-  Expect.equals(0, entry.value);
-  entry = entry.next;
-  Expect.equals(1, entry.value);
-  entry = entry.next;
-  Expect.equals(2, entry.value);
-  Expect.isNull(entry.next);
-  entry = entry.previous;
-  Expect.equals(1, entry.value);
-  entry = entry.previous;
-  Expect.equals(0, entry.value);
-  Expect.isNull(entry.previous);
-}
-
-testUnlinked() {
-  var unlinked = new MyEntry(0);
-  Expect.isNull(unlinked.previous);
-  Expect.isNull(unlinked.next);
-  var list = new LinkedList<MyEntry>();
-  list.add(unlinked);
-  Expect.isNull(unlinked.previous);
-  Expect.isNull(unlinked.next);
-  list.remove(unlinked);
-  Expect.isNull(unlinked.previous);
-  Expect.isNull(unlinked.next);
-  list.add(unlinked);
-  list.add(new MyEntry(1));
-  Expect.isNull(unlinked.previous);
-  Expect.equals(1, unlinked.next.value);
-  list.remove(unlinked);
-  Expect.isNull(unlinked.previous);
-  Expect.isNull(unlinked.next);
-  list.add(unlinked);
-  Expect.isNull(unlinked.next);
-  Expect.equals(1, unlinked.previous.value);
-}
-
-testInsert() {
-  // Insert last.
-  var list = new LinkedList<MyEntry>();
-  for (int i = 0; i < 10; i++) {
-    list.add(new MyEntry(i));
-  }
-
-  Expect.equals(10, list.length);
-
-  int i = 0;
-  for (var entry in list) {
-    Expect.equals(i, entry.value);
-    i++;
-  }
-
-  Expect.equals(10, i);
-
-  list.clear();
-
-  // Insert first.
-  for (int i = 0; i < 10; i++) {
-    list.addFirst(new MyEntry(i));
-  }
-
-  Expect.equals(10, list.length);
-
-  i = 10;
-  for (var entry in list) {
-    Expect.equals(--i, entry.value);
-  }
-  Expect.equals(0, i);
-
-  list.clear();
-
-  // Insert after.
-  list.addFirst(new MyEntry(0));
-  for (int i = 1; i < 10; i++) {
-    list.last.insertAfter(new MyEntry(i));
-  }
-
-  Expect.equals(10, list.length);
-
-  i = 0;
-  for (var entry in list) {
-    Expect.equals(i, entry.value);
-    i++;
-  }
-
-  Expect.equals(10, i);
-
-  list.clear();
-
-  // Insert before.
-  list.addFirst(new MyEntry(0));
-  for (int i = 1; i < 10; i++) {
-    list.first.insertBefore(new MyEntry(i));
-  }
-
-  Expect.equals(10, list.length);
-
-  i = 10;
-  for (var entry in list) {
-    Expect.equals(--i, entry.value);
-  }
-  Expect.equals(0, i);
-
-  list.clear();
-}
-
-testRemove() {
-  var list = new LinkedList<MyEntry>();
-  for (int i = 0; i < 10; i++) {
-    list.add(new MyEntry(i));
-  }
-
-  Expect.equals(10, list.length);
-
-  list.remove(list.skip(5).first);
-
-  Expect.equals(9, list.length);
-
-  int i = 0;
-  for (var entry in list) {
-    if (i == 5) i++;
-    Expect.equals(i, entry.value);
-    i++;
-  }
-
-  Expect.listEquals(
-      [0, 1, 2, 3, 4, 6, 7, 8, 9], list.map((e) => e.value).toList());
-
-  for (int i = 0; i < 9; i++) {
-    list.first.unlink();
-  }
-
-  Expect.throws(() => list.first);
-
-  Expect.equals(0, list.length);
-}
-
-testBadAdd() {
-  var list1 = new LinkedList<MyEntry>();
-  list1.addFirst(new MyEntry(0));
-
-  var list2 = new LinkedList<MyEntry>();
-  Expect.throws(() => list2.addFirst(list1.first));
-
-  Expect.throws(() => new MyEntry(0).unlink());
-}
-
-testConcurrentModificationError() {
-  test(function(LinkedList ll)) {
-    var ll = new LinkedList<MyEntry>();
-    for (int i = 0; i < 10; i++) {
-      ll.add(new MyEntry(i));
-    }
-    Expect.throws(() => function(ll), (e) => e is ConcurrentModificationError);
-  }
-
-  test((ll) {
-    for (var x in ll) {
-      ll.remove(x);
-    }
-  });
-  test((ll) {
-    ll.forEach((x) {
-      ll.remove(x);
-    });
-  });
-  test((ll) {
-    ll.any((x) {
-      ll.remove(x);
-      return false;
-    });
-  });
-  test((ll) {
-    ll.every((x) {
-      ll.remove(x);
-      return true;
-    });
-  });
-  test((ll) {
-    ll.fold(0, (x, y) {
-      ll.remove(y);
-      return x;
-    });
-  });
-  test((ll) {
-    ll.reduce((x, y) {
-      ll.remove(y);
-      return x;
-    });
-  });
-  test((ll) {
-    ll.where((x) {
-      ll.remove(x);
-      return true;
-    }).forEach((_) {});
-  });
-  test((ll) {
-    ll.map((x) {
-      ll.remove(x);
-      return x;
-    }).forEach((_) {});
-  });
-  test((ll) {
-    ll.expand((x) {
-      ll.remove(x);
-      return [x];
-    }).forEach((_) {});
-  });
-  test((ll) {
-    ll.takeWhile((x) {
-      ll.remove(x);
-      return true;
-    }).forEach((_) {});
-  });
-  test((ll) {
-    ll.skipWhile((x) {
-      ll.remove(x);
-      return true;
-    }).forEach((_) {});
-  });
-  test((ll) {
-    bool first = true;
-    ll.firstWhere((x) {
-      ll.remove(x);
-      if (!first) return true;
-      return first = false;
-    });
-  });
-  test((ll) {
-    ll.lastWhere((x) {
-      ll.remove(x);
-      return true;
-    });
-  });
-  test((ll) {
-    bool first = true;
-    ll.singleWhere((x) {
-      ll.remove(x);
-      if (!first) return false;
-      return !(first = false);
-    });
-  });
-}
-
-main() {
-  testPreviousNext();
-  testUnlinked();
-  testInsert();
-  testRemove();
-  testBadAdd();
-  testConcurrentModificationError();
-}
diff --git a/tests/lib/convert/ascii_test.dart b/tests/lib/convert/ascii_test.dart
deleted file mode 100644
index 4094e99..0000000
--- a/tests/lib/convert/ascii_test.dart
+++ /dev/null
@@ -1,187 +0,0 @@
-// 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";
-import 'dart:convert';
-
-var asciiStrings = [
-  "pure ascii",
-  "\x00 with control characters \n",
-  "\x01 edge cases \x7f"
-];
-
-var nonAsciiStrings = [
-  "\x80 edge case first",
-  "Edge case ASCII \u{80}",
-  "Edge case byte \u{ff}",
-  "Edge case super-BMP \u{10000}"
-];
-
-void main() {
-  // Build longer versions of the example strings.
-  for (int i = 0, n = asciiStrings.length; i < n; i++) {
-    var string = asciiStrings[i];
-    while (string.length < 1024) {
-      string += string;
-    }
-    asciiStrings.add(string);
-  }
-  for (int i = 0, n = nonAsciiStrings.length; i < n; i++) {
-    var string = nonAsciiStrings[i];
-    while (string.length < 1024) {
-      string += string;
-    }
-    nonAsciiStrings.add(string);
-  }
-  testDirectConversions();
-  testChunkedConversions();
-}
-
-void testDirectConversions() {
-  for (var codec in [ASCII, new AsciiCodec()]) {
-    for (var asciiString in asciiStrings) {
-      List bytes = codec.encoder.convert(asciiString);
-      Expect.listEquals(asciiString.codeUnits.toList(), bytes, asciiString);
-      String roundTripString = codec.decoder.convert(bytes);
-      Expect.equals(asciiString, roundTripString);
-      roundTripString = codec.decode(bytes);
-      Expect.equals(asciiString, roundTripString);
-    }
-
-    for (var nonAsciiString in nonAsciiStrings) {
-      Expect.throws(() {
-        print(codec.encoder.convert(nonAsciiString));
-      }, null, nonAsciiString);
-    }
-
-    var encode = codec.encoder.convert;
-    Expect.listEquals([0x42, 0x43, 0x44], encode("ABCDE", 1, 4));
-    Expect.listEquals([0x42, 0x43, 0x44, 0x45], encode("ABCDE", 1));
-    Expect.listEquals([0x42, 0x43, 0x44], encode("\xffBCD\xff", 1, 4));
-    Expect.throws(() {
-      encode("\xffBCD\xff", 0, 4);
-    });
-    Expect.throws(() {
-      encode("\xffBCD\xff", 1);
-    });
-    Expect.throws(() {
-      encode("\xffBCD\xff", 1, 5);
-    });
-    Expect.throws(() {
-      encode("\xffBCD\xff", -1, 4);
-    });
-    Expect.throws(() {
-      encode("\xffBCD\xff", 1, -1);
-    });
-    Expect.throws(() {
-      encode("\xffBCD\xff", 3, 2);
-    });
-
-    var decode = codec.decoder.convert;
-    Expect.equals("BCD", decode([0x41, 0x42, 0x43, 0x44, 0x45], 1, 4));
-    Expect.equals("BCDE", decode([0x41, 0x42, 0x43, 0x44, 0x45], 1));
-    Expect.equals("BCD", decode([0xFF, 0x42, 0x43, 0x44, 0xFF], 1, 4));
-    Expect.throws(() {
-      decode([0xFF, 0x42, 0x43, 0x44, 0xFF], 0, 4);
-    });
-    Expect.throws(() {
-      decode([0xFF, 0x42, 0x43, 0x44, 0xFF], 1);
-    });
-    Expect.throws(() {
-      decode([0xFF, 0x42, 0x43, 0x44, 0xFF], 1, 5);
-    });
-    Expect.throws(() {
-      decode([0xFF, 0x42, 0x43, 0x44, 0xFF], -1, 4);
-    });
-    Expect.throws(() {
-      decode([0xFF, 0x42, 0x43, 0x44, 0xFF], 1, -1);
-    });
-    Expect.throws(() {
-      decode([0xFF, 0x42, 0x43, 0x44, 0xFF], 3, 2);
-    });
-  }
-
-  var allowInvalidCodec = new AsciiCodec(allowInvalid: true);
-  var invalidBytes = [0, 1, 0xff, 0xdead, 0];
-  String decoded = allowInvalidCodec.decode(invalidBytes);
-  Expect.equals("\x00\x01\uFFFD\uFFFD\x00", decoded);
-  decoded = allowInvalidCodec.decoder.convert(invalidBytes);
-  Expect.equals("\x00\x01\uFFFD\uFFFD\x00", decoded);
-  decoded = ASCII.decode(invalidBytes, allowInvalid: true);
-  Expect.equals("\x00\x01\uFFFD\uFFFD\x00", decoded);
-}
-
-List<int> encode(
-    String str, int chunkSize, Converter<String, List<int>> converter) {
-  List<int> bytes = <int>[];
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback(bytes.addAll);
-  var stringConversionSink = converter.startChunkedConversion(byteSink);
-  for (int i = 0; i < str.length; i += chunkSize) {
-    if (i + chunkSize <= str.length) {
-      stringConversionSink.add(str.substring(i, i + chunkSize));
-    } else {
-      stringConversionSink.add(str.substring(i));
-    }
-  }
-  stringConversionSink.close();
-  return bytes;
-}
-
-String decode(
-    List<int> bytes, int chunkSize, Converter<List<int>, String> converter) {
-  StringBuffer buf = new StringBuffer();
-  var stringSink = new StringConversionSink.fromStringSink(buf);
-  var byteConversionSink = converter.startChunkedConversion(stringSink);
-  for (int i = 0; i < bytes.length; i += chunkSize) {
-    if (i + chunkSize <= bytes.length) {
-      byteConversionSink.add(bytes.sublist(i, i + chunkSize));
-    } else {
-      byteConversionSink.add(bytes.sublist(i));
-    }
-  }
-  byteConversionSink.close();
-  return buf.toString();
-}
-
-void testChunkedConversions() {
-  // Check encoding.
-  for (var converter in [
-    ASCII.encoder,
-    new AsciiCodec().encoder,
-    new AsciiEncoder()
-  ]) {
-    for (int chunkSize in [1, 2, 5, 50]) {
-      for (var asciiString in asciiStrings) {
-        var units = asciiString.codeUnits.toList();
-        List bytes = encode(asciiString, chunkSize, converter);
-        Expect.listEquals(units, bytes);
-      }
-      for (var nonAsciiString in nonAsciiStrings) {
-        Expect.throws(() {
-          encode(nonAsciiString, chunkSize, converter);
-        });
-      }
-    }
-  }
-  // Check decoding.
-  for (var converter in [
-    ASCII.decoder,
-    new AsciiCodec().decoder,
-    new AsciiDecoder()
-  ]) {
-    for (int chunkSize in [1, 2, 5, 50]) {
-      for (var asciiString in asciiStrings) {
-        var units = asciiString.codeUnits.toList();
-        Expect.equals(asciiString, decode(units, chunkSize, converter));
-      }
-      for (var nonAsciiString in nonAsciiStrings) {
-        var units = nonAsciiString.codeUnits.toList();
-        Expect.throws(() {
-          decode(units, chunkSize, converter);
-        });
-      }
-    }
-  }
-}
diff --git a/tests/lib/convert/base64_test.dart b/tests/lib/convert/base64_test.dart
deleted file mode 100644
index c50a06c..0000000
--- a/tests/lib/convert/base64_test.dart
+++ /dev/null
@@ -1,298 +0,0 @@
-// 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 'dart:convert';
-import "dart:typed_data";
-import "package:expect/expect.dart";
-
-main() {
-  for (var list in [
-    [],
-    [0x00],
-    [0xff, 0x00],
-    [0xff, 0xaa, 0x55],
-    [0x00, 0x01, 0x02, 0x03],
-    new Iterable.generate(13).toList(),
-    new Iterable.generate(254).toList(),
-    new Iterable.generate(255).toList(),
-    new Iterable.generate(256).toList()
-  ]) {
-    testRoundtrip(list, "List#${list.length}");
-    testRoundtrip(new Uint8List.fromList(list), "Uint8List#${list.length}");
-  }
-  testErrors();
-  testIssue25577();
-
-  // Decoder is lenienet with mixed styles.
-  Expect.listEquals([0xfb, 0xff, 0xbf, 0x00], BASE64.decode("-_+/AA%3D="));
-  Expect.listEquals([0xfb, 0xff, 0xbf, 0x00], BASE64.decode("-_+/AA=%3D"));
-}
-
-void testRoundtrip(list, name) {
-  // Direct.
-  String encodedNormal = BASE64.encode(list);
-  String encodedPercent = encodedNormal.replaceAll("=", "%3D");
-  String uriEncoded = BASE64URL.encode(list);
-  String expectedUriEncoded =
-      encodedNormal.replaceAll("+", "-").replaceAll("/", "_");
-  Expect.equals(expectedUriEncoded, uriEncoded);
-
-  List result = BASE64.decode(encodedNormal);
-  Expect.listEquals(list, result, name);
-  result = BASE64.decode(encodedPercent);
-  Expect.listEquals(list, result, name);
-  result = BASE64.decode(uriEncoded);
-  Expect.listEquals(list, result, name);
-
-  int increment = list.length ~/ 7 + 1;
-  // Chunked.
-  for (int i = 0; i < list.length; i += increment) {
-    for (int j = i; j < list.length; j += increment) {
-      // Normal
-      {
-        // Using add/close
-        var results;
-        var sink = new ChunkedConversionSink.withCallback((v) {
-          results = v;
-        });
-        var encoder = BASE64.encoder.startChunkedConversion(sink);
-        encoder.add(list.sublist(0, i));
-        encoder.add(list.sublist(i, j));
-        encoder.add(list.sublist(j, list.length));
-        encoder.close();
-        var name = "0-$i-$j-${list.length}: list";
-        Expect.equals(encodedNormal, results.join(""), name);
-      }
-      {
-        // Using addSlice
-        var results;
-        var sink = new ChunkedConversionSink.withCallback((v) {
-          results = v;
-        });
-        var encoder = BASE64.encoder.startChunkedConversion(sink);
-        encoder.addSlice(list, 0, i, false);
-        encoder.addSlice(list, i, j, false);
-        encoder.addSlice(list, j, list.length, true);
-        var name = "0-$i-$j-${list.length}: $list";
-        Expect.equals(encodedNormal, results.join(""), name);
-      }
-      // URI
-      {
-        // Using add/close
-        var results;
-        var sink = new ChunkedConversionSink.withCallback((v) {
-          results = v;
-        });
-        var encoder = BASE64URL.encoder.startChunkedConversion(sink);
-        encoder.add(list.sublist(0, i));
-        encoder.add(list.sublist(i, j));
-        encoder.add(list.sublist(j, list.length));
-        encoder.close();
-        var name = "0-$i-$j-${list.length}: list";
-        Expect.equals(uriEncoded, results.join(""), name);
-      }
-      {
-        // Using addSlice
-        var results;
-        var sink = new ChunkedConversionSink.withCallback((v) {
-          results = v;
-        });
-        var encoder = BASE64URL.encoder.startChunkedConversion(sink);
-        encoder.addSlice(list, 0, i, false);
-        encoder.addSlice(list, i, j, false);
-        encoder.addSlice(list, j, list.length, true);
-        var name = "0-$i-$j-${list.length}: $list";
-        Expect.equals(uriEncoded, results.join(""), name);
-      }
-    }
-  }
-
-  for (var encoded in [encodedNormal, encodedPercent, uriEncoded]) {
-    increment = encoded.length ~/ 7 + 1;
-    for (int i = 0; i < encoded.length; i += increment) {
-      for (int j = i; j < encoded.length; j += increment) {
-        {
-          // Using add/close
-          var results;
-          var sink = new ChunkedConversionSink.withCallback((v) {
-            results = v;
-          });
-          var decoder = BASE64.decoder.startChunkedConversion(sink);
-          decoder.add(encoded.substring(0, i));
-          decoder.add(encoded.substring(i, j));
-          decoder.add(encoded.substring(j, encoded.length));
-          decoder.close();
-          var name = "0-$i-$j-${encoded.length}: $encoded";
-          Expect.listEquals(list, results.expand((x) => x).toList(), name);
-        }
-        {
-          // Using addSlice
-          var results;
-          var sink = new ChunkedConversionSink.withCallback((v) {
-            results = v;
-          });
-          var decoder = BASE64.decoder.startChunkedConversion(sink);
-          decoder.addSlice(encoded, 0, i, false);
-          decoder.addSlice(encoded, i, j, false);
-          decoder.addSlice(encoded, j, encoded.length, true);
-          var name = "0-$i-$j-${encoded.length}: $encoded";
-          Expect.listEquals(list, results.expand((x) => x).toList(), name);
-        }
-      }
-    }
-  }
-}
-
-bool isFormatException(e) => e is FormatException;
-bool isArgumentError(e) => e is ArgumentError;
-
-void testErrors() {
-  void badChunkDecode(List<String> list) {
-    Expect.throws(() {
-      var sink = new ChunkedConversionSink.withCallback((v) {
-        Expect.fail("Should have thrown: chunk $list");
-      });
-      var c = BASE64.decoder.startChunkedConversion(sink);
-      for (String string in list) {
-        c.add(string);
-      }
-      c.close();
-    }, isFormatException, "chunk $list");
-  }
-
-  void badDecode(String string) {
-    Expect.throws(() => BASE64.decode(string), isFormatException, string);
-    Expect.throws(() => BASE64URL.decode(string), isFormatException, string);
-    badChunkDecode([string]);
-    badChunkDecode(["", string]);
-    badChunkDecode([string, ""]);
-    badChunkDecode([string, "", ""]);
-    badChunkDecode(["", string, ""]);
-  }
-
-  badDecode("A");
-  badDecode("AA");
-  badDecode("AAA");
-  badDecode("AAAAA");
-  badDecode("AAAAAA");
-  badDecode("AAAAAAA");
-  badDecode("AAAA=");
-  badDecode("AAAA==");
-  badDecode("AAAA===");
-  badDecode("AAAA====");
-  badDecode("AAAA%");
-  badDecode("AAAA%3");
-  badDecode("AAAA%3D");
-  badDecode("AAA%3D%");
-  badDecode("AAA%3D=");
-  badDecode("A=");
-  badDecode("A=A");
-  badDecode("A==");
-  badDecode("A==A");
-  badDecode("A===");
-  badDecode("====");
-  badDecode("AA=");
-  badDecode("AA%=");
-  badDecode("AA%3");
-  badDecode("AA%3D");
-  badDecode("AA===");
-  badDecode("AAA==");
-  badDecode("AAA=AAAA");
-  badDecode("AAA\x00");
-  badDecode("AAA=\x00");
-  badDecode("AAA\x80");
-  badDecode("AAA\xFF");
-  badDecode("AAA\u{141}");
-  badDecode("AAA\u{1041}");
-  badDecode("AAA\u{10041}");
-  badDecode("AA\u{141}=");
-  badDecode("AA\u{1041}=");
-  badDecode("AA\u{10041}=");
-
-  var alphabet =
-      "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/-_";
-  var units = alphabet.codeUnits;
-  for (int i = 0; i < 128; i++) {
-    if (!units.contains(i)) {
-      badDecode(new String.fromCharCode(i) * 4);
-    }
-  }
-
-  badChunkDecode(["A", "A"]);
-  badChunkDecode(["A", "A", "A"]);
-  badChunkDecode(["A", "A", "="]);
-  badChunkDecode(["A", "A", "=", ""]);
-  badChunkDecode(["A", "A", "=", "=", "="]);
-  badChunkDecode(["AAA", "=="]);
-  badChunkDecode(["A", "A", "A"]);
-  badChunkDecode(["AAA", ""]);
-  badChunkDecode(["AA=", ""]);
-  badChunkDecode(["AB==", ""]);
-
-  badChunkEncode(list) {
-    for (int i = 0; i < list.length; i++) {
-      for (int j = 0; j < list.length; j++) {
-        Expect.throws(() {
-          var sink = new ChunkedConversionSink.withCallback((v) {
-            Expect.fail("Should have thrown: chunked $list");
-          });
-          var c = BASE64.encoder.startChunkedConversion(sink);
-          c.add(list.sublist(0, i));
-          c.add(list.sublist(i, j));
-          c.add(list.sublist(j, list.length));
-          c.close();
-        }, isArgumentError, "chunk $list");
-      }
-    }
-    for (int i = 0; i < list.length; i++) {
-      for (int j = 0; j < list.length; j++) {
-        Expect.throws(() {
-          var sink = new ChunkedConversionSink.withCallback((v) {
-            Expect.fail("Should have thrown: chunked $list");
-          });
-          var c = BASE64.encoder.startChunkedConversion(sink);
-          c.addSlice(list, 0, i, false);
-          c.addSlice(list, i, j, false);
-          c.addSlice(list, j, list.length, true);
-        }, isArgumentError, "chunk $list");
-      }
-    }
-  }
-
-  void badEncode(int invalid) {
-    Expect.throws(() {
-      BASE64.encode([invalid]);
-    }, isArgumentError, "$invalid");
-    Expect.throws(() {
-      BASE64.encode([0, invalid, 0]);
-    }, isArgumentError, "$invalid");
-    badChunkEncode([invalid]);
-    badChunkEncode([0, invalid]);
-    badChunkEncode([0, 0, invalid]);
-    badChunkEncode([0, invalid, 0]);
-    badChunkEncode([invalid, 0, 0]);
-  }
-
-  badEncode(-1);
-  badEncode(0x100);
-  badEncode(0x1000);
-  badEncode(0x10000);
-  badEncode(0x100000000); //         //# 01: ok
-  badEncode(0x10000000000000000); // //# 01: continued
-}
-
-void testIssue25577() {
-  // Regression test for http://dartbug.com/25577
-  // Should not fail in checked mode.
-  StringConversionSink decodeSink =
-      BASE64.decoder.startChunkedConversion(new TestSink<List<int>>());
-  ByteConversionSink encodeSink =
-      BASE64.encoder.startChunkedConversion(new TestSink<String>());
-}
-
-// Implementation of Sink<T> to test type constraints.
-class TestSink<T> implements Sink<T> {
-  void add(T value) {}
-  void close() {}
-}
diff --git a/tests/lib/convert/chunked_conversion1_test.dart b/tests/lib/convert/chunked_conversion1_test.dart
deleted file mode 100644
index fb57d7d..0000000
--- a/tests/lib/convert/chunked_conversion1_test.dart
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright (c) 2013, 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:convert';
-
-import 'package:expect/expect.dart';
-
-// This test implements a new special interface that can be used to
-// send data more efficiently between two converters.
-
-abstract class MyChunkedIntSink extends ChunkedConversionSink<int> {
-  MyChunkedIntSink();
-  factory MyChunkedIntSink.from(sink) = IntAdapterSink;
-  factory MyChunkedIntSink.withCallback(callback) {
-    var sink = new ChunkedConversionSink.withCallback(callback);
-    return new MyChunkedIntSink.from(sink);
-  }
-
-  add(int i);
-  close();
-
-  // The special method.
-  specialI(i);
-}
-
-class IntAdapterSink extends MyChunkedIntSink {
-  final _sink;
-  IntAdapterSink(this._sink);
-  add(o) => _sink.add(o);
-  close() => _sink.close();
-  specialI(o) => add(o);
-}
-
-abstract class MyChunkedBoolSink extends ChunkedConversionSink<bool> {
-  MyChunkedBoolSink();
-  factory MyChunkedBoolSink.from(sink) = BoolAdapterSink;
-  factory MyChunkedBoolSink.withCallback(callback) {
-    var sink = new ChunkedConversionSink.withCallback(callback);
-    return new MyChunkedBoolSink.from(sink);
-  }
-
-  add(bool b);
-  close();
-
-  specialB(bool b);
-}
-
-class BoolAdapterSink extends MyChunkedBoolSink {
-  final _sink;
-  BoolAdapterSink(this._sink);
-  add(o) => _sink.add(o);
-  close() => _sink.close();
-  specialB(o) => add(o);
-}
-
-class IntBoolConverter1 extends Converter<int, bool> {
-  bool convert(int input) => input > 0;
-
-  startChunkedConversion(sink) {
-    if (sink is! MyChunkedBoolSink) sink = new MyChunkedBoolSink.from(sink);
-    return new IntBoolConverter1Sink(sink);
-  }
-}
-
-class BoolIntConverter1 extends Converter<bool, int> {
-  int convert(bool input) => input ? 1 : 0;
-
-  startChunkedConversion(sink) {
-    if (sink is! MyChunkedIntSink) sink = new MyChunkedIntSink.from(sink);
-    return new BoolIntConverter1Sink(sink);
-  }
-}
-
-int specialICounter = 0;
-int specialBCounter = 0;
-
-class IntBoolConverter1Sink extends MyChunkedIntSink {
-  var outSink;
-  IntBoolConverter1Sink(this.outSink);
-
-  add(int i) {
-    outSink.specialB(i > 0);
-  }
-
-  specialI(int i) {
-    specialICounter++;
-    add(i);
-  }
-
-  close() => outSink.close();
-}
-
-class BoolIntConverter1Sink extends MyChunkedBoolSink {
-  var outSink;
-  BoolIntConverter1Sink(this.outSink);
-
-  add(bool b) {
-    outSink.specialI(b ? 1 : 0);
-  }
-
-  specialB(bool b) {
-    specialBCounter++;
-    add(b);
-  }
-
-  close() => outSink.close();
-}
-
-class IdentityConverter extends Converter {
-  convert(x) => x;
-
-  startChunkedConversion(sink) {
-    return new IdentitySink(sink);
-  }
-}
-
-class IdentitySink extends ChunkedConversionSink {
-  final _sink;
-  IdentitySink(this._sink);
-  add(o) => _sink.add(o);
-  close() => _sink.close();
-}
-
-main() {
-  var converter1, converter2, intSink, intSink2, hasExecuted, boolSink, fused;
-  var converter3, fused2, sink, sink2;
-
-  // Test int->bool converter individually.
-  converter1 = new IntBoolConverter1();
-  Expect.listEquals(
-      [true, false, true], [2, -2, 2].map(converter1.convert).toList());
-  hasExecuted = false;
-  boolSink = new MyChunkedBoolSink.withCallback((value) {
-    hasExecuted = true;
-    Expect.listEquals([true, false, true], value);
-  });
-  intSink = converter1.startChunkedConversion(boolSink);
-  intSink.add(3);
-  intSink.specialI(-3);
-  intSink.add(3);
-  intSink.close();
-  Expect.isTrue(hasExecuted);
-  Expect.equals(1, specialICounter);
-  specialICounter = 0;
-  hasExecuted = false;
-
-  // Test bool->int converter individually.
-  converter2 = new BoolIntConverter1();
-  Expect.listEquals(
-      [1, 0, 1], [true, false, true].map(converter2.convert).toList());
-  hasExecuted = false;
-  intSink = new MyChunkedIntSink.withCallback((value) {
-    hasExecuted = true;
-    Expect.listEquals([1, 0, 1], value);
-  });
-  boolSink = converter2.startChunkedConversion(intSink);
-  boolSink.specialB(true);
-  boolSink.add(false);
-  boolSink.add(true);
-  boolSink.close();
-  Expect.isTrue(hasExecuted);
-  Expect.equals(1, specialBCounter);
-  specialBCounter = 0;
-  hasExecuted = false;
-
-  // Test identity converter indidivually.
-  converter3 = new IdentityConverter();
-  hasExecuted = false;
-  sink = new ChunkedConversionSink.withCallback((value) {
-    hasExecuted = true;
-    Expect.listEquals([1, 2, 3], value);
-  });
-  sink2 = converter3.startChunkedConversion(sink);
-  [1, 2, 3].forEach(sink2.add);
-  sink2.close();
-  Expect.isTrue(hasExecuted);
-  hasExecuted = false;
-
-  // Test fused converters.
-  fused = converter1.fuse(converter2);
-  Expect.listEquals([1, 0, 1], [2, -2, 2].map(fused.convert).toList());
-  hasExecuted = false;
-  intSink2 = new MyChunkedIntSink.withCallback((value) {
-    hasExecuted = true;
-    Expect.listEquals([1, 0, 1], value);
-  });
-  intSink = fused.startChunkedConversion(intSink2);
-  intSink.specialI(3);
-  intSink.add(-3);
-  intSink.add(3);
-  intSink.close();
-  Expect.isTrue(hasExecuted);
-  Expect.equals(3, specialBCounter);
-  specialBCounter = 0;
-  Expect.equals(1, specialICounter);
-  specialICounter = 0;
-  hasExecuted = false;
-
-  // With identity in front.
-  fused2 = converter3.fuse(fused);
-  hasExecuted = false;
-  intSink2 = new MyChunkedIntSink.withCallback((value) {
-    hasExecuted = true;
-    Expect.listEquals([1, 0, 1], value);
-  });
-  sink = fused2.startChunkedConversion(intSink2);
-  Expect.isFalse(sink is MyChunkedIntSink);
-  sink.add(3);
-  sink.add(-3);
-  sink.add(3);
-  sink.close();
-  Expect.isTrue(hasExecuted);
-  Expect.equals(3, specialBCounter);
-  specialBCounter = 0;
-  Expect.equals(0, specialICounter);
-  specialICounter = 0;
-  hasExecuted = false;
-
-  // With identity at the end.
-  fused2 = fused.fuse(converter3);
-  hasExecuted = false;
-  sink = new ChunkedConversionSink.withCallback((value) {
-    hasExecuted = true;
-    Expect.listEquals([1, 0, 1], value);
-  });
-  intSink = fused2.startChunkedConversion(sink);
-  Expect.isTrue(intSink is MyChunkedIntSink);
-  intSink.specialI(3);
-  intSink.add(-3);
-  intSink.specialI(3);
-  intSink.close();
-  Expect.isTrue(hasExecuted);
-  Expect.equals(3, specialBCounter);
-  specialBCounter = 0;
-  Expect.equals(2, specialICounter);
-  specialICounter = 0;
-  hasExecuted = false;
-
-  // With identity between the two converters.
-  fused = converter1.fuse(converter3).fuse(converter2);
-  Expect.listEquals([1, 0, 1], [2, -2, 2].map(fused.convert).toList());
-  hasExecuted = false;
-  intSink2 = new MyChunkedIntSink.withCallback((value) {
-    hasExecuted = true;
-    Expect.listEquals([1, 0, 1], value);
-  });
-  intSink = fused.startChunkedConversion(intSink2);
-  intSink.specialI(3);
-  intSink.add(-3);
-  intSink.add(3);
-  intSink.close();
-  Expect.isTrue(hasExecuted);
-  Expect.equals(0, specialBCounter);
-  specialBCounter = 0;
-  Expect.equals(1, specialICounter);
-  specialICounter = 0;
-  hasExecuted = false;
-}
diff --git a/tests/lib/convert/chunked_conversion2_test.dart b/tests/lib/convert/chunked_conversion2_test.dart
deleted file mode 100644
index 7737692..0000000
--- a/tests/lib/convert/chunked_conversion2_test.dart
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (c) 2013, 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:convert';
-
-import 'package:expect/expect.dart';
-
-// Test that the String and ByteConversionSinks make a copy when they need to
-// adapt.
-
-class MyByteSink extends ByteConversionSinkBase {
-  var accumulator = [];
-  add(List<int> bytes) {
-    accumulator.add(bytes);
-  }
-
-  close() {}
-}
-
-void testBase() {
-  var byteSink = new MyByteSink();
-  var bytes = [1];
-  byteSink.addSlice(bytes, 0, 1, false);
-  bytes[0] = 2;
-  byteSink.addSlice(bytes, 0, 1, true);
-  Expect.equals(1, byteSink.accumulator[0][0]);
-  Expect.equals(2, byteSink.accumulator[1][0]);
-}
-
-class MyChunkedSink extends ChunkedConversionSink {
-  var accumulator = [];
-  add(List<int> bytes) {
-    accumulator.add(bytes);
-  }
-
-  close() {}
-}
-
-void testAdapter() {
-  var chunkedSink = new MyChunkedSink();
-  var byteSink = new ByteConversionSink.from(chunkedSink);
-  var bytes = [1];
-  byteSink.addSlice(bytes, 0, 1, false);
-  bytes[0] = 2;
-  byteSink.addSlice(bytes, 0, 1, true);
-  Expect.equals(1, chunkedSink.accumulator[0][0]);
-  Expect.equals(2, chunkedSink.accumulator[1][0]);
-}
-
-void main() {
-  testBase();
-  testAdapter();
-}
diff --git a/tests/lib/convert/chunked_conversion_json_decode1_test.dart b/tests/lib/convert/chunked_conversion_json_decode1_test.dart
deleted file mode 100644
index 646e1e9..0000000
--- a/tests/lib/convert/chunked_conversion_json_decode1_test.dart
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-
-final TESTS = [
-  [5, '5'],
-  [-42, '-42'],
-  [3.14, '3.14'],
-  [true, 'true'],
-  [false, 'false'],
-  [null, 'null'],
-  ['quote"or\'', '"quote\\"or\'"'],
-  ['', '""'],
-  [[], "[]"],
-  [
-    [3, -4.5, true, "hi", false],
-    '[3,-4.5,true,"hi",false]'
-  ],
-  [
-    [null],
-    "[null]"
-  ],
-  [
-    [
-      [null]
-    ],
-    "[[null]]"
-  ],
-  [
-    [
-      [3]
-    ],
-    "[[3]]"
-  ],
-  [{}, "{}"],
-  [
-    {"x": 3, "y": 4.5, "z": "hi", "u": true, "v": false},
-    '{"x":3,"y":4.5,"z":"hi","u":true,"v":false}'
-  ],
-  [
-    {"x": null},
-    '{"x":null}'
-  ],
-  [
-    {"x": {}},
-    '{"x":{}}'
-  ],
-  // Note that -0.0 won't be treated the same in JS. The Json spec seems to
-  // allow it, though.
-  [
-    {"hi there": 499, "'": -0.0},
-    '{"hi there":499,"\'":-0.0}'
-  ],
-  [r'\foo', r'"\\foo"'],
-];
-
-bool isJsonEqual(o1, o2) {
-  if (o1 == o2) return true;
-  if (o1 is List && o2 is List) {
-    if (o1.length != o2.length) return false;
-    for (int i = 0; i < o1.length; i++) {
-      if (!isJsonEqual(o1[i], o2[i])) return false;
-    }
-    return true;
-  }
-  if (o1 is Map && o2 is Map) {
-    if (o1.length != o2.length) return false;
-    for (var key in o1.keys) {
-      Expect.isTrue(key is String);
-      if (!o2.containsKey(key)) return false;
-      if (!isJsonEqual(o1[key], o2[key])) return false;
-    }
-    return true;
-  }
-  return false;
-}
-
-Object decode(String str) {
-  Object result;
-  var decoder = new JsonDecoder(null);
-  ChunkedConversionSink objectSink =
-      new ChunkedConversionSink.withCallback((x) => result = x.single);
-  var stringConversionSink = decoder.startChunkedConversion(objectSink);
-  stringConversionSink.add(str);
-  stringConversionSink.close();
-  return result;
-}
-
-Object decode2(String str) {
-  Object result;
-  var decoder = new JsonDecoder(null);
-  ChunkedConversionSink objectSink =
-      new ChunkedConversionSink.withCallback((x) => result = x.single);
-  var stringConversionSink = decoder.startChunkedConversion(objectSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  stringSink.write(str);
-  stringSink.close();
-  return result;
-}
-
-Object decode3(String str) {
-  Object result;
-  var decoder = new JsonDecoder(null);
-  ChunkedConversionSink objectSink =
-      new ChunkedConversionSink.withCallback((x) => result = x.single);
-  var stringConversionSink = decoder.startChunkedConversion(objectSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  str.codeUnits.forEach(stringSink.writeCharCode);
-  stringSink.close();
-  return result;
-}
-
-Object decode4(String str) {
-  Object result;
-  var decoder = new JsonDecoder(null);
-  ChunkedConversionSink objectSink =
-      new ChunkedConversionSink.withCallback((x) => result = x.single);
-  var stringConversionSink = decoder.startChunkedConversion(objectSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  str.runes.forEach(stringSink.writeCharCode);
-  stringSink.close();
-  return result;
-}
-
-Object decode5(String str) {
-  Object result;
-  var decoder = new JsonDecoder(null);
-  ChunkedConversionSink objectSink =
-      new ChunkedConversionSink.withCallback((x) => result = x.single);
-  var stringConversionSink = decoder.startChunkedConversion(objectSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  Object tmpBytes = UTF8.encode(str);
-  inputByteSink.add(tmpBytes);
-  inputByteSink.close();
-  return result;
-}
-
-Object decode6(String str) {
-  Object result;
-  var decoder = new JsonDecoder(null);
-  ChunkedConversionSink objectSink =
-      new ChunkedConversionSink.withCallback((x) => result = x.single);
-  var stringConversionSink = decoder.startChunkedConversion(objectSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  var tmpBytes = UTF8.encode(str);
-  tmpBytes.forEach((b) => inputByteSink.addSlice([0, b, 1], 1, 2, false));
-  inputByteSink.close();
-  return result;
-}
-
-Object decode7(String str) {
-  Object result;
-  var decoder = new JsonDecoder(null);
-  ChunkedConversionSink objectSink =
-      new ChunkedConversionSink.withCallback((x) => result = x.single);
-  var stringConversionSink = decoder.startChunkedConversion(objectSink);
-  stringConversionSink.addSlice("1" + str + "2", 1, str.length + 1, false);
-  stringConversionSink.close();
-  return result;
-}
-
-main() {
-  var tests = TESTS.expand((test) {
-    var object = test[0];
-    var string = test[1];
-    var longString = "                                                        "
-        "                                                        "
-        "$string"
-        "                                                        "
-        "                                                        ";
-    return [
-      test,
-      [object, longString]
-    ];
-  });
-  for (var test in TESTS) {
-    var o = test[0];
-    var string = test[1];
-    Expect.isTrue(isJsonEqual(o, decode(string)));
-    Expect.isTrue(isJsonEqual(o, decode2(string)));
-    Expect.isTrue(isJsonEqual(o, decode3(string)));
-    Expect.isTrue(isJsonEqual(o, decode4(string)));
-    Expect.isTrue(isJsonEqual(o, decode5(string)));
-    Expect.isTrue(isJsonEqual(o, decode6(string)));
-    Expect.isTrue(isJsonEqual(o, decode7(string)));
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_json_encode1_test.dart b/tests/lib/convert/chunked_conversion_json_encode1_test.dart
deleted file mode 100644
index 001d609..0000000
--- a/tests/lib/convert/chunked_conversion_json_encode1_test.dart
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-
-final TESTS = [
-  [5, '5'],
-  [-42, '-42'],
-  [3.14, '3.14'],
-  [true, 'true'],
-  [false, 'false'],
-  [null, 'null'],
-  ['quote"or\'', '"quote\\"or\'"'],
-  ['', '""'],
-  [[], "[]"],
-  [
-    [3, -4.5, true, "hi", false],
-    '[3,-4.5,true,"hi",false]'
-  ],
-  [
-    [null],
-    "[null]"
-  ],
-  [
-    [
-      [null]
-    ],
-    "[[null]]"
-  ],
-  [
-    [
-      [3]
-    ],
-    "[[3]]"
-  ],
-  [{}, "{}"],
-  [
-    {"x": 3, "y": 4.5, "z": "hi", "u": true, "v": false},
-    '{"x":3,"y":4.5,"z":"hi","u":true,"v":false}'
-  ],
-  [
-    {"x": null},
-    '{"x":null}'
-  ],
-  [
-    {"x": {}},
-    '{"x":{}}'
-  ],
-  // Note that -0.0 won't be treated the same in JS. The Json spec seems to
-  // allow it, though.
-  [
-    {"hi there": 499, "'": -0.0},
-    '{"hi there":499,"\'":-0.0}'
-  ],
-  [r'\foo', r'"\\foo"'],
-];
-
-class MyStringConversionSink extends StringConversionSinkBase {
-  var buffer = new StringBuffer();
-  var callback;
-
-  MyStringConversionSink(this.callback);
-
-  addSlice(str, start, end, bool isLast) {
-    buffer.write(str.substring(start, end));
-    if (isLast) close();
-  }
-
-  close() {
-    callback(buffer.toString());
-  }
-}
-
-String encode(Object o) {
-  var result;
-  var encoder = new JsonEncoder();
-  ChunkedConversionSink stringSink =
-      new MyStringConversionSink((x) => result = x);
-  var objectSink = new JsonEncoder().startChunkedConversion(stringSink);
-  objectSink.add(o);
-  objectSink.close();
-  return result;
-}
-
-String encode2(Object o) {
-  var result;
-  var encoder = new JsonEncoder();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.withCallback((x) => result = x);
-  var objectSink = encoder.startChunkedConversion(stringSink);
-  objectSink.add(o);
-  objectSink.close();
-  return result;
-}
-
-main() {
-  for (var test in TESTS) {
-    var o = test[0];
-    var expected = test[1];
-    Expect.equals(expected, encode(o));
-    Expect.equals(expected, encode2(o));
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_utf82_test.dart b/tests/lib/convert/chunked_conversion_utf82_test.dart
deleted file mode 100644
index 1201892..0000000
--- a/tests/lib/convert/chunked_conversion_utf82_test.dart
+++ /dev/null
@@ -1,287 +0,0 @@
-// Copyright (c) 2013, 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 utf8_test;
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-String decode(List<int> bytes, int chunkSize) {
-  StringBuffer buffer = new StringBuffer();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.fromStringSink(buffer);
-  var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
-  int i = 0;
-  while (i < bytes.length) {
-    List nextChunk = [];
-    for (int j = 0; j < chunkSize; j++) {
-      if (i < bytes.length) {
-        nextChunk.add(bytes[i]);
-        i++;
-      }
-    }
-    byteSink.add(nextChunk);
-  }
-  byteSink.close();
-  return buffer.toString();
-}
-
-String decodeAllowMalformed(List<int> bytes, int chunkSize) {
-  StringBuffer buffer = new StringBuffer();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.fromStringSink(buffer);
-  var decoder = new Utf8Decoder(allowMalformed: true);
-  var byteSink = decoder.startChunkedConversion(stringSink);
-  int i = 0;
-  while (i < bytes.length) {
-    List nextChunk = [];
-    for (int j = 0; j < chunkSize; j++) {
-      if (i < bytes.length) {
-        nextChunk.add(bytes[i]);
-        i++;
-      }
-    }
-    byteSink.add(nextChunk);
-  }
-  byteSink.close();
-  return buffer.toString();
-}
-
-final TESTS = [
-  // Unfinished UTF-8 sequences.
-  [0xc3],
-  [0xE2, 0x82],
-  [0xF0, 0xA4, 0xAD],
-  // Overlong encoding of euro-sign.
-  [0xF0, 0x82, 0x82, 0xAC],
-  // Other overlong/unfinished sequences.
-  [0xC0],
-  [0xC1],
-  [0xF5],
-  [0xF6],
-  [0xF7],
-  [0xF8],
-  [0xF9],
-  [0xFA],
-  [0xFB],
-  [0xFC],
-  [0xFD],
-  [0xFE],
-  [0xFF],
-  [0xC0, 0x80],
-  [0xC1, 0x80],
-  // Outside valid range.
-  [0xF4, 0xBF, 0xBF, 0xBF]
-];
-
-final TESTS2 = [
-  // Test that 0xC0|1, 0x80 does not eat the next character.
-  [
-    [0xC0, 0x80, 0x61],
-    "Xa"
-  ],
-  [
-    [0xC1, 0x80, 0x61],
-    "Xa"
-  ],
-  // 0xF5 .. 0xFF never appear in valid UTF-8 sequences.
-  [
-    [0xF5, 0x80],
-    "XX"
-  ],
-  [
-    [0xF6, 0x80],
-    "XX"
-  ],
-  [
-    [0xF7, 0x80],
-    "XX"
-  ],
-  [
-    [0xF8, 0x80],
-    "XX"
-  ],
-  [
-    [0xF9, 0x80],
-    "XX"
-  ],
-  [
-    [0xFA, 0x80],
-    "XX"
-  ],
-  [
-    [0xFB, 0x80],
-    "XX"
-  ],
-  [
-    [0xFC, 0x80],
-    "XX"
-  ],
-  [
-    [0xFD, 0x80],
-    "XX"
-  ],
-  [
-    [0xFE, 0x80],
-    "XX"
-  ],
-  [
-    [0xFF, 0x80],
-    "XX"
-  ],
-  [
-    [0xF5, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF6, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF7, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF8, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF9, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFA, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFB, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFC, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFD, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFE, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFF, 0x80, 0x61],
-    "XXa"
-  ],
-  // Characters outside the valid range.
-  [
-    [0xF5, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF6, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF7, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF8, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF9, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFA, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFB, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFC, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFD, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFE, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFF, 0x80, 0x80, 0x61],
-    "XXXa"
-  ]
-];
-
-main() {
-  var allTests = TESTS.expand((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    return [
-      [test, "\u{FFFD}"],
-      [
-        new List.from([0x61])..addAll(test),
-        "a\u{FFFD}"
-      ],
-      [
-        new List.from([0x61])
-          ..addAll(test)
-          ..add(0x61),
-        "a\u{FFFD}a"
-      ],
-      [new List.from(test)..add(0x61), "\u{FFFD}a"],
-      [new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
-      [
-        new List.from(test)
-          ..add(0x61)
-          ..addAll(test),
-        "\u{FFFD}a\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test),
-        "å\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
-        "å\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5]),
-        "\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
-        "\u{FFFD}å\u{FFFD}"
-      ]
-    ];
-  });
-
-  var allTests2 = TESTS2.map((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    String expected = test[1].replaceAll("X", "\u{FFFD}");
-    return [test[0], expected];
-  });
-
-  for (var test in []..addAll(allTests)..addAll(allTests2)) {
-    List<int> bytes = test[0];
-    Expect.throws(() => decode(bytes, 1), (e) => e is FormatException);
-    Expect.throws(() => decode(bytes, 2), (e) => e is FormatException);
-    Expect.throws(() => decode(bytes, 3), (e) => e is FormatException);
-    Expect.throws(() => decode(bytes, 4), (e) => e is FormatException);
-
-    String expected = test[1];
-    Expect.equals(expected, decodeAllowMalformed(bytes, 1));
-    Expect.equals(expected, decodeAllowMalformed(bytes, 2));
-    Expect.equals(expected, decodeAllowMalformed(bytes, 3));
-    Expect.equals(expected, decodeAllowMalformed(bytes, 4));
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_utf83_test.dart b/tests/lib/convert/chunked_conversion_utf83_test.dart
deleted file mode 100644
index bf7cea6..0000000
--- a/tests/lib/convert/chunked_conversion_utf83_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// 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.
-
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-
-String decode(List<int> bytes, int chunkSize) {
-  StringBuffer buffer = new StringBuffer();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.fromStringSink(buffer);
-  var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
-  int i = 0;
-  while (i < bytes.length) {
-    List nextChunk = [];
-    for (int j = 0; j < chunkSize; j++) {
-      if (i < bytes.length) {
-        nextChunk.add(bytes[i]);
-        i++;
-      }
-    }
-    byteSink.add(nextChunk);
-  }
-  byteSink.close();
-  return buffer.toString();
-}
-
-String decodeAllowMalformed(List<int> bytes, int chunkSize) {
-  StringBuffer buffer = new StringBuffer();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.fromStringSink(buffer);
-  var decoder = new Utf8Decoder(allowMalformed: true);
-  var byteSink = decoder.startChunkedConversion(stringSink);
-  int i = 0;
-  while (i < bytes.length) {
-    List nextChunk = [];
-    for (int j = 0; j < chunkSize; j++) {
-      if (i < bytes.length) {
-        nextChunk.add(bytes[i]);
-        i++;
-      }
-    }
-    byteSink.add(nextChunk);
-  }
-  byteSink.close();
-  return buffer.toString();
-}
-
-main() {
-  // Test that chunked UTF8-decoder removes leading BOM.
-  Expect.equals("a", decode([0xEF, 0xBB, 0xBF, 0x61], 1));
-  Expect.equals("a", decode([0xEF, 0xBB, 0xBF, 0x61], 2));
-  Expect.equals("a", decode([0xEF, 0xBB, 0xBF, 0x61], 3));
-  Expect.equals("a", decode([0xEF, 0xBB, 0xBF, 0x61], 4));
-  Expect.equals("a", decodeAllowMalformed([0xEF, 0xBB, 0xBF, 0x61], 1));
-  Expect.equals("a", decodeAllowMalformed([0xEF, 0xBB, 0xBF, 0x61], 2));
-  Expect.equals("a", decodeAllowMalformed([0xEF, 0xBB, 0xBF, 0x61], 3));
-  Expect.equals("a", decodeAllowMalformed([0xEF, 0xBB, 0xBF, 0x61], 4));
-  Expect.equals("", decode([0xEF, 0xBB, 0xBF], 1));
-  Expect.equals("", decode([0xEF, 0xBB, 0xBF], 2));
-  Expect.equals("", decode([0xEF, 0xBB, 0xBF], 3));
-  Expect.equals("", decode([0xEF, 0xBB, 0xBF], 4));
-  Expect.equals("", decodeAllowMalformed([0xEF, 0xBB, 0xBF], 1));
-  Expect.equals("", decodeAllowMalformed([0xEF, 0xBB, 0xBF], 2));
-  Expect.equals("", decodeAllowMalformed([0xEF, 0xBB, 0xBF], 3));
-  Expect.equals("", decodeAllowMalformed([0xEF, 0xBB, 0xBF], 4));
-  Expect.equals("a\u{FEFF}", decode([0x61, 0xEF, 0xBB, 0xBF], 1));
-  Expect.equals("a\u{FEFF}", decode([0x61, 0xEF, 0xBB, 0xBF], 2));
-  Expect.equals("a\u{FEFF}", decode([0x61, 0xEF, 0xBB, 0xBF], 3));
-  Expect.equals("a\u{FEFF}", decode([0x61, 0xEF, 0xBB, 0xBF], 4));
-  Expect.equals("a\u{FEFF}", decodeAllowMalformed([0x61, 0xEF, 0xBB, 0xBF], 1));
-  Expect.equals("a\u{FEFF}", decodeAllowMalformed([0x61, 0xEF, 0xBB, 0xBF], 2));
-  Expect.equals("a\u{FEFF}", decodeAllowMalformed([0x61, 0xEF, 0xBB, 0xBF], 3));
-  Expect.equals("a\u{FEFF}", decodeAllowMalformed([0x61, 0xEF, 0xBB, 0xBF], 4));
-}
diff --git a/tests/lib/convert/chunked_conversion_utf84_test.dart b/tests/lib/convert/chunked_conversion_utf84_test.dart
deleted file mode 100644
index 4c1f28b..0000000
--- a/tests/lib/convert/chunked_conversion_utf84_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-import 'unicode_tests.dart';
-
-String decode(List<int> bytes, int chunkSize) {
-  StringBuffer buffer = new StringBuffer();
-  // Use a non-chunked interface.
-  String result;
-  ChunkedConversionSink chunkedSink =
-      new StringConversionSink.withCallback((decoded) => result = decoded);
-  var byteSink = new Utf8Decoder().startChunkedConversion(chunkedSink);
-  int i = 0;
-  while (i < bytes.length) {
-    List nextChunk = [];
-    for (int j = 0; j < chunkSize; j++) {
-      if (i < bytes.length) {
-        nextChunk.add(bytes[i]);
-        i++;
-      }
-    }
-    byteSink.add(nextChunk);
-  }
-  byteSink.close();
-  return result;
-}
-
-main() {
-  for (var test in UNICODE_TESTS) {
-    var bytes = test[0];
-    var expected = test[1];
-    Expect.stringEquals(expected, decode(bytes, 1));
-    Expect.stringEquals(expected, decode(bytes, 2));
-    Expect.stringEquals(expected, decode(bytes, 3));
-    Expect.stringEquals(expected, decode(bytes, 4));
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_utf85_test.dart b/tests/lib/convert/chunked_conversion_utf85_test.dart
deleted file mode 100644
index 059ede6..0000000
--- a/tests/lib/convert/chunked_conversion_utf85_test.dart
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-import 'unicode_tests.dart';
-
-List<int> encode(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  stringConversionSink.add(str);
-  stringConversionSink.close();
-  return bytes;
-}
-
-List<int> encode2(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  stringSink.write(str);
-  stringSink.close();
-  return bytes;
-}
-
-List<int> encode3(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  str.codeUnits.forEach(stringSink.writeCharCode);
-  stringSink.close();
-  return bytes;
-}
-
-List<int> encode4(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  str.runes.forEach(stringSink.writeCharCode);
-  stringSink.close();
-  return bytes;
-}
-
-List<int> encode5(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  List<int> tmpBytes = UTF8.encode(str);
-  inputByteSink.add(tmpBytes);
-  inputByteSink.close();
-  return bytes;
-}
-
-List<int> encode6(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  List<int> tmpBytes = UTF8.encode(str);
-  tmpBytes.forEach((b) => inputByteSink.addSlice([0, b, 1], 1, 2, false));
-  inputByteSink.close();
-  return bytes;
-}
-
-List<int> encode7(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  stringConversionSink.addSlice("1" + str + "2", 1, str.length + 1, false);
-  stringConversionSink.close();
-  return bytes;
-}
-
-main() {
-  for (var test in UNICODE_TESTS) {
-    List<int> bytes = test[0];
-    String string = test[1];
-    Expect.listEquals(bytes, encode(string));
-    Expect.listEquals(bytes, encode2(string));
-    Expect.listEquals(bytes, encode3(string));
-    Expect.listEquals(bytes, encode4(string));
-    Expect.listEquals(bytes, encode5(string));
-    Expect.listEquals(bytes, encode6(string));
-    Expect.listEquals(bytes, encode7(string));
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_utf86_test.dart b/tests/lib/convert/chunked_conversion_utf86_test.dart
deleted file mode 100644
index 8159c04..0000000
--- a/tests/lib/convert/chunked_conversion_utf86_test.dart
+++ /dev/null
@@ -1,263 +0,0 @@
-// 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";
-import 'dart:convert';
-
-String decode(List<int> bytes) {
-  StringBuffer buffer = new StringBuffer();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.fromStringSink(buffer);
-  var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
-  bytes.forEach((byte) {
-    byteSink.add([byte]);
-  });
-  byteSink.close();
-  return buffer.toString();
-}
-
-String decodeAllowMalformed(List<int> bytes) {
-  StringBuffer buffer = new StringBuffer();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.fromStringSink(buffer);
-  var decoder = new Utf8Decoder(allowMalformed: true);
-  var byteSink = decoder.startChunkedConversion(stringSink);
-  bytes.forEach((byte) {
-    byteSink.add([byte]);
-  });
-  byteSink.close();
-  return buffer.toString();
-}
-
-final TESTS = [
-  // Unfinished UTF-8 sequences.
-  [0xc3],
-  [0xE2, 0x82],
-  [0xF0, 0xA4, 0xAD],
-  // Overlong encoding of euro-sign.
-  [0xF0, 0x82, 0x82, 0xAC],
-  // Other overlong/unfinished sequences.
-  [0xC0],
-  [0xC1],
-  [0xF5],
-  [0xF6],
-  [0xF7],
-  [0xF8],
-  [0xF9],
-  [0xFA],
-  [0xFB],
-  [0xFC],
-  [0xFD],
-  [0xFE],
-  [0xFF],
-  [0xC0, 0x80],
-  [0xC1, 0x80],
-  // Outside valid range.
-  [0xF4, 0xBF, 0xBF, 0xBF]
-];
-
-final TESTS2 = [
-  // Test that 0xC0|1, 0x80 does not eat the next character.
-  [
-    [0xC0, 0x80, 0x61],
-    "Xa"
-  ],
-  [
-    [0xC1, 0x80, 0x61],
-    "Xa"
-  ],
-  // 0xF5 .. 0xFF never appear in valid UTF-8 sequences.
-  [
-    [0xF5, 0x80],
-    "XX"
-  ],
-  [
-    [0xF6, 0x80],
-    "XX"
-  ],
-  [
-    [0xF7, 0x80],
-    "XX"
-  ],
-  [
-    [0xF8, 0x80],
-    "XX"
-  ],
-  [
-    [0xF9, 0x80],
-    "XX"
-  ],
-  [
-    [0xFA, 0x80],
-    "XX"
-  ],
-  [
-    [0xFB, 0x80],
-    "XX"
-  ],
-  [
-    [0xFC, 0x80],
-    "XX"
-  ],
-  [
-    [0xFD, 0x80],
-    "XX"
-  ],
-  [
-    [0xFE, 0x80],
-    "XX"
-  ],
-  [
-    [0xFF, 0x80],
-    "XX"
-  ],
-  [
-    [0xF5, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF6, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF7, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF8, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF9, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFA, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFB, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFC, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFD, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFE, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFF, 0x80, 0x61],
-    "XXa"
-  ],
-  // Characters outside the valid range.
-  [
-    [0xF5, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF6, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF7, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF8, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF9, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFA, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFB, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFC, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFD, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFE, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFF, 0x80, 0x80, 0x61],
-    "XXXa"
-  ]
-];
-
-main() {
-  var allTests = TESTS.expand((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    return [
-      [test, "\u{FFFD}"],
-      [
-        new List.from([0x61])..addAll(test),
-        "a\u{FFFD}"
-      ],
-      [
-        new List.from([0x61])
-          ..addAll(test)
-          ..add(0x61),
-        "a\u{FFFD}a"
-      ],
-      [new List.from(test)..add(0x61), "\u{FFFD}a"],
-      [new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
-      [
-        new List.from(test)
-          ..add(0x61)
-          ..addAll(test),
-        "\u{FFFD}a\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test),
-        "å\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
-        "å\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5]),
-        "\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
-        "\u{FFFD}å\u{FFFD}"
-      ]
-    ];
-  });
-
-  var allTests2 = TESTS2.map((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    String expected = test[1].replaceAll("X", "\u{FFFD}");
-    return [test[0], expected];
-  });
-
-  for (var test in []..addAll(allTests)..addAll(allTests2)) {
-    List<int> bytes = test[0];
-    Expect.throws(() => decode(bytes), (e) => e is FormatException);
-
-    String expected = test[1];
-    Expect.equals(expected, decodeAllowMalformed(bytes));
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_utf87_test.dart b/tests/lib/convert/chunked_conversion_utf87_test.dart
deleted file mode 100644
index 05da2c0..0000000
--- a/tests/lib/convert/chunked_conversion_utf87_test.dart
+++ /dev/null
@@ -1,284 +0,0 @@
-// 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";
-import 'dart:convert';
-
-String decode(List<int> inputBytes) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  inputByteSink.add(inputBytes);
-  inputByteSink.close();
-  return UTF8.decode(bytes);
-}
-
-String decode2(List<int> inputBytes) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  inputBytes.forEach((b) => inputByteSink.addSlice([0, b, 1], 1, 2, false));
-  inputByteSink.close();
-  return UTF8.decode(bytes);
-}
-
-String decodeAllowMalformed(List<int> inputBytes) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(true);
-  inputByteSink.add(inputBytes);
-  inputByteSink.close();
-  return UTF8.decode(bytes);
-}
-
-String decodeAllowMalformed2(List<int> inputBytes) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(true);
-  inputBytes.forEach((b) => inputByteSink.addSlice([0, b, 1], 1, 2, false));
-  inputByteSink.close();
-  return UTF8.decode(bytes);
-}
-
-final TESTS = [
-  // Unfinished UTF-8 sequences.
-  [0xc3],
-  [0xE2, 0x82],
-  [0xF0, 0xA4, 0xAD],
-  // Overlong encoding of euro-sign.
-  [0xF0, 0x82, 0x82, 0xAC],
-  // Other overlong/unfinished sequences.
-  [0xC0],
-  [0xC1],
-  [0xF5],
-  [0xF6],
-  [0xF7],
-  [0xF8],
-  [0xF9],
-  [0xFA],
-  [0xFB],
-  [0xFC],
-  [0xFD],
-  [0xFE],
-  [0xFF],
-  [0xC0, 0x80],
-  [0xC1, 0x80],
-  // Outside valid range.
-  [0xF4, 0xBF, 0xBF, 0xBF]
-];
-
-final TESTS2 = [
-  // Test that 0xC0|1, 0x80 does not eat the next character.
-  [
-    [0xC0, 0x80, 0x61],
-    "Xa"
-  ],
-  [
-    [0xC1, 0x80, 0x61],
-    "Xa"
-  ],
-  // 0xF5 .. 0xFF never appear in valid UTF-8 sequences.
-  [
-    [0xF5, 0x80],
-    "XX"
-  ],
-  [
-    [0xF6, 0x80],
-    "XX"
-  ],
-  [
-    [0xF7, 0x80],
-    "XX"
-  ],
-  [
-    [0xF8, 0x80],
-    "XX"
-  ],
-  [
-    [0xF9, 0x80],
-    "XX"
-  ],
-  [
-    [0xFA, 0x80],
-    "XX"
-  ],
-  [
-    [0xFB, 0x80],
-    "XX"
-  ],
-  [
-    [0xFC, 0x80],
-    "XX"
-  ],
-  [
-    [0xFD, 0x80],
-    "XX"
-  ],
-  [
-    [0xFE, 0x80],
-    "XX"
-  ],
-  [
-    [0xFF, 0x80],
-    "XX"
-  ],
-  [
-    [0xF5, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF6, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF7, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF8, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF9, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFA, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFB, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFC, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFD, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFE, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFF, 0x80, 0x61],
-    "XXa"
-  ],
-  // Characters outside the valid range.
-  [
-    [0xF5, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF6, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF7, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF8, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF9, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFA, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFB, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFC, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFD, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFE, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFF, 0x80, 0x80, 0x61],
-    "XXXa"
-  ]
-];
-
-main() {
-  var allTests = TESTS.expand((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    return [
-      [test, "\u{FFFD}"],
-      [
-        new List.from([0x61])..addAll(test),
-        "a\u{FFFD}"
-      ],
-      [
-        new List.from([0x61])
-          ..addAll(test)
-          ..add(0x61),
-        "a\u{FFFD}a"
-      ],
-      [new List.from(test)..add(0x61), "\u{FFFD}a"],
-      [new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
-      [
-        new List.from(test)
-          ..add(0x61)
-          ..addAll(test),
-        "\u{FFFD}a\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test),
-        "å\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
-        "å\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5]),
-        "\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
-        "\u{FFFD}å\u{FFFD}"
-      ]
-    ];
-  });
-
-  var allTests2 = TESTS2.map((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    String expected = test[1].replaceAll("X", "\u{FFFD}");
-    return [test[0], expected];
-  });
-
-  for (var test in []..addAll(allTests)..addAll(allTests2)) {
-    List<int> bytes = test[0];
-    Expect.throws(() => decode(bytes), (e) => e is FormatException);
-    Expect.throws(() => decode2(bytes), (e) => e is FormatException);
-
-    String expected = test[1];
-    Expect.equals(expected, decodeAllowMalformed(bytes));
-    Expect.equals(expected, decodeAllowMalformed2(bytes));
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_utf88_test.dart b/tests/lib/convert/chunked_conversion_utf88_test.dart
deleted file mode 100644
index a6a4af5..0000000
--- a/tests/lib/convert/chunked_conversion_utf88_test.dart
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright (c) 2013, 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 utf8_test;
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-List<int> encode(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  stringConversionSink.add(str);
-  stringConversionSink.close();
-  return bytes;
-}
-
-List<int> encode2(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  stringSink.write(str);
-  stringSink.close();
-  return bytes;
-}
-
-List<int> encode3(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  str.codeUnits.forEach(stringSink.writeCharCode);
-  stringSink.close();
-  return bytes;
-}
-
-List<int> encode4(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ClosableStringSink stringSink = stringConversionSink.asStringSink();
-  str.runes.forEach(stringSink.writeCharCode);
-  stringSink.close();
-  return bytes;
-}
-
-List<int> encode5(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  List<int> tmpBytes = UTF8.encode(str);
-  inputByteSink.add(tmpBytes);
-  inputByteSink.close();
-  return bytes;
-}
-
-List<int> encode6(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  ByteConversionSink inputByteSink = stringConversionSink.asUtf8Sink(false);
-  List<int> tmpBytes = UTF8.encode(str);
-  tmpBytes.forEach((b) => inputByteSink.addSlice([0, b, 1], 1, 2, false));
-  inputByteSink.close();
-  return bytes;
-}
-
-List<int> encode7(String str) {
-  List<int> bytes;
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback((result) => bytes = result);
-  var stringConversionSink = new Utf8Encoder().startChunkedConversion(byteSink);
-  stringConversionSink.addSlice("1" + str + "2", 1, str.length + 1, false);
-  stringConversionSink.close();
-  return bytes;
-}
-
-int _nextPowerOf2(v) {
-  assert(v > 0);
-  v--;
-  v |= v >> 1;
-  v |= v >> 2;
-  v |= v >> 4;
-  v |= v >> 8;
-  v |= v >> 16;
-  v++;
-  return v;
-}
-
-runTest(test) {
-  List<int> bytes = test[0];
-  String string = test[1];
-  Expect.listEquals(bytes, encode(string));
-  Expect.listEquals(bytes, encode2(string));
-  Expect.listEquals(bytes, encode3(string));
-  Expect.listEquals(bytes, encode4(string));
-  Expect.listEquals(bytes, encode5(string));
-  Expect.listEquals(bytes, encode6(string));
-  Expect.listEquals(bytes, encode7(string));
-}
-
-main() {
-  const LEADING_SURROGATE = 0xd801;
-  const TRAILING_SURROGATE = 0xdc12;
-  const UTF8_ENCODING = const [0xf0, 0x90, 0x90, 0x92];
-  const UTF8_LEADING = const [0xed, 0xa0, 0x81];
-  const UTF8_TRAILING = const [0xed, 0xb0, 0x92];
-  const CHAR_A = 0x61;
-
-  // Test surrogates at all kinds of locations.
-  var tests = [];
-  List codeUnits = <int>[];
-  for (int i = 0; i < 2049; i++) {
-    // Invariant: codeUnits[0..i - 1] is filled with CHAR_A (character 'a').
-    codeUnits.length = i + 1;
-    codeUnits[i] = CHAR_A;
-
-    // Only test for problem zones, close to powers of two.
-    if (i > 20 && _nextPowerOf2(i - 2) - i > 10) continue;
-
-    codeUnits[i] = LEADING_SURROGATE;
-    var str = new String.fromCharCodes(codeUnits);
-    var bytes = new List.filled(i + 3, CHAR_A);
-    bytes[i] = UTF8_LEADING[0];
-    bytes[i + 1] = UTF8_LEADING[1];
-    bytes[i + 2] = UTF8_LEADING[2];
-    runTest([bytes, str]);
-
-    codeUnits[i] = TRAILING_SURROGATE;
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 3, CHAR_A);
-    bytes[i] = UTF8_TRAILING[0];
-    bytes[i + 1] = UTF8_TRAILING[1];
-    bytes[i + 2] = UTF8_TRAILING[2];
-    runTest([bytes, str]);
-
-    codeUnits.length = i + 2;
-    codeUnits[i] = LEADING_SURROGATE;
-    codeUnits[i + 1] = TRAILING_SURROGATE;
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 4, CHAR_A);
-    bytes[i] = UTF8_ENCODING[0];
-    bytes[i + 1] = UTF8_ENCODING[1];
-    bytes[i + 2] = UTF8_ENCODING[2];
-    bytes[i + 3] = UTF8_ENCODING[3];
-    runTest([bytes, str]);
-
-    codeUnits[i] = TRAILING_SURROGATE;
-    codeUnits[i + 1] = TRAILING_SURROGATE;
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 6, CHAR_A);
-    bytes[i] = UTF8_TRAILING[0];
-    bytes[i + 1] = UTF8_TRAILING[1];
-    bytes[i + 2] = UTF8_TRAILING[2];
-    bytes[i + 3] = UTF8_TRAILING[0];
-    bytes[i + 4] = UTF8_TRAILING[1];
-    bytes[i + 5] = UTF8_TRAILING[2];
-    runTest([bytes, str]);
-
-    codeUnits[i] = LEADING_SURROGATE;
-    codeUnits[i + 1] = LEADING_SURROGATE;
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 6, CHAR_A);
-    bytes[i] = UTF8_LEADING[0];
-    bytes[i + 1] = UTF8_LEADING[1];
-    bytes[i + 2] = UTF8_LEADING[2];
-    bytes[i + 3] = UTF8_LEADING[0];
-    bytes[i + 4] = UTF8_LEADING[1];
-    bytes[i + 5] = UTF8_LEADING[2];
-    runTest([bytes, str]);
-
-    codeUnits[i] = TRAILING_SURROGATE;
-    codeUnits[i + 1] = LEADING_SURROGATE;
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 6, CHAR_A);
-    bytes[i] = UTF8_TRAILING[0];
-    bytes[i + 1] = UTF8_TRAILING[1];
-    bytes[i + 2] = UTF8_TRAILING[2];
-    bytes[i + 3] = UTF8_LEADING[0];
-    bytes[i + 4] = UTF8_LEADING[1];
-    bytes[i + 5] = UTF8_LEADING[2];
-    runTest([bytes, str]);
-
-    codeUnits.length = i + 3;
-    codeUnits[i] = LEADING_SURROGATE;
-    codeUnits[i + 1] = TRAILING_SURROGATE;
-    codeUnits[i + 2] = CHAR_A; // Add trailing 'a'.
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 5, CHAR_A);
-    bytes[i] = UTF8_ENCODING[0];
-    bytes[i + 1] = UTF8_ENCODING[1];
-    bytes[i + 2] = UTF8_ENCODING[2];
-    bytes[i + 3] = UTF8_ENCODING[3];
-    // No need to assign the 'a' character. The whole list is already filled
-    // with it.
-    runTest([bytes, str]);
-
-    codeUnits[i] = TRAILING_SURROGATE;
-    codeUnits[i + 1] = TRAILING_SURROGATE;
-    codeUnits[i + 2] = CHAR_A; // Add trailing 'a'.
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 7, CHAR_A);
-    bytes[i] = UTF8_TRAILING[0];
-    bytes[i + 1] = UTF8_TRAILING[1];
-    bytes[i + 2] = UTF8_TRAILING[2];
-    bytes[i + 3] = UTF8_TRAILING[0];
-    bytes[i + 4] = UTF8_TRAILING[1];
-    bytes[i + 5] = UTF8_TRAILING[2];
-    runTest([bytes, str]);
-
-    codeUnits[i] = LEADING_SURROGATE;
-    codeUnits[i + 1] = LEADING_SURROGATE;
-    codeUnits[i + 2] = CHAR_A; // Add trailing 'a'.
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 7, CHAR_A);
-    bytes[i] = UTF8_LEADING[0];
-    bytes[i + 1] = UTF8_LEADING[1];
-    bytes[i + 2] = UTF8_LEADING[2];
-    bytes[i + 3] = UTF8_LEADING[0];
-    bytes[i + 4] = UTF8_LEADING[1];
-    bytes[i + 5] = UTF8_LEADING[2];
-    runTest([bytes, str]);
-
-    codeUnits[i] = TRAILING_SURROGATE;
-    codeUnits[i + 1] = LEADING_SURROGATE;
-    codeUnits[i + 2] = CHAR_A; // Add trailing 'a'.
-    str = new String.fromCharCodes(codeUnits);
-    bytes = new List.filled(i + 7, CHAR_A);
-    bytes[i] = UTF8_TRAILING[0];
-    bytes[i + 1] = UTF8_TRAILING[1];
-    bytes[i + 2] = UTF8_TRAILING[2];
-    bytes[i + 3] = UTF8_LEADING[0];
-    bytes[i + 4] = UTF8_LEADING[1];
-    bytes[i + 5] = UTF8_LEADING[2];
-    runTest([bytes, str]);
-
-    // Make sure the invariant is correct.
-    codeUnits[i] = CHAR_A;
-  }
-}
diff --git a/tests/lib/convert/chunked_conversion_utf89_test.dart b/tests/lib/convert/chunked_conversion_utf89_test.dart
deleted file mode 100644
index a5073a8..0000000
--- a/tests/lib/convert/chunked_conversion_utf89_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-
-class MySink extends ChunkedConversionSink<String> {
-  final Function _add;
-  final Function _close;
-
-  MySink(this._add, this._close);
-
-  void add(x) {
-    _add(x);
-  }
-
-  void close() {
-    _close();
-  }
-}
-
-main() {
-  // Make sure the UTF-8 decoder works eagerly.
-  String lastString;
-  bool isClosed = false;
-  ChunkedConversionSink sink =
-      new MySink((x) => lastString = x, () => isClosed = true);
-  var byteSink = new Utf8Decoder().startChunkedConversion(sink);
-  byteSink.add("abc".codeUnits);
-  Expect.equals("abc", lastString);
-  byteSink.add([0x61, 0xc3]); // 'a' followed by first part of Î.
-  Expect.equals("a", lastString);
-  byteSink.add([0x8e]); // second part of Î.
-  Expect.equals("Î", lastString);
-  Expect.isFalse(isClosed);
-  byteSink.close();
-  Expect.isTrue(isClosed);
-}
diff --git a/tests/lib/convert/chunked_conversion_utf8_test.dart b/tests/lib/convert/chunked_conversion_utf8_test.dart
deleted file mode 100644
index f48a914..0000000
--- a/tests/lib/convert/chunked_conversion_utf8_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-import 'unicode_tests.dart';
-
-String decode(List<int> bytes, int chunkSize) {
-  StringBuffer buffer = new StringBuffer();
-  ChunkedConversionSink stringSink =
-      new StringConversionSink.fromStringSink(buffer);
-  var byteSink = new Utf8Decoder().startChunkedConversion(stringSink);
-  int i = 0;
-  while (i < bytes.length) {
-    List nextChunk = [];
-    for (int j = 0; j < chunkSize; j++) {
-      if (i < bytes.length) {
-        nextChunk.add(bytes[i]);
-        i++;
-      }
-    }
-    byteSink.add(nextChunk);
-  }
-  byteSink.close();
-  return buffer.toString();
-}
-
-main() {
-  for (var test in UNICODE_TESTS) {
-    var bytes = test[0];
-    var expected = test[1];
-    Expect.stringEquals(expected, decode(bytes, 1));
-    Expect.stringEquals(expected, decode(bytes, 2));
-    Expect.stringEquals(expected, decode(bytes, 3));
-    Expect.stringEquals(expected, decode(bytes, 4));
-  }
-}
diff --git a/tests/lib/convert/close_test.dart b/tests/lib/convert/close_test.dart
deleted file mode 100644
index 541c1fa..0000000
--- a/tests/lib/convert/close_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// 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.
-
-import "package:expect/expect.dart";
-import "dart:convert";
-
-class MySink implements Sink<List<int>> {
-  List<int> accumulated = <int>[];
-  bool isClosed = false;
-
-  add(List<int> list) {
-    accumulated.addAll(list);
-    return list.length;
-  }
-
-  close() {
-    isClosed = true;
-    // Returning a value here triggered a bug, where the caller was trying to
-    // pass the value through its 'void' return type.
-    // Example: void close() => _sink.close();
-    return "done";
-  }
-}
-
-main() {
-  var mySink = new MySink();
-  var byteSink = new ByteConversionSink.from(mySink);
-  byteSink.add([1, 2, 3]);
-  byteSink.close();
-  Expect.listEquals([1, 2, 3], mySink.accumulated);
-  Expect.isTrue(mySink.isClosed);
-}
diff --git a/tests/lib/convert/codec1_test.dart b/tests/lib/convert/codec1_test.dart
deleted file mode 100644
index 5b5d9b3..0000000
--- a/tests/lib/convert/codec1_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2013, 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:convert';
-
-import 'package:expect/expect.dart';
-
-class MyCodec extends Codec<int, String> {
-  const MyCodec();
-
-  final Converter<int, String> encoder = const IntStringConverter();
-  final Converter<String, int> decoder = const StringIntConverter();
-}
-
-class IntStringConverter extends Converter<int, String> {
-  const IntStringConverter();
-
-  String convert(int i) => i.toString();
-}
-
-class StringIntConverter extends Converter<String, int> {
-  const StringIntConverter();
-
-  int convert(String str) => int.parse(str);
-}
-
-class MyCodec2 extends Codec<int, String> {
-  const MyCodec2();
-
-  Converter<int, String> get encoder => new IntStringConverter2();
-  Converter<String, int> get decoder => new StringIntConverter2();
-}
-
-class IntStringConverter2 extends Converter<int, String> {
-  String convert(int i) => (i + 99).toString();
-}
-
-class StringIntConverter2 extends Converter<String, int> {
-  int convert(String str) => int.parse(str) + 400;
-}
-
-const TEST_CODEC = const MyCodec();
-const TEST_CODEC2 = const MyCodec2();
-
-main() {
-  Expect.equals("0", TEST_CODEC.encode(0));
-  Expect.equals(5, TEST_CODEC.decode("5"));
-  Expect.equals(3, TEST_CODEC.decode(TEST_CODEC.encode(3)));
-
-  Expect.equals("99", TEST_CODEC2.encode(0));
-  Expect.equals(405, TEST_CODEC2.decode("5"));
-  Expect.equals(499, TEST_CODEC2.decode(TEST_CODEC2.encode(0)));
-
-  var inverted, fused;
-  inverted = TEST_CODEC.inverted;
-  fused = TEST_CODEC.fuse(inverted);
-  Expect.equals(499, fused.encode(499));
-  Expect.equals(499, fused.decode(499));
-
-  fused = inverted.fuse(TEST_CODEC);
-  Expect.equals("499", fused.encode("499"));
-  Expect.equals("499", fused.decode("499"));
-
-  inverted = TEST_CODEC2.inverted;
-  fused = TEST_CODEC2.fuse(inverted);
-  Expect.equals(499, fused.encode(0));
-  Expect.equals(499, fused.decode(0));
-
-  fused = TEST_CODEC.fuse(inverted);
-  Expect.equals(405, fused.encode(5));
-  Expect.equals(101, fused.decode(2));
-}
diff --git a/tests/lib/convert/codec2_test.dart b/tests/lib/convert/codec2_test.dart
deleted file mode 100644
index 6c22697..0000000
--- a/tests/lib/convert/codec2_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2013, 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:convert';
-
-import 'package:expect/expect.dart';
-
-main() {
-  final RAW = '["122ç",50,50,231]';
-  final ENCODED = const [
-    91,
-    34,
-    49,
-    50,
-    50,
-    195,
-    167,
-    34,
-    44,
-    53,
-    48,
-    44,
-    53,
-    48,
-    44,
-    50,
-    51,
-    49,
-    93
-  ];
-  Expect.listEquals(ENCODED, UTF8.encode(RAW));
-  Expect.equals(RAW, UTF8.decode(ENCODED));
-
-  Expect.listEquals([], UTF8.encode(""));
-  Expect.equals("", UTF8.decode([]));
-
-  final JSON_ENCODED = RAW;
-  Expect.equals(JSON_ENCODED, JSON.encode(["122ç", 50, 50, 231]));
-  Expect.listEquals(["122ç", 50, 50, 231], JSON.decode(JSON_ENCODED));
-
-  // Test that the reviver is passed to the decoder.
-  var decoded = JSON.decode('{"p": 5}', reviver: (k, v) {
-    if (k == null) return v;
-    return v * 2;
-  });
-  Expect.equals(10, decoded["p"]);
-  var jsonWithReviver = new JsonCodec.withReviver((k, v) {
-    if (k == null) return v;
-    return v * 2;
-  });
-  decoded = jsonWithReviver.decode('{"p": 5}');
-  Expect.equals(10, decoded["p"]);
-
-  // Test example from comments.
-  final JSON_TO_BYTES = JSON.fuse(UTF8);
-  List<int> bytes = JSON_TO_BYTES.encode(["json-object"]);
-  decoded = JSON_TO_BYTES.decode(bytes);
-  Expect.isTrue(decoded is List);
-  Expect.equals("json-object", decoded[0]);
-}
diff --git a/tests/lib/convert/encoding_test.dart b/tests/lib/convert/encoding_test.dart
deleted file mode 100644
index 9704d4a..0000000
--- a/tests/lib/convert/encoding_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'dart:convert';
-import 'unicode_tests.dart';
-import "package:async_helper/async_helper.dart";
-
-void runTest(List<int> bytes, expected) {
-  var controller = new StreamController();
-  asyncStart();
-  UTF8.decodeStream(controller.stream).then((decoded) {
-    Expect.equals(expected, decoded);
-    asyncEnd();
-  });
-  int i = 0;
-  while (i < bytes.length) {
-    List nextChunk = [];
-    for (int j = 0; j < 3; j++) {
-      if (i < bytes.length) {
-        nextChunk.add(bytes[i]);
-        i++;
-      }
-    }
-    controller.add(nextChunk);
-  }
-  controller.close();
-}
-
-main() {
-  for (var test in UNICODE_TESTS) {
-    var bytes = test[0];
-    var expected = test[1];
-    runTest(bytes, expected);
-  }
-}
diff --git a/tests/lib/convert/html_escape_test.dart b/tests/lib/convert/html_escape_test.dart
deleted file mode 100644
index 190dc67..0000000
--- a/tests/lib/convert/html_escape_test.dart
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'dart:convert';
-
-const _NOOP = 'Nothing_to_escape';
-
-const _TEST_INPUT = """<A </test> of \xA0 "double" & 'single' values>""";
-
-const _OUTPUT_UNKNOWN = '&lt;A &lt;&#47;test&gt; of \xA0 &quot;double&quot; '
-    '&amp; &#39;single&#39; values&gt;';
-
-const _OUTPUT_ATTRIBUTE =
-    "&lt;A &lt;/test&gt; of \xA0 &quot;double&quot; &amp; 'single' values&gt;";
-
-const _OUTPUT_SQ_ATTRIBUTE =
-    '&lt;A &lt;/test&gt; of \xA0 "double" &amp; &#39;single&#39; values&gt;';
-
-const _OUTPUT_ELEMENT =
-    """&lt;A &lt;/test&gt; of \xA0 "double" &amp; 'single' values&gt;""";
-
-void _testMode(HtmlEscape escape, String input, String expected) {
-  _testConvert(escape, input, expected);
-  _testTransform(escape, input, expected);
-  _testChunked(escape, input, expected);
-}
-
-void _testChunked(HtmlEscape escape, String input, String expected) {
-  var buffer = new StringBuffer();
-
-  var rootSink = new StringConversionSink.fromStringSink(buffer);
-  var sink = escape.startChunkedConversion(rootSink);
-
-  sink.addSlice("1" + input + "2", 1, input.length + 1, false);
-  sink.close();
-
-  Expect.equals(expected, buffer.toString());
-}
-
-void _testConvert(HtmlEscape escape, String input, String expected) {
-  var output = escape.convert(input);
-  Expect.equals(expected, output);
-}
-
-void _testTransform(HtmlEscape escape, String input, String expected) {
-  var controller = new StreamController(sync: true);
-
-  var stream = controller.stream.transform(escape);
-
-  var done = false;
-  int count = 0;
-
-  void stringData(value) {
-    Expect.equals(expected, value);
-    count++;
-  }
-
-  void streamClosed() {
-    done = true;
-  }
-
-  stream.listen(stringData, onDone: streamClosed);
-
-  for (var i = 0; i < _COUNT; i++) {
-    controller.add(input);
-  }
-  controller.close();
-  Expect.isTrue(done);
-  Expect.equals(_COUNT, count);
-}
-
-const _COUNT = 3;
-
-void main() {
-  _testMode(HTML_ESCAPE, _TEST_INPUT, _OUTPUT_UNKNOWN);
-  _testMode(const HtmlEscape(), _TEST_INPUT, _OUTPUT_UNKNOWN);
-  _testMode(
-      const HtmlEscape(HtmlEscapeMode.UNKNOWN), _TEST_INPUT, _OUTPUT_UNKNOWN);
-  _testMode(const HtmlEscape(HtmlEscapeMode.ATTRIBUTE), _TEST_INPUT,
-      _OUTPUT_ATTRIBUTE);
-  _testMode(const HtmlEscape(HtmlEscapeMode.SQ_ATTRIBUTE), _TEST_INPUT,
-      _OUTPUT_SQ_ATTRIBUTE);
-  _testMode(
-      const HtmlEscape(HtmlEscapeMode.ELEMENT), _TEST_INPUT, _OUTPUT_ELEMENT);
-  _testMode(HTML_ESCAPE, _NOOP, _NOOP);
-}
diff --git a/tests/lib/convert/json_chunk_test.dart b/tests/lib/convert/json_chunk_test.dart
deleted file mode 100644
index d987d38..0000000
--- a/tests/lib/convert/json_chunk_test.dart
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright (c) 2014, 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 json_test;
-
-import "package:expect/expect.dart";
-import "dart:convert";
-
-bool badFormat(e) => e is FormatException;
-
-jsonTest(testName, expect, action(sink)) {
-  var sink = new ChunkedConversionSink.withCallback((values) {
-    var value = values[0];
-    Expect.equals(expect, value, "$testName:$value");
-  });
-  var decoderSink = JSON.decoder.startChunkedConversion(sink);
-  action(decoderSink);
-}
-
-jsonThrowsTest(testName, action(sink)) {
-  var sink = new ChunkedConversionSink.withCallback((values) {
-    Expect.fail("Should have thrown: $testName");
-  });
-  var decoderSink = JSON.decoder.startChunkedConversion(sink);
-  Expect.throws(() {
-    action(decoderSink);
-  }, (e) => e is FormatException, testName);
-}
-
-main() {
-  testNumbers();
-  testStrings();
-  testKeywords();
-}
-
-void testStrings() {
-  var s = r'"abc\f\n\r\t\b\"\/\\\u0001\u9999\uffff"';
-  var expected = "abc\f\n\r\t\b\"\/\\\u0001\u9999\uffff";
-  for (var i = 1; i < s.length - 1; i++) {
-    var s1 = s.substring(0, i);
-    var s2 = s.substring(i);
-    jsonTest("$s1|$s2", expected, (sink) {
-      sink.add(s1);
-      sink.add(s2);
-      sink.close();
-    });
-    jsonTest("$s1|$s2", expected, (sink) {
-      sink.addSlice(s, 0, i, false);
-      sink.addSlice(s, i, s.length, true);
-    });
-    for (var j = i; j < s.length - 1; j++) {
-      var s2a = s.substring(i, j);
-      var s2b = s.substring(j);
-      jsonTest("$s1|$s2a|$s2b", expected, (sink) {
-        sink.add(s1);
-        sink.add(s2a);
-        sink.add(s2b);
-        sink.close();
-      });
-    }
-  }
-}
-
-void testNumbers() {
-  void testNumber(number) {
-    var expected = num.parse(number);
-    for (int i = 1; i < number.length - 1; i++) {
-      var p1 = number.substring(0, i);
-      var p2 = number.substring(i);
-      jsonTest("$p1|$p2", expected, (sink) {
-        sink.add(p1);
-        sink.add(p2);
-        sink.close();
-      });
-
-      jsonTest("$p1|$p2/slice", expected, (sink) {
-        sink.addSlice(number, 0, i, false);
-        sink.addSlice(number, i, number.length, true);
-      });
-
-      for (int j = i; j < number.length - 1; j++) {
-        var p2a = number.substring(i, j);
-        var p2b = number.substring(j);
-        jsonTest("$p1|$p2a|$p2b", expected, (sink) {
-          sink.add(p1);
-          sink.add(p2a);
-          sink.add(p2b);
-          sink.close();
-        });
-      }
-    }
-  }
-
-  for (var sign in ["-", ""]) {
-    for (var intPart in ["0", "1", "99"]) {
-      for (var decimalPoint in [".", ""]) {
-        for (var decimals in decimalPoint.isEmpty ? [""] : ["0", "99"]) {
-          for (var e in ["e", "e-", "e+", ""]) {
-            for (var exp in e.isEmpty ? [""] : ["0", "2", "22", "34"]) {
-              testNumber("$sign$intPart$decimalPoint$decimals$e$exp");
-            }
-          }
-        }
-      }
-    }
-  }
-
-  void negativeTest(number) {
-    for (int i = 1; i < number.length - 1; i++) {
-      var p1 = number.substring(0, i);
-      var p2 = number.substring(i);
-      jsonThrowsTest("$p1|$p2", (sink) {
-        sink.add(p1);
-        sink.add(p2);
-        sink.close();
-      });
-
-      jsonThrowsTest("$p1|$p2/slice", (sink) {
-        sink.addSlice(number, 0, i, false);
-        sink.addSlice(number, i, number.length, true);
-      });
-
-      for (int j = i; j < number.length - 1; j++) {
-        var p2a = number.substring(i, j);
-        var p2b = number.substring(j);
-        jsonThrowsTest("$p1|$p2a|$p2b", (sink) {
-          sink.add(p1);
-          sink.add(p2a);
-          sink.add(p2b);
-          sink.close();
-        });
-      }
-    }
-  }
-
-  negativeTest("+1e");
-  negativeTest("-00");
-  negativeTest("01");
-  negativeTest(".1");
-  negativeTest("0.");
-  negativeTest("0.e1");
-  negativeTest("1e");
-  negativeTest("1e+");
-  negativeTest("1e-");
-}
-
-void testKeywords() {
-  for (var expected in [null, true, false]) {
-    var s = "$expected";
-    for (int i = 1; i < s.length - 1; i++) {
-      var s1 = s.substring(0, i);
-      var s2 = s.substring(i);
-      jsonTest("$s1|$s2", expected, (sink) {
-        sink.add(s1);
-        sink.add(s2);
-        sink.close();
-      });
-      jsonTest("$s1|$s2", expected, (sink) {
-        sink.addSlice(s, 0, i, false);
-        sink.addSlice(s, i, s.length, true);
-      });
-      for (var j = i; j < s.length - 1; j++) {
-        var s2a = s.substring(i, j);
-        var s2b = s.substring(j);
-        jsonTest("$s1|$s2a|$s2b", expected, (sink) {
-          sink.add(s1);
-          sink.add(s2a);
-          sink.add(s2b);
-          sink.close();
-        });
-      }
-    }
-  }
-}
diff --git a/tests/lib/convert/json_lib_test.dart b/tests/lib/convert/json_lib_test.dart
deleted file mode 100644
index c76f67e..0000000
--- a/tests/lib/convert/json_lib_test.dart
+++ /dev/null
@@ -1,228 +0,0 @@
-// Copyright (c) 2011, 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 json_tests;
-
-import 'package:unittest/unittest.dart';
-import 'dart:convert';
-
-main() {
-  test('Parse', () {
-    // Scalars.
-    expect(JSON.decode(' 5 '), equals(5));
-    expect(JSON.decode(' -42 '), equals(-42));
-    expect(JSON.decode(' 3e0 '), equals(3));
-    expect(JSON.decode(' 3.14 '), equals(3.14));
-    expect(JSON.decode('true '), isTrue);
-    expect(JSON.decode(' false'), isFalse);
-    expect(JSON.decode(' null '), isNull);
-    expect(JSON.decode('\n\rnull\t'), isNull);
-    expect(JSON.decode(' "hi there\\" bob" '), equals('hi there" bob'));
-    expect(JSON.decode(' "" '), isEmpty);
-
-    // Lists.
-    expect(JSON.decode(' [] '), isEmpty);
-    expect(JSON.decode('[ ]'), isEmpty);
-    expect(JSON.decode(' [3, -4.5, true, "hi", false] '),
-        equals([3, -4.5, true, 'hi', false]));
-    // Nulls are tricky.
-    expect(JSON.decode('[null]'), orderedEquals([null]));
-    expect(JSON.decode(' [3, -4.5, null, true, "hi", false] '),
-        equals([3, -4.5, null, true, 'hi', false]));
-    expect(
-        JSON.decode('[[null]]'),
-        equals([
-          [null]
-        ]));
-    expect(
-        JSON.decode(' [ [3], [], [null], ["hi", true]] '),
-        equals([
-          [3],
-          [],
-          [null],
-          ['hi', true]
-        ]));
-
-    // Maps.
-    expect(JSON.decode(' {} '), isEmpty);
-    expect(JSON.decode('{ }'), isEmpty);
-
-    expect(
-        JSON.decode(
-            ' {"x":3, "y": -4.5,  "z" : "hi","u" : true, "v": false } '),
-        equals({"x": 3, "y": -4.5, "z": "hi", "u": true, "v": false}));
-
-    expect(JSON.decode(' {"x":3, "y": -4.5,  "z" : "hi" } '),
-        equals({"x": 3, "y": -4.5, "z": "hi"}));
-
-    expect(JSON.decode(' {"y": -4.5,  "z" : "hi" ,"x":3 } '),
-        equals({"y": -4.5, "z": "hi", "x": 3}));
-
-    expect(JSON.decode('{ " hi bob " :3, "": 4.5}'),
-        equals({" hi bob ": 3, "": 4.5}));
-
-    expect(JSON.decode(' { "x" : { } } '), equals({'x': {}}));
-    expect(JSON.decode('{"x":{}}'), equals({'x': {}}));
-
-    // Nulls are tricky.
-    expect(JSON.decode('{"w":null}'), equals({'w': null}));
-
-    expect(
-        JSON.decode('{"x":{"w":null}}'),
-        equals({
-          "x": {"w": null}
-        }));
-
-    expect(
-        JSON.decode(' {"x":3, "y": -4.5,  "z" : "hi",'
-            '"w":null, "u" : true, "v": false } '),
-        equals(
-            {"x": 3, "y": -4.5, "z": "hi", "w": null, "u": true, "v": false}));
-
-    expect(
-        JSON.decode('{"x": {"a":3, "b": -4.5}, "y":[{}], '
-            '"z":"hi","w":{"c":null,"d":true}, "v":null}'),
-        equals({
-          "x": {"a": 3, "b": -4.5},
-          "y": [{}],
-          "z": "hi",
-          "w": {"c": null, "d": true},
-          "v": null
-        }));
-  });
-
-  test('stringify', () {
-    // Scalars.
-    expect(JSON.encode(5), equals('5'));
-    expect(JSON.encode(-42), equals('-42'));
-    // Dart does not guarantee a formatting for doubles,
-    // so reparse and compare to the original.
-    validateRoundTrip(3.14);
-    expect(JSON.encode(true), equals('true'));
-    expect(JSON.encode(false), equals('false'));
-    expect(JSON.encode(null), equals('null'));
-    expect(JSON.encode(' hi there" bob '), equals('" hi there\\" bob "'));
-    expect(JSON.encode('hi\\there'), equals('"hi\\\\there"'));
-    expect(JSON.encode('hi\nthere'), equals('"hi\\nthere"'));
-    expect(JSON.encode('hi\r\nthere'), equals('"hi\\r\\nthere"'));
-    expect(JSON.encode(''), equals('""'));
-
-    // Lists.
-    expect(JSON.encode([]), equals('[]'));
-    expect(JSON.encode(new List(0)), equals('[]'));
-    expect(JSON.encode(new List(3)), equals('[null,null,null]'));
-    validateRoundTrip([3, -4.5, null, true, 'hi', false]);
-    expect(
-        JSON.encode([
-          [3],
-          [],
-          [null],
-          ['hi', true]
-        ]),
-        equals('[[3],[],[null],["hi",true]]'));
-
-    // Maps.
-    expect(JSON.encode({}), equals('{}'));
-    expect(JSON.encode(new Map()), equals('{}'));
-    expect(JSON.encode({'x': {}}), equals('{"x":{}}'));
-    expect(
-        JSON.encode({
-          'x': {'a': 3}
-        }),
-        equals('{"x":{"a":3}}'));
-
-    // Dart does not guarantee an order on the keys
-    // of a map literal, so reparse and compare to the original Map.
-    validateRoundTrip(
-        {'x': 3, 'y': -4.5, 'z': 'hi', 'w': null, 'u': true, 'v': false});
-    validateRoundTrip({"x": 3, "y": -4.5, "z": 'hi'});
-    validateRoundTrip({' hi bob ': 3, '': 4.5});
-    validateRoundTrip({
-      'x': {'a': 3, 'b': -4.5},
-      'y': [{}],
-      'z': 'hi',
-      'w': {'c': null, 'd': true},
-      'v': null
-    });
-
-    expect(JSON.encode(new ToJson(4)), "4");
-    expect(JSON.encode(new ToJson([4, "a"])), '[4,"a"]');
-    expect(
-        JSON.encode(new ToJson([
-          4,
-          new ToJson({"x": 42})
-        ])),
-        '[4,{"x":42}]');
-
-    expect(() {
-      JSON.encode([new ToJson(new ToJson(4))]);
-    }, throwsJsonError);
-
-    expect(() {
-      JSON.encode([new Object()]);
-    }, throwsJsonError);
-  });
-
-  test('stringify throws if argument cannot be converted', () {
-    /**
-     * Checks that we get an exception (rather than silently returning null) if
-     * we try to stringify something that cannot be converted to json.
-     */
-    expect(() => JSON.encode(new TestClass()), throwsJsonError);
-  });
-
-  test('stringify throws if toJson throws', () {
-    expect(
-        () => JSON.encode(new ToJsoner("bad", throws: true)), throwsJsonError);
-  });
-
-  test('stringify throws if toJson returns non-serializable value', () {
-    expect(() => JSON.encode(new ToJsoner(new TestClass())), throwsJsonError);
-  });
-
-  test('stringify throws on cyclic values', () {
-    var a = [];
-    var b = a;
-    for (int i = 0; i < 50; i++) {
-      b = [b];
-    }
-    a.add(b);
-    expect(() => JSON.encode(a), throwsJsonError);
-  });
-}
-
-class TestClass {
-  int x;
-  String y;
-
-  TestClass()
-      : x = 3,
-        y = 'joe' {}
-}
-
-class ToJsoner {
-  final Object returnValue;
-  final bool throws;
-  ToJsoner(this.returnValue, {this.throws});
-  Object toJson() {
-    if (throws) throw returnValue;
-    return returnValue;
-  }
-}
-
-class ToJson {
-  final object;
-  const ToJson(this.object);
-  toJson() => object;
-}
-
-var throwsJsonError = throwsA(new isInstanceOf<JsonUnsupportedObjectError>());
-
-/**
- * Checks that the argument can be converted to a JSON string and
- * back, and produce something equivalent to the argument.
- */
-validateRoundTrip(expected) {
-  expect(JSON.decode(JSON.encode(expected)), equals(expected));
-}
diff --git a/tests/lib/convert/json_pretty_test.dart b/tests/lib/convert/json_pretty_test.dart
deleted file mode 100644
index b736bd9..0000000
--- a/tests/lib/convert/json_pretty_test.dart
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Note: This test relies on LF line endings in the source file.
-// It requires an entry in the .gitattributes file.
-
-library json_pretty_test;
-
-import 'dart:convert';
-
-import "package:expect/expect.dart";
-
-void _testIndentWithNullChar() {
-  var encoder = const JsonEncoder.withIndent('\x00');
-  var encoded = encoder.convert([
-    [],
-    [[]]
-  ]);
-  Expect.equals("[\n\x00[],\n\x00[\n\x00\x00[]\n\x00]\n]", encoded);
-}
-
-void main() {
-  _testIndentWithNullChar();
-
-  _expect(null, 'null');
-
-  _expect(
-      [
-        [],
-        [[]]
-      ],
-      '''
-[
-  [],
-  [
-    []
-  ]
-]''');
-
-  _expect(
-      [1, 2, 3, 4],
-      '''
-[
-  1,
-  2,
-  3,
-  4
-]''');
-
-  _expect(
-      [true, null, 'hello', 42.42],
-      '''
-[
-  true,
-  null,
-  "hello",
-  42.42
-]''');
-
-  _expect(
-      {"hello": [], "goodbye": {}},
-      '''{
-  "hello": [],
-  "goodbye": {}
-}''');
-
-  _expect(
-      [
-        "test",
-        1,
-        2,
-        33234.324,
-        true,
-        false,
-        null,
-        {
-          "test1": "test2",
-          "test3": "test4",
-          "grace": 5,
-          "shanna": [0, 1, 2]
-        },
-        {
-          "lib": "app.dart",
-          "src": ["foo.dart", "bar.dart"]
-        }
-      ],
-      '''[
-  "test",
-  1,
-  2,
-  33234.324,
-  true,
-  false,
-  null,
-  {
-    "test1": "test2",
-    "test3": "test4",
-    "grace": 5,
-    "shanna": [
-      0,
-      1,
-      2
-    ]
-  },
-  {
-    "lib": "app.dart",
-    "src": [
-      "foo.dart",
-      "bar.dart"
-    ]
-  }
-]''');
-}
-
-void _expect(Object object, String expected) {
-  var encoder = const JsonEncoder.withIndent('  ');
-  var prettyOutput = encoder.convert(object);
-
-  Expect.equals(expected, prettyOutput);
-
-  encoder = const JsonEncoder.withIndent('');
-
-  var flatOutput = encoder.convert(object);
-
-  var flatExpected = const LineSplitter()
-      .convert(expected)
-      .map((line) => line.trimLeft())
-      .join('\n');
-
-  Expect.equals(flatExpected, flatOutput);
-
-  var compactOutput = JSON.encode(object);
-
-  encoder = const JsonEncoder.withIndent(null);
-  Expect.equals(compactOutput, encoder.convert(object));
-
-  var prettyDecoded = JSON.decode(prettyOutput);
-
-  Expect.equals(compactOutput, JSON.encode(prettyDecoded));
-}
diff --git a/tests/lib/convert/json_test.dart b/tests/lib/convert/json_test.dart
deleted file mode 100644
index bd99913..0000000
--- a/tests/lib/convert/json_test.dart
+++ /dev/null
@@ -1,356 +0,0 @@
-// 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.
-// Disable background compilation so that the Issue 24908 can be reproduced.
-// VMOptions=--no-background-compilation
-
-library json_test;
-
-import "package:expect/expect.dart";
-import "dart:convert";
-
-bool badFormat(e) => e is FormatException;
-
-void testJson(json, expected) {
-  compare(expected, actual, path) {
-    if (expected is List) {
-      Expect.isTrue(actual is List);
-      Expect.equals(expected.length, actual.length, "$path: List length");
-      for (int i = 0; i < expected.length; i++) {
-        compare(expected[i], actual[i], "$path[$i]");
-      }
-    } else if (expected is Map) {
-      Expect.isTrue(actual is Map);
-      Expect.equals(expected.length, actual.length, "$path: Map size");
-      expected.forEach((key, value) {
-        Expect.isTrue(actual.containsKey(key));
-        compare(value, actual[key], "$path[$key]");
-      });
-    } else if (expected is num) {
-      Expect.equals(expected is int, actual is int, "$path: same number type");
-      Expect.isTrue(expected.compareTo(actual) == 0,
-          "$path: Expected: $expected, was: $actual");
-    } else {
-      // String, bool, null.
-      Expect.equals(expected, actual, path);
-    }
-  }
-
-  for (var reviver in [null, (k, v) => v]) {
-    for (var split in [0, 1, 2, 3]) {
-      var name = (reviver == null) ? "" : "reviver:";
-      var sink = new ChunkedConversionSink.withCallback((values) {
-        var value = values[0];
-        compare(expected, value, "$name$value");
-      });
-      var decoderSink = JSON.decoder.startChunkedConversion(sink);
-      switch (split) {
-        case 0:
-          // Split after first char.
-          decoderSink.add(json.substring(0, 1));
-          decoderSink.add(json.substring(1));
-          decoderSink.close();
-          break;
-        case 1:
-          // Split before last char.
-          int length = json.length;
-          decoderSink.add(json.substring(0, length - 1));
-          decoderSink.add(json.substring(length - 1));
-          decoderSink.close();
-          break;
-        case 2:
-          // Split in middle.
-          int half = json.length ~/ 2;
-          decoderSink.add(json.substring(0, half));
-          decoderSink.add(json.substring(half));
-          decoderSink.close();
-          break;
-        case 3:
-          // Split in three chunks.
-          int length = json.length;
-          int third = length ~/ 3;
-          decoderSink.add(json.substring(0, third));
-          decoderSink.add(json.substring(third, 2 * third));
-          decoderSink.add(json.substring(2 * third));
-          decoderSink.close();
-          break;
-      }
-    }
-  }
-}
-
-String escape(String s) {
-  var sb = new StringBuffer();
-  for (int i = 0; i < s.length; i++) {
-    int code = s.codeUnitAt(i);
-    if (code == '\\'.codeUnitAt(0))
-      sb.write(r'\\');
-    else if (code == '\"'.codeUnitAt(0))
-      sb.write(r'\"');
-    else if (code >= 32 && code < 127)
-      sb.writeCharCode(code);
-    else {
-      String hex = '000${code.toRadixString(16)}';
-      sb.write(r'\u' '${hex.substring(hex.length - 4)}');
-    }
-  }
-  return '$sb';
-}
-
-void testThrows(json) {
-  Expect.throws(() => JSON.decode(json), badFormat, "json = '${escape(json)}'");
-}
-
-testNumbers() {
-  // Positive tests for number formats.
-  var integerList = ["0", "9", "9999"];
-  var signList = ["", "-"];
-  var fractionList = ["", ".0", ".1", ".99999"];
-  var exponentList = [""];
-  for (var exphead in ["e", "E", "e-", "E-", "e+", "E+"]) {
-    for (var expval in ["0", "1", "200"]) {
-      exponentList.add("$exphead$expval");
-    }
-  }
-
-  for (var integer in integerList) {
-    for (var sign in signList) {
-      for (var fraction in fractionList) {
-        for (var exp in exponentList) {
-          for (var ws in ["", " ", "\t"]) {
-            var literal = "$ws$sign$integer$fraction$exp$ws";
-            var expectedValue = num.parse(literal);
-            testJson(literal, expectedValue);
-          }
-        }
-      }
-    }
-  }
-
-  // Negative tests (syntax error).
-  // testError thoroughly tests the given parts with a lot of valid
-  // values for the other parts.
-  testError({signs, integers, fractions, exponents}) {
-    def(value, defaultValue) {
-      if (value == null) return defaultValue;
-      if (value is List) return value;
-      return [value];
-    }
-
-    signs = def(signs, signList);
-    integers = def(integers, integerList);
-    fractions = def(fractions, fractionList);
-    exponents = def(exponents, exponentList);
-    for (var integer in integers) {
-      for (var sign in signs) {
-        for (var fraction in fractions) {
-          for (var exponent in exponents) {
-            var literal = "$sign$integer$fraction$exponent";
-            testThrows(literal);
-          }
-        }
-      }
-    }
-  }
-
-  // Doubles overflow to Infinity.
-  testJson("1e+400", double.INFINITY);
-  // (Integers do not, but we don't have those on dart2js).
-
-  // Integer part cannot be omitted:
-  testError(integers: "");
-
-  // Test for "Initial zero only allowed for zero integer part" moved to
-  // json_strict_test.dart because IE's JSON.decode accepts additional initial
-  // zeros.
-
-  // Only minus allowed as sign.
-  testError(signs: "+");
-  // Requires digits after decimal point.
-  testError(fractions: ".");
-  // Requires exponent digts, and only digits.
-  testError(exponents: ["e", "e+", "e-", "e.0"]);
-
-  // No whitespace inside numbers.
-  // Additional case "- 2.2e+2" in json_strict_test.dart.
-  testThrows("-2 .2e+2");
-  testThrows("-2. 2e+2");
-  testThrows("-2.2 e+2");
-  testThrows("-2.2e +2");
-  testThrows("-2.2e+ 2");
-
-  testThrows("[2.,2]");
-  testThrows("{2.:2}");
-
-  testThrows("NaN");
-  testThrows("Infinity");
-  testThrows("-Infinity");
-  Expect.throws(() => JSON.encode(double.NAN));
-  Expect.throws(() => JSON.encode(double.INFINITY));
-  Expect.throws(() => JSON.encode(double.NEGATIVE_INFINITY));
-}
-
-testStrings() {
-  // String parser accepts and understands escapes.
-  var input = r'"\u0000\uffff\n\r\f\t\b\/\\\"' '\x20\ufffd\uffff"';
-  var expected = "\u0000\uffff\n\r\f\t\b\/\\\"\x20\ufffd\uffff";
-  testJson(input, expected);
-  // Empty string.
-  testJson(r'""', "");
-  // Escape first.
-  var escapes = {
-    "f": "\f",
-    "b": "\b",
-    "n": "\n",
-    "r": "\r",
-    "t": "\t",
-    r"\": r"\",
-    '"': '"',
-    "/": "/",
-  };
-  escapes.forEach((esc, lit) {
-    testJson('"\\$esc........"', "$lit........");
-    // Escape last.
-    testJson('"........\\$esc"', "........$lit");
-    // Escape middle.
-    testJson('"....\\$esc...."', "....$lit....");
-  });
-
-  // Does not accept single quotes.
-  testThrows(r"''");
-  // Throws on unterminated strings.
-  testThrows(r'"......\"');
-  // Throws on unterminated escapes.
-  testThrows(r'"\'); // ' is not escaped.
-  testThrows(r'"\a"');
-  testThrows(r'"\u"');
-  testThrows(r'"\u1"');
-  testThrows(r'"\u12"');
-  testThrows(r'"\u123"');
-  testThrows(r'"\ux"');
-  testThrows(r'"\u1x"');
-  testThrows(r'"\u12x"');
-  testThrows(r'"\u123x"');
-  // Throws on bad escapes.
-  testThrows(r'"\a"');
-  testThrows(r'"\x00"');
-  testThrows(r'"\c2"');
-  testThrows(r'"\000"');
-  testThrows(r'"\u{0}"');
-  testThrows(r'"\%"');
-  testThrows('"\\\x00"'); // Not raw string!
-  // Throws on control characters.
-  for (int i = 0; i < 32; i++) {
-    var string = new String.fromCharCodes([0x22, i, 0x22]); // '"\x00"' etc.
-    testThrows(string);
-  }
-}
-
-testObjects() {
-  testJson(r'{}', {});
-  testJson(r'{"x":42}', {"x": 42});
-  testJson(r'{"x":{"x":{"x":42}}}', {
-    "x": {
-      "x": {"x": 42}
-    }
-  });
-  testJson(r'{"x":10,"x":42}', {"x": 42});
-  testJson(r'{"":42}', {"": 42});
-
-  // Keys must be strings.
-  testThrows(r'{x:10}');
-  testThrows(r'{true:10}');
-  testThrows(r'{false:10}');
-  testThrows(r'{null:10}');
-  testThrows(r'{42:10}');
-  testThrows(r'{42e1:10}');
-  testThrows(r'{-42:10}');
-  testThrows(r'{["text"]:10}');
-  testThrows(r'{:10}');
-}
-
-testArrays() {
-  testJson(r'[]', []);
-  testJson(r'[1.1e1,"string",true,false,null,{}]',
-      [1.1e1, "string", true, false, null, {}]);
-  testJson(r'[[[[[[]]]],[[[]]],[[]]]]', [
-    [
-      [
-        [
-          [[]]
-        ]
-      ],
-      [
-        [[]]
-      ],
-      [[]]
-    ]
-  ]);
-  testJson(r'[{},[{}],{"x":[]}]', [
-    {},
-    [{}],
-    {"x": []}
-  ]);
-
-  testThrows(r'[1,,2]');
-  testThrows(r'[1,2,]');
-  testThrows(r'[,2]');
-}
-
-testWords() {
-  testJson(r'true', true);
-  testJson(r'false', false);
-  testJson(r'null', null);
-  testJson(r'[true]', [true]);
-  testJson(r'{"true":true}', {"true": true});
-
-  testThrows(r'truefalse');
-  testThrows(r'trues');
-  testThrows(r'nulll');
-  testThrows(r'full');
-  testThrows(r'nul');
-  testThrows(r'tru');
-  testThrows(r'fals');
-  testThrows(r'\null');
-  testThrows(r't\rue');
-  testThrows(r't\rue');
-}
-
-testWhitespace() {
-  // Valid white-space characters.
-  var v = '\t\r\n\ ';
-  // Invalid white-space and non-recognized characters.
-  var invalids = ['\x00', '\f', '\x08', '\\', '\xa0', '\u2028', '\u2029'];
-
-  // Valid whitespace accepted "everywhere".
-  testJson('$v[${v}-2.2e2$v,$v{$v"key"$v:${v}true$v}$v,$v"ab"$v]$v', [
-    -2.2e2,
-    {"key": true},
-    "ab"
-  ]);
-
-  // IE9 accepts invalid characters at the end, so some of these tests have been
-  // moved to json_strict_test.dart.
-  for (var i in invalids) {
-    testThrows('${i}"s"');
-    testThrows('42${i}');
-    testThrows('$i[]');
-    testThrows('[$i]');
-    testThrows('[$i"s"]');
-    testThrows('["s"$i]');
-    testThrows('$i{"k":"v"}');
-    testThrows('{$i"k":"v"}');
-    testThrows('{"k"$i:"v"}');
-    testThrows('{"k":$i"v"}');
-    testThrows('{"k":"v"$i}');
-  }
-}
-
-main() {
-  testNumbers();
-  testStrings();
-  testWords();
-  testObjects();
-  testArrays();
-  testWhitespace();
-}
diff --git a/tests/lib/convert/json_toEncodable_reviver_test.dart b/tests/lib/convert/json_toEncodable_reviver_test.dart
deleted file mode 100644
index 5ef66ec..0000000
--- a/tests/lib/convert/json_toEncodable_reviver_test.dart
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright (c) 2014, 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 json_tests;
-
-import 'package:expect/expect.dart';
-import 'dart:convert';
-
-class A {
-  final x;
-  A(this.x);
-}
-
-toEncodable(A a) => {"A": a.x};
-reviver(key, value) {
-  if (value is Map && value.length == 1 && value["A"] != null) {
-    return new A(value["A"]);
-  }
-  return value;
-}
-
-const extendedJson =
-    const JsonCodec(toEncodable: toEncodable, reviver: reviver);
-
-main() {
-  var encoded = extendedJson.encode([
-    new A(0),
-    {"2": new A(1)}
-  ]);
-  Expect.equals('[{"A":0},{"2":{"A":1}}]', encoded);
-  var decoded = extendedJson.decode(encoded);
-  Expect.isTrue(decoded is List);
-  Expect.equals(2, decoded.length);
-  Expect.isTrue(decoded[0] is A);
-  Expect.equals(0, decoded[0].x);
-  Expect.isTrue(decoded[1] is Map);
-  Expect.isNotNull(decoded[1]["2"]);
-  Expect.isTrue(decoded[1]["2"] is A);
-  Expect.equals(1, decoded[1]["2"].x);
-
-  var a = extendedJson.decode(extendedJson.encode(new A(499)));
-  Expect.isTrue(a is A);
-  Expect.equals(499, a.x);
-
-  testInvalidMap();
-}
-
-void testInvalidMap() {
-  var map = {"a": 42, "b": 42, 37: 42}; // Non-string key.
-  var enc = new JsonEncoder((_) => "fixed");
-  var res = enc.convert(map);
-  Expect.equals('"fixed"', res);
-
-  enc = new JsonEncoder.withIndent(" ", (_) => "fixed");
-  res = enc.convert(map);
-  Expect.equals('"fixed"', res);
-}
diff --git a/tests/lib/convert/json_unicode_tests.dart b/tests/lib/convert/json_unicode_tests.dart
deleted file mode 100644
index 1f76bce..0000000
--- a/tests/lib/convert/json_unicode_tests.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2013, 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 json_unicode_tests;
-
-import 'unicode_tests.dart';
-
-const _QUOTE = 0x22; // "
-const _COLON = 0x3a; // :
-const _COMMA = 0x2c; // ,
-const _BRACE_OPEN = 0x7b; // {
-const _BRACE_CLOSE = 0x7d; // }
-const _BRACKET_OPEN = 0x5b; // [
-const _BRACKET_CLOSE = 0x5d; // ]
-
-_expandUnicodeTests() {
-  return UNICODE_TESTS.expand((test) {
-    // The unicode test will be a string (possibly) containing unicode
-    // characters. It also contains the empty string.
-    // It must not contain a double-quote '"'.
-    assert(!test.contains('"'));
-
-    var bytes = test[0];
-    var string = test[1];
-
-    // expanded will hold all tests that are generated from the unicode test.
-    var expanded = [];
-
-    // Put the string into quotes.
-    // For example: 'abcd' -> '"abcd"'.
-    var inQuotesBytes = [];
-    inQuotesBytes.add(_QUOTE);
-    inQuotesBytes.addAll(bytes);
-    inQuotesBytes.add(_QUOTE);
-    expanded.add([inQuotesBytes, string]);
-
-    // Put the quoted string into a triple nested list.
-    // For example: 'abcd' -> '[[["abcd"]]]'.
-    var listExpected = [
-      [
-        [string]
-      ]
-    ];
-    var inListBytes = [];
-    inListBytes.addAll([_BRACKET_OPEN, _BRACKET_OPEN, _BRACKET_OPEN]);
-    inListBytes.addAll(inQuotesBytes);
-    inListBytes.addAll([_BRACKET_CLOSE, _BRACKET_CLOSE, _BRACKET_CLOSE]);
-    expanded.add([inListBytes, listExpected]);
-
-    // Put the quoted string into a triple nested list and duplicate that
-    // list three times.
-    // For example: 'abcd' -> '[[[["abcd"]]],[[["abcd"]]],[[["abcd"]]]]'.
-    var listLongerExpected = [listExpected, listExpected, listExpected];
-    var listLongerBytes = [];
-    listLongerBytes.add(_BRACKET_OPEN);
-    listLongerBytes.addAll(inListBytes);
-    listLongerBytes.add(_COMMA);
-    listLongerBytes.addAll(inListBytes);
-    listLongerBytes.add(_COMMA);
-    listLongerBytes.addAll(inListBytes);
-    listLongerBytes.add(_BRACKET_CLOSE);
-    expanded.add([listLongerBytes, listLongerExpected]);
-
-    // Put the previous strings/lists into a map.
-    // For example:
-    //    'abcd' -> '{"abcd":[[[["abcd"]]],[[["abcd"]]],[[["abcd"]]]]}'.
-    var mapExpected = new Map();
-    mapExpected[string] = listLongerExpected;
-    var mapBytes = [];
-    mapBytes.add(_BRACE_OPEN);
-    mapBytes.addAll(inQuotesBytes);
-    mapBytes.add(_COLON);
-    mapBytes.addAll(listLongerBytes);
-    mapBytes.add(_BRACE_CLOSE);
-    expanded.add([mapBytes, mapExpected]);
-
-    return expanded;
-  }).toList();
-}
-
-final JSON_UNICODE_TESTS = _expandUnicodeTests();
diff --git a/tests/lib/convert/json_utf8_chunk_test.dart b/tests/lib/convert/json_utf8_chunk_test.dart
deleted file mode 100644
index fda36ab..0000000
--- a/tests/lib/convert/json_utf8_chunk_test.dart
+++ /dev/null
@@ -1,461 +0,0 @@
-// Copyright (c) 2014, 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 test;
-
-import "package:expect/expect.dart";
-import "dart:convert";
-import "unicode_tests.dart" show UNICODE_TESTS;
-
-bool badFormat(e) => e is FormatException;
-
-main() {
-  testNumbers();
-  testStrings();
-  testKeywords();
-  testAll();
-  testMalformed();
-  testUnicodeTests();
-}
-
-// Create an UTF-8 sink from a chunked JSON decoder, then let [action]
-// put data into it, and check that what comes out is equal to [expect].
-void jsonTest(testName, expect, action(sink), [bool allowMalformed = false]) {
-  jsonParse(testName, (value) {
-    Expect.equals(expect, value, "$testName:$value");
-  }, action, allowMalformed);
-}
-
-void jsonParse(testName, check, action, [bool allowMalformed = false]) {
-  var sink = new ChunkedConversionSink.withCallback((values) {
-    var value = values[0];
-    check(value);
-  });
-  var decoderSink =
-      JSON.decoder.startChunkedConversion(sink).asUtf8Sink(allowMalformed);
-  try {
-    action(decoderSink);
-  } on FormatException catch (e, s) {
-    print("Source: ${e.source} @ ${e.offset}");
-    Expect.fail("Unexpected throw($testName): $e\n$s");
-  }
-}
-
-void testStrings() {
-  // String literal containing characters, all escape types,
-  // and a number of UTF-8 encoded characters.
-  var s = r'"abc\f\ndef\r\t\b\"\/\\\u0001\u9999\uffff'
-      '\x7f\xc2\x80\xdf\xbf\xe0\xa0\x80\xef\xbf\xbf'
-      '\xf0\x90\x80\x80\xf4\x8f\xbf\xbf"'; // UTF-8.
-  var expected = "abc\f\ndef\r\t\b\"\/\\\u0001\u9999\uffff"
-      "\x7f\x80\u07ff\u0800\uffff"
-      "\u{10000}\u{10ffff}";
-  for (var i = 1; i < s.length - 1; i++) {
-    var s1 = s.substring(0, i);
-    var s2 = s.substring(i);
-    jsonTest("$s1|$s2-$i", expected, (sink) {
-      sink.add(s1.codeUnits);
-      sink.add(s2.codeUnits);
-      sink.close();
-    });
-    jsonTest("$s1|$s2-$i-slice", expected, (sink) {
-      sink.addSlice(s.codeUnits, 0, i, false);
-      sink.addSlice(s.codeUnits, i, s.length, true);
-    });
-    for (var j = i; j < s.length - 1; j++) {
-      var s2a = s.substring(i, j);
-      var s2b = s.substring(j);
-      jsonTest("$s1|$s2a|$s2b-$i-$j", expected, (sink) {
-        sink.add(s1.codeUnits);
-        sink.add(s2a.codeUnits);
-        sink.add(s2b.codeUnits);
-        sink.close();
-      });
-    }
-  }
-}
-
-void testNumbers() {
-  for (var number in [
-    "-0.12e-12",
-    "-34.12E+12",
-    "0.0e0",
-    "9.9E9",
-    "0",
-    "9"
-        "1234.56789123456701418035663664340972900390625",
-    "1.2345678912345671e-14",
-    "99999999999999999999"
-  ]) {
-    var expected = num.parse(number);
-    for (int i = 1; i < number.length - 1; i++) {
-      var p1 = number.substring(0, i);
-      var p2 = number.substring(i);
-      jsonTest("$p1|$p2", expected, (sink) {
-        sink.add(p1.codeUnits);
-        sink.add(p2.codeUnits);
-        sink.close();
-      });
-
-      jsonTest("$p1|$p2/slice", expected, (sink) {
-        sink.addSlice(number.codeUnits, 0, i, false);
-        sink.addSlice(number.codeUnits, i, number.length, true);
-      });
-
-      for (int j = i; j < number.length - 1; j++) {
-        var p2a = number.substring(i, j);
-        var p2b = number.substring(j);
-        jsonTest("$p1|$p2a|$p2b", expected, (sink) {
-          sink.add(p1.codeUnits);
-          sink.add(p2a.codeUnits);
-          sink.add(p2b.codeUnits);
-          sink.close();
-        });
-      }
-    }
-  }
-}
-
-// Test that `null`, `true`, and `false` keywords are decoded correctly.
-void testKeywords() {
-  for (var expected in [null, true, false]) {
-    var s = "$expected";
-    for (int i = 1; i < s.length - 1; i++) {
-      var s1 = s.substring(0, i);
-      var s2 = s.substring(i);
-      jsonTest("$s1|$s2", expected, (sink) {
-        sink.add(s1.codeUnits);
-        sink.add(s2.codeUnits);
-        sink.close();
-      });
-      jsonTest("$s1|$s2", expected, (sink) {
-        sink.addSlice(s.codeUnits, 0, i, false);
-        sink.addSlice(s.codeUnits, i, s.length, true);
-      });
-      for (var j = i; j < s.length - 1; j++) {
-        var s2a = s.substring(i, j);
-        var s2b = s.substring(j);
-        jsonTest("$s1|$s2a|$s2b", expected, (sink) {
-          sink.add(s1.codeUnits);
-          sink.add(s2a.codeUnits);
-          sink.add(s2b.codeUnits);
-          sink.close();
-        });
-      }
-    }
-  }
-}
-
-// Tests combinations of numbers, strings and keywords.
-void testAll() {
-  var s = r'{"":[true,false,42, -33e-3,null,"\u0080"], "z": 0}';
-  bool check(o) {
-    if (o is Map) {
-      Expect.equals(2, o.length);
-      Expect.equals(0, o["z"]);
-      var v = o[""];
-      if (v is List) {
-        Expect.listEquals([true, false, 42, -33e-3, null, "\u0080"], v);
-      } else {
-        Expect.fail("Expected list, found ${v.runtimeType}");
-      }
-    } else {
-      Expect.fail("Expected map, found ${o.runtimeType}");
-    }
-  }
-
-  for (var i = 1; i < s.length - 1; i++) {
-    var s1 = s.substring(0, i);
-    var s2 = s.substring(i);
-    jsonParse("$s1|$s2-$i", check, (sink) {
-      sink.add(s1.codeUnits);
-      sink.add(s2.codeUnits);
-      sink.close();
-    });
-    jsonParse("$s1|$s2-$i-slice", check, (sink) {
-      sink.addSlice(s.codeUnits, 0, i, false);
-      sink.addSlice(s.codeUnits, i, s.length, true);
-    });
-    for (var j = i; j < s.length - 1; j++) {
-      var s2a = s.substring(i, j);
-      var s2b = s.substring(j);
-      jsonParse("$s1|$s2a|$s2b-$i-$j", check, (sink) {
-        sink.add(s1.codeUnits);
-        sink.add(s2a.codeUnits);
-        sink.add(s2b.codeUnits);
-        sink.close();
-      });
-    }
-  }
-}
-
-// Check that [codes] decode to [expect] when allowing malformed UTF-8,
-// and throws otherwise.
-void jsonMalformedTest(name, expect, codes) {
-  // Helper method.
-  void test(name, expect, action(sink)) {
-    var tag = "Malform:$name-$expect";
-    {
-      // Allowing malformed, expect [expect]
-      var sink = new ChunkedConversionSink.withCallback((values) {
-        var value = values[0];
-        Expect.equals(expect, value, tag);
-      });
-      var decoderSink =
-          JSON.decoder.startChunkedConversion(sink).asUtf8Sink(true);
-      try {
-        action(decoderSink);
-      } catch (e, s) {
-        Expect.fail("Unexpected throw ($tag): $e\n$s");
-      }
-    }
-    {
-      // Not allowing malformed, expect throw.
-      var sink = new ChunkedConversionSink.withCallback((values) {
-        Expect.fail(tag);
-      });
-      var decoderSink =
-          JSON.decoder.startChunkedConversion(sink).asUtf8Sink(false);
-      Expect.throws(() {
-        action(decoderSink);
-      }, null, tag);
-    }
-  }
-
-  // Test all two and three part slices.
-  for (int i = 1; i < codes.length - 1; i++) {
-    test("$name:$i", expect, (sink) {
-      sink.add(codes.sublist(0, i));
-      sink.add(codes.sublist(i));
-      sink.close();
-    });
-    test("$name:$i-slice", expect, (sink) {
-      sink.addSlice(codes, 0, i, false);
-      sink.addSlice(codes, i, codes.length, true);
-    });
-    for (int j = i; j < codes.length - 1; j++) {
-      test("$name:$i|$j", expect, (sink) {
-        sink.add(codes.sublist(0, i));
-        sink.add(codes.sublist(i, j));
-        sink.add(codes.sublist(j));
-        sink.close();
-      });
-    }
-  }
-}
-
-// Test that `codeString.codeUnits` fails to parse as UTF-8 JSON,
-// even with decoder not throwing on malformed encodings.
-void jsonThrows(String name, String codeString) {
-  testJsonThrows(tag, action) {
-    // Not allowing malformed, expect throw.
-    var sink = new ChunkedConversionSink.withCallback((values) {
-      Expect.fail(tag);
-    });
-    var decoderSink =
-        JSON.decoder.startChunkedConversion(sink).asUtf8Sink(true);
-    Expect.throws(() {
-      action(decoderSink);
-    }, null, tag);
-  }
-
-  var codes = codeString.codeUnits;
-  for (int i = 1; i < codes.length - 1; i++) {
-    testJsonThrows("$name:$i", (sink) {
-      sink.add(codes.sublist(0, i));
-      sink.add(codes.sublist(i));
-      sink.close();
-    });
-    testJsonThrows("$name:$i-slice", (sink) {
-      sink.addSlice(codes, 0, i, false);
-      sink.addSlice(codes, i, codes.length, true);
-    });
-    for (int j = i; j < codes.length - 1; j++) {
-      testJsonThrows("$name:$i|$j", (sink) {
-        sink.add(codes.sublist(0, i));
-        sink.add(codes.sublist(i, j));
-        sink.add(codes.sublist(j));
-        sink.close();
-      });
-    }
-  }
-}
-
-// Malformed UTF-8 encodings.
-void testMalformed() {
-  // Overlong encodings.
-  jsonMalformedTest(
-      "overlong-0-2", "@\uFFFD@", [0x22, 0x40, 0xc0, 0x80, 0x40, 0x22]);
-  jsonMalformedTest(
-      "overlong-0-3", "@\uFFFD@", [0x22, 0x40, 0xe0, 0x80, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("overlong-0-4", "@\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x80, 0x80, 0x80, 0x40, 0x22]);
-
-  jsonMalformedTest(
-      "overlong-7f-2", "@\uFFFD@", [0x22, 0x40, 0xc1, 0xbf, 0x40, 0x22]);
-  jsonMalformedTest(
-      "overlong-7f-3", "@\uFFFD@", [0x22, 0x40, 0xe0, 0x81, 0xbf, 0x40, 0x22]);
-  jsonMalformedTest("overlong-7f-4", "@\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x80, 0x81, 0xbf, 0x40, 0x22]);
-
-  jsonMalformedTest(
-      "overlong-80-3", "@\uFFFD@", [0x22, 0x40, 0xe0, 0x82, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("overlong-80-4", "@\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x80, 0x82, 0x80, 0x40, 0x22]);
-
-  jsonMalformedTest(
-      "overlong-7ff-3", "@\uFFFD@", [0x22, 0x40, 0xe0, 0x9f, 0xbf, 0x40, 0x22]);
-  jsonMalformedTest("overlong-7ff-4", "@\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x80, 0x9f, 0xbf, 0x40, 0x22]);
-
-  jsonMalformedTest("overlong-800-4", "@\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x80, 0xa0, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("overlong-ffff-4", "@\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x8f, 0xbf, 0xbf, 0x40, 0x22]);
-
-  // Unterminated multibyte sequences.
-  jsonMalformedTest(
-      "unterminated-2-normal", "@\uFFFD@", [0x22, 0x40, 0xc0, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-3-normal", "@\uFFFD@",
-      [0x22, 0x40, 0xe0, 0x80, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-4-normal", "@\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x80, 0x80, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-2-multi", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xc0, 0xc2, 0x80, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-3-multi", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xe0, 0x80, 0xc2, 0x80, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-4-multi", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xf0, 0x80, 0x80, 0xc2, 0x80, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-2-escape", "@\uFFFD\n@",
-      [0x22, 0x40, 0xc0, 0x5c, 0x6e, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-3-escape", "@\uFFFD\n@",
-      [0x22, 0x40, 0xe0, 0x80, 0x5c, 0x6e, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-4-escape", "@\uFFFD\n@",
-      [0x22, 0x40, 0xf0, 0x80, 0x80, 0x5c, 0x6e, 0x40, 0x22]);
-
-  jsonMalformedTest("unterminated-2-end", "@\uFFFD", [0x22, 0x40, 0xc0, 0x22]);
-
-  jsonMalformedTest(
-      "unterminated-3-end", "@\uFFFD", [0x22, 0x40, 0xe0, 0x80, 0x22]);
-
-  jsonMalformedTest(
-      "unterminated-4-end", "@\uFFFD", [0x22, 0x40, 0xf0, 0x80, 0x80, 0x22]);
-
-  // Unexpected continuation byte
-  // - after a normal character.
-  jsonMalformedTest(
-      "continuation-normal", "@\uFFFD@", [0x22, 0x40, 0x80, 0x40, 0x22]);
-
-  // - after a valid continuation byte.
-  jsonMalformedTest("continuation-continuation-2", "@\x80\uFFFD@",
-      [0x22, 0x40, 0xc2, 0x80, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("continuation-continuation-3", "@\u0800\uFFFD@",
-      [0x22, 0x40, 0xe0, 0xa0, 0x80, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("continuation-continuation-4", "@\u{10000}\uFFFD@",
-      [0x22, 0x40, 0xf0, 0x90, 0x80, 0x80, 0x80, 0x40, 0x22]);
-
-  // - after another invalid continuation byte
-  jsonMalformedTest("continuation-twice", "@\uFFFD\uFFFD\uFFFD@",
-      [0x22, 0x40, 0x80, 0x80, 0x80, 0x40, 0x22]);
-  // - at start.
-  jsonMalformedTest("continuation-start", "\uFFFD@", [0x22, 0x80, 0x40, 0x22]);
-
-  // Unexpected leading byte where continuation byte expected.
-  jsonMalformedTest(
-      "leading-2", "@\uFFFD\x80@", [0x22, 0x40, 0xc0, 0xc2, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("leading-3-1", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xe0, 0xc2, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("leading-3-2", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xe0, 0x80, 0xc2, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("leading-4-1", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xf0, 0xc2, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("leading-4-2", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xf0, 0x80, 0xc2, 0x80, 0x40, 0x22]);
-  jsonMalformedTest("leading-4-3", "@\uFFFD\x80@",
-      [0x22, 0x40, 0xf0, 0x80, 0x80, 0xc2, 0x80, 0x40, 0x22]);
-
-  // Overlong encodings of ASCII outside of strings always fail.
-  // Use Latin-1 strings as argument since most chars are correct,
-  // pass string.codeUnits to decoder as UTF-8.
-  jsonThrows("number-1", "\xc0\xab0.0e-0"); // '-' is 0x2b => \xc0\xab
-  jsonThrows("number-2", "-\xc0\xb0.0e-0"); // '0' is 0x30 => \xc0\xb0
-  jsonThrows("number-3", "-0\xc0\xae0e-0"); // '.' is 0x2e => \xc0\xae
-  jsonThrows("number-4", "-0.\xc0\xb0e-0");
-  jsonThrows("number-5", "-0.0\xc1\xa5-0"); // 'e' is 0x65 => \xc1\xa5
-  jsonThrows("number-6", "-0.0e\xc0\xab0");
-  jsonThrows("number-7", "-0.0e-\xc0\xb0");
-
-  jsonThrows("true-1", "\xc1\xb4rue"); // 't' is 0x74
-  jsonThrows("true-2", "t\xc1\xb2ue"); // 'r' is 0x72
-  jsonThrows("true-3", "tr\xc1\xb5e"); // 'u' is 0x75
-  jsonThrows("true-4", "tru\xc1\xa5"); // 'e' is 0x65
-
-  jsonThrows("false-1", "\xc1\xa6alse"); // 'f' is 0x66
-  jsonThrows("false-2", "f\xc1\xa1lse"); // 'a' is 0x61
-  jsonThrows("false-3", "fa\xc1\xacse"); // 'l' is 0x6c
-  jsonThrows("false-4", "fal\xc1\xb3e"); // 's' is 0x73
-  jsonThrows("false-5", "fals\xc1\xa5"); // 'e' is 0x65
-
-  jsonThrows("null-1", "\xc1\xaeull"); // 'n' is 0x6e
-  jsonThrows("null-2", "n\xc1\xb5ll"); // 'u' is 0x75
-  jsonThrows("null-3", "nu\xc1\xacl"); // 'l' is 0x6c
-  jsonThrows("null-4", "nul\xc1\xac"); // 'l' is 0x6c
-
-  jsonThrows("array-1", "\xc1\x9b0,0]"); // '[' is 0x5b
-  jsonThrows("array-2", "[0,0\xc1\x9d"); // ']' is 0x5d
-  jsonThrows("array-2", "[0\xc0\xac0]"); // ',' is 0x2c
-
-  jsonThrows("object-1", '\xc1\xbb"x":0}'); // '{' is 0x7b
-  jsonThrows("object-2", '{"x":0\xc1\xbd'); // '}' is 0x7d
-  jsonThrows("object-2", '{"x\xc0\xba0}'); // ':' is 0x3a
-
-  jsonThrows("string-1", '\xc0\xa2x"'); // '"' is 0x22
-  jsonThrows("string-1", '"x\xc0\xa2'); // Unterminated string.
-
-  jsonThrows("whitespace-1", "\xc0\xa01"); // ' ' is 0x20
-}
-
-void testUnicodeTests() {
-  for (var pair in UNICODE_TESTS) {
-    var bytes = pair[0];
-    var string = pair[1];
-    int step = 1;
-    if (bytes.length > 100) step = bytes.length ~/ 13;
-    for (int i = 1; i < bytes.length - 1; i += step) {
-      jsonTest("$string:$i", string, (sink) {
-        sink.add([0x22]); // Double-quote.
-        sink.add(bytes.sublist(0, i));
-        sink.add(bytes.sublist(i));
-        sink.add([0x22]);
-        sink.close();
-      });
-      jsonTest("$string:$i-slice", string, (sink) {
-        sink.addSlice([0x22], 0, 1, false);
-        sink.addSlice(bytes, 0, i, false);
-        sink.addSlice(bytes, i, bytes.length, false);
-        sink.addSlice([0x22], 0, 1, true);
-      });
-      int skip = 1;
-      if (bytes.length > 25) skip = bytes.length ~/ 17;
-      for (int j = i; j < bytes.length - 1; j += skip) {
-        jsonTest("$string:$i|$j", string, (sink) {
-          sink.add([0x22]);
-          sink.add(bytes.sublist(0, i));
-          sink.add(bytes.sublist(i, j));
-          sink.add(bytes.sublist(j));
-          sink.add([0x22]);
-          sink.close();
-        });
-      }
-    }
-  }
-}
diff --git a/tests/lib/convert/json_util_test.dart b/tests/lib/convert/json_util_test.dart
deleted file mode 100644
index b22e51b..0000000
--- a/tests/lib/convert/json_util_test.dart
+++ /dev/null
@@ -1,178 +0,0 @@
-// 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.
-
-library jsonTest;
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-main() {
-  testEscaping();
-  testParse();
-  testParseInvalid();
-}
-
-void testParse() {
-  // Scalars.
-  Expect.equals(5, JSON.decode(' 5 '));
-  Expect.equals(-42, JSON.decode(' -42 '));
-  Expect.equals(3, JSON.decode(' 3e0 '));
-  Expect.equals(3.14, JSON.decode(' 3.14 '));
-  Expect.equals(1.0E-06, JSON.decode(' 1.0E-06 '));
-  Expect.equals(0, JSON.decode("0"));
-  Expect.equals(1, JSON.decode("1"));
-  Expect.equals(0.1, JSON.decode("0.1"));
-  Expect.equals(1.1, JSON.decode("1.1"));
-  Expect.equals(1.1, JSON.decode("1.100000"));
-  Expect.equals(1.111111, JSON.decode("1.111111"));
-  Expect.equals(-0, JSON.decode("-0"));
-  Expect.equals(-1, JSON.decode("-1"));
-  Expect.equals(-0.1, JSON.decode("-0.1"));
-  Expect.equals(-1.1, JSON.decode("-1.1"));
-  Expect.equals(-1.1, JSON.decode("-1.100000"));
-  Expect.equals(-1.111111, JSON.decode("-1.111111"));
-  Expect.equals(11, JSON.decode("1.1e1"));
-  Expect.equals(11, JSON.decode("1.1e+1"));
-  Expect.equals(0.11, JSON.decode("1.1e-1"));
-  Expect.equals(11, JSON.decode("1.1E1"));
-  Expect.equals(11, JSON.decode("1.1E+1"));
-  Expect.equals(0.11, JSON.decode("1.1E-1"));
-  Expect.equals(1E0, JSON.decode(" 1E0"));
-  Expect.equals(1E+0, JSON.decode(" 1E+0"));
-  Expect.equals(1E-0, JSON.decode(" 1E-0"));
-  Expect.equals(1E00, JSON.decode(" 1E00"));
-  Expect.equals(1E+00, JSON.decode(" 1E+00"));
-  Expect.equals(1E-00, JSON.decode(" 1E-00"));
-  Expect.equals(1E+10, JSON.decode(" 1E+10"));
-  Expect.equals(1E+010, JSON.decode(" 1E+010"));
-  Expect.equals(1E+0010, JSON.decode(" 1E+0010"));
-  Expect.equals(1E10, JSON.decode(" 1E10"));
-  Expect.equals(1E010, JSON.decode(" 1E010"));
-  Expect.equals(1E0010, JSON.decode(" 1E0010"));
-  Expect.equals(1E-10, JSON.decode(" 1E-10"));
-  Expect.equals(1E-0010, JSON.decode(" 1E-0010"));
-  Expect.equals(1E0, JSON.decode(" 1e0"));
-  Expect.equals(1E+0, JSON.decode(" 1e+0"));
-  Expect.equals(1E-0, JSON.decode(" 1e-0"));
-  Expect.equals(1E00, JSON.decode(" 1e00"));
-  Expect.equals(1E+00, JSON.decode(" 1e+00"));
-  Expect.equals(1E-00, JSON.decode(" 1e-00"));
-  Expect.equals(1E+10, JSON.decode(" 1e+10"));
-  Expect.equals(1E+010, JSON.decode(" 1e+010"));
-  Expect.equals(1E+0010, JSON.decode(" 1e+0010"));
-  Expect.equals(1E10, JSON.decode(" 1e10"));
-  Expect.equals(1E010, JSON.decode(" 1e010"));
-  Expect.equals(1E0010, JSON.decode(" 1e0010"));
-  Expect.equals(1E-10, JSON.decode(" 1e-10"));
-  Expect.equals(1E-0010, JSON.decode(" 1e-0010"));
-  Expect.equals(true, JSON.decode(' true '));
-  Expect.equals(false, JSON.decode(' false'));
-  Expect.equals(null, JSON.decode(' null '));
-  Expect.equals(null, JSON.decode('\n\rnull\t'));
-  Expect.equals('hi there" bob', JSON.decode(' "hi there\\" bob" '));
-  Expect.equals('', JSON.decode(' "" '));
-
-  // Lists.
-  Expect.listEquals([], JSON.decode(' [] '));
-  Expect.listEquals(["entry"], JSON.decode(' ["entry"] '));
-  Expect.listEquals([true, false], JSON.decode(' [true, false] '));
-  Expect.listEquals([1, 2, 3], JSON.decode(' [ 1 , 2 , 3 ] '));
-
-  // Maps.
-  Expect.mapEquals({}, JSON.decode(' {} '));
-  Expect.mapEquals({"key": "value"}, JSON.decode(' {"key": "value" } '));
-  Expect.mapEquals(
-      {"key1": 1, "key2": 2}, JSON.decode(' {"key1": 1, "key2": 2} '));
-  Expect.mapEquals({"key1": 1}, JSON.decode(' { "key1" : 1 } '));
-}
-
-void testParseInvalid() {
-  void testString(String s) {
-    Expect.throws(() => JSON.decode(s), (e) => e is FormatException);
-  }
-
-  // Scalars
-  testString("");
-  testString("-");
-  testString("-.");
-  testString("3.a");
-  testString("{ key: value }");
-  testString("tru");
-  testString("1E--6");
-  testString("1E-+6");
-  testString("1E+-6");
-  testString("1E++6");
-  testString("1E6.6");
-  testString("1E-6.6");
-  testString("1E+6.6");
-
-  // JavaScript number literals not valid in JSON.
-  testString('[01]');
-  testString('[.1]');
-  testString('[1.]');
-  testString('[1.e1]');
-  testString('[-.1]');
-  testString('[-1.]');
-
-  // Plain invalid number literals.
-  testString('-');
-  testString('--1');
-  testString('-1e');
-  testString('1e--1]');
-  testString('1e+-1');
-  testString('1e-+1');
-  testString('1e++1');
-
-  // Lists
-  testString('[, ]');
-  testString('["", ]');
-  testString('["", "]');
-  testString('["" ""]');
-
-  // Maps
-  testString('{"" ""}');
-  testString('{"": "",}');
-}
-
-void testEscaping() {
-  Expect.stringEquals('""', JSON.encode(''));
-  Expect.stringEquals('"\\u0000"', JSON.encode('\u0000'));
-  Expect.stringEquals('"\\u0001"', JSON.encode('\u0001'));
-  Expect.stringEquals('"\\u0002"', JSON.encode('\u0002'));
-  Expect.stringEquals('"\\u0003"', JSON.encode('\u0003'));
-  Expect.stringEquals('"\\u0004"', JSON.encode('\u0004'));
-  Expect.stringEquals('"\\u0005"', JSON.encode('\u0005'));
-  Expect.stringEquals('"\\u0006"', JSON.encode('\u0006'));
-  Expect.stringEquals('"\\u0007"', JSON.encode('\u0007'));
-  Expect.stringEquals('"\\b"', JSON.encode('\u0008'));
-  Expect.stringEquals('"\\t"', JSON.encode('\u0009'));
-  Expect.stringEquals('"\\n"', JSON.encode('\u000a'));
-  Expect.stringEquals('"\\u000b"', JSON.encode('\u000b'));
-  Expect.stringEquals('"\\f"', JSON.encode('\u000c'));
-  Expect.stringEquals('"\\r"', JSON.encode('\u000d'));
-  Expect.stringEquals('"\\u000e"', JSON.encode('\u000e'));
-  Expect.stringEquals('"\\u000f"', JSON.encode('\u000f'));
-  Expect.stringEquals('"\\u0010"', JSON.encode('\u0010'));
-  Expect.stringEquals('"\\u0011"', JSON.encode('\u0011'));
-  Expect.stringEquals('"\\u0012"', JSON.encode('\u0012'));
-  Expect.stringEquals('"\\u0013"', JSON.encode('\u0013'));
-  Expect.stringEquals('"\\u0014"', JSON.encode('\u0014'));
-  Expect.stringEquals('"\\u0015"', JSON.encode('\u0015'));
-  Expect.stringEquals('"\\u0016"', JSON.encode('\u0016'));
-  Expect.stringEquals('"\\u0017"', JSON.encode('\u0017'));
-  Expect.stringEquals('"\\u0018"', JSON.encode('\u0018'));
-  Expect.stringEquals('"\\u0019"', JSON.encode('\u0019'));
-  Expect.stringEquals('"\\u001a"', JSON.encode('\u001a'));
-  Expect.stringEquals('"\\u001b"', JSON.encode('\u001b'));
-  Expect.stringEquals('"\\u001c"', JSON.encode('\u001c'));
-  Expect.stringEquals('"\\u001d"', JSON.encode('\u001d'));
-  Expect.stringEquals('"\\u001e"', JSON.encode('\u001e'));
-  Expect.stringEquals('"\\u001f"', JSON.encode('\u001f'));
-  Expect.stringEquals('"\\\""', JSON.encode('"'));
-  Expect.stringEquals('"\\\\"', JSON.encode('\\'));
-  Expect.stringEquals('"Got \\b, \\f, \\n, \\r, \\t, \\u0000, \\\\, and \\"."',
-      JSON.encode('Got \b, \f, \n, \r, \t, \u0000, \\, and ".'));
-  Expect.stringEquals('"Got \\b\\f\\n\\r\\t\\u0000\\\\\\"."',
-      JSON.encode('Got \b\f\n\r\t\u0000\\".'));
-}
diff --git a/tests/lib/convert/latin1_test.dart b/tests/lib/convert/latin1_test.dart
deleted file mode 100644
index 7ff4c9e..0000000
--- a/tests/lib/convert/latin1_test.dart
+++ /dev/null
@@ -1,178 +0,0 @@
-// 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";
-import 'dart:convert';
-
-var latin1Strings = ["pure ascii", "blåbærgrød", "\x00 edge cases \xff"];
-
-var nonLatin1Strings = ["Edge case \u{100}", "Edge case super-BMP \u{10000}"];
-
-void main() {
-  // Build longer versions of the example strings.
-  for (int i = 0, n = latin1Strings.length; i < n; i++) {
-    var string = latin1Strings[i];
-    while (string.length < 1024) {
-      string += string;
-    }
-    latin1Strings.add(string);
-  }
-  for (int i = 0, n = nonLatin1Strings.length; i < n; i++) {
-    var string = nonLatin1Strings[i];
-    while (string.length < 1024) {
-      string += string;
-    }
-    nonLatin1Strings.add(string);
-  }
-  testDirectConversions();
-  testChunkedConversions();
-}
-
-void testDirectConversions() {
-  for (var codec in [LATIN1, new Latin1Codec()]) {
-    for (var latin1String in latin1Strings) {
-      List bytes = codec.encoder.convert(latin1String);
-      Expect.listEquals(latin1String.codeUnits.toList(), bytes, latin1String);
-      String roundTripString = codec.decoder.convert(bytes);
-      Expect.equals(latin1String, roundTripString);
-      roundTripString = codec.decode(bytes);
-      Expect.equals(latin1String, roundTripString);
-    }
-
-    for (var nonLatin1String in nonLatin1Strings) {
-      Expect.throws(() {
-        print(codec.encoder.convert(nonLatin1String));
-      }, null, nonLatin1String);
-    }
-
-    var encode = codec.encoder.convert;
-    Expect.listEquals([0x42, 0xff, 0x44], encode("AB\xffDE", 1, 4));
-    Expect.listEquals([0x42, 0xff, 0x44, 0x45], encode("AB\xffDE", 1));
-    Expect.listEquals([0x42, 0xff, 0x44], encode("\u3000B\xffD\u3000", 1, 4));
-    Expect.throws(() {
-      encode("\u3000B\xffD\u3000", 0, 4);
-    });
-    Expect.throws(() {
-      encode("\u3000B\xffD\u3000", 1);
-    });
-    Expect.throws(() {
-      encode("\u3000B\xffD\u3000", 1, 5);
-    });
-    Expect.throws(() {
-      encode("\u3000B\xffD\u3000", -1, 4);
-    });
-    Expect.throws(() {
-      encode("\u3000B\xffD\u3000", 1, -1);
-    });
-    Expect.throws(() {
-      encode("\u3000B\xffD\u3000", 3, 2);
-    });
-
-    var decode = codec.decoder.convert;
-    Expect.equals("B\xffD", decode([0x41, 0x42, 0xff, 0x44, 0x45], 1, 4));
-    Expect.equals("B\xffDE", decode([0x41, 0x42, 0xff, 0x44, 0x45], 1));
-    Expect.equals("B\xffD", decode([0xFF, 0x42, 0xff, 0x44, 0xFF], 1, 4));
-    Expect.throws(() {
-      decode([0x3000, 0x42, 0xff, 0x44, 0x3000], 0, 4);
-    });
-    Expect.throws(() {
-      decode([0x3000, 0x42, 0xff, 0x44, 0x3000], 1);
-    });
-    Expect.throws(() {
-      decode([0x3000, 0x42, 0xff, 0x44, 0x3000], 1, 5);
-    });
-    Expect.throws(() {
-      decode([0x3000, 0x42, 0xff, 0x44, 0x3000], -1, 4);
-    });
-    Expect.throws(() {
-      decode([0x3000, 0x42, 0xff, 0x44, 0x3000], 1, -1);
-    });
-    Expect.throws(() {
-      decode([0x3000, 0x42, 0xff, 0x44, 0x3000], 3, 2);
-    });
-  }
-
-  var allowInvalidCodec = new Latin1Codec(allowInvalid: true);
-  var invalidBytes = [0, 1, 0xff, 0xdead, 0];
-  String decoded = allowInvalidCodec.decode(invalidBytes);
-  Expect.equals("\x00\x01\xFF\uFFFD\x00", decoded);
-  decoded = allowInvalidCodec.decoder.convert(invalidBytes);
-  Expect.equals("\x00\x01\xFF\uFFFD\x00", decoded);
-  decoded = LATIN1.decode(invalidBytes, allowInvalid: true);
-  Expect.equals("\x00\x01\xFF\uFFFD\x00", decoded);
-}
-
-List<int> encode(
-    String str, int chunkSize, Converter<String, List<int>> converter) {
-  List<int> bytes = <int>[];
-  ChunkedConversionSink byteSink =
-      new ByteConversionSink.withCallback(bytes.addAll);
-  var stringConversionSink = converter.startChunkedConversion(byteSink);
-  for (int i = 0; i < str.length; i += chunkSize) {
-    if (i + chunkSize <= str.length) {
-      stringConversionSink.add(str.substring(i, i + chunkSize));
-    } else {
-      stringConversionSink.add(str.substring(i));
-    }
-  }
-  stringConversionSink.close();
-  return bytes;
-}
-
-String decode(
-    List<int> bytes, int chunkSize, Converter<List<int>, String> converter) {
-  StringBuffer buf = new StringBuffer();
-  var stringSink = new StringConversionSink.fromStringSink(buf);
-  var byteConversionSink = converter.startChunkedConversion(stringSink);
-  for (int i = 0; i < bytes.length; i += chunkSize) {
-    if (i + chunkSize <= bytes.length) {
-      byteConversionSink.add(bytes.sublist(i, i + chunkSize));
-    } else {
-      byteConversionSink.add(bytes.sublist(i));
-    }
-  }
-  byteConversionSink.close();
-  return buf.toString();
-}
-
-void testChunkedConversions() {
-  // Check encoding.
-  for (var converter in [
-    LATIN1.encoder,
-    new Latin1Codec().encoder,
-    new Latin1Encoder()
-  ]) {
-    for (int chunkSize in [1, 2, 5, 50]) {
-      for (var latin1String in latin1Strings) {
-        var units = latin1String.codeUnits.toList();
-        List bytes = encode(latin1String, chunkSize, converter);
-        Expect.listEquals(units, bytes);
-      }
-      for (var nonLatin1String in nonLatin1Strings) {
-        Expect.throws(() {
-          encode(nonLatin1Strings, chunkSize, converter);
-        });
-      }
-    }
-  }
-  // Check decoding.
-  for (var converter in [
-    LATIN1.decoder,
-    new Latin1Codec().decoder,
-    new Latin1Decoder()
-  ]) {
-    for (int chunkSize in [1, 2, 5, 50]) {
-      for (var latin1String in latin1Strings) {
-        var units = latin1String.codeUnits.toList();
-        Expect.equals(latin1String, decode(units, chunkSize, converter));
-      }
-      for (var nonLatin1String in nonLatin1Strings) {
-        var units = nonLatin1String.codeUnits.toList();
-        Expect.throws(() {
-          decode(units, chunkSize, converter);
-        });
-      }
-    }
-  }
-}
diff --git a/tests/lib/convert/line_splitter_test.dart b/tests/lib/convert/line_splitter_test.dart
deleted file mode 100644
index 1f3c5d2..0000000
--- a/tests/lib/convert/line_splitter_test.dart
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright (c) 2013, 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 line_splitter_test;
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'dart:convert';
-import 'dart:math' as MATH;
-
-const lineTerminators = const ['\n', '\r', '\r\n'];
-
-void main() {
-  testSimpleConvert();
-  testSplit();
-  testSplitWithOffsets();
-  testManyLines();
-  testReadLine1();
-  testReadLine2();
-  testChunkedConversion();
-}
-
-void testManyLines() {
-  int breakIndex = 0;
-
-  var inputs = const ['line1', 'line2', 'long line 3', ' line 4 ', 'l5'];
-
-  var buffer = inputs.fold(new StringBuffer(), (buff, e) {
-    buff.write(e);
-    buff.write(lineTerminators[breakIndex]);
-
-    breakIndex++;
-    breakIndex = breakIndex % lineTerminators.length;
-
-    return buff;
-  });
-
-  var foo = _getLinesSliced(buffer.toString());
-  Expect.equals(inputs.join(), foo);
-}
-
-String _getLinesSliced(String str) {
-  String lines;
-  var stringSink =
-      new StringConversionSink.withCallback((result) => lines = result);
-  var sink = new LineSplitter().startChunkedConversion(stringSink);
-
-  const chunkSize = 3;
-  var index = 0;
-  while (index < str.length) {
-    var end = MATH.min(str.length, index + chunkSize);
-
-    sink.addSlice(str, index, end, false);
-    index += chunkSize;
-  }
-
-  sink.close();
-  return lines;
-}
-
-void testSimpleConvert() {
-  var decoder = new LineSplitter();
-  for (var lf in lineTerminators) {
-    var test = "line1${lf}line2${lf}line3";
-
-    var result = decoder.convert(test);
-
-    Expect.listEquals(['line1', 'line2', 'line3'], result);
-  }
-
-  var test = "Line1\nLine2\r\nLine3\rLine4\n\n\n\r\n\r\n\r\r";
-  var result = decoder.convert(test);
-
-  Expect.listEquals(
-      ['Line1', 'Line2', 'Line3', 'Line4', '', '', '', '', '', ''], result);
-}
-
-void testReadLine1() {
-  var controller = new StreamController(sync: true);
-  var stream =
-      controller.stream.transform(UTF8.decoder).transform(const LineSplitter());
-
-  var stage = 0;
-  var done = false;
-
-  void stringData(line) {
-    Expect.equals(stage, 0);
-    Expect.equals("Line", line);
-    stage++;
-  }
-
-  void streamClosed() {
-    Expect.equals(1, stage);
-    done = true;
-  }
-
-  stream.listen(stringData, onDone: streamClosed);
-
-  // Note: codeUnits is fine. Text is ASCII.
-  controller.add("Line".codeUnits);
-  controller.close();
-  Expect.isTrue(done, 'should be done by now');
-}
-
-void testReadLine2() {
-  var controller = new StreamController(sync: true);
-
-  var stream =
-      controller.stream.transform(UTF8.decoder).transform(const LineSplitter());
-
-  var expectedLines = [
-    'Line1',
-    'Line2',
-    'Line3',
-    'Line4',
-    '',
-    '',
-    '',
-    '',
-    '',
-    '',
-    'Line5',
-    'Line6'
-  ];
-
-  var index = 0;
-
-  stream.listen((line) {
-    Expect.equals(expectedLines[index++], line);
-  });
-
-  // Note: codeUnits is fine. Text is ASCII.
-  controller.add("Line1\nLine2\r\nLine3\rLi".codeUnits);
-  controller.add("ne4\n".codeUnits);
-  controller.add("\n\n\r\n\r\n\r\r".codeUnits);
-  controller.add("Line5\r".codeUnits);
-  controller.add("\nLine6\n".codeUnits);
-  controller.close();
-  Expect.equals(expectedLines.length, index);
-}
-
-void testSplit() {
-  for (var lf in lineTerminators) {
-    var test = "line1${lf}line2${lf}line3";
-    var result = LineSplitter.split(test).toList();
-    Expect.listEquals(['line1', 'line2', 'line3'], result);
-  }
-
-  var test = "Line1\nLine2\r\nLine3\rLine4\n\n\n\r\n\r\n\r\r";
-  var result = LineSplitter.split(test).toList();
-
-  Expect.listEquals(
-      ['Line1', 'Line2', 'Line3', 'Line4', '', '', '', '', '', ''], result);
-}
-
-void testSplitWithOffsets() {
-  for (var lf in lineTerminators) {
-    var test = "line1${lf}line2${lf}line3";
-    var i2 = 5 + lf.length; // index of "line2".
-    Expect.equals(5 + lf.length, i2);
-
-    var result = LineSplitter.split(test, 4).toList();
-    Expect.listEquals(['1', 'line2', 'line3'], result);
-
-    result = LineSplitter.split(test, 5).toList();
-    Expect.listEquals(['', 'line2', 'line3'], result);
-
-    result = LineSplitter.split(test, i2).toList();
-    Expect.listEquals(['line2', 'line3'], result);
-
-    result = LineSplitter.split(test, 0, i2 + 2).toList();
-    Expect.listEquals(['line1', 'li'], result);
-
-    result = LineSplitter.split(test, i2, i2 + 5).toList();
-    Expect.listEquals(['line2'], result);
-  }
-
-  var test = "Line1\nLine2\r\nLine3\rLine4\n\n\n\r\n\r\n\r\r";
-
-  var result = LineSplitter.split(test).toList();
-
-  Expect.listEquals(
-      ['Line1', 'Line2', 'Line3', 'Line4', '', '', '', '', '', ''], result);
-
-  test = "a\n\nb\r\nc\n\rd\r\re\r\n\nf\r\n";
-  result = LineSplitter.split(test).toList();
-  Expect.listEquals(["a", "", "b", "c", "", "d", "", "e", "", "f"], result);
-}
-
-void testChunkedConversion() {
-  // Test any split of this complex string.
-  var test = "a\n\nb\r\nc\n\rd\r\re\r\n\nf\rg\nh\r\n";
-  var result = ["a", "", "b", "c", "", "d", "", "e", "", "f", "g", "h"];
-  for (int i = 0; i < test.length; i++) {
-    var output = [];
-    var splitter = new LineSplitter();
-    var outSink = new ChunkedConversionSink.withCallback(output.addAll);
-    var sink = splitter.startChunkedConversion(outSink);
-    sink.addSlice(test, 0, i, false);
-    sink.addSlice(test, i, test.length, false);
-    sink.close();
-    Expect.listEquals(result, output);
-  }
-
-  // Test the string split into three parts in any way.
-  for (int i = 0; i < test.length; i++) {
-    for (int j = i; j < test.length; j++) {
-      var output = [];
-      var splitter = new LineSplitter();
-      var outSink = new ChunkedConversionSink.withCallback(output.addAll);
-      var sink = splitter.startChunkedConversion(outSink);
-      sink.addSlice(test, 0, i, false);
-      sink.addSlice(test, i, j, false);
-      sink.addSlice(test, j, test.length, true);
-      Expect.listEquals(result, output);
-    }
-  }
-}
diff --git a/tests/lib/convert/streamed_conversion_json_decode1_test.dart b/tests/lib/convert/streamed_conversion_json_decode1_test.dart
deleted file mode 100644
index 2f7c562..0000000
--- a/tests/lib/convert/streamed_conversion_json_decode1_test.dart
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'dart:convert';
-import "package:async_helper/async_helper.dart";
-
-final TESTS = [
-  [5, '5'],
-  [-42, '-42'],
-  [3.14, '3.14'],
-  [true, 'true'],
-  [false, 'false'],
-  [null, 'null'],
-  ['quote"or\'', '"quote\\"or\'"'],
-  ['', '""'],
-  [[], "[]"],
-  [
-    [3, -4.5, true, "hi", false],
-    '[3,-4.5,true,"hi",false]'
-  ],
-  [
-    [null],
-    "[null]"
-  ],
-  [
-    [
-      [null]
-    ],
-    "[[null]]"
-  ],
-  [
-    [
-      [3]
-    ],
-    "[[3]]"
-  ],
-  [{}, "{}"],
-  [
-    {"x": 3, "y": 4.5, "z": "hi", "u": true, "v": false},
-    '{"x":3,"y":4.5,"z":"hi","u":true,"v":false}'
-  ],
-  [
-    {"x": null},
-    '{"x":null}'
-  ],
-  [
-    {"x": {}},
-    '{"x":{}}'
-  ],
-  // Note that -0.0 won't be treated the same in JS. The Json spec seems to
-  // allow it, though.
-  [
-    {"hi there": 499, "'": -0.0},
-    '{"hi there":499,"\'":-0.0}'
-  ],
-  [r'\foo', r'"\\foo"'],
-];
-
-bool isJsonEqual(o1, o2) {
-  if (o1 == o2) return true;
-  if (o1 is List && o2 is List) {
-    if (o1.length != o2.length) return false;
-    for (int i = 0; i < o1.length; i++) {
-      if (!isJsonEqual(o1[i], o2[i])) return false;
-    }
-    return true;
-  }
-  if (o1 is Map && o2 is Map) {
-    if (o1.length != o2.length) return false;
-    for (var key in o1.keys) {
-      Expect.isTrue(key is String);
-      if (!o2.containsKey(key)) return false;
-      if (!isJsonEqual(o1[key], o2[key])) return false;
-    }
-    return true;
-  }
-  return false;
-}
-
-Stream<Object> createStream(List<String> chunks) {
-  var decoder = new JsonDecoder(null);
-  var controller;
-  controller = new StreamController(onListen: () {
-    chunks.forEach(controller.add);
-    controller.close();
-  });
-  return controller.stream.transform(decoder);
-}
-
-Stream<Object> decode(String str) {
-  return createStream([str]);
-}
-
-Stream<Object> decode2(String str) {
-  return createStream(str.split(""));
-}
-
-void checkIsJsonEqual(expected, stream) {
-  asyncStart();
-  stream.single.then((o) {
-    Expect.isTrue(isJsonEqual(expected, o));
-    asyncEnd();
-  });
-}
-
-void main() {
-  var tests = TESTS.expand((test) {
-    var object = test[0];
-    var string = test[1];
-    var longString = "                                                        "
-        "                                                        "
-        "$string"
-        "                                                        "
-        "                                                        ";
-    return [
-      test,
-      [object, longString]
-    ];
-  });
-  for (var test in TESTS) {
-    var o = test[0];
-    var string = test[1];
-    checkIsJsonEqual(o, decode(string));
-    checkIsJsonEqual(o, decode2(string));
-  }
-}
diff --git a/tests/lib/convert/streamed_conversion_json_encode1_test.dart b/tests/lib/convert/streamed_conversion_json_encode1_test.dart
deleted file mode 100644
index 75dde8b..0000000
--- a/tests/lib/convert/streamed_conversion_json_encode1_test.dart
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'dart:convert';
-import "package:async_helper/async_helper.dart";
-
-final TESTS = [
-  [5, '5'],
-  [-42, '-42'],
-  [3.14, '3.14'],
-  [true, 'true'],
-  [false, 'false'],
-  [null, 'null'],
-  ['quote"or\'', '"quote\\"or\'"'],
-  ['', '""'],
-  [[], "[]"],
-  [
-    [3, -4.5, true, "hi", false],
-    '[3,-4.5,true,"hi",false]'
-  ],
-  [
-    [null],
-    "[null]"
-  ],
-  [
-    [
-      [null]
-    ],
-    "[[null]]"
-  ],
-  [
-    [
-      [3]
-    ],
-    "[[3]]"
-  ],
-  [{}, "{}"],
-  [
-    {"x": 3, "y": 4.5, "z": "hi", "u": true, "v": false},
-    '{"x":3,"y":4.5,"z":"hi","u":true,"v":false}'
-  ],
-  [
-    {"x": null},
-    '{"x":null}'
-  ],
-  [
-    {"x": {}},
-    '{"x":{}}'
-  ],
-  // Note that -0.0 won't be treated the same in JS. The Json spec seems to
-  // allow it, though.
-  [
-    {"hi there": 499, "'": -0.0},
-    '{"hi there":499,"\'":-0.0}'
-  ],
-  [r'\foo', r'"\\foo"'],
-];
-
-Stream<String> encode(Object o) {
-  var encoder = new JsonEncoder();
-  StreamController controller;
-  controller = new StreamController(onListen: () {
-    controller.add(o);
-    controller.close();
-  });
-  return controller.stream.transform(encoder);
-}
-
-void testNoPause(String expected, Object o) {
-  asyncStart();
-  Stream stream = encode(o);
-  stream.toList().then((list) {
-    StringBuffer buffer = new StringBuffer();
-    buffer.writeAll(list);
-    Expect.stringEquals(expected, buffer.toString());
-    asyncEnd();
-  });
-}
-
-void testWithPause(String expected, Object o) {
-  asyncStart();
-  Stream stream = encode(o);
-  StringBuffer buffer = new StringBuffer();
-  var sub;
-  sub = stream.listen((x) {
-    buffer.write(x);
-    sub.pause(new Future.delayed(Duration.ZERO));
-  }, onDone: () {
-    Expect.stringEquals(expected, buffer.toString());
-    asyncEnd();
-  });
-}
-
-void main() {
-  for (var test in TESTS) {
-    var o = test[0];
-    var expected = test[1];
-    testNoPause(expected, o);
-    testWithPause(expected, o);
-  }
-}
diff --git a/tests/lib/convert/streamed_conversion_json_utf8_decode_test.dart b/tests/lib/convert/streamed_conversion_json_utf8_decode_test.dart
deleted file mode 100644
index ab014ee..0000000
--- a/tests/lib/convert/streamed_conversion_json_utf8_decode_test.dart
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013, 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.
-// Test write barrier verification mode.
-// VMOptions=--verify_before_gc --verify_after_gc --old_gen_growth_rate=1 --no-background-compilation
-// VMOptions=
-
-import "package:expect/expect.dart";
-import 'dart:async';
-import 'dart:convert';
-import 'json_unicode_tests.dart';
-import "package:async_helper/async_helper.dart";
-
-final JSON_UTF8 = JSON.fuse(UTF8);
-
-void expectJsonEquals(o1, o2, [path = "result"]) {
-  if (o1 == o2) return;
-  if (o1 is List && o2 is List) {
-    Expect.equals(o1.length, o2.length, "$path.length");
-    for (int i = 0; i < o1.length; i++) {
-      expectJsonEquals(o1[i], o2[i], "$path[$i]");
-    }
-    return;
-  }
-  if (o1 is Map && o2 is Map) {
-    Expect.equals(o1.length, o2.length, "$path.length");
-    for (var key in o1.keys) {
-      Expect.isTrue(key is String, "$path:key = $key");
-      Expect.isTrue(o2.containsKey(key), "$path[$key] missing in $o2");
-      expectJsonEquals(o1[key], o2[key], "$path[$key]");
-    }
-    return;
-  }
-  Expect.equals(o1, o2);
-}
-
-Stream<Object> createStream(List<List<int>> chunks) {
-  var controller;
-  controller = new StreamController(onListen: () {
-    chunks.forEach(controller.add);
-    controller.close();
-  });
-  return controller.stream.transform(JSON_UTF8.decoder);
-}
-
-Stream<Object> decode(List<int> bytes) {
-  return createStream([bytes]);
-}
-
-Stream<Object> decodeChunked(List<int> bytes, int chunkSize) {
-  List<List<int>> chunked = <List<int>>[];
-  int i = 0;
-  while (i < bytes.length) {
-    if (i + chunkSize <= bytes.length) {
-      chunked.add(bytes.sublist(i, i + chunkSize));
-    } else {
-      chunked.add(bytes.sublist(i));
-    }
-    i += chunkSize;
-  }
-  return createStream(chunked);
-}
-
-void checkIsJsonEqual(expected, stream) {
-  asyncStart();
-  stream.single.then((o) {
-    expectJsonEquals(expected, o);
-    asyncEnd();
-  });
-}
-
-main() {
-  for (var test in JSON_UNICODE_TESTS) {
-    var bytes = test[0];
-    var o = test[1];
-    checkIsJsonEqual(o, decode(bytes));
-    checkIsJsonEqual(o, decodeChunked(bytes, 1));
-    checkIsJsonEqual(o, decodeChunked(bytes, 2));
-    checkIsJsonEqual(o, decodeChunked(bytes, 3));
-    checkIsJsonEqual(o, decodeChunked(bytes, 4));
-    checkIsJsonEqual(o, decodeChunked(bytes, 5));
-  }
-}
diff --git a/tests/lib/convert/streamed_conversion_json_utf8_encode_test.dart b/tests/lib/convert/streamed_conversion_json_utf8_encode_test.dart
deleted file mode 100644
index 5b9c497..0000000
--- a/tests/lib/convert/streamed_conversion_json_utf8_encode_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'dart:convert';
-import 'json_unicode_tests.dart';
-import "package:async_helper/async_helper.dart";
-
-final JSON_UTF8 = JSON.fuse(UTF8);
-
-Stream<List<int>> encode(Object o) {
-  var controller;
-  controller = new StreamController(onListen: () {
-    controller.add(o);
-    controller.close();
-  });
-  return controller.stream.transform(JSON_UTF8.encoder);
-}
-
-void testUnpaused(List<int> expected, Stream stream) {
-  asyncStart();
-  stream.toList().then((list) {
-    var combined = [];
-    list.forEach(combined.addAll);
-    Expect.listEquals(expected, combined);
-    asyncEnd();
-  });
-}
-
-void testWithPauses(List<int> expected, Stream stream) {
-  asyncStart();
-  var accumulated = [];
-  var sub;
-  sub = stream.listen((x) {
-    accumulated.addAll(x);
-    sub.pause(new Future.delayed(Duration.ZERO));
-  }, onDone: () {
-    Expect.listEquals(expected, accumulated);
-    asyncEnd();
-  });
-}
-
-void main() {
-  for (var test in JSON_UNICODE_TESTS) {
-    var expected = test[0];
-    var object = test[1];
-    testUnpaused(expected, encode(object));
-    testWithPauses(expected, encode(object));
-  }
-}
diff --git a/tests/lib/convert/streamed_conversion_utf8_decode_test.dart b/tests/lib/convert/streamed_conversion_utf8_decode_test.dart
deleted file mode 100644
index 2e025f4..0000000
--- a/tests/lib/convert/streamed_conversion_utf8_decode_test.dart
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'dart:convert';
-import 'unicode_tests.dart';
-import "package:async_helper/async_helper.dart";
-
-Stream<String> decode(List<int> bytes, int chunkSize) {
-  var controller;
-  controller = new StreamController(onListen: () {
-    int i = 0;
-    while (i < bytes.length) {
-      List nextChunk = [];
-      for (int j = 0; j < chunkSize; j++) {
-        if (i < bytes.length) {
-          nextChunk.add(bytes[i]);
-          i++;
-        }
-      }
-      controller.add(nextChunk);
-    }
-    controller.close();
-  });
-  return controller.stream.transform(UTF8.decoder);
-}
-
-testUnpaused(String expected, Stream stream) {
-  asyncStart();
-  stream.toList().then((list) {
-    StringBuffer buffer = new StringBuffer();
-    buffer.writeAll(list);
-    Expect.stringEquals(expected, buffer.toString());
-    asyncEnd();
-  });
-}
-
-testWithPauses(String expected, Stream stream) {
-  asyncStart();
-  StringBuffer buffer = new StringBuffer();
-  var sub;
-  sub = stream.listen((x) {
-    buffer.write(x);
-    sub.pause(new Future.delayed(Duration.ZERO));
-  }, onDone: () {
-    Expect.stringEquals(expected, buffer.toString());
-    asyncEnd();
-  });
-}
-
-main() {
-  for (var test in UNICODE_TESTS) {
-    var bytes = test[0];
-    var expected = test[1];
-    testUnpaused(expected, decode(bytes, 1));
-    testWithPauses(expected, decode(bytes, 1));
-    testUnpaused(expected, decode(bytes, 2));
-    testWithPauses(expected, decode(bytes, 2));
-    testUnpaused(expected, decode(bytes, 3));
-    testWithPauses(expected, decode(bytes, 3));
-    testUnpaused(expected, decode(bytes, 4));
-    testWithPauses(expected, decode(bytes, 4));
-  }
-}
diff --git a/tests/lib/convert/streamed_conversion_utf8_encode_test.dart b/tests/lib/convert/streamed_conversion_utf8_encode_test.dart
deleted file mode 100644
index aec3618..0000000
--- a/tests/lib/convert/streamed_conversion_utf8_encode_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:async';
-import 'dart:convert';
-import 'unicode_tests.dart';
-import "package:async_helper/async_helper.dart";
-
-Stream<List<int>> encode(String string, int chunkSize) {
-  var controller;
-  controller = new StreamController(onListen: () {
-    int i = 0;
-    while (i < string.length) {
-      if (i + chunkSize <= string.length) {
-        controller.add(string.substring(i, i + chunkSize));
-      } else {
-        controller.add(string.substring(i));
-      }
-      i += chunkSize;
-    }
-    controller.close();
-  });
-  return controller.stream.transform(UTF8.encoder);
-}
-
-void testUnpaused(List<int> expected, Stream stream) {
-  asyncStart();
-  stream.toList().then((list) {
-    var combined = [];
-    // Flatten the list.
-    list.forEach(combined.addAll);
-    Expect.listEquals(expected, combined);
-    asyncEnd();
-  });
-}
-
-void testWithPauses(List<int> expected, Stream stream) {
-  asyncStart();
-  var combined = [];
-  var sub;
-  sub = stream.listen((x) {
-    combined.addAll(x);
-    sub.pause(new Future.delayed(Duration.ZERO));
-  }, onDone: () {
-    Expect.listEquals(expected, combined);
-    asyncEnd();
-  });
-}
-
-main() {
-  for (var test in UNICODE_TESTS) {
-    var expected = test[0];
-    var string = test[1];
-    testUnpaused(expected, encode(string, 1));
-    testWithPauses(expected, encode(string, 1));
-    testUnpaused(expected, encode(string, 2));
-    testWithPauses(expected, encode(string, 2));
-  }
-}
diff --git a/tests/lib/convert/unicode_tests.dart b/tests/lib/convert/unicode_tests.dart
deleted file mode 100644
index c7dd6dd..0000000
--- a/tests/lib/convert/unicode_tests.dart
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright (c) 2013, 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 unicode_tests;
-
-// Google favorite: "Îñţérñåţîöñåļîžåţîờñ".
-const INTER_BYTES = const [
-  0xc3,
-  0x8e,
-  0xc3,
-  0xb1,
-  0xc5,
-  0xa3,
-  0xc3,
-  0xa9,
-  0x72,
-  0xc3,
-  0xb1,
-  0xc3,
-  0xa5,
-  0xc5,
-  0xa3,
-  0xc3,
-  0xae,
-  0xc3,
-  0xb6,
-  0xc3,
-  0xb1,
-  0xc3,
-  0xa5,
-  0xc4,
-  0xbc,
-  0xc3,
-  0xae,
-  0xc5,
-  0xbe,
-  0xc3,
-  0xa5,
-  0xc5,
-  0xa3,
-  0xc3,
-  0xae,
-  0xe1,
-  0xbb,
-  0x9d,
-  0xc3,
-  0xb1
-];
-const INTER_STRING = "Îñţérñåţîöñåļîžåţîờñ";
-
-// Blueberry porridge in Danish: "blåbærgrød".
-const BLUEBERRY_BYTES = const [
-  0x62,
-  0x6c,
-  0xc3,
-  0xa5,
-  0x62,
-  0xc3,
-  0xa6,
-  0x72,
-  0x67,
-  0x72,
-  0xc3,
-  0xb8,
-  0x64
-];
-const BLUEBERRY_STRING = "blåbærgrød";
-
-// "சிவா அணாமாைல", that is "Siva Annamalai" in Tamil.
-const SIVA_BYTES1 = const [
-  0xe0,
-  0xae,
-  0x9a,
-  0xe0,
-  0xae,
-  0xbf,
-  0xe0,
-  0xae,
-  0xb5,
-  0xe0,
-  0xae,
-  0xbe,
-  0x20,
-  0xe0,
-  0xae,
-  0x85,
-  0xe0,
-  0xae,
-  0xa3,
-  0xe0,
-  0xae,
-  0xbe,
-  0xe0,
-  0xae,
-  0xae,
-  0xe0,
-  0xae,
-  0xbe,
-  0xe0,
-  0xaf,
-  0x88,
-  0xe0,
-  0xae,
-  0xb2
-];
-const SIVA_STRING1 = "சிவா அணாமாைல";
-
-// "िसवा अणामालै", that is "Siva Annamalai" in Devanagari.
-const SIVA_BYTES2 = const [
-  0xe0,
-  0xa4,
-  0xbf,
-  0xe0,
-  0xa4,
-  0xb8,
-  0xe0,
-  0xa4,
-  0xb5,
-  0xe0,
-  0xa4,
-  0xbe,
-  0x20,
-  0xe0,
-  0xa4,
-  0x85,
-  0xe0,
-  0xa4,
-  0xa3,
-  0xe0,
-  0xa4,
-  0xbe,
-  0xe0,
-  0xa4,
-  0xae,
-  0xe0,
-  0xa4,
-  0xbe,
-  0xe0,
-  0xa4,
-  0xb2,
-  0xe0,
-  0xa5,
-  0x88
-];
-const SIVA_STRING2 = "िसवा अणामालै";
-
-// DESERET CAPITAL LETTER BEE, unicode 0x10412(0xD801+0xDC12)
-// UTF-8: F0 90 90 92
-const BEE_BYTES = const [0xf0, 0x90, 0x90, 0x92];
-const BEE_STRING = "𐐒";
-
-const DIGIT_BYTES = const [0x35];
-const DIGIT_STRING = "5";
-
-const ASCII_BYTES = const [
-  0x61,
-  0x62,
-  0x63,
-  0x64,
-  0x65,
-  0x66,
-  0x67,
-  0x68,
-  0x69,
-  0x6A,
-  0x6B,
-  0x6C,
-  0x6D,
-  0x6E,
-  0x6F,
-  0x70,
-  0x71,
-  0x72,
-  0x73,
-  0x74,
-  0x75,
-  0x76,
-  0x77,
-  0x78,
-  0x79,
-  0x7A
-];
-const ASCII_STRING = "abcdefghijklmnopqrstuvwxyz";
-
-const BIGGEST_ASCII_BYTES = const [0x7F];
-const BIGGEST_ASCII_STRING = "\x7F";
-
-const SMALLEST_2_UTF8_UNIT_BYTES = const [0xC2, 0x80];
-const SMALLEST_2_UTF8_UNIT_STRING = "\u{80}";
-
-const BIGGEST_2_UTF8_UNIT_BYTES = const [0xDF, 0xBF];
-const BIGGEST_2_UTF8_UNIT_STRING = "\u{7FF}";
-
-const SMALLEST_3_UTF8_UNIT_BYTES = const [0xE0, 0xA0, 0x80];
-const SMALLEST_3_UTF8_UNIT_STRING = "\u{800}";
-
-const BIGGEST_3_UTF8_UNIT_BYTES = const [0xEF, 0xBF, 0xBF];
-const BIGGEST_3_UTF8_UNIT_STRING = "\u{FFFF}";
-
-const SMALLEST_4_UTF8_UNIT_BYTES = const [0xF0, 0x90, 0x80, 0x80];
-const SMALLEST_4_UTF8_UNIT_STRING = "\u{10000}";
-
-const BIGGEST_4_UTF8_UNIT_BYTES = const [0xF4, 0x8F, 0xBF, 0xBF];
-const BIGGEST_4_UTF8_UNIT_STRING = "\u{10FFFF}";
-
-const _TEST_PAIRS = const [
-  const [const [], ""],
-  const [INTER_BYTES, INTER_STRING],
-  const [BLUEBERRY_BYTES, BLUEBERRY_STRING],
-  const [SIVA_BYTES1, SIVA_STRING1],
-  const [SIVA_BYTES2, SIVA_STRING2],
-  const [BEE_BYTES, BEE_STRING],
-  const [DIGIT_BYTES, DIGIT_STRING],
-  const [ASCII_BYTES, ASCII_STRING],
-  const [BIGGEST_ASCII_BYTES, BIGGEST_ASCII_STRING],
-  const [SMALLEST_2_UTF8_UNIT_BYTES, SMALLEST_2_UTF8_UNIT_STRING],
-  const [BIGGEST_2_UTF8_UNIT_BYTES, BIGGEST_2_UTF8_UNIT_STRING],
-  const [SMALLEST_3_UTF8_UNIT_BYTES, SMALLEST_3_UTF8_UNIT_STRING],
-  const [BIGGEST_3_UTF8_UNIT_BYTES, BIGGEST_3_UTF8_UNIT_STRING],
-  const [SMALLEST_4_UTF8_UNIT_BYTES, SMALLEST_4_UTF8_UNIT_STRING],
-  const [BIGGEST_4_UTF8_UNIT_BYTES, BIGGEST_4_UTF8_UNIT_STRING],
-];
-
-List<List> _expandTestPairs() {
-  assert(2 == BEE_STRING.length);
-  var tests = [];
-  tests.addAll(_TEST_PAIRS);
-  tests.addAll(_TEST_PAIRS.map((test) {
-    var bytes = test[0];
-    var string = test[1];
-    var longBytes = [];
-    var longString = "";
-    for (int i = 0; i < 100; i++) {
-      longBytes.addAll(bytes);
-      longString += string;
-    }
-    return [longBytes, longString];
-  }));
-  return tests;
-}
-
-final List UNICODE_TESTS = _expandTestPairs();
diff --git a/tests/lib/convert/utf82_test.dart b/tests/lib/convert/utf82_test.dart
deleted file mode 100644
index 8c47ef4..0000000
--- a/tests/lib/convert/utf82_test.dart
+++ /dev/null
@@ -1,272 +0,0 @@
-// 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.
-
-library utf8_test;
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-String decode(List<int> bytes) => new Utf8Decoder().convert(bytes);
-String decodeAllowMalformed(List<int> bytes) {
-  return new Utf8Decoder(allowMalformed: true).convert(bytes);
-}
-
-String decode2(List<int> bytes) => UTF8.decode(bytes);
-String decodeAllowMalformed2(List<int> bytes) {
-  return UTF8.decode(bytes, allowMalformed: true);
-}
-
-String decode3(List<int> bytes) => new Utf8Codec().decode(bytes);
-String decodeAllowMalformed3(List<int> bytes) {
-  return new Utf8Codec(allowMalformed: true).decode(bytes);
-}
-
-String decode4(List<int> bytes) => new Utf8Codec().decoder.convert(bytes);
-String decodeAllowMalformed4(List<int> bytes) {
-  return new Utf8Codec(allowMalformed: true).decoder.convert(bytes);
-}
-
-final TESTS = [
-  // Unfinished UTF-8 sequences.
-  [0xc3],
-  [0xE2, 0x82],
-  [0xF0, 0xA4, 0xAD],
-  // Overlong encoding of euro-sign.
-  [0xF0, 0x82, 0x82, 0xAC],
-  // Other overlong/unfinished sequences.
-  [0xC0],
-  [0xC1],
-  [0xF5],
-  [0xF6],
-  [0xF7],
-  [0xF8],
-  [0xF9],
-  [0xFA],
-  [0xFB],
-  [0xFC],
-  [0xFD],
-  [0xFE],
-  [0xFF],
-  [0xC0, 0x80],
-  [0xC1, 0x80],
-  // Outside valid range.
-  [0xF4, 0xBF, 0xBF, 0xBF],
-  // Negative
-  [-0x01],
-  [-0xFF],
-  [-0x80000000],
-  [-0x40000000],
-  [-0x80000000000000000]
-];
-
-final TESTS2 = [
-  // Test that 0xC0|1, 0x80 does not eat the next character.
-  [
-    [0xC0, 0x80, 0x61],
-    "Xa"
-  ],
-  [
-    [0xC1, 0x80, 0x61],
-    "Xa"
-  ],
-  // 0xF5 .. 0xFF never appear in valid UTF-8 sequences.
-  [
-    [0xF5, 0x80],
-    "XX"
-  ],
-  [
-    [0xF6, 0x80],
-    "XX"
-  ],
-  [
-    [0xF7, 0x80],
-    "XX"
-  ],
-  [
-    [0xF8, 0x80],
-    "XX"
-  ],
-  [
-    [0xF9, 0x80],
-    "XX"
-  ],
-  [
-    [0xFA, 0x80],
-    "XX"
-  ],
-  [
-    [0xFB, 0x80],
-    "XX"
-  ],
-  [
-    [0xFC, 0x80],
-    "XX"
-  ],
-  [
-    [0xFD, 0x80],
-    "XX"
-  ],
-  [
-    [0xFE, 0x80],
-    "XX"
-  ],
-  [
-    [0xFF, 0x80],
-    "XX"
-  ],
-  [
-    [0xF5, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF6, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF7, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF8, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xF9, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFA, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFB, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFC, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFD, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFE, 0x80, 0x61],
-    "XXa"
-  ],
-  [
-    [0xFF, 0x80, 0x61],
-    "XXa"
-  ],
-  // Characters outside the valid range.
-  [
-    [0xF5, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF6, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF7, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF8, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xF9, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFA, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFB, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFC, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFD, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFE, 0x80, 0x80, 0x61],
-    "XXXa"
-  ],
-  [
-    [0xFF, 0x80, 0x80, 0x61],
-    "XXXa"
-  ]
-];
-
-main() {
-  var allTests = TESTS.expand((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    return [
-      [test, "\u{FFFD}"],
-      [
-        new List.from([0x61])..addAll(test),
-        "a\u{FFFD}"
-      ],
-      [
-        new List.from([0x61])
-          ..addAll(test)
-          ..add(0x61),
-        "a\u{FFFD}a"
-      ],
-      [new List.from(test)..add(0x61), "\u{FFFD}a"],
-      [new List.from(test)..addAll(test), "\u{FFFD}\u{FFFD}"],
-      [
-        new List.from(test)
-          ..add(0x61)
-          ..addAll(test),
-        "\u{FFFD}a\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test),
-        "å\u{FFFD}"
-      ],
-      [
-        new List.from([0xc3, 0xa5])..addAll(test)..addAll([0xc3, 0xa5]),
-        "å\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5]),
-        "\u{FFFD}å"
-      ],
-      [
-        new List.from(test)..addAll([0xc3, 0xa5])..addAll(test),
-        "\u{FFFD}å\u{FFFD}"
-      ]
-    ];
-  });
-
-  var allTests2 = TESTS2.map((test) {
-    // Pairs of test and expected string output when malformed strings are
-    // allowed. Replacement character: U+FFFD
-    String expected = test[1].replaceAll("X", "\u{FFFD}");
-    return [test[0], expected];
-  });
-
-  for (var test in []..addAll(allTests)..addAll(allTests2)) {
-    List<int> bytes = test[0];
-    Expect.throws(() => decode(bytes), (e) => e is FormatException);
-    Expect.throws(() => decode2(bytes), (e) => e is FormatException);
-    Expect.throws(() => decode3(bytes), (e) => e is FormatException);
-    Expect.throws(() => decode4(bytes), (e) => e is FormatException);
-
-    String expected = test[1];
-    Expect.equals(expected, decodeAllowMalformed(bytes));
-    Expect.equals(expected, decodeAllowMalformed2(bytes));
-    Expect.equals(expected, decodeAllowMalformed3(bytes));
-    Expect.equals(expected, decodeAllowMalformed4(bytes));
-  }
-}
diff --git a/tests/lib/convert/utf83_test.dart b/tests/lib/convert/utf83_test.dart
deleted file mode 100644
index c65c17d..0000000
--- a/tests/lib/convert/utf83_test.dart
+++ /dev/null
@@ -1,51 +0,0 @@
-// 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.
-
-library utf8_test;
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-main() {
-  // Test that UTF8-decoder removes leading BOM.
-  Expect.equals("a", UTF8.decode([0xEF, 0xBB, 0xBF, 0x61]));
-  Expect.equals("a", UTF8.decoder.convert([0xEF, 0xBB, 0xBF, 0x61]));
-  Expect.equals("a", new Utf8Decoder().convert([0xEF, 0xBB, 0xBF, 0x61]));
-  Expect.equals(
-      "a", UTF8.decode([0xEF, 0xBB, 0xBF, 0x61], allowMalformed: true));
-  Expect.equals("a",
-      new Utf8Codec(allowMalformed: true).decode([0xEF, 0xBB, 0xBF, 0x61]));
-  Expect.equals(
-      "a",
-      new Utf8Codec(allowMalformed: true)
-          .decoder
-          .convert([0xEF, 0xBB, 0xBF, 0x61]));
-  Expect.equals("a",
-      new Utf8Decoder(allowMalformed: true).convert([0xEF, 0xBB, 0xBF, 0x61]));
-  Expect.equals("", UTF8.decode([0xEF, 0xBB, 0xBF]));
-  Expect.equals("", UTF8.decoder.convert([0xEF, 0xBB, 0xBF]));
-  Expect.equals("", new Utf8Decoder().convert([0xEF, 0xBB, 0xBF]));
-  Expect.equals("", UTF8.decode([0xEF, 0xBB, 0xBF], allowMalformed: true));
-  Expect.equals(
-      "", new Utf8Codec(allowMalformed: true).decode([0xEF, 0xBB, 0xBF]));
-  Expect.equals("",
-      new Utf8Codec(allowMalformed: true).decoder.convert([0xEF, 0xBB, 0xBF]));
-  Expect.equals(
-      "", new Utf8Decoder(allowMalformed: true).convert([0xEF, 0xBB, 0xBF]));
-  Expect.equals("a\u{FEFF}", UTF8.decode([0x61, 0xEF, 0xBB, 0xBF]));
-  Expect.equals("a\u{FEFF}", UTF8.decoder.convert([0x61, 0xEF, 0xBB, 0xBF]));
-  Expect.equals(
-      "a\u{FEFF}", new Utf8Decoder().convert([0x61, 0xEF, 0xBB, 0xBF]));
-  Expect.equals(
-      "a\u{FEFF}", UTF8.decode([0x61, 0xEF, 0xBB, 0xBF], allowMalformed: true));
-  Expect.equals("a\u{FEFF}",
-      new Utf8Codec(allowMalformed: true).decode([0x61, 0xEF, 0xBB, 0xBF]));
-  Expect.equals(
-      "a\u{FEFF}",
-      new Utf8Codec(allowMalformed: true)
-          .decoder
-          .convert([0x61, 0xEF, 0xBB, 0xBF]));
-  Expect.equals("a\u{FEFF}",
-      new Utf8Decoder(allowMalformed: true).convert([0x61, 0xEF, 0xBB, 0xBF]));
-}
diff --git a/tests/lib/convert/utf84_test.dart b/tests/lib/convert/utf84_test.dart
deleted file mode 100755
index 6a7d85c..0000000
--- a/tests/lib/convert/utf84_test.dart
+++ /dev/null
@@ -1,994 +0,0 @@
-// 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';
-import 'dart:convert';
-
-const String testEnglishPhrase = "The quick brown fox jumps over the lazy dog.";
-
-const List<int> testEnglishUtf8 = const <int>[
-  0x54,
-  0x68,
-  0x65,
-  0x20,
-  0x71,
-  0x75,
-  0x69,
-  0x63,
-  0x6b,
-  0x20,
-  0x62,
-  0x72,
-  0x6f,
-  0x77,
-  0x6e,
-  0x20,
-  0x66,
-  0x6f,
-  0x78,
-  0x20,
-  0x6a,
-  0x75,
-  0x6d,
-  0x70,
-  0x73,
-  0x20,
-  0x6f,
-  0x76,
-  0x65,
-  0x72,
-  0x20,
-  0x74,
-  0x68,
-  0x65,
-  0x20,
-  0x6c,
-  0x61,
-  0x7a,
-  0x79,
-  0x20,
-  0x64,
-  0x6f,
-  0x67,
-  0x2e
-];
-
-const String testDanishPhrase = "Quizdeltagerne spiste jordbær med "
-    "fløde mens cirkusklovnen Wolther spillede på xylofon.";
-
-const List<int> testDanishUtf8 = const <int>[
-  0x51,
-  0x75,
-  0x69,
-  0x7a,
-  0x64,
-  0x65,
-  0x6c,
-  0x74,
-  0x61,
-  0x67,
-  0x65,
-  0x72,
-  0x6e,
-  0x65,
-  0x20,
-  0x73,
-  0x70,
-  0x69,
-  0x73,
-  0x74,
-  0x65,
-  0x20,
-  0x6a,
-  0x6f,
-  0x72,
-  0x64,
-  0x62,
-  0xc3,
-  0xa6,
-  0x72,
-  0x20,
-  0x6d,
-  0x65,
-  0x64,
-  0x20,
-  0x66,
-  0x6c,
-  0xc3,
-  0xb8,
-  0x64,
-  0x65,
-  0x20,
-  0x6d,
-  0x65,
-  0x6e,
-  0x73,
-  0x20,
-  0x63,
-  0x69,
-  0x72,
-  0x6b,
-  0x75,
-  0x73,
-  0x6b,
-  0x6c,
-  0x6f,
-  0x76,
-  0x6e,
-  0x65,
-  0x6e,
-  0x20,
-  0x57,
-  0x6f,
-  0x6c,
-  0x74,
-  0x68,
-  0x65,
-  0x72,
-  0x20,
-  0x73,
-  0x70,
-  0x69,
-  0x6c,
-  0x6c,
-  0x65,
-  0x64,
-  0x65,
-  0x20,
-  0x70,
-  0xc3,
-  0xa5,
-  0x20,
-  0x78,
-  0x79,
-  0x6c,
-  0x6f,
-  0x66,
-  0x6f,
-  0x6e,
-  0x2e
-];
-
-// unusual formatting due to strange editor interaction w/ text direction.
-const String testHebrewPhrase =
-    "דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה";
-
-const List<int> testHebrewUtf8 = const <int>[
-  0xd7,
-  0x93,
-  0xd7,
-  0x92,
-  0x20,
-  0xd7,
-  0xa1,
-  0xd7,
-  0xa7,
-  0xd7,
-  0xa8,
-  0xd7,
-  0x9f,
-  0x20,
-  0xd7,
-  0xa9,
-  0xd7,
-  0x98,
-  0x20,
-  0xd7,
-  0x91,
-  0xd7,
-  0x99,
-  0xd7,
-  0x9d,
-  0x20,
-  0xd7,
-  0x9e,
-  0xd7,
-  0x90,
-  0xd7,
-  0x95,
-  0xd7,
-  0x9b,
-  0xd7,
-  0x96,
-  0xd7,
-  0x91,
-  0x20,
-  0xd7,
-  0x95,
-  0xd7,
-  0x9c,
-  0xd7,
-  0xa4,
-  0xd7,
-  0xaa,
-  0xd7,
-  0xa2,
-  0x20,
-  0xd7,
-  0x9e,
-  0xd7,
-  0xa6,
-  0xd7,
-  0x90,
-  0x20,
-  0xd7,
-  0x9c,
-  0xd7,
-  0x95,
-  0x20,
-  0xd7,
-  0x97,
-  0xd7,
-  0x91,
-  0xd7,
-  0xa8,
-  0xd7,
-  0x94,
-  0x20,
-  0xd7,
-  0x90,
-  0xd7,
-  0x99,
-  0xd7,
-  0x9a,
-  0x20,
-  0xd7,
-  0x94,
-  0xd7,
-  0xa7,
-  0xd7,
-  0x9c,
-  0xd7,
-  0x99,
-  0xd7,
-  0x98,
-  0xd7,
-  0x94
-];
-
-const String testRussianPhrase = "Съешь же ещё этих мягких "
-    "французских булок да выпей чаю";
-
-const List<int> testRussianUtf8 = const <int>[
-  0xd0,
-  0xa1,
-  0xd1,
-  0x8a,
-  0xd0,
-  0xb5,
-  0xd1,
-  0x88,
-  0xd1,
-  0x8c,
-  0x20,
-  0xd0,
-  0xb6,
-  0xd0,
-  0xb5,
-  0x20,
-  0xd0,
-  0xb5,
-  0xd1,
-  0x89,
-  0xd1,
-  0x91,
-  0x20,
-  0xd1,
-  0x8d,
-  0xd1,
-  0x82,
-  0xd0,
-  0xb8,
-  0xd1,
-  0x85,
-  0x20,
-  0xd0,
-  0xbc,
-  0xd1,
-  0x8f,
-  0xd0,
-  0xb3,
-  0xd0,
-  0xba,
-  0xd0,
-  0xb8,
-  0xd1,
-  0x85,
-  0x20,
-  0xd1,
-  0x84,
-  0xd1,
-  0x80,
-  0xd0,
-  0xb0,
-  0xd0,
-  0xbd,
-  0xd1,
-  0x86,
-  0xd1,
-  0x83,
-  0xd0,
-  0xb7,
-  0xd1,
-  0x81,
-  0xd0,
-  0xba,
-  0xd0,
-  0xb8,
-  0xd1,
-  0x85,
-  0x20,
-  0xd0,
-  0xb1,
-  0xd1,
-  0x83,
-  0xd0,
-  0xbb,
-  0xd0,
-  0xbe,
-  0xd0,
-  0xba,
-  0x20,
-  0xd0,
-  0xb4,
-  0xd0,
-  0xb0,
-  0x20,
-  0xd0,
-  0xb2,
-  0xd1,
-  0x8b,
-  0xd0,
-  0xbf,
-  0xd0,
-  0xb5,
-  0xd0,
-  0xb9,
-  0x20,
-  0xd1,
-  0x87,
-  0xd0,
-  0xb0,
-  0xd1,
-  0x8e
-];
-
-const String testGreekPhrase = "Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ "
-    "στὸ χρυσαφὶ ξέφωτο";
-
-const List<int> testGreekUtf8 = const <int>[
-  0xce,
-  0x93,
-  0xce,
-  0xb1,
-  0xce,
-  0xb6,
-  0xce,
-  0xad,
-  0xce,
-  0xb5,
-  0xcf,
-  0x82,
-  0x20,
-  0xce,
-  0xba,
-  0xce,
-  0xb1,
-  0xe1,
-  0xbd,
-  0xb6,
-  0x20,
-  0xce,
-  0xbc,
-  0xcf,
-  0x85,
-  0xcf,
-  0x81,
-  0xcf,
-  0x84,
-  0xce,
-  0xb9,
-  0xe1,
-  0xbd,
-  0xb2,
-  0xcf,
-  0x82,
-  0x20,
-  0xce,
-  0xb4,
-  0xe1,
-  0xbd,
-  0xb2,
-  0xce,
-  0xbd,
-  0x20,
-  0xce,
-  0xb8,
-  0xe1,
-  0xbd,
-  0xb0,
-  0x20,
-  0xce,
-  0xb2,
-  0xcf,
-  0x81,
-  0xe1,
-  0xbf,
-  0xb6,
-  0x20,
-  0xcf,
-  0x80,
-  0xce,
-  0xb9,
-  0xe1,
-  0xbd,
-  0xb0,
-  0x20,
-  0xcf,
-  0x83,
-  0xcf,
-  0x84,
-  0xe1,
-  0xbd,
-  0xb8,
-  0x20,
-  0xcf,
-  0x87,
-  0xcf,
-  0x81,
-  0xcf,
-  0x85,
-  0xcf,
-  0x83,
-  0xce,
-  0xb1,
-  0xcf,
-  0x86,
-  0xe1,
-  0xbd,
-  0xb6,
-  0x20,
-  0xce,
-  0xbe,
-  0xce,
-  0xad,
-  0xcf,
-  0x86,
-  0xcf,
-  0x89,
-  0xcf,
-  0x84,
-  0xce,
-  0xbf
-];
-
-const String testKatakanaPhrase = "イロハニホヘト チリヌルヲ ワカヨタレソ "
-    "ツネナラム ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン";
-
-const List<int> testKatakanaUtf8 = const <int>[
-  0xe3,
-  0x82,
-  0xa4,
-  0xe3,
-  0x83,
-  0xad,
-  0xe3,
-  0x83,
-  0x8f,
-  0xe3,
-  0x83,
-  0x8b,
-  0xe3,
-  0x83,
-  0x9b,
-  0xe3,
-  0x83,
-  0x98,
-  0xe3,
-  0x83,
-  0x88,
-  0x20,
-  0xe3,
-  0x83,
-  0x81,
-  0xe3,
-  0x83,
-  0xaa,
-  0xe3,
-  0x83,
-  0x8c,
-  0xe3,
-  0x83,
-  0xab,
-  0xe3,
-  0x83,
-  0xb2,
-  0x20,
-  0xe3,
-  0x83,
-  0xaf,
-  0xe3,
-  0x82,
-  0xab,
-  0xe3,
-  0x83,
-  0xa8,
-  0xe3,
-  0x82,
-  0xbf,
-  0xe3,
-  0x83,
-  0xac,
-  0xe3,
-  0x82,
-  0xbd,
-  0x20,
-  0xe3,
-  0x83,
-  0x84,
-  0xe3,
-  0x83,
-  0x8d,
-  0xe3,
-  0x83,
-  0x8a,
-  0xe3,
-  0x83,
-  0xa9,
-  0xe3,
-  0x83,
-  0xa0,
-  0x20,
-  0xe3,
-  0x82,
-  0xa6,
-  0xe3,
-  0x83,
-  0xb0,
-  0xe3,
-  0x83,
-  0x8e,
-  0xe3,
-  0x82,
-  0xaa,
-  0xe3,
-  0x82,
-  0xaf,
-  0xe3,
-  0x83,
-  0xa4,
-  0xe3,
-  0x83,
-  0x9e,
-  0x20,
-  0xe3,
-  0x82,
-  0xb1,
-  0xe3,
-  0x83,
-  0x95,
-  0xe3,
-  0x82,
-  0xb3,
-  0xe3,
-  0x82,
-  0xa8,
-  0xe3,
-  0x83,
-  0x86,
-  0x20,
-  0xe3,
-  0x82,
-  0xa2,
-  0xe3,
-  0x82,
-  0xb5,
-  0xe3,
-  0x82,
-  0xad,
-  0xe3,
-  0x83,
-  0xa6,
-  0xe3,
-  0x83,
-  0xa1,
-  0xe3,
-  0x83,
-  0x9f,
-  0xe3,
-  0x82,
-  0xb7,
-  0x20,
-  0xe3,
-  0x83,
-  0xb1,
-  0xe3,
-  0x83,
-  0x92,
-  0xe3,
-  0x83,
-  0xa2,
-  0xe3,
-  0x82,
-  0xbb,
-  0xe3,
-  0x82,
-  0xb9,
-  0xe3,
-  0x83,
-  0xb3
-];
-
-void main() {
-  testUtf8bytesToCodepoints();
-  testUtf8BytesToString();
-  testEncodeToUtf8();
-}
-
-List<int> encodeUtf8(String str) => UTF8.encode(str);
-List<int> utf8ToRunes(List<int> codeUnits) {
-  return UTF8.decode(codeUnits, allowMalformed: true).runes.toList();
-}
-
-String decodeUtf8(List<int> codeUnits) => UTF8.decode(codeUnits);
-
-void testEncodeToUtf8() {
-  Expect.listEquals(
-      testEnglishUtf8, encodeUtf8(testEnglishPhrase), "english to utf8");
-
-  Expect.listEquals(
-      testDanishUtf8, encodeUtf8(testDanishPhrase), "encode danish to utf8");
-
-  Expect.listEquals(
-      testHebrewUtf8, encodeUtf8(testHebrewPhrase), "Hebrew to utf8");
-
-  Expect.listEquals(
-      testRussianUtf8, encodeUtf8(testRussianPhrase), "Russian to utf8");
-
-  Expect.listEquals(
-      testGreekUtf8, encodeUtf8(testGreekPhrase), "Greek to utf8");
-
-  Expect.listEquals(
-      testKatakanaUtf8, encodeUtf8(testKatakanaPhrase), "Katakana to utf8");
-}
-
-void testUtf8bytesToCodepoints() {
-  Expect.listEquals(
-      [954, 972, 963, 956, 949],
-      utf8ToRunes([0xce, 0xba, 0xcf, 0x8c, 0xcf, 0x83, 0xce, 0xbc, 0xce, 0xb5]),
-      "κόσμε");
-
-  // boundary conditions: First possible sequence of a certain length
-  Expect.listEquals([], utf8ToRunes([]), "no input");
-  Expect.listEquals([0x0], utf8ToRunes([0x0]), "0");
-  Expect.listEquals([0x80], utf8ToRunes([0xc2, 0x80]), "80");
-  Expect.listEquals([0x800], utf8ToRunes([0xe0, 0xa0, 0x80]), "800");
-  Expect.listEquals([0x10000], utf8ToRunes([0xf0, 0x90, 0x80, 0x80]), "10000");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xf8, 0x88, 0x80, 0x80, 0x80]), "200000");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfc, 0x84, 0x80, 0x80, 0x80, 0x80]), "4000000");
-
-  // boundary conditions: Last possible sequence of a certain length
-  Expect.listEquals([0x7f], utf8ToRunes([0x7f]), "7f");
-  Expect.listEquals([0x7ff], utf8ToRunes([0xdf, 0xbf]), "7ff");
-  Expect.listEquals([0xffff], utf8ToRunes([0xef, 0xbf, 0xbf]), "ffff");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xf7, 0xbf, 0xbf, 0xbf]), "1fffff");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfb, 0xbf, 0xbf, 0xbf, 0xbf]), "3ffffff");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfd, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf]), "4000000");
-
-  // other boundary conditions
-  Expect.listEquals([0xd7ff], utf8ToRunes([0xed, 0x9f, 0xbf]), "d7ff");
-  Expect.listEquals([0xe000], utf8ToRunes([0xee, 0x80, 0x80]), "e000");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xef, 0xbf, 0xbd]), "fffd");
-  Expect
-      .listEquals([0x10ffff], utf8ToRunes([0xf4, 0x8f, 0xbf, 0xbf]), "10ffff");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xf4, 0x90, 0x80, 0x80]), "110000");
-
-  // unexpected continuation bytes
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0x80]),
-      "80 => replacement character");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xbf]),
-      "bf => replacement character");
-
-  List<int> allContinuationBytes = <int>[];
-  List<int> matchingReplacementChars = <int>[];
-  for (int i = 0x80; i < 0xc0; i++) {
-    allContinuationBytes.add(i);
-    matchingReplacementChars.add(UNICODE_REPLACEMENT_CHARACTER_RUNE);
-  }
-  Expect.listEquals(matchingReplacementChars, utf8ToRunes(allContinuationBytes),
-      "80 - bf => replacement character x 64");
-
-  List<int> allFirstTwoByteSeq = <int>[];
-  matchingReplacementChars = <int>[];
-  for (int i = 0xc0; i < 0xe0; i++) {
-    allFirstTwoByteSeq.addAll([i, 0x20]);
-    matchingReplacementChars.addAll([UNICODE_REPLACEMENT_CHARACTER_RUNE, 0x20]);
-  }
-  Expect.listEquals(matchingReplacementChars, utf8ToRunes(allFirstTwoByteSeq),
-      "c0 - df + space => replacement character + space x 32");
-
-  List<int> allFirstThreeByteSeq = <int>[];
-  matchingReplacementChars = <int>[];
-  for (int i = 0xe0; i < 0xf0; i++) {
-    allFirstThreeByteSeq.addAll([i, 0x20]);
-    matchingReplacementChars.addAll([UNICODE_REPLACEMENT_CHARACTER_RUNE, 0x20]);
-  }
-  Expect.listEquals(matchingReplacementChars, utf8ToRunes(allFirstThreeByteSeq),
-      "e0 - ef + space => replacement character x 16");
-
-  List<int> allFirstFourByteSeq = <int>[];
-  matchingReplacementChars = <int>[];
-  for (int i = 0xf0; i < 0xf8; i++) {
-    allFirstFourByteSeq.addAll([i, 0x20]);
-    matchingReplacementChars.addAll([UNICODE_REPLACEMENT_CHARACTER_RUNE, 0x20]);
-  }
-  Expect.listEquals(matchingReplacementChars, utf8ToRunes(allFirstFourByteSeq),
-      "f0 - f7 + space => replacement character x 8");
-
-  List<int> allFirstFiveByteSeq = <int>[];
-  matchingReplacementChars = <int>[];
-  for (int i = 0xf8; i < 0xfc; i++) {
-    allFirstFiveByteSeq.addAll([i, 0x20]);
-    matchingReplacementChars.addAll([UNICODE_REPLACEMENT_CHARACTER_RUNE, 0x20]);
-  }
-  Expect.listEquals(matchingReplacementChars, utf8ToRunes(allFirstFiveByteSeq),
-      "f8 - fb + space => replacement character x 4");
-
-  List<int> allFirstSixByteSeq = <int>[];
-  matchingReplacementChars = <int>[];
-  for (int i = 0xfc; i < 0xfe; i++) {
-    allFirstSixByteSeq.addAll([i, 0x20]);
-    matchingReplacementChars.addAll([UNICODE_REPLACEMENT_CHARACTER_RUNE, 0x20]);
-  }
-  Expect.listEquals(matchingReplacementChars, utf8ToRunes(allFirstSixByteSeq),
-      "fc - fd + space => replacement character x 2");
-
-  // Sequences with last continuation byte missing
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xc2]),
-      "2-byte sequence with last byte missing");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xe0, 0x80]), "3-byte sequence with last byte missing");
-  Expect.listEquals(
-      [UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xf0, 0x80, 0x80]),
-      "4-byte sequence with last byte missing");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xf8, 0x88, 0x80, 0x80]),
-      "5-byte sequence with last byte missing");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfc, 0x80, 0x80, 0x80, 0x80]),
-      "6-byte sequence with last byte missing");
-
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xdf]),
-      "2-byte sequence with last byte missing (hi)");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xef, 0xbf]), "3-byte sequence with last byte missing (hi)");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xf7, 0xbf, 0xbf]),
-      "4-byte sequence with last byte missing (hi)");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfb, 0xbf, 0xbf, 0xbf]),
-      "5-byte sequence with last byte missing (hi)");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfd, 0xbf, 0xbf, 0xbf, 0xbf]),
-      "6-byte sequence with last byte missing (hi)");
-
-  // Concatenation of incomplete sequences
-  Expect.listEquals(
-      [
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE,
-        UNICODE_REPLACEMENT_CHARACTER_RUNE
-      ],
-      utf8ToRunes([
-        0xc2,
-        0xe0,
-        0x80,
-        0xf0,
-        0x80,
-        0x80,
-        0xf8,
-        0x88,
-        0x80,
-        0x80,
-        0xfc,
-        0x80,
-        0x80,
-        0x80,
-        0x80,
-        0xdf,
-        0xef,
-        0xbf,
-        0xf7,
-        0xbf,
-        0xbf,
-        0xfb,
-        0xbf,
-        0xbf,
-        0xbf,
-        0xfd,
-        0xbf,
-        0xbf,
-        0xbf,
-        0xbf
-      ]),
-      "Concatenation of incomplete sequences");
-
-  // Impossible bytes
-  Expect.listEquals(
-      [UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xfe]), "fe");
-  Expect.listEquals(
-      [UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xff]), "ff");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfe, 0xfe, 0xff, 0xff]), "fe fe ff ff");
-
-  // Overlong sequences
-  Expect.listEquals(
-      [UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xc0, 0xaf]), "c0 af");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xe0, 0x80, 0xaf]), "e0 80 af");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xf0, 0x80, 0x80, 0xaf]), "f0 80 80 af");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xf8, 0x80, 0x80, 0x80, 0xaf]), "f8 80 80 80 af");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfc, 0x80, 0x80, 0x80, 0x80, 0xaf]), "fc 80 80 80 80 af");
-
-  Expect.listEquals(
-      [UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xc1, 0xbf]), "c1 bf");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xe0, 0x9f, 0xbf]), "e0 9f bf");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xf0, 0x8f, 0xbf, 0xbf]), "f0 8f bf bf");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xf8, 0x87, 0xbf, 0xbf, 0xbf]), "f8 87 bf bf bf");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfc, 0x83, 0xbf, 0xbf, 0xbf, 0xbf]), "fc 83 bf bf bf bf");
-
-  Expect.listEquals(
-      [UNICODE_REPLACEMENT_CHARACTER_RUNE], utf8ToRunes([0xc0, 0x80]), "c0 80");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xe0, 0x80, 0x80]), "e0 80 80");
-  Expect.listEquals([UNICODE_REPLACEMENT_CHARACTER_RUNE],
-      utf8ToRunes([0xf0, 0x80, 0x80, 0x80]), "f0 80 80 80");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xf8, 0x80, 0x80, 0x80, 0x80]), "f8 80 80 80 80");
-  Expect.listEquals([
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE,
-    UNICODE_REPLACEMENT_CHARACTER_RUNE
-  ], utf8ToRunes([0xfc, 0x80, 0x80, 0x80, 0x80, 0x80]), "fc 80 80 80 80 80");
-
-  // Other illegal code positions (???)
-  Expect.listEquals([0xfffe], utf8ToRunes([0xef, 0xbf, 0xbe]), "U+FFFE");
-  Expect.listEquals([0xffff], utf8ToRunes([0xef, 0xbf, 0xbf]), "U+FFFF");
-}
-
-void testUtf8BytesToString() {
-  Expect.stringEquals(
-      testEnglishPhrase, decodeUtf8(testEnglishUtf8), "English");
-
-  Expect.stringEquals(testDanishPhrase, decodeUtf8(testDanishUtf8), "Danish");
-
-  Expect.stringEquals(testHebrewPhrase, decodeUtf8(testHebrewUtf8), "Hebrew");
-
-  Expect.stringEquals(
-      testRussianPhrase, decodeUtf8(testRussianUtf8), "Russian");
-
-  Expect.stringEquals(testGreekPhrase, decodeUtf8(testGreekUtf8), "Greek");
-
-  Expect.stringEquals(
-      testKatakanaPhrase, decodeUtf8(testKatakanaUtf8), "Katakana");
-}
diff --git a/tests/lib/convert/utf85_test.dart b/tests/lib/convert/utf85_test.dart
deleted file mode 100644
index 997e284..0000000
--- a/tests/lib/convert/utf85_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// 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.
-
-library utf8_test;
-
-import "package:expect/expect.dart";
-import 'dart:convert';
-
-main() {
-  for (int i = 0; i <= 0x10FFFF; i++) {
-    if (i == UNICODE_BOM_CHARACTER_RUNE) continue;
-    Expect.equals(
-        i, UTF8.decode(UTF8.encode(new String.fromCharCode(i))).runes.first);
-  }
-}
diff --git a/tests/lib/convert/utf8_encode_test.dart b/tests/lib/convert/utf8_encode_test.dart
deleted file mode 100644
index dc09dcc..0000000
--- a/tests/lib/convert/utf8_encode_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2013, 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";
-import 'dart:convert';
-import 'unicode_tests.dart';
-
-List<int> encode(String str) => new Utf8Encoder().convert(str);
-List<int> encode2(String str) => UTF8.encode(str);
-
-void main() {
-  for (var test in UNICODE_TESTS) {
-    List<int> bytes = test[0];
-    String string = test[1];
-    Expect.listEquals(bytes, encode(string));
-    Expect.listEquals(bytes, encode2(string));
-  }
-
-  testEncodeSlice();
-}
-
-void testEncodeSlice() {
-  var encoder = UTF8.encoder;
-  String ascii = "ABCDE";
-  Expect.listEquals([0x41, 0x42, 0x43, 0x44, 0x45], encoder.convert(ascii));
-  Expect.listEquals([0x41, 0x42, 0x43, 0x44, 0x45], encoder.convert(ascii, 0));
-  Expect
-      .listEquals([0x41, 0x42, 0x43, 0x44, 0x45], encoder.convert(ascii, 0, 5));
-  Expect.listEquals([0x42, 0x43, 0x44, 0x45], encoder.convert(ascii, 1));
-  Expect.listEquals([0x41, 0x42, 0x43, 0x44], encoder.convert(ascii, 0, 4));
-  Expect.listEquals([0x42, 0x43, 0x44], encoder.convert(ascii, 1, 4));
-
-  Expect.throws(() => encoder.convert(ascii, -1)); //    start < 0.
-  Expect.throws(() => encoder.convert(ascii, 6)); //     start > length
-  Expect.throws(() => encoder.convert(ascii, 0, -1)); // end < 0
-  Expect.throws(() => encoder.convert(ascii, 0, 6)); //  end > length
-  Expect.throws(() => encoder.convert(ascii, 3, 2)); //  end < start
-
-  var unicode = "\u0081\u0082\u1041\u{10101}";
-
-  Expect.listEquals(
-      [0xc2, 0x81, 0xc2, 0x82, 0xe1, 0x81, 0x81, 0xf0, 0x90, 0x84, 0x81],
-      encoder.convert(unicode));
-  Expect.listEquals(
-      [0xc2, 0x81, 0xc2, 0x82, 0xe1, 0x81, 0x81, 0xf0, 0x90, 0x84, 0x81],
-      encoder.convert(unicode, 0, unicode.length));
-  Expect.listEquals([0xc2, 0x82, 0xe1, 0x81, 0x81, 0xf0, 0x90, 0x84, 0x81],
-      encoder.convert(unicode, 1));
-  Expect.listEquals(
-      [0xc2, 0x82, 0xe1, 0x81, 0x81], encoder.convert(unicode, 1, 3));
-  // Split in the middle of a surrogate pair.
-  Expect.listEquals([0xc2, 0x82, 0xe1, 0x81, 0x81, 0xed, 0xa0, 0x80],
-      encoder.convert(unicode, 1, 4));
-}
diff --git a/tests/lib/convert/utf8_test.dart b/tests/lib/convert/utf8_test.dart
deleted file mode 100644
index e731a2c..0000000
--- a/tests/lib/convert/utf8_test.dart
+++ /dev/null
@@ -1,82 +0,0 @@
-// 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";
-import 'dart:convert';
-import 'unicode_tests.dart';
-
-String decode(List<int> bytes) => new Utf8Decoder().convert(bytes);
-
-void main() {
-  for (var test in UNICODE_TESTS) {
-    List<int> bytes = test[0];
-    String expected = test[1];
-    Expect.stringEquals(expected, decode(bytes));
-  }
-
-  testDecodeSlice();
-  testErrorOffset();
-}
-
-void testDecodeSlice() {
-  var decoder = UTF8.decoder; // Doesn't allow malformed.
-  var ascii = [0x41, 0x42, 0x43, 0x44, 0x45];
-  Expect.equals("ABCDE", decoder.convert(ascii));
-  Expect.equals("ABCDE", decoder.convert(ascii, 0));
-  Expect.equals("ABCDE", decoder.convert(ascii, 0, ascii.length));
-  Expect.equals("CDE", decoder.convert(ascii, 2));
-  Expect.equals("BCD", decoder.convert(ascii, 1, 4));
-  Expect.equals("ABCD", decoder.convert(ascii, 0, 4));
-
-  Expect.throws(() => decoder.convert(ascii, -1)); //    start < 0.
-  Expect.throws(() => decoder.convert(ascii, 6)); //     start > length
-  Expect.throws(() => decoder.convert(ascii, 0, -1)); // end < 0
-  Expect.throws(() => decoder.convert(ascii, 0, 6)); // end > length
-  Expect.throws(() => decoder.convert(ascii, 3, 2)); // end < start
-
-  var utf8 = [0xc2, 0x81, 0xc2, 0x82, 0xe1, 0x81, 0x81];
-  Expect.equals("\u0081\u0082\u1041", decoder.convert(utf8));
-  Expect.equals("\u0082\u1041", decoder.convert(utf8, 2));
-  Expect.equals("\u0081\u0082", decoder.convert(utf8, 0, 4));
-  Expect.equals("\u0082", decoder.convert(utf8, 2, 4));
-  Expect.throws(() => decoder.convert(utf8, 1));
-  Expect.throws(() => decoder.convert(utf8, 0, 1));
-  Expect.throws(() => decoder.convert(utf8, 2, 5));
-}
-
-void testErrorOffset() {
-  // Test that failed convert calls have an offset in the exception.
-  testExn(input, offset) {
-    Expect.throws(() {
-      UTF8.decoder.convert(input);
-    }, (e) => e is FormatException && input == e.source && offset == e.offset);
-  }
-
-  // Bad encoding, points to first bad byte.
-  testExn([0x80, 0x00], 0);
-  testExn([0xC0, 0x00], 1);
-  testExn([0xE0, 0x00], 1);
-  testExn([0xE0, 0x80, 0x00], 2);
-  testExn([0xF0, 0x00], 1);
-  testExn([0xF0, 0x80, 0x00], 2);
-  testExn([0xF0, 0x80, 0x80, 0x00], 3);
-  testExn([0xF8, 0x00], 0);
-  // Short encoding, points to end.
-  testExn([0xC0], 1);
-  testExn([0xE0], 1);
-  testExn([0xE0, 0x80], 2);
-  testExn([0xF0], 1);
-  testExn([0xF0, 0x80], 2);
-  testExn([0xF0, 0x80, 0x80], 3);
-  // Overlong encoding, points to start of encoding.
-  testExn([0xC0, 0x80], 0);
-  testExn([0xC1, 0xBF], 0);
-  testExn([0xE0, 0x80, 0x80], 0);
-  testExn([0xE0, 0x9F, 0xBF], 0);
-  testExn([0xF0, 0x80, 0x80, 0x80], 0);
-  testExn([0xF0, 0x8F, 0xBF, 0xBF], 0);
-  // Invalid character (value too large, over 0x10FFFF).
-  testExn([0xF4, 0x90, 0x80, 0x80], 0);
-  testExn([0xF7, 0xBF, 0xBF, 0xBF], 0);
-}
diff --git a/tests/lib/developer/inspect_test.dart b/tests/lib/developer/inspect_test.dart
deleted file mode 100644
index 9f06215..0000000
--- a/tests/lib/developer/inspect_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2015, 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:developer';
-import 'package:expect/expect.dart';
-
-class Point {
-  int x, y;
-  Point(this.x, this.y);
-}
-
-void main() {
-  var p_in = new Point(3, 4);
-  var p_out = inspect(p_in);
-  Expect.isTrue(identical(p_in, p_out));
-}
diff --git a/tests/lib/developer/timeline_test.dart b/tests/lib/developer/timeline_test.dart
deleted file mode 100644
index fab8e93..0000000
--- a/tests/lib/developer/timeline_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2015, 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:developer';
-import 'package:expect/expect.dart';
-
-void testUnbalancedStartFinish() {
-  Timeline.startSync('A');
-  Timeline.finishSync();
-
-  bool exceptionCaught = false;
-  try {
-    Timeline.finishSync();
-  } catch (e) {
-    exceptionCaught = true;
-  }
-  Expect.isTrue(exceptionCaught);
-}
-
-void main() {
-  testUnbalancedStartFinish();
-}
diff --git a/tests/lib/js/datetime_roundtrip_test.dart b/tests/lib/js/datetime_roundtrip_test.dart
deleted file mode 100644
index 16cd6d0..0000000
--- a/tests/lib/js/datetime_roundtrip_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2014, 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:js';
-import 'package:expect/expect.dart';
-
-main() {
-  var dt = new DateTime.now();
-  var jsArray = new JsObject.jsify([dt]);
-  var roundTripped = jsArray[0];
-  Expect.isTrue(roundTripped is DateTime);
-  Expect.equals(dt.millisecondsSinceEpoch, roundTripped.millisecondsSinceEpoch);
-}
diff --git a/tests/lib/js/null_test.dart b/tests/lib/js/null_test.dart
deleted file mode 100644
index 16970856..0000000
--- a/tests/lib/js/null_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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 null_test;
-
-import 'dart:js';
-import 'package:unittest/unittest.dart';
-import 'package:unittest/html_config.dart';
-
-main() {
-  useHtmlConfiguration();
-  test('null is sent as null', () {
-    expect(context['isNull'].apply([null]), isTrue);
-    expect(context['isUndefined'].apply([null]), isFalse);
-  });
-}
diff --git a/tests/lib/js/null_test.html b/tests/lib/js/null_test.html
deleted file mode 100644
index 65b66b7..0000000
--- a/tests/lib/js/null_test.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="X-UA-Compatible" content="IE=edge">
-  <meta name="dart.unittest" content="full-stack-traces">
-  <title> null test </title>
-  <style>
-     .unittest-table { font-family:monospace; border:1px; }
-     .unittest-pass { background: #6b3;}
-     .unittest-fail { background: #d55;}
-     .unittest-error { background: #a11;}
-  </style>
-</head>
-<body>
-  <h1> Running null_test </h1>
-  <script src="/root_dart/tests/lib/js/null_test.js"></script>
-  <script type="text/javascript"
-      src="/root_dart/tools/testing/dart/test_controller.js"></script>
-  %TEST_SCRIPTS%
-</body>
-</html>
diff --git a/tests/lib/js/null_test.js b/tests/lib/js/null_test.js
deleted file mode 100644
index 35e1241..0000000
--- a/tests/lib/js/null_test.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// This code is not inlined in the test to support testing in CSP mode.
-function isUndefined(o) { return o === undefined; }
-function isNull(o) { return o === null; }
diff --git a/tests/lib/lib.status b/tests/lib/lib.status
deleted file mode 100644
index 7be5f14..0000000
--- a/tests/lib/lib.status
+++ /dev/null
@@ -1,5 +0,0 @@
-# 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.
-
-*: SkipByDesign # Deprecating Dart1 tests.
diff --git a/tests/lib/math/coin_test.dart b/tests/lib/math/coin_test.dart
deleted file mode 100644
index 47eb281..0000000
--- a/tests/lib/math/coin_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// 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.
-
-// Test that a coin toss with Random.nextBool() is fair.
-
-// Library tag to allow Dartium to run the test.
-library coin_test;
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-main() {
-  var seed = new Random().nextInt(1 << 16);
-  print("coin_test seed: $seed");
-  var rnd = new Random(seed);
-  var heads = 0;
-  var tails = 0;
-  for (var i = 0; i < 10000; i++) {
-    if (rnd.nextBool()) {
-      heads++;
-    } else {
-      tails++;
-    }
-  }
-  print("Heads: $heads\n"
-      "Tails: $tails\n"
-      "Ratio: ${heads/tails}\n");
-  Expect.approxEquals(1.0, heads / tails, 0.1);
-
-  heads = 0;
-  tails = 0;
-  for (var i = 0; i < 10000; i++) {
-    rnd = new Random(i);
-    if (rnd.nextBool()) {
-      heads++;
-    } else {
-      tails++;
-    }
-  }
-  print("Heads: $heads\n"
-      "Tails: $tails\n"
-      "Ratio: ${heads/tails}\n");
-  Expect.approxEquals(1.0, heads / tails, 0.1);
-
-  // A sequence of newly allocated Random number generators should have fair
-  // initial tosses.
-  heads = 0;
-  tails = 0;
-  for (var i = 0; i < 10000; i++) {
-    rnd = new Random();
-    if (rnd.nextBool()) {
-      heads++;
-    } else {
-      tails++;
-    }
-  }
-  print("Heads: $heads\n"
-      "Tails: $tails\n"
-      "Ratio: ${heads/tails}\n");
-  Expect.approxEquals(1.0, heads / tails, 0.1);
-}
diff --git a/tests/lib/math/double_pow_test.dart b/tests/lib/math/double_pow_test.dart
deleted file mode 100644
index 858433a..0000000
--- a/tests/lib/math/double_pow_test.dart
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright (c) 2011, 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=--optimization-counter-threshold=5 --no-background-compilation
-
-library math_test;
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-void checkVeryClose(double a, double b) {
-  // We find a ulp (unit in the last place) by shifting the original number
-  // to the right. This only works if we are not too close to infinity or if
-  // we work with denormals.
-  // We special case for 0.0, but not for infinity.
-  if (a == 0.0) {
-    final minimalDouble = 4.9406564584124654e-324;
-    Expect.equals(true, b.abs() <= minimalDouble);
-    return;
-  }
-  if (b == 0.0) {
-    // No need to look if they are close. Otherwise the check for 'a' above
-    // would have triggered.
-    Expect.equals(a, b);
-  }
-  final double shiftRightBy52 = 2.220446049250313080847263336181640625e-16;
-  final double shiftedA = (a * shiftRightBy52).abs();
-  // Compared to 'a', 'shiftedA' is now ~1-2 ulp.
-
-  final double limitLow = a - shiftedA;
-  final double limitHigh = a + shiftedA;
-  Expect.equals(false, a == limitLow);
-  Expect.equals(false, a == limitHigh);
-  Expect.equals(true, limitLow <= b);
-  Expect.equals(true, b <= limitHigh);
-}
-
-const NaN = double.NAN;
-const Infinity = double.INFINITY;
-
-var samples = [
-  NaN,
-  -Infinity,
-  -3.0, // Odd integer
-  -2.0, // Even integer
-  -1.5, // Non-integer, magnitude > 1
-  -1.0, // Unit
-  -0.5, // Non-integer, magnitude < 1.
-  -0.0,
-  0.5, // Non-integer, magnitude < 1.
-  1.0, // Unit
-  1.5, // Non-integer, magnitude > 1
-  2.0, // Even integer
-  3.0, // Odd integer
-  Infinity
-];
-
-test() {
-  // Tests of pow(x, y):
-  for (var d in samples) {
-    // if `y` is zero (0.0 or -0.0), the result is always 1.0.
-    Expect.identical(1.0, pow(d, 0.0), "$d");
-    Expect.identical(1.0, pow(d, -0.0), "$d");
-  }
-  for (var d in samples) {
-    // if `x` is 1.0, the result is always 1.0.
-    Expect.identical(1.0, pow(1.0, d), "$d");
-  }
-  for (var d in samples) {
-    // otherwise, if either `x` or `y` is NaN then the result is NaN.
-    if (d != 0.0) Expect.isTrue(pow(NaN, d).isNaN, "$d");
-    if (d != 1.0) Expect.isTrue(pow(d, NaN).isNaN, "$d");
-  }
-
-  for (var d in samples) {
-    // if `x` is a finite and strictly negative and `y` is a finite non-integer,
-    // the result is NaN.
-    if (d < 0 && !d.isInfinite) {
-      Expect.isTrue(pow(d, 0.5).isNaN, "$d");
-      Expect.isTrue(pow(d, -0.5).isNaN, "$d");
-      Expect.isTrue(pow(d, 1.5).isNaN, "$d");
-      Expect.isTrue(pow(d, -1.5).isNaN, "$d");
-    }
-  }
-
-  for (var d in samples) {
-    if (d < 0) {
-      // if `x` is Infinity and `y` is strictly negative, the result is 0.0.
-      Expect.identical(0.0, pow(Infinity, d), "$d");
-    }
-    if (d > 0) {
-      // if `x` is Infinity and `y` is strictly positive, the result is Infinity.
-      Expect.identical(Infinity, pow(Infinity, d), "$d");
-    }
-  }
-
-  for (var d in samples) {
-    if (d < 0) {
-      // if `x` is 0.0 and `y` is strictly negative, the result is Infinity.
-      Expect.identical(Infinity, pow(0.0, d), "$d");
-    }
-    if (d > 0) {
-      // if `x` is 0.0 and `y` is strictly positive, the result is 0.0.
-      Expect.identical(0.0, pow(0.0, d), "$d");
-    }
-  }
-
-  for (var d in samples) {
-    if (!d.isInfinite && !d.isNaN) {
-      var dint = d.toInt();
-      if (d == dint && dint.isOdd) {
-        // if `x` is -Infinity or -0.0 and `y` is an odd integer, then the
-        // result is`-pow(-x ,y)`.
-        Expect.identical(-pow(Infinity, d), pow(-Infinity, d));
-        Expect.identical(-pow(0.0, d), pow(-0.0, d));
-        continue;
-      }
-    }
-    // if `x` is -Infinity or -0.0 and `y` is not an odd integer, then the
-    // result is the same as `pow(-x , y)`.
-    if (d.isNaN) {
-      Expect.isTrue(pow(Infinity, d).isNaN);
-      Expect.isTrue(pow(-Infinity, d).isNaN);
-      Expect.isTrue(pow(0.0, d).isNaN);
-      Expect.isTrue(pow(-0.0, d).isNaN);
-      continue;
-    }
-    Expect.identical(pow(Infinity, d), pow(-Infinity, d));
-    Expect.identical(pow(0.0, d), pow(-0.0, d));
-  }
-
-  for (var d in samples) {
-    if (d.abs() < 1) {
-      // if `y` is Infinity and the absolute value of `x` is less than 1, the
-      // result is 0.0.
-      Expect.identical(0.0, pow(d, Infinity));
-    } else if (d.abs() > 1) {
-      // if `y` is Infinity and the absolute value of `x` is greater than 1,
-      // the result is Infinity.
-      Expect.identical(Infinity, pow(d, Infinity));
-    } else if (d == -1) {
-      // if `y` is Infinity and `x` is -1, the result is 1.0.
-      Expect.identical(1.0, pow(d, Infinity));
-    }
-    // if `y` is -Infinity, the result is `1/pow(x, Infinity)`.
-    if (d.isNaN) {
-      Expect.isTrue((1 / pow(d, Infinity)).isNaN);
-      Expect.isTrue(pow(d, -Infinity).isNaN);
-    } else {
-      Expect.identical(1 / pow(d, Infinity), pow(d, -Infinity));
-    }
-  }
-
-  // Some non-exceptional values.
-  checkVeryClose(16.0, pow(4.0, 2.0));
-  checkVeryClose(SQRT2, pow(2.0, 0.5));
-  checkVeryClose(SQRT1_2, pow(0.5, 0.5));
-  // Denormal result.
-  Expect.identical(5e-324, pow(2.0, -1074.0));
-  // Overflow.
-  Expect.identical(Infinity, pow(10.0, 309.0));
-  // Underflow.
-  Expect.identical(0.0, pow(10.0, -325.0));
-
-  // Conversion to double.
-
-  // The second argument is an odd integer as int, but not when converted
-  // to double.
-  Expect.identical(Infinity, pow(-0.0, -9223372036854775809));
-}
-
-main() {
-  for (int i = 0; i < 10; i++) test();
-}
diff --git a/tests/lib/math/low_test.dart b/tests/lib/math/low_test.dart
deleted file mode 100644
index 80022c7..0000000
--- a/tests/lib/math/low_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// 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.
-
-// Test that the default PRNG does uniformly distribute values when not using
-// a power of 2.
-
-// Library tag to allow Dartium to run the test.
-library low_test;
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-void main() {
-  var n = (2 * (1 << 32)) ~/ 3;
-  var n2 = n ~/ 2;
-
-  var iterations = 200000;
-
-  var seed = new Random().nextInt(1 << 16);
-  print("low_test seed: $seed");
-  var prng = new Random(seed);
-
-  var low = 0;
-  for (var i = 0; i < iterations; i++) {
-    if (prng.nextInt(n) < n2) {
-      low++;
-    }
-  }
-
-  var diff = (low - (iterations ~/ 2)).abs();
-  print("$low, $diff");
-  Expect.isTrue(diff < (iterations ~/ 20));
-}
diff --git a/tests/lib/math/math2_test.dart b/tests/lib/math/math2_test.dart
deleted file mode 100644
index e24e3b2..0000000
--- a/tests/lib/math/math2_test.dart
+++ /dev/null
@@ -1,265 +0,0 @@
-// 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.
-
-// We temporarily test both the new math library and the old Math
-// class. This can easily be simplified once we get rid of the Math
-// class entirely.
-library math_test;
-
-import "package:expect/expect.dart";
-import 'dart:math' as math;
-
-class MathLibraryTest {
-  static void testConstants() {
-    // Source for mathematical constants is Wolfram Alpha.
-    Expect.equals(
-        2.7182818284590452353602874713526624977572470936999595749669, math.E);
-    Expect.equals(2.3025850929940456840179914546843642076011014886287729760333,
-        math.LN10);
-    Expect.equals(
-        0.6931471805599453094172321214581765680755001343602552541206, math.LN2);
-    Expect.equals(1.4426950408889634073599246810018921374266459541529859341354,
-        math.LOG2E);
-    Expect.equals(0.4342944819032518276511289189166050822943970058036665661144,
-        math.LOG10E);
-    Expect.equals(
-        3.1415926535897932384626433832795028841971693993751058209749, math.PI);
-    Expect.equals(0.7071067811865475244008443621048490392848359376884740365883,
-        math.SQRT1_2);
-    Expect.equals(1.4142135623730950488016887242096980785696718753769480731766,
-        math.SQRT2);
-  }
-
-  static checkClose(double a, double b, EPSILON) {
-    Expect.equals(true, a - EPSILON <= b);
-    Expect.equals(true, b <= a + EPSILON);
-  }
-
-  static void testSin() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, math.sin(0.0), EPSILON);
-    checkClose(0.0, math.sin(math.PI), EPSILON);
-    checkClose(0.0, math.sin(2.0 * math.PI), EPSILON);
-    checkClose(1.0, math.sin(math.PI / 2.0), EPSILON);
-    checkClose(-1.0, math.sin(math.PI * (3.0 / 2.0)), EPSILON);
-  }
-
-  static void testCos() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(1.0, math.cos(0.0), EPSILON);
-    checkClose(-1.0, math.cos(math.PI), EPSILON);
-    checkClose(1.0, math.cos(2.0 * math.PI), EPSILON);
-    checkClose(0.0, math.cos(math.PI / 2.0), EPSILON);
-    checkClose(0.0, math.cos(math.PI * (3.0 / 2.0)), EPSILON);
-  }
-
-  static void testTan() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, math.tan(0.0), EPSILON);
-    checkClose(0.0, math.tan(math.PI), EPSILON);
-    checkClose(0.0, math.tan(2.0 * math.PI), EPSILON);
-    checkClose(1.0, math.tan(math.PI / 4.0), EPSILON);
-  }
-
-  static void testAsin() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, math.asin(0.0), EPSILON);
-    checkClose(math.PI / 2.0, math.asin(1.0), EPSILON);
-    checkClose(-math.PI / 2.0, math.asin(-1.0), EPSILON);
-  }
-
-  static void testAcos() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, math.acos(1.0), EPSILON);
-    checkClose(math.PI, math.acos(-1.0), EPSILON);
-    checkClose(math.PI / 2.0, math.acos(0.0), EPSILON);
-  }
-
-  static void testAtan() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, math.atan(0.0), EPSILON);
-    checkClose(math.PI / 4.0, math.atan(1.0), EPSILON);
-    checkClose(-math.PI / 4.0, math.atan(-1.0), EPSILON);
-  }
-
-  static void testAtan2() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, math.atan2(0.0, 5.0), EPSILON);
-    checkClose(math.PI / 4.0, math.atan2(2.0, 2.0), EPSILON);
-    checkClose(3 * math.PI / 4.0, math.atan2(0.5, -0.5), EPSILON);
-    checkClose(-3 * math.PI / 4.0, math.atan2(-2.5, -2.5), EPSILON);
-  }
-
-  static checkVeryClose(double a, double b) {
-    // We find a ulp (unit in the last place) by shifting the original number
-    // to the right. This only works if we are not too close to infinity or if
-    // we work with denormals.
-    // We special case or 0.0, but not for infinity.
-    if (a == 0.0) {
-      final minimalDouble = 4.9406564584124654e-324;
-      Expect.equals(true, b.abs() <= minimalDouble);
-      return;
-    }
-    if (b == 0.0) {
-      // No need to look if they are close. Otherwise the check for 'a' above
-      // whould have triggered.
-      Expect.equals(a, b);
-    }
-    final double shiftRightBy52 = 2.220446049250313080847263336181640625e-16;
-    final double shiftedA = (a * shiftRightBy52).abs();
-    // Compared to 'a', 'shiftedA' is now ~1-2 ulp.
-
-    final double limitLow = a - shiftedA;
-    final double limitHigh = a + shiftedA;
-    Expect.equals(false, a == limitLow);
-    Expect.equals(false, a == limitHigh);
-    Expect.equals(true, limitLow <= b);
-    Expect.equals(true, b <= limitHigh);
-  }
-
-  static void testSqrt() {
-    checkVeryClose(2.0, math.sqrt(4.0));
-    checkVeryClose(math.SQRT2, math.sqrt(2.0));
-    checkVeryClose(math.SQRT1_2, math.sqrt(0.5));
-    checkVeryClose(1e50, math.sqrt(1e100));
-    checkVeryClose(1.1111111061110855443054405046358901279277111935183977e56,
-        math.sqrt(12345678901234e99));
-  }
-
-  static void testExp() {
-    checkVeryClose(math.E, math.exp(1.0));
-    final EPSILON = 1e-15;
-    checkClose(10.0, math.exp(math.LN10), EPSILON);
-    checkClose(2.0, math.exp(math.LN2), EPSILON);
-  }
-
-  static void testLog() {
-    // Even though E is imprecise, it is good enough to get really close to 1.
-    // We still provide an epsilon.
-    checkClose(1.0, math.log(math.E), 1e-16);
-    checkVeryClose(math.LN10, math.log(10.0));
-    checkVeryClose(math.LN2, math.log(2.0));
-  }
-
-  static void testPow() {
-    checkVeryClose(16.0, math.pow(4.0, 2.0));
-    checkVeryClose(math.SQRT2, math.pow(2.0, 0.5));
-    checkVeryClose(math.SQRT1_2, math.pow(0.5, 0.5));
-  }
-
-  static bool parseIntThrowsFormatException(str) {
-    try {
-      int.parse(str);
-      return false;
-    } on FormatException catch (e) {
-      return true;
-    }
-  }
-
-  static void testParseInt() {
-    Expect.equals(499, int.parse("499"));
-    Expect.equals(499, int.parse("+499"));
-    Expect.equals(-499, int.parse("-499"));
-    Expect.equals(499, int.parse("   499   "));
-    Expect.equals(499, int.parse("   +499   "));
-    Expect.equals(-499, int.parse("   -499   "));
-    Expect.equals(0, int.parse("0"));
-    Expect.equals(0, int.parse("+0"));
-    Expect.equals(0, int.parse("-0"));
-    Expect.equals(0, int.parse("   0   "));
-    Expect.equals(0, int.parse("   +0   "));
-    Expect.equals(0, int.parse("   -0   "));
-    Expect.equals(0x1234567890, int.parse("0x1234567890"));
-    Expect.equals(-0x1234567890, int.parse("-0x1234567890"));
-    Expect.equals(0x1234567890, int.parse("   0x1234567890   "));
-    Expect.equals(-0x1234567890, int.parse("   -0x1234567890   "));
-    Expect.equals(256, int.parse("0x100"));
-    Expect.equals(-256, int.parse("-0x100"));
-    Expect.equals(256, int.parse("   0x100   "));
-    Expect.equals(-256, int.parse("   -0x100   "));
-    Expect.equals(0xabcdef, int.parse("0xabcdef"));
-    Expect.equals(0xABCDEF, int.parse("0xABCDEF"));
-    Expect.equals(0xabcdef, int.parse("0xabCDEf"));
-    Expect.equals(-0xabcdef, int.parse("-0xabcdef"));
-    Expect.equals(-0xABCDEF, int.parse("-0xABCDEF"));
-    Expect.equals(0xabcdef, int.parse("   0xabcdef   "));
-    Expect.equals(0xABCDEF, int.parse("   0xABCDEF   "));
-    Expect.equals(-0xabcdef, int.parse("   -0xabcdef   "));
-    Expect.equals(-0xABCDEF, int.parse("   -0xABCDEF   "));
-    Expect.equals(0xabcdef, int.parse("0x00000abcdef"));
-    Expect.equals(0xABCDEF, int.parse("0x00000ABCDEF"));
-    Expect.equals(-0xabcdef, int.parse("-0x00000abcdef"));
-    Expect.equals(-0xABCDEF, int.parse("-0x00000ABCDEF"));
-    Expect.equals(0xabcdef, int.parse("   0x00000abcdef   "));
-    Expect.equals(0xABCDEF, int.parse("   0x00000ABCDEF   "));
-    Expect.equals(-0xabcdef, int.parse("   -0x00000abcdef   "));
-    Expect.equals(-0xABCDEF, int.parse("   -0x00000ABCDEF   "));
-    Expect.equals(10, int.parse("010"));
-    Expect.equals(-10, int.parse("-010"));
-    Expect.equals(10, int.parse("   010   "));
-    Expect.equals(-10, int.parse("   -010   "));
-    Expect.equals(9, int.parse("09"));
-    Expect.equals(9, int.parse(" 09 "));
-    Expect.equals(-9, int.parse("-09"));
-    Expect.equals(0x1234567890, int.parse("+0x1234567890"));
-    Expect.equals(0x1234567890, int.parse("   +0x1234567890   "));
-    Expect.equals(0x100, int.parse("+0x100"));
-    Expect.equals(0x100, int.parse("   +0x100   "));
-
-    Expect.equals(true, parseIntThrowsFormatException("1b"));
-    Expect.equals(true, parseIntThrowsFormatException(" 1b "));
-    Expect.equals(true, parseIntThrowsFormatException(" 1 b "));
-    Expect.equals(true, parseIntThrowsFormatException("1e2"));
-    Expect.equals(true, parseIntThrowsFormatException(" 1e2 "));
-    Expect.equals(true, parseIntThrowsFormatException("00x12"));
-    Expect.equals(true, parseIntThrowsFormatException(" 00x12 "));
-    Expect.equals(true, parseIntThrowsFormatException("-1b"));
-    Expect.equals(true, parseIntThrowsFormatException(" -1b "));
-    Expect.equals(true, parseIntThrowsFormatException(" -1 b "));
-    Expect.equals(true, parseIntThrowsFormatException("-1e2"));
-    Expect.equals(true, parseIntThrowsFormatException(" -1e2 "));
-    Expect.equals(true, parseIntThrowsFormatException("-00x12"));
-    Expect.equals(true, parseIntThrowsFormatException(" -00x12 "));
-    Expect.equals(true, parseIntThrowsFormatException("  -00x12 "));
-    Expect.equals(true, parseIntThrowsFormatException("0x0x12"));
-    Expect.equals(true, parseIntThrowsFormatException("0.1"));
-    Expect.equals(true, parseIntThrowsFormatException("0x3.1"));
-    Expect.equals(true, parseIntThrowsFormatException("5."));
-    Expect.equals(true, parseIntThrowsFormatException("+-5"));
-    Expect.equals(true, parseIntThrowsFormatException("-+5"));
-    Expect.equals(true, parseIntThrowsFormatException("--5"));
-    Expect.equals(true, parseIntThrowsFormatException("++5"));
-    Expect.equals(true, parseIntThrowsFormatException("+ 5"));
-    Expect.equals(true, parseIntThrowsFormatException("- 5"));
-    Expect.equals(true, parseIntThrowsFormatException(""));
-    Expect.equals(true, parseIntThrowsFormatException("  "));
-  }
-
-  static testMain() {
-    testConstants();
-    testSin();
-    testCos();
-    testTan();
-    testAsin();
-    testAcos();
-    testAtan();
-    testAtan2();
-    testSqrt();
-    testLog();
-    testExp();
-    testPow();
-    testParseInt();
-  }
-}
-
-main() {
-  MathLibraryTest.testMain();
-}
diff --git a/tests/lib/math/math_parse_double_test.dart b/tests/lib/math/math_parse_double_test.dart
deleted file mode 100644
index 481e0cc..0000000
--- a/tests/lib/math/math_parse_double_test.dart
+++ /dev/null
@@ -1,170 +0,0 @@
-// 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.
-
-// We temporarily test both the new math library and the old Math
-// class. This can easily be simplified once we get rid of the Math
-// class entirely.
-library math_parse_double_test;
-
-import "package:expect/expect.dart";
-
-void parseDoubleThrowsFormatException(str) {
-  Expect.throws(() => double.parse(str), (e) => e is FormatException);
-}
-
-void runTest(double expected, String input) {
-  Expect.equals(expected, double.parse(input));
-  Expect.equals(expected, double.parse(" $input "));
-  Expect.equals(expected, double.parse(" $input"));
-  Expect.equals(expected, double.parse("$input "));
-  Expect.equals(expected, double.parse("+$input"));
-  Expect.equals(expected, double.parse(" +$input "));
-  Expect.equals(expected, double.parse("+$input "));
-  Expect.equals(expected, double.parse("\xA0 $input\xA0 "));
-  Expect.equals(expected, double.parse(" \xA0$input"));
-  Expect.equals(expected, double.parse("$input \xA0"));
-  Expect.equals(expected, double.parse("\xA0 +$input\xA0 "));
-  Expect.equals(expected, double.parse("+$input\xA0 "));
-  Expect.equals(expected, double.parse("\u205F $input\u205F "));
-  Expect.equals(expected, double.parse("$input \u2006"));
-  Expect.equals(expected, double.parse("\u1680 +$input\u1680 "));
-  Expect.equals(-expected, double.parse("-$input"));
-  Expect.equals(-expected, double.parse(" -$input "));
-  Expect.equals(-expected, double.parse("-$input "));
-  Expect.equals(-expected, double.parse("\xA0 -$input\xA0 "));
-  Expect.equals(-expected, double.parse("-$input\xA0 "));
-  Expect.equals(-expected, double.parse("\u1680 -$input\u1680 "));
-}
-
-final TESTS = [
-  [499.0, "499"],
-  [499.0, "499."],
-  [499.0, "499.0"],
-  [0.0, "0"],
-  [0.0, ".0"],
-  [0.0, "0."],
-  [0.1, "0.1"],
-  [0.1, ".1"],
-  [10.0, "010"],
-  [1.5, "1.5"],
-  [1.5, "001.5"],
-  [1.5, "1.500"],
-  [1234567.89, "1234567.89"],
-  [1234567e89, "1234567e89"],
-  [1234567.89e2, "1234567.89e2"],
-  [1234567.89e2, "1234567.89e+2"],
-  [1234567.89e-2, "1234567.89e-2"],
-  [5.0, "5"],
-  [123456700.0, "1234567.e2"],
-  [123456700.0, "1234567.e+2"],
-  [double.INFINITY, "Infinity"],
-  [5e-324, "5e-324"], // min-pos.
-  // Same, without exponential.
-  [
-    0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625,
-    "0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004940656458412465441765687928682213723650598026143247644255856825006755072702087518652998363616359923797965646954457177309266567103559397963987747960107818781263007131903114045278458171678489821036887186360569987307230500063874091535649843873124733972731696151400317153853980741262385655911710266585566867681870395603106249319452715914924553293054565444011274801297099995419319894090804165633245247571478690147267801593552386115501348035264934720193790268107107491703332226844753335720832431936092382893458368060106011506169809753078342277318329247904982524730776375927247874656084778203734469699533647017972677717585125660551199131504891101451037862738167250955837389733598993664809941164205702637090279242767544565229087538682506419718265533447265625"
-  ],
-  [0.0, "2e-324"], // underflow 0.0
-  [0.9999999999999999, "0.9999999999999999"], // max below 1
-  [1.0, "1.00000000000000005"], // 1.0
-  [1.0000000000000002, "1.0000000000000002"], // min above 1
-  [2147483647.0, "2147483647"], // max int32
-  [2147483647.0000002, "2147483647.0000002"], // min not int32
-  [2147483648.0, "2147483648"], // min int not int32
-  [4295967295.0, "4295967295"], // max uint32
-  [4295967295.000001, "4295967295.000001"], // min not uint-32
-  [4295967296.0, "4295967296"], // min int not-uint32
-  [1.7976931348623157e+308, "1.7976931348623157e+308"], // Max finite
-  [1.7976931348623157e+308, "1.7976931348623158e+308"], // Max finite
-  [double.INFINITY, "1.7976931348623159e+308"], // Infinity
-  [.049999999999999994, ".049999999999999994"], // not 0.5
-  [.05, ".04999999999999999935"],
-  [4503599627370498.0, "4503599627370497.5"],
-  [1.2345678901234568e+39, "1234567890123456898981341324213421342134"],
-  [9.87291183742987e+24, "9872911837429871193379121"],
-  [1e21, "1e+21"],
-];
-
-void main() {
-  for (var test in TESTS) {
-    runTest(test[0], test[1]);
-  }
-
-  Expect.equals(true, double.parse("-0").isNegative);
-  Expect.equals(true, double.parse("   -0   ").isNegative);
-  Expect.equals(true, double.parse("\xA0   -0   \xA0").isNegative);
-  Expect.isTrue(double.parse("NaN").isNaN);
-  Expect.isTrue(double.parse("-NaN").isNaN);
-  Expect.isTrue(double.parse("+NaN").isNaN);
-  Expect.isTrue(double.parse("NaN ").isNaN);
-  Expect.isTrue(double.parse("-NaN ").isNaN);
-  Expect.isTrue(double.parse("+NaN ").isNaN);
-  Expect.isTrue(double.parse(" NaN ").isNaN);
-  Expect.isTrue(double.parse(" -NaN ").isNaN);
-  Expect.isTrue(double.parse(" +NaN ").isNaN);
-  Expect.isTrue(double.parse(" NaN").isNaN);
-  Expect.isTrue(double.parse(" -NaN").isNaN);
-  Expect.isTrue(double.parse(" +NaN").isNaN);
-  Expect.isTrue(double.parse("NaN\xA0").isNaN);
-  Expect.isTrue(double.parse("-NaN\xA0").isNaN);
-  Expect.isTrue(double.parse("+NaN\xA0").isNaN);
-  Expect.isTrue(double.parse(" \xA0NaN\xA0").isNaN);
-  Expect.isTrue(double.parse(" \xA0-NaN\xA0").isNaN);
-  Expect.isTrue(double.parse(" \xA0+NaN\xA0").isNaN);
-  Expect.isTrue(double.parse(" \xA0NaN").isNaN);
-  Expect.isTrue(double.parse(" \xA0-NaN").isNaN);
-  Expect.isTrue(double.parse(" \xA0+NaN").isNaN);
-
-  parseDoubleThrowsFormatException("1b");
-  parseDoubleThrowsFormatException(" 1b ");
-  parseDoubleThrowsFormatException(" 1 b ");
-  parseDoubleThrowsFormatException(" e3 ");
-  parseDoubleThrowsFormatException(" .e3 ");
-  parseDoubleThrowsFormatException("00x12");
-  parseDoubleThrowsFormatException(" 00x12 ");
-  parseDoubleThrowsFormatException("-1b");
-  parseDoubleThrowsFormatException(" -1b ");
-  parseDoubleThrowsFormatException(" -1 b ");
-  parseDoubleThrowsFormatException("-00x12");
-  parseDoubleThrowsFormatException(" -00x12 ");
-  parseDoubleThrowsFormatException("  -00x12 ");
-  parseDoubleThrowsFormatException("0x0x12");
-  parseDoubleThrowsFormatException("+ 1.5");
-  parseDoubleThrowsFormatException("- 1.5");
-  parseDoubleThrowsFormatException("");
-  parseDoubleThrowsFormatException("   ");
-  parseDoubleThrowsFormatException("+0x1234567890");
-  parseDoubleThrowsFormatException("   +0x1234567890   ");
-  parseDoubleThrowsFormatException("   +0x100   ");
-  parseDoubleThrowsFormatException("+0x100");
-  parseDoubleThrowsFormatException("0x1234567890");
-  parseDoubleThrowsFormatException("-0x1234567890");
-  parseDoubleThrowsFormatException("   0x1234567890   ");
-  parseDoubleThrowsFormatException("   -0x1234567890   ");
-  parseDoubleThrowsFormatException("0x100");
-  parseDoubleThrowsFormatException("-0x100");
-  parseDoubleThrowsFormatException("   0x100   ");
-  parseDoubleThrowsFormatException("   -0x100   ");
-  parseDoubleThrowsFormatException("0xabcdef");
-  parseDoubleThrowsFormatException("0xABCDEF");
-  parseDoubleThrowsFormatException("0xabCDEf");
-  parseDoubleThrowsFormatException("-0xabcdef");
-  parseDoubleThrowsFormatException("-0xABCDEF");
-  parseDoubleThrowsFormatException("   0xabcdef   ");
-  parseDoubleThrowsFormatException("   0xABCDEF   ");
-  parseDoubleThrowsFormatException("   -0xabcdef   ");
-  parseDoubleThrowsFormatException("   -0xABCDEF   ");
-  parseDoubleThrowsFormatException("0x00000abcdef");
-  parseDoubleThrowsFormatException("0x00000ABCDEF");
-  parseDoubleThrowsFormatException("-0x00000abcdef");
-  parseDoubleThrowsFormatException("-0x00000ABCDEF");
-  parseDoubleThrowsFormatException("   0x00000abcdef   ");
-  parseDoubleThrowsFormatException("   0x00000ABCDEF   ");
-  parseDoubleThrowsFormatException("   -0x00000abcdef   ");
-  parseDoubleThrowsFormatException("   -0x00000ABCDEF   ");
-  parseDoubleThrowsFormatException("   -INFINITY   ");
-  parseDoubleThrowsFormatException("   NAN   ");
-  parseDoubleThrowsFormatException("   inf   ");
-  parseDoubleThrowsFormatException("   nan   ");
-}
diff --git a/tests/lib/math/math_test.dart b/tests/lib/math/math_test.dart
deleted file mode 100644
index 3e1e879..0000000
--- a/tests/lib/math/math_test.dart
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright (c) 2011, 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 math_test;
-
-import "package:expect/expect.dart";
-import 'dart:math';
-
-class MathTest {
-  static void testConstants() {
-    // Source for mathematical constants is Wolfram Alpha.
-    Expect.equals(
-        2.7182818284590452353602874713526624977572470936999595749669, E);
-    Expect.equals(
-        2.3025850929940456840179914546843642076011014886287729760333, LN10);
-    Expect.equals(
-        0.6931471805599453094172321214581765680755001343602552541206, LN2);
-    Expect.equals(
-        1.4426950408889634073599246810018921374266459541529859341354, LOG2E);
-    Expect.equals(
-        0.4342944819032518276511289189166050822943970058036665661144, LOG10E);
-    Expect.equals(
-        3.1415926535897932384626433832795028841971693993751058209749, PI);
-    Expect.equals(
-        0.7071067811865475244008443621048490392848359376884740365883, SQRT1_2);
-    Expect.equals(
-        1.4142135623730950488016887242096980785696718753769480731766, SQRT2);
-  }
-
-  static checkClose(double a, double b, EPSILON) {
-    Expect.equals(true, a - EPSILON <= b);
-    Expect.equals(true, b <= a + EPSILON);
-  }
-
-  static void testSin() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, sin(0.0), EPSILON);
-    checkClose(0.0, sin(PI), EPSILON);
-    checkClose(0.0, sin(2.0 * PI), EPSILON);
-    checkClose(1.0, sin(PI / 2.0), EPSILON);
-    checkClose(-1.0, sin(PI * (3.0 / 2.0)), EPSILON);
-  }
-
-  static void testCos() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(1.0, cos(0.0), EPSILON);
-    checkClose(-1.0, cos(PI), EPSILON);
-    checkClose(1.0, cos(2.0 * PI), EPSILON);
-    checkClose(0.0, cos(PI / 2.0), EPSILON);
-    checkClose(0.0, cos(PI * (3.0 / 2.0)), EPSILON);
-  }
-
-  static void testTan() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, tan(0.0), EPSILON);
-    checkClose(0.0, tan(PI), EPSILON);
-    checkClose(0.0, tan(2.0 * PI), EPSILON);
-    checkClose(1.0, tan(PI / 4.0), EPSILON);
-  }
-
-  static void testAsin() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, asin(0.0), EPSILON);
-    checkClose(PI / 2.0, asin(1.0), EPSILON);
-    checkClose(-PI / 2.0, asin(-1.0), EPSILON);
-  }
-
-  static void testAcos() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, acos(1.0), EPSILON);
-    checkClose(PI, acos(-1.0), EPSILON);
-    checkClose(PI / 2.0, acos(0.0), EPSILON);
-  }
-
-  static void testAtan() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, atan(0.0), EPSILON);
-    checkClose(PI / 4.0, atan(1.0), EPSILON);
-    checkClose(-PI / 4.0, atan(-1.0), EPSILON);
-  }
-
-  static void testAtan2() {
-    // Given the imprecision of PI we can't expect better results than this.
-    final double EPSILON = 1e-15;
-    checkClose(0.0, atan2(0.0, 5.0), EPSILON);
-    checkClose(PI / 4.0, atan2(2.0, 2.0), EPSILON);
-    checkClose(3 * PI / 4.0, atan2(0.5, -0.5), EPSILON);
-    checkClose(-3 * PI / 4.0, atan2(-2.5, -2.5), EPSILON);
-  }
-
-  static checkVeryClose(double a, double b) {
-    // We find a ulp (unit in the last place) by shifting the original number
-    // to the right. This only works if we are not too close to infinity or if
-    // we work with denormals.
-    // We special case or 0.0, but not for infinity.
-    if (a == 0.0) {
-      final minimalDouble = 4.9406564584124654e-324;
-      Expect.equals(true, b.abs() <= minimalDouble);
-      return;
-    }
-    if (b == 0.0) {
-      // No need to look if they are close. Otherwise the check for 'a' above
-      // whould have triggered.
-      Expect.equals(a, b);
-    }
-    final double shiftRightBy52 = 2.220446049250313080847263336181640625e-16;
-    final double shiftedA = (a * shiftRightBy52).abs();
-    // Compared to 'a', 'shiftedA' is now ~1-2 ulp.
-
-    final double limitLow = a - shiftedA;
-    final double limitHigh = a + shiftedA;
-    Expect.equals(false, a == limitLow);
-    Expect.equals(false, a == limitHigh);
-    Expect.equals(true, limitLow <= b);
-    Expect.equals(true, b <= limitHigh);
-  }
-
-  static void testSqrt() {
-    checkVeryClose(2.0, sqrt(4.0));
-    checkVeryClose(SQRT2, sqrt(2.0));
-    checkVeryClose(SQRT1_2, sqrt(0.5));
-    checkVeryClose(1e50, sqrt(1e100));
-    checkVeryClose(1.1111111061110855443054405046358901279277111935183977e56,
-        sqrt(12345678901234e99));
-  }
-
-  static void testExp() {
-    checkVeryClose(E, exp(1.0));
-    final EPSILON = 1e-15;
-    checkClose(10.0, exp(LN10), EPSILON);
-    checkClose(2.0, exp(LN2), EPSILON);
-  }
-
-  static void testLog() {
-    // Even though E is imprecise, it is good enough to get really close to 1.
-    // We still provide an epsilon.
-    checkClose(1.0, log(E), 1e-16);
-    checkVeryClose(LN10, log(10.0));
-    checkVeryClose(LN2, log(2.0));
-  }
-
-  static bool parseIntThrowsFormatException(str) {
-    try {
-      int.parse(str);
-      return false;
-    } on FormatException catch (e) {
-      return true;
-    }
-  }
-
-  static void testParseInt() {
-    Expect.equals(499, int.parse("499"));
-    Expect.equals(499, int.parse("+499"));
-    Expect.equals(-499, int.parse("-499"));
-    Expect.equals(499, int.parse("   499   "));
-    Expect.equals(499, int.parse("   +499   "));
-    Expect.equals(-499, int.parse("   -499   "));
-    Expect.equals(0, int.parse("0"));
-    Expect.equals(0, int.parse("+0"));
-    Expect.equals(0, int.parse("-0"));
-    Expect.equals(0, int.parse("   0   "));
-    Expect.equals(0, int.parse("   +0   "));
-    Expect.equals(0, int.parse("   -0   "));
-    Expect.equals(0x1234567890, int.parse("0x1234567890"));
-    Expect.equals(-0x1234567890, int.parse("-0x1234567890"));
-    Expect.equals(0x1234567890, int.parse("   0x1234567890   "));
-    Expect.equals(-0x1234567890, int.parse("   -0x1234567890   "));
-    Expect.equals(256, int.parse("0x100"));
-    Expect.equals(-256, int.parse("-0x100"));
-    Expect.equals(256, int.parse("   0x100   "));
-    Expect.equals(-256, int.parse("   -0x100   "));
-    Expect.equals(0xabcdef, int.parse("0xabcdef"));
-    Expect.equals(0xABCDEF, int.parse("0xABCDEF"));
-    Expect.equals(0xabcdef, int.parse("0xabCDEf"));
-    Expect.equals(-0xabcdef, int.parse("-0xabcdef"));
-    Expect.equals(-0xABCDEF, int.parse("-0xABCDEF"));
-    Expect.equals(0xabcdef, int.parse("   0xabcdef   "));
-    Expect.equals(0xABCDEF, int.parse("   0xABCDEF   "));
-    Expect.equals(-0xabcdef, int.parse("   -0xabcdef   "));
-    Expect.equals(-0xABCDEF, int.parse("   -0xABCDEF   "));
-    Expect.equals(0xabcdef, int.parse("0x00000abcdef"));
-    Expect.equals(0xABCDEF, int.parse("0x00000ABCDEF"));
-    Expect.equals(-0xabcdef, int.parse("-0x00000abcdef"));
-    Expect.equals(-0xABCDEF, int.parse("-0x00000ABCDEF"));
-    Expect.equals(0xabcdef, int.parse("   0x00000abcdef   "));
-    Expect.equals(0xABCDEF, int.parse("   0x00000ABCDEF   "));
-    Expect.equals(-0xabcdef, int.parse("   -0x00000abcdef   "));
-    Expect.equals(-0xABCDEF, int.parse("   -0x00000ABCDEF   "));
-    Expect.equals(10, int.parse("010"));
-    Expect.equals(-10, int.parse("-010"));
-    Expect.equals(10, int.parse("   010   "));
-    Expect.equals(-10, int.parse("   -010   "));
-    Expect.equals(9, int.parse("09"));
-    Expect.equals(9, int.parse(" 09 "));
-    Expect.equals(-9, int.parse("-09"));
-    Expect.equals(0x1234567890, int.parse("+0x1234567890"));
-    Expect.equals(0x1234567890, int.parse("   +0x1234567890   "));
-    Expect.equals(0x100, int.parse("+0x100"));
-    Expect.equals(0x100, int.parse("   +0x100   "));
-    Expect.equals(true, parseIntThrowsFormatException("1b"));
-    Expect.equals(true, parseIntThrowsFormatException(" 1b "));
-    Expect.equals(true, parseIntThrowsFormatException(" 1 b "));
-    Expect.equals(true, parseIntThrowsFormatException("1e2"));
-    Expect.equals(true, parseIntThrowsFormatException(" 1e2 "));
-    Expect.equals(true, parseIntThrowsFormatException("00x12"));
-    Expect.equals(true, parseIntThrowsFormatException(" 00x12 "));
-    Expect.equals(true, parseIntThrowsFormatException("-1b"));
-    Expect.equals(true, parseIntThrowsFormatException(" -1b "));
-    Expect.equals(true, parseIntThrowsFormatException(" -1 b "));
-    Expect.equals(true, parseIntThrowsFormatException("-1e2"));
-    Expect.equals(true, parseIntThrowsFormatException(" -1e2 "));
-    Expect.equals(true, parseIntThrowsFormatException("-00x12"));
-    Expect.equals(true, parseIntThrowsFormatException(" -00x12 "));
-    Expect.equals(true, parseIntThrowsFormatException("  -00x12 "));
-    Expect.equals(true, parseIntThrowsFormatException("0x0x12"));
-    Expect.equals(true, parseIntThrowsFormatException("0.1"));
-    Expect.equals(true, parseIntThrowsFormatException("0x3.1"));
-    Expect.equals(true, parseIntThrowsFormatException("5."));
-    Expect.equals(true, parseIntThrowsFormatException("+-5"));
-    Expect.equals(true, parseIntThrowsFormatException("-+5"));
-    Expect.equals(true, parseIntThrowsFormatException("--5"));
-    Expect.equals(true, parseIntThrowsFormatException("++5"));
-    Expect.equals(true, parseIntThrowsFormatException("+ 5"));
-    Expect.equals(true, parseIntThrowsFormatException("- 5"));
-    Expect.equals(true, parseIntThrowsFormatException(""));
-    Expect.equals(true, parseIntThrowsFormatException("  "));
-  }
-
-  static testMain() {
-    testConstants();
-    testSin();
-    testCos();
-    testTan();
-    testAsin();
-    testAcos();
-    testAtan();
-    testAtan2();
-    testSqrt();
-    testLog();
-    testExp();
-    testParseInt();
-  }
-}
-
-main() {
-  MathTest.testMain();
-}
diff --git a/tests/lib/mirrors/array_tracing_test.dart b/tests/lib/mirrors/array_tracing_test.dart
deleted file mode 100644
index 4845a66..0000000
--- a/tests/lib/mirrors/array_tracing_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: const ["lib", "dart.core"])
-import 'dart:mirrors';
-
-class A {
-  static var field;
-}
-
-main() {
-  MirrorSystem mirrors = currentMirrorSystem();
-  ClassMirror a = reflectClass(A);
-  var array = [42];
-  A.field = array;
-  var field = a.getField(#field);
-  field.invoke(#clear, []);
-  if (array.length == 1) throw 'Test failed';
-}
diff --git a/tests/lib/mirrors/basic_types_in_dart_core_test.dart b/tests/lib/mirrors/basic_types_in_dart_core_test.dart
deleted file mode 100644
index 6f97ec1..0000000
--- a/tests/lib/mirrors/basic_types_in_dart_core_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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 test.basic_types_in_dart_core;
-
-@MirrorsUsed(targets: "dart.core")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-main() {
-  LibraryMirror dartcore = currentMirrorSystem().findLibrary(#dart.core);
-  ClassMirror cm;
-
-  cm = dartcore.declarations[#int];
-  Expect.equals(reflectClass(int), cm);
-  Expect.equals(#int, cm.simpleName);
-
-  cm = dartcore.declarations[#double];
-  Expect.equals(reflectClass(double), cm);
-  Expect.equals(#double, cm.simpleName);
-
-  cm = dartcore.declarations[#num];
-  Expect.equals(reflectClass(num), cm);
-  Expect.equals(#num, cm.simpleName);
-
-  cm = dartcore.declarations[#bool];
-  Expect.equals(reflectClass(bool), cm);
-  Expect.equals(#bool, cm.simpleName);
-
-  cm = dartcore.declarations[#String];
-  Expect.equals(reflectClass(String), cm);
-  Expect.equals(#String, cm.simpleName);
-
-  cm = dartcore.declarations[#List];
-  Expect.equals(reflectClass(List), cm);
-  Expect.equals(#List, cm.simpleName);
-
-  cm = dartcore.declarations[#Null];
-  Expect.equals(reflectClass(Null), cm);
-  Expect.equals(#Null, cm.simpleName);
-
-  cm = dartcore.declarations[#Object];
-  Expect.equals(reflectClass(Object), cm);
-  Expect.equals(#Object, cm.simpleName);
-
-  cm = dartcore.declarations[#dynamic];
-  Expect.isNull(cm);
-
-  cm = dartcore.declarations[const Symbol('void')];
-  Expect.isNull(cm);
-}
diff --git a/tests/lib/mirrors/closures_test.dart b/tests/lib/mirrors/closures_test.dart
deleted file mode 100644
index 858e14e..0000000
--- a/tests/lib/mirrors/closures_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-testIntercepted() {
-  var instance = [];
-  var closureMirror = reflect(instance.toString);
-  var methodMirror = closureMirror.function;
-  Expect.equals(#toString, methodMirror.simpleName);
-  Expect.equals('[]', closureMirror.apply([]).reflectee);
-}
-
-testNonIntercepted() {
-  var closure = new Map().containsKey;
-  var closureMirror = reflect(closure);
-  var methodMirror = closureMirror.function;
-  Expect.equals(#containsKey, methodMirror.simpleName);
-  Expect.isFalse(closureMirror.apply([7]).reflectee);
-}
-
-main() {
-  testIntercepted();
-  testNonIntercepted();
-}
diff --git a/tests/lib/mirrors/declarations_model.dart b/tests/lib/mirrors/declarations_model.dart
deleted file mode 100644
index f25523f..0000000
--- a/tests/lib/mirrors/declarations_model.dart
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright (c) 2013, 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 test.declarations_model;
-
-var libraryVariable;
-get libraryGetter => null;
-set librarySetter(x) => x;
-libraryMethod() => null;
-
-var _libraryVariable;
-get _libraryGetter => null;
-set _librarySetter(x) => x;
-_libraryMethod() => null;
-
-typedef bool Predicate(dynamic);
-
-abstract class Interface<I> {
-  operator /(x) => null;
-
-  var interfaceInstanceVariable;
-  get interfaceInstanceGetter;
-  set interfaceInstanceSetter(x);
-  interfaceInstanceMethod();
-
-  var _interfaceInstanceVariable;
-  get _interfaceInstanceGetter;
-  set _interfaceInstanceSetter(x);
-  _interfaceInstanceMethod();
-
-  static var interfaceStaticVariable;
-  static get interfaceStaticGetter => null;
-  static set interfaceStaticSetter(x) => x;
-  static interfaceStaticMethod() => null;
-
-  static var _interfaceStaticVariable;
-  static get _interfaceStaticGetter => null;
-  static set _interfaceStaticSetter(x) => x;
-  static _interfaceStaticMethod() => null;
-}
-
-class Mixin<M> {
-  operator *(x) => null;
-
-  var mixinInstanceVariable;
-  get mixinInstanceGetter => null;
-  set mixinInstanceSetter(x) => x;
-  mixinInstanceMethod() => null;
-
-  var _mixinInstanceVariable;
-  get _mixinInstanceGetter => null;
-  set _mixinInstanceSetter(x) => x;
-  _mixinInstanceMethod() => null;
-
-  static var mixinStaticVariable;
-  static get mixinStaticGetter => null;
-  static set mixinStaticSetter(x) => x;
-  static mixinStaticMethod() => null;
-
-  static var _mixinStaticVariable;
-  static get _mixinStaticGetter => null;
-  static set _mixinStaticSetter(x) => x;
-  static _mixinStaticMethod() => null;
-}
-
-class Superclass<S> {
-  operator -(x) => null;
-
-  var inheritedInstanceVariable;
-  get inheritedInstanceGetter => null;
-  set inheritedInstanceSetter(x) => x;
-  inheritedInstanceMethod() => null;
-
-  var _inheritedInstanceVariable;
-  get _inheritedInstanceGetter => null;
-  set _inheritedInstanceSetter(x) => x;
-  _inheritedInstanceMethod() => null;
-
-  static var inheritedStaticVariable;
-  static get inheritedStaticGetter => null;
-  static set inheritedStaticSetter(x) => x;
-  static inheritedStaticMethod() => null;
-
-  static var _inheritedStaticVariable;
-  static get _inheritedStaticGetter => null;
-  static set _inheritedStaticSetter(x) => x;
-  static _inheritedStaticMethod() => null;
-
-  Superclass.inheritedGenerativeConstructor(this.inheritedInstanceVariable);
-  Superclass.inheritedRedirectingConstructor(x)
-      : this.inheritedGenerativeConstructor(x * 2);
-  factory Superclass.inheritedNormalFactory(y) =>
-      new Superclass.inheritedRedirectingConstructor(y * 3);
-  factory Superclass.inheritedRedirectingFactory(z) =
-      Superclass<S>.inheritedNormalFactory;
-
-  Superclass._inheritedGenerativeConstructor(this._inheritedInstanceVariable);
-  Superclass._inheritedRedirectingConstructor(x)
-      : this._inheritedGenerativeConstructor(x * 2);
-  factory Superclass._inheritedNormalFactory(y) =>
-      new Superclass._inheritedRedirectingConstructor(y * 3);
-  factory Superclass._inheritedRedirectingFactory(z) =
-      Superclass<S>._inheritedNormalFactory;
-}
-
-abstract class Class<C> extends Superclass<C>
-    with Mixin<C>
-    implements Interface<C> {
-  operator +(x) => null;
-
-  abstractMethod();
-
-  var instanceVariable;
-  get instanceGetter => null;
-  set instanceSetter(x) => x;
-  instanceMethod() => null;
-
-  var _instanceVariable;
-  get _instanceGetter => null;
-  set _instanceSetter(x) => x;
-  _instanceMethod() => null;
-
-  static var staticVariable;
-  static get staticGetter => null;
-  static set staticSetter(x) => x;
-  static staticMethod() => null;
-
-  static var _staticVariable;
-  static get _staticGetter => null;
-  static set _staticSetter(x) => x;
-  static _staticMethod() => null;
-
-  Class.generativeConstructor(this.instanceVariable)
-      : super.inheritedGenerativeConstructor(0);
-  Class.redirectingConstructor(x) : this.generativeConstructor(x * 2);
-  factory Class.normalFactory(y) => new ConcreteClass(y * 3);
-  factory Class.redirectingFactory(z) = Class<C>.normalFactory;
-
-  Class._generativeConstructor(this._instanceVariable)
-      : super._inheritedGenerativeConstructor(0);
-  Class._redirectingConstructor(x) : this._generativeConstructor(x * 2);
-  factory Class._normalFactory(y) => new ConcreteClass(y * 3);
-  factory Class._redirectingFactory(z) = Class<C>._normalFactory;
-}
-
-// This is just here as a target of Class's factories to appease the analyzer.
-class ConcreteClass<CC> extends Class<CC> {
-  abstractMethod() {}
-
-  operator /(x) => null;
-
-  var interfaceInstanceVariable;
-  get interfaceInstanceGetter => null;
-  set interfaceInstanceSetter(x) => null;
-  interfaceInstanceMethod() => null;
-
-  var _interfaceInstanceVariable;
-  get _interfaceInstanceGetter => null;
-  set _interfaceInstanceSetter(x) => null;
-  _interfaceInstanceMethod() => null;
-
-  ConcreteClass(x) : super.generativeConstructor(x);
-}
-
-class _PrivateClass {}
diff --git a/tests/lib/mirrors/declarations_model_easier.dart b/tests/lib/mirrors/declarations_model_easier.dart
deleted file mode 100644
index 665b691..0000000
--- a/tests/lib/mirrors/declarations_model_easier.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2013, 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 test.declarations_model;
-
-var libraryVariable;
-get libraryGetter => null;
-set librarySetter(x) => x;
-libraryMethod() => null;
-
-typedef bool Predicate(dynamic);
-
-abstract class Interface<I> {
-  operator /(x) => null;
-
-  var interfaceInstanceVariable;
-  get interfaceInstanceGetter;
-  set interfaceInstanceSetter(x);
-  interfaceInstanceMethod();
-
-  static var interfaceStaticVariable;
-  static get interfaceStaticGetter => null;
-  static set interfaceStaticSetter(x) => x;
-  static interfaceStaticMethod() => null;
-}
-
-class Superclass<S> {
-  operator -(x) => null;
-
-  var inheritedInstanceVariable;
-  get inheritedInstanceGetter => null;
-  set inheritedInstanceSetter(x) => x;
-  inheritedInstanceMethod() => null;
-
-  static var inheritedStaticVariable;
-  static get inheritedStaticGetter => null;
-  static set inheritedStaticSetter(x) => x;
-  static inheritedStaticMethod() => null;
-
-  Superclass.inheritedGenerativeConstructor(this.inheritedInstanceVariable);
-  Superclass.inheritedRedirectingConstructor(x)
-      : this.inheritedGenerativeConstructor(x * 2);
-  factory Superclass.inheritedNormalFactory(y) =>
-      new Superclass.inheritedRedirectingConstructor(y * 3);
-  factory Superclass.inheritedRedirectingFactory(z) =
-      Superclass<S>.inheritedNormalFactory;
-}
-
-abstract class Class<C> extends Superclass<C> implements Interface<C> {
-  operator +(x) => null;
-
-  abstractMethod();
-
-  var instanceVariable;
-  get instanceGetter => null;
-  set instanceSetter(x) => x;
-  instanceMethod() => null;
-
-  static var staticVariable;
-  static get staticGetter => null;
-  static set staticSetter(x) => x;
-  static staticMethod() => null;
-
-  Class.generativeConstructor(this.instanceVariable)
-      : super.inheritedGenerativeConstructor(0);
-  Class.redirectingConstructor(x) : this.generativeConstructor(x * 2);
-  factory Class.normalFactory(y) => new ConcreteClass(y * 3);
-  factory Class.redirectingFactory(z) = Class<C>.normalFactory;
-}
-
-// This is just here as a target of Class's factories to appease the analyzer.
-class ConcreteClass<CC> extends Class<CC> {
-  abstractMethod() {}
-
-  operator /(x) => null;
-
-  var interfaceInstanceVariable;
-  get interfaceInstanceGetter => null;
-  set interfaceInstanceSetter(x) => null;
-  interfaceInstanceMethod() => null;
-
-  ConcreteClass(x) : super.generativeConstructor(x);
-}
diff --git a/tests/lib/mirrors/fake_function_with_call_test.dart b/tests/lib/mirrors/fake_function_with_call_test.dart
deleted file mode 100644
index d5aa256..0000000
--- a/tests/lib/mirrors/fake_function_with_call_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-membersOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && !v.isConstructor) result[k] = v;
-    if (v is VariableMirror) result[k] = v;
-  });
-  return result;
-}
-
-class WannabeFunction {
-  int call(int a, int b) => a + b;
-  method(x) => x * x;
-}
-
-main() {
-  Expect.isTrue(new WannabeFunction() is Function);
-
-  ClosureMirror cm = reflect(new WannabeFunction());
-  Expect.equals(7, cm.invoke(#call, [3, 4]).reflectee);
-  Expect.throws(() => cm.invoke(#call, [3]), (e) => e is NoSuchMethodError,
-      "Wrong arity");
-  Expect.equals(49, cm.invoke(#method, [7]).reflectee);
-  Expect.throws(() => cm.invoke(#method, [3, 4]), (e) => e is NoSuchMethodError,
-      "Wrong arity");
-  Expect.equals(7, cm.apply([3, 4]).reflectee);
-  Expect.throws(
-      () => cm.apply([3]), (e) => e is NoSuchMethodError, "Wrong arity");
-
-  MethodMirror mm = cm.function;
-  Expect.equals(#call, mm.simpleName);
-  Expect.equals(reflectClass(WannabeFunction), mm.owner);
-  Expect.isTrue(mm.isRegularMethod);
-  Expect.equals(#int, mm.returnType.simpleName);
-  Expect.equals(#int, mm.parameters[0].type.simpleName);
-  Expect.equals(#int, mm.parameters[1].type.simpleName);
-
-  ClassMirror km = cm.type;
-  Expect.equals(reflectClass(WannabeFunction), km);
-  Expect.equals(#WannabeFunction, km.simpleName);
-  Expect.equals(mm, km.declarations[#call]);
-  Expect.setEquals([#call, #method], membersOf(km).keys);
-}
diff --git a/tests/lib/mirrors/fake_function_without_call_test.dart b/tests/lib/mirrors/fake_function_without_call_test.dart
deleted file mode 100644
index 4503b12..0000000
--- a/tests/lib/mirrors/fake_function_without_call_test.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-class MultiArityFunction implements Function {
-  noSuchMethod(Invocation msg) {
-    if (msg.memberName != #call) return super.noSuchMethod(msg);
-    return msg.positionalArguments.join(",");
-  }
-}
-
-main() {
-  var f = new MultiArityFunction();
-
-  Expect.isTrue(f is Function);
-  Expect.equals('a', f('a'));
-  Expect.equals('a,b', f('a', 'b'));
-  Expect.equals('a,b,c', f('a', 'b', 'c'));
-  Expect.equals('a', Function.apply(f, ['a']));
-  Expect.equals('a,b', Function.apply(f, ['a', 'b']));
-  Expect.equals('a,b,c', Function.apply(f, ['a', 'b', 'c']));
-  Expect.throws(() => f.foo('a', 'b', 'c'), (e) => e is NoSuchMethodError);
-
-  ClosureMirror cm = reflect(f);
-  Expect.isTrue(cm is ClosureMirror);
-  Expect.equals('a', cm.apply(['a']).reflectee);
-  Expect.equals('a,b', cm.apply(['a', 'b']).reflectee);
-  Expect.equals('a,b,c', cm.apply(['a', 'b', 'c']).reflectee);
-
-  MethodMirror mm = cm.function;
-  Expect.isNull(mm);
-
-  ClassMirror km = cm.type;
-  Expect.equals(reflectClass(MultiArityFunction), km);
-}
diff --git a/tests/lib/mirrors/field_type_test.dart b/tests/lib/mirrors/field_type_test.dart
deleted file mode 100644
index 514e3d4..0000000
--- a/tests/lib/mirrors/field_type_test.dart
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright (c) 2013, 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 field_test;
-
-@MirrorsUsed(targets: "field_test")
-import 'dart:mirrors';
-import "package:expect/expect.dart";
-
-String toplevelVariable;
-
-class C {
-  final int i;
-  const C(this.i);
-}
-
-class A<T> {
-  static int staticField;
-  @C(42)
-  @C(44)
-  String field;
-  var dynamicTypeField;
-  T typeVariableField;
-  H<int> parameterizedTypeField;
-}
-
-class H<T> {}
-
-testOriginalDeclaration() {
-  ClassMirror a = reflectClass(A);
-  VariableMirror staticField = a.declarations[#staticField];
-  VariableMirror field = a.declarations[#field];
-  VariableMirror dynamicTypeField = a.declarations[#dynamicTypeField];
-  VariableMirror typeVariableField = a.declarations[#typeVariableField];
-  VariableMirror parameterizedTypeField =
-      a.declarations[#parameterizedTypeField];
-
-  Expect.equals(reflectType(int), staticField.type);
-  Expect.equals(reflectClass(String), field.type);
-  Expect.equals(reflectType(dynamic), dynamicTypeField.type);
-  Expect.equals(a.typeVariables.single, typeVariableField.type);
-  Expect.equals(reflect(new H<int>()).type, parameterizedTypeField.type);
-
-  Expect.equals(2, field.metadata.length);
-  Expect.equals(reflect(const C(42)), field.metadata.first);
-  Expect.equals(reflect(const C(44)), field.metadata.last);
-}
-
-testInstance() {
-  ClassMirror aOfString = reflect(new A<String>()).type;
-  VariableMirror staticField = aOfString.declarations[#staticField];
-  VariableMirror field = aOfString.declarations[#field];
-  VariableMirror dynamicTypeField = aOfString.declarations[#dynamicTypeField];
-  VariableMirror typeVariableField = aOfString.declarations[#typeVariableField];
-  VariableMirror parameterizedTypeField =
-      aOfString.declarations[#parameterizedTypeField];
-
-  Expect.equals(reflectType(int), staticField.type);
-  Expect.equals(reflectClass(String), field.type);
-  Expect.equals(reflectType(dynamic), dynamicTypeField.type);
-  Expect.equals(reflectClass(String), typeVariableField.type);
-  Expect.equals(reflect(new H<int>()).type, parameterizedTypeField.type);
-
-  Expect.equals(2, field.metadata.length);
-  Expect.equals(reflect(const C(42)), field.metadata.first);
-  Expect.equals(reflect(const C(44)), field.metadata.last);
-}
-
-testTopLevel() {
-  LibraryMirror currentLibrary = currentMirrorSystem().findLibrary(#field_test);
-  VariableMirror topLevel = currentLibrary.declarations[#toplevelVariable];
-  Expect.equals(reflectClass(String), topLevel.type);
-}
-
-main() {
-  testOriginalDeclaration();
-  testInstance();
-  testTopLevel();
-}
diff --git a/tests/lib/mirrors/function_apply_mirrors_lib.dart b/tests/lib/mirrors/function_apply_mirrors_lib.dart
deleted file mode 100644
index e94a55a..0000000
--- a/tests/lib/mirrors/function_apply_mirrors_lib.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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 function_apply_mirrors_lib;
-
-@MirrorsUsed(targets: "function_apply_mirrors_lib")
-import "dart:mirrors";
-
-bar() => reflect(499).reflectee;
diff --git a/tests/lib/mirrors/function_apply_mirrors_test.dart b/tests/lib/mirrors/function_apply_mirrors_test.dart
deleted file mode 100644
index 81d3b9e..0000000
--- a/tests/lib/mirrors/function_apply_mirrors_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Only 'lib' imports mirrors.
-// Function.apply is resolved, before it is known that mirrors are used.
-// Dart2js has different implementations of Function.apply for different
-// emitters (like --fast-startup). Dart2js must not switch the resolved
-// Function.apply when it discovers the use of mirrors.
-// In particular it must not switch from the fast-startup emitter to the full
-// emitter without updating the Function.apply reference.
-import 'function_apply_mirrors_lib.dart' as lib;
-
-import "package:expect/expect.dart";
-
-int foo({x: 499, y: 42}) => x + y;
-
-main() {
-  Expect.equals(709, Function.apply(foo, [], {#y: 210}));
-  Expect.equals(499, lib.bar());
-}
diff --git a/tests/lib/mirrors/function_apply_test.dart b/tests/lib/mirrors/function_apply_test.dart
deleted file mode 100644
index f9a861e..0000000
--- a/tests/lib/mirrors/function_apply_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-class A {
-  call(int x) => 123 + x;
-  bar(int y) => 321 + y;
-}
-
-foo(int y) => 456 + y;
-
-main() {
-  // Static function.
-  ClosureMirror f1 = reflect(foo);
-  Expect.equals(1456, f1.apply([1000]).reflectee);
-
-  // Local declaration.
-  chomp(int z) => z + 42;
-  ClosureMirror f2 = reflect(chomp);
-  Expect.equals(1042, f2.apply([1000]).reflectee);
-
-  // Local expression.
-  ClosureMirror f3 = reflect((u) => u + 987);
-  Expect.equals(1987, f3.apply([1000]).reflectee);
-
-  // Instance property extraction.
-  ClosureMirror f4 = reflect(new A().bar);
-  Expect.equals(1321, f4.apply([1000]).reflectee);
-
-  // Instance implementing Function via call method.
-  ClosureMirror f5 = reflect(new A());
-  Expect.equals(1123, f5.apply([1000]).reflectee);
-}
diff --git a/tests/lib/mirrors/function_type_mirror_test.dart b/tests/lib/mirrors/function_type_mirror_test.dart
deleted file mode 100644
index cf88ffc..0000000
--- a/tests/lib/mirrors/function_type_mirror_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-typedef void FooFunction(int a, double b);
-
-bar(int a) {}
-
-main() {
-  TypedefMirror tm = reflectType(FooFunction);
-  FunctionTypeMirror ftm = tm.referent;
-  Expect.equals(const Symbol('void'), ftm.returnType.simpleName);
-  Expect.equals(#int, ftm.parameters[0].type.simpleName);
-  Expect.equals(#double, ftm.parameters[1].type.simpleName);
-  ClosureMirror cm = reflect(bar);
-  ftm = cm.type;
-  Expect.equals(#dynamic, ftm.returnType.simpleName);
-  Expect.equals(#int, ftm.parameters[0].type.simpleName);
-}
diff --git a/tests/lib/mirrors/generic_bounded_by_type_parameter_test.dart b/tests/lib/mirrors/generic_bounded_by_type_parameter_test.dart
deleted file mode 100644
index a275d0f..0000000
--- a/tests/lib/mirrors/generic_bounded_by_type_parameter_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2013, 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 test.generic_bounded_by_type_parameter;
-
-@MirrorsUsed(targets: "test.generic_bounded_by_type_parameter")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'generics_helper.dart';
-
-class Super<T, R extends T> {}
-
-class Fixed extends Super<num, int> {}
-class Generic<X, Y> extends Super<X, Y> {} //# 02: static type warning
-class Malbounded extends Super<num, String> {} //# 01: static type warning
-
-bool inCheckedMode() {
-  try {
-    var s = 'string';
-    int i = s;
-  } catch (e) {
-    return true;
-  }
-  return false;
-}
-
-main() {
-  ClassMirror superDecl = reflectClass(Super);
-  ClassMirror superOfNumAndInt = reflectClass(Fixed).superclass;
-  ClassMirror genericDecl = reflectClass(Generic); // //# 02: continued
-  ClassMirror superOfXAndY = genericDecl.superclass; // //# 02: continued
-  ClassMirror genericOfNumAndDouble = reflect(new Generic<num, double>()).type; // //# 02: continued
-  ClassMirror superOfNumAndDouble = genericOfNumAndDouble.superclass; // //# 02: continued
-  ClassMirror superOfNumAndString = reflectClass(Malbounded).superclass; // //# 01: continued
-
-  try {
-    ClassMirror genericOfNumAndBool = reflect(new Generic<num, bool>()).type; // //# 02: static type warning
-    ClassMirror superOfNumAndBool = genericOfNumAndBool.superclass; // //# 02: continued
-    Expect.isFalse(genericOfNumAndBool.isOriginalDeclaration); // //# 02: continued
-    Expect.isFalse(superOfNumAndBool.isOriginalDeclaration); // //# 02: continued
-    typeParameters(genericOfNumAndBool, [#X, #Y]); // //# 02: continued
-    typeParameters(superOfNumAndBool, [#T, #R]); // //# 02: continued
-    typeArguments(genericOfNumAndBool, [reflectClass(num), reflectClass(bool)]); // //# 02: continued
-    typeArguments(superOfNumAndBool, [reflectClass(num), reflectClass(bool)]); // //# 02: continued
-    Expect.isFalse(inCheckedMode()); //# 02: continued
-  } on TypeError catch (e) {
-    Expect.isTrue(inCheckedMode());
-  }
-
-  Expect.isTrue(superDecl.isOriginalDeclaration);
-  Expect.isFalse(superOfNumAndInt.isOriginalDeclaration);
-  Expect.isTrue(genericDecl.isOriginalDeclaration); // //# 02: continued
-  Expect.isFalse(superOfXAndY.isOriginalDeclaration); //  //# 02: continued
-  Expect.isFalse(genericOfNumAndDouble.isOriginalDeclaration); // //# 02: continued
-  Expect.isFalse(superOfNumAndDouble.isOriginalDeclaration); // //# 02: continued
-  Expect.isFalse(superOfNumAndString.isOriginalDeclaration); // //# 01: continued
-
-  TypeVariableMirror tFromSuper = superDecl.typeVariables[0];
-  TypeVariableMirror rFromSuper = superDecl.typeVariables[1];
-  TypeVariableMirror xFromGeneric = genericDecl.typeVariables[0]; // //# 02: continued
-  TypeVariableMirror yFromGeneric = genericDecl.typeVariables[1]; // //# 02: continued
-
-  Expect.equals(reflectClass(Object), tFromSuper.upperBound);
-  Expect.equals(tFromSuper, rFromSuper.upperBound);
-  Expect.equals(reflectClass(Object), xFromGeneric.upperBound); // //# 02: continued
-  Expect.equals(reflectClass(Object), yFromGeneric.upperBound); // //# 02: continued
-
-  typeParameters(superDecl, [#T, #R]);
-  typeParameters(superOfNumAndInt, [#T, #R]);
-  typeParameters(genericDecl, [#X, #Y]); // //# 02: continued
-  typeParameters(superOfXAndY, [#T, #R]); // //# 02: continued
-  typeParameters(genericOfNumAndDouble, [#X, #Y]); // //# 02: continued
-  typeParameters(superOfNumAndDouble, [#T, #R]); // //# 02: continued
-  typeParameters(superOfNumAndString, [#T, #R]); // //# 01: continued
-
-  typeArguments(superDecl, []);
-  typeArguments(superOfNumAndInt, [reflectClass(num), reflectClass(int)]);
-  typeArguments(genericDecl, []); // //# 02: continued
-  typeArguments(superOfXAndY, [xFromGeneric, yFromGeneric]); // //# 02: continued
-  typeArguments(genericOfNumAndDouble, [reflectClass(num), reflectClass(double)]); // //# 02: continued
-  typeArguments(superOfNumAndDouble, [reflectClass(num), reflectClass(double)]); // //# 02: continued
-  typeArguments(superOfNumAndString, [reflectClass(num), reflectClass(String)]); // //# 01: continued
-}
diff --git a/tests/lib/mirrors/generic_bounded_test.dart b/tests/lib/mirrors/generic_bounded_test.dart
deleted file mode 100644
index 06025e6..0000000
--- a/tests/lib/mirrors/generic_bounded_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2013, 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 test.generic_bounded;
-
-@MirrorsUsed(targets: "test.generic_bounded")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'generics_helper.dart';
-
-class Super<T extends num> {}
-
-class Fixed extends Super<int> {}
-class Generic<R> extends Super<R> {} // //# 02: static type warning
-class Malbounded extends Super<String> {} //# 01: static type warning
-
-bool inCheckedMode() {
-  try {
-    var s = 'string';
-    int i = s;
-  } catch (e) {
-    return true;
-  }
-  return false;
-}
-
-main() {
-  ClassMirror superDecl = reflectClass(Super);
-  ClassMirror superOfInt = reflectClass(Fixed).superclass;
-  ClassMirror genericDecl = reflectClass(Generic); // //# 02: continued
-  ClassMirror superOfR = genericDecl.superclass; // //# 02: continued
-  ClassMirror genericOfDouble = reflect(new Generic<double>()).type; // //# 02: continued
-  ClassMirror superOfDouble = genericOfDouble.superclass; // //# 02: continued
-
-  try {
-    ClassMirror genericOfBool = reflect(new Generic<bool>()).type; // //# 02: static type warning
-    ClassMirror superOfBool = genericOfBool.superclass; // //# 02: continued
-    Expect.isFalse(genericOfBool.isOriginalDeclaration); // //# 02: continued
-    Expect.isFalse(superOfBool.isOriginalDeclaration); // //# 02: continued
-    typeParameters(genericOfBool, [#R]); // //# 02: continued
-    typeParameters(superOfBool, [#T]); // //# 02: continued
-    typeArguments(genericOfBool, [reflectClass(bool)]); // //# 02: continued
-    typeArguments(superOfBool, [reflectClass(bool)]); // //# 02: continued
-    Expect.isFalse(inCheckedMode()); //# 02: continued
-  } on TypeError catch (e) {
-    Expect.isTrue(inCheckedMode());
-  }
-
-  ClassMirror superOfString = reflectClass(Malbounded).superclass; // //# 01: continued
-
-  Expect.isTrue(superDecl.isOriginalDeclaration);
-  Expect.isFalse(superOfInt.isOriginalDeclaration);
-  Expect.isTrue(genericDecl.isOriginalDeclaration); // //# 02: continued
-  Expect.isFalse(superOfR.isOriginalDeclaration); // //# 02: continued
-  Expect.isFalse(genericOfDouble.isOriginalDeclaration); // //# 02: continued
-  Expect.isFalse(superOfDouble.isOriginalDeclaration); // //# 02: continued
-
-  Expect.isFalse(superOfString.isOriginalDeclaration); // //# 01: continued
-
-  TypeVariableMirror tFromSuper = superDecl.typeVariables.single;
-  TypeVariableMirror rFromGeneric = genericDecl.typeVariables.single; // //# 02: continued
-
-  Expect.equals(reflectClass(num), tFromSuper.upperBound);
-  Expect.equals(reflectClass(Object), rFromGeneric.upperBound); // //# 02: continued
-
-  typeParameters(superDecl, [#T]);
-  typeParameters(superOfInt, [#T]);
-  typeParameters(genericDecl, [#R]); // //# 02: continued
-  typeParameters(superOfR, [#T]); // //# 02: continued
-  typeParameters(genericOfDouble, [#R]); // //# 02: continued
-  typeParameters(superOfDouble, [#T]); // //# 02: continued
-  typeParameters(superOfString, [#T]); // //# 01: continued
-
-  typeArguments(superDecl, []);
-  typeArguments(superOfInt, [reflectClass(int)]);
-  typeArguments(genericDecl, []); // //# 02: continued
-  typeArguments(superOfR, [rFromGeneric]); // //# 02: continued
-  typeArguments(genericOfDouble, [reflectClass(double)]); // //# 02: continued
-  typeArguments(superOfDouble, [reflectClass(double)]); // //# 02: continued
-  typeArguments(superOfString, [reflectClass(String)]); // //# 01: continued
-}
diff --git a/tests/lib/mirrors/generic_class_declaration_test.dart b/tests/lib/mirrors/generic_class_declaration_test.dart
deleted file mode 100644
index b99e8e9..0000000
--- a/tests/lib/mirrors/generic_class_declaration_test.dart
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'stringify.dart';
-
-class A<T> {
-  var instanceVariable;
-  get instanceGetter => null;
-  set instanceSetter(x) => x;
-  instanceMethod() => null;
-
-  var _instanceVariable;
-  get _instanceGetter => null;
-  set _instanceSetter(x) => x;
-  _instanceMethod() => null;
-
-  static var staticVariable;
-  static get staticGetter => null;
-  static set staticSetter(x) => x;
-  static staticMethod() => null;
-
-  static var _staticVariable;
-  static get _staticGetter => null;
-  static set _staticSetter(x) => x;
-  static _staticMethod() => null;
-}
-
-main() {
-  ClassMirror cm = reflect(new A<String>()).type;
-  Expect.setEquals([
-    'Variable(s(_instanceVariable) in s(A), private)',
-    'Variable(s(_staticVariable) in s(A), private, static)',
-    'Variable(s(instanceVariable) in s(A))',
-    'Variable(s(staticVariable) in s(A), static)'
-  ], cm.declarations.values.where((dm) => dm is VariableMirror).map(stringify),
-      'variables');
-
-  Expect.setEquals(
-      [
-        'Method(s(_instanceGetter) in s(A), private, getter)',
-        'Method(s(_staticGetter) in s(A), private, static, getter)',
-        'Method(s(instanceGetter) in s(A), getter)',
-        'Method(s(staticGetter) in s(A), static, getter)'
-      ],
-      cm.declarations.values
-          .where((dm) => dm is MethodMirror && dm.isGetter)
-          .map(stringify),
-      'getters');
-
-  Expect.setEquals(
-      [
-        'Method(s(_instanceSetter=) in s(A), private, setter)',
-        'Method(s(_staticSetter=) in s(A), private, static, setter)',
-        'Method(s(instanceSetter=) in s(A), setter)',
-        'Method(s(staticSetter=) in s(A), static, setter)'
-      ],
-      cm.declarations.values
-          .where((dm) => dm is MethodMirror && dm.isSetter)
-          .map(stringify),
-      'setters');
-
-  Expect.setEquals(
-      [
-        'Method(s(_instanceMethod) in s(A), private)',
-        'Method(s(_staticMethod) in s(A), private, static)',
-        'Method(s(instanceMethod) in s(A))',
-        'Method(s(staticMethod) in s(A), static)'
-      ],
-      cm.declarations.values
-          .where((dm) => dm is MethodMirror && dm.isRegularMethod)
-          .map(stringify),
-      'methods');
-
-  Expect.setEquals(
-      ['Method(s(A) in s(A), constructor)'],
-      cm.declarations.values
-          .where((dm) => dm is MethodMirror && dm.isConstructor)
-          .map(stringify),
-      'constructors');
-
-  Expect.setEquals(
-      [
-        'TypeVariable(s(T) in s(A), upperBound = Class(s(Object) in '
-            's(dart.core), top-level))'
-      ],
-      cm.declarations.values
-          .where((dm) => dm is TypeVariableMirror)
-          .map(stringify),
-      'type variables');
-}
diff --git a/tests/lib/mirrors/generic_f_bounded_mixin_application_test.dart b/tests/lib/mirrors/generic_f_bounded_mixin_application_test.dart
deleted file mode 100644
index b34bd64..0000000
--- a/tests/lib/mirrors/generic_f_bounded_mixin_application_test.dart
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright (c) 2013, 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 test.generic_f_bounded;
-
-@MirrorsUsed(targets: "test.generic_f_bounded")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'generics_helper.dart';
-
-class Collection<C> {}
-
-class Serializable<S> {}
-
-class OrderedCollection<V> extends Collection<V>
-    with Serializable<OrderedCollection<V>> {}
-
-class AbstractOrderedCollection<W> = Collection<W>
-    with Serializable<AbstractOrderedCollection<W>>;
-
-class CustomOrderedCollection<Z> extends AbstractOrderedCollection<Z> {}
-
-class OrderedIntegerCollection extends OrderedCollection<int> {}
-
-class CustomOrderedIntegerCollection extends CustomOrderedCollection<int> {}
-
-class Serializer<R extends Serializable<R>> {}
-
-class CollectionSerializer extends Serializer<Collection> {}
-
-class OrderedCollectionSerializer extends Serializer<OrderedCollection> {}
-
-main() {
-  ClassMirror collectionDecl = reflectClass(Collection);
-  ClassMirror serializableDecl = reflectClass(Serializable);
-  ClassMirror orderedCollectionDecl = reflectClass(OrderedCollection);
-  ClassMirror abstractOrderedCollectionDecl =
-      reflectClass(AbstractOrderedCollection);
-  ClassMirror customOrderedCollectionDecl =
-      reflectClass(CustomOrderedCollection);
-  ClassMirror orderedIntegerCollection = reflectClass(OrderedIntegerCollection);
-  ClassMirror customOrderedIntegerCollection =
-      reflectClass(CustomOrderedIntegerCollection);
-  ClassMirror serializerDecl = reflectClass(Serializer);
-  ClassMirror collectionSerializerDecl = reflectClass(CollectionSerializer);
-  ClassMirror orderedCollectionSerializerDecl =
-      reflectClass(OrderedCollectionSerializer);
-
-  ClassMirror orderedCollectionOfInt = orderedIntegerCollection.superclass;
-  ClassMirror customOrderedCollectionOfInt =
-      customOrderedIntegerCollection.superclass;
-  ClassMirror serializerOfCollection = collectionSerializerDecl.superclass;
-  ClassMirror serializerOfOrderedCollection =
-      orderedCollectionSerializerDecl.superclass;
-  ClassMirror collectionOfDynamic = reflect(new Collection()).type;
-  ClassMirror orderedCollectionOfDynamic =
-      reflect(new OrderedCollection()).type;
-  ClassMirror collectionWithSerializableOfOrderedCollection =
-      orderedCollectionDecl.superclass;
-
-  Expect.isTrue(collectionDecl.isOriginalDeclaration);
-  Expect.isTrue(serializableDecl.isOriginalDeclaration);
-  Expect.isTrue(orderedCollectionDecl.isOriginalDeclaration);
-  Expect.isTrue(abstractOrderedCollectionDecl.isOriginalDeclaration);
-  Expect.isTrue(customOrderedCollectionDecl.isOriginalDeclaration);
-  Expect.isTrue(orderedIntegerCollection.isOriginalDeclaration);
-  Expect.isTrue(customOrderedIntegerCollection.isOriginalDeclaration);
-  Expect.isTrue(serializerDecl.isOriginalDeclaration);
-  Expect.isTrue(collectionSerializerDecl.isOriginalDeclaration);
-  Expect.isTrue(orderedCollectionSerializerDecl.isOriginalDeclaration);
-
-  Expect.isFalse(orderedCollectionOfInt.isOriginalDeclaration);
-  Expect.isFalse(customOrderedCollectionOfInt.isOriginalDeclaration);
-  Expect.isFalse(serializerOfCollection.isOriginalDeclaration);
-  Expect.isFalse(serializerOfOrderedCollection.isOriginalDeclaration);
-  Expect.isFalse(collectionOfDynamic.isOriginalDeclaration);
-  Expect.isFalse(
-      collectionWithSerializableOfOrderedCollection.isOriginalDeclaration);
-
-  TypeVariableMirror rFromSerializer = serializerDecl.typeVariables.single;
-  ClassMirror serializableOfR = rFromSerializer.upperBound;
-  Expect.isFalse(serializableOfR.isOriginalDeclaration);
-  Expect.equals(serializableDecl, serializableOfR.originalDeclaration);
-  Expect.equals(rFromSerializer, serializableOfR.typeArguments.single);
-
-  typeParameters(collectionDecl, [#C]);
-  typeParameters(serializableDecl, [#S]);
-  typeParameters(orderedCollectionDecl, [#V]);
-  typeParameters(abstractOrderedCollectionDecl, [#W]);
-  typeParameters(customOrderedCollectionDecl, [#Z]);
-  typeParameters(orderedIntegerCollection, []);
-  typeParameters(customOrderedIntegerCollection, []);
-  typeParameters(serializerDecl, [#R]);
-  typeParameters(collectionSerializerDecl, []);
-  typeParameters(orderedCollectionSerializerDecl, []);
-
-  typeParameters(orderedCollectionOfInt, [#V]);
-  typeParameters(customOrderedCollectionOfInt, [#Z]);
-  typeParameters(serializerOfCollection, [#R]);
-  typeParameters(serializerOfOrderedCollection, [#R]);
-  typeParameters(collectionOfDynamic, [#C]);
-  typeParameters(collectionWithSerializableOfOrderedCollection, []);
-
-  typeArguments(collectionDecl, []);
-  typeArguments(serializableDecl, []);
-  typeArguments(orderedCollectionDecl, []);
-  typeArguments(abstractOrderedCollectionDecl, []);
-  typeArguments(customOrderedCollectionDecl, []);
-  typeArguments(orderedIntegerCollection, []);
-  typeArguments(customOrderedIntegerCollection, []);
-  typeArguments(serializerDecl, []);
-  typeArguments(collectionSerializerDecl, []);
-  typeArguments(orderedCollectionSerializerDecl, []);
-
-  typeArguments(orderedCollectionOfInt, [reflectClass(int)]);
-  typeArguments(customOrderedCollectionOfInt, [reflectClass(int)]);
-  typeArguments(serializerOfCollection, [collectionOfDynamic]);
-  typeArguments(serializerOfOrderedCollection, [orderedCollectionOfDynamic]);
-  typeArguments(collectionWithSerializableOfOrderedCollection, []);
-}
diff --git a/tests/lib/mirrors/generic_f_bounded_test.dart b/tests/lib/mirrors/generic_f_bounded_test.dart
deleted file mode 100644
index 5b3fefb..0000000
--- a/tests/lib/mirrors/generic_f_bounded_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2013, 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 test.generic_f_bounded;
-
-@MirrorsUsed(targets: "test.generic_f_bounded")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'generics_helper.dart';
-
-class Magnitude<T> {}
-
-class Real extends Magnitude<Real> {}
-
-class Sorter<R extends Magnitude<R>> {}
-
-class RealSorter extends Sorter<Real> {}
-
-main() {
-  ClassMirror magnitudeDecl = reflectClass(Magnitude);
-  ClassMirror realDecl = reflectClass(Real);
-  ClassMirror sorterDecl = reflectClass(Sorter);
-  ClassMirror realSorterDecl = reflectClass(RealSorter);
-  ClassMirror magnitudeOfReal = realDecl.superclass;
-  ClassMirror sorterOfReal = realSorterDecl.superclass;
-
-  Expect.isTrue(magnitudeDecl.isOriginalDeclaration);
-  Expect.isTrue(realDecl.isOriginalDeclaration);
-  Expect.isTrue(sorterDecl.isOriginalDeclaration);
-  Expect.isTrue(realSorterDecl.isOriginalDeclaration);
-  Expect.isFalse(magnitudeOfReal.isOriginalDeclaration);
-  Expect.isFalse(sorterOfReal.isOriginalDeclaration);
-
-  TypeVariableMirror tFromMagnitude = magnitudeDecl.typeVariables.single;
-  TypeVariableMirror rFromSorter = sorterDecl.typeVariables.single;
-
-  Expect.equals(reflectClass(Object), tFromMagnitude.upperBound);
-
-  ClassMirror magnitudeOfR = rFromSorter.upperBound;
-  Expect.isFalse(magnitudeOfR.isOriginalDeclaration);
-  Expect.equals(magnitudeDecl, magnitudeOfR.originalDeclaration);
-  Expect.equals(rFromSorter, magnitudeOfR.typeArguments.single);
-
-  typeParameters(magnitudeDecl, [#T]);
-  typeParameters(realDecl, []);
-  typeParameters(sorterDecl, [#R]);
-  typeParameters(realSorterDecl, []);
-  typeParameters(magnitudeOfReal, [#T]);
-  typeParameters(sorterOfReal, [#R]);
-  typeParameters(magnitudeOfR, [#T]);
-
-  typeArguments(magnitudeDecl, []);
-  typeArguments(realDecl, []);
-  typeArguments(sorterDecl, []);
-  typeArguments(realSorterDecl, []);
-  typeArguments(magnitudeOfReal, [realDecl]); //# 01: ok
-  typeArguments(sorterOfReal, [realDecl]); //# 01: ok
-  typeArguments(magnitudeOfR, [rFromSorter]);
-}
diff --git a/tests/lib/mirrors/generic_function_typedef_test.dart b/tests/lib/mirrors/generic_function_typedef_test.dart
deleted file mode 100644
index e30ac28..0000000
--- a/tests/lib/mirrors/generic_function_typedef_test.dart
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright (c) 2013, 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 test.generic_function_typedef;
-
-@MirrorsUsed(targets: "test.generic_function_typedef")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'generics_helper.dart';
-
-typedef bool NonGenericPredicate(num n);
-typedef bool GenericPredicate<T>(T t);
-typedef S GenericTransform<S>(S s);
-
-class C<R> {
-  GenericPredicate<num> predicateOfNum;
-  GenericTransform<String> transformOfString;
-  GenericTransform<R> transformOfR;
-}
-
-reflectTypeDeclaration(t) => reflectType(t).originalDeclaration;
-
-main() {
-  TypeMirror dynamicMirror = currentMirrorSystem().dynamicType;
-
-  TypedefMirror predicateOfNum =
-      (reflectClass(C).declarations[#predicateOfNum] as VariableMirror).type;
-  TypedefMirror transformOfString =
-      (reflectClass(C).declarations[#transformOfString] as VariableMirror).type;
-  TypedefMirror transformOfR =
-      (reflectClass(C).declarations[#transformOfR] as VariableMirror).type;
-  TypedefMirror transformOfDouble = (reflect(new C<double>())
-          .type
-          .declarations[#transformOfR] as VariableMirror)
-      .type;
-
-  TypeVariableMirror tFromGenericPredicate =
-      reflectTypeDeclaration(GenericPredicate).typeVariables[0];
-  TypeVariableMirror sFromGenericTransform =
-      reflectTypeDeclaration(GenericTransform).typeVariables[0];
-  TypeVariableMirror rFromC = reflectClass(C).typeVariables[0];
-
-  // Typedefs.
-  typeParameters(reflectTypeDeclaration(NonGenericPredicate), []);
-  typeParameters(reflectTypeDeclaration(GenericPredicate), [#T]);
-  typeParameters(reflectTypeDeclaration(GenericTransform), [#S]);
-  typeParameters(predicateOfNum, [#T]);
-  typeParameters(transformOfString, [#S]);
-  typeParameters(transformOfR, [#S]);
-  typeParameters(transformOfDouble, [#S]);
-
-  typeArguments(reflectTypeDeclaration(NonGenericPredicate), []);
-  typeArguments(reflectTypeDeclaration(GenericPredicate), []);
-  typeArguments(reflectTypeDeclaration(GenericTransform), []);
-  typeArguments(predicateOfNum, [reflectClass(num)]);
-  typeArguments(transformOfString, [reflectClass(String)]);
-  typeArguments(transformOfR, [rFromC]);
-  typeArguments(transformOfDouble, [reflectClass(double)]);
-
-  Expect.isTrue(
-      reflectTypeDeclaration(NonGenericPredicate).isOriginalDeclaration);
-  Expect.isTrue(reflectTypeDeclaration(GenericPredicate).isOriginalDeclaration);
-  Expect.isTrue(reflectTypeDeclaration(GenericTransform).isOriginalDeclaration);
-  Expect.isFalse(predicateOfNum.isOriginalDeclaration);
-  Expect.isFalse(transformOfString.isOriginalDeclaration);
-  Expect.isFalse(transformOfR.isOriginalDeclaration);
-  Expect.isFalse(transformOfDouble.isOriginalDeclaration);
-
-  // Function types.
-  typeParameters(reflectTypeDeclaration(NonGenericPredicate).referent, []);
-  typeParameters(reflectTypeDeclaration(GenericPredicate).referent, []);
-  typeParameters(reflectTypeDeclaration(GenericTransform).referent, []);
-  typeParameters(predicateOfNum.referent, []);
-  typeParameters(transformOfString.referent, []);
-  typeParameters(transformOfR.referent, []);
-  typeParameters(transformOfDouble.referent, []);
-
-  typeArguments(reflectTypeDeclaration(NonGenericPredicate).referent, []);
-  typeArguments(reflectTypeDeclaration(GenericPredicate).referent, []);
-  typeArguments(reflectTypeDeclaration(GenericTransform).referent, []);
-  typeArguments(predicateOfNum.referent, []);
-  typeArguments(transformOfString.referent, []);
-  typeArguments(transformOfR.referent, []);
-  typeArguments(transformOfDouble.referent, []);
-
-  // Function types are always non-generic. Only the typedef is generic.
-  Expect.isTrue(reflectTypeDeclaration(NonGenericPredicate)
-      .referent
-      .isOriginalDeclaration);
-  Expect.isTrue(
-      reflectTypeDeclaration(GenericPredicate).referent.isOriginalDeclaration);
-  Expect.isTrue(
-      reflectTypeDeclaration(GenericTransform).referent.isOriginalDeclaration);
-  Expect.isTrue(predicateOfNum.referent.isOriginalDeclaration);
-  Expect.isTrue(transformOfString.referent.isOriginalDeclaration);
-  Expect.isTrue(transformOfR.referent.isOriginalDeclaration);
-  Expect.isTrue(transformOfDouble.referent.isOriginalDeclaration);
-
-  Expect.equals(reflectClass(num),
-      reflectTypeDeclaration(NonGenericPredicate).referent.parameters[0].type);
-  Expect.equals(tFromGenericPredicate,
-      reflectTypeDeclaration(GenericPredicate).referent.parameters[0].type);
-  Expect.equals(sFromGenericTransform,
-      reflectTypeDeclaration(GenericTransform).referent.parameters[0].type);
-
-  Expect.equals(reflectClass(num), predicateOfNum.referent.parameters[0].type);
-  Expect.equals(
-      reflectClass(String), transformOfString.referent.parameters[0].type);
-  Expect.equals(rFromC, transformOfR.referent.parameters[0].type);
-  Expect.equals(
-      reflectClass(double), transformOfDouble.referent.parameters[0].type);
-
-  Expect.equals(reflectClass(bool),
-      reflectTypeDeclaration(NonGenericPredicate).referent.returnType);
-  Expect.equals(reflectClass(bool),
-      reflectTypeDeclaration(GenericPredicate).referent.returnType);
-  Expect.equals(sFromGenericTransform,
-      reflectTypeDeclaration(GenericTransform).referent.returnType);
-  Expect.equals(reflectClass(bool), predicateOfNum.referent.returnType);
-  Expect.equals(reflectClass(String), transformOfString.referent.returnType);
-  Expect.equals(rFromC, transformOfR.referent.returnType);
-  Expect.equals(reflectClass(double), transformOfDouble.referent.returnType);
-}
diff --git a/tests/lib/mirrors/generic_interface_test.dart b/tests/lib/mirrors/generic_interface_test.dart
deleted file mode 100644
index 63edd3c..0000000
--- a/tests/lib/mirrors/generic_interface_test.dart
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (c) 2013, 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 test.generic_bounded;
-
-@MirrorsUsed(targets: "test.generic_bounded")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'generics_helper.dart';
-
-class Interface<T> {}
-
-class Bounded<S extends num> {}
-
-class Fixed implements Interface<int> {}
-
-class Generic<R> implements Interface<R> {}
-
-class Bienbounded implements Bounded<int> {}
-
-class Malbounded implements Bounded<String> {} // //# 01: static type warning
-class FBounded implements Interface<FBounded> {}
-
-class Mixin {}
-
-class FixedMixinApplication = Object with Mixin implements Interface<int>;
-class GenericMixinApplication<X> = Object with Mixin implements Interface<X>;
-
-class FixedClass extends Object with Mixin implements Interface<int> {}
-
-class GenericClass<Y> extends Object with Mixin implements Interface<Y> {}
-
-main() {
-  TypeMirror dynamicMirror = currentMirrorSystem().dynamicType;
-
-  ClassMirror interfaceDecl = reflectClass(Interface);
-  ClassMirror boundedDecl = reflectClass(Bounded);
-
-  ClassMirror interfaceOfInt = reflectClass(Fixed).superinterfaces.single;
-  ClassMirror interfaceOfR = reflectClass(Generic).superinterfaces.single;
-  ClassMirror interfaceOfBool =
-      reflect(new Generic<bool>()).type.superinterfaces.single;
-
-  ClassMirror boundedOfInt = reflectClass(Bienbounded).superinterfaces.single;
-  ClassMirror boundedOfString = reflectClass(Malbounded).superinterfaces.single; // //# 01: continued
-  ClassMirror interfaceOfFBounded =
-      reflectClass(FBounded).superinterfaces.single;
-
-  ClassMirror interfaceOfInt2 =
-      reflectClass(FixedMixinApplication).superinterfaces.single;
-  ClassMirror interfaceOfX =
-      reflectClass(GenericMixinApplication).superinterfaces.single;
-  ClassMirror interfaceOfDouble = reflect(new GenericMixinApplication<double>())
-      .type
-      .superinterfaces
-      .single;
-  ClassMirror interfaceOfInt3 = reflectClass(FixedClass).superinterfaces.single;
-  ClassMirror interfaceOfY = reflectClass(GenericClass).superinterfaces.single;
-  ClassMirror interfaceOfDouble2 =
-      reflect(new GenericClass<double>()).type.superinterfaces.single;
-
-  Expect.isTrue(interfaceDecl.isOriginalDeclaration);
-  Expect.isTrue(boundedDecl.isOriginalDeclaration);
-
-  Expect.isFalse(interfaceOfInt.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfR.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfBool.isOriginalDeclaration);
-  Expect.isFalse(boundedOfInt.isOriginalDeclaration);
-  Expect.isFalse(boundedOfString.isOriginalDeclaration); // //# 01: continued
-  Expect.isFalse(interfaceOfFBounded.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfInt2.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfX.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfDouble.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfInt3.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfY.isOriginalDeclaration);
-  Expect.isFalse(interfaceOfDouble2.isOriginalDeclaration);
-
-  TypeVariableMirror tFromInterface = interfaceDecl.typeVariables.single;
-  TypeVariableMirror sFromBounded = boundedDecl.typeVariables.single;
-  TypeVariableMirror rFromGeneric = reflectClass(Generic).typeVariables.single;
-  TypeVariableMirror xFromGenericMixinApplication =
-      reflectClass(GenericMixinApplication).typeVariables.single;
-  TypeVariableMirror yFromGenericClass =
-      reflectClass(GenericClass).typeVariables.single;
-
-  Expect.equals(reflectClass(Object), tFromInterface.upperBound);
-  Expect.equals(reflectClass(num), sFromBounded.upperBound);
-  Expect.equals(reflectClass(Object), rFromGeneric.upperBound);
-  Expect.equals(reflectClass(Object), xFromGenericMixinApplication.upperBound);
-  Expect.equals(reflectClass(Object), yFromGenericClass.upperBound);
-
-  typeParameters(interfaceDecl, [#T]);
-  typeParameters(boundedDecl, [#S]);
-  typeParameters(interfaceOfInt, [#T]);
-  typeParameters(interfaceOfR, [#T]);
-  typeParameters(interfaceOfBool, [#T]);
-  typeParameters(boundedOfInt, [#S]);
-  typeParameters(boundedOfString, [#S]); // //# 01: continued
-  typeParameters(interfaceOfFBounded, [#T]);
-  typeParameters(interfaceOfInt2, [#T]);
-  typeParameters(interfaceOfX, [#T]);
-  typeParameters(interfaceOfDouble, [#T]);
-  typeParameters(interfaceOfInt3, [#T]);
-  typeParameters(interfaceOfY, [#T]);
-  typeParameters(interfaceOfDouble2, [#T]);
-
-  typeArguments(interfaceDecl, []);
-  typeArguments(boundedDecl, []);
-  typeArguments(interfaceOfInt, [reflectClass(int)]);
-  typeArguments(interfaceOfR, [rFromGeneric]);
-  typeArguments(interfaceOfBool, [reflectClass(bool)]);
-  typeArguments(boundedOfInt, [reflectClass(int)]);
-  typeArguments(boundedOfString, [reflectClass(String)]); // //# 01: continued
-  typeArguments(interfaceOfFBounded, [reflectClass(FBounded)]);
-  typeArguments(interfaceOfInt2, [reflectClass(int)]);
-  typeArguments(interfaceOfX, [xFromGenericMixinApplication]);
-  typeArguments(interfaceOfDouble, [reflectClass(double)]);
-  typeArguments(interfaceOfInt3, [reflectClass(int)]);
-  typeArguments(interfaceOfY, [yFromGenericClass]);
-  typeArguments(interfaceOfDouble2, [reflectClass(double)]);
-}
diff --git a/tests/lib/mirrors/generics_double_substitution_test.dart b/tests/lib/mirrors/generics_double_substitution_test.dart
deleted file mode 100644
index 68fa50e..0000000
--- a/tests/lib/mirrors/generics_double_substitution_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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 test.generics_double_substitution;
-
-@MirrorsUsed(targets: "test.generics_double_substitution")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A<R> {}
-
-class B<S> {}
-
-class C<T> extends B<A<T>> {
-  A<T> field;
-  A<T> returnType() {}
-  parameterType(A<T> param) {}
-}
-
-main() {
-  ClassMirror cOfString = reflect(new C<String>()).type;
-  ClassMirror aOfString = reflect(new A<String>()).type;
-
-  VariableMirror field = cOfString.declarations[#field];
-  Expect.equals(aOfString, field.type);
-
-  MethodMirror returnType = cOfString.declarations[#returnType];
-  Expect.equals(aOfString, returnType.returnType);
-
-  MethodMirror parameterType = cOfString.declarations[#parameterType];
-  Expect.equals(aOfString, parameterType.parameters.single.type);
-
-  ClassMirror typeArgOfSuperclass = cOfString.superclass.typeArguments.single;
-  Expect.equals(aOfString, typeArgOfSuperclass); // //# 01: ok
-}
diff --git a/tests/lib/mirrors/generics_dynamic_test.dart b/tests/lib/mirrors/generics_dynamic_test.dart
deleted file mode 100644
index eb91285..0000000
--- a/tests/lib/mirrors/generics_dynamic_test.dart
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A<T> {}
-
-class B<T extends A> extends A implements C {
-  A m(A a) {}
-  A field;
-}
-
-class C<S, T> {}
-
-class D extends A<int> {}
-
-main() {
-  ClassMirror aDecl = reflectClass(A);
-  ClassMirror bDecl = reflectClass(B);
-  ClassMirror cDecl = reflectClass(C);
-  TypeMirror aInstance = reflect(new A()).type;
-  TypeMirror aInstanceDynamic = reflect(new A<dynamic>()).type;
-  TypeMirror dInstance = reflect(new D()).type;
-  TypeMirror cInstance = reflect(new C<dynamic, dynamic>()).type;
-  TypeMirror cNestedInstance = reflect(new C<C, dynamic>()).type;
-  TypeMirror cTypeArgument = cNestedInstance.typeArguments.first;
-  TypeMirror superA = bDecl.superclass;
-  TypeMirror superC = bDecl.superinterfaces.single;
-  MethodMirror m = bDecl.declarations[#m];
-  VariableMirror field = bDecl.declarations[#field];
-  TypeMirror returnTypeA = m.returnType;
-  TypeMirror parameterTypeA = m.parameters.first.type;
-  TypeMirror fieldTypeA = field.type;
-  TypeMirror upperBoundA = bDecl.typeVariables.single.upperBound;
-  TypeMirror dynamicMirror = currentMirrorSystem().dynamicType;
-
-  Expect.isTrue(aDecl.isOriginalDeclaration);
-  Expect.isTrue(reflect(dInstance).type.isOriginalDeclaration);
-  Expect.isFalse(aInstance.isOriginalDeclaration);
-  Expect.isFalse(aInstanceDynamic.isOriginalDeclaration);
-  Expect.isFalse(superA.isOriginalDeclaration);
-  Expect.isFalse(superC.isOriginalDeclaration);
-  Expect.isFalse(returnTypeA.isOriginalDeclaration);
-  Expect.isFalse(parameterTypeA.isOriginalDeclaration);
-  Expect.isFalse(fieldTypeA.isOriginalDeclaration);
-  Expect.isFalse(upperBoundA.isOriginalDeclaration);
-  Expect.isFalse(cInstance.isOriginalDeclaration);
-  Expect.isFalse(cNestedInstance.isOriginalDeclaration);
-  Expect.isFalse(cTypeArgument.isOriginalDeclaration);
-
-  Expect.isTrue(aDecl.typeArguments.isEmpty);
-  Expect.isTrue(dInstance.typeArguments.isEmpty);
-  Expect.equals(dynamicMirror, aInstance.typeArguments.single);
-  Expect.equals(dynamicMirror, aInstanceDynamic.typeArguments.single);
-  Expect.equals(dynamicMirror, superA.typeArguments.single);
-  Expect.equals(dynamicMirror, superC.typeArguments.first);
-  Expect.equals(dynamicMirror, superC.typeArguments.last);
-  Expect.equals(dynamicMirror, returnTypeA.typeArguments.single);
-  Expect.equals(dynamicMirror, parameterTypeA.typeArguments.single);
-  Expect.equals(dynamicMirror, fieldTypeA.typeArguments.single);
-  Expect.equals(dynamicMirror, upperBoundA.typeArguments.single);
-  Expect.equals(dynamicMirror, cInstance.typeArguments.first);
-  Expect.equals(dynamicMirror, cInstance.typeArguments.last);
-  Expect.equals(dynamicMirror, cNestedInstance.typeArguments.last);
-  Expect.equals(dynamicMirror, cTypeArgument.typeArguments.first);
-  Expect.equals(dynamicMirror, cTypeArgument.typeArguments.last);
-}
diff --git a/tests/lib/mirrors/generics_helper.dart b/tests/lib/mirrors/generics_helper.dart
deleted file mode 100644
index da10962..0000000
--- a/tests/lib/mirrors/generics_helper.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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 generics_helper;
-
-import 'package:expect/expect.dart';
-
-typeParameters(mirror, parameterNames) {
-  Expect.listEquals(
-      parameterNames, mirror.typeVariables.map((v) => v.simpleName).toList());
-}
-
-typeArguments(mirror, argumentMirrors) {
-  Expect.listEquals(argumentMirrors, mirror.typeArguments);
-}
diff --git a/tests/lib/mirrors/generics_special_types_test.dart b/tests/lib/mirrors/generics_special_types_test.dart
deleted file mode 100644
index 8a105d0..0000000
--- a/tests/lib/mirrors/generics_special_types_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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 test.generics_special_types;
-
-@MirrorsUsed(targets: "test.generics_special_types")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-main() {
-  TypeMirror dynamicMirror = currentMirrorSystem().dynamicType;
-  Expect.isTrue(dynamicMirror.isOriginalDeclaration);
-  Expect.equals(dynamicMirror, dynamicMirror.originalDeclaration);
-  Expect.listEquals([], dynamicMirror.typeVariables);
-  Expect.listEquals([], dynamicMirror.typeArguments);
-
-  TypeMirror voidMirror = currentMirrorSystem().voidType;
-  Expect.isTrue(voidMirror.isOriginalDeclaration);
-  Expect.equals(voidMirror, voidMirror.originalDeclaration);
-  Expect.listEquals([], voidMirror.typeVariables);
-  Expect.listEquals([], voidMirror.typeArguments);
-
-  TypeMirror dynamicMirror2 = reflectType(dynamic);
-  Expect.equals(dynamicMirror, dynamicMirror2);
-  Expect.isTrue(dynamicMirror2.isOriginalDeclaration);
-  Expect.equals(dynamicMirror2, dynamicMirror2.originalDeclaration);
-  Expect.listEquals([], dynamicMirror2.typeVariables);
-  Expect.listEquals([], dynamicMirror2.typeArguments);
-}
diff --git a/tests/lib/mirrors/generics_substitution_test.dart b/tests/lib/mirrors/generics_substitution_test.dart
deleted file mode 100644
index 811e4e4..0000000
--- a/tests/lib/mirrors/generics_substitution_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2013, 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 test.generics_substitution;
-
-@MirrorsUsed(targets: "test.generics_substitution")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class SuperGeneric<R, S> {
-  R r;
-  s(S s) {}
-}
-
-class Generic<T> extends SuperGeneric<T, int> {
-  T t() {}
-}
-
-main() {
-  ClassMirror genericDecl = reflectClass(Generic);
-  ClassMirror genericOfString = reflect(new Generic<String>()).type;
-  ClassMirror superGenericDecl = reflectClass(SuperGeneric);
-  ClassMirror superOfTAndInt = genericDecl.superclass;
-  ClassMirror superOfStringAndInt = genericOfString.superclass;
-
-  Expect.isTrue(genericDecl.isOriginalDeclaration);
-  Expect.isFalse(genericOfString.isOriginalDeclaration);
-  Expect.isTrue(superGenericDecl.isOriginalDeclaration);
-  Expect.isFalse(superOfTAndInt.isOriginalDeclaration);
-  Expect.isFalse(superOfStringAndInt.isOriginalDeclaration);
-
-  Symbol r(ClassMirror cm) =>
-      (cm.declarations[#r] as VariableMirror).type.simpleName;
-  Symbol s(ClassMirror cm) =>
-      (cm.declarations[#s] as MethodMirror).parameters[0].type.simpleName;
-  Symbol t(ClassMirror cm) =>
-      (cm.declarations[#t] as MethodMirror).returnType.simpleName;
-
-  Expect.equals(#T, r(genericDecl.superclass));
-  Expect.equals(#int, s(genericDecl.superclass));
-  Expect.equals(#T, t(genericDecl));
-
-  Expect.equals(#String, r(genericOfString.superclass));
-  Expect.equals(#int, s(genericOfString.superclass));
-  Expect.equals(#String, t(genericOfString));
-
-  Expect.equals(#R, r(superGenericDecl));
-  Expect.equals(#S, s(superGenericDecl));
-
-  Expect.equals(#T, r(superOfTAndInt));
-  Expect.equals(#int, s(superOfTAndInt));
-
-  Expect.equals(#String, r(superOfStringAndInt));
-  Expect.equals(#int, s(superOfStringAndInt));
-}
diff --git a/tests/lib/mirrors/generics_test.dart b/tests/lib/mirrors/generics_test.dart
deleted file mode 100644
index 110085d..0000000
--- a/tests/lib/mirrors/generics_test.dart
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright (c) 2013, 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 test.type_arguments_test;
-
-@MirrorsUsed(targets: "test.type_arguments_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-import 'generics_helper.dart';
-
-class A<T> {}
-
-class Z<T> {}
-
-class B extends A {}
-
-class C
-    extends A<num, int> // //# 01: static type warning
-{}
-
-class D extends A<int> {}
-
-class E<S> extends A<S> {}
-
-class F<R> extends A<int> {}
-
-class G {}
-
-class H<A, B, C> {}
-
-class I extends G {}
-
-main() {
-  // Declarations.
-  typeParameters(reflectClass(A), [#T]);
-  typeParameters(reflectClass(G), []);
-  typeParameters(reflectClass(B), []);
-  typeParameters(reflectClass(C), []);
-  typeParameters(reflectClass(D), []);
-  typeParameters(reflectClass(E), [#S]);
-  typeParameters(reflectClass(F), [#R]);
-  typeParameters(reflectClass(G), []);
-  typeParameters(reflectClass(H), [#A, #B, #C]);
-  typeParameters(reflectClass(I), []);
-
-  typeArguments(reflectClass(A), []);
-  typeArguments(reflectClass(B), []);
-  typeArguments(reflectClass(C), []);
-  typeArguments(reflectClass(D), []);
-  typeArguments(reflectClass(E), []);
-  typeArguments(reflectClass(F), []);
-  typeArguments(reflectClass(G), []);
-  typeArguments(reflectClass(H), []);
-  typeArguments(reflectClass(I), []);
-
-  Expect.isTrue(reflectClass(A).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(B).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(C).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(D).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(E).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(F).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(G).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(H).isOriginalDeclaration);
-  Expect.isTrue(reflectClass(I).isOriginalDeclaration);
-
-  Expect.equals(reflectClass(A), reflectClass(A).originalDeclaration);
-  Expect.equals(reflectClass(B), reflectClass(B).originalDeclaration);
-  Expect.equals(reflectClass(C), reflectClass(C).originalDeclaration);
-  Expect.equals(reflectClass(D), reflectClass(D).originalDeclaration);
-  Expect.equals(reflectClass(E), reflectClass(E).originalDeclaration);
-  Expect.equals(reflectClass(F), reflectClass(F).originalDeclaration);
-  Expect.equals(reflectClass(G), reflectClass(G).originalDeclaration);
-  Expect.equals(reflectClass(H), reflectClass(H).originalDeclaration);
-  Expect.equals(reflectClass(I), reflectClass(I).originalDeclaration);
-
-  // Instantiations.
-  typeParameters(reflect(new A<num>()).type, [#T]);
-  typeParameters(reflect(new B()).type, []);
-  typeParameters(reflect(new C()).type, []);
-  typeParameters(reflect(new D()).type, []);
-  typeParameters(reflect(new E()).type, [#S]);
-  typeParameters(reflect(new F<num>()).type, [#R]);
-  typeParameters(reflect(new G()).type, []);
-  typeParameters(reflect(new H()).type, [#A, #B, #C]);
-  typeParameters(reflect(new I()).type, []);
-
-  var numMirror = reflectClass(num);
-  var dynamicMirror = currentMirrorSystem().dynamicType;
-  typeArguments(reflect(new A<num>()).type, [numMirror]);
-  typeArguments(reflect(new A<dynamic>()).type, [dynamicMirror]);
-  typeArguments(reflect(new A()).type, [dynamicMirror]);
-  typeArguments(reflect(new B()).type, []);
-  typeArguments(reflect(new C()).type, []);
-  typeArguments(reflect(new D()).type, []);
-  typeArguments(reflect(new E<num>()).type, [numMirror]);
-  typeArguments(reflect(new E<dynamic>()).type, [dynamicMirror]);
-  typeArguments(reflect(new E()).type, [dynamicMirror]);
-  typeArguments(reflect(new F<num>()).type, [numMirror]);
-  typeArguments(reflect(new F<dynamic>()).type, [dynamicMirror]);
-  typeArguments(reflect(new F()).type, [dynamicMirror]);
-  typeArguments(reflect(new G()).type, []);
-  typeArguments(reflect(new H<dynamic, num, dynamic>()).type,
-      [dynamicMirror, numMirror, dynamicMirror]);
-  typeArguments(reflect(new I()).type, []);
-
-  Expect.isFalse(reflect(new A<num>()).type.isOriginalDeclaration);
-  Expect.isTrue(reflect(new B()).type.isOriginalDeclaration);
-  Expect.isTrue(reflect(new C()).type.isOriginalDeclaration);
-  Expect.isTrue(reflect(new D()).type.isOriginalDeclaration);
-  Expect.isFalse(reflect(new E<num>()).type.isOriginalDeclaration);
-  Expect.isFalse(reflect(new F<num>()).type.isOriginalDeclaration);
-  Expect.isTrue(reflect(new G()).type.isOriginalDeclaration);
-  Expect.isFalse(reflect(new H()).type.isOriginalDeclaration);
-  Expect.isTrue(reflect(new I()).type.isOriginalDeclaration);
-
-  Expect.equals(
-      reflectClass(A), reflect(new A<num>()).type.originalDeclaration);
-  Expect.equals(reflectClass(B), reflect(new B()).type.originalDeclaration);
-  Expect.equals(reflectClass(C), reflect(new C()).type.originalDeclaration);
-  Expect.equals(reflectClass(D), reflect(new D()).type.originalDeclaration);
-  Expect.equals(
-      reflectClass(E), reflect(new E<num>()).type.originalDeclaration);
-  Expect.equals(
-      reflectClass(F), reflect(new F<num>()).type.originalDeclaration);
-  Expect.equals(reflectClass(G), reflect(new G()).type.originalDeclaration);
-  Expect.equals(reflectClass(H), reflect(new H()).type.originalDeclaration);
-  Expect.equals(reflectClass(I), reflect(new I()).type.originalDeclaration);
-
-  Expect.notEquals(reflect(new A<num>()).type,
-      reflect(new A<num>()).type.originalDeclaration);
-  Expect.equals(
-      reflect(new B()).type, reflect(new B()).type.originalDeclaration);
-  Expect.equals(
-      reflect(new C()).type, reflect(new C()).type.originalDeclaration);
-  Expect.equals(
-      reflect(new D()).type, reflect(new D()).type.originalDeclaration);
-  Expect.notEquals(reflect(new E<num>()).type,
-      reflect(new E<num>()).type.originalDeclaration);
-  Expect.notEquals(reflect(new F<num>()).type,
-      reflect(new F<num>()).type.originalDeclaration);
-  Expect.equals(
-      reflect(new G()).type, reflect(new G()).type.originalDeclaration);
-  Expect.notEquals(
-      reflect(new H()).type, reflect(new H()).type.originalDeclaration);
-  Expect.equals(
-      reflect(new I()).type, reflect(new I()).type.originalDeclaration);
-
-  // Library members are all uninstantaited generics or non-generics.
-  currentMirrorSystem().libraries.values.forEach((libraryMirror) {
-    libraryMirror.declarations.values.forEach((declaration) {
-      if (declaration is ClassMirror) {
-        Expect.isTrue(declaration.isOriginalDeclaration);
-        Expect.equals(declaration, declaration.originalDeclaration);
-      }
-    });
-  });
-
-  Expect.equals(reflectClass(A).typeVariables[0].owner, reflectClass(A));
-  Expect.equals(reflectClass(Z).typeVariables[0].owner, reflectClass(Z));
-  Expect.notEquals(
-      reflectClass(A).typeVariables[0], reflectClass(Z).typeVariables[0]);
-  Expect.equals(
-      reflectClass(A).typeVariables[0], reflectClass(A).typeVariables[0]);
-}
diff --git a/tests/lib/mirrors/get_field_cache_test.dart b/tests/lib/mirrors/get_field_cache_test.dart
deleted file mode 100644
index 4c71dbc..0000000
--- a/tests/lib/mirrors/get_field_cache_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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.
-
-@MirrorsUsed(targets: const ["A", "B"])
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {
-  toString() => "A";
-}
-
-class B {
-  int x = 99;
-  toString() => "B";
-}
-
-void main() {
-  var a = new A();
-  var am = reflect(a);
-  for (int i = 0; i < 10; i++) {
-    // Adds a probe function on the symbol.
-    am.getField(#toString);
-  }
-  var b = new B();
-  var bm = reflect(b);
-  for (int i = 0; i < 10; i++) {
-    // Adds a field-cache on the mirror.
-    bm.getField(#x);
-  }
-  // There is a cache now, but the cache should not contain 'toString' from
-  // JavaScript's Object.prototype.
-  var toString = bm.getField(#toString).reflectee;
-  Expect.equals("B", toString());
-}
diff --git a/tests/lib/mirrors/get_field_static_test.dart b/tests/lib/mirrors/get_field_static_test.dart
deleted file mode 100644
index 4914cb9..0000000
--- a/tests/lib/mirrors/get_field_static_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2014, 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.
-
-@MirrorsUsed(targets: "A")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {
-  static foo(y, [x]) => y;
-  static get bar => 499;
-  static operator$foo([optional = 499]) => optional;
-  static var x = 42;
-  static final y = "toto";
-  static const z = true;
-}
-
-main() {
-  var cm = reflectClass(A);
-  var closure = cm.getField(#foo).reflectee;
-  Expect.equals("b", closure("b"));
-
-  closure = cm.getField(#operator$foo).reflectee;
-  Expect.equals(499, closure());
-
-  Expect.equals(499, cm.getField(#bar).reflectee);
-  Expect.equals(42, cm.getField(#x).reflectee);
-  Expect.equals("toto", cm.getField(#y).reflectee); // //# 00: ok
-  Expect.equals(true, cm.getField(#z).reflectee); //   //# 00: ok
-}
diff --git a/tests/lib/mirrors/get_field_test.dart b/tests/lib/mirrors/get_field_test.dart
deleted file mode 100644
index c733ea0..0000000
--- a/tests/lib/mirrors/get_field_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-@MirrorsUsed(targets: "A")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {
-  foo(y, [x]) => y;
-  operator +(other) => null;
-  get bar => 499;
-  operator$foo([optional = 499]) => optional;
-}
-
-main() {
-  // We are using `getField` to tear off `foo`. We must make sure that all
-  // stub methods are installed.
-  var closure = reflect(new A()).getField(#foo).reflectee;
-  Expect.equals("b", closure("b"));
-
-  closure = reflect(new A()).getField(#operator$foo).reflectee;
-  Expect.equals(499, closure());
-}
diff --git a/tests/lib/mirrors/get_symbol_name_no_such_method_test.dart b/tests/lib/mirrors/get_symbol_name_no_such_method_test.dart
deleted file mode 100644
index 1b60ae5..0000000
--- a/tests/lib/mirrors/get_symbol_name_no_such_method_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// Test that MirrorSystem.getName works correctly on symbols returned from
-/// Invocation.memberName.  This is especially relevant when minifying.
-
-import 'dart:mirrors' show MirrorSystem;
-
-class Foo {
-  String noSuchMethod(Invocation invocation) {
-    return MirrorSystem.getName(invocation.memberName);
-  }
-}
-
-expect(expected, actual) {
-  if (expected != actual) {
-    throw 'Expected: "$expected", but got "$actual"';
-  }
-}
-
-main() {
-  var foo = new Foo();
-  expect('foo', foo.foo);
-  expect('foo', foo.foo());
-  expect('foo', foo.foo(null));
-  expect('foo', foo.foo(null, null));
-  expect('foo', foo.foo(a: null, b: null));
-
-  expect('baz', foo.baz);
-  expect('baz', foo.baz());
-  expect('baz', foo.baz(null));
-  expect('baz', foo.baz(null, null));
-  expect('baz', foo.baz(a: null, b: null));
-}
diff --git a/tests/lib/mirrors/get_symbol_name_test.dart b/tests/lib/mirrors/get_symbol_name_test.dart
deleted file mode 100644
index 68b3cb1..0000000
--- a/tests/lib/mirrors/get_symbol_name_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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:mirrors' show MirrorSystem;
-
-expect(expected, actual) {
-  if (expected != actual) {
-    throw 'Expected: "$expected", but got "$actual"';
-  }
-}
-
-main() {
-  expect('fisk', MirrorSystem.getName(const Symbol('fisk')));
-  expect('fisk', MirrorSystem.getName(new Symbol('fisk')));
-}
diff --git a/tests/lib/mirrors/globalized_closures2_test.dart b/tests/lib/mirrors/globalized_closures2_test.dart
deleted file mode 100644
index d4927c9..0000000
--- a/tests/lib/mirrors/globalized_closures2_test.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Dart2js crashed on this example. It globalized both closures and created
-// top-level classes for closures (here the globalized_closure{2}). There was a
-// name-clash (both being named "main_closure") which led to a crash.
-
-library main;
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) {
-    return confuse(() => print(42));
-  }
-  return x;
-}
-
-main() {
-  var globalized_closure = confuse(() => 499);
-  var globalized_closure2 = confuse(() => 99);
-  globalized_closure();
-  globalized_closure2();
-  final ms = currentMirrorSystem();
-  var lib = ms.findLibrary(#main);
-  var collectedParents = [];
-  var classes = lib.declarations.values;
-  for (var c in classes) {
-    if (c is ClassMirror && c.superclass != null) {
-      collectedParents.add(MirrorSystem.getName(c.superclass.simpleName));
-    }
-  }
-  Expect.isTrue(collectedParents.isEmpty); //  //# 00: ok
-}
diff --git a/tests/lib/mirrors/globalized_closures_test.dart b/tests/lib/mirrors/globalized_closures_test.dart
deleted file mode 100644
index 93b0bf0..0000000
--- a/tests/lib/mirrors/globalized_closures_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Dart2js crashed on this example. It globalized closures and created
-// top-level classes for closures (here the globalized_closure). There was a
-// name-clash with the global "main_closure" class which led to a crash.
-
-library main;
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class main_closure {}
-
-confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) return confuse(() => 42);
-  return x;
-}
-
-main() {
-  new main_closure();
-  var globalized_closure = confuse(() => 499);
-  globalized_closure();
-  final ms = currentMirrorSystem();
-  var lib = ms.findLibrary(#main);
-  var collectedParents = [];
-  var classes = lib.declarations.values;
-  for (var c in classes) {
-    if (c is ClassMirror && c.superclass != null) {
-      collectedParents.add(MirrorSystem.getName(c.superclass.simpleName));
-    }
-  }
-  Expect.listEquals(["Object"], collectedParents); //  //# 00: ok
-}
diff --git a/tests/lib/mirrors/hierarchy_invariants_test.dart b/tests/lib/mirrors/hierarchy_invariants_test.dart
deleted file mode 100644
index 9adc833..0000000
--- a/tests/lib/mirrors/hierarchy_invariants_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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 test.hierarchy_invariants_test;
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-isAnonymousMixinApplication(classMirror) {
-  return MirrorSystem.getName(classMirror.simpleName).contains(' with ');
-}
-
-checkClass(classMirror) {
-  Expect.isTrue(classMirror.simpleName is Symbol);
-  Expect.notEquals(null, classMirror.owner);
-  Expect.isTrue(classMirror.owner is LibraryMirror);
-  if (!isAnonymousMixinApplication(classMirror)) {
-    Expect.equals(classMirror.originalDeclaration,
-        classMirror.owner.declarations[classMirror.simpleName]);
-  } else {
-    Expect.isNull(classMirror.owner.declarations[classMirror.simpleName]);
-  }
-  Expect.isTrue(classMirror.superinterfaces is List);
-  if (classMirror.superclass == null) {
-    Expect.isTrue(classMirror == reflectClass(Object) ||
-        // Type FutureOr is mapped to dynamic in the VM.
-        classMirror.toString() == "ClassMirror on 'FutureOr'");
-  } else {
-    checkClass(classMirror.superclass);
-  }
-}
-
-checkLibrary(libraryMirror) {
-  libraryMirror.declarations.values
-      .where((d) => d is ClassMirror)
-      .forEach(checkClass);
-}
-
-main() {
-  currentMirrorSystem().libraries.values.forEach(checkLibrary);
-}
diff --git a/tests/lib/mirrors/hot_get_field_test.dart b/tests/lib/mirrors/hot_get_field_test.dart
deleted file mode 100644
index d168b10..0000000
--- a/tests/lib/mirrors/hot_get_field_test.dart
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (c) 2014, 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 test.hot_get_field;
-
-@MirrorsUsed(targets: "test.hot_get_field")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class C {
-  var field;
-  var _field;
-  operator +(other) => field + other;
-}
-
-const int optimizationThreshold = 20;
-
-testPublic() {
-  var c = new C();
-  var im = reflect(c);
-
-  for (int i = 0; i < (2 * optimizationThreshold); i++) {
-    c.field = i;
-    Expect.equals(i, im.getField(#field).reflectee);
-  }
-}
-
-testPrivate() {
-  var c = new C();
-  var im = reflect(c);
-
-  for (int i = 0; i < (2 * optimizationThreshold); i++) {
-    c._field = i;
-    Expect.equals(i, im.getField(#_field).reflectee);
-  }
-}
-
-testPrivateWrongLibrary() {
-  var c = new C();
-  var im = reflect(c);
-  var selector = MirrorSystem.getSymbol('_field', reflectClass(Mirror).owner);
-
-  for (int i = 0; i < (2 * optimizationThreshold); i++) {
-    Expect.throws(() => im.getField(selector), (e) => e is NoSuchMethodError);
-  }
-}
-
-testOperator() {
-  var plus = const Symbol("+");
-  var c = new C();
-  var im = reflect(c);
-
-  for (int i = 0; i < (2 * optimizationThreshold); i++) {
-    c.field = i;
-    var closurizedPlus = im.getField(plus).reflectee;
-    Expect.isTrue(closurizedPlus is Function);
-    Expect.equals(2 * i, closurizedPlus(i));
-  }
-}
-
-main() {
-  testPublic();
-  testPrivate();
-  testPrivateWrongLibrary();
-  testOperator();
-}
diff --git a/tests/lib/mirrors/hot_set_field_test.dart b/tests/lib/mirrors/hot_set_field_test.dart
deleted file mode 100644
index 6b1c70c..0000000
--- a/tests/lib/mirrors/hot_set_field_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2014, 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 test.hot_set_field;
-
-@MirrorsUsed(targets: "test.hot_set_field")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class C {
-  var field;
-  var _field;
-}
-
-const int optimizationThreshold = 20;
-
-testPublic() {
-  var c = new C();
-  var im = reflect(c);
-
-  for (int i = 0; i < (2 * optimizationThreshold); i++) {
-    im.setField(#field, i);
-    Expect.equals(i, c.field);
-  }
-}
-
-testPrivate() {
-  var c = new C();
-  var im = reflect(c);
-
-  for (int i = 0; i < (2 * optimizationThreshold); i++) {
-    im.setField(#_field, i);
-    Expect.equals(i, c._field);
-  }
-}
-
-testPrivateWrongLibrary() {
-  var c = new C();
-  var im = reflect(c);
-  var selector = MirrorSystem.getSymbol('_field', reflectClass(Mirror).owner);
-
-  for (int i = 0; i < (2 * optimizationThreshold); i++) {
-    Expect.throws(
-        () => im.setField(selector, i), (e) => e is NoSuchMethodError);
-  }
-}
-
-main() {
-  testPublic();
-  testPrivate();
-  testPrivateWrongLibrary();
-}
diff --git a/tests/lib/mirrors/immutable_collections_test.dart b/tests/lib/mirrors/immutable_collections_test.dart
deleted file mode 100644
index 93eafbd..0000000
--- a/tests/lib/mirrors/immutable_collections_test.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2013, 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 test.immutable_collections;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-someException(e) => e is Exception || e is Error;
-
-checkList(Iterable l, String reason) {
-  Expect.throws(() => l[0] = 'value', someException, reason);
-  Expect.throws(() => l.add('value'), someException, reason);
-  Expect.throws(() => l.clear(), someException, reason);
-}
-
-checkMap(Map m, String reason) {
-  Expect.throws(() => m[#key] = 'value', someException, reason);
-  checkList(m.keys, '$reason keys');
-  checkList(m.values, '$reason values');
-}
-
-checkVariable(VariableMirror vm) {
-  checkList(vm.metadata, 'VariableMirror.metadata');
-}
-
-checkTypeVariable(TypeVariableMirror tvm) {
-  checkList(tvm.metadata, 'TypeVariableMirror.metadata');
-}
-
-checkParameter(ParameterMirror pm) {
-  checkList(pm.metadata, 'ParameterMirror.metadata');
-}
-
-checkMethod(MethodMirror mm) {
-  checkList(mm.parameters, 'MethodMirror.parameters');
-  checkList(mm.metadata, 'MethodMirror.metadata');
-
-  mm.parameters.forEach(checkParameter);
-}
-
-checkClass(ClassMirror cm) {
-  checkMap(cm.declarations, 'ClassMirror.declarations');
-  checkMap(cm.instanceMembers, 'ClassMirror.instanceMembers');
-  checkMap(cm.staticMembers, 'ClassMirror.staticMembers');
-  checkList(cm.metadata, 'ClassMirror.metadata');
-  checkList(cm.superinterfaces, 'ClassMirror.superinterfaces');
-  checkList(cm.typeArguments, 'ClassMirror.typeArguments');
-  checkList(cm.typeVariables, 'ClassMirror.typeVariables');
-
-  cm.declarations.values.forEach(checkDeclaration);
-  cm.instanceMembers.values.forEach(checkDeclaration);
-  cm.staticMembers.values.forEach(checkDeclaration);
-  cm.typeVariables.forEach(checkTypeVariable);
-}
-
-checkType(TypeMirror tm) {
-  checkList(tm.metadata, 'TypeMirror.metadata');
-}
-
-checkDeclaration(DeclarationMirror dm) {
-  if (dm is MethodMirror) checkMethod(dm);
-  if (dm is ClassMirror) checkClass(dm);
-  if (dm is TypeMirror) checkType(dm);
-  if (dm is VariableMirror) checkVariable(dm);
-  if (dm is TypeVariableMirror) checkTypeVariable(dm);
-}
-
-checkLibrary(LibraryMirror lm) {
-  checkMap(lm.declarations, 'LibraryMirror.declarations');
-  checkList(lm.metadata, 'LibraryMirror.metadata');
-
-  lm.declarations.values.forEach(checkDeclaration);
-}
-
-main() {
-  currentMirrorSystem().libraries.values.forEach(checkLibrary);
-  checkType(currentMirrorSystem().voidType);
-  checkType(currentMirrorSystem().dynamicType);
-}
diff --git a/tests/lib/mirrors/inference_and_no_such_method_test.dart b/tests/lib/mirrors/inference_and_no_such_method_test.dart
deleted file mode 100644
index 3274d11..0000000
--- a/tests/lib/mirrors/inference_and_no_such_method_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that did type inferencing on parameters
-// whose type may change at runtime due to an invocation through
-// [InstanceMirror.delegate].
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(im) {
-    reflect(new B()).delegate(im);
-  }
-}
-
-class B {
-  foo(a) => a + 42;
-}
-
-main() {
-  Expect.equals(42, new B().foo(0));
-  Expect.throws(
-      () => new A().foo('foo'), (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/lib/mirrors/inherit_field_test.dart b/tests/lib/mirrors/inherit_field_test.dart
deleted file mode 100644
index 9a6956a..0000000
--- a/tests/lib/mirrors/inherit_field_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test inherited fields.
-
-library test.inherit_field_test;
-
-@MirrorsUsed(targets: "test.inherit_field_test")
-import 'dart:mirrors';
-
-import 'stringify.dart';
-
-class Foo {
-  var field;
-}
-
-class Bar extends Foo {}
-
-void main() {
-  expect(
-      'Variable(s(field) in s(Foo))', reflectClass(Foo).declarations[#field]);
-  expect('<null>', reflectClass(Bar).declarations[#field]);
-}
diff --git a/tests/lib/mirrors/inherited_metadata_test.dart b/tests/lib/mirrors/inherited_metadata_test.dart
deleted file mode 100644
index db7b7de..0000000
--- a/tests/lib/mirrors/inherited_metadata_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, 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 test.mirrors;
-
-@MirrorsUsed(targets: "test.mirrors")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class RemoteClass {
-  final String name;
-  const RemoteClass([this.name]);
-}
-
-class A {}
-
-@RemoteClass("ASF")
-class B extends A {}
-
-class C extends B {}
-
-void main() {
-  bool foundB = false;
-
-  MirrorSystem mirrorSystem = currentMirrorSystem();
-  mirrorSystem.libraries.forEach((lk, l) {
-    l.declarations.forEach((dk, d) {
-      if (d is ClassMirror) {
-        d.metadata.forEach((md) {
-          InstanceMirror metadata = md as InstanceMirror;
-          // Metadata must not be inherited.
-          if (metadata.type == reflectClass(RemoteClass)) {
-            Expect.isFalse(foundB);
-            Expect.equals(#B, d.simpleName);
-            foundB = true;
-          }
-        });
-      }
-    });
-  });
-
-  Expect.isTrue(foundB);
-}
diff --git a/tests/lib/mirrors/initializing_formals_test.dart b/tests/lib/mirrors/initializing_formals_test.dart
deleted file mode 100644
index f555e95..0000000
--- a/tests/lib/mirrors/initializing_formals_test.dart
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright (c) 2013, 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 test.initializing_formals;
-
-@MirrorsUsed(targets: "test.initializing_formals")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class Class<T> {
-  int intField;
-  bool boolField;
-  String stringField;
-  T tField;
-  dynamic _privateField;
-
-  Class.nongeneric(this.intField);
-  Class.named({this.boolField});
-  Class.optPos([this.stringField = 'default']);
-  Class.generic(this.tField);
-  Class.private(this._privateField);
-
-  Class.explicitType(num this.intField);
-  Class.withVar(var this.intField);
-  Class.withDynamic(dynamic this.intField);
-}
-
-class Constant {
-  final num value;
-  const Constant(this.value);
-  const Constant.marked(final this.value);
-}
-
-main() {
-  MethodMirror mm;
-  ParameterMirror pm;
-
-  mm = reflectClass(Class).declarations[#Class.nongeneric];
-  pm = mm.parameters.single;
-  Expect.equals(#intField, pm.simpleName);
-  Expect.equals(reflectClass(int), pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Class).declarations[#Class.named];
-  pm = mm.parameters.single;
-  Expect.equals(#boolField, pm.simpleName);
-  Expect.equals(reflectClass(bool), pm.type);
-  Expect.isTrue(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isTrue(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Class).declarations[#Class.optPos];
-  pm = mm.parameters.single;
-  Expect.equals(#stringField, pm.simpleName);
-  Expect.equals(reflectClass(String), pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isTrue(pm.isOptional); // //# 01: ok
-  Expect.isTrue(pm.hasDefaultValue); // //# 01: ok
-  Expect.equals('default', pm.defaultValue.reflectee); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Class).declarations[#Class.generic];
-  pm = mm.parameters.single;
-  Expect.equals(#tField, pm.simpleName);
-  Expect.equals(reflectClass(Class).typeVariables.single, pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Class).declarations[#Class.private];
-  pm = mm.parameters.single;
-  Expect.equals(#_privateField, pm.simpleName); // //# 03: ok
-  Expect.equals(currentMirrorSystem().dynamicType, pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isTrue(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Class).declarations[#Class.explicitType];
-  pm = mm.parameters.single;
-  Expect.equals(#intField, pm.simpleName);
-  Expect.equals(reflectClass(num), pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Class).declarations[#Class.withVar];
-  pm = mm.parameters.single;
-  Expect.equals(#intField, pm.simpleName);
-  Expect.equals(reflectClass(int), pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Class).declarations[#Class.withDynamic];
-  pm = mm.parameters.single;
-  Expect.equals(#intField, pm.simpleName);
-  Expect.equals(currentMirrorSystem().dynamicType, pm.type); // N.B.
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal); // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Constant).declarations[#Constant];
-  pm = mm.parameters.single;
-  Expect.equals(#value, pm.simpleName);
-  Expect.equals(reflectClass(num), pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isFalse(pm.isFinal);  // N.B. // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-
-  mm = reflectClass(Constant).declarations[#Constant.marked];
-  pm = mm.parameters.single;
-  Expect.equals(#value, pm.simpleName);
-  Expect.equals(reflectClass(num), pm.type);
-  Expect.isFalse(pm.isNamed); // //# 01: ok
-  Expect.isTrue(pm.isFinal);  // N.B. // //# 01: ok
-  Expect.isFalse(pm.isOptional); // //# 01: ok
-  Expect.isFalse(pm.hasDefaultValue); // //# 01: ok
-  Expect.isFalse(pm.isPrivate);
-  Expect.isFalse(pm.isStatic);
-  Expect.isFalse(pm.isTopLevel);
-}
diff --git a/tests/lib/mirrors/instance_members_easier_test.dart b/tests/lib/mirrors/instance_members_easier_test.dart
deleted file mode 100644
index 4a9fe66..0000000
--- a/tests/lib/mirrors/instance_members_easier_test.dart
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (c) 2013, 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 test.instance_members;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'declarations_model_easier.dart' as declarations_model;
-
-selectKeys(map, predicate) {
-  return map.keys.where((key) => predicate(map[key]));
-}
-
-class EasierSuperclass {
-  shuper() {}
-  static staticShuper() {}
-}
-
-class EasierMixin {
-  mixin() {}
-  static staticMixin() {}
-}
-
-class EasierMixinApplication extends EasierSuperclass with EasierMixin {
-  application() {}
-  static staticApplication() {}
-}
-
-class Derived extends EasierMixinApplication {
-  derived() {}
-  static staticDerived() {}
-}
-
-main() {
-  ClassMirror cm = reflectClass(declarations_model.Class);
-
-  Expect.setEquals([
-    #+,
-    #instanceVariable,
-    const Symbol('instanceVariable='),
-    #instanceGetter,
-    const Symbol('instanceSetter='),
-    #instanceMethod,
-    #-,
-    #inheritedInstanceVariable,
-    const Symbol('inheritedInstanceVariable='),
-    #inheritedInstanceGetter,
-    const Symbol('inheritedInstanceSetter='),
-    #inheritedInstanceMethod,
-    #hashCode,
-    #runtimeType,
-    #==,
-    #noSuchMethod,
-    #toString
-  ], selectKeys(cm.instanceMembers, (dm) => !dm.isPrivate));
-  // Filter out private to avoid implementation-specific members of Object.
-
-  Expect.setEquals([
-    #instanceVariable,
-    const Symbol('instanceVariable='),
-    #inheritedInstanceVariable,
-    const Symbol('inheritedInstanceVariable=')
-  ], selectKeys(cm.instanceMembers, (dm) => !dm.isPrivate && dm.isSynthetic));
-
-  cm = reflectClass(Derived);
-  Expect.setEquals([
-    #derived,
-    #shuper,
-    #mixin,
-    #application,
-    #hashCode,
-    #runtimeType,
-    #==,
-    #noSuchMethod,
-    #toString
-  ], selectKeys(cm.instanceMembers, (dm) => !dm.isPrivate));
-
-  cm = reflectClass(EasierMixinApplication);
-  Expect.setEquals([
-    #shuper,
-    #mixin,
-    #application,
-    #hashCode,
-    #runtimeType,
-    #==,
-    #noSuchMethod,
-    #toString
-  ], selectKeys(cm.instanceMembers, (dm) => !dm.isPrivate));
-}
diff --git a/tests/lib/mirrors/instance_members_test.dart b/tests/lib/mirrors/instance_members_test.dart
deleted file mode 100644
index 8ec091f..0000000
--- a/tests/lib/mirrors/instance_members_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2013, 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 test.instance_members;
-
-@MirrorsUsed(targets: "test.instance_members")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'declarations_model.dart' as declarations_model;
-
-selectKeys(map, predicate) {
-  return map.keys.where((key) => predicate(map[key]));
-}
-
-main() {
-  ClassMirror cm = reflectClass(declarations_model.Class);
-
-  Expect.setEquals([
-    #+,
-    #instanceVariable,
-    const Symbol('instanceVariable='),
-    #instanceGetter,
-    const Symbol('instanceSetter='),
-    #instanceMethod,
-    #-,
-    #inheritedInstanceVariable,
-    const Symbol('inheritedInstanceVariable='),
-    #inheritedInstanceGetter,
-    const Symbol('inheritedInstanceSetter='),
-    #inheritedInstanceMethod,
-    #*,
-    #mixinInstanceVariable,
-    const Symbol('mixinInstanceVariable='),
-    #mixinInstanceGetter,
-    const Symbol('mixinInstanceSetter='),
-    #mixinInstanceMethod,
-    #hashCode,
-    #runtimeType,
-    #==,
-    #noSuchMethod,
-    #toString
-  ], selectKeys(cm.instanceMembers, (dm) => !dm.isPrivate));
-  // Filter out private to avoid implementation-specific members of Object.
-
-  Expect.setEquals([
-    #instanceVariable,
-    const Symbol('instanceVariable='),
-    #inheritedInstanceVariable,
-    const Symbol('inheritedInstanceVariable='),
-    #mixinInstanceVariable,
-    const Symbol('mixinInstanceVariable=')
-  ], selectKeys(cm.instanceMembers, (dm) => !dm.isPrivate && dm.isSynthetic));
-}
diff --git a/tests/lib/mirrors/instance_members_unimplemented_interface_test.dart b/tests/lib/mirrors/instance_members_unimplemented_interface_test.dart
deleted file mode 100644
index a0ed4d6..0000000
--- a/tests/lib/mirrors/instance_members_unimplemented_interface_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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 test.instance_members_unimplemented_interface;
-
-@MirrorsUsed(targets: "test.instance_members_unimplemented_interface")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class I {
-  implementMe() {}
-}
-
-abstract class C implements I {}
-
-selectKeys(map, predicate) {
-  return map.keys.where((key) => predicate(map[key]));
-}
-
-main() {
-  ClassMirror cm = reflectClass(C);
-
-  // N.B.: Does not include #implementMe.
-  Expect.setEquals([#hashCode, #runtimeType, #==, #noSuchMethod, #toString],
-      selectKeys(cm.instanceMembers, (dm) => !dm.isPrivate));
-  // Filter out private to avoid implementation-specific members of Object.
-}
diff --git a/tests/lib/mirrors/instance_members_with_override_test.dart b/tests/lib/mirrors/instance_members_with_override_test.dart
deleted file mode 100644
index fb9289b..0000000
--- a/tests/lib/mirrors/instance_members_with_override_test.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright (c) 2013, 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 test.instance_members_with_override;
-
-@MirrorsUsed(targets: "test.instance_members_with_override")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class S {
-  var field;
-  final finalField = 0;
-  method() {}
-  get getter {}
-  set setter(x) {}
-  notOverridden() {}
-}
-
-abstract class C extends S {
-  var field;
-  final finalField = 0;
-  method() {}
-  get getter {}
-  set setter(x) {}
-  /* abstract */ notOverridden();
-}
-
-selectKeys(map, predicate) {
-  return map.keys.where((key) => predicate(map[key]));
-}
-
-main() {
-  ClassMirror sMirror = reflectClass(S);
-  ClassMirror cMirror = reflectClass(C);
-
-  Expect.setEquals([
-    #field,
-    const Symbol('field='),
-    #finalField,
-    #method,
-    #getter,
-    const Symbol('setter='),
-    #notOverridden,
-    #hashCode,
-    #runtimeType,
-    #==,
-    #noSuchMethod,
-    #toString
-  ], selectKeys(sMirror.instanceMembers, (dm) => !dm.isPrivate));
-  // Filter out private to avoid implementation-specific members of Object.
-
-  Expect.equals(sMirror, sMirror.instanceMembers[#field].owner);
-  Expect.equals(sMirror, sMirror.instanceMembers[const Symbol('field=')].owner);
-  Expect.equals(sMirror, sMirror.instanceMembers[#finalField].owner);
-  Expect.equals(sMirror, sMirror.instanceMembers[#method].owner);
-  Expect.equals(sMirror, sMirror.instanceMembers[#getter].owner);
-  Expect.equals(
-      sMirror, sMirror.instanceMembers[const Symbol('setter=')].owner);
-
-  Expect.setEquals([
-    #field,
-    const Symbol('field='),
-    #finalField,
-    #method,
-    #getter,
-    const Symbol('setter='),
-    #notOverridden,
-    #hashCode,
-    #runtimeType,
-    #==,
-    #noSuchMethod,
-    #toString
-  ], selectKeys(cMirror.instanceMembers, (dm) => !dm.isPrivate));
-  // Filter out private to avoid implementation-specific members of Object.
-
-  Expect.equals(cMirror, cMirror.instanceMembers[#field].owner);
-  Expect.equals(cMirror, cMirror.instanceMembers[const Symbol('field=')].owner);
-  Expect.equals(cMirror, cMirror.instanceMembers[#finalField].owner);
-  Expect.equals(cMirror, cMirror.instanceMembers[#method].owner);
-  Expect.equals(cMirror, cMirror.instanceMembers[#getter].owner);
-  Expect.equals(
-      cMirror, cMirror.instanceMembers[const Symbol('setter=')].owner);
-
-  Expect.equals(sMirror, sMirror.instanceMembers[#notOverridden].owner);
-  Expect.equals(sMirror, cMirror.instanceMembers[#notOverridden].owner);
-}
diff --git a/tests/lib/mirrors/instantiate_abstract_class_test.dart b/tests/lib/mirrors/instantiate_abstract_class_test.dart
deleted file mode 100644
index 125d064..0000000
--- a/tests/lib/mirrors/instantiate_abstract_class_test.dart
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2013, 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 test.instantiate_abstract_class;
-
-@MirrorsUsed(targets: const ["dart.core", AbstractClass])
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-assertInstanitationErrorOnGenerativeConstructors(classMirror) {
-  classMirror.declarations.values.forEach((decl) {
-    if (decl is! MethodMirror) return;
-    if (!decl.isGenerativeConstructor) return;
-    var args = new List(decl.parameters.length);
-    Expect.throws(
-        () => classMirror.newInstance(decl.constructorName, args),
-        (e) => e is AbstractClassInstantiationError,
-        '${decl.qualifiedName} should have failed');
-  });
-}
-
-runFactoryConstructors(classMirror) {
-  classMirror.declarations.values.forEach((decl) {
-    if (decl is! MethodMirror) return;
-    if (!decl.isFactoryConstructor) return;
-    var args = new List(decl.parameters.length);
-    classMirror.newInstance(decl.constructorName, args); // Should not throw.
-  });
-}
-
-abstract class AbstractClass {
-  AbstractClass();
-  AbstractClass.named();
-  factory AbstractClass.named2() => new ConcreteClass();
-}
-
-class ConcreteClass implements AbstractClass {}
-
-main() {
-  assertInstanitationErrorOnGenerativeConstructors(reflectType(num));
-  assertInstanitationErrorOnGenerativeConstructors(reflectType(double));
-  assertInstanitationErrorOnGenerativeConstructors(reflectType(StackTrace));
-
-  assertInstanitationErrorOnGenerativeConstructors(reflectType(AbstractClass));
-  runFactoryConstructors(reflectType(AbstractClass));
-}
diff --git a/tests/lib/mirrors/intercepted_cache_test.dart b/tests/lib/mirrors/intercepted_cache_test.dart
deleted file mode 100644
index 3550a02..0000000
--- a/tests/lib/mirrors/intercepted_cache_test.dart
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// This is a test for a problem in how dart2js cached InstanceMirror.invoke,
-// etc. The test is using getField, as invoke, setField, and getField all share
-// the same caching.
-
-library lib;
-
-@MirrorsUsed(targets: const ["lib", "dart.core"])
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Foo {
-  Foo(this.length);
-  int length;
-}
-
-main() {
-  Expect.equals(1, reflect(new Foo(1)).getField(#length).reflectee);
-  Expect.equals(2, reflect(new Foo(2)).getField(#length).reflectee);
-  Expect.equals(0, reflect([]).getField(#length).reflectee);
-}
diff --git a/tests/lib/mirrors/intercepted_class_test.dart b/tests/lib/mirrors/intercepted_class_test.dart
deleted file mode 100644
index 0f9e509..0000000
--- a/tests/lib/mirrors/intercepted_class_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Ensure that classes handled specially by dart2js can be reflected on.
-
-library test.intercepted_class_test;
-
-@MirrorsUsed(targets: "dart.core")
-import 'dart:mirrors';
-
-import 'stringify.dart' show stringify, expect;
-
-checkClassMirrorMethods(ClassMirror cls) {
-  var variables = new Map();
-  cls.declarations.forEach((Symbol key, DeclarationMirror value) {
-    if (value is VariableMirror && !value.isStatic && !value.isPrivate) {
-      variables[key] = value;
-    }
-  });
-  expect('{}', variables);
-}
-
-checkClassMirror(ClassMirror cls, String name) {
-  expect('s($name)', cls.simpleName);
-  checkClassMirrorMethods(cls);
-}
-
-main() {
-  checkClassMirror(reflectClass(String), 'String');
-  checkClassMirror(reflectClass(int), 'int');
-  checkClassMirror(reflectClass(double), 'double');
-  checkClassMirror(reflectClass(num), 'num');
-  checkClassMirror(reflectClass(bool), 'bool');
-  checkClassMirror(reflectClass(List), 'List');
-}
diff --git a/tests/lib/mirrors/intercepted_object_test.dart b/tests/lib/mirrors/intercepted_object_test.dart
deleted file mode 100644
index ccbffa5..0000000
--- a/tests/lib/mirrors/intercepted_object_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Ensure that objects handled specially by dart2js can be reflected on.
-
-library test.intercepted_object_test;
-
-import 'dart:mirrors';
-
-import 'stringify.dart' show stringify, expect;
-
-import 'intercepted_class_test.dart' show checkClassMirrorMethods;
-
-checkImplements(object, String name) {
-  ClassMirror cls = reflect(object).type;
-  checkClassMirrorMethods(cls);
-
-  // The VM implements List via a mixin, so check for that.
-  if (cls.superinterfaces.isEmpty && object is List) {
-    cls = cls.superclass.superclass.mixin;
-  }
-
-  // The VM implements String through an intermediate abstract
-  // class.
-  if (cls.superinterfaces.isEmpty && object is String) {
-    cls = cls.superclass;
-  }
-
-  // The VM implements int through an intermediate abstract
-  // class.
-  if (object is int &&
-      stringify(cls.superclass.simpleName) == 's(_IntegerImplementation)') {
-    cls = cls.superclass;
-  }
-
-  List<ClassMirror> superinterfaces = cls.superinterfaces;
-  String symName = 's($name)';
-  for (ClassMirror superinterface in superinterfaces) {
-    print(superinterface.simpleName);
-    if (symName == stringify(superinterface.simpleName)) {
-      checkClassMirrorMethods(superinterface);
-      return;
-    }
-  }
-
-  // A class implements itself, even if not explicitly declared.
-  if (symName == stringify(cls.simpleName)) {
-    checkClassMirrorMethods(cls);
-    return;
-  }
-
-  // TODO(floitsch): use correct fail
-  expect(name, "super interface not found");
-}
-
-main() {
-  checkImplements('', 'String');
-  checkImplements(1, 'int');
-  checkImplements(1.5, 'double');
-  checkImplements(true, 'bool');
-  checkImplements(false, 'bool');
-  checkImplements([], 'List');
-}
diff --git a/tests/lib/mirrors/intercepted_superclass_test.dart b/tests/lib/mirrors/intercepted_superclass_test.dart
deleted file mode 100644
index a7f4858..0000000
--- a/tests/lib/mirrors/intercepted_superclass_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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 test.intercepted_superclass_test;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-check(ClassMirror cm) {
-  Expect.isTrue(cm is ClassMirror);
-  Expect.isNotNull(cm);
-}
-
-main() {
-  check(reflect('').type.superclass);
-  check(reflect(1).type.superclass);
-  check(reflect(1.5).type.superclass);
-  check(reflect(true).type.superclass);
-  check(reflect(false).type.superclass);
-  check(reflect([]).type.superclass);
-
-  check(reflectClass(String).superclass);
-  check(reflectClass(int).superclass);
-  check(reflectClass(double).superclass);
-  check(reflectClass(num).superclass);
-  check(reflectClass(bool).superclass);
-  check(reflectClass(List).superclass);
-}
diff --git a/tests/lib/mirrors/invocation_cache_test.dart b/tests/lib/mirrors/invocation_cache_test.dart
deleted file mode 100644
index 0d9624a..0000000
--- a/tests/lib/mirrors/invocation_cache_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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.
-
-@MirrorsUsed(targets: const ["A"])
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {
-  toString() => "A";
-}
-
-main() {
-  // The invocation cache must not find the 'toString' from JavaScript's
-  // Object.prototype.
-  var toString = reflect(new A()).getField(#toString).reflectee;
-  Expect.equals("A", Function.apply(toString, [], {}));
-}
diff --git a/tests/lib/mirrors/invocation_fuzz_test.dart b/tests/lib/mirrors/invocation_fuzz_test.dart
deleted file mode 100644
index 2feb0f4..0000000
--- a/tests/lib/mirrors/invocation_fuzz_test.dart
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// This test reflectively enumerates all the methods in the system and tries to
-// invoke them with various basic values (nulls, ints, etc). This may result in
-// Dart exceptions or hangs, but should never result in crashes or JavaScript
-// exceptions.
-
-library test.invoke_natives;
-
-import 'dart:mirrors';
-import 'dart:async';
-
-// Methods to be skipped, by qualified name.
-var blacklist = [
-  // Don't recurse on this test.
-  'test.invoke_natives',
-
-  // Don't exit the test pre-maturely.
-  'dart.io.exit',
-
-  // Don't change the exit code, which may fool the test harness.
-  'dart.io.exitCode',
-
-  // Don't kill random other processes.
-  'dart.io.Process.killPid',
-
-  // Don't break into the debugger.
-  'dart.developer.debugger',
-
-  // Don't run blocking io calls.
-  new RegExp(r".*Sync$"),
-
-  // These prevent the test from exiting.
-  'dart.io.sleep',
-  'dart._http.HttpServer.HttpServer.listenOn',
-
-  // These either cause the VM to segfault or throw uncatchable API errors.
-  // TODO(15274): Fix them and remove from blacklist.
-  'dart.io.SystemEncoding.decode', // Windows only
-  'dart.io.SystemEncoding.encode', // Windows only
-
-  // These construct an object with an uninitialized native field.
-  // TODO(23869): We could make this safer, but making the failure non-fatal
-  //   would we worthless aside from this test.
-  'dart.io.X509Certificate.X509Certificate._',
-  'dart.io._X509Impl._X509Impl',
-
-  // Don't call private methods in dart.async as they may circumvent the zoned
-  // error handling below.
-  new RegExp(r"^dart\.async\._.*$"),
-
-  'dart._internal.fatal',
-];
-
-bool isBlacklisted(Symbol qualifiedSymbol) {
-  var qualifiedString = MirrorSystem.getName(qualifiedSymbol);
-  for (var pattern in blacklist) {
-    if (qualifiedString.contains(pattern)) {
-      print('Skipping $qualifiedString');
-      return true;
-    }
-  }
-  return false;
-}
-
-class Task {
-  var name;
-  var action;
-}
-
-var queue = new List();
-
-checkMethod(MethodMirror m, ObjectMirror target, [origin]) {
-  if (isBlacklisted(m.qualifiedName)) return;
-
-  var task = new Task();
-  task.name = '${MirrorSystem.getName(m.qualifiedName)} from $origin';
-
-  if (m.isRegularMethod) {
-    task.action = () => target.invoke(
-        m.simpleName, new List.filled(m.parameters.length, fuzzArgument));
-  } else if (m.isGetter) {
-    task.action = () => target.getField(m.simpleName);
-  } else if (m.isSetter) {
-    task.action = () => target.setField(m.simpleName, null);
-  } else if (m.isConstructor) {
-    return;
-  } else {
-    throw "Unexpected method kind";
-  }
-
-  queue.add(task);
-}
-
-checkField(VariableMirror v, ObjectMirror target, [origin]) {
-  if (isBlacklisted(v.qualifiedName)) return;
-
-  var task = new Task();
-  task.name = '${MirrorSystem.getName(v.qualifiedName)} from $origin';
-
-  task.action = () => target.getField(v.simpleName);
-
-  queue.add(task);
-}
-
-checkInstance(instanceMirror, origin) {
-  ClassMirror klass = instanceMirror.type;
-  while (klass != null) {
-    instanceMirror.type.declarations.values
-        .where((d) => d is MethodMirror && !d.isStatic)
-        .forEach((m) => checkMethod(m, instanceMirror, origin));
-    instanceMirror.type.declarations.values
-        .where((d) => d is VariableMirror)
-        .forEach((v) => checkField(v, instanceMirror, origin));
-    klass = klass.superclass;
-  }
-}
-
-checkClass(classMirror) {
-  classMirror.declarations.values
-      .where((d) => d is MethodMirror && d.isStatic)
-      .forEach((m) => checkMethod(m, classMirror));
-
-  classMirror.declarations.values
-      .where((d) => d is MethodMirror && d.isConstructor)
-      .forEach((m) {
-    if (isBlacklisted(m.qualifiedName)) return;
-    var task = new Task();
-    task.name = MirrorSystem.getName(m.qualifiedName);
-
-    task.action = () {
-      var instance = classMirror.newInstance(m.constructorName,
-          new List.filled(m.parameters.length, fuzzArgument));
-      checkInstance(instance, task.name);
-    };
-    queue.add(task);
-  });
-}
-
-checkLibrary(libraryMirror) {
-  print(libraryMirror.simpleName);
-  if (isBlacklisted(libraryMirror.qualifiedName)) return;
-
-  libraryMirror.declarations.values
-      .where((d) => d is ClassMirror)
-      .forEach(checkClass);
-
-  libraryMirror.declarations.values
-      .where((d) => d is MethodMirror)
-      .forEach((m) => checkMethod(m, libraryMirror));
-}
-
-var testZone;
-
-doOneTask() {
-  if (queue.length == 0) {
-    print('Done');
-    return;
-  }
-
-  var task = queue.removeLast();
-  print(task.name);
-  try {
-    task.action();
-  } catch (e) {}
-
-  // Register the next task in a timer callback so as to yield to async code
-  // scheduled in the current task. This isn't necessary for the test itself,
-  // but is helpful when trying to figure out which function is responsible for
-  // a crash.
-  testZone.createTimer(Duration.ZERO, doOneTask);
-}
-
-var fuzzArgument;
-
-main() {
-  fuzzArgument = null;
-  fuzzArgument = 1; // //# smi: ok
-  fuzzArgument = false; // //# false: ok
-  fuzzArgument = 'string'; // //# string: ok
-  fuzzArgument = new List(0); // //# emptyarray: ok
-
-  print('Fuzzing with $fuzzArgument');
-
-  currentMirrorSystem().libraries.values.forEach(checkLibrary);
-
-  var valueObjects = [
-    true,
-    false,
-    null,
-    [],
-    {},
-    dynamic,
-    0,
-    0xEFFFFFF,
-    0xFFFFFFFF,
-    0xFFFFFFFFFFFFFFFF,
-    3.14159,
-    () {},
-    "foo",
-    'blåbærgrød',
-    'Îñţérñåţîöñåļîžåţîờñ',
-    "\u{1D11E}",
-    #symbol
-  ];
-  valueObjects.forEach((v) => checkInstance(reflect(v), 'value object'));
-
-  void uncaughtErrorHandler(self, parent, zone, error, stack) {}
-
-  var zoneSpec =
-      new ZoneSpecification(handleUncaughtError: uncaughtErrorHandler);
-  testZone = Zone.current.fork(specification: zoneSpec);
-  testZone.createTimer(Duration.ZERO, doOneTask);
-}
diff --git a/tests/lib/mirrors/invoke_call_on_closure_test.dart b/tests/lib/mirrors/invoke_call_on_closure_test.dart
deleted file mode 100644
index f42e644..0000000
--- a/tests/lib/mirrors/invoke_call_on_closure_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2014, 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 test.invoke_call_on_closure;
-
-@MirrorsUsed(targets: "test.invoke_call_on_closure")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class FakeFunctionCall {
-  call(x, y) => '1 $x $y';
-}
-
-class FakeFunctionNSM {
-  noSuchMethod(msg) => msg.positionalArguments.join(', ');
-}
-
-class C {
-  get fakeFunctionCall => new FakeFunctionCall();
-  get fakeFunctionNSM => new FakeFunctionNSM();
-  get closure => (x, y) => '2 $this $x $y';
-  get closureOpt => (x, y, [z, w]) => '3 $this $x $y $z $w';
-  get closureNamed => (x, y, {z, w}) => '4 $this $x $y $z $w';
-  tearOff(x, y) => '22 $this $x $y';
-  tearOffOpt(x, y, [z, w]) => '33 $this $x $y $z $w';
-  tearOffNamed(x, y, {z, w}) => '44 $this $x $y $z $w';
-
-  noSuchMethod(msg) => 'DNU';
-
-  toString() => 'C';
-}
-
-main() {
-  var c = new C();
-  InstanceMirror im;
-
-  im = reflect(c.fakeFunctionCall);
-  Expect.equals('1 5 6', im.invoke(#call, [5, 6]).reflectee);
-
-  im = reflect(c.fakeFunctionNSM);
-  Expect.equals('7, 8', im.invoke(#call, [7, 8]).reflectee);
-
-  im = reflect(c.closure);
-  Expect.equals('2 C 9 10', im.invoke(#call, [9, 10]).reflectee);
-
-  im = reflect(c.closureOpt);
-  Expect.equals('3 C 11 12 13 null', im.invoke(#call, [11, 12, 13]).reflectee);
-
-  im = reflect(c.closureNamed);
-  Expect.equals(
-      '4 C 14 15 null 16', im.invoke(#call, [14, 15], {#w: 16}).reflectee);
-
-  im = reflect(c.tearOff);
-  Expect.equals('22 C 9 10', im.invoke(#call, [9, 10]).reflectee);
-
-  im = reflect(c.tearOffOpt);
-  Expect.equals('33 C 11 12 13 null', im.invoke(#call, [11, 12, 13]).reflectee);
-
-  im = reflect(c.tearOffNamed);
-  Expect.equals(
-      '44 C 14 15 null 16', im.invoke(#call, [14, 15], {#w: 16}).reflectee);
-}
diff --git a/tests/lib/mirrors/invoke_call_through_getter_previously_accessed_test.dart b/tests/lib/mirrors/invoke_call_through_getter_previously_accessed_test.dart
deleted file mode 100644
index f0cce15..0000000
--- a/tests/lib/mirrors/invoke_call_through_getter_previously_accessed_test.dart
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_call_through_getter;
-
-@MirrorsUsed(targets: "test.invoke_call_through_getter")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class FakeFunctionCall {
-  call(x, y) => '1 $x $y';
-}
-
-class FakeFunctionNSM {
-  noSuchMethod(msg) => msg.positionalArguments.join(', ');
-}
-
-class C {
-  get fakeFunctionCall => new FakeFunctionCall();
-  get fakeFunctionNSM => new FakeFunctionNSM();
-  get closure => (x, y) => '2 $this $x $y';
-  get closureOpt => (x, y, [z, w]) => '3 $this $x $y $z $w';
-  get closureNamed => (x, y, {z, w}) => '4 $this $x $y $z $w';
-  get notAClosure => 'Not a closure';
-  noSuchMethod(msg) => 'DNU';
-
-  toString() => 'C';
-}
-
-testInstanceBase() {
-  var c = new C();
-
-  Expect.equals('1 5 6', c.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', c.fakeFunctionNSM(7, 8));
-  Expect.equals('2 C 9 10', c.closure(9, 10));
-  Expect.equals('3 C 11 12 13 null', c.closureOpt(11, 12, 13));
-  Expect.equals('4 C 14 15 null 16', c.closureNamed(14, 15, w: 16));
-  Expect.equals('DNU', c.doesNotExist(17, 18));
-  Expect.throws(() => c.closure('wrong arity'), (e) => e is NoSuchMethodError);
-  Expect.throws(() => c.notAClosure(), (e) => e is NoSuchMethodError);
-}
-
-testInstanceReflective() {
-  InstanceMirror im = reflect(new C());
-
-  Expect.equals('1 5 6', im.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', im.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 C 9 10', im.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 C 11 12 13 null', im.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 C 14 15 null 16', //                                       //# named: ok
-                im.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); //   //# named: continued
-  Expect.equals('DNU', im.invoke(#doesNotExist, [17, 18]).reflectee);
-  Expect.throws(() => im.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => im.invoke(#notAClosure, []), (e) => e is NoSuchMethodError);
-}
-
-class D {
-  static get fakeFunctionCall => new FakeFunctionCall();
-  static get fakeFunctionNSM => new FakeFunctionNSM();
-  static get closure => (x, y) => '2 $x $y';
-  static get closureOpt => (x, y, [z, w]) => '3 $x $y $z $w';
-  static get closureNamed => (x, y, {z, w}) => '4 $x $y $z $w';
-  static get notAClosure => 'Not a closure';
-}
-
-testClassBase() {
-  Expect.equals('1 5 6', D.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', D.fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', D.closure(9, 10));
-  Expect.equals('3 11 12 13 null', D.closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', D.closureNamed(14, 15, w: 16));
-  Expect.throws(() => D.closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testClassReflective() {
-  ClassMirror cm = reflectClass(D);
-
-  Expect.equals('1 5 6', cm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', cm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', cm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', cm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16', //                                        //# named: continued
-                cm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); //  //# named: continued
-  Expect.throws(() => cm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-get fakeFunctionCall => new FakeFunctionCall();
-get fakeFunctionNSM => new FakeFunctionNSM();
-get closure => (x, y) => '2 $x $y';
-get closureOpt => (x, y, [z, w]) => '3 $x $y $z $w';
-get closureNamed => (x, y, {z, w}) => '4 $x $y $z $w';
-get notAClosure => 'Not a closure';
-
-testLibraryBase() {
-  Expect.equals('1 5 6', fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', closure(9, 10));
-  Expect.equals('3 11 12 13 null', closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', closureNamed(14, 15, w: 16));
-  Expect.throws(() => closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testLibraryReflective() {
-  LibraryMirror lm = reflectClass(D).owner;
-
-  Expect.equals('1 5 6', lm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', lm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', lm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', lm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16', //                                       //# named: continued
-                lm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); // //# named: continued
-  Expect.throws(() => lm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-main() {
-  // Access the getters/closures at the base level in this variant.
-  testInstanceBase();
-  testInstanceReflective();
-  testClassBase();
-  testClassReflective();
-  testLibraryBase();
-  testLibraryReflective();
-}
diff --git a/tests/lib/mirrors/invoke_call_through_getter_test.dart b/tests/lib/mirrors/invoke_call_through_getter_test.dart
deleted file mode 100644
index ee89d11..0000000
--- a/tests/lib/mirrors/invoke_call_through_getter_test.dart
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_call_through_getter;
-
-@MirrorsUsed(targets: "test.invoke_call_through_getter")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class FakeFunctionCall {
-  call(x, y) => '1 $x $y';
-}
-
-class FakeFunctionNSM {
-  noSuchMethod(msg) => msg.positionalArguments.join(', ');
-}
-
-class C {
-  get fakeFunctionCall => new FakeFunctionCall();
-  get fakeFunctionNSM => new FakeFunctionNSM();
-  get closure => (x, y) => '2 $this $x $y';
-  get closureOpt => (x, y, [z, w]) => '3 $this $x $y $z $w';
-  get closureNamed => (x, y, {z, w}) => '4 $this $x $y $z $w';
-  get notAClosure => 'Not a closure';
-  noSuchMethod(msg) => 'DNU';
-
-  toString() => 'C';
-}
-
-testInstanceBase() {
-  var c = new C();
-
-  Expect.equals('1 5 6', c.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', c.fakeFunctionNSM(7, 8));
-  Expect.equals('2 C 9 10', c.closure(9, 10));
-  Expect.equals('3 C 11 12 13 null', c.closureOpt(11, 12, 13));
-  Expect.equals('4 C 14 15 null 16', c.closureNamed(14, 15, w: 16));
-  Expect.equals('DNU', c.doesNotExist(17, 18));
-  Expect.throws(() => c.closure('wrong arity'), (e) => e is NoSuchMethodError);
-  Expect.throws(() => c.notAClosure(), (e) => e is NoSuchMethodError);
-}
-
-testInstanceReflective() {
-  InstanceMirror im = reflect(new C());
-
-  Expect.equals('1 5 6', im.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', im.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 C 9 10', im.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 C 11 12 13 null', im.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 C 14 15 null 16', //                                       //# named: ok
-                im.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); //   //# named: continued
-  Expect.equals('DNU', im.invoke(#doesNotExist, [17, 18]).reflectee);
-  Expect.throws(() => im.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => im.invoke(#notAClosure, []), (e) => e is NoSuchMethodError);
-}
-
-class D {
-  static get fakeFunctionCall => new FakeFunctionCall();
-  static get fakeFunctionNSM => new FakeFunctionNSM();
-  static get closure => (x, y) => '2 $x $y';
-  static get closureOpt => (x, y, [z, w]) => '3 $x $y $z $w';
-  static get closureNamed => (x, y, {z, w}) => '4 $x $y $z $w';
-  static get notAClosure => 'Not a closure';
-}
-
-testClassBase() {
-  Expect.equals('1 5 6', D.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', D.fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', D.closure(9, 10));
-  Expect.equals('3 11 12 13 null', D.closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', D.closureNamed(14, 15, w: 16));
-  Expect.throws(() => D.closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testClassReflective() {
-  ClassMirror cm = reflectClass(D);
-
-  Expect.equals('1 5 6', cm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', cm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', cm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', cm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16', //                                        //# named: continued
-                cm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); //  //# named: continued
-  Expect.throws(() => cm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-get fakeFunctionCall => new FakeFunctionCall();
-get fakeFunctionNSM => new FakeFunctionNSM();
-get closure => (x, y) => '2 $x $y';
-get closureOpt => (x, y, [z, w]) => '3 $x $y $z $w';
-get closureNamed => (x, y, {z, w}) => '4 $x $y $z $w';
-get notAClosure => 'Not a closure';
-
-testLibraryBase() {
-  Expect.equals('1 5 6', fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', closure(9, 10));
-  Expect.equals('3 11 12 13 null', closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', closureNamed(14, 15, w: 16));
-  Expect.throws(() => closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testLibraryReflective() {
-  LibraryMirror lm = reflectClass(D).owner;
-
-  Expect.equals('1 5 6', lm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', lm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', lm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', lm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16', //                                       //# named: continued
-                lm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); // //# named: continued
-  Expect.throws(() => lm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-main() {
-  // Do not access the getters/closures at the base level in this variant.
-  //testInstanceBase();
-  testInstanceReflective();
-  //testClassBase();
-  testClassReflective();
-  //testLibraryBase();
-  testLibraryReflective();
-}
diff --git a/tests/lib/mirrors/invoke_call_through_implicit_getter_previously_accessed_test.dart b/tests/lib/mirrors/invoke_call_through_implicit_getter_previously_accessed_test.dart
deleted file mode 100644
index 885ebd0..0000000
--- a/tests/lib/mirrors/invoke_call_through_implicit_getter_previously_accessed_test.dart
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright (c) 2014, 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 test.invoke_call_through_implicit_getter;
-
-@MirrorsUsed(targets: "test.invoke_call_through_implicit_getter")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class FakeFunctionCall {
-  call(x, y) => '1 $x $y';
-}
-
-class FakeFunctionNSM {
-  noSuchMethod(msg) => msg.positionalArguments.join(', ');
-}
-
-class C {
-  var fakeFunctionCall = new FakeFunctionCall();
-  var fakeFunctionNSM = new FakeFunctionNSM();
-  var closure; // = (x, y) => '2 $this $x $y';
-  var closureOpt; // = (x, y, [z, w]) => '3 $this $x $y $z $w';
-  var closureNamed; // = (x, y, {z, w}) => '4 $this $x $y $z $w';
-  var notAClosure = 'Not a closure';
-  noSuchMethod(msg) => 'DNU';
-
-  C() {
-    closure = (x, y) => '2 $this $x $y';
-    closureOpt = (x, y, [z, w]) => '3 $this $x $y $z $w';
-    closureNamed = (x, y, {z, w}) => '4 $this $x $y $z $w';
-  }
-
-  toString() => 'C';
-}
-
-testInstanceBase() {
-  var c = new C();
-
-  Expect.equals('1 5 6', c.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', c.fakeFunctionNSM(7, 8));
-  Expect.equals('2 C 9 10', c.closure(9, 10));
-  Expect.equals('3 C 11 12 13 null', c.closureOpt(11, 12, 13));
-  Expect.equals('4 C 14 15 null 16', c.closureNamed(14, 15, w: 16));
-  Expect.equals('DNU', c.doesNotExist(17, 18));
-  Expect.throws(() => c.closure('wrong arity'), (e) => e is NoSuchMethodError);
-  Expect.throws(() => c.notAClosure(), (e) => e is NoSuchMethodError);
-}
-
-testInstanceReflective() {
-  InstanceMirror im = reflect(new C());
-
-  Expect.equals('1 5 6', im.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', im.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 C 9 10', im.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 C 11 12 13 null', im.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 C 14 15 null 16', //                                       //# named: ok
-                im.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); //   //# named: continued
-  Expect.equals('DNU', im.invoke(#doesNotExist, [17, 18]).reflectee);
-  Expect.throws(() => im.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => im.invoke(#notAClosure, []), (e) => e is NoSuchMethodError);
-}
-
-class D {
-  static var fakeFunctionCall = new FakeFunctionCall();
-  static var fakeFunctionNSM = new FakeFunctionNSM();
-  static var closure = (x, y) => '2 $x $y';
-  static var closureOpt = (x, y, [z, w]) => '3 $x $y $z $w';
-  static var closureNamed = (x, y, {z, w}) => '4 $x $y $z $w';
-  static var notAClosure = 'Not a closure';
-}
-
-testClassBase() {
-  Expect.equals('1 5 6', D.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', D.fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', D.closure(9, 10));
-  Expect.equals('3 11 12 13 null', D.closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', D.closureNamed(14, 15, w: 16));
-  Expect.throws(() => D.closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testClassReflective() {
-  ClassMirror cm = reflectClass(D);
-
-  Expect.equals('1 5 6', cm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', cm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', cm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', cm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16', //                                        //# named: continued
-                cm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); //  //# named: continued
-  Expect.throws(() => cm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-var fakeFunctionCall = new FakeFunctionCall();
-var fakeFunctionNSM = new FakeFunctionNSM();
-var closure = (x, y) => '2 $x $y';
-var closureOpt = (x, y, [z, w]) => '3 $x $y $z $w';
-var closureNamed = (x, y, {z, w}) => '4 $x $y $z $w';
-var notAClosure = 'Not a closure';
-
-testLibraryBase() {
-  Expect.equals('1 5 6', fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', closure(9, 10));
-  Expect.equals('3 11 12 13 null', closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', closureNamed(14, 15, w: 16));
-  Expect.throws(() => closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testLibraryReflective() {
-  LibraryMirror lm = reflectClass(D).owner;
-
-  Expect.equals('1 5 6', lm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', lm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', lm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', lm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16', //                                       //# named: continued
-                lm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee); // //# named: continued
-  Expect.throws(() => lm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-main() {
-  testInstanceBase();
-  testInstanceReflective();
-  testClassBase();
-  testClassReflective();
-  testLibraryBase();
-  testLibraryReflective();
-}
diff --git a/tests/lib/mirrors/invoke_call_through_implicit_getter_test.dart b/tests/lib/mirrors/invoke_call_through_implicit_getter_test.dart
deleted file mode 100644
index 8b40222..0000000
--- a/tests/lib/mirrors/invoke_call_through_implicit_getter_test.dart
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2014, 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 test.invoke_call_through_implicit_getter;
-
-@MirrorsUsed(targets: "test.invoke_call_through_implicit_getter")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class FakeFunctionCall {
-  call(x, y) => '1 $x $y';
-}
-
-class FakeFunctionNSM {
-  noSuchMethod(msg) => msg.positionalArguments.join(', ');
-}
-
-class C {
-  var fakeFunctionCall = new FakeFunctionCall();
-  var fakeFunctionNSM = new FakeFunctionNSM();
-  var closure; // = (x, y) => '2 $this $x $y';
-  var closureOpt; // = (x, y, [z, w]) => '3 $this $x $y $z $w';
-  var closureNamed; // = (x, y, {z, w}) => '4 $this $x $y $z $w';
-  var notAClosure = 'Not a closure';
-  noSuchMethod(msg) => 'DNU';
-
-  C() {
-    closure = (x, y) => '2 $this $x $y';
-    closureOpt = (x, y, [z, w]) => '3 $this $x $y $z $w';
-    closureNamed = (x, y, {z, w}) => '4 $this $x $y $z $w';
-  }
-
-  toString() => 'C';
-}
-
-testInstanceBase() {
-  var c = new C();
-
-  Expect.equals('1 5 6', c.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', c.fakeFunctionNSM(7, 8));
-  Expect.equals('2 C 9 10', c.closure(9, 10));
-  Expect.equals('3 C 11 12 13 null', c.closureOpt(11, 12, 13));
-  Expect.equals('4 C 14 15 null 16', c.closureNamed(14, 15, w: 16));
-  Expect.equals('DNU', c.doesNotExist(17, 18));
-  Expect.throws(() => c.closure('wrong arity'), (e) => e is NoSuchMethodError);
-  Expect.throws(() => c.notAClosure(), (e) => e is NoSuchMethodError);
-}
-
-testInstanceReflective() {
-  InstanceMirror im = reflect(new C());
-
-  Expect.equals('1 5 6', im.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', im.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 C 9 10', im.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 C 11 12 13 null', im.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 C 14 15 null 16',
-      im.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee);
-  Expect.equals('DNU', im.invoke(#doesNotExist, [17, 18]).reflectee);
-  Expect.throws(() => im.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => im.invoke(#notAClosure, []), (e) => e is NoSuchMethodError);
-}
-
-class D {
-  static var fakeFunctionCall = new FakeFunctionCall();
-  static var fakeFunctionNSM = new FakeFunctionNSM();
-  static var closure = (x, y) => '2 $x $y';
-  static var closureOpt = (x, y, [z, w]) => '3 $x $y $z $w';
-  static var closureNamed = (x, y, {z, w}) => '4 $x $y $z $w';
-  static var notAClosure = 'Not a closure';
-}
-
-testClassBase() {
-  Expect.equals('1 5 6', D.fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', D.fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', D.closure(9, 10));
-  Expect.equals('3 11 12 13 null', D.closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', D.closureNamed(14, 15, w: 16));
-  Expect.throws(() => D.closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testClassReflective() {
-  ClassMirror cm = reflectClass(D);
-
-  Expect.equals('1 5 6', cm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', cm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', cm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', cm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16',
-      cm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee);
-  Expect.throws(() => cm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-var fakeFunctionCall = new FakeFunctionCall();
-var fakeFunctionNSM = new FakeFunctionNSM();
-var closure = (x, y) => '2 $x $y';
-var closureOpt = (x, y, [z, w]) => '3 $x $y $z $w';
-var closureNamed = (x, y, {z, w}) => '4 $x $y $z $w';
-var notAClosure = 'Not a closure';
-
-testLibraryBase() {
-  Expect.equals('1 5 6', fakeFunctionCall(5, 6));
-  Expect.equals('7, 8', fakeFunctionNSM(7, 8));
-  Expect.equals('2 9 10', closure(9, 10));
-  Expect.equals('3 11 12 13 null', closureOpt(11, 12, 13));
-  Expect.equals('4 14 15 null 16', closureNamed(14, 15, w: 16));
-  Expect.throws(() => closure('wrong arity'), (e) => e is NoSuchMethodError);
-}
-
-testLibraryReflective() {
-  LibraryMirror lm = reflectClass(D).owner;
-
-  Expect.equals('1 5 6', lm.invoke(#fakeFunctionCall, [5, 6]).reflectee);
-  Expect.equals('7, 8', lm.invoke(#fakeFunctionNSM, [7, 8]).reflectee);
-  Expect.equals('2 9 10', lm.invoke(#closure, [9, 10]).reflectee);
-  Expect.equals(
-      '3 11 12 13 null', lm.invoke(#closureOpt, [11, 12, 13]).reflectee);
-  Expect.equals('4 14 15 null 16',
-      lm.invoke(#closureNamed, [14, 15], {#w: 16}).reflectee);
-  Expect.throws(() => lm.invoke(#closure, ['wrong arity']),
-      (e) => e is NoSuchMethodError);
-}
-
-main() {
-  // Do not access the getters/closures at the base level in this variant.
-  //testInstanceBase();
-  testInstanceReflective();
-  //testClassBase();
-  testClassReflective();
-  //testLibraryBase();
-  testLibraryReflective();
-}
diff --git a/tests/lib/mirrors/invoke_closurization2_test.dart b/tests/lib/mirrors/invoke_closurization2_test.dart
deleted file mode 100644
index 299864a..0000000
--- a/tests/lib/mirrors/invoke_closurization2_test.dart
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright (c) 2014, 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 test.invoke_closurization_test;
-
-@MirrorsUsed(targets: "test.invoke_closurization_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {
-  foo() => "foo";
-  bar([x]) => "bar-$x";
-  gee({named}) => "gee-$named";
-
-  // Methods that must be intercepted.
-
-  // Tear-offs we will also get without mirrors.
-  codeUnitAt(x) => "codeUnitAt-$x";
-  toUpperCase() => "toUpperCase";
-  // indexOf takes an optional argument in String.
-  indexOf(x) => "indexOf-$x";
-  // lastIndexOf matches signature from String.
-  lastIndexOf(x, [y]) => "lastIndexOf-$x,$y";
-  // splitMapJoin matches signature from String.
-  splitMapJoin(x, {onMatch, onNonMatch}) =>
-      "splitMapJoin-$x,$onMatch,$onNonMatch";
-  // Same name as intercepted, but with named argument.
-  trim({named}) => "trim-$named";
-
-  // Tear-offs we will not call directly.
-  endsWith(x) => "endsWith-$x";
-  toLowerCase() => "toLowerCase";
-  // matchAsPrefix matches signature from String.
-  matchAsPrefix(x, [y = 0]) => "matchAsPrefix-$x,$y";
-  // Matches signature from List
-  toList({growable: true}) => "toList-$growable";
-  // Same name as intercepted, but with named argument.
-  toSet({named}) => "toSet-$named";
-}
-
-// The recursive call makes inlining difficult.
-// The use of DateTime.now makes the result unpredictable.
-confuse(x) {
-  if (new DateTime.now().millisecondsSinceEpoch == 42) {
-    return confuse(new DateTime.now().millisecondsSinceEpoch);
-  }
-  return x;
-}
-
-main() {
-  var list = ["foo", new List(), new A()];
-
-  getAMirror() => reflect(list[confuse(2)]);
-
-  // Tear-off without mirrors.
-  var f = confuse(getAMirror().reflectee.codeUnitAt);
-  Expect.equals("codeUnitAt-42", f(42));
-  f = confuse(getAMirror().reflectee.toUpperCase);
-  Expect.equals("toUpperCase", f());
-  f = confuse(getAMirror().reflectee.indexOf);
-  Expect.equals("indexOf-499", f(499));
-  f = confuse(getAMirror().reflectee.lastIndexOf);
-  Expect.equals("lastIndexOf-FOO,BAR", f("FOO", "BAR"));
-  f = confuse(getAMirror().reflectee.splitMapJoin);
-  Expect.equals("splitMapJoin-1,2,3", f(1, onMatch: 2, onNonMatch: 3));
-  f = confuse(getAMirror().reflectee.trim);
-  Expect.equals("trim-true", f(named: true));
-
-  // Now the same thing through mirrors.
-  f = getAMirror().getField(#codeUnitAt).reflectee;
-  Expect.equals("codeUnitAt-42", f(42));
-  f = getAMirror().getField(#toUpperCase).reflectee;
-  Expect.equals("toUpperCase", f());
-  f = getAMirror().getField(#indexOf).reflectee;
-  Expect.equals("indexOf-499", f(499));
-  f = getAMirror().getField(#lastIndexOf).reflectee;
-  Expect.equals("lastIndexOf-FOO,BAR", f("FOO", "BAR"));
-  f = getAMirror().getField(#splitMapJoin).reflectee;
-  Expect.equals("splitMapJoin-1,2,3", f(1, onMatch: 2, onNonMatch: 3));
-  f = getAMirror().getField(#trim).reflectee;
-  Expect.equals("trim-true", f(named: true));
-
-  // Now the same thing through mirrors and mirror-invocation.
-  f = getAMirror().getField(#codeUnitAt);
-  Expect.equals("codeUnitAt-42", f.invoke(#call, [42], {}).reflectee);
-  f = getAMirror().getField(#toUpperCase);
-  Expect.equals("toUpperCase", f.invoke(#call, [], {}).reflectee);
-  f = getAMirror().getField(#indexOf);
-  Expect.equals("indexOf-499", f.invoke(#call, [499], {}).reflectee);
-  f = getAMirror().getField(#lastIndexOf);
-  Expect.equals(
-      "lastIndexOf-FOO,BAR", f.invoke(#call, ["FOO", "BAR"]).reflectee);
-  f = getAMirror().getField(#splitMapJoin);
-  Expect.equals("splitMapJoin-1,2,3",
-      f.invoke(#call, [1], {#onMatch: 2, #onNonMatch: 3}).reflectee);
-  f = getAMirror().getField(#trim);
-  Expect.equals("trim-true", f.invoke(#call, [], {#named: true}).reflectee);
-
-  // Tear-offs only through mirrors. (No direct selector in the code).
-  // --------
-
-  f = getAMirror().getField(#endsWith).reflectee;
-  Expect.equals("endsWith-42", f(42));
-  f = getAMirror().getField(#toLowerCase).reflectee;
-  Expect.equals("toLowerCase", f());
-  f = getAMirror().getField(#indexOf).reflectee;
-  Expect.equals("indexOf-499", f(499));
-  f = getAMirror().getField(#matchAsPrefix).reflectee;
-  Expect.equals("matchAsPrefix-FOO,BAR", f("FOO", "BAR"));
-  f = getAMirror().getField(#toList).reflectee;
-  Expect.equals("toList-1", f(growable: 1));
-  f = getAMirror().getField(#toSet).reflectee;
-  Expect.equals("toSet-true", f(named: true));
-
-  f = getAMirror().getField(#endsWith);
-  Expect.equals("endsWith-42", f.invoke(#call, [42], {}).reflectee);
-  f = getAMirror().getField(#toLowerCase);
-  Expect.equals("toLowerCase", f.invoke(#call, [], {}).reflectee);
-  f = getAMirror().getField(#indexOf);
-  Expect.equals("indexOf-499", f.invoke(#call, [499], {}).reflectee);
-  f = getAMirror().getField(#matchAsPrefix);
-  Expect.equals(
-      "matchAsPrefix-FOO,BAR", f.invoke(#call, ["FOO", "BAR"]).reflectee);
-  f = getAMirror().getField(#toList);
-  Expect.equals("toList-1", f.invoke(#call, [], {#growable: 1}).reflectee);
-  f = getAMirror().getField(#toSet);
-  Expect.equals("toSet-true", f.invoke(#call, [], {#named: true}).reflectee);
-}
diff --git a/tests/lib/mirrors/invoke_closurization_test.dart b/tests/lib/mirrors/invoke_closurization_test.dart
deleted file mode 100644
index de33819..0000000
--- a/tests/lib/mirrors/invoke_closurization_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_closurization_test;
-
-@MirrorsUsed(targets: "test.invoke_closurization_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class C {
-  instanceMethod(x, y, z) => '$x+$y+$z';
-  static staticFunction(x, y, z) => '$x-$y-$z';
-}
-
-libraryFunction(x, y, z) => '$x:$y:$z';
-
-testSync() {
-  var result;
-
-  C c = new C();
-  InstanceMirror im = reflect(c);
-  result = im.getField(#instanceMethod);
-  Expect.isTrue(result.reflectee is Function, "Should be closure");
-  Expect.equals("A+B+C", result.reflectee('A', 'B', 'C'));
-
-  ClassMirror cm = reflectClass(C);
-  result = cm.getField(#staticFunction);
-  Expect.isTrue(result.reflectee is Function, "Should be closure");
-  Expect.equals("A-B-C", result.reflectee('A', 'B', 'C'));
-
-  LibraryMirror lm = cm.owner;
-  result = lm.getField(#libraryFunction);
-  Expect.isTrue(result.reflectee is Function, "Should be closure");
-  Expect.equals("A:B:C", result.reflectee('A', 'B', 'C'));
-}
-
-main() {
-  testSync();
-}
diff --git a/tests/lib/mirrors/invoke_import_test.dart b/tests/lib/mirrors/invoke_import_test.dart
deleted file mode 100644
index 332a8dd..0000000
--- a/tests/lib/mirrors/invoke_import_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_import_test;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'other_library.dart';
-
-main() {
-  LibraryMirror thisLibrary =
-      currentMirrorSystem().findLibrary(#test.invoke_import_test);
-
-  Expect.throws(
-      () => thisLibrary.invoke(#topLevelMethod, []),
-      (e) => e is NoSuchMethodError,
-      'Should not invoke imported method #topLevelMethod');
-
-  Expect.throws(
-      () => thisLibrary.getField(#topLevelGetter),
-      (e) => e is NoSuchMethodError,
-      'Should not invoke imported getter #topLevelGetter');
-
-  Expect.throws(
-      () => thisLibrary.getField(#topLevelField),
-      (e) => e is NoSuchMethodError,
-      'Should not invoke imported field #topLevelField');
-
-  Expect.throws(
-      () => thisLibrary.setField(#topLevelSetter, 23),
-      (e) => e is NoSuchMethodError,
-      'Should not invoke imported setter #topLevelSetter');
-
-  Expect.throws(
-      () => thisLibrary.setField(#topLevelField, 23),
-      (e) => e is NoSuchMethodError,
-      'Should not invoke imported field #topLevelField');
-}
diff --git a/tests/lib/mirrors/invoke_named_test.dart b/tests/lib/mirrors/invoke_named_test.dart
deleted file mode 100644
index f180da8..0000000
--- a/tests/lib/mirrors/invoke_named_test.dart
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_named_test;
-
-@MirrorsUsed(targets: "test.invoke_named_test")
-import 'dart:mirrors';
-
-import 'dart:async' show Future;
-
-import 'package:expect/expect.dart';
-import 'invoke_test.dart';
-
-// TODO(ahe): Remove this variable (http://dartbug.com/12863).
-bool isDart2js = false;
-
-class C {
-  a(a, {b: 'B', c}) => "$a-$b-$c";
-  b({a: 'A', b, c}) => "$a-$b-$c";
-  c(a, [b, c = 'C']) => "$a-$b-$c";
-  d([a, b = 'B', c = 'C']) => "$a-$b-$c";
-  e(a, b, c) => "$a-$b-$c";
-}
-
-class D {
-  static a(a, {b: 'B', c}) => "$a-$b-$c";
-  static b({a: 'A', b, c}) => "$a-$b-$c";
-  static c(a, [b, c = 'C']) => "$a-$b-$c";
-  static d([a, b = 'B', c = 'C']) => "$a-$b-$c";
-  static e(a, b, c) => "$a-$b-$c";
-}
-
-class E {
-  var field;
-  E(a, {b: 'B', c}) : this.field = "$a-$b-$c";
-  E.b({a: 'A', b, c}) : this.field = "$a-$b-$c";
-  E.c(a, [b, c = 'C']) : this.field = "$a-$b-$c";
-  E.d([a, b = 'B', c = 'C']) : this.field = "$a-$b-$c";
-  E.e(a, b, c) : this.field = "$a-$b-$c";
-}
-
-a(a, {b: 'B', c}) => "$a-$b-$c";
-b({a: 'A', b, c}) => "$a-$b-$c";
-c(a, [b, c = 'C']) => "$a-$b-$c";
-d([a, b = 'B', c = 'C']) => "$a-$b-$c";
-e(a, b, c) => "$a-$b-$c";
-
-testSyncInvoke(ObjectMirror om) {
-  InstanceMirror result;
-
-  result = om.invoke(const Symbol('a'), ['X']);
-  Expect.equals('X-B-null', result.reflectee);
-  result = om.invoke(const Symbol('a'), ['X'], {const Symbol('b'): 'Y'});
-  Expect.equals('X-Y-null', result.reflectee);
-  result = om.invoke(const Symbol('a'), ['X'],
-      {const Symbol('c'): 'Z', const Symbol('b'): 'Y'});
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => om.invoke(const Symbol('a'), []), isNoSuchMethodError,
-      'Insufficient positional arguments');
-  Expect.throws(() => om.invoke(const Symbol('a'), ['X', 'Y']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => om.invoke(const Symbol('a'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = om.invoke(const Symbol('b'), []);
-  Expect.equals('A-null-null', result.reflectee);
-  result = om.invoke(const Symbol('b'), [], {const Symbol('a'): 'X'});
-  Expect.equals('X-null-null', result.reflectee);
-  result = om.invoke(const Symbol('b'), [],
-      {const Symbol('b'): 'Y', const Symbol('c'): 'Z', const Symbol('a'): 'X'});
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => om.invoke(const Symbol('b'), ['X']), isNoSuchMethodError,
-      'Extra positional arguments');
-  Expect.throws(
-      () => om.invoke(const Symbol('b'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = om.invoke(const Symbol('c'), ['X']);
-  Expect.equals('X-null-C', result.reflectee);
-  result = om.invoke(const Symbol('c'), ['X', 'Y']);
-  Expect.equals('X-Y-C', result.reflectee);
-  result = om.invoke(const Symbol('c'), ['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => om.invoke(const Symbol('c'), []), isNoSuchMethodError,
-      'Insufficient positional arguments');
-  Expect.throws(() => om.invoke(const Symbol('c'), ['X', 'Y', 'Z', 'W']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => om.invoke(const Symbol('c'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = om.invoke(const Symbol('d'), []);
-  Expect.equals('null-B-C', result.reflectee);
-  result = om.invoke(const Symbol('d'), ['X']);
-  Expect.equals('X-B-C', result.reflectee);
-  result = om.invoke(const Symbol('d'), ['X', 'Y']);
-  Expect.equals('X-Y-C', result.reflectee);
-  result = om.invoke(const Symbol('d'), ['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => om.invoke(const Symbol('d'), ['X', 'Y', 'Z', 'W']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => om.invoke(const Symbol('d'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = om.invoke(const Symbol('e'), ['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => om.invoke(const Symbol('e'), ['X']), isNoSuchMethodError,
-      'Insufficient positional arguments');
-  Expect.throws(() => om.invoke(const Symbol('e'), ['X', 'Y', 'Z', 'W']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => om.invoke(const Symbol('e'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-}
-
-testSyncNewInstance() {
-  ClassMirror cm = reflectClass(E);
-  InstanceMirror result;
-
-  result = cm.newInstance(const Symbol(''), ['X']);
-  Expect.equals('X-B-null', result.reflectee.field);
-  result = cm.newInstance(const Symbol(''), ['X'], {const Symbol('b'): 'Y'});
-  Expect.equals('X-Y-null', result.reflectee.field);
-  result = cm.newInstance(const Symbol(''), ['X'],
-      {const Symbol('c'): 'Z', const Symbol('b'): 'Y'});
-  Expect.equals('X-Y-Z', result.reflectee.field);
-  Expect.throws(() => cm.newInstance(const Symbol(''), []), isNoSuchMethodError,
-      'Insufficient positional arguments');
-  Expect.throws(() => cm.newInstance(const Symbol(''), ['X', 'Y']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () =>
-          cm.newInstance(const Symbol(''), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = cm.newInstance(const Symbol('b'), []);
-  Expect.equals('A-null-null', result.reflectee.field);
-  result = cm.newInstance(const Symbol('b'), [], {const Symbol('a'): 'X'});
-  Expect.equals('X-null-null', result.reflectee.field);
-  result = cm.newInstance(const Symbol('b'), [],
-      {const Symbol('b'): 'Y', const Symbol('c'): 'Z', const Symbol('a'): 'X'});
-  Expect.equals('X-Y-Z', result.reflectee.field);
-  Expect.throws(() => cm.newInstance(const Symbol('b'), ['X']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => cm
-          .newInstance(const Symbol('b'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = cm.newInstance(const Symbol('c'), ['X']);
-  Expect.equals('X-null-C', result.reflectee.field);
-  result = cm.newInstance(const Symbol('c'), ['X', 'Y']);
-  Expect.equals('X-Y-C', result.reflectee.field);
-  result = cm.newInstance(const Symbol('c'), ['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee.field);
-  Expect.throws(() => cm.newInstance(const Symbol('c'), []),
-      isNoSuchMethodError, 'Insufficient positional arguments');
-  Expect.throws(() => cm.newInstance(const Symbol('c'), ['X', 'Y', 'Z', 'W']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => cm
-          .newInstance(const Symbol('c'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = cm.newInstance(const Symbol('d'), []);
-  Expect.equals('null-B-C', result.reflectee.field);
-  result = cm.newInstance(const Symbol('d'), ['X']);
-  Expect.equals('X-B-C', result.reflectee.field);
-  result = cm.newInstance(const Symbol('d'), ['X', 'Y']);
-  Expect.equals('X-Y-C', result.reflectee.field);
-  result = cm.newInstance(const Symbol('d'), ['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee.field);
-  Expect.throws(() => cm.newInstance(const Symbol('d'), ['X', 'Y', 'Z', 'W']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => cm
-          .newInstance(const Symbol('d'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-
-  result = cm.newInstance(const Symbol('e'), ['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee.field);
-  Expect.throws(() => cm.newInstance(const Symbol('e'), ['X']),
-      isNoSuchMethodError, 'Insufficient positional arguments');
-  Expect.throws(() => cm.newInstance(const Symbol('e'), ['X', 'Y', 'Z', 'W']),
-      isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(
-      () => cm
-          .newInstance(const Symbol('e'), ['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError,
-      'Unmatched named argument');
-}
-
-testSyncApply() {
-  ClosureMirror cm;
-  InstanceMirror result;
-
-  cm = reflect(a);
-  result = cm.apply(['X']);
-  Expect.equals('X-B-null', result.reflectee);
-  result = cm.apply(['X'], {const Symbol('b'): 'Y'});
-  Expect.equals('X-Y-null', result.reflectee);
-  result = cm.apply(['X'], {const Symbol('c'): 'Z', const Symbol('b'): 'Y'});
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => cm.apply([]), isNoSuchMethodError,
-      'Insufficient positional arguments');
-  Expect.throws(() => cm.apply(['X', 'Y']), isNoSuchMethodError,
-      'Extra positional arguments');
-  Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError, 'Unmatched named argument');
-
-  cm = reflect(b);
-  result = cm.apply([]);
-  Expect.equals('A-null-null', result.reflectee);
-  result = cm.apply([], {const Symbol('a'): 'X'});
-  Expect.equals('X-null-null', result.reflectee);
-  result = cm.apply([],
-      {const Symbol('b'): 'Y', const Symbol('c'): 'Z', const Symbol('a'): 'X'});
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(
-      () => cm.apply(['X']), isNoSuchMethodError, 'Extra positional arguments');
-  Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError, 'Unmatched named argument');
-
-  cm = reflect(c);
-  result = cm.apply(['X']);
-  Expect.equals('X-null-C', result.reflectee);
-  result = cm.apply(['X', 'Y']);
-  Expect.equals('X-Y-C', result.reflectee);
-  result = cm.apply(['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => cm.apply([]), isNoSuchMethodError,
-      'Insufficient positional arguments');
-  Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']), isNoSuchMethodError,
-      'Extra positional arguments');
-  Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError, 'Unmatched named argument');
-
-  cm = reflect(d);
-  result = cm.apply([]);
-  Expect.equals('null-B-C', result.reflectee);
-  result = cm.apply(['X']);
-  Expect.equals('X-B-C', result.reflectee);
-  result = cm.apply(['X', 'Y']);
-  Expect.equals('X-Y-C', result.reflectee);
-  result = cm.apply(['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']), isNoSuchMethodError,
-      'Extra positional arguments');
-  Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError, 'Unmatched named argument');
-
-  cm = reflect(e);
-  result = cm.apply(['X', 'Y', 'Z']);
-  Expect.equals('X-Y-Z', result.reflectee);
-  Expect.throws(() => cm.apply(['X']), isNoSuchMethodError,
-      'Insufficient positional arguments');
-  Expect.throws(() => cm.apply(['X', 'Y', 'Z', 'W']), isNoSuchMethodError,
-      'Extra positional arguments');
-  Expect.throws(() => cm.apply(['X'], {const Symbol('undef'): 'Y'}),
-      isNoSuchMethodError, 'Unmatched named argument');
-}
-
-main() {
-  isDart2js = true; //# 01: ok
-
-  testSyncInvoke(reflect(new C())); // InstanceMirror
-
-  if (isDart2js) return;
-
-  testSyncInvoke(reflectClass(D)); // ClassMirror
-  LibraryMirror lib = reflectClass(D).owner;
-  testSyncInvoke(lib); // LibraryMirror
-
-  testSyncNewInstance();
-
-  testSyncApply();
-}
diff --git a/tests/lib/mirrors/invoke_natives_malicious_test.dart b/tests/lib/mirrors/invoke_natives_malicious_test.dart
deleted file mode 100644
index 1b15187..0000000
--- a/tests/lib/mirrors/invoke_natives_malicious_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2014, 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 test.invoke_natives;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-test(name, action) {
-  print(name);
-  Expect.throws(action, (e) => true, name);
-  print("done");
-}
-
-main() {
-  LibraryMirror dartcore = reflectClass(Object).owner;
-
-  test('List_copyFromObjectArray', () {
-    var receiver = new List(3);
-    var selector = MirrorSystem.getSymbol('_copyFromObjectArray', dartcore);
-    var src = new List(3);
-    var srcStart = 10;
-    var dstStart = 10;
-    var count = 10;
-    reflect(receiver).invoke(selector, [src, srcStart, dstStart, count]);
-  });
-}
diff --git a/tests/lib/mirrors/invoke_private_test.dart b/tests/lib/mirrors/invoke_private_test.dart
deleted file mode 100644
index 9806be4..0000000
--- a/tests/lib/mirrors/invoke_private_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_private_test;
-
-@MirrorsUsed(targets: "invoke_private_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class C {
-  var _field;
-  C() : this._field = 'default';
-  C._named(this._field);
-
-  get _getter => 'get $_field';
-  set _setter(v) => _field = 'set $v';
-  _method(x, y, z) => '$x+$y+$z';
-
-  static var _staticField = 'initial';
-  static get _staticGetter => 'sget $_staticField';
-  static set _staticSetter(v) => _staticField = 'sset $v';
-  static _staticFunction(x, y) => "($x,$y)";
-}
-
-var _libraryField = 'a priori';
-get _libraryGetter => 'lget $_libraryField';
-set _librarySetter(v) => _libraryField = 'lset $v';
-_libraryFunction(x, y) => '$x$y';
-
-main() {
-  var result;
-
-  // InstanceMirror.
-  C c = new C();
-  InstanceMirror im = reflect(c);
-  result = im.invoke(#_method, [2, 4, 8]);
-  Expect.equals('2+4+8', result.reflectee);
-
-  result = im.getField(#_getter);
-  Expect.equals('get default', result.reflectee);
-  result = im.getField(#_field);
-  Expect.equals('default', result.reflectee);
-
-  im.setField(#_setter, 'foo');
-  Expect.equals('set foo', c._field);
-  im.setField(#_field, 'bar');
-  Expect.equals('bar', c._field);
-
-  // ClassMirror.
-  ClassMirror cm = reflectClass(C);
-  result = cm.invoke(#_staticFunction, [3, 4]);
-  Expect.equals('(3,4)', result.reflectee);
-
-  result = cm.getField(#_staticGetter);
-  Expect.equals('sget initial', result.reflectee);
-  result = cm.getField(#_staticField);
-  Expect.equals('initial', result.reflectee);
-
-  cm.setField(#_staticSetter, 'sfoo');
-  Expect.equals('sset sfoo', C._staticField);
-  cm.setField(#_staticField, 'sbar');
-  Expect.equals('sbar', C._staticField);
-
-  result = cm.newInstance(#_named, ['my value']);
-  Expect.isTrue(result.reflectee is C);
-  Expect.equals('my value', result.reflectee._field);
-
-  // LibraryMirror.
-  LibraryMirror lm = cm.owner;
-  result = lm.invoke(#_libraryFunction, [':', ')']);
-  Expect.equals(':)', result.reflectee);
-
-  result = lm.getField(#_libraryGetter);
-  Expect.equals('lget a priori', result.reflectee);
-  result = lm.getField(#_libraryField);
-  Expect.equals('a priori', result.reflectee);
-
-  lm.setField(#_librarySetter, 'lfoo');
-  Expect.equals('lset lfoo', _libraryField);
-  lm.setField(#_libraryField, 'lbar');
-  Expect.equals('lbar', _libraryField);
-}
diff --git a/tests/lib/mirrors/invoke_private_wrong_library_test.dart b/tests/lib/mirrors/invoke_private_wrong_library_test.dart
deleted file mode 100644
index 902492f..0000000
--- a/tests/lib/mirrors/invoke_private_wrong_library_test.dart
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_test;
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-import "package:async_helper/async_helper.dart";
-
-import 'invoke_private_test.dart' show C;
-
-expectThrowsNSM(f) {
-  Expect.throws(f, (e) => e is NoSuchMethodError);
-}
-
-main() {
-  var result;
-
-  C c = new C();
-  InstanceMirror im = reflect(c);
-  expectThrowsNSM(() => im.invoke(#_method, [2, 4, 8]));
-  expectThrowsNSM(() => im.getField(#_getter));
-  expectThrowsNSM(() => im.getField(#_field));
-  expectThrowsNSM(() => im.setField(#_setter, 'foo'));
-  expectThrowsNSM(() => im.setField(#_field, 'bar'));
-
-  ClassMirror cm = reflectClass(C);
-  expectThrowsNSM(() => cm.invoke(#_staticFunction, [3, 4]));
-  expectThrowsNSM(() => cm.getField(#_staticGetter));
-  expectThrowsNSM(() => cm.getField(#_staticField));
-  expectThrowsNSM(() => cm.setField(#_staticSetter, 'sfoo'));
-  expectThrowsNSM(() => cm.setField(#_staticField, 'sbar'));
-  expectThrowsNSM(() => cm.newInstance(#_named, ['my value']));
-
-  LibraryMirror lm = cm.owner;
-  expectThrowsNSM(() => lm.invoke(#_libraryFunction, [':', ')']));
-  expectThrowsNSM(() => lm.getField(#_libraryGetter));
-  expectThrowsNSM(() => lm.getField(#_libraryField));
-  expectThrowsNSM(() => lm.setField(#_librarySetter, 'lfoo'));
-  expectThrowsNSM(() => lm.setField(#_libraryField, 'lbar'));
-}
diff --git a/tests/lib/mirrors/invoke_test.dart b/tests/lib/mirrors/invoke_test.dart
deleted file mode 100644
index ca886c1..0000000
--- a/tests/lib/mirrors/invoke_test.dart
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_test;
-
-@MirrorsUsed(targets: "test.invoke_test")
-import 'dart:mirrors';
-
-import 'dart:async' show Future;
-
-import 'package:expect/expect.dart';
-
-class C {
-  var field;
-  C() : this.field = 'default';
-  C.named(this.field);
-
-  get getter => 'get $field';
-  set setter(v) => field = 'set $v';
-  method(x, y, z) => '$x+$y+$z';
-  toString() => 'a C';
-
-  noSuchMethod(invocation) => 'DNU';
-
-  static var staticField = 'initial';
-  static get staticGetter => 'sget $staticField';
-  static set staticSetter(v) => staticField = 'sset $v';
-  static staticFunction(x, y) => "($x,$y)";
-}
-
-var libraryField = 'a priori';
-get libraryGetter => 'lget $libraryField';
-set librarySetter(v) => libraryField = 'lset $v';
-libraryFunction(x, y) => '$x$y';
-
-bool isNoSuchMethodError(e) {
-  return e is NoSuchMethodError;
-}
-
-testSync() {
-  var result;
-
-  // InstanceMirror invoke
-  C c = new C();
-  InstanceMirror im = reflect(c);
-  result = im.invoke(const Symbol('method'), [2, 4, 8]);
-  Expect.equals('2+4+8', result.reflectee);
-  result = im.invoke(const Symbol('doesntExist'), [2, 4, 8]);
-  Expect.equals('DNU', result.reflectee);
-  result = im.invoke(const Symbol('method'), [2, 4]); // Wrong arity.
-  Expect.equals('DNU', result.reflectee);
-
-  // InstanceMirror invokeGetter
-  result = im.getField(const Symbol('getter'));
-  Expect.equals('get default', result.reflectee);
-  result = im.getField(const Symbol('field'));
-  Expect.equals('default', result.reflectee);
-  result = im.getField(const Symbol('doesntExist'));
-  Expect.equals('DNU', result.reflectee);
-
-  // InstanceMirror invokeSetter
-  result = im.setField(const Symbol('setter'), 'foo');
-  Expect.equals('foo', result.reflectee);
-  Expect.equals('set foo', c.field);
-  Expect.equals('set foo', im.getField(const Symbol('field')).reflectee);
-  result = im.setField(const Symbol('field'), 'bar');
-  Expect.equals('bar', result.reflectee);
-  Expect.equals('bar', c.field);
-  Expect.equals('bar', im.getField(const Symbol('field')).reflectee);
-  result = im.setField(const Symbol('doesntExist'), 'bar');
-  Expect.equals('bar', result.reflectee);
-
-  // ClassMirror invoke
-  ClassMirror cm = reflectClass(C);
-  result = cm.invoke(const Symbol('staticFunction'), [3, 4]);
-  Expect.equals('(3,4)', result.reflectee);
-  Expect.throws(() => cm.invoke(const Symbol('doesntExist'), [3, 4]),
-      isNoSuchMethodError, 'Not defined');
-  Expect.throws(() => cm.invoke(const Symbol('staticFunction'), [3]),
-      isNoSuchMethodError, 'Wrong arity');
-
-  // ClassMirror invokeGetter
-  result = cm.getField(const Symbol('staticGetter'));
-  Expect.equals('sget initial', result.reflectee);
-  result = cm.getField(const Symbol('staticField'));
-  Expect.equals('initial', result.reflectee);
-  Expect.throws(() => cm.getField(const Symbol('doesntExist')),
-      isNoSuchMethodError, 'Not defined');
-
-  // ClassMirror invokeSetter
-  result = cm.setField(const Symbol('staticSetter'), 'sfoo');
-  Expect.equals('sfoo', result.reflectee);
-  Expect.equals('sset sfoo', C.staticField);
-  Expect.equals(
-      'sset sfoo', cm.getField(const Symbol('staticField')).reflectee);
-  result = cm.setField(const Symbol('staticField'), 'sbar');
-  Expect.equals('sbar', result.reflectee);
-  Expect.equals('sbar', C.staticField);
-  Expect.equals('sbar', cm.getField(const Symbol('staticField')).reflectee);
-  Expect.throws(() => cm.setField(const Symbol('doesntExist'), 'sbar'),
-      isNoSuchMethodError, 'Not defined');
-
-  // ClassMirror invokeConstructor
-  result = cm.newInstance(const Symbol(''), []);
-  Expect.isTrue(result.reflectee is C);
-  Expect.equals('default', result.reflectee.field);
-  result = cm.newInstance(const Symbol('named'), ['my value']);
-  Expect.isTrue(result.reflectee is C);
-  Expect.equals('my value', result.reflectee.field);
-  Expect.throws(() => cm.newInstance(const Symbol('doesntExist'), ['my value']),
-      isNoSuchMethodError, 'Not defined');
-  Expect.throws(() => cm.newInstance(const Symbol('named'), []),
-      isNoSuchMethodError, 'Wrong arity');
-
-  // LibraryMirror invoke
-  LibraryMirror lm = cm.owner;
-  result = lm.invoke(const Symbol('libraryFunction'), [':', ')']);
-  Expect.equals(':)', result.reflectee);
-  Expect.throws(() => lm.invoke(const Symbol('doesntExist'), [':', ')']),
-      isNoSuchMethodError, 'Not defined');
-  Expect.throws(() => lm.invoke(const Symbol('libraryFunction'), [':']),
-      isNoSuchMethodError, 'Wrong arity');
-
-  // LibraryMirror invokeGetter
-  result = lm.getField(const Symbol('libraryGetter'));
-  Expect.equals('lget a priori', result.reflectee);
-  result = lm.getField(const Symbol('libraryField'));
-  Expect.equals('a priori', result.reflectee);
-  Expect.throws(() => lm.getField(const Symbol('doesntExist')),
-      isNoSuchMethodError, 'Not defined');
-
-  // LibraryMirror invokeSetter
-  result = lm.setField(const Symbol('librarySetter'), 'lfoo');
-  Expect.equals('lfoo', result.reflectee);
-  Expect.equals('lset lfoo', libraryField);
-  Expect.equals(
-      'lset lfoo', lm.getField(const Symbol('libraryField')).reflectee);
-  result = lm.setField(const Symbol('libraryField'), 'lbar');
-  Expect.equals('lbar', result.reflectee);
-  Expect.equals('lbar', libraryField);
-  Expect.equals('lbar', lm.getField(const Symbol('libraryField')).reflectee);
-  Expect.throws(() => lm.setField(const Symbol('doesntExist'), 'lbar'),
-      isNoSuchMethodError, 'Not defined');
-}
-
-main() {
-  testSync();
-}
diff --git a/tests/lib/mirrors/invoke_throws_test.dart b/tests/lib/mirrors/invoke_throws_test.dart
deleted file mode 100644
index a67e290..0000000
--- a/tests/lib/mirrors/invoke_throws_test.dart
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright (c) 2013, 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 test.invoke_throws_test;
-
-@MirrorsUsed(targets: "test.invoke_throws_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class MyException {}
-
-class Class {
-  Class.noException();
-  Class.generative() {
-    throw new MyException();
-  }
-  Class.redirecting() : this.generative();
-  factory Class.faktory() {
-    throw new MyException();
-  }
-  factory Class.redirectingFactory() = Class.faktory;
-
-  get getter {
-    throw new MyException();
-  }
-
-  set setter(v) {
-    throw new MyException();
-  }
-
-  method() {
-    throw new MyException();
-  }
-
-  noSuchMethod(invocation) {
-    throw new MyException();
-  }
-
-  static get staticGetter {
-    throw new MyException();
-  }
-
-  static set staticSetter(v) {
-    throw new MyException();
-  }
-
-  static staticFunction() {
-    throw new MyException();
-  }
-}
-
-get libraryGetter {
-  throw new MyException();
-}
-
-set librarySetter(v) {
-  throw new MyException();
-}
-
-libraryFunction() {
-  throw new MyException();
-}
-
-main() {
-  InstanceMirror im = reflect(new Class.noException());
-  Expect.throws(() => im.getField(#getter), (e) => e is MyException);
-  Expect.throws(() => im.setField(#setter, ['arg']), (e) => e is MyException);
-  Expect.throws(() => im.invoke(#method, []), (e) => e is MyException);
-  Expect.throws(
-      () => im.invoke(#triggerNoSuchMethod, []), (e) => e is MyException);
-
-  ClassMirror cm = reflectClass(Class);
-  Expect.throws(() => cm.getField(#staticGetter), (e) => e is MyException);
-  Expect.throws(
-      () => cm.setField(#staticSetter, ['arg']), (e) => e is MyException);
-  Expect.throws(() => cm.invoke(#staticFunction, []), (e) => e is MyException);
-  Expect.throws(() => cm.newInstance(#generative, []), (e) => e is MyException);
-  Expect.throws(
-      () => cm.newInstance(#redirecting, []), (e) => e is MyException);
-  Expect.throws(() => cm.newInstance(#faktory, []), (e) => e is MyException);
-  Expect.throws(
-      () => cm.newInstance(#redirectingFactory, []), (e) => e is MyException);
-
-  LibraryMirror lm = reflectClass(Class).owner;
-  Expect.throws(() => lm.getField(#libraryGetter), (e) => e is MyException);
-  Expect.throws(
-      () => lm.setField(#librarySetter, ['arg']), (e) => e is MyException);
-  Expect.throws(() => lm.invoke(#libraryFunction, []), (e) => e is MyException);
-}
diff --git a/tests/lib/mirrors/io_html_mutual_exclusion_test.dart b/tests/lib/mirrors/io_html_mutual_exclusion_test.dart
deleted file mode 100644
index 087b8a6..0000000
--- a/tests/lib/mirrors/io_html_mutual_exclusion_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2015, 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 test.io_html_mutual_exclusion;
-
-import 'dart:mirrors';
-
-main() {
-  var libraries = currentMirrorSystem().libraries;
-  bool has_io = libraries[Uri.parse('dart:io')] != null;
-  bool has_html = libraries[Uri.parse('dart:html')] != null;
-
-  if (has_io && has_html) {
-    throw "No embedder should have both dart:io and dart:html accessible";
-  }
-}
diff --git a/tests/lib/mirrors/is_odd_test.dart b/tests/lib/mirrors/is_odd_test.dart
deleted file mode 100644
index 533cd7f..0000000
--- a/tests/lib/mirrors/is_odd_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// Test that otherwise unused intercepted methods are reified correctly.  This
-/// was a bug in dart2js.
-library test.is_odd_test;
-
-@MirrorsUsed(targets: const ["test.is_odd_test", "isOdd", "int"])
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-main() {
-  Expect.isTrue(reflect(1).getField(#isOdd).reflectee);
-  Expect.isFalse(reflect(2).getField(#isOdd).reflectee);
-}
diff --git a/tests/lib/mirrors/lazy_static_test.dart b/tests/lib/mirrors/lazy_static_test.dart
deleted file mode 100644
index 381b5fa..0000000
--- a/tests/lib/mirrors/lazy_static_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test static members.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'stringify.dart';
-
-class Foo {
-  static var hello = {
-    'a': 'b',
-    'c': 'd',
-  };
-}
-
-void main() {
-  expect('Variable(s(hello) in s(Foo), static)',
-      reflectClass(Foo).declarations[#hello]);
-  var reflectee = reflectClass(Foo).getField(#hello).reflectee;
-  Expect.stringEquals('a, c', reflectee.keys.join(', '));
-  // Call the lazy getter twice as different things probably happen in the
-  // underlying implementation.
-  reflectee = reflectClass(Foo).getField(#hello).reflectee;
-  Expect.stringEquals('a, c', reflectee.keys.join(', '));
-  var value = 'fisk';
-  Foo.hello = value;
-  reflectee = reflectClass(Foo).getField(#hello).reflectee;
-  Expect.identical(value, reflectee);
-}
diff --git a/tests/lib/mirrors/libraries_test.dart b/tests/lib/mirrors/libraries_test.dart
deleted file mode 100644
index 0de28f3..0000000
--- a/tests/lib/mirrors/libraries_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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 test.libraries_test;
-
-@MirrorsUsed(targets: "test.libraries_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-main() {
-  MirrorSystem mirrors = currentMirrorSystem();
-  Expect.isNotNull(mirrors, 'mirrors is null');
-
-  Map<Uri, LibraryMirror> libraries = mirrors.libraries;
-  Expect.isNotNull(libraries, 'libraries is null');
-
-  Expect.isTrue(libraries.isNotEmpty);
-  LibraryMirror mirrorsLibrary = libraries[Uri.parse('dart:mirrors')];
-  if (mirrorsLibrary == null) {
-    // In minified mode we don't preserve the URIs.
-    mirrorsLibrary = libraries.values
-        .firstWhere((LibraryMirror lm) => lm.simpleName == #dart.mirrors);
-    Uri uri = mirrorsLibrary.uri;
-    Expect.equals("https", uri.scheme);
-    Expect.equals("dartlang.org", uri.host);
-    Expect.equals("/dart2js-stripped-uri", uri.path);
-  }
-
-  ClassMirror cls = mirrorsLibrary.declarations[#LibraryMirror];
-  Expect.isNotNull(cls, 'cls is null');
-
-  Expect.equals(#dart.mirrors.LibraryMirror, cls.qualifiedName);
-  Expect.equals(reflectClass(LibraryMirror), cls);
-}
diff --git a/tests/lib/mirrors/library_declarations_test.dart b/tests/lib/mirrors/library_declarations_test.dart
deleted file mode 100644
index 80cd982..0000000
--- a/tests/lib/mirrors/library_declarations_test.dart
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright (c) 2013, 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 test.library_declarations_test;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'stringify.dart';
-import 'declarations_model.dart' as declarations_model;
-
-main() {
-  LibraryMirror lm =
-      currentMirrorSystem().findLibrary(#test.declarations_model);
-
-  Expect.setEquals([
-    'Variable(s(_libraryVariable)'
-        ' in s(test.declarations_model), private, top-level, static)',
-    'Variable(s(libraryVariable)'
-        ' in s(test.declarations_model), top-level, static)'
-  ], lm.declarations.values.where((dm) => dm is VariableMirror).map(stringify),
-      'variables');
-
-  // dart2js stops testing here.
-  return; // //# 01: ok
-
-  Expect.setEquals(
-      [
-        'Method(s(_libraryGetter)'
-            ' in s(test.declarations_model), private, top-level, static, getter)',
-        'Method(s(libraryGetter)'
-            ' in s(test.declarations_model), top-level, static, getter)'
-      ],
-      lm.declarations.values
-          .where((dm) => dm is MethodMirror && dm.isGetter)
-          .map(stringify),
-      'getters');
-
-  Expect.setEquals(
-      [
-        'Method(s(_librarySetter=)'
-            ' in s(test.declarations_model), private, top-level, static, setter)',
-        'Method(s(librarySetter=)'
-            ' in s(test.declarations_model), top-level, static, setter)'
-      ],
-      lm.declarations.values
-          .where((dm) => dm is MethodMirror && dm.isSetter)
-          .map(stringify),
-      'setters');
-
-  Expect.setEquals(
-      [
-        'Method(s(_libraryMethod)'
-            ' in s(test.declarations_model), private, top-level, static)',
-        'Method(s(libraryMethod)'
-            ' in s(test.declarations_model), top-level, static)'
-      ],
-      lm.declarations.values
-          .where((dm) => dm is MethodMirror && dm.isRegularMethod)
-          .map(stringify),
-      'regular methods');
-
-  Expect.setEquals([
-    'Class(s(Class) in s(test.declarations_model), top-level)',
-    'Class(s(ConcreteClass) in s(test.declarations_model), top-level)',
-    'Class(s(Interface) in s(test.declarations_model), top-level)',
-    'Class(s(Mixin) in s(test.declarations_model), top-level)',
-    'Class(s(Superclass) in s(test.declarations_model), top-level)',
-    'Class(s(_PrivateClass)'
-        ' in s(test.declarations_model), private, top-level)'
-  ], lm.declarations.values.where((dm) => dm is ClassMirror).map(stringify),
-      'classes');
-
-  Expect.setEquals([
-    'Class(s(Class) in s(test.declarations_model), top-level)',
-    'Class(s(ConcreteClass) in s(test.declarations_model), top-level)',
-    'Class(s(Interface) in s(test.declarations_model), top-level)',
-    'Class(s(Mixin) in s(test.declarations_model), top-level)',
-    'Type(s(Predicate) in s(test.declarations_model), top-level)',
-    'Class(s(Superclass) in s(test.declarations_model), top-level)',
-    'Class(s(_PrivateClass)'
-        ' in s(test.declarations_model), private, top-level)'
-  ], lm.declarations.values.where((dm) => dm is TypeMirror).map(stringify),
-      'types');
-
-  Expect.setEquals([
-    'Class(s(Class) in s(test.declarations_model), top-level)',
-    'Class(s(ConcreteClass) in s(test.declarations_model), top-level)',
-    'Class(s(Interface) in s(test.declarations_model), top-level)',
-    'Class(s(Mixin) in s(test.declarations_model), top-level)',
-    'Type(s(Predicate) in s(test.declarations_model), top-level)',
-    'Class(s(Superclass) in s(test.declarations_model), top-level)',
-    'Method(s(libraryGetter)'
-        ' in s(test.declarations_model), top-level, static, getter)',
-    'Method(s(libraryMethod)'
-        ' in s(test.declarations_model), top-level, static)',
-    'Method(s(librarySetter=)'
-        ' in s(test.declarations_model), top-level, static, setter)',
-    'Variable(s(libraryVariable)'
-        ' in s(test.declarations_model), top-level, static)'
-  ], lm.declarations.values.where((dm) => !dm.isPrivate).map(stringify),
-      'public');
-
-  Expect.setEquals([
-    'Class(s(Class) in s(test.declarations_model), top-level)',
-    'Class(s(ConcreteClass) in s(test.declarations_model), top-level)',
-    'Class(s(Interface) in s(test.declarations_model), top-level)',
-    'Class(s(Mixin) in s(test.declarations_model), top-level)',
-    'Type(s(Predicate) in s(test.declarations_model), top-level)',
-    'Class(s(Superclass) in s(test.declarations_model), top-level)',
-    'Class(s(_PrivateClass) in s(test.declarations_model), private, top-level)',
-    'Method(s(_libraryGetter)'
-        ' in s(test.declarations_model), private, top-level, static, getter)',
-    'Method(s(_libraryMethod)'
-        ' in s(test.declarations_model), private, top-level, static)',
-    'Method(s(_librarySetter=)'
-        ' in s(test.declarations_model), private, top-level, static, setter)',
-    'Variable(s(_libraryVariable)'
-        ' in s(test.declarations_model), private, top-level, static)',
-    'Method(s(libraryGetter)'
-        ' in s(test.declarations_model), top-level, static, getter)',
-    'Method(s(libraryMethod) in s(test.declarations_model), top-level, static)',
-    'Method(s(librarySetter=)'
-        ' in s(test.declarations_model), top-level, static, setter)',
-    'Variable(s(libraryVariable)'
-        ' in s(test.declarations_model), top-level, static)'
-  ], lm.declarations.values.map(stringify), 'all declarations');
-}
diff --git a/tests/lib/mirrors/library_enumeration_deferred_loading_test.dart b/tests/lib/mirrors/library_enumeration_deferred_loading_test.dart
deleted file mode 100644
index 7783b74..0000000
--- a/tests/lib/mirrors/library_enumeration_deferred_loading_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2015, 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 library_enumeration_deferred_loading;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-
-import 'other_library.dart' deferred as other;
-
-main() {
-  var ms = currentMirrorSystem();
-  Expect.throws(() => ms.findLibrary(#test.other_library), (e) => true,
-      "should not be loaded yet");
-
-  asyncStart();
-  other.loadLibrary().then((_) {
-    asyncEnd();
-    LibraryMirror otherMirror = ms.findLibrary(#test.other_library);
-    Expect.isNotNull(otherMirror);
-    Expect.equals(#test.other_library, otherMirror.simpleName);
-    Expect.equals(42, other.topLevelMethod());
-  });
-}
diff --git a/tests/lib/mirrors/library_exports_hidden.dart b/tests/lib/mirrors/library_exports_hidden.dart
deleted file mode 100644
index c1ea081..0000000
--- a/tests/lib/mirrors/library_exports_hidden.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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 library_exports_hidden;
-
-export 'library_imports_a.dart' hide somethingFromA, somethingFromBoth;
-export 'library_imports_b.dart' hide somethingFromB;
-
-var somethingFromHidden;
diff --git a/tests/lib/mirrors/library_exports_hidden_test.dart b/tests/lib/mirrors/library_exports_hidden_test.dart
deleted file mode 100644
index e69fef4..0000000
--- a/tests/lib/mirrors/library_exports_hidden_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, 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 test.library_exports_hidden;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'library_exports_hidden.dart';
-
-test(MirrorSystem mirrors) {
-  LibraryMirror hidden = mirrors.findLibrary(#library_exports_hidden);
-  LibraryMirror a = mirrors.findLibrary(#library_imports_a);
-  LibraryMirror b = mirrors.findLibrary(#library_imports_b);
-  LibraryMirror core = mirrors.findLibrary(#dart.core);
-
-  Expect.setEquals(
-      [a, b, core], hidden.libraryDependencies.map((dep) => dep.targetLibrary));
-
-  Expect.stringEquals(
-      'import dart.core\n'
-      'export library_imports_a\n'
-      ' hide somethingFromA\n'
-      ' hide somethingFromBoth\n'
-      'export library_imports_b\n'
-      ' hide somethingFromB\n',
-      stringifyDependencies(hidden));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/library_exports_shown.dart b/tests/lib/mirrors/library_exports_shown.dart
deleted file mode 100644
index 524ab4c..0000000
--- a/tests/lib/mirrors/library_exports_shown.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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 library_exports_shown;
-
-export 'library_imports_a.dart' show somethingFromA, somethingFromBoth;
-export 'library_imports_b.dart' show somethingFromB;
-
-var somethingFromShown;
diff --git a/tests/lib/mirrors/library_exports_shown_test.dart b/tests/lib/mirrors/library_exports_shown_test.dart
deleted file mode 100644
index 003de2f..0000000
--- a/tests/lib/mirrors/library_exports_shown_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, 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 test.library_exports_shown;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'library_exports_shown.dart';
-
-test(MirrorSystem mirrors) {
-  LibraryMirror shown = mirrors.findLibrary(#library_exports_shown);
-  LibraryMirror a = mirrors.findLibrary(#library_imports_a);
-  LibraryMirror b = mirrors.findLibrary(#library_imports_b);
-
-  LibraryMirror core = mirrors.findLibrary(#dart.core);
-
-  Expect.setEquals(
-      [a, b, core], shown.libraryDependencies.map((dep) => dep.targetLibrary));
-
-  Expect.stringEquals(
-      'import dart.core\n'
-      'export library_imports_a\n'
-      ' show somethingFromA\n'
-      ' show somethingFromBoth\n'
-      'export library_imports_b\n'
-      ' show somethingFromB\n',
-      stringifyDependencies(shown));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/library_import_deferred_loading_test.dart b/tests/lib/mirrors/library_import_deferred_loading_test.dart
deleted file mode 100644
index 9b22827..0000000
--- a/tests/lib/mirrors/library_import_deferred_loading_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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 library_loading_deferred_loading;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-import 'package:async_helper/async_helper.dart';
-
-import 'other_library.dart' deferred as other;
-
-main() {
-  var ms = currentMirrorSystem();
-  LibraryMirror thisLibrary = ms.findLibrary(#library_loading_deferred_loading);
-  LibraryDependencyMirror dep =
-      thisLibrary.libraryDependencies.singleWhere((d) => d.prefix == #other);
-  Expect.isNull(dep.targetLibrary, "should not be loaded yet");
-
-  asyncStart();
-  other.loadLibrary().then((_) {
-    asyncEnd();
-    Expect.isNotNull(dep.targetLibrary);
-    Expect.equals(#test.other_library, dep.targetLibrary.simpleName);
-    Expect.equals(42, other.topLevelMethod());
-  });
-}
diff --git a/tests/lib/mirrors/library_imports_a.dart b/tests/lib/mirrors/library_imports_a.dart
deleted file mode 100644
index afdc329..0000000
--- a/tests/lib/mirrors/library_imports_a.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2014, 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 library_imports_a;
-
-var somethingFromA;
-var somethingFromBoth;
diff --git a/tests/lib/mirrors/library_imports_b.dart b/tests/lib/mirrors/library_imports_b.dart
deleted file mode 100644
index 493f323..0000000
--- a/tests/lib/mirrors/library_imports_b.dart
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (c) 2014, 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 library_imports_b;
-
-var somethingFromB;
-var somethingFromBoth;
diff --git a/tests/lib/mirrors/library_imports_bad_metadata_test.dart b/tests/lib/mirrors/library_imports_bad_metadata_test.dart
deleted file mode 100644
index 43d873b..0000000
--- a/tests/lib/mirrors/library_imports_bad_metadata_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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 test.library_imports_bad_metadata;
-
-@undefined // //# 01: compile-time error
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-main() {
-  LibraryMirror thisLibrary =
-      currentMirrorSystem().findLibrary(#test.library_imports_bad_metadata);
-
-  thisLibrary.libraryDependencies.forEach((dep) {
-    Expect.listEquals([], dep.metadata);
-  });
-}
diff --git a/tests/lib/mirrors/library_imports_deferred_test.dart b/tests/lib/mirrors/library_imports_deferred_test.dart
deleted file mode 100644
index ab2668d..0000000
--- a/tests/lib/mirrors/library_imports_deferred_test.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright (c) 2015, 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 test.library_imports_deferred;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'dart:collection' as eagercollection;
-import 'dart:collection' deferred as lazycollection;
-
-test(MirrorSystem mirrors) {
-  LibraryMirror thisLibrary =
-      mirrors.findLibrary(#test.library_imports_deferred);
-  LibraryMirror collection = mirrors.findLibrary(#dart.collection);
-
-  var importsOfCollection = thisLibrary.libraryDependencies
-      .where((dep) => dep.targetLibrary == collection)
-      .toList();
-  Expect.equals(2, importsOfCollection.length);
-  Expect.notEquals(importsOfCollection[0].isDeferred,
-      importsOfCollection[1].isDeferred); // One deferred, one not.
-
-  // Only collection is defer-imported.
-  LibraryDependencyMirror dep =
-      thisLibrary.libraryDependencies.singleWhere((dep) => dep.isDeferred);
-  Expect.equals(collection, dep.targetLibrary);
-
-  Expect.stringEquals(
-      'import dart.collection as eagercollection\n'
-      'import dart.collection deferred as lazycollection\n'
-      ' hide loadLibrary\n'
-      'import dart.core\n'
-      'import dart.mirrors\n'
-      'import expect\n'
-      'import test.stringify\n',
-      stringifyDependencies(thisLibrary));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/library_imports_hidden.dart b/tests/lib/mirrors/library_imports_hidden.dart
deleted file mode 100644
index deccc64..0000000
--- a/tests/lib/mirrors/library_imports_hidden.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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 library_imports_hidden;
-
-import 'library_imports_a.dart' hide somethingFromA, somethingFromBoth;
-import 'library_imports_b.dart' hide somethingFromB;
-
-var somethingFromHidden;
diff --git a/tests/lib/mirrors/library_imports_hidden_test.dart b/tests/lib/mirrors/library_imports_hidden_test.dart
deleted file mode 100644
index edc19e0..0000000
--- a/tests/lib/mirrors/library_imports_hidden_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, 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 test.library_imports_hidden;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'library_imports_hidden.dart';
-
-test(MirrorSystem mirrors) {
-  LibraryMirror hidden = mirrors.findLibrary(#library_imports_hidden);
-  LibraryMirror a = mirrors.findLibrary(#library_imports_a);
-  LibraryMirror b = mirrors.findLibrary(#library_imports_b);
-  LibraryMirror core = mirrors.findLibrary(#dart.core);
-
-  Expect.setEquals(
-      [a, b, core], hidden.libraryDependencies.map((dep) => dep.targetLibrary));
-
-  Expect.stringEquals(
-      'import dart.core\n'
-      'import library_imports_a\n'
-      ' hide somethingFromA\n'
-      ' hide somethingFromBoth\n'
-      'import library_imports_b\n'
-      ' hide somethingFromB\n',
-      stringifyDependencies(hidden));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/library_imports_metadata.dart b/tests/lib/mirrors/library_imports_metadata.dart
deleted file mode 100644
index 15e0403..0000000
--- a/tests/lib/mirrors/library_imports_metadata.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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 library_imports_metadata;
-
-@m1
-import 'dart:mirrors' as mirrors;
-
-@m2
-@m3
-import 'dart:collection';
-
-import 'dart:async';
-
-const m1 = const Object();
-const m2 = const Object();
-const m3 = const Object();
diff --git a/tests/lib/mirrors/library_imports_metadata_test.dart b/tests/lib/mirrors/library_imports_metadata_test.dart
deleted file mode 100644
index ab1c15d..0000000
--- a/tests/lib/mirrors/library_imports_metadata_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2014, 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 test.library_imports;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'library_imports_metadata.dart';
-
-main() {
-  LibraryMirror lib =
-      currentMirrorSystem().findLibrary(#library_imports_metadata);
-
-  LibraryMirror core = currentMirrorSystem().findLibrary(#dart.core);
-  LibraryMirror mirrors = currentMirrorSystem().findLibrary(#dart.mirrors);
-  LibraryMirror collection =
-      currentMirrorSystem().findLibrary(#dart.collection);
-  LibraryMirror async = currentMirrorSystem().findLibrary(#dart.async);
-
-  Expect.setEquals([core, mirrors, collection, async],
-      lib.libraryDependencies.map((dep) => dep.targetLibrary));
-
-  Expect.stringEquals(
-      'import dart.async\n'
-      'import dart.collection\n'
-      'import dart.core\n'
-      'import dart.mirrors as mirrors\n',
-      stringifyDependencies(lib));
-
-  Expect.listEquals(
-      [].map(reflect).toList(),
-      lib.libraryDependencies
-          .singleWhere((dep) => dep.targetLibrary == core)
-          .metadata);
-
-  Expect.listEquals(
-      [m1].map(reflect).toList(),
-      lib.libraryDependencies
-          .singleWhere((dep) => dep.targetLibrary == mirrors)
-          .metadata);
-
-  Expect.listEquals(
-      [m2, m3].map(reflect).toList(),
-      lib.libraryDependencies
-          .singleWhere((dep) => dep.targetLibrary == collection)
-          .metadata);
-
-  Expect.listEquals(
-      [].map(reflect).toList(),
-      lib.libraryDependencies
-          .singleWhere((dep) => dep.targetLibrary == async)
-          .metadata);
-}
diff --git a/tests/lib/mirrors/library_imports_prefixed.dart b/tests/lib/mirrors/library_imports_prefixed.dart
deleted file mode 100644
index ad50f42..0000000
--- a/tests/lib/mirrors/library_imports_prefixed.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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 library_imports_prefixed;
-
-import 'library_imports_a.dart' as prefixa;
-import 'library_imports_b.dart' as prefixb;
-
-var somethingFromPrefixed;
diff --git a/tests/lib/mirrors/library_imports_prefixed_show_hide.dart b/tests/lib/mirrors/library_imports_prefixed_show_hide.dart
deleted file mode 100644
index ea7c71f..0000000
--- a/tests/lib/mirrors/library_imports_prefixed_show_hide.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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 library_imports_prefixed_show_hide;
-
-import 'library_imports_a.dart' as prefixa show somethingFromA;
-import 'library_imports_b.dart' as prefixb hide somethingFromB;
-
-var somethingFromPrefixed;
diff --git a/tests/lib/mirrors/library_imports_prefixed_show_hide_test.dart b/tests/lib/mirrors/library_imports_prefixed_show_hide_test.dart
deleted file mode 100644
index a4089c0..0000000
--- a/tests/lib/mirrors/library_imports_prefixed_show_hide_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, 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 test.library_imports_prefixed_show_hide;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'library_imports_prefixed_show_hide.dart';
-
-test(MirrorSystem mirrors) {
-  LibraryMirror prefixed_show_hide =
-      mirrors.findLibrary(#library_imports_prefixed_show_hide);
-  LibraryMirror a = mirrors.findLibrary(#library_imports_a);
-  LibraryMirror b = mirrors.findLibrary(#library_imports_b);
-  LibraryMirror core = mirrors.findLibrary(#dart.core);
-
-  Expect.setEquals([a, b, core],
-      prefixed_show_hide.libraryDependencies.map((dep) => dep.targetLibrary));
-
-  Expect.stringEquals(
-      'import dart.core\n'
-      'import library_imports_a as prefixa\n'
-      ' show somethingFromA\n'
-      'import library_imports_b as prefixb\n'
-      ' hide somethingFromB\n',
-      stringifyDependencies(prefixed_show_hide));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/library_imports_prefixed_test.dart b/tests/lib/mirrors/library_imports_prefixed_test.dart
deleted file mode 100644
index 7915fae..0000000
--- a/tests/lib/mirrors/library_imports_prefixed_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2014, 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 test.library_imports_prefixed;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'library_imports_prefixed.dart';
-
-test(MirrorSystem mirrors) {
-  LibraryMirror prefixed = mirrors.findLibrary(#library_imports_prefixed);
-  LibraryMirror a = mirrors.findLibrary(#library_imports_a);
-  LibraryMirror b = mirrors.findLibrary(#library_imports_b);
-  LibraryMirror core = mirrors.findLibrary(#dart.core);
-
-  Expect.setEquals([a, b, core],
-      prefixed.libraryDependencies.map((dep) => dep.targetLibrary));
-
-  Expect.stringEquals(
-      'import dart.core\n'
-      'import library_imports_a as prefixa\n'
-      'import library_imports_b as prefixb\n',
-      stringifyDependencies(prefixed));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/library_imports_shown.dart b/tests/lib/mirrors/library_imports_shown.dart
deleted file mode 100644
index 6790902..0000000
--- a/tests/lib/mirrors/library_imports_shown.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2014, 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 library_imports_shown;
-
-import 'library_imports_a.dart' show somethingFromA, somethingFromBoth;
-import 'library_imports_b.dart' show somethingFromB;
-
-var somethingFromShown;
diff --git a/tests/lib/mirrors/library_imports_shown_test.dart b/tests/lib/mirrors/library_imports_shown_test.dart
deleted file mode 100644
index 44086e2..0000000
--- a/tests/lib/mirrors/library_imports_shown_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, 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 test.library_imports_shown;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-import 'library_imports_shown.dart';
-
-test(MirrorSystem mirrors) {
-  LibraryMirror shown = mirrors.findLibrary(#library_imports_shown);
-  LibraryMirror a = mirrors.findLibrary(#library_imports_a);
-  LibraryMirror b = mirrors.findLibrary(#library_imports_b);
-  LibraryMirror core = mirrors.findLibrary(#dart.core);
-
-  Expect.setEquals(
-      [a, b, core], shown.libraryDependencies.map((dep) => dep.targetLibrary));
-
-  Expect.stringEquals(
-      'import dart.core\n'
-      'import library_imports_a\n'
-      ' show somethingFromA\n'
-      ' show somethingFromBoth\n'
-      'import library_imports_b\n'
-      ' show somethingFromB\n',
-      stringifyDependencies(shown));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/library_metadata2_lib1.dart b/tests/lib/mirrors/library_metadata2_lib1.dart
deleted file mode 100644
index 75149b3..0000000
--- a/tests/lib/mirrors/library_metadata2_lib1.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2013, 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.
-
-@MyConst()
-library lib1;
-
-class MyConst {
-  const MyConst();
-}
diff --git a/tests/lib/mirrors/library_metadata2_lib2.dart b/tests/lib/mirrors/library_metadata2_lib2.dart
deleted file mode 100644
index b8a447f..0000000
--- a/tests/lib/mirrors/library_metadata2_lib2.dart
+++ /dev/null
@@ -1,6 +0,0 @@
-// Copyright (c) 2013, 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.
-
-@MyConst()
-library lib2;
diff --git a/tests/lib/mirrors/library_metadata2_test.dart b/tests/lib/mirrors/library_metadata2_test.dart
deleted file mode 100644
index b6fc2d9..0000000
--- a/tests/lib/mirrors/library_metadata2_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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:mirrors';
-
-import 'library_metadata2_lib1.dart';
-
-import 'library_metadata2_lib2.dart'; //# 01: compile-time error
-
-void main() {
-  for (var library in currentMirrorSystem().libraries.values) {
-    print(library.metadata); // Processing @MyConst() in lib2 results in a
-    // delayed compilation error here.
-  }
-}
diff --git a/tests/lib/mirrors/library_metadata_test.dart b/tests/lib/mirrors/library_metadata_test.dart
deleted file mode 100644
index f1b1870..0000000
--- a/tests/lib/mirrors/library_metadata_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-@string
-@symbol
-library test.library_metadata_test;
-
-@MirrorsUsed(targets: "test.library_metadata_test")
-import 'dart:mirrors';
-
-import 'metadata_test.dart';
-
-main() {
-  MirrorSystem mirrors = currentMirrorSystem();
-  checkMetadata(
-      mirrors.findLibrary(#test.library_metadata_test), [string, symbol]);
-  checkMetadata(mirrors.findLibrary(#test.metadata_test), []);
-}
diff --git a/tests/lib/mirrors/library_metatarget_test.dart b/tests/lib/mirrors/library_metatarget_test.dart
deleted file mode 100644
index 1f7c24b..0000000
--- a/tests/lib/mirrors/library_metatarget_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for the combined use of metatargets and library tags.
-
-library topLib;
-
-import 'library_metatarget_test_lib.dart';
-import 'library_metatarget_test_annotations_lib.dart';
-
-@MirrorsUsed(metaTargets: const [Reflectable])
-import 'dart:mirrors';
-
-void main() {
-  print(new A());
-}
diff --git a/tests/lib/mirrors/library_metatarget_test_annotations_lib.dart b/tests/lib/mirrors/library_metatarget_test_annotations_lib.dart
deleted file mode 100644
index 9464fa7..0000000
--- a/tests/lib/mirrors/library_metatarget_test_annotations_lib.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for the combined use of metatargets and library tags.
-
-library annotations;
-
-class UsedOnlyOnLibrary {
-  const UsedOnlyOnLibrary();
-}
-
-const usedOnlyOnLibrary = const UsedOnlyOnLibrary();
-
-class Reflectable {
-  const Reflectable();
-}
-
-const Reflectable reflectable = const Reflectable();
diff --git a/tests/lib/mirrors/library_metatarget_test_lib.dart b/tests/lib/mirrors/library_metatarget_test_lib.dart
deleted file mode 100644
index f8126c1..0000000
--- a/tests/lib/mirrors/library_metatarget_test_lib.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for the combined use of metatargets and library tags.
-
-@usedOnlyOnLibrary
-library subLib;
-
-import 'library_metatarget_test_annotations_lib.dart';
-
-class A {
-  @reflectable
-  var reflectableField = 1;
-  var nonreflectableField = 2;
-}
diff --git a/tests/lib/mirrors/library_uri_io_test.dart b/tests/lib/mirrors/library_uri_io_test.dart
deleted file mode 100644
index 96d058e..0000000
--- a/tests/lib/mirrors/library_uri_io_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test library uri for a library read as a file.
-
-library MirrorsTest;
-
-import 'dart:mirrors';
-import 'dart:io';
-import 'package:unittest/unittest.dart';
-
-class Class {}
-
-testLibraryUri(var value, Uri expectedUri) {
-  var valueMirror = reflect(value);
-  ClassMirror valueClass = valueMirror.type;
-  LibraryMirror valueLibrary = valueClass.owner;
-  expect(valueLibrary.uri, equals(expectedUri));
-}
-
-main() {
-  var mirrors = currentMirrorSystem();
-  test("Test current library uri", () {
-    Uri uri = Uri.base.resolveUri(Platform.script);
-    testLibraryUri(new Class(), uri);
-  });
-}
diff --git a/tests/lib/mirrors/library_uri_package_test.dart b/tests/lib/mirrors/library_uri_package_test.dart
deleted file mode 100644
index 42ef380..0000000
--- a/tests/lib/mirrors/library_uri_package_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2011, 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.
-
-// Test library uri for a library read as a package .
-
-library MirrorsTest;
-
-import 'dart:mirrors';
-import 'package:args/args.dart';
-import 'package:unittest/unittest.dart';
-
-testLibraryUri(var value, Uri expectedUri) {
-  var valueMirror = reflect(value);
-  ClassMirror valueClass = valueMirror.type;
-  LibraryMirror valueLibrary = valueClass.owner;
-  Uri uri = valueLibrary.uri;
-  if (uri.scheme != "https" ||
-      uri.host != "dartlang.org" ||
-      uri.path != "/dart2js-stripped-uri") {
-    expect(uri, equals(expectedUri));
-  }
-}
-
-main() {
-  var mirrors = currentMirrorSystem();
-  test("Test package library uri", () {
-    testLibraryUri(
-        new ArgParser(), Uri.parse('package:args/src/arg_parser.dart'));
-  });
-}
diff --git a/tests/lib/mirrors/library_with_annotated_declaration.dart b/tests/lib/mirrors/library_with_annotated_declaration.dart
deleted file mode 100644
index 07a498b..0000000
--- a/tests/lib/mirrors/library_with_annotated_declaration.dart
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright (c) 2015, 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.
-
-@metadata
-library library_with_annotated_declaration;
-
-const metadata = 'metadata';
-
-class ClassInLibraryWithAnnotatedDeclaration {}
diff --git a/tests/lib/mirrors/library_without_declaration.dart b/tests/lib/mirrors/library_without_declaration.dart
deleted file mode 100644
index d9e1fe4..0000000
--- a/tests/lib/mirrors/library_without_declaration.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// NO LIBRARY DECLARATION
-
-class ClassInLibraryWithoutDeclaration {}
diff --git a/tests/lib/mirrors/list_constructor_test.dart b/tests/lib/mirrors/list_constructor_test.dart
deleted file mode 100644
index b0cfa3a..0000000
--- a/tests/lib/mirrors/list_constructor_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-import "package:expect/expect.dart";
-
-@MirrorsUsed(targets: const ["lib", "dart.core"])
-import 'dart:mirrors';
-
-main() {
-  var cls = reflectClass(List);
-  Expect.throws(() => cls.newInstance(const Symbol(''), [null]),
-      (e) => e is ArgumentError);
-
-  var list = cls.newInstance(const Symbol(''), [42]).reflectee;
-  // Check that the list is fixed.
-  Expect.equals(42, list.length);
-  Expect.throws(() => list.add(2), (e) => e is UnsupportedError);
-  list[0] = 1;
-  Expect.equals(1, list[0]);
-
-  testGrowableList(); //# 01: ok
-}
-
-testGrowableList() {
-  var cls = reflectClass(List);
-  var list = cls.newInstance(const Symbol(''), []).reflectee;
-  // Check that the list is growable.
-  Expect.equals(0, list.length);
-  list.add(42);
-  Expect.equals(1, list.length);
-}
diff --git a/tests/lib/mirrors/load_library_test.dart b/tests/lib/mirrors/load_library_test.dart
deleted file mode 100644
index a43d3f2..0000000
--- a/tests/lib/mirrors/load_library_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2015, 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 load_library;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'package:async_helper/async_helper.dart';
-
-import 'other_library.dart' deferred as other;
-
-main() {
-  var ms = currentMirrorSystem();
-  LibraryMirror thisLibrary = ms.findLibrary(#load_library);
-  var dep =
-      thisLibrary.libraryDependencies.singleWhere((d) => d.prefix == #other);
-  Expect.isNull(dep.targetLibrary, "should not be loaded yet");
-
-  asyncStart();
-  dep.loadLibrary().then((_) {
-    asyncEnd();
-    Expect.isNotNull(dep.targetLibrary);
-    Expect.equals(#test.other_library, dep.targetLibrary.simpleName);
-    Expect.equals(42, other.topLevelMethod());
-  });
-}
diff --git a/tests/lib/mirrors/local_function_is_static_test.dart b/tests/lib/mirrors/local_function_is_static_test.dart
deleted file mode 100644
index cf1df48..0000000
--- a/tests/lib/mirrors/local_function_is_static_test.dart
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014, 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 test.local_function_is_static;
-
-@MirrorsUsed(targets: "test.local_function_is_static")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-topLevel() => 1;
-topLevelLocal() => () => 2;
-
-class C {
-  static klass() => 3;
-  static klassLocal() => () => 4;
-  instance() => 5;
-  instanceLocal() => () => 6;
-}
-
-main() {
-  var f = topLevel;
-  Expect.equals(1, f());
-  Expect.isTrue((reflect(f) as ClosureMirror).function.isStatic);
-
-  f = topLevelLocal();
-  Expect.equals(2, f());
-  Expect.isTrue((reflect(f) as ClosureMirror).function.isStatic);
-
-  f = C.klass;
-  Expect.equals(3, f());
-  Expect.isTrue((reflect(f) as ClosureMirror).function.isStatic);
-
-  f = C.klassLocal();
-  Expect.equals(4, f());
-  Expect.isTrue((reflect(f) as ClosureMirror).function.isStatic);
-
-  f = new C().instance;
-  Expect.equals(5, f());
-  Expect.isFalse((reflect(f) as ClosureMirror).function.isStatic);
-
-  f = new C().instanceLocal();
-  Expect.equals(6, f());
-  Expect.isFalse((reflect(f) as ClosureMirror).function.isStatic);
-}
diff --git a/tests/lib/mirrors/local_isolate_test.dart b/tests/lib/mirrors/local_isolate_test.dart
deleted file mode 100644
index 27ca35a..0000000
--- a/tests/lib/mirrors/local_isolate_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test the local IsolateMirror.
-
-library test.local_isolate_test;
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Foo {}
-
-void main() {
-  LibraryMirror rootLibrary = reflectClass(Foo).owner;
-  IsolateMirror isolate = currentMirrorSystem().isolate;
-  Expect.isTrue(isolate.debugName is String);
-  Expect.isTrue(isolate.isCurrent);
-  Expect.equals(rootLibrary, isolate.rootLibrary);
-}
diff --git a/tests/lib/mirrors/metadata_allowed_values_import.dart b/tests/lib/mirrors/metadata_allowed_values_import.dart
deleted file mode 100644
index 67df4e2..0000000
--- a/tests/lib/mirrors/metadata_allowed_values_import.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (c) 2013, 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 Imported {
-  const Imported();
-  const Imported.named();
-  static const CONSTANT = 0;
-}
diff --git a/tests/lib/mirrors/metadata_allowed_values_test.dart b/tests/lib/mirrors/metadata_allowed_values_test.dart
deleted file mode 100644
index 3204730..0000000
--- a/tests/lib/mirrors/metadata_allowed_values_test.dart
+++ /dev/null
@@ -1,224 +0,0 @@
-// Copyright (c) 2013, 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 test.metadata_allowed_values;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'metadata_allowed_values_import.dart'; // Unprefixed.
-import 'metadata_allowed_values_import.dart' as prefix;
-
-@A // //# 01: compile-time error
-class A {}
-
-@B.CONSTANT
-class B {
-  static const CONSTANT = 3;
-}
-
-@C(3)
-class C {
-  final field;
-  const C(this.field);
-}
-
-@D.named(4)
-class D {
-  final field;
-  const D.named(this.field);
-}
-
-@E.NOT_CONSTANT // //# 02: compile-time error
-class E {
-  static var NOT_CONSTANT = 3;
-}
-
-@F(6) // //# 03: compile-time error
-class F {
-  final field;
-  F(this.field);
-}
-
-@G.named(4) // //# 04: compile-time error
-class G {
-  final field;
-  G.named(this.field);
-}
-
-@H<int>() // //# 05: compile-time error
-class H<T> {
-  const H();
-}
-
-@I[0] // //# 06: compile-time error
-class I {}
-
-@this.toString // //# 07: compile-time error
-class J {}
-
-@super.toString // //# 08: compile-time error
-class K {}
-
-@L.func() // //# 09: compile-time error
-class L {
-  static func() => 6;
-}
-
-@Imported // //# 10: compile-time error
-class M {}
-
-@Imported()
-class N {}
-
-@Imported.named()
-class O {}
-
-@Imported.CONSTANT
-class P {}
-
-@prefix.Imported // //# 11: compile-time error
-class Q {}
-
-@prefix.Imported()
-class R {}
-
-@prefix.Imported.named()
-class S {}
-
-@prefix.Imported.CONSTANT
-class T {}
-
-@U..toString() // //# 12: compile-time error
-class U {}
-
-@V.tearOff // //# 13: compile-time error
-class V {
-  static tearOff() {}
-}
-
-topLevelTearOff() => 4;
-
-@topLevelTearOff // //# 14: compile-time error
-class W {}
-
-@TypeParameter // //# 15: compile-time error
-class X<TypeParameter> {}
-
-@TypeParameter.member // //# 16: compile-time error
-class Y<TypeParameter> {}
-
-@1 // //# 17: compile-time error
-class Z {}
-
-@3.14 // //# 18: compile-time error
-class AA {}
-
-@'string' // //# 19: compile-time error
-class BB {}
-
-@#symbol // //# 20: compile-time error
-class CC {}
-
-@['element'] // //# 21: compile-time error
-class DD {}
-
-@{'key': 'value'} // //# 22: compile-time error
-class EE {}
-
-@true // //# 23: compile-time error
-class FF {}
-
-@false // //# 24: compile-time error
-class GG {}
-
-@null // //# 25: compile-time error
-class HH {}
-
-const a = const [1, 2, 3];
-
-@a
-class II {}
-
-@a[0] // //# 26: compile-time error
-class JJ {}
-
-@kk // //# 27: compile-time error
-class KK {
-  const KK();
-}
-
-get kk => const KK();
-
-@LL(() => 42) // //# 28: compile-time error
-class LL {
-  final field;
-  const LL(this.field);
-}
-
-@MM((x) => 42) // //# 29: compile-time error
-class MM {
-  final field;
-  const MM(this.field);
-}
-
-@NN(() {}) // //# 30: compile-time error
-class NN {
-  final field;
-  const NN(this.field);
-}
-
-@OO(() { () {} }) // //# 31: compile-time error
-class OO {
-  final field;
-  const OO(this.field);
-}
-
-checkMetadata(DeclarationMirror mirror, List expectedMetadata) {
-  Expect.listEquals(expectedMetadata.map(reflect).toList(), mirror.metadata);
-}
-
-main() {
-  reflectClass(A).metadata;
-  checkMetadata(reflectClass(B), [B.CONSTANT]);
-  checkMetadata(reflectClass(C), [const C(3)]);
-  checkMetadata(reflectClass(D), [const D.named(4)]);
-  reflectClass(E).metadata;
-  reflectClass(F).metadata;
-  reflectClass(G).metadata;
-  reflectClass(H).metadata;
-  reflectClass(I).metadata;
-  reflectClass(J).metadata;
-  reflectClass(K).metadata;
-  reflectClass(L).metadata;
-  reflectClass(M).metadata;
-  checkMetadata(reflectClass(N), [const Imported()]);
-  checkMetadata(reflectClass(O), [const Imported.named()]);
-  checkMetadata(reflectClass(P), [Imported.CONSTANT]);
-  reflectClass(Q).metadata;
-  checkMetadata(reflectClass(R), [const prefix.Imported()]);
-  checkMetadata(reflectClass(S), [const prefix.Imported.named()]);
-  checkMetadata(reflectClass(T), [prefix.Imported.CONSTANT]);
-  reflectClass(U).metadata;
-  reflectClass(V).metadata;
-  reflectClass(W).metadata;
-  reflectClass(X).metadata;
-  reflectClass(Y).metadata;
-  reflectClass(Z).metadata;
-  reflectClass(AA).metadata;
-  reflectClass(BB).metadata;
-  reflectClass(CC).metadata;
-  reflectClass(DD).metadata;
-  reflectClass(EE).metadata;
-  reflectClass(FF).metadata;
-  reflectClass(GG).metadata;
-  reflectClass(HH).metadata;
-  reflectClass(II).metadata;
-  reflectClass(JJ).metadata;
-  reflectClass(KK).metadata;
-  reflectClass(LL).metadata;
-  reflectClass(MM).metadata;
-  reflectClass(NN).metadata;
-  reflectClass(OO).metadata;
-}
diff --git a/tests/lib/mirrors/metadata_class_mirror_test.dart b/tests/lib/mirrors/metadata_class_mirror_test.dart
deleted file mode 100644
index 9391f1e..0000000
--- a/tests/lib/mirrors/metadata_class_mirror_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for http://dartbug.com/19173
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-class A {
-  const A();
-}
-
-@deprecated
-const A anA = const A();
-
-main() {
-  ClassMirror typeMirror = reflectType(A);
-  var decs = typeMirror.declarations;
-  print(decs.length);
-}
diff --git a/tests/lib/mirrors/metadata_const_map_test.dart b/tests/lib/mirrors/metadata_const_map_test.dart
deleted file mode 100644
index 9239d68..0000000
--- a/tests/lib/mirrors/metadata_const_map_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for issue 20776. Tests that the needed classes for the
-// constant map in the metadata are generated.
-
-library lib;
-
-@MirrorsUsed(targets: 'lib')
-import 'dart:mirrors';
-
-class C {
-  final x;
-  const C(this.x);
-}
-
-@C(const {'foo': 'bar'})
-class A {}
-
-main() {
-  print(reflectClass(A).metadata);
-}
diff --git a/tests/lib/mirrors/metadata_constructed_constant_test.dart b/tests/lib/mirrors/metadata_constructed_constant_test.dart
deleted file mode 100644
index d6eae3b..0000000
--- a/tests/lib/mirrors/metadata_constructed_constant_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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 test.metadata_constructed_constant_test;
-
-@MirrorsUsed(targets: "test.metadata_constructed_constant_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class ConstructedConstant {
-  final value;
-  const ConstructedConstant(this.value);
-  toString() => 'ConstructedConstant($value)';
-}
-
-class Foo {
-  @ConstructedConstant(StateError)
-  m() {}
-}
-
-main() {
-  var value = reflectClass(Foo).declarations[#m].metadata.single.reflectee;
-  Expect.stringEquals('ConstructedConstant($StateError)', '$value');
-}
diff --git a/tests/lib/mirrors/metadata_constructor_arguments_test.dart b/tests/lib/mirrors/metadata_constructor_arguments_test.dart
deleted file mode 100644
index 72238cb..0000000
--- a/tests/lib/mirrors/metadata_constructor_arguments_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for Issue 13817.
-
-library test.metadata_constructor_arguments;
-
-@MirrorsUsed(targets: "test.metadata_constructor_arguments")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class Tag {
-  final name;
-  const Tag({named}) : this.name = named;
-}
-
-@Tag(named: undefined) // //# 01: compile-time error
-class A {}
-
-@Tag(named: 'valid')
-class B {}
-
-@Tag(named: C.STATIC_FIELD)
-class C {
-  static const STATIC_FIELD = 3;
-}
-
-@Tag(named: D.instanceMethod()) // //# 02: compile-time error
-class D {
-  instanceMethod() {}
-}
-
-@Tag(named: instanceField) // //# 03: compile-time error
-class E {
-  var instanceField;
-}
-
-@Tag(named: F.nonConstStaticField) // //# 04: compile-time error
-class F {
-  static var nonConstStaticField = 6;
-}
-
-@Tag(named: instanceMethod) // //# 05: compile-time error
-class G {
-  instanceMethod() {}
-}
-
-@Tag(named: this) // //# 06: compile-time error
-class H {
-  instanceMethod() {}
-}
-
-@Tag(named: super) // //# 07: compile-time error
-class I {
-  instanceMethod() {}
-}
-
-checkMetadata(DeclarationMirror mirror, List expectedMetadata) {
-  Expect.listEquals(expectedMetadata.map(reflect).toList(), mirror.metadata);
-}
-
-main() {
-  reflectClass(A).metadata;
-  checkMetadata(reflectClass(B), [const Tag(named: 'valid')]);
-  checkMetadata(reflectClass(C), [const Tag(named: C.STATIC_FIELD)]);
-  reflectClass(D).metadata;
-  reflectClass(E).metadata;
-  reflectClass(F).metadata;
-  reflectClass(G).metadata;
-  reflectClass(H).metadata;
-  reflectClass(I).metadata;
-}
diff --git a/tests/lib/mirrors/metadata_nested_constructor_call_test.dart b/tests/lib/mirrors/metadata_nested_constructor_call_test.dart
deleted file mode 100644
index dccdb19..0000000
--- a/tests/lib/mirrors/metadata_nested_constructor_call_test.dart
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for Issue 17141.
-
-library test.metadata_nested_constructor_call;
-
-@MirrorsUsed(targets: "test.metadata_nested_constructor_call")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class Box {
-  final contents;
-  const Box([this.contents]);
-}
-
-class MutableBox {
-  var contents;
-  MutableBox([this.contents]); // Not const.
-}
-
-@Box()
-class A {}
-
-@Box(const Box())
-class B {}
-
-@Box(const Box(const Box()))
-class C {}
-
-@Box(const Box(const MutableBox())) // //# 01: compile-time error
-class D {}
-
-@Box(const MutableBox(const Box())) // //# 02: compile-time error
-class E {}
-
-@Box(Box()) // //# 03: compile-time error
-class F {}
-
-@Box(Box(const Box())) // //# 04: compile-time error
-class G {}
-
-@Box(Box(const MutableBox())) // //# 05: compile-time error
-class H {}
-
-@Box(MutableBox(const Box())) // //# 06: compile-time error
-class I {}
-
-final closure = () => 42;
-
-@Box(closure()) // //# 07: compile-time error
-class J {}
-
-@Box(closure) // //# 08: compile-time error
-class K {}
-
-function() => 42;
-
-@Box(function()) // //# 09: compile-time error
-class L {}
-
-// N.B. This is legal, but @function is not (tested by metadata_allowed_values).
-@Box(function)
-class M {}
-
-checkMetadata(DeclarationMirror mirror, List expectedMetadata) {
-  Expect.listEquals(expectedMetadata.map(reflect).toList(), mirror.metadata);
-}
-
-main() {
-  closure();
-  checkMetadata(reflectClass(A), [const Box()]);
-  checkMetadata(reflectClass(B), [const Box(const Box())]);
-  checkMetadata(reflectClass(C), [const Box(const Box(const Box()))]);
-  reflectClass(D).metadata;
-  reflectClass(E).metadata;
-  reflectClass(F).metadata;
-  reflectClass(G).metadata;
-  reflectClass(H).metadata;
-  reflectClass(I).metadata;
-  reflectClass(J).metadata;
-  reflectClass(K).metadata;
-  reflectClass(L).metadata;
-  reflectClass(M).metadata;
-}
diff --git a/tests/lib/mirrors/metadata_scope_test.dart b/tests/lib/mirrors/metadata_scope_test.dart
deleted file mode 100644
index 40a207e..0000000
--- a/tests/lib/mirrors/metadata_scope_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2014, 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 test.metadata_scope;
-
-@MirrorsUsed(targets: "test.metadata_scope")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class Annotation {
-  final contents;
-  const Annotation(this.contents);
-  toString() => "Annotation($contents)";
-}
-
-// Note there is no compile-time constant 'foo' in scope. In particular, A.foo
-// is not in scope here.
-@Annotation(foo) // //# 01: compile-time error
-class A<@Annotation(foo) T> {
-  @Annotation(foo)
-  static foo() {}
-
-  @Annotation(foo)
-  static bar() {}
-}
-
-@Annotation(B.foo)
-class B<@Annotation(B.foo) T> {
-  @Annotation(B.foo)
-  static foo() {}
-
-  @Annotation(B.foo)
-  static bar() {}
-}
-
-baz() {}
-
-// Note the top-level function baz is in scope here, not C.baz.
-@Annotation(baz)
-class C<@Annotation(baz) T> {
-  @Annotation(baz)
-  static baz() {}
-}
-
-checkMetadata(DeclarationMirror mirror, List expectedMetadata) {
-  Expect.listEquals(expectedMetadata.map(reflect).toList(), mirror.metadata);
-}
-
-main() {
-  reflectClass(A).metadata;
-  checkMetadata(reflectClass(A).declarations[#T], [const Annotation(A.foo)]);
-  checkMetadata(reflectClass(A).declarations[#foo], [const Annotation(A.foo)]);
-  checkMetadata(reflectClass(A).declarations[#bar], [const Annotation(A.foo)]);
-  checkMetadata(reflectClass(B), [const Annotation(B.foo)]);
-  checkMetadata(reflectClass(B).declarations[#T], [const Annotation(B.foo)]);
-  checkMetadata(reflectClass(B).declarations[#foo], [const Annotation(B.foo)]);
-  checkMetadata(reflectClass(B).declarations[#bar], [const Annotation(B.foo)]);
-  // The top-level function baz, not C.baz.
-  checkMetadata(reflectClass(C), [const Annotation(baz)]);
-  // C.baz, not the top-level function baz.
-  checkMetadata(reflectClass(C).declarations[#T], [const Annotation(C.baz)]);
-  checkMetadata(reflectClass(C).declarations[#baz], [const Annotation(C.baz)]);
-}
diff --git a/tests/lib/mirrors/metadata_test.dart b/tests/lib/mirrors/metadata_test.dart
deleted file mode 100644
index 5081653..0000000
--- a/tests/lib/mirrors/metadata_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2013, 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 test.metadata_test;
-
-@MirrorsUsed(targets: "test.metadata_test")
-import 'dart:mirrors';
-
-const string = 'a metadata string';
-
-const symbol = const Symbol('symbol');
-
-const hest = 'hest';
-
-@symbol
-@string
-class MyClass {
-  @hest
-  @hest
-  @symbol
-  var x;
-  var y;
-
-  @string
-  @symbol
-  @string
-  myMethod() => 1;
-  myOtherMethod() => 2;
-}
-
-checkMetadata(DeclarationMirror mirror, List expectedMetadata) {
-  List metadata = mirror.metadata.map((m) => m.reflectee).toList();
-  if (metadata == null) {
-    throw 'Null metadata on $mirror';
-  }
-  int expectedLength = expectedMetadata.length;
-  int actualLength = metadata.length;
-  if (expectedLength != actualLength) {
-    throw 'Expected length = $expectedLength, but got length = $actualLength.';
-  }
-  for (int i = 0; i < expectedLength; i++) {
-    if (metadata[i] != expectedMetadata[i]) {
-      throw '${metadata[i]} is not "${expectedMetadata[i]}"'
-          ' in $mirror at index $i';
-    }
-  }
-  print(metadata);
-}
-
-@symbol
-@string
-@symbol
-main() {
-  if (MirrorSystem.getName(symbol) != 'symbol') {
-    // This happened in dart2js due to how early library metadata is
-    // computed.
-    throw 'Bad constant: $symbol';
-  }
-
-  MirrorSystem mirrors = currentMirrorSystem();
-  ClassMirror myClassMirror = reflectClass(MyClass);
-  checkMetadata(myClassMirror, [symbol, string]);
-  LibraryMirror lib = mirrors.findLibrary(#test.metadata_test);
-  MethodMirror function = lib.declarations[#main];
-  checkMetadata(function, [symbol, string, symbol]);
-  MethodMirror method = myClassMirror.declarations[#myMethod];
-  checkMetadata(method, [string, symbol, string]);
-  method = myClassMirror.declarations[#myOtherMethod];
-  checkMetadata(method, []);
-
-  VariableMirror xMirror = myClassMirror.declarations[#x];
-  checkMetadata(xMirror, [hest, hest, symbol]);
-
-  VariableMirror yMirror = myClassMirror.declarations[#y];
-  checkMetadata(yMirror, []);
-
-  // TODO(ahe): Test local functions.
-}
diff --git a/tests/lib/mirrors/method_mirror_location_other.dart b/tests/lib/mirrors/method_mirror_location_other.dart
deleted file mode 100644
index 1747eb9..0000000
--- a/tests/lib/mirrors/method_mirror_location_other.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2014, 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.
-
-part of test.method_location;
-
-class ClassInOtherFile {
-  ClassInOtherFile();
-
-  method() {}
-}
-
-topLevelInOtherFile() {}
-
-  spaceIdentedInOtherFile() {}
-
-	tabIdentedInOtherFile() {}
diff --git a/tests/lib/mirrors/method_mirror_location_test.dart b/tests/lib/mirrors/method_mirror_location_test.dart
deleted file mode 100644
index ace5e44..0000000
--- a/tests/lib/mirrors/method_mirror_location_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2014, 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 test.method_location;
-
-import "dart:mirrors";
-import "package:expect/expect.dart";
-
-part 'method_mirror_location_other.dart';
-
-// We only check for a suffix of the uri because the test might be run from
-// any number of absolute paths.
-expectLocation(Mirror mirror, String uriSuffix, int line, int column) {
-  MethodMirror methodMirror;
-  if (mirror is ClosureMirror) {
-    methodMirror = mirror.function;
-  } else {
-    methodMirror = mirror as MethodMirror;
-  }
-  Expect.isTrue(methodMirror is MethodMirror);
-  Uri uri = methodMirror.location.sourceUri;
-  Expect.isTrue(uri.toString().endsWith(uriSuffix),
-  	            "Expected suffix $uriSuffix in $uri");
-  Expect.equals(line, methodMirror.location.line, "line");
-  Expect.equals(column, methodMirror.location.column, "column");
-}
-
-class ClassInMainFile {
-
-  ClassInMainFile();
-
-  method() {}
-}
-
-void topLevelInMainFile() {}
-  spaceIdentedInMainFile() {}
-	tabIdentedInMainFile() {}
-
-class HasImplicitConstructor {}
-
-typedef bool Predicate(num n);
-
-main() {
-  localFunction(x) { return x; }
-
-  String mainSuffix = 'method_mirror_location_test.dart';
-  String otherSuffix = 'method_mirror_location_other.dart';
-
-  // This file.
-  expectLocation(reflectClass(ClassInMainFile).declarations[#ClassInMainFile],
-                 mainSuffix, 31, 3);
-  expectLocation(reflectClass(ClassInMainFile).declarations[#method],
-                 mainSuffix, 33, 3);
-  expectLocation(reflect(topLevelInMainFile), mainSuffix, 36, 1);
-  expectLocation(reflect(spaceIdentedInMainFile), mainSuffix, 37, 3);
-  expectLocation(reflect(tabIdentedInMainFile), mainSuffix, 38, 2);
-  expectLocation(reflect(localFunction), mainSuffix, 45, 3);
-
-  // Another part.
-  expectLocation(reflectClass(ClassInOtherFile).declarations[#ClassInOtherFile],
-                 otherSuffix, 8, 3);
-  expectLocation(reflectClass(ClassInOtherFile).declarations[#method],
-                 otherSuffix, 10, 3);
-  expectLocation(reflect(topLevelInOtherFile), otherSuffix, 13, 1);
-  expectLocation(reflect(spaceIdentedInOtherFile), otherSuffix, 15, 3);
-  expectLocation(reflect(tabIdentedInOtherFile), otherSuffix, 17, 2);
-
-  // Synthetic methods.
-  Expect.isNull(reflectClass(HasImplicitConstructor)
-                .declarations[#HasImplicitConstructor].location);
-  Expect.isNull((reflectType(Predicate) as TypedefMirror).referent.callMethod.location);
-}
diff --git a/tests/lib/mirrors/method_mirror_name_test.dart b/tests/lib/mirrors/method_mirror_name_test.dart
deleted file mode 100644
index e796f01..0000000
--- a/tests/lib/mirrors/method_mirror_name_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-import "stringify.dart";
-
-doNothing42() {}
-
-main() {
-  // Regression test for http://www.dartbug.com/6335
-  var closureMirror = reflect(doNothing42);
-  Expect.equals(
-      stringifySymbol(closureMirror.function.simpleName), "s(doNothing42)");
-}
diff --git a/tests/lib/mirrors/method_mirror_properties_test.dart b/tests/lib/mirrors/method_mirror_properties_test.dart
deleted file mode 100644
index 0e5bcc8..0000000
--- a/tests/lib/mirrors/method_mirror_properties_test.dart
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-doNothing42() {}
-
-int _x = 5;
-int get topGetter => _x;
-void set topSetter(x) {
-  _x = x;
-}
-
-abstract class AbstractC {
-  AbstractC();
-
-  void bar();
-  get priv;
-  set priv(value);
-}
-
-abstract class C extends AbstractC {
-  static foo() {}
-
-  C();
-  C.other();
-  C.other2() : this.other();
-
-  var _priv;
-  get priv => _priv;
-  set priv(value) => _priv = value;
-}
-
-checkKinds(method, kinds) {
-  Expect.equals(kinds[0], method.isStatic, "isStatic");
-  Expect.equals(kinds[1], method.isAbstract, "isAbstract");
-  Expect.equals(kinds[2], method.isGetter, "isGetter");
-  Expect.equals(kinds[3], method.isSetter, "isSetter");
-  Expect.equals(kinds[4], method.isConstructor, "isConstructor");
-}
-
-main() {
-  // Top level functions should be static.
-  var closureMirror = reflect(doNothing42);
-  checkKinds(closureMirror.function, [true, false, false, false, false]);
-  var libraryMirror = reflectClass(C).owner;
-  checkKinds(libraryMirror.declarations[#topGetter],
-      [true, false, true, false, false]);
-  checkKinds(libraryMirror.declarations[const Symbol("topSetter=")],
-      [true, false, false, true, false]);
-  var classMirror;
-  classMirror = reflectClass(C);
-  checkKinds(
-      classMirror.declarations[#foo], [true, false, false, false, false]);
-  checkKinds(
-      classMirror.declarations[#priv], [false, false, true, false, false]);
-  checkKinds(classMirror.declarations[const Symbol("priv=")],
-      [false, false, false, true, false]);
-  checkKinds(classMirror.declarations[#C], [false, false, false, false, true]);
-  checkKinds(
-      classMirror.declarations[#C.other], [false, false, false, false, true]);
-  checkKinds(
-      classMirror.declarations[#C.other2], [false, false, false, false, true]);
-  classMirror = reflectClass(AbstractC);
-  checkKinds(
-      classMirror.declarations[#AbstractC], [false, false, false, false, true]);
-  checkKinds(
-      classMirror.declarations[#bar], [false, true, false, false, false]);
-  checkKinds(
-      classMirror.declarations[#priv], [false, true, true, false, false]);
-  checkKinds(classMirror.declarations[const Symbol("priv=")],
-      [false, true, false, true, false]);
-}
diff --git a/tests/lib/mirrors/method_mirror_returntype_test.dart b/tests/lib/mirrors/method_mirror_returntype_test.dart
deleted file mode 100644
index 195c4bf..0000000
--- a/tests/lib/mirrors/method_mirror_returntype_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-void voidFunc() {}
-
-dynamicFunc1() {}
-
-dynamic dynamicFunc2() {}
-
-int intFunc() => 0;
-
-class C<E> {
-  E getE(E v) => v;
-}
-
-main() {
-  MethodMirror mm;
-
-  mm = (reflect(intFunc) as ClosureMirror).function;
-  Expect.equals(true, mm.returnType is TypeMirror);
-  Expect.equals(#int, mm.returnType.simpleName);
-  Expect.equals(true, mm.returnType.owner is LibraryMirror);
-
-  mm = (reflect(dynamicFunc1) as ClosureMirror).function;
-  Expect.equals(true, mm.returnType is TypeMirror);
-  Expect.equals(#dynamic, mm.returnType.simpleName);
-
-  mm = (reflect(dynamicFunc2) as ClosureMirror).function;
-  Expect.equals(true, mm.returnType is TypeMirror);
-  Expect.equals(#dynamic, mm.returnType.simpleName);
-
-  mm = (reflect(voidFunc) as ClosureMirror).function;
-  Expect.equals(true, mm.returnType is TypeMirror);
-  Expect.equals(const Symbol("void"), mm.returnType.simpleName);
-
-  ClassMirror cm = reflectClass(C);
-  mm = cm.declarations[#getE];
-  Expect.equals(true, mm.returnType is TypeMirror);
-  // The spec for this is ambiguous and needs to be updated before it is clear
-  // what has to be returned.
-  //Expect.equals("E", _n(mm.returnType.simpleName));
-  Expect.equals(true, mm.owner is ClassMirror);
-  Expect.equals(#C, mm.owner.simpleName);
-}
diff --git a/tests/lib/mirrors/method_mirror_source_line_ending_cr.dart b/tests/lib/mirrors/method_mirror_source_line_ending_cr.dart
deleted file mode 100755
index 45533d4..0000000
--- a/tests/lib/mirrors/method_mirror_source_line_ending_cr.dart
+++ /dev/null
Binary files differ
diff --git a/tests/lib/mirrors/method_mirror_source_line_ending_crlf.dart b/tests/lib/mirrors/method_mirror_source_line_ending_crlf.dart
deleted file mode 100755
index 0c2094c..0000000
--- a/tests/lib/mirrors/method_mirror_source_line_ending_crlf.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2014, 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.

-

-// Note: This test relies on CRLF line endings in the source file.

-// It requires an entry in the .gitattributes file.

-

-library line_endings.crlf;

-

-oneLineCRLF(x) => x;

-multiLineCRLF(y) {

-  return y + 1;

-}

-c

-(){

-}

diff --git a/tests/lib/mirrors/method_mirror_source_line_ending_lf.dart b/tests/lib/mirrors/method_mirror_source_line_ending_lf.dart
deleted file mode 100755
index 3d58997..0000000
--- a/tests/lib/mirrors/method_mirror_source_line_ending_lf.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Note: This test relies on LF line endings in the source file.
-// It requires an entry in the .gitattributes file.
-
-library line_endings.lf;
-
-oneLineLF(x) => x;
-multiLineLF(y) {
-  return y + 1;
-}
-a
-(){
-}
diff --git a/tests/lib/mirrors/method_mirror_source_line_ending_test.dart b/tests/lib/mirrors/method_mirror_source_line_ending_test.dart
deleted file mode 100644
index a9b976f..0000000
--- a/tests/lib/mirrors/method_mirror_source_line_ending_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Note: These test relies on specific line endings in the source files.
-// They requirs entries in the .gitattributes file.
-
-import "dart:mirrors";
-import "package:expect/expect.dart";
-
-import "method_mirror_source_line_ending_lf.dart";
-import "method_mirror_source_line_ending_cr.dart";
-import "method_mirror_source_line_ending_crlf.dart";
-
-main() {
-  String sourceOf(Function f) => (reflect(f) as ClosureMirror).function.source;
-
-  // Source does not cross line breaks.
-  Expect.stringEquals('oneLineLF(x) => x;', sourceOf(oneLineLF));
-  Expect.stringEquals('oneLineCR(x) => x;', sourceOf(oneLineCR));
-  Expect.stringEquals('oneLineCRLF(x) => x;', sourceOf(oneLineCRLF));
-
-  // Source includes line breaks.
-  Expect.stringEquals(
-      'multiLineLF(y) {\n  return y + 1;\n}', sourceOf(multiLineLF));
-  Expect.stringEquals(
-      'multiLineCR(y) {\r  return y + 1;\r}', sourceOf(multiLineCR));
-  Expect.stringEquals(
-      'multiLineCRLF(y) {\r\n  return y + 1;\r\n}', sourceOf(multiLineCRLF));
-
-  // First and last characters separated from middle by line breaks.
-  Expect.stringEquals('a\n(){\n}', sourceOf(a));
-  Expect.stringEquals('b\r(){\r}', sourceOf(b));
-  Expect.stringEquals('c\r\n(){\r\n}', sourceOf(c));
-}
diff --git a/tests/lib/mirrors/method_mirror_source_other.dart b/tests/lib/mirrors/method_mirror_source_other.dart
deleted file mode 100644
index 247c10d..0000000
--- a/tests/lib/mirrors/method_mirror_source_other.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-main() {
-  print("Blah");
-}
-// This function must be on the first line.
-
-class SomethingInOther {}
-
-// Note: This test relies on LF line endings in the source file.
-// It requires an entry in the .gitattributes file.
diff --git a/tests/lib/mirrors/method_mirror_source_test.dart b/tests/lib/mirrors/method_mirror_source_test.dart
deleted file mode 100644
index d9d9587..0000000
--- a/tests/lib/mirrors/method_mirror_source_test.dart
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Note: This test relies on LF line endings in the source file.
-// It requires an entry in the .gitattributes file.
-
-import "dart:mirrors";
-import "package:expect/expect.dart";
-import "method_mirror_source_other.dart";
-
-expectSource(Mirror mirror, String source) {
-  MethodMirror methodMirror;
-  if (mirror is ClosureMirror) {
-    methodMirror = mirror.function;
-  } else {
-    methodMirror = mirror as MethodMirror;
-  }
-  Expect.isTrue(methodMirror is MethodMirror);
-  Expect.equals(source, methodMirror.source);
-}
-
-foo1() {}
-doSomething(e) => e;
-
-int get x => 42;
-set x(value) { }
-
-class S {}
-
-class C extends S {
-
-  var _x;
-  var _y;
-
-  C(this._x, y)
-    : _y = y,
-      super();
-
-  factory C.other(num z) {}
-  factory C.other2() {}
-  factory C.other3() = C.other2;
-
-  static dynamic foo() {
-    // Happy foo.
-  }
-
-  // Some comment.
-
-  void bar() { /* Not so happy bar. */ }
-
-  num get someX =>
-    181;
-
-  set someX(v) {
-    // Discard this one.
-  }
-}
-    
-
-main() {
-  // Top-level members
-  LibraryMirror lib = reflectClass(C).owner;
-  expectSource(lib.declarations[#foo1],
-      "foo1() {}");
-  expectSource(lib.declarations[#x],
-      "int get x => 42;");
-  expectSource(lib.declarations[const Symbol("x=")],
-      "set x(value) { }");
-
-  // Class members
-  ClassMirror cm = reflectClass(C);
-  expectSource(cm.declarations[#foo],
-      "static dynamic foo() {\n"
-      "    // Happy foo.\n"
-      "  }");
-  expectSource(cm.declarations[#bar],
-      "void bar() { /* Not so happy bar. */ }");
-  expectSource(cm.declarations[#someX],
-      "num get someX =>\n"
-      "    181;");
-  expectSource(cm.declarations[const Symbol("someX=")],
-      "set someX(v) {\n"
-      "    // Discard this one.\n"
-      "  }");
-  expectSource(cm.declarations[#C],
-      "C(this._x, y)\n"
-      "    : _y = y,\n"
-      "      super();");
-  expectSource(cm.declarations[#C.other],
-      "factory C.other(num z) {}");
-  expectSource(cm.declarations[#C.other3],
-      "factory C.other3() = C.other2;");
-
-  // Closures
-  expectSource(reflect((){}), "(){}");
-  expectSource(reflect((x,y,z) { return x*y*z; }), "(x,y,z) { return x*y*z; }");
-  expectSource(reflect((e) => doSomething(e)), "(e) => doSomething(e)");
-
-  namedClosure(x,y,z) => 1;
-  var a = () {};
-  expectSource(reflect(namedClosure), "namedClosure(x,y,z) => 1;");
-  expectSource(reflect(a), "() {}");
-
-  // Function at first line.
-  LibraryMirror otherLib = reflectClass(SomethingInOther).owner;
-  expectSource(otherLib.declarations[#main],
-"""main() {
-  print("Blah");
-}""");
-}
diff --git a/tests/lib/mirrors/mirror_in_static_init_test.dart b/tests/lib/mirrors/mirror_in_static_init_test.dart
deleted file mode 100644
index 755a32f..0000000
--- a/tests/lib/mirrors/mirror_in_static_init_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Error in class finalization triggered via mirror in a static initializer.
-// Simply check that we do not crash.
-// This is a regression test for the VM.
-
-library mirror_in_static_init_test;
-
-@MirrorsUsed(targets: "mirror_in_static_init_test")
-import 'dart:mirrors';
-
-// This class is only loaded during initialization of `staticField`.
-abstract class C {
-  int _a;
-// This is a syntax error on purpose.
-  C([this._a: 0]); //# 01: compile-time error
-}
-
-final int staticField = () {
-  var lib = currentMirrorSystem().findLibrary(#mirror_in_static_init_test);
-  var lst = new List.from(lib.declarations[#C].declarations.values);
-  return 42;
-}();
-
-main() {
-  return staticField;
-}
diff --git a/tests/lib/mirrors/mirrors_nsm_mismatch_test.dart b/tests/lib/mirrors/mirrors_nsm_mismatch_test.dart
deleted file mode 100644
index 6f2f188..0000000
--- a/tests/lib/mirrors/mirrors_nsm_mismatch_test.dart
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2015, 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 test.mirrors_nsm_mismatch;
-
-@MirrorsUsed(targets: "test.mirrors_nsm_mismatch")
-import 'dart:mirrors';
-import 'mirrors_nsm_test.dart';
-
-topLevelMethod({missing}) {}
-
-class C {
-  C.constructor({missing});
-  factory C.redirecting({missing}) = C.constructor;
-  static staticMethod({missing}) {}
-  instanceMethod({missing}) {}
-}
-
-main() {
-  var mirrors = currentMirrorSystem();
-  var libMirror = mirrors.findLibrary(#test.mirrors_nsm_mismatch);
-  expectMatchingErrors(() => libMirror.invoke(#topLevelMethod, [], {#extra: 1}),
-      () => topLevelMethod(extra: 1));
-  expectMatchingErrors(() => libMirror.invoke(#topLevelMethod, ['positional']),
-      () => topLevelMethod('positional'));
-
-  var classMirror = reflectClass(C);
-  expectMatchingErrors(
-      () => classMirror.newInstance(#constructor, [], {#extra: 1}),
-      () => new C.constructor(extra: 1));
-  expectMatchingErrors(
-      () => classMirror.newInstance(#redirecting, [], {#extra: 1}),
-      () => new C.redirecting(extra: 1));
-  expectMatchingErrors(() => classMirror.invoke(#staticMethod, [], {#extra: 1}),
-      () => C.staticMethod(extra: 1));
-  expectMatchingErrors(
-      () => classMirror.newInstance(#constructor, ['positional']),
-      () => new C.constructor('positional'));
-  expectMatchingErrors(
-      () => classMirror.newInstance(#redirecting, ['positional']),
-      () => new C.redirecting('positional'));
-  expectMatchingErrors(() => classMirror.invoke(#staticMethod, ['positional']),
-      () => C.staticMethod('positional'));
-
-  var instanceMirror = reflect(new C.constructor());
-  expectMatchingErrors(
-      () => instanceMirror.invoke(#instanceMethod, [], {#extra: 1}),
-      () => instanceMirror.reflectee.instanceMethod(extra: 1));
-  expectMatchingErrors(
-      () => instanceMirror.invoke(#instanceMethod, ['positional']),
-      () => instanceMirror.reflectee.instanceMethod('positional'));
-}
diff --git a/tests/lib/mirrors/mirrors_nsm_test.dart b/tests/lib/mirrors/mirrors_nsm_test.dart
deleted file mode 100644
index 394120e..0000000
--- a/tests/lib/mirrors/mirrors_nsm_test.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2011, 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 MirrorsTest;
-
-@MirrorsUsed(targets: "MirrorsTest")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-bool isNSMContainingFieldName(e, String fieldName, bool isSetter) {
-  print(e);
-  if (e is! NoSuchMethodError) return false;
-  String needle = fieldName;
-  if (isSetter) needle += "=";
-  return "$e".contains(needle) && !"$e".contains(needle + "=");
-}
-
-final finalTopLevel = 0;
-
-class A {
-  final finalInstance = 0;
-  static final finalStatic = 0;
-}
-
-class B {
-  B(a, b);
-  factory B.fac(a, b) => new B(a, b);
-}
-
-testMessageContents() {
-  var mirrors = currentMirrorSystem();
-  var libMirror = mirrors.findLibrary(#MirrorsTest);
-  Expect.throws(() => libMirror.invoke(#foo, []),
-      (e) => isNSMContainingFieldName(e, "foo", false));
-  Expect.throws(() => libMirror.getField(#foo),
-      (e) => isNSMContainingFieldName(e, "foo", false));
-  Expect.throws(() => libMirror.setField(#foo, null),
-      (e) => isNSMContainingFieldName(e, "foo", true));
-  Expect.throws(() => libMirror.setField(#finalTopLevel, null),
-      (e) => isNSMContainingFieldName(e, "finalTopLevel", true));
-
-  var classMirror = reflectClass(A);
-  Expect.throws(() => classMirror.invoke(#foo, []),
-      (e) => isNSMContainingFieldName(e, "foo", false));
-  Expect.throws(() => classMirror.getField(#foo),
-      (e) => isNSMContainingFieldName(e, "foo", false));
-  Expect.throws(() => classMirror.setField(#foo, null),
-      (e) => isNSMContainingFieldName(e, "foo", true));
-  Expect.throws(() => classMirror.setField(#finalStatic, null),
-      (e) => isNSMContainingFieldName(e, "finalStatic", true));
-
-  var instanceMirror = reflect(new A());
-  Expect.throws(() => instanceMirror.invoke(#foo, []),
-      (e) => isNSMContainingFieldName(e, "foo", false));
-  Expect.throws(() => instanceMirror.getField(#foo),
-      (e) => isNSMContainingFieldName(e, "foo", false));
-  Expect.throws(() => instanceMirror.setField(#foo, null),
-      (e) => isNSMContainingFieldName(e, "foo", true));
-  Expect.throws(() => instanceMirror.setField(#finalInstance, null),
-      (e) => isNSMContainingFieldName(e, "finalInstance", true));
-}
-
-expectMatchingErrors(reflectiveAction, baseAction) {
-  var reflectiveError, baseError;
-  try {
-    reflectiveAction();
-  } catch (e) {
-    reflectiveError = e;
-  }
-
-  try {
-    baseAction();
-  } catch (e) {
-    baseError = e;
-  }
-
-  if (baseError.toString() != reflectiveError.toString()) {
-    print("\n==Base==\n $baseError");
-    print("\n==Reflective==\n $reflectiveError");
-    throw "Expected matching errors";
-  }
-}
-
-testMatchingMessages() {
-  var mirrors = currentMirrorSystem();
-  var libMirror = mirrors.findLibrary(#MirrorsTest);
-  expectMatchingErrors(() => libMirror.invoke(#foo, []), () => foo());
-  expectMatchingErrors(() => libMirror.getField(#foo), () => foo);
-  expectMatchingErrors(() => libMirror.setField(#foo, null), () => foo = null);
-  expectMatchingErrors(() => libMirror.setField(#finalTopLevel, null),
-      () => finalTopLevel = null);
-
-  var classMirror = reflectClass(A);
-  expectMatchingErrors(() => classMirror.invoke(#foo, []), () => A.foo());
-  expectMatchingErrors(() => classMirror.getField(#foo), () => A.foo);
-  expectMatchingErrors(
-      () => classMirror.setField(#foo, null), () => A.foo = null);
-  expectMatchingErrors(() => classMirror.setField(#finalStatic, null),
-      () => A.finalStatic = null);
-  expectMatchingErrors(() => classMirror.newInstance(#constructor, [1, 2, 3]),
-      () => new A.constructor(1, 2, 3));
-
-  var instanceMirror = reflect(new A());
-  expectMatchingErrors(
-      () => instanceMirror.invoke(#foo, []), () => new A().foo());
-  expectMatchingErrors(() => instanceMirror.getField(#foo), () => new A().foo);
-  expectMatchingErrors(
-      () => instanceMirror.setField(#foo, null), () => new A().foo = null);
-  expectMatchingErrors(() => instanceMirror.setField(#finalInstance, null),
-      () => new A().finalInstance = null);
-}
-
-main() {
-  testMessageContents();
-  testMatchingMessages(); //# dart2js: ok
-}
diff --git a/tests/lib/mirrors/mirrors_reader.dart b/tests/lib/mirrors/mirrors_reader.dart
deleted file mode 100644
index 9981466..0000000
--- a/tests/lib/mirrors/mirrors_reader.dart
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright (c) 2014, 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 LICESNE file.
-
-library mirrors.reader;
-
-import 'dart:mirrors';
-import 'mirrors_visitor.dart';
-
-class ReadError {
-  final String tag;
-  final exception;
-  final StackTrace stackTrace;
-
-  ReadError(this.tag, this.exception, this.stackTrace);
-}
-
-class MirrorsReader extends MirrorsVisitor {
-  /// Produce verbose output.
-  final bool verbose;
-
-  /// Include stack trace in the error report.
-  final bool includeStackTrace;
-
-  bool fatalError = false;
-  Set<Mirror> visited = new Set<Mirror>();
-  Set<TypeMirror> declarations = new Set<TypeMirror>();
-  Set<TypeMirror> instantiations = new Set<TypeMirror>();
-  List<ReadError> errors = <ReadError>[];
-  List<Mirror> queue = <Mirror>[];
-
-  MirrorsReader({this.verbose: false, this.includeStackTrace: false});
-
-  void checkMirrorSystem(MirrorSystem mirrorSystem) {
-    visitMirrorSystem(mirrorSystem);
-    if (!errors.isEmpty) {
-      Set<String> errorMessages = new Set<String>();
-      for (ReadError error in errors) {
-        String text = 'Mirrors read error: ${error.tag}=${error.exception}';
-        if (includeStackTrace) {
-          text = '$text\n${error.stackTrace}';
-        }
-        if (errorMessages.add(text)) {
-          print(text);
-        }
-      }
-      throw 'Unexpected errors occurred reading mirrors.';
-    }
-  }
-
-  // Skip mirrors so that each mirror is only visited once.
-  bool skipMirror(Mirror mirror) {
-    if (fatalError) return true;
-    if (mirror is TypeMirror) {
-      if (mirror.isOriginalDeclaration) {
-        // Visit the declaration once.
-        return !declarations.add(mirror);
-      } else {
-        // Visit only one instantiation.
-        return !instantiations.add(mirror.originalDeclaration);
-      }
-    }
-    return !visited.add(mirror);
-  }
-
-  reportError(var receiver, String tag, var exception, StackTrace stackTrace) {
-    String errorTag = '${receiver.runtimeType}.$tag';
-    errors.add(new ReadError(errorTag, exception, stackTrace));
-  }
-
-  visitUnsupported(var receiver, String tag, UnsupportedError exception,
-      StackTrace stackTrace) {
-    if (verbose) print('visitUnsupported:$receiver.$tag:$exception');
-    if (!expectUnsupported(receiver, tag, exception) &&
-        !allowUnsupported(receiver, tag, exception)) {
-      reportError(receiver, tag, exception, stackTrace);
-    }
-  }
-
-  /// Override to specify that access is expected to be unsupported.
-  bool expectUnsupported(
-          var receiver, String tag, UnsupportedError exception) =>
-      false;
-
-  /// Override to allow unsupported access.
-  bool allowUnsupported(var receiver, String tag, UnsupportedError exception) =>
-      false;
-
-  /// Evaluates the function [f]. Subclasses can override this to handle
-  /// specific exceptions.
-  evaluate(f()) => f();
-
-  visit(var receiver, String tag, var value) {
-    if (value is Function) {
-      try {
-        var result = evaluate(value);
-        if (expectUnsupported(receiver, tag, null)) {
-          reportError(receiver, tag, 'Expected UnsupportedError.', null);
-        }
-        return visit(receiver, tag, result);
-      } on UnsupportedError catch (e, s) {
-        visitUnsupported(receiver, tag, e, s);
-      } on OutOfMemoryError catch (e, s) {
-        reportError(receiver, tag, e, s);
-        fatalError = true;
-      } on StackOverflowError catch (e, s) {
-        reportError(receiver, tag, e, s);
-        fatalError = true;
-      } catch (e, s) {
-        reportError(receiver, tag, e, s);
-      }
-    } else {
-      if (value is Mirror) {
-        if (!skipMirror(value)) {
-          if (verbose) print('visit:$receiver.$tag=$value');
-          bool drain = queue.isEmpty;
-          queue.add(value);
-          if (drain) {
-            while (!queue.isEmpty) {
-              visitMirror(queue.removeLast());
-            }
-          }
-        }
-      } else if (value is MirrorSystem) {
-        visitMirrorSystem(value);
-      } else if (value is SourceLocation) {
-        visitSourceLocation(value);
-      } else if (value is Iterable) {
-        // TODO(johnniwinther): Merge with `immutable_collections_test.dart`.
-        value.forEach((e) {
-          visit(receiver, tag, e);
-        });
-      } else if (value is Map) {
-        value.forEach((k, v) {
-          visit(receiver, tag, k);
-          visit(receiver, tag, v);
-        });
-      }
-    }
-    return value;
-  }
-
-  visitMirrorSystem(MirrorSystem mirrorSystem) {
-    visit(mirrorSystem, 'dynamicType', () => mirrorSystem.dynamicType);
-    visit(mirrorSystem, 'voidType', () => mirrorSystem.voidType);
-    visit(mirrorSystem, 'libraries', () => mirrorSystem.libraries);
-  }
-
-  visitClassMirror(ClassMirror mirror) {
-    super.visitClassMirror(mirror);
-    visit(mirror, 'declarations', () => mirror.declarations);
-    bool hasReflectedType =
-        visit(mirror, 'hasReflectedType', () => mirror.hasReflectedType);
-    visit(mirror, 'instanceMembers', () => mirror.instanceMembers);
-    visit(mirror, 'mixin', () => mirror.mixin);
-    if (hasReflectedType) {
-      visit(mirror, 'reflectedType', () => mirror.reflectedType);
-    }
-    visit(mirror, 'staticMembers', () => mirror.staticMembers);
-    visit(mirror, 'superclass', () => mirror.superclass);
-    visit(mirror, 'superinterfaces', () => mirror.superinterfaces);
-  }
-
-  visitDeclarationMirror(DeclarationMirror mirror) {
-    super.visitDeclarationMirror(mirror);
-    visit(mirror, 'isPrivate', () => mirror.isPrivate);
-    visit(mirror, 'isTopLevel', () => mirror.isTopLevel);
-    visit(mirror, 'location', () => mirror.location);
-    visit(mirror, 'metadata', () => mirror.metadata);
-    visit(mirror, 'owner', () => mirror.owner);
-    visit(mirror, 'qualifiedName', () => mirror.qualifiedName);
-    visit(mirror, 'simpleName', () => mirror.simpleName);
-  }
-
-  visitFunctionTypeMirror(FunctionTypeMirror mirror) {
-    super.visitFunctionTypeMirror(mirror);
-    visit(mirror, 'callMethod', () => mirror.callMethod);
-    visit(mirror, 'parameters', () => mirror.parameters);
-    visit(mirror, 'returnType', () => mirror.returnType);
-  }
-
-  visitInstanceMirror(InstanceMirror mirror) {
-    super.visitInstanceMirror(mirror);
-    bool hasReflectee =
-        visit(mirror, 'hasReflectee', () => mirror.hasReflectee);
-    if (hasReflectee) {
-      visit(mirror, 'reflectee', () => mirror.reflectee);
-    }
-    visit(mirror, 'type', () => mirror.type);
-  }
-
-  visitLibraryMirror(LibraryMirror mirror) {
-    super.visitLibraryMirror(mirror);
-    visit(mirror, 'declarations', () => mirror.declarations);
-    visit(mirror, 'uri', () => mirror.uri);
-  }
-
-  visitMethodMirror(MethodMirror mirror) {
-    super.visitMethodMirror(mirror);
-    visit(mirror, 'constructorName', () => mirror.constructorName);
-    visit(mirror, 'isAbstract', () => mirror.isAbstract);
-    visit(mirror, 'isConstConstructor', () => mirror.isConstConstructor);
-    visit(mirror, 'isConstructor', () => mirror.isConstructor);
-    visit(mirror, 'isFactoryConstructor', () => mirror.isFactoryConstructor);
-    visit(mirror, 'isGenerativeConstructor',
-        () => mirror.isGenerativeConstructor);
-    visit(mirror, 'isGetter', () => mirror.isGetter);
-    visit(mirror, 'isOperator', () => mirror.isOperator);
-    visit(mirror, 'isRedirectingConstructor',
-        () => mirror.isRedirectingConstructor);
-    visit(mirror, 'isRegularMethod', () => mirror.isRegularMethod);
-    visit(mirror, 'isSetter', () => mirror.isSetter);
-    visit(mirror, 'isStatic', () => mirror.isStatic);
-    visit(mirror, 'isSynthetic', () => mirror.isSynthetic);
-    visit(mirror, 'parameters', () => mirror.parameters);
-    visit(mirror, 'returnType', () => mirror.returnType);
-    visit(mirror, 'source', () => mirror.source);
-  }
-
-  visitParameterMirror(ParameterMirror mirror) {
-    super.visitParameterMirror(mirror);
-    bool hasDefaultValue =
-        visit(mirror, 'hasDefaultValue', () => mirror.hasDefaultValue);
-    if (hasDefaultValue) {
-      visit(mirror, 'defaultValue', () => mirror.defaultValue);
-    }
-    visit(mirror, 'isNamed', () => mirror.isNamed);
-    visit(mirror, 'isOptional', () => mirror.isOptional);
-    visit(mirror, 'type', () => mirror.type);
-  }
-
-  visitSourceLocation(SourceLocation location) {}
-
-  visitTypedefMirror(TypedefMirror mirror) {
-    super.visitTypedefMirror(mirror);
-    visit(mirror, 'referent', () => mirror.referent);
-  }
-
-  visitTypeMirror(TypeMirror mirror) {
-    super.visitTypeMirror(mirror);
-    visit(mirror, 'isOriginalDeclaration', () => mirror.isOriginalDeclaration);
-    visit(mirror, 'originalDeclaration', () => mirror.originalDeclaration);
-    visit(mirror, 'typeArguments', () => mirror.typeArguments);
-    visit(mirror, 'typeVariables', () => mirror.typeVariables);
-  }
-
-  visitTypeVariableMirror(TypeVariableMirror mirror) {
-    super.visitTypeVariableMirror(mirror);
-    visit(mirror, 'upperBound', () => mirror.upperBound);
-    visit(mirror, 'isStatic', () => mirror.isStatic);
-  }
-
-  visitVariableMirror(VariableMirror mirror) {
-    super.visitVariableMirror(mirror);
-    visit(mirror, 'isConst', () => mirror.isConst);
-    visit(mirror, 'isFinal', () => mirror.isFinal);
-    visit(mirror, 'isStatic', () => mirror.isStatic);
-    visit(mirror, 'type', () => mirror.type);
-  }
-}
diff --git a/tests/lib/mirrors/mirrors_reader_test.dart b/tests/lib/mirrors/mirrors_reader_test.dart
deleted file mode 100644
index 8717f45..0000000
--- a/tests/lib/mirrors/mirrors_reader_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that everything reachable from a [MirrorSystem] can be accessed.
-
-library test.mirrors.reader;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'mirrors_reader.dart';
-
-class RuntimeMirrorsReader extends MirrorsReader {
-  final MirrorSystem mirrorSystem;
-  final String mirrorSystemType;
-
-  RuntimeMirrorsReader(MirrorSystem mirrorSystem,
-      {bool verbose: false, bool includeStackTrace: false})
-      : this.mirrorSystem = mirrorSystem,
-        this.mirrorSystemType = '${mirrorSystem.runtimeType}',
-        super(verbose: verbose, includeStackTrace: includeStackTrace);
-
-  visitLibraryMirror(LibraryMirror mirror) {
-    super.visitLibraryMirror(mirror);
-    Expect.equals(mirror, mirrorSystem.libraries[mirror.uri]);
-  }
-
-  visitClassMirror(ClassMirror mirror) {
-    super.visitClassMirror(mirror);
-    Expect.isNotNull(mirror.owner);
-  }
-
-  bool allowUnsupported(var receiver, String tag, UnsupportedError exception) {
-    if (mirrorSystemType == '_LocalMirrorSystem') {
-      // VM mirror system.
-      if (tag.endsWith('location')) {
-        return receiver is ParameterMirror;
-      }
-    } else if (mirrorSystemType == 'JsMirrorSystem') {
-      // Dart2js runtime mirror system.
-      if (tag.endsWith('.metadata')) {
-        return true; // Issue 10905.
-      }
-    }
-    return false;
-  }
-
-  bool expectUnsupported(var receiver, String tag, UnsupportedError exception) {
-    // [DeclarationMirror.location] is intentionally not supported in runtime
-    // mirrors.
-
-    if (mirrorSystemType == '_LocalMirrorSystem') {
-      // VM mirror system.
-    } else if (mirrorSystemType == 'JsMirrorSystem') {
-      // Dart2js runtime mirror system.
-      if (receiver is DeclarationMirror && tag == 'location') {
-        return true;
-      }
-    }
-    return false;
-  }
-}
-
-void main([List<String> arguments = const <String>[]]) {
-  MirrorSystem mirrors = currentMirrorSystem();
-  MirrorsReader reader = new RuntimeMirrorsReader(mirrors,
-      verbose: arguments.contains('-v'),
-      includeStackTrace: arguments.contains('-s'));
-  reader.checkMirrorSystem(mirrors);
-}
diff --git a/tests/lib/mirrors/mirrors_resolve_fields_test.dart b/tests/lib/mirrors/mirrors_resolve_fields_test.dart
deleted file mode 100644
index e24d356..0000000
--- a/tests/lib/mirrors/mirrors_resolve_fields_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for dart2js that used to not resolve instance
-// fields when a class is only instantiated through mirrors.
-
-library lib;
-
-import "package:expect/expect.dart";
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-class A {
-  static const int _STATE_INITIAL = 0;
-  int _state = _STATE_INITIAL;
-  A();
-}
-
-main() {
-  var mirrors = currentMirrorSystem();
-  var classMirror = reflectClass(A);
-  var instanceMirror = classMirror.newInstance(const Symbol(''), []);
-  Expect.equals(A._STATE_INITIAL, instanceMirror.reflectee._state);
-}
diff --git a/tests/lib/mirrors/mirrors_test.dart b/tests/lib/mirrors/mirrors_test.dart
deleted file mode 100644
index ccd6f50..0000000
--- a/tests/lib/mirrors/mirrors_test.dart
+++ /dev/null
@@ -1,247 +0,0 @@
-// Copyright (c) 2011, 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 MirrorsTest;
-
-import 'dart:mirrors';
-
-import '../../light_unittest.dart';
-
-bool isDart2js = false; // TODO(ahe): Remove this field.
-
-var topLevelField;
-u(a, b, c) => {"a": a, "b": b, "c": c};
-_v(a, b) => a + b;
-
-class Class<T> {
-  Class() {
-    this.field = "default value";
-  }
-  Class.withInitialValue(this.field);
-  var field;
-
-  Class.generative(this.field);
-  Class.redirecting(y) : this.generative(y * 2);
-  factory Class.faktory(y) => new Class.withInitialValue(y * 3);
-  factory Class.redirectingFactory(y) = Class.faktory;
-
-  m(a, b, c) => {"a": a, "b": b, "c": c};
-  _n(a, b) => a + b;
-  noSuchMethod(invocation) => "DNU";
-
-  static var staticField;
-  static s(a, b, c) => {"a": a, "b": b, "c": c};
-  static _t(a, b) => a + b;
-}
-
-typedef Typedef();
-
-testInvoke(mirrors) {
-  var instance = new Class();
-  var instMirror = reflect(instance);
-
-  expect(instMirror.invoke(#m, ['A', 'B', instance]).reflectee,
-      equals({"a": 'A', "b": 'B', "c": instance}));
-  expect(instMirror.invoke(#notDefined, []).reflectee, equals("DNU"));
-  expect(instMirror.invoke(#m, []).reflectee, equals("DNU")); // Wrong arity.
-
-  var classMirror = instMirror.type;
-  expect(classMirror.invoke(#s, ['A', 'B', instance]).reflectee,
-      equals({"a": 'A', "b": 'B', "c": instance}));
-  expect(() => classMirror.invoke(#notDefined, []).reflectee, throws);
-  expect(() => classMirror.invoke(#s, []).reflectee, throws); // Wrong arity.
-
-  var libMirror = classMirror.owner;
-  expect(libMirror.invoke(#u, ['A', 'B', instance]).reflectee,
-      equals({"a": 'A', "b": 'B', "c": instance}));
-  expect(() => libMirror.invoke(#notDefined, []).reflectee, throws);
-  expect(() => libMirror.invoke(#u, []).reflectee, throws); // Wrong arity.
-}
-
-/// In dart2js, lists, numbers, and other objects are treated special
-/// and their methods are invoked through a techique called interceptors.
-testIntercepted(mirrors) {
-  var instance = 1;
-  var instMirror = reflect(instance);
-
-  expect(instMirror.invoke(#toString, []).reflectee, equals('1'));
-
-  instance = [];
-  instMirror = reflect(instance);
-  instMirror.setField(#length, 44);
-  var resultMirror = instMirror.getField(#length);
-  expect(resultMirror.reflectee, equals(44));
-  expect(instance.length, equals(44));
-
-  expect(
-      instMirror.invoke(#toString, []).reflectee,
-      equals('[null, null, null, null, null, null, null, null, null, null,'
-          ' null, null, null, null, null, null, null, null, null, null,'
-          ' null, null, null, null, null, null, null, null, null, null,'
-          ' null, null, null, null, null, null, null, null, null, null,'
-          ' null, null, null, null]'));
-}
-
-testFieldAccess(mirrors) {
-  var instance = new Class();
-
-  var libMirror = mirrors.findLibrary(#MirrorsTest);
-  var classMirror = libMirror.declarations[#Class];
-  var instMirror = reflect(instance);
-  var fieldMirror = classMirror.declarations[#field];
-  var future;
-
-  expect(fieldMirror is VariableMirror, isTrue);
-  expect(fieldMirror.type, equals(mirrors.dynamicType));
-
-  libMirror.setField(#topLevelField, [91]);
-  expect(libMirror.getField(#topLevelField).reflectee, equals([91]));
-  expect(topLevelField, equals([91]));
-}
-
-testClosureMirrors(mirrors) {
-  // TODO(ahe): Test optional parameters (named or not).
-  var closure = (x, y, z) {
-    return x + y + z;
-  };
-
-  var mirror = reflect(closure);
-  expect(mirror is ClosureMirror, equals(true));
-
-  var funcMirror = mirror.function;
-  expect(funcMirror is MethodMirror, equals(true));
-  expect(funcMirror.parameters.length, equals(3));
-
-  expect(mirror.apply([7, 8, 9]).reflectee, equals(24));
-}
-
-testInvokeConstructor(mirrors) {
-  var classMirror = reflectClass(Class);
-
-  var instanceMirror = classMirror.newInstance(const Symbol(''), []);
-  expect(instanceMirror.reflectee is Class, equals(true));
-  expect(instanceMirror.reflectee.field, equals("default value"));
-
-  instanceMirror = classMirror.newInstance(#withInitialValue, [45]);
-  expect(instanceMirror.reflectee is Class, equals(true));
-  expect(instanceMirror.reflectee.field, equals(45));
-
-  instanceMirror = classMirror.newInstance(#generative, [7]);
-  expect(instanceMirror.reflectee is Class, equals(true));
-  expect(instanceMirror.reflectee.field, equals(7));
-
-  instanceMirror = classMirror.newInstance(#redirecting, [8]);
-  expect(instanceMirror.reflectee is Class, equals(true));
-  expect(instanceMirror.reflectee.field, equals(16));
-
-  instanceMirror = classMirror.newInstance(#faktory, [9]);
-  expect(instanceMirror.reflectee is Class, equals(true));
-  expect(instanceMirror.reflectee.field, equals(27));
-
-  instanceMirror = classMirror.newInstance(#redirectingFactory, [10]);
-  expect(instanceMirror.reflectee is Class, equals(true));
-  expect(instanceMirror.reflectee.field, equals(30));
-}
-
-testReflectClass(mirrors) {
-  var classMirror = reflectClass(Class);
-  expect(classMirror is ClassMirror, equals(true));
-  var symbolClassMirror = reflectClass(Symbol);
-  var symbolMirror =
-      symbolClassMirror.newInstance(const Symbol(''), ['withInitialValue']);
-  var objectMirror = classMirror.newInstance(symbolMirror.reflectee, [1234]);
-  expect(objectMirror.reflectee is Class, equals(true));
-  expect(objectMirror.reflectee.field, equals(1234));
-}
-
-testNames(mirrors) {
-  var libMirror = mirrors.findLibrary(#MirrorsTest);
-  var classMirror = libMirror.declarations[#Class];
-  var typedefMirror = libMirror.declarations[#Typedef];
-  var methodMirror = libMirror.declarations[#testNames];
-  var variableMirror = classMirror.declarations[#field];
-
-  expect(libMirror.simpleName, equals(#MirrorsTest));
-  expect(libMirror.qualifiedName, equals(#MirrorsTest));
-
-  expect(classMirror.simpleName, equals(#Class));
-  expect(classMirror.qualifiedName, equals(#MirrorsTest.Class));
-
-  TypeVariableMirror typeVariable = classMirror.typeVariables.single;
-  expect(typeVariable.simpleName, equals(#T));
-  expect(
-      typeVariable.qualifiedName, equals(const Symbol('MirrorsTest.Class.T')));
-
-  if (!isDart2js) {
-    // TODO(ahe): Implement this in dart2js.
-    expect(typedefMirror.simpleName, equals(#Typedef));
-    expect(typedefMirror.qualifiedName,
-        equals(const Symbol('MirrorsTest.Typedef')));
-
-    var typedefMirrorDeNovo = reflectType(Typedef);
-    expect(typedefMirrorDeNovo.simpleName, equals(#Typedef));
-    expect(typedefMirrorDeNovo.qualifiedName,
-        equals(const Symbol('MirrorsTest.Typedef')));
-  }
-
-  expect(methodMirror.simpleName, equals(#testNames));
-  expect(methodMirror.qualifiedName,
-      equals(const Symbol('MirrorsTest.testNames')));
-
-  expect(variableMirror.simpleName, equals(#field));
-  expect(variableMirror.qualifiedName,
-      equals(const Symbol('MirrorsTest.Class.field')));
-}
-
-testLibraryUri(var value, bool check(Uri)) {
-  var valueMirror = reflect(value);
-  ClassMirror valueClass = valueMirror.type;
-  LibraryMirror valueLibrary = valueClass.owner;
-  Uri uri = valueLibrary.uri;
-  if (uri.scheme != "https" ||
-      uri.host != "dartlang.org" ||
-      uri.path != "/dart2js-stripped-uri") {
-    expect(check(uri), isTrue);
-  }
-}
-
-main() {
-  var mirrors = currentMirrorSystem();
-  test("Test reflective method invocation", () {
-    testInvoke(mirrors);
-  });
-  test('Test intercepted objects', () {
-    testIntercepted(mirrors);
-  });
-  test("Test field access", () {
-    testFieldAccess(mirrors);
-  });
-  test("Test closure mirrors", () {
-    testClosureMirrors(mirrors);
-  });
-  test("Test invoke constructor", () {
-    testInvokeConstructor(mirrors);
-  });
-  test("Test current library uri", () {
-    testLibraryUri(
-        new Class(),
-        // TODO(floitsch): change this to "/mirrors_test.dart" when
-        // dart2js_mirrors_test.dart has been removed.
-        (Uri uri) => uri.path.endsWith('mirrors_test.dart'));
-  });
-  test("Test dart library uri", () {
-    testLibraryUri("test", (Uri uri) {
-      if (uri == Uri.parse('dart:core')) return true;
-      // TODO(floitsch): do we want to fake the interceptors to
-      // be in dart:core?
-      return (uri == Uri.parse('dart:_interceptors'));
-    });
-  });
-  test("Test simple and qualifiedName", () {
-    testNames(mirrors);
-  });
-  test("Test reflect type", () {
-    testReflectClass(mirrors);
-  });
-}
diff --git a/tests/lib/mirrors/mirrors_used_generic_types_test.dart b/tests/lib/mirrors/mirrors_used_generic_types_test.dart
deleted file mode 100644
index 5962214..0000000
--- a/tests/lib/mirrors/mirrors_used_generic_types_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-library Test;
-
-@MirrorsUsed(targets: const ["Test"])
-import 'dart:mirrors';
-import 'dart:async';
-
-import 'package:expect/expect.dart';
-
-class A {
-  // Because of the `mirrors-used` annotation, the types `List` and `Future`
-  // are not reflectable.
-  // However, we still need to be able to create a Mirror for them, when we
-  // create a mirror for `foo`. In particular, it must be able to create a
-  // mirror, even though there are generic types.
-  List<int> foo(Future<int> x) {
-    return null;
-  }
-}
-
-void main() {
-  var m = reflect(new A()).type.instanceMembers[#foo];
-  Expect.equals(#List, m.returnType.simpleName);
-  Expect.equals(#Future, m.parameters[0].type.simpleName);
-}
diff --git a/tests/lib/mirrors/mirrors_used_get_name2_test.dart b/tests/lib/mirrors/mirrors_used_get_name2_test.dart
deleted file mode 100644
index 762665e..0000000
--- a/tests/lib/mirrors/mirrors_used_get_name2_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test to make sure that the names of classes that are marked with meta
-// annotations of MirrorsUsed are preserved.
-// In the test the class B is not instantiated, but we still want its names
-// ("foo") to be preserved.
-
-@MirrorsUsed(metaTargets: "Meta")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(invocationMirror) {
-    return MirrorSystem.getName(invocationMirror.memberName);
-  }
-}
-
-class B {
-  @Meta()
-  foo() => 499;
-}
-
-class Meta {
-  const Meta();
-}
-
-void main() {
-  var a = new A();
-  if (new DateTime.now().year == 1984) {
-    a = A;
-  }
-  Expect.equals("foo", a.foo());
-}
diff --git a/tests/lib/mirrors/mirrors_used_get_name_test.dart b/tests/lib/mirrors/mirrors_used_get_name_test.dart
deleted file mode 100644
index f87ee52..0000000
--- a/tests/lib/mirrors/mirrors_used_get_name_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test to make sure that the names of classes that are marked with mirrors-used
-// are preserved.
-// In the test the class B is not instantiated, but we still want its names (the
-// "foo") to be preserved.
-
-@MirrorsUsed(targets: "B")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A {
-  noSuchMethod(invocationMirror) {
-    return MirrorSystem.getName(invocationMirror.memberName);
-  }
-}
-
-class B {
-  foo() => 499;
-}
-
-void main() {
-  var a = new A();
-  if (new DateTime.now().year == 1984) {
-    a = A;
-  }
-  Expect.equals("foo", a.foo());
-}
diff --git a/tests/lib/mirrors/mirrors_used_inheritance_test.dart b/tests/lib/mirrors/mirrors_used_inheritance_test.dart
deleted file mode 100644
index 5066731..0000000
--- a/tests/lib/mirrors/mirrors_used_inheritance_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test to make sure that all members of reflectable classes are reflectable,
-// including ones inherited from super classes and the overriding members
-// of subclasses.
-
-@MirrorsUsed(metaTargets: "Meta")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class Meta {
-  const Meta();
-}
-
-class Super {
-  var inheritedField = 1;
-  var overriddenField = 1;
-
-  inheritedMethod(x) => x;
-  overriddenMethod(x) => x;
-}
-
-@Meta()
-class Reflected extends Super {
-  var overriddenField = 2;
-  var subclassedField = 2;
-
-  overriddenMethod(x) => 2 * x;
-  subclassedMethod(x) => 2 * x;
-}
-
-class Subclass extends Reflected {
-  var subclassedField = 4;
-  var subclassField = 4;
-
-  subclassedMethod(x) => 4 * x;
-  subclassMethod(x) => 4 * x;
-}
-
-tryCall(object, symbol, value, expected) {
-  var mirror = reflect(object);
-  var result = mirror.invoke(symbol, [value]).reflectee;
-  Expect.equals(result, expected);
-}
-
-tryField(object, symbol, expected) {
-  var mirror = reflect(object);
-  var result = mirror.getField(symbol).reflectee;
-  Expect.equals(result, expected);
-}
-
-main() {
-  var objects = [new Reflected(), new Subclass()];
-
-  // Make sure the subclass methods are alive.
-  objects[1].subclassField = 9;
-  print(objects[1].subclassMethod(9));
-
-  var index = 1;
-  if (new DateTime.now().year == 1984) {
-    index = 0;
-  }
-
-  // Reflect an instance of [Subclass], which should only expose the interface
-  // of [Reflected].
-  var subclass = objects[index];
-  tryCall(subclass, #inheritedMethod, 11, 11);
-  tryCall(subclass, #overriddenMethod, 11, 22);
-  tryCall(subclass, #subclassedMethod, 11, 44);
-  tryField(subclass, #inheritedField, 1);
-  tryField(subclass, #overriddenField, 2);
-  tryField(subclass, #subclassedField, 4);
-  Expect.throws(() => reflect(subclass).invoke(#subclassMethod, [11]));
-  Expect.throws(() => reflect(subclass).getField(#subclassField));
-}
diff --git a/tests/lib/mirrors/mirrors_used_merge_test.dart b/tests/lib/mirrors/mirrors_used_merge_test.dart
deleted file mode 100644
index 534c5e7..0000000
--- a/tests/lib/mirrors/mirrors_used_merge_test.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// Test that two MirrorsUsed annotations can be merged with out crashing
-/// dart2js.
-
-@MirrorsUsed(symbols: const ['foo'])
-@MirrorsUsed(symbols: const ['bar'])
-import 'dart:mirrors';
-
-main() {
-  // Do nothing, just make sure that merging the annotations doesn't crash
-  // dart2js.
-}
diff --git a/tests/lib/mirrors/mirrors_used_typedef_declaration_test.dart b/tests/lib/mirrors/mirrors_used_typedef_declaration_test.dart
deleted file mode 100644
index 8768131..0000000
--- a/tests/lib/mirrors/mirrors_used_typedef_declaration_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2014, 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 test;
-
-import 'package:expect/expect.dart';
-
-@MirrorsUsed(targets: "Foo")
-import 'dart:mirrors';
-
-typedef int Foo(String x);
-typedef int Bar();
-
-main() {
-  LibraryMirror thisLibrary = currentMirrorSystem().findLibrary(#test);
-
-  Mirror fooMirror = thisLibrary.declarations[#Foo];
-
-  Expect.isTrue(fooMirror != null, 'Foo not found.');
-  Expect.isTrue(thisLibrary.declarations[#Foo] is TypedefMirror,
-      'TypedefMirror expected, found $fooMirror');
-
-  // The following code does not currently work on the VM, because it does not
-  // support MirrorsUsed (see dartbug.com/16048).
-  Mirror barMirror = thisLibrary.declarations[#Bar]; //             //# 01: ok
-  Expect.isTrue(barMirror == null, //                               //# 01: continued
-                'Bar should not be emitted due to MirrorsUsed.'); //# 01: continued
-}
diff --git a/tests/lib/mirrors/mirrors_visitor.dart b/tests/lib/mirrors/mirrors_visitor.dart
deleted file mode 100644
index a78b7ec..0000000
--- a/tests/lib/mirrors/mirrors_visitor.dart
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright (c) 2014, 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 mirrors.visitor;
-
-import 'dart:mirrors';
-
-abstract class MirrorsVisitor {
-  visitMirror(Mirror mirror) {
-    if (mirror == null) return;
-
-    if (mirror is FunctionTypeMirror) {
-      visitFunctionTypeMirror(mirror);
-    } else if (mirror is ClassMirror) {
-      visitClassMirror(mirror);
-    } else if (mirror is TypedefMirror) {
-      visitTypedefMirror(mirror);
-    } else if (mirror is TypeVariableMirror) {
-      visitTypeVariableMirror(mirror);
-    } else if (mirror is TypeMirror) {
-      visitTypeMirror(mirror);
-    } else if (mirror is ParameterMirror) {
-      visitParameterMirror(mirror);
-    } else if (mirror is VariableMirror) {
-      visitVariableMirror(mirror);
-    } else if (mirror is MethodMirror) {
-      visitMethodMirror(mirror);
-    } else if (mirror is LibraryMirror) {
-      visitLibraryMirror(mirror);
-    } else if (mirror is InstanceMirror) {
-      visitInstanceMirror(mirror);
-    } else if (mirror is ObjectMirror) {
-      visitObjectMirror(mirror);
-    } else if (mirror is DeclarationMirror) {
-      visitDeclarationMirror(mirror);
-    } else {
-      throw new StateError(
-          'Unexpected mirror kind ${mirror.runtimeType}: $mirror');
-    }
-  }
-
-  visitClassMirror(ClassMirror mirror) {
-    visitObjectMirror(mirror);
-    visitTypeMirror(mirror);
-  }
-
-  visitDeclarationMirror(DeclarationMirror mirror) {}
-
-  visitFunctionTypeMirror(FunctionTypeMirror mirror) {
-    visitClassMirror(mirror);
-  }
-
-  visitInstanceMirror(InstanceMirror mirror) {
-    visitObjectMirror(mirror);
-  }
-
-  visitLibraryMirror(LibraryMirror mirror) {
-    visitObjectMirror(mirror);
-    visitDeclarationMirror(mirror);
-  }
-
-  visitMethodMirror(MethodMirror mirror) {
-    visitDeclarationMirror(mirror);
-  }
-
-  visitObjectMirror(ObjectMirror mirror) {}
-
-  visitParameterMirror(ParameterMirror mirror) {
-    visitVariableMirror(mirror);
-  }
-
-  visitTypedefMirror(TypedefMirror mirror) {
-    visitTypeMirror(mirror);
-  }
-
-  visitTypeMirror(TypeMirror mirror) {
-    visitDeclarationMirror(mirror);
-  }
-
-  visitTypeVariableMirror(TypeVariableMirror mirror) {
-    visitTypeMirror(mirror);
-  }
-
-  visitVariableMirror(VariableMirror mirror) {
-    visitDeclarationMirror(mirror);
-  }
-}
diff --git a/tests/lib/mirrors/mixin_application_test.dart b/tests/lib/mirrors/mixin_application_test.dart
deleted file mode 100644
index 203defd..0000000
--- a/tests/lib/mirrors/mixin_application_test.dart
+++ /dev/null
@@ -1,326 +0,0 @@
-// Copyright (c) 2013, 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 test.mixin_application_test;
-
-@MirrorsUsed(targets: "test.mixin_application_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'model.dart';
-import 'stringify.dart';
-
-class Mixin {
-  int i;
-  m() {}
-}
-
-class Mixin2 {
-  int i2;
-  m2() {}
-}
-
-class MixinApplication = C with Mixin;
-class MixinApplicationA = C with Mixin, Mixin2;
-
-class UnusedMixinApplication = C with Mixin;
-
-class Subclass extends C with Mixin {
-  f() {}
-}
-
-class Subclass2 extends MixinApplication {
-  g() {}
-}
-
-class SubclassA extends C with Mixin, Mixin2 {
-  fa() {}
-}
-
-class Subclass2A extends MixinApplicationA {
-  ga() {}
-}
-
-membersOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && !v.isConstructor) result[k] = v;
-    if (v is VariableMirror) result[k] = v;
-  });
-  return result;
-}
-
-constructorsOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && v.isConstructor) result[k] = v;
-  });
-  return result;
-}
-
-checkClass(Type type, List<String> expectedSuperclasses) {
-  int i = 0;
-  for (var cls = reflectClass(type); cls != null; cls = cls.superclass) {
-    expect(expectedSuperclasses[i++], cls);
-  }
-  Expect.equals(i, expectedSuperclasses.length, '$type');
-}
-
-expectSame(ClassMirror a, ClassMirror b) {
-  Expect.equals(a, b);
-  expect(stringify(a), b);
-  expect(stringify(b), a);
-}
-
-testMixin() {
-  checkClass(Mixin, [
-    'Class(s(Mixin) in s(test.mixin_application_test), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  expect(
-      '{i: Variable(s(i) in s(Mixin)),'
-      ' m: Method(s(m) in s(Mixin))}',
-      membersOf(reflectClass(Mixin)));
-
-  expect('{Mixin: Method(s(Mixin) in s(Mixin), constructor)}',
-      constructorsOf(reflectClass(Mixin)));
-}
-
-testMixin2() {
-  checkClass(Mixin2, [
-    'Class(s(Mixin2) in s(test.mixin_application_test), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  expect(
-      '{i2: Variable(s(i2) in s(Mixin2)),'
-      ' m2: Method(s(m2) in s(Mixin2))}',
-      membersOf(reflectClass(Mixin2)));
-
-  expect('{Mixin2: Method(s(Mixin2) in s(Mixin2), constructor)}',
-      constructorsOf(reflectClass(Mixin2)));
-}
-
-testMixinApplication() {
-  checkClass(MixinApplication, [
-    'Class(s(MixinApplication) in s(test.mixin_application_test), top-level)',
-    'Class(s(C) in s(test.model), top-level)',
-    'Class(s(B) in s(test.model), top-level)',
-    'Class(s(A) in s(test.model), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  String owner = 'Mixin';
-  expect(
-      '{i: Variable(s(i) in s($owner)),'
-      ' m: Method(s(m) in s($owner))}',
-      membersOf(reflectClass(MixinApplication)));
-
-  expect(
-      '{MixinApplication: Method(s(MixinApplication) in s(MixinApplication),'
-      ' constructor)}',
-      constructorsOf(reflectClass(MixinApplication)));
-
-  expectSame(reflectClass(C), reflectClass(MixinApplication).superclass);
-}
-
-testMixinApplicationA() {
-  String owner = ' in s(test.mixin_application_test)';
-  checkClass(MixinApplicationA, [
-    'Class(s(MixinApplicationA)'
-        ' in s(test.mixin_application_test), top-level)',
-    'Class(s(test.model.C with test.mixin_application_test.Mixin)'
-        '$owner, top-level)',
-    'Class(s(C) in s(test.model), top-level)',
-    'Class(s(B) in s(test.model), top-level)',
-    'Class(s(A) in s(test.model), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  owner = 'Mixin2';
-  expect(
-      '{i2: Variable(s(i2) in s($owner)),'
-      ' m2: Method(s(m2) in s($owner))}',
-      membersOf(reflectClass(MixinApplicationA)));
-
-  expect(
-      '{MixinApplicationA: Method(s(MixinApplicationA) in s(MixinApplicationA),'
-      ' constructor)}',
-      constructorsOf(reflectClass(MixinApplicationA)));
-
-  expect(
-      '{i: Variable(s(i) in s(Mixin)),'
-      ' m: Method(s(m) in s(Mixin))}',
-      membersOf(reflectClass(MixinApplicationA).superclass));
-
-  String name = 'test.model.C with test.mixin_application_test.Mixin';
-  expect(
-      '{$name:'
-      ' Method(s($name)'
-      ' in s($name), constructor)}',
-      constructorsOf(reflectClass(MixinApplicationA).superclass));
-
-  expectSame(
-      reflectClass(C), reflectClass(MixinApplicationA).superclass.superclass);
-}
-
-testUnusedMixinApplication() {
-  checkClass(UnusedMixinApplication, [
-    'Class(s(UnusedMixinApplication) in s(test.mixin_application_test),'
-        ' top-level)',
-    'Class(s(C) in s(test.model), top-level)',
-    'Class(s(B) in s(test.model), top-level)',
-    'Class(s(A) in s(test.model), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  String owner = 'Mixin';
-  expect(
-      '{i: Variable(s(i) in s($owner)),'
-      ' m: Method(s(m) in s($owner))}',
-      membersOf(reflectClass(UnusedMixinApplication)));
-
-  expect(
-      '{UnusedMixinApplication: Method(s(UnusedMixinApplication)'
-      ' in s(UnusedMixinApplication), constructor)}',
-      constructorsOf(reflectClass(UnusedMixinApplication)));
-
-  expectSame(reflectClass(C), reflectClass(UnusedMixinApplication).superclass);
-}
-
-testSubclass() {
-  String owner = ' in s(test.mixin_application_test)';
-  checkClass(Subclass, [
-    'Class(s(Subclass) in s(test.mixin_application_test), top-level)',
-    'Class(s(test.model.C with test.mixin_application_test.Mixin)'
-        '$owner, top-level)',
-    'Class(s(C) in s(test.model), top-level)',
-    'Class(s(B) in s(test.model), top-level)',
-    'Class(s(A) in s(test.model), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  expect('{f: Method(s(f) in s(Subclass))}', membersOf(reflectClass(Subclass)));
-
-  expect('{Subclass: Method(s(Subclass) in s(Subclass), constructor)}',
-      constructorsOf(reflectClass(Subclass)));
-
-  expect(
-      '{i: Variable(s(i) in s(Mixin)),'
-      ' m: Method(s(m) in s(Mixin))}',
-      membersOf(reflectClass(Subclass).superclass));
-
-  String name = 'test.model.C with test.mixin_application_test.Mixin';
-  expect(
-      '{$name:'
-      ' Method(s($name)'
-      ' in s($name), constructor)}',
-      constructorsOf(reflectClass(Subclass).superclass));
-
-  expectSame(reflectClass(C), reflectClass(Subclass).superclass.superclass);
-}
-
-testSubclass2() {
-  checkClass(Subclass2, [
-    'Class(s(Subclass2) in s(test.mixin_application_test), top-level)',
-    'Class(s(MixinApplication) in s(test.mixin_application_test), top-level)',
-    'Class(s(C) in s(test.model), top-level)',
-    'Class(s(B) in s(test.model), top-level)',
-    'Class(s(A) in s(test.model), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  expect(
-      '{g: Method(s(g) in s(Subclass2))}', membersOf(reflectClass(Subclass2)));
-
-  expect('{Subclass2: Method(s(Subclass2) in s(Subclass2), constructor)}',
-      constructorsOf(reflectClass(Subclass2)));
-
-  expectSame(
-      reflectClass(MixinApplication), reflectClass(Subclass2).superclass);
-}
-
-testSubclassA() {
-  String owner = ' in s(test.mixin_application_test)';
-  checkClass(SubclassA, [
-    'Class(s(SubclassA) in s(test.mixin_application_test), top-level)',
-    'Class(s(test.model.C with test.mixin_application_test.Mixin,'
-        ' test.mixin_application_test.Mixin2)$owner, top-level)',
-    'Class(s(test.model.C with test.mixin_application_test.Mixin)$owner,'
-        ' top-level)',
-    'Class(s(C) in s(test.model), top-level)',
-    'Class(s(B) in s(test.model), top-level)',
-    'Class(s(A) in s(test.model), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  expect('{fa: Method(s(fa) in s(SubclassA))}',
-      membersOf(reflectClass(SubclassA)));
-
-  expect('{SubclassA: Method(s(SubclassA) in s(SubclassA), constructor)}',
-      constructorsOf(reflectClass(SubclassA)));
-
-  expect(
-      '{i2: Variable(s(i2) in s(Mixin2)),'
-      ' m2: Method(s(m2) in s(Mixin2))}',
-      membersOf(reflectClass(SubclassA).superclass));
-
-  String name = 'test.model.C with test.mixin_application_test.Mixin,'
-      ' test.mixin_application_test.Mixin2';
-  expect('{$name: Method(s($name) in s($name), constructor)}',
-      constructorsOf(reflectClass(SubclassA).superclass));
-
-  expect(
-      '{i: Variable(s(i) in s(Mixin)),'
-      ' m: Method(s(m) in s(Mixin))}',
-      membersOf(reflectClass(SubclassA).superclass.superclass));
-
-  name = 'test.model.C with test.mixin_application_test.Mixin';
-  expect(
-      '{$name:'
-      ' Method(s($name)'
-      ' in s($name), constructor)}',
-      constructorsOf(reflectClass(SubclassA).superclass.superclass));
-
-  expectSame(reflectClass(C),
-      reflectClass(SubclassA).superclass.superclass.superclass);
-}
-
-testSubclass2A() {
-  String owner = ' in s(test.mixin_application_test)';
-  checkClass(Subclass2A, [
-    'Class(s(Subclass2A) in s(test.mixin_application_test), top-level)',
-    'Class(s(MixinApplicationA) in s(test.mixin_application_test),'
-        ' top-level)',
-    'Class(s(test.model.C with test.mixin_application_test.Mixin)$owner,'
-        ' top-level)',
-    'Class(s(C) in s(test.model), top-level)',
-    'Class(s(B) in s(test.model), top-level)',
-    'Class(s(A) in s(test.model), top-level)',
-    'Class(s(Object) in s(dart.core), top-level)',
-  ]);
-
-  expect('{ga: Method(s(ga) in s(Subclass2A))}',
-      membersOf(reflectClass(Subclass2A)));
-
-  expect('{Subclass2A: Method(s(Subclass2A) in s(Subclass2A), constructor)}',
-      constructorsOf(reflectClass(Subclass2A)));
-
-  expectSame(
-      reflectClass(MixinApplicationA), reflectClass(Subclass2A).superclass);
-}
-
-main() {
-  testMixin();
-  testMixin2();
-  testMixinApplication();
-  testMixinApplicationA();
-  testUnusedMixinApplication();
-  testSubclass();
-  testSubclass2();
-  testSubclassA();
-  testSubclass2A();
-}
diff --git a/tests/lib/mirrors/mixin_members_test.dart b/tests/lib/mirrors/mixin_members_test.dart
deleted file mode 100644
index 213cb05..0000000
--- a/tests/lib/mirrors/mixin_members_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2013, 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 mixin_members_test;
-
-@MirrorsUsed(targets: "mixin_members_test")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-import 'stringify.dart';
-
-abstract class Fooer {
-  foo1();
-}
-
-class S implements Fooer {
-  foo1() {}
-  foo2() {}
-}
-
-class M1 {
-  bar1() {}
-  bar2() {}
-}
-
-class M2 {
-  baz1() {}
-  baz2() {}
-}
-
-class C extends S with M1, M2 {}
-
-membersOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && !v.isConstructor) result[k] = v;
-    if (v is VariableMirror) result[k] = v;
-  });
-  return result;
-}
-
-main() {
-  ClassMirror cm = reflectClass(C);
-  ClassMirror sM1M2 = cm.superclass;
-  ClassMirror sM1 = sM1M2.superclass;
-  ClassMirror s = sM1.superclass;
-  expect('{}', membersOf(cm));
-  expect(
-      '[s(baz1), s(baz2)]',
-      // TODO(ahe): Shouldn't have to sort.
-      sort(membersOf(sM1M2).keys),
-      '(S with M1, M2).members');
-  expect('[s(M2)]', simpleNames(sM1M2.superinterfaces),
-      '(S with M1, M2).superinterfaces');
-  expect(
-      '[s(bar1), s(bar2)]',
-      // TODO(ahe): Shouldn't have to sort.
-      sort(membersOf(sM1).keys),
-      '(S with M1).members');
-  expect('[s(M1)]', simpleNames(sM1.superinterfaces),
-      '(S with M1).superinterfaces');
-  expect(
-      '[s(foo1), s(foo2)]',
-      // TODO(ahe): Shouldn't have to sort.
-      sort(membersOf(s).keys),
-      's.members');
-  expect('[s(Fooer)]', simpleNames(s.superinterfaces), 's.superinterfaces');
-  Expect.equals(s, reflectClass(S));
-}
diff --git a/tests/lib/mirrors/mixin_test.dart b/tests/lib/mirrors/mixin_test.dart
deleted file mode 100644
index 5563f44..0000000
--- a/tests/lib/mirrors/mixin_test.dart
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright (c) 2013, 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 test.mixin;
-
-@MirrorsUsed(targets: "test.mixin")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Super {}
-
-class Mixin {}
-
-class Mixin2 {}
-
-class Mixin3 {}
-
-class MixinApplication = Super with Mixin;
-
-class Class extends Super with Mixin {}
-
-class MultipleMixins extends Super with Mixin, Mixin2, Mixin3 {}
-
-main() {
-  Expect.equals(reflectClass(Mixin), reflectClass(MixinApplication).mixin);
-  Expect.equals(
-      reflectClass(Super), reflectClass(MixinApplication).superclass.mixin);
-
-  Expect.equals(reflectClass(Class), reflectClass(Class).mixin);
-  Expect.equals(reflectClass(Mixin), reflectClass(Class).superclass.mixin);
-  Expect.equals(
-      reflectClass(Super), reflectClass(Class).superclass.superclass.mixin);
-
-  Expect.equals(
-      reflectClass(MultipleMixins), reflectClass(MultipleMixins).mixin);
-  Expect.equals(
-      reflectClass(Mixin3), reflectClass(MultipleMixins).superclass.mixin);
-  Expect.equals(reflectClass(Mixin2),
-      reflectClass(MultipleMixins).superclass.superclass.mixin);
-  Expect.equals(reflectClass(Mixin),
-      reflectClass(MultipleMixins).superclass.superclass.superclass.mixin);
-  Expect.equals(
-      reflectClass(Super),
-      reflectClass(MultipleMixins)
-          .superclass
-          .superclass
-          .superclass
-          .superclass
-          .mixin);
-}
diff --git a/tests/lib/mirrors/model.dart b/tests/lib/mirrors/model.dart
deleted file mode 100644
index 508cbf2..0000000
--- a/tests/lib/mirrors/model.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2013, 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 test.model;
-
-var accessorA;
-
-var accessorB;
-
-var accessorC;
-
-var fieldC;
-
-class A {
-  var field;
-  instanceMethod(x) => 'A:instanceMethod($x)';
-  get accessor => 'A:get accessor';
-  set accessor(x) {
-    accessorA = x;
-  }
-
-  aMethod() => 'aMethod';
-}
-
-class B extends A {
-  get field => 'B:get field';
-  instanceMethod(x) => 'B:instanceMethod($x)';
-  get accessor => 'B:get accessor';
-  set accessor(x) {
-    accessorB = x;
-  }
-
-  bMethod() => 'bMethod';
-}
-
-class C extends B {
-  set field(x) {
-    fieldC = x;
-  }
-
-  instanceMethod(x) => 'C:instanceMethod($x)';
-  get accessor => 'C:get accessor';
-  set accessor(x) {
-    accessorC = x;
-  }
-
-  cMethod() => 'cMethod';
-}
diff --git a/tests/lib/mirrors/model_test.dart b/tests/lib/mirrors/model_test.dart
deleted file mode 100644
index b81fbd1..0000000
--- a/tests/lib/mirrors/model_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2013, 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 test.model_test;
-
-import 'package:expect/expect.dart';
-
-import 'model.dart';
-
-isNoSuchMethodError(e) => e is NoSuchMethodError;
-
-main() {
-  var a = new A();
-  var b = new B();
-  var c = new C();
-
-  Expect.isNull(a.field);
-  Expect.equals('B:get field', b.field);
-  Expect.equals('B:get field', c.field);
-
-  a.field = 42;
-  b.field = 87;
-  c.field = 89;
-  Expect.equals(42, a.field);
-  Expect.equals('B:get field', b.field);
-  Expect.equals('B:get field', c.field);
-  Expect.equals(89, fieldC);
-
-  Expect.equals('A:instanceMethod(7)', a.instanceMethod(7));
-  Expect.equals('B:instanceMethod(9)', b.instanceMethod(9));
-  Expect.equals('C:instanceMethod(13)', c.instanceMethod(13));
-
-  Expect.equals('A:get accessor', a.accessor);
-  Expect.equals('B:get accessor', b.accessor);
-  Expect.equals('C:get accessor', c.accessor);
-
-  a.accessor = 'foo';
-  b.accessor = 'bar';
-  c.accessor = 'baz';
-
-  Expect.equals('foo', accessorA);
-  Expect.equals('bar', accessorB);
-  Expect.equals('baz', accessorC);
-
-  Expect.equals('aMethod', a.aMethod());
-  Expect.equals('aMethod', b.aMethod());
-  Expect.equals('aMethod', c.aMethod());
-
-  Expect.throws(() {
-    a.bMethod();
-  }, isNoSuchMethodError);
-  Expect.equals('bMethod', b.bMethod());
-  Expect.equals('bMethod', c.bMethod());
-
-  Expect.throws(() {
-    a.cMethod();
-  }, isNoSuchMethodError);
-  Expect.throws(() {
-    b.cMethod();
-  }, isNoSuchMethodError);
-  Expect.equals('cMethod', c.cMethod());
-}
diff --git a/tests/lib/mirrors/native_class_test.dart b/tests/lib/mirrors/native_class_test.dart
deleted file mode 100644
index b6171d0..0000000
--- a/tests/lib/mirrors/native_class_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2013, 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 test.native_class_test;
-
-import 'dart:html';
-
-@MirrorsUsed(targets: 'dart.dom.html.Element')
-import 'dart:mirrors';
-
-import 'stringify.dart';
-
-main() {
-  expect('s(dart.dom.html.Element)', reflectClass(Element).qualifiedName);
-  expect(
-      's(dart.dom.html.Node)', reflectClass(Element).superclass.qualifiedName);
-  window.postMessage('unittest-suite-success', '*');
-}
diff --git a/tests/lib/mirrors/new_instance_optional_arguments_test.dart b/tests/lib/mirrors/new_instance_optional_arguments_test.dart
deleted file mode 100644
index 1c08bbe..0000000
--- a/tests/lib/mirrors/new_instance_optional_arguments_test.dart
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright (c) 2014, 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 mirror_test;
-
-@MirrorsUsed(targets: "mirror_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {
-  var req1, opt1, opt2;
-  A.a0([opt1]) : this.opt1 = opt1;
-  A.b0([opt1, opt2])
-      : this.opt1 = opt1,
-        this.opt2 = opt2;
-  A.c0([opt1 = 499]) : this.opt1 = opt1;
-  A.d0([opt1 = 499, opt2 = 42])
-      : this.opt1 = opt1,
-        this.opt2 = opt2;
-  A.a1(req1, [opt1])
-      : this.req1 = req1,
-        this.opt1 = opt1;
-  A.b1(req1, [opt1, opt2])
-      : this.req1 = req1,
-        this.opt1 = opt1,
-        this.opt2 = opt2;
-  A.c1(req1, [opt1 = 499])
-      : this.req1 = req1,
-        this.opt1 = opt1;
-  A.d1(req1, [opt1 = 499, opt2 = 42])
-      : this.req1 = req1,
-        this.opt1 = opt1,
-        this.opt2 = opt2;
-}
-
-main() {
-  ClassMirror cm = reflectClass(A);
-
-  var o;
-  o = cm.newInstance(#a0, []).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(null, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#b0, []).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(null, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#c0, []).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(499, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#d0, []).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(499, o.opt1);
-  Expect.equals(42, o.opt2);
-
-  o = cm.newInstance(#a0, [77]).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#b0, [77]).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#c0, [77]).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#d0, [77]).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(42, o.opt2);
-
-  o = cm.newInstance(#b0, [77, 11]).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(11, o.opt2);
-  o = cm.newInstance(#d0, [77, 11]).reflectee;
-  Expect.equals(null, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(11, o.opt2);
-
-  o = cm.newInstance(#a1, [123]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(null, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#b1, [123]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(null, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#c1, [123]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(499, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#d1, [123]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(499, o.opt1);
-  Expect.equals(42, o.opt2);
-
-  o = cm.newInstance(#a1, [123, 77]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#b1, [123, 77]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#c1, [123, 77]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(null, o.opt2);
-  o = cm.newInstance(#d1, [123, 77]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(42, o.opt2);
-
-  o = cm.newInstance(#b1, [123, 77, 11]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(11, o.opt2);
-  o = cm.newInstance(#d1, [123, 77, 11]).reflectee;
-  Expect.equals(123, o.req1);
-  Expect.equals(77, o.opt1);
-  Expect.equals(11, o.opt2);
-}
diff --git a/tests/lib/mirrors/new_instance_with_type_arguments_test.dart b/tests/lib/mirrors/new_instance_with_type_arguments_test.dart
deleted file mode 100644
index 07e2239..0000000
--- a/tests/lib/mirrors/new_instance_with_type_arguments_test.dart
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2013, 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 test.new_instance_with_type_arguments_test;
-
-@MirrorsUsed(targets: "test.new_instance_with_type_arguments_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A<T> {
-  Type get t => T;
-}
-
-class B extends A<int> {}
-
-class C<S> extends A<num> {
-  Type get s => S;
-}
-
-main() {
-  ClassMirror cmA = reflectClass(A);
-  ClassMirror cmB = reflectClass(B);
-  ClassMirror cmC = reflectClass(C);
-
-  var a_int = new A<int>();
-  var a_dynamic = new A();
-  var b = new B();
-  var c_string = new C<String>();
-  var c_dynamic = new C();
-
-  Expect.equals(int, a_int.t);
-  Expect.equals(dynamic, a_dynamic.t);
-  Expect.equals(int, b.t);
-  Expect.equals(num, c_string.t);
-  Expect.equals(num, c_dynamic.t);
-
-  Expect.equals(String, c_string.s);
-  Expect.equals(dynamic, c_dynamic.s);
-
-  var reflective_a_int =
-      cmB.superclass.newInstance(const Symbol(''), []).reflectee;
-  var reflective_a_dynamic = cmA.newInstance(const Symbol(''), []).reflectee;
-  var reflective_b = cmB.newInstance(const Symbol(''), []).reflectee;
-  var reflective_c_dynamic = cmC.newInstance(const Symbol(''), []).reflectee;
-
-  Expect.equals(int, reflective_a_int.t);
-  Expect.equals(dynamic, reflective_a_dynamic.t);
-  Expect.equals(int, reflective_b.t);
-  Expect.equals(num, c_string.t);
-  Expect.equals(num, reflective_c_dynamic.t);
-
-  Expect.equals(String, c_string.s);
-  Expect.equals(dynamic, reflective_c_dynamic.s);
-
-  Expect.equals(a_int.runtimeType, reflective_a_int.runtimeType);
-  Expect.equals(a_dynamic.runtimeType, reflective_a_dynamic.runtimeType);
-  Expect.equals(b.runtimeType, reflective_b.runtimeType);
-  Expect.equals(c_dynamic.runtimeType, reflective_c_dynamic.runtimeType);
-}
diff --git a/tests/lib/mirrors/no_metadata_test.dart b/tests/lib/mirrors/no_metadata_test.dart
deleted file mode 100644
index b42480f..0000000
--- a/tests/lib/mirrors/no_metadata_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-import 'stringify.dart';
-
-class Foo {}
-
-main() {
-  expect('[]', reflectClass(Foo).metadata);
-}
diff --git a/tests/lib/mirrors/null2_test.dart b/tests/lib/mirrors/null2_test.dart
deleted file mode 100644
index 6412615..0000000
--- a/tests/lib/mirrors/null2_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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 test.null_test;
-
-@MirrorsUsed(targets: const ["test.null_test", Null])
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-main() {
-  InstanceMirror nullMirror = reflect(null);
-  for (int i = 0; i < 10; i++) {
-    Expect.isTrue(nullMirror.getField(#hashCode).reflectee is int);
-  }
-}
diff --git a/tests/lib/mirrors/null_test.dart b/tests/lib/mirrors/null_test.dart
deleted file mode 100644
index c7e9b0c..0000000
--- a/tests/lib/mirrors/null_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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 test.null_test;
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-main() {
-  InstanceMirror nullMirror = reflect(null);
-  Expect.isTrue(nullMirror.getField(#hashCode).reflectee is int);
-  Expect.equals(null.hashCode, nullMirror.getField(#hashCode).reflectee);
-  Expect.equals('Null', nullMirror.getField(#runtimeType).reflectee.toString());
-  Expect.isTrue(nullMirror.invoke(#==, [null]).reflectee);
-  Expect.isFalse(nullMirror.invoke(#==, [new Object()]).reflectee);
-  Expect.equals('null', nullMirror.invoke(#toString, []).reflectee);
-  Expect.throws(() => nullMirror.invoke(#notDefined, []),
-      (e) => e is NoSuchMethodError, 'noSuchMethod');
-
-  ClassMirror NullMirror = nullMirror.type;
-  Expect.equals(reflectClass(Null), NullMirror);
-  Expect.equals(#Null, NullMirror.simpleName);
-  Expect.equals(#Object, NullMirror.superclass.simpleName);
-  Expect.equals(null, NullMirror.superclass.superclass);
-  Expect.listEquals([], NullMirror.superinterfaces);
-  Map<Uri, LibraryMirror> libraries = currentMirrorSystem().libraries;
-  LibraryMirror coreLibrary = libraries[Uri.parse('dart:core')];
-  if (coreLibrary == null) {
-    // In minified mode we don't preserve the URIs.
-    coreLibrary = libraries.values
-        .firstWhere((LibraryMirror lm) => lm.simpleName == #dart.core);
-    Uri uri = coreLibrary.uri;
-    Expect.equals("https", uri.scheme);
-    Expect.equals("dartlang.org", uri.host);
-    Expect.equals("/dart2js-stripped-uri", uri.path);
-  }
-  Expect.equals(coreLibrary, NullMirror.owner);
-}
diff --git a/tests/lib/mirrors/operator_test.dart b/tests/lib/mirrors/operator_test.dart
deleted file mode 100644
index 91eb1bc..0000000
--- a/tests/lib/mirrors/operator_test.dart
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// Test operators.
-library test.operator_test;
-
-@MirrorsUsed(targets: "test.operator_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'stringify.dart';
-
-class Foo {
-  Foo operator ~() {}
-  Foo operator -() {}
-
-  bool operator ==(a) {}
-  Foo operator [](int a) {}
-  Foo operator *(Foo a) {}
-  Foo operator /(Foo a) {}
-  Foo operator %(Foo a) {}
-  Foo operator ~/(Foo a) {}
-  Foo operator +(Foo a) {}
-  Foo operator <<(Foo a) {}
-  Foo operator >>(Foo a) {}
-  Foo operator >=(Foo a) {}
-  Foo operator >(Foo a) {}
-  Foo operator <=(Foo a) {}
-  Foo operator <(Foo a) {}
-  Foo operator &(Foo a) {}
-  Foo operator ^(Foo a) {}
-  Foo operator |(Foo a) {}
-  Foo operator -(Foo a) {}
-
-  // TODO(ahe): use void when dart2js reifies that type.
-  operator []=(int a, Foo b) {}
-}
-
-void main() {
-  ClassMirror cls = reflectClass(Foo);
-  var operators = new Map<Symbol, MethodMirror>();
-  var operatorParameters = new Map<Symbol, List>();
-  var returnTypes = new Map<Symbol, Mirror>();
-  for (MethodMirror method in cls.declarations.values
-      .where((d) => d is MethodMirror && !d.isConstructor)) {
-    Expect.isTrue(method.isRegularMethod);
-    Expect.isTrue(method.isOperator);
-    Expect.isFalse(method.isGetter);
-    Expect.isFalse(method.isSetter);
-    Expect.isFalse(method.isAbstract);
-    operators[method.simpleName] = method;
-    operatorParameters[method.simpleName] = method.parameters;
-    returnTypes[method.simpleName] = method.returnType;
-  }
-  expect(OPERATORS, operators);
-  expect(PARAMETERS, operatorParameters);
-  expect(RETURN_TYPES, returnTypes);
-}
-
-const String OPERATORS = '{'
-    '%: Method(s(%) in s(Foo)), '
-    '&: Method(s(&) in s(Foo)), '
-    '*: Method(s(*) in s(Foo)), '
-    '+: Method(s(+) in s(Foo)), '
-    '-: Method(s(-) in s(Foo)), '
-    '/: Method(s(/) in s(Foo)), '
-    '<: Method(s(<) in s(Foo)), '
-    '<<: Method(s(<<) in s(Foo)), '
-    '<=: Method(s(<=) in s(Foo)), '
-    '==: Method(s(==) in s(Foo)), '
-    '>: Method(s(>) in s(Foo)), '
-    '>=: Method(s(>=) in s(Foo)), '
-    '>>: Method(s(>>) in s(Foo)), '
-    '[]: Method(s([]) in s(Foo)), '
-    '[]=: Method(s([]=) in s(Foo)), '
-    '^: Method(s(^) in s(Foo)), '
-    'unary-: Method(s(unary-) in s(Foo)), '
-    '|: Method(s(|) in s(Foo)), '
-    '~: Method(s(~) in s(Foo)), '
-    '~/: Method(s(~/) in s(Foo))'
-    '}';
-
-const String DYNAMIC = 'Type(s(dynamic), top-level)';
-
-const String FOO = 'Class(s(Foo) in s(test.operator_test), top-level)';
-
-const String INT = 'Class(s(int) in s(dart.core), top-level)';
-
-const String BOOL = 'Class(s(bool) in s(dart.core), top-level)';
-
-const String PARAMETERS = '{'
-    '%: [Parameter(s(a) in s(%), type = $FOO)], '
-    '&: [Parameter(s(a) in s(&), type = $FOO)], '
-    '*: [Parameter(s(a) in s(*), type = $FOO)], '
-    '+: [Parameter(s(a) in s(+), type = $FOO)], '
-    '-: [Parameter(s(a) in s(-), type = $FOO)], '
-    '/: [Parameter(s(a) in s(/), type = $FOO)], '
-    '<: [Parameter(s(a) in s(<), type = $FOO)], '
-    '<<: [Parameter(s(a) in s(<<), type = $FOO)], '
-    '<=: [Parameter(s(a) in s(<=), type = $FOO)], '
-    '==: [Parameter(s(a) in s(==), type = $DYNAMIC)], '
-    '>: [Parameter(s(a) in s(>), type = $FOO)], '
-    '>=: [Parameter(s(a) in s(>=), type = $FOO)], '
-    '>>: [Parameter(s(a) in s(>>), type = $FOO)], '
-    '[]: [Parameter(s(a) in s([]), type = $INT)], '
-    '[]=: [Parameter(s(a) in s([]=), type = $INT), '
-    'Parameter(s(b) in s([]=), type = $FOO)], '
-    '^: [Parameter(s(a) in s(^), type = $FOO)], '
-    'unary-: [], '
-    '|: [Parameter(s(a) in s(|), type = $FOO)], '
-    '~: [], '
-    '~/: [Parameter(s(a) in s(~/), type = $FOO)]'
-    '}';
-
-const String RETURN_TYPES = '{'
-    '%: $FOO, '
-    '&: $FOO, '
-    '*: $FOO, '
-    '+: $FOO, '
-    '-: $FOO, '
-    '/: $FOO, '
-    '<: $FOO, '
-    '<<: $FOO, '
-    '<=: $FOO, '
-    '==: $BOOL, '
-    '>: $FOO, '
-    '>=: $FOO, '
-    '>>: $FOO, '
-    '[]: $FOO, '
-    '[]=: $DYNAMIC, '
-    '^: $FOO, '
-    'unary-: $FOO, '
-    '|: $FOO, '
-    '~: $FOO, '
-    '~/: $FOO'
-    '}';
diff --git a/tests/lib/mirrors/optional_parameters_test.dart b/tests/lib/mirrors/optional_parameters_test.dart
deleted file mode 100644
index bee39f4..0000000
--- a/tests/lib/mirrors/optional_parameters_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// Regression test for http://dartbug.com/22987.
-// Ensure that functions whose signature only differs in optionality of
-// parameters are reflected correctly.
-
-library optional_parameter_test;
-
-@MirrorsUsed(targets: 'optional_parameter_test')
-import "dart:mirrors";
-import 'package:expect/expect.dart';
-
-class A {
-  foo(int x) => x;
-}
-
-class B {
-  foo([int x]) => x + 1;
-}
-
-main() {
-  var x = {};
-  x["A"] = reflect(new A());
-  x["B"] = reflect(new B());
-
-  Expect.equals(1, x["A"].invoke(#foo, [1]).reflectee);
-  Expect.equals(2, x["B"].invoke(#foo, [1]).reflectee);
-}
diff --git a/tests/lib/mirrors/other_declarations_location_test.dart b/tests/lib/mirrors/other_declarations_location_test.dart
deleted file mode 100644
index 7d194aa..0000000
--- a/tests/lib/mirrors/other_declarations_location_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2015, 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 test.declarations_location;
-
-import "dart:mirrors";
-import "package:expect/expect.dart";
-import "library_without_declaration.dart";
-import "library_with_annotated_declaration.dart";
-
-const metadata = 'metadata';
-
-class C<S, @metadata T> {
-  var a;
-  final b = 2;
-  static var c;
-  static final d = 4;
-  @metadata
-  var e;
-  List<C> f;
-}
-
-// We only check for a suffix of the uri because the test might be run from
-// any number of absolute paths.
-expectLocation(
-    DeclarationMirror mirror, String uriSuffix, int line, int column) {
-  Uri uri = mirror.location.sourceUri;
-  Expect.isTrue(
-      uri.toString().endsWith(uriSuffix), "Expected suffix $uriSuffix in $uri");
-  Expect.equals(line, mirror.location.line, "line");
-  Expect.equals(column, mirror.location.column, "column");
-}
-
-main() {
-  String mainSuffix = 'other_declarations_location_test.dart';
-
-  // Fields.
-  expectLocation(reflectClass(C).declarations[#a], mainSuffix, 15, 7);
-  expectLocation(reflectClass(C).declarations[#b], mainSuffix, 16, 9);
-  expectLocation(reflectClass(C).declarations[#c], mainSuffix, 17, 14);
-  expectLocation(reflectClass(C).declarations[#d], mainSuffix, 18, 16);
-  expectLocation(reflectClass(C).declarations[#e], mainSuffix, 20, 7);
-  expectLocation(reflectClass(C).declarations[#f], mainSuffix, 21, 11);
-
-  // Type variables.
-  expectLocation(reflectClass(C).declarations[#S], mainSuffix, 14, 9);
-  expectLocation(reflectClass(C).declarations[#T], mainSuffix, 14, 12);
-
-  // Libraries.
-  expectLocation(reflectClass(C).owner, mainSuffix, 5, 1);
-  expectLocation(reflectClass(ClassInLibraryWithoutDeclaration).owner,
-      "library_without_declaration.dart", 1, 1);
-  expectLocation(reflectClass(ClassInLibraryWithAnnotatedDeclaration).owner,
-      "library_with_annotated_declaration.dart", 5, 1);
-}
diff --git a/tests/lib/mirrors/other_library.dart b/tests/lib/mirrors/other_library.dart
deleted file mode 100644
index c1e908f..0000000
--- a/tests/lib/mirrors/other_library.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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 test.other_library;
-
-topLevelMethod() => 42;
-get topLevelGetter => 42;
-set topLevelSetter(x) => 42;
-var topLevelField = 42;
-
-_topLevelMethod() => 42;
-get _topLevelGetter => 42;
-set _topLevelSetter(x) => 42;
-var _topLevelField = 42;
diff --git a/tests/lib/mirrors/parameter_annotation_mirror_test.dart b/tests/lib/mirrors/parameter_annotation_mirror_test.dart
deleted file mode 100644
index 817d741..0000000
--- a/tests/lib/mirrors/parameter_annotation_mirror_test.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2014, 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.
-
-@MirrorsUsed(targets: "Foo")
-import "dart:mirrors";
-
-import 'package:expect/expect.dart';
-
-class ParameterAnnotation {
-  final String value;
-  const ParameterAnnotation(this.value);
-}
-
-class Foo {
-  Foo(@ParameterAnnotation("vogel") p) {}
-  Foo.named(@ParameterAnnotation("hamster") p) {}
-  Foo.named2(
-      @ParameterAnnotation("hamster") p, @ParameterAnnotation("wurm") p2) {}
-
-  f1(@ParameterAnnotation("hest") p) {}
-  f2(@ParameterAnnotation("hest") @ParameterAnnotation("fisk") p) {}
-  f3(a, @ParameterAnnotation("fugl") p) {}
-  f4(@ParameterAnnotation("fisk") a, {@ParameterAnnotation("hval") p}) {}
-  f5(@ParameterAnnotation("fisk") a, [@ParameterAnnotation("hval") p]) {}
-  f6({@ParameterAnnotation("fisk") z, @ParameterAnnotation("hval") p}) {}
-
-  set s1(@ParameterAnnotation("cheval") p) {}
-}
-
-expectAnnotations(
-    Type type, Symbol method, int parameterIndex, List<String> expectedValues) {
-  MethodMirror mirror = reflectClass(type).declarations[method];
-  ParameterMirror parameter = mirror.parameters[parameterIndex];
-  List<InstanceMirror> annotations = parameter.metadata;
-  Expect.equals(annotations.length, expectedValues.length,
-      "wrong number of parameter annotations");
-  for (int i = 0; i < annotations.length; i++) {
-    Expect.equals(
-        expectedValues[i],
-        annotations[i].reflectee.value,
-        "annotation #$i of parameter #$parameterIndex "
-        "of $type.$method.");
-  }
-}
-
-main() {
-  expectAnnotations(Foo, #Foo, 0, ["vogel"]);
-  expectAnnotations(Foo, #Foo.named, 0, ["hamster"]);
-  expectAnnotations(Foo, #Foo.named2, 0, ["hamster"]);
-  expectAnnotations(Foo, #Foo.named2, 1, ["wurm"]);
-
-  expectAnnotations(Foo, #f1, 0, ["hest"]);
-  expectAnnotations(Foo, #f2, 0, ["hest", "fisk"]);
-  expectAnnotations(Foo, #f3, 0, []);
-  expectAnnotations(Foo, #f3, 1, ["fugl"]);
-  expectAnnotations(Foo, #f4, 0, ["fisk"]);
-  expectAnnotations(Foo, #f4, 1, ["hval"]);
-  expectAnnotations(Foo, #f5, 0, ["fisk"]);
-  expectAnnotations(Foo, #f5, 1, ["hval"]);
-  expectAnnotations(Foo, #f6, 0, ["fisk"]);
-  expectAnnotations(Foo, #f6, 1, ["hval"]);
-
-  expectAnnotations(Foo, const Symbol('s1='), 0, ["cheval"]);
-}
diff --git a/tests/lib/mirrors/parameter_is_const_test.dart b/tests/lib/mirrors/parameter_is_const_test.dart
deleted file mode 100644
index 958f095..0000000
--- a/tests/lib/mirrors/parameter_is_const_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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 test.parameter_is_const;
-
-@MirrorsUsed(targets: "test.parameter_is_const")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Class {
-  foo(
-  const //# 01: compile-time error
-      param) {}
-}
-
-main() {
-  MethodMirror mm = reflectClass(Class).declarations[#foo];
-  Expect.isFalse(mm.parameters.single.isConst);
-}
diff --git a/tests/lib/mirrors/parameter_metadata_test.dart b/tests/lib/mirrors/parameter_metadata_test.dart
deleted file mode 100644
index f0c6871..0000000
--- a/tests/lib/mirrors/parameter_metadata_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2013, 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 test.parameter_metadata_test;
-
-@MirrorsUsed(targets: "test.parameter_metadata_test")
-import 'dart:mirrors';
-
-import 'metadata_test.dart';
-
-const m1 = 'm1';
-const m2 = #m2;
-const m3 = const CustomAnnotation(3);
-
-class CustomAnnotation {
-  final value;
-  const CustomAnnotation(this.value);
-  toString() => 'CustomAnnotation($value)';
-}
-
-class B {
-  B.foo(int x) {}
-  factory B.bar(@m3 @m2 int z, x) {}
-
-  baz(@m1 final int x, @m2 int y, @m3 final int z) {}
-  qux(int x, [@m3 @m2 @m1 int y = 3 + 1]) {}
-  quux(int x, {String str: "foo"}) {}
-  corge({@m1 int x: 3 * 17, @m2 String str: "bar"}) {}
-
-  set x(@m2 final value) {}
-}
-
-main() {
-  ClassMirror cm = reflectClass(B);
-  MethodMirror mm;
-
-  mm = cm.declarations[#B.foo];
-  checkMetadata(mm.parameters[0], []);
-
-  mm = cm.declarations[#B.bar];
-  checkMetadata(mm.parameters[0], [m3, m2]);
-  checkMetadata(mm.parameters[1], []);
-
-  mm = cm.declarations[#baz];
-  checkMetadata(mm.parameters[0], [m1]);
-  checkMetadata(mm.parameters[1], [m2]);
-  checkMetadata(mm.parameters[2], [m3]);
-
-  mm = cm.declarations[#qux];
-  checkMetadata(mm.parameters[0], []);
-  checkMetadata(mm.parameters[1], [m3, m2, m1]);
-
-  mm = cm.declarations[#quux];
-  checkMetadata(mm.parameters[0], []);
-  checkMetadata(mm.parameters[1], []);
-
-  mm = cm.declarations[#corge];
-  checkMetadata(mm.parameters[0], [m1]);
-  checkMetadata(mm.parameters[1], [m2]);
-
-  mm = cm.declarations[const Symbol('x=')];
-  checkMetadata(mm.parameters[0], [m2]);
-}
diff --git a/tests/lib/mirrors/parameter_of_mixin_app_constructor_test.dart b/tests/lib/mirrors/parameter_of_mixin_app_constructor_test.dart
deleted file mode 100644
index 041e5e8..0000000
--- a/tests/lib/mirrors/parameter_of_mixin_app_constructor_test.dart
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (c) 2014, 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 test.parameter_of_mixin_app_constructor;
-
-@MirrorsUsed(targets: "test.parameter_of_mixin_app_constructor")
-import 'dart:mirrors';
-import 'stringify.dart';
-
-class MapView {
-  final _map;
-  MapView(map) : this._map = map;
-}
-
-abstract class UnmodifiableMapMixin {
-  someFunctionality() {}
-}
-
-class UnmodifiableMapView1 extends MapView with UnmodifiableMapMixin {
-  UnmodifiableMapView1(map1) : super(map1);
-}
-
-class UnmodifiableMapView2 = MapView with UnmodifiableMapMixin;
-
-class S {
-  S(int p1, String p2);
-}
-
-class M1 {}
-
-class M2 {}
-
-class M3 {}
-
-class MorePlumbing = S with M1, M2, M3;
-
-soleConstructorOf(ClassMirror cm) {
-  return cm.declarations.values
-      .where((dm) => dm is MethodMirror && dm.isConstructor)
-      .single;
-}
-
-main() {
-  ClassMirror umv1 = reflectClass(UnmodifiableMapView1);
-  expect(
-      '[Parameter(s(map1) in s(UnmodifiableMapView1),'
-      ' type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(umv1).parameters);
-  expect(
-      '[Parameter(s(map) in s(test.parameter_of_mixin_app_constructor.MapView'
-      ' with test.parameter_of_mixin_app_constructor.UnmodifiableMapMixin),'
-      ' final, type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(umv1.superclass).parameters);
-  expect(
-      '[Parameter(s(map) in s(MapView),'
-      ' type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(umv1.superclass.superclass).parameters);
-  expect('[]',
-      soleConstructorOf(umv1.superclass.superclass.superclass).parameters);
-
-  ClassMirror umv2 = reflectClass(UnmodifiableMapView2);
-  expect(
-      '[Parameter(s(map) in s(UnmodifiableMapView2),'
-      ' final, type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(umv2).parameters);
-  expect(
-      '[Parameter(s(map) in s(MapView),'
-      ' type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(umv2.superclass).parameters);
-  expect('[]', soleConstructorOf(umv2.superclass.superclass).parameters);
-
-  ClassMirror mp = reflectClass(MorePlumbing);
-  expect(
-      '[Parameter(s(p1) in s(MorePlumbing),'
-      ' final, type = Type(s(dynamic), top-level)),'
-      ' Parameter(s(p2) in s(MorePlumbing),'
-      ' final, type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(mp).parameters);
-  expect(
-      '[Parameter(s(p1) in s(test.parameter_of_mixin_app_constructor.S'
-      ' with test.parameter_of_mixin_app_constructor.M1,'
-      ' test.parameter_of_mixin_app_constructor.M2),'
-      ' final, type = Type(s(dynamic), top-level)),'
-      ' Parameter(s(p2) in s(test.parameter_of_mixin_app_constructor.S'
-      ' with test.parameter_of_mixin_app_constructor.M1,'
-      ' test.parameter_of_mixin_app_constructor.M2),'
-      ' final, type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(mp.superclass).parameters);
-  expect(
-      '[Parameter(s(p1) in s(test.parameter_of_mixin_app_constructor.S'
-      ' with test.parameter_of_mixin_app_constructor.M1),'
-      ' final, type = Type(s(dynamic), top-level)),'
-      ' Parameter(s(p2) in s(test.parameter_of_mixin_app_constructor.S'
-      ' with test.parameter_of_mixin_app_constructor.M1),'
-      ' final, type = Type(s(dynamic), top-level))]',
-      soleConstructorOf(mp.superclass.superclass).parameters);
-  expect(
-      '[Parameter(s(p1) in s(S),'
-      ' type = Class(s(int) in s(dart.core), top-level)),'
-      ' Parameter(s(p2) in s(S),'
-      ' type = Class(s(String) in s(dart.core), top-level))]',
-      soleConstructorOf(mp.superclass.superclass.superclass).parameters);
-  expect(
-      '[]',
-      soleConstructorOf(mp.superclass.superclass.superclass.superclass)
-          .parameters);
-}
diff --git a/tests/lib/mirrors/parameter_test.dart b/tests/lib/mirrors/parameter_test.dart
deleted file mode 100644
index 41bb01d..0000000
--- a/tests/lib/mirrors/parameter_test.dart
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// This tests uses the multi-test "ok" feature:
-// none: Desired behaviour, passing on the VM.
-// 01: Trimmed version for dart2js.
-//
-// TODO(rmacnak,ahe): Remove multi-test when VM and dart2js are on par.
-
-/** Test of [ParameterMirror]. */
-library test.parameter_test;
-
-@MirrorsUsed(
-    targets: const ['test.parameter_test', 'dart.core.int'], override: '*')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-class B {
-  B();
-  B.foo(int x);
-  B.bar(int z, x);
-
-  // TODO(6490): Currently only supported by the VM.
-  B.baz(final int x, int y, final int z);
-  B.qux(int x, [int y = 3 + 1]);
-  B.quux(int x, {String str: "foo"});
-  B.corge({int x: 3 * 17, String str: "bar"});
-
-  var _x;
-  get x => _x;
-  set x(final value) {
-    _x = value;
-  }
-
-  grault([int x]) {}
-  garply({int y}) {}
-  waldo(int z) {}
-}
-
-class C<S extends int, T> {
-  // TODO(6490): Currently only supported by the VM.
-  foo(int a, S b) => b;
-  bar(S a, T b, num c) {}
-}
-
-main() {
-  ClassMirror cm = reflectClass(B);
-  var constructors = new Map<Symbol, MethodMirror>();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && v.isConstructor) constructors[k] = v;
-  });
-
-  List<Symbol> constructorKeys = [
-    #B,
-    #B.bar,
-    #B.baz,
-    #B.foo,
-    #B.quux,
-    #B.qux,
-    #B.corge
-  ];
-  Expect.setEquals(constructorKeys, constructors.keys);
-
-  MethodMirror unnamedConstructor = constructors[#B];
-  expect('Method(s(B) in s(B), constructor)', unnamedConstructor);
-  expect('[]', unnamedConstructor.parameters);
-  expect('Class(s(B) in s(test.parameter_test), top-level)',
-      unnamedConstructor.returnType);
-
-  MethodMirror fooConstructor = constructors[#B.foo];
-  expect('Method(s(B.foo) in s(B), constructor)', fooConstructor);
-  expect(
-      '[Parameter(s(x) in s(B.foo),'
-      ' type = Class(s(int) in s(dart.core), top-level))]',
-      fooConstructor.parameters);
-  expect('Class(s(B) in s(test.parameter_test), top-level)',
-      fooConstructor.returnType);
-
-  MethodMirror barConstructor = constructors[#B.bar];
-  expect('Method(s(B.bar) in s(B), constructor)', barConstructor);
-  expect(
-      '[Parameter(s(z) in s(B.bar),'
-      ' type = Class(s(int) in s(dart.core), top-level)), '
-      'Parameter(s(x) in s(B.bar),'
-      ' type = Type(s(dynamic), top-level))]',
-      barConstructor.parameters);
-  expect('Class(s(B) in s(test.parameter_test), top-level)',
-      barConstructor.returnType);
-
-  // dart2js stops testing here.
-  return; // //# 01: ok
-
-  MethodMirror bazConstructor = constructors[#B.baz];
-  expect('Method(s(B.baz) in s(B), constructor)', bazConstructor);
-  expect(
-      '[Parameter(s(x) in s(B.baz), final,'
-      ' type = Class(s(int) in s(dart.core), top-level)), '
-      'Parameter(s(y) in s(B.baz),'
-      ' type = Class(s(int) in s(dart.core), top-level)), '
-      'Parameter(s(z) in s(B.baz), final,'
-      ' type = Class(s(int) in s(dart.core), top-level))]',
-      bazConstructor.parameters);
-  expect('Class(s(B) in s(test.parameter_test), top-level)',
-      bazConstructor.returnType);
-
-  MethodMirror quxConstructor = constructors[#B.qux];
-  expect('Method(s(B.qux) in s(B), constructor)', quxConstructor);
-  expect(
-      '[Parameter(s(x) in s(B.qux),'
-      ' type = Class(s(int) in s(dart.core), top-level)), '
-      'Parameter(s(y) in s(B.qux), optional,'
-      ' value = Instance(value = 4),'
-      ' type = Class(s(int) in s(dart.core), top-level))]',
-      quxConstructor.parameters);
-  expect('Class(s(B) in s(test.parameter_test), top-level)',
-      quxConstructor.returnType);
-
-  MethodMirror quuxConstructor = constructors[#B.quux];
-  expect('Method(s(B.quux) in s(B), constructor)', quuxConstructor);
-  expect(
-      '[Parameter(s(x) in s(B.quux),'
-      ' type = Class(s(int) in s(dart.core), top-level)), '
-      'Parameter(s(str) in s(B.quux), optional, named,'
-      ' value = Instance(value = foo),'
-      ' type = Class(s(String) in s(dart.core), top-level))]',
-      quuxConstructor.parameters);
-  expect('Class(s(B) in s(test.parameter_test), top-level)',
-      quuxConstructor.returnType);
-
-  MethodMirror corgeConstructor = constructors[#B.corge];
-  expect('Method(s(B.corge) in s(B), constructor)', corgeConstructor);
-  expect(
-      '[Parameter(s(x) in s(B.corge), optional, named,'
-      ' value = Instance(value = 51),'
-      ' type = Class(s(int) in s(dart.core), top-level)), '
-      'Parameter(s(str) in s(B.corge), optional, named,'
-      ' value = Instance(value = bar),'
-      ' type = Class(s(String) in s(dart.core), top-level))]',
-      corgeConstructor.parameters);
-  expect('Class(s(B) in s(test.parameter_test), top-level)',
-      corgeConstructor.returnType);
-
-  MethodMirror xGetter = cm.declarations[#x];
-  expect('Method(s(x) in s(B), getter)', xGetter);
-  expect('[]', xGetter.parameters);
-
-  MethodMirror xSetter = cm.declarations[const Symbol('x=')];
-  expect('Method(s(x=) in s(B), setter)', xSetter);
-  expect(
-      '[Parameter(s(value) in s(x=), final,'
-      ' type = Type(s(dynamic), top-level))]',
-      xSetter.parameters);
-
-  MethodMirror grault = cm.declarations[#grault];
-  expect('Method(s(grault) in s(B))', grault);
-  expect(
-      '[Parameter(s(x) in s(grault), optional,'
-      ' type = Class(s(int) in s(dart.core), top-level))]',
-      grault.parameters);
-  expect('Instance(value = <null>)', grault.parameters[0].defaultValue);
-
-  MethodMirror garply = cm.declarations[#garply];
-  expect('Method(s(garply) in s(B))', garply);
-  expect(
-      '[Parameter(s(y) in s(garply), optional, named,'
-      ' type = Class(s(int) in s(dart.core), top-level))]',
-      garply.parameters);
-  expect('Instance(value = <null>)', garply.parameters[0].defaultValue);
-
-  MethodMirror waldo = cm.declarations[#waldo];
-  expect('Method(s(waldo) in s(B))', waldo);
-  expect(
-      '[Parameter(s(z) in s(waldo),'
-      ' type = Class(s(int) in s(dart.core), top-level))]',
-      waldo.parameters);
-  expect('<null>', waldo.parameters[0].defaultValue);
-
-  cm = reflectClass(C);
-
-  MethodMirror fooInC = cm.declarations[#foo];
-  expect('Method(s(foo) in s(C))', fooInC);
-  expect(
-      '[Parameter(s(a) in s(foo),'
-      ' type = Class(s(int) in s(dart.core), top-level)), '
-      'Parameter(s(b) in s(foo),'
-      ' type = TypeVariable(s(S) in s(C),'
-      ' upperBound = Class(s(int) in s(dart.core), top-level)))]',
-      fooInC.parameters);
-
-  MethodMirror barInC = cm.declarations[#bar];
-  expect('Method(s(bar) in s(C))', barInC);
-  expect(
-      '[Parameter(s(a) in s(bar),'
-      ' type = TypeVariable(s(S) in s(C),'
-      ' upperBound = Class(s(int) in s(dart.core), top-level))), '
-      'Parameter(s(b) in s(bar),'
-      ' type = TypeVariable(s(T) in s(C),'
-      ' upperBound = Class(s(Object) in s(dart.core), top-level))), '
-      'Parameter(s(c) in s(bar),'
-      ' type = Class(s(num) in s(dart.core), top-level))]',
-      barInC.parameters);
-}
diff --git a/tests/lib/mirrors/private_class_field_other.dart b/tests/lib/mirrors/private_class_field_other.dart
deleted file mode 100644
index 1a30354..0000000
--- a/tests/lib/mirrors/private_class_field_other.dart
+++ /dev/null
@@ -1,9 +0,0 @@
-// 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.
-
-class C {
-  static var _privateField = 42;
-}
-
-get privateFieldSymbolInOther => #_privateField;
diff --git a/tests/lib/mirrors/private_class_field_test.dart b/tests/lib/mirrors/private_class_field_test.dart
deleted file mode 100644
index ad8a2d3..0000000
--- a/tests/lib/mirrors/private_class_field_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// 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.
-
-// Test a private field name doesn't match the equivalent private name from
-// another library.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'private_class_field_other.dart';
-
-void main() {
-  var classMirror = reflectClass(C);
-  // The symbol is private w/r/t the wrong library.
-  Expect.throws(() => classMirror.getField(#_privateField),
-      (e) => e is NoSuchMethodError);
-
-  Expect.equals(42, classMirror.getField(privateFieldSymbolInOther).reflectee);
-}
diff --git a/tests/lib/mirrors/private_symbol_mangling_lib.dart b/tests/lib/mirrors/private_symbol_mangling_lib.dart
deleted file mode 100644
index 8d9c93b..0000000
--- a/tests/lib/mirrors/private_symbol_mangling_lib.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2014, 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 other;
-
-var _privateGlobalField = 3;
-
-_privateGlobalMethod() => 11;
-
-class C2 {
-  var _privateField = 1;
-  _privateMethod() => 3;
-}
diff --git a/tests/lib/mirrors/private_symbol_mangling_test.dart b/tests/lib/mirrors/private_symbol_mangling_test.dart
deleted file mode 100644
index ebb9371..0000000
--- a/tests/lib/mirrors/private_symbol_mangling_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2014, 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 main;
-
-//@MirrorsUsed(targets: const ['C1', 'C2', '_privateGlobalField', '_privateGlobalMethod'])
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-import 'private_symbol_mangling_lib.dart';
-
-var _privateGlobalField = 1;
-
-_privateGlobalMethod() => 9;
-
-class C1 {
-  var _privateField = 0;
-  _privateMethod() => 2;
-}
-
-getPrivateGlobalFieldValue(LibraryMirror lib) {
-  for (Symbol symbol in lib.declarations.keys) {
-    DeclarationMirror decl = lib.declarations[symbol];
-    if (decl is VariableMirror && decl.isPrivate) {
-      return lib.getField(symbol).reflectee;
-    }
-  }
-}
-
-getPrivateFieldValue(InstanceMirror cls) {
-  for (Symbol symbol in cls.type.declarations.keys) {
-    DeclarationMirror decl = cls.type.declarations[symbol];
-    if (decl is VariableMirror && decl.isPrivate) {
-      return cls.getField(symbol).reflectee;
-    }
-  }
-}
-
-getPrivateGlobalMethodValue(LibraryMirror lib) {
-  for (Symbol symbol in lib.declarations.keys) {
-    DeclarationMirror decl = lib.declarations[symbol];
-    if (decl is MethodMirror && decl.isRegularMethod && decl.isPrivate) {
-      return lib.invoke(symbol, []).reflectee;
-    }
-  }
-}
-
-getPrivateMethodValue(InstanceMirror cls) {
-  for (Symbol symbol in cls.type.declarations.keys) {
-    DeclarationMirror decl = cls.type.declarations[symbol];
-    if (decl is MethodMirror && decl.isRegularMethod && decl.isPrivate) {
-      return cls.invoke(symbol, []).reflectee;
-    }
-  }
-}
-
-main() {
-  LibraryMirror libmain = currentMirrorSystem().findLibrary(#main);
-  LibraryMirror libother = currentMirrorSystem().findLibrary(#other);
-  Expect.equals(1, getPrivateGlobalFieldValue(libmain));
-  Expect.equals(3, getPrivateGlobalFieldValue(libother));
-  Expect.equals(9, getPrivateGlobalMethodValue(libmain));
-  Expect.equals(11, getPrivateGlobalMethodValue(libother));
-
-  var c1 = reflect(new C1());
-  var c2 = reflect(new C2());
-  Expect.equals(0, getPrivateFieldValue(c1));
-  Expect.equals(1, getPrivateFieldValue(c2));
-  Expect.equals(2, getPrivateMethodValue(c1));
-  Expect.equals(3, getPrivateMethodValue(c2));
-}
diff --git a/tests/lib/mirrors/private_symbol_test.dart b/tests/lib/mirrors/private_symbol_test.dart
deleted file mode 100644
index 884177f..0000000
--- a/tests/lib/mirrors/private_symbol_test.dart
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright (c) 2013, 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 test;
-
-@MirrorsUsed(targets: "test")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-typedef int _F(int i);
-
-class _C<_T> {
-  get g {}
-  set s(x) {}
-  m(_p) {}
-  get _g {}
-  set _s(x) {}
-  _m() {}
-}
-
-main() {
-  // Test private symbols are distinct across libraries, and the same within a
-  // library when created multiple ways. Test the string can be properly
-  // extracted.
-  LibraryMirror libcore = currentMirrorSystem().findLibrary(#dart.core);
-  LibraryMirror libmath = currentMirrorSystem().findLibrary(#dart.math);
-  LibraryMirror libtest = currentMirrorSystem().findLibrary(#test);
-
-  Symbol corefoo = MirrorSystem.getSymbol('foo', libcore);
-  Symbol mathfoo = MirrorSystem.getSymbol('foo', libmath);
-  Symbol testfoo = MirrorSystem.getSymbol('foo', libtest);
-  Symbol nullfoo1 = MirrorSystem.getSymbol('foo');
-  Symbol nullfoo2 = MirrorSystem.getSymbol('foo', null);
-
-  Expect.equals(corefoo, mathfoo);
-  Expect.equals(mathfoo, testfoo);
-  Expect.equals(testfoo, corefoo);
-  Expect.equals(nullfoo1, corefoo);
-  Expect.equals(nullfoo2, corefoo);
-
-  Expect.equals('foo', MirrorSystem.getName(corefoo));
-  Expect.equals('foo', MirrorSystem.getName(mathfoo));
-  Expect.equals('foo', MirrorSystem.getName(testfoo));
-  Expect.equals('foo', MirrorSystem.getName(#foo));
-  Expect.equals('foo', MirrorSystem.getName(nullfoo1));
-  Expect.equals('foo', MirrorSystem.getName(nullfoo2));
-
-  Symbol core_foo = MirrorSystem.getSymbol('_foo', libcore);
-  Symbol math_foo = MirrorSystem.getSymbol('_foo', libmath);
-  Symbol test_foo = MirrorSystem.getSymbol('_foo', libtest);
-
-  Expect.equals('_foo', MirrorSystem.getName(core_foo));
-  Expect.equals('_foo', MirrorSystem.getName(math_foo));
-  Expect.equals('_foo', MirrorSystem.getName(test_foo));
-  Expect.equals('_foo', MirrorSystem.getName(#_foo));
-
-  Expect.notEquals(core_foo, math_foo);
-  Expect.notEquals(math_foo, test_foo);
-  Expect.notEquals(test_foo, core_foo);
-
-  Expect.notEquals(corefoo, core_foo);
-  Expect.notEquals(mathfoo, math_foo);
-  Expect.notEquals(testfoo, test_foo);
-
-  Expect.equals(test_foo, #_foo);
-
-  // Test interactions with the manglings for getters and setters, etc.
-  ClassMirror cm = reflectClass(_C);
-  Expect.equals(#_C, cm.simpleName);
-  Expect.equals('_C', MirrorSystem.getName(cm.simpleName));
-
-  MethodMirror mm = cm.declarations[#g];
-  Expect.isNotNull(mm);
-  Expect.isTrue(mm.isGetter);
-  Expect.equals(#g, mm.simpleName);
-  Expect.equals('g', MirrorSystem.getName(mm.simpleName));
-
-  mm = cm.declarations[const Symbol('s=')];
-  Expect.isNotNull(mm);
-  Expect.isTrue(mm.isSetter);
-  Expect.equals(const Symbol('s='), mm.simpleName);
-  Expect.equals('s=', MirrorSystem.getName(mm.simpleName));
-
-  mm = cm.declarations[#m];
-  Expect.isNotNull(mm);
-  Expect.isTrue(mm.isRegularMethod);
-  Expect.equals(#m, mm.simpleName);
-  Expect.equals('m', MirrorSystem.getName(mm.simpleName));
-
-  mm = cm.declarations[#_g];
-  Expect.isNotNull(mm);
-  Expect.isTrue(mm.isGetter);
-  Expect.equals(#_g, mm.simpleName);
-  Expect.equals('_g', MirrorSystem.getName(mm.simpleName));
-
-  mm = cm.declarations[MirrorSystem.getSymbol('_s=', libtest)];
-  Expect.isNotNull(mm);
-  Expect.isTrue(mm.isSetter);
-  Expect.equals(MirrorSystem.getSymbol('_s=', libtest), mm.simpleName);
-  Expect.equals('_s=', MirrorSystem.getName(mm.simpleName));
-
-  mm = cm.declarations[#_m];
-  Expect.isNotNull(mm);
-  Expect.isTrue(mm.isRegularMethod);
-  Expect.equals(#_m, mm.simpleName);
-  Expect.equals('_m', MirrorSystem.getName(mm.simpleName));
-
-  TypeVariableMirror tvm = cm.typeVariables[0];
-  Expect.isNotNull(tvm);
-  Expect.equals(#_T, tvm.simpleName);
-  Expect.equals('_T', MirrorSystem.getName(tvm.simpleName));
-
-  TypedefMirror tdm = reflectType(_F);
-  Expect.equals(#_F, tdm.simpleName);
-  Expect.equals('_F', MirrorSystem.getName(tdm.simpleName));
-
-  ParameterMirror pm = (cm.declarations[#m] as MethodMirror).parameters[0];
-  Expect.equals(#_p, pm.simpleName);
-  Expect.equals('_p', MirrorSystem.getName(pm.simpleName));
-
-  // Private symbol without a library.
-  Expect.throws(
-      () => MirrorSystem.getSymbol('_private'), (e) => e is ArgumentError);
-
-  var notALibraryMirror = 7;
-  Expect.throws(() => MirrorSystem.getSymbol('_private', notALibraryMirror),
-      (e) => e is ArgumentError || e is TypeError);
-
-  Expect.throws(() => MirrorSystem.getSymbol('public', notALibraryMirror),
-      (e) => e is ArgumentError || e is TypeError);
-}
diff --git a/tests/lib/mirrors/private_types_test.dart b/tests/lib/mirrors/private_types_test.dart
deleted file mode 100644
index 4fde3a9..0000000
--- a/tests/lib/mirrors/private_types_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, 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 test.private_types;
-
-@MirrorsUsed(targets: "test.private_types")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-typedef int _F(int i);
-
-class _C<_T> {}
-
-typedef int F(int i);
-
-class C<T> {}
-
-main() {
-  Expect.isTrue(reflectType(_F).isPrivate);
-  Expect.isFalse((reflectType(_F) as TypedefMirror).referent.isPrivate);
-  Expect.isTrue(reflectType(_C).isPrivate);
-  Expect.isTrue(reflectClass(_C).typeVariables.single.isPrivate);
-
-  Expect.isFalse(reflectType(F).isPrivate);
-  Expect.isFalse((reflectType(F) as TypedefMirror).referent.isPrivate);
-  Expect.isFalse(reflectType(C).isPrivate);
-  Expect.isFalse(reflectClass(C).typeVariables.single.isPrivate);
-
-  Expect.isFalse(reflectType(dynamic).isPrivate);
-  Expect.isFalse(currentMirrorSystem().dynamicType.isPrivate);
-  Expect.isFalse(currentMirrorSystem().voidType.isPrivate);
-}
diff --git a/tests/lib/mirrors/proxy_type_test.dart b/tests/lib/mirrors/proxy_type_test.dart
deleted file mode 100644
index 358fe59..0000000
--- a/tests/lib/mirrors/proxy_type_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2013, 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 test.proxy_type;
-
-@MirrorsUsed(targets: "test.proxy_type")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-// This test is much longer that is strictly necessary to test
-// InstanceMirror.type in the face of a reflectee overriding runtimeType, but
-// shows a case where one might have legimate reason to override runtimeType.
-// See section 2.2 in Mark Miller's Robust Composition: Towards a Unfied
-// Approach to Access Control and Concurrency Control.
-
-class Alice {
-  Bob bob = new Bob();
-  Carol carol = new Carol();
-  sayFooUnattenuated() {
-    bob.foo(carol);
-  }
-
-  sayFooAttenuated() {
-    bool enabled = true;
-    bool gate() => enabled;
-    bob.foo(new CarolCaretaker(carol, gate));
-    enabled = false; // Attenuate a capability
-  }
-
-  sayBar() {
-    bob.bar();
-  }
-}
-
-class Bob {
-  Carol savedCarol;
-  foo(Carol carol) {
-    savedCarol = carol; // Store a capability
-    carol.foo();
-  }
-
-  bar() {
-    savedCarol.foo();
-  }
-}
-
-class Carol {
-  foo() => 'c';
-}
-
-typedef bool Gate();
-
-class CarolCaretaker implements Carol {
-  final Carol _carol;
-  final Gate _gate;
-  CarolCaretaker(this._carol, this._gate);
-
-  foo() {
-    if (!_gate()) throw new NoSuchMethodError(this, #foo, [], {});
-    return _carol.foo();
-  }
-
-  Type get runtimeType => Carol;
-}
-
-main() {
-  Alice alice1 = new Alice();
-  alice1.sayFooUnattenuated();
-  alice1.sayBar(); // Bob still has authority to use Carol
-
-  Alice alice2 = new Alice();
-  alice2.sayFooAttenuated();
-  Expect.throws(() => alice2.sayBar(), (e) => e is NoSuchMethodError,
-      'Authority should have been attenuated');
-
-  // At the base level, a caretaker for a Carol masquerades as a Carol.
-  CarolCaretaker caretaker = new CarolCaretaker(new Carol(), () => true);
-  Expect.isTrue(caretaker is Carol);
-  Expect.equals(Carol, caretaker.runtimeType);
-
-  // At the reflective level, the caretaker is distinguishable.
-  Expect.equals(reflectClass(CarolCaretaker), reflect(caretaker).type);
-}
diff --git a/tests/lib/mirrors/raw_type_test.dart b/tests/lib/mirrors/raw_type_test.dart
deleted file mode 100644
index 4a93563..0000000
--- a/tests/lib/mirrors/raw_type_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Foo<T> {}
-
-class Bar<T> extends Foo<T> {}
-
-main() {
-  var fooType = reflectType(Foo);
-  var fooDeclaration = fooType.originalDeclaration;
-  var barSupertype = reflect(new Bar()).type.superclass;
-  var barSuperclass = barSupertype.originalDeclaration;
-  Expect.equals(fooDeclaration, barSuperclass, 'declarations');
-  Expect.equals(fooType, barSupertype, 'types'); //# 01: ok
-}
diff --git a/tests/lib/mirrors/redirecting_factory_different_type_test.dart b/tests/lib/mirrors/redirecting_factory_different_type_test.dart
deleted file mode 100644
index d5434f3..0000000
--- a/tests/lib/mirrors/redirecting_factory_different_type_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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 mirror_test;
-
-@MirrorsUsed(targets: "mirror_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {
-  factory A(
-    String //  //# 01: static type warning
-      x) = B;
-  A._();
-}
-
-class B extends A {
-  var x;
-  B(int x)
-      : super._(),
-        this.x = x;
-}
-
-main() {
-  var cm = reflectClass(A);
-  // The type-annotation in A's constructor must be ignored.
-  var b = cm.newInstance(const Symbol(''), [499]).reflectee;
-  Expect.equals(499, b.x);
-  Expect.throws(
-      () => cm.newInstance(const Symbol(''), ["str"]), (e) => e is TypeError);
-}
diff --git a/tests/lib/mirrors/redirecting_factory_test.dart b/tests/lib/mirrors/redirecting_factory_test.dart
deleted file mode 100644
index 7ca3835..0000000
--- a/tests/lib/mirrors/redirecting_factory_test.dart
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-import "package:expect/expect.dart";
-import "stringify.dart";
-
-class Class<T1, T2> {
-  final field;
-  Class(this.field);
-
-  factory Class.factoryNoOptional(a, b) => new Class<T1, T2>(a - b);
-  factory Class.redirectingFactoryNoOptional(a, b) = Class.factoryNoOptional;
-
-  factory Class.factoryUnnamedOptional(a, [b = 42]) => new Class<T1, T2>(a - b);
-  factory Class.redirectingFactoryUnnamedOptional(a, [b]) =
-      Class.factoryUnnamedOptional;
-
-  factory Class.factoryNamedOptional(a, {b: 42}) {
-    return new Class<T1, T2>(a - b);
-  }
-
-  factory Class.redirectingFactoryNamedOptional(a, {b}) =
-      Class.factoryNamedOptional;
-
-  factory Class.factoryMoreNamedOptional(a, {b: 0, c: 2}) {
-    return new Class<T1, T2>(a - b - c);
-  }
-
-  factory Class.redirectingFactoryMoreNamedOptional(a, {b}) =
-      Class.factoryMoreNamedOptional;
-
-  factory Class.factoryMoreUnnamedOptional(a, [b = 0, c = 2]) {
-    return new Class<T1, T2>(a - b - c);
-  }
-
-  factory Class.redirectingFactoryMoreUnnamedOptional(a, [b]) =
-      Class.factoryMoreUnnamedOptional;
-
-  factory Class.redirectingFactoryStringIntTypeParameters(a, b) =
-      Class<String, int>.factoryNoOptional;
-
-  factory Class.redirectingFactoryStringTypeParameters(a, b) = Class
-        <String> // //# 02: static type warning
-      .factoryNoOptional;
-
-  factory Class.redirectingFactoryTypeParameters(a, b) =
-      Class<T1, T2>.factoryNoOptional;
-
-  factory Class.redirectingFactoryReversedTypeParameters(a, b) =
-      Class<T2, T1>.factoryNoOptional;
-}
-
-main() {
-  var classMirror = reflectClass(Class);
-
-  var instanceMirror = classMirror.newInstance(const Symbol(''), [2]);
-  Expect.equals(2, instanceMirror.reflectee.field);
-
-  instanceMirror =
-      classMirror.newInstance(#redirectingFactoryNoOptional, [8, 6]);
-  Expect.equals(2, instanceMirror.reflectee.field);
-
-  instanceMirror =
-      classMirror.newInstance(#redirectingFactoryUnnamedOptional, [43, 1]);
-  Expect.equals(42, instanceMirror.reflectee.field);
-
-  instanceMirror =
-      classMirror.newInstance(#redirectingFactoryMoreUnnamedOptional, [43, 1]);
-  Expect.equals(40, instanceMirror.reflectee.field);
-
-  instanceMirror = classMirror
-      .newInstance(#redirectingFactoryStringIntTypeParameters, [43, 1]);
-  Expect.equals(42, instanceMirror.reflectee.field);
-  Expect.isTrue(instanceMirror.reflectee is Class<String, int>);
-  Expect.isFalse(instanceMirror.reflectee is Class<int, String>);
-
-  instanceMirror =
-      classMirror.newInstance(#redirectingFactoryStringTypeParameters, [43, 1]);
-  Expect.equals(42, instanceMirror.reflectee.field);
-  Expect.isTrue(instanceMirror.reflectee is Class<String, int>);
-  Expect.isTrue(instanceMirror.reflectee is Class<String, String>);
-  Expect.isTrue(instanceMirror.reflectee is Class<int, String>);
-
-  bool isDart2js = false;
-  isDart2js = true; //# 01: ok
-  if (isDart2js) return;
-
-  instanceMirror =
-      classMirror.newInstance(#redirectingFactoryUnnamedOptional, [43]);
-  Expect.equals(1, instanceMirror.reflectee.field);
-
-  instanceMirror =
-      classMirror.newInstance(#redirectingFactoryNamedOptional, [43]);
-  Expect.equals(1, instanceMirror.reflectee.field);
-
-  instanceMirror = classMirror.newInstance(
-      #redirectingFactoryNamedOptional, [43], new Map()..[#b] = 1);
-  Expect.equals(42, instanceMirror.reflectee.field);
-
-  instanceMirror = classMirror.newInstance(
-      #redirectingFactoryMoreNamedOptional, [43], new Map()..[#b] = 1);
-  Expect.equals(40, instanceMirror.reflectee.field);
-
-  classMirror = reflect(new Class<String, int>(42)).type;
-  instanceMirror =
-      classMirror.newInstance(#redirectingFactoryTypeParameters, [43, 1]);
-  Expect.equals(42, instanceMirror.reflectee.field);
-  Expect.isTrue(instanceMirror.reflectee is Class<String, int>);
-  Expect.isFalse(instanceMirror.reflectee is Class<int, String>);
-
-  instanceMirror = classMirror
-      .newInstance(#redirectingFactoryReversedTypeParameters, [43, 1]);
-  Expect.equals(42, instanceMirror.reflectee.field);
-  Expect.isTrue(instanceMirror.reflectee is Class<int, String>);
-  Expect.isFalse(instanceMirror.reflectee is Class<String, int>);
-}
diff --git a/tests/lib/mirrors/reflect_class_test.dart b/tests/lib/mirrors/reflect_class_test.dart
deleted file mode 100644
index 8b0af13..0000000
--- a/tests/lib/mirrors/reflect_class_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-typedef void FooFunction(int a, double b);
-
-main() {
-  Function expectedError = (e) => e is ArgumentError || e is TypeError;
-
-  Expect.throws(() => reflectClass(dynamic), expectedError);
-  Expect.throws(() => reflectClass(1), expectedError); // //# 01: static type warning
-  Expect.throws(() => reflectClass("string"), expectedError); // //# 02: static type warning
-  Expect.throws(() => reflectClass(FooFunction), expectedError);
-}
diff --git a/tests/lib/mirrors/reflect_model_test.dart b/tests/lib/mirrors/reflect_model_test.dart
deleted file mode 100644
index ee6cf8b..0000000
--- a/tests/lib/mirrors/reflect_model_test.dart
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright (c) 2013, 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 test.reflect_model_test;
-
-@MirrorsUsed(targets: "test.reflect_model_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'model.dart';
-import 'stringify.dart';
-
-isNoSuchMethodError(e) => e is NoSuchMethodError;
-
-variablesOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is VariableMirror) result[k] = v;
-  });
-  return result;
-}
-
-gettersOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && v.isGetter) result[k] = v;
-  });
-  return result;
-}
-
-settersOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && v.isSetter) result[k] = v;
-  });
-  return result;
-}
-
-methodsOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && v.isRegularMethod) result[k] = v;
-  });
-  return result;
-}
-
-main() {
-  var unnamed = new Symbol('');
-  var field = new Symbol('field');
-  var instanceMethod = new Symbol('instanceMethod');
-  var accessor = new Symbol('accessor');
-  var aMethod = new Symbol('aMethod');
-  var bMethod = new Symbol('bMethod');
-  var cMethod = new Symbol('cMethod');
-
-  var aClass = reflectClass(A);
-  var bClass = reflectClass(B);
-  var cClass = reflectClass(C);
-  var a = aClass.newInstance(unnamed, []);
-  var b = bClass.newInstance(unnamed, []);
-  var c = cClass.newInstance(unnamed, []);
-
-  expect('{field: Variable(s(field) in s(A))}', variablesOf(aClass));
-  expect('{}', variablesOf(bClass));
-  expect('{}', variablesOf(cClass));
-
-  Expect.isNull(a.getField(field).reflectee);
-  Expect.equals('B:get field', b.getField(field).reflectee);
-  Expect.equals('B:get field', c.getField(field).reflectee);
-
-  Expect.equals(42, a.setField(field, 42).reflectee);
-  Expect.equals(87, b.setField(field, 87).reflectee);
-  Expect.equals(89, c.setField(field, 89).reflectee);
-
-  Expect.equals(42, a.getField(field).reflectee);
-  Expect.equals('B:get field', b.getField(field).reflectee);
-  Expect.equals('B:get field', c.getField(field).reflectee);
-  Expect.equals(89, fieldC);
-
-  expect(
-      '{accessor: Method(s(accessor) in s(A), getter)'
-      '}',
-      gettersOf(aClass));
-  expect(
-      '{accessor: Method(s(accessor) in s(B), getter)'
-      ', field: Method(s(field) in s(B), getter)}',
-      gettersOf(bClass));
-  expect('{accessor: Method(s(accessor) in s(C), getter)}', gettersOf(cClass));
-
-  expect(
-      '{accessor=: Method(s(accessor=) in s(A), setter)'
-      '}',
-      settersOf(aClass));
-  expect(
-      '{accessor=: Method(s(accessor=) in s(B), setter)}', settersOf(bClass));
-  expect(
-      '{accessor=: Method(s(accessor=) in s(C), setter)'
-      ', field=: Method(s(field=) in s(C), setter)}',
-      settersOf(cClass));
-
-  Expect.equals('A:instanceMethod(7)', a.invoke(instanceMethod, [7]).reflectee);
-  Expect.equals('B:instanceMethod(9)', b.invoke(instanceMethod, [9]).reflectee);
-  Expect.equals(
-      'C:instanceMethod(13)', c.invoke(instanceMethod, [13]).reflectee);
-
-  expect(
-      '{aMethod: Method(s(aMethod) in s(A))'
-      ', instanceMethod: Method(s(instanceMethod) in s(A))}',
-      methodsOf(aClass));
-
-  expect(
-      '{bMethod: Method(s(bMethod) in s(B))'
-      ', instanceMethod: Method(s(instanceMethod) in s(B))}',
-      methodsOf(bClass));
-  expect(
-      '{cMethod: Method(s(cMethod) in s(C))'
-      ', instanceMethod: Method(s(instanceMethod) in s(C))}',
-      methodsOf(cClass));
-
-  Expect.equals('A:get accessor', a.getField(accessor).reflectee);
-  Expect.equals('B:get accessor', b.getField(accessor).reflectee);
-  Expect.equals('C:get accessor', c.getField(accessor).reflectee);
-
-  Expect.equals('foo', a.setField(accessor, 'foo').reflectee);
-  Expect.equals('bar', b.setField(accessor, 'bar').reflectee);
-  Expect.equals('baz', c.setField(accessor, 'baz').reflectee);
-
-  Expect.equals('foo', accessorA);
-  Expect.equals('bar', accessorB);
-  Expect.equals('baz', accessorC);
-
-  Expect.equals('aMethod', a.invoke(aMethod, []).reflectee);
-  Expect.equals('aMethod', b.invoke(aMethod, []).reflectee);
-  Expect.equals('aMethod', c.invoke(aMethod, []).reflectee);
-
-  Expect.throws(() {
-    a.invoke(bMethod, []);
-  }, isNoSuchMethodError);
-  Expect.equals('bMethod', b.invoke(bMethod, []).reflectee);
-  Expect.equals('bMethod', c.invoke(bMethod, []).reflectee);
-
-  Expect.throws(() {
-    a.invoke(cMethod, []);
-  }, isNoSuchMethodError);
-  Expect.throws(() {
-    b.invoke(cMethod, []);
-  }, isNoSuchMethodError);
-  Expect.equals('cMethod', c.invoke(cMethod, []).reflectee);
-}
diff --git a/tests/lib/mirrors/reflect_runtime_type_test.dart b/tests/lib/mirrors/reflect_runtime_type_test.dart
deleted file mode 100644
index cb84dee..0000000
--- a/tests/lib/mirrors/reflect_runtime_type_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// A simple test that ensure that reflection works on runtime types of
-// instantiated classes.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-class Foo {
-  int a;
-}
-
-main() {
-  var m = reflectClass(new Foo().runtimeType);
-  var field = publicFields(m).single;
-  if (MirrorSystem.getName(field.simpleName) != 'a') {
-    throw 'Expected "a", but got "${MirrorSystem.getName(field.simpleName)}"';
-  }
-  print(field);
-}
-
-publicFields(ClassMirror mirror) => mirror.declarations.values
-    .where((x) => x is VariableMirror && !(x.isPrivate || x.isStatic));
diff --git a/tests/lib/mirrors/reflect_two_classes_test.dart b/tests/lib/mirrors/reflect_two_classes_test.dart
deleted file mode 100644
index 2abf1a5..0000000
--- a/tests/lib/mirrors/reflect_two_classes_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2015, 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.
-
-// This is a regression test for http://dartbug.com/23054
-
-library index;
-
-@MirrorsUsed(
-    targets: const [Bar, Foo],
-    symbols: const ['bar', 'getBar', 'foo', 'getFoo'],
-    override: '*')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-main() {
-  var bar = new Bar();
-  var barMirror = reflect(bar);
-  Expect.equals(42, barMirror.getField(#bar).reflectee, "bar field");
-  Expect.equals(42, barMirror.invoke(#getBar, []).reflectee, "getBar Method");
-
-  var foo = new Foo();
-  var fooMirror = reflect(foo);
-  Expect.equals(9, fooMirror.getField(#foo).reflectee, "foo field");
-  Expect.equals(9, fooMirror.invoke(#getFoo, []).reflectee, "getFoo Method");
-}
-
-class Bar {
-  int bar = 42;
-
-  int getBar() => bar;
-}
-
-class Foo {
-  int foo = 9;
-
-  int getFoo() => foo;
-}
diff --git a/tests/lib/mirrors/reflect_uninstantiated_class_test.dart b/tests/lib/mirrors/reflect_uninstantiated_class_test.dart
deleted file mode 100644
index a4e5fc0..0000000
--- a/tests/lib/mirrors/reflect_uninstantiated_class_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// A simple test that ensure that reflection works on uninstantiated classes.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-class Foo {
-  int a;
-}
-
-main() {
-  // Do NOT instantiate Foo.
-  var m = reflectClass(Foo);
-  var field = publicFields(m).single;
-  if (MirrorSystem.getName(field.simpleName) != 'a') {
-    throw 'Expected "a", but got "${MirrorSystem.getName(field.simpleName)}"';
-  }
-  print(field);
-}
-
-publicFields(ClassMirror mirror) => mirror.declarations.values
-    .where((x) => x is VariableMirror && !(x.isPrivate || x.isStatic));
diff --git a/tests/lib/mirrors/reflected_type_classes_test.dart b/tests/lib/mirrors/reflected_type_classes_test.dart
deleted file mode 100644
index b74af06..0000000
--- a/tests/lib/mirrors/reflected_type_classes_test.dart
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright (c) 2014, 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 test.reflected_type_classes;
-
-@MirrorsUsed(targets: "test.reflected_type_classes")
-import 'dart:mirrors';
-
-import 'reflected_type_helper.dart';
-
-class A<T> {}
-
-class B extends A {}
-
-class C extends A<num, int> {} // //# 01: static type warning
-class D extends A<int> {}
-
-class E<S> extends A<S> {}
-
-class F<R> extends A<int> {}
-
-class G {}
-
-class H<A, B, C> {}
-
-main() {
-  // Declarations.
-  expectReflectedType(reflectClass(A), null);
-  expectReflectedType(reflectClass(B), B);
-  expectReflectedType(reflectClass(C), C); // //# 01: continued
-  expectReflectedType(reflectClass(D), D);
-  expectReflectedType(reflectClass(E), null);
-  expectReflectedType(reflectClass(F), null);
-  expectReflectedType(reflectClass(G), G);
-  expectReflectedType(reflectClass(H), null);
-
-  // Instantiations.
-  expectReflectedType(reflect(new A()).type, new A().runtimeType);
-  expectReflectedType(reflect(new B()).type, new B().runtimeType);
-  expectReflectedType(reflect(new C()).type, new C().runtimeType); // //# 01: continued
-  expectReflectedType(reflect(new D()).type, new D().runtimeType);
-  expectReflectedType(reflect(new E()).type, new E().runtimeType);
-  expectReflectedType(reflect(new F()).type, new F().runtimeType);
-  expectReflectedType(reflect(new G()).type, new G().runtimeType);
-  expectReflectedType(reflect(new H()).type, new H().runtimeType);
-
-  expectReflectedType(reflect(new A<num>()).type, new A<num>().runtimeType);
-  expectReflectedType(reflect(new B<num>()).type.superclass, // //# 02: static type warning
-                      new A<dynamic>().runtimeType); //         //# 02: continued
-  expectReflectedType(reflect(new C<num>()).type.superclass, // //# 01: continued
-                      new A<dynamic>().runtimeType); //         //# 01: continued
-  expectReflectedType(reflect(new D<num>()).type.superclass, // //# 03: static type warning
-                      new A<int>().runtimeType); //             //# 03: continued
-  expectReflectedType(reflect(new E<num>()).type, new E<num>().runtimeType);
-  expectReflectedType(
-      reflect(new E<num>()).type.superclass, new A<num>().runtimeType);
-  expectReflectedType(
-      reflect(new F<num>()).type.superclass, new A<int>().runtimeType);
-  expectReflectedType(reflect(new F<num>()).type, new F<num>().runtimeType);
-  expectReflectedType(
-      reflect(new H<num, num, num>()).type, new H<num, num, num>().runtimeType);
-}
diff --git a/tests/lib/mirrors/reflected_type_function_type_test.dart b/tests/lib/mirrors/reflected_type_function_type_test.dart
deleted file mode 100644
index f6d6efc..0000000
--- a/tests/lib/mirrors/reflected_type_function_type_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2014, 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 test.reflected_type_function_types;
-
-@MirrorsUsed(targets: "test.reflected_type_function_types")
-import 'dart:mirrors';
-
-import 'reflected_type_helper.dart';
-
-typedef bool Predicate(num n);
-
-bool somePredicate(num n) => n < 0;
-
-main() {
-  FunctionTypeMirror numToBool1 = reflect(somePredicate).type;
-  FunctionTypeMirror numToBool2 =
-      (reflectType(Predicate) as TypedefMirror).referent;
-
-  expectReflectedType(numToBool1, somePredicate.runtimeType);
-  expectReflectedType(numToBool2, Predicate);
-}
diff --git a/tests/lib/mirrors/reflected_type_generics_test.dart b/tests/lib/mirrors/reflected_type_generics_test.dart
deleted file mode 100644
index bae1b68..0000000
--- a/tests/lib/mirrors/reflected_type_generics_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// 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 test.reflected_type_generics_test;
-
-@MirrorsUsed(targets: "test.reflected_type_generics_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'reflected_type_helper.dart';
-
-class A<T> {}
-
-class P {}
-
-class B extends A<P> {}
-
-class C<K, V> {}
-
-class D<T> extends A<T> {}
-
-class E<K> extends C<K, int> {}
-
-class F<G> {}
-
-typedef bool Predicate<T>(T arg);
-
-class FBounded<S extends FBounded> {}
-
-class Helper<T> {
-  Type get param => T;
-}
-
-class Mixin<T extends P> {}
-
-class Composite<K extends P, V> extends Object with Mixin<K> {}
-
-main() {
-  // "Happy" paths:
-  expectReflectedType(reflectType(A, [P]), new A<P>().runtimeType);
-  expectReflectedType(reflectType(C, [B, P]), new C<B, P>().runtimeType);
-  expectReflectedType(reflectType(D, [P]), new D<P>().runtimeType);
-  expectReflectedType(reflectType(E, [P]), new E<P>().runtimeType);
-  expectReflectedType(
-      reflectType(FBounded, [FBounded]), new FBounded<FBounded>().runtimeType);
-
-  var predicateHelper = new Helper<Predicate<P>>();
-  expectReflectedType(reflectType(Predicate, [P]), predicateHelper.param); //# 01: ok
-  var composite = new Composite<P, int>();
-  expectReflectedType(reflectType(Composite, [P, int]), composite.runtimeType);
-
-  // Edge cases:
-  Expect.throws(
-      () => reflectType(P, []),
-      (e) => e is ArgumentError && e.invalidValue is List,
-      "Should throw an ArgumentError if reflecting not a generic class with "
-      "empty list of type arguments");
-  Expect.throws( //                                                             //# 03: ok
-      () => reflectType(P, [B]), //                                             //# 03: continued
-      (e) => e is Error, //                                                     //# 03: continued
-      "Should throw an ArgumentError if reflecting not a generic class with " //# 03: continued
-      "some type arguments"); //                                                //# 03: continued
-  Expect.throws(
-      () => reflectType(A, []),
-      (e) => e is ArgumentError && e.invalidValue is List,
-      "Should throw an ArgumentError if type argument list is empty for a "
-      "generic class");
-  Expect.throws( //                                                             //# 04: ok
-      () => reflectType(A, [P, B]), //                                          //# 04: continued
-      (e) => e is ArgumentError && e.invalidValue is List, //                   //# 04: continued
-      "Should throw an ArgumentError if number of type arguments is not " //    //# 04: continued
-      "correct"); //                                                            //# 04: continued
-  Expect.throws(() => reflectType(B, [P]), (e) => e is Error, //            //# 05: ok
-      "Should throw an ArgumentError for non-generic class extending " //   //# 05: continued
-      "generic one"); //                                                    //# 05: continued
-  Expect.throws(
-      () => reflectType(A, ["non-type"]),
-      (e) => e is ArgumentError && e.invalidValue is List,
-      "Should throw an ArgumentError when any of type arguments is not a Type");
-  Expect.throws( //                                                                //# 06: ok
-      () => reflectType(A, [P, B]), //                                              //# 06: continued
-      (e) => e is ArgumentError && e.invalidValue is List, //                       //# 06: continued
-      "Should throw an ArgumentError if number of type arguments is not correct " //# 06: continued
-      "for generic extending another generic"); //                                  //# 06: continued
-  Expect.throws(
-      () => reflectType(reflectType(F).typeVariables[0].reflectedType, [int]));
-  Expect.throws(() => reflectType(FBounded, [int])); //# 02: ok
-  var boundedType =
-      reflectType(FBounded).typeVariables[0].upperBound.reflectedType;
-  Expect.throws(() => reflectType(boundedType, [int])); //# 02: ok
-  Expect.throws(() => reflectType(Composite, [int, int])); //# 02: ok
-
-  // Instantiation of a generic class preserves type information:
-  ClassMirror m = reflectType(A, [P]) as ClassMirror;
-  var instance = m.newInstance(const Symbol(""), []).reflectee;
-  Expect.equals(new A<P>().runtimeType, instance.runtimeType);
-}
diff --git a/tests/lib/mirrors/reflected_type_helper.dart b/tests/lib/mirrors/reflected_type_helper.dart
deleted file mode 100644
index d70cfae..0000000
--- a/tests/lib/mirrors/reflected_type_helper.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2014, 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 test.reflected_type_helper;
-
-@MirrorsUsed(targets: "test.reflected_type_helper")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-expectReflectedType(TypeMirror typeMirror, Type expectedType) {
-  if (expectedType == null) {
-    Expect.isFalse(typeMirror.hasReflectedType);
-    Expect.throws(() => typeMirror.reflectedType, (e) => e is UnsupportedError,
-        "Should not have a reflected type");
-  } else {
-    Expect.isTrue(typeMirror.hasReflectedType);
-    Expect.equals(expectedType, typeMirror.reflectedType);
-  }
-}
diff --git a/tests/lib/mirrors/reflected_type_special_types_test.dart b/tests/lib/mirrors/reflected_type_special_types_test.dart
deleted file mode 100644
index 05e1526..0000000
--- a/tests/lib/mirrors/reflected_type_special_types_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2014, 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 test.reflected_type_special_types;
-
-@MirrorsUsed(targets: "test.reflected_type_special_types")
-import 'dart:mirrors';
-
-import 'reflected_type_helper.dart';
-
-main() {
-  TypeMirror dynamicMirror = currentMirrorSystem().dynamicType;
-  TypeMirror dynamicMirror2 = reflectType(dynamic);
-  TypeMirror voidMirror = currentMirrorSystem().voidType;
-
-  expectReflectedType(dynamicMirror, dynamic);
-  expectReflectedType(dynamicMirror2, dynamic);
-  expectReflectedType(voidMirror, null);
-}
diff --git a/tests/lib/mirrors/reflected_type_test.dart b/tests/lib/mirrors/reflected_type_test.dart
deleted file mode 100644
index 635b27a..0000000
--- a/tests/lib/mirrors/reflected_type_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2013, 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 test.reflected_type_test;
-
-@MirrorsUsed(targets: "test.reflected_type_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A<T> {}
-
-class B extends A {}
-
-class C extends A<num, int> {} // //# 01: static type warning
-class D extends A<int> {}
-
-class E<S> extends A<S> {}
-
-class F<R> extends A<int> {}
-
-class G {}
-
-class H<A, B, C> {}
-
-expectReflectedType(classMirror, expectedType) {
-  if (expectedType == null) {
-    Expect.isFalse(classMirror.hasReflectedType,
-        "$classMirror should not have a reflected type");
-    Expect.throws(
-        () => classMirror.reflectedType, (e) => e is UnsupportedError);
-  } else {
-    Expect.isTrue(classMirror.hasReflectedType,
-        "$classMirror should have a reflected type");
-    Expect.equals(expectedType, classMirror.reflectedType);
-  }
-}
-
-main() {
-  // Basic non-generic types, including intercepted types.
-  expectReflectedType(reflectClass(Object), Object);
-  expectReflectedType(reflectClass(String), String);
-  expectReflectedType(reflectClass(int), int);
-  expectReflectedType(reflectClass(num), num);
-  expectReflectedType(reflectClass(double), double);
-  expectReflectedType(reflectClass(bool), bool);
-  expectReflectedType(reflectClass(Null), Null);
-
-  // Declarations.
-  expectReflectedType(reflectClass(A), null);
-  expectReflectedType(reflectClass(B), B);
-  expectReflectedType(reflectClass(C), C); // //# 01: continued
-  expectReflectedType(reflectClass(D), D);
-  expectReflectedType(reflectClass(E), null);
-  expectReflectedType(reflectClass(F), null);
-  expectReflectedType(reflectClass(G), G);
-  expectReflectedType(reflectClass(H), null);
-
-  // Instantiations.
-  expectReflectedType(reflect(new A()).type, new A().runtimeType);
-  expectReflectedType(reflect(new B()).type, new B().runtimeType);
-  expectReflectedType(reflect(new C()).type, new C().runtimeType); // //# 01: continued
-  expectReflectedType(reflect(new D()).type, new D().runtimeType);
-  expectReflectedType(reflect(new E()).type, new E().runtimeType);
-  expectReflectedType(reflect(new F()).type, new F().runtimeType);
-  expectReflectedType(reflect(new G()).type, new G().runtimeType);
-  expectReflectedType(reflect(new H()).type, new H().runtimeType);
-
-  expectReflectedType(reflect(new A<num>()).type, new A<num>().runtimeType);
-  expectReflectedType(reflect(new B<num>()).type.superclass, // //# 02: static type warning
-                      new A<dynamic>().runtimeType); //         //# 02: continued
-  expectReflectedType(reflect(new C<num>()).type.superclass, // //# 01: continued
-                      new A<dynamic>().runtimeType); //         //# 01: continued
-  expectReflectedType(reflect(new D<num>()).type.superclass, // //# 03: static type warning
-                      new A<int>().runtimeType); //             //# 03: continued
-  expectReflectedType(reflect(new E<num>()).type, new E<num>().runtimeType);
-  expectReflectedType(
-      reflect(new E<num>()).type.superclass, new A<num>().runtimeType);
-  expectReflectedType(
-      reflect(new F<num>()).type.superclass, new A<int>().runtimeType);
-  expectReflectedType(reflect(new F<num>()).type, new F<num>().runtimeType);
-  expectReflectedType(
-      reflect(new H<num, num, num>()).type, new H<num, num, num>().runtimeType);
-}
diff --git a/tests/lib/mirrors/reflected_type_typedefs_test.dart b/tests/lib/mirrors/reflected_type_typedefs_test.dart
deleted file mode 100644
index 8a236f9..0000000
--- a/tests/lib/mirrors/reflected_type_typedefs_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2014, 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 test.reflected_type_typedefs;
-
-@MirrorsUsed(targets: "test.reflected_type_typedefs")
-import 'dart:mirrors';
-
-import 'reflected_type_helper.dart';
-
-typedef bool NonGenericPredicate(num n);
-typedef bool GenericPredicate<T>(T t);
-typedef S GenericTransform<S>(S s);
-
-main() {
-  TypedefMirror nonGenericPredicate = reflectType(NonGenericPredicate);
-  TypedefMirror predicateOfDynamic = reflectType(GenericPredicate);
-  TypedefMirror transformOfDynamic = reflectType(GenericTransform);
-
-  TypedefMirror predicateDecl = predicateOfDynamic.originalDeclaration;
-  TypedefMirror transformDecl = transformOfDynamic.originalDeclaration;
-
-  expectReflectedType(nonGenericPredicate, NonGenericPredicate);
-  expectReflectedType(predicateOfDynamic, GenericPredicate);
-  expectReflectedType(transformOfDynamic, GenericTransform);
-  expectReflectedType(predicateDecl, null);
-  expectReflectedType(transformDecl, null);
-}
diff --git a/tests/lib/mirrors/reflected_type_typevars_test.dart b/tests/lib/mirrors/reflected_type_typevars_test.dart
deleted file mode 100644
index bd45b38..0000000
--- a/tests/lib/mirrors/reflected_type_typevars_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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 test.reflected_type_type_variables;
-
-@MirrorsUsed(targets: "test.reflected_type_type_variables")
-import 'dart:mirrors';
-
-import 'reflected_type_helper.dart';
-
-class Class<T> {}
-
-typedef bool Predicate<S>(S t);
-
-main() {
-  TypeVariableMirror tFromClass = reflectClass(Class).typeVariables[0];
-  TypeVariableMirror sFromPredicate = reflectType(Predicate).typeVariables[0];
-
-  expectReflectedType(tFromClass, null);
-  expectReflectedType(sFromPredicate, null);
-}
diff --git a/tests/lib/mirrors/reflectively_instantiate_uninstantiated_class_test.dart b/tests/lib/mirrors/reflectively_instantiate_uninstantiated_class_test.dart
deleted file mode 100644
index ca05ee66..0000000
--- a/tests/lib/mirrors/reflectively_instantiate_uninstantiated_class_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Ensure that otherwise uninstantiated classes can be instantiated
-// reflectively.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-class Foo {
-  int a;
-}
-
-main() {
-  // Do NOT instantiate Foo.
-  var m = reflectClass(Foo);
-  var instance = m.newInstance(const Symbol(''), []);
-  print(instance);
-  bool threw = false;
-  try {
-    m.newInstance(#noSuchConstructor, []);
-    throw 'Expected an exception';
-  } on NoSuchMethodError catch (e) {
-    print(e);
-    threw = true;
-  }
-  if (!threw) throw 'Expected a NoSuchMethodError';
-}
diff --git a/tests/lib/mirrors/regress_14304_test.dart b/tests/lib/mirrors/regress_14304_test.dart
deleted file mode 100644
index b5e228b..0000000
--- a/tests/lib/mirrors/regress_14304_test.dart
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for Issue 14304.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-import "package:expect/expect.dart";
-
-class A<T> {
-  T m() {}
-}
-
-main() {
-  ClassMirror a = reflectClass(A);
-  TypeVariableMirror t = a.typeVariables[0];
-  MethodMirror m = a.declarations[#m];
-
-  Expect.equals(t, m.returnType);
-}
diff --git a/tests/lib/mirrors/regress_16321_test.dart b/tests/lib/mirrors/regress_16321_test.dart
deleted file mode 100644
index f76ab00..0000000
--- a/tests/lib/mirrors/regress_16321_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for Issue 16321.
-// (Type errors in metadata crashed the VM in checked mode).
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import "dart:mirrors";
-
-class TypedBox {
-  final List<String> contents;
-  const TypedBox(this.contents);
-}
-
-@TypedBox('foo') // //# 01: static type warning, checked mode compile-time error
-@TypedBox(const ['foo'])
-class C {}
-
-main() {
-  reflectClass(C).metadata;
-}
diff --git a/tests/lib/mirrors/regress_19731_test.dart b/tests/lib/mirrors/regress_19731_test.dart
deleted file mode 100644
index 5c12e6f..0000000
--- a/tests/lib/mirrors/regress_19731_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2014, 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.
-
-@metadata
-library regress_19731;
-
-@MirrorsUsed(targets: "regress_19731")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-@metadata
-const metadata = const Object();
-
-class OneField {
-  @metadata
-  var onlyClassField;
-
-  @metadata
-  method() {}
-}
-
-@metadata
-method() {}
-
-main() {
-  var classMirror = reflectType(OneField);
-  var classFieldNames = classMirror.declarations.values
-      .where((v) => v is VariableMirror)
-      .map((v) => v.simpleName)
-      .toList();
-  Expect.setEquals([#onlyClassField], classFieldNames);
-
-  var libraryMirror = classMirror.owner;
-  var libraryFieldNames = libraryMirror.declarations.values
-      .where((v) => v is VariableMirror)
-      .map((v) => v.simpleName)
-      .toList();
-  Expect.setEquals([#metadata], libraryFieldNames);
-}
diff --git a/tests/lib/mirrors/regress_26187_test.dart b/tests/lib/mirrors/regress_26187_test.dart
deleted file mode 100644
index 8a1cc6a..0000000
--- a/tests/lib/mirrors/regress_26187_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// 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.
-
-@MirrorsUsed(targets: const ["A", "B", "f", "g"])
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class A {
-  const A();
-}
-
-class B {
-  const B();
-}
-
-typedef void f(@A() int, String);
-
-typedef void g(@B() int, String);
-
-main() {
-  ParameterMirror fParamMirror =
-      (reflectType(f) as TypedefMirror).referent.parameters[0];
-  ParameterMirror gParamMirror =
-      (reflectType(g) as TypedefMirror).referent.parameters[0];
-  Expect.equals(
-      '.A', MirrorSystem.getName(fParamMirror.metadata[0].type.qualifiedName));
-  Expect.equals(
-      '.B', MirrorSystem.getName(gParamMirror.metadata[0].type.qualifiedName));
-}
diff --git a/tests/lib/mirrors/relation_assignable_test.dart b/tests/lib/mirrors/relation_assignable_test.dart
deleted file mode 100644
index e7843d5..0000000
--- a/tests/lib/mirrors/relation_assignable_test.dart
+++ /dev/null
@@ -1,323 +0,0 @@
-// Copyright (c) 2014, 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 test.relation_assignable;
-
-@MirrorsUsed(targets: "test.relation_assignable")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-class Superclass {}
-
-class Subclass1 extends Superclass {}
-
-class Subclass2 extends Superclass {}
-
-typedef bool NumberPredicate(num x);
-typedef bool IntegerPredicate(int x);
-typedef bool DoublePredicate(double x);
-
-typedef num NumberGenerator();
-typedef int IntegerGenerator();
-typedef double DoubleGenerator();
-
-class A<T> {}
-
-class B<T> extends A<T> {}
-
-class C<T extends num> {}
-
-test(MirrorSystem mirrors) {
-  LibraryMirror coreLibrary = mirrors.findLibrary(#dart.core);
-  LibraryMirror thisLibrary = mirrors.findLibrary(#test.relation_assignable);
-
-  // Classes.
-  TypeMirror Super = thisLibrary.declarations[#Superclass];
-  TypeMirror Sub1 = thisLibrary.declarations[#Subclass1];
-  TypeMirror Sub2 = thisLibrary.declarations[#Subclass2];
-  TypeMirror Obj = coreLibrary.declarations[#Object];
-  TypeMirror Nul = coreLibrary.declarations[#Null];
-
-  Expect.isTrue(Obj.isAssignableTo(Obj));
-  Expect.isTrue(Super.isAssignableTo(Super));
-  Expect.isTrue(Sub1.isAssignableTo(Sub1));
-  Expect.isTrue(Sub2.isAssignableTo(Sub2));
-  Expect.isTrue(Nul.isAssignableTo(Nul));
-
-  Expect.isTrue(Sub1.isAssignableTo(Super));
-  Expect.isTrue(Super.isAssignableTo(Sub1));
-
-  Expect.isTrue(Sub2.isAssignableTo(Super));
-  Expect.isTrue(Super.isAssignableTo(Sub2));
-
-  Expect.isFalse(Sub2.isAssignableTo(Sub1));
-  Expect.isFalse(Sub1.isAssignableTo(Sub2));
-
-  Expect.isTrue(Sub1.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Sub1));
-
-  Expect.isTrue(Sub2.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Sub2));
-
-  Expect.isTrue(Super.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Super));
-
-  Expect.isTrue(Nul.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Nul));
-  Expect.isTrue(Nul.isAssignableTo(Super)); // Null type is bottom type.
-  Expect.isTrue(Super.isAssignableTo(Nul));
-
-  // Function typedef - argument type.
-  TypeMirror Func = coreLibrary.declarations[#Function];
-  TypedefMirror NumPred = thisLibrary.declarations[#NumberPredicate];
-  TypedefMirror IntPred = thisLibrary.declarations[#IntegerPredicate];
-  TypedefMirror DubPred = thisLibrary.declarations[#DoublePredicate];
-
-  Expect.isTrue(Func.isAssignableTo(Func));
-  Expect.isTrue(NumPred.isAssignableTo(NumPred));
-  Expect.isTrue(IntPred.isAssignableTo(IntPred));
-  Expect.isTrue(DubPred.isAssignableTo(DubPred));
-
-  Expect.isTrue(NumPred.isAssignableTo(Func));
-  Expect.isTrue(NumPred.isAssignableTo(IntPred));
-  Expect.isTrue(NumPred.isAssignableTo(DubPred));
-
-  Expect.isTrue(IntPred.isAssignableTo(Func));
-  Expect.isTrue(IntPred.isAssignableTo(NumPred));
-  Expect.isFalse(IntPred.isAssignableTo(DubPred));
-
-  Expect.isTrue(DubPred.isAssignableTo(Func));
-  Expect.isTrue(DubPred.isAssignableTo(NumPred));
-  Expect.isFalse(DubPred.isAssignableTo(IntPred));
-
-  Expect.isTrue(Func.isAssignableTo(Obj));
-  Expect.isTrue(NumPred.isAssignableTo(Obj));
-  Expect.isTrue(IntPred.isAssignableTo(Obj));
-  Expect.isTrue(DubPred.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Func));
-  Expect.isTrue(Obj.isAssignableTo(NumPred));
-  Expect.isTrue(Obj.isAssignableTo(IntPred));
-  Expect.isTrue(Obj.isAssignableTo(DubPred));
-
-  // Function typedef - return type.
-  TypedefMirror NumGen = thisLibrary.declarations[#NumberGenerator];
-  TypedefMirror IntGen = thisLibrary.declarations[#IntegerGenerator];
-  TypedefMirror DubGen = thisLibrary.declarations[#DoubleGenerator];
-
-  Expect.isTrue(NumGen.isAssignableTo(NumGen));
-  Expect.isTrue(IntGen.isAssignableTo(IntGen));
-  Expect.isTrue(DubGen.isAssignableTo(DubGen));
-
-  Expect.isTrue(NumGen.isAssignableTo(Func));
-  Expect.isTrue(NumGen.isAssignableTo(IntGen));
-  Expect.isTrue(NumGen.isAssignableTo(DubGen));
-
-  Expect.isTrue(IntGen.isAssignableTo(Func));
-  Expect.isTrue(IntGen.isAssignableTo(NumGen));
-  Expect.isFalse(IntGen.isAssignableTo(DubGen));
-
-  Expect.isTrue(DubGen.isAssignableTo(Func));
-  Expect.isTrue(DubGen.isAssignableTo(NumGen));
-  Expect.isFalse(DubGen.isAssignableTo(IntGen));
-
-  Expect.isTrue(Func.isAssignableTo(Obj));
-  Expect.isTrue(NumGen.isAssignableTo(Obj));
-  Expect.isTrue(IntGen.isAssignableTo(Obj));
-  Expect.isTrue(DubGen.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Func));
-  Expect.isTrue(Obj.isAssignableTo(NumGen));
-  Expect.isTrue(Obj.isAssignableTo(IntGen));
-  Expect.isTrue(Obj.isAssignableTo(DubGen));
-
-  // Function - argument type.
-  TypeMirror NumPredRef = NumPred.referent;
-  TypeMirror IntPredRef = IntPred.referent;
-  TypeMirror DubPredRef = DubPred.referent;
-
-  Expect.isTrue(Func.isAssignableTo(Func));
-  Expect.isTrue(NumPredRef.isAssignableTo(NumPredRef));
-  Expect.isTrue(IntPredRef.isAssignableTo(IntPredRef));
-  Expect.isTrue(DubPredRef.isAssignableTo(DubPredRef));
-
-  Expect.isTrue(NumPredRef.isAssignableTo(Func));
-  Expect.isTrue(NumPredRef.isAssignableTo(IntPredRef));
-  Expect.isTrue(NumPredRef.isAssignableTo(DubPredRef));
-
-  Expect.isTrue(IntPredRef.isAssignableTo(Func));
-  Expect.isTrue(IntPredRef.isAssignableTo(NumPredRef));
-  Expect.isFalse(IntPredRef.isAssignableTo(DubPredRef));
-
-  Expect.isTrue(DubPredRef.isAssignableTo(Func));
-  Expect.isTrue(DubPredRef.isAssignableTo(NumPredRef));
-  Expect.isFalse(DubPredRef.isAssignableTo(IntPredRef));
-
-  Expect.isTrue(Func.isAssignableTo(Obj));
-  Expect.isTrue(NumPredRef.isAssignableTo(Obj));
-  Expect.isTrue(IntPredRef.isAssignableTo(Obj));
-  Expect.isTrue(DubPredRef.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Func));
-  Expect.isTrue(Obj.isAssignableTo(NumPredRef));
-  Expect.isTrue(Obj.isAssignableTo(IntPredRef));
-  Expect.isTrue(Obj.isAssignableTo(DubPredRef));
-
-  // Function - return type.
-  TypeMirror NumGenRef = NumGen.referent;
-  TypeMirror IntGenRef = IntGen.referent;
-  TypeMirror DubGenRef = DubGen.referent;
-
-  Expect.isTrue(NumGenRef.isAssignableTo(NumGenRef));
-  Expect.isTrue(IntGenRef.isAssignableTo(IntGenRef));
-  Expect.isTrue(DubGenRef.isAssignableTo(DubGenRef));
-
-  Expect.isTrue(NumGenRef.isAssignableTo(Func));
-  Expect.isTrue(NumGenRef.isAssignableTo(IntGenRef));
-  Expect.isTrue(NumGenRef.isAssignableTo(DubGenRef));
-
-  Expect.isTrue(IntGenRef.isAssignableTo(Func));
-  Expect.isTrue(IntGenRef.isAssignableTo(NumGenRef));
-  Expect.isFalse(IntGenRef.isAssignableTo(DubGenRef));
-
-  Expect.isTrue(DubGenRef.isAssignableTo(Func));
-  Expect.isTrue(DubGenRef.isAssignableTo(NumGenRef));
-  Expect.isFalse(DubGenRef.isAssignableTo(IntGenRef));
-
-  Expect.isTrue(Func.isAssignableTo(Obj));
-  Expect.isTrue(NumGenRef.isAssignableTo(Obj));
-  Expect.isTrue(IntGenRef.isAssignableTo(Obj));
-  Expect.isTrue(DubGenRef.isAssignableTo(Obj));
-  Expect.isTrue(Obj.isAssignableTo(Func));
-  Expect.isTrue(Obj.isAssignableTo(NumGenRef));
-  Expect.isTrue(Obj.isAssignableTo(IntGenRef));
-  Expect.isTrue(Obj.isAssignableTo(DubGenRef));
-
-  // Function typedef / function.
-  Expect.isTrue(NumPred.isAssignableTo(NumPredRef));
-  Expect.isTrue(IntPred.isAssignableTo(IntPredRef));
-  Expect.isTrue(DubPred.isAssignableTo(DubPredRef));
-  Expect.isTrue(NumPredRef.isAssignableTo(NumPred));
-  Expect.isTrue(IntPredRef.isAssignableTo(IntPred));
-  Expect.isTrue(DubPredRef.isAssignableTo(DubPred));
-
-  // Function typedef / function.
-  Expect.isTrue(NumGen.isAssignableTo(NumGenRef));
-  Expect.isTrue(IntGen.isAssignableTo(IntGenRef));
-  Expect.isTrue(DubGen.isAssignableTo(DubGenRef));
-  Expect.isTrue(NumGenRef.isAssignableTo(NumGen));
-  Expect.isTrue(IntGenRef.isAssignableTo(IntGen));
-  Expect.isTrue(DubGenRef.isAssignableTo(DubGen));
-
-  // Type variable.
-  TypeMirror TFromA =
-      (thisLibrary.declarations[#A] as ClassMirror).typeVariables.single;
-  TypeMirror TFromB =
-      (thisLibrary.declarations[#B] as ClassMirror).typeVariables.single;
-  TypeMirror TFromC =
-      (thisLibrary.declarations[#C] as ClassMirror).typeVariables.single;
-
-  Expect.isTrue(TFromA.isAssignableTo(TFromA));
-  Expect.isTrue(TFromB.isAssignableTo(TFromB));
-  Expect.isTrue(TFromC.isAssignableTo(TFromC));
-
-  Expect.isFalse(TFromA.isAssignableTo(TFromB));
-  Expect.isFalse(TFromA.isAssignableTo(TFromC));
-  Expect.isFalse(TFromB.isAssignableTo(TFromA));
-  Expect.isFalse(TFromB.isAssignableTo(TFromC));
-  Expect.isFalse(TFromC.isAssignableTo(TFromA));
-  Expect.isFalse(TFromC.isAssignableTo(TFromB));
-
-  TypeMirror Num = coreLibrary.declarations[#num];
-  Expect.isTrue(TFromC.isAssignableTo(Num));
-  Expect.isTrue(Num.isAssignableTo(TFromC));
-
-  // dynamic & void.
-  TypeMirror Dynamic = mirrors.dynamicType;
-  Expect.isTrue(Dynamic.isAssignableTo(Dynamic));
-  Expect.isTrue(Obj.isAssignableTo(Dynamic));
-  Expect.isTrue(Super.isAssignableTo(Dynamic));
-  Expect.isTrue(Sub1.isAssignableTo(Dynamic));
-  Expect.isTrue(Sub2.isAssignableTo(Dynamic));
-  Expect.isTrue(NumPred.isAssignableTo(Dynamic));
-  Expect.isTrue(IntPred.isAssignableTo(Dynamic));
-  Expect.isTrue(DubPred.isAssignableTo(Dynamic));
-  Expect.isTrue(NumPredRef.isAssignableTo(Dynamic));
-  Expect.isTrue(IntPredRef.isAssignableTo(Dynamic));
-  Expect.isTrue(DubPredRef.isAssignableTo(Dynamic));
-  Expect.isTrue(NumGen.isAssignableTo(Dynamic));
-  Expect.isTrue(IntGen.isAssignableTo(Dynamic));
-  Expect.isTrue(DubGen.isAssignableTo(Dynamic));
-  Expect.isTrue(NumGenRef.isAssignableTo(Dynamic));
-  Expect.isTrue(IntGenRef.isAssignableTo(Dynamic));
-  Expect.isTrue(DubGenRef.isAssignableTo(Dynamic));
-  Expect.isTrue(TFromA.isAssignableTo(Dynamic));
-  Expect.isTrue(TFromB.isAssignableTo(Dynamic));
-  Expect.isTrue(TFromC.isAssignableTo(Dynamic));
-  Expect.isTrue(Dynamic.isAssignableTo(Obj));
-  Expect.isTrue(Dynamic.isAssignableTo(Super));
-  Expect.isTrue(Dynamic.isAssignableTo(Sub1));
-  Expect.isTrue(Dynamic.isAssignableTo(Sub2));
-  Expect.isTrue(Dynamic.isAssignableTo(NumPred));
-  Expect.isTrue(Dynamic.isAssignableTo(IntPred));
-  Expect.isTrue(Dynamic.isAssignableTo(DubPred));
-  Expect.isTrue(Dynamic.isAssignableTo(NumPredRef));
-  Expect.isTrue(Dynamic.isAssignableTo(IntPredRef));
-  Expect.isTrue(Dynamic.isAssignableTo(DubPredRef));
-  Expect.isTrue(Dynamic.isAssignableTo(NumGen));
-  Expect.isTrue(Dynamic.isAssignableTo(IntGen));
-  Expect.isTrue(Dynamic.isAssignableTo(DubGen));
-  Expect.isTrue(Dynamic.isAssignableTo(NumGenRef));
-  Expect.isTrue(Dynamic.isAssignableTo(IntGenRef));
-  Expect.isTrue(Dynamic.isAssignableTo(DubGenRef));
-  Expect.isTrue(Dynamic.isAssignableTo(TFromA));
-  Expect.isTrue(Dynamic.isAssignableTo(TFromB));
-  Expect.isTrue(Dynamic.isAssignableTo(TFromC));
-
-  TypeMirror Void = mirrors.voidType;
-  Expect.isTrue(Void.isAssignableTo(Void));
-  Expect.isFalse(Obj.isAssignableTo(Void));
-  Expect.isFalse(Super.isAssignableTo(Void));
-  Expect.isFalse(Sub1.isAssignableTo(Void));
-  Expect.isFalse(Sub2.isAssignableTo(Void));
-  Expect.isFalse(NumPred.isAssignableTo(Void));
-  Expect.isFalse(IntPred.isAssignableTo(Void));
-  Expect.isFalse(DubPred.isAssignableTo(Void));
-  Expect.isFalse(NumPredRef.isAssignableTo(Void));
-  Expect.isFalse(IntPredRef.isAssignableTo(Void));
-  Expect.isFalse(DubPredRef.isAssignableTo(Void));
-  Expect.isFalse(NumGen.isAssignableTo(Void));
-  Expect.isFalse(IntGen.isAssignableTo(Void));
-  Expect.isFalse(DubGen.isAssignableTo(Void));
-  Expect.isFalse(NumGenRef.isAssignableTo(Void));
-  Expect.isFalse(IntGenRef.isAssignableTo(Void));
-  Expect.isFalse(DubGenRef.isAssignableTo(Void));
-  Expect.isFalse(TFromA.isAssignableTo(Void));
-  Expect.isFalse(TFromB.isAssignableTo(Void));
-  Expect.isFalse(TFromC.isAssignableTo(Void));
-  Expect.isFalse(Void.isAssignableTo(Obj));
-  Expect.isFalse(Void.isAssignableTo(Super));
-  Expect.isFalse(Void.isAssignableTo(Sub1));
-  Expect.isFalse(Void.isAssignableTo(Sub2));
-  Expect.isFalse(Void.isAssignableTo(NumPred));
-  Expect.isFalse(Void.isAssignableTo(IntPred));
-  Expect.isFalse(Void.isAssignableTo(DubPred));
-  Expect.isFalse(Void.isAssignableTo(NumPredRef));
-  Expect.isFalse(Void.isAssignableTo(IntPredRef));
-  Expect.isFalse(Void.isAssignableTo(DubPredRef));
-  Expect.isFalse(Void.isAssignableTo(NumGen));
-  Expect.isFalse(Void.isAssignableTo(IntGen));
-  Expect.isFalse(Void.isAssignableTo(DubGen));
-  Expect.isFalse(Void.isAssignableTo(NumGenRef));
-  Expect.isFalse(Void.isAssignableTo(IntGenRef));
-  Expect.isFalse(Void.isAssignableTo(DubGenRef));
-  Expect.isFalse(Void.isAssignableTo(TFromA));
-  Expect.isFalse(Void.isAssignableTo(TFromB));
-  Expect.isFalse(Void.isAssignableTo(TFromC));
-
-  Expect.isTrue(Dynamic.isAssignableTo(Void));
-  Expect.isTrue(Void.isAssignableTo(Dynamic));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/relation_subclass_test.dart b/tests/lib/mirrors/relation_subclass_test.dart
deleted file mode 100644
index 241987c..0000000
--- a/tests/lib/mirrors/relation_subclass_test.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright (c) 2014, 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 test.relation_subclass;
-
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-class Superclass {}
-
-class Subclass1 extends Superclass {}
-
-class Subclass2 extends Superclass {}
-
-typedef bool NumberPredicate(num x);
-typedef bool IntegerPredicate(int x);
-typedef bool DoublePredicate(double x);
-
-typedef num NumberGenerator();
-typedef int IntegerGenerator();
-typedef double DoubleGenerator();
-
-test(MirrorSystem mirrors) {
-  LibraryMirror coreLibrary = mirrors.findLibrary(#dart.core);
-  LibraryMirror thisLibrary = mirrors.findLibrary(#test.relation_subclass);
-
-  ClassMirror Super = thisLibrary.declarations[#Superclass];
-  ClassMirror Sub1 = thisLibrary.declarations[#Subclass1];
-  ClassMirror Sub2 = thisLibrary.declarations[#Subclass2];
-  ClassMirror Obj = coreLibrary.declarations[#Object];
-  ClassMirror Nul = coreLibrary.declarations[#Null];
-
-  Expect.isTrue(Obj.isSubclassOf(Obj));
-  Expect.isTrue(Super.isSubclassOf(Super));
-  Expect.isTrue(Sub1.isSubclassOf(Sub1));
-  Expect.isTrue(Sub2.isSubclassOf(Sub2));
-  Expect.isTrue(Nul.isSubclassOf(Nul));
-
-  Expect.isTrue(Sub1.isSubclassOf(Super));
-  Expect.isFalse(Super.isSubclassOf(Sub1));
-
-  Expect.isTrue(Sub2.isSubclassOf(Super));
-  Expect.isFalse(Super.isSubclassOf(Sub2));
-
-  Expect.isFalse(Sub2.isSubclassOf(Sub1));
-  Expect.isFalse(Sub1.isSubclassOf(Sub2));
-
-  Expect.isTrue(Sub1.isSubclassOf(Obj));
-  Expect.isFalse(Obj.isSubclassOf(Sub1));
-
-  Expect.isTrue(Sub2.isSubclassOf(Obj));
-  Expect.isFalse(Obj.isSubclassOf(Sub2));
-
-  Expect.isTrue(Super.isSubclassOf(Obj));
-  Expect.isFalse(Obj.isSubclassOf(Super));
-
-  Expect.isTrue(Nul.isSubclassOf(Obj));
-  Expect.isFalse(Obj.isSubclassOf(Nul));
-  Expect.isFalse(Nul.isSubclassOf(Super));
-  Expect.isFalse(Super.isSubclassOf(Nul));
-
-  var Func = coreLibrary.declarations[#Function];
-  Expect.isTrue(Func.isSubclassOf(Obj));
-  Expect.isFalse(Obj.isSubclassOf(Func));
-
-  // Function typedef.
-  var NumPred = thisLibrary.declarations[#NumberPredicate];
-  var IntPred = thisLibrary.declarations[#IntegerPredicate];
-  var DubPred = thisLibrary.declarations[#DoublePredicate];
-  var NumGen = thisLibrary.declarations[#NumberGenerator];
-  var IntGen = thisLibrary.declarations[#IntegerGenerator];
-  var DubGen = thisLibrary.declarations[#DoubleGenerator];
-
-  isArgumentOrTypeError(e) => e is ArgumentError || e is TypeError;
-  Expect.throws(() => Func.isSubclassOf(NumPred), isArgumentOrTypeError);
-  Expect.throws(() => Func.isSubclassOf(IntPred), isArgumentOrTypeError);
-  Expect.throws(() => Func.isSubclassOf(DubPred), isArgumentOrTypeError);
-  Expect.throws(() => Func.isSubclassOf(NumGen), isArgumentOrTypeError);
-  Expect.throws(() => Func.isSubclassOf(IntGen), isArgumentOrTypeError);
-  Expect.throws(() => Func.isSubclassOf(DubGen), isArgumentOrTypeError);
-
-  isNoSuchMethodError(e) => e is NoSuchMethodError;
-  Expect.throws(() => NumPred.isSubclassOf(Func), isNoSuchMethodError);
-  Expect.throws(() => IntPred.isSubclassOf(Func), isNoSuchMethodError);
-  Expect.throws(() => DubPred.isSubclassOf(Func), isNoSuchMethodError);
-  Expect.throws(() => NumGen.isSubclassOf(Func), isNoSuchMethodError);
-  Expect.throws(() => IntGen.isSubclassOf(Func), isNoSuchMethodError);
-  Expect.throws(() => DubGen.isSubclassOf(Func), isNoSuchMethodError);
-
-  // Function type.
-  TypeMirror NumPredRef = (NumPred as TypedefMirror).referent;
-  TypeMirror IntPredRef = (IntPred as TypedefMirror).referent;
-  TypeMirror DubPredRef = (DubPred as TypedefMirror).referent;
-  TypeMirror NumGenRef = (NumGen as TypedefMirror).referent;
-  TypeMirror IntGenRef = (IntGen as TypedefMirror).referent;
-  TypeMirror DubGenRef = (DubGen as TypedefMirror).referent;
-
-  Expect.isFalse(Func.isSubclassOf(NumPredRef));
-  Expect.isFalse(Func.isSubclassOf(IntPredRef));
-  Expect.isFalse(Func.isSubclassOf(DubPredRef));
-  Expect.isFalse(Func.isSubclassOf(NumGenRef));
-  Expect.isFalse(Func.isSubclassOf(IntGenRef));
-  Expect.isFalse(Func.isSubclassOf(DubGenRef));
-
-  // The spec doesn't require these to be either value, only that they implement
-  // Function.
-  // NumPredRef.isSubclassOf(Func);
-  // IntPredRef.isSubclassOf(Func);
-  // DubPredRef.isSubclassOf(Func);
-  // NumGenRef.isSubclassOf(Func);
-  // IntGenRef.isSubclassOf(Func);
-  // DubGenRef.isSubclassOf(Func);
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/relation_subtype_test.dart b/tests/lib/mirrors/relation_subtype_test.dart
deleted file mode 100644
index 79160f2..0000000
--- a/tests/lib/mirrors/relation_subtype_test.dart
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright (c) 2014, 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 test.relation_subtype;
-
-@MirrorsUsed(targets: "test.relation_subtype")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-class Superclass {}
-
-class Subclass1 extends Superclass {}
-
-class Subclass2 extends Superclass {}
-
-typedef bool NumberPredicate(num x);
-typedef bool IntegerPredicate(int x);
-typedef bool DoublePredicate(double x);
-
-typedef num NumberGenerator();
-typedef int IntegerGenerator();
-typedef double DoubleGenerator();
-
-class A<T> {}
-
-class B<T> extends A<T> {}
-
-class C<T extends num> {}
-
-test(MirrorSystem mirrors) {
-  LibraryMirror coreLibrary = mirrors.findLibrary(#dart.core);
-  LibraryMirror thisLibrary = mirrors.findLibrary(#test.relation_subtype);
-
-  // Classes.
-  TypeMirror Super = thisLibrary.declarations[#Superclass];
-  TypeMirror Sub1 = thisLibrary.declarations[#Subclass1];
-  TypeMirror Sub2 = thisLibrary.declarations[#Subclass2];
-  TypeMirror Obj = coreLibrary.declarations[#Object];
-  TypeMirror Nul = coreLibrary.declarations[#Null];
-
-  Expect.isTrue(Obj.isSubtypeOf(Obj));
-  Expect.isTrue(Super.isSubtypeOf(Super));
-  Expect.isTrue(Sub1.isSubtypeOf(Sub1));
-  Expect.isTrue(Sub2.isSubtypeOf(Sub2));
-  Expect.isTrue(Nul.isSubtypeOf(Nul));
-
-  Expect.isTrue(Sub1.isSubtypeOf(Super));
-  Expect.isFalse(Super.isSubtypeOf(Sub1));
-
-  Expect.isTrue(Sub2.isSubtypeOf(Super));
-  Expect.isFalse(Super.isSubtypeOf(Sub2));
-
-  Expect.isFalse(Sub2.isSubtypeOf(Sub1));
-  Expect.isFalse(Sub1.isSubtypeOf(Sub2));
-
-  Expect.isTrue(Sub1.isSubtypeOf(Obj));
-  Expect.isFalse(Obj.isSubtypeOf(Sub1));
-
-  Expect.isTrue(Sub2.isSubtypeOf(Obj));
-  Expect.isFalse(Obj.isSubtypeOf(Sub2));
-
-  Expect.isTrue(Super.isSubtypeOf(Obj));
-  Expect.isFalse(Obj.isSubtypeOf(Super));
-
-  Expect.isTrue(Nul.isSubtypeOf(Obj));
-  Expect.isFalse(Obj.isSubtypeOf(Nul));
-  Expect.isTrue(Nul.isSubtypeOf(Super)); // Null type is bottom type.
-  Expect.isFalse(Super.isSubtypeOf(Nul));
-
-  // Function typedef - argument type.
-  TypeMirror Func = coreLibrary.declarations[#Function];
-  TypedefMirror NumPred = thisLibrary.declarations[#NumberPredicate];
-  TypedefMirror IntPred = thisLibrary.declarations[#IntegerPredicate];
-  TypedefMirror DubPred = thisLibrary.declarations[#DoublePredicate];
-
-  Expect.isTrue(Func.isSubtypeOf(Func));
-  Expect.isTrue(NumPred.isSubtypeOf(NumPred));
-  Expect.isTrue(IntPred.isSubtypeOf(IntPred));
-  Expect.isTrue(DubPred.isSubtypeOf(DubPred));
-
-  Expect.isTrue(NumPred.isSubtypeOf(Func));
-  Expect.isTrue(NumPred.isSubtypeOf(IntPred));
-  Expect.isTrue(NumPred.isSubtypeOf(DubPred));
-
-  Expect.isTrue(IntPred.isSubtypeOf(Func));
-  Expect.isTrue(IntPred.isSubtypeOf(NumPred));
-  Expect.isFalse(IntPred.isSubtypeOf(DubPred));
-
-  Expect.isTrue(DubPred.isSubtypeOf(Func));
-  Expect.isTrue(DubPred.isSubtypeOf(NumPred));
-  Expect.isFalse(DubPred.isSubtypeOf(IntPred));
-
-  Expect.isTrue(Func.isSubtypeOf(Obj));
-  Expect.isTrue(NumPred.isSubtypeOf(Obj));
-  Expect.isTrue(IntPred.isSubtypeOf(Obj));
-  Expect.isTrue(DubPred.isSubtypeOf(Obj));
-
-  // Function typedef - return type.
-  TypedefMirror NumGen = thisLibrary.declarations[#NumberGenerator];
-  TypedefMirror IntGen = thisLibrary.declarations[#IntegerGenerator];
-  TypedefMirror DubGen = thisLibrary.declarations[#DoubleGenerator];
-
-  Expect.isTrue(NumGen.isSubtypeOf(NumGen));
-  Expect.isTrue(IntGen.isSubtypeOf(IntGen));
-  Expect.isTrue(DubGen.isSubtypeOf(DubGen));
-
-  Expect.isTrue(NumGen.isSubtypeOf(Func));
-  Expect.isTrue(NumGen.isSubtypeOf(IntGen));
-  Expect.isTrue(NumGen.isSubtypeOf(DubGen));
-
-  Expect.isTrue(IntGen.isSubtypeOf(Func));
-  Expect.isTrue(IntGen.isSubtypeOf(NumGen));
-  Expect.isFalse(IntGen.isSubtypeOf(DubGen));
-
-  Expect.isTrue(DubGen.isSubtypeOf(Func));
-  Expect.isTrue(DubGen.isSubtypeOf(NumGen));
-  Expect.isFalse(DubGen.isSubtypeOf(IntGen));
-
-  Expect.isTrue(Func.isSubtypeOf(Obj));
-  Expect.isTrue(NumGen.isSubtypeOf(Obj));
-  Expect.isTrue(IntGen.isSubtypeOf(Obj));
-  Expect.isTrue(DubGen.isSubtypeOf(Obj));
-
-  // Function - argument type.
-  TypeMirror NumPredRef = NumPred.referent;
-  TypeMirror IntPredRef = IntPred.referent;
-  TypeMirror DubPredRef = DubPred.referent;
-
-  Expect.isTrue(Func.isSubtypeOf(Func));
-  Expect.isTrue(NumPredRef.isSubtypeOf(NumPredRef));
-  Expect.isTrue(IntPredRef.isSubtypeOf(IntPredRef));
-  Expect.isTrue(DubPredRef.isSubtypeOf(DubPredRef));
-
-  Expect.isTrue(NumPredRef.isSubtypeOf(Func));
-  Expect.isTrue(NumPredRef.isSubtypeOf(IntPredRef));
-  Expect.isTrue(NumPredRef.isSubtypeOf(DubPredRef));
-
-  Expect.isTrue(IntPredRef.isSubtypeOf(Func));
-  Expect.isTrue(IntPredRef.isSubtypeOf(NumPredRef));
-  Expect.isFalse(IntPredRef.isSubtypeOf(DubPredRef));
-
-  Expect.isTrue(DubPredRef.isSubtypeOf(Func));
-  Expect.isTrue(DubPredRef.isSubtypeOf(NumPredRef));
-  Expect.isFalse(DubPredRef.isSubtypeOf(IntPredRef));
-
-  Expect.isTrue(Func.isSubtypeOf(Obj));
-  Expect.isTrue(NumPredRef.isSubtypeOf(Obj));
-  Expect.isTrue(IntPredRef.isSubtypeOf(Obj));
-  Expect.isTrue(DubPredRef.isSubtypeOf(Obj));
-
-  // Function - return type.
-  TypeMirror NumGenRef = NumGen.referent;
-  TypeMirror IntGenRef = IntGen.referent;
-  TypeMirror DubGenRef = DubGen.referent;
-
-  Expect.isTrue(NumGenRef.isSubtypeOf(NumGenRef));
-  Expect.isTrue(IntGenRef.isSubtypeOf(IntGenRef));
-  Expect.isTrue(DubGenRef.isSubtypeOf(DubGenRef));
-
-  Expect.isTrue(NumGenRef.isSubtypeOf(Func));
-  Expect.isTrue(NumGenRef.isSubtypeOf(IntGenRef));
-  Expect.isTrue(NumGenRef.isSubtypeOf(DubGenRef));
-
-  Expect.isTrue(IntGenRef.isSubtypeOf(Func));
-  Expect.isTrue(IntGenRef.isSubtypeOf(NumGenRef));
-  Expect.isFalse(IntGenRef.isSubtypeOf(DubGenRef));
-
-  Expect.isTrue(DubGenRef.isSubtypeOf(Func));
-  Expect.isTrue(DubGenRef.isSubtypeOf(NumGenRef));
-  Expect.isFalse(DubGenRef.isSubtypeOf(IntGenRef));
-
-  Expect.isTrue(Func.isSubtypeOf(Obj));
-  Expect.isTrue(NumGenRef.isSubtypeOf(Obj));
-  Expect.isTrue(IntGenRef.isSubtypeOf(Obj));
-  Expect.isTrue(DubGenRef.isSubtypeOf(Obj));
-
-  // Function typedef / function.
-  Expect.isTrue(NumPred.isSubtypeOf(NumPredRef));
-  Expect.isTrue(IntPred.isSubtypeOf(IntPredRef));
-  Expect.isTrue(DubPred.isSubtypeOf(DubPredRef));
-  Expect.isTrue(NumPredRef.isSubtypeOf(NumPred));
-  Expect.isTrue(IntPredRef.isSubtypeOf(IntPred));
-  Expect.isTrue(DubPredRef.isSubtypeOf(DubPred));
-
-  // Function typedef / function.
-  Expect.isTrue(NumGen.isSubtypeOf(NumGenRef));
-  Expect.isTrue(IntGen.isSubtypeOf(IntGenRef));
-  Expect.isTrue(DubGen.isSubtypeOf(DubGenRef));
-  Expect.isTrue(NumGenRef.isSubtypeOf(NumGen));
-  Expect.isTrue(IntGenRef.isSubtypeOf(IntGen));
-  Expect.isTrue(DubGenRef.isSubtypeOf(DubGen));
-
-  // Type variable.
-  TypeMirror TFromA =
-      (thisLibrary.declarations[#A] as ClassMirror).typeVariables.single;
-  TypeMirror TFromB =
-      (thisLibrary.declarations[#B] as ClassMirror).typeVariables.single;
-  TypeMirror TFromC =
-      (thisLibrary.declarations[#C] as ClassMirror).typeVariables.single;
-
-  Expect.isTrue(TFromA.isSubtypeOf(TFromA));
-  Expect.isTrue(TFromB.isSubtypeOf(TFromB));
-  Expect.isTrue(TFromC.isSubtypeOf(TFromC));
-
-  Expect.isFalse(TFromA.isSubtypeOf(TFromB));
-  Expect.isFalse(TFromA.isSubtypeOf(TFromC));
-  Expect.isFalse(TFromB.isSubtypeOf(TFromA));
-  Expect.isFalse(TFromB.isSubtypeOf(TFromC));
-  Expect.isFalse(TFromC.isSubtypeOf(TFromA));
-  Expect.isFalse(TFromC.isSubtypeOf(TFromB));
-
-  TypeMirror Num = coreLibrary.declarations[#num];
-  Expect.isTrue(TFromC.isSubtypeOf(Num));
-  Expect.isFalse(Num.isSubtypeOf(TFromC));
-
-  // dynamic & void.
-  TypeMirror Dynamic = mirrors.dynamicType;
-  Expect.isTrue(Dynamic.isSubtypeOf(Dynamic));
-  Expect.isTrue(Obj.isSubtypeOf(Dynamic));
-  Expect.isTrue(Super.isSubtypeOf(Dynamic));
-  Expect.isTrue(Sub1.isSubtypeOf(Dynamic));
-  Expect.isTrue(Sub2.isSubtypeOf(Dynamic));
-  Expect.isTrue(NumPred.isSubtypeOf(Dynamic));
-  Expect.isTrue(IntPred.isSubtypeOf(Dynamic));
-  Expect.isTrue(DubPred.isSubtypeOf(Dynamic));
-  Expect.isTrue(NumPredRef.isSubtypeOf(Dynamic));
-  Expect.isTrue(IntPredRef.isSubtypeOf(Dynamic));
-  Expect.isTrue(DubPredRef.isSubtypeOf(Dynamic));
-  Expect.isTrue(NumGen.isSubtypeOf(Dynamic));
-  Expect.isTrue(IntGen.isSubtypeOf(Dynamic));
-  Expect.isTrue(DubGen.isSubtypeOf(Dynamic));
-  Expect.isTrue(NumGenRef.isSubtypeOf(Dynamic));
-  Expect.isTrue(IntGenRef.isSubtypeOf(Dynamic));
-  Expect.isTrue(DubGenRef.isSubtypeOf(Dynamic));
-  Expect.isTrue(TFromA.isSubtypeOf(Dynamic));
-  Expect.isTrue(TFromB.isSubtypeOf(Dynamic));
-  Expect.isTrue(TFromC.isSubtypeOf(Dynamic));
-  Expect.isTrue(Dynamic.isSubtypeOf(Obj));
-  Expect.isTrue(Dynamic.isSubtypeOf(Super));
-  Expect.isTrue(Dynamic.isSubtypeOf(Sub1));
-  Expect.isTrue(Dynamic.isSubtypeOf(Sub2));
-  Expect.isTrue(Dynamic.isSubtypeOf(NumPred));
-  Expect.isTrue(Dynamic.isSubtypeOf(IntPred));
-  Expect.isTrue(Dynamic.isSubtypeOf(DubPred));
-  Expect.isTrue(Dynamic.isSubtypeOf(NumPredRef));
-  Expect.isTrue(Dynamic.isSubtypeOf(IntPredRef));
-  Expect.isTrue(Dynamic.isSubtypeOf(DubPredRef));
-  Expect.isTrue(Dynamic.isSubtypeOf(NumGen));
-  Expect.isTrue(Dynamic.isSubtypeOf(IntGen));
-  Expect.isTrue(Dynamic.isSubtypeOf(DubGen));
-  Expect.isTrue(Dynamic.isSubtypeOf(NumGenRef));
-  Expect.isTrue(Dynamic.isSubtypeOf(IntGenRef));
-  Expect.isTrue(Dynamic.isSubtypeOf(DubGenRef));
-  Expect.isTrue(Dynamic.isSubtypeOf(TFromA));
-  Expect.isTrue(Dynamic.isSubtypeOf(TFromB));
-  Expect.isTrue(Dynamic.isSubtypeOf(TFromC));
-
-  TypeMirror Void = mirrors.voidType;
-  Expect.isTrue(Void.isSubtypeOf(Void));
-  Expect.isFalse(Obj.isSubtypeOf(Void));
-  Expect.isFalse(Super.isSubtypeOf(Void));
-  Expect.isFalse(Sub1.isSubtypeOf(Void));
-  Expect.isFalse(Sub2.isSubtypeOf(Void));
-  Expect.isFalse(NumPred.isSubtypeOf(Void));
-  Expect.isFalse(IntPred.isSubtypeOf(Void));
-  Expect.isFalse(DubPred.isSubtypeOf(Void));
-  Expect.isFalse(NumPredRef.isSubtypeOf(Void));
-  Expect.isFalse(IntPredRef.isSubtypeOf(Void));
-  Expect.isFalse(DubPredRef.isSubtypeOf(Void));
-  Expect.isFalse(NumGen.isSubtypeOf(Void));
-  Expect.isFalse(IntGen.isSubtypeOf(Void));
-  Expect.isFalse(DubGen.isSubtypeOf(Void));
-  Expect.isFalse(NumGenRef.isSubtypeOf(Void));
-  Expect.isFalse(IntGenRef.isSubtypeOf(Void));
-  Expect.isFalse(DubGenRef.isSubtypeOf(Void));
-  Expect.isFalse(TFromA.isSubtypeOf(Void));
-  Expect.isFalse(TFromB.isSubtypeOf(Void));
-  Expect.isFalse(TFromC.isSubtypeOf(Void));
-  Expect.isFalse(Void.isSubtypeOf(Obj));
-  Expect.isFalse(Void.isSubtypeOf(Super));
-  Expect.isFalse(Void.isSubtypeOf(Sub1));
-  Expect.isFalse(Void.isSubtypeOf(Sub2));
-  Expect.isFalse(Void.isSubtypeOf(NumPred));
-  Expect.isFalse(Void.isSubtypeOf(IntPred));
-  Expect.isFalse(Void.isSubtypeOf(DubPred));
-  Expect.isFalse(Void.isSubtypeOf(NumPredRef));
-  Expect.isFalse(Void.isSubtypeOf(IntPredRef));
-  Expect.isFalse(Void.isSubtypeOf(DubPredRef));
-  Expect.isFalse(Void.isSubtypeOf(NumGen));
-  Expect.isFalse(Void.isSubtypeOf(IntGen));
-  Expect.isFalse(Void.isSubtypeOf(DubGen));
-  Expect.isFalse(Void.isSubtypeOf(NumGenRef));
-  Expect.isFalse(Void.isSubtypeOf(IntGenRef));
-  Expect.isFalse(Void.isSubtypeOf(DubGenRef));
-  Expect.isFalse(Void.isSubtypeOf(TFromA));
-  Expect.isFalse(Void.isSubtypeOf(TFromB));
-  Expect.isFalse(Void.isSubtypeOf(TFromC));
-
-  Expect.isTrue(Dynamic.isSubtypeOf(Void));
-  Expect.isTrue(Void.isSubtypeOf(Dynamic));
-}
-
-main() {
-  test(currentMirrorSystem());
-}
diff --git a/tests/lib/mirrors/removed_api_test.dart b/tests/lib/mirrors/removed_api_test.dart
deleted file mode 100644
index 6c44b38..0000000
--- a/tests/lib/mirrors/removed_api_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class C {}
-
-expectThrowsNSM(f) {
-  Expect.throws(f, (e) => e is NoSuchMethodError);
-}
-
-main() {
-  expectThrowsNSM(() => reflectClass(C).newInstanceAsync(const Symbol(''), []));
-  expectThrowsNSM(() => reflect(() => 3).applyAsync([]));
-
-  expectThrowsNSM(() => reflectClass(C).owner.members);
-  expectThrowsNSM(() => reflectClass(C).owner.classes);
-  expectThrowsNSM(() => reflectClass(C).owner.types);
-  expectThrowsNSM(() => reflectClass(C).owner.functions);
-  expectThrowsNSM(() => reflectClass(C).owners.getters);
-  expectThrowsNSM(() => reflectClass(C).owners.setters);
-  expectThrowsNSM(() => reflectClass(C).owners.variables);
-
-  expectThrowsNSM(() => reflectClass(C).members);
-  expectThrowsNSM(() => reflectClass(C).methods);
-  expectThrowsNSM(() => reflectClass(C).getters);
-  expectThrowsNSM(() => reflectClass(C).setters);
-  expectThrowsNSM(() => reflectClass(C).variables);
-  expectThrowsNSM(() => reflectClass(C).constructors);
-
-  expectThrowsNSM(() => MirroredError);
-  expectThrowsNSM(() => MirrorException);
-  expectThrowsNSM(() => MirroredUncaughtExceptionError);
-  expectThrowsNSM(() => MirroredCompilationError);
-}
diff --git a/tests/lib/mirrors/repeated_private_anon_mixin_app1.dart b/tests/lib/mirrors/repeated_private_anon_mixin_app1.dart
deleted file mode 100644
index 7519844..0000000
--- a/tests/lib/mirrors/repeated_private_anon_mixin_app1.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-class _S {}
-
-class _M {}
-
-class _M2 {}
-
-class MA extends _S with _M {}
-
-class MA2 extends _S with _M, _M2 {}
diff --git a/tests/lib/mirrors/repeated_private_anon_mixin_app2.dart b/tests/lib/mirrors/repeated_private_anon_mixin_app2.dart
deleted file mode 100644
index 7519844..0000000
--- a/tests/lib/mirrors/repeated_private_anon_mixin_app2.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-class _S {}
-
-class _M {}
-
-class _M2 {}
-
-class MA extends _S with _M {}
-
-class MA2 extends _S with _M, _M2 {}
diff --git a/tests/lib/mirrors/repeated_private_anon_mixin_app_test.dart b/tests/lib/mirrors/repeated_private_anon_mixin_app_test.dart
deleted file mode 100644
index 49146ac..0000000
--- a/tests/lib/mirrors/repeated_private_anon_mixin_app_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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 test.repeated_private_anon_mixin_app;
-
-// Regression test for symbol mangling.
-
-@MirrorsUsed(targets: "test.repeated_private_anon_mixin_app")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'repeated_private_anon_mixin_app1.dart' as lib1;
-import 'repeated_private_anon_mixin_app2.dart' as lib2;
-
-testMA() {
-  Symbol name1 = reflectClass(lib1.MA).superclass.simpleName;
-  Symbol name2 = reflectClass(lib2.MA).superclass.simpleName;
-
-  Expect.equals('lib._S with lib._M', MirrorSystem.getName(name1));
-  Expect.equals('lib._S with lib._M', MirrorSystem.getName(name2));
-
-  Expect.notEquals(name1, name2);
-  Expect.notEquals(name2, name1);
-}
-
-testMA2() {
-  Symbol name1 = reflectClass(lib1.MA2).superclass.simpleName;
-  Symbol name2 = reflectClass(lib2.MA2).superclass.simpleName;
-
-  Expect.equals('lib._S with lib._M, lib._M2', MirrorSystem.getName(name1));
-  Expect.equals('lib._S with lib._M, lib._M2', MirrorSystem.getName(name2));
-
-  Expect.notEquals(name1, name2);
-  Expect.notEquals(name2, name1);
-}
-
-main() {
-  testMA();
-  testMA2();
-}
diff --git a/tests/lib/mirrors/return_type_test.dart b/tests/lib/mirrors/return_type_test.dart
deleted file mode 100644
index e7e3c5e..0000000
--- a/tests/lib/mirrors/return_type_test.dart
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// Test of [MethodMirror.returnType].
-library test.return_type_test;
-
-@MirrorsUsed(targets: 'test.return_type_test', override: '*')
-import 'dart:mirrors';
-
-import 'stringify.dart';
-
-class B {
-  f() {}
-  int g() {}
-  List h() {}
-  B i() {}
-
-  // TODO(ahe): Test this when dart2js handles parameterized types.
-  // List<int> j() {}
-}
-
-methodsOf(ClassMirror cm) {
-  var result = new Map();
-  cm.declarations.forEach((k, v) {
-    if (v is MethodMirror && v.isRegularMethod) result[k] = v;
-  });
-  return result;
-}
-
-main() {
-  var methods = methodsOf(reflectClass(B));
-
-  expect(
-      '{f: Method(s(f) in s(B)), '
-      'g: Method(s(g) in s(B)), '
-      'h: Method(s(h) in s(B)), '
-      'i: Method(s(i) in s(B))}',
-      methods);
-
-  var f = methods[#f];
-  var g = methods[#g];
-  var h = methods[#h];
-  var i = methods[#i];
-
-  expect('Type(s(dynamic), top-level)', f.returnType);
-  expect('Class(s(int) in s(dart.core), top-level)', g.returnType);
-  expect('Class(s(List) in s(dart.core), top-level)', h.returnType);
-  expect('Class(s(B) in s(test.return_type_test), top-level)', i.returnType);
-}
diff --git a/tests/lib/mirrors/runtime_type_test.dart b/tests/lib/mirrors/runtime_type_test.dart
deleted file mode 100644
index fd446d3..0000000
--- a/tests/lib/mirrors/runtime_type_test.dart
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 2014, 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 test.runtime_type_test;
-
-@MirrorsUsed(targets: 'test.runtime_type_test', override: '*')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class A {}
-
-class B {
-  get runtimeType => A;
-}
-
-main() {
-  Expect.equals(reflect(new B()).type, reflectClass(B));
-}
diff --git a/tests/lib/mirrors/set_field_with_final_inheritance_test.dart b/tests/lib/mirrors/set_field_with_final_inheritance_test.dart
deleted file mode 100644
index ca16723..0000000
--- a/tests/lib/mirrors/set_field_with_final_inheritance_test.dart
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright (c) 2013, 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 test.set_field_with_final_inheritance;
-
-@MirrorsUsed(targets: "test.set_field_with_final_inheritance")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class S {
-  var sideEffect = 0;
-
-  var mutableWithInheritedMutable = 1;
-  final mutableWithInheritedFinal = 2;
-  set mutableWithInheritedSetter(x) => sideEffect = 3;
-
-  var finalWithInheritedMutable = 4;
-  final finalWithInheritedFinal = 5;
-  set finalWithInheritedSetter(x) => sideEffect = 6;
-
-  var setterWithInheritedMutable = 7;
-  final setterWithInheritedFinal = 8;
-  set setterWithInheritedSetter(x) => sideEffect = 9;
-}
-
-class C extends S {
-  var mutableWithInheritedMutable = 10;
-  var mutableWithInheritedFinal = 11;
-  var mutableWithInheritedSetter = 12;
-
-  final finalWithInheritedMutable = 13;
-  final finalWithInheritedFinal = 14;
-  final finalWithInheritedSetter = 15;
-
-  set setterWithInheritedMutable(x) => sideEffect = 16;
-  set setterWithInheritedFinal(x) => sideEffect = 17;
-  set setterWithInheritedSetter(x) => sideEffect = 18;
-
-  get superMutableWithInheritedMutable => super.mutableWithInheritedMutable;
-  get superMutableWithInheritedFinal => super.mutableWithInheritedFinal;
-
-  get superFinalWithInheritedMutable => super.finalWithInheritedMutable;
-  get superFinalWithInheritedFinal => super.finalWithInheritedFinal;
-
-  get superSetterWithInheritedMutable => super.setterWithInheritedMutable;
-  get superSetterWithInheritedFinal => super.setterWithInheritedFinal;
-}
-
-main() {
-  C c;
-  InstanceMirror im;
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(19, im.setField(#mutableWithInheritedMutable, 19).reflectee);
-  Expect.equals(19, c.mutableWithInheritedMutable);
-  Expect.equals(1, c.superMutableWithInheritedMutable);
-  Expect.equals(0, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(20, im.setField(#mutableWithInheritedFinal, 20).reflectee);
-  Expect.equals(20, c.mutableWithInheritedFinal);
-  Expect.equals(2, c.superMutableWithInheritedFinal);
-  Expect.equals(0, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(21, im.setField(#mutableWithInheritedSetter, 21).reflectee);
-  Expect.equals(21, c.mutableWithInheritedSetter);
-  Expect.equals(0, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(22, im.setField(#finalWithInheritedMutable, 22).reflectee);
-  Expect.equals(13, c.finalWithInheritedMutable);
-  Expect.equals(22, c.superFinalWithInheritedMutable);
-  Expect.equals(0, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.throws(() => im.setField(#finalWithInheritedFinal, 23),
-      (e) => e is NoSuchMethodError);
-  Expect.equals(14, c.finalWithInheritedFinal);
-  Expect.equals(5, c.superFinalWithInheritedFinal);
-  Expect.equals(0, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(24, im.setField(#finalWithInheritedSetter, 24).reflectee);
-  Expect.equals(15, c.finalWithInheritedSetter);
-  Expect.equals(6, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(25, im.setField(#setterWithInheritedMutable, 25).reflectee);
-  Expect.equals(7, c.setterWithInheritedMutable);
-  Expect.equals(7, c.superSetterWithInheritedMutable);
-  Expect.equals(16, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(26, im.setField(#setterWithInheritedFinal, 26).reflectee);
-  Expect.equals(8, c.setterWithInheritedFinal);
-  Expect.equals(8, c.superSetterWithInheritedFinal);
-  Expect.equals(17, c.sideEffect);
-
-  c = new C();
-  im = reflect(c);
-  Expect.equals(27, im.setField(#setterWithInheritedSetter, 27).reflectee);
-  Expect.equals(18, c.sideEffect);
-}
diff --git a/tests/lib/mirrors/set_field_with_final_test.dart b/tests/lib/mirrors/set_field_with_final_test.dart
deleted file mode 100644
index bca34d6..0000000
--- a/tests/lib/mirrors/set_field_with_final_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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 test.set_field_with_final;
-
-@MirrorsUsed(targets: "test.set_field_with_final")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class C {
-  final instanceField = 1;
-  get instanceGetter => 2;
-  static final staticFinal = 3;
-  static get staticGetter => 4;
-}
-
-final toplevelFinal = 5;
-get toplevelGetter => 6;
-
-main() {
-  InstanceMirror im = reflect(new C());
-  Expect.throws(
-      () => im.setField(#instanceField, 7), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => im.setField(#instanceGetter, 8), (e) => e is NoSuchMethodError);
-
-  ClassMirror cm = im.type;
-  Expect.throws(
-      () => cm.setField(#staticFinal, 9), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => cm.setField(#staticGetter, 10), (e) => e is NoSuchMethodError);
-
-  LibraryMirror lm = cm.owner;
-  Expect.throws(
-      () => lm.setField(#toplevelFinal, 11), (e) => e is NoSuchMethodError);
-  Expect.throws(
-      () => lm.setField(#toplevelGetter, 12), (e) => e is NoSuchMethodError);
-}
diff --git a/tests/lib/mirrors/spawn_function_root_library_test.dart b/tests/lib/mirrors/spawn_function_root_library_test.dart
deleted file mode 100644
index 158704e..0000000
--- a/tests/lib/mirrors/spawn_function_root_library_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2015, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-import 'dart:isolate';
-import 'package:expect/expect.dart';
-
-child(SendPort port) {
-  LibraryMirror root = currentMirrorSystem().isolate.rootLibrary;
-  Expect.isNotNull(root);
-  port.send(root.uri.toString());
-}
-
-main() {
-  var port;
-  port = new RawReceivePort((String childRootUri) {
-    LibraryMirror root = currentMirrorSystem().isolate.rootLibrary;
-    Expect.isNotNull(root);
-    Expect.equals(root.uri.toString(), childRootUri);
-    port.close();
-  });
-
-  Isolate.spawn(child, port.sendPort);
-}
diff --git a/tests/lib/mirrors/static_const_field_test.dart b/tests/lib/mirrors/static_const_field_test.dart
deleted file mode 100644
index f6fd959..0000000
--- a/tests/lib/mirrors/static_const_field_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that static const fields are accessible by reflection.
-// Regression test for http://dartbug.com/23811.
-
-@MirrorsUsed(targets: const [A])
-import "dart:mirrors";
-import "package:expect/expect.dart";
-
-class A {
-  static const ONE = 1;
-}
-
-main() {
-  Expect.equals(1, reflectClass(A).getField(#ONE).reflectee);
-}
diff --git a/tests/lib/mirrors/static_members_easier_test.dart b/tests/lib/mirrors/static_members_easier_test.dart
deleted file mode 100644
index 448564c..0000000
--- a/tests/lib/mirrors/static_members_easier_test.dart
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2013, 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 test.static_members;
-
-@MirrorsUsed(targets: "test.static_members")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'stringify.dart';
-import 'declarations_model_easier.dart' as declarations_model;
-
-selectKeys(map, predicate) {
-  return map.keys.where((key) => predicate(map[key]));
-}
-
-main() {
-  ClassMirror cm = reflectClass(declarations_model.Class);
-  LibraryMirror lm = cm.owner;
-
-  Expect.setEquals([
-    #staticVariable,
-    const Symbol('staticVariable='),
-    #staticGetter,
-    const Symbol('staticSetter='),
-    #staticMethod,
-  ], selectKeys(cm.staticMembers, (dm) => true));
-
-  Expect.setEquals([#staticVariable, const Symbol('staticVariable=')],
-      selectKeys(cm.staticMembers, (dm) => dm.isSynthetic));
-}
diff --git a/tests/lib/mirrors/static_members_test.dart b/tests/lib/mirrors/static_members_test.dart
deleted file mode 100644
index 290d8f3..0000000
--- a/tests/lib/mirrors/static_members_test.dart
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (c) 2013, 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 test.static_members;
-
-@MirrorsUsed(targets: "test.static_members")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'stringify.dart';
-import 'declarations_model.dart' as declarations_model;
-
-selectKeys(map, predicate) {
-  return map.keys.where((key) => predicate(map[key]));
-}
-
-main() {
-  ClassMirror cm = reflectClass(declarations_model.Class);
-  LibraryMirror lm = cm.owner;
-
-  Expect.setEquals([
-    #staticVariable,
-    const Symbol('staticVariable='),
-    #staticGetter,
-    const Symbol('staticSetter='),
-    #staticMethod,
-    MirrorSystem.getSymbol('_staticVariable', lm),
-    MirrorSystem.getSymbol('_staticVariable=', lm),
-    MirrorSystem.getSymbol('_staticGetter', lm),
-    MirrorSystem.getSymbol('_staticSetter=', lm),
-    MirrorSystem.getSymbol('_staticMethod', lm),
-  ], selectKeys(cm.staticMembers, (dm) => true));
-
-  Expect.setEquals([
-    #staticVariable,
-    const Symbol('staticVariable='),
-    MirrorSystem.getSymbol('_staticVariable', lm),
-    MirrorSystem.getSymbol('_staticVariable=', lm)
-  ], selectKeys(cm.staticMembers, (dm) => dm.isSynthetic));
-}
diff --git a/tests/lib/mirrors/static_metatarget_test.dart b/tests/lib/mirrors/static_metatarget_test.dart
deleted file mode 100644
index f653e2c..0000000
--- a/tests/lib/mirrors/static_metatarget_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for the combined use of metatargets and static fields with
-// annotations.
-
-@MirrorsUsed(metaTargets: const [Reflectable])
-import 'dart:mirrors';
-
-class A {
-  @reflectable var reflectableField = 0; //# 01: ok
-
-  @UsedOnlyAsMetadata() var unreflectableField = 1; //# 02: ok
-
-  @reflectable static var reflectableStaticField = 2; //# 03: ok
-
-  @UsedOnlyAsMetadata()
-  static var unreflectableStaticField = 3;
-}
-
-class Reflectable {
-  const Reflectable();
-}
-
-const Reflectable reflectable = const Reflectable();
-
-class UsedOnlyAsMetadata {
-  const UsedOnlyAsMetadata();
-}
-
-void main() {
-  print(new A());
-}
diff --git a/tests/lib/mirrors/static_test.dart b/tests/lib/mirrors/static_test.dart
deleted file mode 100644
index 30bc0ad..0000000
--- a/tests/lib/mirrors/static_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test static members.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-import 'stringify.dart';
-
-class Foo {
-  static String bar = '...';
-  String aux = '';
-  static foo() {}
-  baz() {}
-}
-
-void main() {
-  expect('Variable(s(aux) in s(Foo))',
-      reflectClass(Foo).declarations[new Symbol('aux')]);
-  expect('Method(s(baz) in s(Foo))',
-      reflectClass(Foo).declarations[new Symbol('baz')]);
-  expect('<null>', reflectClass(Foo).declarations[new Symbol('aux=')]);
-  expect('Method(s(foo) in s(Foo), static)',
-      reflectClass(Foo).declarations[new Symbol('foo')]);
-  expect('Variable(s(bar) in s(Foo), static)',
-      reflectClass(Foo).declarations[new Symbol('bar')]);
-}
diff --git a/tests/lib/mirrors/stringify.dart b/tests/lib/mirrors/stringify.dart
deleted file mode 100644
index 9047c9a..0000000
--- a/tests/lib/mirrors/stringify.dart
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright (c) 2013, 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.
-
-/// Helper methods for converting a [Mirror] to a [String].
-library test.stringify;
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-name(DeclarationMirror mirror) {
-  return (mirror == null) ? '<null>' : stringify(mirror.simpleName);
-}
-
-stringifyMap(Map map) {
-  var buffer = new StringBuffer();
-  bool first = true;
-  for (String key in map.keys.map(MirrorSystem.getName).toList()..sort()) {
-    if (!first) buffer.write(', ');
-    first = false;
-    buffer.write(key);
-    buffer.write(': ');
-    buffer.write(stringify(map[new Symbol(key)]));
-  }
-  return '{$buffer}';
-}
-
-stringifyIterable(Iterable list) {
-  var buffer = new StringBuffer();
-  bool first = true;
-  for (String value in list.map(stringify)) {
-    if (!first) buffer.write(', ');
-    first = false;
-    buffer.write(value);
-  }
-  return '[$buffer]';
-}
-
-stringifyInstance(InstanceMirror instance) {
-  var buffer = new StringBuffer();
-  if (instance.hasReflectee) {
-    buffer.write('value = ${stringify(instance.reflectee)}');
-  }
-  return 'Instance(${buffer})';
-}
-
-stringifySymbol(Symbol symbol) => 's(${MirrorSystem.getName(symbol)})';
-
-writeDeclarationOn(DeclarationMirror mirror, StringBuffer buffer) {
-  buffer.write(stringify(mirror.simpleName));
-  if (mirror.owner != null) {
-    buffer.write(' in ');
-    buffer.write(name(mirror.owner));
-  }
-  if (mirror.isPrivate) buffer.write(', private');
-  if (mirror.isTopLevel) buffer.write(', top-level');
-}
-
-writeVariableOn(VariableMirror variable, StringBuffer buffer) {
-  writeDeclarationOn(variable, buffer);
-  if (variable.isStatic) buffer.write(', static');
-  if (variable.isFinal) buffer.write(', final');
-}
-
-stringifyVariable(VariableMirror variable) {
-  var buffer = new StringBuffer();
-  writeVariableOn(variable, buffer);
-  return 'Variable($buffer)';
-}
-
-stringifyParameter(ParameterMirror parameter) {
-  var buffer = new StringBuffer();
-  writeVariableOn(parameter, buffer);
-  if (parameter.isOptional) buffer.write(', optional');
-  if (parameter.isNamed) buffer.write(', named');
-  // TODO(6490): dart2js always returns false for hasDefaultValue.
-  if (parameter.hasDefaultValue) {
-    buffer.write(', value = ${stringify(parameter.defaultValue)}');
-  }
-  // TODO(ahe): Move to writeVariableOn.
-  buffer.write(', type = ${stringify(parameter.type)}');
-  return 'Parameter($buffer)';
-}
-
-stringifyTypeVariable(TypeVariableMirror typeVariable) {
-  var buffer = new StringBuffer();
-  writeDeclarationOn(typeVariable, buffer);
-  buffer.write(', upperBound = ${stringify(typeVariable.upperBound)}');
-  return 'TypeVariable($buffer)';
-}
-
-stringifyType(TypeMirror type) {
-  var buffer = new StringBuffer();
-  writeDeclarationOn(type, buffer);
-  return 'Type($buffer)';
-}
-
-stringifyClass(ClassMirror cls) {
-  var buffer = new StringBuffer();
-  writeDeclarationOn(cls, buffer);
-  return 'Class($buffer)';
-}
-
-stringifyMethod(MethodMirror method) {
-  var buffer = new StringBuffer();
-  writeDeclarationOn(method, buffer);
-  if (method.isAbstract) buffer.write(', abstract');
-  if (method.isSynthetic) buffer.write(', synthetic');
-  if (method.isStatic) buffer.write(', static');
-  if (method.isGetter) buffer.write(', getter');
-  if (method.isSetter) buffer.write(', setter');
-  if (method.isConstructor) buffer.write(', constructor');
-  return 'Method($buffer)';
-}
-
-stringifyDependencies(LibraryMirror l) {
-  n(s) => s is Symbol ? MirrorSystem.getName(s) : s;
-  compareDep(a, b) {
-    if (a.targetLibrary == b.targetLibrary) {
-      if ((a.prefix != null) && (b.prefix != null)) {
-        return n(a.prefix).compareTo(n(b.prefix));
-      }
-      return a.prefix == null ? 1 : -1;
-    }
-    return n(a.targetLibrary.simpleName)
-        .compareTo(n(b.targetLibrary.simpleName));
-  }
-
-  compareCom(a, b) => n(a.identifier).compareTo(n(b.identifier));
-  compareFirst(a, b) => a[0].compareTo(b[0]);
-  sortBy(c, p) => new List.from(c)..sort(p);
-
-  var buffer = new StringBuffer();
-  sortBy(l.libraryDependencies, compareDep).forEach((dep) {
-    if (dep.isImport) buffer.write('import ');
-    if (dep.isExport) buffer.write('export ');
-    buffer.write(n(dep.targetLibrary.simpleName));
-    if (dep.isDeferred) buffer.write(' deferred');
-    if (dep.prefix != null) buffer.write(' as ${n(dep.prefix)}');
-    buffer.write('\n');
-
-    List flattenedCombinators = new List();
-    dep.combinators.forEach((com) {
-      com.identifiers.forEach((ident) {
-        flattenedCombinators.add([n(ident), com.isShow, com.isHide]);
-      });
-    });
-    sortBy(flattenedCombinators, compareFirst).forEach((triple) {
-      buffer.write(' ');
-      if (triple[1]) buffer.write('show ');
-      if (triple[2]) buffer.write('hide ');
-      buffer.write(triple[0]);
-      buffer.write('\n');
-    });
-  });
-  return buffer.toString();
-}
-
-stringify(value) {
-  if (value is Map) return stringifyMap(value);
-  if (value is Iterable) return stringifyIterable(value);
-  if (value is InstanceMirror) return stringifyInstance(value);
-  if (value is ParameterMirror) return stringifyParameter(value);
-  if (value is VariableMirror) return stringifyVariable(value);
-  if (value is MethodMirror) return stringifyMethod(value);
-  if (value is num) return value.toString();
-  if (value is String) return value;
-  if (value is Symbol) return stringifySymbol(value);
-  if (value is ClassMirror) return stringifyClass(value);
-  if (value is TypeVariableMirror) return stringifyTypeVariable(value);
-  if (value is TypeMirror) return stringifyType(value);
-  if (value == null) return '<null>';
-  throw 'Unexpected value: $value';
-}
-
-expect(expected, actual, [String reason]) {
-  Expect.stringEquals(expected, stringify(actual), reason);
-}
-
-compareSymbols(Symbol a, Symbol b) {
-  return MirrorSystem.getName(a).compareTo(MirrorSystem.getName(b));
-}
-
-simpleNames(Iterable<Mirror> i) => i.map((e) => e.simpleName);
-
-sort(Iterable<Symbol> symbols) => symbols.toList()..sort(compareSymbols);
diff --git a/tests/lib/mirrors/superclass2_test.dart b/tests/lib/mirrors/superclass2_test.dart
deleted file mode 100644
index 8a9ec39..0000000
--- a/tests/lib/mirrors/superclass2_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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 test.superclass;
-
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-checkSuperclassChain(ClassMirror cm) {
-  ClassMirror last;
-  do {
-    last = cm;
-    cm = cm.superclass;
-  } while (cm != null);
-  Expect.equals(reflectClass(Object), last);
-}
-
-main() {
-  checkSuperclassChain(reflect(null).type);
-  checkSuperclassChain(reflect([]).type);
-  checkSuperclassChain(reflect(<int>[]).type);
-  checkSuperclassChain(reflect(0).type);
-  checkSuperclassChain(reflect(1.5).type);
-  checkSuperclassChain(reflect("str").type);
-  checkSuperclassChain(reflect(true).type);
-  checkSuperclassChain(reflect(false).type);
-}
diff --git a/tests/lib/mirrors/superclass_test.dart b/tests/lib/mirrors/superclass_test.dart
deleted file mode 100644
index 5581b6a..0000000
--- a/tests/lib/mirrors/superclass_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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 test.superclass;
-
-@MirrorsUsed(targets: "test.superclass")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-class MyClass {}
-
-main() {
-  var cls = reflectClass(MyClass);
-  Expect.isNotNull(cls, 'Failed to reflect on MyClass.');
-  var superclass = cls.superclass;
-  Expect.isNotNull(superclass, 'Failed to obtain superclass of MyClass.');
-  Expect.equals(
-      reflectClass(Object), superclass, 'Superclass of MyClass is not Object.');
-  Expect.isNull(superclass.superclass, 'Superclass of Object is not null.');
-}
diff --git a/tests/lib/mirrors/symbol_validation_test.dart b/tests/lib/mirrors/symbol_validation_test.dart
deleted file mode 100644
index 806627e..0000000
--- a/tests/lib/mirrors/symbol_validation_test.dart
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright (c) 2013, 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 symbol_validation_test;
-
-@MirrorsUsed(targets: "symbol_validation_test")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-validSymbol(String string) {
-  Expect.equals(string, MirrorSystem.getName(new Symbol(string)),
-      'Valid symbol "$string" should be invertable');
-  Expect.equals(string, MirrorSystem.getName(MirrorSystem.getSymbol(string)),
-      'Valid symbol "$string" should be invertable');
-}
-
-invalidSymbol(String string) {
-  Expect.throws(() => new Symbol(string), (e) => e is ArgumentError,
-      'Invalid symbol "$string" should be rejected');
-  Expect.throws(() => MirrorSystem.getSymbol(string), (e) => e is ArgumentError,
-      'Invalid symbol "$string" should be rejected');
-}
-
-validPrivateSymbol(String string) {
-  ClosureMirror closure = reflect(main);
-  LibraryMirror library = closure.function.owner;
-  Expect.equals(
-      string,
-      MirrorSystem.getName(MirrorSystem.getSymbol(string, library)),
-      'Valid private symbol "$string" should be invertable');
-}
-
-main() {
-  // Operators that can be declared as class member operators.
-  // These are all valid as symbols.
-  var operators = [
-    '%',
-    '&',
-    '*',
-    '+',
-    '-',
-    '/',
-    '<',
-    '<<',
-    '<=',
-    '==',
-    '>',
-    '>=',
-    '>>',
-    '[]',
-    '[]=',
-    '^',
-    'unary-',
-    '|',
-    '~',
-    '~/'
-  ];
-  operators.expand((op) => [op, "x.$op"]).forEach(validSymbol);
-  operators
-      .expand((op) => [".$op", "$op.x", "x$op", "_x.$op"])
-      .forEach(invalidSymbol);
-  operators
-      .expand((op) => operators.contains("$op=") ? [] : ["x.$op=", "$op="])
-      .forEach(invalidSymbol);
-
-  var simpleSymbols = [
-    'foo',
-    'bar_',
-    'baz.quz',
-    'fisk1',
-    'hest2fisk',
-    'a.b.c.d.e',
-    r'$',
-    r'foo$',
-    r'bar$bar',
-    r'$.$',
-    r'x6$_',
-    r'$6_',
-    r'x.$$6_',
-    'x_',
-    'x_.x_',
-    'unary',
-    'x.unary'
-  ];
-  simpleSymbols.expand((s) => [s, "s="]).forEach(validSymbol);
-
-  var nonSymbols = [
-    // Non-identifiers.
-    '6', '0foo', ',', 'S with M', '_invalid&private', "#foo", " foo", "foo ",
-    // Operator variants.
-    '+=', '()', 'operator+', 'unary+', '>>>', "&&", "||", "!", "@", "#", "[",
-    // Private symbols.
-    '_', '_x', 'x._y', 'x._',
-    // Empty parts of "qualified" symbols.
-    '.', 'x.', '.x', 'x..y'
-  ];
-  nonSymbols.forEach(invalidSymbol);
-
-  // Reserved words are not valid identifiers and therefore not valid symbols.
-  var reservedWords = [
-    "assert",
-    "break",
-    "case",
-    "catch",
-    "class",
-    "const",
-    "continue",
-    "default",
-    "do",
-    "else",
-    "enum",
-    "extends",
-    "false",
-    "final",
-    "finally",
-    "for",
-    "if",
-    "in",
-    "is",
-    "new",
-    "null",
-    "rethrow",
-    "return",
-    "super",
-    "switch",
-    "this",
-    "throw",
-    "true",
-    "try",
-    "var",
-    "void",
-    "while",
-    "with"
-  ];
-  reservedWords
-      .expand((w) => [w, "$w=", "x.$w", "$w.x", "x.$w.x"])
-      .forEach(invalidSymbol);
-  reservedWords
-      .expand((w) => ["${w}_", "${w}\$", "${w}q"])
-      .forEach(validSymbol);
-
-  // Built-in identifiers are valid identifiers that are restricted from being
-  // used in some cases, but they are all valid symbols.
-  var builtInIdentifiers = [
-    "abstract",
-    "as",
-    "dynamic",
-    "export",
-    "external",
-    "factory",
-    "get",
-    "implements",
-    "import",
-    "library",
-    "operator",
-    "part",
-    "set",
-    "static",
-    "typedef"
-  ];
-  builtInIdentifiers
-      .expand((w) => [w, "$w=", "x.$w", "$w.x", "x.$w.x", "$w=", "x.$w="])
-      .forEach(validSymbol);
-
-  var privateSymbols = ['_', '_x', 'x._y', 'x._', 'x.y._', 'x._.y', '_true'];
-  privateSymbols.forEach(invalidSymbol);
-  privateSymbols.forEach(validPrivateSymbol); //  //# 01: ok
-}
diff --git a/tests/lib/mirrors/syntax_error_test.dart b/tests/lib/mirrors/syntax_error_test.dart
deleted file mode 100644
index 96d912e..0000000
--- a/tests/lib/mirrors/syntax_error_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test for Issue 15744
-// Also, tests that syntax errors in reflected classes are reported correctly.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-class MD {
-  final String name;
-  const MD({this.name});
-}
-
-@MD(name: 'A')
-class A {}
-
-@MD(name: 'B')
-class B {
-  static x = { 0: 0; }; // //# 01: compile-time error
-}
-
-main() {
-  reflectClass(A).metadata;
-  reflectClass(B).newInstance(const Symbol(''), []);
-}
diff --git a/tests/lib/mirrors/synthetic_accessor_properties_test.dart b/tests/lib/mirrors/synthetic_accessor_properties_test.dart
deleted file mode 100644
index ff6abf3..0000000
--- a/tests/lib/mirrors/synthetic_accessor_properties_test.dart
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright (c) 2013, 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 test.synthetic_accessor_properties;
-
-@MirrorsUsed(targets: "test.synthetic_accessor_properties")
-import 'dart:mirrors';
-import 'package:expect/expect.dart';
-
-import 'stringify.dart';
-
-class C {
-  String instanceField;
-  final num finalInstanceField = 2;
-
-  static bool staticField;
-  static final int finalStaticField = 4;
-}
-
-String topLevelField;
-final double finalTopLevelField = 6.0;
-
-main() {
-  ClassMirror cm = reflectClass(C);
-  LibraryMirror lm = cm.owner;
-  MethodMirror mm;
-  ParameterMirror pm;
-
-  mm = cm.instanceMembers[#instanceField];
-  expect('Method(s(instanceField) in s(C), synthetic, getter)', mm);
-  Expect.equals(reflectClass(String), mm.returnType);
-  Expect.listEquals([], mm.parameters);
-
-  mm = cm.instanceMembers[const Symbol('instanceField=')];
-  expect('Method(s(instanceField=) in s(C), synthetic, setter)', mm);
-  Expect.equals(reflectClass(String), mm.returnType);
-  pm = mm.parameters.single;
-  expect(
-      'Parameter(s(instanceField) in s(instanceField=), final,'
-      ' type = Class(s(String) in s(dart.core), top-level))',
-      pm);
-
-  mm = cm.instanceMembers[#finalInstanceField];
-  expect('Method(s(finalInstanceField) in s(C), synthetic, getter)', mm);
-  Expect.equals(reflectClass(num), mm.returnType);
-  Expect.listEquals([], mm.parameters);
-
-  mm = cm.instanceMembers[const Symbol('finalInstanceField=')];
-  Expect.isNull(mm);
-
-  mm = cm.staticMembers[#staticField];
-  expect('Method(s(staticField) in s(C), synthetic, static, getter)', mm);
-  Expect.equals(reflectClass(bool), mm.returnType);
-  Expect.listEquals([], mm.parameters);
-
-  mm = cm.staticMembers[const Symbol('staticField=')];
-  expect('Method(s(staticField=) in s(C), synthetic, static, setter)', mm);
-  Expect.equals(reflectClass(bool), mm.returnType);
-  pm = mm.parameters.single;
-  expect(
-      'Parameter(s(staticField) in s(staticField=), final,'
-      ' type = Class(s(bool) in s(dart.core), top-level))',
-      pm);
-
-  mm = cm.staticMembers[#finalStaticField];
-  expect('Method(s(finalStaticField) in s(C), synthetic, static, getter)', mm);
-  Expect.equals(reflectClass(int), mm.returnType);
-  Expect.listEquals([], mm.parameters);
-
-  mm = cm.staticMembers[const Symbol('finalStaticField=')];
-  Expect.isNull(mm);
-}
diff --git a/tests/lib/mirrors/to_string_test.dart b/tests/lib/mirrors/to_string_test.dart
deleted file mode 100644
index 7e08288..0000000
--- a/tests/lib/mirrors/to_string_test.dart
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) 2013, 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 test.to_string_test;
-
-@MirrorsUsed(targets: "test.to_string_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-expect(expected, actual) => Expect.stringEquals(expected, '$actual');
-
-class Foo {
-  var field;
-  method() {}
-}
-
-main() {
-  var mirrors = currentMirrorSystem();
-  expect("TypeMirror on 'dynamic'", mirrors.dynamicType);
-  expect("TypeMirror on 'void'", mirrors.voidType);
-  expect("LibraryMirror on 'test.to_string_test'",
-      mirrors.findLibrary(#test.to_string_test));
-  expect("InstanceMirror on 1", reflect(1));
-  expect("ClassMirror on 'Foo'", reflectClass(Foo));
-  expect("VariableMirror on 'field'", reflectClass(Foo).declarations[#field]);
-  expect("MethodMirror on 'method'", reflectClass(Foo).declarations[#method]);
-  String s = reflect(main).toString();
-  Expect.isTrue(s.startsWith("ClosureMirror on '"), s);
-}
diff --git a/tests/lib/mirrors/top_level_accessors_test.dart b/tests/lib/mirrors/top_level_accessors_test.dart
deleted file mode 100644
index 60ed5ad..0000000
--- a/tests/lib/mirrors/top_level_accessors_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-library test.top_level_accessors_test;
-
-@MirrorsUsed(targets: "test.top_level_accessors_test")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-var field;
-
-get accessor => field;
-
-set accessor(value) {
-  field = value;
-  return 'fisk';
-}
-
-main() {
-  LibraryMirror library =
-      currentMirrorSystem().findLibrary(#test.top_level_accessors_test);
-  field = 42;
-  Expect.equals(42, library.getField(#accessor).reflectee);
-  Expect.equals(87, library.setField(#accessor, 87).reflectee);
-  Expect.equals(87, field);
-  Expect.equals(87, library.getField(#accessor).reflectee);
-}
diff --git a/tests/lib/mirrors/type_argument_is_type_variable_test.dart b/tests/lib/mirrors/type_argument_is_type_variable_test.dart
deleted file mode 100644
index ba18900..0000000
--- a/tests/lib/mirrors/type_argument_is_type_variable_test.dart
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright (c) 2013, 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 test.type_argument_is_type_variable;
-
-@MirrorsUsed(targets: "test.type_argument_is_type_variable")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-import 'generics_helper.dart';
-
-class SuperSuper<SS> {}
-
-class Super<S> extends SuperSuper<S> {}
-
-class Generic<G> extends Super<G> {}
-
-main() {
-  // Declarations.
-  ClassMirror generic = reflectClass(Generic);
-  ClassMirror superOfGeneric = generic.superclass;
-  ClassMirror superOfSuperOfGeneric = superOfGeneric.superclass;
-
-  TypeVariableMirror gFromGeneric = generic.typeVariables.single;
-  TypeVariableMirror sFromSuper = superOfGeneric.typeVariables.single;
-  TypeVariableMirror ssFromSuperSuper =
-      superOfSuperOfGeneric.typeVariables.single;
-
-  Expect.equals(#G, gFromGeneric.simpleName);
-  Expect.equals(#S, sFromSuper.simpleName);
-  Expect.equals(#SS, ssFromSuperSuper.simpleName);
-
-  typeParameters(generic, [#G]);
-  typeParameters(superOfGeneric, [#S]);
-  typeParameters(superOfSuperOfGeneric, [#SS]);
-
-  typeArguments(generic, []);
-  typeArguments(superOfGeneric, [gFromGeneric]);
-  typeArguments(superOfSuperOfGeneric, [gFromGeneric]);
-
-  // Instantiations.
-  ClassMirror genericWithInt = reflect(new Generic<int>()).type;
-  ClassMirror superOfGenericWithInt = genericWithInt.superclass;
-  ClassMirror superOfSuperOfGenericWithInt = superOfGenericWithInt.superclass;
-
-  typeParameters(genericWithInt, [#G]);
-  typeParameters(superOfGenericWithInt, [#S]);
-  typeParameters(superOfSuperOfGenericWithInt, [#SS]);
-
-  typeArguments(genericWithInt, [reflectClass(int)]);
-  typeArguments(superOfGenericWithInt, [reflectClass(int)]);
-  typeArguments(superOfSuperOfGenericWithInt, [reflectClass(int)]);
-}
diff --git a/tests/lib/mirrors/type_mirror_for_type_test.dart b/tests/lib/mirrors/type_mirror_for_type_test.dart
deleted file mode 100644
index f90a740..0000000
--- a/tests/lib/mirrors/type_mirror_for_type_test.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Regression test for the dart2js implementation of runtime types.
-
-library test.type_mirror_for_type;
-
-import 'package:expect/expect.dart';
-
-@MirrorsUsed(targets: 'test.type_mirror_for_type')
-import 'dart:mirrors';
-
-class C<T> {}
-
-class X {
-  Type foo() {}
-}
-
-main() {
-  // Make sure that we need a type test against the runtime representation of
-  // [Type].
-  var a = (new DateTime.now().millisecondsSinceEpoch != 42)
-      ? new C<Type>()
-      : new C<int>();
-  print(a is C<Type>);
-
-  var typeMirror = reflectType(X);
-  var declarationMirror = typeMirror.declarations[#foo];
-  // Test that the runtime type implementation does not confuse the runtime type
-  // representation of [Type] with an actual value of type [Type] when analyzing
-  // the return type of [foo].
-  Expect.equals(reflectType(Type), declarationMirror.returnType);
-}
diff --git a/tests/lib/mirrors/type_variable_is_static_test.dart b/tests/lib/mirrors/type_variable_is_static_test.dart
deleted file mode 100644
index 05a4fd9..0000000
--- a/tests/lib/mirrors/type_variable_is_static_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2014, 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 test.type_variable_owner;
-
-@MirrorsUsed(targets: "test.type_variable_owner")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-class C<T> {}
-
-typedef bool Predicate<T>(T t);
-
-main() {
-  Expect.isFalse(reflectType(C).typeVariables.single.isStatic);
-  Expect.isFalse(reflectType(Predicate).typeVariables.single.isStatic);
-}
diff --git a/tests/lib/mirrors/type_variable_owner_test.dart b/tests/lib/mirrors/type_variable_owner_test.dart
deleted file mode 100644
index a647eab..0000000
--- a/tests/lib/mirrors/type_variable_owner_test.dart
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Owner of a type variable should be the declaration of the generic class or
-// typedef, not an instantiation.
-
-library test.type_variable_owner;
-
-@MirrorsUsed(targets: "test.type_variable_owner")
-import "dart:mirrors";
-
-import "package:expect/expect.dart";
-
-class A<T> {}
-
-class B<R> extends A<R> {}
-
-testTypeVariableOfClass() {
-  ClassMirror aDecl = reflectClass(A);
-  ClassMirror bDecl = reflectClass(B);
-  ClassMirror aOfInt = reflect(new A<int>()).type;
-  ClassMirror aOfR = bDecl.superclass;
-  ClassMirror bOfString = reflect(new B<String>()).type;
-  ClassMirror aOfString = bOfString.superclass;
-
-  Expect.equals(aDecl, aDecl.typeVariables[0].owner);
-  Expect.equals(aDecl, aOfInt.typeVariables[0].owner);
-  Expect.equals(aDecl, aOfR.typeVariables[0].owner);
-  Expect.equals(aDecl, aOfString.typeVariables[0].owner);
-
-  Expect.equals(bDecl, bDecl.typeVariables[0].owner);
-  Expect.equals(bDecl, bOfString.typeVariables[0].owner);
-}
-
-typedef bool Predicate<T>(T t);
-Predicate<List> somePredicateOfList;
-
-testTypeVariableOfTypedef() {
-  LibraryMirror thisLibrary =
-      currentMirrorSystem().findLibrary(#test.type_variable_owner);
-
-  TypedefMirror predicateOfDynamic = reflectType(Predicate);
-  TypedefMirror predicateOfList =
-      (thisLibrary.declarations[#somePredicateOfList] as VariableMirror).type;
-  TypedefMirror predicateDecl = predicateOfList.originalDeclaration;
-
-  Expect.equals(predicateDecl, predicateOfDynamic.typeVariables[0].owner);
-  Expect.equals(predicateDecl, predicateOfList.typeVariables[0].owner);
-  Expect.equals(predicateDecl, predicateDecl.typeVariables[0].owner);
-}
-
-main() {
-  testTypeVariableOfClass();
-  testTypeVariableOfTypedef(); // //# 01: ok
-}
diff --git a/tests/lib/mirrors/typearguments_mirror_test.dart b/tests/lib/mirrors/typearguments_mirror_test.dart
deleted file mode 100644
index 951704c..0000000
--- a/tests/lib/mirrors/typearguments_mirror_test.dart
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-class Foo<T> {}
-
-class Bar<T, R> {}
-
-main() {
-  var cm = reflectClass(Foo);
-  var cm1 = reflect((new Foo<String>())).type;
-
-  Expect.notEquals(cm, cm1);
-  Expect.isFalse(cm1.isOriginalDeclaration);
-  Expect.isTrue(cm.isOriginalDeclaration);
-
-  Expect.equals(cm, cm1.originalDeclaration);
-
-  Expect.equals(cm, reflectClass(Foo));
-  Expect.equals(cm, reflectClass((new Foo().runtimeType)));
-  Expect.equals(cm1, reflect(new Foo<String>()).type);
-
-  expect('[]', cm.typeArguments);
-  expect('[Class(s(String) in s(dart.core), top-level)]', cm1.typeArguments);
-
-  cm = reflect(new Bar<List, Set>()).type;
-  cm1 = reflect(new Bar<List, Set<String>>()).type;
-
-  var cm2 = reflect(new Bar<List<String>, Set>()).type;
-  var cm3 = reflect(new Bar<List<String>, Set<String>>()).type;
-
-  expect(
-      '[Class(s(List) in s(dart.core), top-level),'
-      ' Class(s(Set) in s(dart.core), top-level)]',
-      cm.typeArguments);
-  expect(
-      '[Class(s(List) in s(dart.core), top-level),'
-      ' Class(s(Set) in s(dart.core), top-level)]',
-      cm1.typeArguments);
-  expect(
-      '[Class(s(List) in s(dart.core), top-level),'
-      ' Class(s(Set) in s(dart.core), top-level)]',
-      cm2.typeArguments);
-  expect(
-      '[Class(s(List) in s(dart.core), top-level),'
-      ' Class(s(Set) in s(dart.core), top-level)]',
-      cm3.typeArguments);
-
-  expect('[Class(s(String) in s(dart.core), top-level)]',
-      cm1.typeArguments[1].typeArguments);
-  expect('[Class(s(String) in s(dart.core), top-level)]',
-      cm2.typeArguments[0].typeArguments);
-  expect('[Class(s(String) in s(dart.core), top-level)]',
-      cm3.typeArguments[0].typeArguments);
-  expect('[Class(s(String) in s(dart.core), top-level)]',
-      cm3.typeArguments[1].typeArguments);
-
-  var cm4 = reflect(new Bar<Bar<List, Set>, String>()).type;
-
-  expect(
-      '[Class(s(Bar) in s(lib), top-level),'
-      ' Class(s(String) in s(dart.core), top-level)]',
-      cm4.typeArguments);
-  expect(
-      '[Class(s(List) in s(dart.core), top-level), '
-      'Class(s(Set) in s(dart.core), top-level)]',
-      cm4.typeArguments[0].typeArguments);
-}
diff --git a/tests/lib/mirrors/typedef_deferred_library_test.dart b/tests/lib/mirrors/typedef_deferred_library_test.dart
deleted file mode 100644
index 7dd6c2e..0000000
--- a/tests/lib/mirrors/typedef_deferred_library_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2015, 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 foo;
-
-@MirrorsUsed(targets: const ["foo", "bar"])
-import 'dart:mirrors';
-import 'typedef_library.dart' deferred as def;
-
-import 'package:async_helper/async_helper.dart';
-import 'package:expect/expect.dart';
-
-main() {
-  asyncStart();
-  def.loadLibrary().then((_) {
-    var barLibrary = currentMirrorSystem().findLibrary(new Symbol("bar"));
-    var gTypedef = barLibrary.declarations[new Symbol("G")];
-    Expect.equals("G", MirrorSystem.getName(gTypedef.simpleName));
-    asyncEnd();
-  });
-}
diff --git a/tests/lib/mirrors/typedef_in_signature_test.dart b/tests/lib/mirrors/typedef_in_signature_test.dart
deleted file mode 100644
index baa0625..0000000
--- a/tests/lib/mirrors/typedef_in_signature_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2014, 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 test.typedef_in_signature_test;
-
-@MirrorsUsed(targets: 'test.typedef_in_signature_test')
-import 'dart:mirrors';
-
-import "package:expect/expect.dart";
-
-typedef int foo();
-typedef String foo2();
-typedef foo foo3(foo2 x);
-
-foo2 bar(foo x) {
-  return null;
-}
-
-foo3 gee(int x, foo3 tt) => null;
-
-main() {
-  var lm = currentMirrorSystem().findLibrary(#test.typedef_in_signature_test);
-  var ftm = lm.declarations[#bar];
-  Expect.equals(reflectType(foo2), ftm.returnType);
-  Expect.equals(reflectType(foo), ftm.parameters[0].type);
-  ftm = lm.declarations[#gee];
-  Expect.equals(reflectType(int), ftm.parameters[0].type);
-  Expect.equals(reflectType(foo3), ftm.returnType);
-  ftm = ftm.returnType.referent;
-  Expect.equals(reflectType(foo), ftm.returnType);
-  Expect.equals(reflectType(foo2), ftm.parameters[0].type);
-}
diff --git a/tests/lib/mirrors/typedef_library.dart b/tests/lib/mirrors/typedef_library.dart
deleted file mode 100644
index fcb3231..0000000
--- a/tests/lib/mirrors/typedef_library.dart
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright (c) 2015, 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 bar;
-
-typedef G();
diff --git a/tests/lib/mirrors/typedef_library_test.dart b/tests/lib/mirrors/typedef_library_test.dart
deleted file mode 100644
index 6549797..0000000
--- a/tests/lib/mirrors/typedef_library_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2015, 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 foo;
-
-@MirrorsUsed(targets: const ["foo", "bar"])
-import 'dart:mirrors';
-import 'typedef_library.dart';
-
-import 'package:expect/expect.dart';
-
-main() {
-  var barLibrary = currentMirrorSystem().findLibrary(new Symbol("bar"));
-  var gTypedef = barLibrary.declarations[new Symbol("G")];
-  Expect.equals("G", MirrorSystem.getName(gTypedef.simpleName));
-}
diff --git a/tests/lib/mirrors/typedef_metadata_test.dart b/tests/lib/mirrors/typedef_metadata_test.dart
deleted file mode 100644
index e7bf317..0000000
--- a/tests/lib/mirrors/typedef_metadata_test.dart
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2013, 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.
-
-@string
-@symbol
-library test.typedef_metadata_test;
-
-@MirrorsUsed(targets: "test.typedef_metadata_test")
-import 'dart:mirrors';
-
-import 'metadata_test.dart';
-
-class S {}
-
-class M {}
-
-@symbol
-class MA = S with M;
-
-@string
-typedef bool Predicate(Object o);
-
-main() {
-  checkMetadata(reflectType(MA), [symbol]);
-  checkMetadata(reflectType(Predicate), [string]);
-}
diff --git a/tests/lib/mirrors/typedef_reflected_type_test.dart b/tests/lib/mirrors/typedef_reflected_type_test.dart
deleted file mode 100644
index 9aca03a..0000000
--- a/tests/lib/mirrors/typedef_reflected_type_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2014, 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 test;
-
-import 'package:expect/expect.dart';
-import 'stringify.dart';
-
-@MirrorsUsed(targets: "test")
-import 'dart:mirrors';
-
-typedef int Foo<T>(String x);
-typedef int Bar();
-
-class C {
-  Bar fun(Foo<int> x) => null;
-}
-
-main() {
-  var m = reflectClass(C).declarations[#fun];
-
-  Expect.equals(Bar, m.returnType.reflectedType);
-  Expect.equals("Foo<int>", m.parameters[0].type.reflectedType.toString()); //  //# 01: ok
-  Expect.equals(int, m.parameters[0].type.typeArguments[0].reflectedType); //   //# 01: continued
-  Expect.isFalse(m.parameters[0].type.isOriginalDeclaration); //                //# 01: continued
-
-  var lib = currentMirrorSystem().findLibrary(#test);
-  Expect.isTrue(lib.declarations[#Foo].isOriginalDeclaration);
-}
diff --git a/tests/lib/mirrors/typedef_test.dart b/tests/lib/mirrors/typedef_test.dart
deleted file mode 100644
index 823541c..0000000
--- a/tests/lib/mirrors/typedef_test.dart
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// This test is a multi-test with three positive tests. "01" pass on dart2js,
-// "02" pass on the VM, and "none" is the correct behavior.
-// The goal is to remove all "01" and "02" lines.
-
-library test.typedef_test;
-
-@MirrorsUsed(targets: 'test.typedef_test')
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-typedef Func();
-typedef void Void();
-typedef String Foo(int x);
-typedef String Bar(int x, [num y]);
-typedef String Baz(int x, {num y});
-typedef String Foo2(int x, num y);
-typedef String Bar2(int x, [num y, num z]);
-typedef String Baz2(int x, {num y, num z});
-
-check(t) {
-  var sb = new StringBuffer();
-  writeln(o) {
-    sb.write(o);
-    sb.write('\n');
-  }
-
-  writeln(t);
-  t = t.referent;
-  writeln(t);
-  writeln(t.returnType);
-  writeln(t.parameters);
-  for (var p in t.parameters) {
-    writeln(p.simpleName);
-    writeln(p.type);
-  }
-
-  return sb.toString();
-}
-
-// Return "$args -> $ret".
-ft(args, ret) {
-  return '$args -> $ret';
-}
-
-void main() {
-  String x = 'x';
-  String y = 'y';
-  String z = 'z';
-
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Func'
-FunctionTypeMirror on '${ft('()', 'dynamic')}'
-TypeMirror on 'dynamic'
-[]
-""",
-      check(reflectType(Func)));
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Void'
-FunctionTypeMirror on '${ft('()', 'void')}'
-TypeMirror on 'void'
-[]
-""",
-      check(reflectType(Void)));
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Foo'
-FunctionTypeMirror on '${ft('(dart.core.int)', 'dart.core.String')}'
-ClassMirror on 'String'
-[ParameterMirror on '$x']
-Symbol(\"$x\")
-ClassMirror on 'int'
-""",
-      check(reflectType(Foo)));
-  String type = ft('(dart.core.int, dart.core.num)', 'dart.core.String');
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Foo2'
-FunctionTypeMirror on '$type'
-ClassMirror on 'String'
-[ParameterMirror on '$x', ParameterMirror on '$y']
-Symbol(\"$x\")
-ClassMirror on 'int'
-Symbol(\"$y\")
-ClassMirror on 'num'
-""",
-      check(reflectType(Foo2)));
-  type = ft('(dart.core.int, [dart.core.num])', 'dart.core.String');
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Bar'
-FunctionTypeMirror on '$type'
-ClassMirror on 'String'
-[ParameterMirror on '$x', ParameterMirror on '$y']
-Symbol(\"$x\")
-ClassMirror on 'int'
-Symbol(\"$y\")
-ClassMirror on 'num'
-""",
-      check(reflectType(Bar)));
-  type =
-      ft('(dart.core.int, [dart.core.num, dart.core.num])', 'dart.core.String');
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Bar2'
-FunctionTypeMirror on '$type'
-ClassMirror on 'String'
-[ParameterMirror on '$x', ParameterMirror on '$y', ParameterMirror on '$z']
-Symbol(\"$x\")
-ClassMirror on 'int'
-Symbol(\"$y\")
-ClassMirror on 'num'
-Symbol(\"$z\")
-ClassMirror on 'num'
-""",
-      check(reflectType(Bar2)));
-  type = ft('(dart.core.int, {y: dart.core.num})', 'dart.core.String');
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Baz'
-FunctionTypeMirror on '$type'
-ClassMirror on 'String'
-[ParameterMirror on '$x', ParameterMirror on 'y']
-Symbol(\"$x\")
-ClassMirror on 'int'
-Symbol(\"y\")
-ClassMirror on 'num'
-""",
-      check(reflectType(Baz)));
-  type = ft('(dart.core.int, {y: dart.core.num, z: dart.core.num})',
-      'dart.core.String');
-  Expect.stringEquals(
-      """
-TypedefMirror on 'Baz2'
-FunctionTypeMirror on '$type'
-ClassMirror on 'String'
-[ParameterMirror on '$x', ParameterMirror on 'y', ParameterMirror on 'z']
-Symbol(\"$x\")
-ClassMirror on 'int'
-Symbol(\"y\")
-ClassMirror on 'num'
-Symbol(\"z\")
-ClassMirror on 'num'
-""",
-      check(reflectType(Baz2)));
-}
diff --git a/tests/lib/mirrors/typevariable_mirror_metadata_test.dart b/tests/lib/mirrors/typevariable_mirror_metadata_test.dart
deleted file mode 100644
index 1502ecb..0000000
--- a/tests/lib/mirrors/typevariable_mirror_metadata_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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 test.typevariable_metadata_test;
-
-@MirrorsUsed(targets: "test.typevariable_metadata_test")
-import "dart:mirrors";
-
-import "metadata_test.dart";
-
-const m1 = 'm1';
-const m2 = #m2;
-const m3 = 3;
-
-class A<S, @m1 @m2 T> {}
-
-class B<@m3 T> {}
-
-typedef bool Predicate<@m1 @m2 G>(G a);
-
-main() {
-  ClassMirror cm;
-  cm = reflectClass(A);
-  checkMetadata(cm.typeVariables[0], []);
-  checkMetadata(cm.typeVariables[1], [m1, m2]);
-
-  cm = reflectClass(B);
-  checkMetadata(cm.typeVariables[0], [m3]);
-
-  TypedefMirror tm = reflectType(Predicate);
-  checkMetadata(tm.typeVariables[0], [m1, m2]);
-  FunctionTypeMirror ftm = tm.referent;
-  checkMetadata(ftm, []);
-}
diff --git a/tests/lib/mirrors/unmangled_type_test.dart b/tests/lib/mirrors/unmangled_type_test.dart
deleted file mode 100644
index ef7d9fb..0000000
--- a/tests/lib/mirrors/unmangled_type_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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 lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Foo {}
-
-main() {
-  Expect.stringEquals('Foo', '${new Foo().runtimeType}');
-  Expect.stringEquals('foo', MirrorSystem.getName(new Symbol('foo')));
-}
diff --git a/tests/lib/mirrors/unnamed_library_test.dart b/tests/lib/mirrors/unnamed_library_test.dart
deleted file mode 100644
index b967689..0000000
--- a/tests/lib/mirrors/unnamed_library_test.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// No library declaration.
-
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Class {}
-
-main() {
-  ClassMirror cm = reflectClass(Class);
-  LibraryMirror lm = cm.owner;
-
-  Expect.equals('Class', MirrorSystem.getName(cm.simpleName));
-  Expect.equals('.Class', MirrorSystem.getName(cm.qualifiedName));
-  Expect.equals('', MirrorSystem.getName(lm.simpleName));
-  Expect.equals('', MirrorSystem.getName(lm.qualifiedName));
-}
diff --git a/tests/lib/mirrors/unnamed_mixin_application_test.dart b/tests/lib/mirrors/unnamed_mixin_application_test.dart
deleted file mode 100644
index 926f739..0000000
--- a/tests/lib/mirrors/unnamed_mixin_application_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-/// Test that the forwarding constructors of unnamed mixin applications are
-/// included for reflection.
-
-library lib;
-
-@MirrorsUsed(targets: "lib")
-import 'dart:mirrors';
-
-class S {
-  S();
-  S.anUnusedName();
-}
-
-class M {}
-
-class C extends S with M {
-  C();
-}
-
-main() {
-  // Use 'C#', 'S+M#' and 'S#' but not 'S#anUnusedName' nor 'S+M#anUnusedName'.
-  new C();
-  // Disable tree shaking making 'S+M#anUnusedName' live.
-  reflectClass(C);
-}
diff --git a/tests/lib/mirrors/unused_mirrors2_test.dart b/tests/lib/mirrors/unused_mirrors2_test.dart
deleted file mode 100644
index 8215464..0000000
--- a/tests/lib/mirrors/unused_mirrors2_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-library lib;
-
-@MirrorsUsed(targets: const ["lib"])
-import 'dart:mirrors';
-
-Bar foo = new Bar();
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors3_test.dart b/tests/lib/mirrors/unused_mirrors3_test.dart
deleted file mode 100644
index 4770bea..0000000
--- a/tests/lib/mirrors/unused_mirrors3_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-library lib;
-
-@MirrorsUsed(targets: const ["C"])
-import 'dart:mirrors';
-
-class C {
-  static Bar foo = new Bar();
-}
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors4_test.dart b/tests/lib/mirrors/unused_mirrors4_test.dart
deleted file mode 100644
index 936b5ef..0000000
--- a/tests/lib/mirrors/unused_mirrors4_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-@MirrorsUsed(targets: const ["foo"])
-import 'dart:mirrors';
-
-Bar get foo => new Bar();
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors5_test.dart b/tests/lib/mirrors/unused_mirrors5_test.dart
deleted file mode 100644
index 2c05029..0000000
--- a/tests/lib/mirrors/unused_mirrors5_test.dart
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-library lib;
-
-@MirrorsUsed(targets: const ["lib"])
-import 'dart:mirrors';
-
-Bar get foo => new Bar();
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors6_test.dart b/tests/lib/mirrors/unused_mirrors6_test.dart
deleted file mode 100644
index 36d14d5..0000000
--- a/tests/lib/mirrors/unused_mirrors6_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-library lib;
-
-@MirrorsUsed(targets: const ["C"])
-import 'dart:mirrors';
-
-class C {
-  static Bar get foo => new Bar();
-}
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors7_test.dart b/tests/lib/mirrors/unused_mirrors7_test.dart
deleted file mode 100644
index 5d34940..0000000
--- a/tests/lib/mirrors/unused_mirrors7_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-@MirrorsUsed(targets: const ["NON_EXISTING_STATIC"])
-import 'dart:mirrors';
-
-Bar foo = new Bar();
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors8_test.dart b/tests/lib/mirrors/unused_mirrors8_test.dart
deleted file mode 100644
index 68a6f02..0000000
--- a/tests/lib/mirrors/unused_mirrors8_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-library lib;
-
-@MirrorsUsed(targets: const ["lib"])
-import 'dart:mirrors';
-
-class C {
-  static Bar foo = new Bar();
-}
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors9_test.dart b/tests/lib/mirrors/unused_mirrors9_test.dart
deleted file mode 100644
index b1166cb..0000000
--- a/tests/lib/mirrors/unused_mirrors9_test.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-library lib;
-
-@MirrorsUsed(targets: const ["C.foo"])
-import 'dart:mirrors';
-
-class C {
-  static Bar foo = new Bar();
-}
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors_test.dart b/tests/lib/mirrors/unused_mirrors_test.dart
deleted file mode 100644
index a8f9f14..0000000
--- a/tests/lib/mirrors/unused_mirrors_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Tests that MirrorsUsed without usage of the static field does not crash
-// dart2js.
-
-@MirrorsUsed(targets: const ["foo"])
-import 'dart:mirrors';
-
-Bar foo = new Bar();
-
-typedef int FunctionTypeDef();
-
-class Bar {
-  final FunctionTypeDef gee;
-  Bar() : gee = (() => 499);
-}
-
-main() {
-  // Don't do anything.
-}
diff --git a/tests/lib/mirrors/unused_mirrors_used_test.dart b/tests/lib/mirrors/unused_mirrors_used_test.dart
deleted file mode 100644
index 0fe1e37..0000000
--- a/tests/lib/mirrors/unused_mirrors_used_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Regression test.
-// The MirrorsUsed annotation made dart2js to mark List as needed for reflection
-// but tree-shaking wasn't turned off (since there is no actual mirror use)
-// which led to a broken output.
-
-@MirrorsUsed(targets: "List")
-import 'dart:mirrors';
-
-void main() {
-  var l = new List<int>();
-  var f = l.retainWhere;
-  f((x) => true);
-}
diff --git a/tests/lib/mirrors/variable_is_const_test.dart b/tests/lib/mirrors/variable_is_const_test.dart
deleted file mode 100644
index 8a2646d..0000000
--- a/tests/lib/mirrors/variable_is_const_test.dart
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (c) 2013, 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 test.variable_is_const;
-
-@MirrorsUsed(targets: "test.variable_is_const")
-import 'dart:mirrors';
-
-import 'package:expect/expect.dart';
-
-class Class {
-  const //# 01: compile-time error
-  int instanceWouldBeConst = 1;
-  var instanceNonConst = 2;
-
-  static const staticConst = 3;
-  static var staticNonConst = 4;
-}
-
-const topLevelConst = 5;
-var topLevelNonConst = 6;
-
-main() {
-  bool isConst(m, Symbol s) => (m.declarations[s] as VariableMirror).isConst;
-
-  ClassMirror cm = reflectClass(Class);
-  Expect.isFalse(isConst(cm, #instanceWouldBeConst));
-  Expect.isFalse(isConst(cm, #instanceNonConst));
-  Expect.isTrue(isConst(cm, #staticConst));
-  Expect.isFalse(isConst(cm, #staticNonConst));
-
-  LibraryMirror lm = cm.owner;
-  Expect.isTrue(isConst(lm, #topLevelConst));
-  Expect.isFalse(isConst(lm, #topLevelNonConst));
-}
diff --git a/tests/lib/profiler/metrics_num_test.dart b/tests/lib/profiler/metrics_num_test.dart
deleted file mode 100644
index d774f0f..0000000
--- a/tests/lib/profiler/metrics_num_test.dart
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright (c) 2014, 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:developer';
-import 'package:expect/expect.dart';
-
-testGaugeDouble() {
-  Expect.throws(() {
-    // max argument is not a double
-    var gauge = new Gauge('test', 'alpha bravo', 1.0, 4);
-  });
-}
-
-main() {
-  testGaugeDouble();
-}
diff --git a/tests/lib/profiler/metrics_test.dart b/tests/lib/profiler/metrics_test.dart
deleted file mode 100644
index 4e252ad..0000000
--- a/tests/lib/profiler/metrics_test.dart
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright (c) 2014, 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:developer';
-import 'package:expect/expect.dart';
-
-testGauge1() {
-  var gauge = new Gauge('test', 'alpha bravo', 0.0, 100.0);
-  Expect.equals(0.0, gauge.min);
-  Expect.equals(0.0, gauge.value);
-  Expect.equals(100.0, gauge.max);
-  Expect.equals('test', gauge.name);
-  Expect.equals('alpha bravo', gauge.description);
-  gauge.value = 44.0;
-  Expect.equals(44.0, gauge.value);
-  // Test setting below min.
-  gauge.value = -1.0;
-  Expect.equals(0.0, gauge.value);
-  // Test setting above max.
-  gauge.value = 101.0;
-  Expect.equals(100.0, gauge.value);
-}
-
-testGauge2() {
-  var gauge = new Gauge('test', 'alpha bravo', 1.0, 2.0);
-  Expect.equals(1.0, gauge.min);
-  Expect.equals(2.0, gauge.max);
-  Expect.equals(gauge.min, gauge.value);
-  Expect.equals('test', gauge.name);
-  Expect.equals('alpha bravo', gauge.description);
-
-  Expect.throws(() {
-    // min argument > max argument .
-    gauge = new Gauge('test', 'alpha bravo', 2.0, 1.0);
-  });
-
-  Expect.throws(() {
-    // min argument  == max argument .
-    gauge = new Gauge('test', 'alpha bravo', 1.0, 1.0);
-  });
-
-  Expect.throws(() {
-    // min argument is null
-    gauge = new Gauge('test', 'alpha bravo', null, 1.0);
-  });
-
-  Expect.throws(() {
-    // min argument is not a double
-    gauge = new Gauge('test', 'alpha bravo', 'string', 1.0);
-  });
-
-  Expect.throws(() {
-    // max argument is null
-    gauge = new Gauge('test', 'alpha bravo', 1.0, null);
-  });
-}
-
-testCounter() {
-  var counter = new Counter('test', 'alpha bravo');
-  Expect.equals(0.0, counter.value);
-  Expect.equals('test', counter.name);
-  Expect.equals('alpha bravo', counter.description);
-  counter.value = 1.0;
-  Expect.equals(1.0, counter.value);
-}
-
-class CustomCounter extends Counter {
-  CustomCounter(name, description) : super(name, description);
-  // User provided getter.
-  double get value => 77.0;
-}
-
-testCustomCounter() {
-  var counter = new CustomCounter('test', 'alpha bravo');
-  Expect.equals(77.0, counter.value);
-  Expect.equals('test', counter.name);
-  Expect.equals('alpha bravo', counter.description);
-  // Should have no effect.
-  counter.value = 1.0;
-  Expect.equals(77.0, counter.value);
-}
-
-testMetricNameCollision() {
-  var counter = new Counter('a.b.c', 'alpha bravo charlie');
-  var counter2 = new Counter('a.b.c', 'alpha bravo charlie collider');
-  Metrics.register(counter);
-  Expect.throws(() {
-    Metrics.register(counter2);
-  });
-  Metrics.deregister(counter);
-  Metrics.register(counter);
-  var counter3 = new Counter('a.b.c.d', '');
-  Metrics.register(counter3);
-}
-
-testBadName() {
-  Expect.throws(() {
-    var counter = new Counter('a.b/c', 'description');
-  });
-  Expect.throws(() {
-    var counter = new Counter('vm', 'description');
-  });
-}
-
-main() {
-  testGauge1();
-  testGauge2();
-  testCounter();
-  testCustomCounter();
-  testMetricNameCollision();
-  testBadName();
-}
diff --git a/tests/lib/profiler/user_tags_test.dart b/tests/lib/profiler/user_tags_test.dart
deleted file mode 100644
index c22e373..0000000
--- a/tests/lib/profiler/user_tags_test.dart
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright (c) 2014, 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:developer';
-import 'package:expect/expect.dart';
-
-// Test that the default tag is set.
-testDefault() {
-  Expect.isTrue(identical(UserTag.defaultTag, getCurrentTag()));
-}
-
-// Test that the label property matches the constructor.
-void testLabel() {
-  var label = 'Hello World';
-  var tag = new UserTag(label);
-  Expect.equals(label, tag.label);
-}
-
-// Test that we canonicalize UserTag by name.
-void testCanonicalize(tag1) {
-  var label = 'Global Tag';
-  var tag = new UserTag(label);
-  Expect.isTrue(identical(tag, tag1));
-  var defaultLabel = 'Default';
-  var defaultTag = new UserTag(defaultLabel);
-  Expect.isTrue(identical(UserTag.defaultTag, defaultTag));
-}
-
-// Test that we made the tag current.
-void testMakeCurrent(tag) {
-  tag.makeCurrent();
-  Expect.isTrue(identical(tag, getCurrentTag()));
-}
-
-// Test that we reach a limit of tags an exception is thrown.
-void testExhaust() {
-  var i = 0;
-  while (true) {
-    var label = i.toString();
-    var tag = new UserTag(label);
-    i++;
-  }
-}
-
-var callerTag = new UserTag('caller');
-var calleeTag = new UserTag('callee');
-
-void callee() {
-  var old = calleeTag.makeCurrent();
-  Expect.isTrue(identical(calleeTag, getCurrentTag()));
-  old.makeCurrent();
-}
-
-void testCallerPattern() {
-  Expect.isTrue(identical(UserTag.defaultTag, getCurrentTag()));
-  var old = callerTag.makeCurrent();
-  Expect.isTrue(identical(callerTag, getCurrentTag()));
-  callee();
-  Expect.isTrue(identical(callerTag, getCurrentTag()));
-  old.makeCurrent();
-  Expect.isTrue(identical(UserTag.defaultTag, getCurrentTag()));
-}
-
-main() {
-  testDefault();
-  testCallerPattern();
-  var label = 'Global Tag';
-  var tag = new UserTag(label);
-  testLabel();
-  testCanonicalize(tag);
-  for (var i = 0; i < 2000; i++) {
-    testMakeCurrent(tag);
-  }
-  Expect.throws(testExhaust);
-}
diff --git a/tests/lib/typed_data/byte_data_test.dart b/tests/lib/typed_data/byte_data_test.dart
deleted file mode 100644
index 2b0e3ea..0000000
--- a/tests/lib/typed_data/byte_data_test.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (c) 2013, 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:typed_data';
-import "package:expect/expect.dart";
-
-main() {
-  testRegress10898();
-}
-
-testRegress10898() {
-  ByteData data = new ByteData(16);
-  Expect.equals(16, data.lengthInBytes);
-  for (int i = 0; i < data.lengthInBytes; i++) {
-    Expect.equals(0, data.getInt8(i));
-    data.setInt8(i, 42 + i);
-    Expect.equals(42 + i, data.getInt8(i));
-  }
-
-  ByteData backing = new ByteData(16);
-  ByteData view = new ByteData.view(backing.buffer);
-  for (int i = 0; i < view.lengthInBytes; i++) {
-    Expect.equals(0, view.getInt8(i));
-    view.setInt8(i, 87 + i);
-    Expect.equals(87 + i, view.getInt8(i));
-  }
-
-  view = new ByteData.view(backing.buffer, 4);
-  Expect.equals(12, view.lengthInBytes);
-  for (int i = 0; i < view.lengthInBytes; i++) {
-    Expect.equals(87 + i + 4, view.getInt8(i));
-  }
-
-  view = new ByteData.view(backing.buffer, 8, 4);
-  Expect.equals(4, view.lengthInBytes);
-  for (int i = 0; i < view.lengthInBytes; i++) {
-    Expect.equals(87 + i + 8, view.getInt8(i));
-  }
-}
diff --git a/tests/lib/typed_data/constructor_checks_test.dart b/tests/lib/typed_data/constructor_checks_test.dart
deleted file mode 100644
index 826a4e0..0000000
--- a/tests/lib/typed_data/constructor_checks_test.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2014, 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:typed_data';
-import 'package:expect/expect.dart';
-
-checkLengthConstructors() {
-  check(creator) {
-    Expect.throws(() => creator(null));
-    Expect.throws(() => creator(8.5));
-    Expect.throws(() => creator('10'));
-    var a = creator(10);
-    Expect.equals(10, a.length);
-  }
-
-  check((a) => new Float32List(a));
-  check((a) => new Float64List(a));
-  check((a) => new Int8List(a));
-  check((a) => new Int8List(a));
-  check((a) => new Int16List(a));
-  check((a) => new Int32List(a));
-  check((a) => new Uint8List(a));
-  check((a) => new Uint16List(a));
-  check((a) => new Uint32List(a));
-}
-
-checkViewConstructors() {
-  var buffer = new Int8List(256).buffer;
-
-  check1(creator) {
-    Expect.throws(() => creator(10));
-    Expect.throws(() => creator(null));
-    var a = creator(buffer);
-    Expect.equals(buffer, a.buffer);
-  }
-
-  check2(creator) {
-    Expect.throws(() => creator(10, 0));
-    Expect.throws(() => creator(null, 0));
-    Expect.throws(() => creator(buffer, null));
-    Expect.throws(() => creator(buffer, '8'));
-    var a = creator(buffer, 8);
-    Expect.equals(buffer, a.buffer);
-  }
-
-  check1((a) => new Float32List.view(a));
-  check1((a) => new Float64List.view(a));
-  check1((a) => new Int8List.view(a));
-  check1((a) => new Int8List.view(a));
-  check1((a) => new Int16List.view(a));
-  check1((a) => new Int32List.view(a));
-  check1((a) => new Uint8List.view(a));
-  check1((a) => new Uint16List.view(a));
-  check1((a) => new Uint32List.view(a));
-
-  check2((a, b) => new Float32List.view(a, b));
-  check2((a, b) => new Float64List.view(a, b));
-  check2((a, b) => new Int8List.view(a, b));
-  check2((a, b) => new Int8List.view(a, b));
-  check2((a, b) => new Int16List.view(a, b));
-  check2((a, b) => new Int32List.view(a, b));
-  check2((a, b) => new Uint8List.view(a, b));
-  check2((a, b) => new Uint16List.view(a, b));
-  check2((a, b) => new Uint32List.view(a, b));
-}
-
-main() {
-  checkLengthConstructors();
-  checkViewConstructors();
-}
diff --git a/tests/lib/typed_data/endianness_test.dart b/tests/lib/typed_data/endianness_test.dart
deleted file mode 100644
index 1fdacd2..0000000
--- a/tests/lib/typed_data/endianness_test.dart
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (c) 2014, 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:typed_data';
-import "package:expect/expect.dart";
-
-main() {
-  swapTest();
-  swapTestVar(Endianness.LITTLE_ENDIAN, Endianness.BIG_ENDIAN);
-  swapTestVar(Endianness.BIG_ENDIAN, Endianness.LITTLE_ENDIAN);
-}
-
-swapTest() {
-  ByteData data = new ByteData(16);
-  Expect.equals(16, data.lengthInBytes);
-  for (int i = 0; i < 4; i++) {
-    data.setInt32(i * 4, i);
-  }
-
-  for (int i = 0; i < data.lengthInBytes; i += 4) {
-    var e = data.getInt32(i, Endianness.BIG_ENDIAN);
-    data.setInt32(i, e, Endianness.LITTLE_ENDIAN);
-  }
-
-  Expect.equals(0x02000000, data.getInt32(8));
-
-  for (int i = 0; i < data.lengthInBytes; i += 2) {
-    var e = data.getInt16(i, Endianness.BIG_ENDIAN);
-    data.setInt16(i, e, Endianness.LITTLE_ENDIAN);
-  }
-
-  Expect.equals(0x00020000, data.getInt32(8));
-
-  for (int i = 0; i < data.lengthInBytes; i += 4) {
-    var e = data.getUint32(i, Endianness.LITTLE_ENDIAN);
-    data.setUint32(i, e, Endianness.BIG_ENDIAN);
-  }
-
-  Expect.equals(0x00000200, data.getInt32(8));
-
-  for (int i = 0; i < data.lengthInBytes; i += 2) {
-    var e = data.getUint16(i, Endianness.LITTLE_ENDIAN);
-    data.setUint16(i, e, Endianness.BIG_ENDIAN);
-  }
-
-  Expect.equals(0x00000002, data.getInt32(8));
-}
-
-swapTestVar(read, write) {
-  ByteData data = new ByteData(16);
-  Expect.equals(16, data.lengthInBytes);
-  for (int i = 0; i < 4; i++) {
-    data.setInt32(i * 4, i);
-  }
-
-  for (int i = 0; i < data.lengthInBytes; i += 4) {
-    var e = data.getInt32(i, read);
-    data.setInt32(i, e, write);
-  }
-
-  Expect.equals(0x02000000, data.getInt32(8));
-
-  for (int i = 0; i < data.lengthInBytes; i += 2) {
-    var e = data.getInt16(i, read);
-    data.setInt16(i, e, write);
-  }
-
-  Expect.equals(0x00020000, data.getInt32(8));
-
-  for (int i = 0; i < data.lengthInBytes; i += 4) {
-    var e = data.getUint32(i, read);
-    data.setUint32(i, e, write);
-  }
-
-  Expect.equals(0x00000200, data.getInt32(8));
-
-  for (int i = 0; i < data.lengthInBytes; i += 2) {
-    var e = data.getUint16(i, read);
-    data.setUint16(i, e, write);
-  }
-
-  Expect.equals(0x00000002, data.getInt32(8));
-}
diff --git a/tests/lib/typed_data/float32x4_clamp_test.dart b/tests/lib/typed_data/float32x4_clamp_test.dart
deleted file mode 100644
index 0109478..0000000
--- a/tests/lib/typed_data/float32x4_clamp_test.dart
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_clamp_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-void testClampLowerGreaterThanUpper() {
-  Float32x4 l = new Float32x4(1.0, 1.0, 1.0, 1.0);
-  Float32x4 u = new Float32x4(-1.0, -1.0, -1.0, -1.0);
-  Float32x4 z = new Float32x4.zero();
-  Float32x4 a = z.clamp(l, u);
-  Expect.equals(a.x, 1.0);
-  Expect.equals(a.y, 1.0);
-  Expect.equals(a.z, 1.0);
-  Expect.equals(a.w, 1.0);
-}
-
-void testClamp() {
-  Float32x4 l = new Float32x4(-1.0, -1.0, -1.0, -1.0);
-  Float32x4 u = new Float32x4(1.0, 1.0, 1.0, 1.0);
-  Float32x4 z = new Float32x4.zero();
-  Float32x4 a = z.clamp(l, u);
-  Expect.equals(a.x, 0.0);
-  Expect.equals(a.y, 0.0);
-  Expect.equals(a.z, 0.0);
-  Expect.equals(a.w, 0.0);
-}
-
-main() {
-  for (int i = 0; i < 2000; i++) {
-    testClampLowerGreaterThanUpper();
-    testClamp();
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_cross_test.dart b/tests/lib/typed_data/float32x4_cross_test.dart
deleted file mode 100644
index e4f0851..0000000
--- a/tests/lib/typed_data/float32x4_cross_test.dart
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_cross_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-Float32x4 cross(Float32x4 a, Float32x4 b) {
-  var t0 = a.shuffle(Float32x4.YZXW);
-  var t1 = b.shuffle(Float32x4.ZXYW);
-  var l = t0 * t1;
-  t0 = a.shuffle(Float32x4.ZXYW);
-  t1 = b.shuffle(Float32x4.YZXW);
-  var r = t0 * t1;
-  return l - r;
-}
-
-void testCross(Float32x4 a, Float32x4 b, Float32x4 r) {
-  var x = cross(a, b);
-  Expect.equals(r.x, x.x);
-  Expect.equals(r.y, x.y);
-  Expect.equals(r.z, x.z);
-  Expect.equals(r.w, x.w);
-}
-
-main() {
-  var x = new Float32x4(1.0, 0.0, 0.0, 0.0);
-  var y = new Float32x4(0.0, 1.0, 0.0, 0.0);
-  var z = new Float32x4(0.0, 0.0, 1.0, 0.0);
-  var zero = new Float32x4.zero();
-
-  for (int i = 0; i < 20; i++) {
-    testCross(x, y, z);
-    testCross(z, x, y);
-    testCross(y, z, x);
-    testCross(z, y, -x);
-    testCross(x, z, -y);
-    testCross(y, x, -z);
-    testCross(x, x, zero);
-    testCross(y, y, zero);
-    testCross(z, z, zero);
-    testCross(x, y, cross(-y, x));
-    testCross(x, y + z, cross(x, y) + cross(x, z));
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_list_test.dart b/tests/lib/typed_data/float32x4_list_test.dart
deleted file mode 100644
index b0a6cd3..0000000
--- a/tests/lib/typed_data/float32x4_list_test.dart
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background_compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_list_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-testLoadStore(array) {
-  Expect.equals(8, array.length);
-  Expect.isTrue(array is List<Float32x4>);
-  array[0] = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Expect.equals(1.0, array[0].x);
-  Expect.equals(2.0, array[0].y);
-  Expect.equals(3.0, array[0].z);
-  Expect.equals(4.0, array[0].w);
-  array[1] = array[0];
-  array[0] = array[0].withX(9.0);
-  Expect.equals(9.0, array[0].x);
-  Expect.equals(2.0, array[0].y);
-  Expect.equals(3.0, array[0].z);
-  Expect.equals(4.0, array[0].w);
-  Expect.equals(1.0, array[1].x);
-  Expect.equals(2.0, array[1].y);
-  Expect.equals(3.0, array[1].z);
-  Expect.equals(4.0, array[1].w);
-}
-
-testLoadStoreDeopt(array, index, value) {
-  array[index] = value;
-  Expect.equals(value.x, array[index].x);
-  Expect.equals(value.y, array[index].y);
-  Expect.equals(value.z, array[index].z);
-  Expect.equals(value.w, array[index].w);
-}
-
-testLoadStoreDeoptDriver() {
-  Float32x4List list = new Float32x4List(4);
-  Float32x4 value = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // Invalid index.
-    testLoadStoreDeopt(list, 5, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // null list.
-    testLoadStoreDeopt(null, 0, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // null value.
-    testLoadStoreDeopt(list, 0, null);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // non-smi index.
-    testLoadStoreDeopt(list, 3.14159, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // non-Float32x4 value.
-    testLoadStoreDeopt(list, 0, 4.toDouble());
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // non-Float32x4List list.
-    testLoadStoreDeopt([new Float32x4(2.0, 3.0, 4.0, 5.0)], 0, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-}
-
-testListZero() {
-  Float32x4List list = new Float32x4List(1);
-  Expect.equals(0.0, list[0].x);
-  Expect.equals(0.0, list[0].y);
-  Expect.equals(0.0, list[0].z);
-  Expect.equals(0.0, list[0].w);
-}
-
-testView(array) {
-  Expect.equals(8, array.length);
-  Expect.isTrue(array is List<Float32x4>);
-  Expect.equals(0.0, array[0].x);
-  Expect.equals(1.0, array[0].y);
-  Expect.equals(2.0, array[0].z);
-  Expect.equals(3.0, array[0].w);
-  Expect.equals(4.0, array[1].x);
-  Expect.equals(5.0, array[1].y);
-  Expect.equals(6.0, array[1].z);
-  Expect.equals(7.0, array[1].w);
-}
-
-testSublist(array) {
-  Expect.equals(8, array.length);
-  Expect.isTrue(array is Float32x4List);
-  var a = array.sublist(0, 1);
-  Expect.equals(1, a.length);
-  Expect.equals(0.0, a[0].x);
-  Expect.equals(1.0, a[0].y);
-  Expect.equals(2.0, a[0].z);
-  Expect.equals(3.0, a[0].w);
-  a = array.sublist(1, 2);
-  Expect.equals(4.0, a[0].x);
-  Expect.equals(5.0, a[0].y);
-  Expect.equals(6.0, a[0].z);
-  Expect.equals(7.0, a[0].w);
-  a = array.sublist(0);
-  Expect.equals(a.length, array.length);
-  for (int i = 0; i < array.length; i++) {
-    Expect.equals(array[i].x, a[i].x);
-    Expect.equals(array[i].y, a[i].y);
-    Expect.equals(array[i].z, a[i].z);
-    Expect.equals(array[i].w, a[i].w);
-  }
-}
-
-void testSpecialValues(array) {
-  /// Same as Expect.identical, but also works with NaNs and -0.0 for dart2js.
-  void checkEquals(expected, actual) {
-    if (expected.isNaN) {
-      Expect.isTrue(actual.isNaN);
-    } else if (expected == 0.0 && expected.isNegative) {
-      Expect.isTrue(actual == 0.0 && actual.isNegative);
-    } else {
-      Expect.equals(expected, actual);
-    }
-  }
-
-  var pairs = [
-    [0.0, 0.0],
-    [5e-324, 0.0],
-    [2.225073858507201e-308, 0.0],
-    [2.2250738585072014e-308, 0.0],
-    [0.9999999999999999, 1.0],
-    [1.0, 1.0],
-    [1.0000000000000002, 1.0],
-    [4294967295.0, 4294967296.0],
-    [4294967296.0, 4294967296.0],
-    [4503599627370495.5, 4503599627370496.0],
-    [9007199254740992.0, 9007199254740992.0],
-    [1.7976931348623157e+308, double.INFINITY],
-    [0.49999999999999994, 0.5],
-    [4503599627370497.0, 4503599627370496.0],
-    [9007199254740991.0, 9007199254740992.0],
-    [double.INFINITY, double.INFINITY],
-    [double.NAN, double.NAN],
-  ];
-
-  var conserved = [
-    1.401298464324817e-45,
-    1.1754942106924411e-38,
-    1.1754943508222875e-38,
-    0.9999999403953552,
-    1.0000001192092896,
-    8388607.5,
-    8388608.0,
-    3.4028234663852886e+38,
-    8388609.0,
-    16777215.0,
-  ];
-
-  var minusPairs = pairs.map((pair) {
-    return [-pair[0], -pair[1]];
-  });
-  var conservedPairs = conserved.map((value) => [value, value]);
-
-  var allTests = [pairs, minusPairs, conservedPairs].expand((x) => x);
-
-  for (var pair in allTests) {
-    var input = pair[0];
-    var expected = pair[1];
-    var f;
-    f = new Float32x4(input, 2.0, 3.0, 4.0);
-    array[0] = f;
-    f = array[0];
-    checkEquals(expected, f.x);
-    Expect.equals(2.0, f.y);
-    Expect.equals(3.0, f.z);
-    Expect.equals(4.0, f.w);
-
-    f = new Float32x4(1.0, input, 3.0, 4.0);
-    array[1] = f;
-    f = array[1];
-    Expect.equals(1.0, f.x);
-    checkEquals(expected, f.y);
-    Expect.equals(3.0, f.z);
-    Expect.equals(4.0, f.w);
-
-    f = new Float32x4(1.0, 2.0, input, 4.0);
-    array[2] = f;
-    f = array[2];
-    Expect.equals(1.0, f.x);
-    Expect.equals(2.0, f.y);
-    checkEquals(expected, f.z);
-    Expect.equals(4.0, f.w);
-
-    f = new Float32x4(1.0, 2.0, 3.0, input);
-    array[3] = f;
-    f = array[3];
-    Expect.equals(1.0, f.x);
-    Expect.equals(2.0, f.y);
-    Expect.equals(3.0, f.z);
-    checkEquals(expected, f.w);
-  }
-}
-
-main() {
-  var list;
-
-  list = new Float32x4List(8);
-  for (int i = 0; i < 20; i++) {
-    testLoadStore(list);
-  }
-
-  Float32List floatList = new Float32List(32);
-  for (int i = 0; i < floatList.length; i++) {
-    floatList[i] = i.toDouble();
-  }
-  list = new Float32x4List.view(floatList.buffer);
-  for (int i = 0; i < 20; i++) {
-    testView(list);
-  }
-  for (int i = 0; i < 20; i++) {
-    testSublist(list);
-  }
-  for (int i = 0; i < 20; i++) {
-    testLoadStore(list);
-  }
-  for (int i = 0; i < 20; i++) {
-    testListZero();
-  }
-  for (int i = 0; i < 20; i++) {
-    testSpecialValues(list);
-  }
-  testLoadStoreDeoptDriver();
-}
diff --git a/tests/lib/typed_data/float32x4_shuffle_test.dart b/tests/lib/typed_data/float32x4_shuffle_test.dart
deleted file mode 100644
index 460f656..0000000
--- a/tests/lib/typed_data/float32x4_shuffle_test.dart
+++ /dev/null
@@ -1,1436 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_shuffle_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-void testShuffle00() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.XXXX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XXXY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XXXZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XXXW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XXYX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XXYY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XXYZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XXYW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XXZX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XXZY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XXZZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XXZW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XXWX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XXWY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XXWZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XXWW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle01() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.XYXX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XYXY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XYXZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XYXW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XYYX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XYYY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XYYZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XYYW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XYZX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XYZY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XYZZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XYZW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XYWX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XYWY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XYWZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XYWW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle02() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.XZXX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XZXY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XZXZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XZXW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XZYX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XZYY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XZYZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XZYW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XZZX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XZZY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XZZZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XZZW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XZWX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XZWY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XZWZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XZWW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle03() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.XWXX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XWXY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XWXZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XWXW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XWYX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XWYY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XWYZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XWYW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XWZX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XWZY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XWZZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XWZW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.XWWX);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.XWWY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.XWWZ);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.XWWW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle10() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.YXXX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YXXY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YXXZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YXXW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YXYX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YXYY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YXYZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YXYW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YXZX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YXZY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YXZZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YXZW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YXWX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YXWY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YXWZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YXWW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle11() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.YYXX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YYXY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YYXZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YYXW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YYYX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YYYY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YYYZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YYYW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YYZX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YYZY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YYZZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YYZW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YYWX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YYWY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YYWZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YYWW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle12() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.YZXX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YZXY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YZXZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YZXW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YZYX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YZYY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YZYZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YZYW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YZZX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YZZY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YZZZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YZZW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YZWX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YZWY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YZWZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YZWW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle13() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.YWXX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YWXY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YWXZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YWXW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YWYX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YWYY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YWYZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YWYW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YWZX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YWZY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YWZZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YWZW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.YWWX);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.YWWY);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.YWWZ);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.YWWW);
-  Expect.equals(2.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle20() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.ZXXX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZXXY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZXXZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZXXW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZXYX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZXYY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZXYZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZXYW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZXZX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZXZY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZXZZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZXZW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZXWX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZXWY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZXWZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZXWW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle21() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.ZYXX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZYXY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZYXZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZYXW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZYYX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZYYY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZYYZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZYYW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZYZX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZYZY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZYZZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZYZW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZYWX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZYWY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZYWZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZYWW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle22() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.ZZXX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZZXY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZZXZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZZXW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZZYX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZZYY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZZYZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZZYW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZZZX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZZZY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZZZZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZZZW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZZWX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZZWY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZZWZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZZWW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle23() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.ZWXX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZWXY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZWXZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZWXW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZWYX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZWYY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZWYZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZWYW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZWZX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZWZY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZWZZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZWZW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.ZWWX);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.ZWWY);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.ZWWZ);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.ZWWW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle30() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.WXXX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WXXY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WXXZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WXXW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WXYX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WXYY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WXYZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WXYW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WXZX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WXZY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WXZZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WXZW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WXWX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WXWY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WXWZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WXWW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(1.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle31() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.WYXX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WYXY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WYXZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WYXW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WYYX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WYYY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WYYZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WYYW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WYZX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WYZY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WYZZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WYZW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WYWX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WYWY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WYWZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WYWW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle32() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.WZXX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WZXY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WZXZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WZXW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WZYX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WZYY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WZYZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WZYW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WZZX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WZZY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WZZZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WZZW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WZWX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WZWY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WZWZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WZWW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffle33() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.WWXX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WWXY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WWXZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WWXW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(1.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WWYX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WWYY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WWYZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WWYW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WWZX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WWZY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WWZZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WWZW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-  c = m.shuffle(Float32x4.WWWX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(1.0, c.w);
-  c = m.shuffle(Float32x4.WWWY);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(2.0, c.w);
-  c = m.shuffle(Float32x4.WWWZ);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(3.0, c.w);
-  c = m.shuffle(Float32x4.WWWW);
-  Expect.equals(4.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-void testShuffleNonConstant(mask) {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(mask);
-  if (mask == 1) {
-    Expect.equals(2.0, c.x);
-    Expect.equals(1.0, c.y);
-    Expect.equals(1.0, c.z);
-    Expect.equals(1.0, c.w);
-  } else {
-    Expect.equals(Float32x4.YYYY + 1, mask);
-    Expect.equals(3.0, c.x);
-    Expect.equals(2.0, c.y);
-    Expect.equals(2.0, c.z);
-    Expect.equals(2.0, c.w);
-  }
-}
-
-void testInvalidShuffle(mask) {
-  // Not a valid mask.
-  Expect.isFalse(mask <= 255 && mask >= 0);
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  Expect.throws(() {
-    c = m.shuffle(mask);
-  });
-}
-
-void testShuffle() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var c;
-  c = m.shuffle(Float32x4.WZYX);
-  Expect.equals(4.0, c.x);
-  Expect.equals(3.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(1.0, c.w);
-}
-
-main() {
-  var xxxx = Float32x4.XXXX + 1;
-  var yyyy = Float32x4.YYYY + 1;
-  for (int i = 0; i < 20; i++) {
-    testShuffle();
-    testShuffle00();
-    testShuffle01();
-    testShuffle02();
-    testShuffle03();
-    testShuffle10();
-    testShuffle11();
-    testShuffle12();
-    testShuffle13();
-    testShuffle20();
-    testShuffle21();
-    testShuffle22();
-    testShuffle23();
-    testShuffle30();
-    testShuffle31();
-    testShuffle32();
-    testShuffle33();
-    testShuffleNonConstant(xxxx);
-    testShuffleNonConstant(yyyy);
-    testInvalidShuffle(256);
-    testInvalidShuffle(-1);
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_sign_mask_test.dart b/tests/lib/typed_data/float32x4_sign_mask_test.dart
deleted file mode 100644
index 06a0bb0..0000000
--- a/tests/lib/typed_data/float32x4_sign_mask_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_sign_mask;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-void testImmediates() {
-  var f = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var m = f.signMask;
-  Expect.equals(0x0, m);
-  f = new Float32x4(-1.0, -2.0, -3.0, -0.0);
-  m = f.signMask;
-  Expect.equals(0xf, m);
-  f = new Float32x4(-1.0, 2.0, 3.0, 4.0);
-  m = f.signMask;
-  Expect.equals(0x1, m);
-  f = new Float32x4(1.0, -2.0, 3.0, 4.0);
-  m = f.signMask;
-  Expect.equals(0x2, m);
-  f = new Float32x4(1.0, 2.0, -3.0, 4.0);
-  m = f.signMask;
-  Expect.equals(0x4, m);
-  f = new Float32x4(1.0, 2.0, 3.0, -4.0);
-  m = f.signMask;
-  Expect.equals(0x8, m);
-}
-
-void testZero() {
-  var f = new Float32x4(0.0, 0.0, 0.0, 0.0);
-  var m = f.signMask;
-  Expect.equals(0x0, m);
-  f = new Float32x4(-0.0, -0.0, -0.0, -0.0);
-  m = f.signMask;
-  Expect.equals(0xf, m);
-}
-
-void testArithmetic() {
-  var a = new Float32x4(1.0, 1.0, 1.0, 1.0);
-  var b = new Float32x4(2.0, 2.0, 2.0, 2.0);
-  var c = new Float32x4(-1.0, -1.0, -1.0, -1.0);
-  var m1 = (a - b).signMask;
-  Expect.equals(0xf, m1);
-  var m2 = (b - a).signMask;
-  Expect.equals(0x0, m2);
-  var m3 = (c * c).signMask;
-  Expect.equals(0x0, m3);
-  var m4 = (a * c).signMask;
-  Expect.equals(0xf, m4);
-}
-
-main() {
-  for (int i = 0; i < 2000; i++) {
-    testImmediates();
-    testZero();
-    testArithmetic();
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_test.dart b/tests/lib/typed_data/float32x4_test.dart
deleted file mode 100644
index cb6eff6..0000000
--- a/tests/lib/typed_data/float32x4_test.dart
+++ /dev/null
@@ -1,529 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-// VMOptions=--no-intrinsify
-
-// Library tag to be able to run in html test framework.
-library float32x4_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-testAdd() {
-  var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
-  var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var o = m + n;
-  Expect.equals(0.0, o.x);
-  Expect.equals(0.0, o.y);
-  Expect.equals(0.0, o.z);
-  Expect.equals(0.0, o.w);
-}
-
-testNegate() {
-  var m = new Float32x4(1.0, 2.0, -3.0, -4.0);
-  m = -m;
-  Expect.equals(-1.0, m.x);
-  Expect.equals(-2.0, m.y);
-  Expect.equals(3.0, m.z);
-  Expect.equals(4.0, m.w);
-}
-
-testSub() {
-  var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
-  var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var o = m - n;
-  Expect.equals(-2.0, o.x);
-  Expect.equals(-4.0, o.y);
-  Expect.equals(-6.0, o.z);
-  Expect.equals(-8.0, o.w);
-}
-
-testMul() {
-  var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
-  var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var o = m * n;
-  Expect.equals(-1.0, o.x);
-  Expect.equals(-4.0, o.y);
-  Expect.equals(-9.0, o.z);
-  Expect.equals(-16.0, o.w);
-}
-
-testDiv() {
-  var m = new Float32x4(-1.0, -2.0, -3.0, -4.0);
-  var n = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var o = m / n;
-  Expect.equals(-1.0, o.x);
-  Expect.equals(-1.0, o.y);
-  Expect.equals(-1.0, o.z);
-  Expect.equals(-1.0, o.w);
-}
-
-testComparison() {
-  var m = new Float32x4(1.0, 2.0, 0.1, 0.001);
-  var n = new Float32x4(2.0, 2.0, 0.001, 0.1);
-  var cmp;
-  cmp = m.lessThan(n);
-  Expect.equals(-1, cmp.x);
-  Expect.equals(0x0, cmp.y);
-  Expect.equals(0x0, cmp.z);
-  Expect.equals(-1, cmp.w);
-
-  cmp = m.lessThanOrEqual(n);
-  Expect.equals(-1, cmp.x);
-  Expect.equals(-1, cmp.y);
-  Expect.equals(0x0, cmp.z);
-  Expect.equals(-1, cmp.w);
-
-  cmp = m.equal(n);
-  Expect.equals(0x0, cmp.x);
-  Expect.equals(-1, cmp.y);
-  Expect.equals(0x0, cmp.z);
-  Expect.equals(0x0, cmp.w);
-
-  cmp = m.notEqual(n);
-  Expect.equals(-1, cmp.x);
-  Expect.equals(0x0, cmp.y);
-  Expect.equals(-1, cmp.z);
-  Expect.equals(-1, cmp.w);
-
-  cmp = m.greaterThanOrEqual(n);
-  Expect.equals(0x0, cmp.x);
-  Expect.equals(-1, cmp.y);
-  Expect.equals(-1, cmp.z);
-  Expect.equals(0x0, cmp.w);
-
-  cmp = m.greaterThan(n);
-  Expect.equals(0x0, cmp.x);
-  Expect.equals(0x0, cmp.y);
-  Expect.equals(-1, cmp.z);
-  Expect.equals(0x0, cmp.w);
-}
-
-testAbs() {
-  var m = new Float32x4(1.0, -2.0, 3.0, -4.0);
-  m = m.abs();
-  Expect.equals(1.0, m.x);
-  Expect.equals(2.0, m.y);
-  Expect.equals(3.0, m.z);
-  Expect.equals(4.0, m.w);
-}
-
-testScale() {
-  var m = new Float32x4(1.0, -2.0, 3.0, -4.0);
-  m = m.scale(20.0);
-  Expect.equals(20.0, m.x);
-  Expect.equals(-40.0, m.y);
-  Expect.equals(60.0, m.z);
-  Expect.equals(-80.0, m.w);
-}
-
-testClamp() {
-  var m = new Float32x4(1.0, -2.0, 3.0, -4.0);
-  var lo = new Float32x4(0.0, 0.0, 0.0, 0.0);
-  var hi = new Float32x4(2.0, 2.0, 2.0, 2.0);
-  m = m.clamp(lo, hi);
-  Expect.equals(1.0, m.x);
-  Expect.equals(0.0, m.y);
-  Expect.equals(2.0, m.z);
-  Expect.equals(0.0, m.w);
-}
-
-testShuffle() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var xxxx = m.shuffle(Float32x4.XXXX);
-  Expect.equals(1.0, xxxx.x);
-  Expect.equals(1.0, xxxx.y);
-  Expect.equals(1.0, xxxx.z);
-  Expect.equals(1.0, xxxx.w);
-  var yyyy = m.shuffle(Float32x4.YYYY);
-  Expect.equals(2.0, yyyy.x);
-  Expect.equals(2.0, yyyy.y);
-  Expect.equals(2.0, yyyy.z);
-  Expect.equals(2.0, yyyy.w);
-  var zzzz = m.shuffle(Float32x4.ZZZZ);
-  Expect.equals(3.0, zzzz.x);
-  Expect.equals(3.0, zzzz.y);
-  Expect.equals(3.0, zzzz.z);
-  Expect.equals(3.0, zzzz.w);
-  var wwww = m.shuffle(Float32x4.WWWW);
-  Expect.equals(4.0, wwww.x);
-  Expect.equals(4.0, wwww.y);
-  Expect.equals(4.0, wwww.z);
-  Expect.equals(4.0, wwww.w);
-  var wzyx = m.shuffle(Float32x4.WZYX);
-  Expect.equals(4.0, wzyx.x);
-  Expect.equals(3.0, wzyx.y);
-  Expect.equals(2.0, wzyx.z);
-  Expect.equals(1.0, wzyx.w);
-  var wwzz = m.shuffle(Float32x4.WWZZ);
-  Expect.equals(4.0, wwzz.x);
-  Expect.equals(4.0, wwzz.y);
-  Expect.equals(3.0, wwzz.z);
-  Expect.equals(3.0, wwzz.w);
-  var xxyy = m.shuffle(Float32x4.XXYY);
-  Expect.equals(1.0, xxyy.x);
-  Expect.equals(1.0, xxyy.y);
-  Expect.equals(2.0, xxyy.z);
-  Expect.equals(2.0, xxyy.w);
-  var yyww = m.shuffle(Float32x4.YYWW);
-  Expect.equals(2.0, yyww.x);
-  Expect.equals(2.0, yyww.y);
-  Expect.equals(4.0, yyww.z);
-  Expect.equals(4.0, yyww.w);
-}
-
-testMin() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var n = new Float32x4(1.0, 0.0, 2.5, 5.0);
-  m = m.min(n);
-  Expect.equals(1.0, m.x);
-  Expect.equals(0.0, m.y);
-  Expect.equals(2.5, m.z);
-  Expect.equals(4.0, m.w);
-}
-
-testMax() {
-  var m = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var n = new Float32x4(1.0, 0.0, 2.5, 5.0);
-  m = m.max(n);
-  Expect.equals(1.0, m.x);
-  Expect.equals(2.0, m.y);
-  Expect.equals(3.0, m.z);
-  Expect.equals(5.0, m.w);
-}
-
-testSqrt() {
-  var m = new Float32x4(1.0, 4.0, 9.0, 16.0);
-  m = m.sqrt();
-  Expect.equals(1.0, m.x);
-  Expect.equals(2.0, m.y);
-  Expect.equals(3.0, m.z);
-  Expect.equals(4.0, m.w);
-}
-
-testReciprocal() {
-  var m = new Float32x4(1.0, 4.0, 9.0, 16.0);
-  m = m.reciprocal();
-  Expect.approxEquals(1.0, m.x, 0.001);
-  Expect.approxEquals(0.25, m.y, 0.001);
-  Expect.approxEquals(0.1111111, m.z, 0.001);
-  Expect.approxEquals(0.0625, m.w, 0.001);
-}
-
-testReciprocalSqrt() {
-  var m = new Float32x4(1.0, 0.25, 0.111111, 0.0625);
-  m = m.reciprocalSqrt();
-  Expect.approxEquals(1.0, m.x, 0.001);
-  Expect.approxEquals(2.0, m.y, 0.001);
-  Expect.approxEquals(3.0, m.z, 0.001);
-  Expect.approxEquals(4.0, m.w, 0.001);
-}
-
-testSelect() {
-  var m = new Int32x4.bool(true, true, false, false);
-  var t = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var f = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  var s = m.select(t, f);
-  Expect.equals(1.0, s.x);
-  Expect.equals(2.0, s.y);
-  Expect.equals(7.0, s.z);
-  Expect.equals(8.0, s.w);
-}
-
-testConversions() {
-  var m = new Int32x4(0x3F800000, 0x40000000, 0x40400000, 0x40800000);
-  var n = new Float32x4.fromInt32x4Bits(m);
-  Expect.equals(1.0, n.x);
-  Expect.equals(2.0, n.y);
-  Expect.equals(3.0, n.z);
-  Expect.equals(4.0, n.w);
-  n = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  m = new Int32x4.fromFloat32x4Bits(n);
-  Expect.equals(0x40A00000, m.x);
-  Expect.equals(0x40C00000, m.y);
-  Expect.equals(0x40E00000, m.z);
-  Expect.equals(0x41000000, m.w);
-  // Flip sign using bit-wise operators.
-  n = new Float32x4(9.0, 10.0, 11.0, 12.0);
-  m = new Int32x4(0x80000000, 0x80000000, 0x80000000, 0x80000000);
-  var nMask = new Int32x4.fromFloat32x4Bits(n);
-  nMask = nMask ^ m; // flip sign.
-  n = new Float32x4.fromInt32x4Bits(nMask);
-  Expect.equals(-9.0, n.x);
-  Expect.equals(-10.0, n.y);
-  Expect.equals(-11.0, n.z);
-  Expect.equals(-12.0, n.w);
-  nMask = new Int32x4.fromFloat32x4Bits(n);
-  nMask = nMask ^ m; // flip sign.
-  n = new Float32x4.fromInt32x4Bits(nMask);
-  Expect.equals(9.0, n.x);
-  Expect.equals(10.0, n.y);
-  Expect.equals(11.0, n.z);
-  Expect.equals(12.0, n.w);
-}
-
-testBitOperators() {
-  var m = new Int32x4(0xAAAAAAA, 0xAAAAAAA, 0xAAAAAAA, 0xAAAAAAA);
-  var n = new Int32x4(0x5555555, 0x5555555, 0x5555555, 0x5555555);
-  Expect.equals(0xAAAAAAA, m.x);
-  Expect.equals(0xAAAAAAA, m.y);
-  Expect.equals(0xAAAAAAA, m.z);
-  Expect.equals(0xAAAAAAA, m.w);
-  Expect.equals(0x5555555, n.x);
-  Expect.equals(0x5555555, n.y);
-  Expect.equals(0x5555555, n.z);
-  Expect.equals(0x5555555, n.w);
-  Expect.equals(true, n.flagX);
-  Expect.equals(true, n.flagY);
-  Expect.equals(true, n.flagZ);
-  Expect.equals(true, n.flagW);
-  var o = m | n; // or
-  Expect.equals(0xFFFFFFF, o.x);
-  Expect.equals(0xFFFFFFF, o.y);
-  Expect.equals(0xFFFFFFF, o.z);
-  Expect.equals(0xFFFFFFF, o.w);
-  Expect.equals(true, o.flagX);
-  Expect.equals(true, o.flagY);
-  Expect.equals(true, o.flagZ);
-  Expect.equals(true, o.flagW);
-  o = m & n; // and
-  Expect.equals(0x0, o.x);
-  Expect.equals(0x0, o.y);
-  Expect.equals(0x0, o.z);
-  Expect.equals(0x0, o.w);
-  n = n.withX(0xAAAAAAA);
-  n = n.withY(0xAAAAAAA);
-  n = n.withZ(0xAAAAAAA);
-  n = n.withW(0xAAAAAAA);
-  Expect.equals(0xAAAAAAA, n.x);
-  Expect.equals(0xAAAAAAA, n.y);
-  Expect.equals(0xAAAAAAA, n.z);
-  Expect.equals(0xAAAAAAA, n.w);
-  o = m ^ n; // xor
-  Expect.equals(0x0, o.x);
-  Expect.equals(0x0, o.y);
-  Expect.equals(0x0, o.z);
-  Expect.equals(0x0, o.w);
-  Expect.equals(false, o.flagX);
-  Expect.equals(false, o.flagY);
-  Expect.equals(false, o.flagZ);
-  Expect.equals(false, o.flagW);
-}
-
-testSetters() {
-  var f = new Float32x4.zero();
-  Expect.equals(0.0, f.x);
-  Expect.equals(0.0, f.y);
-  Expect.equals(0.0, f.z);
-  Expect.equals(0.0, f.w);
-  f = f.withX(4.0);
-  Expect.equals(4.0, f.x);
-  f = f.withY(3.0);
-  Expect.equals(3.0, f.y);
-  f = f.withZ(2.0);
-  Expect.equals(2.0, f.z);
-  f = f.withW(1.0);
-  Expect.equals(1.0, f.w);
-  f = new Float32x4.zero();
-  f = f.withX(4.0).withZ(2.0).withW(1.0).withY(3.0);
-  Expect.equals(4.0, f.x);
-  Expect.equals(3.0, f.y);
-  Expect.equals(2.0, f.z);
-  Expect.equals(1.0, f.w);
-  var m = new Int32x4.bool(false, false, false, false);
-  Expect.equals(false, m.flagX);
-  Expect.equals(false, m.flagY);
-  Expect.equals(false, m.flagZ);
-  Expect.equals(false, m.flagW);
-  m = m.withFlagX(true);
-  Expect.equals(true, m.flagX);
-  Expect.equals(false, m.flagY);
-  Expect.equals(false, m.flagZ);
-  Expect.equals(false, m.flagW);
-  m = m.withFlagY(true);
-  Expect.equals(true, m.flagX);
-  Expect.equals(true, m.flagY);
-  Expect.equals(false, m.flagZ);
-  Expect.equals(false, m.flagW);
-  m = m.withFlagZ(true);
-  Expect.equals(true, m.flagX);
-  Expect.equals(true, m.flagY);
-  Expect.equals(true, m.flagZ);
-  Expect.equals(false, m.flagW);
-  m = m.withFlagW(true);
-  Expect.equals(true, m.flagX);
-  Expect.equals(true, m.flagY);
-  Expect.equals(true, m.flagZ);
-  Expect.equals(true, m.flagW);
-}
-
-testGetters() {
-  var f = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Expect.equals(1.0, f.x);
-  Expect.equals(2.0, f.y);
-  Expect.equals(3.0, f.z);
-  Expect.equals(4.0, f.w);
-  var m = new Int32x4.bool(false, true, true, false);
-  Expect.equals(false, m.flagX);
-  Expect.equals(true, m.flagY);
-  Expect.equals(true, m.flagZ);
-  Expect.equals(false, m.flagW);
-}
-
-void testSplat() {
-  var f = new Float32x4.splat(2.0);
-  Expect.equals(2.0, f.x);
-  Expect.equals(2.0, f.y);
-  Expect.equals(2.0, f.z);
-  Expect.equals(2.0, f.w);
-}
-
-void testZero() {
-  var f = new Float32x4.zero();
-  Expect.equals(0.0, f.x);
-  Expect.equals(0.0, f.y);
-  Expect.equals(0.0, f.z);
-  Expect.equals(0.0, f.w);
-}
-
-void testConstructor() {
-  var f = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Expect.equals(1.0, f.x);
-  Expect.equals(2.0, f.y);
-  Expect.equals(3.0, f.z);
-  Expect.equals(4.0, f.w);
-}
-
-void testBadArguments() {
-  Expect.throws(
-      () => new Float32x4(null, 2.0, 3.0, 4.0), (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Float32x4(1.0, null, 3.0, 4.0), (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Float32x4(1.0, 2.0, null, 4.0), (e) => e is ArgumentError);
-  Expect.throws(
-      () => new Float32x4(1.0, 2.0, 3.0, null), (e) => e is ArgumentError);
-  // Use local variable typed as "var" to avoid static warnings.
-  var str = "foo";
-  Expect.throws(() => new Float32x4(str, 2.0, 3.0, 4.0),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Float32x4(1.0, str, 3.0, 4.0),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Float32x4(1.0, 2.0, str, 4.0),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Float32x4(1.0, 2.0, 3.0, str),
-      (e) => e is ArgumentError || e is TypeError);
-}
-
-void testSpecialValues() {
-  /// Same as Expect.identical, but also works with NaNs and -0.0 for dart2js.
-  void checkEquals(expected, actual) {
-    if (expected.isNaN) {
-      Expect.isTrue(actual.isNaN);
-    } else if (expected == 0.0 && expected.isNegative) {
-      Expect.isTrue(actual == 0.0 && actual.isNegative);
-    } else {
-      Expect.equals(expected, actual);
-    }
-  }
-
-  var pairs = [
-    [0.0, 0.0],
-    [5e-324, 0.0],
-    [2.225073858507201e-308, 0.0],
-    [2.2250738585072014e-308, 0.0],
-    [0.9999999999999999, 1.0],
-    [1.0, 1.0],
-    [1.0000000000000002, 1.0],
-    [4294967295.0, 4294967296.0],
-    [4294967296.0, 4294967296.0],
-    [4503599627370495.5, 4503599627370496.0],
-    [9007199254740992.0, 9007199254740992.0],
-    [1.7976931348623157e+308, double.INFINITY],
-    [0.49999999999999994, 0.5],
-    [4503599627370497.0, 4503599627370496.0],
-    [9007199254740991.0, 9007199254740992.0],
-    [double.INFINITY, double.INFINITY],
-    [double.NAN, double.NAN],
-  ];
-
-  var conserved = [
-    1.401298464324817e-45,
-    1.1754942106924411e-38,
-    1.1754943508222875e-38,
-    0.9999999403953552,
-    1.0000001192092896,
-    8388607.5,
-    8388608.0,
-    3.4028234663852886e+38,
-    8388609.0,
-    16777215.0,
-  ];
-
-  var minusPairs = pairs.map((pair) {
-    return [-pair[0], -pair[1]];
-  });
-  var conservedPairs = conserved.map((value) => [value, value]);
-
-  var allTests = [pairs, minusPairs, conservedPairs].expand((x) => x);
-
-  for (var pair in allTests) {
-    var input = pair[0];
-    var expected = pair[1];
-    var f;
-    f = new Float32x4(input, 2.0, 3.0, 4.0);
-    checkEquals(expected, f.x);
-    Expect.equals(2.0, f.y);
-    Expect.equals(3.0, f.z);
-    Expect.equals(4.0, f.w);
-
-    f = new Float32x4(1.0, input, 3.0, 4.0);
-    Expect.equals(1.0, f.x);
-    checkEquals(expected, f.y);
-    Expect.equals(3.0, f.z);
-    Expect.equals(4.0, f.w);
-
-    f = new Float32x4(1.0, 2.0, input, 4.0);
-    Expect.equals(1.0, f.x);
-    Expect.equals(2.0, f.y);
-    checkEquals(expected, f.z);
-    Expect.equals(4.0, f.w);
-
-    f = new Float32x4(1.0, 2.0, 3.0, input);
-    Expect.equals(1.0, f.x);
-    Expect.equals(2.0, f.y);
-    Expect.equals(3.0, f.z);
-    checkEquals(expected, f.w);
-  }
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    testConstructor();
-    testSplat();
-    testZero();
-    testAdd();
-    testGetters();
-    testSetters();
-    testBitOperators();
-    testConversions();
-    testSelect();
-    testShuffle();
-    testSub();
-    testNegate();
-    testMul();
-    testDiv();
-    testComparison();
-    testScale();
-    testClamp();
-    testAbs();
-    testMin();
-    testMax();
-    testSqrt();
-    testReciprocal();
-    testReciprocalSqrt();
-    testBadArguments();
-    testSpecialValues();
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_transpose_test.dart b/tests/lib/typed_data/float32x4_transpose_test.dart
deleted file mode 100644
index c75b8ef..0000000
--- a/tests/lib/typed_data/float32x4_transpose_test.dart
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_transpose_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-void transpose(Float32x4List m) {
-  Expect.equals(4, m.length);
-  var m0 = m[0];
-  var m1 = m[1];
-  var m2 = m[2];
-  var m3 = m[3];
-
-  var t0 = m0.shuffleMix(m1, Float32x4.XYXY);
-  var t1 = m2.shuffleMix(m3, Float32x4.XYXY);
-  m[0] = t0.shuffleMix(t1, Float32x4.XZXZ);
-  m[1] = t0.shuffleMix(t1, Float32x4.YWYW);
-
-  var t2 = m0.shuffleMix(m1, Float32x4.ZWZW);
-  var t3 = m2.shuffleMix(m3, Float32x4.ZWZW);
-  m[2] = t2.shuffleMix(t3, Float32x4.XZXZ);
-  m[3] = t2.shuffleMix(t3, Float32x4.YWYW);
-}
-
-void testTranspose(Float32x4List m, Float32x4List r) {
-  transpose(m); // In place transpose.
-  for (int i = 0; i < 4; i++) {
-    var a = m[i];
-    var b = r[i];
-    Expect.equals(b.x, a.x);
-    Expect.equals(b.y, a.y);
-    Expect.equals(b.z, a.z);
-    Expect.equals(b.w, a.w);
-  }
-}
-
-main() {
-  var A = new Float32x4List(4);
-  A[0] = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  A[1] = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  A[2] = new Float32x4(9.0, 10.0, 11.0, 12.0);
-  A[3] = new Float32x4(13.0, 14.0, 15.0, 16.0);
-  var B = new Float32x4List(4);
-  B[0] = new Float32x4(1.0, 5.0, 9.0, 13.0);
-  B[1] = new Float32x4(2.0, 6.0, 10.0, 14.0);
-  B[2] = new Float32x4(3.0, 7.0, 11.0, 15.0);
-  B[3] = new Float32x4(4.0, 8.0, 12.0, 16.0);
-  var I = new Float32x4List(4);
-  I[0] = new Float32x4(1.0, 0.0, 0.0, 0.0);
-  I[1] = new Float32x4(0.0, 1.0, 0.0, 0.0);
-  I[2] = new Float32x4(0.0, 0.0, 1.0, 0.0);
-  I[3] = new Float32x4(0.0, 0.0, 0.0, 1.0);
-  for (int i = 0; i < 20; i++) {
-    var m = new Float32x4List.fromList(I);
-    testTranspose(m, I);
-    m = new Float32x4List.fromList(A);
-    testTranspose(m, B);
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_two_arg_shuffle_test.dart b/tests/lib/typed_data/float32x4_two_arg_shuffle_test.dart
deleted file mode 100644
index ebd1ac6..0000000
--- a/tests/lib/typed_data/float32x4_two_arg_shuffle_test.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_two_arg_shuffle_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-testWithZWInXY() {
-  Float32x4 a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Float32x4 b = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  Float32x4 c = b.shuffleMix(a, Float32x4.ZWZW);
-  Expect.equals(7.0, c.x);
-  Expect.equals(8.0, c.y);
-  Expect.equals(3.0, c.z);
-  Expect.equals(4.0, c.w);
-}
-
-testInterleaveXY() {
-  Float32x4 a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Float32x4 b = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  Float32x4 c = a.shuffleMix(b, Float32x4.XYXY).shuffle(Float32x4.XZYW);
-  Expect.equals(1.0, c.x);
-  Expect.equals(5.0, c.y);
-  Expect.equals(2.0, c.z);
-  Expect.equals(6.0, c.w);
-}
-
-testInterleaveZW() {
-  Float32x4 a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Float32x4 b = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  Float32x4 c = a.shuffleMix(b, Float32x4.ZWZW).shuffle(Float32x4.XZYW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(7.0, c.y);
-  Expect.equals(4.0, c.z);
-  Expect.equals(8.0, c.w);
-}
-
-testInterleaveXYPairs() {
-  Float32x4 a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Float32x4 b = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  Float32x4 c = a.shuffleMix(b, Float32x4.XYXY);
-  Expect.equals(1.0, c.x);
-  Expect.equals(2.0, c.y);
-  Expect.equals(5.0, c.z);
-  Expect.equals(6.0, c.w);
-}
-
-testInterleaveZWPairs() {
-  Float32x4 a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Float32x4 b = new Float32x4(5.0, 6.0, 7.0, 8.0);
-  Float32x4 c = a.shuffleMix(b, Float32x4.ZWZW);
-  Expect.equals(3.0, c.x);
-  Expect.equals(4.0, c.y);
-  Expect.equals(7.0, c.z);
-  Expect.equals(8.0, c.w);
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    testWithZWInXY();
-    testInterleaveXY();
-    testInterleaveZW();
-    testInterleaveXYPairs();
-    testInterleaveZWPairs();
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_unbox_phi_test.dart b/tests/lib/typed_data/float32x4_unbox_phi_test.dart
deleted file mode 100644
index d96b2cf..0000000
--- a/tests/lib/typed_data/float32x4_unbox_phi_test.dart
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_unbox_regress_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-double testUnboxPhi(Float32x4List data) {
-  var res = new Float32x4.zero();
-  for (int i = 0; i < data.length; i++) {
-    res += data[i];
-  }
-  return res.x + res.y + res.z + res.w;
-}
-
-main() {
-  Float32x4List list = new Float32x4List(10);
-  Float32List floatList = new Float32List.view(list.buffer);
-  for (int i = 0; i < floatList.length; i++) {
-    floatList[i] = i.toDouble();
-  }
-  for (int i = 0; i < 20; i++) {
-    double r = testUnboxPhi(list);
-    Expect.equals(780.0, r);
-  }
-}
diff --git a/tests/lib/typed_data/float32x4_unbox_regress_test.dart b/tests/lib/typed_data/float32x4_unbox_regress_test.dart
deleted file mode 100644
index 3955990..0000000
--- a/tests/lib/typed_data/float32x4_unbox_regress_test.dart
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library float32x4_unbox_regress_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-testListStore(array, index, value) {
-  array[index] = value;
-}
-
-void testListStoreDeopt() {
-  var list;
-  var value = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var smi = 12;
-  list = new Float32x4List(8);
-  for (int i = 0; i < 20; i++) {
-    testListStore(list, 0, value);
-  }
-
-  try {
-    // Without a proper check for SMI in the Float32x4 unbox instruction
-    // this might trigger a crash.
-    testListStore(list, 0, smi);
-  } catch (_) {}
-}
-
-testAdd(a, b) {
-  var c = a + b;
-  Expect.equals(3.0, c.x);
-  Expect.equals(5.0, c.y);
-  Expect.equals(7.0, c.z);
-  Expect.equals(9.0, c.w);
-}
-
-void testAddDeopt() {
-  var a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var b = new Float32x4(2.0, 3.0, 4.0, 5.0);
-  var smi = 12;
-  for (int i = 0; i < 20; i++) {
-    testAdd(a, b);
-  }
-
-  try {
-    testAdd(a, smi);
-  } catch (_) {}
-}
-
-testGet(a) {
-  var c = a.x + a.y + a.z + a.w;
-  Expect.equals(10.0, c);
-}
-
-void testGetDeopt() {
-  var a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var smi = 12;
-  for (int i = 0; i < 20; i++) {
-    testGet(a);
-  }
-
-  try {
-    testGet(12);
-  } catch (_) {}
-
-  for (int i = 0; i < 20; i++) {
-    testGet(a);
-  }
-}
-
-void testComparison(a, b) {
-  Int32x4 r = a.equal(b);
-  Expect.equals(true, r.flagX);
-  Expect.equals(false, r.flagY);
-  Expect.equals(false, r.flagZ);
-  Expect.equals(true, r.flagW);
-}
-
-void testComparisonDeopt() {
-  var a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var b = new Float32x4(1.0, 2.1, 3.1, 4.0);
-  var smi = 12;
-
-  for (int i = 0; i < 20; i++) {
-    testComparison(a, b);
-  }
-
-  try {
-    testComparison(a, smi);
-  } catch (_) {}
-
-  for (int i = 0; i < 20; i++) {
-    testComparison(a, b);
-  }
-
-  try {
-    testComparison(smi, a);
-  } catch (_) {}
-
-  for (int i = 0; i < 20; i++) {
-    testComparison(a, b);
-  }
-}
-
-main() {
-  testListStoreDeopt();
-  testAddDeopt();
-  testGetDeopt();
-  testComparisonDeopt();
-}
diff --git a/tests/lib/typed_data/float64x2_functional_test.dart b/tests/lib/typed_data/float64x2_functional_test.dart
deleted file mode 100644
index 7c09c149..0000000
--- a/tests/lib/typed_data/float64x2_functional_test.dart
+++ /dev/null
@@ -1,295 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-// VMOptions=--no-intrinsify
-
-library float64x2_functional_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-testConstructor() {
-  var a = new Float64x2(1.0, 2.0);
-  Expect.equals(1.0, a.x);
-  Expect.equals(2.0, a.y);
-  var b = new Float64x2.splat(1.0);
-  Expect.equals(1.0, b.x);
-  Expect.equals(1.0, b.y);
-  var c = new Float64x2.zero();
-  Expect.equals(0.0, c.x);
-  Expect.equals(0.0, c.y);
-}
-
-testCastConstructor() {
-  var a = new Float32x4(9.0, 8.0, 7.0, 6.0);
-  var b = new Float64x2.fromFloat32x4(a);
-  Expect.equals(9.0, b.x);
-  Expect.equals(8.0, b.y);
-  var c = new Float32x4.fromFloat64x2(b);
-  Expect.equals(9.0, c.x);
-  Expect.equals(8.0, c.y);
-  Expect.equals(0.0, c.z);
-  Expect.equals(0.0, c.w);
-}
-
-testLaneSetter() {
-  var a = new Float64x2.zero();
-  Expect.equals(0.0, a.x);
-  Expect.equals(0.0, a.y);
-  var b = a.withX(99.0);
-  Expect.equals(0.0, a.x);
-  Expect.equals(0.0, a.y);
-  Expect.equals(99.0, b.x);
-  Expect.equals(0.0, b.y);
-  var c = a.withY(88.0);
-  Expect.equals(0.0, a.x);
-  Expect.equals(0.0, a.y);
-  Expect.equals(0.0, c.x);
-  Expect.equals(88.0, c.y);
-  var d = c.withX(11.0);
-  Expect.equals(0.0, c.x);
-  Expect.equals(88.0, c.y);
-  Expect.equals(11.0, d.x);
-  Expect.equals(88.0, d.y);
-}
-
-testNegate() {
-  var m = new Float64x2(1.0, -2.0);
-  var o = -m;
-  Expect.equals(-1.0, o.x);
-  Expect.equals(2.0, o.y);
-}
-
-testAdd() {
-  var m = new Float64x2(1.0, -2.0);
-  var n = new Float64x2(1.0, 2.0);
-  var o = m + n;
-  Expect.equals(2.0, o.x);
-  Expect.equals(0.0, o.y);
-}
-
-testSub() {
-  var m = new Float64x2(1.5, -2.0);
-  var n = new Float64x2(1.0, 2.0);
-  var o = m - n;
-  Expect.equals(0.5, o.x);
-  Expect.equals(-4.0, o.y);
-}
-
-testMul() {
-  var m = new Float64x2(1.0, -2.0);
-  var n = new Float64x2(2.0, 2.0);
-  var o = m * n;
-  Expect.equals(2.0, o.x);
-  Expect.equals(-4.0, o.y);
-}
-
-testDiv() {
-  var m = new Float64x2(1.0, -2.0);
-  var n = new Float64x2(2.0, 2.0);
-  var o = m / n;
-  Expect.equals(0.5, o.x);
-  Expect.equals(-1.0, o.y);
-}
-
-testScale() {
-  var m = new Float64x2(1.0, 0.5);
-  var n = m.scale(2.0);
-  Expect.equals(2.0, n.x);
-  Expect.equals(1.0, n.y);
-}
-
-testAbs() {
-  var m = new Float64x2(1.0, -0.5).abs();
-  var n = new Float64x2(-2.0, 1.0).abs();
-  Expect.equals(1.0, m.x);
-  Expect.equals(0.5, m.y);
-  Expect.equals(2.0, n.x);
-  Expect.equals(1.0, n.y);
-}
-
-testClamp() {
-  var m = new Float64x2(1.0, -2.0);
-  var lo = new Float64x2(0.0, 0.5);
-  var hi = new Float64x2(2.0, 2.0);
-  m = m.clamp(lo, hi);
-  Expect.equals(1.0, m.x);
-  Expect.equals(0.5, m.y);
-}
-
-testSignMask() {
-  var m = new Float64x2(-1.0, -0.0);
-  Expect.equals(3, m.signMask);
-  m = new Float64x2(0.0, 0.0);
-  Expect.equals(0, m.signMask);
-  m = new Float64x2(-1.0, 0.0);
-  Expect.equals(1, m.signMask);
-  m = new Float64x2(1.0, -0.0);
-  Expect.equals(2, m.signMask);
-}
-
-testMin() {
-  var m = new Float64x2(0.0, -99.0);
-  var n = new Float64x2(-1.0, -1.0);
-  var o = m.min(n);
-  Expect.equals(-1.0, o.x);
-  Expect.equals(-99.0, o.y);
-}
-
-testMax() {
-  var m = new Float64x2(0.5, -99.0);
-  var n = new Float64x2(-1.0, -1.0);
-  var o = m.max(n);
-  Expect.equals(0.5, o.x);
-  Expect.equals(-1.0, o.y);
-}
-
-testSqrt() {
-  var m = new Float64x2(9.0, 16.0);
-  var o = m.sqrt();
-  Expect.equals(3.0, o.x);
-  Expect.equals(4.0, o.y);
-}
-
-testTypedList() {
-  var m = new Float64x2List(2);
-  var n = m[0];
-  Expect.equals(0.0, n.x);
-  Expect.equals(0.0, n.y);
-  n = n.withX(1.0);
-  n = n.withY(2.0);
-  m[0] = n;
-  n = n.withX(99.0);
-  Expect.equals(99.0, n.x);
-  Expect.equals(1.0, m[0].x);
-  Expect.equals(2.0, m[0].y);
-}
-
-testTypedListFromList() {
-  var l = [new Float64x2(1.0, 2.0), new Float64x2(3.0, 4.0)];
-  var m = new Float64x2List.fromList(l);
-  Expect.equals(2, m.length);
-  Expect.equals(16, m.elementSizeInBytes);
-  Expect.equals(32, m.lengthInBytes);
-  Expect.equals(1.0, m[0].x);
-  Expect.equals(2.0, m[0].y);
-  Expect.equals(3.0, m[1].x);
-  Expect.equals(4.0, m[1].y);
-}
-
-testTypedListFromTypedList() {
-  var l = new Float64x2List(2);
-  l[0] = new Float64x2(1.0, 2.0);
-  l[1] = new Float64x2(3.0, 4.0);
-  Expect.equals(2, l.length);
-  Expect.equals(16, l.elementSizeInBytes);
-  Expect.equals(32, l.lengthInBytes);
-  Expect.equals(1.0, l[0].x);
-  Expect.equals(2.0, l[0].y);
-  Expect.equals(3.0, l[1].x);
-  Expect.equals(4.0, l[1].y);
-  var m = new Float64x2List.fromList(l);
-  Expect.equals(2, m.length);
-  Expect.equals(16, m.elementSizeInBytes);
-  Expect.equals(32, m.lengthInBytes);
-  Expect.equals(2, m.length);
-  Expect.equals(1.0, m[0].x);
-  Expect.equals(2.0, m[0].y);
-  Expect.equals(3.0, m[1].x);
-  Expect.equals(4.0, m[1].y);
-}
-
-testTypedListView() {
-  var l = [1.0, 2.0, 3.0, 4.0];
-  Expect.equals(4, l.length);
-  l = new Float64List.fromList(l);
-  Expect.equals(4, l.length);
-  var m = new Float64x2List.view(l.buffer);
-  Expect.equals(2, m.length);
-  Expect.equals(1.0, m[0].x);
-  Expect.equals(2.0, m[0].y);
-  Expect.equals(3.0, m[1].x);
-  Expect.equals(4.0, m[1].y);
-}
-
-testTypedListFullView() {
-  var l = [new Float64x2(1.0, 2.0), new Float64x2(3.0, 4.0)];
-  var m = new Float64x2List.fromList(l);
-  Expect.equals(2, m.length);
-  Expect.equals(1.0, m[0].x);
-  Expect.equals(2.0, m[0].y);
-  Expect.equals(3.0, m[1].x);
-  Expect.equals(4.0, m[1].y);
-  // Create a view which spans the entire buffer.
-  var n = new Float64x2List.view(m.buffer);
-  Expect.equals(2, n.length);
-  Expect.equals(1.0, n[0].x);
-  Expect.equals(2.0, n[0].y);
-  Expect.equals(3.0, n[1].x);
-  Expect.equals(4.0, n[1].y);
-  // Create a view which spans the entire buffer by specifying length.
-  var o = new Float64x2List.view(m.buffer, 0, 2);
-  Expect.equals(2, o.length);
-  Expect.equals(1.0, o[0].x);
-  Expect.equals(2.0, o[0].y);
-  Expect.equals(3.0, o[1].x);
-  Expect.equals(4.0, o[1].y);
-}
-
-testSubList() {
-  var l = [new Float64x2(1.0, 2.0), new Float64x2(3.0, 4.0)];
-  var m = new Float64x2List.fromList(l);
-  var n = m.sublist(0, 1);
-  Expect.equals(1, n.length);
-  Expect.equals(1.0, n[0].x);
-  Expect.equals(2.0, n[0].y);
-  var o = m.sublist(1, 2);
-  Expect.equals(1, o.length);
-  Expect.equals(3.0, o[0].x);
-  Expect.equals(4.0, o[0].y);
-}
-
-testSubView() {
-  var l = [new Float64x2(1.0, 2.0), new Float64x2(3.0, 4.0)];
-  var m = new Float64x2List.fromList(l);
-  var n = new Float64x2List.view(m.buffer, 16, 1);
-  Expect.equals(1, n.length);
-  Expect.equals(16, n.offsetInBytes);
-  Expect.equals(16, n.lengthInBytes);
-  Expect.equals(3.0, n[0].x);
-  Expect.equals(4.0, n[0].y);
-  var o = new Float64x2List.view(m.buffer, 0, 1);
-  Expect.equals(1, o.length);
-  Expect.equals(0, o.offsetInBytes);
-  Expect.equals(16, o.lengthInBytes);
-  Expect.equals(1.0, o[0].x);
-  Expect.equals(2.0, o[0].y);
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    testConstructor();
-    testCastConstructor();
-    testLaneSetter();
-    testNegate();
-    testAdd();
-    testSub();
-    testMul();
-    testDiv();
-    testScale();
-    testAbs();
-    testClamp();
-    testSignMask();
-    testMin();
-    testMax();
-    testSqrt();
-    testTypedList();
-    testTypedListFromList();
-    testTypedListFromTypedList();
-    testTypedListView();
-    testTypedListFullView();
-    testSubList();
-    testSubView();
-  }
-}
diff --git a/tests/lib/typed_data/float64x2_typed_list_test.dart b/tests/lib/typed_data/float64x2_typed_list_test.dart
deleted file mode 100644
index 7c43da8..0000000
--- a/tests/lib/typed_data/float64x2_typed_list_test.dart
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-library float64x2_typed_list_test;
-
-import 'dart:typed_data';
-
-void test(Float64x2List l) {
-  var a = l[0];
-  var b = l[1];
-  l[0] = b;
-  l[1] = a;
-}
-
-bool compare(a, b) {
-  return (a.x == b.x) && (a.y == b.y);
-}
-
-main() {
-  var l = new Float64x2List(2);
-  var a = new Float64x2(1.0, 2.0);
-  var b = new Float64x2(3.0, 4.0);
-  l[0] = a;
-  l[1] = b;
-  for (var i = 0; i < 41; i++) {
-    test(l);
-  }
-  if (!compare(l[0], b) || !compare(l[1], a)) {
-    throw 123;
-  }
-}
diff --git a/tests/lib/typed_data/int32x4_arithmetic_test.dart b/tests/lib/typed_data/int32x4_arithmetic_test.dart
deleted file mode 100644
index 0b118da..0000000
--- a/tests/lib/typed_data/int32x4_arithmetic_test.dart
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library uint32x4_arithmetic_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-testAdd() {
-  var m = new Int32x4(0, 0, 0, 0);
-  var n = new Int32x4(-1, -1, -1, -1);
-  var o = m + n;
-  Expect.equals(-1, o.x);
-  Expect.equals(-1, o.y);
-  Expect.equals(-1, o.z);
-  Expect.equals(-1, o.w);
-
-  m = new Int32x4(0, 0, 0, 0);
-  n = new Int32x4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
-  o = m + n;
-  Expect.equals(-1, o.x);
-  Expect.equals(-1, o.y);
-  Expect.equals(-1, o.z);
-  Expect.equals(-1, o.w);
-
-  n = new Int32x4(1, 1, 1, 1);
-  m = new Int32x4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
-  o = m + n;
-  Expect.equals(0, o.x);
-  Expect.equals(0, o.y);
-  Expect.equals(0, o.z);
-  Expect.equals(0, o.w);
-
-  n = new Int32x4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
-  m = new Int32x4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);
-  o = m + n;
-  Expect.equals(-2, o.x);
-  Expect.equals(-2, o.y);
-  Expect.equals(-2, o.z);
-  Expect.equals(-2, o.w);
-
-  n = new Int32x4(1, 0, 0, 0);
-  m = new Int32x4(2, 0, 0, 0);
-  o = n + m;
-  Expect.equals(3, o.x);
-  Expect.equals(0, o.y);
-  Expect.equals(0, o.z);
-  Expect.equals(0, o.w);
-
-  n = new Int32x4(1, 3, 0, 0);
-  m = new Int32x4(2, 4, 0, 0);
-  o = n + m;
-  Expect.equals(3, o.x);
-  Expect.equals(7, o.y);
-  Expect.equals(0, o.z);
-  Expect.equals(0, o.w);
-
-  n = new Int32x4(1, 3, 5, 0);
-  m = new Int32x4(2, 4, 6, 0);
-  o = n + m;
-  Expect.equals(3, o.x);
-  Expect.equals(7, o.y);
-  Expect.equals(11, o.z);
-  Expect.equals(0, o.w);
-
-  n = new Int32x4(1, 3, 5, 7);
-  m = new Int32x4(-2, -4, -6, -8);
-  o = n + m;
-  Expect.equals(-1, o.x);
-  Expect.equals(-1, o.y);
-  Expect.equals(-1, o.z);
-  Expect.equals(-1, o.w);
-}
-
-testSub() {
-  var m = new Int32x4(0, 0, 0, 0);
-  var n = new Int32x4(1, 1, 1, 1);
-  var o = m - n;
-  Expect.equals(-1, o.x);
-  Expect.equals(-1, o.y);
-  Expect.equals(-1, o.z);
-  Expect.equals(-1, o.w);
-
-  o = n - m;
-  Expect.equals(1, o.x);
-  Expect.equals(1, o.y);
-  Expect.equals(1, o.z);
-  Expect.equals(1, o.w);
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    testAdd();
-    testSub();
-  }
-}
diff --git a/tests/lib/typed_data/int32x4_bigint_test.dart b/tests/lib/typed_data/int32x4_bigint_test.dart
deleted file mode 100644
index c0daba9..0000000
--- a/tests/lib/typed_data/int32x4_bigint_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library int32x4_bigint_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-main() {
-  var n = 18446744073709551617;
-  var x = new Int32x4(n, 0, 0, 0);
-  Expect.equals(x.x, 1);
-}
diff --git a/tests/lib/typed_data/int32x4_list_test.dart b/tests/lib/typed_data/int32x4_list_test.dart
deleted file mode 100644
index 1b03ce6..0000000
--- a/tests/lib/typed_data/int32x4_list_test.dart
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library int32x4_list_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-testLoadStore(array) {
-  Expect.equals(8, array.length);
-  Expect.isTrue(array is List<Int32x4>);
-  array[0] = new Int32x4(1, 2, 3, 4);
-  Expect.equals(1, array[0].x);
-  Expect.equals(2, array[0].y);
-  Expect.equals(3, array[0].z);
-  Expect.equals(4, array[0].w);
-  array[1] = array[0];
-  array[0] = array[0].withX(9);
-  Expect.equals(9, array[0].x);
-  Expect.equals(2, array[0].y);
-  Expect.equals(3, array[0].z);
-  Expect.equals(4, array[0].w);
-  Expect.equals(1, array[1].x);
-  Expect.equals(2, array[1].y);
-  Expect.equals(3, array[1].z);
-  Expect.equals(4, array[1].w);
-}
-
-testLoadStoreDeopt(array, index, value) {
-  array[index] = value;
-  Expect.equals(value.x, array[index].x);
-  Expect.equals(value.y, array[index].y);
-  Expect.equals(value.z, array[index].z);
-  Expect.equals(value.w, array[index].w);
-}
-
-testLoadStoreDeoptDriver() {
-  Int32x4List list = new Int32x4List(4);
-  Int32x4 value = new Int32x4(1, 2, 3, 4);
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // Invalid index.
-    testLoadStoreDeopt(list, 5, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // null list.
-    testLoadStoreDeopt(null, 0, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // null value.
-    testLoadStoreDeopt(list, 0, null);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // non-smi index.
-    testLoadStoreDeopt(list, 3.14159, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // non-Int32x4 value.
-    testLoadStoreDeopt(list, 0, 4.toDouble());
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-  try {
-    // non-Int32x4List list.
-    testLoadStoreDeopt([new Int32x4(2, 3, 4, 5)], 0, value);
-  } catch (_) {}
-  for (int i = 0; i < 20; i++) {
-    testLoadStoreDeopt(list, 0, value);
-  }
-}
-
-testListZero() {
-  Int32x4List list = new Int32x4List(1);
-  Expect.equals(0, list[0].x);
-  Expect.equals(0, list[0].y);
-  Expect.equals(0, list[0].z);
-  Expect.equals(0, list[0].w);
-}
-
-testView(array) {
-  Expect.equals(8, array.length);
-  Expect.isTrue(array is List<Int32x4>);
-  Expect.equals(0, array[0].x);
-  Expect.equals(1, array[0].y);
-  Expect.equals(2, array[0].z);
-  Expect.equals(3, array[0].w);
-  Expect.equals(4, array[1].x);
-  Expect.equals(5, array[1].y);
-  Expect.equals(6, array[1].z);
-  Expect.equals(7, array[1].w);
-}
-
-testSublist(array) {
-  Expect.equals(8, array.length);
-  Expect.isTrue(array is Int32x4List);
-  var a = array.sublist(0, 1);
-  Expect.equals(1, a.length);
-  Expect.equals(0, a[0].x);
-  Expect.equals(1, a[0].y);
-  Expect.equals(2, a[0].z);
-  Expect.equals(3, a[0].w);
-  a = array.sublist(1, 2);
-  Expect.equals(4, a[0].x);
-  Expect.equals(5, a[0].y);
-  Expect.equals(6, a[0].z);
-  Expect.equals(7, a[0].w);
-  a = array.sublist(0);
-  Expect.equals(a.length, array.length);
-  for (int i = 0; i < array.length; i++) {
-    Expect.equals(array[i].x, a[i].x);
-    Expect.equals(array[i].y, a[i].y);
-    Expect.equals(array[i].z, a[i].z);
-    Expect.equals(array[i].w, a[i].w);
-  }
-}
-
-void testSpecialValues(array) {
-  var tests = [
-    [0x8901234567890, 0x34567890],
-    [0x89012A4567890, -1537836912],
-    [0x80000000, -2147483648],
-    [-0x80000000, -2147483648],
-    [0x7fffffff, 2147483647],
-    [-0x7fffffff, -2147483647],
-  ];
-  var int32x4;
-
-  for (var test in tests) {
-    var input = test[0];
-    var expected = test[1];
-
-    int32x4 = new Int32x4(input, 2, 3, 4);
-    array[0] = int32x4;
-    int32x4 = array[0];
-    Expect.equals(expected, int32x4.x);
-    Expect.equals(2, int32x4.y);
-    Expect.equals(3, int32x4.z);
-    Expect.equals(4, int32x4.w);
-
-    int32x4 = new Int32x4(1, input, 3, 4);
-    array[0] = int32x4;
-    int32x4 = array[0];
-    Expect.equals(1, int32x4.x);
-    Expect.equals(expected, int32x4.y);
-    Expect.equals(3, int32x4.z);
-    Expect.equals(4, int32x4.w);
-
-    int32x4 = new Int32x4(1, 2, input, 4);
-    array[0] = int32x4;
-    int32x4 = array[0];
-    Expect.equals(1, int32x4.x);
-    Expect.equals(2, int32x4.y);
-    Expect.equals(expected, int32x4.z);
-    Expect.equals(4, int32x4.w);
-
-    int32x4 = new Int32x4(1, 2, 3, input);
-    array[0] = int32x4;
-    int32x4 = array[0];
-    Expect.equals(1, int32x4.x);
-    Expect.equals(2, int32x4.y);
-    Expect.equals(3, int32x4.z);
-    Expect.equals(expected, int32x4.w);
-  }
-}
-
-main() {
-  var list;
-
-  list = new Int32x4List(8);
-  for (int i = 0; i < 20; i++) {
-    testLoadStore(list);
-  }
-  for (int i = 0; i < 20; i++) {
-    testSpecialValues(list);
-  }
-
-  Uint32List uint32List = new Uint32List(32);
-  for (int i = 0; i < uint32List.length; i++) {
-    uint32List[i] = i;
-  }
-  list = new Int32x4List.view(uint32List.buffer);
-  for (int i = 0; i < 20; i++) {
-    testView(list);
-  }
-  for (int i = 0; i < 20; i++) {
-    testSublist(list);
-  }
-  for (int i = 0; i < 20; i++) {
-    testLoadStore(list);
-  }
-  for (int i = 0; i < 20; i++) {
-    testListZero();
-  }
-  for (int i = 0; i < 20; i++) {
-    testSpecialValues(list);
-  }
-  testLoadStoreDeoptDriver();
-}
diff --git a/tests/lib/typed_data/int32x4_shuffle_test.dart b/tests/lib/typed_data/int32x4_shuffle_test.dart
deleted file mode 100644
index 2804155..0000000
--- a/tests/lib/typed_data/int32x4_shuffle_test.dart
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library uint32x4_shuffle_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-void testShuffle() {
-  var m = new Int32x4(1, 2, 3, 4);
-  var c;
-  c = m.shuffle(Int32x4.WZYX);
-  Expect.equals(4, c.x);
-  Expect.equals(3, c.y);
-  Expect.equals(2, c.z);
-  Expect.equals(1, c.w);
-}
-
-void testShuffleNonConstant(mask) {
-  var m = new Int32x4(1, 2, 3, 4);
-  var c;
-  c = m.shuffle(mask);
-  if (mask == 1) {
-    Expect.equals(2, c.x);
-    Expect.equals(1, c.y);
-    Expect.equals(1, c.z);
-    Expect.equals(1, c.w);
-  } else {
-    Expect.equals(Int32x4.YYYY + 1, mask);
-    Expect.equals(3, c.x);
-    Expect.equals(2, c.y);
-    Expect.equals(2, c.z);
-    Expect.equals(2, c.w);
-  }
-}
-
-void testShuffleMix() {
-  var m = new Int32x4(1, 2, 3, 4);
-  var n = new Int32x4(5, 6, 7, 8);
-  var c = m.shuffleMix(n, Int32x4.XYXY);
-  Expect.equals(1, c.x);
-  Expect.equals(2, c.y);
-  Expect.equals(5, c.z);
-  Expect.equals(6, c.w);
-}
-
-main() {
-  var xxxx = Int32x4.XXXX + 1;
-  var yyyy = Int32x4.YYYY + 1;
-  for (int i = 0; i < 20; i++) {
-    testShuffle();
-    testShuffleNonConstant(xxxx);
-    testShuffleNonConstant(yyyy);
-    testShuffleMix();
-  }
-}
diff --git a/tests/lib/typed_data/int32x4_sign_mask_test.dart b/tests/lib/typed_data/int32x4_sign_mask_test.dart
deleted file mode 100644
index 522054d..0000000
--- a/tests/lib/typed_data/int32x4_sign_mask_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library int32x4_sign_mask;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-void testImmediates() {
-  var f = new Int32x4(1, 2, 3, 4);
-  var m = f.signMask;
-  Expect.equals(0x0, m);
-  f = new Int32x4(-1, -2, -3, -4);
-  m = f.signMask;
-  Expect.equals(0xf, m);
-  f = new Int32x4.bool(true, false, false, false);
-  m = f.signMask;
-  Expect.equals(0x1, m);
-  f = new Int32x4.bool(false, true, false, false);
-  m = f.signMask;
-  Expect.equals(0x2, m);
-  f = new Int32x4.bool(false, false, true, false);
-  m = f.signMask;
-  Expect.equals(0x4, m);
-  f = new Int32x4.bool(false, false, false, true);
-  m = f.signMask;
-  Expect.equals(0x8, m);
-}
-
-void testZero() {
-  var f = new Int32x4(0, 0, 0, 0);
-  var m = f.signMask;
-  Expect.equals(0x0, m);
-  f = new Int32x4(-0, -0, -0, -0);
-  m = f.signMask;
-  Expect.equals(0x0, m);
-}
-
-void testLogic() {
-  var a = new Int32x4(0x80000000, 0x80000000, 0x80000000, 0x80000000);
-  var b = new Int32x4(0x70000000, 0x70000000, 0x70000000, 0x70000000);
-  var c = new Int32x4(0xf0000000, 0xf0000000, 0xf0000000, 0xf0000000);
-  var m1 = (a & c).signMask;
-  Expect.equals(0xf, m1);
-  var m2 = (a & b).signMask;
-  Expect.equals(0x0, m2);
-  var m3 = (b ^ a).signMask;
-  Expect.equals(0xf, m3);
-  var m4 = (b | c).signMask;
-  Expect.equals(0xf, m4);
-}
-
-main() {
-  for (int i = 0; i < 2000; i++) {
-    testImmediates();
-    testZero();
-    testLogic();
-  }
-}
diff --git a/tests/lib/typed_data/int32x4_test.dart b/tests/lib/typed_data/int32x4_test.dart
deleted file mode 100644
index 9d3874d..0000000
--- a/tests/lib/typed_data/int32x4_test.dart
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright (c) 2014, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-// VMOptions=--no-intrinsify
-
-library int32x4_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-void testBadArguments() {
-  Expect.throws(() => new Int32x4(null, 2, 3, 4), (e) => e is ArgumentError);
-  Expect.throws(() => new Int32x4(1, null, 3, 4), (e) => e is ArgumentError);
-  Expect.throws(() => new Int32x4(1, 2, null, 4), (e) => e is ArgumentError);
-  Expect.throws(() => new Int32x4(1, 2, 3, null), (e) => e is ArgumentError);
-  // Use a local variable typed as dynamic to avoid static warnings.
-  var str = "foo";
-  Expect.throws(() => new Int32x4(str, 2, 3, 4),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Int32x4(1, str, 3, 4),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Int32x4(1, 2, str, 4),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Int32x4(1, 2, 3, str),
-      (e) => e is ArgumentError || e is TypeError);
-  // Use a local variable typed as dynamic to avoid static warnings.
-  var d = 0.5;
-  Expect.throws(() => new Int32x4(d, 2, 3, 4),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Int32x4(1, d, 3, 4),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Int32x4(1, 2, d, 4),
-      (e) => e is ArgumentError || e is TypeError);
-  Expect.throws(() => new Int32x4(1, 2, 3, d),
-      (e) => e is ArgumentError || e is TypeError);
-}
-
-void testBigArguments() {
-  var tests = [
-    [0x8901234567890, 0x34567890],
-    [0x89012A4567890, -1537836912],
-    [0x80000000, -2147483648],
-    [-0x80000000, -2147483648],
-    [0x7fffffff, 2147483647],
-    [-0x7fffffff, -2147483647],
-  ];
-  var int32x4;
-
-  for (var test in tests) {
-    var input = test[0];
-    var expected = test[1];
-
-    int32x4 = new Int32x4(input, 2, 3, 4);
-    Expect.equals(expected, int32x4.x);
-    Expect.equals(2, int32x4.y);
-    Expect.equals(3, int32x4.z);
-    Expect.equals(4, int32x4.w);
-
-    int32x4 = new Int32x4(1, input, 3, 4);
-    Expect.equals(1, int32x4.x);
-    Expect.equals(expected, int32x4.y);
-    Expect.equals(3, int32x4.z);
-    Expect.equals(4, int32x4.w);
-
-    int32x4 = new Int32x4(1, 2, input, 4);
-    Expect.equals(1, int32x4.x);
-    Expect.equals(2, int32x4.y);
-    Expect.equals(expected, int32x4.z);
-    Expect.equals(4, int32x4.w);
-
-    int32x4 = new Int32x4(1, 2, 3, input);
-    Expect.equals(1, int32x4.x);
-    Expect.equals(2, int32x4.y);
-    Expect.equals(3, int32x4.z);
-    Expect.equals(expected, int32x4.w);
-  }
-}
-
-main() {
-  for (int i = 0; i < 20; i++) {
-    testBigArguments();
-    testBadArguments();
-  }
-}
diff --git a/tests/lib/typed_data/int64_list_load_store_test.dart b/tests/lib/typed_data/int64_list_load_store_test.dart
deleted file mode 100644
index 7665f58..0000000
--- a/tests/lib/typed_data/int64_list_load_store_test.dart
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Test that the compiler's load elimination phase sees interfering writes to
-// the array's buffer.
-
-import "dart:typed_data";
-import 'package:expect/expect.dart';
-
-void testStoreLoad(l, z) {
-  l[0] = 9223372036854775807;
-  l[1] = 9223372036854775806;
-  l[2] = l[0];
-  l[3] = z;
-  Expect.equals(l[0], 9223372036854775807);
-  Expect.equals(l[1], 9223372036854775806);
-  Expect.isTrue(l[1] < l[0]);
-  Expect.equals(l[2], l[0]);
-  Expect.equals(l[3], z);
-}
-
-main() {
-  var l = new Int64List(4);
-  var zGood = 9223372036854775807;
-  var zBad = false;
-  for (var i = 0; i < 40; i++) {
-    testStoreLoad(l, zGood);
-  }
-  // Deopt.
-  try {
-    testStoreLoad(l, zBad);
-  } catch (_) {}
-  for (var i = 0; i < 40; i++) {
-    testStoreLoad(l, zGood);
-  }
-}
diff --git a/tests/lib/typed_data/native_interceptor_no_own_method_to_intercept_test.dart b/tests/lib/typed_data/native_interceptor_no_own_method_to_intercept_test.dart
deleted file mode 100644
index 4b5d31c..0000000
--- a/tests/lib/typed_data/native_interceptor_no_own_method_to_intercept_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2015, 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";
-import 'dart:typed_data';
-
-@NoInline()
-use(s) => s;
-
-main() {
-  // In dart2js ByteData should have an interceptor so that it doesn't end up
-  // as an unknown JS object.
-  // This test is just to make sure that dart2js doesn't crash.
-  use(new ByteData(1).toString());
-}
diff --git a/tests/lib/typed_data/setRange_1_test.dart b/tests/lib/typed_data/setRange_1_test.dart
deleted file mode 100644
index f39515c..0000000
--- a/tests/lib/typed_data/setRange_1_test.dart
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2013, 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:typed_data';
-import 'package:expect/expect.dart';
-import 'setRange_lib.dart';
-
-sameTypeTest() {
-  checkSameSize(makeInt16List, makeInt16View, makeInt16View);
-  checkSameSize(makeUint16List, makeUint16View, makeUint16View);
-}
-
-main() {
-  sameTypeTest();
-}
diff --git a/tests/lib/typed_data/setRange_2_test.dart b/tests/lib/typed_data/setRange_2_test.dart
deleted file mode 100644
index efd85f5..0000000
--- a/tests/lib/typed_data/setRange_2_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2013, 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:typed_data';
-import 'package:expect/expect.dart';
-import 'setRange_lib.dart';
-
-sameElementSizeTest() {
-  // Views of elements with the same size but different 'types'.
-  checkSameSize(makeInt16List, makeInt16View, makeUint16View);
-  checkSameSize(makeInt16List, makeUint16View, makeInt16View);
-}
-
-main() {
-  sameElementSizeTest();
-}
diff --git a/tests/lib/typed_data/setRange_3_test.dart b/tests/lib/typed_data/setRange_3_test.dart
deleted file mode 100644
index 7ac0e01..0000000
--- a/tests/lib/typed_data/setRange_3_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2013, 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:typed_data';
-import 'package:expect/expect.dart';
-import 'setRange_lib.dart';
-
-expandContractTest() {
-  // Copying between views that have different element sizes can't be done with
-  // a single scan-up or scan-down.
-  //
-  // Typed lists a1 and a2 share a buffer as follows:
-  //
-  // a1:  aaaabbbbccccddddeeeeffffgggghhhh
-  // a2:              abcdefgh
-
-  var a1 = new Int32List(8);
-  var buffer = a1.buffer;
-  var a2 = new Int8List.view(buffer, 12, 8);
-
-  initialize(a2);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8]', '$a2');
-  a1.setRange(0, 8, a2);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8]', '$a1');
-
-  initialize(a1);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8]', '$a1');
-  a2.setRange(0, 8, a1);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8]', '$a2');
-}
-
-main() {
-  expandContractTest();
-}
diff --git a/tests/lib/typed_data/setRange_4_test.dart b/tests/lib/typed_data/setRange_4_test.dart
deleted file mode 100644
index 5ddb266..0000000
--- a/tests/lib/typed_data/setRange_4_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2014, 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:typed_data';
-import 'package:expect/expect.dart';
-import 'setRange_lib.dart';
-
-clampingTest() {
-  var a1 = new Int8List(8);
-  var a2 = new Uint8ClampedList.view(a1.buffer);
-  initialize(a1);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8]', '$a1');
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8]', '$a2');
-  a1[0] = -1;
-  a2.setRange(0, 2, a1);
-  Expect.equals('[0, 2, 3, 4, 5, 6, 7, 8]', '$a2');
-}
-
-main() {
-  clampingTest();
-}
diff --git a/tests/lib/typed_data/setRange_5_test.dart b/tests/lib/typed_data/setRange_5_test.dart
deleted file mode 100644
index fb86cb0..0000000
--- a/tests/lib/typed_data/setRange_5_test.dart
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (c) 2014, 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:typed_data';
-import 'package:expect/expect.dart';
-import 'setRange_lib.dart';
-
-overlapTest() {
-  // buffer:  xxxxxxxxyyyyyyyyzzzzzzzz  // 3 * float32
-  // a0:       1 2 3 4 5 6 7 8 9101112  // 12 bytes
-  // a1:         a b c d e              //  5 bytes
-  // a2:           p q r s t            //  5 bytes
-  var buffer = new Float32List(3).buffer;
-  var a0 = new Int8List.view(buffer);
-  var a1 = new Int8List.view(buffer, 1, 5);
-  var a2 = new Int8List.view(buffer, 2, 5);
-  initialize(a0);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]', '$a0');
-  Expect.equals('[2, 3, 4, 5, 6]', '$a1');
-  Expect.equals('[3, 4, 5, 6, 7]', '$a2');
-  a1.setRange(0, 5, a2);
-  Expect.equals('[1, 3, 4, 5, 6, 7, 7, 8, 9, 10, 11, 12]', '$a0');
-
-  initialize(a0);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]', '$a0');
-  Expect.equals('[2, 3, 4, 5, 6]', '$a1');
-  Expect.equals('[3, 4, 5, 6, 7]', '$a2');
-  a2.setRange(0, 5, a1);
-  Expect.equals('[1, 2, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12]', '$a0');
-}
-
-main() {
-  overlapTest();
-}
diff --git a/tests/lib/typed_data/setRange_lib.dart b/tests/lib/typed_data/setRange_lib.dart
deleted file mode 100644
index f9b1dfb..0000000
--- a/tests/lib/typed_data/setRange_lib.dart
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (c) 2013, 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 setRange_lib;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-initialize(a) {
-  for (int i = 0; i < a.length; i++) {
-    a[i] = i + 1;
-  }
-}
-
-makeInt16View(buffer, byteOffset, length) =>
-    new Int16List.view(buffer, byteOffset, length);
-
-makeUint16View(buffer, byteOffset, length) =>
-    new Uint16List.view(buffer, byteOffset, length);
-
-makeInt16List(length) => new Int16List(length);
-makeUint16List(length) => new Uint16List(length);
-
-checkSameSize(constructor0, constructor1, constructor2) {
-  // Typed lists a1 and a2 share a buffer as follows (bytes):
-  //
-  //  a0:  aabbccddeeffgghhii
-  //  a1:  aabbccddeeffgg
-  //  a2:      aabbccddeeffgg
-
-  var a0 = constructor0(9);
-  var buffer = a0.buffer;
-  var a1 = constructor1(buffer, 0, 7);
-  var a2 = constructor2(buffer, 2 * a0.elementSizeInBytes, 7);
-
-  initialize(a0);
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7, 8, 9]', '$a0');
-  Expect.equals('[1, 2, 3, 4, 5, 6, 7]', '$a1');
-  Expect.equals('[3, 4, 5, 6, 7, 8, 9]', '$a2');
-
-  initialize(a0);
-  a1.setRange(0, 7, a2);
-  Expect.equals('[3, 4, 5, 6, 7, 8, 9, 8, 9]', '$a0');
-
-  initialize(a0);
-  a2.setRange(0, 7, a1);
-  Expect.equals('[1, 2, 1, 2, 3, 4, 5, 6, 7]', '$a0');
-
-  initialize(a0);
-  a1.setRange(1, 7, a2);
-  Expect.equals('[1, 3, 4, 5, 6, 7, 8, 8, 9]', '$a0');
-
-  initialize(a0);
-  a2.setRange(1, 7, a1);
-  Expect.equals('[1, 2, 3, 1, 2, 3, 4, 5, 6]', '$a0');
-
-  initialize(a0);
-  a1.setRange(0, 6, a2, 1);
-  Expect.equals('[4, 5, 6, 7, 8, 9, 7, 8, 9]', '$a0');
-
-  initialize(a0);
-  a2.setRange(0, 6, a1, 1);
-  Expect.equals('[1, 2, 2, 3, 4, 5, 6, 7, 9]', '$a0');
-}
diff --git a/tests/lib/typed_data/simd_store_to_load_forward_test.dart b/tests/lib/typed_data/simd_store_to_load_forward_test.dart
deleted file mode 100644
index 3a24ecd..0000000
--- a/tests/lib/typed_data/simd_store_to_load_forward_test.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library simd_store_to_load_forward_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-Float32x4 testLoadStoreForwardingFloat32x4(Float32x4List l, Float32x4 v) {
-  l[1] = v;
-  var r = l[1];
-  return r;
-}
-
-main() {
-  Float32x4List l = new Float32x4List(4);
-  Float32x4 a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  Float32x4 b;
-  for (int i = 0; i < 20; i++) {
-    b = testLoadStoreForwardingFloat32x4(l, a);
-  }
-  Expect.equals(a.x, b.x);
-  Expect.equals(a.y, b.y);
-  Expect.equals(a.z, b.z);
-  Expect.equals(a.w, b.w);
-}
diff --git a/tests/lib/typed_data/simd_type_check_removal.dart b/tests/lib/typed_data/simd_type_check_removal.dart
deleted file mode 100644
index 816b546..0000000
--- a/tests/lib/typed_data/simd_type_check_removal.dart
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (c) 2013, 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=--max_deoptimization_counter_threshold=1000 --optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library simd_store_to_load_forward_test;
-
-import 'dart:typed_data';
-import "package:expect/expect.dart";
-
-bool testFloat32x4TypeCheck(Float32x4 v) {
-  if (v == null) {
-    v = new Float32x4.zero();
-  }
-  var l = v * v;
-  var b = v + l;
-  return b is Float32x4;
-}
-
-main() {
-  Float32x4List l = new Float32x4List(4);
-  Float32x4 a = new Float32x4(1.0, 2.0, 3.0, 4.0);
-  var b;
-  for (int i = 0; i < 8000; i++) {
-    b = testFloat32x4TypeCheck(null);
-  }
-  Expect.equals(true, b);
-}
diff --git a/tests/lib/typed_data/typed_data_from_list_test.dart b/tests/lib/typed_data/typed_data_from_list_test.dart
deleted file mode 100644
index 9548c73..0000000
--- a/tests/lib/typed_data/typed_data_from_list_test.dart
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2013, 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:collection';
-import 'dart:typed_data';
-
-main() {
-  var list = new UnmodifiableListView([1, 2]);
-  var typed = new Uint8List.fromList(list);
-  if (typed[0] != 1 || typed[1] != 2 || typed.length != 2) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/lib/typed_data/typed_data_hierarchy_int64_test.dart b/tests/lib/typed_data/typed_data_hierarchy_int64_test.dart
deleted file mode 100644
index 19142ff..0000000
--- a/tests/lib/typed_data/typed_data_hierarchy_int64_test.dart
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library typed_data_hierarchy_int64_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-var inscrutable = null;
-
-void implementsTypedData() {
-  Expect.isTrue(inscrutable(new Int64List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Uint64List(1)) is TypedData);
-}
-
-void implementsList() {
-  Expect.isTrue(inscrutable(new Int64List(1)) is List<int>);
-  Expect.isTrue(inscrutable(new Uint64List(1)) is List<int>);
-}
-
-main() {
-  inscrutable = (x) => x;
-  implementsTypedData();
-  implementsList();
-}
diff --git a/tests/lib/typed_data/typed_data_hierarchy_test.dart b/tests/lib/typed_data/typed_data_hierarchy_test.dart
deleted file mode 100644
index cdcbec8..0000000
--- a/tests/lib/typed_data/typed_data_hierarchy_test.dart
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-background-compilation
-
-// Library tag to be able to run in html test framework.
-library typed_data_hierarchy_test;
-
-import 'dart:typed_data';
-import 'package:expect/expect.dart';
-
-var inscrutable = null;
-
-void testClampedList() {
-  // Force lookup of Uint8List first.
-  Expect.isTrue(inscrutable(new Uint8List(1)) is Uint8List);
-
-  Expect.isFalse(
-      new Uint8ClampedList(1) is Uint8List,
-      'Uint8ClampedList should not be a subtype of Uint8List '
-      'in optimizable test');
-  Expect.isFalse(inscrutable(new Uint8ClampedList(1)) is Uint8List,
-      'Uint8ClampedList should not be a subtype of Uint8List in dynamic test');
-}
-
-void implementsTypedData() {
-  Expect.isTrue(inscrutable(new ByteData(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Float32List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Float32x4List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Float64List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Int8List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Int16List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Int32List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Uint8List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Uint8ClampedList(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Uint16List(1)) is TypedData);
-  Expect.isTrue(inscrutable(new Uint32List(1)) is TypedData);
-}
-
-void implementsList() {
-  Expect.isTrue(inscrutable(new Float32List(1)) is List<double>);
-  Expect.isTrue(inscrutable(new Float32x4List(1)) is List<Float32x4>);
-  Expect.isTrue(inscrutable(new Float64List(1)) is List<double>);
-  Expect.isTrue(inscrutable(new Int8List(1)) is List<int>);
-  Expect.isTrue(inscrutable(new Int16List(1)) is List<int>);
-  Expect.isTrue(inscrutable(new Int32List(1)) is List<int>);
-  Expect.isTrue(inscrutable(new Uint8List(1)) is List<int>);
-  Expect.isTrue(inscrutable(new Uint8ClampedList(1)) is List<int>);
-  Expect.isTrue(inscrutable(new Uint16List(1)) is List<int>);
-  Expect.isTrue(inscrutable(new Uint32List(1)) is List<int>);
-}
-
-main() {
-  inscrutable = (x) => x;
-
-  // Note: this test must come first to control order of lookup on Uint8List and
-  // Uint8ClampedList.
-  testClampedList();
-
-  implementsTypedData();
-  implementsList();
-}
diff --git a/tests/lib/typed_data/typed_data_list_test.dart b/tests/lib/typed_data/typed_data_list_test.dart
deleted file mode 100644
index d37f781..0000000
--- a/tests/lib/typed_data/typed_data_list_test.dart
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright (c) 2013, 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:typed_data';
-import 'package:expect/expect.dart';
-
-@AssumeDynamic()
-@NoInline()
-confuse(x) => x;
-
-void testListFunctions(list, first, last, toElementType) {
-  assert(list.length > 0);
-
-  var reversed = list.reversed;
-  Expect.listEquals(list, reversed.toList().reversed.toList());
-  int index = list.length - 1;
-  for (var x in reversed) {
-    Expect.equals(list[index], x);
-    index--;
-  }
-
-  // Typed lists are fixed length.
-  Expect.throws(() => list.add(toElementType(0)), (e) => e is UnsupportedError);
-  Expect.throws(() => list.addAll([toElementType(1), toElementType(2)]),
-      (e) => e is UnsupportedError);
-  Expect.throws(() => list.clear(), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.insert(0, toElementType(0)), (e) => e is UnsupportedError);
-  Expect.throws(() => list.insertAll(0, [toElementType(1), toElementType(2)]),
-      (e) => e is UnsupportedError);
-  Expect.throws(() => list.remove(0), (e) => e is UnsupportedError);
-  Expect.throws(() => list.removeAt(0), (e) => e is UnsupportedError);
-  Expect.throws(() => list.removeLast(), (e) => e is UnsupportedError);
-  Expect.throws(() => list.removeRange(0, 1), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.removeWhere((x) => true), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.replaceRange(0, 1, []), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.retainWhere((x) => true), (e) => e is UnsupportedError);
-
-  var map = list.asMap();
-  Expect.equals(list.length, map.length);
-  Expect.isTrue(map is Map);
-  Expect.listEquals(list, map.values.toList());
-  for (int i = 0; i < list.length; i++) {
-    Expect.equals(list[i], map[i]);
-  }
-
-  Expect.listEquals(list, list.getRange(0, list.length).toList());
-  var subRange = list.getRange(1, list.length - 1).toList();
-  Expect.equals(list.length - 2, subRange.length);
-  index = 1;
-  for (var x in subRange) {
-    Expect.equals(list[index], x);
-    index++;
-  }
-
-  Expect.equals(0, list.lastIndexOf(first));
-  Expect.equals(list.length - 1, list.lastIndexOf(last));
-  Expect.equals(-1, list.lastIndexOf(toElementType(-1)));
-
-  var copy = list.toList();
-  list.fillRange(1, list.length - 1, toElementType(0));
-  Expect.equals(copy.first, list.first);
-  Expect.equals(copy.last, list.last);
-  for (int i = 1; i < list.length - 1; i++) {
-    Expect.equals(0, list[i]);
-  }
-
-  list.setAll(
-      1, list.getRange(1, list.length - 1).map((x) => toElementType(2)));
-  Expect.equals(copy.first, list.first);
-  Expect.equals(copy.last, list.last);
-  for (int i = 1; i < list.length - 1; i++) {
-    Expect.equals(2, list[i]);
-  }
-
-  list.setRange(1, list.length - 1,
-      new Iterable.generate(list.length - 2, (x) => toElementType(x + 5)));
-  Expect.equals(first, list.first);
-  Expect.equals(last, list.last);
-  for (int i = 1; i < list.length - 1; i++) {
-    Expect.equals(4 + i, list[i]);
-  }
-  list.setRange(1, list.length - 1,
-      new Iterable.generate(list.length - 1, (x) => toElementType(x + 5)), 1);
-  Expect.equals(first, list.first);
-  Expect.equals(last, list.last);
-  for (int i = 1; i < list.length - 1; i++) {
-    Expect.equals(5 + i, list[i]);
-  }
-
-  Expect.throws(
-      () => list.setRange(1, list.length - 1, []), (e) => e is StateError);
-
-  for (int i = 0; i < list.length; i++) {
-    list[list.length - 1 - i] = toElementType(i);
-  }
-  list.sort();
-  for (int i = 0; i < list.length; i++) {
-    Expect.equals(i, list[i]);
-  }
-
-  Expect.listEquals(list.getRange(1, list.length - 1).toList(),
-      list.sublist(1, list.length - 1));
-  Expect.listEquals(list.getRange(1, list.length).toList(), list.sublist(1));
-  Expect.listEquals(list, list.sublist(0));
-
-  Expect.listEquals([], list.sublist(0, 0));
-  Expect.listEquals([], list.sublist(list.length));
-  Expect.listEquals([], list.sublist(list.length, list.length));
-
-  Expect.throws(() => list.sublist(list.length + 1), (e) => e is RangeError);
-  Expect.throws(() => list.sublist(0, list.length + 1), (e) => e is RangeError);
-  Expect.throws(() => list.sublist(1, 0), (e) => e is RangeError);
-}
-
-void emptyChecks(list, toElementType) {
-  assert(list.length == 0);
-
-  Expect.isTrue(list.isEmpty);
-
-  var reversed = list.reversed;
-  Expect.listEquals(list, reversed.toList().reversed.toList());
-
-  // Typed lists are fixed length. Even when they are empty.
-  Expect.throws(() => list.add(toElementType(0)), (e) => e is UnsupportedError);
-  Expect.throws(() => list.addAll([toElementType(1), toElementType(2)]),
-      (e) => e is UnsupportedError);
-  Expect.throws(() => list.clear(), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.insert(0, toElementType(0)), (e) => e is UnsupportedError);
-  Expect.throws(() => list.insertAll(0, [toElementType(1), toElementType(2)]),
-      (e) => e is UnsupportedError);
-  Expect.throws(() => list.remove(0), (e) => e is UnsupportedError);
-  Expect.throws(() => list.removeAt(0), (e) => e is UnsupportedError);
-  Expect.throws(() => list.removeLast(), (e) => e is UnsupportedError);
-  Expect.throws(() => list.removeRange(0, 1), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.removeWhere((x) => true), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.replaceRange(0, 1, []), (e) => e is UnsupportedError);
-  Expect.throws(
-      () => list.retainWhere((x) => true), (e) => e is UnsupportedError);
-
-  var map = list.asMap();
-  Expect.equals(list.length, map.length);
-  Expect.isTrue(map is Map);
-  Expect.listEquals(list, map.values.toList());
-  for (int i = 0; i < list.length; i++) {
-    Expect.equals(list[i], map[i]);
-  }
-
-  Expect.listEquals(list, list.getRange(0, list.length).toList());
-  Expect.equals(-1, list.lastIndexOf(toElementType(-1)));
-
-  var copy = list.toList();
-  // Make sure we are allowed to call range-functions if they are 0..0.
-  list.fillRange(0, 0);
-  Expect.listEquals([], list.getRange(0, 0).toList());
-
-  list.setRange(0, 0, [toElementType(1), toElementType(2)]);
-
-  list.sort();
-
-  Expect.listEquals([], list.sublist(0, 0));
-}
-
-main() {
-  toDouble(x) => x.toDouble();
-  toInt(x) => x.toInt();
-
-  testListFunctions(
-      new Float32List.fromList([1.5, 6.3, 9.5]), 1.5, 9.5, toDouble);
-  testListFunctions(
-      new Float64List.fromList([1.5, 6.3, 9.5]), 1.5, 9.5, toDouble);
-  testListFunctions(new Int8List.fromList([3, 5, 9]), 3, 9, toInt);
-  testListFunctions(new Int16List.fromList([3, 5, 9]), 3, 9, toInt);
-  testListFunctions(new Int32List.fromList([3, 5, 9]), 3, 9, toInt);
-  testListFunctions(new Uint8List.fromList([3, 5, 9]), 3, 9, toInt);
-  testListFunctions(new Uint16List.fromList([3, 5, 9]), 3, 9, toInt);
-  testListFunctions(new Uint32List.fromList([3, 5, 9]), 3, 9, toInt);
-
-  emptyChecks(new Float32List(0), toDouble);
-  emptyChecks(new Float64List(0), toDouble);
-  emptyChecks(new Int8List(0), toInt);
-  emptyChecks(new Int16List(0), toInt);
-  emptyChecks(new Int32List(0), toInt);
-  emptyChecks(new Uint8List(0), toInt);
-  emptyChecks(new Uint16List(0), toInt);
-  emptyChecks(new Uint32List(0), toInt);
-}
diff --git a/tests/lib/typed_data/typed_data_load2_test.dart b/tests/lib/typed_data/typed_data_load2_test.dart
deleted file mode 100644
index 3775615..0000000
--- a/tests/lib/typed_data/typed_data_load2_test.dart
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright (c) 2014, 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.
-
-// Test that the compiler's load elimination phase sees interfering writes to
-// the array's buffer.
-
-import "dart:typed_data";
-import 'package:expect/expect.dart';
-
-aliasWithByteData1() {
-  var aa = new Int8List(10);
-  var b = new ByteData.view(aa.buffer);
-  for (int i = 0; i < aa.length; i++) aa[i] = 9;
-
-  var x1 = aa[3];
-  b.setInt8(3, 1);
-  var x2 = aa[3];
-
-  Expect.equals(9, x1);
-  Expect.equals(1, x2);
-}
-
-aliasWithByteData2() {
-  var b = new ByteData(10);
-  var aa = new Int8List.view(b.buffer);
-  for (int i = 0; i < aa.length; i++) aa[i] = 9;
-
-  var x1 = aa[3];
-  b.setInt8(3, 1);
-  var x2 = aa[3];
-
-  Expect.equals(9, x1);
-  Expect.equals(1, x2);
-}
-
-alias8x8() {
-  var buffer = new Int8List(10).buffer;
-  var a1 = new Int8List.view(buffer);
-  var a2 = new Int8List.view(buffer, 1);
-
-  for (int i = 0; i < a1.length; i++) a1[i] = 9;
-
-  // Different indexes that alias.
-  var x1 = a1[1];
-  a2[0] = 0;
-  var x2 = a1[1];
-  Expect.equals(9, x1);
-  Expect.equals(0, x2);
-
-  for (int i = 0; i < a1.length; i++) a1[i] = 9;
-
-  // Same indexes that don't alias.
-  x1 = a1[1];
-  a2[1] = 5;
-  x2 = a1[1];
-  Expect.equals(9, x1);
-  Expect.equals(9, x2);
-}
-
-alias8x16() {
-  var a1 = new Int8List(10);
-  var a2 = new Int16List.view(a1.buffer);
-
-  for (int i = 0; i < a1.length; i++) a1[i] = 9;
-
-  // Same indexes that alias.
-  var x1 = a1[0];
-  a2[0] = 0x101;
-  var x2 = a1[0];
-  Expect.equals(9, x1);
-  Expect.equals(1, x2);
-
-  for (int i = 0; i < a1.length; i++) a1[i] = 9;
-
-  // Different indexes that alias.
-  x1 = a1[4];
-  a2[2] = 0x505;
-  x2 = a1[4];
-  Expect.equals(9, x1);
-  Expect.equals(5, x2);
-
-  for (int i = 0; i < a1.length; i++) a1[i] = 9;
-
-  // Same indexes that don't alias.
-  x1 = a1[3];
-  a2[3] = 0x505;
-  x2 = a1[3];
-  Expect.equals(9, x1);
-  Expect.equals(9, x2);
-
-  for (int i = 0; i < a1.length; i++) a1[i] = 9;
-
-  // Different indexes don't alias.
-  x1 = a1[2];
-  a2[0] = 0x505;
-  x2 = a1[2];
-  Expect.equals(9, x1);
-  Expect.equals(9, x2);
-}
-
-main() {
-  aliasWithByteData1();
-  aliasWithByteData2();
-  alias8x8();
-  alias8x16();
-}
diff --git a/tests/lib/typed_data/typed_data_load_test.dart b/tests/lib/typed_data/typed_data_load_test.dart
deleted file mode 100644
index 55a0808..0000000
--- a/tests/lib/typed_data/typed_data_load_test.dart
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (c) 2013, 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.
-
-// Test that the compiler's load elimination phase does not re-use the
-// value that was stored in a typed array.
-
-import "dart:typed_data";
-
-main() {
-  var list = new Int8List(1);
-  list[0] = 300;
-  if (list[0] != 44) {
-    throw 'Test failed';
-  }
-
-  var a = list[0];
-  list[0] = 0;
-  if (list[0] != 0) {
-    throw 'Test failed';
-  }
-}
diff --git a/tests/lib/typed_data/typed_data_sublist_type_test.dart b/tests/lib/typed_data/typed_data_sublist_type_test.dart
deleted file mode 100644
index cb83dfa..0000000
--- a/tests/lib/typed_data/typed_data_sublist_type_test.dart
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright (c) 2013, 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:typed_data';
-import 'package:expect/expect.dart';
-
-// Test that the sublist of a typed_data list is of the same type.
-
-var inscrutable;
-
-class Is<T> {
-  final name;
-  Is(this.name);
-  check(x) => x is T;
-  expect(x, part) {
-    Expect.isTrue(check(x), '($part: ${x.runtimeType}) is $name');
-  }
-
-  expectNot(x, part) {
-    Expect.isFalse(check(x), '($part: ${x.runtimeType}) is! $name');
-  }
-}
-
-void testSublistType(input, positive, all) {
-  var negative = all.where((check) => !positive.contains(check));
-
-  input = inscrutable(input);
-
-  for (var check in positive) check.expect(input, 'input');
-  for (var check in negative) check.expectNot(input, 'input');
-
-  var sub = inscrutable(input.sublist(1));
-
-  for (var check in positive) check.expect(sub, 'sublist');
-  for (var check in negative) check.expectNot(sub, 'sublist');
-
-  var sub2 = inscrutable(input.sublist(10));
-
-  Expect.equals(0, sub2.length);
-  for (var check in positive) check.expect(sub2, 'empty sublist');
-  for (var check in negative) check.expectNot(sub2, 'empty sublist');
-}
-
-void testTypes() {
-  var isFloat32list = new Is<Float32List>('Float32List');
-  var isFloat64list = new Is<Float64List>('Float64List');
-
-  var isInt8List = new Is<Int8List>('Int8List');
-  var isInt16List = new Is<Int16List>('Int16List');
-  var isInt32List = new Is<Int32List>('Int32List');
-
-  var isUint8List = new Is<Uint8List>('Uint8List');
-  var isUint16List = new Is<Uint16List>('Uint16List');
-  var isUint32List = new Is<Uint32List>('Uint32List');
-
-  var isUint8ClampedList = new Is<Uint8ClampedList>('Uint8ClampedList');
-
-  var isIntList = new Is<List<int>>('List<int>');
-  var isDoubleList = new Is<List<double>>('List<double>');
-  var isNumList = new Is<List<num>>('List<num>');
-
-  var allChecks = [
-    isFloat32list,
-    isFloat64list,
-    isInt8List,
-    isInt16List,
-    isInt32List,
-    isUint8List,
-    isUint16List,
-    isUint32List,
-    isUint8ClampedList
-  ];
-
-  testInt(list, check) {
-    testSublistType(list, [check, isIntList, isNumList], allChecks);
-  }
-
-  testDouble(list, check) {
-    testSublistType(list, [check, isDoubleList, isNumList], allChecks);
-  }
-
-  testDouble(new Float32List(10), isFloat32list);
-  testDouble(new Float64List(10), isFloat64list);
-
-  testInt(new Int8List(10), isInt8List);
-  testInt(new Int16List(10), isInt16List);
-  testInt(new Int32List(10), isInt32List);
-
-  testInt(new Uint8List(10), isUint8List);
-  testInt(new Uint16List(10), isUint16List);
-  testInt(new Uint32List(10), isUint32List);
-
-  testInt(new Uint8ClampedList(10), isUint8ClampedList);
-}
-
-main() {
-  inscrutable = (x) => x;
-  testTypes();
-}
diff --git a/tests/lib/typed_data/typed_list_iterable_test.dart b/tests/lib/typed_data/typed_list_iterable_test.dart
deleted file mode 100644
index 5d5e0503..0000000
--- a/tests/lib/typed_data/typed_list_iterable_test.dart
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (c) 2013, 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:typed_data';
-import 'package:expect/expect.dart';
-
-void testIterableFunctions(list, first, last, toElementType) {
-  assert(list.length > 0);
-
-  Expect.equals(first, list.first);
-  Expect.equals(last, list.last);
-  Expect.equals(first, list.firstWhere((x) => x == first));
-  Expect.equals(last, list.lastWhere((x) => x == last));
-  if (list.length == 1) {
-    Expect.equals(first, list.single);
-    Expect.equals(first, list.singleWhere((x) => x == last));
-  } else {
-    Expect.throws(() => list.single, (e) => e is StateError);
-    bool isFirst = true;
-    Expect.equals(first, list.singleWhere((x) {
-      if (isFirst) {
-        isFirst = false;
-        return true;
-      }
-      return false;
-    }));
-  }
-  Expect.isFalse(list.isEmpty);
-
-  int i = 0;
-  for (var x in list) {
-    Expect.equals(list[i++], x);
-  }
-  Expect.isTrue(list.any((x) => x == last));
-  Expect.isFalse(list.any((x) => false));
-  Expect.isTrue(list.contains(last));
-  Expect.equals(first, list.elementAt(0));
-  Expect.isTrue(list.every((x) => true));
-  Expect.isFalse(list.every((x) => x != last));
-  Expect.listEquals([], list.expand((x) => []).toList());
-  var expand2 = list.expand((x) => [x, x]);
-  i = 0;
-  for (var x in expand2) {
-    Expect.equals(list[i ~/ 2], x);
-    i++;
-  }
-  Expect.equals(2 * list.length, i);
-  Expect.listEquals(list, list.fold([], (result, x) => result..add(x)));
-  i = 0;
-  list.forEach((x) {
-    Expect.equals(list[i++], x);
-  });
-  Expect.equals(list.toList().join("*"), list.join("*"));
-  Expect.listEquals(list, list.map((x) => x).toList());
-  int mapCount = 0;
-  var mappedList = list.map((x) {
-    mapCount++;
-    return x;
-  });
-  Expect.equals(0, mapCount);
-  Expect.equals(list.length, mappedList.length);
-  Expect.equals(0, mapCount);
-  mappedList.join();
-  Expect.equals(list.length, mapCount);
-
-  Expect.listEquals(list, list.where((x) => true).toList());
-  int whereCount = 0;
-  var whereList = list.where((x) {
-    whereCount++;
-    return true;
-  });
-  Expect.equals(0, whereCount);
-  Expect.equals(list.length, whereList.length);
-  Expect.equals(list.length, whereCount);
-
-  if (list.length > 1) {
-    var reduceResult = toElementType(1);
-    Expect.equals(
-        toElementType(list.length), list.reduce((x, y) => reduceResult + 1));
-  } else {
-    Expect.equals(first, list.reduce((x, y) {
-      throw "should not be called";
-    }));
-  }
-
-  Expect.isTrue(list.skip(list.length).isEmpty);
-  Expect.listEquals(list, list.skip(0).toList());
-  Expect.isTrue(list.skipWhile((x) => true).isEmpty);
-  Expect.listEquals(list, list.skipWhile((x) => false).toList());
-  Expect.listEquals(list, list.take(list.length).toList());
-  Expect.isTrue(list.take(0).isEmpty);
-  Expect.isTrue(list.takeWhile((x) => false).isEmpty);
-  Expect.listEquals(list, list.takeWhile((x) => true).toList());
-  Expect.listEquals(list, list.toList().toList());
-  var l2 = list.toList();
-  l2.add(first);
-  Expect.equals(first, l2.last);
-  var l3 = list.toList(growable: false);
-  Expect.throws(() => l3.add(last), (e) => e is UnsupportedError);
-}
-
-void emptyChecks(list) {
-  assert(list.length == 0);
-
-  Expect.isTrue(list.isEmpty);
-
-  Expect.throws(() => list.first, (e) => e is StateError);
-  Expect.throws(() => list.last, (e) => e is StateError);
-  Expect.throws(() => list.single, (e) => e is StateError);
-  Expect.throws(() => list.firstWhere((x) => true), (e) => e is StateError);
-  Expect.throws(() => list.lastWhere((x) => true), (e) => e is StateError);
-  Expect.throws(() => list.singleWhere((x) => true), (e) => e is StateError);
-
-  Expect.isFalse(list.any((x) => true));
-  Expect.isFalse(list.contains(null));
-  Expect.throws(() => list.elementAt(0), (e) => e is RangeError);
-  Expect.isTrue(list.every((x) => false));
-  Expect.listEquals([], list.expand((x) => []).toList());
-  Expect.listEquals([], list.expand((x) => [x, x]).toList());
-  Expect.listEquals(
-      [],
-      list.expand((x) {
-        throw "should not be reached";
-      }).toList());
-  Expect.listEquals([], list.fold([], (result, x) => result..add(x)));
-  Expect.equals(list.toList().join("*"), list.join("*"));
-  Expect.listEquals(list, list.map((x) => x).toList());
-  int mapCount = 0;
-  var mappedList = list.map((x) {
-    mapCount++;
-    return x;
-  });
-  Expect.equals(0, mapCount);
-  Expect.equals(list.length, mappedList.length);
-  Expect.equals(0, mapCount);
-  mappedList.join();
-  Expect.equals(list.length, mapCount);
-
-  Expect.listEquals(list, list.where((x) => true).toList());
-  int whereCount = 0;
-  var whereList = list.where((x) {
-    whereCount++;
-    return true;
-  });
-  Expect.equals(0, whereCount);
-  Expect.equals(list.length, whereList.length);
-  Expect.equals(list.length, whereCount);
-
-  Expect.throws(() => list.reduce((x, y) => x), (e) => e is StateError);
-
-  Expect.isTrue(list.skip(list.length).isEmpty);
-  Expect.isTrue(list.skip(0).isEmpty);
-  Expect.isTrue(list.skipWhile((x) => true).isEmpty);
-  Expect.isTrue(list.skipWhile((x) => false).isEmpty);
-  Expect.isTrue(list.take(list.length).isEmpty);
-  Expect.isTrue(list.take(0).isEmpty);
-  Expect.isTrue(list.takeWhile((x) => false).isEmpty);
-  Expect.isTrue(list.takeWhile((x) => true).isEmpty);
-  Expect.isTrue(list.toList().isEmpty);
-  var l2 = list.toList();
-  var sampleValue = list is List<int> ? 0 : 0.0;
-  l2.add(sampleValue);
-  Expect.equals(sampleValue, l2.last);
-  var l3 = list.toList(growable: false);
-  Expect.throws(() => l3.add(sampleValue), (e) => e is UnsupportedError);
-}
-
-main() {
-  toDouble(x) => x.toDouble();
-  toInt(x) => x.toInt();
-
-  testIterableFunctions(
-      new Float32List.fromList([1.5, 9.5]), 1.5, 9.5, toDouble);
-  testIterableFunctions(
-      new Float64List.fromList([1.5, 9.5]), 1.5, 9.5, toDouble);
-  testIterableFunctions(new Int8List.fromList([3, 9]), 3, 9, toInt);
-  testIterableFunctions(new Int16List.fromList([3, 9]), 3, 9, toInt);
-  testIterableFunctions(new Int32List.fromList([3, 9]), 3, 9, toInt);
-  testIterableFunctions(new Uint8List.fromList([3, 9]), 3, 9, toInt);
-  testIterableFunctions(new Uint16List.fromList([3, 9]), 3, 9, toInt);
-  testIterableFunctions(new Uint32List.fromList([3, 9]), 3, 9, toInt);
-
-  emptyChecks(new Float32List(0));
-  emptyChecks(new Float64List(0));
-  emptyChecks(new Int8List(0));
-  emptyChecks(new Int16List(0));
-  emptyChecks(new Int32List(0));
-  emptyChecks(new Uint8List(0));
-  emptyChecks(new Uint16List(0));
-  emptyChecks(new Uint32List(0));
-}
diff --git a/tests/lib_2/analyzer/analyze_library.status b/tests/lib_2/analyzer/analyze_library.status
new file mode 100644
index 0000000..e34a9bb
--- /dev/null
+++ b/tests/lib_2/analyzer/analyze_library.status
@@ -0,0 +1,6 @@
+# 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.
+
+[ $compiler == dart2analyzer ]
+*: Skip
\ No newline at end of file
diff --git a/tests/lib_2/convert/base64_test.dart b/tests/lib_2/convert/base64_test.dart
index 40f7c7c..6e85a7c 100644
--- a/tests/lib_2/convert/base64_test.dart
+++ b/tests/lib_2/convert/base64_test.dart
@@ -24,7 +24,7 @@
   testErrors();
   testIssue25577();
 
-  // Decoder is lenienet with mixed styles.
+  // Decoder is lenient with mixed styles.
   Expect.listEquals([0xfb, 0xff, 0xbf, 0x00], base64.decode("-_+/AA%3D="));
   Expect.listEquals([0xfb, 0xff, 0xbf, 0x00], base64.decode("-_+/AA=%3D"));
 }
diff --git a/tests/lib_2/convert/chunked_conversion1_test.dart b/tests/lib_2/convert/chunked_conversion1_test.dart
index e713b3f..cfbad24 100644
--- a/tests/lib_2/convert/chunked_conversion1_test.dart
+++ b/tests/lib_2/convert/chunked_conversion1_test.dart
@@ -163,7 +163,7 @@
   specialBCounter = 0;
   hasExecuted = false;
 
-  // Test identity converter indidivually.
+  // Test identity converter individually.
   var identityConverter = new IdentityConverter();
   hasExecuted = false;
   sink = new ChunkedConversionSink.withCallback((value) {
diff --git a/tests/lib_2/convert/chunked_conversion_json_decode1_test.dart b/tests/lib_2/convert/chunked_conversion_json_decode1_test.dart
index cdc393f..7a29b9c 100644
--- a/tests/lib_2/convert/chunked_conversion_json_decode1_test.dart
+++ b/tests/lib_2/convert/chunked_conversion_json_decode1_test.dart
@@ -176,7 +176,7 @@
       [object, longString]
     ];
   });
-  for (var test in TESTS) {
+  for (var test in tests) {
     var o = test[0];
     var string = test[1];
     Expect.isTrue(isJsonEqual(o, decode(string)));
diff --git a/tests/lib_2/convert/chunked_conversion_json_encode1_test.dart b/tests/lib_2/convert/chunked_conversion_json_encode1_test.dart
index 5cfdd1a..6cbd728 100644
--- a/tests/lib_2/convert/chunked_conversion_json_encode1_test.dart
+++ b/tests/lib_2/convert/chunked_conversion_json_encode1_test.dart
@@ -75,7 +75,6 @@
 
 String encode(Object o) {
   var result;
-  var encoder = new JsonEncoder();
   ChunkedConversionSink<String> stringSink =
       new MyStringConversionSink((x) => result = x);
   var objectSink = new JsonEncoder().startChunkedConversion(stringSink);
diff --git a/tests/lib_2/convert/chunked_conversion_utf84_test.dart b/tests/lib_2/convert/chunked_conversion_utf84_test.dart
index 2df2926..977d8d5 100644
--- a/tests/lib_2/convert/chunked_conversion_utf84_test.dart
+++ b/tests/lib_2/convert/chunked_conversion_utf84_test.dart
@@ -7,7 +7,6 @@
 import 'unicode_tests.dart';
 
 String decode(List<int> bytes, int chunkSize) {
-  StringBuffer buffer = new StringBuffer();
   // Use a non-chunked interface.
   String result;
   var chunkedSink =
diff --git a/tests/lib_2/convert/chunked_conversion_utf88_test.dart b/tests/lib_2/convert/chunked_conversion_utf88_test.dart
index dbfa0b4..58cecaa 100644
--- a/tests/lib_2/convert/chunked_conversion_utf88_test.dart
+++ b/tests/lib_2/convert/chunked_conversion_utf88_test.dart
@@ -117,7 +117,6 @@
   const CHAR_A = 0x61;
 
   // Test surrogates at all kinds of locations.
-  var tests = [];
   var codeUnits = <int>[];
   for (int i = 0; i < 2049; i++) {
     // Invariant: codeUnits[0..i - 1] is filled with CHAR_A (character 'a').
diff --git a/tests/lib_2/convert/json_utf8_chunk_test.dart b/tests/lib_2/convert/json_utf8_chunk_test.dart
index bc5a04b..ec47339 100644
--- a/tests/lib_2/convert/json_utf8_chunk_test.dart
+++ b/tests/lib_2/convert/json_utf8_chunk_test.dart
@@ -81,8 +81,8 @@
     "0.0e0",
     "9.9E9",
     "0",
-    "9"
-        "1234.56789123456701418035663664340972900390625",
+    "9",
+    "1234.56789123456701418035663664340972900390625",
     "1.2345678912345671e-14",
     "9223372036854775807"
   ]) {
diff --git a/tests/lib_2/convert/streamed_conversion_json_decode1_test.dart b/tests/lib_2/convert/streamed_conversion_json_decode1_test.dart
index 88b4961..8c6416e 100644
--- a/tests/lib_2/convert/streamed_conversion_json_decode1_test.dart
+++ b/tests/lib_2/convert/streamed_conversion_json_decode1_test.dart
@@ -120,7 +120,7 @@
       [object, longString]
     ];
   });
-  for (var test in TESTS) {
+  for (var test in tests) {
     var o = test[0];
     var string = test[1];
     checkIsJsonEqual(o, decode(string));
diff --git a/tests/lib_2/html/canvasrenderingcontext2d_test.dart b/tests/lib_2/html/canvasrenderingcontext2d_test.dart
index e73c151..c563509 100644
--- a/tests/lib_2/html/canvasrenderingcontext2d_test.dart
+++ b/tests/lib_2/html/canvasrenderingcontext2d_test.dart
@@ -431,8 +431,8 @@
   //   avconv -i small.mp4 small.webm
   //   python -m base64 -e small.mp4
   //   python -m base64 -e small.webm
-  var mp4VideoUrl = '/root_dart/tests/html/small.mp4';
-  var webmVideoUrl = '/root_dart/tests/html/small.webm';
+  var mp4VideoUrl = '/root_dart/tests/lib_2/html/small.mp4';
+  var webmVideoUrl = '/root_dart/tests/lib_2/html/small.webm';
   var mp4VideoDataUrl =
       'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAA'
       'AIZnJlZQAAAsdtZGF0AAACmwYF//+X3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlID'
diff --git a/tests/lib_2/html/cross_domain_iframe_test.dart b/tests/lib_2/html/cross_domain_iframe_test.dart
index 3b7cf7f..a903a32 100644
--- a/tests/lib_2/html/cross_domain_iframe_test.dart
+++ b/tests/lib_2/html/cross_domain_iframe_test.dart
@@ -11,7 +11,7 @@
   var crossOriginPort = int.parse(uri.queryParameters['crossOriginPort']);
   var crossOrigin = '${uri.scheme}://${uri.host}:$crossOriginPort';
   var crossOriginUrl =
-      '$crossOrigin/root_dart/tests/html/cross_domain_iframe_script.html';
+      '$crossOrigin/root_dart/tests/lib_2/html/cross_domain_iframe_script.html';
 
   var iframe = new IFrameElement();
   iframe.src = crossOriginUrl;
diff --git a/tests/lib_2/html/fontface_loaded_test.dart b/tests/lib_2/html/fontface_loaded_test.dart
index 7f2ebc5..23348bb 100644
--- a/tests/lib_2/html/fontface_loaded_test.dart
+++ b/tests/lib_2/html/fontface_loaded_test.dart
@@ -19,7 +19,7 @@
       <style>
       @font-face {
         font-family: 'Ahem';
-        src: url(/root_dart/tests/html/Ahem.ttf);
+        src: url(/root_dart/tests/lib_2/html/Ahem.ttf);
         font-style: italic;
         font-weight: 300;
         unicode-range: U+0-3FF;
diff --git a/tests/lib_2/html/js_dispatch_property_test.html b/tests/lib_2/html/js_dispatch_property_test.html
index c17424b..ba98d98 100644
--- a/tests/lib_2/html/js_dispatch_property_test.html
+++ b/tests/lib_2/html/js_dispatch_property_test.html
@@ -19,7 +19,7 @@
 <body>
   <h1> Running js_type_test </h1>
   <script type="text/javascript"
-      src="/root_dart/tests/html/js_dispatch_property_test_js.js"></script>
+      src="/root_dart/tests/lib_2/html/js_dispatch_property_test_js.js"></script>
   <script type="text/javascript"
       src="/root_dart/tools/testing/dart/test_controller.js"></script>
   %TEST_SCRIPTS%
diff --git a/tests/lib_2/html/js_dispatch_property_test_js.js b/tests/lib_2/html/js_dispatch_property_test_js.js
new file mode 100644
index 0000000..0b159d6
--- /dev/null
+++ b/tests/lib_2/html/js_dispatch_property_test_js.js
@@ -0,0 +1,17 @@
+// 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.
+
+self.create = function() {
+  return {
+    // If the dispatch property name is uninitialized, it will be `undefined` or
+    // `null`, which will match these properties on dispatch record
+    // lookup. These properties map to malformed dispatch records to force an
+    // error.
+
+    'undefined': {p: false},
+    'null': {p: false},
+
+    foo: function(x) { return 'Foo ' + x; },
+  };
+}
\ No newline at end of file
diff --git a/tests/lib_2/html/xhr_cross_origin_test.dart b/tests/lib_2/html/xhr_cross_origin_test.dart
index b4d9f07..846bb8d 100644
--- a/tests/lib_2/html/xhr_cross_origin_test.dart
+++ b/tests/lib_2/html/xhr_cross_origin_test.dart
@@ -40,7 +40,7 @@
 
     test('XHR.get Cross-domain', () {
       var gotError = false;
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
+      var url = '$host/root_dart/tests/lib_2/html/xhr_cross_origin_data.txt';
       return HttpRequest.request(url).then((xhr) {
         var data = json.decode(xhr.response);
         expect(data, contains('feed'));
@@ -57,7 +57,7 @@
     });
 
     test('XHR.requestCrossOrigin', () {
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
+      var url = '$host/root_dart/tests/lib_2/html/xhr_cross_origin_data.txt';
       return HttpRequest.requestCrossOrigin(url).then((response) {
         expect(response, contains('feed'));
       });
@@ -81,7 +81,7 @@
     }
 
     test('XHR Cross-domain', () {
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
+      var url = '$host/root_dart/tests/lib_2/html/xhr_cross_origin_data.txt';
       var xhr = new HttpRequest();
       xhr.open('GET', url, async: true);
       var validate = expectAsync((data) {
@@ -98,7 +98,7 @@
     });
 
     test('XHR.getWithCredentials Cross-domain', () {
-      var url = '$host/root_dart/tests/html/xhr_cross_origin_data.txt';
+      var url = '$host/root_dart/tests/lib_2/html/xhr_cross_origin_data.txt';
       return HttpRequest.request(url, withCredentials: true).then((xhr) {
         var data = json.decode(xhr.response);
         expect(data, contains('feed'));
diff --git a/tests/lib_2/html/xhr_test.dart b/tests/lib_2/html/xhr_test.dart
index c6b493a..53697db 100644
--- a/tests/lib_2/html/xhr_test.dart
+++ b/tests/lib_2/html/xhr_test.dart
@@ -19,7 +19,7 @@
   // Cache blocker is a workaround for:
   // https://code.google.com/p/dart/issues/detail?id=11834
   var cacheBlocker = new DateTime.now().millisecondsSinceEpoch;
-  var url = '/root_dart/tests/html/xhr_cross_origin_data.txt?'
+  var url = '/root_dart/tests/lib_2/html/xhr_cross_origin_data.txt?'
       'cacheBlock=$cacheBlocker';
 
   void validate200Response(xhr) {
diff --git a/tests/lib_2/isolate/regress_34752_test.dart b/tests/lib_2/isolate/regress_34752_test.dart
new file mode 100644
index 0000000..3292cb6
--- /dev/null
+++ b/tests/lib_2/isolate/regress_34752_test.dart
@@ -0,0 +1,36 @@
+// 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.
+
+// Verifies that large BigInt can be passed through a message port and
+// simple arithmetic operations still work after that.
+// This is a regression test for https://github.com/dart-lang/sdk/issues/34752.
+
+import 'dart:io';
+import 'dart:isolate';
+
+import "package:expect/expect.dart";
+
+const int kValue = 12345678;
+const int kShift = 8192 * 8;
+
+void verify(BigInt x) {
+  BigInt y = x >> kShift;
+  Expect.equals("$kValue", "$y");
+}
+
+void main() {
+  BigInt big = BigInt.from(kValue) << kShift;
+  verify(big);
+
+  final rp = new ReceivePort();
+  rp.listen((dynamic data) {
+    BigInt received = data as BigInt;
+    verify(received);
+    BigInt x = received + BigInt.one - BigInt.one;
+    verify(x);
+    print("ok");
+    exit(0);
+  });
+  rp.sendPort.send(big);
+}
diff --git a/tests/lib_2/isolate/regress_flutter_22796_test.dart b/tests/lib_2/isolate/regress_flutter_22796_test.dart
new file mode 100644
index 0000000..1e6fc13
--- /dev/null
+++ b/tests/lib_2/isolate/regress_flutter_22796_test.dart
@@ -0,0 +1,43 @@
+// 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.
+
+// Verifies that large typed data can be passed in a field through message port.
+// This is a regression test for
+// https://github.com/flutter/flutter/issues/22796.
+
+import 'dart:io';
+import 'dart:isolate';
+import 'dart:typed_data';
+
+import "package:expect/expect.dart";
+
+class A {
+  // TFA thinks this field has type _Int32List but sending an object across
+  // a message port creates an instance that has _ExternalInt32List inside.
+  final _int32Array = new Int32List(5 * 1024);
+  A() {
+    _int32Array.setRange(
+        0, _int32Array.length, Iterable.generate(_int32Array.length));
+    verify();
+  }
+
+  void verify() {
+    for (var i = 0; i < _int32Array.length; i++) {
+      if (_int32Array[i] != i) {
+        print('_int32Array[$i]: ${_int32Array[i]} != ${i}');
+      }
+      Expect.equals(i, _int32Array[i]);
+    }
+  }
+}
+
+void main() {
+  final rp = new ReceivePort();
+  rp.listen((dynamic data) {
+    (data as A).verify();
+    print("ok");
+    exit(0);
+  });
+  rp.sendPort.send(A());
+}
diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status
index 04c296a..fe15c91 100644
--- a/tests/lib_2/lib_2_kernel.status
+++ b/tests/lib_2/lib_2_kernel.status
@@ -10,6 +10,12 @@
 # missing a section you need, please reach out to sigmund@ to see the best way
 # to add them.
 
+convert/streamed_conversion_json_utf8_decode_test: Pass, Slow # Uses --verify_before_gc --verify_after_gc --old_gen_growth_rate=1 flags
+
+[ $builder_tag == asan ]
+isolate/non_fatal_exception_in_timer_callback_test: Pass, Fail # Issue 34724
+mirrors/dynamic_load_test: Fail # Issue 32187
+
 [ $compiler == app_jitk ]
 async/slow_consumer2_test: RuntimeError
 async/stream_distinct_test: RuntimeError
@@ -28,15 +34,13 @@
 js/*: Skip # TODO(ahe): Make dart:js available.
 
 [ $fasta ]
+async/future_or_type_test: CompileTimeError # Issue 34626
 mirrors/deferred_constraints_constants_test/default_argument2: MissingCompileTimeError
-mirrors/generic_bounded_by_type_parameter_test/02: MissingCompileTimeError
-mirrors/generic_bounded_test/01: MissingCompileTimeError
-mirrors/generic_bounded_test/02: MissingCompileTimeError
-mirrors/generic_interface_test/01: MissingCompileTimeError
+mirrors/generic_f_bounded_mixin_application_test: CompileTimeError # Issue 34613
 mirrors/metadata_allowed_values_test/13: MissingCompileTimeError
 mirrors/metadata_allowed_values_test/14: MissingCompileTimeError
-mirrors/redirecting_factory_test/01: CompileTimeError # Issue 33308
-mirrors/redirecting_factory_test/none: CompileTimeError # Issue 33308
+mirrors/redirecting_factory_test/01: CompileTimeError # Issue 34714
+mirrors/redirecting_factory_test/none: CompileTimeError # Issue 34714
 
 [ $arch == simarm64 && $strong && ($compiler == dartk || $compiler == dartkb) ]
 isolate/mint_maker_test: Timeout # Please triage.
@@ -44,6 +48,12 @@
 [ $arch == simdbc64 && $mode == debug && $runtime == vm && $strong && ($compiler == dartk || $compiler == dartkb) ]
 isolate/isolate_complex_messages_test: Crash # http://dartbug.com/33128
 
+[ $arch == simdbc64 && $hot_reload_rollback ]
+convert/streamed_conversion_json_utf8_decode_test: SkipSlow # Uses --verify_before_gc --verify_after_gc --old_gen_growth_rate=1 flags
+
+[ $arch == x64 && $builder_tag == asan && $compiler == dartk ]
+mirrors/dynamic_load_test: Fail # Memory leak (issue 34724)
+
 [ $arch == x64 && $mode == debug && $runtime == vm && $strong && ($compiler == dartk || $compiler == dartkb) ]
 mirrors/invocation_fuzz_test: Skip # Because it times out, issue 29439.
 
@@ -126,7 +136,6 @@
 [ $runtime == vm && $strong && ($compiler == dartk || $compiler == dartkb) ]
 async/slow_consumer2_test: CompileTimeError # Issue 31402 (Invocation arguments)
 async/timer_not_available_test: RuntimeError
-convert/streamed_conversion_json_utf8_decode_test: Pass, Slow # Infrequent timeouts.
 html/*: SkipByDesign # dart:html not supported on VM.
 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.
@@ -148,7 +157,6 @@
 mirrors/constructors_test: CompileTimeError # Issue 31402 (Invocation arguments)
 mirrors/dart2js_mirrors_test: RuntimeError # 31916
 mirrors/deferred_type_test: CompileTimeError, RuntimeError
-mirrors/empty_test: Crash, RuntimeError
 mirrors/enum_test: RuntimeError # Issue 31402 (Invocation arguments)
 mirrors/equality_test: RuntimeError
 mirrors/fake_function_without_call_test: RuntimeError, OK
@@ -156,7 +164,6 @@
 mirrors/function_type_mirror_test: RuntimeError
 mirrors/generic_f_bounded_mixin_application_test: RuntimeError
 mirrors/generic_function_typedef_test: RuntimeError
-mirrors/generic_interface_test/01: RuntimeError
 mirrors/generic_mixin_applications_test: RuntimeError
 mirrors/invocation_fuzz_test: RuntimeError, Crash
 mirrors/library_declarations_test/none: RuntimeError # Issue 31402 (Invocation arguments)
diff --git a/tests/lib_2/mirrors/bad_argument_types_test.dart b/tests/lib_2/mirrors/bad_argument_types_test.dart
new file mode 100644
index 0000000..8063803
--- /dev/null
+++ b/tests/lib_2/mirrors/bad_argument_types_test.dart
@@ -0,0 +1,157 @@
+// 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 'dart:mirrors';
+
+import 'package:expect/expect.dart';
+
+int foobar = 1;
+
+set foobaz(int x) {
+  foobar = x;
+}
+
+void foo(Map<String, String> m) {
+  print(m);
+  print(m['bar']);
+}
+
+void bar<T extends num>(T a) {
+  print(a);
+}
+
+class Foo {
+  Map<String, String> bork;
+  static Map<String, String> bark;
+  static set woof(Map<String, String> x) {
+    bark = x;
+  }
+
+  Foo(Map<String, String> m) {
+    print(m);
+  }
+
+  Foo.a();
+
+  static void baz(Map<String, String> m, {String bar}) {
+    print('baz');
+    print(m['bar']);
+    print(bar);
+  }
+
+  void bar(Map<String, String> m) {
+    print('bar');
+    print(m.runtimeType);
+  }
+}
+
+class FooBar<T extends num> {
+  T bar;
+  FooBar(this.bar) {
+    print(bar);
+  }
+
+  set barz(T x) {
+    bar = x;
+  }
+
+  factory FooBar.baz(T bar) {
+    print(bar);
+    return FooBar(bar);
+  }
+
+  void foobar<S>(T a, S b) {
+    print(a);
+    print(b);
+  }
+}
+
+void badClassStaticInvoke() {
+  Map<String, String> map = Map<String, String>();
+  map['bar'] = 'Hello world!';
+  final cm = reflectClass(Foo);
+  Expect.throwsTypeError(() => cm.invoke(#baz, [
+        map
+      ], {
+        #bar: {'boo': 'bah'}
+      }));
+}
+
+void badStaticInvoke() {
+  final ClosureMirror im = reflect(foo);
+  Expect.throwsTypeError(() => im.apply(['Hello world!']));
+}
+
+void badInstanceInvoke() {
+  final fooCls = Foo.a();
+  final im = reflect(fooCls);
+  Expect.throwsTypeError(() => im.invoke(#bar, ['Hello World!']));
+}
+
+void badConstructorInvoke() {
+  final cm = reflectClass(Foo);
+  Expect.throwsTypeError(() => cm.newInstance(Symbol(''), ['Hello World!']));
+}
+
+void badSetterInvoke() {
+  final fooCls = Foo.a();
+  final im = reflect(fooCls);
+  Expect.throwsTypeError(() => im.setField(#bork, 'Hello World!'));
+}
+
+void badStaticSetterInvoke() {
+  final cm = reflectClass(Foo);
+  Expect.throwsTypeError(() => cm.setField(#bark, 'Hello World!'));
+  Expect.throwsTypeError(() => cm.setField(#woof, 'Hello World!'));
+}
+
+void badGenericConstructorInvoke() {
+  final cm = reflectType(FooBar, [int]) as ClassMirror;
+  Expect.throwsTypeError(() => cm.newInstance(Symbol(''), ['Hello World!']));
+}
+
+void badGenericClassStaticInvoke() {
+  final cm = reflectType(FooBar, [int]) as ClassMirror;
+  final im = cm.newInstance(Symbol(''), [1]);
+  Expect.throwsTypeError(() => im.invoke(#foobar, ['Hello', 'World']));
+}
+
+void badGenericFactoryInvoke() {
+  final cm = reflectType(FooBar, [int]) as ClassMirror;
+  Expect.throwsTypeError(() => cm.newInstance(Symbol('baz'), ['Hello World!']));
+}
+
+void badGenericStaticInvoke() {
+  final ClosureMirror im = reflect(bar);
+  Expect.throwsTypeError(() => im.apply(['Hello world!']));
+}
+
+void badGenericSetterInvoke() {
+  final cm = reflectType(FooBar, [int]) as ClassMirror;
+  final im = cm.newInstance(Symbol(''), [0]);
+  Expect.throwsTypeError(() => im.setField(#bar, 'Hello world!'));
+  Expect.throwsTypeError(() => im.setField(#barz, 'Hello world!'));
+}
+
+void badLibrarySetterInvoke() {
+  final lm = currentMirrorSystem().findLibrary(Symbol(''));
+  Expect.throwsTypeError(() => lm.setField(#foobar, 'Foobaz'));
+  Expect.throwsTypeError(() => lm.setField(#foobaz, 'Foobaz'));
+}
+
+void main() {
+  badClassStaticInvoke();
+  badStaticInvoke();
+  badInstanceInvoke();
+  badConstructorInvoke();
+  badSetterInvoke();
+  badStaticSetterInvoke();
+  badGenericConstructorInvoke();
+  badGenericClassStaticInvoke();
+  badGenericFactoryInvoke();
+  badGenericStaticInvoke();
+  badGenericSetterInvoke();
+  badLibrarySetterInvoke();
+}
diff --git a/tests/standalone/io/raw_datagram_socket_test.dart b/tests/standalone/io/raw_datagram_socket_test.dart
index 5fe68e4..3976c54 100644
--- a/tests/standalone/io/raw_datagram_socket_test.dart
+++ b/tests/standalone/io/raw_datagram_socket_test.dart
@@ -70,17 +70,17 @@
 testDatagramSocketReuseAddress() {
   test(address, reuseAddress) {
     asyncStart();
-    RawDatagramSocket
-        .bind(address, 0, reuseAddress: reuseAddress)
+    RawDatagramSocket.bind(address, 0,
+            reuseAddress: reuseAddress,
+            reusePort: Platform.isMacOS && reuseAddress)
         .then((socket) {
       if (reuseAddress) {
-        RawDatagramSocket
-            .bind(address, socket.port)
+        RawDatagramSocket.bind(address, socket.port,
+                reusePort: Platform.isMacOS)
             .then((s) => Expect.isTrue(s is RawDatagramSocket))
             .then(asyncSuccess);
       } else {
-        FutureExpect
-            .throws(RawDatagramSocket.bind(address, socket.port))
+        FutureExpect.throws(RawDatagramSocket.bind(address, socket.port))
             .then(asyncSuccess);
       }
     });
@@ -92,6 +92,24 @@
   test(InternetAddress.loopbackIPv6, false);
 }
 
+testDatagramSocketTtl() {
+  test(address, ttl, shouldSucceed) {
+    asyncStart();
+    if (shouldSucceed) {
+      RawDatagramSocket.bind(address, 0, ttl: ttl).then(asyncSuccess);
+    } else {
+      Expect.throws(() => RawDatagramSocket.bind(address, 0, ttl: ttl));
+      asyncEnd();
+    }
+  }
+
+  test(InternetAddress.loopbackIPv4, 1, true);
+  test(InternetAddress.loopbackIPv4, 255, true);
+  test(InternetAddress.loopbackIPv4, 256, false);
+  test(InternetAddress.loopbackIPv4, 0, false);
+  test(InternetAddress.loopbackIPv4, null, false);
+}
+
 testBroadcast() {
   test(bindAddress, broadcastAddress, enabled) {
     asyncStart();
@@ -337,9 +355,8 @@
 main() {
   testDatagramBroadcastOptions();
   testDatagramMulticastOptions();
-  if (!Platform.isMacOS) {
-    testDatagramSocketReuseAddress();
-  }
+  testDatagramSocketReuseAddress();
+  testDatagramSocketTtl();
   testBroadcast();
   testLoopbackMulticast();
   testLoopbackMulticastError();
diff --git a/tests/standalone_2/io/resolve_symbolic_links_test.dart b/tests/standalone_2/io/resolve_symbolic_links_test.dart
index 39d980a..57561db 100644
--- a/tests/standalone_2/io/resolve_symbolic_links_test.dart
+++ b/tests/standalone_2/io/resolve_symbolic_links_test.dart
@@ -22,7 +22,7 @@
       'resolve_symbolic_links_test.dart')));
 
   asyncTest(() => testDir(join(testsDir, 'standalone_2', 'io')));
-  asyncTest(() => testDir(join(testsDir, 'lib', '..', 'standalone_2', 'io')));
+  asyncTest(() => testDir(join(testsDir, 'lib_2', '..', 'standalone_2', 'io')));
   // Test a relative path.
   if (Platform.isWindows) {
     asyncTest(() => testFile(join('\\\\?\\$testsDir', 'standalone_2', 'io',
diff --git a/tests/standalone_2/standalone_2_kernel.status b/tests/standalone_2/standalone_2_kernel.status
index 8bfe26f..f880795 100644
--- a/tests/standalone_2/standalone_2_kernel.status
+++ b/tests/standalone_2/standalone_2_kernel.status
@@ -10,6 +10,13 @@
 # missing a section you need, please reach out to sigmund@ to see the best way
 # to add them.
 
+[ $builder_tag == asan ]
+io/file_test: Fail # Issue 34724
+io/http_server_response_test: Fail # Issue 34724
+io/process_sync_test: Fail # Issue 34724 (child process)
+io/signals_test: Fail # Issue 34724
+io/test_extension_fail_test: Fail # Issue 32187
+
 [ $compiler == app_jitk ]
 io/file_error_test: RuntimeError
 io/file_test: RuntimeError
@@ -42,12 +49,22 @@
 package/scenarios/invalid/non_existent_packages_file_test: CompileTimeError
 package/scenarios/invalid/same_package_twice_test: CompileTimeError
 
+[ $arch == ia32 && $builder_tag == optimization_counter_threshold ]
+io/file_lock_test: SkipSlow # Timeout
+
 [ $arch == ia32 && $compiler == dartk && $strong ]
 io/dart_std_io_pipe_test: Timeout, Pass # Issue 34723
 
 [ $arch == simarm64 && $strong && ($compiler == dartk || $compiler == dartkb) ]
 io/http_bind_test: Pass, Slow
 
+[ $arch == x64 && $builder_tag == asan && $compiler == dartk ]
+io/file_test: Fail # Memory leak (issue 34724)
+io/http_server_response_test: Fail # Memory leak (issue 34724)
+io/process_sync_test: Pass, RuntimeError # Issue 34734
+io/signals_test: Pass, RuntimeError # Issue 34734
+io/test_extension_fail_test: Fail # Memory leak (issue 34724)
+
 [ $builder_tag == optimization_counter_threshold && ($compiler == dartk || $compiler == dartkb) ]
 map_insert_remove_oom_test: Skip # Heap limit too low.
 
@@ -56,21 +73,15 @@
 
 # The failures below still need to be investigated and possibly fixed, or marked as skipped.
 [ $compiler == dartkb && $strong ]
-io/dart_std_io_pipe_test: Pass, Timeout # Please triage.
-io/http_advanced_test: Pass, RuntimeError # Please triage.
-io/http_client_connect_test: Pass, RuntimeError # Please triage.
-io/http_keep_alive_test: Pass, RuntimeError # Please triage: NoSuchMethodError: The method 'close' was called on null.
-io/http_outgoing_size_test: Pass, RuntimeError # Please triage.
-io/http_server_test: Pass, RuntimeError # Please triage: NoSuchMethodError: The method 'call' was called on null.
-io/http_shutdown_test: Pass, RuntimeError # Please triage: NoSuchMethodError: The method 'call' was called on null.
+io/code_collection_test: RuntimeError # Reruns the same script (dill file without AST) without passing --enable-interpreter or --use-bytecode-compiler.
+io/dart_std_io_pipe_test: Pass, Timeout # Please triage
+io/platform_resolved_executable_test/00: RuntimeError # Reruns the same script (dill file without AST) without passing --enable-interpreter or --use-bytecode-compiler.
+io/platform_resolved_executable_test/01: RuntimeError # Reruns the same script (dill file without AST) without passing --enable-interpreter or --use-bytecode-compiler.
+io/platform_resolved_executable_test/02: RuntimeError # Reruns the same script (dill file without AST) without passing --enable-interpreter or --use-bytecode-compiler.
+io/platform_resolved_executable_test/05: RuntimeError # Reruns the same script (dill file without AST) without passing --enable-interpreter or --use-bytecode-compiler.
 io/platform_test: RuntimeError # Platform.script points to dill file.
 io/test_extension_fail_test: RuntimeError # Platform.script points to dill file.
 io/test_extension_test: RuntimeError # Platform.script points to dill file.
-io/web_socket_compression_test: Pass, RuntimeError # Please triage: NoSuchMethodError: The method 'call' was called on null.
-io/web_socket_ping_test: Pass, RuntimeError # Please triage.
-io/web_socket_protocol_test: Pass, RuntimeError # Please triage.
-io/web_socket_test: Pass, RuntimeError # Please triage: NoSuchMethodError: The getter '_httpConnection' was called on null; NoSuchMethodError: The getter 'scheme' was called on null.
-io/web_socket_typed_data_test: Pass, RuntimeError # Please triage.
 no_lazy_dispatchers_test: SkipByDesign # KBC interpreter doesn't support --no_lazy_dispatchers
 
 [ $compiler == dartkp && $mode == debug && $runtime == dart_precompiled && $strong ]
diff --git a/third_party/.gitignore b/third_party/.gitignore
index 315ad35..569ad8d 100644
--- a/third_party/.gitignore
+++ b/third_party/.gitignore
@@ -12,3 +12,4 @@
 !gsutil.tar.gz.sha1
 !clang.tar.gz.sha1
 !unittest.tar.gz.sha1
+!update.sh
diff --git a/third_party/d8/.gitignore b/third_party/d8/.gitignore
deleted file mode 100644
index e5e7e0a..0000000
--- a/third_party/d8/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/macos/d8
-/windows/d8.exe
-/linux/d8
diff --git a/third_party/d8/README.google b/third_party/d8/README.google
index 0ae4f6f..9b592e1 100644
--- a/third_party/d8/README.google
+++ b/third_party/d8/README.google
@@ -1,20 +1,14 @@
 Name: V8 command line javascript shell.
 Short Name: d8
-URL: https://chromium.googlesource.com/v8/v8/+/efdf8385488430cb3fc15a37ca284c4e2ea1b97f
-Version: 6.2.0
-Revision: 7bb6cd63ed02f850f00e5b456fcf817b754779b2
-Date: July 27 2017
+URL: https://chromium.googlesource.com/v8/v8/+/refs/tags/6.9.427.23
+Version: 6.9.427.23
+Revision: 40b7c570a56b1134ff5083d8311e69ad8bf8fbd7
+Date: September 14 2018
 License: BSD
 
 Description:
-This directory contains hashes of the d8 binaries for Windows, Mac and Linux.
-The files are stored in cloud storage in the bucket dart-dependencies,
-and are downloaded by the depot_tools tool download_from_cloud_storage.py.
-The files were fetched from the v8 builders on the DartFYI waterfall:
-http://build.chromium.org/p/client.dart.fyi/console
-
-When all users are updated to use linux binaries from the ia32 or other
-subdirectories, remove them from d8/linux.
-Build and add an ARMv8 64-bit build on linux.
+In a synced checkout, this directory contains the d8 binaries for Windows, Mac and Linux.
+The binaries are downloaded as a CIPD package and unpacked in this directory.
+To upload a new version of the package run: ./update.sh <version>
 
 The binaries are used for testing dart code compiled to javascript.
diff --git a/third_party/d8/linux/arm32/d8.sha1 b/third_party/d8/linux/arm32/d8.sha1
deleted file mode 100644
index a9cecfb..0000000
--- a/third_party/d8/linux/arm32/d8.sha1
+++ /dev/null
@@ -1 +0,0 @@
-529e8ea23f246ef1be796641e37c25b45f0351b5
\ No newline at end of file
diff --git a/third_party/d8/linux/arm32/natives_blob.bin.sha1 b/third_party/d8/linux/arm32/natives_blob.bin.sha1
deleted file mode 100644
index 9607a1e..0000000
--- a/third_party/d8/linux/arm32/natives_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7d4b56c775ebbb64d1ac59633cba8d8ebdd582b1
\ No newline at end of file
diff --git a/third_party/d8/linux/arm32/snapshot_blob.bin.sha1 b/third_party/d8/linux/arm32/snapshot_blob.bin.sha1
deleted file mode 100644
index e3d4333..0000000
--- a/third_party/d8/linux/arm32/snapshot_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-db5c7cca45f83be3eefbf723a8ebd78e5e6a461a
\ No newline at end of file
diff --git a/third_party/d8/linux/d8.sha1 b/third_party/d8/linux/d8.sha1
deleted file mode 100644
index c26f2d5..0000000
--- a/third_party/d8/linux/d8.sha1
+++ /dev/null
@@ -1 +0,0 @@
-82c3a2f3e2b5edbd3defc1db07463a872c703f75
\ No newline at end of file
diff --git a/third_party/d8/linux/ia32/d8.sha1 b/third_party/d8/linux/ia32/d8.sha1
deleted file mode 100644
index c26f2d5..0000000
--- a/third_party/d8/linux/ia32/d8.sha1
+++ /dev/null
@@ -1 +0,0 @@
-82c3a2f3e2b5edbd3defc1db07463a872c703f75
\ No newline at end of file
diff --git a/third_party/d8/linux/ia32/natives_blob.bin.sha1 b/third_party/d8/linux/ia32/natives_blob.bin.sha1
deleted file mode 100644
index 8193a8e..0000000
--- a/third_party/d8/linux/ia32/natives_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a2d1d683cd1679c9844534e25fa857a1e86e6ece
\ No newline at end of file
diff --git a/third_party/d8/linux/ia32/snapshot_blob.bin.sha1 b/third_party/d8/linux/ia32/snapshot_blob.bin.sha1
deleted file mode 100644
index f0b4d43..0000000
--- a/third_party/d8/linux/ia32/snapshot_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7120a86f9ba5af6c327bf3403f3fee69074c68dc
\ No newline at end of file
diff --git a/third_party/d8/linux/natives_blob.bin.sha1 b/third_party/d8/linux/natives_blob.bin.sha1
deleted file mode 100644
index 8193a8e..0000000
--- a/third_party/d8/linux/natives_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a2d1d683cd1679c9844534e25fa857a1e86e6ece
\ No newline at end of file
diff --git a/third_party/d8/linux/snapshot_blob.bin.sha1 b/third_party/d8/linux/snapshot_blob.bin.sha1
deleted file mode 100644
index f0b4d43..0000000
--- a/third_party/d8/linux/snapshot_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7120a86f9ba5af6c327bf3403f3fee69074c68dc
\ No newline at end of file
diff --git a/third_party/d8/linux/x64/d8.sha1 b/third_party/d8/linux/x64/d8.sha1
deleted file mode 100644
index c97a344..0000000
--- a/third_party/d8/linux/x64/d8.sha1
+++ /dev/null
@@ -1 +0,0 @@
-8f4870586aed39475717a1f828fc5e4a52856a00
\ No newline at end of file
diff --git a/third_party/d8/linux/x64/natives_blob.bin.sha1 b/third_party/d8/linux/x64/natives_blob.bin.sha1
deleted file mode 100644
index 9607a1e..0000000
--- a/third_party/d8/linux/x64/natives_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7d4b56c775ebbb64d1ac59633cba8d8ebdd582b1
\ No newline at end of file
diff --git a/third_party/d8/linux/x64/snapshot_blob.bin.sha1 b/third_party/d8/linux/x64/snapshot_blob.bin.sha1
deleted file mode 100644
index da95faf..0000000
--- a/third_party/d8/linux/x64/snapshot_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-f89563597bc430d8359f06cc28381644317a51f1
\ No newline at end of file
diff --git a/third_party/d8/macos/d8.sha1 b/third_party/d8/macos/d8.sha1
deleted file mode 100644
index 270a51d..0000000
--- a/third_party/d8/macos/d8.sha1
+++ /dev/null
@@ -1 +0,0 @@
-0d376770b10225b791d880a2d30aed7b98a41f0c
\ No newline at end of file
diff --git a/third_party/d8/macos/natives_blob.bin.sha1 b/third_party/d8/macos/natives_blob.bin.sha1
deleted file mode 100644
index 9607a1e..0000000
--- a/third_party/d8/macos/natives_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-7d4b56c775ebbb64d1ac59633cba8d8ebdd582b1
\ No newline at end of file
diff --git a/third_party/d8/macos/snapshot_blob.bin.sha1 b/third_party/d8/macos/snapshot_blob.bin.sha1
deleted file mode 100644
index c62f979..0000000
--- a/third_party/d8/macos/snapshot_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-97ccf11ec6810bd3477395b09c10aa69c84ad18a
\ No newline at end of file
diff --git a/third_party/d8/update.sh b/third_party/d8/update.sh
new file mode 100755
index 0000000..3236046
--- /dev/null
+++ b/third_party/d8/update.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+# Uploads a new version of d8 CIPD package
+set -e
+set -x
+
+if [ -z "$1" ]; then
+  echo "Usage: update.sh version"
+  exit 1
+fi
+
+version=$1
+major=$(echo "$version" | cut -d'.' -f1)
+minor=$(echo "$version" | cut -d'.' -f2)
+patch=$(echo "$version" | cut -d'.' -f3)
+
+tmpdir=$(mktemp -d)
+cleanup() {
+  rm -rf "$tmpdir"
+}
+trap cleanup EXIT HUP INT QUIT TERM PIPE
+cd "$tmpdir"
+
+arch=("linux64" "linux32" "linux64" "linux-arm32" "mac64" "win64")
+path=("linux" "linux/ia32" "linux/x64" "linux/arm32" "macos" "windows")
+
+for i in "${!arch[@]}"
+do
+  filename="v8-${arch[$i]}-rel-$version.zip"
+  gsutil cp "gs://chromium-v8/official/$major.$minor/$filename" .
+  mkdir -p d8/${path[$i]}
+  unzip -q $filename -d d8/${path[$i]}
+  rm $filename
+done
+
+cipd create \
+  -name dart/d8 \
+  -in d8 \
+  -install-mode copy \
+  -tag version:$version \
+  -tag version:$major.$minor.$patch \
+  -tag version:$major.$minor
diff --git a/third_party/d8/windows/d8.exe.sha1 b/third_party/d8/windows/d8.exe.sha1
deleted file mode 100644
index 312ddf9..0000000
--- a/third_party/d8/windows/d8.exe.sha1
+++ /dev/null
@@ -1 +0,0 @@
-a489ff87bffcb3150de200a0bd85c5bbfffe674a
\ No newline at end of file
diff --git a/third_party/d8/windows/natives_blob.bin.sha1 b/third_party/d8/windows/natives_blob.bin.sha1
deleted file mode 100644
index 6ab0b53..0000000
--- a/third_party/d8/windows/natives_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-74b2acf3e17f16018f003037daeb2ea9fb65570c
\ No newline at end of file
diff --git a/third_party/d8/windows/snapshot_blob.bin.sha1 b/third_party/d8/windows/snapshot_blob.bin.sha1
deleted file mode 100644
index 8b4d122..0000000
--- a/third_party/d8/windows/snapshot_blob.bin.sha1
+++ /dev/null
@@ -1 +0,0 @@
-792073af206bdc34b1d852b5e146bdaa12260efa
\ No newline at end of file
diff --git a/tools/VERSION b/tools/VERSION
index ab66e7e..e678d7a 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 1
 PATCH 0
-PRERELEASE 7
-PRERELEASE_PATCH 1
+PRERELEASE 8
+PRERELEASE_PATCH 0
diff --git a/tools/addlatexhash.dart b/tools/addlatexhash.dart
index c93f039..118e4bc 100755
--- a/tools/addlatexhash.dart
+++ b/tools/addlatexhash.dart
@@ -22,7 +22,7 @@
 // please check the language specification source itself.
 //
 // NB: This utility assumes UN*X style line endings, \n, in the LaTeX
-// source file receieved as input; it will not work with other styles.
+// source file received as input; it will not work with other styles.
 
 import 'dart:io';
 
@@ -155,7 +155,7 @@
       }
     } else {
       assert(!afterBlankLines && !afterCommentLines);
-      // No wsOnly or commentOnly lines preceed [line].
+      // No wsOnly or commentOnly lines precede [line].
       afterBlankLines = isWsOnly(line);
       afterCommentLines = isCommentOnly(line);
       if (!afterCommentLines) {
diff --git a/tools/bots/dart2js_d8_hostchecked_tests.isolate b/tools/bots/dart2js_d8_hostchecked_tests.isolate
index 1b53302..eae91c9 100644
--- a/tools/bots/dart2js_d8_hostchecked_tests.isolate
+++ b/tools/bots/dart2js_d8_hostchecked_tests.isolate
@@ -20,17 +20,11 @@
               'third_party/pkg_tested/',
               'third_party/d8/',
               'tests/angular/',
-              'tests/co19/',
               'tests/compiler/',
-              'tests/corelib/',
               'tests/corelib_2/',
               'tests/dart/',
-              'tests/html/',
-              'tests/isolate/',
               'tests/kernel/',
-              'tests/language/',
               'tests/language_2/',
-              'tests/lib/',
               'tests/lib_2/',
               'tests/light_unittest.dart',
               'tests/search/',
diff --git a/tools/bots/dart_tests.isolate b/tools/bots/dart_tests.isolate
index d2b7a74..701d270 100644
--- a/tools/bots/dart_tests.isolate
+++ b/tools/bots/dart_tests.isolate
@@ -13,17 +13,11 @@
               'third_party/firefox_jsshell/',
               'third_party/observatory_pub_packages/packages/web_components/',
               'tests/angular/',
-              'tests/co19/',
               'tests/compiler/',
-              'tests/corelib/',
               'tests/corelib_2/',
               'tests/dart/',
-              'tests/html/',
-              'tests/isolate/',
               'tests/kernel/',
-              'tests/language/',
               'tests/language_2/',
-              'tests/lib/',
               'tests/lib_2/',
               'tests/light_unittest.dart',
               'tests/search/',
diff --git a/tools/bots/find_base_commit.dart b/tools/bots/find_base_commit.dart
new file mode 100755
index 0000000..2df7e35
--- /dev/null
+++ b/tools/bots/find_base_commit.dart
@@ -0,0 +1,116 @@
+#!/usr/bin/env dart
+// 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.
+
+// Find the newest commit that has a full set of results on the bots.
+
+import 'dart:convert';
+import 'dart:io';
+import 'dart:math';
+
+import 'package:args/args.dart';
+import 'package:glob/glob.dart';
+
+void main(List<String> args) async {
+  final parser = new ArgParser();
+  parser.addMultiOption("bot",
+      abbr: "b",
+      help: "Select the bots matching the glob pattern [option is repeatable]",
+      splitCommas: false);
+  parser.addOption("branch",
+      abbr: "B",
+      help: "Select the bots building this branch",
+      defaultsTo: "master");
+  parser.addOption("count",
+      abbr: "c", help: "List this many commits", defaultsTo: "1");
+  parser.addFlag("help", help: "Show the program usage.", negatable: false);
+
+  final options = parser.parse(args);
+  if (options["help"]) {
+    print("""
+Usage: find_base_commit.dart [OPTION]...
+Find the newest commit that has a full set of results on the bots.
+
+The options are as follows:
+
+${parser.usage}""");
+    return;
+  }
+
+  int count = int.parse(options["count"]);
+  final globs = new List<Glob>.from(
+      options["bot"].map((String pattern) => new Glob(pattern)));
+
+  // Download the most recent builds from buildbucket.
+  int maxBuilds = 1000;
+  final url = Uri.parse(
+      "https://cr-buildbucket.appspot.com/_ah/api/buildbucket/v1/search"
+      "?bucket=luci.dart.ci.sandbox"
+      "&max_builds=$maxBuilds"
+      "&status=COMPLETED"
+      "&fields=builds(url%2Cparameters_json)");
+  final client = new HttpClient();
+  final request = await client.getUrl(url).timeout(const Duration(seconds: 30));
+  final response = await request.close().timeout(const Duration(seconds: 30));
+  final Map<String, dynamic> object = await response
+      .transform(new Utf8Decoder())
+      .transform(new JsonDecoder())
+      .first
+      .timeout(const Duration(seconds: 30));
+  client.close();
+
+  // Locate the builds we're interested in and map them to each commit. The
+  // builds returned by the API are sorted with the newest first. Since bots
+  // don't build back in time and always build the latest commit whenever they
+  // can, the first time we see a commit, we know it's newer than all commits
+  // we haven't seen yet. The insertion order into the botsForCommits map will
+  // then sorted with the newest commit first.
+  final builds = object["builds"];
+  final botsForCommits = <String, Set<String>>{};
+  for (final build in builds) {
+    final parameters = jsonDecode(build["parameters_json"]);
+    final bot = parameters["builder_name"];
+    if (bot.endsWith("-dev") || bot.endsWith("-stable")) {
+      // Ignore the -dev and -stable builders. The -try builders aren't in the
+      // bucket we're reading.
+      continue;
+    }
+    if (globs.isNotEmpty && !globs.any((glob) => glob.matches(bot))) {
+      // Filter way bots we're not interested in.
+      continue;
+    }
+    final properties = parameters["properties"];
+    final branch = properties["branch"];
+    if (branch != null && branch != "refs/heads/${options['branch']}") {
+      // Ignore bots that are building the wrong branch.
+      continue;
+    }
+    final commit = properties["revision"];
+    if (commit == null) {
+      // Ignore bots that aren't commit based, e.g. fuzz-linux.
+      continue;
+    }
+    final botsForCommit =
+        botsForCommits.putIfAbsent(commit, () => new Set<String>());
+    botsForCommit.add(bot);
+  }
+
+  if (botsForCommits.isEmpty) {
+    print("Failed to locate any commits having run on the bots");
+    exitCode = 1;
+    return;
+  }
+
+  int maxBots = 0;
+  for (final commit in botsForCommits.keys) {
+    maxBots = max(maxBots, botsForCommits[commit].length);
+  }
+
+  // List commits run on the most bots.
+  for (final commit in botsForCommits.keys
+      .where((commit) => botsForCommits[commit].length == maxBots)
+      .take(count)) {
+    print(commit);
+  }
+}
diff --git a/tools/bots/flutter/analyze_flutter.sh b/tools/bots/flutter/analyze_flutter.sh
new file mode 100755
index 0000000..02932c7
--- /dev/null
+++ b/tools/bots/flutter/analyze_flutter.sh
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+# 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.
+#
+# Runs flutter's analyze tests with a locally built SDK.
+set -e
+
+dart=$(pwd)/tools/sdks/dart-sdk/bin/dart
+sdk=$(pwd)/out/ReleaseX64/dart-sdk
+tmpdir=$(mktemp -d)
+cleanup() {
+  rm -rf "$tmpdir"
+}
+trap cleanup EXIT HUP INT QUIT TERM PIPE
+cd "$tmpdir"
+
+git clone https://chromium.googlesource.com/external/github.com/flutter/flutter
+cd flutter
+bin/flutter config --no-analytics
+bin/flutter update-packages
+$dart dev/bots/analyze.dart --dart-sdk $sdk
\ No newline at end of file
diff --git a/tools/bots/test_matrix.json b/tools/bots/test_matrix.json
index 34e9fed..2ba6dbc 100644
--- a/tools/bots/test_matrix.json
+++ b/tools/bots/test_matrix.json
@@ -25,15 +25,10 @@
       "tests/angular/",
       "tests/co19_2/",
       "tests/compiler/",
-      "tests/corelib/",
       "tests/corelib_2/",
       "tests/dart/",
-      "tests/html/",
-      "tests/isolate/",
       "tests/kernel/",
-      "tests/language/",
       "tests/language_2/",
-      "tests/lib/",
       "tests/lib_2/",
       "tests/light_unittest.dart",
       "tests/search/",
@@ -63,15 +58,10 @@
       "tests/angular/",
       "tests/co19_2/",
       "tests/compiler/",
-      "tests/corelib/",
       "tests/corelib_2/",
       "tests/dart/",
-      "tests/html/",
-      "tests/isolate/",
       "tests/kernel/",
-      "tests/language/",
       "tests/language_2/",
-      "tests/lib/",
       "tests/lib_2/",
       "tests/light_unittest.dart",
       "tests/search/",
@@ -111,21 +101,17 @@
       "samples/",
       "samples-dev/",
       "tools/",
+      "third_party/gsutil/",
       "third_party/pkg/",
       "third_party/pkg_tested/",
       "third_party/observatory_pub_packages/packages/",
       "tests/angular/",
       "tests/co19_2/",
       "tests/compiler/",
-      "tests/corelib/",
       "tests/corelib_2/",
       "tests/dart/",
-      "tests/html/",
-      "tests/isolate/",
       "tests/kernel/",
-      "tests/language/",
       "tests/language_2/",
-      "tests/lib/",
       "tests/lib_2/",
       "tests/light_unittest.dart",
       "tests/search/",
@@ -144,7 +130,8 @@
       "pkg/vm/",
       "runtime/",
       "sdk/",
-      ".packages"
+      ".packages",
+      ".vpython"
     ]
   },
   "configurations": {
@@ -557,17 +544,9 @@
     },
     {
       "builders": [
-        "vm-kernel-linux-debug-ia32",
-        "vm-kernel-linux-debug-simdbc64",
-        "vm-kernel-linux-debug-x64",
         "vm-kernel-linux-release-simarm",
         "vm-kernel-linux-release-simarm64",
         "vm-kernel-linux-release-ia32",
-        "vm-kernel-mac-debug-simdbc64",
-        "vm-kernel-mac-debug-x64",
-        "vm-kernel-mac-product-x64",
-        "vm-kernel-mac-release-simdbc64",
-        "vm-kernel-mac-release-x64",
         "vm-kernel-win-debug-ia32",
         "vm-kernel-win-debug-x64",
         "vm-kernel-win-product-x64",
@@ -596,7 +575,15 @@
       "builders": [
         "vm-kernel-linux-product-x64",
         "vm-kernel-linux-release-simdbc64",
-        "vm-kernel-linux-release-x64"
+        "vm-kernel-linux-release-x64",
+        "vm-kernel-linux-debug-ia32",
+        "vm-kernel-linux-debug-simdbc64",
+        "vm-kernel-linux-debug-x64",
+        "vm-kernel-mac-product-x64",
+        "vm-kernel-mac-release-simdbc64",
+        "vm-kernel-mac-release-x64",
+        "vm-kernel-mac-debug-simdbc64",
+        "vm-kernel-mac-debug-x64"
       ],
       "meta": {
         "description": "This configuration is for the co19_2 kernel builder group."
@@ -913,7 +900,7 @@
             "-ndart2js-hostasserts-linux-ia32-d8",
             "--dart2js-batch"
           ],
-          "exclude_tests": ["observatory_ui", "co19"],
+          "exclude_tests": ["observatory_ui"],
           "shards": 6,
           "fileset": "dart2js_hostasserts"
         },
@@ -980,7 +967,7 @@
             "--dart2js-batch",
             "--reset-browser-configuration"
           ],
-          "exclude_tests": ["observatory_ui", "co19"],
+          "exclude_tests": ["observatory_ui"],
           "shards": 6,
           "fileset": "dart2js"
         },
@@ -1051,7 +1038,7 @@
             "--dart2js-batch",
             "--reset-browser-configuration"
           ],
-          "exclude_tests": ["observatory_ui", "co19"],
+          "exclude_tests": ["observatory_ui"],
           "shards": 6,
           "fileset": "dart2js"
         },
@@ -1112,7 +1099,7 @@
             "-ndart2js-minified-linux-d8",
             "--dart2js-batch"
           ],
-          "exclude_tests": ["observatory_ui", "co19"],
+          "exclude_tests": ["observatory_ui"],
           "shards": 6,
           "fileset": "dart2js"
         },
@@ -1122,7 +1109,7 @@
             "-ndart2js-minified-faststartup-linux-d8",
             "--dart2js-batch"
           ],
-          "exclude_tests": ["observatory_ui", "co19"],
+          "exclude_tests": ["observatory_ui"],
           "shards": 6,
           "fileset": "dart2js"
         },
@@ -1194,7 +1181,7 @@
             "--dart2js-batch",
             "--reset-browser-configuration"
           ],
-          "exclude_tests": ["observatory_ui", "co19"],
+          "exclude_tests": ["observatory_ui"],
           "shards": 4,
           "fileset": "dart2js"
         },
@@ -1205,7 +1192,7 @@
             "--dart2js-batch",
             "--reset-browser-configuration"
           ],
-          "exclude_tests": ["observatory_ui", "co19"],
+          "exclude_tests": ["observatory_ui"],
           "shards": 4,
           "fileset": "dart2js"
         },
@@ -1632,7 +1619,7 @@
           "tests": ["pkg"]
         },
         {
-          "name": "third_party/pkg_tested unit tests",
+          "name": "third_party pkg_tested unit tests",
           "arguments": [
             "-nunittest-asserts-${system}"],
           "tests": ["pkg_tested"]
@@ -1683,13 +1670,37 @@
       ]
     },
     {
+      "builders": [
+        "flutter-analyze",
+        "flutter-analyze-analyzer"
+      ],
+      "meta": {
+        "description": "This configuration is used for analyzing flutter."
+      },
+      "steps": [
+        {
+          "name": "build dart",
+          "script": "tools/build.py",
+          "arguments": [
+            "--mode=release",
+            "--arch=x64",
+            "create_sdk"
+          ]
+        },
+        {
+          "name": "analyze flutter",
+          "script": "tools/bots/flutter/analyze_flutter.sh"
+        }
+      ]
+    },
+    {
       "builders": ["fuzz-linux"],
       "meta": {
         "description": "This configuration is used for fuzz testing."
       },
       "steps": [
         {
-          "name": "build dart",
+          "name": "build dart (aot and jit)",
           "script": "tools/build.py",
           "arguments": [
             "--mode=debug,release",
@@ -1699,11 +1710,11 @@
           ]
         },
         {
-          "name": "build dart 32bit",
+          "name": "build dart (jit)",
           "script": "tools/build.py",
           "arguments": [
             "--mode=debug,release",
-            "--arch=ia32,simarm",
+            "--arch=ia32,simarm,simdbc,simdbc64",
             "runtime"
           ]
         },
diff --git a/tools/bots/try_benchmarks.sh b/tools/bots/try_benchmarks.sh
index a2b3555..0656f4e3 100755
--- a/tools/bots/try_benchmarks.sh
+++ b/tools/bots/try_benchmarks.sh
@@ -152,25 +152,6 @@
       -K '_ZN4dart7Version4str_E' \
       -K '_ZN4dart7Version7commit_E' \
       -K '_ZN4dart9Bootstrap*_paths_E' out/ReleaseIA32/run_vm_tests
-    strip -w \
-      -K 'kDartVmSnapshotData' \
-      -K 'kDartVmSnapshotInstructions' \
-      -K 'kDartCoreIsolateSnapshotData' \
-      -K 'kDartCoreIsolateSnapshotInstructions' \
-      -K '_ZN4dart3bin26observatory_assets_archiveE' \
-      -K '_ZN4dart3bin30observatory_assets_archive_lenE' \
-      -K '_ZN4dart3bin7Builtin22_builtin_source_paths_E' \
-      -K '_ZN4dart3bin7Builtin*_paths_E' \
-      -K '_ZN4dart3binL17vm_snapshot_data_E' \
-      -K '_ZN4dart3binL24isolate_snapshot_buffer_E' \
-      -K '_ZN4dart3binL27core_isolate_snapshot_data_E' \
-      -K '_ZN4dart3binL27observatory_assets_archive_E' \
-      -K '_ZN4dart3binL27vm_isolate_snapshot_buffer_E' \
-      -K '_ZN4dart3binL29core_isolate_snapshot_buffer_E' \
-      -K '_ZN4dart7Version14snapshot_hash_E' \
-      -K '_ZN4dart7Version4str_E' \
-      -K '_ZN4dart7Version7commit_E' \
-      -K '_ZN4dart9Bootstrap*_paths_E' third_party/d8/linux/ia32/d8
     tar -czf linux-ia32.tar.gz \
       --exclude .git \
       --exclude .gitignore \
@@ -333,25 +314,6 @@
       -K '_ZN4dart7Version14snapshot_hash_E' \
       -K '_ZN4dart7Version4str_E' \
       -K '_ZN4dart7Version7commit_E' \
-      -K '_ZN4dart9Bootstrap*_paths_E' third_party/d8/linux/x64/d8
-    strip -w \
-      -K 'kDartVmSnapshotData' \
-      -K 'kDartVmSnapshotInstructions' \
-      -K 'kDartCoreIsolateSnapshotData' \
-      -K 'kDartCoreIsolateSnapshotInstructions' \
-      -K '_ZN4dart3bin26observatory_assets_archiveE' \
-      -K '_ZN4dart3bin30observatory_assets_archive_lenE' \
-      -K '_ZN4dart3bin7Builtin22_builtin_source_paths_E' \
-      -K '_ZN4dart3bin7Builtin*_paths_E' \
-      -K '_ZN4dart3binL17vm_snapshot_data_E' \
-      -K '_ZN4dart3binL24isolate_snapshot_buffer_E' \
-      -K '_ZN4dart3binL27core_isolate_snapshot_data_E' \
-      -K '_ZN4dart3binL27observatory_assets_archive_E' \
-      -K '_ZN4dart3binL27vm_isolate_snapshot_buffer_E' \
-      -K '_ZN4dart3binL29core_isolate_snapshot_buffer_E' \
-      -K '_ZN4dart7Version14snapshot_hash_E' \
-      -K '_ZN4dart7Version4str_E' \
-      -K '_ZN4dart7Version7commit_E' \
       -K '_ZN4dart9Bootstrap*_paths_E' out/ReleaseX64/dart_precompiled_runtime
     tar -czf linux-x64.tar.gz \
       --exclude .git \
@@ -402,7 +364,6 @@
     echo '[{"name":"foo","edits":[["pkg/compiler/lib/src/dart2js.dart","2016","2017"],["pkg/compiler/lib/src/options.dart","2016","2017"]]}]' > appjit_train_edits.json
     out/ReleaseX64/dart --background-compilation=false --snapshot-kind=app-jit --snapshot=pkg/front_end/tool/incremental_perf.dart.appjit pkg/front_end/tool/incremental_perf.dart --target=vm --sdk-summary=out/ReleaseX64/vm_platform_strong.dill --sdk-library-specification=sdk/lib/libraries.json pkg/compiler/lib/src/dart2js.dart appjit_train_edits.json
     out/ReleaseX64/dart --background-compilation=false pkg/front_end/tool/incremental_perf.dart.appjit --target=vm --sdk-summary=out/ReleaseX64/vm_platform_strong.dill --sdk-library-specification=sdk/lib/libraries.json pkg/front_end/benchmarks/ikg/hello.dart pkg/front_end/benchmarks/ikg/hello.edits.json
-    out/ReleaseX64/dart --background-compilation=false pkg/front_end/tool/incremental_perf.dart.appjit --target=vm --implementation=minimal --sdk-summary=out/ReleaseX64/vm_platform_strong.dill --sdk-library-specification=sdk/lib/libraries.json pkg/front_end/benchmarks/ikg/hello.dart pkg/front_end/benchmarks/ikg/hello.edits.json
     out/ReleaseX64/dart --packages=.packages pkg/kernel/test/binary_bench.dart --golem AstFromBinaryLazy out/ReleaseX64/vm_platform_strong.dill
     out/ReleaseX64/run_vm_tests InitialRSS
     out/ReleaseX64/run_vm_tests GenKernelKernelLoadKernel
diff --git a/tools/dom/idl/dart/dart.idl b/tools/dom/idl/dart/dart.idl
index d5ee488..0a6cbd5 100644
--- a/tools/dom/idl/dart/dart.idl
+++ b/tools/dom/idl/dart/dart.idl
@@ -132,10 +132,12 @@
 
 [DartSupplemental]
 interface RTCPeerConnection {
-  [DartSuppress, RaisesException] void addIceCandidate(RTCIceCandidate candidate);
+  [DartSuppress] Promise<void> createOffer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional Dictionary rtcOfferOptions);
+  [DartSuppress] Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional Dictionary mediaConstraints);
+  [DartSuppress] void addIceCandidate(RTCIceCandidate candidate);
   [DartSuppress] Promise<void> getStats(RTCStatsCallback successCallback, optional MediaStreamTrack? selector);
-  [DartSuppress] Promise<void> setLocalDescription(RTCSessionDescriptionInit description);
-  [DartSuppress] Promise<void> setRemoteDescription(RTCSessionDescriptionInit description);
+  [DartSuppress] Promise<void> setLocalDescription(RTCSessionDescriptionInit description, VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback);
+  [DartSuppress] Promise<void> setRemoteDescription(RTCSessionDescriptionInit description, VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback);
 };
 
 // See implementation in tools/dom/templates for canvas and offscreenCanvas.
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 7a14fd1..952c629 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -710,6 +710,17 @@
       parameter_count = len(self.param_infos)
     return ', '.join(map(param_name, self.param_infos[:parameter_count]))
 
+  """ Check if a parameter to a Future API is a Dictionary argument and if its optional.
+      Used for any Promised based operation to correctly convert from Map to Dictionary then
+      perform the PromiseToFuture call.
+  """
+  def dictionaryArgumentName(self, parameter_count=None):
+      parameter_count = len(self.param_infos)
+      for argument in self.param_infos[:parameter_count]:
+        if argument.type_id == 'Dictionary':
+          return [argument.name, argument.is_optional]
+      return None
+
   def isCallback(self, type_registry, type_id):
     if type_id and not type_id.endswith('[]'):
       callback_type = type_registry._database._all_interfaces[type_id]
@@ -1701,7 +1712,7 @@
         # It's a typedef (implied union)
         return self.TypeInfo('any')
       else:
-          print "ERROR: Unexpected interface, or type not found. %s" % type_name
+        print "ERROR: Unexpected interface, or type not found. %s" % type_name
 
       if 'Callback' in interface.ext_attrs:
         return CallbackIDLTypeInfo(type_name, TypeData('Callback',
diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py
index cbc0417..64e9f93 100644
--- a/tools/dom/scripts/htmldartgenerator.py
+++ b/tools/dom/scripts/htmldartgenerator.py
@@ -612,7 +612,7 @@
             args = constructor_info.ParametersAsArgumentList(argument_count)
 
             # Handle converting Maps to Dictionaries, etc.
-            (factory_params, converted_arguments) = self._ConvertArgumentTypes(
+            (factory_params, converted_arguments, calling_params) = self._ConvertArgumentTypes(
                 stmts_emitter, arguments, argument_count, constructor_info)
             args = ', '.join(converted_arguments)
             call_template = '$FACTORY_NAME($FACTORY_PARAMS)'
@@ -621,7 +621,7 @@
                 '$FACTORY.$NAME',
                 FACTORY=factory_name,
                 NAME=name)
-            (factory_params, converted_arguments) = self._ConvertArgumentTypes(
+            (factory_params, converted_arguments, calling_params) = self._ConvertArgumentTypes(
                 stmts_emitter, arguments, argument_count, constructor_info)
             args = ', '.join(converted_arguments)
             call_template = '$FACTORY_NAME($FACTORY_PARAMS)'
@@ -709,6 +709,27 @@
       future_generic = '<%s>' % self._DartType(callback_info.param_infos[-1].type_id)
 
     param_list = info.ParametersAsArgumentList(None, ignore_named_parameters)
+    dictionary_argument = info.dictionaryArgumentName();
+
+    convert_map = ''
+    if dictionary_argument is not None:
+      mapArg = dictionary_argument[0]
+      tempVariable = '%s_dict' % mapArg
+      mapArgOptional = dictionary_argument[1]
+
+      if not(extensions):
+        if not(param_list.endswith(', mapArg') or param_list.endswith(', options') or param_list == mapArg):
+          print "ERROR: %s.%s - Last parameter or only parameter %s is not of type Map" % (self._interface.id, html_name, mapArg)
+        param_list = '%s_dict' % param_list
+
+        if mapArgOptional:
+          convert_map = '    var %s = null;\n'\
+                        '    if (%s != null) {\n'\
+                        '      %s = convertDartToNative_Dictionary(%s);\n'\
+                        '    }\n' % (tempVariable, mapArg, tempVariable, mapArg)
+        else:
+          convert_map = '    var %s = convertDartToNative_Dictionary(%s);\n' % (tempVariable, mapArg)
+
     metadata = ''
     if '_RenamingAnnotation' in dir(self):
       metadata = (self._RenamingAnnotation(info.declared_name, html_name) +
@@ -716,6 +737,7 @@
     self._members_emitter.Emit(
         '\n'
         '  $METADATA$MODIFIERS$TYPE$FUTURE_GENERIC $NAME($PARAMS) {\n'
+        '    $CONVERT_DICTIONARY'
         '    var completer = new Completer$(FUTURE_GENERIC)();\n'
         '    $ORIGINAL_FUNCTION($PARAMS_LIST\n'
         '        $NAMED_PARAM($VARIABLE_NAME) { '
@@ -730,6 +752,7 @@
         NAME=html_name[1:],
         PARAMS=info.ParametersAsDeclaration(self._NarrowInputType
             if '_NarrowInputType' in dir(self) else self._DartType),
+        CONVERT_DICTIONARY=convert_map,
         PARAMS_LIST='' if param_list == '' else param_list + ',',
         NAMED_PARAM=('%s : ' % info.callback_args[0].name
             if info.requires_named_arguments and
@@ -886,6 +909,7 @@
     temp_version = [0]
     converted_arguments = []
     target_parameters = []
+    calling_parameters = []
     for position, arg in enumerate(arguments[:argument_count]):
       conversion = self._InputConversion(arg.type.id, info.declared_name)
       param_name = arguments[position].id
@@ -921,8 +945,9 @@
 
       target_parameters.append(
           '%s%s' % (TypeOrNothing(param_type), param_name))
+      calling_parameters.append(',%s ' % param_name)
 
-    return target_parameters, converted_arguments
+    return target_parameters, converted_arguments, calling_parameters
 
   def _InputType(self, type_name, info):
     conversion = self._InputConversion(type_name, info.declared_name)
diff --git a/tools/dom/scripts/htmlrenamer.py b/tools/dom/scripts/htmlrenamer.py
index 0148a18..06bd04b 100644
--- a/tools/dom/scripts/htmlrenamer.py
+++ b/tools/dom/scripts/htmlrenamer.py
@@ -202,8 +202,6 @@
   'FontLoader.notifyWhenFontsReady',
   'MediaStreamTrack.getSources',
   'Notification.requestPermission',
-  'RTCPeerConnection.setLocalDescription',
-  'RTCPeerConnection.setRemoteDescription',
   'SQLTransaction.executeSql',
   'StorageInfo.requestQuota',
   'StorageQuota.requestQuota',
@@ -216,6 +214,7 @@
 # DDC Exposed Classes
 ddc_extensions = monitored.Dict('ddcextensions.ddc_extensions', {
   'DirectoryEntry': {
+      'getDirectory': [ '' ],
       'getFile': [
           'applyExtension(\'FileEntry\', value);',
       ]
@@ -423,8 +422,6 @@
   'ParentNode.lastElementChild',
   'ParentNode.querySelectorAll',
   'Range.getClientRects',
-  'RTCPeerConnection.createAnswer',
-  'RTCPeerConnection.createOffer',
   'Screen.availHeight',
   'Screen.availLeft',
   'Screen.availTop',
@@ -580,6 +577,9 @@
   'Navigator.sendBeacon',
 ])
 
+def convertedFutureMembers(member):
+  return member in convert_to_future_members
+
 for member in convert_to_future_members:
   if member in renamed_html_members:
     renamed_html_members[member] = '_' + renamed_html_members[member]
diff --git a/tools/dom/scripts/systemhtml.py b/tools/dom/scripts/systemhtml.py
index 0fcf00a..154fe5e 100644
--- a/tools/dom/scripts/systemhtml.py
+++ b/tools/dom/scripts/systemhtml.py
@@ -820,11 +820,11 @@
   "ImageCapture.takePhoto": { "type": "Blob" },
   "ImageCapture.grabFrame": { "type": "ImageBitmap" },
   "Navigator.getInstalledRelatedApps": { "type": "RelatedApplication" },
+  "OffscreenCanvas.convertToBlob": { "type": "Blob" },
   "MediaCapabilities.decodingInfo": { "type": "MediaCapabilitiesInfo" },
   "MediaCapabilities.encodingInfo": { "type": "MediaCapabilitiesInfo" },
   "MediaDevices.enumerateDevices": { "type": "List<MediaDeviceInfo>" },
   "MediaDevices.getUserMedia": { "type": "MediaStream" },
-  "MediaStreamTrack.applyConstraints": { "type": "MediaTrackConstraints" },
   "ServiceWorkerRegistration.getNotifications": { "type": "List<Notification>" },
   "PaymentInstruments.delete": { "type": "bool" },
   "PaymentInstruments.get": { "type": "dictionary" },
@@ -868,6 +868,13 @@
   "OfflineAudioContext.startRendering": { "type": "AudioBuffer" },
 })
 
+promise_generateCall = monitored.Set('systemhtml.promise_generateCall', [
+   "Navigator.requestKeyboardLock",
+])
+
+def _IsPromiseOperationGenerateCall(interface_operation):
+    return interface_operation in promise_generateCall
+
 def _GetPromiseOperationType(interface_operation):
   if interface_operation in promise_operations:
     return promise_operations[interface_operation]
@@ -1297,11 +1304,17 @@
       self._AddInterfaceOperation(info, html_name)
     elif info.callback_args:
       self._AddFutureifiedOperation(info, html_name)
-    elif any(self._OperationRequiresConversions(op) for op in info.overloads):
-      # Any conversions needed?
-      self._AddOperationWithConversions(info, html_name)
     else:
-      self._AddDirectNativeOperation(info, html_name)
+      if any(self._OperationRequiresConversions(op) for op in info.overloads):
+        lookupOp = "%s.%s" % (self._interface.id, html_name)
+        if (_GetPromiseOperationType(lookupOp) or info.type_name == 'Promise') and \
+          not _IsPromiseOperationGenerateCall(lookupOp):
+            self._AddDirectNativeOperation(info, html_name)
+        else:
+          # Any conversions needed?
+          self._AddOperationWithConversions(info, html_name)
+      else:
+        self._AddDirectNativeOperation(info, html_name)
 
   def _computeResultType(self, checkType):
     # TODO(terry): Work around bug in dart2js compiler e.g.,
@@ -1323,17 +1336,50 @@
     argsPound = "#" if numberArgs == 1 else ("#, " * numberArgs)[:-2]
     return '    JS("", "#.$NAME(%s)", this, %s)' % (argsPound, argsNames)
 
-  def _promiseToFutureCode(self, argsNames):
+  """ If argument conversionsMapToDictionary is a list first entry is argument
+      name and second entry signals if argument is optional (True). """
+  def _promiseToFutureCode(self, argsNames, conversionsMapToDictionary=None):
     numberArgs = argsNames.count(',') + 1
     jsCall = self._zeroArgs(argsNames) if len(argsNames) == 0 else \
         self._manyArgs(numberArgs, argsNames)
 
-    futureTemplate = [
-    '\n'
-    '  $RENAME$METADATA$MODIFIERS $TYPE $NAME($PARAMS) => $PROMISE_CALL(',
-    jsCall,
-    ');\n'
-    ]
+    futureTemplate = []
+    if conversionsMapToDictionary is None:
+      futureTemplate = [
+        '\n'
+        '  $RENAME$METADATA$MODIFIERS $TYPE $NAME($PARAMS) => $PROMISE_CALL(', jsCall, ');\n'
+      ]
+    else:
+      mapArg = conversionsMapToDictionary[0]
+      tempVariable = '%s_dict' % mapArg
+      mapArgOptional = conversionsMapToDictionary[1]
+
+      if argsNames.endswith('%s' % mapArg):
+        argsNames = '%s_dict' % argsNames
+        jsCall = self._zeroArgs(argsNames) if len(argsNames) == 0 else \
+            self._manyArgs(numberArgs, argsNames)
+      if mapArgOptional:
+        futureTemplate = [
+          # We will need to convert the Map argument to a Dictionary, test if mapArg is there (optional) then convert.
+          '\n'
+          '  $RENAME$METADATA$MODIFIERS $TYPE $NAME($PARAMS) {\n',
+          '    var ', tempVariable, ' = null;\n',
+          '    if (', mapArg, ' != null) {\n',
+          '      ', tempVariable, ' = convertDartToNative_Dictionary(', mapArg, ');\n',
+          '    }\n',
+          '    return $PROMISE_CALL(', jsCall, ');\n',
+          '  }\n'
+        ]
+      else:
+        futureTemplate = [
+          # We will need to convert the Map argument to a Dictionary, the Map argument is not optional.
+          '\n'
+          '  $RENAME$METADATA$MODIFIERS $TYPE $NAME($PARAMS) {\n',
+          '    var ', tempVariable, ' = convertDartToNative_Dictionary(', mapArg, ');\n',
+          '    return $PROMISE_CALL(', jsCall, ');\n',
+          '  }\n'
+        ]
+
     return "".join(futureTemplate)
 
   def _AddDirectNativeOperation(self, info, html_name):
@@ -1363,7 +1409,8 @@
           promiseType = 'Future<%s>' % paramType
 
       argsNames = info.ParametersAsArgumentList()
-      codeTemplate = self._promiseToFutureCode(argsNames)
+      dictionary_argument = info.dictionaryArgumentName();
+      codeTemplate = self._promiseToFutureCode(argsNames, dictionary_argument)
       self._members_emitter.Emit(codeTemplate,
         RENAME=self._RenamingAnnotation(info.declared_name, html_name),
         METADATA=self._Metadata(info.type_name, info.declared_name,
@@ -1413,7 +1460,7 @@
       target = '_%s_%d' % (
           html_name[1:] if html_name.startswith('_') else html_name, version);
 
-      (target_parameters, arguments) = self._ConvertArgumentTypes(
+      (target_parameters, arguments, calling_params) = self._ConvertArgumentTypes(
           stmts_emitter, operation.arguments, argument_count, info)
 
       argument_list = ', '.join(arguments)
@@ -1426,14 +1473,34 @@
 
       call_emitter.Emit(call)
 
-      self._members_emitter.Emit(
-          '  $RENAME$METADATA$MODIFIERS$TYPE$TARGET($PARAMS) native;\n',
-          RENAME=self._RenamingAnnotation(info.declared_name, target),
-          METADATA=self._Metadata(info.type_name, info.declared_name, None),
-          MODIFIERS='static ' if info.IsStatic() else '',
-          TYPE=TypeOrNothing(native_return_type),
-          TARGET=target,
-          PARAMS=', '.join(target_parameters))
+      if (native_return_type == 'Future'):
+        hashArgs = ''
+        if argument_count > 0:
+          if argument_count < 20:
+            hashArgs = '#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#'[:argument_count * 2 - 1]
+          else:
+            print "ERROR: Arguments exceede 20 - please fix Python code to handle more."
+        self._members_emitter.Emit(
+            '  $RENAME$METADATA$MODIFIERS$TYPE$TARGET($PARAMS) =>\n'
+            '      promiseToFuture(JS("", "#.$JSNAME($HASH_STR)", this$CALLING_PARAMS));\n',
+            RENAME=self._RenamingAnnotation(info.declared_name, target),
+            METADATA=self._Metadata(info.type_name, info.declared_name, None),
+            MODIFIERS='static ' if info.IsStatic() else '',
+            TYPE=TypeOrNothing(native_return_type),
+            TARGET=target,
+            PARAMS=', '.join(target_parameters),
+            JSNAME=operation.id,
+            HASH_STR=hashArgs,
+            CALLING_PARAMS=calling_params)
+      else:
+        self._members_emitter.Emit(
+            '  $RENAME$METADATA$MODIFIERS$TYPE$TARGET($PARAMS) native;\n',
+            RENAME=self._RenamingAnnotation(info.declared_name, target),
+            METADATA=self._Metadata(info.type_name, info.declared_name, None),
+            MODIFIERS='static ' if info.IsStatic() else '',
+            TYPE=TypeOrNothing(native_return_type),
+            TARGET=target,
+            PARAMS=', '.join(target_parameters))
 
     # private methods don't need named arguments.
     full_name = '%s.%s' % (self._interface.id, info.declared_name)
diff --git a/tools/dom/src/AttributeMap.dart b/tools/dom/src/AttributeMap.dart
index 19c9f88..f6a482f 100644
--- a/tools/dom/src/AttributeMap.dart
+++ b/tools/dom/src/AttributeMap.dart
@@ -243,7 +243,7 @@
   /**
    * Converts a string name with hyphens into an identifier, by removing hyphens
    * and capitalizing the following letter. Optionally [startUppercase] to
-   * captialize the first letter.
+   * capitalize the first letter.
    */
   String _toCamelCase(String hyphenedName, {bool startUppercase: false}) {
     var segments = hyphenedName.split('-');
diff --git a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
index 8b5906d..436df0a 100644
--- a/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
+++ b/tools/dom/templates/html/dart2js/html_dart2js.darttemplate
@@ -159,3 +159,6 @@
  */
 typedef void FontFaceSetForEachCallback(
     FontFace fontFace, FontFace fontFaceAgain, FontFaceSet set);
+
+WorkerGlobalScope get _workerSelf => JS('WorkerGlobalScope', 'self');
+
diff --git a/tools/dom/templates/html/impl/impl_DedicatedWorkerGlobalScope.darttemplate b/tools/dom/templates/html/impl/impl_DedicatedWorkerGlobalScope.darttemplate
new file mode 100644
index 0000000..d6320ce
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_DedicatedWorkerGlobalScope.darttemplate
@@ -0,0 +1,15 @@
+// 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.
+
+part of $LIBRARYNAME;
+
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+
+  static DedicatedWorkerGlobalScope get instance {
+    return _workerSelf as DedicatedWorkerGlobalScope;
+  }
+
+}
+
diff --git a/tools/dom/templates/html/impl/impl_RTCPeerConnection.darttemplate b/tools/dom/templates/html/impl/impl_RTCPeerConnection.darttemplate
index 33f503a..868d215 100644
--- a/tools/dom/templates/html/impl/impl_RTCPeerConnection.darttemplate
+++ b/tools/dom/templates/html/impl/impl_RTCPeerConnection.darttemplate
@@ -34,21 +34,6 @@
     } catch (_) { return false;}
     return false;
   }
-  Future<RtcSessionDescription> createOffer([Map mediaConstraints]) {
-    var completer = new Completer<RtcSessionDescription>();
-    _createOffer(
-        (value) { completer.complete(value); },
-        (error) { completer.completeError(error); }, mediaConstraints);
-    return completer.future;
-  }
-
-  Future<RtcSessionDescription> createAnswer([Map mediaConstraints]) {
-    var completer = new Completer<RtcSessionDescription>();
-    _createAnswer(
-        (value) { completer.complete(value); },
-        (error) { completer.completeError(error); }, mediaConstraints);
-    return completer.future;
-  }
 
   /**
   * Temporarily exposes _getStats and old getStats as getLegacyStats until Chrome fully supports
diff --git a/tools/dom/templates/html/impl/impl_ServiceWorkerGlobalScope.darttemplate b/tools/dom/templates/html/impl/impl_ServiceWorkerGlobalScope.darttemplate
new file mode 100644
index 0000000..4efa257
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_ServiceWorkerGlobalScope.darttemplate
@@ -0,0 +1,15 @@
+// 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.
+
+part of $LIBRARYNAME;
+
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+
+  static ServiceWorkerGlobalScope get instance {
+    return _workerSelf as ServiceWorkerGlobalScope;
+  }
+
+}
+
diff --git a/tools/dom/templates/html/impl/impl_SharedWorkerGlobalScope.dartemplate b/tools/dom/templates/html/impl/impl_SharedWorkerGlobalScope.dartemplate
new file mode 100644
index 0000000..49e4dba
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_SharedWorkerGlobalScope.dartemplate
@@ -0,0 +1,18 @@
+// 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.
+
+part of $LIBRARYNAME;
+
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+
+  static ServiceWorkerGlobalScope get instance {
+    if (_workerSelf is! ServiceWorkerGlobalScope) {
+      throw InstanceTypeError("expected ServiceWorkerGlobalScope got ${_workerSelf.runtimeType}");
+    }
+    return _workerSelf;
+  }
+
+}
+
diff --git a/tools/dom/templates/html/impl/impl_SharedWorkerGlobalScope.darttemplate b/tools/dom/templates/html/impl/impl_SharedWorkerGlobalScope.darttemplate
new file mode 100644
index 0000000..839027e
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_SharedWorkerGlobalScope.darttemplate
@@ -0,0 +1,15 @@
+// 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.
+
+part of $LIBRARYNAME;
+
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+
+  static SharedWorkerGlobalScope get instance {
+    return _workerSelf as SharedWorkerGlobalScope;
+  }
+
+}
+
diff --git a/tools/dom/templates/html/impl/impl_WorkerGlobalScope.darttemplate b/tools/dom/templates/html/impl/impl_WorkerGlobalScope.darttemplate
new file mode 100644
index 0000000..a7c23ad
--- /dev/null
+++ b/tools/dom/templates/html/impl/impl_WorkerGlobalScope.darttemplate
@@ -0,0 +1,12 @@
+// 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.
+
+part of $LIBRARYNAME;
+
+$(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS {
+$!MEMBERS
+
+  static WorkerGlobalScope get instance => _workerSelf;
+}
+
diff --git a/tools/gardening/lib/src/buildbot_data.dart b/tools/gardening/lib/src/buildbot_data.dart
index 307ba4d..ebca746 100644
--- a/tools/gardening/lib/src/buildbot_data.dart
+++ b/tools/gardening/lib/src/buildbot_data.dart
@@ -746,19 +746,19 @@
         'pkg-mac10.11-release-be',
       ], testSteps: const <String>[
         'package unit tests',
-        'third_party/pkg_tested unit tests',
+        'third_party pkg_tested unit tests',
       ]),
       const BuildSubgroup(shardNames: const <String>[
         'pkg-linux-release-be',
       ], testSteps: const <String>[
         'package unit tests',
-        'third_party/pkg_tested unit tests',
+        'third_party pkg_tested unit tests',
       ]),
       const BuildSubgroup(shardNames: const <String>[
         'pkg-win7-release-be',
       ], testSteps: const <String>[
         'package unit tests',
-        'third_party/pkg_tested unit tests',
+        'third_party pkg_tested unit tests',
       ]),
     ],
   ),
diff --git a/tools/gardening/test/buildbot_data_test.dart b/tools/gardening/test/buildbot_data_test.dart
index 5a76a7e..3f6788a 100644
--- a/tools/gardening/test/buildbot_data_test.dart
+++ b/tools/gardening/test/buildbot_data_test.dart
@@ -44,11 +44,11 @@
   // TODO(johnniwinther): Find out why these steps cannot be read.
   Expect.setEquals([
     '/builders/pkg-mac10.11-release-be/builds/-1/'
-        'steps/third_party/pkg_tested unit tests',
+        'steps/third_party pkg_tested unit tests',
     '/builders/pkg-linux-release-be/builds/-1/steps/'
-        'third_party/pkg_tested unit tests',
+        'third_party pkg_tested unit tests',
     '/builders/pkg-win7-release-be/builds/-1/steps/'
-        'third_party/pkg_tested unit tests',
+        'third_party pkg_tested unit tests',
   ], failingUris,
       "Unexpected failing buildbot uris:\n ${failingUris.join('\n ')}");
 
diff --git a/tools/gn.py b/tools/gn.py
index 877e735..c2546a1 100755
--- a/tools/gn.py
+++ b/tools/gn.py
@@ -230,6 +230,9 @@
                                       gn_args['target_cpu'])
   gn_args['is_clang'] = args.clang and not dont_use_clang
 
+  enable_code_coverage = args.code_coverage and gn_args['is_clang']
+  gn_args['dart_vm_code_coverage'] = enable_code_coverage
+
   gn_args['is_asan'] = args.asan and gn_args['is_clang']
   gn_args['is_msan'] = args.msan and gn_args['is_clang']
   gn_args['is_tsan'] = args.tsan and gn_args['is_clang']
@@ -262,7 +265,11 @@
     gn_args['use_goma'] = False
     gn_args['goma_dir'] = None
 
-  if args.debug_opt_level:
+  # Code coverage requires -O0 to be set.
+  if enable_code_coverage:
+    gn_args['dart_debug_optimization_level'] = 0
+    gn_args['debug_optimization_level'] = 0
+  elif args.debug_opt_level:
     gn_args['dart_debug_optimization_level'] = args.debug_opt_level
     gn_args['debug_optimization_level'] = args.debug_opt_level
 
@@ -384,6 +391,11 @@
       help='Disable Clang',
       dest='clang',
       action='store_false')
+  other_group.add_argument('--code-coverage',
+      help='Enable code coverage for the standalone VM',
+      default=False,
+      dest="code_coverage",
+      action='store_true')
   other_group.add_argument('--debug-opt-level',
       '-d',
       help='The optimization level to use for debug builds',
diff --git a/tools/patch_sdk.dart b/tools/patch_sdk.dart
index da1bc36..458ee6b 100644
--- a/tools/patch_sdk.dart
+++ b/tools/patch_sdk.dart
@@ -121,7 +121,7 @@
   final Uri platform = outDirUri.resolve('platform.dill.tmp');
   final Uri librariesJson = outDirUri.resolve("lib/libraries.json");
   final Uri packages = Uri.base.resolveUri(new Uri.file(packagesFile));
-  TargetFlags flags = new TargetFlags();
+  TargetFlags flags = new TargetFlags(legacyMode: true);
   Target target;
 
   switch (mode) {
@@ -192,7 +192,7 @@
     Uri patchedSdk, Target target, Uri packages, Uri output) async {
   var options = new CompilerOptions()
     ..setExitCodeOnProblem = true
-    ..strongMode = false
+    ..legacyMode = true
     ..compileSdk = true
     ..sdkRoot = patchedSdk
     ..packagesFileUri = packages
diff --git a/tools/patches/flutter-engine/b99bcfd3099f0d32e39287160a9539e878cb0b68.patch b/tools/patches/flutter-engine/b99bcfd3099f0d32e39287160a9539e878cb0b68.patch
new file mode 100644
index 0000000..840c4ac
--- /dev/null
+++ b/tools/patches/flutter-engine/b99bcfd3099f0d32e39287160a9539e878cb0b68.patch
@@ -0,0 +1,54 @@
+diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn
+index bf4b8e6fb8..1fa0d73af6 100644
+--- a/runtime/BUILD.gn
++++ b/runtime/BUILD.gn
+@@ -6,41 +6,6 @@ import("//third_party/dart/runtime/bin/vmservice/vmservice_sources.gni")
+ import("$flutter_root/common/config.gni")
+ import("$flutter_root/testing/testing.gni")
+ 
+-action("gen_embedded_resources_cc") {
+-  script = "//third_party/dart/runtime/tools/create_resources.py"
+-  output_file = "$target_gen_dir/embedded_resources.cc"
+-  outputs = [
+-    output_file,
+-  ]
+-
+-  inputs = rebase_path(vmservice_sources,
+-                       "",
+-                       "//third_party/dart/runtime/bin/vmservice")
+-
+-  args = [
+-           "--output",
+-           rebase_path(output_file),
+-           "--outer_namespace",
+-           "flutter",
+-           "--inner_namespace",
+-           "runtime",
+-           "--table_name",
+-           "flutter_embedded_service_isolate",
+-           "--root_prefix",
+-           rebase_path("//third_party/dart/runtime/bin/"),
+-         ] + rebase_path(inputs)
+-}
+-
+-source_set("embedded_resources_cc") {
+-  sources = [
+-    "$target_gen_dir/embedded_resources.cc",
+-  ]
+-  deps = [
+-    ":gen_embedded_resources_cc",
+-  ]
+-  public_configs = [ "$flutter_root:config" ]
+-}
+-
+ source_set("test_font") {
+   sources = [
+     "test_font_data.cc",
+@@ -84,7 +49,6 @@ source_set("runtime") {
+   ]
+ 
+   deps = [
+-    ":embedded_resources_cc",
+     ":test_font",
+     "$flutter_root/assets",
+     "$flutter_root/common",
diff --git a/tools/status_clean.dart b/tools/status_clean.dart
index 1606298..7d8bd2f 100644
--- a/tools/status_clean.dart
+++ b/tools/status_clean.dart
@@ -20,19 +20,11 @@
 // [STATUS_TUPLES] is a list of (suite-name, directory, status-file)-tuples.
 final STATUS_TUPLES = [
   ["corelib_2", "tests/corelib_2", "tests/corelib_2/corelib_2.status"],
-  ["corelib", "tests/corelib", "tests/corelib/corelib.status"],
-  ["html", "tests/html", "tests/html/html.status"],
-  ["isolate", "tests/isolate", "tests/isolate/isolate.status"],
-  ["language", "tests/language", "tests/language/language.status"],
-  ["language", "tests/language", "tests/language/language_analyzer2.status"],
-  ["language", "tests/language", "tests/language/language_analyzer.status"],
-  ["language", "tests/language", "tests/language/language_dart2js.status"],
-  ["lib", "tests/lib", "tests/lib/lib.status"],
   ["standalone", "tests/standalone", "tests/standalone/standalone.status"],
   ["pkg", "pkg", "pkg/pkg.status"],
   ["utils", "tests/utils", "tests/utils/utils.status"],
   ["samples", "samples", "samples/samples.status"],
-  ["analyze_library", "sdk", "tests/lib/analyzer/analyze_library.status"],
+  ["analyze_library", "sdk", "tests/lib_2/analyzer/analyze_library.status"],
   [
     "dart2js_extra",
     "tests/compiler/dart2js_extra",
@@ -53,12 +45,6 @@
     "tests/benchmark_smoke",
     "tests/benchmark_smoke/benchmark_smoke.status"
   ],
-  ["co19", "tests/co19/src", "tests/co19/co19-analyzer2.status"],
-  ["co19", "tests/co19/src", "tests/co19/co19-analyzer.status"],
-  ["co19", "tests/co19/src", "tests/co19/co19-dart2js.status"],
-  ["co19", "tests/co19/src", "tests/co19/co19-co19.status"],
-  ["co19", "tests/co19/src", "tests/co19/co19-dartium.status"],
-  ["co19", "tests/co19/src", "tests/co19/co19-runtime.status"],
 ];
 
 void main(List<String> args) {
diff --git a/tools/test.py b/tools/test.py
index 48df925..a847a35 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -27,8 +27,9 @@
     os.environ['PATH'] = '%s%s%s' % (
             os.environ['PATH'], os.pathsep, android_platform_tools)
 
-  with utils.CoreDumpArchiver(args):
-    exit_code = subprocess.call(command)
+  with utils.FileDescriptorLimitIncreaser():
+    with utils.CoreDumpArchiver(args):
+      exit_code = subprocess.call(command)
 
   utils.DiagnoseExitCode(exit_code, command)
   return exit_code
diff --git a/tools/testing/dart/compiler_configuration.dart b/tools/testing/dart/compiler_configuration.dart
index 91e49e6..159398e 100644
--- a/tools/testing/dart/compiler_configuration.dart
+++ b/tools/testing/dart/compiler_configuration.dart
@@ -35,9 +35,13 @@
   final TestConfiguration _configuration;
 
   bool get _isDebug => _configuration.mode.isDebug;
+
   bool get _isChecked => _configuration.isChecked;
+
   bool get _isHostChecked => _configuration.isHostChecked;
+
   bool get _useSdk => _configuration.useSdk;
+
   bool get _useEnableAsserts => _configuration.useEnableAsserts;
 
   bool get previewDart2 => !_configuration.noPreviewDart2;
@@ -231,6 +235,16 @@
         'application/kernel-ir-fully-linked');
   }
 
+  @override
+  List<String> computeCompilerArguments(
+      List<String> vmOptions,
+      List<String> sharedOptions,
+      List<String> dart2jsOptions,
+      List<String> ddcOptions,
+      List<String> args) {
+    return sharedOptions.toList()..addAll(vmOptions)..addAll(args);
+  }
+
   List<String> computeRuntimeArguments(
       RuntimeConfiguration runtimeConfiguration,
       TestInformation info,
@@ -578,7 +592,9 @@
   final bool previewDart2;
 
   bool get _isAndroid => _configuration.system == System.android;
+
   bool get _isArm => _configuration.architecture == Architecture.arm;
+
   bool get _isArm64 => _configuration.architecture == Architecture.arm64;
 
   bool get _isAot => true;
@@ -777,7 +793,11 @@
   }
 
   List<String> computeCompilerArguments(
-      vmOptions, sharedOptions, dart2jsOptions, ddcOptions, originalArguments) {
+      List<String> vmOptions,
+      List<String> sharedOptions,
+      List<String> dart2jsOptions,
+      List<String> ddcOptions,
+      List<String> originalArguments) {
     List<String> args = [];
     if (_isChecked) {
       args.add('--enable_asserts');
@@ -1032,10 +1052,17 @@
 }
 
 abstract class VMKernelCompilerMixin {
+  static final noCausalAsyncStacksRegExp =
+      new RegExp('--no[_-]causal[_-]async[_-]stacks');
+
   TestConfiguration get _configuration;
+
   bool get _useSdk;
+
   bool get _isAot;
+
   bool get _isChecked;
+
   bool get _useEnableAsserts;
 
   String get executableScriptSuffix;
@@ -1061,8 +1088,6 @@
 
     final args = [
       _isAot ? '--aot' : '--no-aot',
-      '--strong-mode',
-      _configuration.noPreviewDart2 ? '--no-sync-async' : '--sync-async',
       '--platform=$vmPlatform',
       '-o',
       dillFile,
@@ -1071,12 +1096,18 @@
     args.add(arguments.where((name) => name.endsWith('.dart')).single);
     args.addAll(arguments.where(
         (name) => name.startsWith('-D') || name.startsWith('--packages=')));
+
+    final bool causalAsyncStacks =
+        !arguments.any((String arg) => noCausalAsyncStacksRegExp.hasMatch(arg));
+    args.add('-Ddart.developer.causal_async_stacks=$causalAsyncStacks');
+
     if (_isChecked || _useEnableAsserts) {
       args.add('--enable_asserts');
     }
 
     if (_configuration.useKernelBytecode) {
       args.add('--gen-bytecode');
+      args.add('--drop-ast');
     }
 
     return Command.vmKernelCompilation(dillFile, true, bootstrapDependencies(),
@@ -1136,8 +1167,8 @@
     var outputFileName = output.toFilePath();
 
     var compilerArguments = <String>[];
-    if (!_isLegacy) {
-      compilerArguments.add("--strong-mode");
+    if (_isLegacy) {
+      compilerArguments.add("--legacy-mode");
     }
 
     compilerArguments.addAll(
@@ -1163,7 +1194,7 @@
       List<String> dart2jsOptions,
       List<String> ddcOptions,
       List<String> args) {
-    List<String> arguments = <String>[];
+    List<String> arguments = new List<String>.from(sharedOptions);
     for (String argument in args) {
       if (argument == "--ignore-unrecognized-flags") continue;
       arguments.add(argument);
diff --git a/tools/testing/dart/options.dart b/tools/testing/dart/options.dart
index 4bd3f1e..6deef00 100644
--- a/tools/testing/dart/options.dart
+++ b/tools/testing/dart/options.dart
@@ -15,17 +15,11 @@
   'samples',
   'standalone',
   'standalone_2',
-  'corelib',
   'corelib_2',
-  'co19',
-  'language',
   'language_2',
-  'isolate',
   'vm',
-  'html',
   'benchmark_smoke',
   'utils',
-  'lib',
   'lib_2',
   'analyze_library',
   'service',
@@ -347,6 +341,7 @@
     'exclude_suite',
     'firefox',
     'local_ip',
+    'output_directory',
     'progress',
     'report',
     'safari',
diff --git a/tools/testing/dart/runtime_configuration.dart b/tools/testing/dart/runtime_configuration.dart
index b2227f7..ff8efbb 100644
--- a/tools/testing/dart/runtime_configuration.dart
+++ b/tools/testing/dart/runtime_configuration.dart
@@ -189,12 +189,11 @@
     if (_configuration.compiler == Compiler.dartkb) {
       multiplier *= 4;
     }
-
     if (mode.isDebug) {
       multiplier *= 2;
-      if (isReload) {
-        multiplier *= 2;
-      }
+    }
+    if (isReload) {
+      multiplier *= 2;
     }
     return multiplier;
   }
diff --git a/tools/testing/dart/test_configurations.dart b/tools/testing/dart/test_configurations.dart
index 05c85c8..17bb379 100644
--- a/tools/testing/dart/test_configurations.dart
+++ b/tools/testing/dart/test_configurations.dart
@@ -35,14 +35,9 @@
   new Path('tests/compiler/dart2js'),
   new Path('tests/compiler/dart2js_extra'),
   new Path('tests/compiler/dart2js_native'),
-  new Path('tests/corelib'),
   new Path('tests/corelib_2'),
-  new Path('tests/html'),
-  new Path('tests/isolate'),
   new Path('tests/kernel'),
-  new Path('tests/language'),
   new Path('tests/language_2'),
-  new Path('tests/lib'),
   new Path('tests/lib_2'),
   new Path('tests/standalone'),
   new Path('tests/standalone_2'),
@@ -150,7 +145,7 @@
       }
 
       for (var key in configuration.selectors.keys) {
-        if (['co19', 'co19_2'].contains(key)) {
+        if (key == 'co19_2') {
           testSuites.add(new Co19TestSuite(configuration, key));
         } else if ((configuration.compiler == Compiler.none ||
                 configuration.compiler == Compiler.dartk ||
diff --git a/tools/testing/dart/test_progress.dart b/tools/testing/dart/test_progress.dart
index bdb8a0b..f995ea7 100644
--- a/tools/testing/dart/test_progress.dart
+++ b/tools/testing/dart/test_progress.dart
@@ -860,6 +860,7 @@
 
     var record = {
       "name": name,
+      "configuration": _configuration.configuration.name,
       "suite": suite,
       "test_name": testName,
       "time_ms": time.inMilliseconds,
@@ -879,7 +880,8 @@
     if (_outputDirectory == null) return;
     final path =
         Uri.directory(_outputDirectory).resolve(TestUtils.resultsFileName);
-    File.fromUri(path).writeAsStringSync(results.map(jsonEncode).join('\n'));
+    String jsonLine(Map x) => jsonEncode(x) + '\n';
+    File.fromUri(path).writeAsStringSync(results.map(jsonLine).join());
   }
 
   void writeRunFile() {
@@ -894,6 +896,6 @@
     };
     final path = Uri.directory(_outputDirectory)
         .resolve(TestUtils.resultsInstanceFileName);
-    File.fromUri(path).writeAsStringSync(jsonEncode(run));
+    File.fromUri(path).writeAsStringSync(jsonEncode(run) + '\n');
   }
 }
diff --git a/tools/testing/dart/test_suite.dart b/tools/testing/dart/test_suite.dart
index 3ecabb4..b1a99bb 100644
--- a/tools/testing/dart/test_suite.dart
+++ b/tools/testing/dart/test_suite.dart
@@ -480,10 +480,8 @@
   void _addTest(ExpectationSet testExpectations, String testName) {
     var args = configuration.standardOptions.toList();
     if (configuration.compilerConfiguration.previewDart2) {
-      args.add('--use-dart-frontend');
       // '--dfe' has to be the first argument for run_vm_test to pick it up.
       args.insert(0, '--dfe=$buildDir/gen/kernel-service.dart.snapshot');
-      args.add('--strong');
     }
 
     args.add(testName);
@@ -551,8 +549,6 @@
   Set<String> _testListPossibleFilenames;
 
   static final Uri co19SuiteLocation = Repository.uri.resolve("tests/co19_2/");
-  static final Uri legacyCo19SuiteLocation =
-      Repository.uri.resolve("tests/co19/");
 
   StandardTestSuite(TestConfiguration configuration, String suiteName,
       Path suiteDirectory, List<String> statusFilePaths,
@@ -1182,6 +1178,10 @@
     assert(!isMultitest || dartOptions == null);
     args.add(filePath.toNativePath());
     if (dartOptions != null) {
+      // TODO(ahe): Because we add [dartOptions] here,
+      // [CompilerConfiguration.computeCompilerArguments] has to discard them
+      // later. Perhaps it would be simpler to pass [dartOptions] to
+      // [CompilerConfiguration.computeRuntimeArguments].
       args.addAll(dartOptions);
     }
 
@@ -1254,8 +1254,7 @@
   Map<String, dynamic> readOptionsFromFile(Uri uri) {
     if (uri.path.endsWith('.dill')) {
       return optionsFromKernelFile();
-    } else if ("$uri".startsWith("$co19SuiteLocation") ||
-        "$uri".startsWith("$legacyCo19SuiteLocation")) {
+    } else if ("$uri".startsWith("$co19SuiteLocation")) {
       return readOptionsFromCo19File(uri);
     }
     RegExp testOptionsRegExp = new RegExp(r"// VMOptions=(.*)");
@@ -1548,7 +1547,7 @@
 
   AnalyzeLibraryTestSuite(TestConfiguration configuration)
       : super(configuration, 'analyze_library', _libraryPath(configuration),
-            ['tests/lib/analyzer/analyze_library.status']);
+            ['tests/lib_2/analyzer/analyze_library.status']);
 
   List<String> additionalOptions(Path filePath, {bool showSdkWarnings}) =>
       const ['--fatal-warnings', '--fatal-type-errors', '--sdk-warnings'];
diff --git a/tools/utils.py b/tools/utils.py
index 38c1244..648dbd4 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -561,22 +561,6 @@
     return None
 
 
-def ConfigureJava():
-  java_home = '/usr/libexec/java_home'
-  if os.path.exists(java_home):
-    proc = subprocess.Popen([java_home, '-v', '1.6+'],
-                            stdout=subprocess.PIPE,
-                            stderr=subprocess.PIPE)
-    (stdout, stderr) = proc.communicate()
-    if proc.wait() != 0:
-      return None
-    new = stdout.strip()
-    current = os.getenv('JAVA_HOME', new)
-    if current != new:
-      sys.stderr.write('Please set JAVA_HOME to %s\n' % new)
-      os.putenv('JAVA_HOME', new)
-
-
 def Daemonize():
   """
   Create a detached background process (daemon). Returns True for
@@ -705,13 +689,14 @@
 
   expected_core_pattern = 'core.%p'
   if core_pattern.strip() != expected_core_pattern:
+    message = ('Invalid core_pattern configuration. '
+        'The configuration of core dump handling is *not* correct for '
+        'a buildbot. The content of {0} must be "{1}" instead of "{2}".'
+        .format(core_pattern_file, expected_core_pattern, core_pattern))
     if fatal:
-      message = ('Invalid core_pattern configuration. '
-          'The configuration of core dump handling is *not* correct for '
-          'a buildbot. The content of {0} must be "{1}" instead of "{2}".'
-          .format(core_pattern_file, expected_core_pattern, core_pattern))
       raise Exception(message)
     else:
+      print message
       return False
   return True
 
@@ -753,27 +738,6 @@
     return "Crash(%s: %s %s)" % (self.test, self.binary, self.pid)
 
 
-class SiteConfigBotoFileDisabler(object):
-  def __init__(self):
-    self._old_aws = None
-    self._old_boto = None
-
-  def __enter__(self):
-    self._old_aws = os.environ.get('AWS_CREDENTIAL_FILE', None)
-    self._old_boto = os.environ.get('BOTO_CONFIG', None)
-
-    if self._old_aws:
-      del os.environ['AWS_CREDENTIAL_FILE']
-    if self._old_boto:
-      del os.environ['BOTO_CONFIG']
-
-  def __exit__(self, *_):
-    if self._old_aws:
-      os.environ['AWS_CREDENTIAL_FILE'] = self._old_aws
-    if self._old_boto:
-      os.environ['BOTO_CONFIG'] = self._old_boto
-
-
 class PosixCoreDumpEnabler(object):
   def __init__(self):
     self._old_limits = None
@@ -786,18 +750,15 @@
     resource.setrlimit(resource.RLIMIT_CORE, self._old_limits)
 
 
-# TODO(whesse): Re-enable after issue #30205 is addressed
 class LinuxCoreDumpEnabler(PosixCoreDumpEnabler):
   def __enter__(self):
-    pass
     # Bump core limits to unlimited if core_pattern is correctly configured.
-    # if CheckLinuxCoreDumpPattern(fatal=False):
-    #   super(LinuxCoreDumpEnabler, self).__enter__()
+    if CheckLinuxCoreDumpPattern(fatal=False):
+      super(LinuxCoreDumpEnabler, self).__enter__()
 
   def __exit__(self, *args):
-    pass
-    # CheckLinuxCoreDumpPattern(fatal=True)
-    # super(LinuxCoreDumpEnabler, self).__exit__(*args)
+    CheckLinuxCoreDumpPattern(fatal=False)
+    super(LinuxCoreDumpEnabler, self).__exit__(*args)
 
 
 class WindowsCoreDumpEnabler(object):
@@ -895,10 +856,11 @@
   # test.dart will write a line for each unexpected crash into this file.
   _UNEXPECTED_CRASHES_FILE = "unexpected-crashes"
 
-  def __init__(self, search_dir):
+  def __init__(self, search_dir, output_directory):
     self._bucket = 'dart-temp-crash-archive'
     self._binaries_dir = os.getcwd()
     self._search_dir = search_dir
+    self._output_directory = output_directory
 
   def __enter__(self):
     # Cleanup any stale files
@@ -917,11 +879,7 @@
 
         sys.stdout.flush()
 
-        # We disable usage of the boto file installed on the bots due to an
-        # issue introduced by
-        # https://chrome-internal-review.googlesource.com/c/331136
-        with SiteConfigBotoFileDisabler():
-          self._archive(archive_crashes)
+        self._archive(archive_crashes)
     finally:
       self._cleanup()
 
@@ -935,7 +893,11 @@
         files.add(core)
       else:
         missing.append(crash)
-    self._upload(files)
+    if self._output_directory is None:
+      self._upload(files)
+    else:
+      # --output_directory is specified, copy the dump to the output_directory instead
+      self._copy(files)
 
     if missing:
       self._report_missing_crashes(missing, throw=True)
@@ -951,6 +913,28 @@
     if throw:
       raise Exception('Missing crash dumps for: %s' % missing_as_string)
 
+  def _copy(self, files):
+    for file in files:
+      tarname = self._tar(file)
+      print '+++ Copying %s to output_directory (%s)' % (tarname, self._output_directory)
+      shutil.copy(tarname, self._output_directory)
+
+  def _tar(self, file):
+    # Sanitize the name: actual cores follow 'core.%d' pattern, crashed
+    # binaries are copied next to cores and named 'binary.<binary_name>'.
+    name = os.path.basename(file)
+    (prefix, suffix) = name.split('.', 1)
+    if prefix == 'binary':
+      name = suffix
+
+    tarname = '%s.tar.gz' % name
+
+    # Compress the file.
+    tar = tarfile.open(tarname, mode='w:gz')
+    tar.add(file, arcname=name)
+    tar.close()
+    return tarname
+
   def _upload(self, files):
     bot_utils = GetBotUtils()
     gsutil = bot_utils.GSUtil()
@@ -960,19 +944,7 @@
 
     print '\n--- Uploading into %s (%s) ---' % (gs_prefix, http_prefix)
     for file in files:
-      # Sanitize the name: actual cores follow 'core.%d' pattern, crashed
-      # binaries are copied next to cores and named 'binary.<binary_name>'.
-      name = os.path.basename(file)
-      (prefix, suffix) = name.split('.', 1)
-      if prefix == 'binary':
-        name = suffix
-
-      tarname = '%s.tar.gz' % name
-
-      # Compress the file.
-      tar = tarfile.open(tarname, mode='w:gz')
-      tar.add(file, arcname=name)
-      tar.close()
+      tarname = self._tar(file)
 
       # Remove / from absolute path to not have // in gs path.
       gs_url = '%s%s' % (gs_prefix, tarname)
@@ -1009,8 +981,8 @@
     return found
 
 class PosixCoreDumpArchiver(BaseCoreDumpArchiver):
-  def __init__(self, search_dir):
-    super(PosixCoreDumpArchiver, self).__init__(search_dir)
+  def __init__(self, search_dir, output_directory):
+    super(PosixCoreDumpArchiver, self).__init__(search_dir, output_directory)
 
   def _cleanup(self):
     found = super(PosixCoreDumpArchiver, self)._cleanup()
@@ -1029,19 +1001,19 @@
 
 
 class LinuxCoreDumpArchiver(PosixCoreDumpArchiver):
-  def __init__(self):
-    super(LinuxCoreDumpArchiver, self).__init__(os.getcwd())
+  def __init__(self, output_directory):
+    super(LinuxCoreDumpArchiver, self).__init__(os.getcwd(), output_directory)
 
 
 class MacOSCoreDumpArchiver(PosixCoreDumpArchiver):
-  def __init__(self):
-    super(MacOSCoreDumpArchiver, self).__init__('/cores')
+  def __init__(self, output_directory):
+    super(MacOSCoreDumpArchiver, self).__init__('/cores', output_directory)
 
 
 class WindowsCoreDumpArchiver(BaseCoreDumpArchiver):
-  def __init__(self):
+  def __init__(self, output_directory):
     super(WindowsCoreDumpArchiver, self).__init__(os.path.join(
-        os.getcwd(), WindowsCoreDumpEnabler.WINDOWS_COREDUMP_FOLDER))
+        os.getcwd(), WindowsCoreDumpEnabler.WINDOWS_COREDUMP_FOLDER), output_directory)
 
   def _cleanup(self):
     found = super(WindowsCoreDumpArchiver, self)._cleanup()
@@ -1084,32 +1056,53 @@
       missing_as_string = ', '.join([str(c) for c in missing])
       raise Exception('Missing crash dumps for: %s' % missing_as_string)
 
+class IncreasedNumberOfFileDescriptors(object):
+  def __init__(self, nofiles):
+    self._old_limits = None
+    self._limits = (nofiles, nofiles)
+
+  def __enter__(self):
+    self._old_limits = resource.getrlimit(resource.RLIMIT_NOFILE)
+    resource.setrlimit(resource.RLIMIT_NOFILE, self._limits)
+
+  def __exit__(self, *_):
+    resource.setrlimit(resource.RLIMIT_CORE, self._old_limits)
 
 @contextlib.contextmanager
-def NooptCoreDumpArchiver():
+def NooptContextManager():
   yield
 
 
 def CoreDumpArchiver(args):
   enabled = '--copy-coredumps' in args
+  prefix = '--output_directory='
+  output_directory = next((arg[len(prefix):] for arg in args if arg.startswith(prefix)), None)
 
   if not enabled:
-    return NooptCoreDumpArchiver()
+    return NooptContextManager()
 
   osname = GuessOS()
   if osname == 'linux':
     return contextlib.nested(LinuxCoreDumpEnabler(),
-                             LinuxCoreDumpArchiver())
+                             LinuxCoreDumpArchiver(output_directory))
   elif osname == 'macos':
     return contextlib.nested(PosixCoreDumpEnabler(),
-                             MacOSCoreDumpArchiver())
+                             MacOSCoreDumpArchiver(output_directory))
   elif osname == 'win32':
     return contextlib.nested(WindowsCoreDumpEnabler(),
-                             WindowsCoreDumpArchiver())
+                             WindowsCoreDumpArchiver(output_directory))
   else:
     # We don't have support for MacOS yet.
-    assert osname == 'macos'
-    return NooptCoreDumpArchiver()
+    return NooptContextManager()
+
+def FileDescriptorLimitIncreaser():
+  osname = GuessOS()
+  if osname == 'macos':
+    return IncreasedNumberOfFileDescriptors(nofiles=10000)
+  else:
+    assert osname in ('linux', 'win32')
+    # We don't have support for MacOS yet.
+    return NooptContextManager()
 
 if __name__ == "__main__":
   import sys
diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart
index 5ea4206..45faa40 100644
--- a/utils/bazel/kernel_worker.dart
+++ b/utils/bazel/kernel_worker.dart
@@ -132,11 +132,11 @@
   Target target;
   var summaryOnly = parsedArgs['summary-only'] as bool;
   var excludeNonSources = parsedArgs['exclude-non-sources'] as bool;
+  var targetFlags = new TargetFlags(syncAsync: true);
   if (summaryOnly) {
-    target = new SummaryTarget(
-        sources, excludeNonSources, new TargetFlags(strongMode: true));
+    target = new SummaryTarget(sources, excludeNonSources, targetFlags);
   } else {
-    target = new VmTarget(new TargetFlags(strongMode: true));
+    target = new VmTarget(targetFlags);
   }
   var state = await fe.initializeCompiler(
       // TODO(sigmund): pass an old state once we can make use of it.
@@ -152,17 +152,13 @@
       target,
       fileSystem);
 
-  void onProblem(fe.FormattedMessage message, severity,
-      List<fe.FormattedMessage> context) {
-    out.writeln(message.formatted);
-    for (fe.FormattedMessage message in context) {
-      out.writeln(message.formatted);
-    }
+  void onDiagnostic(fe.DiagnosticMessage message) {
+    fe.printDiagnosticMessage(message, out.writeln);
     succeeded = false;
   }
 
   var kernel =
-      await fe.compile(state, sources, onProblem, summaryOnly: summaryOnly);
+      await fe.compile(state, sources, onDiagnostic, summaryOnly: summaryOnly);
 
   if (kernel != null) {
     var outputFile = new File(parsedArgs['output']);
diff --git a/utils/compiler/BUILD.gn b/utils/compiler/BUILD.gn
index 3dbee83..d1614e3 100644
--- a/utils/compiler/BUILD.gn
+++ b/utils/compiler/BUILD.gn
@@ -88,7 +88,6 @@
 
   args = [
     "--target=dart2js",
-    "--strong",
     "dart:core",
   ]
 }
@@ -104,7 +103,6 @@
 
   args = [
     "--target=dart2js_server",
-    "--strong",
     "dart:core",
   ]
 }
diff --git a/utils/dartanalyzer/BUILD.gn b/utils/dartanalyzer/BUILD.gn
index 701a860..ad45cf1 100644
--- a/utils/dartanalyzer/BUILD.gn
+++ b/utils/dartanalyzer/BUILD.gn
@@ -26,7 +26,7 @@
     # TODO(34616): This is broken on Fuchsia.
     # "--dart-sdk=" + rebase_path("../../sdk/"),
     # "--train-snapshot",
-    # rebase_path("../../tests/language/first_test.dart")
+    # rebase_path("../../tests/language_2/first_test.dart")
   ]
   name = "dartanalyzer"
 }
diff --git a/utils/dartdevc/BUILD.gn b/utils/dartdevc/BUILD.gn
index 03be2cc..04dd2fc 100644
--- a/utils/dartdevc/BUILD.gn
+++ b/utils/dartdevc/BUILD.gn
@@ -361,6 +361,9 @@
   script = "../../pkg/dev_compiler/tool/kernel_sdk.dart"
 
   args = [
+    "--output",
     rebase_path(sdk_dill),
+    "--libraries",
+    rebase_path("//sdk/lib/libraries.json"),
   ]
 }